{"version":3,"file":"vendor.js","mappings":"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ACNC,KAAM,QACNC,MAAO,WACPC,OAAQ,cACRC,MAAO,SACPC,KAAM,QACNC,MAAO,SACP,eAAgB,kBAChB,iBAAkB,oBAG1BC,YAAa,CACT7C,KAAM,iBACNC,KAAM,cACNC,OAAQ,YACRC,MAAO,UAEX2C,YAAa,CACT9C,KAAM,kBACNC,KAAM,YACNC,OAAQ,WACRC,MAAO,UAEXvuG,KAAM,CACFjO,OAAQ,CACJo/G,YAAa,CACT,MACA,MACA,MACA,MACA,MACA,MACA,OAEJC,OAAQ,CACJ,IACA,IACA,IACA,IACA,IACA,IACA,KAEJ7C,MAAO,CACH,KACA,KACA,KACA,KACA,KACA,KACA,MAEJ8C,KAAM,CACF,SACA,SACA,UACA,YACA,WACA,SACA,aAGR,cAAe,CACXF,YAAa,CACT,MACA,MACA,MACA,MACA,MACA,MACA,OAEJC,OAAQ,CACJ,IACA,IACA,IACA,IACA,IACA,IACA,KAEJ7C,MAAO,CACH,KACA,KACA,KACA,KACA,KACA,KACA,MAEJ8C,KAAM,CACF,SACA,SACA,UACA,YACA,WACA,SACA,cAIZ9kG,OAAQ,CACJxa,OAAQ,CACJo/G,YAAa,CACT,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,OAEJC,OAAQ,CACJ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEJC,KAAM,CACF,UACA,WACA,QACA,QACA,MACA,OACA,OACA,SACA,YACA,UACA,WACA,aAGR,cAAe,CACXF,YAAa,CACT,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,OAEJC,OAAQ,CACJ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEJC,KAAM,CACF,UACA,WACA,QACA,QACA,MACA,OACA,OACA,SACA,YACA,UACA,WACA,cAIZC,SAAU,CACNv/G,OAAQ,CACJo/G,YAAa,CACT,KACA,KACA,KACA,MAEJC,OAAQ,CACJ,IACA,IACA,IACA,KAEJC,KAAM,CACF,cACA,cACA,cACA,gBAGR,cAAe,CACXF,YAAa,CACT,KACA,KACA,KACA,MAEJC,OAAQ,CACJ,IACA,IACA,IACA,KAEJC,KAAM,CACF,cACA,cACA,cACA,iBAIZE,WAAY,CACRx/G,OAAQ,CACJo/G,YAAa,CACTK,SAAU,WACVttF,GAAI,KACJ,iBAAkB,KAClButF,KAAM,OACNttF,GAAI,KACJ,iBAAkB,KAClButF,SAAU,iBACVC,WAAY,mBACZC,SAAU,iBACVC,OAAQ,YAEZT,OAAQ,CACJI,SAAU,KACVttF,GAAI,IACJ,iBAAkB,KAClButF,KAAM,IACNttF,GAAI,IACJ,iBAAkB,KAClButF,SAAU,iBACVC,WAAY,mBACZC,SAAU,iBACVC,OAAQ,YAEZR,KAAM,CACFG,SAAU,WACVttF,GAAI,KACJ,iBAAkB,KAClButF,KAAM,OACNttF,GAAI,KACJ,iBAAkB,KAClButF,SAAU,iBACVC,WAAY,mBACZC,SAAU,iBACVC,OAAQ,aAGhB,cAAe,CACXV,YAAa,CACTK,SAAU,WACVttF,GAAI,KACJ,iBAAkB,KAClButF,KAAM,OACNttF,GAAI,KACJ,iBAAkB,KAClButF,SAAU,UACVC,WAAY,YACZC,SAAU,UACVC,OAAQ,SAEZT,OAAQ,CACJI,SAAU,WACVttF,GAAI,KACJ,iBAAkB,KAClButF,KAAM,OACNttF,GAAI,KACJ,iBAAkB,KAClButF,SAAU,UACVC,WAAY,YACZC,SAAU,UACVC,OAAQ,SAEZR,KAAM,CACFG,SAAU,WACVttF,GAAI,KACJ,iBAAkB,KAClButF,KAAM,OACNttF,GAAI,KACJ,iBAAkB,KAClButF,SAAU,UACVC,WAAY,YACZC,SAAU,UACVC,OAAQ,WAIpBC,KAAM,CACF//G,OAAQ,CACJs/G,KAAM,CACF,EAAK,gBACL,EAAK,cACL,gBAAiB,oBACjB,gBAAiB,cAErBF,YAAa,CACT,EAAK,KACL,EAAK,KACL,gBAAiB,MACjB,gBAAiB,MAErBC,OAAQ,CACJ,EAAK,IACL,EAAK,IACL,gBAAiB,MACjB,gBAAiB,QAI7BW,WAAY,CACRC,IAAK,CACDX,KAAM,OAEVh0G,KAAM,CACFg0G,KAAM,OACN9C,MAAO,MACP6C,OAAQ,OAEZa,QAAS,CACLZ,KAAM,UACN9C,MAAO,OACP6C,OAAQ,QAEZ9zG,MAAO,CACH+zG,KAAM,QACN9C,MAAO,MACP6C,OAAQ,OAEZc,KAAM,CACFb,KAAM,OACN9C,MAAO,MACP6C,OAAQ,OAEZ7zG,IAAK,CACD8zG,KAAM,MACN9C,MAAO,MACP6C,OAAQ,OAEZe,QAAS,CACLd,KAAM,mBAEVe,UAAW,CACPf,KAAM,SAEVt0G,KAAM,CACFs0G,KAAM,OACN9C,MAAO,MACP6C,OAAQ,OAEZhwF,OAAQ,CACJiwF,KAAM,SACN9C,MAAO,OACP6C,OAAQ,QAEZ/vF,OAAQ,CACJgwF,KAAM,SACN9C,MAAO,OACP6C,OAAQ,QAEZiB,KAAM,CACFhB,KAAM,gBAKtBiB,aAAc,CACVC,cAAe,CACXlG,GAAI,cAERmG,aAAc,CACVC,OAAQ,CACJC,GAAI,CACA,CACIlF,IAAK,CACDmF,MAAO,kBAM3BC,SAAU,CACN9mG,SAAU,CACN4mG,GAAI,OAERG,aAAc,CACV,MAAO,OAEXC,WAAY,CACR,MAAO,UDxhBhB,SAAS,EAAcC,GAO1B,OALIlH,EAASkH,GACFC,EAAWD,GAEXA,EAKR,SAASC,EAAWD,GACvB,GAAI,EAAKA,GACL,OAAO,EAAKA,GAIhB,GADoB,EAAKT,aAAaC,cACnB,CACf,IAAIrxI,EAAQ6xI,EAAOxzJ,MAAM,KACrByvH,EAAW9tG,EAAM,GACjB+xI,EAAW/xI,EAAM5gB,MAAM,GACvB4yJ,EArCZ,SAAwBlkC,EAAUikC,GAG9B,IAFA,IAAIV,EAAgB,EAAKD,aAAaC,cAE7BzsI,EAAM,EAAGA,EAAMmtI,EAASx9J,OAAQqwB,IAAO,CAC5C,IAAIhvB,EAAOy7J,EAAcvjC,EAAW,IAAMikC,EAASntI,IACnD,GAAIhvB,EACA,OAAOA,EAIf,GAAIy7J,EAAcvjC,GACd,OAAOujC,EAAcvjC,GA0BNmkC,CAAenkC,EAAUikC,GACpCp2J,EAAOq2J,EA/CnB,SAA6BA,EAAUD,GACnC,IAAI/xI,EAAQgyI,EAAS3zJ,MAAM,KACvByvH,EAAW9tG,EAAM,GACjBkyI,EAASlyI,EAAM,GACfsrI,EAAYtrI,EAAM,GAEtB,OAAO,EAAKgyI,KAA+C,IAAjCD,EAASn3J,QAAQ0wJ,IAAqB,EAAKx9B,EAAW,IAAMw9B,KAA8C,IAA9ByG,EAASn3J,QAAQs3J,IAAkB,EAAKpkC,EAAW,IAAMokC,IAAY,EAAKpkC,GAyCtJqkC,CAAoBH,EAAUD,GAAY,KAChE,GAAIp2J,EACA,OAAOA,EAIf,MAAMsvJ,EAAOmH,SAASj4J,MAAM03J,GE5BjB,SAAS,EAAgBl2J,GACpC,GAAIA,EAAK2vJ,UACL,OAAO3vJ,EAAK2vJ,UAGhB,IAEIA,EAFA11J,EAAO+F,EAAK/F,KACZ20B,EAAW5uB,EAAK4uB,SAWpB,OAPI+gI,EADA/gI,GAAYA,EAAS+gI,UACT/gI,EAAS+gI,UArC7B,SAA2B11J,EAAM20B,GAC7B,IAAI8mI,EAAgB,6BAChBrxI,EAAQpqB,EAAKyI,MAAM,KACvB,GAAIgzJ,EAAe,CACf,IAAIgB,EAAahB,EAAcz7J,IAASy7J,EAAcrxI,EAAM,IACxDqyI,IACAryI,EAAQqyI,EAAWh0J,MAAM,MAIjC,GAAIksB,EACA,IAAK,IAAI3F,EAAM5E,EAAMzrB,OAAS,EAAGqwB,GAAO,EAAGA,IAAO,CAC9C,IAAIk0C,EAAO94C,EAAM4E,GACbk0C,IAASvuC,EAAS+nI,SAAWx5F,IAASvuC,EAAS2nI,QAC/ClyI,EAAMnlB,OAAO+pB,EAAK,GAK9B,IAAIrwB,EAASyrB,EAAMzrB,OAEnB,GAAIA,EAAS,EAET,OADgByrB,EAAMzrB,EAAS,GACdqqB,cAgBL2zI,CAAkB38J,EAAM20B,GAGxC5uB,EAAK2vJ,UAAYA,EAEVA,EC9CJ,IAAI,EAAU,UACV,EAAW,WACX,EAAa,aACbkH,EAAU,UACVC,EAAa,aAEb,EAAuB,IAEvB,EAAqB,IAKrB,EAAQ,IACRC,EAAQ,GAERC,EAAiB,KCQb,SAAS1nG,EAAgB4mG,EAAQ/8J,GAC5C,IAAI0K,EAAO1K,EAAQ0K,KACf0rD,EAAWp2D,EAAQo2D,SACnB0nG,EAAa99J,EAAQ89J,WACrBC,EAAQ/9J,EAAQ+9J,MAChBl3J,EAAO,EAAck2J,GACrBiB,EAAaF,EAAa,cAAgB,SAC1CG,GAAiBF,EAAQ,SAAWH,GAASxnG,EAC7C8nG,EAAcr3J,EAAKklE,SAASrhE,GAAMszJ,GAClCn5J,EAASq5J,EAAYD,GAIzB,OAHKp5J,GAAUk5J,IACXl5J,EAASq5J,EAAYD,GAhB7B,SAAoB3mJ,GAChB,IAAIzS,EAAS/G,MAAMyc,QAAQjD,GAjB/B,SAAoBgD,GAEhB,IADA,IAAIzV,EAAS,GACJirB,EAAM,EAAGA,EAAMxV,EAAI7a,OAAQqwB,IAChCjrB,EAAOZ,KAAKqW,EAAIwV,GAAK5hB,eAEzB,OAAOrJ,EAY2Bs5J,CAAW7mJ,GATjD,SAAqBA,GACjB,IAAIzS,EAAS,GACb,IAAK,IAAI6qB,KAASpY,EACdzS,EAAO6qB,GAASpY,EAAIoY,GAAOxhB,cAE/B,OAAOrJ,EAI6Cu5J,CAAY9mJ,GAChE,OAAOzS,EAcmCw5J,CAAWH,EAAY9nG,KAE1DvxD,ECrCI,SAASy5J,EAAev6J,GACnC,IAAImnB,EAAQnnB,EAAMwF,MAAM,KACpB89C,EAAO1jB,SAASzY,EAAM,GAAI,IAC1Bo8B,EAAQ3jB,SAASzY,EAAM,GAAI,IAAM,EACjCq8B,EAAM5jB,SAASzY,EAAM,GAAI,IAE7B,OAAO,IAAI1kB,KAAK6gD,EAAMC,EAAOC,GCCjC,IAAIg3G,EAAapI,EAAOoI,WACpBC,EAAoBrI,EAAOqI,kBAC3BC,EAAyBtI,EAAOsI,uBAChCC,EAAmBvI,EAAOuI,iBAC1BC,EAAkBxI,EAAOwI,gBAGzBC,EAAS,SAGTC,EAAoB,CACpB,MAAO,MACP,IAAO,OAIX,SAASC,EAAgB/B,EAAQzK,EAAUyM,GACvC,IACI1H,EADO,EAAc0F,GACHtG,QAAQY,WAC9B,GAAKA,EAAL,CAQA,IAAI2H,EAAsB3H,EAAW/E,GAErC,GAAK0M,EAQL,OAAOA,EAPH,GAAID,EACA,MAAMP,EAAkBn5J,aAX5B,GAAI05J,EACA,MAAMR,EAAWl5J,QAmB7B,SAAS45J,EAAe/4I,EAAGloB,GACvB,OAAOA,EAAEyB,OAASymB,EAAEzmB,OA+HjB,SAASg4J,EAAesF,EAAQgC,GACnC,IAAIl4J,EAAO,EAAck2J,GACrBtG,EAAU5vJ,EAAK4vJ,QAEnB,IAAKA,EAAQgB,eAAgB,CACzB,IAAInF,EApCL,SAA+BkE,EAAWuI,GAG7C,QAFwB,IAAnBA,IAA4BA,GAAiB,GAE9CF,EAAkBrI,GAClB,OAAOqI,EAAkBrI,GAG7B,IAAIgG,EAAe,4BACnB,GAAKA,EAAL,CAQA,IAAI0C,EAAmB1C,EAAaC,OAAOjG,GAE3C,GAAK0I,EAAL,CAQA,IAAIC,EAvHR,SAAwBD,GAIpB,IAHA,IAAIE,EAAkBC,EAClBC,EAAkBC,EAEbzvI,EAAM,EAAGA,EAAMovI,EAAiBz/J,OAAQqwB,IAAO,CACpD,IAAIwiI,EAAW4M,EAAiBpvI,GAC5B/nB,EAAOpK,OAAO6K,KAAK8pJ,GAAU,GAC7BzrJ,EAAOyrJ,EAASvqJ,GACpB,GA5CoB,QA4ChBA,GAAmD,UAAjBlB,EAAK24J,SAAuB34J,EAAK81J,MACnE,GAAK91J,EAAK44J,KAMH,IAAKH,EAAkB,CAC1B,IAAII,EAAYpB,EAAez3J,EAAK81J,OAChCgD,EAAUrB,EAAez3J,EAAK44J,OAC7BJ,GAAyBA,EAAsBxpJ,GAAK8pJ,GAAWN,EAAsB53J,KAAOi4J,KAC7FN,EAAmBr3J,EACnBs3J,EAAwB,CACpB53J,KAAMi4J,EACN7pJ,GAAI8pJ,SAbD,CACX,IAAIC,EAAiBtB,EAAez3J,EAAK81J,SACpC4C,GAAwBA,EAAuBK,KAChDN,EAAmBv3J,EACnBw3J,EAAuBK,IAgBvC,OAAON,GAAoBF,EA0FRS,CAAeX,GAElC,OAAOC,EATH,GAAIJ,EACA,MAAML,EAAiBr5J,MAAMmxJ,QAXjC,GAAIuI,EACA,MAAMN,EAAuBp5J,QA0BlBy6J,CAAsB,EAAgBj5J,GAAOk4J,GAE5D,IAAKzM,GAAYyM,EACb,MAAMJ,EAAgBt5J,MAAMwB,EAAK/F,MAGrC21J,EAAQgB,eAAiBnF,EAG7B,OAAOmE,EAAQgB,eC5LZ,IAAI,EAAe,CAAE,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OCKlEsI,EAAa5J,EAAO4J,WACpBC,EAAa7J,EAAO6J,WAET,SAASlqG,EAASinG,GAC7B,IAAIl2J,EAAO,EAAck2J,GAEzB,IAAKzxI,MAAMzkB,EAAKivD,UACZ,OAAOjvD,EAAKivD,SAGhB,IAAI8mG,EAAW,wBACf,IAAKA,EACD,MAAMmD,EAAW16J,QAGrB,IAAIywD,EAAW8mG,EAAS9mG,SAAS,EAAgBjvD,KAAU+1J,EAAS9mG,SDlBzC,OCoB3B,IAAKA,EACD,MAAMkqG,EAAW36J,QAKrB,OAFAwB,EAAKivD,SAAW,UAAqBA,GAE9BjvD,EAAKivD,SC3BD,SAASmqG,EAAqBp5J,EAAM7G,QAC9B,IAAZA,IAAqBA,EAAU,IAE/BA,EAAQsyJ,WACTtyJ,EAAQsyJ,SAAWmF,EAAe5wJ,GAAM,IAG5C,IAAIi+C,EH8FD,SAAyBi4G,EAAQ/8J,GACpC,IAAI+D,EAAQ/D,EAAQ+D,MAChBuuJ,EAAWtyJ,EAAQsyJ,SACnBC,EAAkBvyJ,EAAQuyJ,gBAE9B,QAFwE,IAApBA,IAA6BA,EAAkBqM,GAE3E,SAApBrM,EACA,OAAOD,EAGX,IAAI4N,EAAepB,EAAgB/B,EAAQzK,GAAU,GAarD,OAVIC,IAAoBqM,EACXsB,EAAa,sBAAwBA,EAAmB,YAE5CpxJ,WAAV/K,GAAiC,IAAVA,EACrBm8J,EAAa,2BAEbA,EAAa,yBGhHhB3N,CAAgB1rJ,EAAM7G,GAEpC,OAAO8kD,ECXI,SAASq7G,EAAajpD,EAAQ7qG,EAAO4qB,EAAKj3B,EAAS6G,GAC9D,IAAIy8D,EAAUz8D,EAAK4vJ,QAAQnzF,QACvB88F,EAAelpD,EAAOpxG,QAAQw9D,EAAQkuF,SACtC6O,EAAargK,EAAQm3J,UAAU7sJ,QAC/B6sJ,EAAYkJ,EAAW7iI,QAEvB8iI,GAA+B,IAAlBF,EAAsBA,EAAenpI,EAAM,EAExDspI,EAAUrpD,EAAOzsG,UAAU4B,EAAOi0J,GAClCz7J,EAASqyG,EACTspD,EAAgBD,EAAQ9gK,OAE5B,GAAI+gK,GAAiBrJ,EAAW,CAI5B,IAHA,IAAIrnI,EAAM0wI,EACNt1I,EAAQ,GAEL4E,GAAO,GAAG,CACb,IAAI/rB,EAAQw8J,EAAQ91J,UAAUqlB,EAAMqnI,EAAWrnI,GAC3C/rB,GACAmnB,EAAMjnB,KAAKF,GAEf+rB,GAAOqnI,EACP,IAAIsJ,EAAeJ,EAAW7iI,QAG9B,GAAkB,KAFlB25H,OAA6BroJ,IAAjB2xJ,EAA6BA,EAAetJ,GAEnC,EACjBpzJ,EAAQw8J,EAAQ91J,UAAU,EAAGqlB,KAEzB5E,EAAMjnB,KAAKF,GAEf,OAIRw8J,EAAUr1I,EAAMkjD,UAAU/pD,KAAKi/C,EAAQxyC,OACvCjsB,EAASqyG,EAAOzsG,UAAU,EAAG4B,GAASk0J,EAAUrpD,EAAOzsG,UAAU61J,GAGrE,OAAOz7J,ECpCI,SAAS67J,EAAgB/6I,GACpC,OAAOA,IAAU,GAAYA,IAAU,ECH5B,SAAS64E,EAAI0Y,EAAQ1Q,EAAQp3E,QACxB,IAAXo3E,IAAoBA,EAAS,QACnB,IAAVp3E,IAAmBA,GAAQ,GAEhC,IAAI6kC,EAAQuyC,EAAS/8F,OAAOytG,GAAQz3G,OAChCoF,EAASqyG,EAEb,GAAIjjD,EAAQ,EAAG,CACX,IAAI0sG,EAAY,IAAI7iK,MAAMm2D,EAAQ,GAAG5vC,KAAK,KAC1Cxf,EAASuqB,EAAQ8nF,EAASypD,EAAYA,EAAYzpD,EAGtD,OAAOryG,ECVI,SAASmnF,EAAMjoF,EAAOs9F,GACjC,IAAIx8F,EAASd,EACT68J,EAAWv/D,GAAa,EAQ5B,OANAx8F,EAASA,EAAOjD,WAAW2H,MAAM,KAGjC1E,GAFAA,EAAS8c,KAAKqqE,MAAMwR,OAAO34F,EAAO,GAAK,KAAOA,EAAO,GAAM24F,OAAO34F,EAAO,IAAM+7J,EAAYA,MAE3Eh/J,WAAW2H,MAAM,MACjC1E,EAAS24F,OAAO34F,EAAO,GAAK,KAAOA,EAAO,GAAM24F,OAAO34F,EAAO,IAAM+7J,GAAaA,KAEnEnjE,QAAQ97E,KAAK8mB,IAAIm4H,EAZf,KCMHzK,EAAO4J,WCExB,IAGIc,EAAoB,MA2DT,SAASC,EAAqB5pD,EAAQl3G,EAAS6G,GAC1D,IAAIy8D,EAAUz8D,EAAK4vJ,QAAQnzF,QACvB39C,EAAQ3lB,EAAQ2lB,MAChBo7I,EAAaL,EAAgB/6I,GAGjC,GAAIA,IAAUg4I,EAEV,YADoD7uJ,IAAlC9O,EAAQ0yJ,sBAAsCx7C,EAAO8pD,cAAchhK,EAAQ0yJ,uBAAyBx7C,EAAO8pD,iBAC1G7uJ,QAAQ,EAAOmxD,EAAQkuF,SAG9C,IACI7tI,EADA5f,EAAQmzG,EAGR6pD,IACA/gK,EAAQ+D,MAAQA,EAChB4f,EAASs8I,EAAqBp5J,EAAM7G,IAGpC2lB,IAAU+3I,IACV35J,GAAS,IACT4f,EAAS2/C,EAAQozF,aAGrB,IAAIv7H,EAjFR,SAAyBn7B,GACrB,IAIIihK,EAJAvO,EAAwB1yJ,EAAQ0yJ,sBAChCC,EAAwB3yJ,EAAQ2yJ,sBAChChtI,EAAQ3lB,EAAQ2lB,MAChBo7I,EAAaL,EAAgB/6I,GAoBjC,OAlBIo7I,IACAE,ET4GD,SAAiCl5J,GACpC,IAAI2qJ,EApHyB,EAqHzBC,EArHyB,EAuHzBuO,IAAc,6BAAkC,IAAIA,WAAa,IAAIn5J,GAMzE,OAJIm5J,GAAaA,EAAUC,UACvBxO,EAAwBD,EAAwB/uH,SAASu9H,EAAUC,QAAS,KAGzE,CACHzO,sBAAuBA,EACvBC,sBAAuBA,GSxHHyO,CAAwBphK,EAAQsyJ,gBAG1BxjJ,IAA1B4jJ,IACAA,EAAwBqO,EAAaE,EAAkBvO,sBAAwB,QAGrD5jJ,IAA1B6jJ,IAEIA,EADAhtI,IAAU+3I,EACc/7I,KAAKmnB,IAAI4pH,EApBd,GAqBZqO,EACiBp/I,KAAKmnB,IAAI4pH,EAAuBuO,EAAkBtO,uBAElDhxI,KAAKmnB,IAAI4pH,EAzBd,IA6BpB,CACHA,sBAAuBA,EACvBC,sBAAuBA,GAuDjB0O,CAAgBrhK,GACtB0yJ,EAAwBv3H,EAAIu3H,sBAK5B4O,GAFJv9J,EAAQioF,EAAMjoF,EAFco3B,EAAIw3H,wBAIT,EAEnBznI,EAAQnnB,EAAMwF,MAAM,GAEpBg3J,EAAUr1I,EAAM,GAChBq2I,EAAW/iE,EAAItzE,EAAM,GAAKA,EAAM,GAAG/Y,QAAQ0uJ,EAAmBjD,GAASA,EAAOlL,GAAuB,GAGrG4O,IACAf,EAAUA,EAAQ91J,UAAU,IAG5BzK,EAAQyyJ,uBACR8N,EAAU/hE,EAAI+hE,EAASvgK,EAAQyyJ,uBAGnC,IAMIxuF,EANA/S,GAAyC,IAAxBlxD,EAAQwyJ,YAAwB2N,EAAaI,EAAS,EAAGA,EAAQ9gK,OAAQO,EAAS6G,GAAQ05J,EAQ/G,GANIgB,IACArwG,GAAkBoS,EAAQkuF,QAAU+P,GAKpCR,GAA0C,SAA5B/gK,EAAQuyJ,gBACtBtuF,EAlER,SAA6Bp9D,EAAM9C,GAC/B,IAAIm8J,EAAer5J,EAAK4vJ,QAAQnE,SAC5BruF,EAAoB,IAAVlgE,EAAcm8J,EAAa,2BAA6BA,EAAa,yBAKnF,OAJIn8J,EAAQ,IACRkgE,EAAUA,EAAQ9xD,QAAQ,EAAoB,OAG3C8xD,EA2DOu9F,CAAoB36J,EAAMqwG,OACjC,CACH,IAAIggD,EAAWl3J,EAAQk3J,SACvBjzF,EAAUq9F,EAAWpK,EAAS,IAAO,IAAMA,EAAS,GAAMA,EAAS,GAGvE,GAAIjzF,IAAY,IAAuBq9F,EACnC,OAAOpwG,EAGX,IAAIrsD,EA5FR,SAAsBd,EAAOkgE,EAAStgD,GAElC,IADA,IAAI9e,EAAS+4J,EACJ9tI,EAAM,EAAGrwB,EAASwkE,EAAQxkE,OAAQqwB,EAAMrwB,EAAQqwB,IAAO,CAC5D,IAAI+sG,EAAK54D,EAAQn3C,OAAOgD,GAGpBjrB,GADAg4H,IAAO,EACG94H,EACH84H,IAAO,GZ3CO,MY2CiBA,EAC5Bl5G,EAEAk5G,EAGlB,OAAOh4H,EA+EM48J,CAAavwG,EAAgB+S,EAAStgD,GAEnD,OAAO9e,ECpIX,IAAI68J,EAAc,SAEdC,EAAQ,IACR57D,EAAO,IAEP67D,EAAgB,uCAChBC,EAAsB,2BACtBC,EAAsB,MACtBC,EAAc,MAoIlB,SAASC,GAAiBC,EAAQC,EAAQ71J,GAStC,OAPgB,IAAZ41J,IAA6B,IAAZC,EACTA,GACW,IAAZD,IAA6B,IAAZC,EAChBD,EAEA51J,EAAQsV,KAAK8mB,IAAIw5H,EAAQC,GAAUvgJ,KAAKmnB,IAAIm5H,EAAQC,GAgIrD,SAASC,GAAmBjrD,EAAQn7D,EAAQl1C,GACvD,IAAIu7J,EAAgB,CAChBd,SAAUpqD,EAAS,EACnBA,OAAQv1F,KAAK6/B,IAAI01D,GACjBn7D,OAAQA,GAKZ,OA3LJ,SAAgCqmH,GAC5B,IAAIlrD,EAASkrD,EAAclrD,OACvBn7D,EAASqmH,EAAcrmH,OAE3B,GADAA,EAASA,EAAOxyC,Mb/FQ,KagGpB64J,EAAcd,UAAYvlH,EAAO,GACjCA,EAASA,EAAO,GAChBqmH,EAAcC,mBAAoB,OAC/B,GAAe,IAAXnrD,EAAc,CACrB,IAAIorD,EAAavmH,EAAO,GACxBA,EAASumH,GAAcvmH,EAAO,GAC1BumH,GAdZ,SAA0BvmH,GACtB,OAAkC,IAA3BA,EAAOj2C,QAAQ67J,KAA2C,IAA1B5lH,EAAOj2C,QAAQigG,GAahCw8D,CAAiBD,KAC/BF,EAAcI,SAAWF,QAG7BvmH,EAASA,EAAO,GAGpBqmH,EAAcrmH,OAASA,EAwKvB0mH,CAAuBL,GAEnBA,EAAcI,SACPJ,EAAcI,UAnR7B,SAA2BJ,GACvB,IAAIrmH,EAASqmH,EAAcrmH,OAC3B,GAAIA,EAAOj2C,QAAQ,MAAQ,GAAKi2C,EAAOj2C,QAAQ,MAAS,GAAKi2C,EAAOj2C,QAAQ,OAAS,EAAG,CACpF,IAAIg6F,EAAWsiE,EAActiE,SAAW,GACxCsiE,EAAcrmH,OAASA,EAAO5pC,QAAQyvJ,GAAe,SAASp1I,GAC1D,IAAIk2I,EAAYl2I,EAAMM,OAAO,GAAG3a,QAAQ,KAAMyrJ,GAC1C1Q,EAAU1gI,EAAMliB,MAAM,GAAG6H,QAAQuwJ,EAAW9E,GAIhD,OAFA99D,EAAS77F,KAAKipJ,GAEPwU,MA4QfiB,CAAkBP,GA3KtB,SAAyBA,EAAev7J,GACpC,IAAIk1C,EAASqmH,EAAcrmH,QAGkB,IAAzCA,EAAOj2C,QbvHkB,OawHzBs8J,EAAcz8I,MAAQ+3I,EACtB0E,EAAcz+I,OAAS9c,EAAK4vJ,QAAQnzF,QAAQozF,YAC5C0L,EAAclrD,QAAU,MAGkB,IAA1Cn7D,EAAOj2C,QAAQ,KACfs8J,EAAcz8I,MAAQ,EACtBy8I,EAAcz+I,OAASs8I,EAAqBp5J,IAgKhD+7J,CAAgBR,EAAev7J,GA5JnC,SAAyBu7J,GACrBA,EAAcS,SAAWT,EAAcrmH,OAAOj2C,QbhIrB,MagIiD,EACtEs8J,EAAcS,WACdT,EAAcrmH,OAASqmH,EAAcrmH,OAAO5pC,QAAQ4vJ,EAAanE,IA0JrEkF,CAAgBV,GA7PpB,SAAqBA,GACjB,IAbuBr+J,EAAOg/J,EAC1BC,EAYA9rD,EAASkrD,EAAclrD,OACvBn7D,EAASqmH,EAAcrmH,OACvBqkH,EAAerkH,EAAOj2C,QAAQ,GAElC,IAAsB,IAAlBs6J,EAAqB,CACrB,IAAI6C,EAAYlnH,EAAOjmC,YAAYiwF,GAAQq6D,EACvC8C,EAAannH,EAAOjmC,YAAY6rJ,GAASvB,EACzC+C,EAAUF,GAAa,EACvBG,EAAWF,GAAc,EACzB3B,EAAWrqD,EAAOt1G,WAAW2H,MAAM,KASnC83F,GAFJkgE,GAJIA,EADAA,EAAS,GACEv1E,EAAMkrB,EAAQv1F,KAAK6/B,IAAI+/G,EAAS,KAEhCA,EAAS,IAEJh4J,MAAM,GAAO,IAAMq0J,GAEdn+J,OACrB4jK,GAAiB,EAEhBF,GAAYC,EAIND,GAAWF,EAAYC,EAC9B7hE,EAAY4hE,EACLC,EAAaD,IAChBG,GAAY/hE,EAAY6hE,EACxB7hE,EAAY6hE,EACLC,GAAW9hE,EAAY4hE,IAC9B5hE,EAAY4hE,GAGhBI,EAAgBF,EAAUF,EAAY,IAZtCb,EAAcrmH,OAASA,EAAOtxC,UAAU,EAAG21J,GAAgBrkH,EAAOtxC,UAAU21J,EAAe,GAC3FA,GAAgB,EAChB/+D,EAAY,GAaZA,GAAa,IACb6V,EAASlrB,EAAMkrB,EAAQ7V,GACnBgiE,GAAiB,IApDNt/J,EAqDgBmzG,EAjDnC8rD,EADa,KAHaD,EAqDiBM,GAjD/BxB,EAEA,IAAIv3I,OAAQ,aAAey4I,EAAW,cAAgB,KA+C1D7rD,EA5CLnzG,EAAMoO,QAAQ6wJ,EAAW,MAAM7wJ,QAAQ2vJ,EAAqBlE,UAgD/D1mD,EAASlrB,EAAMkrB,GAGfkrD,EAAcd,WAAuB,EAAVpqD,GAAgB,IAC3CkrD,EAAcd,UAAW,GAG7Bc,EAAclrD,OAASA,EACvBkrD,EAAchC,aAAeA,EAyM7BkD,CAAYlB,GA3IhB,SAA+BA,GAC3B,IAAIrmH,EAASqmH,EAAcrmH,OACvBmnH,EAAannH,EAAOj2C,QAAQ67J,GAC5BsB,EAAYlnH,EAAOj2C,QAAQigG,GAE3B15F,EAAQ21J,GAAiBkB,EAAYD,GAAW,GAKhDhsI,EAAM+qI,GAHVkB,EAAannH,EAAOjmC,YAAY6rJ,GAChCsB,EAAYlnH,EAAOjmC,YAAYiwF,IAI3B15F,IAAU0vC,EAAOt8C,SACjBw3B,EAAM5qB,GAGV+1J,EAAc/1J,MAAQA,EACtB+1J,EAAcnrI,IAAMA,EACpBmrI,EAAcmB,cAAgBN,EA0H9BO,CAAsBpB,GA5B1B,SAA2BA,EAAev7J,GACtC,IAAIqwG,EAASkrD,EAAclrD,OAO3B,OAN6B,IAAzBkrD,EAAc/1J,QACd6qG,EAvER,SAA6BkrD,EAAev7J,GACxC,IAAIwF,EAAQ+1J,EAAc/1J,MACtB4qB,EAAMmrI,EAAcnrI,IACpBqqI,EAAWc,EAAcd,SACzBvlH,EAASqmH,EAAcrmH,OACvBqkH,EAAegC,EAAchC,aAC7BmD,EAAgBnB,EAAcmB,cAC9BlB,EAAoBD,EAAcC,kBAClCQ,EAAWT,EAAcS,SACzB3rD,EAASkrD,EAAclrD,OACvBnzG,EAAQmzG,EAAOt1G,WAAW2H,MAAM,GAChC9J,EAASs8C,EAAOt8C,OAChB8gK,EAAUx8J,EAAM,GAChBw9J,EAAWx9J,EAAM,IAAM65J,EACvB4C,EAAgBD,EAAQ9gK,OACxBgkK,EAAc7F,EAElB1mD,EAASn7D,EAAOtxC,UAAU,EAAG4B,GAEzBi1J,IAAae,IACbnrD,GAAU,KAGd,IAAK,IAAIpnF,EAAMzjB,EAAOyjB,EAAMrwB,EAAQqwB,IAAO,CACvC,IAAI+sG,EAAK9gF,EAAOjvB,OAAOgD,GAEvB,IAAsB,IAAlBswI,GACA,GAAInpI,EAAMnH,EAAM0wI,EAAe,CAE3BtpD,GAAUqpD,EACV,YAYJ,IATuB,IAAnBgD,GAAwBA,EAAgBzzI,IACxC2zI,EAAc7F,GAGbwC,EAAetwI,GAAQ0wI,GAAiBJ,EAAetwI,GAAO,IAC/DonF,GAAUqpD,EACVzwI,EAAMswI,GAGNA,IAAiBtwI,EAAK,CACtBonF,IAAWqqD,EAAW16J,EAAK4vJ,QAAQnzF,QAAQkuF,QAAUoM,GAAS2D,EAC9DzxI,GAAOmH,EAAMmpI,EAAe,EAC5B,SAIJvjC,IAAO92B,GACPmR,GAAU2lB,EACV4mC,EAAc5mC,GACPA,IAAO8kC,IACdzqD,GAAUusD,GAYlB,OARIZ,IACA3rD,EAASipD,EAAajpD,EAAQ7qG,GAASi1J,IAAae,EAAoB,EAAI,GAAI1gJ,KAAKmnB,IAAI7R,EAAMupI,EAAgBn0J,GAASxF,EAAK4vJ,QAAQjF,QAAS3qJ,IAG9IowB,GAAO5qB,IACP6qG,GAAUn7D,EAAOtxC,UAAUwsB,EAAM,IAG9BigF,EAMMwsD,CAAoBtB,EAAev7J,GAE5CqwG,EApFR,SAAyBA,EAAQpX,GAC7B,IAAIj7F,EAASqyG,EACb,GAAIpX,EAEA,IADA,IAAIrgG,EAASqgG,EAASrgG,OACbqwB,EAAM,EAAGA,EAAMrwB,EAAQqwB,IAC5BjrB,EAASA,EAAOsN,QAAQuvJ,EAAa5hE,EAAShwE,IAGtD,OAAOjrB,EA4EM8+J,CADTzsD,EA/FR,SAA6BA,EAAQvxF,EAAOhC,GACxC,IAAI9e,EAASqyG,EACb,GAAIvxF,IAAU,GAAYA,IAAU+3I,EAAS,CACzC74J,EAAS+4J,EACT,IAAK,IAAI9tI,EAAM,EAAGrwB,EAASy3G,EAAOz3G,OAAQqwB,EAAMrwB,EAAQqwB,IAAO,CAC3D,IAAI+sG,EAAK3lB,EAAOpqF,OAAOgD,GACvBjrB,GAAWg4H,IAAO,GbjLG,MaiLqBA,EAA8Bl5G,EAASk5G,GAGzF,OAAOh4H,EAsFM++J,CAAoB1sD,EAAQkrD,EAAcz8I,MAAOy8I,EAAcz+I,QACvCy+I,EAActiE,WAG5CoX,EAsBA2sD,CAAkBzB,EAAev7J,ICxS5C,IAAIi9J,GAAuB,sBA8BZ,SAAS1B,GAAcrmH,GAQlC,OANI85G,EAAS95G,GA9BjB,SAA+BA,GAC3B,IAAIgoH,EAAqBD,GAAqBntI,KAAKolB,GAEnD,GAAIgoH,EAAoB,CACpB,IAAI/jK,EAAU,CACV2lB,MAAO,GAGPA,EAAQo+I,EAAmB,GAAG71J,cAgBlC,MAdc,MAAVyX,EACA3lB,EAAQ2lB,MAAQ,EACC,MAAVA,EACP3lB,EAAQ2lB,MAAQ,EACC,MAAVA,EACP3lB,EAAQ2lB,MAAQ+3I,EACC,MAAV/3I,IACP3lB,EAAQ2lB,MAAQg4I,GAGhBoG,EAAmB,KACnB/jK,EAAQ0yJ,sBAAwB1yJ,EAAQ2yJ,sBAAwBhvH,SAASogI,EAAmB,GAAI,KAG7F/jK,GAOGgkK,CAAsBjoH,GAEtBA,EChCH,SAAS21G,GAAax6C,EAAQn7D,EAAQghH,GAIjD,QAHgB,IAAXhhH,IAAoBA,EAAS,QAClB,IAAXghH,IAAoBA,EAASc,GAE9B3mD,QACA,OAAO0mD,EAGX,IAAKqG,SAAS/sD,GACV,OAAOztG,OAAOytG,GAGlB,IAGIryG,EAHAgC,EAAOm2J,EAAWD,GAClB/8J,EAAUoiK,GAAcrmH,GAG5B,GAAI/7C,EAAS,CACT,IAAI2lB,EAAQ3lB,EAAQ2lB,OAAS,EAC7B9gB,EAASi8J,EAAqB5pD,EAAQv5G,OAAOwB,OAAO,GAAI0H,EAAK4vJ,QAAQ9wI,GAAQ3lB,GAAU6G,QAEvFhC,EAASs9J,GAAmBjrD,EAAQn7D,EAAQl1C,GAGhD,OAAOhC,EC7BI,SAASq/J,GAASngK,GAC7B,MAAwB,iBAAVA,ECKlB,IAAIogK,GAAiB,mBACjBC,GAAyB,UAE7B,SAASC,GAAqBntD,EAAQggD,GAClC,GAAIA,EAASz3J,OAAS,EAAG,CACrB,IAAIyrB,GAASgsI,EAAS,IAAM0G,GAAOzrJ,QAAQ,EAAsByrJ,GAAOr0J,MAAM,GAC9E,GAAI2tG,EAAOpxG,QAAQolB,EAAM,KAAO,GAAKgsF,EAAOpxG,QAAQolB,EAAM,KAAO,EAC7D,OAAOgsF,EAAO/kG,QAAQ+Y,EAAM,GAAI0yI,GAAOzrJ,QAAQ+Y,EAAM,GAAI0yI,ICbrE,IAAI,GAAe,YAEJ,SAAS0G,GAAavoH,GACjC,IAAI/6C,EAASxB,UAEb,OAAOu8C,EAAO5pC,QAAQ,IAAc,SAAUqa,EAAO3mB,GAGjD,OAFY7E,EAAO2iC,SAAS99B,EAAO,IAAM,MCFjD,IAEI0+J,GAAe,CAAE,EAAG,EAAG,EAAG,EAAG,GAM7BC,GAAY,GAChBA,KAN+B,GAMG5iK,YAAc,EAChD4iK,KANgC,GAMG5iK,YAAc,EACjD4iK,GAL8B,GAKI5iK,YAAc,EAChD4iK,GAP+B,GAOI5iK,YAAc,EAEjD,IAAI6iK,GAAsB,CACtB5iF,QAAS,EACT,UAAW,EACX02E,MAAO,EACPF,KAAM,EACN+C,OAAQ,GAGRsJ,GAAwB,kBAMxBC,GAAmB,CAAE,CACrBl1J,IAAK,MACLm1J,UAAW,KACZ,CACCn1J,IAAK,OACLm1J,UAAW,KACZ,CACCn1J,IAAK,QACLm1J,UAAW,KACZ,CACCn1J,IAAK,MACLm1J,UAAW,KACZ,CACCn1J,IAAK,UACLm1J,UAAW,KACZ,CACCn1J,IAAK,OACLo1J,aArBJ,SAA0B7kK,GACtB,OAAOA,EAAQ8kK,OAAS,IAAM,MAqB/B,CACCr1J,IAAK,SACLm1J,UAAW,KACZ,CACCn1J,IAAK,SACLm1J,UAAW,KACZ,CACCn1J,IAAK,eACLm1J,UAAW,MAGXG,GAAyB,CACzB7gK,EAAG,IACH00J,EAAG,IACHd,EAAG,IACHhlD,EAAG,KAGHkyD,GAAkB,GAClBC,GAAkB,GAEtB,SAASC,GAAkBN,GAIvB,OAHKI,GAAgBJ,KACjBI,GAAgBJ,GAAa,IAAIt6I,OAAOs6I,EAAY,MAEjDI,GAAgBJ,GAG3B,SAASO,GAAmBC,GAIxB,IAHA,IAAIvgK,EAAS,GACTu+B,EAAUgiI,EAASt4I,OAAO,GAC1B83I,EAAYxhI,EACPtT,EAAM,EAAGA,EAAMs1I,EAAS3lK,OAAQqwB,IAAO,CAC5C,IAAIwU,EAAY8gI,EAASt4I,OAAOgD,GAC5BwU,IAAcsgI,EACdxhI,GAAWkB,GAEXz/B,EAAOZ,KAAKm/B,GACZA,EAAUwhI,EAAYtgI,GAM9B,OAFAz/B,EAAOZ,KAAKm/B,GAELv+B,EAGX,SAASwgK,GAAcC,EAAY9M,GAC/B,IAEI+M,EAAa1gK,EAFb2gK,EAAmBF,EAAW7lK,OAC9BgmK,GAAYjoE,OAAOiD,UAEvB,IAAK,IAAI1kD,KAAUy8G,EAAkB,CAIjC,IAHA,IAAI7pB,EAAU,GACV1lE,EAAgBltB,EAAO5pC,QAAQ,IAAK,KACpCuzJ,EAAQ,EACH51I,EAAM,EAAGA,EAAM01I,EAAkB11I,IAAO,CAC7C,IAAI80I,EAAYU,EAAWx1I,GAEvBtD,GADiB04I,GAAkBN,EAAU,IACrBjuI,KAAKsyC,IAAkB,IAAI,GAEvD,GAAKz8C,GAID,GADAy8C,EAAgBA,EAAc92D,QAAQqa,EAAOoxI,GACzCpxI,EAAM/sB,SAAWmlK,EAAUnlK,OAAQ,CACnC,IAAIy+F,EAAQv8E,KAAKmnB,IAAInnB,KAAK8mB,IAAI87H,GAAa/3I,EAAM/sB,QAAU8kK,GAAaK,EAAUnlK,QAAS,IAAK,GAChGimK,GAASlB,GAAUtmE,SALvBwnE,GA3GM,IAsHV,GAFA/2B,EAAQ1qI,KAAKuoB,GAETk5I,EAAQD,EACR,MAIJx8F,EAAcxpE,SACdimK,GA3HW,GA2HFP,GAAmBl8F,GAAexpE,QAG3CimK,EAAQD,IACRA,EAAWC,EACXH,EAAc52B,EACd9pI,EAAS2zJ,EAAiBz8G,IAIlCl3C,EAASA,EAAOsN,QAAQ,IAAK,KAE7B,IAAK,IAAIwzJ,EAAQ,EAAGA,EAAQH,EAAkBG,IAAS,CACnD,IAAIC,EAAYL,EAAYI,GAC5B,GAAIC,GAAaA,IAAcN,EAAWK,GAAQ,CAC9C,IAAIE,EAAiBN,EAAYI,GAAO,GACxC9gK,EAASA,EAAOsN,QAAQ+yJ,GAAkBW,GAAiBP,EAAWK,IAClEZ,GAAuBc,KACvBhhK,EAASA,EAAOsN,QAAQ+yJ,GAAkBH,GAAuBc,IAAkBP,EAAWK,MAK1G,OAAO9gK,EAmDI,SAASihK,GAAY/pH,EAAQl1C,GACxC,IACIhC,EADAknE,EAAWllE,EAAKklE,SAEpB,GAAI8pF,EAAS95G,GAELl3C,EADAknE,EAASmrF,SAASn7G,GACTgwB,EAASmrF,SAASn7G,GAElBA,OAEV,GAAIA,EAAQ,CACf,GAAIA,EAAOkoB,QACP,OAAOloB,EAAOkoB,QAGlB,IAAImhG,EAAWrpH,EAAOqpH,SACjBA,IACGrpH,EAAOgqH,SACPlhK,EAASy/J,GAAav4F,EAASosF,gBAAgBp8G,EAAOgqH,UAAWh6F,EAASkvF,YAAYl/G,EAAOgqH,UAAWh6F,EAASmvF,YAAYn/G,EAAOgqH,WAC7HhqH,EAAO1qB,KACdxsB,EAASknE,EAASmvF,YAAYn/G,EAAO1qB,MAC9B0qB,EAAOyhB,KACd34D,EAASknE,EAASkvF,YAAYl/G,EAAOyhB,MAErC4nG,EAtChB,SAA6BplK,GAEzB,IADA,IAAI6E,EAAS,GACJirB,EAAM,EAAGA,EAAM60I,GAAiBllK,OAAQqwB,IAAO,CACpD,IAAI8vH,EAAS+kB,GAAiB70I,GAE1B/rB,EAAQ/D,EADA4/I,EAAOnwI,KAEnB,GAAI1L,EAAO,CACP,IAAIiiK,EAAWpmB,EAAOglB,WAAahlB,EAAOilB,aAAa7kK,GACvD6E,EAAOZ,KAAK+hK,EAASvtG,OAAOgsG,GAAoB1gK,MAIxD,OAAOc,EAAOwf,KAAKu5I,GA0BIqI,CAAoBlqH,IAInCqpH,IACAvgK,EApEZ,SAAwBugK,EAAUv+J,GAC9B,IAAI2xJ,EAAmB3xJ,EAAKklE,SAASosF,gBAAgBK,iBACrD,GAAIA,EAAiB4M,GACjB,OAAO5M,EAAiB4M,GAE5B,GAAIH,GAAgBp+J,EAAK/F,OAASmkK,GAAgBp+J,EAAK/F,MAAMskK,GACzD,OAAOH,GAAgBp+J,EAAK/F,MAAMskK,GAEtC,IACIvgK,EADAqhK,EAAiBd,EAASt1H,OAAO40H,IAErC,GAAIwB,EAAiB,EAAG,CACpB,IAAIC,EAAef,EAASvjK,OAAO,EAAGqkK,GAClCE,EAAehB,EAASvjK,OAAOqkK,GAEnCrhK,EAASy/J,GAAaz9J,EAAKklE,SAASosF,gBAAgBI,MAChDC,EAAiB4N,IAAiBf,GAAcF,GAAmBiB,GAAe5N,GAClFA,EAAiB2N,IAAiBd,GAAcF,GAAmBgB,GAAe3N,SAEtF3zJ,EAASwgK,GAAcF,GAAmBC,GAAW5M,GAIzD,OA9BJ,SAAqB4M,EAAUrpH,EAAQghH,GAC9BkI,GAAgBlI,KACjBkI,GAAgBlI,GAAU,IAE9BkI,GAAgBlI,GAAQqI,GAAYrpH,EAyBpCsqH,CAAYjB,EAAUvgK,EAAQgC,EAAK/F,MAC5B+D,EA8CUyhK,CAAelB,EAAUv+J,IAQ1C,OAJKhC,IACDA,EAASknE,EAASmrF,SAASn5J,GAGxB8G,EC9OI,SAAS0hK,GAAaC,GACjC,IAAIpwG,EAWJ,OAVIowG,GAAgB,EAChBpwG,EAAW,cACa,IAAjBowG,EACPpwG,EAAW,OACa,IAAjBowG,EACPpwG,EAAW,SACa,IAAjBowG,IACPpwG,EAAW,SAGRA,ECTI,SAAS8nG,GAAYnB,EAAQryJ,EAAM87J,EAAc1I,EAAYC,GACxE,OAAO5nG,EAAgB4mG,EAAQ,CAC3BryJ,KAAMA,EACN0rD,SAAUmwG,GAAaC,GACvB1I,WAAYA,EACZC,MAAOA,ICRf,SAAS/uI,GAAWy3I,GAChB,MAAuB,mBAAV,EAGF,SAASlmC,GAAOx8H,GAC3B,OAAOm7B,QAAQn7B,IAAUirB,GAAWjrB,EAAMkrB,UAAYD,GAAWjrB,EAAMytB,UCL3E,IAAIk1I,GAAQ,QACRC,GAAO,OACPC,GAAO,OACPC,GAAU,UACVC,GAAU,UAEVC,GAAiB,CACjB,EAAK,MACL,EAAK,OACL,EAAKD,GACL,EAAKA,GACL,EAAKJ,GACL,EAAKA,GACL,EAAK,MACL,EAAKG,GACL,EAAKA,GACL,EAAKA,GACL,EAAKF,GACL,EAAKA,GACL,EAAKA,GACL,EAAKA,GACL,EAAK,SACL,EAAK,SACL,EAAK,YACL,EAAKC,GACL,EAAKA,GACL,EAAKA,GACL,EAAKA,IAGLI,GAAmB,kLCTvB,SAASC,GAAY3/G,EAAOk/G,EAAc3/J,EAAMi3J,GAC5C,OAAI0I,GAAgB,EACThoE,EAAIl3C,EAAQ,EAAGk/G,GAEnBtI,GAAYr3J,EAAM,SAAU2/J,EAAc1I,GAAYx2G,GAGjE,SAAS4/G,GAAc71I,EAAMm1I,EAAc3/J,EAAMi3J,GAC7C,IAAI7B,EAAUt6I,KAAKsQ,MAAMZ,EAAKG,WAAa,GAC3C,OAAIg1I,EAAe,EACRvK,EAAU,EAGdiC,GAAYr3J,EAAM,WAAY2/J,EAAc1I,GAAY7B,GAInE,SAASkL,GAAe91I,EAAMxqB,EAAM7G,GAChC,IAAIonK,EAAapnK,EAAQonK,WACrBC,EAAkBrnK,EAAQqnK,gBAC1B/oG,EAAYt+D,EAAQs+D,UACpBgpG,EAAgBtnK,EAAQsnK,cACxBC,EAAcvnK,EAAQunK,YACtB1hJ,EAASwL,EAAKm2I,oBAAsB,GACxC,GAAe,IAAX3hJ,GAAgB0hJ,EAChB,MAAO,IAEX,IAAIn5G,EAAOvoC,GAAU,EAAI,IAAM,IAC3B4hJ,EAAe9lJ,KAAK6/B,IAAI37B,GAAQjkB,WAAW2H,MAAM,KACjDk+C,EAAUggH,EAAa,IAAM,EAC7B5iK,EAASupD,GAAQg5G,EAAaK,EAAa,GAAKjpE,EAAIipE,EAAa,GAAI,IAUzE,OATIhgH,GAAY4/G,IACZxiK,IAAWy5D,EAAY,IAAMs/F,GAASp/D,EAAI/2C,EAAS,IAGnD6/G,IAEAziK,EAASy/J,GADwB,IAAXz+I,EAAehf,EAAKklE,SAAS6rF,cAAgB/wJ,EAAKklE,SAAS4rF,UAC1C9yJ,IAGpCA,EAGX,SAAS6iK,GAAgBr2I,EAAMm1I,EAAc3/J,EAAMi3J,GAC/C,IAAIj5J,EAMJ,OAJIA,EADA2hK,EAAe,EAzDvB,SAA8Bj/G,EAAKi/G,EAAcxJ,GAC7C,IAAI2K,EAAgB7xG,EAASknG,GAQ7B,OANIz1G,EAAMogH,EACK,EAAIA,EAAgBpgH,EAEpBA,EAAMogH,GAGH,EAiDLC,CAAqBv2I,EAAKq3B,SAAU89G,EAAc3/J,GAElDq3J,GAAYr3J,EAAM,OAAQ2/J,EAAc1I,GAAYzsI,EAAKq3B,UAE/D7jD,EAGX,IAAIgjK,GAAa,GAmHF,SAAS9xG,GAAW1kC,EAAM0qB,EAAQghH,GAG7C,QAFgB,IAAXA,IAAoBA,EAASc,IAE7Bt9B,GAAOlvG,GACR,OAAIA,QACOusI,EAEJvsI,EAGX,IAAIxqB,EAAOm2J,EAAWD,GAGtB,OAFc+I,GAAY/pH,EAAQl1C,GAEnBsL,QAAQ60J,IAAkB,SAASx6I,GAC9C,IAAIg6I,EAAeh6I,EAAM/sB,OASzB,OANI+sB,EAAMs7I,SAAS,MAAQt7I,EAAMs7I,SAAS,KAC7Bt7I,EAAMliB,MAAM,EAAGk8J,EAAe,GAE9BqB,GAAWr7I,EAAM,IAAI6E,EAAMm1I,EAAc3/J,MCjNvD,SAASkhK,GAAgB12I,EAAM22I,EAAYC,GAC9C,IAAIC,EAAkB72I,EAAKm2I,oBAEvBW,EAAa,IAAI3hK,KAAK6qB,EAAKpC,UAAsC,KAAzB+4I,EAAaC,IAErDG,EAAgBD,EAAWX,oBAE/B,OAAO,IAAIhhK,KAAK2hK,EAAWl5I,UAAgD,KAAnCm5I,EAAgBF,IDqE5DL,GAAW9pK,EAAI,SAASszB,EAAMm1I,GAC1B,OAAOhoE,EAAIntE,EAAKI,UAAW+0I,IAG/BqB,GAAWjP,EAAI,SAASvnI,EAAMm1I,EAAc3/J,GACxC,OAAOq3J,GAAYr3J,EAAM,OAAQ2/J,GAAcn1I,EAAKq3B,WAGxDm/G,GAAW/P,EAAI,SAASzmI,EAAMm1I,EAAc3/J,GACxC,OAAOogK,GAAY51I,EAAKG,WAAYg1I,EAAc3/J,GAAM,IAG5DghK,GAAWQ,EAAI,SAASh3I,EAAMm1I,EAAc3/J,GACxC,OAAOogK,GAAY51I,EAAKG,WAAYg1I,EAAc3/J,GAAM,IAG5DghK,GAAW7kK,EAAI,SAASquB,EAAMm1I,GAC1B,IAAIn/G,EAAOh2B,EAAKE,cAIhB,OAHqB,IAAjBi1I,IACAn/G,GAAc,KAEXm3C,EAAIn3C,EAAMm/G,IAGrBqB,GAAW1+E,EAAI,SAAS93D,EAAMm1I,GAE1B,OAAOhoE,EADKntE,EAAKK,WAAa,IAAM,GAClB80I,IAGtBqB,GAAWrO,EAAI,SAASnoI,EAAMm1I,GAC1B,OAAOhoE,EAAIntE,EAAKK,WAAY80I,IAGhCqB,GAAW/0F,EAAI,SAASzhD,EAAMm1I,GAC1B,OAAOhoE,EAAIntE,EAAKK,YAAc,GAAI80I,IAGtCqB,GAAWS,EAAI,SAASj3I,EAAMm1I,GAC1B,OAAOhoE,EAAIntE,EAAKK,WAAa,GAAI80I,IAGrCqB,GAAWr4J,EAAI,SAAS6hB,EAAMm1I,GAC1B,OAAOhoE,EAAIntE,EAAKM,aAAc60I,IAGlCqB,GAAWxoK,EAAI,SAASgyB,EAAMm1I,GAC1B,OAAOhoE,EAAIntE,EAAKO,aAAc40I,IAGlCqB,GAAWj+B,EAAI,SAASv4G,EAAMm1I,GAQ1B,OALqB,IAFFn1I,EAAKQ,kBAGXpoB,OAAO4nB,EAAKQ,kBAAoB,KAAMtoB,MAAM,KAAK,GAAG1H,OAAO,EAAG2kK,GAE9DhoE,EAAIo/D,EAAO4I,IAK5BqB,GAAW3hJ,EAAI,SAASmL,EAAMm1I,EAAc3/J,GACxC,OAAOq3J,GAAYr3J,EAAM,aAAc2/J,GAAcn1I,EAAKK,WAAa,GAAK,KAAO,OAGvFm2I,GAAWU,EAAI,SAASl3I,EAAMm1I,EAAc3/J,GACxC,OAAOsgK,GAAe91I,EAAMxqB,EAAM,CAC9BugK,WAAYZ,EAAe,EAC3Ba,gBAAiBb,EAAe,EAChCloG,WAAW,EACXgpG,eAAe,KAIvBO,GAAWW,EAAI,SAASn3I,EAAMm1I,EAAc3/J,GACxC,OAAOsgK,GAAe91I,EAAMxqB,EAAM,CAC9By3D,UAAWkoG,EAAe,EAC1Bc,cAAgC,IAAjBd,EACfe,YAA8B,IAAjBf,KAIrBqB,GAAWvmJ,EAAI,SAAS+P,EAAMm1I,EAAc3/J,GACxC,OAAOsgK,GAAe91I,EAAMxqB,EAAM,CAC9BwgK,gBAAkC,IAAjBb,EACjBloG,UAA4B,IAAjBkoG,GAAuC,IAAjBA,KAIzCqB,GAAWY,EAAI,SAASp3I,EAAMm1I,EAAc3/J,GACxC,OAAOsgK,GAAe91I,EAAMxqB,EAAM,CAC9BwgK,gBAAkC,IAAjBb,EACjBloG,UAA4B,IAAjBkoG,GAAuC,IAAjBA,EACjCe,aAAa,KAIrBM,GAAW77B,EAAI,SAAS36G,EAAMm1I,EAAc3/J,GACxC,IAAIm1J,EAAM3qI,EAAKE,eAAiB,EAAI,EAAI,EACxC,OAAO2sI,GAAYr3J,EAAM,OAAQ2/J,GAAcxK,IAGnD6L,GAAW3jK,EAAIwjK,GAEfG,GAAWn4J,EAAI,SAAS2hB,EAAMm1I,EAAc3/J,GACxC,OAAO6gK,GAAgBr2I,EAAMm1I,EAAc3/J,GAAM,IAGrDghK,GAAWr/E,EAAI,SAASn3D,EAAMm1I,EAAc3/J,GACxC,OAAOqgK,GAAc71I,EAAMm1I,EAAc3/J,GAAM,IAGnDghK,GAAW/0D,EAAIo0D,GElLf,IAAIwB,GAAuB,8BACvBlyI,GAAa,sBACbmyI,GAAe,UACfC,GAAe,CACf,EAAG,WACH,EAAG,WACH,EAAG,UAEHC,GAAc,MAGdC,GAAsB,CACtB,sBACA,mBACA,aACA,yBACA,iCACA,6BACA,4BACA,yBACA,8BACA,0BACA,sBACA,oBACA,sBACA,mBACA,sBACA,mBACA,aACA,WACA,SAEAC,GAAmB,CAAE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAGhF,SAASC,GAAWjlK,EAAOsI,EAAO4qB,GAC9B,QAASlzB,GAASsI,GAAStI,GAASkzB,GAGxC,SAASgyI,GAAUz8I,EAAOgE,GAItB,IAHA,IAAIurB,EAASvrB,EAAMurB,OACfjsB,EAAMU,EAAMV,IACZxwB,EAAI,EACDy8C,EAAOjsB,KAAStD,GACnBltB,IACAwwB,IAMJ,OAJIxwB,EAAI,IACJwwB,GAAO,GAEXU,EAAMV,IAAMA,EACLxwB,EAGX,SAAS4pK,GAAU7nJ,EAAMmP,GACrB,IAAI24I,EAAQ9nJ,EAAQunJ,GAAavnJ,IAAS,IAAIiJ,OAAO,UAAYjJ,EAAO,KAAQwnJ,GAC5Er8I,EAAQgE,EAAMzsB,MAAMlC,OAAO2uB,EAAM44I,SAAU/nJ,GAAMmL,MAAM28I,GAE3D,OAAI38I,GACAA,EAAQA,EAAM,GACdgE,EAAM44I,UAAY58I,EAAM/sB,OACjBkkC,SAASnX,EAAO,KAEpB,KAGX,SAAS68I,GAAer2G,EAAOxiC,EAAOutI,GAQlC,IAPA,IAEIj9J,EAAMwoK,EAGNC,EALAjqK,EAAI,EACJG,EAASuzD,EAAMvzD,OAEf+pK,EAAc,EACdC,EAAW,EAGRnqK,EAAIG,EAAQH,IAEfgqK,GADAxoK,EAAOkyD,EAAM1zD,IACKG,OAClB8pK,EAAW/4I,EAAMzsB,MAAMlC,OAAO2uB,EAAM44I,SAAUE,GAE1CvL,IACAwL,EAAWA,EAASr7J,eAGpBq7J,IAAazoK,GAAQwoK,EAAaE,IAClCA,EAAcF,EACdG,EAAWnqK,GAInB,OAAIkqK,GACAh5I,EAAM44I,UAAYI,EACXC,EAAW,GAGf,KAGX,SAASC,GAAal5I,GAClB,IAAI3rB,GAAS,EAKb,OAJI2rB,EAAMzsB,MAAM+oB,OAAO0D,EAAM44I,YAAc54I,EAAMurB,OAAOvrB,EAAMV,OAC1DU,EAAM44I,WACNvkK,GAAS,GAENA,EAaX,SAAS8kK,GAAoBn5I,EAAO3pB,EAAM7G,GACtC,IAAIonK,EAAapnK,EAAQonK,WACrBwC,EAAc5pK,EAAQ4pK,YACtBvC,EAAkBrnK,EAAQqnK,gBAC1BC,EAAgBtnK,EAAQsnK,cACxBuC,EAAW7pK,EAAQ6pK,SAGvB,GAFAr5I,EAAMc,KAAM,EAERu4I,GAAmD,MAAvCr5I,EAAMzsB,MAAM+oB,OAAO0D,EAAM44I,UAErC,OADA54I,EAAM44I,YACC,EAGX,GAAI9B,IAAkB+B,GAvB1B,SAA4Bt9F,GACxB,IAAI4rF,EAAY5rF,EAAS4rF,UACrBC,EAAgB7rF,EAAS6rF,cAC7B,IAAKD,EACD,MAAMxB,EAAO2T,UAAUzkK,QAG3B,MAAO,CAAEsyJ,EAAUxlJ,QAxGL,MAwG0ByrJ,GAAO1vJ,cAAe0pJ,EAAczlJ,QAxG9D,MAwGmFyrJ,GAAO1vJ,eAgBnE67J,CAAmBljK,EAAKklE,UAAWv7C,GAAO,GAC3E,OAAO,EAGX,IAAIm+G,EAAU+5B,GAAqB/xI,KAAKnG,EAAMzsB,MAAMlC,OAAO2uB,EAAM44I,SAAU,IAC3E,IAAKz6B,EACD,OAAQ24B,EAGZ,IAAI0C,EAAar7B,EAAQ,GACrBs7B,EAAet7B,EAAQ,GACvBu7B,EAAcvmI,SAASqmI,EAAY,IACnC1rG,EAAYqwE,EAAQ,GACpBw7B,EAAgBxmI,SAASsmI,EAAc,IAE3C,SAAI3+I,MAAM4+I,KAAkB9C,GAAoC,IAAtB4C,EAAWvqK,SAAmB4nK,GAAmB/7I,MAAM6+I,IAAoBP,GAAetrG,KAIhIhzC,MAAM6+I,KACNA,EAAgB,SAGhBnB,GAAWkB,GAAc,GAAI,KAAQC,GAAiBnB,GAAWmB,EAAe,EAAG,OAIvF35I,EAAM44I,UAAYz6B,EAAQ,GAAGlvI,OAC7B+wB,EAAM05I,YAAcA,OACpB15I,EAAM25I,cAAgBA,KAG1B,SAASC,GAAWvtC,EAAIrsG,EAAO3pB,GAC3B,IAAIotD,EAAQg1G,GAAUpsC,EAAIrsG,GACtBwiC,EAAQkrG,GAAYr3J,EAAM,SAAUotD,EAAc,MAAP4oE,GAAY,GAEvDv1E,EAAQ2M,EAAQ,EAAIi1G,GAAU,EAAG14I,GAAS64I,GAAer2G,EAAOxiC,GAAO,GAE3E,GAAc,OAAV82B,GAAkB0hH,GAAW1hH,EAAO,EAAG,IACvC,OAAO,EAEX92B,EAAM82B,MAAQA,EAAQ,EAG1B,SAAS+iH,GAAextC,EAAIrsG,EAAO3pB,GAC/B,IAAIotD,EAAQg1G,GAAUpsC,EAAIrsG,GACtBwiC,EAAQkrG,GAAYr3J,EAAM,OAAQotD,EAAc,MAAP4oE,GAAY,GACrDytC,EAAYr2G,EAAQ,EAAIi1G,GAAU,EAAG14I,GAAS64I,GAAer2G,EAAOxiC,GAAO,GAC/E,IAAM85I,GAA2B,IAAdA,GAAoBtB,GAAWsB,EAAW,EAAG,GAC5D,OAAO,EAIf,IAAIC,GAAU,GA2Rd,SAASC,GAAWzmK,EAAOg4C,EAAQl1C,GAmB/B,IAlBA,IAAIo9D,EAAU6hG,GAAY/pH,EAAQl1C,GAAM0C,MAAMq0J,GAE1CptI,EAAQ,CACRurB,OAAQkoB,EACRn0C,IAAK,EACL/rB,MAAOA,EACPqlK,SAAU,EACV/hH,KAAM,KACNC,MAAO,KACPC,IAAK,KACLC,MAAO,KACPC,QAAS,KACTC,QAAS,KACTC,aAAc,MAEdloD,EAASwkE,EAAQxkE,OACjBytJ,GAAU,EAEP18H,EAAMV,IAAMrwB,EAAQ+wB,EAAMV,MAAO,CACpC,IAAI+sG,EAAK54D,EAAQzzC,EAAMV,KAEvB,GAAIo9H,EACW,MAAPrwB,IACAqwB,GAAU,GAGdwc,GAAal5I,QAEb,GAAI+5I,GAAQ1tC,IAER,GADc0tC,GAAQ1tC,GAAIrsG,EAAO3pB,GAE7B,OAAO,UAER,GAAW,MAAPg2H,EACPqwB,GAAU,EACVwc,GAAal5I,QACV,IAAKk5I,GAAal5I,GACrB,OAAO,KAKnB,OAAIA,EAAM44I,SAAWrlK,EAAMtE,OAChB,KAxGf,SAAoB+wB,GAChB,IAaI3rB,EAbAwiD,EAAO72B,EAAM62B,KACbC,EAAQ92B,EAAM82B,MACdC,EAAM/2B,EAAM+2B,IACZC,EAAQh3B,EAAMg3B,MACdC,EAAUj3B,EAAMi3B,QAChBC,EAAUl3B,EAAMk3B,QAChBC,EAAen3B,EAAMm3B,aACrB8iH,EAASj6I,EAAMi6I,OACfn5I,EAAMd,EAAMc,IACZ44I,EAAc15I,EAAM05I,YACpBC,EAAgB35I,EAAM25I,cACtBO,EAAoB,OAAVljH,GAA8B,OAAZC,GAAoBC,GAAW,KAC3Dr2B,EAAO,IAAI7qB,KAwCf,OArCa,OAAT6gD,GAA2B,OAAVC,GAA0B,OAARC,GAAgBmjH,GACnDrjH,EAAOh2B,EAAKE,cACZ+1B,EAAQj2B,EAAKG,WACb+1B,EAAMl2B,EAAKI,YAEE,OAAT41B,IACAA,EAAOh2B,EAAKE,eAGJ,OAARg2B,IACAA,EAAM,IAIVkjH,GAAUjjH,EAAQ,KAClBA,GAAS,IAGTl2B,GACI44I,IACA1iH,IAAU0iH,GAGVC,IACA1iH,IAAY0iH,GAAiBD,EAAc,GAAK,EAAI,IAGxDrlK,EAAS,IAAI2B,KAAKA,KAAK8qB,IAAI+1B,EAAMC,EAAOC,EAAKC,EAAOC,EAASC,EAASC,KD/bvE,SAAmBt2B,EAAMm2B,GACvBA,GAA6B,KAApBn2B,EAAKK,YACfL,EAAK41B,SAAS51B,EAAKK,WAAa,GCgchCo1B,CADAjiD,EAAS,IAAI2B,KAAK6gD,EAAMC,EAAOC,EAAKC,EAAOC,EAASC,EAASC,GAC3CH,GAGlBH,EAAO,KACPxiD,EAAO+iD,YAAYP,GAGnBxiD,EAAO4sB,YAAc81B,QAAez4C,IAARwiB,EACrB,KAGJzsB,EAkDAuiD,CAAW52B,IAAU,KA4CjB,SAAS41C,GAAUriE,EAAO66F,EAASm+D,GAG9C,QAFgB,IAAXA,IAAoBA,EAASc,IAE7B95J,EACD,OAAO,KAGX,GAAIw8H,GAAOx8H,GACP,OAAOA,EAGX,IAAI4mK,EAAalhK,OAAO1F,GAAOyjB,OAC3B6J,EA5CR,SAAkCttB,GAC9B,GAAIA,GAAiC,IAAxBA,EAAM+B,QAAQ,MAAa,CACpC,IAAIurB,EAAOmF,GAAWG,KAAK5yB,GAC3B,GAAIstB,EAAM,CACNA,EAAOA,EAAK,GACZ,IAAIu5I,EAAWjC,GAAahyI,KAAKtF,EAAK5mB,UAAU,IAUhD,OARA4mB,EAAO,IAAI7qB,KAAKm9B,SAAStS,EAAM,KAE3Bu5I,IAjBRx8G,EAA+B,OADLvoC,EAmBkB+kJ,EAAS,IAlBvC/oK,OAAO,EAAG,IAAc,EAAI,EAE1CgD,EAASghB,EAAOpb,UAAU,GAgBlBmgK,EAbLx8G,GAFuC,GAApCzqB,SAAS9+B,EAAOhD,OAAO,EAAG,GAAI,IAAY8hC,SAAS9+B,EAAO4F,UAAU,GAAI,KAgBtE4mB,EAAO02I,GAAgB12I,EAAMA,EAAKm2I,oBAAqB,GACvDn2I,EAAO02I,GAAgB12I,EAAM,GAAI,EAAIu5I,IAGlCv5I,GAxBnB,IAAkCxL,EAC1BuoC,EAEAvpD,EAkDOgmK,CAAyBF,GACpC,GAAIt5I,EACA,OAAOA,EASX,IANA,IAAIxqB,EAAOm2J,EAAWD,GAClB+N,EAAelsE,GA9BvB,SAAwB7yB,GAKpB,IAJA,IAAI6yB,EAAU,GACVs4D,EAAWnrF,EAASmrF,SACpBz3J,EAASspK,GAAiBtpK,OAErBqwB,EAAM,EAAGA,EAAMrwB,EAAQqwB,IAC5B8uE,EAAQ36F,KAAKizJ,EAAS6R,GAAiBj5I,KAG3C,OAAO8uE,EAAQ1mF,OAAO4wJ,IAqBQiC,CAAelkK,EAAKklE,UAG9CtsE,GAFJqrK,EAAehtK,MAAMyc,QAAQuwJ,GAAgBA,EAAe,CAAEA,IAEpCrrK,OAEjBqwB,EAAM,EAAGA,EAAMrwB,EAAQqwB,IAE5B,GADAuB,EAAOm5I,GAAWG,EAAYG,EAAah7I,GAAMjpB,GAE7C,OAAOwqB,EAIf,OAAOA,EAlZXk5I,GAAQxsK,EAAI,SAASyyB,GACjBy4I,GAAU,IAAKz4I,GACf,IAAI+2B,EAAM2hH,GAAU,EAAG14I,GAEvB,GAAY,OAAR+2B,GAAgByhH,GAAWzhH,EAAK,EAAG,IACnC,OAAO,EAGO,OAAd/2B,EAAM+2B,MACN/2B,EAAM+2B,IAAMA,IAIpBgjH,GAAQ3R,EAAI,SAASpoI,EAAO3pB,GAIxB,GAAkB,OADFwiK,GAAenL,GAAYr3J,EAAM,OAFrCoiK,GAAU,IAAKz4I,IAEqC,GAAO,GAAOA,GAAO,GAEjF,OAAO,GAIf+5I,GAAQzS,EAAI,SAAStnI,EAAO3pB,GACxB,OAAOujK,GAAW,IAAK55I,EAAO3pB,IAGlC0jK,GAAQlC,EAAI,SAAS73I,EAAO3pB,GACxB,OAAOujK,GAAW,IAAK55I,EAAO3pB,IAGlC0jK,GAAQvnK,EAAI,SAASwtB,GACjB,IAAIyjC,EAAQg1G,GAAU,IAAKz4I,GACvB62B,EAAO6hH,GAAoB,IAAVj1G,OAAcnlD,EAAYmlD,EAAOzjC,GAEtD,GAAa,OAAT62B,EACA,OAAO,EAGX,GAAc,IAAV4M,EAAa,CACb,IAAIuC,GAAc,IAAIhwD,MAAO+qB,eAC7B81B,EAAQmP,EAAcA,EAAc,IAAOnP,GA/L1B,OAiMbA,GAAQ,KAIhB72B,EAAM62B,KAAOA,GAGjBkjH,GAAQphF,EAAI,SAAS34D,GACjBy4I,GAAU,IAAKz4I,GAEf,IAAIg3B,EAAQ0hH,GAAU,EAAG14I,GAKzB,GAJc,KAAVg3B,IACAA,EAAQ,GAGE,OAAVA,GAAkBwhH,GAAWxhH,EAAO,EAAG,IACvC,OAAO,EAGXh3B,EAAMg3B,MAAQA,GAGlB+iH,GAAQjC,EAAI,SAAS93I,GACjBy4I,GAAU,IAAKz4I,GAEf,IAAIg3B,EAAQ0hH,GAAU,EAAG14I,GAEzB,GAAc,OAAVg3B,GAAkBwhH,GAAWxhH,EAAO,EAAG,IACvC,OAAO,EAGXh3B,EAAMg3B,MAAQA,GAGlB+iH,GAAQrkJ,EAAI,SAASsK,EAAO3pB,GACxB,IACImkK,EAAgB9M,GAAYr3J,EAAM,aAD1BoiK,GAAU,IAAKz4I,IACgC,GAAO,GAE9Di6I,EAASpB,GAAe,CAAE2B,EAAc78F,IAAM39C,GAAO,GACzD,IAAKi6I,IAAWpB,GAAe,CAAE2B,EAAc98F,IAAM19C,GAAO,GACxD,OAAO,EAGXA,EAAMi6I,OAASA,GAGnBF,GAAQ/Q,EAAI,SAAShpI,GACjBy4I,GAAU,IAAKz4I,GACf,IAAIg3B,EAAQ0hH,GAAU,EAAG14I,GACzB,GAAc,OAAVg3B,GAAkBwhH,GAAWxhH,EAAO,EAAG,IACvC,OAAO,EAEXh3B,EAAMg3B,MAAQA,GAGlB+iH,GAAQz3F,EAAI,SAAStiD,GACjBy4I,GAAU,IAAKz4I,GAEf,IAAIg3B,EAAQ0hH,GAAU,EAAG14I,GAEzB,GAAc,OAAVg3B,GAAkBwhH,GAAWxhH,EAAO,EAAG,IACvC,OAAO,EAGXh3B,EAAMg3B,MAAkB,KAAVA,EAAe,EAAIA,GAGrC+iH,GAAQ/6J,EAAI,SAASghB,GACjBy4I,GAAU,IAAKz4I,GACf,IAAIi3B,EAAUyhH,GAAU,EAAG14I,GAE3B,GAAgB,OAAZi3B,GAAoBuhH,GAAWvhH,EAAS,EAAG,IAC3C,OAAO,EAGXj3B,EAAMi3B,QAAUA,GAGpB8iH,GAAQlrK,EAAI,SAASmxB,GACjBy4I,GAAU,IAAKz4I,GACf,IAAIk3B,EAAUwhH,GAAU,EAAG14I,GAC3B,GAAgB,OAAZk3B,GAAoBshH,GAAWthH,EAAS,EAAG,IAC3C,OAAO,EAEXl3B,EAAMk3B,QAAUA,GAGpB6iH,GAAQ3gC,EAAI,SAASp5G,GACjB,IAAIyjC,EAAQg1G,GAAU,IAAKz4I,GACvBhE,EAAQgE,EAAMzsB,MAAMlC,OAAO2uB,EAAM44I,SAAUn1G,GAC3CtM,EAAe,KASnB,GAPKr8B,MAAMqY,SAASnX,EAAO,OAEvBm7B,EAAeqkC,EADfrkC,EAAet8B,WAAW,KAAOmB,EAAO,IACL,GACnCm7B,GAAgB,IAChBn3B,EAAM44I,UAAYn1G,GAGD,OAAjBtM,GAAyBqhH,GAAWrhH,EAAc,EAAG,KACrD,OAAO,EAGXn3B,EAAMm3B,aAAeA,GAGzB4iH,GAAQhC,EAAI,SAAS/3I,EAAO3pB,GACxB,IAEIokK,EAFQhC,GAAU,IAAKz4I,GAED,EAEtB0hI,EAAUyX,GAAoBn5I,EAAO3pB,EAAM,CAC3CugK,WAAY6D,EACZ5D,gBAAiB4D,EACjB3D,eAAe,IAGnB,GAAIpV,EACA,OAAOA,GAIfqY,GAAQ/B,EAAI,SAASh4I,EAAO3pB,GACxB,IAAIotD,EAAQg1G,GAAU,IAAKz4I,GAEvB0hI,EAAUyX,GAAoBn5I,EAAO3pB,EAAM,CAC3C+iK,YAAa31G,EAAQ,EACrB41G,SAAoB,IAAV51G,EACVqzG,cAAyB,IAAVrzG,IAGnB,GAAIi+F,EACA,OAAOA,GAIfqY,GAAQjpJ,EAAI,SAASkP,EAAO3pB,GACxB,IAAIotD,EAAQg1G,GAAU,IAAKz4I,GAEvB0hI,EAAUyX,GAAoBn5I,EAAO3pB,EAAM,CAC3C+iK,YAAuB,IAAV31G,GAAyB,IAAVA,EAC5BozG,gBAA2B,IAAVpzG,IAErB,GAAIi+F,EACA,OAAOA,GAIfqY,GAAQ9B,EAAI,SAASj4I,EAAO3pB,GACxB,IAAIotD,EAAQg1G,GAAU,IAAKz4I,GAEvB0hI,EAAUyX,GAAoBn5I,EAAO3pB,EAAM,CAC3C+iK,YAAuB,IAAV31G,GAAyB,IAAVA,EAC5BozG,gBAA2B,IAAVpzG,EACjB41G,UAAU,IAEd,GAAI3X,EACA,OAAOA,GAIfqY,GAAQv+B,EAAI,SAASx7G,EAAO3pB,GACxB,IACIi1J,EAAOoC,GAAYr3J,EAAM,OADjBoiK,GAAU,IAAKz4I,IACiB,GAAO,GAGnD,GAAY,OAFF64I,GAAe,CAAEvN,EAAK,GAAIA,EAAK,IAAMtrI,GAAO,GAGlD,OAAO,GAIf+5I,GAAQrmK,EAAI,SAASssB,EAAO3pB,GACxB,OAAOwjK,GAAe,IAAK75I,EAAO3pB,IAGtC0jK,GAAQ76J,EAAI,SAAS8gB,EAAO3pB,GACxB,OAAOwjK,GAAe,IAAK75I,EAAO3pB,ICpZtC,IAAIqkK,GAAa,CACb5jH,MAAO,CACH58C,KAAM,SACNygK,UAAW,EACXrN,WAAY,KAGhB7B,QAAS,CACLvxJ,KAAM,WACNygK,UAAW,EACXrN,WAAY,KAGhB3B,QAAS,CACLzxJ,KAAM,OACNygK,UAAW,CACPvS,EAAG,EACHlpJ,EAAG,EACHxL,EAAG,GAEP45J,WAAY,KAGhB1B,UAAW,CACP1xJ,KAAM,aACNygK,UAAW,GAGfnP,IAAK,CACDtxJ,KAAM,OACNygK,UAAW,IAIfC,GAAU,UAEd,SAASC,GAAWngJ,EAAOnnB,GACvB,IAAIunK,EAAWpgJ,EAAMA,EAAMzrB,OAAS,GAChC6rK,GAAYA,EAAS5gK,OAAS0gK,GAC9BE,EAASrnG,SAAWlgE,EAEpBmnB,EAAMjnB,KAAK,CACPyG,KAAM0gK,GACNnnG,QAASlgE,IAKrB,SAASwnK,GAAStnG,GACd,MAAmB,MAAZA,GAA+B,MAAZA,EClD9B,IAAI,GAAe,uBAEZ,SAAS,GAASlgE,EAAOg4C,EAAQghH,GACpC,GAAIhhH,EAAQ,CACR,GAAIwkF,GAAOx8H,GACP,OAAOgyD,GAAWhyD,EAAOg4C,EAAQghH,GAC9B,GAAImH,GAASngK,GAChB,OAAO2tJ,GAAa3tJ,EAAOg4C,EAAQghH,GAI3C,OAAOh5J,QAAwCA,EAAQ65J,EAGpD,SAAS,GAAO7hH,EAAQ/6C,EAAQ+7J,GACnC,OAAOhhH,EAAO5pC,QAAQ,IAAc,SAASqa,EAAO3mB,EAAO2lK,GAGvD,OAAO,GAFKxqK,EAAO2iC,SAAS99B,EAAO,KAEZ2lK,EAAoBA,EAAkB/gK,UAAU,GAAKmzJ,EAAOb,MCnB3F,ICJQv/J,GDIJiuK,GAA6B,WAM7B,SAASA,EAAY1O,GACjB3+J,KAAK2+J,OAASA,EAoHlB,OAxGA0O,EAAYntK,UAAUy9C,OAAS,SAAUA,GAErC,IADA,IAAI/6C,EAAS,GACJoE,EAAK,EAAGA,EAAK5F,UAAUC,OAAQ2F,IACpCpE,EAAOoE,EAAK,GAAK5F,UAAU4F,GAG/B,OAAsB,IAAlBpE,EAAOvB,QAAgB3B,MAAMyc,QAAQvZ,EAAO,IACrC,GAAgB+6C,EAAQ/6C,EAAO,GAAI5C,KAAK2+J,QAE5C,GAAgBhhH,EAAQ/6C,EAAQ5C,KAAK2+J,SAShD0O,EAAYntK,UAAUy3D,WAAa,SAAUhyD,EAAOg4C,GAChD,OAAO,GAAoBh4C,EAAOg4C,EAAQ39C,KAAK2+J,SASnD0O,EAAYntK,UAAUsD,SAAW,SAAUmC,EAAOg4C,GAC9C,OAAO,GAAkBh4C,EAAOg4C,EAAQ39C,KAAK2+J,SASjD0O,EAAYntK,UAAUszJ,YAAc,SAAU7tJ,EAAOg4C,GACjD,OZNO,SAAqBh4C,EAAOg5J,EAAQhhH,GAI/C,QAHgB,IAAXghH,IAAoBA,EAASc,QAClB,IAAX9hH,IAAoBA,EAAS,KAE7Bh4C,GAAmB,IAAVA,EACV,OAAO,KAGX,GAAImgK,GAASngK,GACT,OAAOA,EAGX,IAII2nK,EAJA7kK,EAAOm2J,EAAWD,GAClBz5F,EAAUz8D,EAAK4vJ,QAAQnzF,QAEvB4zC,EAASnzG,EAAMnC,WAGnB,GAAIuiK,GAAe3lJ,KAAK04F,GAEpB,OADAA,EAAS7rF,WAAW6rF,EAAO/kG,QAAQmxD,EAAQkuF,QAAS,IAC7ClmI,MAAM4rF,GAAU,KAAOA,EAGlC,IAAIy0D,EAAoBz0D,EAAOpxG,QAAQ,KACvC,GAAI6lK,EAAoB,EACpB,OAAO,KAGX,IAAIC,EAAaD,GAAqB,EAClCxwI,EApER,SAA6Bp3B,EAAO8C,EAAMk1C,GACtC,IAGIulH,EAHAthK,EAAUoiK,GAAcrmH,IAAW,GACnCglH,EAAaL,EAAgB1gK,EAAQ2lB,OACrCuxF,EAASnzG,EAGTuuJ,EAAWtyJ,EAAQsyJ,UAAYmF,EAAe5wJ,EAAMk6J,GAExD,GAAIzO,EAAU,CACV,IAAIuZ,EdwDL,SAA0B9O,EAAQzK,EAAUyM,QACvB,IAAnBA,IAA4BA,GAAiB,GAElD,IAAImB,EAAepB,EAAgB/B,EAAQzK,EAAUyM,GACrD,GAAKmB,EAAL,CAIA,IAAKA,EAAa2L,SAAU,CACxB,IAAIA,EAAW,CAAEvZ,GACjB,IAAK,IAAI5iI,KAASwwI,EACd2L,EAAS5nK,KAAKi8J,EAAaxwI,IAE/Bm8I,EAAS96I,KAAKkuI,GACdiB,EAAa2L,SAAWA,EAG5B,OAAO3L,EAAa2L,UczEDC,CAAiBjlK,EAAMyrJ,EAAUyO,GAChD,GAAI8K,EACA,IAAK,IAAI/7I,EAAM,EAAGA,EAAM+7I,EAASpsK,OAAQqwB,IAAO,CAC5C,IAAIg1B,EAAU+mH,EAAS/7I,GACvB,GAAIonF,EAAO4wD,SAAShjH,GAAU,CAC1BoyD,EAASA,EAAO/kG,QAAQ2yC,EAAS84G,GACjCmD,GAAa,EACb,OAKZ,GAAIA,EAAY,CACZ,IAAIgL,EAAc1H,GAAqBntD,EAAQrwG,EAAK4vJ,QAAQnE,SAAS4E,WACjEmN,GAAqBntD,EAAQrwG,EAAK4vJ,QAAQiB,WAAWR,UAErD6U,IACAzK,GAAW,EACXpqD,EAAS60D,IAMrB,MAAO,CACH70D,OAAQA,EACRoqD,SAAUA,GAiCJ0K,CAAoB90D,EAAQrwG,EAAMk1C,GACxCkwH,EAAmB9wI,EAAImmI,SA4B3B,OAzBApqD,EAFgB/7E,EAAI+7E,OAGpB00D,OAAkC98J,IAArBm9J,EAAiCA,EAAmBL,GAE7D7vH,EAAOp2B,QAAU+3I,GAAWxmD,EAAOpxG,QAAQw9D,EAAQozF,cAAgB,KACnEx/C,EAASA,EAAO/kG,QAAQmxD,EAAQozF,YAAakH,GAC7C8N,GAAY,GAGhBx0D,EAASA,EAAO/kG,QAAQ,IAAKyrJ,GACtBzrJ,QAAQiyJ,GAAwB,KAChC76J,MAAM+5D,EAAQxyC,MAAM3e,QAAQiyJ,GAAwB,MAAM//I,KAAKu5I,GAC/DzrJ,QAAQmxD,EAAQkuF,QAAS,GAEhCt6C,EAAS7rF,WAAW6rF,GAEhB5rF,MAAM4rF,GACNA,EAAS,KACF00D,IACP10D,IAAW,GAGXA,GAAUw0D,IACVx0D,GAAU,KAGPA,EYpDI,CAAqBnzG,EAAO3F,KAAK2+J,OAAQhhH,IASpD0vH,EAAYntK,UAAU8nE,UAAY,SAAUriE,EAAOg4C,GAC/C,OAAO,GAAmBh4C,EAAOg4C,EAAQ39C,KAAK2+J,SASlD0O,EAAYntK,UAAUozJ,aAAe,SAAU3tJ,EAAOg4C,GAClD,OAAO,GAAsBh4C,EAAOg4C,EAAQ39C,KAAK2+J,SAQrD0O,EAAYntK,UAAU6oE,cAAgB,SAAUnnE,GAC5C,OExFO,SAAuBA,EAAS+8J,QAC3B,IAAXA,IAAoBA,EAASc,GAElC,IACI9B,EADOiB,EAAWD,GACAhxF,SAASgwF,WAC/B,IAAKA,EACD,MAAM5F,EAAO+V,iBAAiB7mK,QAGlC,IAAI8mK,EAAgBpQ,EAAW/7J,EAAQ0K,OAAS,GAEhD,OAAOyhK,EAAcnsK,EAAQo2D,WAAa+1G,EAAoB,KF6EnD,CAAuBnsK,EAAS5B,KAAK2+J,SAQhD0O,EAAYntK,UAAU63D,gBAAkB,SAAUn2D,GAC9C,OAAO,EAAyB5B,KAAK2+J,OAAQ/8J,IAQjDyrK,EAAYntK,UAAU0mE,gBAAkB,SAAUjpB,GAC9C,OFnDO,SAAyBA,EAAQghH,QAC5B,IAAXA,IAAoBA,EAASc,GAQlC,IANA,IACI55F,EAAU6hG,GAAY/pH,EADfihH,EAAWD,IAElB7xI,EAAQ,GACRu8F,EAAYu/C,GAAiBv/C,UAAY,EACzCj7F,EAAQw6I,GAAiBrwI,KAAKstC,GAE3Bz3C,GAAO,CACV,IAAIzoB,EAAQyoB,EAAM,GAMlB,GAJIi7F,EAAYj7F,EAAM3mB,OAClBwlK,GAAWngJ,EAAO+4C,EAAQx5D,UAAUg9G,EAAWj7F,EAAM3mB,QAGrD9B,EAAM8oB,WAAW,MAAQ9oB,EAAM8oB,WAAW,KAC1Cw+I,GAAWngJ,EAAOnnB,OACf,CACH,IAAI6gK,EAAY7gK,EAAM,GAClB2G,EAAOq8J,GAAenC,GACtB5gG,EAAO,CACPt5D,KAAMA,EACNu5D,QAASlgE,GAGA,SAAT2G,IACAs5D,EAAK8gG,OAASyG,GAASxnK,IAG3B,IAAIivD,EAAQk4G,GAAWxgK,GAEvB,GAAIsoD,EAAO,CACP,IAAIm4G,EAAYjH,GAASlxG,EAAMm4G,WAAan4G,EAAMm4G,UAAYn4G,EAAMm4G,UAAUvG,GAC1EwH,EAAgBroK,EAAMtE,OAEtB2sK,GAAiBjB,IACjBnnG,EAAKhR,MAAQ,CACTtoD,KAAMsoD,EAAMtoD,KACZ0rD,SAAUmwG,GAAa6F,GACvBtO,WAAY9qG,EAAM8qG,aAAe8G,IAK7C15I,EAAMjnB,KAAK+/D,GAGfyjD,EAAYu/C,GAAiBv/C,UAC7Bj7F,EAAQw6I,GAAiBrwI,KAAKstC,GAOlC,OAJIwjD,EAAYxjD,EAAQxkE,QACpB4rK,GAAWngJ,EAAO+4C,EAAQx5D,UAAUg9G,IAGjCv8F,EELI,CAAyB6wB,EAAQ39C,KAAK2+J,SAOjD0O,EAAYntK,UAAUqzJ,cAAgB,WAClC,OGnHO,EHmHuBvzJ,KAAK2+J,QGjH3BtG,QAAQnzF,SHwHpBmoG,EAAYntK,UAAUw3D,SAAW,WAC7B,OAAO,EAAkB13D,KAAK2+J,SAE3B0O,EA3HqB,GIHrB,GAAc,gBAAoB,IAAIA,GAAY,OHFzD/tK,IACIF,GAAgB,SAAUO,EAAGC,GAI7B,OAHAR,GAAgBG,OAAOC,gBAClB,CAAEC,UAAW,cAAgBC,OAAS,SAAUC,EAAGC,GAAKD,EAAEF,UAAYG,IACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIC,KAAKD,EAAOA,EAAEE,eAAeD,KAAIF,EAAEE,GAAKD,EAAEC,KAClET,GAAcO,EAAGC,IAErB,SAAUD,EAAGC,GAEhB,SAASG,IAAOC,KAAKC,YAAcN,EADnCP,GAAcO,EAAGC,GAEjBD,EAAEO,UAAkB,OAANN,EAAaL,OAAOY,OAAOP,IAAMG,EAAGG,UAAYN,EAAEM,UAAW,IAAIH,MAWrD,SAAUM,GAExC,SAAS4tK,IACL,OAAkB,OAAX5tK,GAAmBA,EAAOsG,MAAM3G,KAAMoB,YAAcpB,KAF/DV,GAAU2uK,EAAc5tK,GAOxB4tK,EAAa/tK,UAAUguK,eAAiB,WACpC,OAAO,IAAIb,GAAYrtK,KAAK+b,MAAM4iJ,SAKtCsP,EAAa/tK,UAAUiuK,gBAAkB,WACrC,MAAO,CACHC,iBAAkBpuK,KAAKkuK,mBAM/BD,EAAa/tK,UAAUu6B,OAAS,WAC5B,OAAQ,gBAAoB,YAAsB,CAAE90B,MAAO3F,KAAKkuK,kBAAoB,gBAAoBluK,KAAK+b,MAAMmK,YAKvH+nJ,EAAa79I,UAAY,CACrBuuI,OAAQ,UAKZsP,EAAaI,kBAAoB,CAC7BD,iBAAkB,UAnCO,CAsC/B,aIxDK,IAAIljK,GAAW3L,OAAOY,OAAO,ICChCmuK,GAAqC,WACrC,SAASA,EAAoB1zC,GACzB56H,KAAK46H,SAAWA,EAyBpB,OAVA0zC,EAAoBpuK,UAAU+oC,iBAAmB,SAAU53B,EAAKujB,GAC5D,OAAI50B,KAAK46H,UACL1vH,GAASlL,KAAK46H,WACd1vH,GAASlL,KAAK46H,UAAU96H,eAAeuR,GAChCnG,GAASlL,KAAK46H,UAAUvpH,GAGxBujB,GAGR05I,EA3B6B,GCF7BC,GAAsB,gBAAoB,IAAID,GAAoB,OCFzE,GAAwC,WACxC,IAAIlvK,EAAgB,SAAUO,EAAGC,GAI7B,OAHAR,EAAgBG,OAAOC,gBAClB,CAAEC,UAAW,cAAgBC,OAAS,SAAUC,EAAGC,GAAKD,EAAEF,UAAYG,IACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIC,KAAKD,EAAOA,EAAEE,eAAeD,KAAIF,EAAEE,GAAKD,EAAEC,KAClET,EAAcO,EAAGC,IAE5B,OAAO,SAAUD,EAAGC,GAEhB,SAASG,IAAOC,KAAKC,YAAcN,EADnCP,EAAcO,EAAGC,GAEjBD,EAAEO,UAAkB,OAANN,EAAaL,OAAOY,OAAOP,IAAMG,EAAGG,UAAYN,EAAEM,UAAW,IAAIH,IAV3C,GCSrC,SAASyuK,GAAmBtxI,GAK/B,OAD6BA,EAAUuxI,SAAWvxI,EAAUuxI,QAAQL,kBACnC,IAAIf,GAAY,MAO9C,SAASqB,GAA2BxxI,GAKvC,OADqCA,EAAUuxI,SAAWvxI,EAAUuxI,QAAQE,0BACnC,IAAIL,GAO1C,SAASM,GAAgB1xI,GAC5B,IAAI6hC,EAAM,CACNqvG,iBAAkB,UAElBlxI,EAAU2xI,aACVtvK,OAAOwB,OAAOm8B,EAAU2xI,aAAc9vG,GAGtC7hC,EAAU2xI,aAAe9vG,EAQ1B,SAAS+vG,GAAwB5xI,GACpC,IAAI6hC,EAAM,CACN4vG,yBAA0B,UAE1BzxI,EAAU2xI,aACVtvK,OAAOwB,OAAOm8B,EAAU2xI,aAAc9vG,GAGtC7hC,EAAU2xI,aAAe9vG,GDpCS,SAAU1+D,GAEhD,SAAS0uK,IACL,OAAkB,OAAX1uK,GAAmBA,EAAOsG,MAAM3G,KAAMoB,YAAcpB,KAF/D,GAAU+uK,EAAsB1uK,GAOhC0uK,EAAqB7uK,UAAU8uK,uBAAyB,WACpD,OAAO,IAAIV,GAAoBtuK,KAAK+b,MAAM6+G,WAK9Cm0C,EAAqB7uK,UAAUiuK,gBAAkB,WAC7C,MAAO,CACHQ,yBAA0B3uK,KAAKgvK,2BAMvCD,EAAqB7uK,UAAUu6B,OAAS,WACpC,OAAQ,gBAAoB8zI,GAAoBU,SAAU,CAAEtpK,MAAO3F,KAAKgvK,0BAA4B,gBAAoBhvK,KAAK+b,MAAMmK,YAKvI6oJ,EAAqB3+I,UAAY,CAC7BwqG,SAAU,UAKdm0C,EAAqBV,kBAAoB,CACrCM,yBAA0B,UAnCO,CAsCvC,aEtDK,ICAIO,GAAkB,WAAc,OAAO,aAAiBX,mHCLnE,QACc,SADd,EAEc,SAFd,EAGc,SAHd,EAKa,QCLE,SAAS10I,EAAchb,GAClC,OAAOA,EAAQgb,eAAiBhb,EAAQlH,UAAYkH,ECGxD,QAFgB,SAAUA,GAAW,OAAOgb,EAAchb,GAASib,aCEnE,EAFkB,SAAUjb,GAAW,OAAOgb,EAAchb,GAASlB,iBCFrE,IAAIwxJ,EAAc,EAEH,SAAS3tF,IACpB,IAAK2tF,GAAmC,oBAAbx3J,SAA0B,CACjD,IAAIqlB,EAAMrlB,SAASE,cAAc,OAEjCmlB,EAAIzV,MAAM65D,QAAU,oEACpBpkD,EAAI5R,UAAY,SAChBzT,SAASjT,KAAKqwD,YAAY/3B,GAE1BmyI,EAAcnyI,EAAI3C,YAAc2C,EAAIqkD,YAEpC1pE,SAASjT,KAAKi4D,YAAY3/B,GAG9B,OAAOmyI,ECXI,SAASC,EAAevwJ,GACnC,IAAIwwJ,EAAM,EAAIxwJ,GACVlH,EAAW,EAAYkH,GACvBpY,EAAS,CACTke,OAAQ0qJ,EAAIC,YACZ5qJ,MAAO2qJ,EAAIE,YAOf,OAJI53J,EAASszB,aAAetzB,EAAS6uC,aAAe,IAChD//C,EAAOie,OAAS88D,KAGb/6E,ECWX,MCfA,EAVmB,SAAUoY,GAGzB,IAFA,IAAI2wJ,EAAe3wJ,EAAQ2wJ,aAEpBA,GAAgD,WAAhCA,EAAajoJ,MAAMsW,UACtC2xI,EAAeA,EAAaA,aAGhC,OAAOA,GAAgB,EAAgB3wJ,IC2B3C,EAjBa,SAAUA,GACnB,IAAI0nC,EAAO1nC,EAAQskC,wBACflyB,EAAOs1B,EAAKt1B,KACZ6M,EAAMyoB,EAAKzoB,IAMf,OAJKyoB,EAAK5hC,QAAW4hC,EAAK7hC,QACtB6hC,EAzBkB,SAAU1nC,GAChC,IAAIke,EAAMle,EAAQ0I,MACdm/B,EAAU3pB,EAAI2pB,QACdz1B,EAAO8L,EAAI9L,KACX4M,EAAWd,EAAIc,SAEnBhf,EAAQ0I,MAAMm/B,QAAU,GACxB7nC,EAAQ0I,MAAM0J,KAAO,WACrBpS,EAAQ0I,MAAMsW,SAAW,WAEzB,IAAI0oB,EAAO1nC,EAAQskC,wBAMnB,OAJAtkC,EAAQ0I,MAAMm/B,QAAUA,EACxB7nC,EAAQ0I,MAAM0J,KAAOA,EACrBpS,EAAQ0I,MAAMsW,SAAWA,EAElB0oB,EASIkpH,CAAoB5wJ,IAGxB,CACHif,IAAKA,EACL7M,KAAMA,EACNtM,OAAQ4hC,EAAK5hC,OACbD,MAAO6hC,EAAK7hC,QChCL,SAAS,EAAC7F,EAAS6wJ,GAI9B,IAHA,IAAIjpK,EAAS,GACTtB,EAAO0Z,EAAQkvB,WAEZ5oC,IACHsB,EAAOZ,KAAKV,GAERA,IAASuqK,IAEbvqK,EAAOA,EAAK4oC,WAGhB,OAAOtnC,ECTI,SAASgnD,EAAe5uC,GACnC,IAAIlB,EAAkB,EAAWkB,GAC7BwwJ,EAAM,EAAIxwJ,GAEd,MAAO,CACHqE,EAAGmsJ,EAAIzuD,aAAejjG,EAAgB6vC,YAAc,EACpD5oD,EAAGyqK,EAAI3uD,aAAe/iG,EAAgBotB,WAAa,GCP5C,SAAS,EAAClsB,GACrB,OAAIA,KAAaA,EAAQgb,eAAiB,IAAIn1B,KACnC+oD,EAAe5uC,GAGnB,CACHqE,EAAGrE,EAAQ2uC,WACX5oD,EAAGia,EAAQksB,WCsBnB,MC/BA,EAEY,OCCZ,IAAI4kI,EAAM,SAAS9xI,EAAU5a,EAAM2sJ,GAC/B,IAAI9kK,EAAS,EAUb,OARI+yB,EAAW5a,EAAO2sJ,IAClB9kK,EAAS8kK,GAAgB/xI,EAAW5a,IAGpC4a,EAAW,IACX/yB,GAAU+yB,GAGP/yB,GAGP2kB,EAAO,SAASsN,GAChB,IAAItV,EAASsV,EAAItV,OACbxE,EAAO8Z,EAAI9Z,KACX4sJ,EAAa9yI,EAAI8yI,WACjBD,EAAe7yI,EAAI6yI,aACnBE,EAAmB/yI,EAAI+yI,iBACvBC,EAAoBhzI,EAAIgzI,kBAGxBjlK,EAAS,EAITklK,EAAc,EANLjzI,EAAIy1G,OAQjB,GAAIu9B,IAAsBD,GAJDC,IAAsB,GAAqBA,IAAsB,GACnED,IAAqB,GAAqBA,IAAqB,EAGE,CACpF,IAAIG,Ed3BD,Qc2BkBH,Gd7BjB,Sc6BwDA,EACxDroJ,EAAS,GAAKwoJ,EAEVxoJ,GADJ3c,EAASmY,EAAO4sJ,EAAaG,GACP/sJ,EAAO2sJ,IACzB9kK,EAAS,GAEN2c,GAAU,IAAMwoJ,IACnBxoJ,EAASxE,EAAO2sJ,IAChB9kK,KAAY+kK,EAAa5sJ,EAAO+sJ,IAGhCvoJ,EAAS3c,EAAS,IAClBA,EAAS,IAKrB,OAAOA,GClDI,SAAS,EAAC+T,GAKrB,IAJA,IAAIpY,EAAS,GAETypK,EAAUrxJ,EAAQkvB,WAAW+3E,kBAE1BoqD,GACCA,IAAYrxJ,GACZpY,EAAOZ,KAAKqqK,GAGhBA,EAAUA,EAAQC,mBAEtB,OAAO1pK,ECPI,SAAS,EAACuqC,EAAQzkB,GAM7B,IALA,IAEI6jJ,EACA3pK,EAHA4pK,EAAiBxjD,EAAQ77E,GACzBs/H,EAAmB/jJ,EAIhB+jJ,IACHF,EAAkBG,EAASD,KAE3B7pK,EAAS4pK,EAAe1sJ,QACpB,SAAUymB,EAAMvqC,GAAK,OAAOuqC,EAAKtwB,OAAOs2J,EAAgBr2J,QAAO,SAAU9Y,GAAK,OAAOA,IAAMpB,QAC3F,IACF,MAIFywK,EAAmBA,EAAiBjxH,cAGxC,OAAO54C,ECnBJ,ICJCrH,EDIGoxK,EAAa,SAAUjqH,EAAM9+B,GACpC,OAAK8+B,GACM,CAAE5hC,OAAQ,EAAGsM,KAAMxJ,EAAOwJ,KAAM6M,IAAKrW,EAAOqW,IAAKpZ,MAAO,IAiD5D+rJ,EAAkB,cAIzBC,EAAgB,SAAU7xJ,GAC1B,IAAIiB,EAASxM,OAAOymB,iBAAiBlb,GACrC,MAAO,GAAKiB,EAAOk1H,SAAWl1H,EAAO6wJ,UAAY7wJ,EAAOstB,WA2CjDwjI,EAhB6B,WACpC,IAAK,KACD,OAAO,EAEX,IACIzxH,EAASxnC,SAASE,cAAc,OACpCsnC,EAAO53B,MAAMxD,UAAY,6BACzBo7B,EAAO/zB,UAAY,uDACnBzT,SAASjT,KAAKqwD,YAAY5V,GAC1B,IAAI0xH,EALM,KAKQ1xH,EAAOj5B,SAAS,GAAGi9B,wBAAwBrlB,IAE7D,OADAnmB,SAASjT,KAAKi4D,YAAYxd,GACnB0xH,EAKgCC,GAsBhCC,EACF,MADEA,EAED,OAKCC,EACD,OADCA,EAEC,SAFDA,EAGA,QAHAA,EAIC,SAJDA,EAKF,MEvILC,EAA8B,WAC9B,SAASA,EAAaC,GAClBlxK,KAAKkxK,KAAOA,EAkChB,OAhCAD,EAAa/wK,UAAUixK,aAAe,SAAUtzH,GAC5C,IAAI7M,EAAS6M,EAAS7M,OAAQnyB,EAAUg/B,EAASh/B,QAASmwD,EAAcnxB,EAASmxB,YAAaoiG,EAAevzH,EAASuzH,aAAc3pJ,EAASo2B,EAASp2B,OAElJ4pJ,EADarxK,KAAKkxK,KAAKI,gBAAgBzyJ,GAGvC7e,KAAKuxK,aAAavgI,EAAQnyB,EAAS4I,GADnCznB,KAAKwxK,aAAaxgI,EAAQnyB,EAAS4I,GAEvC,OAAOznB,KAAKkxK,KAAKt0F,MAAM,CACnB5N,YAAaA,EACbqiG,WAAYA,EACZD,aAAcA,EACdK,YAAazxK,KAAKkxK,KAAKzpJ,OAAO5I,MAGtCoyJ,EAAa/wK,UAAUsxK,aAAe,SAAUxgI,EAAQnyB,EAAS4I,GAC7D,IFOoC8+B,EAAMmrH,EEPtCv0G,EAAMn9D,KAAKkxK,KAGXS,GFIgCprH,EENzBiqH,EAAWrzG,EAAI11C,OAAOupB,GAASvpB,IFMAiqJ,EELrBv0G,EAAIy0G,sBAAsB/yJ,IFStC,CACT8F,OAAQ4hC,EAAK5hC,OACbsM,KAAMs1B,EAAKt1B,KAAOygJ,EAAezgJ,KACjC6M,IAAKyoB,EAAKzoB,IAAM4zI,EAAe5zI,IAC/BpZ,MAAO6hC,EAAK7hC,OANL6hC,GELHsrH,EAAiB10G,EAAI20G,sBAAsBjzJ,GAC3CkzJ,EAAa50G,EAAI60G,UAAUL,EAAeE,GAC1CpkH,EAAiBztD,KAAKiyK,sBAAsBjhI,EAAQnyB,GACpDpY,EAAS02D,EAAI+0G,aAAaH,EAAYtkH,GAG1C,OAFAhnD,EAAOwqB,MAAQ3d,OAAO6+J,SAAW7+J,OAAOstG,YACxCn6G,EAAOq3B,KAAOxqB,OAAO8+J,SAAW9+J,OAAOotG,YAChCj6G,GAEXwqK,EAAa/wK,UAAU+xK,sBAAwB,SAAUjhI,EAAQnyB,GAC7D,OAAOmyB,EAAS,CAAE9tB,EAAG,EAAGte,EAAG,GAAM5E,KAAKkxK,KAAKzjH,eAAe5uC,IAE9DoyJ,EAAa/wK,UAAUqxK,aAAe,SAAUvgI,EAAQnyB,EAAS4I,GAC7D,OAAO+oJ,EAAWxwK,KAAKkxK,KAAKrzI,SAASmT,EAAQnyB,GAAU4I,IAEpDwpJ,EApCsB,GCE7B33G,EAA4B,WAC5B,SAASA,KAkIT,OAhIAA,EAAWp5D,UAAUmyK,UAAY,SAAUrtI,EAASstI,GAChD,MAAO,CACHrhJ,KAAM+T,EAAQ/T,KAAOqhJ,EAASrhJ,KAC9B6M,IAAKkH,EAAQlH,IAAMw0I,EAASx0I,MAGpCw7B,EAAWp5D,UAAU08E,MAAQ,SAAU/+B,GACnC,OCdI,SAAUj8C,GAClB,IAAIyvK,EAAazvK,EAAQyvK,WACrBriG,EAAcptE,EAAQotE,YACtByiG,EAAc7vK,EAAQ6vK,YACtBL,EAAexvK,EAAQwvK,aACvB5+B,EAAS5wI,EAAQ4wI,YAAwB,IAAXA,IAAoBA,EAAS,IAC/D,IAAI+/B,EAAmBvjG,EAAYnU,WAC/B23G,EAAiBxjG,EAAYC,SAC7BwjG,EAAoBrB,EAAav2G,WACjC63G,EAAkBtB,EAAaniG,SAE/B0jG,EAAmBngC,EAAO33E,YAAc,EACxC+3G,EAAiBpgC,EAAOvjE,UAAY,EAEpCnxC,EAAMuzI,EAAWvzI,IACjB7M,EAAOogJ,EAAWpgJ,KAsCtB,OApCIuhJ,IAAmB,IACnB10I,GAAOuzI,EAAW1sJ,QAGlB6tJ,IAAmB,GAAgBA,IAAmB,IACtD10I,GAAOva,KAAKqqE,MAAMyjF,EAAW1sJ,OAAS,IAGtC+tJ,IAAoB,IACpB50I,GAAO2zI,EAAY9sJ,OACnBiuJ,IAAmB,GAGnBF,IAAoB,GAAgBA,IAAoB,IACxD50I,GAAOva,KAAKqqE,MAAM6jF,EAAY9sJ,OAAS,GACvCiuJ,IAAmB,GAGnBL,IAAqB,IACrBthJ,GAAQogJ,EAAW3sJ,OAGnB6tJ,IAAqB,GAAgBA,IAAqB,IAC1DthJ,GAAQ1N,KAAKqqE,MAAMyjF,EAAW3sJ,MAAQ,IAGtC+tJ,IAAsB,IACtBxhJ,GAAQwgJ,EAAY/sJ,MACpBiuJ,IAAqB,GAGrBF,IAAsB,GAAgBA,IAAsB,IAC5DxhJ,GAAQ1N,KAAKqqE,MAAM6jF,EAAY/sJ,MAAQ,GACvCiuJ,IAAqB,GAGlB,CACH70I,IAAKA,EAAM80I,EACX3hJ,KAAMA,EAAO0hJ,GDzCN,CAAM90H,IAEjByb,EAAWp5D,UAAU2yK,eAAiB,SAAU9zI,GAC5C,OdjBa,SAAUlgB,GAC3B,IAAKA,EAAQskC,sBAAuB,CAChC,IAAI2vH,EAAW1D,EAAevwJ,GAC9B,MAAO,CACHwyC,OAAQyhH,EAASnuJ,OACjBsM,KAAM,EACND,MAAO8hJ,EAASpuJ,MAChBoZ,IAAK,GAIb,IAAIf,EAAMle,EAAQskC,wBAMlB,MAAO,CACHkO,OANSt0B,EAAIs0B,OAObpgC,KANO8L,EAAI9L,KAOXD,MANQ+L,EAAI/L,MAOZ8M,IANMf,EAAIe,KcEH,CAAeiB,IAE1Bu6B,EAAWp5D,UAAU6yK,UAAY,WAC7B,OAAO,KAAYz/J,OAAS,MAEhCgmD,EAAWp5D,UAAU8yK,aAAe,SAAUj0I,GAC1C,OEvBwC,EAAnBlgB,EFuBDkgB,KEvB8ClgB,EAAQgb,cAAcn1B,KAA7E,IAAUma,GFyBzBy6C,EAAWp5D,UAAUoxK,gBAAkB,SAAUvyI,GAC7C,IAAKA,EACD,OAAO,EAEX,IAAIk0I,EAAiBl0I,EAAGywI,aACxB,OAAOyD,KAC2B,SAA5BA,EAAevrI,UACwC,WAArDp0B,OAAOymB,iBAAiBk5I,GAAgBp1I,WAEpDy7B,EAAWp5D,UAAUunB,OAAS,SAAUsX,GACpC,OAAKA,EAGE,EAAOA,GAFH,MAIfu6B,EAAWp5D,UAAU0vD,aAAe,SAAU/wC,GAC1C,IAAKA,EACD,OAAO,KAEX,IAAIxa,EAAKwa,EAAQ0I,MAAO0J,EAAO5sB,EAAG4sB,KAAM6M,EAAMz5B,EAAGy5B,IACjDjf,EAAQ0I,MAAM0J,KAAO,MACrBpS,EAAQ0I,MAAMuW,IAAM,MACpB,IAAIo1I,EAAgB,EAAOr0J,GAG3B,OAFAA,EAAQ0I,MAAM0J,KAAOA,EACrBpS,EAAQ0I,MAAMuW,IAAMA,EACbo1I,GAEX55G,EAAWp5D,UAAU29B,SAAW,SAAUhf,EAASwwD,GAC/C,OAAKxwD,GAAYwwD,EGnDV,SAAUxwD,EAASsgC,EAAQgoD,QACvB,IAAVA,IAAmBA,EAAQ,GAEhC,IAAIgsE,EAAsBh0H,EAAS,EAAaA,GAAU,KACtDpiB,EXJO,SAAUle,EAASsgC,GAC9B,IAAIkwH,EAAM,EAAIxwJ,GACVukF,EAAgBisE,EAAIt1I,iBAAiBlb,GACrC4I,EAAS,EAAW5I,GACpBwgC,EAAgBF,GAAU,EAAatgC,GAEvCgb,EAAgBhb,EAAQgb,cACxBu5I,EAAc/zH,IAAkBxlB,EAAcn1B,MAAQ26C,IAAkBxlB,EAAclc,gBAEtF01J,EAAe,CAAEv1I,IAAK,EAAG7M,KAAM,GAEnC,GAA+B,UAA3BmyE,EAAcvlE,UAAwBu1I,EAAa,CACnD,IAAIE,EAAejE,EAAIt1I,iBAAiBslB,IAExCg0H,EAAe,EAAWh0H,IACbvhB,KAAOyH,SAAS+tI,EAAaC,eAAgB,IAC1DF,EAAapiJ,MAAQsU,SAAS+tI,EAAaE,gBAAiB,IAGhE,MAAO,CACH11I,IAAKrW,EAAOqW,IAAMu1I,EAAav1I,IAC/B7M,KAAMxJ,EAAOwJ,KAAOoiJ,EAAapiJ,KACjCtM,OAAQ8C,EAAO9C,OACfD,MAAO+C,EAAO/C,OWnBR,CAAS7F,EAASs0J,GACxBr1I,EAAMf,EAAIe,IACV7M,EAAO8L,EAAI9L,KACXtM,EAASoY,EAAIpY,OACbD,EAAQqY,EAAIrY,MACZw3F,ECVO,SAAUi3D,EAAqBt0J,GAAW,OACrDs0J,EAAsB,EAAsBA,GCDjC,SAA8Bt0J,GACzC,IAAIsgC,EAAS,EAAatgC,GAE1B,OAAOsgC,EAAS,EAAsBA,GAAU,CAAEj8B,EAAG,EAAGte,EAAG,GDFQ6uK,CAAqB50J,GDS5E,CAA2Bs0J,EAAqBt0J,GACxDqE,EAAIg5F,EAAMh5F,EACVte,EAAIs3G,EAAMt3G,EACVi1B,EAAgBhb,EAAQgb,cACxB65I,EAAgBP,IAAwBt5I,EAAcn1B,MAAQyuK,IAAwBt5I,EAAclc,gBAAkB,EAAIwpF,EAE9H,MAAO,CACHrpE,IAAKA,EAAMl5B,EAAI8uK,EACfziJ,KAAMA,EAAO/N,EAAIwwJ,EACjB/uJ,OAAQA,EACRD,MAAOA,GHoCA,CAAmB7F,EADN,EAAiBA,EAASwwD,IAFnC,MAKf/V,EAAWp5D,UAAUyzK,eAAiB,SAAU50I,EAAI60I,GAChD,OM9DoCrtH,EN8DTvmD,KAAKynB,OAAOsX,GM9DGkiF,EN8DE2yD,EM9DQC,EN8DS7zK,KAAKgzK,aAAaj0I,GM7D/EjB,EAAMyoB,EAAKzoB,IACX7M,EAAOs1B,EAAKt1B,KAEZ4iJ,IACA5iJ,EAAO,EACP6M,EAAM,GAGH,CACHA,IAAKA,EAAMmjF,EAASnjF,IACpB7M,KAAMA,EAAOgwF,EAAShwF,KACtBtM,OAAQ4hC,EAAK5hC,OACbD,MAAO6hC,EAAK7hC,OAbL,IAA6B6hC,EAAM06D,EAAU4yD,EACpD/1I,EACA7M,GN8DJqoC,EAAWp5D,UAAU8xK,UAAY,SAAUzrH,EAAMutH,GAC7C,OOjEO,SAAmBvtH,EAAMutH,GACpC,MAAO,CACHh2I,IAAKyoB,EAAKzoB,IAAMg2I,EAAOlvK,EACvBqsB,KAAMs1B,EAAKt1B,KAAO6iJ,EAAO5wJ,EACzByB,OAAQ4hC,EAAK5hC,OACbD,MAAO6hC,EAAK7hC,OP4DLstJ,CAAUzrH,EAAMutH,IAE3Bx6G,EAAWp5D,UAAUgyK,aAAe,SAAU3rH,EAAMutH,GAChD,OQpEO,SAAsBvtH,EAAMutH,GACvC,MAAO,CACHh2I,IAAKyoB,EAAKzoB,IAAMg2I,EAAOlvK,EACvBqsB,KAAMs1B,EAAKt1B,KAAO6iJ,EAAO5wJ,EACzByB,OAAQ4hC,EAAK5hC,OACbD,MAAO6hC,EAAK7hC,OR+DLwtJ,CAAa3rH,EAAMutH,IAE9Bx6G,EAAWp5D,UAAU6zK,eAAiB,SAAUl2H,GAC5C,ONlBa,SAAUj8C,GAC3B,IAAIyvK,EAAazvK,EAAQyvK,WACrBriG,EAAcptE,EAAQotE,YACtByiG,EAAc7vK,EAAQ6vK,YACtBL,EAAexvK,EAAQwvK,aACvB4C,EAAapyK,EAAQoyK,WACrBC,EAAWryK,EAAQqyK,SACnBzhC,EAAS5wI,EAAQ4wI,YAAwB,IAAXA,IAAoBA,EAAS,IAC/D,IAAI0hC,EAAazC,EAAY3zI,IACzBq2I,EAAc1C,EAAYxgJ,KAC1BmjJ,EAAgB3C,EAAY9sJ,OAC5B0vJ,EAAe5C,EAAY/sJ,MAC3B4vJ,EAAiBL,EAAStvJ,OAC1B4vJ,EAAgBN,EAASvvJ,MACzBiuJ,EAAmBngC,EAAO33E,YAAc,EACxC+3G,EAAiBpgC,EAAOvjE,UAAY,EAEpCh+C,EAAO,EACP6M,EAAM,EAEN02I,EAAmBR,EAAWn5G,aAAe45G,EAC7CC,EAAiBV,EAAW/kG,WAAawlG,EDzEtC,QC2EHT,EAAW/kG,WACXnxC,GAAO6xI,EAAIuE,EAAYE,EAAeE,ID5EnC,QC+EHN,EAAWn5G,aACX5pC,GAAQ0+I,EAAIwE,EAAaE,EAAcE,IAGvCG,IACA52I,GAAOrO,EAAK,CACR+iH,OAAQogC,EACRnrJ,OAAQysJ,EACRjxJ,KAAMmxJ,EACNvE,WAAYwB,EAAW1sJ,OACvBirJ,aAAc0E,EACdxE,iBAAkB9gG,EAAYC,SAC9B8gG,kBAAmBqB,EAAaniG,YAIpCulG,IACAvjJ,GAAQxB,EAAK,CACT+iH,OAAQmgC,EACRlrJ,OAAQ0sJ,EACRlxJ,KAAMoxJ,EACNxE,WAAYwB,EAAW3sJ,MACvBkrJ,aAAc2E,EACdzE,iBAAkB9gG,EAAYnU,WAC9Bk1G,kBAAmBqB,EAAav2G,cAGxC,IAAI85G,EAAoBH,GAA6B,IAATvjJ,EACxC2jJ,EAAkBF,GAA0B,IAAR52I,EAExC,MAAO,CACH+2I,QAASF,GAAqBC,EAC9BnlJ,KAAM,CACForC,WAAY85G,EACZ1lG,SAAU2lG,GAEdntJ,OAAQ,CACJwJ,KAAMA,EACN6M,IAAKA,IM/CF,CAAe+f,IAE1Byb,EAAWp5D,UAAUutD,eAAiB,SAAU1uB,GAC5C,OAAO0uB,EAAe1uB,IAE1Bu6B,EAAWp5D,UAAU40K,kBAAoB,SAAU/1I,GAC/C,OHVuB,SAAUlgB,GACrC,IAAIwxJ,EAAiB,GACrB,IAAK,KACD,OAAOA,EAGX,IADA,IAAIlxH,EAAStgC,EAAQwgC,cACdF,GACCsxH,EAAgBrwJ,KAAKswJ,EAAcvxH,KACnCkxH,EAAexqK,KAAKs5C,GAExBA,EAASA,EAAOE,cAGpB,OADAgxH,EAAexqK,KAAKyN,QACb+8J,EGHIyE,CAAkB/1I,IAE7Bu6B,EAAWp5D,UAAU0xK,sBAAwB,SAAU7yI,GACnD,IAAIg2I,EAAyB/0K,KAAKg1K,0BAA0Bj2I,GAC5D,OAAKg2I,EAGE,EAAOA,GAFH,MAIfz7G,EAAWp5D,UAAU4xK,sBAAwB,SAAU/yI,GACnD,IAAIg2I,EAAyB/0K,KAAKg1K,0BAA0Bj2I,GAC5D,OAAKg2I,EAGE,CACH7xJ,EAAG6xJ,EAAuBvnH,WAC1B5oD,EAAGmwK,EAAuBhqI,WAJnB,CAAE7nB,EAAG,EAAGte,EAAG,IAO1B00D,EAAWp5D,UAAU+0K,wBAA0B,SAAUl2I,GACrD,IAAIg2I,EAAyB/0K,KAAKg1K,0BAA0Bj2I,GAC5D,OAAKg2I,EAGE,CACHpwJ,OAAQowJ,EAAuB9pI,aAC/BvmB,MAAOqwJ,EAAuB1zF,aAJvB,MAOf/nB,EAAWp5D,UAAU80K,0BAA4B,SAAUj2I,GACvD,IAAKA,IAAO6xI,EACR,OAAO,KAGX,IADA,IAAIzxH,EAASpgB,EAAGsgB,cACTF,GAAQ,CACX,GAAkD,SAA9C7rC,OAAOymB,iBAAiBolB,GAAQp7B,UAChC,OAAOo7B,EAEXA,EAASA,EAAOE,cAEpB,OAAO,MAEXia,EAAWp5D,UAAUg1K,oBAAsB,SAAUn2I,GACjD,QAAS/+B,KAAKg1K,0BAA0Bj2I,IAE5Cu6B,EAAWp5D,UAAUi1K,eAAiB,SAAUp2I,GAC5C,OAAO,EAAkBA,IAE7Bu6B,EAAWp5D,UAAU0wC,OAAS,SAAUI,EAAQzkB,GAC5C,OHjBY,SAAUykB,EAAQzkB,GAClC,IAAKykB,IAAW,KACZ,OAAO,KAEX,IAAIk/H,EAAU,EAAiBl/H,EAAQzkB,GACvC,IAAK2jJ,EACD,OAAO,KAEX,IAAIzpK,EAAS,CAACuqC,GAAQl3B,OAAO+yG,EAAQ77E,EAAQk/H,IAAUvsJ,QAAO,SAAUlc,EAAO5H,GAC3E,IAAIu1K,EAAcv1K,EAAE0nB,MAAMqpB,QAAUt9B,OAAOymB,iBAAiBl6B,GAAG+wC,OAC3D5L,EAAUO,SAAS6vI,EAAa,IACpC,OAAOpwI,EAAUv9B,EAAQu9B,EAAUv9B,IACpC,GACH,OAAOhB,EAAUA,EAAS,EAAK,KGIpBmqC,CAAOI,EAAQzkB,IAE1B+sC,EAAWp5D,UAAUm1K,UAAY,WAC7B,OAAK,KAGEpoJ,YAAYtV,SAASgG,gBAAgBulC,YAAc5vC,OAAOi8J,YAAYlwE,QAAQ,IAF1E,GAIf/lC,EAAWp5D,UAAUo1K,SAAW,WAC5B,OAAOt1K,KAAKq1K,YAAc,GAEvB/7G,EAnIoB,GSF3Bi8G,EAAiC,WACjC,SAASA,EAAgBrE,GACrBlxK,KAAKkxK,KAAOA,EAyBhB,OAvBAqE,EAAgBr1K,UAAUs1K,gBAAkB,SAAU33H,GAClD,IZK6B0I,EAAM9+B,EYL/BupB,EAAS6M,EAAS7M,OAAQ4iI,EAAkB/1H,EAAS+1H,gBAAiB/0J,EAAUg/B,EAASh/B,QAASmwD,EAAcnxB,EAASmxB,YAAaoiG,EAAevzH,EAASuzH,aAAc4C,EAAan2H,EAASm2H,WAClM72G,EAAMn9D,KAAKkxK,KACX+C,EAAWp2H,EAASo2H,UAAY92G,EAAI83G,wBAAwBp2J,IAAYs+C,EAAIg4G,eAAet2J,GAC3FwyJ,EAAab,EAAWrzG,EAAI11C,OAAOupB,GAAS4iI,GAC5C6B,GZCyBlvH,EYDU4W,EAAIvN,aAAa/wC,IZCrB4I,EYD+BmsJ,GZKzD,CACTjvJ,OAAQ4hC,EAAK5hC,OACbsM,KAAMxJ,EAAOwJ,KACb6M,IAAKrW,EAAOqW,IACZpZ,MAAO6hC,EAAK7hC,OANL6hC,GYFHkrH,EAAczxK,KAAKyxK,YAAY5yJ,EAAS42J,GACxChvK,EAAS02D,EAAI42G,eAAe,CAC5B/kG,YAAaA,EACbqiG,WAAYA,EACZ2C,WAAYA,EACZ5C,aAAcA,EACdK,YAAaA,EACbwC,SAAUA,IAEd,MAAO,CACHY,QAASpuK,EAAOouK,QAChBptJ,OAAQ01C,EAAIk1G,UAAUoD,EAAoBhvK,EAAOghB,UAGzD8tJ,EAAgBr1K,UAAUuxK,YAAc,SAAU5yJ,EAAS0nC,GACvD,OAAOvmD,KAAKkxK,KAAKgB,aAAa3rH,EAAMvmD,KAAKkxK,KAAKzjH,eAAe5uC,KAE1D02J,EA3ByB,GXJhCj2K,GACIF,EAAgB,SAAUO,EAAGC,GAI7B,OAHAR,EAAgBG,OAAOC,gBAClB,CAAEC,UAAW,cAAgBC,OAAS,SAAUC,EAAGC,GAAKD,EAAEF,UAAYG,IACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIC,KAAKD,EAAOA,EAAEE,eAAeD,KAAIF,EAAEE,GAAKD,EAAEC,KAClET,EAAcO,EAAGC,IAErB,SAAUD,EAAGC,GAEhB,SAASG,IAAOC,KAAKC,YAAcN,EADnCP,EAAcO,EAAGC,GAEjBD,EAAEO,UAAkB,OAANN,EAAaL,OAAOY,OAAOP,IAAMG,EAAGG,UAAYN,EAAEM,UAAW,IAAIH,KAGnFe,EAAsC,WAStC,OARAA,EAAWvB,OAAOwB,QAAU,SAASC,GACjC,IAAK,IAAIC,EAAGC,EAAI,EAAGC,EAAIC,UAAUC,OAAQH,EAAIC,EAAGD,IAE5C,IAAK,IAAIrB,KADToB,EAAIG,UAAUF,GACO3B,OAAOW,UAAUJ,eAAeY,KAAKO,EAAGpB,KACzDmB,EAAEnB,GAAKoB,EAAEpB,IAEjB,OAAOmB,GAEJF,EAAS6F,MAAM3G,KAAMoB,YAY5Bs0K,EAAiB,CACjBzkJ,MAAO,IACP6M,IAAK,GAGL63I,EAA4B,8BAC5BC,EAAU,UACVC,EAAiB,SAAUv8J,GAC3B,OAAO,cAAqBA,IA2PhC,QAzP2B,SAAUjZ,GAEjC,SAASy1K,EAAM/5J,GACX,IAAIvb,EAAQH,EAAOK,KAAKV,KAAM+b,IAAU/b,KA+DxC,OA9DAQ,EAAMu1K,mBAAoB,EAC1Bv1K,EAAMw1K,WAAY,EAClBx1K,EAAMy1K,SAAW,WACb,IAAIp3J,EAAUg3J,EAAer1K,GACzBA,EAAMub,MAAMmtB,MACZrqB,EAAQgR,UAAUmyC,IAAI2zG,GAE1Bn1K,EAAM01K,yBAAyBr3J,GAC3Bre,EAAMub,MAAM9R,MACZzJ,EAAMub,MAAM9R,KAAKvJ,UAAKgQ,EAAW,CAAES,OAAQ3Q,IAE3CA,EAAMub,MAAMgzB,QACZvuC,EAAMub,MAAMgzB,OAAOruC,UAAKgQ,EAAW,CAAES,OAAQ3Q,KAGrDA,EAAM21K,UAAY,WACT31K,EAAMub,MAAMmtB,MACC2sI,EAAer1K,GACrBqvB,UAAUkyC,OAAO4zG,GAE7Bn1K,EAAM41K,4BAEV51K,EAAM61K,SAAW,WACT71K,EAAMu1K,oBACNv1K,EAAMu1K,mBAAoB,EAC1Bv1K,EAAMmtC,eAENntC,EAAMub,MAAMrI,OACZlT,EAAMub,MAAMrI,MAAMhT,UAAKgQ,EAAW,CAAES,OAAQ3Q,IAE5CA,EAAMub,MAAMizB,SACZxuC,EAAMub,MAAMizB,QAAQtuC,UAAKgQ,EAAW,CAAES,OAAQ3Q,KAGtDA,EAAMq9B,SAAW,SAAUggB,EAAUh/B,EAASy3J,GAC1C,IAAItnG,EAAcnxB,EAASmxB,YAAaE,EAAarxB,EAASqxB,WAAYulG,EAAY52H,EAAS42H,UAAWhtJ,EAASo2B,EAASp2B,OACxH8uJ,EAAgB/1K,EAAMg2K,cAAcrF,aAAa,CACjDngI,OAAQslI,EACRz3J,QAASA,EACTuyJ,aAAcliG,EACdF,YAAaA,EACbvnD,OAAQA,IAUZ,OARajnB,EAAMi2K,iBAAiBjB,gBAAgB,CAChDxkI,OAAQslI,EACRtnG,YAAaA,EACbglG,WAAYS,EACZ51J,QAASA,EACT+0J,gBAAiB2C,EACjBnF,aAAcliG,KAItB1uE,EAAMk2K,UAAW,EACjBl2K,EAAMkmH,QAAUlmH,EAAMub,MAAM0L,OAC5BjnB,EAAMw1K,UAAYj6J,EAAMmtB,KACxB1oC,EAAMm2K,YAAc,IAAIr9G,EACxB94D,EAAMg2K,cAAgB,IAAIvF,EAAazwK,EAAMm2K,aAC7Cn2K,EAAMi2K,iBAAmB,IAAIlB,EAAgB/0K,EAAMm2K,aACnDn2K,EAAMy1K,SAAWz1K,EAAMy1K,SAASvlJ,KAAKlwB,GACrCA,EAAM21K,UAAY31K,EAAM21K,UAAUzlJ,KAAKlwB,GACvCA,EAAMo2K,WDmCQ,SAAU/uJ,EAAMgvJ,EAAMj1K,GAExC,IAAI4H,EAASilK,EAASz/J,EAAMvI,OADZ,IAAZ7E,IAAsBA,EAAU,IAEpC,IAAIy3G,EAAW,EACfz3G,EAAUA,GAAW,GACrB,IAAIk1K,EAAQ,WACRz9D,GAA+B,IAApBz3G,EAAQm1K,QAAoB,GAAI,IAAI3uK,MAAOyoB,UACtDrnB,EAAU,KACV/C,EAASohB,EAAKlhB,MAAM8nK,EAASz/J,GACxBxF,IACDilK,EAAUz/J,EAAO,OA2BzB,OAxBgB,WACZ,IAAIuD,GAAM,IAAInK,MAAOyoB,UAChBwoF,IAAgC,IAApBz3G,EAAQm1K,UACrB19D,EAAW9mG,GAEf,IAAIuQ,EAAY+zJ,GAAQtkK,EAAM8mG,GAiB9B,OAhBAo1D,EAAUzuK,KACVgP,EAAO5N,UACH0hB,GAAa,GAAKA,EAAY+zJ,GAC1BrtK,IACA+H,aAAa/H,GACbA,EAAU,MAEd6vG,EAAW9mG,EACX9L,EAASohB,EAAKlhB,MAAM8nK,EAASz/J,GACxBxF,IACDilK,EAAUz/J,EAAO,OAGfxF,IAAgC,IAArB5H,EAAQo1K,WACzBxtK,EAAUqH,WAAWimK,EAAOh0J,IAEzBrc,GCtEYwwK,CAASz2K,EAAMo2K,WAAWlmJ,KAAKlwB,GDxB9B,oBCyBbA,EAqLX,OAtPAlB,EAAUw2K,EAAOz1K,GAsEjBy1K,EAAM51K,UAAUmzC,mBAAqB,WACjCrzC,KAAKg2K,UAAYh2K,KAAK+b,MAAMmtB,MAKhC4sI,EAAM51K,UAAUokC,qBAAuB,WACnCtkC,KAAKo2K,4BAKTN,EAAM51K,UAAUu6B,OAAS,WACrB,IAAIp2B,EAAKrE,KAAK+b,MAAOmK,EAAW7hB,EAAG6hB,SAAU+I,EAAY5qB,EAAG4qB,UAAWy/C,EAAarqE,EAAGqqE,WAAYxlC,EAAO7kC,EAAG6kC,KAAM37B,EAAKlJ,EAAGkJ,GAAItH,EAAK5B,EAAGirE,SAAUA,OAAkB,IAAPrpE,EAAgB,KAAY0R,SAASjT,UAAOgM,EAAYzK,EACpN,GAAIijC,EAAM,CACN,IAAIguI,EAAcl3K,KAAKm3K,kBAAkBn3K,KAAK+b,MAAOuzD,GACrDtvE,KAAK0mH,QAAUwwD,EAAYzvJ,OAC3BznB,KAAK02K,WAAaQ,EAAYrC,QAElC,IAAIn3I,EAAY19B,KAAK02K,UAAYxtI,EAAO,KAAO,OAC3CT,EAAKzoC,KAAKm8B,mBAAoBrB,EAA0B2N,EAAG3N,wBAAyBC,EAAyB0N,EAAG1N,uBAChHxT,EAAQhoB,OAAOwB,OAAO,GAAI,CAAE88B,SAAU,YAAc79B,KAAK+b,MAAMwL,OAAS,GAAIzmB,EAAS,GAAId,KAAK0mH,UAElG,GADA1mH,KAAK+1K,kBAAoB/1K,KAAK+1K,mBAAsB/1K,KAAKg2K,YAAc9sI,GAClEA,GAAQlpC,KAAK+1K,oBAAsBzmG,EAAU,CAC9C,IAAID,EAAS,gBAAoB,KAAO,CAAE/xC,yBAAyB,QAAWoxC,EAAYknG,GAAU3mJ,WAAW,QAAWA,GAAY1hB,GAAIA,EAAI2tB,UAAWl7B,KAAKi2K,SAAU76I,UAAWp7B,KAAKm2K,UAAW96I,SAAUr7B,KAAKq2K,SAAU34I,UAAWA,EAAWnW,MAAOA,EAAOuT,wBAAyBA,EAAyBC,uBAAwBA,EAAwBL,QAAQ,GAAQwO,EAAOhjB,EAAW,MACpY,OAAO,eAAsBmpD,EAAOC,GAExC,OAAO,MAEX/vE,OAAOuO,eAAegoK,EAAM51K,UAAW,qBAAsB,CACzDwB,IAAK,WACD,IAAIktC,EAAU5uC,KAAK+b,MAAM6yB,QACrB9T,EAA0B,EAC1BC,EAAyB,EAW7B,OAVI6T,KACgB,IAAZA,EAEA9T,EAA0BC,OAAyBrqB,GAGnDoqB,EAA0B8T,EAAQC,aAClC9T,EAAyB6T,EAAQE,gBAGlC,CAAEhU,wBAAyBA,EAAyBC,uBAAwBA,IAEvFhtB,YAAY,EACZC,cAAc,IAElB8nK,EAAM51K,UAAUi3K,kBAAoB,SAAUp7J,EAAOuzD,GACjD,IAAKA,IAAa,KACd,MAAO,CACHulG,SAAS,EACTptJ,OAAQ1L,EAAM0L,QAGtB,IAAIs7F,EAAOprG,SAASE,cAAc,OAClCy3D,EAASva,YAAYguD,GACrB,IAAIx7F,EAAQhoB,OAAOwB,OAAO,GAAIgb,EAAMwL,OAAS,GAAIzmB,EAAS,CAAEunF,WAAY,UAAYqtF,IAChF0B,EAAe,CAAEnoJ,WAAW,QAAWlT,EAAM2yD,WAAYknG,EAAS,gCAClEvmG,EAAS,gBAAoB,MAAO,CAAEpgD,WAAW,QAzInC,wBAyImE0mJ,EAA2B55J,EAAMkT,WAAY1H,MAAOA,GAAS,eAAmBxL,EAAMmK,UAAU,SAAUsF,EAAO/jB,GAClM,OAAO,gBAAoB,MAAO3G,EAAS,CAAEuQ,IAAK5J,GAAS2vK,GAAe5rJ,OAE9Eu3F,EAAK33F,UAAY,uBAAoCikD,GACrD,IAAI6nG,EAAcl3K,KAAK69B,SAAS9hB,EAAOgnG,EAAKrkF,WAAY3iB,EAAMi1B,QAE9D,OADA+xE,EAAKh1E,WAAW4uB,YAAYomD,GACrBm0D,GAEXpB,EAAM51K,UAAUg2K,yBAA2B,SAAUr3J,GACjD,IAAIre,EAAQR,KACZA,KAAKo2K,2BACLp2K,KAAKq3K,mBAAqBr3K,KAAK22K,YAAY7B,kBAAkB90K,KAAK+b,MAAMi1B,QAAUnyB,GAClF7e,KAAKq3K,mBAAmB//J,KAAI,SAAUzX,GAAK,OAAOA,EAAEge,iBAAiB,SAAUrd,EAAMo2K,eACrFtjK,OAAOuK,iBAAiB,SAAU7d,KAAK42K,aAE3Cd,EAAM51K,UAAUk2K,yBAA2B,WACvC,IAAI51K,EAAQR,KACRA,KAAKq3K,qBACLr3K,KAAKq3K,mBAAmB//J,KAAI,SAAUzX,GAAK,OAAOA,EAAEygB,oBAAoB,SAAU9f,EAAMo2K,eACxF52K,KAAKq3K,wBAAqB3mK,GAE9B4C,OAAOgN,oBAAoB,SAAUtgB,KAAK42K,aAE9Cd,EAAM51K,UAAU02K,WAAa,WACzB52K,KAAK2tC,eAKTmoI,EAAM1lJ,UAAY,CACd4gB,OAAQ,SAAUj1B,GACd,IAAIi1B,EAASj1B,EAAMi1B,OACnB,GAAIA,GAAqC,iBAApBA,EAAO46D,SACxB,OAAO,IAAIjrG,MAAM,8EAGzB2uE,SAAU,SAAUvzD,GAChB,IAAI8C,EAAU9C,EAAMuzD,SACpB,GAAIzwD,GAAuC,iBAArBA,EAAQ+sF,SAC1B,OAAO,IAAIjrG,MAAM,gFAGzBsuB,UAAW,SACX1hB,GAAI,SACJmhE,WAAY,SACZ+lG,UAAW,QAAgB,CACvB55G,WAAY,QAAgB,CACxBk2G,EACAA,IAEJ9hG,SAAU,QAAgB,CACtB8hG,EACAA,MAGR/hG,YAAa,QAAgB,CACzBnU,WAAY,QAAgB,CACxBm2G,EACAA,EACAA,IAEJ/hG,SAAU,QAAgB,CACtB+hG,EACAA,EACAA,MAGR9hG,WAAY,QAAgB,CACxBrU,WAAY,QAAgB,CACxBm2G,EACAA,EACAA,IAEJ/hG,SAAU,QAAgB,CACtB+hG,EACAA,EACAA,MAGRvpJ,OAAQ,QAAgB,CACpBwJ,KAAM,SACN6M,IAAK,WAET5X,SAAU,YAAoB,CAC1B,UACA,SAEJgjB,KAAM,OACN0F,QAAS,YAAoB,CACzB,OACA,QAAgB,CACZC,aAAc,SACdC,cAAe,cAO3BgnI,EAAM7lJ,aAAe,CACjBwkJ,UAAW,CACP55G,WAAYk2G,EACZ9hG,SAAU8hG,GAEd/hG,YAAa,CACTnU,WAAYm2G,EACZ/hG,SAAU+hG,GAEd9hG,WAAY,CACRrU,WAAYm2G,EACZ/hG,SAAU+hG,GAEdvpJ,OAAQiuJ,EACR9mI,SAAS,EACT1F,MAAM,GAEH4sI,EAvPe,CAwPxB,+DYnSM12K,0CCDJk4K,EAAa,GACbC,EAAc,GAIPC,EAAkB,SAAUvmJ,EAAMojJ,EAAczuH,EAAe0wH,EAAez4I,GACrF,OAAQA,GACJ,IAAK,SAYL,IAAK,MACD,MAAyB,YAAlBy4I,EACDrlJ,EAAQojJ,EAAe,EACvBzuH,EAAc30B,KAAQojJ,EAAe,EAAKzuH,EAAclhC,MAAQ,EAX1E,IAAK,OACD,MAAyB,YAAlB4xJ,EACDrlJ,EAAOojJ,EAAeiD,EACtB1xH,EAAc30B,KAAOojJ,EAAeiD,EAC9C,IAAK,QACD,MAAyB,YAAlBhB,EACDrlJ,EAAOqmJ,EACP1xH,EAAc50B,MAAQsmJ,EAKhC,QACI,MAAsB,YAAlBhB,EACOrlJ,EAAQ3d,OAAOmkK,OAAOC,WAAa,EACpCzmJ,EAAOqmJ,EACPrmJ,EAAOojJ,EAAeiD,EAGrBrmJ,EAAQ3d,OAAOmkK,OAAOC,WAAa,EACpC9xH,EAAc30B,KACd20B,EAAc50B,MAAQqjJ,IAOjCsD,EAAiB,SAAU75I,EAAK8nB,EAAewuH,EAAekC,EAAez4I,GACpF,OAAQA,GACJ,IAAK,SACD,MAAyB,YAAlBy4I,EACDx4I,EAAMy5I,EACN3xH,EAAcyL,OAASkmH,EACjC,IAAK,OAIL,IAAK,QACD,MAAyB,YAAlBjB,EACDx4I,EAAOs2I,EAAgB,EACvBxuH,EAAc9nB,IAAOs2I,EAAgB,EAAMxuH,EAAcjhC,OAAS,EAC5E,IAAK,MACD,MAAyB,YAAlB2xJ,EACDx4I,EAAMs2I,EAAgBmD,EACtB3xH,EAAc9nB,IAAMs2I,EAAgBmD,EAC9C,QACI,MAAsB,YAAlBjB,EACOx4I,EAAOxqB,OAAOg8J,YAAc,EAC7BxxI,EAAMw5I,EACNx5I,EAAMs2I,EAAgBkD,EAGrBx5I,EAAOxqB,OAAOg8J,YAAc,EAC7B1pH,EAAcyL,OAASkmH,EACvB3xH,EAAc9nB,IAAMs2I,EAAgBmD,IAO/CK,EAAa,SAAUliI,GAC9B,OAAsB,OAAlBA,EACOA,EAAcyN,wBAElBxrC,SAASjT,KAAKy+C,yBAKd00H,EAAmB,CAC1B,oBACA,wBACA,YACA,kBACA,+BACA,oBAKOC,EAAmB,SAAUj5J,GACpC,GAAgB,OAAZA,EACA,OAAO,EAGX,IADA,IAAI4f,EAAO5f,EACJ4f,GAAM,CACT,GAAa,OAATA,GAAoC,cAAnBA,EAAKxP,UACtB,OAAO,EAEgBwP,EAAP,OAApBA,EAAKsP,YAA6BtP,EAAKsP,WAE3C,OAAO8pI,EAAiB99J,QAAO,SAAU/Y,GAAK,OAAOA,IAAM6d,EAAQoQ,aAAc5tB,OAAS,GDxG1F/B,GACIF,EAAgB,SAAUO,EAAGC,GAI7B,OAHAR,EAAgBG,OAAOC,gBAClB,CAAEC,UAAW,cAAgBC,OAAS,SAAUC,EAAGC,GAAKD,EAAEF,UAAYG,IACvE,SAAUD,EAAGC,GAAK,IAAK,IAAIC,KAAKD,EAAOA,EAAEE,eAAeD,KAAIF,EAAEE,GAAKD,EAAEC,KAClET,EAAcO,EAAGC,IAErB,SAAUD,EAAGC,GAEhB,SAASG,IAAOC,KAAKC,YAAcN,EADnCP,EAAcO,EAAGC,GAEjBD,EAAEO,UAAkB,OAANN,EAAaL,OAAOY,OAAOP,IAAMG,EAAGG,UAAYN,EAAEM,UAAW,IAAIH,KAGnFe,EAAsC,WAStC,OARAA,EAAWvB,OAAOwB,QAAU,SAASC,GACjC,IAAK,IAAIC,EAAGC,EAAI,EAAGC,EAAIC,UAAUC,OAAQH,EAAIC,EAAGD,IAE5C,IAAK,IAAIrB,KADToB,EAAIG,UAAUF,GACO3B,OAAOW,UAAUJ,eAAeY,KAAKO,EAAGpB,KACzDmB,EAAEnB,GAAKoB,EAAEpB,IAEjB,OAAOmB,GAEJF,EAAS6F,MAAM3G,KAAMoB,YAgB5B22K,EAAyB,SAAU13K,GAEnC,SAAS03K,IACL,IAAIv3K,EAAmB,OAAXH,GAAmBA,EAAOsG,MAAM3G,KAAMoB,YAAcpB,KAqEhE,OAjEAQ,EAAM4xB,MAAQ,CACVwzB,cAAe,KACf37C,MAAM,GAEVzJ,EAAMglB,MAAQ,GACdhlB,EAAMs9B,IAAM,EACZt9B,EAAMywB,KAAO,EAIbzwB,EAAMw3K,eAAiB,SAAU9jK,GAC7B,IAAI2K,EAAUlH,SAASynC,iBAAiBlrC,EAAMqtB,QAASrtB,EAAMstB,SACzDs2I,EAAiBj5J,IAGjBre,EAAMub,MAAM9R,QAGhB,QAAczJ,EAAMub,MAAMizB,QAAS96B,EAAO1T,OAAOkQ,GACjDlQ,EAAMq+B,SAAS,CAAE+mB,cAAe,KAAM37C,MAAM,MAKhDzJ,EAAM0yE,gBAAkB,SAAUh/D,GAC9B,IAAI/C,EAAS+C,EAAM/C,OACd3Q,EAAMy3K,UAAU9mK,KAAW2mK,EAAiB3mK,IAAWA,IAAW3Q,EAAM4xB,MAAMwzB,gBAGnFplD,EAAM03K,YAAYhkK,IAClB,QAAc1T,EAAMub,MAAMgzB,OAAQ76B,EAAO1T,OAAOkQ,KAEpDlQ,EAAM23K,oBAAsB,SAAUjkK,GAClC1T,EAAMs9B,IAAM5pB,EAAMstB,QAClBhhC,EAAMywB,KAAO/c,EAAMqtB,SAEvB/gC,EAAMq9B,SAAW,SAAUhf,GACvB,IAAIu5J,EAAUR,EAAWp3K,EAAM4xB,MAAMwzB,eAGrC,MAAO,CAAE30B,KAFEumJ,EAAgBh3K,EAAMywB,KAAMpS,EAAQwb,YAAa+9I,EAAS53K,EAAMub,MAAMu6J,cAAe91K,EAAMub,MAAM8hB,UAEvFC,IADX65I,EAAen3K,EAAMs9B,IAAKs6I,EAASv5J,EAAQqb,aAAc15B,EAAMub,MAAMu6J,cAAe91K,EAAMub,MAAM8hB,YAG9Gr9B,EAAMmgE,SAAW,SAAU9hD,GACvB,KAAOA,GAAS,CACZ,GAAIA,EAAQ2G,OAAS3G,EAAQw5J,aACzB,OAAOx5J,EAAQ2G,OAAS3G,EAAQw5J,aAEpCx5J,EAAUre,EAAMub,MAAMu8J,aAAez5J,EAAQwgC,eAAiB,KAElE,MAAO,IAEX7+C,EAAM+3K,iBAAmB,WACrB,OAAQ/3K,EAAMub,MAAM8hB,UAChB,IAAK,SACD,MAAO,wBACX,IAAK,OACD,MAAO,wBACX,IAAK,QACD,MAAO,wBACX,IAAK,MACD,MAAO,wBACX,QACI,OAAOr9B,EAAMs9B,IAAOxqB,OAAOg8J,YAAc,EAAK,wBAA0B,0BAG7E9uK,EAiHX,OAxLAlB,EAAUy4K,EAAS13K,GA4EnB03K,EAAQ73K,UAAUmkC,kBAAoB,WAC9B1sB,UACAA,SAASjT,KAAKmZ,iBAAiB,YAAa7d,KAAKm4K,sBAMzDJ,EAAQ73K,UAAUokC,qBAAuB,WACrC/yB,aAAavR,KAAKw4K,aAClBx4K,KAAKw4K,iBAAc9nK,EACfiH,UACAA,SAASjT,KAAK4b,oBAAoB,YAAatgB,KAAKm4K,sBAM5DJ,EAAQ73K,UAAUmzC,mBAAqB,WAC/BrzC,KAAK+b,MAAM9R,MAAQjK,KAAK+b,MAAM6pC,eAC9B5lD,KAAKk4K,YAAY,CAAE/mK,OAAQnR,KAAK+b,MAAM6pC,iBAM9CmyH,EAAQ73K,UAAUu6B,OAAS,WACvB,IAAIj6B,EAAQR,KACZ,GAAIA,KAAK+b,MAAMmK,SAAU,CACrB,IAAI7hB,EAAKrE,KAAK+b,MAAOmK,EAAW7hB,EAAG6hB,SAAUtkB,EAxHnB,SAAUX,EAAG6E,GAC/C,IAAI9E,EAAI,GACR,IAAK,IAAInB,KAAKoB,EAAO1B,OAAOW,UAAUJ,eAAeY,KAAKO,EAAGpB,IAAMiG,EAAE4B,QAAQ7H,GAAK,IAC9EmB,EAAEnB,GAAKoB,EAAEpB,IACb,GAAS,MAALoB,GAAqD,mBAAjC1B,OAAOsa,sBACtB,KAAI3Y,EAAI,EAAb,IAAgBrB,EAAIN,OAAOsa,sBAAsB5Y,GAAIC,EAAIrB,EAAEwB,OAAQH,IAAS4E,EAAE4B,QAAQ7H,EAAEqB,IAAM,IAC1FF,EAAEnB,EAAEqB,IAAMD,EAAEpB,EAAEqB,KACtB,OAAOF,EAiHwD66B,CAAOx3B,EAAI,CAAC,aAC/Do0K,EAAY,KAChB,OAAQ,gBAAoB,MAAO,CAAErlG,YAAa,SAAUl/D,GAAaukK,GACjEA,EAAUvlG,gBAAgBh/D,IACzBwkK,WAAY,SAAUxkK,GAAaukK,GACpCA,EAAUT,eAAe9jK,KAE7B,gBAAoB6jK,EAASj3K,EAAS,CAAEi8B,IAAK,SAAUgC,GAAM,OAAO05I,EAAY15I,IAASn9B,IACzFskB,GAER,OAAwB,IAApBlmB,KAAK+b,MAAM9R,KACJ,KAEJjK,KAAKoyB,MAAMwzB,eACd5lD,KAAKwlB,OACL7N,UACA,eAAuB,gBAAoB,MAAO,CAAEolB,IAAK,SAAUgC,GAC3D,GAAKA,EAAL,CAGA,IAAIlB,EAAWr9B,EAAMq9B,SAASkB,GAC9BA,EAAGxX,MAAM0J,KAAO4M,EAAS5M,KAAO,KAChC8N,EAAGxX,MAAMuW,IAAMD,EAASC,IAAM,OAC/B7O,UAAW,iFACPjvB,KAAK+b,MAAMkT,UAAY,IAAMjvB,KAAK+b,MAAMkT,UAAY,IAAKkW,SAAU,GAC1E,gBAAoB,MAAO,CAAElW,UAAW,YAAa1H,MAAO,CACpDsW,SAAU,aAEd,gBAAoB,MAAO,CAAE5O,UAAW,qBAAuBjvB,KAAK+b,MAAMva,SACtE,gBAAoBxB,KAAK+b,MAAMva,QAAS,CAAEgkB,MAAOxlB,KAAKwlB,MAAOrU,OAAQnR,KAAKoyB,MAAMwzB,iBAC7E5lD,KAAKwlB,OACZxlB,KAAK+b,MAAM48J,aAAe,gBAAoB,MAAO,CAAE57I,IAAK,SAAUgC,GACzDA,IAGLA,EAAG9P,UAAYzuB,EAAM+3K,mBACQ,SAAzB/3K,EAAMub,MAAM8hB,WACZr9B,EAAMywB,KAAQ3d,OAAOmkK,OAAOC,WAAa,EACnC34I,EAAGxX,MAAM0J,KAAOzwB,EAAMub,MAAM68J,0BAA4B,MACxD75I,EAAGxX,MAAM0J,KAAOzwB,EAAMub,MAAM68J,0BAA4B,aAE7DjhK,SAASjT,OAEtCqzK,EAAQ73K,UAAUg4K,YAAc,SAAUhkK,GACtC,IAAI1T,EAAQR,KACRmR,EAASnR,KAAK+b,MAAM6pC,eAAiB1xC,EAAM/C,OAC/CI,aAAavR,KAAKw4K,aAClBx4K,KAAKwlB,MAAQxlB,KAAK2gE,SAASxvD,GACvBnR,KAAKwlB,QACLrU,EAAOknK,aAAelnK,EAAOknK,cAAgBlnK,EAAOqU,MACpDrU,EAAOqU,MAAQ,IAEdxlB,KAAK+b,MAAM88J,UAIZ74K,KAAKw4K,YAAc3nK,YAAW,WAAcrQ,EAAMq+B,SAAS,CAAE+mB,cAAez0C,EAAQlH,MAAM,MAAYjK,KAAK+b,MAAM88J,WAHjH74K,KAAK6+B,SAAS,CAAE+mB,cAAez0C,EAAQlH,MAAM,KAMrD8tK,EAAQ73K,UAAU+3K,UAAY,SAAUp5J,GACpC,OAAQ7e,KAAK+b,MAAMhC,QAAU/Z,KAAK+b,MAAMhC,OAAO8E,IAKnDk5J,EAAQ3nJ,UAAY,CAChBkmJ,cAAe,QAAgB,CAAC,UAAW,WAC3C90K,QAAS,OACTuY,OAAQ,OACR8+J,UAAW,SACXh7I,SAAU,QAAgB,CAAC,QAAS,OAAQ,MAAO,SAAU,UAEjEk6I,EAAQ9nJ,aAAe,CACnBqmJ,cAAe,UACfuC,UAAW,IACXh7I,SAAU,OACV86I,aAAa,EACbL,aAAa,GAEVP,EAzLiB,CA0L1B,iCEhOFj/J,EAAOC,QAAU,EAAjB,mCCEA,IAAI+/J,EAAQ,EAAQ,MAChBC,EAAS,EAAQ,MACjBC,EAAW,EAAQ,MACnBC,EAAgB,EAAQ,MACxBC,EAAe,EAAQ,MACvBC,EAAkB,EAAQ,MAC1BC,EAAc,EAAQ,MAE1BtgK,EAAOC,QAAU,SAAoB6G,GACnC,OAAO,IAAIxZ,SAAQ,SAA4BC,EAASC,GACtD,IAAI+yK,EAAcz5J,EAAO9c,KACrBw2K,EAAiB15J,EAAOtb,QAExBw0K,EAAMS,WAAWF,WACZC,EAAe,gBAGxB,IAAItwK,EAAU,IAAIN,eAGlB,GAAIkX,EAAO45J,KAAM,CACf,IAAIC,EAAW75J,EAAO45J,KAAKC,UAAY,GACnCC,EAAW95J,EAAO45J,KAAKE,UAAY,GACvCJ,EAAeK,cAAgB,SAAWC,KAAKH,EAAW,IAAMC,GAGlE,IAAIG,EAAWZ,EAAcr5J,EAAOk6J,QAASl6J,EAAOje,KA4EpD,GA3EAqH,EAAQiB,KAAK2V,EAAO9d,OAAO4pB,cAAestJ,EAASa,EAAUj6J,EAAOsF,OAAQtF,EAAOm6J,mBAAmB,GAGtG/wK,EAAQQ,QAAUoW,EAAOpW,QAGzBR,EAAQgxK,mBAAqB,WAC3B,GAAKhxK,GAAkC,IAAvBA,EAAQoL,aAQD,IAAnBpL,EAAQuB,QAAkBvB,EAAQixK,aAAwD,IAAzCjxK,EAAQixK,YAAYvyK,QAAQ,UAAjF,CAKA,IAAIwyK,EAAkB,0BAA2BlxK,EAAUkwK,EAAalwK,EAAQmxK,yBAA2B,KAEvG11K,EAAW,CACb3B,KAFkB8c,EAAOpb,cAAwC,SAAxBob,EAAOpb,aAAiDwE,EAAQvE,SAA/BuE,EAAQwB,aAGlFD,OAAQvB,EAAQuB,OAChBhJ,WAAYyH,EAAQzH,WACpB+C,QAAS41K,EACTt6J,OAAQA,EACR5W,QAASA,GAGX+vK,EAAO1yK,EAASC,EAAQ7B,GAGxBuE,EAAU,OAIZA,EAAQU,QAAU,WACXV,IAIL1C,EAAO8yK,EAAY,kBAAmBx5J,EAAQ,eAAgB5W,IAG9DA,EAAU,OAIZA,EAAQyB,QAAU,WAGhBnE,EAAO8yK,EAAY,gBAAiBx5J,EAAQ,KAAM5W,IAGlDA,EAAU,MAIZA,EAAQ0B,UAAY,WAClB,IAAI0vK,EAAsB,cAAgBx6J,EAAOpW,QAAU,cACvDoW,EAAOw6J,sBACTA,EAAsBx6J,EAAOw6J,qBAE/B9zK,EAAO8yK,EAAYgB,EAAqBx6J,EAAQ,eAC9C5W,IAGFA,EAAU,MAMR8vK,EAAMuB,uBAAwB,CAChC,IAAI9mK,EAAU,EAAQ,MAGlB+mK,GAAa16J,EAAO1V,iBAAmBivK,EAAgBU,KAAcj6J,EAAO26J,eAC9EhnK,EAAQq+G,KAAKhyG,EAAO26J,qBACpB7pK,EAEE4pK,IACFhB,EAAe15J,EAAO46J,gBAAkBF,GAuB5C,GAlBI,qBAAsBtxK,GACxB8vK,EAAMx1K,QAAQg2K,GAAgB,SAA0B72K,EAAK4O,QAChC,IAAhBgoK,GAAqD,iBAAtBhoK,EAAIvB,qBAErCwpK,EAAejoK,GAGtBrI,EAAQmB,iBAAiBkH,EAAK5O,MAM/Bq2K,EAAM2B,YAAY76J,EAAO1V,mBAC5BlB,EAAQkB,kBAAoB0V,EAAO1V,iBAIjC0V,EAAOpb,aACT,IACEwE,EAAQxE,aAAeob,EAAOpb,aAC9B,MAAOsB,GAGP,GAA4B,SAAxB8Z,EAAOpb,aACT,MAAMsB,EAM6B,mBAA9B8Z,EAAO86J,oBAChB1xK,EAAQ6U,iBAAiB,WAAY+B,EAAO86J,oBAIP,mBAA5B96J,EAAO+6J,kBAAmC3xK,EAAQ4xK,QAC3D5xK,EAAQ4xK,OAAO/8J,iBAAiB,WAAY+B,EAAO+6J,kBAGjD/6J,EAAOi7J,aAETj7J,EAAOi7J,YAAYj5J,QAAQlb,MAAK,SAAoBukH,GAC7CjiH,IAILA,EAAQa,QACRvD,EAAO2kH,GAEPjiH,EAAU,cAIM0H,IAAhB2oK,IACFA,EAAc,MAIhBrwK,EAAQnH,KAAKw3K,oCC/KjB,IAAIP,EAAQ,EAAQ,MAChBpoJ,EAAO,EAAQ,MACfoqJ,EAAQ,EAAQ,KAChBC,EAAc,EAAQ,MAS1B,SAASC,EAAeC,GACtB,IAAIxM,EAAU,IAAIqM,EAAMG,GACpB34K,EAAWouB,EAAKoqJ,EAAM56K,UAAU8I,QAASylK,GAQ7C,OALAqK,EAAM3mF,OAAO7vF,EAAUw4K,EAAM56K,UAAWuuK,GAGxCqK,EAAM3mF,OAAO7vF,EAAUmsK,GAEhBnsK,EAIT,IAAI44K,EAAQF,EAtBG,EAAQ,OAyBvBE,EAAMJ,MAAQA,EAGdI,EAAM/6K,OAAS,SAAgBg7K,GAC7B,OAAOH,EAAeD,EAAYG,EAAMjyK,SAAUkyK,KAIpDD,EAAME,OAAS,EAAQ,MACvBF,EAAMG,YAAc,EAAQ,MAC5BH,EAAMI,SAAW,EAAQ,MAGzBJ,EAAMv4J,IAAM,SAAaC,GACvB,OAAOxc,QAAQuc,IAAIC,IAErBs4J,EAAMK,OAAS,EAAQ,MAEvBziK,EAAOC,QAAUmiK,EAGjBpiK,EAAOC,QAAP,QAAyBmiK,yBC5CzB,SAASE,EAAOnzK,GACdjI,KAAKiI,QAAUA,EAGjBmzK,EAAOl7K,UAAUsD,SAAW,WAC1B,MAAO,UAAYxD,KAAKiI,QAAU,KAAOjI,KAAKiI,QAAU,KAG1DmzK,EAAOl7K,UAAUs7K,YAAa,EAE9B1iK,EAAOC,QAAUqiK,+BChBjB,IAAIA,EAAS,EAAQ,MAQrB,SAASC,EAAYI,GACnB,GAAwB,mBAAbA,EACT,MAAM,IAAIh2K,UAAU,gCAGtB,IAAIi2K,EACJ17K,KAAK4hB,QAAU,IAAIxb,SAAQ,SAAyBC,GAClDq1K,EAAiBr1K,KAGnB,IAAI9B,EAAQvE,KACZy7K,GAAS,SAAgBxzK,GACnB1D,EAAMgQ,SAKVhQ,EAAMgQ,OAAS,IAAI6mK,EAAOnzK,GAC1ByzK,EAAen3K,EAAMgQ,YAOzB8mK,EAAYn7K,UAAUy7K,iBAAmB,WACvC,GAAI37K,KAAKuU,OACP,MAAMvU,KAAKuU,QAQf8mK,EAAY/hK,OAAS,WACnB,IAAI2xG,EAIJ,MAAO,CACL1mH,MAJU,IAAI82K,GAAY,SAAkB/pK,GAC5C25G,EAAS35G,KAIT25G,OAAQA,IAIZnyG,EAAOC,QAAUsiK,yBCtDjBviK,EAAOC,QAAU,SAAkBpT,GACjC,SAAUA,IAASA,EAAM61K,yCCD3B,IAAI1C,EAAQ,EAAQ,MAChBE,EAAW,EAAQ,MACnB4C,EAAqB,EAAQ,KAC7BC,EAAkB,EAAQ,MAC1Bd,EAAc,EAAQ,MAO1B,SAASD,EAAMK,GACbn7K,KAAKiJ,SAAWkyK,EAChBn7K,KAAK87K,aAAe,CAClB9yK,QAAS,IAAI4yK,EACbn3K,SAAU,IAAIm3K,GASlBd,EAAM56K,UAAU8I,QAAU,SAAiB4W,GAGnB,iBAAXA,GACTA,EAASxe,UAAU,IAAM,IAClBO,IAAMP,UAAU,GAEvBwe,EAASA,GAAU,IAGrBA,EAASm7J,EAAY/6K,KAAKiJ,SAAU2W,IAGzB9d,OACT8d,EAAO9d,OAAS8d,EAAO9d,OAAOgO,cACrB9P,KAAKiJ,SAASnH,OACvB8d,EAAO9d,OAAS9B,KAAKiJ,SAASnH,OAAOgO,cAErC8P,EAAO9d,OAAS,MAIlB,IAAIgsJ,EAAQ,CAAC+tB,OAAiBnrK,GAC1BkR,EAAUxb,QAAQC,QAAQuZ,GAU9B,IARA5f,KAAK87K,aAAa9yK,QAAQ1F,SAAQ,SAAoCy4K,GACpEjuB,EAAM1wG,QAAQ2+H,EAAYx1K,UAAWw1K,EAAYv1K,aAGnDxG,KAAK87K,aAAar3K,SAASnB,SAAQ,SAAkCy4K,GACnEjuB,EAAMjoJ,KAAKk2K,EAAYx1K,UAAWw1K,EAAYv1K,aAGzCsnJ,EAAMzsJ,QACXugB,EAAUA,EAAQlb,KAAKonJ,EAAM1uH,QAAS0uH,EAAM1uH,SAG9C,OAAOxd,GAGTk5J,EAAM56K,UAAU87K,OAAS,SAAgBp8J,GAEvC,OADAA,EAASm7J,EAAY/6K,KAAKiJ,SAAU2W,GAC7Bo5J,EAASp5J,EAAOje,IAAKie,EAAOsF,OAAQtF,EAAOm6J,kBAAkBhmK,QAAQ,MAAO,KAIrF+kK,EAAMx1K,QAAQ,CAAC,SAAU,MAAO,OAAQ,YAAY,SAA6BxB,GAE/Eg5K,EAAM56K,UAAU4B,GAAU,SAASH,EAAKie,GACtC,OAAO5f,KAAKgJ,QAAQ8vK,EAAMx/I,MAAM1Z,GAAU,GAAI,CAC5C9d,OAAQA,EACRH,IAAKA,SAKXm3K,EAAMx1K,QAAQ,CAAC,OAAQ,MAAO,UAAU,SAA+BxB,GAErEg5K,EAAM56K,UAAU4B,GAAU,SAASH,EAAKmB,EAAM8c,GAC5C,OAAO5f,KAAKgJ,QAAQ8vK,EAAMx/I,MAAM1Z,GAAU,GAAI,CAC5C9d,OAAQA,EACRH,IAAKA,EACLmB,KAAMA,SAKZgW,EAAOC,QAAU+hK,8BC3FjB,IAAIhC,EAAQ,EAAQ,MAEpB,SAAS8C,IACP57K,KAAKgQ,SAAW,GAWlB4rK,EAAmB17K,UAAUs+H,IAAM,SAAaj4H,EAAWC,GAKzD,OAJAxG,KAAKgQ,SAASnK,KAAK,CACjBU,UAAWA,EACXC,SAAUA,IAELxG,KAAKgQ,SAAS3O,OAAS,GAQhCu6K,EAAmB17K,UAAU+7K,MAAQ,SAAe1uK,GAC9CvN,KAAKgQ,SAASzC,KAChBvN,KAAKgQ,SAASzC,GAAM,OAYxBquK,EAAmB17K,UAAUoD,QAAU,SAAiBid,GACtDu4J,EAAMx1K,QAAQtD,KAAKgQ,UAAU,SAAwB+6E,GACzC,OAANA,GACFxqE,EAAGwqE,OAKTjyE,EAAOC,QAAU6iK,+BCjDjB,IAAIM,EAAgB,EAAQ,MACxBC,EAAc,EAAQ,MAW1BrjK,EAAOC,QAAU,SAAuB+gK,EAASsC,GAC/C,OAAItC,IAAYoC,EAAcE,GACrBD,EAAYrC,EAASsC,GAEvBA,gCChBT,IAAIC,EAAe,EAAQ,KAY3BvjK,EAAOC,QAAU,SAAqB9Q,EAAS2X,EAAQjW,EAAMX,EAASvE,GACpE,IAAIwC,EAAQ,IAAItG,MAAMsH,GACtB,OAAOo0K,EAAap1K,EAAO2Y,EAAQjW,EAAMX,EAASvE,iCCdpD,IAAIq0K,EAAQ,EAAQ,MAChBwD,EAAgB,EAAQ,MACxBhB,EAAW,EAAQ,MACnBryK,EAAW,EAAQ,MAKvB,SAASszK,EAA6B38J,GAChCA,EAAOi7J,aACTj7J,EAAOi7J,YAAYc,mBAUvB7iK,EAAOC,QAAU,SAAyB6G,GA6BxC,OA5BA28J,EAA6B38J,GAG7BA,EAAOtb,QAAUsb,EAAOtb,SAAW,GAGnCsb,EAAO9c,KAAOw5K,EACZ18J,EAAO9c,KACP8c,EAAOtb,QACPsb,EAAO48J,kBAIT58J,EAAOtb,QAAUw0K,EAAMx/I,MACrB1Z,EAAOtb,QAAQm4K,QAAU,GACzB78J,EAAOtb,QAAQsb,EAAO9d,SAAW,GACjC8d,EAAOtb,SAGTw0K,EAAMx1K,QACJ,CAAC,SAAU,MAAO,OAAQ,OAAQ,MAAO,QAAS,WAClD,SAA2BxB,UAClB8d,EAAOtb,QAAQxC,OAIZ8d,EAAO88J,SAAWzzK,EAASyzK,SAE1B98J,GAAQlZ,MAAK,SAA6BjC,GAUvD,OATA83K,EAA6B38J,GAG7Bnb,EAAS3B,KAAOw5K,EACd73K,EAAS3B,KACT2B,EAASH,QACTsb,EAAO+8J,mBAGFl4K,KACN,SAA4B8P,GAc7B,OAbK+mK,EAAS/mK,KACZgoK,EAA6B38J,GAGzBrL,GAAUA,EAAO9P,WACnB8P,EAAO9P,SAAS3B,KAAOw5K,EACrB/nK,EAAO9P,SAAS3B,KAChByR,EAAO9P,SAASH,QAChBsb,EAAO+8J,qBAKNv2K,QAAQE,OAAOiO,6BChE1BuE,EAAOC,QAAU,SAAsB9R,EAAO2Y,EAAQjW,EAAMX,EAASvE,GA4BnE,OA3BAwC,EAAM2Y,OAASA,EACXjW,IACF1C,EAAM0C,KAAOA,GAGf1C,EAAM+B,QAAUA,EAChB/B,EAAMxC,SAAWA,EACjBwC,EAAM21K,cAAe,EAErB31K,EAAM41K,OAAS,WACb,MAAO,CAEL50K,QAASjI,KAAKiI,QACdvF,KAAM1C,KAAK0C,KAEXo6K,YAAa98K,KAAK88K,YAClBhkE,OAAQ94G,KAAK84G,OAEbikE,SAAU/8K,KAAK+8K,SACfC,WAAYh9K,KAAKg9K,WACjBC,aAAcj9K,KAAKi9K,aACnB1zJ,MAAOvpB,KAAKupB,MAEZ3J,OAAQ5f,KAAK4f,OACbjW,KAAM3J,KAAK2J,OAGR1C,gCCtCT,IAAI6xK,EAAQ,EAAQ,MAUpBhgK,EAAOC,QAAU,SAAqBmkK,EAASC,GAE7CA,EAAUA,GAAW,GACrB,IAAIv9J,EAAS,GAETw9J,EAAuB,CAAC,MAAO,SAAU,SAAU,QACnDC,EAA0B,CAAC,UAAW,OAAQ,SAC9CC,EAAuB,CACzB,UAAW,MAAO,mBAAoB,oBAAqB,mBAC3D,UAAW,kBAAmB,UAAW,eAAgB,iBACzD,iBAAkB,mBAAoB,qBACtC,mBAAoB,iBAAkB,eAAgB,YACtD,aAAc,cAAe,cAG/BxE,EAAMx1K,QAAQ85K,GAAsB,SAA0B5uJ,QAC/B,IAAlB2uJ,EAAQ3uJ,KACjB5O,EAAO4O,GAAQ2uJ,EAAQ3uJ,OAI3BsqJ,EAAMx1K,QAAQ+5K,GAAyB,SAA6B7uJ,GAC9DsqJ,EAAMyE,SAASJ,EAAQ3uJ,IACzB5O,EAAO4O,GAAQsqJ,EAAM0E,UAAUN,EAAQ1uJ,GAAO2uJ,EAAQ3uJ,SACpB,IAAlB2uJ,EAAQ3uJ,GACxB5O,EAAO4O,GAAQ2uJ,EAAQ3uJ,GACdsqJ,EAAMyE,SAASL,EAAQ1uJ,IAChC5O,EAAO4O,GAAQsqJ,EAAM0E,UAAUN,EAAQ1uJ,SACL,IAAlB0uJ,EAAQ1uJ,KACxB5O,EAAO4O,GAAQ0uJ,EAAQ1uJ,OAI3BsqJ,EAAMx1K,QAAQg6K,GAAsB,SAA0B9uJ,QAC/B,IAAlB2uJ,EAAQ3uJ,GACjB5O,EAAO4O,GAAQ2uJ,EAAQ3uJ,QACW,IAAlB0uJ,EAAQ1uJ,KACxB5O,EAAO4O,GAAQ0uJ,EAAQ1uJ,OAI3B,IAAIivJ,EAAYL,EACbtjK,OAAOujK,GACPvjK,OAAOwjK,GAENI,EAAYn+K,OACb6K,KAAK+yK,GACLpjK,QAAO,SAAyB1I,GAC/B,OAAmC,IAA5BosK,EAAU/1K,QAAQ2J,MAW7B,OARAynK,EAAMx1K,QAAQo6K,GAAW,SAAmClvJ,QAC7B,IAAlB2uJ,EAAQ3uJ,GACjB5O,EAAO4O,GAAQ2uJ,EAAQ3uJ,QACW,IAAlB0uJ,EAAQ1uJ,KACxB5O,EAAO4O,GAAQ0uJ,EAAQ1uJ,OAIpB5O,gCCrET,IAAIw5J,EAAc,EAAQ,MAS1BtgK,EAAOC,QAAU,SAAgB1S,EAASC,EAAQ7B,GAChD,IAAIk5K,EAAiBl5K,EAASmb,OAAO+9J,gBAChCA,GAAkBA,EAAel5K,EAAS8F,QAC7ClE,EAAQ5B,GAER6B,EAAO8yK,EACL,mCAAqC30K,EAAS8F,OAC9C9F,EAASmb,OACT,KACAnb,EAASuE,QACTvE,kCCnBN,IAAIq0K,EAAQ,EAAQ,MAUpBhgK,EAAOC,QAAU,SAAuBjW,EAAMwB,EAASs5K,GAMrD,OAJA9E,EAAMx1K,QAAQs6K,GAAK,SAAmBr9J,GACpCzd,EAAOyd,EAAGzd,EAAMwB,MAGXxB,gCChBT,IAAIg2K,EAAQ,EAAQ,MAChB+E,EAAsB,EAAQ,MAE9BC,EAAuB,CACzB,eAAgB,qCAGlB,SAASC,EAAsBz5K,EAASqB,IACjCmzK,EAAM2B,YAAYn2K,IAAYw0K,EAAM2B,YAAYn2K,EAAQ,mBAC3DA,EAAQ,gBAAkBqB,GAgB9B,IAXM+2K,EAWFzzK,EAAW,CACbyzK,UAX8B,oBAAnBh0K,gBAGmB,oBAAZoY,SAAuE,qBAA5CvhB,OAAOW,UAAUsD,SAAS9C,KAAKogB,YAD1E47J,EAAU,EAAQ,OAKbA,GAMPF,iBAAkB,CAAC,SAA0B15K,EAAMwB,GAGjD,OAFAu5K,EAAoBv5K,EAAS,UAC7Bu5K,EAAoBv5K,EAAS,gBACzBw0K,EAAMS,WAAWz2K,IACnBg2K,EAAM71K,cAAcH,IACpBg2K,EAAMkF,SAASl7K,IACfg2K,EAAMmF,SAASn7K,IACfg2K,EAAMoF,OAAOp7K,IACbg2K,EAAMqF,OAAOr7K,GAENA,EAELg2K,EAAMsF,kBAAkBt7K,GACnBA,EAAKqJ,OAEV2sK,EAAMuF,kBAAkBv7K,IAC1Bi7K,EAAsBz5K,EAAS,mDACxBxB,EAAKU,YAEVs1K,EAAMyE,SAASz6K,IACjBi7K,EAAsBz5K,EAAS,kCACxBoH,KAAKC,UAAU7I,IAEjBA,IAGT65K,kBAAmB,CAAC,SAA2B75K,GAE7C,GAAoB,iBAATA,EACT,IACEA,EAAO4I,KAAKV,MAAMlI,GAClB,MAAOgD,IAEX,OAAOhD,IAOT0G,QAAS,EAET+wK,eAAgB,aAChBC,eAAgB,eAEhB8D,kBAAmB,EAEnBX,eAAgB,SAAwBpzK,GACtC,OAAOA,GAAU,KAAOA,EAAS,KAIrCtB,QAAmB,CACjBwzK,OAAQ,CACN,OAAU,uCAId3D,EAAMx1K,QAAQ,CAAC,SAAU,MAAO,SAAS,SAA6BxB,GACpEmH,EAAS3E,QAAQxC,GAAU,MAG7Bg3K,EAAMx1K,QAAQ,CAAC,OAAQ,MAAO,UAAU,SAA+BxB,GACrEmH,EAAS3E,QAAQxC,GAAUg3K,EAAMx/I,MAAMwkJ,MAGzChlK,EAAOC,QAAU9P,yBC9FjB6P,EAAOC,QAAU,SAAcwH,EAAIrc,GACjC,OAAO,WAEL,IADA,IAAI8K,EAAO,IAAItP,MAAM0B,UAAUC,QACtBH,EAAI,EAAGA,EAAI8N,EAAK3N,OAAQH,IAC/B8N,EAAK9N,GAAKE,UAAUF,GAEtB,OAAOqf,EAAG5Z,MAAMzC,EAAS8K,kCCN7B,IAAI8pK,EAAQ,EAAQ,MAEpB,SAAS7vD,EAAOxmH,GACd,OAAOyQ,mBAAmBzQ,GACxBsR,QAAQ,QAAS,KACjBA,QAAQ,QAAS,KACjBA,QAAQ,OAAQ,KAChBA,QAAQ,QAAS,KACjBA,QAAQ,OAAQ,KAChBA,QAAQ,QAAS,KACjBA,QAAQ,QAAS,KAUrB+E,EAAOC,QAAU,SAAkBpX,EAAKujB,EAAQ60J,GAE9C,IAAK70J,EACH,OAAOvjB,EAGT,IAAI48K,EACJ,GAAIxE,EACFwE,EAAmBxE,EAAiB70J,QAC/B,GAAI4zJ,EAAMuF,kBAAkBn5J,GACjCq5J,EAAmBr5J,EAAO1hB,eACrB,CACL,IAAIspB,EAAQ,GAEZgsJ,EAAMx1K,QAAQ4hB,GAAQ,SAAmBziB,EAAK4O,GACxC5O,UAIAq2K,EAAM38J,QAAQ1Z,GAChB4O,GAAY,KAEZ5O,EAAM,CAACA,GAGTq2K,EAAMx1K,QAAQb,GAAK,SAAoB8C,GACjCuzK,EAAM32C,OAAO58H,GACfA,EAAIA,EAAE8C,cACGywK,EAAMyE,SAASh4K,KACxBA,EAAImG,KAAKC,UAAUpG,IAErBunB,EAAMjnB,KAAKojH,EAAO53G,GAAO,IAAM43G,EAAO1jH,WAI1Cg5K,EAAmBzxJ,EAAM7G,KAAK,KAGhC,GAAIs4J,EAAkB,CACpB,IAAIC,EAAgB78K,EAAI+F,QAAQ,MACT,IAAnB82K,IACF78K,EAAMA,EAAIuK,MAAM,EAAGsyK,IAGrB78K,KAA8B,IAAtBA,EAAI+F,QAAQ,KAAc,IAAM,KAAO62K,EAGjD,OAAO58K,0BC5DTmX,EAAOC,QAAU,SAAqB+gK,EAAS2E,GAC7C,OAAOA,EACH3E,EAAQ/lK,QAAQ,OAAQ,IAAM,IAAM0qK,EAAY1qK,QAAQ,OAAQ,IAChE+lK,gCCVN,IAAIhB,EAAQ,EAAQ,MAEpBhgK,EAAOC,QACL+/J,EAAMuB,uBAIK,CACLxvK,MAAO,SAAenI,EAAMiD,EAAO+4K,EAASl6J,EAAMm6J,EAAQC,GACxD,IAAIC,EAAS,GACbA,EAAOh5K,KAAKnD,EAAO,IAAMwQ,mBAAmBvN,IAExCmzK,EAAMhT,SAAS4Y,IACjBG,EAAOh5K,KAAK,WAAa,IAAIuC,KAAKs2K,GAASI,eAGzChG,EAAMrhB,SAASjzI,IACjBq6J,EAAOh5K,KAAK,QAAU2e,GAGpBs0J,EAAMrhB,SAASknB,IACjBE,EAAOh5K,KAAK,UAAY84K,IAGX,IAAXC,GACFC,EAAOh5K,KAAK,UAGd8R,SAASknK,OAASA,EAAO54J,KAAK,OAGhC2rG,KAAM,SAAclvH,GAClB,IAAI0rB,EAAQzW,SAASknK,OAAOzwJ,MAAM,IAAIlC,OAAO,aAAexpB,EAAO,cACnE,OAAQ0rB,EAAQ2wJ,mBAAmB3wJ,EAAM,IAAM,MAGjD2zC,OAAQ,SAAgBr/D,GACtB1C,KAAK6K,MAAMnI,EAAM,GAAI0F,KAAKmK,MAAQ,SAO/B,CACL1H,MAAO,aACP+mH,KAAM,WAAkB,OAAO,MAC/B7vD,OAAQ,qCCzChBjpD,EAAOC,QAAU,SAAuBpX,GAItC,MAAO,gCAAgCye,KAAKze,iCCV9C,IAAIm3K,EAAQ,EAAQ,MAChBkG,EAAa,EAAQ,MAEzBlmK,EAAOC,QACL+/J,EAAMuB,uBAIJ,WACE,IAEI4E,EAFAhqF,EAAO,kBAAkB70E,KAAK/C,UAAUC,WACxC4hK,EAAiBvnK,SAASE,cAAc,KAS5C,SAASsnK,EAAWx9K,GAClB,IAAImW,EAAOnW,EAEX,GAAIq9K,EAAWr9K,GACb,MAAM,IAAIhB,MAAM,sCAYlB,OATIs0F,IAEFiqF,EAAe/zJ,aAAa,OAAQrT,GACpCA,EAAOonK,EAAepnK,MAGxBonK,EAAe/zJ,aAAa,OAAQrT,GAG7B,CACLA,KAAMonK,EAAepnK,KACrBlL,SAAUsyK,EAAetyK,SAAWsyK,EAAetyK,SAASmH,QAAQ,KAAM,IAAM,GAChFqrK,KAAMF,EAAeE,KACrB1tI,OAAQwtI,EAAextI,OAASwtI,EAAextI,OAAO39B,QAAQ,MAAO,IAAM,GAC3EixF,KAAMk6E,EAAel6E,KAAOk6E,EAAel6E,KAAKjxF,QAAQ,KAAM,IAAM,GACpEsrK,SAAUH,EAAeG,SACzBC,KAAMJ,EAAeI,KACrBC,SAAiD,MAAtCL,EAAeK,SAAS7wJ,OAAO,GACxCwwJ,EAAeK,SACf,IAAML,EAAeK,UAY3B,OARAN,EAAYE,EAAW7rK,OAAO2tG,SAASnpG,MAQhC,SAAyB0nK,GAC9B,IAAI77B,EAAUm1B,EAAMrhB,SAAS+nB,GAAeL,EAAWK,GAAcA,EACrE,OAAQ77B,EAAO/2I,WAAaqyK,EAAUryK,UAClC+2I,EAAOy7B,OAASH,EAAUG,MApDlC,GA0DS,WACL,OAAO,0BCnEftmK,EAAOC,QAAU,SAAoBymK,GAEnC,MADe,8CACCp/J,KAAKo/J,iCCFvB,IAAI1G,EAAQ,EAAQ,MAEpBhgK,EAAOC,QAAU,SAA6BzU,EAASm7K,GACrD3G,EAAMx1K,QAAQgB,GAAS,SAAuBqB,EAAOjD,GAC/CA,IAAS+8K,GAAkB/8K,EAAKgpB,gBAAkB+zJ,EAAe/zJ,gBACnEpnB,EAAQm7K,GAAkB95K,SACnBrB,EAAQ5B,qCCNrB,IAAIo2K,EAAQ,EAAQ,MAIhB4G,EAAoB,CACtB,MAAO,gBAAiB,iBAAkB,eAAgB,OAC1D,UAAW,OAAQ,OAAQ,oBAAqB,sBAChD,gBAAiB,WAAY,eAAgB,sBAC7C,UAAW,cAAe,cAgB5B5mK,EAAOC,QAAU,SAAsBzU,GACrC,IACI+M,EACA5O,EACAvB,EAHAyiJ,EAAS,GAKb,OAAKr/I,GAELw0K,EAAMx1K,QAAQgB,EAAQ6G,MAAM,OAAO,SAAgB07E,GAKjD,GAJA3lF,EAAI2lF,EAAKn/E,QAAQ,KACjB2J,EAAMynK,EAAM1vJ,KAAKy9D,EAAKpjF,OAAO,EAAGvC,IAAI4O,cACpCrN,EAAMq2K,EAAM1vJ,KAAKy9D,EAAKpjF,OAAOvC,EAAI,IAE7BmQ,EAAK,CACP,GAAIsyI,EAAOtyI,IAAQquK,EAAkBh4K,QAAQ2J,IAAQ,EACnD,OAGAsyI,EAAOtyI,GADG,eAARA,GACasyI,EAAOtyI,GAAOsyI,EAAOtyI,GAAO,IAAIyI,OAAO,CAACrX,IAEzCkhJ,EAAOtyI,GAAOsyI,EAAOtyI,GAAO,KAAO5O,EAAMA,MAKtDkhJ,GAnBgBA,0BCVzB7qI,EAAOC,QAAU,SAAgB7I,GAC/B,OAAO,SAAcgM,GACnB,OAAOhM,EAASvJ,MAAM,KAAMuV,kCCtBhC,IAAIwU,EAAO,EAAQ,MAMfltB,EAAWjE,OAAOW,UAAUsD,SAQhC,SAAS2Y,EAAQ1Z,GACf,MAA8B,mBAAvBe,EAAS9C,KAAK+B,GASvB,SAASg4K,EAAYh4K,GACnB,YAAsB,IAARA,EA4EhB,SAAS86K,EAAS96K,GAChB,OAAe,OAARA,GAA+B,iBAARA,EAuChC,SAASmuB,EAAWnuB,GAClB,MAA8B,sBAAvBe,EAAS9C,KAAK+B,GAwEvB,SAASa,EAAQ4V,EAAKqH,GAEpB,GAAIrH,QAUJ,GALmB,iBAARA,IAETA,EAAM,CAACA,IAGLiD,EAAQjD,GAEV,IAAK,IAAIhY,EAAI,EAAG++F,EAAI/mF,EAAI7X,OAAQH,EAAI++F,EAAG/+F,IACrCqf,EAAG7f,KAAK,KAAMwY,EAAIhY,GAAIA,EAAGgY,QAI3B,IAAK,IAAI7H,KAAO6H,EACV3Z,OAAOW,UAAUJ,eAAeY,KAAKwY,EAAK7H,IAC5CkP,EAAG7f,KAAK,KAAMwY,EAAI7H,GAAMA,EAAK6H,GAoFrCJ,EAAOC,QAAU,CACfoD,QAASA,EACTlZ,cApRF,SAAuBR,GACrB,MAA8B,yBAAvBe,EAAS9C,KAAK+B,IAoRrBu7K,SAhSF,SAAkBv7K,GAChB,OAAe,OAARA,IAAiBg4K,EAAYh4K,IAA4B,OAApBA,EAAIxC,cAAyBw6K,EAAYh4K,EAAIxC,cAChD,mBAA7BwC,EAAIxC,YAAY+9K,UAA2Bv7K,EAAIxC,YAAY+9K,SAASv7K,IA+RhF82K,WA5QF,SAAoB92K,GAClB,MAA4B,oBAAbk9K,UAA8Bl9K,aAAek9K,UA4Q5DvB,kBAnQF,SAA2B37K,GAOzB,MAL4B,oBAAhBkB,aAAiCA,YAAkB,OACpDA,YAAYi8K,OAAOn9K,GAEnB,GAAUA,EAAU,QAAMA,EAAI0J,kBAAkBxI,aA+P3D8zJ,SApPF,SAAkBh1J,GAChB,MAAsB,iBAARA,GAoPdqjK,SA3OF,SAAkBrjK,GAChB,MAAsB,iBAARA,GA2Od86K,SAAUA,EACV9C,YAAaA,EACbt4C,OA1NF,SAAgB1/H,GACd,MAA8B,kBAAvBe,EAAS9C,KAAK+B,IA0NrBy7K,OAjNF,SAAgBz7K,GACd,MAA8B,kBAAvBe,EAAS9C,KAAK+B,IAiNrB07K,OAxMF,SAAgB17K,GACd,MAA8B,kBAAvBe,EAAS9C,KAAK+B,IAwMrBmuB,WAAYA,EACZqtJ,SAtLF,SAAkBx7K,GAChB,OAAO86K,EAAS96K,IAAQmuB,EAAWnuB,EAAIo9K,OAsLvCxB,kBA7KF,SAA2B57K,GACzB,MAAkC,oBAApBq9K,iBAAmCr9K,aAAeq9K,iBA6KhEzF,qBAjJF,WACE,OAAyB,oBAAdh9J,WAAoD,gBAAtBA,UAAU0iK,SACY,iBAAtB1iK,UAAU0iK,SACY,OAAtB1iK,UAAU0iK,UAI/B,oBAAXzsK,QACa,oBAAbqE,UA0ITrU,QAASA,EACTg2B,MA/EF,SAASA,IACP,IAAI7yB,EAAS,GACb,SAASu5K,EAAYv9K,EAAK4O,GACG,iBAAhB5K,EAAO4K,IAAoC,iBAAR5O,EAC5CgE,EAAO4K,GAAOioB,EAAM7yB,EAAO4K,GAAM5O,GAEjCgE,EAAO4K,GAAO5O,EAIlB,IAAK,IAAIvB,EAAI,EAAG++F,EAAI7+F,UAAUC,OAAQH,EAAI++F,EAAG/+F,IAC3CoC,EAAQlC,UAAUF,GAAI8+K,GAExB,OAAOv5K,GAmEP+2K,UAxDF,SAASA,IACP,IAAI/2K,EAAS,GACb,SAASu5K,EAAYv9K,EAAK4O,GACG,iBAAhB5K,EAAO4K,IAAoC,iBAAR5O,EAC5CgE,EAAO4K,GAAOmsK,EAAU/2K,EAAO4K,GAAM5O,GAErCgE,EAAO4K,GADiB,iBAAR5O,EACF+6K,EAAU,GAAI/6K,GAEdA,EAIlB,IAAK,IAAIvB,EAAI,EAAG++F,EAAI7+F,UAAUC,OAAQH,EAAI++F,EAAG/+F,IAC3CoC,EAAQlC,UAAUF,GAAI8+K,GAExB,OAAOv5K,GA0CP0rF,OA/BF,SAAgBrqE,EAAGloB,EAAGsE,GAQpB,OAPAZ,EAAQ1D,GAAG,SAAqB6C,EAAK4O,GAEjCyW,EAAEzW,GADAnN,GAA0B,mBAARzB,EACXiuB,EAAKjuB,EAAKyB,GAEVzB,KAGNqlB,GAwBPsB,KAzKF,SAAc/lB,GACZ,OAAOA,EAAI0Q,QAAQ,OAAQ,IAAIA,QAAQ,OAAQ,6BCrKzC,SAAWgF,EAAS83H,EAAGovC,GAAU,aAKvC,SAASnkK,EAAkB3K,EAAQ4K,GACjC,IAAK,IAAI7a,EAAI,EAAGA,EAAI6a,EAAM1a,OAAQH,IAAK,CACrC,IAAI8a,EAAaD,EAAM7a,GACvB8a,EAAWjO,WAAaiO,EAAWjO,aAAc,EACjDiO,EAAWhO,cAAe,EACtB,UAAWgO,IAAYA,EAAW7C,UAAW,GACjD5Z,OAAOuO,eAAeqD,EAAQ6K,EAAW3K,IAAK2K,IAIlD,SAASkkK,EAAa51J,EAAaG,EAAY01J,GAG7C,OAFI11J,GAAY3O,EAAkBwO,EAAYpqB,UAAWuqB,GACrD01J,GAAarkK,EAAkBwO,EAAa61J,GACzC71J,EAGT,SAAS5Q,EAAgBR,EAAK7H,EAAK1L,GAYjC,OAXI0L,KAAO6H,EACT3Z,OAAOuO,eAAeoL,EAAK7H,EAAK,CAC9B1L,MAAOA,EACPoI,YAAY,EACZC,cAAc,EACdmL,UAAU,IAGZD,EAAI7H,GAAO1L,EAGNuT,EAGT,SAASU,EAAQirF,EAAQu7E,GACvB,IAAIh2K,EAAO7K,OAAO6K,KAAKy6F,GAEvB,GAAItlG,OAAOsa,sBAAuB,CAChC,IAAIqrD,EAAU3lE,OAAOsa,sBAAsBgrF,GACvCu7E,IAAgBl7G,EAAUA,EAAQnrD,QAAO,SAAUC,GACrD,OAAOza,OAAO0a,yBAAyB4qF,EAAQ7qF,GAAKjM,eAEtD3D,EAAKvE,KAAKc,MAAMyD,EAAM86D,GAGxB,OAAO96D,EAGT,SAASi2K,EAAelvK,GACtB,IAAK,IAAIjQ,EAAI,EAAGA,EAAIE,UAAUC,OAAQH,IAAK,CACzC,IAAIoY,EAAyB,MAAhBlY,UAAUF,GAAaE,UAAUF,GAAK,GAE/CA,EAAI,EACN0Y,EAAQra,OAAO+Z,IAAS,GAAMhW,SAAQ,SAAU+N,GAC9CqI,EAAgBvI,EAAQE,EAAKiI,EAAOjI,OAE7B9R,OAAO+gL,0BAChB/gL,OAAOupG,iBAAiB33F,EAAQ5R,OAAO+gL,0BAA0BhnK,IAEjEM,EAAQra,OAAO+Z,IAAShW,SAAQ,SAAU+N,GACxC9R,OAAOuO,eAAeqD,EAAQE,EAAK9R,OAAO0a,yBAAyBX,EAAQjI,OAKjF,OAAOF,EAjET0/H,EAAIA,GAAKA,EAAE/wI,eAAe,WAAa+wI,EAAW,QAAIA,EACtDovC,EAASA,GAAUA,EAAOngL,eAAe,WAAamgL,EAAgB,QAAIA,EAqF1E,IAAIM,EAAiB,gBAsBrB,SAASC,EAAsBhxH,GAC7B,IAAIhvD,EAAQR,KAERygL,GAAS,EASb,OARA5vC,EAAE7wI,MAAMg0F,IAAI0sF,EAAKH,gBAAgB,WAC/BE,GAAS,KAEX5vK,YAAW,WACJ4vK,GACHC,EAAKC,qBAAqBngL,KAE3BgvD,GACIxvD,KAcT,IAAI0gL,EAAO,CACTH,eAAgB,kBAChBK,OAAQ,SAAgBjmK,GACtB,GAEEA,MApDQ,IAoDK4I,KAAKC,gBACX7L,SAASkpK,eAAelmK,IAEjC,OAAOA,GAETmmK,uBAAwB,SAAgCjiK,GACtD,IAAI2xH,EAAW3xH,EAAQC,aAAa,eAEpC,IAAK0xH,GAAyB,MAAbA,EAAkB,CACjC,IAAIuwC,EAAWliK,EAAQC,aAAa,QACpC0xH,EAAWuwC,GAAyB,MAAbA,EAAmBA,EAAS33J,OAAS,GAG9D,IACE,OAAOzR,SAAS6G,cAAcgyH,GAAYA,EAAW,KACrD,MAAOtpI,GACP,OAAO,OAGX85K,iCAAkC,SAA0CniK,GAC1E,IAAKA,EACH,OAAO,EAIT,IAAIsd,EAAqB00G,EAAEhyH,GAASqM,IAAI,uBACpC8Q,EAAkB60G,EAAEhyH,GAASqM,IAAI,oBACjC+1J,EAA0Bh0J,WAAWkP,GACrC+kJ,EAAuBj0J,WAAW+O,GAEtC,OAAKilJ,GAA4BC,GAKjC/kJ,EAAqBA,EAAmBhxB,MAAM,KAAK,GACnD6wB,EAAkBA,EAAgB7wB,MAAM,KAAK,GAvFnB,KAwFlB8hB,WAAWkP,GAAsBlP,WAAW+O,KAN3C,GAQX6/E,OAAQ,SAAgBh9F,GACtB,OAAOA,EAAQqb,cAEjBymJ,qBAAsB,SAA8B9hK,GAClDgyH,EAAEhyH,GAAS2zE,QAAQ+tF,IAGrBY,sBAAuB,WACrB,OAAOrgJ,QAAQy/I,IAEjBa,UAAW,SAAmBloK,GAC5B,OAAQA,EAAI,IAAMA,GAAK0yF,UAEzBy1E,gBAAiB,SAAyBr8G,EAAeplD,EAAQ0hK,GAC/D,IAAK,IAAIC,KAAYD,EACnB,GAAI/hL,OAAOW,UAAUJ,eAAeY,KAAK4gL,EAAaC,GAAW,CAC/D,IAAIC,EAAgBF,EAAYC,GAC5B57K,EAAQia,EAAO2hK,GACfE,EAAY97K,GAAS+6K,EAAKU,UAAUz7K,GAAS,WA1GzCuT,EA0G4DvT,EAzGnE,GAAGnC,SAAS9C,KAAKwY,GAAKkV,MAAM,eAAe,GAAGte,eA2G/C,IAAK,IAAIoc,OAAOs1J,GAAephK,KAAKqhK,GAClC,MAAM,IAAI9gL,MAAMqkE,EAAct5C,cAAds5C,aAAoDu8G,EAAW,oBAAwBE,EAAvFz8G,wBAAsIw8G,EAAgB,MA7GhL,IAAgBtoK,GAkHdwoK,eAAgB,SAAwB7iK,GACtC,IAAKlH,SAASgG,gBAAgBgkK,aAC5B,OAAO,KAIT,GAAmC,mBAAxB9iK,EAAQ+iK,YAA4B,CAC7C,IAAI7+D,EAAOlkG,EAAQ+iK,cACnB,OAAO7+D,aAAgB8+D,WAAa9+D,EAAO,KAG7C,OAAIlkG,aAAmBgjK,WACdhjK,EAIJA,EAAQkvB,WAIN2yI,EAAKgB,eAAe7iK,EAAQkvB,YAH1B,MAKX+zI,gBAAiB,WACf,QAAiB,IAANjxC,EACT,MAAM,IAAIprI,UAAU,kGAGtB,IAAI0I,EAAU0iI,EAAEtwH,GAAGwhK,OAAO52K,MAAM,KAAK,GAAGA,MAAM,KAO9C,GAAIgD,EAAQ,GALE,GAKcA,EAAQ,GAJrB,GAFA,IAMsCA,EAAQ,IAJ9C,IAIiEA,EAAQ,IAAmBA,EAAQ,GAHpG,GAGqHA,EAAQ,IAF7H,EAGb,MAAM,IAAIxN,MAAM,iFAItB+/K,EAAKoB,kBAvHHjxC,EAAEtwH,GAAGyhK,qBAAuBxB,EAC5B3vC,EAAE38H,MAAM+tK,QAAQvB,EAAKH,gBA9Bd,CACL2B,SAAU3B,EACV4B,aAAc5B,EACdppB,OAAQ,SAAgBjjJ,GACtB,GAAI28H,EAAE38H,EAAM/C,QAAQixK,GAAGpiL,MACrB,OAAOkU,EAAMmuK,UAAU/zI,QAAQ3nC,MAAM3G,KAAMoB,aAwJnD,IAEIkhL,EAAW,WAGXC,EAAqB1xC,EAAEtwH,GAAO,MAI9BiiK,EAAQ,CACVC,MAAO,iBACPC,OAAQ,kBACRC,eAAgB,2BAEdC,EACK,QADLA,EAEI,OAFJA,EAGI,OAQJC,EAEJ,WACE,SAASA,EAAMhkK,GACb7e,KAAKw6B,SAAW3b,EAIlB,IAAIikK,EAASD,EAAM3iL,UAqGnB,OAlGA4iL,EAAOpvK,MAAQ,SAAemL,GAC5B,IAAIuvG,EAAcpuH,KAAKw6B,SAEnB3b,IACFuvG,EAAcpuH,KAAK+iL,gBAAgBlkK,IAGnB7e,KAAKgjL,mBAAmB50D,GAE1B15B,sBAIhB10F,KAAKijL,eAAe70D,IAGtB00D,EAAOt7K,QAAU,WACfqpI,EAAEqyC,WAAWljL,KAAKw6B,SAAU8nJ,GAC5BtiL,KAAKw6B,SAAW,MAIlBsoJ,EAAOC,gBAAkB,SAAyBlkK,GAChD,IAAI2xH,EAAWkwC,EAAKI,uBAAuBjiK,GACvCsgC,GAAS,EAUb,OARIqxF,IACFrxF,EAASxnC,SAAS6G,cAAcgyH,IAG7BrxF,IACHA,EAAS0xF,EAAEhyH,GAAS+xH,QAAQ,IAAMgyC,GAAiB,IAG9CzjI,GAGT2jI,EAAOE,mBAAqB,SAA4BnkK,GACtD,IAAIskK,EAAatyC,EAAE2xC,MAAMA,EAAMC,OAE/B,OADA5xC,EAAEhyH,GAAS2zE,QAAQ2wF,GACZA,GAGTL,EAAOG,eAAiB,SAAwBpkK,GAC9C,IAAIre,EAAQR,KAIZ,GAFA6wI,EAAEhyH,GAASmzH,YAAY4wC,GAElB/xC,EAAEhyH,GAASukK,SAASR,GAAzB,CAMA,IAAIzmJ,EAAqBukJ,EAAKM,iCAAiCniK,GAC/DgyH,EAAEhyH,GAASm1E,IAAI0sF,EAAKH,gBAAgB,SAAUrsK,GAC5C,OAAO1T,EAAM6iL,gBAAgBxkK,EAAS3K,MACrC8tK,qBAAqB7lJ,QARtBn8B,KAAKqjL,gBAAgBxkK,IAWzBikK,EAAOO,gBAAkB,SAAyBxkK,GAChDgyH,EAAEhyH,GAASykK,SAAS9wF,QAAQgwF,EAAME,QAAQ3gH,UAI5C8gH,EAAMU,iBAAmB,SAA0B3jK,GACjD,OAAO5f,KAAKwjL,MAAK,WACf,IAAIC,EAAW5yC,EAAE7wI,MACb8C,EAAO2gL,EAAS3gL,KAAKw/K,GAEpBx/K,IACHA,EAAO,IAAI+/K,EAAM7iL,MACjByjL,EAAS3gL,KAAKw/K,EAAUx/K,IAGX,UAAX8c,GACF9c,EAAK8c,GAAQ5f,UAKnB6iL,EAAMa,eAAiB,SAAwBC,GAC7C,OAAO,SAAUzvK,GACXA,GACFA,EAAM+sB,iBAGR0iJ,EAAcjwK,MAAM1T,QAIxBkgL,EAAa2C,EAAO,KAAM,CAAC,CACzBxxK,IAAK,UACL3P,IAAK,WACH,MAjIQ,YAqILmhL,EA3GT,GAoHAhyC,EAAEl5H,UAAU/H,GAAG4yK,EAAMG,eAxIV,yBAwI4CE,EAAMa,eAAe,IAAIb,IAOhFhyC,EAAEtwH,GAAO,MAAIsiK,EAAMU,iBACnB1yC,EAAEtwH,GAAO,MAAE+J,YAAcu4J,EAEzBhyC,EAAEtwH,GAAO,MAAEqjK,WAAa,WAEtB,OADA/yC,EAAEtwH,GAAO,MAAIgiK,EACNM,EAAMU,kBASf,IAEIM,EAAa,YAGbC,EAAuBjzC,EAAEtwH,GAAS,OAClCwjK,EACM,SADNA,EAEM,MAFNA,EAGK,QAELC,EACkB,0BADlBA,EAEY,0BAFZA,EAGW,yBAHXA,EAIoB,+BAJpBA,EAKK,6BALLA,EAMM,UANNA,EAOM,OAENC,EAAU,CACZtB,eAAgB,2BAChBuB,oBAAqB,mDACrBC,cAAe,2BAQbxpG,EAEJ,WACE,SAASA,EAAO97D,GACd7e,KAAKw6B,SAAW3b,EAIlB,IAAIikK,EAASnoG,EAAOz6E,UAgFpB,OA7EA4iL,EAAOhtB,OAAS,WACd,IAAIsuB,GAAqB,EACrBC,GAAiB,EACjBj2D,EAAcyiB,EAAE7wI,KAAKw6B,UAAUo2G,QAAQozC,GAAyB,GAEpE,GAAI51D,EAAa,CACf,IAAInjH,EAAQjL,KAAKw6B,SAAShc,cAAcwlK,GAExC,GAAI/4K,EAAO,CACT,GAAmB,UAAfA,EAAMqB,KACR,GAAIrB,EAAMs9C,SAAWvoD,KAAKw6B,SAAS3K,UAAU0H,SAASwsJ,GACpDK,GAAqB,MAChB,CACL,IAAIzvI,EAAgBy5E,EAAY5vG,cAAcwlK,GAE1CrvI,GACFk8F,EAAEl8F,GAAeq9F,YAAY+xC,OAGT,aAAf94K,EAAMqB,KACe,UAA1BtM,KAAKw6B,SAAS/O,SAAuBxgB,EAAMs9C,UAAYvoD,KAAKw6B,SAAS3K,UAAU0H,SAASwsJ,KAC1FK,GAAqB,GAIvBA,GAAqB,EAGnBA,IACFn5K,EAAMs9C,SAAWvoD,KAAKw6B,SAAS3K,UAAU0H,SAASwsJ,GAClDlzC,EAAE5lI,GAAOunF,QAAQ,WAGnBvnF,EAAMy5B,QACN2/I,GAAiB,GAIfrkL,KAAKw6B,SAAS8pJ,aAAa,aAAetkL,KAAKw6B,SAAS3K,UAAU0H,SAAS,cAC3E8sJ,GACFrkL,KAAKw6B,SAASrP,aAAa,gBAAiBnrB,KAAKw6B,SAAS3K,UAAU0H,SAASwsJ,IAG3EK,GACFvzC,EAAE7wI,KAAKw6B,UAAU+pJ,YAAYR,KAKnCjB,EAAOt7K,QAAU,WACfqpI,EAAEqyC,WAAWljL,KAAKw6B,SAAUqpJ,GAC5B7jL,KAAKw6B,SAAW,MAIlBmgD,EAAO4oG,iBAAmB,SAA0B3jK,GAClD,OAAO5f,KAAKwjL,MAAK,WACf,IAAI1gL,EAAO+tI,EAAE7wI,MAAM8C,KAAK+gL,GAEnB/gL,IACHA,EAAO,IAAI63E,EAAO36E,MAClB6wI,EAAE7wI,MAAM8C,KAAK+gL,EAAY/gL,IAGZ,WAAX8c,GACF9c,EAAK8c,SAKXsgK,EAAavlG,EAAQ,KAAM,CAAC,CAC1BtpE,IAAK,UACL3P,IAAK,WACH,MAlHU,YAsHPi5E,EAtFT,GA+FAk2D,EAAEl5H,UAAU/H,GAAGq0K,EAAQtB,eAAgBqB,GAA+B,SAAU9vK,GAC9E,IAAIovB,EAASpvB,EAAM/C,OAMnB,GAJK0/H,EAAEvtG,GAAQ8/I,SAASW,KACtBzgJ,EAASutG,EAAEvtG,GAAQstG,QAAQozC,GAAmB,KAG3C1gJ,GAAUA,EAAOghJ,aAAa,aAAehhJ,EAAOzT,UAAU0H,SAAS,YAC1ErjB,EAAM+sB,qBACD,CACL,IAAIujJ,EAAWlhJ,EAAO9kB,cAAcwlK,GAEpC,GAAIQ,IAAaA,EAASF,aAAa,aAAeE,EAAS30J,UAAU0H,SAAS,aAGhF,YAFArjB,EAAM+sB,iBAKR05C,EAAO4oG,iBAAiB7iL,KAAKmwI,EAAEvtG,GAAS,cAEzC1zB,GAAGq0K,EAAQC,oBAAqBF,GAA+B,SAAU9vK,GAC1E,IAAIovB,EAASutG,EAAE38H,EAAM/C,QAAQy/H,QAAQozC,GAAmB,GACxDnzC,EAAEvtG,GAAQihJ,YAAYR,EAAmB,eAAe3jK,KAAKlM,EAAM5H,UAErEukI,EAAEv9H,QAAQ1D,GAAGq0K,EAAQE,eAAe,WAKlC,IAFA,IAAIloI,EAAU,GAAG/vC,MAAMxL,KAAKiX,SAAS8sB,iBAAiBu/I,IAE7C9iL,EAAI,EAAG+vH,EAAMh1E,EAAQ56C,OAAQH,EAAI+vH,EAAK/vH,IAAK,CAClD,IAAIoiC,EAAS2Y,EAAQ/6C,GACjB+J,EAAQq4B,EAAO9kB,cAAcwlK,GAE7B/4K,EAAMs9C,SAAWt9C,EAAMq5K,aAAa,WACtChhJ,EAAOzT,UAAUmyC,IAAI+hH,GAErBzgJ,EAAOzT,UAAUkyC,OAAOgiH,GAO5B,IAAK,IAAI/8K,EAAK,EAAG0jB,GAFjBuxB,EAAU,GAAG/vC,MAAMxL,KAAKiX,SAAS8sB,iBAAiBu/I,KAElB3iL,OAAQ2F,EAAK0jB,EAAM1jB,IAAM,CACvD,IAAIy9K,EAAUxoI,EAAQj1C,GAEuB,SAAzCy9K,EAAQ3lK,aAAa,gBACvB2lK,EAAQ50J,UAAUmyC,IAAI+hH,GAEtBU,EAAQ50J,UAAUkyC,OAAOgiH,OAU/BlzC,EAAEtwH,GAAS,OAAIo6D,EAAO4oG,iBACtB1yC,EAAEtwH,GAAS,OAAE+J,YAAcqwD,EAE3Bk2D,EAAEtwH,GAAS,OAAEqjK,WAAa,WAExB,OADA/yC,EAAEtwH,GAAS,OAAIujK,EACRnpG,EAAO4oG,kBAShB,IAAImB,EAAS,WAETC,EAAa,cACbC,EAAc,eAEdC,EAAuBh0C,EAAEtwH,GAAGmkK,GAQ5BI,EAAU,CACZp2E,SAAU,IACVq2E,UAAU,EACVC,OAAO,EACPC,MAAO,QACP/pE,MAAM,EACN4E,OAAO,GAELolE,EAAc,CAChBx2E,SAAU,mBACVq2E,SAAU,UACVC,MAAO,mBACPC,MAAO,mBACP/pE,KAAM,UACN4E,MAAO,WAEL13D,EACI,OADJA,EAEI,OAFJA,EAGI,OAHJA,EAIK,QAEL+8H,EAAU,CACZC,MAAO,oBACPC,KAAM,mBACNC,QAAS,sBACTC,WAAY,yBACZC,WAAY,yBACZC,WAAY,yBACZC,UAAW,wBACXC,SAAU,uBACVC,YAAa,0BACbC,UAAW,wBACXC,WAAY,wBACZ3B,cAAe,4BACfxB,eAAgB,8BAEdoD,EACQ,WADRA,EAEM,SAFNA,EAGK,QAHLA,EAIK,sBAJLA,EAKI,qBALJA,EAMI,qBANJA,EAOI,qBAPJA,EASa,gBAEbC,EACM,UADNA,EAEW,wBAFXA,EAGI,iBAHJA,GAIQ,qBAJRA,GAKS,2CALTA,GAMU,uBANVA,GAOU,gCAPVA,GAQS,yBAETC,GAAc,CAChBC,MAAO,QACPC,IAAK,OAQHC,GAEJ,WACE,SAASA,EAASvnK,EAASe,GACzB5f,KAAKq+G,OAAS,KACdr+G,KAAKqmL,UAAY,KACjBrmL,KAAKsmL,eAAiB,KACtBtmL,KAAKumL,WAAY,EACjBvmL,KAAKwmL,YAAa,EAClBxmL,KAAKymL,aAAe,KACpBzmL,KAAK0mL,YAAc,EACnB1mL,KAAK2mL,YAAc,EACnB3mL,KAAKgf,QAAUhf,KAAK4mL,WAAWhnK,GAC/B5f,KAAKw6B,SAAW3b,EAChB7e,KAAK6mL,mBAAqB7mL,KAAKw6B,SAAShc,cAAcwnK,IACtDhmL,KAAK8mL,gBAAkB,iBAAkBnvK,SAASgG,iBAAmBN,UAAU0pK,eAAiB,EAChG/mL,KAAKgnL,cAAgBlmJ,QAAQxtB,OAAOowB,cAAgBpwB,OAAO2zK,gBAE3DjnL,KAAKknL,qBAIP,IAAIpE,EAASsD,EAASlmL,UAwctB,OArcA4iL,EAAO39K,KAAO,WACPnF,KAAKwmL,YACRxmL,KAAKmnL,OAAO/+H,IAIhB06H,EAAOsE,gBAAkB,YAGlBzvK,SAASk0E,QAAUglD,EAAE7wI,KAAKw6B,UAAU4nJ,GAAG,aAAsD,WAAvCvxC,EAAE7wI,KAAKw6B,UAAUtP,IAAI,eAC9ElrB,KAAKmF,QAIT29K,EAAOp3I,KAAO,WACP1rC,KAAKwmL,YACRxmL,KAAKmnL,OAAO/+H,IAIhB06H,EAAOmC,MAAQ,SAAe/wK,GACvBA,IACHlU,KAAKumL,WAAY,GAGfvmL,KAAKw6B,SAAShc,cAAcwnK,MAC9BtF,EAAKC,qBAAqB3gL,KAAKw6B,UAC/Bx6B,KAAKqnL,OAAM,IAGbC,cAActnL,KAAKqmL,WACnBrmL,KAAKqmL,UAAY,MAGnBvD,EAAOuE,MAAQ,SAAenzK,GACvBA,IACHlU,KAAKumL,WAAY,GAGfvmL,KAAKqmL,YACPiB,cAActnL,KAAKqmL,WACnBrmL,KAAKqmL,UAAY,MAGfrmL,KAAKgf,QAAQ0vF,WAAa1uG,KAAKumL,YACjCvmL,KAAKqmL,UAAYkB,aAAa5vK,SAAS6vK,gBAAkBxnL,KAAKonL,gBAAkBpnL,KAAKmF,MAAMurB,KAAK1wB,MAAOA,KAAKgf,QAAQ0vF,YAIxHo0E,EAAOrrK,GAAK,SAAYhQ,GACtB,IAAIjH,EAAQR,KAEZA,KAAKsmL,eAAiBtmL,KAAKw6B,SAAShc,cAAcwnK,GAElD,IAAIh1H,EAAchxD,KAAKynL,cAAcznL,KAAKsmL,gBAE1C,KAAI7+K,EAAQzH,KAAKq+G,OAAOh9G,OAAS,GAAKoG,EAAQ,GAI9C,GAAIzH,KAAKwmL,WACP31C,EAAE7wI,KAAKw6B,UAAUw5D,IAAImxF,EAAQE,MAAM,WACjC,OAAO7kL,EAAMiX,GAAGhQ,UAFpB,CAOA,GAAIupD,IAAgBvpD,EAGlB,OAFAzH,KAAKilL,aACLjlL,KAAKqnL,QAIP,IAAI3pJ,EAAYj2B,EAAQupD,EAAc5I,EAAiBA,EAEvDpoD,KAAKmnL,OAAOzpJ,EAAW19B,KAAKq+G,OAAO52G,MAGrCq7K,EAAOt7K,QAAU,WACfqpI,EAAE7wI,KAAKw6B,UAAUzqB,IAAI60K,GACrB/zC,EAAEqyC,WAAWljL,KAAKw6B,SAAUmqJ,GAC5B3kL,KAAKq+G,OAAS,KACdr+G,KAAKgf,QAAU,KACfhf,KAAKw6B,SAAW,KAChBx6B,KAAKqmL,UAAY,KACjBrmL,KAAKumL,UAAY,KACjBvmL,KAAKwmL,WAAa,KAClBxmL,KAAKsmL,eAAiB,KACtBtmL,KAAK6mL,mBAAqB,MAI5B/D,EAAO8D,WAAa,SAAoBhnK,GAGtC,OAFAA,EAASygK,EAAe,GAAIyE,EAAS,GAAIllK,GACzC8gK,EAAKW,gBAAgBqD,EAAQ9kK,EAAQslK,GAC9BtlK,GAGTkjK,EAAO4E,aAAe,WACpB,IAAIC,EAAYpkK,KAAK6/B,IAAIpjD,KAAK2mL,aAE9B,KAAIgB,GAnMc,IAmMlB,CAIA,IAAIjqJ,EAAYiqJ,EAAY3nL,KAAK2mL,YACjC3mL,KAAK2mL,YAAc,EAEfjpJ,EAAY,GACd19B,KAAK0rC,OAIHhO,EAAY,GACd19B,KAAKmF,SAIT29K,EAAOoE,mBAAqB,WAC1B,IAAIU,EAAS5nL,KAETA,KAAKgf,QAAQ+lK,UACfl0C,EAAE7wI,KAAKw6B,UAAU5qB,GAAGu1K,EAAQG,SAAS,SAAUpxK,GAC7C,OAAO0zK,EAAOC,SAAS3zK,MAIA,UAAvBlU,KAAKgf,QAAQimK,OACfp0C,EAAE7wI,KAAKw6B,UAAU5qB,GAAGu1K,EAAQI,YAAY,SAAUrxK,GAChD,OAAO0zK,EAAO3C,MAAM/wK,MACnBtE,GAAGu1K,EAAQK,YAAY,SAAUtxK,GAClC,OAAO0zK,EAAOP,MAAMnzK,MAIpBlU,KAAKgf,QAAQ8gG,OACf9/G,KAAK8nL,2BAIThF,EAAOgF,wBAA0B,WAC/B,IAAIC,EAAS/nL,KAEb,GAAKA,KAAK8mL,gBAAV,CAIA,IAAI74K,EAAQ,SAAeiG,GACrB6zK,EAAOf,eAAiBf,GAAY/xK,EAAMutB,cAAcumJ,YAAYt8J,eACtEq8J,EAAOrB,YAAcxyK,EAAMutB,cAAcF,QAC/BwmJ,EAAOf,gBACjBe,EAAOrB,YAAcxyK,EAAMutB,cAAcmB,QAAQ,GAAGrB,UAapD1I,EAAM,SAAa3kB,GACjB6zK,EAAOf,eAAiBf,GAAY/xK,EAAMutB,cAAcumJ,YAAYt8J,iBACtEq8J,EAAOpB,YAAczyK,EAAMutB,cAAcF,QAAUwmJ,EAAOrB,aAG5DqB,EAAOL,eAEsB,UAAzBK,EAAO/oK,QAAQimK,QAQjB8C,EAAO9C,QAEH8C,EAAOtB,cACTl1K,aAAaw2K,EAAOtB,cAGtBsB,EAAOtB,aAAe51K,YAAW,SAAUqD,GACzC,OAAO6zK,EAAOV,MAAMnzK,KA1RD,IA2RO6zK,EAAO/oK,QAAQ0vF,YAI/CmiC,EAAE7wI,KAAKw6B,SAASiK,iBAAiBuhJ,KAAsBp2K,GAAGu1K,EAAQW,YAAY,SAAUhgL,GACtF,OAAOA,EAAEm7B,oBAGPjhC,KAAKgnL,eACPn2C,EAAE7wI,KAAKw6B,UAAU5qB,GAAGu1K,EAAQS,aAAa,SAAU1xK,GACjD,OAAOjG,EAAMiG,MAEf28H,EAAE7wI,KAAKw6B,UAAU5qB,GAAGu1K,EAAQU,WAAW,SAAU3xK,GAC/C,OAAO2kB,EAAI3kB,MAGblU,KAAKw6B,SAAS3K,UAAUmyC,IAAI+jH,KAE5Bl1C,EAAE7wI,KAAKw6B,UAAU5qB,GAAGu1K,EAAQM,YAAY,SAAUvxK,GAChD,OAAOjG,EAAMiG,MAEf28H,EAAE7wI,KAAKw6B,UAAU5qB,GAAGu1K,EAAQO,WAAW,SAAUxxK,GAC/C,OAtDO,SAAcA,GAEnBA,EAAMutB,cAAcmB,SAAW1uB,EAAMutB,cAAcmB,QAAQvhC,OAAS,EACtE0mL,EAAOpB,YAAc,EAErBoB,EAAOpB,YAAczyK,EAAMutB,cAAcmB,QAAQ,GAAGrB,QAAUwmJ,EAAOrB,YAiD9DzvH,CAAK/iD,MAEd28H,EAAE7wI,KAAKw6B,UAAU5qB,GAAGu1K,EAAQQ,UAAU,SAAUzxK,GAC9C,OAAO2kB,EAAI3kB,SAKjB4uK,EAAO+E,SAAW,SAAkB3zK,GAClC,IAAI,kBAAkBkM,KAAKlM,EAAM/C,OAAOsa,SAIxC,OAAQvX,EAAM+uB,OACZ,KAnUmB,GAoUjB/uB,EAAM+sB,iBACNjhC,KAAK0rC,OACL,MAEF,KAtUoB,GAuUlBx3B,EAAM+sB,iBACNjhC,KAAKmF,SAKX29K,EAAO2E,cAAgB,SAAuB5oK,GAE5C,OADA7e,KAAKq+G,OAASx/F,GAAWA,EAAQkvB,WAAa,GAAG7hC,MAAMxL,KAAKme,EAAQkvB,WAAWtJ,iBAAiBuhJ,IAAoB,GAC7GhmL,KAAKq+G,OAAO32G,QAAQmX,IAG7BikK,EAAOmF,oBAAsB,SAA6BvqJ,EAAWiX,GACnE,IAAIuzI,EAAkBxqJ,IAAc0qB,EAChC+/H,EAAkBzqJ,IAAc0qB,EAEhC4I,EAAchxD,KAAKynL,cAAc9yI,GAEjCiZ,EAAgB5tD,KAAKq+G,OAAOh9G,OAAS,EAGzC,IAFoB8mL,GAAmC,IAAhBn3H,GAAqBk3H,GAAmBl3H,IAAgBpD,KAEzE5tD,KAAKgf,QAAQk8F,KACjC,OAAOvmE,EAGT,IACIxN,GAAa6pB,GADLtzB,IAAc0qB,GAAkB,EAAI,IACRpoD,KAAKq+G,OAAOh9G,OACpD,OAAsB,IAAf8lC,EAAmBnnC,KAAKq+G,OAAOr+G,KAAKq+G,OAAOh9G,OAAS,GAAKrB,KAAKq+G,OAAOl3E,IAG9E27I,EAAOsF,mBAAqB,SAA4BC,EAAeC,GACrE,IAAIC,EAAcvoL,KAAKynL,cAAcY,GAEjCG,EAAYxoL,KAAKynL,cAAcznL,KAAKw6B,SAAShc,cAAcwnK,IAE3DyC,EAAa53C,EAAE2xC,MAAM2C,EAAQC,MAAO,CACtCiD,cAAeA,EACf3qJ,UAAW4qJ,EACXj/K,KAAMm/K,EACN/wK,GAAI8wK,IAGN,OADA13C,EAAE7wI,KAAKw6B,UAAUg4D,QAAQi2F,GAClBA,GAGT3F,EAAO4F,2BAA6B,SAAoC7pK,GACtE,GAAI7e,KAAK6mL,mBAAoB,CAC3B,IAAI8B,EAAa,GAAGz8K,MAAMxL,KAAKV,KAAK6mL,mBAAmBpiJ,iBAAiBuhJ,IACxEn1C,EAAE83C,GAAY32C,YAAY+zC,GAE1B,IAAI6C,EAAgB5oL,KAAK6mL,mBAAmB3gK,SAASlmB,KAAKynL,cAAc5oK,IAEpE+pK,GACF/3C,EAAE+3C,GAAeC,SAAS9C,KAKhCjD,EAAOqE,OAAS,SAAgBzpJ,EAAW7e,GACzC,IAWIiqK,EACAC,EACAT,EAbAU,EAAShpL,KAET20C,EAAgB30C,KAAKw6B,SAAShc,cAAcwnK,GAE5CiD,EAAqBjpL,KAAKynL,cAAc9yI,GAExCu0I,EAAcrqK,GAAW81B,GAAiB30C,KAAKioL,oBAAoBvqJ,EAAWiX,GAE9Ew0I,EAAmBnpL,KAAKynL,cAAcyB,GAEtCE,EAAYtoJ,QAAQ9gC,KAAKqmL,WAe7B,GAVI3oJ,IAAc0qB,GAChB0gI,EAAuB/C,EACvBgD,EAAiBhD,EACjBuC,EAAqBlgI,IAErB0gI,EAAuB/C,EACvBgD,EAAiBhD,EACjBuC,EAAqBlgI,GAGnB8gI,GAAer4C,EAAEq4C,GAAa9F,SAAS2C,GACzC/lL,KAAKwmL,YAAa,OAMpB,IAFiBxmL,KAAKooL,mBAAmBc,EAAaZ,GAEvC5zF,sBAIV//C,GAAkBu0I,EAAvB,CAKAlpL,KAAKwmL,YAAa,EAEd4C,GACFppL,KAAKilL,QAGPjlL,KAAK0oL,2BAA2BQ,GAEhC,IAAIG,EAAYx4C,EAAE2xC,MAAM2C,EAAQE,KAAM,CACpCgD,cAAea,EACfxrJ,UAAW4qJ,EACXj/K,KAAM4/K,EACNxxK,GAAI0xK,IAGN,GAAIt4C,EAAE7wI,KAAKw6B,UAAU4oJ,SAAS2C,GAAoB,CAChDl1C,EAAEq4C,GAAaL,SAASE,GACxBrI,EAAK7kE,OAAOqtE,GACZr4C,EAAEl8F,GAAek0I,SAASC,GAC1Bj4C,EAAEq4C,GAAaL,SAASC,GACxB,IAAIQ,EAAsB/jJ,SAAS2jJ,EAAYpqK,aAAa,iBAAkB,IAE1EwqK,GACFtpL,KAAKgf,QAAQuqK,gBAAkBvpL,KAAKgf,QAAQuqK,iBAAmBvpL,KAAKgf,QAAQ0vF,SAC5E1uG,KAAKgf,QAAQ0vF,SAAW46E,GAExBtpL,KAAKgf,QAAQ0vF,SAAW1uG,KAAKgf,QAAQuqK,iBAAmBvpL,KAAKgf,QAAQ0vF,SAGvE,IAAIvyE,EAAqBukJ,EAAKM,iCAAiCrsI,GAC/Dk8F,EAAEl8F,GAAeq/C,IAAI0sF,EAAKH,gBAAgB,WACxC1vC,EAAEq4C,GAAal3C,YAAY82C,EAAuB,IAAMC,GAAgBF,SAAS9C,GACjFl1C,EAAEl8F,GAAeq9F,YAAY+zC,EAAqB,IAAMgD,EAAiB,IAAMD,GAC/EE,EAAOxC,YAAa,EACpB31K,YAAW,WACT,OAAOggI,EAAEm4C,EAAOxuJ,UAAUg4D,QAAQ62F,KACjC,MACFrH,qBAAqB7lJ,QAExB00G,EAAEl8F,GAAeq9F,YAAY+zC,GAC7Bl1C,EAAEq4C,GAAaL,SAAS9C,GACxB/lL,KAAKwmL,YAAa,EAClB31C,EAAE7wI,KAAKw6B,UAAUg4D,QAAQ62F,GAGvBD,GACFppL,KAAKqnL,UAKTjB,EAAS7C,iBAAmB,SAA0B3jK,GACpD,OAAO5f,KAAKwjL,MAAK,WACf,IAAI1gL,EAAO+tI,EAAE7wI,MAAM8C,KAAK6hL,GAEpB3lK,EAAUqhK,EAAe,GAAIyE,EAAS,GAAIj0C,EAAE7wI,MAAM8C,QAEhC,iBAAX8c,IACTZ,EAAUqhK,EAAe,GAAIrhK,EAAS,GAAIY,IAG5C,IAAIkxC,EAA2B,iBAAXlxC,EAAsBA,EAASZ,EAAQgmK,MAO3D,GALKliL,IACHA,EAAO,IAAIsjL,EAASpmL,KAAMgf,GAC1B6xH,EAAE7wI,MAAM8C,KAAK6hL,EAAY7hL,IAGL,iBAAX8c,EACT9c,EAAK2U,GAAGmI,QACH,GAAsB,iBAAXkxC,EAAqB,CACrC,QAA4B,IAAjBhuD,EAAKguD,GACd,MAAM,IAAIrrD,UAAU,oBAAuBqrD,EAAS,KAGtDhuD,EAAKguD,UACI9xC,EAAQ0vF,UAAY1vF,EAAQwqK,OACrC1mL,EAAKmiL,QACLniL,EAAKukL,aAKXjB,EAASqD,qBAAuB,SAA8Bv1K,GAC5D,IAAIs8H,EAAWkwC,EAAKI,uBAAuB9gL,MAE3C,GAAKwwI,EAAL,CAIA,IAAIr/H,EAAS0/H,EAAEL,GAAU,GAEzB,GAAKr/H,GAAW0/H,EAAE1/H,GAAQiyK,SAAS2C,GAAnC,CAIA,IAAInmK,EAASygK,EAAe,GAAIxvC,EAAE1/H,GAAQrO,OAAQ,GAAI+tI,EAAE7wI,MAAM8C,QAE1D4mL,EAAa1pL,KAAK8e,aAAa,iBAE/B4qK,IACF9pK,EAAO8uF,UAAW,GAGpB03E,EAAS7C,iBAAiB7iL,KAAKmwI,EAAE1/H,GAASyO,GAEtC8pK,GACF74C,EAAE1/H,GAAQrO,KAAK6hL,GAAYltK,GAAGiyK,GAGhCx1K,EAAM+sB,oBAGRi/I,EAAakG,EAAU,KAAM,CAAC,CAC5B/0K,IAAK,UACL3P,IAAK,WACH,MAriBU,UAuiBX,CACD2P,IAAK,UACL3P,IAAK,WACH,OAAOojL,MAIJsB,EA5dT,GAqeAv1C,EAAEl5H,UAAU/H,GAAGu1K,EAAQxC,eAAgBqD,GAAuBI,GAASqD,sBACvE54C,EAAEv9H,QAAQ1D,GAAGu1K,EAAQhB,eAAe,WAGlC,IAFA,IAAIwF,EAAY,GAAGz9K,MAAMxL,KAAKiX,SAAS8sB,iBAAiBuhJ,KAE/C9kL,EAAI,EAAG+vH,EAAM04D,EAAUtoL,OAAQH,EAAI+vH,EAAK/vH,IAAK,CACpD,IAAI0oL,EAAY/4C,EAAE84C,EAAUzoL,IAE5BklL,GAAS7C,iBAAiB7iL,KAAKkpL,EAAWA,EAAU9mL,YASxD+tI,EAAEtwH,GAAGmkK,GAAU0B,GAAS7C,iBACxB1yC,EAAEtwH,GAAGmkK,GAAQp6J,YAAc87J,GAE3Bv1C,EAAEtwH,GAAGmkK,GAAQd,WAAa,WAExB,OADA/yC,EAAEtwH,GAAGmkK,GAAUG,EACRuB,GAAS7C,kBASlB,IAAIsG,GAAS,WAETC,GAAa,cAGbC,GAAuBl5C,EAAEtwH,GAAGspK,IAC5BG,GAAY,CACdl0B,QAAQ,EACR32G,OAAQ,IAEN8qI,GAAgB,CAClBn0B,OAAQ,UACR32G,OAAQ,oBAEN+qI,GAAU,CACZC,KAAM,mBACNC,MAAO,oBACPC,KAAM,mBACNC,OAAQ,qBACR3H,eAAgB,8BAEd4H,GACI,OADJA,GAEQ,WAFRA,GAGU,aAHVA,GAIS,YAETC,GACK,QADLA,GAEM,SAENC,GACO,qBADPA,GAEW,2BAQXC,GAEJ,WACE,SAASA,EAAS7rK,EAASe,GACzB5f,KAAK2qL,kBAAmB,EACxB3qL,KAAKw6B,SAAW3b,EAChB7e,KAAKgf,QAAUhf,KAAK4mL,WAAWhnK,GAC/B5f,KAAK4qL,cAAgB,GAAG1+K,MAAMxL,KAAKiX,SAAS8sB,iBAAiB,mCAAwC5lB,EAAQtR,GAAhD,6CAA8GsR,EAAQtR,GAAK,OAGxL,IAFA,IAAIs9K,EAAa,GAAG3+K,MAAMxL,KAAKiX,SAAS8sB,iBAAiBgmJ,KAEhDvpL,EAAI,EAAG+vH,EAAM45D,EAAWxpL,OAAQH,EAAI+vH,EAAK/vH,IAAK,CACrD,IAAI4pL,EAAOD,EAAW3pL,GAClBsvI,EAAWkwC,EAAKI,uBAAuBgK,GACvCC,EAAgB,GAAG7+K,MAAMxL,KAAKiX,SAAS8sB,iBAAiB+rG,IAAWz2H,QAAO,SAAUixK,GACtF,OAAOA,IAAcnsK,KAGN,OAAb2xH,GAAqBu6C,EAAc1pL,OAAS,IAC9CrB,KAAKirL,UAAYz6C,EAEjBxwI,KAAK4qL,cAAc/kL,KAAKilL,IAI5B9qL,KAAKkrL,QAAUlrL,KAAKgf,QAAQmgC,OAASn/C,KAAKmrL,aAAe,KAEpDnrL,KAAKgf,QAAQmgC,QAChBn/C,KAAKorL,0BAA0BprL,KAAKw6B,SAAUx6B,KAAK4qL,eAGjD5qL,KAAKgf,QAAQ82I,QACf91J,KAAK81J,SAKT,IAAIgtB,EAAS4H,EAASxqL,UA4OtB,OAzOA4iL,EAAOhtB,OAAS,WACVjlB,EAAE7wI,KAAKw6B,UAAU4oJ,SAASmH,IAC5BvqL,KAAKqrL,OAELrrL,KAAKkpC,QAIT45I,EAAO55I,KAAO,WACZ,IAMIoiJ,EACAC,EAPA/qL,EAAQR,KAEZ,KAAIA,KAAK2qL,kBAAoB95C,EAAE7wI,KAAKw6B,UAAU4oJ,SAASmH,MAOnDvqL,KAAKkrL,SASgB,KARvBI,EAAU,GAAGp/K,MAAMxL,KAAKV,KAAKkrL,QAAQzmJ,iBAAiBgmJ,KAAqB1wK,QAAO,SAAU+wK,GAC1F,MAAoC,iBAAzBtqL,EAAMwe,QAAQmgC,OAChB2rI,EAAKhsK,aAAa,iBAAmBte,EAAMwe,QAAQmgC,OAGrD2rI,EAAKj7J,UAAU0H,SAASgzJ,QAGrBlpL,SACViqL,EAAU,MAIVA,IACFC,EAAc16C,EAAEy6C,GAASE,IAAIxrL,KAAKirL,WAAWnoL,KAAKgnL,MAE/ByB,EAAYZ,mBAHjC,CAQA,IAAIc,EAAa56C,EAAE2xC,MAAM0H,GAAQC,MAGjC,GAFAt5C,EAAE7wI,KAAKw6B,UAAUg4D,QAAQi5F,IAErBA,EAAW/2F,qBAAf,CAII42F,IACFZ,EAASnH,iBAAiB7iL,KAAKmwI,EAAEy6C,GAASE,IAAIxrL,KAAKirL,WAAY,QAE1DM,GACH16C,EAAEy6C,GAASxoL,KAAKgnL,GAAY,OAIhC,IAAI15H,EAAYpwD,KAAK0rL,gBAErB76C,EAAE7wI,KAAKw6B,UAAUw3G,YAAYu4C,IAAsB1B,SAAS0B,IAC5DvqL,KAAKw6B,SAASjT,MAAM6oC,GAAa,EAE7BpwD,KAAK4qL,cAAcvpL,QACrBwvI,EAAE7wI,KAAK4qL,eAAe54C,YAAYu4C,IAAuB5rK,KAAK,iBAAiB,GAGjF3e,KAAK2rL,kBAAiB,GAEtB,IAUIC,EAAa,UADUx7H,EAAU,GAAG1kC,cAAgB0kC,EAAUlkD,MAAM,IAEpEiwB,EAAqBukJ,EAAKM,iCAAiChhL,KAAKw6B,UACpEq2G,EAAE7wI,KAAKw6B,UAAUw5D,IAAI0sF,EAAKH,gBAZX,WACb1vC,EAAErwI,EAAMg6B,UAAUw3G,YAAYu4C,IAAwB1B,SAAS0B,IAAsB1B,SAAS0B,IAC9F/pL,EAAMg6B,SAASjT,MAAM6oC,GAAa,GAElC5vD,EAAMmrL,kBAAiB,GAEvB96C,EAAErwI,EAAMg6B,UAAUg4D,QAAQ03F,GAAQE,UAMgBpI,qBAAqB7lJ,GACzEn8B,KAAKw6B,SAASjT,MAAM6oC,GAAapwD,KAAKw6B,SAASoxJ,GAAc,QAG/D9I,EAAOuI,KAAO,WACZ,IAAIzD,EAAS5nL,KAEb,IAAIA,KAAK2qL,kBAAqB95C,EAAE7wI,KAAKw6B,UAAU4oJ,SAASmH,IAAxD,CAIA,IAAIkB,EAAa56C,EAAE2xC,MAAM0H,GAAQG,MAGjC,GAFAx5C,EAAE7wI,KAAKw6B,UAAUg4D,QAAQi5F,IAErBA,EAAW/2F,qBAAf,CAIA,IAAItkC,EAAYpwD,KAAK0rL,gBAErB1rL,KAAKw6B,SAASjT,MAAM6oC,GAAapwD,KAAKw6B,SAAS2oB,wBAAwBiN,GAAa,KACpFswH,EAAK7kE,OAAO77G,KAAKw6B,UACjBq2G,EAAE7wI,KAAKw6B,UAAUquJ,SAAS0B,IAAwBv4C,YAAYu4C,IAAsBv4C,YAAYu4C,IAChG,IAAIsB,EAAqB7rL,KAAK4qL,cAAcvpL,OAE5C,GAAIwqL,EAAqB,EACvB,IAAK,IAAI3qL,EAAI,EAAGA,EAAI2qL,EAAoB3qL,IAAK,CAC3C,IAAIsxF,EAAUxyF,KAAK4qL,cAAc1pL,GAC7BsvI,EAAWkwC,EAAKI,uBAAuBtuF,GAE1B,OAAbg+C,IACUK,EAAE,GAAG3kI,MAAMxL,KAAKiX,SAAS8sB,iBAAiB+rG,KAE3C4yC,SAASmH,KAClB15C,EAAEr+C,GAASq2F,SAAS0B,IAAuB5rK,KAAK,iBAAiB,IAMzE3e,KAAK2rL,kBAAiB,GAQtB3rL,KAAKw6B,SAASjT,MAAM6oC,GAAa,GACjC,IAAIj0B,EAAqBukJ,EAAKM,iCAAiChhL,KAAKw6B,UACpEq2G,EAAE7wI,KAAKw6B,UAAUw5D,IAAI0sF,EAAKH,gBARX,WACbqH,EAAO+D,kBAAiB,GAExB96C,EAAE+2C,EAAOptJ,UAAUw3G,YAAYu4C,IAAwB1B,SAAS0B,IAAsB/3F,QAAQ03F,GAAQI,WAKpDtI,qBAAqB7lJ,MAG3E2mJ,EAAO6I,iBAAmB,SAA0BG,GAClD9rL,KAAK2qL,iBAAmBmB,GAG1BhJ,EAAOt7K,QAAU,WACfqpI,EAAEqyC,WAAWljL,KAAKw6B,SAAUsvJ,IAC5B9pL,KAAKgf,QAAU,KACfhf,KAAKkrL,QAAU,KACflrL,KAAKw6B,SAAW,KAChBx6B,KAAK4qL,cAAgB,KACrB5qL,KAAK2qL,iBAAmB,MAI1B7H,EAAO8D,WAAa,SAAoBhnK,GAKtC,OAJAA,EAASygK,EAAe,GAAI2J,GAAW,GAAIpqK,IACpCk2I,OAASh1H,QAAQlhB,EAAOk2I,QAE/B4qB,EAAKW,gBAAgBwI,GAAQjqK,EAAQqqK,IAC9BrqK,GAGTkjK,EAAO4I,cAAgB,WAErB,OADe76C,EAAE7wI,KAAKw6B,UAAU4oJ,SAASoH,IACvBA,GAAkBA,IAGtC1H,EAAOqI,WAAa,WAClB,IAEIhsI,EAFA4oI,EAAS/nL,KAIT0gL,EAAKU,UAAUphL,KAAKgf,QAAQmgC,SAC9BA,EAASn/C,KAAKgf,QAAQmgC,YAEoB,IAA/Bn/C,KAAKgf,QAAQmgC,OAAO4iI,SAC7B5iI,EAASn/C,KAAKgf,QAAQmgC,OAAO,KAG/BA,EAASxnC,SAAS6G,cAAcxe,KAAKgf,QAAQmgC,QAG/C,IAAIqxF,EAAW,yCAA8CxwI,KAAKgf,QAAQmgC,OAAS,KAC/Ej5B,EAAW,GAAGha,MAAMxL,KAAKy+C,EAAO1a,iBAAiB+rG,IAIrD,OAHAK,EAAE3qH,GAAUs9J,MAAK,SAAUtiL,EAAG2d,GAC5BkpK,EAAOqD,0BAA0BV,EAASqB,sBAAsBltK,GAAU,CAACA,OAEtEsgC,GAGT2jI,EAAOsI,0BAA4B,SAAmCvsK,EAASmtK,GAC7E,IAAIC,EAASp7C,EAAEhyH,GAASukK,SAASmH,IAE7ByB,EAAa3qL,QACfwvI,EAAEm7C,GAAczH,YAAYgG,IAAwB0B,GAAQttK,KAAK,gBAAiBstK,IAKtFvB,EAASqB,sBAAwB,SAA+BltK,GAC9D,IAAI2xH,EAAWkwC,EAAKI,uBAAuBjiK,GAC3C,OAAO2xH,EAAW74H,SAAS6G,cAAcgyH,GAAY,MAGvDk6C,EAASnH,iBAAmB,SAA0B3jK,GACpD,OAAO5f,KAAKwjL,MAAK,WACf,IAAI0I,EAAQr7C,EAAE7wI,MACV8C,EAAOopL,EAAMppL,KAAKgnL,IAElB9qK,EAAUqhK,EAAe,GAAI2J,GAAW,GAAIkC,EAAMppL,OAAQ,GAAsB,iBAAX8c,GAAuBA,EAASA,EAAS,IAWlH,IATK9c,GAAQkc,EAAQ82I,QAAU,YAAY11I,KAAKR,KAC9CZ,EAAQ82I,QAAS,GAGdhzJ,IACHA,EAAO,IAAI4nL,EAAS1qL,KAAMgf,GAC1BktK,EAAMppL,KAAKgnL,GAAYhnL,IAGH,iBAAX8c,EAAqB,CAC9B,QAA4B,IAAjB9c,EAAK8c,GACd,MAAM,IAAIna,UAAU,oBAAuBma,EAAS,KAGtD9c,EAAK8c,UAKXsgK,EAAawK,EAAU,KAAM,CAAC,CAC5Br5K,IAAK,UACL3P,IAAK,WACH,MA/SU,UAiTX,CACD2P,IAAK,UACL3P,IAAK,WACH,OAAOsoL,OAIJU,EA9QT,GAuRA75C,EAAEl5H,UAAU/H,GAAGs6K,GAAQvH,eAAgB8H,IAAwB,SAAUv2K,GAEnC,MAAhCA,EAAMwhC,cAAcjqB,SACtBvX,EAAM+sB,iBAGR,IAAIkrJ,EAAWt7C,EAAE7wI,MACbwwI,EAAWkwC,EAAKI,uBAAuB9gL,MACvCosL,EAAY,GAAGlgL,MAAMxL,KAAKiX,SAAS8sB,iBAAiB+rG,IACxDK,EAAEu7C,GAAW5I,MAAK,WAChB,IAAI6I,EAAUx7C,EAAE7wI,MAEZ4f,EADOysK,EAAQvpL,KAAKgnL,IACJ,SAAWqC,EAASrpL,OAExC4nL,GAASnH,iBAAiB7iL,KAAK2rL,EAASzsK,SAS5CixH,EAAEtwH,GAAGspK,IAAUa,GAASnH,iBACxB1yC,EAAEtwH,GAAGspK,IAAQv/J,YAAcogK,GAE3B75C,EAAEtwH,GAAGspK,IAAQjG,WAAa,WAExB,OADA/yC,EAAEtwH,GAAGspK,IAAUE,GACRW,GAASnH,kBASlB,IAAI+I,GAAS,WAETC,GAAa,cACbC,GAAc,eAEdC,GAAuB57C,EAAEtwH,GAAG+rK,IAa5BI,GAAiB,IAAIxgK,OAAOygK,YAC5BC,GAAU,CACZvC,KAAM,mBACNC,OAAQ,qBACRH,KAAM,mBACNC,MAAO,oBACPyC,MAAO,oBACPlK,eAAgB,6BAChBmK,iBAAkB,+BAClBC,eAAgB,8BAEdC,GACQ,WADRA,GAEI,OAFJA,GAGM,SAHNA,GAIS,YAJTA,GAKQ,WALRA,GAMS,sBANTA,GAQe,kBAEfC,GACW,2BADXA,GAEU,iBAFVA,GAGI,iBAHJA,GAIU,cAJVA,GAKa,8DAEbC,GACG,YADHA,GAEM,UAFNA,GAGM,eAHNA,GAIS,aAJTA,GAKK,cALLA,GAOI,aAGJC,GAAY,CACd1lK,OAAQ,EACRgI,MAAM,EACN29J,SAAU,eACVC,UAAW,SACX3mI,QAAS,UACT4mI,aAAc,MAEZC,GAAgB,CAClB9lK,OAAQ,2BACRgI,KAAM,UACN29J,SAAU,mBACVC,UAAW,mBACX3mI,QAAS,SACT4mI,aAAc,iBAQZE,GAEJ,WACE,SAASA,EAAS3uK,EAASe,GACzB5f,KAAKw6B,SAAW3b,EAChB7e,KAAKytL,QAAU,KACfztL,KAAKgf,QAAUhf,KAAK4mL,WAAWhnK,GAC/B5f,KAAK0tL,MAAQ1tL,KAAK2tL,kBAClB3tL,KAAK4tL,UAAY5tL,KAAK6tL,gBAEtB7tL,KAAKknL,qBAIP,IAAIpE,EAAS0K,EAASttL,UAmZtB,OAhZA4iL,EAAOhtB,OAAS,WACd,IAAI91J,KAAKw6B,SAAS4K,WAAYyrG,EAAE7wI,KAAKw6B,UAAU4oJ,SAAS4J,IAAxD,CAIA,IAAItrH,EAAWmvE,EAAE7wI,KAAK0tL,OAAOtK,SAAS4J,IAEtCQ,EAASM,cAELpsH,GAIJ1hE,KAAKkpC,MAAK,KAGZ45I,EAAO55I,KAAO,SAAc6kJ,GAK1B,QAJkB,IAAdA,IACFA,GAAY,KAGV/tL,KAAKw6B,SAAS4K,UAAYyrG,EAAE7wI,KAAKw6B,UAAU4oJ,SAAS4J,KAAyBn8C,EAAE7wI,KAAK0tL,OAAOtK,SAAS4J,KAAxG,CAIA,IAAI3E,EAAgB,CAClBA,cAAeroL,KAAKw6B,UAElBwzJ,EAAYn9C,EAAE2xC,MAAMoK,GAAQzC,KAAM9B,GAElClpI,EAASquI,EAASS,sBAAsBjuL,KAAKw6B,UAIjD,GAFAq2G,EAAE1xF,GAAQqzC,QAAQw7F,IAEdA,EAAUt5F,qBAAd,CAKA,IAAK10F,KAAK4tL,WAAaG,EAAW,CAKhC,QAAsB,IAAX9N,EACT,MAAM,IAAIx6K,UAAU,oEAGtB,IAAIyoL,EAAmBluL,KAAKw6B,SAEG,WAA3Bx6B,KAAKgf,QAAQquK,UACfa,EAAmB/uI,EACVuhI,EAAKU,UAAUphL,KAAKgf,QAAQquK,aACrCa,EAAmBluL,KAAKgf,QAAQquK,eAEa,IAAlCrtL,KAAKgf,QAAQquK,UAAUtL,SAChCmM,EAAmBluL,KAAKgf,QAAQquK,UAAU,KAOhB,iBAA1BrtL,KAAKgf,QAAQouK,UACfv8C,EAAE1xF,GAAQ0pI,SAASmE,IAGrBhtL,KAAKytL,QAAU,IAAIxN,EAAOiO,EAAkBluL,KAAK0tL,MAAO1tL,KAAKmuL,oBAO3D,iBAAkBx2K,SAASgG,iBAAuE,IAApDkzH,EAAE1xF,GAAQyxF,QAAQq8C,IAAuB5rL,QACzFwvI,EAAEl5H,SAASjT,MAAMwhB,WAAWtW,GAAG,YAAa,KAAMihI,EAAEj0H,MAGtD5c,KAAKw6B,SAASkK,QAEd1kC,KAAKw6B,SAASrP,aAAa,iBAAiB,GAE5C0lH,EAAE7wI,KAAK0tL,OAAOnJ,YAAYyI,IAC1Bn8C,EAAE1xF,GAAQolI,YAAYyI,IAAkBx6F,QAAQq+C,EAAE2xC,MAAMoK,GAAQxC,MAAO/B,OAGzEvF,EAAOuI,KAAO,WACZ,IAAIrrL,KAAKw6B,SAAS4K,WAAYyrG,EAAE7wI,KAAKw6B,UAAU4oJ,SAAS4J,KAA0Bn8C,EAAE7wI,KAAK0tL,OAAOtK,SAAS4J,IAAzG,CAIA,IAAI3E,EAAgB,CAClBA,cAAeroL,KAAKw6B,UAElB4zJ,EAAYv9C,EAAE2xC,MAAMoK,GAAQvC,KAAMhC,GAElClpI,EAASquI,EAASS,sBAAsBjuL,KAAKw6B,UAEjDq2G,EAAE1xF,GAAQqzC,QAAQ47F,GAEdA,EAAU15F,uBAIV10F,KAAKytL,SACPztL,KAAKytL,QAAQ1pJ,UAGf8sG,EAAE7wI,KAAK0tL,OAAOnJ,YAAYyI,IAC1Bn8C,EAAE1xF,GAAQolI,YAAYyI,IAAkBx6F,QAAQq+C,EAAE2xC,MAAMoK,GAAQtC,OAAQjC,OAG1EvF,EAAOt7K,QAAU,WACfqpI,EAAEqyC,WAAWljL,KAAKw6B,SAAU+xJ,IAC5B17C,EAAE7wI,KAAKw6B,UAAUzqB,IAAIy8K,IACrBxsL,KAAKw6B,SAAW,KAChBx6B,KAAK0tL,MAAQ,KAEQ,OAAjB1tL,KAAKytL,UACPztL,KAAKytL,QAAQ1pJ,UAEb/jC,KAAKytL,QAAU,OAInB3K,EAAOt2H,OAAS,WACdxsD,KAAK4tL,UAAY5tL,KAAK6tL,gBAED,OAAjB7tL,KAAKytL,SACPztL,KAAKytL,QAAQY,kBAKjBvL,EAAOoE,mBAAqB,WAC1B,IAAI1mL,EAAQR,KAEZ6wI,EAAE7wI,KAAKw6B,UAAU5qB,GAAGg9K,GAAQC,OAAO,SAAU34K,GAC3CA,EAAM+sB,iBACN/sB,EAAMmiC,kBAEN71C,EAAMs1J,aAIVgtB,EAAO8D,WAAa,SAAoBhnK,GAGtC,OAFAA,EAASygK,EAAe,GAAIrgL,KAAKC,YAAY6kL,QAAS,GAAIj0C,EAAE7wI,KAAKw6B,UAAU13B,OAAQ,GAAI8c,GACvF8gK,EAAKW,gBAAgBiL,GAAQ1sK,EAAQ5f,KAAKC,YAAYilL,aAC/CtlK,GAGTkjK,EAAO6K,gBAAkB,WACvB,IAAK3tL,KAAK0tL,MAAO,CACf,IAAIvuI,EAASquI,EAASS,sBAAsBjuL,KAAKw6B,UAE7C2kB,IACFn/C,KAAK0tL,MAAQvuI,EAAO3gC,cAAcyuK,KAItC,OAAOjtL,KAAK0tL,OAGd5K,EAAOwL,cAAgB,WACrB,IAAIC,EAAkB19C,EAAE7wI,KAAKw6B,SAASuT,YAClCygJ,EAAYtB,GAgBhB,OAdIqB,EAAgBnL,SAAS4J,KAC3BwB,EAAYtB,GAERr8C,EAAE7wI,KAAK0tL,OAAOtK,SAAS4J,MACzBwB,EAAYtB,KAELqB,EAAgBnL,SAAS4J,IAClCwB,EAAYtB,GACHqB,EAAgBnL,SAAS4J,IAClCwB,EAAYtB,GACHr8C,EAAE7wI,KAAK0tL,OAAOtK,SAAS4J,MAChCwB,EAAYtB,IAGPsB,GAGT1L,EAAO+K,cAAgB,WACrB,OAAOh9C,EAAE7wI,KAAKw6B,UAAUo2G,QAAQ,WAAWvvI,OAAS,GAGtDyhL,EAAO2L,WAAa,WAClB,IAAI7G,EAAS5nL,KAETynB,EAAS,GAWb,MATmC,mBAAxBznB,KAAKgf,QAAQyI,OACtBA,EAAOlH,GAAK,SAAUzd,GAEpB,OADAA,EAAKkpD,QAAUq0H,EAAe,GAAIv9K,EAAKkpD,QAAS,GAAI47H,EAAO5oK,QAAQyI,OAAO3kB,EAAKkpD,QAAS47H,EAAOptJ,WAAa,IACrG13B,GAGT2kB,EAAOA,OAASznB,KAAKgf,QAAQyI,OAGxBA,GAGTq7J,EAAOqL,iBAAmB,WACxB,IAAIb,EAAe,CACjBkB,UAAWxuL,KAAKsuL,gBAChBI,UAAW,CACTjnK,OAAQznB,KAAKyuL,aACbh/J,KAAM,CACJia,QAAS1pC,KAAKgf,QAAQyQ,MAExBk/J,gBAAiB,CACfC,kBAAmB5uL,KAAKgf,QAAQouK,YAWtC,MAN6B,WAAzBptL,KAAKgf,QAAQ0nC,UACf4mI,EAAaoB,UAAUG,WAAa,CAClCnlJ,SAAS,IAIN22I,EAAe,GAAIiN,EAAc,GAAIttL,KAAKgf,QAAQsuK,eAI3DE,EAASjK,iBAAmB,SAA0B3jK,GACpD,OAAO5f,KAAKwjL,MAAK,WACf,IAAI1gL,EAAO+tI,EAAE7wI,MAAM8C,KAAKypL,IASxB,GALKzpL,IACHA,EAAO,IAAI0qL,EAASxtL,KAHU,iBAAX4f,EAAsBA,EAAS,MAIlDixH,EAAE7wI,MAAM8C,KAAKypL,GAAYzpL,IAGL,iBAAX8c,EAAqB,CAC9B,QAA4B,IAAjB9c,EAAK8c,GACd,MAAM,IAAIna,UAAU,oBAAuBma,EAAS,KAGtD9c,EAAK8c,UAKX4tK,EAASM,YAAc,SAAqB55K,GAC1C,IAAIA,GA1UuB,IA0UbA,EAAM+uB,QAAqD,UAAf/uB,EAAM5H,MAhVlD,IAgVsE4H,EAAM+uB,OAM1F,IAFA,IAAI6rJ,EAAU,GAAG5iL,MAAMxL,KAAKiX,SAAS8sB,iBAAiBwoJ,KAE7C/rL,EAAI,EAAG+vH,EAAM69D,EAAQztL,OAAQH,EAAI+vH,EAAK/vH,IAAK,CAClD,IAAIi+C,EAASquI,EAASS,sBAAsBa,EAAQ5tL,IAEhDutK,EAAU59B,EAAEi+C,EAAQ5tL,IAAI4B,KAAKypL,IAC7BlE,EAAgB,CAClBA,cAAeyG,EAAQ5tL,IAOzB,GAJIgT,GAAwB,UAAfA,EAAM5H,OACjB+7K,EAAc0G,WAAa76K,GAGxBu6J,EAAL,CAIA,IAAIugB,EAAevgB,EAAQif,MAE3B,GAAK78C,EAAE1xF,GAAQikI,SAAS4J,OAIpB94K,IAAyB,UAAfA,EAAM5H,MAAoB,kBAAkB8T,KAAKlM,EAAM/C,OAAOsa,UAA2B,UAAfvX,EAAM5H,MA5WlF,IA4WsG4H,EAAM+uB,QAA0B4tG,EAAEt5G,SAAS4nB,EAAQjrC,EAAM/C,SAA3K,CAIA,IAAIi9K,EAAYv9C,EAAE2xC,MAAMoK,GAAQvC,KAAMhC,GACtCx3C,EAAE1xF,GAAQqzC,QAAQ47F,GAEdA,EAAU15F,uBAMV,iBAAkB/8E,SAASgG,iBAC7BkzH,EAAEl5H,SAASjT,MAAMwhB,WAAWnW,IAAI,YAAa,KAAM8gI,EAAEj0H,MAGvDkyK,EAAQ5tL,GAAGiqB,aAAa,gBAAiB,SAErCsjJ,EAAQgf,SACVhf,EAAQgf,QAAQ1pJ,UAGlB8sG,EAAEm+C,GAAch9C,YAAYg7C,IAC5Bn8C,EAAE1xF,GAAQ6yF,YAAYg7C,IAAkBx6F,QAAQq+C,EAAE2xC,MAAMoK,GAAQtC,OAAQjC,SAI5EmF,EAASS,sBAAwB,SAA+BpvK,GAC9D,IAAIsgC,EACAqxF,EAAWkwC,EAAKI,uBAAuBjiK,GAM3C,OAJI2xH,IACFrxF,EAASxnC,SAAS6G,cAAcgyH,IAG3BrxF,GAAUtgC,EAAQkvB,YAI3By/I,EAASyB,uBAAyB,SAAgC/6K,GAQhE,KAAI,kBAAkBkM,KAAKlM,EAAM/C,OAAOsa,SA9ZxB,KA8ZmCvX,EAAM+uB,OAhaxC,KAgamE/uB,EAAM+uB,QAxZrE,KAwZkG/uB,EAAM+uB,OA1Z1G,KA0Z0I/uB,EAAM+uB,OAA8B4tG,EAAE38H,EAAM/C,QAAQy/H,QAAQq8C,IAAiB5rL,SAAWqrL,GAAetsK,KAAKlM,EAAM+uB,UAI/Q/uB,EAAM+sB,iBACN/sB,EAAMmiC,mBAEFr2C,KAAKolC,WAAYyrG,EAAE7wI,MAAMojL,SAAS4J,KAAtC,CAIA,IAAI7tI,EAASquI,EAASS,sBAAsBjuL,MAExC0hE,EAAWmvE,EAAE1xF,GAAQikI,SAAS4J,IAElC,GAAKtrH,GA/aY,KA+aAxtD,EAAM+uB,MAIvB,GAAKy+B,KAAYA,GAnbA,KAmbaxtD,EAAM+uB,OAjbpB,KAibgD/uB,EAAM+uB,OAAtE,CAUA,IAAIlO,EAAQ,GAAG7oB,MAAMxL,KAAKy+C,EAAO1a,iBAAiBwoJ,KAA2BlzK,QAAO,SAAUhT,GAC5F,OAAO8pI,EAAE9pI,GAAMq7K,GAAG,eAGpB,GAAqB,IAAjBrtJ,EAAM1zB,OAAV,CAIA,IAAIoG,EAAQstB,EAAMrtB,QAAQwM,EAAM/C,QA/bb,KAicf+C,EAAM+uB,OAA8Bx7B,EAAQ,GAE9CA,IAjcmB,KAocjByM,EAAM+uB,OAAgCx7B,EAAQstB,EAAM1zB,OAAS,GAE/DoG,IAGEA,EAAQ,IACVA,EAAQ,GAGVstB,EAAMttB,GAAOi9B,aAlCb,CACE,GApbe,KAobXxwB,EAAM+uB,MAA0B,CAClC,IAAI6yH,EAAS32G,EAAO3gC,cAAcyuK,IAClCp8C,EAAEilB,GAAQtjE,QAAQ,SAGpBq+C,EAAE7wI,MAAMwyF,QAAQ,YA+BpB0tF,EAAasN,EAAU,KAAM,CAAC,CAC5Bn8K,IAAK,UACL3P,IAAK,WACH,MAheU,UAkeX,CACD2P,IAAK,UACL3P,IAAK,WACH,OAAOyrL,KAER,CACD97K,IAAK,cACL3P,IAAK,WACH,OAAO6rL,OAIJC,EA/ZT,GAwaA38C,EAAEl5H,UAAU/H,GAAGg9K,GAAQE,iBAAkBG,GAAwBO,GAASyB,wBAAwBr/K,GAAGg9K,GAAQE,iBAAkBG,GAAiBO,GAASyB,wBAAwBr/K,GAAGg9K,GAAQjK,eAAiB,IAAMiK,GAAQG,eAAgBS,GAASM,aAAal+K,GAAGg9K,GAAQjK,eAAgBsK,IAAwB,SAAU/4K,GAC5TA,EAAM+sB,iBACN/sB,EAAMmiC,kBAENm3I,GAASjK,iBAAiB7iL,KAAKmwI,EAAE7wI,MAAO,aACvC4P,GAAGg9K,GAAQjK,eAAgBsK,IAAuB,SAAUnnL,GAC7DA,EAAEuwC,qBAQJw6F,EAAEtwH,GAAG+rK,IAAUkB,GAASjK,iBACxB1yC,EAAEtwH,GAAG+rK,IAAQhiK,YAAckjK,GAE3B38C,EAAEtwH,GAAG+rK,IAAQ1I,WAAa,WAExB,OADA/yC,EAAEtwH,GAAG+rK,IAAUG,GACRe,GAASjK,kBASlB,IAAI2L,GAAS,QAETC,GAAa,WACbC,GAAc,YAEdC,GAAuBx+C,EAAEtwH,GAAS,MAGlC+uK,GAAY,CACdC,UAAU,EACVxK,UAAU,EACVrgJ,OAAO,EACPwE,MAAM,GAEJsmJ,GAAgB,CAClBD,SAAU,mBACVxK,SAAU,UACVrgJ,MAAO,UACPwE,KAAM,WAEJumJ,GAAU,CACZpF,KAAM,gBACNqF,eAAgB,yBAChBpF,OAAQ,kBACRH,KAAM,gBACNC,MAAO,iBACPuF,QAAS,mBACTC,OAAQ,kBACRC,cAAe,yBACfC,gBAAiB,2BACjBC,gBAAiB,2BACjBC,kBAAmB,6BACnBrN,eAAgB,2BAEdsN,GACU,0BADVA,GAEkB,0BAFlBA,GAGQ,iBAHRA,GAII,aAJJA,GAKI,OALJA,GAMI,OANJA,GAOM,eAENC,GACM,gBADNA,GAEU,cAFVA,GAGW,wBAHXA,GAIY,yBAJZA,GAKa,oDALbA,GAMc,cAQdC,GAEJ,WACE,SAASA,EAAMtxK,EAASe,GACtB5f,KAAKgf,QAAUhf,KAAK4mL,WAAWhnK,GAC/B5f,KAAKw6B,SAAW3b,EAChB7e,KAAKowL,QAAUvxK,EAAQL,cAAc0xK,IACrClwL,KAAKqwL,UAAY,KACjBrwL,KAAKswL,UAAW,EAChBtwL,KAAKuwL,oBAAqB,EAC1BvwL,KAAKwwL,sBAAuB,EAC5BxwL,KAAK2qL,kBAAmB,EACxB3qL,KAAKywL,gBAAkB,EAIzB,IAAI3N,EAASqN,EAAMjwL,UAqdnB,OAldA4iL,EAAOhtB,OAAS,SAAgBuyB,GAC9B,OAAOroL,KAAKswL,SAAWtwL,KAAKqrL,OAASrrL,KAAKkpC,KAAKm/I,IAGjDvF,EAAO55I,KAAO,SAAcm/I,GAC1B,IAAI7nL,EAAQR,KAEZ,IAAIA,KAAKswL,WAAYtwL,KAAK2qL,iBAA1B,CAII95C,EAAE7wI,KAAKw6B,UAAU4oJ,SAAS6M,MAC5BjwL,KAAK2qL,kBAAmB,GAG1B,IAAIqD,EAAYn9C,EAAE2xC,MAAMiN,GAAQtF,KAAM,CACpC9B,cAAeA,IAEjBx3C,EAAE7wI,KAAKw6B,UAAUg4D,QAAQw7F,GAErBhuL,KAAKswL,UAAYtC,EAAUt5F,uBAI/B10F,KAAKswL,UAAW,EAEhBtwL,KAAK0wL,kBAEL1wL,KAAK2wL,gBAEL3wL,KAAK4wL,gBAEL5wL,KAAK6wL,kBAEL7wL,KAAK8wL,kBAELjgD,EAAE7wI,KAAKw6B,UAAU5qB,GAAG6/K,GAAQI,cAAeK,IAAyB,SAAUh8K,GAC5E,OAAO1T,EAAM6qL,KAAKn3K,MAEpB28H,EAAE7wI,KAAKowL,SAASxgL,GAAG6/K,GAAQO,mBAAmB,WAC5Cn/C,EAAErwI,EAAMg6B,UAAUw5D,IAAIy7F,GAAQM,iBAAiB,SAAU77K,GACnD28H,EAAE38H,EAAM/C,QAAQixK,GAAG5hL,EAAMg6B,YAC3Bh6B,EAAMgwL,sBAAuB,SAKnCxwL,KAAK+wL,eAAc,WACjB,OAAOvwL,EAAMwwL,aAAa3I,SAI9BvF,EAAOuI,KAAO,SAAcn3K,GAC1B,IAAI0zK,EAAS5nL,KAMb,GAJIkU,GACFA,EAAM+sB,iBAGHjhC,KAAKswL,WAAYtwL,KAAK2qL,iBAA3B,CAIA,IAAIyD,EAAYv9C,EAAE2xC,MAAMiN,GAAQpF,MAGhC,GAFAx5C,EAAE7wI,KAAKw6B,UAAUg4D,QAAQ47F,GAEpBpuL,KAAKswL,WAAYlC,EAAU15F,qBAAhC,CAIA10F,KAAKswL,UAAW,EAChB,IAAIW,EAAapgD,EAAE7wI,KAAKw6B,UAAU4oJ,SAAS6M,IAe3C,GAbIgB,IACFjxL,KAAK2qL,kBAAmB,GAG1B3qL,KAAK6wL,kBAEL7wL,KAAK8wL,kBAELjgD,EAAEl5H,UAAU5H,IAAI0/K,GAAQE,SACxB9+C,EAAE7wI,KAAKw6B,UAAUw3G,YAAYi+C,IAC7Bp/C,EAAE7wI,KAAKw6B,UAAUzqB,IAAI0/K,GAAQI,eAC7Bh/C,EAAE7wI,KAAKowL,SAASrgL,IAAI0/K,GAAQO,mBAExBiB,EAAY,CACd,IAAI90J,EAAqBukJ,EAAKM,iCAAiChhL,KAAKw6B,UACpEq2G,EAAE7wI,KAAKw6B,UAAUw5D,IAAI0sF,EAAKH,gBAAgB,SAAUrsK,GAClD,OAAO0zK,EAAOsJ,WAAWh9K,MACxB8tK,qBAAqB7lJ,QAExBn8B,KAAKkxL,gBAITpO,EAAOt7K,QAAU,WACf,CAAC8L,OAAQtT,KAAKw6B,SAAUx6B,KAAKowL,SAAS9sL,SAAQ,SAAU6tL,GACtD,OAAOtgD,EAAEsgD,GAAaphL,IAAIq/K,OAQ5Bv+C,EAAEl5H,UAAU5H,IAAI0/K,GAAQE,SACxB9+C,EAAEqyC,WAAWljL,KAAKw6B,SAAU20J,IAC5BnvL,KAAKgf,QAAU,KACfhf,KAAKw6B,SAAW,KAChBx6B,KAAKowL,QAAU,KACfpwL,KAAKqwL,UAAY,KACjBrwL,KAAKswL,SAAW,KAChBtwL,KAAKuwL,mBAAqB,KAC1BvwL,KAAKwwL,qBAAuB,KAC5BxwL,KAAK2qL,iBAAmB,KACxB3qL,KAAKywL,gBAAkB,MAGzB3N,EAAOsO,aAAe,WACpBpxL,KAAK4wL,iBAIP9N,EAAO8D,WAAa,SAAoBhnK,GAGtC,OAFAA,EAASygK,EAAe,GAAIiP,GAAW,GAAI1vK,GAC3C8gK,EAAKW,gBAAgB6N,GAAQtvK,EAAQ4vK,IAC9B5vK,GAGTkjK,EAAOuO,2BAA6B,WAClC,IAAItJ,EAAS/nL,KAEb,GAA8B,WAA1BA,KAAKgf,QAAQuwK,SAAuB,CACtC,IAAI+B,EAAqBzgD,EAAE2xC,MAAMiN,GAAQC,gBAGzC,GAFA7+C,EAAE7wI,KAAKw6B,UAAUg4D,QAAQ8+F,GAErBA,EAAmBtyG,iBACrB,OAGFh/E,KAAKw6B,SAAS3K,UAAUmyC,IAAIiuH,IAE5B,IAAIsB,EAA0B7Q,EAAKM,iCAAiChhL,KAAKw6B,UACzEq2G,EAAE7wI,KAAKw6B,UAAUw5D,IAAI0sF,EAAKH,gBAAgB,WACxCwH,EAAOvtJ,SAAS3K,UAAUkyC,OAAOkuH,OAChCjO,qBAAqBuP,GAExBvxL,KAAKw6B,SAASkK,aAEd1kC,KAAKqrL,QAITvI,EAAOkO,aAAe,SAAsB3I,GAC1C,IAAIW,EAAShpL,KAETixL,EAAapgD,EAAE7wI,KAAKw6B,UAAU4oJ,SAAS6M,IACvCuB,EAAYxxL,KAAKowL,QAAUpwL,KAAKowL,QAAQ5xK,cAAc0xK,IAAyB,KAE9ElwL,KAAKw6B,SAASuT,YAAc/tC,KAAKw6B,SAASuT,WAAW69D,WAAa8W,KAAK+uE,cAE1E95K,SAASjT,KAAKqwD,YAAY/0D,KAAKw6B,UAGjCx6B,KAAKw6B,SAASjT,MAAMm/B,QAAU,QAE9B1mD,KAAKw6B,SAASkpF,gBAAgB,eAE9B1jH,KAAKw6B,SAASrP,aAAa,cAAc,GAErC0lH,EAAE7wI,KAAKowL,SAAShN,SAAS6M,KAA2BuB,EACtDA,EAAUzmJ,UAAY,EAEtB/qC,KAAKw6B,SAASuQ,UAAY,EAGxBkmJ,GACFvQ,EAAK7kE,OAAO77G,KAAKw6B,UAGnBq2G,EAAE7wI,KAAKw6B,UAAUquJ,SAASoH,IAEtBjwL,KAAKgf,QAAQ0lB,OACf1kC,KAAK0xL,gBAGP,IAAIC,EAAa9gD,EAAE2xC,MAAMiN,GAAQrF,MAAO,CACtC/B,cAAeA,IAGbuJ,EAAqB,WACnB5I,EAAOhqK,QAAQ0lB,OACjBskJ,EAAOxuJ,SAASkK,QAGlBskJ,EAAO2B,kBAAmB,EAC1B95C,EAAEm4C,EAAOxuJ,UAAUg4D,QAAQm/F,IAG7B,GAAIV,EAAY,CACd,IAAI90J,EAAqBukJ,EAAKM,iCAAiChhL,KAAKowL,SACpEv/C,EAAE7wI,KAAKowL,SAASp8F,IAAI0sF,EAAKH,eAAgBqR,GAAoB5P,qBAAqB7lJ,QAElFy1J,KAIJ9O,EAAO4O,cAAgB,WACrB,IAAIG,EAAS7xL,KAEb6wI,EAAEl5H,UAAU5H,IAAI0/K,GAAQE,SACvB//K,GAAG6/K,GAAQE,SAAS,SAAUz7K,GACzByD,WAAazD,EAAM/C,QAAU0gL,EAAOr3J,WAAatmB,EAAM/C,QAA0D,IAAhD0/H,EAAEghD,EAAOr3J,UAAU3I,IAAI3d,EAAM/C,QAAQ9P,QACxGwwL,EAAOr3J,SAASkK,YAKtBo+I,EAAO+N,gBAAkB,WACvB,IAAIiB,EAAS9xL,KAETA,KAAKswL,UAAYtwL,KAAKgf,QAAQ+lK,SAChCl0C,EAAE7wI,KAAKw6B,UAAU5qB,GAAG6/K,GAAQK,iBAAiB,SAAU57K,GArStC,KAsSXA,EAAM+uB,OACR6uJ,EAAOT,gCAGDrxL,KAAKswL,UACfz/C,EAAE7wI,KAAKw6B,UAAUzqB,IAAI0/K,GAAQK,kBAIjChN,EAAOgO,gBAAkB,WACvB,IAAIiB,EAAS/xL,KAETA,KAAKswL,SACPz/C,EAAEv9H,QAAQ1D,GAAG6/K,GAAQG,QAAQ,SAAU17K,GACrC,OAAO69K,EAAOX,aAAal9K,MAG7B28H,EAAEv9H,QAAQvD,IAAI0/K,GAAQG,SAI1B9M,EAAOoO,WAAa,WAClB,IAAIc,EAAShyL,KAEbA,KAAKw6B,SAASjT,MAAMm/B,QAAU,OAE9B1mD,KAAKw6B,SAASrP,aAAa,eAAe,GAE1CnrB,KAAKw6B,SAASkpF,gBAAgB,cAE9B1jH,KAAK2qL,kBAAmB,EAExB3qL,KAAK+wL,eAAc,WACjBlgD,EAAEl5H,SAASjT,MAAMstI,YAAYi+C,IAE7B+B,EAAOC,oBAEPD,EAAOE,kBAEPrhD,EAAEmhD,EAAOx3J,UAAUg4D,QAAQi9F,GAAQnF,YAIvCxH,EAAOqP,gBAAkB,WACnBnyL,KAAKqwL,YACPx/C,EAAE7wI,KAAKqwL,WAAWtuH,SAClB/hE,KAAKqwL,UAAY,OAIrBvN,EAAOiO,cAAgB,SAAuB7gL,GAC5C,IAAIkiL,EAASpyL,KAET4uC,EAAUiiG,EAAE7wI,KAAKw6B,UAAU4oJ,SAAS6M,IAAoBA,GAAmB,GAE/E,GAAIjwL,KAAKswL,UAAYtwL,KAAKgf,QAAQuwK,SAAU,CA4B1C,GA3BAvvL,KAAKqwL,UAAY14K,SAASE,cAAc,OACxC7X,KAAKqwL,UAAUphK,UAAYghK,GAEvBrhJ,GACF5uC,KAAKqwL,UAAUxgK,UAAUmyC,IAAIpzB,GAG/BiiG,EAAE7wI,KAAKqwL,WAAW/gH,SAAS33D,SAASjT,MACpCmsI,EAAE7wI,KAAKw6B,UAAU5qB,GAAG6/K,GAAQI,eAAe,SAAU37K,GAC/Ck+K,EAAO5B,qBACT4B,EAAO5B,sBAAuB,EAI5Bt8K,EAAM/C,SAAW+C,EAAMwhC,eAI3B08I,EAAOf,gCAGLziJ,GACF8xI,EAAK7kE,OAAO77G,KAAKqwL,WAGnBx/C,EAAE7wI,KAAKqwL,WAAWxH,SAASoH,KAEtB//K,EACH,OAGF,IAAK0+B,EAEH,YADA1+B,IAIF,IAAImiL,EAA6B3R,EAAKM,iCAAiChhL,KAAKqwL,WAC5Ex/C,EAAE7wI,KAAKqwL,WAAWr8F,IAAI0sF,EAAKH,eAAgBrwK,GAAU8xK,qBAAqBqQ,QACrE,IAAKryL,KAAKswL,UAAYtwL,KAAKqwL,UAAW,CAC3Cx/C,EAAE7wI,KAAKqwL,WAAWr+C,YAAYi+C,IAE9B,IAAIqC,EAAiB,WACnBF,EAAOD,kBAEHjiL,GACFA,KAIJ,GAAI2gI,EAAE7wI,KAAKw6B,UAAU4oJ,SAAS6M,IAAmB,CAC/C,IAAIsC,EAA8B7R,EAAKM,iCAAiChhL,KAAKqwL,WAE7Ex/C,EAAE7wI,KAAKqwL,WAAWr8F,IAAI0sF,EAAKH,eAAgB+R,GAAgBtQ,qBAAqBuQ,QAEhFD,SAEOpiL,GACTA,KAQJ4yK,EAAO8N,cAAgB,WACrB,IAAI4B,EAAqBxyL,KAAKw6B,SAASyQ,aAAetzB,SAASgG,gBAAgB6oC,cAE1ExmD,KAAKuwL,oBAAsBiC,IAC9BxyL,KAAKw6B,SAASjT,MAAM2zC,YAAcl7D,KAAKywL,gBAAkB,MAGvDzwL,KAAKuwL,qBAAuBiC,IAC9BxyL,KAAKw6B,SAASjT,MAAM4zC,aAAen7D,KAAKywL,gBAAkB,OAI9D3N,EAAOmP,kBAAoB,WACzBjyL,KAAKw6B,SAASjT,MAAM2zC,YAAc,GAClCl7D,KAAKw6B,SAASjT,MAAM4zC,aAAe,IAGrC2nH,EAAO4N,gBAAkB,WACvB,IAAInqI,EAAO5uC,SAASjT,KAAKy+C,wBACzBnjD,KAAKuwL,mBAAqBhqI,EAAKt1B,KAAOs1B,EAAKv1B,MAAQ1d,OAAOi8J,WAC1DvvK,KAAKywL,gBAAkBzwL,KAAKyyL,sBAG9B3P,EAAO6N,cAAgB,WACrB,IAAI+B,EAAU1yL,KAEd,GAAIA,KAAKuwL,mBAAoB,CAG3B,IAAIoC,EAAe,GAAGzmL,MAAMxL,KAAKiX,SAAS8sB,iBAAiByrJ,KACvD0C,EAAgB,GAAG1mL,MAAMxL,KAAKiX,SAAS8sB,iBAAiByrJ,KAE5Dr/C,EAAE8hD,GAAcnP,MAAK,SAAU/7K,EAAOoX,GACpC,IAAIg0K,EAAgBh0K,EAAQ0I,MAAM4zC,aAC9B23H,EAAoBjiD,EAAEhyH,GAASqM,IAAI,iBACvC2lH,EAAEhyH,GAAS/b,KAAK,gBAAiB+vL,GAAe3nK,IAAI,gBAAiB+B,WAAW6lK,GAAqBJ,EAAQjC,gBAAkB,SAGjI5/C,EAAE+hD,GAAepP,MAAK,SAAU/7K,EAAOoX,GACrC,IAAIk0K,EAAel0K,EAAQ0I,MAAM6S,YAC7B44J,EAAmBniD,EAAEhyH,GAASqM,IAAI,gBACtC2lH,EAAEhyH,GAAS/b,KAAK,eAAgBiwL,GAAc7nK,IAAI,eAAgB+B,WAAW+lK,GAAoBN,EAAQjC,gBAAkB,SAG7H,IAAIoC,EAAgBl7K,SAASjT,KAAK6iB,MAAM4zC,aACpC23H,EAAoBjiD,EAAEl5H,SAASjT,MAAMwmB,IAAI,iBAC7C2lH,EAAEl5H,SAASjT,MAAM5B,KAAK,gBAAiB+vL,GAAe3nK,IAAI,gBAAiB+B,WAAW6lK,GAAqB9yL,KAAKywL,gBAAkB,MAGpI5/C,EAAEl5H,SAASjT,MAAMmkL,SAASoH,KAG5BnN,EAAOoP,gBAAkB,WAEvB,IAAIS,EAAe,GAAGzmL,MAAMxL,KAAKiX,SAAS8sB,iBAAiByrJ,KAC3Dr/C,EAAE8hD,GAAcnP,MAAK,SAAU/7K,EAAOoX,GACpC,IAAI8nC,EAAUkqF,EAAEhyH,GAAS/b,KAAK,iBAC9B+tI,EAAEhyH,GAASqkK,WAAW,iBACtBrkK,EAAQ0I,MAAM4zC,aAAexU,GAAoB,MAGnD,IAAIniB,EAAW,GAAGt4B,MAAMxL,KAAKiX,SAAS8sB,iBAAiB,GAAKyrJ,KAC5Dr/C,EAAErsG,GAAUg/I,MAAK,SAAU/7K,EAAOoX,GAChC,IAAI2zH,EAAS3B,EAAEhyH,GAAS/b,KAAK,qBAEP,IAAX0vI,GACT3B,EAAEhyH,GAASqM,IAAI,eAAgBsnH,GAAQ0wC,WAAW,mBAItD,IAAIv8H,EAAUkqF,EAAEl5H,SAASjT,MAAM5B,KAAK,iBACpC+tI,EAAEl5H,SAASjT,MAAMw+K,WAAW,iBAC5BvrK,SAASjT,KAAK6iB,MAAM4zC,aAAexU,GAAoB,IAGzDm8H,EAAO2P,mBAAqB,WAE1B,IAAIQ,EAAYt7K,SAASE,cAAc,OACvCo7K,EAAUhkK,UAAYghK,GACtBt4K,SAASjT,KAAKqwD,YAAYk+H,GAC1B,IAAIzxG,EAAiByxG,EAAU9vI,wBAAwBz+B,MAAQuuK,EAAU/vI,YAEzE,OADAvrC,SAASjT,KAAKi4D,YAAYs2H,GACnBzxG,GAIT2uG,EAAM5M,iBAAmB,SAA0B3jK,EAAQyoK,GACzD,OAAOroL,KAAKwjL,MAAK,WACf,IAAI1gL,EAAO+tI,EAAE7wI,MAAM8C,KAAKqsL,IAEpBnwK,EAAUqhK,EAAe,GAAIiP,GAAW,GAAIz+C,EAAE7wI,MAAM8C,OAAQ,GAAsB,iBAAX8c,GAAuBA,EAASA,EAAS,IAOpH,GALK9c,IACHA,EAAO,IAAIqtL,EAAMnwL,KAAMgf,GACvB6xH,EAAE7wI,MAAM8C,KAAKqsL,GAAYrsL,IAGL,iBAAX8c,EAAqB,CAC9B,QAA4B,IAAjB9c,EAAK8c,GACd,MAAM,IAAIna,UAAU,oBAAuBma,EAAS,KAGtD9c,EAAK8c,GAAQyoK,QACJrpK,EAAQkqB,MACjBpmC,EAAKomC,KAAKm/I,OAKhBnI,EAAaiQ,EAAO,KAAM,CAAC,CACzB9+K,IAAK,UACL3P,IAAK,WACH,MAphBU,UAshBX,CACD2P,IAAK,UACL3P,IAAK,WACH,OAAO4tL,OAIJa,EAneT,GA4eAt/C,EAAEl5H,UAAU/H,GAAG6/K,GAAQ9M,eAAgBuN,IAAwB,SAAUh8K,GACvE,IAEI/C,EAFA+hL,EAAUlzL,KAGVwwI,EAAWkwC,EAAKI,uBAAuB9gL,MAEvCwwI,IACFr/H,EAASwG,SAAS6G,cAAcgyH,IAGlC,IAAI5wH,EAASixH,EAAE1/H,GAAQrO,KAAKqsL,IAAc,SAAW9O,EAAe,GAAIxvC,EAAE1/H,GAAQrO,OAAQ,GAAI+tI,EAAE7wI,MAAM8C,QAEjF,MAAjB9C,KAAKyrB,SAAoC,SAAjBzrB,KAAKyrB,SAC/BvX,EAAM+sB,iBAGR,IAAIorJ,EAAUx7C,EAAE1/H,GAAQ6iF,IAAIy7F,GAAQtF,MAAM,SAAU6D,GAC9CA,EAAUt5F,sBAKd23F,EAAQr4F,IAAIy7F,GAAQnF,QAAQ,WACtBz5C,EAAEqiD,GAAS9Q,GAAG,aAChB8Q,EAAQxuJ,cAKdyrJ,GAAM5M,iBAAiB7iL,KAAKmwI,EAAE1/H,GAASyO,EAAQ5f,SAQjD6wI,EAAEtwH,GAAS,MAAI4vK,GAAM5M,iBACrB1yC,EAAEtwH,GAAS,MAAE+J,YAAc6lK,GAE3Bt/C,EAAEtwH,GAAS,MAAEqjK,WAAa,WAExB,OADA/yC,EAAEtwH,GAAS,MAAI8uK,GACRc,GAAM5M,kBASf,IAAI4P,GAAW,CAAC,aAAc,OAAQ,OAAQ,WAAY,WAAY,SAAU,MAAO,cAyCnFC,GAAmB,8DAOnBC,GAAmB,sIA0BvB,SAASC,GAAaC,EAAYC,EAAWC,GAC3C,GAA0B,IAAtBF,EAAWlyL,OACb,OAAOkyL,EAGT,GAAIE,GAAoC,mBAAfA,EACvB,OAAOA,EAAWF,GA0BpB,IAvBA,IACIG,GADY,IAAIpgL,OAAO2uG,WACKG,gBAAgBmxE,EAAY,aACxDI,EAAgBp0L,OAAO6K,KAAKopL,GAC5BhvJ,EAAW,GAAGt4B,MAAMxL,KAAKgzL,EAAgBhvL,KAAK+/B,iBAAiB,MAE/DmvJ,EAAQ,SAAe1yL,EAAG+vH,GAC5B,IAAIlyF,EAAKyF,EAAStjC,GACd2yL,EAAS90J,EAAG2I,SAAS53B,cAEzB,IAA0D,IAAtD6jL,EAAcjsL,QAAQq3B,EAAG2I,SAAS53B,eAEpC,OADAivB,EAAGgP,WAAW4uB,YAAY59B,GACnB,WAGT,IAAI+0J,EAAgB,GAAG5nL,MAAMxL,KAAKq+B,EAAGha,YACjCgvK,EAAwB,GAAGj6K,OAAO05K,EAAU,MAAQ,GAAIA,EAAUK,IAAW,IACjFC,EAAcxwL,SAAQ,SAAUqb,IAjDpC,SAA0BA,EAAMq1K,GAC9B,IAAIC,EAAWt1K,EAAK+oB,SAAS53B,cAE7B,IAAgD,IAA5CkkL,EAAqBtsL,QAAQusL,GAC/B,OAAoC,IAAhCd,GAASzrL,QAAQusL,IACZnzJ,QAAQniB,EAAKu1K,UAAU9lK,MAAMglK,KAAqBz0K,EAAKu1K,UAAU9lK,MAAMilK,KAUlF,IAJA,IAAIc,EAASH,EAAqBj6K,QAAO,SAAUq6K,GACjD,OAAOA,aAAqBloK,UAGrBhrB,EAAI,EAAG++F,EAAIk0F,EAAO9yL,OAAQH,EAAI++F,EAAG/+F,IACxC,GAAI+yL,EAAS7lK,MAAM+lK,EAAOjzL,IACxB,OAAO,EAIX,OAAO,GA6BEmzL,CAAiB11K,EAAMo1K,IAC1Bh1J,EAAG2kF,gBAAgB/kG,EAAK+oB,cAKrBxmC,EAAI,EAAG+vH,EAAMzsF,EAASnjC,OAAQH,EAAI+vH,EAAK/vH,IACnC0yL,EAAM1yL,GAKnB,OAAOwyL,EAAgBhvL,KAAK0mB,UAS9B,IAAIkpK,GAAS,UAETC,GAAa,aACbC,GAAc,cACdC,GAAuB5jD,EAAEtwH,GAAS,QAElCm0K,GAAqB,IAAIxoK,OAAO,wBAAmC,KACnEyoK,GAAwB,CAAC,WAAY,YAAa,cAClDC,GAAgB,CAClBC,UAAW,UACXzxE,SAAU,SACV59F,MAAO,4BACPgtE,QAAS,SACT5gD,MAAO,kBACPplB,KAAM,UACNgkH,SAAU,mBACVg+C,UAAW,oBACX/mK,OAAQ,2BACR8E,UAAW,2BACXuoK,kBAAmB,iBACnB1H,SAAU,mBACV/iG,SAAU,UACVopG,WAAY,kBACZD,UAAW,SACXlG,aAAc,iBAEZyH,GAAkB,CACpBC,KAAM,OACNC,IAAK,MACLC,MAAO,QACPC,OAAQ,SACRC,KAAM,QAEJC,GAAY,CACdR,WAAW,EACXzxE,SAAU,uGACV5wB,QAAS,cACThtE,MAAO,GACPosB,MAAO,EACPplB,MAAM,EACNgkH,UAAU,EACVg+C,UAAW,MACX/mK,OAAQ,EACR8E,WAAW,EACXuoK,kBAAmB,OACnB1H,SAAU,eACV/iG,UAAU,EACVopG,WAAY,KACZD,UAvKqB,CAErB,IAAK,CAAC,QAAS,MAAO,KAAM,OAAQ,OAHT,kBAI3B1rK,EAAG,CAAC,SAAU,OAAQ,QAAS,OAC/BwtK,KAAM,GACN11L,EAAG,GACHgqG,GAAI,GACJplD,IAAK,GACL76C,KAAM,GACNqzB,IAAK,GACLu4J,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJ50L,EAAG,GACHyyG,IAAK,CAAC,MAAO,MAAO,QAAS,QAAS,UACtC95C,GAAI,GACJ47E,GAAI,GACJ51I,EAAG,GACHk2L,IAAK,GACL90L,EAAG,GACH+0L,MAAO,GACP5mH,KAAM,GACNu2D,IAAK,GACLswD,IAAK,GACLC,OAAQ,GACRp8B,EAAG,GACHlgG,GAAI,IAyIJ0zH,aAAc,MAEZ6I,GACI,OADJA,GAEG,MAEHC,GAAU,CACZ/L,KAAM,kBACNC,OAAQ,oBACRH,KAAM,kBACNC,MAAO,mBACPiM,SAAU,sBACVxJ,MAAO,mBACP8C,QAAS,qBACT2G,SAAU,sBACV/Q,WAAY,wBACZC,WAAY,yBAEV+Q,GACI,OADJA,GAEI,OAEJC,GAEa,iBAFbA,GAGK,SAELC,GACK,QADLA,GAEK,QAFLA,GAGK,QAHLA,GAIM,SAQN1e,GAEJ,WACE,SAASA,EAAQl5J,EAASe,GACxB,QAAsB,IAAXqgK,EACT,MAAM,IAAIx6K,UAAU,mEAItBzF,KAAK02L,YAAa,EAClB12L,KAAK22L,SAAW,EAChB32L,KAAK42L,YAAc,GACnB52L,KAAK62L,eAAiB,GACtB72L,KAAKytL,QAAU,KAEfztL,KAAK6e,QAAUA,EACf7e,KAAK4f,OAAS5f,KAAK4mL,WAAWhnK,GAC9B5f,KAAK82L,IAAM,KAEX92L,KAAK+2L,gBAIP,IAAIjU,EAAS/K,EAAQ73K,UA8kBrB,OA3kBA4iL,EAAOkU,OAAS,WACdh3L,KAAK02L,YAAa,GAGpB5T,EAAOmU,QAAU,WACfj3L,KAAK02L,YAAa,GAGpB5T,EAAOoU,cAAgB,WACrBl3L,KAAK02L,YAAc12L,KAAK02L,YAG1B5T,EAAOhtB,OAAS,SAAgB5hJ,GAC9B,GAAKlU,KAAK02L,WAIV,GAAIxiL,EAAO,CACT,IAAIijL,EAAUn3L,KAAKC,YAAYqiL,SAC3B7T,EAAU59B,EAAE38H,EAAMwhC,eAAe5yC,KAAKq0L,GAErC1oB,IACHA,EAAU,IAAIzuK,KAAKC,YAAYiU,EAAMwhC,cAAe11C,KAAKo3L,sBACzDvmD,EAAE38H,EAAMwhC,eAAe5yC,KAAKq0L,EAAS1oB,IAGvCA,EAAQooB,eAAe/wG,OAAS2oF,EAAQooB,eAAe/wG,MAEnD2oF,EAAQ4oB,uBACV5oB,EAAQ6oB,OAAO,KAAM7oB,GAErBA,EAAQ8oB,OAAO,KAAM9oB,OAElB,CACL,GAAI59B,EAAE7wI,KAAKw3L,iBAAiBpU,SAASmT,IAGnC,YAFAv2L,KAAKu3L,OAAO,KAAMv3L,MAKpBA,KAAKs3L,OAAO,KAAMt3L,QAItB8iL,EAAOt7K,QAAU,WACf+J,aAAavR,KAAK22L,UAClB9lD,EAAEqyC,WAAWljL,KAAK6e,QAAS7e,KAAKC,YAAYqiL,UAC5CzxC,EAAE7wI,KAAK6e,SAAS9O,IAAI/P,KAAKC,YAAYw3L,WACrC5mD,EAAE7wI,KAAK6e,SAAS+xH,QAAQ,UAAU7gI,IAAI,gBAAiB/P,KAAK03L,mBAExD13L,KAAK82L,KACPjmD,EAAE7wI,KAAK82L,KAAK/0H,SAGd/hE,KAAK02L,WAAa,KAClB12L,KAAK22L,SAAW,KAChB32L,KAAK42L,YAAc,KACnB52L,KAAK62L,eAAiB,KAElB72L,KAAKytL,SACPztL,KAAKytL,QAAQ1pJ,UAGf/jC,KAAKytL,QAAU,KACfztL,KAAK6e,QAAU,KACf7e,KAAK4f,OAAS,KACd5f,KAAK82L,IAAM,MAGbhU,EAAO55I,KAAO,WACZ,IAAI1oC,EAAQR,KAEZ,GAAuC,SAAnC6wI,EAAE7wI,KAAK6e,SAASqM,IAAI,WACtB,MAAM,IAAIvqB,MAAM,uCAGlB,IAAIqtL,EAAYn9C,EAAE2xC,MAAMxiL,KAAKC,YAAYuiL,MAAM2H,MAE/C,GAAInqL,KAAK23L,iBAAmB33L,KAAK02L,WAAY,CAC3C7lD,EAAE7wI,KAAK6e,SAAS2zE,QAAQw7F,GACxB,IAAI4J,EAAalX,EAAKgB,eAAe1hL,KAAK6e,SACtCg5K,EAAahnD,EAAEt5G,SAAwB,OAAfqgK,EAAsBA,EAAa53L,KAAK6e,QAAQgb,cAAclc,gBAAiB3d,KAAK6e,SAEhH,GAAImvK,EAAUt5F,uBAAyBmjG,EACrC,OAGF,IAAIf,EAAM92L,KAAKw3L,gBACXM,EAAQpX,EAAKE,OAAO5gL,KAAKC,YAAY83L,MACzCjB,EAAI3rK,aAAa,KAAM2sK,GACvB93L,KAAK6e,QAAQsM,aAAa,mBAAoB2sK,GAC9C93L,KAAKg4L,aAEDh4L,KAAK4f,OAAOi1K,WACdhkD,EAAEimD,GAAKjO,SAAS0N,IAGlB,IAAI/H,EAA6C,mBAA1BxuL,KAAK4f,OAAO4uK,UAA2BxuL,KAAK4f,OAAO4uK,UAAU9tL,KAAKV,KAAM82L,EAAK92L,KAAK6e,SAAW7e,KAAK4f,OAAO4uK,UAE5HyJ,EAAaj4L,KAAKk4L,eAAe1J,GAErCxuL,KAAKm4L,mBAAmBF,GAExB,IAAI1rK,EAAYvsB,KAAKo4L,gBAErBvnD,EAAEimD,GAAKh0L,KAAK9C,KAAKC,YAAYqiL,SAAUtiL,MAElC6wI,EAAEt5G,SAASv3B,KAAK6e,QAAQgb,cAAclc,gBAAiB3d,KAAK82L,MAC/DjmD,EAAEimD,GAAKxnH,SAAS/iD,GAGlBskH,EAAE7wI,KAAK6e,SAAS2zE,QAAQxyF,KAAKC,YAAYuiL,MAAM6T,UAC/Cr2L,KAAKytL,QAAU,IAAIxN,EAAOjgL,KAAK6e,QAASi4K,EAAK92L,KAAKmuL,iBAAiB8J,IACnEpnD,EAAEimD,GAAKjO,SAAS0N,IAKZ,iBAAkB5+K,SAASgG,iBAC7BkzH,EAAEl5H,SAASjT,MAAMwhB,WAAWtW,GAAG,YAAa,KAAMihI,EAAEj0H,MAGtD,IAAIxV,EAAW,WACT5G,EAAMof,OAAOi1K,WACfr0L,EAAM63L,iBAGR,IAAIC,EAAiB93L,EAAMo2L,YAC3Bp2L,EAAMo2L,YAAc,KACpB/lD,EAAErwI,EAAMqe,SAAS2zE,QAAQhyF,EAAMP,YAAYuiL,MAAM4H,OAE7CkO,IAAmBnC,IACrB31L,EAAM+2L,OAAO,KAAM/2L,IAIvB,GAAIqwI,EAAE7wI,KAAK82L,KAAK1T,SAASmT,IAAmB,CAC1C,IAAIp6J,EAAqBukJ,EAAKM,iCAAiChhL,KAAK82L,KACpEjmD,EAAE7wI,KAAK82L,KAAK9iG,IAAI0sF,EAAKH,eAAgBn5K,GAAU46K,qBAAqB7lJ,QAEpE/0B,MAKN07K,EAAOuI,KAAO,SAAcn7K,GAC1B,IAAI03K,EAAS5nL,KAET82L,EAAM92L,KAAKw3L,gBACXpJ,EAAYv9C,EAAE2xC,MAAMxiL,KAAKC,YAAYuiL,MAAM6H,MAE3CjjL,EAAW,WACTwgL,EAAOgP,cAAgBT,IAAmBW,EAAI/oJ,YAChD+oJ,EAAI/oJ,WAAW4uB,YAAYm6H,GAG7BlP,EAAO2Q,iBAEP3Q,EAAO/oK,QAAQ6kG,gBAAgB,oBAE/BmtB,EAAE+2C,EAAO/oK,SAAS2zE,QAAQo1F,EAAO3nL,YAAYuiL,MAAM8H,QAE5B,OAAnB1C,EAAO6F,SACT7F,EAAO6F,QAAQ1pJ,UAGb7zB,GACFA,KAMJ,GAFA2gI,EAAE7wI,KAAK6e,SAAS2zE,QAAQ47F,IAEpBA,EAAU15F,qBAAd,CAeA,GAXAm8C,EAAEimD,GAAK9kD,YAAYukD,IAGf,iBAAkB5+K,SAASgG,iBAC7BkzH,EAAEl5H,SAASjT,MAAMwhB,WAAWnW,IAAI,YAAa,KAAM8gI,EAAEj0H,MAGvD5c,KAAK62L,eAAeJ,KAAiB,EACrCz2L,KAAK62L,eAAeJ,KAAiB,EACrCz2L,KAAK62L,eAAeJ,KAAiB,EAEjC5lD,EAAE7wI,KAAK82L,KAAK1T,SAASmT,IAAmB,CAC1C,IAAIp6J,EAAqBukJ,EAAKM,iCAAiC8V,GAC/DjmD,EAAEimD,GAAK9iG,IAAI0sF,EAAKH,eAAgBn5K,GAAU46K,qBAAqB7lJ,QAE/D/0B,IAGFpH,KAAK42L,YAAc,KAGrB9T,EAAOt2H,OAAS,WACO,OAAjBxsD,KAAKytL,SACPztL,KAAKytL,QAAQY,kBAKjBvL,EAAO6U,cAAgB,WACrB,OAAO72J,QAAQ9gC,KAAK2gE,aAGtBmiH,EAAOqV,mBAAqB,SAA4BF,GACtDpnD,EAAE7wI,KAAKw3L,iBAAiB3O,SAAS2P,cAAqBP,IAGxDnV,EAAO0U,cAAgB,WAErB,OADAx3L,KAAK82L,IAAM92L,KAAK82L,KAAOjmD,EAAE7wI,KAAK4f,OAAOwjG,UAAU,GACxCpjH,KAAK82L,KAGdhU,EAAOkV,WAAa,WAClB,IAAIlB,EAAM92L,KAAKw3L,gBACfx3L,KAAKy4L,kBAAkB5nD,EAAEimD,EAAIryJ,iBAAiB+xJ,KAA4Bx2L,KAAK2gE,YAC/EkwE,EAAEimD,GAAK9kD,YAAYukD,GAAmB,IAAMA,KAG9CzT,EAAO2V,kBAAoB,SAA2BhV,EAAUjiL,GACvC,iBAAZA,IAAyBA,EAAQoqG,WAAYpqG,EAAQugL,OAa5D/hL,KAAK4f,OAAO4M,MACVxsB,KAAK4f,OAAOyqE,WACd7oF,EAAU8xL,GAAa9xL,EAASxB,KAAK4f,OAAO4zK,UAAWxzL,KAAK4f,OAAO6zK,aAGrEhQ,EAASj3J,KAAKhrB,IAEdiiL,EAASl9I,KAAK/kC,GAlBVxB,KAAK4f,OAAO4M,KACTqkH,EAAErvI,GAAS29C,SAASijI,GAAGqB,IAC1BA,EAAS7xJ,QAAQ6vE,OAAOjgG,GAG1BiiL,EAASl9I,KAAKsqG,EAAErvI,GAAS+kC,SAiB/Bu8I,EAAOniH,SAAW,WAChB,IAAIn7C,EAAQxlB,KAAK6e,QAAQC,aAAa,uBAMtC,OAJK0G,IACHA,EAAqC,mBAAtBxlB,KAAK4f,OAAO4F,MAAuBxlB,KAAK4f,OAAO4F,MAAM9kB,KAAKV,KAAK6e,SAAW7e,KAAK4f,OAAO4F,OAGhGA,GAITs9J,EAAOqL,iBAAmB,SAA0B8J,GAClD,IAAIlQ,EAAS/nL,KAyBb,OAAOqgL,EAAe,GAvBA,CACpBmO,UAAWyJ,EACXvJ,UAAW,CACTjnK,OAAQznB,KAAKyuL,aACbh/J,KAAM,CACJipK,SAAU14L,KAAK4f,OAAOk1K,mBAExB6D,MAAO,CACL95K,QAAS23K,IAEX7H,gBAAiB,CACfC,kBAAmB5uL,KAAK4f,OAAOwtK,WAGnCwL,SAAU,SAAkB91L,GACtBA,EAAK+1L,oBAAsB/1L,EAAK0rL,WAClCzG,EAAO+Q,6BAA6Bh2L,IAGxCi2L,SAAU,SAAkBj2L,GAC1B,OAAOilL,EAAO+Q,6BAA6Bh2L,KAGJ,GAAI9C,KAAK4f,OAAO0tK,eAG7DxK,EAAO2L,WAAa,WAClB,IAAIzF,EAAShpL,KAETynB,EAAS,GAWb,MATkC,mBAAvBznB,KAAK4f,OAAO6H,OACrBA,EAAOlH,GAAK,SAAUzd,GAEpB,OADAA,EAAKkpD,QAAUq0H,EAAe,GAAIv9K,EAAKkpD,QAAS,GAAIg9H,EAAOppK,OAAO6H,OAAO3kB,EAAKkpD,QAASg9H,EAAOnqK,UAAY,IACnG/b,GAGT2kB,EAAOA,OAASznB,KAAK4f,OAAO6H,OAGvBA,GAGTq7J,EAAOsV,cAAgB,WACrB,OAA8B,IAA1Bp4L,KAAK4f,OAAO2M,UACP5U,SAASjT,KAGdg8K,EAAKU,UAAUphL,KAAK4f,OAAO2M,WACtBskH,EAAE7wI,KAAK4f,OAAO2M,WAGhBskH,EAAEl5H,UAAUkjC,KAAK76C,KAAK4f,OAAO2M,YAGtCu2J,EAAOoV,eAAiB,SAAwB1J,GAC9C,OAAOuG,GAAgBvG,EAAU9iK,gBAGnCo3J,EAAOiU,cAAgB,WACrB,IAAIlF,EAAS7xL,KAEEA,KAAK4f,OAAO4yE,QAAQrnF,MAAM,KAChC7H,SAAQ,SAAUkvF,GACzB,GAAgB,UAAZA,EACFq+C,EAAEghD,EAAOhzK,SAASjP,GAAGiiL,EAAO5xL,YAAYuiL,MAAMqK,MAAOgF,EAAOjyK,OAAO4wH,UAAU,SAAUt8H,GACrF,OAAO29K,EAAO/7B,OAAO5hJ,WAElB,GAAIs+E,IAAYikG,GAAgB,CACrC,IAAIuC,EAAUxmG,IAAYikG,GAAgB5E,EAAO5xL,YAAYuiL,MAAM+C,WAAasM,EAAO5xL,YAAYuiL,MAAMmN,QACrGsJ,EAAWzmG,IAAYikG,GAAgB5E,EAAO5xL,YAAYuiL,MAAMgD,WAAaqM,EAAO5xL,YAAYuiL,MAAM8T,SAC1GzlD,EAAEghD,EAAOhzK,SAASjP,GAAGopL,EAASnH,EAAOjyK,OAAO4wH,UAAU,SAAUt8H,GAC9D,OAAO29K,EAAOyF,OAAOpjL,MACpBtE,GAAGqpL,EAAUpH,EAAOjyK,OAAO4wH,UAAU,SAAUt8H,GAChD,OAAO29K,EAAO0F,OAAOrjL,UAK3BlU,KAAK03L,kBAAoB,WACnB7F,EAAOhzK,SACTgzK,EAAOxG,QAIXx6C,EAAE7wI,KAAK6e,SAAS+xH,QAAQ,UAAUhhI,GAAG,gBAAiB5P,KAAK03L,mBAEvD13L,KAAK4f,OAAO4wH,SACdxwI,KAAK4f,OAASygK,EAAe,GAAIrgL,KAAK4f,OAAQ,CAC5C4yE,QAAS,SACTg+C,SAAU,KAGZxwI,KAAKk5L,aAITpW,EAAOoW,UAAY,WACjB,IAAIC,SAAmBn5L,KAAK6e,QAAQC,aAAa,wBAE7C9e,KAAK6e,QAAQC,aAAa,UAA0B,WAAdq6K,KACxCn5L,KAAK6e,QAAQsM,aAAa,sBAAuBnrB,KAAK6e,QAAQC,aAAa,UAAY,IACvF9e,KAAK6e,QAAQsM,aAAa,QAAS,MAIvC23J,EAAOwU,OAAS,SAAgBpjL,EAAOu6J,GACrC,IAAI0oB,EAAUn3L,KAAKC,YAAYqiL,UAC/B7T,EAAUA,GAAW59B,EAAE38H,EAAMwhC,eAAe5yC,KAAKq0L,MAG/C1oB,EAAU,IAAIzuK,KAAKC,YAAYiU,EAAMwhC,cAAe11C,KAAKo3L,sBACzDvmD,EAAE38H,EAAMwhC,eAAe5yC,KAAKq0L,EAAS1oB,IAGnCv6J,IACFu6J,EAAQooB,eAA8B,YAAf3iL,EAAM5H,KAAqBmqL,GAAgBA,KAAiB,GAGjF5lD,EAAE49B,EAAQ+oB,iBAAiBpU,SAASmT,KAAqB9nB,EAAQmoB,cAAgBT,GACnF1nB,EAAQmoB,YAAcT,IAIxB5kL,aAAak9J,EAAQkoB,UACrBloB,EAAQmoB,YAAcT,GAEjB1nB,EAAQ7uJ,OAAOgyB,OAAU68H,EAAQ7uJ,OAAOgyB,MAAM1I,KAKnDulI,EAAQkoB,SAAW9lL,YAAW,WACxB49J,EAAQmoB,cAAgBT,IAC1B1nB,EAAQvlI,SAETulI,EAAQ7uJ,OAAOgyB,MAAM1I,MARtBulI,EAAQvlI,SAWZ45I,EAAOyU,OAAS,SAAgBrjL,EAAOu6J,GACrC,IAAI0oB,EAAUn3L,KAAKC,YAAYqiL,UAC/B7T,EAAUA,GAAW59B,EAAE38H,EAAMwhC,eAAe5yC,KAAKq0L,MAG/C1oB,EAAU,IAAIzuK,KAAKC,YAAYiU,EAAMwhC,cAAe11C,KAAKo3L,sBACzDvmD,EAAE38H,EAAMwhC,eAAe5yC,KAAKq0L,EAAS1oB,IAGnCv6J,IACFu6J,EAAQooB,eAA8B,aAAf3iL,EAAM5H,KAAsBmqL,GAAgBA,KAAiB,GAGlFhoB,EAAQ4oB,yBAIZ9lL,aAAak9J,EAAQkoB,UACrBloB,EAAQmoB,YAAcT,GAEjB1nB,EAAQ7uJ,OAAOgyB,OAAU68H,EAAQ7uJ,OAAOgyB,MAAMy5I,KAKnD5c,EAAQkoB,SAAW9lL,YAAW,WACxB49J,EAAQmoB,cAAgBT,IAC1B1nB,EAAQ4c,SAET5c,EAAQ7uJ,OAAOgyB,MAAMy5I,MARtB5c,EAAQ4c,SAWZvI,EAAOuU,qBAAuB,WAC5B,IAAK,IAAI7kG,KAAWxyF,KAAK62L,eACvB,GAAI72L,KAAK62L,eAAerkG,GACtB,OAAO,EAIX,OAAO,GAGTswF,EAAO8D,WAAa,SAAoBhnK,GACtC,IAAIw5K,EAAiBvoD,EAAE7wI,KAAK6e,SAAS/b,OA6BrC,OA5BAvD,OAAO6K,KAAKgvL,GAAgB91L,SAAQ,SAAU+1L,IACK,IAA7C1E,GAAsBjtL,QAAQ2xL,WACzBD,EAAeC,MAKE,iBAF5Bz5K,EAASygK,EAAe,GAAIrgL,KAAKC,YAAY6kL,QAAS,GAAIsU,EAAgB,GAAsB,iBAAXx5K,GAAuBA,EAASA,EAAS,KAE5GgyB,QAChBhyB,EAAOgyB,MAAQ,CACb1I,KAAMtpB,EAAOgyB,MACby5I,KAAMzrK,EAAOgyB,QAIW,iBAAjBhyB,EAAO4F,QAChB5F,EAAO4F,MAAQ5F,EAAO4F,MAAMhiB,YAGA,iBAAnBoc,EAAOpe,UAChBoe,EAAOpe,QAAUoe,EAAOpe,QAAQgC,YAGlCk9K,EAAKW,gBAAgBiT,GAAQ10K,EAAQ5f,KAAKC,YAAYilL,aAElDtlK,EAAOyqE,WACTzqE,EAAOwjG,SAAWkwE,GAAa1zK,EAAOwjG,SAAUxjG,EAAO4zK,UAAW5zK,EAAO6zK,aAGpE7zK,GAGTkjK,EAAOsU,mBAAqB,WAC1B,IAAIx3K,EAAS,GAEb,GAAI5f,KAAK4f,OACP,IAAK,IAAIvO,KAAOrR,KAAK4f,OACf5f,KAAKC,YAAY6kL,QAAQzzK,KAASrR,KAAK4f,OAAOvO,KAChDuO,EAAOvO,GAAOrR,KAAK4f,OAAOvO,IAKhC,OAAOuO,GAGTkjK,EAAOyV,eAAiB,WACtB,IAAIe,EAAOzoD,EAAE7wI,KAAKw3L,iBACd+B,EAAWD,EAAK36K,KAAK,SAASyP,MAAMsmK,IAEvB,OAAb6E,GAAqBA,EAASl4L,QAChCi4L,EAAKtnD,YAAYunD,EAAStzK,KAAK,MAInC68J,EAAOgW,6BAA+B,SAAsCU,GAC1E,IAAIC,EAAiBD,EAAWl3L,SAChCtC,KAAK82L,IAAM2C,EAAeC,OAE1B15L,KAAKu4L,iBAELv4L,KAAKm4L,mBAAmBn4L,KAAKk4L,eAAesB,EAAWhL,aAGzD1L,EAAOuV,eAAiB,WACtB,IAAIvB,EAAM92L,KAAKw3L,gBACXmC,EAAsB35L,KAAK4f,OAAOi1K,UAEE,OAApCiC,EAAIh4K,aAAa,iBAIrB+xH,EAAEimD,GAAK9kD,YAAYukD,IACnBv2L,KAAK4f,OAAOi1K,WAAY,EACxB70L,KAAKqrL,OACLrrL,KAAKkpC,OACLlpC,KAAK4f,OAAOi1K,UAAY8E,IAI1B5hB,EAAQwL,iBAAmB,SAA0B3jK,GACnD,OAAO5f,KAAKwjL,MAAK,WACf,IAAI1gL,EAAO+tI,EAAE7wI,MAAM8C,KAAKyxL,IAEpBv1K,EAA4B,iBAAXY,GAAuBA,EAE5C,IAAK9c,IAAQ,eAAesd,KAAKR,MAI5B9c,IACHA,EAAO,IAAIi1K,EAAQ/3K,KAAMgf,GACzB6xH,EAAE7wI,MAAM8C,KAAKyxL,GAAYzxL,IAGL,iBAAX8c,GAAqB,CAC9B,QAA4B,IAAjB9c,EAAK8c,GACd,MAAM,IAAIna,UAAU,oBAAuBma,EAAS,KAGtD9c,EAAK8c,UAKXsgK,EAAanI,EAAS,KAAM,CAAC,CAC3B1mK,IAAK,UACL3P,IAAK,WACH,MA1pBU,UA4pBX,CACD2P,IAAK,UACL3P,IAAK,WACH,OAAO2zL,KAER,CACDhkL,IAAK,OACL3P,IAAK,WACH,OAAO4yL,KAER,CACDjjL,IAAK,WACL3P,IAAK,WACH,OAAO6yL,KAER,CACDljL,IAAK,QACL3P,IAAK,WACH,OAAO00L,KAER,CACD/kL,IAAK,YACL3P,IAAK,WACH,OAAO8yL,KAER,CACDnjL,IAAK,cACL3P,IAAK,WACH,OAAOkzL,OAIJ7c,EAnmBT,GA4mBAlnC,EAAEtwH,GAAS,QAAIw3J,GAAQwL,iBACvB1yC,EAAEtwH,GAAS,QAAE+J,YAAcytJ,GAE3BlnC,EAAEtwH,GAAS,QAAEqjK,WAAa,WAExB,OADA/yC,EAAEtwH,GAAS,QAAIk0K,GACR1c,GAAQwL,kBASjB,IAAIqW,GAAS,UAETC,GAAa,aACbC,GAAc,cACdC,GAAuBlpD,EAAEtwH,GAAS,QAElCy5K,GAAuB,IAAI9tK,OAAO,wBAAqC,KAEvE+tK,GAAY5Z,EAAe,GAAItI,GAAQ+M,QAAS,CAClD0J,UAAW,QACXh8F,QAAS,QACThxF,QAAS,GACT4hH,SAAU,wIAGR82E,GAAgB7Z,EAAe,GAAItI,GAAQmN,YAAa,CAC1D1jL,QAAS,8BAGP24L,GACI,OADJA,GAEI,OAEJC,GACK,kBADLA,GAEO,gBAEPC,GAAU,CACZhQ,KAAM,kBACNC,OAAQ,oBACRH,KAAM,kBACNC,MAAO,mBACPiM,SAAU,sBACVxJ,MAAO,mBACP8C,QAAS,qBACT2G,SAAU,sBACV/Q,WAAY,wBACZC,WAAY,yBAQV8U,GAEJ,SAAUC,GAGR,SAASD,IACP,OAAOC,EAAS5zL,MAAM3G,KAAMoB,YAAcpB,KAh9G9C,IAAwBwZ,EAAUC,IA68GR8gL,GA78GF/gL,EA68GP8gL,GA58GNp6L,UAAYX,OAAOY,OAAOsZ,EAAWvZ,WAC9CsZ,EAAStZ,UAAUD,YAAcuZ,EACjCA,EAAS/Z,UAAYga,EAg9GrB,IAAIqpK,EAASwX,EAAQp6L,UA6GrB,OA1GA4iL,EAAO6U,cAAgB,WACrB,OAAO33L,KAAK2gE,YAAc3gE,KAAKw6L,eAGjC1X,EAAOqV,mBAAqB,SAA4BF,GACtDpnD,EAAE7wI,KAAKw3L,iBAAiB3O,SAAS4R,cAAuBxC,IAG1DnV,EAAO0U,cAAgB,WAErB,OADAx3L,KAAK82L,IAAM92L,KAAK82L,KAAOjmD,EAAE7wI,KAAK4f,OAAOwjG,UAAU,GACxCpjH,KAAK82L,KAGdhU,EAAOkV,WAAa,WAClB,IAAIsB,EAAOzoD,EAAE7wI,KAAKw3L,iBAElBx3L,KAAKy4L,kBAAkBa,EAAKz+I,KAAKu/I,IAAmBp6L,KAAK2gE,YAEzD,IAAIn/D,EAAUxB,KAAKw6L,cAEI,mBAAZh5L,IACTA,EAAUA,EAAQd,KAAKV,KAAK6e,UAG9B7e,KAAKy4L,kBAAkBa,EAAKz+I,KAAKu/I,IAAqB54L,GACtD83L,EAAKtnD,YAAYmoD,GAAmB,IAAMA,KAI5CrX,EAAO0X,YAAc,WACnB,OAAOx6L,KAAK6e,QAAQC,aAAa,iBAAmB9e,KAAK4f,OAAOpe,SAGlEshL,EAAOyV,eAAiB,WACtB,IAAIe,EAAOzoD,EAAE7wI,KAAKw3L,iBACd+B,EAAWD,EAAK36K,KAAK,SAASyP,MAAM4rK,IAEvB,OAAbT,GAAqBA,EAASl4L,OAAS,GACzCi4L,EAAKtnD,YAAYunD,EAAStzK,KAAK,MAKnCq0K,EAAQ/W,iBAAmB,SAA0B3jK,GACnD,OAAO5f,KAAKwjL,MAAK,WACf,IAAI1gL,EAAO+tI,EAAE7wI,MAAM8C,KAAK+2L,IAEpB76K,EAA4B,iBAAXY,EAAsBA,EAAS,KAEpD,IAAK9c,IAAQ,eAAesd,KAAKR,MAI5B9c,IACHA,EAAO,IAAIw3L,EAAQt6L,KAAMgf,GACzB6xH,EAAE7wI,MAAM8C,KAAK+2L,GAAY/2L,IAGL,iBAAX8c,GAAqB,CAC9B,QAA4B,IAAjB9c,EAAK8c,GACd,MAAM,IAAIna,UAAU,oBAAuBma,EAAS,KAGtD9c,EAAK8c,UAKXsgK,EAAaoa,EAAS,KAAM,CAAC,CAC3BjpL,IAAK,UAEL3P,IAAK,WACH,MAhIU,UAkIX,CACD2P,IAAK,UACL3P,IAAK,WACH,OAAOu4L,KAER,CACD5oL,IAAK,OACL3P,IAAK,WACH,OAAOk4L,KAER,CACDvoL,IAAK,WACL3P,IAAK,WACH,OAAOm4L,KAER,CACDxoL,IAAK,QACL3P,IAAK,WACH,OAAO24L,KAER,CACDhpL,IAAK,YACL3P,IAAK,WACH,OAAOo4L,KAER,CACDzoL,IAAK,cACL3P,IAAK,WACH,OAAOw4L,OAIJI,EApHT,CAqHEviB,IAQFlnC,EAAEtwH,GAAS,QAAI+5K,GAAQ/W,iBACvB1yC,EAAEtwH,GAAS,QAAE+J,YAAcgwK,GAE3BzpD,EAAEtwH,GAAS,QAAEqjK,WAAa,WAExB,OADA/yC,EAAEtwH,GAAS,QAAIw5K,GACRO,GAAQ/W,kBASjB,IAAImX,GAAS,YAETC,GAAa,eACbC,GAAc,IAAMD,GAEpBE,GAAuBhqD,EAAEtwH,GAAGm6K,IAC5BI,GAAY,CACdrzK,OAAQ,GACR3lB,OAAQ,OACRqP,OAAQ,IAEN4pL,GAAgB,CAClBtzK,OAAQ,SACR3lB,OAAQ,SACRqP,OAAQ,oBAEN6pL,GAAU,CACZC,SAAU,WAAaL,GACvBM,OAAQ,SAAWN,GACnBzW,cAAe,8BAEbgX,GACa,gBADbA,GAGM,SAENC,GACQ,sBADRA,GAGc,oBAHdA,GAIS,YAJTA,GAKS,YALTA,GAMU,mBANVA,GAOQ,YAPRA,GAQc,iBARdA,GASe,mBAEfC,GACM,SADNA,GAEQ,WAQRC,GAEJ,WACE,SAASA,EAAUz8K,EAASe,GAC1B,IAAIpf,EAAQR,KAEZA,KAAKw6B,SAAW3b,EAChB7e,KAAKu7L,eAAqC,SAApB18K,EAAQ4M,QAAqBnY,OAASuL,EAC5D7e,KAAKgf,QAAUhf,KAAK4mL,WAAWhnK,GAC/B5f,KAAKirL,UAAYjrL,KAAKgf,QAAQ7N,OAAS,IAAMiqL,GAAuB,IAAOp7L,KAAKgf,QAAQ7N,OAAS,IAAMiqL,GAAwB,IAAQp7L,KAAKgf,QAAQ7N,OAAS,IAAMiqL,GACnKp7L,KAAKw7L,SAAW,GAChBx7L,KAAKy7L,SAAW,GAChBz7L,KAAK07L,cAAgB,KACrB17L,KAAK27L,cAAgB,EACrB9qD,EAAE7wI,KAAKu7L,gBAAgB3rL,GAAGorL,GAAQE,QAAQ,SAAUhnL,GAClD,OAAO1T,EAAMo7L,SAAS1nL,MAExBlU,KAAK67L,UAEL77L,KAAK47L,WAIP,IAAI9Y,EAASwY,EAAUp7L,UAqMvB,OAlMA4iL,EAAO+Y,QAAU,WACf,IAAIjU,EAAS5nL,KAET87L,EAAa97L,KAAKu7L,iBAAmBv7L,KAAKu7L,eAAejoL,OAAS+nL,GAAsBA,GACxFU,EAAuC,SAAxB/7L,KAAKgf,QAAQld,OAAoBg6L,EAAa97L,KAAKgf,QAAQld,OAC1Ek6L,EAAaD,IAAiBV,GAAwBr7L,KAAKi8L,gBAAkB,EACjFj8L,KAAKw7L,SAAW,GAChBx7L,KAAKy7L,SAAW,GAChBz7L,KAAK27L,cAAgB37L,KAAKk8L,mBACZ,GAAGhwL,MAAMxL,KAAKiX,SAAS8sB,iBAAiBzkC,KAAKirL,YACnD3zK,KAAI,SAAUuH,GACpB,IAAI1N,EACAgrL,EAAiBzb,EAAKI,uBAAuBjiK,GAMjD,GAJIs9K,IACFhrL,EAASwG,SAAS6G,cAAc29K,IAG9BhrL,EAAQ,CACV,IAAIirL,EAAYjrL,EAAOgyC,wBAEvB,GAAIi5I,EAAU13K,OAAS03K,EAAUz3K,OAE/B,MAAO,CAACksH,EAAE1/H,GAAQ4qL,KAAgBj+J,IAAMk+J,EAAYG,GAIxD,OAAO,QACNpiL,QAAO,SAAUhT,GAClB,OAAOA,KACN4rB,MAAK,SAAU7K,EAAGloB,GACnB,OAAOkoB,EAAE,GAAKloB,EAAE,MACf0D,SAAQ,SAAUyD,GACnB6gL,EAAO4T,SAAS31L,KAAKkB,EAAK,IAE1B6gL,EAAO6T,SAAS51L,KAAKkB,EAAK,QAI9B+7K,EAAOt7K,QAAU,WACfqpI,EAAEqyC,WAAWljL,KAAKw6B,SAAUmgK,IAC5B9pD,EAAE7wI,KAAKu7L,gBAAgBxrL,IAAI6qL,IAC3B56L,KAAKw6B,SAAW,KAChBx6B,KAAKu7L,eAAiB,KACtBv7L,KAAKgf,QAAU,KACfhf,KAAKirL,UAAY,KACjBjrL,KAAKw7L,SAAW,KAChBx7L,KAAKy7L,SAAW,KAChBz7L,KAAK07L,cAAgB,KACrB17L,KAAK27L,cAAgB,MAIvB7Y,EAAO8D,WAAa,SAAoBhnK,GAGtC,GAA6B,iBAF7BA,EAASygK,EAAe,GAAIya,GAAW,GAAsB,iBAAXl7K,GAAuBA,EAASA,EAAS,KAEzEzO,OAAqB,CACrC,IAAI5D,EAAKsjI,EAAEjxH,EAAOzO,QAAQwN,KAAK,MAE1BpR,IACHA,EAAKmzK,EAAKE,OAAO8Z,IACjB7pD,EAAEjxH,EAAOzO,QAAQwN,KAAK,KAAMpR,IAG9BqS,EAAOzO,OAAS,IAAM5D,EAIxB,OADAmzK,EAAKW,gBAAgBqZ,GAAQ96K,EAAQm7K,IAC9Bn7K,GAGTkjK,EAAOmZ,cAAgB,WACrB,OAAOj8L,KAAKu7L,iBAAmBjoL,OAAStT,KAAKu7L,eAAe76E,YAAc1gH,KAAKu7L,eAAexwJ,WAGhG+3I,EAAOoZ,iBAAmB,WACxB,OAAOl8L,KAAKu7L,eAAetwJ,cAAgB1nB,KAAKmnB,IAAI/yB,SAASjT,KAAKumC,aAActzB,SAASgG,gBAAgBstB,eAG3G63I,EAAOuZ,iBAAmB,WACxB,OAAOr8L,KAAKu7L,iBAAmBjoL,OAASA,OAAOg8J,YAActvK,KAAKu7L,eAAep4I,wBAAwBx+B,QAG3Gm+J,EAAO8Y,SAAW,WAChB,IAAI7wJ,EAAY/qC,KAAKi8L,gBAAkBj8L,KAAKgf,QAAQyI,OAEhDwjB,EAAejrC,KAAKk8L,mBAEpBpsI,EAAY9vD,KAAKgf,QAAQyI,OAASwjB,EAAejrC,KAAKq8L,mBAM1D,GAJIr8L,KAAK27L,gBAAkB1wJ,GACzBjrC,KAAK67L,UAGH9wJ,GAAa+kB,EAAjB,CACE,IAAI3+C,EAASnR,KAAKy7L,SAASz7L,KAAKy7L,SAASp6L,OAAS,GAE9CrB,KAAK07L,gBAAkBvqL,GACzBnR,KAAKs8L,UAAUnrL,OAJnB,CAUA,GAAInR,KAAK07L,eAAiB3wJ,EAAY/qC,KAAKw7L,SAAS,IAAMx7L,KAAKw7L,SAAS,GAAK,EAK3E,OAJAx7L,KAAK07L,cAAgB,UAErB17L,KAAKmmG,SAOP,IAFA,IAESjlG,EAFUlB,KAAKw7L,SAASn6L,OAENH,KACJlB,KAAK07L,gBAAkB17L,KAAKy7L,SAASv6L,IAAM6pC,GAAa/qC,KAAKw7L,SAASt6L,UAAuC,IAAzBlB,KAAKw7L,SAASt6L,EAAI,IAAsB6pC,EAAY/qC,KAAKw7L,SAASt6L,EAAI,KAG7KlB,KAAKs8L,UAAUt8L,KAAKy7L,SAASv6L,MAKnC4hL,EAAOwZ,UAAY,SAAmBnrL,GACpCnR,KAAK07L,cAAgBvqL,EAErBnR,KAAKmmG,SAEL,IAAIo2F,EAAUv8L,KAAKirL,UAAU9/K,MAAM,KAAKmM,KAAI,SAAUk5H,GACpD,OAAOA,EAAW,iBAAoBr/H,EAAS,MAASq/H,EAAW,UAAar/H,EAAS,QAGvFqrL,EAAQ3rD,EAAE,GAAG3kI,MAAMxL,KAAKiX,SAAS8sB,iBAAiB83J,EAAQt2K,KAAK,QAE/Du2K,EAAMpZ,SAAS+X,KACjBqB,EAAM5rD,QAAQwqD,IAAqBvgJ,KAAKugJ,IAA4BvS,SAASsS,IAC7EqB,EAAM3T,SAASsS,MAGfqB,EAAM3T,SAASsS,IAGfqB,EAAM3vE,QAAQuuE,IAA2B1vJ,KAAK0vJ,GAAuB,KAAOA,IAAuBvS,SAASsS,IAE5GqB,EAAM3vE,QAAQuuE,IAA2B1vJ,KAAK0vJ,IAAsBl1K,SAASk1K,IAAsBvS,SAASsS,KAG9GtqD,EAAE7wI,KAAKu7L,gBAAgB/oG,QAAQwoG,GAAQC,SAAU,CAC/C5S,cAAel3K,KAInB2xK,EAAO38E,OAAS,WACd,GAAGj6F,MAAMxL,KAAKiX,SAAS8sB,iBAAiBzkC,KAAKirL,YAAYlxK,QAAO,SAAU0kB,GACxE,OAAOA,EAAK5O,UAAU0H,SAAS4jK,OAC9B73L,SAAQ,SAAUm7B,GACnB,OAAOA,EAAK5O,UAAUkyC,OAAOo5H,QAKjCG,EAAU/X,iBAAmB,SAA0B3jK,GACrD,OAAO5f,KAAKwjL,MAAK,WACf,IAAI1gL,EAAO+tI,EAAE7wI,MAAM8C,KAAK63L,IASxB,GALK73L,IACHA,EAAO,IAAIw4L,EAAUt7L,KAHS,iBAAX4f,GAAuBA,GAI1CixH,EAAE7wI,MAAM8C,KAAK63L,GAAY73L,IAGL,iBAAX8c,EAAqB,CAC9B,QAA4B,IAAjB9c,EAAK8c,GACd,MAAM,IAAIna,UAAU,oBAAuBma,EAAS,KAGtD9c,EAAK8c,UAKXsgK,EAAaob,EAAW,KAAM,CAAC,CAC7BjqL,IAAK,UACL3P,IAAK,WACH,MAjQU,UAmQX,CACD2P,IAAK,UACL3P,IAAK,WACH,OAAOo5L,OAIJQ,EA1NT,GAmOAzqD,EAAEv9H,QAAQ1D,GAAGorL,GAAQ7W,eAAe,WAIlC,IAHA,IAAIsY,EAAa,GAAGvwL,MAAMxL,KAAKiX,SAAS8sB,iBAAiB22J,KAGhDl6L,EAFcu7L,EAAWp7L,OAEHH,KAAM,CACnC,IAAIw7L,EAAO7rD,EAAE4rD,EAAWv7L,IAExBo6L,GAAU/X,iBAAiB7iL,KAAKg8L,EAAMA,EAAK55L,YAS/C+tI,EAAEtwH,GAAGm6K,IAAUY,GAAU/X,iBACzB1yC,EAAEtwH,GAAGm6K,IAAQpwK,YAAcgxK,GAE3BzqD,EAAEtwH,GAAGm6K,IAAQ9W,WAAa,WAExB,OADA/yC,EAAEtwH,GAAGm6K,IAAUG,GACRS,GAAU/X,kBASnB,IAEIoZ,GAAa,SAGbC,GAAuB/rD,EAAEtwH,GAAS,IAClCs8K,GAAU,CACZxS,KAAM,cACNC,OAAQ,gBACRH,KAAM,cACNC,MAAO,eACPzH,eAAgB,yBAEdma,GACa,gBADbA,GAEM,SAFNA,GAGQ,WAHRA,GAII,OAJJA,GAKI,OAEJC,GACQ,YADRA,GAEc,oBAFdA,GAGM,UAHNA,GAIS,iBAJTA,GAKW,kEALXA,GAMe,mBANfA,GAOqB,2BAQrBC,GAEJ,WACE,SAASA,EAAIn+K,GACX7e,KAAKw6B,SAAW3b,EAIlB,IAAIikK,EAASka,EAAI98L,UA6JjB,OA1JA4iL,EAAO55I,KAAO,WACZ,IAAI1oC,EAAQR,KAEZ,KAAIA,KAAKw6B,SAASuT,YAAc/tC,KAAKw6B,SAASuT,WAAW69D,WAAa8W,KAAK+uE,cAAgB5gD,EAAE7wI,KAAKw6B,UAAU4oJ,SAAS0Z,KAAuBjsD,EAAE7wI,KAAKw6B,UAAU4oJ,SAAS0Z,KAAtK,CAIA,IAAI3rL,EACAkoG,EACA4jF,EAAcpsD,EAAE7wI,KAAKw6B,UAAUo2G,QAAQmsD,IAA2B,GAClEvsD,EAAWkwC,EAAKI,uBAAuB9gL,KAAKw6B,UAEhD,GAAIyiK,EAAa,CACf,IAAIC,EAAwC,OAAzBD,EAAYv1J,UAA8C,OAAzBu1J,EAAYv1J,SAAoBq1J,GAAuBA,GAE3G1jF,GADAA,EAAWw3B,EAAEssD,UAAUtsD,EAAEosD,GAAapiJ,KAAKqiJ,KACvB7jF,EAASh4G,OAAS,GAGxC,IAAI+sL,EAAYv9C,EAAE2xC,MAAMqa,GAAQxS,KAAM,CACpChC,cAAeroL,KAAKw6B,WAElBwzJ,EAAYn9C,EAAE2xC,MAAMqa,GAAQ1S,KAAM,CACpC9B,cAAehvE,IASjB,GANIA,GACFw3B,EAAEx3B,GAAU7mB,QAAQ47F,GAGtBv9C,EAAE7wI,KAAKw6B,UAAUg4D,QAAQw7F,IAErBA,EAAUt5F,uBAAwB05F,EAAU15F,qBAAhD,CAII87C,IACFr/H,EAASwG,SAAS6G,cAAcgyH,IAGlCxwI,KAAKs8L,UAAUt8L,KAAKw6B,SAAUyiK,GAE9B,IAAI71L,EAAW,WACb,IAAIg2L,EAAcvsD,EAAE2xC,MAAMqa,GAAQvS,OAAQ,CACxCjC,cAAe7nL,EAAMg6B,WAEnBm3J,EAAa9gD,EAAE2xC,MAAMqa,GAAQzS,MAAO,CACtC/B,cAAehvE,IAEjBw3B,EAAEx3B,GAAU7mB,QAAQ4qG,GACpBvsD,EAAErwI,EAAMg6B,UAAUg4D,QAAQm/F,IAGxBxgL,EACFnR,KAAKs8L,UAAUnrL,EAAQA,EAAO48B,WAAY3mC,GAE1CA,OAIJ07K,EAAOt7K,QAAU,WACfqpI,EAAEqyC,WAAWljL,KAAKw6B,SAAUmiK,IAC5B38L,KAAKw6B,SAAW,MAIlBsoJ,EAAOwZ,UAAY,SAAmBz9K,EAAS0N,EAAWrc,GACxD,IAAI03K,EAAS5nL,KAGT66E,IADiBtuD,GAAqC,OAAvBA,EAAUmb,UAA4C,OAAvBnb,EAAUmb,SAA+DmpG,EAAEtkH,GAAWrG,SAAS62K,IAAhElsD,EAAEtkH,GAAWsuB,KAAKkiJ,KACvF,GACxBjR,EAAkB57K,GAAY2qE,GAAUg2D,EAAEh2D,GAAQuoG,SAAS0Z,IAE3D11L,EAAW,WACb,OAAOwgL,EAAOyV,oBAAoBx+K,EAASg8D,EAAQ3qE,IAGrD,GAAI2qE,GAAUixG,EAAiB,CAC7B,IAAI3vJ,EAAqBukJ,EAAKM,iCAAiCnmG,GAC/Dg2D,EAAEh2D,GAAQm3D,YAAY8qD,IAAkB9oG,IAAI0sF,EAAKH,eAAgBn5K,GAAU46K,qBAAqB7lJ,QAEhG/0B,KAIJ07K,EAAOua,oBAAsB,SAA6Bx+K,EAASg8D,EAAQ3qE,GACzE,GAAI2qE,EAAQ,CACVg2D,EAAEh2D,GAAQm3D,YAAY8qD,IACtB,IAAIQ,EAAgBzsD,EAAEh2D,EAAO9sC,YAAY8M,KAAKkiJ,IAAkC,GAE5EO,GACFzsD,EAAEysD,GAAetrD,YAAY8qD,IAGK,QAAhCjiH,EAAO/7D,aAAa,SACtB+7D,EAAO1vD,aAAa,iBAAiB,GAgBzC,GAZA0lH,EAAEhyH,GAASgqK,SAASiU,IAEiB,QAAjCj+K,EAAQC,aAAa,SACvBD,EAAQsM,aAAa,iBAAiB,GAGxCu1J,EAAK7kE,OAAOh9F,GAERA,EAAQgR,UAAU0H,SAASulK,KAC7Bj+K,EAAQgR,UAAUmyC,IAAI86H,IAGpBj+K,EAAQkvB,YAAc8iG,EAAEhyH,EAAQkvB,YAAYq1I,SAAS0Z,IAA4B,CACnF,IAAIS,EAAkB1sD,EAAEhyH,GAAS+xH,QAAQmsD,IAAqB,GAE9D,GAAIQ,EAAiB,CACnB,IAAIC,EAAqB,GAAGtxL,MAAMxL,KAAK68L,EAAgB94J,iBAAiBs4J,KACxElsD,EAAE2sD,GAAoB3U,SAASiU,IAGjCj+K,EAAQsM,aAAa,iBAAiB,GAGpCjb,GACFA,KAKJ8sL,EAAIzZ,iBAAmB,SAA0B3jK,GAC/C,OAAO5f,KAAKwjL,MAAK,WACf,IAAI0I,EAAQr7C,EAAE7wI,MACV8C,EAAOopL,EAAMppL,KAAK65L,IAOtB,GALK75L,IACHA,EAAO,IAAIk6L,EAAIh9L,MACfksL,EAAMppL,KAAK65L,GAAY75L,IAGH,iBAAX8c,EAAqB,CAC9B,QAA4B,IAAjB9c,EAAK8c,GACd,MAAM,IAAIna,UAAU,oBAAuBma,EAAS,KAGtD9c,EAAK8c,UAKXsgK,EAAa8c,EAAK,KAAM,CAAC,CACvB3rL,IAAK,UACL3P,IAAK,WACH,MAnMU,YAuMPs7L,EAnKT,GA4KAnsD,EAAEl5H,UAAU/H,GAAGitL,GAAQla,eAAgBoa,IAAwB,SAAU7oL,GACvEA,EAAM+sB,iBAEN+7J,GAAIzZ,iBAAiB7iL,KAAKmwI,EAAE7wI,MAAO,WAQrC6wI,EAAEtwH,GAAS,IAAIy8K,GAAIzZ,iBACnB1yC,EAAEtwH,GAAS,IAAE+J,YAAc0yK,GAE3BnsD,EAAEtwH,GAAS,IAAEqjK,WAAa,WAExB,OADA/yC,EAAEtwH,GAAS,IAAIq8K,GACRI,GAAIzZ,kBASb,IAAIka,GAAS,QAETC,GAAa,WAEbC,GAAuB9sD,EAAEtwH,GAAS,MAClCq9K,GAAU,CACZ/N,cAAe,yBACfxF,KAAM,gBACNC,OAAQ,kBACRH,KAAM,gBACNC,MAAO,kBAELyT,GACI,OADJA,GAEI,OAFJA,GAGI,OAHJA,GAIO,UAEPC,GAAgB,CAClBjJ,UAAW,UACXkJ,SAAU,UACVnsJ,MAAO,UAELosJ,GAAY,CACdnJ,WAAW,EACXkJ,UAAU,EACVnsJ,MAAO,KAELqsJ,GACY,yBAQZC,GAEJ,WACE,SAASA,EAAMr/K,EAASe,GACtB5f,KAAKw6B,SAAW3b,EAChB7e,KAAKgf,QAAUhf,KAAK4mL,WAAWhnK,GAC/B5f,KAAK22L,SAAW,KAEhB32L,KAAK+2L,gBAIP,IAAIjU,EAASob,EAAMh+L,UAoJnB,OAjJA4iL,EAAO55I,KAAO,WACZ,IAAI1oC,EAAQR,KAERguL,EAAYn9C,EAAE2xC,MAAMob,GAAQzT,MAGhC,GAFAt5C,EAAE7wI,KAAKw6B,UAAUg4D,QAAQw7F,IAErBA,EAAUt5F,qBAAd,CAII10F,KAAKgf,QAAQ61K,WACf70L,KAAKw6B,SAAS3K,UAAUmyC,IAAI67H,IAG9B,IAAIz2L,EAAW,WACb5G,EAAMg6B,SAAS3K,UAAUkyC,OAAO87H,IAEhCr9L,EAAMg6B,SAAS3K,UAAUmyC,IAAI67H,IAE7BhtD,EAAErwI,EAAMg6B,UAAUg4D,QAAQorG,GAAQxT,OAE9B5pL,EAAMwe,QAAQ++K,WAChBv9L,EAAMm2L,SAAW9lL,YAAW,WAC1BrQ,EAAM6qL,SACL7qL,EAAMwe,QAAQ4yB,SAUrB,GANA5xC,KAAKw6B,SAAS3K,UAAUkyC,OAAO87H,IAE/Bnd,EAAK7kE,OAAO77G,KAAKw6B,UAEjBx6B,KAAKw6B,SAAS3K,UAAUmyC,IAAI67H,IAExB79L,KAAKgf,QAAQ61K,UAAW,CAC1B,IAAI14J,EAAqBukJ,EAAKM,iCAAiChhL,KAAKw6B,UACpEq2G,EAAE7wI,KAAKw6B,UAAUw5D,IAAI0sF,EAAKH,eAAgBn5K,GAAU46K,qBAAqB7lJ,QAEzE/0B,MAIJ07K,EAAOuI,KAAO,WACZ,GAAKrrL,KAAKw6B,SAAS3K,UAAU0H,SAASsmK,IAAtC,CAIA,IAAIzP,EAAYv9C,EAAE2xC,MAAMob,GAAQvT,MAChCx5C,EAAE7wI,KAAKw6B,UAAUg4D,QAAQ47F,GAErBA,EAAU15F,sBAId10F,KAAKm+L,WAGPrb,EAAOt7K,QAAU,WACf+J,aAAavR,KAAK22L,UAClB32L,KAAK22L,SAAW,KAEZ32L,KAAKw6B,SAAS3K,UAAU0H,SAASsmK,KACnC79L,KAAKw6B,SAAS3K,UAAUkyC,OAAO87H,IAGjChtD,EAAE7wI,KAAKw6B,UAAUzqB,IAAI6tL,GAAQ/N,eAC7Bh/C,EAAEqyC,WAAWljL,KAAKw6B,SAAUkjK,IAC5B19L,KAAKw6B,SAAW,KAChBx6B,KAAKgf,QAAU,MAIjB8jK,EAAO8D,WAAa,SAAoBhnK,GAGtC,OAFAA,EAASygK,EAAe,GAAI2d,GAAW,GAAIntD,EAAE7wI,KAAKw6B,UAAU13B,OAAQ,GAAsB,iBAAX8c,GAAuBA,EAASA,EAAS,IACxH8gK,EAAKW,gBAAgBoc,GAAQ79K,EAAQ5f,KAAKC,YAAYilL,aAC/CtlK,GAGTkjK,EAAOiU,cAAgB,WACrB,IAAInP,EAAS5nL,KAEb6wI,EAAE7wI,KAAKw6B,UAAU5qB,GAAGguL,GAAQ/N,cAAeoO,IAAyB,WAClE,OAAOrW,EAAOyD,WAIlBvI,EAAOqb,OAAS,WACd,IAAIpW,EAAS/nL,KAEToH,EAAW,WACb2gL,EAAOvtJ,SAAS3K,UAAUmyC,IAAI67H,IAE9BhtD,EAAEk3C,EAAOvtJ,UAAUg4D,QAAQorG,GAAQtT,SAKrC,GAFAtqL,KAAKw6B,SAAS3K,UAAUkyC,OAAO87H,IAE3B79L,KAAKgf,QAAQ61K,UAAW,CAC1B,IAAI14J,EAAqBukJ,EAAKM,iCAAiChhL,KAAKw6B,UACpEq2G,EAAE7wI,KAAKw6B,UAAUw5D,IAAI0sF,EAAKH,eAAgBn5K,GAAU46K,qBAAqB7lJ,QAEzE/0B,KAKJ82L,EAAM3a,iBAAmB,SAA0B3jK,GACjD,OAAO5f,KAAKwjL,MAAK,WACf,IAAIC,EAAW5yC,EAAE7wI,MACb8C,EAAO2gL,EAAS3gL,KAAK46L,IASzB,GALK56L,IACHA,EAAO,IAAIo7L,EAAMl+L,KAHa,iBAAX4f,GAAuBA,GAI1C6jK,EAAS3gL,KAAK46L,GAAY56L,IAGN,iBAAX8c,EAAqB,CAC9B,QAA4B,IAAjB9c,EAAK8c,GACd,MAAM,IAAIna,UAAU,oBAAuBma,EAAS,KAGtD9c,EAAK8c,GAAQ5f,WAKnBkgL,EAAage,EAAO,KAAM,CAAC,CACzB7sL,IAAK,UACL3P,IAAK,WACH,MAtLU,UAwLX,CACD2P,IAAK,cACL3P,IAAK,WACH,OAAOo8L,KAER,CACDzsL,IAAK,UACL3P,IAAK,WACH,OAAOs8L,OAIJE,EA9JT,GAuKArtD,EAAEtwH,GAAS,MAAI29K,GAAM3a,iBACrB1yC,EAAEtwH,GAAS,MAAE+J,YAAc4zK,GAE3BrtD,EAAEtwH,GAAS,MAAEqjK,WAAa,WAExB,OADA/yC,EAAEtwH,GAAS,MAAIo9K,GACRO,GAAM3a,kBAGfxqK,EAAQ8pK,MAAQA,EAChB9pK,EAAQ4hE,OAASA,EACjB5hE,EAAQqtK,SAAWA,GACnBrtK,EAAQ2xK,SAAWA,GACnB3xK,EAAQy0K,SAAWA,GACnBz0K,EAAQo3K,MAAQA,GAChBp3K,EAAQuhL,QAAUA,GAClBvhL,EAAQqlL,UAAY9C,GACpBviL,EAAQikL,IAAMA,GACdjkL,EAAQmlL,MAAQA,GAChBnlL,EAAQg/J,QAAUA,GAClBh/J,EAAQ2nK,KAAOA,EAEfnhL,OAAOuO,eAAeiL,EAAS,aAAc,CAAEpT,OAAO,IA/5IS04L,CAAQtlL,EAAS,EAAQ,MAAW,EAAQ,qBCN7G,OAOC,WACA,aAEA,IAAIulL,EAAS,GAAGx+L,eAEhB,SAAS48B,IAGR,IAFA,IAAI1W,EAAU,GAEL9kB,EAAI,EAAGA,EAAIE,UAAUC,OAAQH,IAAK,CAC1C,IAAImgB,EAAMjgB,UAAUF,GACpB,GAAKmgB,EAAL,CAEA,IAAIk9K,SAAiBl9K,EAErB,GAAgB,WAAZk9K,GAAoC,WAAZA,EAC3Bv4K,EAAQngB,KAAKwb,QACP,GAAI3hB,MAAMyc,QAAQkF,IAAQA,EAAIhgB,OAAQ,CAC5C,IAAIkjB,EAAQmY,EAAW/1B,MAAM,KAAM0a,GAC/BkD,GACHyB,EAAQngB,KAAK0e,QAER,GAAgB,WAAZg6K,EACV,IAAK,IAAIltL,KAAOgQ,EACXi9K,EAAO59L,KAAK2gB,EAAKhQ,IAAQgQ,EAAIhQ,IAChC2U,EAAQngB,KAAKwL,IAMjB,OAAO2U,EAAQC,KAAK,KAGgBnN,EAAOC,SAC3C2jB,EAAWpiB,QAAUoiB,EACrB5jB,EAAOC,QAAU2jB,QAKhB,KAFwB,EAAF,WACtB,OAAOA,GACP,QAFoB,OAEpB,aAxCH,+BCLA,IAAI8hK,EAAkB,EAAQ,MA2F9B1lL,EAAOC,QAlFP,SAAcwtB,EAAM3kC,GAClB,IAAI68L,EACFx2L,EACAy2L,EACAhqI,EACAqW,EACA/tD,EACA2hL,GAAU,EACP/8L,IACHA,EAAU,IAEZ68L,EAAQ78L,EAAQ68L,QAAS,EACzB,IAoCE,GAnCAC,EAAmBF,IAEnB9pI,EAAQ/8C,SAAS+8H,cACjB3pE,EAAYpzD,SAASinL,gBAErB5hL,EAAOrF,SAASE,cAAc,SACzB6tF,YAAcn/D,EAEnBvpB,EAAKuK,MAAM5E,IAAM,QAEjB3F,EAAKuK,MAAMsW,SAAW,QACtB7gB,EAAKuK,MAAMuW,IAAM,EACjB9gB,EAAKuK,MAAMwjF,KAAO,mBAElB/tF,EAAKuK,MAAMk6H,WAAa,MAExBzkI,EAAKuK,MAAMs3K,iBAAmB,OAC9B7hL,EAAKuK,MAAMu3K,cAAgB,OAC3B9hL,EAAKuK,MAAMw3K,aAAe,OAC1B/hL,EAAKuK,MAAMiwI,WAAa,OACxBx6I,EAAKa,iBAAiB,QAAQ,SAAS/X,GACrCA,EAAEuwC,kBACEz0C,EAAQ+7C,SACV73C,EAAEm7B,iBACFn7B,EAAEk5L,cAAcC,YAChBn5L,EAAEk5L,cAAcE,QAAQt9L,EAAQ+7C,OAAQpX,OAI5C5uB,SAASjT,KAAKqwD,YAAY/3C,GAE1B03C,EAAMygF,mBAAmBn4H,GACzB+tD,EAAUo0H,SAASzqI,IAEF/8C,SAASynL,YAAY,QAEpC,MAAM,IAAIz+L,MAAM,iCAElBg+L,GAAU,EACV,MAAOz3L,GACPu3L,GAASt2L,QAAQlB,MAAM,qCAAsCC,GAC7Du3L,GAASt2L,QAAQI,KAAK,4BACtB,IACE+K,OAAO0rL,cAAcE,QAAQt9L,EAAQ+7C,QAAU,OAAQpX,GACvDo4J,GAAU,EACV,MAAOz3L,GACPu3L,GAASt2L,QAAQlB,MAAM,uCAAwCC,GAC/Du3L,GAASt2L,QAAQlB,MAAM,0BACvBgB,EAlEN,SAAgBA,GACd,IAAIo3L,GAAW,YAAYj/K,KAAK/C,UAAUC,WAAa,IAAM,QAAU,KACvE,OAAOrV,EAAQ8L,QAAQ,gBAAiBsrL,GAgE1B1hJ,CAAO,YAAa/7C,EAAUA,EAAQqG,QApEjC,oCAqEfqL,OAAO07I,OAAO/mJ,EAASs+B,IAEzB,QACIwkC,IACkC,mBAAzBA,EAAUu0H,YACnBv0H,EAAUu0H,YAAY5qI,GAEtBqW,EAAUw0H,mBAIVviL,GACFrF,SAASjT,KAAKi4D,YAAY3/C,GAE5B0hL,IAGF,OAAOC,gCCxFT5lL,EAAQsB,YAAa,EAErB,IAAImlL,EAAS,EAAQ,MAMjBC,GAJUC,EAAuBF,GAInBE,EAFD,EAAQ,QAMrBC,EAAQD,EAFD,EAAQ,OAQnB,SAASA,EAAuBxmL,GAAO,OAAOA,GAAOA,EAAImB,WAAanB,EAAM,CAAEoB,QAASpB,GAEvF,SAASqR,EAAgBjoB,EAAUgoB,GAAe,KAAMhoB,aAAoBgoB,GAAgB,MAAM,IAAI7kB,UAAU,qCAEhH,SAASm6L,EAA2B5mL,EAAMtY,GAAQ,IAAKsY,EAAQ,MAAM,IAAIC,eAAe,6DAAgE,OAAOvY,GAAyB,iBAATA,GAAqC,mBAATA,EAA8BsY,EAAPtY,EAElO,SAASm/L,EAAUrmL,EAAUC,GAAc,GAA0B,mBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIhU,UAAU,kEAAoEgU,GAAeD,EAAStZ,UAAYX,OAAOY,OAAOsZ,GAAcA,EAAWvZ,UAAW,CAAED,YAAa,CAAE0F,MAAO6T,EAAUzL,YAAY,EAAOoL,UAAU,EAAMnL,cAAc,KAAeyL,IAAYla,OAAOC,eAAiBD,OAAOC,eAAega,EAAUC,GAAcD,EAAS/Z,UAAYga,GARjdimL,EAFD,EAAQ,OAYvB,IAAII,EAAwB,WAY5B,SAASC,EAAmBp6L,GAC1B,IAAIqK,EAAW,GACf,MAAO,CACLJ,GAAI,SAAY0+B,GACdt+B,EAASnK,KAAKyoC,IAEhBv+B,IAAK,SAAau+B,GAChBt+B,EAAWA,EAAS+J,QAAO,SAAUgxE,GACnC,OAAOA,IAAMz8C,MAGjB5sC,IAAK,WACH,OAAOiE,GAET8U,IAAK,SAAao9B,EAAUmoJ,GAC1Br6L,EAAQkyC,EACR7nC,EAAS1M,SAAQ,SAAUgrC,GACzB,OAAOA,EAAQ3oC,EAAOq6L,QAyI9BjnL,EAAA,QA/HA,SAA4B6b,EAAcqrK,GACxC,IAAIC,EAAuBC,EAEvBC,EAAc,2BAA4B,EAAIT,EAAMrlL,WAAa,KAEjE20J,EAAW,SAAUoxB,GAGvB,SAASpxB,IACP,IAAIqxB,EAAO9/L,EAEX+pB,EAAgBvqB,KAAMivK,GAEtB,IAAK,IAAIvkJ,EAAOtpB,UAAUC,OAAQ2N,EAAOtP,MAAMgrB,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC3E3b,EAAK2b,GAAQvpB,UAAUupB,GAGzB,OAAe21K,EAAS9/L,EAAQo/L,EAA2B5/L,KAAMqgM,EAAW3/L,KAAKiG,MAAM05L,EAAY,CAACrgM,MAAM8Z,OAAO9K,KAAiBxO,EAAM+/L,QAAUR,EAAmBv/L,EAAMub,MAAMpW,OAAgBi6L,EAA2Bp/L,EAAnC8/L,GAoC3L,OA/CAT,EAAU5wB,EAAUoxB,GAcpBpxB,EAAS/uK,UAAUiuK,gBAAkB,WACnC,IAAI1vJ,EAEJ,OAAOA,EAAO,IAAS2hL,GAAepgM,KAAKugM,QAAS9hL,GAGtDwwJ,EAAS/uK,UAAUoqF,0BAA4B,SAAmCh4B,GAChF,GAAItyD,KAAK+b,MAAMpW,QAAU2sD,EAAU3sD,MAAO,CACxC,IAAIi/D,EAAW5kE,KAAK+b,MAAMpW,MACtBkyC,EAAWya,EAAU3sD,MACrBq6L,OAAc,IAjER98K,EAmEG0hD,MAnEAhgE,EAmEUizC,GAjEd,IAAN30B,GAAW,EAAIA,GAAM,EAAIte,EAEzBse,GAAMA,GAAKte,GAAMA,GAgElBo7L,EAAc,GAEdA,EAA8C,mBAAzBC,EAAsCA,EAAqBr7H,EAAU/sB,GAAYioJ,EAOlF,IAFpBE,GAAe,IAGbhgM,KAAKugM,QAAQ9lL,IAAI63C,EAAU3sD,MAAOq6L,IA9E9C,IAAkB98K,EAAGte,GAoFjBqqK,EAAS/uK,UAAUu6B,OAAS,WAC1B,OAAOz6B,KAAK+b,MAAMmK,UAGb+oJ,EAhDM,CAiDbuwB,EAAOgB,WAETvxB,EAASZ,oBAAqB6xB,EAAwB,IAA0BE,GAAeX,EAAYnlL,QAAQuqF,OAAOriG,WAAY09L,GAEtI,IAAIO,EAAW,SAAUC,GAGvB,SAASD,IACP,IAAIE,EAAQ/Y,EAEZr9J,EAAgBvqB,KAAMygM,GAEtB,IAAK,IAAIG,EAAQx/L,UAAUC,OAAQ2N,EAAOtP,MAAMkhM,GAAQC,EAAQ,EAAGA,EAAQD,EAAOC,IAChF7xL,EAAK6xL,GAASz/L,UAAUy/L,GAG1B,OAAgBF,EAAU/Y,EAASgY,EAA2B5/L,KAAM0gM,EAAYhgM,KAAKiG,MAAM+5L,EAAa,CAAC1gM,MAAM8Z,OAAO9K,KAAkB44K,EAAOx1J,MAAQ,CACrJzsB,MAAOiiL,EAAOkZ,YACblZ,EAAOmR,SAAW,SAAUlhJ,EAAUmoJ,GAEF,KADI,EAAtBpY,EAAOmZ,cACNf,IAClBpY,EAAO/oJ,SAAS,CAAEl5B,MAAOiiL,EAAOkZ,cAExBlB,EAA2BhY,EAApC+Y,GAsCL,OAxDAd,EAAUY,EAAUC,GAqBpBD,EAASvgM,UAAUoqF,0BAA4B,SAAmCh4B,GAChF,IAAIyuI,EAAezuI,EAAUyuI,aAE7B/gM,KAAK+gM,aAAeA,QAAsDjB,EACxEiB,GAGJN,EAASvgM,UAAUmkC,kBAAoB,WACjCrkC,KAAKyuK,QAAQ2xB,IACfpgM,KAAKyuK,QAAQ2xB,GAAaxwL,GAAG5P,KAAK+4L,UAEpC,IAAIgI,EAAe/gM,KAAK+b,MAAMglL,aAE9B/gM,KAAK+gM,aAAeA,QAAsDjB,EACxEiB,GAGJN,EAASvgM,UAAUokC,qBAAuB,WACpCtkC,KAAKyuK,QAAQ2xB,IACfpgM,KAAKyuK,QAAQ2xB,GAAarwL,IAAI/P,KAAK+4L,WAIvC0H,EAASvgM,UAAU4gM,SAAW,WAC5B,OAAI9gM,KAAKyuK,QAAQ2xB,GACRpgM,KAAKyuK,QAAQ2xB,GAAa1+L,MAE1BkzB,GAIX6rK,EAASvgM,UAAUu6B,OAAS,WAC1B,OApHavU,EAoHIlmB,KAAK+b,MAAMmK,SAnHzBxmB,MAAMyc,QAAQ+J,GAAYA,EAAS,GAAKA,GAmHLlmB,KAAKoyB,MAAMzsB,OApHvD,IAAmBugB,GAuHRu6K,EAzDM,CA0DbjB,EAAOgB,WAKT,OAHAC,EAAS5xB,eAAgBsxB,EAAwB,IAA0BC,GAAeX,EAAYnlL,QAAQuqF,OAAQs7F,GAG/G,CACLlxB,SAAUA,EACVwxB,SAAUA,IAKd3nL,EAAOC,QAAUA,EAAiB,qCCjMlCA,EAAQsB,YAAa,EAErB,IAEI2mL,EAAUtB,EAFD,EAAQ,OAMjBuB,EAAmBvB,EAFD,EAAQ,OAI9B,SAASA,EAAuBxmL,GAAO,OAAOA,GAAOA,EAAImB,WAAanB,EAAM,CAAEoB,QAASpB,GAEvFH,EAAA,QAAkBioL,EAAQ1mL,QAAQ4mL,eAAiBD,EAAiB3mL,QACpExB,EAAOC,QAAUA,EAAiB,+BCdlC,IAAIxU,EAAQ,eACR48L,EAAgB,IAAIj1K,OAAO3nB,EAAO,MAClC68L,EAAe,IAAIl1K,OAAO,IAAM3nB,EAAQ,KAAM,MAElD,SAAS88L,EAAiB3iJ,EAAYvzC,GACrC,IAEC,OAAO4zK,mBAAmBrgI,EAAWz4B,KAAK,KACzC,MAAO/e,IAIT,GAA0B,IAAtBw3C,EAAWr9C,OACd,OAAOq9C,EAGRvzC,EAAQA,GAAS,EAGjB,IAAI8lB,EAAOytB,EAAWxyC,MAAM,EAAGf,GAC3B6lB,EAAQ0tB,EAAWxyC,MAAMf,GAE7B,OAAOzL,MAAMQ,UAAU4Z,OAAOpZ,KAAK,GAAI2gM,EAAiBpwK,GAAOowK,EAAiBrwK,IAGjF,SAASs/F,EAAOrlH,GACf,IACC,OAAO8zK,mBAAmB9zK,GACzB,MAAO/D,GAGR,IAFA,IAAI+pJ,EAAShmJ,EAAMmjB,MAAM+yK,GAEhBjgM,EAAI,EAAGA,EAAI+vJ,EAAO5vJ,OAAQH,IAGlC+vJ,GAFAhmJ,EAAQo2L,EAAiBpwC,EAAQ/vJ,GAAG+kB,KAAK,KAE1BmI,MAAM+yK,GAGtB,OAAOl2L,GAyCT6N,EAAOC,QAAU,SAAUuoL,GAC1B,GAA0B,iBAAfA,EACV,MAAM,IAAI77L,UAAU,6DAA+D67L,EAAa,KAGjG,IAIC,OAHAA,EAAaA,EAAWvtL,QAAQ,MAAO,KAGhCgrK,mBAAmBuiB,GACzB,MAAOp6L,GAER,OAjDF,SAAkC+D,GAQjC,IANA,IAAIs2L,EAAa,CAChB,SAAU,KACV,SAAU,MAGPnzK,EAAQgzK,EAAa7oK,KAAKttB,GACvBmjB,GAAO,CACb,IAECmzK,EAAWnzK,EAAM,IAAM2wJ,mBAAmB3wJ,EAAM,IAC/C,MAAOlnB,GACR,IAAIT,EAAS6pH,EAAOliG,EAAM,IAEtB3nB,IAAW2nB,EAAM,KACpBmzK,EAAWnzK,EAAM,IAAM3nB,GAIzB2nB,EAAQgzK,EAAa7oK,KAAKttB,GAI3Bs2L,EAAW,OAAS,IAIpB,IAFA,IAAI5uC,EAAUpzJ,OAAO6K,KAAKm3L,GAEjBrgM,EAAI,EAAGA,EAAIyxJ,EAAQtxJ,OAAQH,IAAK,CAExC,IAAImQ,EAAMshJ,EAAQzxJ,GAClB+J,EAAQA,EAAM8I,QAAQ,IAAImY,OAAO7a,EAAK,KAAMkwL,EAAWlwL,IAGxD,OAAOpG,EAeCu2L,CAAyBF,oBC3FlC,IAAIG,EAAa,EAAQ,MACrBC,EAAc,EAAQ,MACtBtf,EAAK,EAAQ,KACbuf,EAAU,EAAQ,MAClBltE,EAAQ,EAAQ,MAChB0N,EAAS,EAAQ,MAEjBtxG,EAAUzoB,KAAKlI,UAAU2wB,QA2B7B,SAAS+wK,EAAkBj8L,GACzB,OAAOA,QAGT,SAASq4K,EAAS96J,GAChB,SAAKA,GAAkB,iBAANA,GAAsC,iBAAbA,EAAE7hB,QAGtB,mBAAX6hB,EAAE+vH,MAA0C,mBAAZ/vH,EAAEhX,OAGzCgX,EAAE7hB,OAAS,GAAqB,iBAAT6hB,EAAE,IAkE/BpK,EAAOC,QAtGP,SAAS8oL,EAAUC,EAAQ72I,EAAUrpD,GACnC,IAAImgM,EAAOngM,GAAW,GAGtB,SAAImgM,EAAKC,OAAS5f,EAAG0f,EAAQ72I,GAAY62I,IAAW72I,MAK/C62I,IAAW72I,GAA+B,iBAAX62I,GAA2C,iBAAb72I,EACzD82I,EAAKC,OAAS5f,EAAG0f,EAAQ72I,GAAY62I,GAAU72I,EAgC1D,SAAkBnjC,EAAGloB,EAAGmiM,GAEtB,IAAI7gM,EAAGmQ,EACP,UAAWyW,UAAaloB,EAAK,OAAO,EACpC,GAAIgiM,EAAkB95K,IAAM85K,EAAkBhiM,GAAM,OAAO,EAG3D,GAAIkoB,EAAE5nB,YAAcN,EAAEM,UAAa,OAAO,EAE1C,GAAIwhM,EAAY55K,KAAO45K,EAAY9hM,GAAM,OAAO,EAEhD,IAAIqiM,EAAWN,EAAQ75K,GACnBo6K,EAAWP,EAAQ/hM,GACvB,GAAIqiM,IAAaC,EAAY,OAAO,EACpC,GAAID,GAAYC,EACd,OAAOp6K,EAAExO,SAAW1Z,EAAE0Z,QAAUm7G,EAAM3sG,KAAO2sG,EAAM70H,GAGrD,GAAIuiI,EAAOr6G,IAAMq6G,EAAOviI,GACtB,OAAOixB,EAAQnwB,KAAKonB,KAAO+I,EAAQnwB,KAAKd,GAG1C,IAAIuiM,EAAYnkB,EAASl2J,GACrBs6K,EAAYpkB,EAASp+K,GACzB,GAAIuiM,IAAcC,EAAa,OAAO,EACtC,GAAID,GAAaC,EAAW,CAC1B,GAAIt6K,EAAEzmB,SAAWzB,EAAEyB,OAAU,OAAO,EACpC,IAAKH,EAAI,EAAGA,EAAI4mB,EAAEzmB,OAAQH,IACxB,GAAI4mB,EAAE5mB,KAAOtB,EAAEsB,GAAM,OAAO,EAE9B,OAAO,EAGT,UAAW4mB,UAAaloB,EAAK,OAAO,EAEpC,IACE,IAAIyiM,EAAKZ,EAAW35K,GAChBw6K,EAAKb,EAAW7hM,GACpB,MAAOkG,GACP,OAAO,EAGT,GAAIu8L,EAAGhhM,SAAWihM,EAAGjhM,OAAU,OAAO,EAMtC,IAHAghM,EAAG1vK,OACH2vK,EAAG3vK,OAEEzxB,EAAImhM,EAAGhhM,OAAS,EAAGH,GAAK,EAAGA,IAC9B,GAAImhM,EAAGnhM,IAAMohM,EAAGphM,GAAM,OAAO,EAG/B,IAAKA,EAAImhM,EAAGhhM,OAAS,EAAGH,GAAK,EAAGA,IAE9B,IAAK2gM,EAAU/5K,EADfzW,EAAMgxL,EAAGnhM,IACctB,EAAEyR,GAAM0wL,GAAS,OAAO,EAGjD,OAAO,EA7EAQ,CAAST,EAAQ72I,EAAU82I,kCC7BpC,IAAIS,EACJ,IAAKjjM,OAAO6K,KAAM,CAEjB,IAAIynB,EAAMtyB,OAAOW,UAAUJ,eACvB2iM,EAAQljM,OAAOW,UAAUsD,SACzBk/L,EAAS,EAAQ,MACjBC,EAAepjM,OAAOW,UAAU6tB,qBAChC60K,GAAkBD,EAAajiM,KAAK,CAAE8C,SAAU,MAAQ,YACxDq/L,EAAkBF,EAAajiM,MAAK,cAAgB,aACpDoiM,EAAY,CACf,WACA,iBACA,UACA,iBACA,gBACA,uBACA,eAEGC,EAA6B,SAAUx6K,GAC1C,IAAIy6K,EAAOz6K,EAAEtoB,YACb,OAAO+iM,GAAQA,EAAK9iM,YAAcqoB,GAE/B06K,EAAe,CAClBC,mBAAmB,EACnBC,UAAU,EACVC,WAAW,EACXC,QAAQ,EACRC,eAAe,EACfC,SAAS,EACTC,cAAc,EACdC,aAAa,EACbC,wBAAwB,EACxBC,uBAAuB,EACvBC,cAAc,EACdC,aAAa,EACbC,cAAc,EACdC,cAAc,EACdC,SAAS,EACTC,aAAa,EACbC,YAAY,EACZC,UAAU,EACVC,UAAU,EACVC,OAAO,EACPC,kBAAkB,EAClBC,oBAAoB,EACpBC,SAAS,GAENC,EAA4B,WAE/B,GAAsB,oBAAXnxL,OAA0B,OAAO,EAC5C,IAAK,IAAIohE,KAAKphE,OACb,IACC,IAAK2vL,EAAa,IAAMvuH,IAAM7iD,EAAInxB,KAAK4S,OAAQohE,IAAoB,OAAdphE,OAAOohE,IAAoC,iBAAdphE,OAAOohE,GACxF,IACCquH,EAA2BzvL,OAAOohE,IACjC,MAAO5uE,GACR,OAAO,GAGR,MAAOA,GACR,OAAO,EAGT,OAAO,EAhBuB,GA8B/B08L,EAAW,SAAc39F,GACxB,IAAI04E,EAAsB,OAAX14E,GAAqC,iBAAXA,EACrCj0E,EAAoC,sBAAvB6xK,EAAM/hM,KAAKmkG,GACxB68F,EAAcgB,EAAO79F,GACrB4yD,EAAW8lB,GAAmC,oBAAvBklB,EAAM/hM,KAAKmkG,GAClC6/F,EAAU,GAEd,IAAKnnB,IAAa3sJ,IAAe8wK,EAChC,MAAM,IAAIj8L,UAAU,sCAGrB,IAAIk/L,EAAY9B,GAAmBjyK,EACnC,GAAI6mI,GAAY5yD,EAAOxjG,OAAS,IAAMwwB,EAAInxB,KAAKmkG,EAAQ,GACtD,IAAK,IAAI3jG,EAAI,EAAGA,EAAI2jG,EAAOxjG,SAAUH,EACpCwjM,EAAQ7+L,KAAKwF,OAAOnK,IAItB,GAAIwgM,GAAe78F,EAAOxjG,OAAS,EAClC,IAAK,IAAIwrE,EAAI,EAAGA,EAAIg4B,EAAOxjG,SAAUwrE,EACpC63H,EAAQ7+L,KAAKwF,OAAOwhE,SAGrB,IAAK,IAAInqE,KAAQmiG,EACV8/F,GAAsB,cAATjiM,IAAyBmvB,EAAInxB,KAAKmkG,EAAQniG,IAC5DgiM,EAAQ7+L,KAAKwF,OAAO3I,IAKvB,GAAIkgM,EAGH,IAFA,IAAIgC,EA3CqC,SAAUr8K,GAEpD,GAAsB,oBAAXjV,SAA2BmxL,EACrC,OAAO1B,EAA2Bx6K,GAEnC,IACC,OAAOw6K,EAA2Bx6K,GACjC,MAAOziB,GACR,OAAO,GAmCe++L,CAAqChgG,GAElDnwB,EAAI,EAAGA,EAAIouH,EAAUzhM,SAAUqzE,EACjCkwH,GAAoC,gBAAjB9B,EAAUpuH,KAAyB7iD,EAAInxB,KAAKmkG,EAAQi+F,EAAUpuH,KACtFgwH,EAAQ7+L,KAAKi9L,EAAUpuH,IAI1B,OAAOgwH,GAGT5rL,EAAOC,QAAUypL,+BCvHjB,IAAIt2L,EAAQxM,MAAMQ,UAAUgM,MACxBw2L,EAAS,EAAQ,MAEjBoC,EAAWvlM,OAAO6K,KAClBo4L,EAAWsC,EAAW,SAAcv8K,GAAK,OAAOu8K,EAASv8K,IAAQ,EAAQ,MAEzEw8K,EAAexlM,OAAO6K,KAE1Bo4L,EAAS75K,KAAO,WACf,GAAIppB,OAAO6K,KAAM,CAChB,IAAI46L,EAA0B,WAE7B,IAAIh2L,EAAOzP,OAAO6K,KAAKhJ,WACvB,OAAO4N,GAAQA,EAAK3N,SAAWD,UAAUC,OAHb,CAI3B,EAAG,GACA2jM,IACJzlM,OAAO6K,KAAO,SAAcy6F,GAC3B,OAAI69F,EAAO79F,GACHkgG,EAAa74L,EAAMxL,KAAKmkG,IAEzBkgG,EAAalgG,UAItBtlG,OAAO6K,KAAOo4L,EAEf,OAAOjjM,OAAO6K,MAAQo4L,GAGvB1pL,EAAOC,QAAUypL,yBC7BjB,IAAIC,EAAQljM,OAAOW,UAAUsD,SAE7BsV,EAAOC,QAAU,SAAqBpT,GACrC,IAAItC,EAAMo/L,EAAM/hM,KAAKiF,GACjB+8L,EAAiB,uBAARr/L,EASb,OARKq/L,IACJA,EAAiB,mBAARr/L,GACE,OAAVsC,GACiB,iBAAVA,GACiB,iBAAjBA,EAAMtE,QACbsE,EAAMtE,QAAU,GACa,sBAA7BohM,EAAM/hM,KAAKiF,EAAMs/L,SAEZvC,gCCbR,IAAIhD,EAAyB,EAAQ,MAErC3mL,EAAQsB,YAAa,EACrBtB,EAAA,QAIA,SAAkB8F,EAASoQ,GACrBpQ,EAAQgR,UAAWhR,EAAQgR,UAAUmyC,IAAI/yC,IAAqB,EAAIi2K,EAAU5qL,SAASuE,EAASoQ,KAA6C,iBAAtBpQ,EAAQoQ,UAAwBpQ,EAAQoQ,UAAYpQ,EAAQoQ,UAAY,IAAMA,EAAepQ,EAAQsM,aAAa,SAAUtM,EAAQoQ,WAAapQ,EAAQoQ,UAAUk2K,SAAW,IAAM,IAAMl2K,KAHrT,IAAIi2K,EAAYxF,EAAuB,EAAQ,MAM/C5mL,EAAOC,QAAUA,EAAiB,kCCXlCA,EAAQsB,YAAa,EACrBtB,EAAA,QAEA,SAAkB8F,EAASoQ,GACzB,OAAIpQ,EAAQgR,YAAoBZ,GAAapQ,EAAQgR,UAAU0H,SAAStI,IAA0H,KAAlG,KAAOpQ,EAAQoQ,UAAUk2K,SAAWtmL,EAAQoQ,WAAa,KAAKvnB,QAAQ,IAAMunB,EAAY,MAG1LnW,EAAOC,QAAUA,EAAiB,8BCPlC,SAASqsL,EAAiBC,EAAWC,GACnC,OAAOD,EAAUtxL,QAAQ,IAAImY,OAAO,UAAYo5K,EAAgB,YAAa,KAAM,MAAMvxL,QAAQ,OAAQ,KAAKA,QAAQ,aAAc,IAGtI+E,EAAOC,QAAU,SAAqB8F,EAASoQ,GACzCpQ,EAAQgR,UAAWhR,EAAQgR,UAAUkyC,OAAO9yC,GAAiD,iBAAtBpQ,EAAQoQ,UAAwBpQ,EAAQoQ,UAAYm2K,EAAiBvmL,EAAQoQ,UAAWA,GAAgBpQ,EAAQsM,aAAa,QAASi6K,EAAiBvmL,EAAQoQ,WAAapQ,EAAQoQ,UAAUk2K,SAAW,GAAIl2K,kCCA1R,IAAIve,EAEA60L,EAAa9/L,UAEb+/L,EAAQjmM,OAAO0a,yBACnB,GAAIurL,EACH,IACCA,EAAM,GAAI,IACT,MAAO1/L,GACR0/L,EAAQ,KAIV,IAAIC,EAAiB,WAAc,MAAM,IAAIF,GACzCG,EAAiBF,EACjB,WACF,IAGC,OAAOC,EACN,MAAOE,GACR,IAEC,OAAOH,EAAMpkM,UAAW,UAAUM,IACjC,MAAOkkM,GACR,OAAOH,IAVR,GAcAA,EAECI,EAAa,EAAQ,KAAR,GAEbC,EAAWvmM,OAAOu5I,gBAAkB,SAAU51H,GAAK,OAAOA,EAAEzjB,WAQ5DsmM,EAA2Cr1L,EAE3Cs1L,EAAmC,oBAAf5iM,WAA6BsN,EAAYo1L,EAAS1iM,YAEtE6iM,EAAa,CAChB,UAAWvmM,MACX,gBAAwC,oBAAhBiE,YAA8B+M,EAAY/M,YAClE,yBAAiD,oBAAhBA,YAA8B+M,EAAY/M,YAAYzD,UACvF,2BAA4B2lM,EAAaC,EAAS,GAAGzgM,OAAOC,aAAeoL,EAC3E,mBAAoBhR,MAAMQ,UAC1B,uBAAwBR,MAAMQ,UAAUyyJ,QACxC,uBAAwBjzJ,MAAMQ,UAAUoD,QACxC,oBAAqB5D,MAAMQ,UAAUkK,KACrC,sBAAuB1K,MAAMQ,UAAU0C,OACvC,mCAAoC8N,EACpC,kBAlBmDA,UAmBnD,2BAAsEA,EACtE,mBAA4DA,EAC5D,2BAnBsDA,UAoBtD,4BAA6EA,EAC7E,2BAA4Bq1L,GAAoBF,GAAcxgM,OAAO6gM,cAAgBH,EAAiB1gM,OAAO6gM,iBAAmBx1L,EAChI,YAAgC,oBAAZy1L,QAA0Bz1L,EAAYy1L,QAC1D,YAAarlK,QACb,qBAAsBA,QAAQ5gC,UAC9B,aAAkC,oBAAbkmM,SAA2B11L,EAAY01L,SAC5D,sBAA2C,oBAAbA,SAA2B11L,EAAY01L,SAASlmM,UAC9E,SAAUkI,KACV,kBAAmBA,KAAKlI,UACxB,cAAemmM,UACf,uBAAwBtnB,mBACxB,cAAeunB,UACf,uBAAwBpzL,mBACxB,UAAWvS,MACX,mBAAoBA,MAAMT,UAC1B,SAAUqmM,KACV,cAAeC,UACf,uBAAwBA,UAAUtmM,UAClC,iBAA0C,oBAAjBumM,aAA+B/1L,EAAY+1L,aACpE,0BAAmD,oBAAjBA,aAA+B/1L,EAAY+1L,aAAavmM,UAC1F,iBAA0C,oBAAjBwmM,aAA+Bh2L,EAAYg2L,aACpE,0BAAmD,oBAAjBA,aAA+Bh2L,EAAYg2L,aAAaxmM,UAC1F,aAAcktI,SACd,sBAAuBA,SAASltI,UAChC,cAAmDwQ,EACnD,sBAjDyDA,UAkDzD,uBAA0EA,EAC1E,cAAoC,oBAAdi2L,UAA4Bj2L,EAAYi2L,UAC9D,uBAA6C,oBAAdA,UAA4Bj2L,EAAYi2L,UAAUzmM,UACjF,eAAsC,oBAAf0mM,WAA6Bl2L,EAAYk2L,WAChE,wBAA+C,oBAAfA,WAA6Bl2L,EAAYi2L,UAAUzmM,UACnF,eAAsC,oBAAf2mM,WAA6Bn2L,EAAYm2L,WAChE,wBAA+C,oBAAfA,WAA6Bn2L,EAAYm2L,WAAW3mM,UACpF,aAAc2lK,SACd,UAAW34I,MACX,sBAAuB24K,EAAaC,EAASA,EAAS,GAAGzgM,OAAOC,cAAgBoL,EAChF,SAA0B,iBAAThF,KAAoBA,KAAOgF,EAC5C,cAA+B,iBAAThF,KAAoBA,KAAKV,MAAQ0F,EACvD,QAAwB,oBAARo2L,IAAsBp2L,EAAYo2L,IAClD,yBAAyC,oBAARA,KAAwBjB,EAAyBC,GAAS,IAAIgB,KAAMzhM,OAAOC,aAAtCoL,EACtE,iBAAiC,oBAARo2L,IAAsBp2L,EAAYo2L,IAAI5mM,UAC/D,SAAUqjB,KACV,WAAY67E,OACZ,oBAAqBA,OAAOl/F,UAC5B,WAAYX,OACZ,oBAAqBA,OAAOW,UAC5B,sBAAuBX,OAAOW,UAAUsD,SACxC,qBAAsBjE,OAAOW,UAAU6mM,QACvC,eAAgB95K,WAChB,aAAcsY,SACd,YAAgC,oBAAZn/B,QAA0BsK,EAAYtK,QAC1D,qBAAyC,oBAAZA,QAA0BsK,EAAYtK,QAAQlG,UAC3E,sBAA0C,oBAAZkG,QAA0BsK,EAAYtK,QAAQlG,UAAUwG,KACtF,gBAAoC,oBAAZN,QAA0BsK,EAAYtK,QAAQuc,IACtE,mBAAuC,oBAAZvc,QAA0BsK,EAAYtK,QAAQE,OACzE,oBAAwC,oBAAZF,QAA0BsK,EAAYtK,QAAQC,QAC1E,UAA4B,oBAAV2gM,MAAwBt2L,EAAYs2L,MACtD,eAAgBC,WAChB,wBAAyBA,WAAW/mM,UACpC,mBAAoB+Y,eACpB,4BAA6BA,eAAe/Y,UAC5C,YAAgC,oBAAZgnM,QAA0Bx2L,EAAYw2L,QAC1D,WAAYh7K,OACZ,oBAAqBA,OAAOhsB,UAC5B,QAAwB,oBAARinM,IAAsBz2L,EAAYy2L,IAClD,yBAAyC,oBAARA,KAAwBtB,EAAyBC,GAAS,IAAIqB,KAAM9hM,OAAOC,aAAtCoL,EACtE,iBAAiC,oBAARy2L,IAAsBz2L,EAAYy2L,IAAIjnM,UAC/D,sBAAoD,oBAAtBknM,kBAAoC12L,EAAY02L,kBAC9E,+BAA6D,oBAAtBA,kBAAoC12L,EAAY02L,kBAAkBlnM,UACzG,WAAYmL,OACZ,4BAA6Bw6L,EAAaC,EAAS,GAAGzgM,OAAOC,aAAeoL,EAC5E,oBAAqBrF,OAAOnL,UAC5B,WAAY2lM,EAAaxgM,OAASqL,EAClC,oBAAqBm1L,EAAaxgM,OAAOnF,UAAYwQ,EACrD,gBAAiB22L,YACjB,yBAA0BA,YAAYnnM,UACtC,mBAAoBwlM,EACpB,eAAgBM,EAChB,wBAAyBA,EAAaA,EAAW9lM,UAAYwQ,EAC7D,cAAe60L,EACf,uBAAwBA,EAAWrlM,UACnC,eAAsC,oBAAfkD,WAA6BsN,EAAYtN,WAChE,wBAA+C,oBAAfA,WAA6BsN,EAAYtN,WAAWlD,UACpF,sBAAoD,oBAAtBonM,kBAAoC52L,EAAY42L,kBAC9E,+BAA6D,oBAAtBA,kBAAoC52L,EAAY42L,kBAAkBpnM,UACzG,gBAAwC,oBAAhBqnM,YAA8B72L,EAAY62L,YAClE,yBAAiD,oBAAhBA,YAA8B72L,EAAY62L,YAAYrnM,UACvF,gBAAwC,oBAAhBsnM,YAA8B92L,EAAY82L,YAClE,yBAAiD,oBAAhBA,YAA8B92L,EAAY82L,YAAYtnM,UACvF,aAAcunM,SACd,sBAAuBA,SAASvnM,UAChC,YAAgC,oBAAZwnM,QAA0Bh3L,EAAYg3L,QAC1D,qBAAyC,oBAAZA,QAA0Bh3L,EAAYg3L,QAAQxnM,UAC3E,YAAgC,oBAAZynM,QAA0Bj3L,EAAYi3L,QAC1D,qBAAyC,oBAAZA,QAA0Bj3L,EAAYi3L,QAAQznM,WAIxE0nM,EADO,EAAQ,MACClnM,KAAK0sI,SAAS1sI,KAAM2K,OAAOnL,UAAU6T,SAGrD8zL,EAAa,qGACbC,EAAe,WACfC,EAAe,SAAsB55K,GACxC,IAAI1nB,EAAS,GAIb,OAHAmhM,EAASz5K,EAAQ05K,GAAY,SAAUz5K,EAAO0qF,EAAQkvF,EAAOC,GAC5DxhM,EAAOA,EAAOpF,QAAU2mM,EAAQJ,EAASK,EAAWH,EAAc,MAAShvF,GAAU1qF,KAE/E3nB,GAIJyhM,EAAmB,SAA0BxlM,EAAMylM,GACtD,KAAMzlM,KAAQujM,GACb,MAAM,IAAIoB,YAAY,aAAe3kM,EAAO,oBAI7C,QAAgC,IAArBujM,EAAWvjM,KAA0BylM,EAC/C,MAAM,IAAI5C,EAAW,aAAe7iM,EAAO,wDAG5C,OAAOujM,EAAWvjM,IAGnBoW,EAAOC,QAAU,SAAsBrW,EAAMylM,GAC5C,GAAoB,iBAATzlM,GAAqC,IAAhBA,EAAKrB,OACpC,MAAM,IAAIoE,UAAU,6CAErB,GAAIrE,UAAUC,OAAS,GAA6B,kBAAjB8mM,EAClC,MAAM,IAAI1iM,UAAU,6CAMrB,IAHA,IAAIqnB,EAAQi7K,EAAarlM,GAErBiD,EAAQuiM,EAAiB,KAAOp7K,EAAMzrB,OAAS,EAAIyrB,EAAM,GAAK,IAAM,IAAKq7K,GACpEjnM,EAAI,EAAGA,EAAI4rB,EAAMzrB,OAAQH,GAAK,EACtC,GAAa,MAATyE,EACH,GAAI6/L,GAAUtkM,EAAI,GAAM4rB,EAAMzrB,OAAQ,CACrC,IAAImZ,EAAOgrL,EAAM7/L,EAAOmnB,EAAM5rB,IAC9ByE,EAAQ6U,EAAQA,EAAK9Y,KAAO8Y,EAAK7U,MAASA,EAAMmnB,EAAM5rB,SAEtDyE,EAAQA,EAAMmnB,EAAM5rB,IAIvB,OAAOyE,gCCnNR,IAAI+qB,EAAO,EAAQ,MAIf03K,EAFe,EAAQ,KAEXC,CAAa,cACzBC,EAASF,EAAUzhM,MACnB4hM,EAAQH,EAAU1nM,KAEtBoY,EAAOC,QAAU,WAChB,OAAO2X,EAAK/pB,MAAM4hM,EAAOnnM,YAG1B0X,EAAOC,QAAQpS,MAAQ,WACtB,OAAO+pB,EAAK/pB,MAAM2hM,EAAQlnM,mCCQ3B,IAOIonM,EAPAC,EAAuB,iBAAZvB,QAAuBA,QAAU,KAC5CwB,EAAeD,GAAwB,mBAAZA,EAAE9hM,MAC7B8hM,EAAE9hM,MACF,SAAsBwK,EAAQw3L,EAAU35L,GACxC,OAAOo+H,SAASltI,UAAUyG,MAAMjG,KAAKyQ,EAAQw3L,EAAU35L,IAKzDw5L,EADEC,GAA0B,mBAAdA,EAAE7uL,QACC6uL,EAAE7uL,QACVra,OAAOsa,sBACC,SAAwB1I,GACvC,OAAO5R,OAAOkzD,oBAAoBthD,GAC/B2I,OAAOva,OAAOsa,sBAAsB1I,KAGxB,SAAwBA,GACvC,OAAO5R,OAAOkzD,oBAAoBthD,IAQtC,IAAIy3L,EAAcxpG,OAAOlyE,OAAS,SAAqBvnB,GACrD,OAAOA,GAAUA,GAGnB,SAASkjM,IACPA,EAAaC,KAAKpoM,KAAKV,MAEzB8Y,EAAOC,QAAU8vL,EACjB/vL,EAAOC,QAAQgwL,KAwYf,SAAcxI,EAAS79L,GACrB,OAAO,IAAI0D,SAAQ,SAAUC,EAASC,GACpC,SAAS0iM,EAAc9hM,GACrBq5L,EAAQ0I,eAAevmM,EAAM4f,GAC7Bhc,EAAOY,GAGT,SAASob,IAC+B,mBAA3Bi+K,EAAQ0I,gBACjB1I,EAAQ0I,eAAe,QAASD,GAElC3iM,EAAQ,GAAG6F,MAAMxL,KAAKU,YAGxB8nM,EAA+B3I,EAAS79L,EAAM4f,EAAU,CAAEymL,MAAM,IACnD,UAATrmM,GAMR,SAAuC69L,EAASjyJ,EAASmmF,GAC7B,mBAAf8rE,EAAQ3wL,IACjBs5L,EAA+B3I,EAAS,QAASjyJ,EAPO,CAAEy6J,MAAM,IAA9DI,CAA8B5I,EAASyI,OArZ7CH,EAAaA,aAAeA,EAE5BA,EAAa3oM,UAAU4zF,aAAUpjF,EACjCm4L,EAAa3oM,UAAUkpM,aAAe,EACtCP,EAAa3oM,UAAUmpM,mBAAgB34L,EAIvC,IAAI44L,EAAsB,GAE1B,SAASC,EAAclpL,GACrB,GAAwB,mBAAbA,EACT,MAAM,IAAI5a,UAAU,0EAA4E4a,GAsCpG,SAASmpL,EAAiBC,GACxB,YAA2B/4L,IAAvB+4L,EAAKJ,cACAR,EAAaS,oBACfG,EAAKJ,cAmDd,SAASK,EAAav4L,EAAQ7E,EAAM+T,EAAUspL,GAC5C,IAAIv4L,EACAk7B,EACA4R,EA1HsB0rJ,EAgJ1B,GApBAL,EAAclpL,QAGC3P,KADf47B,EAASn7B,EAAO2iF,UAEdxnD,EAASn7B,EAAO2iF,QAAUv0F,OAAOY,OAAO,MACxCgR,EAAOi4L,aAAe,SAIK14L,IAAvB47B,EAAOu9J,cACT14L,EAAO4P,KAAK,cAAezU,EACf+T,EAASA,SAAWA,EAASA,SAAWA,GAIpDisB,EAASn7B,EAAO2iF,SAElB51C,EAAW5R,EAAOhgC,SAGHoE,IAAbwtC,EAEFA,EAAW5R,EAAOhgC,GAAQ+T,IACxBlP,EAAOi4L,kBAeT,GAbwB,mBAAblrJ,EAETA,EAAW5R,EAAOhgC,GAChBq9L,EAAU,CAACtpL,EAAU69B,GAAY,CAACA,EAAU79B,GAErCspL,EACTzrJ,EAASd,QAAQ/8B,GAEjB69B,EAASr4C,KAAKwa,IAIhBjP,EAAIo4L,EAAiBr4L,IACb,GAAK+sC,EAAS78C,OAAS+P,IAAM8sC,EAAS4rJ,OAAQ,CACpD5rJ,EAAS4rJ,QAAS,EAGlB,IAAIjqL,EAAI,IAAIlf,MAAM,+CACEu9C,EAAS78C,OAAS,IAAMgK,OAAOiB,GADjC,qEAIlBuT,EAAEnd,KAAO,8BACTmd,EAAE0gL,QAAUpvL,EACZ0O,EAAEvT,KAAOA,EACTuT,EAAEg2C,MAAQ3X,EAAS78C,OA7KGuoM,EA8KH/pL,EA7KnB1X,SAAWA,QAAQI,MAAMJ,QAAQI,KAAKqhM,GAiL1C,OAAOz4L,EAcT,SAAS44L,IACP,IAAK/pM,KAAKgqM,MAGR,OAFAhqM,KAAKmR,OAAO83L,eAAejpM,KAAKsM,KAAMtM,KAAKiqM,QAC3CjqM,KAAKgqM,OAAQ,EACY,IAArB5oM,UAAUC,OACLrB,KAAKqgB,SAAS3f,KAAKV,KAAKmR,QAC1BnR,KAAKqgB,SAAS1Z,MAAM3G,KAAKmR,OAAQ/P,WAI5C,SAAS8oM,EAAU/4L,EAAQ7E,EAAM+T,GAC/B,IAAI+R,EAAQ,CAAE43K,OAAO,EAAOC,YAAQv5L,EAAWS,OAAQA,EAAQ7E,KAAMA,EAAM+T,SAAUA,GACjF+lF,EAAU2jG,EAAYr5K,KAAK0B,GAG/B,OAFAg0E,EAAQ/lF,SAAWA,EACnB+R,EAAM63K,OAAS7jG,EACRA,EA0HT,SAAS+jG,EAAWh5L,EAAQ7E,EAAM89L,GAChC,IAAI99J,EAASn7B,EAAO2iF,QAEpB,QAAepjF,IAAX47B,EACF,MAAO,GAET,IAAI+9J,EAAa/9J,EAAOhgC,GACxB,YAAmBoE,IAAf25L,EACK,GAEiB,mBAAfA,EACFD,EAAS,CAACC,EAAWhqL,UAAYgqL,GAAc,CAACA,GAElDD,EAsDT,SAAyBluL,GAEvB,IADA,IAAIokF,EAAM,IAAI5gG,MAAMwc,EAAI7a,QACfH,EAAI,EAAGA,EAAIo/F,EAAIj/F,SAAUH,EAChCo/F,EAAIp/F,GAAKgb,EAAIhb,GAAGmf,UAAYnE,EAAIhb,GAElC,OAAOo/F,EA1DLgqG,CAAgBD,GAAcE,EAAWF,EAAYA,EAAWhpM,QAoBpE,SAASmpM,EAAcl+L,GACrB,IAAIggC,EAAStsC,KAAK8zF,QAElB,QAAepjF,IAAX47B,EAAsB,CACxB,IAAI+9J,EAAa/9J,EAAOhgC,GAExB,GAA0B,mBAAf+9L,EACT,OAAO,EACF,QAAmB35L,IAAf25L,EACT,OAAOA,EAAWhpM,OAItB,OAAO,EAOT,SAASkpM,EAAWruL,EAAK/a,GAEvB,IADA,IAAI8xI,EAAO,IAAIvzI,MAAMyB,GACZD,EAAI,EAAGA,EAAIC,IAAKD,EACvB+xI,EAAK/xI,GAAKgb,EAAIhb,GAChB,OAAO+xI,EA4CT,SAASi2D,EAA+B3I,EAAS79L,EAAM2d,EAAUo0G,GAC/D,GAA0B,mBAAf8rE,EAAQ3wL,GACb6kH,EAAMs0E,KACRxI,EAAQwI,KAAKrmM,EAAM2d,GAEnBkgL,EAAQ3wL,GAAGlN,EAAM2d,OAEd,IAAwC,mBAA7BkgL,EAAQ1iL,iBAYxB,MAAM,IAAIpY,UAAU,6EAA+E86L,GATnGA,EAAQ1iL,iBAAiBnb,GAAM,SAAS+nM,EAAappL,GAG/CozG,EAAMs0E,MACRxI,EAAQjgL,oBAAoB5d,EAAM+nM,GAEpCpqL,EAASgB,OAhaf9hB,OAAOuO,eAAe+6L,EAAc,sBAAuB,CACzD96L,YAAY,EACZrM,IAAK,WACH,OAAO4nM,GAET7uL,IAAK,SAAS4G,GACZ,GAAmB,iBAARA,GAAoBA,EAAM,GAAKunL,EAAYvnL,GACpD,MAAM,IAAI4lL,WAAW,kGAAoG5lL,EAAM,KAEjIioL,EAAsBjoL,KAI1BwnL,EAAaC,KAAO,gBAEGp4L,IAAjB1Q,KAAK8zF,SACL9zF,KAAK8zF,UAAYv0F,OAAOu5I,eAAe94I,MAAM8zF,UAC/C9zF,KAAK8zF,QAAUv0F,OAAOY,OAAO,MAC7BH,KAAKopM,aAAe,GAGtBppM,KAAKqpM,cAAgBrpM,KAAKqpM,oBAAiB34L,GAK7Cm4L,EAAa3oM,UAAUwqM,gBAAkB,SAAyBvpM,GAChE,GAAiB,iBAANA,GAAkBA,EAAI,GAAKynM,EAAYznM,GAChD,MAAM,IAAI8lM,WAAW,gFAAkF9lM,EAAI,KAG7G,OADAnB,KAAKqpM,cAAgBloM,EACdnB,MAST6oM,EAAa3oM,UAAUyqM,gBAAkB,WACvC,OAAOnB,EAAiBxpM,OAG1B6oM,EAAa3oM,UAAU6gB,KAAO,SAAczU,GAE1C,IADA,IAAI0C,EAAO,GACF9N,EAAI,EAAGA,EAAIE,UAAUC,OAAQH,IAAK8N,EAAKnJ,KAAKzE,UAAUF,IAC/D,IAAI0pM,EAAoB,UAATt+L,EAEXggC,EAAStsC,KAAK8zF,QAClB,QAAepjF,IAAX47B,EACFs+J,EAAWA,QAA4Bl6L,IAAjB47B,EAAOrlC,WAC1B,IAAK2jM,EACR,OAAO,EAGT,GAAIA,EAAS,CACX,IAAIC,EAGJ,GAFI77L,EAAK3N,OAAS,IAChBwpM,EAAK77L,EAAK,IACR67L,aAAclqM,MAGhB,MAAMkqM,EAGR,IAAI3jM,EAAM,IAAIvG,MAAM,oBAAsBkqM,EAAK,KAAOA,EAAG5iM,QAAU,IAAM,KAEzE,MADAf,EAAIunK,QAAUo8B,EACR3jM,EAGR,IAAIonC,EAAUhC,EAAOhgC,GAErB,QAAgBoE,IAAZ49B,EACF,OAAO,EAET,GAAuB,mBAAZA,EACTo6J,EAAap6J,EAAStuC,KAAMgP,OAE5B,KAAIiiH,EAAM3iF,EAAQjtC,OACdypM,EAAYP,EAAWj8J,EAAS2iF,GACpC,IAAS/vH,EAAI,EAAGA,EAAI+vH,IAAO/vH,EACzBwnM,EAAaoC,EAAU5pM,GAAIlB,KAAMgP,GAGrC,OAAO,GAiET65L,EAAa3oM,UAAU6qM,YAAc,SAAqBz+L,EAAM+T,GAC9D,OAAOqpL,EAAa1pM,KAAMsM,EAAM+T,GAAU,IAG5CwoL,EAAa3oM,UAAU0P,GAAKi5L,EAAa3oM,UAAU6qM,YAEnDlC,EAAa3oM,UAAU8qM,gBACnB,SAAyB1+L,EAAM+T,GAC7B,OAAOqpL,EAAa1pM,KAAMsM,EAAM+T,GAAU,IAqBhDwoL,EAAa3oM,UAAU6oM,KAAO,SAAcz8L,EAAM+T,GAGhD,OAFAkpL,EAAclpL,GACdrgB,KAAK4P,GAAGtD,EAAM49L,EAAUlqM,KAAMsM,EAAM+T,IAC7BrgB,MAGT6oM,EAAa3oM,UAAU+qM,oBACnB,SAA6B3+L,EAAM+T,GAGjC,OAFAkpL,EAAclpL,GACdrgB,KAAKgrM,gBAAgB1+L,EAAM49L,EAAUlqM,KAAMsM,EAAM+T,IAC1CrgB,MAIb6oM,EAAa3oM,UAAU+oM,eACnB,SAAwB38L,EAAM+T,GAC5B,IAAI+pB,EAAMkC,EAAQzO,EAAU38B,EAAGgqM,EAK/B,GAHA3B,EAAclpL,QAGC3P,KADf47B,EAAStsC,KAAK8zF,SAEZ,OAAO9zF,KAGT,QAAa0Q,KADb05B,EAAOkC,EAAOhgC,IAEZ,OAAOtM,KAET,GAAIoqC,IAAS/pB,GAAY+pB,EAAK/pB,WAAaA,EACb,KAAtBrgB,KAAKopM,aACTppM,KAAK8zF,QAAUv0F,OAAOY,OAAO,cAEtBmsC,EAAOhgC,GACVggC,EAAO28J,gBACTjpM,KAAK+gB,KAAK,iBAAkBzU,EAAM89B,EAAK/pB,UAAYA,SAElD,GAAoB,mBAAT+pB,EAAqB,CAGrC,IAFAvM,GAAY,EAEP38B,EAAIkpC,EAAK/oC,OAAS,EAAGH,GAAK,EAAGA,IAChC,GAAIkpC,EAAKlpC,KAAOmf,GAAY+pB,EAAKlpC,GAAGmf,WAAaA,EAAU,CACzD6qL,EAAmB9gK,EAAKlpC,GAAGmf,SAC3Bwd,EAAW38B,EACX,MAIJ,GAAI28B,EAAW,EACb,OAAO79B,KAEQ,IAAb69B,EACFuM,EAAKhL,QAiIf,SAAmBgL,EAAM3iC,GACvB,KAAOA,EAAQ,EAAI2iC,EAAK/oC,OAAQoG,IAC9B2iC,EAAK3iC,GAAS2iC,EAAK3iC,EAAQ,GAC7B2iC,EAAKxkC,MAlIGulM,CAAU/gK,EAAMvM,GAGE,IAAhBuM,EAAK/oC,SACPirC,EAAOhgC,GAAQ89B,EAAK,SAEQ15B,IAA1B47B,EAAO28J,gBACTjpM,KAAK+gB,KAAK,iBAAkBzU,EAAM4+L,GAAoB7qL,GAG1D,OAAOrgB,MAGb6oM,EAAa3oM,UAAU6P,IAAM84L,EAAa3oM,UAAU+oM,eAEpDJ,EAAa3oM,UAAUkrM,mBACnB,SAA4B9+L,GAC1B,IAAIw+L,EAAWx+J,EAAQprC,EAGvB,QAAewP,KADf47B,EAAStsC,KAAK8zF,SAEZ,OAAO9zF,KAGT,QAA8B0Q,IAA1B47B,EAAO28J,eAUT,OATyB,IAArB7nM,UAAUC,QACZrB,KAAK8zF,QAAUv0F,OAAOY,OAAO,MAC7BH,KAAKopM,aAAe,QACM14L,IAAjB47B,EAAOhgC,KACY,KAAtBtM,KAAKopM,aACTppM,KAAK8zF,QAAUv0F,OAAOY,OAAO,aAEtBmsC,EAAOhgC,IAEXtM,KAIT,GAAyB,IAArBoB,UAAUC,OAAc,CAC1B,IACIgQ,EADAjH,EAAO7K,OAAO6K,KAAKkiC,GAEvB,IAAKprC,EAAI,EAAGA,EAAIkJ,EAAK/I,SAAUH,EAEjB,oBADZmQ,EAAMjH,EAAKlJ,KAEXlB,KAAKorM,mBAAmB/5L,GAK1B,OAHArR,KAAKorM,mBAAmB,kBACxBprM,KAAK8zF,QAAUv0F,OAAOY,OAAO,MAC7BH,KAAKopM,aAAe,EACbppM,KAKT,GAAyB,mBAFzB8qM,EAAYx+J,EAAOhgC,IAGjBtM,KAAKipM,eAAe38L,EAAMw+L,QACrB,QAAkBp6L,IAAdo6L,EAET,IAAK5pM,EAAI4pM,EAAUzpM,OAAS,EAAGH,GAAK,EAAGA,IACrClB,KAAKipM,eAAe38L,EAAMw+L,EAAU5pM,IAIxC,OAAOlB,MAoBb6oM,EAAa3oM,UAAU4qM,UAAY,SAAmBx+L,GACpD,OAAO69L,EAAWnqM,KAAMsM,GAAM,IAGhCu8L,EAAa3oM,UAAUmrM,aAAe,SAAsB/+L,GAC1D,OAAO69L,EAAWnqM,KAAMsM,GAAM,IAGhCu8L,EAAa2B,cAAgB,SAASjK,EAASj0L,GAC7C,MAAqC,mBAA1Bi0L,EAAQiK,cACVjK,EAAQiK,cAAcl+L,GAEtBk+L,EAAc9pM,KAAK6/L,EAASj0L,IAIvCu8L,EAAa3oM,UAAUsqM,cAAgBA,EAiBvC3B,EAAa3oM,UAAUg0F,WAAa,WAClC,OAAOl0F,KAAKopM,aAAe,EAAIZ,EAAexoM,KAAK8zF,SAAW,2BCpahE,IAAIw3G,EAAgB,kDAChBp/L,EAAQxM,MAAMQ,UAAUgM,MACxBu2L,EAAQljM,OAAOW,UAAUsD,SACzB+nM,EAAW,oBAEfzyL,EAAOC,QAAU,SAAc0wL,GAC3B,IAAIt4L,EAASnR,KACb,GAAsB,mBAAXmR,GAAyBsxL,EAAM/hM,KAAKyQ,KAAYo6L,EACvD,MAAM,IAAI9lM,UAAU6lM,EAAgBn6L,GAyBxC,IAvBA,IAEIq6L,EAFAx8L,EAAO9C,EAAMxL,KAAKU,UAAW,GAG7BqqM,EAAS,WACT,GAAIzrM,gBAAgBwrM,EAAO,CACvB,IAAI/kM,EAAS0K,EAAOxK,MAChB3G,KACAgP,EAAK8K,OAAO5N,EAAMxL,KAAKU,aAE3B,OAAI7B,OAAOkH,KAAYA,EACZA,EAEJzG,KAEP,OAAOmR,EAAOxK,MACV8iM,EACAz6L,EAAK8K,OAAO5N,EAAMxL,KAAKU,cAK/BsqM,EAAcnoL,KAAKmnB,IAAI,EAAGv5B,EAAO9P,OAAS2N,EAAK3N,QAC/CsqM,EAAY,GACPzqM,EAAI,EAAGA,EAAIwqM,EAAaxqM,IAC7ByqM,EAAU9lM,KAAK,IAAM3E,GAKzB,GAFAsqM,EAAQp+D,SAAS,SAAU,oBAAsBu+D,EAAU1lL,KAAK,KAAO,4CAA/DmnH,CAA4Gq+D,GAEhHt6L,EAAOjR,UAAW,CAClB,IAAI0rM,EAAQ,aACZA,EAAM1rM,UAAYiR,EAAOjR,UACzBsrM,EAAMtrM,UAAY,IAAI0rM,EACtBA,EAAM1rM,UAAY,KAGtB,OAAOsrM,gCChDX,IAAI5kF,EAAiB,EAAQ,MAE7B9tG,EAAOC,QAAUq0H,SAASltI,UAAUwwB,MAAQk2F,+BCD5C,IAAIv1G,EAAM,uBAEVyH,EAAOC,QAAU,WACf,OAAO,EAAAlU,EAAOwM,IAAQ,EAAAxM,EAAOwM,IAAQ,GAAK,kBCN5C,OAKA,SAAUiC,EAAQqE,EAAUk0L,EAAYn7L,GACtC,aAEF,IA+FI3P,EA/FA+qM,EAAkB,CAAC,GAAI,SAAU,MAAO,KAAM,KAAM,KACpDC,EAAep0L,EAASE,cAAc,OAItC+1E,EAAQrqE,KAAKqqE,MACbxqC,EAAM7/B,KAAK6/B,IACX7wC,EAAMnK,KAAKmK,IASf,SAASy5L,EAAkBzrL,EAAI/W,EAASilK,GACpC,OAAO59J,WAAWo7L,EAAO1rL,EAAIkuJ,GAAUjlK,GAY3C,SAAS0iM,EAAe7qL,EAAKd,EAAIkuJ,GAC7B,QAAI/uK,MAAMyc,QAAQkF,KACdmiK,EAAKniK,EAAKotJ,EAAQluJ,GAAKkuJ,IAChB,GAWf,SAAS+U,EAAKtqK,EAAK5T,EAAUmpK,GACzB,IAAIvtK,EAEJ,GAAKgY,EAIL,GAAIA,EAAI5V,QACJ4V,EAAI5V,QAAQgC,EAAUmpK,QACnB,GAAIv1J,EAAI7X,SAAWqP,EAEtB,IADAxP,EAAI,EACGA,EAAIgY,EAAI7X,QACXiE,EAAS5E,KAAK+tK,EAASv1J,EAAIhY,GAAIA,EAAGgY,GAClChY,SAGJ,IAAKA,KAAKgY,EACNA,EAAIpZ,eAAeoB,IAAMoE,EAAS5E,KAAK+tK,EAASv1J,EAAIhY,GAAIA,EAAGgY,GAYvE,SAASizL,EAAUrqM,EAAQY,EAAMuF,GAC7B,IAAImkM,EAAqB,sBAAwB1pM,EAAO,KAAOuF,EAAU,SACzE,OAAO,WACH,IAAInC,EAAI,IAAInF,MAAM,mBACd4oB,EAAQzjB,GAAKA,EAAEyjB,MAAQzjB,EAAEyjB,MAAMxV,QAAQ,kBAAmB,IACzDA,QAAQ,cAAe,IACvBA,QAAQ,6BAA8B,kBAAoB,sBAE3D5R,EAAMmR,EAAOnL,UAAYmL,EAAOnL,QAAQI,MAAQ+K,EAAOnL,QAAQhG,KAInE,OAHIA,GACAA,EAAIzB,KAAK4S,EAAOnL,QAASikM,EAAoB7iL,GAE1CznB,EAAO6E,MAAM3G,KAAMoB,YAa9BL,EADyB,mBAAlBxB,OAAOwB,OACL,SAAgBoQ,GACrB,GAAIA,IAAWT,GAAwB,OAAXS,EACxB,MAAM,IAAI1L,UAAU,8CAIxB,IADA,IAAIqF,EAASvL,OAAO4R,GACX1J,EAAQ,EAAGA,EAAQrG,UAAUC,OAAQoG,IAAS,CACnD,IAAI6R,EAASlY,UAAUqG,GACvB,GAAI6R,IAAW5I,GAAwB,OAAX4I,EACxB,IAAK,IAAI+yL,KAAW/yL,EACZA,EAAOxZ,eAAeusM,KACtBvhM,EAAOuhM,GAAW/yL,EAAO+yL,IAKzC,OAAOvhM,GAGFvL,OAAOwB,OAWpB,IAAIoxF,EAASg6G,GAAU,SAAgB9yK,EAAMuiD,EAAKtiD,GAG9C,IAFA,IAAIlvB,EAAO7K,OAAO6K,KAAKwxE,GACnB16E,EAAI,EACDA,EAAIkJ,EAAK/I,UACPi4B,GAAUA,GAASD,EAAKjvB,EAAKlJ,MAAQwP,KACtC2oB,EAAKjvB,EAAKlJ,IAAM06E,EAAIxxE,EAAKlJ,KAE7BA,IAEJ,OAAOm4B,IACR,SAAU,iBASTC,EAAQ6yK,GAAU,SAAe9yK,EAAMuiD,GACvC,OAAOuW,EAAO94D,EAAMuiD,GAAK,KAC1B,QAAS,iBAQZ,SAAS0wH,EAAQ9gL,EAAOikB,EAAM88J,GAC1B,IACIC,EADAC,EAAQh9J,EAAKvvC,WAGjBssM,EAAShhL,EAAMtrB,UAAYX,OAAOY,OAAOssM,IAClCxsM,YAAcurB,EACrBghL,EAAOnsM,OAASosM,EAEZF,GACAxrM,EAAOyrM,EAAQD,GAUvB,SAASN,EAAO1rL,EAAIkuJ,GAChB,OAAO,WACH,OAAOluJ,EAAG5Z,MAAM8nK,EAASrtK,YAWjC,SAASsrM,EAASjqM,EAAKuM,GACnB,MA1LgB,mBA0LLvM,EACAA,EAAIkE,MAAMqI,GAAOA,EAAK,IAAkB0B,EAAW1B,GAEvDvM,EASX,SAASkqM,EAAYC,EAAMC,GACvB,OAAQD,IAASl8L,EAAam8L,EAAOD,EASzC,SAASE,EAAkB37L,EAAQ47L,EAAOz+J,GACtCk1I,EAAKwpB,EAASD,IAAQ,SAASzgM,GAC3B6E,EAAO0M,iBAAiBvR,EAAMgiC,GAAS,MAU/C,SAAS2+J,EAAqB97L,EAAQ47L,EAAOz+J,GACzCk1I,EAAKwpB,EAASD,IAAQ,SAASzgM,GAC3B6E,EAAOmP,oBAAoBhU,EAAMgiC,GAAS,MAWlD,SAAS4+J,EAAUzuK,EAAM0gB,GACrB,KAAO1gB,GAAM,CACT,GAAIA,GAAQ0gB,EACR,OAAO,EAEX1gB,EAAOA,EAAKsP,WAEhB,OAAO,EASX,SAASo/J,EAAM9pM,EAAKw3C,GAChB,OAAOx3C,EAAIqE,QAAQmzC,IAAS,EAQhC,SAASmyJ,EAAS3pM,GACd,OAAOA,EAAI+lB,OAAOje,MAAM,QAU5B,SAASiiM,EAAQxxH,EAAK/gC,EAAMwyJ,GACxB,GAAIzxH,EAAIl0E,UAAY2lM,EAChB,OAAOzxH,EAAIl0E,QAAQmzC,GAGnB,IADA,IAAI35C,EAAI,EACDA,EAAI06E,EAAIv6E,QAAQ,CACnB,GAAKgsM,GAAazxH,EAAI16E,GAAGmsM,IAAcxyJ,IAAWwyJ,GAAazxH,EAAI16E,KAAO25C,EACtE,OAAO35C,EAEXA,IAEJ,OAAQ,EAShB,SAAS4lG,EAAQ5tF,GACb,OAAOxZ,MAAMQ,UAAUgM,MAAMxL,KAAKwY,EAAK,GAU3C,SAASo0L,EAAY1xH,EAAKvqE,EAAKshB,GAK3B,IAJA,IAAI9P,EAAU,GACVjgB,EAAS,GACT1B,EAAI,EAEDA,EAAI06E,EAAIv6E,QAAQ,CACnB,IAAIoB,EAAM4O,EAAMuqE,EAAI16E,GAAGmQ,GAAOuqE,EAAI16E,GAC9BksM,EAAQxqM,EAAQH,GAAO,GACvBogB,EAAQhd,KAAK+1E,EAAI16E,IAErB0B,EAAO1B,GAAKuB,EACZvB,IAaJ,OAVIyxB,IAII9P,EAHCxR,EAGSwR,EAAQ8P,MAAK,SAAyB7K,EAAGloB,GAC/C,OAAOkoB,EAAEzW,GAAOzR,EAAEyR,MAHZwR,EAAQ8P,QAQnB9P,EASX,SAAS0qL,EAASr0L,EAAKqoK,GAKnB,IAJA,IAAI5mK,EAAQ6T,EACRg/K,EAAYjsB,EAAS,GAAG71J,cAAgB61J,EAASr1K,MAAM,GAEvDhL,EAAI,EACDA,EAAI4qM,EAAgBzqM,QAAQ,CAI/B,IAFAmtB,GADA7T,EAASmxL,EAAgB5qM,IACPyZ,EAAS6yL,EAAYjsB,KAE3BroK,EACR,OAAOsV,EAEXttB,IAEJ,OAAOwP,EAOX,IAAI+8L,EAAY,EAUhB,SAASC,EAAoB7uL,GACzB,IAAIk0H,EAAMl0H,EAAQgb,eAAiBhb,EACnC,OAAQk0H,EAAIj5G,aAAei5G,EAAI46D,cAAgBr6L,EAGnD,IAEIs6L,EAAiB,iBAAkBt6L,EACnCu6L,EAAyBN,EAASj6L,EAAQ,kBAAoB5C,EAC9Do9L,EAAqBF,GAJN,wCAIoCxtL,KAAK/C,UAAUC,WAElEywL,EAAmB,QAEnBC,EAAmB,QAoBnBC,EAAW,CAAC,IAAK,KACjBC,EAAkB,CAAC,UAAW,WASlC,SAAS5uJ,EAAM6uJ,EAASj+L,GACpB,IAAI8I,EAAOhZ,KACXA,KAAKmuM,QAAUA,EACfnuM,KAAKkQ,SAAWA,EAChBlQ,KAAK6e,QAAUsvL,EAAQtvL,QACvB7e,KAAKmR,OAASg9L,EAAQvsM,QAAQwsM,YAI9BpuM,KAAKquM,WAAa,SAASC,GACnB5B,EAASyB,EAAQvsM,QAAQo1L,OAAQ,CAACmX,KAClCn1L,EAAKs1B,QAAQggK,IAIrBtuM,KAAK8oM,OA4DT,SAASyF,EAAaJ,EAASK,EAAWvjM,GACtC,IAAIwjM,EAAcxjM,EAAMyjM,SAASrtM,OAC7BstM,EAAqB1jM,EAAM2jM,gBAAgBvtM,OAC3C4yI,EAvGU,EAuGCu6D,GAA4BC,EAAcE,GAAuB,EAC5EE,EAAuB,GAAZL,GAA2CC,EAAcE,GAAuB,EAE/F1jM,EAAMgpI,UAAYA,EAClBhpI,EAAM4jM,UAAYA,EAEd56D,IACAk6D,EAAQW,QAAU,IAKtB7jM,EAAMujM,UAAYA,EAiBtB,SAA0BL,EAASljM,GAC/B,IAAI6jM,EAAUX,EAAQW,QAClBJ,EAAWzjM,EAAMyjM,SACjBK,EAAiBL,EAASrtM,OAGzBytM,EAAQE,aACTF,EAAQE,WAAaC,EAAqBhkM,IAI1C8jM,EAAiB,IAAMD,EAAQI,cAC/BJ,EAAQI,cAAgBD,EAAqBhkM,GACnB,IAAnB8jM,IACPD,EAAQI,eAAgB,GAG5B,IAAIF,EAAaF,EAAQE,WACrBE,EAAgBJ,EAAQI,cACxBC,EAAeD,EAAgBA,EAAczlG,OAASulG,EAAWvlG,OAEjEA,EAASx+F,EAAMw+F,OAAS+C,EAAUkiG,GACtCzjM,EAAMmkM,UAAY78L,IAClBtH,EAAMokM,UAAYpkM,EAAMmkM,UAAYJ,EAAWI,UAE/CnkM,EAAM+7F,MAAQsoG,EAASH,EAAc1lG,GACrCx+F,EAAMunE,SAAW+8H,EAAYJ,EAAc1lG,GA0B/C,SAAwBqlG,EAAS7jM,GAC7B,IAAIw+F,EAASx+F,EAAMw+F,OACfhiF,EAASqnL,EAAQU,aAAe,GAChCC,EAAYX,EAAQW,WAAa,GACjCC,EAAYZ,EAAQY,WAAa,GA5LvB,IA8LVzkM,EAAMujM,WA5LE,IA4L2BkB,EAAUlB,YAC7CiB,EAAYX,EAAQW,UAAY,CAC5BvsL,EAAGwsL,EAAU3oD,QAAU,EACvBniJ,EAAG8qM,EAAUlkI,QAAU,GAG3B/jD,EAASqnL,EAAQU,YAAc,CAC3BtsL,EAAGumF,EAAOvmF,EACVte,EAAG6kG,EAAO7kG,IAIlBqG,EAAM87I,OAAS0oD,EAAUvsL,GAAKumF,EAAOvmF,EAAIuE,EAAOvE,GAChDjY,EAAMugE,OAASikI,EAAU7qM,GAAK6kG,EAAO7kG,EAAI6iB,EAAO7iB,GA3ChD+qM,CAAeb,EAAS7jM,GACxBA,EAAM2kM,gBAAkBC,EAAa5kM,EAAM87I,OAAQ97I,EAAMugE,QAEzD,IAuNcv9D,EAAO4qB,EAvNjBi3K,EAAkBC,EAAY9kM,EAAMokM,UAAWpkM,EAAM87I,OAAQ97I,EAAMugE,QACvEvgE,EAAM+kM,iBAAmBF,EAAgB5sL,EACzCjY,EAAMglM,iBAAmBH,EAAgBlrM,EACzCqG,EAAM6kM,gBAAmB1sJ,EAAI0sJ,EAAgB5sL,GAAKkgC,EAAI0sJ,EAAgBlrM,GAAMkrM,EAAgB5sL,EAAI4sL,EAAgBlrM,EAEhHqG,EAAMk8F,MAAQ+nG,GAkNAjhM,EAlNyBihM,EAAcR,SAmN9Ca,GADc12K,EAlN0C61K,GAmNxC,GAAI71K,EAAI,GAAIq1K,GAAmBqB,EAAYthM,EAAM,GAAIA,EAAM,GAAIigM,IAnNX,EAC3EjjM,EAAMykB,SAAWw/K,EAsMrB,SAAqBjhM,EAAO4qB,GACxB,OAAOy2K,EAASz2K,EAAI,GAAIA,EAAI,GAAIq1K,GAAmBoB,EAASrhM,EAAM,GAAIA,EAAM,GAAIigM,GAvM/CgC,CAAYhB,EAAcR,SAAUA,GAAY,EAEjFzjM,EAAMklM,YAAerB,EAAQY,UAAsCzkM,EAAMyjM,SAASrtM,OAC9EytM,EAAQY,UAAUS,YAAellM,EAAMyjM,SAASrtM,OAASytM,EAAQY,UAAUS,YADtCllM,EAAMyjM,SAASrtM,OAwC5D,SAAkCytM,EAAS7jM,GACvC,IAEImlM,EAAUC,EAAWC,EAAW5yK,EAFhCiS,EAAOm/J,EAAQyB,cAAgBtlM,EAC/BokM,EAAYpkM,EAAMmkM,UAAYz/J,EAAKy/J,UAGvC,GArNe,GAqNXnkM,EAAMujM,YAA8Ba,EA1NrB,IA0NqD1/J,EAAKygK,WAAa1/L,GAAY,CAClG,IAAIq2I,EAAS97I,EAAM87I,OAASp3G,EAAKo3G,OAC7Bv7E,EAASvgE,EAAMugE,OAAS77B,EAAK67B,OAE7BjmE,EAAIwqM,EAAYV,EAAWtoD,EAAQv7E,GACvC6kI,EAAY9qM,EAAE2d,EACdotL,EAAY/qM,EAAEX,EACdwrM,EAAYhtJ,EAAI79C,EAAE2d,GAAKkgC,EAAI79C,EAAEX,GAAMW,EAAE2d,EAAI3d,EAAEX,EAC3C84B,EAAYmyK,EAAa9oD,EAAQv7E,GAEjCsjI,EAAQyB,aAAetlM,OAGvBmlM,EAAWzgK,EAAKygK,SAChBC,EAAY1gK,EAAK0gK,UACjBC,EAAY3gK,EAAK2gK,UACjB5yK,EAAYiS,EAAKjS,UAGrBzyB,EAAMmlM,SAAWA,EACjBnlM,EAAMolM,UAAYA,EAClBplM,EAAMqlM,UAAYA,EAClBrlM,EAAMyyB,UAAYA,EAhElB8yK,CAAyB1B,EAAS7jM,GAGlC,IAAIkG,EAASg9L,EAAQtvL,QACjBquL,EAAUjiM,EAAMwlM,SAASt/L,OAAQA,KACjCA,EAASlG,EAAMwlM,SAASt/L,QAE5BlG,EAAMkG,OAASA,EA/Dfu/L,CAAiBvC,EAASljM,GAG1BkjM,EAAQptL,KAAK,eAAgB9V,GAE7BkjM,EAAQwC,UAAU1lM,GAClBkjM,EAAQW,QAAQY,UAAYzkM,EA0HhC,SAASgkM,EAAqBhkM,GAK1B,IAFA,IAAIyjM,EAAW,GACXxtM,EAAI,EACDA,EAAI+J,EAAMyjM,SAASrtM,QACtBqtM,EAASxtM,GAAK,CACVqgC,QAASqsD,EAAM3iF,EAAMyjM,SAASxtM,GAAGqgC,SACjCC,QAASosD,EAAM3iF,EAAMyjM,SAASxtM,GAAGsgC,UAErCtgC,IAGJ,MAAO,CACHkuM,UAAW78L,IACXm8L,SAAUA,EACVjlG,OAAQ+C,EAAUkiG,GAClB3nD,OAAQ97I,EAAM87I,OACdv7E,OAAQvgE,EAAMugE,QAStB,SAASghC,EAAUkiG,GACf,IAAIK,EAAiBL,EAASrtM,OAG9B,GAAuB,IAAnB0tM,EACA,MAAO,CACH7rL,EAAG0qE,EAAM8gH,EAAS,GAAGntK,SACrB38B,EAAGgpF,EAAM8gH,EAAS,GAAGltK,UAK7B,IADA,IAAIte,EAAI,EAAGte,EAAI,EAAG1D,EAAI,EACfA,EAAI6tM,GACP7rL,GAAKwrL,EAASxtM,GAAGqgC,QACjB38B,GAAK8pM,EAASxtM,GAAGsgC,QACjBtgC,IAGJ,MAAO,CACHgiB,EAAG0qE,EAAM1qE,EAAI6rL,GACbnqM,EAAGgpF,EAAMhpF,EAAImqM,IAWrB,SAASgB,EAAYV,EAAWnsL,EAAGte,GAC/B,MAAO,CACHse,EAAGA,EAAImsL,GAAa,EACpBzqM,EAAGA,EAAIyqM,GAAa,GAU5B,SAASQ,EAAa3sL,EAAGte,GACrB,OAAIse,IAAMte,EAzTO,EA6Tbw+C,EAAIlgC,IAAMkgC,EAAIx+C,GACPse,EAAI,EA7TE,EACC,EA8TXte,EAAI,EA7TI,EACE,GAsUrB,SAAS2qM,EAAY5/F,EAAIN,EAAItzF,GACpBA,IACDA,EAAQkyL,GAEZ,IAAI/qL,EAAImsF,EAAGtzF,EAAM,IAAM4zF,EAAG5zF,EAAM,IAC5BnX,EAAIyqG,EAAGtzF,EAAM,IAAM4zF,EAAG5zF,EAAM,IAEhC,OAAOwH,KAAKm8E,KAAMx8E,EAAIA,EAAMte,EAAIA,GAUpC,SAAS0qM,EAAS3/F,EAAIN,EAAItzF,GACjBA,IACDA,EAAQkyL,GAEZ,IAAI/qL,EAAImsF,EAAGtzF,EAAM,IAAM4zF,EAAG5zF,EAAM,IAC5BnX,EAAIyqG,EAAGtzF,EAAM,IAAM4zF,EAAG5zF,EAAM,IAChC,OAA0B,IAAnBwH,KAAK2oF,MAAMtnG,EAAGse,GAAWK,KAAK4+E,GA1TzC7iD,EAAMp/C,UAAY,CAKdouC,QAAS,aAKTw6J,KAAM,WACF9oM,KAAK4wM,MAAQ9D,EAAkB9sM,KAAK6e,QAAS7e,KAAK4wM,KAAM5wM,KAAKquM,YAC7DruM,KAAK6wM,UAAY/D,EAAkB9sM,KAAKmR,OAAQnR,KAAK6wM,SAAU7wM,KAAKquM,YACpEruM,KAAK8wM,OAAShE,EAAkBY,EAAoB1tM,KAAK6e,SAAU7e,KAAK8wM,MAAO9wM,KAAKquM,aAMxFtqK,QAAS,WACL/jC,KAAK4wM,MAAQ3D,EAAqBjtM,KAAK6e,QAAS7e,KAAK4wM,KAAM5wM,KAAKquM,YAChEruM,KAAK6wM,UAAY5D,EAAqBjtM,KAAKmR,OAAQnR,KAAK6wM,SAAU7wM,KAAKquM,YACvEruM,KAAK8wM,OAAS7D,EAAqBS,EAAoB1tM,KAAK6e,SAAU7e,KAAK8wM,MAAO9wM,KAAKquM,cA4T/F,IAAI0C,EAAkB,CAClBC,UA/Xc,EAgYdxqF,UA/Xa,EAgYbyqF,QA/XY,GAkYZC,EAAuB,YACvBC,EAAsB,oBAO1B,SAASC,IACLpxM,KAAK4wM,KAAOM,EACZlxM,KAAK8wM,MAAQK,EAEbnxM,KAAKqxM,SAAU,EAEf/xJ,EAAM34C,MAAM3G,KAAMoB,WAGtBkrM,EAAQ8E,EAAY9xJ,EAAO,CAKvBhR,QAAS,SAAmBggK,GACxB,IAAIE,EAAYuC,EAAgBzC,EAAGhiM,MA3ZzB,EA8ZNkiM,GAAyC,IAAdF,EAAGhrK,SAC9BtjC,KAAKqxM,SAAU,GA9ZV,EAiaL7C,GAAuC,IAAbF,EAAGrrK,QAC7BurK,EAjaI,GAqaHxuM,KAAKqxM,UAraF,EAyaJ7C,IACAxuM,KAAKqxM,SAAU,GAGnBrxM,KAAKkQ,SAASlQ,KAAKmuM,QAASK,EAAW,CACnCE,SAAU,CAACJ,GACXM,gBAAiB,CAACN,GAClBtmB,YAAagmB,EACbyC,SAAUnC,QAKtB,IAAIgD,GAAoB,CACpBC,YAzbc,EA0bdC,YAzba,EA0bbC,UAzbY,EA0bZC,cAzbe,EA0bfC,WA1be,GA8bfC,GAAyB,CACzB,EAAG7D,EACH,EAzciB,MA0cjB,EAAGC,EACH,EAzcoB,UA4cpB6D,GAAyB,cACzBC,GAAwB,sCAa5B,SAASC,KACL/xM,KAAK4wM,KAAOiB,GACZ7xM,KAAK8wM,MAAQgB,GAEbxyJ,EAAM34C,MAAM3G,KAAMoB,WAElBpB,KAAKgyM,MAAShyM,KAAKmuM,QAAQW,QAAQmD,cAAgB,GAhBnD3+L,EAAO2zK,iBAAmB3zK,EAAOowB,eACjCmuK,GAAyB,gBACzBC,GAAwB,6CAiB5BxF,EAAQyF,GAAmBzyJ,EAAO,CAK9BhR,QAAS,SAAmBggK,GACxB,IAAI0D,EAAQhyM,KAAKgyM,MACbE,GAAgB,EAEhBC,EAAsB7D,EAAGhiM,KAAKwD,cAAciE,QAAQ,KAAM,IAC1Dy6L,EAAY8C,GAAkBa,GAC9BnqB,EAAc4pB,GAAuBtD,EAAGtmB,cAAgBsmB,EAAGtmB,YAE3DtmJ,EAAWsmJ,GAAe+lB,EAG1BqE,EAAahF,EAAQ4E,EAAO1D,EAAG+D,UAAW,aA/epC,EAkfN7D,IAA0C,IAAdF,EAAGhrK,QAAgB5B,GAC3C0wK,EAAa,IACbJ,EAAMnsM,KAAKyoM,GACX8D,EAAaJ,EAAM3wM,OAAS,GAEb,GAAZmtM,IACP0D,GAAgB,GAIhBE,EAAa,IAKjBJ,EAAMI,GAAc9D,EAEpBtuM,KAAKkQ,SAASlQ,KAAKmuM,QAASK,EAAW,CACnCE,SAAUsD,EACVpD,gBAAiB,CAACN,GAClBtmB,YAAaA,EACbyoB,SAAUnC,IAGV4D,GAEAF,EAAMrqM,OAAOyqM,EAAY,OAKrC,IAAIE,GAAyB,CACzBC,WAlhBc,EAmhBdC,UAlhBa,EAmhBbC,SAlhBY,EAmhBZC,YAlhBe,GAqhBfC,GAA6B,aAC7BC,GAA6B,4CAOjC,SAASC,KACL7yM,KAAK6wM,SAAW8B,GAChB3yM,KAAK8wM,MAAQ8B,GACb5yM,KAAK8yM,SAAU,EAEfxzJ,EAAM34C,MAAM3G,KAAMoB,WAsCtB,SAAS2xM,GAAuBzE,EAAIhiM,GAChC,IAAIqW,EAAMmkF,EAAQwnG,EAAG1rK,SACjBguH,EAAU9pD,EAAQwnG,EAAGjtK,gBAMzB,OAJW,GAAP/0B,IACAqW,EAAM2qL,EAAY3qL,EAAI7I,OAAO82I,GAAU,cAAc,IAGlD,CAACjuI,EAAKiuI,GA3CjB07C,EAAQuG,GAAkBvzJ,EAAO,CAC7BhR,QAAS,SAAmBggK,GACxB,IAAIhiM,EAAOgmM,GAAuBhE,EAAGhiM,MAOrC,GAjjBU,IA6iBNA,IACAtM,KAAK8yM,SAAU,GAGd9yM,KAAK8yM,QAAV,CAIA,IAAIlwK,EAAUmwK,GAAuBryM,KAAKV,KAAMsuM,EAAIhiM,GAGzC,GAAPA,GAAqCs2B,EAAQ,GAAGvhC,OAASuhC,EAAQ,GAAGvhC,QAAW,IAC/ErB,KAAK8yM,SAAU,GAGnB9yM,KAAKkQ,SAASlQ,KAAKmuM,QAAS7hM,EAAM,CAC9BoiM,SAAU9rK,EAAQ,GAClBgsK,gBAAiBhsK,EAAQ,GACzBolJ,YAAa+lB,EACb0C,SAAUnC,QAsBtB,IAAI0E,GAAkB,CAClBT,WAvlBc,EAwlBdC,UAvlBa,EAwlBbC,SAvlBY,EAwlBZC,YAvlBe,GA0lBfO,GAAsB,4CAO1B,SAASC,KACLlzM,KAAK6wM,SAAWoC,GAChBjzM,KAAKmzM,UAAY,GAEjB7zJ,EAAM34C,MAAM3G,KAAMoB,WA0BtB,SAASgyM,GAAW9E,EAAIhiM,GACpB,IAAI+mM,EAAavsG,EAAQwnG,EAAG1rK,SACxBuwK,EAAYnzM,KAAKmzM,UAGrB,GAAW,EAAP7mM,GAA2D,IAAtB+mM,EAAWhyM,OAEhD,OADA8xM,EAAUE,EAAW,GAAGC,aAAc,EAC/B,CAACD,EAAYA,GAGxB,IAAInyM,EACAqyM,EACAlyK,EAAiBylE,EAAQwnG,EAAGjtK,gBAC5BmyK,EAAuB,GACvBriM,EAASnR,KAAKmR,OAQlB,GALAoiM,EAAgBF,EAAWt5L,QAAO,SAAS+lG,GACvC,OAAOotF,EAAUptF,EAAM3uG,OAAQA,MAppBrB,IAwpBV7E,EAEA,IADApL,EAAI,EACGA,EAAIqyM,EAAclyM,QACrB8xM,EAAUI,EAAcryM,GAAGoyM,aAAc,EACzCpyM,IAMR,IADAA,EAAI,EACGA,EAAImgC,EAAehgC,QAClB8xM,EAAU9xK,EAAengC,GAAGoyM,aAC5BE,EAAqB3tM,KAAKw7B,EAAengC,IAIlC,GAAPoL,UACO6mM,EAAU9xK,EAAengC,GAAGoyM,YAEvCpyM,IAGJ,OAAKsyM,EAAqBnyM,OAInB,CAEHisM,EAAYiG,EAAcz5L,OAAO05L,GAAuB,cAAc,GACtEA,QAPJ,EAwBJ,SAASC,KACLn0J,EAAM34C,MAAM3G,KAAMoB,WAElB,IAAIktC,EAAU29J,EAAOjsM,KAAKsuC,QAAStuC,MACnCA,KAAK8/G,MAAQ,IAAIozF,GAAWlzM,KAAKmuM,QAAS7/J,GAC1CtuC,KAAK0zM,MAAQ,IAAItC,EAAWpxM,KAAKmuM,QAAS7/J,GAE1CtuC,KAAK2zM,aAAe,KACpB3zM,KAAK4zM,YAAc,GAqCvB,SAASC,GAAcrF,EAAW/tK,GAnvBhB,EAovBV+tK,GACAxuM,KAAK2zM,aAAelzK,EAAUmuK,gBAAgB,GAAG0E,WACjDQ,GAAapzM,KAAKV,KAAMygC,IACL,GAAZ+tK,GACPsF,GAAapzM,KAAKV,KAAMygC,GAIhC,SAASqzK,GAAarzK,GAClB,IAAIq/E,EAAQr/E,EAAUmuK,gBAAgB,GAEtC,GAAI9uF,EAAMwzF,aAAetzM,KAAK2zM,aAAc,CACxC,IAAII,EAAY,CAAC7wL,EAAG48F,EAAMv+E,QAAS38B,EAAGk7G,EAAMt+E,SAC5CxhC,KAAK4zM,YAAY/tM,KAAKkuM,GACtB,IAAIC,EAAMh0M,KAAK4zM,YAOf/iM,YANsB,WAClB,IAAI3P,EAAI8yM,EAAItsM,QAAQqsM,GAChB7yM,GAAK,GACL8yM,EAAIrsM,OAAOzG,EAAG,KAnEV,OA0EpB,SAAS+yM,GAAiBxzK,GAEtB,IADA,IAAIvd,EAAIud,EAAUgwK,SAASlvK,QAAS38B,EAAI67B,EAAUgwK,SAASjvK,QAClDtgC,EAAI,EAAGA,EAAIlB,KAAK4zM,YAAYvyM,OAAQH,IAAK,CAC9C,IAAIF,EAAIhB,KAAK4zM,YAAY1yM,GACrBgnG,EAAK3kF,KAAK6/B,IAAIlgC,EAAIliB,EAAEkiB,GAAIilF,EAAK5kF,KAAK6/B,IAAIx+C,EAAI5D,EAAE4D,GAChD,GAAIsjG,GA9ES,IA8EeC,GA9Ef,GA+ET,OAAO,EAGf,OAAO,EA3KXmkG,EAAQ4G,GAAY5zJ,EAAO,CACvBhR,QAAS,SAAoBggK,GACzB,IAAIhiM,EAAO0mM,GAAgB1E,EAAGhiM,MAC1Bs2B,EAAUwwK,GAAW1yM,KAAKV,KAAMsuM,EAAIhiM,GACnCs2B,GAIL5iC,KAAKkQ,SAASlQ,KAAKmuM,QAAS7hM,EAAM,CAC9BoiM,SAAU9rK,EAAQ,GAClBgsK,gBAAiBhsK,EAAQ,GACzBolJ,YAAa+lB,EACb0C,SAAUnC,OA0FtBhC,EAAQmH,GAAiBn0J,EAAO,CAO5BhR,QAAS,SAAoB6/J,EAAS+F,EAAYC,GAC9C,IAAIzyK,EAAWyyK,EAAUnsB,aAAe+lB,EACpCqG,EAAWD,EAAUnsB,aAAegmB,EAExC,KAAIoG,GAAWD,EAAUE,oBAAsBF,EAAUE,mBAAmBC,kBAA5E,CAKA,GAAI5yK,EACAmyK,GAAcnzM,KAAKV,KAAMk0M,EAAYC,QAClC,GAAIC,GAAWH,GAAiBvzM,KAAKV,KAAMm0M,GAC9C,OAGJn0M,KAAKkQ,SAASi+L,EAAS+F,EAAYC,KAMvCpwK,QAAS,WACL/jC,KAAK8/G,MAAM/7E,UACX/jC,KAAK0zM,MAAM3vK,aA0CnB,IAAIwwK,GAAwBhH,EAASxB,EAAaxkL,MAAO,eACrDitL,GAAsBD,KAA0B7jM,EAGhD+jM,GAAuB,UACvBC,GAAoB,OACpBC,GAA4B,eAC5BC,GAAoB,OACpBC,GAAqB,QACrBC,GAAqB,QACrBC,GA4IJ,WACI,IAAKP,GACD,OAAO,EAEX,IAAIQ,EAAW,GACXC,EAAc3hM,EAAO4hM,KAAO5hM,EAAO4hM,IAAIC,SAO3C,MANA,CAAC,OAAQ,eAAgB,QAAS,QAAS,cAAe,QAAQ7xM,SAAQ,SAASb,GAI/EuyM,EAASvyM,IAAOwyM,GAAc3hM,EAAO4hM,IAAIC,SAAS,eAAgB1yM,MAE/DuyM,EAxJYI,GASvB,SAASC,GAAYlH,EAASxoM,GAC1B3F,KAAKmuM,QAAUA,EACfnuM,KAAKya,IAAI9U,GAGb0vM,GAAYn1M,UAAY,CAKpBua,IAAK,SAAS9U,GAENA,GAAS8uM,KACT9uM,EAAQ3F,KAAKs1M,WAGbd,IAAuBx0M,KAAKmuM,QAAQtvL,QAAQ0I,OAASwtL,GAAiBpvM,KACtE3F,KAAKmuM,QAAQtvL,QAAQ0I,MAAMgtL,IAAyB5uM,GAExD3F,KAAKu1M,QAAU5vM,EAAMmK,cAAcsZ,QAMvCojC,OAAQ,WACJxsD,KAAKya,IAAIza,KAAKmuM,QAAQvsM,QAAQggF,cAOlC0zH,QAAS,WACL,IAAIC,EAAU,GAMd,OALA/xB,EAAKxjL,KAAKmuM,QAAQqH,aAAa,SAASC,GAChC/I,EAAS+I,EAAW7zM,QAAQo1L,OAAQ,CAACye,MACrCF,EAAUA,EAAQz7L,OAAO27L,EAAWC,sBAgEpD,SAA2BH,GAEvB,GAAIpI,EAAMoI,EAASX,IACf,OAAOA,GAGX,IAAIe,EAAUxI,EAAMoI,EAASV,IACzBe,EAAUzI,EAAMoI,EAAST,IAM7B,OAAIa,GAAWC,EACJhB,GAIPe,GAAWC,EACJD,EAAUd,GAAqBC,GAItC3H,EAAMoI,EAASZ,IACRA,GAGJD,GAxFImB,CAAkBN,EAAQtvL,KAAK,OAO1C6vL,gBAAiB,SAAS7qM,GACtB,IAAIwlM,EAAWxlM,EAAMwlM,SACjB/yK,EAAYzyB,EAAM2kM,gBAGtB,GAAI5vM,KAAKmuM,QAAQW,QAAQiH,UACrBtF,EAASxvK,qBADb,CAKA,IAAIs0K,EAAUv1M,KAAKu1M,QACfS,EAAU7I,EAAMoI,EAASX,MAAuBG,GAAkC,KAClFa,EAAUzI,EAAMoI,EAAST,MAAwBC,GAAiBD,SAClEa,EAAUxI,EAAMoI,EAASV,MAAwBE,GAAiBF,SAEtE,GAAImB,EAAS,CAGT,IAAIC,EAAyC,IAA1BhrM,EAAMyjM,SAASrtM,OAC9B60M,EAAgBjrM,EAAMunE,SAAW,EACjC2jI,EAAiBlrM,EAAMokM,UAAY,IAEvC,GAAI4G,GAAgBC,GAAiBC,EACjC,OAIR,IAAIR,IAAWC,EAKf,OAAII,GACCJ,GAj3BcQ,EAi3BH14K,GACXi4K,GAj3BYU,GAi3BD34K,EACL19B,KAAKs2M,WAAW7F,QAH3B,IAWJ6F,WAAY,SAAS7F,GACjBzwM,KAAKmuM,QAAQW,QAAQiH,WAAY,EACjCtF,EAASxvK,mBAiFjB,IAMIs1K,GAAe,GAQnB,SAASC,GAAW50M,GAChB5B,KAAK4B,QAAUb,EAAO,GAAIf,KAAKiJ,SAAUrH,GAAW,IAEpD5B,KAAKuN,GApgCEkgM,IAsgCPztM,KAAKmuM,QAAU,KAGfnuM,KAAK4B,QAAQo1L,OAAS2V,EAAY3sM,KAAK4B,QAAQo1L,QAAQ,GAEvDh3L,KAAKoyB,MAxBY,EA0BjBpyB,KAAKy2M,aAAe,GACpBz2M,KAAK02M,YAAc,GAqOvB,SAASC,GAASvkL,GACd,OA5PkB,GA4PdA,EACO,SA/PG,EAgQHA,EACA,MAlQK,EAmQLA,EACA,OArQG,EAsQHA,EACA,QAEJ,GAQX,SAASwkL,GAAal5K,GAClB,OAnuCiB,IAmuCbA,EACO,OAruCI,GAsuCJA,EACA,KAzuCM,GA0uCNA,EACA,OA1uCO,GA2uCPA,EACA,QAEJ,GASX,SAASm5K,GAA6BC,EAAiBrB,GACnD,IAAItH,EAAUsH,EAAWtH,QACzB,OAAIA,EACOA,EAAQzsM,IAAIo1M,GAEhBA,EAQX,SAASC,KACLP,GAAW7vM,MAAM3G,KAAMoB,WA6D3B,SAAS41M,KACLD,GAAepwM,MAAM3G,KAAMoB,WAE3BpB,KAAKi3M,GAAK,KACVj3M,KAAKk3M,GAAK,KA4Ed,SAASC,KACLJ,GAAepwM,MAAM3G,KAAMoB,WAsC/B,SAASg2M,KACLZ,GAAW7vM,MAAM3G,KAAMoB,WAEvBpB,KAAKq3M,OAAS,KACdr3M,KAAKo0C,OAAS,KAmElB,SAASkjK,KACLP,GAAepwM,MAAM3G,KAAMoB,WA8B/B,SAASm2M,KACLR,GAAepwM,MAAM3G,KAAMoB,WA2D/B,SAASo2M,KACLhB,GAAW7vM,MAAM3G,KAAMoB,WAIvBpB,KAAKy3M,OAAQ,EACbz3M,KAAK03M,SAAU,EAEf13M,KAAKq3M,OAAS,KACdr3M,KAAKo0C,OAAS,KACdp0C,KAAK61D,MAAQ,EAqGjB,SAAS8hJ,GAAO94L,EAASjd,GAGrB,OAFAA,EAAUA,GAAW,IACb4zM,YAAc7I,EAAY/qM,EAAQ4zM,YAAamC,GAAO1uM,SAASwhJ,QAChE,IAAImtD,GAAQ/4L,EAASjd,GAiIhC,SAASg2M,GAAQ/4L,EAASjd,GACtB5B,KAAK4B,QAAUb,EAAO,GAAI42M,GAAO1uM,SAAUrH,GAAW,IAEtD5B,KAAK4B,QAAQwsM,YAAcpuM,KAAK4B,QAAQwsM,aAAevvL,EAEvD7e,KAAKgQ,SAAW,GAChBhQ,KAAK8uM,QAAU,GACf9uM,KAAKw1M,YAAc,GACnBx1M,KAAK63M,YAAc,GAEnB73M,KAAK6e,QAAUA,EACf7e,KAAKiL,MArwDE,IAqwD0BjL,KAlxDR4B,QAAQk2M,aAItBjK,EACAkE,GACAjE,EACAoF,GACCtF,EAGD6F,GAFArC,IAywDsBpxM,KArwDNuuM,GAswD3BvuM,KAAK4hF,YAAc,IAAIyzH,GAAYr1M,KAAMA,KAAK4B,QAAQggF,aAEtDm2H,GAAe/3M,MAAM,GAErBwjL,EAAKxjL,KAAK4B,QAAQ4zM,aAAa,SAASzuM,GACpC,IAAI0uM,EAAaz1M,KAAKgiE,IAAI,IAAKj7D,EAAK,GAAIA,EAAK,KAC7CA,EAAK,IAAM0uM,EAAWuC,cAAcjxM,EAAK,IACzCA,EAAK,IAAM0uM,EAAWwC,eAAelxM,EAAK,MAC3C/G,MA4PP,SAAS+3M,GAAe5J,EAASnsI,GAC7B,IAIIxzC,EAJA3P,EAAUsvL,EAAQtvL,QACjBA,EAAQ0I,QAIbi8J,EAAK2qB,EAAQvsM,QAAQs2M,UAAU,SAASvyM,EAAOjD,GAC3C8rB,EAAO++K,EAAS1uL,EAAQ0I,MAAO7kB,GAC3Bs/D,GACAmsI,EAAQ0J,YAAYrpL,GAAQ3P,EAAQ0I,MAAMiH,GAC1C3P,EAAQ0I,MAAMiH,GAAQ7oB,GAEtBkZ,EAAQ0I,MAAMiH,GAAQ2/K,EAAQ0J,YAAYrpL,IAAS,MAGtDwzC,IACDmsI,EAAQ0J,YAAc,KA9nC9BrB,GAAWt2M,UAAY,CAKnB+I,SAAU,GAOVwR,IAAK,SAAS7Y,GAKV,OAJAb,EAAOf,KAAK4B,QAASA,GAGrB5B,KAAKmuM,SAAWnuM,KAAKmuM,QAAQvsH,YAAYp1B,SAClCxsD,MAQXg4M,cAAe,SAASlB,GACpB,GAAI5K,EAAe4K,EAAiB,gBAAiB92M,MACjD,OAAOA,KAGX,IAAIy2M,EAAez2M,KAAKy2M,aAMxB,OAJKA,GADLK,EAAkBD,GAA6BC,EAAiB92M,OAC9BuN,MAC9BkpM,EAAaK,EAAgBvpM,IAAMupM,EACnCA,EAAgBkB,cAAch4M,OAE3BA,MAQXm4M,kBAAmB,SAASrB,GACxB,OAAI5K,EAAe4K,EAAiB,oBAAqB92M,QAIzD82M,EAAkBD,GAA6BC,EAAiB92M,aACzDA,KAAKy2M,aAAaK,EAAgBvpM,KAJ9BvN,MAafi4M,eAAgB,SAASnB,GACrB,GAAI5K,EAAe4K,EAAiB,iBAAkB92M,MAClD,OAAOA,KAGX,IAAI02M,EAAc12M,KAAK02M,YAMvB,OAJ+C,IAA3CtJ,EAAQsJ,EADZI,EAAkBD,GAA6BC,EAAiB92M,SAE5D02M,EAAY7wM,KAAKixM,GACjBA,EAAgBmB,eAAej4M,OAE5BA,MAQXo4M,mBAAoB,SAAStB,GACzB,GAAI5K,EAAe4K,EAAiB,qBAAsB92M,MACtD,OAAOA,KAGX82M,EAAkBD,GAA6BC,EAAiB92M,MAChE,IAAIyH,EAAQ2lM,EAAQptM,KAAK02M,YAAaI,GAItC,OAHIrvM,GAAS,GACTzH,KAAK02M,YAAY/uM,OAAOF,EAAO,GAE5BzH,MAOXq4M,mBAAoB,WAChB,OAAOr4M,KAAK02M,YAAYr1M,OAAS,GAQrCi3M,iBAAkB,SAASxB,GACvB,QAAS92M,KAAKy2M,aAAaK,EAAgBvpM,KAQ/CwT,KAAM,SAAS9V,GACX,IAAI+N,EAAOhZ,KACPoyB,EAAQpyB,KAAKoyB,MAEjB,SAASrR,EAAK7M,GACV8E,EAAKm1L,QAAQptL,KAAK7M,EAAOjJ,GAIzBmnB,EArJM,GAsJNrR,EAAK/H,EAAKpX,QAAQsS,MAAQyiM,GAASvkL,IAGvCrR,EAAK/H,EAAKpX,QAAQsS,OAEdjJ,EAAMstM,iBACNx3L,EAAK9V,EAAMstM,iBAIXnmL,GAhKM,GAiKNrR,EAAK/H,EAAKpX,QAAQsS,MAAQyiM,GAASvkL,KAU3ComL,QAAS,SAASvtM,GACd,GAAIjL,KAAKy4M,UACL,OAAOz4M,KAAK+gB,KAAK9V,GAGrBjL,KAAKoyB,MAAQmkL,IAOjBkC,QAAS,WAEL,IADA,IAAIv3M,EAAI,EACDA,EAAIlB,KAAK02M,YAAYr1M,QAAQ,CAChC,KAAkC,GAA5BrB,KAAK02M,YAAYx1M,GAAGkxB,OACtB,OAAO,EAEXlxB,IAEJ,OAAO,GAOXyvM,UAAW,SAASwD,GAGhB,IAAIuE,EAAiB33M,EAAO,GAAIozM,GAGhC,IAAKzH,EAAS1sM,KAAK4B,QAAQo1L,OAAQ,CAACh3L,KAAM04M,IAGtC,OAFA14M,KAAK8qC,aACL9qC,KAAKoyB,MAAQmkL,IAKA,GAAbv2M,KAAKoyB,QACLpyB,KAAKoyB,MAvNI,GA0NbpyB,KAAKoyB,MAAQpyB,KAAK8gB,QAAQ43L,GAIT,GAAb14M,KAAKoyB,OACLpyB,KAAKw4M,QAAQE,IAWrB53L,QAAS,SAASqzL,KAOlBuB,eAAgB,aAOhB5qK,MAAO,cA8DXwhK,EAAQyK,GAAgBP,GAAY,CAKhCvtM,SAAU,CAKNylM,SAAU,GASdiK,SAAU,SAAS1tM,GACf,IAAI2tM,EAAiB54M,KAAK4B,QAAQ8sM,SAClC,OAA0B,IAAnBkK,GAAwB3tM,EAAMyjM,SAASrtM,SAAWu3M,GAS7D93L,QAAS,SAAS7V,GACd,IAAImnB,EAAQpyB,KAAKoyB,MACbo8K,EAAYvjM,EAAMujM,UAElBqK,EAAuB,EAARzmL,EACf+gB,EAAUnzC,KAAK24M,SAAS1tM,GAG5B,OAAI4tM,IAlzCO,EAkzCUrK,IAA6Br7J,GAvVpC,GAwVH/gB,EACAymL,GAAgB1lK,EArzCnB,EAszCAq7J,EA5VE,EA6VKp8K,EA/VL,EAgWOA,EA/VL,EAkWDA,EAnWD,EAqWHmkL,MAiBfjK,EAAQ0K,GAAeD,GAAgB,CAKnC9tM,SAAU,CACNiL,MAAO,MACP4kM,UAAW,GACXpK,SAAU,EACVhxK,UA50CYq7K,IA+0ChBrD,eAAgB,WACZ,IAAIh4K,EAAY19B,KAAK4B,QAAQ87B,UACzB63K,EAAU,GAOd,OA11CmBa,EAo1Cf14K,GACA63K,EAAQ1vM,KAAKivM,IAp1CAuB,GAs1Cb34K,GACA63K,EAAQ1vM,KAAKgvM,IAEVU,GAGXyD,cAAe,SAAS/tM,GACpB,IAAIrJ,EAAU5B,KAAK4B,QACfq3M,GAAW,EACXzmI,EAAWvnE,EAAMunE,SACjB90C,EAAYzyB,EAAMyyB,UAClBxa,EAAIjY,EAAM87I,OACVniJ,EAAIqG,EAAMugE,OAed,OAZM9tC,EAAY97B,EAAQ87B,YAt2CP04K,EAu2CXx0M,EAAQ87B,WACRA,EAAmB,IAANxa,EA92CR,EA82CqCA,EAAI,EA72CzC,EACC,EA62CN+1L,EAAW/1L,GAAKljB,KAAKi3M,GACrBzkI,EAAWjvD,KAAK6/B,IAAIn4C,EAAM87I,UAE1BrpH,EAAmB,IAAN94B,EAl3CR,EAk3CqCA,EAAI,EA/2C3C,EACE,GA+2CLq0M,EAAWr0M,GAAK5E,KAAKk3M,GACrB1kI,EAAWjvD,KAAK6/B,IAAIn4C,EAAMugE,UAGlCvgE,EAAMyyB,UAAYA,EACXu7K,GAAYzmI,EAAW5wE,EAAQk3M,WAAap7K,EAAY97B,EAAQ87B,WAG3Ei7K,SAAU,SAAS1tM,GACf,OAAO8rM,GAAe72M,UAAUy4M,SAASj4M,KAAKV,KAAMiL,KAva1C,EAwaLjL,KAAKoyB,SAxaA,EAwa0BpyB,KAAKoyB,QAAwBpyB,KAAKg5M,cAAc/tM,KAGxF8V,KAAM,SAAS9V,GAEXjL,KAAKi3M,GAAKhsM,EAAM87I,OAChB/mJ,KAAKk3M,GAAKjsM,EAAMugE,OAEhB,IAAI9tC,EAAYk5K,GAAa3rM,EAAMyyB,WAE/BA,IACAzyB,EAAMstM,gBAAkBv4M,KAAK4B,QAAQsS,MAAQwpB,GAEjD19B,KAAKK,OAAO0gB,KAAKrgB,KAAKV,KAAMiL,MAcpCqhM,EAAQ6K,GAAiBJ,GAAgB,CAKrC9tM,SAAU,CACNiL,MAAO,QACP4kM,UAAW,EACXpK,SAAU,GAGdgH,eAAgB,WACZ,MAAO,CAACd,KAGZ+D,SAAU,SAAS1tM,GACf,OAAOjL,KAAKK,OAAOs4M,SAASj4M,KAAKV,KAAMiL,KAClCsY,KAAK6/B,IAAIn4C,EAAMk8F,MAAQ,GAAKnnG,KAAK4B,QAAQk3M,WApdpC,EAodiD94M,KAAKoyB,QAGpErR,KAAM,SAAS9V,GACX,GAAoB,IAAhBA,EAAMk8F,MAAa,CACnB,IAAI+xG,EAAQjuM,EAAMk8F,MAAQ,EAAI,KAAO,MACrCl8F,EAAMstM,gBAAkBv4M,KAAK4B,QAAQsS,MAAQglM,EAEjDl5M,KAAKK,OAAO0gB,KAAKrgB,KAAKV,KAAMiL,MAiBpCqhM,EAAQ8K,GAAiBZ,GAAY,CAKjCvtM,SAAU,CACNiL,MAAO,QACPw6L,SAAU,EACVtvI,KAAM,IACN05I,UAAW,GAGfpD,eAAgB,WACZ,MAAO,CAAChB,KAGZ5zL,QAAS,SAAS7V,GACd,IAAIrJ,EAAU5B,KAAK4B,QACfu3M,EAAgBluM,EAAMyjM,SAASrtM,SAAWO,EAAQ8sM,SAClD0K,EAAgBnuM,EAAMunE,SAAW5wE,EAAQk3M,UACzCO,EAAYpuM,EAAMokM,UAAYztM,EAAQw9D,KAM1C,GAJAp/D,KAAKo0C,OAASnpC,GAITmuM,IAAkBD,GAAoC,GAAlBluM,EAAMujM,YAA2C6K,EACtFr5M,KAAK8qC,aACF,GAn+CG,EAm+CC7/B,EAAMujM,UACbxuM,KAAK8qC,QACL9qC,KAAKq3M,OAASrL,GAAkB,WAC5BhsM,KAAKoyB,MA1gBH,EA2gBFpyB,KAAKw4M,YACN52M,EAAQw9D,KAAMp/D,WACd,GAv+CC,EAu+CGiL,EAAMujM,UACb,OA9gBM,EAghBV,OAAO+H,IAGXzrK,MAAO,WACHv5B,aAAavR,KAAKq3M,SAGtBt2L,KAAM,SAAS9V,GAvhBD,IAwhBNjL,KAAKoyB,QAILnnB,GAt/CI,EAs/CMA,EAAMujM,UAChBxuM,KAAKmuM,QAAQptL,KAAK/gB,KAAK4B,QAAQsS,MAAQ,KAAMjJ,IAE7CjL,KAAKo0C,OAAOg7J,UAAY78L,IACxBvS,KAAKmuM,QAAQptL,KAAK/gB,KAAK4B,QAAQsS,MAAOlU,KAAKo0C,aAevDk4J,EAAQgL,GAAkBP,GAAgB,CAKtC9tM,SAAU,CACNiL,MAAO,SACP4kM,UAAW,EACXpK,SAAU,GAGdgH,eAAgB,WACZ,MAAO,CAACd,KAGZ+D,SAAU,SAAS1tM,GACf,OAAOjL,KAAKK,OAAOs4M,SAASj4M,KAAKV,KAAMiL,KAClCsY,KAAK6/B,IAAIn4C,EAAMykB,UAAY1vB,KAAK4B,QAAQk3M,WAlkBnC,EAkkBgD94M,KAAKoyB,UAcvEk6K,EAAQiL,GAAiBR,GAAgB,CAKrC9tM,SAAU,CACNiL,MAAO,QACP4kM,UAAW,GACX1I,SAAU,GACV1yK,UAAWq7K,GACXrK,SAAU,GAGdgH,eAAgB,WACZ,OAAOsB,GAAc92M,UAAUw1M,eAAeh1M,KAAKV,OAGvD24M,SAAU,SAAS1tM,GACf,IACImlM,EADA1yK,EAAY19B,KAAK4B,QAAQ87B,UAW7B,OARgB,GAAZA,EACA0yK,EAAWnlM,EAAM6kM,gBArjDFsG,EAsjDR14K,EACP0yK,EAAWnlM,EAAM+kM,iBAtjDJqG,GAujDN34K,IACP0yK,EAAWnlM,EAAMglM,kBAGdjwM,KAAKK,OAAOs4M,SAASj4M,KAAKV,KAAMiL,IACnCyyB,EAAYzyB,EAAM2kM,iBAClB3kM,EAAMunE,SAAWxyE,KAAK4B,QAAQk3M,WAC9B7tM,EAAMklM,aAAenwM,KAAK4B,QAAQ8sM,UAClCtrJ,EAAIgtJ,GAAYpwM,KAAK4B,QAAQwuM,UAzkDzB,EAykDqCnlM,EAAMujM,WAGvDztL,KAAM,SAAS9V,GACX,IAAIyyB,EAAYk5K,GAAa3rM,EAAM2kM,iBAC/BlyK,GACA19B,KAAKmuM,QAAQptL,KAAK/gB,KAAK4B,QAAQsS,MAAQwpB,EAAWzyB,GAGtDjL,KAAKmuM,QAAQptL,KAAK/gB,KAAK4B,QAAQsS,MAAOjJ,MA2B9CqhM,EAAQkL,GAAehB,GAAY,CAK/BvtM,SAAU,CACNiL,MAAO,MACPw6L,SAAU,EACV4K,KAAM,EACN5qG,SAAU,IACVtvC,KAAM,IACN05I,UAAW,EACXS,aAAc,IAGlB7D,eAAgB,WACZ,MAAO,CAACf,KAGZ7zL,QAAS,SAAS7V,GACd,IAAIrJ,EAAU5B,KAAK4B,QAEfu3M,EAAgBluM,EAAMyjM,SAASrtM,SAAWO,EAAQ8sM,SAClD0K,EAAgBnuM,EAAMunE,SAAW5wE,EAAQk3M,UACzCU,EAAiBvuM,EAAMokM,UAAYztM,EAAQw9D,KAI/C,GAFAp/D,KAAK8qC,QAzoDK,EA2oDL7/B,EAAMujM,WAA4C,IAAfxuM,KAAK61D,MACzC,OAAO71D,KAAKy5M,cAKhB,GAAIL,GAAiBI,GAAkBL,EAAe,CAClD,GAhpDI,GAgpDAluM,EAAMujM,UACN,OAAOxuM,KAAKy5M,cAGhB,IAAIC,GAAgB15M,KAAKy3M,OAASxsM,EAAMmkM,UAAYpvM,KAAKy3M,MAAQ71M,EAAQ8sG,SACrEirG,GAAiB35M,KAAK03M,SAAWnI,EAAYvvM,KAAK03M,QAASzsM,EAAMw+F,QAAU7nG,EAAQ23M,aAgBvF,GAdAv5M,KAAKy3M,MAAQxsM,EAAMmkM,UACnBpvM,KAAK03M,QAAUzsM,EAAMw+F,OAEhBkwG,GAAkBD,EAGnB15M,KAAK61D,OAAS,EAFd71D,KAAK61D,MAAQ,EAKjB71D,KAAKo0C,OAASnpC,EAKG,GADFjL,KAAK61D,MAAQj0D,EAAQ03M,KAIhC,OAAKt5M,KAAKq4M,sBAGNr4M,KAAKq3M,OAASrL,GAAkB,WAC5BhsM,KAAKoyB,MAltBX,EAmtBMpyB,KAAKw4M,YACN52M,EAAQ8sG,SAAU1uG,MAttBvB,GAEA,EAytBV,OAAOu2M,IAGXkD,YAAa,WAIT,OAHAz5M,KAAKq3M,OAASrL,GAAkB,WAC5BhsM,KAAKoyB,MAAQmkL,KACdv2M,KAAK4B,QAAQ8sG,SAAU1uG,MACnBu2M,IAGXzrK,MAAO,WACHv5B,aAAavR,KAAKq3M,SAGtBt2L,KAAM,WAvuBQ,GAwuBN/gB,KAAKoyB,QACLpyB,KAAKo0C,OAAOwlK,SAAW55M,KAAK61D,MAC5B71D,KAAKmuM,QAAQptL,KAAK/gB,KAAK4B,QAAQsS,MAAOlU,KAAKo0C,YAoBvDujK,GAAOkC,QAAU,QAMjBlC,GAAO1uM,SAAW,CAOd6wM,WAAW,EAQXl4H,YAAa6yH,GAMbzd,QAAQ,EASRoX,YAAa,KAOb0J,WAAY,KAOZrtD,OAAQ,CAEJ,CAAC6sD,GAAkB,CAACtgB,QAAQ,IAC5B,CAACmgB,GAAiB,CAACngB,QAAQ,GAAQ,CAAC,WACpC,CAACugB,GAAiB,CAAC75K,UArwDA04K,IAswDnB,CAACY,GAAe,CAACt5K,UAtwDE04K,GAswDgC,CAAC,UACpD,CAACoB,IACD,CAACA,GAAe,CAACtjM,MAAO,YAAaolM,KAAM,GAAI,CAAC,QAChD,CAAClC,KAQLc,SAAU,CAMN1gD,WAAY,OAOZuiD,YAAa,OASbC,aAAc,OAOdC,eAAgB,OAOhBC,SAAU,OAQVC,kBAAmB,kBAoC3BvC,GAAQ13M,UAAY,CAMhBua,IAAK,SAAS7Y,GAaV,OAZAb,EAAOf,KAAK4B,QAASA,GAGjBA,EAAQggF,aACR5hF,KAAK4hF,YAAYp1B,SAEjB5qD,EAAQwsM,cAERpuM,KAAKiL,MAAM84B,UACX/jC,KAAKiL,MAAMkG,OAASvP,EAAQwsM,YAC5BpuM,KAAKiL,MAAM69L,QAER9oM,MASX4O,KAAM,SAASkW,GACX9kB,KAAK8uM,QAAQsL,QAAUt1L,EA5Db,EADP,GAsEP6rL,UAAW,SAASwD,GAChB,IAAIrF,EAAU9uM,KAAK8uM,QACnB,IAAIA,EAAQsL,QAAZ,CAOA,IAAI3E,EAFJz1M,KAAK4hF,YAAYk0H,gBAAgB3B,GAGjC,IAAIqB,EAAcx1M,KAAKw1M,YAKnB6E,EAAgBvL,EAAQuL,gBAIvBA,GAAkBA,GAz8Bb,EAy8B8BA,EAAcjoL,SAClDioL,EAAgBvL,EAAQuL,cAAgB,MAI5C,IADA,IAAIn5M,EAAI,EACDA,EAAIs0M,EAAYn0M,QACnBo0M,EAAaD,EAAYt0M,GA9FnB,IAsGF4tM,EAAQsL,SACHC,GAAiB5E,GAAc4E,IAChC5E,EAAW6C,iBAAiB+B,GAGhC5E,EAAW3qK,QAFX2qK,EAAW9E,UAAUwD,IAOpBkG,GAAoC,GAAnB5E,EAAWrjL,QAC7BioL,EAAgBvL,EAAQuL,cAAgB5E,GAE5Cv0M,MASRQ,IAAK,SAAS+zM,GACV,GAAIA,aAAsBe,GACtB,OAAOf,EAIX,IADA,IAAID,EAAcx1M,KAAKw1M,YACdt0M,EAAI,EAAGA,EAAIs0M,EAAYn0M,OAAQH,IACpC,GAAIs0M,EAAYt0M,GAAGU,QAAQsS,OAASuhM,EAChC,OAAOD,EAAYt0M,GAG3B,OAAO,MASX8gE,IAAK,SAASyzI,GACV,GAAIvJ,EAAeuJ,EAAY,MAAOz1M,MAClC,OAAOA,KAIX,IAAIk+C,EAAWl+C,KAAK0B,IAAI+zM,EAAW7zM,QAAQsS,OAS3C,OARIgqC,GACAl+C,KAAK+hE,OAAO7jB,GAGhBl+C,KAAKw1M,YAAY3vM,KAAK4vM,GACtBA,EAAWtH,QAAUnuM,KAErBA,KAAK4hF,YAAYp1B,SACVipJ,GAQX1zI,OAAQ,SAAS0zI,GACb,GAAIvJ,EAAeuJ,EAAY,SAAUz1M,MACrC,OAAOA,KAMX,GAHAy1M,EAAaz1M,KAAK0B,IAAI+zM,GAGN,CACZ,IAAID,EAAcx1M,KAAKw1M,YACnB/tM,EAAQ2lM,EAAQoI,EAAaC,IAElB,IAAXhuM,IACA+tM,EAAY7tM,OAAOF,EAAO,GAC1BzH,KAAK4hF,YAAYp1B,UAIzB,OAAOxsD,MASX4P,GAAI,SAAS08B,EAAQgC,GACjB,GAAIhC,IAAW57B,GAGX49B,IAAY59B,EAAhB,CAIA,IAAIV,EAAWhQ,KAAKgQ,SAKpB,OAJAwzK,EAAKwpB,EAAS1gK,IAAS,SAASp4B,GAC5BlE,EAASkE,GAASlE,EAASkE,IAAU,GACrClE,EAASkE,GAAOrO,KAAKyoC,MAElBtuC,OASX+P,IAAK,SAASu8B,EAAQgC,GAClB,GAAIhC,IAAW57B,EAAf,CAIA,IAAIV,EAAWhQ,KAAKgQ,SAQpB,OAPAwzK,EAAKwpB,EAAS1gK,IAAS,SAASp4B,GACvBo6B,EAGDt+B,EAASkE,IAAUlE,EAASkE,GAAOvM,OAAOylM,EAAQp9L,EAASkE,GAAQo6B,GAAU,UAFtEt+B,EAASkE,MAKjBlU,OAQX+gB,KAAM,SAAS7M,EAAOpR,GAEd9C,KAAK4B,QAAQk4M,WAkEzB,SAAyB5lM,EAAOpR,GAC5B,IAAIw3M,EAAe3iM,EAAS4iM,YAAY,SACxCD,EAAaE,UAAUtmM,GAAO,GAAM,GACpComM,EAAaG,QAAU33M,EACvBA,EAAKqO,OAAOmvB,cAAcg6K,GArElBI,CAAgBxmM,EAAOpR,GAI3B,IAAIkN,EAAWhQ,KAAKgQ,SAASkE,IAAUlU,KAAKgQ,SAASkE,GAAOhI,QAC5D,GAAK8D,GAAaA,EAAS3O,OAA3B,CAIAyB,EAAKwJ,KAAO4H,EACZpR,EAAKm+B,eAAiB,WAClBn+B,EAAK2tM,SAASxvK,kBAIlB,IADA,IAAI//B,EAAI,EACDA,EAAI8O,EAAS3O,QAChB2O,EAAS9O,GAAG4B,GACZ5B,MAQR6iC,QAAS,WACL/jC,KAAK6e,SAAWk5L,GAAe/3M,MAAM,GAErCA,KAAKgQ,SAAW,GAChBhQ,KAAK8uM,QAAU,GACf9uM,KAAKiL,MAAM84B,UACX/jC,KAAK6e,QAAU,OAyCvB9d,EAAO42M,GAAQ,CACXgD,YAtoEc,EAuoEdC,WAtoEa,EAuoEbC,UAtoEY,EAuoEZC,aAtoEe,EAwoEfC,eAlrCiB,EAmrCjBC,YAlrCc,EAmrCdC,cAlrCgB,EAmrChBC,YAlrCc,EAmrCdC,iBAnrCc,EAorCdC,gBAlrCkB,GAmrClB7E,aAAcA,GAEd8E,eA9oEiB,EA+oEjBjF,eA9oEiB,EA+oEjBkF,gBA9oEkB,EA+oElBjF,aA9oEe,EA+oEfkF,eA9oEiB,GA+oEjBxC,qBA7oEuB3C,EA8oEvBoF,mBA7oEqBnF,GA8oErBoF,cA7oEgB1C,GA+oEhBnB,QAASA,GACTt4J,MAAOA,EACP+1J,YAAaA,GAEbnC,WAAYA,GACZ9B,WAAYA,EACZW,kBAAmBA,GACnB0B,gBAAiBA,GACjBZ,iBAAkBA,GAElB2D,WAAYA,GACZO,eAAgBA,GAChB2E,IAAKlE,GACLmE,IAAK3E,GACL4E,MAAOrE,GACPsE,MAAO1E,GACP2E,OAAQxE,GACRyE,MAAO3E,GAEPxnM,GAAIk9L,EACJ/8L,IAAKk9L,EACLzpB,KAAMA,EACNlqJ,MAAOA,EACP64D,OAAQA,EACRpxF,OAAQA,EACRurM,QAASA,EACTL,OAAQA,EACRsB,SAAUA,UAKsB,IAAXj6L,EAAyBA,EAA0B,oBAAT0F,KAAuBA,KAAO,IACtF2+L,OAASA,IAGhB,aACI,OAAOA,IACV,kCAtkFL,CA6kFGrkM,OAAQqE,uCChlFX,IAAIqkM,EAA+B,oBAAX32M,QAA0BA,OAC9C42M,EAAgB,EAAQ,MAE5BnjM,EAAOC,QAAU,WAChB,MAA0B,mBAAfijM,GACW,mBAAX32M,QACsB,iBAAtB22M,EAAW,QACO,iBAAlB32M,OAAO,QAEX42M,4BCRRnjM,EAAOC,QAAU,WAChB,GAAsB,mBAAX1T,QAAiE,mBAAjC9F,OAAOsa,sBAAwC,OAAO,EACjG,GAA+B,iBAApBxU,OAAOC,SAAyB,OAAO,EAElD,IAAI4T,EAAM,GACNc,EAAM3U,OAAO,QACb62M,EAAS38M,OAAOya,GACpB,GAAmB,iBAARA,EAAoB,OAAO,EAEtC,GAA4C,oBAAxCza,OAAOW,UAAUsD,SAAS9C,KAAKsZ,GAA8B,OAAO,EACxE,GAA+C,oBAA3Cza,OAAOW,UAAUsD,SAAS9C,KAAKw7M,GAAiC,OAAO,EAY3E,IAAKliM,KADLd,EAAIc,GADS,GAEDd,EAAO,OAAO,EAC1B,GAA2B,mBAAhB3Z,OAAO6K,MAAmD,IAA5B7K,OAAO6K,KAAK8O,GAAK7X,OAAgB,OAAO,EAEjF,GAA0C,mBAA/B9B,OAAOkzD,qBAAiF,IAA3ClzD,OAAOkzD,oBAAoBv5C,GAAK7X,OAAgB,OAAO,EAE/G,IAAI86M,EAAO58M,OAAOsa,sBAAsBX,GACxC,GAAoB,IAAhBijM,EAAK96M,QAAgB86M,EAAK,KAAOniM,EAAO,OAAO,EAEnD,IAAKza,OAAOW,UAAU6tB,qBAAqBrtB,KAAKwY,EAAKc,GAAQ,OAAO,EAEpE,GAA+C,mBAApCza,OAAO0a,yBAAyC,CAC1D,IAAI+B,EAAazc,OAAO0a,yBAAyBf,EAAKc,GACtD,GAdY,KAcRgC,EAAWrW,QAA8C,IAA1BqW,EAAWjO,WAAuB,OAAO,EAG7E,OAAO,gCCtCR,IAAI2iB,EAAO,EAAQ,MAEnB5X,EAAOC,QAAU2X,EAAKhwB,KAAK0sI,SAAS1sI,KAAMnB,OAAOW,UAAUJ,wHCJ3D,SAASs8M,EAAW78B,GAClB,MAA8B,MAAvBA,EAAS7wJ,OAAO,GAIzB,SAASy8K,EAAU/gK,EAAM3iC,GACvB,IAAK,IAAIvG,EAAIuG,EAAOitE,EAAIxzE,EAAI,EAAGC,EAAIipC,EAAK/oC,OAAQqzE,EAAIvzE,EAAGD,GAAK,EAAGwzE,GAAK,EAClEtqC,EAAKlpC,GAAKkpC,EAAKsqC,GAGjBtqC,EAAKxkC,MCVP,SAAS,EAAQsT,GACf,OAAOA,EAAI6tL,QAAU7tL,EAAI6tL,UAAYxnM,OAAOW,UAAU6mM,QAAQrmM,KAAKwY,GAkCrE,QA/BA,SAASmjM,EAAWv0L,EAAGloB,GAErB,GAAIkoB,IAAMloB,EAAG,OAAO,EAGpB,GAAS,MAALkoB,GAAkB,MAALloB,EAAW,OAAO,EAEnC,GAAIF,MAAMyc,QAAQ2L,GAChB,OACEpoB,MAAMyc,QAAQvc,IACdkoB,EAAEzmB,SAAWzB,EAAEyB,QACfymB,EAAEmkE,OAAM,SAASllF,EAAMU,GACrB,OAAO40M,EAAWt1M,EAAMnH,EAAE6H,OAKhC,GAAiB,iBAANqgB,GAA+B,iBAANloB,EAAgB,CAClD,IAAI08M,EAAS,EAAQx0L,GACjBy0L,EAAS,EAAQ38M,GAErB,OAAI08M,IAAWx0L,GAAKy0L,IAAW38M,EAAUy8M,EAAWC,EAAQC,GAErDh9M,OAAO6K,KAAK7K,OAAOwB,OAAO,GAAI+mB,EAAGloB,IAAIqsF,OAAM,SAAS56E,GACzD,OAAOgrM,EAAWv0L,EAAEzW,GAAMzR,EAAEyR,OAIhC,OAAO,iBC1BT,SAASmrM,EAAgBh4L,GACvB,MAA0B,MAAnBA,EAAKkK,OAAO,GAAalK,EAAO,IAAMA,EAE/C,SAASi4L,EAAkBj4L,GACzB,MAA0B,MAAnBA,EAAKkK,OAAO,GAAalK,EAAK/gB,OAAO,GAAK+gB,EAKnD,SAASk4L,EAAcl4L,EAAM7J,GAC3B,OAJF,SAAqB6J,EAAM7J,GACzB,OAA4D,IAArD6J,EAAK1U,cAAcpI,QAAQiT,EAAO7K,iBAAuE,IAA/C,MAAMpI,QAAQ8c,EAAKkK,OAAO/T,EAAOtZ,SAG3Fs7M,CAAYn4L,EAAM7J,GAAU6J,EAAK/gB,OAAOkX,EAAOtZ,QAAUmjB,EAElE,SAASo4L,EAAmBp4L,GAC1B,MAAwC,MAAjCA,EAAKkK,OAAOlK,EAAKnjB,OAAS,GAAamjB,EAAKtY,MAAM,GAAI,GAAKsY,EA0BpE,SAASq4L,EAAW57F,GAClB,IAAIs+D,EAAWt+D,EAASs+D,SACpB7tI,EAASuvE,EAASvvE,OAClBszD,EAAOic,EAASjc,KAChBxgF,EAAO+6J,GAAY,IAGvB,OAFI7tI,GAAqB,MAAXA,IAAgBltB,GAA6B,MAArBktB,EAAOhjB,OAAO,GAAagjB,EAAS,IAAMA,GAC5EszD,GAAiB,MAATA,IAAcxgF,GAA2B,MAAnBwgF,EAAKt2E,OAAO,GAAas2E,EAAO,IAAMA,GACjExgF,EAGT,SAASs4L,EAAet4L,EAAM4N,EAAO/gB,EAAKuiK,GACxC,IAAI3yD,EAEgB,iBAATz8F,GAETy8F,EAvCJ,SAAmBz8F,GACjB,IAAI+6J,EAAW/6J,GAAQ,IACnBktB,EAAS,GACTszD,EAAO,GACPyf,EAAY86D,EAAS73K,QAAQ,MAEd,IAAf+8G,IACFzf,EAAOu6E,EAAS97K,OAAOghH,GACvB86D,EAAWA,EAAS97K,OAAO,EAAGghH,IAGhC,IAAIs4F,EAAcx9B,EAAS73K,QAAQ,KAOnC,OALqB,IAAjBq1M,IACFrrK,EAAS6tI,EAAS97K,OAAOs5M,GACzBx9B,EAAWA,EAAS97K,OAAO,EAAGs5M,IAGzB,CACLx9B,SAAUA,EACV7tI,OAAmB,MAAXA,EAAiB,GAAKA,EAC9BszD,KAAe,MAATA,EAAe,GAAKA,GAkBfg4G,CAAUx4L,GACrBy8F,EAAS7uF,MAAQA,SAIS1hB,KAD1BuwG,GAAW,OAAS,GAAIz8F,IACX+6J,WAAwBt+D,EAASs+D,SAAW,IAErDt+D,EAASvvE,OACuB,MAA9BuvE,EAASvvE,OAAOhjB,OAAO,KAAYuyF,EAASvvE,OAAS,IAAMuvE,EAASvvE,QAExEuvE,EAASvvE,OAAS,GAGhBuvE,EAASjc,KACqB,MAA5Bic,EAASjc,KAAKt2E,OAAO,KAAYuyF,EAASjc,KAAO,IAAMic,EAASjc,MAEpEic,EAASjc,KAAO,QAGJt0F,IAAV0hB,QAA0C1hB,IAAnBuwG,EAAS7uF,QAAqB6uF,EAAS7uF,MAAQA,IAG5E,IACE6uF,EAASs+D,SAAW8mB,UAAUplF,EAASs+D,UACvC,MAAOz5K,GACP,MAAIA,aAAa2hM,SACT,IAAIA,SAAS,aAAexmF,EAASs+D,SAAxB,iFAEbz5K,EAoBV,OAhBIuL,IAAK4vG,EAAS5vG,IAAMA,GAEpBuiK,EAEG3yD,EAASs+D,SAE6B,MAAhCt+D,EAASs+D,SAAS7wJ,OAAO,KAClCuyF,EAASs+D,SFrFf,SAAyB9nK,EAAIpO,QACdqH,IAATrH,IAAoBA,EAAO,IAE/B,IAkBI4zM,EAlBAC,EAAWzlM,GAAMA,EAAGtM,MAAM,MAAS,GACnCgyM,EAAa9zM,GAAQA,EAAK8B,MAAM,MAAS,GAEzCiyM,EAAU3lM,GAAM2kM,EAAW3kM,GAC3B4lM,EAAYh0M,GAAQ+yM,EAAW/yM,GAC/Bi0M,EAAaF,GAAWC,EAW5B,GATI5lM,GAAM2kM,EAAW3kM,GAEnB0lM,EAAYD,EACHA,EAAQ77M,SAEjB87M,EAAUv3M,MACVu3M,EAAYA,EAAUrjM,OAAOojM,KAG1BC,EAAU97M,OAAQ,MAAO,IAG9B,GAAI87M,EAAU97M,OAAQ,CACpB,IAAIsuC,EAAOwtK,EAAUA,EAAU97M,OAAS,GACxC47M,EAA4B,MAATttK,GAAyB,OAATA,GAA0B,KAATA,OAEpDstK,GAAmB,EAIrB,IADA,IAAIv9K,EAAK,EACAx+B,EAAIi8M,EAAU97M,OAAQH,GAAK,EAAGA,IAAK,CAC1C,IAAI0kE,EAAOu3I,EAAUj8M,GAER,MAAT0kE,EACFulI,EAAUgS,EAAWj8M,GACH,OAAT0kE,GACTulI,EAAUgS,EAAWj8M,GACrBw+B,KACSA,IACTyrK,EAAUgS,EAAWj8M,GACrBw+B,KAIJ,IAAK49K,EAAY,KAAO59K,IAAMA,EAAIy9K,EAAU//J,QAAQ,OAGlDkgK,GACiB,KAAjBH,EAAU,IACRA,EAAU,IAAOf,EAAWe,EAAU,KAExCA,EAAU//J,QAAQ,IAEpB,IAAI32C,EAAS02M,EAAUl3L,KAAK,KAI5B,OAFIg3L,GAA0C,MAAtBx2M,EAAOhD,QAAQ,KAAYgD,GAAU,KAEtDA,EE4BiB,CAAgBw6G,EAASs+D,SAAU3L,EAAgB2L,WAFvEt+D,EAASs+D,SAAW3L,EAAgB2L,SAMjCt+D,EAASs+D,WACZt+D,EAASs+D,SAAW,KAIjBt+D,EAET,SAASs8F,EAAkBz1L,EAAGloB,GAC5B,OAAOkoB,EAAEy3J,WAAa3/K,EAAE2/K,UAAYz3J,EAAE4pB,SAAW9xC,EAAE8xC,QAAU5pB,EAAEk9E,OAASplG,EAAEolG,MAAQl9E,EAAEzW,MAAQzR,EAAEyR,KAAO,EAAWyW,EAAEsK,MAAOxyB,EAAEwyB,OAG7H,SAASorL,IACP,IAAIxuD,EAAS,KAiCT87C,EAAY,GA4BhB,MAAO,CACL2S,UA5DF,SAAmBC,GAGjB,OADA1uD,EAAS0uD,EACF,WACD1uD,IAAW0uD,IAAY1uD,EAAS,QAyDtC2uD,oBArDF,SAA6B18F,EAAUnwD,EAAQ8sJ,EAAqB1tM,GAIlE,GAAc,MAAV8+I,EAAgB,CAClB,IAAIvoJ,EAA2B,mBAAXuoJ,EAAwBA,EAAO/tC,EAAUnwD,GAAUk+F,EAEjD,iBAAXvoJ,EAC0B,mBAAxBm3M,EACTA,EAAoBn3M,EAAQyJ,GAG5BA,GAAS,GAIXA,GAAoB,IAAXzJ,QAGXyJ,GAAS,IAmCX2tM,eA7BF,SAAwBt9L,GACtB,IAAImhD,GAAW,EAEf,SAASrhD,IACHqhD,GAAUnhD,EAAG5Z,WAAM,EAAQvF,WAIjC,OADA0pM,EAAUjlM,KAAKwa,GACR,WACLqhD,GAAW,EACXopI,EAAYA,EAAU/wL,QAAO,SAAUhT,GACrC,OAAOA,IAASsZ,OAmBpBy9L,gBAdF,WACE,IAAK,IAAIpzL,EAAOtpB,UAAUC,OAAQ2N,EAAO,IAAItP,MAAMgrB,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC/E3b,EAAK2b,GAAQvpB,UAAUupB,GAGzBmgL,EAAUxnM,SAAQ,SAAU+c,GAC1B,OAAOA,EAAS1Z,WAAM,EAAQqI,QAYpC,IAAI6xB,IAAiC,oBAAXvtB,SAA0BA,OAAOqE,WAAYrE,OAAOqE,SAASE,eACvF,SAASkmM,EAAgB91M,EAASiI,GAChCA,EAASoD,OAAO0qM,QAAQ/1M,IAwC1B,IAAIg2M,EAAgB,WAChBC,EAAkB,aAEtB,SAASC,IACP,IACE,OAAO7qM,OAAO8qM,QAAQhsL,OAAS,GAC/B,MAAOtsB,GAGP,MAAO,IASX,SAASu4M,EAAqBtiM,QACd,IAAVA,IACFA,EAAQ,IAGT8kB,IAAsG,QAAU,GACjH,IArDIy9K,EAqDAC,EAAgBjrM,OAAO8qM,QACvBI,IArD+B,KAD/BF,EAAKhrM,OAAO+J,UAAUC,WAClB5V,QAAQ,gBAAuD,IAA/B42M,EAAG52M,QAAQ,iBAA2D,IAAjC42M,EAAG52M,QAAQ,mBAAqD,IAA1B42M,EAAG52M,QAAQ,YAAqD,IAAjC42M,EAAG52M,QAAQ,mBACtJ4L,OAAO8qM,SAAW,cAAe9qM,OAAO8qM,QAqD3CK,KA7CsD,IAAnDnrM,OAAO+J,UAAUC,UAAU5V,QAAQ,YA8CtCm3C,EAAS9iC,EACT2iM,EAAsB7/J,EAAO8/J,aAC7BA,OAAuC,IAAxBD,GAAyCA,EACxDE,EAAwB//J,EAAO++J,oBAC/BA,OAAgD,IAA1BgB,EAAmCb,EAAkBa,EAC3EC,EAAmBhgK,EAAOigK,UAC1BA,OAAiC,IAArBD,EAA8B,EAAIA,EAC9CE,EAAWhjM,EAAMgjM,SAAWnC,EAAmBJ,EAAgBzgM,EAAMgjM,WAAa,GAEtF,SAASC,EAAeC,GACtB,IAAIxgM,EAAOwgM,GAAgB,GACvB5tM,EAAMoN,EAAKpN,IACX+gB,EAAQ3T,EAAK2T,MAEb8sL,EAAmB5rM,OAAO2tG,SAI1Bz8F,EAHW06L,EAAiB3/B,SACnB2/B,EAAiBxtK,OACnBwtK,EAAiBl6G,KAI5B,OADI+5G,IAAUv6L,EAAOk4L,EAAcl4L,EAAMu6L,IAClCjC,EAAet4L,EAAM4N,EAAO/gB,GAGrC,SAAS8tM,IACP,OAAO57L,KAAKC,SAAShgB,SAAS,IAAIC,OAAO,EAAGq7M,GAG9C,IAAIM,EAAoB5B,IAExB,SAAS3+K,EAASgvC,IAChB,OAASuwI,EAASvwI,GAElBuwI,EAAQ/8M,OAASk9M,EAAcl9M,OAC/B+9M,EAAkBtB,gBAAgBM,EAAQn9F,SAAUm9F,EAAQttJ,QAG9D,SAASuuJ,EAAenrM,IApE1B,SAAmCA,GACjC,YAAuBxD,IAAhBwD,EAAMke,QAAiE,IAA1C/U,UAAUC,UAAU5V,QAAQ,UAqE1D43M,CAA0BprM,IAC9BqrM,EAAUP,EAAe9qM,EAAMke,QAGjC,SAASotL,IACPD,EAAUP,EAAeb,MAG3B,IAAIsB,GAAe,EAEnB,SAASF,EAAUt+F,GACbw+F,GACFA,GAAe,EACf5gL,KAGAugL,EAAkBzB,oBAAoB18F,EADzB,MAC2C28F,GAAqB,SAAU8B,GACjFA,EACF7gL,EAAS,CACPiyB,OAJO,MAKPmwD,SAAUA,IASpB,SAAmB0+F,GACjB,IAAIC,EAAaxB,EAAQn9F,SAIrB4+F,EAAUC,EAAQp4M,QAAQk4M,EAAWvuM,MACxB,IAAbwuM,IAAgBA,EAAU,GAC9B,IAAIr3B,EAAYs3B,EAAQp4M,QAAQi4M,EAAatuM,MAC1B,IAAfm3K,IAAkBA,EAAY,GAClC,IAAI1oF,EAAQ+/G,EAAUr3B,EAElB1oF,IACF2/G,GAAe,EACfM,EAAGjgH,IAnBCkgH,CAAU/+F,MAuBlB,IAAIg/F,EAAkBjB,EAAeb,KACjC2B,EAAU,CAACG,EAAgB5uM,KAE/B,SAAS6uM,EAAWj/F,GAClB,OAAO89F,EAAWlC,EAAW57F,GAuE/B,SAAS8+F,EAAG5+M,GACVo9M,EAAcwB,GAAG5+M,GAWnB,IAAIqpM,EAAgB,EAEpB,SAAS2V,EAAkBrgH,GAGH,KAFtB0qG,GAAiB1qG,IAEoB,IAAVA,GACzBxsF,OAAOuK,iBAAiBogM,EAAeoB,GACnCZ,GAAyBnrM,OAAOuK,iBAAiBqgM,EAAiBsB,IAC3C,IAAlBhV,IACTl3L,OAAOgN,oBAAoB29L,EAAeoB,GACtCZ,GAAyBnrM,OAAOgN,oBAAoB49L,EAAiBsB,IAI7E,IAAIY,GAAY,EAiCZhC,EAAU,CACZ/8M,OAAQk9M,EAAcl9M,OACtByvD,OAAQ,MACRmwD,SAAUg/F,EACVC,WAAYA,EACZr6M,KApIF,SAAc2e,EAAM4N,GAElB,IAAI0+B,EAAS,OACTmwD,EAAW67F,EAAet4L,EAAM4N,EAAO+sL,IAAaf,EAAQn9F,UAChEm+F,EAAkBzB,oBAAoB18F,EAAUnwD,EAAQ8sJ,GAAqB,SAAU8B,GACrF,GAAKA,EAAL,CACA,IAAI5nM,EAAOooM,EAAWj/F,GAClB5vG,EAAM4vG,EAAS5vG,IACf+gB,EAAQ6uF,EAAS7uF,MAErB,GAAIosL,EAMF,GALAD,EAAc8B,UAAU,CACtBhvM,IAAKA,EACL+gB,MAAOA,GACN,KAAMta,GAEL6mM,EACFrrM,OAAO2tG,SAASnpG,KAAOA,MAClB,CACL,IAAIwnE,EAAYwgI,EAAQp4M,QAAQ02M,EAAQn9F,SAAS5vG,KAC7CivM,EAAWR,EAAQ5zM,MAAM,EAAGozE,EAAY,GAC5CghI,EAASz6M,KAAKo7G,EAAS5vG,KACvByuM,EAAUQ,EACVzhL,EAAS,CACPiyB,OAAQA,EACRmwD,SAAUA,SAKd3tG,OAAO2tG,SAASnpG,KAAOA,OAuG3B/D,QAlGF,SAAiByQ,EAAM4N,GAErB,IAAI0+B,EAAS,UACTmwD,EAAW67F,EAAet4L,EAAM4N,EAAO+sL,IAAaf,EAAQn9F,UAChEm+F,EAAkBzB,oBAAoB18F,EAAUnwD,EAAQ8sJ,GAAqB,SAAU8B,GACrF,GAAKA,EAAL,CACA,IAAI5nM,EAAOooM,EAAWj/F,GAClB5vG,EAAM4vG,EAAS5vG,IACf+gB,EAAQ6uF,EAAS7uF,MAErB,GAAIosL,EAMF,GALAD,EAAcgC,aAAa,CACzBlvM,IAAKA,EACL+gB,MAAOA,GACN,KAAMta,GAEL6mM,EACFrrM,OAAO2tG,SAASltG,QAAQ+D,OACnB,CACL,IAAIwnE,EAAYwgI,EAAQp4M,QAAQ02M,EAAQn9F,SAAS5vG,MAC9B,IAAfiuE,IAAkBwgI,EAAQxgI,GAAa2hC,EAAS5vG,KACpDwtB,EAAS,CACPiyB,OAAQA,EACRmwD,SAAUA,SAKd3tG,OAAO2tG,SAASltG,QAAQ+D,QAuE5BioM,GAAIA,EACJS,OA/DF,WACET,GAAI,IA+DJU,UA5DF,WACEV,EAAG,IA4DHW,MAzCF,SAAe1xD,QACE,IAAXA,IACFA,GAAS,GAGX,IAAI2xD,EAAUvB,EAAkB3B,UAAUzuD,GAO1C,OALKoxD,IACHD,EAAkB,GAClBC,GAAY,GAGP,WAML,OALIA,IACFA,GAAY,EACZD,GAAmB,IAGdQ,MAwBTC,OApBF,SAAgBvgM,GACd,IAAIwgM,EAAWzB,EAAkBvB,eAAex9L,GAEhD,OADA8/L,EAAkB,GACX,WACLA,GAAmB,GACnBU,OAiBJ,OAAOzC,EAGT,IAAI0C,EAAoB,aACpBC,EAAiB,CACnBC,SAAU,CACRC,WAAY,SAAoBz8L,GAC9B,MAA0B,MAAnBA,EAAKkK,OAAO,GAAalK,EAAO,KAAOi4L,EAAkBj4L,IAElE08L,WAAY,SAAoB18L,GAC9B,MAA0B,MAAnBA,EAAKkK,OAAO,GAAalK,EAAK/gB,OAAO,GAAK+gB,IAGrD28L,QAAS,CACPF,WAAYxE,EACZyE,WAAY1E,GAEd4E,MAAO,CACLH,WAAYzE,EACZ0E,WAAY1E,IAIhB,SAAS6E,EAAU1/M,GACjB,IAAI8iH,EAAY9iH,EAAI+F,QAAQ,KAC5B,OAAsB,IAAf+8G,EAAmB9iH,EAAMA,EAAIuK,MAAM,EAAGu4G,GAG/C,SAAS68F,IAGP,IAAIxpM,EAAOxE,OAAO2tG,SAASnpG,KACvB2sG,EAAY3sG,EAAKpQ,QAAQ,KAC7B,OAAsB,IAAf+8G,EAAmB,GAAK3sG,EAAKzL,UAAUo4G,EAAY,GAO5D,SAAS88F,EAAgB/8L,GACvBlR,OAAO2tG,SAASltG,QAAQstM,EAAU/tM,OAAO2tG,SAASnpG,MAAQ,IAAM0M,GAGlE,SAASg9L,EAAkBzlM,QACX,IAAVA,IACFA,EAAQ,IAGT8kB,IAAmG,QAAU,GAC9G,IAAI09K,EAAgBjrM,OAAO8qM,QAEvBv/J,GAnUGvrC,OAAO+J,UAAUC,UAAU5V,QAAQ,WAmU7BqU,GACT6iM,EAAwB//J,EAAO++J,oBAC/BA,OAAgD,IAA1BgB,EAAmCb,EAAkBa,EAC3E6C,EAAkB5iK,EAAO6iK,SACzBA,OAA+B,IAApBD,EAA6B,QAAUA,EAClD1C,EAAWhjM,EAAMgjM,SAAWnC,EAAmBJ,EAAgBzgM,EAAMgjM,WAAa,GAClF4C,EAAwBZ,EAAeW,GACvCT,EAAaU,EAAsBV,WACnCC,EAAaS,EAAsBT,WAEvC,SAASlC,IACP,IAAIx6L,EAAO08L,EAAWI,KAGtB,OADIvC,IAAUv6L,EAAOk4L,EAAcl4L,EAAMu6L,IAClCjC,EAAet4L,GAGxB,IAAI46L,EAAoB5B,IAExB,SAAS3+K,EAASgvC,IAChB,OAASuwI,EAASvwI,GAElBuwI,EAAQ/8M,OAASk9M,EAAcl9M,OAC/B+9M,EAAkBtB,gBAAgBM,EAAQn9F,SAAUm9F,EAAQttJ,QAG9D,IAAI2uJ,GAAe,EACfmC,EAAa,KAMjB,SAASpC,IACP,IAL4B13L,EAAGloB,EAK3B4kB,EAAO88L,IACPO,EAAcZ,EAAWz8L,GAE7B,GAAIA,IAASq9L,EAEXN,EAAgBM,OACX,CACL,IAAI5gG,EAAW+9F,IACX8C,EAAe1D,EAAQn9F,SAC3B,IAAKw+F,IAdwB7/M,EAc2BqhH,GAd9Bn5F,EAcgBg6L,GAbnCviC,WAAa3/K,EAAE2/K,UAAYz3J,EAAE4pB,SAAW9xC,EAAE8xC,QAAU5pB,EAAEk9E,OAASplG,EAAEolG,MAaL,OAEnE,GAAI48G,IAAe/E,EAAW57F,GAAW,OAEzC2gG,EAAa,KAKjB,SAAmB3gG,GACjB,GAAIw+F,EACFA,GAAe,EACf5gL,QACK,CAELugL,EAAkBzB,oBAAoB18F,EADzB,MAC2C28F,GAAqB,SAAU8B,GACjFA,EACF7gL,EAAS,CACPiyB,OAJO,MAKPmwD,SAAUA,IASpB,SAAmB0+F,GACjB,IAAIC,EAAaxB,EAAQn9F,SAIrB4+F,EAAUkC,EAASrqM,YAAYmlM,EAAW+C,KAC7B,IAAbC,IAAgBA,EAAU,GAC9B,IAAIr3B,EAAYu5B,EAASrqM,YAAYmlM,EAAW8C,KAC7B,IAAfn3B,IAAkBA,EAAY,GAClC,IAAI1oF,EAAQ+/G,EAAUr3B,EAElB1oF,IACF2/G,GAAe,EACfM,EAAGjgH,IAnBCkgH,CAAU/+F,OAjBds+F,CAAUt+F,IAyCd,IAAIz8F,EAAO88L,IACPO,EAAcZ,EAAWz8L,GACzBA,IAASq9L,GAAaN,EAAgBM,GAC1C,IAAI5B,EAAkBjB,IAClB+C,EAAW,CAAClF,EAAWoD,IAuE3B,SAASF,EAAG5+M,GAEVo9M,EAAcwB,GAAG5+M,GAWnB,IAAIqpM,EAAgB,EAEpB,SAAS2V,EAAkBrgH,GAGH,KAFtB0qG,GAAiB1qG,IAEoB,IAAVA,EACzBxsF,OAAOuK,iBAAiBijM,EAAmBtB,GAChB,IAAlBhV,GACTl3L,OAAOgN,oBAAoBwgM,EAAmBtB,GAIlD,IAAIY,GAAY,EAiCZhC,EAAU,CACZ/8M,OAAQk9M,EAAcl9M,OACtByvD,OAAQ,MACRmwD,SAAUg/F,EACVC,WAnIF,SAAoBj/F,GAClB,IAAI+gG,EAAUrqM,SAAS6G,cAAc,QACjC1G,EAAO,GAMX,OAJIkqM,GAAWA,EAAQljM,aAAa,UAClChH,EAAOupM,EAAU/tM,OAAO2tG,SAASnpG,OAG5BA,EAAO,IAAMmpM,EAAWlC,EAAWlC,EAAW57F,KA4HrDp7G,KAzHF,SAAc2e,EAAM4N,GAElB,IAAI0+B,EAAS,OACTmwD,EAAW67F,EAAet4L,OAAM9T,OAAWA,EAAW0tM,EAAQn9F,UAClEm+F,EAAkBzB,oBAAoB18F,EAAUnwD,EAAQ8sJ,GAAqB,SAAU8B,GACrF,GAAKA,EAAL,CACA,IAAIl7L,EAAOq4L,EAAW57F,GAClB4gG,EAAcZ,EAAWlC,EAAWv6L,GAGxC,GAFkB88L,MAAkBO,EAEnB,CAIfD,EAAap9L,EAxIrB,SAAsBA,GACpBlR,OAAO2tG,SAASjc,KAAOxgF,EAwIjBy9L,CAAaJ,GACb,IAAIviI,EAAYyiI,EAASrqM,YAAYmlM,EAAWuB,EAAQn9F,WACpDihG,EAAYH,EAAS71M,MAAM,EAAGozE,EAAY,GAC9C4iI,EAAUr8M,KAAK2e,GACfu9L,EAAWG,EACXrjL,EAAS,CACPiyB,OAAQA,EACRmwD,SAAUA,SAIZpiF,SAgGJ9qB,QA3FF,SAAiByQ,EAAM4N,GAErB,IAAI0+B,EAAS,UACTmwD,EAAW67F,EAAet4L,OAAM9T,OAAWA,EAAW0tM,EAAQn9F,UAClEm+F,EAAkBzB,oBAAoB18F,EAAUnwD,EAAQ8sJ,GAAqB,SAAU8B,GACrF,GAAKA,EAAL,CACA,IAAIl7L,EAAOq4L,EAAW57F,GAClB4gG,EAAcZ,EAAWlC,EAAWv6L,GACtB88L,MAAkBO,IAMlCD,EAAap9L,EACb+8L,EAAgBM,IAGlB,IAAIviI,EAAYyiI,EAASr6M,QAAQm1M,EAAWuB,EAAQn9F,YACjC,IAAf3hC,IAAkByiI,EAASziI,GAAa96D,GAC5Cqa,EAAS,CACPiyB,OAAQA,EACRmwD,SAAUA,SAsEd8+F,GAAIA,EACJS,OA7DF,WACET,GAAI,IA6DJU,UA1DF,WACEV,EAAG,IA0DHW,MAzCF,SAAe1xD,QACE,IAAXA,IACFA,GAAS,GAGX,IAAI2xD,EAAUvB,EAAkB3B,UAAUzuD,GAO1C,OALKoxD,IACHD,EAAkB,GAClBC,GAAY,GAGP,WAML,OALIA,IACFA,GAAY,EACZD,GAAmB,IAGdQ,MAwBTC,OApBF,SAAgBvgM,GACd,IAAIwgM,EAAWzB,EAAkBvB,eAAex9L,GAEhD,OADA8/L,EAAkB,GACX,WACLA,GAAmB,GACnBU,OAiBJ,OAAOzC,EAGT,SAAShlJ,EAAMj4D,EAAGghN,EAAYC,GAC5B,OAAO7+L,KAAK8mB,IAAI9mB,KAAKmnB,IAAIvpC,EAAGghN,GAAaC,GAO3C,SAASC,EAAoBtmM,QACb,IAAVA,IACFA,EAAQ,IAGV,IAAI8iC,EAAS9iC,EACT6hM,EAAsB/+J,EAAO++J,oBAC7B0E,EAAwBzjK,EAAO0jK,eAC/BA,OAA2C,IAA1BD,EAAmC,CAAC,KAAOA,EAC5DE,EAAsB3jK,EAAO4jK,aAC7BA,OAAuC,IAAxBD,EAAiC,EAAIA,EACpD3D,EAAmBhgK,EAAOigK,UAC1BA,OAAiC,IAArBD,EAA8B,EAAIA,EAC9CO,EAAoB5B,IAExB,SAAS3+K,EAASgvC,IAChB,OAASuwI,EAASvwI,GAElBuwI,EAAQ/8M,OAAS+8M,EAAQzrD,QAAQtxJ,OACjC+9M,EAAkBtB,gBAAgBM,EAAQn9F,SAAUm9F,EAAQttJ,QAG9D,SAASquJ,IACP,OAAO57L,KAAKC,SAAShgB,SAAS,IAAIC,OAAO,EAAGq7M,GAG9C,IAAIr3M,EAAQ2xD,EAAMqpJ,EAAc,EAAGF,EAAelhN,OAAS,GACvDsxJ,EAAU4vD,EAAejrM,KAAI,SAAUysF,GACzC,OAAmC+4G,EAAe/4G,OAAOrzF,EAAjC,iBAAVqzF,EAAsDo7G,IAAgDp7G,EAAM1yF,KAAO8tM,QAG/He,EAAarD,EAyCjB,SAASkD,EAAG5+M,GACV,IAAIssF,EAAYr0B,EAAMglJ,EAAQ32M,MAAQtG,EAAG,EAAGi9M,EAAQzrD,QAAQtxJ,OAAS,GAEjE4/G,EAAWm9F,EAAQzrD,QAAQllE,GAC/B2xH,EAAkBzB,oBAAoB18F,EAFzB,MAE2C28F,GAAqB,SAAU8B,GACjFA,EACF7gL,EAAS,CACPiyB,OALO,MAMPmwD,SAAUA,EACVx5G,MAAOgmF,IAKT5uD,OA8BN,IAAIu/K,EAAU,CACZ/8M,OAAQsxJ,EAAQtxJ,OAChByvD,OAAQ,MACRmwD,SAAU0xC,EAAQlrJ,GAClBA,MAAOA,EACPkrJ,QAASA,EACTutD,WAAYA,EACZr6M,KA1FF,SAAc2e,EAAM4N,GAElB,IAAI0+B,EAAS,OACTmwD,EAAW67F,EAAet4L,EAAM4N,EAAO+sL,IAAaf,EAAQn9F,UAChEm+F,EAAkBzB,oBAAoB18F,EAAUnwD,EAAQ8sJ,GAAqB,SAAU8B,GACrF,GAAKA,EAAL,CACA,IACIjyH,EADY2wH,EAAQ32M,MACI,EACxBi7M,EAActE,EAAQzrD,QAAQzmJ,MAAM,GAEpCw2M,EAAYrhN,OAASosF,EACvBi1H,EAAY/6M,OAAO8lF,EAAWi1H,EAAYrhN,OAASosF,EAAWwzB,GAE9DyhG,EAAY78M,KAAKo7G,GAGnBpiF,EAAS,CACPiyB,OAAQA,EACRmwD,SAAUA,EACVx5G,MAAOgmF,EACPklE,QAAS+vD,SAuEb3uM,QAlEF,SAAiByQ,EAAM4N,GAErB,IAAI0+B,EAAS,UACTmwD,EAAW67F,EAAet4L,EAAM4N,EAAO+sL,IAAaf,EAAQn9F,UAChEm+F,EAAkBzB,oBAAoB18F,EAAUnwD,EAAQ8sJ,GAAqB,SAAU8B,GAChFA,IACLtB,EAAQzrD,QAAQyrD,EAAQ32M,OAASw5G,EACjCpiF,EAAS,CACPiyB,OAAQA,EACRmwD,SAAUA,SA0Dd8+F,GAAIA,EACJS,OAnCF,WACET,GAAI,IAmCJU,UAhCF,WACEV,EAAG,IAgCH4C,MA7BF,SAAexhN,GACb,IAAIssF,EAAY2wH,EAAQ32M,MAAQtG,EAChC,OAAOssF,GAAa,GAAKA,EAAY2wH,EAAQzrD,QAAQtxJ,QA4BrDq/M,MAzBF,SAAe1xD,GAKb,YAJe,IAAXA,IACFA,GAAS,GAGJowD,EAAkB3B,UAAUzuD,IAqBnC4xD,OAlBF,SAAgBvgM,GACd,OAAO++L,EAAkBvB,eAAex9L,KAmB1C,OAAO+9L,gCCj5BT,IAAIwE,EAAU,EAAQ,MAMlBC,EAAgB,CAClBx0C,mBAAmB,EACnBy0C,aAAa,EACbj0C,cAAc,EACd5+I,cAAc,EACdE,aAAa,EACb4yL,iBAAiB,EACjBC,0BAA0B,EAC1BhoI,0BAA0B,EAC1B1qD,QAAQ,EACRF,WAAW,EACX9jB,MAAM,GAEJ22M,EAAgB,CAClBvgN,MAAM,EACNrB,QAAQ,EACRnB,WAAW,EACXgjN,QAAQ,EACRje,QAAQ,EACR7jM,WAAW,EACX+hN,OAAO,GASLC,EAAe,CACjB,UAAY,EACZ9tL,SAAS,EACTrF,cAAc,EACdE,aAAa,EACbC,WAAW,EACX9jB,MAAM,GAEJ+2M,EAAe,GAGnB,SAASC,EAAWpmL,GAClB,OAAI0lL,EAAQW,OAAOrmL,GACVkmL,EAGFC,EAAanmL,EAAoB,WAAM2lL,EAPhDQ,EAAaT,EAAQY,YAhBK,CACxB,UAAY,EACZ/oL,QAAQ,EACRxK,cAAc,EACdE,aAAa,EACbC,WAAW,GAqBb,IAAItiB,EAAiBvO,OAAOuO,eACxB2kD,EAAsBlzD,OAAOkzD,oBAC7B54C,EAAwBta,OAAOsa,sBAC/BI,EAA2B1a,OAAO0a,yBAClC6+H,EAAiBv5I,OAAOu5I,eACxB2qE,EAAkBlkN,OAAOW,UAsC7B4Y,EAAOC,QArCP,SAAS2qM,EAAqBC,EAAiBC,EAAiBC,GAC9D,GAA+B,iBAApBD,EAA8B,CAEvC,GAAIH,EAAiB,CACnB,IAAIK,EAAqBhrE,EAAe8qE,GAEpCE,GAAsBA,IAAuBL,GAC/CC,EAAqBC,EAAiBG,EAAoBD,GAI9D,IAAIz5M,EAAOqoD,EAAoBmxJ,GAE3B/pM,IACFzP,EAAOA,EAAK0P,OAAOD,EAAsB+pM,KAM3C,IAHA,IAAIG,EAAgBT,EAAWK,GAC3BK,EAAgBV,EAAWM,GAEtB1iN,EAAI,EAAGA,EAAIkJ,EAAK/I,SAAUH,EAAG,CACpC,IAAImQ,EAAMjH,EAAKlJ,GAEf,KAAK+hN,EAAc5xM,IAAUwyM,GAAaA,EAAUxyM,IAAW2yM,GAAiBA,EAAc3yM,IAAW0yM,GAAiBA,EAAc1yM,IAAO,CAC7I,IAAI2K,EAAa/B,EAAyB2pM,EAAiBvyM,GAE3D,IAEEvD,EAAe61M,EAAiBtyM,EAAK2K,GACrC,MAAOlW,OAKf,OAAO69M,0BC9FT,IAAIM,EAAmC,mBAAX5+M,QAAuD,iBAAvBA,OAAO6+M,YAC/DzhB,EAAQljM,OAAOW,UAAUsD,SAEzB2gN,EAAsB,SAAqBx+M,GAC9C,QAAIs+M,GAAkBt+M,GAA0B,iBAAVA,GAAsBN,OAAO6+M,eAAev+M,IAGrD,uBAAtB88L,EAAM/hM,KAAKiF,IAGfy+M,EAAoB,SAAqBz+M,GAC5C,QAAIw+M,EAAoBx+M,IAGP,OAAVA,GACW,iBAAVA,GACiB,iBAAjBA,EAAMtE,QACbsE,EAAMtE,QAAU,GACM,mBAAtBohM,EAAM/hM,KAAKiF,IACkB,sBAA7B88L,EAAM/hM,KAAKiF,EAAMs/L,SAGfof,EAA6B,WAChC,OAAOF,EAAoB/iN,WADI,GAIhC+iN,EAAoBC,kBAAoBA,EAExCtrM,EAAOC,QAAUsrM,EAA4BF,EAAsBC,yBC5BnE,IAAI95J,EAASliD,KAAKlI,UAAUoqD,OAUxBm4I,EAAQljM,OAAOW,UAAUsD,SAEzBygN,EAAmC,mBAAX5+M,QAAuD,iBAAvBA,OAAO6+M,YAEnEprM,EAAOC,QAAU,SAAsBpT,GACtC,MAAqB,iBAAVA,GAAgC,OAAVA,IAG1Bs+M,EAjBY,SAA2Bt+M,GAC9C,IAEC,OADA2kD,EAAO5pD,KAAKiF,IACL,EACN,MAAOG,GACR,OAAO,GAYgBw+M,CAAc3+M,GAPvB,kBAOgC88L,EAAM/hM,KAAKiF,kCClB3D,IAAIksB,EAAM,EAAQ,MACd0yL,EAAYr4L,OAAOhsB,UAAUq4B,KAC7BisL,EAAOjlN,OAAO0a,yBAedwoL,EAAQljM,OAAOW,UAAUsD,SAEzBygN,EAAmC,mBAAX5+M,QAAuD,iBAAvBA,OAAO6+M,YAEnEprM,EAAOC,QAAU,SAAiBpT,GACjC,IAAKA,GAA0B,iBAAVA,EACpB,OAAO,EAER,IAAKs+M,EACJ,MARe,oBAQRxhB,EAAM/hM,KAAKiF,GAGnB,IAAIqW,EAAawoM,EAAK7+M,EAAO,aAE7B,SAD+BqW,IAAc6V,EAAI7V,EAAY,WA1BvC,SAAsBrW,GAC5C,IACC,IAAI0jH,EAAY1jH,EAAM0jH,UAItB,OAHA1jH,EAAM0jH,UAAY,EAElBk7F,EAAU7jN,KAAKiF,IACR,EACN,MAAOG,GACR,OAAO,EACN,QACDH,EAAM0jH,UAAYA,GAqBZo7F,CAAiB9+M,cCrCzBmT,EAAOC,QAAUrZ,MAAMyc,SAAW,SAAUD,GAC1C,MAA8C,kBAAvC3c,OAAOW,UAAUsD,SAAS9C,KAAKwb,wBCDxC,OAaA,SAAYwoM,EAAQrmB,GAEnB,aAE6D,iBAAnBvlL,EAAOC,QAShDD,EAAOC,QAAU2rM,EAAO/sM,SACvB0mL,EAASqmB,GAAQ,GACjB,SAAU7kM,GACT,IAAMA,EAAElI,SACP,MAAM,IAAIhX,MAAO,4CAElB,OAAO09L,EAASx+K,IAGlBw+K,EAASqmB,GAtBX,CA0BuB,oBAAXpxM,OAAyBA,OAAStT,MAAM,SAAUsT,EAAQqxM,GAMtE,aAEA,IAAIzoM,EAAM,GAEN4pL,EAAWvmM,OAAOu5I,eAElB5sI,EAAQgQ,EAAIhQ,MAEZ04M,EAAO1oM,EAAI0oM,KAAO,SAAUliH,GAC/B,OAAOxmF,EAAI0oM,KAAKlkN,KAAMgiG,IACnB,SAAUA,GACb,OAAOxmF,EAAIpC,OAAOnT,MAAO,GAAI+7F,IAI1B78F,EAAOqW,EAAIrW,KAEX6B,EAAUwU,EAAIxU,QAEdm9M,EAAa,GAEbrhN,EAAWqhN,EAAWrhN,SAEtB86L,EAASumB,EAAW/kN,eAEpBglN,EAAaxmB,EAAO96L,SAEpBuhN,EAAuBD,EAAWpkN,KAAMnB,QAExC4hH,EAAU,GAEVvwF,EAAa,SAAqB1X,GASpC,MAAsB,mBAARA,GAA8C,iBAAjBA,EAAI0yF,UAC1B,mBAAb1yF,EAAInS,MAIVi+M,EAAW,SAAmB9rM,GAChC,OAAc,MAAPA,GAAeA,IAAQA,EAAI5F,QAIhCqE,EAAWrE,EAAOqE,SAIjBstM,EAA4B,CAC/B34M,MAAM,EACNsvE,KAAK,EACLspI,OAAO,EACPC,UAAU,GAGX,SAASC,EAASz7M,EAAM80B,EAAMs0G,GAG7B,IAAI7xI,EAAGuB,EACNu8J,GAHDjsB,EAAMA,GAAOp7H,GAGCE,cAAe,UAG7B,GADAmnJ,EAAOz4H,KAAO58B,EACT80B,EACJ,IAAMv9B,KAAK+jN,GAYVxiN,EAAMg8B,EAAMv9B,IAAOu9B,EAAK3f,cAAgB2f,EAAK3f,aAAc5d,KAE1D89J,EAAO7zI,aAAcjqB,EAAGuB,GAI3BswI,EAAIn1H,KAAKm3C,YAAaiqG,GAASjxH,WAAW4uB,YAAaqiG,GAIzD,SAASqmD,EAAQnsM,GAChB,OAAY,MAAPA,EACGA,EAAM,GAIQ,iBAARA,GAAmC,mBAARA,EACxC2rM,EAAYrhN,EAAS9C,KAAMwY,KAAW,gBAC/BA,EAQT,IACC/K,EAAU,QAGV6iI,EAAS,SAAUR,EAAUi+B,GAI5B,OAAO,IAAIz9B,EAAOzwH,GAAGuoL,KAAMt4D,EAAUi+B,IA0VvC,SAAS62C,EAAapsM,GAMrB,IAAI7X,IAAW6X,GAAO,WAAYA,GAAOA,EAAI7X,OAC5CiL,EAAO+4M,EAAQnsM,GAEhB,OAAK0X,EAAY1X,KAAS8rM,EAAU9rM,KAIpB,UAAT5M,GAA+B,IAAXjL,GACR,iBAAXA,GAAuBA,EAAS,GAAOA,EAAS,KAAO6X,GArWhE83H,EAAOzwH,GAAKywH,EAAO9wI,UAAY,CAG9B6hL,OAAQ5zK,EAERlO,YAAa+wI,EAGb3vI,OAAQ,EAERylG,QAAS,WACR,OAAO56F,EAAMxL,KAAMV,OAKpB0B,IAAK,SAAU6B,GAGd,OAAY,MAAPA,EACG2I,EAAMxL,KAAMV,MAIbuD,EAAM,EAAIvD,KAAMuD,EAAMvD,KAAKqB,QAAWrB,KAAMuD,IAKpDgiN,UAAW,SAAUC,GAGpB,IAAIllH,EAAM0wC,EAAO13G,MAAOt5B,KAAKC,cAAeulN,GAM5C,OAHAllH,EAAImlH,WAAazlN,KAGVsgG,GAIRkjF,KAAM,SAAUtzK,GACf,OAAO8gI,EAAOwyC,KAAMxjL,KAAMkQ,IAG3BoH,IAAK,SAAUpH,GACd,OAAOlQ,KAAKulN,UAAWv0E,EAAO15H,IAAKtX,MAAM,SAAU8qL,EAAM5pL,GACxD,OAAOgP,EAASxP,KAAMoqL,EAAM5pL,EAAG4pL,QAIjC5+K,MAAO,WACN,OAAOlM,KAAKulN,UAAWr5M,EAAMvF,MAAO3G,KAAMoB,aAG3C2rB,MAAO,WACN,OAAO/sB,KAAK43B,GAAI,IAGjB+X,KAAM,WACL,OAAO3vC,KAAK43B,IAAK,IAGlB8tL,KAAM,WACL,OAAO1lN,KAAKulN,UAAWv0E,EAAO20E,KAAM3lN,MAAM,SAAU4lN,EAAO1kN,GAC1D,OAASA,EAAI,GAAM,OAIrB2kN,IAAK,WACJ,OAAO7lN,KAAKulN,UAAWv0E,EAAO20E,KAAM3lN,MAAM,SAAU4lN,EAAO1kN,GAC1D,OAAOA,EAAI,OAIb02B,GAAI,SAAU12B,GACb,IAAI+vH,EAAMjxH,KAAKqB,OACdwrE,GAAK3rE,GAAMA,EAAI,EAAI+vH,EAAM,GAC1B,OAAOjxH,KAAKulN,UAAW14I,GAAK,GAAKA,EAAIokD,EAAM,CAAEjxH,KAAM6sE,IAAQ,KAG5Dh0C,IAAK,WACJ,OAAO74B,KAAKylN,YAAczlN,KAAKC,eAKhC4F,KAAMA,EACN8sB,KAAMzW,EAAIyW,KACVhrB,OAAQuU,EAAIvU,QAGbqpI,EAAO7+C,OAAS6+C,EAAOzwH,GAAG4xE,OAAS,WAClC,IAAIvwF,EAASc,EAAMk5E,EAAKq3D,EAAM6yE,EAAa58I,EAC1C/3D,EAAS/P,UAAW,IAAO,GAC3BF,EAAI,EACJG,EAASD,UAAUC,OACnB0kN,GAAO,EAsBR,IAnBuB,kBAAX50M,IACX40M,EAAO50M,EAGPA,EAAS/P,UAAWF,IAAO,GAC3BA,KAIsB,iBAAXiQ,GAAwByf,EAAYzf,KAC/CA,EAAS,IAILjQ,IAAMG,IACV8P,EAASnR,KACTkB,KAGOA,EAAIG,EAAQH,IAGnB,GAAqC,OAA9BU,EAAUR,UAAWF,IAG3B,IAAMwB,KAAQd,EACbqxI,EAAOrxI,EAASc,GAIF,cAATA,GAAwByO,IAAW8hI,IAKnC8yE,GAAQ9yE,IAAUjC,EAAOg1E,cAAe/yE,KAC1C6yE,EAAcpmN,MAAMyc,QAAS82H,MAC/Br3D,EAAMzqE,EAAQzO,GAIbwmE,EADI48I,IAAgBpmN,MAAMyc,QAASy/D,GAC3B,GACIkqI,GAAgB90E,EAAOg1E,cAAepqI,GAG1CA,EAFA,GAITkqI,GAAc,EAGd30M,EAAQzO,GAASsuI,EAAO7+C,OAAQ4zH,EAAM78I,EAAO+pE,SAGzBviI,IAATuiI,IACX9hI,EAAQzO,GAASuwI,IAOrB,OAAO9hI,GAGR6/H,EAAO7+C,OAAQ,CAGd8zH,QAAS,UAAa93M,EAAUoV,KAAKC,UAAWzP,QAAS,MAAO,IAGhEmyM,SAAS,EAETj/M,MAAO,SAAUk/M,GAChB,MAAM,IAAIxlN,MAAOwlN,IAGlBvpM,KAAM,aAENopM,cAAe,SAAU9sM,GACxB,IAAIk5E,EAAOmhC,EAIX,SAAMr6G,GAAgC,oBAAzB1V,EAAS9C,KAAMwY,KAI5Bk5E,EAAQ0zG,EAAU5sL,MASK,mBADvBq6G,EAAO+qE,EAAO59L,KAAM0xF,EAAO,gBAAmBA,EAAMnyF,cACf6kN,EAAWpkN,KAAM6yH,KAAWwxF,KAGlEqB,cAAe,SAAUltM,GACxB,IAAIxW,EAEJ,IAAMA,KAAQwW,EACb,OAAO,EAER,OAAO,GAKRmtM,WAAY,SAAU18M,EAAM/H,EAASmxI,GACpCqyE,EAASz7M,EAAM,CAAEu7M,MAAOtjN,GAAWA,EAAQsjN,OAASnyE,IAGrDywC,KAAM,SAAUtqK,EAAKhJ,GACpB,IAAI7O,EAAQH,EAAI,EAEhB,GAAKokN,EAAapsM,GAEjB,IADA7X,EAAS6X,EAAI7X,OACLH,EAAIG,IACqC,IAA3C6O,EAASxP,KAAMwY,EAAKhY,GAAKA,EAAGgY,EAAKhY,IADnBA,UAMpB,IAAMA,KAAKgY,EACV,IAAgD,IAA3ChJ,EAASxP,KAAMwY,EAAKhY,GAAKA,EAAGgY,EAAKhY,IACrC,MAKH,OAAOgY,GAIRikL,UAAW,SAAUjhL,EAAK2G,GACzB,IAAIy9E,EAAMz9E,GAAW,GAarB,OAXY,MAAP3G,IACCopM,EAAa/lN,OAAQ2c,IACzB80H,EAAO13G,MAAOgnE,EACE,iBAARpkF,EACN,CAAEA,GAAQA,GAGZrW,EAAKnF,KAAM4/F,EAAKpkF,IAIXokF,GAGR8sG,QAAS,SAAUtiB,EAAM5uK,EAAKhb,GAC7B,OAAc,MAAPgb,GAAe,EAAIxU,EAAQhH,KAAMwb,EAAK4uK,EAAM5pL,IAKpDo4B,MAAO,SAAUvM,EAAOkgD,GAKvB,IAJA,IAAIgkD,GAAOhkD,EAAO5rE,OACjBwrE,EAAI,EACJ3rE,EAAI6rB,EAAM1rB,OAEHwrE,EAAIokD,EAAKpkD,IAChB9/C,EAAO7rB,KAAQ+rE,EAAQJ,GAKxB,OAFA9/C,EAAM1rB,OAASH,EAER6rB,GAGR44L,KAAM,SAAUH,EAAOt1M,EAAU02F,GAShC,IARA,IACC2pC,EAAU,GACVrvI,EAAI,EACJG,EAASmkN,EAAMnkN,OACfilN,GAAkB1/G,EAIX1lG,EAAIG,EAAQH,KACAgP,EAAUs1M,EAAOtkN,GAAKA,KAChBolN,GACxB/1E,EAAQ1qI,KAAM2/M,EAAOtkN,IAIvB,OAAOqvI,GAIRj5H,IAAK,SAAUkuM,EAAOt1M,EAAUmR,GAC/B,IAAIhgB,EAAQsE,EACXzE,EAAI,EACJo/F,EAAM,GAGP,GAAKglH,EAAaE,GAEjB,IADAnkN,EAASmkN,EAAMnkN,OACPH,EAAIG,EAAQH,IAGL,OAFdyE,EAAQuK,EAAUs1M,EAAOtkN,GAAKA,EAAGmgB,KAGhCi/E,EAAIz6F,KAAMF,QAMZ,IAAMzE,KAAKskN,EAGI,OAFd7/M,EAAQuK,EAAUs1M,EAAOtkN,GAAKA,EAAGmgB,KAGhCi/E,EAAIz6F,KAAMF,GAMb,OAAOi/M,EAAMtkH,IAIdthE,KAAM,EAINmiF,QAASA,IAGa,mBAAX97G,SACX2rI,EAAOzwH,GAAIlb,OAAOC,UAAa4W,EAAK7W,OAAOC,WAI5C0rI,EAAOwyC,KAAM,uEAAuEr4K,MAAO,MAC1F,SAAUnE,EAAItE,GACbmiN,EAAY,WAAaniN,EAAO,KAAQA,EAAKoN,iBAmB/C,IAAIy2M,EAWJ,SAAYjzM,GACZ,IAAIpS,EACHigH,EACAqlG,EACAC,EACAC,EACA92D,EACA+2D,EACAC,EACAC,EACAC,EACAC,EAGAC,EACArvM,EACAsvM,EACAC,EACAC,EACAC,EACA72E,EACAh5G,EAGA0uL,EAAU,SAAW,EAAI,IAAI79M,KAC7Bi/M,EAAe/zM,EAAOqE,SACtB2vM,EAAU,EACV5hN,EAAO,EACP6hN,EAAaC,KACbC,EAAaD,KACbE,EAAgBF,KAChBG,EAAyBH,KACzBI,EAAY,SAAU9/L,EAAGloB,GAIxB,OAHKkoB,IAAMloB,IACVmnN,GAAe,GAET,GAIRzoB,EAAS,GAAOx+L,eAChBoc,EAAM,GACNtW,EAAMsW,EAAItW,IACViiN,EAAa3rM,EAAIrW,KACjBA,EAAOqW,EAAIrW,KACXqG,EAAQgQ,EAAIhQ,MAIZxE,EAAU,SAAU0iC,EAAM0gJ,GAGzB,IAFA,IAAI5pL,EAAI,EACP+vH,EAAM7mF,EAAK/oC,OACJH,EAAI+vH,EAAK/vH,IAChB,GAAKkpC,EAAMlpC,KAAQ4pL,EAClB,OAAO5pL,EAGT,OAAQ,GAGT4mN,EAAW,6HAMXC,EAAa,sBAGbzU,EAAa,oFAIbvuL,EAAa,2BAA4BuuL,EAAa,OAASyU,EAG9D,gBAAkBA,EAIlB,2DAA6DzU,EAAa,OAC1EyU,EAAa,OAEdC,EAAU,KAAO1U,EAAP,wFAOoBvuL,EAPpB,eAcVkjM,EAAc,IAAI/7L,OAAQ67L,EAAa,IAAK,KAC5CG,EAAQ,IAAIh8L,OAAQ,uEACA,KAEpBi8L,EAAS,IAAIj8L,OAAQ,8CACrBk8L,EAAe,IAAIl8L,OAAQ,wEAE3Bm8L,EAAW,IAAIn8L,OAAQ67L,EAAa,MAEpCO,EAAU,IAAIp8L,OAAQ87L,GACtBO,EAAc,IAAIr8L,OAAQ,IAAMonL,EAAa,KAE7CkV,EAAY,CACX,GAAM,IAAIt8L,OAAQ,MAAQonL,EAAa,KACvC,MAAS,IAAIpnL,OAAQ,QAAUonL,EAAa,KAC5C,IAAO,IAAIpnL,OAAQ,KAAOonL,EAAa,SACvC,KAAQ,IAAIpnL,OAAQ,IAAMnH,GAC1B,OAAU,IAAImH,OAAQ,IAAM87L,GAC5B,MAAS,IAAI97L,OAAQ,4LAE+B,KACpD,KAAQ,IAAIA,OAAQ,OAAS47L,EAAW,KAAM,KAI9C,aAAgB,IAAI57L,OAAQ,6IAE2B,MAGxDu8L,EAAQ,SACRC,EAAU,sCACVC,EAAU,SAEVC,EAAU,yBAGVC,EAAa,mCAEbC,GAAW,OAIXC,GAAY,IAAI78L,OAAQ,8DAA8D,KACtF88L,GAAY,SAAUnlF,EAAQolF,GAC7B,IAAIC,EAAO,KAAOrlF,EAAO33H,MAAO,GAAM,MAEtC,OAAO+8M,IASNC,EAAO,EACN79M,OAAOC,aAAc49M,EAAO,OAC5B79M,OAAOC,aAAc49M,GAAQ,GAAK,MAAe,KAAPA,EAAe,SAK5DC,GAAa,sDACbC,GAAa,SAAU3qF,EAAI4qF,GAC1B,OAAKA,EAGQ,OAAP5qF,EACG,IAIDA,EAAGvyH,MAAO,GAAI,GAAM,KAC1BuyH,EAAGx5B,WAAYw5B,EAAGp9H,OAAS,GAAImC,SAAU,IAAO,IAI3C,KAAOi7H,GAOf6qF,GAAgB,WACftC,KAGDuC,GAAqBC,IACpB,SAAU1+B,GACT,OAAyB,IAAlBA,EAAK1lJ,UAAqD,aAAhC0lJ,EAAKpjJ,SAAS53B,gBAEhD,CAAE0iB,IAAK,aAAcrtB,KAAM,WAI7B,IACCU,EAAKc,MACFuV,EAAMhQ,EAAMxL,KAAM2mN,EAAa/7L,YACjC+7L,EAAa/7L,YAMdpP,EAAKmrM,EAAa/7L,WAAWjqB,QAASuqG,SACrC,MAAQ9lG,GACTD,EAAO,CAAEc,MAAOuV,EAAI7a,OAGnB,SAAU8P,EAAQs4M,GACjB5B,EAAWlhN,MAAOwK,EAAQjF,EAAMxL,KAAM+oN,KAKvC,SAAUt4M,EAAQs4M,GAKjB,IAJA,IAAI58I,EAAI17D,EAAO9P,OACdH,EAAI,EAGKiQ,EAAQ07D,KAAQ48I,EAAKvoN,OAC/BiQ,EAAO9P,OAASwrE,EAAI,IAKvB,SAAS05I,GAAQ/1E,EAAUi+B,EAAS5rJ,EAAS6mM,GAC5C,IAAIt4M,EAAGlQ,EAAG4pL,EAAM6+B,EAAKv7L,EAAOq3D,EAAQmkI,EACnCC,EAAap7C,GAAWA,EAAQ50I,cAGhC+xE,EAAW6iE,EAAUA,EAAQ7iE,SAAW,EAKzC,GAHA/oF,EAAUA,GAAW,GAGI,iBAAb2tH,IAA0BA,GACxB,IAAb5kC,GAA+B,IAAbA,GAA+B,KAAbA,EAEpC,OAAO/oF,EAIR,IAAM6mM,IACL1C,EAAav4C,GACbA,EAAUA,GAAW92J,EAEhBuvM,GAAiB,CAIrB,GAAkB,KAAbt7G,IAAqBx9E,EAAQy6L,EAAWtwL,KAAMi4G,IAGlD,GAAOp/H,EAAIgd,EAAO,IAGjB,GAAkB,IAAbw9E,EAAiB,CACrB,KAAOk/E,EAAOrc,EAAQoS,eAAgBzvK,IAUrC,OAAOyR,EALP,GAAKioK,EAAKv9K,KAAO6D,EAEhB,OADAyR,EAAQhd,KAAMilL,GACPjoK,OAYT,GAAKgnM,IAAgB/+B,EAAO++B,EAAWhpC,eAAgBzvK,KACtDmmB,EAAUk3I,EAASqc,IACnBA,EAAKv9K,KAAO6D,EAGZ,OADAyR,EAAQhd,KAAMilL,GACPjoK,MAKH,IAAKuL,EAAO,GAElB,OADAvoB,EAAKc,MAAOkc,EAAS4rJ,EAAQjqD,qBAAsBgsB,IAC5C3tH,EAGD,IAAOzR,EAAIgd,EAAO,KAAS+yF,EAAQ2oG,wBACzCr7C,EAAQq7C,uBAGR,OADAjkN,EAAKc,MAAOkc,EAAS4rJ,EAAQq7C,uBAAwB14M,IAC9CyR,EAKT,GAAKs+F,EAAQ4oG,MACXpC,EAAwBn3E,EAAW,QACjC22E,IAAcA,EAAU/mM,KAAMowH,MAIlB,IAAb5kC,GAAqD,WAAnC6iE,EAAQ/mI,SAAS53B,eAA+B,CAYpE,GAVA85M,EAAcp5E,EACdq5E,EAAap7C,EASK,IAAb7iE,IACFy8G,EAASjoM,KAAMowH,IAAc43E,EAAahoM,KAAMowH,IAAe,CAqBjE,KAlBAq5E,EAAaf,GAAS1oM,KAAMowH,IAAcw5E,GAAav7C,EAAQ1gI,aAC9D0gI,KAImBA,GAAYttD,EAAQ7hD,SAGhCqqJ,EAAMl7C,EAAQ3vJ,aAAc,OAClC6qM,EAAMA,EAAI51M,QAASo1M,GAAYC,IAE/B36C,EAAQtjJ,aAAc,KAAQw+L,EAAM1D,IAMtC/kN,GADAukF,EAASmqE,EAAUpf,IACRnvI,OACHH,KACPukF,EAAQvkF,IAAQyoN,EAAM,IAAMA,EAAM,UAAa,IAC9CM,GAAYxkI,EAAQvkF,IAEtB0oN,EAAcnkI,EAAOx/D,KAAM,KAG5B,IAIC,OAHApgB,EAAKc,MAAOkc,EACXgnM,EAAWplL,iBAAkBmlL,IAEvB/mM,EACN,MAAQqnM,GACTvC,EAAwBn3E,GAAU,GACjC,QACIm5E,IAAQ1D,GACZx3C,EAAQ/qD,gBAAiB,QAQ9B,OAAOkjG,EAAQp2E,EAASz8H,QAASm0M,EAAO,MAAQz5C,EAAS5rJ,EAAS6mM,GASnE,SAASlC,KACR,IAAIp9M,EAAO,GAYX,OAVA,SAASmuH,EAAOlnH,EAAK1L,GAQpB,OALKyE,EAAKvE,KAAMwL,EAAM,KAAQm1M,EAAK2D,oBAG3B5xF,EAAOnuH,EAAKg1B,SAEXm5F,EAAOlnH,EAAM,KAAQ1L,GAShC,SAASykN,GAAc7pM,GAEtB,OADAA,EAAI0lM,IAAY,EACT1lM,EAOR,SAAS8pM,GAAQ9pM,GAChB,IAAIwe,EAAKpnB,EAASE,cAAe,YAEjC,IACC,QAAS0I,EAAIwe,GACZ,MAAQj5B,GACT,OAAO,EACN,QAGIi5B,EAAGgP,YACPhP,EAAGgP,WAAW4uB,YAAa59B,GAI5BA,EAAK,MASP,SAASurL,GAAW/5L,EAAO+d,GAI1B,IAHA,IAAIpyB,EAAMqU,EAAMplB,MAAO,KACtBjK,EAAIgb,EAAI7a,OAEDH,KACPslN,EAAK+D,WAAYruM,EAAKhb,IAAQotC,EAUhC,SAASk8K,GAAc1iM,EAAGloB,GACzB,IAAIusI,EAAMvsI,GAAKkoB,EACdsmB,EAAO+9F,GAAsB,IAAfrkH,EAAE8jF,UAAiC,IAAfhsG,EAAEgsG,UACnC9jF,EAAE2iM,YAAc7qN,EAAE6qN,YAGpB,GAAKr8K,EACJ,OAAOA,EAIR,GAAK+9F,EACJ,KAAUA,EAAMA,EAAIgF,aACnB,GAAKhF,IAAQvsI,EACZ,OAAQ,EAKX,OAAOkoB,EAAI,GAAK,EAOjB,SAAS4iM,GAAmBp+M,GAC3B,OAAO,SAAUw+K,GAEhB,MAAgB,UADLA,EAAKpjJ,SAAS53B,eACEg7K,EAAKx+K,OAASA,GAQ3C,SAASq+M,GAAoBr+M,GAC5B,OAAO,SAAUw+K,GAChB,IAAIpoL,EAAOooL,EAAKpjJ,SAAS53B,cACzB,OAAkB,UAATpN,GAA6B,WAATA,IAAuBooL,EAAKx+K,OAASA,GAQpE,SAASs+M,GAAsBxlL,GAG9B,OAAO,SAAU0lJ,GAKhB,MAAK,SAAUA,EASTA,EAAK/8I,aAAgC,IAAlB+8I,EAAK1lJ,SAGvB,UAAW0lJ,EACV,UAAWA,EAAK/8I,WACb+8I,EAAK/8I,WAAW3I,WAAaA,EAE7B0lJ,EAAK1lJ,WAAaA,EAMpB0lJ,EAAKv3H,aAAenuB,GAI1B0lJ,EAAKv3H,cAAgBnuB,GACrBmkL,GAAoBz+B,KAAW1lJ,EAG1B0lJ,EAAK1lJ,WAAaA,EAKd,UAAW0lJ,GACfA,EAAK1lJ,WAAaA,GAY5B,SAASylL,GAAwBtqM,GAChC,OAAO6pM,IAAc,SAAUU,GAE9B,OADAA,GAAYA,EACLV,IAAc,SAAUV,EAAMn5E,GAMpC,IALA,IAAI1jE,EACHk+I,EAAexqM,EAAI,GAAImpM,EAAKroN,OAAQypN,GACpC5pN,EAAI6pN,EAAa1pN,OAGVH,KACFwoN,EAAQ78I,EAAIk+I,EAAc7pN,MAC9BwoN,EAAM78I,KAAS0jE,EAAS1jE,GAAM68I,EAAM78I,WAYzC,SAASm9I,GAAav7C,GACrB,OAAOA,QAAmD,IAAjCA,EAAQjqD,sBAAwCiqD,EAkrC1E,IAAMvtK,KA9qCNigH,EAAUolG,GAAOplG,QAAU,GAO3BulG,EAAQH,GAAOG,MAAQ,SAAU57B,GAChC,IAAI7qK,EAAY6qK,GAAQA,EAAK5oE,aAC5B+kG,EAAUn8B,IAAUA,EAAKjxJ,eAAiBixJ,GAAOntK,gBAKlD,OAAQ8qM,EAAMroM,KAAMH,GAAagnM,GAAWA,EAAQv/K,UAAY,SAQjEs/K,EAAcT,GAAOS,YAAc,SAAUvoL,GAC5C,IAAIusL,EAAYC,EACfl4E,EAAMt0G,EAAOA,EAAK5E,eAAiB4E,EAAO4oL,EAO3C,OAAKt0E,GAAOp7H,GAA6B,IAAjBo7H,EAAInnC,UAAmBmnC,EAAIp1H,iBAMnDspM,GADAtvM,EAAWo7H,GACQp1H,gBACnBupM,GAAkBR,EAAO/uM,GAQpB0vM,GAAgB1vM,IAClBszM,EAAYtzM,EAASmiB,cAAiBmxL,EAAUntL,MAAQmtL,IAGrDA,EAAUptM,iBACdotM,EAAUptM,iBAAkB,SAAUyrM,IAAe,GAG1C2B,EAAUC,aACrBD,EAAUC,YAAa,WAAY5B,KASrCnoG,EAAQ7hD,MAAQ+qJ,IAAQ,SAAUtrL,GAEjC,OADAkoL,EAAQlyJ,YAAah2B,GAAKg2B,YAAap9C,EAASE,cAAe,aACzB,IAAxBknB,EAAG0F,mBACf1F,EAAG0F,iBAAkB,uBAAwBpjC,UAShD8/G,EAAQp8F,WAAaslM,IAAQ,SAAUtrL,GAEtC,OADAA,EAAG9P,UAAY,KACP8P,EAAGjgB,aAAc,gBAO1BqiG,EAAQqD,qBAAuB6lG,IAAQ,SAAUtrL,GAEhD,OADAA,EAAGg2B,YAAap9C,EAASwzM,cAAe,MAChCpsL,EAAGylF,qBAAsB,KAAMnjH,UAIxC8/G,EAAQ2oG,uBAAyBlB,EAAQxoM,KAAMzI,EAASmyM,wBAMxD3oG,EAAQiqG,QAAUf,IAAQ,SAAUtrL,GAEnC,OADAkoL,EAAQlyJ,YAAah2B,GAAKxxB,GAAK04M,GACvBtuM,EAAS0zM,oBAAsB1zM,EAAS0zM,kBAAmBpF,GAAU5kN,UAIzE8/G,EAAQiqG,SACZ5E,EAAKzsM,OAAa,GAAI,SAAUxM,GAC/B,IAAI+9M,EAAS/9M,EAAGwG,QAASg1M,GAAWC,IACpC,OAAO,SAAUl+B,GAChB,OAAOA,EAAKhsK,aAAc,QAAWwsM,IAGvC9E,EAAK3rK,KAAW,GAAI,SAAUttC,EAAIkhK,GACjC,QAAuC,IAA3BA,EAAQoS,gBAAkCqmC,EAAiB,CACtE,IAAIp8B,EAAOrc,EAAQoS,eAAgBtzK,GACnC,OAAOu9K,EAAO,CAAEA,GAAS,OAI3B07B,EAAKzsM,OAAa,GAAK,SAAUxM,GAChC,IAAI+9M,EAAS/9M,EAAGwG,QAASg1M,GAAWC,IACpC,OAAO,SAAUl+B,GAChB,IAAIrsJ,OAAwC,IAA1BqsJ,EAAKygC,kBACtBzgC,EAAKygC,iBAAkB,MACxB,OAAO9sL,GAAQA,EAAK94B,QAAU2lN,IAMhC9E,EAAK3rK,KAAW,GAAI,SAAUttC,EAAIkhK,GACjC,QAAuC,IAA3BA,EAAQoS,gBAAkCqmC,EAAiB,CACtE,IAAIzoL,EAAMv9B,EAAGskN,EACZ16B,EAAOrc,EAAQoS,eAAgBtzK,GAEhC,GAAKu9K,EAAO,CAIX,IADArsJ,EAAOqsJ,EAAKygC,iBAAkB,QACjB9sL,EAAK94B,QAAU4H,EAC3B,MAAO,CAAEu9K,GAMV,IAFA06B,EAAQ/2C,EAAQ48C,kBAAmB99M,GACnCrM,EAAI,EACM4pL,EAAO06B,EAAOtkN,MAEvB,IADAu9B,EAAOqsJ,EAAKygC,iBAAkB,QACjB9sL,EAAK94B,QAAU4H,EAC3B,MAAO,CAAEu9K,GAKZ,MAAO,MAMV07B,EAAK3rK,KAAY,IAAIsmE,EAAQqD,qBAC5B,SAAUp+F,EAAKqoJ,GACd,YAA6C,IAAjCA,EAAQjqD,qBACZiqD,EAAQjqD,qBAAsBp+F,GAG1B+6F,EAAQ4oG,IACZt7C,EAAQhqI,iBAAkBre,QAD3B,GAKR,SAAUA,EAAKqoJ,GACd,IAAIqc,EACH55D,EAAM,GACNhwH,EAAI,EAGJ2hB,EAAU4rJ,EAAQjqD,qBAAsBp+F,GAGzC,GAAa,MAARA,EAAc,CAClB,KAAU0kK,EAAOjoK,EAAS3hB,MACF,IAAlB4pL,EAAKl/E,UACTslB,EAAIrrH,KAAMilL,GAIZ,OAAO55D,EAER,OAAOruG,GAIT2jM,EAAK3rK,KAAc,MAAIsmE,EAAQ2oG,wBAA0B,SAAU76L,EAAWw/I,GAC7E,QAA+C,IAAnCA,EAAQq7C,wBAA0C5C,EAC7D,OAAOz4C,EAAQq7C,uBAAwB76L,IAUzCm4L,EAAgB,GAOhBD,EAAY,IAELhmG,EAAQ4oG,IAAMnB,EAAQxoM,KAAMzI,EAAS8sB,qBAI3C4lL,IAAQ,SAAUtrL,GAEjB,IAAI9zB,EAOJg8M,EAAQlyJ,YAAah2B,GAAK3T,UAAY,UAAY66L,EAAZ,qBACpBA,EADoB,kEAQjClnL,EAAG0F,iBAAkB,wBAAyBpjC,QAClD8lN,EAAUthN,KAAM,yCAKXk5B,EAAG0F,iBAAkB,cAAepjC,QACzC8lN,EAAUthN,KAAM,mCAAoCiiN,EAAW,KAI1D/oL,EAAG0F,iBAAkB,QAAUwhL,EAAU,MAAO5kN,QACrD8lN,EAAUthN,KAAM,OAQjBoF,EAAQ0M,EAASE,cAAe,UAC1BsT,aAAc,OAAQ,IAC5B4T,EAAGg2B,YAAa9pD,GACV8zB,EAAG0F,iBAAkB,aAAcpjC,QACxC8lN,EAAUthN,KAAM,mFAOXk5B,EAAG0F,iBAAkB,YAAapjC,QACvC8lN,EAAUthN,KAAM,YAMXk5B,EAAG0F,iBAAkB,KAAOwhL,EAAU,MAAO5kN,QAClD8lN,EAAUthN,KAAM,YAKjBk5B,EAAG0F,iBAAkB,QACrB0iL,EAAUthN,KAAM,kBAGjBwkN,IAAQ,SAAUtrL,GACjBA,EAAG3T,UAAY,oFAKf,IAAIngB,EAAQ0M,EAASE,cAAe,SACpC5M,EAAMkgB,aAAc,OAAQ,UAC5B4T,EAAGg2B,YAAa9pD,GAAQkgB,aAAc,OAAQ,KAIzC4T,EAAG0F,iBAAkB,YAAapjC,QACtC8lN,EAAUthN,KAAM,sCAKiC,IAA7Ck5B,EAAG0F,iBAAkB,YAAapjC,QACtC8lN,EAAUthN,KAAM,WAAY,aAK7BohN,EAAQlyJ,YAAah2B,GAAKqG,UAAW,EACc,IAA9CrG,EAAG0F,iBAAkB,aAAcpjC,QACvC8lN,EAAUthN,KAAM,WAAY,aAK7Bk5B,EAAG0F,iBAAkB,QACrB0iL,EAAUthN,KAAM,aAIXs7G,EAAQqqG,gBAAkB5C,EAAQxoM,KAAQmwH,EAAU02E,EAAQ12E,SAClE02E,EAAQx2E,uBACRw2E,EAAQv2E,oBACRu2E,EAAQwE,kBACRxE,EAAQt2E,qBAER05E,IAAQ,SAAUtrL,GAIjBoiF,EAAQuqG,kBAAoBn7E,EAAQ7vI,KAAMq+B,EAAI,KAI9CwxG,EAAQ7vI,KAAMq+B,EAAI,aAClBqoL,EAAcvhN,KAAM,KAAMmiN,MAI5Bb,EAAYA,EAAU9lN,QAAU,IAAI6qB,OAAQi7L,EAAUlhM,KAAM,MAC5DmhM,EAAgBA,EAAc/lN,QAAU,IAAI6qB,OAAQk7L,EAAcnhM,KAAM,MAIxE+kM,EAAapC,EAAQxoM,KAAM6mM,EAAQ0E,yBAKnCp0L,EAAWyzL,GAAcpC,EAAQxoM,KAAM6mM,EAAQ1vL,UAC9C,SAAUzP,EAAGloB,GACZ,IAAIgsN,EAAuB,IAAf9jM,EAAE8jF,SAAiB9jF,EAAEnK,gBAAkBmK,EAClD+jM,EAAMjsN,GAAKA,EAAEmuC,WACd,OAAOjmB,IAAM+jM,MAAWA,GAAwB,IAAjBA,EAAIjgH,YAClCggH,EAAMr0L,SACLq0L,EAAMr0L,SAAUs0L,GAChB/jM,EAAE6jM,yBAA8D,GAAnC7jM,EAAE6jM,wBAAyBE,MAG3D,SAAU/jM,EAAGloB,GACZ,GAAKA,EACJ,KAAUA,EAAIA,EAAEmuC,YACf,GAAKnuC,IAAMkoB,EACV,OAAO,EAIV,OAAO,GAOT8/L,EAAYoD,EACZ,SAAUljM,EAAGloB,GAGZ,GAAKkoB,IAAMloB,EAEV,OADAmnN,GAAe,EACR,EAIR,IAAIzxL,GAAWxN,EAAE6jM,yBAA2B/rN,EAAE+rN,wBAC9C,OAAKr2L,IAgBU,GAPfA,GAAYxN,EAAE+R,eAAiB/R,KAASloB,EAAEi6B,eAAiBj6B,GAC1DkoB,EAAE6jM,wBAAyB/rN,GAG3B,KAIGuhH,EAAQ2qG,cAAgBlsN,EAAE+rN,wBAAyB7jM,KAAQwN,EAOzDxN,GAAKnQ,GAAYmQ,EAAE+R,eAAiBwtL,GACxC9vL,EAAU8vL,EAAcv/L,IAChB,EAOJloB,GAAK+X,GAAY/X,EAAEi6B,eAAiBwtL,GACxC9vL,EAAU8vL,EAAcznN,GACjB,EAIDknN,EACJp/M,EAASo/M,EAAWh/L,GAAMpgB,EAASo/M,EAAWlnN,GAChD,EAGe,EAAV01B,GAAe,EAAI,IAE3B,SAAUxN,EAAGloB,GAGZ,GAAKkoB,IAAMloB,EAEV,OADAmnN,GAAe,EACR,EAGR,IAAI56E,EACHjrI,EAAI,EACJ6qN,EAAMjkM,EAAEimB,WACR89K,EAAMjsN,EAAEmuC,WACRi+K,EAAK,CAAElkM,GACPmkM,EAAK,CAAErsN,GAGR,IAAMmsN,IAAQF,EAMb,OAAO/jM,GAAKnQ,GAAY,EACvB/X,GAAK+X,EAAW,EAEhBo0M,GAAO,EACPF,EAAM,EACN/E,EACEp/M,EAASo/M,EAAWh/L,GAAMpgB,EAASo/M,EAAWlnN,GAChD,EAGK,GAAKmsN,IAAQF,EACnB,OAAOrB,GAAc1iM,EAAGloB,GAKzB,IADAusI,EAAMrkH,EACIqkH,EAAMA,EAAIp+F,YACnBi+K,EAAG5uK,QAAS+uF,GAGb,IADAA,EAAMvsI,EACIusI,EAAMA,EAAIp+F,YACnBk+K,EAAG7uK,QAAS+uF,GAIb,KAAQ6/E,EAAI9qN,KAAQ+qN,EAAI/qN,IACvBA,IAGD,OAAOA,EAGNspN,GAAcwB,EAAI9qN,GAAK+qN,EAAI/qN,IAO3B8qN,EAAI9qN,IAAOmmN,GAAgB,EAC3B4E,EAAI/qN,IAAOmmN,EAAe,EAE1B,GAGK1vM,GA/cCA,GAkdT4uM,GAAOh2E,QAAU,SAAU27E,EAAM1nL,GAChC,OAAO+hL,GAAQ2F,EAAM,KAAM,KAAM1nL,IAGlC+hL,GAAOiF,gBAAkB,SAAU1gC,EAAMohC,GAGxC,GAFAlF,EAAal8B,GAER3pE,EAAQqqG,iBAAmBtE,IAC9BS,EAAwBuE,EAAO,QAC7B9E,IAAkBA,EAAchnM,KAAM8rM,OACtC/E,IAAkBA,EAAU/mM,KAAM8rM,IAErC,IACC,IAAI5rH,EAAMiwC,EAAQ7vI,KAAMoqL,EAAMohC,GAG9B,GAAK5rH,GAAO6gB,EAAQuqG,mBAInB5gC,EAAKnzK,UAAuC,KAA3BmzK,EAAKnzK,SAASi0F,SAC/B,OAAOtL,EAEP,MAAQx6F,GACT6hN,EAAwBuE,GAAM,GAIhC,OAAO3F,GAAQ2F,EAAMv0M,EAAU,KAAM,CAAEmzK,IAASzpL,OAAS,GAG1DklN,GAAOhvL,SAAW,SAAUk3I,EAASqc,GAUpC,OAHOrc,EAAQ50I,eAAiB40I,IAAa92J,GAC5CqvM,EAAav4C,GAEPl3I,EAAUk3I,EAASqc,IAG3By7B,GAAO5nM,KAAO,SAAUmsK,EAAMpoL,IAOtBooL,EAAKjxJ,eAAiBixJ,IAAUnzK,GACtCqvM,EAAal8B,GAGd,IAAIvqK,EAAKimM,EAAK+D,WAAY7nN,EAAKoN,eAG9BrN,EAAM8d,GAAM+9K,EAAO59L,KAAM8lN,EAAK+D,WAAY7nN,EAAKoN,eAC9CyQ,EAAIuqK,EAAMpoL,GAAOwkN,QACjBx2M,EAEF,YAAeA,IAARjO,EACNA,EACA0+G,EAAQp8F,aAAemiM,EACtBp8B,EAAKhsK,aAAcpc,IACjBD,EAAMqoL,EAAKygC,iBAAkB7oN,KAAYD,EAAI0pN,UAC9C1pN,EAAIkD,MACJ,MAGJ4gN,GAAO1iF,OAAS,SAAUuoF,GACzB,OAASA,EAAM,IAAKr4M,QAASo1M,GAAYC,KAG1C7C,GAAOt/M,MAAQ,SAAUk/M,GACxB,MAAM,IAAIxlN,MAAO,0CAA4CwlN,IAO9DI,GAAO8F,WAAa,SAAUxpM,GAC7B,IAAIioK,EACHwhC,EAAa,GACbz/I,EAAI,EACJ3rE,EAAI,EAOL,GAJA6lN,GAAgB5lG,EAAQorG,iBACxBzF,GAAa3lG,EAAQqrG,YAAc3pM,EAAQ3W,MAAO,GAClD2W,EAAQ8P,KAAMi1L,GAETb,EAAe,CACnB,KAAUj8B,EAAOjoK,EAAS3hB,MACpB4pL,IAASjoK,EAAS3hB,KACtB2rE,EAAIy/I,EAAWzmN,KAAM3E,IAGvB,KAAQ2rE,KACPhqD,EAAQlb,OAAQ2kN,EAAYz/I,GAAK,GAQnC,OAFAi6I,EAAY,KAELjkM,GAOR4jM,EAAUF,GAAOE,QAAU,SAAU37B,GACpC,IAAIrsJ,EACH6hE,EAAM,GACNp/F,EAAI,EACJ0qG,EAAWk/E,EAAKl/E,SAEjB,GAAMA,GAQC,GAAkB,IAAbA,GAA+B,IAAbA,GAA+B,KAAbA,EAAkB,CAIjE,GAAiC,iBAArBk/E,EAAKplF,YAChB,OAAOolF,EAAKplF,YAIZ,IAAMolF,EAAOA,EAAKpsJ,WAAYosJ,EAAMA,EAAOA,EAAK35C,YAC/C7wC,GAAOmmH,EAAS37B,QAGZ,GAAkB,IAAbl/E,GAA+B,IAAbA,EAC7B,OAAOk/E,EAAKoJ,eAnBZ,KAAUz1J,EAAOqsJ,EAAM5pL,MAGtBo/F,GAAOmmH,EAAShoL,GAqBlB,OAAO6hE,GAGRkmH,EAAOD,GAAOn6B,UAAY,CAGzB+9B,YAAa,GAEbsC,aAAcrC,GAEdh8L,MAAOo6L,EAEP+B,WAAY,GAEZ1vK,KAAM,GAEN6xK,SAAU,CACT,IAAK,CAAEl6L,IAAK,aAAczF,OAAO,GACjC,IAAK,CAAEyF,IAAK,cACZ,IAAK,CAAEA,IAAK,kBAAmBzF,OAAO,GACtC,IAAK,CAAEyF,IAAK,oBAGbm6L,UAAW,CACV,KAAQ,SAAUv+L,GAWjB,OAVAA,EAAO,GAAMA,EAAO,GAAIra,QAASg1M,GAAWC,IAG5C56L,EAAO,IAAQA,EAAO,IAAOA,EAAO,IACnCA,EAAO,IAAO,IAAKra,QAASg1M,GAAWC,IAEpB,OAAf56L,EAAO,KACXA,EAAO,GAAM,IAAMA,EAAO,GAAM,KAG1BA,EAAMliB,MAAO,EAAG,IAGxB,MAAS,SAAUkiB,GAiClB,OArBAA,EAAO,GAAMA,EAAO,GAAIte,cAEU,QAA7Bse,EAAO,GAAIliB,MAAO,EAAG,IAGnBkiB,EAAO,IACZm4L,GAAOt/M,MAAOmnB,EAAO,IAKtBA,EAAO,KAASA,EAAO,GACtBA,EAAO,IAAQA,EAAO,IAAO,GAC7B,GAAqB,SAAfA,EAAO,IAAiC,QAAfA,EAAO,KACvCA,EAAO,KAAWA,EAAO,GAAMA,EAAO,IAAwB,QAAfA,EAAO,KAG3CA,EAAO,IAClBm4L,GAAOt/M,MAAOmnB,EAAO,IAGfA,GAGR,OAAU,SAAUA,GACnB,IAAIw+L,EACHC,GAAYz+L,EAAO,IAAOA,EAAO,GAElC,OAAKo6L,EAAmB,MAAEpoM,KAAMgO,EAAO,IAC/B,MAIHA,EAAO,GACXA,EAAO,GAAMA,EAAO,IAAOA,EAAO,IAAO,GAG9By+L,GAAYvE,EAAQloM,KAAMysM,KAGnCD,EAASh9D,EAAUi9D,GAAU,MAG7BD,EAASC,EAASnlN,QAAS,IAAKmlN,EAASxrN,OAASurN,GAAWC,EAASxrN,UAGxE+sB,EAAO,GAAMA,EAAO,GAAIliB,MAAO,EAAG0gN,GAClCx+L,EAAO,GAAMy+L,EAAS3gN,MAAO,EAAG0gN,IAI1Bx+L,EAAMliB,MAAO,EAAG,MAIzB6N,OAAQ,CAEP,IAAO,SAAU+yM,GAChB,IAAIplL,EAAWolL,EAAiB/4M,QAASg1M,GAAWC,IAAYl5M,cAChE,MAA4B,MAArBg9M,EACN,WACC,OAAO,GAER,SAAUhiC,GACT,OAAOA,EAAKpjJ,UAAYojJ,EAAKpjJ,SAAS53B,gBAAkB43B,IAI3D,MAAS,SAAUzY,GAClB,IAAI42C,EAAU0hJ,EAAYt4L,EAAY,KAEtC,OAAO42C,IACJA,EAAU,IAAI35C,OAAQ,0BACjB+C,EAAY,IAAM84L,EAAa,SAAaR,EACjDt4L,GAAW,SAAU67J,GACpB,OAAOjlH,EAAQzlD,KACY,iBAAnB0qK,EAAK77J,WAA0B67J,EAAK77J,gBACd,IAAtB67J,EAAKhsK,cACXgsK,EAAKhsK,aAAc,UACpB,QAKN,KAAQ,SAAUpc,EAAM0xB,EAAU24L,GACjC,OAAO,SAAUjiC,GAChB,IAAIrkL,EAAS8/M,GAAO5nM,KAAMmsK,EAAMpoL,GAEhC,OAAe,MAAV+D,EACgB,OAAb2tB,GAEFA,IAIN3tB,GAAU,GAIU,MAAb2tB,EAAmB3tB,IAAWsmN,EACvB,OAAb34L,EAAoB3tB,IAAWsmN,EAClB,OAAb34L,EAAoB24L,GAAqC,IAA5BtmN,EAAOiB,QAASqlN,GAChC,OAAb34L,EAAoB24L,GAAStmN,EAAOiB,QAASqlN,IAAW,EAC3C,OAAb34L,EAAoB24L,GAAStmN,EAAOyF,OAAQ6gN,EAAM1rN,UAAa0rN,EAClD,OAAb34L,GAAsB,IAAM3tB,EAAOsN,QAASk0M,EAAa,KAAQ,KAAMvgN,QAASqlN,IAAW,EAC9E,OAAb34L,IAAoB3tB,IAAWsmN,GAAStmN,EAAOyF,MAAO,EAAG6gN,EAAM1rN,OAAS,KAAQ0rN,EAAQ,QAO3F,MAAS,SAAUzgN,EAAM0gN,EAAMC,EAAWlgM,EAAO4iB,GAChD,IAAIu9K,EAAgC,QAAvB5gN,EAAKJ,MAAO,EAAG,GAC3BihN,EAA+B,SAArB7gN,EAAKJ,OAAQ,GACvBkhN,EAAkB,YAATJ,EAEV,OAAiB,IAAVjgM,GAAwB,IAAT4iB,EAGrB,SAAUm7I,GACT,QAASA,EAAK/8I,YAGf,SAAU+8I,EAAMp8C,EAAU2+E,GACzB,IAAI90F,EAAO+0F,EAAaC,EAAY9uL,EAAM+uL,EAAWv/M,EACpDukB,EAAM06L,IAAWC,EAAU,cAAgB,kBAC3ChuK,EAAS2rI,EAAK/8I,WACdrrC,EAAO0qN,GAAUtiC,EAAKpjJ,SAAS53B,cAC/B29M,GAAYJ,IAAQD,EACpBh/K,GAAO,EAER,GAAK+Q,EAAS,CAGb,GAAK+tK,EAAS,CACb,KAAQ16L,GAAM,CAEb,IADAiM,EAAOqsJ,EACGrsJ,EAAOA,EAAMjM,IACtB,GAAK46L,EACJ3uL,EAAKiJ,SAAS53B,gBAAkBpN,EACd,IAAlB+7B,EAAKmtE,SAEL,OAAO,EAKT39F,EAAQukB,EAAe,SAATlmB,IAAoB2B,GAAS,cAE5C,OAAO,EAMR,GAHAA,EAAQ,CAAEk/M,EAAUhuK,EAAOzgB,WAAaygB,EAAOuuK,WAG1CP,GAAWM,GAkBf,IAHAr/K,GADAo/K,GADAj1F,GAHA+0F,GAJAC,GADA9uL,EAAO0gB,GACY8mK,KAAexnL,EAAMwnL,GAAY,KAI1BxnL,EAAK+/B,YAC5B+uJ,EAAY9uL,EAAK+/B,UAAa,KAEZlyD,IAAU,IACZ,KAAQg7M,GAAW/uF,EAAO,KACzBA,EAAO,GAC3B95F,EAAO+uL,GAAaruK,EAAO7zB,WAAYkiM,GAE7B/uL,IAAS+uL,GAAa/uL,GAAQA,EAAMjM,KAG3C4b,EAAOo/K,EAAY,IAAOv/M,EAAMrI,OAGlC,GAAuB,IAAlB64B,EAAKmtE,YAAoBx9D,GAAQ3P,IAASqsJ,EAAO,CACrDwiC,EAAahhN,GAAS,CAAEg7M,EAASkG,EAAWp/K,GAC5C,YAyBF,GAlBKq/K,IAaJr/K,EADAo/K,GADAj1F,GAHA+0F,GAJAC,GADA9uL,EAAOqsJ,GACYm7B,KAAexnL,EAAMwnL,GAAY,KAI1BxnL,EAAK+/B,YAC5B+uJ,EAAY9uL,EAAK+/B,UAAa,KAEZlyD,IAAU,IACZ,KAAQg7M,GAAW/uF,EAAO,KAMhC,IAATnqF,EAGJ,MAAU3P,IAAS+uL,GAAa/uL,GAAQA,EAAMjM,KAC3C4b,EAAOo/K,EAAY,IAAOv/M,EAAMrI,UAE3BwnN,EACN3uL,EAAKiJ,SAAS53B,gBAAkBpN,EACd,IAAlB+7B,EAAKmtE,cACHx9D,IAGGq/K,KAMJH,GALAC,EAAa9uL,EAAMwnL,KAChBxnL,EAAMwnL,GAAY,KAIKxnL,EAAK+/B,YAC5B+uJ,EAAY9uL,EAAK+/B,UAAa,KAEpBlyD,GAAS,CAAEg7M,EAASl5K,IAG7B3P,IAASqsJ,MAUlB,OADA18I,GAAQuB,KACQ5iB,GAAWqhB,EAAOrhB,GAAU,GAAKqhB,EAAOrhB,GAAS,KAKrE,OAAU,SAAU0vH,EAAQquE,GAM3B,IAAI97M,EACHuR,EAAKimM,EAAKwB,QAASvrE,IAAY+pE,EAAKmH,WAAYlxE,EAAO3sI,gBACtDy2M,GAAOt/M,MAAO,uBAAyBw1I,GAKzC,OAAKl8H,EAAI0lM,GACD1lM,EAAIuqM,GAIPvqM,EAAGlf,OAAS,GAChB2N,EAAO,CAAEytI,EAAQA,EAAQ,GAAIquE,GACtBtE,EAAKmH,WAAW7tN,eAAgB28I,EAAO3sI,eAC7Cs6M,IAAc,SAAUV,EAAMn5E,GAI7B,IAHA,IAAI7+G,EACHk8L,EAAUrtM,EAAImpM,EAAMoB,GACpB5pN,EAAI0sN,EAAQvsN,OACLH,KAEPwoN,EADAh4L,EAAMhqB,EAASgiN,EAAMkE,EAAS1sN,OACbqvI,EAAS7+G,GAAQk8L,EAAS1sN,OAG7C,SAAU4pL,GACT,OAAOvqK,EAAIuqK,EAAM,EAAG97K,KAIhBuR,IAITynM,QAAS,CAGR,IAAOoC,IAAc,SAAU55E,GAK9B,IAAIvlI,EAAQ,GACX4X,EAAU,GACVgrM,EAAUlH,EAASn2E,EAASz8H,QAASm0M,EAAO,OAE7C,OAAO2F,EAAS5H,GACfmE,IAAc,SAAUV,EAAMn5E,EAAS7B,EAAU2+E,GAMhD,IALA,IAAIviC,EACHgjC,EAAYD,EAASnE,EAAM,KAAM2D,EAAK,IACtCnsN,EAAIwoN,EAAKroN,OAGFH,MACA4pL,EAAOgjC,EAAW5sN,MACxBwoN,EAAMxoN,KAASqvI,EAASrvI,GAAM4pL,OAIjC,SAAUA,EAAMp8C,EAAU2+E,GAMzB,OALApiN,EAAO,GAAM6/K,EACb+iC,EAAS5iN,EAAO,KAAMoiN,EAAKxqM,GAG3B5X,EAAO,GAAM,MACL4X,EAAQjd,UAInB,IAAOwkN,IAAc,SAAU55E,GAC9B,OAAO,SAAUs6C,GAChB,OAAOy7B,GAAQ/1E,EAAUs6C,GAAOzpL,OAAS,MAI3C,SAAY+oN,IAAc,SAAU7jL,GAEnC,OADAA,EAAOA,EAAKxyB,QAASg1M,GAAWC,IACzB,SAAUl+B,GAChB,OAASA,EAAKplF,aAAe+gH,EAAS37B,IAASpjL,QAAS6+B,IAAU,MAWpE,KAAQ6jL,IAAc,SAAU2D,GAO/B,OAJMxF,EAAYnoM,KAAM2tM,GAAQ,KAC/BxH,GAAOt/M,MAAO,qBAAuB8mN,GAEtCA,EAAOA,EAAKh6M,QAASg1M,GAAWC,IAAYl5M,cACrC,SAAUg7K,GAChB,IAAIkjC,EACJ,GACC,GAAOA,EAAW9G,EACjBp8B,EAAKijC,KACLjjC,EAAKhsK,aAAc,aAAgBgsK,EAAKhsK,aAAc,QAGtD,OADAkvM,EAAWA,EAASl+M,iBACAi+M,GAA2C,IAAnCC,EAAStmN,QAASqmN,EAAO,YAE3CjjC,EAAOA,EAAK/8I,aAAkC,IAAlB+8I,EAAKl/E,UAC7C,OAAO,MAKT,OAAU,SAAUk/E,GACnB,IAAI9lF,EAAO1xF,EAAO2tG,UAAY3tG,EAAO2tG,SAASjc,KAC9C,OAAOA,GAAQA,EAAK94F,MAAO,KAAQ4+K,EAAKv9K,IAGzC,KAAQ,SAAUu9K,GACjB,OAAOA,IAASm8B,GAGjB,MAAS,SAAUn8B,GAClB,OAAOA,IAASnzK,EAASg9B,iBACrBh9B,EAASs2M,UAAYt2M,EAASs2M,gBAC7BnjC,EAAKx+K,MAAQw+K,EAAKhzK,OAASgzK,EAAK3lJ,WAItC,QAAWylL,IAAsB,GACjC,SAAYA,IAAsB,GAElC,QAAW,SAAU9/B,GAIpB,IAAIpjJ,EAAWojJ,EAAKpjJ,SAAS53B,cAC7B,MAAsB,UAAb43B,KAA0BojJ,EAAKviI,SACxB,WAAb7gB,KAA2BojJ,EAAKljJ,UAGpC,SAAY,SAAUkjJ,GASrB,OALKA,EAAK/8I,YAET+8I,EAAK/8I,WAAWvG,eAGQ,IAAlBsjJ,EAAKljJ,UAIb,MAAS,SAAUkjJ,GAMlB,IAAMA,EAAOA,EAAKpsJ,WAAYosJ,EAAMA,EAAOA,EAAK35C,YAC/C,GAAK25C,EAAKl/E,SAAW,EACpB,OAAO,EAGT,OAAO,GAGR,OAAU,SAAUk/E,GACnB,OAAQ07B,EAAKwB,QAAiB,MAAGl9B,IAIlC,OAAU,SAAUA,GACnB,OAAO69B,EAAQvoM,KAAM0qK,EAAKpjJ,WAG3B,MAAS,SAAUojJ,GAClB,OAAO49B,EAAQtoM,KAAM0qK,EAAKpjJ,WAG3B,OAAU,SAAUojJ,GACnB,IAAIpoL,EAAOooL,EAAKpjJ,SAAS53B,cACzB,MAAgB,UAATpN,GAAkC,WAAdooL,EAAKx+K,MAA8B,WAAT5J,GAGtD,KAAQ,SAAUooL,GACjB,IAAInsK,EACJ,MAAuC,UAAhCmsK,EAAKpjJ,SAAS53B,eACN,SAAdg7K,EAAKx+K,OAIuC,OAAxCqS,EAAOmsK,EAAKhsK,aAAc,UACN,SAAvBH,EAAK7O,gBAIR,MAAS+6M,IAAwB,WAChC,MAAO,CAAE,MAGV,KAAQA,IAAwB,SAAUqD,EAAe7sN,GACxD,MAAO,CAAEA,EAAS,MAGnB,GAAMwpN,IAAwB,SAAUqD,EAAe7sN,EAAQypN,GAC9D,MAAO,CAAEA,EAAW,EAAIA,EAAWzpN,EAASypN,MAG7C,KAAQD,IAAwB,SAAUE,EAAc1pN,GAEvD,IADA,IAAIH,EAAI,EACAA,EAAIG,EAAQH,GAAK,EACxB6pN,EAAallN,KAAM3E,GAEpB,OAAO6pN,KAGR,IAAOF,IAAwB,SAAUE,EAAc1pN,GAEtD,IADA,IAAIH,EAAI,EACAA,EAAIG,EAAQH,GAAK,EACxB6pN,EAAallN,KAAM3E,GAEpB,OAAO6pN,KAGR,GAAMF,IAAwB,SAAUE,EAAc1pN,EAAQypN,GAM7D,IALA,IAAI5pN,EAAI4pN,EAAW,EAClBA,EAAWzpN,EACXypN,EAAWzpN,EACVA,EACAypN,IACQ5pN,GAAK,GACd6pN,EAAallN,KAAM3E,GAEpB,OAAO6pN,KAGR,GAAMF,IAAwB,SAAUE,EAAc1pN,EAAQypN,GAE7D,IADA,IAAI5pN,EAAI4pN,EAAW,EAAIA,EAAWzpN,EAASypN,IACjC5pN,EAAIG,GACb0pN,EAAallN,KAAM3E,GAEpB,OAAO6pN,OAKVvE,EAAKwB,QAAe,IAAIxB,EAAKwB,QAAc,GAGhC,CAAEmG,OAAO,EAAMC,UAAU,EAAM56F,MAAM,EAAMkmD,UAAU,EAAMvrD,OAAO,GAC5Eq4F,EAAKwB,QAAS9mN,GAAMwpN,GAAmBxpN,GAExC,IAAMA,IAAK,CAAE2vF,QAAQ,EAAM/lD,OAAO,GACjC07K,EAAKwB,QAAS9mN,GAAMypN,GAAoBzpN,GAIzC,SAASysN,MA0ET,SAAS1D,GAAYh5D,GAIpB,IAHA,IAAI/vJ,EAAI,EACP+vH,EAAMggC,EAAO5vJ,OACbmvI,EAAW,GACJtvI,EAAI+vH,EAAK/vH,IAChBsvI,GAAYygB,EAAQ/vJ,GAAIyE,MAEzB,OAAO6qI,EAGR,SAASg5E,GAAeqE,EAASQ,EAAY5+K,GAC5C,IAAIjd,EAAM67L,EAAW77L,IACpBmB,EAAO06L,EAAWlpN,KAClBkM,EAAMsiB,GAAQnB,EACd87L,EAAmB7+K,GAAgB,eAARp+B,EAC3Bk9M,EAAW7oN,IAEZ,OAAO2oN,EAAWthM,MAGjB,SAAU+9J,EAAMrc,EAAS4+C,GACxB,KAAUviC,EAAOA,EAAMt4J,IACtB,GAAuB,IAAlBs4J,EAAKl/E,UAAkB0iH,EAC3B,OAAOT,EAAS/iC,EAAMrc,EAAS4+C,GAGjC,OAAO,GAIR,SAAUviC,EAAMrc,EAAS4+C,GACxB,IAAImB,EAAUlB,EAAaC,EAC1BkB,EAAW,CAAEnH,EAASiH,GAGvB,GAAKlB,GACJ,KAAUviC,EAAOA,EAAMt4J,IACtB,IAAuB,IAAlBs4J,EAAKl/E,UAAkB0iH,IACtBT,EAAS/iC,EAAMrc,EAAS4+C,GAC5B,OAAO,OAKV,KAAUviC,EAAOA,EAAMt4J,IACtB,GAAuB,IAAlBs4J,EAAKl/E,UAAkB0iH,EAQ3B,GAHAhB,GAJAC,EAAaziC,EAAMm7B,KAAen7B,EAAMm7B,GAAY,KAI1Bn7B,EAAKtsH,YAC5B+uJ,EAAYziC,EAAKtsH,UAAa,IAE5B7qC,GAAQA,IAASm3J,EAAKpjJ,SAAS53B,cACnCg7K,EAAOA,EAAMt4J,IAASs4J,MAChB,KAAO0jC,EAAWlB,EAAaj8M,KACrCm9M,EAAU,KAAQlH,GAAWkH,EAAU,KAAQD,EAG/C,OAASE,EAAU,GAAMD,EAAU,GAOnC,GAHAlB,EAAaj8M,GAAQo9M,EAGdA,EAAU,GAAMZ,EAAS/iC,EAAMrc,EAAS4+C,GAC9C,OAAO,EAMZ,OAAO,GAIV,SAASqB,GAAgBC,GACxB,OAAOA,EAASttN,OAAS,EACxB,SAAUypL,EAAMrc,EAAS4+C,GAExB,IADA,IAAInsN,EAAIytN,EAASttN,OACTH,KACP,IAAMytN,EAAUztN,GAAK4pL,EAAMrc,EAAS4+C,GACnC,OAAO,EAGT,OAAO,GAERsB,EAAU,GAYZ,SAASC,GAAUd,EAAWx2M,EAAKyC,EAAQ00J,EAAS4+C,GAOnD,IANA,IAAIviC,EACH+jC,EAAe,GACf3tN,EAAI,EACJ+vH,EAAM68F,EAAUzsN,OAChBytN,EAAgB,MAAPx3M,EAEFpW,EAAI+vH,EAAK/vH,KACT4pL,EAAOgjC,EAAW5sN,MAClB6Y,IAAUA,EAAQ+wK,EAAMrc,EAAS4+C,KACtCwB,EAAahpN,KAAMilL,GACdgkC,GACJx3M,EAAIzR,KAAM3E,KAMd,OAAO2tN,EAGR,SAASE,GAAYpC,EAAWn8E,EAAUq9E,EAASmB,EAAYC,EAAYC,GAO1E,OANKF,IAAeA,EAAY/I,KAC/B+I,EAAaD,GAAYC,IAErBC,IAAeA,EAAYhJ,KAC/BgJ,EAAaF,GAAYE,EAAYC,IAE/B9E,IAAc,SAAUV,EAAM7mM,EAAS4rJ,EAAS4+C,GACtD,IAAIn0L,EAAMh4B,EAAG4pL,EACZqkC,EAAS,GACTC,EAAU,GACVC,EAAcxsM,EAAQxhB,OAGtBmkN,EAAQkE,GA5CX,SAA2Bl5E,EAAU8+E,EAAUzsM,GAG9C,IAFA,IAAI3hB,EAAI,EACP+vH,EAAMq+F,EAASjuN,OACRH,EAAI+vH,EAAK/vH,IAChBqlN,GAAQ/1E,EAAU8+E,EAAUpuN,GAAK2hB,GAElC,OAAOA,EAsCW0sM,CACf/+E,GAAY,IACZi+B,EAAQ7iE,SAAW,CAAE6iE,GAAYA,EACjC,IAID+gD,GAAY7C,IAAejD,GAASl5E,EAEnCg1E,EADAoJ,GAAUpJ,EAAO2J,EAAQxC,EAAWl+C,EAAS4+C,GAG9CoC,EAAa5B,EAGZoB,IAAgBvF,EAAOiD,EAAY0C,GAAeL,GAGjD,GAGAnsM,EACD2sM,EAQF,GALK3B,GACJA,EAAS2B,EAAWC,EAAYhhD,EAAS4+C,GAIrC2B,EAMJ,IALA91L,EAAO01L,GAAUa,EAAYL,GAC7BJ,EAAY91L,EAAM,GAAIu1I,EAAS4+C,GAG/BnsN,EAAIg4B,EAAK73B,OACDH,MACA4pL,EAAO5xJ,EAAMh4B,MACnBuuN,EAAYL,EAASluN,MAAWsuN,EAAWJ,EAASluN,IAAQ4pL,IAK/D,GAAK4+B,GACJ,GAAKuF,GAActC,EAAY,CAC9B,GAAKsC,EAAa,CAKjB,IAFA/1L,EAAO,GACPh4B,EAAIuuN,EAAWpuN,OACPH,MACA4pL,EAAO2kC,EAAYvuN,KAGzBg4B,EAAKrzB,KAAQ2pN,EAAWtuN,GAAM4pL,GAGhCmkC,EAAY,KAAQQ,EAAa,GAAMv2L,EAAMm0L,GAK9C,IADAnsN,EAAIuuN,EAAWpuN,OACPH,MACA4pL,EAAO2kC,EAAYvuN,MACvBg4B,EAAO+1L,EAAavnN,EAASgiN,EAAM5+B,GAASqkC,EAAQjuN,KAAS,IAE/DwoN,EAAMxwL,KAAYrW,EAASqW,GAAS4xJ,UAOvC2kC,EAAab,GACZa,IAAe5sM,EACd4sM,EAAW9nN,OAAQ0nN,EAAaI,EAAWpuN,QAC3CouN,GAEGR,EACJA,EAAY,KAAMpsM,EAAS4sM,EAAYpC,GAEvCxnN,EAAKc,MAAOkc,EAAS4sM,MAMzB,SAASC,GAAmBz+D,GAyB3B,IAxBA,IAAI0+D,EAAc9B,EAAShhJ,EAC1BokD,EAAMggC,EAAO5vJ,OACbuuN,EAAkBpJ,EAAKkG,SAAUz7D,EAAQ,GAAI3kJ,MAC7CujN,EAAmBD,GAAmBpJ,EAAKkG,SAAU,KACrDxrN,EAAI0uN,EAAkB,EAAI,EAG1BE,EAAetG,IAAe,SAAU1+B,GACvC,OAAOA,IAAS6kC,IACdE,GAAkB,GACrBE,EAAkBvG,IAAe,SAAU1+B,GAC1C,OAAOpjL,EAASioN,EAAc7kC,IAAU,IACtC+kC,GAAkB,GACrBlB,EAAW,CAAE,SAAU7jC,EAAMrc,EAAS4+C,GACrC,IAAI/sH,GAASsvH,IAAqBvC,GAAO5+C,IAAYo4C,MAClD8I,EAAelhD,GAAU7iE,SAC1BkkH,EAAchlC,EAAMrc,EAAS4+C,GAC7B0C,EAAiBjlC,EAAMrc,EAAS4+C,IAIlC,OADAsC,EAAe,KACRrvH,IAGDp/F,EAAI+vH,EAAK/vH,IAChB,GAAO2sN,EAAUrH,EAAKkG,SAAUz7D,EAAQ/vJ,GAAIoL,MAC3CqiN,EAAW,CAAEnF,GAAekF,GAAgBC,GAAYd,QAClD,CAIN,IAHAA,EAAUrH,EAAKzsM,OAAQk3I,EAAQ/vJ,GAAIoL,MAAO3F,MAAO,KAAMsqJ,EAAQ/vJ,GAAIqvI,UAGrD01E,GAAY,CAIzB,IADAp5I,IAAM3rE,EACE2rE,EAAIokD,IACNu1F,EAAKkG,SAAUz7D,EAAQpkF,GAAIvgE,MADhBugE,KAKjB,OAAOkiJ,GACN7tN,EAAI,GAAKwtN,GAAgBC,GACzBztN,EAAI,GAAK+oN,GAGTh5D,EACE/kJ,MAAO,EAAGhL,EAAI,GACd4Y,OAAQ,CAAEnU,MAAgC,MAAzBsrJ,EAAQ/vJ,EAAI,GAAIoL,KAAe,IAAM,MACtDyH,QAASm0M,EAAO,MAClB2F,EACA3sN,EAAI2rE,GAAK6iJ,GAAmBz+D,EAAO/kJ,MAAOhL,EAAG2rE,IAC7CA,EAAIokD,GAAOy+F,GAAqBz+D,EAASA,EAAO/kJ,MAAO2gE,IACvDA,EAAIokD,GAAOg5F,GAAYh5D,IAGzB09D,EAAS9oN,KAAMgoN,GAIjB,OAAOa,GAAgBC,GAoTxB,OAtpBAhB,GAAWztN,UAAYsmN,EAAK11L,QAAU01L,EAAKwB,QAC3CxB,EAAKmH,WAAa,IAAIA,GAEtB/9D,EAAW22D,GAAO32D,SAAW,SAAUpf,EAAUw/E,GAChD,IAAIpC,EAASx/L,EAAO6iI,EAAQ3kJ,EAC3B2jN,EAAOxqI,EAAQyqI,EACfhqI,EAASuhI,EAAYj3E,EAAW,KAEjC,GAAKtqD,EACJ,OAAO8pI,EAAY,EAAI9pI,EAAOh6E,MAAO,GAOtC,IAJA+jN,EAAQz/E,EACR/qD,EAAS,GACTyqI,EAAa1J,EAAKmG,UAEVsD,GAAQ,CA2Bf,IAAM3jN,KAxBAshN,KAAax/L,EAAQ+5L,EAAO5vL,KAAM03L,MAClC7hM,IAGJ6hM,EAAQA,EAAM/jN,MAAOkiB,EAAO,GAAI/sB,SAAY4uN,GAE7CxqI,EAAO5/E,KAAQorJ,EAAS,KAGzB28D,GAAU,GAGHx/L,EAAQg6L,EAAa7vL,KAAM03L,MACjCrC,EAAUx/L,EAAMgR,QAChB6xH,EAAOprJ,KAAM,CACZF,MAAOioN,EAGPthN,KAAM8hB,EAAO,GAAIra,QAASm0M,EAAO,OAElC+H,EAAQA,EAAM/jN,MAAO0hN,EAAQvsN,SAIhBmlN,EAAKzsM,SACXqU,EAAQo6L,EAAWl8M,GAAOisB,KAAM03L,KAAgBC,EAAY5jN,MAChE8hB,EAAQ8hM,EAAY5jN,GAAQ8hB,MAC9Bw/L,EAAUx/L,EAAMgR,QAChB6xH,EAAOprJ,KAAM,CACZF,MAAOioN,EACPthN,KAAMA,EACNikI,QAASniH,IAEV6hM,EAAQA,EAAM/jN,MAAO0hN,EAAQvsN,SAI/B,IAAMusN,EACL,MAOF,OAAOoC,EACNC,EAAM5uN,OACN4uN,EACC1J,GAAOt/M,MAAOupI,GAGdi3E,EAAYj3E,EAAU/qD,GAASv5E,MAAO,IA4ZzCy6M,EAAUJ,GAAOI,QAAU,SAAUn2E,EAAUpiH,GAC9C,IAAIltB,EACHivN,EAAc,GACdC,EAAkB,GAClBlqI,EAASwhI,EAAel3E,EAAW,KAEpC,IAAMtqD,EAAS,CAOd,IAJM93D,IACLA,EAAQwhI,EAAUpf,IAEnBtvI,EAAIktB,EAAM/sB,OACFH,MACPglF,EAASwpI,GAAmBthM,EAAOltB,KACtB+kN,GACZkK,EAAYtqN,KAAMqgF,GAElBkqI,EAAgBvqN,KAAMqgF,GAKxBA,EAASwhI,EACRl3E,EArJH,SAAmC4/E,EAAiBD,GACnD,IAAIE,EAAQF,EAAY9uN,OAAS,EAChCivN,EAAYF,EAAgB/uN,OAAS,EACrCkvN,EAAe,SAAU7G,EAAMj7C,EAAS4+C,EAAKxqM,EAAS2tM,GACrD,IAAI1lC,EAAMj+G,EAAGghJ,EACZ4C,EAAe,EACfvvN,EAAI,IACJ4sN,EAAYpE,GAAQ,GACpBgH,EAAa,GACbC,EAAgB9J,EAGhBrB,EAAQkE,GAAQ4G,GAAa9J,EAAK3rK,KAAY,IAAG,IAAK21K,GAGtDI,EAAkBtJ,GAA4B,MAAjBqJ,EAAwB,EAAIptM,KAAKC,UAAY,GAC1EytG,EAAMu0F,EAAMnkN,OAcb,IAZKmvN,IAMJ3J,EAAmBp4C,GAAW92J,GAAY82J,GAAW+hD,GAM9CtvN,IAAM+vH,GAAgC,OAAvB65D,EAAO06B,EAAOtkN,IAAeA,IAAM,CACzD,GAAKovN,GAAaxlC,EAAO,CAWxB,IAVAj+G,EAAI,EAME4hG,GAAWqc,EAAKjxJ,eAAiBliB,IACtCqvM,EAAal8B,GACbuiC,GAAOnG,GAEE2G,EAAUuC,EAAiBvjJ,MACpC,GAAKghJ,EAAS/iC,EAAMrc,GAAW92J,EAAU01M,GAAQ,CAChDxqM,EAAQhd,KAAMilL,GACd,MAGG0lC,IACJlJ,EAAUsJ,GAKPP,KAGGvlC,GAAQ+iC,GAAW/iC,IACzB2lC,IAII/G,GACJoE,EAAUjoN,KAAMilL,IAgBnB,GATA2lC,GAAgBvvN,EASXmvN,GAASnvN,IAAMuvN,EAAe,CAElC,IADA5jJ,EAAI,EACMghJ,EAAUsC,EAAatjJ,MAChCghJ,EAASC,EAAW4C,EAAYjiD,EAAS4+C,GAG1C,GAAK3D,EAAO,CAGX,GAAK+G,EAAe,EACnB,KAAQvvN,KACC4sN,EAAW5sN,IAAOwvN,EAAYxvN,KACrCwvN,EAAYxvN,GAAM0E,EAAIlF,KAAMmiB,IAM/B6tM,EAAa9B,GAAU8B,GAIxB7qN,EAAKc,MAAOkc,EAAS6tM,GAGhBF,IAAc9G,GAAQgH,EAAWrvN,OAAS,GAC5CovN,EAAeN,EAAY9uN,OAAW,GAExCklN,GAAO8F,WAAYxpM,GAUrB,OALK2tM,IACJlJ,EAAUsJ,EACV/J,EAAmB8J,GAGb7C,GAGT,OAAOuC,EACNjG,GAAcmG,GACdA,EA4BCM,CAA0BT,EAAiBD,IAI5CjqI,EAAOsqD,SAAWA,EAEnB,OAAOtqD,GAYR0gI,EAASL,GAAOK,OAAS,SAAUp2E,EAAUi+B,EAAS5rJ,EAAS6mM,GAC9D,IAAIxoN,EAAG+vJ,EAAQ1sJ,EAAO+H,EAAMuuC,EAC3Bi2K,EAA+B,mBAAbtgF,GAA2BA,EAC7CpiH,GAASs7L,GAAQ95D,EAAYpf,EAAWsgF,EAAStgF,UAAYA,GAM9D,GAJA3tH,EAAUA,GAAW,GAIC,IAAjBuL,EAAM/sB,OAAe,CAIzB,IADA4vJ,EAAS7iI,EAAO,GAAMA,EAAO,GAAIliB,MAAO,IAC5B7K,OAAS,GAAsC,QAA/BkD,EAAQ0sJ,EAAQ,IAAM3kJ,MAC5B,IAArBmiK,EAAQ7iE,UAAkBs7G,GAAkBV,EAAKkG,SAAUz7D,EAAQ,GAAI3kJ,MAAS,CAIhF,KAFAmiK,GAAY+3C,EAAK3rK,KAAW,GAAGt2C,EAAMgsI,QAAS,GAC5Cx8H,QAASg1M,GAAWC,IAAav6C,IAAa,IAAM,IAErD,OAAO5rJ,EAGIiuM,IACXriD,EAAUA,EAAQ1gI,YAGnByiG,EAAWA,EAAStkI,MAAO+kJ,EAAO7xH,QAAQz5B,MAAMtE,QAKjD,IADAH,EAAIsnN,EAA0B,aAAEpoM,KAAMowH,GAAa,EAAIygB,EAAO5vJ,OACtDH,MACPqD,EAAQ0sJ,EAAQ/vJ,IAGXslN,EAAKkG,SAAYpgN,EAAO/H,EAAM+H,QAGnC,IAAOuuC,EAAO2rK,EAAK3rK,KAAMvuC,MAGjBo9M,EAAO7uK,EACbt2C,EAAMgsI,QAAS,GAAIx8H,QAASg1M,GAAWC,IACvCF,GAAS1oM,KAAM6wI,EAAQ,GAAI3kJ,OAAU09M,GAAav7C,EAAQ1gI,aACzD0gI,IACI,CAKL,GAFAxd,EAAOtpJ,OAAQzG,EAAG,KAClBsvI,EAAWk5E,EAAKroN,QAAU4oN,GAAYh5D,IAGrC,OADAprJ,EAAKc,MAAOkc,EAAS6mM,GACd7mM,EAGR,OAeJ,OAPEiuM,GAAYnK,EAASn2E,EAAUpiH,IAChCs7L,EACAj7C,GACCy4C,EACDrkM,GACC4rJ,GAAWq6C,GAAS1oM,KAAMowH,IAAcw5E,GAAav7C,EAAQ1gI,aAAgB0gI,GAExE5rJ,GAMRs+F,EAAQqrG,WAAavG,EAAQ96M,MAAO,IAAKwnB,KAAMi1L,GAAY3hM,KAAM,MAASggM,EAI1E9kG,EAAQorG,mBAAqBxF,EAG7BC,IAIA7lG,EAAQ2qG,aAAezB,IAAQ,SAAUtrL,GAGxC,OAA4E,EAArEA,EAAG4sL,wBAAyBh0M,EAASE,cAAe,gBAMtDwyM,IAAQ,SAAUtrL,GAEvB,OADAA,EAAG3T,UAAY,mBACiC,MAAzC2T,EAAGL,WAAW5f,aAAc,YAEnCwrM,GAAW,0BAA0B,SAAUx/B,EAAMpoL,EAAMgkN,GAC1D,IAAMA,EACL,OAAO57B,EAAKhsK,aAAcpc,EAA6B,SAAvBA,EAAKoN,cAA2B,EAAI,MAOjEqxG,EAAQp8F,YAAeslM,IAAQ,SAAUtrL,GAG9C,OAFAA,EAAG3T,UAAY,WACf2T,EAAGL,WAAWvT,aAAc,QAAS,IACY,KAA1C4T,EAAGL,WAAW5f,aAAc,aAEnCwrM,GAAW,SAAS,SAAUx/B,EAAMimC,EAAOrK,GAC1C,IAAMA,GAAyC,UAAhC57B,EAAKpjJ,SAAS53B,cAC5B,OAAOg7K,EAAKl2J,gBAOTy1L,IAAQ,SAAUtrL,GACvB,OAAwC,MAAjCA,EAAGjgB,aAAc,gBAExBwrM,GAAWxC,GAAU,SAAUh9B,EAAMpoL,EAAMgkN,GAC1C,IAAIjkN,EACJ,IAAMikN,EACL,OAAwB,IAAjB57B,EAAMpoL,GAAkBA,EAAKoN,eACjCrN,EAAMqoL,EAAKygC,iBAAkB7oN,KAAYD,EAAI0pN,UAC9C1pN,EAAIkD,MACJ,QAKE4gN,GA14EP,CA44EKjzM,GAIL09H,EAAOn2F,KAAO0rK,EACdv1E,EAAOk7E,KAAO3F,EAAOn6B,UAGrBp7C,EAAOk7E,KAAM,KAAQl7E,EAAOk7E,KAAKlE,QACjCh3E,EAAOq7E,WAAar7E,EAAOggF,OAASzK,EAAO8F,WAC3Cr7E,EAAOzqG,KAAOggL,EAAOE,QACrBz1E,EAAOigF,SAAW1K,EAAOG,MACzB11E,EAAOz5G,SAAWgvL,EAAOhvL,SACzBy5G,EAAOkgF,eAAiB3K,EAAO1iF,OAK/B,IAAIrxG,EAAM,SAAUs4J,EAAMt4J,EAAKk9I,GAI9B,IAHA,IAAIk+C,EAAU,GACbuD,OAAqBzgN,IAAVg/J,GAEFob,EAAOA,EAAMt4J,KAA6B,IAAlBs4J,EAAKl/E,UACtC,GAAuB,IAAlBk/E,EAAKl/E,SAAiB,CAC1B,GAAKulH,GAAYngF,EAAQ85C,GAAO1I,GAAI1S,GACnC,MAEDk+C,EAAQ/nN,KAAMilL,GAGhB,OAAO8iC,GAIJr9C,EAAW,SAAUpvK,EAAG2pL,GAG3B,IAFA,IAAI8iC,EAAU,GAENzsN,EAAGA,EAAIA,EAAEgwI,YACI,IAAfhwI,EAAEyqG,UAAkBzqG,IAAM2pL,GAC9B8iC,EAAQ/nN,KAAM1E,GAIhB,OAAOysN,GAIJwD,EAAgBpgF,EAAOk7E,KAAK99L,MAAMijM,aAItC,SAAS3pL,EAAUojJ,EAAMpoL,GAExB,OAAOooL,EAAKpjJ,UAAYojJ,EAAKpjJ,SAAS53B,gBAAkBpN,EAAKoN,cAG9D,IAAIwhN,EAAa,kEAKjB,SAASC,EAAQ/sL,EAAUgtL,EAAWhmC,GACrC,OAAK56J,EAAY4gM,GACTxgF,EAAO20E,KAAMnhL,GAAU,SAAUsmJ,EAAM5pL,GAC7C,QAASswN,EAAU9wN,KAAMoqL,EAAM5pL,EAAG4pL,KAAWU,KAK1CgmC,EAAU5lH,SACPolC,EAAO20E,KAAMnhL,GAAU,SAAUsmJ,GACvC,OAASA,IAAS0mC,IAAgBhmC,KAKV,iBAAdgmC,EACJxgF,EAAO20E,KAAMnhL,GAAU,SAAUsmJ,GACvC,OAASpjL,EAAQhH,KAAM8wN,EAAW1mC,IAAU,IAAQU,KAK/Cx6C,EAAOj3H,OAAQy3M,EAAWhtL,EAAUgnJ,GAG5Cx6C,EAAOj3H,OAAS,SAAUmyM,EAAM1G,EAAOh6B,GACtC,IAAIV,EAAO06B,EAAO,GAMlB,OAJKh6B,IACJ0gC,EAAO,QAAUA,EAAO,KAGH,IAAjB1G,EAAMnkN,QAAkC,IAAlBypL,EAAKl/E,SACxBolC,EAAOn2F,KAAK2wK,gBAAiB1gC,EAAMohC,GAAS,CAAEphC,GAAS,GAGxD95C,EAAOn2F,KAAK01F,QAAS27E,EAAMl7E,EAAO20E,KAAMH,GAAO,SAAU16B,GAC/D,OAAyB,IAAlBA,EAAKl/E,cAIdolC,EAAOzwH,GAAG4xE,OAAQ,CACjBt3C,KAAM,SAAU21F,GACf,IAAItvI,EAAGo/F,EACN2wB,EAAMjxH,KAAKqB,OACX2X,EAAOhZ,KAER,GAAyB,iBAAbwwI,EACX,OAAOxwI,KAAKulN,UAAWv0E,EAAQR,GAAWz2H,QAAQ,WACjD,IAAM7Y,EAAI,EAAGA,EAAI+vH,EAAK/vH,IACrB,GAAK8vI,EAAOz5G,SAAUve,EAAM9X,GAAKlB,MAChC,OAAO,MAQX,IAFAsgG,EAAMtgG,KAAKulN,UAAW,IAEhBrkN,EAAI,EAAGA,EAAI+vH,EAAK/vH,IACrB8vI,EAAOn2F,KAAM21F,EAAUx3H,EAAM9X,GAAKo/F,GAGnC,OAAO2wB,EAAM,EAAI+f,EAAOq7E,WAAY/rH,GAAQA,GAE7CvmF,OAAQ,SAAUy2H,GACjB,OAAOxwI,KAAKulN,UAAWgM,EAAQvxN,KAAMwwI,GAAY,IAAI,KAEtDg7C,IAAK,SAAUh7C,GACd,OAAOxwI,KAAKulN,UAAWgM,EAAQvxN,KAAMwwI,GAAY,IAAI,KAEtD4xC,GAAI,SAAU5xC,GACb,QAAS+gF,EACRvxN,KAIoB,iBAAbwwI,GAAyB4gF,EAAchxM,KAAMowH,GACnDQ,EAAQR,GACRA,GAAY,IACb,GACCnvI,UASJ,IAAIowN,EAMH5I,EAAa,uCAEN73E,EAAOzwH,GAAGuoL,KAAO,SAAUt4D,EAAUi+B,EAAS1rD,GACpD,IAAI30F,EAAO08J,EAGX,IAAMt6C,EACL,OAAOxwI,KAQR,GAHA+iH,EAAOA,GAAQ0uG,EAGU,iBAAbjhF,EAAwB,CAanC,KAPCpiH,EALsB,MAAlBoiH,EAAU,IACsB,MAApCA,EAAUA,EAASnvI,OAAS,IAC5BmvI,EAASnvI,QAAU,EAGX,CAAE,KAAMmvI,EAAU,MAGlBq4E,EAAWtwL,KAAMi4G,MAIVpiH,EAAO,IAAQqgJ,EA6CxB,OAAMA,GAAWA,EAAQsT,QACtBtT,GAAW1rD,GAAOloE,KAAM21F,GAK1BxwI,KAAKC,YAAawuK,GAAU5zH,KAAM21F,GAhDzC,GAAKpiH,EAAO,GAAM,CAYjB,GAXAqgJ,EAAUA,aAAmBz9B,EAASy9B,EAAS,GAAMA,EAIrDz9B,EAAO13G,MAAOt5B,KAAMgxI,EAAO0gF,UAC1BtjM,EAAO,GACPqgJ,GAAWA,EAAQ7iE,SAAW6iE,EAAQ50I,eAAiB40I,EAAU92J,GACjE,IAII25M,EAAWlxM,KAAMgO,EAAO,KAAS4iH,EAAOg1E,cAAev3C,GAC3D,IAAMrgJ,KAASqgJ,EAGT79I,EAAY5wB,KAAMouB,IACtBpuB,KAAMouB,GAASqgJ,EAASrgJ,IAIxBpuB,KAAK2e,KAAMyP,EAAOqgJ,EAASrgJ,IAK9B,OAAOpuB,KAYP,OARA8qL,EAAOnzK,EAASkpK,eAAgBzyJ,EAAO,OAKtCpuB,KAAM,GAAM8qL,EACZ9qL,KAAKqB,OAAS,GAERrB,KAcH,OAAKwwI,EAAS5kC,UACpB5rG,KAAM,GAAMwwI,EACZxwI,KAAKqB,OAAS,EACPrB,MAII4wB,EAAY4/G,QACD9/H,IAAfqyG,EAAK4uG,MACX5uG,EAAK4uG,MAAOnhF,GAGZA,EAAUQ,GAGLA,EAAOmsD,UAAW3sD,EAAUxwI,QAIhCE,UAAY8wI,EAAOzwH,GAGxBkxM,EAAazgF,EAAQr5H,GAGrB,IAAIi6M,EAAe,iCAGlBC,EAAmB,CAClB3rM,UAAU,EACVo4G,UAAU,EACVn5H,MAAM,EACNumC,MAAM,GAoFR,SAASwkI,EAAS/jC,EAAK35G,GACtB,MAAU25G,EAAMA,EAAK35G,KAA4B,IAAjB25G,EAAIvgC,WACpC,OAAOugC,EAnFR6E,EAAOzwH,GAAG4xE,OAAQ,CACjBtgE,IAAK,SAAU1gB,GACd,IAAI2gN,EAAU9gF,EAAQ7/H,EAAQnR,MAC7BigG,EAAI6xH,EAAQzwN,OAEb,OAAOrB,KAAK+Z,QAAQ,WAEnB,IADA,IAAI7Y,EAAI,EACAA,EAAI++F,EAAG/+F,IACd,GAAK8vI,EAAOz5G,SAAUv3B,KAAM8xN,EAAS5wN,IACpC,OAAO,MAMX0vI,QAAS,SAAUw7C,EAAW3d,GAC7B,IAAItiC,EACHjrI,EAAI,EACJ++F,EAAIjgG,KAAKqB,OACTusN,EAAU,GACVkE,EAA+B,iBAAd1lC,GAA0Bp7C,EAAQo7C,GAGpD,IAAMglC,EAAchxM,KAAMgsK,GACzB,KAAQlrL,EAAI++F,EAAG/+F,IACd,IAAMirI,EAAMnsI,KAAMkB,GAAKirI,GAAOA,IAAQsiC,EAAStiC,EAAMA,EAAIp+F,WAGxD,GAAKo+F,EAAIvgC,SAAW,KAAQkmH,EAC3BA,EAAQrqN,MAAO0kI,IAAS,EAGP,IAAjBA,EAAIvgC,UACHolC,EAAOn2F,KAAK2wK,gBAAiBr/E,EAAKigD,IAAgB,CAEnDwhC,EAAQ/nN,KAAMsmI,GACd,MAMJ,OAAOnsI,KAAKulN,UAAWqI,EAAQvsN,OAAS,EAAI2vI,EAAOq7E,WAAYuB,GAAYA,IAI5EnmN,MAAO,SAAUqjL,GAGhB,OAAMA,EAKe,iBAATA,EACJpjL,EAAQhH,KAAMswI,EAAQ85C,GAAQ9qL,KAAM,IAIrC0H,EAAQhH,KAAMV,KAGpB8qL,EAAK/I,OAAS+I,EAAM,GAAMA,GAZjB9qL,KAAM,IAAOA,KAAM,GAAI+tC,WAAe/tC,KAAK+sB,QAAQglM,UAAU1wN,QAAU,GAgBlF2gE,IAAK,SAAUwuE,EAAUi+B,GACxB,OAAOzuK,KAAKulN,UACXv0E,EAAOq7E,WACNr7E,EAAO13G,MAAOt5B,KAAK0B,MAAOsvI,EAAQR,EAAUi+B,OAK/CujD,QAAS,SAAUxhF,GAClB,OAAOxwI,KAAKgiE,IAAiB,MAAZwuE,EAChBxwI,KAAKylN,WAAazlN,KAAKylN,WAAW1rM,OAAQy2H,OAU7CQ,EAAOwyC,KAAM,CACZrkI,OAAQ,SAAU2rI,GACjB,IAAI3rI,EAAS2rI,EAAK/8I,WAClB,OAAOoR,GAA8B,KAApBA,EAAOysD,SAAkBzsD,EAAS,MAEpD0tE,QAAS,SAAUi+D,GAClB,OAAOt4J,EAAKs4J,EAAM,eAEnBmnC,aAAc,SAAUnnC,EAAM9jL,EAAI0oK,GACjC,OAAOl9I,EAAKs4J,EAAM,aAAcpb,IAEjCvqK,KAAM,SAAU2lL,GACf,OAAO5a,EAAS4a,EAAM,gBAEvBp/I,KAAM,SAAUo/I,GACf,OAAO5a,EAAS4a,EAAM,oBAEvBonC,QAAS,SAAUpnC,GAClB,OAAOt4J,EAAKs4J,EAAM,gBAEnBinC,QAAS,SAAUjnC,GAClB,OAAOt4J,EAAKs4J,EAAM,oBAEnBqnC,UAAW,SAAUrnC,EAAM9jL,EAAI0oK,GAC9B,OAAOl9I,EAAKs4J,EAAM,cAAepb,IAElC0iD,UAAW,SAAUtnC,EAAM9jL,EAAI0oK,GAC9B,OAAOl9I,EAAKs4J,EAAM,kBAAmBpb,IAEtCa,SAAU,SAAUua,GACnB,OAAOva,GAAYua,EAAK/8I,YAAc,IAAKrP,WAAYosJ,IAExD5kK,SAAU,SAAU4kK,GACnB,OAAOva,EAAUua,EAAKpsJ,aAEvB4/F,SAAU,SAAUwsD,GACnB,OAA6B,MAAxBA,EAAKunC,iBAKTvsB,EAAUhb,EAAKunC,iBAERvnC,EAAKunC,iBAMR3qL,EAAUojJ,EAAM,cACpBA,EAAOA,EAAKtpL,SAAWspL,GAGjB95C,EAAO13G,MAAO,GAAIwxJ,EAAKx/J,gBAE7B,SAAU5oB,EAAM6d,GAClBywH,EAAOzwH,GAAI7d,GAAS,SAAUgtK,EAAOl/B,GACpC,IAAIo9E,EAAU58E,EAAO15H,IAAKtX,KAAMugB,EAAImvJ,GAuBpC,MArB0B,UAArBhtK,EAAKwJ,OAAQ,KACjBskI,EAAWk/B,GAGPl/B,GAAgC,iBAAbA,IACvBo9E,EAAU58E,EAAOj3H,OAAQy2H,EAAUo9E,IAG/B5tN,KAAKqB,OAAS,IAGZwwN,EAAkBnvN,IACvBsuI,EAAOq7E,WAAYuB,GAIfgE,EAAaxxM,KAAM1d,IACvBkrN,EAAQ59I,WAIHhwE,KAAKulN,UAAWqI,OAGzB,IAAI0E,EAAgB,oBAsOpB,SAASC,EAAUhtN,GAClB,OAAOA,EAER,SAASitN,EAASr6E,GACjB,MAAMA,EAGP,SAASs6E,EAAY9sN,EAAOU,EAASC,EAAQosN,GAC5C,IAAI5wN,EAEJ,IAGM6D,GAASirB,EAAc9uB,EAAS6D,EAAMic,SAC1C9f,EAAOpB,KAAMiF,GAAQD,KAAMW,GAAUssN,KAAMrsN,GAGhCX,GAASirB,EAAc9uB,EAAS6D,EAAMe,MACjD5E,EAAOpB,KAAMiF,EAAOU,EAASC,GAQ7BD,EAAQM,WAAO+J,EAAW,CAAE/K,GAAQuG,MAAOwmN,IAM3C,MAAQ/sN,GAITW,EAAOK,WAAO+J,EAAW,CAAE/K,KAvO7BqrI,EAAO4hF,UAAY,SAAUhxN,GAI5BA,EAA6B,iBAAZA,EAlClB,SAAwBA,GACvB,IAAIijG,EAAS,GAIb,OAHAmsC,EAAOwyC,KAAM5hL,EAAQwsB,MAAOkkM,IAAmB,IAAI,SAAUxtN,EAAG+tN,GAC/DhuH,EAAQguH,IAAS,KAEXhuH,EA8BNiuH,CAAelxN,GACfovI,EAAO7+C,OAAQ,GAAIvwF,GAEpB,IACCmxN,EAGAC,EAGAhpB,EAGA7nJ,EAGA/X,EAAO,GAGP6oL,EAAQ,GAGRC,GAAe,EAGfC,EAAO,WAQN,IALAhxK,EAASA,GAAUvgD,EAAQmnM,KAI3BiB,EAAQ+oB,GAAS,EACTE,EAAM5xN,OAAQ6xN,GAAe,EAEpC,IADAF,EAASC,EAAM7zL,UACL8zL,EAAc9oL,EAAK/oC,SAGmC,IAA1D+oC,EAAM8oL,GAAcvsN,MAAOqsN,EAAQ,GAAKA,EAAQ,KACpDpxN,EAAQwxN,cAGRF,EAAc9oL,EAAK/oC,OACnB2xN,GAAS,GAMNpxN,EAAQoxN,SACbA,GAAS,GAGVD,GAAS,EAGJ5wK,IAIH/X,EADI4oL,EACG,GAIA,KAMVh6M,EAAO,CAGNgpD,IAAK,WA2BJ,OA1BK53B,IAGC4oL,IAAWD,IACfG,EAAc9oL,EAAK/oC,OAAS,EAC5B4xN,EAAMptN,KAAMmtN,IAGb,SAAWhxJ,EAAKhzD,GACfgiI,EAAOwyC,KAAMx0K,GAAM,SAAUlK,EAAGuc,GAC1BuP,EAAYvP,GACVzf,EAAQovN,QAAWh4M,EAAK6Y,IAAKxQ,IAClC+oB,EAAKvkC,KAAMwb,GAEDA,GAAOA,EAAIhgB,QAA4B,WAAlBgkN,EAAQhkM,IAGxC2gD,EAAK3gD,MATR,CAYKjgB,WAEA4xN,IAAWD,GACfI,KAGKnzN,MAIR+hE,OAAQ,WAYP,OAXAivE,EAAOwyC,KAAMpiL,WAAW,SAAU0D,EAAGuc,GAEpC,IADA,IAAI5Z,GACMA,EAAQupI,EAAOo8D,QAAS/rL,EAAK+oB,EAAM3iC,KAAa,GACzD2iC,EAAKziC,OAAQF,EAAO,GAGfA,GAASyrN,GACbA,OAIIlzN,MAKR6xB,IAAK,SAAUtR,GACd,OAAOA,EACNywH,EAAOo8D,QAAS7sL,EAAI6pB,IAAU,EAC9BA,EAAK/oC,OAAS,GAIhBuwB,MAAO,WAIN,OAHKwY,IACJA,EAAO,IAEDpqC,MAMRi3L,QAAS,WAGR,OAFA90I,EAAS8wK,EAAQ,GACjB7oL,EAAO4oL,EAAS,GACThzN,MAERolC,SAAU,WACT,OAAQgF,GAMTipL,KAAM,WAKL,OAJAlxK,EAAS8wK,EAAQ,GACXD,GAAWD,IAChB3oL,EAAO4oL,EAAS,IAEVhzN,MAERmiD,OAAQ,WACP,QAASA,GAIVmxK,SAAU,SAAU7kD,EAASz/J,GAS5B,OARMmzC,IAELnzC,EAAO,CAAEy/J,GADTz/J,EAAOA,GAAQ,IACQ9C,MAAQ8C,EAAK9C,QAAU8C,GAC9CikN,EAAMptN,KAAMmJ,GACN+jN,GACLI,KAGKnzN,MAIRmzN,KAAM,WAEL,OADAn6M,EAAKs6M,SAAUtzN,KAAMoB,WACdpB,MAIRgqM,MAAO,WACN,QAASA,IAIZ,OAAOhxL,GA4CRg4H,EAAO7+C,OAAQ,CAEdohI,SAAU,SAAU1rM,GACnB,IAAI2rM,EAAS,CAIX,CAAE,SAAU,WAAYxiF,EAAO4hF,UAAW,UACzC5hF,EAAO4hF,UAAW,UAAY,GAC/B,CAAE,UAAW,OAAQ5hF,EAAO4hF,UAAW,eACtC5hF,EAAO4hF,UAAW,eAAiB,EAAG,YACvC,CAAE,SAAU,OAAQ5hF,EAAO4hF,UAAW,eACrC5hF,EAAO4hF,UAAW,eAAiB,EAAG,aAExCxgM,EAAQ,UACRxQ,EAAU,CACTwQ,MAAO,WACN,OAAOA,GAERqhM,OAAQ,WAEP,OADAC,EAAShuN,KAAMtE,WAAYuxN,KAAMvxN,WAC1BpB,MAER,MAAS,SAAUugB,GAClB,OAAOqB,EAAQlb,KAAM,KAAM6Z,IAI5Bs/J,KAAM,WACL,IAAIjC,EAAMx8K,UAEV,OAAO4vI,EAAOuiF,UAAU,SAAUI,GACjC3iF,EAAOwyC,KAAMgwC,GAAQ,SAAUxsN,EAAI4sN,GAGlC,IAAIrzM,EAAKqQ,EAAYgtJ,EAAKg2C,EAAO,MAAWh2C,EAAKg2C,EAAO,IAKxDF,EAAUE,EAAO,KAAO,WACvB,IAAIC,EAAWtzM,GAAMA,EAAG5Z,MAAO3G,KAAMoB,WAChCyyN,GAAYjjM,EAAYijM,EAASjyM,SACrCiyM,EAASjyM,UACPytC,SAAUskK,EAASG,QACnBpuN,KAAMiuN,EAASttN,SACfssN,KAAMgB,EAASrtN,QAEjBqtN,EAAUC,EAAO,GAAM,QACtB5zN,KACAugB,EAAK,CAAEszM,GAAazyN,iBAKxBw8K,EAAM,QACHh8J,WAELlb,KAAM,SAAUqtN,EAAaC,EAAYC,GACxC,IAAI3lI,EAAW,EACf,SAASjoF,EAAS+/C,EAAOstK,EAAUplL,EAAS2zI,GAC3C,OAAO,WACN,IAAIwnB,EAAOzpM,KACVgP,EAAO5N,UACP8yN,EAAa,WACZ,IAAIL,EAAUntN,EAKd,KAAK0/C,EAAQkoC,GAAb,CAQA,IAJAulI,EAAWvlL,EAAQ3nC,MAAO8iM,EAAMz6L,MAId0kN,EAAS9xM,UAC1B,MAAM,IAAInc,UAAW,4BAOtBiB,EAAOmtN,IAKgB,iBAAbA,GACY,mBAAbA,IACRA,EAASntN,KAGLkqB,EAAYlqB,GAGXu7K,EACJv7K,EAAKhG,KACJmzN,EACAxtN,EAASioF,EAAUolI,EAAUnB,EAAUtwC,GACvC57K,EAASioF,EAAUolI,EAAUlB,EAASvwC,KAOvC3zF,IAEA5nF,EAAKhG,KACJmzN,EACAxtN,EAASioF,EAAUolI,EAAUnB,EAAUtwC,GACvC57K,EAASioF,EAAUolI,EAAUlB,EAASvwC,GACtC57K,EAASioF,EAAUolI,EAAUnB,EAC5BmB,EAASS,eASP7lL,IAAYikL,IAChB9oB,OAAO/4L,EACP1B,EAAO,CAAE6kN,KAKR5xC,GAAWyxC,EAASU,aAAe3qB,EAAMz6L,MAK7C8R,EAAUmhK,EACTiyC,EACA,WACC,IACCA,IACC,MAAQpuN,GAEJkrI,EAAOuiF,SAASc,eACpBrjF,EAAOuiF,SAASc,cAAevuN,EAC9Bgb,EAAQwzM,YAMLluK,EAAQ,GAAKkoC,IAIZhgD,IAAYkkL,IAChB/oB,OAAO/4L,EACP1B,EAAO,CAAElJ,IAGV4tN,EAASa,WAAY9qB,EAAMz6L,MAS3Bo3C,EACJtlC,KAKKkwH,EAAOuiF,SAASiB,eACpB1zM,EAAQwzM,WAAatjF,EAAOuiF,SAASiB,gBAEtClhN,EAAOzC,WAAYiQ,KAKtB,OAAOkwH,EAAOuiF,UAAU,SAAUI,GAGjCH,EAAQ,GAAK,GAAIxxJ,IAChB37D,EACC,EACAstN,EACA/iM,EAAYqjM,GACXA,EACA1B,EACDoB,EAASQ,aAKXX,EAAQ,GAAK,GAAIxxJ,IAChB37D,EACC,EACAstN,EACA/iM,EAAYmjM,GACXA,EACAxB,IAKHiB,EAAQ,GAAK,GAAIxxJ,IAChB37D,EACC,EACAstN,EACA/iM,EAAYojM,GACXA,EACAxB,OAGA5wM,WAKLA,QAAS,SAAU1I,GAClB,OAAc,MAAPA,EAAc83H,EAAO7+C,OAAQj5E,EAAK0I,GAAYA,IAGvD8xM,EAAW,GAkEZ,OA/DA1iF,EAAOwyC,KAAMgwC,GAAQ,SAAUtyN,EAAG0yN,GACjC,IAAIxpL,EAAOwpL,EAAO,GACjBa,EAAcb,EAAO,GAKtBhyM,EAASgyM,EAAO,IAAQxpL,EAAK43B,IAGxByyJ,GACJrqL,EAAK43B,KACJ,WAIC5vC,EAAQqiM,IAKTjB,EAAQ,EAAItyN,GAAK,GAAI+1L,QAIrBu8B,EAAQ,EAAItyN,GAAK,GAAI+1L,QAGrBu8B,EAAQ,GAAK,GAAIH,KAGjBG,EAAQ,GAAK,GAAIH,MAOnBjpL,EAAK43B,IAAK4xJ,EAAO,GAAIT,MAKrBO,EAAUE,EAAO,IAAQ,WAExB,OADAF,EAAUE,EAAO,GAAM,QAAU5zN,OAAS0zN,OAAWhjN,EAAY1Q,KAAMoB,WAChEpB,MAMR0zN,EAAUE,EAAO,GAAM,QAAWxpL,EAAKkpL,YAIxC1xM,EAAQA,QAAS8xM,GAGZ7rM,GACJA,EAAKnnB,KAAMgzN,EAAUA,GAIfA,GAIRgB,KAAM,SAAUC,GACf,IAGC7xM,EAAY1hB,UAAUC,OAGtBH,EAAI4hB,EAGJ8xM,EAAkBl1N,MAAOwB,GACzB2zN,EAAgB3oN,EAAMxL,KAAMU,WAG5B85E,EAAU81D,EAAOuiF,WAGjBuB,EAAa,SAAU5zN,GACtB,OAAO,SAAUyE,GAChBivN,EAAiB1zN,GAAMlB,KACvB60N,EAAe3zN,GAAME,UAAUC,OAAS,EAAI6K,EAAMxL,KAAMU,WAAcuE,IAC5Dmd,GACTo4D,EAAQk5I,YAAaQ,EAAiBC,KAM1C,GAAK/xM,GAAa,IACjB2vM,EAAYkC,EAAaz5I,EAAQx1E,KAAMovN,EAAY5zN,IAAMmF,QAAS60E,EAAQ50E,QACxEwc,GAGuB,YAApBo4D,EAAQ9oD,SACZxB,EAAYikM,EAAe3zN,IAAO2zN,EAAe3zN,GAAIwF,OAErD,OAAOw0E,EAAQx0E,OAKjB,KAAQxF,KACPuxN,EAAYoC,EAAe3zN,GAAK4zN,EAAY5zN,GAAKg6E,EAAQ50E,QAG1D,OAAO40E,EAAQt5D,aAOjB,IAAImzM,EAAc,yDAElB/jF,EAAOuiF,SAASc,cAAgB,SAAUptN,EAAOsiB,GAI3CjW,EAAOnL,SAAWmL,EAAOnL,QAAQI,MAAQtB,GAAS8tN,EAAY30M,KAAMnZ,EAAMvE,OAC9E4Q,EAAOnL,QAAQI,KAAM,8BAAgCtB,EAAMgB,QAAShB,EAAMsiB,MAAOA,IAOnFynH,EAAOgkF,eAAiB,SAAU/tN,GACjCqM,EAAOzC,YAAY,WAClB,MAAM5J,MAQR,IAAIguN,EAAYjkF,EAAOuiF,WAkDvB,SAAS2B,IACRv9M,EAAS2I,oBAAqB,mBAAoB40M,GAClD5hN,EAAOgN,oBAAqB,OAAQ40M,GACpClkF,EAAO2gF,QAnDR3gF,EAAOzwH,GAAGoxM,MAAQ,SAAUpxM,GAY3B,OAVA00M,EACEvuN,KAAM6Z,GAKN1Y,OAAO,SAAUZ,GACjB+pI,EAAOgkF,eAAgB/tN,MAGlBjH,MAGRgxI,EAAO7+C,OAAQ,CAGd+zH,SAAS,EAITiP,UAAW,EAGXxD,MAAO,SAAU96C,KAGF,IAATA,IAAkB7lC,EAAOmkF,UAAYnkF,EAAOk1E,WAKjDl1E,EAAOk1E,SAAU,GAGH,IAATrvC,KAAmB7lC,EAAOmkF,UAAY,GAK3CF,EAAUb,YAAaz8M,EAAU,CAAEq5H,QAIrCA,EAAO2gF,MAAMjrN,KAAOuuN,EAAUvuN,KAaD,aAAxBiR,EAASvD,YACa,YAAxBuD,EAASvD,aAA6BuD,EAASgG,gBAAgBwC,SAGjE7M,EAAOzC,WAAYmgI,EAAO2gF,QAK1Bh6M,EAASkG,iBAAkB,mBAAoBq3M,GAG/C5hN,EAAOuK,iBAAkB,OAAQq3M,IAQlC,IAAIE,EAAS,SAAU5P,EAAOjlM,EAAIlP,EAAK1L,EAAO0vN,EAAWC,EAAUxiG,GAClE,IAAI5xH,EAAI,EACP+vH,EAAMu0F,EAAMnkN,OACZk0N,EAAc,MAAPlkN,EAGR,GAAuB,WAAlBg0M,EAAQh0M,GAEZ,IAAMnQ,KADNm0N,GAAY,EACDhkN,EACV+jN,EAAQ5P,EAAOjlM,EAAIrf,EAAGmQ,EAAKnQ,IAAK,EAAMo0N,EAAUxiG,QAI3C,QAAepiH,IAAV/K,IACX0vN,GAAY,EAENzkM,EAAYjrB,KACjBmtH,GAAM,GAGFyiG,IAGCziG,GACJvyG,EAAG7f,KAAM8kN,EAAO7/M,GAChB4a,EAAK,OAILg1M,EAAOh1M,EACPA,EAAK,SAAUuqK,EAAMngK,EAAMhlB,GAC1B,OAAO4vN,EAAK70N,KAAMswI,EAAQ85C,GAAQnlL,MAKhC4a,GACJ,KAAQrf,EAAI+vH,EAAK/vH,IAChBqf,EACCilM,EAAOtkN,GAAKmQ,EAAKyhH,EAChBntH,EACAA,EAAMjF,KAAM8kN,EAAOtkN,GAAKA,EAAGqf,EAAIilM,EAAOtkN,GAAKmQ,KAMhD,OAAKgkN,EACG7P,EAIH+P,EACGh1M,EAAG7f,KAAM8kN,GAGVv0F,EAAM1wG,EAAIilM,EAAO,GAAKn0M,GAAQikN,GAKlCE,EAAY,QACfC,EAAa,YAGd,SAASC,EAAYC,EAAM5zF,GAC1B,OAAOA,EAAOr2G,cAMf,SAASkqM,EAAWznM,GACnB,OAAOA,EAAOpa,QAASyhN,EAAW,OAAQzhN,QAAS0hN,EAAYC,GAEhE,IAAIG,EAAa,SAAUr0M,GAQ1B,OAA0B,IAAnBA,EAAMoqF,UAAqC,IAAnBpqF,EAAMoqF,YAAsBpqF,EAAMoqF,UAMlE,SAASkqH,IACR91N,KAAKimN,QAAUj1E,EAAOi1E,QAAU6P,EAAKC,MAGtCD,EAAKC,IAAM,EAEXD,EAAK51N,UAAY,CAEhBq4H,MAAO,SAAU/2G,GAGhB,IAAI7b,EAAQ6b,EAAOxhB,KAAKimN,SA4BxB,OAzBMtgN,IACLA,EAAQ,GAKHkwN,EAAYr0M,KAIXA,EAAMoqF,SACVpqF,EAAOxhB,KAAKimN,SAAYtgN,EAMxBpG,OAAOuO,eAAgB0T,EAAOxhB,KAAKimN,QAAS,CAC3CtgN,MAAOA,EACPqI,cAAc,MAMXrI,GAER8U,IAAK,SAAU+G,EAAO1e,EAAM6C,GAC3B,IAAI6oB,EACH+pG,EAAQv4H,KAAKu4H,MAAO/2G,GAIrB,GAAqB,iBAAT1e,EACXy1H,EAAOq9F,EAAW9yN,IAAW6C,OAM7B,IAAM6oB,KAAQ1rB,EACby1H,EAAOq9F,EAAWpnM,IAAW1rB,EAAM0rB,GAGrC,OAAO+pG,GAER72H,IAAK,SAAU8f,EAAOnQ,GACrB,YAAeX,IAARW,EACNrR,KAAKu4H,MAAO/2G,GAGZA,EAAOxhB,KAAKimN,UAAazkM,EAAOxhB,KAAKimN,SAAW2P,EAAWvkN,KAE7D+jN,OAAQ,SAAU5zM,EAAOnQ,EAAK1L,GAa7B,YAAa+K,IAARW,GACCA,GAAsB,iBAARA,QAAgCX,IAAV/K,EAElC3F,KAAK0B,IAAK8f,EAAOnQ,IASzBrR,KAAKya,IAAK+G,EAAOnQ,EAAK1L,QAIL+K,IAAV/K,EAAsBA,EAAQ0L,IAEtC0wD,OAAQ,SAAUvgD,EAAOnQ,GACxB,IAAInQ,EACHq3H,EAAQ/2G,EAAOxhB,KAAKimN,SAErB,QAAev1M,IAAV6nH,EAAL,CAIA,QAAa7nH,IAARW,EAAoB,CAkBxBnQ,GAXCmQ,EAJI3R,MAAMyc,QAAS9K,GAIbA,EAAIiG,IAAKs+M,IAEfvkN,EAAMukN,EAAWvkN,MAIJknH,EACZ,CAAElnH,GACAA,EAAI+c,MAAOkkM,IAAmB,IAG1BjxN,OAER,KAAQH,YACAq3H,EAAOlnH,EAAKnQ,UAKRwP,IAARW,GAAqB2/H,EAAOo1E,cAAe7tF,MAM1C/2G,EAAMoqF,SACVpqF,EAAOxhB,KAAKimN,cAAYv1M,SAEjB8Q,EAAOxhB,KAAKimN,YAItB+P,QAAS,SAAUx0M,GAClB,IAAI+2G,EAAQ/2G,EAAOxhB,KAAKimN,SACxB,YAAiBv1M,IAAV6nH,IAAwByY,EAAOo1E,cAAe7tF,KAGvD,IAAI09F,EAAW,IAAIH,EAEfI,EAAW,IAAIJ,EAcfK,GAAS,gCACZC,GAAa,SA2Bd,SAAS/8B,GAAUvO,EAAMz5K,EAAKvO,GAC7B,IAAIJ,EAIJ,QAAcgO,IAAT5N,GAAwC,IAAlBgoL,EAAKl/E,SAI/B,GAHAlpG,EAAO,QAAU2O,EAAI0C,QAASqiN,GAAY,OAAQtmN,cAG7B,iBAFrBhN,EAAOgoL,EAAKhsK,aAAcpc,IAEM,CAC/B,IACCI,EApCJ,SAAkBA,GACjB,MAAc,SAATA,GAIS,UAATA,IAIS,SAATA,EACG,KAIHA,KAAUA,EAAO,IACbA,EAGJqzN,GAAO/1M,KAAMtd,GACV4I,KAAKV,MAAOlI,GAGbA,GAcGuzN,CAASvzN,GACf,MAAQgD,IAGVowN,EAASz7M,IAAKqwK,EAAMz5K,EAAKvO,QAEzBA,OAAO4N,EAGT,OAAO5N,EAGRkuI,EAAO7+C,OAAQ,CACd6jI,QAAS,SAAUlrC,GAClB,OAAOorC,EAASF,QAASlrC,IAAUmrC,EAASD,QAASlrC,IAGtDhoL,KAAM,SAAUgoL,EAAMpoL,EAAMI,GAC3B,OAAOozN,EAASd,OAAQtqC,EAAMpoL,EAAMI,IAGrCogL,WAAY,SAAU4H,EAAMpoL,GAC3BwzN,EAASn0J,OAAQ+oH,EAAMpoL,IAKxBif,MAAO,SAAUmpK,EAAMpoL,EAAMI,GAC5B,OAAOmzN,EAASb,OAAQtqC,EAAMpoL,EAAMI,IAGrCwzN,YAAa,SAAUxrC,EAAMpoL,GAC5BuzN,EAASl0J,OAAQ+oH,EAAMpoL,MAIzBsuI,EAAOzwH,GAAG4xE,OAAQ,CACjBrvF,KAAM,SAAUuO,EAAK1L,GACpB,IAAIzE,EAAGwB,EAAMI,EACZgoL,EAAO9qL,KAAM,GACbuwB,EAAQu6J,GAAQA,EAAK/lK,WAGtB,QAAarU,IAARW,EAAoB,CACxB,GAAKrR,KAAKqB,SACTyB,EAAOozN,EAASx0N,IAAKopL,GAEE,IAAlBA,EAAKl/E,WAAmBqqH,EAASv0N,IAAKopL,EAAM,iBAAmB,CAEnE,IADA5pL,EAAIqvB,EAAMlvB,OACFH,KAIFqvB,EAAOrvB,IAEsB,KADjCwB,EAAO6tB,EAAOrvB,GAAIwB,MACRgF,QAAS,WAClBhF,EAAOkzN,EAAWlzN,EAAKwJ,MAAO,IAC9BmtL,GAAUvO,EAAMpoL,EAAMI,EAAMJ,KAI/BuzN,EAASx7M,IAAKqwK,EAAM,gBAAgB,GAItC,OAAOhoL,EAIR,MAAoB,iBAARuO,EACJrR,KAAKwjL,MAAM,WACjB0yC,EAASz7M,IAAKza,KAAMqR,MAIf+jN,EAAQp1N,MAAM,SAAU2F,GAC9B,IAAI7C,EAOJ,GAAKgoL,QAAkBp6K,IAAV/K,EAKZ,YAAc+K,KADd5N,EAAOozN,EAASx0N,IAAKopL,EAAMz5K,UAQbX,KADd5N,EAAOu2L,GAAUvO,EAAMz5K,IALfvO,OAWR,EAID9C,KAAKwjL,MAAM,WAGV0yC,EAASz7M,IAAKza,KAAMqR,EAAK1L,QAExB,KAAMA,EAAOvE,UAAUC,OAAS,EAAG,MAAM,IAG7C6hL,WAAY,SAAU7xK,GACrB,OAAOrR,KAAKwjL,MAAM,WACjB0yC,EAASn0J,OAAQ/hE,KAAMqR,SAM1B2/H,EAAO7+C,OAAQ,CACd8gI,MAAO,SAAUnoC,EAAMx+K,EAAMxJ,GAC5B,IAAImwN,EAEJ,GAAKnoC,EAYJ,OAXAx+K,GAASA,GAAQ,MAAS,QAC1B2mN,EAAQgD,EAASv0N,IAAKopL,EAAMx+K,GAGvBxJ,KACEmwN,GAASvzN,MAAMyc,QAASrZ,GAC7BmwN,EAAQgD,EAASb,OAAQtqC,EAAMx+K,EAAM0kI,EAAOmsD,UAAWr6L,IAEvDmwN,EAAMptN,KAAM/C,IAGPmwN,GAAS,IAIlBsD,QAAS,SAAUzrC,EAAMx+K,GACxBA,EAAOA,GAAQ,KAEf,IAAI2mN,EAAQjiF,EAAOiiF,MAAOnoC,EAAMx+K,GAC/BkqN,EAAcvD,EAAM5xN,OACpBkf,EAAK0yM,EAAM7zL,QACXrf,EAAQixH,EAAOylF,YAAa3rC,EAAMx+K,GAMvB,eAAPiU,IACJA,EAAK0yM,EAAM7zL,QACXo3L,KAGIj2M,IAIU,OAATjU,GACJ2mN,EAAM71K,QAAS,qBAITr9B,EAAMnR,KACb2R,EAAG7f,KAAMoqL,GApBF,WACN95C,EAAOulF,QAASzrC,EAAMx+K,KAmBFyT,KAGhBy2M,GAAez2M,GACpBA,EAAM6R,MAAMuhM,QAKdsD,YAAa,SAAU3rC,EAAMx+K,GAC5B,IAAI+E,EAAM/E,EAAO,aACjB,OAAO2pN,EAASv0N,IAAKopL,EAAMz5K,IAAS4kN,EAASb,OAAQtqC,EAAMz5K,EAAK,CAC/DugB,MAAOo/G,EAAO4hF,UAAW,eAAgB5wJ,KAAK,WAC7Ci0J,EAASl0J,OAAQ+oH,EAAM,CAAEx+K,EAAO,QAAS+E,YAM7C2/H,EAAOzwH,GAAG4xE,OAAQ,CACjB8gI,MAAO,SAAU3mN,EAAMxJ,GACtB,IAAImmE,EAAS,EAQb,MANqB,iBAAT38D,IACXxJ,EAAOwJ,EACPA,EAAO,KACP28D,KAGI7nE,UAAUC,OAAS4nE,EAChB+nE,EAAOiiF,MAAOjzN,KAAM,GAAKsM,QAGjBoE,IAAT5N,EACN9C,KACAA,KAAKwjL,MAAM,WACV,IAAIyvC,EAAQjiF,EAAOiiF,MAAOjzN,KAAMsM,EAAMxJ,GAGtCkuI,EAAOylF,YAAaz2N,KAAMsM,GAEZ,OAATA,GAAgC,eAAf2mN,EAAO,IAC5BjiF,EAAOulF,QAASv2N,KAAMsM,OAI1BiqN,QAAS,SAAUjqN,GAClB,OAAOtM,KAAKwjL,MAAM,WACjBxyC,EAAOulF,QAASv2N,KAAMsM,OAGxBoqN,WAAY,SAAUpqN,GACrB,OAAOtM,KAAKizN,MAAO3mN,GAAQ,KAAM,KAKlCsV,QAAS,SAAUtV,EAAM4M,GACxB,IAAIg4G,EACHr7D,EAAQ,EACR8gK,EAAQ3lF,EAAOuiF,WACf/uL,EAAWxkC,KACXkB,EAAIlB,KAAKqB,OACTgF,EAAU,aACCwvD,GACT8gK,EAAMvC,YAAa5vL,EAAU,CAAEA,KAUlC,IANqB,iBAATl4B,IACX4M,EAAM5M,EACNA,OAAOoE,GAERpE,EAAOA,GAAQ,KAEPpL,MACPgwH,EAAM+kG,EAASv0N,IAAK8iC,EAAUtjC,GAAKoL,EAAO,gBAC9B4kH,EAAIt/F,QACfikC,IACAq7D,EAAIt/F,MAAMowC,IAAK37D,IAIjB,OADAA,IACOswN,EAAM/0M,QAAS1I,MAGxB,IAAI09M,GAAO,sCAA0Ct9M,OAEjDu9M,GAAU,IAAI3qM,OAAQ,iBAAmB0qM,GAAO,cAAe,KAG/DE,GAAY,CAAE,MAAO,QAAS,SAAU,QAExCn5M,GAAkBhG,EAASgG,gBAI1Bo5M,GAAa,SAAUjsC,GACzB,OAAO95C,EAAOz5G,SAAUuzJ,EAAKjxJ,cAAeixJ,IAE7CksC,GAAW,CAAEA,UAAU,GAOnBr5M,GAAgBikK,cACpBm1C,GAAa,SAAUjsC,GACtB,OAAO95C,EAAOz5G,SAAUuzJ,EAAKjxJ,cAAeixJ,IAC3CA,EAAKlJ,YAAao1C,MAAelsC,EAAKjxJ,gBAG1C,IAAIo9L,GAAqB,SAAUnsC,EAAM/rJ,GAOvC,MAA8B,UAH9B+rJ,EAAO/rJ,GAAM+rJ,GAGDvjK,MAAMm/B,SACM,KAAvBokI,EAAKvjK,MAAMm/B,SAMXqwK,GAAYjsC,IAEsB,SAAlC95C,EAAO9lH,IAAK4/J,EAAM,YAKrB,SAASosC,GAAWpsC,EAAMt8J,EAAM2oM,EAAYC,GAC3C,IAAIC,EAAUlwH,EACbmwH,EAAgB,GAChBpzI,EAAekzI,EACd,WACC,OAAOA,EAAMjrF,OAEd,WACC,OAAO6E,EAAO9lH,IAAK4/J,EAAMt8J,EAAM,KAEjClQ,EAAU4lE,IACV6iB,EAAOowH,GAAcA,EAAY,KAASnmF,EAAOumF,UAAW/oM,GAAS,GAAK,MAG1EgpM,EAAgB1sC,EAAKl/E,WAClBolC,EAAOumF,UAAW/oM,IAAmB,OAATu4E,IAAkBzoF,IAChDu4M,GAAQt+L,KAAMy4G,EAAO9lH,IAAK4/J,EAAMt8J,IAElC,GAAKgpM,GAAiBA,EAAe,KAAQzwH,EAAO,CAYnD,IARAzoF,GAAoB,EAGpByoF,EAAOA,GAAQywH,EAAe,GAG9BA,GAAiBl5M,GAAW,EAEpBg5M,KAIPtmF,EAAOzpH,MAAOujK,EAAMt8J,EAAMgpM,EAAgBzwH,IACnC,EAAII,IAAY,GAAMA,EAAQjjB,IAAiB5lE,GAAW,MAAW,IAC3Eg5M,EAAgB,GAEjBE,GAAgCrwH,EAIjCqwH,GAAgC,EAChCxmF,EAAOzpH,MAAOujK,EAAMt8J,EAAMgpM,EAAgBzwH,GAG1CowH,EAAaA,GAAc,GAgB5B,OAbKA,IACJK,GAAiBA,IAAkBl5M,GAAW,EAG9C+4M,EAAWF,EAAY,GACtBK,GAAkBL,EAAY,GAAM,GAAMA,EAAY,IACrDA,EAAY,GACTC,IACJA,EAAMrwH,KAAOA,EACbqwH,EAAMnpN,MAAQupN,EACdJ,EAAMv+L,IAAMw+L,IAGPA,EAIR,IAAII,GAAoB,GAExB,SAASC,GAAmB5sC,GAC3B,IAAI5xJ,EACH65G,EAAM+3C,EAAKjxJ,cACX6N,EAAWojJ,EAAKpjJ,SAChBgf,EAAU+wK,GAAmB/vL,GAE9B,OAAKgf,IAILxtB,EAAO65G,EAAIruI,KAAKqwD,YAAag+E,EAAIl7H,cAAe6vB,IAChDgf,EAAUsqF,EAAO9lH,IAAKgO,EAAM,WAE5BA,EAAK6U,WAAW4uB,YAAazjC,GAEZ,SAAZwtB,IACJA,EAAU,SAEX+wK,GAAmB/vL,GAAagf,EAEzBA,GAGR,SAASixK,GAAUnzL,EAAU0E,GAO5B,IANA,IAAIwd,EAASokI,EACZloL,EAAS,GACT6E,EAAQ,EACRpG,EAASmjC,EAASnjC,OAGXoG,EAAQpG,EAAQoG,KACvBqjL,EAAOtmJ,EAAU/8B,IACN8f,QAIXm/B,EAAUokI,EAAKvjK,MAAMm/B,QAChBxd,GAKa,SAAZwd,IACJ9jD,EAAQ6E,GAAUwuN,EAASv0N,IAAKopL,EAAM,YAAe,KAC/CloL,EAAQ6E,KACbqjL,EAAKvjK,MAAMm/B,QAAU,KAGK,KAAvBokI,EAAKvjK,MAAMm/B,SAAkBuwK,GAAoBnsC,KACrDloL,EAAQ6E,GAAUiwN,GAAmB5sC,KAGrB,SAAZpkI,IACJ9jD,EAAQ6E,GAAU,OAGlBwuN,EAASx7M,IAAKqwK,EAAM,UAAWpkI,KAMlC,IAAMj/C,EAAQ,EAAGA,EAAQpG,EAAQoG,IACR,MAAnB7E,EAAQ6E,KACZ+8B,EAAU/8B,GAAQ8f,MAAMm/B,QAAU9jD,EAAQ6E,IAI5C,OAAO+8B,EAGRwsG,EAAOzwH,GAAG4xE,OAAQ,CACjBjpD,KAAM,WACL,OAAOyuL,GAAU33N,MAAM,IAExBqrL,KAAM,WACL,OAAOssC,GAAU33N,OAElB81J,OAAQ,SAAU1jI,GACjB,MAAsB,kBAAVA,EACJA,EAAQpyB,KAAKkpC,OAASlpC,KAAKqrL,OAG5BrrL,KAAKwjL,MAAM,WACZyzC,GAAoBj3N,MACxBgxI,EAAQhxI,MAAOkpC,OAEf8nG,EAAQhxI,MAAOqrL,aAKnB,IAUEruJ,GACA/xB,GAXE2sN,GAAiB,wBAEjBC,GAAW,iCAEXC,GAAc,qCAMhB96L,GADcrlB,EAASogN,yBACRhjK,YAAap9C,EAASE,cAAe,SACpD5M,GAAQ0M,EAASE,cAAe,UAM3BsT,aAAc,OAAQ,SAC5BlgB,GAAMkgB,aAAc,UAAW,WAC/BlgB,GAAMkgB,aAAc,OAAQ,KAE5B6R,GAAI+3B,YAAa9pD,IAIjBk2G,EAAQ62G,WAAah7L,GAAIwoE,WAAW,GAAOA,WAAW,GAAOkoH,UAAUnlK,QAIvEvrB,GAAI5R,UAAY,yBAChB+1F,EAAQ82G,iBAAmBj7L,GAAIwoE,WAAW,GAAOkoH,UAAU94L,aAK3DoI,GAAI5R,UAAY,oBAChB+1F,EAAQqgC,SAAWxkH,GAAI0wL,UAKxB,IAAIwK,GAAU,CAKbh+J,MAAO,CAAE,EAAG,UAAW,YACvB1V,IAAK,CAAE,EAAG,oBAAqB,uBAC/BwV,GAAI,CAAE,EAAG,iBAAkB,oBAC3BF,GAAI,CAAE,EAAG,qBAAsB,yBAE/Bq+J,SAAU,CAAE,EAAG,GAAI,KAYpB,SAASC,GAAQ3pD,EAASroJ,GAIzB,IAAIk6E,EAYJ,OATCA,OAD4C,IAAjCmuE,EAAQjqD,qBACbiqD,EAAQjqD,qBAAsBp+F,GAAO,UAEI,IAA7BqoJ,EAAQhqI,iBACpBgqI,EAAQhqI,iBAAkBre,GAAO,KAGjC,QAGM1V,IAAR0V,GAAqBA,GAAOshB,EAAU+mI,EAASroJ,GAC5C4qH,EAAO13G,MAAO,CAAEm1I,GAAWnuE,GAG5BA,EAKR,SAAS+3H,GAAe7S,EAAO8S,GAI9B,IAHA,IAAIp3N,EAAI,EACP++F,EAAIulH,EAAMnkN,OAEHH,EAAI++F,EAAG/+F,IACd+0N,EAASx7M,IACR+qM,EAAOtkN,GACP,cACCo3N,GAAerC,EAASv0N,IAAK42N,EAAap3N,GAAK,eA1CnDg3N,GAAQj+J,MAAQi+J,GAAQ1iF,MAAQ0iF,GAAQ3jF,SAAW2jF,GAAQK,QAAUL,GAAQh+J,MAC7Eg+J,GAAQn+J,GAAKm+J,GAAQp+J,GAGfqnD,EAAQqgC,SACb02E,GAAQM,SAAWN,GAAQ12E,OAAS,CAAE,EAAG,+BAAgC,cA2C1E,IAAIinE,GAAQ,YAEZ,SAASgQ,GAAejT,EAAO/2C,EAASiqD,EAAS3tJ,EAAW4tJ,GAO3D,IANA,IAAI7tC,EAAM55D,EAAK9qG,EAAK80F,EAAM09G,EAAU/rJ,EACnCgsJ,EAAWpqD,EAAQspD,yBACnB70G,EAAQ,GACRhiH,EAAI,EACJ++F,EAAIulH,EAAMnkN,OAEHH,EAAI++F,EAAG/+F,IAGd,IAFA4pL,EAAO06B,EAAOtkN,KAEQ,IAAT4pL,EAGZ,GAAwB,WAAnBu6B,EAAQv6B,GAIZ95C,EAAO13G,MAAO4pF,EAAO4nE,EAAKl/E,SAAW,CAAEk/E,GAASA,QAG1C,GAAM29B,GAAMroM,KAAM0qK,GAIlB,CAUN,IATA55D,EAAMA,GAAO2nG,EAAS9jK,YAAa05G,EAAQ52J,cAAe,QAG1DuO,GAAQyxM,GAASt/L,KAAMuyJ,IAAU,CAAE,GAAI,KAAQ,GAAIh7K,cACnDorG,EAAOg9G,GAAS9xM,IAAS8xM,GAAQC,SACjCjnG,EAAI9lG,UAAY8vF,EAAM,GAAM81B,EAAO8nF,cAAehuC,GAAS5vE,EAAM,GAGjEruC,EAAIquC,EAAM,GACFruC,KACPqkD,EAAMA,EAAIw8F,UAKX18E,EAAO13G,MAAO4pF,EAAOgO,EAAI5lG,aAGzB4lG,EAAM2nG,EAASn6L,YAGXgnE,YAAc,QAzBlBwd,EAAMr9G,KAAM4oK,EAAQsqD,eAAgBjuC,IAkCvC,IAHA+tC,EAASnzH,YAAc,GAEvBxkG,EAAI,EACM4pL,EAAO5nE,EAAOhiH,MAGvB,GAAK6pE,GAAaimE,EAAOo8D,QAAStiB,EAAM//G,IAAe,EACjD4tJ,GACJA,EAAQ9yN,KAAMilL,QAgBhB,GAXA8tC,EAAW7B,GAAYjsC,GAGvB55D,EAAMknG,GAAQS,EAAS9jK,YAAa+1H,GAAQ,UAGvC8tC,GACJP,GAAennG,GAIXwnG,EAEJ,IADA7rJ,EAAI,EACMi+G,EAAO55D,EAAKrkD,MAChBirJ,GAAY13M,KAAM0qK,EAAKx+K,MAAQ,KACnCosN,EAAQ7yN,KAAMilL,GAMlB,OAAO+tC,EAIR,IAAIG,GAAiB,sBAErB,SAASC,KACR,OAAO,EAGR,SAAS3nE,KACR,OAAO,EASR,SAAS4nE,GAAYpuC,EAAMx+K,GAC1B,OAASw+K,IAMV,WACC,IACC,OAAOnzK,EAASg9B,cACf,MAAQztC,KATQiyN,KAAqC,UAAT7sN,GAY/C,SAASsD,GAAIk7K,EAAMiiB,EAAOv8D,EAAU1tI,EAAMyd,EAAIyzE,GAC7C,IAAIolI,EAAQ9sN,EAGZ,GAAsB,iBAAVygM,EAAqB,CAShC,IAAMzgM,IANmB,iBAAbkkI,IAGX1tI,EAAOA,GAAQ0tI,EACfA,OAAW9/H,GAEEq8L,EACbn9L,GAAIk7K,EAAMx+K,EAAMkkI,EAAU1tI,EAAMiqM,EAAOzgM,GAAQ0nF,GAEhD,OAAO82F,EAsBR,GAnBa,MAARhoL,GAAsB,MAANyd,GAGpBA,EAAKiwH,EACL1tI,EAAO0tI,OAAW9/H,GACD,MAAN6P,IACc,iBAAbiwH,GAGXjwH,EAAKzd,EACLA,OAAO4N,IAIP6P,EAAKzd,EACLA,EAAO0tI,EACPA,OAAW9/H,KAGD,IAAP6P,EACJA,EAAK+wI,QACC,IAAM/wI,EACZ,OAAOuqK,EAeR,OAZa,IAAR92F,IACJolI,EAAS74M,EACTA,EAAK,SAAUrM,GAId,OADA88H,IAASjhI,IAAKmE,GACPklN,EAAOzyN,MAAO3G,KAAMoB,YAI5Bmf,EAAGye,KAAOo6L,EAAOp6L,OAAUo6L,EAAOp6L,KAAOgyG,EAAOhyG,SAE1C8rJ,EAAKtH,MAAM,WACjBxyC,EAAO98H,MAAM8tD,IAAKhiE,KAAM+sM,EAAOxsL,EAAIzd,EAAM0tI,MA+a3C,SAAS6oF,GAAgBt6L,EAAIzyB,EAAM4sN,GAG5BA,GAQNjD,EAASx7M,IAAKskB,EAAIzyB,GAAM,GACxB0kI,EAAO98H,MAAM8tD,IAAKjjC,EAAIzyB,EAAM,CAC3B2T,WAAW,EACXquB,QAAS,SAAUp6B,GAClB,IAAIolN,EAAU7yN,EACb8yN,EAAQtD,EAASv0N,IAAK1B,KAAMsM,GAE7B,GAAyB,EAAlB4H,EAAMslN,WAAmBx5N,KAAMsM,IAKrC,GAAMitN,EAAMl4N,QAuCE2vI,EAAO98H,MAAM+tK,QAAS31K,IAAU,IAAK61K,cAClDjuK,EAAMmiC,uBArBN,GAdAkjL,EAAQrtN,EAAMxL,KAAMU,WACpB60N,EAASx7M,IAAKza,KAAMsM,EAAMitN,GAK1BD,EAAWJ,EAAYl5N,KAAMsM,GAC7BtM,KAAMsM,KAEDitN,KADL9yN,EAASwvN,EAASv0N,IAAK1B,KAAMsM,KACJgtN,EACxBrD,EAASx7M,IAAKza,KAAMsM,GAAM,GAE1B7F,EAAS,GAEL8yN,IAAU9yN,EAWd,OARAyN,EAAM6uC,2BACN7uC,EAAM+sB,iBAOCx6B,GAAUA,EAAOd,WAef4zN,EAAMl4N,SAGjB40N,EAASx7M,IAAKza,KAAMsM,EAAM,CACzB3G,MAAOqrI,EAAO98H,MAAMs+E,QAInBw+C,EAAO7+C,OAAQonI,EAAO,GAAKvoF,EAAOwxC,MAAMtiL,WACxCq5N,EAAMrtN,MAAO,GACblM,QAKFkU,EAAM6uC,qCA/E0BryC,IAA7BulN,EAASv0N,IAAKq9B,EAAIzyB,IACtB0kI,EAAO98H,MAAM8tD,IAAKjjC,EAAIzyB,EAAM2sN,IA5a/BjoF,EAAO98H,MAAQ,CAEdwwM,OAAQ,GAER1iJ,IAAK,SAAU8oH,EAAMiiB,EAAOz+J,EAASxrC,EAAM0tI,GAE1C,IAAIipF,EAAaC,EAAaxoG,EAC7B5kF,EAAQtrC,EAAGqhL,EACXJ,EAASjyK,EAAU1D,EAAMqtN,EAAYC,EACrCC,EAAW5D,EAASv0N,IAAKopL,GAG1B,GAAM+qC,EAAY/qC,GAuClB,IAlCKx8I,EAAQA,UAEZA,GADAmrL,EAAcnrL,GACQA,QACtBkiG,EAAWipF,EAAYjpF,UAKnBA,GACJQ,EAAOn2F,KAAK2wK,gBAAiB7tM,GAAiB6yH,GAIzCliG,EAAQtP,OACbsP,EAAQtP,KAAOgyG,EAAOhyG,SAIfsN,EAASutL,EAASvtL,UACzBA,EAASutL,EAASvtL,OAAS/sC,OAAOY,OAAQ,QAEnCu5N,EAAcG,EAAS1iE,UAC9BuiE,EAAcG,EAAS1iE,OAAS,SAAUrxJ,GAIzC,YAAyB,IAAXkrI,GAA0BA,EAAO98H,MAAM4lN,YAAch0N,EAAEwG,KACpE0kI,EAAO98H,MAAM6lN,SAASpzN,MAAOmkL,EAAM1pL,gBAAcsP,IAMpD1P,GADA+rM,GAAUA,GAAS,IAAK3+K,MAAOkkM,IAAmB,CAAE,KAC1CjxN,OACFL,KAEPsL,EAAOstN,GADP1oG,EAAM8nG,GAAezgM,KAAMw0K,EAAO/rM,KAAS,IACpB,GACvB24N,GAAezoG,EAAK,IAAO,IAAK/lH,MAAO,KAAMwnB,OAGvCrmB,IAKN21K,EAAUjxC,EAAO98H,MAAM+tK,QAAS31K,IAAU,GAG1CA,GAASkkI,EAAWyxC,EAAQE,aAAeF,EAAQC,WAAc51K,EAGjE21K,EAAUjxC,EAAO98H,MAAM+tK,QAAS31K,IAAU,GAG1C+1K,EAAYrxC,EAAO7+C,OAAQ,CAC1B7lF,KAAMA,EACNstN,SAAUA,EACV92N,KAAMA,EACNwrC,QAASA,EACTtP,KAAMsP,EAAQtP,KACdwxG,SAAUA,EACV6gF,aAAc7gF,GAAYQ,EAAOk7E,KAAK99L,MAAMijM,aAAajxM,KAAMowH,GAC/DvwH,UAAW05M,EAAW1zM,KAAM,MAC1BwzM,IAGKzpN,EAAWs8B,EAAQhgC,OAC1B0D,EAAWs8B,EAAQhgC,GAAS,IACnB0tN,cAAgB,EAGnB/3C,EAAQ1jE,QACiD,IAA9D0jE,EAAQ1jE,MAAM79G,KAAMoqL,EAAMhoL,EAAM62N,EAAYD,IAEvC5uC,EAAKjtK,kBACTitK,EAAKjtK,iBAAkBvR,EAAMotN,IAK3Bz3C,EAAQjgH,MACZigH,EAAQjgH,IAAIthE,KAAMoqL,EAAMzI,GAElBA,EAAU/zI,QAAQtP,OACvBqjJ,EAAU/zI,QAAQtP,KAAOsP,EAAQtP,OAK9BwxG,EACJxgI,EAASrI,OAAQqI,EAASgqN,gBAAiB,EAAG33C,GAE9CryK,EAASnK,KAAMw8K,GAIhBrxC,EAAO98H,MAAMwwM,OAAQp4M,IAAS,IAMhCy1D,OAAQ,SAAU+oH,EAAMiiB,EAAOz+J,EAASkiG,EAAUypF,GAEjD,IAAIptJ,EAAGqtJ,EAAWhpG,EACjB5kF,EAAQtrC,EAAGqhL,EACXJ,EAASjyK,EAAU1D,EAAMqtN,EAAYC,EACrCC,EAAW5D,EAASD,QAASlrC,IAAUmrC,EAASv0N,IAAKopL,GAEtD,GAAM+uC,IAAevtL,EAASutL,EAASvtL,QAAvC,CAOA,IADAtrC,GADA+rM,GAAUA,GAAS,IAAK3+K,MAAOkkM,IAAmB,CAAE,KAC1CjxN,OACFL,KAMP,GAJAsL,EAAOstN,GADP1oG,EAAM8nG,GAAezgM,KAAMw0K,EAAO/rM,KAAS,IACpB,GACvB24N,GAAezoG,EAAK,IAAO,IAAK/lH,MAAO,KAAMwnB,OAGvCrmB,EAAN,CAeA,IARA21K,EAAUjxC,EAAO98H,MAAM+tK,QAAS31K,IAAU,GAE1C0D,EAAWs8B,EADXhgC,GAASkkI,EAAWyxC,EAAQE,aAAeF,EAAQC,WAAc51K,IACpC,GAC7B4kH,EAAMA,EAAK,IACV,IAAIhlG,OAAQ,UAAYytM,EAAW1zM,KAAM,iBAAoB,WAG9Di0M,EAAYrtJ,EAAI78D,EAAS3O,OACjBwrE,KACPw1G,EAAYryK,EAAU68D,IAEfotJ,GAAeL,IAAav3C,EAAUu3C,UACzCtrL,GAAWA,EAAQtP,OAASqjJ,EAAUrjJ,MACtCkyF,IAAOA,EAAI9wG,KAAMiiK,EAAUpiK,YAC3BuwH,GAAYA,IAAa6xC,EAAU7xC,WACxB,OAAbA,IAAqB6xC,EAAU7xC,YAChCxgI,EAASrI,OAAQklE,EAAG,GAEfw1G,EAAU7xC,UACdxgI,EAASgqN,gBAEL/3C,EAAQlgH,QACZkgH,EAAQlgH,OAAOrhE,KAAMoqL,EAAMzI,IAOzB63C,IAAclqN,EAAS3O,SACrB4gL,EAAQk4C,WACkD,IAA/Dl4C,EAAQk4C,SAASz5N,KAAMoqL,EAAM6uC,EAAYE,EAAS1iE,SAElDnmB,EAAOopF,YAAatvC,EAAMx+K,EAAMutN,EAAS1iE,eAGnC7qH,EAAQhgC,SA1Cf,IAAMA,KAAQggC,EACb0kG,EAAO98H,MAAM6tD,OAAQ+oH,EAAMx+K,EAAOygM,EAAO/rM,GAAKstC,EAASkiG,GAAU,GA8C/DQ,EAAOo1E,cAAe95K,IAC1B2pL,EAASl0J,OAAQ+oH,EAAM,mBAIzBivC,SAAU,SAAUn5L,GAEnB,IAAI1/B,EAAG2rE,EAAGyzB,EAAKstH,EAASvrC,EAAWg4C,EAClCrrN,EAAO,IAAItP,MAAO0B,UAAUC,QAG5B6S,EAAQ88H,EAAO98H,MAAMomN,IAAK15L,GAE1B5wB,GACCimN,EAASv0N,IAAK1B,KAAM,WAAcT,OAAOY,OAAQ,OAC/C+T,EAAM5H,OAAU,GACnB21K,EAAUjxC,EAAO98H,MAAM+tK,QAAS/tK,EAAM5H,OAAU,GAKjD,IAFA0C,EAAM,GAAMkF,EAENhT,EAAI,EAAGA,EAAIE,UAAUC,OAAQH,IAClC8N,EAAM9N,GAAME,UAAWF,GAMxB,GAHAgT,EAAMqmN,eAAiBv6N,MAGlBiiL,EAAQu4C,cAA2D,IAA5Cv4C,EAAQu4C,YAAY95N,KAAMV,KAAMkU,GAA5D,CASA,IAJAmmN,EAAerpF,EAAO98H,MAAMlE,SAAStP,KAAMV,KAAMkU,EAAOlE,GAGxD9O,EAAI,GACM0sN,EAAUyM,EAAcn5N,QAAYgT,EAAMumN,wBAInD,IAHAvmN,EAAMwhC,cAAgBk4K,EAAQ9iC,KAE9Bj+G,EAAI,GACMw1G,EAAYurC,EAAQ59M,SAAU68D,QACtC34D,EAAMwmN,iCAIDxmN,EAAMymN,aAAsC,IAAxBt4C,EAAUpiK,YACnC/L,EAAMymN,WAAWv6M,KAAMiiK,EAAUpiK,aAEjC/L,EAAMmuK,UAAYA,EAClBnuK,EAAMpR,KAAOu/K,EAAUv/K,UAKV4N,KAHb4vF,IAAU0wC,EAAO98H,MAAM+tK,QAASI,EAAUu3C,WAAc,IAAKziE,QAC5DkrB,EAAU/zI,SAAU3nC,MAAOinN,EAAQ9iC,KAAM97K,MAGT,KAAzBkF,EAAMzN,OAAS65F,KACrBpsF,EAAM+sB,iBACN/sB,EAAMmiC,oBAYX,OAJK4rI,EAAQ24C,cACZ34C,EAAQ24C,aAAal6N,KAAMV,KAAMkU,GAG3BA,EAAMzN,SAGduJ,SAAU,SAAUkE,EAAOlE,GAC1B,IAAI9O,EAAGmhL,EAAW+pC,EAAKyO,EAAiBC,EACvCT,EAAe,GACfL,EAAgBhqN,EAASgqN,cACzB7tF,EAAMj4H,EAAM/C,OAGb,GAAK6oN,GAIJ7tF,EAAIvgC,YAOc,UAAf13F,EAAM5H,MAAoB4H,EAAMovB,QAAU,GAE7C,KAAQ6oG,IAAQnsI,KAAMmsI,EAAMA,EAAIp+F,YAAc/tC,KAI7C,GAAsB,IAAjBmsI,EAAIvgC,WAAoC,UAAf13F,EAAM5H,OAAqC,IAAjB6/H,EAAI/mG,UAAsB,CAGjF,IAFAy1L,EAAkB,GAClBC,EAAmB,GACb55N,EAAI,EAAGA,EAAI84N,EAAe94N,SAMEwP,IAA5BoqN,EAFL1O,GAHA/pC,EAAYryK,EAAU9O,IAGNsvI,SAAW,OAG1BsqF,EAAkB1O,GAAQ/pC,EAAUgvC,aACnCrgF,EAAQo7E,EAAKpsN,MAAOyH,MAAO0kI,IAAS,EACpC6E,EAAOn2F,KAAMuxK,EAAKpsN,KAAM,KAAM,CAAEmsI,IAAQ9qI,QAErCy5N,EAAkB1O,IACtByO,EAAgBh1N,KAAMw8K,GAGnBw4C,EAAgBx5N,QACpBg5N,EAAax0N,KAAM,CAAEilL,KAAM3+C,EAAKn8H,SAAU6qN,IAY9C,OALA1uF,EAAMnsI,KACDg6N,EAAgBhqN,EAAS3O,QAC7Bg5N,EAAax0N,KAAM,CAAEilL,KAAM3+C,EAAKn8H,SAAUA,EAAS9D,MAAO8tN,KAGpDK,GAGRU,QAAS,SAAUr4N,EAAMs4N,GACxBz7N,OAAOuO,eAAgBkjI,EAAOwxC,MAAMtiL,UAAWwC,EAAM,CACpDqL,YAAY,EACZC,cAAc,EAEdtM,IAAKkvB,EAAYoqM,GAChB,WACC,GAAKh7N,KAAKyhC,cACT,OAAOu5L,EAAMh7N,KAAKyhC,gBAGpB,WACC,GAAKzhC,KAAKyhC,cACT,OAAOzhC,KAAKyhC,cAAe/+B,IAI9B+X,IAAK,SAAU9U,GACdpG,OAAOuO,eAAgB9N,KAAM0C,EAAM,CAClCqL,YAAY,EACZC,cAAc,EACdmL,UAAU,EACVxT,MAAOA,QAMX20N,IAAK,SAAU74L,GACd,OAAOA,EAAeuvG,EAAOi1E,SAC5BxkL,EACA,IAAIuvG,EAAOwxC,MAAO/gJ,IAGpBwgJ,QAAS,CACR3gE,KAAM,CAGL25G,UAAU,GAEXn1I,MAAO,CAGNy4B,MAAO,SAAUz7G,GAIhB,IAAIi8B,EAAK/+B,MAAQ8C,EAWjB,OARK80N,GAAex3M,KAAM2e,EAAGzyB,OAC5ByyB,EAAG+mD,OAASp+C,EAAU3I,EAAI,UAG1Bs6L,GAAgBt6L,EAAI,QAASk6L,KAIvB,GAERzmI,QAAS,SAAU1vF,GAIlB,IAAIi8B,EAAK/+B,MAAQ8C,EAUjB,OAPK80N,GAAex3M,KAAM2e,EAAGzyB,OAC5ByyB,EAAG+mD,OAASp+C,EAAU3I,EAAI,UAE1Bs6L,GAAgBt6L,EAAI,UAId,GAKRo5L,SAAU,SAAUjkN,GACnB,IAAI/C,EAAS+C,EAAM/C,OACnB,OAAOymN,GAAex3M,KAAMjP,EAAO7E,OAClC6E,EAAO20E,OAASp+C,EAAUv2B,EAAQ,UAClC8kN,EAASv0N,IAAKyP,EAAQ,UACtBu2B,EAAUv2B,EAAQ,OAIrB+pN,aAAc,CACbN,aAAc,SAAU1mN,QAIDxD,IAAjBwD,EAAMzN,QAAwByN,EAAMutB,gBACxCvtB,EAAMutB,cAAcknC,YAAcz0D,EAAMzN,YAoG7CuqI,EAAOopF,YAAc,SAAUtvC,EAAMx+K,EAAM6qJ,GAGrC2zB,EAAKxqK,qBACTwqK,EAAKxqK,oBAAqBhU,EAAM6qJ,IAIlCnmB,EAAOwxC,MAAQ,SAAU5mG,EAAK7/D,GAG7B,KAAQ/b,gBAAgBgxI,EAAOwxC,OAC9B,OAAO,IAAIxxC,EAAOwxC,MAAO5mG,EAAK7/D,GAI1B6/D,GAAOA,EAAItvE,MACftM,KAAKyhC,cAAgBm6C,EACrB57E,KAAKsM,KAAOsvE,EAAItvE,KAIhBtM,KAAK00F,mBAAqB9Y,EAAIoD,uBACHtuE,IAAzBkrE,EAAIoD,mBAGgB,IAApBpD,EAAIjT,YACLswJ,GACA3nE,GAKDtxJ,KAAKmR,OAAWyqE,EAAIzqE,QAAkC,IAAxByqE,EAAIzqE,OAAOy6F,SACxChwB,EAAIzqE,OAAO48B,WACX6tC,EAAIzqE,OAELnR,KAAK01C,cAAgBkmC,EAAIlmC,cACzB11C,KAAKqoL,cAAgBzsG,EAAIysG,eAIzBroL,KAAKsM,KAAOsvE,EAIR7/D,GACJi1H,EAAO7+C,OAAQnyF,KAAM+b,GAItB/b,KAAKovM,UAAYxzH,GAAOA,EAAIwzH,WAAahnM,KAAKmK,MAG9CvS,KAAMgxI,EAAOi1E,UAAY,GAK1Bj1E,EAAOwxC,MAAMtiL,UAAY,CACxBD,YAAa+wI,EAAOwxC,MACpB9tF,mBAAoB48D,GACpBmpE,qBAAsBnpE,GACtBopE,8BAA+BppE,GAC/B6pE,aAAa,EAEbl6L,eAAgB,WACf,IAAIn7B,EAAI9F,KAAKyhC,cAEbzhC,KAAK00F,mBAAqBukI,GAErBnzN,IAAM9F,KAAKm7N,aACfr1N,EAAEm7B,kBAGJoV,gBAAiB,WAChB,IAAIvwC,EAAI9F,KAAKyhC,cAEbzhC,KAAKy6N,qBAAuBxB,GAEvBnzN,IAAM9F,KAAKm7N,aACfr1N,EAAEuwC,mBAGJ0M,yBAA0B,WACzB,IAAIj9C,EAAI9F,KAAKyhC,cAEbzhC,KAAK06N,8BAAgCzB,GAEhCnzN,IAAM9F,KAAKm7N,aACfr1N,EAAEi9C,2BAGH/iD,KAAKq2C,oBAKP26F,EAAOwyC,KAAM,CACZzhJ,QAAQ,EACRq5L,SAAS,EACTC,YAAY,EACZh6L,gBAAgB,EAChBQ,SAAS,EACT7+B,QAAQ,EACRs4N,YAAY,EACZr+J,SAAS,EACT77B,OAAO,EACPE,OAAO,EACPQ,UAAU,EACV3+B,MAAM,EACN,MAAQ,EACRwG,MAAM,EACNipC,UAAU,EACVvhC,KAAK,EACLy6B,SAAS,EACTxI,QAAQ,EACR2Y,SAAS,EACT1a,SAAS,EACTC,SAAS,EACTG,SAAS,EACTC,SAAS,EACTywK,WAAW,EACXrqB,aAAa,EACbuzC,SAAS,EACTC,SAAS,EACTjoB,eAAe,EACfkoB,WAAW,EACX74L,SAAS,EACTK,OAAO,GACL+tG,EAAO98H,MAAM6mN,SAEhB/pF,EAAOwyC,KAAM,CAAE9+I,MAAO,UAAWs9C,KAAM,aAAc,SAAU11E,EAAM61K,GACpEnxC,EAAO98H,MAAM+tK,QAAS31K,GAAS,CAG9BiyG,MAAO,WAQN,OAHA86G,GAAgBr5N,KAAMsM,EAAM4sN,KAGrB,GAER1mI,QAAS,WAMR,OAHA6mI,GAAgBr5N,KAAMsM,IAGf,GAKR6rN,SAAU,WACT,OAAO,GAGRh2C,aAAcA,MAYhBnxC,EAAOwyC,KAAM,CACZk4C,WAAY,YACZC,WAAY,WACZC,aAAc,cACdC,aAAc,eACZ,SAAUvqF,EAAMgpF,GAClBtpF,EAAO98H,MAAM+tK,QAAS3wC,GAAS,CAC9B6wC,aAAcm4C,EACdp4C,SAAUo4C,EAEVnjE,OAAQ,SAAUjjJ,GACjB,IAAIosF,EACHnvF,EAASnR,KACT87N,EAAU5nN,EAAMm0K,cAChBhG,EAAYnuK,EAAMmuK,UASnB,OALMy5C,IAAaA,IAAY3qN,GAAW6/H,EAAOz5G,SAAUpmB,EAAQ2qN,MAClE5nN,EAAM5H,KAAO+1K,EAAUu3C,SACvBt5H,EAAM+hF,EAAU/zI,QAAQ3nC,MAAO3G,KAAMoB,WACrC8S,EAAM5H,KAAOguN,GAEPh6H,OAKV0wC,EAAOzwH,GAAG4xE,OAAQ,CAEjBviF,GAAI,SAAUm9L,EAAOv8D,EAAU1tI,EAAMyd,GACpC,OAAO3Q,GAAI5P,KAAM+sM,EAAOv8D,EAAU1tI,EAAMyd,IAEzCyzE,IAAK,SAAU+4G,EAAOv8D,EAAU1tI,EAAMyd,GACrC,OAAO3Q,GAAI5P,KAAM+sM,EAAOv8D,EAAU1tI,EAAMyd,EAAI,IAE7CxQ,IAAK,SAAUg9L,EAAOv8D,EAAUjwH,GAC/B,IAAI8hK,EAAW/1K,EACf,GAAKygM,GAASA,EAAM9rK,gBAAkB8rK,EAAM1qB,UAW3C,OARAA,EAAY0qB,EAAM1qB,UAClBrxC,EAAQ+7D,EAAMwtB,gBAAiBxqN,IAC9BsyK,EAAUpiK,UACToiK,EAAUu3C,SAAW,IAAMv3C,EAAUpiK,UACrCoiK,EAAUu3C,SACXv3C,EAAU7xC,SACV6xC,EAAU/zI,SAEJtuC,KAER,GAAsB,iBAAV+sM,EAAqB,CAGhC,IAAMzgM,KAAQygM,EACb/sM,KAAK+P,IAAKzD,EAAMkkI,EAAUu8D,EAAOzgM,IAElC,OAAOtM,KAWR,OATkB,IAAbwwI,GAA0C,mBAAbA,IAGjCjwH,EAAKiwH,EACLA,OAAW9/H,IAEA,IAAP6P,IACJA,EAAK+wI,IAECtxJ,KAAKwjL,MAAM,WACjBxyC,EAAO98H,MAAM6tD,OAAQ/hE,KAAM+sM,EAAOxsL,EAAIiwH,SAMzC,IAKCurF,GAAe,wBAGfC,GAAW,oCACXC,GAAe,2CAGhB,SAASC,GAAoBpxC,EAAMtpL,GAClC,OAAKkmC,EAAUojJ,EAAM,UACpBpjJ,EAA+B,KAArBlmC,EAAQoqG,SAAkBpqG,EAAUA,EAAQk9B,WAAY,OAE3DsyG,EAAQ85C,GAAO5kK,SAAU,SAAW,IAGrC4kK,EAIR,SAASqxC,GAAerxC,GAEvB,OADAA,EAAKx+K,MAAyC,OAAhCw+K,EAAKhsK,aAAc,SAAsB,IAAMgsK,EAAKx+K,KAC3Dw+K,EAER,SAASsxC,GAAetxC,GAOvB,MAN2C,WAApCA,EAAKx+K,MAAQ,IAAKJ,MAAO,EAAG,GAClC4+K,EAAKx+K,KAAOw+K,EAAKx+K,KAAKJ,MAAO,GAE7B4+K,EAAKpnE,gBAAiB,QAGhBonE,EAGR,SAASuxC,GAAgBzgJ,EAAKviD,GAC7B,IAAIn4B,EAAG++F,EAAG3zF,EAAgBgwN,EAAUC,EAAUjwL,EAE9C,GAAuB,IAAlBjT,EAAKuyE,SAAV,CAKA,GAAKqqH,EAASD,QAASp6I,KAEtBtvC,EADW2pL,EAASv0N,IAAKk6E,GACPtvC,QAKjB,IAAMhgC,KAFN2pN,EAASl0J,OAAQ1oC,EAAM,iBAETiT,EACb,IAAMprC,EAAI,EAAG++F,EAAI3zD,EAAQhgC,GAAOjL,OAAQH,EAAI++F,EAAG/+F,IAC9C8vI,EAAO98H,MAAM8tD,IAAK3oC,EAAM/sB,EAAMggC,EAAQhgC,GAAQpL,IAO7Cg1N,EAASF,QAASp6I,KACtB0gJ,EAAWpG,EAASd,OAAQx5I,GAC5B2gJ,EAAWvrF,EAAO7+C,OAAQ,GAAImqI,GAE9BpG,EAASz7M,IAAK4e,EAAMkjM,KAKtB,SAASC,GAAU5gJ,EAAKviD,GACvB,IAAIqO,EAAWrO,EAAKqO,SAAS53B,cAGX,UAAb43B,GAAwBkwL,GAAex3M,KAAMw7D,EAAItvE,MACrD+sB,EAAKkvB,QAAUqzB,EAAIrzB,QAGK,UAAb7gB,GAAqC,aAAbA,IACnCrO,EAAKzE,aAAegnD,EAAIhnD,cAI1B,SAAS6nM,GAAUC,EAAY1tN,EAAMkB,EAAUyoN,GAG9C3pN,EAAO41M,EAAM51M,GAEb,IAAI6pN,EAAU9rM,EAAO2rM,EAASiE,EAAYl+L,EAAMs0G,EAC/C7xI,EAAI,EACJ++F,EAAIy8H,EAAWr7N,OACfu7N,EAAW38H,EAAI,EACft6F,EAAQqJ,EAAM,GACd6tN,EAAkBjsM,EAAYjrB,GAG/B,GAAKk3N,GACD58H,EAAI,GAAsB,iBAAVt6F,IAChBw7G,EAAQ62G,YAAcgE,GAAS57M,KAAMza,GACxC,OAAO+2N,EAAWl5C,MAAM,SAAU/7K,GACjC,IAAIuR,EAAO0jN,EAAW9kM,GAAInwB,GACrBo1N,IACJ7tN,EAAM,GAAMrJ,EAAMjF,KAAMV,KAAMyH,EAAOuR,EAAKwT,SAE3CiwM,GAAUzjN,EAAMhK,EAAMkB,EAAUyoN,MAIlC,GAAK14H,IAEJlzE,GADA8rM,EAAWJ,GAAezpN,EAAM0tN,EAAY,GAAI7iM,eAAe,EAAO6iM,EAAY/D,IACjEj6L,WAEmB,IAA/Bm6L,EAASvtM,WAAWjqB,SACxBw3N,EAAW9rM,GAIPA,GAAS4rM,GAAU,CAOvB,IALAgE,GADAjE,EAAU1nF,EAAO15H,IAAK8gN,GAAQS,EAAU,UAAYsD,KAC/B96N,OAKbH,EAAI++F,EAAG/+F,IACdu9B,EAAOo6L,EAEF33N,IAAM07N,IACVn+L,EAAOuyG,EAAO9nE,MAAOzqC,GAAM,GAAM,GAG5Bk+L,GAIJ3rF,EAAO13G,MAAOo/L,EAASN,GAAQ35L,EAAM,YAIvCvuB,EAASxP,KAAMg8N,EAAYx7N,GAAKu9B,EAAMv9B,GAGvC,GAAKy7N,EAOJ,IANA5pF,EAAM2lF,EAASA,EAAQr3N,OAAS,GAAIw4B,cAGpCm3G,EAAO15H,IAAKohN,EAAS0D,IAGfl7N,EAAI,EAAGA,EAAIy7N,EAAYz7N,IAC5Bu9B,EAAOi6L,EAASx3N,GACX42N,GAAY13M,KAAMqe,EAAKnyB,MAAQ,MAClC2pN,EAASb,OAAQ32L,EAAM,eACxBuyG,EAAOz5G,SAAUw7G,EAAKt0G,KAEjBA,EAAKm9C,KAA8C,YAArCn9C,EAAKnyB,MAAQ,IAAKwD,cAG/BkhI,EAAO8rF,WAAar+L,EAAK0mL,UAC7Bn0E,EAAO8rF,SAAUr+L,EAAKm9C,IAAK,CAC1BspI,MAAOzmL,EAAKymL,OAASzmL,EAAK3f,aAAc,UACtCi0H,GAGJqyE,EAAS3mL,EAAKinE,YAAY3xF,QAASkoN,GAAc,IAAMx9L,EAAMs0G,IAQnE,OAAO2pF,EAGR,SAAS36J,GAAQ+oH,EAAMt6C,EAAUusF,GAKhC,IAJA,IAAIt+L,EACHykF,EAAQstB,EAAWQ,EAAOj3H,OAAQy2H,EAAUs6C,GAASA,EACrD5pL,EAAI,EAE4B,OAAvBu9B,EAAOykF,EAAOhiH,IAAeA,IAChC67N,GAA8B,IAAlBt+L,EAAKmtE,UACtBolC,EAAOgsF,UAAW5E,GAAQ35L,IAGtBA,EAAKsP,aACJgvL,GAAYhG,GAAYt4L,IAC5B45L,GAAeD,GAAQ35L,EAAM,WAE9BA,EAAKsP,WAAW4uB,YAAal+B,IAI/B,OAAOqsJ,EAGR95C,EAAO7+C,OAAQ,CACd2mI,cAAe,SAAUtsM,GACxB,OAAOA,GAGR08C,MAAO,SAAU4hH,EAAMmyC,EAAeC,GACrC,IAAIh8N,EAAG++F,EAAGk9H,EAAaC,EACtBl0J,EAAQ4hH,EAAKtlF,WAAW,GACxB63H,EAAStG,GAAYjsC,GAGtB,KAAM3pE,EAAQ82G,gBAAsC,IAAlBntC,EAAKl/E,UAAoC,KAAlBk/E,EAAKl/E,UAC3DolC,EAAOigF,SAAUnmC,IAMnB,IAHAsyC,EAAehF,GAAQlvJ,GAGjBhoE,EAAI,EAAG++F,GAFbk9H,EAAc/E,GAAQttC,IAEOzpL,OAAQH,EAAI++F,EAAG/+F,IAC3Cs7N,GAAUW,EAAaj8N,GAAKk8N,EAAcl8N,IAK5C,GAAK+7N,EACJ,GAAKC,EAIJ,IAHAC,EAAcA,GAAe/E,GAAQttC,GACrCsyC,EAAeA,GAAgBhF,GAAQlvJ,GAEjChoE,EAAI,EAAG++F,EAAIk9H,EAAY97N,OAAQH,EAAI++F,EAAG/+F,IAC3Cm7N,GAAgBc,EAAaj8N,GAAKk8N,EAAcl8N,SAGjDm7N,GAAgBvxC,EAAM5hH,GAWxB,OANAk0J,EAAehF,GAAQlvJ,EAAO,WACZ7nE,OAAS,GAC1Bg3N,GAAe+E,GAAeC,GAAUjF,GAAQttC,EAAM,WAIhD5hH,GAGR8zJ,UAAW,SAAUxX,GAKpB,IAJA,IAAI1iN,EAAMgoL,EAAMx+K,EACf21K,EAAUjxC,EAAO98H,MAAM+tK,QACvB/gL,EAAI,OAE6BwP,KAAxBo6K,EAAO06B,EAAOtkN,IAAqBA,IAC5C,GAAK20N,EAAY/qC,GAAS,CACzB,GAAOhoL,EAAOgoL,EAAMmrC,EAAShQ,SAAc,CAC1C,GAAKnjN,EAAKwpC,OACT,IAAMhgC,KAAQxJ,EAAKwpC,OACb21I,EAAS31K,GACb0kI,EAAO98H,MAAM6tD,OAAQ+oH,EAAMx+K,GAI3B0kI,EAAOopF,YAAatvC,EAAMx+K,EAAMxJ,EAAKq0J,QAOxC2zB,EAAMmrC,EAAShQ,cAAYv1M,EAEvBo6K,EAAMorC,EAASjQ,WAInBn7B,EAAMorC,EAASjQ,cAAYv1M,OAOhCsgI,EAAOzwH,GAAG4xE,OAAQ,CACjBmxF,OAAQ,SAAU9yC,GACjB,OAAOzuE,GAAQ/hE,KAAMwwI,GAAU,IAGhCzuE,OAAQ,SAAUyuE,GACjB,OAAOzuE,GAAQ/hE,KAAMwwI,IAGtBjqG,KAAM,SAAU5gC,GACf,OAAOyvN,EAAQp1N,MAAM,SAAU2F,GAC9B,YAAiB+K,IAAV/K,EACNqrI,EAAOzqG,KAAMvmC,MACbA,KAAK4xB,QAAQ4xJ,MAAM,WACK,IAAlBxjL,KAAK4rG,UAAoC,KAAlB5rG,KAAK4rG,UAAqC,IAAlB5rG,KAAK4rG,WACxD5rG,KAAK0lG,YAAc//F,QAGpB,KAAMA,EAAOvE,UAAUC,SAG3BogG,OAAQ,WACP,OAAOg7H,GAAUz8N,KAAMoB,WAAW,SAAU0pL,GACpB,IAAlB9qL,KAAK4rG,UAAoC,KAAlB5rG,KAAK4rG,UAAqC,IAAlB5rG,KAAK4rG,UAC3CswH,GAAoBl8N,KAAM8qL,GAChC/1H,YAAa+1H,OAKvB6e,QAAS,WACR,OAAO8yB,GAAUz8N,KAAMoB,WAAW,SAAU0pL,GAC3C,GAAuB,IAAlB9qL,KAAK4rG,UAAoC,KAAlB5rG,KAAK4rG,UAAqC,IAAlB5rG,KAAK4rG,SAAiB,CACzE,IAAIz6F,EAAS+qN,GAAoBl8N,KAAM8qL,GACvC35K,EAAOwa,aAAcm/J,EAAM35K,EAAOutB,iBAKrC4+L,OAAQ,WACP,OAAOb,GAAUz8N,KAAMoB,WAAW,SAAU0pL,GACtC9qL,KAAK+tC,YACT/tC,KAAK+tC,WAAWpiB,aAAcm/J,EAAM9qL,UAKvCu9N,MAAO,WACN,OAAOd,GAAUz8N,KAAMoB,WAAW,SAAU0pL,GACtC9qL,KAAK+tC,YACT/tC,KAAK+tC,WAAWpiB,aAAcm/J,EAAM9qL,KAAKmxI,iBAK5Cv/G,MAAO,WAIN,IAHA,IAAIk5J,EACH5pL,EAAI,EAE2B,OAAtB4pL,EAAO9qL,KAAMkB,IAAeA,IACd,IAAlB4pL,EAAKl/E,WAGTolC,EAAOgsF,UAAW5E,GAAQttC,GAAM,IAGhCA,EAAKplF,YAAc,IAIrB,OAAO1lG,MAGRkpE,MAAO,SAAU+zJ,EAAeC,GAI/B,OAHAD,EAAiC,MAAjBA,GAAgCA,EAChDC,EAAyC,MAArBA,EAA4BD,EAAgBC,EAEzDl9N,KAAKsX,KAAK,WAChB,OAAO05H,EAAO9nE,MAAOlpE,KAAMi9N,EAAeC,OAI5C1wM,KAAM,SAAU7mB,GACf,OAAOyvN,EAAQp1N,MAAM,SAAU2F,GAC9B,IAAImlL,EAAO9qL,KAAM,IAAO,GACvBkB,EAAI,EACJ++F,EAAIjgG,KAAKqB,OAEV,QAAeqP,IAAV/K,GAAyC,IAAlBmlL,EAAKl/E,SAChC,OAAOk/E,EAAK1/J,UAIb,GAAsB,iBAAVzlB,IAAuBo2N,GAAa37M,KAAMza,KACpDuyN,IAAWL,GAASt/L,KAAM5yB,IAAW,CAAE,GAAI,KAAQ,GAAImK,eAAkB,CAE1EnK,EAAQqrI,EAAO8nF,cAAenzN,GAE9B,IACC,KAAQzE,EAAI++F,EAAG/+F,IAIS,KAHvB4pL,EAAO9qL,KAAMkB,IAAO,IAGV0qG,WACTolC,EAAOgsF,UAAW5E,GAAQttC,GAAM,IAChCA,EAAK1/J,UAAYzlB,GAInBmlL,EAAO,EAGN,MAAQhlL,KAGNglL,GACJ9qL,KAAK4xB,QAAQ6vE,OAAQ97F,KAEpB,KAAMA,EAAOvE,UAAUC,SAG3Bm8N,YAAa,WACZ,IAAI7E,EAAU,GAGd,OAAO8D,GAAUz8N,KAAMoB,WAAW,SAAU0pL,GAC3C,IAAI3rI,EAASn/C,KAAK+tC,WAEbijG,EAAOo8D,QAASptM,KAAM24N,GAAY,IACtC3nF,EAAOgsF,UAAW5E,GAAQp4N,OACrBm/C,GACJA,EAAOs+K,aAAc3yC,EAAM9qL,SAK3B24N,MAIL3nF,EAAOwyC,KAAM,CACZl0G,SAAU,SACVouJ,UAAW,UACX/xM,aAAc,SACdgyM,YAAa,QACbC,WAAY,gBACV,SAAUl7N,EAAM6xF,GAClBy8C,EAAOzwH,GAAI7d,GAAS,SAAU8tI,GAO7B,IANA,IAAIg1E,EACHllH,EAAM,GACN+Z,EAAS22B,EAAQR,GACjB7gG,EAAO0qE,EAAOh5G,OAAS,EACvBH,EAAI,EAEGA,GAAKyuC,EAAMzuC,IAClBskN,EAAQtkN,IAAMyuC,EAAO3vC,KAAOA,KAAKkpE,OAAO,GACxC8nE,EAAQ32B,EAAQn5G,IAAOqzF,GAAYixH,GAInC3/M,EAAKc,MAAO25F,EAAKklH,EAAM9jN,OAGxB,OAAO1B,KAAKulN,UAAWjlH,OAGzB,IAAIu9H,GAAY,IAAI3xM,OAAQ,KAAO0qM,GAAO,kBAAmB,KAEzDkH,GAAY,SAAUhzC,GAKxB,IAAI3nL,EAAO2nL,EAAKjxJ,cAAcC,YAM9B,OAJM32B,GAASA,EAAK46N,SACnB56N,EAAOmQ,GAGDnQ,EAAK42B,iBAAkB+wJ,IAG5BkzC,GAAO,SAAUlzC,EAAMlpL,EAASsO,GACnC,IAAIowF,EAAK59F,EACRu7N,EAAM,GAGP,IAAMv7N,KAAQd,EACbq8N,EAAKv7N,GAASooL,EAAKvjK,MAAO7kB,GAC1BooL,EAAKvjK,MAAO7kB,GAASd,EAASc,GAM/B,IAAMA,KAHN49F,EAAMpwF,EAASxP,KAAMoqL,GAGPlpL,EACbkpL,EAAKvjK,MAAO7kB,GAASu7N,EAAKv7N,GAG3B,OAAO49F,GAIJ49H,GAAY,IAAIhyM,OAAQ4qM,GAAU7wM,KAAM,KAAO,KAiJnD,SAASk4M,GAAQrzC,EAAMpoL,EAAMyyJ,GAC5B,IAAIzwI,EAAOsmI,EAAU5sH,EAAUkiE,EAM9B/4E,EAAQujK,EAAKvjK,MAqCd,OAnCA4tI,EAAWA,GAAY2oE,GAAWhzC,MAQpB,MAFbxqF,EAAM60D,EAASrhB,iBAAkBpxI,IAAUyyJ,EAAUzyJ,KAEjCq0N,GAAYjsC,KAC/BxqF,EAAM0wC,EAAOzpH,MAAOujK,EAAMpoL,KAQrBy+G,EAAQi9G,kBAAoBP,GAAUz9M,KAAMkgF,IAAS49H,GAAU99M,KAAM1d,KAG1EgiB,EAAQ6C,EAAM7C,MACdsmI,EAAWzjI,EAAMyjI,SACjB5sH,EAAW7W,EAAM6W,SAGjB7W,EAAMyjI,SAAWzjI,EAAM6W,SAAW7W,EAAM7C,MAAQ47E,EAChDA,EAAM60D,EAASzwI,MAGf6C,EAAM7C,MAAQA,EACd6C,EAAMyjI,SAAWA,EACjBzjI,EAAM6W,SAAWA,SAIJ1tB,IAAR4vF,EAINA,EAAM,GACNA,EAIF,SAAS+9H,GAAcC,EAAaC,GAGnC,MAAO,CACN78N,IAAK,WACJ,IAAK48N,IASL,OAASt+N,KAAK0B,IAAM68N,GAAS53N,MAAO3G,KAAMoB,kBALlCpB,KAAK0B,OA3MhB,WAIC,SAAS88N,IAGR,GAAMxhM,EAAN,CAIAzQ,EAAUhF,MAAM65D,QAAU,+EAE1BpkD,EAAIzV,MAAM65D,QACT,4HAGDzjE,GAAgBo3C,YAAaxoC,GAAYwoC,YAAa/3B,GAEtD,IAAIskD,EAAWhuE,EAAOymB,iBAAkBiD,GACxCyhM,EAAoC,OAAjBn9I,EAASxjD,IAG5B4gM,EAAsE,KAA9CC,EAAoBr9I,EAASnnD,YAIrD6C,EAAIzV,MAAMyJ,MAAQ,MAClB4tM,EAA6D,KAAzCD,EAAoBr9I,EAAStwD,OAIjD6tM,EAAgE,KAAzCF,EAAoBr9I,EAAS58D,OAMpDsY,EAAIzV,MAAMsW,SAAW,WACrBihM,EAAiE,KAA9CH,EAAoB3hM,EAAI3C,YAAc,GAEzD1c,GAAgBg/C,YAAapwC,GAI7ByQ,EAAM,MAGP,SAAS2hM,EAAoB1hN,GAC5B,OAAOsG,KAAKqqE,MAAO3gE,WAAYhQ,IAGhC,IAAIwhN,EAAkBI,EAAsBC,EAAkBF,EAC7DG,EAAyBL,EACzBnyM,EAAY5U,EAASE,cAAe,OACpCmlB,EAAMrlB,EAASE,cAAe,OAGzBmlB,EAAIzV,QAMVyV,EAAIzV,MAAMy3M,eAAiB,cAC3BhiM,EAAIwoE,WAAW,GAAOj+E,MAAMy3M,eAAiB,GAC7C79G,EAAQ89G,gBAA+C,gBAA7BjiM,EAAIzV,MAAMy3M,eAEpChuF,EAAO7+C,OAAQgvB,EAAS,CACvB+9G,kBAAmB,WAElB,OADAV,IACOK,GAERT,eAAgB,WAEf,OADAI,IACOI,GAERO,cAAe,WAEd,OADAX,IACOC,GAERW,mBAAoB,WAEnB,OADAZ,IACOE,GAERW,cAAe,WAEd,OADAb,IACOM,GAYRQ,qBAAsB,WACrB,IAAInlK,EAAOH,EAAIulK,EAASC,EAmCxB,OAlCgC,MAA3BT,IACJ5kK,EAAQxiD,EAASE,cAAe,SAChCmiD,EAAKriD,EAASE,cAAe,MAC7B0nN,EAAU5nN,EAASE,cAAe,OAElCsiD,EAAM5yC,MAAM65D,QAAU,2DACtBpnB,EAAGzyC,MAAM65D,QAAU,mBAKnBpnB,EAAGzyC,MAAM5C,OAAS,MAClB46M,EAAQh4M,MAAM5C,OAAS,MAQvB46M,EAAQh4M,MAAMm/B,QAAU,QAExB/oC,GACEo3C,YAAaoF,GACbpF,YAAaiF,GACbjF,YAAawqK,GAEfC,EAAUlsN,EAAOymB,iBAAkBigC,GACnC+kK,EAA4Bx5L,SAAUi6L,EAAQ76M,OAAQ,IACrD4gB,SAAUi6L,EAAQjsD,eAAgB,IAClChuI,SAAUi6L,EAAQC,kBAAmB,MAAWzlK,EAAG9/B,aAEpDvc,GAAgBg/C,YAAaxC,IAEvB4kK,MAvIV,GAsNA,IAAIW,GAAc,CAAE,SAAU,MAAO,MACpCC,GAAahoN,EAASE,cAAe,OAAQ0P,MAC7Cq4M,GAAc,GAkBf,SAASC,GAAen9N,GAGvB,OAFYsuI,EAAOknE,SAAUx1M,IAAUk9N,GAAal9N,KAK/CA,KAAQi9N,GACLj9N,EAEDk9N,GAAal9N,GAxBrB,SAAyBA,GAMxB,IAHA,IAAIo9N,EAAUp9N,EAAM,GAAIgpB,cAAgBhpB,EAAKwJ,MAAO,GACnDhL,EAAIw+N,GAAYr+N,OAETH,KAEP,IADAwB,EAAOg9N,GAAax+N,GAAM4+N,KACbH,GACZ,OAAOj9N,EAeoBq9N,CAAgBr9N,IAAUA,GAIxD,IAKCs9N,GAAe,4BACfC,GAAc,MACdC,GAAU,CAAEriM,SAAU,WAAYwqD,WAAY,SAAU3hC,QAAS,SACjEy5K,GAAqB,CACpBC,cAAe,IACfC,WAAY,OAGd,SAASC,GAAmB1a,EAAOjgN,EAAO46N,GAIzC,IAAIhwF,EAAUsmF,GAAQt+L,KAAM5yB,GAC5B,OAAO4qI,EAGNhtH,KAAKmnB,IAAK,EAAG6lG,EAAS,IAAQgwF,GAAY,KAAUhwF,EAAS,IAAO,MACpE5qI,EAGF,SAAS66N,GAAoB11C,EAAM16H,EAAWi1C,EAAKo7H,EAAa3gN,EAAQ4gN,GACvE,IAAIx/N,EAAkB,UAAdkvD,EAAwB,EAAI,EACnC3qC,EAAQ,EACRq6E,EAAQ,EAGT,GAAKuF,KAAUo7H,EAAc,SAAW,WACvC,OAAO,EAGR,KAAQv/N,EAAI,EAAGA,GAAK,EAGN,WAARmkG,IACJvF,GAASkxC,EAAO9lH,IAAK4/J,EAAMzlF,EAAMyxH,GAAW51N,IAAK,EAAM4e,IAIlD2gN,GAmBQ,YAARp7H,IACJvF,GAASkxC,EAAO9lH,IAAK4/J,EAAM,UAAYgsC,GAAW51N,IAAK,EAAM4e,IAIjD,WAARulF,IACJvF,GAASkxC,EAAO9lH,IAAK4/J,EAAM,SAAWgsC,GAAW51N,GAAM,SAAS,EAAM4e,MAtBvEggF,GAASkxC,EAAO9lH,IAAK4/J,EAAM,UAAYgsC,GAAW51N,IAAK,EAAM4e,GAGhD,YAARulF,EACJvF,GAASkxC,EAAO9lH,IAAK4/J,EAAM,SAAWgsC,GAAW51N,GAAM,SAAS,EAAM4e,GAItE2F,GAASurH,EAAO9lH,IAAK4/J,EAAM,SAAWgsC,GAAW51N,GAAM,SAAS,EAAM4e,IAoCzE,OAhBM2gN,GAAeC,GAAe,IAInC5gI,GAASv8E,KAAKmnB,IAAK,EAAGnnB,KAAKuC,KAC1BglK,EAAM,SAAW16H,EAAW,GAAI1kC,cAAgB0kC,EAAUlkD,MAAO,IACjEw0N,EACA5gI,EACAr6E,EACA,MAIM,GAGDq6E,EAGR,SAAS6gI,GAAkB71C,EAAM16H,EAAW3qC,GAG3C,IAAI3F,EAASg+M,GAAWhzC,GAKvB21C,IADmBt/G,EAAQ+9G,qBAAuBz5M,IAEE,eAAnDurH,EAAO9lH,IAAK4/J,EAAM,aAAa,EAAOhrK,GACvC8gN,EAAmBH,EAEnBh+N,EAAM07N,GAAQrzC,EAAM16H,EAAWtwC,GAC/B+gN,EAAa,SAAWzwK,EAAW,GAAI1kC,cAAgB0kC,EAAUlkD,MAAO,GAIzE,GAAK2xN,GAAUz9M,KAAM3d,GAAQ,CAC5B,IAAMgjB,EACL,OAAOhjB,EAERA,EAAM,OAyCP,QAlCQ0+G,EAAQ+9G,qBAAuBuB,IAMrCt/G,EAAQm+G,wBAA0B53L,EAAUojJ,EAAM,OAI3C,SAARroL,IAICwqB,WAAYxqB,IAA0D,WAAjDuuI,EAAO9lH,IAAK4/J,EAAM,WAAW,EAAOhrK,KAG1DgrK,EAAKjtC,iBAAiBx8I,SAEtBo/N,EAAiE,eAAnDzvF,EAAO9lH,IAAK4/J,EAAM,aAAa,EAAOhrK,IAKpD8gN,EAAmBC,KAAc/1C,KAEhCroL,EAAMqoL,EAAM+1C,MAKdp+N,EAAMwqB,WAAYxqB,IAAS,GAI1B+9N,GACC11C,EACA16H,EACA3qC,IAAWg7M,EAAc,SAAW,WACpCG,EACA9gN,EAGArd,GAEE,KA+SL,SAASq+N,GAAOh2C,EAAMlpL,EAAS4sB,EAAMqK,EAAK4lF,GACzC,OAAO,IAAIqiH,GAAM5gO,UAAU4oM,KAAMhe,EAAMlpL,EAAS4sB,EAAMqK,EAAK4lF,GA7S5DuyB,EAAO7+C,OAAQ,CAId4uI,SAAU,CACT32M,QAAS,CACR1oB,IAAK,SAAUopL,EAAM31B,GACpB,GAAKA,EAAW,CAGf,IAAI70D,EAAM69H,GAAQrzC,EAAM,WACxB,MAAe,KAARxqF,EAAa,IAAMA,MAO9Bi3H,UAAW,CACV,yBAA2B,EAC3B,aAAe,EACf,aAAe,EACf,UAAY,EACZ,YAAc,EACd,YAAc,EACd,UAAY,EACZ,YAAc,EACd,eAAiB,EACjB,iBAAmB,EACnB,SAAW,EACX,YAAc,EACd,cAAgB,EAChB,YAAc,EACd,SAAW,EACX,OAAS,EACT,SAAW,EACX,QAAU,EACV,QAAU,EACV,MAAQ,GAKTrf,SAAU,GAGV3wL,MAAO,SAAUujK,EAAMpoL,EAAMiD,EAAO8f,GAGnC,GAAMqlK,GAA0B,IAAlBA,EAAKl/E,UAAoC,IAAlBk/E,EAAKl/E,UAAmBk/E,EAAKvjK,MAAlE,CAKA,IAAI+4E,EAAKh0F,EAAMyT,EACdihN,EAAWpL,EAAWlzN,GACtBu+N,EAAehB,GAAY7/M,KAAM1d,GACjC6kB,EAAQujK,EAAKvjK,MAad,GARM05M,IACLv+N,EAAOm9N,GAAemB,IAIvBjhN,EAAQixH,EAAO+vF,SAAUr+N,IAAUsuI,EAAO+vF,SAAUC,QAGrCtwN,IAAV/K,EA0CJ,OAAKoa,GAAS,QAASA,QACwBrP,KAA5C4vF,EAAMvgF,EAAMre,IAAKopL,GAAM,EAAOrlK,IAEzB66E,EAID/4E,EAAO7kB,GA7CA,WAHd4J,SAAc3G,KAGc26F,EAAMu2H,GAAQt+L,KAAM5yB,KAAa26F,EAAK,KACjE36F,EAAQuxN,GAAWpsC,EAAMpoL,EAAM49F,GAG/Bh0F,EAAO,UAIM,MAAT3G,GAAiBA,GAAUA,IAOlB,WAAT2G,GAAsB20N,IAC1Bt7N,GAAS26F,GAAOA,EAAK,KAAS0wC,EAAOumF,UAAWyJ,GAAa,GAAK,OAI7D7/G,EAAQ89G,iBAA6B,KAAVt5N,GAAiD,IAAjCjD,EAAKgF,QAAS,gBAC9D6f,EAAO7kB,GAAS,WAIXqd,GAAY,QAASA,QACsBrP,KAA9C/K,EAAQoa,EAAMtF,IAAKqwK,EAAMnlL,EAAO8f,MAE7Bw7M,EACJ15M,EAAMuyH,YAAap3I,EAAMiD,GAEzB4hB,EAAO7kB,GAASiD,MAkBpBulB,IAAK,SAAU4/J,EAAMpoL,EAAM+iB,EAAO3F,GACjC,IAAIrd,EAAKc,EAAKwc,EACbihN,EAAWpL,EAAWlzN,GA6BvB,OA5BgBu9N,GAAY7/M,KAAM1d,KAMjCA,EAAOm9N,GAAemB,KAIvBjhN,EAAQixH,EAAO+vF,SAAUr+N,IAAUsuI,EAAO+vF,SAAUC,KAGtC,QAASjhN,IACtBtd,EAAMsd,EAAMre,IAAKopL,GAAM,EAAMrlK,SAIjB/U,IAARjO,IACJA,EAAM07N,GAAQrzC,EAAMpoL,EAAMod,IAId,WAARrd,GAAoBC,KAAQy9N,KAChC19N,EAAM09N,GAAoBz9N,IAIZ,KAAV+iB,GAAgBA,GACpBliB,EAAM0pB,WAAYxqB,IACD,IAAVgjB,GAAkBogJ,SAAUtiK,GAAQA,GAAO,EAAId,GAGhDA,KAITuuI,EAAOwyC,KAAM,CAAE,SAAU,UAAW,SAAUx8K,EAAIopD,GACjD4gF,EAAO+vF,SAAU3wK,GAAc,CAC9B1uD,IAAK,SAAUopL,EAAM31B,EAAU1vI,GAC9B,GAAK0vI,EAIJ,OAAO6qE,GAAa5/M,KAAM4wH,EAAO9lH,IAAK4/J,EAAM,aAQxCA,EAAKjtC,iBAAiBx8I,QAAWypL,EAAK3nI,wBAAwBz+B,MAIjEi8M,GAAkB71C,EAAM16H,EAAW3qC,GAHnCu4M,GAAMlzC,EAAMo1C,IAAS,WACpB,OAAOS,GAAkB71C,EAAM16H,EAAW3qC,OAM9ChL,IAAK,SAAUqwK,EAAMnlL,EAAO8f,GAC3B,IAAI8qH,EACHzwH,EAASg+M,GAAWhzC,GAIpBo2C,GAAsB//G,EAAQk+G,iBACT,aAApBv/M,EAAO+d,SAIR4iM,GADkBS,GAAsBz7M,IAEY,eAAnDurH,EAAO9lH,IAAK4/J,EAAM,aAAa,EAAOhrK,GACvCygN,EAAW96M,EACV+6M,GACC11C,EACA16H,EACA3qC,EACAg7M,EACA3gN,GAED,EAqBF,OAjBK2gN,GAAeS,IACnBX,GAAYh9M,KAAKuC,KAChBglK,EAAM,SAAW16H,EAAW,GAAI1kC,cAAgB0kC,EAAUlkD,MAAO,IACjE+gB,WAAYnN,EAAQswC,IACpBowK,GAAoB11C,EAAM16H,EAAW,UAAU,EAAOtwC,GACtD,KAKGygN,IAAchwF,EAAUsmF,GAAQt+L,KAAM5yB,KACb,QAA3B4qI,EAAS,IAAO,QAElBu6C,EAAKvjK,MAAO6oC,GAAczqD,EAC1BA,EAAQqrI,EAAO9lH,IAAK4/J,EAAM16H,IAGpBkwK,GAAmBx1C,EAAMnlL,EAAO46N,QAK1CvvF,EAAO+vF,SAAS5mM,WAAakkM,GAAcl9G,EAAQi+G,oBAClD,SAAUt0C,EAAM31B,GACf,GAAKA,EACJ,OAASloI,WAAYkxM,GAAQrzC,EAAM,gBAClCA,EAAK3nI,wBAAwBlyB,KAC5B+sM,GAAMlzC,EAAM,CAAE3wJ,WAAY,IAAK,WAC9B,OAAO2wJ,EAAK3nI,wBAAwBlyB,SAEnC,QAMP+/G,EAAOwyC,KAAM,CACZhxC,OAAQ,GACR7rF,QAAS,GACTp3B,OAAQ,UACN,SAAU5U,EAAQitD,GACpBopE,EAAO+vF,SAAUpmN,EAASitD,GAAW,CACpCmiC,OAAQ,SAAUpkG,GAOjB,IANA,IAAIzE,EAAI,EACP6zC,EAAW,GAGXjoB,EAAyB,iBAAVnnB,EAAqBA,EAAMwF,MAAO,KAAQ,CAAExF,GAEpDzE,EAAI,EAAGA,IACd6zC,EAAUp6B,EAASm8M,GAAW51N,GAAM0mE,GACnC96C,EAAO5rB,IAAO4rB,EAAO5rB,EAAI,IAAO4rB,EAAO,GAGzC,OAAOioB,IAIO,WAAXp6B,IACJq2H,EAAO+vF,SAAUpmN,EAASitD,GAASntD,IAAM6lN,OAI3CtvF,EAAOzwH,GAAG4xE,OAAQ,CACjBjnE,IAAK,SAAUxoB,EAAMiD,GACpB,OAAOyvN,EAAQp1N,MAAM,SAAU8qL,EAAMpoL,EAAMiD,GAC1C,IAAIma,EAAQmxG,EACX35G,EAAM,GACNpW,EAAI,EAEL,GAAKxB,MAAMyc,QAASzZ,GAAS,CAI5B,IAHAod,EAASg+M,GAAWhzC,GACpB75D,EAAMvuH,EAAKrB,OAEHH,EAAI+vH,EAAK/vH,IAChBoW,EAAK5U,EAAMxB,IAAQ8vI,EAAO9lH,IAAK4/J,EAAMpoL,EAAMxB,IAAK,EAAO4e,GAGxD,OAAOxI,EAGR,YAAiB5G,IAAV/K,EACNqrI,EAAOzpH,MAAOujK,EAAMpoL,EAAMiD,GAC1BqrI,EAAO9lH,IAAK4/J,EAAMpoL,KACjBA,EAAMiD,EAAOvE,UAAUC,OAAS,MAQrC2vI,EAAO8vF,MAAQA,GAEfA,GAAM5gO,UAAY,CACjBD,YAAa6gO,GACbh4B,KAAM,SAAUhe,EAAMlpL,EAAS4sB,EAAMqK,EAAK4lF,EAAQ1X,GACjD/mG,KAAK8qL,KAAOA,EACZ9qL,KAAKwuB,KAAOA,EACZxuB,KAAKy+G,OAASA,GAAUuyB,EAAOvyB,OAAO05G,SACtCn4N,KAAK4B,QAAUA,EACf5B,KAAKiO,MAAQjO,KAAKuS,IAAMvS,KAAKmsI,MAC7BnsI,KAAK64B,IAAMA,EACX74B,KAAK+mG,KAAOA,IAAUiqC,EAAOumF,UAAW/oM,GAAS,GAAK,OAEvD29G,IAAK,WACJ,IAAIpsH,EAAQ+gN,GAAMK,UAAWnhO,KAAKwuB,MAElC,OAAOzO,GAASA,EAAMre,IACrBqe,EAAMre,IAAK1B,MACX8gO,GAAMK,UAAUhJ,SAASz2N,IAAK1B,OAEhC0uJ,IAAK,SAAUvX,GACd,IAAIiqF,EACHrhN,EAAQ+gN,GAAMK,UAAWnhO,KAAKwuB,MAoB/B,OAlBKxuB,KAAK4B,QAAQ4tD,SACjBxvD,KAAK65G,IAAMunH,EAAQpwF,EAAOvyB,OAAQz+G,KAAKy+G,QACtC04B,EAASn3I,KAAK4B,QAAQ4tD,SAAW2nF,EAAS,EAAG,EAAGn3I,KAAK4B,QAAQ4tD,UAG9DxvD,KAAK65G,IAAMunH,EAAQjqF,EAEpBn3I,KAAKuS,KAAQvS,KAAK64B,IAAM74B,KAAKiO,OAAUmzN,EAAQphO,KAAKiO,MAE/CjO,KAAK4B,QAAQmE,MACjB/F,KAAK4B,QAAQmE,KAAKrF,KAAMV,KAAK8qL,KAAM9qL,KAAKuS,IAAKvS,MAGzC+f,GAASA,EAAMtF,IACnBsF,EAAMtF,IAAKza,MAEX8gO,GAAMK,UAAUhJ,SAAS19M,IAAKza,MAExBA,OAIT8gO,GAAM5gO,UAAU4oM,KAAK5oM,UAAY4gO,GAAM5gO,UAEvC4gO,GAAMK,UAAY,CACjBhJ,SAAU,CACTz2N,IAAK,SAAU01N,GACd,IAAI3wN,EAIJ,OAA6B,IAAxB2wN,EAAMtsC,KAAKl/E,UACa,MAA5BwrH,EAAMtsC,KAAMssC,EAAM5oM,OAAoD,MAAlC4oM,EAAMtsC,KAAKvjK,MAAO6vM,EAAM5oM,MACrD4oM,EAAMtsC,KAAMssC,EAAM5oM,OAO1B/nB,EAASuqI,EAAO9lH,IAAKksM,EAAMtsC,KAAMssC,EAAM5oM,KAAM,MAGhB,SAAX/nB,EAAwBA,EAAJ,GAEvCgU,IAAK,SAAU28M,GAKTpmF,EAAOqwF,GAAGt7N,KAAMqxN,EAAM5oM,MAC1BwiH,EAAOqwF,GAAGt7N,KAAMqxN,EAAM5oM,MAAQ4oM,GACK,IAAxBA,EAAMtsC,KAAKl/E,WACtBolC,EAAO+vF,SAAU3J,EAAM5oM,OAC6B,MAAnD4oM,EAAMtsC,KAAKvjK,MAAOs4M,GAAezI,EAAM5oM,OAGxC4oM,EAAMtsC,KAAMssC,EAAM5oM,MAAS4oM,EAAM7kN,IAFjCy+H,EAAOzpH,MAAO6vM,EAAMtsC,KAAMssC,EAAM5oM,KAAM4oM,EAAM7kN,IAAM6kN,EAAMrwH,SAU5D+5H,GAAMK,UAAUp2L,UAAY+1L,GAAMK,UAAU3zK,WAAa,CACxD/yC,IAAK,SAAU28M,GACTA,EAAMtsC,KAAKl/E,UAAYwrH,EAAMtsC,KAAK/8I,aACtCqpL,EAAMtsC,KAAMssC,EAAM5oM,MAAS4oM,EAAM7kN,OAKpCy+H,EAAOvyB,OAAS,CACfR,OAAQ,SAAUp+G,GACjB,OAAOA,GAERm+G,MAAO,SAAUn+G,GAChB,MAAO,GAAM0jB,KAAK0jF,IAAKpnG,EAAI0jB,KAAK4+E,IAAO,GAExCg2H,SAAU,SAGXnnF,EAAOqwF,GAAKP,GAAM5gO,UAAU4oM,KAG5B93D,EAAOqwF,GAAGt7N,KAAO,GAKjB,IACCu7N,GAAOC,GACPC,GAAW,yBACXC,GAAO,cAER,SAASC,KACHH,MACqB,IAApB5pN,EAASk0E,QAAoBv4E,EAAOg8C,sBACxCh8C,EAAOg8C,sBAAuBoyK,IAE9BpuN,EAAOzC,WAAY6wN,GAAU1wF,EAAOqwF,GAAG3yH,UAGxCsiC,EAAOqwF,GAAGM,QAKZ,SAASC,KAIR,OAHAtuN,EAAOzC,YAAY,WAClBywN,QAAQ5wN,KAEA4wN,GAAQl5N,KAAKmK,MAIvB,SAASsvN,GAAOv1N,EAAMw1N,GACrB,IAAI7+L,EACH/hC,EAAI,EACJqvB,EAAQ,CAAE5L,OAAQrY,GAKnB,IADAw1N,EAAeA,EAAe,EAAI,EAC1B5gO,EAAI,EAAGA,GAAK,EAAI4gO,EAEvBvxM,EAAO,UADP0S,EAAQ6zL,GAAW51N,KACSqvB,EAAO,UAAY0S,GAAU32B,EAO1D,OAJKw1N,IACJvxM,EAAMnG,QAAUmG,EAAM7L,MAAQpY,GAGxBikB,EAGR,SAASwxM,GAAap8N,EAAO6oB,EAAMqmK,GAKlC,IAJA,IAAIuiC,EACHsF,GAAez/L,GAAU+kM,SAAUxzM,IAAU,IAAK1U,OAAQmjB,GAAU+kM,SAAU,MAC9Ev6N,EAAQ,EACRpG,EAASq7N,EAAWr7N,OACboG,EAAQpG,EAAQoG,IACvB,GAAO2vN,EAAQsF,EAAYj1N,GAAQ/G,KAAMm0L,EAAWrmK,EAAM7oB,GAGzD,OAAOyxN,EAsNV,SAASn6L,GAAW6tJ,EAAMyhB,EAAY3qM,GACrC,IAAI6E,EACH2zM,EACA3yM,EAAQ,EACRpG,EAAS47B,GAAUglM,WAAW5gO,OAC9BqyN,EAAW1iF,EAAOuiF,WAAWE,QAAQ,kBAG7BkO,EAAK72C,QAEb62C,EAAO,WACN,GAAKvnB,EACJ,OAAO,EAYR,IAVA,IAAI8nB,EAAcZ,IAASM,KAC1B9+M,EAAYS,KAAKmnB,IAAK,EAAGmqJ,EAAUstC,UAAYttC,EAAUrlI,SAAW0yK,GAKpE/qF,EAAU,GADHr0H,EAAY+xK,EAAUrlI,UAAY,GAEzC/nD,EAAQ,EACRpG,EAASwzL,EAAUutC,OAAO/gO,OAEnBoG,EAAQpG,EAAQoG,IACvBotL,EAAUutC,OAAQ36N,GAAQinJ,IAAKvX,GAMhC,OAHAu8E,EAASS,WAAYrpC,EAAM,CAAE+J,EAAW19C,EAASr0H,IAG5Cq0H,EAAU,GAAK91I,EACZyhB,GAIFzhB,GACLqyN,EAASS,WAAYrpC,EAAM,CAAE+J,EAAW,EAAG,IAI5C6+B,EAASU,YAAatpC,EAAM,CAAE+J,KACvB,IAERA,EAAY6+B,EAAS9xM,QAAS,CAC7BkpK,KAAMA,EACN/uK,MAAOi1H,EAAO7+C,OAAQ,GAAIo6G,GAC1BxK,KAAM/wD,EAAO7+C,QAAQ,EAAM,CAC1BkwI,cAAe,GACf5jH,OAAQuyB,EAAOvyB,OAAO05G,UACpBv2N,GACH0gO,mBAAoB/1B,EACpBg2B,gBAAiB3gO,EACjBugO,UAAWb,IAASM,KACpBpyK,SAAU5tD,EAAQ4tD,SAClB4yK,OAAQ,GACRL,YAAa,SAAUvzM,EAAMqK,GAC5B,IAAIu+L,EAAQpmF,EAAO8vF,MAAOh2C,EAAM+J,EAAUkN,KAAMvzK,EAAMqK,EACrDg8J,EAAUkN,KAAKsgC,cAAe7zM,IAAUqmK,EAAUkN,KAAKtjF,QAExD,OADAo2E,EAAUutC,OAAOv8N,KAAMuxN,GAChBA,GAERxoN,KAAM,SAAU4zN,GACf,IAAI/6N,EAAQ,EAIXpG,EAASmhO,EAAU3tC,EAAUutC,OAAO/gO,OAAS,EAC9C,GAAK+4M,EACJ,OAAOp6M,KAGR,IADAo6M,GAAU,EACF3yM,EAAQpG,EAAQoG,IACvBotL,EAAUutC,OAAQ36N,GAAQinJ,IAAK,GAUhC,OANK8zE,GACJ9O,EAASS,WAAYrpC,EAAM,CAAE+J,EAAW,EAAG,IAC3C6+B,EAASU,YAAatpC,EAAM,CAAE+J,EAAW2tC,KAEzC9O,EAASa,WAAYzpC,EAAM,CAAE+J,EAAW2tC,IAElCxiO,QAGT+b,EAAQ84K,EAAU94K,MAInB,IA/HD,SAAqBA,EAAOsmN,GAC3B,IAAI56N,EAAO/E,EAAM+7G,EAAQ94G,EAAOoa,EAGhC,IAAMtY,KAASsU,EAed,GAbA0iG,EAAS4jH,EADT3/N,EAAOkzN,EAAWnuN,IAElB9B,EAAQoW,EAAOtU,GACV/H,MAAMyc,QAASxW,KACnB84G,EAAS94G,EAAO,GAChBA,EAAQoW,EAAOtU,GAAU9B,EAAO,IAG5B8B,IAAU/E,IACdqZ,EAAOrZ,GAASiD,SACToW,EAAOtU,KAGfsY,EAAQixH,EAAO+vF,SAAUr+N,KACX,WAAYqd,EAMzB,IAAMtY,KALN9B,EAAQoa,EAAMgqF,OAAQpkG,UACfoW,EAAOrZ,GAICiD,EACN8B,KAASsU,IAChBA,EAAOtU,GAAU9B,EAAO8B,GACxB46N,EAAe56N,GAAUg3G,QAI3B4jH,EAAe3/N,GAAS+7G,EA6F1BgkH,CAAY1mN,EAAO84K,EAAUkN,KAAKsgC,eAE1B56N,EAAQpG,EAAQoG,IAEvB,GADAhB,EAASw2B,GAAUglM,WAAYx6N,GAAQ/G,KAAMm0L,EAAW/J,EAAM/uK,EAAO84K,EAAUkN,MAM9E,OAJKnxK,EAAYnqB,EAAOmI,QACvBoiI,EAAOylF,YAAa5hC,EAAU/J,KAAM+J,EAAUkN,KAAKkxB,OAAQrkN,KAC1DnI,EAAOmI,KAAK8hB,KAAMjqB,IAEbA,EAyBT,OArBAuqI,EAAO15H,IAAKyE,EAAOgmN,GAAaltC,GAE3BjkK,EAAYikK,EAAUkN,KAAK9zL,QAC/B4mL,EAAUkN,KAAK9zL,MAAMvN,KAAMoqL,EAAM+J,GAIlCA,EACExlI,SAAUwlI,EAAUkN,KAAK1yI,UACzB3pD,KAAMmvL,EAAUkN,KAAKr8L,KAAMmvL,EAAUkN,KAAK36L,UAC1CurN,KAAM99B,EAAUkN,KAAK4wB,MACrBc,OAAQ5+B,EAAUkN,KAAK0xB,QAEzBziF,EAAOqwF,GAAGqB,MACT1xF,EAAO7+C,OAAQwvI,EAAM,CACpB72C,KAAMA,EACN63C,KAAM9tC,EACNo+B,MAAOp+B,EAAUkN,KAAKkxB,SAIjBp+B,EAGR7jD,EAAO/zG,UAAY+zG,EAAO7+C,OAAQl1D,GAAW,CAE5C+kM,SAAU,CACT,IAAK,CAAE,SAAUxzM,EAAM7oB,GACtB,IAAIyxN,EAAQp3N,KAAK+hO,YAAavzM,EAAM7oB,GAEpC,OADAuxN,GAAWE,EAAMtsC,KAAMt8J,EAAMqoM,GAAQt+L,KAAM5yB,GAASyxN,GAC7CA,KAITwL,QAAS,SAAU7mN,EAAO7L,GACpB0gB,EAAY7U,IAChB7L,EAAW6L,EACXA,EAAQ,CAAE,MAEVA,EAAQA,EAAMqS,MAAOkkM,GAOtB,IAJA,IAAI9jM,EACH/mB,EAAQ,EACRpG,EAAS0a,EAAM1a,OAERoG,EAAQpG,EAAQoG,IACvB+mB,EAAOzS,EAAOtU,GACdw1B,GAAU+kM,SAAUxzM,GAASyO,GAAU+kM,SAAUxzM,IAAU,GAC3DyO,GAAU+kM,SAAUxzM,GAAO4uB,QAASltC,IAItC+xN,WAAY,CA3Wb,SAA2Bn3C,EAAM/uK,EAAOgmL,GACvC,IAAIvzK,EAAM7oB,EAAOmwJ,EAAQ/1I,EAAO8iN,EAASC,EAAWC,EAAgBr8K,EACnEs8K,EAAQ,UAAWjnN,GAAS,WAAYA,EACxC4mN,EAAO3iO,KACPsxI,EAAO,GACP/pH,EAAQujK,EAAKvjK,MACbskE,EAASi/F,EAAKl/E,UAAYqrH,GAAoBnsC,GAC9Cm4C,EAAWhN,EAASv0N,IAAKopL,EAAM,UA6BhC,IAAMt8J,KA1BAuzK,EAAKkxB,QAEa,OADvBlzM,EAAQixH,EAAOylF,YAAa3rC,EAAM,OACvBo4C,WACVnjN,EAAMmjN,SAAW,EACjBL,EAAU9iN,EAAM6R,MAAMuhM,KACtBpzM,EAAM6R,MAAMuhM,KAAO,WACZpzM,EAAMmjN,UACXL,MAIH9iN,EAAMmjN,WAENP,EAAKlP,QAAQ,WAGZkP,EAAKlP,QAAQ,WACZ1zM,EAAMmjN,WACAlyF,EAAOiiF,MAAOnoC,EAAM,MAAOzpL,QAChC0e,EAAM6R,MAAMuhM,cAOFp3M,EAEb,GADApW,EAAQoW,EAAOyS,GACVgzM,GAASphN,KAAMza,GAAU,CAG7B,UAFOoW,EAAOyS,GACdsnI,EAASA,GAAoB,WAAVnwJ,EACdA,KAAYkmF,EAAS,OAAS,QAAW,CAI7C,GAAe,SAAVlmF,IAAoBs9N,QAAiCvyN,IAArBuyN,EAAUz0M,GAK9C,SAJAq9D,GAAS,EAOXylD,EAAM9iH,GAASy0M,GAAYA,EAAUz0M,IAAUwiH,EAAOzpH,MAAOujK,EAAMt8J,GAMrE,IADAs0M,GAAa9xF,EAAOo1E,cAAerqM,MAChBi1H,EAAOo1E,cAAe90E,GA8DzC,IAAM9iH,KAzDDw0M,GAA2B,IAAlBl4C,EAAKl/E,WAMlBm2F,EAAK/sD,SAAW,CAAEztH,EAAMytH,SAAUztH,EAAMopJ,UAAWppJ,EAAM6lB,WAIlC,OADvB21L,EAAiBE,GAAYA,EAASv8K,WAErCq8K,EAAiB9M,EAASv0N,IAAKopL,EAAM,YAGrB,UADjBpkI,EAAUsqF,EAAO9lH,IAAK4/J,EAAM,cAEtBi4C,EACJr8K,EAAUq8K,GAIVpL,GAAU,CAAE7sC,IAAQ,GACpBi4C,EAAiBj4C,EAAKvjK,MAAMm/B,SAAWq8K,EACvCr8K,EAAUsqF,EAAO9lH,IAAK4/J,EAAM,WAC5B6sC,GAAU,CAAE7sC,OAKG,WAAZpkI,GAAoC,iBAAZA,GAAgD,MAAlBq8K,IACrB,SAAhC/xF,EAAO9lH,IAAK4/J,EAAM,WAGhBg4C,IACLH,EAAKj9N,MAAM,WACV6hB,EAAMm/B,QAAUq8K,KAEM,MAAlBA,IACJr8K,EAAUn/B,EAAMm/B,QAChBq8K,EAA6B,SAAZr8K,EAAqB,GAAKA,IAG7Cn/B,EAAMm/B,QAAU,iBAKdq7I,EAAK/sD,WACTztH,EAAMytH,SAAW,SACjB2tF,EAAKlP,QAAQ,WACZlsM,EAAMytH,SAAW+sD,EAAK/sD,SAAU,GAChCztH,EAAMopJ,UAAYoxB,EAAK/sD,SAAU,GACjCztH,EAAM6lB,UAAY20J,EAAK/sD,SAAU,OAKnC8tF,GAAY,EACExxF,EAGPwxF,IACAG,EACC,WAAYA,IAChBp3I,EAASo3I,EAASp3I,QAGnBo3I,EAAWhN,EAASb,OAAQtqC,EAAM,SAAU,CAAEpkI,QAASq8K,IAInDjtE,IACJmtE,EAASp3I,QAAUA,GAIfA,GACJ8rI,GAAU,CAAE7sC,IAAQ,GAKrB63C,EAAKj9N,MAAM,WASV,IAAM8oB,KAJAq9D,GACL8rI,GAAU,CAAE7sC,IAEbmrC,EAASl0J,OAAQ+oH,EAAM,UACTx5C,EACbN,EAAOzpH,MAAOujK,EAAMt8J,EAAM8iH,EAAM9iH,QAMnCs0M,EAAYf,GAAal2I,EAASo3I,EAAUz0M,GAAS,EAAGA,EAAMm0M,GACtDn0M,KAAQy0M,IACfA,EAAUz0M,GAASs0M,EAAU70N,MACxB49E,IACJi3I,EAAUjqM,IAAMiqM,EAAU70N,MAC1B60N,EAAU70N,MAAQ,MAuMrBk1N,UAAW,SAAUjzN,EAAUy5L,GACzBA,EACJ1sK,GAAUglM,WAAW7kL,QAASltC,GAE9B+sB,GAAUglM,WAAWp8N,KAAMqK,MAK9B8gI,EAAOoyF,MAAQ,SAAUA,EAAO3kH,EAAQl+F,GACvC,IAAI8iN,EAAMD,GAA0B,iBAAVA,EAAqBpyF,EAAO7+C,OAAQ,GAAIixI,GAAU,CAC3Eh8N,SAAUmZ,IAAOA,GAAMk+F,GACtB7tF,EAAYwyM,IAAWA,EACxB5zK,SAAU4zK,EACV3kH,OAAQl+F,GAAMk+F,GAAUA,IAAW7tF,EAAY6tF,IAAYA,GAoC5D,OAhCKuyB,EAAOqwF,GAAGtxN,IACdszN,EAAI7zK,SAAW,EAGc,iBAAjB6zK,EAAI7zK,WACV6zK,EAAI7zK,YAAYwhF,EAAOqwF,GAAGiC,OAC9BD,EAAI7zK,SAAWwhF,EAAOqwF,GAAGiC,OAAQD,EAAI7zK,UAGrC6zK,EAAI7zK,SAAWwhF,EAAOqwF,GAAGiC,OAAOnL,UAMjB,MAAbkL,EAAIpQ,QAA+B,IAAdoQ,EAAIpQ,QAC7BoQ,EAAIpQ,MAAQ,MAIboQ,EAAIpF,IAAMoF,EAAIj8N,SAEdi8N,EAAIj8N,SAAW,WACTwpB,EAAYyyM,EAAIpF,MACpBoF,EAAIpF,IAAIv9N,KAAMV,MAGVqjO,EAAIpQ,OACRjiF,EAAOulF,QAASv2N,KAAMqjO,EAAIpQ,QAIrBoQ,GAGRryF,EAAOzwH,GAAG4xE,OAAQ,CACjBoxI,OAAQ,SAAUH,EAAO3rN,EAAIgnG,EAAQvuG,GAGpC,OAAOlQ,KAAK+Z,OAAQk9M,IAAqB/rM,IAAK,UAAW,GAAIge,OAG3DrQ,MAAM+V,QAAS,CAAExkB,QAAS3S,GAAM2rN,EAAO3kH,EAAQvuG,IAElD0+B,QAAS,SAAUpgB,EAAM40M,EAAO3kH,EAAQvuG,GACvC,IAAI0hB,EAAQo/G,EAAOo1E,cAAe53L,GACjCg1M,EAASxyF,EAAOoyF,MAAOA,EAAO3kH,EAAQvuG,GACtCuzN,EAAc,WAGb,IAAId,EAAO1lM,GAAWj9B,KAAMgxI,EAAO7+C,OAAQ,GAAI3jE,GAAQg1M,IAGlD5xM,GAASqkM,EAASv0N,IAAK1B,KAAM,YACjC2iO,EAAK/zN,MAAM,IAMd,OAFA60N,EAAY/kH,OAAS+kH,EAEd7xM,IAA0B,IAAjB4xM,EAAOvQ,MACtBjzN,KAAKwjL,KAAMigD,GACXzjO,KAAKizN,MAAOuQ,EAAOvQ,MAAOwQ,IAE5B70N,KAAM,SAAUtC,EAAMoqN,EAAY8L,GACjC,IAAIkB,EAAY,SAAU3jN,GACzB,IAAInR,EAAOmR,EAAMnR,YACVmR,EAAMnR,KACbA,EAAM4zN,IAYP,MATqB,iBAATl2N,IACXk2N,EAAU9L,EACVA,EAAapqN,EACbA,OAAOoE,GAEHgmN,GACJ12N,KAAKizN,MAAO3mN,GAAQ,KAAM,IAGpBtM,KAAKwjL,MAAM,WACjB,IAAI+yC,GAAU,EACb9uN,EAAgB,MAAR6E,GAAgBA,EAAO,aAC/Bq3N,EAAS3yF,EAAO2yF,OAChB7gO,EAAOmzN,EAASv0N,IAAK1B,MAEtB,GAAKyH,EACC3E,EAAM2E,IAAW3E,EAAM2E,GAAQmH,MACnC80N,EAAW5gO,EAAM2E,SAGlB,IAAMA,KAAS3E,EACTA,EAAM2E,IAAW3E,EAAM2E,GAAQmH,MAAQ6yN,GAAKrhN,KAAM3Y,IACtDi8N,EAAW5gO,EAAM2E,IAKpB,IAAMA,EAAQk8N,EAAOtiO,OAAQoG,KACvBk8N,EAAQl8N,GAAQqjL,OAAS9qL,MACnB,MAARsM,GAAgBq3N,EAAQl8N,GAAQwrN,QAAU3mN,IAE5Cq3N,EAAQl8N,GAAQk7N,KAAK/zN,KAAM4zN,GAC3BjM,GAAU,EACVoN,EAAOh8N,OAAQF,EAAO,KAOnB8uN,GAAYiM,GAChBxxF,EAAOulF,QAASv2N,KAAMsM,OAIzBoyG,OAAQ,SAAUpyG,GAIjB,OAHc,IAATA,IACJA,EAAOA,GAAQ,MAETtM,KAAKwjL,MAAM,WACjB,IAAI/7K,EACH3E,EAAOmzN,EAASv0N,IAAK1B,MACrBizN,EAAQnwN,EAAMwJ,EAAO,SACrByT,EAAQjd,EAAMwJ,EAAO,cACrBq3N,EAAS3yF,EAAO2yF,OAChBtiO,EAAS4xN,EAAQA,EAAM5xN,OAAS,EAajC,IAVAyB,EAAK47G,QAAS,EAGdsyB,EAAOiiF,MAAOjzN,KAAMsM,EAAM,IAErByT,GAASA,EAAMnR,MACnBmR,EAAMnR,KAAKlO,KAAMV,MAAM,GAIlByH,EAAQk8N,EAAOtiO,OAAQoG,KACvBk8N,EAAQl8N,GAAQqjL,OAAS9qL,MAAQ2jO,EAAQl8N,GAAQwrN,QAAU3mN,IAC/Dq3N,EAAQl8N,GAAQk7N,KAAK/zN,MAAM,GAC3B+0N,EAAOh8N,OAAQF,EAAO,IAKxB,IAAMA,EAAQ,EAAGA,EAAQpG,EAAQoG,IAC3BwrN,EAAOxrN,IAAWwrN,EAAOxrN,GAAQi3G,QACrCu0G,EAAOxrN,GAAQi3G,OAAOh+G,KAAMV,aAKvB8C,EAAK47G,aAKfsyB,EAAOwyC,KAAM,CAAE,SAAU,OAAQ,SAAU,SAAUx8K,EAAItE,GACxD,IAAIkhO,EAAQ5yF,EAAOzwH,GAAI7d,GACvBsuI,EAAOzwH,GAAI7d,GAAS,SAAU0gO,EAAO3kH,EAAQvuG,GAC5C,OAAgB,MAATkzN,GAAkC,kBAAVA,EAC9BQ,EAAMj9N,MAAO3G,KAAMoB,WACnBpB,KAAK4uC,QAASizL,GAAOn/N,GAAM,GAAQ0gO,EAAO3kH,EAAQvuG,OAKrD8gI,EAAOwyC,KAAM,CACZqgD,UAAWhC,GAAO,QAClBiC,QAASjC,GAAO,QAChBkC,YAAalC,GAAO,UACpBmC,OAAQ,CAAE55M,QAAS,QACnB65M,QAAS,CAAE75M,QAAS,QACpB85M,WAAY,CAAE95M,QAAS,YACrB,SAAU1nB,EAAMqZ,GAClBi1H,EAAOzwH,GAAI7d,GAAS,SAAU0gO,EAAO3kH,EAAQvuG,GAC5C,OAAOlQ,KAAK4uC,QAAS7yB,EAAOqnN,EAAO3kH,EAAQvuG,OAI7C8gI,EAAO2yF,OAAS,GAChB3yF,EAAOqwF,GAAGM,KAAO,WAChB,IAAIe,EACHxhO,EAAI,EACJyiO,EAAS3yF,EAAO2yF,OAIjB,IAFArC,GAAQl5N,KAAKmK,MAELrR,EAAIyiO,EAAOtiO,OAAQH,KAC1BwhO,EAAQiB,EAAQziO,OAGCyiO,EAAQziO,KAAQwhO,GAChCiB,EAAOh8N,OAAQzG,IAAK,GAIhByiO,EAAOtiO,QACZ2vI,EAAOqwF,GAAGzyN,OAEX0yN,QAAQ5wN,GAGTsgI,EAAOqwF,GAAGqB,MAAQ,SAAUA,GAC3B1xF,EAAO2yF,OAAO99N,KAAM68N,GACpB1xF,EAAOqwF,GAAGpzN,SAGX+iI,EAAOqwF,GAAG3yH,SAAW,GACrBsiC,EAAOqwF,GAAGpzN,MAAQ,WACZszN,KAILA,IAAa,EACbG,OAGD1wF,EAAOqwF,GAAGzyN,KAAO,WAChB2yN,GAAa,MAGdvwF,EAAOqwF,GAAGiC,OAAS,CAClBa,KAAM,IACNC,KAAM,IAGNjM,SAAU,KAMXnnF,EAAOzwH,GAAGqxB,MAAQ,SAAUwtB,EAAM9yD,GAIjC,OAHA8yD,EAAO4xE,EAAOqwF,IAAKrwF,EAAOqwF,GAAGiC,OAAQlkK,IAAiBA,EACtD9yD,EAAOA,GAAQ,KAERtM,KAAKizN,MAAO3mN,GAAM,SAAUnH,EAAM4a,GACxC,IAAIvW,EAAU8J,EAAOzC,WAAY1L,EAAMi6D,GACvCr/C,EAAMnR,KAAO,WACZ0E,EAAO/B,aAAc/H,QAMxB,WACC,IAAIyB,EAAQ0M,EAASE,cAAe,SAEnCwrN,EADS1rN,EAASE,cAAe,UACpBk9C,YAAap9C,EAASE,cAAe,WAEnD5M,EAAMqB,KAAO,WAIb60G,EAAQkjH,QAA0B,KAAhBp5N,EAAMtF,MAIxBw7G,EAAQmjH,YAAcjB,EAAIz7L,UAI1B38B,EAAQ0M,EAASE,cAAe,UAC1BlS,MAAQ,IACdsF,EAAMqB,KAAO,QACb60G,EAAQojH,WAA6B,MAAhBt5N,EAAMtF,MApB5B,GAwBA,IAAI6+N,GACHja,GAAav5E,EAAOk7E,KAAK3B,WAE1Bv5E,EAAOzwH,GAAG4xE,OAAQ,CACjBxzE,KAAM,SAAUjc,EAAMiD,GACrB,OAAOyvN,EAAQp1N,KAAMgxI,EAAOryH,KAAMjc,EAAMiD,EAAOvE,UAAUC,OAAS,IAGnEkiH,WAAY,SAAU7gH,GACrB,OAAO1C,KAAKwjL,MAAM,WACjBxyC,EAAOztB,WAAYvjH,KAAM0C,SAK5BsuI,EAAO7+C,OAAQ,CACdxzE,KAAM,SAAUmsK,EAAMpoL,EAAMiD,GAC3B,IAAI26F,EAAKvgF,EACR0kN,EAAQ35C,EAAKl/E,SAGd,GAAe,IAAV64H,GAAyB,IAAVA,GAAyB,IAAVA,EAKnC,YAAkC,IAAtB35C,EAAKhsK,aACTkyH,EAAOxiH,KAAMs8J,EAAMpoL,EAAMiD,IAKlB,IAAV8+N,GAAgBzzF,EAAOigF,SAAUnmC,KACrC/qK,EAAQixH,EAAO0zF,UAAWhiO,EAAKoN,iBAC5BkhI,EAAOk7E,KAAK99L,MAAMu2M,KAAKvkN,KAAM1d,GAAS8hO,QAAW9zN,SAGtCA,IAAV/K,EACW,OAAVA,OACJqrI,EAAOztB,WAAYunE,EAAMpoL,GAIrBqd,GAAS,QAASA,QACuBrP,KAA3C4vF,EAAMvgF,EAAMtF,IAAKqwK,EAAMnlL,EAAOjD,IACzB49F,GAGRwqF,EAAK3/J,aAAczoB,EAAMiD,EAAQ,IAC1BA,GAGHoa,GAAS,QAASA,GAA+C,QAApCugF,EAAMvgF,EAAMre,IAAKopL,EAAMpoL,IACjD49F,EAMM,OAHdA,EAAM0wC,EAAOn2F,KAAKl8B,KAAMmsK,EAAMpoL,SAGTgO,EAAY4vF,IAGlCokI,UAAW,CACVp4N,KAAM,CACLmO,IAAK,SAAUqwK,EAAMnlL,GACpB,IAAMw7G,EAAQojH,YAAwB,UAAV5+N,GAC3B+hC,EAAUojJ,EAAM,SAAY,CAC5B,IAAIroL,EAAMqoL,EAAKnlL,MAKf,OAJAmlL,EAAK3/J,aAAc,OAAQxlB,GACtBlD,IACJqoL,EAAKnlL,MAAQlD,GAEPkD,MAMX49G,WAAY,SAAUunE,EAAMnlL,GAC3B,IAAIjD,EACHxB,EAAI,EAIJ0jO,EAAYj/N,GAASA,EAAMyoB,MAAOkkM,GAEnC,GAAKsS,GAA+B,IAAlB95C,EAAKl/E,SACtB,KAAUlpG,EAAOkiO,EAAW1jO,MAC3B4pL,EAAKpnE,gBAAiBhhH,MAO1B8hO,GAAW,CACV/pN,IAAK,SAAUqwK,EAAMnlL,EAAOjD,GAQ3B,OAPe,IAAViD,EAGJqrI,EAAOztB,WAAYunE,EAAMpoL,GAEzBooL,EAAK3/J,aAAczoB,EAAMA,GAEnBA,IAITsuI,EAAOwyC,KAAMxyC,EAAOk7E,KAAK99L,MAAMu2M,KAAKrrN,OAAO8U,MAAO,SAAU,SAAUpnB,EAAItE,GACzE,IAAI0mE,EAASmhJ,GAAY7nN,IAAUsuI,EAAOn2F,KAAKl8B,KAE/C4rM,GAAY7nN,GAAS,SAAUooL,EAAMpoL,EAAMgkN,GAC1C,IAAIpmH,EAAK62D,EACR0tE,EAAgBniO,EAAKoN,cAYtB,OAVM42M,IAGLvvD,EAASozD,GAAYsa,GACrBta,GAAYsa,GAAkBvkI,EAC9BA,EAAqC,MAA/Bl3B,EAAQ0hH,EAAMpoL,EAAMgkN,GACzBme,EACA,KACDta,GAAYsa,GAAkB1tE,GAExB72D,MAOT,IAAIwkI,GAAa,sCAChBC,GAAa,gBAyIb,SAASC,GAAkBr/N,GAE1B,OADaA,EAAMyoB,MAAOkkM,IAAmB,IAC/BrsM,KAAM,KAItB,SAASg/M,GAAUn6C,GAClB,OAAOA,EAAKhsK,cAAgBgsK,EAAKhsK,aAAc,UAAa,GAG7D,SAASomN,GAAgBv/N,GACxB,OAAKjG,MAAMyc,QAASxW,GACZA,EAEc,iBAAVA,GACJA,EAAMyoB,MAAOkkM,IAEd,GAxJRthF,EAAOzwH,GAAG4xE,OAAQ,CACjB3jE,KAAM,SAAU9rB,EAAMiD,GACrB,OAAOyvN,EAAQp1N,KAAMgxI,EAAOxiH,KAAM9rB,EAAMiD,EAAOvE,UAAUC,OAAS,IAGnE8jO,WAAY,SAAUziO,GACrB,OAAO1C,KAAKwjL,MAAM,kBACVxjL,KAAMgxI,EAAOo0F,QAAS1iO,IAAUA,SAK1CsuI,EAAO7+C,OAAQ,CACd3jE,KAAM,SAAUs8J,EAAMpoL,EAAMiD,GAC3B,IAAI26F,EAAKvgF,EACR0kN,EAAQ35C,EAAKl/E,SAGd,GAAe,IAAV64H,GAAyB,IAAVA,GAAyB,IAAVA,EAWnC,OAPe,IAAVA,GAAgBzzF,EAAOigF,SAAUnmC,KAGrCpoL,EAAOsuI,EAAOo0F,QAAS1iO,IAAUA,EACjCqd,EAAQixH,EAAOmwF,UAAWz+N,SAGZgO,IAAV/K,EACCoa,GAAS,QAASA,QACuBrP,KAA3C4vF,EAAMvgF,EAAMtF,IAAKqwK,EAAMnlL,EAAOjD,IACzB49F,EAGCwqF,EAAMpoL,GAASiD,EAGpBoa,GAAS,QAASA,GAA+C,QAApCugF,EAAMvgF,EAAMre,IAAKopL,EAAMpoL,IACjD49F,EAGDwqF,EAAMpoL,IAGdy+N,UAAW,CACVh8L,SAAU,CACTzjC,IAAK,SAAUopL,GAOd,IAAIu6C,EAAWr0F,EAAOn2F,KAAKl8B,KAAMmsK,EAAM,YAEvC,OAAKu6C,EACG9/L,SAAU8/L,EAAU,IAI3BP,GAAW1kN,KAAM0qK,EAAKpjJ,WACtBq9L,GAAW3kN,KAAM0qK,EAAKpjJ,WACtBojJ,EAAKhzK,KAEE,GAGA,KAKXstN,QAAS,CACR,IAAO,UACP,MAAS,eAYLjkH,EAAQmjH,cACbtzF,EAAOmwF,UAAUv5L,SAAW,CAC3BlmC,IAAK,SAAUopL,GAId,IAAI3rI,EAAS2rI,EAAK/8I,WAIlB,OAHKoR,GAAUA,EAAOpR,YACrBoR,EAAOpR,WAAWvG,cAEZ,MAER/sB,IAAK,SAAUqwK,GAId,IAAI3rI,EAAS2rI,EAAK/8I,WACboR,IACJA,EAAO3X,cAEF2X,EAAOpR,YACXoR,EAAOpR,WAAWvG,kBAOvBwpG,EAAOwyC,KAAM,CACZ,WACA,WACA,YACA,cACA,cACA,UACA,UACA,SACA,cACA,oBACE,WACFxyC,EAAOo0F,QAASplO,KAAK8P,eAAkB9P,QA4BxCgxI,EAAOzwH,GAAG4xE,OAAQ,CACjB02F,SAAU,SAAUljL,GACnB,IAAIqgB,EAAS8kK,EAAM3+C,EAAKm5F,EAAUC,EAAO14J,EAAG24J,EAC3CtkO,EAAI,EAEL,GAAK0vB,EAAYjrB,GAChB,OAAO3F,KAAKwjL,MAAM,SAAU32G,GAC3BmkE,EAAQhxI,MAAO6oL,SAAUljL,EAAMjF,KAAMV,KAAM6sE,EAAGo4J,GAAUjlO,WAM1D,IAFAgmB,EAAUk/M,GAAgBv/N,IAEbtE,OACZ,KAAUypL,EAAO9qL,KAAMkB,MAItB,GAHAokO,EAAWL,GAAUn6C,GACrB3+C,EAAwB,IAAlB2+C,EAAKl/E,UAAoB,IAAMo5H,GAAkBM,GAAa,IAEzD,CAEV,IADAz4J,EAAI,EACM04J,EAAQv/M,EAAS6mD,MACrBs/D,EAAIzkI,QAAS,IAAM69N,EAAQ,KAAQ,IACvCp5F,GAAOo5F,EAAQ,KAMZD,KADLE,EAAaR,GAAkB74F,KAE9B2+C,EAAK3/J,aAAc,QAASq6M,GAMhC,OAAOxlO,MAGRgyI,YAAa,SAAUrsI,GACtB,IAAIqgB,EAAS8kK,EAAM3+C,EAAKm5F,EAAUC,EAAO14J,EAAG24J,EAC3CtkO,EAAI,EAEL,GAAK0vB,EAAYjrB,GAChB,OAAO3F,KAAKwjL,MAAM,SAAU32G,GAC3BmkE,EAAQhxI,MAAOgyI,YAAarsI,EAAMjF,KAAMV,KAAM6sE,EAAGo4J,GAAUjlO,WAI7D,IAAMoB,UAAUC,OACf,OAAOrB,KAAK2e,KAAM,QAAS,IAK5B,IAFAqH,EAAUk/M,GAAgBv/N,IAEbtE,OACZ,KAAUypL,EAAO9qL,KAAMkB,MAMtB,GALAokO,EAAWL,GAAUn6C,GAGrB3+C,EAAwB,IAAlB2+C,EAAKl/E,UAAoB,IAAMo5H,GAAkBM,GAAa,IAEzD,CAEV,IADAz4J,EAAI,EACM04J,EAAQv/M,EAAS6mD,MAG1B,KAAQs/D,EAAIzkI,QAAS,IAAM69N,EAAQ,MAAS,GAC3Cp5F,EAAMA,EAAIp4H,QAAS,IAAMwxN,EAAQ,IAAK,KAMnCD,KADLE,EAAaR,GAAkB74F,KAE9B2+C,EAAK3/J,aAAc,QAASq6M,GAMhC,OAAOxlO,MAGRukL,YAAa,SAAU5+K,EAAO8/N,GAC7B,IAAIn5N,SAAc3G,EACjB+/N,EAAwB,WAATp5N,GAAqB5M,MAAMyc,QAASxW,GAEpD,MAAyB,kBAAb8/N,GAA0BC,EAC9BD,EAAWzlO,KAAK6oL,SAAUljL,GAAU3F,KAAKgyI,YAAarsI,GAGzDirB,EAAYjrB,GACT3F,KAAKwjL,MAAM,SAAUtiL,GAC3B8vI,EAAQhxI,MAAOukL,YACd5+K,EAAMjF,KAAMV,KAAMkB,EAAG+jO,GAAUjlO,MAAQylO,GACvCA,MAKIzlO,KAAKwjL,MAAM,WACjB,IAAIv0J,EAAW/tB,EAAG8X,EAAM0jB,EAExB,GAAKgpM,EAOJ,IAJAxkO,EAAI,EACJ8X,EAAOg4H,EAAQhxI,MACf08B,EAAawoM,GAAgBv/N,GAEnBspB,EAAYyN,EAAYx7B,MAG5B8X,EAAKoqK,SAAUn0J,GACnBjW,EAAKg5H,YAAa/iH,GAElBjW,EAAK6vK,SAAU55J,aAKIve,IAAV/K,GAAgC,YAAT2G,KAClC2iB,EAAYg2M,GAAUjlO,QAIrBi2N,EAASx7M,IAAKza,KAAM,gBAAiBivB,GAOjCjvB,KAAKmrB,cACTnrB,KAAKmrB,aAAc,QAClB8D,IAAuB,IAAVtpB,EACZ,GACAswN,EAASv0N,IAAK1B,KAAM,kBAAqB,SAO/CojL,SAAU,SAAU5yC,GACnB,IAAIvhH,EAAW67J,EACd5pL,EAAI,EAGL,IADA+tB,EAAY,IAAMuhH,EAAW,IACnBs6C,EAAO9qL,KAAMkB,MACtB,GAAuB,IAAlB4pL,EAAKl/E,WACP,IAAMo5H,GAAkBC,GAAUn6C,IAAW,KAAMpjL,QAASunB,IAAe,EAC7E,OAAO,EAIT,OAAO,KAOT,IAAI02M,GAAU,MAEd30F,EAAOzwH,GAAG4xE,OAAQ,CACjB1vF,IAAK,SAAUkD,GACd,IAAIoa,EAAOugF,EAAKu8H,EACf/xC,EAAO9qL,KAAM,GAEd,OAAMoB,UAAUC,QA0BhBw7N,EAAkBjsM,EAAYjrB,GAEvB3F,KAAKwjL,MAAM,SAAUtiL,GAC3B,IAAIuB,EAEmB,IAAlBzC,KAAK4rG,WAWE,OANXnpG,EADIo6N,EACEl3N,EAAMjF,KAAMV,KAAMkB,EAAG8vI,EAAQhxI,MAAOyC,OAEpCkD,GAKNlD,EAAM,GAEoB,iBAARA,EAClBA,GAAO,GAEI/C,MAAMyc,QAAS1Z,KAC1BA,EAAMuuI,EAAO15H,IAAK7U,GAAK,SAAUkD,GAChC,OAAgB,MAATA,EAAgB,GAAKA,EAAQ,QAItCoa,EAAQixH,EAAO40F,SAAU5lO,KAAKsM,OAAU0kI,EAAO40F,SAAU5lO,KAAK0nC,SAAS53B,iBAGrD,QAASiQ,QAA+CrP,IAApCqP,EAAMtF,IAAKza,KAAMyC,EAAK,WAC3DzC,KAAK2F,MAAQlD,QAzDTqoL,GACJ/qK,EAAQixH,EAAO40F,SAAU96C,EAAKx+K,OAC7B0kI,EAAO40F,SAAU96C,EAAKpjJ,SAAS53B,iBAG/B,QAASiQ,QACgCrP,KAAvC4vF,EAAMvgF,EAAMre,IAAKopL,EAAM,UAElBxqF,EAMY,iBAHpBA,EAAMwqF,EAAKnlL,OAIH26F,EAAIvsF,QAAS4xN,GAAS,IAIhB,MAAPrlI,EAAc,GAAKA,OAG3B,KAyCH0wC,EAAO7+C,OAAQ,CACdyzI,SAAU,CACTpkF,OAAQ,CACP9/I,IAAK,SAAUopL,GAEd,IAAIroL,EAAMuuI,EAAOn2F,KAAKl8B,KAAMmsK,EAAM,SAClC,OAAc,MAAProL,EACNA,EAMAuiO,GAAkBh0F,EAAOzqG,KAAMukJ,MAGlC87B,OAAQ,CACPllN,IAAK,SAAUopL,GACd,IAAInlL,EAAO67I,EAAQtgJ,EAClBU,EAAUkpL,EAAKlpL,QACf6F,EAAQqjL,EAAKtjJ,cACbwsD,EAAoB,eAAd82F,EAAKx+K,KACX1J,EAASoxF,EAAM,KAAO,GACtBtpD,EAAMspD,EAAMvsF,EAAQ,EAAI7F,EAAQP,OAUjC,IAPCH,EADIuG,EAAQ,EACRijC,EAGAspD,EAAMvsF,EAAQ,EAIXvG,EAAIwpC,EAAKxpC,IAKhB,KAJAsgJ,EAAS5/I,EAASV,IAIJ0mC,UAAY1mC,IAAMuG,KAG7B+5I,EAAOp8G,YACLo8G,EAAOzzG,WAAW3I,WACnBsC,EAAU85G,EAAOzzG,WAAY,aAAiB,CAMjD,GAHApoC,EAAQqrI,EAAQwQ,GAAS/+I,MAGpBuxF,EACJ,OAAOruF,EAIR/C,EAAOiD,KAAMF,GAIf,OAAO/C,GAGR6X,IAAK,SAAUqwK,EAAMnlL,GAMpB,IALA,IAAIkgO,EAAWrkF,EACd5/I,EAAUkpL,EAAKlpL,QACfgB,EAASouI,EAAOmsD,UAAWx3L,GAC3BzE,EAAIU,EAAQP,OAELH,OACPsgJ,EAAS5/I,EAASV,IAIN0mC,SACXopG,EAAOo8D,QAASp8D,EAAO40F,SAASpkF,OAAO9/I,IAAK8/I,GAAU5+I,IAAY,KAElEijO,GAAY,GAUd,OAHMA,IACL/6C,EAAKtjJ,eAAiB,GAEhB5kC,OAOXouI,EAAOwyC,KAAM,CAAE,QAAS,aAAc,WACrCxyC,EAAO40F,SAAU5lO,MAAS,CACzBya,IAAK,SAAUqwK,EAAMnlL,GACpB,GAAKjG,MAAMyc,QAASxW,GACnB,OAASmlL,EAAKviI,QAAUyoF,EAAOo8D,QAASp8D,EAAQ85C,GAAOroL,MAAOkD,IAAW,IAItEw7G,EAAQkjH,UACbrzF,EAAO40F,SAAU5lO,MAAO0B,IAAM,SAAUopL,GACvC,OAAwC,OAAjCA,EAAKhsK,aAAc,SAAqB,KAAOgsK,EAAKnlL,WAW9Dw7G,EAAQ2kH,QAAU,cAAexyN,EAGjC,IAAIyyN,GAAc,kCACjBC,GAA0B,SAAUlgO,GACnCA,EAAEuwC,mBAGJ26F,EAAO7+C,OAAQ6+C,EAAO98H,MAAO,CAE5Bs+E,QAAS,SAAUt+E,EAAOpR,EAAMgoL,EAAMm7C,GAErC,IAAI/kO,EAAGirI,EAAKjb,EAAKg1G,EAAYC,EAAQhvE,EAAQ8qB,EAASmkD,EACrDC,EAAY,CAAEv7C,GAAQnzK,GACtBrL,EAAOgyL,EAAO59L,KAAMwT,EAAO,QAAWA,EAAM5H,KAAO4H,EACnDylN,EAAar7B,EAAO59L,KAAMwT,EAAO,aAAgBA,EAAM+L,UAAU9U,MAAO,KAAQ,GAKjF,GAHAghI,EAAMi6F,EAAcl1G,EAAM45D,EAAOA,GAAQnzK,EAGlB,IAAlBmzK,EAAKl/E,UAAoC,IAAlBk/E,EAAKl/E,WAK5Bm6H,GAAY3lN,KAAM9T,EAAO0kI,EAAO98H,MAAM4lN,aAItCxtN,EAAK5E,QAAS,MAAS,IAG3BiyN,EAAartN,EAAKnB,MAAO,KACzBmB,EAAOqtN,EAAWv6L,QAClBu6L,EAAWhnM,QAEZwzM,EAAS75N,EAAK5E,QAAS,KAAQ,GAAK,KAAO4E,GAG3C4H,EAAQA,EAAO88H,EAAOi1E,SACrB/xM,EACA,IAAI88H,EAAOwxC,MAAOl2K,EAAuB,iBAAV4H,GAAsBA,IAGhDslN,UAAYyM,EAAe,EAAI,EACrC/xN,EAAM+L,UAAY05M,EAAW1zM,KAAM,KACnC/R,EAAMymN,WAAazmN,EAAM+L,UACxB,IAAIiM,OAAQ,UAAYytM,EAAW1zM,KAAM,iBAAoB,WAC7D,KAGD/R,EAAMzN,YAASiK,EACTwD,EAAM/C,SACX+C,EAAM/C,OAAS25K,GAIhBhoL,EAAe,MAARA,EACN,CAAEoR,GACF88H,EAAOmsD,UAAWr6L,EAAM,CAAEoR,IAG3B+tK,EAAUjxC,EAAO98H,MAAM+tK,QAAS31K,IAAU,GACpC25N,IAAgBhkD,EAAQzvF,UAAmD,IAAxCyvF,EAAQzvF,QAAQ7rF,MAAOmkL,EAAMhoL,IAAtE,CAMA,IAAMmjO,IAAiBhkD,EAAQg5C,WAAajW,EAAUl6B,GAAS,CAM9D,IAJAo7C,EAAajkD,EAAQE,cAAgB71K,EAC/By5N,GAAY3lN,KAAM8lN,EAAa55N,KACpC6/H,EAAMA,EAAIp+F,YAEHo+F,EAAKA,EAAMA,EAAIp+F,WACtBs4L,EAAUxgO,KAAMsmI,GAChBjb,EAAMib,EAIFjb,KAAU45D,EAAKjxJ,eAAiBliB,IACpC0uN,EAAUxgO,KAAMqrH,EAAIp3F,aAAeo3F,EAAIy8E,cAAgBr6L,GAMzD,IADApS,EAAI,GACMirI,EAAMk6F,EAAWnlO,QAAYgT,EAAMumN,wBAC5C2L,EAAcj6F,EACdj4H,EAAM5H,KAAOpL,EAAI,EAChBglO,EACAjkD,EAAQC,UAAY51K,GAGrB6qJ,GAAW8+D,EAASv0N,IAAKyqI,EAAK,WAAc5sI,OAAOY,OAAQ,OAAU+T,EAAM5H,OAC1E2pN,EAASv0N,IAAKyqI,EAAK,YAEnBgrB,EAAOxwJ,MAAOwlI,EAAKrpI,IAIpBq0J,EAASgvE,GAAUh6F,EAAKg6F,KACThvE,EAAOxwJ,OAASkvN,EAAY1pF,KAC1Cj4H,EAAMzN,OAAS0wJ,EAAOxwJ,MAAOwlI,EAAKrpI,IACZ,IAAjBoR,EAAMzN,QACVyN,EAAM+sB,kBA8CT,OA1CA/sB,EAAM5H,KAAOA,EAGP25N,GAAiB/xN,EAAMwgF,sBAEpButF,EAAQk2C,WACqC,IAApDl2C,EAAQk2C,SAASxxN,MAAO0/N,EAAUzgO,MAAO9C,KACzC+yN,EAAY/qC,IAIPq7C,GAAUv1M,EAAYk6J,EAAMx+K,MAAa04M,EAAUl6B,MAGvD55D,EAAM45D,EAAMq7C,MAGXr7C,EAAMq7C,GAAW,MAIlBn1F,EAAO98H,MAAM4lN,UAAYxtN,EAEpB4H,EAAMumN,wBACV2L,EAAYvoN,iBAAkBvR,EAAM05N,IAGrCl7C,EAAMx+K,KAED4H,EAAMumN,wBACV2L,EAAY9lN,oBAAqBhU,EAAM05N,IAGxCh1F,EAAO98H,MAAM4lN,eAAYppN,EAEpBwgH,IACJ45D,EAAMq7C,GAAWj1G,IAMdh9G,EAAMzN,SAKd6/N,SAAU,SAAUh6N,EAAMw+K,EAAM52K,GAC/B,IAAIpO,EAAIkrI,EAAO7+C,OACd,IAAI6+C,EAAOwxC,MACXtuK,EACA,CACC5H,KAAMA,EACN6uN,aAAa,IAIfnqF,EAAO98H,MAAMs+E,QAAS1sF,EAAG,KAAMglL,MAKjC95C,EAAOzwH,GAAG4xE,OAAQ,CAEjBK,QAAS,SAAUlmF,EAAMxJ,GACxB,OAAO9C,KAAKwjL,MAAM,WACjBxyC,EAAO98H,MAAMs+E,QAASlmF,EAAMxJ,EAAM9C,UAGpCumO,eAAgB,SAAUj6N,EAAMxJ,GAC/B,IAAIgoL,EAAO9qL,KAAM,GACjB,GAAK8qL,EACJ,OAAO95C,EAAO98H,MAAMs+E,QAASlmF,EAAMxJ,EAAMgoL,GAAM,MAc5C3pE,EAAQ2kH,SACb90F,EAAOwyC,KAAM,CAAE9+I,MAAO,UAAWs9C,KAAM,aAAc,SAAUsvD,EAAMgpF,GAGpE,IAAIhsL,EAAU,SAAUp6B,GACvB88H,EAAO98H,MAAMoyN,SAAUhM,EAAKpmN,EAAM/C,OAAQ6/H,EAAO98H,MAAMomN,IAAKpmN,KAG7D88H,EAAO98H,MAAM+tK,QAASq4C,GAAQ,CAC7B/7G,MAAO,WAIN,IAAIw0B,EAAM/yI,KAAK65B,eAAiB75B,KAAK2X,UAAY3X,KAChDwmO,EAAWvQ,EAASb,OAAQriF,EAAKunF,GAE5BkM,GACLzzF,EAAIl1H,iBAAkByzH,EAAMhjG,GAAS,GAEtC2nL,EAASb,OAAQriF,EAAKunF,GAAOkM,GAAY,GAAM,IAEhDrM,SAAU,WACT,IAAIpnF,EAAM/yI,KAAK65B,eAAiB75B,KAAK2X,UAAY3X,KAChDwmO,EAAWvQ,EAASb,OAAQriF,EAAKunF,GAAQ,EAEpCkM,EAKLvQ,EAASb,OAAQriF,EAAKunF,EAAKkM,IAJ3BzzF,EAAIzyH,oBAAqBgxH,EAAMhjG,GAAS,GACxC2nL,EAASl0J,OAAQgxE,EAAKunF,SAS3B,IAAIr5G,GAAW3tG,EAAO2tG,SAElBikG,GAAQ,CAAElmL,KAAM52B,KAAKmK,OAErBk0N,GAAS,KAKbz1F,EAAO01F,SAAW,SAAU5jO,GAC3B,IAAIuqN,EAAKsZ,EACT,IAAM7jO,GAAwB,iBAATA,EACpB,OAAO,KAKR,IACCuqN,GAAM,IAAM/5M,EAAO2uG,WAAcG,gBAAiBt/G,EAAM,YACvD,MAAQgD,IAYV,OAVA6gO,EAAkBtZ,GAAOA,EAAI7oG,qBAAsB,eAAiB,GAC9D6oG,IAAOsZ,GACZ31F,EAAO/pI,MAAO,iBACb0/N,EACC31F,EAAO15H,IAAKqvN,EAAgBr7M,YAAY,SAAUyT,GACjD,OAAOA,EAAG2mE,eACPz/E,KAAM,MACVnjB,IAGIuqN,GAIR,IACCuZ,GAAW,QACXC,GAAQ,SACRC,GAAkB,wCAClBC,GAAe,qCAEhB,SAASC,GAAarsN,EAAQzB,EAAK+tN,EAAajlK,GAC/C,IAAIt/D,EAEJ,GAAKhD,MAAMyc,QAASjD,GAGnB83H,EAAOwyC,KAAMtqK,GAAK,SAAUhY,EAAGqE,GACzB0hO,GAAeL,GAASxmN,KAAMzF,GAGlCqnD,EAAKrnD,EAAQpV,GAKbyhO,GACCrsN,EAAS,KAAqB,iBAANpV,GAAuB,MAALA,EAAYrE,EAAI,IAAO,IACjEqE,EACA0hO,EACAjlK,WAKG,GAAMilK,GAAiC,WAAlB5hB,EAAQnsM,GAUnC8oD,EAAKrnD,EAAQzB,QAPb,IAAMxW,KAAQwW,EACb8tN,GAAarsN,EAAS,IAAMjY,EAAO,IAAKwW,EAAKxW,GAAQukO,EAAajlK,GAYrEgvE,EAAOk2F,MAAQ,SAAUp/M,EAAGm/M,GAC3B,IAAItsN,EACH1Z,EAAI,GACJ+gE,EAAM,SAAU3wD,EAAK81N,GAGpB,IAAIxhO,EAAQirB,EAAYu2M,GACvBA,IACAA,EAEDlmO,EAAGA,EAAEI,QAAW6R,mBAAoB7B,GAAQ,IAC3C6B,mBAA6B,MAATvN,EAAgB,GAAKA,IAG5C,GAAU,MAALmiB,EACJ,MAAO,GAIR,GAAKpoB,MAAMyc,QAAS2L,IAASA,EAAEi6J,SAAW/wC,EAAOg1E,cAAel+L,GAG/DkpH,EAAOwyC,KAAM17J,GAAG,WACfk6C,EAAKhiE,KAAK0C,KAAM1C,KAAK2F,eAOtB,IAAMgV,KAAUmN,EACfk/M,GAAarsN,EAAQmN,EAAGnN,GAAUssN,EAAajlK,GAKjD,OAAO/gE,EAAEglB,KAAM,MAGhB+qH,EAAOzwH,GAAG4xE,OAAQ,CACjBi1I,UAAW,WACV,OAAOp2F,EAAOk2F,MAAOlnO,KAAKqnO,mBAE3BA,eAAgB,WACf,OAAOrnO,KAAKsX,KAAK,WAGhB,IAAIktB,EAAWwsG,EAAOxiH,KAAMxuB,KAAM,YAClC,OAAOwkC,EAAWwsG,EAAOmsD,UAAW34J,GAAaxkC,QAC9C+Z,QAAQ,WACX,IAAIzN,EAAOtM,KAAKsM,KAGhB,OAAOtM,KAAK0C,OAASsuI,EAAQhxI,MAAOoiL,GAAI,cACvC2kD,GAAa3mN,KAAMpgB,KAAK0nC,YAAeo/L,GAAgB1mN,KAAM9T,KAC3DtM,KAAKuoD,UAAYqvK,GAAex3M,KAAM9T,OACtCgL,KAAK,SAAUtQ,EAAI8jL,GACtB,IAAIroL,EAAMuuI,EAAQhxI,MAAOyC,MAEzB,OAAY,MAAPA,EACG,KAGH/C,MAAMyc,QAAS1Z,GACZuuI,EAAO15H,IAAK7U,GAAK,SAAUA,GACjC,MAAO,CAAEC,KAAMooL,EAAKpoL,KAAMiD,MAAOlD,EAAIsR,QAAS8yN,GAAO,YAIhD,CAAEnkO,KAAMooL,EAAKpoL,KAAMiD,MAAOlD,EAAIsR,QAAS8yN,GAAO,YAClDnlO,SAKN,IACC4lO,GAAM,OACNC,GAAQ,OACRC,GAAa,gBACbC,GAAW,6BAIXC,GAAa,iBACbC,GAAY,QAWZ1F,GAAa,GAObrrN,GAAa,GAGbgxN,GAAW,KAAK9tN,OAAQ,KAGxB+tN,GAAelwN,EAASE,cAAe,KAKxC,SAASiwN,GAA6BC,GAGrC,OAAO,SAAUC,EAAoBngN,GAED,iBAAvBmgN,IACXngN,EAAOmgN,EACPA,EAAqB,KAGtB,IAAIC,EACH/mO,EAAI,EACJgnO,EAAYF,EAAmBl4N,cAAcse,MAAOkkM,IAAmB,GAExE,GAAK1hM,EAAY/I,GAGhB,KAAUogN,EAAWC,EAAWhnO,MAGR,MAAlB+mO,EAAU,IACdA,EAAWA,EAAS/7N,MAAO,IAAO,KAChC67N,EAAWE,GAAaF,EAAWE,IAAc,IAAK7qL,QAASv1B,KAI/DkgN,EAAWE,GAAaF,EAAWE,IAAc,IAAKpiO,KAAMgiB,IAQnE,SAASsgN,GAA+BJ,EAAWnmO,EAAS2gO,EAAiB6F,GAE5E,IAAIC,EAAY,GACfC,EAAqBP,IAAcnxN,GAEpC,SAAS2xN,EAASN,GACjB,IAAIrgM,EAcJ,OAbAygM,EAAWJ,IAAa,EACxBj3F,EAAOwyC,KAAMukD,EAAWE,IAAc,IAAI,SAAUnjO,EAAG0jO,GACtD,IAAIC,EAAsBD,EAAoB5mO,EAAS2gO,EAAiB6F,GACxE,MAAoC,iBAAxBK,GACVH,GAAqBD,EAAWI,GAKtBH,IACD1gM,EAAW6gM,QADf,GAHN7mO,EAAQsmO,UAAU9qL,QAASqrL,GAC3BF,EAASE,IACF,MAKF7gM,EAGR,OAAO2gM,EAAS3mO,EAAQsmO,UAAW,MAAUG,EAAW,MAASE,EAAS,KAM3E,SAASG,GAAYv3N,EAAQyqE,GAC5B,IAAIvqE,EAAK00M,EACR4iB,EAAc33F,EAAO43F,aAAaD,aAAe,GAElD,IAAMt3N,KAAOuqE,OACQlrE,IAAfkrE,EAAKvqE,MACPs3N,EAAat3N,GAAQF,EAAW40M,IAAUA,EAAO,KAAU10M,GAAQuqE,EAAKvqE,IAO5E,OAJK00M,GACJ/0E,EAAO7+C,QAAQ,EAAMhhF,EAAQ40M,GAGvB50M,EA/ER02N,GAAa/vN,KAAOmpG,GAASnpG,KAgP7Bk5H,EAAO7+C,OAAQ,CAGdtX,OAAQ,EAGRguJ,aAAc,GACdC,KAAM,GAENF,aAAc,CACbjnO,IAAKs/G,GAASnpG,KACdxL,KAAM,MACNy8N,QAxRgB,4DAwRQ3oN,KAAM6gG,GAASr0G,UACvC83M,QAAQ,EACRskB,aAAa,EACbC,OAAO,EACPC,YAAa,mDAcbC,QAAS,CACR,IAAKvB,GACLrhM,KAAM,aACN/Z,KAAM,YACN6gM,IAAK,4BACL+b,KAAM,qCAGP9qG,SAAU,CACT+uF,IAAK,UACL7gM,KAAM,SACN48M,KAAM,YAGPC,eAAgB,CACfhc,IAAK,cACL9mL,KAAM,eACN6iM,KAAM,gBAKPE,WAAY,CAGX,SAAUj+N,OAGV,aAAa,EAGb,YAAaK,KAAKV,MAGlB,WAAYgmI,EAAO01F,UAOpBiC,YAAa,CACZhnO,KAAK,EACL8sK,SAAS,IAOX86D,UAAW,SAAUp4N,EAAQ0sC,GAC5B,OAAOA,EAGN6qL,GAAYA,GAAYv3N,EAAQ6/H,EAAO43F,cAAgB/qL,GAGvD6qL,GAAY13F,EAAO43F,aAAcz3N,IAGnCq4N,cAAe1B,GAA6B7F,IAC5CwH,cAAe3B,GAA6BlxN,IAG5C8yN,KAAM,SAAU/nO,EAAKC,GAGA,iBAARD,IACXC,EAAUD,EACVA,OAAM+O,GAIP9O,EAAUA,GAAW,GAErB,IAAIsT,EAGHy0N,EAGAC,EACA1vD,EAGA2vD,EAGAC,EAGA5U,EAGA6U,EAGA7oO,EAGA8oO,EAGA/oO,EAAI+vI,EAAOu4F,UAAW,GAAI3nO,GAG1BqoO,EAAkBhpO,EAAEwtK,SAAWxtK,EAG/BipO,EAAqBjpO,EAAEwtK,UACpBw7D,EAAgBr+H,UAAYq+H,EAAgBloD,QAC9C/wC,EAAQi5F,GACRj5F,EAAO98H,MAGRw/M,EAAW1iF,EAAOuiF,WAClB4W,EAAmBn5F,EAAO4hF,UAAW,eAGrCryN,EAAaU,EAAEV,YAAc,GAG7B+4K,EAAiB,GACjB8wD,EAAsB,GAGtBC,EAAW,WAGXjC,EAAQ,CACPh0N,WAAY,EAGZk2N,kBAAmB,SAAUj5N,GAC5B,IAAI+c,EACJ,GAAK8mM,EAAY,CAChB,IAAMh7C,EAEL,IADAA,EAAkB,GACR9rJ,EAAQq5M,GAASlvM,KAAMqxM,IAChC1vD,EAAiB9rJ,EAAO,GAAIte,cAAgB,MACzCoqK,EAAiB9rJ,EAAO,GAAIte,cAAgB,MAAS,IACrDgK,OAAQsU,EAAO,IAGpBA,EAAQ8rJ,EAAiB7oK,EAAIvB,cAAgB,KAE9C,OAAgB,MAATse,EAAgB,KAAOA,EAAMnI,KAAM,OAI3Ck0J,sBAAuB,WACtB,OAAO+6C,EAAY0U,EAAwB,MAI5Cz/N,iBAAkB,SAAUzH,EAAMiD,GAMjC,OALkB,MAAbuvN,IACJxyN,EAAO0nO,EAAqB1nO,EAAKoN,eAChCs6N,EAAqB1nO,EAAKoN,gBAAmBpN,EAC9C42K,EAAgB52K,GAASiD,GAEnB3F,MAIRuqO,iBAAkB,SAAUj+N,GAI3B,OAHkB,MAAb4oN,IACJj0N,EAAEupO,SAAWl+N,GAEPtM,MAIRO,WAAY,SAAU+W,GACrB,IAAI3N,EACJ,GAAK2N,EACJ,GAAK49M,EAGJkT,EAAM3U,OAAQn8M,EAAK8wN,EAAM79N,cAIzB,IAAMZ,KAAQ2N,EACb/W,EAAYoJ,GAAS,CAAEpJ,EAAYoJ,GAAQ2N,EAAK3N,IAInD,OAAO3J,MAIR6J,MAAO,SAAUtI,GAChB,IAAIkpO,EAAYlpO,GAAc8oO,EAK9B,OAJKn1N,GACJA,EAAUrL,MAAO4gO,GAElB/kO,EAAM,EAAG+kO,GACFzqO,OAoBV,GAfA0zN,EAAS9xM,QAASwmN,GAKlBnnO,EAAEU,MAAUA,GAAOV,EAAEU,KAAOs/G,GAASnpG,MAAS,IAC5C/D,QAAS4zN,GAAW1mH,GAASr0G,SAAW,MAG1C3L,EAAEqL,KAAO1K,EAAQE,QAAUF,EAAQ0K,MAAQrL,EAAEa,QAAUb,EAAEqL,KAGzDrL,EAAEinO,WAAcjnO,EAAEgnO,UAAY,KAAMn4N,cAAcse,MAAOkkM,IAAmB,CAAE,IAGxD,MAAjBrxN,EAAEypO,YAAsB,CAC5BZ,EAAYnyN,EAASE,cAAe,KAKpC,IACCiyN,EAAUhyN,KAAO7W,EAAEU,IAInBmoO,EAAUhyN,KAAOgyN,EAAUhyN,KAC3B7W,EAAEypO,YAAc7C,GAAaj7N,SAAW,KAAOi7N,GAAazoD,MAC3D0qD,EAAUl9N,SAAW,KAAOk9N,EAAU1qD,KACtC,MAAQt5K,GAIT7E,EAAEypO,aAAc,GAalB,GARKzpO,EAAE6B,MAAQ7B,EAAE+nO,aAAiC,iBAAX/nO,EAAE6B,OACxC7B,EAAE6B,KAAOkuI,EAAOk2F,MAAOjmO,EAAE6B,KAAM7B,EAAEgmO,cAIlCkB,GAA+BlG,GAAYhhO,EAAGW,EAASwmO,GAGlDlT,EACJ,OAAOkT,EA8ER,IAAMlnO,KAzEN6oO,EAAc/4F,EAAO98H,OAASjT,EAAEyjN,SAGQ,GAApB1zE,EAAOn2D,UAC1Bm2D,EAAO98H,MAAMs+E,QAAS,aAIvBvxF,EAAEqL,KAAOrL,EAAEqL,KAAKof,cAGhBzqB,EAAE0pO,YAAcjD,GAAWtnN,KAAMnf,EAAEqL,MAKnCq9N,EAAW1oO,EAAEU,IAAIoS,QAASwzN,GAAO,IAG3BtmO,EAAE0pO,WAwBI1pO,EAAE6B,MAAQ7B,EAAE+nO,aACoD,KAAzE/nO,EAAEioO,aAAe,IAAKxhO,QAAS,uCACjCzG,EAAE6B,KAAO7B,EAAE6B,KAAKiR,QAASuzN,GAAK,OAvB9B0C,EAAW/oO,EAAEU,IAAIuK,MAAOy9N,EAAStoO,QAG5BJ,EAAE6B,OAAU7B,EAAE+nO,aAAiC,iBAAX/nO,EAAE6B,QAC1C6mO,IAAclD,GAAOrmN,KAAMupN,GAAa,IAAM,KAAQ1oO,EAAE6B,YAGjD7B,EAAE6B,OAIO,IAAZ7B,EAAEs3H,QACNoxG,EAAWA,EAAS51N,QAASyzN,GAAY,MACzCwC,GAAavD,GAAOrmN,KAAMupN,GAAa,IAAM,KAAQ,KAASzkB,GAAMlmL,OACnEgrM,GAIF/oO,EAAEU,IAAMgoO,EAAWK,GASf/oO,EAAE2pO,aACD55F,EAAO63F,aAAcc,IACzBvB,EAAMj+N,iBAAkB,oBAAqB6mI,EAAO63F,aAAcc,IAE9D34F,EAAO83F,KAAMa,IACjBvB,EAAMj+N,iBAAkB,gBAAiB6mI,EAAO83F,KAAMa,MAKnD1oO,EAAE6B,MAAQ7B,EAAE0pO,aAAgC,IAAlB1pO,EAAEioO,aAAyBtnO,EAAQsnO,cACjEd,EAAMj+N,iBAAkB,eAAgBlJ,EAAEioO,aAI3Cd,EAAMj+N,iBACL,SACAlJ,EAAEinO,UAAW,IAAOjnO,EAAEkoO,QAASloO,EAAEinO,UAAW,IAC3CjnO,EAAEkoO,QAASloO,EAAEinO,UAAW,KACA,MAArBjnO,EAAEinO,UAAW,GAAc,KAAON,GAAW,WAAa,IAC7D3mO,EAAEkoO,QAAS,MAIFloO,EAAEqD,QACZ8jO,EAAMj+N,iBAAkBjJ,EAAGD,EAAEqD,QAASpD,IAIvC,GAAKD,EAAE4pO,cAC+C,IAAnD5pO,EAAE4pO,WAAWnqO,KAAMupO,EAAiB7B,EAAOnnO,IAAiBi0N,GAG9D,OAAOkT,EAAMv+N,QAed,GAXAwgO,EAAW,QAGXF,EAAiBnoK,IAAK/gE,EAAEmG,UACxBghO,EAAM1iO,KAAMzE,EAAE09L,SACdypC,EAAMzV,KAAM1xN,EAAEgG,OAGdiO,EAAYizN,GAA+BvxN,GAAY3V,EAAGW,EAASwmO,GAK5D,CASN,GARAA,EAAMh0N,WAAa,EAGd21N,GACJG,EAAmB13I,QAAS,WAAY,CAAE41I,EAAOnnO,IAI7Ci0N,EACJ,OAAOkT,EAIHnnO,EAAEgoO,OAAShoO,EAAEuI,QAAU,IAC3BqgO,EAAev2N,EAAOzC,YAAY,WACjCu3N,EAAMv+N,MAAO,aACX5I,EAAEuI,UAGN,IACC0rN,GAAY,EACZhgN,EAAUrT,KAAMy3K,EAAgB5zK,GAC/B,MAAQI,GAGT,GAAKovN,EACJ,MAAMpvN,EAIPJ,GAAO,EAAGI,SAhCXJ,GAAO,EAAG,gBAqCX,SAASA,EAAM6E,EAAQugO,EAAkBC,EAAWzmO,GACnD,IAAI0mO,EAAWrsC,EAAS13L,EAAOxC,EAAUmwH,EACxCrzH,EAAaupO,EAGT5V,IAILA,GAAY,EAGP2U,GACJv2N,EAAO/B,aAAcs4N,GAKtB30N,OAAYxE,EAGZk5N,EAAwBtlO,GAAW,GAGnC8jO,EAAMh0N,WAAa7J,EAAS,EAAI,EAAI,EAGpCygO,EAAYzgO,GAAU,KAAOA,EAAS,KAAkB,MAAXA,EAGxCwgO,IACJtmO,EA7lBJ,SAA8BxD,EAAGmnO,EAAO2C,GAOvC,IALA,IAAIE,EAAI3+N,EAAM4+N,EAAeC,EAC5B7sG,EAAWr9H,EAAEq9H,SACb4pG,EAAYjnO,EAAEinO,UAGY,MAAnBA,EAAW,IAClBA,EAAU9oM,aACE1uB,IAAPu6N,IACJA,EAAKhqO,EAAEupO,UAAYpC,EAAMkC,kBAAmB,iBAK9C,GAAKW,EACJ,IAAM3+N,KAAQgyH,EACb,GAAKA,EAAUhyH,IAAUgyH,EAAUhyH,GAAO8T,KAAM6qN,GAAO,CACtD/C,EAAU9qL,QAAS9wC,GACnB,MAMH,GAAK47N,EAAW,KAAO6C,EACtBG,EAAgBhD,EAAW,OACrB,CAGN,IAAM57N,KAAQy+N,EAAY,CACzB,IAAM7C,EAAW,IAAOjnO,EAAEqoO,WAAYh9N,EAAO,IAAM47N,EAAW,IAAQ,CACrEgD,EAAgB5+N,EAChB,MAEK6+N,IACLA,EAAgB7+N,GAKlB4+N,EAAgBA,GAAiBC,EAMlC,GAAKD,EAIJ,OAHKA,IAAkBhD,EAAW,IACjCA,EAAU9qL,QAAS8tL,GAEbH,EAAWG,GA0iBLE,CAAqBnqO,EAAGmnO,EAAO2C,KAIrCC,GACLh6F,EAAOo8D,QAAS,SAAUnsM,EAAEinO,YAAe,GAC3Cl3F,EAAOo8D,QAAS,OAAQnsM,EAAEinO,WAAc,IACxCjnO,EAAEqoO,WAAY,eAAkB,cAIjC7kO,EA9iBH,SAAsBxD,EAAGwD,EAAU2jO,EAAO4C,GACzC,IAAIK,EAAOrmM,EAASsmM,EAAMp6G,EAAKxlF,EAC9B49L,EAAa,GAGbpB,EAAYjnO,EAAEinO,UAAUh8N,QAGzB,GAAKg8N,EAAW,GACf,IAAMoD,KAAQrqO,EAAEqoO,WACfA,EAAYgC,EAAKx7N,eAAkB7O,EAAEqoO,WAAYgC,GAOnD,IAHAtmM,EAAUkjM,EAAU9oM,QAGZ4F,GAcP,GAZK/jC,EAAEooO,eAAgBrkM,KACtBojM,EAAOnnO,EAAEooO,eAAgBrkM,IAAcvgC,IAIlCinC,GAAQs/L,GAAa/pO,EAAEsqO,aAC5B9mO,EAAWxD,EAAEsqO,WAAY9mO,EAAUxD,EAAEgnO,WAGtCv8L,EAAO1G,EACPA,EAAUkjM,EAAU9oM,QAKnB,GAAiB,MAAZ4F,EAEJA,EAAU0G,OAGJ,GAAc,MAATA,GAAgBA,IAAS1G,EAAU,CAM9C,KAHAsmM,EAAOhC,EAAY59L,EAAO,IAAM1G,IAAaskM,EAAY,KAAOtkM,IAI/D,IAAMqmM,KAAS/B,EAId,IADAp4G,EAAMm6G,EAAMlgO,MAAO,MACT,KAAQ65B,IAGjBsmM,EAAOhC,EAAY59L,EAAO,IAAMwlF,EAAK,KACpCo4G,EAAY,KAAOp4G,EAAK,KACb,EAGG,IAATo6G,EACJA,EAAOhC,EAAY+B,IAGgB,IAAxB/B,EAAY+B,KACvBrmM,EAAUksF,EAAK,GACfg3G,EAAU9qL,QAAS8zE,EAAK,KAEzB,MAOJ,IAAc,IAATo6G,EAGJ,GAAKA,GAAQrqO,EAAEuqO,OACd/mO,EAAW6mO,EAAM7mO,QAEjB,IACCA,EAAW6mO,EAAM7mO,GAChB,MAAQqB,GACT,MAAO,CACNssB,MAAO,cACPnrB,MAAOqkO,EAAOxlO,EAAI,sBAAwB4lC,EAAO,OAAS1G,IASjE,MAAO,CAAE5S,MAAO,UAAWtvB,KAAM2B,GAidpBgnO,CAAaxqO,EAAGwD,EAAU2jO,EAAO4C,GAGvCA,GAGC/pO,EAAE2pO,cACNh2G,EAAWwzG,EAAMkC,kBAAmB,oBAEnCt5F,EAAO63F,aAAcc,GAAa/0G,IAEnCA,EAAWwzG,EAAMkC,kBAAmB,WAEnCt5F,EAAO83F,KAAMa,GAAa/0G,IAKZ,MAAXrqH,GAA6B,SAAXtJ,EAAEqL,KACxB/K,EAAa,YAGS,MAAXgJ,EACXhJ,EAAa,eAIbA,EAAakD,EAAS2tB,MACtBusK,EAAUl6L,EAAS3B,KAEnBkoO,IADA/jO,EAAQxC,EAASwC,UAMlBA,EAAQ1F,GACHgJ,GAAWhJ,IACfA,EAAa,QACRgJ,EAAS,IACbA,EAAS,KAMZ69N,EAAM79N,OAASA,EACf69N,EAAM7mO,YAAeupO,GAAoBvpO,GAAe,GAGnDypO,EACJtX,EAASU,YAAa6V,EAAiB,CAAEtrC,EAASp9L,EAAY6mO,IAE9D1U,EAASa,WAAY0V,EAAiB,CAAE7B,EAAO7mO,EAAY0F,IAI5DmhO,EAAM7nO,WAAYA,GAClBA,OAAamQ,EAERq5N,GACJG,EAAmB13I,QAASw4I,EAAY,cAAgB,YACvD,CAAE5C,EAAOnnO,EAAG+pO,EAAYrsC,EAAU13L,IAIpCkjO,EAAiB7W,SAAU2W,EAAiB,CAAE7B,EAAO7mO,IAEhDwoO,IACJG,EAAmB13I,QAAS,eAAgB,CAAE41I,EAAOnnO,MAG3C+vI,EAAOn2D,QAChBm2D,EAAO98H,MAAMs+E,QAAS,cAKzB,OAAO41I,GAGRsD,QAAS,SAAU/pO,EAAKmB,EAAMoN,GAC7B,OAAO8gI,EAAOtvI,IAAKC,EAAKmB,EAAMoN,EAAU,SAGzCy7N,UAAW,SAAUhqO,EAAKuO,GACzB,OAAO8gI,EAAOtvI,IAAKC,OAAK+O,EAAWR,EAAU,aAI/C8gI,EAAOwyC,KAAM,CAAE,MAAO,SAAU,SAAUx8K,EAAIlF,GAC7CkvI,EAAQlvI,GAAW,SAAUH,EAAKmB,EAAMoN,EAAU5D,GAUjD,OAPKskB,EAAY9tB,KAChBwJ,EAAOA,GAAQ4D,EACfA,EAAWpN,EACXA,OAAO4N,GAIDsgI,EAAO04F,KAAM14F,EAAO7+C,OAAQ,CAClCxwF,IAAKA,EACL2K,KAAMxK,EACNmmO,SAAU37N,EACVxJ,KAAMA,EACN67L,QAASzuL,GACP8gI,EAAOg1E,cAAerkN,IAASA,QAIpCqvI,EAAOw4F,eAAe,SAAUvoO,GAC/B,IAAIC,EACJ,IAAMA,KAAKD,EAAEqD,QACa,iBAApBpD,EAAE4O,gBACN7O,EAAEioO,YAAcjoO,EAAEqD,QAASpD,IAAO,OAMrC8vI,EAAO8rF,SAAW,SAAUn7N,EAAKC,EAASmxI,GACzC,OAAO/B,EAAO04F,KAAM,CACnB/nO,IAAKA,EAGL2K,KAAM,MACN27N,SAAU,SACV1vG,OAAO,EACP0wG,OAAO,EACPvkB,QAAQ,EAKR4kB,WAAY,CACX,cAAe,cAEhBiC,WAAY,SAAU9mO,GACrBusI,EAAOq1E,WAAY5hN,EAAU7C,EAASmxI,OAMzC/B,EAAOzwH,GAAG4xE,OAAQ,CACjBy5I,QAAS,SAAUp/M,GAClB,IAAI0uF,EAyBJ,OAvBKl7G,KAAM,KACL4wB,EAAYpE,KAChBA,EAAOA,EAAK9rB,KAAMV,KAAM,KAIzBk7G,EAAO81B,EAAQxkH,EAAMxsB,KAAM,GAAI65B,eAAgBjC,GAAI,GAAIsxC,OAAO,GAEzDlpE,KAAM,GAAI+tC,YACdmtE,EAAKvvF,aAAc3rB,KAAM,IAG1Bk7G,EAAK5jG,KAAK,WAGT,IAFA,IAAIwzK,EAAO9qL,KAEH8qL,EAAKhlE,mBACZglE,EAAOA,EAAKhlE,kBAGb,OAAOglE,KACJrpF,OAAQzhG,OAGNA,MAGR6rO,UAAW,SAAUr/M,GACpB,OAAKoE,EAAYpE,GACTxsB,KAAKwjL,MAAM,SAAUtiL,GAC3B8vI,EAAQhxI,MAAO6rO,UAAWr/M,EAAK9rB,KAAMV,KAAMkB,OAItClB,KAAKwjL,MAAM,WACjB,IAAIxqK,EAAOg4H,EAAQhxI,MAClBs+H,EAAWtlH,EAAKslH,WAEZA,EAASj9H,OACbi9H,EAASstG,QAASp/M,GAGlBxT,EAAKyoF,OAAQj1E,OAKhB0uF,KAAM,SAAU1uF,GACf,IAAIs/M,EAAiBl7M,EAAYpE,GAEjC,OAAOxsB,KAAKwjL,MAAM,SAAUtiL,GAC3B8vI,EAAQhxI,MAAO4rO,QAASE,EAAiBt/M,EAAK9rB,KAAMV,KAAMkB,GAAMsrB,OAIlE49K,OAAQ,SAAU55D,GAIjB,OAHAxwI,KAAKm/C,OAAQqxF,GAAWg7C,IAAK,QAAShI,MAAM,WAC3CxyC,EAAQhxI,MAAOw9N,YAAax9N,KAAKsrB,eAE3BtrB,QAKTgxI,EAAOk7E,KAAKlE,QAAQn8H,OAAS,SAAUi/F,GACtC,OAAQ95C,EAAOk7E,KAAKlE,QAAQ7hK,QAAS2kI,IAEtC95C,EAAOk7E,KAAKlE,QAAQ7hK,QAAU,SAAU2kI,GACvC,SAAWA,EAAKzwJ,aAAeywJ,EAAK5wJ,cAAgB4wJ,EAAKjtC,iBAAiBx8I,SAM3E2vI,EAAO43F,aAAa5+N,IAAM,WACzB,IACC,OAAO,IAAIsJ,EAAO5K,eACjB,MAAQ5C,MAGX,IAAIimO,GAAmB,CAGrB,EAAG,IAIH,KAAM,KAEPC,GAAeh7F,EAAO43F,aAAa5+N,MAEpCm3G,EAAQgJ,OAAS6hH,IAAkB,oBAAqBA,GACxD7qH,EAAQuoH,KAAOsC,KAAiBA,GAEhCh7F,EAAOy4F,eAAe,SAAU7nO,GAC/B,IAAIsO,EAAU+7N,EAGd,GAAK9qH,EAAQgJ,MAAQ6hH,KAAiBpqO,EAAQ8oO,YAC7C,MAAO,CACN7oO,KAAM,SAAUyC,EAAS8C,GACxB,IAAIlG,EACH8I,EAAMpI,EAAQoI,MAWf,GATAA,EAAIC,KACHrI,EAAQ0K,KACR1K,EAAQD,IACRC,EAAQqnO,MACRrnO,EAAQ63K,SACR73K,EAAQ83K,UAIJ93K,EAAQsqO,UACZ,IAAMhrO,KAAKU,EAAQsqO,UAClBliO,EAAK9I,GAAMU,EAAQsqO,UAAWhrO,GAmBhC,IAAMA,KAdDU,EAAQ4oO,UAAYxgO,EAAIugO,kBAC5BvgO,EAAIugO,iBAAkB3oO,EAAQ4oO,UAQzB5oO,EAAQ8oO,aAAgBpmO,EAAS,sBACtCA,EAAS,oBAAuB,kBAItBA,EACV0F,EAAIG,iBAAkBjJ,EAAGoD,EAASpD,IAInCgP,EAAW,SAAU5D,GACpB,OAAO,WACD4D,IACJA,EAAW+7N,EAAgBjiO,EAAIM,OAC9BN,EAAIS,QAAUT,EAAIN,QAAUM,EAAIU,UAC/BV,EAAIgwK,mBAAqB,KAEb,UAAT1tK,EACJtC,EAAIH,QACgB,UAATyC,EAKgB,iBAAftC,EAAIO,OACfnD,EAAU,EAAG,SAEbA,EAGC4C,EAAIO,OACJP,EAAIzI,YAIN6F,EACC2kO,GAAkB/hO,EAAIO,SAAYP,EAAIO,OACtCP,EAAIzI,WAK+B,UAAjCyI,EAAIxF,cAAgB,SACM,iBAArBwF,EAAIQ,aACV,CAAE2hO,OAAQniO,EAAIvF,UACd,CAAE8hC,KAAMv8B,EAAIQ,cACbR,EAAImwK,4BAQTnwK,EAAIM,OAAS4F,IACb+7N,EAAgBjiO,EAAIS,QAAUT,EAAIU,UAAYwF,EAAU,cAKnCQ,IAAhB1G,EAAIN,QACRM,EAAIN,QAAUuiO,EAEdjiO,EAAIgwK,mBAAqB,WAGA,IAAnBhwK,EAAIoK,YAMRd,EAAOzC,YAAY,WACbX,GACJ+7N,QAQL/7N,EAAWA,EAAU,SAErB,IAGClG,EAAInI,KAAMD,EAAQ+oO,YAAc/oO,EAAQkB,MAAQ,MAC/C,MAAQgD,GAGT,GAAKoK,EACJ,MAAMpK,IAKT+D,MAAO,WACDqG,GACJA,SAWL8gI,EAAOw4F,eAAe,SAAUvoO,GAC1BA,EAAEypO,cACNzpO,EAAEq9H,SAAS0gC,QAAS,MAKtBhuB,EAAOu4F,UAAW,CACjBJ,QAAS,CACRnqE,OAAQ,6FAGT1gC,SAAU,CACT0gC,OAAQ,2BAETsqE,WAAY,CACX,cAAe,SAAU/iM,GAExB,OADAyqG,EAAOq1E,WAAY9/K,GACZA,MAMVyqG,EAAOw4F,cAAe,UAAU,SAAUvoO,QACxByP,IAAZzP,EAAEs3H,QACNt3H,EAAEs3H,OAAQ,GAENt3H,EAAEypO,cACNzpO,EAAEqL,KAAO,UAKX0kI,EAAOy4F,cAAe,UAAU,SAAUxoO,GAIxC,IAAI+9J,EAAQ9uJ,EADb,GAAKjP,EAAEypO,aAAezpO,EAAEmrO,YAEvB,MAAO,CACNvqO,KAAM,SAAUiD,EAAGsC,GAClB43J,EAAShuB,EAAQ,YACfryH,KAAM1d,EAAEmrO,aAAe,IACvB59M,KAAM,CAAE69M,QAASprO,EAAEqrO,cAAe1wJ,IAAK36E,EAAEU,MACzCiO,GAAI,aAAcM,EAAW,SAAUq8N,GACvCvtE,EAAOj9F,SACP7xD,EAAW,KACNq8N,GACJnlO,EAAuB,UAAbmlO,EAAIjgO,KAAmB,IAAM,IAAKigO,EAAIjgO,QAKnDqL,EAASiG,KAAKm3C,YAAaiqG,EAAQ,KAEpCn1J,MAAO,WACDqG,GACJA,SAUL,IAqGKxL,GArGD8nO,GAAe,GAClBC,GAAS,oBAGVz7F,EAAOu4F,UAAW,CACjBmD,MAAO,WACPC,cAAe,WACd,IAAIz8N,EAAWs8N,GAAa5mO,OAAWorI,EAAOi1E,QAAU,IAAQf,GAAMlmL,OAEtE,OADAh/B,KAAMkQ,IAAa,EACZA,KAKT8gI,EAAOw4F,cAAe,cAAc,SAAUvoO,EAAG2rO,EAAkBxE,GAElE,IAAIyE,EAAcC,EAAaC,EAC9BC,GAAuB,IAAZ/rO,EAAEyrO,QAAqBD,GAAOrsN,KAAMnf,EAAEU,KAChD,MACkB,iBAAXV,EAAE6B,MAE6C,KADnD7B,EAAEioO,aAAe,IACjBxhO,QAAS,sCACX+kO,GAAOrsN,KAAMnf,EAAE6B,OAAU,QAI5B,GAAKkqO,GAAiC,UAArB/rO,EAAEinO,UAAW,GA8D7B,OA3DA2E,EAAe5rO,EAAE0rO,cAAgB/7M,EAAY3vB,EAAE0rO,eAC9C1rO,EAAE0rO,gBACF1rO,EAAE0rO,cAGEK,EACJ/rO,EAAG+rO,GAAa/rO,EAAG+rO,GAAWj5N,QAAS04N,GAAQ,KAAOI,IAC/B,IAAZ5rO,EAAEyrO,QACbzrO,EAAEU,MAAS8kO,GAAOrmN,KAAMnf,EAAEU,KAAQ,IAAM,KAAQV,EAAEyrO,MAAQ,IAAMG,GAIjE5rO,EAAEqoO,WAAY,eAAkB,WAI/B,OAHMyD,GACL/7F,EAAO/pI,MAAO4lO,EAAe,mBAEvBE,EAAmB,IAI3B9rO,EAAEinO,UAAW,GAAM,OAGnB4E,EAAcx5N,EAAQu5N,GACtBv5N,EAAQu5N,GAAiB,WACxBE,EAAoB3rO,WAIrBgnO,EAAM3U,QAAQ,gBAGQ/iN,IAAhBo8N,EACJ97F,EAAQ19H,GAAS6xN,WAAY0H,GAI7Bv5N,EAAQu5N,GAAiBC,EAIrB7rO,EAAG4rO,KAGP5rO,EAAE0rO,cAAgBC,EAAiBD,cAGnCH,GAAa3mO,KAAMgnO,IAIfE,GAAqBn8M,EAAYk8M,IACrCA,EAAaC,EAAmB,IAGjCA,EAAoBD,OAAcp8N,KAI5B,YAYTywG,EAAQ8rH,qBACHvoO,GAAOiT,EAASivG,eAAeqmH,mBAAoB,IAAKvoO,MACvD0mB,UAAY,6BACiB,IAA3B1mB,GAAK4mB,WAAWjqB,QAQxB2vI,EAAO0gF,UAAY,SAAU5uN,EAAM2rK,EAASy+D,GAC3C,MAAqB,iBAATpqO,EACJ,IAEgB,kBAAZ2rK,IACXy+D,EAAcz+D,EACdA,GAAU,GAKLA,IAIAttD,EAAQ8rH,qBAMZx9L,GALAg/H,EAAU92J,EAASivG,eAAeqmH,mBAAoB,KAKvCp1N,cAAe,SACzBC,KAAOH,EAASspG,SAASnpG,KAC9B22J,EAAQ7wJ,KAAKm3C,YAAatlB,IAE1Bg/H,EAAU92J,GAKZ+gN,GAAWwU,GAAe,IAD1BvpF,EAAS2tE,EAAW/4L,KAAMz1B,IAKlB,CAAE2rK,EAAQ52J,cAAe8rI,EAAQ,MAGzCA,EAAS80E,GAAe,CAAE31N,GAAQ2rK,EAASiqD,GAEtCA,GAAWA,EAAQr3N,QACvB2vI,EAAQ0nF,GAAU32J,SAGZivE,EAAO13G,MAAO,GAAIqqH,EAAOr4H,cAlChC,IAAImkB,EAAMk0G,EAAQ+0E,GAyCnB1nF,EAAOzwH,GAAG+gG,KAAO,SAAU3/G,EAAKujB,EAAQhV,GACvC,IAAIsgI,EAAUlkI,EAAM7H,EACnBuU,EAAOhZ,KACP+P,EAAMpO,EAAI+F,QAAS,KAsDpB,OApDKqI,GAAO,IACXygI,EAAWw0F,GAAkBrjO,EAAIuK,MAAO6D,IACxCpO,EAAMA,EAAIuK,MAAO,EAAG6D,IAIhB6gB,EAAY1L,IAGhBhV,EAAWgV,EACXA,OAASxU,GAGEwU,GAA4B,iBAAXA,IAC5B5Y,EAAO,QAIH0M,EAAK3X,OAAS,GAClB2vI,EAAO04F,KAAM,CACZ/nO,IAAKA,EAKL2K,KAAMA,GAAQ,MACd27N,SAAU,OACVnlO,KAAMoiB,IACHxf,MAAM,SAAU8E,GAGnB/F,EAAWrD,UAEX4X,EAAKwT,KAAMgkH,EAIVQ,EAAQ,SAAUvvC,OAAQuvC,EAAO0gF,UAAWlnN,IAAiBqwC,KAAM21F,GAGnEhmI,MAKEipN,OAAQvjN,GAAY,SAAUk4N,EAAO79N,GACxCyO,EAAKwqK,MAAM,WACVtzK,EAASvJ,MAAO3G,KAAMyE,GAAY,CAAE2jO,EAAM59N,aAAcD,EAAQ69N,SAK5DpoO,MAMRgxI,EAAOk7E,KAAKlE,QAAQmlB,SAAW,SAAUriD,GACxC,OAAO95C,EAAO20E,KAAM30E,EAAO2yF,QAAQ,SAAUpjN,GAC5C,OAAOuqK,IAASvqK,EAAGuqK,QAChBzpL,QAML2vI,EAAOvpH,OAAS,CACf2lN,UAAW,SAAUtiD,EAAMlpL,EAASV,GACnC,IAAImsO,EAAaC,EAASC,EAAWC,EAAQC,EAAWC,EACvD7vM,EAAWmzG,EAAO9lH,IAAK4/J,EAAM,YAC7B6iD,EAAU38F,EAAQ85C,GAClB/uK,EAAQ,GAGS,WAAb8hB,IACJitJ,EAAKvjK,MAAMsW,SAAW,YAGvB4vM,EAAYE,EAAQlmN,SACpB8lN,EAAYv8F,EAAO9lH,IAAK4/J,EAAM,OAC9B4iD,EAAa18F,EAAO9lH,IAAK4/J,EAAM,SACI,aAAbjtJ,GAAwC,UAAbA,KAC9C0vM,EAAYG,GAAahmO,QAAS,SAAY,GAMhD8lO,GADAH,EAAcM,EAAQ9vM,YACDC,IACrBwvM,EAAUD,EAAYp8M,OAGtBu8M,EAASvgN,WAAYsgN,IAAe,EACpCD,EAAUrgN,WAAYygN,IAAgB,GAGlC98M,EAAYhvB,KAGhBA,EAAUA,EAAQlB,KAAMoqL,EAAM5pL,EAAG8vI,EAAO7+C,OAAQ,GAAIs7I,KAGjC,MAAf7rO,EAAQk8B,MACZ/hB,EAAM+hB,IAAQl8B,EAAQk8B,IAAM2vM,EAAU3vM,IAAQ0vM,GAE1B,MAAhB5rO,EAAQqvB,OACZlV,EAAMkV,KAASrvB,EAAQqvB,KAAOw8M,EAAUx8M,KAASq8M,GAG7C,UAAW1rO,EACfA,EAAQgsO,MAAMltO,KAAMoqL,EAAM/uK,GAG1B4xN,EAAQziN,IAAKnP,KAKhBi1H,EAAOzwH,GAAG4xE,OAAQ,CAGjB1qE,OAAQ,SAAU7lB,GAGjB,GAAKR,UAAUC,OACd,YAAmBqP,IAAZ9O,EACN5B,KACAA,KAAKwjL,MAAM,SAAUtiL,GACpB8vI,EAAOvpH,OAAO2lN,UAAWptO,KAAM4B,EAASV,MAI3C,IAAIqlD,EAAM8oH,EACTyb,EAAO9qL,KAAM,GAEd,OAAM8qL,EAQAA,EAAKjtC,iBAAiBx8I,QAK5BklD,EAAOukI,EAAK3nI,wBACZksH,EAAMyb,EAAKjxJ,cAAcC,YAClB,CACNgE,IAAKyoB,EAAKzoB,IAAMuxI,EAAI3uD,YACpBzvF,KAAMs1B,EAAKt1B,KAAOo+I,EAAIzuD,cARf,CAAE9iF,IAAK,EAAG7M,KAAM,QATxB,GAuBD4M,SAAU,WACT,GAAM79B,KAAM,GAAZ,CAIA,IAAIwvK,EAAc/nJ,EAAQsrH,EACzB+3C,EAAO9qL,KAAM,GACbqzK,EAAe,CAAEv1I,IAAK,EAAG7M,KAAM,GAGhC,GAAwC,UAAnC+/G,EAAO9lH,IAAK4/J,EAAM,YAGtBrjK,EAASqjK,EAAK3nI,4BAER,CAON,IANA17B,EAASznB,KAAKynB,SAIdsrH,EAAM+3C,EAAKjxJ,cACX21I,EAAesb,EAAKtb,cAAgBz8B,EAAIp1H,gBAChC6xJ,IACLA,IAAiBz8B,EAAIruI,MAAQ8qK,IAAiBz8B,EAAIp1H,kBACT,WAA3CqzH,EAAO9lH,IAAKskJ,EAAc,aAE1BA,EAAeA,EAAazhI,WAExByhI,GAAgBA,IAAiBsb,GAAkC,IAA1Btb,EAAa5jE,YAG1DynE,EAAeriC,EAAQw+B,GAAe/nJ,UACzBqW,KAAOkzG,EAAO9lH,IAAKskJ,EAAc,kBAAkB,GAChE6D,EAAapiJ,MAAQ+/G,EAAO9lH,IAAKskJ,EAAc,mBAAmB,IAKpE,MAAO,CACN1xI,IAAKrW,EAAOqW,IAAMu1I,EAAav1I,IAAMkzG,EAAO9lH,IAAK4/J,EAAM,aAAa,GACpE75J,KAAMxJ,EAAOwJ,KAAOoiJ,EAAapiJ,KAAO+/G,EAAO9lH,IAAK4/J,EAAM,cAAc,MAc1Etb,aAAc,WACb,OAAOxvK,KAAKsX,KAAK,WAGhB,IAFA,IAAIk4J,EAAexvK,KAAKwvK,aAEhBA,GAA2D,WAA3Cx+B,EAAO9lH,IAAKskJ,EAAc,aACjDA,EAAeA,EAAaA,aAG7B,OAAOA,GAAgB7xJ,SAM1BqzH,EAAOwyC,KAAM,CAAEh2H,WAAY,cAAeziB,UAAW,gBAAiB,SAAUjpC,EAAQ0sB,GACvF,IAAIsP,EAAM,gBAAkBtP,EAE5BwiH,EAAOzwH,GAAIze,GAAW,SAAUW,GAC/B,OAAO2yN,EAAQp1N,MAAM,SAAU8qL,EAAMhpL,EAAQW,GAG5C,IAAI4sK,EAOJ,GANK21C,EAAUl6B,GACdzb,EAAMyb,EACuB,IAAlBA,EAAKl/E,WAChByjE,EAAMyb,EAAKhxJ,kBAGCppB,IAARjO,EACJ,OAAO4sK,EAAMA,EAAK7gJ,GAASs8J,EAAMhpL,GAG7ButK,EACJA,EAAI9gH,SACFzwB,EAAYuxI,EAAIzuD,YAAVn+G,EACPq7B,EAAMr7B,EAAM4sK,EAAI3uD,aAIjBoqE,EAAMhpL,GAAWW,IAEhBX,EAAQW,EAAKrB,UAAUC,YAU5B2vI,EAAOwyC,KAAM,CAAE,MAAO,SAAU,SAAUx8K,EAAIwnB,GAC7CwiH,EAAO+vF,SAAUvyM,GAAS6vM,GAAcl9G,EAAQg+G,eAC/C,SAAUr0C,EAAM31B,GACf,GAAKA,EAIJ,OAHAA,EAAWgpE,GAAQrzC,EAAMt8J,GAGlBqvM,GAAUz9M,KAAM+0I,GACtBnkB,EAAQ85C,GAAOjtJ,WAAYrP,GAAS,KACpC2mI,QAQLnkB,EAAOwyC,KAAM,CAAEqqD,OAAQ,SAAUC,MAAO,UAAW,SAAUprO,EAAM4J,GAClE0kI,EAAOwyC,KAAM,CACZ78H,QAAS,QAAUjkD,EACnBlB,QAAS8K,EACT,GAAI,QAAU5J,IACZ,SAAUqrO,EAAcC,GAG1Bh9F,EAAOzwH,GAAIytN,GAAa,SAAUx7F,EAAQ7sI,GACzC,IAAI0vN,EAAYj0N,UAAUC,SAAY0sO,GAAkC,kBAAXv7F,GAC5D/sH,EAAQsoN,KAA6B,IAAXv7F,IAA6B,IAAV7sI,EAAiB,SAAW,UAE1E,OAAOyvN,EAAQp1N,MAAM,SAAU8qL,EAAMx+K,EAAM3G,GAC1C,IAAIotI,EAEJ,OAAKiyE,EAAUl6B,GAGyB,IAAhCkjD,EAAStmO,QAAS,SACxBojL,EAAM,QAAUpoL,GAChBooL,EAAKnzK,SAASgG,gBAAiB,SAAWjb,GAIrB,IAAlBooL,EAAKl/E,UACTmnC,EAAM+3C,EAAKntK,gBAIJ4F,KAAKmnB,IACXogJ,EAAKpmL,KAAM,SAAWhC,GAAQqwI,EAAK,SAAWrwI,GAC9CooL,EAAKpmL,KAAM,SAAWhC,GAAQqwI,EAAK,SAAWrwI,GAC9CqwI,EAAK,SAAWrwI,UAIDgO,IAAV/K,EAGNqrI,EAAO9lH,IAAK4/J,EAAMx+K,EAAMmZ,GAGxBurH,EAAOzpH,MAAOujK,EAAMx+K,EAAM3G,EAAO8f,KAChCnZ,EAAM+oN,EAAY7iF,OAAS9hI,EAAW2kN,UAM5CrkF,EAAOwyC,KAAM,CACZ,YACA,WACA,eACA,YACA,cACA,aACE,SAAUx8K,EAAIsF,GAChB0kI,EAAOzwH,GAAIjU,GAAS,SAAUiU,GAC7B,OAAOvgB,KAAK4P,GAAItD,EAAMiU,OAOxBywH,EAAOzwH,GAAG4xE,OAAQ,CAEjBzhE,KAAM,SAAUq8K,EAAOjqM,EAAMyd,GAC5B,OAAOvgB,KAAK4P,GAAIm9L,EAAO,KAAMjqM,EAAMyd,IAEpCygB,OAAQ,SAAU+rK,EAAOxsL,GACxB,OAAOvgB,KAAK+P,IAAKg9L,EAAO,KAAMxsL,IAG/B0tN,SAAU,SAAUz9F,EAAUu8D,EAAOjqM,EAAMyd,GAC1C,OAAOvgB,KAAK4P,GAAIm9L,EAAOv8D,EAAU1tI,EAAMyd,IAExC2tN,WAAY,SAAU19F,EAAUu8D,EAAOxsL,GAGtC,OAA4B,IAArBnf,UAAUC,OAChBrB,KAAK+P,IAAKygI,EAAU,MACpBxwI,KAAK+P,IAAKg9L,EAAOv8D,GAAY,KAAMjwH,IAGrC4tN,MAAO,SAAUC,EAAQC,GACxB,OAAOruO,KAAK07N,WAAY0S,GAASzS,WAAY0S,GAASD,MAIxDp9F,EAAOwyC,KACN,wLAE4Dr4K,MAAO,MACnE,SAAUnE,EAAItE,GAGbsuI,EAAOzwH,GAAI7d,GAAS,SAAUI,EAAMyd,GACnC,OAAOnf,UAAUC,OAAS,EACzBrB,KAAK4P,GAAIlN,EAAM,KAAMI,EAAMyd,GAC3BvgB,KAAKwyF,QAAS9vF,OAUlB,IAAIwlN,GAAQ,qCAMZl3E,EAAOjwG,MAAQ,SAAUxgB,EAAIkuJ,GAC5B,IAAIv9C,EAAKliH,EAAM+xB,EAUf,GARwB,iBAAZ0tI,IACXv9C,EAAM3wG,EAAIkuJ,GACVA,EAAUluJ,EACVA,EAAK2wG,GAKAtgG,EAAYrQ,GAalB,OARAvR,EAAO9C,EAAMxL,KAAMU,UAAW,GAC9B2/B,EAAQ,WACP,OAAOxgB,EAAG5Z,MAAO8nK,GAAWzuK,KAAMgP,EAAK8K,OAAQ5N,EAAMxL,KAAMU,cAI5D2/B,EAAM/B,KAAOze,EAAGye,KAAOze,EAAGye,MAAQgyG,EAAOhyG,OAElC+B,GAGRiwG,EAAOs9F,UAAY,SAAUC,GACvBA,EACJv9F,EAAOmkF,YAEPnkF,EAAO2gF,OAAO,IAGhB3gF,EAAO70H,QAAUzc,MAAMyc,QACvB60H,EAAOw9F,UAAY9iO,KAAKV,MACxBgmI,EAAOtpG,SAAWA,EAClBspG,EAAOpgH,WAAaA,EACpBogH,EAAOg0E,SAAWA,EAClBh0E,EAAO4kF,UAAYA,EACnB5kF,EAAO1kI,KAAO+4M,EAEdr0E,EAAOz+H,IAAMnK,KAAKmK,IAElBy+H,EAAOy9F,UAAY,SAAUv1N,GAK5B,IAAI5M,EAAO0kI,EAAO1kI,KAAM4M,GACxB,OAAkB,WAAT5M,GAA8B,WAATA,KAK5B4gB,MAAOhU,EAAM+T,WAAY/T,KAG5B83H,EAAO5nH,KAAO,SAAUmd,GACvB,OAAe,MAARA,EACN,IACEA,EAAO,IAAKxyB,QAASm0M,GAAO,UAqB9B,KAFqB,EAAF,WACnB,OAAOl3E,GACP,QAFiB,OAEjB,aAMF,IAGC09F,GAAUp7N,EAAO09H,OAGjB29F,GAAKr7N,EAAOu9H,EAwBb,OAtBAG,EAAO4yC,WAAa,SAAUmiC,GAS7B,OARKzyM,EAAOu9H,IAAMG,IACjB19H,EAAOu9H,EAAI89F,IAGP5oB,GAAQzyM,EAAO09H,SAAWA,IAC9B19H,EAAO09H,OAAS09F,IAGV19F,QAMiB,IAAb2zE,IACXrxM,EAAO09H,OAAS19H,EAAOu9H,EAAIG,GAMrBA,cCznVPl4H,EAAOC,QANP,SAAwBS,EAAUC,GAChCD,EAAStZ,UAAYX,OAAOY,OAAOsZ,EAAWvZ,WAC9CsZ,EAAStZ,UAAUD,YAAcuZ,EACjCA,EAAS/Z,UAAYga,0BCKvB,IAAII,EAAwBta,OAAOsa,sBAC/B/Z,EAAiBP,OAAOW,UAAUJ,eAClC8uO,EAAmBrvO,OAAOW,UAAU6tB,qBAExC,SAAS8gN,EAASpsO,GACjB,GAAIA,QACH,MAAM,IAAIgD,UAAU,yDAGrB,OAAOlG,OAAOkD,GA+CfqW,EAAOC,QA5CP,WACC,IACC,IAAKxZ,OAAOwB,OACX,OAAO,EAMR,IAAI+tO,EAAQ,IAAIzjO,OAAO,OAEvB,GADAyjO,EAAM,GAAK,KACkC,MAAzCvvO,OAAOkzD,oBAAoBq8K,GAAO,GACrC,OAAO,EAKR,IADA,IAAIC,EAAQ,GACH7tO,EAAI,EAAGA,EAAI,GAAIA,IACvB6tO,EAAM,IAAM1jO,OAAOC,aAAapK,IAAMA,EAKvC,GAAwB,eAHX3B,OAAOkzD,oBAAoBs8K,GAAOz3N,KAAI,SAAUnW,GAC5D,OAAO4tO,EAAM5tO,MAEH8kB,KAAK,IACf,OAAO,EAIR,IAAI+oN,EAAQ,GAIZ,MAHA,uBAAuB7jO,MAAM,IAAI7H,SAAQ,SAAUy+H,GAClDitG,EAAMjtG,GAAUA,KAGf,yBADExiI,OAAO6K,KAAK7K,OAAOwB,OAAO,GAAIiuO,IAAQ/oN,KAAK,IAM9C,MAAO/e,GAER,OAAO,GAIQ+nO,GAAoB1vO,OAAOwB,OAAS,SAAUoQ,EAAQmI,GAKtE,IAJA,IAAIjQ,EAEA67D,EADAztD,EAAKo3N,EAAS19N,GAGTlQ,EAAI,EAAGA,EAAIG,UAAUC,OAAQJ,IAAK,CAG1C,IAAK,IAAIoQ,KAFThI,EAAO9J,OAAO6B,UAAUH,IAGnBnB,EAAeY,KAAK2I,EAAMgI,KAC7BoG,EAAGpG,GAAOhI,EAAKgI,IAIjB,GAAIwI,EAAuB,CAC1BqrD,EAAUrrD,EAAsBxQ,GAChC,IAAK,IAAInI,EAAI,EAAGA,EAAIgkE,EAAQ7jE,OAAQH,IAC/B0tO,EAAiBluO,KAAK2I,EAAM67D,EAAQhkE,MACvCuW,EAAGytD,EAAQhkE,IAAMmI,EAAK67D,EAAQhkE,MAMlC,OAAOuW,yBCpFR,IAAIy3N,EAAc,SAAUvpO,GAC3B,OAAOA,GAAUA,GAGlBmT,EAAOC,QAAU,SAAY+O,EAAGloB,GAC/B,OAAU,IAANkoB,GAAiB,IAANloB,EACP,EAAIkoB,GAAM,EAAIloB,EAElBkoB,IAAMloB,MAGNsvO,EAAYpnN,KAAMonN,EAAYtvO,eCfiEkZ,EAAOC,QAA6R,SAAUjT,EAAE9E,EAAEG,EAAEgpB,GAAG,SAASlpB,EAAEsnB,EAAEuxI,GAAG,IAAI34J,EAAEonB,GAAG,CAAC,IAAIvnB,EAAEunB,GAAG,CAAmE,GAAGrnB,EAAE,OAAOA,EAAEqnB,GAAE,GAAI,IAAI5jB,EAAE,IAAIhE,MAAM,uBAAuB4nB,EAAE,KAAK,MAAM5jB,EAAEgF,KAAK,mBAAmBhF,EAAE,IAAIs7F,EAAE9+F,EAAEonB,GAAG,CAACxP,QAAQ,IAAI/X,EAAEunB,GAAG,GAAG7nB,KAAKu/F,EAAElnF,SAAQ,SAASjT,GAAoB,OAAO7E,EAAlBD,EAAEunB,GAAG,GAAGziB,IAAgBA,KAAIm6F,EAAEA,EAAElnF,QAAQjT,EAAE9E,EAAEG,EAAEgpB,GAAG,OAAOhpB,EAAEonB,GAAGxP,QAAkD,IAA1C,IAAI7X,OAAE,EAA4CqnB,EAAE,EAAEA,EAAE4B,EAAE9oB,OAAOknB,IAAItnB,EAAEkpB,EAAE5B,IAAI,OAAOtnB,EAAvb,CAA2b,CAAC,EAAE,CAAC,SAASkuO,EAAQr2N,EAAOC,GAC/1B,aAGA,IAAIq2N,EAAmC,oBAAfhsO,YACgB,oBAAhBmkM,aACe,oBAAfV,WAExB,SAASwoC,EAAKn2N,EAAK7H,GACjB,OAAO9R,OAAOW,UAAUJ,eAAeY,KAAKwY,EAAK7H,GAGnD0H,EAAQhY,OAAS,SAAUmY,GAEzB,IADA,IAAIo2N,EAAU5vO,MAAMQ,UAAUgM,MAAMxL,KAAKU,UAAW,GAC7CkuO,EAAQjuO,QAAQ,CACrB,IAAIiY,EAASg2N,EAAQlwM,QACrB,GAAK9lB,EAAL,CAEA,GAAsB,iBAAXA,EACT,MAAM,IAAI7T,UAAU6T,EAAS,sBAG/B,IAAK,IAAIzZ,KAAKyZ,EACR+1N,EAAK/1N,EAAQzZ,KACfqZ,EAAIrZ,GAAKyZ,EAAOzZ,KAKtB,OAAOqZ,GAKTH,EAAQw2N,UAAY,SAAUC,EAAKvsN,GACjC,OAAIusN,EAAInuO,SAAW4hB,EAAeusN,EAC9BA,EAAIC,SAAmBD,EAAIC,SAAS,EAAGxsN,IAC3CusN,EAAInuO,OAAS4hB,EACNusN,IAIT,IAAIE,EAAU,CACZC,SAAU,SAAUt2M,EAAMuiD,EAAKg0J,EAAU3+G,EAAK4+G,GAC5C,GAAIj0J,EAAI6zJ,UAAYp2M,EAAKo2M,SACvBp2M,EAAK5e,IAAImhE,EAAI6zJ,SAASG,EAAUA,EAAW3+G,GAAM4+G,QAInD,IAAK,IAAI3uO,EAAI,EAAGA,EAAI+vH,EAAK/vH,IACvBm4B,EAAKw2M,EAAY3uO,GAAK06E,EAAIg0J,EAAW1uO,IAIzC4uO,cAAe,SAAUC,GACvB,IAAI7uO,EAAG++F,EAAGgxB,EAAKpX,EAAK6sB,EAAOjgI,EAI3B,IADAwqH,EAAM,EACD/vH,EAAI,EAAG++F,EAAI8vI,EAAO1uO,OAAQH,EAAI++F,EAAG/+F,IACpC+vH,GAAO8+G,EAAO7uO,GAAGG,OAMnB,IAFAoF,EAAS,IAAIrD,WAAW6tH,GACxBpX,EAAM,EACD34G,EAAI,EAAG++F,EAAI8vI,EAAO1uO,OAAQH,EAAI++F,EAAG/+F,IACpCwlI,EAAQqpG,EAAO7uO,GACfuF,EAAOgU,IAAIisH,EAAO7sB,GAClBA,GAAO6sB,EAAMrlI,OAGf,OAAOoF,IAIPupO,EAAY,CACdL,SAAU,SAAUt2M,EAAMuiD,EAAKg0J,EAAU3+G,EAAK4+G,GAC5C,IAAK,IAAI3uO,EAAI,EAAGA,EAAI+vH,EAAK/vH,IACvBm4B,EAAKw2M,EAAY3uO,GAAK06E,EAAIg0J,EAAW1uO,IAIzC4uO,cAAe,SAAUC,GACvB,MAAO,GAAGj2N,OAAOnT,MAAM,GAAIopO,KAO/Bh3N,EAAQk3N,SAAW,SAAUrgO,GACvBA,GACFmJ,EAAQm3N,KAAQ9sO,WAChB2V,EAAQo3N,MAAQ5oC,YAChBxuL,EAAQq3N,MAAQvpC,WAChB9tL,EAAQhY,OAAOgY,EAAS22N,KAExB32N,EAAQm3N,KAAQxwO,MAChBqZ,EAAQo3N,MAAQzwO,MAChBqZ,EAAQq3N,MAAQ1wO,MAChBqZ,EAAQhY,OAAOgY,EAASi3N,KAI5Bj3N,EAAQk3N,SAASb,IAEf,IAAI,EAAE,CAAC,SAASD,EAAQr2N,EAAOC,GAEjC,aAGA,IAAI+/J,EAAQq2D,EAAQ,YAQhBkB,GAAe,EACfC,GAAmB,EAEvB,IAAMjlO,OAAOC,aAAa3E,MAAM,KAAM,CAAE,IAAQ,MAAO5G,GAAMswO,GAAe,EAC5E,IAAMhlO,OAAOC,aAAa3E,MAAM,KAAM,IAAIvD,WAAW,IAAO,MAAOrD,GAAMuwO,GAAmB,EAO5F,IADA,IAAIC,EAAW,IAAIz3D,EAAMo3D,KAAK,KACrB9lJ,EAAI,EAAGA,EAAI,IAAKA,IACvBmmJ,EAASnmJ,GAAMA,GAAK,IAAM,EAAIA,GAAK,IAAM,EAAIA,GAAK,IAAM,EAAIA,GAAK,IAAM,EAAIA,GAAK,IAAM,EAAI,EA4D5F,SAASomJ,EAAchB,EAAKv+G,GAE1B,GAAIA,EAAM,QACHu+G,EAAIC,UAAYa,IAAuBd,EAAIC,UAAYY,GAC1D,OAAOhlO,OAAOC,aAAa3E,MAAM,KAAMmyK,EAAMy2D,UAAUC,EAAKv+G,IAKhE,IADA,IAAIxqH,EAAS,GACJvF,EAAI,EAAGA,EAAI+vH,EAAK/vH,IACvBuF,GAAU4E,OAAOC,aAAakkO,EAAItuO,IAEpC,OAAOuF,EAtET8pO,EAAS,KAAOA,EAAS,KAAO,EAIhCx3N,EAAQ03N,WAAa,SAAUptO,GAC7B,IAAImsO,EAAKl+N,EAAGmuF,EAAIixI,EAAOxvO,EAAGyvO,EAAUttO,EAAIhC,OAAQuvO,EAAU,EAG1D,IAAKF,EAAQ,EAAGA,EAAQC,EAASD,IAEV,QAAZ,OADTp/N,EAAIjO,EAAI4hG,WAAWyrI,MACaA,EAAQ,EAAIC,GAEpB,QAAZ,OADVlxI,EAAKp8F,EAAI4hG,WAAWyrI,EAAQ,OAE1Bp/N,EAAI,OAAYA,EAAI,OAAW,KAAOmuF,EAAK,OAC3CixI,KAGJE,GAAWt/N,EAAI,IAAO,EAAIA,EAAI,KAAQ,EAAIA,EAAI,MAAU,EAAI,EAO9D,IAHAk+N,EAAM,IAAI12D,EAAMo3D,KAAKU,GAGhB1vO,EAAI,EAAGwvO,EAAQ,EAAGxvO,EAAI0vO,EAASF,IAEb,QAAZ,OADTp/N,EAAIjO,EAAI4hG,WAAWyrI,MACaA,EAAQ,EAAIC,GAEpB,QAAZ,OADVlxI,EAAKp8F,EAAI4hG,WAAWyrI,EAAQ,OAE1Bp/N,EAAI,OAAYA,EAAI,OAAW,KAAOmuF,EAAK,OAC3CixI,KAGAp/N,EAAI,IAENk+N,EAAItuO,KAAOoQ,EACFA,EAAI,MAEbk+N,EAAItuO,KAAO,IAAQoQ,IAAM,EACzBk+N,EAAItuO,KAAO,IAAY,GAAJoQ,GACVA,EAAI,OAEbk+N,EAAItuO,KAAO,IAAQoQ,IAAM,GACzBk+N,EAAItuO,KAAO,IAAQoQ,IAAM,EAAI,GAC7Bk+N,EAAItuO,KAAO,IAAY,GAAJoQ,IAGnBk+N,EAAItuO,KAAO,IAAQoQ,IAAM,GACzBk+N,EAAItuO,KAAO,IAAQoQ,IAAM,GAAK,GAC9Bk+N,EAAItuO,KAAO,IAAQoQ,IAAM,EAAI,GAC7Bk+N,EAAItuO,KAAO,IAAY,GAAJoQ,GAIvB,OAAOk+N,GAqBTz2N,EAAQy3N,cAAgB,SAAUhB,GAChC,OAAOgB,EAAchB,EAAKA,EAAInuO,SAKhC0X,EAAQ83N,cAAgB,SAAUxtO,GAEhC,IADA,IAAImsO,EAAM,IAAI12D,EAAMo3D,KAAK7sO,EAAIhC,QACpBH,EAAI,EAAG+vH,EAAMu+G,EAAInuO,OAAQH,EAAI+vH,EAAK/vH,IACzCsuO,EAAItuO,GAAKmC,EAAI4hG,WAAW/jG,GAE1B,OAAOsuO,GAKTz2N,EAAQ+3N,WAAa,SAAUtB,EAAK9kM,GAClC,IAAIxpC,EAAG4yH,EAAKxiH,EAAGy/N,EACX9/G,EAAMvmF,GAAO8kM,EAAInuO,OAKjB2vO,EAAW,IAAItxO,MAAY,EAANuxH,GAEzB,IAAK6C,EAAM,EAAG5yH,EAAI,EAAGA,EAAI+vH,GAGvB,IAFA3/G,EAAIk+N,EAAItuO,MAEA,IAAQ8vO,EAASl9G,KAASxiH,OAIlC,IAFAy/N,EAAQR,EAASj/N,IAEL,EAAK0/N,EAASl9G,KAAS,MAAQ5yH,GAAK6vO,EAAQ,MAAxD,CAKA,IAFAz/N,GAAe,IAAVy/N,EAAc,GAAiB,IAAVA,EAAc,GAAO,EAExCA,EAAQ,GAAK7vO,EAAI+vH,GACtB3/G,EAAKA,GAAK,EAAiB,GAAXk+N,EAAItuO,KACpB6vO,IAIEA,EAAQ,EAAKC,EAASl9G,KAAS,MAE/BxiH,EAAI,MACN0/N,EAASl9G,KAASxiH,GAElBA,GAAK,MACL0/N,EAASl9G,KAAS,MAAWxiH,GAAK,GAAM,KACxC0/N,EAASl9G,KAAS,MAAc,KAAJxiH,GAIhC,OAAOk/N,EAAcQ,EAAUl9G,IAUjC/6G,EAAQk4N,WAAa,SAAUzB,EAAK9kM,GAClC,IAAImvE,EAOJ,KALAnvE,EAAMA,GAAO8kM,EAAInuO,QACPmuO,EAAInuO,SAAUqpC,EAAM8kM,EAAInuO,QAGlCw4G,EAAMnvE,EAAM,EACLmvE,GAAO,GAA2B,MAAV,IAAX21H,EAAI31H,KAAyBA,IAIjD,OAAIA,EAAM,GAIE,IAARA,EAJkBnvE,EAMdmvE,EAAM02H,EAASf,EAAI31H,IAAQnvE,EAAOmvE,EAAMnvE,IAGhD,CAAC,WAAW,IAAI,EAAE,CAAC,SAASykM,EAAQr2N,EAAOC,GAC7C,aAkDAD,EAAOC,QAzBP,SAAiBm4N,EAAO1B,EAAKv+G,EAAKpX,GAKhC,IAJA,IAAIs3H,EAAc,MAARD,EAAiB,EACvBE,EAAOF,IAAU,GAAM,MAAS,EAChC/vO,EAAI,EAEO,IAAR8vH,GAAW,CAKhBA,GADA9vH,EAAI8vH,EAAM,IAAO,IAAOA,EAGxB,GAEEmgH,EAAMA,GADND,EAAMA,EAAK3B,EAAI31H,KAAS,GACR,UACP14G,GAEXgwO,GAAM,MACNC,GAAM,MAGR,OAAQD,EAAMC,GAAM,GAAM,IAM1B,IAAI,EAAE,CAAC,SAASjC,EAAQr2N,EAAOC,GACjC,aAyCA,IAAIs4N,EAfJ,WAGE,IAFA,IAAI//N,EAAG6oD,EAAQ,GAENh5D,EAAI,EAAGA,EAAI,IAAKA,IAAK,CAC5BmQ,EAAInQ,EACJ,IAAK,IAAIuzE,EAAI,EAAGA,EAAI,EAAGA,IACrBpjE,EAAU,EAAJA,EAAU,WAAcA,IAAM,EAAOA,IAAM,EAEnD6oD,EAAMh5D,GAAKmQ,EAGb,OAAO6oD,EAIMm3K,GAiBfx4N,EAAOC,QAdP,SAAew4N,EAAK/B,EAAKv+G,EAAKpX,GAC5B,IAAI74G,EAAIqwO,EACJx4M,EAAMghF,EAAMoX,EAEhBsgH,IAAQ,EAER,IAAK,IAAIrwO,EAAI24G,EAAK34G,EAAI23B,EAAK33B,IACzBqwO,EAAOA,IAAQ,EAAKvwO,EAAmB,KAAhBuwO,EAAM/B,EAAItuO,KAGnC,OAAgB,EAARqwO,IAMR,IAAI,EAAE,CAAC,SAASpC,EAAQr2N,EAAOC,GACjC,aAqBA,IAkgCIy4N,EAlgCA14D,EAAUq2D,EAAQ,mBAClBsC,EAAUtC,EAAQ,WAClBuC,EAAUvC,EAAQ,aAClBwC,EAAUxC,EAAQ,WAClBhpB,EAAUgpB,EAAQ,cAuBlByC,GAAmB,EAwDnBC,EAAY,IACZC,EAAgB,IAQhBC,EAAa,IACbC,EAAa,IACbC,EAAe,IASnB,SAAS/qO,EAAIgrO,EAAMC,GAEjB,OADAD,EAAK/rB,IAAMA,EAAIgsB,GACRA,EAGT,SAASC,EAAKztO,GACZ,OAAQ,GAAO,IAAM,EAAM,EAAI,EAAI,GAGrC,SAAS0tO,EAAK7C,GAA6B,IAAtB,IAAIv+G,EAAMu+G,EAAInuO,SAAiB4vH,GAAO,GAAKu+G,EAAIv+G,GAAO,EAS3E,SAASqhH,EAAcJ,GACrB,IAAIjxO,EAAIixO,EAAK9/M,MAGT6+F,EAAMhwH,EAAEuyI,QACRviB,EAAMihH,EAAKK,YACbthH,EAAMihH,EAAKK,WAED,IAARthH,IAEJ6nD,EAAM62D,SAASuC,EAAKpnO,OAAQ7J,EAAEuxO,YAAavxO,EAAEwxO,YAAaxhH,EAAKihH,EAAKQ,UACpER,EAAKQ,UAAYzhH,EACjBhwH,EAAEwxO,aAAexhH,EACjBihH,EAAKS,WAAa1hH,EAClBihH,EAAKK,WAAathH,EAClBhwH,EAAEuyI,SAAWviB,EACK,IAAdhwH,EAAEuyI,UACJvyI,EAAEwxO,YAAc,IAKpB,SAASG,EAAiB3xO,EAAG0uC,GAC3B8hM,EAAMoB,gBAAgB5xO,EAAIA,EAAE6xO,aAAe,EAAI7xO,EAAE6xO,aAAe,EAAI7xO,EAAE8xO,SAAW9xO,EAAE6xO,YAAanjM,GAChG1uC,EAAE6xO,YAAc7xO,EAAE8xO,SAClBT,EAAcrxO,EAAEixO,MAIlB,SAASc,EAAS/xO,EAAGrB,GACnBqB,EAAEuxO,YAAYvxO,EAAEuyI,WAAa5zI,EAS/B,SAASqzO,EAAYhyO,EAAGrB,GAGtBqB,EAAEuxO,YAAYvxO,EAAEuyI,WAAc5zI,IAAM,EAAK,IACzCqB,EAAEuxO,YAAYvxO,EAAEuyI,WAAiB,IAAJ5zI,EA6C/B,SAASszO,EAAcjyO,EAAGkyO,GACxB,IAEI/kN,EACA6iG,EAHAmiH,EAAenyO,EAAEoyO,iBACjBC,EAAOryO,EAAE8xO,SAGTQ,EAAWtyO,EAAEuyO,YACbC,EAAaxyO,EAAEwyO,WACfhjK,EAASxvE,EAAE8xO,SAAY9xO,EAAEyyO,OAAS5B,EAClC7wO,EAAE8xO,UAAY9xO,EAAEyyO,OAAS5B,GAAiB,EAE1C6B,EAAO1yO,EAAEqS,OAETsgO,EAAQ3yO,EAAE4yO,OACVnoM,EAAQzqC,EAAEyqC,KAMVooM,EAAS7yO,EAAE8xO,SAAWlB,EACtBkC,EAAaJ,EAAKL,EAAOC,EAAW,GACpCS,EAAaL,EAAKL,EAAOC,GAQzBtyO,EAAEuyO,aAAevyO,EAAEgzO,aACrBb,IAAiB,GAKfK,EAAaxyO,EAAEizO,YAAaT,EAAaxyO,EAAEizO,WAI/C,GAaE,GAAIP,GAXJvlN,EAAQ+kN,GAWSI,KAAkBS,GAC/BL,EAAKvlN,EAAQmlN,EAAW,KAAOQ,GAC/BJ,EAAKvlN,KAA0BulN,EAAKL,IACpCK,IAAOvlN,KAAwBulN,EAAKL,EAAO,GAH/C,CAaAA,GAAQ,EACRllN,IAMA,UAESulN,IAAOL,KAAUK,IAAOvlN,IAAUulN,IAAOL,KAAUK,IAAOvlN,IAC1DulN,IAAOL,KAAUK,IAAOvlN,IAAUulN,IAAOL,KAAUK,IAAOvlN,IAC1DulN,IAAOL,KAAUK,IAAOvlN,IAAUulN,IAAOL,KAAUK,IAAOvlN,IAC1DulN,IAAOL,KAAUK,IAAOvlN,IAAUulN,IAAOL,KAAUK,IAAOvlN,IAC1DklN,EAAOQ,GAOhB,GAHA7iH,EAAM4gH,GAAaiC,EAASR,GAC5BA,EAAOQ,EAASjC,EAEZ5gH,EAAMsiH,EAAU,CAGlB,GAFAtyO,EAAEkzO,YAAchB,EAChBI,EAAWtiH,EACPA,GAAOwiH,EACT,MAEFM,EAAaJ,EAAKL,EAAOC,EAAW,GACpCS,EAAaL,EAAKL,EAAOC,YAEnBJ,EAAYznM,EAAKynM,EAAYS,IAAUnjK,GAA4B,KAAjB2iK,GAE5D,OAAIG,GAAYtyO,EAAEizO,UACTX,EAEFtyO,EAAEizO,UAcX,SAASE,EAAYnzO,GACnB,IACIpB,EAAGsB,EAAGiQ,EAAGqyC,EAAMpgD,EArJH6uO,EAAM1C,EAAKvhO,EAAOgV,EAC9BguG,EAmJAojH,EAAUpzO,EAAEyyO,OAKhB,EAAG,CAqBD,GApBAjwL,EAAOxiD,EAAEqzO,YAAcrzO,EAAEizO,UAAYjzO,EAAE8xO,SAoBnC9xO,EAAE8xO,UAAYsB,GAAWA,EAAUvC,GAAgB,CAErDh5D,EAAM62D,SAAS1uO,EAAEqS,OAAQrS,EAAEqS,OAAQ+gO,EAASA,EAAS,GACrDpzO,EAAEkzO,aAAeE,EACjBpzO,EAAE8xO,UAAYsB,EAEdpzO,EAAE6xO,aAAeuB,EAUjBx0O,EADAsB,EAAIF,EAAEszO,UAEN,GACEnjO,EAAInQ,EAAE2c,OAAO/d,GACboB,EAAE2c,KAAK/d,GAAMuR,GAAKijO,EAAUjjO,EAAIijO,EAAU,UACjClzO,GAGXtB,EADAsB,EAAIkzO,EAEJ,GACEjjO,EAAInQ,EAAEyqC,OAAO7rC,GACboB,EAAEyqC,KAAK7rC,GAAMuR,GAAKijO,EAAUjjO,EAAIijO,EAAU,UAIjClzO,GAEXsiD,GAAQ4wL,EAEV,GAAwB,IAApBpzO,EAAEixO,KAAKsC,SACT,MAmBF,GApOctC,EAgODjxO,EAAEixO,KAhOK1C,EAgOCvuO,EAAEqS,OAhOErF,EAgOMhN,EAAE8xO,SAAW9xO,EAAEizO,UAhOdjxN,EAgOyBwgC,EA/NvDwtE,YAAMihH,EAAKsC,UAELvxN,IAAQguG,EAAMhuG,GA6NtB9hB,EA5NU,IAAR8vH,EAAoB,GAExBihH,EAAKsC,UAAYvjH,EAGjB6nD,EAAM62D,SAASH,EAAK0C,EAAKjnO,MAAOinO,EAAKuC,QAASxjH,EAAKhjH,GAC3B,IAApBikO,EAAK9/M,MAAM8oF,KACbg3H,EAAKhB,MAAQQ,EAAQQ,EAAKhB,MAAO1B,EAAKv+G,EAAKhjH,GAGhB,IAApBikO,EAAK9/M,MAAM8oF,OAClBg3H,EAAKhB,MAAQS,EAAMO,EAAKhB,MAAO1B,EAAKv+G,EAAKhjH,IAG3CikO,EAAKuC,SAAWxjH,EAChBihH,EAAKwC,UAAYzjH,EAEVA,GA4MLhwH,EAAEizO,WAAa/yO,EAGXF,EAAEizO,UAAYjzO,EAAEo5G,QAjUR,EA0UV,IARAh3G,EAAMpC,EAAE8xO,SAAW9xO,EAAEo5G,OACrBp5G,EAAE0zO,MAAQ1zO,EAAEqS,OAAOjQ,GAGnBpC,EAAE0zO,OAAU1zO,EAAE0zO,OAAS1zO,EAAE2zO,WAAc3zO,EAAEqS,OAAOjQ,EAAM,IAAMpC,EAAE4zO,UAIvD5zO,EAAEo5G,SAEPp5G,EAAE0zO,OAAU1zO,EAAE0zO,OAAS1zO,EAAE2zO,WAAc3zO,EAAEqS,OAAOjQ,EA5UxC,EA4U0D,IAAMpC,EAAE4zO,UAE1E5zO,EAAEyqC,KAAKroC,EAAMpC,EAAE4yO,QAAU5yO,EAAE2c,KAAK3c,EAAE0zO,OAClC1zO,EAAE2c,KAAK3c,EAAE0zO,OAAStxO,EAClBA,IACApC,EAAEo5G,WACEp5G,EAAEizO,UAAYjzO,EAAEo5G,OAlVZ,aA2VLp5G,EAAEizO,UAAYpC,GAAqC,IAApB7wO,EAAEixO,KAAKsC,UAmJjD,SAASM,EAAa7zO,EAAG8zO,GAIvB,IAHA,IAAIC,EACAC,IAEK,CAMP,GAAIh0O,EAAEizO,UAAYpC,EAAe,CAE/B,GADAsC,EAAYnzO,GACRA,EAAEizO,UAAYpC,GAjkBF,IAikBmBiD,EACjC,OA7egB,EA+elB,GAAoB,IAAhB9zO,EAAEizO,UACJ,MA2BJ,GApBAc,EAAY,EACR/zO,EAAEizO,WAtgBM,IAwgBVjzO,EAAE0zO,OAAU1zO,EAAE0zO,OAAS1zO,EAAE2zO,WAAc3zO,EAAEqS,OAAOrS,EAAE8xO,SAxgBxC,EAwgB+D,IAAM9xO,EAAE4zO,UACjFG,EAAY/zO,EAAEyqC,KAAKzqC,EAAE8xO,SAAW9xO,EAAE4yO,QAAU5yO,EAAE2c,KAAK3c,EAAE0zO,OACrD1zO,EAAE2c,KAAK3c,EAAE0zO,OAAS1zO,EAAE8xO,UAOJ,IAAdiC,GAA4B/zO,EAAE8xO,SAAWiC,GAAe/zO,EAAEyyO,OAAS5B,IAKrE7wO,EAAEi0O,aAAehC,EAAcjyO,EAAG+zO,IAGhC/zO,EAAEi0O,cAzhBM,EAqiBV,GAPAD,EAASxD,EAAM0D,UAAUl0O,EAAGA,EAAE8xO,SAAW9xO,EAAEkzO,YAAalzO,EAAEi0O,aA9hBhD,GAgiBVj0O,EAAEizO,WAAajzO,EAAEi0O,aAKbj0O,EAAEi0O,cAAgBj0O,EAAEm0O,gBAAuCn0O,EAAEizO,WAriBvD,EAqiB+E,CACvFjzO,EAAEi0O,eACF,GACEj0O,EAAE8xO,WAEF9xO,EAAE0zO,OAAU1zO,EAAE0zO,OAAS1zO,EAAE2zO,WAAc3zO,EAAEqS,OAAOrS,EAAE8xO,SA1iB5C,EA0iBmE,IAAM9xO,EAAE4zO,UACjFG,EAAY/zO,EAAEyqC,KAAKzqC,EAAE8xO,SAAW9xO,EAAE4yO,QAAU5yO,EAAE2c,KAAK3c,EAAE0zO,OACrD1zO,EAAE2c,KAAK3c,EAAE0zO,OAAS1zO,EAAE8xO,eAKQ,KAAnB9xO,EAAEi0O,cACbj0O,EAAE8xO,gBAGF9xO,EAAE8xO,UAAY9xO,EAAEi0O,aAChBj0O,EAAEi0O,aAAe,EACjBj0O,EAAE0zO,MAAQ1zO,EAAEqS,OAAOrS,EAAE8xO,UAErB9xO,EAAE0zO,OAAU1zO,EAAE0zO,OAAS1zO,EAAE2zO,WAAc3zO,EAAEqS,OAAOrS,EAAE8xO,SAAW,IAAM9xO,EAAE4zO,eAavEI,EAASxD,EAAM0D,UAAUl0O,EAAG,EAAGA,EAAEqS,OAAOrS,EAAE8xO,WAE1C9xO,EAAEizO,YACFjzO,EAAE8xO,WAEJ,GAAIkC,IAEFrC,EAAiB3xO,GAAG,GACK,IAArBA,EAAEixO,KAAKK,WACT,OAjkBgB,EAukBtB,OADAtxO,EAAEo5G,OAAWp5G,EAAE8xO,SAAW,EAAmB9xO,EAAE8xO,SAAWsC,EAvpBtC,IAwpBhBN,GAEFnC,EAAiB3xO,GAAG,GACK,IAArBA,EAAEixO,KAAKK,UAxkBS,EACA,GA6kBlBtxO,EAAEq0O,WAEJ1C,EAAiB3xO,GAAG,GACK,IAArBA,EAAEixO,KAAKK,WAnlBS,EACA,EA+lBxB,SAASgD,EAAat0O,EAAG8zO,GAOvB,IANA,IAAIC,EACAC,EAEAO,IAGK,CAMP,GAAIv0O,EAAEizO,UAAYpC,EAAe,CAE/B,GADAsC,EAAYnzO,GACRA,EAAEizO,UAAYpC,GApsBF,IAosBmBiD,EACjC,OAhnBgB,EAknBlB,GAAoB,IAAhB9zO,EAAEizO,UAAmB,MA0C3B,GApCAc,EAAY,EACR/zO,EAAEizO,WAvoBM,IAyoBVjzO,EAAE0zO,OAAU1zO,EAAE0zO,OAAS1zO,EAAE2zO,WAAc3zO,EAAEqS,OAAOrS,EAAE8xO,SAzoBxC,EAyoB+D,IAAM9xO,EAAE4zO,UACjFG,EAAY/zO,EAAEyqC,KAAKzqC,EAAE8xO,SAAW9xO,EAAE4yO,QAAU5yO,EAAE2c,KAAK3c,EAAE0zO,OACrD1zO,EAAE2c,KAAK3c,EAAE0zO,OAAS1zO,EAAE8xO,UAMtB9xO,EAAEuyO,YAAcvyO,EAAEi0O,aAClBj0O,EAAEw0O,WAAax0O,EAAEkzO,YACjBlzO,EAAEi0O,aAAeG,EAEC,IAAdL,GAA0B/zO,EAAEuyO,YAAcvyO,EAAEm0O,gBAC5Cn0O,EAAE8xO,SAAWiC,GAAc/zO,EAAEyyO,OAAS5B,IAKxC7wO,EAAEi0O,aAAehC,EAAcjyO,EAAG+zO,GAG9B/zO,EAAEi0O,cAAgB,IAvsBA,IAwsBlBj0O,EAAEy0O,UA/pBI,IA+pBwBz0O,EAAEi0O,cAA8Bj0O,EAAE8xO,SAAW9xO,EAAEkzO,YAAc,QAK7FlzO,EAAEi0O,aAAeG,IAMjBp0O,EAAEuyO,aA1qBM,GA0qBsBvyO,EAAEi0O,cAAgBj0O,EAAEuyO,YAAa,CACjEgC,EAAav0O,EAAE8xO,SAAW9xO,EAAEizO,UA3qBlB,EAkrBVe,EAASxD,EAAM0D,UAAUl0O,EAAGA,EAAE8xO,SAAW,EAAI9xO,EAAEw0O,WAAYx0O,EAAEuyO,YAlrBnD,GAwrBVvyO,EAAEizO,WAAajzO,EAAEuyO,YAAc,EAC/BvyO,EAAEuyO,aAAe,EACjB,KACQvyO,EAAE8xO,UAAYyC,IAElBv0O,EAAE0zO,OAAU1zO,EAAE0zO,OAAS1zO,EAAE2zO,WAAc3zO,EAAEqS,OAAOrS,EAAE8xO,SA7rB5C,EA6rBmE,IAAM9xO,EAAE4zO,UACjFG,EAAY/zO,EAAEyqC,KAAKzqC,EAAE8xO,SAAW9xO,EAAE4yO,QAAU5yO,EAAE2c,KAAK3c,EAAE0zO,OACrD1zO,EAAE2c,KAAK3c,EAAE0zO,OAAS1zO,EAAE8xO,gBAGK,KAAlB9xO,EAAEuyO,aAKb,GAJAvyO,EAAE00O,gBAAkB,EACpB10O,EAAEi0O,aAAeG,EACjBp0O,EAAE8xO,WAEEkC,IAEFrC,EAAiB3xO,GAAG,GACK,IAArBA,EAAEixO,KAAKK,WACT,OA7rBc,OAksBb,GAAItxO,EAAE00O,iBAgBX,IATAV,EAASxD,EAAM0D,UAAUl0O,EAAG,EAAGA,EAAEqS,OAAOrS,EAAE8xO,SAAW,MAInDH,EAAiB3xO,GAAG,GAGtBA,EAAE8xO,WACF9xO,EAAEizO,YACuB,IAArBjzO,EAAEixO,KAAKK,UACT,OAntBgB,OAytBlBtxO,EAAE00O,gBAAkB,EACpB10O,EAAE8xO,WACF9xO,EAAEizO,YAYN,OARIjzO,EAAE00O,kBAGJV,EAASxD,EAAM0D,UAAUl0O,EAAG,EAAGA,EAAEqS,OAAOrS,EAAE8xO,SAAW,IAErD9xO,EAAE00O,gBAAkB,GAEtB10O,EAAEo5G,OAASp5G,EAAE8xO,SAAWsC,EAAgBp0O,EAAE8xO,SAAWsC,EAvzBjC,IAwzBhBN,GAEFnC,EAAiB3xO,GAAG,GACK,IAArBA,EAAEixO,KAAKK,UAxuBS,EACA,GA6uBlBtxO,EAAEq0O,WAEJ1C,EAAiB3xO,GAAG,GACK,IAArBA,EAAEixO,KAAKK,WAnvBS,EACA,EAy5BxB,SAASqD,EAAOC,EAAaC,EAAUC,EAAaC,EAAWnuN,GAC7D7nB,KAAK61O,YAAcA,EACnB71O,KAAK81O,SAAWA,EAChB91O,KAAK+1O,YAAcA,EACnB/1O,KAAKg2O,UAAYA,EACjBh2O,KAAK6nB,KAAOA,EA+Cd,SAASouN,IACPj2O,KAAKkyO,KAAO,KACZlyO,KAAKuK,OAAS,EACdvK,KAAKwyO,YAAc,KACnBxyO,KAAKk2O,iBAAmB,EACxBl2O,KAAKyyO,YAAc,EACnBzyO,KAAKwzI,QAAU,EACfxzI,KAAKk7G,KAAO,EACZl7G,KAAKm2O,OAAS,KACdn2O,KAAKo2O,QAAU,EACfp2O,KAAK8B,OAjgCW,EAkgChB9B,KAAKq2O,YAAc,EAEnBr2O,KAAK0zO,OAAS,EACd1zO,KAAKs2O,OAAS,EACdt2O,KAAK6zO,OAAS,EAEd7zO,KAAKsT,OAAS,KAQdtT,KAAKs0O,YAAc,EAKnBt0O,KAAK0rC,KAAO,KAMZ1rC,KAAK4d,KAAO,KAEZ5d,KAAK20O,MAAQ,EACb30O,KAAKu0O,UAAY,EACjBv0O,KAAKu2O,UAAY,EACjBv2O,KAAK60O,UAAY,EAEjB70O,KAAK40O,WAAa,EAOlB50O,KAAK8yO,YAAc,EAKnB9yO,KAAKk1O,aAAe,EACpBl1O,KAAKy1O,WAAa,EAClBz1O,KAAK21O,gBAAkB,EACvB31O,KAAK+yO,SAAW,EAChB/yO,KAAKm0O,YAAc,EACnBn0O,KAAKk0O,UAAY,EAEjBl0O,KAAKwzO,YAAc,EAKnBxzO,KAAKqzO,iBAAmB,EAMxBrzO,KAAKo1O,eAAiB,EAYtBp1O,KAAKknD,MAAQ,EACblnD,KAAK01O,SAAW,EAEhB11O,KAAKi0O,WAAa,EAGlBj0O,KAAKyzO,WAAa,EAYlBzzO,KAAKw2O,UAAa,IAAI19D,EAAMq3D,MAAMsG,MAClCz2O,KAAK02O,UAAa,IAAI59D,EAAMq3D,MAAM,KAClCnwO,KAAK22O,QAAa,IAAI79D,EAAMq3D,MAAM,IAClCkC,EAAKryO,KAAKw2O,WACVnE,EAAKryO,KAAK02O,WACVrE,EAAKryO,KAAK22O,SAEV32O,KAAK42O,OAAW,KAChB52O,KAAK62O,OAAW,KAChB72O,KAAK82O,QAAW,KAGhB92O,KAAK+2O,SAAW,IAAIj+D,EAAMq3D,MAAM6G,IAIhCh3O,KAAKi3O,KAAO,IAAIn+D,EAAMq3D,MAAM,KAC5BkC,EAAKryO,KAAKi3O,MAEVj3O,KAAKk3O,SAAW,EAChBl3O,KAAKm3O,SAAW,EAKhBn3O,KAAKomD,MAAQ,IAAI0yH,EAAMq3D,MAAM,KAC7BkC,EAAKryO,KAAKomD,OAIVpmD,KAAKo3O,MAAQ,EAEbp3O,KAAKq3O,YAAc,EAoBnBr3O,KAAKs1O,SAAW,EAEhBt1O,KAAKs3O,MAAQ,EAMbt3O,KAAKu3O,QAAU,EACfv3O,KAAKw3O,WAAa,EAClBx3O,KAAKuwI,QAAU,EACfvwI,KAAKq6G,OAAS,EAGdr6G,KAAKy3O,OAAS,EAIdz3O,KAAK03O,SAAW,EAgBlB,SAASC,EAAiBzF,GACxB,IAAIjxO,EAEJ,OAAKixO,GAASA,EAAK9/M,OAInB8/M,EAAKwC,SAAWxC,EAAKS,UAAY,EACjCT,EAAK0F,UAhsCqB,GAksC1B32O,EAAIixO,EAAK9/M,OACPohH,QAAU,EACZvyI,EAAEwxO,YAAc,EAEZxxO,EAAEi6G,KAAO,IACXj6G,EAAEi6G,MAAQj6G,EAAEi6G,MAGdj6G,EAAEsJ,OAAUtJ,EAAEi6G,KArqCC,GAqqCmB82H,EAClCE,EAAKhB,MAAoB,IAAXjwO,EAAEi6G,KACd,EAEA,EACFj6G,EAAEo1O,WAvvCkB,EAwvCpB5E,EAAMoG,SAAS52O,GA5uCK,GAwtCXiG,EAAIgrO,EAAMN,GAyBrB,SAASkG,EAAa5F,GACpB,IAlPejxO,EAkPXq/F,EAAMq3I,EAAiBzF,GAI3B,OAtvCoB,IAmvChB5xI,KAnPWr/F,EAoPLixO,EAAK9/M,OAnPbkiN,YAAc,EAAIrzO,EAAEyyO,OAGtBrB,EAAKpxO,EAAE2c,MAIP3c,EAAEm0O,eAAiB5D,EAAoBvwO,EAAEimD,OAAO4uL,SAChD70O,EAAEgzO,WAAazC,EAAoBvwO,EAAEimD,OAAO2uL,YAC5C50O,EAAEwyO,WAAajC,EAAoBvwO,EAAEimD,OAAO6uL,YAC5C90O,EAAEoyO,iBAAmB7B,EAAoBvwO,EAAEimD,OAAO8uL,UAElD/0O,EAAE8xO,SAAW,EACb9xO,EAAE6xO,YAAc,EAChB7xO,EAAEizO,UAAY,EACdjzO,EAAEo5G,OAAS,EACXp5G,EAAEi0O,aAAej0O,EAAEuyO,YAAc6B,EACjCp0O,EAAE00O,gBAAkB,EACpB10O,EAAE0zO,MAAQ,GAmOHr0I,EAYT,SAASy3I,EAAa7F,EAAMhrL,EAAOplD,EAAQk2O,EAAYC,EAAUvC,GAC/D,IAAKxD,EACH,OAAON,EAET,IAAI12H,EAAO,EAiBX,IAxwC0B,IAyvCtBh0D,IACFA,EAAQ,GAGN8wL,EAAa,GACf98H,EAAO,EACP88H,GAAcA,GAGPA,EAAa,KACpB98H,EAAO,EACP88H,GAAc,IAIZC,EAAW,GAAKA,EAlvCF,GALF,IAuvCgCn2O,GAC9Ck2O,EAAa,GAAKA,EAAa,IAAM9wL,EAAQ,GAAKA,EAAQ,GAC1DwuL,EAAW,GAAKA,EApwCQ,EAqwCxB,OAAOxuO,EAAIgrO,EAAMN,GAIA,IAAfoG,IACFA,EAAa,GAIf,IAAI/2O,EAAI,IAAIg1O,EA0CZ,OAxCA/D,EAAK9/M,MAAQnxB,EACbA,EAAEixO,KAAOA,EAETjxO,EAAEi6G,KAAOA,EACTj6G,EAAEk1O,OAAS,KACXl1O,EAAEq1O,OAAS0B,EACX/2O,EAAEyyO,OAAS,GAAKzyO,EAAEq1O,OAClBr1O,EAAE4yO,OAAS5yO,EAAEyyO,OAAS,EAEtBzyO,EAAEs1O,UAAY0B,EAAW,EACzBh3O,EAAEszO,UAAY,GAAKtzO,EAAEs1O,UACrBt1O,EAAE4zO,UAAY5zO,EAAEszO,UAAY,EAC5BtzO,EAAE2zO,eAAiB3zO,EAAEs1O,UAtvCP,EAsvC+B,GAtvC/B,GAwvCdt1O,EAAEqS,OAAS,IAAIwlK,EAAMo3D,KAAgB,EAAXjvO,EAAEyyO,QAC5BzyO,EAAE2c,KAAO,IAAIk7J,EAAMq3D,MAAMlvO,EAAEszO,WAC3BtzO,EAAEyqC,KAAO,IAAIotI,EAAMq3D,MAAMlvO,EAAEyyO,QAK3BzyO,EAAEo2O,YAAc,GAAMY,EAAW,EAEjCh3O,EAAEi1O,iBAAmC,EAAhBj1O,EAAEo2O,YAIvBp2O,EAAEuxO,YAAc,IAAI15D,EAAMo3D,KAAKjvO,EAAEi1O,kBAIjCj1O,EAAEq2O,MAAQ,EAAIr2O,EAAEo2O,YAGhBp2O,EAAEm2O,MAAQ,EAAUn2O,EAAEo2O,YAEtBp2O,EAAEimD,MAAQA,EACVjmD,EAAEy0O,SAAWA,EACbz0O,EAAEa,OAASA,EAEJg2O,EAAa5F,GAhWtBV,EAAsB,CAEpB,IAAIoE,EAAO,EAAG,EAAG,EAAG,GAxiBtB,SAAwB30O,EAAG8zO,GAIzB,IAAImD,EAAiB,MAOrB,IALIA,EAAiBj3O,EAAEi1O,iBAAmB,IACxCgC,EAAiBj3O,EAAEi1O,iBAAmB,KAI/B,CAEP,GAAIj1O,EAAEizO,WAAa,EAAG,CAUpB,GADAE,EAAYnzO,GACQ,IAAhBA,EAAEizO,WA1eU,IA0eSa,EACvB,OAtZgB,EAyZlB,GAAoB,IAAhB9zO,EAAEizO,UACJ,MAOJjzO,EAAE8xO,UAAY9xO,EAAEizO,UAChBjzO,EAAEizO,UAAY,EAGd,IAAIiE,EAAYl3O,EAAE6xO,YAAcoF,EAEhC,IAAmB,IAAfj3O,EAAE8xO,UAAkB9xO,EAAE8xO,UAAYoF,KAEpCl3O,EAAEizO,UAAYjzO,EAAE8xO,SAAWoF,EAC3Bl3O,EAAE8xO,SAAWoF,EAEbvF,EAAiB3xO,GAAG,GACK,IAArBA,EAAEixO,KAAKK,WACT,OA9agB,EAubpB,GAAItxO,EAAE8xO,SAAW9xO,EAAE6xO,aAAgB7xO,EAAEyyO,OAAS5B,IAE5Cc,EAAiB3xO,GAAG,GACK,IAArBA,EAAEixO,KAAKK,WACT,OA3bgB,EAmctB,OAFAtxO,EAAEo5G,OAAS,EAlhBS,IAohBhB06H,GAEFnC,EAAiB3xO,GAAG,GACK,IAArBA,EAAEixO,KAAKK,UApcS,EACA,IA0clBtxO,EAAE8xO,SAAW9xO,EAAE6xO,cAEjBF,EAAiB3xO,GAAG,GAChBA,EAAEixO,KAAKK,WAhdS,MAu6BtB,IAAIqD,EAAO,EAAG,EAAG,EAAG,EAAGd,GACvB,IAAIc,EAAO,EAAG,EAAG,GAAI,EAAGd,GACxB,IAAIc,EAAO,EAAG,EAAG,GAAI,GAAId,GAEzB,IAAIc,EAAO,EAAG,EAAG,GAAI,GAAIL,GACzB,IAAIK,EAAO,EAAG,GAAI,GAAI,GAAIL,GAC1B,IAAIK,EAAO,EAAG,GAAI,IAAK,IAAKL,GAC5B,IAAIK,EAAO,EAAG,GAAI,IAAK,IAAKL,GAC5B,IAAIK,EAAO,GAAI,IAAK,IAAK,KAAML,GAC/B,IAAIK,EAAO,GAAI,IAAK,IAAK,KAAML,IA2xBjCx8N,EAAQq/N,YApcR,SAAqBlG,EAAMhrL,GACzB,OAAO6wL,EAAa7F,EAAMhrL,EAjzCV,EAOF,GAEI,EAnBQ,IA+vD5BnuC,EAAQg/N,aAAeA,EACvBh/N,EAAQ++N,aAAeA,EACvB/+N,EAAQ4+N,iBAAmBA,EAC3B5+N,EAAQs/N,iBA9hBR,SAA0BnG,EAAMt0N,GAC9B,OAAKs0N,GAASA,EAAK9/M,MACK,IAApB8/M,EAAK9/M,MAAM8oF,KAAqB02H,GACpCM,EAAK9/M,MAAM+jN,OAASv4N,EA7vCA,GA2vCeg0N,GA8hBrC74N,EAAQ0mH,QApcR,SAAiByyG,EAAM6C,GACrB,IAAIuD,EAAWr3O,EACXs3O,EAAK91O,EAET,IAAKyvO,IAASA,EAAK9/M,OACjB2iN,EAj2CkB,GAi2CCA,EAAQ,EAC3B,OAAO7C,EAAOhrO,EAAIgrO,EAAMN,GAAkBA,EAK5C,GAFA3wO,EAAIixO,EAAK9/M,OAEJ8/M,EAAKpnO,SACJonO,EAAKjnO,OAA2B,IAAlBinO,EAAKsC,UACpBvzO,EAAEsJ,SAAW0nO,GA12CE,IA02Cc8C,EAChC,OAAO7tO,EAAIgrO,EAA0B,IAAnBA,EAAKK,WA51CL,EA41CsCX,GAQ1D,GALA3wO,EAAEixO,KAAOA,EACToG,EAAYr3O,EAAEo1O,WACdp1O,EAAEo1O,WAAatB,EAvyCA,KA0yCX9zO,EAAEsJ,OAEJ,GAAe,IAAXtJ,EAAEi6G,KACJg3H,EAAKhB,MAAQ,EACb8B,EAAS/xO,EAAG,IACZ+xO,EAAS/xO,EAAG,KACZ+xO,EAAS/xO,EAAG,GACPA,EAAEk1O,QAaLnD,EAAS/xO,GAAIA,EAAEk1O,OAAO5vM,KAAO,EAAI,IACpBtlC,EAAEk1O,OAAOqC,KAAO,EAAI,IACnBv3O,EAAEk1O,OAAO1wN,MAAY,EAAJ,IACjBxkB,EAAEk1O,OAAOzzO,KAAW,EAAJ,IAChBzB,EAAEk1O,OAAO5mG,QAAc,GAAJ,IAEjCyjG,EAAS/xO,EAAmB,IAAhBA,EAAEk1O,OAAO/2K,MACrB4zK,EAAS/xO,EAAIA,EAAEk1O,OAAO/2K,MAAQ,EAAK,KACnC4zK,EAAS/xO,EAAIA,EAAEk1O,OAAO/2K,MAAQ,GAAM,KACpC4zK,EAAS/xO,EAAIA,EAAEk1O,OAAO/2K,MAAQ,GAAM,KACpC4zK,EAAS/xO,EAAe,IAAZA,EAAEimD,MAAc,EACfjmD,EAAEy0O,UAv3CK,GAu3CyBz0O,EAAEimD,MAAQ,EAC1C,EAAI,GACjB8rL,EAAS/xO,EAAiB,IAAdA,EAAEk1O,OAAOsC,IACjBx3O,EAAEk1O,OAAO1wN,OAASxkB,EAAEk1O,OAAO1wN,MAAMpkB,SACnC2xO,EAAS/xO,EAA2B,IAAxBA,EAAEk1O,OAAO1wN,MAAMpkB,QAC3B2xO,EAAS/xO,EAAIA,EAAEk1O,OAAO1wN,MAAMpkB,QAAU,EAAK,MAEzCJ,EAAEk1O,OAAOqC,OACXtG,EAAKhB,MAAQS,EAAMO,EAAKhB,MAAOjwO,EAAEuxO,YAAavxO,EAAEuyI,QAAS,IAE3DvyI,EAAEm1O,QAAU,EACZn1O,EAAEsJ,OAn1CQ,KAizCVyoO,EAAS/xO,EAAG,GACZ+xO,EAAS/xO,EAAG,GACZ+xO,EAAS/xO,EAAG,GACZ+xO,EAAS/xO,EAAG,GACZ+xO,EAAS/xO,EAAG,GACZ+xO,EAAS/xO,EAAe,IAAZA,EAAEimD,MAAc,EACfjmD,EAAEy0O,UAt2CK,GAs2CyBz0O,EAAEimD,MAAQ,EAC1C,EAAI,GACjB8rL,EAAS/xO,EA7yCH,GA8yCNA,EAAEsJ,OAASynO,OA6Bf,CACE,IAAI3nO,EA13CQ,GA03CiBpJ,EAAEq1O,OAAS,GAAM,IAAO,EAYrDjsO,IATIpJ,EAAEy0O,UA14CgB,GA04Ccz0O,EAAEimD,MAAQ,EAC9B,EACLjmD,EAAEimD,MAAQ,EACL,EACO,IAAZjmD,EAAEimD,MACG,EAEA,IAEU,EACP,IAAfjmD,EAAE8xO,WAAkB1oO,GAx2CZ,IAy2CZA,GAAU,GAAMA,EAAS,GAEzBpJ,EAAEsJ,OAASynO,EACXiB,EAAYhyO,EAAGoJ,GAGI,IAAfpJ,EAAE8xO,WACJE,EAAYhyO,EAAGixO,EAAKhB,QAAU,IAC9B+B,EAAYhyO,EAAgB,MAAbixO,EAAKhB,QAEtBgB,EAAKhB,MAAQ,EAKjB,GAr3CgB,KAq3CZjwO,EAAEsJ,OACJ,GAAItJ,EAAEk1O,OAAO1wN,MAAqB,CAGhC,IAFA8yN,EAAMt3O,EAAEuyI,QAEDvyI,EAAEm1O,SAAmC,MAAxBn1O,EAAEk1O,OAAO1wN,MAAMpkB,UAC7BJ,EAAEuyI,UAAYvyI,EAAEi1O,mBACdj1O,EAAEk1O,OAAOqC,MAAQv3O,EAAEuyI,QAAU+kG,IAC/BrG,EAAKhB,MAAQS,EAAMO,EAAKhB,MAAOjwO,EAAEuxO,YAAavxO,EAAEuyI,QAAU+kG,EAAKA,IAEjEjG,EAAcJ,GACdqG,EAAMt3O,EAAEuyI,QACJvyI,EAAEuyI,UAAYvyI,EAAEi1O,oBAItBlD,EAAS/xO,EAA+B,IAA5BA,EAAEk1O,OAAO1wN,MAAMxkB,EAAEm1O,UAC7Bn1O,EAAEm1O,UAEAn1O,EAAEk1O,OAAOqC,MAAQv3O,EAAEuyI,QAAU+kG,IAC/BrG,EAAKhB,MAAQS,EAAMO,EAAKhB,MAAOjwO,EAAEuxO,YAAavxO,EAAEuyI,QAAU+kG,EAAKA,IAE7Dt3O,EAAEm1O,UAAYn1O,EAAEk1O,OAAO1wN,MAAMpkB,SAC/BJ,EAAEm1O,QAAU,EACZn1O,EAAEsJ,OA34CO,SA+4CXtJ,EAAEsJ,OA/4CS,GAk5Cf,GAl5Ce,KAk5CXtJ,EAAEsJ,OACJ,GAAItJ,EAAEk1O,OAAOzzO,KAAoB,CAC/B61O,EAAMt3O,EAAEuyI,QAGR,EAAG,CACD,GAAIvyI,EAAEuyI,UAAYvyI,EAAEi1O,mBACdj1O,EAAEk1O,OAAOqC,MAAQv3O,EAAEuyI,QAAU+kG,IAC/BrG,EAAKhB,MAAQS,EAAMO,EAAKhB,MAAOjwO,EAAEuxO,YAAavxO,EAAEuyI,QAAU+kG,EAAKA,IAEjEjG,EAAcJ,GACdqG,EAAMt3O,EAAEuyI,QACJvyI,EAAEuyI,UAAYvyI,EAAEi1O,kBAAkB,CACpCzzO,EAAM,EACN,MAKFA,EADExB,EAAEm1O,QAAUn1O,EAAEk1O,OAAOzzO,KAAKrB,OACkB,IAAxCJ,EAAEk1O,OAAOzzO,KAAKuiG,WAAWhkG,EAAEm1O,WAE3B,EAERpD,EAAS/xO,EAAGwB,SACG,IAARA,GAELxB,EAAEk1O,OAAOqC,MAAQv3O,EAAEuyI,QAAU+kG,IAC/BrG,EAAKhB,MAAQS,EAAMO,EAAKhB,MAAOjwO,EAAEuxO,YAAavxO,EAAEuyI,QAAU+kG,EAAKA,IAErD,IAAR91O,IACFxB,EAAEm1O,QAAU,EACZn1O,EAAEsJ,OAh7CU,SAo7CdtJ,EAAEsJ,OAp7CY,GAu7ClB,GAv7CkB,KAu7CdtJ,EAAEsJ,OACJ,GAAItJ,EAAEk1O,OAAO5mG,QAAuB,CAClCgpG,EAAMt3O,EAAEuyI,QAGR,EAAG,CACD,GAAIvyI,EAAEuyI,UAAYvyI,EAAEi1O,mBACdj1O,EAAEk1O,OAAOqC,MAAQv3O,EAAEuyI,QAAU+kG,IAC/BrG,EAAKhB,MAAQS,EAAMO,EAAKhB,MAAOjwO,EAAEuxO,YAAavxO,EAAEuyI,QAAU+kG,EAAKA,IAEjEjG,EAAcJ,GACdqG,EAAMt3O,EAAEuyI,QACJvyI,EAAEuyI,UAAYvyI,EAAEi1O,kBAAkB,CACpCzzO,EAAM,EACN,MAKFA,EADExB,EAAEm1O,QAAUn1O,EAAEk1O,OAAO5mG,QAAQluI,OACkB,IAA3CJ,EAAEk1O,OAAO5mG,QAAQtqC,WAAWhkG,EAAEm1O,WAE9B,EAERpD,EAAS/xO,EAAGwB,SACG,IAARA,GAELxB,EAAEk1O,OAAOqC,MAAQv3O,EAAEuyI,QAAU+kG,IAC/BrG,EAAKhB,MAAQS,EAAMO,EAAKhB,MAAOjwO,EAAEuxO,YAAavxO,EAAEuyI,QAAU+kG,EAAKA,IAErD,IAAR91O,IACFxB,EAAEsJ,OAASwnO,QAIb9wO,EAAEsJ,OAASwnO,EAsBf,GAnBI9wO,EAAEsJ,SAAWwnO,IACX9wO,EAAEk1O,OAAOqC,MACPv3O,EAAEuyI,QAAU,EAAIvyI,EAAEi1O,kBACpB5D,EAAcJ,GAEZjxO,EAAEuyI,QAAU,GAAKvyI,EAAEi1O,mBACrBlD,EAAS/xO,EAAgB,IAAbixO,EAAKhB,OACjB8B,EAAS/xO,EAAIixO,EAAKhB,OAAS,EAAK,KAChCgB,EAAKhB,MAAQ,EACbjwO,EAAEsJ,OAASynO,IAIb/wO,EAAEsJ,OAASynO,GAMG,IAAd/wO,EAAEuyI,SAEJ,GADA8+F,EAAcJ,GACS,IAAnBA,EAAKK,UAQP,OADAtxO,EAAEo1O,YAAc,EA5jDA,OAokDb,GAAsB,IAAlBnE,EAAKsC,UAAkBpC,EAAK2C,IAAU3C,EAAKkG,IA5kDlC,IA6kDlBvD,EACA,OAAO7tO,EAAIgrO,GA/jDO,GAmkDpB,GAAIjxO,EAAEsJ,SAAW0nO,GAAkC,IAAlBC,EAAKsC,SACpC,OAAOttO,EAAIgrO,GApkDO,GAykDpB,GAAsB,IAAlBA,EAAKsC,UAAkC,IAAhBvzO,EAAEizO,WA5lDT,IA6lDjBa,GAAwB9zO,EAAEsJ,SAAW0nO,EAAe,CACrD,IAAIyG,EA/jDoB,IA+jDVz3O,EAAEy0O,SAxqBpB,SAAsBz0O,EAAG8zO,GAGvB,IAFA,IAAIE,IAEK,CAEP,GAAoB,IAAhBh0O,EAAEizO,YACJE,EAAYnzO,GACQ,IAAhBA,EAAEizO,WAAiB,CACrB,GA97Bc,IA87BVa,EACF,OA12Bc,EA42BhB,MAWJ,GANA9zO,EAAEi0O,aAAe,EAGjBD,EAASxD,EAAM0D,UAAUl0O,EAAG,EAAGA,EAAEqS,OAAOrS,EAAE8xO,WAC1C9xO,EAAEizO,YACFjzO,EAAE8xO,WACEkC,IAEFrC,EAAiB3xO,GAAG,GACK,IAArBA,EAAEixO,KAAKK,WACT,OA33BgB,EAi4BtB,OADAtxO,EAAEo5G,OAAS,EAj9BS,IAk9BhB06H,GAEFnC,EAAiB3xO,GAAG,GACK,IAArBA,EAAEixO,KAAKK,UAl4BS,EACA,GAu4BlBtxO,EAAEq0O,WAEJ1C,EAAiB3xO,GAAG,GACK,IAArBA,EAAEixO,KAAKK,WA74BS,EACA,EAwgD2BoG,CAAa13O,EAAG8zO,GA9jDvC,IA+jDrB9zO,EAAEy0O,SAxwBT,SAAqBz0O,EAAG8zO,GAOtB,IANA,IAAIE,EACAvpM,EACA4nM,EAAMQ,EAENH,EAAO1yO,EAAEqS,SAEJ,CAKP,GAAIrS,EAAEizO,WAAarC,EAAW,CAE5B,GADAuC,EAAYnzO,GACRA,EAAEizO,WAAarC,GAr2BH,IAq2BgBkD,EAC9B,OAjxBgB,EAmxBlB,GAAoB,IAAhB9zO,EAAEizO,UAAmB,MAK3B,GADAjzO,EAAEi0O,aAAe,EACbj0O,EAAEizO,WAtyBM,GAsyBoBjzO,EAAE8xO,SAAW,IAE3CrnM,EAAOioM,EADPL,EAAOryO,EAAE8xO,SAAW,MAEPY,IAAOL,IAAS5nM,IAASioM,IAAOL,IAAS5nM,IAASioM,IAAOL,GAAO,CAC3EQ,EAAS7yO,EAAE8xO,SAAWlB,EACtB,UAESnmM,IAASioM,IAAOL,IAAS5nM,IAASioM,IAAOL,IACzC5nM,IAASioM,IAAOL,IAAS5nM,IAASioM,IAAOL,IACzC5nM,IAASioM,IAAOL,IAAS5nM,IAASioM,IAAOL,IACzC5nM,IAASioM,IAAOL,IAAS5nM,IAASioM,IAAOL,IACzCA,EAAOQ,GAChB7yO,EAAEi0O,aAAerD,GAAaiC,EAASR,GACnCryO,EAAEi0O,aAAej0O,EAAEizO,YACrBjzO,EAAEi0O,aAAej0O,EAAEizO,WAyBzB,GAlBIjzO,EAAEi0O,cA3zBM,GA+zBVD,EAASxD,EAAM0D,UAAUl0O,EAAG,EAAGA,EAAEi0O,aA/zBvB,GAi0BVj0O,EAAEizO,WAAajzO,EAAEi0O,aACjBj0O,EAAE8xO,UAAY9xO,EAAEi0O,aAChBj0O,EAAEi0O,aAAe,IAKjBD,EAASxD,EAAM0D,UAAUl0O,EAAG,EAAGA,EAAEqS,OAAOrS,EAAE8xO,WAE1C9xO,EAAEizO,YACFjzO,EAAE8xO,YAEAkC,IAEFrC,EAAiB3xO,GAAG,GACK,IAArBA,EAAEixO,KAAKK,WACT,OAn0BgB,EAy0BtB,OADAtxO,EAAEo5G,OAAS,EAz5BS,IA05BhB06H,GAEFnC,EAAiB3xO,GAAG,GACK,IAArBA,EAAEixO,KAAKK,UA10BS,EACA,GA+0BlBtxO,EAAEq0O,WAEJ1C,EAAiB3xO,GAAG,GACK,IAArBA,EAAEixO,KAAKK,WAr1BS,EACA,EAygDMqG,CAAY33O,EAAG8zO,GACrCvD,EAAoBvwO,EAAEimD,OAAOr/B,KAAK5mB,EAAG8zO,GAKzC,GA9gDoB,IA2gDhB2D,GA1gDgB,IA0gDgBA,IAClCz3O,EAAEsJ,OAAS0nO,GA9gDO,IAghDhByG,GA9gDgB,IA8gDWA,EAK7B,OAJuB,IAAnBxG,EAAKK,YACPtxO,EAAEo1O,YAAc,GA3lDF,EAumDlB,GA7hDoB,IA6hDhBqC,IAlnDc,IAmnDZ3D,EACFtD,EAAMoH,UAAU53O,GAhnDF,IAknDP8zO,IAEPtD,EAAMqH,iBAAiB73O,EAAG,EAAG,GAAG,GAtnDlB,IA0nDV8zO,IAEF1C,EAAKpxO,EAAE2c,MAEa,IAAhB3c,EAAEizO,YACJjzO,EAAE8xO,SAAW,EACb9xO,EAAE6xO,YAAc,EAChB7xO,EAAEo5G,OAAS,KAIjBi4H,EAAcJ,GACS,IAAnBA,EAAKK,WAEP,OADAtxO,EAAEo1O,YAAc,EA9nDF,EAsoDpB,OA9oDoB,IA8oDhBtB,EAtoDgB,EAuoDhB9zO,EAAEi6G,MAAQ,EAtoDM,GAyoDL,IAAXj6G,EAAEi6G,MACJ83H,EAAS/xO,EAAgB,IAAbixO,EAAKhB,OACjB8B,EAAS/xO,EAAIixO,EAAKhB,OAAS,EAAK,KAChC8B,EAAS/xO,EAAIixO,EAAKhB,OAAS,GAAM,KACjC8B,EAAS/xO,EAAIixO,EAAKhB,OAAS,GAAM,KACjC8B,EAAS/xO,EAAmB,IAAhBixO,EAAKwC,UACjB1B,EAAS/xO,EAAIixO,EAAKwC,UAAY,EAAK,KACnC1B,EAAS/xO,EAAIixO,EAAKwC,UAAY,GAAM,KACpC1B,EAAS/xO,EAAIixO,EAAKwC,UAAY,GAAM,OAIpCzB,EAAYhyO,EAAGixO,EAAKhB,QAAU,IAC9B+B,EAAYhyO,EAAgB,MAAbixO,EAAKhB,QAGtBoB,EAAcJ,GAIVjxO,EAAEi6G,KAAO,IAAKj6G,EAAEi6G,MAAQj6G,EAAEi6G,MAET,IAAdj6G,EAAEuyI,QAhqDW,EACA,IAyxDtBz6H,EAAQggO,WAvHR,SAAoB7G,GAClB,IAAI3nO,EAEJ,OAAK2nO,GAAsBA,EAAK9/M,MArmDjB,MAymDf7nB,EAAS2nO,EAAK9/M,MAAM7nB,SAxmDJ,KA0mDdA,GAzmDa,KA0mDbA,GAzmDgB,KA0mDhBA,GACAA,IAAWwnO,GACXxnO,IAAWynO,GACXznO,IAAW0nO,EAEJ/qO,EAAIgrO,EAAMN,IAGnBM,EAAK9/M,MAAQ,KAEN7nB,IAAWynO,EAAa9qO,EAAIgrO,GAnrDf,GALA,GAuqDXN,GAoHX74N,EAAQigO,qBA3FR,SAA8B9G,EAAM+G,GAClC,IAEIh4O,EACAoC,EAAKlC,EACL+5G,EACAg+H,EACA/zO,EACA8F,EACAkuO,EARAC,EAAaH,EAAW53O,OAU5B,IAAK6wO,IAAsBA,EAAK9/M,MAC9B,OAAOw/M,EAMT,GAAa,KAFb12H,GADAj6G,EAAIixO,EAAK9/M,OACA8oF,OAEmB,IAATA,GAjpDJ,KAipDkBj6G,EAAEsJ,QAA0BtJ,EAAEizO,UAC7D,OAAOtC,EAmCT,IA/Ba,IAAT12H,IAEFg3H,EAAKhB,MAAQQ,EAAQQ,EAAKhB,MAAO+H,EAAYG,EAAY,IAG3Dn4O,EAAEi6G,KAAO,EAGLk+H,GAAcn4O,EAAEyyO,SACL,IAATx4H,IAEFm3H,EAAKpxO,EAAE2c,MACP3c,EAAE8xO,SAAW,EACb9xO,EAAE6xO,YAAc,EAChB7xO,EAAEo5G,OAAS,GAIb8+H,EAAU,IAAIrgE,EAAMo3D,KAAKjvO,EAAEyyO,QAC3B56D,EAAM62D,SAASwJ,EAASF,EAAYG,EAAan4O,EAAEyyO,OAAQzyO,EAAEyyO,OAAQ,GACrEuF,EAAaE,EACbC,EAAan4O,EAAEyyO,QAGjBwF,EAAQhH,EAAKsC,SACbrvO,EAAO+sO,EAAKuC,QACZxpO,EAAQinO,EAAKjnO,MACbinO,EAAKsC,SAAW4E,EAChBlH,EAAKuC,QAAU,EACfvC,EAAKjnO,MAAQguO,EACb7E,EAAYnzO,GACLA,EAAEizO,WA3rDK,GA2rDmB,CAC/B7wO,EAAMpC,EAAE8xO,SACR5xO,EAAIF,EAAEizO,UAAY,EAClB,GAEEjzO,EAAE0zO,OAAU1zO,EAAE0zO,OAAS1zO,EAAE2zO,WAAc3zO,EAAEqS,OAAOjQ,EAhsDtC,EAgsDwD,IAAMpC,EAAE4zO,UAE1E5zO,EAAEyqC,KAAKroC,EAAMpC,EAAE4yO,QAAU5yO,EAAE2c,KAAK3c,EAAE0zO,OAElC1zO,EAAE2c,KAAK3c,EAAE0zO,OAAStxO,EAClBA,YACSlC,GACXF,EAAE8xO,SAAW1vO,EACbpC,EAAEizO,UAAYmB,EACdjB,EAAYnzO,GAYd,OAVAA,EAAE8xO,UAAY9xO,EAAEizO,UAChBjzO,EAAE6xO,YAAc7xO,EAAE8xO,SAClB9xO,EAAEo5G,OAASp5G,EAAEizO,UACbjzO,EAAEizO,UAAY,EACdjzO,EAAEi0O,aAAej0O,EAAEuyO,YAAc6B,EACjCp0O,EAAE00O,gBAAkB,EACpBzD,EAAKuC,QAAUtvO,EACf+sO,EAAKjnO,MAAQA,EACbinO,EAAKsC,SAAW0E,EAChBj4O,EAAEi6G,KAAOA,EA/wDW,GA4xDtBniG,EAAQsgO,YAAc,sCAWpB,CAAC,kBAAkB,EAAE,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,UAAU,IAAI,EAAE,CAAC,SAASlK,EAAQr2N,EAAOC,GACzG,aAqBAD,EAAOC,QAAU,CACf,EAAQ,kBACR,EAAQ,aACR,EAAQ,GACR,KAAQ,aACR,KAAQ,eACR,KAAQ,aACR,KAAQ,sBACR,KAAQ,eACR,KAAQ,yBAGR,IAAI,EAAE,CAAC,SAASo2N,EAAQr2N,EAAOC,GACjC,aAqBA,IAAI+/J,EAAQq2D,EAAQ,mBAqBpB,SAASkD,EAAK7C,GAA6B,IAAtB,IAAIv+G,EAAMu+G,EAAInuO,SAAiB4vH,GAAO,GAAKu+G,EAAIv+G,GAAO,EAI3E,IAiBIqoH,EAAgB,IAGhBC,EAAgBD,IAGhBE,EAAgB,GAShBxC,EAAgB,GA2BhByC,EACF,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,GAEvDC,EACF,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAEhEC,EACF,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAEnCC,EACF,CAAC,GAAG,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAgB3CC,EAAgB,IAAIn6O,MAAM,KAC9B2yO,EAAKwH,GAOL,IAAIC,EAAgB,IAAIp6O,MAAM85O,IAC9BnH,EAAKyH,GAKL,IAAIC,EAAgB,IAAIr6O,MAjBJ,KAkBpB2yO,EAAK0H,GAML,IAAIC,EAAgB,IAAIt6O,MAAMmyO,KAC9BQ,EAAK2H,GAGL,IAAIC,EAAgB,IAAIv6O,MAhGJ,IAiGpB2yO,EAAK4H,GAGL,IAkBIC,EACAC,EACAC,EApBAC,EAAgB,IAAI36O,MAAM85O,GAK9B,SAASc,EAAeC,EAAaC,EAAYC,EAAYj1B,EAAOk1B,GAElE16O,KAAKu6O,YAAeA,EACpBv6O,KAAKw6O,WAAeA,EACpBx6O,KAAKy6O,WAAeA,EACpBz6O,KAAKwlN,MAAeA,EACpBxlN,KAAK06O,WAAeA,EAGpB16O,KAAK26O,UAAeJ,GAAeA,EAAYl5O,OASjD,SAASu5O,EAASC,EAAUC,GAC1B96O,KAAK66O,SAAWA,EAChB76O,KAAK+6O,SAAW,EAChB/6O,KAAK86O,UAAYA,EAKnB,SAASE,EAAOC,GACd,OAAOA,EAAO,IAAMlB,EAAWkB,GAAQlB,EAAW,KAAOkB,IAAS,IAQpE,SAASC,EAAUj6O,EAAG4e,GAGpB5e,EAAEuxO,YAAYvxO,EAAEuyI,WAAmB,IAAN,EAC7BvyI,EAAEuxO,YAAYvxO,EAAEuyI,WAAc3zH,IAAM,EAAK,IAQ3C,SAASs7N,EAAUl6O,EAAG0E,EAAOtE,GACvBJ,EAAEy2O,SApIY,GAoIWr2O,GAC3BJ,EAAEw2O,QAAW9xO,GAAS1E,EAAEy2O,SAAY,MACpCwD,EAAUj6O,EAAGA,EAAEw2O,QACfx2O,EAAEw2O,OAAS9xO,GAvIK,GAuIgB1E,EAAEy2O,SAClCz2O,EAAEy2O,UAAYr2O,EAxIE,KA0IhBJ,EAAEw2O,QAAW9xO,GAAS1E,EAAEy2O,SAAY,MACpCz2O,EAAEy2O,UAAYr2O,GAKlB,SAAS+5O,EAAUn6O,EAAGqQ,EAAG+pO,GACvBF,EAAUl6O,EAAGo6O,EAAS,EAAJ/pO,GAAiB+pO,EAAS,EAAJ/pO,EAAQ,IASlD,SAASgqO,EAAW3xO,EAAMsnH,GACxB,IAAIsqH,EAAM,EACV,GACEA,GAAc,EAAP5xO,EACPA,KAAU,EACV4xO,IAAQ,UACCtqH,EAAM,GACjB,OAAOsqH,IAAQ,EAgIjB,SAASC,EAAUH,EAAMN,EAAUhE,GAKjC,IAEI0E,EACAt6O,EAHAu6O,EAAY,IAAIh8O,MAAMs3O,IACtBrtO,EAAO,EAOX,IAAK8xO,EAAO,EAAGA,GAAQzE,EAAUyE,IAC/BC,EAAUD,GAAQ9xO,EAAQA,EAAOotO,EAAS0E,EAAO,IAAO,EAS1D,IAAKt6O,EAAI,EAAIA,GAAK45O,EAAU55O,IAAK,CAC/B,IAAI8vH,EAAMoqH,EAAS,EAAJl6O,EAAQ,GACX,IAAR8vH,IAEJoqH,EAAS,EAAJl6O,GAAkBm6O,EAAWI,EAAUzqH,KAAQA,KAmHxD,SAAS0qH,EAAW16O,GAClB,IAAIE,EAGJ,IAAKA,EAAI,EAAGA,EAAIo4O,EAAUp4O,IAAOF,EAAEu1O,UAAc,EAAJr1O,GAAkB,EAC/D,IAAKA,EAAI,EAAGA,EAAIq4O,EAAUr4O,IAAOF,EAAEy1O,UAAc,EAAJv1O,GAAkB,EAC/D,IAAKA,EAAI,EAAGA,EA9bM,GA8bQA,IAAOF,EAAE01O,QAAY,EAAJx1O,GAAkB,EAE7DF,EAAEu1O,UAAUoF,KAA0B,EACtC36O,EAAEs2O,QAAUt2O,EAAEu2O,WAAa,EAC3Bv2O,EAAEq0O,SAAWr0O,EAAEsvI,QAAU,EAO3B,SAASsrG,EAAU56O,GAEbA,EAAEy2O,SAAW,EACfwD,EAAUj6O,EAAGA,EAAEw2O,QACNx2O,EAAEy2O,SAAW,IAEtBz2O,EAAEuxO,YAAYvxO,EAAEuyI,WAAavyI,EAAEw2O,QAEjCx2O,EAAEw2O,OAAS,EACXx2O,EAAEy2O,SAAW,EA8Bf,SAASoE,EAAQT,EAAMl6O,EAAGiQ,EAAGg1C,GAC3B,IAAI21L,EAAU,EAAJ56O,EACN66O,EAAU,EAAJ5qO,EACV,OAAQiqO,EAAKU,GAAgBV,EAAKW,IAC1BX,EAAKU,KAAkBV,EAAKW,IAAiB51L,EAAMjlD,IAAMilD,EAAMh1C,GASzE,SAAS6qO,EAAWh7O,EAAGo6O,EAAM3mK,GAO3B,IAFA,IAAInvE,EAAItE,EAAEg2O,KAAKviK,GACX7H,EAAI6H,GAAK,EACN7H,GAAK5rE,EAAEi2O,WAERrqK,EAAI5rE,EAAEi2O,UACR4E,EAAQT,EAAMp6O,EAAEg2O,KAAKpqK,EAAI,GAAI5rE,EAAEg2O,KAAKpqK,GAAI5rE,EAAEmlD,QAC1CymB,KAGEivK,EAAQT,EAAM91O,EAAGtE,EAAEg2O,KAAKpqK,GAAI5rE,EAAEmlD,SAGlCnlD,EAAEg2O,KAAKviK,GAAKzzE,EAAEg2O,KAAKpqK,GACnB6H,EAAI7H,EAGJA,IAAM,EAER5rE,EAAEg2O,KAAKviK,GAAKnvE,EAUd,SAAS22O,EAAej7O,EAAGk7O,EAAOC,GAKhC,IAAInB,EACAoB,EAEA1yO,EACA8b,EAFA62N,EAAK,EAIT,GAAmB,IAAfr7O,EAAEq0O,SACJ,GACE2F,EAAQh6O,EAAEuxO,YAAYvxO,EAAEq2O,MAAa,EAALgF,IAAW,EAAMr7O,EAAEuxO,YAAYvxO,EAAEq2O,MAAa,EAALgF,EAAS,GAClFD,EAAKp7O,EAAEuxO,YAAYvxO,EAAEm2O,MAAQkF,GAC7BA,IAEa,IAATrB,EACFG,EAAUn6O,EAAGo7O,EAAIF,IAKjBf,EAAUn6O,GADV0I,EAAOqwO,EAAaqC,IACA/C,EAAW,EAAG6C,GAEpB,KADd12N,EAAQg0N,EAAY9vO,KAGlBwxO,EAAUl6O,EADVo7O,GAAMpC,EAAYtwO,GACD8b,GAMnB21N,EAAUn6O,EAHV0I,EAAOqxO,IADPC,GAImBmB,GAEL,KADd32N,EAAQi0N,EAAY/vO,KAGlBwxO,EAAUl6O,EADVg6O,GAAQZ,EAAU1wO,GACC8b,UAQhB62N,EAAKr7O,EAAEq0O,UAGlB8F,EAAUn6O,EA1jBM,IA0jBQk7O,GAY1B,SAASI,EAAWt7O,EAAGuZ,GAIrB,IAIIrZ,EAAGiQ,EAEHqtB,EANA48M,EAAW7gO,EAAKqgO,SAChB2B,EAAWhiO,EAAKsgO,UAAUP,YAC1BI,EAAYngO,EAAKsgO,UAAUH,UAC3Bn1B,EAAWhrM,EAAKsgO,UAAUt1B,MAE1Bu1B,GAAY,EAUhB,IAHA95O,EAAEi2O,SAAW,EACbj2O,EAAEk2O,SAxmBgB,IA0mBbh2O,EAAI,EAAGA,EAAIqkN,EAAOrkN,IACQ,IAAzBk6O,EAAS,EAAJl6O,IACPF,EAAEg2O,OAAOh2O,EAAEi2O,UAAY6D,EAAW55O,EAClCF,EAAEmlD,MAAMjlD,GAAK,GAGbk6O,EAAS,EAAJl6O,EAAQ,GAAa,EAS9B,KAAOF,EAAEi2O,SAAW,GAElBmE,EAAY,GADZ58M,EAAOx9B,EAAEg2O,OAAOh2O,EAAEi2O,UAAa6D,EAAW,IAAMA,EAAW,IACjC,EAC1B95O,EAAEmlD,MAAM3nB,GAAQ,EAChBx9B,EAAEs2O,UAEEoD,IACF15O,EAAEu2O,YAAcgF,EAAa,EAAP/9M,EAAW,IASrC,IALAjkB,EAAKugO,SAAWA,EAKX55O,EAAKF,EAAEi2O,UAAY,EAAc/1O,GAAK,EAAGA,IAAO86O,EAAWh7O,EAAGo6O,EAAMl6O,GAKzEs9B,EAAO+mL,EACP,GAGErkN,EAAIF,EAAEg2O,KAAK,GACXh2O,EAAEg2O,KAAK,GAAiBh2O,EAAEg2O,KAAKh2O,EAAEi2O,YACjC+E,EAAWh7O,EAAGo6O,EAAM,GAGpBjqO,EAAInQ,EAAEg2O,KAAK,GAEXh2O,EAAEg2O,OAAOh2O,EAAEk2O,UAAYh2O,EACvBF,EAAEg2O,OAAOh2O,EAAEk2O,UAAY/lO,EAGvBiqO,EAAY,EAAP58M,GAAqB48M,EAAS,EAAJl6O,GAAkBk6O,EAAS,EAAJjqO,GACtDnQ,EAAEmlD,MAAM3nB,IAASx9B,EAAEmlD,MAAMjlD,IAAMF,EAAEmlD,MAAMh1C,GAAKnQ,EAAEmlD,MAAMjlD,GAAKF,EAAEmlD,MAAMh1C,IAAM,EACvEiqO,EAAS,EAAJl6O,EAAQ,GAAak6O,EAAS,EAAJjqO,EAAQ,GAAaqtB,EAGpDx9B,EAAEg2O,KAAK,GAAiBx4M,IACxBw9M,EAAWh7O,EAAGo6O,EAAM,SAEbp6O,EAAEi2O,UAAY,GAEvBj2O,EAAEg2O,OAAOh2O,EAAEk2O,UAAYl2O,EAAEg2O,KAAK,GAjehC,SAAoBh2O,EAAGuZ,GAIrB,IAOIuwE,EACA5pF,EAAGiQ,EACHqqO,EACAgB,EACA93O,EAXA02O,EAAkB7gO,EAAKqgO,SACvBE,EAAkBvgO,EAAKugO,SACvByB,EAAkBhiO,EAAKsgO,UAAUP,YACjCI,EAAkBngO,EAAKsgO,UAAUH,UACjCl1N,EAAkBjL,EAAKsgO,UAAUN,WACjC/qM,EAAkBj1B,EAAKsgO,UAAUL,WACjCC,EAAkBlgO,EAAKsgO,UAAUJ,WAMjC1lG,EAAW,EAEf,IAAKymG,EAAO,EAAGA,GAAQzE,EAAUyE,IAC/Bx6O,EAAE81O,SAAS0E,GAAQ,EAQrB,IAFAJ,EAA0B,EAArBp6O,EAAEg2O,KAAKh2O,EAAEk2O,UAAgB,GAAa,EAEtCpsJ,EAAI9pF,EAAEk2O,SAAW,EAAGpsJ,EAjOP,IAiOsBA,KAEtC0wJ,EAAOJ,EAA+B,EAA1BA,EAAS,GADrBl6O,EAAIF,EAAEg2O,KAAKlsJ,IACc,GAAiB,GAAa,GAC5C2vJ,IACTe,EAAOf,EACP1lG,KAEFqmG,EAAS,EAAJl6O,EAAQ,GAAas6O,EAGtBt6O,EAAI45O,IAER95O,EAAE81O,SAAS0E,KACXgB,EAAQ,EACJt7O,GAAKsuC,IACPgtM,EAAQh3N,EAAMtkB,EAAIsuC,IAEpB9qC,EAAI02O,EAAS,EAAJl6O,GACTF,EAAEs2O,SAAW5yO,GAAK82O,EAAOgB,GACrB9B,IACF15O,EAAEu2O,YAAc7yO,GAAK63O,EAAU,EAAJr7O,EAAQ,GAAas7O,KAGpD,GAAiB,IAAbznG,EAAJ,CAMA,EAAG,CAED,IADAymG,EAAOf,EAAa,EACQ,IAArBz5O,EAAE81O,SAAS0E,IAAeA,IACjCx6O,EAAE81O,SAAS0E,KACXx6O,EAAE81O,SAAS0E,EAAO,IAAM,EACxBx6O,EAAE81O,SAAS2D,KAIX1lG,GAAY,QACLA,EAAW,GAOpB,IAAKymG,EAAOf,EAAqB,IAATe,EAAYA,IAElC,IADAt6O,EAAIF,EAAE81O,SAAS0E,GACF,IAANt6O,IACLiQ,EAAInQ,EAAEg2O,OAAOlsJ,IACLgwJ,IACJM,EAAS,EAAJjqO,EAAQ,KAAeqqO,IAE9Bx6O,EAAEs2O,UAAYkE,EAAOJ,EAAS,EAAJjqO,EAAQ,IAAciqO,EAAS,EAAJjqO,GACrDiqO,EAAS,EAAJjqO,EAAQ,GAAaqqO,GAE5Bt6O,MAmZJu7O,CAAWz7O,EAAGuZ,GAGdghO,EAAUH,EAAMN,EAAU95O,EAAE81O,UAQ9B,SAAS4F,EAAU17O,EAAGo6O,EAAMN,GAK1B,IAAI55O,EAEAy7O,EADAC,GAAW,EAGXC,EAAUzB,EAAK,GAEfxlL,EAAQ,EACRknL,EAAY,EACZC,EAAY,EAQhB,IANgB,IAAZF,IACFC,EAAY,IACZC,EAAY,GAEd3B,EAAsB,GAAhBN,EAAW,GAAS,GAAa,MAElC55O,EAAI,EAAGA,GAAK45O,EAAU55O,IACzBy7O,EAASE,EACTA,EAAUzB,EAAe,GAATl6O,EAAI,GAAS,KAEvB00D,EAAQknL,GAAaH,IAAWE,IAG3BjnL,EAAQmnL,EACjB/7O,EAAE01O,QAAiB,EAATiG,IAAwB/mL,EAEd,IAAX+mL,GAELA,IAAWC,GAAW57O,EAAE01O,QAAiB,EAATiG,KACpC37O,EAAE01O,QAAQsG,OAEDpnL,GAAS,GAClB50D,EAAE01O,QAAQuG,MAGVj8O,EAAE01O,QAAQwG,MAGZtnL,EAAQ,EACRgnL,EAAUD,EAEM,IAAZE,GACFC,EAAY,IACZC,EAAY,GAEHJ,IAAWE,GACpBC,EAAY,EACZC,EAAY,IAGZD,EAAY,EACZC,EAAY,IAUlB,SAASI,EAAUn8O,EAAGo6O,EAAMN,GAK1B,IAAI55O,EAEAy7O,EADAC,GAAW,EAGXC,EAAUzB,EAAK,GAEfxlL,EAAQ,EACRknL,EAAY,EACZC,EAAY,EAQhB,IALgB,IAAZF,IACFC,EAAY,IACZC,EAAY,GAGT77O,EAAI,EAAGA,GAAK45O,EAAU55O,IAIzB,GAHAy7O,EAASE,EACTA,EAAUzB,EAAe,GAATl6O,EAAI,GAAS,OAEvB00D,EAAQknL,GAAaH,IAAWE,GAAtC,CAGO,GAAIjnL,EAAQmnL,EACjB,GAAK5B,EAAUn6O,EAAG27O,EAAQ37O,EAAE01O,eAA+B,KAAV9gL,QAE7B,IAAX+mL,GACLA,IAAWC,IACbzB,EAAUn6O,EAAG27O,EAAQ37O,EAAE01O,SACvB9gL,KAGFulL,EAAUn6O,EA1wBE,GA0wBUA,EAAE01O,SACxBwE,EAAUl6O,EAAG40D,EAAQ,EAAG,IAEfA,GAAS,IAClBulL,EAAUn6O,EA3wBE,GA2wBYA,EAAE01O,SAC1BwE,EAAUl6O,EAAG40D,EAAQ,EAAG,KAGxBulL,EAAUn6O,EA5wBE,GA4wBcA,EAAE01O,SAC5BwE,EAAUl6O,EAAG40D,EAAQ,GAAI,IAG3BA,EAAQ,EACRgnL,EAAUD,EACM,IAAZE,GACFC,EAAY,IACZC,EAAY,GAEHJ,IAAWE,GACpBC,EAAY,EACZC,EAAY,IAGZD,EAAY,EACZC,EAAY,IAhuBlB3K,EAAKgI,GAu1BL,IAAIgD,GAAmB,EA4BvB,SAASvE,EAAiB73O,EAAGuuO,EAAK8N,EAAY3tM,GAM5CwrM,EAAUl6O,EAAG,GAAuB0uC,EAAO,EAAI,GAAI,GAzfrD,SAAoB1uC,EAAGuuO,EAAKv+G,EAAK5mH,GAM/BwxO,EAAU56O,GAENoJ,IACF6wO,EAAUj6O,EAAGgwH,GACbiqH,EAAUj6O,GAAIgwH,IAKhB6nD,EAAM62D,SAAS1uO,EAAEuxO,YAAavxO,EAAEqS,OAAQk8N,EAAKv+G,EAAKhwH,EAAEuyI,SACpDvyI,EAAEuyI,SAAWviB,EA0ebssH,CAAWt8O,EAAGuuO,EAAK8N,GAAY,GAoKjCvkO,EAAQ8+N,SAlMR,SAAkB52O,GAGXo8O,IAxmBP,WACE,IAAIl8O,EACAs6O,EACAp6O,EACAsI,EACAsxO,EACAlE,EAAW,IAAIr3O,MAAMs3O,IAiBzB,IADA31O,EAAS,EACJsI,EAAO,EAAGA,EAAO6zO,GAAkB7zO,IAEtC,IADAswO,EAAYtwO,GAAQtI,EACfF,EAAI,EAAGA,EAAK,GAAKs4O,EAAY9vO,GAAQxI,IACxC64O,EAAa34O,KAAYsI,EAY7B,IAJAqwO,EAAa34O,EAAS,GAAKsI,EAG3BsxO,EAAO,EACFtxO,EAAO,EAAGA,EAAO,GAAIA,IAExB,IADA0wO,EAAU1wO,GAAQsxO,EACb95O,EAAI,EAAGA,EAAK,GAAKu4O,EAAY/vO,GAAQxI,IACxC44O,EAAWkB,KAAUtxO,EAKzB,IADAsxO,IAAS,EACFtxO,EAAO6vO,EAAS7vO,IAErB,IADA0wO,EAAU1wO,GAAQsxO,GAAQ,EACrB95O,EAAI,EAAGA,EAAK,GAAMu4O,EAAY/vO,GAAQ,EAAKxI,IAC9C44O,EAAW,IAAMkB,KAAUtxO,EAM/B,IAAK8xO,EAAO,EAAGA,GAAQzE,EAAUyE,IAC/B1E,EAAS0E,GAAQ,EAInB,IADAt6O,EAAI,EACGA,GAAK,KACV04O,EAAiB,EAAJ14O,EAAQ,GAAa,EAClCA,IACA41O,EAAS,KAEX,KAAO51O,GAAK,KACV04O,EAAiB,EAAJ14O,EAAQ,GAAa,EAClCA,IACA41O,EAAS,KAEX,KAAO51O,GAAK,KACV04O,EAAiB,EAAJ14O,EAAQ,GAAa,EAClCA,IACA41O,EAAS,KAEX,KAAO51O,GAAK,KACV04O,EAAiB,EAAJ14O,EAAQ,GAAa,EAClCA,IACA41O,EAAS,KASX,IAHAyE,EAAU3B,EAAcN,IAAaxC,GAGhC51O,EAAI,EAAGA,EAAIq4O,EAASr4O,IACvB24O,EAAiB,EAAJ34O,EAAQ,GAAa,EAClC24O,EAAiB,EAAJ34O,GAAkBm6O,EAAWn6O,EAAG,GAI/C+4O,EAAgB,IAAII,EAAeT,EAAcJ,EAAaH,IAAcC,EAASvC,GACrFmD,EAAgB,IAAIG,EAAeR,EAAcJ,EAAa,EAAYF,EAASxC,GACnFoD,EAAiB,IAAIE,EAAe,IAAI56O,MAAM,GAAIi6O,EAAc,EA/a9C,GAiBF,GAw6Bd8D,GACAJ,GAAmB,GAGrBp8O,EAAE21O,OAAU,IAAIgE,EAAS35O,EAAEu1O,UAAW0D,GACtCj5O,EAAE41O,OAAU,IAAI+D,EAAS35O,EAAEy1O,UAAWyD,GACtCl5O,EAAE61O,QAAU,IAAI8D,EAAS35O,EAAE01O,QAASyD,GAEpCn5O,EAAEw2O,OAAS,EACXx2O,EAAEy2O,SAAW,EAGbiE,EAAW16O,IAmLb8X,EAAQ+/N,iBAAmBA,EAC3B//N,EAAQ85N,gBAnJR,SAAyB5xO,EAAGuuO,EAAK8N,EAAY3tM,GAM3C,IAAI+tM,EAAUC,EACVC,EAAc,EAGd38O,EAAEimD,MAAQ,GAnhCY,IAshCpBjmD,EAAEixO,KAAK0F,YACT32O,EAAEixO,KAAK0F,UArGb,SAA0B32O,GAKxB,IACIE,EADA08O,EAAa,WAIjB,IAAK18O,EAAI,EAAGA,GAAK,GAAIA,IAAK08O,KAAgB,EACxC,GAAkB,EAAbA,GAAoD,IAAhC58O,EAAEu1O,UAAc,EAAJr1O,GACnC,OAh8BsB,EAq8B1B,GAAoC,IAAhCF,EAAEu1O,UAAU,KAA0D,IAAjCv1O,EAAEu1O,UAAU,KAChB,IAAjCv1O,EAAEu1O,UAAU,IACd,OAt8BwB,EAw8B1B,IAAKr1O,EAAI,GAAIA,EAAIm4O,EAAUn4O,IACzB,GAAoC,IAAhCF,EAAEu1O,UAAc,EAAJr1O,GACd,OA18BsB,EAi9B1B,OAl9B0B,EA0hCH28O,CAAiB78O,IAItCs7O,EAAWt7O,EAAGA,EAAE21O,QAIhB2F,EAAWt7O,EAAGA,EAAE41O,QAUhB+G,EAnMJ,SAAuB38O,GACrB,IAAI28O,EAgBJ,IAbAjB,EAAU17O,EAAGA,EAAEu1O,UAAWv1O,EAAE21O,OAAOmE,UACnC4B,EAAU17O,EAAGA,EAAEy1O,UAAWz1O,EAAE41O,OAAOkE,UAGnCwB,EAAWt7O,EAAGA,EAAE61O,SASX8G,EAAcG,GAAcH,GAAe,GACW,IAArD38O,EAAE01O,QAAgC,EAAxBiD,EAASgE,GAAmB,GADOA,KAUnD,OAJA38O,EAAEs2O,SAAW,GAAKqG,EAAc,GAAK,EAAI,EAAI,EAItCA,EAwKSI,CAAc/8O,GAG5By8O,EAAYz8O,EAAEs2O,QAAU,EAAI,IAAO,GACnCoG,EAAe18O,EAAEu2O,WAAa,EAAI,IAAO,IAMtBkG,IAAYA,EAAWC,IAI1CD,EAAWC,EAAcL,EAAa,EAGnCA,EAAa,GAAKI,IAAuB,IAATlO,EASnCsJ,EAAiB73O,EAAGuuO,EAAK8N,EAAY3tM,GA1kCb,IA4kCf1uC,EAAEy0O,UAAwBiI,IAAgBD,GAEnDvC,EAAUl6O,EAAG,GAAuB0uC,EAAO,EAAI,GAAI,GACnDusM,EAAej7O,EAAG44O,EAAcC,KAGhCqB,EAAUl6O,EAAG,GAAoB0uC,EAAO,EAAI,GAAI,GAjMpD,SAAwB1uC,EAAGg9O,EAAQC,EAAQC,GAIzC,IAAI/L,EASJ,IAHA+I,EAAUl6O,EAAGg9O,EAAS,IAAK,GAC3B9C,EAAUl6O,EAAGi9O,EAAS,EAAK,GAC3B/C,EAAUl6O,EAAGk9O,EAAU,EAAI,GACtB/L,EAAO,EAAGA,EAAO+L,EAAS/L,IAE7B+I,EAAUl6O,EAAGA,EAAE01O,QAAyB,EAAjBiD,EAASxH,GAAY,GAAY,GAI1DgL,EAAUn8O,EAAGA,EAAEu1O,UAAWyH,EAAS,GAGnCb,EAAUn8O,EAAGA,EAAEy1O,UAAWwH,EAAS,GA4KjCE,CAAen9O,EAAGA,EAAE21O,OAAOmE,SAAW,EAAG95O,EAAE41O,OAAOkE,SAAW,EAAG6C,EAAc,GAC9E1B,EAAej7O,EAAGA,EAAEu1O,UAAWv1O,EAAEy1O,YAMnCiF,EAAW16O,GAEP0uC,GACFksM,EAAU56O,IAuEd8X,EAAQo8N,UA7DR,SAAmBl0O,EAAGg6O,EAAMoB,GAmD1B,OA5CAp7O,EAAEuxO,YAAYvxO,EAAEq2O,MAAqB,EAAbr2O,EAAEq0O,UAAqB2F,IAAS,EAAK,IAC7Dh6O,EAAEuxO,YAAYvxO,EAAEq2O,MAAqB,EAAbr2O,EAAEq0O,SAAe,GAAY,IAAP2F,EAE9Ch6O,EAAEuxO,YAAYvxO,EAAEm2O,MAAQn2O,EAAEq0O,UAAiB,IAAL+G,EACtCp7O,EAAEq0O,WAEW,IAAT2F,EAEFh6O,EAAEu1O,UAAe,EAAL6F,MAEZp7O,EAAEsvI,UAEF0qG,IAKAh6O,EAAEu1O,UAA8C,GAAnCwD,EAAaqC,GAAM/C,EAAW,MAC3Cr4O,EAAEy1O,UAAyB,EAAfsE,EAAOC,OA0Bbh6O,EAAEq0O,WAAar0O,EAAEo2O,YAAc,GAWzCt+N,EAAQ8/N,UAhKR,SAAmB53O,GACjBk6O,EAAUl6O,EAAGo9O,EAAmB,GAChCjD,EAAUn6O,EAz8BM,IAy8BQ44O,GA5yB1B,SAAkB54O,GACG,KAAfA,EAAEy2O,UACJwD,EAAUj6O,EAAGA,EAAEw2O,QACfx2O,EAAEw2O,OAAS,EACXx2O,EAAEy2O,SAAW,GAEJz2O,EAAEy2O,UAAY,IACvBz2O,EAAEuxO,YAAYvxO,EAAEuyI,WAAwB,IAAXvyI,EAAEw2O,OAC/Bx2O,EAAEw2O,SAAW,EACbx2O,EAAEy2O,UAAY,GAoyBhB4G,CAASr9O,KA+JT,CAAC,kBAAkB,IAAI,EAAE,CAAC,SAASkuO,EAAQr2N,EAAOC,GACpD,aA8CAD,EAAOC,QAzBP,WAEE/Y,KAAKiL,MAAQ,KACbjL,KAAKy0O,QAAU,EAEfz0O,KAAKw0O,SAAW,EAEhBx0O,KAAK00O,SAAW,EAEhB10O,KAAK8K,OAAS,KACd9K,KAAK0yO,SAAW,EAEhB1yO,KAAKuyO,UAAY,EAEjBvyO,KAAK2yO,UAAY,EAEjB3yO,KAAKmmN,IAAM,GAEXnmN,KAAKoyB,MAAQ,KAEbpyB,KAAK43O,UAAY,EAEjB53O,KAAKkxO,MAAQ,IAKb,IAAI,kBAAkB,CAAC,SAAS/B,EAAQr2N,EAAOC,GACjD,aAGA,IAAIwlO,EAAepP,EAAQ,kBACvBr2D,EAAeq2D,EAAQ,kBACvB71G,EAAe61G,EAAQ,mBACvBhpB,EAAegpB,EAAQ,mBACvBqP,EAAerP,EAAQ,kBAEvB3rO,EAAWjE,OAAOW,UAAUsD,SA8GhC,SAASi7O,EAAQ78O,GACf,KAAM5B,gBAAgBy+O,GAAU,OAAO,IAAIA,EAAQ78O,GAEnD5B,KAAK4B,QAAUk3K,EAAM/3K,OAAO,CAC1BmmD,OAtGwB,EAuGxBplD,OAnGc,EAoGd48O,UAAW,MACX1G,WAAY,GACZC,SAAU,EACVvC,SAzGwB,EA0GxBj+N,GAAI,IACH7V,GAAW,IAEd,IAAIyhO,EAAMrjO,KAAK4B,QAEXyhO,EAAIvwG,KAAQuwG,EAAI2U,WAAa,EAC/B3U,EAAI2U,YAAc3U,EAAI2U,WAGf3U,EAAIsb,MAAStb,EAAI2U,WAAa,GAAO3U,EAAI2U,WAAa,KAC7D3U,EAAI2U,YAAc,IAGpBh4O,KAAKkH,IAAS,EACdlH,KAAKmmN,IAAS,GACdnmN,KAAK4+O,OAAS,EACd5+O,KAAK+vO,OAAS,GAEd/vO,KAAKkyO,KAAO,IAAIsM,EAChBx+O,KAAKkyO,KAAKK,UAAY,EAEtB,IAAIhoO,EAASg0O,EAAaxG,aACxB/3O,KAAKkyO,KACL7O,EAAIn8K,MACJm8K,EAAIvhO,OACJuhO,EAAI2U,WACJ3U,EAAI4U,SACJ5U,EAAIqS,UAGN,GA9IoB,IA8IhBnrO,EACF,MAAM,IAAI5J,MAAMwlN,EAAI57M,IAOtB,GAJI84N,EAAIh5N,QACNk0O,EAAalG,iBAAiBr4O,KAAKkyO,KAAM7O,EAAIh5N,QAG3Cg5N,EAAI4V,WAAY,CAClB,IAAIzxG,EAaJ,GATEA,EAF4B,iBAAnB67F,EAAI4V,WAEN3/G,EAAQm3G,WAAWpN,EAAI4V,YACa,yBAAlCz1O,EAAS9C,KAAK2iO,EAAI4V,YACpB,IAAI71O,WAAWigO,EAAI4V,YAEnB5V,EAAI4V,WA/JK,KAkKlB1uO,EAASg0O,EAAavF,qBAAqBh5O,KAAKkyO,KAAM1qG,IAGpD,MAAM,IAAI7mI,MAAMwlN,EAAI57M,IAGtBvK,KAAK6+O,WAAY,GAyKrB,SAASp/G,EAAQx0H,EAAOrJ,GACtB,IAAIk9O,EAAW,IAAIL,EAAQ78O,GAK3B,GAHAk9O,EAASj5O,KAAKoF,GAAO,GAGjB6zO,EAAS53O,IAAO,MAAM43O,EAAS34B,KAAOA,EAAI24B,EAAS53O,KAEvD,OAAO43O,EAASr4O,OAhJlBg4O,EAAQv+O,UAAU2F,KAAO,SAAU/C,EAAMo9C,GACvC,IAEI31C,EAAQw0O,EAFR7M,EAAOlyO,KAAKkyO,KACZwM,EAAY1+O,KAAK4B,QAAQ88O,UAG7B,GAAI1+O,KAAK4+O,MAAS,OAAO,EAEzBG,EAAS7+L,MAAWA,EAAQA,GAAkB,IAATA,EAlNjB,EADA,EAsNA,iBAATp9C,EAETovO,EAAKjnO,MAAQquH,EAAQm3G,WAAW3tO,GACC,yBAAxBU,EAAS9C,KAAKoC,GACvBovO,EAAKjnO,MAAQ,IAAI7H,WAAWN,GAE5BovO,EAAKjnO,MAAQnI,EAGfovO,EAAKuC,QAAU,EACfvC,EAAKsC,SAAWtC,EAAKjnO,MAAM5J,OAE3B,EAAG,CAQD,GAPuB,IAAnB6wO,EAAKK,YACPL,EAAKpnO,OAAS,IAAIguK,EAAMo3D,KAAKwO,GAC7BxM,EAAKQ,SAAW,EAChBR,EAAKK,UAAYmM,GAlOD,KAoOlBn0O,EAASg0O,EAAa9+G,QAAQyyG,EAAM6M,KArOlB,IAuOax0O,EAG7B,OAFAvK,KAAKg/O,MAAMz0O,GACXvK,KAAK4+O,OAAQ,GACN,EAEc,IAAnB1M,EAAKK,YAAsC,IAAlBL,EAAKsC,UA9OhB,IA8OmCuK,GA1OnC,IA0OyDA,KACjD,WAApB/+O,KAAK4B,QAAQ6V,GACfzX,KAAKi/O,OAAO3lH,EAAQk3G,cAAc13D,EAAMy2D,UAAU2C,EAAKpnO,OAAQonO,EAAKQ,YAEpE1yO,KAAKi/O,OAAOnmE,EAAMy2D,UAAU2C,EAAKpnO,OAAQonO,EAAKQ,mBAG1CR,EAAKsC,SAAW,GAAwB,IAAnBtC,EAAKK,YAlPhB,IAkPoChoO,GAGxD,OAxPoB,IAwPhBw0O,GACFx0O,EAASg0O,EAAaxF,WAAW/4O,KAAKkyO,MACtClyO,KAAKg/O,MAAMz0O,GACXvK,KAAK4+O,OAAQ,EAzPK,IA0PXr0O,GAxPW,IA4PhBw0O,IACF/+O,KAAKg/O,MA/Pa,GAgQlB9M,EAAKK,UAAY,GACV,IAgBXkM,EAAQv+O,UAAU++O,OAAS,SAAUv4G,GACnC1mI,KAAK+vO,OAAOlqO,KAAK6gI,IAcnB+3G,EAAQv+O,UAAU8+O,MAAQ,SAAUz0O,GAhSd,IAkShBA,IACsB,WAApBvK,KAAK4B,QAAQ6V,GACfzX,KAAKyG,OAASzG,KAAK+vO,OAAO9pN,KAAK,IAE/BjmB,KAAKyG,OAASqyK,EAAMg3D,cAAc9vO,KAAK+vO,SAG3C/vO,KAAK+vO,OAAS,GACd/vO,KAAKkH,IAAMqD,EACXvK,KAAKmmN,IAAMnmN,KAAKkyO,KAAK/rB,KAgFvBptM,EAAQ0lO,QAAUA,EAClB1lO,EAAQ0mH,QAAUA,EAClB1mH,EAAQmmO,WAxBR,SAAoBj0O,EAAOrJ,GAGzB,OAFAA,EAAUA,GAAW,IACbkxH,KAAM,EACP2M,EAAQx0H,EAAOrJ,IAsBxBmX,EAAQ4lO,KAVR,SAAc1zO,EAAOrJ,GAGnB,OAFAA,EAAUA,GAAW,IACb+8O,MAAO,EACRl/G,EAAQx0H,EAAOrJ,KAStB,CAAC,iBAAiB,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,iBAAiB,KAAK,GAAG,GAv5H8R,CAu5H1R,mCCv5H9G,IAAIu9O,EAAU,EAAQ,MAKtBrmO,EAAOC,QAmZP,SAASqmO,EAAc56N,EAAMpa,EAAMxI,GAQjC,OAPKu9O,EAAQ/0O,KACXxI,EAAkCwI,GAAQxI,EAC1CwI,EAAO,IAGTxI,EAAUA,GAAW,GAEjB4iB,aAAgB0H,OAlJtB,SAAyB1H,EAAMpa,GAE7B,IAAIq7E,EAASjhE,EAAKlL,OAAO8U,MAAM,aAE/B,GAAIq3D,EACF,IAAK,IAAIvkF,EAAI,EAAGA,EAAIukF,EAAOpkF,OAAQH,IACjCkJ,EAAKvE,KAAK,CACRnD,KAAMxB,EACNyZ,OAAQ,KACR0kO,UAAW,KACXC,UAAU,EACVjlL,QAAQ,EACRklL,SAAS,EACTC,UAAU,EACV35K,QAAS,OAKf,OAAO45K,EAAWj7N,EAAMpa,GAgIfs1O,CAAel7N,EAA4B,GAGhD26N,EAAQ36N,GAxHd,SAAwBA,EAAMpa,EAAMxI,GAGlC,IAFA,IAAIkrB,EAAQ,GAEH5rB,EAAI,EAAGA,EAAIsjB,EAAKnjB,OAAQH,IAC/B4rB,EAAMjnB,KAAKu5O,EAAa56N,EAAKtjB,GAAIkJ,EAAMxI,GAAS0X,QAKlD,OAAOmmO,EAFM,IAAIvzN,OAAO,MAAQY,EAAM7G,KAAK,KAAO,IAAKwuG,EAAM7yH,IAEnCwI,GAgHjBu1O,CAAoC,EAA8B,EAAQ/9O,GArGrF,SAAyB4iB,EAAMpa,EAAMxI,GACnC,OAAOg+O,EAAe50O,EAAMwZ,EAAM5iB,GAAUwI,EAAMxI,GAuG3Ci+O,CAAqC,EAA8B,EAAQj+O,IAlapFkX,EAAOC,QAAQ/N,MAAQA,EACvB8N,EAAOC,QAAQ4tM,QAsGf,SAAkBtjN,EAAKzB,GACrB,OAAOk+O,EAAiB90O,EAAM3H,EAAKzB,GAAUA,IAtG/CkX,EAAOC,QAAQ+mO,iBAAmBA,EAClChnO,EAAOC,QAAQ6mO,eAAiBA,EAOhC,IAAIG,EAAc,IAAI7zN,OAAO,CAG3B,UAOA,0GACAjG,KAAK,KAAM,KASb,SAASjb,EAAO3H,EAAKzB,GAQnB,IAPA,IAKI25O,EALAtqF,EAAS,GACT5/I,EAAM,EACN5J,EAAQ,EACR+c,EAAO,GACPw7N,EAAmBp+O,GAAWA,EAAQy9O,WAAa,IAGf,OAAhC9D,EAAMwE,EAAYxnN,KAAKl1B,KAAe,CAC5C,IAAI+N,EAAImqO,EAAI,GACR0E,EAAU1E,EAAI,GACd9zN,EAAS8zN,EAAI9zO,MAKjB,GAJA+c,GAAQnhB,EAAI6I,MAAMzE,EAAOggB,GACzBhgB,EAAQggB,EAASrW,EAAE/P,OAGf4+O,EACFz7N,GAAQy7N,EAAQ,OADlB,CAKA,IAAI96O,EAAO9B,EAAIoE,GACXkT,EAAS4gO,EAAI,GACb74O,EAAO64O,EAAI,GACX2E,EAAU3E,EAAI,GACd7oN,EAAQ6oN,EAAI,GACZrkL,EAAWqkL,EAAI,GACfiE,EAAWjE,EAAI,GAGf/2N,IACFysI,EAAOprJ,KAAK2e,GACZA,EAAO,IAGT,IAAI+6N,EAAoB,MAAV5kO,GAA0B,MAARxV,GAAgBA,IAASwV,EACrD0/C,EAAsB,MAAbnD,GAAiC,MAAbA,EAC7BooL,EAAwB,MAAbpoL,GAAiC,MAAbA,EAC/BmoL,EAAY9D,EAAI,IAAMyE,EACtBn6K,EAAUq6K,GAAWxtN,EAEzBu+H,EAAOprJ,KAAK,CACVnD,KAAMA,GAAQ2O,IACdsJ,OAAQA,GAAU,GAClB0kO,UAAWA,EACXC,SAAUA,EACVjlL,OAAQA,EACRklL,QAASA,EACTC,WAAYA,EACZ35K,QAASA,EAAUs6K,EAAYt6K,GAAY25K,EAAW,KAAO,KAAOY,EAAaf,GAAa,SAclG,OATI53O,EAAQpE,EAAIhC,SACdmjB,GAAQnhB,EAAII,OAAOgE,IAIjB+c,GACFysI,EAAOprJ,KAAK2e,GAGPysI,EAoBT,SAASovF,EAA0Bh9O,GACjC,OAAOijM,UAAUjjM,GAAK0Q,QAAQ,WAAW,SAAUzC,GACjD,MAAO,IAAMA,EAAE2zF,WAAW,GAAGzhG,SAAS,IAAIkoB,iBAmB9C,SAASo0N,EAAkB7uF,EAAQrvJ,GAKjC,IAHA,IAAI2uI,EAAU,IAAI7wI,MAAMuxJ,EAAO5vJ,QAGtBH,EAAI,EAAGA,EAAI+vJ,EAAO5vJ,OAAQH,IACR,iBAAd+vJ,EAAO/vJ,KAChBqvI,EAAQrvI,GAAK,IAAIgrB,OAAO,OAAS+kI,EAAO/vJ,GAAG2kE,QAAU,KAAM4uD,EAAM7yH,KAIrE,OAAO,SAAUsX,EAAK6oL,GAMpB,IALA,IAAIv9K,EAAO,GACP1hB,EAAOoW,GAAO,GAEd+vG,GADU84E,GAAQ,IACDu+C,OAASD,EAA2BntO,mBAEhDhS,EAAI,EAAGA,EAAI+vJ,EAAO5vJ,OAAQH,IAAK,CACtC,IAAIqD,EAAQ0sJ,EAAO/vJ,GAEnB,GAAqB,iBAAVqD,EAAX,CAMA,IACIgyG,EADA5wG,EAAQ7C,EAAKyB,EAAM7B,MAGvB,GAAa,MAATiD,EAAe,CACjB,GAAIpB,EAAM+6O,SAAU,CAEd/6O,EAAMg7O,UACR/6N,GAAQjgB,EAAMoW,QAGhB,SAEA,MAAM,IAAIlV,UAAU,aAAelB,EAAM7B,KAAO,mBAIpD,GAAIy8O,EAAQx5O,GAAZ,CACE,IAAKpB,EAAM81D,OACT,MAAM,IAAI50D,UAAU,aAAelB,EAAM7B,KAAO,kCAAoCgJ,KAAKC,UAAUhG,GAAS,KAG9G,GAAqB,IAAjBA,EAAMtE,OAAc,CACtB,GAAIkD,EAAM+6O,SACR,SAEA,MAAM,IAAI75O,UAAU,aAAelB,EAAM7B,KAAO,qBAIpD,IAAK,IAAImqE,EAAI,EAAGA,EAAIlnE,EAAMtE,OAAQwrE,IAAK,CAGrC,GAFA0pC,EAAU0S,EAAOtjH,EAAMknE,KAElB0jE,EAAQrvI,GAAGkf,KAAKm2F,GACnB,MAAM,IAAI9wG,UAAU,iBAAmBlB,EAAM7B,KAAO,eAAiB6B,EAAMshE,QAAU,oBAAsBn6D,KAAKC,UAAU4qG,GAAW,KAGvI/xF,IAAe,IAANqoD,EAAUtoE,EAAMoW,OAASpW,EAAM86O,WAAa9oI,OApBzD,CA4BA,GAFAA,EAAUhyG,EAAMi7O,SA5Ebl5C,UA4EuC3gM,GA5ExBoO,QAAQ,SAAS,SAAUzC,GAC/C,MAAO,IAAMA,EAAE2zF,WAAW,GAAGzhG,SAAS,IAAIkoB,iBA2EWu9F,EAAOtjH,IAErD4qI,EAAQrvI,GAAGkf,KAAKm2F,GACnB,MAAM,IAAI9wG,UAAU,aAAelB,EAAM7B,KAAO,eAAiB6B,EAAMshE,QAAU,oBAAsB0wC,EAAU,KAGnH/xF,GAAQjgB,EAAMoW,OAAS47F,QArDrB/xF,GAAQjgB,EAwDZ,OAAOigB,GAUX,SAAS47N,EAAc/8O,GACrB,OAAOA,EAAI0Q,QAAQ,6BAA8B,QASnD,SAASosO,EAAaztN,GACpB,OAAOA,EAAM3e,QAAQ,gBAAiB,QAUxC,SAAS0rO,EAAY7+I,EAAIx2F,GAEvB,OADAw2F,EAAGx2F,KAAOA,EACHw2F,EAST,SAAS6zB,EAAO7yH,GACd,OAAOA,GAAWA,EAAQ2+O,UAAY,GAAK,IAwE7C,SAASX,EAAgB3uF,EAAQ7mJ,EAAMxI,GAChCu9O,EAAQ/0O,KACXxI,EAAkCwI,GAAQxI,EAC1CwI,EAAO,IAUT,IALA,IAAI43L,GAFJpgM,EAAUA,GAAW,IAEAogM,OACjBnpK,GAAsB,IAAhBj3B,EAAQi3B,IACd2nN,EAAQ,GAGHt/O,EAAI,EAAGA,EAAI+vJ,EAAO5vJ,OAAQH,IAAK,CACtC,IAAIqD,EAAQ0sJ,EAAO/vJ,GAEnB,GAAqB,iBAAVqD,EACTi8O,GAASJ,EAAa77O,OACjB,CACL,IAAIoW,EAASylO,EAAa77O,EAAMoW,QAC5BulO,EAAU,MAAQ37O,EAAMshE,QAAU,IAEtCz7D,EAAKvE,KAAKtB,GAENA,EAAM81D,SACR6lL,GAAW,MAAQvlO,EAASulO,EAAU,MAaxCM,GANIN,EAJA37O,EAAM+6O,SACH/6O,EAAMg7O,QAGC5kO,EAAS,IAAMulO,EAAU,KAFzB,MAAQvlO,EAAS,IAAMulO,EAAU,MAKnCvlO,EAAS,IAAMulO,EAAU,KAOzC,IAAIb,EAAYe,EAAax+O,EAAQy9O,WAAa,KAC9CoB,EAAoBD,EAAMt0O,OAAOmzO,EAAUh+O,UAAYg+O,EAkB3D,OAZKr9C,IACHw+C,GAASC,EAAoBD,EAAMt0O,MAAM,GAAImzO,EAAUh+O,QAAUm/O,GAAS,MAAQnB,EAAY,WAI9FmB,GADE3nN,EACO,IAIAmpK,GAAUy+C,EAAoB,GAAK,MAAQpB,EAAY,MAG3DI,EAAW,IAAIvzN,OAAO,IAAMs0N,EAAO/rH,EAAM7yH,IAAWwI,gECjX7D,IAAIs2O,EAA8B,oBAAXptO,QAA8C,oBAAbqE,UAAiD,oBAAd0F,UAEvFsjO,EAAkB,WAEpB,IADA,IAAIC,EAAwB,CAAC,OAAQ,UAAW,WACvC1/O,EAAI,EAAGA,EAAI0/O,EAAsBv/O,OAAQH,GAAK,EACrD,GAAIw/O,GAAarjO,UAAUC,UAAU5V,QAAQk5O,EAAsB1/O,KAAO,EACxE,OAAO,EAGX,OAAO,EAPa,GAgDlB2/O,EAXqBH,GAAaptO,OAAOlN,QA3B7C,SAA2Bma,GACzB,IAAIkgK,GAAS,EACb,OAAO,WACDA,IAGJA,GAAS,EACTntK,OAAOlN,QAAQC,UAAUK,MAAK,WAC5B+5K,GAAS,EACTlgK,UAKN,SAAsBA,GACpB,IAAIugO,GAAY,EAChB,OAAO,WACAA,IACHA,GAAY,EACZjwO,YAAW,WACTiwO,GAAY,EACZvgO,MACCogO,MAyBT,SAAS/vN,EAAWmwN,GAElB,OAAOA,GAA8D,sBADvD,GACoBv9O,SAAS9C,KAAKqgP,GAUlD,SAASC,EAAyBniO,EAAS0iK,GACzC,GAAyB,IAArB1iK,EAAQ+sF,SACV,MAAO,GAGT,IACI1gF,EADSrM,EAAQgb,cAAcC,YAClBC,iBAAiBlb,EAAS,MAC3C,OAAO0iK,EAAWr2J,EAAIq2J,GAAYr2J,EAUpC,SAAS+1N,EAAcpiO,GACrB,MAAyB,SAArBA,EAAQ6oB,SACH7oB,EAEFA,EAAQkvB,YAAclvB,EAAQugK,KAUvC,SAAS8hE,EAAgBriO,GAEvB,IAAKA,EACH,OAAOlH,SAASjT,KAGlB,OAAQma,EAAQ6oB,UACd,IAAK,OACL,IAAK,OACH,OAAO7oB,EAAQgb,cAAcn1B,KAC/B,IAAK,YACH,OAAOma,EAAQna,KAKnB,IAAIy8O,EAAwBH,EAAyBniO,GACjDm2H,EAAWmsG,EAAsBnsG,SACjC27B,EAAYwwE,EAAsBxwE,UAClCvjI,EAAY+zM,EAAsB/zM,UAEtC,MAAI,wBAAwBhtB,KAAK40H,EAAW5nG,EAAYujI,GAC/C9xJ,EAGFqiO,EAAgBD,EAAcpiO,IAUvC,SAASuiO,EAAiB/zD,GACxB,OAAOA,GAAaA,EAAUg0D,cAAgBh0D,EAAUg0D,cAAgBh0D,EAG1E,IAAIi0D,EAASZ,MAAgBptO,OAAOiuO,uBAAwB5pO,SAASy9E,cACjEosJ,EAASd,GAAa,UAAUtgO,KAAK/C,UAAUC,WASnD,SAASmkO,EAAKtzO,GACZ,OAAgB,KAAZA,EACKmzO,EAEO,KAAZnzO,EACKqzO,EAEFF,GAAUE,EAUnB,SAASE,EAAgB7iO,GACvB,IAAKA,EACH,OAAOlH,SAASgG,gBAQlB,IALA,IAAIgkO,EAAiBF,EAAK,IAAM9pO,SAASjT,KAAO,KAG5C8qK,EAAe3wJ,EAAQ2wJ,cAAgB,KAEpCA,IAAiBmyE,GAAkB9iO,EAAQsxJ,oBAChDX,GAAgB3wJ,EAAUA,EAAQsxJ,oBAAoBX,aAGxD,IAAI9nI,EAAW8nI,GAAgBA,EAAa9nI,SAE5C,OAAKA,GAAyB,SAAbA,GAAoC,SAAbA,GAMsB,IAA1D,CAAC,KAAM,KAAM,SAAShgC,QAAQ8nK,EAAa9nI,WAA2E,WAAvDs5M,EAAyBxxE,EAAc,YACjGkyE,EAAgBlyE,GAGlBA,EATE3wJ,EAAUA,EAAQgb,cAAclc,gBAAkBhG,SAASgG,gBA4BtE,SAASikO,EAAQnjN,GACf,OAAwB,OAApBA,EAAKsP,WACA6zM,EAAQnjN,EAAKsP,YAGftP,EAWT,SAASojN,EAAuBC,EAAUC,GAExC,KAAKD,GAAaA,EAASl2I,UAAam2I,GAAaA,EAASn2I,UAC5D,OAAOj0F,SAASgG,gBAIlB,IAAIohG,EAAQ+iI,EAASn2B,wBAAwBo2B,GAAYr/H,KAAKs/H,4BAC1D/zO,EAAQ8wG,EAAQ+iI,EAAWC,EAC3BlpN,EAAMkmF,EAAQgjI,EAAWD,EAGzBptL,EAAQ/8C,SAAS+8H,cACrBhgF,EAAMwuF,SAASj1I,EAAO,GACtBymD,EAAM4gF,OAAOz8G,EAAK,GAClB,IA/CyBha,EACrB6oB,EA8CAu6M,EAA0BvtL,EAAMutL,wBAIpC,GAAIH,IAAaG,GAA2BF,IAAaE,GAA2Bh0O,EAAMspB,SAASsB,GACjG,MAjDe,UAFb6O,GADqB7oB,EAoDDojO,GAnDDv6M,WAKH,SAAbA,GAAuBg6M,EAAgB7iO,EAAQinG,qBAAuBjnG,EAkDpE6iO,EAAgBO,GAHdA,EAOX,IAAIC,EAAeN,EAAQE,GAC3B,OAAII,EAAa9iE,KACRyiE,EAAuBK,EAAa9iE,KAAM2iE,GAE1CF,EAAuBC,EAAUF,EAAQG,GAAU3iE,MAY9D,SAAS+iE,EAAUtjO,GACjB,IAAIm7H,EAAO54I,UAAUC,OAAS,QAAsBqP,IAAjBtP,UAAU,GAAmBA,UAAU,GAAK,MAE3EghP,EAAqB,QAATpoG,EAAiB,YAAc,aAC3CtyG,EAAW7oB,EAAQ6oB,SAEvB,GAAiB,SAAbA,GAAoC,SAAbA,EAAqB,CAC9C,IAAIlb,EAAO3N,EAAQgb,cAAclc,gBAC7B0kO,EAAmBxjO,EAAQgb,cAAcwoN,kBAAoB71N,EACjE,OAAO61N,EAAiBD,GAG1B,OAAOvjO,EAAQujO,GAYjB,SAASE,EAAc/7L,EAAM1nC,GAC3B,IAAI0hN,EAAWn/N,UAAUC,OAAS,QAAsBqP,IAAjBtP,UAAU,IAAmBA,UAAU,GAE1E2pC,EAAYo3M,EAAUtjO,EAAS,OAC/B2uC,EAAa20L,EAAUtjO,EAAS,QAChCq4C,EAAWqpK,GAAY,EAAI,EAK/B,OAJAh6K,EAAKzoB,KAAOiN,EAAYmsB,EACxB3Q,EAAK8K,QAAUtmB,EAAYmsB,EAC3B3Q,EAAKt1B,MAAQu8B,EAAa0J,EAC1B3Q,EAAKv1B,OAASw8B,EAAa0J,EACpB3Q,EAaT,SAASg8L,EAAeziO,EAAQ26F,GAC9B,IAAI+nI,EAAiB,MAAT/nI,EAAe,OAAS,MAChCgoI,EAAkB,SAAVD,EAAmB,QAAU,SAEzC,OAAOv1N,WAAWnN,EAAO,SAAW0iO,EAAQ,SAAU,IAAMv1N,WAAWnN,EAAO,SAAW2iO,EAAQ,SAAU,IAG7G,SAASr5I,EAAQqR,EAAM/1G,EAAM8nB,EAAMk2N,GACjC,OAAOn/N,KAAKmnB,IAAIhmC,EAAK,SAAW+1G,GAAO/1G,EAAK,SAAW+1G,GAAOjuF,EAAK,SAAWiuF,GAAOjuF,EAAK,SAAWiuF,GAAOjuF,EAAK,SAAWiuF,GAAOgnI,EAAK,IAAMl8M,SAAS/Y,EAAK,SAAWiuF,IAASl1E,SAASm9M,EAAc,UAAqB,WAATjoI,EAAoB,MAAQ,UAAYl1E,SAASm9M,EAAc,UAAqB,WAATjoI,EAAoB,SAAW,WAAa,GAG5U,SAASkoI,EAAehrO,GACtB,IAAIjT,EAAOiT,EAASjT,KAChB8nB,EAAO7U,EAASgG,gBAChB+kO,EAAgBjB,EAAK,KAAO1nN,iBAAiBvN,GAEjD,MAAO,CACL7H,OAAQykF,EAAQ,SAAU1kG,EAAM8nB,EAAMk2N,GACtCh+N,MAAO0kF,EAAQ,QAAS1kG,EAAM8nB,EAAMk2N,IAIxC,IAAIE,EAAiB,SAAUtgP,EAAUgoB,GACvC,KAAMhoB,aAAoBgoB,GACxB,MAAM,IAAI7kB,UAAU,sCAIpBo9O,EAAc,WAChB,SAAS/5I,EAAiB33F,EAAQ4K,GAChC,IAAK,IAAI7a,EAAI,EAAGA,EAAI6a,EAAM1a,OAAQH,IAAK,CACrC,IAAI8a,EAAaD,EAAM7a,GACvB8a,EAAWjO,WAAaiO,EAAWjO,aAAc,EACjDiO,EAAWhO,cAAe,EACtB,UAAWgO,IAAYA,EAAW7C,UAAW,GACjD5Z,OAAOuO,eAAeqD,EAAQ6K,EAAW3K,IAAK2K,IAIlD,OAAO,SAAUsO,EAAaG,EAAY01J,GAGxC,OAFI11J,GAAYq+E,EAAiBx+E,EAAYpqB,UAAWuqB,GACpD01J,GAAar3E,EAAiBx+E,EAAa61J,GACxC71J,GAdO,GAsBdxc,EAAiB,SAAUoL,EAAK7H,EAAK1L,GAYvC,OAXI0L,KAAO6H,EACT3Z,OAAOuO,eAAeoL,EAAK7H,EAAK,CAC9B1L,MAAOA,EACPoI,YAAY,EACZC,cAAc,EACdmL,UAAU,IAGZD,EAAI7H,GAAO1L,EAGNuT,GAGLG,EAAW9Z,OAAOwB,QAAU,SAAUoQ,GACxC,IAAK,IAAIjQ,EAAI,EAAGA,EAAIE,UAAUC,OAAQH,IAAK,CACzC,IAAIoY,EAASlY,UAAUF,GAEvB,IAAK,IAAImQ,KAAOiI,EACV/Z,OAAOW,UAAUJ,eAAeY,KAAK4Y,EAAQjI,KAC/CF,EAAOE,GAAOiI,EAAOjI,IAK3B,OAAOF,GAUT,SAAS2xO,EAAc92L,GACrB,OAAO3yC,EAAS,GAAI2yC,EAAS,CAC3Bh7B,MAAOg7B,EAAQ/6B,KAAO+6B,EAAQtnC,MAC9B2sC,OAAQrF,EAAQluB,IAAMkuB,EAAQrnC,SAWlC,SAASw+B,EAAsBtkC,GAC7B,IAAI0nC,EAAO,GAKX,IACE,GAAIk7L,EAAK,IAAK,CACZl7L,EAAO1nC,EAAQskC,wBACf,IAAIpY,EAAYo3M,EAAUtjO,EAAS,OAC/B2uC,EAAa20L,EAAUtjO,EAAS,QACpC0nC,EAAKzoB,KAAOiN,EACZwb,EAAKt1B,MAAQu8B,EACbjH,EAAK8K,QAAUtmB,EACfwb,EAAKv1B,OAASw8B,OAEdjH,EAAO1nC,EAAQskC,wBAEjB,MAAOr9C,IAET,IAAIW,EAAS,CACXwqB,KAAMs1B,EAAKt1B,KACX6M,IAAKyoB,EAAKzoB,IACVpZ,MAAO6hC,EAAKv1B,MAAQu1B,EAAKt1B,KACzBtM,OAAQ4hC,EAAK8K,OAAS9K,EAAKzoB,KAIzBof,EAA6B,SAArBr+B,EAAQ6oB,SAAsBi7M,EAAe9jO,EAAQgb,eAAiB,GAC9EnV,EAAQw4B,EAAMx4B,OAAS7F,EAAQqkC,aAAez8C,EAAOie,MACrDC,EAASu4B,EAAMv4B,QAAU9F,EAAQ2nC,cAAgB//C,EAAOke,OAExDo+N,EAAiBlkO,EAAQwb,YAAc3V,EACvCs+N,EAAgBnkO,EAAQqb,aAAevV,EAI3C,GAAIo+N,GAAkBC,EAAe,CACnC,IAAIljO,EAASkhO,EAAyBniO,GACtCkkO,GAAkBR,EAAeziO,EAAQ,KACzCkjO,GAAiBT,EAAeziO,EAAQ,KAExCrZ,EAAOie,OAASq+N,EAChBt8O,EAAOke,QAAUq+N,EAGnB,OAAOF,EAAcr8O,GAGvB,SAASw8O,EAAqC/8N,EAAUi5B,GACtD,IAAI+jM,EAAgB9hP,UAAUC,OAAS,QAAsBqP,IAAjBtP,UAAU,IAAmBA,UAAU,GAE/EogP,EAASC,EAAK,IACd0B,EAA6B,SAApBhkM,EAAOzX,SAChB07M,EAAejgM,EAAsBj9B,GACrCm9N,EAAalgM,EAAsBhE,GACnCmkM,EAAepC,EAAgBh7N,GAE/BpG,EAASkhO,EAAyB7hM,GAClCo0H,EAAiBtmJ,WAAWnN,EAAOyzJ,eAAgB,IACnDC,EAAkBvmJ,WAAWnN,EAAO0zJ,gBAAiB,IAGrD0vE,GAAiBC,IACnBE,EAAWvlN,IAAMva,KAAKmnB,IAAI24M,EAAWvlN,IAAK,GAC1CulN,EAAWpyN,KAAO1N,KAAKmnB,IAAI24M,EAAWpyN,KAAM,IAE9C,IAAI+6B,EAAU82L,EAAc,CAC1BhlN,IAAKslN,EAAatlN,IAAMulN,EAAWvlN,IAAMy1I,EACzCtiJ,KAAMmyN,EAAanyN,KAAOoyN,EAAWpyN,KAAOuiJ,EAC5C9uJ,MAAO0+N,EAAa1+N,MACpBC,OAAQy+N,EAAaz+N,SASvB,GAPAqnC,EAAQhyB,UAAY,EACpBgyB,EAAQ7xB,WAAa,GAMhBqnN,GAAU2B,EAAQ,CACrB,IAAInpN,EAAY/M,WAAWnN,EAAOka,UAAW,IACzCG,EAAalN,WAAWnN,EAAOqa,WAAY,IAE/C6xB,EAAQluB,KAAOy1I,EAAiBv5I,EAChCgyB,EAAQqF,QAAUkiH,EAAiBv5I,EACnCgyB,EAAQ/6B,MAAQuiJ,EAAkBr5I,EAClC6xB,EAAQh7B,OAASwiJ,EAAkBr5I,EAGnC6xB,EAAQhyB,UAAYA,EACpBgyB,EAAQ7xB,WAAaA,EAOvB,OAJIqnN,IAAW0B,EAAgB/jM,EAAO5nB,SAAS+rN,GAAgBnkM,IAAWmkM,GAA0C,SAA1BA,EAAa57M,YACrGskB,EAAUs2L,EAAct2L,EAAS7M,IAG5B6M,EAGT,SAASu3L,EAA8C1kO,GACrD,IAAI2kO,EAAgBpiP,UAAUC,OAAS,QAAsBqP,IAAjBtP,UAAU,IAAmBA,UAAU,GAE/EorB,EAAO3N,EAAQgb,cAAclc,gBAC7Bg2J,EAAiBsvE,EAAqCpkO,EAAS2N,GAC/D9H,EAAQnB,KAAKmnB,IAAIle,EAAK02B,YAAa5vC,OAAOi8J,YAAc,GACxD5qJ,EAASpB,KAAKmnB,IAAIle,EAAKg6B,aAAclzC,OAAOg8J,aAAe,GAE3DvkI,EAAay4M,EAAkC,EAAlBrB,EAAU31N,GACvCghC,EAAcg2L,EAA0C,EAA1BrB,EAAU31N,EAAM,QAE9C/E,EAAS,CACXqW,IAAKiN,EAAY4oI,EAAe71I,IAAM61I,EAAe35I,UACrD/I,KAAMu8B,EAAammH,EAAe1iJ,KAAO0iJ,EAAex5I,WACxDzV,MAAOA,EACPC,OAAQA,GAGV,OAAOm+N,EAAcr7N,GAWvB,SAASg8N,EAAQ5kO,GACf,IAAI6oB,EAAW7oB,EAAQ6oB,SACvB,GAAiB,SAAbA,GAAoC,SAAbA,EACzB,OAAO,EAET,GAAsD,UAAlDs5M,EAAyBniO,EAAS,YACpC,OAAO,EAET,IAAIkvB,EAAakzM,EAAcpiO,GAC/B,QAAKkvB,GAGE01M,EAAQ11M,GAWjB,SAAS21M,EAA6B7kO,GAEpC,IAAKA,IAAYA,EAAQwgC,eAAiBoiM,IACxC,OAAO9pO,SAASgG,gBAGlB,IADA,IAAIohB,EAAKlgB,EAAQwgC,cACVtgB,GAAoD,SAA9CiiN,EAAyBjiN,EAAI,cACxCA,EAAKA,EAAGsgB,cAEV,OAAOtgB,GAAMpnB,SAASgG,gBAcxB,SAASgmO,EAAcjqD,EAAQrM,EAAW1mI,EAASioI,GACjD,IAAIs0D,EAAgB9hP,UAAUC,OAAS,QAAsBqP,IAAjBtP,UAAU,IAAmBA,UAAU,GAI/EwiP,EAAa,CAAE9lN,IAAK,EAAG7M,KAAM,GAC7Bu+I,EAAe0zE,EAAgBQ,EAA6BhqD,GAAUmoD,EAAuBnoD,EAAQ0nD,EAAiB/zD,IAG1H,GAA0B,aAAtBuB,EACFg1D,EAAaL,EAA8C/zE,EAAc0zE,OACpE,CAEL,IAAIW,OAAiB,EACK,iBAAtBj1D,EAE8B,UADhCi1D,EAAiB3C,EAAgBD,EAAc5zD,KAC5B3lJ,WACjBm8M,EAAiBnqD,EAAO7/J,cAAclc,iBAGxCkmO,EAD+B,WAAtBj1D,EACQ8K,EAAO7/J,cAAclc,gBAErBixK,EAGnB,IAAI5iI,EAAUi3L,EAAqCY,EAAgBr0E,EAAc0zE,GAGjF,GAAgC,SAA5BW,EAAen8M,UAAwB+7M,EAAQj0E,GAWjDo0E,EAAa53L,MAXmD,CAChE,IAAI83L,EAAkBnB,EAAejpD,EAAO7/J,eACxClV,EAASm/N,EAAgBn/N,OACzBD,EAAQo/N,EAAgBp/N,MAE5Bk/N,EAAW9lN,KAAOkuB,EAAQluB,IAAMkuB,EAAQhyB,UACxC4pN,EAAWvyL,OAAS1sC,EAASqnC,EAAQluB,IACrC8lN,EAAW3yN,MAAQ+6B,EAAQ/6B,KAAO+6B,EAAQ7xB,WAC1CypN,EAAW5yN,MAAQtM,EAAQsnC,EAAQ/6B,MASvC,IAAI8yN,EAAqC,iBADzCp9L,EAAUA,GAAW,GAOrB,OALAi9L,EAAW3yN,MAAQ8yN,EAAkBp9L,EAAUA,EAAQ11B,MAAQ,EAC/D2yN,EAAW9lN,KAAOimN,EAAkBp9L,EAAUA,EAAQ7oB,KAAO,EAC7D8lN,EAAW5yN,OAAS+yN,EAAkBp9L,EAAUA,EAAQ31B,OAAS,EACjE4yN,EAAWvyL,QAAU0yL,EAAkBp9L,EAAUA,EAAQ0K,QAAU,EAE5DuyL,EAGT,SAASI,EAAQvlO,GAIf,OAHYA,EAAKiG,MACJjG,EAAKkG,OAcpB,SAASs/N,EAAqBz1D,EAAW01D,EAASxqD,EAAQrM,EAAWuB,GACnE,IAAIjoI,EAAUvlD,UAAUC,OAAS,QAAsBqP,IAAjBtP,UAAU,GAAmBA,UAAU,GAAK,EAElF,IAAmC,IAA/BotL,EAAU9mL,QAAQ,QACpB,OAAO8mL,EAGT,IAAIo1D,EAAaD,EAAcjqD,EAAQrM,EAAW1mI,EAASioI,GAEvDu1D,EAAQ,CACVrmN,IAAK,CACHpZ,MAAOk/N,EAAWl/N,MAClBC,OAAQu/N,EAAQpmN,IAAM8lN,EAAW9lN,KAEnC9M,MAAO,CACLtM,MAAOk/N,EAAW5yN,MAAQkzN,EAAQlzN,MAClCrM,OAAQi/N,EAAWj/N,QAErB0sC,OAAQ,CACN3sC,MAAOk/N,EAAWl/N,MAClBC,OAAQi/N,EAAWvyL,OAAS6yL,EAAQ7yL,QAEtCpgC,KAAM,CACJvM,MAAOw/N,EAAQjzN,KAAO2yN,EAAW3yN,KACjCtM,OAAQi/N,EAAWj/N,SAInBy/N,EAAc7kP,OAAO6K,KAAK+5O,GAAO7sO,KAAI,SAAUjG,GACjD,OAAOgI,EAAS,CACdhI,IAAKA,GACJ8yO,EAAM9yO,GAAM,CACbikL,KAAM0uD,EAAQG,EAAM9yO,SAErBshB,MAAK,SAAU7K,EAAGloB,GACnB,OAAOA,EAAE01L,KAAOxtK,EAAEwtK,QAGhB+uD,EAAgBD,EAAYrqO,QAAO,SAAU2E,GAC/C,IAAIgG,EAAQhG,EAAMgG,MACdC,EAASjG,EAAMiG,OACnB,OAAOD,GAASg1K,EAAOx2I,aAAev+B,GAAU+0K,EAAOlzI,gBAGrD89L,EAAoBD,EAAchjP,OAAS,EAAIgjP,EAAc,GAAGhzO,IAAM+yO,EAAY,GAAG/yO,IAErFkzO,EAAY/1D,EAAUrjL,MAAM,KAAK,GAErC,OAAOm5O,GAAqBC,EAAY,IAAMA,EAAY,IAa5D,SAASC,EAAoBpyN,EAAOsnK,EAAQrM,GAC1C,IAAI61D,EAAgB9hP,UAAUC,OAAS,QAAsBqP,IAAjBtP,UAAU,GAAmBA,UAAU,GAAK,KAEpFqjP,EAAqBvB,EAAgBQ,EAA6BhqD,GAAUmoD,EAAuBnoD,EAAQ0nD,EAAiB/zD,IAChI,OAAO41D,EAAqC51D,EAAWo3D,EAAoBvB,GAU7E,SAASwB,EAAc7lO,GACrB,IACIiB,EADSjB,EAAQgb,cAAcC,YACfC,iBAAiBlb,GACjCqE,EAAI+J,WAAWnN,EAAOka,WAAa,GAAK/M,WAAWnN,EAAOma,cAAgB,GAC1Er1B,EAAIqoB,WAAWnN,EAAOqa,YAAc,GAAKlN,WAAWnN,EAAOsa,aAAe,GAK9E,MAJa,CACX1V,MAAO7F,EAAQwb,YAAcz1B,EAC7B+f,OAAQ9F,EAAQqb,aAAehX,GAYnC,SAASyhO,EAAqBn2D,GAC5B,IAAIxpF,EAAO,CAAE/zE,KAAM,QAASD,MAAO,OAAQqgC,OAAQ,MAAOvzB,IAAK,UAC/D,OAAO0wJ,EAAUz6K,QAAQ,0BAA0B,SAAU65M,GAC3D,OAAO5oH,EAAK4oH,MAchB,SAASg3B,EAAiBlrD,EAAQmrD,EAAkBr2D,GAClDA,EAAYA,EAAUrjL,MAAM,KAAK,GAGjC,IAAI25O,EAAaJ,EAAchrD,GAG3BqrD,EAAgB,CAClBrgO,MAAOogO,EAAWpgO,MAClBC,OAAQmgO,EAAWngO,QAIjBqgO,GAAoD,IAA1C,CAAC,QAAS,QAAQt9O,QAAQ8mL,GACpCy2D,EAAWD,EAAU,MAAQ,OAC7BE,EAAgBF,EAAU,OAAS,MACnCG,EAAcH,EAAU,SAAW,QACnCI,EAAwBJ,EAAqB,QAAX,SAStC,OAPAD,EAAcE,GAAYJ,EAAiBI,GAAYJ,EAAiBM,GAAe,EAAIL,EAAWK,GAAe,EAEnHJ,EAAcG,GADZ12D,IAAc02D,EACeL,EAAiBK,GAAiBJ,EAAWM,GAE7CP,EAAiBF,EAAqBO,IAGhEH,EAYT,SAASlqM,EAAK3+B,EAAK6wM,GAEjB,OAAIrtN,MAAMQ,UAAU26C,KACX3+B,EAAI2+B,KAAKkyK,GAIX7wM,EAAInC,OAAOgzM,GAAO,GAqC3B,SAASs4B,EAAa32D,EAAW5rL,EAAMwiP,GAoBrC,YAnB8B50O,IAAT40O,EAAqB52D,EAAYA,EAAUxiL,MAAM,EA1BxE,SAAmBgQ,EAAKsS,EAAM7oB,GAE5B,GAAIjG,MAAMQ,UAAU6mC,UAClB,OAAO7qB,EAAI6qB,WAAU,SAAUolG,GAC7B,OAAOA,EAAQ,OAAMxmI,KAKzB,IAAIyoB,EAAQysB,EAAK3+B,GAAK,SAAUhD,GAC9B,OAAOA,EAAQ,OAAMvT,KAEvB,OAAOuW,EAAIxU,QAAQ0mB,GAcsD2Y,CAAU2nJ,EAAW,EAAQ42D,KAEvFhiP,SAAQ,SAAU4zD,GAC3BA,EAAmB,UAErB/uD,QAAQI,KAAK,yDAEf,IAAIgY,EAAK22C,EAAmB,UAAKA,EAAS32C,GACtC22C,EAASxtB,SAAW9Y,EAAWrQ,KAIjCzd,EAAKkpD,QAAQ0tI,OAASopD,EAAchgP,EAAKkpD,QAAQ0tI,QACjD52L,EAAKkpD,QAAQqhI,UAAYy1D,EAAchgP,EAAKkpD,QAAQqhI,WAEpDvqL,EAAOyd,EAAGzd,EAAMo0D,OAIbp0D,EAUT,SAAS0pD,IAEP,IAAIxsD,KAAKoyB,MAAMmzN,YAAf,CAIA,IAAIziP,EAAO,CACTR,SAAUtC,KACV8f,OAAQ,GACR0lO,YAAa,GACbzgO,WAAY,GACZ8vJ,SAAS,EACT7oH,QAAS,IAIXlpD,EAAKkpD,QAAQqhI,UAAYm3D,EAAoBxkP,KAAKoyB,MAAOpyB,KAAK05L,OAAQ15L,KAAKqtL,UAAWrtL,KAAK4B,QAAQ6jP,eAKnG3iP,EAAK0rL,UAAYy1D,EAAqBjkP,KAAK4B,QAAQ4sL,UAAW1rL,EAAKkpD,QAAQqhI,UAAWrtL,KAAK05L,OAAQ15L,KAAKqtL,UAAWrtL,KAAK4B,QAAQ8sL,UAAUj/J,KAAKm/J,kBAAmB5uL,KAAK4B,QAAQ8sL,UAAUj/J,KAAKk3B,SAG9L7jD,EAAK+1L,kBAAoB/1L,EAAK0rL,UAE9B1rL,EAAK2iP,cAAgBzlP,KAAK4B,QAAQ6jP,cAGlC3iP,EAAKkpD,QAAQ0tI,OAASkrD,EAAiB5kP,KAAK05L,OAAQ52L,EAAKkpD,QAAQqhI,UAAWvqL,EAAK0rL,WAEjF1rL,EAAKkpD,QAAQ0tI,OAAO77J,SAAW79B,KAAK4B,QAAQ6jP,cAAgB,QAAU,WAGtE3iP,EAAOuiP,EAAarlP,KAAK0uL,UAAW5rL,GAI/B9C,KAAKoyB,MAAMszN,UAId1lP,KAAK4B,QAAQm3L,SAASj2L,IAHtB9C,KAAKoyB,MAAMszN,WAAY,EACvB1lP,KAAK4B,QAAQg3L,SAAS91L,KAY1B,SAAS6iP,EAAkBj3D,EAAWk3D,GACpC,OAAOl3D,EAAUj1J,MAAK,SAAUhb,GAC9B,IAAI/b,EAAO+b,EAAK/b,KAEhB,OADc+b,EAAKirB,SACDhnC,IAASkjP,KAW/B,SAASC,EAAyBtkE,GAIhC,IAHA,IAAIukE,EAAW,EAAC,EAAO,KAAM,SAAU,MAAO,KAC1CC,EAAYxkE,EAAS7yJ,OAAO,GAAGhD,cAAgB61J,EAASr1K,MAAM,GAEzDhL,EAAI,EAAGA,EAAI4kP,EAASzkP,OAAQH,IAAK,CACxC,IAAIyZ,EAASmrO,EAAS5kP,GAClB8kP,EAAUrrO,EAAS,GAAKA,EAASorO,EAAYxkE,EACjD,QAA4C,IAAjC5pK,SAASjT,KAAK6iB,MAAMy+N,GAC7B,OAAOA,EAGX,OAAO,KAQT,SAASjiN,IAsBP,OArBA/jC,KAAKoyB,MAAMmzN,aAAc,EAGrBI,EAAkB3lP,KAAK0uL,UAAW,gBACpC1uL,KAAK05L,OAAOh2E,gBAAgB,eAC5B1jH,KAAK05L,OAAOnyK,MAAMsW,SAAW,GAC7B79B,KAAK05L,OAAOnyK,MAAMuW,IAAM,GACxB99B,KAAK05L,OAAOnyK,MAAM0J,KAAO,GACzBjxB,KAAK05L,OAAOnyK,MAAMyJ,MAAQ,GAC1BhxB,KAAK05L,OAAOnyK,MAAM8pC,OAAS,GAC3BrxD,KAAK05L,OAAOnyK,MAAM0+N,WAAa,GAC/BjmP,KAAK05L,OAAOnyK,MAAMs+N,EAAyB,cAAgB,IAG7D7lP,KAAKkmP,wBAIDlmP,KAAK4B,QAAQukP,iBACfnmP,KAAK05L,OAAO3rJ,WAAW4uB,YAAY38D,KAAK05L,QAEnC15L,KAQT,SAAS+yK,EAAUl0J,GACjB,IAAIgb,EAAgBhb,EAAQgb,cAC5B,OAAOA,EAAgBA,EAAcC,YAAcxmB,OAGrD,SAAS8yO,EAAsB9C,EAAcpvO,EAAOhE,EAAUm2O,GAC5D,IAAIC,EAAmC,SAA1BhD,EAAa57M,SACtBv2B,EAASm1O,EAAShD,EAAazpN,cAAcC,YAAcwpN,EAC/DnyO,EAAO0M,iBAAiB3J,EAAOhE,EAAU,CAAEq2O,SAAS,IAE/CD,GACHF,EAAsBlF,EAAgB/vO,EAAO48B,YAAa75B,EAAOhE,EAAUm2O,GAE7EA,EAAcxgP,KAAKsL,GASrB,SAASq1O,EAAoBn5D,EAAWzrL,EAASwwB,EAAOq0N,GAEtDr0N,EAAMq0N,YAAcA,EACpB1zE,EAAUsa,GAAWxvK,iBAAiB,SAAUuU,EAAMq0N,YAAa,CAAEF,SAAS,IAG9E,IAAIj8M,EAAgB42M,EAAgB7zD,GAKpC,OAJA+4D,EAAsB97M,EAAe,SAAUlY,EAAMq0N,YAAar0N,EAAMi0N,eACxEj0N,EAAMkY,cAAgBA,EACtBlY,EAAMs0N,eAAgB,EAEft0N,EAST,SAASu0N,IACF3mP,KAAKoyB,MAAMs0N,gBACd1mP,KAAKoyB,MAAQo0N,EAAoBxmP,KAAKqtL,UAAWrtL,KAAK4B,QAAS5B,KAAKoyB,MAAOpyB,KAAKquL,iBAkCpF,SAAS63D,IAxBT,IAA8B74D,EAAWj7J,EAyBnCpyB,KAAKoyB,MAAMs0N,gBACb93L,qBAAqB5uD,KAAKquL,gBAC1BruL,KAAKoyB,OA3BqBi7J,EA2BQrtL,KAAKqtL,UA3BFj7J,EA2BapyB,KAAKoyB,MAzBzD2gJ,EAAUsa,GAAW/sK,oBAAoB,SAAU8R,EAAMq0N,aAGzDr0N,EAAMi0N,cAAc/iP,SAAQ,SAAU6N,GACpCA,EAAOmP,oBAAoB,SAAU8R,EAAMq0N,gBAI7Cr0N,EAAMq0N,YAAc,KACpBr0N,EAAMi0N,cAAgB,GACtBj0N,EAAMkY,cAAgB,KACtBlY,EAAMs0N,eAAgB,EACft0N,IAwBT,SAASq8M,EAAUttO,GACjB,MAAa,KAANA,IAAa+rB,MAAMD,WAAW9rB,KAAO0kK,SAAS1kK,GAWvD,SAASylP,EAAU/nO,EAASiB,GAC1BvgB,OAAO6K,KAAK0V,GAAQxc,SAAQ,SAAUkrB,GACpC,IAAIu4E,EAAO,IAEkE,IAAzE,CAAC,QAAS,SAAU,MAAO,QAAS,SAAU,QAAQr/F,QAAQ8mB,IAAgBigN,EAAU3uN,EAAO0O,MACjGu4E,EAAO,MAETloF,EAAQ0I,MAAMiH,GAAQ1O,EAAO0O,GAAQu4E,KAgIzC,IAAI8/I,EAAYnG,GAAa,WAAWtgO,KAAK/C,UAAUC,WA8GvD,SAASwpO,EAAmBp4D,EAAWq4D,EAAgBC,GACrD,IAAIC,EAAapsM,EAAK6zI,GAAW,SAAUjwK,GAEzC,OADWA,EAAK/b,OACAqkP,KAGdvkP,IAAeykP,GAAcv4D,EAAUj1J,MAAK,SAAUy9B,GACxD,OAAOA,EAASx0D,OAASskP,GAAiB9vL,EAASxtB,SAAWwtB,EAAS6nD,MAAQkoI,EAAWloI,SAG5F,IAAKv8G,EAAY,CACf,IAAI0kP,EAAc,IAAMH,EAAiB,IACrCI,EAAY,IAAMH,EAAgB,IACtC7+O,QAAQI,KAAK4+O,EAAY,4BAA8BD,EAAc,4DAA8DA,EAAc,KAEnJ,OAAO1kP,EAoIT,IAAI4kP,GAAa,CAAC,aAAc,OAAQ,WAAY,YAAa,MAAO,UAAW,cAAe,QAAS,YAAa,aAAc,SAAU,eAAgB,WAAY,OAAQ,cAGhLC,GAAkBD,GAAWl7O,MAAM,GAYvC,SAASo7O,GAAU94D,GACjB,IAAI/vG,EAAUr9E,UAAUC,OAAS,QAAsBqP,IAAjBtP,UAAU,IAAmBA,UAAU,GAEzEqG,EAAQ4/O,GAAgB3/O,QAAQ8mL,GAChCtyK,EAAMmrO,GAAgBn7O,MAAMzE,EAAQ,GAAGqS,OAAOutO,GAAgBn7O,MAAM,EAAGzE,IAC3E,OAAOg3E,EAAUviE,EAAI8zD,UAAY9zD,EAkfnC,IAkWIqrO,GAAW,CAKb/4D,UAAW,SAMXi3D,eAAe,EAMfiB,eAAe,EAOfP,iBAAiB,EAQjBvtD,SAAU,aAUVG,SAAU,aAOVrK,UAnZc,CASdtvJ,MAAO,CAEL2/E,MAAO,IAEPr1E,SAAS,EAETnpB,GA9HJ,SAAezd,GACb,IAAI0rL,EAAY1rL,EAAK0rL,UACjBg5D,EAAgBh5D,EAAUrjL,MAAM,KAAK,GACrCs8O,EAAiBj5D,EAAUrjL,MAAM,KAAK,GAG1C,GAAIs8O,EAAgB,CAClB,IAAIC,EAAgB5kP,EAAKkpD,QACrBqhI,EAAYq6D,EAAcr6D,UAC1BqM,EAASguD,EAAchuD,OAEvB7hF,GAA2D,IAA9C,CAAC,SAAU,OAAOnwG,QAAQ8/O,GACvCxtG,EAAOniC,EAAa,OAAS,MAC7BstI,EAActtI,EAAa,QAAU,SAErC8vI,EAAe,CACjB15O,MAAOH,EAAe,GAAIksI,EAAMqzC,EAAUrzC,IAC1CnhH,IAAK/qB,EAAe,GAAIksI,EAAMqzC,EAAUrzC,GAAQqzC,EAAU83D,GAAezrD,EAAOyrD,KAGlFriP,EAAKkpD,QAAQ0tI,OAASrgL,EAAS,GAAIqgL,EAAQiuD,EAAaF,IAG1D,OAAO3kP,IAgJP2kB,OAAQ,CAENs3F,MAAO,IAEPr1E,SAAS,EAETnpB,GA7RJ,SAAgBzd,EAAM2b,GACpB,IAQIutC,EARAvkC,EAAShJ,EAAKgJ,OACd+mK,EAAY1rL,EAAK0rL,UACjBk5D,EAAgB5kP,EAAKkpD,QACrB0tI,EAASguD,EAAchuD,OACvBrM,EAAYq6D,EAAcr6D,UAE1Bm6D,EAAgBh5D,EAAUrjL,MAAM,KAAK,GAwBzC,OApBE6gD,EADEyiL,GAAWhnN,GACH,EAAEA,EAAQ,GAvFxB,SAAqBA,EAAQs9N,EAAeF,EAAkB2C,GAC5D,IAAIx7L,EAAU,CAAC,EAAG,GAKd47L,GAA0D,IAA9C,CAAC,QAAS,QAAQlgP,QAAQ8/O,GAItCK,EAAYpgO,EAAOtc,MAAM,WAAWmM,KAAI,SAAUwwO,GACpD,OAAOA,EAAK1+N,UAKV2+N,EAAUF,EAAUngP,QAAQmzC,EAAKgtM,GAAW,SAAUC,GACxD,OAAgC,IAAzBA,EAAKp2M,OAAO,YAGjBm2M,EAAUE,KAAiD,IAArCF,EAAUE,GAASrgP,QAAQ,MACnDS,QAAQI,KAAK,gFAKf,IAAIy/O,EAAa,cACb9iP,GAAmB,IAAb6iP,EAAiB,CAACF,EAAU37O,MAAM,EAAG67O,GAASjuO,OAAO,CAAC+tO,EAAUE,GAAS58O,MAAM68O,GAAY,KAAM,CAACH,EAAUE,GAAS58O,MAAM68O,GAAY,IAAIluO,OAAO+tO,EAAU37O,MAAM67O,EAAU,KAAO,CAACF,GAqC9L,OAlCA3iP,EAAMA,EAAIoS,KAAI,SAAU9R,EAAIiC,GAE1B,IAAI09O,GAAyB,IAAV19O,GAAemgP,EAAYA,GAAa,SAAW,QAClEK,GAAoB,EACxB,OAAOziP,EAGNme,QAAO,SAAUmE,EAAGloB,GACnB,MAAwB,KAApBkoB,EAAEA,EAAEzmB,OAAS,KAAwC,IAA3B,CAAC,IAAK,KAAKqG,QAAQ9H,IAC/CkoB,EAAEA,EAAEzmB,OAAS,GAAKzB,EAClBqoP,GAAoB,EACbngO,GACEmgO,GACTngO,EAAEA,EAAEzmB,OAAS,IAAMzB,EACnBqoP,GAAoB,EACbngO,GAEAA,EAAEhO,OAAOla,KAEjB,IAEF0X,KAAI,SAAUjU,GACb,OAxGN,SAAiBA,EAAK8hP,EAAaJ,EAAeF,GAEhD,IAAI15O,EAAQ9H,EAAI+qB,MAAM,6BAClBzoB,GAASwF,EAAM,GACf47F,EAAO57F,EAAM,GAGjB,OAAKxF,EAIqB,IAAtBohG,EAAKr/F,QAAQ,KAYJo7O,EATJ,OADC/7I,EAEMg+I,EAKAF,GAIFM,GAAe,IAAMx/O,EACf,OAATohG,GAA0B,OAATA,GAGb,OAATA,EACKxjF,KAAKmnB,IAAI/yB,SAASgG,gBAAgB6oC,aAAclzC,OAAOg8J,aAAe,GAEtE/rJ,KAAKmnB,IAAI/yB,SAASgG,gBAAgBulC,YAAa5vC,OAAOi8J,YAAc,IAE/D,IAAM5pK,EAIbA,EA7BAtC,EAgGE6kP,CAAQ7kP,EAAK8hP,EAAaJ,EAAeF,SAKpD3/O,EAAI5B,SAAQ,SAAUkC,EAAIiC,GACxBjC,EAAGlC,SAAQ,SAAUwkP,EAAMhkF,GACrB2qE,EAAUqZ,KACZ97L,EAAQvkD,IAAUqgP,GAA2B,MAAnBtiP,EAAGs+J,EAAS,IAAc,EAAI,UAIvD93G,EAyBKm8L,CAAY1gO,EAAQiyK,EAAQrM,EAAWm6D,GAG7B,SAAlBA,GACF9tD,EAAO57J,KAAOkuB,EAAQ,GACtB0tI,EAAOzoK,MAAQ+6B,EAAQ,IACI,UAAlBw7L,GACT9tD,EAAO57J,KAAOkuB,EAAQ,GACtB0tI,EAAOzoK,MAAQ+6B,EAAQ,IACI,QAAlBw7L,GACT9tD,EAAOzoK,MAAQ+6B,EAAQ,GACvB0tI,EAAO57J,KAAOkuB,EAAQ,IACK,WAAlBw7L,IACT9tD,EAAOzoK,MAAQ+6B,EAAQ,GACvB0tI,EAAO57J,KAAOkuB,EAAQ,IAGxBlpD,EAAK42L,OAASA,EACP52L,GAkQL2kB,OAAQ,GAoBVknK,gBAAiB,CAEf5vE,MAAO,IAEPr1E,SAAS,EAETnpB,GAlRJ,SAAyBzd,EAAMlB,GAC7B,IAAIgtL,EAAoBhtL,EAAQgtL,mBAAqB8yD,EAAgB5+O,EAAKR,SAASo3L,QAK/E52L,EAAKR,SAAS+qL,YAAcuB,IAC9BA,EAAoB8yD,EAAgB9yD,IAMtC,IAAIw5D,EAAgBvC,EAAyB,aACzCwC,EAAevlP,EAAKR,SAASo3L,OAAOnyK,MACpCuW,EAAMuqN,EAAavqN,IACnB7M,EAAOo3N,EAAap3N,KACpBlN,EAAYskO,EAAaD,GAE7BC,EAAavqN,IAAM,GACnBuqN,EAAap3N,KAAO,GACpBo3N,EAAaD,GAAiB,GAE9B,IAAIxE,EAAaD,EAAc7gP,EAAKR,SAASo3L,OAAQ52L,EAAKR,SAAS+qL,UAAWzrL,EAAQ+kD,QAASioI,EAAmB9rL,EAAK2iP,eAIvH4C,EAAavqN,IAAMA,EACnBuqN,EAAap3N,KAAOA,EACpBo3N,EAAaD,GAAiBrkO,EAE9BniB,EAAQgiP,WAAaA,EAErB,IAAI7kI,EAAQn9G,EAAQ0mP,SAChB5uD,EAAS52L,EAAKkpD,QAAQ0tI,OAEtBqzB,EAAQ,CACV7xI,QAAS,SAAiBszG,GACxB,IAAI7oL,EAAQ+zL,EAAOlL,GAInB,OAHIkL,EAAOlL,GAAao1D,EAAWp1D,KAAe5sL,EAAQ2mP,sBACxD5iP,EAAQ4d,KAAKmnB,IAAIgvJ,EAAOlL,GAAYo1D,EAAWp1D,KAE1C1gL,EAAe,GAAI0gL,EAAW7oL,IAEvC6iP,UAAW,SAAmBh6D,GAC5B,IAAIy2D,EAAyB,UAAdz2D,EAAwB,OAAS,MAC5C7oL,EAAQ+zL,EAAOurD,GAInB,OAHIvrD,EAAOlL,GAAao1D,EAAWp1D,KAAe5sL,EAAQ2mP,sBACxD5iP,EAAQ4d,KAAK8mB,IAAIqvJ,EAAOurD,GAAWrB,EAAWp1D,IAA4B,UAAdA,EAAwBkL,EAAOh1K,MAAQg1K,EAAO/0K,UAErG7W,EAAe,GAAIm3O,EAAUt/O,KAWxC,OAPAo5G,EAAMz7G,SAAQ,SAAUkrL,GACtB,IAAIx0C,GAA+C,IAAxC,CAAC,OAAQ,OAAOtyI,QAAQ8mL,GAAoB,UAAY,YACnEkL,EAASrgL,EAAS,GAAIqgL,EAAQqzB,EAAM/yE,GAAMw0C,OAG5C1rL,EAAKkpD,QAAQ0tI,OAASA,EAEf52L,GA2NLwlP,SAAU,CAAC,OAAQ,QAAS,MAAO,UAOnC3hM,QAAS,EAMTioI,kBAAmB,gBAYrBj7C,aAAc,CAEZ50B,MAAO,IAEPr1E,SAAS,EAETnpB,GAlgBJ,SAAsBzd,GACpB,IAAI4kP,EAAgB5kP,EAAKkpD,QACrB0tI,EAASguD,EAAchuD,OACvBrM,EAAYq6D,EAAcr6D,UAE1BmB,EAAY1rL,EAAK0rL,UAAUrjL,MAAM,KAAK,GACtC0oB,EAAQtQ,KAAKsQ,MACbgkF,GAAuD,IAA1C,CAAC,MAAO,UAAUnwG,QAAQ8mL,GACvCx0C,EAAOniC,EAAa,QAAU,SAC9B4wI,EAAS5wI,EAAa,OAAS,MAC/BstI,EAActtI,EAAa,QAAU,SASzC,OAPI6hF,EAAO1/C,GAAQnmH,EAAMw5J,EAAUo7D,MACjC3lP,EAAKkpD,QAAQ0tI,OAAO+uD,GAAU50N,EAAMw5J,EAAUo7D,IAAW/uD,EAAOyrD,IAE9DzrD,EAAO+uD,GAAU50N,EAAMw5J,EAAUrzC,MACnCl3I,EAAKkpD,QAAQ0tI,OAAO+uD,GAAU50N,EAAMw5J,EAAUrzC,KAGzCl3I,IA4fP61L,MAAO,CAEL55E,MAAO,IAEPr1E,SAAS,EAETnpB,GApxBJ,SAAezd,EAAMlB,GACnB,IAAI8mP,EAGJ,IAAK5B,EAAmBhkP,EAAKR,SAASosL,UAAW,QAAS,gBACxD,OAAO5rL,EAGT,IAAI6lP,EAAe/mP,EAAQid,QAG3B,GAA4B,iBAAjB8pO,GAIT,KAHAA,EAAe7lP,EAAKR,SAASo3L,OAAOl7K,cAAcmqO,IAIhD,OAAO7lP,OAKT,IAAKA,EAAKR,SAASo3L,OAAOniK,SAASoxN,GAEjC,OADAxgP,QAAQI,KAAK,iEACNzF,EAIX,IAAI0rL,EAAY1rL,EAAK0rL,UAAUrjL,MAAM,KAAK,GACtCu8O,EAAgB5kP,EAAKkpD,QACrB0tI,EAASguD,EAAchuD,OACvBrM,EAAYq6D,EAAcr6D,UAE1Bx1E,GAAuD,IAA1C,CAAC,OAAQ,SAASnwG,QAAQ8mL,GAEvCv9D,EAAMpZ,EAAa,SAAW,QAC9B+wI,EAAkB/wI,EAAa,MAAQ,OACvCmiC,EAAO4uG,EAAgB94O,cACvB+4O,EAAUhxI,EAAa,OAAS,MAChC4wI,EAAS5wI,EAAa,SAAW,QACjCixI,EAAmBpE,EAAciE,GAAc13H,GAQ/Co8D,EAAUo7D,GAAUK,EAAmBpvD,EAAO1/C,KAChDl3I,EAAKkpD,QAAQ0tI,OAAO1/C,IAAS0/C,EAAO1/C,IAASqzC,EAAUo7D,GAAUK,IAG/Dz7D,EAAUrzC,GAAQ8uG,EAAmBpvD,EAAO+uD,KAC9C3lP,EAAKkpD,QAAQ0tI,OAAO1/C,IAASqzC,EAAUrzC,GAAQ8uG,EAAmBpvD,EAAO+uD,IAE3E3lP,EAAKkpD,QAAQ0tI,OAASopD,EAAchgP,EAAKkpD,QAAQ0tI,QAGjD,IAAIjwF,EAAS4jF,EAAUrzC,GAAQqzC,EAAUp8D,GAAO,EAAI63H,EAAmB,EAInE59N,EAAM81N,EAAyBl+O,EAAKR,SAASo3L,QAC7CqvD,EAAmB97N,WAAW/B,EAAI,SAAW09N,GAAkB,IAC/DI,EAAmB/7N,WAAW/B,EAAI,SAAW09N,EAAkB,SAAU,IACzEK,EAAYx/I,EAAS3mG,EAAKkpD,QAAQ0tI,OAAO1/C,GAAQ+uG,EAAmBC,EAQxE,OALAC,EAAY1lO,KAAKmnB,IAAInnB,KAAK8mB,IAAIqvJ,EAAOzoE,GAAO63H,EAAkBG,GAAY,GAE1EnmP,EAAK6lP,aAAeA,EACpB7lP,EAAKkpD,QAAQ2sI,OAAmC7qL,EAA1B46O,EAAsB,GAAwC1uG,EAAMz2H,KAAKqqE,MAAMq7J,IAAan7O,EAAe46O,EAAqBG,EAAS,IAAKH,GAE7J5lP,GA8sBL+b,QAAS,aAcX4Q,KAAM,CAEJsvF,MAAO,IAEPr1E,SAAS,EAETnpB,GA5oBJ,SAAczd,EAAMlB,GAElB,GAAI+jP,EAAkB7iP,EAAKR,SAASosL,UAAW,SAC7C,OAAO5rL,EAGT,GAAIA,EAAK+xK,SAAW/xK,EAAK0rL,YAAc1rL,EAAK+1L,kBAE1C,OAAO/1L,EAGT,IAAI8gP,EAAaD,EAAc7gP,EAAKR,SAASo3L,OAAQ52L,EAAKR,SAAS+qL,UAAWzrL,EAAQ+kD,QAAS/kD,EAAQgtL,kBAAmB9rL,EAAK2iP,eAE3Hj3D,EAAY1rL,EAAK0rL,UAAUrjL,MAAM,KAAK,GACtC+9O,EAAoBvE,EAAqBn2D,GACzC+1D,EAAYzhP,EAAK0rL,UAAUrjL,MAAM,KAAK,IAAM,GAE5Cg+O,EAAY,GAEhB,OAAQvnP,EAAQ82L,UACd,IAhCI,OAiCFywD,EAAY,CAAC36D,EAAW06D,GACxB,MACF,IAlCS,YAmCPC,EAAY7B,GAAU94D,GACtB,MACF,IApCgB,mBAqCd26D,EAAY7B,GAAU94D,GAAW,GACjC,MACF,QACE26D,EAAYvnP,EAAQ82L,SAyDxB,OAtDAywD,EAAU7lP,SAAQ,SAAUyC,EAAM0B,GAChC,GAAI+mL,IAAczoL,GAAQojP,EAAU9nP,SAAWoG,EAAQ,EACrD,OAAO3E,EAGT0rL,EAAY1rL,EAAK0rL,UAAUrjL,MAAM,KAAK,GACtC+9O,EAAoBvE,EAAqBn2D,GAEzC,IAAIu2D,EAAgBjiP,EAAKkpD,QAAQ0tI,OAC7B0vD,EAAatmP,EAAKkpD,QAAQqhI,UAG1Bx5J,EAAQtQ,KAAKsQ,MACbw1N,EAA4B,SAAd76D,GAAwB36J,EAAMkxN,EAAc/zN,OAAS6C,EAAMu1N,EAAWn4N,OAAuB,UAAdu9J,GAAyB36J,EAAMkxN,EAAc9zN,MAAQ4C,EAAMu1N,EAAWp4N,QAAwB,QAAdw9J,GAAuB36J,EAAMkxN,EAAc1zL,QAAUx9B,EAAMu1N,EAAWtrN,MAAsB,WAAd0wJ,GAA0B36J,EAAMkxN,EAAcjnN,KAAOjK,EAAMu1N,EAAW/3L,QAEjUi4L,EAAgBz1N,EAAMkxN,EAAc9zN,MAAQ4C,EAAM+vN,EAAW3yN,MAC7Ds4N,EAAiB11N,EAAMkxN,EAAc/zN,OAAS6C,EAAM+vN,EAAW5yN,OAC/Dw4N,EAAe31N,EAAMkxN,EAAcjnN,KAAOjK,EAAM+vN,EAAW9lN,KAC3D2rN,EAAkB51N,EAAMkxN,EAAc1zL,QAAUx9B,EAAM+vN,EAAWvyL,QAEjEq4L,EAAoC,SAAdl7D,GAAwB86D,GAA+B,UAAd96D,GAAyB+6D,GAAgC,QAAd/6D,GAAuBg7D,GAA8B,WAAdh7D,GAA0Bi7D,EAG3K5xI,GAAuD,IAA1C,CAAC,MAAO,UAAUnwG,QAAQ8mL,GAGvCm7D,IAA0B/nP,EAAQgoP,iBAAmB/xI,GAA4B,UAAd0sI,GAAyB+E,GAAiBzxI,GAA4B,QAAd0sI,GAAuBgF,IAAmB1xI,GAA4B,UAAd0sI,GAAyBiF,IAAiB3xI,GAA4B,QAAd0sI,GAAuBkF,GAGlQI,IAA8BjoP,EAAQkoP,0BAA4BjyI,GAA4B,UAAd0sI,GAAyBgF,GAAkB1xI,GAA4B,QAAd0sI,GAAuB+E,IAAkBzxI,GAA4B,UAAd0sI,GAAyBkF,IAAoB5xI,GAA4B,QAAd0sI,GAAuBiF,GAElRO,EAAmBJ,GAAyBE,GAE5CR,GAAeK,GAAuBK,KAExCjnP,EAAK+xK,SAAU,GAEXw0E,GAAeK,KACjBl7D,EAAY26D,EAAU1hP,EAAQ,IAG5BsiP,IACFxF,EAvJR,SAA8BA,GAC5B,MAAkB,QAAdA,EACK,QACgB,UAAdA,EACF,MAEFA,EAiJWyF,CAAqBzF,IAGnCzhP,EAAK0rL,UAAYA,GAAa+1D,EAAY,IAAMA,EAAY,IAI5DzhP,EAAKkpD,QAAQ0tI,OAASrgL,EAAS,GAAIvW,EAAKkpD,QAAQ0tI,OAAQkrD,EAAiB9hP,EAAKR,SAASo3L,OAAQ52L,EAAKkpD,QAAQqhI,UAAWvqL,EAAK0rL,YAE5H1rL,EAAOuiP,EAAaviP,EAAKR,SAASosL,UAAW5rL,EAAM,YAGhDA,GA4jBL41L,SAAU,OAKV/xI,QAAS,EAOTioI,kBAAmB,WAQnBg7D,gBAAgB,EAQhBE,yBAAyB,GAU3BvlO,MAAO,CAELw6F,MAAO,IAEPr1E,SAAS,EAETnpB,GArQJ,SAAezd,GACb,IAAI0rL,EAAY1rL,EAAK0rL,UACjBg5D,EAAgBh5D,EAAUrjL,MAAM,KAAK,GACrCu8O,EAAgB5kP,EAAKkpD,QACrB0tI,EAASguD,EAAchuD,OACvBrM,EAAYq6D,EAAcr6D,UAE1B23D,GAAwD,IAA9C,CAAC,OAAQ,SAASt9O,QAAQ8/O,GAEpCyC,GAA6D,IAA5C,CAAC,MAAO,QAAQviP,QAAQ8/O,GAO7C,OALA9tD,EAAOsrD,EAAU,OAAS,OAAS33D,EAAUm6D,IAAkByC,EAAiBvwD,EAAOsrD,EAAU,QAAU,UAAY,GAEvHliP,EAAK0rL,UAAYm2D,EAAqBn2D,GACtC1rL,EAAKkpD,QAAQ0tI,OAASopD,EAAcppD,GAE7B52L,IAkQPuoL,KAAM,CAEJtsE,MAAO,IAEPr1E,SAAS,EAETnpB,GA9TJ,SAAczd,GACZ,IAAKgkP,EAAmBhkP,EAAKR,SAASosL,UAAW,OAAQ,mBACvD,OAAO5rL,EAGT,IAAIohP,EAAUphP,EAAKkpD,QAAQqhI,UACvBme,EAAQ3wJ,EAAK/3C,EAAKR,SAASosL,WAAW,SAAUx3H,GAClD,MAAyB,oBAAlBA,EAASx0D,QACfkhP,WAEH,GAAIM,EAAQ7yL,OAASm6I,EAAM1tK,KAAOomN,EAAQjzN,KAAOu6K,EAAMx6K,OAASkzN,EAAQpmN,IAAM0tK,EAAMn6I,QAAU6yL,EAAQlzN,MAAQw6K,EAAMv6K,KAAM,CAExH,IAAkB,IAAdnuB,EAAKuoL,KACP,OAAOvoL,EAGTA,EAAKuoL,MAAO,EACZvoL,EAAKiiB,WAAW,uBAAyB,OACpC,CAEL,IAAkB,IAAdjiB,EAAKuoL,KACP,OAAOvoL,EAGTA,EAAKuoL,MAAO,EACZvoL,EAAKiiB,WAAW,wBAAyB,EAG3C,OAAOjiB,IAoTPonP,aAAc,CAEZnrI,MAAO,IAEPr1E,SAAS,EAETnpB,GAtgCJ,SAAsBzd,EAAMlB,GAC1B,IAAIshB,EAAIthB,EAAQshB,EACZte,EAAIhD,EAAQgD,EACZ80L,EAAS52L,EAAKkpD,QAAQ0tI,OAItBywD,EAA8BtvM,EAAK/3C,EAAKR,SAASosL,WAAW,SAAUx3H,GACxE,MAAyB,eAAlBA,EAASx0D,QACf0nP,qBACiC15O,IAAhCy5O,GACFhiP,QAAQI,KAAK,iIAEf,IA6BI0oB,EACA6M,EA9BAssN,OAAkD15O,IAAhCy5O,EAA4CA,EAA8BvoP,EAAQwoP,gBAEpG56E,EAAekyE,EAAgB5+O,EAAKR,SAASo3L,QAC7C2wD,EAAmBlnM,EAAsBqsH,GAGzC1vJ,EAAS,CACX+d,SAAU67J,EAAO77J,UAGfmuB,EA9DN,SAA2BlpD,EAAMwnP,GAC/B,IAAI5C,EAAgB5kP,EAAKkpD,QACrB0tI,EAASguD,EAAchuD,OACvBrM,EAAYq6D,EAAcr6D,UAC1Bz/F,EAAQrqE,KAAKqqE,MACb/5D,EAAQtQ,KAAKsQ,MAEb02N,EAAU,SAAiBhlP,GAC7B,OAAOA,GAGLilP,EAAiB58J,EAAMy/F,EAAU3oK,OACjC+lO,EAAc78J,EAAM8rG,EAAOh1K,OAE3BmzF,GAA4D,IAA/C,CAAC,OAAQ,SAASnwG,QAAQ5E,EAAK0rL,WAC5Ck8D,GAA+C,IAAjC5nP,EAAK0rL,UAAU9mL,QAAQ,KAIrCijP,EAAuBL,EAAwBzyI,GAAc6yI,GAH3CF,EAAiB,GAAMC,EAAc,EAGuC78J,EAAQ/5D,EAAjE02N,EACrCK,EAAqBN,EAAwB18J,EAAV28J,EAEvC,MAAO,CACLt5N,KAAM05N,EANWH,EAAiB,GAAM,GAAKC,EAAc,GAAM,IAMtBC,GAAeJ,EAAc5wD,EAAOzoK,KAAO,EAAIyoK,EAAOzoK,MACjG6M,IAAK8sN,EAAkBlxD,EAAO57J,KAC9BuzB,OAAQu5L,EAAkBlxD,EAAOroI,QACjCrgC,MAAO25N,EAAoBjxD,EAAO1oK,QAoCtB65N,CAAkB/nP,EAAMwQ,OAAO63G,iBAAmB,IAAM07H,GAElErE,EAAc,WAANt/N,EAAiB,MAAQ,SACjCu/N,EAAc,UAAN79O,EAAgB,OAAS,QAKjCkmP,EAAmBjF,EAAyB,aAiChD,GAhBI/nN,EAJU,WAAV0kN,EAG4B,SAA1BhzE,EAAa9nI,UACR8nI,EAAahpH,aAAewF,EAAQqF,QAEpCg5L,EAAiB1lO,OAASqnC,EAAQqF,OAGrCrF,EAAQluB,IAIZ7M,EAFU,UAAVwxN,EAC4B,SAA1BjzE,EAAa9nI,UACP8nI,EAAatsH,YAAc8I,EAAQh7B,OAEnCq5N,EAAiB3lO,MAAQsnC,EAAQh7B,MAGpCg7B,EAAQ/6B,KAEbm5N,GAAmBU,EACrBhrO,EAAOgrO,GAAoB,eAAiB75N,EAAO,OAAS6M,EAAM,SAClEhe,EAAO0iO,GAAS,EAChB1iO,EAAO2iO,GAAS,EAChB3iO,EAAOmmO,WAAa,gBACf,CAEL,IAAI8E,EAAsB,WAAVvI,GAAsB,EAAI,EACtCwI,EAAuB,UAAVvI,GAAqB,EAAI,EAC1C3iO,EAAO0iO,GAAS1kN,EAAMitN,EACtBjrO,EAAO2iO,GAASxxN,EAAO+5N,EACvBlrO,EAAOmmO,WAAazD,EAAQ,KAAOC,EAIrC,IAAI19N,EAAa,CACf,cAAejiB,EAAK0rL,WAQtB,OAJA1rL,EAAKiiB,WAAa1L,EAAS,GAAI0L,EAAYjiB,EAAKiiB,YAChDjiB,EAAKgd,OAASzG,EAAS,GAAIyG,EAAQhd,EAAKgd,QACxChd,EAAK0iP,YAAcnsO,EAAS,GAAIvW,EAAKkpD,QAAQ2sI,MAAO71L,EAAK0iP,aAElD1iP,GAo7BLsnP,iBAAiB,EAMjBlnO,EAAG,SAMHte,EAAG,SAkBLiqL,WAAY,CAEV9vE,MAAO,IAEPr1E,SAAS,EAETnpB,GAzpCJ,SAAoBzd,GApBpB,IAAuB+b,EAASkG,EAoC9B,OAXA6hO,EAAU9jP,EAAKR,SAASo3L,OAAQ52L,EAAKgd,QAzBhBjB,EA6BP/b,EAAKR,SAASo3L,OA7BE30K,EA6BMjiB,EAAKiiB,WA5BzCxlB,OAAO6K,KAAK2a,GAAYzhB,SAAQ,SAAUkrB,IAE1B,IADFzJ,EAAWyJ,GAErB3P,EAAQsM,aAAaqD,EAAMzJ,EAAWyJ,IAEtC3P,EAAQ6kG,gBAAgBl1F,MA0BxB1rB,EAAK6lP,cAAgBppP,OAAO6K,KAAKtH,EAAK0iP,aAAankP,QACrDulP,EAAU9jP,EAAK6lP,aAAc7lP,EAAK0iP,aAG7B1iP,GA2oCL8sH,OA9nCJ,SAA0By9D,EAAWqM,EAAQ93L,EAASqpP,EAAiB74N,GAErE,IAAIyyN,EAAmBL,EAAoBpyN,EAAOsnK,EAAQrM,EAAWzrL,EAAQ6jP,eAKzEj3D,EAAYy1D,EAAqBriP,EAAQ4sL,UAAWq2D,EAAkBnrD,EAAQrM,EAAWzrL,EAAQ8sL,UAAUj/J,KAAKm/J,kBAAmBhtL,EAAQ8sL,UAAUj/J,KAAKk3B,SAQ9J,OANA+yI,EAAOvuK,aAAa,cAAeqjK,GAInCo4D,EAAUltD,EAAQ,CAAE77J,SAAUj8B,EAAQ6jP,cAAgB,QAAU,aAEzD7jP,GAsnCLwoP,qBAAiB15O,KAuGjBuvK,GAAS,WASX,SAASA,EAAOoN,EAAWqM,GACzB,IAAIl5L,EAAQR,KAER4B,EAAUR,UAAUC,OAAS,QAAsBqP,IAAjBtP,UAAU,GAAmBA,UAAU,GAAK,GAClFwhP,EAAe5iP,KAAMigL,GAErBjgL,KAAKquL,eAAiB,WACpB,OAAO/+H,sBAAsB9uD,EAAMgsD,SAIrCxsD,KAAKwsD,OAASq0L,EAAS7gP,KAAKwsD,OAAO97B,KAAK1wB,OAGxCA,KAAK4B,QAAUyX,EAAS,GAAI4mK,EAAOsnE,SAAU3lP,GAG7C5B,KAAKoyB,MAAQ,CACXmzN,aAAa,EACbG,WAAW,EACXW,cAAe,IAIjBrmP,KAAKqtL,UAAYA,GAAaA,EAAUtL,OAASsL,EAAU,GAAKA,EAChErtL,KAAK05L,OAASA,GAAUA,EAAO3X,OAAS2X,EAAO,GAAKA,EAGpD15L,KAAK4B,QAAQ8sL,UAAY,GACzBnvL,OAAO6K,KAAKiP,EAAS,GAAI4mK,EAAOsnE,SAAS74D,UAAW9sL,EAAQ8sL,YAAYprL,SAAQ,SAAUZ,GACxFlC,EAAMoB,QAAQ8sL,UAAUhsL,GAAQ2W,EAAS,GAAI4mK,EAAOsnE,SAAS74D,UAAUhsL,IAAS,GAAId,EAAQ8sL,UAAY9sL,EAAQ8sL,UAAUhsL,GAAQ,OAIpI1C,KAAK0uL,UAAYnvL,OAAO6K,KAAKpK,KAAK4B,QAAQ8sL,WAAWp3K,KAAI,SAAU5U,GACjE,OAAO2W,EAAS,CACd3W,KAAMA,GACLlC,EAAMoB,QAAQ8sL,UAAUhsL,OAG5BiwB,MAAK,SAAU7K,EAAGloB,GACjB,OAAOkoB,EAAEi3F,MAAQn/G,EAAEm/G,SAOrB/+G,KAAK0uL,UAAUprL,SAAQ,SAAU2nP,GAC3BA,EAAgBvhN,SAAW9Y,EAAWq6N,EAAgBr7H,SACxDq7H,EAAgBr7H,OAAOpvH,EAAM6sL,UAAW7sL,EAAMk5L,OAAQl5L,EAAMoB,QAASqpP,EAAiBzqP,EAAM4xB,UAKhGpyB,KAAKwsD,SAEL,IAAIk6L,EAAgB1mP,KAAK4B,QAAQ8kP,cAC7BA,GAEF1mP,KAAK2mP,uBAGP3mP,KAAKoyB,MAAMs0N,cAAgBA,EAqD7B,OA9CA7D,EAAY5iE,EAAQ,CAAC,CACnB5uK,IAAK,SACL1L,MAAO,WACL,OAAO6mD,EAAO9rD,KAAKV,QAEpB,CACDqR,IAAK,UACL1L,MAAO,WACL,OAAOo+B,EAAQrjC,KAAKV,QAErB,CACDqR,IAAK,uBACL1L,MAAO,WACL,OAAOghP,EAAqBjmP,KAAKV,QAElC,CACDqR,IAAK,wBACL1L,MAAO,WACL,OAAOugP,EAAsBxlP,KAAKV,UA4B/BigL,EA7HI,GAqJbA,GAAOirE,OAA2B,oBAAX53O,OAAyBA,OAAS,EAAAzO,GAAQsmP,YACjElrE,GAAOmnE,WAAaA,GACpBnnE,GAAOsnE,SAAWA,GAElB,yCC7iFA,IAAI6D,EAAuB,EAAQ,KAEnC,SAASC,KACT,SAASC,KACTA,EAAuBC,kBAAoBF,EAE3CvyO,EAAOC,QAAU,WACf,SAAS4P,EAAK5M,EAAO42C,EAAUqS,EAAei8C,EAAUuqI,EAAcC,GACpE,GAAIA,IAAWL,EAAf,CAIA,IAAIlkP,EAAM,IAAIvG,MACZ,mLAKF,MADAuG,EAAIxE,KAAO,sBACLwE,GAGR,SAASwkP,IACP,OAAO/iO,EAFTA,EAAKnmB,WAAammB,EAMlB,IAAIgjO,EAAiB,CACnBjpJ,MAAO/5E,EACPijO,OAAQjjO,EACRg8M,KAAMh8M,EACNd,KAAMc,EACNmwF,OAAQnwF,EACRk8E,OAAQl8E,EACRwF,OAAQxF,EACRpD,OAAQoD,EAERkjO,IAAKljO,EACLmjO,QAASJ,EACT7sO,QAAS8J,EACTojO,YAAapjO,EACbqjO,WAAYN,EACZjtN,KAAM9V,EACNsjO,SAAUP,EACVQ,MAAOR,EACPS,UAAWT,EACXngI,MAAOmgI,EACPU,MAAOV,EAEPW,eAAgBf,EAChBC,kBAAmBF,GAKrB,OAFAM,EAAeW,UAAYX,EAEpBA,mBC9CP7yO,EAAOC,QAAU,EAAQ,KAAR,yBCNnBD,EAAOC,QAFoB,4ECR3B,MAAMwzO,EAAkB,EAAQ,KAC1BC,EAAkB,EAAQ,MAC1BC,EAAe,EAAQ,KAyH7B,SAASxjI,EAAOtjH,EAAO/D,GACtB,OAAIA,EAAQqnH,OACJrnH,EAAQogM,OAASuqD,EAAgB5mP,GAASuN,mBAAmBvN,GAG9DA,EAGR,SAAS2qH,EAAO3qH,EAAO/D,GACtB,OAAIA,EAAQ0uH,OACJk8H,EAAgB7mP,GAGjBA,EAGR,SAAS+mP,EAAWzhP,GACnB,OAAIvL,MAAMyc,QAAQlR,GACVA,EAAM0nB,OAGO,iBAAV1nB,EACHyhP,EAAWntP,OAAO6K,KAAKa,IAC5B0nB,MAAK,CAAC7K,EAAGloB,IAAMw/F,OAAOt3E,GAAKs3E,OAAOx/F,KAClC0X,KAAIjG,GAAOpG,EAAMoG,KAGbpG,EAGR,SAAS0hP,EAAW1hP,GACnB,MAAM2hP,EAAY3hP,EAAMvD,QAAQ,KAKhC,OAJmB,IAAfklP,IACH3hP,EAAQA,EAAMiB,MAAM,EAAG0gP,IAGjB3hP,EAaR,SAAS4hP,EAAQ5hP,GAEhB,MAAM6hP,GADN7hP,EAAQ0hP,EAAW1hP,IACMvD,QAAQ,KACjC,OAAoB,IAAhBolP,EACI,GAGD7hP,EAAMiB,MAAM4gP,EAAa,GAGjC,SAASvgF,EAAW5mK,EAAO/D,GAO1B,OANIA,EAAQmrP,eAAiB3tJ,OAAOlyE,MAAMkyE,OAAOz5F,KAA6B,iBAAVA,GAAuC,KAAjBA,EAAMyjB,OAC/FzjB,EAAQy5F,OAAOz5F,IACL/D,EAAQorP,eAA2B,OAAVrnP,GAA2C,SAAxBA,EAAMmK,eAAoD,UAAxBnK,EAAMmK,gBAC9FnK,EAAgC,SAAxBA,EAAMmK,eAGRnK,EAGR,SAASqF,EAAMC,EAAOrJ,GASrB,MAAMuwB,EAzIP,SAA8BvwB,GAC7B,IAAI6E,EAEJ,OAAQ7E,EAAQqrP,aACf,IAAK,QACJ,MAAO,CAAC57O,EAAK1L,EAAOunP,KACnBzmP,EAAS,aAAa8xB,KAAKlnB,GAE3BA,EAAMA,EAAI0C,QAAQ,WAAY,IAEzBtN,QAKoBiK,IAArBw8O,EAAY77O,KACf67O,EAAY77O,GAAO,IAGpB67O,EAAY77O,GAAK5K,EAAO,IAAMd,GAR7BunP,EAAY77O,GAAO1L,GAWtB,IAAK,UACJ,MAAO,CAAC0L,EAAK1L,EAAOunP,KACnBzmP,EAAS,UAAU8xB,KAAKlnB,GACxBA,EAAMA,EAAI0C,QAAQ,QAAS,IAEtBtN,OAKoBiK,IAArBw8O,EAAY77O,GAKhB67O,EAAY77O,GAAO,GAAGyI,OAAOozO,EAAY77O,GAAM1L,GAJ9CunP,EAAY77O,GAAO,CAAC1L,GALpBunP,EAAY77O,GAAO1L,GAYtB,IAAK,QACJ,MAAO,CAAC0L,EAAK1L,EAAOunP,KACnB,MACMr1M,EAD2B,iBAAVlyC,GAAsBA,EAAMwF,MAAM,IAAIzD,QAAQ,MAAQ,EAClD/B,EAAMwF,MAAM,KAAOxF,EAC9CunP,EAAY77O,GAAOwmC,GAGrB,QACC,MAAO,CAACxmC,EAAK1L,EAAOunP,UACMx8O,IAArBw8O,EAAY77O,GAKhB67O,EAAY77O,GAAO,GAAGyI,OAAOozO,EAAY77O,GAAM1L,GAJ9CunP,EAAY77O,GAAO1L,IAuFLwnP,CARlBvrP,EAAUrC,OAAOwB,OAAO,CACvBuvH,QAAQ,EACR39F,MAAM,EACNs6N,YAAa,OACbF,cAAc,EACdC,eAAe,GACbprP,IAKG0+F,EAAM/gG,OAAOY,OAAO,MAE1B,GAAqB,iBAAV8K,EACV,OAAOq1F,EAKR,KAFAr1F,EAAQA,EAAMme,OAAOrV,QAAQ,SAAU,KAGtC,OAAOusF,EAGR,IAAK,MAAM4mI,KAASj8N,EAAME,MAAM,KAAM,CACrC,IAAKkG,EAAK1L,GAAS8mP,EAAa7qP,EAAQ0uH,OAAS42G,EAAMnzN,QAAQ,MAAO,KAAOmzN,EAAO,KAIpFvhO,OAAkB+K,IAAV/K,EAAsB,KAAO2qH,EAAO3qH,EAAO/D,GACnDuwB,EAAUm+F,EAAOj/G,EAAKzP,GAAU+D,EAAO26F,GAGxC,IAAK,MAAMjvF,KAAO9R,OAAO6K,KAAKk2F,GAAM,CACnC,MAAM36F,EAAQ26F,EAAIjvF,GAClB,GAAqB,iBAAV1L,GAAgC,OAAVA,EAChC,IAAK,MAAM+uE,KAAKn1E,OAAO6K,KAAKzE,GAC3BA,EAAM+uE,GAAK63F,EAAW5mK,EAAM+uE,GAAI9yE,QAGjC0+F,EAAIjvF,GAAOk7J,EAAW5mK,EAAO/D,GAI/B,OAAqB,IAAjBA,EAAQ+wB,KACJ2tE,IAGiB,IAAjB1+F,EAAQ+wB,KAAgBpzB,OAAO6K,KAAKk2F,GAAK3tE,OAASpzB,OAAO6K,KAAKk2F,GAAK3tE,KAAK/wB,EAAQ+wB,OAAOhP,QAAO,CAACld,EAAQ4K,KAC9G,MAAM1L,EAAQ26F,EAAIjvF,GAQlB,OAPIyvB,QAAQn7B,IAA2B,iBAAVA,IAAuBjG,MAAMyc,QAAQxW,GAEjEc,EAAO4K,GAAOq7O,EAAW/mP,GAEzBc,EAAO4K,GAAO1L,EAGRc,IACLlH,OAAOY,OAAO,OAGlB4Y,EAAQ8zO,QAAUA,EAClB9zO,EAAQ/N,MAAQA,EAEhB+N,EAAQpN,UAAY,CAACk5F,EAAQjjG,KAC5B,IAAKijG,EACJ,MAAO,GASR,MAAM1yE,EAvQP,SAA+BvwB,GAC9B,OAAQA,EAAQqrP,aACf,IAAK,QACJ,OAAO57O,GAAO,CAAC5K,EAAQd,KACtB,MAAM8B,EAAQhB,EAAOpF,OACrB,YAAcqP,IAAV/K,GAAwB/D,EAAQwrP,UAAsB,OAAVznP,EACxCc,EAGM,OAAVd,EACI,IAAIc,EAAQ,CAACwiH,EAAO53G,EAAKzP,GAAU,IAAK6F,EAAO,KAAKwe,KAAK,KAG1D,IACHxf,EACH,CAACwiH,EAAO53G,EAAKzP,GAAU,IAAKqnH,EAAOxhH,EAAO7F,GAAU,KAAMqnH,EAAOtjH,EAAO/D,IAAUqkB,KAAK,MAI1F,IAAK,UACJ,OAAO5U,GAAO,CAAC5K,EAAQd,SACR+K,IAAV/K,GAAwB/D,EAAQwrP,UAAsB,OAAVznP,EACxCc,EAGM,OAAVd,EACI,IAAIc,EAAQ,CAACwiH,EAAO53G,EAAKzP,GAAU,MAAMqkB,KAAK,KAG/C,IAAIxf,EAAQ,CAACwiH,EAAO53G,EAAKzP,GAAU,MAAOqnH,EAAOtjH,EAAO/D,IAAUqkB,KAAK,KAGhF,IAAK,QACJ,OAAO5U,GAAO,CAAC5K,EAAQd,IAClBA,SAA0D,IAAjBA,EAAMtE,OAC3CoF,EAGc,IAAlBA,EAAOpF,OACH,CAAC,CAAC4nH,EAAO53G,EAAKzP,GAAU,IAAKqnH,EAAOtjH,EAAO/D,IAAUqkB,KAAK,KAG3D,CAAC,CAACxf,EAAQwiH,EAAOtjH,EAAO/D,IAAUqkB,KAAK,MAGhD,QACC,OAAO5U,GAAO,CAAC5K,EAAQd,SACR+K,IAAV/K,GAAwB/D,EAAQwrP,UAAsB,OAAVznP,EACxCc,EAGM,OAAVd,EACI,IAAIc,EAAQwiH,EAAO53G,EAAKzP,IAGzB,IAAI6E,EAAQ,CAACwiH,EAAO53G,EAAKzP,GAAU,IAAKqnH,EAAOtjH,EAAO/D,IAAUqkB,KAAK,MAgN7DonO,CANlBzrP,EAAUrC,OAAOwB,OAAO,CACvBkoH,QAAQ,EACR+4E,QAAQ,EACRirD,YAAa,QACXrrP,IAIG0rP,EAAa/tP,OAAOwB,OAAO,GAAI8jG,GACrC,GAAIjjG,EAAQwrP,SACX,IAAK,MAAM/7O,KAAO9R,OAAO6K,KAAKkjP,QACL58O,IAApB48O,EAAWj8O,IAA0C,OAApBi8O,EAAWj8O,WACxCi8O,EAAWj8O,GAKrB,MAAMjH,EAAO7K,OAAO6K,KAAKkjP,GAMzB,OAJqB,IAAjB1rP,EAAQ+wB,MACXvoB,EAAKuoB,KAAK/wB,EAAQ+wB,MAGZvoB,EAAKkN,KAAIjG,IACf,MAAM1L,EAAQk/F,EAAOxzF,GAErB,YAAcX,IAAV/K,EACI,GAGM,OAAVA,EACIsjH,EAAO53G,EAAKzP,GAGhBlC,MAAMyc,QAAQxW,GACVA,EACLge,OAAOwO,EAAU9gB,GAAM,IACvB4U,KAAK,KAGDgjG,EAAO53G,EAAKzP,GAAW,IAAMqnH,EAAOtjH,EAAO/D,MAChDmY,QAAOmJ,GAAKA,EAAE7hB,OAAS,IAAG4kB,KAAK,MAGnClN,EAAQw0O,SAAW,CAACtiP,EAAOrJ,KACnB,CACND,IAAKgrP,EAAW1hP,GAAOE,MAAM,KAAK,IAAM,GACxCqiP,MAAOxiP,EAAM6hP,EAAQ5hP,GAAQrJ,KAI/BmX,EAAQ00O,aAAe,CAACxiP,EAAOrJ,KAC9B,MAAMD,EAAMgrP,EAAW1hP,EAAMtJ,KAAKwJ,MAAM,KAAK,IAAM,GAC7CuiP,EAAe30O,EAAQ8zO,QAAQ5hP,EAAMtJ,KACrCgsP,EAAqB50O,EAAQ/N,MAAM0iP,GACnC1oJ,EA1JP,SAAiBrjG,GAChB,IAAIqjG,EAAO,GACX,MAAM4nJ,EAAYjrP,EAAI+F,QAAQ,KAK9B,OAJmB,IAAfklP,IACH5nJ,EAAOrjG,EAAIuK,MAAM0gP,IAGX5nJ,EAmJM4oJ,CAAQ3iP,EAAMtJ,KACrB6rP,EAAQjuP,OAAOwB,OAAO4sP,EAAoB1iP,EAAMuiP,OACtD,IAAIK,EAAc90O,EAAQpN,UAAU6hP,EAAO5rP,GAK3C,OAJIisP,IACHA,EAAc,IAAIA,KAGZ,GAAGlsP,IAAMksP,IAAc7oJ,kCClU/BzlG,OAAOuO,eAAeiL,EAAS,aAAc,CAC3CpT,OAAO,IAEToT,EAAQ+0O,qBAAkB,EAE1B,IAAItuD,EAASE,EAAuB,EAAQ,OAExCquD,EAAmBruD,EAAuB,EAAQ,MAEtD,SAASA,EAAuBxmL,GAAO,OAAOA,GAAOA,EAAImB,WAAanB,EAAM,CAAE,QAAWA,GAEzF,SAAS2C,EAAQ3C,GAAwT,OAAtO2C,EAArD,mBAAXxW,QAAoD,iBAApBA,OAAOC,SAAmC,SAAiB4T,GAAO,cAAcA,GAA2B,SAAiBA,GAAO,OAAOA,GAAyB,mBAAX7T,QAAyB6T,EAAIjZ,cAAgBoF,QAAU6T,IAAQ7T,OAAOnF,UAAY,gBAAkBgZ,GAAiB2C,EAAQ3C,GAExV,SAASU,EAAQirF,EAAQu7E,GAAkB,IAAIh2K,EAAO7K,OAAO6K,KAAKy6F,GAAS,GAAItlG,OAAOsa,sBAAuB,CAAE,IAAIqrD,EAAU3lE,OAAOsa,sBAAsBgrF,GAAau7E,IAAgBl7G,EAAUA,EAAQnrD,QAAO,SAAUC,GAAO,OAAOza,OAAO0a,yBAAyB4qF,EAAQ7qF,GAAKjM,eAAgB3D,EAAKvE,KAAKc,MAAMyD,EAAM86D,GAAY,OAAO96D,EAQ9U,SAASmgB,EAAgBjoB,EAAUgoB,GAAe,KAAMhoB,aAAoBgoB,GAAgB,MAAM,IAAI7kB,UAAU,qCAEhH,SAASqW,EAAkB3K,EAAQ4K,GAAS,IAAK,IAAI7a,EAAI,EAAGA,EAAI6a,EAAM1a,OAAQH,IAAK,CAAE,IAAI8a,EAAaD,EAAM7a,GAAI8a,EAAWjO,WAAaiO,EAAWjO,aAAc,EAAOiO,EAAWhO,cAAe,EAAU,UAAWgO,IAAYA,EAAW7C,UAAW,GAAM5Z,OAAOuO,eAAeqD,EAAQ6K,EAAW3K,IAAK2K,IAI7S,SAAS4jL,EAA2B5mL,EAAMtY,GAAQ,OAAIA,GAA2B,WAAlBmb,EAAQnb,IAAsC,mBAATA,EAA8C0Y,EAAuBJ,GAAtCtY,EAEnI,SAASstP,EAAgBzlO,GAAwJ,OAAnJylO,EAAkBzuP,OAAOC,eAAiBD,OAAOu5I,eAAiB,SAAyBvwH,GAAK,OAAOA,EAAE9oB,WAAaF,OAAOu5I,eAAevwH,IAAcylO,EAAgBzlO,GAExM,SAASnP,EAAuBJ,GAAQ,QAAa,IAATA,EAAmB,MAAM,IAAIC,eAAe,6DAAgE,OAAOD,EAI/J,SAASi1O,EAAgB1lO,EAAG1oB,GAA+G,OAA1GouP,EAAkB1uP,OAAOC,gBAAkB,SAAyB+oB,EAAG1oB,GAAsB,OAAjB0oB,EAAE9oB,UAAYI,EAAU0oB,GAAa0lO,EAAgB1lO,EAAG1oB,GAErK,SAAS6Z,EAAgBR,EAAK7H,EAAK1L,GAAiK,OAApJ0L,KAAO6H,EAAO3Z,OAAOuO,eAAeoL,EAAK7H,EAAK,CAAE1L,MAAOA,EAAOoI,YAAY,EAAMC,cAAc,EAAMmL,UAAU,IAAkBD,EAAI7H,GAAO1L,EAAgBuT,EAE3M,IAAI40O,EAEJ,SAAUI,GAGR,SAASJ,IACP,IAAIK,EAEA3tP,EAEJ+pB,EAAgBvqB,KAAM8tP,GAEtB,IAAK,IAAIpjO,EAAOtpB,UAAUC,OAAQ2N,EAAO,IAAItP,MAAMgrB,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC/E3b,EAAK2b,GAAQvpB,UAAUupB,GA0BzB,OArBAjR,EAAgBN,EAFhB5Y,EAAQo/L,EAA2B5/L,MAAOmuP,EAAmBH,EAAgBF,IAAkBptP,KAAKiG,MAAMwnP,EAAkB,CAACnuP,MAAM8Z,OAAO9K,MAE3F,WAAW,SAAUkF,GAClE,IAAIk6O,EAAc5tP,EAAMub,MACpBwqB,EAAO6nN,EAAY7nN,KACnB8nN,EAASD,EAAYC,OACrBnoO,EAAWkoO,EAAYloO,SACvBtkB,EAAUwsP,EAAYxsP,QAEtBkpL,EAAO0U,EAAgB,QAAE8uD,SAASC,KAAKroO,GAEvCzf,GAAS,EAAIsnP,EAA0B,SAAGxnN,EAAM3kC,GAEhDysP,GACFA,EAAO9nN,EAAM9/B,GAIXqkL,GAAQA,EAAK/uK,OAAuC,mBAAvB+uK,EAAK/uK,MAAM8rB,SAC1CijJ,EAAK/uK,MAAM8rB,QAAQ3zB,MAIhB1T,EArDX,IAAsB8pB,EAAaG,EA0EjC,OAlEF,SAAmBjR,EAAUC,GAAc,GAA0B,mBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIhU,UAAU,sDAAyD+T,EAAStZ,UAAYX,OAAOY,OAAOsZ,GAAcA,EAAWvZ,UAAW,CAAED,YAAa,CAAE0F,MAAO6T,EAAUL,UAAU,EAAMnL,cAAc,KAAeyL,GAAYw0O,EAAgBz0O,EAAUC,GASjXomL,CAAUiuD,EAAiBI,GAjBP5jO,EAwDPwjO,EAxDoBrjO,EAwDH,CAAC,CAC7BpZ,IAAK,SACL1L,MAAO,WACL,IAAI6oP,EAAexuP,KAAK+b,MAIpBmK,GAHQsoO,EAAajoN,KACXioN,EAAaH,OACZG,EAAa5sP,QACb4sP,EAAatoO,UACxBnK,EAxEV,SAAkCzC,EAAQa,GAAY,GAAc,MAAVb,EAAgB,MAAO,GAAI,IAAkEjI,EAAKnQ,EAAnEiQ,EAEzF,SAAuCmI,EAAQa,GAAY,GAAc,MAAVb,EAAgB,MAAO,GAAI,IAA2DjI,EAAKnQ,EAA5DiQ,EAAS,GAAQiJ,EAAa7a,OAAO6K,KAAKkP,GAAqB,IAAKpY,EAAI,EAAGA,EAAIkZ,EAAW/Y,OAAQH,IAAOmQ,EAAM+I,EAAWlZ,GAAQiZ,EAASzS,QAAQ2J,IAAQ,IAAaF,EAAOE,GAAOiI,EAAOjI,IAAQ,OAAOF,EAFxM+I,CAA8BZ,EAAQa,GAAuB,GAAI5a,OAAOsa,sBAAuB,CAAE,IAAIiU,EAAmBvuB,OAAOsa,sBAAsBP,GAAS,IAAKpY,EAAI,EAAGA,EAAI4sB,EAAiBzsB,OAAQH,IAAOmQ,EAAMyc,EAAiB5sB,GAAQiZ,EAASzS,QAAQ2J,IAAQ,GAAkB9R,OAAOW,UAAU6tB,qBAAqBrtB,KAAK4Y,EAAQjI,KAAgBF,EAAOE,GAAOiI,EAAOjI,IAAU,OAAOF,EAwEjd0c,CAAyB2gO,EAAc,CAAC,OAAQ,SAAU,UAAW,aAE7E1jE,EAAO0U,EAAgB,QAAE8uD,SAASC,KAAKroO,GAE3C,OAAOs5K,EAAgB,QAAEivD,aAAa3jE,EA9E5C,SAAuB35K,GAAU,IAAK,IAAIjQ,EAAI,EAAGA,EAAIE,UAAUC,OAAQH,IAAK,CAAE,IAAIoY,EAAyB,MAAhBlY,UAAUF,GAAaE,UAAUF,GAAK,GAAQA,EAAI,EAAK0Y,EAAQN,GAAQ,GAAMhW,SAAQ,SAAU+N,GAAOqI,EAAgBvI,EAAQE,EAAKiI,EAAOjI,OAAsB9R,OAAO+gL,0BAA6B/gL,OAAOupG,iBAAiB33F,EAAQ5R,OAAO+gL,0BAA0BhnK,IAAmBM,EAAQN,GAAQhW,SAAQ,SAAU+N,GAAO9R,OAAOuO,eAAeqD,EAAQE,EAAK9R,OAAO0a,yBAAyBX,EAAQjI,OAAe,OAAOF,EA8E3cwI,CAAc,GAAIoC,EAAO,CACnE8rB,QAAS7nC,KAAK6nC,cArE4Cpd,GAAY3O,EAAkBwO,EAAYpqB,UAAWuqB,GA0E9GqjO,EA1DT,CA2DEtuD,EAAgB,QAAEkvD,eAEpB31O,EAAQ+0O,gBAAkBA,EAE1Bp0O,EAAgBo0O,EAAiB,eAAgB,CAC/CO,YAAQ39O,EACR9O,aAAS8O,iCC1GX,IACIo9O,EADW,EAAQ,MACQA,gBAE/BA,EAAgBA,gBAAkBA,EAClCh1O,EAAOC,QAAU+0O,+BCGJ,IAAIp5K,EAAE,EAAQ,MAAiBurB,EAAE,EAAQ,MAAS,SAAS7V,EAAEtiE,GAAG,IAAI,IAAIloB,EAAE,yDAAyDkoB,EAAExW,EAAE,EAAEA,EAAElQ,UAAUC,OAAOiQ,IAAI1R,GAAG,WAAWsT,mBAAmB9R,UAAUkQ,IAAI,MAAM,yBAAyBwW,EAAE,WAAWloB,EAAE,iHAC1Q,IAAIoB,EAAE,mBAAoBqE,QAAQA,OAAOspP,IAAIC,EAAG5tP,EAAEqE,OAAOspP,IAAI,gBAAgB,MAAM70F,EAAE94J,EAAEqE,OAAOspP,IAAI,kBAAkB,MAAME,EAAG7tP,EAAEqE,OAAOspP,IAAI,qBAAqB,MAAMjhH,EAAG1sI,EAAEqE,OAAOspP,IAAI,kBAAkB,MAAM9uO,EAAE7e,EAAEqE,OAAOspP,IAAI,kBAAkB,MAAMG,EAAG9tP,EAAEqE,OAAOspP,IAAI,iBAAiB,MAAMI,EAAG/tP,EAAEqE,OAAOspP,IAAI,yBAAyB,MAAMK,EAAGhuP,EAAEqE,OAAOspP,IAAI,qBAAqB,MAAMM,EAAEjuP,EAAEqE,OAAOspP,IAAI,kBAAkB,MAAMO,EAAGluP,EAAEqE,OAAOspP,IAAI,uBAAuB,MAAMQ,EAAGnuP,EAAEqE,OAAOspP,IAAI,cAAc,MAAMS,EAAGpuP,EAAEqE,OAAOspP,IAAI,cAC7f,MAAMtsD,EAAGrhM,EAAEqE,OAAOspP,IAAI,qBAAqB,MAAMU,EAAGruP,EAAEqE,OAAOspP,IAAI,eAAe,MAAMW,EAAErvJ,EAAEsvJ,mDAE1F,SAAS91F,EAAE3xI,GAAG,GAAG,MAAMA,EAAE,OAAO,KAAK,GAAG,mBAAoBA,EAAE,OAAOA,EAAEqI,aAAarI,EAAEplB,MAAM,KAAK,GAAG,iBAAkBolB,EAAE,OAAOA,EAAE,OAAOA,GAAG,KAAKgyI,EAAE,MAAM,WAAW,KAAK80F,EAAG,MAAM,SAAS,KAAKlhH,EAAG,MAAM,WAAW,KAAKmhH,EAAG,MAAM,aAAa,KAAKI,EAAE,MAAM,WAAW,KAAKC,EAAG,MAAM,eAAe,GAAG,iBAAkBpnO,EAAE,OAAOA,EAAE0nO,UAAU,KAAKV,EAAG,MAAM,mBAAmB,KAAKjvO,EAAE,MAAM,mBAAmB,KAAKmvO,EAAG,IAAIpvP,EAAEkoB,EAAE2S,OAAmC,OAA5B76B,EAAEA,EAAEuwB,aAAavwB,EAAE8C,MAAM,GAAUolB,EAAEqI,cAAc,KAAKvwB,EAAE,cAAcA,EAAE,IAAI,cACnf,KAAKuvP,EAAG,OAAO11F,EAAE3xI,EAAExb,MAAM,KAAK8iP,EAAG,GAAGtnO,EAAE,IAAIA,EAAE2nO,QAAQ3nO,EAAE4nO,QAAQ,KAAK,OAAOj2F,EAAE3xI,GAAG,OAAO,KAHuDwnO,EAAExvP,eAAe,4BAA4BwvP,EAAEK,uBAAuB,CAAC3qN,QAAQ,OAAOsqN,EAAExvP,eAAe,6BAA6BwvP,EAAEM,wBAAwB,CAACC,SAAS,OAG1N,IAAIC,EAAG,GAAG,SAASt1F,EAAE1yI,EAAEloB,GAAG,IAAI,IAAI0R,EAAiB,EAAfwW,EAAEioO,aAAez+O,GAAG1R,EAAE0R,IAAIwW,EAAExW,GAAGwW,EAAEkoO,eAAeloO,EAAEioO,aAAaz+O,EAAE,EAA0K,IAAI,IAAIsoJ,EAAE,IAAI2tC,YAAY,IAAInsC,EAAE,EAAE,GAAGA,EAAEA,IAAIxB,EAAEwB,GAAGA,EAAE,EAAExB,EAAE,IAAI,EACpa,IAAItY,EAAG,8VAA8V2uG,EAAG1wP,OAAOW,UAAUJ,eAAeowP,EAAG,GAAGhvG,EAAG,GACjZ,SAASivG,EAAGroO,GAAG,QAAGmoO,EAAGvvP,KAAKwgJ,EAAGp5H,KAAemoO,EAAGvvP,KAAKwvP,EAAGpoO,KAAew5H,EAAGlhI,KAAK0H,GAAUo5H,EAAGp5H,IAAG,GAAGooO,EAAGpoO,IAAG,GAAS,IACwG,SAASsoO,EAAEtoO,EAAEloB,EAAE0R,EAAE3R,EAAEgF,EAAEE,GAAG7E,KAAKqwP,gBAAgB,IAAIzwP,GAAG,IAAIA,GAAG,IAAIA,EAAEI,KAAKmpB,cAAcxpB,EAAEK,KAAKswP,mBAAmB3rP,EAAE3E,KAAKuwP,gBAAgBj/O,EAAEtR,KAAKywD,aAAa3oC,EAAE9nB,KAAKsM,KAAK1M,EAAEI,KAAKwwP,YAAY3rP,EAAE,IAAIqlK,EAAE,GACxZ,uIAAuI/+J,MAAM,KAAK7H,SAAQ,SAASwkB,GAAGoiJ,EAAEpiJ,GAAG,IAAIsoO,EAAEtoO,EAAE,GAAE,EAAGA,EAAE,MAAK,MAAM,CAAC,CAAC,gBAAgB,kBAAkB,CAAC,YAAY,SAAS,CAAC,UAAU,OAAO,CAAC,YAAY,eAAexkB,SAAQ,SAASwkB,GAAG,IAAIloB,EAAEkoB,EAAE,GAAGoiJ,EAAEtqK,GAAG,IAAIwwP,EAAExwP,EAAE,GAAE,EAAGkoB,EAAE,GAAG,MAAK,MAAM,CAAC,kBAAkB,YAAY,aAAa,SAASxkB,SAAQ,SAASwkB,GAAGoiJ,EAAEpiJ,GAAG,IAAIsoO,EAAEtoO,EAAE,GAAE,EAAGA,EAAEhY,cAAc,MAAK,MAC9d,CAAC,cAAc,4BAA4B,YAAY,iBAAiBxM,SAAQ,SAASwkB,GAAGoiJ,EAAEpiJ,GAAG,IAAIsoO,EAAEtoO,EAAE,GAAE,EAAGA,EAAE,MAAK,MAAM,wNAAwN3c,MAAM,KAAK7H,SAAQ,SAASwkB,GAAGoiJ,EAAEpiJ,GAAG,IAAIsoO,EAAEtoO,EAAE,GAAE,EAAGA,EAAEhY,cAAc,MAAK,MACzZ,CAAC,UAAU,WAAW,QAAQ,YAAYxM,SAAQ,SAASwkB,GAAGoiJ,EAAEpiJ,GAAG,IAAIsoO,EAAEtoO,EAAE,GAAE,EAAGA,EAAE,MAAK,MAAM,CAAC,UAAU,YAAYxkB,SAAQ,SAASwkB,GAAGoiJ,EAAEpiJ,GAAG,IAAIsoO,EAAEtoO,EAAE,GAAE,EAAGA,EAAE,MAAK,MAAM,CAAC,OAAO,OAAO,OAAO,QAAQxkB,SAAQ,SAASwkB,GAAGoiJ,EAAEpiJ,GAAG,IAAIsoO,EAAEtoO,EAAE,GAAE,EAAGA,EAAE,MAAK,MAAM,CAAC,UAAU,SAASxkB,SAAQ,SAASwkB,GAAGoiJ,EAAEpiJ,GAAG,IAAIsoO,EAAEtoO,EAAE,GAAE,EAAGA,EAAEhY,cAAc,MAAK,MAAM,IAAIm6J,EAAE,gBAAgB,SAASvQ,EAAE5xI,GAAG,OAAOA,EAAE,GAAG4D,cAC7X,0jCAA0jCvgB,MAAM,KAAK7H,SAAQ,SAASwkB,GAAG,IAAIloB,EAAEkoB,EAAE/T,QAAQk2J,EACzmCvQ,GAAGwQ,EAAEtqK,GAAG,IAAIwwP,EAAExwP,EAAE,GAAE,EAAGkoB,EAAE,MAAK,MAAM,2EAA2E3c,MAAM,KAAK7H,SAAQ,SAASwkB,GAAG,IAAIloB,EAAEkoB,EAAE/T,QAAQk2J,EAAEvQ,GAAGwQ,EAAEtqK,GAAG,IAAIwwP,EAAExwP,EAAE,GAAE,EAAGkoB,EAAE,gCAA+B,MAAM,CAAC,WAAW,WAAW,aAAaxkB,SAAQ,SAASwkB,GAAG,IAAIloB,EAAEkoB,EAAE/T,QAAQk2J,EAAEvQ,GAAGwQ,EAAEtqK,GAAG,IAAIwwP,EAAExwP,EAAE,GAAE,EAAGkoB,EAAE,wCAAuC,MAAM,CAAC,WAAW,eAAexkB,SAAQ,SAASwkB,GAAGoiJ,EAAEpiJ,GAAG,IAAIsoO,EAAEtoO,EAAE,GAAE,EAAGA,EAAEhY,cAAc,MAAK,MAC9bo6J,EAAEumF,UAAU,IAAIL,EAAE,YAAY,GAAE,EAAG,aAAa,gCAA+B,GAAI,CAAC,MAAM,OAAO,SAAS,cAAc9sP,SAAQ,SAASwkB,GAAGoiJ,EAAEpiJ,GAAG,IAAIsoO,EAAEtoO,EAAE,GAAE,EAAGA,EAAEhY,cAAc,MAAK,MAAM,IAAI4gP,EAAG,UAChM,SAASjoH,EAAE3gH,GAAG,GAAG,kBAAmBA,GAAG,iBAAkBA,EAAE,MAAM,GAAGA,EAAEA,EAAE,GAAGA,EAAE,IAAIloB,EAAE8wP,EAAGn4N,KAAKzQ,GAAG,GAAGloB,EAAE,CAAC,IAASD,EAAL2R,EAAE,GAAK3M,EAAE,EAAE,IAAIhF,EAAEC,EAAE6H,MAAM9H,EAAEmoB,EAAEzmB,OAAO1B,IAAI,CAAC,OAAOmoB,EAAEm9E,WAAWtlG,IAAI,KAAK,GAAGC,EAAE,SAAS,MAAM,KAAK,GAAGA,EAAE,QAAQ,MAAM,KAAK,GAAGA,EAAE,SAAS,MAAM,KAAK,GAAGA,EAAE,OAAO,MAAM,KAAK,GAAGA,EAAE,OAAO,MAAM,QAAQ,SAAS+E,IAAIhF,IAAI2R,GAAGwW,EAAEzb,UAAU1H,EAAEhF,IAAIgF,EAAEhF,EAAE,EAAE2R,GAAG1R,EAAEkoB,EAAEnjB,IAAIhF,EAAE2R,EAAEwW,EAAEzb,UAAU1H,EAAEhF,GAAG2R,EAAE,OAAOwW,EAC9X,SAAS6oO,EAAG7oO,EAAEloB,GAAG,IAAwCD,EAApC2R,EAAE44J,EAAEpqK,eAAegoB,GAAGoiJ,EAAEpiJ,GAAG,KAAsH,OAAxGnoB,EAAE,UAAUmoB,KAAEnoB,EAAE,OAAO2R,EAAE,IAAIA,EAAEhF,KAAO,EAAEwb,EAAEzmB,SAAS,MAAMymB,EAAE,IAAI,MAAMA,EAAE,MAAI,MAAMA,EAAE,IAAI,MAAMA,EAAE,KAAYnoB,GARzK,SAAYmoB,EAAEloB,EAAE0R,EAAE3R,GAAG,GAAG,MAAOC,GADoF,SAAYkoB,EAAEloB,EAAE0R,EAAE3R,GAAG,GAAG,OAAO2R,GAAG,IAAIA,EAAEhF,KAAK,OAAM,EAAG,cAAc1M,GAAG,IAAK,WAAW,IAAK,SAAS,OAAM,EAAG,IAAK,UAAU,OAAiB,OAAO0R,GAASA,EAAE++O,gBAAmD,WAAnCvoO,EAAEA,EAAEhY,cAAc5D,MAAM,EAAE,KAAsB,UAAU4b,EAAE,QAAQ,OAAM,GACnTw2L,CAAGx2L,EAAEloB,EAAE0R,GAAK,OAAM,EAAiB,GAAG,OAAOA,EAAE,OAAOA,EAAEhF,MAAM,KAAK,EAAE,OAAO1M,EAAE,KAAK,EAAE,OAAM,IAAKA,EAAE,KAAK,EAAE,OAAOstB,MAAMttB,GAAG,KAAK,EAAE,OAAOstB,MAAMttB,IAAI,EAAEA,EAAE,OAAM,EAQzCgxP,CAAG9oO,EAAEloB,EAAE0R,GAAY,GAAM,OAAOA,GAAGwW,EAAExW,EAAE6X,cAA0B,KAAZxpB,EAAE2R,EAAEhF,OAAe,IAAI3M,IAAG,IAAKC,EAASkoB,EAAE,OAAMxW,EAAEk/O,cAAc5wP,EAAE,GAAGA,GAAUkoB,OAAW2gH,EAAE7oI,GAAG,MAAYuwP,EAAGroO,GAAGA,OAAW2gH,EAAE7oI,GAAG,IAAK,GACvW,IAAIwhJ,EAAG,mBAAoB7hJ,OAAO6iL,GAAG7iL,OAAO6iL,GAD8T,SAAYt6J,EAAEloB,GAAG,OAAOkoB,IAAIloB,IAAI,IAAIkoB,GAAG,EAAEA,GAAI,EAAEloB,IAAIkoB,GAAIA,GAAGloB,GAAIA,GACtXixP,EAAE,KAAK1qP,EAAE,KAAKuuG,EAAE,KAAK+zF,GAAE,EAAGj9D,GAAE,EAAGslH,EAAE,KAAKC,EAAE,EAAE,SAAS1pH,IAAI,GAAG,OAAOwpH,EAAE,MAAMlwP,MAAMypF,EAAE,MAAM,OAAOymK,EAAE,SAASG,IAAK,GAAG,EAAED,EAAE,MAAMpwP,MAAMypF,EAAE,MAAM,MAAM,CAAC6mK,cAAc,KAAKh+B,MAAM,KAAK9tN,KAAK,MAAM,SAAS+rP,IAAqG,OAAhG,OAAOx8I,EAAE,OAAOvuG,GAAGsiM,GAAE,EAAGtiM,EAAEuuG,EAAEs8I,MAAOvoD,GAAE,EAAG/zF,EAAEvuG,GAAG,OAAOuuG,EAAEvvG,MAAMsjM,GAAE,EAAG/zF,EAAEA,EAAEvvG,KAAK6rP,MAAOvoD,GAAE,EAAG/zF,EAAEA,EAAEvvG,MAAauvG,EAAE,SAASy8I,EAAGrpO,EAAEloB,EAAE0R,EAAE3R,GAAG,KAAK6rI,GAAGA,GAAE,EAAGulH,GAAG,EAAEr8I,EAAE,KAAKpjG,EAAEwW,EAAEloB,EAAED,GAAyB,OAAtBwG,EAAE0qP,EAAE,KAAKE,EAAE,EAAEr8I,EAAEo8I,EAAE,KAAYx/O,EAAE,SAAS8/O,EAAGtpO,EAAEloB,GAAG,MAAM,mBAAoBA,EAAEA,EAAEkoB,GAAGloB,EAC1e,SAASyxP,EAAGvpO,EAAEloB,EAAE0R,GAAgB,GAAbu/O,EAAExpH,IAAI3yB,EAAEw8I,IAAQzoD,EAAE,CAAC,IAAI9oM,EAAE+0G,EAAEu+G,MAAmB,GAAbrzN,EAAED,EAAEo6N,SAAY,OAAO+2B,QAAe,KAAXx/O,EAAEw/O,EAAEpvP,IAAI/B,IAAe,CAACmxP,EAAE9uP,OAAOrC,GAAGA,EAAE+0G,EAAEu8I,cAAc,GAAGtxP,EAAEmoB,EAAEnoB,EAAE2R,EAAEw/C,QAAQx/C,EAAEA,EAAEnM,WAAW,OAAOmM,GAAqB,OAAlBojG,EAAEu8I,cAActxP,EAAQ,CAACA,EAAEC,GAAG,MAAM,CAAC80G,EAAEu8I,cAAcrxP,GAA+I,OAA5IkoB,EAAEA,IAAIspO,EAAG,mBAAoBxxP,EAAEA,IAAIA,OAAE,IAAS0R,EAAEA,EAAE1R,GAAGA,EAAE80G,EAAEu8I,cAAcnpO,EAAsCA,GAApCA,EAAE4sF,EAAEu+G,MAAM,CAACtjL,KAAK,KAAKoqL,SAAS,OAAUA,SAASu3B,EAAG5gO,KAAK,KAAKmgO,EAAE/oO,GAAS,CAAC4sF,EAAEu8I,cAAcnpO,GAC5Y,SAASwpO,EAAGxpO,EAAEloB,EAAE0R,GAAG,KAAK,GAAGy/O,GAAG,MAAMpwP,MAAMypF,EAAE,MAAM,GAAGtiE,IAAI+oO,EAAE,GAAGrlH,GAAE,EAAG1jH,EAAE,CAACgpC,OAAOx/C,EAAEnM,KAAK,MAAM,OAAO2rP,IAAIA,EAAE,IAAIhqD,UAAgB,KAAXx1L,EAAEw/O,EAAEpvP,IAAI9B,IAAckxP,EAAEr2O,IAAI7a,EAAEkoB,OAAO,CAAC,IAAIloB,EAAE0R,EAAE,OAAO1R,EAAEuF,MAAMvF,EAAEA,EAAEuF,KAAKvF,EAAEuF,KAAK2iB,GAAG,SAASypO,MACzM,IAAIlnF,GAAE,EAAEmnF,GAAG,CAACC,YAAY,SAAS3pO,GAAG,IAAIloB,EAAEyqK,GAAS,OAAP7P,EAAE1yI,EAAEloB,GAAUkoB,EAAEloB,IAAI8xP,WAAW,SAAS5pO,GAAGu/G,IAAI,IAAIznI,EAAEyqK,GAAS,OAAP7P,EAAE1yI,EAAEloB,GAAUkoB,EAAEloB,IAAI+xP,QAAQ,SAAS7pO,EAAEloB,GAAoC,GAAjCixP,EAAExpH,IAAWznI,OAAE,IAASA,EAAE,KAAKA,EAAK,QAA9B80G,EAAEw8I,KAAqC,CAAC,IAAI5/O,EAAEojG,EAAEu8I,cAAc,GAAG,OAAO3/O,GAAG,OAAO1R,EAAE,CAACkoB,EAAE,CAAC,IAAInoB,EAAE2R,EAAE,GAAG,GAAG,OAAO3R,EAAEA,GAAE,MAAO,CAAC,IAAI,IAAIgF,EAAE,EAAEA,EAAEhF,EAAE0B,QAAQsD,EAAE/E,EAAEyB,OAAOsD,IAAI,IAAIy8I,EAAGxhJ,EAAE+E,GAAGhF,EAAEgF,IAAI,CAAChF,GAAE,EAAG,MAAMmoB,EAAEnoB,GAAE,GAAI,GAAGA,EAAE,OAAO2R,EAAE,IAAgC,OAA5BwW,EAAEA,IAAI4sF,EAAEu8I,cAAc,CAACnpO,EAAEloB,GAAUkoB,GAAG8pO,WAAWP,EAAGQ,OAAO,SAAS/pO,GAAG+oO,EAAExpH,IAAW,IAAIznI,GAAX80G,EAAEw8I,KAAaD,cAAc,OAAO,OAAOrxP,GAAGkoB,EAAE,CAACkd,QAAQld,GAAG4sF,EAAEu8I,cACtfnpO,GAAGloB,GAAGkyP,SAAS,SAAShqO,GAAG,OAAOupO,EAAGD,EAAGtpO,IAAIiqO,gBAAgB,aAAaC,YAAY,SAASlqO,GAAG,OAAOA,GAAGmqO,oBAAoBV,GAAGW,UAAUX,GAAGY,cAAcZ,GAAGa,aAAa,SAAStqO,EAAEloB,GAAG,MAAM,CAACmc,MAAMnc,EAAEyyP,UAAUvqO,IAAIwqO,iBAAiB,SAASxqO,GAAO,OAAJu/G,IAAWv/G,GAAGyqO,cAAc,WAAe,OAAJlrH,IAAU,CAAC,SAASv/G,GAAGA,MAAK,KAAM0qO,GAAS,+BACvU,SAASC,GAAG3qO,GAAG,OAAOA,GAAG,IAAK,MAAM,MAAM,6BAA6B,IAAK,OAAO,MAAM,qCAAqC,QAAQ,MAAM,gCAC5I,IAAI4qO,GAAG,CAACp9D,MAAK,EAAG7lJ,MAAK,EAAGm6D,IAAG,EAAGplD,KAAI,EAAGmuM,OAAM,EAAGn9D,IAAG,EAAG7hF,KAAI,EAAG1oG,OAAM,EAAG2nP,QAAO,EAAGC,MAAK,EAAGC,MAAK,EAAG5rB,OAAM,EAAG5tN,QAAO,EAAGy5O,OAAM,EAAGC,KAAI,GAAIC,GAAGv+K,EAAE,CAACw+K,UAAS,GAAIR,IAAI/4F,GAAE,CAACw5F,yBAAwB,EAAGC,mBAAkB,EAAGC,kBAAiB,EAAGC,kBAAiB,EAAGC,SAAQ,EAAGC,cAAa,EAAGC,iBAAgB,EAAGvxG,aAAY,EAAG3gG,SAAQ,EAAGmyM,MAAK,EAAGj+F,UAAS,EAAGk+F,cAAa,EAAGC,YAAW,EAAGC,cAAa,EAAGC,WAAU,EAAGC,UAAS,EAAGC,SAAQ,EAAGC,YAAW,EAAGC,aAAY,EAAGC,cAAa,EAAGC,YAAW,EAAGC,eAAc,EAAGC,gBAAe,EAC7fC,iBAAgB,EAAGl0B,YAAW,EAAGm0B,WAAU,EAAG/1G,YAAW,EAAGr0H,SAAQ,EAAG20F,OAAM,EAAG01I,SAAQ,EAAGC,SAAQ,EAAGC,QAAO,EAAG/jN,QAAO,EAAGgkN,MAAK,EAAGC,aAAY,EAAGC,cAAa,EAAGC,aAAY,EAAGC,iBAAgB,EAAGC,kBAAiB,EAAGC,kBAAiB,EAAGC,eAAc,EAAG3nJ,aAAY,GAAI4nJ,GAAG,CAAC,SAAS,KAAK,MAAM,KAAK71P,OAAO6K,KAAKuvJ,IAAGr2J,SAAQ,SAASwkB,GAAGstO,GAAG9xP,SAAQ,SAAS1D,GAAGA,EAAEA,EAAEkoB,EAAE4G,OAAO,GAAGhD,cAAc5D,EAAEzb,UAAU,GAAGstJ,GAAE/5J,GAAG+5J,GAAE7xI,SACvZ,IAAIutO,GAAG,WAAWC,GAAG,OAAOlrF,GAAEnqE,EAAEquJ,SAASxnJ,QAAQyuJ,GAAGjG,EAAEK,uBAAuB6F,GAAG,CAACC,SAAQ,EAAG1/D,KAAI,EAAG2/D,UAAS,GAAIC,GAAG,8BAA8BC,GAAG,GAAGC,GAAG,GAA4HC,GAAGv2P,OAAOW,UAAUJ,eAAei2P,GAAG,CAAC7vO,SAAS,KAAK8vO,wBAAwB,KAAKC,+BAA+B,KAAKC,yBAAyB,MAAM,SAASC,GAAGruO,EAAEloB,GAAG,QAAG,IAASkoB,EAAE,MAAMnnB,MAAMypF,EAAE,IAAIqvE,EAAE75J,IAAI,cAKle,IAAIw2P,GAAG,WAAW,SAAStuO,EAAEA,EAAEloB,GAAGqgG,EAAEo2J,eAAevuO,GAAGA,EAAExb,OAAOwtJ,EAAEhyI,EAAE,CAACA,IAAIA,EAAEA,EAAE/L,MAAMmK,SAAS4B,EAAEm4E,EAAEo2J,eAAevuO,GAAG,CAACA,GAAGsiJ,GAAEtiJ,IAAIA,EAAEsiJ,GAAEtiJ,GAAGA,EAAE,CAACxb,KAAK,KAAKgqP,aAAa9D,GAAQtsO,SAAS4B,EAAEyuO,WAAW,EAAE9nF,QAAQqhF,EAAG5gN,OAAO,IAAI,IAAI59B,EAAEsoJ,EAAE,GAAG,GAAG,IAAItoJ,EAAE,CAAC,IAAIzM,EAAE+0J,EAAiBj6J,EAAE,GAAjB2R,EAAEzM,EAAExD,QAAiB,KAAK,OAAO1B,GAAG,MAAMgB,MAAMypF,EAAE,MAAM,IAAIW,EAAE,IAAIw8G,YAAY5nM,GAAyB,IAAtBorF,EAAEtwE,IAAI5V,IAAG+0J,EAAE7uE,GAAI,GAAGz5E,EAAE,EAAMzM,EAAEyM,EAAEzM,EAAElF,EAAE,EAAEkF,IAAI+0J,EAAE/0J,GAAGA,EAAE,EAAE+0J,EAAEj6J,EAAE,GAAG,OAAOi6J,EAAE,GAAGA,EAAEtoJ,GAAGtR,KAAKw2P,SAASllP,EAAEtR,KAAKupB,MAAM,CAACzB,GAAG9nB,KAAKy2P,WAAU,EAAGz2P,KAAK02P,mBAAmB,KAAK12P,KAAK22P,qBAAoB,EAAG32P,KAAK42P,iBACxfh3P,EAAEI,KAAK62P,cAAc,EAAE72P,KAAK82P,cAAc,EAAE92P,KAAK+2P,aAAa,GAAG/2P,KAAKg3P,kBAAkB,GAAG,IAAIp3P,EAAEkoB,EAAE5nB,UAYsH,OAZ5GN,EAAEmkC,QAAQ,WAAW,IAAI/jC,KAAKy2P,UAAU,CAACz2P,KAAKy2P,WAAU,EAAGz2P,KAAKi3P,iBAAiB,IAAInvO,EAAE9nB,KAAKw2P,SAAS58F,EAAE9xI,GAAG8xI,EAAE,GAAGA,EAAE,GAAG9xI,IAAIloB,EAAEs3P,aAAa,SAASpvO,GAAG,IAAIxW,IAAItR,KAAK82P,aAAal3P,EAAEkoB,EAAExb,KAAKoiI,SAAS7pI,EAAE7E,KAAKw2P,SAASh8F,EAAE56J,EAAEiF,GAAG,IAAIqe,EAAEtjB,EAAEiF,GAAG7E,KAAK+2P,aAAazlP,GAAG1R,EAAEI,KAAKg3P,kBAAkB1lP,GAAG4R,EAAEtjB,EAAEiF,GAAGijB,EAAE/L,MAAMpW,OAAO/F,EAAEu3P,YAAY,WAAW,IAAIrvO,EAAE9nB,KAAK82P,aAAal3P,EAAEI,KAAK+2P,aAAajvO,GAAGnjB,EAAE3E,KAAKg3P,kBAAkBlvO,GACtf9nB,KAAK+2P,aAAajvO,GAAG,KAAK9nB,KAAKg3P,kBAAkBlvO,GAAG,KAAK9nB,KAAK82P,eAAel3P,EAAEI,KAAKw2P,UAAU7xP,GAAG/E,EAAEq3P,eAAe,WAAW,IAAI,IAAInvO,EAAE9nB,KAAK82P,aAAa,GAAGhvO,EAAEA,IAAI9nB,KAAK+2P,aAAajvO,GAAG9nB,KAAKw2P,UAAUx2P,KAAKg3P,kBAAkBlvO,IAAIloB,EAAEgyH,KAAK,SAAS9pG,GAAG,GAAG9nB,KAAKy2P,UAAU,OAAO,KAAK,IAAI72P,EAAEyqK,GAAEA,GAAErqK,KAAKw2P,SAAS,IAAIllP,EAAEikP,GAAGvwN,QAAQuwN,GAAGvwN,QAAQwsN,GAAG,IAAI,IAAI,IAAI3sP,EAAE,CAAC,IAAIqe,GAAE,EAAGre,EAAE,GAAGxD,OAAOymB,GAAG,CAAC,GAAG,IAAI9nB,KAAKupB,MAAMloB,OAAO,CAACrB,KAAKy2P,WAAU,EAAG,IAAI1rK,EAAE/qF,KAAKw2P,SAAS58F,EAAE7uE,GAAG6uE,EAAE,GAAGA,EAAE,GAAG7uE,EAAE,MAAM,IAAIjlF,EAAE9F,KAAKupB,MAAMvpB,KAAKupB,MAAMloB,OAAO,GAAG,GAAG6hB,GAAGpd,EAAEywP,YACtfzwP,EAAEogB,SAAS7kB,OAAO,CAAC,IAAI2sI,EAAEloI,EAAEopC,OAA8D,GAAvD,KAAK8+F,IAAIhuI,KAAK22P,qBAAoB,GAAI32P,KAAKupB,MAAM3jB,MAAS,WAAWE,EAAEwG,KAAKtM,KAAK02P,mBAAmB,UAAU,GAAG,MAAM5wP,EAAEwG,MAAM,MAAMxG,EAAEwG,KAAKA,MAAMxG,EAAEwG,KAAKA,KAAKkjP,WAAW3vO,EAAE7f,KAAKm3P,YAAYrxP,EAAEwG,WAAW,GAAGxG,EAAEwG,OAAO2iP,EAAE,CAACjvP,KAAK62P,gBAAgB,IAAIjpH,EAAE/oI,EAAEe,MAAM,GAAGsd,EAAE,CAACA,GAAE,EAAG,IAAI/hB,EAAE2E,EAAEsxP,cAAc,IAAIj2P,EAAE,MAAMR,MAAMypF,EAAE,MAAMpqF,KAAKupB,MAAM1jB,KAAK1E,GAAG0D,EAAE7E,KAAK62P,gBAAgB,kBAAkB,SAAchyP,EAAE7E,KAAK62P,gBAAgBjpH,EAAE/oI,EAAE7E,KAAK62P,gBAAgB7oH,MAAM,CAAC,IAAI58H,EAAEtL,EAAEogB,SAASpgB,EAAEywP,cAC5ehxP,EAAE,GAAG,IAAIA,GAAGvF,KAAKy6B,OAAOrpB,EAAEtL,EAAE2oK,QAAQ3oK,EAAEwwP,cAAc,MAAMnsO,GAAG,GAAG,MAAMA,GAAG,mBAAoBA,EAAEzjB,KAAK,MAAM/F,MAAMypF,EAAE,MAAM,MAAMjgE,EAAYtlB,EAAExD,QAAQrB,KAAK62P,eAAehyP,EAAEgB,KAAK,IAAIhB,EAAE7E,KAAK62P,gBAAgBtxP,GAAG,OAAOV,EAAE,GAAG,QAAQ0wP,GAAGvwN,QAAQ1zB,EAAE+4J,GAAEzqK,IAAIA,EAAE66B,OAAO,SAAS3S,EAAEloB,EAAE+E,GAAG,GAAG,iBAAkBmjB,GAAG,iBAAkBA,EAAU,MAAG,KAAVnjB,EAAE,GAAGmjB,GAAkB,GAAM9nB,KAAK42P,iBAAwBnuH,EAAE9jI,GAAM3E,KAAK22P,oBAA0B,iBAAiBluH,EAAE9jI,IAAG3E,KAAK22P,qBAAoB,EAAUluH,EAAE9jI,IAC1c,GADqemjB,GAAxBloB,EARzd,SAAYkoB,EAAEloB,EAAE0R,GAAG,SAAS3R,EAAEA,EAAEkF,GAAG,IAAIiB,EAAEjB,EAAE3E,WAAW2E,EAAE3E,UAAUm3P,iBAAiB1yP,EArB+G,SAAYmjB,EAAEloB,EAAE0R,EAAE3R,GAAG,GAAGA,GAAoB,iBAAhBA,EAAEmoB,EAAEg7L,cAAiC,OAAOnjN,EAAG,OAAO66J,EAAE76J,EAAE2R,GAAG3R,EAAE2R,GAAG,GAAGwW,EAAEA,EAAE+mJ,aAAa,CAAM,IAAI,IAAIlqK,KAAb2M,EAAE,GAAgBwW,EAAExW,EAAE3M,GAAG/E,EAAE+E,GAAG/E,EAAE0R,OAAO1R,EAAEkwP,EAAG,OAAOlwP,EAqBnR03P,CAAGzyP,EAAEjF,EAAE0R,EAAExL,GAAGod,EAAE,GAAG6nE,GAAE,EAAG35E,EAAE,CAACmmP,UAAU,WAAW,OAAM,GAAIC,mBAAmB,WAAW,GAAG,OAAOt0O,EAAE,OAAO,MAAMu0O,oBAAoB,SAAS3vO,EAAExW,GAAGy5E,GAAE,EAAG7nE,EAAE,CAAC5R,IAAIomP,gBAAgB,SAAS5vO,EAAExW,GAAG,GAAG,OAAO4R,EAAE,OAAO,KAAKA,EAAErd,KAAKyL,KAAK,GAAGxL,GAAG,GAAGA,EAAE,IAAIjB,EAAElF,EAAEoc,MAAMpX,EAAEyM,GAAG,mBAAoBvM,EAAEm2E,yBAAyB,CAAC,IAAIz1E,EAAEV,EAAEm2E,yBAAyBt6E,KAAK,KAAKf,EAAEoc,MAAMjW,EAAEssB,OAAO,MAAM7sB,IAAIO,EAAEssB,MAAMsiD,EAAE,GAAG5uE,EAAEssB,MAAM7sB,UAAU,GAAGsrP,EAAE,GAAG/qP,EAAEjB,EAAElF,EAAEoc,MACrfpX,EAAEyM,GAAuB,OAApBtL,EAAEqrP,EAAGtsP,EAAElF,EAAEoc,MAAMjW,EAAEnB,KAAY,MAAMmB,EAAE20B,OAAoB,YAAR07N,GAAJruO,EAAEhiB,EAAOjB,GAAyF,GAA/EiB,EAAEiW,MAAMpc,EAAEoc,MAAMjW,EAAE2oK,QAAQ9pK,EAAEmB,EAAE6xP,QAAQvmP,OAAY,KAAVA,EAAEtL,EAAEssB,SAAmBtsB,EAAEssB,MAAMhhB,EAAE,MAAS,mBAAoBtL,EAAE8xP,2BAA2B,mBAAoB9xP,EAAE+xP,mBAAmB,GAAG,mBAAoB/xP,EAAE+xP,oBAAoB,mBAAoBhzP,EAAEm2E,0BAA0Bl1E,EAAE+xP,qBAAqB,mBAAoB/xP,EAAE8xP,2BAA2B,mBAAoB/yP,EAAEm2E,0BAA0Bl1E,EAAE8xP,4BAA4B10O,EAAE7hB,OAAO,CAAC+P,EAAE8R,EAAE,IAAIiH,EACtf4gE,EAAc,GAAZ7nE,EAAE,KAAK6nE,GAAE,EAAM5gE,GAAG,IAAI/Y,EAAE/P,OAAOyE,EAAEssB,MAAMhhB,EAAE,OAAO,CAAC7L,EAAE4kB,EAAE/Y,EAAE,GAAGtL,EAAEssB,MAAM,IAAIxtB,GAAE,EAAG,IAAIulB,EAAEA,EAAE,EAAE,EAAEA,EAAE/Y,EAAE/P,OAAO8oB,IAAI,CAAC,IAAItqB,EAAEuR,EAAE+Y,GAAmD,OAAhDtqB,EAAE,mBAAoBA,EAAEA,EAAEa,KAAKoF,EAAEP,EAAE5F,EAAEoc,MAAMpX,GAAG9E,KAAY+E,GAAGA,GAAE,EAAGW,EAAEmvE,EAAE,GAAGnvE,EAAE1F,IAAI60E,EAAEnvE,EAAE1F,IAAIiG,EAAEssB,MAAM7sB,QAAQ2d,EAAE,KAA0B,GAARizO,GAAbruO,EAAEhiB,EAAE20B,SAAc51B,GAAM,mBAAoBiB,EAAEqoK,iBAAwC,iBAAtBxuK,EAAEkF,EAAEwpK,mBAAuC,CAAC,IAAI9iC,EAAEzlI,EAAEqoK,kBAAkB,IAAI,IAAItU,KAAKtuB,EAAE,KAAKsuB,KAAKl6J,GAAG,MAAMgB,MAAMypF,EAAE,IAAIqvE,EAAE50J,IAAI,UAAUg1J,IAAKtuB,IAAI3rI,EAAE80E,EAAE,GAAG90E,EAAE2rI,IAAI,KAAKtrC,EAAEo2J,eAAevuO,IAAI,CAAC,IAAInjB,EAAEmjB,EAAEjjB,EAAEF,EAAE2H,KAAK,GAAG,mBACpezH,EAAE,MAAMlF,EAAEgF,EAAEE,GAAG,MAAM,CAAC2mB,MAAM1D,EAAE2mJ,QAAQ7uK,GAK8ak4P,CAAGhwO,EAAEloB,EAAEI,KAAKw2P,WAAchrO,MACrf5rB,EAAEA,EAAE6uK,QAAW,OAAO3mJ,IAAG,IAAKA,EAAE,MAAM,GAAG,IAAIm4E,EAAEo2J,eAAevuO,GAAG,CAAC,GAAG,MAAMA,GAAG,MAAMA,EAAE0nO,SAAS,CAAc,IAAb7qP,EAAEmjB,EAAE0nO,YAAgBZ,EAAG,MAAMjuP,MAAMypF,EAAE,MAAM,MAAMzpF,MAAMypF,EAAE,IAAIzlF,EAAEnB,aAA6G,OAA/FskB,EAAEsiJ,GAAEtiJ,GAAG9nB,KAAKupB,MAAM1jB,KAAK,CAACyG,KAAK,KAAKgqP,aAAa3xP,EAAEuhB,SAAS4B,EAAEyuO,WAAW,EAAE9nF,QAAQ7uK,EAAEsvC,OAAO,KAAW,GAAG,IAAI59B,EAAEwW,EAAExb,KAAK,GAAG,iBAAkBgF,EAAE,OAAOtR,KAAK+3P,UAAUjwO,EAAEloB,EAAE+E,GAAG,OAAO2M,GAAG,KAAKu9O,EAAG,KAAKE,EAAG,KAAKrhH,EAAG,KAAKwhH,EAAG,KAAKp1F,EAAE,OAAOhyI,EAAEsiJ,GAAEtiJ,EAAE/L,MAAMmK,UAAUlmB,KAAKupB,MAAM1jB,KAAK,CAACyG,KAAK,KAAKgqP,aAAa3xP,EAAEuhB,SAAS4B,EAAEyuO,WAAW,EAAE9nF,QAAQ7uK,EAAEsvC,OAAO,KACvf,GAAG,KAAK+/M,EAAE,MAAMtuP,MAAMypF,EAAE,MAAO,GAAG,iBAAkB94E,GAAG,OAAOA,EAAE,OAAOA,EAAEk+O,UAAU,KAAKR,EAAG6B,EAAE,GAAG,IAAIlxP,EAAE2R,EAAEmpB,OAAO3S,EAAE/L,MAAM+L,EAAEiV,KAAmI,OAA9Hp9B,EAAEwxP,EAAG7/O,EAAEmpB,OAAO3S,EAAE/L,MAAMpc,EAAEmoB,EAAEiV,KAAKp9B,EAAEyqK,GAAEzqK,GAAGK,KAAKupB,MAAM1jB,KAAK,CAACyG,KAAK,KAAKgqP,aAAa3xP,EAAEuhB,SAASvmB,EAAE42P,WAAW,EAAE9nF,QAAQ7uK,EAAEsvC,OAAO,KAAW,GAAG,KAAKigN,EAAG,OAAOrnO,EAAE,CAACm4E,EAAEpoF,cAAcvG,EAAEhF,KAAKooE,EAAE,CAAC33C,IAAIjV,EAAEiV,KAAKjV,EAAE/L,SAAS/b,KAAKupB,MAAM1jB,KAAK,CAACyG,KAAK,KAAKgqP,aAAa3xP,EAAEuhB,SAAS4B,EAAEyuO,WAAW,EAAE9nF,QAAQ7uK,EAAEsvC,OAAO,KAAK,GAAG,KAAKrvB,EAAE,OAA6Blb,EAAE,CAAC2H,KAAKwb,EAAEwuO,aAAa3xP,EAAEuhB,SAA/C5U,EAAE84J,GAAEtiJ,EAAE/L,MAAMmK,UAA8CqwO,WAAW,EACrf9nF,QAAQ7uK,EAAEsvC,OAAO,IAAIlvC,KAAKk3P,aAAapvO,GAAG9nB,KAAKupB,MAAM1jB,KAAKlB,GAAG,GAAG,KAAKmqP,EAAGx9O,EAAEwW,EAAExb,KAAK3M,EAAEmoB,EAAE/L,MAAM,IAAIgvE,EAAE/qF,KAAKw2P,SAA2H,OAAlHh8F,EAAElpJ,EAAEy5E,GAAGz5E,EAAE84J,GAAEzqK,EAAEumB,SAAS5U,EAAEy5E,KAAK/qF,KAAKupB,MAAM1jB,KAAK,CAACyG,KAAKwb,EAAEwuO,aAAa3xP,EAAEuhB,SAAS5U,EAAEilP,WAAW,EAAE9nF,QAAQ7uK,EAAEsvC,OAAO,KAAW,GAAG,KAAKmzJ,EAAG,MAAM1hM,MAAMypF,EAAE,MAAM,KAAKglK,EAAG,OAlC9Q,SAAYtnO,GAAG,IAAI,IAAIA,EAAE2nO,QAAQ,CAAC3nO,EAAE2nO,QAAQ,EAAE,IAAI7vP,EAAEkoB,EAAEkwO,MAAMp4P,EAAEA,IAAIkoB,EAAE4nO,QAAQ9vP,EAAEA,EAAE8G,MAAK,SAAS4K,GAAG,IAAIwW,EAAE2nO,UAAUn+O,EAAEA,EAAEgJ,QAAQwN,EAAE2nO,QAAQ,EAAE3nO,EAAE4nO,QAAQp+O,MAAI,SAASA,GAAG,IAAIwW,EAAE2nO,UAAU3nO,EAAE2nO,QAAQ,EAAE3nO,EAAE4nO,QAAQp+O,OAkCqF2mP,CAAT3mP,EAAEwW,EAAExb,MAAWgF,EAAEm+O,SAAS,KAAK,EAAE,OAAO3nO,EAAE,CAACm4E,EAAEpoF,cAAcvG,EAAEo+O,QAAQh7K,EAAE,CAAC33C,IAAIjV,EAAEiV,KAAKjV,EAAE/L,SAAS/b,KAAKupB,MAAM1jB,KAAK,CAACyG,KAAK,KAAKgqP,aAAa3xP,EAAEuhB,SAAS4B,EAAEyuO,WAAW,EAAE9nF,QAAQ7uK,EAAEsvC,OAAO,KAAK,GAAG,KAAK,EAAE,MAAM59B,EAAEo+O,QAAQ,QAAQ,MAAM/uP,MAAMypF,EAAE,MAC1f,KAAKilK,EAAG,MAAM1uP,MAAMypF,EAAE,MAAO,MAAMzpF,MAAMypF,EAAE,IAAI,MAAM94E,EAAEA,SAASA,EAAE,MAAO1R,EAAEm4P,UAAU,SAASjwO,EAAEloB,EAAE+E,GAAG,IAAI2M,EAAEwW,EAAExb,KAAKwD,cAAiC,GAAnBnL,IAAI6tP,IAASC,GAAGnhP,IAAOskP,GAAG91P,eAAewR,GAAG,CAAC,IAAIqkP,GAAGv1O,KAAK9O,GAAG,MAAM3Q,MAAMypF,EAAE,GAAG94E,IAAIskP,GAAGtkP,IAAG,EAAG,IAAI3R,EAAEmoB,EAAE/L,MAAM,GAAG,UAAUzK,EAAE3R,EAAE+0E,EAAE,CAACpoE,UAAK,GAAQ3M,EAAE,CAACw2J,oBAAe,EAAOvhI,kBAAa,EAAOjvB,MAAM,MAAMhG,EAAEgG,MAAMhG,EAAEgG,MAAMhG,EAAEi1B,aAAa2zB,QAAQ,MAAM5oD,EAAE4oD,QAAQ5oD,EAAE4oD,QAAQ5oD,EAAEw2J,sBAAsB,GAAG,aAAa7kJ,EAAE,CAAC,IAAIy5E,EAAEprF,EAAEgG,MAAM,GAAG,MAAMolF,EAAE,CAACA,EAAEprF,EAAEi1B,aAAa,IAAI9uB,EAAEnG,EAAEumB,SAAS,GAAG,MAAMpgB,EAAE,CAAC,GAAG,MAC1filF,EAAE,MAAMpqF,MAAMypF,EAAE,KAAK,GAAG1qF,MAAMyc,QAAQrW,GAAG,CAAC,KAAK,GAAGA,EAAEzE,QAAQ,MAAMV,MAAMypF,EAAE,KAAKtkF,EAAEA,EAAE,GAAGilF,EAAE,GAAGjlF,EAAE,MAAMilF,IAAIA,EAAE,IAAIprF,EAAE+0E,EAAE,GAAG/0E,EAAE,CAACgG,WAAM,EAAOugB,SAAS,GAAG6kE,SAAS,GAAG,WAAWz5E,EAAEtR,KAAK02P,mBAAmB,MAAM/2P,EAAEgG,MAAMhG,EAAEgG,MAAMhG,EAAEi1B,aAAaj1B,EAAE+0E,EAAE,GAAG/0E,EAAE,CAACgG,WAAM,SAAc,GAAG,WAAW2L,EAAE,CAACxL,EAAE9F,KAAK02P,mBAAmB,IAAI1oH,EAdtJ,SAAYlmH,GAAG,GAAG,MAASA,EAAY,OAAOA,EAAE,IAAIloB,EAAE,GAAsD,OAAnDqgG,EAAEquJ,SAAShrP,QAAQwkB,GAAE,SAASA,GAAG,MAAMA,IAAIloB,GAAGkoB,MAAYloB,EAcqCs4P,CAAGv4P,EAAEumB,UAAU,GAAG,MAAMpgB,EAAE,CAAC,IAAI8nI,EAAE,MAAMjuI,EAAEgG,MAAMhG,EAAEgG,MAAM,GAAGqoI,EAAO,GAALjjD,GAAE,EAAMrrF,MAAMyc,QAAQrW,IAAG,IAAI,IAAI3E,EAAE,EAAEA,EAAE2E,EAAEzE,OAAOF,IAAK,GAAG,GAAG2E,EAAE3E,KAAKysI,EAAE,CAAC7iD,GAAE,EAAG,YAAYA,EAAE,GAAGjlF,IAAI8nI,EAAEjuI,EAAE+0E,EAAE,CAAC9sC,cAAS,EAAO1hB,cAAS,GAChfvmB,EAAE,CAACioC,SAASmjD,EAAE7kE,SAAS8nH,KAAK,GAAGjjD,EAAEprF,EAAE,CAAC,GAAGszP,GAAG3hP,KAAK,MAAMy5E,EAAE7kE,UAAU,MAAM6kE,EAAEirK,yBAAyB,MAAMr1P,MAAMypF,EAAE,IAAI94E,EAAE,KAAK,GAAG,MAAMy5E,EAAEirK,wBAAwB,CAAC,GAAG,MAAMjrK,EAAE7kE,SAAS,MAAMvlB,MAAMypF,EAAE,KAAK,GAAK,iBAAkBW,EAAEirK,2BAAyB,WAAWjrK,EAAEirK,yBAAyB,MAAMr1P,MAAMypF,EAAE,KAAM,GAAG,MAAMW,EAAExjE,OAAO,iBAAkBwjE,EAAExjE,MAAM,MAAM5mB,MAAMypF,EAAE,GAAG,KAAuE,IAAI+/E,KAArEp/E,EAAEprF,EAAEmG,EAAE9F,KAAK42P,iBAAiB5oH,EAAE,IAAIhuI,KAAKupB,MAAMloB,OAAOusI,EAAE,IAAI9lH,EAAExb,KAAcy+E,EAAE,GAAG+qK,GAAGp1P,KAAKqqF,EAAEo/E,GAAG,CAAC,IAAI/4J,EAAE25E,EAAEo/E,GAAG,GAAG,MAAM/4J,EAAE,CAAC,GAAG,UAC5e+4J,EAAE,CAAChpK,OAAE,EAAO,IAAIoE,EAAE,GAAG4kB,EAAE,GAAG,IAAIhpB,KAAKiQ,EAAE,GAAGA,EAAEtR,eAAeqB,GAAG,CAAC,IAAIyD,EAAE,IAAIzD,EAAEuG,QAAQ,MAAM7H,EAAEuR,EAAEjQ,GAAG,GAAG,MAAMtB,EAAE,CAAC,GAAG+E,EAAE,IAAI2mI,EAAEpqI,OAAO,GAAGoqI,EAAEpqI,EAAE00P,GAAG/1P,eAAeyrI,GAAGA,EAAEsqH,GAAGtqH,OAAO,CAAC,IAAIsuB,EAAEtuB,EAAEx3H,QAAQshP,GAAG,OAAOvlP,cAAciE,QAAQuhP,GAAG,QAAQ/pH,EAAEsqH,GAAGtqH,GAAGsuB,EAAEt0J,GAAG4kB,EAAEohH,EAAE,IAAIphH,EAAEhpB,EAA2HoE,GAAzHX,EAAE,MAAM/E,GAAG,kBAAmBA,GAAG,KAAKA,EAAE,GAAG+E,GAAG,iBAAkB/E,GAAG,IAAIA,GAAG85J,GAAE75J,eAAeqqB,IAAIwvI,GAAExvI,IAAI,GAAGtqB,GAAGupB,OAAOvpB,EAAE,KAAUsqB,EAAE,KAAK/Y,EAAE7L,GAAG,KAAKpE,EAAE,KAAKvB,EAAE,GAAGgF,EAAE0M,EAAEzR,EAAEkrF,GAAG,IAAInmF,EAAE8C,QAAQ,KAAK9C,EAAE,iBAAkB/E,EAAEuiL,QAAQ,OAAOx9K,GAAG,IAAK,iBAAiB,IAAK,gBAAgB,IAAK,YAAY,IAAK,gBAAgB,IAAK,gBAAgB,IAAK,mBAAmB,IAAK,iBAAiB,IAAK,gBAAgBA,GACjoB,EAAG,MAAMhF,EAAE,QAAQgF,GAAE,EAAGA,EAAEmxP,GAAGj2P,eAAeqqK,KAAShpK,EAAEgvP,EAANhvP,EAAEgpK,IAAW,MAAM/4J,EAAEjQ,OAAWsnI,EAAEr3H,GAAG,IAAK,IAAIjQ,EAAEwvP,EAAGxmF,EAAE/4J,GAAGjQ,IAAIysI,GAAG,IAAIzsI,IAAI2E,GAAGkoI,IAAIJ,GAAG,sBAAsB,IAAIu8B,EAAEv8B,EAAE7iD,EAAE,GAAG2nK,GAAG5yP,eAAewR,GAAG64J,GAAG,MAAMA,GAAG,IAAIp/E,EAAE,KAAKjjE,EAAExb,KAAK,KAAKwb,EAAE,CAA6B,GAAG,OAA/BhiB,EAAEnG,EAAEq2P,0BAAoC,GAAG,MAAMlwP,EAAEqyP,OAAO,CAACryP,EAAEA,EAAEqyP,OAAO,MAAMrwO,QAAQ,GAAgB,iBAAbhiB,EAAEnG,EAAEumB,WAA8B,iBAAkBpgB,EAAE,CAACA,EAAE2iI,EAAE3iI,GAAG,MAAMgiB,EAAEhiB,EAAE,KAChL,OADqL,MAAMA,GAAGnG,EAAE,GAAG61P,GAAGlkP,IAAI,OAAOxL,EAAE4oB,OAAO,KAAKy7I,GAAG,MAAMA,GAAGrkK,GAAGnG,EAAEyqK,GAAEzqK,EAAEumB,UAAU4B,EAAEA,EAAExb,KAAK3H,EAAE,MAAMA,GAAG,iCACjeA,EAAE8tP,GAAG3qO,GAAG,+BAA+BnjB,GAAG,kBAAkBmjB,EAAE,+BAA+BnjB,EAAE3E,KAAKupB,MAAM1jB,KAAK,CAACywP,aAAa3xP,EAAE2H,KAAKgF,EAAE4U,SAASvmB,EAAE42P,WAAW,EAAE9nF,QAAQ7uK,EAAEsvC,OAAO67C,IAAI/qF,KAAK22P,qBAAoB,EAAUxsF,GAAUriJ,EAbzN,GAa8NswO,GAAG,CAACC,eAAe,SAASvwO,GAAGA,EAAE,IAAIsuO,GAAGtuO,GAAE,GAAI,IAAI,OAAOA,EAAE8pG,KAAKoxB,KAAU,QAAQl7H,EAAEic,YAAYu0N,qBAAqB,SAASxwO,GAAGA,EAAE,IAAIsuO,GAAGtuO,GAAE,GAAI,IAAI,OAAOA,EAAE8pG,KAAKoxB,KAAU,QAAQl7H,EAAEic,YAAYw0N,mBAAmB,WAAW,MAAM53P,MAAMypF,EAAE,OAAQouK,yBAAyB,WAAW,MAAM73P,MAAMypF,EAAE,OAC3gBj8E,QAAQ,WAAWsqP,GAAG,CAACn+O,QAAQ89O,IAAIz8G,GAAG88G,IAAIL,IAAIK,GAAG3/O,EAAOC,QAAQ4iI,GAAGrhI,SAASqhI,gCCzCjE,IAAIizG,EAAG,EAAQ,MAASztP,EAAE,EAAQ,MAAiBipF,EAAE,EAAQ,MAAa,SAAS0vE,EAAEhyI,GAAG,IAAI,IAAIloB,EAAE,yDAAyDkoB,EAAExW,EAAE,EAAEA,EAAElQ,UAAUC,OAAOiQ,IAAI1R,GAAG,WAAWsT,mBAAmB9R,UAAUkQ,IAAI,MAAM,yBAAyBwW,EAAE,WAAWloB,EAAE,iHAAiH,IAAIgvP,EAAG,MAAMjuP,MAAMm5J,EAAE,MAAM,IAAI+0F,EAAG,KAAKnhH,EAAG,GAC7b,SAASohH,IAAK,GAAGD,EAAG,IAAI,IAAI/mO,KAAK4lH,EAAG,CAAC,IAAI9tI,EAAE8tI,EAAG5lH,GAAGxW,EAAEu9O,EAAGnnP,QAAQogB,GAAG,MAAM,EAAExW,GAAG,MAAM3Q,MAAMm5J,EAAE,GAAGhyI,IAAI,IAAIinO,EAAGz9O,GAAG,CAAC,IAAI1R,EAAE84P,cAAc,MAAM/3P,MAAMm5J,EAAE,GAAGhyI,IAA2B,IAAI,IAAInoB,KAA/BovP,EAAGz9O,GAAG1R,EAAE0R,EAAE1R,EAAE+4P,WAA0B,CAAC,IAAI7yP,OAAE,EAAWnB,EAAE2M,EAAE3R,GAAGkF,EAAEjF,EAAEmrF,EAAEprF,EAAE,GAAGqvP,EAAGlvP,eAAeirF,GAAG,MAAMpqF,MAAMm5J,EAAE,GAAG/uE,IAAIikK,EAAGjkK,GAAGpmF,EAAE,IAAI+vE,EAAE/vE,EAAEi0P,wBAAwB,GAAGlkL,EAAE,CAAC,IAAI5uE,KAAK4uE,EAAEA,EAAE50E,eAAegG,IAAIopP,EAAGx6K,EAAE5uE,GAAGjB,EAAEkmF,GAAGjlF,GAAE,OAAQnB,EAAEk0P,kBAAkB3J,EAAGvqP,EAAEk0P,iBAAiBh0P,EAAEkmF,GAAGjlF,GAAE,GAAIA,GAAE,EAAG,IAAIA,EAAE,MAAMnF,MAAMm5J,EAAE,GAAGn6J,EAAEmoB,OACjc,SAASonO,EAAGpnO,EAAEloB,EAAE0R,GAAG,GAAG69O,EAAGrnO,GAAG,MAAMnnB,MAAMm5J,EAAE,IAAIhyI,IAAIqnO,EAAGrnO,GAAGloB,EAAEwvP,EAAGtnO,GAAGloB,EAAE+4P,WAAWrnP,GAAGwnP,aAAa,IAAI/J,EAAG,GAAGC,EAAG,GAAGG,EAAG,GAAGC,EAAG,GAAG,SAAS/sD,EAAGv6K,EAAEloB,EAAE0R,EAAE3R,EAAEmG,EAAEnB,EAAEE,EAAEkmF,EAAErW,GAAG,IAAIurB,EAAEvgG,MAAMQ,UAAUgM,MAAMxL,KAAKU,UAAU,GAAG,IAAIxB,EAAE+G,MAAM2K,EAAE2uF,GAAG,MAAM7uF,GAAGpR,KAAK6vH,QAAQz+G,IAAI,IAAIi+O,GAAG,EAAG4I,EAAG,KAAKnI,GAAG,EAAGwH,EAAG,KAAKh2G,EAAG,CAACzxB,QAAQ,SAAS/nG,GAAGunO,GAAG,EAAG4I,EAAGnwO,IAAI,SAASmoO,EAAGnoO,EAAEloB,EAAE0R,EAAE3R,EAAEmG,EAAEnB,EAAEE,EAAEkmF,EAAErW,GAAG26K,GAAG,EAAG4I,EAAG,KAAK51D,EAAG17L,MAAM26I,EAAGlgJ,WACvO,IAAI8/I,EAAG,KAAKo9D,EAAG,KAAKsyC,EAAG,KAAK,SAASF,EAAG5oO,EAAEloB,EAAE0R,GAAG,IAAI3R,EAAEmoB,EAAExb,MAAM,gBAAgBwb,EAAE4tB,cAAck7M,EAAGt/O,GAAxO,SAAYwW,EAAEloB,EAAE0R,EAAE3R,EAAEmG,EAAEnB,EAAEE,EAAEkmF,EAAErW,GAA4B,GAAzBu7K,EAAGtpP,MAAM3G,KAAKoB,WAAciuP,EAAG,CAAC,IAAGA,EAAgC,MAAM1uP,MAAMm5J,EAAE,MAA1C,IAAI75D,EAAEg4J,EAAG5I,GAAG,EAAG4I,EAAG,KAA8BnI,IAAKA,GAAG,EAAGwH,EAAGr3J,IAAuGiwJ,CAAGvwP,EAAEC,OAAE,EAAOkoB,GAAGA,EAAE4tB,cAAc,KAAK,SAASi7M,EAAG7oO,EAAEloB,GAAG,GAAG,MAAMA,EAAE,MAAMe,MAAMm5J,EAAE,KAAK,OAAG,MAAMhyI,EAASloB,EAAKF,MAAMyc,QAAQ2L,GAAOpoB,MAAMyc,QAAQvc,IAAUkoB,EAAEjiB,KAAKc,MAAMmhB,EAAEloB,GAAGkoB,IAAEA,EAAEjiB,KAAKjG,GAAUkoB,GAASpoB,MAAMyc,QAAQvc,GAAG,CAACkoB,GAAGhO,OAAOla,GAAG,CAACkoB,EAAEloB,GACpd,SAASm5P,EAAGjxO,EAAEloB,EAAE0R,GAAG5R,MAAMyc,QAAQ2L,GAAGA,EAAExkB,QAAQ1D,EAAE0R,GAAGwW,GAAGloB,EAAEc,KAAK4Q,EAAEwW,GAAG,IAAIs5H,EAAG,KAAK,SAAS4vG,EAAGlpO,GAAG,GAAGA,EAAE,CAAC,IAAIloB,EAAEkoB,EAAEkxO,mBAAmB1nP,EAAEwW,EAAEmxO,mBAAmB,GAAGv5P,MAAMyc,QAAQvc,GAAG,IAAI,IAAID,EAAE,EAAEA,EAAEC,EAAEyB,SAASymB,EAAE2yM,uBAAuB96N,IAAI+wP,EAAG5oO,EAAEloB,EAAED,GAAG2R,EAAE3R,SAASC,GAAG8wP,EAAG5oO,EAAEloB,EAAE0R,GAAGwW,EAAEkxO,mBAAmB,KAAKlxO,EAAEmxO,mBAAmB,KAAKnxO,EAAEoxO,gBAAgBpxO,EAAE7nB,YAAYmiC,QAAQta,IAAI,SAASopO,EAAGppO,GAAwC,GAArC,OAAOA,IAAIs5H,EAAGuvG,EAAGvvG,EAAGt5H,IAAIA,EAAEs5H,EAAGA,EAAG,KAAQt5H,EAAE,CAAU,GAATixO,EAAGjxO,EAAEkpO,GAAO5vG,EAAG,MAAMzgJ,MAAMm5J,EAAE,KAAK,GAAGg2F,EAAG,MAAMhoO,EAAEwvO,EAAGxH,GAAG,EAAGwH,EAAG,KAAKxvO,GAC5d,IAAIqpO,EAAG,CAACgI,uBAAuB,SAASrxO,GAAG,GAAG+mO,EAAG,MAAMluP,MAAMm5J,EAAE,MAAM+0F,EAAGnvP,MAAMQ,UAAUgM,MAAMxL,KAAKonB,GAAGgnO,KAAMsK,yBAAyB,SAAStxO,GAAG,IAASxW,EAAL1R,GAAE,EAAK,IAAI0R,KAAKwW,EAAE,GAAGA,EAAEhoB,eAAewR,GAAG,CAAC,IAAI3R,EAAEmoB,EAAExW,GAAG,IAAIo8H,EAAG5tI,eAAewR,IAAIo8H,EAAGp8H,KAAK3R,EAAE,CAAC,GAAG+tI,EAAGp8H,GAAG,MAAM3Q,MAAMm5J,EAAE,IAAIxoJ,IAAIo8H,EAAGp8H,GAAG3R,EAAEC,GAAE,GAAIA,GAAGkvP,MAC/R,SAASsC,EAAGtpO,EAAEloB,GAAG,IAAI0R,EAAEwW,EAAEuxO,UAAU,IAAI/nP,EAAE,OAAO,KAAK,IAAI3R,EAAEuhJ,EAAG5vI,GAAG,IAAI3R,EAAE,OAAO,KAAK2R,EAAE3R,EAAEC,GAAGkoB,EAAE,OAAOloB,GAAG,IAAK,UAAU,IAAK,iBAAiB,IAAK,gBAAgB,IAAK,uBAAuB,IAAK,cAAc,IAAK,qBAAqB,IAAK,cAAc,IAAK,qBAAqB,IAAK,YAAY,IAAK,oBAAoBD,GAAGA,EAAEylC,YAAqBzlC,IAAI,YAAbmoB,EAAEA,EAAExb,OAAuB,UAAUwb,GAAG,WAAWA,GAAG,aAAaA,IAAIA,GAAGnoB,EAAE,MAAMmoB,EAAE,QAAQA,GAAE,EAAG,GAAGA,EAAE,OAAO,KAAK,GAAGxW,GAAG,mBAAoBA,EAAE,MAAM3Q,MAAMm5J,EAAE,IAAIl6J,SAAS0R,IAC1f,OAAOA,EAAE,IAAI+/O,EAAGzC,EAAGW,mDAAmD8B,EAAGvxP,eAAe,4BAA4BuxP,EAAG1B,uBAAuB,CAAC3qN,QAAQ,OAAOqsN,EAAGvxP,eAAe,6BAA6BuxP,EAAGzB,wBAAwB,CAACC,SAAS,OAClP,IAAIyB,EAAG,cAAczxO,EAAE,mBAAoBxa,QAAQA,OAAOspP,IAAI4C,EAAG1xO,EAAExa,OAAOspP,IAAI,iBAAiB,MAAM6C,EAAG3xO,EAAExa,OAAOspP,IAAI,gBAAgB,MAAM6D,EAAG3yO,EAAExa,OAAOspP,IAAI,kBAAkB,MAAM8D,EAAG5yO,EAAExa,OAAOspP,IAAI,qBAAqB,MAAM+D,EAAG7yO,EAAExa,OAAOspP,IAAI,kBAAkB,MAAMsE,EAAGpzO,EAAExa,OAAOspP,IAAI,kBAAkB,MAAMyG,EAAGv1O,EAAExa,OAAOspP,IAAI,iBAAiB,MAAM0G,EAAGx1O,EAAExa,OAAOspP,IAAI,yBAAyB,MAAM2G,EAAGz1O,EAAExa,OAAOspP,IAAI,qBAAqB,MAAM4G,EAAG11O,EAAExa,OAAOspP,IAAI,kBAAkB,MAAM6G,EAAG31O,EAAExa,OAAOspP,IAAI,uBACve,MAAMgH,EAAG91O,EAAExa,OAAOspP,IAAI,cAAc,MAAMiH,EAAG/1O,EAAExa,OAAOspP,IAAI,cAAc,MAAM9uO,GAAGxa,OAAOspP,IAAI,qBAAqB9uO,GAAGxa,OAAOspP,IAAI,mBAAmB9uO,GAAGxa,OAAOspP,IAAI,eAAe,IAAIkH,EAAG,mBAAoBxwP,QAAQA,OAAOC,SAAS,SAAS4yP,EAAGpwO,GAAG,OAAG,OAAOA,GAAG,iBAAkBA,EAAS,KAAwC,mBAAnCA,EAAE+tO,GAAI/tO,EAAE+tO,IAAK/tO,EAAE,eAA0CA,EAAE,KAEzV,SAASiuO,EAAGjuO,GAAG,GAAG,MAAMA,EAAE,OAAO,KAAK,GAAG,mBAAoBA,EAAE,OAAOA,EAAEqI,aAAarI,EAAEplB,MAAM,KAAK,GAAG,iBAAkBolB,EAAE,OAAOA,EAAE,OAAOA,GAAG,KAAK0qO,EAAG,MAAM,WAAW,KAAKhB,EAAG,MAAM,SAAS,KAAKkB,EAAG,MAAM,WAAW,KAAKD,EAAG,MAAM,aAAa,KAAK8C,EAAG,MAAM,WAAW,KAAKC,EAAG,MAAM,eAAe,GAAG,iBAAkB1tO,EAAE,OAAOA,EAAE0nO,UAAU,KAAK4F,EAAG,MAAM,mBAAmB,KAAKnC,EAAG,MAAM,mBAAmB,KAAKqC,EAAG,IAAI11P,EAAEkoB,EAAE2S,OAAmC,OAA5B76B,EAAEA,EAAEuwB,aAAavwB,EAAE8C,MAAM,GAAUolB,EAAEqI,cAAc,KAAKvwB,EAAE,cAAcA,EAAE,IACnf,cAAc,KAAK+1P,EAAG,OAAOI,EAAGjuO,EAAExb,MAAM,KAAKspP,EAAG,GAAG9tO,EAAE,IAAIA,EAAE2nO,QAAQ3nO,EAAE4nO,QAAQ,KAAK,OAAOqG,EAAGjuO,GAAG,OAAO,KAAK,SAASquO,EAAGruO,GAAG,IAAIloB,EAAE,GAAG,EAAE,CAACkoB,EAAE,OAAOA,EAAE1B,KAAK,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,GAAG,KAAK,EAAE,IAAI9U,EAAE,GAAG,MAAMwW,EAAE,QAAQ,IAAInoB,EAAEmoB,EAAEwxO,YAAYxzP,EAAEgiB,EAAEyxO,aAAa50P,EAAEoxP,EAAGjuO,EAAExb,MAAMgF,EAAE,KAAK3R,IAAI2R,EAAEykP,EAAGp2P,EAAE2M,OAAO3M,EAAEgF,EAAEA,EAAE,GAAGmB,EAAEnB,EAAE,QAAQmB,EAAEi3K,SAAShpK,QAAQu9O,EAAG,IAAI,IAAIxrP,EAAEk3K,WAAW,IAAI1rK,IAAI3M,EAAE,gBAAgB2M,EAAE,KAAKA,EAAE,aAAa3R,GAAG,WAAWgF,EAAE/E,GAAG0R,EAAEwW,EAAEA,EAAE0xO,aAAa1xO,GAAG,OAAOloB,EACrc,IAAIk4P,IAAK,oBAAqBxkP,aAAQ,IAAqBA,OAAOqE,eAAU,IAAqBrE,OAAOqE,SAASE,eAAeu+O,GAAG,KAAKgC,GAAG,KAAKK,GAAG,KAAK,SAAS98G,GAAG7zH,GAAG,GAAGA,EAAEw2L,EAAGx2L,GAAG,CAAC,GAAG,mBAAoBsuO,GAAG,MAAMz1P,MAAMm5J,EAAE,MAAM,IAAIl6J,EAAEshJ,EAAGp5H,EAAEuxO,WAAWjD,GAAGtuO,EAAEuxO,UAAUvxO,EAAExb,KAAK1M,IAAI,SAASoiJ,GAAGl6H,GAAGswO,GAAGK,GAAGA,GAAG5yP,KAAKiiB,GAAG2wO,GAAG,CAAC3wO,GAAGswO,GAAGtwO,EAAE,SAAS2xO,KAAK,GAAGrB,GAAG,CAAC,IAAItwO,EAAEswO,GAAGx4P,EAAE64P,GAAoB,GAAjBA,GAAGL,GAAG,KAAKz8G,GAAG7zH,GAAMloB,EAAE,IAAIkoB,EAAE,EAAEA,EAAEloB,EAAEyB,OAAOymB,IAAI6zH,GAAG/7I,EAAEkoB,KAAK,SAAS4xO,GAAG5xO,EAAEloB,GAAG,OAAOkoB,EAAEloB,GAAG,SAAS+5P,GAAG7xO,EAAEloB,EAAE0R,EAAE3R,GAAG,OAAOmoB,EAAEloB,EAAE0R,EAAE3R,GAAG,SAASi6P,MACle,IAAIC,GAAGH,GAAGI,IAAG,EAAGC,IAAG,EAAG,SAASz3D,KAAQ,OAAO81D,IAAI,OAAOK,KAAGmB,KAAKH,MAAK,IAAI3yD,IAAI,IAAIkzD,GAAG,8VAA8VC,GAAG16P,OAAOW,UAAUJ,eAAeo6P,GAAG,GAAGC,GAAG,GAEvQ,SAASlL,GAAEnnO,EAAEloB,EAAE0R,EAAE3R,EAAEmG,EAAEnB,GAAG3E,KAAKqwP,gBAAgB,IAAIzwP,GAAG,IAAIA,GAAG,IAAIA,EAAEI,KAAKmpB,cAAcxpB,EAAEK,KAAKswP,mBAAmBxqP,EAAE9F,KAAKuwP,gBAAgBj/O,EAAEtR,KAAKywD,aAAa3oC,EAAE9nB,KAAKsM,KAAK1M,EAAEI,KAAKwwP,YAAY7rP,EAAE,IAAI80J,GAAE,GACxZ,uIAAuItuJ,MAAM,KAAK7H,SAAQ,SAASwkB,GAAG2xI,GAAE3xI,GAAG,IAAImnO,GAAEnnO,EAAE,GAAE,EAAGA,EAAE,MAAK,MAAM,CAAC,CAAC,gBAAgB,kBAAkB,CAAC,YAAY,SAAS,CAAC,UAAU,OAAO,CAAC,YAAY,eAAexkB,SAAQ,SAASwkB,GAAG,IAAIloB,EAAEkoB,EAAE,GAAG2xI,GAAE75J,GAAG,IAAIqvP,GAAErvP,EAAE,GAAE,EAAGkoB,EAAE,GAAG,MAAK,MAAM,CAAC,kBAAkB,YAAY,aAAa,SAASxkB,SAAQ,SAASwkB,GAAG2xI,GAAE3xI,GAAG,IAAImnO,GAAEnnO,EAAE,GAAE,EAAGA,EAAEhY,cAAc,MAAK,MAC9d,CAAC,cAAc,4BAA4B,YAAY,iBAAiBxM,SAAQ,SAASwkB,GAAG2xI,GAAE3xI,GAAG,IAAImnO,GAAEnnO,EAAE,GAAE,EAAGA,EAAE,MAAK,MAAM,wNAAwN3c,MAAM,KAAK7H,SAAQ,SAASwkB,GAAG2xI,GAAE3xI,GAAG,IAAImnO,GAAEnnO,EAAE,GAAE,EAAGA,EAAEhY,cAAc,MAAK,MACzZ,CAAC,UAAU,WAAW,QAAQ,YAAYxM,SAAQ,SAASwkB,GAAG2xI,GAAE3xI,GAAG,IAAImnO,GAAEnnO,EAAE,GAAE,EAAGA,EAAE,MAAK,MAAM,CAAC,UAAU,YAAYxkB,SAAQ,SAASwkB,GAAG2xI,GAAE3xI,GAAG,IAAImnO,GAAEnnO,EAAE,GAAE,EAAGA,EAAE,MAAK,MAAM,CAAC,OAAO,OAAO,OAAO,QAAQxkB,SAAQ,SAASwkB,GAAG2xI,GAAE3xI,GAAG,IAAImnO,GAAEnnO,EAAE,GAAE,EAAGA,EAAE,MAAK,MAAM,CAAC,UAAU,SAASxkB,SAAQ,SAASwkB,GAAG2xI,GAAE3xI,GAAG,IAAImnO,GAAEnnO,EAAE,GAAE,EAAGA,EAAEhY,cAAc,MAAK,MAAM,IAAIqxI,GAAG,gBAAgB,SAASi5G,GAAGtyO,GAAG,OAAOA,EAAE,GAAG4D,cAGtM,SAAS2uO,GAAGvyO,GAAG,cAAcA,GAAG,IAAK,UAAU,IAAK,SAAS,IAAK,SAAS,IAAK,SAAS,IAAK,YAAY,OAAOA,EAAE,QAAQ,MAAM,IAC1T,SAASwyO,GAAGxyO,EAAEloB,EAAE0R,EAAE3R,GAAG,IAAImG,EAAE2zJ,GAAE35J,eAAeF,GAAG65J,GAAE75J,GAAG,MAAW,OAAOkG,EAAE,IAAIA,EAAEwG,MAAK3M,GAAO,EAAEC,EAAEyB,SAAS,MAAMzB,EAAE,IAAI,MAAMA,EAAE,MAAI,MAAMA,EAAE,IAAI,MAAMA,EAAE,OAPnJ,SAAYkoB,EAAEloB,EAAE0R,EAAE3R,GAAG,GAAG,MAAOC,GADoF,SAAYkoB,EAAEloB,EAAE0R,EAAE3R,GAAG,GAAG,OAAO2R,GAAG,IAAIA,EAAEhF,KAAK,OAAM,EAAG,cAAc1M,GAAG,IAAK,WAAW,IAAK,SAAS,OAAM,EAAG,IAAK,UAAU,OAAGD,IAAc,OAAO2R,GAASA,EAAE++O,gBAAmD,WAAnCvoO,EAAEA,EAAEhY,cAAc5D,MAAM,EAAE,KAAsB,UAAU4b,GAAE,QAAQ,OAAM,GACnTyyO,CAAGzyO,EAAEloB,EAAE0R,EAAE3R,GAAG,OAAM,EAAG,GAAGA,EAAE,OAAM,EAAG,GAAG,OAAO2R,EAAE,OAAOA,EAAEhF,MAAM,KAAK,EAAE,OAAO1M,EAAE,KAAK,EAAE,OAAM,IAAKA,EAAE,KAAK,EAAE,OAAOstB,MAAMttB,GAAG,KAAK,EAAE,OAAOstB,MAAMttB,IAAI,EAAEA,EAAE,OAAM,EAOrD46P,CAAG56P,EAAE0R,EAAExL,EAAEnG,KAAK2R,EAAE,MAAM3R,GAAG,OAAOmG,EARhM,SAAYgiB,GAAG,QAAGmyO,GAAGv5P,KAAKy5P,GAAGryO,KAAemyO,GAAGv5P,KAAKw5P,GAAGpyO,KAAekyO,GAAG55O,KAAK0H,GAAUqyO,GAAGryO,IAAG,GAAGoyO,GAAGpyO,IAAG,GAAS,IAQkFg0H,CAAGl8I,KAAK,OAAO0R,EAAEwW,EAAE47F,gBAAgB9jH,GAAGkoB,EAAEqD,aAAavrB,EAAE,GAAG0R,IAAIxL,EAAEyqP,gBAAgBzoO,EAAEhiB,EAAE2qD,cAAc,OAAOn/C,EAAE,IAAIxL,EAAEwG,MAAQ,GAAGgF,GAAG1R,EAAEkG,EAAEqjB,cAAcxpB,EAAEmG,EAAEwqP,mBAAmB,OAAOh/O,EAAEwW,EAAE47F,gBAAgB9jH,IAAa0R,EAAE,KAAXxL,EAAEA,EAAEwG,OAAc,IAAIxG,IAAG,IAAKwL,EAAE,GAAG,GAAGA,EAAE3R,EAAEmoB,EAAE2yO,eAAe96P,EAAEC,EAAE0R,GAAGwW,EAAEqD,aAAavrB,EAAE0R,MAC5d,SAASipI,GAAGzyH,GAAG,IAAIloB,EAAEkoB,EAAExb,KAAK,OAAOwb,EAAEA,EAAE4f,WAAW,UAAU5f,EAAEhY,gBAAgB,aAAalQ,GAAG,UAAUA,GAEpF,SAAS86P,GAAG5yO,GAAGA,EAAE6yO,gBAAgB7yO,EAAE6yO,cADvD,SAAY7yO,GAAG,IAAIloB,EAAE26I,GAAGzyH,GAAG,UAAU,QAAQxW,EAAE/R,OAAO0a,yBAAyB6N,EAAE7nB,YAAYC,UAAUN,GAAGD,EAAE,GAAGmoB,EAAEloB,GAAG,IAAIkoB,EAAEhoB,eAAeF,SAAI,IAAqB0R,GAAG,mBAAoBA,EAAE5P,KAAK,mBAAoB4P,EAAEmJ,IAAI,CAAC,IAAI3U,EAAEwL,EAAE5P,IAAIiD,EAAE2M,EAAEmJ,IAAiL,OAA7Klb,OAAOuO,eAAega,EAAEloB,EAAE,CAACoO,cAAa,EAAGtM,IAAI,WAAW,OAAOoE,EAAEpF,KAAKV,OAAOya,IAAI,SAASqN,GAAGnoB,EAAE,GAAGmoB,EAAEnjB,EAAEjE,KAAKV,KAAK8nB,MAAMvoB,OAAOuO,eAAega,EAAEloB,EAAE,CAACmO,WAAWuD,EAAEvD,aAAmB,CAAC+yL,SAAS,WAAW,OAAOnhM,GAAG8mE,SAAS,SAAS3+C,GAAGnoB,EAAE,GAAGmoB,GAAG8yO,aAAa,WAAW9yO,EAAE6yO,cACxf,YAAY7yO,EAAEloB,MAAuDi7P,CAAG/yO,IAAI,SAASu5H,GAAGv5H,GAAG,IAAIA,EAAE,OAAM,EAAG,IAAIloB,EAAEkoB,EAAE6yO,cAAc,IAAI/6P,EAAE,OAAM,EAAG,IAAI0R,EAAE1R,EAAEkhM,WAAenhM,EAAE,GAAqD,OAAlDmoB,IAAInoB,EAAE46I,GAAGzyH,GAAGA,EAAEygC,QAAQ,OAAO,QAAQzgC,EAAEniB,QAAOmiB,EAAEnoB,KAAa2R,IAAG1R,EAAE6mE,SAAS3+C,IAAG,GAAO,SAASgzO,GAAGhzO,EAAEloB,GAAG,IAAI0R,EAAE1R,EAAE2oD,QAAQ,OAAOpnD,EAAE,GAAGvB,EAAE,CAACu2J,oBAAe,EAAOvhI,kBAAa,EAAOjvB,WAAM,EAAO4iD,QAAQ,MAAMj3C,EAAEA,EAAEwW,EAAEizO,cAAcC,iBACzY,SAASC,GAAGnzO,EAAEloB,GAAG,IAAI0R,EAAE,MAAM1R,EAAEg1B,aAAa,GAAGh1B,EAAEg1B,aAAaj1B,EAAE,MAAMC,EAAE2oD,QAAQ3oD,EAAE2oD,QAAQ3oD,EAAEu2J,eAAe7kJ,EAAE+oP,GAAG,MAAMz6P,EAAE+F,MAAM/F,EAAE+F,MAAM2L,GAAGwW,EAAEizO,cAAc,CAACC,eAAer7P,EAAEgoB,aAAarW,EAAE4pP,WAAW,aAAat7P,EAAE0M,MAAM,UAAU1M,EAAE0M,KAAK,MAAM1M,EAAE2oD,QAAQ,MAAM3oD,EAAE+F,OAAO,SAASw1P,GAAGrzO,EAAEloB,GAAe,OAAZA,EAAEA,EAAE2oD,UAAiB+xM,GAAGxyO,EAAE,UAAUloB,GAAE,GACjU,SAASw7P,GAAGtzO,EAAEloB,GAAGu7P,GAAGrzO,EAAEloB,GAAG,IAAI0R,EAAE+oP,GAAGz6P,EAAE+F,OAAOhG,EAAEC,EAAE0M,KAAK,GAAG,MAAMgF,EAAK,WAAW3R,GAAM,IAAI2R,GAAG,KAAKwW,EAAEniB,OAAOmiB,EAAEniB,OAAO2L,KAAEwW,EAAEniB,MAAM,GAAG2L,GAAOwW,EAAEniB,QAAQ,GAAG2L,IAAIwW,EAAEniB,MAAM,GAAG2L,QAAQ,GAAG,WAAW3R,GAAG,UAAUA,EAA8B,YAA3BmoB,EAAE47F,gBAAgB,SAAgB9jH,EAAEE,eAAe,SAASu7P,GAAGvzO,EAAEloB,EAAE0M,KAAKgF,GAAG1R,EAAEE,eAAe,iBAAiBu7P,GAAGvzO,EAAEloB,EAAE0M,KAAK+tP,GAAGz6P,EAAEg1B,eAAe,MAAMh1B,EAAE2oD,SAAS,MAAM3oD,EAAEu2J,iBAAiBruI,EAAEquI,iBAAiBv2J,EAAEu2J,gBACnZ,SAASmlG,GAAGxzO,EAAEloB,EAAE0R,GAAG,GAAG1R,EAAEE,eAAe,UAAUF,EAAEE,eAAe,gBAAgB,CAAC,IAAIH,EAAEC,EAAE0M,KAAK,KAAK,WAAW3M,GAAG,UAAUA,QAAG,IAASC,EAAE+F,OAAO,OAAO/F,EAAE+F,OAAO,OAAO/F,EAAE,GAAGkoB,EAAEizO,cAAcpzO,aAAarW,GAAG1R,IAAIkoB,EAAEniB,QAAQmiB,EAAEniB,MAAM/F,GAAGkoB,EAAE8M,aAAah1B,EAAW,MAAT0R,EAAEwW,EAAEplB,QAAcolB,EAAEplB,KAAK,IAAIolB,EAAEquI,gBAAgBruI,EAAEquI,eAAeruI,EAAEquI,iBAAiBruI,EAAEizO,cAAcC,eAAe,KAAK1pP,IAAIwW,EAAEplB,KAAK4O,GAC1X,SAAS+pP,GAAGvzO,EAAEloB,EAAE0R,GAAM,WAAW1R,GAAGkoB,EAAE+R,cAAc8a,gBAAgB7sB,IAAE,MAAMxW,EAAEwW,EAAE8M,aAAa,GAAG9M,EAAEizO,cAAcpzO,aAAaG,EAAE8M,eAAe,GAAGtjB,IAAIwW,EAAE8M,aAAa,GAAGtjB,IAAwF,SAASiqP,GAAGzzO,EAAEloB,GAA6D,OAA1DkoB,EAAE3mB,EAAE,CAAC+kB,cAAS,GAAQtmB,IAAMA,EAAlI,SAAYkoB,GAAG,IAAIloB,EAAE,GAAuD,OAApDgvP,EAAGN,SAAShrP,QAAQwkB,GAAE,SAASA,GAAG,MAAMA,IAAIloB,GAAGkoB,MAAYloB,EAAiD47P,CAAG57P,EAAEsmB,aAAU4B,EAAE5B,SAAStmB,GAASkoB,EACjV,SAAS2zO,GAAG3zO,EAAEloB,EAAE0R,EAAE3R,GAAe,GAAZmoB,EAAEA,EAAElmB,QAAWhC,EAAE,CAACA,EAAE,GAAG,IAAI,IAAIkG,EAAE,EAAEA,EAAEwL,EAAEjQ,OAAOyE,IAAIlG,EAAE,IAAI0R,EAAExL,KAAI,EAAG,IAAIwL,EAAE,EAAEA,EAAEwW,EAAEzmB,OAAOiQ,IAAIxL,EAAElG,EAAEE,eAAe,IAAIgoB,EAAExW,GAAG3L,OAAOmiB,EAAExW,GAAGs2B,WAAW9hC,IAAIgiB,EAAExW,GAAGs2B,SAAS9hC,GAAGA,GAAGnG,IAAImoB,EAAExW,GAAGoqP,iBAAgB,OAAQ,CAAmB,IAAlBpqP,EAAE,GAAG+oP,GAAG/oP,GAAG1R,EAAE,KAASkG,EAAE,EAAEA,EAAEgiB,EAAEzmB,OAAOyE,IAAI,CAAC,GAAGgiB,EAAEhiB,GAAGH,QAAQ2L,EAAiD,OAA9CwW,EAAEhiB,GAAG8hC,UAAS,OAAGjoC,IAAImoB,EAAEhiB,GAAG41P,iBAAgB,IAAW,OAAO97P,GAAGkoB,EAAEhiB,GAAGs/B,WAAWxlC,EAAEkoB,EAAEhiB,IAAI,OAAOlG,IAAIA,EAAEgoC,UAAS,IACpY,SAAS+zN,GAAG7zO,EAAEloB,GAAG,GAAG,MAAMA,EAAEo2P,wBAAwB,MAAMr1P,MAAMm5J,EAAE,KAAK,OAAO34J,EAAE,GAAGvB,EAAE,CAAC+F,WAAM,EAAOivB,kBAAa,EAAO1O,SAAS,GAAG4B,EAAEizO,cAAcpzO,eAAe,SAASi0O,GAAG9zO,EAAEloB,GAAG,IAAI0R,EAAE1R,EAAE+F,MAAM,GAAG,MAAM2L,EAAE,CAA+B,GAA9BA,EAAE1R,EAAEg1B,aAA6B,OAAhBh1B,EAAEA,EAAEsmB,UAAoB,CAAC,GAAG,MAAM5U,EAAE,MAAM3Q,MAAMm5J,EAAE,KAAK,GAAGp6J,MAAMyc,QAAQvc,GAAG,CAAC,KAAK,GAAGA,EAAEyB,QAAQ,MAAMV,MAAMm5J,EAAE,KAAKl6J,EAAEA,EAAE,GAAG0R,EAAE1R,EAAE,MAAM0R,IAAIA,EAAE,IAAIwW,EAAEizO,cAAc,CAACpzO,aAAa0yO,GAAG/oP,IAC3Y,SAASuqP,GAAG/zO,EAAEloB,GAAG,IAAI0R,EAAE+oP,GAAGz6P,EAAE+F,OAAOhG,EAAE06P,GAAGz6P,EAAEg1B,cAAc,MAAMtjB,KAAIA,EAAE,GAAGA,KAAMwW,EAAEniB,QAAQmiB,EAAEniB,MAAM2L,GAAG,MAAM1R,EAAEg1B,cAAc9M,EAAE8M,eAAetjB,IAAIwW,EAAE8M,aAAatjB,IAAI,MAAM3R,IAAImoB,EAAE8M,aAAa,GAAGj1B,GAAG,SAASm8P,GAAGh0O,GAAG,IAAIloB,EAAEkoB,EAAE49E,YAAY9lG,IAAIkoB,EAAEizO,cAAcpzO,cAAc,KAAK/nB,GAAG,OAAOA,IAAIkoB,EAAEniB,MAAM/F,GAb/R,0jCAA0jCuL,MAAM,KAAK7H,SAAQ,SAASwkB,GAAG,IAAIloB,EAAEkoB,EAAE/T,QAAQotI,GACzmCi5G,IAAI3gG,GAAE75J,GAAG,IAAIqvP,GAAErvP,EAAE,GAAE,EAAGkoB,EAAE,MAAK,MAAM,2EAA2E3c,MAAM,KAAK7H,SAAQ,SAASwkB,GAAG,IAAIloB,EAAEkoB,EAAE/T,QAAQotI,GAAGi5G,IAAI3gG,GAAE75J,GAAG,IAAIqvP,GAAErvP,EAAE,GAAE,EAAGkoB,EAAE,gCAA+B,MAAM,CAAC,WAAW,WAAW,aAAaxkB,SAAQ,SAASwkB,GAAG,IAAIloB,EAAEkoB,EAAE/T,QAAQotI,GAAGi5G,IAAI3gG,GAAE75J,GAAG,IAAIqvP,GAAErvP,EAAE,GAAE,EAAGkoB,EAAE,wCAAuC,MAAM,CAAC,WAAW,eAAexkB,SAAQ,SAASwkB,GAAG2xI,GAAE3xI,GAAG,IAAImnO,GAAEnnO,EAAE,GAAE,EAAGA,EAAEhY,cAAc,MAAK,MACnc2pJ,GAAEg3F,UAAU,IAAIxB,GAAE,YAAY,GAAE,EAAG,aAAa,gCAA+B,GAAI,CAAC,MAAM,OAAO,SAAS,cAAc3rP,SAAQ,SAASwkB,GAAG2xI,GAAE3xI,GAAG,IAAImnO,GAAEnnO,EAAE,GAAE,EAAGA,EAAEhY,cAAc,MAAK,MAW+G,IAAIisP,GAAS,+BAC/S,SAASC,GAAGl0O,GAAG,OAAOA,GAAG,IAAK,MAAM,MAAM,6BAA6B,IAAK,OAAO,MAAM,qCAAqC,QAAQ,MAAM,gCAAgC,SAASm0O,GAAGn0O,EAAEloB,GAAG,OAAO,MAAMkoB,GAAG,iCAAiCA,EAAEk0O,GAAGp8P,GAAG,+BAA+BkoB,GAAG,kBAAkBloB,EAAE,+BAA+BkoB,EAC3U,IAAIo0O,GAAep0O,GAAZq0O,IAAYr0O,GAAsJ,SAASA,EAAEloB,GAAG,GAFuM,+BAEpMkoB,EAAEo6F,cAAuB,cAAcp6F,EAAEA,EAAEsD,UAAUxrB,MAAM,CAA2F,KAA1Fs8P,GAAGA,IAAIvkP,SAASE,cAAc,QAAUuT,UAAU,QAAQxrB,EAAEmnM,UAAUvjM,WAAW,SAAa5D,EAAEs8P,GAAGx9N,WAAW5W,EAAE4W,YAAY5W,EAAE60C,YAAY70C,EAAE4W,YAAY,KAAK9+B,EAAE8+B,YAAY5W,EAAEitC,YAAYn1D,EAAE8+B,cAArZ,oBAAqB09N,OAAOA,MAAMC,wBAAwB,SAASz8P,EAAE0R,EAAE3R,EAAEmG,GAAGs2P,MAAMC,yBAAwB,WAAW,OAAOv0O,GAAEloB,EAAE0R,OAAUwW,IACtK,SAASw0O,GAAGx0O,EAAEloB,GAAG,GAAGA,EAAE,CAAC,IAAI0R,EAAEwW,EAAE4W,WAAW,GAAGptB,GAAGA,IAAIwW,EAAE4lM,WAAW,IAAIp8M,EAAEs6F,SAAwB,YAAdt6F,EAAE4iL,UAAUt0L,GAAUkoB,EAAE49E,YAAY9lG,EAAE,SAAS28P,GAAGz0O,EAAEloB,GAAG,IAAI0R,EAAE,GAAkF,OAA/EA,EAAEwW,EAAEhY,eAAelQ,EAAEkQ,cAAcwB,EAAE,SAASwW,GAAG,SAASloB,EAAE0R,EAAE,MAAMwW,GAAG,MAAMloB,EAAS0R,EAAE,IAAIkrP,GAAG,CAACC,aAAaF,GAAG,YAAY,gBAAgBG,mBAAmBH,GAAG,YAAY,sBAAsBI,eAAeJ,GAAG,YAAY,kBAAkBK,cAAcL,GAAG,aAAa,kBAAkBM,GAAG,GAAGC,GAAG,GAC1M,SAASC,GAAGj1O,GAAG,GAAG+0O,GAAG/0O,GAAG,OAAO+0O,GAAG/0O,GAAG,IAAI00O,GAAG10O,GAAG,OAAOA,EAAE,IAAYxW,EAAR1R,EAAE48P,GAAG10O,GAAK,IAAIxW,KAAK1R,EAAE,GAAGA,EAAEE,eAAewR,IAAIA,KAAKwrP,GAAG,OAAOD,GAAG/0O,GAAGloB,EAAE0R,GAAG,OAAOwW,EAA9XgwO,IAAKgF,GAAGnlP,SAASE,cAAc,OAAO0P,MAAM,mBAAmBjU,gBAAgBkpP,GAAGC,aAAa5nE,iBAAiB2nE,GAAGE,mBAAmB7nE,iBAAiB2nE,GAAGG,eAAe9nE,WAAW,oBAAoBvhL,eAAekpP,GAAGI,cAAc3rE,YAAwJ,IAAI+rE,GAAGD,GAAG,gBAAgBE,GAAGF,GAAG,sBAAsBG,GAAGH,GAAG,kBAAkBI,GAAGJ,GAAG,iBAAiBr5M,GAAG,sNAAsNv4C,MAAM,KACpsB,SAASiyP,GAAGt1O,GAAG,IAAIloB,EAAEkoB,EAAExW,EAAEwW,EAAE,GAAGA,EAAEu1O,UAAU,KAAKz9P,EAAE45P,QAAQ55P,EAAEA,EAAE45P,WAAW,CAAC1xO,EAAEloB,EAAE,GAAO,IAAiB,MAArBA,EAAEkoB,GAASw1O,aAAkBhsP,EAAE1R,EAAE45P,QAAQ1xO,EAAEloB,EAAE45P,aAAa1xO,GAAG,OAAO,IAAIloB,EAAEwmB,IAAI9U,EAAE,KAAK,SAASisP,GAAGz1O,GAAG,GAAG,KAAKA,EAAE1B,IAAI,CAAC,IAAIxmB,EAAEkoB,EAAEmpO,cAAsE,GAAxD,OAAOrxP,GAAkB,QAAdkoB,EAAEA,EAAEu1O,aAAqBz9P,EAAEkoB,EAAEmpO,eAAmB,OAAOrxP,EAAE,OAAOA,EAAE49P,WAAW,OAAO,KAAK,SAASC,GAAG31O,GAAG,GAAGs1O,GAAGt1O,KAAKA,EAAE,MAAMnnB,MAAMm5J,EAAE,MAEhK,SAAS4jG,GAAG51O,GAAW,GAARA,EADtN,SAAYA,GAAG,IAAIloB,EAAEkoB,EAAEu1O,UAAU,IAAIz9P,EAAE,CAAS,GAAG,QAAXA,EAAEw9P,GAAGt1O,IAAe,MAAMnnB,MAAMm5J,EAAE,MAAM,OAAOl6J,IAAIkoB,EAAE,KAAKA,EAAE,IAAI,IAAIxW,EAAEwW,EAAEnoB,EAAEC,IAAI,CAAC,IAAIkG,EAAEwL,EAAEkoP,OAAO,GAAG,OAAO1zP,EAAE,MAAM,IAAInB,EAAEmB,EAAEu3P,UAAU,GAAG,OAAO14P,EAAE,CAAY,GAAG,QAAdhF,EAAEmG,EAAE0zP,QAAmB,CAACloP,EAAE3R,EAAE,SAAS,MAAM,GAAGmG,EAAE0lB,QAAQ7mB,EAAE6mB,MAAM,CAAC,IAAI7mB,EAAEmB,EAAE0lB,MAAM7mB,GAAG,CAAC,GAAGA,IAAI2M,EAAE,OAAOmsP,GAAG33P,GAAGgiB,EAAE,GAAGnjB,IAAIhF,EAAE,OAAO89P,GAAG33P,GAAGlG,EAAE+E,EAAEA,EAAEurK,QAAQ,MAAMvvK,MAAMm5J,EAAE,MAAO,GAAGxoJ,EAAEkoP,SAAS75P,EAAE65P,OAAOloP,EAAExL,EAAEnG,EAAEgF,MAAM,CAAC,IAAI,IAAIE,GAAE,EAAGkmF,EAAEjlF,EAAE0lB,MAAMu/D,GAAG,CAAC,GAAGA,IAAIz5E,EAAE,CAACzM,GAAE,EAAGyM,EAAExL,EAAEnG,EAAEgF,EAAE,MAAM,GAAGomF,IAAIprF,EAAE,CAACkF,GAAE,EAAGlF,EAAEmG,EAAEwL,EAAE3M,EAAE,MAAMomF,EAAEA,EAAEmlF,QAAQ,IAAIrrK,EAAE,CAAC,IAAIkmF,EAAEpmF,EAAE6mB,MAAMu/D,GAAG,CAAC,GAAGA,IAC5fz5E,EAAE,CAACzM,GAAE,EAAGyM,EAAE3M,EAAEhF,EAAEmG,EAAE,MAAM,GAAGilF,IAAIprF,EAAE,CAACkF,GAAE,EAAGlF,EAAEgF,EAAE2M,EAAExL,EAAE,MAAMilF,EAAEA,EAAEmlF,QAAQ,IAAIrrK,EAAE,MAAMlE,MAAMm5J,EAAE,OAAQ,GAAGxoJ,EAAE+rP,YAAY19P,EAAE,MAAMgB,MAAMm5J,EAAE,MAAO,GAAG,IAAIxoJ,EAAE8U,IAAI,MAAMzlB,MAAMm5J,EAAE,MAAM,OAAOxoJ,EAAE+nP,UAAUr0N,UAAU1zB,EAAEwW,EAAEloB,EAAmB+9P,CAAG71O,IAAOA,EAAE,OAAO,KAAK,IAAI,IAAIloB,EAAEkoB,IAAI,CAAC,GAAG,IAAIloB,EAAEwmB,KAAK,IAAIxmB,EAAEwmB,IAAI,OAAOxmB,EAAE,GAAGA,EAAE4rB,MAAM5rB,EAAE4rB,MAAMguO,OAAO55P,EAAEA,EAAEA,EAAE4rB,UAAU,CAAC,GAAG5rB,IAAIkoB,EAAE,MAAM,MAAMloB,EAAEswK,SAAS,CAAC,IAAItwK,EAAE45P,QAAQ55P,EAAE45P,SAAS1xO,EAAE,OAAO,KAAKloB,EAAEA,EAAE45P,OAAO55P,EAAEswK,QAAQspF,OAAO55P,EAAE45P,OAAO55P,EAAEA,EAAEswK,SAAS,OAAO,KAC5c,IAAI0tF,GAAGC,GAAGxhB,GAAGyhB,IAAG,EAAGC,GAAG,GAAGC,GAAG,KAAKC,GAAG,KAAKC,GAAG,KAAKlyO,GAAG,IAAI86K,IAAIq3D,GAAG,IAAIr3D,IAAIs3D,GAAG,GAAGC,GAAG,0QAA0QlzP,MAAM,KAAKmzP,GAAG,gHAAgHnzP,MAAM,KAC7X,SAASozP,GAAGz2O,EAAEloB,EAAE0R,EAAE3R,GAAG,MAAM,CAAC6+P,UAAU12O,EAAE22O,aAAa7+P,EAAE8+P,iBAAmB,GAAFptP,EAAKsvB,YAAYjhC,GAAG,SAASg/P,GAAG72O,EAAEloB,GAAG,OAAOkoB,GAAG,IAAK,QAAQ,IAAK,OAAOk2O,GAAG,KAAK,MAAM,IAAK,YAAY,IAAK,YAAYC,GAAG,KAAK,MAAM,IAAK,YAAY,IAAK,WAAWC,GAAG,KAAK,MAAM,IAAK,cAAc,IAAK,aAAalyO,GAAGhqB,OAAOpC,EAAEyyM,WAAW,MAAM,IAAK,oBAAoB,IAAK,qBAAqB8rD,GAAGn8P,OAAOpC,EAAEyyM,YAC/d,SAASusD,GAAG92O,EAAEloB,EAAE0R,EAAE3R,EAAEmG,GAAG,OAAG,OAAOgiB,GAAGA,EAAE8Y,cAAc96B,GAASgiB,EAAEy2O,GAAG3+P,EAAE0R,EAAE3R,EAAEmG,GAAG,OAAOlG,GAAY,QAARA,EAAEi/P,GAAGj/P,KAAai+P,GAAGj+P,GAAIkoB,IAAEA,EAAE42O,kBAAkB/+P,EAASmoB,GAC9I,SAASg3O,GAAGh3O,GAAG,IAAIloB,EAAEm/P,GAAGj3O,EAAE3W,QAAQ,GAAG,OAAOvR,EAAE,CAAC,IAAI0R,EAAE8rP,GAAGx9P,GAAG,GAAG,OAAO0R,EAAE,GAAW,MAAR1R,EAAE0R,EAAE8U,MAAY,GAAW,QAARxmB,EAAE29P,GAAGjsP,IAAoF,OAAvEwW,EAAE02O,UAAU5+P,OAAEwqF,EAAE40K,yBAAyBl3O,EAAEwgO,UAAS,WAAWjM,GAAG/qO,WAAkB,GAAG,IAAI1R,GAAG0R,EAAE+nP,UAAU4F,QAA8D,YAArDn3O,EAAE02O,UAAU,IAAIltP,EAAE8U,IAAI9U,EAAE+nP,UAAU6F,cAAc,MAAap3O,EAAE02O,UAAU,KAAK,SAASW,GAAGr3O,GAAG,GAAG,OAAOA,EAAE02O,UAAU,OAAM,EAAG,IAAI5+P,EAAEw/P,GAAGt3O,EAAE22O,aAAa32O,EAAE42O,iBAAiB52O,EAAE8Y,aAAa,GAAG,OAAOhhC,EAAE,CAAC,IAAI0R,EAAEutP,GAAGj/P,GAAiC,OAA9B,OAAO0R,GAAGusP,GAAGvsP,GAAGwW,EAAE02O,UAAU5+P,GAAQ,EAAG,OAAM,EAC9d,SAASy/P,GAAGv3O,EAAEloB,EAAE0R,GAAG6tP,GAAGr3O,IAAIxW,EAAEtP,OAAOpC,GAAG,SAAS0/P,KAAK,IAAIxB,IAAG,EAAG,EAAEC,GAAG18P,QAAQ,CAAC,IAAIymB,EAAEi2O,GAAG,GAAG,GAAG,OAAOj2O,EAAE02O,UAAU,CAAmB,QAAlB12O,EAAE+2O,GAAG/2O,EAAE02O,aAAqBZ,GAAG91O,GAAG,MAAM,IAAIloB,EAAEw/P,GAAGt3O,EAAE22O,aAAa32O,EAAE42O,iBAAiB52O,EAAE8Y,aAAa,OAAOhhC,EAAEkoB,EAAE02O,UAAU5+P,EAAEm+P,GAAG3+N,QAAQ,OAAO4+N,IAAImB,GAAGnB,MAAMA,GAAG,MAAM,OAAOC,IAAIkB,GAAGlB,MAAMA,GAAG,MAAM,OAAOC,IAAIiB,GAAGjB,MAAMA,GAAG,MAAMlyO,GAAG1oB,QAAQ+7P,IAAIlB,GAAG76P,QAAQ+7P,IAAI,SAASE,GAAGz3O,EAAEloB,GAAGkoB,EAAE02O,YAAY5+P,IAAIkoB,EAAE02O,UAAU,KAAKV,KAAKA,IAAG,EAAG1zK,EAAEo1K,0BAA0Bp1K,EAAEq1K,wBAAwBH,MAC7d,SAASI,GAAG53O,GAAG,SAASloB,EAAEA,GAAG,OAAO2/P,GAAG3/P,EAAEkoB,GAAG,GAAG,EAAEi2O,GAAG18P,OAAO,CAACk+P,GAAGxB,GAAG,GAAGj2O,GAAG,IAAI,IAAIxW,EAAE,EAAEA,EAAEysP,GAAG18P,OAAOiQ,IAAI,CAAC,IAAI3R,EAAEo+P,GAAGzsP,GAAG3R,EAAE6+P,YAAY12O,IAAInoB,EAAE6+P,UAAU,OAA+F,IAAxF,OAAOR,IAAIuB,GAAGvB,GAAGl2O,GAAG,OAAOm2O,IAAIsB,GAAGtB,GAAGn2O,GAAG,OAAOo2O,IAAIqB,GAAGrB,GAAGp2O,GAAGkE,GAAG1oB,QAAQ1D,GAAGu+P,GAAG76P,QAAQ1D,GAAO0R,EAAE,EAAEA,EAAE8sP,GAAG/8P,OAAOiQ,KAAI3R,EAAEy+P,GAAG9sP,IAAKktP,YAAY12O,IAAInoB,EAAE6+P,UAAU,MAAM,KAAK,EAAEJ,GAAG/8P,QAAiB,QAARiQ,EAAE8sP,GAAG,IAAYI,WAAYM,GAAGxtP,GAAG,OAAOA,EAAEktP,WAAWJ,GAAGh/N,QAC/X,SAASugO,GAAG73O,GAA6F,OAA1FA,EAAEA,EAAE3W,QAAQ2W,EAAEo4F,YAAY5sG,QAASssP,0BAA0B93O,EAAEA,EAAE83O,yBAAgC,IAAI93O,EAAE8jF,SAAS9jF,EAAEimB,WAAWjmB,EAAE,SAAS+3O,GAAG/3O,GAAG,GAAGA,EAAEA,EAAE0xO,aAAa1xO,GAAG,IAAIA,EAAE1B,KAAK,OAAO0B,GAAI,KAAK,SAASg4O,GAAGh4O,EAAEloB,EAAE0R,IAAM1R,EAAEwxP,EAAGtpO,EAAExW,EAAEyuP,eAAenH,wBAAwBh5P,OAAI0R,EAAE0nP,mBAAmBrI,EAAGr/O,EAAE0nP,mBAAmBp5P,GAAG0R,EAAE2nP,mBAAmBtI,EAAGr/O,EAAE2nP,mBAAmBnxO,IACtX,SAASk4O,GAAGl4O,GAAG,GAAGA,GAAGA,EAAEi4O,eAAenH,wBAAwB,CAAC,IAAI,IAAIh5P,EAAEkoB,EAAEm4O,YAAY3uP,EAAE,GAAG1R,GAAG0R,EAAEzL,KAAKjG,GAAGA,EAAEigQ,GAAGjgQ,GAAG,IAAIA,EAAE0R,EAAEjQ,OAAO,EAAEzB,KAAKkgQ,GAAGxuP,EAAE1R,GAAG,WAAWkoB,GAAG,IAAIloB,EAAE,EAAEA,EAAE0R,EAAEjQ,OAAOzB,IAAIkgQ,GAAGxuP,EAAE1R,GAAG,UAAUkoB,IAAI,SAASo4O,GAAGp4O,EAAEloB,EAAE0R,GAAGwW,GAAGxW,GAAGA,EAAEyuP,eAAelH,mBAAmBj5P,EAAEwxP,EAAGtpO,EAAExW,EAAEyuP,eAAelH,qBAAqBvnP,EAAE0nP,mBAAmBrI,EAAGr/O,EAAE0nP,mBAAmBp5P,GAAG0R,EAAE2nP,mBAAmBtI,EAAGr/O,EAAE2nP,mBAAmBnxO,IAAI,SAASq4O,GAAGr4O,GAAGA,GAAGA,EAAEi4O,eAAelH,kBAAkBqH,GAAGp4O,EAAEm4O,YAAY,KAAKn4O,GAChe,SAASs4O,GAAGt4O,GAAGixO,EAAGjxO,EAAEk4O,IAAI,SAASK,KAAK,OAAM,EAAG,SAASC,KAAK,OAAM,EAAG,SAAS9lG,GAAE1yI,EAAEloB,EAAE0R,EAAE3R,GAA4F,IAAI,IAAImG,KAAjG9F,KAAK+/P,eAAej4O,EAAE9nB,KAAKigQ,YAAYrgQ,EAAEI,KAAK4gC,YAAYtvB,EAAEwW,EAAE9nB,KAAKC,YAAYsgQ,UAAyBz4O,EAAEhoB,eAAegG,MAAMlG,EAAEkoB,EAAEhiB,IAAI9F,KAAK8F,GAAGlG,EAAE0R,GAAG,WAAWxL,EAAE9F,KAAKmR,OAAOxR,EAAEK,KAAK8F,GAAGwL,EAAExL,IAAgI,OAA5H9F,KAAK00F,oBAAoB,MAAMpjF,EAAE0tE,iBAAiB1tE,EAAE0tE,kBAAiB,IAAK1tE,EAAEq3D,aAAa03L,GAAGC,GAAGtgQ,KAAKy6N,qBAAqB6lC,GAAUtgQ,KAG3J,SAASwgQ,GAAG14O,EAAEloB,EAAE0R,EAAE3R,GAAG,GAAGK,KAAKygQ,UAAUp/P,OAAO,CAAC,IAAIyE,EAAE9F,KAAKygQ,UAAU76P,MAA2B,OAArB5F,KAAKU,KAAKoF,EAAEgiB,EAAEloB,EAAE0R,EAAE3R,GAAUmG,EAAE,OAAO,IAAI9F,KAAK8nB,EAAEloB,EAAE0R,EAAE3R,GAC7X,SAAS+gQ,GAAG54O,GAAG,KAAKA,aAAa9nB,MAAM,MAAMW,MAAMm5J,EAAE,MAAMhyI,EAAE64O,aAAa,GAAG3gQ,KAAKygQ,UAAUp/P,QAAQrB,KAAKygQ,UAAU56P,KAAKiiB,GAAG,SAAS84O,GAAG94O,GAAGA,EAAE24O,UAAU,GAAG34O,EAAE+4O,UAAUL,GAAG14O,EAAEsa,QAAQs+N,GAHlLv/P,EAAEq5J,GAAEt6J,UAAU,CAAC+gC,eAAe,WAAWjhC,KAAKg/E,kBAAiB,EAAG,IAAIl3D,EAAE9nB,KAAK4gC,YAAY9Y,IAAIA,EAAEmZ,eAAenZ,EAAEmZ,iBAAiB,kBAAmBnZ,EAAE6gD,cAAc7gD,EAAE6gD,aAAY,GAAI3oE,KAAK00F,mBAAmB2rK,KAAKhqN,gBAAgB,WAAW,IAAIvuB,EAAE9nB,KAAK4gC,YAAY9Y,IAAIA,EAAEuuB,gBAAgBvuB,EAAEuuB,kBAAkB,kBAAmBvuB,EAAEg5O,eAAeh5O,EAAEg5O,cAAa,GAAI9gQ,KAAKy6N,qBAAqB4lC,KAAKU,QAAQ,WAAW/gQ,KAAKk5P,aAAamH,IAAInH,aAAaoH,GAAGK,WAAW,WAAW,IACpd/gQ,EADwdkoB,EAAE9nB,KAAKC,YAAYsgQ,UACze,IAAI3gQ,KAAKkoB,EAAE9nB,KAAKJ,GAAG,KAAKI,KAAK4gC,YAAY5gC,KAAKigQ,YAAYjgQ,KAAK+/P,eAAe,KAAK//P,KAAKy6N,qBAAqBz6N,KAAK00F,mBAAmB4rK,GAAGtgQ,KAAKi5P,mBAAmBj5P,KAAKg5P,mBAAmB,QAAQx+F,GAAE+lG,UAAU,CAACj0P,KAAK,KAAK6E,OAAO,KAAKukC,cAAc,WAAW,OAAO,MAAM4lL,WAAW,KAAKF,QAAQ,KAAKC,WAAW,KAAKjsB,UAAU,SAAStnL,GAAG,OAAOA,EAAEsnL,WAAWhnM,KAAKmK,OAAOysE,iBAAiB,KAAKgiL,UAAU,MAC9YxmG,GAAEroE,OAAO,SAASrqE,GAAG,SAASloB,KAAK,SAAS0R,IAAI,OAAO3R,EAAEgH,MAAM3G,KAAKoB,WAAW,IAAIzB,EAAEK,KAAKJ,EAAEM,UAAUP,EAAEO,UAAU,IAAI4F,EAAE,IAAIlG,EAAmH,OAAjHuB,EAAE2E,EAAEwL,EAAEpR,WAAWoR,EAAEpR,UAAU4F,EAAEwL,EAAEpR,UAAUD,YAAYqR,EAAEA,EAAEivP,UAAUp/P,EAAE,GAAGxB,EAAE4gQ,UAAUz4O,GAAGxW,EAAE6gF,OAAOxyF,EAAEwyF,OAAOyuK,GAAGtvP,GAAUA,GAAGsvP,GAAGpmG,IACvE,IAAIymG,GAAGzmG,GAAEroE,OAAO,CAAC66D,cAAc,KAAKk0G,YAAY,KAAKC,cAAc,OAAOC,GAAG5mG,GAAEroE,OAAO,CAAC6sG,cAAc,SAASl3K,GAAG,MAAM,kBAAkBA,EAAEA,EAAEk3K,cAAc1rL,OAAO0rL,iBAAiBqiE,GAAG7mG,GAAEroE,OAAO,CAAChvF,KAAK,KAAKH,OAAO,OAAOs+P,GAAGD,GAAGlvK,OAAO,CAACk2F,cAAc,OACza,SAASk5E,GAAGz5O,GAAG,IAAIloB,EAAEkoB,EAAEgkB,QAA+E,MAAvE,aAAahkB,EAAgB,KAAbA,EAAEA,EAAE8qB,WAAgB,KAAKhzC,IAAIkoB,EAAE,IAAKA,EAAEloB,EAAE,KAAKkoB,IAAIA,EAAE,IAAW,IAAIA,GAAG,KAAKA,EAAEA,EAAE,EAC7H,IAAI05O,GAAG,CAACC,IAAI,SAASC,SAAS,IAAIxsM,KAAK,YAAYC,GAAG,UAAUC,MAAM,aAAaC,KAAK,YAAYssM,IAAI,SAASC,IAAI,KAAKC,KAAK,cAAcC,KAAK,cAAcC,OAAO,aAAaC,gBAAgB,gBAAgBC,GAAG,CAAC,EAAE,YAAY,EAAE,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,WAAW,GAAG,SAAS,GAAG,IAAI,GAAG,SAAS,GAAG,WAAW,GAAG,MAAM,GAAG,OAAO,GAAG,YAAY,GAAG,UAAU,GAAG,aAAa,GAAG,YAAY,GAAG,SAAS,GAAG,SAAS,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,KAChf,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,MAAM,IAAI,MAAM,IAAI,MAAM,IAAI,UAAU,IAAI,aAAa,IAAI,QAAQC,GAAG,CAACC,IAAI,SAASC,QAAQ,UAAUC,KAAK,UAAUC,MAAM,YAAY,SAASC,GAAGz6O,GAAG,IAAIloB,EAAEI,KAAK4gC,YAAY,OAAOhhC,EAAE4iQ,iBAAiB5iQ,EAAE4iQ,iBAAiB16O,MAAIA,EAAEo6O,GAAGp6O,OAAMloB,EAAEkoB,GAAM,SAAS26O,KAAK,OAAOF,GAQpI,IAPrL,IAAIh1P,GAAG8zP,GAAGlvK,OAAO,CAAC9gF,IAAI,SAASyW,GAAG,GAAGA,EAAEzW,IAAI,CAAC,IAAIzR,EAAE4hQ,GAAG15O,EAAEzW,MAAMyW,EAAEzW,IAAI,GAAG,iBAAiBzR,EAAE,OAAOA,EAAE,MAAM,aAAakoB,EAAExb,KAAc,MAARwb,EAAEy5O,GAAGz5O,IAAU,QAAQzc,OAAOC,aAAawc,GAAI,YAAYA,EAAExb,MAAM,UAAUwb,EAAExb,KAAK21P,GAAGn6O,EAAEgkB,UAAU,eAAe,IAAIm1E,SAAS,KAAKp/E,QAAQ,KAAKC,SAAS,KAAKC,OAAO,KAAKk7B,QAAQ,KAAK5C,OAAO,KAAKskG,OAAO,KAAK6jG,iBAAiBC,GAAG7vN,SAAS,SAAS9qB,GAAG,MAAM,aAAaA,EAAExb,KAAKi1P,GAAGz5O,GAAG,GAAGgkB,QAAQ,SAAShkB,GAAG,MAAM,YAAYA,EAAExb,MAAM,UAAUwb,EAAExb,KAAKwb,EAAEgkB,QAAQ,GAAG7I,MAAM,SAASnb,GAAG,MAAM,aAC7fA,EAAExb,KAAKi1P,GAAGz5O,GAAG,YAAYA,EAAExb,MAAM,UAAUwb,EAAExb,KAAKwb,EAAEgkB,QAAQ,KAAK42N,GAAG,EAAEC,GAAG,EAAEC,IAAG,EAAGC,IAAG,EAAGC,GAAGzB,GAAGlvK,OAAO,CAACopI,QAAQ,KAAKC,QAAQ,KAAKj6L,QAAQ,KAAKC,QAAQ,KAAKJ,MAAM,KAAKE,MAAM,KAAKO,QAAQ,KAAKC,SAAS,KAAKC,OAAO,KAAKk7B,QAAQ,KAAKulM,iBAAiBC,GAAGn/N,OAAO,KAAK2Y,QAAQ,KAAKosI,cAAc,SAASvgK,GAAG,OAAOA,EAAEugK,gBAAgBvgK,EAAEi7O,cAAcj7O,EAAEo4F,WAAWp4F,EAAE2zM,UAAU3zM,EAAEi7O,cAAcC,UAAU,SAASl7O,GAAG,GAAG,cAAcA,EAAE,OAAOA,EAAEk7O,UAAU,IAAIpjQ,EAAE8iQ,GAAgB,OAAbA,GAAG56O,EAAEyzM,QAAeqnC,GAAG,cAAc96O,EAAExb,KAAKwb,EAAEyzM,QAC/e37N,EAAE,GAAGgjQ,IAAG,EAAG,IAAIK,UAAU,SAASn7O,GAAG,GAAG,cAAcA,EAAE,OAAOA,EAAEm7O,UAAU,IAAIrjQ,EAAE+iQ,GAAgB,OAAbA,GAAG76O,EAAE0zM,QAAeqnC,GAAG,cAAc/6O,EAAExb,KAAKwb,EAAE0zM,QAAQ57N,EAAE,GAAGijQ,IAAG,EAAG,MAAMK,GAAGJ,GAAG3wK,OAAO,CAACkgH,UAAU,KAAK3tL,MAAM,KAAKC,OAAO,KAAKw+O,SAAS,KAAKC,mBAAmB,KAAKC,MAAM,KAAKC,MAAM,KAAKC,MAAM,KAAKv7E,YAAY,KAAK3kJ,UAAU,OAAOmgO,GAAGV,GAAG3wK,OAAO,CAACsxK,aAAa,OAAOC,GAAGrC,GAAGlvK,OAAO,CAACvvD,QAAQ,KAAK2wK,cAAc,KAAKlyK,eAAe,KAAKU,OAAO,KAAKk7B,QAAQ,KAAKp7B,QAAQ,KAAKC,SAAS,KAAK0gO,iBAAiBC,KAAKkB,GAAGnpG,GAAEroE,OAAO,CAAC1hC,aAAa,KAChgBywM,YAAY,KAAKC,cAAc,OAAOyC,GAAGd,GAAG3wK,OAAO,CAAC40D,OAAO,SAASj/H,GAAG,MAAM,WAAWA,EAAEA,EAAEi/H,OAAO,gBAAgBj/H,GAAGA,EAAE+7O,YAAY,GAAGr4L,OAAO,SAAS1jD,GAAG,MAAM,WAAWA,EAAEA,EAAE0jD,OAAO,gBAAgB1jD,GAAGA,EAAEg8O,YAAY,eAAeh8O,GAAGA,EAAEi8O,WAAW,GAAGC,OAAO,KAAKC,UAAU,OAAOnqM,GAAG,CAAC,CAAC,OAAO,OAAO,GAAG,CAAC,SAAS,SAAS,GAAG,CAAC,QAAQ,QAAQ,GAAG,CAAC,QAAQ,QAAQ,GAAG,CAAC,cAAc,cAAc,GAAG,CAAC,OAAO,OAAO,GAAG,CAAC,MAAM,MAAM,GAAG,CAAC,WAAW,WAAW,GAAG,CAAC,WAAW,cAAc,GAAG,CAAC,UAAU,UAC9e,GAAG,CAAC,YAAY,YAAY,GAAG,CAAC,OAAO,OAAO,GAAG,CAAC,QAAQ,QAAQ,GAAG,CAAC,QAAQ,QAAQ,GAAG,CAAC,UAAU,UAAU,GAAG,CAAC,UAAU,UAAU,GAAG,CAAC,WAAW,WAAW,GAAG,CAAC,QAAQ,QAAQ,GAAG,CAAC,YAAY,YAAY,GAAG,CAAC,UAAU,UAAU,GAAG,CAAC,QAAQ,QAAQ,GAAG,CAAC,QAAQ,QAAQ,GAAG,CAAC,OAAO,OAAO,GAAG,CAAC,gBAAgB,gBAAgB,GAAG,CAAC,cAAc,cAAc,GAAG,CAAC,YAAY,YAAY,GAAG,CAAC,aAAa,aAAa,GAAG,CAAC,QAAQ,QAAQ,GAAG,CAAC,SAAS,SAAS,GAAG,CAAC,SAAS,SAAS,GAAG,CAAC,cAAc,cAClf,GAAG,CAAC,WAAW,WAAW,GAAG,CAAC,aAAa,aAAa,GAAG,CAAC,eAAe,eAAe,GAAG,CAAC,OAAO,OAAO,GAAG,CAAC,YAAY,YAAY,GAAG,CAAC,WAAW,WAAW,GAAG,CAAC,YAAY,YAAY,GAAG,CAAC,WAAW,WAAW,GAAG,CAAC,YAAY,YAAY,GAAG,CAAC,WAAW,WAAW,GAAG,CAAC,YAAY,YAAY,GAAG,CAAC,cAAc,cAAc,GAAG,CAAC,aAAa,aAAa,GAAG,CAAC,cAAc,cAAc,GAAG,CAAC,SAAS,SAAS,GAAG,CAAC,SAAS,SAAS,GAAG,CAAC,YAAY,YAAY,GAAG,CAAC,QAAQ,QAAQ,GAAG,CAAC,QAAQ,QAChf,GAAG,CAACkjM,GAAG,eAAe,GAAG,CAACC,GAAG,qBAAqB,GAAG,CAACC,GAAG,iBAAiB,GAAG,CAAC,UAAU,UAAU,GAAG,CAAC,iBAAiB,iBAAiB,GAAG,CAAC,iBAAiB,iBAAiB,GAAG,CAAC,UAAU,UAAU,GAAG,CAAC,YAAY,YAAY,GAAG,CAAC,QAAQ,QAAQ,GAAG,CAAC,QAAQ,QAAQ,GAAG,CAAC,oBAAoB,oBAAoB,GAAG,CAAC,OAAO,OAAO,GAAG,CAAC,aAAa,aAAa,GAAG,CAAC,iBAAiB,iBAAiB,GAAG,CAAC,YAAY,YAAY,GAAG,CAAC,qBAAqB,qBAAqB,GAAG,CAAC,UAAU,UAAU,GAAG,CAAC,WAClf,WAAW,GAAG,CAAC,UAAU,UAAU,GAAG,CAAC,UAAU,UAAU,GAAG,CAAC,UAAU,UAAU,GAAG,CAAC,aAAa,aAAa,GAAG,CAACC,GAAG,gBAAgB,GAAG,CAAC,UAAU,UAAU,IAAI+G,GAAG,GAAGC,GAAG,GAAGC,GAAG,EAAOA,GAAGtqM,GAAGz4D,OAAO+iQ,KAAK,CAAC,IAAIC,GAAGvqM,GAAGsqM,IAAIE,GAAGD,GAAG,GAAGE,GAAGF,GAAG,GAAGG,GAAGH,GAAG,GAAGI,GAAG,MAAMF,GAAG,GAAG74O,cAAc64O,GAAGr4P,MAAM,IAAIw4P,GAAG,CAAC9L,wBAAwB,CAAC+L,QAAQF,GAAGG,SAASH,GAAG,WAAW3L,aAAa,CAACwL,IAAIO,cAAcL,IAAIN,GAAGK,IAAIG,GAAGP,GAAGG,IAAII,GACpZ,IAAI/pG,GAAG,CAACg+F,WAAWuL,GAAGY,iBAAiB,SAASh9O,GAAW,YAAO,KAAfA,EAAEq8O,GAAGr8O,IAAqBA,EAAE+8O,cAAc,GAAGnM,cAAc,SAAS5wO,EAAEloB,EAAE0R,EAAE3R,GAAG,IAAImG,EAAEq+P,GAAGr8O,GAAG,IAAIhiB,EAAE,OAAO,KAAK,OAAOgiB,GAAG,IAAK,WAAW,GAAG,IAAIy5O,GAAGjwP,GAAG,OAAO,KAAK,IAAK,UAAU,IAAK,QAAQwW,EAAEva,GAAG,MAAM,IAAK,OAAO,IAAK,QAAQua,EAAEw5O,GAAG,MAAM,IAAK,QAAQ,GAAG,IAAIhwP,EAAEgyB,OAAO,OAAO,KAAK,IAAK,WAAW,IAAK,WAAW,IAAK,YAAY,IAAK,YAAY,IAAK,UAAU,IAAK,WAAW,IAAK,YAAY,IAAK,cAAcxb,EAAEg7O,GAAG,MAAM,IAAK,OAAO,IAAK,UAAU,IAAK,YAAY,IAAK,WAAW,IAAK,YAAY,IAAK,WAAW,IAAK,YAAY,IAAK,OAAOh7O,EAC/kB07O,GAAG,MAAM,IAAK,cAAc,IAAK,WAAW,IAAK,YAAY,IAAK,aAAa17O,EAAE47O,GAAG,MAAM,KAAK1G,GAAG,KAAKC,GAAG,KAAKC,GAAGp1O,EAAEm5O,GAAG,MAAM,KAAK9D,GAAGr1O,EAAE67O,GAAG,MAAM,IAAK,SAAS77O,EAAEu5O,GAAG,MAAM,IAAK,QAAQv5O,EAAE87O,GAAG,MAAM,IAAK,OAAO,IAAK,MAAM,IAAK,QAAQ97O,EAAEs5O,GAAG,MAAM,IAAK,oBAAoB,IAAK,qBAAqB,IAAK,gBAAgB,IAAK,cAAc,IAAK,cAAc,IAAK,aAAa,IAAK,cAAc,IAAK,YAAYt5O,EAAEo7O,GAAG,MAAM,QAAQp7O,EAAE0yI,GAA+B,OAAN4lG,GAAvBxgQ,EAAEkoB,EAAE+4O,UAAU/6P,EAAElG,EAAE0R,EAAE3R,IAAgBC,IAAImlQ,GAAG36K,EAAE46K,8BACxdC,GAAG76K,EAAE40K,yBAAyBkG,GAAGvqG,GAAGmqG,iBAAuBK,GAAG,GAC9D,SAASC,GAAGt9O,GAAG,IAAIloB,EAAEkoB,EAAEu9O,WAAW/zP,EAAE1R,EAAE,EAAE,CAAC,IAAI0R,EAAE,CAACwW,EAAEw9O,UAAUz/P,KAAKyL,GAAG,MAAM,IAAI3R,EAAE2R,EAAE,GAAG,IAAI3R,EAAEymB,IAAIzmB,EAAEA,EAAE05P,UAAU6F,kBAAkB,CAAC,KAAKv/P,EAAE65P,QAAQ75P,EAAEA,EAAE65P,OAAO75P,EAAE,IAAIA,EAAEymB,IAAI,KAAKzmB,EAAE05P,UAAU6F,cAAc,IAAIv/P,EAAE,MAAc,KAARC,EAAE0R,EAAE8U,MAAW,IAAIxmB,GAAGkoB,EAAEw9O,UAAUz/P,KAAKyL,GAAGA,EAAEytP,GAAGp/P,SAAS2R,GAAG,IAAIA,EAAE,EAAEA,EAAEwW,EAAEw9O,UAAUjkQ,OAAOiQ,IAAI,CAAC1R,EAAEkoB,EAAEw9O,UAAUh0P,GAAG,IAAIxL,EAAE65P,GAAG73O,EAAE8Y,aAAajhC,EAAEmoB,EAAE22O,aAAa,IAAI,IAAI95P,EAAEmjB,EAAE8Y,YAAY/7B,EAAEijB,EAAE42O,iBAAiB3zK,EAAE,KAAKrW,EAAE,EAAEA,EAAEq6K,EAAG1tP,OAAOqzE,IAAI,CAAC,IAAIurB,EAAE8uJ,EAAGr6K,GAAGurB,IAAIA,EAAEA,EAAEy4J,cAAc/4P,EAAEC,EAAE+E,EAAEmB,EAAEjB,MAAMkmF,EAAE4lK,EAAG5lK,EAAEkV,IAAIixJ,EAAGnmK,IAC/e,IAAIw6K,IAAG,EAAG,SAAS3rG,GAAE9xI,EAAEloB,GAAGi8J,GAAGj8J,EAAEkoB,GAAE,GAAI,SAAS+zI,GAAG/zI,EAAEloB,EAAE0R,GAAG,OAAO4zP,GAAGtlQ,IAAI,KAAK,EAAE,IAAID,EAAE6lQ,GAAG90O,KAAK,KAAK9wB,EAAE,GAAG,MAAM,KAAK,EAAED,EAAE8lQ,GAAG/0O,KAAK,KAAK9wB,EAAE,GAAG,MAAM,QAAQD,EAAE+lQ,GAAGh1O,KAAK,KAAK9wB,EAAE,GAAG0R,EAAEwW,EAAEjK,iBAAiBje,EAAED,GAAE,GAAImoB,EAAEjK,iBAAiBje,EAAED,GAAE,GAAI,SAAS6lQ,GAAG19O,EAAEloB,EAAE0R,GAAGwoP,IAAIF,KAAK,IAAIj6P,EAAE+lQ,GAAG5/P,EAAEg0P,GAAGA,IAAG,EAAG,IAAIH,GAAGh6P,EAAEmoB,EAAEloB,EAAE0R,GAAG,SAASwoP,GAAGh0P,IAAIw8L,MAAM,SAASmjE,GAAG39O,EAAEloB,EAAE0R,GAAG2zP,GAAGF,GAAGW,GAAGh1O,KAAK,KAAK5I,EAAEloB,EAAE0R,IAChW,SAASq0P,GAAG79O,EAAEloB,EAAE0R,EAAE3R,GAAG,GAAGwlQ,GAAG9jQ,OAAO,CAAC,IAAIyE,EAAEq/P,GAAGv/P,MAAME,EAAE24P,aAAa32O,EAAEhiB,EAAE44P,iBAAiB9+P,EAAEkG,EAAE86B,YAAYtvB,EAAExL,EAAEu/P,WAAW1lQ,EAAEmoB,EAAEhiB,OAAOgiB,EAAE,CAAC22O,aAAa32O,EAAE42O,iBAAiB9+P,EAAEghC,YAAYtvB,EAAE+zP,WAAW1lQ,EAAE2lQ,UAAU,IAAI,IAAI,GAAG1lQ,EAAEwlQ,GAAG9zP,EAAEwW,EAAEiyO,GAAGn6P,EAAE0R,OAAE,OAAY,CAACyoP,IAAG,EAAG,IAAIF,GAAGj6P,EAAE0R,OAAE,GAAQ,QAAQyoP,IAAG,EAAGz3D,OAAO,QAAQx6K,EAAE22O,aAAa,KAAK32O,EAAE8Y,YAAY,KAAK9Y,EAAEu9O,WAAW,KAAKv9O,EAAEw9O,UAAUjkQ,OAAO,EAAE8jQ,GAAG9jQ,OAHjU,IAG4U8jQ,GAAGt/P,KAAKiiB,IAC5Y,SAAS49O,GAAG59O,EAAEloB,EAAE0R,GAAG,GAAGi0P,GAAG,GAAG,EAAExH,GAAG18P,SAAS,EAAEg9P,GAAG32P,QAAQogB,GAAGA,EAAEy2O,GAAG,KAAKz2O,EAAEloB,EAAE0R,GAAGysP,GAAGl4P,KAAKiiB,OAAO,CAAC,IAAInoB,EAAEy/P,GAAGt3O,EAAEloB,EAAE0R,GAAG,OAAO3R,EAAEg/P,GAAG72O,EAAExW,IAAI,EAAE+sP,GAAG32P,QAAQogB,IAAIA,EAAEy2O,GAAG5+P,EAAEmoB,EAAEloB,EAAE0R,GAAGysP,GAAGl4P,KAAKiiB,IA5BpB,SAAYA,EAAEloB,EAAE0R,EAAE3R,GAAG,OAAOC,GAAG,IAAK,QAAQ,OAAOo+P,GAAGY,GAAGZ,GAAGl2O,EAAEloB,EAAE0R,EAAE3R,IAAG,EAAG,IAAK,YAAY,OAAOs+P,GAAGW,GAAGX,GAAGn2O,EAAEloB,EAAE0R,EAAE3R,IAAG,EAAG,IAAK,YAAY,OAAOu+P,GAAGU,GAAGV,GAAGp2O,EAAEloB,EAAE0R,EAAE3R,IAAG,EAAG,IAAK,cAAc,IAAImG,EAAEnG,EAAE0yM,UAAgD,OAAtCrmL,GAAGvR,IAAI3U,EAAE84P,GAAG5yO,GAAGtqB,IAAIoE,IAAI,KAAKgiB,EAAEloB,EAAE0R,EAAE3R,KAAU,EAAG,IAAK,oBAAoB,OAAOmG,EAAEnG,EAAE0yM,UAAU8rD,GAAG1jP,IAAI3U,EAAE84P,GAAGT,GAAGz8P,IAAIoE,IAAI,KAAKgiB,EAAEloB,EAAE0R,EAAE3R,KAAI,EAAG,OAAM,EA4B3TimQ,CAAGjmQ,EAAEmoB,EAAEloB,EAAE0R,KAAKqtP,GAAG72O,EAAExW,GAAGq0P,GAAG79O,EAAEloB,EAAE0R,EAAE,QAAQ,SAAS8tP,GAAGt3O,EAAEloB,EAAE0R,GAAG,IAAI3R,EAAEggQ,GAAGruP,GAAW,GAAG,QAAX3R,EAAEo/P,GAAGp/P,IAAe,CAAC,IAAImG,EAAEs3P,GAAGz9P,GAAG,GAAG,OAAOmG,EAAEnG,EAAE,SAAS,CAAC,IAAIgF,EAAEmB,EAAEsgB,IAAI,GAAG,KAAKzhB,EAAE,CAAS,GAAG,QAAXhF,EAAE49P,GAAGz3P,IAAe,OAAOnG,EAAEA,EAAE,UAAU,GAAG,IAAIgF,EAAE,CAAC,GAAGmB,EAAEuzP,UAAU4F,QAAQ,OAAO,IAAIn5P,EAAEsgB,IAAItgB,EAAEuzP,UAAU6F,cAAc,KAAKv/P,EAAE,UAAUmG,IAAInG,IAAIA,EAAE,OAAmB,OAAZgmQ,GAAG79O,EAAEloB,EAAE0R,EAAE3R,GAAU,KACxe,SAASkmQ,GAAG/9O,GAAG,IAAIgwO,EAAG,OAAM,EAAY,IAAIl4P,GAAbkoB,EAAE,KAAKA,KAAanQ,SAAqG,OAA5F/X,KAAIA,EAAE+X,SAASE,cAAc,QAASsT,aAAarD,EAAE,WAAWloB,EAAE,mBAAoBA,EAAEkoB,IAAWloB,EAAE,IAAIkmQ,GAAG,IAAK,mBAAoBp+D,QAAQA,QAAQZ,KAAK,SAASi/D,GAAGj+O,GAAG,IAAIloB,EAAEkmQ,GAAGpkQ,IAAIomB,GAAuC,YAApC,IAASloB,IAAIA,EAAE,IAAIunM,IAAI2+D,GAAGrrP,IAAIqN,EAAEloB,IAAWA,EAChS,SAASomQ,GAAGl+O,EAAEloB,EAAE0R,GAAG,IAAIA,EAAEugB,IAAI/J,GAAG,CAAC,OAAOA,GAAG,IAAK,SAAS+zI,GAAGj8J,EAAE,UAAS,GAAI,MAAM,IAAK,QAAQ,IAAK,OAAOi8J,GAAGj8J,EAAE,SAAQ,GAAIi8J,GAAGj8J,EAAE,QAAO,GAAI0R,EAAE0wD,IAAI,QAAQ1wD,EAAE0wD,IAAI,SAAS,MAAM,IAAK,SAAS,IAAK,QAAQ6jM,GAAG/9O,IAAI+zI,GAAGj8J,EAAEkoB,GAAE,GAAI,MAAM,IAAK,UAAU,IAAK,SAAS,IAAK,QAAQ,MAAM,SAAS,IAAI47B,GAAGh8C,QAAQogB,IAAI8xI,GAAE9xI,EAAEloB,GAAG0R,EAAE0wD,IAAIl6C,IAC1T,IAAIm+O,GAAG,CAAC9S,yBAAwB,EAAGC,mBAAkB,EAAGC,kBAAiB,EAAGC,kBAAiB,EAAGC,SAAQ,EAAGC,cAAa,EAAGC,iBAAgB,EAAGvxG,aAAY,EAAG3gG,SAAQ,EAAGmyM,MAAK,EAAGj+F,UAAS,EAAGk+F,cAAa,EAAGC,YAAW,EAAGC,cAAa,EAAGC,WAAU,EAAGC,UAAS,EAAGC,SAAQ,EAAGC,YAAW,EAAGC,aAAY,EAAGC,cAAa,EAAGC,YAAW,EAAGC,eAAc,EAAGC,gBAAe,EAAGC,iBAAgB,EAAGl0B,YAAW,EAAGm0B,WAAU,EAAG/1G,YAAW,EAAGr0H,SAAQ,EAAG20F,OAAM,EAAG01I,SAAQ,EAAGC,SAAQ,EAAGC,QAAO,EAAG/jN,QAAO,EAAGgkN,MAAK,EAAGC,aAAY,EAC1fC,cAAa,EAAGC,aAAY,EAAGC,iBAAgB,EAAGC,kBAAiB,EAAGC,kBAAiB,EAAGC,eAAc,EAAG3nJ,aAAY,GAAI04J,GAAG,CAAC,SAAS,KAAK,MAAM,KAA6H,SAASC,GAAGr+O,EAAEloB,EAAE0R,GAAG,OAAO,MAAM1R,GAAG,kBAAmBA,GAAG,KAAKA,EAAE,GAAG0R,GAAG,iBAAkB1R,GAAG,IAAIA,GAAGqmQ,GAAGnmQ,eAAegoB,IAAIm+O,GAAGn+O,IAAI,GAAGloB,GAAGwpB,OAAOxpB,EAAE,KAC9Z,SAASwmQ,GAAGt+O,EAAEloB,GAAa,IAAI,IAAI0R,KAAlBwW,EAAEA,EAAEP,MAAmB3nB,EAAE,GAAGA,EAAEE,eAAewR,GAAG,CAAC,IAAI3R,EAAE,IAAI2R,EAAE5J,QAAQ,MAAM5B,EAAEqgQ,GAAG70P,EAAE1R,EAAE0R,GAAG3R,GAAG,UAAU2R,IAAIA,EAAE,YAAY3R,EAAEmoB,EAAEgyH,YAAYxoI,EAAExL,GAAGgiB,EAAExW,GAAGxL,GADTvG,OAAO6K,KAAK67P,IAAI3iQ,SAAQ,SAASwkB,GAAGo+O,GAAG5iQ,SAAQ,SAAS1D,GAAGA,EAAEA,EAAEkoB,EAAE4G,OAAO,GAAGhD,cAAc5D,EAAEzb,UAAU,GAAG45P,GAAGrmQ,GAAGqmQ,GAAGn+O,SACrG,IAAIu+O,GAAGllQ,EAAE,CAAC+xP,UAAS,GAAI,CAAC59D,MAAK,EAAG7lJ,MAAK,EAAGm6D,IAAG,EAAGplD,KAAI,EAAGmuM,OAAM,EAAGn9D,IAAG,EAAG7hF,KAAI,EAAG1oG,OAAM,EAAG2nP,QAAO,EAAGC,MAAK,EAAGC,MAAK,EAAG5rB,OAAM,EAAG5tN,QAAO,EAAGy5O,OAAM,EAAGC,KAAI,IAClT,SAASsT,GAAGx+O,EAAEloB,GAAG,GAAGA,EAAE,CAAC,GAAGymQ,GAAGv+O,KAAK,MAAMloB,EAAEsmB,UAAU,MAAMtmB,EAAEo2P,yBAAyB,MAAMr1P,MAAMm5J,EAAE,IAAIhyI,EAAE,KAAK,GAAG,MAAMloB,EAAEo2P,wBAAwB,CAAC,GAAG,MAAMp2P,EAAEsmB,SAAS,MAAMvlB,MAAMm5J,EAAE,KAAK,GAAK,iBAAkBl6J,EAAEo2P,2BAAyB,WAAWp2P,EAAEo2P,yBAAyB,MAAMr1P,MAAMm5J,EAAE,KAAM,GAAG,MAAMl6J,EAAE2nB,OAAO,iBAAkB3nB,EAAE2nB,MAAM,MAAM5mB,MAAMm5J,EAAE,GAAG,MAClW,SAASysG,GAAGz+O,EAAEloB,GAAG,IAAI,IAAIkoB,EAAEpgB,QAAQ,KAAK,MAAM,iBAAkB9H,EAAEwiL,GAAG,OAAOt6J,GAAG,IAAK,iBAAiB,IAAK,gBAAgB,IAAK,YAAY,IAAK,gBAAgB,IAAK,gBAAgB,IAAK,mBAAmB,IAAK,iBAAiB,IAAK,gBAAgB,OAAM,EAAG,QAAQ,OAAM,GAAI,SAAS0+O,GAAG1+O,EAAEloB,GAAuD,IAAI0R,EAAEy0P,GAA1Dj+O,EAAE,IAAIA,EAAE8jF,UAAU,KAAK9jF,EAAE8jF,SAAS9jF,EAAEA,EAAE+R,eAA0Bj6B,EAAEwvP,EAAGxvP,GAAG,IAAI,IAAID,EAAE,EAAEA,EAAEC,EAAEyB,OAAO1B,IAAIqmQ,GAAGpmQ,EAAED,GAAGmoB,EAAExW,GAAG,SAASm1P,MAC7Z,SAASC,GAAG5+O,GAAwD,QAAG,KAAxDA,EAAEA,IAAI,oBAAqBnQ,SAASA,cAAS,IAAkC,OAAO,KAAK,IAAI,OAAOmQ,EAAE6sB,eAAe7sB,EAAEpjB,KAAK,MAAM9E,GAAG,OAAOkoB,EAAEpjB,MAAM,SAASiiQ,GAAG7+O,GAAG,KAAKA,GAAGA,EAAE4W,YAAY5W,EAAEA,EAAE4W,WAAW,OAAO5W,EAAE,SAAS8+O,GAAG9+O,EAAEloB,GAAG,IAAwBD,EAApB2R,EAAEq1P,GAAG7+O,GAAO,IAAJA,EAAE,EAAYxW,GAAG,CAAC,GAAG,IAAIA,EAAEs6F,SAAS,CAA0B,GAAzBjsG,EAAEmoB,EAAExW,EAAEo0F,YAAYrkG,OAAUymB,GAAGloB,GAAGD,GAAGC,EAAE,MAAM,CAAC6+B,KAAKntB,EAAEmW,OAAO7nB,EAAEkoB,GAAGA,EAAEnoB,EAAEmoB,EAAE,CAAC,KAAKxW,GAAG,CAAC,GAAGA,EAAE6/H,YAAY,CAAC7/H,EAAEA,EAAE6/H,YAAY,MAAMrpH,EAAExW,EAAEA,EAAEy8B,WAAWz8B,OAAE,EAAOA,EAAEq1P,GAAGr1P,IAC5b,SAASu1P,GAAG/+O,EAAEloB,GAAG,SAAOkoB,IAAGloB,KAAEkoB,IAAIloB,KAAKkoB,GAAG,IAAIA,EAAE8jF,YAAYhsG,GAAG,IAAIA,EAAEgsG,SAASi7J,GAAG/+O,EAAEloB,EAAEmuC,YAAY,aAAajmB,EAAEA,EAAEyP,SAAS33B,KAAGkoB,EAAE6jM,4BAAwD,GAA7B7jM,EAAE6jM,wBAAwB/rN,MAAa,SAASknQ,KAAK,IAAI,IAAIh/O,EAAExU,OAAO1T,EAAE8mQ,KAAK9mQ,aAAakoB,EAAEi/O,mBAAmB,CAAC,IAAI,IAAIz1P,EAAE,iBAAkB1R,EAAEonQ,cAAc/lJ,SAASnpG,KAAK,MAAMnY,GAAG2R,GAAE,EAAG,IAAGA,EAAyB,MAAM1R,EAAE8mQ,IAA/B5+O,EAAEloB,EAAEonQ,eAAgCrvP,UAAU,OAAO/X,EAC5Y,SAASk2B,GAAGhO,GAAG,IAAIloB,EAAEkoB,GAAGA,EAAE4f,UAAU5f,EAAE4f,SAAS53B,cAAc,OAAOlQ,IAAI,UAAUA,IAAI,SAASkoB,EAAExb,MAAM,WAAWwb,EAAExb,MAAM,QAAQwb,EAAExb,MAAM,QAAQwb,EAAExb,MAAM,aAAawb,EAAExb,OAAO,aAAa1M,GAAG,SAASkoB,EAAEm/O,iBAAiB,IAAmBC,GAAG,KAAKC,GAAG,KAAKxwO,GAAG,KAAKywO,GAAG,KAAK,SAASrwO,GAAGjP,EAAEloB,GAAG,OAAOkoB,GAAG,IAAK,SAAS,IAAK,QAAQ,IAAK,SAAS,IAAK,WAAW,QAAQloB,EAAEynQ,UAAU,OAAM,EAC7X,SAASC,GAAGx/O,EAAEloB,GAAG,MAAM,aAAakoB,GAAG,WAAWA,GAAG,aAAaA,GAAG,iBAAkBloB,EAAEsmB,UAAU,iBAAkBtmB,EAAEsmB,UAAU,iBAAkBtmB,EAAEo2P,yBAAyB,OAAOp2P,EAAEo2P,yBAAyB,MAAMp2P,EAAEo2P,wBAAwBmC,OAAO,IAAIoP,GAAG,mBAAoB12P,WAAWA,gBAAW,EAAO22P,GAAG,mBAAoBj2P,aAAaA,kBAAa,EAAO,SAASqvF,GAAG94E,GAAG,KAAK,MAAMA,EAAEA,EAAEA,EAAEqpH,YAAY,CAAC,IAAIvxI,EAAEkoB,EAAE8jF,SAAS,GAAG,IAAIhsG,GAAG,IAAIA,EAAE,MAAM,OAAOkoB,EAClc,SAAS2/O,GAAG3/O,GAAGA,EAAEA,EAAE4/O,gBAAgB,IAAI,IAAI9nQ,EAAE,EAAEkoB,GAAG,CAAC,GAAG,IAAIA,EAAE8jF,SAAS,CAAC,IAAIt6F,EAAEwW,EAAEhlB,KAAK,GAFgJ,MAE7IwO,GAAQA,IAAI61P,IAAI71P,IAAI41P,GAAG,CAAC,GAAG,IAAItnQ,EAAE,OAAOkoB,EAAEloB,QAF0G,OAEjG0R,GAAQ1R,IAAIkoB,EAAEA,EAAE4/O,gBAAgB,OAAO,KAAK,IAAIC,GAAGpkP,KAAKC,SAAShgB,SAAS,IAAI0I,MAAM,GAAG07P,GAAG,2BAA2BD,GAAGE,GAAG,wBAAwBF,GAAGG,GAAG,qBAAqBH,GACvT,SAAS5I,GAAGj3O,GAAG,IAAIloB,EAAEkoB,EAAE8/O,IAAI,GAAGhoQ,EAAE,OAAOA,EAAE,IAAI,IAAI0R,EAAEwW,EAAEimB,WAAWz8B,GAAG,CAAC,GAAG1R,EAAE0R,EAAEw2P,KAAKx2P,EAAEs2P,IAAI,CAAe,GAAdt2P,EAAE1R,EAAEy9P,UAAa,OAAOz9P,EAAE4rB,OAAO,OAAOla,GAAG,OAAOA,EAAEka,MAAM,IAAI1D,EAAE2/O,GAAG3/O,GAAG,OAAOA,GAAG,CAAC,GAAGxW,EAAEwW,EAAE8/O,IAAI,OAAOt2P,EAAEwW,EAAE2/O,GAAG3/O,GAAG,OAAOloB,EAAM0R,GAAJwW,EAAExW,GAAMy8B,WAAW,OAAO,KAAK,SAAS8wN,GAAG/2O,GAAkB,QAAfA,EAAEA,EAAE8/O,KAAK9/O,EAAEggP,MAAc,IAAIhgP,EAAE1B,KAAK,IAAI0B,EAAE1B,KAAK,KAAK0B,EAAE1B,KAAK,IAAI0B,EAAE1B,IAAI,KAAK0B,EAAE,SAASigP,GAAGjgP,GAAG,GAAG,IAAIA,EAAE1B,KAAK,IAAI0B,EAAE1B,IAAI,OAAO0B,EAAEuxO,UAAU,MAAM14P,MAAMm5J,EAAE,KAAM,SAASkuG,GAAGlgP,GAAG,OAAOA,EAAE+/O,KAAK,KAAK,IAAII,GAAG,KAAKC,GAAG,KAAKC,GAAG,KAC9c,SAASC,KAAK,GAAGD,GAAG,OAAOA,GAAG,IAAIrgP,EAAkBnoB,EAAhBC,EAAEsoQ,GAAG52P,EAAE1R,EAAEyB,OAASyE,EAAE,UAAUmiQ,GAAGA,GAAGtiQ,MAAMsiQ,GAAGviK,YAAY/gG,EAAEmB,EAAEzE,OAAO,IAAIymB,EAAE,EAAEA,EAAExW,GAAG1R,EAAEkoB,KAAKhiB,EAAEgiB,GAAGA,KAAK,IAAIjjB,EAAEyM,EAAEwW,EAAE,IAAInoB,EAAE,EAAEA,GAAGkF,GAAGjF,EAAE0R,EAAE3R,KAAKmG,EAAEnB,EAAEhF,GAAGA,KAAK,OAAOwoQ,GAAGriQ,EAAEoG,MAAM4b,EAAE,EAAEnoB,EAAE,EAAEA,OAAE,GAAQ,IAAI0oQ,GAAG7tG,GAAEroE,OAAO,CAACrvF,KAAK,OAAOwlQ,GAAG9tG,GAAEroE,OAAO,CAACrvF,KAAK,OAAOylQ,GAAG,CAAC,EAAE,GAAG,GAAG,IAAIC,GAAG1Q,GAAI,qBAAqBxkP,OAAOm1P,GAAG,KAAK3Q,GAAI,iBAAiBngP,WAAW8wP,GAAG9wP,SAASy9E,cACpX,IAAIszK,GAAG5Q,GAAI,cAAcxkP,SAASm1P,GAAGE,GAAG7Q,KAAM0Q,IAAIC,IAAI,EAAEA,IAAI,IAAIA,IAAIG,GAAGv9P,OAAOC,aAAa,IAAIu9P,GAAG,CAACC,YAAY,CAAClQ,wBAAwB,CAAC+L,QAAQ,gBAAgBC,SAAS,wBAAwB9L,aAAa,CAAC,iBAAiB,WAAW,YAAY,UAAUiQ,eAAe,CAACnQ,wBAAwB,CAAC+L,QAAQ,mBAAmBC,SAAS,2BAA2B9L,aAAa,uDAAuD3tP,MAAM,MAAM69P,iBAAiB,CAACpQ,wBAAwB,CAAC+L,QAAQ,qBAC7eC,SAAS,6BAA6B9L,aAAa,yDAAyD3tP,MAAM,MAAM89P,kBAAkB,CAACrQ,wBAAwB,CAAC+L,QAAQ,sBAAsBC,SAAS,8BAA8B9L,aAAa,0DAA0D3tP,MAAM,OAAO+9P,IAAG,EAChU,SAASC,GAAGrhP,EAAEloB,GAAG,OAAOkoB,GAAG,IAAK,QAAQ,OAAO,IAAIygP,GAAG7gQ,QAAQ9H,EAAEksC,SAAS,IAAK,UAAU,OAAO,MAAMlsC,EAAEksC,QAAQ,IAAK,WAAW,IAAK,YAAY,IAAK,OAAO,OAAM,EAAG,QAAQ,OAAM,GAAI,SAASs9N,GAAGthP,GAAc,MAAM,iBAAjBA,EAAEA,EAAE9kB,SAAkC,SAAS8kB,EAAEA,EAAEhlB,KAAK,KAAK,IAAIumQ,IAAG,EAEtQC,GAAG,CAAC3Q,WAAWkQ,GAAGnQ,cAAc,SAAS5wO,EAAEloB,EAAE0R,EAAE3R,GAAG,IAAImG,EAAE,GAAG0iQ,GAAG5oQ,EAAE,CAAC,OAAOkoB,GAAG,IAAK,mBAAmB,IAAInjB,EAAEkkQ,GAAGG,iBAAiB,MAAMppQ,EAAE,IAAK,iBAAiB+E,EAAEkkQ,GAAGE,eAAe,MAAMnpQ,EAAE,IAAK,oBAAoB+E,EAAEkkQ,GAAGI,kBAAkB,MAAMrpQ,EAAE+E,OAAE,OAAY0kQ,GAAGF,GAAGrhP,EAAExW,KAAK3M,EAAEkkQ,GAAGE,gBAAgB,YAAYjhP,GAAG,MAAMxW,EAAEw6B,UAAUnnC,EAAEkkQ,GAAGG,kBAClL,OADoMrkQ,GAAGgkQ,IAAI,OAAOr3P,EAAEqtJ,SAAS0qG,IAAI1kQ,IAAIkkQ,GAAGG,iBAAiBrkQ,IAAIkkQ,GAAGE,gBAAgBM,KAAKvjQ,EAAEsiQ,OAAYF,GAAG,UAARD,GAAGtoQ,GAAkBsoQ,GAAGtiQ,MAAMsiQ,GAAGviK,YAAY2jK,IAAG,IAAK1kQ,EAAE0jQ,GAAGxH,UAAUl8P,EACzf/E,EAAE0R,EAAE3R,IAAGmG,GAAoB,QAARA,EAAEsjQ,GAAG93P,OAAf3M,EAAE7B,KAAKgD,GAAiCs6P,GAAGz7P,GAAGmB,EAAEnB,GAAGmB,EAAE,MAAMgiB,EAAE4gP,GAHuM,SAAY5gP,EAAEloB,GAAG,OAAOkoB,GAAG,IAAK,iBAAiB,OAAOshP,GAAGxpQ,GAAG,IAAK,WAAW,OAAG,KAAKA,EAAEqjC,MAAa,MAAKimO,IAAG,EAAUN,IAAG,IAAK,YAAY,OAAO9gP,EAAEloB,EAAEkD,QAAS8lQ,IAAIM,GAAG,KAAKphP,EAAE,QAAQ,OAAO,MAGhYyhP,CAAGzhP,EAAExW,GAF9E,SAAYwW,EAAEloB,GAAG,GAAGypQ,GAAG,MAAM,mBAAmBvhP,IAAI0gP,IAAIW,GAAGrhP,EAAEloB,IAAIkoB,EAAEsgP,KAAKD,GAAGD,GAAGD,GAAG,KAAKoB,IAAG,EAAGvhP,GAAG,KAAK,OAAOA,GAAG,IAAK,QAAgQ,QAAQ,OAAO,KAA3P,IAAK,WAAW,KAAKloB,EAAEiiC,SAASjiC,EAAEmiC,QAAQniC,EAAEq9D,UAAUr9D,EAAEiiC,SAASjiC,EAAEmiC,OAAO,CAAC,GAAGniC,EAAEwuJ,MAAM,EAAExuJ,EAAEwuJ,KAAK/sJ,OAAO,OAAOzB,EAAEwuJ,KAAK,GAAGxuJ,EAAEqjC,MAAM,OAAO53B,OAAOC,aAAa1L,EAAEqjC,OAAO,OAAO,KAAK,IAAK,iBAAiB,OAAO0lO,IAAI,OAAO/oQ,EAAE++J,OAAO,KAAK/+J,EAAEkD,MAE7R0mQ,CAAG1hP,EAAExW,MAAK1R,EAAE0oQ,GAAGzH,UAAUgI,GAAGC,YAAYlpQ,EAAE0R,EAAE3R,IAAKmD,KAAKglB,EAAEs4O,GAAGxgQ,IAAIA,EAAE,KAAY,OAAOkG,EAAElG,EAAE,OAAOA,EAAEkG,EAAE,CAACA,EAAElG,KAAK6pQ,GAAG,CAAChrK,OAAM,EAAGxrE,MAAK,EAAG00I,UAAS,EAAG,kBAAiB,EAAG+hG,OAAM,EAAGxgN,OAAM,EAAG4vD,QAAO,EAAG4gE,UAAS,EAAGhlH,OAAM,EAAGhjB,QAAO,EAAGi4N,KAAI,EAAGpjO,MAAK,EAAG64B,MAAK,EAAGz9D,KAAI,EAAGm8J,MAAK,GAAI,SAAS8rG,GAAG9hP,GAAG,IAAIloB,EAAEkoB,GAAGA,EAAE4f,UAAU5f,EAAE4f,SAAS53B,cAAc,MAAM,UAAUlQ,IAAI6pQ,GAAG3hP,EAAExb,MAAM,aAAa1M,EAC5b,IAAIiqQ,GAAG,CAAC70G,OAAO,CAAC4jG,wBAAwB,CAAC+L,QAAQ,WAAWC,SAAS,mBAAmB9L,aAAa,8DAA8D3tP,MAAM,OAAO,SAAS2+P,GAAGhiP,EAAEloB,EAAE0R,GAA8D,OAA3DwW,EAAE0yI,GAAEqmG,UAAUgJ,GAAG70G,OAAOltI,EAAEloB,EAAE0R,IAAKhF,KAAK,SAAS01I,GAAG1wI,GAAG8uP,GAAGt4O,GAAUA,EAAE,IAAIiiP,GAAG,KAAKC,GAAG,KAAK,SAASC,GAAGniP,GAAGopO,EAAGppO,GAAG,SAASoiP,GAAGpiP,GAAe,GAAGu5H,GAAT0mH,GAAGjgP,IAAY,OAAOA,EAAE,SAASqiP,GAAGriP,EAAEloB,GAAG,GAAG,WAAWkoB,EAAE,OAAOloB,EAAE,IAAIwqQ,IAAG,EAC9Y,SAASC,KAAKN,KAAKA,GAAGO,YAAY,mBAAmBC,IAAIP,GAAGD,GAAG,MAAM,SAASQ,GAAGziP,GAAG,GAAG,UAAUA,EAAE2oC,cAAcy5M,GAAGF,IAAI,GAAGliP,EAAEgiP,GAAGE,GAAGliP,EAAE63O,GAAG73O,IAAIgyO,GAAG5I,EAAGppO,OAAO,CAACgyO,IAAG,EAAG,IAAIJ,GAAGuQ,GAAGniP,GAAG,QAAQgyO,IAAG,EAAGx3D,OAAO,SAASkoE,GAAG1iP,EAAEloB,EAAE0R,GAAG,UAAUwW,GAAGuiP,KAAUL,GAAG14P,GAARy4P,GAAGnqQ,GAAUsrN,YAAY,mBAAmBq/C,KAAK,SAASziP,GAAGuiP,KAAK,SAASI,GAAG3iP,GAAG,GAAG,oBAAoBA,GAAG,UAAUA,GAAG,YAAYA,EAAE,OAAOoiP,GAAGF,IAAI,SAASU,GAAG5iP,EAAEloB,GAAG,GAAG,UAAUkoB,EAAE,OAAOoiP,GAAGtqQ,GAAG,SAAS+qQ,GAAG7iP,EAAEloB,GAAG,GAAG,UAAUkoB,GAAG,WAAWA,EAAE,OAAOoiP,GAAGtqQ,GAD/Ek4P,IAAKsS,GAAGvE,GAAG,YAAYluP,SAASy9E,cAAc,EAAEz9E,SAASy9E,eAE1c,IACiTw1K,GAD7SC,GAAG,CAAClS,WAAWkR,GAAGiB,uBAAuBV,GAAG1R,cAAc,SAAS5wO,EAAEloB,EAAE0R,EAAE3R,GAAG,IAAImG,EAAElG,EAAEmoQ,GAAGnoQ,GAAG0T,OAAO3O,EAAEmB,EAAE4hC,UAAU5hC,EAAE4hC,SAAS53B,cAAc,GAAG,WAAWnL,GAAG,UAAUA,GAAG,SAASmB,EAAEwG,KAAK,IAAIzH,EAAEslQ,QAAQ,GAAGP,GAAG9jQ,GAAG,GAAGskQ,GAAGvlQ,EAAE8lQ,OAAO,CAAC9lQ,EAAE4lQ,GAAG,IAAI1/K,EAAEy/K,QAAQ7lQ,EAAEmB,EAAE4hC,WAAW,UAAU/iC,EAAEmL,gBAAgB,aAAahK,EAAEwG,MAAM,UAAUxG,EAAEwG,QAAQzH,EAAE6lQ,IAAI,GAAG7lQ,IAAIA,EAAEA,EAAEijB,EAAEloB,IAAI,OAAOkqQ,GAAGjlQ,EAAEyM,EAAE3R,GAAGorF,GAAGA,EAAEjjE,EAAEhiB,EAAElG,GAAG,SAASkoB,IAAIA,EAAEhiB,EAAEi1P,gBAAgBjzO,EAAEozO,YAAY,WAAWp1P,EAAEwG,MAAM+uP,GAAGv1P,EAAE,SAASA,EAAEH,SAASolQ,GAAG,CAACC,WAAW,CAACnS,iBAAiB,eACxfC,aAAa,CAAC,WAAW,cAAcmS,WAAW,CAACpS,iBAAiB,eAAeC,aAAa,CAAC,WAAW,cAAcoS,aAAa,CAACrS,iBAAiB,iBAAiBC,aAAa,CAAC,aAAa,gBAAgBqS,aAAa,CAACtS,iBAAiB,iBAAiBC,aAAa,CAAC,aAAa,iBAAoBsS,GAAG,CAACzS,WAAWoS,GAAGrS,cAAc,SAAS5wO,EAAEloB,EAAE0R,EAAE3R,EAAEmG,GAAG,IAAInB,EAAE,cAAcmjB,GAAG,gBAAgBA,EAAEjjB,EAAE,aAAaijB,GAAG,eAAeA,EAAE,GAAGnjB,GAAG,IAAO,GAAFmB,KAAQwL,EAAE+2K,eAAe/2K,EAAEyxP,eAAel+P,IAAIF,EAAE,OAAO,KAC9S,GAAxMmB,EAAEnG,EAAE2T,SAAS3T,EAAEA,GAAGmG,EAAEnG,EAAEk6B,eAAe/zB,EAAEg0B,aAAah0B,EAAE6nM,aAAar6L,OAAUzO,GAAMA,EAAEjF,EAAgD,QAA9CA,GAAGA,EAAE0R,EAAE+2K,eAAe/2K,EAAEmqN,WAAWsjC,GAAGn/P,GAAG,QAAwBA,KAAR+E,EAAEy4P,GAAGx9P,KAAU,IAAIA,EAAEwmB,KAAK,IAAIxmB,EAAEwmB,OAAKxmB,EAAE,OAAUiF,EAAE,KAAQA,IAAIjF,EAAE,OAAO,KAAK,GAAG,aAAakoB,GAAG,cAAcA,EAAG,IAAIijE,EAAE+3K,GAAOpuL,EAAEq2L,GAAGE,WAAehrK,EAAE8qK,GAAGC,WAAe55P,EAAE,YAAgB,eAAe0W,GAAG,gBAAgBA,IAAEijE,EAAEm4K,GAAGxuL,EAAEq2L,GAAGI,aAAalrK,EAAE8qK,GAAGG,aAAa95P,EAAE,WACtT,GADgU0W,EAAE,MAAMjjB,EAAEiB,EAAEiiQ,GAAGljQ,GAAGiB,EAAE,MAAMlG,EAAEkG,EAAEiiQ,GAAGnoQ,IAAG80E,EAAEqW,EAAE81K,UAAUnsL,EAAE7vE,EAAEyM,EAAE3R,IAAK2M,KAAK8E,EAAE,QAAQsjE,EAAEvjE,OAC/e2W,EAAE4sD,EAAE2zG,cAAcviL,GAAEnG,EAAEorF,EAAE81K,UAAU5gK,EAAErgG,EAAE0R,EAAE3R,IAAK2M,KAAK8E,EAAE,QAAQzR,EAAEwR,OAAOrL,EAAEnG,EAAE0oL,cAAcvgK,EAAM1W,EAAExR,GAANmrF,EAAElmF,IAAYuM,EAAE0W,EAAE,CAAa,IAARA,EAAE1W,EAAEvM,EAAE,EAAMjF,EAAhBqgG,EAAElV,EAAkBnrF,EAAEA,EAAEigQ,GAAGjgQ,GAAGiF,IAAQ,IAAJjF,EAAE,EAAMkG,EAAEgiB,EAAEhiB,EAAEA,EAAE+5P,GAAG/5P,GAAGlG,IAAI,KAAK,EAAEiF,EAAEjF,GAAGqgG,EAAE4/J,GAAG5/J,GAAGp7F,IAAI,KAAK,EAAEjF,EAAEiF,GAAGijB,EAAE+3O,GAAG/3O,GAAGloB,IAAI,KAAKiF,KAAK,CAAC,GAAGo7F,IAAIn4E,GAAGm4E,IAAIn4E,EAAEu1O,UAAU,MAAMv1O,EAAEm4E,EAAE4/J,GAAG5/J,GAAGn4E,EAAE+3O,GAAG/3O,GAAGm4E,EAAE,UAAUA,EAAE,KAAS,IAAJn4E,EAAEm4E,EAAMA,EAAE,GAAGlV,GAAGA,IAAIjjE,IAAqB,QAAjBjjB,EAAEkmF,EAAEsyK,YAAuBx4P,IAAIijB,IAAQm4E,EAAEp6F,KAAKklF,GAAGA,EAAE80K,GAAG90K,GAAG,IAAIA,EAAE,GAAG35E,GAAGA,IAAI0W,IAAqB,QAAjBjjB,EAAEuM,EAAEisP,YAAuBx4P,IAAIijB,IAAQijE,EAAEllF,KAAKuL,GAAGA,EAAEyuP,GAAGzuP,GAAG,IAAIA,EAAE,EAAEA,EAAE6uF,EAAE5+F,OAAO+P,IAAI8uP,GAAGjgK,EAAE7uF,GAAG,UAAUsjE,GAAG,IAAItjE,EACtf25E,EAAE1pF,OAAO,EAAE+P,KAAK8uP,GAAGn1K,EAAE35E,GAAG,WAAWzR,GAAG,OAAG2R,IAAIs5P,IAAUA,GAAG,KAAK,CAACl2L,KAAGk2L,GAAGt5P,EAAQ,CAACojE,EAAE/0E,MAAyE0rQ,GAAG,mBAAoB9rQ,OAAO6iL,GAAG7iL,OAAO6iL,GAA5G,SAAYt6J,EAAEloB,GAAG,OAAOkoB,IAAIloB,IAAI,IAAIkoB,GAAG,EAAEA,GAAI,EAAEloB,IAAIkoB,GAAIA,GAAGloB,GAAIA,GAAoD0rQ,GAAG/rQ,OAAOW,UAAUJ,eAAe,SAASyrQ,GAAGzjP,EAAEloB,GAAG,GAAGyrQ,GAAGvjP,EAAEloB,GAAG,OAAM,EAAG,GAAG,iBAAkBkoB,GAAG,OAAOA,GAAG,iBAAkBloB,GAAG,OAAOA,EAAE,OAAM,EAAG,IAAI0R,EAAE/R,OAAO6K,KAAK0d,GAAGnoB,EAAEJ,OAAO6K,KAAKxK,GAAG,GAAG0R,EAAEjQ,SAAS1B,EAAE0B,OAAO,OAAM,EAAG,IAAI1B,EAAE,EAAEA,EAAE2R,EAAEjQ,OAAO1B,IAAI,IAAI2rQ,GAAG5qQ,KAAKd,EAAE0R,EAAE3R,MAAM0rQ,GAAGvjP,EAAExW,EAAE3R,IAAIC,EAAE0R,EAAE3R,KAAK,OAAM,EAAG,OAAM,EAC/e,IAAI6rQ,GAAG1T,GAAI,iBAAiBngP,UAAU,IAAIA,SAASy9E,aAAaq2K,GAAG,CAAC7kD,OAAO,CAACgyC,wBAAwB,CAAC+L,QAAQ,WAAWC,SAAS,mBAAmB9L,aAAa,iFAAiF3tP,MAAM,OAAOugQ,GAAG,KAAKC,GAAG,KAAKC,GAAG,KAAKC,IAAG,EAC1R,SAASC,GAAGhkP,EAAEloB,GAAG,IAAI0R,EAAE1R,EAAE0T,SAAS1T,EAAEA,EAAE+X,SAAS,IAAI/X,EAAEgsG,SAAShsG,EAAEA,EAAEi6B,cAAc,OAAGgyO,IAAI,MAAMH,IAAIA,KAAKhF,GAAGp1P,GAAU,MAAsCA,EAA5B,mBAALA,EAAEo6P,KAAyB51O,GAAGxkB,GAAK,CAACrD,MAAMqD,EAAEi0D,eAAe1sC,IAAIvnB,EAAE0kC,cAAyF,CAAC+1N,YAA3Ez6P,GAAGA,EAAEuoB,eAAevoB,EAAEuoB,cAAcC,aAAaxmB,QAAQsrL,gBAA+BmtE,WAAWC,aAAa16P,EAAE06P,aAAaC,UAAU36P,EAAE26P,UAAUC,YAAY56P,EAAE46P,aAAqBN,IAAIL,GAAGK,GAAGt6P,GAAG,MAAMs6P,GAAGt6P,GAAEwW,EAAE0yI,GAAEqmG,UAAU4K,GAAG7kD,OAAO+kD,GAAG7jP,EAAEloB,IAAK0M,KAAK,SAASwb,EAAE3W,OAAOu6P,GAAGtL,GAAGt4O,GAAGA,IAC1d,IAAIqkP,GAAG,CAACxT,WAAW8S,GAAG/S,cAAc,SAAS5wO,EAAEloB,EAAE0R,EAAE3R,GAAG,IAA+DgF,EAA3DmB,EAAEnG,EAAE2T,SAAS3T,EAAEA,EAAEgY,SAAS,IAAIhY,EAAEisG,SAASjsG,EAAEA,EAAEk6B,cAAgB,KAAKl1B,GAAGmB,GAAG,CAACgiB,EAAE,CAAChiB,EAAEigQ,GAAGjgQ,GAAGnB,EAAEyqP,EAAGgd,SAAS,IAAI,IAAIvnQ,EAAE,EAAEA,EAAEF,EAAEtD,OAAOwD,IAAI,IAAIiB,EAAE+rB,IAAIltB,EAAEE,IAAI,CAACiB,GAAE,EAAG,MAAMgiB,EAAEhiB,GAAE,EAAGnB,GAAGmB,EAAE,GAAGnB,EAAE,OAAO,KAAsB,OAAjBmB,EAAElG,EAAEmoQ,GAAGnoQ,GAAG0T,OAAcwU,GAAG,IAAK,SAAW8hP,GAAG9jQ,IAAI,SAASA,EAAEmhQ,mBAAgByE,GAAG5lQ,EAAE6lQ,GAAG/rQ,EAAEgsQ,GAAG,MAAK,MAAM,IAAK,OAAOA,GAAGD,GAAGD,GAAG,KAAK,MAAM,IAAK,YAAYG,IAAG,EAAG,MAAM,IAAK,cAAc,IAAK,UAAU,IAAK,UAAU,OAAOA,IAAG,EAAGC,GAAGx6P,EAAE3R,GAAG,IAAK,kBAAkB,GAAG6rQ,GAAG,MACrf,IAAK,UAAU,IAAK,QAAQ,OAAOM,GAAGx6P,EAAE3R,GAAG,OAAO,OAAOwxP,EAAGgI,uBAAuB,0HAA0HhuP,MAAM,MAAgB+1I,EAAG8mH,GAAG1pD,EAATugD,GAAejO,EAAGmX,GAAG5W,EAAGiI,yBAAyB,CAACiT,kBAAkB1xG,GAAG2xG,sBAAsBlB,GAAGmB,kBAAkB1B,GAAG2B,kBAAkBL,GAAGM,uBAAuBnD,KAAK,IAAIniE,IAAI,IAAIulE,GAAG,GAAGC,IAAI,EAAE,SAAS/+H,GAAE9lH,GAAG,EAAE6kP,KAAK7kP,EAAEkd,QAAQ0nO,GAAGC,IAAID,GAAGC,IAAI,KAAKA,MAChd,SAAS3+H,GAAElmH,EAAEloB,GAAG+sQ,KAAKD,GAAGC,IAAI7kP,EAAEkd,QAAQld,EAAEkd,QAAQplC,EAAE,IAAIgtQ,GAAG,GAAGxc,GAAE,CAACprN,QAAQ4nO,IAAI1iG,GAAE,CAACllI,SAAQ,GAAI6nO,GAAGD,GAAG,SAASE,GAAGhlP,EAAEloB,GAAG,IAAI0R,EAAEwW,EAAExb,KAAKuiK,aAAa,IAAIv9J,EAAE,OAAOs7P,GAAG,IAAIjtQ,EAAEmoB,EAAEuxO,UAAU,GAAG15P,GAAGA,EAAEotQ,8CAA8CntQ,EAAE,OAAOD,EAAEqtQ,0CAA0C,IAASroQ,EAALmB,EAAE,GAAK,IAAInB,KAAK2M,EAAExL,EAAEnB,GAAG/E,EAAE+E,GAAoH,OAAjHhF,KAAImoB,EAAEA,EAAEuxO,WAAY0T,4CAA4CntQ,EAAEkoB,EAAEklP,0CAA0ClnQ,GAAUA,EAAE,SAASmkK,GAAEniJ,GAAyB,OAAO,MAA3BA,EAAEumJ,kBACpc,SAAS4+F,GAAGnlP,GAAG8lH,GAAEs8B,IAAKt8B,GAAEwiH,IAAK,SAAS8c,GAAGplP,GAAG8lH,GAAEs8B,IAAKt8B,GAAEwiH,IAAK,SAAS+c,GAAGrlP,EAAEloB,EAAE0R,GAAG,GAAG8+O,GAAEprN,UAAU4nO,GAAG,MAAMjsQ,MAAMm5J,EAAE,MAAM9rB,GAAEoiH,GAAExwP,GAAKouI,GAAEk8B,GAAE54J,GAAK,SAAS87P,GAAGtlP,EAAEloB,EAAE0R,GAAG,IAAI3R,EAAEmoB,EAAEuxO,UAAgC,GAAtBvxO,EAAEloB,EAAEyuK,kBAAqB,mBAAoB1uK,EAAEwuK,gBAAgB,OAAO78J,EAAwB,IAAI,IAAIxL,KAA9BnG,EAAEA,EAAEwuK,kBAAiC,KAAKroK,KAAKgiB,GAAG,MAAMnnB,MAAMm5J,EAAE,IAAIi8F,EAAGn2P,IAAI,UAAUkG,IAAI,OAAO3E,EAAE,GAAGmQ,EAAE,GAAG3R,GAAG,SAAS0tQ,GAAGvlP,GAAG,IAAIloB,EAAEkoB,EAAEuxO,UAAsG,OAA5Fz5P,EAAEA,GAAGA,EAAE0tQ,2CAA2CV,GAAGC,GAAGzc,GAAEprN,QAAQgpG,GAAEoiH,GAAExwP,GAAKouI,GAAEk8B,GAAEA,GAAEllI,UAAiB,EACle,SAASuoO,GAAGzlP,EAAEloB,EAAE0R,GAAG,IAAI3R,EAAEmoB,EAAEuxO,UAAU,IAAI15P,EAAE,MAAMgB,MAAMm5J,EAAE,MAAMxoJ,GAAG1R,EAAEwtQ,GAAGtlP,EAAEloB,EAAEitQ,IAAIltQ,EAAE2tQ,0CAA0C1tQ,EAAEguI,GAAEs8B,IAAKt8B,GAAEwiH,IAAKpiH,GAAEoiH,GAAExwP,IAAMguI,GAAEs8B,IAAKl8B,GAAEk8B,GAAE54J,GAChK,IAAIk8P,GAAGpjL,EAAE40K,yBAAyByO,GAAGrjL,EAAEo1K,0BAA0BkO,GAAGtjL,EAAEujL,wBAAwBC,GAAGxjL,EAAEyjL,qBAAqBC,GAAG1jL,EAAE2jL,sBAAsBC,GAAG5jL,EAAE6jL,aAAaC,GAAG9jL,EAAE+jL,iCAAiCC,GAAGhkL,EAAEikL,2BAA2BC,GAAGlkL,EAAE46K,8BAA8BuJ,GAAGnkL,EAAEq1K,wBAAwB+O,GAAGpkL,EAAEqkL,qBAAqBC,GAAGtkL,EAAEukL,sBAAsBC,GAAG,GAAGC,QAAG,IAASf,GAAGA,GAAG,aAAagB,GAAG,KAAKC,GAAG,KAAKC,IAAG,EAAG31H,GAAG20H,KAAKiB,GAAG,IAAI51H,GAAG20H,GAAG,WAAW,OAAOA,KAAK30H,IACvc,SAAS61H,KAAK,OAAOhB,MAAM,KAAKE,GAAG,OAAO,GAAG,KAAKE,GAAG,OAAO,GAAG,KAAKC,GAAG,OAAO,GAAG,KAAKC,GAAG,OAAO,GAAG,KAAKE,GAAG,OAAO,GAAG,QAAQ,MAAM/tQ,MAAMm5J,EAAE,OAAQ,SAASq1G,GAAGrnP,GAAG,OAAOA,GAAG,KAAK,GAAG,OAAOsmP,GAAG,KAAK,GAAG,OAAOE,GAAG,KAAK,GAAG,OAAOC,GAAG,KAAK,GAAG,OAAOC,GAAG,KAAK,GAAG,OAAOE,GAAG,QAAQ,MAAM/tQ,MAAMm5J,EAAE,OAAQ,SAASs1G,GAAGtnP,EAAEloB,GAAW,OAARkoB,EAAEqnP,GAAGrnP,GAAU0lP,GAAG1lP,EAAEloB,GAAG,SAASyvQ,GAAGvnP,EAAEloB,EAAE0R,GAAW,OAARwW,EAAEqnP,GAAGrnP,GAAU2lP,GAAG3lP,EAAEloB,EAAE0R,GAAG,SAASg+P,GAAGxnP,GAA8C,OAA3C,OAAOgnP,IAAIA,GAAG,CAAChnP,GAAGinP,GAAGtB,GAAGW,GAAGmB,KAAKT,GAAGjpQ,KAAKiiB,GAAU8mP,GAAG,SAASY,KAAK,GAAG,OAAOT,GAAG,CAAC,IAAIjnP,EAAEinP,GAAGA,GAAG,KAAKrB,GAAG5lP,GAAGynP,KAC/e,SAASA,KAAK,IAAIP,IAAI,OAAOF,GAAG,CAACE,IAAG,EAAG,IAAIlnP,EAAE,EAAE,IAAI,IAAIloB,EAAEkvQ,GAAGM,GAAG,IAAG,WAAW,KAAKtnP,EAAEloB,EAAEyB,OAAOymB,IAAI,CAAC,IAAIxW,EAAE1R,EAAEkoB,GAAG,GAAGxW,EAAEA,GAAE,SAAU,OAAOA,OAAMw9P,GAAG,KAAK,MAAMx9P,GAAG,MAAM,OAAOw9P,KAAKA,GAAGA,GAAG5iQ,MAAM4b,EAAE,IAAI2lP,GAAGW,GAAGoB,IAAIl+P,EAAG,QAAQ09P,IAAG,IAAK,IAAIS,GAAG,EAAE,SAASC,GAAG5nP,EAAEloB,EAAE0R,GAAS,OAAO,YAAsC,IAAxB,WAAWwW,EAAEloB,EAAE,KAA1C0R,GAAG,IAA6C,IAAMA,EAAE,SAASq+P,GAAG7nP,EAAEloB,GAAG,GAAGkoB,GAAGA,EAAEmI,aAAyC,IAAI,IAAI3e,KAAnC1R,EAAEuB,EAAE,GAAGvB,GAAGkoB,EAAEA,EAAEmI,kBAA4B,IAASrwB,EAAE0R,KAAK1R,EAAE0R,GAAGwW,EAAExW,IAAI,OAAO1R,EAAE,IAAIgwQ,GAAG,CAAC5qO,QAAQ,MAAM6qO,GAAG,KAAKC,GAAG,KAAKC,GAAG,KAAK,SAASC,KAAKD,GAAGD,GAAGD,GAAG,KAC3e,SAASI,GAAGnoP,EAAEloB,GAAG,IAAI0R,EAAEwW,EAAExb,KAAKoiI,SAASV,GAAE4hI,GAAGt+P,EAAE4+P,eAAiB5+P,EAAE4+P,cAActwQ,EAAE,SAASuwQ,GAAGroP,GAAG,IAAIloB,EAAEgwQ,GAAG5qO,QAAQ4oG,GAAEgiI,IAAM9nP,EAAExb,KAAKoiI,SAASwhI,cAActwQ,EAAE,SAASwwQ,GAAGtoP,EAAEloB,GAAG,KAAK,OAAOkoB,GAAG,CAAC,IAAIxW,EAAEwW,EAAEu1O,UAAU,GAAGv1O,EAAEuoP,oBAAoBzwQ,EAAEkoB,EAAEuoP,oBAAoBzwQ,EAAE,OAAO0R,GAAGA,EAAE++P,oBAAoBzwQ,IAAI0R,EAAE++P,oBAAoBzwQ,OAAQ,MAAG,OAAO0R,GAAGA,EAAE++P,oBAAoBzwQ,GAA+B,MAA7B0R,EAAE++P,oBAAoBzwQ,EAAakoB,EAAEA,EAAE0xO,QAC7Y,SAAS8W,GAAGxoP,EAAEloB,GAAGiwQ,GAAG/nP,EAAEioP,GAAGD,GAAG,KAAsB,QAAjBhoP,EAAEA,EAAEgxO,eAAuB,OAAOhxO,EAAEyoP,eAAezoP,EAAE0oP,gBAAgB5wQ,IAAI6wQ,IAAG,GAAI3oP,EAAEyoP,aAAa,MAAM,SAASG,GAAG5oP,EAAEloB,GAAG,GAAGmwQ,KAAKjoP,IAAG,IAAKloB,GAAG,IAAIA,EAAmG,GAA7F,iBAAkBA,GAAG,aAAaA,IAAEmwQ,GAAGjoP,EAAEloB,EAAE,YAAWA,EAAE,CAAC6uK,QAAQ3mJ,EAAEi5K,aAAanhM,EAAEuF,KAAK,MAAS,OAAO2qQ,GAAG,CAAC,GAAG,OAAOD,GAAG,MAAMlvQ,MAAMm5J,EAAE,MAAMg2G,GAAGlwQ,EAAEiwQ,GAAG/W,aAAa,CAAC0X,eAAe,EAAED,aAAa3wQ,EAAE+wQ,WAAW,WAAWb,GAAGA,GAAG3qQ,KAAKvF,EAAE,OAAOkoB,EAAEooP,cAAc,IAAIU,IAAG,EACvb,SAASC,GAAG/oP,GAAG,MAAM,CAACgpP,UAAUhpP,EAAEipP,YAAY,KAAKC,WAAW,KAAKC,oBAAoB,KAAKC,mBAAmB,KAAKC,YAAY,KAAKC,WAAW,KAAKC,oBAAoB,KAAKC,mBAAmB,MAAM,SAASC,GAAGzpP,GAAG,MAAM,CAACgpP,UAAUhpP,EAAEgpP,UAAUC,YAAYjpP,EAAEipP,YAAYC,WAAWlpP,EAAEkpP,WAAWC,oBAAoB,KAAKC,mBAAmB,KAAKC,YAAY,KAAKC,WAAW,KAAKC,oBAAoB,KAAKC,mBAAmB,MACna,SAASE,GAAG1pP,EAAEloB,GAAG,MAAM,CAAC4wQ,eAAe1oP,EAAE2pP,eAAe7xQ,EAAEwmB,IAAI,EAAEsrP,QAAQ,KAAKxhQ,SAAS,KAAK/K,KAAK,KAAKwsQ,WAAW,MAAM,SAASC,GAAG9pP,EAAEloB,GAAG,OAAOkoB,EAAEkpP,WAAWlpP,EAAEipP,YAAYjpP,EAAEkpP,WAAWpxQ,GAAGkoB,EAAEkpP,WAAW7rQ,KAAKvF,EAAEkoB,EAAEkpP,WAAWpxQ,GAC1N,SAASiyQ,GAAG/pP,EAAEloB,GAAG,IAAI0R,EAAEwW,EAAEu1O,UAAU,GAAG,OAAO/rP,EAAE,CAAC,IAAI3R,EAAEmoB,EAAEgqP,YAAgBhsQ,EAAE,KAAK,OAAOnG,IAAIA,EAAEmoB,EAAEgqP,YAAYjB,GAAG/oP,EAAEmpO,qBAAqBtxP,EAAEmoB,EAAEgqP,YAAYhsQ,EAAEwL,EAAEwgQ,YAAY,OAAOnyQ,EAAE,OAAOmG,GAAGnG,EAAEmoB,EAAEgqP,YAAYjB,GAAG/oP,EAAEmpO,eAAenrP,EAAEwL,EAAEwgQ,YAAYjB,GAAGv/P,EAAE2/O,gBAAgBtxP,EAAEmoB,EAAEgqP,YAAYP,GAAGzrQ,GAAG,OAAOA,IAAIA,EAAEwL,EAAEwgQ,YAAYP,GAAG5xQ,IAAI,OAAOmG,GAAGnG,IAAImG,EAAE8rQ,GAAGjyQ,EAAEC,GAAG,OAAOD,EAAEqxQ,YAAY,OAAOlrQ,EAAEkrQ,YAAYY,GAAGjyQ,EAAEC,GAAGgyQ,GAAG9rQ,EAAElG,KAAKgyQ,GAAGjyQ,EAAEC,GAAGkG,EAAEkrQ,WAAWpxQ,GACja,SAASmyQ,GAAGjqP,EAAEloB,GAAG,IAAI0R,EAAEwW,EAAEgqP,YAAiE,QAArDxgQ,EAAE,OAAOA,EAAEwW,EAAEgqP,YAAYjB,GAAG/oP,EAAEmpO,eAAe+gB,GAAGlqP,EAAExW,IAAY4/P,mBAAmB5/P,EAAE2/P,oBAAoB3/P,EAAE4/P,mBAAmBtxQ,GAAG0R,EAAE4/P,mBAAmB/rQ,KAAKvF,EAAE0R,EAAE4/P,mBAAmBtxQ,GAAG,SAASoyQ,GAAGlqP,EAAEloB,GAAG,IAAI0R,EAAEwW,EAAEu1O,UAA+D,OAArD,OAAO/rP,GAAG1R,IAAI0R,EAAEwgQ,cAAclyQ,EAAEkoB,EAAEgqP,YAAYP,GAAG3xQ,IAAWA,EACvT,SAASqyQ,GAAGnqP,EAAEloB,EAAE0R,EAAE3R,EAAEmG,EAAEnB,GAAG,OAAO2M,EAAE8U,KAAK,KAAK,EAAE,MAAmB,mBAAZ0B,EAAExW,EAAEogQ,SAA8B5pP,EAAEpnB,KAAKiE,EAAEhF,EAAEmG,GAAGgiB,EAAE,KAAK,EAAEA,EAAEw1O,WAAuB,KAAbx1O,EAAEw1O,UAAgB,GAAG,KAAK,EAAsD,GAAG,OAA3Cx3P,EAAE,mBAAdgiB,EAAExW,EAAEogQ,SAAgC5pP,EAAEpnB,KAAKiE,EAAEhF,EAAEmG,GAAGgiB,GAA0B,MAAM,OAAO3mB,EAAE,GAAGxB,EAAEmG,GAAG,KAAK,EAAE8qQ,IAAG,EAAG,OAAOjxQ,EAC7Q,SAASuyQ,GAAGpqP,EAAEloB,EAAE0R,EAAE3R,EAAEmG,GAAG8qQ,IAAG,EAAa,IAAI,IAAIjsQ,GAAlB/E,EAAEoyQ,GAAGlqP,EAAEloB,IAAekxQ,UAAUjsQ,EAAE,KAAKkmF,EAAE,EAAErW,EAAE90E,EAAEmxQ,YAAY9wK,EAAEt7F,EAAE,OAAO+vE,GAAG,CAAC,IAAItjE,EAAEsjE,EAAE87L,eAAep/P,EAAEtL,GAAG,OAAOjB,IAAIA,EAAE6vE,EAAE/vE,EAAEs7F,GAAGlV,EAAE35E,IAAI25E,EAAE35E,KAAK+gQ,GAAG/gQ,EAAEsjE,EAAE+8L,gBAAgBxxK,EAAEgyK,GAAGnqP,EAAEloB,EAAE80E,EAAEurB,EAAE3uF,EAAE3R,GAAG,OAAO+0E,EAAExkE,WAAW4X,EAAEw1O,WAAW,GAAG5oL,EAAEi9L,WAAW,KAAK,OAAO/xQ,EAAEwxQ,WAAWxxQ,EAAEuxQ,YAAYvxQ,EAAEwxQ,WAAW18L,GAAG90E,EAAEwxQ,WAAWO,WAAWj9L,EAAE90E,EAAEwxQ,WAAW18L,KAAKA,EAAEA,EAAEvvE,KAAY,IAAPiM,EAAE,KAASsjE,EAAE90E,EAAEqxQ,oBAAoB,OAAOv8L,GAAG,CAAC,IAAI46K,EAAE56K,EAAE87L,eAAelhB,EAAExpP,GAAG,OAAOsL,IAAIA,EAAEsjE,EAAE,OAAO7vE,IAAIF,EAAEs7F,IAAIlV,EAAEukK,IAAIvkK,EAAEukK,KAAKrvJ,EAAEgyK,GAAGnqP,EAAEloB,EAAE80E,EAAEurB,EAAE3uF,EAAE3R,GAAG,OACnf+0E,EAAExkE,WAAW4X,EAAEw1O,WAAW,GAAG5oL,EAAEi9L,WAAW,KAAK,OAAO/xQ,EAAE0xQ,mBAAmB1xQ,EAAEyxQ,oBAAoBzxQ,EAAE0xQ,mBAAmB58L,GAAG90E,EAAE0xQ,mBAAmBK,WAAWj9L,EAAE90E,EAAE0xQ,mBAAmB58L,KAAKA,EAAEA,EAAEvvE,KAAK,OAAON,IAAIjF,EAAEoxQ,WAAW,MAAM,OAAO5/P,EAAExR,EAAEsxQ,mBAAmB,KAAKppP,EAAEw1O,WAAW,GAAG,OAAOz4P,GAAG,OAAOuM,IAAIzM,EAAEs7F,GAAGrgG,EAAEkxQ,UAAUnsQ,EAAE/E,EAAEmxQ,YAAYlsQ,EAAEjF,EAAEqxQ,oBAAoB7/P,EAAEghQ,GAAGrnL,GAAGjjE,EAAE0oP,eAAezlL,EAAEjjE,EAAEmpO,cAAchxJ,EACxY,SAASoyK,GAAGvqP,EAAEloB,EAAE0R,GAAG,OAAO1R,EAAEqxQ,sBAAsB,OAAOrxQ,EAAEoxQ,aAAapxQ,EAAEoxQ,WAAW7rQ,KAAKvF,EAAEqxQ,oBAAoBrxQ,EAAEoxQ,WAAWpxQ,EAAEsxQ,oBAAoBtxQ,EAAEqxQ,oBAAoBrxQ,EAAEsxQ,mBAAmB,MAAMoB,GAAG1yQ,EAAEuxQ,YAAY7/P,GAAG1R,EAAEuxQ,YAAYvxQ,EAAEwxQ,WAAW,KAAKkB,GAAG1yQ,EAAEyxQ,oBAAoB//P,GAAG1R,EAAEyxQ,oBAAoBzxQ,EAAE0xQ,mBAAmB,KAAK,SAASgB,GAAGxqP,EAAEloB,GAAG,KAAK,OAAOkoB,GAAG,CAAC,IAAIxW,EAAEwW,EAAE5X,SAAS,GAAG,OAAOoB,EAAE,CAACwW,EAAE5X,SAAS,KAAK,IAAIvQ,EAAEC,EAAE,GAAG,mBAAoB0R,EAAE,MAAM3Q,MAAMm5J,EAAE,IAAIxoJ,IAAIA,EAAE5Q,KAAKf,GAAGmoB,EAAEA,EAAE6pP,YACxd,IAAIY,GAAGlhB,EAAGzB,wBAAwB4iB,IAAG,IAAK5jB,EAAGpuD,WAAWiyE,KAAK,SAASC,GAAG5qP,EAAEloB,EAAE0R,EAAE3R,GAA8B2R,EAAE,OAAXA,EAAEA,EAAE3R,EAAtBC,EAAEkoB,EAAEmpO,gBAA8CrxP,EAAEuB,EAAE,GAAGvB,EAAE0R,GAAGwW,EAAEmpO,cAAc3/O,EAAkB,QAAhB3R,EAAEmoB,EAAEgqP,cAAsB,IAAIhqP,EAAE0oP,iBAAiB7wQ,EAAEmxQ,UAAUx/P,GAC/N,IAAIqhQ,GAAG,CAACpb,UAAU,SAASzvO,GAAG,SAAOA,EAAEA,EAAE8qP,sBAAqBxV,GAAGt1O,KAAKA,GAAM4vO,gBAAgB,SAAS5vO,EAAEloB,EAAE0R,GAAGwW,EAAEA,EAAE8qP,oBAAoB,IAAIjzQ,EAAEkzQ,KAAK/sQ,EAAEysQ,GAAG1iB,UAAqB/pP,EAAE0rQ,GAAd7xQ,EAAEmzQ,GAAGnzQ,EAAEmoB,EAAEhiB,GAAUA,IAAK4rQ,QAAQ9xQ,EAAE,MAAS0R,IAAcxL,EAAEoK,SAASoB,GAAGugQ,GAAG/pP,EAAEhiB,GAAGitQ,GAAGjrP,EAAEnoB,IAAI83P,oBAAoB,SAAS3vO,EAAEloB,EAAE0R,GAAGwW,EAAEA,EAAE8qP,oBAAoB,IAAIjzQ,EAAEkzQ,KAAK/sQ,EAAEysQ,GAAG1iB,UAAqB/pP,EAAE0rQ,GAAd7xQ,EAAEmzQ,GAAGnzQ,EAAEmoB,EAAEhiB,GAAUA,IAAKsgB,IAAI,EAAEtgB,EAAE4rQ,QAAQ9xQ,EAAE,MAAS0R,IAAcxL,EAAEoK,SAASoB,GAAGugQ,GAAG/pP,EAAEhiB,GAAGitQ,GAAGjrP,EAAEnoB,IAAI63P,mBAAmB,SAAS1vO,EAAEloB,GAAGkoB,EAAEA,EAAE8qP,oBAAoB,IAAIthQ,EAAEuhQ,KAAKlzQ,EAAE4yQ,GAAG1iB,UACvelwP,EAAE6xQ,GAAdlgQ,EAAEwhQ,GAAGxhQ,EAAEwW,EAAEnoB,GAAUA,IAAKymB,IAAI,EAAE,MAASxmB,IAAcD,EAAEuQ,SAAStQ,GAAGiyQ,GAAG/pP,EAAEnoB,GAAGozQ,GAAGjrP,EAAExW,KAAK,SAAS0hQ,GAAGlrP,EAAEloB,EAAE0R,EAAE3R,EAAEmG,EAAEnB,EAAEE,GAAiB,MAAM,mBAApBijB,EAAEA,EAAEuxO,WAAsChnM,sBAAsBvqC,EAAEuqC,sBAAsB1yD,EAAEgF,EAAEE,KAAGjF,EAAEM,WAAWN,EAAEM,UAAU+yQ,sBAAsB1H,GAAGj6P,EAAE3R,IAAK4rQ,GAAGzlQ,EAAEnB,IAC7Q,SAASuuQ,GAAGprP,EAAEloB,EAAE0R,GAAG,IAAI3R,GAAE,EAAGmG,EAAE8mQ,GAAOjoQ,EAAE/E,EAAEkjN,YAA8W,MAAlW,iBAAkBn+M,GAAG,OAAOA,EAAEA,EAAE+rQ,GAAG/rQ,IAAImB,EAAEmkK,GAAErqK,GAAGitQ,GAAGzc,GAAEprN,QAAyBrgC,GAAGhF,EAAE,OAAtBA,EAAEC,EAAEivK,eAAwCi+F,GAAGhlP,EAAEhiB,GAAG8mQ,IAAIhtQ,EAAE,IAAIA,EAAE0R,EAAE3M,GAAGmjB,EAAEmpO,cAAc,OAAOrxP,EAAEwyB,YAAO,IAASxyB,EAAEwyB,MAAMxyB,EAAEwyB,MAAM,KAAKxyB,EAAE+3P,QAAQgb,GAAG7qP,EAAEuxO,UAAUz5P,EAAEA,EAAEgzQ,oBAAoB9qP,EAAEnoB,KAAImoB,EAAEA,EAAEuxO,WAAY0T,4CAA4CjnQ,EAAEgiB,EAAEklP,0CAA0CroQ,GAAU/E,EAC9Z,SAASuzQ,GAAGrrP,EAAEloB,EAAE0R,EAAE3R,GAAGmoB,EAAEloB,EAAEwyB,MAAM,mBAAoBxyB,EAAE0qF,2BAA2B1qF,EAAE0qF,0BAA0Bh5E,EAAE3R,GAAG,mBAAoBC,EAAEwzQ,kCAAkCxzQ,EAAEwzQ,iCAAiC9hQ,EAAE3R,GAAGC,EAAEwyB,QAAQtK,GAAG6qP,GAAGlb,oBAAoB73P,EAAEA,EAAEwyB,MAAM,MAC/P,SAASihP,GAAGvrP,EAAEloB,EAAE0R,EAAE3R,GAAG,IAAImG,EAAEgiB,EAAEuxO,UAAUvzP,EAAEiW,MAAMzK,EAAExL,EAAEssB,MAAMtK,EAAEmpO,cAAcnrP,EAAE2sQ,KAAKD,GAAG,IAAI7tQ,EAAE/E,EAAEkjN,YAAY,iBAAkBn+M,GAAG,OAAOA,EAAEmB,EAAE2oK,QAAQiiG,GAAG/rQ,IAAIA,EAAEslK,GAAErqK,GAAGitQ,GAAGzc,GAAEprN,QAAQl/B,EAAE2oK,QAAQq+F,GAAGhlP,EAAEnjB,IAAoB,QAAhBA,EAAEmjB,EAAEgqP,eAAuBI,GAAGpqP,EAAEnjB,EAAE2M,EAAExL,EAAEnG,GAAGmG,EAAEssB,MAAMtK,EAAEmpO,eAA4C,mBAA7BtsP,EAAE/E,EAAEo7E,4BAAiD03L,GAAG5qP,EAAEloB,EAAE+E,EAAE2M,GAAGxL,EAAEssB,MAAMtK,EAAEmpO,eAAe,mBAAoBrxP,EAAEo7E,0BAA0B,mBAAoBl1E,EAAEwtQ,yBAAyB,mBAAoBxtQ,EAAE8xP,2BAA2B,mBACle9xP,EAAE+xP,qBAAqBj4P,EAAEkG,EAAEssB,MAAM,mBAAoBtsB,EAAE+xP,oBAAoB/xP,EAAE+xP,qBAAqB,mBAAoB/xP,EAAE8xP,2BAA2B9xP,EAAE8xP,4BAA4Bh4P,IAAIkG,EAAEssB,OAAOugP,GAAGlb,oBAAoB3xP,EAAEA,EAAEssB,MAAM,MAAsB,QAAhBztB,EAAEmjB,EAAEgqP,eAAuBI,GAAGpqP,EAAEnjB,EAAE2M,EAAExL,EAAEnG,GAAGmG,EAAEssB,MAAMtK,EAAEmpO,gBAAgB,mBAAoBnrP,EAAEu+B,oBAAoBvc,EAAEw1O,WAAW,GAAG,IAAIiW,GAAG7zQ,MAAMyc,QACtX,SAASq3P,GAAG1rP,EAAEloB,EAAE0R,GAAW,GAAG,QAAXwW,EAAExW,EAAEyrB,MAAiB,mBAAoBjV,GAAG,iBAAkBA,EAAE,CAAC,GAAGxW,EAAEmiQ,OAAO,CAAY,GAAXniQ,EAAEA,EAAEmiQ,OAAY,CAAC,GAAG,IAAIniQ,EAAE8U,IAAI,MAAMzlB,MAAMm5J,EAAE,MAAM,IAAIn6J,EAAE2R,EAAE+nP,UAAU,IAAI15P,EAAE,MAAMgB,MAAMm5J,EAAE,IAAIhyI,IAAI,IAAIhiB,EAAE,GAAGgiB,EAAE,OAAG,OAAOloB,GAAG,OAAOA,EAAEm9B,KAAK,mBAAoBn9B,EAAEm9B,KAAKn9B,EAAEm9B,IAAI22O,aAAa5tQ,EAASlG,EAAEm9B,KAAIn9B,EAAE,SAASkoB,GAAG,IAAIloB,EAAED,EAAE8yQ,KAAK7yQ,IAAI4yQ,KAAK5yQ,EAAED,EAAE8yQ,KAAK,IAAI,OAAO3qP,SAASloB,EAAEkG,GAAGlG,EAAEkG,GAAGgiB,GAAGloB,EAAE8zQ,WAAW5tQ,EAASlG,GAAE,GAAG,iBAAkBkoB,EAAE,MAAMnnB,MAAMm5J,EAAE,MAAM,IAAIxoJ,EAAEmiQ,OAAO,MAAM9yQ,MAAMm5J,EAAE,IAAIhyI,IAAK,OAAOA,EAChe,SAAS6rP,GAAG7rP,EAAEloB,GAAG,GAAG,aAAakoB,EAAExb,KAAK,MAAM3L,MAAMm5J,EAAE,GAAG,oBAAoBv6J,OAAOW,UAAUsD,SAAS9C,KAAKd,GAAG,qBAAqBL,OAAO6K,KAAKxK,GAAGqmB,KAAK,MAAM,IAAIrmB,EAAE,KACpK,SAASg0Q,GAAG9rP,GAAG,SAASloB,EAAEA,EAAE0R,GAAG,GAAGwW,EAAE,CAAC,IAAInoB,EAAEC,EAAEwxQ,WAAW,OAAOzxQ,GAAGA,EAAEgyQ,WAAWrgQ,EAAE1R,EAAEwxQ,WAAW9/P,GAAG1R,EAAEuxQ,YAAYvxQ,EAAEwxQ,WAAW9/P,EAAEA,EAAEqgQ,WAAW,KAAKrgQ,EAAEgsP,UAAU,GAAG,SAAShsP,EAAEA,EAAE3R,GAAG,IAAImoB,EAAE,OAAO,KAAK,KAAK,OAAOnoB,GAAGC,EAAE0R,EAAE3R,GAAGA,EAAEA,EAAEuwK,QAAQ,OAAO,KAAK,SAASvwK,EAAEmoB,EAAEloB,GAAG,IAAIkoB,EAAE,IAAIg/K,IAAI,OAAOlnM,GAAG,OAAOA,EAAEyR,IAAIyW,EAAErN,IAAI7a,EAAEyR,IAAIzR,GAAGkoB,EAAErN,IAAI7a,EAAE6H,MAAM7H,GAAGA,EAAEA,EAAEswK,QAAQ,OAAOpoJ,EAAE,SAAShiB,EAAEgiB,EAAEloB,EAAE0R,GAAwC,OAArCwW,EAAE+rP,GAAG/rP,EAAEloB,IAAO6H,MAAM,EAAEqgB,EAAEooJ,QAAQ,KAAYpoJ,EAAE,SAASnjB,EAAE/E,EAAE0R,EAAE3R,GAAa,OAAVC,EAAE6H,MAAM9H,EAAMmoB,EAA4B,QAAjBnoB,EAAEC,EAAEy9P,YAA6B19P,EAAEA,EAAE8H,OAAQ6J,GAAG1R,EAAE09P,UACtf,EAAEhsP,GAAG3R,GAAEC,EAAE09P,UAAU,EAAShsP,GADsaA,EACpa,SAASzM,EAAEjF,GAA0C,OAAvCkoB,GAAG,OAAOloB,EAAEy9P,YAAYz9P,EAAE09P,UAAU,GAAU19P,EAAE,SAASmrF,EAAEjjE,EAAEloB,EAAE0R,EAAE3R,GAAG,OAAG,OAAOC,GAAG,IAAIA,EAAEwmB,MAAWxmB,EAAEk0Q,GAAGxiQ,EAAEwW,EAAEo4B,KAAKvgD,IAAK65P,OAAO1xO,EAAEloB,KAAEA,EAAEkG,EAAElG,EAAE0R,IAAOkoP,OAAO1xO,EAASloB,GAAE,SAAS80E,EAAE5sD,EAAEloB,EAAE0R,EAAE3R,GAAG,OAAG,OAAOC,GAAGA,EAAEmsP,cAAcz6O,EAAEhF,OAAY3M,EAAEmG,EAAElG,EAAE0R,EAAEyK,QAAWghB,IAAIy2O,GAAG1rP,EAAEloB,EAAE0R,GAAG3R,EAAE65P,OAAO1xO,EAAEnoB,KAAEA,EAAE8+H,GAAGntH,EAAEhF,KAAKgF,EAAED,IAAIC,EAAEyK,MAAM,KAAK+L,EAAEo4B,KAAKvgD,IAAKo9B,IAAIy2O,GAAG1rP,EAAEloB,EAAE0R,GAAG3R,EAAE65P,OAAO1xO,EAASnoB,GAAE,SAASsgG,EAAEn4E,EAAEloB,EAAE0R,EAAE3R,GAAG,OAAG,OAAOC,GAAG,IAAIA,EAAEwmB,KAAKxmB,EAAEy5P,UAAU6F,gBAAgB5tP,EAAE4tP,eAAet/P,EAAEy5P,UAAUzyI,iBAC1et1G,EAAEs1G,iBAAsBhnH,EAAEm0Q,GAAGziQ,EAAEwW,EAAEo4B,KAAKvgD,IAAK65P,OAAO1xO,EAAEloB,KAAEA,EAAEkG,EAAElG,EAAE0R,EAAE4U,UAAU,KAAQszO,OAAO1xO,EAASloB,GAAE,SAASwR,EAAE0W,EAAEloB,EAAE0R,EAAE3R,EAAEgF,GAAG,OAAG,OAAO/E,GAAG,IAAIA,EAAEwmB,MAAWxmB,EAAEo0Q,GAAG1iQ,EAAEwW,EAAEo4B,KAAKvgD,EAAEgF,IAAK60P,OAAO1xO,EAAEloB,KAAEA,EAAEkG,EAAElG,EAAE0R,IAAOkoP,OAAO1xO,EAASloB,GAAE,SAAS0vP,EAAExnO,EAAEloB,EAAE0R,GAAG,GAAG,iBAAkB1R,GAAG,iBAAkBA,EAAE,OAAOA,EAAEk0Q,GAAG,GAAGl0Q,EAAEkoB,EAAEo4B,KAAK5uC,IAAKkoP,OAAO1xO,EAAEloB,EAAE,GAAG,iBAAkBA,GAAG,OAAOA,EAAE,CAAC,OAAOA,EAAE4vP,UAAU,KAAK+B,EAAG,OAAOjgP,EAAEmtH,GAAG7+H,EAAE0M,KAAK1M,EAAEyR,IAAIzR,EAAEmc,MAAM,KAAK+L,EAAEo4B,KAAK5uC,IAAKyrB,IAAIy2O,GAAG1rP,EAAE,KAAKloB,GAAG0R,EAAEkoP,OAAO1xO,EAAExW,EAAE,KAAKkgP,EAAG,OAAO5xP,EAAEm0Q,GAAGn0Q,EAAEkoB,EAAEo4B,KAAK5uC,IAAKkoP,OAAO1xO,EAAEloB,EAAE,GAAG2zQ,GAAG3zQ,IAC3fs4P,EAAGt4P,GAAG,OAAOA,EAAEo0Q,GAAGp0Q,EAAEkoB,EAAEo4B,KAAK5uC,EAAE,OAAQkoP,OAAO1xO,EAAEloB,EAAE+zQ,GAAG7rP,EAAEloB,GAAG,OAAO,KAAK,SAASgF,EAAEkjB,EAAEloB,EAAE0R,EAAE3R,GAAG,IAAImG,EAAE,OAAOlG,EAAEA,EAAEyR,IAAI,KAAK,GAAG,iBAAkBC,GAAG,iBAAkBA,EAAE,OAAO,OAAOxL,EAAE,KAAKilF,EAAEjjE,EAAEloB,EAAE,GAAG0R,EAAE3R,GAAG,GAAG,iBAAkB2R,GAAG,OAAOA,EAAE,CAAC,OAAOA,EAAEk+O,UAAU,KAAK+B,EAAG,OAAOjgP,EAAED,MAAMvL,EAAEwL,EAAEhF,OAAOkmP,EAAGphP,EAAE0W,EAAEloB,EAAE0R,EAAEyK,MAAMmK,SAASvmB,EAAEmG,GAAG4uE,EAAE5sD,EAAEloB,EAAE0R,EAAE3R,GAAG,KAAK,KAAK6xP,EAAG,OAAOlgP,EAAED,MAAMvL,EAAEm6F,EAAEn4E,EAAEloB,EAAE0R,EAAE3R,GAAG,KAAK,GAAG4zQ,GAAGjiQ,IAAI4mP,EAAG5mP,GAAG,OAAO,OAAOxL,EAAE,KAAKsL,EAAE0W,EAAEloB,EAAE0R,EAAE3R,EAAE,MAAMg0Q,GAAG7rP,EAAExW,GAAG,OAAO,KAAK,SAAS8pJ,EAAEtzI,EAAEloB,EAAE0R,EAAE3R,EAAEmG,GAAG,GAAG,iBAAkBnG,GAAG,iBAAkBA,EAAE,OAC5eorF,EAAEnrF,EADifkoB,EAClgBA,EAAEpmB,IAAI4P,IAAI,KAAW,GAAG3R,EAAEmG,GAAG,GAAG,iBAAkBnG,GAAG,OAAOA,EAAE,CAAC,OAAOA,EAAE6vP,UAAU,KAAK+B,EAAG,OAAOzpO,EAAEA,EAAEpmB,IAAI,OAAO/B,EAAE0R,IAAIC,EAAE3R,EAAE0R,MAAM,KAAK1R,EAAE2M,OAAOkmP,EAAGphP,EAAExR,EAAEkoB,EAAEnoB,EAAEoc,MAAMmK,SAASpgB,EAAEnG,EAAE0R,KAAKqjE,EAAE90E,EAAEkoB,EAAEnoB,EAAEmG,GAAG,KAAK0rP,EAAG,OAA2CvxJ,EAAErgG,EAAtCkoB,EAAEA,EAAEpmB,IAAI,OAAO/B,EAAE0R,IAAIC,EAAE3R,EAAE0R,MAAM,KAAW1R,EAAEmG,GAAG,GAAGytQ,GAAG5zQ,IAAIu4P,EAAGv4P,GAAG,OAAwByR,EAAExR,EAAnBkoB,EAAEA,EAAEpmB,IAAI4P,IAAI,KAAW3R,EAAEmG,EAAE,MAAM6tQ,GAAG/zQ,EAAED,GAAG,OAAO,KAAK,SAASwqK,EAAErkK,EAAEjB,EAAEkmF,EAAErW,GAAG,IAAI,IAAIurB,EAAE,KAAK7uF,EAAE,KAAK+Y,EAAEtlB,EAAEqe,EAAEre,EAAE,EAAE0mI,EAAE,KAAK,OAAOphH,GAAGjH,EAAE6nE,EAAE1pF,OAAO6hB,IAAI,CAACiH,EAAE1iB,MAAMyb,GAAGqoH,EAAEphH,EAAEA,EAAE,MAAMohH,EAAEphH,EAAE+lJ,QAAQ,IAAIrwK,EAAE+E,EAAEkB,EAAEqkB,EAAE4gE,EAAE7nE,GAAGwxD,GAAG,GAAG,OAAO70E,EAAE,CAAC,OAAOsqB,IAAIA,EAAEohH,GAAG,MAAMzjH,GACrfqC,GAAG,OAAOtqB,EAAEw9P,WAAWz9P,EAAEkG,EAAEqkB,GAAGtlB,EAAEF,EAAE9E,EAAEgF,EAAEqe,GAAG,OAAO9R,EAAE6uF,EAAEpgG,EAAEuR,EAAE8+J,QAAQrwK,EAAEuR,EAAEvR,EAAEsqB,EAAEohH,EAAE,GAAGroH,IAAI6nE,EAAE1pF,OAAO,OAAOiQ,EAAExL,EAAEqkB,GAAG81E,EAAE,GAAG,OAAO91E,EAAE,CAAC,KAAKjH,EAAE6nE,EAAE1pF,OAAO6hB,IAAkB,QAAdiH,EAAEmlO,EAAExpP,EAAEilF,EAAE7nE,GAAGwxD,MAAc7vE,EAAEF,EAAEwlB,EAAEtlB,EAAEqe,GAAG,OAAO9R,EAAE6uF,EAAE91E,EAAE/Y,EAAE8+J,QAAQ/lJ,EAAE/Y,EAAE+Y,GAAG,OAAO81E,EAAE,IAAI91E,EAAExqB,EAAEmG,EAAEqkB,GAAGjH,EAAE6nE,EAAE1pF,OAAO6hB,IAAsB,QAAlBqoH,EAAE6vB,EAAEjxI,EAAErkB,EAAEod,EAAE6nE,EAAE7nE,GAAGwxD,MAAc5sD,GAAG,OAAOyjH,EAAE8xH,WAAWlzO,EAAEnoB,OAAO,OAAOupI,EAAEl6H,IAAI6R,EAAEqoH,EAAEl6H,KAAKxM,EAAEF,EAAE4mI,EAAE1mI,EAAEqe,GAAG,OAAO9R,EAAE6uF,EAAEsrC,EAAEn6H,EAAE8+J,QAAQ3kC,EAAEn6H,EAAEm6H,GAA4C,OAAzCzjH,GAAGqC,EAAE7mB,SAAQ,SAASwkB,GAAG,OAAOloB,EAAEkG,EAAEgiB,MAAYm4E,EAAE,SAASkwJ,EAAGrqP,EAAEjB,EAAEkmF,EAAErW,GAAG,IAAIurB,EAAEi4J,EAAGntK,GAAG,GAAG,mBAAoBkV,EAAE,MAAMt/F,MAAMm5J,EAAE,MACxe,GAAG,OAD2e/uE,EAAEkV,EAAEv/F,KAAKqqF,IAC5e,MAAMpqF,MAAMm5J,EAAE,MAAM,IAAI,IAAI1oJ,EAAE6uF,EAAE,KAAK91E,EAAEtlB,EAAEqe,EAAEre,EAAE,EAAE0mI,EAAE,KAAK1rI,EAAEkrF,EAAE5lF,OAAO,OAAOglB,IAAItqB,EAAE6F,KAAKwd,IAAIrjB,EAAEkrF,EAAE5lF,OAAO,CAACglB,EAAE1iB,MAAMyb,GAAGqoH,EAAEphH,EAAEA,EAAE,MAAMohH,EAAEphH,EAAE+lJ,QAAQ,IAAI/F,EAAEvlK,EAAEkB,EAAEqkB,EAAEtqB,EAAE8F,MAAM+uE,GAAG,GAAG,OAAOy1F,EAAE,CAAC,OAAOhgJ,IAAIA,EAAEohH,GAAG,MAAMzjH,GAAGqC,GAAG,OAAOggJ,EAAEkzF,WAAWz9P,EAAEkG,EAAEqkB,GAAGtlB,EAAEF,EAAEwlK,EAAEtlK,EAAEqe,GAAG,OAAO9R,EAAE6uF,EAAEkqE,EAAE/4J,EAAE8+J,QAAQ/F,EAAE/4J,EAAE+4J,EAAEhgJ,EAAEohH,EAAE,GAAG1rI,EAAE6F,KAAK,OAAO4L,EAAExL,EAAEqkB,GAAG81E,EAAE,GAAG,OAAO91E,EAAE,CAAC,MAAMtqB,EAAE6F,KAAKwd,IAAIrjB,EAAEkrF,EAAE5lF,OAAwB,QAAjBtF,EAAEyvP,EAAExpP,EAAEjG,EAAE8F,MAAM+uE,MAAc7vE,EAAEF,EAAE9E,EAAEgF,EAAEqe,GAAG,OAAO9R,EAAE6uF,EAAEpgG,EAAEuR,EAAE8+J,QAAQrwK,EAAEuR,EAAEvR,GAAG,OAAOogG,EAAE,IAAI91E,EAAExqB,EAAEmG,EAAEqkB,IAAItqB,EAAE6F,KAAKwd,IAAIrjB,EAAEkrF,EAAE5lF,OAA4B,QAArBtF,EAAEu7J,EAAEjxI,EAAErkB,EAAEod,EAAErjB,EAAE8F,MAAM+uE,MAAc5sD,GAAG,OAChfjoB,EAAEw9P,WAAWlzO,EAAEnoB,OAAO,OAAOnC,EAAEwR,IAAI6R,EAAErjB,EAAEwR,KAAKxM,EAAEF,EAAE9E,EAAEgF,EAAEqe,GAAG,OAAO9R,EAAE6uF,EAAEpgG,EAAEuR,EAAE8+J,QAAQrwK,EAAEuR,EAAEvR,GAA4C,OAAzCioB,GAAGqC,EAAE7mB,SAAQ,SAASwkB,GAAG,OAAOloB,EAAEkG,EAAEgiB,MAAYm4E,EAAE,OAAO,SAASn4E,EAAEnoB,EAAEgF,EAAEomF,GAAG,IAAIrW,EAAE,iBAAkB/vE,GAAG,OAAOA,GAAGA,EAAE2H,OAAOkmP,GAAI,OAAO7tP,EAAE0M,IAAIqjE,IAAI/vE,EAAEA,EAAEoX,MAAMmK,UAAU,IAAI+5E,EAAE,iBAAkBt7F,GAAG,OAAOA,EAAE,GAAGs7F,EAAE,OAAOt7F,EAAE6qP,UAAU,KAAK+B,EAAGzpO,EAAE,CAAS,IAARm4E,EAAEt7F,EAAE0M,IAAQqjE,EAAE/0E,EAAE,OAAO+0E,GAAG,CAAC,GAAGA,EAAErjE,MAAM4uF,EAAE,IAAG,IAAIvrB,EAAEtuD,IAAIzhB,EAAE2H,OAAOkmP,EAAG99K,EAAEq3K,cAAcpnP,EAAE2H,KAAK,CAACgF,EAAEwW,EAAE4sD,EAAEw7F,UAASvwK,EAAEmG,EAAE4uE,EAAE/vE,EAAE2H,OAAOkmP,EAAG7tP,EAAEoX,MAAMmK,SAASvhB,EAAEoX,QAAWghB,IAAIy2O,GAAG1rP,EAAE4sD,EAAE/vE,GAAGhF,EAAE65P,OAAO1xO,EAAEA,EAAEnoB,EAAE,MAAMmoB,EAAOxW,EAAEwW,EAClgB4sD,GAAG,MAAW90E,EAAEkoB,EAAE4sD,GAAGA,EAAEA,EAAEw7F,QAAQvrK,EAAE2H,OAAOkmP,IAAI7yP,EAAEq0Q,GAAGrvQ,EAAEoX,MAAMmK,SAAS4B,EAAEo4B,KAAK6qC,EAAEpmF,EAAE0M,MAAOmoP,OAAO1xO,EAAEA,EAAEnoB,KAAIorF,EAAE0zC,GAAG95H,EAAE2H,KAAK3H,EAAE0M,IAAI1M,EAAEoX,MAAM,KAAK+L,EAAEo4B,KAAK6qC,IAAKhuD,IAAIy2O,GAAG1rP,EAAEnoB,EAAEgF,GAAGomF,EAAEyuK,OAAO1xO,EAAEA,EAAEijE,GAAG,OAAOlmF,EAAEijB,GAAG,KAAK0pO,EAAG1pO,EAAE,CAAC,IAAI4sD,EAAE/vE,EAAE0M,IAAI,OAAO1R,GAAG,CAAC,GAAGA,EAAE0R,MAAMqjE,EAAE,IAAG,IAAI/0E,EAAEymB,KAAKzmB,EAAE05P,UAAU6F,gBAAgBv6P,EAAEu6P,eAAev/P,EAAE05P,UAAUzyI,iBAAiBjiH,EAAEiiH,eAAe,CAACt1G,EAAEwW,EAAEnoB,EAAEuwK,UAASvwK,EAAEmG,EAAEnG,EAAEgF,EAAEuhB,UAAU,KAAQszO,OAAO1xO,EAAEA,EAAEnoB,EAAE,MAAMmoB,EAAOxW,EAAEwW,EAAEnoB,GAAG,MAAWC,EAAEkoB,EAAEnoB,GAAGA,EAAEA,EAAEuwK,SAAQvwK,EAAEo0Q,GAAGpvQ,EAAEmjB,EAAEo4B,KAAK6qC,IAAKyuK,OAAO1xO,EAAEA,EAAEnoB,EAAE,OAAOkF,EAAEijB,GAAG,GAAG,iBACnenjB,GAAG,iBAAkBA,EAAE,OAAOA,EAAE,GAAGA,EAAE,OAAOhF,GAAG,IAAIA,EAAEymB,KAAK9U,EAAEwW,EAAEnoB,EAAEuwK,UAASvwK,EAAEmG,EAAEnG,EAAEgF,IAAO60P,OAAO1xO,EAAEA,EAAEnoB,IAAI2R,EAAEwW,EAAEnoB,IAAGA,EAAEm0Q,GAAGnvQ,EAAEmjB,EAAEo4B,KAAK6qC,IAAKyuK,OAAO1xO,EAAEA,EAAEnoB,GAAGkF,EAAEijB,GAAG,GAAGyrP,GAAG5uQ,GAAG,OAAOwlK,EAAEriJ,EAAEnoB,EAAEgF,EAAEomF,GAAG,GAAGmtK,EAAGvzP,GAAG,OAAOwrP,EAAGroO,EAAEnoB,EAAEgF,EAAEomF,GAAc,GAAXkV,GAAG0zK,GAAG7rP,EAAEnjB,QAAM,IAAqBA,IAAI+vE,EAAE,OAAO5sD,EAAE1B,KAAK,KAAK,EAAE,KAAK,EAAE,MAAM0B,EAAEA,EAAExb,KAAK3L,MAAMm5J,EAAE,IAAIhyI,EAAEqI,aAAarI,EAAEplB,MAAM,cAAe,OAAO4O,EAAEwW,EAAEnoB,IAAI,IAAIs0Q,GAAGL,IAAG,GAAIM,GAAGN,IAAG,GAAIO,GAAG,GAAGC,GAAG,CAACpvO,QAAQmvO,IAAIE,GAAG,CAACrvO,QAAQmvO,IAAIG,GAAG,CAACtvO,QAAQmvO,IAAI,SAASI,GAAGzsP,GAAG,GAAGA,IAAIqsP,GAAG,MAAMxzQ,MAAMm5J,EAAE,MAAM,OAAOhyI,EACve,SAAS0sP,GAAG1sP,EAAEloB,GAAGouI,GAAEsmI,GAAG10Q,GAAKouI,GAAEqmI,GAAGvsP,GAAKkmH,GAAEomI,GAAGD,IAAM,IAAI7iQ,EAAE1R,EAAEgsG,SAAS,OAAOt6F,GAAG,KAAK,EAAE,KAAK,GAAG1R,GAAGA,EAAEA,EAAE+d,iBAAiB/d,EAAEsiH,aAAa+5I,GAAG,KAAK,IAAI,MAAM,QAAkEr8P,EAAEq8P,GAArCr8P,GAAvB0R,EAAE,IAAIA,EAAE1R,EAAEmuC,WAAWnuC,GAAMsiH,cAAc,KAAK5wG,EAAEA,EAAEma,SAAkBmiH,GAAEwmI,IAAMpmI,GAAEomI,GAAGx0Q,GAAK,SAAS60Q,GAAG3sP,GAAG8lH,GAAEwmI,IAAMxmI,GAAEymI,IAAMzmI,GAAE0mI,IAAM,SAASI,GAAG5sP,GAAGysP,GAAGD,GAAGtvO,SAAS,IAAIplC,EAAE20Q,GAAGH,GAAGpvO,SAAa1zB,EAAE2qP,GAAGr8P,EAAEkoB,EAAExb,MAAM1M,IAAI0R,IAAI08H,GAAEqmI,GAAGvsP,GAAKkmH,GAAEomI,GAAG9iQ,IAAM,SAASqjQ,GAAG7sP,GAAGusP,GAAGrvO,UAAUld,IAAI8lH,GAAEwmI,IAAMxmI,GAAEymI,KAAO,IAAI36G,GAAE,CAAC10H,QAAQ,GAC3b,SAAS4vO,GAAG9sP,GAAG,IAAI,IAAIloB,EAAEkoB,EAAE,OAAOloB,GAAG,CAAC,GAAG,KAAKA,EAAEwmB,IAAI,CAAC,IAAI9U,EAAE1R,EAAEqxP,cAAc,GAAG,OAAO3/O,IAAmB,QAAfA,EAAEA,EAAEksP,aAAqBlsP,EAAExO,OAAOokQ,IAAI51P,EAAExO,OAAOqkQ,IAAI,OAAOvnQ,OAAO,GAAG,KAAKA,EAAEwmB,UAAK,IAASxmB,EAAEi1Q,cAAcC,aAAa,GAAG,IAAiB,GAAZl1Q,EAAE09P,WAAc,OAAO19P,OAAO,GAAG,OAAOA,EAAE4rB,MAAM,CAAC5rB,EAAE4rB,MAAMguO,OAAO55P,EAAEA,EAAEA,EAAE4rB,MAAM,SAAS,GAAG5rB,IAAIkoB,EAAE,MAAM,KAAK,OAAOloB,EAAEswK,SAAS,CAAC,GAAG,OAAOtwK,EAAE45P,QAAQ55P,EAAE45P,SAAS1xO,EAAE,OAAO,KAAKloB,EAAEA,EAAE45P,OAAO55P,EAAEswK,QAAQspF,OAAO55P,EAAE45P,OAAO55P,EAAEA,EAAEswK,QAAQ,OAAO,KAAK,SAAS6kG,GAAGjtP,EAAEloB,GAAG,MAAM,CAACyyP,UAAUvqO,EAAE/L,MAAMnc,GACve,IAAIo1Q,GAAG3jB,EAAG1B,uBAAuBlnH,GAAE4oH,EAAGzB,wBAAwB71L,GAAG,EAAEk7M,GAAG,KAAKpkB,GAAE,KAAKqkB,GAAG,KAAKC,GAAG,KAAKhvQ,GAAE,KAAKivQ,GAAG,KAAKC,GAAG,EAAEC,GAAG,KAAKC,GAAG,EAAEl7G,IAAG,EAAGm7G,GAAG,KAAKC,GAAG,EAAE,SAAS/gK,KAAI,MAAM/zG,MAAMm5J,EAAE,MAAO,SAAS47G,GAAG5tP,EAAEloB,GAAG,GAAG,OAAOA,EAAE,OAAM,EAAG,IAAI,IAAI0R,EAAE,EAAEA,EAAE1R,EAAEyB,QAAQiQ,EAAEwW,EAAEzmB,OAAOiQ,IAAI,IAAI+5P,GAAGvjP,EAAExW,GAAG1R,EAAE0R,IAAI,OAAM,EAAG,OAAM,EACtS,SAASqkQ,GAAG7tP,EAAEloB,EAAE0R,EAAE3R,EAAEmG,EAAEnB,GAAkF,GAA/Eo1D,GAAGp1D,EAAEswQ,GAAGr1Q,EAAEs1Q,GAAG,OAAOptP,EAAEA,EAAEmpO,cAAc,KAAK+jB,GAAGhwO,QAAQ,OAAOkwO,GAAGU,GAAGC,GAAGj2Q,EAAE0R,EAAE3R,EAAEmG,GAAMu0J,GAAG,CAAC,GAAGA,IAAG,EAAGo7G,IAAI,EAAEP,GAAG,OAAOptP,EAAEA,EAAEmpO,cAAc,KAAKmkB,GAAGD,GAAGG,GAAGnvQ,GAAE0qP,GAAE,KAAKmkB,GAAGhwO,QAAQ6wO,GAAGj2Q,EAAE0R,EAAE3R,EAAEmG,SAASu0J,IAAIm7G,GAAG,KAAKC,GAAG,EAAmK,GAAjKT,GAAGhwO,QAAQ8wO,IAAGhuP,EAAEmtP,IAAKhkB,cAAckkB,GAAGrtP,EAAE0oP,eAAe6E,GAAGvtP,EAAEgqP,YAAYwD,GAAGxtP,EAAEw1O,WAAWiY,GAAGztP,EAAE,OAAO+oO,IAAG,OAAOA,GAAE1rP,KAAK40D,GAAG,EAAEq7M,GAAGjvQ,GAAEgvQ,GAAGD,GAAGrkB,GAAEokB,GAAG,KAAKI,GAAG,EAAEC,GAAG,KAAKC,GAAG,EAAKztP,EAAE,MAAMnnB,MAAMm5J,EAAE,MAAM,OAAOl6J,EACha,SAASm2Q,KAAKf,GAAGhwO,QAAQ8wO,GAAG/7M,GAAG,EAAEq7M,GAAGjvQ,GAAEgvQ,GAAGD,GAAGrkB,GAAEokB,GAAG,KAAKI,GAAG,EAAEC,GAAG,KAAKC,GAAG,EAAEl7G,IAAG,EAAGm7G,GAAG,KAAKC,GAAG,EAAE,SAASO,KAAK,IAAIluP,EAAE,CAACmpO,cAAc,KAAK6f,UAAU,KAAK79C,MAAM,KAAKgjD,WAAW,KAAK9wQ,KAAK,MAAiC,OAA3B,OAAOgB,GAAEgvQ,GAAGhvQ,GAAE2hB,EAAE3hB,GAAEA,GAAEhB,KAAK2iB,EAAS3hB,GAAE,SAAS+vQ,KAAK,GAAG,OAAOd,GAAQA,IAALjvQ,GAAEivQ,IAAQjwQ,KAAU+vQ,GAAG,QAARrkB,GAAEqkB,IAAerkB,GAAE1rP,KAAK,SAAS,CAAC,GAAG,OAAO+vQ,GAAG,MAAMv0Q,MAAMm5J,EAAE,MAAW,IAAIhyI,EAAE,CAACmpO,eAAZJ,GAAEqkB,IAA0BjkB,cAAc6f,UAAUjgB,GAAEigB,UAAU79C,MAAM49B,GAAE59B,MAAMgjD,WAAWplB,GAAEolB,WAAW9wQ,KAAK,MAAMgB,GAAE,OAAOA,GAAEgvQ,GAAGrtP,EAAE3hB,GAAEhB,KAAK2iB,EAAEotP,GAAGrkB,GAAE1rP,KAAK,OAAOgB,GACpe,SAASgwQ,GAAGruP,EAAEloB,GAAG,MAAM,mBAAoBA,EAAEA,EAAEkoB,GAAGloB,EAClD,SAASw2Q,GAAGtuP,GAAG,IAAIloB,EAAEs2Q,KAAK5kQ,EAAE1R,EAAEqzN,MAAM,GAAG,OAAO3hN,EAAE,MAAM3Q,MAAMm5J,EAAE,MAA8B,GAAxBxoJ,EAAE+kQ,oBAAoBvuP,EAAK,EAAE2tP,GAAG,CAAC,IAAI91Q,EAAE2R,EAAEyoN,SAAS,GAAG,OAAOy7C,GAAG,CAAC,IAAI1vQ,EAAE0vQ,GAAG9zQ,IAAI4P,GAAG,QAAG,IAASxL,EAAE,CAAC0vQ,GAAGxzQ,OAAOsP,GAAG,IAAI3M,EAAE/E,EAAEqxP,cAAc,GAAGtsP,EAAEmjB,EAAEnjB,EAAEmB,EAAEgrD,QAAQhrD,EAAEA,EAAEX,WAAW,OAAOW,GAAiH,OAA9GulQ,GAAG1mQ,EAAE/E,EAAEqxP,iBAAiBwf,IAAG,GAAI7wQ,EAAEqxP,cAActsP,EAAE/E,EAAEq2Q,aAAa3kQ,EAAEq+B,OAAO/vC,EAAEkxQ,UAAUnsQ,GAAG2M,EAAEglQ,kBAAkB3xQ,EAAQ,CAACA,EAAEhF,IAAI,MAAM,CAACC,EAAEqxP,cAActxP,GAAGA,EAAE2R,EAAEq+B,KAAK,IAAI9qC,EAAEjF,EAAEq2Q,WAA4F,GAAjFtxQ,EAAE/E,EAAEkxQ,UAAU,OAAOjsQ,GAAG,OAAOlF,IAAIA,EAAEwF,KAAK,MAAMxF,EAAEkF,EAAEM,MAAMxF,EAAE,OAAOA,EAAEA,EAAEwF,KAAK,KAAQ,OACvfxF,EAAE,CAAC,IAAIorF,EAAEjlF,EAAE,KAAK4uE,EAAE/0E,EAAEsgG,GAAE,EAAG,EAAE,CAAC,IAAI7uF,EAAEsjE,EAAE87L,eAAep/P,EAAE2oD,IAAIkmC,IAAIA,GAAE,EAAGlV,EAAElmF,EAAEiB,EAAEnB,GAAGyM,EAAEikQ,IAAUjD,GAALiD,GAAGjkQ,KAAY+gQ,GAAG/gQ,EAAEsjE,EAAE+8L,gBAAgB9sQ,EAAE+vE,EAAE6hM,eAAezuP,EAAE4sD,EAAE8hM,WAAW1uP,EAAEnjB,EAAE+vE,EAAE5jB,SAASjsD,EAAE6vE,EAAEA,EAAEA,EAAEvvE,WAAW,OAAOuvE,GAAGA,IAAI/0E,GAAGsgG,IAAIlV,EAAElmF,EAAEiB,EAAEnB,GAAG0mQ,GAAG1mQ,EAAE/E,EAAEqxP,iBAAiBwf,IAAG,GAAI7wQ,EAAEqxP,cAActsP,EAAE/E,EAAEq2Q,WAAWlrL,EAAEnrF,EAAEkxQ,UAAUhrQ,EAAEwL,EAAEglQ,kBAAkB3xQ,EAAE,MAAM,CAAC/E,EAAEqxP,cAAc3/O,EAAEyoN,UACvV,SAAS08C,GAAG3uP,GAAG,IAAIloB,EAAEo2Q,KAAiL,MAA5K,mBAAoBluP,IAAIA,EAAEA,KAAKloB,EAAEqxP,cAAcrxP,EAAEkxQ,UAAUhpP,EAAiFA,GAA/EA,EAAEloB,EAAEqzN,MAAM,CAACtjL,KAAK,KAAKoqL,SAAS,KAAKs8C,oBAAoBF,GAAGG,kBAAkBxuP,IAAOiyM,SAAS28C,GAAGhmP,KAAK,KAAKukP,GAAGntP,GAAS,CAACloB,EAAEqxP,cAAcnpO,GAAG,SAAS6uP,GAAG7uP,GAAG,OAAOsuP,GAAGD,IAAM,SAASS,GAAG9uP,EAAEloB,EAAE0R,EAAE3R,GAAwM,OAArMmoB,EAAE,CAAC1B,IAAI0B,EAAE3nB,OAAOP,EAAEmkC,QAAQzyB,EAAEulQ,KAAKl3Q,EAAEwF,KAAK,MAAM,OAAOmwQ,IAAIA,GAAG,CAAClE,WAAW,OAASA,WAAWtpP,EAAE3iB,KAAK2iB,EAAoB,QAAhBloB,EAAE01Q,GAAGlE,YAAoBkE,GAAGlE,WAAWtpP,EAAE3iB,KAAK2iB,GAAGxW,EAAE1R,EAAEuF,KAAKvF,EAAEuF,KAAK2iB,EAAEA,EAAE3iB,KAAKmM,EAAEgkQ,GAAGlE,WAAWtpP,GAAWA,EAChe,SAASgvP,GAAGhvP,EAAEloB,EAAE0R,EAAE3R,GAAG,IAAImG,EAAEkwQ,KAAKT,IAAIztP,EAAEhiB,EAAEmrP,cAAc2lB,GAAGh3Q,EAAE0R,OAAE,OAAO,IAAS3R,EAAE,KAAKA,GAAG,SAASo3Q,GAAGjvP,EAAEloB,EAAE0R,EAAE3R,GAAG,IAAImG,EAAEowQ,KAAKv2Q,OAAE,IAASA,EAAE,KAAKA,EAAE,IAAIgF,OAAE,EAAO,GAAG,OAAOksP,GAAE,CAAC,IAAIhsP,EAAEgsP,GAAEI,cAA0B,GAAZtsP,EAAEE,EAAEk/B,QAAW,OAAOpkC,GAAG+1Q,GAAG/1Q,EAAEkF,EAAEgyQ,MAAmB,YAAZD,GAAG,EAAEtlQ,EAAE3M,EAAEhF,GAAW41Q,IAAIztP,EAAEhiB,EAAEmrP,cAAc2lB,GAAGh3Q,EAAE0R,EAAE3M,EAAEhF,GAAG,SAASq3Q,GAAGlvP,EAAEloB,GAAG,OAAOk3Q,GAAG,IAAI,IAAIhvP,EAAEloB,GAAG,SAASq3Q,GAAGnvP,EAAEloB,GAAG,OAAOm3Q,GAAG,IAAI,IAAIjvP,EAAEloB,GACrW,SAASs3Q,GAAGpvP,EAAEloB,GAAG,MAAG,mBAAoBA,GAASkoB,EAAEA,IAAIloB,EAAEkoB,GAAG,WAAWloB,EAAE,QAAU,MAAOA,GAAqBkoB,EAAEA,IAAIloB,EAAEolC,QAAQld,EAAE,WAAWloB,EAAEolC,QAAQ,YAAtE,EAA4E,SAASmyO,MAAM,SAASt0K,GAAG/6E,EAAEloB,GAA4C,OAAzCo2Q,KAAK/kB,cAAc,CAACnpO,OAAE,IAASloB,EAAE,KAAKA,GAAUkoB,EAAE,SAASg7E,GAAGh7E,EAAEloB,GAAG,IAAI0R,EAAE4kQ,KAAKt2Q,OAAE,IAASA,EAAE,KAAKA,EAAE,IAAID,EAAE2R,EAAE2/O,cAAc,OAAG,OAAOtxP,GAAG,OAAOC,GAAG81Q,GAAG91Q,EAAED,EAAE,IAAWA,EAAE,IAAG2R,EAAE2/O,cAAc,CAACnpO,EAAEloB,GAAUkoB,GAC/X,SAAS4uP,GAAG5uP,EAAEloB,EAAE0R,GAAG,KAAK,GAAGmkQ,IAAI,MAAM90Q,MAAMm5J,EAAE,MAAM,IAAIn6J,EAAEmoB,EAAEu1O,UAAU,GAAGv1O,IAAImtP,IAAI,OAAOt1Q,GAAGA,IAAIs1Q,GAAG,GAAG56G,IAAG,EAAGvyI,EAAE,CAAC0oP,eAAez2M,GAAG03M,eAAe,KAAK3gN,OAAOx/C,EAAEilQ,aAAa,KAAKC,WAAW,KAAKrxQ,KAAK,MAAM,OAAOqwQ,KAAKA,GAAG,IAAI1uE,UAAiB,KAAZx1L,EAAEkkQ,GAAG9zQ,IAAI9B,IAAc41Q,GAAG/6P,IAAI7a,EAAEkoB,OAAO,CAAC,IAAIloB,EAAE0R,EAAE,OAAO1R,EAAEuF,MAAMvF,EAAEA,EAAEuF,KAAKvF,EAAEuF,KAAK2iB,MAAM,CAAC,IAAIhiB,EAAE+sQ,KAAKluQ,EAAE4tQ,GAAG1iB,SAAqBlrP,EAAE,CAAC6rQ,eAAf1qQ,EAAEgtQ,GAAGhtQ,EAAEgiB,EAAEnjB,GAAuB8sQ,eAAe9sQ,EAAEmsD,OAAOx/C,EAAEilQ,aAAa,KAAKC,WAAW,KAAKrxQ,KAAK,MAAM,IAAIN,EAAEjF,EAAE+vC,KAAK,GAAG,OAAO9qC,EAAEF,EAAEQ,KAAKR,MAAM,CAAC,IAAIomF,EAAElmF,EAAEM,KAAK,OAAO4lF,IACjfpmF,EAAEQ,KAAK4lF,GAAGlmF,EAAEM,KAAKR,EAAW,GAAT/E,EAAE+vC,KAAKhrC,EAAK,IAAImjB,EAAE0oP,iBAAiB,OAAO7wQ,GAAG,IAAIA,EAAE6wQ,iBAA0C,QAAxB7wQ,EAAEC,EAAEy2Q,qBAA8B,IAAI,IAAI3hM,EAAE90E,EAAE02Q,kBAAkBr2K,EAAEtgG,EAAE+0E,EAAEpjE,GAAmC,GAAhC3M,EAAE4xQ,aAAa52Q,EAAEgF,EAAE6xQ,WAAWv2K,EAAKorK,GAAGprK,EAAEvrB,GAAG,OAAO,MAAMtjE,IAAa2hQ,GAAGjrP,EAAEhiB,IAC5O,IAAIgwQ,GAAG,CAACrkB,YAAYif,GAAG1e,YAAYt9I,GAAEg9I,WAAWh9I,GAAEw9I,UAAUx9I,GAAEu9I,oBAAoBv9I,GAAEq9I,gBAAgBr9I,GAAEi9I,QAAQj9I,GAAEk9I,WAAWl9I,GAAEm9I,OAAOn9I,GAAEo9I,SAASp9I,GAAEy9I,cAAcz9I,GAAE09I,aAAa19I,GAAE49I,iBAAiB59I,GAAE69I,cAAc79I,IAAGkhK,GAAG,CAACnkB,YAAYif,GAAG1e,YAAYnvJ,GAAG6uJ,WAAWgf,GAAGxe,UAAU8kB,GAAG/kB,oBAAoB,SAASnqO,EAAEloB,EAAE0R,GAA6C,OAA1CA,EAAE,MAAOA,EAAcA,EAAEwI,OAAO,CAACgO,IAAI,KAAYgvP,GAAG,EAAE,GAAGI,GAAGxmP,KAAK,KAAK9wB,EAAEkoB,GAAGxW,IAAIygP,gBAAgB,SAASjqO,EAAEloB,GAAG,OAAOk3Q,GAAG,EAAE,GAAGhvP,EAAEloB,IAAI+xP,QAAQ,SAAS7pO,EAAEloB,GAAG,IAAI0R,EAAE0kQ,KAC7c,OADkdp2Q,OAAE,IAASA,EAAE,KAAKA,EAAEkoB,EAAEA,IAAIxW,EAAE2/O,cACpf,CAACnpO,EAAEloB,GAAUkoB,GAAG8pO,WAAW,SAAS9pO,EAAEloB,EAAE0R,GAAG,IAAI3R,EAAEq2Q,KAAqK,OAAhKp2Q,OAAE,IAAS0R,EAAEA,EAAE1R,GAAGA,EAAED,EAAEsxP,cAActxP,EAAEmxQ,UAAUlxQ,EAAgFkoB,GAA9EA,EAAEnoB,EAAEszN,MAAM,CAACtjL,KAAK,KAAKoqL,SAAS,KAAKs8C,oBAAoBvuP,EAAEwuP,kBAAkB12Q,IAAOm6N,SAAS28C,GAAGhmP,KAAK,KAAKukP,GAAGntP,GAAS,CAACnoB,EAAEsxP,cAAcnpO,IAAI+pO,OAAO,SAAS/pO,GAA4B,OAAdA,EAAE,CAACkd,QAAQld,GAAhBkuP,KAA4B/kB,cAAcnpO,GAAGgqO,SAAS2kB,GAAGtkB,cAAcglB,GAAG/kB,aAAa2iB,GAAGziB,iBAAiB,SAASxqO,EAAEloB,GAAG,IAAI0R,EAAEmlQ,GAAG3uP,GAAGnoB,EAAE2R,EAAE,GAAGxL,EAAEwL,EAAE,GAC7Y,OADgZ0lQ,IAAG,WAAW5sL,EAAEgtL,eAAc,WAAW,IAAI9lQ,EAAEm3H,GAAEonH,SAASpnH,GAAEonH,cAAS,IAASjwP,EAAE,KAAKA,EAAE,IAAIkG,EAAEgiB,GAAG,QAAQ2gH,GAAEonH,SACvgBv+O,QAAM,CAACwW,EAAEloB,IAAWD,GAAG4yP,cAAc,SAASzqO,GAAG,IAAIloB,EAAE62Q,IAAG,GAAInlQ,EAAE1R,EAAE,GAAGD,EAAEC,EAAE,GAAG,MAAM,CAACijG,IAAG,SAASjjG,GAAGD,GAAE,GAAIyqF,EAAEgtL,eAAc,WAAW,IAAI9lQ,EAAEm3H,GAAEonH,SAASpnH,GAAEonH,cAAS,IAAS/nO,EAAE,KAAKA,EAAE,IAAInoB,GAAE,GAAIC,IAAI,QAAQ6oI,GAAEonH,SAASv+O,QAAM,CAACwW,EAAExW,IAAIA,KAAKukQ,GAAG,CAACpkB,YAAYif,GAAG1e,YAAYlvJ,GAAG4uJ,WAAWgf,GAAGxe,UAAU+kB,GAAGhlB,oBAAoB,SAASnqO,EAAEloB,EAAE0R,GAA6C,OAA1CA,EAAE,MAAOA,EAAcA,EAAEwI,OAAO,CAACgO,IAAI,KAAYivP,GAAG,EAAE,GAAGG,GAAGxmP,KAAK,KAAK9wB,EAAEkoB,GAAGxW,IAAIygP,gBAAgB,SAASjqO,EAAEloB,GAAG,OAAOm3Q,GAAG,EAAE,GAAGjvP,EAAEloB,IAAI+xP,QAAQ,SAAS7pO,EAAEloB,GAAG,IAAI0R,EAAE4kQ,KAAKt2Q,OAAE,IAASA,EACnf,KAAKA,EAAE,IAAID,EAAE2R,EAAE2/O,cAAc,OAAG,OAAOtxP,GAAG,OAAOC,GAAG81Q,GAAG91Q,EAAED,EAAE,IAAWA,EAAE,IAAGmoB,EAAEA,IAAIxW,EAAE2/O,cAAc,CAACnpO,EAAEloB,GAAUkoB,IAAG8pO,WAAWwkB,GAAGvkB,OAAO,WAAW,OAAOqkB,KAAKjlB,eAAea,SAAS6kB,GAAGxkB,cAAcglB,GAAG/kB,aAAa2iB,GAAGziB,iBAAiB,SAASxqO,EAAEloB,GAAG,IAAI0R,EAAEqlQ,KAAMh3Q,EAAE2R,EAAE,GAAGxL,EAAEwL,EAAE,GAAmI,OAAhI2lQ,IAAG,WAAW7sL,EAAEgtL,eAAc,WAAW,IAAI9lQ,EAAEm3H,GAAEonH,SAASpnH,GAAEonH,cAAS,IAASjwP,EAAE,KAAKA,EAAE,IAAIkG,EAAEgiB,GAAG,QAAQ2gH,GAAEonH,SAASv+O,QAAM,CAACwW,EAAEloB,IAAWD,GAAG4yP,cAAc,SAASzqO,GAAG,IAAIloB,EAAE+2Q,KAAOrlQ,EAAE1R,EAAE,GAAGD,EAAEC,EAAE,GAAG,MAAM,CAACkjG,IAAG,SAASljG,GAAGD,GAAE,GAAIyqF,EAAEgtL,eAAc,WAAW,IAAI9lQ,EAC5gBm3H,GAAEonH,SAASpnH,GAAEonH,cAAS,IAAS/nO,EAAE,KAAKA,EAAE,IAAInoB,GAAE,GAAIC,IAAI,QAAQ6oI,GAAEonH,SAASv+O,QAAM,CAACwW,EAAExW,IAAIA,KAAK+lQ,GAAG,KAAKC,GAAG,KAAKC,IAAG,EAAG,SAASC,GAAG1vP,EAAEloB,GAAG,IAAI0R,EAAEmmQ,GAAG,EAAE,KAAK,KAAK,GAAGnmQ,EAAEy6O,YAAY,UAAUz6O,EAAEhF,KAAK,UAAUgF,EAAE+nP,UAAUz5P,EAAE0R,EAAEkoP,OAAO1xO,EAAExW,EAAEgsP,UAAU,EAAE,OAAOx1O,EAAEspP,YAAYtpP,EAAEspP,WAAWO,WAAWrgQ,EAAEwW,EAAEspP,WAAW9/P,GAAGwW,EAAEqpP,YAAYrpP,EAAEspP,WAAW9/P,EACpU,SAASomQ,GAAG5vP,EAAEloB,GAAG,OAAOkoB,EAAE1B,KAAK,KAAK,EAAE,IAAI9U,EAAEwW,EAAExb,KAAyE,OAAO,QAA3E1M,EAAE,IAAIA,EAAEgsG,UAAUt6F,EAAExB,gBAAgBlQ,EAAE8nC,SAAS53B,cAAc,KAAKlQ,KAAmBkoB,EAAEuxO,UAAUz5P,GAAE,GAAO,KAAK,EAAE,OAAoD,QAA7CA,EAAE,KAAKkoB,EAAE6vP,cAAc,IAAI/3Q,EAAEgsG,SAAS,KAAKhsG,KAAYkoB,EAAEuxO,UAAUz5P,GAAE,GAAwB,QAAQ,OAAM,GACtR,SAASg4Q,GAAG9vP,GAAG,GAAGyvP,GAAG,CAAC,IAAI33Q,EAAE03Q,GAAG,GAAG13Q,EAAE,CAAC,IAAI0R,EAAE1R,EAAE,IAAI83Q,GAAG5vP,EAAEloB,GAAG,CAAqB,KAApBA,EAAEghG,GAAGtvF,EAAE6/H,gBAAqBumI,GAAG5vP,EAAEloB,GAA+C,OAA3CkoB,EAAEw1O,WAAuB,KAAbx1O,EAAEw1O,UAAgB,EAAEia,IAAG,OAAGF,GAAGvvP,GAAS0vP,GAAGH,GAAG/lQ,GAAG+lQ,GAAGvvP,EAAEwvP,GAAG12K,GAAGhhG,EAAE8+B,iBAAiB5W,EAAEw1O,WAAuB,KAAbx1O,EAAEw1O,UAAgB,EAAEia,IAAG,EAAGF,GAAGvvP,GAAG,SAAS+vP,GAAG/vP,GAAG,IAAIA,EAAEA,EAAE0xO,OAAO,OAAO1xO,GAAG,IAAIA,EAAE1B,KAAK,IAAI0B,EAAE1B,KAAK,KAAK0B,EAAE1B,KAAK0B,EAAEA,EAAE0xO,OAAO6d,GAAGvvP,EAC5T,SAASgwP,GAAGhwP,GAAG,GAAGA,IAAIuvP,GAAG,OAAM,EAAG,IAAIE,GAAG,OAAOM,GAAG/vP,GAAGyvP,IAAG,GAAG,EAAG,IAAI33Q,EAAEkoB,EAAExb,KAAK,GAAG,IAAIwb,EAAE1B,KAAK,SAASxmB,GAAG,SAASA,IAAI0nQ,GAAG1nQ,EAAEkoB,EAAE+sP,eAAe,IAAIj1Q,EAAE03Q,GAAG13Q,GAAG43Q,GAAG1vP,EAAEloB,GAAGA,EAAEghG,GAAGhhG,EAAEuxI,aAAmB,GAAN0mI,GAAG/vP,GAAM,KAAKA,EAAE1B,IAAI,CAAgD,KAA7B0B,EAAE,QAApBA,EAAEA,EAAEmpO,eAAyBnpO,EAAE01O,WAAW,MAAW,MAAM78P,MAAMm5J,EAAE,MAAMhyI,EAAE,CAAiB,IAAhBA,EAAEA,EAAEqpH,YAAgBvxI,EAAE,EAAEkoB,GAAG,CAAC,GAAG,IAAIA,EAAE8jF,SAAS,CAAC,IAAIt6F,EAAEwW,EAAEhlB,KAAK,GA7EpG,OA6EuGwO,EAAO,CAAC,GAAG,IAAI1R,EAAE,CAAC03Q,GAAG12K,GAAG94E,EAAEqpH,aAAa,MAAMrpH,EAAEloB,QA7E7J,MA6EsK0R,GAAQA,IAAI61P,IAAI71P,IAAI41P,IAAItnQ,IAAIkoB,EAAEA,EAAEqpH,YAAYmmI,GAAG,WAAWA,GAAGD,GAAGz2K,GAAG94E,EAAEuxO,UAAUloH,aAAa,KAAK,OAAM,EAChf,SAASt3E,KAAKy9M,GAAGD,GAAG,KAAKE,IAAG,EAAG,IAAIQ,GAAG1mB,EAAG2mB,kBAAkBvH,IAAG,EAAG,SAAShoE,GAAE3gL,EAAEloB,EAAE0R,EAAE3R,GAAGC,EAAE4rB,MAAM,OAAO1D,EAAEosP,GAAGt0Q,EAAE,KAAK0R,EAAE3R,GAAGs0Q,GAAGr0Q,EAAEkoB,EAAE0D,MAAMla,EAAE3R,GAAG,SAASs4Q,GAAGnwP,EAAEloB,EAAE0R,EAAE3R,EAAEmG,GAAGwL,EAAEA,EAAEmpB,OAAO,IAAI91B,EAAE/E,EAAEm9B,IAA8B,OAA1BuzO,GAAG1wQ,EAAEkG,GAAGnG,EAAEg2Q,GAAG7tP,EAAEloB,EAAE0R,EAAE3R,EAAEgF,EAAEmB,GAAM,OAAOgiB,GAAI2oP,IAA4G7wQ,EAAE09P,WAAW,EAAE70D,GAAE3gL,EAAEloB,EAAED,EAAEmG,GAAUlG,EAAE4rB,QAArI5rB,EAAEkyQ,YAAYhqP,EAAEgqP,YAAYlyQ,EAAE09P,YAAY,IAAIx1O,EAAE0oP,gBAAgB1qQ,IAAIgiB,EAAE0oP,eAAe,GAAG0H,GAAGpwP,EAAEloB,EAAEkG,IACtU,SAASqyQ,GAAGrwP,EAAEloB,EAAE0R,EAAE3R,EAAEmG,EAAEnB,GAAG,GAAG,OAAOmjB,EAAE,CAAC,IAAIjjB,EAAEyM,EAAEhF,KAAK,MAAG,mBAAoBzH,GAAIuzQ,GAAGvzQ,SAAI,IAASA,EAAEorB,cAAc,OAAO3e,EAAEgkB,cAAS,IAAShkB,EAAE2e,eAAsDnI,EAAE22G,GAAGntH,EAAEhF,KAAK,KAAK3M,EAAE,KAAKC,EAAEsgD,KAAKv7C,IAAKo4B,IAAIn9B,EAAEm9B,IAAIjV,EAAE0xO,OAAO55P,EAASA,EAAE4rB,MAAM1D,IAA1GloB,EAAEwmB,IAAI,GAAGxmB,EAAE0M,KAAKzH,EAAE86I,GAAG73H,EAAEloB,EAAEiF,EAAElF,EAAEmG,EAAEnB,IAAuF,OAAVE,EAAEijB,EAAE0D,MAAS1lB,EAAEnB,IAAImB,EAAEjB,EAAEgwQ,eAA0BvjQ,EAAE,QAAdA,EAAEA,EAAEgkB,SAAmBhkB,EAAEi6P,IAAKzlQ,EAAEnG,IAAImoB,EAAEiV,MAAMn9B,EAAEm9B,KAAYm7O,GAAGpwP,EAAEloB,EAAE+E,IAAG/E,EAAE09P,WAAW,GAAEx1O,EAAE+rP,GAAGhvQ,EAAElF,IAAOo9B,IAAIn9B,EAAEm9B,IAAIjV,EAAE0xO,OAAO55P,EAASA,EAAE4rB,MAAM1D,GACrb,SAAS63H,GAAG73H,EAAEloB,EAAE0R,EAAE3R,EAAEmG,EAAEnB,GAAG,OAAO,OAAOmjB,GAAGyjP,GAAGzjP,EAAE+sP,cAAcl1Q,IAAImoB,EAAEiV,MAAMn9B,EAAEm9B,MAAM0zO,IAAG,EAAG3qQ,EAAEnB,GAAGuzQ,GAAGpwP,EAAEloB,EAAE+E,GAAG0zQ,GAAGvwP,EAAEloB,EAAE0R,EAAE3R,EAAEgF,GAAG,SAAS2zQ,GAAGxwP,EAAEloB,GAAG,IAAI0R,EAAE1R,EAAEm9B,KAAO,OAAOjV,GAAG,OAAOxW,GAAG,OAAOwW,GAAGA,EAAEiV,MAAMzrB,KAAE1R,EAAE09P,WAAW,KAAI,SAAS+a,GAAGvwP,EAAEloB,EAAE0R,EAAE3R,EAAEmG,GAAG,IAAInB,EAAEslK,GAAE34J,GAAGu7P,GAAGzc,GAAEprN,QAA4C,OAApCrgC,EAAEmoQ,GAAGltQ,EAAE+E,GAAG2rQ,GAAG1wQ,EAAEkG,GAAGwL,EAAEqkQ,GAAG7tP,EAAEloB,EAAE0R,EAAE3R,EAAEgF,EAAEmB,GAAM,OAAOgiB,GAAI2oP,IAA4G7wQ,EAAE09P,WAAW,EAAE70D,GAAE3gL,EAAEloB,EAAE0R,EAAExL,GAAUlG,EAAE4rB,QAArI5rB,EAAEkyQ,YAAYhqP,EAAEgqP,YAAYlyQ,EAAE09P,YAAY,IAAIx1O,EAAE0oP,gBAAgB1qQ,IAAIgiB,EAAE0oP,eAAe,GAAG0H,GAAGpwP,EAAEloB,EAAEkG,IACvZ,SAASyyQ,GAAGzwP,EAAEloB,EAAE0R,EAAE3R,EAAEmG,GAAG,GAAGmkK,GAAE34J,GAAG,CAAC,IAAI3M,GAAE,EAAG0oQ,GAAGztQ,QAAQ+E,GAAE,EAAW,GAAR2rQ,GAAG1wQ,EAAEkG,GAAM,OAAOlG,EAAEy5P,UAAU,OAAOvxO,IAAIA,EAAEu1O,UAAU,KAAKz9P,EAAEy9P,UAAU,KAAKz9P,EAAE09P,WAAW,GAAG4V,GAAGtzQ,EAAE0R,EAAE3R,GAAK0zQ,GAAGzzQ,EAAE0R,EAAE3R,EAAEmG,GAAGnG,GAAE,OAAQ,GAAG,OAAOmoB,EAAE,CAAC,IAAIjjB,EAAEjF,EAAEy5P,UAAUtuK,EAAEnrF,EAAEi1Q,cAAchwQ,EAAEkX,MAAMgvE,EAAE,IAAIrW,EAAE7vE,EAAE4pK,QAAQxuE,EAAE3uF,EAAEwxM,YAA0C7iH,EAA9B,iBAAkBA,GAAG,OAAOA,EAAIywK,GAAGzwK,GAA0B6sK,GAAGltQ,EAAzBqgG,EAAEgqE,GAAE34J,GAAGu7P,GAAGzc,GAAEprN,SAAmB,IAAI5zB,EAAEE,EAAE0pE,yBAAyBs0K,EAAE,mBAAoBl+O,GAAG,mBAAoBvM,EAAEyuQ,wBAAwBhkB,GAAG,mBAAoBzqP,EAAEuuQ,kCACxd,mBAAoBvuQ,EAAEylF,4BAA4BS,IAAIprF,GAAG+0E,IAAIurB,IAAIkzK,GAAGvzQ,EAAEiF,EAAElF,EAAEsgG,GAAG2wK,IAAG,EAAG,IAAIhsQ,EAAEhF,EAAEqxP,cAAcv8K,EAAE7vE,EAAEutB,MAAMxtB,EAAE,IAAIw2J,EAAEx7J,EAAEkyQ,YAAY,OAAO12G,IAAI82G,GAAGtyQ,EAAEw7J,EAAEz7J,EAAEkF,EAAEiB,GAAG4uE,EAAE90E,EAAEqxP,eAAelmK,IAAIprF,GAAGiF,IAAI8vE,GAAGw1F,GAAEllI,SAAS4rO,IAAI,mBAAoBx/P,IAAIshQ,GAAG9yQ,EAAE0R,EAAEF,EAAEzR,GAAG+0E,EAAE90E,EAAEqxP,gBAAgBlmK,EAAE6lL,IAAIoC,GAAGpzQ,EAAE0R,EAAEy5E,EAAEprF,EAAEiF,EAAE8vE,EAAEurB,KAAKqvJ,GAAG,mBAAoBzqP,EAAE+yP,2BAA2B,mBAAoB/yP,EAAEgzP,qBAAqB,mBAAoBhzP,EAAEgzP,oBAAoBhzP,EAAEgzP,qBAAqB,mBAAoBhzP,EAAE+yP,2BAC1d/yP,EAAE+yP,6BAA6B,mBAAoB/yP,EAAEw/B,oBAAoBzkC,EAAE09P,WAAW,KAAK,mBAAoBz4P,EAAEw/B,oBAAoBzkC,EAAE09P,WAAW,GAAG19P,EAAEi1Q,cAAcl1Q,EAAEC,EAAEqxP,cAAcv8K,GAAG7vE,EAAEkX,MAAMpc,EAAEkF,EAAEutB,MAAMsiD,EAAE7vE,EAAE4pK,QAAQxuE,EAAEtgG,EAAEorF,IAAI,mBAAoBlmF,EAAEw/B,oBAAoBzkC,EAAE09P,WAAW,GAAG39P,GAAE,QAASkF,EAAEjF,EAAEy5P,UAAUtuK,EAAEnrF,EAAEi1Q,cAAchwQ,EAAEkX,MAAMnc,EAAE0M,OAAO1M,EAAEmsP,YAAYhhK,EAAE4kL,GAAG/vQ,EAAE0M,KAAKy+E,GAAGrW,EAAE7vE,EAAE4pK,QAAsDxuE,EAA9B,iBAAhBA,EAAE3uF,EAAEwxM,cAAiC,OAAO7iH,EAAIywK,GAAGzwK,GAA0B6sK,GAAGltQ,EAAzBqgG,EAAEgqE,GAAE34J,GAAGu7P,GAAGzc,GAAEprN,UAAiDsqN,EACnf,mBADqdl+O,EAAEE,EAAE0pE,2BAClc,mBAAoBn2E,EAAEyuQ,0BAA0B,mBAAoBzuQ,EAAEuuQ,kCAAkC,mBAAoBvuQ,EAAEylF,4BAA4BS,IAAIprF,GAAG+0E,IAAIurB,IAAIkzK,GAAGvzQ,EAAEiF,EAAElF,EAAEsgG,GAAG2wK,IAAG,EAAGl8L,EAAE90E,EAAEqxP,cAAcrsP,EAAEC,EAAEutB,MAAMsiD,EAAkB,QAAhB0mF,EAAEx7J,EAAEkyQ,eAAuBI,GAAGtyQ,EAAEw7J,EAAEz7J,EAAEkF,EAAEiB,GAAGlB,EAAEhF,EAAEqxP,eAAelmK,IAAIprF,GAAG+0E,IAAI9vE,GAAGslK,GAAEllI,SAAS4rO,IAAI,mBAAoBx/P,IAAIshQ,GAAG9yQ,EAAE0R,EAAEF,EAAEzR,GAAGiF,EAAEhF,EAAEqxP,gBAAgB7/O,EAAEw/P,IAAIoC,GAAGpzQ,EAAE0R,EAAEy5E,EAAEprF,EAAE+0E,EAAE9vE,EAAEq7F,KAAKqvJ,GAAG,mBAAoBzqP,EAAE2zQ,4BAA4B,mBAAoB3zQ,EAAE4zQ,sBACre,mBAAoB5zQ,EAAE4zQ,qBAAqB5zQ,EAAE4zQ,oBAAoB94Q,EAAEiF,EAAEq7F,GAAG,mBAAoBp7F,EAAE2zQ,4BAA4B3zQ,EAAE2zQ,2BAA2B74Q,EAAEiF,EAAEq7F,IAAI,mBAAoBp7F,EAAEwuC,qBAAqBzzC,EAAE09P,WAAW,GAAG,mBAAoBz4P,EAAEyuQ,0BAA0B1zQ,EAAE09P,WAAW,OAAO,mBAAoBz4P,EAAEwuC,oBAAoB03C,IAAIjjE,EAAE+sP,eAAengM,IAAI5sD,EAAEmpO,gBAAgBrxP,EAAE09P,WAAW,GAAG,mBAAoBz4P,EAAEyuQ,yBAAyBvoL,IAAIjjE,EAAE+sP,eAAengM,IAAI5sD,EAAEmpO,gBAAgBrxP,EAAE09P,WAAW,KAAK19P,EAAEi1Q,cAClfl1Q,EAAEC,EAAEqxP,cAAcrsP,GAAGC,EAAEkX,MAAMpc,EAAEkF,EAAEutB,MAAMxtB,EAAEC,EAAE4pK,QAAQxuE,EAAEtgG,EAAEyR,IAAI,mBAAoBvM,EAAEwuC,oBAAoB03C,IAAIjjE,EAAE+sP,eAAengM,IAAI5sD,EAAEmpO,gBAAgBrxP,EAAE09P,WAAW,GAAG,mBAAoBz4P,EAAEyuQ,yBAAyBvoL,IAAIjjE,EAAE+sP,eAAengM,IAAI5sD,EAAEmpO,gBAAgBrxP,EAAE09P,WAAW,KAAK39P,GAAE,GAAI,OAAO+4Q,GAAG5wP,EAAEloB,EAAE0R,EAAE3R,EAAEgF,EAAEmB,GACtS,SAAS4yQ,GAAG5wP,EAAEloB,EAAE0R,EAAE3R,EAAEmG,EAAEnB,GAAG2zQ,GAAGxwP,EAAEloB,GAAG,IAAIiF,EAAE,IAAiB,GAAZjF,EAAE09P,WAAc,IAAI39P,IAAIkF,EAAE,OAAOiB,GAAGynQ,GAAG3tQ,EAAE0R,GAAE,GAAI4mQ,GAAGpwP,EAAEloB,EAAE+E,GAAGhF,EAAEC,EAAEy5P,UAAU0e,GAAG/yO,QAAQplC,EAAE,IAAImrF,EAAElmF,GAAG,mBAAoByM,EAAE0xM,yBAAyB,KAAKrjN,EAAE86B,SAA2I,OAAlI76B,EAAE09P,WAAW,EAAE,OAAOx1O,GAAGjjB,GAAGjF,EAAE4rB,MAAMyoP,GAAGr0Q,EAAEkoB,EAAE0D,MAAM,KAAK7mB,GAAG/E,EAAE4rB,MAAMyoP,GAAGr0Q,EAAE,KAAKmrF,EAAEpmF,IAAI8jM,GAAE3gL,EAAEloB,EAAEmrF,EAAEpmF,GAAG/E,EAAEqxP,cAActxP,EAAEyyB,MAAMtsB,GAAGynQ,GAAG3tQ,EAAE0R,GAAE,GAAW1R,EAAE4rB,MAAM,SAASmtP,GAAG7wP,GAAG,IAAIloB,EAAEkoB,EAAEuxO,UAAUz5P,EAAEg5Q,eAAezL,GAAGrlP,EAAEloB,EAAEg5Q,eAAeh5Q,EAAEg5Q,iBAAiBh5Q,EAAE6uK,SAAS7uK,EAAE6uK,SAAS0+F,GAAGrlP,EAAEloB,EAAE6uK,SAAQ,GAAI+lG,GAAG1sP,EAAEloB,EAAEs/P,eACpe,IAOob2Z,GAAMC,GAAGC,GAPzbC,GAAG,CAACxb,WAAW,KAAKyb,UAAU,GAClC,SAASC,GAAGpxP,EAAEloB,EAAE0R,GAAG,IAA+Cy5E,EAA3CprF,EAAEC,EAAEsgD,KAAKp6C,EAAElG,EAAE+3Q,aAAahzQ,EAAE+0J,GAAE10H,QAAQngC,GAAE,EAAuN,IAAjNkmF,EAAE,IAAiB,GAAZnrF,EAAE09P,cAAiBvyK,EAAE,IAAO,EAAFpmF,KAAO,OAAOmjB,GAAG,OAAOA,EAAEmpO,gBAAgBlmK,GAAGlmF,GAAE,EAAGjF,EAAE09P,YAAY,IAAI,OAAOx1O,GAAG,OAAOA,EAAEmpO,oBAAe,IAASnrP,EAAEqzQ,WAAU,IAAKrzQ,EAAEszQ,6BAA6Bz0Q,GAAG,GAAGqpI,GAAE0rB,GAAI,EAAF/0J,GAAU,OAAOmjB,EAAE,CAA4B,QAA3B,IAAShiB,EAAEqzQ,UAAUvB,GAAGh4Q,GAAMiF,EAAE,CAA6C,GAA5CA,EAAEiB,EAAEqzQ,UAASrzQ,EAAEkuQ,GAAG,KAAKr0Q,EAAE,EAAE,OAAQ65P,OAAO55P,EAAK,IAAY,EAAPA,EAAEsgD,MAAQ,IAAIp4B,EAAE,OAAOloB,EAAEqxP,cAAcrxP,EAAE4rB,MAAMA,MAAM5rB,EAAE4rB,MAAM1lB,EAAE0lB,MAAM1D,EAAE,OAAOA,GAAGA,EAAE0xO,OAAO1zP,EAAEgiB,EAAEA,EAAEooJ,QAC7a,OADqb5+J,EAAE0iQ,GAAGnvQ,EAAElF,EAAE2R,EAAE,OAAQkoP,OACnf55P,EAAEkG,EAAEoqK,QAAQ5+J,EAAE1R,EAAEqxP,cAAc+nB,GAAGp5Q,EAAE4rB,MAAM1lB,EAASwL,EAAoC,OAAlC3R,EAAEmG,EAAEogB,SAAStmB,EAAEqxP,cAAc,KAAYrxP,EAAE4rB,MAAM0oP,GAAGt0Q,EAAE,KAAKD,EAAE2R,GAAG,GAAG,OAAOwW,EAAEmpO,cAAc,CAAuB,GAAZtxP,GAAVmoB,EAAEA,EAAE0D,OAAU0kJ,QAAWrrK,EAAE,CAAkD,GAAjDiB,EAAEA,EAAEqzQ,UAAS7nQ,EAAEuiQ,GAAG/rP,EAAEA,EAAE6vP,eAAkBne,OAAO55P,EAAK,IAAY,EAAPA,EAAEsgD,QAAUr7C,EAAE,OAAOjF,EAAEqxP,cAAcrxP,EAAE4rB,MAAMA,MAAM5rB,EAAE4rB,SAAU1D,EAAE0D,MAAO,IAAIla,EAAEka,MAAM3mB,EAAE,OAAOA,GAAGA,EAAE20P,OAAOloP,EAAEzM,EAAEA,EAAEqrK,QAA+G,OAAvGvwK,EAAEk0Q,GAAGl0Q,EAAEmG,EAAEnG,EAAE6wQ,iBAAkBhX,OAAO55P,EAAE0R,EAAE4+J,QAAQvwK,EAAE2R,EAAE++P,oBAAoB,EAAEzwQ,EAAEqxP,cAAc+nB,GAAGp5Q,EAAE4rB,MAAMla,EAAS3R,EACpc,OADsc2R,EAAE2iQ,GAAGr0Q,EAAEkoB,EAAE0D,MAAM1lB,EAAEogB,SAAS5U,GAAG1R,EAAEqxP,cAC1e,KAAYrxP,EAAE4rB,MAAMla,EAAY,GAAVwW,EAAEA,EAAE0D,MAAS3mB,EAAE,CAA8E,GAA7EA,EAAEiB,EAAEqzQ,UAASrzQ,EAAEkuQ,GAAG,KAAKr0Q,EAAE,EAAE,OAAQ65P,OAAO55P,EAAEkG,EAAE0lB,MAAM1D,EAAE,OAAOA,IAAIA,EAAE0xO,OAAO1zP,GAAM,IAAY,EAAPlG,EAAEsgD,MAAQ,IAAIp4B,EAAE,OAAOloB,EAAEqxP,cAAcrxP,EAAE4rB,MAAMA,MAAM5rB,EAAE4rB,MAAM1lB,EAAE0lB,MAAM1D,EAAE,OAAOA,GAAGA,EAAE0xO,OAAO1zP,EAAEgiB,EAAEA,EAAEooJ,QAAoH,OAA5G5+J,EAAE0iQ,GAAGnvQ,EAAElF,EAAE2R,EAAE,OAAQkoP,OAAO55P,EAAEkG,EAAEoqK,QAAQ5+J,EAAEA,EAAEgsP,WAAW,EAAEx3P,EAAEuqQ,oBAAoB,EAAEzwQ,EAAEqxP,cAAc+nB,GAAGp5Q,EAAE4rB,MAAM1lB,EAASwL,EAAuB,OAArB1R,EAAEqxP,cAAc,KAAYrxP,EAAE4rB,MAAMyoP,GAAGr0Q,EAAEkoB,EAAEhiB,EAAEogB,SAAS5U,GAC9Y,SAAS+nQ,GAAGvxP,EAAEloB,GAAGkoB,EAAE0oP,eAAe5wQ,IAAIkoB,EAAE0oP,eAAe5wQ,GAAG,IAAI0R,EAAEwW,EAAEu1O,UAAU,OAAO/rP,GAAGA,EAAEk/P,eAAe5wQ,IAAI0R,EAAEk/P,eAAe5wQ,GAAGwwQ,GAAGtoP,EAAE0xO,OAAO55P,GAAG,SAAS05Q,GAAGxxP,EAAEloB,EAAE0R,EAAE3R,EAAEmG,EAAEnB,GAAG,IAAIE,EAAEijB,EAAEmpO,cAAc,OAAOpsP,EAAEijB,EAAEmpO,cAAc,CAACsoB,YAAY35Q,EAAE45Q,UAAU,KAAK7pO,KAAKhwC,EAAE85Q,KAAKnoQ,EAAEooQ,eAAe,EAAEC,SAAS7zQ,EAAEsrQ,WAAWzsQ,IAAIE,EAAE00Q,YAAY35Q,EAAEiF,EAAE20Q,UAAU,KAAK30Q,EAAE8qC,KAAKhwC,EAAEkF,EAAE40Q,KAAKnoQ,EAAEzM,EAAE60Q,eAAe,EAAE70Q,EAAE80Q,SAAS7zQ,EAAEjB,EAAEusQ,WAAWzsQ,GAC7Y,SAASi1Q,GAAG9xP,EAAEloB,EAAE0R,GAAG,IAAI3R,EAAEC,EAAE+3Q,aAAa7xQ,EAAEnG,EAAEm1Q,YAAYnwQ,EAAEhF,EAAE85Q,KAAqC,GAAhChxE,GAAE3gL,EAAEloB,EAAED,EAAEumB,SAAS5U,GAAkB,IAAO,GAAtB3R,EAAE+5J,GAAE10H,UAAqBrlC,EAAI,EAAFA,EAAI,EAAEC,EAAE09P,WAAW,OAAO,CAAC,GAAG,OAAOx1O,GAAG,IAAiB,GAAZA,EAAEw1O,WAAcx1O,EAAE,IAAIA,EAAEloB,EAAE4rB,MAAM,OAAO1D,GAAG,CAAC,GAAG,KAAKA,EAAE1B,IAAI,OAAO0B,EAAEmpO,eAAeooB,GAAGvxP,EAAExW,QAAQ,GAAG,KAAKwW,EAAE1B,IAAIizP,GAAGvxP,EAAExW,QAAQ,GAAG,OAAOwW,EAAE0D,MAAM,CAAC1D,EAAE0D,MAAMguO,OAAO1xO,EAAEA,EAAEA,EAAE0D,MAAM,SAAS,GAAG1D,IAAIloB,EAAE,MAAMkoB,EAAE,KAAK,OAAOA,EAAEooJ,SAAS,CAAC,GAAG,OAAOpoJ,EAAE0xO,QAAQ1xO,EAAE0xO,SAAS55P,EAAE,MAAMkoB,EAAEA,EAAEA,EAAE0xO,OAAO1xO,EAAEooJ,QAAQspF,OAAO1xO,EAAE0xO,OAAO1xO,EAAEA,EAAEooJ,QAAQvwK,GAAG,EAAW,GAATquI,GAAE0rB,GAAE/5J,GAAQ,IAAY,EAAPC,EAAEsgD,MAAQtgD,EAAEqxP,cAClf,UAAU,OAAOnrP,GAAG,IAAK,WAAqB,IAAVwL,EAAE1R,EAAE4rB,MAAU1lB,EAAE,KAAK,OAAOwL,GAAiB,QAAdwW,EAAExW,EAAE+rP,YAAoB,OAAOuX,GAAG9sP,KAAKhiB,EAAEwL,GAAGA,EAAEA,EAAE4+J,QAAY,QAAJ5+J,EAAExL,IAAYA,EAAElG,EAAE4rB,MAAM5rB,EAAE4rB,MAAM,OAAO1lB,EAAEwL,EAAE4+J,QAAQ5+J,EAAE4+J,QAAQ,MAAMopG,GAAG15Q,GAAE,EAAGkG,EAAEwL,EAAE3M,EAAE/E,EAAEwxQ,YAAY,MAAM,IAAK,YAA6B,IAAjB9/P,EAAE,KAAKxL,EAAElG,EAAE4rB,MAAU5rB,EAAE4rB,MAAM,KAAK,OAAO1lB,GAAG,CAAe,GAAG,QAAjBgiB,EAAEhiB,EAAEu3P,YAAuB,OAAOuX,GAAG9sP,GAAG,CAACloB,EAAE4rB,MAAM1lB,EAAE,MAAMgiB,EAAEhiB,EAAEoqK,QAAQpqK,EAAEoqK,QAAQ5+J,EAAEA,EAAExL,EAAEA,EAAEgiB,EAAEwxP,GAAG15Q,GAAE,EAAG0R,EAAE,KAAK3M,EAAE/E,EAAEwxQ,YAAY,MAAM,IAAK,WAAWkI,GAAG15Q,GAAE,EAAG,KAAK,UAAK,EAAOA,EAAEwxQ,YAAY,MAAM,QAAQxxQ,EAAEqxP,cAAc,KAAK,OAAOrxP,EAAE4rB,MAC/f,SAAS0sP,GAAGpwP,EAAEloB,EAAE0R,GAAG,OAAOwW,IAAIloB,EAAEk5P,aAAahxO,EAAEgxO,cAAc,IAAIn5P,EAAEC,EAAE4wQ,eAA4B,GAAb,IAAI7wQ,GAAGyyQ,GAAGzyQ,GAAMC,EAAEywQ,oBAAoB/+P,EAAE,OAAO,KAAK,GAAG,OAAOwW,GAAGloB,EAAE4rB,QAAQ1D,EAAE0D,MAAM,MAAM7qB,MAAMm5J,EAAE,MAAM,GAAG,OAAOl6J,EAAE4rB,MAAM,CAA6D,IAAlDla,EAAEuiQ,GAAZ/rP,EAAEloB,EAAE4rB,MAAa1D,EAAE6vP,aAAa7vP,EAAE0oP,gBAAgB5wQ,EAAE4rB,MAAMla,EAAMA,EAAEkoP,OAAO55P,EAAE,OAAOkoB,EAAEooJ,SAASpoJ,EAAEA,EAAEooJ,SAAQ5+J,EAAEA,EAAE4+J,QAAQ2jG,GAAG/rP,EAAEA,EAAE6vP,aAAa7vP,EAAE0oP,iBAAkBhX,OAAO55P,EAAE0R,EAAE4+J,QAAQ,KAAK,OAAOtwK,EAAE4rB,MAAM,SAASquP,GAAG/xP,GAAGA,EAAEw1O,WAAW,EAK9a,SAASwc,GAAGhyP,EAAEloB,GAAG,OAAOkoB,EAAE6xP,UAAU,IAAK,SAAS/5Q,EAAEkoB,EAAE2xP,KAAK,IAAI,IAAInoQ,EAAE,KAAK,OAAO1R,GAAG,OAAOA,EAAEy9P,YAAY/rP,EAAE1R,GAAGA,EAAEA,EAAEswK,QAAQ,OAAO5+J,EAAEwW,EAAE2xP,KAAK,KAAKnoQ,EAAE4+J,QAAQ,KAAK,MAAM,IAAK,YAAY5+J,EAAEwW,EAAE2xP,KAAK,IAAI,IAAI95Q,EAAE,KAAK,OAAO2R,GAAG,OAAOA,EAAE+rP,YAAY19P,EAAE2R,GAAGA,EAAEA,EAAE4+J,QAAQ,OAAOvwK,EAAEC,GAAG,OAAOkoB,EAAE2xP,KAAK3xP,EAAE2xP,KAAK,KAAK3xP,EAAE2xP,KAAKvpG,QAAQ,KAAKvwK,EAAEuwK,QAAQ,MACjU,SAAS6pG,GAAGjyP,GAAG,OAAOA,EAAE1B,KAAK,KAAK,EAAE6jJ,GAAEniJ,EAAExb,OAAO2gQ,KAAM,IAAIrtQ,EAAEkoB,EAAEw1O,UAAU,OAAS,KAAF19P,GAAQkoB,EAAEw1O,WAAa,KAAH19P,EAAQ,GAAGkoB,GAAG,KAAK,KAAK,EAA4B,GAA1B2sP,KAAMvH,KAAuB,IAAO,IAAxBttQ,EAAEkoB,EAAEw1O,YAAwB,MAAM38P,MAAMm5J,EAAE,MAA6B,OAAvBhyI,EAAEw1O,WAAa,KAAH19P,EAAQ,GAAUkoB,EAAE,KAAK,EAAE,OAAO6sP,GAAG7sP,GAAG,KAAK,KAAK,GAAG,OAAO8lH,GAAE8rB,IAAqB,MAAhB95J,EAAEkoB,EAAEw1O,YAAkBx1O,EAAEw1O,WAAa,KAAH19P,EAAQ,GAAGkoB,GAAG,KAAK,KAAK,GAAG,OAAO8lH,GAAE8rB,IAAK,KAAK,KAAK,EAAE,OAAO+6G,KAAM,KAAK,KAAK,GAAG,OAAOtE,GAAGroP,GAAG,KAAK,QAAQ,OAAO,MAAM,SAASkyP,GAAGlyP,EAAEloB,GAAG,MAAM,CAAC+F,MAAMmiB,EAAExO,OAAO1Z,EAAE2pB,MAAM4sO,EAAGv2P,IALjdi5Q,GAAG,SAAS/wP,EAAEloB,GAAG,IAAI,IAAI0R,EAAE1R,EAAE4rB,MAAM,OAAOla,GAAG,CAAC,GAAG,IAAIA,EAAE8U,KAAK,IAAI9U,EAAE8U,IAAI0B,EAAEitC,YAAYzjD,EAAE+nP,gBAAgB,GAAG,IAAI/nP,EAAE8U,KAAK,OAAO9U,EAAEka,MAAM,CAACla,EAAEka,MAAMguO,OAAOloP,EAAEA,EAAEA,EAAEka,MAAM,SAAS,GAAGla,IAAI1R,EAAE,MAAM,KAAK,OAAO0R,EAAE4+J,SAAS,CAAC,GAAG,OAAO5+J,EAAEkoP,QAAQloP,EAAEkoP,SAAS55P,EAAE,OAAO0R,EAAEA,EAAEkoP,OAAOloP,EAAE4+J,QAAQspF,OAAOloP,EAAEkoP,OAAOloP,EAAEA,EAAE4+J,UAChS4oG,GAAG,SAAShxP,EAAEloB,EAAE0R,EAAE3R,EAAEmG,GAAG,IAAInB,EAAEmjB,EAAE+sP,cAAc,GAAGlwQ,IAAIhF,EAAE,CAAC,IAAsWorF,EAAErW,EAApW7vE,EAAEjF,EAAEy5P,UAAgC,OAAtBkb,GAAGH,GAAGpvO,SAASld,EAAE,KAAYxW,GAAG,IAAK,QAAQ3M,EAAEm2P,GAAGj2P,EAAEF,GAAGhF,EAAEm7P,GAAGj2P,EAAElF,GAAGmoB,EAAE,GAAG,MAAM,IAAK,SAASnjB,EAAE42P,GAAG12P,EAAEF,GAAGhF,EAAE47P,GAAG12P,EAAElF,GAAGmoB,EAAE,GAAG,MAAM,IAAK,SAASnjB,EAAExD,EAAE,GAAGwD,EAAE,CAACgB,WAAM,IAAShG,EAAEwB,EAAE,GAAGxB,EAAE,CAACgG,WAAM,IAASmiB,EAAE,GAAG,MAAM,IAAK,WAAWnjB,EAAEg3P,GAAG92P,EAAEF,GAAGhF,EAAEg8P,GAAG92P,EAAElF,GAAGmoB,EAAE,GAAG,MAAM,QAAQ,mBAAoBnjB,EAAEkjC,SAAS,mBAAoBloC,EAAEkoC,UAAUhjC,EAAEo1Q,QAAQxT,IAA2B,IAAI17K,KAA3Bu7K,GAAGh1P,EAAE3R,GAAW2R,EAAE,KAAc3M,EAAE,IAAIhF,EAAEG,eAAeirF,IAAIpmF,EAAE7E,eAAeirF,IAAI,MAAMpmF,EAAEomF,GAAG,GAAG,UAC/eA,EAAE,IAAIrW,KAAK7vE,EAAEF,EAAEomF,GAAKlmF,EAAE/E,eAAe40E,KAAKpjE,IAAIA,EAAE,IAAIA,EAAEojE,GAAG,QAAQ,4BAA4BqW,GAAG,aAAaA,GAAG,mCAAmCA,GAAG,6BAA6BA,GAAG,cAAcA,IAAIokK,EAAGrvP,eAAeirF,GAAGjjE,IAAIA,EAAE,KAAKA,EAAEA,GAAG,IAAIjiB,KAAKklF,EAAE,OAAO,IAAIA,KAAKprF,EAAE,CAAC,IAAIsgG,EAAEtgG,EAAEorF,GAAyB,GAAtBlmF,EAAE,MAAMF,EAAEA,EAAEomF,QAAG,EAAUprF,EAAEG,eAAeirF,IAAIkV,IAAIp7F,IAAI,MAAMo7F,GAAG,MAAMp7F,GAAG,GAAG,UAAUkmF,EAAE,GAAGlmF,EAAE,CAAC,IAAI6vE,KAAK7vE,GAAGA,EAAE/E,eAAe40E,IAAIurB,GAAGA,EAAEngG,eAAe40E,KAAKpjE,IAAIA,EAAE,IAAIA,EAAEojE,GAAG,IAAI,IAAIA,KAAKurB,EAAEA,EAAEngG,eAAe40E,IAAI7vE,EAAE6vE,KAAKurB,EAAEvrB,KAAKpjE,IAAIA,EAAE,IACpfA,EAAEojE,GAAGurB,EAAEvrB,SAASpjE,IAAIwW,IAAIA,EAAE,IAAIA,EAAEjiB,KAAKklF,EAAEz5E,IAAIA,EAAE2uF,MAAM,4BAA4BlV,GAAGkV,EAAEA,EAAEA,EAAEk4J,YAAO,EAAOtzP,EAAEA,EAAEA,EAAEszP,YAAO,EAAO,MAAMl4J,GAAGp7F,IAAIo7F,IAAIn4E,EAAEA,GAAG,IAAIjiB,KAAKklF,EAAE,GAAGkV,IAAI,aAAalV,EAAElmF,IAAIo7F,GAAG,iBAAkBA,GAAG,iBAAkBA,IAAIn4E,EAAEA,GAAG,IAAIjiB,KAAKklF,EAAE,GAAGkV,GAAG,mCAAmClV,GAAG,6BAA6BA,IAAIokK,EAAGrvP,eAAeirF,IAAI,MAAMkV,GAAGumK,GAAG1gQ,EAAEilF,GAAGjjE,GAAGjjB,IAAIo7F,IAAIn4E,EAAE,MAAMA,EAAEA,GAAG,IAAIjiB,KAAKklF,EAAEkV,IAAI3uF,IAAIwW,EAAEA,GAAG,IAAIjiB,KAAK,QAAQyL,GAAGxL,EAAEgiB,GAAGloB,EAAEkyQ,YAAYhsQ,IAAI+zQ,GAAGj6Q,KAAKm5Q,GAAG,SAASjxP,EAAEloB,EAAE0R,EAAE3R,GAAG2R,IAAI3R,GAAGk6Q,GAAGj6Q,IAGze,IAAIs6Q,GAAG,mBAAoBvyE,QAAQA,QAAQR,IAAI,SAASgzE,GAAGryP,EAAEloB,GAAG,IAAI0R,EAAE1R,EAAE0Z,OAAO3Z,EAAEC,EAAE2pB,MAAM,OAAO5pB,GAAG,OAAO2R,IAAI3R,EAAEw2P,EAAG7kP,IAAI,OAAOA,GAAGykP,EAAGzkP,EAAEhF,MAAM1M,EAAEA,EAAE+F,MAAM,OAAOmiB,GAAG,IAAIA,EAAE1B,KAAK2vO,EAAGjuO,EAAExb,MAAM,IAAInE,QAAQlB,MAAMrH,GAAG,MAAMkG,GAAG+K,YAAW,WAAW,MAAM/K,MAAsH,SAASs0Q,GAAGtyP,GAAG,IAAIloB,EAAEkoB,EAAEiV,IAAI,GAAG,OAAOn9B,EAAE,GAAG,mBAAoBA,EAAE,IAAIA,EAAE,MAAM,MAAM0R,GAAG+oQ,GAAGvyP,EAAExW,QAAQ1R,EAAEolC,QAAQ,KACld,SAASs1O,GAAGxyP,EAAEloB,GAAG,OAAOA,EAAEwmB,KAAK,KAAK,EAAE,KAAK,GAAG,KAAK,GAAGm0P,GAAG,EAAE,EAAE36Q,GAAG,MAAM,KAAK,EAAE,GAAe,IAAZA,EAAE09P,WAAe,OAAOx1O,EAAE,CAAC,IAAIxW,EAAEwW,EAAE+sP,cAAcl1Q,EAAEmoB,EAAEmpO,cAA4BrxP,GAAdkoB,EAAEloB,EAAEy5P,WAAcia,wBAAwB1zQ,EAAEmsP,cAAcnsP,EAAE0M,KAAKgF,EAAEq+P,GAAG/vQ,EAAE0M,KAAKgF,GAAG3R,GAAGmoB,EAAE0yP,oCAAoC56Q,EAAE,MAAM,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,GAAG,MAAM,QAAQ,MAAMe,MAAMm5J,EAAE,OACpV,SAASygH,GAAGzyP,EAAEloB,EAAE0R,GAAgD,GAAG,QAAhCA,EAAE,QAAlBA,EAAEA,EAAEwgQ,aAAuBxgQ,EAAE8/P,WAAW,MAAiB,CAAC,IAAIzxQ,EAAE2R,EAAEA,EAAEnM,KAAK,EAAE,CAAC,GAAG,IAAKxF,EAAEymB,IAAI0B,GAAG,CAAC,IAAIhiB,EAAEnG,EAAEokC,QAAQpkC,EAAEokC,aAAQ,OAAO,IAASj+B,GAAGA,IAAI,IAAKnG,EAAEymB,IAAIxmB,KAAKkG,EAAEnG,EAAEQ,OAAOR,EAAEokC,QAAQj+B,KAAKnG,EAAEA,EAAEwF,WAAWxF,IAAI2R,IAC/N,SAASmpQ,GAAG3yP,EAAEloB,EAAE0R,GAAiC,OAA9B,mBAAoBopQ,IAAIA,GAAG96Q,GAAUA,EAAEwmB,KAAK,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,GAAmB,GAAG,QAAnB0B,EAAEloB,EAAEkyQ,cAAyC,QAAfhqP,EAAEA,EAAEspP,YAAqB,CAAC,IAAIzxQ,EAAEmoB,EAAE3iB,KAAKiqQ,GAAG,GAAG99P,EAAE,GAAGA,GAAE,WAAW,IAAIwW,EAAEnoB,EAAE,EAAE,CAAC,IAAI2R,EAAEwW,EAAEic,QAAQ,QAAG,IAASzyB,EAAE,CAAC,IAAIzM,EAAEjF,EAAE,IAAI0R,IAAI,MAAMy5E,GAAGsvL,GAAGx1Q,EAAEkmF,IAAIjjE,EAAEA,EAAE3iB,WAAW2iB,IAAInoB,MAAK,MAAM,KAAK,EAAEy6Q,GAAGx6Q,GAAiB,mBAAd0R,EAAE1R,EAAEy5P,WAAgC/0N,sBAHhG,SAAYxc,EAAEloB,GAAG,IAAIA,EAAEmc,MAAM+L,EAAE+sP,cAAcj1Q,EAAEwyB,MAAMtK,EAAEmpO,cAAcrxP,EAAE0kC,uBAAuB,MAAMhzB,GAAG+oQ,GAAGvyP,EAAExW,IAGUqpQ,CAAG/6Q,EAAE0R,GAAG,MAAM,KAAK,EAAE8oQ,GAAGx6Q,GAAG,MAAM,KAAK,EAAEg7Q,GAAG9yP,EAAEloB,EAAE0R,IAC3Z,SAASupQ,GAAG/yP,GAAG,IAAIloB,EAAEkoB,EAAEu1O,UAAUv1O,EAAE0xO,OAAO,KAAK1xO,EAAE0D,MAAM,KAAK1D,EAAEmpO,cAAc,KAAKnpO,EAAEgqP,YAAY,KAAKhqP,EAAEgxO,aAAa,KAAKhxO,EAAEu1O,UAAU,KAAKv1O,EAAEqpP,YAAY,KAAKrpP,EAAEspP,WAAW,KAAKtpP,EAAE6vP,aAAa,KAAK7vP,EAAE+sP,cAAc,KAAK,OAAOj1Q,GAAGi7Q,GAAGj7Q,GAAG,SAASk7Q,GAAGhzP,GAAG,OAAO,IAAIA,EAAE1B,KAAK,IAAI0B,EAAE1B,KAAK,IAAI0B,EAAE1B,IACzR,SAAS20P,GAAGjzP,GAAGA,EAAE,CAAC,IAAI,IAAIloB,EAAEkoB,EAAE0xO,OAAO,OAAO55P,GAAG,CAAC,GAAGk7Q,GAAGl7Q,GAAG,CAAC,IAAI0R,EAAE1R,EAAE,MAAMkoB,EAAEloB,EAAEA,EAAE45P,OAAO,MAAM74P,MAAMm5J,EAAE,MAAqB,OAAdl6J,EAAE0R,EAAE+nP,UAAiB/nP,EAAE8U,KAAK,KAAK,EAAE,IAAIzmB,GAAE,EAAG,MAAM,KAAK,EAA+B,KAAK,EAAEC,EAAEA,EAAEs/P,cAAcv/P,GAAE,EAAG,MAAM,QAAQ,MAAMgB,MAAMm5J,EAAE,MAAmB,GAAZxoJ,EAAEgsP,YAAehB,GAAG18P,EAAE,IAAI0R,EAAEgsP,YAAY,IAAIx1O,EAAEloB,EAAE,IAAI0R,EAAEwW,IAAI,CAAC,KAAK,OAAOxW,EAAE4+J,SAAS,CAAC,GAAG,OAAO5+J,EAAEkoP,QAAQshB,GAAGxpQ,EAAEkoP,QAAQ,CAACloP,EAAE,KAAK,MAAMwW,EAAExW,EAAEA,EAAEkoP,OAAiC,IAA1BloP,EAAE4+J,QAAQspF,OAAOloP,EAAEkoP,OAAWloP,EAAEA,EAAE4+J,QAAQ,IAAI5+J,EAAE8U,KAAK,IAAI9U,EAAE8U,KAAK,KAAK9U,EAAE8U,KAAK,CAAC,GAAe,EAAZ9U,EAAEgsP,UAAY,SAAS19P,EACvf,GAAG,OAAO0R,EAAEka,OAAO,IAAIla,EAAE8U,IAAI,SAASxmB,EAAO0R,EAAEka,MAAMguO,OAAOloP,EAAEA,EAAEA,EAAEka,MAAM,KAAiB,EAAZla,EAAEgsP,WAAa,CAAChsP,EAAEA,EAAE+nP,UAAU,MAAMvxO,GAAG,IAAI,IAAIhiB,EAAEgiB,IAAI,CAAC,IAAInjB,EAAE,IAAImB,EAAEsgB,KAAK,IAAItgB,EAAEsgB,IAAI,GAAGzhB,EAAE,CAAC,IAAIE,EAAEF,EAAEmB,EAAEuzP,UAAUvzP,EAAEuzP,UAAU/2P,SAAS,GAAGgP,EAAE,GAAG3R,EAAE,CAAK,IAAIorF,EAAElmF,EAAEA,EAAEyM,EAAE,KAAhB3M,EAAE/E,GAAoBgsG,SAASjnG,EAAEopC,WAAWpiB,aAAao/D,EAAElmF,GAAGF,EAAEgnB,aAAao/D,EAAElmF,QAAQjF,EAAE+rB,aAAa9mB,EAAEyM,QAAQ3R,GAAO,KAAJorF,EAAEnrF,GAAQgsG,UAAUjnG,EAAEomF,EAAEh9C,YAAapiB,aAAa9mB,EAAEkmF,IAAKpmF,EAAEomF,GAAIh2B,YAAYlwD,GAA4B,OAAxBkmF,EAAEA,EAAEiwL,sBAA0C,OAAOr2Q,EAAEs1Q,UAAUt1Q,EAAEs1Q,QAAQxT,KAAK7mQ,EAAEm1D,YAAYlwD,QAAQ,GAAG,IACngBiB,EAAEsgB,KAAK,OAAOtgB,EAAE0lB,MAAM,CAAC1lB,EAAE0lB,MAAMguO,OAAO1zP,EAAEA,EAAEA,EAAE0lB,MAAM,SAAS,GAAG1lB,IAAIgiB,EAAE,MAAM,KAAK,OAAOhiB,EAAEoqK,SAAS,CAAC,GAAG,OAAOpqK,EAAE0zP,QAAQ1zP,EAAE0zP,SAAS1xO,EAAE,OAAOhiB,EAAEA,EAAE0zP,OAAO1zP,EAAEoqK,QAAQspF,OAAO1zP,EAAE0zP,OAAO1zP,EAAEA,EAAEoqK,SACnL,SAAS0qG,GAAG9yP,EAAEloB,EAAE0R,GAAG,IAAI,IAAa3M,EAAEE,EAAXlF,EAAEC,EAAEkG,GAAE,IAAS,CAAC,IAAIA,EAAE,CAACA,EAAEnG,EAAE65P,OAAO1xO,EAAE,OAAO,CAAC,GAAG,OAAOhiB,EAAE,MAAMnF,MAAMm5J,EAAE,MAAoB,OAAdn1J,EAAEmB,EAAEuzP,UAAiBvzP,EAAEsgB,KAAK,KAAK,EAAEvhB,GAAE,EAAG,MAAMijB,EAAE,KAAK,EAAiC,KAAK,EAAEnjB,EAAEA,EAAEu6P,cAAcr6P,GAAE,EAAG,MAAMijB,EAAEhiB,EAAEA,EAAE0zP,OAAO1zP,GAAE,EAAG,GAAG,IAAInG,EAAEymB,KAAK,IAAIzmB,EAAEymB,IAAI,CAAC0B,EAAE,IAAI,IAAIijE,EAAEjjE,EAAE4sD,EAAE/0E,EAAEsgG,EAAE3uF,EAAEF,EAAEsjE,IAAI,GAAG+lM,GAAG1vL,EAAE35E,EAAE6uF,GAAG,OAAO7uF,EAAEoa,OAAO,IAAIpa,EAAEgV,IAAIhV,EAAEoa,MAAMguO,OAAOpoP,EAAEA,EAAEA,EAAEoa,UAAU,CAAC,GAAGpa,IAAIsjE,EAAE,MAAM,KAAK,OAAOtjE,EAAE8+J,SAAS,CAAC,GAAG,OAAO9+J,EAAEooP,QAAQpoP,EAAEooP,SAAS9kL,EAAE,MAAM5sD,EAAE1W,EAAEA,EAAEooP,OAAOpoP,EAAE8+J,QAAQspF,OAAOpoP,EAAEooP,OAAOpoP,EAAEA,EAAE8+J,QAAQrrK,GAAGkmF,EACnfpmF,EAAE+vE,EAAE/0E,EAAE05P,UAAU,IAAItuK,EAAE6gB,SAAS7gB,EAAEh9C,WAAW4uB,YAAY+X,GAAGqW,EAAEpuB,YAAY+X,IAAI/vE,EAAEg4D,YAAYh9D,EAAE05P,gBAAgB,GAAG,IAAI15P,EAAEymB,KAAK,GAAG,OAAOzmB,EAAE6rB,MAAM,CAAC7mB,EAAEhF,EAAE05P,UAAU6F,cAAcr6P,GAAE,EAAGlF,EAAE6rB,MAAMguO,OAAO75P,EAAEA,EAAEA,EAAE6rB,MAAM,eAAe,GAAGivP,GAAG3yP,EAAEnoB,EAAE2R,GAAG,OAAO3R,EAAE6rB,MAAM,CAAC7rB,EAAE6rB,MAAMguO,OAAO75P,EAAEA,EAAEA,EAAE6rB,MAAM,SAAS,GAAG7rB,IAAIC,EAAE,MAAM,KAAK,OAAOD,EAAEuwK,SAAS,CAAC,GAAG,OAAOvwK,EAAE65P,QAAQ75P,EAAE65P,SAAS55P,EAAE,OAAkB,KAAXD,EAAEA,EAAE65P,QAAapzO,MAAMtgB,GAAE,GAAInG,EAAEuwK,QAAQspF,OAAO75P,EAAE65P,OAAO75P,EAAEA,EAAEuwK,SACpa,SAAS+qG,GAAGnzP,EAAEloB,GAAG,OAAOA,EAAEwmB,KAAK,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,GAAGm0P,GAAG,EAAE,EAAE36Q,GAAG,MAAM,KAAK,EACwV,KAAK,GAExP,KAAK,GAAS,KAAK,GAAS,KAAK,GAAG,MAHjI,KAAK,EAAE,IAAI0R,EAAE1R,EAAEy5P,UAAU,GAAG,MAAM/nP,EAAE,CAAC,IAAI3R,EAAEC,EAAEi1Q,cAAc/uQ,EAAE,OAAOgiB,EAAEA,EAAE+sP,cAAcl1Q,EAAEmoB,EAAEloB,EAAE0M,KAAK,IAAI3H,EAAE/E,EAAEkyQ,YAA+B,GAAnBlyQ,EAAEkyQ,YAAY,KAAQ,OAAOntQ,EAAE,CAAgF,IAA/E2M,EAAEu2P,IAAIloQ,EAAE,UAAUmoB,GAAG,UAAUnoB,EAAE2M,MAAM,MAAM3M,EAAE+C,MAAMy4P,GAAG7pP,EAAE3R,GAAG4mQ,GAAGz+O,EAAEhiB,GAAGlG,EAAE2mQ,GAAGz+O,EAAEnoB,GAAOmG,EAAE,EAAEA,EAAEnB,EAAEtD,OAAOyE,GAAG,EAAE,CAAC,IAAIjB,EAAEF,EAAEmB,GAAGilF,EAAEpmF,EAAEmB,EAAE,GAAG,UAAUjB,EAAEuhQ,GAAG90P,EAAEy5E,GAAG,4BAA4BlmF,EAAEs3P,GAAG7qP,EAAEy5E,GAAG,aAAalmF,EAAEy3P,GAAGhrP,EAAEy5E,GAAGuvK,GAAGhpP,EAAEzM,EAAEkmF,EAAEnrF,GAAG,OAAOkoB,GAAG,IAAK,QAAQszO,GAAG9pP,EAAE3R,GAAG,MAAM,IAAK,WAAWk8P,GAAGvqP,EACjgB3R,GAAG,MAAM,IAAK,SAASC,EAAE0R,EAAEypP,cAAcmgB,YAAY5pQ,EAAEypP,cAAcmgB,cAAcv7Q,EAAEm3E,SAAmB,OAAVhvD,EAAEnoB,EAAEgG,OAAc81P,GAAGnqP,IAAI3R,EAAEm3E,SAAShvD,GAAE,GAAIloB,MAAMD,EAAEm3E,WAAW,MAAMn3E,EAAEi1B,aAAa6mO,GAAGnqP,IAAI3R,EAAEm3E,SAASn3E,EAAEi1B,cAAa,GAAI6mO,GAAGnqP,IAAI3R,EAAEm3E,SAASn3E,EAAEm3E,SAAS,GAAG,IAAG,MAAO,MAAM,KAAK,EAAE,GAAG,OAAOl3E,EAAEy5P,UAAU,MAAM14P,MAAMm5J,EAAE,MAAMl6J,EAAEy5P,UAAUnlE,UAAUt0L,EAAEi1Q,cAAc,MAAM,KAAK,GAAEj1Q,EAAEA,EAAEy5P,WAAY4F,UAAUr/P,EAAEq/P,SAAQ,EAAGS,GAAG9/P,EAAEs/P,gBAAgB,MAAoB,KAAK,GAC9b,GADic5tP,EAAE1R,EAAE,OAAOA,EAAEqxP,cAActxP,GAAE,GAAIA,GAAE,EAAG2R,EAAE1R,EAAE4rB,MAAM2vP,GAAGlM,MACjf,OAAO39P,EAAEwW,EAAE,IAAIA,EAAExW,IAAI,CAAC,GAAG,IAAIwW,EAAE1B,IAAIzhB,EAAEmjB,EAAEuxO,UAAU15P,EAAa,mBAAVgF,EAAEA,EAAE4iB,OAA4BuyH,YAAYn1I,EAAEm1I,YAAY,UAAU,OAAO,aAAan1I,EAAE+hD,QAAQ,QAAS/hD,EAAEmjB,EAAEuxO,UAAkCvzP,EAAE,OAA1BA,EAAEgiB,EAAE+sP,cAActtP,QAA8BzhB,EAAEhG,eAAe,WAAWgG,EAAE4gD,QAAQ,KAAK/hD,EAAE4iB,MAAMm/B,QAAQy/M,GAAG,UAAUrgQ,SAAS,GAAG,IAAIgiB,EAAE1B,IAAI0B,EAAEuxO,UAAUnlE,UAAUv0L,EAAE,GAAGmoB,EAAE+sP,kBAAmB,IAAG,KAAK/sP,EAAE1B,KAAK,OAAO0B,EAAEmpO,eAAe,OAAOnpO,EAAEmpO,cAAcuM,WAAW,EAAC74P,EAAEmjB,EAAE0D,MAAM0kJ,SAAUspF,OAAO1xO,EAAEA,EAAEnjB,EAAE,SAAc,GAAG,OAAOmjB,EAAE0D,MAAM,CAAC1D,EAAE0D,MAAMguO,OAClgB1xO,EAAEA,EAAEA,EAAE0D,MAAM,UAAS,GAAG1D,IAAIxW,EAAE,MAAMwW,EAAE,KAAK,OAAOA,EAAEooJ,SAAS,CAAC,GAAG,OAAOpoJ,EAAE0xO,QAAQ1xO,EAAE0xO,SAASloP,EAAE,MAAMwW,EAAEA,EAAEA,EAAE0xO,OAAO1xO,EAAEooJ,QAAQspF,OAAO1xO,EAAE0xO,OAAO1xO,EAAEA,EAAEooJ,QAAQkrG,GAAGx7Q,GAAG,MAAM,KAAK,GAAGw7Q,GAAGx7Q,GAAG,MAAgD,QAAQ,MAAMe,MAAMm5J,EAAE,OAAQ,SAASshH,GAAGtzP,GAAG,IAAIloB,EAAEkoB,EAAEgqP,YAAY,GAAG,OAAOlyQ,EAAE,CAACkoB,EAAEgqP,YAAY,KAAK,IAAIxgQ,EAAEwW,EAAEuxO,UAAU,OAAO/nP,IAAIA,EAAEwW,EAAEuxO,UAAU,IAAI6gB,IAAIt6Q,EAAE0D,SAAQ,SAAS1D,GAAG,IAAID,EAAE07Q,GAAG3qP,KAAK,KAAK5I,EAAEloB,GAAG0R,EAAEugB,IAAIjyB,KAAK0R,EAAE0wD,IAAIpiE,GAAGA,EAAE8G,KAAK/G,EAAEA,QAAO,IAAI27Q,GAAG,mBAAoB5zE,QAAQA,QAAQZ,IACnf,SAASy0E,GAAGzzP,EAAEloB,EAAE0R,IAAGA,EAAEkgQ,GAAGlgQ,EAAE,OAAQ8U,IAAI,EAAE9U,EAAEogQ,QAAQ,CAAC7yP,QAAQ,MAAM,IAAIlf,EAAEC,EAAE+F,MAAsD,OAAhD2L,EAAEpB,SAAS,WAAWsrQ,KAAKA,IAAG,EAAGC,GAAG97Q,GAAGw6Q,GAAGryP,EAAEloB,IAAW0R,EACtI,SAASoqQ,GAAG5zP,EAAEloB,EAAE0R,IAAGA,EAAEkgQ,GAAGlgQ,EAAE,OAAQ8U,IAAI,EAAE,IAAIzmB,EAAEmoB,EAAExb,KAAK02M,yBAAyB,GAAG,mBAAoBrjN,EAAE,CAAC,IAAImG,EAAElG,EAAE+F,MAAM2L,EAAEogQ,QAAQ,WAAmB,OAARyI,GAAGryP,EAAEloB,GAAUD,EAAEmG,IAAI,IAAInB,EAAEmjB,EAAEuxO,UAA8O,OAApO,OAAO10P,GAAG,mBAAoBA,EAAEg3Q,oBAAoBrqQ,EAAEpB,SAAS,WAAW,mBAAoBvQ,IAAI,OAAOi8Q,GAAGA,GAAG,IAAIz0E,IAAI,CAACnnM,OAAO47Q,GAAG55M,IAAIhiE,MAAMm6Q,GAAGryP,EAAEloB,IAAI,IAAI0R,EAAE1R,EAAE2pB,MAAMvpB,KAAK27Q,kBAAkB/7Q,EAAE+F,MAAM,CAACk2Q,eAAe,OAAOvqQ,EAAEA,EAAE,OAAcA,EAC7Z,IA6C8YwqQ,GA7C1YC,GAAGx4P,KAAKuC,KAAKk2P,GAAG3qB,EAAG1B,uBAAuBssB,GAAG5qB,EAAG2mB,kBAAqEn+G,GAAjD,EAAqDi3F,GAAE,KAAKC,GAAE,KAAK1pH,GAAE,EAAEgjC,GAAjD,EAAsD6xG,GAAG,KAAKC,GAAG,WAAWC,GAAG,WAAWC,GAAG,KAAKC,GAAG,EAAEC,IAAG,EAAGpB,GAAG,EAASxhH,GAAE,KAAK6hH,IAAG,EAAGC,GAAG,KAAKG,GAAG,KAAKY,IAAG,EAAGC,GAAG,KAAKC,GAAG,GAAGC,GAAG,KAAKC,GAAG,EAAEC,GAAG,KAAKC,GAAG,EAAE,SAASjK,KAAK,OAAxO,IAAiP,GAAFh5G,IAAe,YAAYo1G,KAAK,GAAG,GAAG,IAAI6N,GAAGA,GAAGA,GAAG,YAAY7N,KAAK,GAAG,GAC9X,SAAS6D,GAAGhrP,EAAEloB,EAAE0R,GAAY,GAAG,IAAO,GAAnB1R,EAAEA,EAAEsgD,OAAkB,OAAO,WAAW,IAAIvgD,EAAEuvQ,KAAK,GAAG,IAAO,EAAFtvQ,GAAK,OAAO,KAAKD,EAAE,WAAW,WAAW,GAD/C,IAAU,GACyCk6J,IAAU,OAAOxyB,GAAE,GAAG,OAAO/1H,EAAEwW,EAAE4nP,GAAG5nP,EAAc,EAAZxW,EAAEyrQ,WAAa,IAAI,UAAU,OAAOp9Q,GAAG,KAAK,GAAGmoB,EAAE,WAAW,MAAM,KAAK,GAAGA,EAAE4nP,GAAG5nP,EAAE,IAAI,KAAK,MAAM,KAAK,GAAG,KAAK,GAAGA,EAAE4nP,GAAG5nP,EAAE,IAAI,KAAK,MAAM,KAAK,GAAGA,EAAE,EAAE,MAAM,QAAQ,MAAMnnB,MAAMm5J,EAAE,MAA4B,OAArB,OAAOg3F,IAAGhpO,IAAIu/G,MAAKv/G,EAASA,EAClX,SAASirP,GAAGjrP,EAAEloB,GAAG,GAAG,GAAGg9Q,GAAG,MAAMA,GAAG,EAAEC,GAAG,KAAKl8Q,MAAMm5J,EAAE,MAAgB,GAAG,QAAbhyI,EAAEk1P,GAAGl1P,EAAEloB,IAAe,CAAC,IAAI0R,EAAE49P,KAAK,aAAatvQ,EAFlC,IAAK,EAEgCi6J,KAFrC,IAEmD,GAAFA,IAAeojH,GAAGn1P,IAAIsiJ,GAAEtiJ,GAFzE,IAE4E+xI,IAAO21G,MAAMplG,GAAEtiJ,GAF3F,IAEiG,EAAF+xI,KAAU,KAAKvoJ,GAAG,KAAKA,IAAI,OAAOqrQ,GAAGA,GAAG,IAAI71E,IAAI,CAAC,CAACh/K,EAAEloB,WAAmB,KAAb0R,EAAEqrQ,GAAGj7Q,IAAIomB,KAAgBxW,EAAE1R,IAAI+8Q,GAAGliQ,IAAIqN,EAAEloB,KACzQ,SAASo9Q,GAAGl1P,EAAEloB,GAAGkoB,EAAE0oP,eAAe5wQ,IAAIkoB,EAAE0oP,eAAe5wQ,GAAG,IAAI0R,EAAEwW,EAAEu1O,UAAU,OAAO/rP,GAAGA,EAAEk/P,eAAe5wQ,IAAI0R,EAAEk/P,eAAe5wQ,GAAG,IAAID,EAAEmoB,EAAE0xO,OAAO1zP,EAAE,KAAK,GAAG,OAAOnG,GAAG,IAAImoB,EAAE1B,IAAItgB,EAAEgiB,EAAEuxO,eAAe,KAAK,OAAO15P,GAAG,CAA+H,GAA9H2R,EAAE3R,EAAE09P,UAAU19P,EAAE0wQ,oBAAoBzwQ,IAAID,EAAE0wQ,oBAAoBzwQ,GAAG,OAAO0R,GAAGA,EAAE++P,oBAAoBzwQ,IAAI0R,EAAE++P,oBAAoBzwQ,GAAM,OAAOD,EAAE65P,QAAQ,IAAI75P,EAAEymB,IAAI,CAACtgB,EAAEnG,EAAE05P,UAAU,MAAM15P,EAAEA,EAAE65P,OAA0D,OAAnD,OAAO1zP,IAAIgrP,KAAIhrP,IAAIssQ,GAAGxyQ,GAH/S,IAGkTyqK,IAAQ6yG,GAAGp3Q,EAAEuhI,KAAI81I,GAAGr3Q,EAAElG,IAAWkG,EACrc,SAASs3Q,GAAGt1P,GAAG,IAAIloB,EAAEkoB,EAAEu1P,gBAAgB,OAAG,IAAIz9Q,EAASA,EAA2B09Q,GAAGx1P,EAA5BloB,EAAEkoB,EAAEy1P,mBAAsC39Q,EAAEkoB,EAAE01P,iBAAe11P,EAAEA,EAAE21P,uBAAiC79Q,EAAEkoB,EAA5DloB,EACjG,SAASwqK,GAAEtiJ,GAAG,GAAG,IAAIA,EAAEu1P,gBAAgBv1P,EAAE41P,uBAAuB,WAAW51P,EAAE61P,iBAAiB,GAAG71P,EAAE81P,aAAatO,GAAG2N,GAAGvsP,KAAK,KAAK5I,QAAQ,CAAC,IAAIloB,EAAEw9Q,GAAGt1P,GAAGxW,EAAEwW,EAAE81P,aAAa,GAAG,IAAIh+Q,EAAE,OAAO0R,IAAIwW,EAAE81P,aAAa,KAAK91P,EAAE41P,uBAAuB,EAAE51P,EAAE61P,iBAAiB,QAAQ,CAAC,IAAIh+Q,EAAEkzQ,KAAqH,GAAjGlzQ,EAAf,aAAaC,EAAI,GAAG,IAAIA,GAAG,IAAIA,EAAI,GAA4C,IAAxCD,EAAE,IAAI,WAAWC,GAAG,IAAI,WAAWD,IAAU,GAAG,KAAKA,EAAE,GAAG,MAAMA,EAAE,GAAG,GAAO,OAAO2R,EAAE,CAAC,IAAIxL,EAAEgiB,EAAE61P,iBAAiB,GAAG71P,EAAE41P,yBAAyB99Q,GAAGkG,GAAGnG,EAAE,OAAO2R,IAAIs9P,IAAIlB,GAAGp8P,GAAGwW,EAAE41P,uBACne99Q,EAAEkoB,EAAE61P,iBAAiBh+Q,EAAEC,EAAE,aAAaA,EAAE0vQ,GAAG2N,GAAGvsP,KAAK,KAAK5I,IAAIunP,GAAG1vQ,EAAEk+Q,GAAGntP,KAAK,KAAK5I,GAAG,CAACte,QAAQ,IAAI,WAAW5J,GAAGqvQ,OAAOnnP,EAAE81P,aAAah+Q,IAClI,SAASi+Q,GAAG/1P,EAAEloB,GAAQ,GAALk9Q,GAAG,EAAKl9Q,EAAE,OAAck+Q,GAAGh2P,EAAVloB,EAAEizQ,MAAazoG,GAAEtiJ,GAAG,KAAK,IAAIxW,EAAE8rQ,GAAGt1P,GAAG,GAAG,IAAIxW,EAAE,CAAkB,GAAjB1R,EAAEkoB,EAAE81P,aAPb,IAOgC,GAAF/jH,IAAe,MAAMl5J,MAAMm5J,EAAE,MAAiC,GAA3BikH,KAAKj2P,IAAIgpO,IAAGx/O,IAAI+1H,IAAG22I,GAAGl2P,EAAExW,GAAM,OAAOy/O,GAAE,CAAC,IAAIpxP,EAAEk6J,GAAEA,IAPvG,GAOyH,IAAZ,IAAI/zJ,EAAEm4Q,WAAaC,KAAK,MAAM,MAAMnzL,GAAGozL,GAAGr2P,EAAEijE,GAAkC,GAAtBilL,KAAKn2G,GAAEl6J,EAAEq8Q,GAAGh3O,QAAQl/B,EAPxK,IAO6KukK,GAAO,MAAMzqK,EAAEs8Q,GAAG8B,GAAGl2P,EAAExW,GAAG4rQ,GAAGp1P,EAAExW,GAAG84J,GAAEtiJ,GAAGloB,EAAE,GAAG,OAAOmxP,GAAE,OAAOjrP,EAAEgiB,EAAEs2P,aAAat2P,EAAEkd,QAAQq4N,UAAUv1O,EAAEu2P,uBAAuB/sQ,EAAE3R,EAAE0qK,GAAEymF,GAAE,KAAKnxP,GAAG,KAP5T,EAOoU,KAP/T,EAOuU,MAAMgB,MAAMm5J,EAAE,MAAM,KAPtV,EAO8VgkH,GAAGh2P,EAAE,EAAExW,EAAE,EAAEA,GAAG,MAAM,KAP7W,EAQtE,GAD2b4rQ,GAAGp1P,EAAExW,GACveA,KAD0e3R,EAAEmoB,EAAEw2P,qBACtex2P,EAAE21P,sBAAsBc,GAAGz4Q,IAAO,aAAaq2Q,IAAkB,IAAbr2Q,EAAEq1Q,GARqJ,IAQ/IlM,MAAW,CAAC,GAAGsN,GAAG,CAAC,IAAI53Q,EAAEmjB,EAAE01P,eAAe,GAAG,IAAI74Q,GAAGA,GAAG2M,EAAE,CAACwW,EAAE01P,eAAelsQ,EAAE0sQ,GAAGl2P,EAAExW,GAAG,OAAe,GAAG,KAAX3M,EAAEy4Q,GAAGt1P,KAAanjB,IAAI2M,EAAE,MAAM,GAAG,IAAI3R,GAAGA,IAAI2R,EAAE,CAACwW,EAAE01P,eAAe79Q,EAAE,MAAMmoB,EAAE9W,cAAcu2P,GAAGiX,GAAG9tP,KAAK,KAAK5I,GAAGhiB,GAAG,MAAM04Q,GAAG12P,GAAG,MAAM,KAR9K,EAQ2P,GAArEo1P,GAAGp1P,EAAExW,GAAyBA,KAAtB3R,EAAEmoB,EAAEw2P,qBAA0Bx2P,EAAE21P,sBAAsBc,GAAGz4Q,IAAOy2Q,KAAwB,KAAnBz2Q,EAAEgiB,EAAE01P,iBAAsB13Q,GAAGwL,GAAG,CAACwW,EAAE01P,eAAelsQ,EAAE0sQ,GAAGl2P,EAAExW,GAAG,MAAc,GAAG,KAAXxL,EAAEs3Q,GAAGt1P,KAAahiB,IAAIwL,EAAE,MAAM,GAAG,IAAI3R,GAAGA,IAAI2R,EAAE,CAACwW,EAAE01P,eACxe79Q,EAAE,MAAgP,GAA1O,aAAay8Q,GAAGz8Q,EAAE,IAAI,WAAWy8Q,IAAInN,KAAK,aAAakN,GAAGx8Q,EAAE,GAAGA,EAAE,IAAI,WAAWw8Q,IAAI,IAAuC,GAANx8Q,GAA7BmG,EAAEmpQ,MAA+BtvQ,KAAQA,EAAE,IAApC2R,EAAE,IAAI,WAAWA,GAAGxL,IAAmBnG,GAAG,IAAIA,EAAE,IAAI,IAAIA,EAAE,IAAI,KAAKA,EAAE,KAAK,KAAKA,EAAE,KAAK,IAAIA,EAAE,IAAI,KAAKA,EAAE,KAAK,KAAKo8Q,GAAGp8Q,EAAE,OAAOA,KAAQA,EAAE2R,IAAO,GAAG3R,EAAE,CAACmoB,EAAE9W,cAAcu2P,GAAGiX,GAAG9tP,KAAK,KAAK5I,GAAGnoB,GAAG,MAAM6+Q,GAAG12P,GAAG,MAAM,KAT5L,EASoM,GAAG,aAAaq0P,IAAI,OAAOE,GAAG,CAAC13Q,EAAEw3Q,GAAG,IAAIt3Q,EAAEw3Q,GAAuH,GAA5F,IAAxB18Q,EAAsB,EAApBkF,EAAE45Q,mBAAyB9+Q,EAAE,GAAGmG,EAAgB,EAAdjB,EAAE65Q,YAA8D/+Q,GAAhDgF,EAAEsqQ,MAAM,IAAI,WAAWtqQ,IAAgB,EAAZE,EAAEk4Q,WAAa,QAAWj3Q,EAAE,EAAEA,EAAEnG,EAAEgF,GAAM,GAAGhF,EAAE,CAACu9Q,GAAGp1P,EAAExW,GAAGwW,EAAE9W,cAC/eu2P,GAAGiX,GAAG9tP,KAAK,KAAK5I,GAAGnoB,GAAG,OAAO6+Q,GAAG12P,GAAG,MAAM,QAAQ,MAAMnnB,MAAMm5J,EAAE,MAAY,GAALsQ,GAAEtiJ,GAAMA,EAAE81P,eAAeh+Q,EAAE,OAAOi+Q,GAAGntP,KAAK,KAAK5I,IAAI,OAAO,KAChI,SAASm1P,GAAGn1P,GAAG,IAAIloB,EAAEkoB,EAAEu1P,gBAAqC,GAArBz9Q,EAAE,IAAIA,EAAEA,EAAE,WAAckoB,EAAEu2P,yBAAyBz+Q,EAAE4+Q,GAAG12P,OAAO,CAAC,GAX/B,IAWqC,GAAF+xI,IAAe,MAAMl5J,MAAMm5J,EAAE,MAAiC,GAA3BikH,KAAKj2P,IAAIgpO,IAAGlxP,IAAIynI,IAAG22I,GAAGl2P,EAAEloB,GAAM,OAAOmxP,GAAE,CAAC,IAAIz/O,EAAEuoJ,GAAEA,IAX5G,GAW8H,IAAZ,IAAIl6J,EAAEs+Q,WAAaU,KAAK,MAAM,MAAM74Q,GAAGq4Q,GAAGr2P,EAAEhiB,GAAkC,GAAtBkqQ,KAAKn2G,GAAEvoJ,EAAE0qQ,GAAGh3O,QAAQrlC,EAX7K,IAWkL0qK,GAAO,MAAM/4J,EAAE4qQ,GAAG8B,GAAGl2P,EAAEloB,GAAGs9Q,GAAGp1P,EAAEloB,GAAGwqK,GAAEtiJ,GAAGxW,EAAE,GAAG,OAAOy/O,GAAE,MAAMpwP,MAAMm5J,EAAE,MAAMhyI,EAAEs2P,aAAat2P,EAAEkd,QAAQq4N,UAAUv1O,EAAEu2P,uBAAuBz+Q,EAAEkxP,GAAE,KAAK0tB,GAAG12P,GAAGsiJ,GAAEtiJ,IAAI,OAAO,KAC5V,SAAS82P,GAAG92P,EAAEloB,GAAG,IAAI0R,EAAEuoJ,GAAEA,IAAG,EAAE,IAAI,OAAO/xI,EAAEloB,GAAG,QAZhE,KAYwEi6J,GAAEvoJ,IAASk+P,MAAM,SAASqP,GAAG/2P,EAAEloB,GAAG,IAAI0R,EAAEuoJ,GAAEA,KAAI,EAAEA,IAZnH,EAYyH,IAAI,OAAO/xI,EAAEloB,GAAG,QAZ9I,KAYsJi6J,GAAEvoJ,IAASk+P,MACzO,SAASwO,GAAGl2P,EAAEloB,GAAGkoB,EAAEs2P,aAAa,KAAKt2P,EAAEu2P,uBAAuB,EAAE,IAAI/sQ,EAAEwW,EAAE9W,cAAiD,IAAlC,IAAIM,IAAIwW,EAAE9W,eAAe,EAAEw2P,GAAGl2P,IAAO,OAAOy/O,GAAE,IAAIz/O,EAAEy/O,GAAEyI,OAAO,OAAOloP,GAAG,CAAC,IAAI3R,EAAE2R,EAAE,OAAO3R,EAAEymB,KAAK,KAAK,EAAiC,MAAzBzmB,EAAE2M,KAAK+hK,mBAAwC4+F,KAAM,MAAM,KAAK,EAAEwH,KAAMvH,KAAM,MAAM,KAAK,EAAEyH,GAAGh1Q,GAAG,MAAM,KAAK,EAAE80Q,KAAM,MAAM,KAAK,GAAgB,KAAK,GAAG7mI,GAAE8rB,IAAK,MAAM,KAAK,GAAGy2G,GAAGxwQ,GAAG2R,EAAEA,EAAEkoP,OAAO1I,GAAEhpO,EAAEipO,GAAE8iB,GAAG/rP,EAAEkd,QAAQ,MAAQqiG,GAAEznI,EAAEyqK,GAbhU,EAaqU6xG,GAAG,KAAKE,GAAGD,GAAG,WAAWE,GAAG,KAAKC,GAAG,EAAEC,IAAG,EAC5c,SAAS4B,GAAGr2P,EAAEloB,GAAG,OAAE,CAAC,IAAc,GAAVowQ,KAAK+F,KAAQ,OAAOhlB,IAAG,OAAOA,GAAEyI,OAAO,OAAOnvF,GAd6B,EAcxB6xG,GAAGt8Q,EAAE,KAAKkoB,EAAE,CAAC,IAAIxW,EAAEwW,EAAEnoB,EAAEoxP,GAAEyI,OAAO1zP,EAAEirP,GAAEpsP,EAAE/E,EAAwD,GAAtDA,EAAEynI,GAAEvhI,EAAEw3P,WAAW,KAAKx3P,EAAEqrQ,YAAYrrQ,EAAEsrQ,WAAW,KAAQ,OAAOzsQ,GAAG,iBAAkBA,GAAG,mBAAoBA,EAAE+B,KAAK,CAAC,IAAI7B,EAAEF,EAAEomF,EAAE,IAAe,EAAV2uE,GAAE10H,SAAW0vC,EAAE/0E,EAAE,EAAE,CAAC,IAAIsgG,EAAE,GAAGA,EAAE,KAAKvrB,EAAEtuD,IAAI,CAAC,IAAIhV,EAAEsjE,EAAEu8K,cAAc,GAAG,OAAO7/O,EAAE6uF,EAAE,OAAO7uF,EAAEosP,eAAqB,CAAC,IAAIlO,EAAE56K,EAAEmgM,cAAc50K,OAAE,IAASqvJ,EAAE6pB,YAAY,IAAK7pB,EAAE8pB,6BAA8BruL,IAAS,GAAGkV,EAAE,CAAC,IAAIr7F,EAAE8vE,EAAEo9L,YAAY,GAAG,OAAOltQ,EAAE,CAAC,IAAIw2J,EAAE,IAAI+rC,IAClf/rC,EAAEp5F,IAAIn9D,GAAG6vE,EAAEo9L,YAAY12G,OAAOx2J,EAAEo9D,IAAIn9D,GAAG,GAAG,IAAY,EAAP6vE,EAAEx0B,MAAQ,CAAoC,GAAnCw0B,EAAE4oL,WAAW,GAAGx3P,EAAEw3P,YAAY,KAAQ,IAAIx3P,EAAEsgB,IAAI,GAAG,OAAOtgB,EAAEu3P,UAAUv3P,EAAEsgB,IAAI,OAAO,CAAC,IAAI+jJ,EAAEqnG,GAAG,WAAW,MAAMrnG,EAAE/jJ,IAAI,EAAEyrP,GAAG/rQ,EAAEqkK,GAAGrkK,EAAE0qQ,eAAe,WAAW,MAAM1oP,EAAEnjB,OAAE,EAAOmB,EAAElG,EAAE,IAAIuwP,EAAG7+O,EAAEwtQ,UAAoH,GAA1G,OAAO3uB,GAAIA,EAAG7+O,EAAEwtQ,UAAU,IAAIxD,GAAG32Q,EAAE,IAAIwiM,IAAIgpD,EAAG11O,IAAI5V,EAAEF,SAAiB,KAAZA,EAAEwrP,EAAGzuP,IAAImD,MAAgBF,EAAE,IAAIwiM,IAAIgpD,EAAG11O,IAAI5V,EAAEF,KAASA,EAAEktB,IAAI/rB,GAAG,CAACnB,EAAEq9D,IAAIl8D,GAAG,IAAIqkB,EAAE40P,GAAGruP,KAAK,KAAKpf,EAAEzM,EAAEiB,GAAGjB,EAAE6B,KAAKyjB,EAAEA,GAAGuqD,EAAE4oL,WAAW,KAAK5oL,EAAE87L,eAAe5wQ,EAAE,MAAMkoB,EAAE4sD,EAAEA,EAAE8kL,aAAa,OAAO9kL,GAAG/vE,EAAEhE,OAAOo1P,EAAGjwP,EAAEwG,OACzf,qBAAqB,wLAAwL6pP,EAAGrwP,IAhBzF,IAgB6FukK,KAASA,GAhBrH,GAgB2H1lK,EAAEq1Q,GAAGr1Q,EAAEmB,GAAG4uE,EAAE/0E,EAAE,EAAE,CAAC,OAAO+0E,EAAEtuD,KAAK,KAAK,EAAEvhB,EAAEF,EAAE+vE,EAAE4oL,WAAW,KAAK5oL,EAAE87L,eAAe5wQ,EAAkBmyQ,GAAGr9L,EAAb6mM,GAAG7mM,EAAE7vE,EAAEjF,IAAW,MAAMkoB,EAAE,KAAK,EAAEjjB,EAAEF,EAAE,IAAI4mI,EAAE72D,EAAEpoE,KAAKzM,EAAE60E,EAAE2kL,UAAU,GAAG,IAAiB,GAAZ3kL,EAAE4oL,aAAgB,mBAAoB/xH,EAAEy3E,0BAA0B,OAAOnjN,GAAG,mBAAoBA,EAAE87Q,oBACje,OAAOC,KAAKA,GAAG/pP,IAAIhyB,KAAK,CAAC60E,EAAE4oL,WAAW,KAAK5oL,EAAE87L,eAAe5wQ,EAAkBmyQ,GAAGr9L,EAAbgnM,GAAGhnM,EAAE7vE,EAAEjF,IAAW,MAAMkoB,GAAG4sD,EAAEA,EAAE8kL,aAAa,OAAO9kL,GAAGq8K,GAAEiuB,GAAGjuB,IAAG,MAAMxrP,GAAG3F,EAAE2F,EAAE,SAAS,OAAe,SAAS04Q,KAAK,IAAIn2P,EAAEk0P,GAAGh3O,QAAsB,OAAdg3O,GAAGh3O,QAAQ8wO,GAAU,OAAOhuP,EAAEguP,GAAGhuP,EAAE,SAASqqP,GAAGrqP,EAAEloB,GAAGkoB,EAAEq0P,IAAI,EAAEr0P,IAAIq0P,GAAGr0P,GAAG,OAAOloB,GAAGkoB,EAAEs0P,IAAI,EAAEt0P,IAAIs0P,GAAGt0P,EAAEu0P,GAAGz8Q,GAAG,SAASwyQ,GAAGtqP,GAAGA,EAAEw0P,KAAKA,GAAGx0P,GAAG,SAAS62P,KAAK,KAAK,OAAO5tB,IAAGA,GAAEkuB,GAAGluB,IAAG,SAASmtB,KAAK,KAAK,OAAOntB,KAAI6c,MAAM7c,GAAEkuB,GAAGluB,IACxZ,SAASkuB,GAAGn3P,GAAG,IAAIloB,EAAEk8Q,GAAGh0P,EAAEu1O,UAAUv1O,EAAEu/G,IAAsE,OAAnEv/G,EAAE+sP,cAAc/sP,EAAE6vP,aAAa,OAAO/3Q,IAAIA,EAAEo/Q,GAAGl3P,IAAIm0P,GAAGj3O,QAAQ,KAAYplC,EACnH,SAASo/Q,GAAGl3P,GAAGipO,GAAEjpO,EAAE,EAAE,CAAC,IAAIloB,EAAEmxP,GAAEsM,UAAqB,GAAXv1O,EAAEipO,GAAEyI,OAAU,IAAiB,KAAZzI,GAAEuM,WAAgB,CAACx1O,EAAE,CAAC,IAAIxW,EAAE1R,EAAUD,EAAE0nI,GAAMvhI,GAAhBlG,EAAEmxP,IAAkB4mB,aAAa,OAAO/3Q,EAAEwmB,KAAK,KAAK,EAAQ,KAAK,GAAS,KAAK,GAAG,KAAK,EAOyE,KAAK,GACoE,KAAK,EAAQ,KAAK,EAAQ,KAAK,GAAsD,KAAK,EAAQ,KAAK,GAI3U,KAAK,GAAS,KAAK,GAAG,MAZoE,KAAK,EAQqP,KAAK,GAAG6jJ,GAAErqK,EAAE0M,OAAO2gQ,KAAM,MARrP,KAAK,EAAEwH,KAAMvH,MAAMpnQ,EAAElG,EAAEy5P,WAAYuf,iBAAiB9yQ,EAAE2oK,QAAQ3oK,EAAE8yQ,eAAe9yQ,EAAE8yQ,eAAe,OAAO,OAAOtnQ,GAAG,OAAOA,EAAEka,QAAQssP,GAAGl4Q,IAAIi6Q,GAAGj6Q,GAAS,MAAM,KAAK,EAAE+0Q,GAAG/0Q,GAAGD,EAAE40Q,GAAGD,GAAGtvO,SAAS,IAAIrgC,EAAE/E,EAAE0M,KAAK,GAAG,OAAOgF,GAAG,MAAM1R,EAAEy5P,UAAUyf,GAAGxnQ,EAAE1R,EAAE+E,EAAEmB,EAAEnG,GAAG2R,EAAEyrB,MAAMn9B,EAAEm9B,MAAMn9B,EAAE09P,WAAW,UAAU,GAAGx3P,EAAE,CAAC,IAAIjB,EAC1f0vQ,GAAGH,GAAGpvO,SAAS,GAAG8yO,GAAGl4Q,GAAG,CAAK,IAAImrF,GAARjlF,EAAElG,GAAUy5P,UAAU/nP,EAAExL,EAAEwG,KAAK,IAAIooE,EAAE5uE,EAAE+uQ,cAAc50K,EAAEtgG,EAA+B,OAA7BorF,EAAE68K,IAAI9hQ,EAAEilF,EAAE88K,IAAInzL,EAAE/vE,OAAE,EAAOhF,EAAEorF,EAASz5E,GAAG,IAAK,SAAS,IAAK,SAAS,IAAK,QAAQsoJ,GAAE,OAAOj6J,GAAG,MAAM,IAAK,QAAQ,IAAK,QAAQ,IAAIorF,EAAE,EAAEA,EAAErnC,GAAGriD,OAAO0pF,IAAI6uE,GAAEl2G,GAAGqnC,GAAGprF,GAAG,MAAM,IAAK,SAASi6J,GAAE,QAAQj6J,GAAG,MAAM,IAAK,MAAM,IAAK,QAAQ,IAAK,OAAOi6J,GAAE,QAAQj6J,GAAGi6J,GAAE,OAAOj6J,GAAG,MAAM,IAAK,OAAOi6J,GAAE,QAAQj6J,GAAGi6J,GAAE,SAASj6J,GAAG,MAAM,IAAK,UAAUi6J,GAAE,SAASj6J,GAAG,MAAM,IAAK,QAAQs7P,GAAGt7P,EAAE+0E,GAAGklF,GAAE,UAAUj6J,GAAG6mQ,GAAGvmK,EAAE,YAAY,MAAM,IAAK,SAAStgG,EAAEo7P,cACtf,CAACmgB,cAAcxmM,EAAEoC,UAAU8iF,GAAE,UAAUj6J,GAAG6mQ,GAAGvmK,EAAE,YAAY,MAAM,IAAK,WAAW27J,GAAGj8P,EAAE+0E,GAAGklF,GAAE,UAAUj6J,GAAG6mQ,GAAGvmK,EAAE,YAA2B,IAAIt7F,KAAnB2hQ,GAAGh1P,EAAEojE,GAAGqW,EAAE,KAAcrW,EAAEA,EAAE50E,eAAe6E,KAAKE,EAAE6vE,EAAE/vE,GAAG,aAAaA,EAAE,iBAAkBE,EAAElF,EAAE+lG,cAAc7gG,IAAIkmF,EAAE,CAAC,WAAWlmF,IAAI,iBAAkBA,GAAGlF,EAAE+lG,cAAc,GAAG7gG,IAAIkmF,EAAE,CAAC,WAAW,GAAGlmF,IAAIsqP,EAAGrvP,eAAe6E,IAAI,MAAME,GAAG2hQ,GAAGvmK,EAAEt7F,IAAI,OAAO2M,GAAG,IAAK,QAAQopP,GAAG/6P,GAAG27P,GAAG37P,EAAE+0E,GAAE,GAAI,MAAM,IAAK,WAAWgmL,GAAG/6P,GAAGm8P,GAAGn8P,GAAK,MAAM,IAAK,SAAS,IAAK,SAAS,MAAM,QAAQ,mBAAoB+0E,EAAE7sC,UACnfloC,EAAEs6Q,QAAQxT,IAAI9hQ,EAAEomF,EAAEjlF,EAAEgsQ,YAAYntQ,GAAEmB,EAAE,OAAOnB,IAAWk1Q,GAAGj6Q,OAAO,CAAC0R,EAAE1R,EAAEqgG,EAAEt7F,EAAE+vE,EAAE5uE,EAAEilF,EAAE,IAAIprF,EAAEisG,SAASjsG,EAAEA,EAAEk6B,cAAch1B,IAAIk3P,KAAUl3P,EAAEm3P,GAAG/7J,IAAIp7F,IAAIk3P,GAAQ,WAAW97J,IAAGvrB,EAAEqW,EAAElzE,cAAc,QAASuT,UAAU,qBAAuB2/D,EAAErW,EAAE/X,YAAY+X,EAAEh2C,aAAa,iBAAkBg2C,EAAE0tG,GAAGr3F,EAAEA,EAAElzE,cAAcooF,EAAE,CAACmiF,GAAG1tG,EAAE0tG,MAAMr3F,EAAEA,EAAElzE,cAAcooF,GAAG,WAAWA,IAAIA,EAAElV,EAAErW,EAAEoC,SAASmpB,EAAEnpB,UAAS,EAAGpC,EAAEzxD,OAAOg9E,EAAEh9E,KAAKyxD,EAAEzxD,QAAQ8nE,EAAEA,EAAEm0L,gBAAgBr6Q,EAAEo7F,IAAGvrB,EAAEqW,GAAI68K,IAAIt2P,EAAEojE,EAAEmzL,IAAI/hQ,EAAE+yQ,GAAGnkM,EAAE90E,GAASA,EAAEy5P,UAAU3kL,EAAU,IAAItjE,EAAEzR,EAAE2vP,EAAEiX,GAAlBtmK,EAAEt7F,EAAE2M,EAAExL,GAAoB,OAAOm6F,GAAG,IAAK,SAAS,IAAK,SAAS,IAAK,QAAQ25D,GAAE,OACviBllF,GAAG/0E,EAAE2R,EAAE,MAAM,IAAK,QAAQ,IAAK,QAAQ,IAAI3R,EAAE,EAAEA,EAAE+jD,GAAGriD,OAAO1B,IAAIi6J,GAAEl2G,GAAG/jD,GAAG+0E,GAAG/0E,EAAE2R,EAAE,MAAM,IAAK,SAASsoJ,GAAE,QAAQllF,GAAG/0E,EAAE2R,EAAE,MAAM,IAAK,MAAM,IAAK,QAAQ,IAAK,OAAOsoJ,GAAE,QAAQllF,GAAGklF,GAAE,OAAOllF,GAAG/0E,EAAE2R,EAAE,MAAM,IAAK,OAAOsoJ,GAAE,QAAQllF,GAAGklF,GAAE,SAASllF,GAAG/0E,EAAE2R,EAAE,MAAM,IAAK,UAAUsoJ,GAAE,SAASllF,GAAG/0E,EAAE2R,EAAE,MAAM,IAAK,QAAQ2pP,GAAGvmL,EAAEpjE,GAAG3R,EAAEm7P,GAAGpmL,EAAEpjE,GAAGsoJ,GAAE,UAAUllF,GAAG8xL,GAAGp1P,EAAE,YAAY,MAAM,IAAK,SAASzR,EAAE47P,GAAG7mL,EAAEpjE,GAAG,MAAM,IAAK,SAASojE,EAAEqmL,cAAc,CAACmgB,cAAc5pQ,EAAEwlE,UAAUn3E,EAAEwB,EAAE,GAAGmQ,EAAE,CAAC3L,WAAM,IAASi0J,GAAE,UAAUllF,GAAG8xL,GAAGp1P,EAAE,YAAY,MAAM,IAAK,WAAWwqP,GAAGlnL,EACtgBpjE,GAAG3R,EAAEg8P,GAAGjnL,EAAEpjE,GAAGsoJ,GAAE,UAAUllF,GAAG8xL,GAAGp1P,EAAE,YAAY,MAAM,QAAQzR,EAAE2R,EAAEg1P,GAAGrmK,EAAEtgG,GAAGorF,OAAE,EAAOlmF,EAAEo7F,EAAE,IAAIr7F,EAAE8vE,EAAE0mF,EAAEz7J,EAAE,IAAIorF,KAAKqwE,EAAE,GAAGA,EAAEt7J,eAAeirF,GAAG,CAAC,IAAIo/E,EAAE/O,EAAErwE,GAAG,UAAUA,EAAEq7K,GAAGxhQ,EAAEulK,GAAG,4BAA4Bp/E,EAAuB,OAApBo/E,EAAEA,EAAEA,EAAEguF,YAAO,IAAgBgE,GAAGv3P,EAAEulK,GAAI,aAAap/E,EAAE,iBAAkBo/E,GAAG,aAAatlK,GAAG,KAAKslK,IAAImyF,GAAG13P,EAAEulK,GAAG,iBAAkBA,GAAGmyF,GAAG13P,EAAE,GAAGulK,GAAG,mCAAmCp/E,GAAG,6BAA6BA,GAAG,cAAcA,IAAIokK,EAAGrvP,eAAeirF,GAAG,MAAMo/E,GAAGq8F,GAAGp1P,EAAE25E,GAAG,MAAMo/E,GAAGmwF,GAAG11P,EAAEmmF,EAAEo/E,EAAEmlF,IAAI,OAAOrvJ,GAAG,IAAK,QAAQy6J,GAAGhmL,GAC1f4mL,GAAG5mL,EAAEpjE,GAAE,GAAI,MAAM,IAAK,WAAWopP,GAAGhmL,GAAGonL,GAAGpnL,GAAK,MAAM,IAAK,SAAS,MAAMpjE,EAAE3L,OAAO+uE,EAAEvpD,aAAa,QAAQ,GAAGkvO,GAAG/oP,EAAE3L,QAAQ,MAAM,IAAK,UAAShG,EAAE+0E,GAAIoC,WAAWxlE,EAAEwlE,SAAmB,OAAVpC,EAAEpjE,EAAE3L,OAAc81P,GAAG97P,IAAI2R,EAAEwlE,SAASpC,GAAE,GAAI,MAAMpjE,EAAEsjB,cAAc6mO,GAAG97P,IAAI2R,EAAEwlE,SAASxlE,EAAEsjB,cAAa,GAAI,MAAM,QAAQ,mBAAoBj1B,EAAEkoC,UAAU6sC,EAAEulM,QAAQxT,KAAK3gQ,EAAEixB,GAAGpyB,EAAEmB,KAAK+zQ,GAAGj6Q,GAAG,OAAOA,EAAEm9B,MAAMn9B,EAAE09P,WAAW,UAAU,GAAG,OAAO19P,EAAEy5P,UAAU,MAAM14P,MAAMm5J,EAAE,MAAM,MAAM,KAAK,EAAE,GAAGxoJ,GAAG,MAAM1R,EAAEy5P,UAAU0f,GAAGznQ,EAAE1R,EAAE0R,EAAEujQ,cAAc/uQ,OAAO,CAAC,GAAG,iBAC7eA,GAAG,OAAOlG,EAAEy5P,UAAU,MAAM14P,MAAMm5J,EAAE,MAAMn6J,EAAE40Q,GAAGD,GAAGtvO,SAASuvO,GAAGH,GAAGpvO,SAAS8yO,GAAGl4Q,IAAQ+E,GAAJmB,EAAElG,GAAMy5P,UAAU15P,EAAEmG,EAAE+uQ,cAAclwQ,EAAEijQ,IAAI9hQ,GAAGA,EAAEnB,EAAEuvL,YAAYv0L,IAAIk6Q,GAAGj6Q,KAAK+E,EAAE/E,GAAEkG,GAAG,IAAInG,EAAEisG,SAASjsG,EAAEA,EAAEk6B,eAAek/L,eAAejzN,IAAK8hQ,IAAIjjQ,EAAE/E,EAAEy5P,UAAUvzP,GAAG,MAAoB,KAAK,GAA4B,GAAzB8nI,GAAE8rB,IAAK5zJ,EAAElG,EAAEqxP,cAAiB,IAAiB,GAAZrxP,EAAE09P,WAAc,CAAC19P,EAAE4wQ,eAAe7wQ,EAAE,MAAMmoB,EAAEhiB,EAAE,OAAOA,EAAEnB,GAAE,EAAG,OAAO2M,OAAE,IAAS1R,EAAEi1Q,cAAcsE,UAAUrB,GAAGl4Q,IAAsB+E,EAAE,QAApBhF,EAAE2R,EAAE2/O,eAAyBnrP,GAAG,OAAOnG,GAAsB,QAAlBA,EAAE2R,EAAEka,MAAM0kJ,WACpd,QADuex7F,EAAE90E,EAAEuxQ,cACjevxQ,EAAEuxQ,YAAYxxQ,EAAEA,EAAEgyQ,WAAWj9L,IAAI90E,EAAEuxQ,YAAYvxQ,EAAEwxQ,WAAWzxQ,EAAEA,EAAEgyQ,WAAW,MAAMhyQ,EAAE29P,UAAU,IAAQx3P,IAAInB,GAAG,IAAY,EAAP/E,EAAEsgD,QAAW,OAAO5uC,IAAG,IAAK1R,EAAEi1Q,cAAcuE,4BAA4B,IAAe,EAAV1/G,GAAE10H,SA3B5G,IA2BuHqlI,KAASA,GA3BjH,IAAf,IA2B8IA,IA3B/H,IA2BuIA,KAAOA,GA3BzI,GA2B8I,IAAIiyG,IAAI,OAAOxrB,KAAIosB,GAAGpsB,GAAEzpH,IAAG81I,GAAGrsB,GAAEwrB,QAAQx2Q,GAAGnB,KAAE/E,EAAE09P,WAAW,GAAE,MAA8C,KAAK,EAAEmX,KAAY,MAAM,KAAK,GAAGtE,GAAGvwQ,GAAG,MAAgE,KAAK,GAA4B,GAAzBguI,GAAE8rB,IAA0B,QAArB5zJ,EAAElG,EAAEqxP,eACle,MAA2C,GAArCtsP,EAAE,IAAiB,GAAZ/E,EAAE09P,WAA+B,QAAjB5oL,EAAE5uE,EAAE0zQ,YAAsB,GAAG70Q,EAAEm1Q,GAAGh0Q,GAAE,QAAS,GA5BkB,IA4BfukK,IAAQ,OAAO/4J,GAAG,IAAiB,GAAZA,EAAEgsP,WAAc,IAAIhsP,EAAE1R,EAAE4rB,MAAM,OAAOla,GAAG,CAAS,GAAG,QAAXojE,EAAEkgM,GAAGtjQ,IAAe,CAA6J,IAA5J1R,EAAE09P,WAAW,GAAGwc,GAAGh0Q,GAAE,GAAoB,QAAhBnB,EAAE+vE,EAAEo9L,eAAuBlyQ,EAAEkyQ,YAAYntQ,EAAE/E,EAAE09P,WAAW,GAAG,OAAOx3P,EAAEsrQ,aAAaxxQ,EAAEuxQ,YAAY,MAAMvxQ,EAAEwxQ,WAAWtrQ,EAAEsrQ,WAAWtrQ,EAAEnG,EAAMgF,EAAE/E,EAAE4rB,MAAM,OAAO7mB,GAAO2M,EAAExL,GAANnG,EAAEgF,GAAQ24P,WAAW,EAAE39P,EAAEgyQ,WAAW,KAAKhyQ,EAAEwxQ,YAAY,KAAKxxQ,EAAEyxQ,WAAW,KAAmB,QAAd18L,EAAE/0E,EAAE09P,YAAoB19P,EAAE0wQ,oBAAoB,EAAE1wQ,EAAE6wQ,eAAel/P,EAAE3R,EAAE6rB,MAAM,KACjf7rB,EAAEk1Q,cAAc,KAAKl1Q,EAAEsxP,cAAc,KAAKtxP,EAAEmyQ,YAAY,KAAKnyQ,EAAEm5P,aAAa,OAAOn5P,EAAE0wQ,oBAAoB37L,EAAE27L,oBAAoB1wQ,EAAE6wQ,eAAe97L,EAAE87L,eAAe7wQ,EAAE6rB,MAAMkpD,EAAElpD,MAAM7rB,EAAEk1Q,cAAcngM,EAAEmgM,cAAcl1Q,EAAEsxP,cAAcv8K,EAAEu8K,cAActxP,EAAEmyQ,YAAYp9L,EAAEo9L,YAAYxgQ,EAAEojE,EAAEokL,aAAan5P,EAAEm5P,aAAa,OAAOxnP,EAAE,KAAK,CAACk/P,eAAel/P,EAAEk/P,eAAeD,aAAaj/P,EAAEi/P,aAAaI,WAAWr/P,EAAEq/P,aAAahsQ,EAAEA,EAAEurK,QAAQliC,GAAE0rB,GAAY,EAAVA,GAAE10H,QAAU,GAAKplC,EAAEA,EAAE4rB,MAAM,MAAM1D,EAAExW,EAAEA,EAAE4+J,aAAa,CAAC,IAAIvrK,EAAE,GAAW,QAAR2M,EAAEsjQ,GAAGlgM,KAAa,GAAG90E,EAAE09P,WACvf,GAAG34P,GAAE,EAAmB,QAAhBhF,EAAE2R,EAAEwgQ,eAAuBlyQ,EAAEkyQ,YAAYnyQ,EAAEC,EAAE09P,WAAW,GAAGwc,GAAGh0Q,GAAE,GAAI,OAAOA,EAAE2zQ,MAAM,WAAW3zQ,EAAE6zQ,WAAWjlM,EAAE2oL,UAAU,CAA6B,QAA5Bz9P,EAAEA,EAAEwxQ,WAAWtrQ,EAAEsrQ,cAAsBxxQ,EAAE+xQ,WAAW,MAAM,YAAY1C,KAAKnpQ,EAAE4zQ,gBAAgB,EAAE/5Q,IAAIC,EAAE09P,WAAW,GAAG34P,GAAE,EAAGm1Q,GAAGh0Q,GAAE,GAAIlG,EAAE4wQ,eAAe5wQ,EAAEywQ,oBAAoB1wQ,EAAE,GAAGmG,EAAEyzQ,aAAa7kM,EAAEw7F,QAAQtwK,EAAE4rB,MAAM5rB,EAAE4rB,MAAMkpD,IAAa,QAAT/0E,EAAEmG,EAAE6pC,MAAchwC,EAAEuwK,QAAQx7F,EAAE90E,EAAE4rB,MAAMkpD,EAAE5uE,EAAE6pC,KAAK+kC,GAAG,GAAG,OAAO5uE,EAAE2zQ,KAAK,CAAC,IAAI3zQ,EAAE4zQ,iBAAiB5zQ,EAAE4zQ,eAAezK,KAAK,KAAKtvQ,EAAEmG,EAAE2zQ,KAAK3zQ,EAAE0zQ,UAAU75Q,EAAEmG,EAAE2zQ,KAAK95Q,EAAEuwK,QAChfpqK,EAAEsrQ,WAAWxxQ,EAAEwxQ,WAAWzxQ,EAAEuwK,QAAQ,KAAKpqK,EAAE4zJ,GAAE10H,QAAsBgpG,GAAE0rB,GAAhB5zJ,EAAEnB,EAAI,EAAFmB,EAAI,EAAI,EAAFA,GAAalG,EAAED,EAAE,MAAMmoB,EAAE,MAAkC,QAAQ,MAAMnnB,MAAMm5J,EAAE,IAAIl6J,EAAEwmB,MAAOxmB,EAAE,KAAS,GAAJkG,EAAEirP,GAAK,IAAI1pH,IAAG,IAAIvhI,EAAEuqQ,oBAAoB,CAAK,IAAJ1rQ,EAAE,EAAMhF,EAAEmG,EAAE0lB,MAAM,OAAO7rB,IAAG2R,EAAE3R,EAAE6wQ,gBAAyC7rQ,IAAIA,EAAE2M,IAAhCojE,EAAE/0E,EAAE0wQ,qBAAiC1rQ,IAAIA,EAAE+vE,GAAG/0E,EAAEA,EAAEuwK,QAAQpqK,EAAEuqQ,oBAAoB1rQ,EAAE,GAAG,OAAO/E,EAAE,OAAOA,EAAE,OAAOkoB,GAAG,IAAiB,KAAZA,EAAEw1O,aAAkB,OAAOx1O,EAAEqpP,cAAcrpP,EAAEqpP,YAAYpgB,GAAEogB,aAAa,OAAOpgB,GAAEqgB,aAAa,OAAOtpP,EAAEspP,aAAatpP,EAAEspP,WAAWO,WACnf5gB,GAAEogB,aAAarpP,EAAEspP,WAAWrgB,GAAEqgB,YAAY,EAAErgB,GAAEuM,YAAY,OAAOx1O,EAAEspP,WAAWtpP,EAAEspP,WAAWO,WAAW5gB,GAAEjpO,EAAEqpP,YAAYpgB,GAAEjpO,EAAEspP,WAAWrgB,SAAQ,CAAW,GAAG,QAAbnxP,EAAEm6Q,GAAGhpB,KAAiB,OAAOnxP,EAAE09P,WAAW,KAAK19P,EAAE,OAAOkoB,IAAIA,EAAEqpP,YAAYrpP,EAAEspP,WAAW,KAAKtpP,EAAEw1O,WAAW,MAAkB,GAAG,QAAf19P,EAAEmxP,GAAE7gF,SAAoB,OAAOtwK,EAAEmxP,GAAEjpO,QAAQ,OAAOipO,IAAkB,OAhCnO,IAgCoN1mF,KAASA,GAhCpM,GAgCiN,KAAK,SAASk0G,GAAGz2P,GAAG,IAAIloB,EAAEkoB,EAAE0oP,eAAuC,OAAO5wQ,GAA/BkoB,EAAEA,EAAEuoP,qBAA+BzwQ,EAAEkoB,EAAE,SAAS02P,GAAG12P,GAAG,IAAIloB,EAAEsvQ,KAA8B,OAAzBE,GAAG,GAAG+P,GAAGzuP,KAAK,KAAK5I,EAAEloB,IAAW,KACpd,SAASu/Q,GAAGr3P,EAAEloB,GAAG,GAAGm+Q,WAAW,OAAOtB,IAAI,GAjC8B,IAiCxB,GAAF5iH,IAAe,MAAMl5J,MAAMm5J,EAAE,MAAM,IAAIxoJ,EAAEwW,EAAEs2P,aAAaz+Q,EAAEmoB,EAAEu2P,uBAAuB,GAAG,OAAO/sQ,EAAE,OAAO,KAAoD,GAA/CwW,EAAEs2P,aAAa,KAAKt2P,EAAEu2P,uBAAuB,EAAK/sQ,IAAIwW,EAAEkd,QAAQ,MAAMrkC,MAAMm5J,EAAE,MAAMhyI,EAAE81P,aAAa,KAAK91P,EAAE41P,uBAAuB,EAAE51P,EAAE61P,iBAAiB,GAAG71P,EAAE21P,sBAAsB,EAAE,IAAI33Q,EAAEy4Q,GAAGjtQ,GAClI,GADqIwW,EAAEy1P,iBAAiBz3Q,EAAEnG,GAAGmoB,EAAEw2P,kBAAkBx2P,EAAEs3P,mBAAmBt3P,EAAEw2P,kBAAkBx2P,EAAE21P,sBAAsB,EAAE99Q,GAAGmoB,EAAEs3P,qBAAqBt3P,EAAEs3P,mBACnez/Q,EAAE,GAAGA,GAAGmoB,EAAE01P,iBAAiB11P,EAAE01P,eAAe,GAAG79Q,GAAGmoB,EAAEu1P,kBAAkBv1P,EAAEu1P,gBAAgB,GAAGv1P,IAAIgpO,KAAIC,GAAED,GAAE,KAAKzpH,GAAE,GAAG,EAAE/1H,EAAEgsP,UAAU,OAAOhsP,EAAE8/P,YAAY9/P,EAAE8/P,WAAWO,WAAWrgQ,EAAExL,EAAEwL,EAAE6/P,aAAarrQ,EAAEwL,EAAExL,EAAEwL,EAAE6/P,YAAe,OAAOrrQ,EAAE,CAAC,IAAInB,EAAEk1J,GAAEA,IAlChJ,GAkCsJoiH,GAAGj3O,QAAQ,KAAKrO,GAAG4uO,GAAG,IAAI1gQ,EAAEiiQ,KAAK,GAAGhxO,GAAGjxB,GAAG,CAAC,GAAG,mBAAmBA,EAAE,IAAIkmF,EAAE,CAAC98E,MAAMpJ,EAAE0gE,eAAe1sC,IAAIh0B,EAAEmxC,mBAAmBluB,EAAE,CAA8C,IAAI4sD,GAAjDqW,GAAGA,EAAElmF,EAAEg1B,gBAAgBkxD,EAAEjxD,aAAaxmB,QAAesrL,cAAc7zG,EAAE6zG,eAAe,GAAGlqH,GAAG,IAAIA,EAAE2qM,WAAW,CAACt0L,EAAErW,EAAEq3L,WAAW,IAAI9rK,EAAEvrB,EAAEs3L,aAC9e56P,EAAEsjE,EAAEu3L,UAAUv3L,EAAEA,EAAEw3L,YAAY,IAAInhL,EAAE6gB,SAASx6F,EAAEw6F,SAAS,MAAM0zK,GAAIv0L,EAAE,KAAK,MAAMjjE,EAAE,IAAIwnO,EAAE,EAAE1qP,GAAG,EAAEw2J,GAAG,EAAE+O,EAAE,EAAEgmF,EAAG,EAAEhmO,EAAEtlB,EAAEqe,EAAE,KAAKtjB,EAAE,OAAO,CAAC,IAAI,IAAI2rI,EAAKphH,IAAI4gE,GAAG,IAAIkV,GAAG,IAAI91E,EAAEyhF,WAAWhnG,EAAE0qP,EAAErvJ,GAAG91E,IAAI/Y,GAAG,IAAIsjE,GAAG,IAAIvqD,EAAEyhF,WAAWwvD,EAAEk0F,EAAE56K,GAAG,IAAIvqD,EAAEyhF,WAAW0jJ,GAAGnlO,EAAE+pK,UAAU7yL,QAAW,QAAQkqI,EAAEphH,EAAEuU,aAAkBxb,EAAEiH,EAAEA,EAAEohH,EAAE,OAAO,CAAC,GAAGphH,IAAItlB,EAAE,MAAMjF,EAA+C,GAA7CsjB,IAAI6nE,KAAKo/E,IAAIlqE,IAAIr7F,EAAE0qP,GAAGpsO,IAAI9R,KAAK++O,IAAKz7K,IAAI0mF,EAAEk0F,GAAM,QAAQ/jH,EAAEphH,EAAEgnH,aAAa,MAAUjuH,GAAJiH,EAAEjH,GAAM6qB,WAAW5jB,EAAEohH,EAAExgD,GAAG,IAAInmF,IAAI,IAAIw2J,EAAE,KAAK,CAACntJ,MAAMrJ,EAAEi0B,IAAIuiI,QAAQrwE,EAAE,KAAKA,EAAEA,GAAG,CAAC98E,MAAM,EAAE4qB,IAAI,QAAQkyD,EACtf,KAAKq8K,GAAG,CAACmY,YAAY16Q,EAAE4vD,eAAes2B,GAAGw6K,IAAG,EAAG5rG,GAAE7zJ,EAAE,OAAO05Q,KAAK,MAAMF,GAAI,GAAG,OAAO3lH,GAAE,MAAMh5J,MAAMm5J,EAAE,MAAMugH,GAAG1gH,GAAE2lH,GAAI3lH,GAAEA,GAAEg4G,kBAAiB,OAAOh4G,IAAGA,GAAE7zJ,EAAE,OAAO,IAAIjB,EAAEijB,EAAEijE,EAAEnrF,EAAE,OAAO+5J,IAAG,CAAC,IAAI95J,EAAE85J,GAAE2jG,UAAmC,GAAvB,GAAFz9P,GAAMy8P,GAAG3iG,GAAE0/F,UAAU,IAAS,IAAFx5P,EAAM,CAAC,IAAImB,EAAE24J,GAAE0jG,UAAU,GAAG,OAAOr8P,EAAE,CAAC,IAAIuE,EAAEvE,EAAE+7B,IAAI,OAAOx3B,IAAI,mBAAoBA,EAAEA,EAAE,MAAMA,EAAEy/B,QAAQ,OAAO,OAAS,KAAFnlC,GAAQ,KAAK,EAAEk7Q,GAAGphH,IAAGA,GAAE2jG,YAAY,EAAE,MAAM,KAAK,EAAEyd,GAAGphH,IAAGA,GAAE2jG,YAAY,EAAE2d,GAAGthH,GAAE0jG,UAAU1jG,IAAG,MAAM,KAAK,KAAKA,GAAE2jG,YAAY,KAAK,MAAM,KAAK,KAAK3jG,GAAE2jG,YAAY,KAAK2d,GAAGthH,GAAE0jG,UACzf1jG,IAAG,MAAM,KAAK,EAAEshH,GAAGthH,GAAE0jG,UAAU1jG,IAAG,MAAM,KAAK,EAAMihH,GAAG/1Q,EAAPo7F,EAAE05D,GAAS5uE,GAAG8vL,GAAG56K,GAAG05D,GAAEA,GAAEg4G,YAAY,MAAM2N,GAAI,GAAG,OAAO3lH,GAAE,MAAMh5J,MAAMm5J,EAAE,MAAMugH,GAAG1gH,GAAE2lH,GAAI3lH,GAAEA,GAAEg4G,kBAAiB,OAAOh4G,IAAkD,GAA/Cp0J,EAAE6hQ,GAAGpmQ,EAAE8lQ,KAAKjnQ,EAAE0F,EAAEg6Q,YAAYx0L,EAAExlF,EAAEkvD,eAAkBzzD,IAAInB,GAAGA,GAAGA,EAAEg6B,eAAegtO,GAAGhnQ,EAAEg6B,cAAclc,gBAAgB9d,GAAG,CAAC,OAAOkrF,GAAGj1D,GAAGj2B,KAAKmB,EAAE+pF,EAAE98E,WAAc,KAAR1I,EAAEwlF,EAAElyD,OAAiBtzB,EAAEvE,GAAG,mBAAmBnB,GAAGA,EAAE0lE,eAAevkE,EAAEnB,EAAEm2C,aAAazyB,KAAK8mB,IAAI9kC,EAAE1F,EAAE8F,MAAMtE,UAAUkE,GAAGvE,EAAEnB,EAAEg6B,eAAeliB,WAAW3W,EAAE84B,aAAaxmB,QAASsrL,eAAer5L,EAAEA,EAAEq5L,eAChf3+F,EAAEpgG,EAAE6lG,YAAYrkG,OAAOwD,EAAE0e,KAAK8mB,IAAI0gD,EAAE98E,MAAMgyF,GAAGlV,OAAE,IAASA,EAAElyD,IAAIh0B,EAAE0e,KAAK8mB,IAAI0gD,EAAElyD,IAAIonE,IAAI16F,EAAE4sF,QAAQttF,EAAEkmF,IAAIkV,EAAElV,EAAEA,EAAElmF,EAAEA,EAAEo7F,GAAGA,EAAE2mK,GAAG/mQ,EAAEgF,GAAGuM,EAAEw1P,GAAG/mQ,EAAEkrF,GAAGkV,GAAG7uF,IAAI,IAAI7L,EAAE85Q,YAAY95Q,EAAEwmQ,aAAa9rK,EAAExhE,MAAMl5B,EAAEymQ,eAAe/rK,EAAEx4E,QAAQliB,EAAE0mQ,YAAY76P,EAAEqtB,MAAMl5B,EAAE2mQ,cAAc96P,EAAEqW,WAAUzmB,EAAEA,EAAE0zI,eAAgBwO,SAASjjD,EAAExhE,KAAKwhE,EAAEx4E,QAAQliB,EAAEg6L,kBAAkB16L,EAAEkmF,GAAGxlF,EAAE45L,SAASn+L,GAAGuE,EAAE4sF,OAAO/gF,EAAEqtB,KAAKrtB,EAAEqW,UAAUzmB,EAAEs0I,OAAOlkI,EAAEqtB,KAAKrtB,EAAEqW,QAAQliB,EAAE45L,SAASn+L,OAAQA,EAAE,GAAG,IAAIuE,EAAE1F,EAAE0F,EAAEA,EAAEwoC,YAAY,IAAIxoC,EAAEqmG,UAAU5qG,EAAE6E,KAAK,CAACgZ,QAAQtZ,EAAE0rB,KAAK1rB,EAAEioD,WAAW1vB,IAAIv4B,EAAEwlC,YAC/c,IAAvC,mBAAoBlrC,EAAE6kC,OAAO7kC,EAAE6kC,QAAY7kC,EAAE,EAAEA,EAAEmB,EAAEK,OAAOxB,KAAI0F,EAAEvE,EAAEnB,IAAKgf,QAAQ2uC,WAAWjoD,EAAE0rB,KAAK1rB,EAAEsZ,QAAQksB,UAAUxlC,EAAEu4B,IAAIspO,GAAG,KAAK7B,KAAK5uO,GAAGA,GAAG,KAAK7O,EAAEkd,QAAQ1zB,EAAEqoJ,GAAE7zJ,EAAE,OAAO,IAAIjG,EAAEF,EAAE,OAAOg6J,IAAG,CAAC,IAAI8lH,EAAG9lH,GAAE2jG,UAAU,GAAM,GAAHmiB,EAAM,CAAC,IAAIC,EAAG/lH,GAAE0jG,UAAkB,OAAJ93P,EAAE1F,GAANmB,EAAE24J,IAAevzI,KAAK,KAAK,EAAE,KAAK,GAAG,KAAK,GAAGm0P,GAAG,GAAG,GAAGv5Q,GAAG,MAAM,KAAK,EAAE,IAAI2+Q,EAAG3+Q,EAAEq4P,UAAU,GAAe,EAAZr4P,EAAEs8P,UAAY,GAAG,OAAOoiB,EAAGC,EAAGt7O,wBAAwB,CAAC,IAAIu7O,EAAG5+Q,EAAE+qP,cAAc/qP,EAAEsL,KAAKozQ,EAAG7K,cAAclF,GAAG3uQ,EAAEsL,KAAKozQ,EAAG7K,eAAe8K,EAAGtsO,mBAAmBusO,EAAGF,EAAGzuB,cACve0uB,EAAGnF,qCAAqC,IAAIqF,EAAG7+Q,EAAE8wQ,YAAY,OAAO+N,GAAIxN,GAAGrxQ,EAAE6+Q,EAAGF,GAAM,MAAM,KAAK,EAAE,IAAIG,EAAG9+Q,EAAE8wQ,YAAY,GAAG,OAAOgO,EAAG,CAAQ,GAAPj7Q,EAAE,KAAQ,OAAO7D,EAAEwqB,MAAM,OAAOxqB,EAAEwqB,MAAMpF,KAAK,KAAK,EAA4B,KAAK,EAAEvhB,EAAE7D,EAAEwqB,MAAM6tO,UAAUgZ,GAAGrxQ,EAAE8+Q,EAAGj7Q,GAAK,MAAM,KAAK,EAAE,IAAIk7Q,EAAG/+Q,EAAEq4P,UAAU,OAAOqmB,GAAgB,EAAZ1+Q,EAAEs8P,WAAavmO,GAAG/1B,EAAEsL,KAAKtL,EAAE6zQ,gBAAgBkL,EAAGr7O,QAAQ,MAAM,KAAK,EAAQ,KAAK,EAAQ,KAAK,GAC1V,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,MADmU,KAAK,GAAG,GAAG,OAAO1jC,EAAEiwP,cAAc,CAAC,IAAI+uB,EAAGh/Q,EAAEq8P,UAAU,GAAG,OAAO2iB,EAAG,CAAC,IAAIC,EAAGD,EAAG/uB,cAAc,GAAG,OAAOgvB,EAAG,CAAC,IAAIC,EACzfD,EAAGziB,WAAW,OAAO0iB,GAAIxgB,GAAGwgB,KAAM,MAA4C,QAAQ,MAAMv/Q,MAAMm5J,EAAE,OAAQ,GAAM,IAAH2lH,EAAO,CAACz+Q,OAAE,EAAO,IAAIm/Q,EAAGxmH,GAAE58H,IAAI,GAAG,OAAOojP,EAAG,CAAC,IAAIC,EAAGzmH,GAAE0/F,UAAiB1/F,GAAEvzI,IAA+BplB,EAAEo/Q,EAAG,mBAAoBD,EAAGA,EAAGn/Q,GAAGm/Q,EAAGn7O,QAAQhkC,GAAG24J,GAAEA,GAAEg4G,YAAY,MAAM2N,GAAI,GAAG,OAAO3lH,GAAE,MAAMh5J,MAAMm5J,EAAE,MAAMugH,GAAG1gH,GAAE2lH,GAAI3lH,GAAEA,GAAEg4G,kBAAiB,OAAOh4G,IAAGA,GAAE,KAAKk1G,KAAKh1G,GAAEl1J,OAAOmjB,EAAEkd,QAAQ1zB,EAAE,GAAGkrQ,GAAGA,IAAG,EAAGC,GAAG30P,EAAE40P,GAAG98Q,OAAO,IAAI+5J,GAAE7zJ,EAAE,OAAO6zJ,IAAG/5J,EAAE+5J,GAAEg4G,WAAWh4G,GAAEg4G,WAAW,KAAKh4G,GAAE/5J,EACpX,GAD2Y,KAArBA,EAAEkoB,EAAEy1P,oBAC9d3B,GAAG,MAAM,aAAah8Q,EAAEkoB,IAAI+0P,GAAGD,MAAMA,GAAG,EAAEC,GAAG/0P,GAAG80P,GAAG,EAAE,mBAAoByD,IAAIA,GAAG/uQ,EAAE+nP,UAAU15P,GAAGyqK,GAAEtiJ,GAAM0zP,GAAG,MAAMA,IAAG,EAAG1zP,EAAE2zP,GAAGA,GAAG,KAAK3zP,EAAE,OA1C9D,IAAK,EA0C6D+xI,KAAsB21G,KAAL,KAAsB,SAASgQ,KAAK,KAAK,OAAO7lH,IAAG,CAAC,IAAI7xI,EAAE6xI,GAAE2jG,UAAU,IAAO,IAAFx1O,IAAQwyP,GAAG3gH,GAAE0jG,UAAU1jG,IAAG,IAAO,IAAF7xI,IAAQ00P,KAAKA,IAAG,EAAGnN,GAAG,IAAG,WAAgB,OAAL0O,KAAY,SAAQpkH,GAAEA,GAAEg4G,YAAY,SAASoM,KAAK,GAAG,KAAKrB,GAAG,CAAC,IAAI50P,EAAE,GAAG40P,GAAG,GAAGA,GAAS,OAANA,GAAG,GAAUtN,GAAGtnP,EAAEw4P,KAC3Y,SAASA,KAAK,GAAG,OAAO7D,GAAG,OAAM,EAAG,IAAI30P,EAAE20P,GAAW,GAARA,GAAG,KA3CwB,IA2Cb,GAAF5iH,IAAe,MAAMl5J,MAAMm5J,EAAE,MAAM,IAAIl6J,EAAEi6J,GAAQ,IAANA,IA3CZ,GA2CsB/xI,EAAEA,EAAEkd,QAAQmsO,YAAY,OAAOrpP,GAAG,CAAC,IAAI,IAAIxW,EAAEwW,EAAE,GAAG,IAAiB,IAAZxW,EAAEgsP,WAAe,OAAOhsP,EAAE8U,KAAK,KAAK,EAAE,KAAK,GAAG,KAAK,GAAGm0P,GAAG,IAAI,EAAEjpQ,GAAGipQ,GAAG,EAAE,GAAGjpQ,IAAI,MAAM3R,GAAG,GAAG,OAAOmoB,EAAE,MAAMnnB,MAAMm5J,EAAE,MAAMugH,GAAGvyP,EAAEnoB,GAAG2R,EAAEwW,EAAE6pP,WAAW7pP,EAAE6pP,WAAW,KAAK7pP,EAAExW,EAAW,OAATuoJ,GAAEj6J,EAAE4vQ,MAAW,EAAG,SAAS+Q,GAAGz4P,EAAEloB,EAAE0R,GAAkCugQ,GAAG/pP,EAAxBloB,EAAE27Q,GAAGzzP,EAAfloB,EAAEo6Q,GAAG1oQ,EAAE1R,GAAY,aAAuC,QAAnBkoB,EAAEk1P,GAAGl1P,EAAE,cAAsBsiJ,GAAEtiJ,GACpb,SAASuyP,GAAGvyP,EAAEloB,GAAG,GAAG,IAAIkoB,EAAE1B,IAAIm6P,GAAGz4P,EAAEA,EAAEloB,QAAQ,IAAI,IAAI0R,EAAEwW,EAAE0xO,OAAO,OAAOloP,GAAG,CAAC,GAAG,IAAIA,EAAE8U,IAAI,CAACm6P,GAAGjvQ,EAAEwW,EAAEloB,GAAG,MAAW,GAAG,IAAI0R,EAAE8U,IAAI,CAAC,IAAIzmB,EAAE2R,EAAE+nP,UAAU,GAAG,mBAAoB/nP,EAAEhF,KAAK02M,0BAA0B,mBAAoBrjN,EAAEg8Q,oBAAoB,OAAOC,KAAKA,GAAG/pP,IAAIlyB,IAAI,CAAgCkyQ,GAAGvgQ,EAAxBwW,EAAE4zP,GAAGpqQ,EAAfwW,EAAEkyP,GAAGp6Q,EAAEkoB,GAAY,aAAuC,QAAnBxW,EAAE0rQ,GAAG1rQ,EAAE,cAAsB84J,GAAE94J,GAAG,OAAOA,EAAEA,EAAEkoP,QAC5V,SAASulB,GAAGj3P,EAAEloB,EAAE0R,GAAG,IAAI3R,EAAEmoB,EAAEg3P,UAAU,OAAOn/Q,GAAGA,EAAEqC,OAAOpC,GAAGkxP,KAAIhpO,GAAGu/G,KAAI/1H,EA7C4C,IA6C1C+4J,IA7CqC,IA6C7BA,IAAQ,aAAa8xG,IAAIlN,KAAKkM,GA7CqG,IA6C/F6C,GAAGl2P,EAAEu/G,IAAGk1I,IAAG,EAAGe,GAAGx1P,EAAExW,KAAwB,KAAnB1R,EAAEkoB,EAAE01P,iBAAsB59Q,EAAE0R,IAAIwW,EAAE01P,eAAelsQ,EAAEwW,EAAEu2P,yBAAyB/sQ,IAAIwW,EAAEu2P,uBAAuB,EAAEv2P,EAAEs2P,aAAa,MAAMh0G,GAAEtiJ,KAAK,SAASuzP,GAAGvzP,EAAEloB,GAAG,IAAI0R,EAAEwW,EAAEuxO,UAAU,OAAO/nP,GAAGA,EAAEtP,OAAOpC,GAAO,IAAJA,EAAE,KAAiBA,EAAEkzQ,GAATlzQ,EAAEizQ,KAAY/qP,EAAE,OAAiB,QAAVA,EAAEk1P,GAAGl1P,EAAEloB,KAAawqK,GAAEtiJ,GACvYg0P,GAAG,SAASh0P,EAAEloB,EAAE0R,GAAG,IAAI3R,EAAEC,EAAE4wQ,eAAe,GAAG,OAAO1oP,EAAE,CAAC,IAAIhiB,EAAElG,EAAE+3Q,aAAa,GAAG7vP,EAAE+sP,gBAAgB/uQ,GAAGokK,GAAEllI,QAAQyrO,IAAG,MAAO,CAAC,GAAG9wQ,EAAE2R,EAAE,CAAO,OAANm/P,IAAG,EAAU7wQ,EAAEwmB,KAAK,KAAK,EAAEuyP,GAAG/4Q,GAAGi6D,KAAK,MAAM,KAAK,EAAQ,GAAN66M,GAAG90Q,GAAa,EAAPA,EAAEsgD,MAAQ,IAAI5uC,GAAGxL,EAAE+lF,OAAO,OAAOjsF,EAAE4wQ,eAAe5wQ,EAAEywQ,oBAAoB,EAAE,KAAK,MAAM,KAAK,EAAEpmG,GAAErqK,EAAE0M,OAAO+gQ,GAAGztQ,GAAG,MAAM,KAAK,EAAE40Q,GAAG50Q,EAAEA,EAAEy5P,UAAU6F,eAAe,MAAM,KAAK,GAAG+Q,GAAGrwQ,EAAEA,EAAEi1Q,cAAclvQ,OAAO,MAAM,KAAK,GAAG,GAAG,OAAO/F,EAAEqxP,cAA6C,OAAG,KAAjCtxP,EAAEC,EAAE4rB,MAAM6kP,sBAA8B1wQ,GAAG2R,EAAS4nQ,GAAGpxP,EAAEloB,EAAE0R,IAAG08H,GAAE0rB,GAC1e,EAD4eA,GAAE10H,SACtd,QAAnBplC,EAAEs4Q,GAAGpwP,EAAEloB,EAAE0R,IAAmB1R,EAAEswK,QAAQ,MAAKliC,GAAE0rB,GAAY,EAAVA,GAAE10H,SAAa,MAAM,KAAK,GAA8B,GAA3BrlC,EAAEC,EAAEywQ,qBAAqB/+P,EAAK,IAAiB,GAAZwW,EAAEw1O,WAAc,CAAC,GAAG39P,EAAE,OAAOi6Q,GAAG9xP,EAAEloB,EAAE0R,GAAG1R,EAAE09P,WAAW,GAA+E,GAA1D,QAAlBx3P,EAAElG,EAAEqxP,iBAAyBnrP,EAAE0zQ,UAAU,KAAK1zQ,EAAE2zQ,KAAK,MAAMzrI,GAAE0rB,GAAEA,GAAE10H,UAAerlC,EAAE,OAAO,KAAK,OAAOu4Q,GAAGpwP,EAAEloB,EAAE0R,GAAGm/P,IAAG,QAASA,IAAG,EAAsB,OAAnB7wQ,EAAE4wQ,eAAe,EAAS5wQ,EAAEwmB,KAAK,KAAK,EAAuJ,GAArJzmB,EAAEC,EAAE0M,KAAK,OAAOwb,IAAIA,EAAEu1O,UAAU,KAAKz9P,EAAEy9P,UAAU,KAAKz9P,EAAE09P,WAAW,GAAGx1O,EAAEloB,EAAE+3Q,aAAa7xQ,EAAEgnQ,GAAGltQ,EAAEwwP,GAAEprN,SAASsrO,GAAG1wQ,EAAE0R,GAAGxL,EAAE6vQ,GAAG,KAAK/1Q,EAAED,EAAEmoB,EAAEhiB,EAAEwL,GAAG1R,EAAE09P,WAAW,EAAK,iBACrex3P,GAAG,OAAOA,GAAG,mBAAoBA,EAAE20B,aAAQ,IAAS30B,EAAE0pP,SAAS,CAAc,GAAb5vP,EAAEwmB,IAAI,EAAE2vP,KAAQ9rG,GAAEtqK,GAAG,CAAC,IAAIgF,GAAE,EAAG0oQ,GAAGztQ,QAAQ+E,GAAE,EAAG/E,EAAEqxP,cAAc,OAAOnrP,EAAEssB,YAAO,IAAStsB,EAAEssB,MAAMtsB,EAAEssB,MAAM,KAAK,IAAIvtB,EAAElF,EAAEq7E,yBAAyB,mBAAoBn2E,GAAG6tQ,GAAG9yQ,EAAED,EAAEkF,EAAEijB,GAAGhiB,EAAE6xP,QAAQgb,GAAG/yQ,EAAEy5P,UAAUvzP,EAAEA,EAAE8sQ,oBAAoBhzQ,EAAEyzQ,GAAGzzQ,EAAED,EAAEmoB,EAAExW,GAAG1R,EAAE84Q,GAAG,KAAK94Q,EAAED,GAAE,EAAGgF,EAAE2M,QAAQ1R,EAAEwmB,IAAI,EAAEqiL,GAAE,KAAK7oM,EAAEkG,EAAEwL,GAAG1R,EAAEA,EAAE4rB,MAAM,OAAO5rB,EAAE,KAAK,GAAuG,GAApGkG,EAAElG,EAAEmsP,YAAY,OAAOjkO,IAAIA,EAAEu1O,UAAU,KAAKz9P,EAAEy9P,UAAU,KAAKz9P,EAAE09P,WAAW,GAAGx1O,EAAEloB,EAAE+3Q,aA7Opd,SAAY7vP,GAAG,IAAI,IAAIA,EAAE2nO,QAAQ,CAAC3nO,EAAE2nO,QAAQ,EAAE,IAAI7vP,EAAEkoB,EAAEkwO,MAAMp4P,EAAEA,IAAIkoB,EAAE4nO,QAAQ9vP,EAAEA,EAAE8G,MAAK,SAAS9G,GAAG,IAAIkoB,EAAE2nO,UAAU7vP,EAAEA,EAAE0a,QAAQwN,EAAE2nO,QAAQ,EAAE3nO,EAAE4nO,QAAQ9vP,MAAI,SAASA,GAAG,IAAIkoB,EAAE2nO,UAAU3nO,EAAE2nO,QAAQ,EAAE3nO,EAAE4nO,QAAQ9vP,OA6OwRk2P,CAAGhwP,GAAM,IAAIA,EAAE2pP,QAAQ,MAAM3pP,EAAE4pP,QACnd,OAA7C5pP,EAAEA,EAAE4pP,QAAQ9vP,EAAE0M,KAAKxG,EAAEnB,EAAE/E,EAAEwmB,IAQqC,SAAY0B,GAAG,GAAG,mBAAoBA,EAAE,OAAOswP,GAAGtwP,GAAG,EAAE,EAAE,GAAG,MAASA,EAAY,CAAc,IAAbA,EAAEA,EAAE0nO,YAAgB8F,EAAG,OAAO,GAAG,GAAGxtO,IAAI6tO,EAAG,OAAO,GAAG,OAAO,EAR/K6qB,CAAG16Q,GAAGgiB,EAAE6nP,GAAG7pQ,EAAEgiB,GAAUnjB,GAAG,KAAK,EAAE/E,EAAEy4Q,GAAG,KAAKz4Q,EAAEkG,EAAEgiB,EAAExW,GAAG,MAAM,KAAK,EAAE1R,EAAE24Q,GAAG,KAAK34Q,EAAEkG,EAAEgiB,EAAExW,GAAG,MAAM,KAAK,GAAG1R,EAAEq4Q,GAAG,KAAKr4Q,EAAEkG,EAAEgiB,EAAExW,GAAG,MAAM,KAAK,GAAG1R,EAAEu4Q,GAAG,KAAKv4Q,EAAEkG,EAAE6pQ,GAAG7pQ,EAAEwG,KAAKwb,GAAGnoB,EAAE2R,GAAG,MAAM,QAAQ,MAAM3Q,MAAMm5J,EAAE,IAAIh0J,EAAE,KAAM,OAAOlG,EAAE,KAAK,EAAE,OAAOD,EAAEC,EAAE0M,KAAKxG,EAAElG,EAAE+3Q,aAA2CU,GAAGvwP,EAAEloB,EAAED,EAArCmG,EAAElG,EAAEmsP,cAAcpsP,EAAEmG,EAAE6pQ,GAAGhwQ,EAAEmG,GAAcwL,GAAG,KAAK,EAAE,OAAO3R,EAAEC,EAAE0M,KAAKxG,EAAElG,EAAE+3Q,aAA2CY,GAAGzwP,EAAEloB,EAAED,EAArCmG,EAAElG,EAAEmsP,cAAcpsP,EAAEmG,EAAE6pQ,GAAGhwQ,EAAEmG,GAAcwL,GAAG,KAAK,EAAwB,GAAtBqnQ,GAAG/4Q,GAAsB,QAAnBD,EAAEC,EAAEkyQ,aAAwB,MAAMnxQ,MAAMm5J,EAAE,MACnZ,GAD2ah0J,EAAE,QAApBA,EAAElG,EAAEqxP,eAAyBnrP,EAAE+Y,QACrf,KAAKqzP,GAAGtyQ,EAAED,EAAEC,EAAE+3Q,aAAa,KAAKrmQ,IAAG3R,EAAEC,EAAEqxP,cAAcpyO,WAAe/Y,EAAE+zD,KAAKj6D,EAAEs4Q,GAAGpwP,EAAEloB,EAAE0R,OAAO,CAAmF,IAA/ExL,EAAElG,EAAEy5P,UAAU4F,WAAQqY,GAAG12K,GAAGhhG,EAAEy5P,UAAU6F,cAAcxgO,YAAY24O,GAAGz3Q,EAAEkG,EAAEyxQ,IAAG,GAAMzxQ,EAAE,IAAIwL,EAAE4iQ,GAAGt0Q,EAAE,KAAKD,EAAE2R,GAAG1R,EAAE4rB,MAAMla,EAAEA,GAAGA,EAAEgsP,WAAuB,EAAbhsP,EAAEgsP,UAAa,KAAKhsP,EAAEA,EAAE4+J,aAAau4B,GAAE3gL,EAAEloB,EAAED,EAAE2R,GAAGuoD,KAAKj6D,EAAEA,EAAE4rB,MAAM,OAAO5rB,EAAE,KAAK,EAAE,OAAO80Q,GAAG90Q,GAAG,OAAOkoB,GAAG8vP,GAAGh4Q,GAAGD,EAAEC,EAAE0M,KAAKxG,EAAElG,EAAE+3Q,aAAahzQ,EAAE,OAAOmjB,EAAEA,EAAE+sP,cAAc,KAAKhwQ,EAAEiB,EAAEogB,SAASohP,GAAG3nQ,EAAEmG,GAAGjB,EAAE,KAAK,OAAOF,GAAG2iQ,GAAG3nQ,EAAEgF,KAAK/E,EAAE09P,WAAW,IAAIgb,GAAGxwP,EAAEloB,GAAU,EAAPA,EAAEsgD,MAAQ,IAAI5uC,GAAGxL,EAAE+lF,QAAQjsF,EAAE4wQ,eAC7e5wQ,EAAEywQ,oBAAoB,EAAEzwQ,EAAE,OAAO6oM,GAAE3gL,EAAEloB,EAAEiF,EAAEyM,GAAG1R,EAAEA,EAAE4rB,OAAO5rB,EAAE,KAAK,EAAE,OAAO,OAAOkoB,GAAG8vP,GAAGh4Q,GAAG,KAAK,KAAK,GAAG,OAAOs5Q,GAAGpxP,EAAEloB,EAAE0R,GAAG,KAAK,EAAE,OAAOkjQ,GAAG50Q,EAAEA,EAAEy5P,UAAU6F,eAAev/P,EAAEC,EAAE+3Q,aAAa,OAAO7vP,EAAEloB,EAAE4rB,MAAMyoP,GAAGr0Q,EAAE,KAAKD,EAAE2R,GAAGm3L,GAAE3gL,EAAEloB,EAAED,EAAE2R,GAAG1R,EAAE4rB,MAAM,KAAK,GAAG,OAAO7rB,EAAEC,EAAE0M,KAAKxG,EAAElG,EAAE+3Q,aAA2CM,GAAGnwP,EAAEloB,EAAED,EAArCmG,EAAElG,EAAEmsP,cAAcpsP,EAAEmG,EAAE6pQ,GAAGhwQ,EAAEmG,GAAcwL,GAAG,KAAK,EAAE,OAAOm3L,GAAE3gL,EAAEloB,EAAEA,EAAE+3Q,aAAarmQ,GAAG1R,EAAE4rB,MAAM,KAAK,EAAkD,KAAK,GAAG,OAAOi9K,GAAE3gL,EAAEloB,EAAEA,EAAE+3Q,aAAazxP,SAAS5U,GAAG1R,EAAE4rB,MAAM,KAAK,GAAG1D,EAAE,CAC9a,GAD+anoB,EAAEC,EAAE0M,KAAKoiI,SAC7e5oI,EAAElG,EAAE+3Q,aAAa9yQ,EAAEjF,EAAEi1Q,cAAwB5E,GAAGrwQ,EAAb+E,EAAEmB,EAAEH,OAAiB,OAAOd,EAAE,CAAC,IAAIkmF,EAAElmF,EAAEc,MAA0G,GAAG,IAAvGhB,EAAE0mQ,GAAGtgL,EAAEpmF,GAAG,EAAwF,GAArF,mBAAoBhF,EAAE8gR,sBAAsB9gR,EAAE8gR,sBAAsB11L,EAAEpmF,GAAG,cAAwB,GAAGE,EAAEqhB,WAAWpgB,EAAEogB,WAAWgkJ,GAAEllI,QAAQ,CAACplC,EAAEs4Q,GAAGpwP,EAAEloB,EAAE0R,GAAG,MAAMwW,QAAQ,IAAc,QAAVijE,EAAEnrF,EAAE4rB,SAAiBu/D,EAAEyuK,OAAO55P,GAAG,OAAOmrF,GAAG,CAAC,IAAIrW,EAAEqW,EAAE+tK,aAAa,GAAG,OAAOpkL,EAAE,CAAC7vE,EAAEkmF,EAAEv/D,MAAM,IAAI,IAAIy0E,EAAEvrB,EAAE67L,aAAa,OAAOtwK,GAAG,CAAC,GAAGA,EAAEwuE,UAAU9uK,GAAG,IAAKsgG,EAAE8gG,aAAap8L,GAAG,CAAC,IAAIomF,EAAE3kE,OAAM65E,EAAEuxK,GAAGlgQ,EAAE,OAAQ8U,IAAI,EAAEyrP,GAAG9mL,EAAEkV,IAAIlV,EAAEylL,eAAel/P,IAAIy5E,EAAEylL,eAC3el/P,GAAiB,QAAd2uF,EAAElV,EAAEsyK,YAAoBp9J,EAAEuwK,eAAel/P,IAAI2uF,EAAEuwK,eAAel/P,GAAG8+P,GAAGrlL,EAAEyuK,OAAOloP,GAAGojE,EAAE87L,eAAel/P,IAAIojE,EAAE87L,eAAel/P,GAAG,MAAM2uF,EAAEA,EAAE96F,WAAWN,EAAE,KAAKkmF,EAAE3kE,KAAI2kE,EAAEz+E,OAAO1M,EAAE0M,KAAK,KAAay+E,EAAEv/D,MAAM,GAAG,OAAO3mB,EAAEA,EAAE20P,OAAOzuK,OAAO,IAAIlmF,EAAEkmF,EAAE,OAAOlmF,GAAG,CAAC,GAAGA,IAAIjF,EAAE,CAACiF,EAAE,KAAK,MAAkB,GAAG,QAAfkmF,EAAElmF,EAAEqrK,SAAoB,CAACnlF,EAAEyuK,OAAO30P,EAAE20P,OAAO30P,EAAEkmF,EAAE,MAAMlmF,EAAEA,EAAE20P,OAAOzuK,EAAElmF,GAAG4jM,GAAE3gL,EAAEloB,EAAEkG,EAAEogB,SAAS5U,GAAG1R,EAAEA,EAAE4rB,MAAM,OAAO5rB,EAAE,KAAK,EAAE,OAAOkG,EAAElG,EAAE0M,KAAsB3M,GAAjBgF,EAAE/E,EAAE+3Q,cAAiBzxP,SAASoqP,GAAG1wQ,EAAE0R,GAAmC3R,EAAEA,EAAlCmG,EAAE4qQ,GAAG5qQ,EAAEnB,EAAE+7Q,wBAA8B9gR,EAAE09P,WAAW,EAAE70D,GAAE3gL,EAAEloB,EAAED,EAAE2R,GAAG1R,EAAE4rB,MACrf,KAAK,GAAG,OAAgB7mB,EAAEgrQ,GAAX7pQ,EAAElG,EAAE0M,KAAY1M,EAAE+3Q,cAA6BQ,GAAGrwP,EAAEloB,EAAEkG,EAAtBnB,EAAEgrQ,GAAG7pQ,EAAEwG,KAAK3H,GAAchF,EAAE2R,GAAG,KAAK,GAAG,OAAOquI,GAAG73H,EAAEloB,EAAEA,EAAE0M,KAAK1M,EAAE+3Q,aAAah4Q,EAAE2R,GAAG,KAAK,GAAG,OAAO3R,EAAEC,EAAE0M,KAAKxG,EAAElG,EAAE+3Q,aAAa7xQ,EAAElG,EAAEmsP,cAAcpsP,EAAEmG,EAAE6pQ,GAAGhwQ,EAAEmG,GAAG,OAAOgiB,IAAIA,EAAEu1O,UAAU,KAAKz9P,EAAEy9P,UAAU,KAAKz9P,EAAE09P,WAAW,GAAG19P,EAAEwmB,IAAI,EAAE6jJ,GAAEtqK,IAAImoB,GAAE,EAAGulP,GAAGztQ,IAAIkoB,GAAE,EAAGwoP,GAAG1wQ,EAAE0R,GAAG4hQ,GAAGtzQ,EAAED,EAAEmG,GAAKutQ,GAAGzzQ,EAAED,EAAEmG,EAAEwL,GAAGonQ,GAAG,KAAK94Q,EAAED,GAAE,EAAGmoB,EAAExW,GAAG,KAAK,GAAG,OAAOsoQ,GAAG9xP,EAAEloB,EAAE0R,GAAG,MAAM3Q,MAAMm5J,EAAE,IAAIl6J,EAAEwmB,OAAQ,IAAIi6P,GAAG,KAAK3F,GAAG,KAE1Z,SAASiG,GAAG74P,EAAEloB,EAAE0R,EAAE3R,GAAGK,KAAKomB,IAAI0B,EAAE9nB,KAAKqR,IAAIC,EAAEtR,KAAKkwK,QAAQlwK,KAAKwrB,MAAMxrB,KAAKw5P,OAAOx5P,KAAKq5P,UAAUr5P,KAAKsM,KAAKtM,KAAK+rP,YAAY,KAAK/rP,KAAKyH,MAAM,EAAEzH,KAAK+8B,IAAI,KAAK/8B,KAAK23Q,aAAa/3Q,EAAEI,KAAK84P,aAAa94P,KAAKixP,cAAcjxP,KAAK8xQ,YAAY9xQ,KAAK60Q,cAAc,KAAK70Q,KAAKkgD,KAAKvgD,EAAEK,KAAKs9P,UAAU,EAAEt9P,KAAKoxQ,WAAWpxQ,KAAKmxQ,YAAYnxQ,KAAK2xQ,WAAW,KAAK3xQ,KAAKqwQ,oBAAoBrwQ,KAAKwwQ,eAAe,EAAExwQ,KAAKq9P,UAAU,KAAK,SAASoa,GAAG3vP,EAAEloB,EAAE0R,EAAE3R,GAAG,OAAO,IAAIghR,GAAG74P,EAAEloB,EAAE0R,EAAE3R,GAC1b,SAASy4Q,GAAGtwP,GAAiB,UAAdA,EAAEA,EAAE5nB,aAAuB4nB,EAAEuvO,kBAC5C,SAASwc,GAAG/rP,EAAEloB,GAAG,IAAI0R,EAAEwW,EAAEu1O,UAC4E,OADlE,OAAO/rP,IAAGA,EAAEmmQ,GAAG3vP,EAAE1B,IAAIxmB,EAAEkoB,EAAEzW,IAAIyW,EAAEo4B,OAAQ6rM,YAAYjkO,EAAEikO,YAAYz6O,EAAEhF,KAAKwb,EAAExb,KAAKgF,EAAE+nP,UAAUvxO,EAAEuxO,UAAU/nP,EAAE+rP,UAAUv1O,EAAEA,EAAEu1O,UAAU/rP,IAAIA,EAAEqmQ,aAAa/3Q,EAAE0R,EAAEgsP,UAAU,EAAEhsP,EAAEqgQ,WAAW,KAAKrgQ,EAAE6/P,YAAY,KAAK7/P,EAAE8/P,WAAW,MAAM9/P,EAAE++P,oBAAoBvoP,EAAEuoP,oBAAoB/+P,EAAEk/P,eAAe1oP,EAAE0oP,eAAel/P,EAAEka,MAAM1D,EAAE0D,MAAMla,EAAEujQ,cAAc/sP,EAAE+sP,cAAcvjQ,EAAE2/O,cAAcnpO,EAAEmpO,cAAc3/O,EAAEwgQ,YAAYhqP,EAAEgqP,YAAYlyQ,EAAEkoB,EAAEgxO,aAAaxnP,EAAEwnP,aAAa,OAAOl5P,EAAE,KAAK,CAAC4wQ,eAAe5wQ,EAAE4wQ,eACzfD,aAAa3wQ,EAAE2wQ,aAAaI,WAAW/wQ,EAAE+wQ,YAAYr/P,EAAE4+J,QAAQpoJ,EAAEooJ,QAAQ5+J,EAAE7J,MAAMqgB,EAAErgB,MAAM6J,EAAEyrB,IAAIjV,EAAEiV,IAAWzrB,EAC5G,SAASmtH,GAAG32G,EAAEloB,EAAE0R,EAAE3R,EAAEmG,EAAEnB,GAAG,IAAIE,EAAE,EAAM,GAAJlF,EAAEmoB,EAAK,mBAAoBA,EAAEswP,GAAGtwP,KAAKjjB,EAAE,QAAQ,GAAG,iBAAkBijB,EAAEjjB,EAAE,OAAOijB,EAAE,OAAOA,GAAG,KAAK0qO,EAAG,OAAOwhB,GAAG1iQ,EAAE4U,SAASpgB,EAAEnB,EAAE/E,GAAG,KAAKy1P,EAAGxwP,EAAE,EAAEiB,GAAG,EAAE,MAAM,KAAK2sP,EAAG5tP,EAAE,EAAEiB,GAAG,EAAE,MAAM,KAAK4sP,EAAG,OAAO5qO,EAAE2vP,GAAG,GAAGnmQ,EAAE1R,EAAI,EAAFkG,IAAOimP,YAAY2G,EAAG5qO,EAAExb,KAAKomP,EAAG5qO,EAAE0oP,eAAe7rQ,EAAEmjB,EAAE,KAAKytO,EAAG,OAAOztO,EAAE2vP,GAAG,GAAGnmQ,EAAE1R,EAAEkG,IAAKwG,KAAKipP,EAAGztO,EAAEikO,YAAYwJ,EAAGztO,EAAE0oP,eAAe7rQ,EAAEmjB,EAAE,KAAK0tO,EAAG,OAAO1tO,EAAE2vP,GAAG,GAAGnmQ,EAAE1R,EAAEkG,IAAKimP,YAAYyJ,EAAG1tO,EAAE0oP,eAAe7rQ,EAAEmjB,EAAE,QAAQ,GAAG,iBAAkBA,GAAG,OAAOA,EAAE,OAAOA,EAAE0nO,UAAU,KAAKyD,EAAGpuP,EACpf,GAAG,MAAMijB,EAAE,KAAKstO,EAAGvwP,EAAE,EAAE,MAAMijB,EAAE,KAAKwtO,EAAGzwP,EAAE,GAAG,MAAMijB,EAAE,KAAK6tO,EAAG9wP,EAAE,GAAG,MAAMijB,EAAE,KAAK8tO,EAAG/wP,EAAE,GAAGlF,EAAE,KAAK,MAAMmoB,EAAE,MAAMnnB,MAAMm5J,EAAE,IAAI,MAAMhyI,EAAEA,SAASA,EAAE,KAAgE,OAA1DloB,EAAE63Q,GAAG5yQ,EAAEyM,EAAE1R,EAAEkG,IAAKimP,YAAYjkO,EAAEloB,EAAE0M,KAAK3M,EAAEC,EAAE4wQ,eAAe7rQ,EAAS/E,EAAE,SAASo0Q,GAAGlsP,EAAEloB,EAAE0R,EAAE3R,GAAoC,OAAjCmoB,EAAE2vP,GAAG,EAAE3vP,EAAEnoB,EAAEC,IAAK4wQ,eAAel/P,EAASwW,EAAE,SAASgsP,GAAGhsP,EAAEloB,EAAE0R,GAAuC,OAApCwW,EAAE2vP,GAAG,EAAE3vP,EAAE,KAAKloB,IAAK4wQ,eAAel/P,EAASwW,EAChV,SAASisP,GAAGjsP,EAAEloB,EAAE0R,GAAuK,OAApK1R,EAAE63Q,GAAG,EAAE,OAAO3vP,EAAE5B,SAAS4B,EAAE5B,SAAS,GAAG4B,EAAEzW,IAAIzR,IAAK4wQ,eAAel/P,EAAE1R,EAAEy5P,UAAU,CAAC6F,cAAcp3O,EAAEo3O,cAAc0hB,gBAAgB,KAAKh6J,eAAe9+F,EAAE8+F,gBAAuBhnH,EAC9L,SAASihR,GAAG/4P,EAAEloB,EAAE0R,GAAGtR,KAAKomB,IAAIxmB,EAAEI,KAAKglC,QAAQ,KAAKhlC,KAAKk/P,cAAcp3O,EAAE9nB,KAAK8+Q,UAAU9+Q,KAAK4gR,gBAAgB,KAAK5gR,KAAKq+Q,uBAAuB,EAAEr+Q,KAAKo+Q,aAAa,KAAKp+Q,KAAKgR,eAAe,EAAEhR,KAAK44Q,eAAe54Q,KAAKyuK,QAAQ,KAAKzuK,KAAKi/P,QAAQ3tP,EAAEtR,KAAK49Q,aAAa,KAAK59Q,KAAK29Q,iBAAiB,GAAG39Q,KAAKq9Q,gBAAgBr9Q,KAAKw9Q,eAAex9Q,KAAKy9Q,sBAAsBz9Q,KAAKs+Q,kBAAkBt+Q,KAAKo/Q,mBAAmBp/Q,KAAKu9Q,iBAAiB,EACva,SAASD,GAAGx1P,EAAEloB,GAAG,IAAI0R,EAAEwW,EAAEs3P,mBAAyC,OAAtBt3P,EAAEA,EAAEw2P,kBAAyB,IAAIhtQ,GAAGA,GAAG1R,GAAGkoB,GAAGloB,EAAE,SAASs9Q,GAAGp1P,EAAEloB,GAAG,IAAI0R,EAAEwW,EAAEs3P,mBAAmBz/Q,EAAEmoB,EAAEw2P,kBAAkBhtQ,EAAE1R,IAAIkoB,EAAEs3P,mBAAmBx/Q,IAAMD,EAAEC,GAAG,IAAI0R,KAAEwW,EAAEw2P,kBAAkB1+Q,GAAEA,GAAGkoB,EAAE01P,iBAAiB11P,EAAE01P,eAAe,GAAG59Q,GAAGkoB,EAAEu1P,kBAAkBv1P,EAAEu1P,gBAAgB,GAClT,SAASF,GAAGr1P,EAAEloB,GAAGA,EAAEkoB,EAAEy1P,mBAAmBz1P,EAAEy1P,iBAAiB39Q,GAAG,IAAI0R,EAAEwW,EAAEs3P,mBAAmB,IAAI9tQ,IAAI1R,GAAG0R,EAAEwW,EAAEs3P,mBAAmBt3P,EAAEw2P,kBAAkBx2P,EAAE21P,sBAAsB,EAAE79Q,GAAGkoB,EAAEw2P,oBAAoBx2P,EAAEw2P,kBAAkB1+Q,EAAE,GAAGA,EAAEkoB,EAAE21P,wBAAwB31P,EAAE21P,sBAAsB79Q,IAAI,SAASk+Q,GAAGh2P,EAAEloB,GAAG,IAAI0R,EAAEwW,EAAEu1P,iBAAmB,IAAI/rQ,GAAGA,EAAE1R,KAAEkoB,EAAEu1P,gBAAgBz9Q,GAC5V,SAASkhR,GAAGh5P,EAAEloB,EAAE0R,EAAE3R,GAAG,IAAImG,EAAElG,EAAEolC,QAAQrgC,EAAEkuQ,KAAKhuQ,EAAE0tQ,GAAG1iB,SAASlrP,EAAEmuQ,GAAGnuQ,EAAEmB,EAAEjB,GAAGijB,EAAE,GAAGxW,EAAE,CAAyB1R,EAAE,CAAC,GAAGw9P,GAA9B9rP,EAAEA,EAAEshQ,uBAAkCthQ,GAAG,IAAIA,EAAE8U,IAAI,MAAMzlB,MAAMm5J,EAAE,MAAM,IAAI/uE,EAAEz5E,EAAE,EAAE,CAAC,OAAOy5E,EAAE3kE,KAAK,KAAK,EAAE2kE,EAAEA,EAAEsuK,UAAU5qF,QAAQ,MAAM7uK,EAAE,KAAK,EAAE,GAAGqqK,GAAEl/E,EAAEz+E,MAAM,CAACy+E,EAAEA,EAAEsuK,UAAUiU,0CAA0C,MAAM1tQ,GAAGmrF,EAAEA,EAAEyuK,aAAa,OAAOzuK,GAAG,MAAMpqF,MAAMm5J,EAAE,MAAO,GAAG,IAAIxoJ,EAAE8U,IAAI,CAAC,IAAIsuD,EAAEpjE,EAAEhF,KAAK,GAAG29J,GAAEv1F,GAAG,CAACpjE,EAAE87P,GAAG97P,EAAEojE,EAAEqW,GAAG,MAAMjjE,GAAGxW,EAAEy5E,OAAOz5E,EAAEs7P,GAC3W,OAD8W,OAAOhtQ,EAAE6uK,QAAQ7uK,EAAE6uK,QAAQn9J,EAAE1R,EAAEg5Q,eAAetnQ,GAAE1R,EAAE4xQ,GAAG7sQ,EAAEE,IAAK6sQ,QAAQ,CAAC7yP,QAAQiJ,GACpe,QADuenoB,OAAE,IAClfA,EAAE,KAAKA,KAAaC,EAAEsQ,SAASvQ,GAAGkyQ,GAAG/rQ,EAAElG,GAAGmzQ,GAAGjtQ,EAAEnB,GAAUA,EAAE,SAASo8Q,GAAGj5P,GAAe,OAAZA,EAAEA,EAAEkd,SAAcxZ,OAAyB1D,EAAE0D,MAAMpF,IAAoD0B,EAAE0D,MAAM6tO,WAAhF,KAA2F,SAAS2nB,GAAGl5P,EAAEloB,GAAqB,QAAlBkoB,EAAEA,EAAEmpO,gBAAwB,OAAOnpO,EAAE01O,YAAY11O,EAAEmxP,UAAUr5Q,IAAIkoB,EAAEmxP,UAAUr5Q,GAAG,SAASqhR,GAAGn5P,EAAEloB,GAAGohR,GAAGl5P,EAAEloB,IAAIkoB,EAAEA,EAAEu1O,YAAY2jB,GAAGl5P,EAAEloB,GACpV,SAASshR,GAAGp5P,EAAEloB,EAAE0R,GAA6B,IAAI3R,EAAE,IAAIkhR,GAAG/4P,EAAEloB,EAAzC0R,EAAE,MAAMA,IAAG,IAAKA,EAAE2tP,SAA4Bn5P,EAAE2xQ,GAAG,EAAE,KAAK,KAAK,IAAI73Q,EAAE,EAAE,IAAIA,EAAE,EAAE,GAAGD,EAAEqlC,QAAQl/B,EAAEA,EAAEuzP,UAAU15P,EAAEmoB,EAAEggP,IAAInoQ,EAAEqlC,QAAQ1zB,GAAG,IAAI1R,GAjOtJ,SAAYkoB,GAAG,IAAIloB,EAAEmmQ,GAAGj+O,GAAGu2O,GAAG/6P,SAAQ,SAASgO,GAAG00P,GAAG10P,EAAEwW,EAAEloB,MAAK0+P,GAAGh7P,SAAQ,SAASgO,GAAG00P,GAAG10P,EAAEwW,EAAEloB,MAiO6DuhR,CAAG,IAAIr5P,EAAE8jF,SAAS9jF,EAAEA,EAAE+R,eAAe75B,KAAKohR,cAAczhR,EACjN,SAAS0hR,GAAGv5P,GAAG,SAASA,GAAG,IAAIA,EAAE8jF,UAAU,IAAI9jF,EAAE8jF,UAAU,KAAK9jF,EAAE8jF,WAAW,IAAI9jF,EAAE8jF,UAAU,iCAAiC9jF,EAAEosK,YAChI,SAASotF,GAAGx5P,EAAEloB,EAAE0R,EAAE3R,EAAEmG,GAAG,IAAInB,EAAE2M,EAAE0pQ,oBAAoB,GAAGr2Q,EAAE,CAAC,IAAIE,EAAEF,EAAEy8Q,cAAc,GAAG,mBAAoBt7Q,EAAE,CAAC,IAAIilF,EAAEjlF,EAAEA,EAAE,WAAW,IAAIgiB,EAAEi5P,GAAGl8Q,GAAGkmF,EAAErqF,KAAKonB,IAAIg5P,GAAGlhR,EAAEiF,EAAEijB,EAAEhiB,OAAO,CAAmD,GAAlDnB,EAAE2M,EAAE0pQ,oBAD9B,SAAYlzP,EAAEloB,GAA0H,GAAvHA,IAA2DA,MAAvDA,EAAEkoB,EAAE,IAAIA,EAAE8jF,SAAS9jF,EAAEnK,gBAAgBmK,EAAE4W,WAAW,OAAa,IAAI9+B,EAAEgsG,WAAWhsG,EAAE0kL,aAAa,qBAAwB1kL,EAAE,IAAI,IAAI0R,EAAEA,EAAEwW,EAAE4lM,WAAW5lM,EAAE60C,YAAYrrD,GAAG,OAAO,IAAI4vQ,GAAGp5P,EAAE,EAAEloB,EAAE,CAACq/P,SAAQ,QAAI,GACvKsiB,CAAGjwQ,EAAE3R,GAAGkF,EAAEF,EAAEy8Q,cAAiB,mBAAoBt7Q,EAAE,CAAC,IAAI4uE,EAAE5uE,EAAEA,EAAE,WAAW,IAAIgiB,EAAEi5P,GAAGl8Q,GAAG6vE,EAAEh0E,KAAKonB,IAAI+2P,IAAG,WAAWiC,GAAGlhR,EAAEiF,EAAEijB,EAAEhiB,MAAK,OAAOi7Q,GAAGl8Q,GAAG,SAAS28Q,GAAG15P,EAAEloB,EAAE0R,GAAG,IAAI3R,EAAE,EAAEyB,UAAUC,aAAQ,IAASD,UAAU,GAAGA,UAAU,GAAG,KAAK,MAAM,CAACouP,SAASgC,EAAGngP,IAAI,MAAM1R,EAAE,KAAK,GAAGA,EAAEumB,SAAS4B,EAAEo3O,cAAct/P,EAAEgnH,eAAet1G,GAGxR,SAASmwQ,GAAG35P,EAAEloB,GAAG,IAAI0R,EAAE,EAAElQ,UAAUC,aAAQ,IAASD,UAAU,GAAGA,UAAU,GAAG,KAAK,IAAIigR,GAAGzhR,GAAG,MAAMe,MAAMm5J,EAAE,MAAM,OAAO0nH,GAAG15P,EAAEloB,EAAE,KAAK0R,GALxI4vQ,GAAGhhR,UAAUu6B,OAAO,SAAS3S,EAAEloB,GAAGkhR,GAAGh5P,EAAE9nB,KAAKohR,cAAc,UAAK,IAASxhR,EAAE,KAAKA,IAAIshR,GAAGhhR,UAAUwhR,QAAQ,SAAS55P,GAAG,IAAIloB,EAAEI,KAAKohR,cAAc9vQ,OAAE,IAASwW,EAAE,KAAKA,EAAEnoB,EAAEC,EAAEs/P,cAAc4hB,GAAG,KAAKlhR,EAAE,MAAK,WAAWD,EAAEmoQ,IAAI,KAAK,OAAOx2P,GAAGA,QAGrbssP,GAAG,SAAS91O,GAAG,GAAG,KAAKA,EAAE1B,IAAI,CAAC,IAAIxmB,EAAE8vQ,GAAGmD,KAAK,IAAI,KAAKE,GAAGjrP,EAAEloB,GAAGqhR,GAAGn5P,EAAEloB,KAAKi+P,GAAG,SAAS/1O,GAAG,GAAG,KAAKA,EAAE1B,IAAI,CAACysP,KAAK,IAAIjzQ,EAAE6vQ,KAAKsD,GAAGjrP,EAAEloB,GAAGqhR,GAAGn5P,EAAEloB,KAAKy8O,GAAG,SAASv0N,GAAG,GAAG,KAAKA,EAAE1B,IAAI,CAAC,IAAIxmB,EAAEizQ,KAAoBE,GAAGjrP,EAAlBloB,EAAEkzQ,GAAGlzQ,EAAEkoB,EAAE,OAAcm5P,GAAGn5P,EAAEloB,KAC5Mw2P,GAAG,SAAStuO,EAAEloB,EAAE0R,GAAG,OAAO1R,GAAG,IAAK,QAAyB,GAAjBw7P,GAAGtzO,EAAExW,GAAG1R,EAAE0R,EAAE5O,KAAQ,UAAU4O,EAAEhF,MAAM,MAAM1M,EAAE,CAAC,IAAI0R,EAAEwW,EAAExW,EAAEy8B,YAAYz8B,EAAEA,EAAEy8B,WAAsF,IAA3Ez8B,EAAEA,EAAEmzB,iBAAiB,cAAc/4B,KAAKC,UAAU,GAAG/L,GAAG,mBAAuBA,EAAE,EAAEA,EAAE0R,EAAEjQ,OAAOzB,IAAI,CAAC,IAAID,EAAE2R,EAAE1R,GAAG,GAAGD,IAAImoB,GAAGnoB,EAAEgiR,OAAO75P,EAAE65P,KAAK,CAAC,IAAI77Q,EAAEkiQ,GAAGroQ,GAAG,IAAImG,EAAE,MAAMnF,MAAMm5J,EAAE,KAAKzY,GAAG1hJ,GAAGy7P,GAAGz7P,EAAEmG,KAAK,MAAM,IAAK,WAAW+1P,GAAG/zO,EAAExW,GAAG,MAAM,IAAK,SAAmB,OAAV1R,EAAE0R,EAAE3L,QAAe81P,GAAG3zO,IAAIxW,EAAEwlE,SAASl3E,GAAE,KAAM85P,GAAGklB,GAC9ZjlB,GAAG,SAAS7xO,EAAEloB,EAAE0R,EAAE3R,GAAG,IAAImG,EAAE+zJ,GAAEA,IAAG,EAAE,IAAI,OAAOu1G,GAAG,GAAGtnP,EAAE4I,KAAK,KAAK9wB,EAAE0R,EAAE3R,IAAI,QAzEC,KAyEOk6J,GAAE/zJ,IAAS0pQ,OAAO5V,GAAG,WAzE5B,IAyE0C,GAAF//F,MA7DhH,WAAc,GAAG,OAAO8iH,GAAG,CAAC,IAAI70P,EAAE60P,GAAGA,GAAG,KAAK70P,EAAExkB,SAAQ,SAASwkB,EAAExW,GAAGwsQ,GAAGxsQ,EAAEwW,GAAGsiJ,GAAE94J,MAAKk+P,MA6D+CoS,GAAK7D,OAAOlkB,GAAG,SAAS/xO,EAAEloB,GAAG,IAAI0R,EAAEuoJ,GAAEA,IAAG,EAAE,IAAI,OAAO/xI,EAAEloB,GAAG,QAzErH,KAyE6Hi6J,GAAEvoJ,IAASk+P,OAChN,IAAIqS,GAAG,CAACC,aAAaL,GAAGnjM,YAAY,SAASx2D,GAAG,GAAG,MAAMA,EAAE,OAAO,KAAK,GAAG,IAAIA,EAAE8jF,SAAS,OAAO9jF,EAAE,IAAIloB,EAAEkoB,EAAE8qP,oBAAoB,QAAG,IAAShzQ,EAAE,CAAC,GAAG,mBAAoBkoB,EAAE2S,OAAO,MAAM95B,MAAMm5J,EAAE,MAAM,MAAMn5J,MAAMm5J,EAAE,IAAIv6J,OAAO6K,KAAK0d,KAA0C,OAA1B,QAAVA,EAAE41O,GAAG99P,IAAc,KAAKkoB,EAAEuxO,WAAoB4F,QAAQ,SAASn3O,EAAEloB,EAAE0R,GAAG,IAAI+vQ,GAAGzhR,GAAG,MAAMe,MAAMm5J,EAAE,MAAM,OAAOwnH,GAAG,KAAKx5P,EAAEloB,GAAE,EAAG0R,IAAImpB,OAAO,SAAS3S,EAAEloB,EAAE0R,GAAG,IAAI+vQ,GAAGzhR,GAAG,MAAMe,MAAMm5J,EAAE,MAAM,OAAOwnH,GAAG,KAAKx5P,EAAEloB,GAAE,EAAG0R,IAAIywQ,oCAAoC,SAASj6P,EAAEloB,EAAE0R,EAAE3R,GAAG,IAAI0hR,GAAG/vQ,GAAG,MAAM3Q,MAAMm5J,EAAE,MAChgB,GAAG,MAAMhyI,QAAG,IAASA,EAAE8qP,oBAAoB,MAAMjyQ,MAAMm5J,EAAE,KAAK,OAAOwnH,GAAGx5P,EAAEloB,EAAE0R,GAAE,EAAG3R,IAAIqiR,uBAAuB,SAASl6P,GAAG,IAAIu5P,GAAGv5P,GAAG,MAAMnnB,MAAMm5J,EAAE,KAAK,QAAOhyI,EAAEkzP,sBAAqB6D,IAAG,WAAWyC,GAAG,KAAK,KAAKx5P,GAAE,GAAG,WAAWA,EAAEkzP,oBAAoB,KAAKlzP,EAAEggP,IAAI,YAAS,IAAQma,sBAAsB,WAAW,OAAOR,GAAG96Q,WAAM,EAAOvF,YAAY8gR,wBAAwBtD,GAAGuD,UAAU,SAASr6P,EAAEloB,GAAG,GA3E/T,IA2EqU,GAAFi6J,IAAe,MAAMl5J,MAAMm5J,EAAE,MAAM,IAAIxoJ,EAAEuoJ,GAAEA,IAAG,EAAE,IAAI,OAAOu1G,GAAG,GAAGtnP,EAAE4I,KAAK,KAAK9wB,IAAI,QAAQi6J,GAAEvoJ,EAAEk+P,OAAOjgB,mDAAmD,CAAC6yB,OAAO,CAACvjB,GAC3iBkJ,GAAGC,GAAG7W,EAAGiI,yBAAyBpK,EAAGoR,GAAG,SAASt4O,GAAGixO,EAAGjxO,EAAEq4O,KAAKn+G,GAAGy3G,GAAGiM,GAAGxU,EAAG6sB,GAAG,CAAC/4O,SAAQ,OACtF,SAAUld,GAAG,IAAIloB,EAAEkoB,EAAEu6P,yBAtBrB,SAAYv6P,GAAG,GAAG,oBAAqBw6P,+BAA+B,OAAM,EAAG,IAAI1iR,EAAE0iR,+BAA+B,GAAG1iR,EAAE2zD,aAAa3zD,EAAE2iR,cAAc,OAAM,EAAG,IAAI,IAAIjxQ,EAAE1R,EAAE4iR,OAAO16P,GAAGu4P,GAAG,SAASv4P,GAAG,IAAIloB,EAAE6iR,kBAAkBnxQ,EAAEwW,OAAE,EAAO,KAA0B,GAApBA,EAAEkd,QAAQs4N,YAAe,MAAMx3P,MAAM40Q,GAAG,SAAS5yP,GAAG,IAAIloB,EAAE8iR,qBAAqBpxQ,EAAEwW,GAAG,MAAMhiB,MAAM,MAAMnG,KAsB/R+/M,CAAGv+M,EAAE,GAAG2mB,EAAE,CAAC66P,kBAAkB,KAAKC,cAAc,KAAKC,mBAAmB,KAAKx0F,eAAe,KAAKy0F,qBAAqBzxB,EAAG1B,uBAAuBozB,wBAAwB,SAASj7P,GAAW,OAAO,QAAfA,EAAE41O,GAAG51O,IAAmB,KAAKA,EAAEuxO,WAAWgpB,wBAAwB,SAASv6P,GAAG,OAAOloB,EAAEA,EAAEkoB,GAAG,MAAMk7P,4BAA4B,KAAKC,gBAAgB,KAAKC,aAAa,KAAKC,kBAAkB,KAAKC,gBAAgB,QAAzb,CAAmc,CAACf,wBAAwBtjB,GAAGskB,WAAW,EAAEl1Q,QAAQ,UACpfm1Q,oBAAoB,cAAc,IAAIC,GAAG,CAACjpQ,QAAQunQ,IAAI2B,GAAGD,IAAI1B,IAAI0B,GAAGzqQ,EAAOC,QAAQyqQ,GAAGlpQ,SAASkpQ,iCC/R/F,SAASC,IAEP,GAC4C,oBAAnCnB,gCAC4C,mBAA5CA,+BAA+BmB,SAcxC,IAEEnB,+BAA+BmB,SAASA,GACxC,MAAOv8Q,GAGPiB,QAAQlB,MAAMC,IAOhBu8Q,GACA3qQ,EAAOC,QAAU,EAAjB,mCC/BAD,EAAOC,QAAU,EAAjB,mCCHsJ,IAAlHjT,EAAsH49Q,GAAtH59Q,EAA4I,EAAQ,QAAvI,iBAAiBA,GAAG,YAAYA,EAAEA,EAAEwU,QAAQxU,EAAqG,SAAS69Q,EAAa79Q,GAAG,OAAO69Q,EAAaC,uBAAuBD,EAAaC,sBAAqB,EAAGz7Q,QAAQlB,MAAM,wGAAwGkB,QAAQlB,MAAM,6DAA6Dy8Q,EAAMp1B,SAASC,KAAKzoP,EAAEogB,UAAUy9P,EAAaC,sBAAqB,EAAkW7qQ,EAAQ,GAAa4qQ,+BCGr6B,mCCMW,IAAI/jR,EAAE,mBAAoByF,QAAQA,OAAOspP,IAAIr9O,EAAE1R,EAAEyF,OAAOspP,IAAI,iBAAiB,MAAMhvP,EAAEC,EAAEyF,OAAOspP,IAAI,gBAAgB,MAAM7oP,EAAElG,EAAEyF,OAAOspP,IAAI,kBAAkB,MAAMhqP,EAAE/E,EAAEyF,OAAOspP,IAAI,qBAAqB,MAAM9pP,EAAEjF,EAAEyF,OAAOspP,IAAI,kBAAkB,MAAM5jK,EAAEnrF,EAAEyF,OAAOspP,IAAI,kBAAkB,MAAMj6K,EAAE90E,EAAEyF,OAAOspP,IAAI,iBAAiB,MAAM1uJ,EAAErgG,EAAEyF,OAAOspP,IAAI,oBAAoB,MAAMv9O,EAAExR,EAAEyF,OAAOspP,IAAI,yBAAyB,MAAMxtP,EAAEvB,EAAEyF,OAAOspP,IAAI,qBAAqB,MAAM9uP,EAAED,EAAEyF,OAAOspP,IAAI,kBAAkB,MAAMvkK,EAAExqF,EACpfyF,OAAOspP,IAAI,uBAAuB,MAAMxkO,EAAEvqB,EAAEyF,OAAOspP,IAAI,cAAc,MAAM3tP,EAAEpB,EAAEyF,OAAOspP,IAAI,cAAc,MAAMppP,EAAE3F,EAAEyF,OAAOspP,IAAI,eAAe,MAAM9uO,EAAEjgB,EAAEyF,OAAOspP,IAAI,qBAAqB,MAAMzrO,EAAEtjB,EAAEyF,OAAOspP,IAAI,mBAAmB,MAAM/pP,EAAEhF,EAAEyF,OAAOspP,IAAI,eAAe,MAClQ,SAASxkF,EAAEriJ,GAAG,GAAG,iBAAkBA,GAAG,OAAOA,EAAE,CAAC,IAAIgyI,EAAEhyI,EAAE0nO,SAAS,OAAO11F,GAAG,KAAKxoJ,EAAE,OAAOwW,EAAEA,EAAExb,MAAQ,KAAK2zF,EAAE,KAAK7uF,EAAE,KAAKtL,EAAE,KAAKjB,EAAE,KAAKF,EAAE,KAAK9E,EAAE,OAAOioB,EAAE,QAAQ,OAAOA,EAAEA,GAAGA,EAAE0nO,UAAY,KAAK96K,EAAE,KAAKvzE,EAAE,KAAKH,EAAE,KAAKmpB,EAAE,KAAK4gE,EAAE,OAAOjjE,EAAE,QAAQ,OAAOgyI,GAAG,KAAKn6J,EAAE,OAAOm6J,IAAI,SAASvuB,EAAEzjH,GAAG,OAAOqiJ,EAAEriJ,KAAK1W,EAAE2H,EAAQ8qQ,UAAU5jL,EAAElnF,EAAQ+qQ,eAAe1yQ,EAAE2H,EAAQgrQ,gBAAgBrvM,EAAE37D,EAAQirQ,gBAAgBj5L,EAAEhyE,EAAQ8xF,QAAQv5F,EAAEyH,EAAQyqM,WAAWriN,EAAE4X,EAAQkrQ,SAASn+Q,EAAEiT,EAAQmrQ,KAAKljR,EAAE+X,EAAQorQ,KAAKh6P,EAAEpR,EAAQqrQ,OAAOzkR,EAChfoZ,EAAQsrQ,SAASx/Q,EAAEkU,EAAQurQ,WAAW3/Q,EAAEoU,EAAQwrQ,SAAS1kR,EAAEkZ,EAAQyrQ,YAAY,SAAS18P,GAAG,OAAOyjH,EAAEzjH,IAAIqiJ,EAAEriJ,KAAKm4E,GAAGlnF,EAAQ0rQ,iBAAiBl5I,EAAExyH,EAAQ2rQ,kBAAkB,SAAS58P,GAAG,OAAOqiJ,EAAEriJ,KAAK4sD,GAAG37D,EAAQ4rQ,kBAAkB,SAAS78P,GAAG,OAAOqiJ,EAAEriJ,KAAKijE,GAAGhyE,EAAQqoK,UAAU,SAASt5J,GAAG,MAAM,iBAAkBA,GAAG,OAAOA,GAAGA,EAAE0nO,WAAWl+O,GAAGyH,EAAQ6rQ,aAAa,SAAS98P,GAAG,OAAOqiJ,EAAEriJ,KAAK3mB,GAAG4X,EAAQ8rQ,WAAW,SAAS/8P,GAAG,OAAOqiJ,EAAEriJ,KAAKhiB,GAAGiT,EAAQ+rQ,OAAO,SAASh9P,GAAG,OAAOqiJ,EAAEriJ,KAAK9mB,GACzd+X,EAAQwqM,OAAO,SAASz7L,GAAG,OAAOqiJ,EAAEriJ,KAAKqC,GAAGpR,EAAQgsQ,SAAS,SAASj9P,GAAG,OAAOqiJ,EAAEriJ,KAAKnoB,GAAGoZ,EAAQisQ,WAAW,SAASl9P,GAAG,OAAOqiJ,EAAEriJ,KAAKjjB,GAAGkU,EAAQksQ,aAAa,SAASn9P,GAAG,OAAOqiJ,EAAEriJ,KAAKnjB,GAAGoU,EAAQmsQ,WAAW,SAASp9P,GAAG,OAAOqiJ,EAAEriJ,KAAKjoB,GACzOkZ,EAAQosQ,mBAAmB,SAASr9P,GAAG,MAAM,iBAAkBA,GAAG,mBAAoBA,GAAGA,IAAIhiB,GAAGgiB,IAAI1W,GAAG0W,IAAIjjB,GAAGijB,IAAInjB,GAAGmjB,IAAIjoB,GAAGioB,IAAIsiE,GAAG,iBAAkBtiE,GAAG,OAAOA,IAAIA,EAAE0nO,WAAWxuP,GAAG8mB,EAAE0nO,WAAWrlO,GAAGrC,EAAE0nO,WAAWzkK,GAAGjjE,EAAE0nO,WAAW96K,GAAG5sD,EAAE0nO,WAAWruP,GAAG2mB,EAAE0nO,WAAW3vO,GAAGiI,EAAE0nO,WAAWtsO,GAAG4E,EAAE0nO,WAAW5qP,GAAGkjB,EAAE0nO,WAAWjqP,IAAIwT,EAAQqsQ,OAAOj7G,+BCXjUrxJ,EAAOC,QAAU,EAAjB,mCCIF,SAAS8+O,IAEP,IAAIzlO,EAAQpyB,KAAKC,YAAY+6E,yBAAyBh7E,KAAK+b,MAAO/b,KAAKoyB,OACnEA,SACFpyB,KAAK6+B,SAASzM,GAIlB,SAASk4D,EAA0Bh4B,GAQjCtyD,KAAK6+B,SALL,SAAiB0U,GACf,IAAInhB,EAAQpyB,KAAKC,YAAY+6E,yBAAyB1oB,EAAW/e,GACjE,OAAOnhB,QAAwCA,EAAQ,MAGnC1B,KAAK1wB,OAG7B,SAASy4Q,EAAoBnmN,EAAWub,GACtC,IACE,IAAIv6B,EAAYtzC,KAAK+b,MACjBw3B,EAAYvzC,KAAKoyB,MACrBpyB,KAAK+b,MAAQu2C,EACbtyD,KAAKoyB,MAAQy7C,EACb7tE,KAAKqlR,6BAA8B,EACnCrlR,KAAKslR,wBAA0BtlR,KAAKszQ,wBAClChgO,EACAC,GAEF,QACAvzC,KAAK+b,MAAQu3B,EACbtzC,KAAKoyB,MAAQmhB,GAUjB,SAASgyO,EAAS/kF,GAChB,IAAItgM,EAAYsgM,EAAUtgM,UAE1B,IAAKA,IAAcA,EAAUm3P,iBAC3B,MAAM,IAAI12P,MAAM,sCAGlB,GACgD,mBAAvC6/L,EAAUxlH,0BAC4B,mBAAtC96E,EAAUozQ,wBAEjB,OAAO9yE,EAMT,IAAIglF,EAAqB,KACrBC,EAA4B,KAC5BC,EAAsB,KAgB1B,GAf4C,mBAAjCxlR,EAAU23P,mBACnB2tB,EAAqB,qBACmC,mBAAxCtlR,EAAU03P,4BAC1B4tB,EAAqB,6BAE4B,mBAAxCtlR,EAAUoqF,0BACnBm7L,EAA4B,4BACmC,mBAA/CvlR,EAAUkzQ,mCAC1BqS,EAA4B,oCAEe,mBAAlCvlR,EAAUu4Q,oBACnBiN,EAAsB,sBACmC,mBAAzCxlR,EAAUs4Q,6BAC1BkN,EAAsB,8BAGC,OAAvBF,GAC8B,OAA9BC,GACwB,OAAxBC,EACA,CACA,IAAI1gN,EAAgBw7H,EAAUrwK,aAAeqwK,EAAU99L,KACnDijR,EAC4C,mBAAvCnlF,EAAUxlH,yBACb,6BACA,4BAEN,MAAMr6E,MACJ,2FACEqkE,EACA,SACA2gN,EACA,uDACwB,OAAvBH,EAA8B,OAASA,EAAqB,KAC9B,OAA9BC,EACG,OAASA,EACT,KACqB,OAAxBC,EAA+B,OAASA,EAAsB,IATjE,wIA0BJ,GARkD,mBAAvCllF,EAAUxlH,2BACnB96E,EAAU23P,mBAAqBA,EAC/B33P,EAAUoqF,0BAA4BA,GAMS,mBAAtCpqF,EAAUozQ,wBAAwC,CAC3D,GAA4C,mBAAjCpzQ,EAAUmzC,mBACnB,MAAM,IAAI1yC,MACR,qHAIJT,EAAUu4Q,oBAAsBA,EAEhC,IAAIplO,EAAqBnzC,EAAUmzC,mBAEnCnzC,EAAUmzC,mBAAqB,SAC7BC,EACAC,EACAqyO,GAUA,IAAIC,EAAW7lR,KAAKqlR,4BAChBrlR,KAAKslR,wBACLM,EAEJvyO,EAAmB3yC,KAAKV,KAAMszC,EAAWC,EAAWsyO,IAIxD,OAAOrlF,iCA7GTq3D,EAAmBiuB,8BAA+B,EAClDx7L,EAA0Bw7L,8BAA+B,EACzDrN,EAAoBqN,8BAA+B,6JC1CxCC,EAA8B,MAC9BC,EAAoC,MAE3CpuE,EAEJ,SAAUquE,GAGR,SAASruE,IAGP,IAFA,IAAIp3M,EAEKkqB,EAAOtpB,UAAUC,OAAQ2N,EAAO,IAAItP,MAAMgrB,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC/E3b,EAAK2b,GAAQvpB,UAAUupB,GAezB,OAZAnqB,EAAQylR,EAAiBvlR,KAAKiG,MAAMs/Q,EAAkB,CAACjmR,MAAM8Z,OAAO9K,KAAUhP,KAE9E,IAAgB,IAAuBQ,GAAQ,qBAAiB,GAEhE,IAAgB,IAAuBA,GAAQ,oBAAoB,SAAU0lR,GACvEA,GAAoB1lR,EAAM6gP,gBAAkB6kC,IAC9C1lR,EAAM6gP,cAAgB6kC,EAEtB1lR,EAAMmtC,kBAIHntC,EArBT,IAAeo3M,EAASquE,GAwBxB,IAAInjG,EAAS80B,EAAQ13M,UAcrB,OAZA4iL,EAAOx+I,qBAAuB,WAC5BtkC,KAAKqhP,cAAgB,MAGvBv+D,EAAOroJ,OAAS,WACd,OAAO,gBAAoBsrP,EAA4B92G,SAAU,CAC/DtpK,MAAO3F,KAAKqhP,eACX,gBAAoB2kC,EAAkC/2G,SAAU,CACjEtpK,MAAO3F,KAAKmmR,kBACXnmR,KAAK+b,MAAMmK,YAGT0xL,EAvCT,CAwCE,yNCxCEwuE,EAAe,CACjBvoP,SAAU,WACVC,IAAK,EACL7M,KAAM,EACN7G,QAAS,EACT6nL,cAAe,QAEbo0E,EAAoB,GACbC,EAEX,SAAUL,GAGR,SAASK,IAGP,IAFA,IAAI9lR,EAEKkqB,EAAOtpB,UAAUC,OAAQ2N,EAAO,IAAItP,MAAMgrB,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC/E3b,EAAK2b,GAAQvpB,UAAUupB,GAwGzB,OArGAnqB,EAAQylR,EAAiBvlR,KAAKiG,MAAMs/Q,EAAkB,CAACjmR,MAAM8Z,OAAO9K,KAAUhP,KAE9E,IAAgB,IAAuBQ,GAAQ,QAAS,CACtDsC,UAAM4N,EACN89K,eAAW99K,IAGb,IAAgB,IAAuBlQ,GAAQ,sBAAkB,GAEjE,IAAgB,IAAuBA,GAAQ,aAAc,MAE7D,IAAgB,IAAuBA,GAAQ,YAAa,MAE5D,IAAgB,IAAuBA,GAAQ,iBAAiB,SAAU+lR,GACnEA,GAAc/lR,EAAM+lR,aAAeA,KACxC,QAAO/lR,EAAMub,MAAMyqQ,SAAUD,GAC7B/lR,EAAM+lR,WAAaA,EAEnB/lR,EAAMimR,2BAGR,IAAgB,IAAuBjmR,GAAQ,gBAAgB,SAAUkmR,GACvElmR,EAAMkmR,UAAYA,KAGpB,IAAgB,IAAuBlmR,GAAQ,sBAAuB,CACpEkpC,SAAS,EACTq1E,MAAO,IACPx+F,GAAI,SAAYzd,GACd,IAAI0rL,EAAY1rL,EAAK0rL,UAOrB,OALAhuL,EAAMq+B,SAAS,CACb/7B,KAAMA,EACN0rL,UAAWA,IAGN1rL,KAIX,IAAgB,IAAuBtC,GAAQ,cAAc,WAC3D,MAAO,CACLguL,UAAWhuL,EAAMub,MAAMyyK,UACvBk4D,cAAelmP,EAAMub,MAAM2qO,cAC3BjB,cAAejlP,EAAMub,MAAM0pO,cAC3B/2D,UAAW,IAAS,GAAIluL,EAAMub,MAAM2yK,UAAW,CAC7CiK,MAAO,IAAS,GAAIn4L,EAAMub,MAAM2yK,WAAaluL,EAAMub,MAAM2yK,UAAUiK,MAAO,CACxEjvJ,UAAWlpC,EAAMkmR,UACjB7nQ,QAASre,EAAMkmR,YAEjB73F,WAAY,CACVnlJ,SAAS,GAEXi9O,oBAAqBnmR,EAAMmmR,0BAKjC,IAAgB,IAAuBnmR,GAAQ,kBAAkB,WAC/D,OAAQA,EAAM+lR,YAAe/lR,EAAM4xB,MAAMtvB,KAAsB,IAAS,CACtE+6B,SAAUr9B,EAAM4xB,MAAMtvB,KAAKkpD,QAAQ0tI,OAAO77J,UACzCr9B,EAAM4xB,MAAMtvB,KAAKgd,QAF4BsmQ,KAKlD,IAAgB,IAAuB5lR,GAAQ,sBAAsB,WACnE,OAAQA,EAAM4xB,MAAMtvB,KAAmBtC,EAAM4xB,MAAMo8J,eAAxB99K,KAG7B,IAAgB,IAAuBlQ,GAAQ,iBAAiB,WAC9D,OAAQA,EAAMkmR,WAAclmR,EAAM4xB,MAAMtvB,KAA2BtC,EAAM4xB,MAAMtvB,KAAK0iP,YAArC6gC,KAGjD,IAAgB,IAAuB7lR,GAAQ,2BAA2B,WACxE,OAAOA,EAAM4xB,MAAMtvB,KAAOtC,EAAM4xB,MAAMtvB,KAAKuoL,UAAO36K,KAGpD,IAAgB,IAAuBlQ,GAAQ,yBAAyB,WACjEA,EAAMi5L,iBAEXj5L,EAAMi5L,eAAe11J,UAErBvjC,EAAMi5L,eAAiB,SAGzB,IAAgB,IAAuBj5L,GAAQ,wBAAwB,WACrEA,EAAMomR,wBAEN,IACIL,EADwB,IAAuB/lR,GACZ+lR,WAEnCr4F,EAAmB1tL,EAAMub,MAAMmyK,iBAC9BA,GAAqBq4F,IAC1B/lR,EAAMi5L,eAAiB,IAAI,UAASvL,EAAkBq4F,EAAY/lR,EAAMqmR,kBAG1E,IAAgB,IAAuBrmR,GAAQ,kBAAkB,WAC3DA,EAAMi5L,gBACRj5L,EAAMi5L,eAAepL,oBAIlB7tL,EA9GT,IAAe8lR,EAAaL,GAiH5B,IAAInjG,EAASwjG,EAAYpmR,UA+CzB,OA7CA4iL,EAAOzvI,mBAAqB,SAA4BC,EAAWC,GAE7DvzC,KAAK+b,MAAMyyK,YAAcl7I,EAAUk7I,WAAaxuL,KAAK+b,MAAMmyK,mBAAqB56I,EAAU46I,kBAAoBluL,KAAK+b,MAAM0pO,gBAAkBnyM,EAAUmyM,eAAkB,IAAUzlP,KAAK+b,MAAM2yK,UAAWp7I,EAAUo7I,UAAW,CAC9NsT,QAAQ,IAUChiM,KAAK+b,MAAM2qO,gBAAkBpzM,EAAUozM,eAAiB1mP,KAAKy5L,iBACtEz5L,KAAK+b,MAAM2qO,cAAgB1mP,KAAKy5L,eAAektD,uBAAyB3mP,KAAKy5L,eAAeysD,yBAF5FlmP,KAAKymR,uBASHlzO,EAAUi7I,YAAcxuL,KAAKoyB,MAAMo8J,WACrCxuL,KAAKquL,kBAITvL,EAAOx+I,qBAAuB,YAC5B,QAAOtkC,KAAK+b,MAAMyqQ,SAAU,MAC5BxmR,KAAK4mR,yBAGP9jG,EAAOroJ,OAAS,WACd,OAAO,QAAYz6B,KAAK+b,MAAMmK,SAAvB,CAAiC,CACtC6W,IAAK/8B,KAAK8mR,cACVv/P,MAAOvnB,KAAK+mR,iBACZv4F,UAAWxuL,KAAKgnR,qBAChBC,gBAAiBjnR,KAAKknR,0BACtB74F,eAAgBruL,KAAKquL,eACrB84F,WAAY,CACVpqP,IAAK/8B,KAAKonR,aACV7/P,MAAOvnB,KAAKqnR,oBAKXf,EAjKT,CAkKE,aAWa,SAASrmG,EAAOxhK,GAC7B,IAAIyvK,EAAmBzvK,EAAKyvK,iBACxBnyK,EAAQ,IAA8B0C,EAAM,CAAC,qBAEjD,OAAO,gBAAoB,cAAsC,MAAM,SAAU4iO,GAC/E,OAAO,gBAAoBilC,EAAa,IAAS,CAC/Cp4F,sBAAuCx9K,IAArBw9K,EAAiCA,EAAmBmzD,GACrEtlO,OAhBP,IAAgBuqQ,EAAa,eAAgB,CAC3C93F,UAAW,SACXk4D,eAAe,EACfx4D,sBAAkBx9K,EAClB+0O,eAAe,IAGA,sFC3LV,IAAI6hC,EAAc,SAAqBjmQ,GAC5C,OAAO3hB,MAAMyc,QAAQkF,GAAOA,EAAI,GAAKA,GAO5BkmQ,EAAa,SAAoBhnQ,GAC1C,GAAkB,mBAAPA,EAAmB,CAC5B,IAAK,IAAImK,EAAOtpB,UAAUC,OAAQ2N,EAAO,IAAItP,MAAMgrB,EAAO,EAAIA,EAAO,EAAI,GAAIC,EAAO,EAAGA,EAAOD,EAAMC,IAClG3b,EAAK2b,EAAO,GAAKvpB,UAAUupB,GAG7B,OAAOpK,EAAG5Z,WAAM,EAAQqI,KA8BjBw4Q,EAAS,SAAgBzqP,EAAK0B,GAEvC,GAAmB,mBAAR1B,EACT,OAAOwqP,EAAWxqP,EAAK0B,GAET,MAAP1B,IACLA,EAAIiI,QAAUvG,oICZlB,cA+CA,cAeF,IAAIgpP,EAAoB,SAA2BhwQ,EAAIm8J,GACrD,MAAqB,mBAAPn8J,EAAoBA,EAAGm8J,GAAmBn8J,GAEtDiwQ,EAAsB,SAA6BjwQ,EAAIm8J,GACzD,MAAqB,iBAAPn8J,GAAkB,QAAeA,EAAI,KAAM,KAAMm8J,GAAmBn8J,GAGhFkwQ,EAAiB,SAAwBr4B,GAC3C,OAAOA,GAGLs4B,EAAa,oBAES,IAAfA,IACTA,EAAaD,GAOf,IAAIE,EAAaD,GAAW,SAAUnpQ,EAAMqpQ,GAC1C,IAAItB,EAAW/nQ,EAAK+nQ,SAChB36O,EAAWptB,EAAKotB,SAChBk8O,EAAWtpQ,EAAKopB,QAChB7a,GAAO,OAA8BvO,EAAM,CAAC,WAAY,WAAY,YAEpEtN,EAAS6b,EAAK7b,OAEd4K,GAAQ,OAAS,GAAIiR,EAAM,CAC7B6a,QAAS,SAAiB3zB,GACxB,IACM6zQ,GAAUA,EAAS7zQ,GACvB,MAAOikI,GAEP,MADAjkI,EAAM+sB,iBACAk3G,EAGHjkI,EAAM8qE,kBACM,IAAjB9qE,EAAMovB,QACLnyB,GAAqB,UAAXA,GAvBjB,SAAyB+C,GACvB,SAAUA,EAAM+oD,SAAW/oD,EAAM6tB,QAAU7tB,EAAM2tB,SAAW3tB,EAAM4tB,UAuB7DkmP,CAAgB9zQ,KAEbA,EAAM+sB,iBACN4K,QAYR,OALE9vB,EAAMghB,IADJ4qP,IAAmBC,GACTE,GAEAtB,EAGP,kBAAoB,IAAKzqQ,MAW9BksQ,EAAOL,GAAW,SAAUlpQ,EAAOopQ,GACrC,IAAII,EAAkBxpQ,EAAMwe,UACxBA,OAAgC,IAApBgrP,EAA6BL,EAAaK,EACtDn0Q,EAAU2K,EAAM3K,QAChB0D,EAAKiH,EAAMjH,GACX+uQ,EAAW9nQ,EAAM8nQ,SACjBx5P,GAAO,OAA8BtO,EAAO,CAAC,YAAa,UAAW,KAAM,aAE/E,OAAO,kBAAoB,cAA0B,MAAM,SAAU+vJ,GAClEA,IAAqH,QAAU,GAChI,IAAI2vC,EAAU3vC,EAAQ2vC,QAClBn9F,EAAWymK,EAAoBD,EAAkBhwQ,EAAIg3J,EAAQxtD,UAAWwtD,EAAQxtD,UAChFnpG,EAAOmpG,EAAWm9F,EAAQ8B,WAAWj/F,GAAY,GAEjDllG,GAAQ,OAAS,GAAIiR,EAAM,CAC7BlV,KAAMA,EACN+zB,SAAU,WACR,IAAIo1E,EAAWwmK,EAAkBhwQ,EAAIg3J,EAAQxtD,WAChCltG,EAAUqqM,EAAQrqM,QAAUqqM,EAAQv4M,MAC1Co7G,MAWX,OANI0mK,IAAmBC,EACrB7rQ,EAAMghB,IAAM+qP,GAAgBtB,EAE5BzqQ,EAAMyqQ,SAAWA,EAGZ,kBAAoBtpP,EAAWnhB,SAmBtCosQ,EAAmB,SAAwB74B,GAC7C,OAAOA,GAGL84B,EAAe,oBAES,IAAjBA,IACTA,EAAeD,GAiBHC,GAAa,SAAU3pQ,EAAMqpQ,GACzC,IAAIO,EAAmB5pQ,EAAK,gBACxB6pQ,OAAmC,IAArBD,EAA8B,OAASA,EACrDE,EAAuB9pQ,EAAK+pQ,gBAC5BA,OAA2C,IAAzBD,EAAkC,SAAWA,EAC/DE,EAAchqQ,EAAKgqQ,YACnBC,EAAgBjqQ,EAAKwQ,UACrBm9N,EAAQ3tO,EAAK2tO,MACbu8B,EAAelqQ,EAAKijD,SACpBknN,EAAenqQ,EAAKwiG,SACpB+gF,EAASvjL,EAAKujL,OACd6mF,EAAYpqQ,EAAK8I,MACjB9P,EAAKgH,EAAKhH,GACV+uQ,EAAW/nQ,EAAK+nQ,SAChBx5P,GAAO,OAA8BvO,EAAM,CAAC,eAAgB,kBAAmB,cAAe,YAAa,QAAS,WAAY,WAAY,SAAU,QAAS,KAAM,aAEzK,OAAO,kBAAoB,cAA0B,MAAM,SAAUgwJ,GAClEA,IAAwH,QAAU,GACnI,IAAImF,EAAkBg1G,GAAgBn6G,EAAQxtD,SAC1C2+F,EAAa8nE,EAAoBD,EAAkBhwQ,EAAIm8J,GAAkBA,GACzEpvJ,EAAOo7L,EAAWrgC,SAElBupG,EAActkQ,GAAQA,EAAKzQ,QAAQ,4BAA6B,QAChEqa,EAAQ06P,GAAc,QAAUl1G,EAAgB2L,SAAU,CAC5D/6J,KAAMskQ,EACN18B,MAAOA,EACPpqD,OAAQA,IACL,KACDtgI,KAAcinN,EAAeA,EAAav6P,EAAOwlJ,GAAmBxlJ,GACpEa,EAAYyyC,EA3CpB,WACE,IAAK,IAAIh3C,EAAOtpB,UAAUC,OAAQ0nR,EAAa,IAAIrpR,MAAMgrB,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IACrFo+P,EAAWp+P,GAAQvpB,UAAUupB,GAG/B,OAAOo+P,EAAWhvQ,QAAO,SAAU7Y,GACjC,OAAOA,KACN+kB,KAAK,KAoCqB+iQ,CAAeN,EAAeF,GAAmBE,EACxEnhQ,EAAQm6C,GAAW,OAAS,GAAImnN,EAAW,GAAIJ,GAAeI,EAE9D9sQ,GAAQ,OAAS,CACnB,eAAgB2lD,GAAY4mN,GAAe,KAC3Cr5P,UAAWA,EACX1H,MAAOA,EACP9P,GAAImoM,GACH5yL,GASH,OANIm7P,IAAqBC,EACvBrsQ,EAAMghB,IAAM+qP,GAAgBtB,EAE5BzqQ,EAAMyqQ,SAAWA,EAGZ,kBAAoByB,EAAMlsQ,+MC5RjC+jL,EAAwB,WAU5B,SAASC,EAAmBp6L,GAC1B,IAAIqK,EAAW,GACf,MAAO,CACLJ,GAAI,SAAY0+B,GACdt+B,EAASnK,KAAKyoC,IAEhBv+B,IAAK,SAAau+B,GAChBt+B,EAAWA,EAAS+J,QAAO,SAAUgxE,GACnC,OAAOA,IAAMz8C,MAGjB5sC,IAAK,WACH,OAAOiE,GAET8U,IAAK,SAAao9B,EAAUmoJ,GAC1Br6L,EAAQkyC,EACR7nC,EAAS1M,SAAQ,SAAUgrC,GACzB,OAAOA,EAAQ3oC,EAAOq6L,QA6I9B,QAFY,mBAjIZ,SAA4BprK,EAAcqrK,GACxC,IAAIC,EAAuBC,EAEvBC,EAAc,0BAA4B,MAAQ,KAElDnxB,EAEJ,SAAUoxB,GAGR,SAASpxB,IACP,IAAIzuK,EAIJ,OAFAA,EAAQ6/L,EAAW15L,MAAM3G,KAAMoB,YAAcpB,MACvCugM,QAAUR,EAAmBv/L,EAAMub,MAAMpW,OACxCnF,EAPT,IAAeyuK,EAAUoxB,GAUzB,IAAIvd,EAAS7T,EAAS/uK,UAoCtB,OAlCA4iL,EAAO3U,gBAAkB,WACvB,IAAI1vJ,EAEJ,OAAOA,EAAO,IAAS2hL,GAAepgM,KAAKugM,QAAS9hL,GAGtDqkK,EAAOx4F,0BAA4B,SAAmCh4B,GACpE,GAAItyD,KAAK+b,MAAMpW,QAAU2sD,EAAU3sD,MAAO,CACxC,IAEIq6L,EAFAp7H,EAAW5kE,KAAK+b,MAAMpW,MACtBkyC,EAAWya,EAAU3sD,QAhEfud,EAmEG0hD,MAnEAhgE,EAmEUizC,GAjEd,IAAN30B,GAAW,EAAIA,GAAM,EAAIte,EAEzBse,GAAMA,GAAKte,GAAMA,GAgElBo7L,EAAc,GAEdA,EAA8C,mBAAzBC,EAAsCA,EAAqBr7H,EAAU/sB,GAAYioJ,EAQlF,IAFpBE,GAAe,IAGbhgM,KAAKugM,QAAQ9lL,IAAI63C,EAAU3sD,MAAOq6L,IA/E9C,IAAkB98K,EAAGte,GAqFjBk+K,EAAOroJ,OAAS,WACd,OAAOz6B,KAAK+b,MAAMmK,UAGb+oJ,EA/CT,CAgDE,EAAAuxB,WAEFvxB,EAASZ,oBAAqB6xB,EAAwB,IAA0BE,GAAe,sBAA6BF,GAE5H,IAAIO,EAEJ,SAAUC,GAGR,SAASD,IACP,IAAI7Y,EAiBJ,OAfAA,EAAS8Y,EAAY/5L,MAAM3G,KAAMoB,YAAcpB,MACxCoyB,MAAQ,CACbzsB,MAAOiiL,EAAOkZ,YAGhBlZ,EAAOmR,SAAW,SAAUlhJ,EAAUmoJ,GAGC,KAFI,EAAtBpY,EAAOmZ,cAENf,IAClBpY,EAAO/oJ,SAAS,CACdl5B,MAAOiiL,EAAOkZ,cAKblZ,EApBT,IAAe6Y,EAAUC,GAuBzB,IAAIuoF,EAAUxoF,EAASvgM,UAkCvB,OAhCA+oR,EAAQ3+L,0BAA4B,SAAmCh4B,GACrE,IAAIyuI,EAAezuI,EAAUyuI,aAC7B/gM,KAAK+gM,aAAeA,QAAsDjB,EAAwBiB,GAGpGkoF,EAAQ5kP,kBAAoB,WACtBrkC,KAAKyuK,QAAQ2xB,IACfpgM,KAAKyuK,QAAQ2xB,GAAaxwL,GAAG5P,KAAK+4L,UAGpC,IAAIgI,EAAe/gM,KAAK+b,MAAMglL,aAC9B/gM,KAAK+gM,aAAeA,QAAsDjB,EAAwBiB,GAGpGkoF,EAAQ3kP,qBAAuB,WACzBtkC,KAAKyuK,QAAQ2xB,IACfpgM,KAAKyuK,QAAQ2xB,GAAarwL,IAAI/P,KAAK+4L,WAIvCkwF,EAAQnoF,SAAW,WACjB,OAAI9gM,KAAKyuK,QAAQ2xB,GACRpgM,KAAKyuK,QAAQ2xB,GAAa1+L,MAE1BkzB,GAIXq0P,EAAQxuP,OAAS,WACf,OAxHavU,EAwHIlmB,KAAK+b,MAAMmK,SAvHzBxmB,MAAMyc,QAAQ+J,GAAYA,EAAS,GAAKA,GAuHLlmB,KAAKoyB,MAAMzsB,OAxHvD,IAAmBugB,GA2HRu6K,EA1DT,CA2DE,EAAAD,WAGF,OADAC,EAAS5xB,eAAgBsxB,EAAwB,IAA0BC,GAAe,WAAkBD,GACrG,CACLlxB,SAAUA,EACVwxB,SAAUA,sFCzJVyoF,EAAqB,SAA4BxmR,GACnD,IAAI+rK,EAAU,IAEd,OADAA,EAAQt+I,YAAcztB,EACf+rK,GAGLA,EAEJy6G,EAAmB,UAMfC,EAEJ,SAAUlD,GAYR,SAASkD,EAAOptQ,GACd,IAAIvb,EA0BJ,OAxBAA,EAAQylR,EAAiBvlR,KAAKV,KAAM+b,IAAU/b,MACxCoyB,MAAQ,CACZ6uF,SAAUllG,EAAMqiM,QAAQn9F,UAO1BzgH,EAAM4oR,YAAa,EACnB5oR,EAAM6oR,iBAAmB,KAEpBttQ,EAAMutQ,gBACT9oR,EAAMqgN,SAAW9kM,EAAMqiM,QAAQwC,QAAO,SAAU3/F,GAC1CzgH,EAAM4oR,WACR5oR,EAAMq+B,SAAS,CACboiF,SAAUA,IAGZzgH,EAAM6oR,iBAAmBpoK,MAKxBzgH,GAtCT,OAAe2oR,EAAQlD,GAEvBkD,EAAOI,iBAAmB,SAA0BhqG,GAClD,MAAO,CACL/6J,KAAM,IACN7iB,IAAK,IACLujB,OAAQ,GACRskQ,QAAsB,MAAbjqG,IAkCb,IAAIuD,EAASqmG,EAAOjpR,UA4BpB,OA1BA4iL,EAAOz+I,kBAAoB,WACzBrkC,KAAKopR,YAAa,EAEdppR,KAAKqpR,kBACPrpR,KAAK6+B,SAAS,CACZoiF,SAAUjhH,KAAKqpR,oBAKrBvmG,EAAOx+I,qBAAuB,WACxBtkC,KAAK6gN,UAAU7gN,KAAK6gN,YAG1B/9B,EAAOroJ,OAAS,WACd,OAAO,kBAAoBg0I,EAAQQ,SAAU,CAC3C/oJ,SAAUlmB,KAAK+b,MAAMmK,UAAY,KACjCvgB,MAAO,CACLy4M,QAASp+M,KAAK+b,MAAMqiM,QACpBn9F,SAAUjhH,KAAKoyB,MAAM6uF,SACrB7yF,MAAO+6P,EAAOI,iBAAiBvpR,KAAKoyB,MAAM6uF,SAASs+D,UACnD+pG,cAAetpR,KAAK+b,MAAMutQ,kBAKzBH,EAtET,CAuEE,eA6CA,cAgBF,IAAIM,EAEJ,SAAUxD,GAGR,SAASwD,IACP,OAAOxD,EAAiBt/Q,MAAM3G,KAAMoB,YAAcpB,MAHpD,OAAeypR,EAAWxD,GAM1B,IAAInjG,EAAS2mG,EAAUvpR,UAkBvB,OAhBA4iL,EAAOz+I,kBAAoB,WACrBrkC,KAAK+b,MAAMw1C,SAASvxD,KAAK+b,MAAMw1C,QAAQ7wD,KAAKV,KAAMA,OAGxD8iL,EAAOzvI,mBAAqB,SAA4BC,GAClDtzC,KAAK+b,MAAMg9K,UAAU/4L,KAAK+b,MAAMg9K,SAASr4L,KAAKV,KAAMA,KAAMszC,IAGhEwvI,EAAOx+I,qBAAuB,WACxBtkC,KAAK+b,MAAM2tQ,WAAW1pR,KAAK+b,MAAM2tQ,UAAUhpR,KAAKV,KAAMA,OAG5D8iL,EAAOroJ,OAAS,WACd,OAAO,MAGFgvP,EAzBT,CA0BE,eAwCElxJ,EAAQ,GAERoxJ,EAAa,EAkBjB,SAASC,EAAaplQ,EAAMU,GAS1B,YARa,IAATV,IACFA,EAAO,UAGM,IAAXU,IACFA,EAAS,IAGK,MAATV,EAAeA,EAzBxB,SAAqBA,GACnB,GAAI+zG,EAAM/zG,GAAO,OAAO+zG,EAAM/zG,GAC9B,IAAIpgB,EAAY,YAAqBogB,GAOrC,OALImlQ,EAPW,MAQbpxJ,EAAM/zG,GAAQpgB,EACdulR,KAGKvlR,EAgBsBylR,CAAYrlQ,EAAZqlQ,CAAkB3kQ,EAAQ,CACrDo7N,QAAQ,IAQZ,SAASwpC,EAASrrQ,GAChB,IAAIsrQ,EAAgBtrQ,EAAKsrQ,cACrBtyQ,EAAKgH,EAAKhH,GACVuyQ,EAAYvrQ,EAAK5Y,KACjBA,OAAqB,IAAdmkR,GAA+BA,EAC1C,OAAO,kBAAoBv7G,EAAQgyB,SAAU,MAAM,SAAUhyB,GAC1DA,IAAyH,QAAU,GACpI,IAAI2vC,EAAU3vC,EAAQ2vC,QAClBkrE,EAAgB76G,EAAQ66G,cACxBxnR,EAAS+D,EAAOu4M,EAAQv4M,KAAOu4M,EAAQrqM,QACvCktG,GAAW,QAAe8oK,EAA8B,iBAAPtyQ,EAAkBmyQ,EAAanyQ,EAAIsyQ,EAAc7kQ,SAAU,OAAS,GAAIzN,EAAI,CAC/H8nK,SAAUqqG,EAAanyQ,EAAG8nK,SAAUwqG,EAAc7kQ,UAC/CzN,GAGL,OAAI6xQ,GACFxnR,EAAOm/G,GACA,MAGF,kBAAoBwoK,EAAW,CACpCl4N,QAAS,WACPzvD,EAAOm/G,IAET83E,SAAU,SAAkB//K,EAAMs6B,GAChC,IAAIwuK,GAAe,QAAexuK,EAAU77B,KAEvC,QAAkBqqM,GAAc,OAAS,GAAI7gG,EAAU,CAC1D5vG,IAAKywM,EAAazwM,QAElBvP,EAAOm/G,IAGXxpG,GAAIA,OAaV,IAAIwyQ,EAAU,GAEVC,EAAe,EAyBnB,SAASC,EAAU5qG,EAAU39K,QACX,IAAZA,IACFA,EAAU,KAGW,iBAAZA,GAAwBlC,MAAMyc,QAAQva,MAC/CA,EAAU,CACR4iB,KAAM5iB,IAIV,IAAIwoR,EAAWxoR,EACX4iB,EAAO4lQ,EAAS5lQ,KAChB6lQ,EAAiBD,EAASh+B,MAC1BA,OAA2B,IAAnBi+B,GAAoCA,EAC5CC,EAAkBF,EAASpoF,OAC3BA,OAA6B,IAApBsoF,GAAqCA,EAC9CC,EAAqBH,EAAS7pC,UAC9BA,OAAmC,IAAvBgqC,GAAwCA,EAExD,MADY,GAAGzwQ,OAAO0K,GACTb,QAAO,SAAUiqM,EAASppM,GACrC,IAAKA,GAAiB,KAATA,EAAa,OAAO,KACjC,GAAIopM,EAAS,OAAOA,EAEpB,IAAI48D,EA/CR,SAAuBhmQ,EAAM5iB,GAC3B,IAAImjG,EAAW,GAAKnjG,EAAQi3B,IAAMj3B,EAAQogM,OAASpgM,EAAQ2+O,UACvDkqC,EAAYR,EAAQllL,KAAcklL,EAAQllL,GAAY,IAC1D,GAAI0lL,EAAUjmQ,GAAO,OAAOimQ,EAAUjmQ,GACtC,IAAIpa,EAAO,GAEP3D,EAAS,CACXk4F,OAFW,IAAan6E,EAAMpa,EAAMxI,GAGpCwI,KAAMA,GAQR,OALI8/Q,EAda,MAefO,EAAUjmQ,GAAQ/d,EAClByjR,KAGKzjR,EA+BcikR,CAAclmQ,EAAM,CACrCqU,IAAKuzN,EACLpqD,OAAQA,EACRu+C,UAAWA,IAET5hJ,EAAS6rL,EAAa7rL,OACtBv0F,EAAOogR,EAAapgR,KAEpBgkB,EAAQuwE,EAAOpmE,KAAKgnJ,GACxB,IAAKnxJ,EAAO,OAAO,KACnB,IAAIzsB,EAAMysB,EAAM,GACZxrB,EAASwrB,EAAMliB,MAAM,GACrBs9Q,EAAUjqG,IAAa59K,EAC3B,OAAIyqP,IAAUo9B,EAAgB,KACvB,CACLhlQ,KAAMA,EAEN7iB,IAAc,MAAT6iB,GAAwB,KAAR7iB,EAAa,IAAMA,EAExC6nR,QAASA,EAETtkQ,OAAQ9a,EAAKuZ,QAAO,SAAUgnQ,EAAMt5Q,EAAK5J,GAEvC,OADAkjR,EAAKt5Q,EAAI3O,MAAQE,EAAO6E,GACjBkjR,IACN,OAEJ,MAiBL,IAAIC,EAEJ,SAAU3E,GAGR,SAAS2E,IACP,OAAO3E,EAAiBt/Q,MAAM3G,KAAMoB,YAAcpB,KAmCpD,OAtCA,OAAe4qR,EAAO3E,GAMT2E,EAAM1qR,UAEZu6B,OAAS,WACd,IAAIj6B,EAAQR,KAEZ,OAAO,kBAAoByuK,EAAQgyB,SAAU,MAAM,SAAUoqF,GAC1DA,IAAwH,QAAU,GACnI,IAAI5pK,EAAWzgH,EAAMub,MAAMklG,UAAY4pK,EAAU5pK,SAC7C7yF,EAAQ5tB,EAAMub,MAAMguQ,cAAgBvpR,EAAMub,MAAMguQ,cAClDvpR,EAAMub,MAAMyI,KAAO2lQ,EAAUlpK,EAASs+D,SAAU/+K,EAAMub,OAAS8uQ,EAAUz8P,MAEvErS,GAAQ,OAAS,GAAI8uQ,EAAW,CAClC5pK,SAAUA,EACV7yF,MAAOA,IAGLggO,EAAc5tP,EAAMub,MACpBmK,EAAWkoO,EAAYloO,SACvBgX,EAAYkxN,EAAYlxN,UACxBzC,EAAS2zN,EAAY3zN,OAOzB,OAJI/6B,MAAMyc,QAAQ+J,IAAiC,IAApBA,EAAS7kB,SACtC6kB,EAAW,MAGN,kBAAoBuoJ,EAAQQ,SAAU,CAC3CtpK,MAAOoW,GACNA,EAAMqS,MAAQlI,EAA+B,mBAAbA,EAAuHA,EAASnK,GAASmK,EAAWgX,EAAY,kBAAoBA,EAAWnhB,GAAS0e,EAASA,EAAO1e,GAAS,KAA2B,mBAAbmK,EAAuHA,EAASnK,GAAS,UAIxZ6uQ,EAvCT,CAwCE,eAkJA,cAkBF,IAAIj1H,EAEJ,SAAUswH,GAGR,SAAStwH,IACP,OAAOswH,EAAiBt/Q,MAAM3G,KAAMoB,YAAcpB,KAgCpD,OAnCA,OAAe21J,EAAQswH,GAMVtwH,EAAOz1J,UAEbu6B,OAAS,WACd,IAAIj6B,EAAQR,KAEZ,OAAO,kBAAoByuK,EAAQgyB,SAAU,MAAM,SAAUhyB,GAC1DA,IAAuH,QAAU,GAClI,IACI5vJ,EAASuP,EADT6yF,EAAWzgH,EAAMub,MAAMklG,UAAYwtD,EAAQxtD,SAe/C,OATA,qBAAuBzgH,EAAMub,MAAMmK,UAAU,SAAUsF,GACrD,GAAa,MAAT4C,GAAiB,mBAAqB5C,GAAQ,CAChD3M,EAAU2M,EACV,IAAIhH,EAAOgH,EAAMzP,MAAMyI,MAAQgH,EAAMzP,MAAM1S,KAC3C+kB,EAAQ5J,EAAO2lQ,EAAUlpK,EAASs+D,UAAU,OAAS,GAAI/zJ,EAAMzP,MAAO,CACpEyI,KAAMA,KACFiqJ,EAAQrgJ,UAGXA,EAAQ,iBAAmBvP,EAAS,CACzCoiG,SAAUA,EACV8oK,cAAe37P,IACZ,SAIFunI,EApCT,CAqCE,eAkBF,SAASm1H,EAAWtqF,GAClB,IAAIrwK,EAAc,eAAiBqwK,EAAUrwK,aAAeqwK,EAAU99L,MAAQ,IAE1E4sP,EAAI,SAAWvzO,GACjB,IAAIgvQ,EAAsBhvQ,EAAMgvQ,oBAC5BC,GAAiB,OAA8BjvQ,EAAO,CAAC,wBAE3D,OAAO,kBAAoB0yJ,EAAQgyB,SAAU,MAAM,SAAUhyB,GAE3D,OADCA,IAAsI,QAAU,GAC1I,kBAAoB+xB,GAAW,OAAS,GAAIwqF,EAAgBv8G,EAAS,CAC1E1xI,IAAKguP,SAcX,OATAz7B,EAAEn/N,YAAcA,EAChBm/N,EAAE27B,iBAAmBzqF,EAQd,IAAa8uD,EAAG9uD,GAGR,qCC3rBjB,UAEQ,EAAO,CAAC,EAAW,QAAS,QAAmB,QAAc,QAAiC,QAAiC,SAAsC,EAUpK,SAAUznL,EAASymL,EAAQ0rF,EAAgBC,EAAYC,EAAcC,EAAcC,GACxF,aAEA/rR,OAAOuO,eAAeiL,EAAS,aAAc,CACzCpT,OAAO,IAGX,IAAIq7L,EAAUtB,EAAuBF,GAEjC+rF,EAAkB7rF,EAAuBwrF,GAEzCzrF,EAAcC,EAAuByrF,GAErCK,EAAgB9rF,EAAuB0rF,GAEvCK,EAAgB/rF,EAAuB2rF,GAEvCK,EAAmBhsF,EAAuB4rF,GAE9C,SAAS5rF,EAAuBxmL,GAC5B,OAAOA,GAAOA,EAAImB,WAAanB,EAAM,CACjCoB,QAASpB,GAUjB,IAAIgnK,EAAe,WACf,SAASp3E,EAAiB33F,EAAQ4K,GAC9B,IAAK,IAAI7a,EAAI,EAAGA,EAAI6a,EAAM1a,OAAQH,IAAK,CACnC,IAAI8a,EAAaD,EAAM7a,GACvB8a,EAAWjO,WAAaiO,EAAWjO,aAAc,EACjDiO,EAAWhO,cAAe,EACtB,UAAWgO,IAAYA,EAAW7C,UAAW,GACjD5Z,OAAOuO,eAAeqD,EAAQ6K,EAAW3K,IAAK2K,IAItD,OAAO,SAAUsO,EAAaG,EAAY01J,GAGtC,OAFI11J,GAAYq+E,EAAiBx+E,EAAYpqB,UAAWuqB,GACpD01J,GAAar3E,EAAiBx+E,EAAa61J,GACxC71J,GAdI,GA0CnB,IAAIjR,EAAW9Z,OAAOwB,QAAU,SAAUoQ,GACtC,IAAK,IAAIjQ,EAAI,EAAGA,EAAIE,UAAUC,OAAQH,IAAK,CACvC,IAAIoY,EAASlY,UAAUF,GAEvB,IAAK,IAAImQ,KAAOiI,EACR/Z,OAAOW,UAAUJ,eAAeY,KAAK4Y,EAAQjI,KAC7CF,EAAOE,GAAOiI,EAAOjI,IAKjC,OAAOF,GAGPw6Q,EAAa,SAAoBxlE,EAAKrjN,EAAM8oR,GAC5C,IAAIr+Q,EAAKk+Q,EAAcnxQ,QAAQuxQ,WAS/B,OARAL,EAAclxQ,QAAQy/M,SAAS,CAC3BztN,KAAM,SACNxJ,KAAMuW,EAAS,GAAIvW,EAAM,CACrByK,GAAIA,EACJq+Q,UAAWA,EACX3jR,QAASk+M,MAGV54M,GAGPu+Q,EAAS,SAAU7F,GAGnB,SAAS6F,EAAO/vQ,IA9EpB,SAAyBzZ,EAAUgoB,GAC/B,KAAMhoB,aAAoBgoB,GACtB,MAAM,IAAI7kB,UAAU,qCA6EpB8kB,CAAgBvqB,KAAM8rR,GAEtB,IAAItrR,EAzDZ,SAAoCwY,EAAMtY,GACtC,IAAKsY,EACD,MAAM,IAAIC,eAAe,6DAG7B,OAAOvY,GAAyB,iBAATA,GAAqC,mBAATA,EAA8BsY,EAAPtY,EAoD1Dk/L,CAA2B5/L,MAAO8rR,EAAOrsR,WAAaF,OAAOu5I,eAAegzI,IAASprR,KAAKV,KAAM+b,IAQ5G,OANAvb,EAAM4xB,MAAQ,CACV25P,UAAW,GACXC,SAAU,GACVC,QAAS,GACTC,WAAY,IAET1rR,EA0LX,OAnPJ,SAAmBgZ,EAAUC,GACzB,GAA0B,mBAAfA,GAA4C,OAAfA,EACpC,MAAM,IAAIhU,UAAU,kEAAoEgU,GAG5FD,EAAStZ,UAAYX,OAAOY,OAAOsZ,GAAcA,EAAWvZ,UAAW,CACnED,YAAa,CACT0F,MAAO6T,EACPzL,YAAY,EACZoL,UAAU,EACVnL,cAAc,KAGlByL,IAAYla,OAAOC,eAAiBD,OAAOC,eAAega,EAAUC,GAAcD,EAAS/Z,UAAYga,GA+B3GomL,CAAUisF,EAAQ7F,GAgBlB/lG,EAAa4rG,EAAQ,CAAC,CAClBz6Q,IAAK,oBACL1L,MAAO,WACH,IAAIiiL,EAAS5nL,KAETmsR,OAAiB,EACjBC,OAAkB,EAClBC,OAAgB,EAChBC,OAAmB,EAiBvBtsR,KAAKusR,gBAAkBf,EAAclxQ,QAAQjT,WAfvB,WAClBioD,uBAAsB,WAClB,OAAOA,uBAAsB,WACzB,IAAIjuD,EAGJ,GADAA,GADA+qR,GAAkB,EAAIV,EAAiBpxQ,SAAS,QAASstK,IAAW,IAC3CvmL,OACrBumL,EAAO7rK,MAAMwN,OAASq+J,EAAO7rK,MAAMwN,MAAMknD,OAASpvE,EAASumL,EAAO7rK,MAAMwN,MAAMknD,MAAO,CACrF,IAAIljE,EAAK6+Q,EAAgB,GAAG7+Q,GAC5Bi+Q,EAAclxQ,QAAQy/M,SAAS,CAAEztN,KAAM,SAAUxJ,KAAM,CAAEyK,GAAIA,KAC7D6+Q,GAAkB,EAAIV,EAAiBpxQ,SAAS,QAASstK,IAAW,GAExEA,EAAO/oJ,SAAS,CAAEktP,UAAWK,aAqBzCpsR,KAAKwsR,eAAiBhB,EAAclxQ,QAAQjT,WAfvB,WACjBioD,uBAAsB,WAClB,OAAOA,uBAAsB,WACzB,IAAIjuD,EAGJ,GADAA,GADA8qR,GAAiB,EAAIT,EAAiBpxQ,SAAS,OAAQstK,IAAW,IAC1CvmL,OACpBumL,EAAO7rK,MAAMwN,OAASq+J,EAAO7rK,MAAMwN,MAAMknD,OAASpvE,EAASumL,EAAO7rK,MAAMwN,MAAMknD,MAAO,CACrF,IAAIljE,EAAK4+Q,EAAe,GAAG5+Q,GAC3Bi+Q,EAAclxQ,QAAQy/M,SAAS,CAAEztN,KAAM,SAAUxJ,KAAM,CAAEyK,GAAIA,KAC7D4+Q,GAAiB,EAAIT,EAAiBpxQ,SAAS,OAAQstK,IAAW,GAEtEA,EAAO/oJ,SAAS,CAAEmtP,SAAUG,aAqBxCnsR,KAAKysR,cAAgBjB,EAAclxQ,QAAQjT,WAfvB,WAChBioD,uBAAsB,WAClB,OAAOA,uBAAsB,WACzB,IAAIjuD,EAGJ,GADAA,GADAgrR,GAAgB,EAAIX,EAAiBpxQ,SAAS,WAAYstK,IAAW,IAC9CvmL,OACnBumL,EAAO7rK,MAAMwN,OAASq+J,EAAO7rK,MAAMwN,MAAMknD,OAASpvE,EAASumL,EAAO7rK,MAAMwN,MAAMknD,MAAO,CACrF,IAAIljE,EAAK8+Q,EAAc,GAAG9+Q,GAC1Bi+Q,EAAclxQ,QAAQy/M,SAAS,CAAEztN,KAAM,SAAUxJ,KAAM,CAAEyK,GAAIA,KAC7D8+Q,GAAgB,EAAIX,EAAiBpxQ,SAAS,WAAYstK,IAAW,GAEzEA,EAAO/oJ,SAAS,CAAEotP,QAASI,aAqBvCrsR,KAAK0sR,iBAAmBlB,EAAclxQ,QAAQjT,WAfvB,WACnBioD,uBAAsB,WAClB,OAAOA,uBAAsB,WACzB,IAAIjuD,EAGJ,GADAA,GADAirR,GAAmB,EAAIZ,EAAiBpxQ,SAAS,cAAestK,IAAW,IACjDvmL,OACtBumL,EAAO7rK,MAAMwN,OAASq+J,EAAO7rK,MAAMwN,MAAMknD,OAASpvE,EAASumL,EAAO7rK,MAAMwN,MAAMknD,MAAO,CACrF,IAAIljE,EAAK++Q,EAAiB,GAAG/+Q,GAC7Bi+Q,EAAclxQ,QAAQy/M,SAAS,CAAEztN,KAAM,SAAUxJ,KAAM,CAAEyK,GAAIA,KAC7D++Q,GAAmB,EAAIZ,EAAiBpxQ,SAAS,cAAestK,IAAW,GAE/EA,EAAO/oJ,SAAS,CAAEqtP,WAAYI,aAQ1C,IAAIK,EAAe,CACfC,gBAAiB5sR,KAAK+b,MAAM6wQ,gBAC5BnlQ,OAAQznB,KAAK+b,MAAM0L,OACnBxf,QAASjI,KAAK+b,MAAM9T,QACpBshB,MAAOvpB,KAAK+b,MAAMwN,MAClBiD,KAAMxsB,KAAK+b,MAAMyQ,KACjBqgQ,aAAc7sR,KAAK+b,MAAM8wQ,aACzBhvP,SAAU79B,KAAK+b,MAAM8hB,UAAY,YACjCivP,gBAAiB9sR,KAAK+b,MAAM+wQ,kBAAmB,GAEnDrB,EAAcnxQ,QAAQyyQ,gBAAgBJ,KAE3C,CACCt7Q,IAAK,uBACL1L,MAAO,WACH3F,KAAKysR,gBACLzsR,KAAK0sR,mBACL1sR,KAAKwsR,iBACLxsR,KAAKusR,oBAEV,CACCl7Q,IAAK,SACL1L,MAAO,WACH,IAAIoiL,EAAS/nL,KAETgtR,EAAU,SAAiBC,EAAOxlR,GAClC,IAAIylR,EAAY,aAAeD,EAAM1/Q,GAAK,IAAM0/Q,EAAMpvP,SAClDtwB,EAAK0/Q,EAAM1/Q,GACXq+Q,EAAYH,EAAcnxQ,QAAQ6yQ,mBAAmBF,EAAMrB,UAAW,QACtE3jR,EAAUwjR,EAAcnxQ,QAAQ6yQ,mBAAmBF,EAAMhlR,QAAS8/K,EAAOhsK,MAAM9T,QAAS,IACxF41B,EAAW4tP,EAAcnxQ,QAAQ6yQ,mBAAmBF,EAAMpvP,SAAUkqJ,EAAOhsK,MAAM8hB,SAAU,aAE3FuvP,GADS3B,EAAcnxQ,QAAQ6yQ,mBAAmBF,EAAMxlQ,OAAQsgK,EAAOhsK,MAAM0L,OAAQ,GAC5EgkQ,EAAcnxQ,QAAQ6yQ,mBAAmBF,EAAMG,OAAQrlG,EAAOhsK,MAAMqxQ,SAC7EC,EAAcJ,EAAMI,YACpBC,EAAO7B,EAAcnxQ,QAAQ6yQ,mBAAmBF,EAAMK,KAAMvlG,EAAOhsK,MAAMuxQ,MAAM,GAC/E9jR,EAAUiiR,EAAcnxQ,QAAQ6yQ,mBAAmBF,EAAMzjR,QAASu+K,EAAOhsK,MAAMvS,QAAS,KACxFgjB,EAAOi/P,EAAcnxQ,QAAQ6yQ,mBAAmBF,EAAMzgQ,KAAMu7J,EAAOhsK,MAAMyQ,MACzEwiB,EAAUy8O,EAAcnxQ,QAAQ6yQ,mBAAmBF,EAAMj+O,QAAS+4I,EAAOhsK,MAAMizB,SAC/Eu+O,EAAS9B,EAAcnxQ,QAAQ6yQ,mBAAmBF,EAAMM,OAAQxlG,EAAOhsK,MAAMwxQ,QAC7EV,EAAepB,EAAcnxQ,QAAQ6yQ,mBAAmBF,EAAMJ,aAAc9kG,EAAOhsK,MAAM8wQ,cACzFD,EAAkB7kG,EAAOhsK,MAAM6wQ,gBAEnC,OAAO5rF,EAAQ1mL,QAAQzC,cAAc0zQ,EAAgBjxQ,QAAS,CAC1DjJ,IAAK67Q,EACL3/Q,GAAIA,EACJs/Q,aAAcA,EACdjB,UAAWA,EACX3jR,QAASA,EACT41B,SAAUA,EACVuvP,OAAQA,EACRC,YAAaA,EACbC,KAAMA,EACN9jR,QAASA,EACTgjB,KAAMA,EACNwiB,QAASA,EACTu+O,OAAQA,EACRX,gBAAiBA,KAErBY,EAAmBxtR,KAAKoyB,MAAM25P,UAAUz0Q,IAAI01Q,GAC5CS,EAAkBztR,KAAKoyB,MAAM45P,SAAS10Q,IAAI01Q,GAC1CU,EAAiB1tR,KAAKoyB,MAAM65P,QAAQ30Q,IAAI01Q,GACxCW,EAAoB3tR,KAAKoyB,MAAM85P,WAAW50Q,IAAI01Q,GAClD,OAAOhsF,EAAQ1mL,QAAQzC,cACnB,MACA,CAAEoX,UAAW,mBACbu+P,EACAC,EACAC,EACAC,MAGR,CAAC,CACDt8Q,IAAK,OACL1L,MAAO,SAAcwgN,EAAKrjN,GACtB,OAAO6oR,EAAWxlE,EAAKrjN,EAAM,UAElC,CACCuO,IAAK,QACL1L,MAAO,SAAewgN,EAAKrjN,GACvB,OAAO6oR,EAAWxlE,EAAKrjN,EAAM,WAElC,CACCuO,IAAK,UACL1L,MAAO,SAAiBwgN,EAAKrjN,GACzB,OAAO6oR,EAAWxlE,EAAKrjN,EAAM,aAElC,CACCuO,IAAK,UACL1L,MAAO,SAAiBwgN,EAAKrjN,GACzB,OAAO6oR,EAAWxlE,EAAKrjN,EAAM,aAElC,CACCuO,IAAK,QACL1L,MAAO,SAAe4H,GAClBi+Q,EAAclxQ,QAAQy/M,SAAS,CAAEztN,KAAM,SAAUxJ,KAAM,CAAEyK,GAAIA,OAElE,CACC8D,IAAK,WACL1L,MAAO,WACH6lR,EAAclxQ,QAAQy/M,SAAS,CAAEztN,KAAM,kBAIxCw/Q,EAxME,CAyMX9qF,EAAQ1mL,QAAQkmL,WAElBsrF,EAAO17P,UAAY,CACfnoB,QAASw3L,EAAYnlL,QAAQ6T,OAC7B0P,SAAU4hK,EAAYnlL,QAAQ6T,OAC9B1G,OAAQg4K,EAAYnlL,QAAQw+F,OAC5BvvF,MAAOk2K,EAAYnlL,QAAQ6xO,UAAU,CAAC1sD,EAAYnlL,QAAQqqN,KAAMllC,EAAYnlL,QAAQuqF,SACpFuoL,OAAQ3tF,EAAYnlL,QAAQ6T,OAC5Bm/P,KAAM7tF,EAAYnlL,QAAQ6xO,UAAU,CAAC1sD,EAAYnlL,QAAQ6T,OAAQsxK,EAAYnlL,QAAQuqF,OAAQ46F,EAAYnlL,QAAQqqN,OACjHn7N,QAASi2L,EAAYnlL,QAAQ6xO,UAAU,CAAC1sD,EAAYnlL,QAAQ4xO,MAAM,CAAC,SAAUzsD,EAAYnlL,QAAQw+F,SACjGtsF,KAAMizK,EAAYnlL,QAAQqqN,KAC1BmoD,gBAAiBrtF,EAAYnlL,QAAQqqN,KACrC31L,QAASywJ,EAAYnlL,QAAQuN,KAC7B0lQ,OAAQ9tF,EAAYnlL,QAAQuN,KAC5BglQ,aAAcptF,EAAYnlL,QAAQuqF,OAClC+nL,gBAAiBntF,EAAYnlL,QAAQuN,MAGzC9O,EAAQuB,QAAUwxQ,QAzU8J,0DCFpL,UAEQ,EAAO,CAAC,EAAW,QAAS,QAAa,QAAc,QAAiC,QAAiC,SAAwB,EAUhJ,SAAU/yQ,EAASymL,EAAQouF,EAAWzC,EAAYE,EAAcD,EAAcyC,GACnF,aAEAtuR,OAAOuO,eAAeiL,EAAS,aAAc,CACzCpT,OAAO,IAGX,IAAIq7L,EAAUtB,EAAuBF,GAEjCsuF,EAAapuF,EAAuBkuF,GAEpCnuF,EAAcC,EAAuByrF,GAErCM,EAAgB/rF,EAAuB2rF,GAEvCG,EAAgB9rF,EAAuB0rF,GAEvC2C,EAAsBruF,EAAuBmuF,GAEjD,SAASnuF,EAAuBxmL,GAC5B,OAAOA,GAAOA,EAAImB,WAAanB,EAAM,CACjCoB,QAASpB,GAIjB,IAAI2C,EAA4B,mBAAXxW,QAAoD,iBAApBA,OAAOC,SAAwB,SAAU4T,GAC1F,cAAcA,GACd,SAAUA,GACV,OAAOA,GAAyB,mBAAX7T,QAAyB6T,EAAIjZ,cAAgBoF,QAAU6T,IAAQ7T,OAAOnF,UAAY,gBAAkBgZ,GAS7H,IAAIgnK,EAAe,WACf,SAASp3E,EAAiB33F,EAAQ4K,GAC9B,IAAK,IAAI7a,EAAI,EAAGA,EAAI6a,EAAM1a,OAAQH,IAAK,CACnC,IAAI8a,EAAaD,EAAM7a,GACvB8a,EAAWjO,WAAaiO,EAAWjO,aAAc,EACjDiO,EAAWhO,cAAe,EACtB,UAAWgO,IAAYA,EAAW7C,UAAW,GACjD5Z,OAAOuO,eAAeqD,EAAQ6K,EAAW3K,IAAK2K,IAItD,OAAO,SAAUsO,EAAaG,EAAY01J,GAGtC,OAFI11J,GAAYq+E,EAAiBx+E,EAAYpqB,UAAWuqB,GACpD01J,GAAar3E,EAAiBx+E,EAAa61J,GACxC71J,GAdI,GA0CnB,IAAI0jQ,EAAgB,SAAU/H,GAG1B,SAAS+H,EAAcjyQ,GAGnB,OAtDR,SAAyBzZ,EAAUgoB,GAC/B,KAAMhoB,aAAoBgoB,GACtB,MAAM,IAAI7kB,UAAU,qCAkDpB8kB,CAAgBvqB,KAAMguR,GA5B9B,SAAoCh1Q,EAAMtY,GACtC,IAAKsY,EACD,MAAM,IAAIC,eAAe,6DAG7B,OAAOvY,GAAyB,iBAATA,GAAqC,mBAATA,EAA8BsY,EAAPtY,EAyB/Dk/L,CAA2B5/L,MAAOguR,EAAcvuR,WAAaF,OAAOu5I,eAAek1I,IAAgBttR,KAAKV,KAAM+b,IAoGzH,OA1HJ,SAAmBvC,EAAUC,GACzB,GAA0B,mBAAfA,GAA4C,OAAfA,EACpC,MAAM,IAAIhU,UAAU,kEAAoEgU,GAG5FD,EAAStZ,UAAYX,OAAOY,OAAOsZ,GAAcA,EAAWvZ,UAAW,CACnED,YAAa,CACT0F,MAAO6T,EACPzL,YAAY,EACZoL,UAAU,EACVnL,cAAc,KAGlByL,IAAYla,OAAOC,eAAiBD,OAAOC,eAAega,EAAUC,GAAcD,EAAS/Z,UAAYga,GAI3GomL,CAAUmuF,EAAe/H,GAQzB/lG,EAAa8tG,EAAe,CAAC,CACzB38Q,IAAK,mBACL1L,MAAO,WACH,IAAIsoR,OAAiB,EACjBC,EAAUluR,KAAK+b,MAAMxO,GACrB4gR,EAAmBL,EAAWxzQ,QAAQgkE,YAAYt+E,MAClDouR,EAAiB,WACjBD,EAAiB5mQ,MAAMm/B,QAAU,OACjC8kO,EAAclxQ,QAAQy/M,SAAS,CAAEztN,KAAM,SAAUxJ,KAAM,CAAEyK,GAAI2gR,KAC7D38Q,aAAa08Q,IAEbt2Q,SAASk0E,QAAUl0E,SAAS02Q,eAAiBF,EAAiBt+P,UAAU0H,SAAS,qBACjFi0P,EAAclxQ,QAAQy/M,SAAS,CAAEztN,KAAM,SAAUxJ,KAAM,CAAEyK,GAAI2gR,MAE7DC,EAAiBt+P,UAAUkyC,OAAO,gBAClCksN,EAAiBp9Q,YAAW,WACxBs9Q,EAAiBt+P,UAAUmyC,IAAI,kBAChC,KACHmsN,EAAiB7tQ,oBAAoB,qBAAsB8tQ,GAAgB,GAC3ED,EAAiB7tQ,oBAAoB,eAAgB8tQ,GAAgB,GACrED,EAAiBtwQ,iBAAiB,qBAAsBuwQ,GAAgB,GACxED,EAAiBtwQ,iBAAiB,eAAgBuwQ,GAAgB,IAGtEpuR,KAAKsuR,YAActuR,KAAKsuR,WAAWhtK,SAExC,CACCjwG,IAAK,qBACL1L,MAAO,WACH,IAAI2nR,EAAOttR,KAAK+b,MAAMuxQ,KAClB1B,EAAY5rR,KAAK+b,MAAM6vQ,UACvB0B,GAAwB,iBAATA,IACfttR,KAAKsuR,WAAa,IAAIC,MAAMjB,GAC5BttR,KAAKsuR,WAAWhtK,OAChBthH,KAAKsuR,WAAW9vK,QAEhB8uK,GAAwE,iBAA/C,IAATA,EAAuB,YAAczxQ,EAAQyxQ,KAAqC,SAAd1B,IACpF5rR,KAAKsuR,WAAa,IAAIC,MAAMjB,EAAK7kR,MACjCzI,KAAKsuR,WAAWhtK,OAChBthH,KAAKsuR,WAAW9vK,QAEhB8uK,GAAwE,iBAA/C,IAATA,EAAuB,YAAczxQ,EAAQyxQ,KAAqC,UAAd1B,IACpF5rR,KAAKsuR,WAAa,IAAIC,MAAMjB,EAAKrmR,OACjCjH,KAAKsuR,WAAWhtK,OAChBthH,KAAKsuR,WAAW9vK,QAEhB8uK,GAAwE,iBAA/C,IAATA,EAAuB,YAAczxQ,EAAQyxQ,KAAqC,YAAd1B,IACpF5rR,KAAKsuR,WAAa,IAAIC,MAAMjB,EAAK3uF,SACjC3+L,KAAKsuR,WAAWhtK,OAChBthH,KAAKsuR,WAAW9vK,QAEhB8uK,GAAwE,iBAA/C,IAATA,EAAuB,YAAczxQ,EAAQyxQ,KAAqC,YAAd1B,IACpF5rR,KAAKsuR,WAAa,IAAIC,MAAMjB,EAAK1jF,SACjC5pM,KAAKsuR,WAAWhtK,OAChBthH,KAAKsuR,WAAW9vK,UAGzB,CACCntG,IAAK,oBACL1L,MAAO,WACH,IAAIiiL,EAAS5nL,KAEqB,iBAAvBA,KAAK+b,MAAMvS,UAClBxJ,KAAKwuR,WAAa39Q,YAAW,WACzB+2K,EAAO6mG,qBACRzuR,KAAK+b,MAAMvS,UAEdxJ,KAAK+b,MAAMwxQ,QACXvtR,KAAK+b,MAAMwxQ,WAGpB,CACCl8Q,IAAK,uBACL1L,MAAO,WACC3F,KAAKwuR,YACLj9Q,aAAavR,KAAKwuR,YAElBxuR,KAAK+b,MAAMizB,SACXhvC,KAAK+b,MAAMizB,YAGpB,CACC39B,IAAK,SACL1L,MAAO,WACH,IAAI+2B,EAAa,uBAAyB18B,KAAK+b,MAAM6vQ,UAAY,YAAc5rR,KAAK+b,MAAM8hB,SAAW,KAAO79B,KAAK+b,MAAMqxQ,OAAS,oCAAsCptR,KAAK+b,MAAMqxQ,OAAS,IAAM,gBAC5LnlR,EAAUjI,KAAK+b,MAAMyQ,KAAOw0K,EAAQ1mL,QAAQzC,cAAc,OAAQ,CAAEm+O,wBAAyB,CAAEmC,OAAQn4P,KAAK+b,MAAM9T,WAAejI,KAAK+b,MAAM9T,QAC5I6X,EAAS9f,KAAK+b,MAAMsxQ,YAAc5B,EAAcnxQ,QAAQo0Q,WAAW1uR,KAAK+b,MAAMsxQ,aAAe,GAC7F9/Q,EAAKvN,KAAK+b,MAAMxO,GAChBohR,EAAc3uR,KAAKyuR,iBAAiB/9P,KAAK1wB,MACzC4sR,EAAkB5sR,KAAK+b,MAAM6wQ,iBAAmBmB,EAAoBzzQ,QACpEuyQ,EAAe7sR,KAAK+b,MAAM8wQ,cAAgB,GAC1CjB,EAAY5rR,KAAK+b,MAAM6vQ,UAE3B,OAAO5qF,EAAQ1mL,QAAQzC,cAAc+0Q,EAAiB,CAAElwP,WAAYA,EAAYnvB,GAAIA,EAAIuS,OAAQA,EAAQ7X,QAASA,EAAS0mR,YAAaA,EAAa9B,aAAcA,EAAcjB,UAAWA,QAI5LoC,EA1GS,CA2GlBhtF,EAAQ1mL,QAAQkmL,WAElBwtF,EAAc59P,UAAY,CACtBw7P,UAAWnsF,EAAYnlL,QAAQ6T,OAAO3rB,WACtCyF,QAASw3L,EAAYnlL,QAAQ6xO,UAAU,CAAC1sD,EAAYnlL,QAAQ6T,OAAQsxK,EAAYnlL,QAAQmkB,OACxFZ,SAAU4hK,EAAYnlL,QAAQ6T,OAAO3rB,WACrC6qR,YAAa5tF,EAAYnlL,QAAQ6T,OACjC5gB,GAAIkyL,EAAYnlL,QAAQ6T,OAAO3rB,WAC/B4qR,OAAQ3tF,EAAYnlL,QAAQ6T,OAC5Bm/P,KAAM7tF,EAAYnlL,QAAQ6xO,UAAU,CAAC1sD,EAAYnlL,QAAQ6T,OAAQsxK,EAAYnlL,QAAQuqF,OAAQ46F,EAAYnlL,QAAQqqN,OACjHn7N,QAASi2L,EAAYnlL,QAAQ6xO,UAAU,CAAC1sD,EAAYnlL,QAAQ4xO,MAAM,CAAC,SAAUzsD,EAAYnlL,QAAQw+F,SACjGtsF,KAAMizK,EAAYnlL,QAAQqqN,KAC1B31L,QAASywJ,EAAYnlL,QAAQuN,KAC7B0lQ,OAAQ9tF,EAAYnlL,QAAQuN,KAC5BglQ,aAAcptF,EAAYnlL,QAAQuqF,OAClC+nL,gBAAiBntF,EAAYnlL,QAAQuN,MAGzC9O,EAAQuB,QAAU0zQ,QAtN0I,0DCFhK,UAEQ,EAAO,CAAC,EAAW,QAAS,SAAe,EAU1C,SAAUj1Q,EAASymL,EAAQ2rF,GAChC,aAEA5rR,OAAOuO,eAAeiL,EAAS,aAAc,CACzCpT,OAAO,IAGX,IAAIq7L,EAAUtB,EAAuBF,GAEjCC,EAAcC,EAAuByrF,GAEzC,SAASzrF,EAAuBxmL,GAC5B,OAAOA,GAAOA,EAAImB,WAAanB,EAAM,CACjCoB,QAASpB,GAUjB,IAAIgnK,EAAe,WACf,SAASp3E,EAAiB33F,EAAQ4K,GAC9B,IAAK,IAAI7a,EAAI,EAAGA,EAAI6a,EAAM1a,OAAQH,IAAK,CACnC,IAAI8a,EAAaD,EAAM7a,GACvB8a,EAAWjO,WAAaiO,EAAWjO,aAAc,EACjDiO,EAAWhO,cAAe,EACtB,UAAWgO,IAAYA,EAAW7C,UAAW,GACjD5Z,OAAOuO,eAAeqD,EAAQ6K,EAAW3K,IAAK2K,IAItD,OAAO,SAAUsO,EAAaG,EAAY01J,GAGtC,OAFI11J,GAAYq+E,EAAiBx+E,EAAYpqB,UAAWuqB,GACpD01J,GAAar3E,EAAiBx+E,EAAa61J,GACxC71J,GAdI,GA0CnB,IAAIskQ,EAAoB,SAAU3I,GAG9B,SAAS2I,EAAkB7yQ,GAGvB,OAtDR,SAAyBzZ,EAAUgoB,GAC/B,KAAMhoB,aAAoBgoB,GACtB,MAAM,IAAI7kB,UAAU,qCAkDpB8kB,CAAgBvqB,KAAM4uR,GA5B9B,SAAoC51Q,EAAMtY,GACtC,IAAKsY,EACD,MAAM,IAAIC,eAAe,6DAG7B,OAAOvY,GAAyB,iBAATA,GAAqC,mBAATA,EAA8BsY,EAAPtY,EAyB/Dk/L,CAA2B5/L,MAAO4uR,EAAkBnvR,WAAaF,OAAOu5I,eAAe81I,IAAoBluR,KAAKV,KAAM+b,IAmBjI,OAzCJ,SAAmBvC,EAAUC,GACzB,GAA0B,mBAAfA,GAA4C,OAAfA,EACpC,MAAM,IAAIhU,UAAU,kEAAoEgU,GAG5FD,EAAStZ,UAAYX,OAAOY,OAAOsZ,GAAcA,EAAWvZ,UAAW,CACnED,YAAa,CACT0F,MAAO6T,EACPzL,YAAY,EACZoL,UAAU,EACVnL,cAAc,KAGlByL,IAAYla,OAAOC,eAAiBD,OAAOC,eAAega,EAAUC,GAAcD,EAAS/Z,UAAYga,GAI3GomL,CAAU+uF,EAAmB3I,GAQ7B/lG,EAAa0uG,EAAmB,CAAC,CAC7Bv9Q,IAAK,SACL1L,MAAO,WACH,OAAOq7L,EAAQ1mL,QAAQzC,cACnB,MACA,CAAEoX,UAAWjvB,KAAK+b,MAAM2gB,WAAYnvB,GAAIvN,KAAK+b,MAAMxO,GAAIga,MAAOvnB,KAAK+b,MAAM+D,QACzEkhL,EAAQ1mL,QAAQzC,cACZ,MACA,CAAEoX,UAAW,qBACbjvB,KAAK+b,MAAM9T,SAEf+4L,EAAQ1mL,QAAQzC,cAAc,OAAQ,CAAEoX,UAAW,gBAAiB4Y,QAAS7nC,KAAK+b,MAAM4yQ,mBAK7FC,EAzBa,CA0BtB5tF,EAAQ1mL,QAAQkmL,WAElBouF,EAAkBx+P,UAAY,CAC1B7iB,GAAIkyL,EAAYnlL,QAAQ6T,OAAO3rB,WAC/Bk6B,WAAY+iK,EAAYnlL,QAAQ6T,OAAO3rB,WACvCopR,UAAWnsF,EAAYnlL,QAAQ6T,OAAO3rB,WACtCsd,OAAQ2/K,EAAYnlL,QAAQuqF,OAAOriG,WACnCyF,QAASw3L,EAAYnlL,QAAQ6xO,UAAU,CAAC1sD,EAAYnlL,QAAQ6T,OAAQsxK,EAAYnlL,QAAQuqF,SAASriG,WACjGmsR,YAAalvF,EAAYnlL,QAAQuN,KAAKrlB,WACtCqqR,aAAcptF,EAAYnlL,QAAQuqF,QAGtC9rF,EAAQuB,QAAUs0Q,QAjHoC,0DCF1D,UAEQ,EAAO,CAAC,EAAW,QAAS,QAAa,QAAoB,QAAmB,SAAoB,EAUnG,SAAU71Q,EAASymL,EAAQouF,EAAW1C,EAAgBE,EAAcC,GACzE,aAEA9rR,OAAOuO,eAAeiL,EAAS,aAAc,CACzCpT,OAAO,IAGX,IAAIq7L,EAAUtB,EAAuBF,GAEjCsuF,EAAapuF,EAAuBkuF,GAEpCrC,EAAkB7rF,EAAuBwrF,GAEzCM,EAAgB9rF,EAAuB0rF,GAEvCK,EAAgB/rF,EAAuB2rF,GAE3C,SAAS3rF,EAAuBxmL,GAC5B,OAAOA,GAAOA,EAAImB,WAAanB,EAAM,CACjCoB,QAASpB,GAIjB,IAAIG,EAAW9Z,OAAOwB,QAAU,SAAUoQ,GACtC,IAAK,IAAIjQ,EAAI,EAAGA,EAAIE,UAAUC,OAAQH,IAAK,CACvC,IAAIoY,EAASlY,UAAUF,GAEvB,IAAK,IAAImQ,KAAOiI,EACR/Z,OAAOW,UAAUJ,eAAeY,KAAK4Y,EAAQjI,KAC7CF,EAAOE,GAAOiI,EAAOjI,IAKjC,OAAOF,GA4IX4H,EAAQuB,QAzIW,SAAsBu0Q,EAAgBC,GACrD,IAAIC,EAAc,EACdC,EAAiB,EACjBroO,EAAU,EACVsoO,EAAS,GACT1nQ,OAAQ,EACR2nQ,OAAa,EACbC,OAAkB,EAClBC,OAAkB,EAClBC,OAAqB,EACrBC,EAAa,SAAoBhjR,EAAMijR,GACvC,IAAIC,EAAmBC,EAAiB11Q,QAAO,SAAUb,GACrD,OAAOA,EAAI2kB,WAAavxB,GAAQojR,EAAmB7xP,WAAavxB,KAEpE,OAAOkjR,GAAoBA,EAAiB,GAAGjiR,KAAOgiR,GAEtDI,EAAe,SAAsB9xP,EAAU+xP,EAAc3C,EAAOiC,EAAYC,EAAiBU,GAajG,OAZAlpO,EAAUmpO,EAAO/0K,SAAWx1E,SAASxL,iBAAiB+zP,EAAWxzQ,QAAQgkE,YAAYuxM,IAAiBD,IAClGN,EAAWS,EAAW9C,EAAM1/Q,KAAOyiR,IACnCnyP,EAAW,EACXA,GAAsB0H,SAASyqP,IAE/BV,EAAWS,EAAW9C,EAAM1/Q,KAAOuiR,EAAO/0K,UAG1Cl9E,GAAsB0H,SAASohB,IAEnCp/B,EAAQqoQ,EAAe,KAAO/xP,EAAW,MACzCA,EAAsBsxP,GAItBO,EAAqBjE,EAAcnxQ,QAAQ21Q,kBAC3CH,OAAS,EACTI,OAAmB,EACnBF,OAAU,EACVpqI,OAAW,EACXuqI,OAAQ,EACRC,OAAgB,EAChBL,OAAY,EACZjD,OAAkB,EAElBt/B,EAAQ,GACW,SAAnBqhC,IACArhC,EAAQ,SAAezmP,GACnB,MAAyB,aAAlBA,EAAK82B,UAA6C,gBAAlB92B,EAAK82B,WAA+B92B,EAAK82B,WAA6C,aAAhC6xP,EAAmB7xP,UAA2D,gBAAhC6xP,EAAmB7xP,YAG/I,UAAnBgxP,IACArhC,EAAQ,SAAezmP,GACnB,MAAyB,cAAlBA,EAAK82B,UAA8C,iBAAlB92B,EAAK82B,WAAgC92B,EAAK82B,WAA6C,cAAhC6xP,EAAmB7xP,UAA4D,iBAAhC6xP,EAAmB7xP,YAGlJ,aAAnBgxP,IACArhC,EAAQ,SAAezmP,GACnB,MAAyB,QAAlBA,EAAK82B,WAAuB92B,EAAK82B,UAA4C,QAAhC6xP,EAAmB7xP,WAGxD,gBAAnBgxP,IACArhC,EAAQ,SAAezmP,GACnB,MAAyB,WAAlBA,EAAK82B,WAA0B92B,EAAK82B,UAA4C,WAAhC6xP,EAAmB7xP,WAIlF,IACI4xP,EADejE,EAAclxQ,QAAQ+1Q,WACLnkR,QAAQ6N,OAAOyzO,GAEnD,OAAOiiC,EAAiBn4Q,KAAI,SAAU21Q,GAYlC,GAXA6C,EAASJ,EAAmBnmQ,MAC5B2mQ,EAAmBR,EAAmB9C,gBACtCoD,EAAUvE,EAAcnxQ,QAAQ6yQ,mBAAmBF,EAAMxlQ,OAAQioQ,EAAmBjoQ,QACpFm+H,EAAW6lI,EAAcnxQ,QAAQ6yQ,mBAAmBF,EAAMhlR,QAASynR,EAAmBznR,SACtFkoR,EAAQ1E,EAAcnxQ,QAAQ6yQ,mBAAmBF,EAAMzgQ,KAAMkjQ,EAAmBljQ,MAChF4jQ,EAAgB3E,EAAcnxQ,QAAQ6yQ,mBAAmBF,EAAMJ,aAAc6C,EAAmB7C,cAChGkD,EAAYtE,EAAcnxQ,QAAQ6yQ,mBAAmBF,EAAMpvP,SAAU6xP,EAAmB7xP,UACxFivP,EAAkBrB,EAAcnxQ,QAAQ6yQ,mBAAmBF,EAAMH,gBAAiB4C,EAAmB5C,iBACrGsC,EAAkBW,GAAa,OAAO3vQ,KAAK2vQ,GAC3CV,EAAqBU,GAAa,UAAU3vQ,KAAK2vQ,GAE7CD,EAAQ,EAERZ,EAAav3Q,SAASE,cAAc,QACzBgY,UAAUmyC,IAAI,sBAGzB,IAeI6tN,EAfAS,EAAetvF,EAAQ1mL,QAAQzC,cAAc0zQ,EAAgBjxQ,QAAS,CACtEjJ,IAAKo6Q,EAAcnxQ,QAAQuxQ,WAC3Bt+Q,GAAIk+Q,EAAcnxQ,QAAQuxQ,WAC1BD,UAAWqB,EAAMrB,UACjB3jR,QAAS29I,EACT/nH,SAAUkyP,EACV3C,OAAQH,EAAMG,OACdC,YAAaJ,EAAMI,YACnBC,MAAM,EACN9jR,QAAS,OACTgjB,KAAM2jQ,EACNvD,gBAAiBsD,EACjBrD,aAAcuD,IAMdP,EADA/C,EACiBgB,EAAWxzQ,QAAQynQ,oCAAoC+M,EAAiBwB,EAAcpB,GAEtFpB,EAAWxzQ,QAAQmgB,OAAO61P,EAAcpB,GAG7Dv3Q,SAASjT,KAAKqwD,YAAYm6N,GAC1BC,EAAkB5pP,SAASxL,iBAAiB+zP,EAAWxzQ,QAAQgkE,YAAYuxM,IAAyB,QAChGT,IACAL,EAAcY,EAAaZ,EAAa,MAAO9B,EAAOiC,EAAYC,EAAiBU,IAEnFR,IACAL,EAAiBW,EAAaX,EAAgB,SAAU/B,EAAOiC,EAAYC,EAAiBU,IAEhG,IAAIU,EAAsBx2P,iBAAiB+zP,EAAWxzQ,QAAQgkE,YAAYuxM,IACnD,SAAnBhB,IACAtnQ,EAAQA,EAAQ,UAAYuoQ,EAAO/0K,SAAWx1E,SAASgrP,EAAoBt/P,OAAS,OAEjE,UAAnB49P,IACAtnQ,EAAQA,EAAQ,WAAauoQ,EAAO/0K,SAAWx1E,SAASgrP,EAAoBv/P,QAAU,OAE1Fi+P,EAAS51Q,EAAS,GAAI4zQ,EAAO,CAAEI,YAAa9lQ,IAC5CumQ,EAAWxzQ,QAAQ0nQ,uBAAuBkN,GAC1CA,EAAWnhP,WAAW4uB,YAAYuyN,QAElCD,EADOe,GAAWZ,EACT/1Q,EAAS,GAAI4zQ,EAAO,CAAEI,YAAa,QAAU9nP,SAASyqP,GAAW,QACnEA,GAAWX,EACTh2Q,EAAS,GAAI4zQ,EAAO,CAAEI,YAAa,WAAa9nP,SAASyqP,GAAW,QAEpE/C,EAEb,OAAOgC,YApLgG,wDCFnH,QAE4B,EAUnB,SAAUl2Q,GACf,aAMA,SAASy3Q,EAAmBt0Q,GACxB,GAAIxc,MAAMyc,QAAQD,GAAM,CACpB,IAAK,IAAIhb,EAAI,EAAG8sB,EAAOtuB,MAAMwc,EAAI7a,QAASH,EAAIgb,EAAI7a,OAAQH,IACtD8sB,EAAK9sB,GAAKgb,EAAIhb,GAGlB,OAAO8sB,EAEP,OAAOtuB,MAAM2J,KAAK6S,GAZ1B3c,OAAOuO,eAAeiL,EAAS,aAAc,CACzCpT,OAAO,IAiBX,IAAmD2iB,EAC3C8J,EACA04K,EACAulF,EAGAt2D,EAMA1yN,EAcJgzG,EAAS,SAAgBjoF,EAAO0+B,GAChC,MAAO,GAAGh3C,OAAO02Q,EAAmBp+P,GAAQ,CAAC0+B,EAAOhuD,QAGpDi/D,EAAS,SAAgB3vC,EAAO0+B,GAChC,IAAI2/N,EAAoBr+P,EAAMlmB,QAAQ6N,QAAO,SAAUhT,GACnD,OAAOA,EAAKwG,KAAOujD,EAAOhuD,KAAKyK,MAEnC,GAAI7N,MAAMyc,QAAQs0Q,GAAoB,CAClC,IAAIC,EAAoBt+P,EAAM1qB,QAAQ+oR,EAAkB,IACxD,MAAO,GAAG32Q,OAAO02Q,EAAmBp+P,EAAMlmB,MAAM,EAAGwkR,IAAqBF,EAAmBp+P,EAAMlmB,MAAMwkR,EAAoB,KAE/H,OAAOt+P,GAmBPu+P,GAzD+CroQ,EAyC/B,WAChB,IAAI8J,EAAQhxB,UAAUC,OAAS,QAAsBqP,IAAjBtP,UAAU,GAAmBA,UAAU,GAAK,GAC5E0vD,EAAS1vD,UAAU,GAEvB,OAAQ0vD,EAAOxkD,MACX,IAAK,SACD,OAAO+tG,EAAOjoF,EAAO0+B,GACzB,IAAK,SACD,OAAOiR,EAAO3vC,EAAO0+B,GACzB,IAAK,YACD,MAAO,GACX,QACI,OAAO1+B,IApDXA,OAAQ,EACR04K,EAAY,GACZulF,EAAW,WACX,OAAOj+P,GAQP/qB,EAAY,SAAmBgZ,GAE/B,OADAyqL,EAAUjlM,KAAKwa,GACR,WACHyqL,EAAYA,EAAU/wL,QAAO,SAAUkmF,GACnC,OAAOA,IAAM5/E,QAVrB05M,EAAW,SAAkBjpK,GAC7B1+B,EAAQ9J,EAAQ8J,EAAO0+B,GACvBg6I,EAAUxnM,SAAQ,SAAU+c,GACxB,OAAOA,SAWN,IACF,CACHgwQ,SAAUA,EAAUt2D,SAAUA,EAAU1yN,UAAWA,IAqC3D0R,EAAQuB,QAAUq2Q,QA1Fa,iBAApB,CAAC,OAAmB,iCCFnC,QAE4B,EAUnB,SAAU53Q,GACf,aAEAxZ,OAAOuO,eAAeiL,EAAS,aAAc,CACzCpT,OAAO,IAGX,IAAIkW,EAA4B,mBAAXxW,QAAoD,iBAApBA,OAAOC,SAAwB,SAAU4T,GAC1F,cAAcA,GACd,SAAUA,GACV,OAAOA,GAAyB,mBAAX7T,QAAyB6T,EAAIjZ,cAAgBoF,QAAU6T,IAAQ7T,OAAOnF,UAAY,gBAAkBgZ,GAGzH03Q,OAAqB,EAErBC,EAAc,CACdhF,SAAU,WACN,OAAOtoQ,KAAKC,SAAShgB,SAAS,IAAI2H,MAAM,KAAK,IAEjDgiR,mBAAoB,WAIhB,IAHA,IAAIxnR,OAAQ,EACRzE,OAAI,EAECwpB,EAAOtpB,UAAUC,OAAQ2N,EAAOtP,MAAMgrB,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IACzE3b,EAAK2b,GAAQvpB,UAAUupB,GAG3B,IAAKzpB,EAAI,EAAGA,EAAI8N,EAAK3N,OAAQH,IACzB,QAAuB,IAAZ8N,EAAK9N,GAAoB,CAChCyE,EAAQqJ,EAAK9N,GACb,MAGR,OAAOyE,GAEX+oR,WAAY,SAAoBzjR,GAC5B,IAAIxE,EAAS,GACTvF,OAAI,EACJ6iG,OAAQ,EACRh/E,EAAa9Z,GAASA,EAAME,MAAM,KAAK4O,OAAO+mB,SAElD,IAAK5/B,EAAI,EAAGA,EAAI6jB,EAAW1jB,OAAQH,IAE/BuF,GADAs9F,EAAQh/E,EAAW7jB,GAAGiK,MAAM,MACfxD,OAAO,EAAG,GAAG,GAAGyhB,QAAU26E,EAAM99E,KAAK,KAAKmD,OAE3D,OAAO3iB,GAEXsmR,gBAAiB,SAAyBntQ,GACkC,iBAAjD,IAAXA,EAAyB,YAAc/D,EAAQ+D,MACvDgxQ,EAAqBhxQ,IAG7BqwQ,gBAAiB,WACb,OAAOW,IAIf73Q,EAAQuB,QAAUu2Q,QAnEa,iBAApB,CAAC,OAAmB,6BCFnC/3Q,EAAOC,QAAU,EAAjB,iCCOA,SAASy3Q,EAAmBt0Q,GAAO,GAAIxc,MAAMyc,QAAQD,GAAM,CAAE,IAAK,IAAIhb,EAAI,EAAG8sB,EAAOtuB,MAAMwc,EAAI7a,QAASH,EAAIgb,EAAI7a,OAAQH,IAAO8sB,EAAK9sB,GAAKgb,EAAIhb,GAAM,OAAO8sB,EAAe,OAAOtuB,MAAM2J,KAAK6S,GAL1L3c,OAAOuO,eAAeiL,EAAS,aAAc,CAC3CpT,OAAO,IAEToT,EAAA,QAMA,SAAoBka,GAClB,IAAI0wH,EAAS,IAAIv7I,KAAK6qB,GACtB,IAAKmsE,OAAOlyE,MAAMy2H,EAAOojD,WACvB,OAAOpjD,EAGT,IAAI72H,EAAQzhB,OAAO4nB,GAAM7E,MAAM,QAC/B,GAAa,MAATtB,GAAiBA,EAAMzrB,QAAU,EACnC,OAAOsiJ,EAEP,IAZcznI,EAeV40Q,GAfU50Q,EAYG4Q,EAAMxV,KAAI,SAAU4L,GACnC,OAAOqiB,SAASriB,MAbUxjB,MAAMyc,QAAQD,GAAOA,EAAMxc,MAAM2J,KAAK6S,IAgB9D60Q,EAASD,EAAY,GACrBE,EAAUF,EAAY,GACtBG,EAASH,EAAY5kR,MAAM,GAE3BglR,EAAiB,CAACH,EAAQC,EAAU,GAAGl3Q,OAAO02Q,EAAmBS,IAErE,OADc,IAAI7oR,KAAKA,KAAK8qB,IAAIvsB,MAAMyB,KAAMooR,EAAmBU,kCC5BnE3xR,OAAOuO,eAAeiL,EAAS,aAAc,CAC3CpT,OAAO,IAEToT,EAAA,QAQA,SAA0BpT,EAAOohG,EAAMn/B,GAIrC,OAHc,IAAVjiE,IACFohG,GAAQ,KAEHphG,EAAQ,IAAMohG,EAAO,IAAMn/B,GANpC,SAAiC1uD,GAAO,GAAIA,GAAOA,EAAImB,WAAc,OAAOnB,EAAc,IAAIqB,EAAS,GAAI,GAAW,MAAPrB,EAAe,IAAK,IAAI7H,KAAO6H,EAAW3Z,OAAOW,UAAUJ,eAAeY,KAAKwY,EAAK7H,KAAMkJ,EAAOlJ,GAAO6H,EAAI7H,IAAUkJ,EAAOD,QAAUpB,EAF1Oi4Q,CAFC,EAAQ,oCCDrB,IAAI93Q,EAAW9Z,OAAOwB,QAAU,SAAUoQ,GAAU,IAAK,IAAIjQ,EAAI,EAAGA,EAAIE,UAAUC,OAAQH,IAAK,CAAE,IAAIoY,EAASlY,UAAUF,GAAI,IAAK,IAAImQ,KAAOiI,EAAc/Z,OAAOW,UAAUJ,eAAeY,KAAK4Y,EAAQjI,KAAQF,EAAOE,GAAOiI,EAAOjI,IAAY,OAAOF,GAInP+uK,EAAe,WAAc,SAASp3E,EAAiB33F,EAAQ4K,GAAS,IAAK,IAAI7a,EAAI,EAAGA,EAAI6a,EAAM1a,OAAQH,IAAK,CAAE,IAAI8a,EAAaD,EAAM7a,GAAI8a,EAAWjO,WAAaiO,EAAWjO,aAAc,EAAOiO,EAAWhO,cAAe,EAAU,UAAWgO,IAAYA,EAAW7C,UAAW,GAAM5Z,OAAOuO,eAAeqD,EAAQ6K,EAAW3K,IAAK2K,IAAiB,OAAO,SAAUsO,EAAaG,EAAY01J,GAAiJ,OAA9H11J,GAAYq+E,EAAiBx+E,EAAYpqB,UAAWuqB,GAAiB01J,GAAar3E,EAAiBx+E,EAAa61J,GAAqB71J,GAA7gB,GAIfo5P,EAYJ,SAAiCxqQ,GAAO,GAAIA,GAAOA,EAAImB,WAAc,OAAOnB,EAAc,IAAIqB,EAAS,GAAI,GAAW,MAAPrB,EAAe,IAAK,IAAI7H,KAAO6H,EAAW3Z,OAAOW,UAAUJ,eAAeY,KAAKwY,EAAK7H,KAAMkJ,EAAOlJ,GAAO6H,EAAI7H,IAAgC,OAAtBkJ,EAAOD,QAAUpB,EAAYqB,EAZtP42Q,CAFC,EAAQ,OAMjBC,EAAqB1xF,EAFD,EAAQ,MAM5B2xF,EAAe3xF,EAFD,EAAQ,OAI1B,SAASA,EAAuBxmL,GAAO,OAAOA,GAAOA,EAAImB,WAAanB,EAAM,CAAEoB,QAASpB,GAMvF,SAASqR,EAAgBjoB,EAAUgoB,GAAe,KAAMhoB,aAAoBgoB,GAAgB,MAAM,IAAI7kB,UAAU,qCAEhH,SAASm6L,EAA2B5mL,EAAMtY,GAAQ,IAAKsY,EAAQ,MAAM,IAAIC,eAAe,6DAAgE,OAAOvY,GAAyB,iBAATA,GAAqC,mBAATA,EAA8BsY,EAAPtY,EAIlO,IAAI8/L,EAAYkjF,EAAMljF,UAKlBj4B,EAAO+oH,KACPC,EAAMhpH,MACNipH,EAAa,EAAND,EACPjpH,EAAc,GAANipH,EACRE,EAAa,IAANF,EAEPG,EAAU,SAAUrxF,GAGtB,SAASqxF,IACP,IAAIjzQ,EAEA6hL,EAAO9/L,EAEX+pB,EAAgBvqB,KAAM0xR,GAEtB,IAAK,IAAIhnQ,EAAOtpB,UAAUC,OAAQ2N,EAAOtP,MAAMgrB,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC3E3b,EAAK2b,GAAQvpB,UAAUupB,GAGzB,OAAe21K,EAAS9/L,EAAQo/L,EAA2B5/L,MAAOye,EAAOizQ,EAAQjyR,WAAaF,OAAOu5I,eAAe44I,IAAUhxR,KAAKiG,MAAM8X,EAAM,CAACze,MAAM8Z,OAAO9K,KAAiBxO,EAAMmxR,gBAAiB,EAAOnxR,EAAMmhO,KAAO,SAAU9lC,GACjO,GAAKr7L,EAAMmxR,gBAAmBnxR,EAAMub,MAAM61Q,KAA1C,CAIA,IAAIlrR,GAAO,EAAI2qR,EAAa/2Q,SAAS9Z,EAAMub,MAAMkX,MAAM8zK,UACvD,GAAKrgM,EAAL,CAKA,IAAI6L,EAAM/R,EAAMub,MAAMxJ,MAClB+2C,EAAU/lC,KAAKqqE,MAAMrqE,KAAK6/B,IAAI7wC,EAAM7L,GAAQ,KAE5CmrR,EAAgBvoO,EAnCb,GAmCgC,IAAOA,EAAUi/G,EAAO,IAAgBj/G,EAAUioO,EAAM,KAAc,EACzGO,EAASvuQ,KAAK8mB,IAAI9mB,KAAKmnB,IAAImnP,EAAuC,IAAxBrxR,EAAMub,MAAMg2Q,WAA2C,IAAxBvxR,EAAMub,MAAMi2Q,WAErFF,IACEtxR,EAAMyxR,WACR1gR,aAAa/Q,EAAMyxR,WAErBzxR,EAAMyxR,UAAYphR,WAAWrQ,EAAMmhO,KAAMmwD,IAGtCj2F,GACHr7L,EAAMmtC,mBAlBNxlC,QAAQI,KAAK,2CAoBNq3L,EAA2Bp/L,EAAnC8/L,GA4EL,OAlIF,SAAmB9mL,EAAUC,GAAc,GAA0B,mBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIhU,UAAU,kEAAoEgU,GAAeD,EAAStZ,UAAYX,OAAOY,OAAOsZ,GAAcA,EAAWvZ,UAAW,CAAED,YAAa,CAAE0F,MAAO6T,EAAUzL,YAAY,EAAOoL,UAAU,EAAMnL,cAAc,KAAeyL,IAAYla,OAAOC,eAAiBD,OAAOC,eAAega,EAAUC,GAAcD,EAAS/Z,UAAYga,GAc/domL,CAAU6xF,EAASrxF,GA2CnBngB,EAAawxG,EAAS,CAAC,CACrBrgR,IAAK,oBACL1L,MAAO,WACL3F,KAAK2xR,gBAAiB,EAClB3xR,KAAK+b,MAAM61Q,MACb5xR,KAAK2hO,MAAK,KAGb,CACDtwN,IAAK,qBACL1L,MAAO,SAA4BusR,GAC7BlyR,KAAK+b,MAAM61Q,OAASM,EAAUN,MAAQ5xR,KAAK+b,MAAMkX,OAASi/P,EAAUj/P,QACjEjzB,KAAK+b,MAAM61Q,MAAQ5xR,KAAKiyR,WAC3B1gR,aAAavR,KAAKiyR,WAEpBjyR,KAAK2hO,UAGR,CACDtwN,IAAK,uBACL1L,MAAO,WACL3F,KAAK2xR,gBAAiB,EAClB3xR,KAAKiyR,YACP1gR,aAAavR,KAAKiyR,WAClBjyR,KAAKiyR,eAAYvhR,KAGpB,CACDW,IAAK,SACL1L,MAAO,WAEL,IAAIk5C,EAAS7+C,KAAK+b,MACdkX,EAAO4rB,EAAO5rB,KACdd,EAAY0sB,EAAO1sB,UACnBggQ,EAAYtzO,EAAO3hB,UAInB1X,GAHOq5B,EAAO+yO,KACF/yO,EAAOkzO,UACPlzO,EAAOmzO,UACXnzO,EAAOr5B,OACfjT,EAAMssC,EAAOtsC,IACb6/Q,EAvGV,SAAkCl5Q,EAAK9O,GAAQ,IAAI+G,EAAS,GAAI,IAAK,IAAIjQ,KAAKgY,EAAW9O,EAAK1C,QAAQxG,IAAM,GAAkB3B,OAAOW,UAAUJ,eAAeY,KAAKwY,EAAKhY,KAAciQ,EAAOjQ,GAAKgY,EAAIhY,IAAM,OAAOiQ,EAuGzL0c,CAAyBgxB,EAAQ,CAAC,OAAQ,YAAa,YAAa,OAAQ,YAAa,YAAa,QAAS,QAI/Hn4C,GAAO,EAAI2qR,EAAa/2Q,SAAS2Y,GAAM8zK,UAC3C,IAAKrgM,EACH,OAAO,KAET,IAAI2rR,EAAU9/Q,IACV+2C,EAAU/lC,KAAKqqE,MAAMrqE,KAAK6/B,IAAIivO,EAAU3rR,GAAQ,KAChDkhE,EAASlhE,EAAO2rR,EAAU,MAAQ,WAGlCC,EAxI0a,SAAUp2Q,EAAKhb,GAAK,GAAIxB,MAAMyc,QAAQD,GAAQ,OAAOA,EAAY,GAAI7W,OAAOC,YAAY/F,OAAO2c,GAAQ,OAAxf,SAAuBA,EAAKhb,GAAK,IAAImb,EAAO,GAAQC,GAAK,EAAUC,GAAK,EAAWC,OAAK9L,EAAW,IAAM,IAAK,IAAiC+L,EAA7BzV,EAAKkV,EAAI7W,OAAOC,cAAmBgX,GAAMG,EAAKzV,EAAG7B,QAAQO,QAAoB2W,EAAKxW,KAAK4W,EAAG9W,QAAYzE,GAAKmb,EAAKhb,SAAWH,GAA3Dob,GAAK,IAAoE,MAAOpV,GAAOqV,GAAK,EAAMC,EAAKtV,EAAO,QAAU,KAAWoV,GAAMtV,EAAW,QAAGA,EAAW,SAAO,QAAU,GAAIuV,EAAI,MAAMC,GAAQ,OAAOH,EAA6Hk2Q,CAAcr2Q,EAAKhb,GAAa,MAAM,IAAIuE,UAAU,wDAwIpkBwW,CADAqtC,EAvGL,GAuGwB,CAAC/lC,KAAKqqE,MAAMtkC,GAAU,UAAYA,EAAUi/G,EAAO,CAAChlJ,KAAKqqE,MAAMtkC,EAvGvF,IAuG0G,UAAYA,EAAUioO,EAAM,CAAChuQ,KAAKqqE,MAAMtkC,EAAUi/G,GAAO,QAAUj/G,EAAUkoO,EAAO,CAACjuQ,KAAKqqE,MAAMtkC,EAAUioO,GAAM,OAASjoO,EAAUg/G,EAAQ,CAAC/kJ,KAAKqqE,MAAMtkC,EAAUkoO,GAAO,QAAUloO,EAAUmoO,EAAO,CAACluQ,KAAKqqE,MAAMtkC,EAAUg/G,GAAQ,SAAW,CAAC/kJ,KAAKqqE,MAAMtkC,EAAUmoO,GAAO,QACxV,GAC9B9rR,EAAQ2sR,EAAM,GACdvrL,EAAOurL,EAAM,GAEbE,OAAiC,IAAVhtQ,EAAwC,iBAATyN,EAAoBA,GAAO,EAAIo+P,EAAa/2Q,SAAS2Y,GAAM5qB,cAAc5E,OAAO,EAAG,IAAIsQ,QAAQ,IAAK,KAAOyR,EAEjKitQ,EAA4B,SAAdN,EAAuB5yR,OAAOwB,OAAO,GAAIqxR,EAAe,CACxEM,UAAU,EAAIrB,EAAa/2Q,SAAS2Y,GAAM5qB,gBACvC+pR,EAEDO,EAAgBvB,EAAmB92Q,QAAQoW,KAAK,KAAM/qB,EAAOohG,EAAMn/B,GAEvE,OAAO87M,EAAM7rQ,cACXs6Q,EACA94Q,EAAS,GAAIo5Q,EAAa,CAAEjtQ,MAAOgtQ,IACnCrgQ,EAAUxsB,EAAOohG,EAAMn/B,EAAQlhE,EAAMisR,EAAepgR,QAKnDm/Q,EArHK,CAsHZlxF,GAEFkxF,EAAQvhQ,YAAc,UACtBuhQ,EAAQzhQ,aAAe,CACrB2hQ,MAAM,EACN10P,UAAW,OACX60P,UAAW,EACXC,UAAWhvI,IACX7wH,UAAWi/P,EAAmB92Q,QAC9B/H,IAAK,WACH,OAAOnK,KAAKmK,QAGhBwG,EAAQ,EAAU24Q,8BChLlB34Q,EAAQsB,YAAa,EACrBtB,EAAA,aAAkB,EAgBlB,SAAiCG,GAAO,GAAIA,GAAOA,EAAImB,WAAc,OAAOnB,EAAc,IAAIqB,EAAS,GAAI,GAAW,MAAPrB,EAAe,IAAK,IAAI7H,KAAO6H,EAAO,GAAI3Z,OAAOW,UAAUJ,eAAeY,KAAKwY,EAAK7H,GAAM,CAAE,IAAImJ,EAAOjb,OAAOuO,gBAAkBvO,OAAO0a,yBAA2B1a,OAAO0a,yBAAyBf,EAAK7H,GAAO,GAAQmJ,EAAK9Y,KAAO8Y,EAAKC,IAAOlb,OAAOuO,eAAeyM,EAAQlJ,EAAKmJ,GAAgBD,EAAOlJ,GAAO6H,EAAI7H,GAAckJ,EAAOD,QAAUpB,EAdjbi4Q,CAAwB,EAAQ,OAAhD,IAEIyB,EAAYlzF,EAAuB,EAAQ,OAE3CmzF,EAAenzF,EAAuB,EAAQ,MAE9CF,EAASE,EAAuB,EAAQ,OAExCozF,EAAcpzF,EAAuB,EAAQ,MAIjD,SAASA,EAAuBxmL,GAAO,OAAOA,GAAOA,EAAImB,WAAanB,EAAM,CAAEoB,QAASpB,GAMvF,SAASG,IAA2Q,OAA9PA,EAAW9Z,OAAOwB,QAAU,SAAUoQ,GAAU,IAAK,IAAIjQ,EAAI,EAAGA,EAAIE,UAAUC,OAAQH,IAAK,CAAE,IAAIoY,EAASlY,UAAUF,GAAI,IAAK,IAAImQ,KAAOiI,EAAc/Z,OAAOW,UAAUJ,eAAeY,KAAK4Y,EAAQjI,KAAQF,EAAOE,GAAOiI,EAAOjI,IAAY,OAAOF,GAAkBkI,EAAS1S,MAAM3G,KAAMoB,WAR/R,EAAQ,MAUzB,IAAIynL,EAAW,SAAkBpqJ,EAAMzY,GACrC,OAAOyY,GAAQzY,GAAWA,EAAQ7a,MAAM,KAAK7H,SAAQ,SAAUgO,GAC7D,OAAO,EAAIshR,EAAUt4Q,SAASmkB,EAAMntB,OAIpC0gI,EAAc,SAAqBvzG,EAAMzY,GAC3C,OAAOyY,GAAQzY,GAAWA,EAAQ7a,MAAM,KAAK7H,SAAQ,SAAUgO,GAC7D,OAAO,EAAIuhR,EAAav4Q,SAASmkB,EAAMntB,OAiHvCwrB,EAEJ,SAAUmpP,GA/HV,IAAwBzsQ,EAAUC,EAkIhC,SAASqjB,IAGP,IAFA,IAAIt8B,EAEKkqB,EAAOtpB,UAAUC,OAAQ2N,EAAO,IAAItP,MAAMgrB,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC/E3b,EAAK2b,GAAQvpB,UAAUupB,GA6FzB,OA1FAnqB,EAAQylR,EAAiBvlR,KAAKiG,MAAMs/Q,EAAkB,CAACjmR,MAAM8Z,OAAO9K,KAAUhP,MAExEg7B,QAAU,SAAUyD,EAAMs0P,GAC9B,IACI9jQ,EADsBzuB,EAAMwyR,cAAcD,EAAY,SAAW,SACjC9jQ,UAEpCzuB,EAAMyyR,cAAcx0P,EAAM,QAE1BoqJ,EAASpqJ,EAAMxP,GAEXzuB,EAAMub,MAAMif,SACdx6B,EAAMub,MAAMif,QAAQyD,IAIxBj+B,EAAMy6B,WAAa,SAAUwD,EAAMs0P,GACjC,IACIvK,EADuBhoR,EAAMwyR,cAAcD,EAAY,SAAW,SAC3BvK,gBAE3ChoR,EAAM0yR,kBAAkBz0P,EAAM+pP,GAE1BhoR,EAAMub,MAAMkf,YACdz6B,EAAMub,MAAMkf,WAAWwD,IAI3Bj+B,EAAM06B,UAAY,SAAUuD,EAAMs0P,GAChC,IACII,EADuB3yR,EAAMwyR,cAAc,SACNG,cAEzC3yR,EAAMyyR,cAAcx0P,EAAMs0P,EAAY,SAAW,SAEjDlqG,EAASpqJ,EAAM00P,GAEX3yR,EAAMub,MAAMmf,WACd16B,EAAMub,MAAMmf,UAAUuD,IAI1Bj+B,EAAM26B,OAAS,SAAUsD,GACvB,IACIxP,EADuBzuB,EAAMwyR,cAAc,QACV/jQ,UAErCzuB,EAAMyyR,cAAcx0P,EAAM,UAE1Bj+B,EAAMyyR,cAAcx0P,EAAM,SAE1BoqJ,EAASpqJ,EAAMxP,GAEXzuB,EAAMub,MAAMof,QACd36B,EAAMub,MAAMof,OAAOsD,IAIvBj+B,EAAM46B,UAAY,SAAUqD,GAC1B,IACI+pP,EADuBhoR,EAAMwyR,cAAc,QACJxK,gBAE3ChoR,EAAM0yR,kBAAkBz0P,EAAM+pP,GAE1BhoR,EAAMub,MAAMqf,WACd56B,EAAMub,MAAMqf,UAAUqD,IAI1Bj+B,EAAM66B,SAAW,SAAUoD,GACzB,IACI00P,EADuB3yR,EAAMwyR,cAAc,QACNG,cAEzC3yR,EAAMyyR,cAAcx0P,EAAM,QAE1BoqJ,EAASpqJ,EAAM00P,GAEX3yR,EAAMub,MAAMsf,UACd76B,EAAMub,MAAMsf,SAASoD,IAIzBj+B,EAAMwyR,cAAgB,SAAU1mR,GAC9B,IAAIowB,EAAal8B,EAAMub,MAAM2gB,WACzBzN,EAAkC,iBAAfyN,EAA0BA,EAAWpwB,GAAQowB,EAAa,IAAMpwB,EAGvF,MAAO,CACL2iB,UAAWA,EACXu5P,gBAJ0C,iBAAf9rP,EAA0BA,EAAWpwB,EAAO,UAAY2iB,EAAY,UAK/FkkQ,cAJwC,iBAAfz2P,EAA0BA,EAAWpwB,EAAO,QAAU2iB,EAAY,UAQxFzuB,EAnOuBiZ,EAgIFwsQ,GAhIRzsQ,EAgIPsjB,GAhIwC58B,UAAYX,OAAOY,OAAOsZ,EAAWvZ,WAAYsZ,EAAStZ,UAAUD,YAAcuZ,EAAUA,EAAS/Z,UAAYga,EAsOxK,IAAIqpK,EAAShmJ,EAAc58B,UAuC3B,OArCA4iL,EAAOmwG,cAAgB,SAAuBx0P,EAAMnyB,GAClD,IAAI8mR,EAAuBpzR,KAAKgzR,cAAc1mR,GAC1C2iB,EAAYmkQ,EAAqBnkQ,UACjCu5P,EAAkB4K,EAAqB5K,gBACvC2K,EAAgBC,EAAqBD,cAEzClkQ,GAAa+iH,EAAYvzG,EAAMxP,GAC/Bu5P,GAAmBx2I,EAAYvzG,EAAM+pP,GACrC2K,GAAiBnhJ,EAAYvzG,EAAM00P,IAGrCrwG,EAAOowG,kBAAoB,SAA2Bz0P,EAAMxP,GAGtDA,IAEFwP,GAAQA,EAAKsM,UAGb89I,EAASpqJ,EAAMxP,KAInB6zJ,EAAOroJ,OAAS,WACd,IAAI1e,EAAQ1C,EAAS,GAAIrZ,KAAK+b,OAG9B,cADOA,EAAM2gB,WACN8iK,EAAOllL,QAAQzC,cAAci7Q,EAAYx4Q,QAASjB,EAAS,GAAI0C,EAAO,CAC3Eif,QAASh7B,KAAKg7B,QACdE,UAAWl7B,KAAKk7B,UAChBD,WAAYj7B,KAAKi7B,WACjBE,OAAQn7B,KAAKm7B,OACbC,UAAWp7B,KAAKo7B,UAChBC,SAAUr7B,KAAKq7B,aAIZyB,EA9IT,CA+IE0iK,EAAOllL,QAAQkmL,WAEjB1jK,EAAc1M,UAAgE,GAC9E,IAAI+nM,EAAWr7L,EACf/jB,EAAA,QAAkBo/M,EAClBr/M,EAAOC,QAAUA,EAAiB,qCCtSlCA,EAAQsB,YAAa,EACrBtB,EAAA,aAAkB,EAED2mL,EAAuB,EAAQ,OAAhD,IAEIF,EAASE,EAAuB,EAAQ,OAExCkuF,EAAY,EAAQ,MAEpByF,EAAmB3zF,EAAuB,EAAQ,OAEtD,SAASA,EAAuBxmL,GAAO,OAAOA,GAAOA,EAAImB,WAAanB,EAAM,CAAEoB,QAASpB,GAMvF,IAmBIo6Q,EAEJ,SAAUrN,GAvBV,IAAwBzsQ,EAAUC,EA0BhC,SAAS65Q,IAGP,IAFA,IAAI9yR,EAEKkqB,EAAOtpB,UAAUC,OAAQkyR,EAAQ,IAAI7zR,MAAMgrB,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAChF4oQ,EAAM5oQ,GAAQvpB,UAAUupB,GAqD1B,OAlDAnqB,EAAQylR,EAAiBvlR,KAAKiG,MAAMs/Q,EAAkB,CAACjmR,MAAM8Z,OAAOy5Q,KAAWvzR,MAEzE0pJ,YAAc,WAClB,IAAK,IAAIk3C,EAAQx/L,UAAUC,OAAQ2N,EAAO,IAAItP,MAAMkhM,GAAQC,EAAQ,EAAGA,EAAQD,EAAOC,IACpF7xL,EAAK6xL,GAASz/L,UAAUy/L,GAG1B,OAAOrgM,EAAMgzR,gBAAgB,UAAW,EAAGxkR,IAG7CxO,EAAMizR,eAAiB,WACrB,IAAK,IAAIC,EAAQtyR,UAAUC,OAAQ2N,EAAO,IAAItP,MAAMg0R,GAAQC,EAAQ,EAAGA,EAAQD,EAAOC,IACpF3kR,EAAK2kR,GAASvyR,UAAUuyR,GAG1B,OAAOnzR,EAAMgzR,gBAAgB,aAAc,EAAGxkR,IAGhDxO,EAAMozR,cAAgB,WACpB,IAAK,IAAIC,EAAQzyR,UAAUC,OAAQ2N,EAAO,IAAItP,MAAMm0R,GAAQC,EAAQ,EAAGA,EAAQD,EAAOC,IACpF9kR,EAAK8kR,GAAS1yR,UAAU0yR,GAG1B,OAAOtzR,EAAMgzR,gBAAgB,YAAa,EAAGxkR,IAG/CxO,EAAMuzR,WAAa,WACjB,IAAK,IAAIC,EAAQ5yR,UAAUC,OAAQ2N,EAAO,IAAItP,MAAMs0R,GAAQC,EAAQ,EAAGA,EAAQD,EAAOC,IACpFjlR,EAAKilR,GAAS7yR,UAAU6yR,GAG1B,OAAOzzR,EAAMgzR,gBAAgB,SAAU,EAAGxkR,IAG5CxO,EAAM0zR,cAAgB,WACpB,IAAK,IAAIC,EAAQ/yR,UAAUC,OAAQ2N,EAAO,IAAItP,MAAMy0R,GAAQC,EAAQ,EAAGA,EAAQD,EAAOC,IACpFplR,EAAKolR,GAAShzR,UAAUgzR,GAG1B,OAAO5zR,EAAMgzR,gBAAgB,YAAa,EAAGxkR,IAG/CxO,EAAM6zR,aAAe,WACnB,IAAK,IAAIC,EAAQlzR,UAAUC,OAAQ2N,EAAO,IAAItP,MAAM40R,GAAQC,EAAQ,EAAGA,EAAQD,EAAOC,IACpFvlR,EAAKulR,GAASnzR,UAAUmzR,GAG1B,OAAO/zR,EAAMgzR,gBAAgB,WAAY,EAAGxkR,IAGvCxO,EAnFuBiZ,EAwBEwsQ,GAxBZzsQ,EAwBP85Q,GAxBwCpzR,UAAYX,OAAOY,OAAOsZ,EAAWvZ,WAAYsZ,EAAStZ,UAAUD,YAAcuZ,EAAUA,EAAS/Z,UAAYga,EAsFxK,IAAIqpK,EAASwwG,EAAkBpzR,UA0C/B,OAxCA4iL,EAAO0wG,gBAAkB,SAAyBllP,EAAS5c,EAAK8iQ,GAC9D,IAAIC,EAEAvuQ,EAAWlmB,KAAK+b,MAAMmK,SAEtBsF,EAAQg0K,EAAOllL,QAAQg0O,SAASxnJ,QAAQ5gF,GAAUwL,GAElDlG,EAAMzP,MAAMuyB,KAAWmmP,EAAejpQ,EAAMzP,OAAOuyB,GAAS3nC,MAAM8tR,EAAcD,GAChFx0R,KAAK+b,MAAMuyB,IAAUtuC,KAAK+b,MAAMuyB,IAAS,EAAIs/O,EAAUtvM,aAAat+E,QAG1E8iL,EAAOroJ,OAAS,WACd,IAAI2zN,EAAcpuP,KAAK+b,MACnBmK,EAAWkoO,EAAYloO,SACvBwuQ,EAAStmC,EAAY5xN,GACrBzgB,EAzGR,SAAuCzC,EAAQa,GAAY,GAAc,MAAVb,EAAgB,MAAO,GAAI,IAA2DjI,EAAKnQ,EAA5DiQ,EAAS,GAAQiJ,EAAa7a,OAAO6K,KAAKkP,GAAqB,IAAKpY,EAAI,EAAGA,EAAIkZ,EAAW/Y,OAAQH,IAAOmQ,EAAM+I,EAAWlZ,GAAQiZ,EAASzS,QAAQ2J,IAAQ,IAAaF,EAAOE,GAAOiI,EAAOjI,IAAQ,OAAOF,EAyG1R+I,CAA8Bk0O,EAAa,CAAC,WAAY,OAEhEumC,EAAwBn1F,EAAOllL,QAAQg0O,SAASxnJ,QAAQ5gF,GACxD6G,EAAQ4nQ,EAAsB,GAC9B1nN,EAAS0nN,EAAsB,GAQnC,cANO54Q,EAAMif,eACNjf,EAAMkf,kBACNlf,EAAMmf,iBACNnf,EAAMof,cACNpf,EAAMqf,iBACNrf,EAAMsf,SACNmkK,EAAOllL,QAAQzC,cAAcw7Q,EAAiB/4Q,QAASyB,EAAO24Q,EAASl1F,EAAOllL,QAAQm0O,aAAa1hO,EAAO,CAC/G1b,IAAK,QACL2pB,QAASh7B,KAAK0pJ,YACdzuH,WAAYj7B,KAAKyzR,eACjBv4P,UAAWl7B,KAAK4zR,gBACbp0F,EAAOllL,QAAQm0O,aAAaxhL,EAAQ,CACvC57D,IAAK,SACL2pB,QAASh7B,KAAK+zR,WACd94P,WAAYj7B,KAAKk0R,cACjBh5P,UAAWl7B,KAAKq0R,iBAIbf,EAzGT,CA0GE9zF,EAAOllL,QAAQkmL,WAEjB8yF,EAAkBljQ,UAAgE,GAClF,IAAI+nM,EAAWm7D,EACfv6Q,EAAA,QAAkBo/M,EAClBr/M,EAAOC,QAAUA,EAAiB,oCCrJlCA,EAAQsB,YAAa,EACrBtB,EAAA,QAAkBA,EAAQ67Q,QAAU77Q,EAAQ87Q,QAAU97Q,EAAQ+7Q,SAAW/7Q,EAAQg8Q,OAASh8Q,EAAQi8Q,eAAY,EAE9G,IAAI1oC,EAYJ,SAAiCpzO,GAAO,GAAIA,GAAOA,EAAImB,WAAc,OAAOnB,EAAc,IAAIqB,EAAS,GAAI,GAAW,MAAPrB,EAAe,IAAK,IAAI7H,KAAO6H,EAAO,GAAI3Z,OAAOW,UAAUJ,eAAeY,KAAKwY,EAAK7H,GAAM,CAAE,IAAImJ,EAAOjb,OAAOuO,gBAAkBvO,OAAO0a,yBAA2B1a,OAAO0a,yBAAyBf,EAAK7H,GAAO,GAAQmJ,EAAK9Y,KAAO8Y,EAAKC,IAAOlb,OAAOuO,eAAeyM,EAAQlJ,EAAKmJ,GAAgBD,EAAOlJ,GAAO6H,EAAI7H,GAAoC,OAAtBkJ,EAAOD,QAAUpB,EAAYqB,EAZ7b42Q,CAAwB,EAAQ,OAE5C3xF,EAASE,EAAuB,EAAQ,OAExCkuF,EAAYluF,EAAuB,EAAQ,OAE3Cu1F,EAAyB,EAAQ,MAIrC,SAASv1F,EAAuBxmL,GAAO,OAAOA,GAAOA,EAAImB,WAAanB,EAAM,CAAEoB,QAASpB,GAFtE,EAAQ,MAUzB,IAAI87Q,EAAY,YAChBj8Q,EAAQi8Q,UAAYA,EACpB,IAAID,EAAS,SACbh8Q,EAAQg8Q,OAASA,EACjB,IAAID,EAAW,WACf/7Q,EAAQ+7Q,SAAWA,EACnB,IAAID,EAAU,UACd97Q,EAAQ87Q,QAAUA,EAClB,IAAID,EAAU,UAiGd77Q,EAAQ67Q,QAAUA,EAElB,IAAIM,EAEJ,SAAUjP,GA/GV,IAAwBzsQ,EAAUC,EAkHhC,SAASy7Q,EAAWn5Q,EAAO0yJ,GACzB,IAAIjuK,EAEJA,EAAQylR,EAAiBvlR,KAAKV,KAAM+b,EAAO0yJ,IAAYzuK,KACvD,IAGIm1R,EAHAC,EAAc3mH,EAAQ4mH,gBAEtB36P,EAAS06P,IAAgBA,EAAYE,WAAav5Q,EAAM4e,MAAQ5e,EAAM2e,OAuB1E,OArBAl6B,EAAM+0R,aAAe,KAEjBx5Q,EAAMygB,GACJ9B,GACFy6P,EAAgBJ,EAChBv0R,EAAM+0R,aAAeT,GAErBK,EAAgBN,EAIhBM,EADEp5Q,EAAMwf,eAAiBxf,EAAMuf,aACf05P,EAEAD,EAIpBv0R,EAAM4xB,MAAQ,CACZ7nB,OAAQ4qR,GAEV30R,EAAMg1R,aAAe,KACdh1R,EA/IuBiZ,EAgHLwsQ,GAhHLzsQ,EAgHP07Q,GAhHwCh1R,UAAYX,OAAOY,OAAOsZ,EAAWvZ,WAAYsZ,EAAStZ,UAAUD,YAAcuZ,EAAUA,EAAS/Z,UAAYga,EAkJxK,IAAIqpK,EAASoyG,EAAWh1R,UAkQxB,OAhQA4iL,EAAO3U,gBAAkB,WACvB,MAAO,CACLknH,gBAAiB,OAKrBH,EAAWl6M,yBAA2B,SAAkCv8D,EAAM80B,GAG5E,OAFa90B,EAAK+d,IAEJ+W,EAAUhpC,SAAWyqR,EAC1B,CACLzqR,OAAQwqR,GAIL,MAmBTjyG,EAAOz+I,kBAAoB,WACzBrkC,KAAKy1R,cAAa,EAAMz1R,KAAKu1R,eAG/BzyG,EAAOzvI,mBAAqB,SAA4BC,GACtD,IAAIoiP,EAAa,KAEjB,GAAIpiP,IAActzC,KAAK+b,MAAO,CAC5B,IAAIxR,EAASvK,KAAKoyB,MAAM7nB,OAEpBvK,KAAK+b,MAAMygB,GACTjyB,IAAWuqR,GAAYvqR,IAAWsqR,IACpCa,EAAaZ,GAGXvqR,IAAWuqR,GAAYvqR,IAAWsqR,IACpCa,EAAad,GAKnB50R,KAAKy1R,cAAa,EAAOC,IAG3B5yG,EAAOx+I,qBAAuB,WAC5BtkC,KAAK21R,sBAGP7yG,EAAO8yG,YAAc,WACnB,IACIh7P,EAAMD,EAAOD,EADblxB,EAAUxJ,KAAK+b,MAAMvS,QAUzB,OARAoxB,EAAOD,EAAQD,EAASlxB,EAET,MAAXA,GAAsC,iBAAZA,IAC5BoxB,EAAOpxB,EAAQoxB,KACfD,EAAQnxB,EAAQmxB,MAChBD,EAASlxB,EAAQkxB,QAGZ,CACLE,KAAMA,EACND,MAAOA,EACPD,OAAQA,IAIZooJ,EAAO2yG,aAAe,SAAsBI,EAAUH,GAKpD,QAJiB,IAAbG,IACFA,GAAW,GAGM,OAAfH,EAAqB,CAEvB11R,KAAK21R,qBAEL,IAAIl3P,EAAOmvP,EAAUtzQ,QAAQgkE,YAAYt+E,MAErC01R,IAAeZ,EACjB90R,KAAK81R,aAAar3P,EAAMo3P,GAExB71R,KAAK+1R,YAAYt3P,QAEVz+B,KAAK+b,MAAMwf,eAAiBv7B,KAAKoyB,MAAM7nB,SAAWwqR,GAC3D/0R,KAAK6+B,SAAS,CACZt0B,OAAQyqR,KAKdlyG,EAAOgzG,aAAe,SAAsBr3P,EAAMo3P,GAChD,IAAIjuG,EAAS5nL,KAET26B,EAAQ36B,KAAK+b,MAAM4e,MACnBo4P,EAAY/yR,KAAKyuK,QAAQ4mH,gBAAkBr1R,KAAKyuK,QAAQ4mH,gBAAgBC,WAAaO,EACrFG,EAAWh2R,KAAK41R,cAGfC,GAAal7P,GASlB36B,KAAK+b,MAAMif,QAAQyD,EAAMs0P,GACzB/yR,KAAKi2R,aAAa,CAChB1rR,OAAQuqR,IACP,WACDltG,EAAO7rK,MAAMkf,WAAWwD,EAAMs0P,GAG9BnrG,EAAOsuG,gBAAgBz3P,EAAMu3P,EAASr7P,OAAO,WAC3CitJ,EAAOquG,aAAa,CAClB1rR,OAAQsqR,IACP,WACDjtG,EAAO7rK,MAAMmf,UAAUuD,EAAMs0P,aAnBjC/yR,KAAKi2R,aAAa,CAChB1rR,OAAQsqR,IACP,WACDjtG,EAAO7rK,MAAMmf,UAAUuD,OAsB7BqkJ,EAAOizG,YAAc,SAAqBt3P,GACxC,IAAIspJ,EAAS/nL,KAET46B,EAAO56B,KAAK+b,MAAM6e,KAClBo7P,EAAWh2R,KAAK41R,cAEfh7P,GASL56B,KAAK+b,MAAMof,OAAOsD,GAClBz+B,KAAKi2R,aAAa,CAChB1rR,OAAQqqR,IACP,WACD7sG,EAAOhsK,MAAMqf,UAAUqD,GAEvBspJ,EAAOmuG,gBAAgBz3P,EAAMu3P,EAASp7P,MAAM,WAC1CmtJ,EAAOkuG,aAAa,CAClB1rR,OAAQwqR,IACP,WACDhtG,EAAOhsK,MAAMsf,SAASoD,aAlB1Bz+B,KAAKi2R,aAAa,CAChB1rR,OAAQwqR,IACP,WACDhtG,EAAOhsK,MAAMsf,SAASoD,OAqB5BqkJ,EAAO6yG,mBAAqB,WACA,OAAtB31R,KAAKw1R,eACPx1R,KAAKw1R,aAAavqK,SAClBjrH,KAAKw1R,aAAe,OAIxB1yG,EAAOmzG,aAAe,SAAsBpoN,EAAW39D,GAIrDA,EAAWlQ,KAAKm2R,gBAAgBjmR,GAChClQ,KAAK6+B,SAASgvC,EAAW39D,IAG3B4yK,EAAOqzG,gBAAkB,SAAyBjmR,GAChD,IAAI84K,EAAShpL,KAET66E,GAAS,EAcb,OAZA76E,KAAKw1R,aAAe,SAAUthR,GACxB2mE,IACFA,GAAS,EACTmuG,EAAOwsG,aAAe,KACtBtlR,EAASgE,KAIblU,KAAKw1R,aAAavqK,OAAS,WACzBpwC,GAAS,GAGJ76E,KAAKw1R,cAGd1yG,EAAOozG,gBAAkB,SAAyBz3P,EAAMj1B,EAAS8kC,GAC/DtuC,KAAKm2R,gBAAgB7nP,GAEjB7P,GACEz+B,KAAK+b,MAAMq6Q,gBACbp2R,KAAK+b,MAAMq6Q,eAAe33P,EAAMz+B,KAAKw1R,cAGxB,MAAXhsR,GACFqH,WAAW7Q,KAAKw1R,aAAchsR,IAGhCqH,WAAW7Q,KAAKw1R,aAAc,IAIlC1yG,EAAOroJ,OAAS,WACd,IAAIlwB,EAASvK,KAAKoyB,MAAM7nB,OAExB,GAAIA,IAAWyqR,EACb,OAAO,KAGT,IAAI5mC,EAAcpuP,KAAK+b,MACnBmK,EAAWkoO,EAAYloO,SACvBmwQ,EA3XR,SAAuC/8Q,EAAQa,GAAY,GAAc,MAAVb,EAAgB,MAAO,GAAI,IAA2DjI,EAAKnQ,EAA5DiQ,EAAS,GAAQiJ,EAAa7a,OAAO6K,KAAKkP,GAAqB,IAAKpY,EAAI,EAAGA,EAAIkZ,EAAW/Y,OAAQH,IAAOmQ,EAAM+I,EAAWlZ,GAAQiZ,EAASzS,QAAQ2J,IAAQ,IAAaF,EAAOE,GAAOiI,EAAOjI,IAAQ,OAAOF,EA2XrR+I,CAA8Bk0O,EAAa,CAAC,aAkB7D,UAfOioC,EAAW75P,UACX65P,EAAW/6P,oBACX+6P,EAAW96P,qBACX86P,EAAW37P,cACX27P,EAAW17P,aACX07P,EAAWz7P,YACXy7P,EAAW7sR,eACX6sR,EAAWD,sBACXC,EAAWr7P,eACXq7P,EAAWp7P,kBACXo7P,EAAWn7P,iBACXm7P,EAAWl7P,cACXk7P,EAAWj7P,iBACXi7P,EAAWh7P,SAEM,mBAAbnV,EACT,OAAOA,EAAS3b,EAAQ8rR,GAG1B,IAAI7qQ,EAAQg0K,EAAOllL,QAAQg0O,SAASC,KAAKroO,GAEzC,OAAOs5K,EAAOllL,QAAQm0O,aAAajjO,EAAO6qQ,IAGrCnB,EArST,CAsSE11F,EAAOllL,QAAQkmL,WAuJjB,SAAS5jL,KArJTs4Q,EAAWrmH,aAAe,CACxBwmH,gBAAiB/oC,EAAUznJ,QAE7BqwL,EAAW7mH,kBAAoB,CAC7BgnH,gBAAiB,cAEnBH,EAAW9kQ,UA6IP,GAIJ8kQ,EAAWjlQ,aAAe,CACxBuM,IAAI,EACJlB,cAAc,EACdC,eAAe,EACfb,QAAQ,EACRC,OAAO,EACPC,MAAM,EACNI,QAASpe,EACTqe,WAAYre,EACZse,UAAWte,EACXue,OAAQve,EACRwe,UAAWxe,EACXye,SAAUze,GAEZs4Q,EAAWF,UAAY,EACvBE,EAAWH,OAAS,EACpBG,EAAWJ,SAAW,EACtBI,EAAWL,QAAU,EACrBK,EAAWN,QAAU,EAErB,IAAIz8D,GAAW,EAAI88D,EAAuB1P,UAAU2P,GAEpDn8Q,EAAA,QAAkBo/M,+BCvlBlBp/M,EAAQsB,YAAa,EACrBtB,EAAA,aAAkB,EAElB,IAAIoyQ,EAAazrF,EAAuB,EAAQ,OAE5CF,EAASE,EAAuB,EAAQ,OAExCu1F,EAAyB,EAAQ,MAEjCqB,EAAgB,EAAQ,KAE5B,SAAS52F,EAAuBxmL,GAAO,OAAOA,GAAOA,EAAImB,WAAanB,EAAM,CAAEoB,QAASpB,GAIvF,SAASG,IAA2Q,OAA9PA,EAAW9Z,OAAOwB,QAAU,SAAUoQ,GAAU,IAAK,IAAIjQ,EAAI,EAAGA,EAAIE,UAAUC,OAAQH,IAAK,CAAE,IAAIoY,EAASlY,UAAUF,GAAI,IAAK,IAAImQ,KAAOiI,EAAc/Z,OAAOW,UAAUJ,eAAeY,KAAK4Y,EAAQjI,KAAQF,EAAOE,GAAOiI,EAAOjI,IAAY,OAAOF,GAAkBkI,EAAS1S,MAAM3G,KAAMoB,WAIhT,SAASgY,EAAuBJ,GAAQ,QAAa,IAATA,EAAmB,MAAM,IAAIC,eAAe,6DAAgE,OAAOD,EAE/J,IAAIpW,EAASrD,OAAOqD,QAAU,SAAUsW,GACtC,OAAO3Z,OAAO6K,KAAK8O,GAAK5B,KAAI,SAAUo9D,GACpC,OAAOx7D,EAAIw7D,OA6EXn3C,EAEJ,SAAU0oP,GArFV,IAAwBzsQ,EAAUC,EAwFhC,SAAS8jB,EAAgBxhB,EAAO0yJ,GAC9B,IAAIjuK,EAIA6zR,GAFJ7zR,EAAQylR,EAAiBvlR,KAAKV,KAAM+b,EAAO0yJ,IAAYzuK,MAE9Bq0R,aAAa3jQ,KAAKtX,EAAuBA,EAAuB5Y,KAOzF,OAJAA,EAAM4xB,MAAQ,CACZiiQ,aAAcA,EACdkC,aAAa,GAER/1R,EApGuBiZ,EAsFAwsQ,GAtFVzsQ,EAsFP+jB,GAtFwCr9B,UAAYX,OAAOY,OAAOsZ,EAAWvZ,WAAYsZ,EAAStZ,UAAUD,YAAcuZ,EAAUA,EAAS/Z,UAAYga,EAuGxK,IAAIqpK,EAASvlJ,EAAgBr9B,UA4D7B,OA1DA4iL,EAAO3U,gBAAkB,WACvB,MAAO,CACLknH,gBAAiB,CACfC,YAAat1R,KAAKw2R,YAKxB1zG,EAAOz+I,kBAAoB,WACzBrkC,KAAKw2R,UAAW,GAGlBj5P,EAAgBy9C,yBAA2B,SAAkC1oB,EAAW7zC,GACtF,IAAIg4Q,EAAmBh4Q,EAAKyH,SACxBmuQ,EAAe51Q,EAAK41Q,aAExB,MAAO,CACLnuQ,SAFgBzH,EAAK83Q,aAEG,EAAID,EAAcI,wBAAwBpkO,EAAW+hO,IAAgB,EAAIiC,EAAcK,qBAAqBrkO,EAAWmkO,EAAkBpC,GACjKkC,aAAa,IAIjBzzG,EAAOuxG,aAAe,SAAsB7oQ,EAAOiT,GACjD,IAAIm4P,GAAsB,EAAIN,EAAcO,iBAAiB72R,KAAK+b,MAAMmK,UACpEsF,EAAMna,OAAOulR,IAEbprQ,EAAMzP,MAAMsf,UACd7P,EAAMzP,MAAMsf,SAASoD,GAGvBz+B,KAAK6+B,UAAS,SAAUzM,GACtB,IAAIlM,EAAW7M,EAAS,GAAI+Y,EAAMlM,UAGlC,cADOA,EAASsF,EAAMna,KACf,CACL6U,SAAUA,QAKhB48J,EAAOroJ,OAAS,WACd,IAAI2zN,EAAcpuP,KAAK+b,MACnBykL,EAAY4tD,EAAYlxN,UACxBC,EAAeixN,EAAYjxN,aAC3BphB,EAzJR,SAAuCzC,EAAQa,GAAY,GAAc,MAAVb,EAAgB,MAAO,GAAI,IAA2DjI,EAAKnQ,EAA5DiQ,EAAS,GAAQiJ,EAAa7a,OAAO6K,KAAKkP,GAAqB,IAAKpY,EAAI,EAAGA,EAAIkZ,EAAW/Y,OAAQH,IAAOmQ,EAAM+I,EAAWlZ,GAAQiZ,EAASzS,QAAQ2J,IAAQ,IAAaF,EAAOE,GAAOiI,EAAOjI,IAAQ,OAAOF,EAyJ1R+I,CAA8Bk0O,EAAa,CAAC,YAAa,iBAEjEloO,EAAWtjB,EAAO5C,KAAKoyB,MAAMlM,UAAU5O,IAAI6lB,GAK/C,cAJOphB,EAAM2e,cACN3e,EAAM4e,aACN5e,EAAM6e,KAEK,OAAd4lK,EACKt6K,EAGFs5K,EAAOllL,QAAQzC,cAAc2oL,EAAWzkL,EAAOmK,IAGjDqX,EA9ET,CA+EEiiK,EAAOllL,QAAQkmL,WAEjBjjK,EAAgB8wI,kBAAoB,CAClCgnH,gBAAiBlK,EAAW7wQ,QAAQuqF,OAAOriG,YAE7C+6B,EAAgBnN,UAAgE,GAChFmN,EAAgBtN,aA7GG,CACjBiN,UAAW,MACXC,aAAc,SAAsB3R,GAClC,OAAOA,IA4GX,IAAI2sM,GAAW,EAAI88D,EAAuB1P,UAAUhoP,GAEpDxkB,EAAA,QAAkBo/M,EAClBr/M,EAAOC,QAAUA,EAAiB,qCChMlC,IAAI+9Q,EAAiBp3F,EAAuB,EAAQ,MAEhDq3F,EAAqBr3F,EAAuB,EAAQ,OAEpD2zF,EAAmB3zF,EAAuB,EAAQ,OAElDozF,EAAcpzF,EAAuB,EAAQ,MAEjD,SAASA,EAAuBxmL,GAAO,OAAOA,GAAOA,EAAImB,WAAanB,EAAM,CAAEoB,QAASpB,GAEvFJ,EAAOC,QAAU,CACfm8Q,WAAYpC,EAAYx4Q,QACxBijB,gBAAiB81P,EAAiB/4Q,QAClCg5Q,kBAAmByD,EAAmBz8Q,QACtCwiB,cAAeg6P,EAAex8Q,qCCdhCvB,EAAQsB,YAAa,EACrBtB,EAAQ89Q,gBAAkBA,EAC1B99Q,EAAQi+Q,mBAAqBA,EAC7Bj+Q,EAAQ29Q,uBA8FR,SAAgC36Q,EAAOsf,GACrC,OAAOw7P,EAAgB96Q,EAAMmK,UAAU,SAAUsF,GAC/C,OAAO,EAAIg0K,EAAOivD,cAAcjjO,EAAO,CACrC6P,SAAUA,EAAS3K,KAAK,KAAMlF,GAC9BgR,IAAI,EACJ9B,OAAQu8P,EAAQzrQ,EAAO,SAAUzP,GACjC4e,MAAOs8P,EAAQzrQ,EAAO,QAASzP,GAC/B6e,KAAMq8P,EAAQzrQ,EAAO,OAAQzP,SApGnChD,EAAQ49Q,oBAyGR,SAA6BrkO,EAAWmkO,EAAkBp7P,GACxD,IAAI67P,EAAmBL,EAAgBvkO,EAAUpsC,UAC7CA,EAAW8wQ,EAAmBP,EAAkBS,GAmCpD,OAlCA33R,OAAO6K,KAAK8b,GAAU5iB,SAAQ,SAAU+N,GACtC,IAAIma,EAAQtF,EAAS7U,GACrB,IAAK,EAAImuL,EAAO62D,gBAAgB7qO,GAAhC,CACA,IAAI2rQ,EAAU9lR,KAAOolR,EACjBW,EAAU/lR,KAAO6lR,EACjBG,EAAYZ,EAAiBplR,GAC7BimR,GAAY,EAAI93F,EAAO62D,gBAAgBghC,KAAeA,EAAUt7Q,MAAMygB,IAEtE46P,GAAaD,IAAWG,EAQhBF,IAAWD,GAAYG,EAMxBF,GAAWD,IAAW,EAAI33F,EAAO62D,gBAAgBghC,KAI1DnxQ,EAAS7U,IAAO,EAAImuL,EAAOivD,cAAcjjO,EAAO,CAC9C6P,SAAUA,EAAS3K,KAAK,KAAMlF,GAC9BgR,GAAI66P,EAAUt7Q,MAAMygB,GACpB5B,KAAMq8P,EAAQzrQ,EAAO,OAAQ8mC,GAC7B33B,MAAOs8P,EAAQzrQ,EAAO,QAAS8mC,MAXjCpsC,EAAS7U,IAAO,EAAImuL,EAAOivD,cAAcjjO,EAAO,CAC9CgR,IAAI,IAVNtW,EAAS7U,IAAO,EAAImuL,EAAOivD,cAAcjjO,EAAO,CAC9C6P,SAAUA,EAAS3K,KAAK,KAAMlF,GAC9BgR,IAAI,EACJ5B,KAAMq8P,EAAQzrQ,EAAO,OAAQ8mC,GAC7B33B,MAAOs8P,EAAQzrQ,EAAO,QAAS8mC,SAoB9BpsC,GA5IT,IAAIs5K,EAAS,EAAQ,MAQrB,SAASq3F,EAAgB3wQ,EAAUqxQ,GACjC,IAII9wR,EAASlH,OAAOY,OAAO,MAO3B,OANI+lB,GAAUs5K,EAAO8uD,SAASh3O,IAAI4O,GAAU,SAAU5U,GACpD,OAAOA,KACNhO,SAAQ,SAAUkoB,GAEnB/kB,EAAO+kB,EAAMna,KATF,SAAgBma,GAC3B,OAAO+rQ,IAAS,EAAI/3F,EAAO62D,gBAAgB7qO,GAAS+rQ,EAAM/rQ,GAASA,EAQ/CgJ,CAAOhJ,MAEtB/kB,EAqBT,SAASuwR,EAAmBtrP,EAAMvmC,GAIhC,SAASqyR,EAAenmR,GACtB,OAAOA,KAAOlM,EAAOA,EAAKkM,GAAOq6B,EAAKr6B,GAJxCq6B,EAAOA,GAAQ,GACfvmC,EAAOA,GAAQ,GAQf,IAcIjE,EAdAu2R,EAAkBl4R,OAAOY,OAAO,MAChCu3R,EAAc,GAElB,IAAK,IAAIC,KAAWjsP,EACdisP,KAAWxyR,EACTuyR,EAAYr2R,SACdo2R,EAAgBE,GAAWD,EAC3BA,EAAc,IAGhBA,EAAY7xR,KAAK8xR,GAKrB,IAAIC,EAAe,GAEnB,IAAK,IAAIvrF,KAAWlnM,EAAM,CACxB,GAAIsyR,EAAgBprF,GAClB,IAAKnrM,EAAI,EAAGA,EAAIu2R,EAAgBprF,GAAShrM,OAAQH,IAAK,CACpD,IAAI22R,EAAiBJ,EAAgBprF,GAASnrM,GAC9C02R,EAAaH,EAAgBprF,GAASnrM,IAAMs2R,EAAeK,GAI/DD,EAAavrF,GAAWmrF,EAAenrF,GAIzC,IAAKnrM,EAAI,EAAGA,EAAIw2R,EAAYr2R,OAAQH,IAClC02R,EAAaF,EAAYx2R,IAAMs2R,EAAeE,EAAYx2R,IAG5D,OAAO02R,EAGT,SAASX,EAAQzrQ,EAAOgD,EAAMzS,GAC5B,OAAsB,MAAfA,EAAMyS,GAAgBzS,EAAMyS,GAAQhD,EAAMzP,MAAMyS,iCC9FzDzV,EAAQsB,YAAa,EACrBtB,EAAQ++Q,kBAOR,SAA2BC,GACzB,IAAIC,EAAkB,aAAeD,EAAiB,UAClDE,EAAkB,aAAeF,EACrC,OAAO,SAAUh8Q,GAEf,GAAIA,EAAMk8Q,GAAkB,CAE1B,GAA8B,MAA1Bl8Q,EAAMi8Q,GACR,OAAO,IAAIr3R,MAAMq3R,wNACZ,GAAsC,iBAA3Bj8Q,EAAMi8Q,GACtB,OAAO,IAAIr3R,MAAMq3R,EAAkB,uCAIvC,OAAO,OApBXj/Q,EAAQm/Q,gBAAkBn/Q,EAAQo/Q,mBAAgB,EAElD,IAEgCj/Q,EAF5BiyQ,GAE4BjyQ,EAFQ,EAAQ,QAEKA,EAAImB,WAAanB,EAAM,CAAEoB,QAASpB,GAoBnFi/Q,EAAgBhN,EAAW7wQ,QAAQ6xO,UAAU,CAACg/B,EAAW7wQ,QAAQw+F,OAAQqyK,EAAW7wQ,QAAQixG,MAAM,CACpG5wF,MAAOwwP,EAAW7wQ,QAAQw+F,OAC1Bl+E,KAAMuwP,EAAW7wQ,QAAQw+F,SACxBt2G,aAEHuW,EAAQo/Q,cAAgBA,EAExB,IAAID,EAAkB/M,EAAW7wQ,QAAQ6xO,UAAU,CAACg/B,EAAW7wQ,QAAQ6T,OAAQg9P,EAAW7wQ,QAAQixG,MAAM,CACtG5wF,MAAOwwP,EAAW7wQ,QAAQ6T,OAC1ByM,KAAMuwP,EAAW7wQ,QAAQ6T,OACzB0sD,OAAQswM,EAAW7wQ,QAAQ6T,SACzBg9P,EAAW7wQ,QAAQixG,MAAM,CAC3B5wF,MAAOwwP,EAAW7wQ,QAAQ6T,OAC1BiqQ,UAAWjN,EAAW7wQ,QAAQ6T,OAC9ByO,YAAauuP,EAAW7wQ,QAAQ6T,OAChCyM,KAAMuwP,EAAW7wQ,QAAQ6T,OACzBkqQ,SAAUlN,EAAW7wQ,QAAQ6T,OAC7B0O,WAAYsuP,EAAW7wQ,QAAQ6T,WAGjCpV,EAAQm/Q,gBAAkBA,+BCvCb,IAAIntM,EAAE,EAAQ,MAAiB5pF,EAAE,mBAAoBkE,QAAQA,OAAOspP,IAAI9uP,EAAEsB,EAAEkE,OAAOspP,IAAI,iBAAiB,MAAMvkK,EAAEjpF,EAAEkE,OAAOspP,IAAI,gBAAgB,MAAMxkO,EAAEhpB,EAAEkE,OAAOspP,IAAI,kBAAkB,MAAM3tP,EAAEG,EAAEkE,OAAOspP,IAAI,qBAAqB,MAAM70F,EAAE34J,EAAEkE,OAAOspP,IAAI,kBAAkB,MAAMppP,EAAEpE,EAAEkE,OAAOspP,IAAI,kBAAkB,MAAM9uO,EAAE1e,EAAEkE,OAAOspP,IAAI,iBAAiB,MAAMzrO,EAAE/hB,EAAEkE,OAAOspP,IAAI,qBAAqB,MAAM/pP,EAAEzD,EAAEkE,OAAOspP,IAAI,kBAAkB,MAAMxtP,GAAGkE,OAAOspP,IAAI,uBACpc,IAAIxkF,EAAEhpK,EAAEkE,OAAOspP,IAAI,cAAc,MAAMC,EAAGztP,EAAEkE,OAAOspP,IAAI,cAAc,MAAMxtP,GAAGkE,OAAOspP,IAAI,qBAAqBxtP,GAAGkE,OAAOspP,IAAI,mBAAmBxtP,GAAGkE,OAAOspP,IAAI,eAAe,IAAIpjH,EAAE,mBAAoBlmI,QAAQA,OAAOC,SACrN,SAAS2pP,EAAEnnO,GAAG,IAAI,IAAIloB,EAAE,yDAAyDkoB,EAAExW,EAAE,EAAEA,EAAElQ,UAAUC,OAAOiQ,IAAI1R,GAAG,WAAWsT,mBAAmB9R,UAAUkQ,IAAI,MAAM,yBAAyBwW,EAAE,WAAWloB,EAAE,iHAAiH,IAAI0vP,EAAE,CAACiI,UAAU,WAAW,OAAM,GAAIC,mBAAmB,aAAaC,oBAAoB,aAAaC,gBAAgB,cAAcj+F,EAAE,GACnc,SAASe,EAAE1yI,EAAEloB,EAAE0R,GAAGtR,KAAK+b,MAAM+L,EAAE9nB,KAAKyuK,QAAQ7uK,EAAEI,KAAKyyQ,KAAKh5G,EAAEz5J,KAAK23P,QAAQrmP,GAAGg+O,EAA6R,SAAS11F,KAA6B,SAAShsB,EAAE9lH,EAAEloB,EAAE0R,GAAGtR,KAAK+b,MAAM+L,EAAE9nB,KAAKyuK,QAAQ7uK,EAAEI,KAAKyyQ,KAAKh5G,EAAEz5J,KAAK23P,QAAQrmP,GAAGg+O,EAA3Y90F,EAAEt6J,UAAUm3P,iBAAiB,GAAG78F,EAAEt6J,UAAU2+B,SAAS,SAAS/W,EAAEloB,GAAG,GAAG,iBAAkBkoB,GAAG,mBAAoBA,GAAG,MAAMA,EAAE,MAAMnnB,MAAMsuP,EAAE,KAAKjvP,KAAK23P,QAAQD,gBAAgB13P,KAAK8nB,EAAEloB,EAAE,aAAa46J,EAAEt6J,UAAUytC,YAAY,SAAS7lB,GAAG9nB,KAAK23P,QAAQH,mBAAmBx3P,KAAK8nB,EAAE,gBAA8B8xI,EAAE15J,UAAUs6J,EAAEt6J,UAAsF,IAAIk7J,EAAExtB,EAAE1tI,UAAU,IAAI05J,EAC/ewB,EAAEn7J,YAAY2tI,EAAE7iD,EAAEqwE,EAAEZ,EAAEt6J,WAAWk7J,EAAE63G,sBAAqB,EAAG,IAAIjlI,EAAE,CAAChpG,QAAQ,MAAMorN,EAAE,CAACprN,QAAQ,MAAMklI,EAAE3qK,OAAOW,UAAUJ,eAAemqK,EAAE,CAAC54J,KAAI,EAAG0rB,KAAI,EAAGu7P,QAAO,EAAGC,UAAS,GACvK,SAAS7+H,EAAE5xI,EAAEloB,EAAE0R,GAAG,IAAIxL,EAAEnG,EAAE,GAAGkF,EAAE,KAAKo7F,EAAE,KAAK,GAAG,MAAMrgG,EAAE,IAAIkG,UAAK,IAASlG,EAAEm9B,MAAMkjE,EAAErgG,EAAEm9B,UAAK,IAASn9B,EAAEyR,MAAMxM,EAAE,GAAGjF,EAAEyR,KAAKzR,EAAEsqK,EAAExpK,KAAKd,EAAEkG,KAAKmkK,EAAEnqK,eAAegG,KAAKnG,EAAEmG,GAAGlG,EAAEkG,IAAI,IAAInB,EAAEvD,UAAUC,OAAO,EAAE,GAAG,IAAIsD,EAAEhF,EAAEumB,SAAS5U,OAAO,GAAG,EAAE3M,EAAE,CAAC,IAAI,IAAI+vE,EAAEh1E,MAAMiF,GAAGyM,EAAE,EAAEA,EAAEzM,EAAEyM,IAAIsjE,EAAEtjE,GAAGhQ,UAAUgQ,EAAE,GAAGzR,EAAEumB,SAASwuD,EAAE,GAAG5sD,GAAGA,EAAEmI,aAAa,IAAInqB,KAAKnB,EAAEmjB,EAAEmI,kBAAe,IAAStwB,EAAEmG,KAAKnG,EAAEmG,GAAGnB,EAAEmB,IAAI,MAAM,CAAC0pP,SAAS3vP,EAAEyM,KAAKwb,EAAEzW,IAAIxM,EAAEk4B,IAAIkjE,EAAElkF,MAAMpc,EAAE8zQ,OAAOrjB,EAAEprN,SACvU,SAASyjG,EAAE3gH,GAAG,MAAM,iBAAkBA,GAAG,OAAOA,GAAGA,EAAE0nO,WAAW3vP,EAA0G,IAAIgxP,EAAE,OAAO1qP,EAAE,GAAG,SAASuuG,EAAE5sF,EAAEloB,EAAE0R,EAAExL,GAAG,GAAGK,EAAE9E,OAAO,CAAC,IAAI1B,EAAEwG,EAAEP,MAA8D,OAAxDjG,EAAE8G,OAAOqhB,EAAEnoB,EAAE64R,UAAU54R,EAAED,EAAEkoB,KAAKvW,EAAE3R,EAAE8uK,QAAQ3oK,EAAEnG,EAAEk2D,MAAM,EAASl2D,EAAE,MAAM,CAAC8G,OAAOqhB,EAAE0wQ,UAAU54R,EAAEioB,KAAKvW,EAAEm9J,QAAQ3oK,EAAE+vD,MAAM,GAC7b,SAAS4yI,EAAE3gL,GAAGA,EAAErhB,OAAO,KAAKqhB,EAAE0wQ,UAAU,KAAK1wQ,EAAED,KAAK,KAAKC,EAAE2mJ,QAAQ,KAAK3mJ,EAAE+tC,MAAM,EAAE,GAAG1vD,EAAE9E,QAAQ8E,EAAEN,KAAKiiB,GACtG,SAAS0jH,EAAE1jH,EAAEloB,EAAE0R,EAAExL,GAAG,IAAInG,SAASmoB,EAAK,cAAcnoB,GAAG,YAAYA,IAAEmoB,EAAE,MAAK,IAAIjjB,GAAE,EAAG,GAAG,OAAOijB,EAAEjjB,GAAE,OAAQ,OAAOlF,GAAG,IAAK,SAAS,IAAK,SAASkF,GAAE,EAAG,MAAM,IAAK,SAAS,OAAOijB,EAAE0nO,UAAU,KAAK3vP,EAAE,KAAKuqF,EAAEvlF,GAAE,GAAI,GAAGA,EAAE,OAAOyM,EAAExL,EAAEgiB,EAAE,KAAKloB,EAAE,IAAIi6J,EAAE/xI,EAAE,GAAGloB,GAAG,EAAyB,GAAvBiF,EAAE,EAAEjF,EAAE,KAAKA,EAAE,IAAIA,EAAE,IAAOF,MAAMyc,QAAQ2L,GAAG,IAAI,IAAIm4E,EAAE,EAAEA,EAAEn4E,EAAEzmB,OAAO4+F,IAAI,CAAQ,IAAIt7F,EAAE/E,EAAEi6J,EAAfl6J,EAAEmoB,EAAEm4E,GAAeA,GAAGp7F,GAAG2mI,EAAE7rI,EAAEgF,EAAE2M,EAAExL,QAAQ,GAAoG,mBAAnEnB,EAA9B,OAAOmjB,GAAG,iBAAkBA,EAAI,KAAmC,mBAA7BnjB,EAAE4mI,GAAGzjH,EAAEyjH,IAAIzjH,EAAE,eAAsCnjB,EAAE,MAA4B,IAAImjB,EAAEnjB,EAAEjE,KAAKonB,GAAGm4E,EACpf,IAAItgG,EAAEmoB,EAAE3iB,QAAQO,MAA6Bb,GAAG2mI,EAA1B7rI,EAAEA,EAAEgG,MAAMhB,EAAE/E,EAAEi6J,EAAEl6J,EAAEsgG,KAAc3uF,EAAExL,QAAQ,GAAG,WAAWnG,EAAE,MAAM2R,EAAE,GAAGwW,EAAEnnB,MAAMsuP,EAAE,GAAG,oBAAoB39O,EAAE,qBAAqB/R,OAAO6K,KAAK0d,GAAG7B,KAAK,MAAM,IAAI3U,EAAE,KAAK,OAAOzM,EAAE,SAASisP,EAAEhpO,EAAEloB,EAAE0R,GAAG,OAAO,MAAMwW,EAAE,EAAE0jH,EAAE1jH,EAAE,GAAGloB,EAAE0R,GAAG,SAASuoJ,EAAE/xI,EAAEloB,GAAG,MAAM,iBAAkBkoB,GAAG,OAAOA,GAAG,MAAMA,EAAEzW,IAH7I,SAAgByW,GAAG,IAAIloB,EAAE,CAAC,IAAI,KAAK,IAAI,MAAM,MAAM,KAAK,GAAGkoB,GAAG/T,QAAQ,SAAQ,SAAS+T,GAAG,OAAOloB,EAAEkoB,MAG8C+7G,CAAO/7G,EAAEzW,KAAKzR,EAAE4D,SAAS,IAAI,SAASkqI,EAAG5lH,EAAEloB,GAAGkoB,EAAED,KAAKnnB,KAAKonB,EAAE2mJ,QAAQ7uK,EAAEkoB,EAAE+tC,SACzX,SAASi5L,EAAGhnO,EAAEloB,EAAE0R,GAAG,IAAIxL,EAAEgiB,EAAErhB,OAAO9G,EAAEmoB,EAAE0wQ,UAAU1wQ,EAAEA,EAAED,KAAKnnB,KAAKonB,EAAE2mJ,QAAQ7uK,EAAEkoB,EAAE+tC,SAASn2D,MAAMyc,QAAQ2L,GAAGipO,EAAEjpO,EAAEhiB,EAAEwL,GAAE,SAASwW,GAAG,OAAOA,KAAI,MAAMA,IAAI2gH,EAAE3gH,KAAKA,EAJtJ,SAAYA,EAAEloB,GAAG,MAAM,CAAC4vP,SAAS3vP,EAAEyM,KAAKwb,EAAExb,KAAK+E,IAAIzR,EAAEm9B,IAAIjV,EAAEiV,IAAIhhB,MAAM+L,EAAE/L,MAAM03P,OAAO3rP,EAAE2rP,QAIkE5kB,CAAG/mO,EAAEnoB,IAAImoB,EAAEzW,KAAKzR,GAAGA,EAAEyR,MAAMyW,EAAEzW,IAAI,IAAI,GAAGyW,EAAEzW,KAAK0C,QAAQ88O,EAAE,OAAO,KAAKv/O,IAAIxL,EAAED,KAAKiiB,IAAI,SAASipO,EAAEjpO,EAAEloB,EAAE0R,EAAExL,EAAEnG,GAAG,IAAIkF,EAAE,GAAG,MAAMyM,IAAIzM,GAAG,GAAGyM,GAAGyC,QAAQ88O,EAAE,OAAO,KAAkBC,EAAEhpO,EAAEgnO,EAAjBlvP,EAAE80G,EAAE90G,EAAEiF,EAAEiB,EAAEnG,IAAa8oM,EAAE7oM,GAAG,SAASynI,IAAI,IAAIv/G,EAAEkmH,EAAEhpG,QAAQ,GAAG,OAAOld,EAAE,MAAMnnB,MAAMsuP,EAAE,MAAM,OAAOnnO,EACpZ,IAAIuiJ,EAAE,CAACikF,SAAS,CAACh3O,IAAI,SAASwQ,EAAEloB,EAAE0R,GAAG,GAAG,MAAMwW,EAAE,OAAOA,EAAE,IAAIhiB,EAAE,GAAmB,OAAhBirP,EAAEjpO,EAAEhiB,EAAE,KAAKlG,EAAE0R,GAAUxL,GAAGxC,QAAQ,SAASwkB,EAAEloB,EAAE0R,GAAG,GAAG,MAAMwW,EAAE,OAAOA,EAAqBgpO,EAAEhpO,EAAE4lH,EAAvB9tI,EAAE80G,EAAE,KAAK,KAAK90G,EAAE0R,IAAam3L,EAAE7oM,IAAIi2D,MAAM,SAAS/tC,GAAG,OAAOgpO,EAAEhpO,GAAE,WAAW,OAAO,OAAM,OAAOg/E,QAAQ,SAASh/E,GAAG,IAAIloB,EAAE,GAAqC,OAAlCmxP,EAAEjpO,EAAEloB,EAAE,MAAK,SAASkoB,GAAG,OAAOA,KAAWloB,GAAG2uP,KAAK,SAASzmO,GAAG,IAAI2gH,EAAE3gH,GAAG,MAAMnnB,MAAMsuP,EAAE,MAAM,OAAOnnO,IAAI2wQ,UAAU,WAAW,MAAM,CAACzzP,QAAQ,OAAOw7J,UAAUhmC,EAAEk0F,cAAc9gH,EAAEszD,cAAc,SAASp5K,EAAEloB,GACzV,YAD4V,IAASA,IAAIA,EAAE,OAAMkoB,EAAE,CAAC0nO,SAAS3vO,EAAE4gQ,sBAAsB7gR,EACrgBswQ,cAAcpoP,EAAEkoO,eAAeloO,EAAEioO,aAAa,EAAE9gF,SAAS,KAAKwxB,SAAS,OAAQxxB,SAAS,CAACugF,SAASjqP,EAAEmpI,SAAS5mH,GAAUA,EAAE24K,SAAS34K,GAAG8/P,WAAW,SAAS9/P,GAAG,MAAM,CAAC0nO,SAAStsO,EAAEuX,OAAO3S,IAAI4wQ,KAAK,SAAS5wQ,GAAG,MAAM,CAAC0nO,SAASZ,EAAGoJ,MAAMlwO,EAAE2nO,SAAS,EAAEC,QAAQ,OAAOi7B,KAAK,SAAS7iQ,EAAEloB,GAAG,MAAM,CAAC4vP,SAASrlF,EAAE79J,KAAKwb,EAAEwN,aAAQ,IAAS11B,EAAE,KAAKA,IAAIoyP,YAAY,SAASlqO,EAAEloB,GAAG,OAAOynI,IAAI2qH,YAAYlqO,EAAEloB,IAAI8xP,WAAW,SAAS5pO,EAAEloB,GAAG,OAAOynI,IAAIqqH,WAAW5pO,EAAEloB,IAAIsyP,UAAU,SAASpqO,EAAEloB,GAAG,OAAOynI,IAAI6qH,UAAUpqO,EAAEloB,IAAIqyP,oBAAoB,SAASnqO,EACngBloB,EAAE0R,GAAG,OAAO+1H,IAAI4qH,oBAAoBnqO,EAAEloB,EAAE0R,IAAI6gP,cAAc,aAAaJ,gBAAgB,SAASjqO,EAAEloB,GAAG,OAAOynI,IAAI0qH,gBAAgBjqO,EAAEloB,IAAI+xP,QAAQ,SAAS7pO,EAAEloB,GAAG,OAAOynI,IAAIsqH,QAAQ7pO,EAAEloB,IAAIgyP,WAAW,SAAS9pO,EAAEloB,EAAE0R,GAAG,OAAO+1H,IAAIuqH,WAAW9pO,EAAEloB,EAAE0R,IAAIugP,OAAO,SAAS/pO,GAAG,OAAOu/G,IAAIwqH,OAAO/pO,IAAIgqO,SAAS,SAAShqO,GAAG,OAAOu/G,IAAIyqH,SAAShqO,IAAIm8P,SAAS95P,EAAEk6P,SAASvqH,EAAEwqH,WAAWtjR,EAAEujR,SAAS3/Q,EAAEiT,cAAc6hJ,EAAE+0F,aAAa,SAAS3mO,EAAEloB,EAAE0R,GAAG,GAAG,MAAOwW,EAAc,MAAMnnB,MAAMsuP,EAAE,IAAInnO,IAAI,IAAIhiB,EAAEilF,EAAE,GAAGjjE,EAAE/L,OAAOpc,EAAEmoB,EAAEzW,IAAIxM,EAAEijB,EAAEiV,IAAIkjE,EAAEn4E,EAAE2rP,OACrf,GAAG,MAAM7zQ,EAAE,CAAoE,QAAnE,IAASA,EAAEm9B,MAAMl4B,EAAEjF,EAAEm9B,IAAIkjE,EAAEmwJ,EAAEprN,cAAS,IAASplC,EAAEyR,MAAM1R,EAAE,GAAGC,EAAEyR,KAAQyW,EAAExb,MAAMwb,EAAExb,KAAK2jB,aAAa,IAAItrB,EAAEmjB,EAAExb,KAAK2jB,aAAa,IAAIykD,KAAK90E,EAAEsqK,EAAExpK,KAAKd,EAAE80E,KAAKu1F,EAAEnqK,eAAe40E,KAAK5uE,EAAE4uE,QAAG,IAAS90E,EAAE80E,SAAI,IAAS/vE,EAAEA,EAAE+vE,GAAG90E,EAAE80E,IAAI,IAAIA,EAAEtzE,UAAUC,OAAO,EAAE,GAAG,IAAIqzE,EAAE5uE,EAAEogB,SAAS5U,OAAO,GAAG,EAAEojE,EAAE,CAAC/vE,EAAEjF,MAAMg1E,GAAG,IAAI,IAAItjE,EAAE,EAAEA,EAAEsjE,EAAEtjE,IAAIzM,EAAEyM,GAAGhQ,UAAUgQ,EAAE,GAAGtL,EAAEogB,SAASvhB,EAAE,MAAM,CAAC6qP,SAAS3vP,EAAEyM,KAAKwb,EAAExb,KAAK+E,IAAI1R,EAAEo9B,IAAIl4B,EAAEkX,MAAMjW,EAAE2tQ,OAAOxzK,IAAI04L,cAAc,SAAS7wQ,GAAG,IAAIloB,EAAE85J,EAAEhpI,KAAK,KAAK5I,GAAY,OAATloB,EAAE0M,KAAKwb,EAASloB,GAAGy2P,eAAe5tH,EAAEt6H,QAAQ,UACrfohP,mDAAmD,CAACI,uBAAuB3hH,EAAE4hH,wBAAwB,CAACC,SAAS,MAAMmoB,kBAAkB5nB,EAAEwoC,qBAAqB,CAAC5zP,SAAQ,GAAIjkC,OAAOgqF,IAAI4uE,EAAE,CAACr/I,QAAQ+vJ,GAAGD,EAAEzQ,GAAG0Q,GAAG1Q,EAAE7gJ,EAAOC,QAAQqxJ,EAAE9vJ,SAAS8vJ,+BCrBtOtxJ,EAAOC,QAAU,EAAjB,mKCKEqX,EAAY,CACdlK,SAAU,SACV+I,UAAW,WACX4pQ,eAAgB,WAChBC,eAAgB,WAChBC,UAAW,WACXt6L,MAAO,WACPu6L,KAAM,SACN/sG,OAAQ,SACRn2B,OAAQ,SACR1vI,IAAK,KACL6qK,WAAY,UAAgB,eAC5Bu1F,SAAU,cAAoB,CAAC,WAAkB,WAAkB,YAEjEv2P,EAAe,CACjBwuE,MAAO,UACPwtF,QAAQ,EACR7lK,IAAK,MACL0yQ,eAAgB,QAChBE,MAAM,EACN/nG,YAAY,OAAe,GAAI,iBAAmB,CAChD11J,eAAe,KAInB,SAASsnJ,EAAM9mK,GACb,IAAIkT,EAAYlT,EAAMkT,UAClB4pQ,EAAiB98Q,EAAM88Q,eACvBC,EAAiB/8Q,EAAM+8Q,eACvBC,EAAYh9Q,EAAMg9Q,UAClBE,EAAMl9Q,EAAMqK,IACZq4E,EAAQ1iF,EAAM0iF,MACdwtF,EAASlwK,EAAMkwK,OACfn2B,EAAS/5I,EAAM+5I,OACf5vI,EAAWnK,EAAMmK,SACjB+qK,EAAal1K,EAAMk1K,WACnB+nG,EAAOj9Q,EAAMi9Q,KACbxS,EAAWzqQ,EAAMyqQ,SACjBzhQ,GAAa,OAA8BhJ,EAAO,CAAC,YAAa,iBAAkB,iBAAkB,YAAa,MAAO,QAAS,SAAU,SAAU,WAAY,aAAc,OAAQ,aAEvLiK,GAAU,QAAgB,IAAWiJ,EAAW,QAAS,SAAWwvE,EAAO,CAC7E,oBAAqBq3D,IACnBijI,GACAG,GAAe,QAAgB,IAAW,QAASL,GAAiBE,GAEpEI,GAAkB,OAAe,GAAI,iBAAmB,GAAIloG,EAAY,CAC1EmoG,UAAWJ,EAAO/nG,EAAWmoG,UAAY,GACzC5vR,QAASwvR,EAAO/nG,EAAWznL,QAAU,IAGvC,OAAO,kBAAoB,KAAM,OAAS,GAAIub,EAAYo0Q,EAAiB,CACzE/yQ,IAAK6yQ,EACLhqQ,UAAWjJ,EACXwW,GAAIyvJ,EACJ9lK,KAAM,QACNqgQ,SAAUA,IACR1wH,EAAS,kBAAoB,SAAU,CACzCxpJ,KAAM,SACN2iB,UAAWiqQ,EACX,aAAcJ,EACdjxP,QAASiuH,GACR,kBAAoB,OAAQ,CAC7B,cAAe,QACd,MAAW,KAAM5vI,GAGtB28J,EAAMzyJ,UAAYA,EAClByyJ,EAAM5yJ,aAAeA,EACrB,mJCtEIG,EAAY,CACdquE,MAAO,WACP46L,KAAM,SACNjzQ,IAAK,KACLogQ,SAAU,cAAoB,CAAC,WAAkB,SAAgB,aACjEtgQ,SAAU,SACV+I,UAAW,WACX8pQ,UAAW,YAQTO,EAAQ,SAAev9Q,GACzB,IAAIkT,EAAYlT,EAAMkT,UAClB8pQ,EAAYh9Q,EAAMg9Q,UAClBt6L,EAAQ1iF,EAAM0iF,MACd+nL,EAAWzqQ,EAAMyqQ,SACjB6S,EAAOt9Q,EAAMs9Q,KACbJ,EAAMl9Q,EAAMqK,IACZrB,GAAa,OAA8BhJ,EAAO,CAAC,YAAa,YAAa,QAAS,WAAY,OAAQ,QAE1GiK,GAAU,QAAgB,IAAWiJ,EAAW,QAAS,SAAWwvE,IAAO46L,GAAO,cAAuBN,GAM7G,OAJIh0Q,EAAWjN,MAAgB,SAARmhR,IACrBA,EAAM,KAGD,kBAAoBA,GAAK,OAAS,GAAIl0Q,EAAY,CACvDkK,UAAWjJ,EACX+W,IAAKypP,MAIT8S,EAAMlpQ,UAAYA,EAClBkpQ,EAAMrpQ,aA5Ba,CACjBwuE,MAAO,YACP46L,MAAM,EACNjzQ,IAAK,QA0BP,uKCpCIgK,EAAY,CACdyqD,OAAQ,SACR,aAAc,WACd6lI,MAAO,SACPjiH,MAAO,WACPr5D,SAAU,SACVo9C,QAAS,SACTp8D,IAAK,KACLogQ,SAAU,cAAoB,CAAC,WAAkB,SAAgB,aACjE3+O,QAAS,SACT5kB,KAAM,WACNiD,SAAU,SACV+I,UAAW,WACX8pQ,UAAW,WACXrlR,MAAO,UAOLinE,EAEJ,SAAUsrM,GAGR,SAAStrM,EAAO5+D,GACd,IAAIvb,EAIJ,OAFAA,EAAQylR,EAAiBvlR,KAAKV,KAAM+b,IAAU/b,MACxC6nC,QAAUrnC,EAAMqnC,QAAQnX,MAAK,OAAuBlwB,IACnDA,GAPT,OAAem6E,EAAQsrM,GAUvB,IAAInjG,EAASnoG,EAAOz6E,UAyDpB,OAvDA4iL,EAAOj7I,QAAU,SAAiB/hC,GAC5B9F,KAAK+b,MAAMqpB,SACbt/B,EAAEm7B,iBAIAjhC,KAAK+b,MAAM8rB,SACb7nC,KAAK+b,MAAM8rB,QAAQ/hC,IAIvBg9K,EAAOroJ,OAAS,WACd,IAAI2zN,EAAcpuP,KAAK+b,MACnB8+D,EAASuzK,EAAYvzK,OACrB0+M,EAAYnrC,EAAY,cACxB1tC,EAAQ0tC,EAAY1tC,MACpBzxL,EAAYm/N,EAAYn/N,UACxBvb,EAAQ06O,EAAY16O,MACpBqlR,EAAY3qC,EAAY2qC,UACxBt6L,EAAQ2vJ,EAAY3vJ,MACpBjc,EAAU4rK,EAAY5rK,QACtBv/D,EAAOmrO,EAAYnrO,KACnBg2Q,EAAM7qC,EAAYhoO,IAClBogQ,EAAWp4B,EAAYo4B,SACvBzhQ,GAAa,OAA8BqpO,EAAa,CAAC,SAAU,aAAc,QAAS,YAAa,QAAS,YAAa,QAAS,UAAW,OAAQ,MAAO,aAEhK16O,QAAwC,IAAxBqR,EAAWmB,WAC7BnB,EAAWmB,SAAW,kBAAoB,OAAQ,CAChD,eAAe,GACd,MAGL,IAAIszQ,EAAkB,OAASh3M,EAAU,WAAa,IAAM,IAAMic,EAC9Dz4E,GAAU,QAAgB,IAAWiJ,EAAW,CAClDvb,MAAOA,GACNA,GAAS,MAAOA,GAAS8lR,IAAiBv2Q,GAAO,OAASA,IAAcy9L,GAAQ,YAAqB,CACtG7lI,OAAQA,EACRz1C,SAAUplC,KAAK+b,MAAMqpB,WACnB2zP,GAEAh0Q,EAAWjN,MAAgB,WAARmhR,IACrBA,EAAM,KAGR,IAAIQ,EAAmB/lR,EAAQ,QAAU,KACzC,OAAO,kBAAoBulR,GAAK,OAAS,CACvC3sR,KAAc,WAAR2sR,GAAoBl0Q,EAAW8iB,QAAU,cAAWn3B,GACzDqU,EAAY,CACbkK,UAAWjJ,EACX+W,IAAKypP,EACL3+O,QAAS7nC,KAAK6nC,QACd,aAAc0xP,GAAaE,MAIxB9+M,EApET,CAqEE,eAEFA,EAAOvqD,UAAYA,EACnBuqD,EAAO1qD,aA/EY,CACjBwuE,MAAO,YACPr4E,IAAK,UA8EP,sHCpGIgK,EAAY,CACdlK,SAAU,UAGRwzQ,EAAiB,SAAwB39Q,GAC3C,OAAO,kBAAoB,KAAU,OAAS,CAC5C2W,OAAO,GACN3W,KAGL29Q,EAAetpQ,UAAYA,EAC3B,mJCTIA,EAAY,CACdhK,IAAK,KACL,aAAc,WACd6I,UAAW,WACX8pQ,UAAW,WACX5yQ,KAAM,WACNlD,KAAM,WACNgsD,SAAU,UAOR8M,EAAc,SAAqBhgE,GACrC,IAAIkT,EAAYlT,EAAMkT,UAClB8pQ,EAAYh9Q,EAAMg9Q,UAClB91Q,EAAOlH,EAAMkH,KACbgsD,EAAWlzD,EAAMkzD,SACjBgqN,EAAMl9Q,EAAMqK,IACZrB,GAAa,OAA8BhJ,EAAO,CAAC,YAAa,YAAa,OAAQ,WAAY,QAEjGiK,GAAU,QAAgB,IAAWiJ,IAAWhM,GAAO,aAAeA,EAAcgsD,EAAW,qBAAuB,aAAc8pN,GACxI,OAAO,kBAAoBE,GAAK,OAAS,GAAIl0Q,EAAY,CACvDkK,UAAWjJ,MAIf+1D,EAAY3rD,UAAYA,EACxB2rD,EAAY9rD,aApBO,CACjB7J,IAAK,MACLD,KAAM,SAmBR,mJC9BIiK,EAAY,CACdhK,IAAK,KACLkJ,QAAS,SACTmvE,MAAO,WACP/5F,KAAM,SACN89E,QAAS,SACTvzD,UAAW,WACX8pQ,UAAW,WACXvS,SAAU,cAAoB,CAAC,WAAkB,WAAkB,YAMjEmT,EAAO,SAAc59Q,GACvB,IAAIkT,EAAYlT,EAAMkT,UAClB8pQ,EAAYh9Q,EAAMg9Q,UAClBt6L,EAAQ1iF,EAAM0iF,MACd/5F,EAAOqX,EAAMrX,KACb4qB,EAAUvT,EAAMuT,QAChBkzD,EAAUzmE,EAAMymE,QAChBy2M,EAAMl9Q,EAAMqK,IACZogQ,EAAWzqQ,EAAMyqQ,SACjBzhQ,GAAa,OAA8BhJ,EAAO,CAAC,YAAa,YAAa,QAAS,OAAQ,UAAW,UAAW,MAAO,aAE3HiK,GAAU,QAAgB,IAAWiJ,EAAW,SAAQK,GAAU,eAAsB5qB,GAAO,cAAqB+5F,IAASjc,EAAU,SAAW,MAAQ,IAAMic,GAAgBs6L,GACpL,OAAO,kBAAoBE,GAAK,OAAS,GAAIl0Q,EAAY,CACvDkK,UAAWjJ,EACX+W,IAAKypP,MAITmT,EAAKvpQ,UAAYA,EACjBupQ,EAAK1pQ,aAvBc,CACjB7J,IAAK,OAuBP,mJClCIgK,EAAY,CACdhK,IAAK,KACL6I,UAAW,WACX8pQ,UAAW,WACXvS,SAAU,cAAoB,CAAC,WAAkB,WAAkB,YAMjEoT,EAAW,SAAkB79Q,GAC/B,IAAIkT,EAAYlT,EAAMkT,UAClB8pQ,EAAYh9Q,EAAMg9Q,UAClBvS,EAAWzqQ,EAAMyqQ,SACjByS,EAAMl9Q,EAAMqK,IACZrB,GAAa,OAA8BhJ,EAAO,CAAC,YAAa,YAAa,WAAY,QAEzFiK,GAAU,QAAgB,IAAWiJ,EAAW,aAAc8pQ,GAClE,OAAO,kBAAoBE,GAAK,OAAS,GAAIl0Q,EAAY,CACvDkK,UAAWjJ,EACX+W,IAAKypP,MAIToT,EAASxpQ,UAAYA,EACrBwpQ,EAAS3pQ,aAnBU,CACjB7J,IAAK,OAmBP,mJC1BIgK,EAAY,CACdhK,IAAK,KACL6I,UAAW,WACX8pQ,UAAW,YAMTc,EAAa,SAAoB99Q,GACnC,IAAIkT,EAAYlT,EAAMkT,UAClB8pQ,EAAYh9Q,EAAMg9Q,UAClBE,EAAMl9Q,EAAMqK,IACZrB,GAAa,OAA8BhJ,EAAO,CAAC,YAAa,YAAa,QAE7EiK,GAAU,QAAgB,IAAWiJ,EAAW,eAAgB8pQ,GACpE,OAAO,kBAAoBE,GAAK,OAAS,GAAIl0Q,EAAY,CACvDkK,UAAWjJ,MAIf6zQ,EAAWzpQ,UAAYA,EACvBypQ,EAAW5pQ,aAjBQ,CACjB7J,IAAK,OAiBP,mJCvBIgK,EAAY,CACdhK,IAAK,KACL6I,UAAW,WACX8pQ,UAAW,YAMTe,EAAa,SAAoB/9Q,GACnC,IAAIkT,EAAYlT,EAAMkT,UAClB8pQ,EAAYh9Q,EAAMg9Q,UAClBE,EAAMl9Q,EAAMqK,IACZrB,GAAa,OAA8BhJ,EAAO,CAAC,YAAa,YAAa,QAE7EiK,GAAU,QAAgB,IAAWiJ,EAAW,eAAgB8pQ,GACpE,OAAO,kBAAoBE,GAAK,OAAS,GAAIl0Q,EAAY,CACvDkK,UAAWjJ,MAIf8zQ,EAAW1pQ,UAAYA,EACvB0pQ,EAAW7pQ,aAjBQ,CACjB7J,IAAK,OAiBP,mJCvBIgK,EAAY,CACdhK,IAAK,KACL6I,UAAW,WACX8pQ,UAAW,YAMTgB,EAAY,SAAmBh+Q,GACjC,IAAIkT,EAAYlT,EAAMkT,UAClB8pQ,EAAYh9Q,EAAMg9Q,UAClBE,EAAMl9Q,EAAMqK,IACZrB,GAAa,OAA8BhJ,EAAO,CAAC,YAAa,YAAa,QAE7EiK,GAAU,QAAgB,IAAWiJ,EAAW,cAAe8pQ,GACnE,OAAO,kBAAoBE,GAAK,OAAS,GAAIl0Q,EAAY,CACvDkK,UAAWjJ,MAIf+zQ,EAAU3pQ,UAAYA,EACtB2pQ,EAAU9pQ,aAjBS,CACjB7J,IAAK,OAiBP,mJCtBI4zQ,EAAqB,cAAoB,CAAC,WAAkB,aAC5D1yO,EAAc,cAAoB,CAAC,SAAgB,WAAkB,WAAkB,UAAgB,CACzGrkC,KAAM,cAAoB,CAAC,SAAgB,WAAkB,aAC7D87F,MAAOi7K,EACPvyQ,OAAQuyQ,MAEN5pQ,EAAY,CACdhK,IAAK,KACL6zQ,GAAI3yO,EACJ4yO,GAAI5yO,EACJu7M,GAAIv7M,EACJooN,GAAIpoN,EACJ6yO,GAAI7yO,EACJr4B,UAAW,WACX8pQ,UAAW,WACXztM,OAAQ,WAON8uM,EAAqB,SAA4BC,EAAMC,EAAUC,GACnE,OAAgB,IAAZA,GAAgC,KAAZA,EACfF,EAAO,MAAQ,OAASC,EACV,SAAZC,EACFF,EAAO,WAAa,OAASC,EAAW,QAG1CD,EAAO,OAASE,EAAU,OAASD,EAAW,IAAMC,GAGzDC,EAAM,SAAaz+Q,GACrB,IAAIkT,EAAYlT,EAAMkT,UAClB8pQ,EAAYh9Q,EAAMg9Q,UAClBztM,EAASvvE,EAAMuvE,OACf2tM,EAAMl9Q,EAAMqK,IACZrB,GAAa,OAA8BhJ,EAAO,CAAC,YAAa,YAAa,SAAU,QAEvF0+Q,EAAa,GACjBnvM,EAAOhoF,SAAQ,SAAUg3R,EAAUp5R,GACjC,IAAIw5R,EAAa3+Q,EAAMu+Q,GAGvB,UAFOv1Q,EAAWu1Q,GAEbI,GAA6B,KAAfA,EAAnB,CAIA,IAAIL,GAAQn5R,EAEZ,IAAI,QAASw5R,GAAa,CACxB,IAAIC,EAEAC,EAAkBP,EAAO,IAAM,IAAMC,EAAW,IAChDO,EAAWT,EAAmBC,EAAMC,EAAUI,EAAWz3Q,MAC7Dw3Q,EAAW50R,MAAK,QAAgB,MAAY80R,EAAc,IAAgBE,GAAYH,EAAWz3Q,MAA4B,KAApBy3Q,EAAWz3Q,KAAa03Q,EAAY,QAAUC,EAAkBF,EAAW37K,OAAS27K,EAAW37K,OAA8B,IAArB27K,EAAW37K,MAAa47K,EAAY,SAAWC,EAAkBF,EAAWjzQ,QAAUizQ,EAAWjzQ,QAAgC,IAAtBizQ,EAAWjzQ,OAAckzQ,IAAe5B,QAC/V,CACL,IAAI+B,EAAYV,EAAmBC,EAAMC,EAAUI,GAEnDD,EAAW50R,KAAKi1R,QAIfL,EAAWp5R,QACdo5R,EAAW50R,KAAK,OAGlB,IAAImgB,GAAU,QAAgB,IAAWiJ,EAAWwrQ,GAAa1B,GACjE,OAAO,kBAAoBE,GAAK,OAAS,GAAIl0Q,EAAY,CACvDkK,UAAWjJ,MAIfw0Q,EAAIpqQ,UAAYA,EAChBoqQ,EAAIvqQ,aAzDe,CACjB7J,IAAK,MACLklE,OApBc,CAAC,KAAM,KAAM,KAAM,KAAM,OA4EzC,2DC5EIyvM,iIAQA3qQ,GAAY,OAAe,GAAI,EAAA8kQ,WAAA,UAAsB,CACvDjpG,OAAQ,SACR/lK,SAAU,cAAoB,CAAC,YAAkB,UAAiB,WAClEE,IAAK,KACL6I,UAAW,SACX+rQ,OAAQ,SACRjC,UAAW,WACXvS,SAAU,cAAoB,CAAC,SAAgB,WAAkB,eAG/Dv2P,GAAe,OAAe,GAAI,EAAAilQ,WAAA,aAAyB,CAC7DjpG,QAAQ,EACRvxJ,QAAQ,EACRC,OAAO,EACPC,MAAM,EACNxU,IAAK,MACL5c,QAAS,gBAGPyxR,IAA+BF,EAAwB,IAA0B,eAA+B,aAAcA,EAAsB,cAA8B,gBAAiBA,EAAsB,cAA8B,aAAcA,EAAsB,aAA6B,WAAYA,GAMxU,SAASG,EAAUz8P,GACjB,OAAOA,EAAKwM,aAGd,IAAIy/I,EAEJ,SAAU2V,GAGR,SAAS3V,EAAS3uK,GAChB,IAAIvb,EASJ,OAPAA,EAAQ6/L,EAAW3/L,KAAKV,KAAM+b,IAAU/b,MAClCoyB,MAAQ,CACZzN,OAAQ,MAEV,CAAC,aAAc,YAAa,SAAU,YAAa,YAAYrhB,SAAQ,SAAUZ,GAC/ElC,EAAMkC,GAAQlC,EAAMkC,GAAMguB,MAAK,OAAuBlwB,OAEjDA,GAZT,OAAekqL,EAAU2V,GAezB,IAAIvd,EAAS4H,EAASxqL,UA6EtB,OA3EA4iL,EAAO7nJ,WAAa,SAAoBwD,EAAM08P,GAC5Cn7R,KAAK6+B,SAAS,CACZla,OAAQu2Q,EAAUz8P,KAEpBz+B,KAAK+b,MAAMkf,WAAWwD,EAAM08P,IAG9Br4G,EAAO5nJ,UAAY,SAAmBuD,EAAM08P,GAC1Cn7R,KAAK6+B,SAAS,CACZla,OAAQ,OAEV3kB,KAAK+b,MAAMmf,UAAUuD,EAAM08P,IAG7Br4G,EAAO3nJ,OAAS,SAAgBsD,GAC9Bz+B,KAAK6+B,SAAS,CACZla,OAAQu2Q,EAAUz8P,KAEpBz+B,KAAK+b,MAAMof,OAAOsD,IAGpBqkJ,EAAO1nJ,UAAY,SAAmBqD,GAEtBA,EAAKvE,aAEnBl6B,KAAK6+B,SAAS,CACZla,OAAQ,IAEV3kB,KAAK+b,MAAMqf,UAAUqD,IAGvBqkJ,EAAOznJ,SAAW,SAAkBoD,GAClCz+B,KAAK6+B,SAAS,CACZla,OAAQ,OAEV3kB,KAAK+b,MAAMsf,SAASoD,IAGtBqkJ,EAAOroJ,OAAS,WACd,IAAImtJ,EAAS5nL,KAETouP,EAAcpuP,KAAK+b,MACnBk9Q,EAAM7qC,EAAYhoO,IAClB6lK,EAASmiE,EAAYniE,OACrBh9J,EAAYm/N,EAAYn/N,UACxB+rQ,EAAS5sC,EAAY4sC,OACrBjC,EAAY3qC,EAAY2qC,UACxB7yQ,EAAWkoO,EAAYloO,SAEvBk1Q,GADWhtC,EAAYo4B,UACV,OAA8Bp4B,EAAa,CAAC,MAAO,SAAU,YAAa,SAAU,YAAa,WAAY,cAE1HzpO,EAAS3kB,KAAKoyB,MAAMzN,OACpB4X,GAAkB,QAAK6+P,EAAY,MACnC/E,GAAa,QAAK+E,EAAY,MAClC,OAAO,kBAAoB,EAAAlG,YAAY,OAAS,GAAI34P,EAAiB,CACnEC,GAAIyvJ,EACJhxJ,WAAYj7B,KAAKi7B,WACjBC,UAAWl7B,KAAKk7B,UAChBC,OAAQn7B,KAAKm7B,OACbC,UAAWp7B,KAAKo7B,UAChBC,SAAUr7B,KAAKq7B,YACb,SAAU9wB,GACZ,IAAI8wR,EA1FV,SAA4B9wR,GAC1B,OAAO0wR,EAA4B1wR,IAAW,WAyFtB+wR,CAAmB/wR,GACnCyb,GAAU,QAAgB,IAAWiJ,EAAWosQ,EAAeL,GAAU,mBAAoBjC,GAC7FxxQ,EAAmB,OAAX5C,EAAkB,KAAO,CACnCA,OAAQA,GAEV,OAAO,kBAAoBs0Q,GAAK,OAAS,GAAI5C,EAAY,CACvD9uQ,OAAO,OAAe,GAAI8uQ,EAAW9uQ,MAAO,GAAIA,GAChD0H,UAAWjJ,EACX+W,IAAK6qJ,EAAO7rK,MAAMyqQ,WAChBtgQ,OAIDwkK,EA7FT,CA8FE,EAAA8V,WAEF9V,EAASt6J,UAAYA,EACrBs6J,EAASz6J,aAAeA,EACxB,mJCzIIG,EAAY,CACdhK,IAAK,KACLm1Q,MAAO,cAAoB,CAAC,SAAgB,aAC5CtsQ,UAAW,WACX8pQ,UAAW,YAMTyC,EAAY,SAAmBz/Q,GACjC,IAAIkT,EAAYlT,EAAMkT,UAClB8pQ,EAAYh9Q,EAAMg9Q,UAClBwC,EAAQx/Q,EAAMw/Q,MACdtC,EAAMl9Q,EAAMqK,IACZrB,GAAa,OAA8BhJ,EAAO,CAAC,YAAa,YAAa,QAAS,QAEtF0/Q,EAAiB,aAEP,IAAVF,EACFE,EAAiB,kBACRF,IACTE,EAAiB,aAAeF,GAGlC,IAAIv1Q,GAAU,QAAgB,IAAWiJ,EAAWwsQ,GAAiB1C,GACrE,OAAO,kBAAoBE,GAAK,OAAS,GAAIl0Q,EAAY,CACvDkK,UAAWjJ,MAIfw1Q,EAAUprQ,UAAYA,EACtBorQ,EAAUvrQ,aA1BS,CACjB7J,IAAK,OA0BP,0LC1BIgK,EAAY,CACdsrQ,KAAM,SACNt2P,SAAU,SACV1H,UAAW,UAAgB,CAAC,KAAM,OAAQ,OAAQ,UAClDhL,MAAO,SACPu5J,OAAQ,SACR0vG,IAAK,SACL9gN,OAAQ,SACR+gN,UAAW,cAAoB,CAAC,SAAgB,UAAgB,CAAC,UAAW,aAC5E34Q,KAAM,WACNmD,IAAK,KACL0vI,OAAQ,SACR5vI,SAAU,SACV+I,UAAW,WACX8pQ,UAAW,WACX8C,SAAU,SACVC,mBAAoB,UAYlBC,EAAqB,CAAC,WAAgB,WAAgB,QAAa,UAAe,SAAc,WAEhGvuG,EAEJ,SAAUy4F,GAGR,SAASz4F,EAASzxK,GAChB,IAAIvb,EASJ,OAPAA,EAAQylR,EAAiBvlR,KAAKV,KAAM+b,IAAU/b,MACxCg8R,UAAYx7R,EAAMw7R,UAAUtrQ,MAAK,OAAuBlwB,IAC9DA,EAAMy7R,oBAAsBz7R,EAAMy7R,oBAAoBvrQ,MAAK,OAAuBlwB,IAClFA,EAAM8vC,cAAgB9vC,EAAM8vC,cAAc5f,MAAK,OAAuBlwB,IACtEA,EAAM07R,aAAe17R,EAAM07R,aAAaxrQ,MAAK,OAAuBlwB,IACpEA,EAAMs1J,OAASt1J,EAAMs1J,OAAOplI,MAAK,OAAuBlwB,IACxDA,EAAM27R,aAAe,gBACd37R,GAZT,OAAegtL,EAAUy4F,GAezB,IAAInjG,EAAS0K,EAASttL,UA0LtB,OAxLA4iL,EAAOs5G,gBAAkB,WACvB,MAAO,CACLtmI,OAAQ91J,KAAK81J,OACbm2B,OAAQjsL,KAAK+b,MAAMkwK,OACnBvuJ,UAAoC,SAAzB19B,KAAK+b,MAAM2hB,WAAwB19B,KAAK+b,MAAMsgR,OAAS,KAAOr8R,KAAK+b,MAAM2hB,UACpFm+P,SAAU77R,KAAK+b,MAAM8/Q,SACrBz2P,SAAUplC,KAAK+b,MAAMqpB,WAIzB09I,EAAOz+I,kBAAoB,WACzBrkC,KAAKs8R,eAGPx5G,EAAOzvI,mBAAqB,SAA4BC,GAClDtzC,KAAK+b,MAAMkwK,SAAW34I,EAAU24I,QAClCjsL,KAAKs8R,eAITx5G,EAAOx+I,qBAAuB,WAC5BtkC,KAAKk8R,gBAGPp5G,EAAOy5G,aAAe,WACpB,OAAOv8R,KAAKm8R,aAAan3P,SAG3B89I,EAAO05G,YAAc,WACnB,OAAIx8R,KAAKy8R,aACTz8R,KAAKy8R,WAAaz8R,KAAKu8R,eAAe/9Q,cAAc,oBADxBxe,KAAKy8R,YAKnC35G,EAAO45G,aAAe,WACpB,MAAO,GAAGxwR,MAAMxL,KAAKV,KAAKu8R,eAAe93P,iBAAiB,uBAG5Dq+I,EAAOk5G,UAAY,WACjB,IAAIp0G,EAAS5nL,KAEb,CAAC,QAAS,aAAc,SAASsD,SAAQ,SAAU4Q,GACjD,OAAOyD,SAASkG,iBAAiB3J,EAAO0zK,EAAOq0G,qBAAqB,OAIxEn5G,EAAOo5G,aAAe,WACpB,IAAIn0G,EAAS/nL,KAEb,CAAC,QAAS,aAAc,SAASsD,SAAQ,SAAU4Q,GACjD,OAAOyD,SAAS2I,oBAAoBpM,EAAO6zK,EAAOk0G,qBAAqB,OAI3En5G,EAAOm5G,oBAAsB,SAA6Bn2R,GACxD,IAAIA,GAAkB,IAAZA,EAAEm9B,QAA0B,UAAXn9B,EAAEwG,MAAoBxG,EAAEm9B,QAAU,UAA7D,CACA,IAAI1W,EAAYvsB,KAAKu8R,iBAEjBhwQ,EAAUgL,SAASzxB,EAAEqL,SAAWob,IAAczmB,EAAEqL,QAAsB,UAAXrL,EAAEwG,MAAoBxG,EAAEm9B,QAAU,WAIjGjjC,KAAK81J,OAAOhwJ,KAGdg9K,EAAOxyI,cAAgB,SAAuBxqC,GAC5C,IAAIkjL,EAAShpL,KAEb,IAAI,kBAAkBogB,KAAKta,EAAEqL,OAAOsa,WAAY,WAAiB3lB,EAAEm9B,OAA4C,aAAlCn9B,EAAEqL,OAAO2N,aAAa,SAA2B9e,KAAK+b,MAAM2/Q,UAI5F,IAAzCK,EAAmBr0R,QAAQ5B,EAAEm9B,QAAiBn9B,EAAEm9B,OAAS,IAAMn9B,EAAEm9B,OAAS,KAC5En9B,EAAEm7B,kBAGAjhC,KAAK+b,MAAMqpB,WAEXplC,KAAKw8R,gBAAkB12R,EAAEqL,UACtBnR,KAAK+b,MAAMkwK,QAAU,CAAC,WAAgB,WAAgB,QAAa,WAAevkL,QAAQ5B,EAAEm9B,QAAU,GACzGjjC,KAAK81J,OAAOhwJ,GACZ+K,YAAW,WACT,OAAOm4K,EAAO0zG,eAAe,GAAGh4P,YAEzB1kC,KAAK+b,MAAMkwK,QAAUnmL,EAAEm9B,QAAU,UAC1CjjC,KAAK81J,OAAOhwJ,IAIZ9F,KAAK+b,MAAMkwK,QAA4C,aAAlCnmL,EAAEqL,OAAO2N,aAAa,UAC7C,GAAI,CAAC,SAAc,UAAcpX,QAAQ5B,EAAEm9B,QAAU,EACnDjjC,KAAK81J,OAAOhwJ,GACZ9F,KAAKw8R,cAAc93P,aACd,GAAI,CAAC,WAAgB,YAAgBh9B,QAAQ5B,EAAEm9B,QAAU,EAC9Dn9B,EAAEqL,OAAO20E,QACT9lF,KAAKw8R,cAAc93P,aACd,GAAI,CAAC,UAAe,SAAah9B,QAAQ5B,EAAEm9B,QAAU,GAAK,CAAC,OAAY,QAAYv7B,QAAQ5B,EAAEm9B,QAAU,GAAKn9B,EAAE+7B,QAAS,CAC5H,IAAI86P,EAAa38R,KAAK08R,eAClBj1R,EAAQk1R,EAAWj1R,QAAQ5B,EAAEqL,QAE7B,UAAgBrL,EAAEm9B,OAAS,SAAen9B,EAAEm9B,OAASn9B,EAAE+7B,QACzDp6B,EAAkB,IAAVA,EAAcA,EAAQ,EAAIk1R,EAAWt7R,OAAS,GAC7C,YAAkByE,EAAEm9B,OAAS,SAAen9B,EAAEm9B,OAASn9B,EAAE+7B,WAClEp6B,EAAQA,IAAUk1R,EAAWt7R,OAAS,EAAI,EAAIoG,EAAQ,GAGxDk1R,EAAWl1R,GAAOi9B,aACb,GAAI,WAAiB5+B,EAAEm9B,MAAO,CACnC,IAAI25P,EAAc58R,KAAK08R,eAEvBE,EAAYA,EAAYv7R,OAAS,GAAGqjC,aAC/B,GAAI,YAAkB5+B,EAAEm9B,MACVjjC,KAAK08R,eAEX,GAAGh4P,aACX,GAAI5+B,EAAEm9B,OAAS,IAAMn9B,EAAEm9B,OAAS,GAKrC,IAJA,IAAI45P,EAAe78R,KAAK08R,eAEpBI,EAAczxR,OAAOC,aAAaxF,EAAEm9B,OAAOnzB,cAEtC5O,EAAI,EAAGA,EAAI27R,EAAax7R,OAAQH,GAAK,EAG5C,IAFkB27R,EAAa37R,GAAGwkG,aAAem3L,EAAa37R,GAAGwkG,YAAY,GAAG51F,iBAE5DgtR,EAAa,CAC/BD,EAAa37R,GAAGwjC,QAEhB,QAOVo+I,EAAOw5G,YAAc,WACft8R,KAAK+b,MAAMkwK,OACbjsL,KAAKg8R,YAELh8R,KAAKk8R,gBAITp5G,EAAOhtB,OAAS,SAAgBhwJ,GAC9B,OAAI9F,KAAK+b,MAAMqpB,SACNt/B,GAAKA,EAAEm7B,iBAGTjhC,KAAK+b,MAAM+5I,OAAOhwJ,IAG3Bg9K,EAAOroJ,OAAS,WACd,IAAIkgQ,EAAal8Q,EAEbs+Q,GAAQ,QAAK/8R,KAAK+b,MAAO,CAAC,SAAU,WAAY,WAAY,SAC5DkT,EAAY8tQ,EAAM9tQ,UAClB8pQ,EAAYgE,EAAMhE,UAClBr7P,EAAYq/P,EAAMr/P,UAClBuuJ,EAAS8wG,EAAM9wG,OACfv5J,EAAQqqQ,EAAMrqQ,MACdzP,EAAO85Q,EAAM95Q,KACb04Q,EAAMoB,EAAMpB,IACZG,EAAqBiB,EAAMjB,mBAC3BjhN,EAASkiN,EAAMliN,OACf+gN,EAAYmB,EAAMnB,UAClBx1Q,EAAM22Q,EAAM32Q,IACZmK,GAAQ,OAA8BwsQ,EAAO,CAAC,YAAa,YAAa,YAAa,SAAU,QAAS,OAAQ,MAAO,qBAAsB,SAAU,YAAa,QAEpK9D,EAAM7yQ,IAAQu1Q,EAAM,KAAO,OAC3BqB,GAAkB,EAElBlB,GACF,iBAAmB97R,KAAK+b,MAAMmK,SAAS,GAAGnK,MAAMmK,UAAU,SAAU+2Q,GAC9DA,GAAgBA,EAAalhR,MAAM8+D,SAAQmiN,GAAkB,MAIrE,IAAIh3Q,GAAU,QAAgB,IAAWiJ,EAAyB,SAAdyO,GAAwB,OAASA,KAAWi+P,IAAO9gN,IAAS,YAAkBihN,IAAsBkB,IAAkB,WAAmBrC,EAAc,IAAgB,eAAiBiB,GAAaA,EAAWjB,EAAY,aAAejoQ,EAAOioQ,EAAY,aAAe13Q,KAAUA,EAAM03Q,EAAY5mP,UAAYrhB,IAAUkpQ,EAAWjB,EAAYzxP,KAAO+iJ,EAAQ0uG,EAAY,YAAcgB,EAAKhB,IAAe5B,GACvc,OAAO,kBAAoB,EAAAt/H,EAAA,SAA0B,CACnD9zJ,MAAO3F,KAAKo8R,mBACX,kBAAoB,KAAS,KAAM,kBAAoBnD,GAAK,OAAS,GAAI1oQ,IAAQ9R,EAAO,IAAwB,iBAARw6Q,EAAmB,MAAQ,YAAcj5R,KAAKm8R,aAAc19Q,GAAO,CAC5KqnB,UAAW9lC,KAAKswC,cAChBrhB,UAAWjJ,QAIRwnK,EA1MT,CA2ME,eAEFA,EAASp9J,UAAYA,EACrBo9J,EAASv9J,aA5NU,CACjByrQ,MAAM,EACNzvG,QAAQ,EACRvuJ,UAAW,OACXi+P,KAAK,EACL9gN,QAAQ,EACR+gN,WAAW,EACXC,UAAU,EACVC,oBAAoB,GAqNtB,qEChPWoB,QAAkB,iBAAoB,0KCH7C9sQ,EAAY,CACdlK,SAAU,SACV20D,OAAQ,SACRz1C,SAAU,SACV2iN,QAAS,SACT3hO,IAAK,KACL/b,OAAQ,SACRw9B,QAAS,SACT5Y,UAAW,WACX8pQ,UAAW,WACXjjI,OAAQ,UAONqnI,EAEJ,SAAUlX,GAGR,SAASkX,EAAaphR,GACpB,IAAIvb,EAKJ,OAHAA,EAAQylR,EAAiBvlR,KAAKV,KAAM+b,IAAU/b,MACxC6nC,QAAUrnC,EAAMqnC,QAAQnX,MAAK,OAAuBlwB,IAC1DA,EAAM0kC,YAAc1kC,EAAM0kC,YAAYxU,MAAK,OAAuBlwB,IAC3DA,GART,OAAe28R,EAAclX,GAW7B,IAAInjG,EAASq6G,EAAaj9R,UAkE1B,OAhEA4iL,EAAOj7I,QAAU,SAAiB/hC,GAC5B9F,KAAK+b,MAAMqpB,UAAYplC,KAAK+b,MAAM1R,QAAUrK,KAAK+b,MAAMgsO,QACzDjiP,EAAEm7B,kBAIAjhC,KAAK+b,MAAM8rB,SACb7nC,KAAK+b,MAAM8rB,QAAQ/hC,GAGjB9F,KAAK+b,MAAM+5I,QACb91J,KAAKyuK,QAAQ3Y,OAAOhwJ,KAIxBg9K,EAAO59I,YAAc,WACnB,OAAIllC,KAAK+b,MAAMqpB,UAAYplC,KAAK+b,MAAM1R,QAAUrK,KAAK+b,MAAMgsO,QAClD,KAGF,KAGTjlE,EAAOroJ,OAAS,WACd,IAAI0K,EAAWnlC,KAAKklC,cAChB/e,EAAOgf,GAAY,EAAI,gBAAaz0B,EAEpCqsR,GAAQ,QAAK/8R,KAAK+b,MAAO,CAAC,WAC1BkT,EAAY8tQ,EAAM9tQ,UAClB8pQ,EAAYgE,EAAMhE,UAClBhxC,EAAUg1C,EAAMh1C,QAChBkxC,EAAM8D,EAAM32Q,IACZ/b,EAAS0yR,EAAM1yR,OACfwwE,EAASkiN,EAAMliN,OACf9+D,GAAQ,OAA8BghR,EAAO,CAAC,YAAa,YAAa,UAAW,MAAO,SAAU,WAEpG/2Q,GAAU,QAAgB,IAAWiJ,EAAW,CAClDmW,SAAUrpB,EAAMqpB,SAChB,iBAAkB2iN,IAAY19O,EAC9BwwE,OAAQA,EACR,kBAAmBxwE,EACnB,mBAAoB09O,IAClBgxC,GAYJ,MAVY,WAARE,IACE5uR,EACF4uR,EAAM,KACGlxC,EACTkxC,EAAM,MACGl9Q,EAAMjE,OACfmhR,EAAM,MAIH,kBAAoBA,GAAK,OAAS,CACvC3sR,KAAc,WAAR2sR,IAAqBl9Q,EAAM8rB,SAAW7nC,KAAK+b,MAAM+5I,QAAU,cAAWplJ,GAC3EqL,EAAO,CACRopB,SAAUA,EACVhf,KAAMA,EACN8I,UAAWjJ,EACX6hB,QAAS7nC,KAAK6nC,YAIXs1P,EA9ET,CA+EE,eAEFA,EAAa/sQ,UAAYA,EACzB+sQ,EAAaltQ,aAzFM,CACjB7J,IAAK,SACL0vI,QAAQ,GAwFVqnI,EAAar6E,YAAc,EAAArpD,EAC3B,0LCtGIrpI,EAAY,CACdhK,IAAK,KACLF,SAAU,oBACV8K,MAAO,SACPvB,KAAM,SACNi/J,UAAW,WACXz/J,UAAW,WACX8pQ,UAAW,WACXh4B,QAAS,SACTtb,cAAe,UAMb23C,EAAiB,CACnB3tQ,KAAM,CACJia,SAAS,IAGT2zP,EAAuB,CACzB39P,GAAI,MACJzO,KAAM,OACND,MAAO,QACP2O,KAAM,UAGJ29P,EAEJ,SAAUrX,GAGR,SAASqX,IACP,OAAOrX,EAAiBt/Q,MAAM3G,KAAMoB,YAAcpB,KA8DpD,OAjEA,OAAes9R,EAAcrX,GAMhBqX,EAAap9R,UAEnBu6B,OAAS,WACd,IAAIj6B,EAAQR,KAERouP,EAAcpuP,KAAK+b,MACnBkT,EAAYm/N,EAAYn/N,UACxB8pQ,EAAY3qC,EAAY2qC,UACxB/nQ,EAAQo9N,EAAYp9N,MACpB5K,EAAMgoO,EAAYhoO,IAClBqJ,EAAO2+N,EAAY3+N,KACnBi/J,EAAY0/D,EAAY1/D,UACxBqyE,EAAU3S,EAAY2S,QACtBtb,EAAgB2I,EAAY3I,cAC5Bl1N,GAAQ,OAA8B69N,EAAa,CAAC,YAAa,YAAa,QAAS,MAAO,OAAQ,YAAa,UAAW,kBAE9HpoO,GAAU,QAAgB,IAAWiJ,EAAW,gBAAiB,CACnE,sBAAuB+B,EACvBkY,KAAMlpC,KAAKyuK,QAAQwd,SACjB8sG,GACAE,EAAM7yQ,EAEV,GAAI26O,GAAW/gQ,KAAKyuK,QAAQwd,SAAWjsL,KAAKyuK,QAAQotH,SAAU,CAC5D,IAEI0B,GAFYF,EAAqBr9R,KAAKyuK,QAAQ/wI,YAAc,UAE/B,KADjB1M,EAAQ,MAAQ,SAE5BwsQ,EAAkB/tQ,EAA2Di/J,GAApD,OAAe,GAAIA,EAAW,GAAI0uG,GAC3DK,IAAwBh4C,EAC5B,OAAO,kBAAoB,KAAQ,CACjCj3D,UAAW+uG,EACX7uG,UAAW8uG,EACX/3C,cAAeg4C,IACd,SAAUh/Q,GACX,IAAIse,EAAMte,EAAKse,IACXxV,EAAQ9I,EAAK8I,MACbinK,EAAY/vK,EAAK+vK,UACrB,OAAO,kBAAoByqG,GAAK,OAAS,CACvC9zP,SAAU,KACVhf,KAAM,OACN4W,IAAKA,EACLxV,MAAOA,GACNgJ,EAAO,CACR,eAAgB/vB,EAAMiuK,QAAQwd,OAC9Bh9J,UAAWjJ,EACX,cAAewoK,QAKrB,OAAO,kBAAoByqG,GAAK,OAAS,CACvC9zP,SAAU,KACVhf,KAAM,QACLoK,EAAO,CACR,eAAgBvwB,KAAKyuK,QAAQwd,OAC7Bh9J,UAAWjJ,EACX,cAAeuK,EAAMi+J,cAIlB8uG,EAlET,CAmEE,eAGFA,EAAaltQ,UAAYA,EACzBktQ,EAAartQ,aAzFM,CACjB7J,IAAK,MACLqJ,MAAM,GAwFR6tQ,EAAax6E,YAAc,EAAArpD,EAC3B,gRCvGIikI,EAEJ,SAAUzX,GAGR,SAASyX,IAGP,IAFA,IAAIl9R,EAEKkqB,EAAOtpB,UAAUC,OAAQ2N,EAAO,IAAItP,MAAMgrB,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC/E3b,EAAK2b,GAAQvpB,UAAUupB,GAUzB,OAPAnqB,EAAQylR,EAAiBvlR,KAAKiG,MAAMs/Q,EAAkB,CAACjmR,MAAM8Z,OAAO9K,KAAUhP,KAE9E,IAAgB,IAAuBQ,GAAQ,cAAc,SAAUi+B,IACrE,QAAOj+B,EAAMub,MAAMyqQ,SAAU/nP,IAC7B,QAAWj+B,EAAMub,MAAMoqQ,iBAAkB1nP,MAGpCj+B,EAhBT,IAAek9R,EAAgBzX,GAmB/B,IAAInjG,EAAS46G,EAAex9R,UAa5B,OAXA4iL,EAAOx+I,qBAAuB,YAC5B,QAAOtkC,KAAK+b,MAAMyqQ,SAAU,OAG9B1jG,EAAOroJ,OAAS,WAEd,OADA,IAAQqG,QAAQ9gC,KAAK+b,MAAMoqQ,kBAAmB,qEACvC,QAAYnmR,KAAK+b,MAAMmK,SAAvB,CAAiC,CACtC6W,IAAK/8B,KAAK29R,cAIPD,EAjCT,CAkCE,aAEa,SAASE,EAAU7hR,GAChC,OAAO,gBAAoB67L,EAAA,YAA4C,MAAM,SAAUuuE,GACrF,OAAO,gBAAoBuX,EAAgB,IAAS,CAClDvX,iBAAkBA,GACjBpqQ,wCCxCHqU,EAAY,CACdytQ,MAAO,SACPp/L,MAAO,WACPv4E,SAAU,SACV+I,UAAW,WACX8pQ,UAAW,WACX3zP,SAAU,SACVyC,QAAS,SACT,gBAAiB,SACjB18B,MAAO,SACPib,IAAK,KACLu1Q,IAAK,UAOHmC,EAEJ,SAAU7X,GAGR,SAAS6X,EAAe/hR,GACtB,IAAIvb,EAIJ,OAFAA,EAAQylR,EAAiBvlR,KAAKV,KAAM+b,IAAU/b,MACxC6nC,QAAUrnC,EAAMqnC,QAAQnX,MAAK,OAAuBlwB,IACnDA,GAPT,OAAes9R,EAAgB7X,GAU/B,IAAInjG,EAASg7G,EAAe59R,UA+E5B,OA7EA4iL,EAAOj7I,QAAU,SAAiB/hC,GAC5B9F,KAAK+b,MAAMqpB,UAAYplC,KAAKyuK,QAAQrpI,SACtCt/B,EAAEm7B,kBAIAjhC,KAAK+b,MAAM4/Q,MAAQ37R,KAAK+b,MAAMqK,KAChCtgB,EAAEm7B,iBAGAjhC,KAAK+b,MAAM8rB,SACb7nC,KAAK+b,MAAM8rB,QAAQ/hC,GAGrB9F,KAAKyuK,QAAQ3Y,OAAOhwJ,KAGtBg9K,EAAOroJ,OAAS,WACd,IAsBIw+P,EAtBArxG,EAAS5nL,KAETouP,EAAcpuP,KAAK+b,MACnBkT,EAAYm/N,EAAYn/N,UACxBwvE,EAAQ2vJ,EAAY3vJ,MACpBs6L,EAAY3qC,EAAY2qC,UACxB8E,EAAQzvC,EAAYyvC,MACpB1yR,EAAQijP,EAAYjjP,MACpBwwR,EAAMvtC,EAAYutC,IAClBv1Q,EAAMgoO,EAAYhoO,IAClBogQ,EAAWp4B,EAAYo4B,SACvBzqQ,GAAQ,OAA8BqyO,EAAa,CAAC,YAAa,QAAS,YAAa,QAAS,QAAS,MAAO,MAAO,aAEvHmrC,EAAYx9Q,EAAM,eAAiB,kBACnCiK,GAAU,QAAgB,IAAWiJ,EAAW,CAClD,kBAAmB4uQ,GAAS1yR,EAC5B,wBAAyBA,EACzB,WAAYwwR,IACV5C,GACA7yQ,EAAWnK,EAAMmK,UAAY,kBAAoB,OAAQ,CAC3D+I,UAAW,WACVsqQ,GAcH,OAXIoC,IAAQv1Q,GACV6yQ,EAAM,IACNl9Q,EAAMjE,KAAO,KACHsO,EAKV6yQ,EAAM7yQ,GAJN6yQ,EAAMt+M,EAAA,EACN5+D,EAAM0iF,MAAQA,EACd1iF,EAAMg9Q,UAAYA,GAKhB/4R,KAAKyuK,QAAQotH,SACR,kBAAoB5C,GAAK,OAAS,GAAIl9Q,EAAO,CAClDkT,UAAWjJ,EACX6hB,QAAS7nC,KAAK6nC,QACd,gBAAiB7nC,KAAKyuK,QAAQwd,OAC9B/lK,SAAUA,KAIP,kBAAoB03Q,EAAW,CACpCpX,SAAUA,IACT,SAAU/nQ,GACX,IAAIC,EAEAqe,EAAMte,EAAKse,IACf,OAAO,kBAAoBk8P,GAAK,OAAS,GAAIl9Q,IAAQ2C,EAAQ,IAAyB,iBAARu6Q,EAAmB,MAAQ,YAAcl8P,EAAKre,GAAQ,CAClIuQ,UAAWjJ,EACX6hB,QAAS+/I,EAAO//I,QAChB,gBAAiB+/I,EAAOnZ,QAAQwd,OAChC/lK,SAAUA,SAKT43Q,EA1FT,CA2FE,eAEFA,EAAe1tQ,UAAYA,EAC3B0tQ,EAAe7tQ,aArGI,CACjB,iBAAiB,EACjBwuE,MAAO,aAoGTq/L,EAAeh7E,YAAco6E,EAAAzjI,EAC7B,uKCtHIrpI,GAAY,OAAe,GAAI,EAAA8kQ,WAAA,UAAsB,CACvDhvQ,SAAU,cAAoB,CAAC,YAAkB,UAAiB,WAClEE,IAAK,KACLgzQ,UAAW,WACX2E,gBAAiB,WACjB9uQ,UAAW,WACX8pQ,UAAW,WACXvS,SAAU,cAAoB,CAAC,WAAkB,WAAkB,aAGjEv2P,GAAe,OAAe,GAAI,EAAAilQ,WAAA,aAAyB,CAC7D9uQ,IAAK,MACLgzQ,UAAW,OACX2E,gBAAiB,OACjBv0R,QAAS,UACTkxB,QAAQ,EACRC,OAAO,EACPC,MAAM,EACN4B,IAAI,IAGN,SAASgB,EAAKzhB,GACZ,IAAIk9Q,EAAMl9Q,EAAMqK,IACZgzQ,EAAYr9Q,EAAMq9Q,UAClB2E,EAAkBhiR,EAAMgiR,gBACxB9uQ,EAAYlT,EAAMkT,UAClB8pQ,EAAYh9Q,EAAMg9Q,UAClB7yQ,EAAWnK,EAAMmK,SACjBsgQ,EAAWzqQ,EAAMyqQ,SACjB4U,GAAa,OAA8Br/Q,EAAO,CAAC,MAAO,YAAa,kBAAmB,YAAa,YAAa,WAAY,aAEhIwgB,GAAkB,QAAK6+P,EAAY,MACnC/E,GAAa,QAAK+E,EAAY,MAClC,OAAO,kBAAoB,EAAAlG,WAAY34P,GAAiB,SAAUhyB,GAChE,IAAIm3D,EAAsB,YAAXn3D,EACXyb,GAAU,QAAgB,IAAWiJ,EAAWmqQ,EAAW13N,GAAYq8N,GAAkBhF,GAC7F,OAAO,kBAAoBE,GAAK,OAAS,CACvChqQ,UAAWjJ,GACVqwQ,EAAY,CACbt5P,IAAKypP,IACHtgQ,MAIRsX,EAAKpN,UAAYA,EACjBoN,EAAKvN,aAAeA,EACpB,uKC/CIG,EAAY,CACdlK,SAAU,SACV83Q,OAAQ,SACR53Q,IAAK,KACLogQ,SAAU,cAAoB,CAAC,WAAkB,SAAgB,aACjEv3P,UAAW,WACX8pQ,UAAW,YAMTkF,EAEJ,SAAU59F,GAGR,SAAS49F,EAAKliR,GACZ,IAAIvb,EAKJ,OAHAA,EAAQ6/L,EAAW3/L,KAAKV,KAAM+b,IAAU/b,MAClCk+R,OAAS19R,EAAM09R,OAAOxtQ,MAAK,OAAuBlwB,IACxDA,EAAMqwF,OAASrwF,EAAMqwF,OAAOngE,MAAK,OAAuBlwB,IACjDA,GART,OAAey9R,EAAM59F,GAWrB,IAAIvd,EAASm7G,EAAK/9R,UAgClB,OA9BA4iL,EAAOo7G,OAAS,SAAgBnhQ,GAC1B/8B,KAAK+b,MAAMyqQ,UACbxmR,KAAK+b,MAAMyqQ,SAASzpP,GAGtB/8B,KAAK+8B,IAAMA,GAGb+lJ,EAAOjyF,OAAS,WACV7wF,KAAK+8B,KACP/8B,KAAK+8B,IAAI8zD,UAIbiyF,EAAOroJ,OAAS,WACd,IAAI2zN,EAAcpuP,KAAK+b,MACnBkT,EAAYm/N,EAAYn/N,UACxB8pQ,EAAY3qC,EAAY2qC,UACxBiF,EAAS5vC,EAAY4vC,OACrB/E,EAAM7qC,EAAYhoO,IAClBogQ,EAAWp4B,EAAYo4B,SACvBzhQ,GAAa,OAA8BqpO,EAAa,CAAC,YAAa,YAAa,SAAU,MAAO,aAEpGpoO,GAAU,QAAgB,IAAWiJ,IAAW+uQ,GAAS,eAAwBjF,GACrF,OAAO,kBAAoBE,GAAK,OAAS,GAAIl0Q,EAAY,CACvDgY,IAAKypP,EACLv3P,UAAWjJ,MAIRi4Q,EA5CT,CA6CE,EAAAz9F,WAEFy9F,EAAK7tQ,UAAYA,EACjB6tQ,EAAKhuQ,aAtDc,CACjB7J,IAAK,QAsDP,mJCjEIgK,EAAY,CACdlK,SAAU,SACVm4C,IAAK,SACL0uJ,MAAO,SACPixE,OAAQ,SACR54P,SAAU,SACVhf,IAAK,KACL6I,UAAW,WACX8pQ,UAAW,YAMToF,EAAY,SAAmBpiR,GACjC,IAAIkT,EAAYlT,EAAMkT,UAClB8pQ,EAAYh9Q,EAAMg9Q,UAClB16N,EAAMtiD,EAAMsiD,IACZj5B,EAAWrpB,EAAMqpB,SACjB2nL,EAAQhxM,EAAMgxM,MACdixE,EAASjiR,EAAMiiR,OACf/E,EAAMl9Q,EAAMqK,IACZrB,GAAa,OAA8BhJ,EAAO,CAAC,YAAa,YAAa,MAAO,WAAY,QAAS,SAAU,QAEnHiK,GAAU,QAAgB,IAAWiJ,IAAWovC,GAAM,MAAe0uJ,EAAQ,aAAe,gBAAcA,IAASixE,IAAS,uBAA6BjxE,IAAS3nL,IAAW,YAAqB2zP,GAMtM,MAJY,aAARE,IACFl0Q,EAAWqgB,SAAWA,GAGjB,kBAAoB6zP,GAAK,OAAS,GAAIl0Q,EAAY,CACvDkK,UAAWjJ,MAIfm4Q,EAAU/tQ,UAAYA,EACtB+tQ,EAAUluQ,aA1BS,CACjB7J,IAAK,OA0BP,uKCjCIgK,EAAY,CACdlK,SAAU,SACV5Z,KAAM,WACN2W,KAAM,WACNm7Q,OAAQ,WACRn+P,MAAO,SACP6zH,QAAS,SACT1tI,IAAK,KACLogQ,SAAU,cAAoB,CAAC,WAAkB,SAAgB,aACjE6X,UAAW,SACXC,MAAO,SACPrvQ,UAAW,WACX8pQ,UAAW,YAMTz5O,EAEJ,SAAU2mO,GAGR,SAAS3mO,EAAMvjC,GACb,IAAIvb,EAKJ,OAHAA,EAAQylR,EAAiBvlR,KAAKV,KAAM+b,IAAU/b,MACxCk+R,OAAS19R,EAAM09R,OAAOxtQ,MAAK,OAAuBlwB,IACxDA,EAAMkkC,MAAQlkC,EAAMkkC,MAAMhU,MAAK,OAAuBlwB,IAC/CA,GART,OAAe8+C,EAAO2mO,GAWtB,IAAInjG,EAASxjI,EAAMp/C,UA0EnB,OAxEA4iL,EAAOo7G,OAAS,SAAgBnhQ,GAC1B/8B,KAAK+b,MAAMyqQ,UACbxmR,KAAK+b,MAAMyqQ,SAASzpP,GAGtB/8B,KAAK+8B,IAAMA,GAGb+lJ,EAAOp+I,MAAQ,WACT1kC,KAAK+8B,KACP/8B,KAAK+8B,IAAI2H,SAIbo+I,EAAOroJ,OAAS,WACd,IAAI2zN,EAAcpuP,KAAK+b,MACnBkT,EAAYm/N,EAAYn/N,UACxB8pQ,EAAY3qC,EAAY2qC,UACxBzsR,EAAO8hP,EAAY9hP,KACnB8xR,EAAShwC,EAAYgwC,OACrBn+P,EAAQmuN,EAAYnuN,MACpB6zH,EAAUs6F,EAAYt6F,QACtB1tI,EAAMgoO,EAAYhoO,IAClBk4Q,EAAQlwC,EAAYkwC,MACpBD,EAAYjwC,EAAYiwC,UACxB7X,EAAWp4B,EAAYo4B,SACvBzhQ,GAAa,OAA8BqpO,EAAa,CAAC,YAAa,YAAa,OAAQ,SAAU,QAAS,UAAW,MAAO,QAAS,YAAa,aAEtJmwC,EAAa,CAAC,QAAS,YAAY72R,QAAQ4E,IAAS,EACpDkyR,EAAe,IAAItyQ,OAAO,MAAO,KAIjC+sQ,EAAM7yQ,IADiB,WAAT9Z,GADW,aAATA,EAE6BA,EAAO,SACpDmyR,EAAmB,eAEnBJ,GACFI,GAAsC,aACtCxF,EAAM7yQ,GAAO,SARU,SAAT9Z,EAUdmyR,GAAsC,QAC7BF,IAEPE,EADEH,EACiB,KAEA,oBAInBv5Q,EAAW9B,MAAQu7Q,EAAap+Q,KAAK2E,EAAW9B,SAClD,QAAS,oFACTm7Q,EAASr5Q,EAAW9B,YACb8B,EAAW9B,MAGpB,IAAI+C,GAAU,QAAgB,IAAWiJ,EAAW6kI,GAAW,aAAc7zH,GAAS,aAAYm+P,GAAS,gBAAkBA,EAAgBK,GAAmB1F,GAWhK,OATY,UAARE,GAAmB7yQ,GAAsB,mBAARA,KACnCrB,EAAWzY,KAAOA,GAGhByY,EAAWmB,WAAcm4Q,GAAsB,WAAT/xR,GAAoC,iBAAR2sR,GAA4B,WAARA,KACxF,QAAS,yBAA4B3sR,EAAO,6EACrCyY,EAAWmB,UAGb,kBAAoB+yQ,GAAK,OAAS,GAAIl0Q,EAAY,CACvDgY,IAAKypP,EACLv3P,UAAWjJ,MAIRs5B,EAtFT,CAuFE,eAEFA,EAAMlvB,UAAYA,EAClBkvB,EAAMrvB,aAhGa,CACjB3jB,KAAM,QAgGR,mJCnHI8jB,EAAY,CACdhK,IAAK,KACLnD,KAAM,WACNgM,UAAW,WACX8pQ,UAAW,YAMT2F,EAAa,SAAoB3iR,GACnC,IAAIkT,EAAYlT,EAAMkT,UAClB8pQ,EAAYh9Q,EAAMg9Q,UAClBE,EAAMl9Q,EAAMqK,IACZnD,EAAOlH,EAAMkH,KACb8B,GAAa,OAA8BhJ,EAAO,CAAC,YAAa,YAAa,MAAO,SAEpFiK,GAAU,QAAgB,IAAWiJ,EAAW,cAAehM,EAAO,eAAiBA,EAAO,MAAO81Q,GACzG,OAAO,kBAAoBE,GAAK,OAAS,GAAIl0Q,EAAY,CACvDkK,UAAWjJ,MAIf04Q,EAAWtuQ,UAAYA,EACvBsuQ,EAAWzuQ,aAlBQ,CACjB7J,IAAK,OAkBP,mJCxBI4zQ,EAAqB,cAAoB,CAAC,WAAkB,aAC5D1yO,EAAc,cAAoB,CAAC,WAAkB,WAAkB,UAAgB,CACzFrkC,KAAM+2Q,EACNj7K,MAAOi7K,EACPvyQ,OAAQuyQ,MAEN5pQ,EAAY,CACdlK,SAAU,SACV2lE,OAAQ,SACRkhI,MAAO,SACP9pM,KAAM,WACN0rO,IAAK,WACLvoO,IAAK,KACL6I,UAAW,WACX8pQ,UAAW,WACXkB,GAAI3yO,EACJ4yO,GAAI5yO,EACJu7M,GAAIv7M,EACJooN,GAAIpoN,EACJ6yO,GAAI7yO,EACJgkC,OAAQ,WAON8uM,EAAqB,SAA4BC,EAAMC,EAAUC,GACnE,OAAgB,IAAZA,GAAgC,KAAZA,EACfF,EAAO,MAAQ,OAASC,EACV,SAAZC,EACFF,EAAO,WAAa,OAASC,EAAW,QAG1CD,EAAO,OAASE,EAAU,OAASD,EAAW,IAAMC,GAGzDoE,EAAQ,SAAe5iR,GACzB,IAAIkT,EAAYlT,EAAMkT,UAClB8pQ,EAAYh9Q,EAAMg9Q,UAClBltM,EAAS9vE,EAAM8vE,OACfP,EAASvvE,EAAMuvE,OACf2tM,EAAMl9Q,EAAMqK,IACZ2mM,EAAQhxM,EAAMgxM,MACd9pM,EAAOlH,EAAMkH,KACbod,EAAUtkB,EAAM4yO,IAChB5pO,GAAa,OAA8BhJ,EAAO,CAAC,YAAa,YAAa,SAAU,SAAU,MAAO,QAAS,OAAQ,QAEzH0+Q,EAAa,GACjBnvM,EAAOhoF,SAAQ,SAAUg3R,EAAUp5R,GACjC,IAAIw5R,EAAa3+Q,EAAMu+Q,GAGvB,UAFOv1Q,EAAWu1Q,GAEbI,GAA6B,KAAfA,EAAnB,CAIA,IACIG,EADAR,GAAQn5R,EAGZ,IAAI,QAASw5R,GAAa,CACxB,IAAIC,EAEAC,EAAkBP,EAAO,IAAM,IAAMC,EAAW,IACpDO,EAAWT,EAAmBC,EAAMC,EAAUI,EAAWz3Q,MACzDw3Q,EAAW50R,MAAK,QAAgB,MAAY80R,EAAc,IAAgBE,GAAYH,EAAWz3Q,MAA4B,KAApBy3Q,EAAWz3Q,KAAa03Q,EAAY,QAAUC,EAAkBF,EAAW37K,OAAS27K,EAAW37K,OAA8B,IAArB27K,EAAW37K,MAAa47K,EAAY,SAAWC,EAAkBF,EAAWjzQ,QAAUizQ,EAAWjzQ,QAAgC,IAAtBizQ,EAAWjzQ,OAAckzQ,KAAgB5B,QAErW8B,EAAWT,EAAmBC,EAAMC,EAAUI,GAC9CD,EAAW50R,KAAKg1R,OAGpB,IAAI70Q,GAAU,QAAgB,IAAWiJ,IAAW48D,GAAS,YAAmBkhI,GAAQ,qBAA4B9pM,GAAO,kBAAoBA,EAAcw3Q,IAAYA,EAAWp5R,QAAS,kBAA2B03R,GACxN,OAAO,kBAAoBE,GAAK,OAAS,CACvC54P,QAASA,GACRtb,EAAY,CACbkK,UAAWjJ,MAIf24Q,EAAMvuQ,UAAYA,EAClBuuQ,EAAM1uQ,aA1Da,CACjB7J,IAAK,QACLklE,OAzBc,CAAC,KAAM,KAAM,KAAM,KAAM,OAkFzC,0LCnFIl7D,EAAY,CACdlK,SAAU,oBACVuY,KAAM,SAGJ2lP,EAEJ,SAAU6B,GAGR,SAAS7B,IACP,OAAO6B,EAAiBt/Q,MAAM3G,KAAMoB,YAAcpB,MAHpD,OAAeokR,EAAQ6B,GAMvB,IAAInjG,EAASshG,EAAOlkR,UAuBpB,OArBA4iL,EAAOx+I,qBAAuB,WACxBtkC,KAAK4+R,aACPjnR,SAASjT,KAAKi4D,YAAY38D,KAAK4+R,aAGjC5+R,KAAK4+R,YAAc,MAGrB97G,EAAOroJ,OAAS,WACd,OAAK,MAIAz6B,KAAK+b,MAAM0iB,MAASz+B,KAAK4+R,cAC5B5+R,KAAK4+R,YAAcjnR,SAASE,cAAc,OAC1CF,SAASjT,KAAKqwD,YAAY/0D,KAAK4+R,cAG1B,iBAAsB5+R,KAAK+b,MAAMmK,SAAUlmB,KAAK+b,MAAM0iB,MAAQz+B,KAAK4+R,cARjE,MAWJxa,EA9BT,CA+BE,eAEFA,EAAOh0P,UAAYA,EACnB,wBCnCA,SAASxT,KAET,IAAIiiR,EAAgB,UAAgBrhQ,EAAA,aAChC,EAAY,CACdyuJ,OAAQ,SACRo7E,UAAW,SACXy3B,SAAU,SACVxkO,WAAY,SACZr3C,KAAM,WACN6yI,OAAQ,SACRivB,SAAU,SACV5+J,KAAM,WACN44Q,WAAY,WACZxvG,SAAU,cAAoB,CAAC,SAAgB,UAAgB,CAAC,aAChEv0J,QAAS,SACTG,OAAQ,SACR86I,SAAU,SACVI,SAAU,SACVnwJ,SAAU,SACV+I,UAAW,WACX+vQ,cAAe,WACfC,eAAgB,WAChBC,kBAAmB,WACnBC,iBAAkB,WAClBC,SAAU,SACVpG,KAAM,SACND,UAAW,WACXnoP,OAAQ,cAAoB,CAAC,WAAkB,aAC/CyuP,mBAAoBR,EACpBS,gBAAiBT,EACjBrY,SAAU,cAAoB,CAAC,WAAkB,WAAkB,WACnE+Y,eAAgB,SAChBC,sBAAuB,UAErBC,EAAclgS,OAAO6K,KAAK,GAC1B6lB,EAAe,CACjBg8J,QAAQ,EACRo7E,WAAW,EACXy3B,UAAU,EACVxkO,YAAY,EACZn0C,KAAM,SACNopK,UAAU,EACVxK,UAAU,EACVn0I,OAAQ,KACRooP,MAAM,EACN/iH,SAAUr5J,EACVy5J,SAAUz5J,EACV0iR,gBAAiB,CACf91R,QAAS,YAEX61R,mBAAoB,CAClB/jQ,cAAc,EACd9xB,QAAS,WAGX+1R,gBAAgB,EAChBC,uBAAuB,GAGrBrvG,EAEJ,SAAU81F,GAGR,SAAS91F,EAAMp0K,GACb,IAAIvb,EAmBJ,OAjBAA,EAAQylR,EAAiBvlR,KAAKV,KAAM+b,IAAU/b,MACxCw6B,SAAW,KACjBh6B,EAAMk/R,qBAAuB,KAC7Bl/R,EAAMm/R,qBAAuBn/R,EAAMm/R,qBAAqBjvQ,MAAK,OAAuBlwB,IACpFA,EAAMo/R,oBAAsBp/R,EAAMo/R,oBAAoBlvQ,MAAK,OAAuBlwB,IAClFA,EAAMq/R,wBAA0Br/R,EAAMq/R,wBAAwBnvQ,MAAK,OAAuBlwB,IAC1FA,EAAMs/R,aAAet/R,EAAMs/R,aAAapvQ,MAAK,OAAuBlwB,IACpEA,EAAMu/R,8BAAgCv/R,EAAMu/R,8BAA8BrvQ,MAAK,OAAuBlwB,IACtGA,EAAMw/R,UAAYx/R,EAAMw/R,UAAUtvQ,MAAK,OAAuBlwB,IAC9DA,EAAMy1K,SAAWz1K,EAAMy1K,SAASvlJ,MAAK,OAAuBlwB,IAC5DA,EAAM61K,SAAW71K,EAAM61K,SAAS3lJ,MAAK,OAAuBlwB,IAC5DA,EAAMy/R,sBAAwBz/R,EAAMy/R,sBAAsBvvQ,MAAK,OAAuBlwB,IACtFA,EAAM0/R,8BAAgC1/R,EAAM0/R,8BAA8BxvQ,MAAK,OAAuBlwB,IACtGA,EAAM4xB,MAAQ,CACZ65J,QAAQ,EACRk0G,6BAA6B,GAExB3/R,GAtBT,OAAe2vL,EAAO81F,GAyBtB,IAAInjG,EAASqN,EAAMjwL,UA2UnB,OAzUA4iL,EAAOz+I,kBAAoB,WACzB,IAAI+pN,EAAcpuP,KAAK+b,MACnBkwK,EAASmiE,EAAYniE,OACrBo7E,EAAYjZ,EAAYiZ,UACxBrsO,EAAUozN,EAAYpzN,QAEtBixJ,IACFjsL,KAAK8oM,OACL9oM,KAAK6+B,SAAS,CACZotJ,QAAQ,IAGNo7E,GACFrnQ,KAAKogS,YAILplQ,GACFA,IAGFh7B,KAAKopR,YAAa,GAGpBtmG,EAAOzvI,mBAAqB,SAA4BC,EAAWC,GACjE,GAAIvzC,KAAK+b,MAAMkwK,SAAW34I,EAAU24I,OAMlC,OALAjsL,KAAK8oM,YACL9oM,KAAK6+B,SAAS,CACZotJ,QAAQ,IAORjsL,KAAK+b,MAAMsrP,WAAarnQ,KAAKoyB,MAAM65J,SAAW14I,EAAU04I,QAC1DjsL,KAAKogS,WAGHpgS,KAAKw6B,UAAY8Y,EAAU1C,SAAW5wC,KAAK+b,MAAM60B,SACnD5wC,KAAKw6B,SAASjT,MAAMqpB,OAAS5wC,KAAK+b,MAAM60B,SAI5CkyI,EAAOx+I,qBAAuB,WAC5BtkC,KAAKkgS,gCAEDlgS,KAAK+b,MAAMof,QACbn7B,KAAK+b,MAAMof,SAGTn7B,KAAKw6B,WACPx6B,KAAK+jC,UAED/jC,KAAK+b,MAAMkwK,QACbjsL,KAAK0T,SAIT1T,KAAKopR,YAAa,GAGpBtmG,EAAO7M,SAAW,SAAkBx3I,EAAM08P,GACxCn7R,KAAK+b,MAAMk6J,YACVj2K,KAAK+b,MAAMujR,gBAAgBpkQ,WAAate,GAAM6hB,EAAM08P,IAGvDr4G,EAAOzM,SAAW,SAAkB53I,GAClC,IAAI8gQ,EAAiBv/R,KAAK+b,MAAMwjR,eAEhCv/R,KAAK+b,MAAMs6J,YACVr2K,KAAK+b,MAAMujR,gBAAgBjkQ,UAAYze,GAAM6hB,GAE1C8gQ,GACFv/R,KAAK+jC,UAGP/jC,KAAK0T,QAED1T,KAAKopR,YACPppR,KAAK6+B,SAAS,CACZotJ,QAAQ,KAKdnJ,EAAOs9G,SAAW,WACZpgS,KAAKowL,SAAWpwL,KAAKowL,QAAQriJ,YAAuD,mBAAlC/tC,KAAKowL,QAAQriJ,WAAWrJ,OAC5E1kC,KAAKowL,QAAQriJ,WAAWrJ,SAI5Bo+I,EAAO68G,qBAAuB,WAC5B,OAAO3/R,KAAKw6B,SAASiK,iBAAiB,UAAuB,QAG/Dq+I,EAAOu9G,gBAAkB,WACvB,IAAIC,EACAC,EAAoBvgS,KAAK2/R,uBAE7B,IACEW,EAAe3oR,SAASg9B,cACxB,MAAOztC,GACPo5R,EAAeC,EAAkB,GAGnC,OAAOD,GAITx9G,EAAO88G,oBAAsB,SAA6B95R,GACxD,GAAIA,EAAEqL,SAAWnR,KAAKwgS,kBAAmB,CACvC16R,EAAEuwC,kBACF,IAAIk5I,EAAWvvL,KAAKowL,QAAUpwL,KAAKowL,QAAQriJ,WAAa,KAMxD,GAJIwhJ,GAAYzpL,EAAEqL,SAAWo+K,GAAoC,WAAxBvvL,KAAK+b,MAAMwzK,UAClDvvL,KAAK+/R,iCAGF//R,KAAK+b,MAAMkwK,SAAkC,IAAxBjsL,KAAK+b,MAAMwzK,SAAmB,OAEpDA,GAAYzpL,EAAEqL,SAAWo+K,GAAYvvL,KAAK+b,MAAM+5I,QAClD91J,KAAK+b,MAAM+5I,OAAOhwJ,KAKxBg9K,EAAOk9G,UAAY,SAAmBl6R,GACpC,GAAgB,IAAZA,EAAEm9B,MAAN,CACA,IAAIs9P,EAAoBvgS,KAAK2/R,uBACzBc,EAAiBF,EAAkBl/R,OACvC,GAAuB,IAAnBo/R,EAAJ,CAIA,IAHA,IAAIH,EAAetgS,KAAKqgS,kBACpB73P,EAAe,EAEVtnC,EAAI,EAAGA,EAAIu/R,EAAgBv/R,GAAK,EACvC,GAAIq/R,EAAkBr/R,KAAOo/R,EAAc,CACzC93P,EAAetnC,EACf,MAIA4E,EAAEg8B,UAA6B,IAAjB0G,GAChB1iC,EAAEm7B,iBACFs/P,EAAkBE,EAAiB,GAAG/7P,SAC5B5+B,EAAEg8B,UAAY0G,IAAiBi4P,EAAiB,IAC1D36R,EAAEm7B,iBACFs/P,EAAkB,GAAG77P,YAIzBo+I,EAAO+8G,wBAA0B,SAAiC/5R,GAChE9F,KAAKwgS,kBAAoB16R,EAAEqL,QAG7B2xK,EAAOg9G,aAAe,SAAsBh6R,GAC1C,GAAI9F,KAAK+b,MAAMkwK,QAAUjsL,KAAK+b,MAAMgpK,UAAYj/K,EAAEgmC,UAAY,UAAgB9rC,KAAK+b,MAAM+5I,OAAQ,CAI/F,GAHAhwJ,EAAEm7B,iBACFn7B,EAAEuwC,kBAE0B,WAAxBr2C,KAAK+b,MAAMwzK,SAEb,YADAvvL,KAAK+/R,gCAIP//R,KAAK+b,MAAM+5I,OAAOhwJ,KAItBg9K,EAAOi9G,8BAAgC,WACrC,IAAIn4G,EAAS5nL,KAEbA,KAAKkgS,gCACLlgS,KAAK6+B,SAAS,CACZshQ,6BAA6B,IAE/BngS,KAAK0gS,0BAA4B7vR,YAAW,WAC1C+2K,EAAO/oJ,SAAS,CACdshQ,6BAA6B,MAE9B,MAGLr9G,EAAOgmB,KAAO,WACZ,IACE9oM,KAAK2gS,mBAAqBhpR,SAASg9B,cACnC,MAAOztC,GACPlH,KAAK2gS,mBAAqB,KAGvB3gS,KAAKw6B,WACRx6B,KAAKw6B,SAAW7iB,SAASE,cAAc,OAEvC7X,KAAKw6B,SAASrP,aAAa,WAAY,MAEvCnrB,KAAKw6B,SAASjT,MAAMsW,SAAW,WAC/B79B,KAAKw6B,SAASjT,MAAMqpB,OAAS5wC,KAAK+b,MAAM60B,OACxCj5B,SAASjT,KAAKqwD,YAAY/0D,KAAKw6B,WAGjCx6B,KAAK0/R,sBAAuB,WAC5B,UAEwB,IAApBvvG,EAAMywG,YACRjpR,SAASjT,KAAKuqB,UAAY,IAAWtX,SAASjT,KAAKuqB,WAAW,QAAgB,aAAcjvB,KAAK+b,MAAMg9Q,aAGzG5oG,EAAMywG,WAAa,GAGrB99G,EAAO/+I,QAAU,WACX/jC,KAAKw6B,WACP7iB,SAASjT,KAAKi4D,YAAY38D,KAAKw6B,UAC/Bx6B,KAAKw6B,SAAW,MAGlBx6B,KAAKigS,yBAGPn9G,EAAOm9G,sBAAwB,WAC7B,GAAIjgS,KAAK2gS,mBAAoB,CAC3B,IAAInB,EAAwBx/R,KAAK+b,MAAMyjR,sBACnCx/R,KAAK2gS,mBAAmBj8P,OAAS86P,GAAuBx/R,KAAK2gS,mBAAmBj8P,QACpF1kC,KAAK2gS,mBAAqB,OAI9B79G,EAAOpvK,MAAQ,WACb,GAAIy8K,EAAMywG,WAAa,EAAG,CACxB,IAAIC,GAAqB,QAAgB,aAAc7gS,KAAK+b,MAAMg9Q,WAE9D+H,EAA0B,IAAI50Q,OAAO,QAAU20Q,EAAqB,SACxElpR,SAASjT,KAAKuqB,UAAYtX,SAASjT,KAAKuqB,UAAUlb,QAAQ+sR,EAAyB,KAAK13Q,OAG1FppB,KAAKigS,wBACL9vG,EAAMywG,UAAYr9Q,KAAKmnB,IAAI,EAAGylJ,EAAMywG,UAAY,IAChD,QAAkB5gS,KAAK0/R,uBAGzB58G,EAAOi+G,kBAAoB,WACzB,IAAIpG,EACA5yG,EAAS/nL,KAET+kB,GAAa,QAAK/kB,KAAK+b,MAAO0jR,GAElC,OAAO,kBAAoB,OAAO,OAAS,GAAI16Q,EAAY,CACzDkK,WAAW,QAAgB,IAFP,eAEmCjvB,KAAK+b,MAAMkT,WAAY0rQ,EAAc,GAAIA,EAAY,SAAW36R,KAAK+b,MAAMkH,MAAQjjB,KAAK+b,MAAMkH,KAAM03Q,EAAYqG,yBAAiChhS,KAAK+b,MAAM+iR,SAAUnE,EAAYqG,2BAAmChhS,KAAK+b,MAAMu+C,WAAYqgO,IAAe36R,KAAK+b,MAAMg9Q,WAC7T5yQ,KAAM,WACN4W,IAAK,SAAazrB,GAChBy2K,EAAOqI,QAAU9+K,KAEjB,kBAAoB,MAAO,CAC7B2d,WAAW,QAAgB,IAAW,gBAAiBjvB,KAAK+b,MAAMojR,kBAAmBn/R,KAAK+b,MAAMg9Q,YAC/F/4R,KAAK+b,MAAMmK,YAGhB48J,EAAOroJ,OAAS,WACd,IAAI8kQ,EAAiBv/R,KAAK+b,MAAMwjR,eAEhC,GAAMv/R,KAAKw6B,WAAax6B,KAAKoyB,MAAM65J,SAAWszG,GAAiB,CAC7D,IAAI0B,IAAkBjhS,KAAKw6B,WAAax6B,KAAKoyB,MAAM65J,SAAWszG,EAC9Dv/R,KAAKw6B,SAASjT,MAAMm/B,QAAUu6O,EAAgB,OAAS,QACvD,IAAIzyC,EAAexuP,KAAK+b,MACpBijR,EAAgBxwC,EAAawwC,cAC7BC,EAAiBzwC,EAAaywC,eAC9BC,EAAoB1wC,EAAa0wC,kBACjCnG,EAAYvqC,EAAauqC,UACzB9sG,EAASuiE,EAAaviE,OACtBsD,EAAWi/D,EAAaj/D,SACxBppK,EAAOqoO,EAAaroO,KACpB44Q,EAAavwC,EAAauwC,WAC1BK,EAAW5wC,EAAa4wC,SACxB5Y,EAAWh4B,EAAag4B,SACxB0a,EAAkB,CACpBr5P,QAAS7nC,KAAK4/R,oBACdl6P,YAAa1lC,KAAK6/R,wBAClBsB,QAASnhS,KAAK8/R,aACdh6P,UAAW9lC,KAAKggS,UAChBz4Q,MAAO,CACLm/B,QAAS,SAEX,kBAAmBq4O,EACnB54Q,KAAMA,EACNgf,SAAU,MAERi8P,EAAgBphS,KAAK+b,MAAMi9Q,KAE3BsG,GAAkB,OAAe,GAAI9hQ,EAAA,eAAmB,GAAIx9B,KAAK+b,MAAMujR,gBAAiB,CAC1FlG,UAAWgI,EAAgBphS,KAAK+b,MAAMujR,gBAAgBlG,UAAY,GAClE5vR,QAAS43R,EAAgBphS,KAAK+b,MAAMujR,gBAAgB91R,QAAU,IAG5D61R,GAAqB,OAAe,GAAI7hQ,EAAA,eAAmB,GAAIx9B,KAAK+b,MAAMsjR,mBAAoB,CAChGjG,UAAWgI,EAAgBphS,KAAK+b,MAAMsjR,mBAAmBjG,UAAY,GACrE5vR,QAAS43R,EAAgBphS,KAAK+b,MAAMsjR,mBAAmB71R,QAAU,IAG/D63R,EAAW9xG,IAAa6xG,EAAgB,kBAAoB5jQ,EAAA,GAAM,OAAS,GAAI6hQ,EAAoB,CACrG7iQ,GAAIyvJ,KAAYsD,EAChBwpG,UAAWA,EACX9pQ,WAAW,QAAgB,IAAW,iBAAkBiwQ,GAAoBnG,MACxE,kBAAoB,MAAO,CAC/B9pQ,WAAW,QAAgB,IAAW,iBAAkB,OAAQiwQ,GAAoBnG,MAEtF,OAAO,kBAAoB,EAAQ,CACjCt6P,KAAMz+B,KAAKw6B,UACV,kBAAoB,MAAO,CAC5BvL,WAAW,QAAgB+vQ,IAC1B,kBAAoBxhQ,EAAA,GAAM,OAAS,GAAI0jQ,EAAiB5B,EAAiB,CAC1E9iQ,GAAIyvJ,EACJ/wJ,UAAWl7B,KAAKi2K,SAChB56I,SAAUr7B,KAAKq2K,SACf0iH,UAAWA,EACX9pQ,WAAW,QAAgB,IAAW,QAASgwQ,EAAgBj/R,KAAKoyB,MAAM+tQ,6BAA+B,gBAAiBpH,GAC1HvS,SAAUA,IACR4Y,EAAUp/R,KAAK+gS,qBAAsBM,IAG3C,OAAO,MAGTv+G,EAAOo9G,8BAAgC,WACjClgS,KAAK0gS,4BACPnvR,aAAavR,KAAK0gS,2BAClB1gS,KAAK0gS,+BAA4BhwR,IAI9By/K,EArWT,CAsWE,eAEFA,EAAM//J,UAAY,EAClB+/J,EAAMlgK,aAAeA,EACrBkgK,EAAMywG,UAAY,EAClB,kJC7aIxwQ,EAAY,CACdhK,IAAK,KACL6I,UAAW,WACX8pQ,UAAW,YAMTuI,EAAY,SAAmBvlR,GACjC,IAAIkT,EAAYlT,EAAMkT,UAClB8pQ,EAAYh9Q,EAAMg9Q,UAClBE,EAAMl9Q,EAAMqK,IACZrB,GAAa,OAA8BhJ,EAAO,CAAC,YAAa,YAAa,QAE7EiK,GAAU,QAAgB,IAAWiJ,EAAW,cAAe8pQ,GACnE,OAAO,kBAAoBE,GAAK,OAAS,GAAIl0Q,EAAY,CACvDkK,UAAWjJ,MAIfs7Q,EAAUlxQ,UAAYA,EACtBkxQ,EAAUrxQ,aAjBS,CACjB7J,IAAK,OAiBP,mJCvBIgK,EAAY,CACdhK,IAAK,KACL6I,UAAW,WACX8pQ,UAAW,YAMTwI,EAAc,SAAqBxlR,GACrC,IAAIkT,EAAYlT,EAAMkT,UAClB8pQ,EAAYh9Q,EAAMg9Q,UAClBE,EAAMl9Q,EAAMqK,IACZrB,GAAa,OAA8BhJ,EAAO,CAAC,YAAa,YAAa,QAE7EiK,GAAU,QAAgB,IAAWiJ,EAAW,gBAAiB8pQ,GACrE,OAAO,kBAAoBE,GAAK,OAAS,GAAIl0Q,EAAY,CACvDkK,UAAWjJ,MAIfu7Q,EAAYnxQ,UAAYA,EACxBmxQ,EAAYtxQ,aAjBO,CACjB7J,IAAK,OAiBP,mJCvBIgK,EAAY,CACdhK,IAAK,KACLo7Q,QAAS,KACT1rI,OAAQ,SACR7mI,UAAW,WACX8pQ,UAAW,WACX7yQ,SAAU,SACV4yQ,eAAgB,WAChBlmP,SAAU,cAAoB,CAAC,WAAkB,aACjDl/B,MAAO,YASL+tR,EAAc,SAAqB1lR,GACrC,IAAI2lR,EAEAzyQ,EAAYlT,EAAMkT,UAClB8pQ,EAAYh9Q,EAAMg9Q,UAClB7yQ,EAAWnK,EAAMmK,SACjB4vI,EAAS/5I,EAAM+5I,OACfmjI,EAAMl9Q,EAAMqK,IACZu7Q,EAAU5lR,EAAMylR,QAChB1I,EAAiB/8Q,EAAM+8Q,eACvBlmP,EAAW72B,EAAM62B,SACjBl/B,EAAQqI,EAAMrI,MACdqR,GAAa,OAA8BhJ,EAAO,CAAC,YAAa,YAAa,WAAY,SAAU,MAAO,UAAW,iBAAkB,WAAY,UAEnJiK,GAAU,QAAgB,IAAWiJ,EAAW,gBAAiB8pQ,GAErE,IAAKrlR,GAASoiJ,EAAQ,CACpB,IAAI8rI,EAAgC,iBAAbhvP,EAAwBvnC,OAAOC,aAAasnC,GAAYA,EAC/E8uP,EAAc,kBAAoB,SAAU,CAC1Cp1R,KAAM,SACNu7B,QAASiuH,EACT7mI,WAAW,QAAgB,QAAS8pQ,GACpC,aAAcD,GACb,kBAAoB,OAAQ,CAC7B,cAAe,QACd8I,IAGL,OAAO,kBAAoBD,GAAS,OAAS,GAAI58Q,EAAY,CAC3DkK,UAAWjJ,IACT,kBAAoBizQ,EAAK,CAC3BhqQ,WAAW,QAAgB,cAAe8pQ,IACzC7yQ,GAAWxS,GAASguR,IAGzBD,EAAYrxQ,UAAYA,EACxBqxQ,EAAYxxQ,aA3CO,CACjB7J,IAAK,KACLo7Q,QAAS,MACT1I,eAAgB,QAChBlmP,SAAU,KAwCZ,mJCvDIxiB,EAAY,CACdyxQ,KAAM,SACNC,MAAO,SACP7yN,SAAU,cAAoB,CAAC,SAAgB,aAC/CpU,WAAY,WACZknO,UAAW,SACX/8Q,KAAM,SACNg2Q,OAAQ,SACRgH,KAAM,SACN57Q,IAAK,KACL6I,UAAW,WACX8pQ,UAAW,YAiBTkJ,EAAM,SAAalmR,GACrB,IAAIkT,EAAYlT,EAAMkT,UAClB8pQ,EAAYh9Q,EAAMg9Q,UAClB8I,EAAO9lR,EAAM8lR,KACbC,EAAQ/lR,EAAM+lR,MACd7yN,EAAWlzD,EAAMkzD,SACjBpU,EAAa9+C,EAAM8+C,WACnBknO,EAAYhmR,EAAMgmR,UAClB/8Q,EAAOjJ,EAAMiJ,KACbg2Q,EAASj/Q,EAAMi/Q,OACfgH,EAAOjmR,EAAMimR,KACb/I,EAAMl9Q,EAAMqK,IACZrB,GAAa,OAA8BhJ,EAAO,CAAC,YAAa,YAAa,OAAQ,QAAS,WAAY,aAAc,YAAa,OAAQ,SAAU,OAAQ,QAE/JiK,GAAU,QAAgB,IAAWiJ,EAAW+rQ,EAAS,aAAe,QAAOngO,GAAa,mBAAqBA,EAxBhG,SAA0BoU,GAC/C,OAAiB,IAAbA,KAEoB,IAAbA,GAAkC,OAAbA,EACvB,cAGF,QAAUA,EAAW,WAiB6GizN,CAAiBjzN,GAAW,CACnK,WAAY4yN,EACZ,mBAAoBG,GAAQH,EAC5B,YAAaC,EACb,oBAAqBE,GAAQF,EAC7B,gBAAiBC,EACjB,WAAY/8Q,IACV+zQ,GACJ,OAAO,kBAAoBE,GAAK,OAAS,GAAIl0Q,EAAY,CACvDkK,UAAWjJ,MAIfi8Q,EAAI7xQ,UAAYA,EAChB6xQ,EAAIhyQ,aA3Ce,CACjB7J,IAAK,KACL6oD,UAAU,GA0CZ,mJCzDI7+C,EAAY,CACdhK,IAAK,KACLy0D,OAAQ,SACR5rD,UAAW,WACX8pQ,UAAW,YAMToJ,EAAU,SAAiBpmR,GAC7B,IAAIkT,EAAYlT,EAAMkT,UAClB8pQ,EAAYh9Q,EAAMg9Q,UAClBl+M,EAAS9+D,EAAM8+D,OACfo+M,EAAMl9Q,EAAMqK,IACZrB,GAAa,OAA8BhJ,EAAO,CAAC,YAAa,YAAa,SAAU,QAEvFiK,GAAU,QAAgB,IAAWiJ,EAAW,aAAY4rD,GAAS,UAAmBk+M,GAC5F,OAAO,kBAAoBE,GAAK,OAAS,GAAIl0Q,EAAY,CACvDkK,UAAWjJ,MAIfm8Q,EAAQ/xQ,UAAYA,EACpB+xQ,EAAQlyQ,aAlBW,CACjB7J,IAAK,MAkBP,uKCvBIgK,EAAY,CACdhK,IAAK,KACLogQ,SAAU,cAAoB,CAAC,WAAkB,SAAgB,aACjEphP,SAAU,SACVy1C,OAAQ,SACR5rD,UAAW,WACX8pQ,UAAW,WACXlxP,QAAS,SACT/vB,KAAM,SAMJsqR,EAEJ,SAAUnc,GAGR,SAASmc,EAAQrmR,GACf,IAAIvb,EAIJ,OAFAA,EAAQylR,EAAiBvlR,KAAKV,KAAM+b,IAAU/b,MACxC6nC,QAAUrnC,EAAMqnC,QAAQnX,MAAK,OAAuBlwB,IACnDA,GAPT,OAAe4hS,EAASnc,GAUxB,IAAInjG,EAASs/G,EAAQliS,UAqCrB,OAnCA4iL,EAAOj7I,QAAU,SAAiB/hC,GAC5B9F,KAAK+b,MAAMqpB,SACbt/B,EAAEm7B,kBAIoB,MAApBjhC,KAAK+b,MAAMjE,MACbhS,EAAEm7B,iBAGAjhC,KAAK+b,MAAM8rB,SACb7nC,KAAK+b,MAAM8rB,QAAQ/hC,KAIvBg9K,EAAOroJ,OAAS,WACd,IAAI2zN,EAAcpuP,KAAK+b,MACnBkT,EAAYm/N,EAAYn/N,UACxB8pQ,EAAY3qC,EAAY2qC,UACxBl+M,EAASuzK,EAAYvzK,OACrBo+M,EAAM7qC,EAAYhoO,IAClBogQ,EAAWp4B,EAAYo4B,SACvBzhQ,GAAa,OAA8BqpO,EAAa,CAAC,YAAa,YAAa,SAAU,MAAO,aAEpGpoO,GAAU,QAAgB,IAAWiJ,EAAW,WAAY,CAC9DmW,SAAUrgB,EAAWqgB,SACrBy1C,OAAQA,IACNk+M,GACJ,OAAO,kBAAoBE,GAAK,OAAS,GAAIl0Q,EAAY,CACvDgY,IAAKypP,EACL3+O,QAAS7nC,KAAK6nC,QACd5Y,UAAWjJ,MAIRo8Q,EAhDT,CAiDE,eAEFA,EAAQhyQ,UAAYA,EACpBgyQ,EAAQnyQ,aA1DW,CACjB7J,IAAK,KA0DP,mJCvEIgK,EAAY,CACdiyQ,MAAO,SACPC,KAAM,SACNtoI,KAAM,SACNuoI,MAAO,WACPC,OAAQ,WACR/jM,MAAO,WACPt4E,KAAM,WACNC,IAAK,KACL6I,UAAW,WACX8pQ,UAAW,WACXhvL,OAAQ,cAAoB,CAAC,SAAgB,cAiB3C04L,EAAS,SAAgB1mR,GAC3B,IAAI4+Q,EAEA5wL,EAAShuF,EAAMguF,OACf96E,EAAYlT,EAAMkT,UAClB8pQ,EAAYh9Q,EAAMg9Q,UAClBsJ,EAAQtmR,EAAMsmR,MACdC,EAAOvmR,EAAMumR,KACbC,EAAQxmR,EAAMwmR,MACdC,EAASzmR,EAAMymR,OACf/jM,EAAQ1iF,EAAM0iF,MACdw6L,EAAMl9Q,EAAMqK,IACZrB,GAAa,OAA8BhJ,EAAO,CAAC,SAAU,YAAa,YAAa,QAAS,OAAQ,QAAS,SAAU,QAAS,QAEpIiK,GAAU,QAAgB,IAAWiJ,EAAW,SAxBjC,SAAwB86E,GAC3C,OAAe,IAAXA,KAEkB,IAAXA,GAA8B,OAAXA,EACrB,gBAGF,iBAAmBA,GAiBoC24L,CAAe34L,KAAU4wL,EAAc,CACnG,eAAgB0H,EAChB,cAAeC,IACF,MAAQ7jM,GAASA,EAAOk8L,EAAY,SAAW4H,GAASA,EAAO5H,EAAY,UAAY6H,GAAUA,EAAQ7H,IAAe5B,GACvI,OAAO,kBAAoBE,GAAK,OAAS,GAAIl0Q,EAAY,CACvDkK,UAAWjJ,MAIfy8Q,EAAOryQ,UAAYA,EACnBqyQ,EAAOxyQ,aAvCY,CACjB7J,IAAK,MACL2jF,QAAQ,GAsCV,mJCrDI35E,EAAY,CACdhK,IAAK,KACL6I,UAAW,WACX8pQ,UAAW,YAMT4J,EAAc,SAAqB5mR,GACrC,IAAIkT,EAAYlT,EAAMkT,UAClB8pQ,EAAYh9Q,EAAMg9Q,UAClBE,EAAMl9Q,EAAMqK,IACZrB,GAAa,OAA8BhJ,EAAO,CAAC,YAAa,YAAa,QAE7EiK,GAAU,QAAgB,IAAWiJ,EAAW,gBAAiB8pQ,GACrE,OAAO,kBAAoBE,GAAK,OAAS,GAAIl0Q,EAAY,CACvDkK,UAAWjJ,MAIf28Q,EAAYvyQ,UAAYA,EACxBuyQ,EAAY1yQ,aAjBO,CACjB7J,IAAK,KAiBP,mJCvBIgK,EAAY,CACdhK,IAAK,KACL9Z,KAAM,WACN2iB,UAAW,WACX8pQ,UAAW,WACX7yQ,SAAU,UAOR08Q,EAAgB,SAAuB7mR,GACzC,IAAIkT,EAAYlT,EAAMkT,UAClB8pQ,EAAYh9Q,EAAMg9Q,UAClB7yQ,EAAWnK,EAAMmK,SACjB+yQ,EAAMl9Q,EAAMqK,IACZrB,GAAa,OAA8BhJ,EAAO,CAAC,YAAa,YAAa,WAAY,QAEzFiK,GAAU,QAAgB,IAAWiJ,EAAW,kBAAmB8pQ,GACvE,OAAO,kBAAoBE,GAAK,OAAS,CACvC,aAAc,qBACbl0Q,EAAY,CACbkK,UAAWjJ,IACTE,GAAY,kBAAoB,OAAQ,CAC1C+I,WAAW,QAAgB,sBAAuB8pQ,OAItD6J,EAAcxyQ,UAAYA,EAC1BwyQ,EAAc3yQ,aAvBK,CACjB7J,IAAK,SACL9Z,KAAM,UAsBR,kJC/BI8jB,EAAY,CACdlK,SAAU,SACV28Q,IAAK,SACLC,MAAO,SACP18Q,IAAK,KACLzgB,MAAO,cAAoB,CAAC,WAAkB,aAC9C+kC,IAAK,cAAoB,CAAC,WAAkB,aAC5CyiM,SAAU,SACV41D,QAAS,SACTtkM,MAAO,WACPxvE,UAAW,WACX+zQ,aAAc,WACdjK,UAAW,YAQTkK,EAAW,SAAkBlnR,GAC/B,IAAImK,EAAWnK,EAAMmK,SACjB+I,EAAYlT,EAAMkT,UAClB+zQ,EAAejnR,EAAMinR,aACrBjK,EAAYh9Q,EAAMg9Q,UAClBpzR,EAAQoW,EAAMpW,MACd+kC,EAAM3uB,EAAM2uB,IACZyiM,EAAWpxN,EAAMoxN,SACjB41D,EAAUhnR,EAAMgnR,QAChBtkM,EAAQ1iF,EAAM0iF,MACdokM,EAAM9mR,EAAM8mR,IACZC,EAAQ/mR,EAAM+mR,MACd7J,EAAMl9Q,EAAMqK,IACZrB,GAAa,OAA8BhJ,EAAO,CAAC,WAAY,YAAa,eAAgB,YAAa,QAAS,MAAO,WAAY,UAAW,QAAS,MAAO,QAAS,QAEzKo7H,GAAU,QAASxxI,IAAS,QAAS+kC,GAAO,IAC5Cw4P,GAAkB,QAAgB,IAAWj0Q,EAAW,YAAa8pQ,GACrEoK,GAAqB,QAAgB,IAAW,eAAgBN,GAAM5zQ,GAA4B+zQ,EAAc71D,EAAW,wBAA0B,KAAM1uI,EAAQ,MAAQA,EAAQ,KAAMskM,GAAW51D,EAAW,uBAAyB,MAAO4rD,GAC/OqK,EAAcN,EAAQ58Q,EAAW,kBAAoB,MAAO,CAC9D+I,UAAWk0Q,EACX57Q,MAAO,CACL7C,MAAOyyH,EAAU,KAEnBhxH,KAAM,cACN,gBAAiBxgB,EACjB,gBAAiB,IACjB,gBAAiB+kC,EACjBxkB,SAAUA,IAGZ,OAAI28Q,EACKO,EAGF,kBAAoBnK,GAAK,OAAS,GAAIl0Q,EAAY,CACvDkK,UAAWi0Q,EACXh9Q,SAAUk9Q,MAIdH,EAAS7yQ,UAAYA,EACrB6yQ,EAAShzQ,aA/CU,CACjB7J,IAAK,MACLzgB,MAAO,EACP+kC,IAAK,KA6CP,kJC7DI24P,EAAkB,cAAoB,CAAC,WAAkB,aACzDjzQ,EAAY,CACdhK,IAAK,KACLk9Q,UAAW,SACXr0Q,UAAW,WACX8pQ,UAAW,WACXpX,KAAM,SACNsY,GAAIoJ,EACJnJ,GAAImJ,EACJxgC,GAAIwgC,EACJ3zB,GAAI2zB,EACJlJ,GAAIkJ,GAOFE,EAAM,SAAaxnR,GACrB,IAAIkT,EAAYlT,EAAMkT,UAClB8pQ,EAAYh9Q,EAAMg9Q,UAClBuK,EAAYvnR,EAAMunR,UAClBrK,EAAMl9Q,EAAMqK,IACZu7P,EAAO5lQ,EAAM4lQ,KACbr2L,EAASvvE,EAAMuvE,OACfvmE,GAAa,OAA8BhJ,EAAO,CAAC,YAAa,YAAa,YAAa,MAAO,OAAQ,WAEzG0+Q,EAAa,GACjBnvM,EAAOhoF,SAAQ,SAAUg3R,EAAUp5R,GACjC,IAAIq5R,EAAUx+Q,EAAMu+Q,GAGpB,UAFOv1Q,EAAWu1Q,GAEbC,EAAL,CAIA,IAAIF,GAAQn5R,EACZu5R,EAAW50R,KAAKw0R,EAAO,YAAcE,EAAU,YAAcD,EAAW,IAAMC,OAEhF,IAAIv0Q,GAAU,QAAgB,IAAWiJ,EAAWq0Q,EAAY,aAAe,KAAM3hB,EAAO,WAAa,MAAO8Y,GAAa1B,GAC7H,OAAO,kBAAoBE,GAAK,OAAS,GAAIl0Q,EAAY,CACvDkK,UAAWjJ,MAIfu9Q,EAAInzQ,UAAYA,EAChBmzQ,EAAItzQ,aAjCe,CACjB7J,IAAK,MACLklE,OAhBiB,CAAC,KAAM,KAAM,KAAM,KAAM,OAgD5C,uHCdA,QAhCA,SAAU+0G,GAGR,SAASmjG,EAAkBznR,GACzB,IAAIvb,EAOJ,OALAA,EAAQ6/L,EAAW3/L,KAAKV,KAAM+b,IAAU/b,MAClCoyB,MAAQ,CACZ65J,QAAQ,GAEVzrL,EAAMs1J,OAASt1J,EAAMs1J,OAAOplI,MAAK,OAAuBlwB,IACjDA,GAVT,OAAegjS,EAAmBnjG,GAalC,IAAIvd,EAAS0gH,EAAkBtjS,UAe/B,OAbA4iL,EAAOhtB,OAAS,WACd91J,KAAK6+B,SAAS,CACZotJ,QAASjsL,KAAKoyB,MAAM65J,UAIxBnJ,EAAOroJ,OAAS,WACd,OAAO,kBAAoB,KAAO,OAAS,CACzCwxJ,OAAQjsL,KAAKoyB,MAAM65J,OACnBn2B,OAAQ91J,KAAK81J,QACZ91J,KAAK+b,SAGHynR,EA7BT,CA8BE,EAAAhjG,8JC9BEijG,EAAW,CAAC,eAEZC,EAEJ,SAAUrjG,GAGR,SAASqjG,EAA2B3nR,GAClC,IAAIvb,EAOJ,OALAA,EAAQ6/L,EAAW3/L,KAAKV,KAAM+b,IAAU/b,MAClCoyB,MAAQ,CACZ65J,OAAQlwK,EAAM4nR,cAAe,GAE/BnjS,EAAMs1J,OAASt1J,EAAMs1J,OAAOplI,MAAK,OAAuBlwB,IACjDA,GAVT,OAAekjS,EAA4BrjG,GAa3C,IAAIvd,EAAS4gH,EAA2BxjS,UAexC,OAbA4iL,EAAOhtB,OAAS,WACd91J,KAAK6+B,SAAS,CACZotJ,QAASjsL,KAAKoyB,MAAM65J,UAIxBnJ,EAAOroJ,OAAS,WACd,OAAO,kBAAoB,KAAgB,OAAS,CAClDwxJ,OAAQjsL,KAAKoyB,MAAM65J,OACnBn2B,OAAQ91J,KAAK81J,SACZ,QAAK91J,KAAK+b,MAAO0nR,MAGfC,EA7BT,CA8BE,EAAAljG,WAGFkjG,EAA2BtzQ,WAAY,OAAe,CACpDuzQ,YAAa,UACZ,mKCvCCF,EAAW,CAAC,eAEZG,EAEJ,SAAUvjG,GAGR,SAASujG,EAAqB7nR,GAC5B,IAAIvb,EAOJ,OALAA,EAAQ6/L,EAAW3/L,KAAKV,KAAM+b,IAAU/b,MAClCoyB,MAAQ,CACZ65J,OAAQlwK,EAAM4nR,cAAe,GAE/BnjS,EAAMs1J,OAASt1J,EAAMs1J,OAAOplI,MAAK,OAAuBlwB,IACjDA,GAVT,OAAeojS,EAAsBvjG,GAarC,IAAIvd,EAAS8gH,EAAqB1jS,UAmBlC,OAjBA4iL,EAAOhtB,OAAS,SAAgBhwJ,GAC9B9F,KAAK6+B,SAAS,CACZotJ,QAASjsL,KAAKoyB,MAAM65J,SAGlBjsL,KAAK+b,MAAM8nR,UACb7jS,KAAK+b,MAAM8nR,SAAS/9R,GAAI9F,KAAKoyB,MAAM65J,SAIvCnJ,EAAOroJ,OAAS,WACd,OAAO,kBAAoB,KAAU,OAAS,CAC5CwxJ,OAAQjsL,KAAKoyB,MAAM65J,OACnBn2B,OAAQ91J,KAAK81J,SACZ,QAAK91J,KAAK+b,MAAO0nR,MAGfG,EAjCT,CAkCE,EAAApjG,WAGFojG,EAAqBxzQ,WAAY,OAAe,CAC9CuzQ,YAAa,SACbE,SAAU,UACT,6NCrCCzzQ,EAAY,CACdlK,SAAU,oBACV49Q,gBAAiB,WACjBt1G,UAAW,WACXu1G,gBAAiB,WACjBC,eAAgB,WAChBC,UAAW,SACX79Q,IAAK,KACL6lK,OAAQ,oBACR8sG,UAAW,WACXtxQ,OAAQ,cAAoB,CAAC,WAAkB,aAC/CqtK,kBAAmB,cAAoB,CAAC,WAAkB,YAC1DrlK,KAAM,SACNlD,UAAW,KACXpb,OAAQ,gBACRu9K,UAAW,WACXE,kBAAmB,cAAoB,CAAC,WAAkB,OAC1DvY,SAAU,SACV2iH,KAAM,SACN/nG,WAAY,UAAgBzzJ,EAAA,cAE1BvN,EAAe,CACjB2+J,kBAAmB,eACnBJ,UAAW,OACXy1G,WAAW,EACXh4G,QAAQ,EACRxkK,OAAQ,EACRqtK,kBAAmB,OACnBrlK,MAAM,EACNlD,UAAW,OACXmiK,UAAW,GACXrY,SAjCF,aAkCE2iH,MAAM,EACN/nG,YAAY,OAAe,GAAIzzJ,EAAA,iBAG7B0mQ,EAEJ,SAAUje,GAGR,SAASie,EAAcnoR,GACrB,IAAIvb,EAUJ,OARAA,EAAQylR,EAAiBvlR,KAAKV,KAAM+b,IAAU/b,MACxCmkS,cAAgB3jS,EAAM2jS,cAAczzQ,MAAK,OAAuBlwB,IACtEA,EAAM4jS,cAAgB5jS,EAAM4jS,cAAc1zQ,MAAK,OAAuBlwB,IACtEA,EAAM09R,OAAS19R,EAAM09R,OAAOxtQ,MAAK,OAAuBlwB,IACxDA,EAAM61K,SAAW71K,EAAM61K,SAAS3lJ,MAAK,OAAuBlwB,IAC5DA,EAAM4xB,MAAQ,CACZ65J,OAAQlwK,EAAMkwK,QAETzrL,GAbT,OAAe0jS,EAAeje,GAgB9Bie,EAAclpN,yBAA2B,SAAkCj/D,EAAOqW,GAChF,OAAIrW,EAAMkwK,SAAW75J,EAAM65J,OAClB,CACLA,OAAQlwK,EAAMkwK,QAEJ,MAGhB,IAAInJ,EAASohH,EAAchkS,UAiH3B,OA/GA4iL,EAAOzvI,mBAAqB,WACtBrzC,KAAKw6B,UAAYx6B,KAAKw6B,SAASlP,YAActrB,KAAKw6B,SAASlP,WAAW,IAAMtrB,KAAKw6B,SAASlP,WAAW,GAAGoZ,OAC1G1kC,KAAKw6B,SAASlP,WAAW,GAAGoZ,SAIhCo+I,EAAOqhH,cAAgB,SAAuB1lQ,GAC5Cz+B,KAAKqkS,WAA6B,iBAAT5lQ,GAAoB,QAAUA,GAAQA,GAGjEqkJ,EAAOshH,cAAgB,WACrB,OAAOpkS,KAAKqkS,YAGdvhH,EAAOwhH,iBAAmB,WACxB,OAAO,QAAUtkS,KAAK+b,MAAMwQ,YAG9Bu2J,EAAOo7G,OAAS,SAAgBnhQ,GAC9B/8B,KAAKw6B,SAAWuC,GAGlB+lJ,EAAOzM,SAAW,WAChBr2K,KAAK+b,MAAMs6J,WACXr2K,KAAK6+B,SAAS,CACZotJ,QAAQ,KAIZnJ,EAAOz/D,eAAiB,WACtB,IAAI+qI,EAAcpuP,KAAK+b,MACnBg9Q,EAAY3qC,EAAY2qC,UACxB7yQ,EAAWkoO,EAAYloO,SACvB+lK,EAASmiE,EAAYniE,OACrBx8J,EAAO2+N,EAAY3+N,KAEnBhI,GADS2mO,EAAYj9O,OACZi9O,EAAY3mO,QACrBqtK,EAAoBs5D,EAAYt5D,kBAChCivG,EAAkB31C,EAAY21C,gBAC9BQ,EAAkBn2C,EAAY41C,eAC9BC,EAAY71C,EAAY61C,UACxBO,EAAmBp2C,EAAY01C,gBAC/B19Q,EAAMgoO,EAAYhoO,IAElBsoK,GADY0/D,EAAY7hO,UACZ6hO,EAAY1/D,WACxBE,EAAoBw/D,EAAYx/D,kBAEhCoqG,GADW5qC,EAAY/3E,SAChB+3E,EAAY4qC,MACnB/nG,EAAam9D,EAAYn9D,WACzBzC,EAAY4/D,EAAY5/D,UACxBj+J,GAAQ,OAA8B69N,EAAa,CAAC,YAAa,WAAY,SAAU,OAAQ,SAAU,SAAU,oBAAqB,kBAAmB,iBAAkB,YAAa,kBAAmB,MAAO,YAAa,YAAa,oBAAqB,WAAY,OAAQ,aAAc,cAErS41C,GAAiB,QAAgB,IAAW,QAASO,GAAkBxL,GACvE+K,GAAkB,QAAgB,IAAWU,EAAkBT,EAAkBA,EAAkB,QAAU,IAAK/jS,KAAK+b,MAAMg9Q,WAE7H0L,GAAoB,OAAe,CACrCh9Q,OAAQ,CACNA,OAAQA,GAEVgI,KAAM,CACJia,QAASja,EACTipK,SAAU5D,GAEZnG,gBAAiB,CACfC,kBAAmBA,IAEpBF,GAECg2G,GAAmB,OAAe,GAAIlnQ,EAAA,eAAmB,GAAIyzJ,EAAY,CAC3EmoG,UAAWJ,EAAO/nG,EAAWmoG,UAAY,GACzC5vR,QAASwvR,EAAO/nG,EAAWznL,QAAU,IAGvC,OAAO,kBAAoBg0B,EAAA,GAAM,OAAS,GAAIknQ,EAAkBn0Q,EAAO,CACrEiM,GAAIyvJ,EACJ5wJ,SAAUr7B,KAAKq2K,SACfjwJ,IAAKA,IACH,kBAAoB,KAAa,CACnC8nK,iBAAkBluL,KAAKqkS,WACvB31G,UAAW+1G,EACXj2G,UAAWA,IACV,SAAU/vK,GACX,IAAIse,EAAMte,EAAKse,IACXxV,EAAQ9I,EAAK8I,MACbinK,EAAY/vK,EAAK+vK,UACjB24F,EAAa1oQ,EAAK0oQ,WACtB,OAAO,kBAAoB,MAAO,CAChCpqP,IAAKA,EACLxV,MAAOA,EACP0H,UAAW60Q,EACX,cAAet1G,GACdtoK,GAAW+9Q,GAAa,kBAAoB,OAAQ,CACrDlnQ,IAAKoqP,EAAWpqP,IAChB9N,UAAW+0Q,EACXz8Q,MAAO4/P,EAAW5/P,cAKxBu7J,EAAOroJ,OAAS,WAGd,OAFAz6B,KAAKmkS,cAAcnkS,KAAK+b,MAAM5K,QAE1BnR,KAAKoyB,MAAM65J,OACmB,WAAzBjsL,KAAK+b,MAAMwQ,UAAyBvsB,KAAKqjH,iBAAmB,iBAAsB,kBAAoB,MAAO,CAClHtmF,IAAK/8B,KAAKk+R,QACTl+R,KAAKqjH,kBAAmBrjH,KAAKskS,oBAG3B,MAGFJ,EA1IT,CA2IE,eAEFA,EAAc9zQ,UAAYA,EAC1B8zQ,EAAcj0Q,aAAeA,EAC7B,UC7LO,IAAI,EAAY,CACrBu+J,UAAW,UAAgB,MAC3Br9K,OAAQ,gBACRob,UAAW,KACX0/J,OAAQ,SACR7mJ,SAAU,SACV6+P,UAAW,SACXr1G,kBAAmB,cAAoB,CAAC,WAAkB,OAC1D3/J,UAAW,WACX01Q,eAAgB,WAChBX,eAAgB,WAChBF,gBAAiB,WACjB/K,UAAW,WACXjjI,OAAQ,SACRioC,SAAU,SACVgmG,gBAAiB,WACjBnyP,MAAO,cAAoB,CAAC,UAAgB,CAC1C1I,KAAM,WACNmiJ,KAAM,aACJ,aACJqD,UAAW,WACXjnK,OAAQ,cAAoB,CAAC,WAAkB,aAC/C++P,SAAU,cAAoB,CAAC,SAAgB,WAAkB,aACjEh0L,QAAS,WACTwmM,KAAM,SACNvpQ,KAAM,UAEJm1Q,EAAiB,CACnB17P,KAAM,EACNmiJ,KAAM,IAEJ,EAAe,CACjBY,QAAQ,EACRg4G,WAAW,EACXlmG,UAAU,EACVnsJ,MAAOgzP,EACP9uI,OAAQ,aACRtjE,QAAS,QACTwmM,MAAM,GAGR,SAAS6L,EAAehmR,EAASimR,GAC/B,OAAOA,IAAgBjmR,IAAYimR,GAAeA,EAAYvtQ,SAAS1Y,IAGzE,SAASkmR,EAAgBlmR,EAASmmR,GAKhC,YAJqB,IAAjBA,IACFA,EAAe,IAGVA,GAAgBA,EAAa3jS,QAAU2jS,EAAanqP,MAAK,SAAUoqP,GACxE,OAAOJ,EAAehmR,EAASomR,MAInC,IAAIC,EAEJ,SAAUjf,GAGR,SAASif,EAAsBnpR,GAC7B,IAAIvb,EAqBJ,OAnBAA,EAAQylR,EAAiBvlR,KAAKV,KAAM+b,IAAU/b,MACxCy7L,SAAW,GACjBj7L,EAAM2kS,qBAAuB,KAC7B3kS,EAAM4kS,gBAAkB5kS,EAAM4kS,gBAAgB10Q,MAAK,OAAuBlwB,IAC1EA,EAAMy7R,oBAAsBz7R,EAAMy7R,oBAAoBvrQ,MAAK,OAAuBlwB,IAClFA,EAAM6kS,mBAAqB7kS,EAAM6kS,mBAAmB30Q,MAAK,OAAuBlwB,IAChFA,EAAMs1J,OAASt1J,EAAMs1J,OAAOplI,MAAK,OAAuBlwB,IACxDA,EAAM8kS,cAAgB9kS,EAAM8kS,cAAc50Q,MAAK,OAAuBlwB,IACtEA,EAAM+kS,cAAgB/kS,EAAM+kS,cAAc70Q,MAAK,OAAuBlwB,IACtEA,EAAMglS,0BAA4BhlS,EAAMglS,0BAA0B90Q,MAAK,OAAuBlwB,IAC9FA,EAAMilS,2BAA6BjlS,EAAMilS,2BAA2B/0Q,MAAK,OAAuBlwB,IAChGA,EAAM0oC,KAAO1oC,EAAM0oC,KAAKxY,MAAK,OAAuBlwB,IACpDA,EAAM6qL,KAAO7qL,EAAM6qL,KAAK36J,MAAK,OAAuBlwB,IACpDA,EAAMklS,aAAellS,EAAMklS,aAAah1Q,MAAK,OAAuBlwB,IACpEA,EAAM09R,OAAS19R,EAAM09R,OAAOxtQ,MAAK,OAAuBlwB,IACxDA,EAAM4xB,MAAQ,CACZ65J,OAAQlwK,EAAMkwK,QAEhBzrL,EAAM4oR,YAAa,EACZ5oR,GAxBT,OAAe0kS,EAAuBjf,GA2BtC,IAAInjG,EAASoiH,EAAsBhlS,UAwQnC,OAtQA4iL,EAAOz+I,kBAAoB,WACzBrkC,KAAKopR,YAAa,EAClBppR,KAAK2lS,gBAGP7iH,EAAOx+I,qBAAuB,WAC5BtkC,KAAKopR,YAAa,EAClBppR,KAAKqlS,qBACLrlS,KAAKy7L,SAAW,KAChBz7L,KAAK4lS,mBACL5lS,KAAK6lS,oBAGPX,EAAsBlqN,yBAA2B,SAAkCj/D,EAAOqW,GACxF,OAAIrW,EAAMkwK,SAAW75J,EAAM65J,OAClB,CACLA,OAAQlwK,EAAMkwK,QAEJ,MAGhBnJ,EAAO0iH,0BAA4B,WAC7BxlS,KAAK+b,MAAMy2E,QAAQ9qF,QAAQ,UAAY,IAAM1H,KAAK+b,MAAMgiL,WACtD/9L,KAAK8lS,cACP9lS,KAAK6lS,mBAGH7lS,KAAKoyB,MAAM65J,SAAWjsL,KAAK+b,MAAMkwK,QACnCjsL,KAAK81J,WAKXgtB,EAAO2iH,2BAA6B,SAAoC3/R,GAClE9F,KAAK+b,MAAMy2E,QAAQ9qF,QAAQ,UAAY,IAAM1H,KAAK+b,MAAMgiL,WACtD/9L,KAAK+lS,cACP/lS,KAAK4lS,mBAGP9/R,EAAEi7P,UACF/gQ,KAAK8lS,aAAej1R,WAAW7Q,KAAKqrL,KAAK36J,KAAK1wB,KAAM8F,GAAI9F,KAAKgmS,SAAS,WAI1EljH,EAAO4iH,aAAe,SAAsB5/R,GAC5B,WAAVA,EAAEuL,KACJrR,KAAKqrL,KAAKvlL,IAIdg9K,EAAOo7G,OAAS,SAAgBnhQ,GAC9B,IAAIypP,EAAWxmR,KAAK+b,MAAMyqQ,SAEtBA,IACsB,mBAAbA,EACTA,EAASzpP,GACoB,iBAAbypP,IAChBA,EAASxhP,QAAUjI,IAIvB/8B,KAAKimS,SAAWlpQ,GAGlB+lJ,EAAOkjH,SAAW,SAAkB30R,GAClC,IAAIugC,EAAQ5xC,KAAK+b,MAAM61B,MAEvB,MAAqB,iBAAVA,EACF1kB,MAAM0kB,EAAMvgC,IAAQuzR,EAAevzR,GAAOugC,EAAMvgC,GAGlDugC,GAGTkxI,EAAO55I,KAAO,SAAcpjC,GACrB9F,KAAK+b,MAAMkwK,SACdjsL,KAAK4lS,mBACL5lS,KAAKmlS,qBAAuBr/R,GAAKA,EAAE4vC,cACnC11C,KAAK81J,OAAOhwJ,KAIhBg9K,EAAOwiH,cAAgB,SAAuBx/R,GACxC9F,KAAK8lS,cACP9lS,KAAK6lS,mBAGP7lS,KAAK+lS,aAAel1R,WAAW7Q,KAAKkpC,KAAKxY,KAAK1wB,KAAM8F,GAAI9F,KAAKgmS,SAAS,UAGxEljH,EAAOuI,KAAO,SAAcvlL,GACtB9F,KAAK+b,MAAMkwK,SACbjsL,KAAK6lS,mBACL7lS,KAAKmlS,qBAAuB,KAC5BnlS,KAAK81J,OAAOhwJ,KAIhBg9K,EAAOyiH,cAAgB,SAAuBz/R,GACxC9F,KAAK+lS,cACP/lS,KAAK4lS,mBAGP5lS,KAAK8lS,aAAej1R,WAAW7Q,KAAKqrL,KAAK36J,KAAK1wB,KAAM8F,GAAI9F,KAAKgmS,SAAS,UAGxEljH,EAAO8iH,iBAAmB,WACxBr0R,aAAavR,KAAK+lS,cAClB/lS,KAAK+lS,kBAAer1R,GAGtBoyK,EAAO+iH,iBAAmB,WACxBt0R,aAAavR,KAAK8lS,cAClB9lS,KAAK8lS,kBAAep1R,GAGtBoyK,EAAOm5G,oBAAsB,SAA6Bn2R,GACxD,IAAIogS,EAAWlmS,KAAK+b,MAAMy2E,QAAQrnF,MAAM,KAEpC+6R,EAASx+R,QAAQ,WAAa,IAAM1H,KAAK+b,MAAMkwK,QAAU84G,EAAgBj/R,EAAEqL,OAAQnR,KAAKy7L,YACtFz7L,KAAK8lS,cACP9lS,KAAK6lS,mBAGH7lS,KAAK+b,MAAMkwK,SAAW44G,EAAe/+R,EAAEqL,OAAQnR,KAAKimS,UACtDjmS,KAAKulS,cAAcz/R,GACT9F,KAAK+b,MAAMkwK,QACrBjsL,KAAKslS,cAAcx/R,IAEZogS,EAASx+R,QAAQ,UAAY,GAAKq9R,EAAgBj/R,EAAEqL,OAAQnR,KAAKy7L,YACtEz7L,KAAK8lS,cACP9lS,KAAK6lS,mBAGF7lS,KAAK+b,MAAMkwK,OAGdjsL,KAAKulS,cAAcz/R,GAFnB9F,KAAKslS,cAAcx/R,KAOzBg9K,EAAOqjH,kBAAoB,SAA2B75R,EAAMgiC,EAAS83P,GACnEpmS,KAAKy7L,SAASn4L,SAAQ,SAAU6N,GAC9BA,EAAO0M,iBAAiBvR,EAAMgiC,EAAS83P,OAI3CtjH,EAAOujH,qBAAuB,SAA8B/5R,EAAMgiC,EAAS83P,GACzEpmS,KAAKy7L,SAASn4L,SAAQ,SAAU6N,GAC9BA,EAAOmP,oBAAoBhU,EAAMgiC,EAAS83P,OAI9CtjH,EAAOsiH,gBAAkB,WACvB,GAAIplS,KAAK+b,MAAMy2E,QAAS,CACtB,IAAI0zM,EAAWlmS,KAAK+b,MAAMy2E,QAAQrnF,MAAM,MAEJ,IAAhC+6R,EAASx+R,QAAQ,aACfw+R,EAASx+R,QAAQ,UAAY,GAAKw+R,EAASx+R,QAAQ,WAAa,IAClEiQ,SAASkG,iBAAiB,QAAS7d,KAAKi8R,qBAAqB,GAG3Dj8R,KAAKy7L,UAAYz7L,KAAKy7L,SAASp6L,SAC7B6kS,EAASx+R,QAAQ,UAAY,IAC/B1H,KAAKmmS,kBAAkB,YAAanmS,KAAKslS,eAAe,GACxDtlS,KAAKmmS,kBAAkB,WAAYnmS,KAAKulS,eAAe,IAGrDW,EAASx+R,QAAQ,UAAY,IAC/B1H,KAAKmmS,kBAAkB,UAAWnmS,KAAKkpC,MAAM,GAC7ClpC,KAAKmmS,kBAAkB,WAAYnmS,KAAKqrL,MAAM,IAGhDrrL,KAAKmmS,kBAAkB,UAAWnmS,KAAK0lS,cAAc,OAM7D5iH,EAAOuiH,mBAAqB,WACtBrlS,KAAKy7L,WACPz7L,KAAKqmS,qBAAqB,YAAarmS,KAAKslS,eAAe,GAC3DtlS,KAAKqmS,qBAAqB,WAAYrmS,KAAKulS,eAAe,GAC1DvlS,KAAKqmS,qBAAqB,UAAWrmS,KAAK0lS,cAAc,GACxD1lS,KAAKqmS,qBAAqB,UAAWrmS,KAAKkpC,MAAM,GAChDlpC,KAAKqmS,qBAAqB,WAAYrmS,KAAKqrL,MAAM,IAGnD1zK,SAAS2I,oBAAoB,QAAStgB,KAAKi8R,qBAAqB,IAGlEn5G,EAAO6iH,aAAe,WACpB,IAAIW,GAAY,QAAUtmS,KAAK+b,MAAM5K,QAAQ,GAEzCm1R,IAActmS,KAAKy7L,WACrBz7L,KAAKqlS,qBACLrlS,KAAKy7L,SAAW6qG,EAAY5mS,MAAM2J,KAAKi9R,GAAa,GACpDtmS,KAAKmlS,qBAAuBnlS,KAAKmlS,sBAAwBnlS,KAAKy7L,SAAS,GACvEz7L,KAAKolS,oBAITtiH,EAAOhtB,OAAS,SAAgBhwJ,GAC9B,OAAI9F,KAAK+b,MAAMqpB,WAAaplC,KAAKopR,WACxBtjR,GAAKA,EAAEm7B,iBAGTjhC,KAAK+b,MAAM+5I,OAAOhwJ,IAG3Bg9K,EAAOroJ,OAAS,WACd,IAAKz6B,KAAK+b,MAAMkwK,OACd,OAAO,KAGTjsL,KAAK2lS,eACL,IAAIv3C,EAAcpuP,KAAK+b,MACnBkT,EAAYm/N,EAAYn/N,UACxB8pQ,EAAY3qC,EAAY2qC,UACxB4L,EAAiBv2C,EAAYu2C,eAC7B14G,EAASmiE,EAAYniE,OACrBg4G,EAAY71C,EAAY61C,UACxBr1G,EAAoBw/D,EAAYx/D,kBAChCJ,EAAY4/D,EAAY5/D,UACxBu1G,EAAkB31C,EAAY21C,gBAC9BC,EAAiB51C,EAAY41C,eAC7BF,EAAkB11C,EAAY01C,gBAC9Bv3Q,EAAY6hO,EAAY7hO,UACxBmiK,EAAY0/D,EAAY1/D,UACxBjnK,EAAS2mO,EAAY3mO,OACrBuxQ,EAAO5qC,EAAY4qC,KACnBvpQ,EAAO2+N,EAAY3+N,KACnB1K,GAAa,QAAK/kB,KAAK+b,MAAOxc,OAAO6K,KAAK,IAC1Cm8R,GAAgB,QAAgBzC,EAAiB/K,GACjD/yQ,GAAU,QAAgB2+Q,EAAgB5L,GAC9C,OAAO,kBAAoB,EAAe,CACxC9pQ,UAAWA,EACX9d,OAAQnR,KAAKmlS,sBAAwBnlS,KAAKy7L,SAAS,GACnDxP,OAAQA,EACRg4G,UAAWA,EACXr1G,kBAAmBA,EACnBJ,UAAWA,EACXu1G,gBAAiBA,EACjBC,eAAgBA,EAChBF,gBAAiByC,EACjBh6Q,UAAWA,EACXmiK,UAAWA,EACXjnK,OAAQA,EACRsxQ,UAAWA,EACXC,KAAMA,EACNvpQ,KAAMA,GACL,kBAAoB,OAAO,OAAS,GAAI1K,EAAY,CACrDgY,IAAK/8B,KAAKk+R,OACVjvQ,UAAWjJ,EACXG,KAAM,UACNitD,YAAapzE,KAAKwlS,0BAClBpzO,aAAcpyD,KAAKylS,2BACnB3/P,UAAW9lC,KAAK0lS,kBAIbR,EApST,CAqSE,eAEFA,EAAsB90Q,UAAY,EAClC80Q,EAAsBj1Q,aAAe,EACrC,UCrWA,IAOI8nJ,EAAU,SAAiBh8J,GAC7B,IAAIwqR,EAAgB,IAAW,UAAW,OAAQxqR,EAAM+nR,iBACpD99Q,EAAU,IAAW,gBAAiBjK,EAAM4oR,gBAChD,OAAO,kBAAoB,GAAuB,OAAS,GAAI5oR,EAAO,CACpE+nR,gBAAiByC,EACjB5B,eAAgB3+Q,MAIpB+xJ,EAAQ3nJ,UAAY,EACpB2nJ,EAAQ9nJ,aAjBW,CACjBu+J,UAAW,MACXuP,UAAU,EACVgmG,gBAAiB,aACjBvxM,QAAS,eAcX,UCdA,IAAIixM,EAAW,CAAC,eAEZ+C,EAEJ,SAAUnmG,GAGR,SAASmmG,EAAoBzqR,GAC3B,IAAIvb,EAOJ,OALAA,EAAQ6/L,EAAW3/L,KAAKV,KAAM+b,IAAU/b,MAClCoyB,MAAQ,CACZ65J,OAAQlwK,EAAM4nR,cAAe,GAE/BnjS,EAAMs1J,OAASt1J,EAAMs1J,OAAOplI,MAAK,OAAuBlwB,IACjDA,GAVT,OAAegmS,EAAqBnmG,GAapC,IAAIvd,EAAS0jH,EAAoBtmS,UAejC,OAbA4iL,EAAOhtB,OAAS,WACd91J,KAAK6+B,SAAS,CACZotJ,QAASjsL,KAAKoyB,MAAM65J,UAIxBnJ,EAAOroJ,OAAS,WACd,OAAO,kBAAoB,GAAS,OAAS,CAC3CwxJ,OAAQjsL,KAAKoyB,MAAM65J,OACnBn2B,OAAQ91J,KAAK81J,SACZ,QAAK91J,KAAK+b,MAAO0nR,MAGf+C,EA7BT,CA8BE,EAAAhmG,WAGFgmG,EAAoBp2Q,WAAY,OAAe,CAC7CuzQ,YAAa,UACZ,8PChCI,SAAS8C,EAAkB9/O,GAChChvC,SAASjT,KAAK6iB,MAAM4zC,aAAexU,EAAU,EAAIA,EAAU,KAAO,KAK7D,SAAS+/O,IACd,IAAIn/Q,EAAQjU,OAAOymB,iBAAiBpiB,SAASjT,KAAM,MACnD,OAAO6gC,SAAShe,GAASA,EAAMusH,iBAAiB,kBAAoB,EAAG,IAElE,SAAS6yJ,IACd,IAAInlN,EAxBC,WACL,IAAIyxG,EAAYt7K,SAASE,cAAc,OAEvCo7K,EAAU1rK,MAAMsW,SAAW,WAC3Bo1J,EAAU1rK,MAAMuW,IAAM,UACtBm1J,EAAU1rK,MAAM7C,MAAQ,OACxBuuK,EAAU1rK,MAAM5C,OAAS,OACzBsuK,EAAU1rK,MAAMytH,SAAW,SAC3Br9H,SAASjT,KAAKqwD,YAAYk+H,GAC1B,IAAIzxG,EAAiByxG,EAAU54J,YAAc44J,EAAU/vI,YAEvD,OADAvrC,SAASjT,KAAKi4D,YAAYs2H,GACnBzxG,EAacolN,GAEjBj0G,EAAeh7K,SAAS8sB,iBAAiB,qDAAqD,GAC9FoiQ,EAAcl0G,EAAeptJ,SAASotJ,EAAaprK,MAAM4zC,cAAgB,EAAG,IAAM,EAV/ExjD,SAASjT,KAAKw+C,YAAc5vC,OAAOi8J,YAaxCk3H,EAAkBI,EAAcrlN,GAO7B,SAASslN,EAAgB73Q,EAAW8pQ,GASzC,YARkB,IAAd9pQ,IACFA,EAAY,SAGI,IAAd8pQ,IACFA,EAVAgO,WAaGhO,EACE9pQ,EAAU9jB,MAAM,KAAKmM,KAAI,SAAUhG,GACxC,OAAOynR,EAAUznR,IAAMA,KACtB2U,KAAK,KAHegJ,EASlB,SAAS+3Q,EAAK9tR,EAAKuqR,GACxB,IAAIh9R,EAAS,GAMb,OALAlH,OAAO6K,KAAK8O,GAAK5V,SAAQ,SAAU+N,IACF,IAA3BoyR,EAAS/7R,QAAQ2J,KACnB5K,EAAO4K,GAAO6H,EAAI7H,OAGf5K,EAMF,SAASwgS,EAAK/tR,EAAK9O,GAMxB,IALA,IAEIiH,EAFA61R,EAAWxnS,MAAMyc,QAAQ/R,GAAQA,EAAO,CAACA,GACzC/I,EAAS6lS,EAAS7lS,OAElBoF,EAAS,GAENpF,EAAS,GAGdoF,EADA4K,EAAM61R,EADN7lS,GAAU,IAEI6X,EAAI7H,GAGpB,OAAO5K,EAET,IAAIqjM,EAAS,GACN,SAASq9F,EAASl/R,GAClB6hM,EAAO7hM,KAEa,oBAAZE,SACTA,QAAQlB,MAAMgB,GAGhB6hM,EAAO7hM,IAAW,GAiBtB,IAAI4iG,EAA4B,iBAAXv3F,QAAuBA,OAAOu3F,SAAW,aAEvD,SAASu8L,EAAWrrR,EAAO42C,EAAUqS,GAC1C,KAAMjpD,EAAM42C,aAAqBk4C,GAC/B,OAAO,IAAIlqG,MAAM,iBAAmBgyD,EAAW,kBAAoBqS,EAAgB,qEAGhF,IAAIqiO,EAAiB,cAAoB,CAAC,WAAkB,SAAgBD,EAAY,UAAgB,CAC7GpiQ,QAAS,YAEAsiQ,EAAc,cAAoB,CAAC,SAAgB,WAAkB,UAAgB,CAC9F93C,SAAU,WACV/0N,OAAQ,WACN,YAAkB,cAAoB,CAAC,SAAgB,WAAkB,UAAgB,CAC3F+0N,SAAU,WACV/0N,OAAQ,gBAMC8sQ,EAAqB,CAC9B/pQ,KAAM,IAENktJ,SAAU,IAEVyF,MAAO,IAEP/J,SAAU,KAMDohH,EAAyB,CAAC,KAAM,eAAgB,gBAAiB,SAAU,QAAS,OAAQ,UAAW,UAAW,aAAc,YAAa,SAAU,YAAa,YACpKC,EAAqB,CAC9B3S,SAAU,WACVD,QAAS,UACTD,QAAS,UACTG,OAAQ,UAEC2S,EAAW,CACpBroQ,IAAK,GACLC,MAAO,GACP3E,MAAO,GACPwE,IAAK,EACLO,GAAI,GACJC,KAAM,GACNF,KAAM,GACN5G,IAAK,GACL13B,EAAG,GACHtB,EAAG,IAEM8nS,EAAmB,CAAC,aAAc,OAAQ,WAAY,YAAa,MAAO,UAAW,cAAe,QAAS,YAAa,aAAc,SAAU,eAAgB,WAAY,OAAQ,cACtL9mQ,IAAiC,oBAAXvtB,SAA0BA,OAAOqE,WAAYrE,OAAOqE,SAASE,eAS9F,SAAS+vR,EAAOjiS,GACd,OAAa,MAATA,OACe+K,IAAV/K,EAAsB,qBAAuB,gBAG/CpG,OAAOW,UAAUsD,SAAS9C,KAAKiF,GAGjC,SAASkiS,EAASliS,GACvB,IAAI2G,SAAc3G,EAGlB,GAAa,WAAT2G,EACF,OAAO3G,EAGT,GAAa,WAAT2G,GAA8B,WAATA,GAAuC,oBAAlBs7R,EAAOjiS,GACnD,OAPQ,IAUV,GAAI43K,EAAS53K,GAAQ,CACnB,IAAIi2B,EAAiC,mBAAlBj2B,EAAMohM,QAAyBphM,EAAMohM,UAAYphM,EACpEA,EAAQ43K,EAAS3hJ,GAAS,GAAKA,EAAQA,EAGzC,GAAa,WAATtvB,EACF,OAAiB,IAAV3G,EAAcA,GAASA,EAGhCA,EAAQA,EAAMoO,QAAQ,aAAc,IACpC,IAAI+zR,EAAW,aAAa1nR,KAAKza,GACjC,OAAOmiS,GAAY,cAAc1nR,KAAKza,GAAS4/B,SAAS5/B,EAAMuG,MAAM,GAAI47R,EAAW,EAAI,GAAK,qBAAqB1nR,KAAKza,GArB5G,KAqB4HA,EAEjI,SAAS43K,EAAS53K,GACvB,IAAI2G,SAAc3G,EAClB,OAAgB,MAATA,IAA2B,WAAT2G,GAA8B,aAATA,GAmCzC,SAASy7R,EAAkBt+E,GAChC,OAAY,OAARA,IAIG/pN,MAAMyc,QAAQstM,IAAQ5oL,GAAmC,iBAAf4oL,EAAIpoN,QAEhD,SAAS2mS,EAAU72R,EAAQ82R,GAChC,IAAIx+E,EAjCC,SAAyBt4M,GAC9B,GAtDK,SAAuBA,GAC5B,SAAIA,GAA4B,iBAAXA,IACZ,YAAaA,EAoDlB+2R,CAAc/2R,GAChB,OAAOA,EAAO6zB,QAGhB,GAbK,SAAoBr/B,GACzB,IAAK43K,EAAS53K,GACZ,OAAO,EAGT,IAAIygB,EAAMwhR,EAAOjiS,GACjB,MAAe,sBAARygB,GAAuC,2BAARA,GAA4C,+BAARA,GAAgD,mBAARA,EAO9GwK,CAAWzf,GACb,OAAOA,IAGT,GAAsB,iBAAXA,GAAuB0vB,EAAW,CAC3C,IAAIkqC,EAAYpzD,SAAS8sB,iBAAiBtzB,GAM1C,GAJK45D,EAAU1pE,SACb0pE,EAAYpzD,SAAS8sB,iBAAiB,IAAMtzB,KAGzC45D,EAAU1pE,OACb,MAAM,IAAIV,MAAM,eAAiBwQ,EAAS,6DAG5C,OAAO45D,EAGT,OAAO55D,EAUGg3R,CAAgBh3R,GAE1B,OAAI82R,EACEF,EAAkBt+E,GACbA,EAGG,OAARA,EACK,GAGF,CAACA,GAEJs+E,EAAkBt+E,GACbA,EAAI,GAGNA,EAkCJ,IAAI2+E,EAAoB,CAAC,UAAW,aAAc,2CAA4C,yBAA0B,2BAA4B,yBAA0B,SAAU,QAAS,yBAA0B,kBAAmB,kBAAmB,oFC3SpQ1oG,EAAyB,EAAQ,MAGrC3mL,EAAQ,OAAU,EAElB,IAAIsvR,EAAY3oG,EAAuB,EAAQ,OAE3C4oG,EAAiC5oG,EAAuB,EAAQ,OAEhEF,EAASE,EAAuB,EAAQ,OAExCyrF,EAAazrF,EAAuB,EAAQ,OAE5C6oG,EAAc7oG,EAAuB,EAAQ,OAE7C8oG,EAAS,EAAQ,MAEjBp4Q,EAAY,CACdquE,MAAO0sL,EAAW7wQ,QAAQ6T,OAC1BkrQ,KAAMlO,EAAW7wQ,QAAQqqN,KACzBv+M,IAAKoiR,EAAOlB,YACZ9gB,SAAU2E,EAAW7wQ,QAAQ6xO,UAAU,CAACg/B,EAAW7wQ,QAAQuqF,OAAQsmL,EAAW7wQ,QAAQuN,KAAMsjQ,EAAW7wQ,QAAQ6T,SAC/GjI,SAAUilQ,EAAW7wQ,QAAQmkB,KAC7BxP,UAAWk8P,EAAW7wQ,QAAQ6T,OAC9B4qQ,UAAW5N,EAAW7wQ,QAAQuqF,QAQ5By0L,EAAQ,SAAev9Q,GACzB,IAAIkT,EAAYlT,EAAMkT,UAClB8pQ,EAAYh9Q,EAAMg9Q,UAClBt6L,EAAQ1iF,EAAM0iF,MACd+nL,EAAWzqQ,EAAMyqQ,SACjB6S,EAAOt9Q,EAAMs9Q,KACbJ,EAAMl9Q,EAAMqK,IACZrB,GAAa,EAAIujR,EAA+BhuR,SAASyB,EAAO,CAAC,YAAa,YAAa,QAAS,WAAY,OAAQ,QACxHiK,GAAU,EAAIwiR,EAAO1B,kBAAiB,EAAIyB,EAAYjuR,SAAS2U,EAAW,QAAS,SAAWwvE,IAAO46L,GAAO,cAAuBN,GAMvI,OAJIh0Q,EAAWjN,MAAgB,SAARmhR,IACrBA,EAAM,KAGDz5F,EAAOllL,QAAQzC,cAAcohR,GAAK,EAAIoP,EAAU/tR,SAAS,GAAIyK,EAAY,CAC9EkK,UAAWjJ,EACX+W,IAAKypP,MAIT8S,EAAMlpQ,UAAYA,EAClBkpQ,EAAMrpQ,aA3Ba,CACjBwuE,MAAO,YACP46L,MAAM,EACNjzQ,IAAK,QAyBP,IAAI+xM,EAAWmhE,EACfvgR,EAAQ,EAAUo/M,mCCvDdz4B,EAAyB,EAAQ,MAGrC3mL,EAAQ,OAAU,EAElB,IAAIsvR,EAAY3oG,EAAuB,EAAQ,OAE3C4oG,EAAiC5oG,EAAuB,EAAQ,OAEhE+oG,EAA0B/oG,EAAuB,EAAQ,OAEzDgpG,EAAkBhpG,EAAuB,EAAQ,OAEjDF,EAASE,EAAuB,EAAQ,OAExCyrF,EAAazrF,EAAuB,EAAQ,OAE5C6oG,EAAc7oG,EAAuB,EAAQ,OAE7C8oG,EAAS,EAAQ,MAEjBp4Q,EAAY,CACdyqD,OAAQswM,EAAW7wQ,QAAQqqN,KAC3B,aAAcwmD,EAAW7wQ,QAAQ6T,OACjCuyL,MAAOyqE,EAAW7wQ,QAAQqqN,KAC1BlmI,MAAO0sL,EAAW7wQ,QAAQ6T,OAC1BiX,SAAU+lP,EAAW7wQ,QAAQqqN,KAC7BniJ,QAAS2oM,EAAW7wQ,QAAQqqN,KAC5Bv+M,IAAKoiR,EAAOlB,YACZ9gB,SAAU2E,EAAW7wQ,QAAQ6xO,UAAU,CAACg/B,EAAW7wQ,QAAQuqF,OAAQsmL,EAAW7wQ,QAAQuN,KAAMsjQ,EAAW7wQ,QAAQ6T,SAC/G0Z,QAASsjP,EAAW7wQ,QAAQuN,KAC5B5E,KAAMkoQ,EAAW7wQ,QAAQ6T,OACzBjI,SAAUilQ,EAAW7wQ,QAAQmkB,KAC7BxP,UAAWk8P,EAAW7wQ,QAAQ6T,OAC9B4qQ,UAAW5N,EAAW7wQ,QAAQuqF,OAC9BnxF,MAAOy3Q,EAAW7wQ,QAAQqqN,MAOxBhqJ,EAEJ,SAAUsrM,GAGR,SAAStrM,EAAO5+D,GACd,IAAIvb,EAIJ,OAFAA,EAAQylR,EAAiBvlR,KAAKV,KAAM+b,IAAU/b,MACxC6nC,QAAUrnC,EAAMqnC,QAAQnX,MAAK,EAAI+3Q,EAAwBnuR,SAAS9Z,IACjEA,GAPT,EAAIkoS,EAAgBpuR,SAASqgE,EAAQsrM,GAUrC,IAAInjG,EAASnoG,EAAOz6E,UAyDpB,OAvDA4iL,EAAOj7I,QAAU,SAAiB/hC,GAC5B9F,KAAK+b,MAAMqpB,SACbt/B,EAAEm7B,iBAIAjhC,KAAK+b,MAAM8rB,SACb7nC,KAAK+b,MAAM8rB,QAAQ/hC,IAIvBg9K,EAAOroJ,OAAS,WACd,IAAI2zN,EAAcpuP,KAAK+b,MACnB8+D,EAASuzK,EAAYvzK,OACrB0+M,EAAYnrC,EAAY,cACxB1tC,EAAQ0tC,EAAY1tC,MACpBzxL,EAAYm/N,EAAYn/N,UACxBvb,EAAQ06O,EAAY16O,MACpBqlR,EAAY3qC,EAAY2qC,UACxBt6L,EAAQ2vJ,EAAY3vJ,MACpBjc,EAAU4rK,EAAY5rK,QACtBv/D,EAAOmrO,EAAYnrO,KACnBg2Q,EAAM7qC,EAAYhoO,IAClBogQ,EAAWp4B,EAAYo4B,SACvBzhQ,GAAa,EAAIujR,EAA+BhuR,SAAS8zO,EAAa,CAAC,SAAU,aAAc,QAAS,YAAa,QAAS,YAAa,QAAS,UAAW,OAAQ,MAAO,aAE9K16O,QAAwC,IAAxBqR,EAAWmB,WAC7BnB,EAAWmB,SAAWs5K,EAAOllL,QAAQzC,cAAc,OAAQ,CACzD,eAAe,GACd,MAGL,IAAI2hR,EAAkB,OAASh3M,EAAU,WAAa,IAAM,IAAMic,EAC9Dz4E,GAAU,EAAIwiR,EAAO1B,kBAAiB,EAAIyB,EAAYjuR,SAAS2U,EAAW,CAC5Evb,MAAOA,GACNA,GAAS,MAAOA,GAAS8lR,IAAiBv2Q,GAAO,OAASA,IAAcy9L,GAAQ,YAAqB,CACtG7lI,OAAQA,EACRz1C,SAAUplC,KAAK+b,MAAMqpB,WACnB2zP,GAEAh0Q,EAAWjN,MAAgB,WAARmhR,IACrBA,EAAM,KAGR,IAAIQ,EAAmB/lR,EAAQ,QAAU,KACzC,OAAO8rL,EAAOllL,QAAQzC,cAAcohR,GAAK,EAAIoP,EAAU/tR,SAAS,CAC9DhO,KAAc,WAAR2sR,GAAoBl0Q,EAAW8iB,QAAU,cAAWn3B,GACzDqU,EAAY,CACbkK,UAAWjJ,EACX+W,IAAKypP,EACL3+O,QAAS7nC,KAAK6nC,QACd,aAAc0xP,GAAaE,MAIxB9+M,EApET,CAqEE6kH,EAAOllL,QAAQkmL,WAEjB7lH,EAAOvqD,UAAYA,EACnBuqD,EAAO1qD,aA/EY,CACjBwuE,MAAO,YACPr4E,IAAK,UA8EP,IAAI+xM,EAAWx9I,EACf5hE,EAAQ,EAAUo/M,mCCtHdz4B,EAAyB,EAAQ,MAGrC3mL,EAAQ,OAAU,EAElB,IAAIsvR,EAAY3oG,EAAuB,EAAQ,OAE3C4oG,EAAiC5oG,EAAuB,EAAQ,OAEhEF,EAASE,EAAuB,EAAQ,OAExCyrF,EAAazrF,EAAuB,EAAQ,OAE5C6oG,EAAc7oG,EAAuB,EAAQ,OAE7C8oG,EAAS,EAAQ,MAEjBp4Q,EAAY,CACdhK,IAAKoiR,EAAOlB,YACZ,aAAcnc,EAAW7wQ,QAAQ6T,OACjCc,UAAWk8P,EAAW7wQ,QAAQ6T,OAC9B4qQ,UAAW5N,EAAW7wQ,QAAQuqF,OAC9B1+E,KAAMglQ,EAAW7wQ,QAAQ6T,OACzBlL,KAAMkoQ,EAAW7wQ,QAAQ6T,OACzB8gD,SAAUk8M,EAAW7wQ,QAAQqqN,MAO3B5oJ,EAAc,SAAqBhgE,GACrC,IAAIkT,EAAYlT,EAAMkT,UAClB8pQ,EAAYh9Q,EAAMg9Q,UAClB91Q,EAAOlH,EAAMkH,KACbgsD,EAAWlzD,EAAMkzD,SACjBgqN,EAAMl9Q,EAAMqK,IACZrB,GAAa,EAAIujR,EAA+BhuR,SAASyB,EAAO,CAAC,YAAa,YAAa,OAAQ,WAAY,QAC/GiK,GAAU,EAAIwiR,EAAO1B,kBAAiB,EAAIyB,EAAYjuR,SAAS2U,IAAWhM,GAAO,aAAeA,EAAcgsD,EAAW,qBAAuB,aAAc8pN,GAClK,OAAOv5F,EAAOllL,QAAQzC,cAAcohR,GAAK,EAAIoP,EAAU/tR,SAAS,GAAIyK,EAAY,CAC9EkK,UAAWjJ,MAIf+1D,EAAY3rD,UAAYA,EACxB2rD,EAAY9rD,aAnBO,CACjB7J,IAAK,MACLD,KAAM,SAkBR,IAAIgyM,EAAWp8I,EACfhjE,EAAQ,EAAUo/M,mCC/Cdz4B,EAAyB,EAAQ,MAGrC3mL,EAAQ,OAAU,EAElB,IAAIsvR,EAAY3oG,EAAuB,EAAQ,OAE3C4oG,EAAiC5oG,EAAuB,EAAQ,OAEhEF,EAASE,EAAuB,EAAQ,OAExCyrF,EAAazrF,EAAuB,EAAQ,OAE5C6oG,EAAc7oG,EAAuB,EAAQ,OAE7C8oG,EAAS,EAAQ,MAEjBp4Q,EAAY,CACdhK,IAAKoiR,EAAOlB,YACZh4Q,QAAS67P,EAAW7wQ,QAAQqqN,KAC5BlmI,MAAO0sL,EAAW7wQ,QAAQ6T,OAC1BzpB,KAAMymR,EAAW7wQ,QAAQqqN,KACzBniJ,QAAS2oM,EAAW7wQ,QAAQqqN,KAC5B11M,UAAWk8P,EAAW7wQ,QAAQ6T,OAC9B4qQ,UAAW5N,EAAW7wQ,QAAQuqF,OAC9B2hL,SAAU2E,EAAW7wQ,QAAQ6xO,UAAU,CAACg/B,EAAW7wQ,QAAQuqF,OAAQsmL,EAAW7wQ,QAAQ6T,OAAQg9P,EAAW7wQ,QAAQuN,QAM/G8xQ,EAAO,SAAc59Q,GACvB,IAAIkT,EAAYlT,EAAMkT,UAClB8pQ,EAAYh9Q,EAAMg9Q,UAClBt6L,EAAQ1iF,EAAM0iF,MACd/5F,EAAOqX,EAAMrX,KACb4qB,EAAUvT,EAAMuT,QAChBkzD,EAAUzmE,EAAMymE,QAChBy2M,EAAMl9Q,EAAMqK,IACZogQ,EAAWzqQ,EAAMyqQ,SACjBzhQ,GAAa,EAAIujR,EAA+BhuR,SAASyB,EAAO,CAAC,YAAa,YAAa,QAAS,OAAQ,UAAW,UAAW,MAAO,aACzIiK,GAAU,EAAIwiR,EAAO1B,kBAAiB,EAAIyB,EAAYjuR,SAAS2U,EAAW,SAAQK,GAAU,eAAsB5qB,GAAO,cAAqB+5F,IAASjc,EAAU,SAAW,MAAQ,IAAMic,GAAgBs6L,GAC9M,OAAOv5F,EAAOllL,QAAQzC,cAAcohR,GAAK,EAAIoP,EAAU/tR,SAAS,GAAIyK,EAAY,CAC9EkK,UAAWjJ,EACX+W,IAAKypP,MAITmT,EAAKvpQ,UAAYA,EACjBupQ,EAAK1pQ,aAtBc,CACjB7J,IAAK,OAsBP,IAAI+xM,EAAWwhE,EACf5gR,EAAQ,EAAUo/M,mCCnDdz4B,EAAyB,EAAQ,MAGrC3mL,EAAQ,OAAU,EAElB,IAAIsvR,EAAY3oG,EAAuB,EAAQ,OAE3C4oG,EAAiC5oG,EAAuB,EAAQ,OAEhEF,EAASE,EAAuB,EAAQ,OAExCyrF,EAAazrF,EAAuB,EAAQ,OAE5C6oG,EAAc7oG,EAAuB,EAAQ,OAE7C8oG,EAAS,EAAQ,MAEjBp4Q,EAAY,CACdhK,IAAKoiR,EAAOlB,YACZr4Q,UAAWk8P,EAAW7wQ,QAAQ6T,OAC9B4qQ,UAAW5N,EAAW7wQ,QAAQuqF,OAC9B2hL,SAAU2E,EAAW7wQ,QAAQ6xO,UAAU,CAACg/B,EAAW7wQ,QAAQuqF,OAAQsmL,EAAW7wQ,QAAQ6T,OAAQg9P,EAAW7wQ,QAAQuN,QAM/G+xQ,EAAW,SAAkB79Q,GAC/B,IAAIkT,EAAYlT,EAAMkT,UAClB8pQ,EAAYh9Q,EAAMg9Q,UAClBvS,EAAWzqQ,EAAMyqQ,SACjByS,EAAMl9Q,EAAMqK,IACZrB,GAAa,EAAIujR,EAA+BhuR,SAASyB,EAAO,CAAC,YAAa,YAAa,WAAY,QACvGiK,GAAU,EAAIwiR,EAAO1B,kBAAiB,EAAIyB,EAAYjuR,SAAS2U,EAAW,aAAc8pQ,GAC5F,OAAOv5F,EAAOllL,QAAQzC,cAAcohR,GAAK,EAAIoP,EAAU/tR,SAAS,GAAIyK,EAAY,CAC9EkK,UAAWjJ,EACX+W,IAAKypP,MAIToT,EAASxpQ,UAAYA,EACrBwpQ,EAAS3pQ,aAlBU,CACjB7J,IAAK,OAkBP,IAAI+xM,EAAWyhE,EACf7gR,EAAQ,EAAUo/M,mCC3Cdz4B,EAAyB,EAAQ,MAGrC3mL,EAAQ,OAAU,EAElB,IAAIsvR,EAAY3oG,EAAuB,EAAQ,OAE3C4oG,EAAiC5oG,EAAuB,EAAQ,OAEhEF,EAASE,EAAuB,EAAQ,OAExCyrF,EAAazrF,EAAuB,EAAQ,OAE5C6oG,EAAc7oG,EAAuB,EAAQ,OAE7C8oG,EAAS,EAAQ,MAEjBp4Q,EAAY,CACdhK,IAAKoiR,EAAOlB,YACZr4Q,UAAWk8P,EAAW7wQ,QAAQ6T,OAC9B4qQ,UAAW5N,EAAW7wQ,QAAQuqF,QAM5Bg1L,EAAa,SAAoB99Q,GACnC,IAAIkT,EAAYlT,EAAMkT,UAClB8pQ,EAAYh9Q,EAAMg9Q,UAClBE,EAAMl9Q,EAAMqK,IACZrB,GAAa,EAAIujR,EAA+BhuR,SAASyB,EAAO,CAAC,YAAa,YAAa,QAC3FiK,GAAU,EAAIwiR,EAAO1B,kBAAiB,EAAIyB,EAAYjuR,SAAS2U,EAAW,eAAgB8pQ,GAC9F,OAAOv5F,EAAOllL,QAAQzC,cAAcohR,GAAK,EAAIoP,EAAU/tR,SAAS,GAAIyK,EAAY,CAC9EkK,UAAWjJ,MAIf6zQ,EAAWzpQ,UAAYA,EACvBypQ,EAAW5pQ,aAhBQ,CACjB7J,IAAK,OAgBP,IAAI+xM,EAAW0hE,EACf9gR,EAAQ,EAAUo/M,mCCxCdz4B,EAAyB,EAAQ,MAGrC3mL,EAAQ,OAAU,EAElB,IAAIsvR,EAAY3oG,EAAuB,EAAQ,OAE3C4oG,EAAiC5oG,EAAuB,EAAQ,OAEhEF,EAASE,EAAuB,EAAQ,OAExCyrF,EAAazrF,EAAuB,EAAQ,OAE5C6oG,EAAc7oG,EAAuB,EAAQ,OAE7C8oG,EAAS,EAAQ,MAEjBp4Q,EAAY,CACdhK,IAAKoiR,EAAOlB,YACZr4Q,UAAWk8P,EAAW7wQ,QAAQ6T,OAC9B4qQ,UAAW5N,EAAW7wQ,QAAQuqF,QAM5Bi1L,EAAa,SAAoB/9Q,GACnC,IAAIkT,EAAYlT,EAAMkT,UAClB8pQ,EAAYh9Q,EAAMg9Q,UAClBE,EAAMl9Q,EAAMqK,IACZrB,GAAa,EAAIujR,EAA+BhuR,SAASyB,EAAO,CAAC,YAAa,YAAa,QAC3FiK,GAAU,EAAIwiR,EAAO1B,kBAAiB,EAAIyB,EAAYjuR,SAAS2U,EAAW,eAAgB8pQ,GAC9F,OAAOv5F,EAAOllL,QAAQzC,cAAcohR,GAAK,EAAIoP,EAAU/tR,SAAS,GAAIyK,EAAY,CAC9EkK,UAAWjJ,MAIf8zQ,EAAW1pQ,UAAYA,EACvB0pQ,EAAW7pQ,aAhBQ,CACjB7J,IAAK,OAgBP,IAAI+xM,EAAW2hE,EACf/gR,EAAQ,EAAUo/M,mCCxCdz4B,EAAyB,EAAQ,MAGrC3mL,EAAQ,OAAU,EAElB,IAAIsvR,EAAY3oG,EAAuB,EAAQ,OAE3C4oG,EAAiC5oG,EAAuB,EAAQ,OAEhEF,EAASE,EAAuB,EAAQ,OAExCyrF,EAAazrF,EAAuB,EAAQ,OAE5C6oG,EAAc7oG,EAAuB,EAAQ,OAE7C8oG,EAAS,EAAQ,MAEjBp4Q,EAAY,CACdhK,IAAKoiR,EAAOlB,YACZr4Q,UAAWk8P,EAAW7wQ,QAAQ6T,OAC9B4qQ,UAAW5N,EAAW7wQ,QAAQuqF,QAM5Bk1L,EAAY,SAAmBh+Q,GACjC,IAAIkT,EAAYlT,EAAMkT,UAClB8pQ,EAAYh9Q,EAAMg9Q,UAClBE,EAAMl9Q,EAAMqK,IACZrB,GAAa,EAAIujR,EAA+BhuR,SAASyB,EAAO,CAAC,YAAa,YAAa,QAC3FiK,GAAU,EAAIwiR,EAAO1B,kBAAiB,EAAIyB,EAAYjuR,SAAS2U,EAAW,cAAe8pQ,GAC7F,OAAOv5F,EAAOllL,QAAQzC,cAAcohR,GAAK,EAAIoP,EAAU/tR,SAAS,GAAIyK,EAAY,CAC9EkK,UAAWjJ,MAIf+zQ,EAAU3pQ,UAAYA,EACtB2pQ,EAAU9pQ,aAhBS,CACjB7J,IAAK,OAgBP,IAAI+xM,EAAW4hE,EACfhhR,EAAQ,EAAUo/M,mCCxCdz4B,EAAyB,EAAQ,MAGrC3mL,EAAQ,OAAU,EAElB,IAAIsvR,EAAY3oG,EAAuB,EAAQ,OAE3C4oG,EAAiC5oG,EAAuB,EAAQ,OAEhEF,EAASE,EAAuB,EAAQ,OAExCyrF,EAAazrF,EAAuB,EAAQ,OAE5C6oG,EAAc7oG,EAAuB,EAAQ,OAE7C8oG,EAAS,EAAQ,MAIjBxO,EAAqB7O,EAAW7wQ,QAAQ6xO,UAAU,CAACg/B,EAAW7wQ,QAAQw+F,OAAQqyK,EAAW7wQ,QAAQ6T,SAEjGm5B,EAAc6jO,EAAW7wQ,QAAQ6xO,UAAU,CAACg/B,EAAW7wQ,QAAQqqN,KAAMwmD,EAAW7wQ,QAAQw+F,OAAQqyK,EAAW7wQ,QAAQ6T,OAAQg9P,EAAW7wQ,QAAQixG,MAAM,CACtJtoG,KAAMkoQ,EAAW7wQ,QAAQ6xO,UAAU,CAACg/B,EAAW7wQ,QAAQqqN,KAAMwmD,EAAW7wQ,QAAQw+F,OAAQqyK,EAAW7wQ,QAAQ6T,SAC3G4wF,MAAOi7K,EACPvyQ,OAAQuyQ,MAGN5pQ,EAAY,CACdhK,IAAKoiR,EAAOlB,YACZrN,GAAI3yO,EACJ4yO,GAAI5yO,EACJu7M,GAAIv7M,EACJooN,GAAIpoN,EACJ6yO,GAAI7yO,EACJr4B,UAAWk8P,EAAW7wQ,QAAQ6T,OAC9B4qQ,UAAW5N,EAAW7wQ,QAAQuqF,OAC9BvZ,OAAQ6/L,EAAW7wQ,QAAQooF,OAOzB03L,EAAqB,SAA4BC,EAAMC,EAAUC,GACnE,OAAgB,IAAZA,GAAgC,KAAZA,EACfF,EAAO,MAAQ,OAASC,EACV,SAAZC,EACFF,EAAO,WAAa,OAASC,EAAW,QAG1CD,EAAO,OAASE,EAAU,OAASD,EAAW,IAAMC,GAGzDC,EAAM,SAAaz+Q,GACrB,IAAIkT,EAAYlT,EAAMkT,UAClB8pQ,EAAYh9Q,EAAMg9Q,UAClBztM,EAASvvE,EAAMuvE,OACf2tM,EAAMl9Q,EAAMqK,IACZrB,GAAa,EAAIujR,EAA+BhuR,SAASyB,EAAO,CAAC,YAAa,YAAa,SAAU,QACrG0+Q,EAAa,GACjBnvM,EAAOhoF,SAAQ,SAAUg3R,EAAUp5R,GACjC,IAAIw5R,EAAa3+Q,EAAMu+Q,GAGvB,UAFOv1Q,EAAWu1Q,GAEbI,GAA6B,KAAfA,EAAnB,CAIA,IAAIL,GAAQn5R,EAEZ,IAAI,EAAIsnS,EAAOjrH,UAAUm9G,GAAa,CACpC,IAAIC,EAEAC,EAAkBP,EAAO,IAAM,IAAMC,EAAW,IAChDO,EAAWT,EAAmBC,EAAMC,EAAUI,EAAWz3Q,MAC7Dw3Q,EAAW50R,MAAK,EAAI2iS,EAAO1B,kBAAiB,EAAIyB,EAAYjuR,WAAUqgR,EAAc,IAAgBE,GAAYH,EAAWz3Q,MAA4B,KAApBy3Q,EAAWz3Q,KAAa03Q,EAAY,QAAUC,EAAkBF,EAAW37K,OAAS27K,EAAW37K,OAA8B,IAArB27K,EAAW37K,MAAa47K,EAAY,SAAWC,EAAkBF,EAAWjzQ,QAAUizQ,EAAWjzQ,QAAgC,IAAtBizQ,EAAWjzQ,OAAckzQ,IAAe5B,QACzX,CACL,IAAI+B,EAAYV,EAAmBC,EAAMC,EAAUI,GAEnDD,EAAW50R,KAAKi1R,QAIfL,EAAWp5R,QACdo5R,EAAW50R,KAAK,OAGlB,IAAImgB,GAAU,EAAIwiR,EAAO1B,kBAAiB,EAAIyB,EAAYjuR,SAAS2U,EAAWwrQ,GAAa1B,GAC3F,OAAOv5F,EAAOllL,QAAQzC,cAAcohR,GAAK,EAAIoP,EAAU/tR,SAAS,GAAIyK,EAAY,CAC9EkK,UAAWjJ,MAIfw0Q,EAAIpqQ,UAAYA,EAChBoqQ,EAAIvqQ,aAxDe,CACjB7J,IAAK,MACLklE,OAvBc,CAAC,KAAM,KAAM,KAAM,KAAM,OA8EzC,IAAI6sI,EAAWqiE,EACfzhR,EAAQ,EAAUo/M,mCChGdz4B,EAAyB,EAAQ,MAEjCyxF,EAA0B,EAAQ,KAGtCp4Q,EAAQ,OAAU,EAElB,IAoBIgiR,EApBAsN,EAAY3oG,EAAuB,EAAQ,OAE3C4oG,EAAiC5oG,EAAuB,EAAQ,OAEhE+oG,EAA0B/oG,EAAuB,EAAQ,OAEzDgpG,EAAkBhpG,EAAuB,EAAQ,OAEjDipG,EAAiBjpG,EAAuB,EAAQ,MAEhDF,EAAS2xF,EAAwB,EAAQ,OAEzChG,EAAazrF,EAAuB,EAAQ,OAE5C6oG,EAAc7oG,EAAuB,EAAQ,OAE7CkpG,EAAwB,EAAQ,MAEhCJ,EAAS,EAAQ,MAIjBp4Q,GAAY,EAAIu4Q,EAAeruR,SAAS,GAAIsuR,EAAsB1T,WAAW9kQ,UAAW,CAC1F67J,OAAQk/F,EAAW7wQ,QAAQqqN,KAC3Bz+M,SAAUilQ,EAAW7wQ,QAAQ6xO,UAAU,CAACg/B,EAAW7wQ,QAAQwxO,QAAQq/B,EAAW7wQ,QAAQmkB,MAAO0sP,EAAW7wQ,QAAQmkB,OAChHrY,IAAKoiR,EAAOlB,YACZr4Q,UAAWk8P,EAAW7wQ,QAAQmkB,KAC9Bu8P,OAAQ7P,EAAW7wQ,QAAQqqN,KAC3Bo0D,UAAW5N,EAAW7wQ,QAAQuqF,OAC9B2hL,SAAU2E,EAAW7wQ,QAAQ6xO,UAAU,CAACg/B,EAAW7wQ,QAAQuN,KAAMsjQ,EAAW7wQ,QAAQ6T,OAAQg9P,EAAW7wQ,QAAQuqF,WAE7G50E,GAAe,EAAI04Q,EAAeruR,SAAS,GAAIsuR,EAAsB1T,WAAWjlQ,aAAc,CAChGg8J,QAAQ,EACRvxJ,QAAQ,EACRC,OAAO,EACPC,MAAM,EACNxU,IAAK,MACL5c,QAASg/R,EAAOjB,mBAAmB78G,WAEjCuwG,IAA+BF,EAAwB,IAA0ByN,EAAOf,mBAAmB3S,UAAY,aAAciG,EAAsByN,EAAOf,mBAAmB5S,SAAW,gBAAiBkG,EAAsByN,EAAOf,mBAAmB7S,SAAW,aAAcmG,EAAsByN,EAAOf,mBAAmB1S,QAAU,WAAYgG,GAMpW,SAASG,EAAUz8P,GACjB,OAAOA,EAAKwM,aAGd,IAAIy/I,EAEJ,SAAU2V,GAGR,SAAS3V,EAAS3uK,GAChB,IAAIvb,EASJ,OAPAA,EAAQ6/L,EAAW3/L,KAAKV,KAAM+b,IAAU/b,MAClCoyB,MAAQ,CACZzN,OAAQ,MAEV,CAAC,aAAc,YAAa,SAAU,YAAa,YAAYrhB,SAAQ,SAAUZ,GAC/ElC,EAAMkC,GAAQlC,EAAMkC,GAAMguB,MAAK,EAAI+3Q,EAAwBnuR,SAAS9Z,OAE/DA,GAZT,EAAIkoS,EAAgBpuR,SAASowK,EAAU2V,GAevC,IAAIvd,EAAS4H,EAASxqL,UA4EtB,OA1EA4iL,EAAO7nJ,WAAa,SAAoBwD,EAAM08P,GAC5Cn7R,KAAK6+B,SAAS,CACZla,OAAQu2Q,EAAUz8P,KAEpBz+B,KAAK+b,MAAMkf,WAAWwD,EAAM08P,IAG9Br4G,EAAO5nJ,UAAY,SAAmBuD,EAAM08P,GAC1Cn7R,KAAK6+B,SAAS,CACZla,OAAQ,OAEV3kB,KAAK+b,MAAMmf,UAAUuD,EAAM08P,IAG7Br4G,EAAO3nJ,OAAS,SAAgBsD,GAC9Bz+B,KAAK6+B,SAAS,CACZla,OAAQu2Q,EAAUz8P,KAEpBz+B,KAAK+b,MAAMof,OAAOsD,IAGpBqkJ,EAAO1nJ,UAAY,SAAmBqD,GAEtBA,EAAKvE,aAEnBl6B,KAAK6+B,SAAS,CACZla,OAAQ,IAEV3kB,KAAK+b,MAAMqf,UAAUqD,IAGvBqkJ,EAAOznJ,SAAW,SAAkBoD,GAClCz+B,KAAK6+B,SAAS,CACZla,OAAQ,OAEV3kB,KAAK+b,MAAMsf,SAASoD,IAGtBqkJ,EAAOroJ,OAAS,WACd,IAAImtJ,EAAS5nL,KAETouP,EAAcpuP,KAAK+b,MACnBk9Q,EAAM7qC,EAAYhoO,IAClB6lK,EAASmiE,EAAYniE,OACrBh9J,EAAYm/N,EAAYn/N,UACxB+rQ,EAAS5sC,EAAY4sC,OACrBjC,EAAY3qC,EAAY2qC,UACxB7yQ,EAAWkoO,EAAYloO,SAEvBk1Q,GADWhtC,EAAYo4B,UACV,EAAI8hB,EAA+BhuR,SAAS8zO,EAAa,CAAC,MAAO,SAAU,YAAa,SAAU,YAAa,WAAY,cACxIzpO,EAAS3kB,KAAKoyB,MAAMzN,OACpB4X,GAAkB,EAAIisQ,EAAOvB,MAAM7L,EAAYoN,EAAOhB,wBACtDnR,GAAa,EAAImS,EAAOxB,MAAM5L,EAAYoN,EAAOhB,wBACrD,OAAOhoG,EAAOllL,QAAQzC,cAAc+wR,EAAsB1T,YAAY,EAAImT,EAAU/tR,SAAS,GAAIiiB,EAAiB,CAChHC,GAAIyvJ,EACJhxJ,WAAYj7B,KAAKi7B,WACjBC,UAAWl7B,KAAKk7B,UAChBC,OAAQn7B,KAAKm7B,OACbC,UAAWp7B,KAAKo7B,UAChBC,SAAUr7B,KAAKq7B,YACb,SAAU9wB,GACZ,IAAI8wR,EAzFV,SAA4B9wR,GAC1B,OAAO0wR,EAA4B1wR,IAAW,WAwFtB+wR,CAAmB/wR,GACnCyb,GAAU,EAAIwiR,EAAO1B,kBAAiB,EAAIyB,EAAYjuR,SAAS2U,EAAWosQ,EAAeL,GAAU,mBAAoBjC,GACvHxxQ,EAAmB,OAAX5C,EAAkB,KAAO,CACnCA,OAAQA,GAEV,OAAO66K,EAAOllL,QAAQzC,cAAcohR,GAAK,EAAIoP,EAAU/tR,SAAS,GAAI+7Q,EAAY,CAC9E9uQ,OAAO,EAAIohR,EAAeruR,SAAS,GAAI+7Q,EAAW9uQ,MAAO,GAAIA,GAC7D0H,UAAWjJ,EACX+W,IAAK6qJ,EAAO7rK,MAAMyqQ,WAChBtgQ,OAIDwkK,EA5FT,CA6FE8U,EAAOgB,WAET9V,EAASt6J,UAAYA,EACrBs6J,EAASz6J,aAAeA,EACxB,IAAIkoM,EAAWztC,EACf3xK,EAAQ,EAAUo/M,mCC5Jdz4B,EAAyB,EAAQ,MAGrC3mL,EAAQ,OAAU,EAElB,IAAIsvR,EAAY3oG,EAAuB,EAAQ,OAE3C4oG,EAAiC5oG,EAAuB,EAAQ,OAEhEF,EAASE,EAAuB,EAAQ,OAExCyrF,EAAazrF,EAAuB,EAAQ,OAE5C6oG,EAAc7oG,EAAuB,EAAQ,OAE7C8oG,EAAS,EAAQ,MAEjBp4Q,EAAY,CACdhK,IAAKoiR,EAAOlB,YACZ/L,MAAOpQ,EAAW7wQ,QAAQ6xO,UAAU,CAACg/B,EAAW7wQ,QAAQqqN,KAAMwmD,EAAW7wQ,QAAQ6T,SACjFc,UAAWk8P,EAAW7wQ,QAAQ6T,OAC9B4qQ,UAAW5N,EAAW7wQ,QAAQuqF,QAM5B22L,EAAY,SAAmBz/Q,GACjC,IAAIkT,EAAYlT,EAAMkT,UAClB8pQ,EAAYh9Q,EAAMg9Q,UAClBwC,EAAQx/Q,EAAMw/Q,MACdtC,EAAMl9Q,EAAMqK,IACZrB,GAAa,EAAIujR,EAA+BhuR,SAASyB,EAAO,CAAC,YAAa,YAAa,QAAS,QACpG0/Q,EAAiB,aAEP,IAAVF,EACFE,EAAiB,kBACRF,IACTE,EAAiB,aAAeF,GAGlC,IAAIv1Q,GAAU,EAAIwiR,EAAO1B,kBAAiB,EAAIyB,EAAYjuR,SAAS2U,EAAWwsQ,GAAiB1C,GAC/F,OAAOv5F,EAAOllL,QAAQzC,cAAcohR,GAAK,EAAIoP,EAAU/tR,SAAS,GAAIyK,EAAY,CAC9EkK,UAAWjJ,MAIfw1Q,EAAUprQ,UAAYA,EACtBorQ,EAAUvrQ,aAzBS,CACjB7J,IAAK,OAyBP,IAAI+xM,EAAWqjE,EACfziR,EAAQ,EAAUo/M,+BClDlB,IAAIz4B,EAAyB,EAAQ,MAErC3mL,EAAQsB,YAAa,EACrBtB,EAAA,aAAkB,EAElB,IAAIsvR,EAAY3oG,EAAuB,EAAQ,OAE3C4oG,EAAiC5oG,EAAuB,EAAQ,OAEhEmpG,EAAiBnpG,EAAuB,EAAQ,MAEhDF,EAASE,EAAuB,EAAQ,OAExCyrF,EAAazrF,EAAuB,EAAQ,OAE5C6oG,EAAc7oG,EAAuB,EAAQ,OAE7CkpG,EAAwB,EAAQ,MAEhCJ,EAAS,EAAQ,MAEjBp4Q,GAAY,EAAIy4Q,EAAevuR,SAAS,GAAIsuR,EAAsB1T,WAAW9kQ,UAAW,CAC1FlK,SAAUilQ,EAAW7wQ,QAAQ6xO,UAAU,CAACg/B,EAAW7wQ,QAAQwxO,QAAQq/B,EAAW7wQ,QAAQmkB,MAAO0sP,EAAW7wQ,QAAQmkB,OAChHrY,IAAKoiR,EAAOlB,YACZlO,UAAWjO,EAAW7wQ,QAAQ6T,OAC9B4vQ,gBAAiB5S,EAAW7wQ,QAAQ6T,OACpCc,UAAWk8P,EAAW7wQ,QAAQ6T,OAC9B4qQ,UAAW5N,EAAW7wQ,QAAQuqF,OAC9B2hL,SAAU2E,EAAW7wQ,QAAQ6xO,UAAU,CAACg/B,EAAW7wQ,QAAQuqF,OAAQsmL,EAAW7wQ,QAAQ6T,OAAQg9P,EAAW7wQ,QAAQuN,SAE/GoI,GAAe,EAAI44Q,EAAevuR,SAAS,GAAIsuR,EAAsB1T,WAAWjlQ,aAAc,CAChG7J,IAAK,MACLgzQ,UAAW,OACX2E,gBAAiB,OACjBv0R,QAASg/R,EAAOjB,mBAAmB/pQ,KACnC9C,QAAQ,EACRC,OAAO,EACPC,MAAM,EACN4B,IAAI,IAGN,SAASgB,EAAKzhB,GACZ,IAAIk9Q,EAAMl9Q,EAAMqK,IACZgzQ,EAAYr9Q,EAAMq9Q,UAClB2E,EAAkBhiR,EAAMgiR,gBACxB9uQ,EAAYlT,EAAMkT,UAClB8pQ,EAAYh9Q,EAAMg9Q,UAClB7yQ,EAAWnK,EAAMmK,SACjBsgQ,EAAWzqQ,EAAMyqQ,SACjB4U,GAAa,EAAIkN,EAA+BhuR,SAASyB,EAAO,CAAC,MAAO,YAAa,kBAAmB,YAAa,YAAa,WAAY,aAC9IwgB,GAAkB,EAAIisQ,EAAOvB,MAAM7L,EAAYoN,EAAOhB,wBACtDnR,GAAa,EAAImS,EAAOxB,MAAM5L,EAAYoN,EAAOhB,wBACrD,OAAOhoG,EAAOllL,QAAQzC,cAAc+wR,EAAsB1T,WAAY34P,GAAiB,SAAUhyB,GAC/F,IAAIm3D,EAAsB,YAAXn3D,EACXyb,GAAU,EAAIwiR,EAAO1B,kBAAiB,EAAIyB,EAAYjuR,SAAS2U,EAAWmqQ,EAAW13N,GAAYq8N,GAAkBhF,GACvH,OAAOv5F,EAAOllL,QAAQzC,cAAcohR,GAAK,EAAIoP,EAAU/tR,SAAS,CAC9D2U,UAAWjJ,GACVqwQ,EAAY,CACbt5P,IAAKypP,IACHtgQ,MAIRsX,EAAKpN,UAAYA,EACjBoN,EAAKvN,aAAeA,EACpB,IAAIkoM,EAAW36L,EACfzkB,EAAA,QAAkBo/M,mCClEdg5D,EAA0B,EAAQ,KAElCzxF,EAAyB,EAAQ,MAGrC3mL,EAAQ,OAAU,EAElB,IAAIsvR,EAAY3oG,EAAuB,EAAQ,OAE3C4oG,EAAiC5oG,EAAuB,EAAQ,OAEhE+oG,EAA0B/oG,EAAuB,EAAQ,OAEzDgpG,EAAkBhpG,EAAuB,EAAQ,OAEjDF,EAAS2xF,EAAwB,EAAQ,OAEzChG,EAAazrF,EAAuB,EAAQ,OAE5C6oG,EAAc7oG,EAAuB,EAAQ,OAE7C8oG,EAAS,EAAQ,MAEjBp4Q,EAAY,CACdlK,SAAUilQ,EAAW7wQ,QAAQmkB,KAC7Bu/P,OAAQ7S,EAAW7wQ,QAAQqqN,KAC3Bv+M,IAAKoiR,EAAOlB,YACZ9gB,SAAU2E,EAAW7wQ,QAAQ6xO,UAAU,CAACg/B,EAAW7wQ,QAAQuqF,OAAQsmL,EAAW7wQ,QAAQuN,KAAMsjQ,EAAW7wQ,QAAQ6T,SAC/Gc,UAAWk8P,EAAW7wQ,QAAQ6T,OAC9B4qQ,UAAW5N,EAAW7wQ,QAAQuqF,QAM5Bo5L,EAEJ,SAAU59F,GAGR,SAAS49F,EAAKliR,GACZ,IAAIvb,EAKJ,OAHAA,EAAQ6/L,EAAW3/L,KAAKV,KAAM+b,IAAU/b,MAClCk+R,OAAS19R,EAAM09R,OAAOxtQ,MAAK,EAAI+3Q,EAAwBnuR,SAAS9Z,IACtEA,EAAMqwF,OAASrwF,EAAMqwF,OAAOngE,MAAK,EAAI+3Q,EAAwBnuR,SAAS9Z,IAC/DA,GART,EAAIkoS,EAAgBpuR,SAAS2jR,EAAM59F,GAWnC,IAAIvd,EAASm7G,EAAK/9R,UA+BlB,OA7BA4iL,EAAOo7G,OAAS,SAAgBnhQ,GAC1B/8B,KAAK+b,MAAMyqQ,UACbxmR,KAAK+b,MAAMyqQ,SAASzpP,GAGtB/8B,KAAK+8B,IAAMA,GAGb+lJ,EAAOjyF,OAAS,WACV7wF,KAAK+8B,KACP/8B,KAAK+8B,IAAI8zD,UAIbiyF,EAAOroJ,OAAS,WACd,IAAI2zN,EAAcpuP,KAAK+b,MACnBkT,EAAYm/N,EAAYn/N,UACxB8pQ,EAAY3qC,EAAY2qC,UACxBiF,EAAS5vC,EAAY4vC,OACrB/E,EAAM7qC,EAAYhoO,IAClBogQ,EAAWp4B,EAAYo4B,SACvBzhQ,GAAa,EAAIujR,EAA+BhuR,SAAS8zO,EAAa,CAAC,YAAa,YAAa,SAAU,MAAO,aAClHpoO,GAAU,EAAIwiR,EAAO1B,kBAAiB,EAAIyB,EAAYjuR,SAAS2U,IAAW+uQ,GAAS,eAAwBjF,GAC/G,OAAOv5F,EAAOllL,QAAQzC,cAAcohR,GAAK,EAAIoP,EAAU/tR,SAAS,GAAIyK,EAAY,CAC9EgY,IAAKypP,EACLv3P,UAAWjJ,MAIRi4Q,EA3CT,CA4CEz+F,EAAOgB,WAETy9F,EAAK7tQ,UAAYA,EACjB6tQ,EAAKhuQ,aArDc,CACjB7J,IAAK,QAqDP,IAAI+xM,EAAW8lE,EACfllR,EAAQ,EAAUo/M,mCCtFdz4B,EAAyB,EAAQ,MAGrC3mL,EAAQ,OAAU,EAElB,IAAIsvR,EAAY3oG,EAAuB,EAAQ,OAE3C4oG,EAAiC5oG,EAAuB,EAAQ,OAEhEF,EAASE,EAAuB,EAAQ,OAExCyrF,EAAazrF,EAAuB,EAAQ,OAE5C6oG,EAAc7oG,EAAuB,EAAQ,OAE7C8oG,EAAS,EAAQ,MAEjBp4Q,EAAY,CACdlK,SAAUilQ,EAAW7wQ,QAAQmkB,KAC7B4/B,IAAK8sN,EAAW7wQ,QAAQqqN,KACxB5X,MAAOo+D,EAAW7wQ,QAAQqqN,KAC1Bq5D,OAAQ7S,EAAW7wQ,QAAQqqN,KAC3Bv/L,SAAU+lP,EAAW7wQ,QAAQqqN,KAC7Bv+M,IAAKoiR,EAAOlB,YACZr4Q,UAAWk8P,EAAW7wQ,QAAQ6T,OAC9B4qQ,UAAW5N,EAAW7wQ,QAAQuqF,QAM5Bs5L,EAAY,SAAmBpiR,GACjC,IAAIkT,EAAYlT,EAAMkT,UAClB8pQ,EAAYh9Q,EAAMg9Q,UAClB16N,EAAMtiD,EAAMsiD,IACZj5B,EAAWrpB,EAAMqpB,SACjB2nL,EAAQhxM,EAAMgxM,MACdixE,EAASjiR,EAAMiiR,OACf/E,EAAMl9Q,EAAMqK,IACZrB,GAAa,EAAIujR,EAA+BhuR,SAASyB,EAAO,CAAC,YAAa,YAAa,MAAO,WAAY,QAAS,SAAU,QACjIiK,GAAU,EAAIwiR,EAAO1B,kBAAiB,EAAIyB,EAAYjuR,SAAS2U,IAAWovC,GAAM,MAAe0uJ,EAAQ,aAAe,gBAAcA,IAASixE,IAAS,uBAA6BjxE,IAAS3nL,IAAW,YAAqB2zP,GAMhO,MAJY,aAARE,IACFl0Q,EAAWqgB,SAAWA,GAGjBo6J,EAAOllL,QAAQzC,cAAcohR,GAAK,EAAIoP,EAAU/tR,SAAS,GAAIyK,EAAY,CAC9EkK,UAAWjJ,MAIfm4Q,EAAU/tQ,UAAYA,EACtB+tQ,EAAUluQ,aAzBS,CACjB7J,IAAK,OAyBP,IAAI+xM,EAAWgmE,EACfplR,EAAQ,EAAUo/M,mCCtDdz4B,EAAyB,EAAQ,MAGrC3mL,EAAQ,OAAU,EAElB,IAAIsvR,EAAY3oG,EAAuB,EAAQ,OAE3C4oG,EAAiC5oG,EAAuB,EAAQ,OAEhE+oG,EAA0B/oG,EAAuB,EAAQ,OAEzDgpG,EAAkBhpG,EAAuB,EAAQ,OAEjDF,EAASE,EAAuB,EAAQ,OAExCyrF,EAAazrF,EAAuB,EAAQ,OAE5C6oG,EAAc7oG,EAAuB,EAAQ,OAE7C8oG,EAAS,EAAQ,MAGjBp4Q,EAAY,CACdlK,SAAUilQ,EAAW7wQ,QAAQmkB,KAC7BnyB,KAAM6+Q,EAAW7wQ,QAAQ6T,OACzBlL,KAAMkoQ,EAAW7wQ,QAAQ6T,OACzBiwQ,OAAQjT,EAAW7wQ,QAAQ6T,OAC3B8R,MAAOkrP,EAAW7wQ,QAAQqqN,KAC1B7wE,QAASq3H,EAAW7wQ,QAAQqqN,KAC5Bv+M,IAAKoiR,EAAOlB,YACZ9gB,SAAU2E,EAAW7wQ,QAAQ6xO,UAAU,CAACg/B,EAAW7wQ,QAAQuqF,OAAQsmL,EAAW7wQ,QAAQuN,KAAMsjQ,EAAW7wQ,QAAQ6T,SAC/GkwQ,UAAWlT,EAAW7wQ,QAAQqqN,KAC9B25D,MAAOnT,EAAW7wQ,QAAQqqN,KAC1B11M,UAAWk8P,EAAW7wQ,QAAQ6T,OAC9B4qQ,UAAW5N,EAAW7wQ,QAAQuqF,QAM5BvlD,EAEJ,SAAU2mO,GAGR,SAAS3mO,EAAMvjC,GACb,IAAIvb,EAKJ,OAHAA,EAAQylR,EAAiBvlR,KAAKV,KAAM+b,IAAU/b,MACxCk+R,OAAS19R,EAAM09R,OAAOxtQ,MAAK,EAAI+3Q,EAAwBnuR,SAAS9Z,IACtEA,EAAMkkC,MAAQlkC,EAAMkkC,MAAMhU,MAAK,EAAI+3Q,EAAwBnuR,SAAS9Z,IAC7DA,GART,EAAIkoS,EAAgBpuR,SAASglC,EAAO2mO,GAWpC,IAAInjG,EAASxjI,EAAMp/C,UAyEnB,OAvEA4iL,EAAOo7G,OAAS,SAAgBnhQ,GAC1B/8B,KAAK+b,MAAMyqQ,UACbxmR,KAAK+b,MAAMyqQ,SAASzpP,GAGtB/8B,KAAK+8B,IAAMA,GAGb+lJ,EAAOp+I,MAAQ,WACT1kC,KAAK+8B,KACP/8B,KAAK+8B,IAAI2H,SAIbo+I,EAAOroJ,OAAS,WACd,IAAI2zN,EAAcpuP,KAAK+b,MACnBkT,EAAYm/N,EAAYn/N,UACxB8pQ,EAAY3qC,EAAY2qC,UACxBzsR,EAAO8hP,EAAY9hP,KACnB8xR,EAAShwC,EAAYgwC,OACrBn+P,EAAQmuN,EAAYnuN,MACpB6zH,EAAUs6F,EAAYt6F,QACtB1tI,EAAMgoO,EAAYhoO,IAClBk4Q,EAAQlwC,EAAYkwC,MACpBD,EAAYjwC,EAAYiwC,UACxB7X,EAAWp4B,EAAYo4B,SACvBzhQ,GAAa,EAAIujR,EAA+BhuR,SAAS8zO,EAAa,CAAC,YAAa,YAAa,OAAQ,SAAU,QAAS,UAAW,MAAO,QAAS,YAAa,aACpKmwC,EAAa,CAAC,QAAS,YAAY72R,QAAQ4E,IAAS,EACpDkyR,EAAe,IAAItyQ,OAAO,MAAO,KAIjC+sQ,EAAM7yQ,IADiB,WAAT9Z,GADW,aAATA,EAE6BA,EAAO,SACpDmyR,EAAmB,eAEnBJ,GACFI,GAAsC,aACtCxF,EAAM7yQ,GAAO,SARU,SAAT9Z,EAUdmyR,GAAsC,QAC7BF,IAEPE,EADEH,EACiB,KAEA,oBAInBv5Q,EAAW9B,MAAQu7Q,EAAap+Q,KAAK2E,EAAW9B,SAClD,EAAIulR,EAAOrB,UAAU,oFACrB/I,EAASr5Q,EAAW9B,YACb8B,EAAW9B,MAGpB,IAAI+C,GAAU,EAAIwiR,EAAO1B,kBAAiB,EAAIyB,EAAYjuR,SAAS2U,EAAW6kI,GAAW,aAAc7zH,GAAS,aAAYm+P,GAAS,gBAAkBA,EAAgBK,GAAmB1F,GAW1L,OATY,UAARE,GAAmB7yQ,GAAsB,mBAARA,KACnCrB,EAAWzY,KAAOA,GAGhByY,EAAWmB,WAAcm4Q,GAAsB,WAAT/xR,GAAoC,iBAAR2sR,GAA4B,WAARA,KACxF,EAAIuP,EAAOrB,UAAU,yBAA4B76R,EAAO,6EACjDyY,EAAWmB,UAGbs5K,EAAOllL,QAAQzC,cAAcohR,GAAK,EAAIoP,EAAU/tR,SAAS,GAAIyK,EAAY,CAC9EgY,IAAKypP,EACLv3P,UAAWjJ,MAIRs5B,EArFT,CAsFEkgJ,EAAOllL,QAAQkmL,WAEjBlhJ,EAAMlvB,UAAYA,EAClBkvB,EAAMrvB,aA/Fa,CACjB3jB,KAAM,QA+FR,IAAI6rN,EAAW74K,EACfvmC,EAAQ,EAAUo/M,mCCrIdz4B,EAAyB,EAAQ,MAGrC3mL,EAAQ,OAAU,EAElB,IAAIsvR,EAAY3oG,EAAuB,EAAQ,OAE3C4oG,EAAiC5oG,EAAuB,EAAQ,OAEhEF,EAASE,EAAuB,EAAQ,OAExCyrF,EAAazrF,EAAuB,EAAQ,OAE5C6oG,EAAc7oG,EAAuB,EAAQ,OAE7C8oG,EAAS,EAAQ,MAIjBxO,EAAqB7O,EAAW7wQ,QAAQ6xO,UAAU,CAACg/B,EAAW7wQ,QAAQw+F,OAAQqyK,EAAW7wQ,QAAQ6T,SAEjGm5B,EAAc6jO,EAAW7wQ,QAAQ6xO,UAAU,CAACg/B,EAAW7wQ,QAAQ6T,OAAQg9P,EAAW7wQ,QAAQw+F,OAAQqyK,EAAW7wQ,QAAQixG,MAAM,CAC7HtoG,KAAM+2Q,EACNj7K,MAAOi7K,EACPvyQ,OAAQuyQ,MAGN5pQ,EAAY,CACdlK,SAAUilQ,EAAW7wQ,QAAQmkB,KAC7BotD,OAAQs/L,EAAW7wQ,QAAQqqN,KAC3B5X,MAAOo+D,EAAW7wQ,QAAQqqN,KAC1B1hN,KAAMkoQ,EAAW7wQ,QAAQ6T,OACzBwgO,IAAKw8B,EAAW7wQ,QAAQ6T,OACxB/H,IAAKoiR,EAAOlB,YACZr4Q,UAAWk8P,EAAW7wQ,QAAQ6T,OAC9B4qQ,UAAW5N,EAAW7wQ,QAAQuqF,OAC9Bo1L,GAAI3yO,EACJ4yO,GAAI5yO,EACJu7M,GAAIv7M,EACJooN,GAAIpoN,EACJ6yO,GAAI7yO,EACJgkC,OAAQ6/L,EAAW7wQ,QAAQooF,OAOzB03L,EAAqB,SAA4BC,EAAMC,EAAUC,GACnE,OAAgB,IAAZA,GAAgC,KAAZA,EACfF,EAAO,MAAQ,OAASC,EACV,SAAZC,EACFF,EAAO,WAAa,OAASC,EAAW,QAG1CD,EAAO,OAASE,EAAU,OAASD,EAAW,IAAMC,GAGzDoE,EAAQ,SAAe5iR,GACzB,IAAIkT,EAAYlT,EAAMkT,UAClB8pQ,EAAYh9Q,EAAMg9Q,UAClBltM,EAAS9vE,EAAM8vE,OACfP,EAASvvE,EAAMuvE,OACf2tM,EAAMl9Q,EAAMqK,IACZ2mM,EAAQhxM,EAAMgxM,MACd9pM,EAAOlH,EAAMkH,KACbod,EAAUtkB,EAAM4yO,IAChB5pO,GAAa,EAAIujR,EAA+BhuR,SAASyB,EAAO,CAAC,YAAa,YAAa,SAAU,SAAU,MAAO,QAAS,OAAQ,QACvI0+Q,EAAa,GACjBnvM,EAAOhoF,SAAQ,SAAUg3R,EAAUp5R,GACjC,IAAIw5R,EAAa3+Q,EAAMu+Q,GAGvB,UAFOv1Q,EAAWu1Q,GAEbI,GAA6B,KAAfA,EAAnB,CAIA,IACIG,EADAR,GAAQn5R,EAGZ,IAAI,EAAIsnS,EAAOjrH,UAAUm9G,GAAa,CACpC,IAAIC,EAEAC,EAAkBP,EAAO,IAAM,IAAMC,EAAW,IACpDO,EAAWT,EAAmBC,EAAMC,EAAUI,EAAWz3Q,MACzDw3Q,EAAW50R,MAAK,EAAI2iS,EAAO1B,kBAAiB,EAAIyB,EAAYjuR,WAAUqgR,EAAc,IAAgBE,GAAYH,EAAWz3Q,MAA4B,KAApBy3Q,EAAWz3Q,KAAa03Q,EAAY,QAAUC,EAAkBF,EAAW37K,OAAS27K,EAAW37K,OAA8B,IAArB27K,EAAW37K,MAAa47K,EAAY,SAAWC,EAAkBF,EAAWjzQ,QAAUizQ,EAAWjzQ,QAAgC,IAAtBizQ,EAAWjzQ,OAAckzQ,KAAgB5B,QAE/X8B,EAAWT,EAAmBC,EAAMC,EAAUI,GAC9CD,EAAW50R,KAAKg1R,OAGpB,IAAI70Q,GAAU,EAAIwiR,EAAO1B,kBAAiB,EAAIyB,EAAYjuR,SAAS2U,IAAW48D,GAAS,YAAmBkhI,GAAQ,qBAA4B9pM,GAAO,kBAAoBA,EAAcw3Q,IAAYA,EAAWp5R,QAAS,kBAA2B03R,GAClP,OAAOv5F,EAAOllL,QAAQzC,cAAcohR,GAAK,EAAIoP,EAAU/tR,SAAS,CAC9D+lB,QAASA,GACRtb,EAAY,CACbkK,UAAWjJ,MAIf24Q,EAAMvuQ,UAAYA,EAClBuuQ,EAAM1uQ,aAzDa,CACjB7J,IAAK,QACLklE,OA5Bc,CAAC,KAAM,KAAM,KAAM,KAAM,OAoFzC,IAAI6sI,EAAWwmE,EACf5lR,EAAQ,EAAUo/M,mCCtGdz4B,EAAyB,EAAQ,MAGrC3mL,EAAQ,OAAU,EAElB,IAAI8vR,EAAiBnpG,EAAuB,EAAQ,MAEhD2oG,EAAY3oG,EAAuB,EAAQ,OAE3C+oG,EAA0B/oG,EAAuB,EAAQ,OAEzDgpG,EAAkBhpG,EAAuB,EAAQ,OAEjDF,EAASE,EAAuB,EAAQ,OAExCyrF,EAAazrF,EAAuB,EAAQ,OAE5C6oG,EAAc7oG,EAAuB,EAAQ,OAE7CopG,EAAUppG,EAAuB,EAAQ,OAEzCqpG,EAAQrpG,EAAuB,EAAQ,OAEvC8oG,EAAS,EAAQ,MAErB,SAAS5rR,KAET,IAAIiiR,EAAgB1T,EAAW7wQ,QAAQixG,MAAMw9K,EAAMzuR,QAAQ8V,WAEvDA,EAAY,CACd67J,OAAQk/F,EAAW7wQ,QAAQqqN,KAC3B0iC,UAAW8jB,EAAW7wQ,QAAQqqN,KAC9Bm6D,SAAU3T,EAAW7wQ,QAAQqqN,KAC7BrqK,WAAY6wN,EAAW7wQ,QAAQqqN,KAC/B1hN,KAAMkoQ,EAAW7wQ,QAAQ6T,OACzB2nI,OAAQq1H,EAAW7wQ,QAAQuN,KAC3Bk9J,SAAUomG,EAAW7wQ,QAAQqqN,KAC7Bx+M,KAAMglQ,EAAW7wQ,QAAQ6T,OACzB4wQ,WAAY5T,EAAW7wQ,QAAQ6T,OAC/BohK,SAAU47F,EAAW7wQ,QAAQ6xO,UAAU,CAACg/B,EAAW7wQ,QAAQqqN,KAAMwmD,EAAW7wQ,QAAQ4xO,MAAM,CAAC,aAC3FlxN,QAASmwP,EAAW7wQ,QAAQuN,KAC5BsT,OAAQgwP,EAAW7wQ,QAAQuN,KAC3BouJ,SAAUk1G,EAAW7wQ,QAAQuN,KAC7BwuJ,SAAU80G,EAAW7wQ,QAAQuN,KAC7B3B,SAAUilQ,EAAW7wQ,QAAQmkB,KAC7BxP,UAAWk8P,EAAW7wQ,QAAQ6T,OAC9B6wQ,cAAe7T,EAAW7wQ,QAAQ6T,OAClC8wQ,eAAgB9T,EAAW7wQ,QAAQ6T,OACnC+wQ,kBAAmB/T,EAAW7wQ,QAAQ6T,OACtCgxQ,iBAAkBhU,EAAW7wQ,QAAQ6T,OACrCixQ,SAAUjU,EAAW7wQ,QAAQmkB,KAC7Bu6P,KAAM7N,EAAW7wQ,QAAQqqN,KACzBo0D,UAAW5N,EAAW7wQ,QAAQuqF,OAC9Bj0D,OAAQu6O,EAAW7wQ,QAAQ6xO,UAAU,CAACg/B,EAAW7wQ,QAAQw+F,OAAQqyK,EAAW7wQ,QAAQ6T,SACpFkxQ,mBAAoBR,EACpBS,gBAAiBT,EACjBrY,SAAU2E,EAAW7wQ,QAAQ6xO,UAAU,CAACg/B,EAAW7wQ,QAAQuqF,OAAQsmL,EAAW7wQ,QAAQ6T,OAAQg9P,EAAW7wQ,QAAQuN,OACjH03Q,eAAgBpU,EAAW7wQ,QAAQqqN,KACnC66D,sBAAuBrU,EAAW7wQ,QAAQqqN,MAExC86D,EAAclgS,OAAO6K,KAAKgmB,GAC1BH,EAAe,CACjBg8J,QAAQ,EACRo7E,WAAW,EACXy3B,UAAU,EACVxkO,YAAY,EACZn0C,KAAM,SACNopK,UAAU,EACVxK,UAAU,EACVn0I,OAAQ,KACRooP,MAAM,EACN/iH,SAAUr5J,EACVy5J,SAAUz5J,EACV0iR,gBAAiB,CACf91R,QAASg/R,EAAOjB,mBAAmBp3G,OAErCkvG,mBAAoB,CAClB/jQ,cAAc,EACd9xB,QAASg/R,EAAOjB,mBAAmB/pQ,MAGrC+hQ,gBAAgB,EAChBC,uBAAuB,GAGrBrvG,EAEJ,SAAU81F,GAGR,SAAS91F,EAAMp0K,GACb,IAAIvb,EAmBJ,OAjBAA,EAAQylR,EAAiBvlR,KAAKV,KAAM+b,IAAU/b,MACxCw6B,SAAW,KACjBh6B,EAAMk/R,qBAAuB,KAC7Bl/R,EAAMm/R,qBAAuBn/R,EAAMm/R,qBAAqBjvQ,MAAK,EAAI+3Q,EAAwBnuR,SAAS9Z,IAClGA,EAAMo/R,oBAAsBp/R,EAAMo/R,oBAAoBlvQ,MAAK,EAAI+3Q,EAAwBnuR,SAAS9Z,IAChGA,EAAMq/R,wBAA0Br/R,EAAMq/R,wBAAwBnvQ,MAAK,EAAI+3Q,EAAwBnuR,SAAS9Z,IACxGA,EAAMs/R,aAAet/R,EAAMs/R,aAAapvQ,MAAK,EAAI+3Q,EAAwBnuR,SAAS9Z,IAClFA,EAAMu/R,8BAAgCv/R,EAAMu/R,8BAA8BrvQ,MAAK,EAAI+3Q,EAAwBnuR,SAAS9Z,IACpHA,EAAMw/R,UAAYx/R,EAAMw/R,UAAUtvQ,MAAK,EAAI+3Q,EAAwBnuR,SAAS9Z,IAC5EA,EAAMy1K,SAAWz1K,EAAMy1K,SAASvlJ,MAAK,EAAI+3Q,EAAwBnuR,SAAS9Z,IAC1EA,EAAM61K,SAAW71K,EAAM61K,SAAS3lJ,MAAK,EAAI+3Q,EAAwBnuR,SAAS9Z,IAC1EA,EAAMy/R,sBAAwBz/R,EAAMy/R,sBAAsBvvQ,MAAK,EAAI+3Q,EAAwBnuR,SAAS9Z,IACpGA,EAAM0/R,8BAAgC1/R,EAAM0/R,8BAA8BxvQ,MAAK,EAAI+3Q,EAAwBnuR,SAAS9Z,IACpHA,EAAM4xB,MAAQ,CACZ65J,QAAQ,EACRk0G,6BAA6B,GAExB3/R,GAtBT,EAAIkoS,EAAgBpuR,SAAS61K,EAAO81F,GAyBpC,IAAInjG,EAASqN,EAAMjwL,UAwUnB,OAtUA4iL,EAAOz+I,kBAAoB,WACzB,IAAI+pN,EAAcpuP,KAAK+b,MACnBkwK,EAASmiE,EAAYniE,OACrBo7E,EAAYjZ,EAAYiZ,UACxBrsO,EAAUozN,EAAYpzN,QAEtBixJ,IACFjsL,KAAK8oM,OACL9oM,KAAK6+B,SAAS,CACZotJ,QAAQ,IAGNo7E,GACFrnQ,KAAKogS,YAILplQ,GACFA,IAGFh7B,KAAKopR,YAAa,GAGpBtmG,EAAOzvI,mBAAqB,SAA4BC,EAAWC,GACjE,GAAIvzC,KAAK+b,MAAMkwK,SAAW34I,EAAU24I,OAMlC,OALAjsL,KAAK8oM,YACL9oM,KAAK6+B,SAAS,CACZotJ,QAAQ,IAORjsL,KAAK+b,MAAMsrP,WAAarnQ,KAAKoyB,MAAM65J,SAAW14I,EAAU04I,QAC1DjsL,KAAKogS,WAGHpgS,KAAKw6B,UAAY8Y,EAAU1C,SAAW5wC,KAAK+b,MAAM60B,SACnD5wC,KAAKw6B,SAASjT,MAAMqpB,OAAS5wC,KAAK+b,MAAM60B,SAI5CkyI,EAAOx+I,qBAAuB,WAC5BtkC,KAAKkgS,gCAEDlgS,KAAK+b,MAAMof,QACbn7B,KAAK+b,MAAMof,SAGTn7B,KAAKw6B,WACPx6B,KAAK+jC,UAED/jC,KAAK+b,MAAMkwK,QACbjsL,KAAK0T,SAIT1T,KAAKopR,YAAa,GAGpBtmG,EAAO7M,SAAW,SAAkBx3I,EAAM08P,GACxCn7R,KAAK+b,MAAMk6J,YACVj2K,KAAK+b,MAAMujR,gBAAgBpkQ,WAAate,GAAM6hB,EAAM08P,IAGvDr4G,EAAOzM,SAAW,SAAkB53I,GAClC,IAAI8gQ,EAAiBv/R,KAAK+b,MAAMwjR,eAEhCv/R,KAAK+b,MAAMs6J,YACVr2K,KAAK+b,MAAMujR,gBAAgBjkQ,UAAYze,GAAM6hB,GAE1C8gQ,GACFv/R,KAAK+jC,UAGP/jC,KAAK0T,QAED1T,KAAKopR,YACPppR,KAAK6+B,SAAS,CACZotJ,QAAQ,KAKdnJ,EAAOs9G,SAAW,WACZpgS,KAAKowL,SAAWpwL,KAAKowL,QAAQriJ,YAAuD,mBAAlC/tC,KAAKowL,QAAQriJ,WAAWrJ,OAC5E1kC,KAAKowL,QAAQriJ,WAAWrJ,SAI5Bo+I,EAAO68G,qBAAuB,WAC5B,OAAO3/R,KAAKw6B,SAASiK,iBAAiB+jQ,EAAOJ,kBAAkBniR,KAAK,QAGtE68J,EAAOu9G,gBAAkB,WACvB,IAAIC,EACAC,EAAoBvgS,KAAK2/R,uBAE7B,IACEW,EAAe3oR,SAASg9B,cACxB,MAAOztC,GACPo5R,EAAeC,EAAkB,GAGnC,OAAOD,GAITx9G,EAAO88G,oBAAsB,SAA6B95R,GACxD,GAAIA,EAAEqL,SAAWnR,KAAKwgS,kBAAmB,CACvC16R,EAAEuwC,kBACF,IAAIk5I,EAAWvvL,KAAKowL,QAAUpwL,KAAKowL,QAAQriJ,WAAa,KAMxD,GAJIwhJ,GAAYzpL,EAAEqL,SAAWo+K,GAAoC,WAAxBvvL,KAAK+b,MAAMwzK,UAClDvvL,KAAK+/R,iCAGF//R,KAAK+b,MAAMkwK,SAAkC,IAAxBjsL,KAAK+b,MAAMwzK,SAAmB,OAEpDA,GAAYzpL,EAAEqL,SAAWo+K,GAAYvvL,KAAK+b,MAAM+5I,QAClD91J,KAAK+b,MAAM+5I,OAAOhwJ,KAKxBg9K,EAAOk9G,UAAY,SAAmBl6R,GACpC,GAAgB,IAAZA,EAAEm9B,MAAN,CACA,IAAIs9P,EAAoBvgS,KAAK2/R,uBACzBc,EAAiBF,EAAkBl/R,OACvC,GAAuB,IAAnBo/R,EAAJ,CAIA,IAHA,IAAIH,EAAetgS,KAAKqgS,kBACpB73P,EAAe,EAEVtnC,EAAI,EAAGA,EAAIu/R,EAAgBv/R,GAAK,EACvC,GAAIq/R,EAAkBr/R,KAAOo/R,EAAc,CACzC93P,EAAetnC,EACf,MAIA4E,EAAEg8B,UAA6B,IAAjB0G,GAChB1iC,EAAEm7B,iBACFs/P,EAAkBE,EAAiB,GAAG/7P,SAC5B5+B,EAAEg8B,UAAY0G,IAAiBi4P,EAAiB,IAC1D36R,EAAEm7B,iBACFs/P,EAAkB,GAAG77P,YAIzBo+I,EAAO+8G,wBAA0B,SAAiC/5R,GAChE9F,KAAKwgS,kBAAoB16R,EAAEqL,QAG7B2xK,EAAOg9G,aAAe,SAAsBh6R,GAC1C,GAAI9F,KAAK+b,MAAMkwK,QAAUjsL,KAAK+b,MAAMgpK,UAAYj/K,EAAEgmC,UAAY08P,EAAOd,SAASroQ,KAAOr/B,KAAK+b,MAAM+5I,OAAQ,CAItG,GAHAhwJ,EAAEm7B,iBACFn7B,EAAEuwC,kBAE0B,WAAxBr2C,KAAK+b,MAAMwzK,SAEb,YADAvvL,KAAK+/R,gCAIP//R,KAAK+b,MAAM+5I,OAAOhwJ,KAItBg9K,EAAOi9G,8BAAgC,WACrC,IAAIn4G,EAAS5nL,KAEbA,KAAKkgS,gCACLlgS,KAAK6+B,SAAS,CACZshQ,6BAA6B,IAE/BngS,KAAK0gS,0BAA4B7vR,YAAW,WAC1C+2K,EAAO/oJ,SAAS,CACdshQ,6BAA6B,MAE9B,MAGLr9G,EAAOgmB,KAAO,WACZ,IACE9oM,KAAK2gS,mBAAqBhpR,SAASg9B,cACnC,MAAOztC,GACPlH,KAAK2gS,mBAAqB,KAGvB3gS,KAAKw6B,WACRx6B,KAAKw6B,SAAW7iB,SAASE,cAAc,OAEvC7X,KAAKw6B,SAASrP,aAAa,WAAY,MAEvCnrB,KAAKw6B,SAASjT,MAAMsW,SAAW,WAC/B79B,KAAKw6B,SAASjT,MAAMqpB,OAAS5wC,KAAK+b,MAAM60B,OACxCj5B,SAASjT,KAAKqwD,YAAY/0D,KAAKw6B,WAGjCx6B,KAAK0/R,sBAAuB,EAAI8I,EAAO9B,2BACvC,EAAI8B,EAAO7B,gCAEa,IAApBx2G,EAAMywG,YACRjpR,SAASjT,KAAKuqB,WAAY,EAAIs5Q,EAAYjuR,SAAS3C,SAASjT,KAAKuqB,WAAW,EAAIu5Q,EAAO1B,iBAAiB,aAAc9mS,KAAK+b,MAAMg9Q,aAGnI5oG,EAAMywG,WAAa,GAGrB99G,EAAO/+I,QAAU,WACX/jC,KAAKw6B,WACP7iB,SAASjT,KAAKi4D,YAAY38D,KAAKw6B,UAC/Bx6B,KAAKw6B,SAAW,MAGlBx6B,KAAKigS,yBAGPn9G,EAAOm9G,sBAAwB,WAC7B,GAAIjgS,KAAK2gS,mBAAoB,CAC3B,IAAInB,EAAwBx/R,KAAK+b,MAAMyjR,sBACnCx/R,KAAK2gS,mBAAmBj8P,OAAS86P,GAAuBx/R,KAAK2gS,mBAAmBj8P,QACpF1kC,KAAK2gS,mBAAqB,OAI9B79G,EAAOpvK,MAAQ,WACb,GAAIy8K,EAAMywG,WAAa,EAAG,CACxB,IAAIC,GAAqB,EAAI2H,EAAO1B,iBAAiB,aAAc9mS,KAAK+b,MAAMg9Q,WAE1E+H,EAA0B,IAAI50Q,OAAO,QAAU20Q,EAAqB,SACxElpR,SAASjT,KAAKuqB,UAAYtX,SAASjT,KAAKuqB,UAAUlb,QAAQ+sR,EAAyB,KAAK13Q,OAG1FppB,KAAKigS,wBACL9vG,EAAMywG,UAAYr9Q,KAAKmnB,IAAI,EAAGylJ,EAAMywG,UAAY,IAChD,EAAI4H,EAAO/B,mBAAmBzmS,KAAK0/R,uBAGrC58G,EAAOi+G,kBAAoB,WACzB,IAAIpG,EACA5yG,EAAS/nL,KAET+kB,GAAa,EAAIyjR,EAAOxB,MAAMhnS,KAAK+b,MAAO0jR,GAE9C,OAAOjgG,EAAOllL,QAAQzC,cAAc,OAAO,EAAIwwR,EAAU/tR,SAAS,GAAIyK,EAAY,CAChFkK,WAAW,EAAIu5Q,EAAO1B,kBAAiB,EAAIyB,EAAYjuR,SAFnC,eAE6Dta,KAAK+b,MAAMkT,WAAY0rQ,EAAc,GAAIA,EAAY,SAAW36R,KAAK+b,MAAMkH,MAAQjjB,KAAK+b,MAAMkH,KAAM03Q,EAAYqG,yBAAiChhS,KAAK+b,MAAM+iR,SAAUnE,EAAYqG,2BAAmChhS,KAAK+b,MAAMu+C,WAAYqgO,IAAe36R,KAAK+b,MAAMg9Q,WACvV5yQ,KAAM,WACN4W,IAAK,SAAazrB,GAChBy2K,EAAOqI,QAAU9+K,KAEjBkuL,EAAOllL,QAAQzC,cAAc,MAAO,CACtCoX,WAAW,EAAIu5Q,EAAO1B,kBAAiB,EAAIyB,EAAYjuR,SAAS,gBAAiBta,KAAK+b,MAAMojR,kBAAmBn/R,KAAK+b,MAAMg9Q,YACzH/4R,KAAK+b,MAAMmK,YAGhB48J,EAAOroJ,OAAS,WACd,IAAI8kQ,EAAiBv/R,KAAK+b,MAAMwjR,eAEhC,GAAMv/R,KAAKw6B,WAAax6B,KAAKoyB,MAAM65J,SAAWszG,GAAiB,CAC7D,IAAI0B,IAAkBjhS,KAAKw6B,WAAax6B,KAAKoyB,MAAM65J,SAAWszG,EAC9Dv/R,KAAKw6B,SAASjT,MAAMm/B,QAAUu6O,EAAgB,OAAS,QACvD,IAAIzyC,EAAexuP,KAAK+b,MACpBijR,EAAgBxwC,EAAawwC,cAC7BC,EAAiBzwC,EAAaywC,eAC9BC,EAAoB1wC,EAAa0wC,kBACjCnG,EAAYvqC,EAAauqC,UACzB9sG,EAASuiE,EAAaviE,OACtBsD,EAAWi/D,EAAaj/D,SACxBppK,EAAOqoO,EAAaroO,KACpB44Q,EAAavwC,EAAauwC,WAC1BK,EAAW5wC,EAAa4wC,SACxB5Y,EAAWh4B,EAAag4B,SACxB0a,EAAkB,CACpBr5P,QAAS7nC,KAAK4/R,oBACdl6P,YAAa1lC,KAAK6/R,wBAClBsB,QAASnhS,KAAK8/R,aACdh6P,UAAW9lC,KAAKggS,UAChBz4Q,MAAO,CACLm/B,QAAS,SAEX,kBAAmBq4O,EACnB54Q,KAAMA,EACNgf,SAAU,MAERi8P,EAAgBphS,KAAK+b,MAAMi9Q,KAC3BsG,GAAkB,EAAIuJ,EAAevuR,SAAS,GAAIyuR,EAAMzuR,QAAQ2V,aAAc,GAAIjwB,KAAK+b,MAAMujR,gBAAiB,CAChHlG,UAAWgI,EAAgBphS,KAAK+b,MAAMujR,gBAAgBlG,UAAY,GAClE5vR,QAAS43R,EAAgBphS,KAAK+b,MAAMujR,gBAAgB91R,QAAU,IAE5D61R,GAAqB,EAAIwJ,EAAevuR,SAAS,GAAIyuR,EAAMzuR,QAAQ2V,aAAc,GAAIjwB,KAAK+b,MAAMsjR,mBAAoB,CACtHjG,UAAWgI,EAAgBphS,KAAK+b,MAAMsjR,mBAAmBjG,UAAY,GACrE5vR,QAAS43R,EAAgBphS,KAAK+b,MAAMsjR,mBAAmB71R,QAAU,IAE/D63R,EAAW9xG,IAAa6xG,EAAgB5hG,EAAOllL,QAAQzC,cAAckxR,EAAMzuR,SAAS,EAAI+tR,EAAU/tR,SAAS,GAAI+kR,EAAoB,CACrI7iQ,GAAIyvJ,KAAYsD,EAChBwpG,UAAWA,EACX9pQ,WAAW,EAAIu5Q,EAAO1B,kBAAiB,EAAIyB,EAAYjuR,SAAS,iBAAkB4kR,GAAoBnG,MAClGv5F,EAAOllL,QAAQzC,cAAc,MAAO,CACxCoX,WAAW,EAAIu5Q,EAAO1B,kBAAiB,EAAIyB,EAAYjuR,SAAS,iBAAkB,OAAQ4kR,GAAoBnG,MAEhH,OAAOv5F,EAAOllL,QAAQzC,cAAcixR,EAAQxuR,QAAS,CACnDmkB,KAAMz+B,KAAKw6B,UACVglK,EAAOllL,QAAQzC,cAAc,MAAO,CACrCoX,WAAW,EAAIu5Q,EAAO1B,iBAAiB9H,IACtCx/F,EAAOllL,QAAQzC,cAAckxR,EAAMzuR,SAAS,EAAI+tR,EAAU/tR,SAAS,GAAI4mR,EAAiB5B,EAAiB,CAC1G9iQ,GAAIyvJ,EACJ/wJ,UAAWl7B,KAAKi2K,SAChB56I,SAAUr7B,KAAKq2K,SACf0iH,UAAWA,EACX9pQ,WAAW,EAAIu5Q,EAAO1B,kBAAiB,EAAIyB,EAAYjuR,SAAS,QAAS2kR,EAAgBj/R,KAAKoyB,MAAM+tQ,6BAA+B,gBAAiBpH,GACpJvS,SAAUA,IACR4Y,EAAUp/R,KAAK+gS,qBAAsBM,IAG3C,OAAO,MAGTv+G,EAAOo9G,8BAAgC,WACjClgS,KAAK0gS,4BACPnvR,aAAavR,KAAK0gS,2BAClB1gS,KAAK0gS,+BAA4BhwR,IAI9By/K,EAlWT,CAmWEqP,EAAOllL,QAAQkmL,WAEjBrQ,EAAM//J,UAAYA,EAClB+/J,EAAMlgK,aAAeA,EACrBkgK,EAAMywG,UAAY,EAClB,IAAIzoE,EAAWhoC,EACfp3K,EAAQ,EAAUo/M,mCChcdz4B,EAAyB,EAAQ,MAGrC3mL,EAAQ,OAAU,EAElB,IAAIsvR,EAAY3oG,EAAuB,EAAQ,OAE3C4oG,EAAiC5oG,EAAuB,EAAQ,OAEhEF,EAASE,EAAuB,EAAQ,OAExCyrF,EAAazrF,EAAuB,EAAQ,OAE5C6oG,EAAc7oG,EAAuB,EAAQ,OAE7C8oG,EAAS,EAAQ,MAEjBp4Q,EAAY,CACdhK,IAAKoiR,EAAOlB,YACZr4Q,UAAWk8P,EAAW7wQ,QAAQ6T,OAC9B4qQ,UAAW5N,EAAW7wQ,QAAQuqF,QAM5By8L,EAAY,SAAmBvlR,GACjC,IAAIkT,EAAYlT,EAAMkT,UAClB8pQ,EAAYh9Q,EAAMg9Q,UAClBE,EAAMl9Q,EAAMqK,IACZrB,GAAa,EAAIujR,EAA+BhuR,SAASyB,EAAO,CAAC,YAAa,YAAa,QAC3FiK,GAAU,EAAIwiR,EAAO1B,kBAAiB,EAAIyB,EAAYjuR,SAAS2U,EAAW,cAAe8pQ,GAC7F,OAAOv5F,EAAOllL,QAAQzC,cAAcohR,GAAK,EAAIoP,EAAU/tR,SAAS,GAAIyK,EAAY,CAC9EkK,UAAWjJ,MAIfs7Q,EAAUlxQ,UAAYA,EACtBkxQ,EAAUrxQ,aAhBS,CACjB7J,IAAK,OAgBP,IAAI+xM,EAAWmpE,EACfvoR,EAAQ,EAAUo/M,mCCxCdz4B,EAAyB,EAAQ,MAGrC3mL,EAAQ,OAAU,EAElB,IAAIsvR,EAAY3oG,EAAuB,EAAQ,OAE3C4oG,EAAiC5oG,EAAuB,EAAQ,OAEhEF,EAASE,EAAuB,EAAQ,OAExCyrF,EAAazrF,EAAuB,EAAQ,OAE5C6oG,EAAc7oG,EAAuB,EAAQ,OAE7C8oG,EAAS,EAAQ,MAEjBp4Q,EAAY,CACdhK,IAAKoiR,EAAOlB,YACZr4Q,UAAWk8P,EAAW7wQ,QAAQ6T,OAC9B4qQ,UAAW5N,EAAW7wQ,QAAQuqF,QAM5B08L,EAAc,SAAqBxlR,GACrC,IAAIkT,EAAYlT,EAAMkT,UAClB8pQ,EAAYh9Q,EAAMg9Q,UAClBE,EAAMl9Q,EAAMqK,IACZrB,GAAa,EAAIujR,EAA+BhuR,SAASyB,EAAO,CAAC,YAAa,YAAa,QAC3FiK,GAAU,EAAIwiR,EAAO1B,kBAAiB,EAAIyB,EAAYjuR,SAAS2U,EAAW,gBAAiB8pQ,GAC/F,OAAOv5F,EAAOllL,QAAQzC,cAAcohR,GAAK,EAAIoP,EAAU/tR,SAAS,GAAIyK,EAAY,CAC9EkK,UAAWjJ,MAIfu7Q,EAAYnxQ,UAAYA,EACxBmxQ,EAAYtxQ,aAhBO,CACjB7J,IAAK,OAgBP,IAAI+xM,EAAWopE,EACfxoR,EAAQ,EAAUo/M,kCCxCdz4B,EAAyB,EAAQ,MAGrC3mL,EAAQ,OAAU,EAElB,IAAIsvR,EAAY3oG,EAAuB,EAAQ,OAE3C4oG,EAAiC5oG,EAAuB,EAAQ,OAEhEF,EAASE,EAAuB,EAAQ,OAExCyrF,EAAazrF,EAAuB,EAAQ,OAE5C6oG,EAAc7oG,EAAuB,EAAQ,OAE7C8oG,EAAS,EAAQ,MAEjBp4Q,EAAY,CACdhK,IAAKoiR,EAAOlB,YACZ9F,QAASgH,EAAOlB,YAChBxxI,OAAQq1H,EAAW7wQ,QAAQuN,KAC3BoH,UAAWk8P,EAAW7wQ,QAAQ6T,OAC9B4qQ,UAAW5N,EAAW7wQ,QAAQuqF,OAC9B3+E,SAAUilQ,EAAW7wQ,QAAQmkB,KAC7Bq6P,eAAgB3N,EAAW7wQ,QAAQ6T,OACnCykB,SAAUu4O,EAAW7wQ,QAAQ6xO,UAAU,CAACg/B,EAAW7wQ,QAAQ6T,OAAQg9P,EAAW7wQ,QAAQw+F,SACtFplG,MAAOy3Q,EAAW7wQ,QAAQuqF,QASxB48L,EAAc,SAAqB1lR,GACrC,IAAI2lR,EACAzyQ,EAAYlT,EAAMkT,UAClB8pQ,EAAYh9Q,EAAMg9Q,UAClB7yQ,EAAWnK,EAAMmK,SACjB4vI,EAAS/5I,EAAM+5I,OACfmjI,EAAMl9Q,EAAMqK,IACZu7Q,EAAU5lR,EAAMylR,QAChB1I,EAAiB/8Q,EAAM+8Q,eACvBlmP,EAAW72B,EAAM62B,SACjBl/B,EAAQqI,EAAMrI,MACdqR,GAAa,EAAIujR,EAA+BhuR,SAASyB,EAAO,CAAC,YAAa,YAAa,WAAY,SAAU,MAAO,UAAW,iBAAkB,WAAY,UACjKiK,GAAU,EAAIwiR,EAAO1B,kBAAiB,EAAIyB,EAAYjuR,SAAS2U,EAAW,gBAAiB8pQ,GAE/F,IAAKrlR,GAASoiJ,EAAQ,CACpB,IAAI8rI,EAAgC,iBAAbhvP,EAAwBvnC,OAAOC,aAAasnC,GAAYA,EAC/E8uP,EAAcliG,EAAOllL,QAAQzC,cAAc,SAAU,CACnDvL,KAAM,SACNu7B,QAASiuH,EACT7mI,WAAW,EAAIu5Q,EAAO1B,iBAAiB,QAAS/N,GAChD,aAAcD,GACbt5F,EAAOllL,QAAQzC,cAAc,OAAQ,CACtC,cAAe,QACd+pR,IAGL,OAAOpiG,EAAOllL,QAAQzC,cAAc8pR,GAAS,EAAI0G,EAAU/tR,SAAS,GAAIyK,EAAY,CAClFkK,UAAWjJ,IACTw5K,EAAOllL,QAAQzC,cAAcohR,EAAK,CACpChqQ,WAAW,EAAIu5Q,EAAO1B,iBAAiB,cAAe/N,IACrD7yQ,GAAWxS,GAASguR,IAGzBD,EAAYrxQ,UAAYA,EACxBqxQ,EAAYxxQ,aAzCO,CACjB7J,IAAK,KACLo7Q,QAAS,MACT1I,eAAgB,QAChBlmP,SAAU,KAsCZ,IAAIulL,EAAWspE,EACf1oR,EAAQ,EAAUo/M,+BCvElB,IAAIz4B,EAAyB,EAAQ,MAErC3mL,EAAQsB,YAAa,EACrBtB,EAAA,aAAkB,EAElB,IAAI2vR,EAAkBhpG,EAAuB,EAAQ,OAEjDF,EAASE,EAAuB,EAAQ,OAExCkuF,EAAYluF,EAAuB,EAAQ,OAE3CyrF,EAAazrF,EAAuB,EAAQ,OAE5C8oG,EAAS,EAAQ,MAEjBp4Q,EAAY,CACdlK,SAAUilQ,EAAW7wQ,QAAQmkB,KAAKj8B,WAClCi8B,KAAM0sP,EAAW7wQ,QAAQuxO,KAGvBu4B,EAEJ,SAAU6B,GAGR,SAAS7B,IACP,OAAO6B,EAAiBt/Q,MAAM3G,KAAMoB,YAAcpB,MAHpD,EAAI0oS,EAAgBpuR,SAAS8pQ,EAAQ6B,GAMrC,IAAInjG,EAASshG,EAAOlkR,UAuBpB,OArBA4iL,EAAOx+I,qBAAuB,WACxBtkC,KAAK4+R,aACPjnR,SAASjT,KAAKi4D,YAAY38D,KAAK4+R,aAGjC5+R,KAAK4+R,YAAc,MAGrB97G,EAAOroJ,OAAS,WACd,OAAK+tQ,EAAO3nQ,WAIP7gC,KAAK+b,MAAM0iB,MAASz+B,KAAK4+R,cAC5B5+R,KAAK4+R,YAAcjnR,SAASE,cAAc,OAC1CF,SAASjT,KAAKqwD,YAAY/0D,KAAK4+R,cAG1BhR,EAAUtzQ,QAAQwnQ,aAAa9hR,KAAK+b,MAAMmK,SAAUlmB,KAAK+b,MAAM0iB,MAAQz+B,KAAK4+R,cAR1E,MAWJxa,EA9BT,CA+BE5kF,EAAOllL,QAAQkmL,WAEjB4jF,EAAOh0P,UAAYA,EACnB,IAAI+nM,EAAWisD,EACfrrQ,EAAA,QAAkBo/M,mCCzDdz4B,EAAyB,EAAQ,MAGrC3mL,EAAQ,OAAU,EAElB,IAAIsvR,EAAY3oG,EAAuB,EAAQ,OAE3C4oG,EAAiC5oG,EAAuB,EAAQ,OAEhEF,EAASE,EAAuB,EAAQ,OAExCyrF,EAAazrF,EAAuB,EAAQ,OAE5C6oG,EAAc7oG,EAAuB,EAAQ,OAE7C8oG,EAAS,EAAQ,MAEjBp4Q,EAAY,CACdlK,SAAUilQ,EAAW7wQ,QAAQmkB,KAC7BokQ,IAAK1X,EAAW7wQ,QAAQqqN,KACxBm+D,MAAO3X,EAAW7wQ,QAAQqqN,KAC1Bv+M,IAAKoiR,EAAOlB,YACZ3hS,MAAOwlR,EAAW7wQ,QAAQ6xO,UAAU,CAACg/B,EAAW7wQ,QAAQ6T,OAAQg9P,EAAW7wQ,QAAQw+F,SACnFpuE,IAAKygP,EAAW7wQ,QAAQ6xO,UAAU,CAACg/B,EAAW7wQ,QAAQ6T,OAAQg9P,EAAW7wQ,QAAQw+F,SACjFq0H,SAAUg+C,EAAW7wQ,QAAQqqN,KAC7Bo+D,QAAS5X,EAAW7wQ,QAAQqqN,KAC5BlmI,MAAO0sL,EAAW7wQ,QAAQ6T,OAC1Bc,UAAWk8P,EAAW7wQ,QAAQ6T,OAC9B60Q,aAAc7X,EAAW7wQ,QAAQ6T,OACjC4qQ,UAAW5N,EAAW7wQ,QAAQuqF,QAQ5Bo+L,EAAW,SAAkBlnR,GAC/B,IAAImK,EAAWnK,EAAMmK,SACjB+I,EAAYlT,EAAMkT,UAClB+zQ,EAAejnR,EAAMinR,aACrBjK,EAAYh9Q,EAAMg9Q,UAClBpzR,EAAQoW,EAAMpW,MACd+kC,EAAM3uB,EAAM2uB,IACZyiM,EAAWpxN,EAAMoxN,SACjB41D,EAAUhnR,EAAMgnR,QAChBtkM,EAAQ1iF,EAAM0iF,MACdokM,EAAM9mR,EAAM8mR,IACZC,EAAQ/mR,EAAM+mR,MACd7J,EAAMl9Q,EAAMqK,IACZrB,GAAa,EAAIujR,EAA+BhuR,SAASyB,EAAO,CAAC,WAAY,YAAa,eAAgB,YAAa,QAAS,MAAO,WAAY,UAAW,QAAS,MAAO,QAAS,QACvLo7H,GAAU,EAAIqxJ,EAAOX,UAAUliS,IAAS,EAAI6iS,EAAOX,UAAUn9P,GAAO,IACpEw4P,GAAkB,EAAIsF,EAAO1B,kBAAiB,EAAIyB,EAAYjuR,SAAS2U,EAAW,YAAa8pQ,GAC/FoK,GAAqB,EAAIqF,EAAO1B,kBAAiB,EAAIyB,EAAYjuR,SAAS,eAAgBuoR,GAAM5zQ,GAA4B+zQ,EAAc71D,EAAW,wBAA0B,KAAM1uI,EAAQ,MAAQA,EAAQ,KAAMskM,GAAW51D,EAAW,uBAAyB,MAAO4rD,GACzQqK,EAAcN,EAAQ58Q,EAAWs5K,EAAOllL,QAAQzC,cAAc,MAAO,CACvEoX,UAAWk0Q,EACX57Q,MAAO,CACL7C,MAAOyyH,EAAU,KAEnBhxH,KAAM,cACN,gBAAiBxgB,EACjB,gBAAiB,IACjB,gBAAiB+kC,EACjBxkB,SAAUA,IAGZ,OAAI28Q,EACKO,EAGF5jG,EAAOllL,QAAQzC,cAAcohR,GAAK,EAAIoP,EAAU/tR,SAAS,GAAIyK,EAAY,CAC9EkK,UAAWi0Q,EACXh9Q,SAAUk9Q,MAIdH,EAAS7yQ,UAAYA,EACrB6yQ,EAAShzQ,aA9CU,CACjB7J,IAAK,MACLzgB,MAAO,EACP+kC,IAAK,KA4CP,IAAIytL,EAAW8qE,EACflqR,EAAQ,EAAUo/M,mCC/Edz4B,EAAyB,EAAQ,MAGrC3mL,EAAQ,OAAU,EAElB,IAAIsvR,EAAY3oG,EAAuB,EAAQ,OAE3C4oG,EAAiC5oG,EAAuB,EAAQ,OAEhEF,EAASE,EAAuB,EAAQ,OAExCyrF,EAAazrF,EAAuB,EAAQ,OAE5C6oG,EAAc7oG,EAAuB,EAAQ,OAE7C8oG,EAAS,EAAQ,MAIjBnF,EAAkBlY,EAAW7wQ,QAAQ6xO,UAAU,CAACg/B,EAAW7wQ,QAAQw+F,OAAQqyK,EAAW7wQ,QAAQ6T,SAE9FiC,EAAY,CACdhK,IAAKoiR,EAAOlB,YACZhE,UAAWnY,EAAW7wQ,QAAQqqN,KAC9B11M,UAAWk8P,EAAW7wQ,QAAQ6T,OAC9B4qQ,UAAW5N,EAAW7wQ,QAAQuqF,OAC9B88K,KAAMwJ,EAAW7wQ,QAAQqqN,KACzBs1D,GAAIoJ,EACJnJ,GAAImJ,EACJxgC,GAAIwgC,EACJ3zB,GAAI2zB,EACJlJ,GAAIkJ,GAOFE,EAAM,SAAaxnR,GACrB,IAAIkT,EAAYlT,EAAMkT,UAClB8pQ,EAAYh9Q,EAAMg9Q,UAClBuK,EAAYvnR,EAAMunR,UAClBrK,EAAMl9Q,EAAMqK,IACZu7P,EAAO5lQ,EAAM4lQ,KACbr2L,EAASvvE,EAAMuvE,OACfvmE,GAAa,EAAIujR,EAA+BhuR,SAASyB,EAAO,CAAC,YAAa,YAAa,YAAa,MAAO,OAAQ,WACvH0+Q,EAAa,GACjBnvM,EAAOhoF,SAAQ,SAAUg3R,EAAUp5R,GACjC,IAAIq5R,EAAUx+Q,EAAMu+Q,GAGpB,UAFOv1Q,EAAWu1Q,GAEbC,EAAL,CAIA,IAAIF,GAAQn5R,EACZu5R,EAAW50R,KAAKw0R,EAAO,YAAcE,EAAU,YAAcD,EAAW,IAAMC,OAEhF,IAAIv0Q,GAAU,EAAIwiR,EAAO1B,kBAAiB,EAAIyB,EAAYjuR,SAAS2U,EAAWq0Q,EAAY,aAAe,KAAM3hB,EAAO,WAAa,MAAO8Y,GAAa1B,GACvJ,OAAOv5F,EAAOllL,QAAQzC,cAAcohR,GAAK,EAAIoP,EAAU/tR,SAAS,GAAIyK,EAAY,CAC9EkK,UAAWjJ,MAIfu9Q,EAAInzQ,UAAYA,EAChBmzQ,EAAItzQ,aAhCe,CACjB7J,IAAK,MACLklE,OAlBiB,CAAC,KAAM,KAAM,KAAM,KAAM,OAiD5C,IAAI6sI,EAAWorE,EACfxqR,EAAQ,EAAUo/M,+BCnElB,IAAIz4B,EAAyB,EAAQ,MAErC3mL,EAAQsB,YAAa,EACrBtB,EAAQ6tR,kBAAoBA,EAC5B7tR,EAAQ0tR,kBAAoBA,EAC5B1tR,EAAQiwR,kBAAoBA,EAC5BjwR,EAAQ2tR,uBA4CR,WACE,IAAIn/Q,EAAQjU,OAAOymB,iBAAiBpiB,SAASjT,KAAM,MACnD,OAAO6gC,SAAShe,GAASA,EAAMusH,iBAAiB,kBAAoB,EAAG,KA7CzE/6H,EAAQ4tR,6BAgDR,WACE,IAAInlN,EAAiBolN,IAEjBj0G,EAAeh7K,SAAS8sB,iBAAiB,qDAAqD,GAC9FoiQ,EAAcl0G,EAAeptJ,SAASotJ,EAAaprK,MAAM4zC,cAAgB,EAAG,IAAM,EAElF6tO,KACFvC,EAAkBI,EAAcrlN,IAtDpCzoE,EAAQkwR,mBA4DR,SAA4BlQ,GAC1BgO,EAAkBhO,GA5DpBhgR,EAAQ+tR,gBA+DR,SAAyB73Q,EAAW8pQ,GASlC,YARkB,IAAd9pQ,IACFA,EAAY,SAGI,IAAd8pQ,IACFA,EAAYgO,GAGThO,EACE9pQ,EAAU9jB,MAAM,KAAKmM,KAAI,SAAUhG,GACxC,OAAOynR,EAAUznR,IAAMA,KACtB2U,KAAK,KAHegJ,GAvEzBlW,EAAQiuR,KAiFR,SAAc9tR,EAAKuqR,GACjB,IAAIh9R,EAAS,GAMb,OALAlH,OAAO6K,KAAK8O,GAAK5V,SAAQ,SAAU+N,IACF,IAA3BoyR,EAAS/7R,QAAQ2J,KACnB5K,EAAO4K,GAAO6H,EAAI7H,OAGf5K,GAvFTsS,EAAQkuR,KA8FR,SAAc/tR,EAAK9O,GAMjB,IALA,IAEIiH,EAFA61R,EAAWxnS,MAAMyc,QAAQ/R,GAAQA,EAAO,CAACA,GACzC/I,EAAS6lS,EAAS7lS,OAElBoF,EAAS,GAENpF,EAAS,GAGdoF,EADA4K,EAAM61R,EADN7lS,GAAU,IAEI6X,EAAI7H,GAGpB,OAAO5K,GAzGTsS,EAAQouR,SAAWA,EACnBpuR,EAAQmwR,WAwHR,SAAoBC,EAAUC,GAC5B,OAAO,SAAkBrtR,EAAO42C,EAAUqS,GAChB,OAApBjpD,EAAM42C,SAAiD,IAApB52C,EAAM42C,IAC3Cw0O,EAAS,IAAOx0O,EAAW,kBAAsBqS,EAAgB,2BAA8BokO,GAGjG,IAAK,IAAI1+Q,EAAOtpB,UAAUC,OAAQ2rB,EAAO,IAAIttB,MAAMgrB,EAAO,EAAIA,EAAO,EAAI,GAAIC,EAAO,EAAGA,EAAOD,EAAMC,IAClGqC,EAAKrC,EAAO,GAAKvpB,UAAUupB,GAG7B,OAAOw+Q,EAASxiS,WAAM,EAAQ,CAACoV,EAAO42C,EAAUqS,GAAelrD,OAAOkT,MAjI1EjU,EAAQquR,WAAaA,EACrBruR,EAAQmvR,cAAgBA,EACxBnvR,EAAQ8uR,SAwNR,SAAkBliS,GAChB,IAAI2G,SAAc3G,EAGlB,GAAa,WAAT2G,EACF,OAAO3G,EAGT,GAAa,WAAT2G,GAA8B,WAATA,GAAuC,oBAAlBs7R,EAAOjiS,GACnD,OAPQ,IAUV,GAAI43K,EAAS53K,GAAQ,CACnB,IAAIi2B,EAAiC,mBAAlBj2B,EAAMohM,QAAyBphM,EAAMohM,UAAYphM,EACpEA,EAAQ43K,EAAS3hJ,GAAS,GAAKA,EAAQA,EAGzC,GAAa,WAATtvB,EACF,OAAiB,IAAV3G,EAAcA,GAASA,EAGhCA,EAAQA,EAAMoO,QAAQ,aAAc,IACpC,IAAI+zR,EAAW,aAAa1nR,KAAKza,GACjC,OAAOmiS,GAAY,cAAc1nR,KAAKza,GAAS4/B,SAAS5/B,EAAMuG,MAAM,GAAI47R,EAAW,EAAI,GAAK,qBAAqB1nR,KAAKza,GArB5G,KAqB4HA,GA9OxIoT,EAAQwkK,SAAWA,EACnBxkK,EAAQ6X,WAAaA,EACrB7X,EAAQovR,gBAAkBA,EAC1BpvR,EAAQgvR,kBAAoBA,EAC5BhvR,EAAQivR,UA6RR,SAAmB72R,EAAQ82R,GACzB,IAAIx+E,EAAM0+E,EAAgBh3R,GAE1B,OAAI82R,EACEF,EAAkBt+E,GACbA,EAGG,OAARA,EACK,GAGF,CAACA,GAEJs+E,EAAkBt+E,GACbA,EAAI,GAGNA,GA9SX1wM,EAAQswR,0BAqTR,SAAmCC,EAAMh7P,EAASwlD,EAASy1M,GACzD,IAAI9/E,EAAM6/E,EAELvB,EAAkBt+E,KACrBA,EAAM,CAACA,IAGT,IAAIn9K,EAASwnD,EAMb,GAJsB,iBAAXxnD,IACTA,EAASA,EAAOnhC,MAAM,SAGnB48R,EAAkBt+E,IAA2B,mBAAZn7K,IAA2B5uC,MAAMyc,QAAQmwB,GAC7E,MAAM,IAAI3rC,MAAM,iOAQlB,OALAjB,MAAMQ,UAAUoD,QAAQ5C,KAAK4rC,GAAQ,SAAUp4B,GAC7CxU,MAAMQ,UAAUoD,QAAQ5C,KAAK+oN,GAAK,SAAU1qL,GAC1CA,EAAGlhB,iBAAiB3J,EAAOo6B,EAASi7P,SAGjC,WACL7pS,MAAMQ,UAAUoD,QAAQ5C,KAAK4rC,GAAQ,SAAUp4B,GAC7CxU,MAAMQ,UAAUoD,QAAQ5C,KAAK+oN,GAAK,SAAU1qL,GAC1CA,EAAGze,oBAAoBpM,EAAOo6B,EAASi7P,WA7U/CxwR,EAAQqvR,kBAAoBrvR,EAAQywR,oBAAsBzwR,EAAQ8nB,UAAY9nB,EAAQ4uR,iBAAmB5uR,EAAQ2uR,SAAW3uR,EAAQ0uR,mBAAqB1uR,EAAQyuR,uBAAyBzuR,EAAQwuR,mBAAqBxuR,EAAQuuR,YAAcvuR,EAAQsuR,oBAAiB,EAEtQ,IAyCIN,EAzCA5b,EAAazrF,EAAuB,EAAQ,OAGhD,SAASknG,IACP,IAAI3zG,EAAYt7K,SAASE,cAAc,OAEvCo7K,EAAU1rK,MAAMsW,SAAW,WAC3Bo1J,EAAU1rK,MAAMuW,IAAM,UACtBm1J,EAAU1rK,MAAM7C,MAAQ,OACxBuuK,EAAU1rK,MAAM5C,OAAS,OACzBsuK,EAAU1rK,MAAMytH,SAAW,SAC3Br9H,SAASjT,KAAKqwD,YAAYk+H,GAC1B,IAAIzxG,EAAiByxG,EAAU54J,YAAc44J,EAAU/vI,YAEvD,OADAvrC,SAASjT,KAAKi4D,YAAYs2H,GACnBzxG,EAGT,SAASilN,EAAkB9/O,GACzBhvC,SAASjT,KAAK6iB,MAAM4zC,aAAexU,EAAU,EAAIA,EAAU,KAAO,KAGpE,SAASqiP,IACP,OAAOrxR,SAASjT,KAAKw+C,YAAc5vC,OAAOi8J,WAyE5C,IAAIu6B,EAAS,GAEb,SAASq9F,EAASl/R,GACX6hM,EAAO7hM,KAEa,oBAAZE,SACTA,QAAQlB,MAAMgB,GAGhB6hM,EAAO7hM,IAAW,GAmBtB,IAAI4iG,EAA4B,iBAAXv3F,QAAuBA,OAAOu3F,SAAW,aAE9D,SAASu8L,EAAWrrR,EAAO42C,EAAUqS,GACnC,KAAMjpD,EAAM42C,aAAqBk4C,GAC/B,OAAO,IAAIlqG,MAAM,iBAAmBgyD,EAAW,kBAAoBqS,EAAgB,qEAIvF,IAAIqiO,EAAiBlc,EAAW7wQ,QAAQ6xO,UAAU,CAACg/B,EAAW7wQ,QAAQ6T,OAAQg9P,EAAW7wQ,QAAQuN,KAAMu/Q,EAAYjc,EAAW7wQ,QAAQixG,MAAM,CAC1IvmF,QAASmmP,EAAW7wQ,QAAQuxO,QAG9B9yO,EAAQsuR,eAAiBA,EAEzB,IAAIC,EAAcnc,EAAW7wQ,QAAQ6xO,UAAU,CAACg/B,EAAW7wQ,QAAQuN,KAAMsjQ,EAAW7wQ,QAAQ6T,OAAQg9P,EAAW7wQ,QAAQixG,MAAM,CAC3HikI,SAAU27B,EAAW7wQ,QAAQiL,OAC7BkV,OAAQ0wP,EAAW7wQ,QAAQuN,OACzBsjQ,EAAW7wQ,QAAQwxO,QAAQq/B,EAAW7wQ,QAAQ6xO,UAAU,CAACg/B,EAAW7wQ,QAAQuN,KAAMsjQ,EAAW7wQ,QAAQ6T,OAAQg9P,EAAW7wQ,QAAQixG,MAAM,CACxIikI,SAAU27B,EAAW7wQ,QAAQiL,OAC7BkV,OAAQ0wP,EAAW7wQ,QAAQuN,YAO7B9O,EAAQuuR,YAAcA,EActBvuR,EAAQwuR,mBAbiB,CACvB/pQ,KAAM,IAENktJ,SAAU,IAEVyF,MAAO,IAEP/J,SAAU,KAQZrtK,EAAQyuR,uBADqB,CAAC,KAAM,eAAgB,gBAAiB,SAAU,QAAS,OAAQ,UAAW,UAAW,aAAc,YAAa,SAAU,YAAa,YAQxKzuR,EAAQ0uR,mBANiB,CACvB3S,SAAU,WACVD,QAAS,UACTD,QAAS,UACTG,OAAQ,UAeVh8Q,EAAQ2uR,SAZO,CACbroQ,IAAK,GACLC,MAAO,GACP3E,MAAO,GACPwE,IAAK,EACLO,GAAI,GACJC,KAAM,GACNF,KAAM,GACN5G,IAAK,GACL13B,EAAG,GACHtB,EAAG,IAILkZ,EAAQ4uR,iBADe,CAAC,aAAc,OAAQ,WAAY,YAAa,MAAO,UAAW,cAAe,QAAS,YAAa,aAAc,SAAU,eAAgB,WAAY,OAAQ,cAE1L,IAAI9mQ,IAAiC,oBAAXvtB,SAA0BA,OAAOqE,WAAYrE,OAAOqE,SAASE,eAGvF,SAASqwR,EAAc/2R,GACrB,SAAIA,GAA4B,iBAAXA,IACZ,YAAaA,EAMxB,SAASy2R,EAAOjiS,GACd,OAAa,MAATA,OACe+K,IAAV/K,EAAsB,qBAAuB,gBAG/CpG,OAAOW,UAAUsD,SAAS9C,KAAKiF,GA6BxC,SAAS43K,EAAS53K,GAChB,IAAI2G,SAAc3G,EAClB,OAAgB,MAATA,IAA2B,WAAT2G,GAA8B,aAATA,GAGhD,SAASskB,EAAWjrB,GAClB,IAAK43K,EAAS53K,GACZ,OAAO,EAGT,IAAIygB,EAAMwhR,EAAOjiS,GACjB,MAAe,sBAARygB,GAAuC,2BAARA,GAA4C,+BAARA,GAAgD,mBAARA,EAGpH,SAAS+hR,EAAgBh3R,GACvB,GAAI+2R,EAAc/2R,GAChB,OAAOA,EAAO6zB,QAGhB,GAAIpU,EAAWzf,GACb,OAAOA,IAGT,GAAsB,iBAAXA,GAAuB0vB,EAAW,CAC3C,IAAIkqC,EAAYpzD,SAAS8sB,iBAAiBtzB,GAM1C,GAJK45D,EAAU1pE,SACb0pE,EAAYpzD,SAAS8sB,iBAAiB,IAAMtzB,KAGzC45D,EAAU1pE,OACb,MAAM,IAAIV,MAAM,eAAiBwQ,EAAS,6DAG5C,OAAO45D,EAGT,OAAO55D,EAGT,SAAS42R,EAAkBt+E,GACzB,OAAY,OAARA,IAIG/pN,MAAMyc,QAAQstM,IAAQ5oL,GAAmC,iBAAf4oL,EAAIpoN,QAzFvD0X,EAAQ8nB,UAAYA,EAmHpB9nB,EAAQywR,oBADkB,CAAC,aAAc,SAmCzCzwR,EAAQqvR,kBADgB,CAAC,UAAW,aAAc,2CAA4C,yBAA0B,2BAA4B,yBAA0B,SAAU,QAAS,yBAA0B,kBAAmB,kBAAmB,2EC1WjQ,IAAIqB,EAAUlqS,OACVgmM,EAAa9/L,UAEjBqT,EAAOC,QAAU,WAChB,GAAY,MAAR/Y,MAAgBA,OAASypS,EAAQzpS,MACpC,MAAM,IAAIulM,EAAW,sDAEtB,IAAI9+L,EAAS,GAmBb,OAlBIzG,KAAK0kN,SACRj+M,GAAU,KAEPzG,KAAKq0B,aACR5tB,GAAU,KAEPzG,KAAK0pS,YACRjjS,GAAU,KAEPzG,KAAK2pS,SACRljS,GAAU,KAEPzG,KAAK4pS,UACRnjS,GAAU,KAEPzG,KAAKwiS,SACR/7R,GAAU,KAEJA,gCC1BR,IAAIojS,EAAS,EAAQ,MACjBC,EAAW,EAAQ,MAEnBljL,EAAiB,EAAQ,MACzBmjL,EAAc,EAAQ,MACtBphR,EAAO,EAAQ,MAEfqhR,EAAaF,EAASljL,GAE1BijL,EAAOG,EAAY,CAClBD,YAAaA,EACbnjL,eAAgBA,EAChBj+F,KAAMA,IAGP7P,EAAOC,QAAUixR,+BCfjB,IAAI5/R,EAAO,EAAQ,MACfy7L,EAA+B,mBAAXxgM,QAAkD,iBAAlBA,OAAO,OAE3Do9L,EAAQljM,OAAOW,UAAUsD,SACzBsW,EAASpa,MAAMQ,UAAU4Z,OACzBmwR,EAAqB1qS,OAAOuO,eAmB5Bo8R,EAAsBD,GAbY,WACrC,IAAI/wR,EAAM,GACV,IAGC,IAAK,IAAIpU,KAFTmlS,EAAmB/wR,EAAK,IAAK,CAAEnL,YAAY,EAAOpI,MAAOuT,IAE3CA,EACb,OAAO,EAER,OAAOA,EAAIgK,IAAMhK,EAChB,MAAOpT,GACR,OAAO,GAGuCqkS,GAE5Cr8R,EAAiB,SAAU+2F,EAAQniG,EAAMiD,EAAOorB,GAnBnC,IAAUxQ,KAoBtB7d,KAAQmiG,IAnBS,mBADKtkF,EAoBSwQ,IAnBmB,sBAAnB0xK,EAAM/hM,KAAK6f,IAmBIwQ,OAG9Cm5Q,EACHD,EAAmBplM,EAAQniG,EAAM,CAChCsL,cAAc,EACdD,YAAY,EACZpI,MAAOA,EACPwT,UAAU,IAGX0rF,EAAOniG,GAAQiD,IAIbmjG,EAAmB,SAAUjE,EAAQvtF,GACxC,IAAI8yR,EAAahpS,UAAUC,OAAS,EAAID,UAAU,GAAK,GACnD2a,EAAQ3R,EAAKkN,GACbuuL,IACH9pL,EAAQjC,EAAOpZ,KAAKqb,EAAOxc,OAAOsa,sBAAsBvC,KAEzD,IAAK,IAAIpW,EAAI,EAAGA,EAAI6a,EAAM1a,OAAQH,GAAK,EACtC4M,EAAe+2F,EAAQ9oF,EAAM7a,GAAIoW,EAAIyE,EAAM7a,IAAKkpS,EAAWruR,EAAM7a,MAInE4nG,EAAiBohM,sBAAwBA,EAEzCpxR,EAAOC,QAAU+vF,+BCvDjB,IAAI05F,EACJ,IAAKjjM,OAAO6K,KAAM,CAEjB,IAAIynB,EAAMtyB,OAAOW,UAAUJ,eACvB2iM,EAAQljM,OAAOW,UAAUsD,SACzBk/L,EAAS,EAAQ,MACjBC,EAAepjM,OAAOW,UAAU6tB,qBAChC60K,GAAkBD,EAAajiM,KAAK,CAAE8C,SAAU,MAAQ,YACxDq/L,EAAkBF,EAAajiM,MAAK,cAAgB,aACpDoiM,EAAY,CACf,WACA,iBACA,UACA,iBACA,gBACA,uBACA,eAEGC,EAA6B,SAAUx6K,GAC1C,IAAIy6K,EAAOz6K,EAAEtoB,YACb,OAAO+iM,GAAQA,EAAK9iM,YAAcqoB,GAE/B06K,EAAe,CAClBC,mBAAmB,EACnBC,UAAU,EACVC,WAAW,EACXC,QAAQ,EACRC,eAAe,EACfC,SAAS,EACTC,cAAc,EACdC,aAAa,EACbC,wBAAwB,EACxBC,uBAAuB,EACvBC,cAAc,EACdC,aAAa,EACbC,cAAc,EACdC,cAAc,EACdC,SAAS,EACTC,aAAa,EACbC,YAAY,EACZC,UAAU,EACVC,UAAU,EACVC,OAAO,EACPC,kBAAkB,EAClBC,oBAAoB,EACpBC,SAAS,GAENC,EAA4B,WAE/B,GAAsB,oBAAXnxL,OAA0B,OAAO,EAC5C,IAAK,IAAIohE,KAAKphE,OACb,IACC,IAAK2vL,EAAa,IAAMvuH,IAAM7iD,EAAInxB,KAAK4S,OAAQohE,IAAoB,OAAdphE,OAAOohE,IAAoC,iBAAdphE,OAAOohE,GACxF,IACCquH,EAA2BzvL,OAAOohE,IACjC,MAAO5uE,GACR,OAAO,GAGR,MAAOA,GACR,OAAO,EAGT,OAAO,EAhBuB,GA8B/B08L,EAAW,SAAc39F,GACxB,IAAI04E,EAAsB,OAAX14E,GAAqC,iBAAXA,EACrCj0E,EAAoC,sBAAvB6xK,EAAM/hM,KAAKmkG,GACxB68F,EAAcgB,EAAO79F,GACrB4yD,EAAW8lB,GAAmC,oBAAvBklB,EAAM/hM,KAAKmkG,GAClC6/F,EAAU,GAEd,IAAKnnB,IAAa3sJ,IAAe8wK,EAChC,MAAM,IAAIj8L,UAAU,sCAGrB,IAAIk/L,EAAY9B,GAAmBjyK,EACnC,GAAI6mI,GAAY5yD,EAAOxjG,OAAS,IAAMwwB,EAAInxB,KAAKmkG,EAAQ,GACtD,IAAK,IAAI3jG,EAAI,EAAGA,EAAI2jG,EAAOxjG,SAAUH,EACpCwjM,EAAQ7+L,KAAKwF,OAAOnK,IAItB,GAAIwgM,GAAe78F,EAAOxjG,OAAS,EAClC,IAAK,IAAIwrE,EAAI,EAAGA,EAAIg4B,EAAOxjG,SAAUwrE,EACpC63H,EAAQ7+L,KAAKwF,OAAOwhE,SAGrB,IAAK,IAAInqE,KAAQmiG,EACV8/F,GAAsB,cAATjiM,IAAyBmvB,EAAInxB,KAAKmkG,EAAQniG,IAC5DgiM,EAAQ7+L,KAAKwF,OAAO3I,IAKvB,GAAIkgM,EAGH,IAFA,IAAIgC,EA3CqC,SAAUr8K,GAEpD,GAAsB,oBAAXjV,SAA2BmxL,EACrC,OAAO1B,EAA2Bx6K,GAEnC,IACC,OAAOw6K,EAA2Bx6K,GACjC,MAAOziB,GACR,OAAO,GAmCe++L,CAAqChgG,GAElDnwB,EAAI,EAAGA,EAAIouH,EAAUzhM,SAAUqzE,EACjCkwH,GAAoC,gBAAjB9B,EAAUpuH,KAAyB7iD,EAAInxB,KAAKmkG,EAAQi+F,EAAUpuH,KACtFgwH,EAAQ7+L,KAAKi9L,EAAUpuH,IAI1B,OAAOgwH,GAGT5rL,EAAOC,QAAUypL,+BCvHjB,IAAIt2L,EAAQxM,MAAMQ,UAAUgM,MACxBw2L,EAAS,EAAQ,MAEjBoC,EAAWvlM,OAAO6K,KAClBo4L,EAAWsC,EAAW,SAAcv8K,GAAK,OAAOu8K,EAASv8K,IAAQ,EAAQ,MAEzEw8K,EAAexlM,OAAO6K,KAE1Bo4L,EAAS75K,KAAO,WACf,GAAIppB,OAAO6K,KAAM,CAChB,IAAI46L,EAA0B,WAE7B,IAAIh2L,EAAOzP,OAAO6K,KAAKhJ,WACvB,OAAO4N,GAAQA,EAAK3N,SAAWD,UAAUC,OAHb,CAI3B,EAAG,GACA2jM,IACJzlM,OAAO6K,KAAO,SAAcy6F,GAC3B,OAAI69F,EAAO79F,GACHkgG,EAAa74L,EAAMxL,KAAKmkG,IAEzBkgG,EAAalgG,UAItBtlG,OAAO6K,KAAOo4L,EAEf,OAAOjjM,OAAO6K,MAAQo4L,GAGvB1pL,EAAOC,QAAUypL,yBC7BjB,IAAIC,EAAQljM,OAAOW,UAAUsD,SAE7BsV,EAAOC,QAAU,SAAqBpT,GACrC,IAAItC,EAAMo/L,EAAM/hM,KAAKiF,GACjB+8L,EAAiB,uBAARr/L,EASb,OARKq/L,IACJA,EAAiB,mBAARr/L,GACE,OAAVsC,GACiB,iBAAVA,GACiB,iBAAjBA,EAAMtE,QACbsE,EAAMtE,QAAU,GACa,sBAA7BohM,EAAM/hM,KAAKiF,EAAMs/L,SAEZvC,gCCbR,IAAI97E,EAAiB,EAAQ,MAEzBsjL,EAAsB,4BACtB1kG,EAAQjmM,OAAO0a,yBACfsrL,EAAa9/L,UAEjBqT,EAAOC,QAAU,WAChB,IAAKmxR,EACJ,MAAM,IAAI3kG,EAAW,6FAEtB,GAAuB,QAAnB,OAAS9wE,MAAiB,CAC7B,IAAIz4G,EAAawpL,EAAMt5K,OAAOhsB,UAAW,SACzC,GAAI8b,GAAwC,mBAAnBA,EAAWta,KAA8C,iBAAjB,IAAMioS,OACtE,OAAO3tR,EAAWta,IAGpB,OAAOklH,gCChBR,IAAIsjL,EAAsB,4BACtBH,EAAc,EAAQ,MACtBvlF,EAAOjlN,OAAO0a,yBACdnM,EAAiBvO,OAAOuO,eACxBu8R,EAAU5kS,UACVqgM,EAAWvmM,OAAOu5I,eAClBiyB,EAAQ,IAEZjyJ,EAAOC,QAAU,WAChB,IAAKmxR,IAAwBpkG,EAC5B,MAAM,IAAIukG,EAAQ,6FAEnB,IAAI9kB,EAAWwkB,IACX33M,EAAQ0zG,EAAS/6B,GACjB/uJ,EAAawoM,EAAKpyH,EAAO,SAQ7B,OAPKp2E,GAAcA,EAAWta,MAAQ6jR,GACrCz3Q,EAAeskF,EAAO,QAAS,CAC9BpkF,cAAc,EACdD,YAAY,EACZrM,IAAK6jR,IAGAA,+BCMR,IAAIp0D,EAAW,EAAQ,MAEnBm5E,EAAY,oBACZC,EAAY,wBACZC,EAAa,QACbC,EAAoB,gDACpBC,EAAoB,UAExB,SAASrgN,EAASp/E,EAAOo6J,GACvB,GAAqB,iBAAVp6J,EACT,MAAM,IAAItK,MAAM,wBAElB,IAAIgqS,EAAY1/R,EACb8I,QAAQu2R,EAAWjlI,GACnBtxJ,QAAQw2R,EAAWllI,GACnBtxJ,QAAQy2R,EAAYnlI,GACpBtxJ,QAAQ02R,EAAmBplI,GAC3BtxJ,QAAQ22R,EAAmBrlI,GAC9B,OAAO8rD,EAASw5E,EAAW,KAG7B7xR,EAAOC,QAAU,SAAU9N,EAAOrJ,GAChC,IAAIyjK,EAAezjK,GAAWA,EAAQyjK,aAAgB,GAClDv6J,EAASu/E,EAASp/E,EAAOo6J,GAC7B,MAAoB,KAAhBA,EACKv6J,EAEFu/E,EAASv/E,EAAQ,8BChD0C,IAAInG,EAAEE,EAAEkmF,EAAErW,EAAEurB,EAChF,GADa1gG,OAAOuO,eAAeiL,EAAtB,cAA4CpT,OAAM,IAC5D,oBAAqB2N,QAAQ,mBAAoBs3R,eAAe,CAAC,IAAI/qS,EAAE,KAAKuqF,EAAE,KAAKppF,EAAE,WAAW,GAAG,OAAOnB,EAAE,IAAI,IAAIioB,EAAE/O,EAAQk1P,eAAepuQ,GAAE,EAAGioB,GAAGjoB,EAAE,KAAK,MAAMD,GAAG,MAAMiR,WAAW7P,EAAE,GAAGpB,IAAKk6J,EAAE1xJ,KAAKmK,MAAMwG,EAAQk1P,aAAa,WAAW,OAAO7lQ,KAAKmK,MAAMunJ,GAAGn1J,EAAE,SAASmjB,GAAG,OAAOjoB,EAAEgR,WAAWlM,EAAE,EAAEmjB,IAAIjoB,EAAEioB,EAAEjX,WAAW7P,EAAE,KAAK6D,EAAE,SAASijB,EAAEloB,GAAGwqF,EAAEv5E,WAAWiX,EAAEloB,IAAImrF,EAAE,WAAWx5E,aAAa64E,IAAI1V,EAAE,WAAW,OAAM,GAAIurB,EAAElnF,EAAQ8xR,wBAAwB,iBAAiB,CAAC,IAAIhrR,EAAEvM,OAAO6J,YAAY+F,EAAE5P,OAAOlL,KACnfxD,EAAE0O,OAAOzC,WAAWs5J,EAAE72J,OAAO/B,aAAa,GAAG,oBAAqBpJ,QAAQ,CAAC,IAAIojI,EAAEj4H,OAAOs7C,qBAAqB,mBAAoBt7C,OAAOg8C,uBAAuBnnD,QAAQlB,MAAM,2IAA2I,mBAAoBskI,GAAGpjI,QAAQlB,MAAM,0IAA0I,GAAG,iBACne4Y,GAAG,mBAAoBA,EAAEtN,IAAIwG,EAAQk1P,aAAa,WAAW,OAAOpuP,EAAEtN,WAAW,CAAC,IAAI08O,EAAE/rO,EAAE3Q,MAAMwG,EAAQk1P,aAAa,WAAW,OAAO/qP,EAAE3Q,MAAM08O,GAAG,IAAIK,GAAE,EAAG71F,EAAE,KAAKe,GAAG,EAAEZ,EAAE,EAAEhsB,EAAE,EAAEl5D,EAAE,WAAW,OAAO37D,EAAQk1P,gBAAgBrgI,GAAG3tC,EAAE,aAAalnF,EAAQ8xR,wBAAwB,SAAS/iR,GAAG,EAAEA,GAAG,IAAIA,EAAE3f,QAAQlB,MAAM,oHAAoH2yJ,EAAE,EAAE9xI,EAAEvE,KAAKsQ,MAAM,IAAI/L,GAAG,GAAG,IAAIszI,EAAE,IAAIwvI,eAAe58J,EAAEotB,EAAE0vI,MAAM1vI,EAAE2vI,MAAMt3R,UACnf,WAAW,GAAG,OAAOgmJ,EAAE,CAAC,IAAI3xI,EAAE/O,EAAQk1P,eAAergI,EAAE9lH,EAAE8xI,EAAE,IAAIH,GAAE,EAAG3xI,GAAGkmH,EAAEg9J,YAAY,OAAO17C,GAAE,EAAG71F,EAAE,MAAM,MAAM75J,GAAG,MAAMouI,EAAEg9J,YAAY,MAAMprS,QAAS0vP,GAAE,GAAI3qP,EAAE,SAASmjB,GAAG2xI,EAAE3xI,EAAEwnO,IAAIA,GAAE,EAAGthH,EAAEg9J,YAAY,QAAQnmS,EAAE,SAASijB,EAAEloB,GAAG46J,EAAE51J,GAAE,WAAWkjB,EAAE/O,EAAQk1P,kBAAiBruQ,IAAImrF,EAAE,WAAWo/E,EAAE3P,GAAGA,GAAG,GAAG,SAAS41F,EAAEtoO,EAAEloB,GAAG,IAAI0R,EAAEwW,EAAEzmB,OAAOymB,EAAEjiB,KAAKjG,GAAGkoB,EAAE,OAAO,CAAC,IAAInoB,EAAE4jB,KAAKsQ,OAAOviB,EAAE,GAAG,GAAGxL,EAAEgiB,EAAEnoB,GAAG,UAAG,IAASmG,GAAG,EAAEokK,EAAEpkK,EAAElG,IAA0B,MAAMkoB,EAA7BA,EAAEnoB,GAAGC,EAAEkoB,EAAExW,GAAGxL,EAAEwL,EAAE3R,GAAgB,SAASsqK,EAAEniJ,GAAU,YAAO,KAAdA,EAAEA,EAAE,IAAqB,KAAKA,EAC1d,SAAS4xI,EAAE5xI,GAAG,IAAIloB,EAAEkoB,EAAE,GAAG,QAAG,IAASloB,EAAE,CAAC,IAAI0R,EAAEwW,EAAEliB,MAAM,GAAG0L,IAAI1R,EAAE,CAACkoB,EAAE,GAAGxW,EAAEwW,EAAE,IAAI,IAAInoB,EAAE,EAAEmG,EAAEgiB,EAAEzmB,OAAO1B,EAAEmG,GAAG,CAAC,IAAIsL,EAAE,GAAGzR,EAAE,GAAG,EAAEwB,EAAE2mB,EAAE1W,GAAG7L,EAAE6L,EAAE,EAAE+Y,EAAErC,EAAEviB,GAAG,QAAG,IAASpE,GAAG,EAAE+oK,EAAE/oK,EAAEmQ,QAAG,IAAS6Y,GAAG,EAAE+/I,EAAE//I,EAAEhpB,IAAI2mB,EAAEnoB,GAAGwqB,EAAErC,EAAEviB,GAAG+L,EAAE3R,EAAE4F,IAAIuiB,EAAEnoB,GAAGwB,EAAE2mB,EAAE1W,GAAGE,EAAE3R,EAAEyR,OAAQ,WAAG,IAAS+Y,GAAG,EAAE+/I,EAAE//I,EAAE7Y,IAA0B,MAAMwW,EAA7BA,EAAEnoB,GAAGwqB,EAAErC,EAAEviB,GAAG+L,EAAE3R,EAAE4F,IAAgB,OAAO3F,EAAE,OAAO,KAAK,SAASsqK,EAAEpiJ,EAAEloB,GAAG,IAAI0R,EAAEwW,EAAE05B,UAAU5hD,EAAE4hD,UAAU,OAAO,IAAIlwC,EAAEA,EAAEwW,EAAEva,GAAG3N,EAAE2N,GAAG,IAAIk7H,EAAE,GAAGooH,EAAE,GAAG1qP,EAAE,EAAEuuG,EAAE,KAAK+zF,EAAE,EAAEj9D,GAAE,EAAGquB,GAAE,EAAGi3F,GAAE,EACja,SAASC,EAAEjpO,GAAG,IAAI,IAAIloB,EAAEqqK,EAAE4mF,GAAG,OAAOjxP,GAAG,CAAC,GAAG,OAAOA,EAAEsQ,SAASwpJ,EAAEm3F,OAAQ,MAAGjxP,EAAEuiO,WAAWr6M,GAAgD,MAA9C4xI,EAAEm3F,GAAGjxP,EAAE4hD,UAAU5hD,EAAE4wQ,eAAepgB,EAAE3nH,EAAE7oI,GAAcA,EAAEqqK,EAAE4mF,IAAI,SAASxpH,EAAEv/G,GAAa,GAAVgpO,GAAE,EAAGC,EAAEjpO,IAAO+xI,EAAE,GAAG,OAAOoQ,EAAExhC,GAAGoxB,GAAE,EAAGl1J,EAAE0lK,OAAO,CAAC,IAAIzqK,EAAEqqK,EAAE4mF,GAAG,OAAOjxP,GAAGiF,EAAEwiI,EAAEznI,EAAEuiO,UAAUr6M,IACtP,SAASuiJ,EAAEviJ,EAAEloB,GAAGi6J,GAAE,EAAGi3F,IAAIA,GAAE,EAAG/lK,KAAKygD,GAAE,EAAG,IAAIl6H,EAAEm3L,EAAE,IAAS,IAALsoD,EAAEnxP,GAAO80G,EAAEu1D,EAAExhC,GAAG,OAAO/zB,MAAMA,EAAE87J,eAAe5wQ,IAAIkoB,IAAI4sD,MAAM,CAAC,IAAI/0E,EAAE+0G,EAAExkG,SAAS,GAAG,OAAOvQ,EAAE,CAAC+0G,EAAExkG,SAAS,KAAKu4L,EAAE/zF,EAAEu2L,cAAc,IAAInlS,EAAEnG,EAAE+0G,EAAE87J,gBAAgB5wQ,GAAGA,EAAEmZ,EAAQk1P,eAAe,mBAAoBnoQ,EAAE4uG,EAAExkG,SAASpK,EAAE4uG,IAAIu1D,EAAExhC,IAAIixB,EAAEjxB,GAAGsoH,EAAEnxP,QAAQ85J,EAAEjxB,GAAG/zB,EAAEu1D,EAAExhC,GAAG,GAAG,OAAO/zB,EAAE,IAAItjG,GAAE,MAAO,CAAC,IAAIjQ,EAAE8oK,EAAE4mF,GAAG,OAAO1vP,GAAG0D,EAAEwiI,EAAElmI,EAAEghO,UAAUviO,GAAGwR,GAAE,EAAG,OAAOA,EAAE,QAAQsjG,EAAE,KAAK+zF,EAAEn3L,EAAEk6H,GAAE,GACpZ,SAASmuB,EAAE7xI,GAAG,OAAOA,GAAG,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,IAAI,KAAK,EAAE,OAAO,WAAW,KAAK,EAAE,OAAO,IAAI,QAAQ,OAAO,KAAK,IAAIsiJ,EAAEnqE,EAAElnF,EAAQs1P,2BAA2B,EAAEt1P,EAAQisP,8BAA8B,EAAEjsP,EAAQ0mP,wBAAwB,EAAE1mP,EAAQ41P,sBAAsB,EAAE51P,EAAQ01P,qBAAqB,EAAE11P,EAAQimP,yBAAyB,SAASl3O,EAAEloB,GAAG,OAAOkoB,GAAG,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,QAAQA,EAAE,EAAE,IAAIxW,EAAEm3L,EAAEA,EAAE3gL,EAAE,IAAI,OAAOloB,IAAI,QAAQ6oM,EAAEn3L,IAClcyH,EAAQq+P,cAAc,SAAStvP,GAAG,OAAO2gL,GAAG,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI7oM,EAAE,EAAE,MAAM,QAAQA,EAAE6oM,EAAE,IAAIn3L,EAAEm3L,EAAEA,EAAE7oM,EAAE,IAAI,OAAOkoB,IAAI,QAAQ2gL,EAAEn3L,IAChIyH,EAAQymP,0BAA0B,SAAS13O,EAAEloB,EAAE0R,GAAG,IAAI3R,EAAEoZ,EAAQk1P,eAAe,GAAG,iBAAkB38P,GAAG,OAAOA,EAAE,CAAC,IAAIxL,EAAEwL,EAAEsgC,MAAM9rC,EAAE,iBAAkBA,GAAG,EAAEA,EAAEnG,EAAEmG,EAAEnG,EAAE2R,EAAE,iBAAkBA,EAAE9H,QAAQ8H,EAAE9H,QAAQmwJ,EAAE7xI,QAAQxW,EAAEqoJ,EAAE7xI,GAAGhiB,EAAEnG,EAAyM,OAAjMmoB,EAAE,CAACva,GAAGpH,IAAI+J,SAAStQ,EAAEqrS,cAAcnjR,EAAEq6M,UAAUr8N,EAAE0qQ,eAAvDl/P,EAAExL,EAAEwL,EAAoEkwC,WAAW,GAAG17C,EAAEnG,GAAGmoB,EAAE05B,UAAU17C,EAAEsqP,EAAES,EAAE/oO,GAAG,OAAOmiJ,EAAExhC,IAAI3gH,IAAImiJ,EAAE4mF,KAAKC,EAAE/lK,IAAI+lK,GAAE,EAAGjsP,EAAEwiI,EAAEvhI,EAAEnG,MAAMmoB,EAAE05B,UAAUlwC,EAAE8+O,EAAE3nH,EAAE3gH,GAAG+xI,GAAGruB,IAAIquB,GAAE,EAAGl1J,EAAE0lK,KAAYviJ,GAAG/O,EAAQ40P,wBAAwB,SAAS7lP,GAAGA,EAAE5X,SAAS,MACre6I,EAAQmyR,sBAAsB,SAASpjR,GAAG,IAAIloB,EAAE6oM,EAAE,OAAO,WAAW,IAAIn3L,EAAEm3L,EAAEA,EAAE7oM,EAAE,IAAI,OAAOkoB,EAAEnhB,MAAM3G,KAAKoB,WAAW,QAAQqnM,EAAEn3L,KAAKyH,EAAQo1P,iCAAiC,WAAW,OAAO1lE,GAAG1vL,EAAQ80P,qBAAqB,WAAW,IAAI/lP,EAAE/O,EAAQk1P,eAAeld,EAAEjpO,GAAG,IAAIloB,EAAEqqK,EAAExhC,GAAG,OAAO7oI,IAAI80G,GAAG,OAAOA,GAAG,OAAO90G,GAAG,OAAOA,EAAEsQ,UAAUtQ,EAAEuiO,WAAWr6M,GAAGloB,EAAE4wQ,eAAe97J,EAAE87J,gBAAgB97L,KAAK37D,EAAQg1P,sBAAsB3jG,EAAErxJ,EAAQoyR,2BAA2B,WAAWtxI,GAAGruB,IAAIquB,GAAE,EAAGl1J,EAAE0lK,KAC9dtxJ,EAAQqyR,wBAAwB,aAAaryR,EAAQsyR,8BAA8B,WAAW,OAAOphI,EAAExhC,IAAI1vH,EAAQuyR,mBAAmB,kCClBpIxyR,EAAOC,QAAU,EAAjB,0BCDFD,EAAOC,QAAU,CAACoV,EAAQ+xC,KACzB,GAAwB,iBAAX/xC,GAA4C,iBAAd+xC,EAC1C,MAAM,IAAIz6D,UAAU,iDAGrB,GAAkB,KAAdy6D,EACH,MAAO,CAAC/xC,GAGT,MAAMniB,EAAiBmiB,EAAOzmB,QAAQw4D,GAEtC,OAAwB,IAApBl0D,EACI,CAACmiB,GAGF,CACNA,EAAOjiB,MAAM,EAAGF,GAChBmiB,EAAOjiB,MAAMF,EAAiBk0D,EAAU7+D,gCClB1CyX,EAAOC,QAAU1V,GAAO6P,mBAAmB7P,GAAK0Q,QAAQ,YAAYmP,GAAK,IAAIA,EAAE+hF,WAAW,GAAGzhG,SAAS,IAAIkoB,iECD1G,IAAI6/Q,EAAQ,CAAC,SAAU,SAAU,OAAQ,MAAO,OAAQ,QAAS,QCA7DC,EAAQ,CAAC,IAAK,KAAM,KAAM,IAAK,IAAK,KAAM,KCO1CC,EAAU,GAMHntL,EAAW,SAAUqgD,EAAQ92I,GACpC4jR,EAAQ9sI,GAAU92I,GCVlB6jR,EAAY,CACZ,GACA,GACA,GACA,EACA,IAAM,EAAI,GACV,IAOG,SAASC,EAAO1gS,GACnB,OAAIA,aAAiB7C,KACV6C,GAENiiB,MAAMjiB,IAAU,QAAQmV,KAAKnV,GACvB,IAAI7C,KAAKm9B,SAASt6B,KAC7BA,GAASA,GAAS,IAEbme,OACArV,QAAQ,QAAS,IACjBA,QAAQ,IAAK,KACbA,QAAQ,IAAK,KACbA,QAAQ,YAAa,SACrBA,QAAQ,IAAK,QACbA,QAAQ,qBAAsB,SAC5B,IAAI3L,KAAK6C,ICxBb,IAAI0yC,EAAS,SAAU1qB,EAAM0rI,EAAQojC,GAExC,IAAI6pG,EDgFD,SAAiB34Q,EAAM44Q,GAE1B,SADcA,EAAeF,EAAOE,GAAgB,IAAIzjS,OACpCujS,EAAO14Q,IAAS,IClF1B,CAAQA,EAAM8uK,GAAQA,EAAK8pG,cAErC,OD4BG,SAAoBz9P,EAAM09P,GAyB7B,IAhBA,IAAIC,EAAQ39P,EAAO,EAAI,EAAI,EAWvB49P,EAJJ59P,EAAO7qB,KAAK6/B,IAAIhV,GAQZ1c,EAAM,EACH0c,GAAQs9P,EAAUh6Q,IAAQA,EAAMg6Q,EAAUrqS,OAAQqwB,IACrD0c,GAAQs9P,EAAUh6Q,GAgBtB,OAJA0c,EAAO7qB,KAAKsQ,MAAMua,KAEE,IADpB1c,GAAO,GACiB,EAAI,KACxBA,GAAO,GACJo6Q,EAAW19P,EAAM1c,EAAKs6Q,GAAUD,GAAOh4R,QAAQ,KAAMq6B,EAAK5qC,YCtE1D,CAAWooS,EFSC,SAAUjtI,GAC7B,OAAO8sI,EAAQ9sI,IAAW8sI,EAAe,MEVlB,CAAU9sI,KCLrCrgD,EAAS,SLNM,SAAUlwE,EAAM1c,GAC3B,GAAY,IAARA,EACA,MAAO,CAAC,WAAY,aACxB,IAAIq1E,EAAOwkM,EAAMhoR,KAAKsQ,MAAMnC,EAAM,IAGlC,OAFI0c,EAAO,IACP24D,GAAQ,KACL,CAAC34D,EAAO,IAAM24D,EAAO,OAAQ,MAAQ34D,EAAO,IAAM24D,MKC7DuX,EAAS,SJPM,SAAUlwE,EAAM1c,GAC3B,GAAY,IAARA,EACA,MAAO,CAAC,KAAM,OAClB,IAAIq1E,EAAOykM,KAAS95Q,EAAM,IAC1B,MAAO,CAAC0c,EAAO,IAAM24D,EAAO,IAAU34D,EAAO,IAAM24D,EAAO,sDKS9D,QAZA,SAAmB6kL,EAAW3jR,GAC5B,IAAI2jR,EAKF,MAAM,IAAIjrR,MAPD,+BCAbmY,EAAOC,QAAU,WACf,IAAIgyD,EAAYpzD,SAASinL,eACzB,IAAK7zH,EAAUs0M,WACb,OAAO,aAKT,IAHA,IAAIxkM,EAASljE,SAASg9B,cAElBs3P,EAAS,GACJ/qS,EAAI,EAAGA,EAAI6pE,EAAUs0M,WAAYn+Q,IACxC+qS,EAAOpmS,KAAKklE,EAAUmhO,WAAWhrS,IAGnC,OAAQ25E,EAAOpvD,QAAQC,eACrB,IAAK,QACL,IAAK,WACHmvD,EAAOmH,OACP,MAEF,QACEnH,EAAS,KAKb,OADA9P,EAAUw0H,kBACH,WACc,UAAnBx0H,EAAUz+D,MACVy+D,EAAUw0H,kBAELx0H,EAAUs0M,YACb4sB,EAAO3oS,SAAQ,SAASoxD,GACtBqW,EAAUo0H,SAASzqI,MAIvBmmB,GACAA,EAAOn2C,uCClCX,IAAIysL,EAAW,EAAQ,MACnBg7E,EAAY,EAAQ,KACxBrzR,EAAOC,QAAUo4M,EAASzgM,KAAK,KAAMy7Q,0BCFrC,SAASC,EAAgBC,GACvB,OAAOA,GAAa,OAAUA,GAAa,MAG7C,SAASC,EAAeD,GACtB,OAAOA,GAAa,OAAUA,GAAa,MAI7CvzR,EAAOC,QAAU,SAAkBozR,EAAWh+Q,EAAQjrB,GACpD,GAAsB,iBAAXirB,EACT,MAAM,IAAIxtB,MAAM,wBAQlB,IALA,IAEI0rS,EACA91L,EAHAg2L,EAAap+Q,EAAO9sB,OACpBmrS,EAAgB,EAIXtrS,EAAI,EAAGA,EAAIqrS,EAAYrrS,GAAK,EAAG,CAWtC,GAVAmrS,EAAYl+Q,EAAO82E,WAAW/jG,GAC9Bq1G,EAAUpoF,EAAOjtB,GAEbkrS,EAAgBC,IAAcC,EAAen+Q,EAAO82E,WAAW/jG,EAAI,MAErEq1G,GAAWpoF,EADXjtB,GAAK,KAIPsrS,GAAiBL,EAAU51L,MAELrzG,EACpB,OAAOirB,EAAOjiB,MAAM,EAAGhL,EAAI,GAExB,GAAIsrS,EAAgBtpS,EACvB,OAAOirB,EAAOjiB,MAAM,EAAGhL,EAAIq1G,EAAQl1G,OAAS,GAIhD,OAAO8sB,yBCtCT,SAASi+Q,EAAgBC,GACvB,OAAOA,GAAa,OAAUA,GAAa,MAG7C,SAASC,EAAeD,GACtB,OAAOA,GAAa,OAAUA,GAAa,MAI7CvzR,EAAOC,QAAU,SAAuBoV,GACtC,GAAsB,iBAAXA,EACT,MAAM,IAAIxtB,MAAM,wBAOlB,IAJA,IAAI4rS,EAAap+Q,EAAO9sB,OACpB6B,EAAa,EACbmpS,EAAY,KACZI,EAAgB,KACXvrS,EAAI,EAAGA,EAAIqrS,EAAYrrS,IAI1BorS,EAHJD,EAAYl+Q,EAAO82E,WAAW/jG,IAKP,MAAjBurS,GAAyBL,EAAgBK,GAC3CvpS,GAAc,EAGdA,GAAc,EAGTmpS,GAAa,IACpBnpS,GAAc,EAEPmpS,GAAa,KAAQA,GAAa,KACzCnpS,GAAc,EAEPmpS,GAAa,MAASA,GAAa,QAC1CnpS,GAAc,GAEhBupS,EAAgBJ,EAGlB,OAAOnpS,0BCgBT4V,EAAOC,QA3CO,0CClBd,SAASinC,EAAW0sP,GAClB,IAAIC,EAAc,GAClB,GAAwB,IAApBD,EAASrrS,OAAgB,MAAO,GAEpC,GAA2B,iBAAhBqrS,EAAS,GAClB,MAAM,IAAIjnS,UAAU,kCAAoCinS,EAAS,IAInE,GAAIA,EAAS,GAAGt+Q,MAAM,iBAAmBs+Q,EAASrrS,OAAS,EAAG,CAC5D,IAAI0rB,EAAQ2/Q,EAASttQ,QACrBstQ,EAAS,GAAK3/Q,EAAQ2/Q,EAAS,GAI7BA,EAAS,GAAGt+Q,MAAM,gBACpBs+Q,EAAS,GAAKA,EAAS,GAAG34R,QAAQ,gBAAiB,UAEnD24R,EAAS,GAAKA,EAAS,GAAG34R,QAAQ,gBAAiB,SAGrD,IAAK,IAAI7S,EAAI,EAAGA,EAAIwrS,EAASrrS,OAAQH,IAAK,CACxC,IAAIg8B,EAAYwvQ,EAASxrS,GAEzB,GAAyB,iBAAdg8B,EACT,MAAM,IAAIz3B,UAAU,kCAAoCy3B,GAGxC,KAAdA,IAEAh8B,EAAI,IAENg8B,EAAYA,EAAUnpB,QAAQ,SAAU,KAIxCmpB,EAFEh8B,EAAIwrS,EAASrrS,OAAS,EAEZ67B,EAAUnpB,QAAQ,SAAU,IAG5BmpB,EAAUnpB,QAAQ,SAAU,KAG1C44R,EAAY9mS,KAAKq3B,IAInB,IAAI75B,EAAMspS,EAAY1mR,KAAK,KAOvB6G,GAHJzpB,EAAMA,EAAI0Q,QAAQ,kBAAmB,OAGrB5I,MAAM,KAGtB,OAFM2hB,EAAMsS,SAAWtS,EAAMzrB,OAAS,EAAI,IAAK,IAAMyrB,EAAM7G,KAAK,KAKnD,SAAS2mR,IAStB,OAAO5sP,EANqB,iBAAjB5+C,UAAU,GACXA,UAAU,GAEV,GAAG8K,MAAMxL,KAAKU","sources":["webpack://pingman.account/./node_modules/@aspnet/signalr/dist/esm/Errors.js","webpack://pingman.account/./node_modules/@aspnet/signalr/dist/esm/ILogger.js","webpack://pingman.account/./node_modules/@aspnet/signalr/dist/esm/HttpClient.js","webpack://pingman.account/./node_modules/@aspnet/signalr/dist/esm/Loggers.js","webpack://pingman.account/./node_modules/@aspnet/signalr/dist/esm/Utils.js","webpack://pingman.account/./node_modules/@aspnet/signalr/dist/esm/NodeHttpClient.js","webpack://pingman.account/./node_modules/@aspnet/signalr/dist/esm/IHubProtocol.js","webpack://pingman.account/./node_modules/@aspnet/signalr/dist/esm/XhrHttpClient.js","webpack://pingman.account/./node_modules/@aspnet/signalr/dist/esm/DefaultHttpClient.js","webpack://pingman.account/./node_modules/@aspnet/signalr/dist/esm/TextMessageFormat.js","webpack://pingman.account/./node_modules/@aspnet/signalr/dist/esm/HandshakeProtocol.js","webpack://pingman.account/./node_modules/@aspnet/signalr/dist/esm/HubConnection.js","webpack://pingman.account/./node_modules/@aspnet/signalr/dist/esm/ITransport.js","webpack://pingman.account/./node_modules/@aspnet/signalr/dist/esm/AbortController.js","webpack://pingman.account/./node_modules/@aspnet/signalr/dist/esm/LongPollingTransport.js","webpack://pingman.account/./node_modules/@aspnet/signalr/dist/esm/ServerSentEventsTransport.js","webpack://pingman.account/./node_modules/@aspnet/signalr/dist/esm/WebSocketTransport.js","webpack://pingman.account/./node_modules/@aspnet/signalr/dist/esm/HttpConnection.js","webpack://pingman.account/./node_modules/@aspnet/signalr/dist/esm/JsonHubProtocol.js","webpack://pingman.account/./node_modules/@aspnet/signalr/dist/esm/HubConnectionBuilder.js","webpack://pingman.account/./node_modules/@babel/runtime/helpers/assertThisInitialized.js","webpack://pingman.account/./node_modules/@babel/runtime/helpers/defineProperty.js","webpack://pingman.account/./node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","webpack://pingman.account/./node_modules/@babel/runtime/helpers/esm/extends.js","webpack://pingman.account/./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://pingman.account/./node_modules/@babel/runtime/helpers/esm/defineProperty.js","webpack://pingman.account/./node_modules/@babel/runtime/helpers/esm/objectSpread.js","webpack://pingman.account/./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","webpack://pingman.account/./node_modules/@babel/runtime/helpers/extends.js","webpack://pingman.account/./node_modules/@babel/runtime/helpers/inheritsLoose.js","webpack://pingman.account/./node_modules/@babel/runtime/helpers/interopRequireDefault.js","webpack://pingman.account/./node_modules/@babel/runtime/helpers/interopRequireWildcard.js","webpack://pingman.account/./node_modules/@babel/runtime/helpers/objectSpread.js","webpack://pingman.account/./node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js","webpack://pingman.account/./node_modules/@fortawesome/free-brands-svg-icons/index.es.js","webpack://pingman.account/./node_modules/@fortawesome/free-solid-svg-icons/index.es.js","webpack://pingman.account/./node_modules/@fortawesome/fontawesome-svg-core/index.es.js","webpack://pingman.account/./node_modules/@fortawesome/react-fontawesome/index.es.js","webpack://pingman.account/./node_modules/@progress/kendo-data-query/dist/es/utils.js","webpack://pingman.account/./node_modules/@progress/kendo-data-query/dist/es/filtering/filter-descriptor.interface.js","webpack://pingman.account/./node_modules/@progress/kendo-data-query/dist/es/funcs.js","webpack://pingman.account/./node_modules/@progress/kendo-data-query/dist/es/accessor.js","webpack://pingman.account/./node_modules/@progress/kendo-data-query/dist/es/odata.operators.js","webpack://pingman.account/./node_modules/@progress/kendo-data-query/dist/es/mvc/operators.js","webpack://pingman.account/./node_modules/@progress/kendo-data-query/dist/es/filter-serialization.common.js","webpack://pingman.account/./node_modules/@progress/kendo-data-query/dist/es/mvc/deserialization.js","webpack://pingman.account/./node_modules/@progress/kendo-data-query/dist/es/sorting/sort-array.operator.js","webpack://pingman.account/./node_modules/@progress/kendo-data-query/dist/es/transducers.js","webpack://pingman.account/./node_modules/@progress/kendo-data-query/dist/es/filtering/filter.operators.js","webpack://pingman.account/./node_modules/@progress/kendo-data-query/dist/es/grouping/aggregate.operators.js","webpack://pingman.account/./node_modules/@progress/kendo-data-query/dist/es/filtering/filter-no-eval.js","webpack://pingman.account/./node_modules/@progress/kendo-data-query/dist/es/filtering/filter-expression.factory.js","webpack://pingman.account/./node_modules/@progress/kendo-data-query/dist/es/sorting/sort.js","webpack://pingman.account/./node_modules/@progress/kendo-data-query/dist/es/grouping/group.operators.js","webpack://pingman.account/./node_modules/@progress/kendo-data-query/dist/es/array.operators.js","webpack://pingman.account/./node_modules/@progress/kendo-react-animation/dist/es/util.js","webpack://pingman.account/./node_modules/@progress/kendo-react-animation/dist/es/AnimationChild.js","webpack://pingman.account/./node_modules/@progress/kendo-react-animation/dist/es/Animation.js","webpack://pingman.account/./node_modules/@progress/kendo-react-animation/dist/es/Fade.js","webpack://pingman.account/./node_modules/@progress/kendo-react-animation/dist/es/Expand.js","webpack://pingman.account/./node_modules/@progress/kendo-react-animation/dist/es/Push.js","webpack://pingman.account/./node_modules/@progress/kendo-react-animation/dist/es/Slide.js","webpack://pingman.account/./node_modules/@progress/kendo-react-animation/dist/es/Zoom.js","webpack://pingman.account/./node_modules/@progress/kendo-react-animation/dist/es/Reveal.js","webpack://pingman.account/./node_modules/@progress/kendo-react-common/dist/es/classNames.js","webpack://pingman.account/./node_modules/@progress/kendo-react-common/dist/es/FloatingLabel.js","webpack://pingman.account/./node_modules/@progress/kendo-react-common/dist/es/guid.js","webpack://pingman.account/./node_modules/@progress/kendo-react-common/dist/es/keys.js","webpack://pingman.account/./node_modules/@progress/kendo-react-common/dist/es/noop.js","webpack://pingman.account/./node_modules/@progress/kendo-react-common/dist/es/events/dispatchEvent.js","webpack://pingman.account/./node_modules/@progress/kendo-react-common/dist/es/canUseDOM.js","webpack://pingman.account/./node_modules/@telerik/kendo-draggable/dist/es/main.js","webpack://pingman.account/./node_modules/@progress/kendo-react-common/dist/es/Draggable.js","webpack://pingman.account/./node_modules/@progress/kendo-react-common/dist/es/focus.js","webpack://pingman.account/./node_modules/@progress/kendo-react-common/dist/es/hooks.js","webpack://pingman.account/./node_modules/@progress/kendo-react-common/dist/es/getTabIndex.js","webpack://pingman.account/./node_modules/@progress/kendo-react-dropdowns/dist/es/common/ListContainer.js","webpack://pingman.account/./node_modules/@progress/kendo-react-dropdowns/dist/es/common/ListFilter.js","webpack://pingman.account/./node_modules/@progress/kendo-react-dropdowns/dist/es/common/utils.js","webpack://pingman.account/./node_modules/@progress/kendo-react-dropdowns/dist/es/common/ListDefaultItem.js","webpack://pingman.account/./node_modules/@progress/kendo-react-dropdowns/dist/es/common/ListItem.js","webpack://pingman.account/./node_modules/@progress/kendo-react-dropdowns/dist/es/messages/index.js","webpack://pingman.account/./node_modules/@progress/kendo-react-dropdowns/dist/es/common/List.js","webpack://pingman.account/./node_modules/@progress/kendo-react-dropdowns/dist/es/common/VirtualScroll.js","webpack://pingman.account/./node_modules/@progress/kendo-react-dropdowns/dist/es/common/Navigation.js","webpack://pingman.account/./node_modules/@progress/kendo-react-dropdowns/dist/es/common/DropDownBase.js","webpack://pingman.account/./node_modules/@progress/kendo-react-dropdowns/dist/es/DropDownList/DropDownList.js","webpack://pingman.account/./node_modules/@progress/kendo-react-dropdowns/dist/es/common/ClearButton.js","webpack://pingman.account/./node_modules/@progress/kendo-react-dropdowns/dist/es/common/SearchBar.js","webpack://pingman.account/./node_modules/@progress/kendo-react-dropdowns/dist/es/ComboBox/ComboBox.js","webpack://pingman.account/./node_modules/@progress/kendo-react-dropdowns/dist/es/AutoComplete/AutoComplete.js","webpack://pingman.account/./node_modules/@progress/kendo-react-dropdowns/dist/es/MultiSelect/TagList.js","webpack://pingman.account/./node_modules/@progress/kendo-react-dropdowns/dist/es/common/settings.js","webpack://pingman.account/./node_modules/@progress/kendo-react-dropdowns/dist/es/MultiSelect/MultiSelect.js","webpack://pingman.account/./node_modules/@progress/kendo-react-data-tools/dist/es/pager/PagerNumericButtons.js","webpack://pingman.account/./node_modules/@progress/kendo-react-data-tools/dist/es/messages/index.js","webpack://pingman.account/./node_modules/@progress/kendo-react-data-tools/dist/es/pager/PagerInput.js","webpack://pingman.account/./node_modules/@progress/kendo-react-data-tools/dist/es/pager/PagerPageSizes.js","webpack://pingman.account/./node_modules/@progress/kendo-react-data-tools/dist/es/pager/Pager.js","webpack://pingman.account/./node_modules/@progress/kendo-react-data-tools/dist/es/filtering/FilterCell.js","webpack://pingman.account/./node_modules/@progress/kendo-react-data-tools/dist/es/filtering/BooleanFilter.js","webpack://pingman.account/./node_modules/@progress/kendo-react-data-tools/dist/es/filtering/DateFilter.js","webpack://pingman.account/./node_modules/@progress/kendo-react-data-tools/dist/es/filtering/NumericFilter.js","webpack://pingman.account/./node_modules/@progress/kendo-react-data-tools/dist/es/filtering/TextFilter.js","webpack://pingman.account/./node_modules/@progress/kendo-react-data-tools/dist/es/header/utils/index.js","webpack://pingman.account/./node_modules/@progress/kendo-react-data-tools/dist/es/header/Header.js","webpack://pingman.account/./node_modules/@progress/kendo-react-data-tools/dist/es/header/HeaderCell.js","webpack://pingman.account/./node_modules/@progress/kendo-react-data-tools/dist/es/header/SortSettings.js","webpack://pingman.account/./node_modules/@progress/kendo-react-data-tools/dist/es/drag/ColumnResizer.js","webpack://pingman.account/./node_modules/@progress/kendo-react-data-tools/dist/es/drag/ColumnDraggable.js","webpack://pingman.account/./node_modules/@progress/kendo-react-data-tools/dist/es/header/HeaderRow.js","webpack://pingman.account/./node_modules/@progress/kendo-react-data-tools/dist/es/drag/ColumnResize.js","webpack://pingman.account/./node_modules/@progress/kendo-react-data-tools/dist/es/drag/CommonDragLogic.js","webpack://pingman.account/./node_modules/@progress/kendo-react-data-tools/dist/es/drag/DragClue.js","webpack://pingman.account/./node_modules/@progress/kendo-react-data-tools/dist/es/drag/DropClue.js","webpack://pingman.account/./node_modules/@progress/kendo-react-grid/dist/es/GridColumn.js","webpack://pingman.account/./node_modules/@progress/kendo-react-grid/dist/es/utils/index.js","webpack://pingman.account/./node_modules/@progress/kendo-react-dateinputs/node_modules/@progress/kendo-date-math/dist/es/direction.enum.js","webpack://pingman.account/./node_modules/@progress/kendo-react-grid/dist/es/cells/GridSelectionCell.js","webpack://pingman.account/./node_modules/@progress/kendo-react-grid/dist/es/cells/GridHierarchyCell.js","webpack://pingman.account/./node_modules/@progress/kendo-react-dateinputs/node_modules/@progress/kendo-date-math/dist/es/clone-date.js","webpack://pingman.account/./node_modules/@progress/kendo-react-dateinputs/node_modules/@progress/kendo-date-math/dist/es/adjust-dst.js","webpack://pingman.account/./node_modules/@progress/kendo-react-dateinputs/node_modules/@progress/kendo-date-math/dist/es/add-days.js","webpack://pingman.account/./node_modules/@progress/kendo-react-dateinputs/node_modules/@progress/kendo-date-math/dist/es/create-date.js","webpack://pingman.account/./node_modules/@progress/kendo-react-dateinputs/node_modules/@progress/kendo-date-math/dist/es/last-day-of-month.js","webpack://pingman.account/./node_modules/@progress/kendo-react-dateinputs/node_modules/@progress/kendo-date-math/dist/es/add-months.js","webpack://pingman.account/./node_modules/@progress/kendo-react-dateinputs/node_modules/@progress/kendo-date-math/dist/es/add-weeks.js","webpack://pingman.account/./node_modules/@progress/kendo-react-dateinputs/node_modules/@progress/kendo-date-math/dist/es/set-year.js","webpack://pingman.account/./node_modules/@progress/kendo-react-dateinputs/node_modules/@progress/kendo-date-math/dist/es/add-years.js","webpack://pingman.account/./node_modules/@progress/kendo-react-dateinputs/node_modules/@progress/kendo-date-math/dist/es/add-decades.js","webpack://pingman.account/./node_modules/@progress/kendo-react-dateinputs/node_modules/@progress/kendo-date-math/dist/es/add-centuries.js","webpack://pingman.account/./node_modules/@progress/kendo-react-dateinputs/node_modules/@progress/kendo-date-math/dist/es/day-of-week.js","webpack://pingman.account/./node_modules/@progress/kendo-react-dateinputs/node_modules/@progress/kendo-date-math/dist/es/day.enum.js","webpack://pingman.account/./node_modules/@progress/kendo-react-dateinputs/node_modules/@progress/kendo-date-math/dist/es/duration-in-months.js","webpack://pingman.account/./node_modules/@progress/kendo-react-dateinputs/dist/es/virtualization/Virtualization.js","webpack://pingman.account/./node_modules/@progress/kendo-react-dateinputs/node_modules/@progress/kendo-date-math/dist/es/duration-in-years.js","webpack://pingman.account/./node_modules/@progress/kendo-react-dateinputs/node_modules/@progress/kendo-date-math/dist/es/normalize-year.js","webpack://pingman.account/./node_modules/@progress/kendo-react-dateinputs/node_modules/@progress/kendo-date-math/dist/es/first-year-of-decade.js","webpack://pingman.account/./node_modules/@progress/kendo-react-dateinputs/node_modules/@progress/kendo-date-math/dist/es/duration-in-decades.js","webpack://pingman.account/./node_modules/@progress/kendo-react-dateinputs/node_modules/@progress/kendo-date-math/dist/es/first-decade-of-century.js","webpack://pingman.account/./node_modules/@progress/kendo-react-dateinputs/node_modules/@progress/kendo-date-math/dist/es/duration-in-centuries.js","webpack://pingman.account/./node_modules/@progress/kendo-react-dateinputs/node_modules/@progress/kendo-date-math/dist/es/get-date.js","webpack://pingman.account/./node_modules/@progress/kendo-react-dateinputs/node_modules/@progress/kendo-date-math/dist/es/first-day-of-month.js","webpack://pingman.account/./node_modules/@progress/kendo-react-dateinputs/node_modules/@progress/kendo-date-math/dist/es/set-month.js","webpack://pingman.account/./node_modules/@progress/kendo-react-dateinputs/node_modules/@progress/kendo-date-math/dist/es/first-month-of-year.js","webpack://pingman.account/./node_modules/@progress/kendo-react-dateinputs/node_modules/@progress/kendo-date-math/dist/es/is-equal.js","webpack://pingman.account/./node_modules/@progress/kendo-react-dateinputs/node_modules/@progress/kendo-date-math/dist/es/is-equal-date.js","webpack://pingman.account/./node_modules/@progress/kendo-react-dateinputs/node_modules/@progress/kendo-date-math/dist/es/last-month-of-year.js","webpack://pingman.account/./node_modules/@progress/kendo-react-dateinputs/node_modules/@progress/kendo-date-math/dist/es/last-year-of-decade.js","webpack://pingman.account/./node_modules/@progress/kendo-react-dateinputs/node_modules/@progress/kendo-date-math/dist/es/last-decade-of-century.js","webpack://pingman.account/./node_modules/@progress/kendo-react-dateinputs/node_modules/@progress/kendo-date-math/dist/es/week-in-year.js","webpack://pingman.account/./node_modules/@progress/kendo-react-dateinputs/node_modules/@progress/kendo-date-math/dist/es/prev-day-of-week.js","webpack://pingman.account/./node_modules/@progress/kendo-react-dateinputs/node_modules/@progress/kendo-date-math/dist/es/ms-per-day.js","webpack://pingman.account/./node_modules/@progress/kendo-react-dateinputs/dist/es/virtualization/services/RowHeightService.js","webpack://pingman.account/./node_modules/@progress/kendo-react-dateinputs/dist/es/virtualization/services/ScrollerService.js","webpack://pingman.account/./node_modules/@progress/kendo-react-dateinputs/dist/es/calendar/models/NavigationAction.js","webpack://pingman.account/./node_modules/@progress/kendo-react-dateinputs/dist/es/calendar/models/CalendarViewEnum.js","webpack://pingman.account/./node_modules/@progress/kendo-react-dateinputs/dist/es/calendar/components/CalendarCell.js","webpack://pingman.account/./node_modules/@progress/kendo-react-dateinputs/dist/es/calendar/components/CalendarWeekCell.js","webpack://pingman.account/./node_modules/@progress/kendo-react-dateinputs/dist/es/calendar/models/SelectionRange.js","webpack://pingman.account/./node_modules/@progress/kendo-react-dateinputs/dist/es/calendar/services/CenturyViewService.js","webpack://pingman.account/./node_modules/@progress/kendo-react-dateinputs/dist/es/calendar/services/DecadeViewService.js","webpack://pingman.account/./node_modules/@progress/kendo-react-dateinputs/dist/es/calendar/services/MonthViewService.js","webpack://pingman.account/./node_modules/@progress/kendo-react-dateinputs/dist/es/calendar/services/YearViewService.js","webpack://pingman.account/./node_modules/@progress/kendo-react-dateinputs/dist/es/calendar/services/BusViewService.js","webpack://pingman.account/./node_modules/@progress/kendo-react-dateinputs/dist/es/utils.js","webpack://pingman.account/./node_modules/@progress/kendo-react-dateinputs/dist/es/calendar/services/DOMService.js","webpack://pingman.account/./node_modules/@progress/kendo-react-dateinputs/dist/es/calendar/services/NavigationService.js","webpack://pingman.account/./node_modules/@progress/kendo-react-dateinputs/dist/es/calendar/services/ScrollSyncService.js","webpack://pingman.account/./node_modules/@progress/kendo-react-dateinputs/dist/es/calendar/services/WeekNamesService.js","webpack://pingman.account/./node_modules/@progress/kendo-react-dateinputs/dist/es/calendar/components/View.js","webpack://pingman.account/./node_modules/@progress/kendo-react-dateinputs/dist/es/calendar/components/CalendarHeaderTitle.js","webpack://pingman.account/./node_modules/@progress/kendo-react-dateinputs/dist/es/messages/index.js","webpack://pingman.account/./node_modules/@progress/kendo-react-dateinputs/dist/es/defaults.js","webpack://pingman.account/./node_modules/@progress/kendo-react-dateinputs/dist/es/calendar/components/Header.js","webpack://pingman.account/./node_modules/@progress/kendo-react-dateinputs/dist/es/calendar/components/ViewList.js","webpack://pingman.account/./node_modules/@progress/kendo-react-dateinputs/dist/es/calendar/components/CalendarNavigationItem.js","webpack://pingman.account/./node_modules/@progress/kendo-react-dateinputs/dist/es/calendar/components/Navigation.js","webpack://pingman.account/./node_modules/@progress/kendo-react-dateinputs/dist/es/calendar/components/Calendar.js","webpack://pingman.account/./node_modules/@progress/kendo-react-dateinputs/dist/es/dateinput/models/mask.js","webpack://pingman.account/./node_modules/@progress/kendo-react-dateinputs/dist/es/dateinput/utils.js","webpack://pingman.account/./node_modules/@progress/kendo-react-dateinputs/dist/es/dateinput/models/kendo-date.js","webpack://pingman.account/./node_modules/@progress/kendo-react-dateinputs/dist/es/timepicker/models/TimePart.js","webpack://pingman.account/./node_modules/@progress/kendo-react-dateinputs/dist/es/timepicker/utils.js","webpack://pingman.account/./node_modules/@progress/kendo-react-dateinputs/dist/es/dateinput/DateInput.js","webpack://pingman.account/./node_modules/@progress/kendo-react-dateinputs/dist/es/datepicker/DatePicker.js","webpack://pingman.account/./node_modules/@progress/kendo-react-dateinputs/dist/es/timepicker/services/DayPeriodService.js","webpack://pingman.account/./node_modules/@progress/kendo-react-dateinputs/dist/es/timepicker/TimeList.js","webpack://pingman.account/./node_modules/@progress/kendo-react-dateinputs/dist/es/timepicker/services/DOMService.js","webpack://pingman.account/./node_modules/@progress/kendo-react-dateinputs/dist/es/timepicker/services/HoursService.js","webpack://pingman.account/./node_modules/@progress/kendo-react-dateinputs/dist/es/timepicker/services/MinutesService.js","webpack://pingman.account/./node_modules/@progress/kendo-react-dateinputs/dist/es/timepicker/services/SecondsService.js","webpack://pingman.account/./node_modules/@progress/kendo-react-dateinputs/dist/es/timepicker/TimePart.js","webpack://pingman.account/./node_modules/@progress/kendo-react-dateinputs/dist/es/timepicker/TimeSelector.js","webpack://pingman.account/./node_modules/@progress/kendo-react-dateinputs/dist/es/timepicker/TimePicker.js","webpack://pingman.account/./node_modules/@progress/kendo-react-dateinputs/dist/es/calendar/components/HorizontalViewList.js","webpack://pingman.account/./node_modules/@progress/kendo-react-dateinputs/dist/es/calendar/components/MultiViewCalendar.js","webpack://pingman.account/./node_modules/@progress/kendo-react-dateinputs/dist/es/daterangepicker/DateRangePicker.js","webpack://pingman.account/./node_modules/@progress/kendo-react-buttons/dist/es/util.js","webpack://pingman.account/./node_modules/@progress/kendo-react-buttons/dist/es/Button.js","webpack://pingman.account/./node_modules/@progress/kendo-react-buttons/dist/es/ButtonGroup.js","webpack://pingman.account/./node_modules/@progress/kendo-react-buttons/dist/es/ListButton/ButtonItem.js","webpack://pingman.account/./node_modules/@progress/kendo-react-buttons/dist/es/ListButton/SplitButtonItem.js","webpack://pingman.account/./node_modules/@progress/kendo-react-buttons/dist/es/ListButton/utils/navigation.js","webpack://pingman.account/./node_modules/@progress/kendo-react-buttons/dist/es/ListButton/utils/popup.js","webpack://pingman.account/./node_modules/@progress/kendo-react-buttons/dist/es/ListButton/SplitButton.js","webpack://pingman.account/./node_modules/@progress/kendo-react-buttons/dist/es/ListButton/DropDownButtonItem.js","webpack://pingman.account/./node_modules/@progress/kendo-react-buttons/dist/es/ListButton/DropDownButton.js","webpack://pingman.account/./node_modules/@progress/kendo-react-buttons/dist/es/toolbar/tools/ToolbarItem.js","webpack://pingman.account/./node_modules/@progress/kendo-react-buttons/dist/es/toolbar/tools/ToolbarButton.js","webpack://pingman.account/./node_modules/@progress/kendo-react-buttons/dist/es/toolbar/Toolbar.js","webpack://pingman.account/./node_modules/@progress/kendo-react-buttons/dist/es/toolbar/tools/ToolbarSeparator.js","webpack://pingman.account/./node_modules/@progress/kendo-react-dateinputs/dist/es/datetimepicker/DateTimeSelector.js","webpack://pingman.account/./node_modules/@progress/kendo-react-dateinputs/dist/es/datetimepicker/DateTimePicker.js","webpack://pingman.account/./node_modules/@progress/kendo-react-grid/dist/es/cells/GridEditCell.js","webpack://pingman.account/./node_modules/@progress/kendo-react-grid/dist/es/messages/index.js","webpack://pingman.account/./node_modules/@progress/kendo-react-grid/dist/es/utils/browser-support.service.js","webpack://pingman.account/./node_modules/@progress/kendo-react-grid/dist/es/header/Header.js","webpack://pingman.account/./node_modules/@progress/kendo-react-grid/dist/es/interfaces/GridSortSettings.js","webpack://pingman.account/./node_modules/@progress/kendo-react-grid/dist/es/drag/ColumnResizer.js","webpack://pingman.account/./node_modules/@progress/kendo-react-grid/dist/es/drag/ColumnDraggable.js","webpack://pingman.account/./node_modules/@progress/kendo-react-grid/dist/es/header/GridHeaderCell.js","webpack://pingman.account/./node_modules/@progress/kendo-react-grid/dist/es/columnMenu/ColumnMenu.js","webpack://pingman.account/./node_modules/@progress/kendo-react-grid/dist/es/header/HeaderRow.js","webpack://pingman.account/./node_modules/@progress/kendo-react-grid/dist/es/filterCommon.js","webpack://pingman.account/./node_modules/@progress/kendo-react-grid/dist/es/cells/GridFilterCell.js","webpack://pingman.account/./node_modules/@progress/kendo-react-grid/dist/es/header/FilterRow.js","webpack://pingman.account/./node_modules/@progress/kendo-react-grid/dist/es/drag/GroupingIndicator.js","webpack://pingman.account/./node_modules/@progress/kendo-react-grid/dist/es/header/GroupPanel.js","webpack://pingman.account/./node_modules/@progress/kendo-react-grid/dist/es/footer/Footer.js","webpack://pingman.account/./node_modules/@progress/kendo-react-grid/dist/es/paging/PagerNumericButtons.js","webpack://pingman.account/./node_modules/@progress/kendo-react-grid/dist/es/paging/PagerInput.js","webpack://pingman.account/./node_modules/@progress/kendo-react-grid/dist/es/paging/PagerPageSizes.js","webpack://pingman.account/./node_modules/@progress/kendo-react-grid/dist/es/paging/Pager.js","webpack://pingman.account/./node_modules/@progress/kendo-react-grid/dist/es/paging/GridPagerSettings.js","webpack://pingman.account/./node_modules/@progress/kendo-react-grid/dist/es/VirtualScroll.js","webpack://pingman.account/./node_modules/@progress/kendo-react-grid/dist/es/drag/ColumnResize.js","webpack://pingman.account/./node_modules/@progress/kendo-react-grid/dist/es/drag/CommonDragLogic.js","webpack://pingman.account/./node_modules/@progress/kendo-react-grid/dist/es/drag/DragClue.js","webpack://pingman.account/./node_modules/@progress/kendo-react-grid/dist/es/drag/DropClue.js","webpack://pingman.account/./node_modules/@progress/kendo-react-grid/dist/es/cells/GridCell.js","webpack://pingman.account/./node_modules/@progress/kendo-react-grid/dist/es/cells/GridGroupCell.js","webpack://pingman.account/./node_modules/@progress/kendo-react-grid/dist/es/rows/GridRow.js","webpack://pingman.account/./node_modules/@progress/kendo-react-grid/dist/es/header/GridHeaderSelectionCell.js","webpack://pingman.account/./node_modules/@progress/kendo-react-grid/dist/es/GridNoRecords.js","webpack://pingman.account/./node_modules/@progress/kendo-react-grid/dist/es/footer/FooterRow.js","webpack://pingman.account/./node_modules/@progress/kendo-react-grid/dist/es/Grid.js","webpack://pingman.account/./node_modules/@progress/kendo-react-data-tools/dist/es/virtualization/columns.js","webpack://pingman.account/./node_modules/@progress/kendo-react-grid/dist/es/columnMenu/GridColumnMenuItem.js","webpack://pingman.account/./node_modules/@progress/kendo-react-grid/dist/es/columnMenu/GridColumnMenuItemGroup.js","webpack://pingman.account/./node_modules/@progress/kendo-react-grid/dist/es/columnMenu/GridColumnMenuSort.js","webpack://pingman.account/./node_modules/@progress/kendo-react-grid/dist/es/columnMenu/GridColumnMenuItemContent.js","webpack://pingman.account/./node_modules/@progress/kendo-react-grid/dist/es/columnMenu/GridColumnMenuFilterCell.js","webpack://pingman.account/./node_modules/@progress/kendo-react-grid/dist/es/columnMenu/GridColumnMenuFilterUI.js","webpack://pingman.account/./node_modules/@progress/kendo-react-grid/dist/es/columnMenu/GridColumnMenuFilter.js","webpack://pingman.account/./node_modules/@progress/kendo-react-grid/dist/es/rows/GridDetailRow.js","webpack://pingman.account/./node_modules/@progress/kendo-react-grid/dist/es/GridToolbar.js","webpack://pingman.account/./node_modules/@progress/kendo-react-inputs/dist/es/colors/utils/misc.js","webpack://pingman.account/./node_modules/@progress/kendo-drawing/dist/es/mixins/observers-mixin.js","webpack://pingman.account/./node_modules/@progress/kendo-drawing/dist/es/common/animation-frame.js","webpack://pingman.account/./node_modules/@progress/kendo-drawing/dist/es/common/class.js","webpack://pingman.account/./node_modules/@progress/kendo-drawing/dist/es/common/html-encode.js","webpack://pingman.account/./node_modules/@progress/kendo-drawing/dist/es/common/observable.js","webpack://pingman.account/./node_modules/@progress/kendo-drawing/dist/es/common/support.js","webpack://pingman.account/./node_modules/@progress/kendo-drawing/dist/es/common/throttle.js","webpack://pingman.account/./node_modules/@progress/kendo-drawing/dist/es/common/color/named-colors.js","webpack://pingman.account/./node_modules/@progress/kendo-drawing/dist/es/common/color/parse-color.js","webpack://pingman.account/./node_modules/@progress/kendo-drawing/dist/es/common/color/color.js","webpack://pingman.account/./node_modules/@progress/kendo-drawing/dist/es/util/append.js","webpack://pingman.account/./node_modules/@progress/kendo-drawing/dist/es/util/arabic-to-roman.js","webpack://pingman.account/./node_modules/@progress/kendo-drawing/dist/es/util/create-promise.js","webpack://pingman.account/./node_modules/@progress/kendo-drawing/dist/es/util/defined.js","webpack://pingman.account/./node_modules/@progress/kendo-drawing/dist/es/util/definition-id.js","webpack://pingman.account/./node_modules/@progress/kendo-drawing/dist/es/util/constants.js","webpack://pingman.account/./node_modules/@progress/kendo-drawing/dist/es/util/deg.js","webpack://pingman.account/./node_modules/@progress/kendo-drawing/dist/es/util/is-transparent.js","webpack://pingman.account/./node_modules/@progress/kendo-drawing/dist/es/util/last.js","webpack://pingman.account/./node_modules/@progress/kendo-drawing/dist/es/util/merge-sort.js","webpack://pingman.account/./node_modules/@progress/kendo-drawing/dist/es/util/rad.js","webpack://pingman.account/./node_modules/@progress/kendo-drawing/dist/es/util/round.js","webpack://pingman.account/./node_modules/@progress/kendo-drawing/dist/es/util/value-or-default.js","webpack://pingman.account/./node_modules/@progress/kendo-drawing/dist/es/util/bind-events.js","webpack://pingman.account/./node_modules/@progress/kendo-drawing/dist/es/util/element-styles.js","webpack://pingman.account/./node_modules/@progress/kendo-drawing/dist/es/util/element-size.js","webpack://pingman.account/./node_modules/@progress/kendo-drawing/dist/es/util/unbind-events.js","webpack://pingman.account/./node_modules/@progress/kendo-drawing/dist/es/util/encode-base64.js","webpack://pingman.account/./node_modules/@progress/kendo-drawing/dist/es/text-metrics/lru-cache.js","webpack://pingman.account/./node_modules/@progress/kendo-drawing/dist/es/text-metrics/util.js","webpack://pingman.account/./node_modules/@progress/kendo-drawing/dist/es/text-metrics/text-metrics.js","webpack://pingman.account/./node_modules/@progress/kendo-drawing/dist/es/text-metrics/measure-text.js","webpack://pingman.account/./node_modules/@progress/kendo-drawing/dist/es/core/options-store.js","webpack://pingman.account/./node_modules/@progress/kendo-drawing/dist/es/accessors/define-accessors.js","webpack://pingman.account/./node_modules/@progress/kendo-drawing/dist/es/geometry/matrix.js","webpack://pingman.account/./node_modules/@progress/kendo-drawing/dist/es/geometry/to-matrix.js","webpack://pingman.account/./node_modules/@progress/kendo-drawing/dist/es/geometry/point.js","webpack://pingman.account/./node_modules/@progress/kendo-drawing/dist/es/geometry/size.js","webpack://pingman.account/./node_modules/@progress/kendo-drawing/dist/es/geometry/rect.js","webpack://pingman.account/./node_modules/@progress/kendo-drawing/dist/es/geometry/transformation.js","webpack://pingman.account/./node_modules/@progress/kendo-drawing/dist/es/geometry/transform.js","webpack://pingman.account/./node_modules/@progress/kendo-drawing/dist/es/shapes/element.js","webpack://pingman.account/./node_modules/@progress/kendo-drawing/dist/es/geometry/math/ellipse-extreme-angles.js","webpack://pingman.account/./node_modules/@progress/kendo-drawing/dist/es/geometry/circle.js","webpack://pingman.account/./node_modules/@progress/kendo-drawing/dist/es/mixins/paintable.js","webpack://pingman.account/./node_modules/@progress/kendo-drawing/dist/es/mixins/measurable.js","webpack://pingman.account/./node_modules/@progress/kendo-drawing/dist/es/accessors/define-geometry-accessors.js","webpack://pingman.account/./node_modules/@progress/kendo-drawing/dist/es/shapes/circle.js","webpack://pingman.account/./node_modules/@progress/kendo-drawing/dist/es/geometry/constants.js","webpack://pingman.account/./node_modules/@progress/kendo-drawing/dist/es/geometry/math/close.js","webpack://pingman.account/./node_modules/@progress/kendo-drawing/dist/es/geometry/math/close-or-less.js","webpack://pingman.account/./node_modules/@progress/kendo-drawing/dist/es/geometry/arc.js","webpack://pingman.account/./node_modules/@progress/kendo-drawing/dist/es/geometry/math/line-intersection.js","webpack://pingman.account/./node_modules/@progress/kendo-drawing/dist/es/shapes/elements-array.js","webpack://pingman.account/./node_modules/@progress/kendo-drawing/dist/es/shapes/geometry-elements-array.js","webpack://pingman.account/./node_modules/@progress/kendo-drawing/dist/es/accessors/define-point-accessors.js","webpack://pingman.account/./node_modules/@progress/kendo-drawing/dist/es/geometry/math/is-out-of-end-point.js","webpack://pingman.account/./node_modules/@progress/kendo-drawing/dist/es/geometry/math/calculate-curve-at.js","webpack://pingman.account/./node_modules/@progress/kendo-drawing/dist/es/geometry/math/to-cubic-polynomial.js","webpack://pingman.account/./node_modules/@progress/kendo-drawing/dist/es/geometry/math/complex-number.js","webpack://pingman.account/./node_modules/@progress/kendo-drawing/dist/es/geometry/math/solve-cubic-equation.js","webpack://pingman.account/./node_modules/@progress/kendo-drawing/dist/es/geometry/math/has-roots-in-range.js","webpack://pingman.account/./node_modules/@progress/kendo-drawing/dist/es/geometry/math/line-intersections-count.js","webpack://pingman.account/./node_modules/@progress/kendo-drawing/dist/es/geometry/segment.js","webpack://pingman.account/./node_modules/@progress/kendo-drawing/dist/es/geometry/math/curve-intersections-count.js","webpack://pingman.account/./node_modules/@progress/kendo-drawing/dist/es/shapes/utils/elements-bounding-box.js","webpack://pingman.account/./node_modules/@progress/kendo-drawing/dist/es/shapes/utils/elements-clippend-bounding-box.js","webpack://pingman.account/./node_modules/@progress/kendo-drawing/dist/es/shapes/multi-path.js","webpack://pingman.account/./node_modules/@progress/kendo-drawing/dist/es/parsing/shape-map.js","webpack://pingman.account/./node_modules/@progress/kendo-drawing/dist/es/parsing/path-parser.js","webpack://pingman.account/./node_modules/@progress/kendo-drawing/dist/es/shapes/path.js","webpack://pingman.account/./node_modules/@progress/kendo-drawing/dist/es/shapes/arc.js","webpack://pingman.account/./node_modules/@progress/kendo-drawing/dist/es/shapes/text.js","webpack://pingman.account/./node_modules/@progress/kendo-drawing/dist/es/shapes/image.js","webpack://pingman.account/./node_modules/@progress/kendo-drawing/dist/es/mixins/traversable.js","webpack://pingman.account/./node_modules/@progress/kendo-drawing/dist/es/shapes/group.js","webpack://pingman.account/./node_modules/@progress/kendo-drawing/dist/es/alignment/align-start.js","webpack://pingman.account/./node_modules/@progress/kendo-drawing/dist/es/alignment/align-start-reverse.js","webpack://pingman.account/./node_modules/@progress/kendo-drawing/dist/es/shapes/layout.js","webpack://pingman.account/./node_modules/@progress/kendo-drawing/dist/es/alignment/translate-to-point.js","webpack://pingman.account/./node_modules/@progress/kendo-drawing/dist/es/shapes/rect.js","webpack://pingman.account/./node_modules/@progress/kendo-drawing/dist/es/gradients/stops-array.js","webpack://pingman.account/./node_modules/@progress/kendo-drawing/dist/es/accessors/define-options-accessors.js","webpack://pingman.account/./node_modules/@progress/kendo-drawing/dist/es/gradients/gradient-stop.js","webpack://pingman.account/./node_modules/@progress/kendo-drawing/dist/es/gradients/gradient.js","webpack://pingman.account/./node_modules/@progress/kendo-drawing/dist/es/gradients/linear-gradient.js","webpack://pingman.account/./node_modules/@progress/kendo-drawing/dist/es/gradients/radial-gradient.js","webpack://pingman.account/./node_modules/@progress/kendo-drawing/dist/es/animations/easing-functions.js","webpack://pingman.account/./node_modules/@progress/kendo-drawing/dist/es/animations/animation-factory.js","webpack://pingman.account/./node_modules/@progress/kendo-drawing/dist/es/animations/animation.js","webpack://pingman.account/./node_modules/@progress/kendo-drawing/dist/es/util/limit-value.js","webpack://pingman.account/./node_modules/@progress/kendo-drawing/dist/es/core/surface-factory.js","webpack://pingman.account/./node_modules/@progress/kendo-drawing/dist/es/common/log-to-console.js","webpack://pingman.account/./node_modules/@progress/kendo-drawing/dist/es/core/surface.js","webpack://pingman.account/./node_modules/@progress/kendo-drawing/dist/es/util/event-element.js","webpack://pingman.account/./node_modules/@progress/kendo-drawing/dist/es/util/element-offset.js","webpack://pingman.account/./node_modules/@progress/kendo-drawing/dist/es/util/event-coordinates.js","webpack://pingman.account/./node_modules/@progress/kendo-drawing/dist/es/core/base-node.js","webpack://pingman.account/./node_modules/@progress/kendo-drawing/dist/es/svg/utils/render-attribute.js","webpack://pingman.account/./node_modules/@progress/kendo-drawing/dist/es/svg/utils/render-all-attributes.js","webpack://pingman.account/./node_modules/@progress/kendo-drawing/dist/es/svg/utils/render-style.js","webpack://pingman.account/./node_modules/@progress/kendo-drawing/dist/es/svg/node-map.js","webpack://pingman.account/./node_modules/@progress/kendo-drawing/dist/es/svg/constants.js","webpack://pingman.account/./node_modules/@progress/kendo-drawing/dist/es/svg/utils/render-svg.js","webpack://pingman.account/./node_modules/@progress/kendo-drawing/dist/es/svg/node.js","webpack://pingman.account/./node_modules/@progress/kendo-drawing/dist/es/svg/gradient-stop-node.js","webpack://pingman.account/./node_modules/@progress/kendo-drawing/dist/es/svg/gradient-node.js","webpack://pingman.account/./node_modules/@progress/kendo-drawing/dist/es/svg/linear-gradient-node.js","webpack://pingman.account/./node_modules/@progress/kendo-drawing/dist/es/svg/radial-gradient-node.js","webpack://pingman.account/./node_modules/@progress/kendo-drawing/dist/es/svg/clip-node.js","webpack://pingman.account/./node_modules/@progress/kendo-drawing/dist/es/svg/definition-node.js","webpack://pingman.account/./node_modules/@progress/kendo-drawing/dist/es/svg/root-node.js","webpack://pingman.account/./node_modules/@progress/kendo-drawing/dist/es/svg/surface.js","webpack://pingman.account/./node_modules/@progress/kendo-drawing/dist/es/svg/group-node.js","webpack://pingman.account/./node_modules/@progress/kendo-drawing/dist/es/core/constants.js","webpack://pingman.account/./node_modules/@progress/kendo-drawing/dist/es/svg/path-node.js","webpack://pingman.account/./node_modules/@progress/kendo-drawing/dist/es/svg/arc-node.js","webpack://pingman.account/./node_modules/@progress/kendo-drawing/dist/es/svg/circle-node.js","webpack://pingman.account/./node_modules/@progress/kendo-drawing/dist/es/svg/rect-node.js","webpack://pingman.account/./node_modules/@progress/kendo-drawing/dist/es/svg/image-node.js","webpack://pingman.account/./node_modules/@progress/kendo-drawing/dist/es/svg/text-node.js","webpack://pingman.account/./node_modules/@progress/kendo-drawing/dist/es/svg/multi-path-node.js","webpack://pingman.account/./node_modules/@progress/kendo-drawing/dist/es/canvas/node-map.js","webpack://pingman.account/./node_modules/@progress/kendo-drawing/dist/es/canvas/utils/render-path.js","webpack://pingman.account/./node_modules/@progress/kendo-drawing/dist/es/canvas/node.js","webpack://pingman.account/./node_modules/@progress/kendo-drawing/dist/es/canvas/group-node.js","webpack://pingman.account/./node_modules/@progress/kendo-drawing/dist/es/canvas/root-node.js","webpack://pingman.account/./node_modules/@progress/kendo-drawing/dist/es/search/quad-root.js","webpack://pingman.account/./node_modules/@progress/kendo-drawing/dist/es/search/quad-node.js","webpack://pingman.account/./node_modules/@progress/kendo-drawing/dist/es/search/shapes-quad-tree.js","webpack://pingman.account/./node_modules/@progress/kendo-drawing/dist/es/canvas/surface-cursor.js","webpack://pingman.account/./node_modules/@progress/kendo-drawing/dist/es/canvas/surface.js","webpack://pingman.account/./node_modules/@progress/kendo-drawing/dist/es/util/promise-all.js","webpack://pingman.account/./node_modules/@progress/kendo-drawing/dist/es/canvas/path-node.js","webpack://pingman.account/./node_modules/@progress/kendo-drawing/dist/es/canvas/arc-node.js","webpack://pingman.account/./node_modules/@progress/kendo-drawing/dist/es/canvas/circle-node.js","webpack://pingman.account/./node_modules/@progress/kendo-drawing/dist/es/canvas/rect-node.js","webpack://pingman.account/./node_modules/@progress/kendo-drawing/dist/es/canvas/image-node.js","webpack://pingman.account/./node_modules/@progress/kendo-drawing/dist/es/canvas/text-node.js","webpack://pingman.account/./node_modules/@progress/kendo-drawing/dist/es/canvas/multi-path-node.js","webpack://pingman.account/./node_modules/@progress/kendo-drawing/dist/es/pdf/utils.js","webpack://pingman.account/./node_modules/@progress/kendo-drawing/dist/es/pdf/ttf.js","webpack://pingman.account/./node_modules/@progress/kendo-drawing/dist/es/pdf/deflate.js","webpack://pingman.account/./node_modules/@progress/kendo-drawing/dist/es/pdf/core.js","webpack://pingman.account/./node_modules/@progress/kendo-drawing/dist/es/html/core.js","webpack://pingman.account/./node_modules/@progress/kendo-drawing/dist/es/common/template.js","webpack://pingman.account/./node_modules/@progress/kendo-react-inputs/dist/es/colors/utils/color-parser.js","webpack://pingman.account/./node_modules/@progress/kendo-react-inputs/dist/es/colors/HexInput.js","webpack://pingman.account/./node_modules/@progress/kendo-react-inputs/dist/es/colors/utils/color-cache.js","webpack://pingman.account/./node_modules/@progress/kendo-react-inputs/dist/es/messages/index.js","webpack://pingman.account/./node_modules/@progress/kendo-react-inputs/dist/es/colors/ColorInput.js","webpack://pingman.account/./node_modules/@progress/kendo-react-inputs/dist/es/colors/ColorGradient.js","webpack://pingman.account/./node_modules/@progress/kendo-react-inputs/dist/es/colors/utils/color-palette.service.js","webpack://pingman.account/./node_modules/@progress/kendo-react-inputs/dist/es/colors/models/palette-presets.js","webpack://pingman.account/./node_modules/@progress/kendo-react-inputs/dist/es/colors/ColorPalette.js","webpack://pingman.account/./node_modules/@progress/kendo-react-inputs/dist/es/colors/Picker.js","webpack://pingman.account/./node_modules/@progress/kendo-react-inputs/dist/es/colors/ColorPicker.js","webpack://pingman.account/./node_modules/@progress/kendo-react-inputs/dist/es/input/Input.js","webpack://pingman.account/./node_modules/@progress/kendo-react-inputs/dist/es/maskedtextbox/parsing/result.js","webpack://pingman.account/./node_modules/@progress/kendo-react-inputs/dist/es/maskedtextbox/parsing/stream.js","webpack://pingman.account/./node_modules/@progress/kendo-react-inputs/dist/es/maskedtextbox/parsing/parsers.js","webpack://pingman.account/./node_modules/@progress/kendo-react-inputs/dist/es/maskedtextbox/parsing/combinators.js","webpack://pingman.account/./node_modules/@progress/kendo-react-inputs/dist/es/maskedtextbox/masking.service.js","webpack://pingman.account/./node_modules/@progress/kendo-react-inputs/dist/es/maskedtextbox/utils.js","webpack://pingman.account/./node_modules/@progress/kendo-react-inputs/dist/es/maskedtextbox/MaskedTextBox.js","webpack://pingman.account/./node_modules/@progress/kendo-react-inputs/dist/es/numerictextbox/NumericTextBox.js","webpack://pingman.account/./node_modules/@progress/kendo-react-inputs/dist/es/slider/SliderLabel.js","webpack://pingman.account/./node_modules/@progress/kendo-react-inputs/dist/es/slider/Slider.js","webpack://pingman.account/./node_modules/@progress/kendo-react-inputs/dist/es/switch/Switch.js","webpack://pingman.account/./node_modules/@progress/kendo-react-inputs/dist/es/checkbox/Checkbox.js","webpack://pingman.account/./node_modules/@telerik/kendo-intl/dist/es/common/is-string.js","webpack://pingman.account/./node_modules/@telerik/kendo-intl/dist/es/errors.js","webpack://pingman.account/./node_modules/@telerik/kendo-intl/dist/es/error-details.js","webpack://pingman.account/./node_modules/@telerik/kendo-intl/dist/es/cldr/info.js","webpack://pingman.account/./node_modules/@telerik/kendo-intl/dist/es/cldr/default-data.js","webpack://pingman.account/./node_modules/@telerik/kendo-intl/dist/es/cldr/territory.js","webpack://pingman.account/./node_modules/@telerik/kendo-intl/dist/es/common/constants.js","webpack://pingman.account/./node_modules/@telerik/kendo-intl/dist/es/cldr/date-format-names.js","webpack://pingman.account/./node_modules/@telerik/kendo-intl/dist/es/cldr/parse-range-date.js","webpack://pingman.account/./node_modules/@telerik/kendo-intl/dist/es/cldr/currency.js","webpack://pingman.account/./node_modules/@telerik/kendo-intl/dist/es/cldr/constants.js","webpack://pingman.account/./node_modules/@telerik/kendo-intl/dist/es/cldr/first-day.js","webpack://pingman.account/./node_modules/@telerik/kendo-intl/dist/es/numbers/format-currency-symbol.js","webpack://pingman.account/./node_modules/@telerik/kendo-intl/dist/es/numbers/group-integer.js","webpack://pingman.account/./node_modules/@telerik/kendo-intl/dist/es/numbers/is-currency-style.js","webpack://pingman.account/./node_modules/@telerik/kendo-intl/dist/es/common/pad.js","webpack://pingman.account/./node_modules/@telerik/kendo-intl/dist/es/common/round.js","webpack://pingman.account/./node_modules/@telerik/kendo-intl/dist/es/cldr/weekend-range.js","webpack://pingman.account/./node_modules/@telerik/kendo-intl/dist/es/numbers/standard-number-format.js","webpack://pingman.account/./node_modules/@telerik/kendo-intl/dist/es/numbers/custom-number-format.js","webpack://pingman.account/./node_modules/@telerik/kendo-intl/dist/es/numbers/format-options.js","webpack://pingman.account/./node_modules/@telerik/kendo-intl/dist/es/numbers/format-number.js","webpack://pingman.account/./node_modules/@telerik/kendo-intl/dist/es/common/is-number.js","webpack://pingman.account/./node_modules/@telerik/kendo-intl/dist/es/numbers/parse-number.js","webpack://pingman.account/./node_modules/@telerik/kendo-intl/dist/es/common/format-string.js","webpack://pingman.account/./node_modules/@telerik/kendo-intl/dist/es/dates/date-pattern.js","webpack://pingman.account/./node_modules/@telerik/kendo-intl/dist/es/dates/date-name-type.js","webpack://pingman.account/./node_modules/@telerik/kendo-intl/dist/es/dates/format-names.js","webpack://pingman.account/./node_modules/@telerik/kendo-intl/dist/es/common/is-date.js","webpack://pingman.account/./node_modules/@telerik/kendo-intl/dist/es/dates/constants.js","webpack://pingman.account/./node_modules/@telerik/kendo-intl/dist/es/dates/format-date.js","webpack://pingman.account/./node_modules/@telerik/kendo-intl/dist/es/dates/time-utils.js","webpack://pingman.account/./node_modules/@telerik/kendo-intl/dist/es/dates/parse-date.js","webpack://pingman.account/./node_modules/@telerik/kendo-intl/dist/es/dates/split-date-format.js","webpack://pingman.account/./node_modules/@telerik/kendo-intl/dist/es/format.js","webpack://pingman.account/./node_modules/@progress/kendo-react-intl/dist/es/Intl/IntlService.js","webpack://pingman.account/./node_modules/@progress/kendo-react-intl/dist/es/Intl/IntlProvider.js","webpack://pingman.account/./node_modules/@telerik/kendo-intl/dist/es/cldr/date-field-name.js","webpack://pingman.account/./node_modules/@telerik/kendo-intl/dist/es/cldr/number-symbols.js","webpack://pingman.account/./node_modules/@progress/kendo-react-intl/dist/es/Intl/IntlContext.js","webpack://pingman.account/./node_modules/@progress/kendo-react-intl/dist/es/Localization/messages.js","webpack://pingman.account/./node_modules/@progress/kendo-react-intl/dist/es/Localization/LocalizationService.js","webpack://pingman.account/./node_modules/@progress/kendo-react-intl/dist/es/Localization/LocalizationContext.js","webpack://pingman.account/./node_modules/@progress/kendo-react-intl/dist/es/Localization/LocalizationProvider.js","webpack://pingman.account/./node_modules/@progress/kendo-react-intl/dist/es/intlUtils.js","webpack://pingman.account/./node_modules/@progress/kendo-react-intl/dist/es/hooks/useInternationalization.js","webpack://pingman.account/./node_modules/@progress/kendo-react-intl/dist/es/hooks/useLocalization.js","webpack://pingman.account/./node_modules/@progress/kendo-popup-common/dist/es/align-point.js","webpack://pingman.account/./node_modules/@progress/kendo-popup-common/dist/es/owner-document.js","webpack://pingman.account/./node_modules/@progress/kendo-popup-common/dist/es/window.js","webpack://pingman.account/./node_modules/@progress/kendo-popup-common/dist/es/document.js","webpack://pingman.account/./node_modules/@progress/kendo-popup-common/dist/es/scrollbar-width.js","webpack://pingman.account/./node_modules/@progress/kendo-popup-common/dist/es/window-viewport.js","webpack://pingman.account/./node_modules/@progress/kendo-popup-common/dist/es/bounding-offset.js","webpack://pingman.account/./node_modules/@progress/kendo-popup-common/dist/es/offset-parent.js","webpack://pingman.account/./node_modules/@progress/kendo-popup-common/dist/es/offset.js","webpack://pingman.account/./node_modules/@progress/kendo-popup-common/dist/es/parents.js","webpack://pingman.account/./node_modules/@progress/kendo-popup-common/dist/es/scroll-position.js","webpack://pingman.account/./node_modules/@progress/kendo-popup-common/dist/es/element-scroll-position.js","webpack://pingman.account/./node_modules/@progress/kendo-popup-common/dist/es/position.js","webpack://pingman.account/./node_modules/@progress/kendo-popup-common/dist/es/collision.js","webpack://pingman.account/./node_modules/@progress/kendo-popup-common/dist/es/restrict-to-view.js","webpack://pingman.account/./node_modules/@progress/kendo-popup-common/dist/es/siblings.js","webpack://pingman.account/./node_modules/@progress/kendo-popup-common/dist/es/sibling-container.js","webpack://pingman.account/./node_modules/@progress/kendo-react-popup/dist/es/util.js","webpack://pingman.account/./node_modules/@progress/kendo-react-popup/dist/es/Popup.js","webpack://pingman.account/./node_modules/@progress/kendo-react-popup/dist/es/services/alignService.js","webpack://pingman.account/./node_modules/@progress/kendo-react-popup/dist/es/services/domService.js","webpack://pingman.account/./node_modules/@progress/kendo-popup-common/dist/es/align.js","webpack://pingman.account/./node_modules/@progress/kendo-popup-common/dist/es/is-body-offset.js","webpack://pingman.account/./node_modules/@progress/kendo-popup-common/dist/es/position-with-scroll.js","webpack://pingman.account/./node_modules/@progress/kendo-popup-common/dist/es/offset-parent-scroll-position.js","webpack://pingman.account/./node_modules/@progress/kendo-popup-common/dist/es/parent-scroll-position.js","webpack://pingman.account/./node_modules/@progress/kendo-popup-common/dist/es/apply-location-offset.js","webpack://pingman.account/./node_modules/@progress/kendo-popup-common/dist/es/add-scroll.js","webpack://pingman.account/./node_modules/@progress/kendo-popup-common/dist/es/remove-scroll.js","webpack://pingman.account/./node_modules/@progress/kendo-react-popup/dist/es/services/positionService.js","webpack://pingman.account/./node_modules/@progress/kendo-react-tooltip/dist/es/Tooltip.js","webpack://pingman.account/./node_modules/@progress/kendo-react-tooltip/dist/es/utils.js","webpack://pingman.account/./node_modules/axios/index.js","webpack://pingman.account/./node_modules/axios/lib/adapters/xhr.js","webpack://pingman.account/./node_modules/axios/lib/axios.js","webpack://pingman.account/./node_modules/axios/lib/cancel/Cancel.js","webpack://pingman.account/./node_modules/axios/lib/cancel/CancelToken.js","webpack://pingman.account/./node_modules/axios/lib/cancel/isCancel.js","webpack://pingman.account/./node_modules/axios/lib/core/Axios.js","webpack://pingman.account/./node_modules/axios/lib/core/InterceptorManager.js","webpack://pingman.account/./node_modules/axios/lib/core/buildFullPath.js","webpack://pingman.account/./node_modules/axios/lib/core/createError.js","webpack://pingman.account/./node_modules/axios/lib/core/dispatchRequest.js","webpack://pingman.account/./node_modules/axios/lib/core/enhanceError.js","webpack://pingman.account/./node_modules/axios/lib/core/mergeConfig.js","webpack://pingman.account/./node_modules/axios/lib/core/settle.js","webpack://pingman.account/./node_modules/axios/lib/core/transformData.js","webpack://pingman.account/./node_modules/axios/lib/defaults.js","webpack://pingman.account/./node_modules/axios/lib/helpers/bind.js","webpack://pingman.account/./node_modules/axios/lib/helpers/buildURL.js","webpack://pingman.account/./node_modules/axios/lib/helpers/combineURLs.js","webpack://pingman.account/./node_modules/axios/lib/helpers/cookies.js","webpack://pingman.account/./node_modules/axios/lib/helpers/isAbsoluteURL.js","webpack://pingman.account/./node_modules/axios/lib/helpers/isURLSameOrigin.js","webpack://pingman.account/./node_modules/axios/lib/helpers/isValidXss.js","webpack://pingman.account/./node_modules/axios/lib/helpers/normalizeHeaderName.js","webpack://pingman.account/./node_modules/axios/lib/helpers/parseHeaders.js","webpack://pingman.account/./node_modules/axios/lib/helpers/spread.js","webpack://pingman.account/./node_modules/axios/lib/utils.js","webpack://pingman.account/./node_modules/bootstrap/dist/js/bootstrap.js","webpack://pingman.account/./node_modules/classnames/index.js","webpack://pingman.account/./node_modules/copy-to-clipboard/index.js","webpack://pingman.account/./node_modules/create-react-context/lib/implementation.js","webpack://pingman.account/./node_modules/create-react-context/lib/index.js","webpack://pingman.account/./node_modules/decode-uri-component/index.js","webpack://pingman.account/./node_modules/deep-equal/index.js","webpack://pingman.account/./node_modules/deep-equal/node_modules/object-keys/implementation.js","webpack://pingman.account/./node_modules/deep-equal/node_modules/object-keys/index.js","webpack://pingman.account/./node_modules/deep-equal/node_modules/object-keys/isArguments.js","webpack://pingman.account/./node_modules/dom-helpers/class/addClass.js","webpack://pingman.account/./node_modules/dom-helpers/class/hasClass.js","webpack://pingman.account/./node_modules/dom-helpers/class/removeClass.js","webpack://pingman.account/./node_modules/es-abstract/GetIntrinsic.js","webpack://pingman.account/./node_modules/es-abstract/helpers/callBind.js","webpack://pingman.account/./node_modules/events/events.js","webpack://pingman.account/./node_modules/function-bind/implementation.js","webpack://pingman.account/./node_modules/function-bind/index.js","webpack://pingman.account/./node_modules/gud/index.js","webpack://pingman.account/./node_modules/hammerjs/hammer.js","webpack://pingman.account/./node_modules/has-symbols/index.js","webpack://pingman.account/./node_modules/has-symbols/shams.js","webpack://pingman.account/./node_modules/has/src/index.js","webpack://pingman.account/./node_modules/resolve-pathname/esm/resolve-pathname.js","webpack://pingman.account/./node_modules/value-equal/esm/value-equal.js","webpack://pingman.account/./node_modules/history/esm/history.js","webpack://pingman.account/./node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","webpack://pingman.account/./node_modules/is-arguments/index.js","webpack://pingman.account/./node_modules/is-date-object/index.js","webpack://pingman.account/./node_modules/is-regex/index.js","webpack://pingman.account/./node_modules/isarray/index.js","webpack://pingman.account/./node_modules/jquery/dist/jquery.js","webpack://pingman.account/./node_modules/mini-create-react-context/node_modules/@babel/runtime/helpers/inheritsLoose.js","webpack://pingman.account/./node_modules/object-assign/index.js","webpack://pingman.account/./node_modules/object-is/index.js","webpack://pingman.account/./node_modules/pako/dist/pako_deflate.js","webpack://pingman.account/./node_modules/path-to-regexp/index.js","webpack://pingman.account/./node_modules/popper.js/dist/esm/popper.js","webpack://pingman.account/./node_modules/prop-types/factoryWithThrowingShims.js","webpack://pingman.account/./node_modules/prop-types/index.js","webpack://pingman.account/./node_modules/prop-types/lib/ReactPropTypesSecret.js","webpack://pingman.account/./node_modules/query-string/index.js","webpack://pingman.account/./node_modules/react-copy-to-clipboard/lib/Component.js","webpack://pingman.account/./node_modules/react-copy-to-clipboard/lib/index.js","webpack://pingman.account/./node_modules/react-dom/cjs/react-dom-server.browser.production.min.js","webpack://pingman.account/./node_modules/react-dom/cjs/react-dom.production.min.js","webpack://pingman.account/./node_modules/react-dom/index.js","webpack://pingman.account/./node_modules/react-dom/server.browser.js","webpack://pingman.account/./node_modules/react-hot-loader/dist/react-hot-loader.production.min.js","webpack://pingman.account/./node_modules/react-hot-loader/patch.js","webpack://pingman.account/./node_modules/react-is/cjs/react-is.production.min.js","webpack://pingman.account/./node_modules/react-is/index.js","webpack://pingman.account/./node_modules/react-lifecycles-compat/react-lifecycles-compat.es.js","webpack://pingman.account/./node_modules/react-popper/lib/esm/Manager.js","webpack://pingman.account/./node_modules/react-popper/lib/esm/Popper.js","webpack://pingman.account/./node_modules/react-popper/lib/esm/utils.js","webpack://pingman.account/./node_modules/react-router-dom/esm/react-router-dom.js","webpack://pingman.account/./node_modules/mini-create-react-context/dist/esm/index.js","webpack://pingman.account/./node_modules/react-router/esm/react-router.js","webpack://pingman.account/./node_modules/react-s-alert/dist/SAlert.js","webpack://pingman.account/./node_modules/react-s-alert/dist/SAlertContent.js","webpack://pingman.account/./node_modules/react-s-alert/dist/SAlertContentTmpl.js","webpack://pingman.account/./node_modules/react-s-alert/dist/s-alert-parts/s-alert-data-prep.js","webpack://pingman.account/./node_modules/react-s-alert/dist/s-alert-parts/s-alert-store.js","webpack://pingman.account/./node_modules/react-s-alert/dist/s-alert-parts/s-alert-tools.js","webpack://pingman.account/./node_modules/react-s-alert/index.js","webpack://pingman.account/./node_modules/react-timeago/lib/dateParser.js","webpack://pingman.account/./node_modules/react-timeago/lib/defaultFormatter.js","webpack://pingman.account/./node_modules/react-timeago/lib/index.js","webpack://pingman.account/./node_modules/react-transition-group/CSSTransition.js","webpack://pingman.account/./node_modules/react-transition-group/ReplaceTransition.js","webpack://pingman.account/./node_modules/react-transition-group/Transition.js","webpack://pingman.account/./node_modules/react-transition-group/TransitionGroup.js","webpack://pingman.account/./node_modules/react-transition-group/index.js","webpack://pingman.account/./node_modules/react-transition-group/utils/ChildMapping.js","webpack://pingman.account/./node_modules/react-transition-group/utils/PropTypes.js","webpack://pingman.account/./node_modules/react/cjs/react.production.min.js","webpack://pingman.account/./node_modules/react/index.js","webpack://pingman.account/./node_modules/reactstrap/es/Alert.js","webpack://pingman.account/./node_modules/reactstrap/es/Badge.js","webpack://pingman.account/./node_modules/reactstrap/es/Button.js","webpack://pingman.account/./node_modules/reactstrap/es/ButtonDropdown.js","webpack://pingman.account/./node_modules/reactstrap/es/ButtonGroup.js","webpack://pingman.account/./node_modules/reactstrap/es/Card.js","webpack://pingman.account/./node_modules/reactstrap/es/CardBody.js","webpack://pingman.account/./node_modules/reactstrap/es/CardFooter.js","webpack://pingman.account/./node_modules/reactstrap/es/CardHeader.js","webpack://pingman.account/./node_modules/reactstrap/es/CardTitle.js","webpack://pingman.account/./node_modules/reactstrap/es/Col.js","webpack://pingman.account/./node_modules/reactstrap/es/Collapse.js","webpack://pingman.account/./node_modules/reactstrap/es/Container.js","webpack://pingman.account/./node_modules/reactstrap/es/Dropdown.js","webpack://pingman.account/./node_modules/reactstrap/es/DropdownContext.js","webpack://pingman.account/./node_modules/reactstrap/es/DropdownItem.js","webpack://pingman.account/./node_modules/reactstrap/es/DropdownMenu.js","webpack://pingman.account/./node_modules/react-popper/lib/esm/Reference.js","webpack://pingman.account/./node_modules/reactstrap/es/DropdownToggle.js","webpack://pingman.account/./node_modules/reactstrap/es/Fade.js","webpack://pingman.account/./node_modules/reactstrap/es/Form.js","webpack://pingman.account/./node_modules/reactstrap/es/FormGroup.js","webpack://pingman.account/./node_modules/reactstrap/es/Input.js","webpack://pingman.account/./node_modules/reactstrap/es/InputGroup.js","webpack://pingman.account/./node_modules/reactstrap/es/Label.js","webpack://pingman.account/./node_modules/reactstrap/es/Portal.js","webpack://pingman.account/./node_modules/reactstrap/es/Modal.js","webpack://pingman.account/./node_modules/reactstrap/es/ModalBody.js","webpack://pingman.account/./node_modules/reactstrap/es/ModalFooter.js","webpack://pingman.account/./node_modules/reactstrap/es/ModalHeader.js","webpack://pingman.account/./node_modules/reactstrap/es/Nav.js","webpack://pingman.account/./node_modules/reactstrap/es/NavItem.js","webpack://pingman.account/./node_modules/reactstrap/es/NavLink.js","webpack://pingman.account/./node_modules/reactstrap/es/Navbar.js","webpack://pingman.account/./node_modules/reactstrap/es/NavbarBrand.js","webpack://pingman.account/./node_modules/reactstrap/es/NavbarToggler.js","webpack://pingman.account/./node_modules/reactstrap/es/Progress.js","webpack://pingman.account/./node_modules/reactstrap/es/Row.js","webpack://pingman.account/./node_modules/reactstrap/es/UncontrolledAlert.js","webpack://pingman.account/./node_modules/reactstrap/es/UncontrolledButtonDropdown.js","webpack://pingman.account/./node_modules/reactstrap/es/UncontrolledDropdown.js","webpack://pingman.account/./node_modules/reactstrap/es/PopperContent.js","webpack://pingman.account/./node_modules/reactstrap/es/TooltipPopoverWrapper.js","webpack://pingman.account/./node_modules/reactstrap/es/Tooltip.js","webpack://pingman.account/./node_modules/reactstrap/es/UncontrolledTooltip.js","webpack://pingman.account/./node_modules/reactstrap/es/utils.js","webpack://pingman.account/./node_modules/reactstrap/lib/Badge.js","webpack://pingman.account/./node_modules/reactstrap/lib/Button.js","webpack://pingman.account/./node_modules/reactstrap/lib/ButtonGroup.js","webpack://pingman.account/./node_modules/reactstrap/lib/Card.js","webpack://pingman.account/./node_modules/reactstrap/lib/CardBody.js","webpack://pingman.account/./node_modules/reactstrap/lib/CardFooter.js","webpack://pingman.account/./node_modules/reactstrap/lib/CardHeader.js","webpack://pingman.account/./node_modules/reactstrap/lib/CardTitle.js","webpack://pingman.account/./node_modules/reactstrap/lib/Col.js","webpack://pingman.account/./node_modules/reactstrap/lib/Collapse.js","webpack://pingman.account/./node_modules/reactstrap/lib/Container.js","webpack://pingman.account/./node_modules/reactstrap/lib/Fade.js","webpack://pingman.account/./node_modules/reactstrap/lib/Form.js","webpack://pingman.account/./node_modules/reactstrap/lib/FormGroup.js","webpack://pingman.account/./node_modules/reactstrap/lib/Input.js","webpack://pingman.account/./node_modules/reactstrap/lib/Label.js","webpack://pingman.account/./node_modules/reactstrap/lib/Modal.js","webpack://pingman.account/./node_modules/reactstrap/lib/ModalBody.js","webpack://pingman.account/./node_modules/reactstrap/lib/ModalFooter.js","webpack://pingman.account/./node_modules/reactstrap/lib/ModalHeader.js","webpack://pingman.account/./node_modules/reactstrap/lib/Portal.js","webpack://pingman.account/./node_modules/reactstrap/lib/Progress.js","webpack://pingman.account/./node_modules/reactstrap/lib/Row.js","webpack://pingman.account/./node_modules/reactstrap/lib/utils.js","webpack://pingman.account/./node_modules/regexp.prototype.flags/implementation.js","webpack://pingman.account/./node_modules/regexp.prototype.flags/index.js","webpack://pingman.account/./node_modules/regexp.prototype.flags/node_modules/define-properties/index.js","webpack://pingman.account/./node_modules/regexp.prototype.flags/node_modules/object-keys/implementation.js","webpack://pingman.account/./node_modules/regexp.prototype.flags/node_modules/object-keys/index.js","webpack://pingman.account/./node_modules/regexp.prototype.flags/node_modules/object-keys/isArguments.js","webpack://pingman.account/./node_modules/regexp.prototype.flags/polyfill.js","webpack://pingman.account/./node_modules/regexp.prototype.flags/shim.js","webpack://pingman.account/./node_modules/sanitize-filename/index.js","webpack://pingman.account/./node_modules/scheduler/cjs/scheduler.production.min.js","webpack://pingman.account/./node_modules/scheduler/index.js","webpack://pingman.account/./node_modules/split-on-first/index.js","webpack://pingman.account/./node_modules/strict-uri-encode/index.js","webpack://pingman.account/./node_modules/timeago.js/esm/lang/en_US.js","webpack://pingman.account/./node_modules/timeago.js/esm/lang/zh_CN.js","webpack://pingman.account/./node_modules/timeago.js/esm/register.js","webpack://pingman.account/./node_modules/timeago.js/esm/utils/date.js","webpack://pingman.account/./node_modules/timeago.js/esm/format.js","webpack://pingman.account/./node_modules/timeago.js/esm/index.js","webpack://pingman.account/./node_modules/tiny-invariant/dist/tiny-invariant.esm.js","webpack://pingman.account/./node_modules/toggle-selection/index.js","webpack://pingman.account/./node_modules/truncate-utf8-bytes/browser.js","webpack://pingman.account/./node_modules/truncate-utf8-bytes/lib/truncate.js","webpack://pingman.account/./node_modules/utf8-byte-length/browser.js","webpack://pingman.account/./node_modules/warning/warning.js","webpack://pingman.account/./node_modules/url-join/lib/url-join.js"],"sourcesContent":["// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\n/** Error thrown when an HTTP request fails. */\r\nvar HttpError = /** @class */ (function (_super) {\r\n __extends(HttpError, _super);\r\n /** Constructs a new instance of {@link @aspnet/signalr.HttpError}.\r\n *\r\n * @param {string} errorMessage A descriptive error message.\r\n * @param {number} statusCode The HTTP status code represented by this error.\r\n */\r\n function HttpError(errorMessage, statusCode) {\r\n var _newTarget = this.constructor;\r\n var _this = this;\r\n var trueProto = _newTarget.prototype;\r\n _this = _super.call(this, errorMessage) || this;\r\n _this.statusCode = statusCode;\r\n // Workaround issue in Typescript compiler\r\n // https://github.com/Microsoft/TypeScript/issues/13965#issuecomment-278570200\r\n _this.__proto__ = trueProto;\r\n return _this;\r\n }\r\n return HttpError;\r\n}(Error));\r\nexport { HttpError };\r\n/** Error thrown when a timeout elapses. */\r\nvar TimeoutError = /** @class */ (function (_super) {\r\n __extends(TimeoutError, _super);\r\n /** Constructs a new instance of {@link @aspnet/signalr.TimeoutError}.\r\n *\r\n * @param {string} errorMessage A descriptive error message.\r\n */\r\n function TimeoutError(errorMessage) {\r\n var _newTarget = this.constructor;\r\n if (errorMessage === void 0) { errorMessage = \"A timeout occurred.\"; }\r\n var _this = this;\r\n var trueProto = _newTarget.prototype;\r\n _this = _super.call(this, errorMessage) || this;\r\n // Workaround issue in Typescript compiler\r\n // https://github.com/Microsoft/TypeScript/issues/13965#issuecomment-278570200\r\n _this.__proto__ = trueProto;\r\n return _this;\r\n }\r\n return TimeoutError;\r\n}(Error));\r\nexport { TimeoutError };\r\n/** Error thrown when an action is aborted. */\r\nvar AbortError = /** @class */ (function (_super) {\r\n __extends(AbortError, _super);\r\n /** Constructs a new instance of {@link AbortError}.\r\n *\r\n * @param {string} errorMessage A descriptive error message.\r\n */\r\n function AbortError(errorMessage) {\r\n var _newTarget = this.constructor;\r\n if (errorMessage === void 0) { errorMessage = \"An abort occurred.\"; }\r\n var _this = this;\r\n var trueProto = _newTarget.prototype;\r\n _this = _super.call(this, errorMessage) || this;\r\n // Workaround issue in Typescript compiler\r\n // https://github.com/Microsoft/TypeScript/issues/13965#issuecomment-278570200\r\n _this.__proto__ = trueProto;\r\n return _this;\r\n }\r\n return AbortError;\r\n}(Error));\r\nexport { AbortError };\r\n//# sourceMappingURL=Errors.js.map","// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\n// These values are designed to match the ASP.NET Log Levels since that's the pattern we're emulating here.\r\n/** Indicates the severity of a log message.\r\n *\r\n * Log Levels are ordered in increasing severity. So `Debug` is more severe than `Trace`, etc.\r\n */\r\nexport var LogLevel;\r\n(function (LogLevel) {\r\n /** Log level for very low severity diagnostic messages. */\r\n LogLevel[LogLevel[\"Trace\"] = 0] = \"Trace\";\r\n /** Log level for low severity diagnostic messages. */\r\n LogLevel[LogLevel[\"Debug\"] = 1] = \"Debug\";\r\n /** Log level for informational diagnostic messages. */\r\n LogLevel[LogLevel[\"Information\"] = 2] = \"Information\";\r\n /** Log level for diagnostic messages that indicate a non-fatal problem. */\r\n LogLevel[LogLevel[\"Warning\"] = 3] = \"Warning\";\r\n /** Log level for diagnostic messages that indicate a failure in the current operation. */\r\n LogLevel[LogLevel[\"Error\"] = 4] = \"Error\";\r\n /** Log level for diagnostic messages that indicate a failure that will terminate the entire application. */\r\n LogLevel[LogLevel[\"Critical\"] = 5] = \"Critical\";\r\n /** The highest possible log level. Used when configuring logging to indicate that no log messages should be emitted. */\r\n LogLevel[LogLevel[\"None\"] = 6] = \"None\";\r\n})(LogLevel || (LogLevel = {}));\r\n//# sourceMappingURL=ILogger.js.map","// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\nvar __assign = (this && this.__assign) || Object.assign || function(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\r\n t[p] = s[p];\r\n }\r\n return t;\r\n};\r\n/** Represents an HTTP response. */\r\nvar HttpResponse = /** @class */ (function () {\r\n function HttpResponse(statusCode, statusText, content) {\r\n this.statusCode = statusCode;\r\n this.statusText = statusText;\r\n this.content = content;\r\n }\r\n return HttpResponse;\r\n}());\r\nexport { HttpResponse };\r\n/** Abstraction over an HTTP client.\r\n *\r\n * This class provides an abstraction over an HTTP client so that a different implementation can be provided on different platforms.\r\n */\r\nvar HttpClient = /** @class */ (function () {\r\n function HttpClient() {\r\n }\r\n HttpClient.prototype.get = function (url, options) {\r\n return this.send(__assign({}, options, { method: \"GET\", url: url }));\r\n };\r\n HttpClient.prototype.post = function (url, options) {\r\n return this.send(__assign({}, options, { method: \"POST\", url: url }));\r\n };\r\n HttpClient.prototype.delete = function (url, options) {\r\n return this.send(__assign({}, options, { method: \"DELETE\", url: url }));\r\n };\r\n /** Gets all cookies that apply to the specified URL.\r\n *\r\n * @param url The URL that the cookies are valid for.\r\n * @returns {string} A string containing all the key-value cookie pairs for the specified URL.\r\n */\r\n // @ts-ignore\r\n HttpClient.prototype.getCookieString = function (url) {\r\n return \"\";\r\n };\r\n return HttpClient;\r\n}());\r\nexport { HttpClient };\r\n//# sourceMappingURL=HttpClient.js.map","// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\n/** A logger that does nothing when log messages are sent to it. */\r\nvar NullLogger = /** @class */ (function () {\r\n function NullLogger() {\r\n }\r\n /** @inheritDoc */\r\n // tslint:disable-next-line\r\n NullLogger.prototype.log = function (_logLevel, _message) {\r\n };\r\n /** The singleton instance of the {@link @aspnet/signalr.NullLogger}. */\r\n NullLogger.instance = new NullLogger();\r\n return NullLogger;\r\n}());\r\nexport { NullLogger };\r\n//# sourceMappingURL=Loggers.js.map","// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nvar __generator = (this && this.__generator) || function (thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n};\r\nimport { LogLevel } from \"./ILogger\";\r\nimport { NullLogger } from \"./Loggers\";\r\n/** @private */\r\nvar Arg = /** @class */ (function () {\r\n function Arg() {\r\n }\r\n Arg.isRequired = function (val, name) {\r\n if (val === null || val === undefined) {\r\n throw new Error(\"The '\" + name + \"' argument is required.\");\r\n }\r\n };\r\n Arg.isIn = function (val, values, name) {\r\n // TypeScript enums have keys for **both** the name and the value of each enum member on the type itself.\r\n if (!(val in values)) {\r\n throw new Error(\"Unknown \" + name + \" value: \" + val + \".\");\r\n }\r\n };\r\n return Arg;\r\n}());\r\nexport { Arg };\r\n/** @private */\r\nexport function getDataDetail(data, includeContent) {\r\n var detail = \"\";\r\n if (isArrayBuffer(data)) {\r\n detail = \"Binary data of length \" + data.byteLength;\r\n if (includeContent) {\r\n detail += \". Content: '\" + formatArrayBuffer(data) + \"'\";\r\n }\r\n }\r\n else if (typeof data === \"string\") {\r\n detail = \"String data of length \" + data.length;\r\n if (includeContent) {\r\n detail += \". Content: '\" + data + \"'\";\r\n }\r\n }\r\n return detail;\r\n}\r\n/** @private */\r\nexport function formatArrayBuffer(data) {\r\n var view = new Uint8Array(data);\r\n // Uint8Array.map only supports returning another Uint8Array?\r\n var str = \"\";\r\n view.forEach(function (num) {\r\n var pad = num < 16 ? \"0\" : \"\";\r\n str += \"0x\" + pad + num.toString(16) + \" \";\r\n });\r\n // Trim of trailing space.\r\n return str.substr(0, str.length - 1);\r\n}\r\n// Also in signalr-protocol-msgpack/Utils.ts\r\n/** @private */\r\nexport function isArrayBuffer(val) {\r\n return val && typeof ArrayBuffer !== \"undefined\" &&\r\n (val instanceof ArrayBuffer ||\r\n // Sometimes we get an ArrayBuffer that doesn't satisfy instanceof\r\n (val.constructor && val.constructor.name === \"ArrayBuffer\"));\r\n}\r\n/** @private */\r\nexport function sendMessage(logger, transportName, httpClient, url, accessTokenFactory, content, logMessageContent) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var _a, headers, token, responseType, response;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n if (!accessTokenFactory) return [3 /*break*/, 2];\r\n return [4 /*yield*/, accessTokenFactory()];\r\n case 1:\r\n token = _b.sent();\r\n if (token) {\r\n headers = (_a = {},\r\n _a[\"Authorization\"] = \"Bearer \" + token,\r\n _a);\r\n }\r\n _b.label = 2;\r\n case 2:\r\n logger.log(LogLevel.Trace, \"(\" + transportName + \" transport) sending data. \" + getDataDetail(content, logMessageContent) + \".\");\r\n responseType = isArrayBuffer(content) ? \"arraybuffer\" : \"text\";\r\n return [4 /*yield*/, httpClient.post(url, {\r\n content: content,\r\n headers: headers,\r\n responseType: responseType,\r\n })];\r\n case 3:\r\n response = _b.sent();\r\n logger.log(LogLevel.Trace, \"(\" + transportName + \" transport) request complete. Response status: \" + response.statusCode + \".\");\r\n return [2 /*return*/];\r\n }\r\n });\r\n });\r\n}\r\n/** @private */\r\nexport function createLogger(logger) {\r\n if (logger === undefined) {\r\n return new ConsoleLogger(LogLevel.Information);\r\n }\r\n if (logger === null) {\r\n return NullLogger.instance;\r\n }\r\n if (logger.log) {\r\n return logger;\r\n }\r\n return new ConsoleLogger(logger);\r\n}\r\n/** @private */\r\nvar Subject = /** @class */ (function () {\r\n function Subject() {\r\n this.observers = [];\r\n }\r\n Subject.prototype.next = function (item) {\r\n for (var _i = 0, _a = this.observers; _i < _a.length; _i++) {\r\n var observer = _a[_i];\r\n observer.next(item);\r\n }\r\n };\r\n Subject.prototype.error = function (err) {\r\n for (var _i = 0, _a = this.observers; _i < _a.length; _i++) {\r\n var observer = _a[_i];\r\n if (observer.error) {\r\n observer.error(err);\r\n }\r\n }\r\n };\r\n Subject.prototype.complete = function () {\r\n for (var _i = 0, _a = this.observers; _i < _a.length; _i++) {\r\n var observer = _a[_i];\r\n if (observer.complete) {\r\n observer.complete();\r\n }\r\n }\r\n };\r\n Subject.prototype.subscribe = function (observer) {\r\n this.observers.push(observer);\r\n return new SubjectSubscription(this, observer);\r\n };\r\n return Subject;\r\n}());\r\nexport { Subject };\r\n/** @private */\r\nvar SubjectSubscription = /** @class */ (function () {\r\n function SubjectSubscription(subject, observer) {\r\n this.subject = subject;\r\n this.observer = observer;\r\n }\r\n SubjectSubscription.prototype.dispose = function () {\r\n var index = this.subject.observers.indexOf(this.observer);\r\n if (index > -1) {\r\n this.subject.observers.splice(index, 1);\r\n }\r\n if (this.subject.observers.length === 0 && this.subject.cancelCallback) {\r\n this.subject.cancelCallback().catch(function (_) { });\r\n }\r\n };\r\n return SubjectSubscription;\r\n}());\r\nexport { SubjectSubscription };\r\n/** @private */\r\nvar ConsoleLogger = /** @class */ (function () {\r\n function ConsoleLogger(minimumLogLevel) {\r\n this.minimumLogLevel = minimumLogLevel;\r\n }\r\n ConsoleLogger.prototype.log = function (logLevel, message) {\r\n if (logLevel >= this.minimumLogLevel) {\r\n switch (logLevel) {\r\n case LogLevel.Critical:\r\n case LogLevel.Error:\r\n console.error(\"[\" + new Date().toISOString() + \"] \" + LogLevel[logLevel] + \": \" + message);\r\n break;\r\n case LogLevel.Warning:\r\n console.warn(\"[\" + new Date().toISOString() + \"] \" + LogLevel[logLevel] + \": \" + message);\r\n break;\r\n case LogLevel.Information:\r\n console.info(\"[\" + new Date().toISOString() + \"] \" + LogLevel[logLevel] + \": \" + message);\r\n break;\r\n default:\r\n // console.debug only goes to attached debuggers in Node, so we use console.log for Trace and Debug\r\n console.log(\"[\" + new Date().toISOString() + \"] \" + LogLevel[logLevel] + \": \" + message);\r\n break;\r\n }\r\n }\r\n };\r\n return ConsoleLogger;\r\n}());\r\nexport { ConsoleLogger };\r\n//# sourceMappingURL=Utils.js.map","// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nvar __assign = (this && this.__assign) || Object.assign || function(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\r\n t[p] = s[p];\r\n }\r\n return t;\r\n};\r\nimport { AbortError, HttpError, TimeoutError } from \"./Errors\";\r\nimport { HttpClient, HttpResponse } from \"./HttpClient\";\r\nimport { LogLevel } from \"./ILogger\";\r\nimport { isArrayBuffer } from \"./Utils\";\r\nvar requestModule;\r\nif (typeof XMLHttpRequest === \"undefined\") {\r\n // In order to ignore the dynamic require in webpack builds we need to do this magic\r\n // @ts-ignore: TS doesn't know about these names\r\n var requireFunc = typeof __webpack_require__ === \"function\" ? __non_webpack_require__ : require;\r\n requestModule = requireFunc(\"request\");\r\n}\r\nvar NodeHttpClient = /** @class */ (function (_super) {\r\n __extends(NodeHttpClient, _super);\r\n function NodeHttpClient(logger) {\r\n var _this = _super.call(this) || this;\r\n if (typeof requestModule === \"undefined\") {\r\n throw new Error(\"The 'request' module could not be loaded.\");\r\n }\r\n _this.logger = logger;\r\n _this.cookieJar = requestModule.jar();\r\n _this.request = requestModule.defaults({ jar: _this.cookieJar });\r\n return _this;\r\n }\r\n NodeHttpClient.prototype.send = function (httpRequest) {\r\n var _this = this;\r\n return new Promise(function (resolve, reject) {\r\n var requestBody;\r\n if (isArrayBuffer(httpRequest.content)) {\r\n requestBody = Buffer.from(httpRequest.content);\r\n }\r\n else {\r\n requestBody = httpRequest.content || \"\";\r\n }\r\n var currentRequest = _this.request(httpRequest.url, {\r\n body: requestBody,\r\n // If binary is expected 'null' should be used, otherwise for text 'utf8'\r\n encoding: httpRequest.responseType === \"arraybuffer\" ? null : \"utf8\",\r\n headers: __assign({ \r\n // Tell auth middleware to 401 instead of redirecting\r\n \"X-Requested-With\": \"XMLHttpRequest\" }, httpRequest.headers),\r\n method: httpRequest.method,\r\n timeout: httpRequest.timeout,\r\n }, function (error, response, body) {\r\n if (httpRequest.abortSignal) {\r\n httpRequest.abortSignal.onabort = null;\r\n }\r\n if (error) {\r\n if (error.code === \"ETIMEDOUT\") {\r\n _this.logger.log(LogLevel.Warning, \"Timeout from HTTP request.\");\r\n reject(new TimeoutError());\r\n }\r\n _this.logger.log(LogLevel.Warning, \"Error from HTTP request. \" + error);\r\n reject(error);\r\n return;\r\n }\r\n if (response.statusCode >= 200 && response.statusCode < 300) {\r\n resolve(new HttpResponse(response.statusCode, response.statusMessage || \"\", body));\r\n }\r\n else {\r\n reject(new HttpError(response.statusMessage || \"\", response.statusCode || 0));\r\n }\r\n });\r\n if (httpRequest.abortSignal) {\r\n httpRequest.abortSignal.onabort = function () {\r\n currentRequest.abort();\r\n reject(new AbortError());\r\n };\r\n }\r\n });\r\n };\r\n NodeHttpClient.prototype.getCookieString = function (url) {\r\n return this.cookieJar.getCookieString(url);\r\n };\r\n return NodeHttpClient;\r\n}(HttpClient));\r\nexport { NodeHttpClient };\r\n//# sourceMappingURL=NodeHttpClient.js.map","// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\n/** Defines the type of a Hub Message. */\r\nexport var MessageType;\r\n(function (MessageType) {\r\n /** Indicates the message is an Invocation message and implements the {@link @aspnet/signalr.InvocationMessage} interface. */\r\n MessageType[MessageType[\"Invocation\"] = 1] = \"Invocation\";\r\n /** Indicates the message is a StreamItem message and implements the {@link @aspnet/signalr.StreamItemMessage} interface. */\r\n MessageType[MessageType[\"StreamItem\"] = 2] = \"StreamItem\";\r\n /** Indicates the message is a Completion message and implements the {@link @aspnet/signalr.CompletionMessage} interface. */\r\n MessageType[MessageType[\"Completion\"] = 3] = \"Completion\";\r\n /** Indicates the message is a Stream Invocation message and implements the {@link @aspnet/signalr.StreamInvocationMessage} interface. */\r\n MessageType[MessageType[\"StreamInvocation\"] = 4] = \"StreamInvocation\";\r\n /** Indicates the message is a Cancel Invocation message and implements the {@link @aspnet/signalr.CancelInvocationMessage} interface. */\r\n MessageType[MessageType[\"CancelInvocation\"] = 5] = \"CancelInvocation\";\r\n /** Indicates the message is a Ping message and implements the {@link @aspnet/signalr.PingMessage} interface. */\r\n MessageType[MessageType[\"Ping\"] = 6] = \"Ping\";\r\n /** Indicates the message is a Close message and implements the {@link @aspnet/signalr.CloseMessage} interface. */\r\n MessageType[MessageType[\"Close\"] = 7] = \"Close\";\r\n})(MessageType || (MessageType = {}));\r\n//# sourceMappingURL=IHubProtocol.js.map","// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nimport { AbortError, HttpError, TimeoutError } from \"./Errors\";\r\nimport { HttpClient, HttpResponse } from \"./HttpClient\";\r\nimport { LogLevel } from \"./ILogger\";\r\nvar XhrHttpClient = /** @class */ (function (_super) {\r\n __extends(XhrHttpClient, _super);\r\n function XhrHttpClient(logger) {\r\n var _this = _super.call(this) || this;\r\n _this.logger = logger;\r\n return _this;\r\n }\r\n /** @inheritDoc */\r\n XhrHttpClient.prototype.send = function (request) {\r\n var _this = this;\r\n // Check that abort was not signaled before calling send\r\n if (request.abortSignal && request.abortSignal.aborted) {\r\n return Promise.reject(new AbortError());\r\n }\r\n if (!request.method) {\r\n return Promise.reject(new Error(\"No method defined.\"));\r\n }\r\n if (!request.url) {\r\n return Promise.reject(new Error(\"No url defined.\"));\r\n }\r\n return new Promise(function (resolve, reject) {\r\n var xhr = new XMLHttpRequest();\r\n xhr.open(request.method, request.url, true);\r\n xhr.withCredentials = true;\r\n xhr.setRequestHeader(\"X-Requested-With\", \"XMLHttpRequest\");\r\n // Explicitly setting the Content-Type header for React Native on Android platform.\r\n xhr.setRequestHeader(\"Content-Type\", \"text/plain;charset=UTF-8\");\r\n var headers = request.headers;\r\n if (headers) {\r\n Object.keys(headers)\r\n .forEach(function (header) {\r\n xhr.setRequestHeader(header, headers[header]);\r\n });\r\n }\r\n if (request.responseType) {\r\n xhr.responseType = request.responseType;\r\n }\r\n if (request.abortSignal) {\r\n request.abortSignal.onabort = function () {\r\n xhr.abort();\r\n reject(new AbortError());\r\n };\r\n }\r\n if (request.timeout) {\r\n xhr.timeout = request.timeout;\r\n }\r\n xhr.onload = function () {\r\n if (request.abortSignal) {\r\n request.abortSignal.onabort = null;\r\n }\r\n if (xhr.status >= 200 && xhr.status < 300) {\r\n resolve(new HttpResponse(xhr.status, xhr.statusText, xhr.response || xhr.responseText));\r\n }\r\n else {\r\n reject(new HttpError(xhr.statusText, xhr.status));\r\n }\r\n };\r\n xhr.onerror = function () {\r\n _this.logger.log(LogLevel.Warning, \"Error from HTTP request. \" + xhr.status + \": \" + xhr.statusText + \".\");\r\n reject(new HttpError(xhr.statusText, xhr.status));\r\n };\r\n xhr.ontimeout = function () {\r\n _this.logger.log(LogLevel.Warning, \"Timeout from HTTP request.\");\r\n reject(new TimeoutError());\r\n };\r\n xhr.send(request.content || \"\");\r\n });\r\n };\r\n return XhrHttpClient;\r\n}(HttpClient));\r\nexport { XhrHttpClient };\r\n//# sourceMappingURL=XhrHttpClient.js.map","// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\nvar __extends = (this && this.__extends) || (function () {\r\n var extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return function (d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n})();\r\nimport { AbortError } from \"./Errors\";\r\nimport { HttpClient } from \"./HttpClient\";\r\nimport { NodeHttpClient } from \"./NodeHttpClient\";\r\nimport { XhrHttpClient } from \"./XhrHttpClient\";\r\n/** Default implementation of {@link @aspnet/signalr.HttpClient}. */\r\nvar DefaultHttpClient = /** @class */ (function (_super) {\r\n __extends(DefaultHttpClient, _super);\r\n /** Creates a new instance of the {@link @aspnet/signalr.DefaultHttpClient}, using the provided {@link @aspnet/signalr.ILogger} to log messages. */\r\n function DefaultHttpClient(logger) {\r\n var _this = _super.call(this) || this;\r\n if (typeof XMLHttpRequest !== \"undefined\") {\r\n _this.httpClient = new XhrHttpClient(logger);\r\n }\r\n else {\r\n _this.httpClient = new NodeHttpClient(logger);\r\n }\r\n return _this;\r\n }\r\n /** @inheritDoc */\r\n DefaultHttpClient.prototype.send = function (request) {\r\n // Check that abort was not signaled before calling send\r\n if (request.abortSignal && request.abortSignal.aborted) {\r\n return Promise.reject(new AbortError());\r\n }\r\n if (!request.method) {\r\n return Promise.reject(new Error(\"No method defined.\"));\r\n }\r\n if (!request.url) {\r\n return Promise.reject(new Error(\"No url defined.\"));\r\n }\r\n return this.httpClient.send(request);\r\n };\r\n DefaultHttpClient.prototype.getCookieString = function (url) {\r\n return this.httpClient.getCookieString(url);\r\n };\r\n return DefaultHttpClient;\r\n}(HttpClient));\r\nexport { DefaultHttpClient };\r\n//# sourceMappingURL=DefaultHttpClient.js.map","// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\n// Not exported from index\r\n/** @private */\r\nvar TextMessageFormat = /** @class */ (function () {\r\n function TextMessageFormat() {\r\n }\r\n TextMessageFormat.write = function (output) {\r\n return \"\" + output + TextMessageFormat.RecordSeparator;\r\n };\r\n TextMessageFormat.parse = function (input) {\r\n if (input[input.length - 1] !== TextMessageFormat.RecordSeparator) {\r\n throw new Error(\"Message is incomplete.\");\r\n }\r\n var messages = input.split(TextMessageFormat.RecordSeparator);\r\n messages.pop();\r\n return messages;\r\n };\r\n TextMessageFormat.RecordSeparatorCode = 0x1e;\r\n TextMessageFormat.RecordSeparator = String.fromCharCode(TextMessageFormat.RecordSeparatorCode);\r\n return TextMessageFormat;\r\n}());\r\nexport { TextMessageFormat };\r\n//# sourceMappingURL=TextMessageFormat.js.map","// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\nimport { TextMessageFormat } from \"./TextMessageFormat\";\r\nimport { isArrayBuffer } from \"./Utils\";\r\n/** @private */\r\nvar HandshakeProtocol = /** @class */ (function () {\r\n function HandshakeProtocol() {\r\n }\r\n // Handshake request is always JSON\r\n HandshakeProtocol.prototype.writeHandshakeRequest = function (handshakeRequest) {\r\n return TextMessageFormat.write(JSON.stringify(handshakeRequest));\r\n };\r\n HandshakeProtocol.prototype.parseHandshakeResponse = function (data) {\r\n var responseMessage;\r\n var messageData;\r\n var remainingData;\r\n if (isArrayBuffer(data) || (typeof Buffer !== \"undefined\" && data instanceof Buffer)) {\r\n // Format is binary but still need to read JSON text from handshake response\r\n var binaryData = new Uint8Array(data);\r\n var separatorIndex = binaryData.indexOf(TextMessageFormat.RecordSeparatorCode);\r\n if (separatorIndex === -1) {\r\n throw new Error(\"Message is incomplete.\");\r\n }\r\n // content before separator is handshake response\r\n // optional content after is additional messages\r\n var responseLength = separatorIndex + 1;\r\n messageData = String.fromCharCode.apply(null, binaryData.slice(0, responseLength));\r\n remainingData = (binaryData.byteLength > responseLength) ? binaryData.slice(responseLength).buffer : null;\r\n }\r\n else {\r\n var textData = data;\r\n var separatorIndex = textData.indexOf(TextMessageFormat.RecordSeparator);\r\n if (separatorIndex === -1) {\r\n throw new Error(\"Message is incomplete.\");\r\n }\r\n // content before separator is handshake response\r\n // optional content after is additional messages\r\n var responseLength = separatorIndex + 1;\r\n messageData = textData.substring(0, responseLength);\r\n remainingData = (textData.length > responseLength) ? textData.substring(responseLength) : null;\r\n }\r\n // At this point we should have just the single handshake message\r\n var messages = TextMessageFormat.parse(messageData);\r\n var response = JSON.parse(messages[0]);\r\n if (response.type) {\r\n throw new Error(\"Expected a handshake response from the server.\");\r\n }\r\n responseMessage = response;\r\n // multiple messages could have arrived with handshake\r\n // return additional data to be parsed as usual, or null if all parsed\r\n return [remainingData, responseMessage];\r\n };\r\n return HandshakeProtocol;\r\n}());\r\nexport { HandshakeProtocol };\r\n//# sourceMappingURL=HandshakeProtocol.js.map","// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nvar __generator = (this && this.__generator) || function (thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n};\r\nimport { HandshakeProtocol } from \"./HandshakeProtocol\";\r\nimport { MessageType } from \"./IHubProtocol\";\r\nimport { LogLevel } from \"./ILogger\";\r\nimport { Arg, Subject } from \"./Utils\";\r\nvar DEFAULT_TIMEOUT_IN_MS = 30 * 1000;\r\nvar DEFAULT_PING_INTERVAL_IN_MS = 15 * 1000;\r\n/** Describes the current state of the {@link HubConnection} to the server. */\r\nexport var HubConnectionState;\r\n(function (HubConnectionState) {\r\n /** The hub connection is disconnected. */\r\n HubConnectionState[HubConnectionState[\"Disconnected\"] = 0] = \"Disconnected\";\r\n /** The hub connection is connected. */\r\n HubConnectionState[HubConnectionState[\"Connected\"] = 1] = \"Connected\";\r\n})(HubConnectionState || (HubConnectionState = {}));\r\n/** Represents a connection to a SignalR Hub. */\r\nvar HubConnection = /** @class */ (function () {\r\n function HubConnection(connection, logger, protocol) {\r\n var _this = this;\r\n Arg.isRequired(connection, \"connection\");\r\n Arg.isRequired(logger, \"logger\");\r\n Arg.isRequired(protocol, \"protocol\");\r\n this.serverTimeoutInMilliseconds = DEFAULT_TIMEOUT_IN_MS;\r\n this.keepAliveIntervalInMilliseconds = DEFAULT_PING_INTERVAL_IN_MS;\r\n this.logger = logger;\r\n this.protocol = protocol;\r\n this.connection = connection;\r\n this.handshakeProtocol = new HandshakeProtocol();\r\n this.connection.onreceive = function (data) { return _this.processIncomingData(data); };\r\n this.connection.onclose = function (error) { return _this.connectionClosed(error); };\r\n this.callbacks = {};\r\n this.methods = {};\r\n this.closedCallbacks = [];\r\n this.id = 0;\r\n this.receivedHandshakeResponse = false;\r\n this.connectionState = HubConnectionState.Disconnected;\r\n this.cachedPingMessage = this.protocol.writeMessage({ type: MessageType.Ping });\r\n }\r\n /** @internal */\r\n // Using a public static factory method means we can have a private constructor and an _internal_\r\n // create method that can be used by HubConnectionBuilder. An \"internal\" constructor would just\r\n // be stripped away and the '.d.ts' file would have no constructor, which is interpreted as a\r\n // public parameter-less constructor.\r\n HubConnection.create = function (connection, logger, protocol) {\r\n return new HubConnection(connection, logger, protocol);\r\n };\r\n Object.defineProperty(HubConnection.prototype, \"state\", {\r\n /** Indicates the state of the {@link HubConnection} to the server. */\r\n get: function () {\r\n return this.connectionState;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /** Starts the connection.\r\n *\r\n * @returns {Promise} A Promise that resolves when the connection has been successfully established, or rejects with an error.\r\n */\r\n HubConnection.prototype.start = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var handshakeRequest, handshakePromise;\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n handshakeRequest = {\r\n protocol: this.protocol.name,\r\n version: this.protocol.version,\r\n };\r\n this.logger.log(LogLevel.Debug, \"Starting HubConnection.\");\r\n this.receivedHandshakeResponse = false;\r\n handshakePromise = new Promise(function (resolve, reject) {\r\n _this.handshakeResolver = resolve;\r\n _this.handshakeRejecter = reject;\r\n });\r\n return [4 /*yield*/, this.connection.start(this.protocol.transferFormat)];\r\n case 1:\r\n _a.sent();\r\n this.logger.log(LogLevel.Debug, \"Sending handshake request.\");\r\n return [4 /*yield*/, this.sendMessage(this.handshakeProtocol.writeHandshakeRequest(handshakeRequest))];\r\n case 2:\r\n _a.sent();\r\n this.logger.log(LogLevel.Information, \"Using HubProtocol '\" + this.protocol.name + \"'.\");\r\n // defensively cleanup timeout in case we receive a message from the server before we finish start\r\n this.cleanupTimeout();\r\n this.resetTimeoutPeriod();\r\n this.resetKeepAliveInterval();\r\n // Wait for the handshake to complete before marking connection as connected\r\n return [4 /*yield*/, handshakePromise];\r\n case 3:\r\n // Wait for the handshake to complete before marking connection as connected\r\n _a.sent();\r\n this.connectionState = HubConnectionState.Connected;\r\n return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /** Stops the connection.\r\n *\r\n * @returns {Promise} A Promise that resolves when the connection has been successfully terminated, or rejects with an error.\r\n */\r\n HubConnection.prototype.stop = function () {\r\n this.logger.log(LogLevel.Debug, \"Stopping HubConnection.\");\r\n this.cleanupTimeout();\r\n this.cleanupPingTimer();\r\n return this.connection.stop();\r\n };\r\n /** Invokes a streaming hub method on the server using the specified name and arguments.\r\n *\r\n * @typeparam T The type of the items returned by the server.\r\n * @param {string} methodName The name of the server method to invoke.\r\n * @param {any[]} args The arguments used to invoke the server method.\r\n * @returns {IStreamResult} An object that yields results from the server as they are received.\r\n */\r\n HubConnection.prototype.stream = function (methodName) {\r\n var _this = this;\r\n var args = [];\r\n for (var _i = 1; _i < arguments.length; _i++) {\r\n args[_i - 1] = arguments[_i];\r\n }\r\n var invocationDescriptor = this.createStreamInvocation(methodName, args);\r\n var promiseQueue;\r\n var subject = new Subject();\r\n subject.cancelCallback = function () {\r\n var cancelInvocation = _this.createCancelInvocation(invocationDescriptor.invocationId);\r\n var cancelMessage = _this.protocol.writeMessage(cancelInvocation);\r\n delete _this.callbacks[invocationDescriptor.invocationId];\r\n return promiseQueue.then(function () {\r\n return _this.sendMessage(cancelMessage);\r\n });\r\n };\r\n this.callbacks[invocationDescriptor.invocationId] = function (invocationEvent, error) {\r\n if (error) {\r\n subject.error(error);\r\n return;\r\n }\r\n else if (invocationEvent) {\r\n // invocationEvent will not be null when an error is not passed to the callback\r\n if (invocationEvent.type === MessageType.Completion) {\r\n if (invocationEvent.error) {\r\n subject.error(new Error(invocationEvent.error));\r\n }\r\n else {\r\n subject.complete();\r\n }\r\n }\r\n else {\r\n subject.next((invocationEvent.item));\r\n }\r\n }\r\n };\r\n var message = this.protocol.writeMessage(invocationDescriptor);\r\n promiseQueue = this.sendMessage(message)\r\n .catch(function (e) {\r\n subject.error(e);\r\n delete _this.callbacks[invocationDescriptor.invocationId];\r\n });\r\n return subject;\r\n };\r\n HubConnection.prototype.sendMessage = function (message) {\r\n this.resetKeepAliveInterval();\r\n return this.connection.send(message);\r\n };\r\n /** Invokes a hub method on the server using the specified name and arguments. Does not wait for a response from the receiver.\r\n *\r\n * The Promise returned by this method resolves when the client has sent the invocation to the server. The server may still\r\n * be processing the invocation.\r\n *\r\n * @param {string} methodName The name of the server method to invoke.\r\n * @param {any[]} args The arguments used to invoke the server method.\r\n * @returns {Promise} A Promise that resolves when the invocation has been successfully sent, or rejects with an error.\r\n */\r\n HubConnection.prototype.send = function (methodName) {\r\n var args = [];\r\n for (var _i = 1; _i < arguments.length; _i++) {\r\n args[_i - 1] = arguments[_i];\r\n }\r\n var invocationDescriptor = this.createInvocation(methodName, args, true);\r\n var message = this.protocol.writeMessage(invocationDescriptor);\r\n return this.sendMessage(message);\r\n };\r\n /** Invokes a hub method on the server using the specified name and arguments.\r\n *\r\n * The Promise returned by this method resolves when the server indicates it has finished invoking the method. When the promise\r\n * resolves, the server has finished invoking the method. If the server method returns a result, it is produced as the result of\r\n * resolving the Promise.\r\n *\r\n * @typeparam T The expected return type.\r\n * @param {string} methodName The name of the server method to invoke.\r\n * @param {any[]} args The arguments used to invoke the server method.\r\n * @returns {Promise} A Promise that resolves with the result of the server method (if any), or rejects with an error.\r\n */\r\n HubConnection.prototype.invoke = function (methodName) {\r\n var _this = this;\r\n var args = [];\r\n for (var _i = 1; _i < arguments.length; _i++) {\r\n args[_i - 1] = arguments[_i];\r\n }\r\n var invocationDescriptor = this.createInvocation(methodName, args, false);\r\n var p = new Promise(function (resolve, reject) {\r\n // invocationId will always have a value for a non-blocking invocation\r\n _this.callbacks[invocationDescriptor.invocationId] = function (invocationEvent, error) {\r\n if (error) {\r\n reject(error);\r\n return;\r\n }\r\n else if (invocationEvent) {\r\n // invocationEvent will not be null when an error is not passed to the callback\r\n if (invocationEvent.type === MessageType.Completion) {\r\n if (invocationEvent.error) {\r\n reject(new Error(invocationEvent.error));\r\n }\r\n else {\r\n resolve(invocationEvent.result);\r\n }\r\n }\r\n else {\r\n reject(new Error(\"Unexpected message type: \" + invocationEvent.type));\r\n }\r\n }\r\n };\r\n var message = _this.protocol.writeMessage(invocationDescriptor);\r\n _this.sendMessage(message)\r\n .catch(function (e) {\r\n reject(e);\r\n // invocationId will always have a value for a non-blocking invocation\r\n delete _this.callbacks[invocationDescriptor.invocationId];\r\n });\r\n });\r\n return p;\r\n };\r\n /** Registers a handler that will be invoked when the hub method with the specified method name is invoked.\r\n *\r\n * @param {string} methodName The name of the hub method to define.\r\n * @param {Function} newMethod The handler that will be raised when the hub method is invoked.\r\n */\r\n HubConnection.prototype.on = function (methodName, newMethod) {\r\n if (!methodName || !newMethod) {\r\n return;\r\n }\r\n methodName = methodName.toLowerCase();\r\n if (!this.methods[methodName]) {\r\n this.methods[methodName] = [];\r\n }\r\n // Preventing adding the same handler multiple times.\r\n if (this.methods[methodName].indexOf(newMethod) !== -1) {\r\n return;\r\n }\r\n this.methods[methodName].push(newMethod);\r\n };\r\n HubConnection.prototype.off = function (methodName, method) {\r\n if (!methodName) {\r\n return;\r\n }\r\n methodName = methodName.toLowerCase();\r\n var handlers = this.methods[methodName];\r\n if (!handlers) {\r\n return;\r\n }\r\n if (method) {\r\n var removeIdx = handlers.indexOf(method);\r\n if (removeIdx !== -1) {\r\n handlers.splice(removeIdx, 1);\r\n if (handlers.length === 0) {\r\n delete this.methods[methodName];\r\n }\r\n }\r\n }\r\n else {\r\n delete this.methods[methodName];\r\n }\r\n };\r\n /** Registers a handler that will be invoked when the connection is closed.\r\n *\r\n * @param {Function} callback The handler that will be invoked when the connection is closed. Optionally receives a single argument containing the error that caused the connection to close (if any).\r\n */\r\n HubConnection.prototype.onclose = function (callback) {\r\n if (callback) {\r\n this.closedCallbacks.push(callback);\r\n }\r\n };\r\n HubConnection.prototype.processIncomingData = function (data) {\r\n this.cleanupTimeout();\r\n if (!this.receivedHandshakeResponse) {\r\n data = this.processHandshakeResponse(data);\r\n this.receivedHandshakeResponse = true;\r\n }\r\n // Data may have all been read when processing handshake response\r\n if (data) {\r\n // Parse the messages\r\n var messages = this.protocol.parseMessages(data, this.logger);\r\n for (var _i = 0, messages_1 = messages; _i < messages_1.length; _i++) {\r\n var message = messages_1[_i];\r\n switch (message.type) {\r\n case MessageType.Invocation:\r\n this.invokeClientMethod(message);\r\n break;\r\n case MessageType.StreamItem:\r\n case MessageType.Completion:\r\n var callback = this.callbacks[message.invocationId];\r\n if (callback != null) {\r\n if (message.type === MessageType.Completion) {\r\n delete this.callbacks[message.invocationId];\r\n }\r\n callback(message);\r\n }\r\n break;\r\n case MessageType.Ping:\r\n // Don't care about pings\r\n break;\r\n case MessageType.Close:\r\n this.logger.log(LogLevel.Information, \"Close message received from server.\");\r\n // We don't want to wait on the stop itself.\r\n // tslint:disable-next-line:no-floating-promises\r\n this.connection.stop(message.error ? new Error(\"Server returned an error on close: \" + message.error) : undefined);\r\n break;\r\n default:\r\n this.logger.log(LogLevel.Warning, \"Invalid message type: \" + message.type + \".\");\r\n break;\r\n }\r\n }\r\n }\r\n this.resetTimeoutPeriod();\r\n };\r\n HubConnection.prototype.processHandshakeResponse = function (data) {\r\n var _a;\r\n var responseMessage;\r\n var remainingData;\r\n try {\r\n _a = this.handshakeProtocol.parseHandshakeResponse(data), remainingData = _a[0], responseMessage = _a[1];\r\n }\r\n catch (e) {\r\n var message = \"Error parsing handshake response: \" + e;\r\n this.logger.log(LogLevel.Error, message);\r\n var error = new Error(message);\r\n // We don't want to wait on the stop itself.\r\n // tslint:disable-next-line:no-floating-promises\r\n this.connection.stop(error);\r\n this.handshakeRejecter(error);\r\n throw error;\r\n }\r\n if (responseMessage.error) {\r\n var message = \"Server returned handshake error: \" + responseMessage.error;\r\n this.logger.log(LogLevel.Error, message);\r\n this.handshakeRejecter(message);\r\n // We don't want to wait on the stop itself.\r\n // tslint:disable-next-line:no-floating-promises\r\n this.connection.stop(new Error(message));\r\n throw new Error(message);\r\n }\r\n else {\r\n this.logger.log(LogLevel.Debug, \"Server handshake complete.\");\r\n }\r\n this.handshakeResolver();\r\n return remainingData;\r\n };\r\n HubConnection.prototype.resetKeepAliveInterval = function () {\r\n var _this = this;\r\n this.cleanupPingTimer();\r\n this.pingServerHandle = setTimeout(function () { return __awaiter(_this, void 0, void 0, function () {\r\n var _a;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n if (!(this.connectionState === HubConnectionState.Connected)) return [3 /*break*/, 4];\r\n _b.label = 1;\r\n case 1:\r\n _b.trys.push([1, 3, , 4]);\r\n return [4 /*yield*/, this.sendMessage(this.cachedPingMessage)];\r\n case 2:\r\n _b.sent();\r\n return [3 /*break*/, 4];\r\n case 3:\r\n _a = _b.sent();\r\n // We don't care about the error. It should be seen elsewhere in the client.\r\n // The connection is probably in a bad or closed state now, cleanup the timer so it stops triggering\r\n this.cleanupPingTimer();\r\n return [3 /*break*/, 4];\r\n case 4: return [2 /*return*/];\r\n }\r\n });\r\n }); }, this.keepAliveIntervalInMilliseconds);\r\n };\r\n HubConnection.prototype.resetTimeoutPeriod = function () {\r\n var _this = this;\r\n if (!this.connection.features || !this.connection.features.inherentKeepAlive) {\r\n // Set the timeout timer\r\n this.timeoutHandle = setTimeout(function () { return _this.serverTimeout(); }, this.serverTimeoutInMilliseconds);\r\n }\r\n };\r\n HubConnection.prototype.serverTimeout = function () {\r\n // The server hasn't talked to us in a while. It doesn't like us anymore ... :(\r\n // Terminate the connection, but we don't need to wait on the promise.\r\n // tslint:disable-next-line:no-floating-promises\r\n this.connection.stop(new Error(\"Server timeout elapsed without receiving a message from the server.\"));\r\n };\r\n HubConnection.prototype.invokeClientMethod = function (invocationMessage) {\r\n var _this = this;\r\n var methods = this.methods[invocationMessage.target.toLowerCase()];\r\n if (methods) {\r\n methods.forEach(function (m) { return m.apply(_this, invocationMessage.arguments); });\r\n if (invocationMessage.invocationId) {\r\n // This is not supported in v1. So we return an error to avoid blocking the server waiting for the response.\r\n var message = \"Server requested a response, which is not supported in this version of the client.\";\r\n this.logger.log(LogLevel.Error, message);\r\n // We don't need to wait on this Promise.\r\n // tslint:disable-next-line:no-floating-promises\r\n this.connection.stop(new Error(message));\r\n }\r\n }\r\n else {\r\n this.logger.log(LogLevel.Warning, \"No client method with the name '\" + invocationMessage.target + \"' found.\");\r\n }\r\n };\r\n HubConnection.prototype.connectionClosed = function (error) {\r\n var _this = this;\r\n var callbacks = this.callbacks;\r\n this.callbacks = {};\r\n this.connectionState = HubConnectionState.Disconnected;\r\n // if handshake is in progress start will be waiting for the handshake promise, so we complete it\r\n // if it has already completed this should just noop\r\n if (this.handshakeRejecter) {\r\n this.handshakeRejecter(error);\r\n }\r\n Object.keys(callbacks)\r\n .forEach(function (key) {\r\n var callback = callbacks[key];\r\n callback(null, error ? error : new Error(\"Invocation canceled due to connection being closed.\"));\r\n });\r\n this.cleanupTimeout();\r\n this.cleanupPingTimer();\r\n this.closedCallbacks.forEach(function (c) { return c.apply(_this, [error]); });\r\n };\r\n HubConnection.prototype.cleanupPingTimer = function () {\r\n if (this.pingServerHandle) {\r\n clearTimeout(this.pingServerHandle);\r\n }\r\n };\r\n HubConnection.prototype.cleanupTimeout = function () {\r\n if (this.timeoutHandle) {\r\n clearTimeout(this.timeoutHandle);\r\n }\r\n };\r\n HubConnection.prototype.createInvocation = function (methodName, args, nonblocking) {\r\n if (nonblocking) {\r\n return {\r\n arguments: args,\r\n target: methodName,\r\n type: MessageType.Invocation,\r\n };\r\n }\r\n else {\r\n var id = this.id;\r\n this.id++;\r\n return {\r\n arguments: args,\r\n invocationId: id.toString(),\r\n target: methodName,\r\n type: MessageType.Invocation,\r\n };\r\n }\r\n };\r\n HubConnection.prototype.createStreamInvocation = function (methodName, args) {\r\n var id = this.id;\r\n this.id++;\r\n return {\r\n arguments: args,\r\n invocationId: id.toString(),\r\n target: methodName,\r\n type: MessageType.StreamInvocation,\r\n };\r\n };\r\n HubConnection.prototype.createCancelInvocation = function (id) {\r\n return {\r\n invocationId: id,\r\n type: MessageType.CancelInvocation,\r\n };\r\n };\r\n return HubConnection;\r\n}());\r\nexport { HubConnection };\r\n//# sourceMappingURL=HubConnection.js.map","// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\n// This will be treated as a bit flag in the future, so we keep it using power-of-two values.\r\n/** Specifies a specific HTTP transport type. */\r\nexport var HttpTransportType;\r\n(function (HttpTransportType) {\r\n /** Specifies no transport preference. */\r\n HttpTransportType[HttpTransportType[\"None\"] = 0] = \"None\";\r\n /** Specifies the WebSockets transport. */\r\n HttpTransportType[HttpTransportType[\"WebSockets\"] = 1] = \"WebSockets\";\r\n /** Specifies the Server-Sent Events transport. */\r\n HttpTransportType[HttpTransportType[\"ServerSentEvents\"] = 2] = \"ServerSentEvents\";\r\n /** Specifies the Long Polling transport. */\r\n HttpTransportType[HttpTransportType[\"LongPolling\"] = 4] = \"LongPolling\";\r\n})(HttpTransportType || (HttpTransportType = {}));\r\n/** Specifies the transfer format for a connection. */\r\nexport var TransferFormat;\r\n(function (TransferFormat) {\r\n /** Specifies that only text data will be transmitted over the connection. */\r\n TransferFormat[TransferFormat[\"Text\"] = 1] = \"Text\";\r\n /** Specifies that binary data will be transmitted over the connection. */\r\n TransferFormat[TransferFormat[\"Binary\"] = 2] = \"Binary\";\r\n})(TransferFormat || (TransferFormat = {}));\r\n//# sourceMappingURL=ITransport.js.map","// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\n// Rough polyfill of https://developer.mozilla.org/en-US/docs/Web/API/AbortController\r\n// We don't actually ever use the API being polyfilled, we always use the polyfill because\r\n// it's a very new API right now.\r\n// Not exported from index.\r\n/** @private */\r\nvar AbortController = /** @class */ (function () {\r\n function AbortController() {\r\n this.isAborted = false;\r\n this.onabort = null;\r\n }\r\n AbortController.prototype.abort = function () {\r\n if (!this.isAborted) {\r\n this.isAborted = true;\r\n if (this.onabort) {\r\n this.onabort();\r\n }\r\n }\r\n };\r\n Object.defineProperty(AbortController.prototype, \"signal\", {\r\n get: function () {\r\n return this;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(AbortController.prototype, \"aborted\", {\r\n get: function () {\r\n return this.isAborted;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return AbortController;\r\n}());\r\nexport { AbortController };\r\n//# sourceMappingURL=AbortController.js.map","// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nvar __generator = (this && this.__generator) || function (thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n};\r\nimport { AbortController } from \"./AbortController\";\r\nimport { HttpError, TimeoutError } from \"./Errors\";\r\nimport { LogLevel } from \"./ILogger\";\r\nimport { TransferFormat } from \"./ITransport\";\r\nimport { Arg, getDataDetail, sendMessage } from \"./Utils\";\r\n// Not exported from 'index', this type is internal.\r\n/** @private */\r\nvar LongPollingTransport = /** @class */ (function () {\r\n function LongPollingTransport(httpClient, accessTokenFactory, logger, logMessageContent) {\r\n this.httpClient = httpClient;\r\n this.accessTokenFactory = accessTokenFactory;\r\n this.logger = logger;\r\n this.pollAbort = new AbortController();\r\n this.logMessageContent = logMessageContent;\r\n this.running = false;\r\n this.onreceive = null;\r\n this.onclose = null;\r\n }\r\n Object.defineProperty(LongPollingTransport.prototype, \"pollAborted\", {\r\n // This is an internal type, not exported from 'index' so this is really just internal.\r\n get: function () {\r\n return this.pollAbort.aborted;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n LongPollingTransport.prototype.connect = function (url, transferFormat) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var pollOptions, token, pollUrl, response;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n Arg.isRequired(url, \"url\");\r\n Arg.isRequired(transferFormat, \"transferFormat\");\r\n Arg.isIn(transferFormat, TransferFormat, \"transferFormat\");\r\n this.url = url;\r\n this.logger.log(LogLevel.Trace, \"(LongPolling transport) Connecting.\");\r\n // Allow binary format on Node and Browsers that support binary content (indicated by the presence of responseType property)\r\n if (transferFormat === TransferFormat.Binary &&\r\n (typeof XMLHttpRequest !== \"undefined\" && typeof new XMLHttpRequest().responseType !== \"string\")) {\r\n throw new Error(\"Binary protocols over XmlHttpRequest not implementing advanced features are not supported.\");\r\n }\r\n pollOptions = {\r\n abortSignal: this.pollAbort.signal,\r\n headers: {},\r\n timeout: 100000,\r\n };\r\n if (transferFormat === TransferFormat.Binary) {\r\n pollOptions.responseType = \"arraybuffer\";\r\n }\r\n return [4 /*yield*/, this.getAccessToken()];\r\n case 1:\r\n token = _a.sent();\r\n this.updateHeaderToken(pollOptions, token);\r\n pollUrl = url + \"&_=\" + Date.now();\r\n this.logger.log(LogLevel.Trace, \"(LongPolling transport) polling: \" + pollUrl + \".\");\r\n return [4 /*yield*/, this.httpClient.get(pollUrl, pollOptions)];\r\n case 2:\r\n response = _a.sent();\r\n if (response.statusCode !== 200) {\r\n this.logger.log(LogLevel.Error, \"(LongPolling transport) Unexpected response code: \" + response.statusCode + \".\");\r\n // Mark running as false so that the poll immediately ends and runs the close logic\r\n this.closeError = new HttpError(response.statusText || \"\", response.statusCode);\r\n this.running = false;\r\n }\r\n else {\r\n this.running = true;\r\n }\r\n this.receiving = this.poll(this.url, pollOptions);\r\n return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n LongPollingTransport.prototype.getAccessToken = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (!this.accessTokenFactory) return [3 /*break*/, 2];\r\n return [4 /*yield*/, this.accessTokenFactory()];\r\n case 1: return [2 /*return*/, _a.sent()];\r\n case 2: return [2 /*return*/, null];\r\n }\r\n });\r\n });\r\n };\r\n LongPollingTransport.prototype.updateHeaderToken = function (request, token) {\r\n if (!request.headers) {\r\n request.headers = {};\r\n }\r\n if (token) {\r\n // tslint:disable-next-line:no-string-literal\r\n request.headers[\"Authorization\"] = \"Bearer \" + token;\r\n return;\r\n }\r\n // tslint:disable-next-line:no-string-literal\r\n if (request.headers[\"Authorization\"]) {\r\n // tslint:disable-next-line:no-string-literal\r\n delete request.headers[\"Authorization\"];\r\n }\r\n };\r\n LongPollingTransport.prototype.poll = function (url, pollOptions) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var token, pollUrl, response, e_1;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n _a.trys.push([0, , 8, 9]);\r\n _a.label = 1;\r\n case 1:\r\n if (!this.running) return [3 /*break*/, 7];\r\n return [4 /*yield*/, this.getAccessToken()];\r\n case 2:\r\n token = _a.sent();\r\n this.updateHeaderToken(pollOptions, token);\r\n _a.label = 3;\r\n case 3:\r\n _a.trys.push([3, 5, , 6]);\r\n pollUrl = url + \"&_=\" + Date.now();\r\n this.logger.log(LogLevel.Trace, \"(LongPolling transport) polling: \" + pollUrl + \".\");\r\n return [4 /*yield*/, this.httpClient.get(pollUrl, pollOptions)];\r\n case 4:\r\n response = _a.sent();\r\n if (response.statusCode === 204) {\r\n this.logger.log(LogLevel.Information, \"(LongPolling transport) Poll terminated by server.\");\r\n this.running = false;\r\n }\r\n else if (response.statusCode !== 200) {\r\n this.logger.log(LogLevel.Error, \"(LongPolling transport) Unexpected response code: \" + response.statusCode + \".\");\r\n // Unexpected status code\r\n this.closeError = new HttpError(response.statusText || \"\", response.statusCode);\r\n this.running = false;\r\n }\r\n else {\r\n // Process the response\r\n if (response.content) {\r\n this.logger.log(LogLevel.Trace, \"(LongPolling transport) data received. \" + getDataDetail(response.content, this.logMessageContent) + \".\");\r\n if (this.onreceive) {\r\n this.onreceive(response.content);\r\n }\r\n }\r\n else {\r\n // This is another way timeout manifest.\r\n this.logger.log(LogLevel.Trace, \"(LongPolling transport) Poll timed out, reissuing.\");\r\n }\r\n }\r\n return [3 /*break*/, 6];\r\n case 5:\r\n e_1 = _a.sent();\r\n if (!this.running) {\r\n // Log but disregard errors that occur after stopping\r\n this.logger.log(LogLevel.Trace, \"(LongPolling transport) Poll errored after shutdown: \" + e_1.message);\r\n }\r\n else {\r\n if (e_1 instanceof TimeoutError) {\r\n // Ignore timeouts and reissue the poll.\r\n this.logger.log(LogLevel.Trace, \"(LongPolling transport) Poll timed out, reissuing.\");\r\n }\r\n else {\r\n // Close the connection with the error as the result.\r\n this.closeError = e_1;\r\n this.running = false;\r\n }\r\n }\r\n return [3 /*break*/, 6];\r\n case 6: return [3 /*break*/, 1];\r\n case 7: return [3 /*break*/, 9];\r\n case 8:\r\n this.logger.log(LogLevel.Trace, \"(LongPolling transport) Polling complete.\");\r\n // We will reach here with pollAborted==false when the server returned a response causing the transport to stop.\r\n // If pollAborted==true then client initiated the stop and the stop method will raise the close event after DELETE is sent.\r\n if (!this.pollAborted) {\r\n this.raiseOnClose();\r\n }\r\n return [7 /*endfinally*/];\r\n case 9: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n LongPollingTransport.prototype.send = function (data) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n if (!this.running) {\r\n return [2 /*return*/, Promise.reject(new Error(\"Cannot send until the transport is connected\"))];\r\n }\r\n return [2 /*return*/, sendMessage(this.logger, \"LongPolling\", this.httpClient, this.url, this.accessTokenFactory, data, this.logMessageContent)];\r\n });\r\n });\r\n };\r\n LongPollingTransport.prototype.stop = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var deleteOptions, token;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n this.logger.log(LogLevel.Trace, \"(LongPolling transport) Stopping polling.\");\r\n // Tell receiving loop to stop, abort any current request, and then wait for it to finish\r\n this.running = false;\r\n this.pollAbort.abort();\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, , 5, 6]);\r\n return [4 /*yield*/, this.receiving];\r\n case 2:\r\n _a.sent();\r\n // Send DELETE to clean up long polling on the server\r\n this.logger.log(LogLevel.Trace, \"(LongPolling transport) sending DELETE request to \" + this.url + \".\");\r\n deleteOptions = {\r\n headers: {},\r\n };\r\n return [4 /*yield*/, this.getAccessToken()];\r\n case 3:\r\n token = _a.sent();\r\n this.updateHeaderToken(deleteOptions, token);\r\n return [4 /*yield*/, this.httpClient.delete(this.url, deleteOptions)];\r\n case 4:\r\n _a.sent();\r\n this.logger.log(LogLevel.Trace, \"(LongPolling transport) DELETE request sent.\");\r\n return [3 /*break*/, 6];\r\n case 5:\r\n this.logger.log(LogLevel.Trace, \"(LongPolling transport) Stop finished.\");\r\n // Raise close event here instead of in polling\r\n // It needs to happen after the DELETE request is sent\r\n this.raiseOnClose();\r\n return [7 /*endfinally*/];\r\n case 6: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n LongPollingTransport.prototype.raiseOnClose = function () {\r\n if (this.onclose) {\r\n var logMessage = \"(LongPolling transport) Firing onclose event.\";\r\n if (this.closeError) {\r\n logMessage += \" Error: \" + this.closeError;\r\n }\r\n this.logger.log(LogLevel.Trace, logMessage);\r\n this.onclose(this.closeError);\r\n }\r\n };\r\n return LongPollingTransport;\r\n}());\r\nexport { LongPollingTransport };\r\n//# sourceMappingURL=LongPollingTransport.js.map","// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nvar __generator = (this && this.__generator) || function (thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n};\r\nimport { LogLevel } from \"./ILogger\";\r\nimport { TransferFormat } from \"./ITransport\";\r\nimport { Arg, getDataDetail, sendMessage } from \"./Utils\";\r\n/** @private */\r\nvar ServerSentEventsTransport = /** @class */ (function () {\r\n function ServerSentEventsTransport(httpClient, accessTokenFactory, logger, logMessageContent, eventSourceConstructor) {\r\n this.httpClient = httpClient;\r\n this.accessTokenFactory = accessTokenFactory;\r\n this.logger = logger;\r\n this.logMessageContent = logMessageContent;\r\n this.eventSourceConstructor = eventSourceConstructor;\r\n this.onreceive = null;\r\n this.onclose = null;\r\n }\r\n ServerSentEventsTransport.prototype.connect = function (url, transferFormat) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var token;\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n Arg.isRequired(url, \"url\");\r\n Arg.isRequired(transferFormat, \"transferFormat\");\r\n Arg.isIn(transferFormat, TransferFormat, \"transferFormat\");\r\n this.logger.log(LogLevel.Trace, \"(SSE transport) Connecting.\");\r\n // set url before accessTokenFactory because this.url is only for send and we set the auth header instead of the query string for send\r\n this.url = url;\r\n if (!this.accessTokenFactory) return [3 /*break*/, 2];\r\n return [4 /*yield*/, this.accessTokenFactory()];\r\n case 1:\r\n token = _a.sent();\r\n if (token) {\r\n url += (url.indexOf(\"?\") < 0 ? \"?\" : \"&\") + (\"access_token=\" + encodeURIComponent(token));\r\n }\r\n _a.label = 2;\r\n case 2: return [2 /*return*/, new Promise(function (resolve, reject) {\r\n var opened = false;\r\n if (transferFormat !== TransferFormat.Text) {\r\n reject(new Error(\"The Server-Sent Events transport only supports the 'Text' transfer format\"));\r\n return;\r\n }\r\n var eventSource;\r\n if (typeof window !== \"undefined\") {\r\n eventSource = new _this.eventSourceConstructor(url, { withCredentials: true });\r\n }\r\n else {\r\n // Non-browser passes cookies via the dictionary\r\n var cookies = _this.httpClient.getCookieString(url);\r\n eventSource = new _this.eventSourceConstructor(url, { withCredentials: true, headers: { Cookie: cookies } });\r\n }\r\n try {\r\n eventSource.onmessage = function (e) {\r\n if (_this.onreceive) {\r\n try {\r\n _this.logger.log(LogLevel.Trace, \"(SSE transport) data received. \" + getDataDetail(e.data, _this.logMessageContent) + \".\");\r\n _this.onreceive(e.data);\r\n }\r\n catch (error) {\r\n _this.close(error);\r\n return;\r\n }\r\n }\r\n };\r\n eventSource.onerror = function (e) {\r\n var error = new Error(e.data || \"Error occurred\");\r\n if (opened) {\r\n _this.close(error);\r\n }\r\n else {\r\n reject(error);\r\n }\r\n };\r\n eventSource.onopen = function () {\r\n _this.logger.log(LogLevel.Information, \"SSE connected to \" + _this.url);\r\n _this.eventSource = eventSource;\r\n opened = true;\r\n resolve();\r\n };\r\n }\r\n catch (e) {\r\n reject(e);\r\n return;\r\n }\r\n })];\r\n }\r\n });\r\n });\r\n };\r\n ServerSentEventsTransport.prototype.send = function (data) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n if (!this.eventSource) {\r\n return [2 /*return*/, Promise.reject(new Error(\"Cannot send until the transport is connected\"))];\r\n }\r\n return [2 /*return*/, sendMessage(this.logger, \"SSE\", this.httpClient, this.url, this.accessTokenFactory, data, this.logMessageContent)];\r\n });\r\n });\r\n };\r\n ServerSentEventsTransport.prototype.stop = function () {\r\n this.close();\r\n return Promise.resolve();\r\n };\r\n ServerSentEventsTransport.prototype.close = function (e) {\r\n if (this.eventSource) {\r\n this.eventSource.close();\r\n this.eventSource = undefined;\r\n if (this.onclose) {\r\n this.onclose(e);\r\n }\r\n }\r\n };\r\n return ServerSentEventsTransport;\r\n}());\r\nexport { ServerSentEventsTransport };\r\n//# sourceMappingURL=ServerSentEventsTransport.js.map","// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nvar __generator = (this && this.__generator) || function (thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n};\r\nimport { LogLevel } from \"./ILogger\";\r\nimport { TransferFormat } from \"./ITransport\";\r\nimport { Arg, getDataDetail } from \"./Utils\";\r\n/** @private */\r\nvar WebSocketTransport = /** @class */ (function () {\r\n function WebSocketTransport(httpClient, accessTokenFactory, logger, logMessageContent, webSocketConstructor) {\r\n this.logger = logger;\r\n this.accessTokenFactory = accessTokenFactory;\r\n this.logMessageContent = logMessageContent;\r\n this.webSocketConstructor = webSocketConstructor;\r\n this.httpClient = httpClient;\r\n this.onreceive = null;\r\n this.onclose = null;\r\n }\r\n WebSocketTransport.prototype.connect = function (url, transferFormat) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var token;\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n Arg.isRequired(url, \"url\");\r\n Arg.isRequired(transferFormat, \"transferFormat\");\r\n Arg.isIn(transferFormat, TransferFormat, \"transferFormat\");\r\n this.logger.log(LogLevel.Trace, \"(WebSockets transport) Connecting.\");\r\n if (!this.accessTokenFactory) return [3 /*break*/, 2];\r\n return [4 /*yield*/, this.accessTokenFactory()];\r\n case 1:\r\n token = _a.sent();\r\n if (token) {\r\n url += (url.indexOf(\"?\") < 0 ? \"?\" : \"&\") + (\"access_token=\" + encodeURIComponent(token));\r\n }\r\n _a.label = 2;\r\n case 2: return [2 /*return*/, new Promise(function (resolve, reject) {\r\n url = url.replace(/^http/, \"ws\");\r\n var webSocket;\r\n var cookies = _this.httpClient.getCookieString(url);\r\n if (typeof window === \"undefined\" && cookies) {\r\n // Only pass cookies when in non-browser environments\r\n webSocket = new _this.webSocketConstructor(url, undefined, {\r\n headers: {\r\n Cookie: \"\" + cookies,\r\n },\r\n });\r\n }\r\n if (!webSocket) {\r\n // Chrome is not happy with passing 'undefined' as protocol\r\n webSocket = new _this.webSocketConstructor(url);\r\n }\r\n if (transferFormat === TransferFormat.Binary) {\r\n webSocket.binaryType = \"arraybuffer\";\r\n }\r\n // tslint:disable-next-line:variable-name\r\n webSocket.onopen = function (_event) {\r\n _this.logger.log(LogLevel.Information, \"WebSocket connected to \" + url + \".\");\r\n _this.webSocket = webSocket;\r\n resolve();\r\n };\r\n webSocket.onerror = function (event) {\r\n var error = null;\r\n // ErrorEvent is a browser only type we need to check if the type exists before using it\r\n if (typeof ErrorEvent !== \"undefined\" && event instanceof ErrorEvent) {\r\n error = event.error;\r\n }\r\n reject(error);\r\n };\r\n webSocket.onmessage = function (message) {\r\n _this.logger.log(LogLevel.Trace, \"(WebSockets transport) data received. \" + getDataDetail(message.data, _this.logMessageContent) + \".\");\r\n if (_this.onreceive) {\r\n _this.onreceive(message.data);\r\n }\r\n };\r\n webSocket.onclose = function (event) { return _this.close(event); };\r\n })];\r\n }\r\n });\r\n });\r\n };\r\n WebSocketTransport.prototype.send = function (data) {\r\n if (this.webSocket && this.webSocket.readyState === this.webSocketConstructor.OPEN) {\r\n this.logger.log(LogLevel.Trace, \"(WebSockets transport) sending data. \" + getDataDetail(data, this.logMessageContent) + \".\");\r\n this.webSocket.send(data);\r\n return Promise.resolve();\r\n }\r\n return Promise.reject(\"WebSocket is not in the OPEN state\");\r\n };\r\n WebSocketTransport.prototype.stop = function () {\r\n if (this.webSocket) {\r\n // Clear websocket handlers because we are considering the socket closed now\r\n this.webSocket.onclose = function () { };\r\n this.webSocket.onmessage = function () { };\r\n this.webSocket.onerror = function () { };\r\n this.webSocket.close();\r\n this.webSocket = undefined;\r\n // Manually invoke onclose callback inline so we know the HttpConnection was closed properly before returning\r\n // This also solves an issue where websocket.onclose could take 18+ seconds to trigger during network disconnects\r\n this.close(undefined);\r\n }\r\n return Promise.resolve();\r\n };\r\n WebSocketTransport.prototype.close = function (event) {\r\n // webSocket will be null if the transport did not start successfully\r\n this.logger.log(LogLevel.Trace, \"(WebSockets transport) socket closed.\");\r\n if (this.onclose) {\r\n if (event && (event.wasClean === false || event.code !== 1000)) {\r\n this.onclose(new Error(\"WebSocket closed with status code: \" + event.code + \" (\" + event.reason + \").\"));\r\n }\r\n else {\r\n this.onclose();\r\n }\r\n }\r\n };\r\n return WebSocketTransport;\r\n}());\r\nexport { WebSocketTransport };\r\n//# sourceMappingURL=WebSocketTransport.js.map","// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n};\r\nvar __generator = (this && this.__generator) || function (thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n};\r\nimport { DefaultHttpClient } from \"./DefaultHttpClient\";\r\nimport { LogLevel } from \"./ILogger\";\r\nimport { HttpTransportType, TransferFormat } from \"./ITransport\";\r\nimport { LongPollingTransport } from \"./LongPollingTransport\";\r\nimport { ServerSentEventsTransport } from \"./ServerSentEventsTransport\";\r\nimport { Arg, createLogger } from \"./Utils\";\r\nimport { WebSocketTransport } from \"./WebSocketTransport\";\r\nvar MAX_REDIRECTS = 100;\r\nvar WebSocketModule = null;\r\nvar EventSourceModule = null;\r\nif (typeof window === \"undefined\" && typeof require !== \"undefined\") {\r\n // In order to ignore the dynamic require in webpack builds we need to do this magic\r\n // @ts-ignore: TS doesn't know about these names\r\n var requireFunc = typeof __webpack_require__ === \"function\" ? __non_webpack_require__ : require;\r\n WebSocketModule = requireFunc(\"ws\");\r\n EventSourceModule = requireFunc(\"eventsource\");\r\n}\r\n/** @private */\r\nvar HttpConnection = /** @class */ (function () {\r\n function HttpConnection(url, options) {\r\n if (options === void 0) { options = {}; }\r\n this.features = {};\r\n Arg.isRequired(url, \"url\");\r\n this.logger = createLogger(options.logger);\r\n this.baseUrl = this.resolveUrl(url);\r\n options = options || {};\r\n options.logMessageContent = options.logMessageContent || false;\r\n var isNode = typeof window === \"undefined\";\r\n if (!isNode && typeof WebSocket !== \"undefined\" && !options.WebSocket) {\r\n options.WebSocket = WebSocket;\r\n }\r\n else if (isNode && !options.WebSocket) {\r\n if (WebSocketModule) {\r\n options.WebSocket = WebSocketModule;\r\n }\r\n }\r\n if (!isNode && typeof EventSource !== \"undefined\" && !options.EventSource) {\r\n options.EventSource = EventSource;\r\n }\r\n else if (isNode && !options.EventSource) {\r\n if (typeof EventSourceModule !== \"undefined\") {\r\n options.EventSource = EventSourceModule;\r\n }\r\n }\r\n this.httpClient = options.httpClient || new DefaultHttpClient(this.logger);\r\n this.connectionState = 2 /* Disconnected */;\r\n this.options = options;\r\n this.onreceive = null;\r\n this.onclose = null;\r\n }\r\n HttpConnection.prototype.start = function (transferFormat) {\r\n transferFormat = transferFormat || TransferFormat.Binary;\r\n Arg.isIn(transferFormat, TransferFormat, \"transferFormat\");\r\n this.logger.log(LogLevel.Debug, \"Starting connection with transfer format '\" + TransferFormat[transferFormat] + \"'.\");\r\n if (this.connectionState !== 2 /* Disconnected */) {\r\n return Promise.reject(new Error(\"Cannot start a connection that is not in the 'Disconnected' state.\"));\r\n }\r\n this.connectionState = 0 /* Connecting */;\r\n this.startPromise = this.startInternal(transferFormat);\r\n return this.startPromise;\r\n };\r\n HttpConnection.prototype.send = function (data) {\r\n if (this.connectionState !== 1 /* Connected */) {\r\n throw new Error(\"Cannot send data if the connection is not in the 'Connected' State.\");\r\n }\r\n // Transport will not be null if state is connected\r\n return this.transport.send(data);\r\n };\r\n HttpConnection.prototype.stop = function (error) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var e_1;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n this.connectionState = 2 /* Disconnected */;\r\n // Set error as soon as possible otherwise there is a race between\r\n // the transport closing and providing an error and the error from a close message\r\n // We would prefer the close message error.\r\n this.stopError = error;\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 3, , 4]);\r\n return [4 /*yield*/, this.startPromise];\r\n case 2:\r\n _a.sent();\r\n return [3 /*break*/, 4];\r\n case 3:\r\n e_1 = _a.sent();\r\n return [3 /*break*/, 4];\r\n case 4:\r\n if (!this.transport) return [3 /*break*/, 6];\r\n return [4 /*yield*/, this.transport.stop()];\r\n case 5:\r\n _a.sent();\r\n this.transport = undefined;\r\n _a.label = 6;\r\n case 6: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n HttpConnection.prototype.startInternal = function (transferFormat) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var url, negotiateResponse, redirects, _loop_1, this_1, state_1, e_2;\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n url = this.baseUrl;\r\n this.accessTokenFactory = this.options.accessTokenFactory;\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 12, , 13]);\r\n if (!this.options.skipNegotiation) return [3 /*break*/, 5];\r\n if (!(this.options.transport === HttpTransportType.WebSockets)) return [3 /*break*/, 3];\r\n // No need to add a connection ID in this case\r\n this.transport = this.constructTransport(HttpTransportType.WebSockets);\r\n // We should just call connect directly in this case.\r\n // No fallback or negotiate in this case.\r\n return [4 /*yield*/, this.transport.connect(url, transferFormat)];\r\n case 2:\r\n // We should just call connect directly in this case.\r\n // No fallback or negotiate in this case.\r\n _a.sent();\r\n return [3 /*break*/, 4];\r\n case 3: throw Error(\"Negotiation can only be skipped when using the WebSocket transport directly.\");\r\n case 4: return [3 /*break*/, 11];\r\n case 5:\r\n negotiateResponse = null;\r\n redirects = 0;\r\n _loop_1 = function () {\r\n var accessToken_1;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, this_1.getNegotiationResponse(url)];\r\n case 1:\r\n negotiateResponse = _a.sent();\r\n // the user tries to stop the connection when it is being started\r\n if (this_1.connectionState === 2 /* Disconnected */) {\r\n return [2 /*return*/, { value: void 0 }];\r\n }\r\n if (negotiateResponse.error) {\r\n throw Error(negotiateResponse.error);\r\n }\r\n if (negotiateResponse.ProtocolVersion) {\r\n throw Error(\"Detected a connection attempt to an ASP.NET SignalR Server. This client only supports connecting to an ASP.NET Core SignalR Server. See https://aka.ms/signalr-core-differences for details.\");\r\n }\r\n if (negotiateResponse.url) {\r\n url = negotiateResponse.url;\r\n }\r\n if (negotiateResponse.accessToken) {\r\n accessToken_1 = negotiateResponse.accessToken;\r\n this_1.accessTokenFactory = function () { return accessToken_1; };\r\n }\r\n redirects++;\r\n return [2 /*return*/];\r\n }\r\n });\r\n };\r\n this_1 = this;\r\n _a.label = 6;\r\n case 6: return [5 /*yield**/, _loop_1()];\r\n case 7:\r\n state_1 = _a.sent();\r\n if (typeof state_1 === \"object\")\r\n return [2 /*return*/, state_1.value];\r\n _a.label = 8;\r\n case 8:\r\n if (negotiateResponse.url && redirects < MAX_REDIRECTS) return [3 /*break*/, 6];\r\n _a.label = 9;\r\n case 9:\r\n if (redirects === MAX_REDIRECTS && negotiateResponse.url) {\r\n throw Error(\"Negotiate redirection limit exceeded.\");\r\n }\r\n return [4 /*yield*/, this.createTransport(url, this.options.transport, negotiateResponse, transferFormat)];\r\n case 10:\r\n _a.sent();\r\n _a.label = 11;\r\n case 11:\r\n if (this.transport instanceof LongPollingTransport) {\r\n this.features.inherentKeepAlive = true;\r\n }\r\n this.transport.onreceive = this.onreceive;\r\n this.transport.onclose = function (e) { return _this.stopConnection(e); };\r\n // only change the state if we were connecting to not overwrite\r\n // the state if the connection is already marked as Disconnected\r\n this.changeState(0 /* Connecting */, 1 /* Connected */);\r\n return [3 /*break*/, 13];\r\n case 12:\r\n e_2 = _a.sent();\r\n this.logger.log(LogLevel.Error, \"Failed to start the connection: \" + e_2);\r\n this.connectionState = 2 /* Disconnected */;\r\n this.transport = undefined;\r\n throw e_2;\r\n case 13: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n HttpConnection.prototype.getNegotiationResponse = function (url) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var _a, headers, token, negotiateUrl, response, e_3;\r\n return __generator(this, function (_b) {\r\n switch (_b.label) {\r\n case 0:\r\n if (!this.accessTokenFactory) return [3 /*break*/, 2];\r\n return [4 /*yield*/, this.accessTokenFactory()];\r\n case 1:\r\n token = _b.sent();\r\n if (token) {\r\n headers = (_a = {},\r\n _a[\"Authorization\"] = \"Bearer \" + token,\r\n _a);\r\n }\r\n _b.label = 2;\r\n case 2:\r\n negotiateUrl = this.resolveNegotiateUrl(url);\r\n this.logger.log(LogLevel.Debug, \"Sending negotiation request: \" + negotiateUrl + \".\");\r\n _b.label = 3;\r\n case 3:\r\n _b.trys.push([3, 5, , 6]);\r\n return [4 /*yield*/, this.httpClient.post(negotiateUrl, {\r\n content: \"\",\r\n headers: headers,\r\n })];\r\n case 4:\r\n response = _b.sent();\r\n if (response.statusCode !== 200) {\r\n throw Error(\"Unexpected status code returned from negotiate \" + response.statusCode);\r\n }\r\n return [2 /*return*/, JSON.parse(response.content)];\r\n case 5:\r\n e_3 = _b.sent();\r\n this.logger.log(LogLevel.Error, \"Failed to complete negotiation with the server: \" + e_3);\r\n throw e_3;\r\n case 6: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n HttpConnection.prototype.createConnectUrl = function (url, connectionId) {\r\n if (!connectionId) {\r\n return url;\r\n }\r\n return url + (url.indexOf(\"?\") === -1 ? \"?\" : \"&\") + (\"id=\" + connectionId);\r\n };\r\n HttpConnection.prototype.createTransport = function (url, requestedTransport, negotiateResponse, requestedTransferFormat) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var connectUrl, transports, _i, transports_1, endpoint, transport, ex_1;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n connectUrl = this.createConnectUrl(url, negotiateResponse.connectionId);\r\n if (!this.isITransport(requestedTransport)) return [3 /*break*/, 2];\r\n this.logger.log(LogLevel.Debug, \"Connection was provided an instance of ITransport, using that directly.\");\r\n this.transport = requestedTransport;\r\n return [4 /*yield*/, this.transport.connect(connectUrl, requestedTransferFormat)];\r\n case 1:\r\n _a.sent();\r\n // only change the state if we were connecting to not overwrite\r\n // the state if the connection is already marked as Disconnected\r\n this.changeState(0 /* Connecting */, 1 /* Connected */);\r\n return [2 /*return*/];\r\n case 2:\r\n transports = negotiateResponse.availableTransports || [];\r\n _i = 0, transports_1 = transports;\r\n _a.label = 3;\r\n case 3:\r\n if (!(_i < transports_1.length)) return [3 /*break*/, 9];\r\n endpoint = transports_1[_i];\r\n this.connectionState = 0 /* Connecting */;\r\n transport = this.resolveTransport(endpoint, requestedTransport, requestedTransferFormat);\r\n if (!(typeof transport === \"number\")) return [3 /*break*/, 8];\r\n this.transport = this.constructTransport(transport);\r\n if (!!negotiateResponse.connectionId) return [3 /*break*/, 5];\r\n return [4 /*yield*/, this.getNegotiationResponse(url)];\r\n case 4:\r\n negotiateResponse = _a.sent();\r\n connectUrl = this.createConnectUrl(url, negotiateResponse.connectionId);\r\n _a.label = 5;\r\n case 5:\r\n _a.trys.push([5, 7, , 8]);\r\n return [4 /*yield*/, this.transport.connect(connectUrl, requestedTransferFormat)];\r\n case 6:\r\n _a.sent();\r\n this.changeState(0 /* Connecting */, 1 /* Connected */);\r\n return [2 /*return*/];\r\n case 7:\r\n ex_1 = _a.sent();\r\n this.logger.log(LogLevel.Error, \"Failed to start the transport '\" + HttpTransportType[transport] + \"': \" + ex_1);\r\n this.connectionState = 2 /* Disconnected */;\r\n negotiateResponse.connectionId = undefined;\r\n return [3 /*break*/, 8];\r\n case 8:\r\n _i++;\r\n return [3 /*break*/, 3];\r\n case 9: throw new Error(\"Unable to initialize any of the available transports.\");\r\n }\r\n });\r\n });\r\n };\r\n HttpConnection.prototype.constructTransport = function (transport) {\r\n switch (transport) {\r\n case HttpTransportType.WebSockets:\r\n if (!this.options.WebSocket) {\r\n throw new Error(\"'WebSocket' is not supported in your environment.\");\r\n }\r\n return new WebSocketTransport(this.httpClient, this.accessTokenFactory, this.logger, this.options.logMessageContent || false, this.options.WebSocket);\r\n case HttpTransportType.ServerSentEvents:\r\n if (!this.options.EventSource) {\r\n throw new Error(\"'EventSource' is not supported in your environment.\");\r\n }\r\n return new ServerSentEventsTransport(this.httpClient, this.accessTokenFactory, this.logger, this.options.logMessageContent || false, this.options.EventSource);\r\n case HttpTransportType.LongPolling:\r\n return new LongPollingTransport(this.httpClient, this.accessTokenFactory, this.logger, this.options.logMessageContent || false);\r\n default:\r\n throw new Error(\"Unknown transport: \" + transport + \".\");\r\n }\r\n };\r\n HttpConnection.prototype.resolveTransport = function (endpoint, requestedTransport, requestedTransferFormat) {\r\n var transport = HttpTransportType[endpoint.transport];\r\n if (transport === null || transport === undefined) {\r\n this.logger.log(LogLevel.Debug, \"Skipping transport '\" + endpoint.transport + \"' because it is not supported by this client.\");\r\n }\r\n else {\r\n var transferFormats = endpoint.transferFormats.map(function (s) { return TransferFormat[s]; });\r\n if (transportMatches(requestedTransport, transport)) {\r\n if (transferFormats.indexOf(requestedTransferFormat) >= 0) {\r\n if ((transport === HttpTransportType.WebSockets && !this.options.WebSocket) ||\r\n (transport === HttpTransportType.ServerSentEvents && !this.options.EventSource)) {\r\n this.logger.log(LogLevel.Debug, \"Skipping transport '\" + HttpTransportType[transport] + \"' because it is not supported in your environment.'\");\r\n }\r\n else {\r\n this.logger.log(LogLevel.Debug, \"Selecting transport '\" + HttpTransportType[transport] + \"'.\");\r\n return transport;\r\n }\r\n }\r\n else {\r\n this.logger.log(LogLevel.Debug, \"Skipping transport '\" + HttpTransportType[transport] + \"' because it does not support the requested transfer format '\" + TransferFormat[requestedTransferFormat] + \"'.\");\r\n }\r\n }\r\n else {\r\n this.logger.log(LogLevel.Debug, \"Skipping transport '\" + HttpTransportType[transport] + \"' because it was disabled by the client.\");\r\n }\r\n }\r\n return null;\r\n };\r\n HttpConnection.prototype.isITransport = function (transport) {\r\n return transport && typeof (transport) === \"object\" && \"connect\" in transport;\r\n };\r\n HttpConnection.prototype.changeState = function (from, to) {\r\n if (this.connectionState === from) {\r\n this.connectionState = to;\r\n return true;\r\n }\r\n return false;\r\n };\r\n HttpConnection.prototype.stopConnection = function (error) {\r\n this.transport = undefined;\r\n // If we have a stopError, it takes precedence over the error from the transport\r\n error = this.stopError || error;\r\n if (error) {\r\n this.logger.log(LogLevel.Error, \"Connection disconnected with error '\" + error + \"'.\");\r\n }\r\n else {\r\n this.logger.log(LogLevel.Information, \"Connection disconnected.\");\r\n }\r\n this.connectionState = 2 /* Disconnected */;\r\n if (this.onclose) {\r\n this.onclose(error);\r\n }\r\n };\r\n HttpConnection.prototype.resolveUrl = function (url) {\r\n // startsWith is not supported in IE\r\n if (url.lastIndexOf(\"https://\", 0) === 0 || url.lastIndexOf(\"http://\", 0) === 0) {\r\n return url;\r\n }\r\n if (typeof window === \"undefined\" || !window || !window.document) {\r\n throw new Error(\"Cannot resolve '\" + url + \"'.\");\r\n }\r\n // Setting the url to the href propery of an anchor tag handles normalization\r\n // for us. There are 3 main cases.\r\n // 1. Relative path normalization e.g \"b\" -> \"http://localhost:5000/a/b\"\r\n // 2. Absolute path normalization e.g \"/a/b\" -> \"http://localhost:5000/a/b\"\r\n // 3. Networkpath reference normalization e.g \"//localhost:5000/a/b\" -> \"http://localhost:5000/a/b\"\r\n var aTag = window.document.createElement(\"a\");\r\n aTag.href = url;\r\n this.logger.log(LogLevel.Information, \"Normalizing '\" + url + \"' to '\" + aTag.href + \"'.\");\r\n return aTag.href;\r\n };\r\n HttpConnection.prototype.resolveNegotiateUrl = function (url) {\r\n var index = url.indexOf(\"?\");\r\n var negotiateUrl = url.substring(0, index === -1 ? url.length : index);\r\n if (negotiateUrl[negotiateUrl.length - 1] !== \"/\") {\r\n negotiateUrl += \"/\";\r\n }\r\n negotiateUrl += \"negotiate\";\r\n negotiateUrl += index === -1 ? \"\" : url.substring(index);\r\n return negotiateUrl;\r\n };\r\n return HttpConnection;\r\n}());\r\nexport { HttpConnection };\r\nfunction transportMatches(requestedTransport, actualTransport) {\r\n return !requestedTransport || ((actualTransport & requestedTransport) !== 0);\r\n}\r\n//# sourceMappingURL=HttpConnection.js.map","// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\nimport { MessageType } from \"./IHubProtocol\";\r\nimport { LogLevel } from \"./ILogger\";\r\nimport { TransferFormat } from \"./ITransport\";\r\nimport { NullLogger } from \"./Loggers\";\r\nimport { TextMessageFormat } from \"./TextMessageFormat\";\r\nvar JSON_HUB_PROTOCOL_NAME = \"json\";\r\n/** Implements the JSON Hub Protocol. */\r\nvar JsonHubProtocol = /** @class */ (function () {\r\n function JsonHubProtocol() {\r\n /** @inheritDoc */\r\n this.name = JSON_HUB_PROTOCOL_NAME;\r\n /** @inheritDoc */\r\n this.version = 1;\r\n /** @inheritDoc */\r\n this.transferFormat = TransferFormat.Text;\r\n }\r\n /** Creates an array of {@link @aspnet/signalr.HubMessage} objects from the specified serialized representation.\r\n *\r\n * @param {string} input A string containing the serialized representation.\r\n * @param {ILogger} logger A logger that will be used to log messages that occur during parsing.\r\n */\r\n JsonHubProtocol.prototype.parseMessages = function (input, logger) {\r\n // The interface does allow \"ArrayBuffer\" to be passed in, but this implementation does not. So let's throw a useful error.\r\n if (typeof input !== \"string\") {\r\n throw new Error(\"Invalid input for JSON hub protocol. Expected a string.\");\r\n }\r\n if (!input) {\r\n return [];\r\n }\r\n if (logger === null) {\r\n logger = NullLogger.instance;\r\n }\r\n // Parse the messages\r\n var messages = TextMessageFormat.parse(input);\r\n var hubMessages = [];\r\n for (var _i = 0, messages_1 = messages; _i < messages_1.length; _i++) {\r\n var message = messages_1[_i];\r\n var parsedMessage = JSON.parse(message);\r\n if (typeof parsedMessage.type !== \"number\") {\r\n throw new Error(\"Invalid payload.\");\r\n }\r\n switch (parsedMessage.type) {\r\n case MessageType.Invocation:\r\n this.isInvocationMessage(parsedMessage);\r\n break;\r\n case MessageType.StreamItem:\r\n this.isStreamItemMessage(parsedMessage);\r\n break;\r\n case MessageType.Completion:\r\n this.isCompletionMessage(parsedMessage);\r\n break;\r\n case MessageType.Ping:\r\n // Single value, no need to validate\r\n break;\r\n case MessageType.Close:\r\n // All optional values, no need to validate\r\n break;\r\n default:\r\n // Future protocol changes can add message types, old clients can ignore them\r\n logger.log(LogLevel.Information, \"Unknown message type '\" + parsedMessage.type + \"' ignored.\");\r\n continue;\r\n }\r\n hubMessages.push(parsedMessage);\r\n }\r\n return hubMessages;\r\n };\r\n /** Writes the specified {@link @aspnet/signalr.HubMessage} to a string and returns it.\r\n *\r\n * @param {HubMessage} message The message to write.\r\n * @returns {string} A string containing the serialized representation of the message.\r\n */\r\n JsonHubProtocol.prototype.writeMessage = function (message) {\r\n return TextMessageFormat.write(JSON.stringify(message));\r\n };\r\n JsonHubProtocol.prototype.isInvocationMessage = function (message) {\r\n this.assertNotEmptyString(message.target, \"Invalid payload for Invocation message.\");\r\n if (message.invocationId !== undefined) {\r\n this.assertNotEmptyString(message.invocationId, \"Invalid payload for Invocation message.\");\r\n }\r\n };\r\n JsonHubProtocol.prototype.isStreamItemMessage = function (message) {\r\n this.assertNotEmptyString(message.invocationId, \"Invalid payload for StreamItem message.\");\r\n if (message.item === undefined) {\r\n throw new Error(\"Invalid payload for StreamItem message.\");\r\n }\r\n };\r\n JsonHubProtocol.prototype.isCompletionMessage = function (message) {\r\n if (message.result && message.error) {\r\n throw new Error(\"Invalid payload for Completion message.\");\r\n }\r\n if (!message.result && message.error) {\r\n this.assertNotEmptyString(message.error, \"Invalid payload for Completion message.\");\r\n }\r\n this.assertNotEmptyString(message.invocationId, \"Invalid payload for Completion message.\");\r\n };\r\n JsonHubProtocol.prototype.assertNotEmptyString = function (value, errorMessage) {\r\n if (typeof value !== \"string\" || value === \"\") {\r\n throw new Error(errorMessage);\r\n }\r\n };\r\n return JsonHubProtocol;\r\n}());\r\nexport { JsonHubProtocol };\r\n//# sourceMappingURL=JsonHubProtocol.js.map","// Copyright (c) .NET Foundation. All rights reserved.\r\n// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.\r\nimport { HttpConnection } from \"./HttpConnection\";\r\nimport { HubConnection } from \"./HubConnection\";\r\nimport { JsonHubProtocol } from \"./JsonHubProtocol\";\r\nimport { NullLogger } from \"./Loggers\";\r\nimport { Arg, ConsoleLogger } from \"./Utils\";\r\n/** A builder for configuring {@link @aspnet/signalr.HubConnection} instances. */\r\nvar HubConnectionBuilder = /** @class */ (function () {\r\n function HubConnectionBuilder() {\r\n }\r\n HubConnectionBuilder.prototype.configureLogging = function (logging) {\r\n Arg.isRequired(logging, \"logging\");\r\n if (isLogger(logging)) {\r\n this.logger = logging;\r\n }\r\n else {\r\n this.logger = new ConsoleLogger(logging);\r\n }\r\n return this;\r\n };\r\n HubConnectionBuilder.prototype.withUrl = function (url, transportTypeOrOptions) {\r\n Arg.isRequired(url, \"url\");\r\n this.url = url;\r\n // Flow-typing knows where it's at. Since HttpTransportType is a number and IHttpConnectionOptions is guaranteed\r\n // to be an object, we know (as does TypeScript) this comparison is all we need to figure out which overload was called.\r\n if (typeof transportTypeOrOptions === \"object\") {\r\n this.httpConnectionOptions = transportTypeOrOptions;\r\n }\r\n else {\r\n this.httpConnectionOptions = {\r\n transport: transportTypeOrOptions,\r\n };\r\n }\r\n return this;\r\n };\r\n /** Configures the {@link @aspnet/signalr.HubConnection} to use the specified Hub Protocol.\r\n *\r\n * @param {IHubProtocol} protocol The {@link @aspnet/signalr.IHubProtocol} implementation to use.\r\n */\r\n HubConnectionBuilder.prototype.withHubProtocol = function (protocol) {\r\n Arg.isRequired(protocol, \"protocol\");\r\n this.protocol = protocol;\r\n return this;\r\n };\r\n /** Creates a {@link @aspnet/signalr.HubConnection} from the configuration options specified in this builder.\r\n *\r\n * @returns {HubConnection} The configured {@link @aspnet/signalr.HubConnection}.\r\n */\r\n HubConnectionBuilder.prototype.build = function () {\r\n // If httpConnectionOptions has a logger, use it. Otherwise, override it with the one\r\n // provided to configureLogger\r\n var httpConnectionOptions = this.httpConnectionOptions || {};\r\n // If it's 'null', the user **explicitly** asked for null, don't mess with it.\r\n if (httpConnectionOptions.logger === undefined) {\r\n // If our logger is undefined or null, that's OK, the HttpConnection constructor will handle it.\r\n httpConnectionOptions.logger = this.logger;\r\n }\r\n // Now create the connection\r\n if (!this.url) {\r\n throw new Error(\"The 'HubConnectionBuilder.withUrl' method must be called before building the connection.\");\r\n }\r\n var connection = new HttpConnection(this.url, httpConnectionOptions);\r\n return HubConnection.create(connection, this.logger || NullLogger.instance, this.protocol || new JsonHubProtocol());\r\n };\r\n return HubConnectionBuilder;\r\n}());\r\nexport { HubConnectionBuilder };\r\nfunction isLogger(logger) {\r\n return logger.log !== undefined;\r\n}\r\n//# sourceMappingURL=HubConnectionBuilder.js.map","function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nmodule.exports = _assertThisInitialized;","function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nmodule.exports = _defineProperty;","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}","export default function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}","export default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}","export default function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}","import defineProperty from \"./defineProperty\";\nexport default function _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n var ownKeys = Object.keys(source);\n\n if (typeof Object.getOwnPropertySymbols === 'function') {\n ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n\n ownKeys.forEach(function (key) {\n defineProperty(target, key, source[key]);\n });\n }\n\n return target;\n}","export default function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}","function _extends() {\n module.exports = _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nmodule.exports = _extends;","function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}\n\nmodule.exports = _inheritsLoose;","function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\n\nmodule.exports = _interopRequireDefault;","function _interopRequireWildcard(obj) {\n if (obj && obj.__esModule) {\n return obj;\n } else {\n var newObj = {};\n\n if (obj != null) {\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {};\n\n if (desc.get || desc.set) {\n Object.defineProperty(newObj, key, desc);\n } else {\n newObj[key] = obj[key];\n }\n }\n }\n }\n\n newObj.default = obj;\n return newObj;\n }\n}\n\nmodule.exports = _interopRequireWildcard;","var defineProperty = require(\"./defineProperty\");\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n var ownKeys = Object.keys(source);\n\n if (typeof Object.getOwnPropertySymbols === 'function') {\n ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n\n ownKeys.forEach(function (key) {\n defineProperty(target, key, source[key]);\n });\n }\n\n return target;\n}\n\nmodule.exports = _objectSpread;","function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nmodule.exports = _objectWithoutPropertiesLoose;","var prefix = \"fab\";\nvar fa500px = {\n prefix: 'fab',\n iconName: '500px',\n icon: [448, 512, [], \"f26e\", \"M103.3 344.3c-6.5-14.2-6.9-18.3 7.4-23.1 25.6-8 8 9.2 43.2 49.2h.3v-93.9c1.2-50.2 44-92.2 97.7-92.2 53.9 0 97.7 43.5 97.7 96.8 0 63.4-60.8 113.2-128.5 93.3-10.5-4.2-2.1-31.7 8.5-28.6 53 0 89.4-10.1 89.4-64.4 0-61-77.1-89.6-116.9-44.6-23.5 26.4-17.6 42.1-17.6 157.6 50.7 31 118.3 22 160.4-20.1 24.8-24.8 38.5-58 38.5-93 0-35.2-13.8-68.2-38.8-93.3-24.8-24.8-57.8-38.5-93.3-38.5s-68.8 13.8-93.5 38.5c-.3.3-16 16.5-21.2 23.9l-.5.6c-3.3 4.7-6.3 9.1-20.1 6.1-6.9-1.7-14.3-5.8-14.3-11.8V20c0-5 3.9-10.5 10.5-10.5h241.3c8.3 0 8.3 11.6 8.3 15.1 0 3.9 0 15.1-8.3 15.1H130.3v132.9h.3c104.2-109.8 282.8-36 282.8 108.9 0 178.1-244.8 220.3-310.1 62.8zm63.3-260.8c-.5 4.2 4.6 24.5 14.6 20.6C306 56.6 384 144.5 390.6 144.5c4.8 0 22.8-15.3 14.3-22.8-93.2-89-234.5-57-238.3-38.2zM393 414.7C283 524.6 94 475.5 61 310.5c0-12.2-30.4-7.4-28.9 3.3 24 173.4 246 256.9 381.6 121.3 6.9-7.8-12.6-28.4-20.7-20.4zM213.6 306.6c0 4 4.3 7.3 5.5 8.5 3 3 6.1 4.4 8.5 4.4 3.8 0 2.6.2 22.3-19.5 19.6 19.3 19.1 19.5 22.3 19.5 5.4 0 18.5-10.4 10.7-18.2L265.6 284l18.2-18.2c6.3-6.8-10.1-21.8-16.2-15.7L249.7 268c-18.6-18.8-18.4-19.5-21.5-19.5-5 0-18 11.7-12.4 17.3L234 284c-18.1 17.9-20.4 19.2-20.4 22.6z\"]\n};\nvar faAccessibleIcon = {\n prefix: 'fab',\n iconName: 'accessible-icon',\n icon: [448, 512, [], \"f368\", \"M423.9 255.8L411 413.1c-3.3 40.7-63.9 35.1-60.6-4.9l10-122.5-41.1 2.3c10.1 20.7 15.8 43.9 15.8 68.5 0 41.2-16.1 78.7-42.3 106.5l-39.3-39.3c57.9-63.7 13.1-167.2-74-167.2-25.9 0-49.5 9.9-67.2 26L73 243.2c22-20.7 50.1-35.1 81.4-40.2l75.3-85.7-42.6-24.8-51.6 46c-30 26.8-70.6-18.5-40.5-45.4l68-60.7c9.8-8.8 24.1-10.2 35.5-3.6 0 0 139.3 80.9 139.5 81.1 16.2 10.1 20.7 36 6.1 52.6L285.7 229l106.1-5.9c18.5-1.1 33.6 14.4 32.1 32.7zm-64.9-154c28.1 0 50.9-22.8 50.9-50.9C409.9 22.8 387.1 0 359 0c-28.1 0-50.9 22.8-50.9 50.9 0 28.1 22.8 50.9 50.9 50.9zM179.6 456.5c-80.6 0-127.4-90.6-82.7-156.1l-39.7-39.7C36.4 287 24 320.3 24 356.4c0 130.7 150.7 201.4 251.4 122.5l-39.7-39.7c-16 10.9-35.3 17.3-56.1 17.3z\"]\n};\nvar faAccusoft = {\n prefix: 'fab',\n iconName: 'accusoft',\n icon: [640, 512, [], \"f369\", \"M322.1 252v-1l-51.2-65.8s-12 1.6-25 15.1c-9 9.3-242.1 239.1-243.4 240.9-7 10 1.6 6.8 15.7 1.7.8 0 114.5-36.6 114.5-36.6.5-.6-.1-.1.6-.6-.4-5.1-.8-26.2-1-27.7-.6-5.2 2.2-6.9 7-8.9l92.6-33.8c.6-.8 88.5-81.7 90.2-83.3zm160.1 120.1c13.3 16.1 20.7 13.3 30.8 9.3 3.2-1.2 115.4-47.6 117.8-48.9 8-4.3-1.7-16.7-7.2-23.4-2.1-2.5-205.1-245.6-207.2-248.3-9.7-12.2-14.3-12.9-38.4-12.8-10.2 0-106.8.5-116.5.6-19.2.1-32.9-.3-19.2 16.9C250 75 476.5 365.2 482.2 372.1zm152.7 1.6c-2.3-.3-24.6-4.7-38-7.2 0 0-115 50.4-117.5 51.6-16 7.3-26.9-3.2-36.7-14.6l-57.1-74c-5.4-.9-60.4-9.6-65.3-9.3-3.1.2-9.6.8-14.4 2.9-4.9 2.1-145.2 52.8-150.2 54.7-5.1 2-11.4 3.6-11.1 7.6.2 2.5 2 2.6 4.6 3.5 2.7.8 300.9 67.6 308 69.1 15.6 3.3 38.5 10.5 53.6 1.7 2.1-1.2 123.8-76.4 125.8-77.8 5.4-4 4.3-6.8-1.7-8.2z\"]\n};\nvar faAcquisitionsIncorporated = {\n prefix: 'fab',\n iconName: 'acquisitions-incorporated',\n icon: [384, 512, [], \"f6af\", \"M357.45 468.2c-1.2-7.7-1.3-7.6-9.6-7.6-99.8.2-111.8-2.4-112.7-2.6-12.3-1.7-20.6-10.5-21-23.1-.1-1.6-.2-71.6-1-129.1-.1-4.7 1.6-6.4 5.9-7.5 12.5-3 24.9-6.1 37.3-9.7 4.3-1.3 6.8-.2 8.4 3.5 4.5 10.3 8.8 20.6 13.2 30.9 1.6 3.7.1 4.4-3.4 4.4-10-.2-20-.1-30.4-.1v27h116c-1.4-9.5-2.7-18.1-4-27.5-7 0-13.8.4-20.4-.1-22.6-1.6-18.3-4.4-84-158.6-8.8-20.1-27.9-62.1-36.5-89.2-4.4-14 5.5-25.4 18.9-26.6 18.6-1.7 37.5-1.6 56.2-2 20.6-.4 41.2-.4 61.8-.5 3.1 0 4-1.4 4.3-4.3 1.2-9.8 2.7-19.5 4-29.2.8-5.3 1.6-10.7 2.4-16.1L23.75 0c-3.6 0-5.3 1.1-4.6 5.3 2.2 13.2-.8.8 6.4 45.3 63.4 0 71.8.9 101.8.5 12.3-.2 37 3.5 37.7 22.1.4 11.4-1.1 11.3-32.6 87.4-53.8 129.8-50.7 120.3-67.3 161-1.7 4.1-3.6 5.2-7.6 5.2-8.5-.2-17-.3-25.4.1-1.9.1-5.2 1.8-5.5 3.2-1.5 8.1-2.2 16.3-3.2 24.9h114.3v-27.6c-6.9 0-33.5.4-35.3-2.9 5.3-12.3 10.4-24.4 15.7-36.7 16.3 4 31.9 7.8 47.6 11.7 3.4.9 4.6 3 4.6 6.8-.1 42.9.1 85.9.2 128.8 0 10.2-5.5 19.1-14.9 23.1-6.5 2.7-3.3 3.4-121.4 2.4-5.3 0-7.1 2-7.6 6.8-1.5 12.9-2.9 25.9-5 38.8-.8 5 1.3 5.7 5.3 5.7 183.2.6-30.7 0 337.1 0-2.5-15-4.4-29.4-6.6-43.7zm-174.9-205.7c-13.3-4.2-26.6-8.2-39.9-12.5a44.53 44.53 0 0 1-5.8-2.9c17.2-44.3 34.2-88.1 51.3-132.1 7.5 2.4 7.9-.8 9.4 0 9.3 22.5 18.1 60.1 27 82.8 6.6 16.7 13 33.5 19.7 50.9a35.78 35.78 0 0 1-3.9 2.1c-13.1 3.9-26.4 7.5-39.4 11.7a27.66 27.66 0 0 1-18.4 0z\"]\n};\nvar faAdn = {\n prefix: 'fab',\n iconName: 'adn',\n icon: [496, 512, [], \"f170\", \"M248 167.5l64.9 98.8H183.1l64.9-98.8zM496 256c0 136.9-111.1 248-248 248S0 392.9 0 256 111.1 8 248 8s248 111.1 248 248zm-99.8 82.7L248 115.5 99.8 338.7h30.4l33.6-51.7h168.6l33.6 51.7h30.2z\"]\n};\nvar faAdobe = {\n prefix: 'fab',\n iconName: 'adobe',\n icon: [512, 512, [], \"f778\", \"M315.5 64h170.9v384L315.5 64zm-119 0H25.6v384L196.5 64zM256 206.1L363.5 448h-73l-30.7-76.8h-78.7L256 206.1z\"]\n};\nvar faAdversal = {\n prefix: 'fab',\n iconName: 'adversal',\n icon: [512, 512, [], \"f36a\", \"M482.1 32H28.7C5.8 32 0 37.9 0 60.9v390.2C0 474.4 5.8 480 28.7 480h453.4c24.4 0 29.9-5.2 29.9-29.7V62.2c0-24.6-5.4-30.2-29.9-30.2zM178.4 220.3c-27.5-20.2-72.1-8.7-84.2 23.4-4.3 11.1-9.3 9.5-17.5 8.3-9.7-1.5-17.2-3.2-22.5-5.5-28.8-11.4 8.6-55.3 24.9-64.3 41.1-21.4 83.4-22.2 125.3-4.8 40.9 16.8 34.5 59.2 34.5 128.5 2.7 25.8-4.3 58.3 9.3 88.8 1.9 4.4.4 7.9-2.7 10.7-8.4 6.7-39.3 2.2-46.6-7.4-1.9-2.2-1.8-3.6-3.9-6.2-3.6-3.9-7.3-2.2-11.9 1-57.4 36.4-140.3 21.4-147-43.3-3.1-29.3 12.4-57.1 39.6-71 38.2-19.5 112.2-11.8 114-30.9 1.1-10.2-1.9-20.1-11.3-27.3zm286.7 222c0 15.1-11.1 9.9-17.8 9.9H52.4c-7.4 0-18.2 4.8-17.8-10.7.4-13.9 10.5-9.1 17.1-9.1 132.3-.4 264.5-.4 396.8 0 6.8 0 16.6-4.4 16.6 9.9zm3.8-340.5v291c0 5.7-.7 13.9-8.1 13.9-12.4-.4-27.5 7.1-36.1-5.6-5.8-8.7-7.8-4-12.4-1.2-53.4 29.7-128.1 7.1-144.4-85.2-6.1-33.4-.7-67.1 15.7-100 11.8-23.9 56.9-76.1 136.1-30.5v-71c0-26.2-.1-26.2 26-26.2 3.1 0 6.6.4 9.7 0 10.1-.8 13.6 4.4 13.6 14.3-.1.2-.1.3-.1.5zm-51.5 232.3c-19.5 47.6-72.9 43.3-90 5.2-15.1-33.3-15.5-68.2.4-101.5 16.3-34.1 59.7-35.7 81.5-4.8 20.6 28.8 14.9 84.6 8.1 101.1zm-294.8 35.3c-7.5-1.3-33-3.3-33.7-27.8-.4-13.9 7.8-23 19.8-25.8 24.4-5.9 49.3-9.9 73.7-14.7 8.9-2 7.4 4.4 7.8 9.5 1.4 33-26.1 59.2-67.6 58.8z\"]\n};\nvar faAffiliatetheme = {\n prefix: 'fab',\n iconName: 'affiliatetheme',\n icon: [512, 512, [], \"f36b\", \"M159.7 237.4C108.4 308.3 43.1 348.2 14 326.6-15.2 304.9 2.8 230 54.2 159.1c51.3-70.9 116.6-110.8 145.7-89.2 29.1 21.6 11.1 96.6-40.2 167.5zm351.2-57.3C437.1 303.5 319 367.8 246.4 323.7c-25-15.2-41.3-41.2-49-73.8-33.6 64.8-92.8 113.8-164.1 133.2 49.8 59.3 124.1 96.9 207 96.9 150 0 271.6-123.1 271.6-274.9.1-8.5-.3-16.8-1-25z\"]\n};\nvar faAirbnb = {\n prefix: 'fab',\n iconName: 'airbnb',\n icon: [448, 512, [], \"f834\", \"M224 373.12c-25.24-31.67-40.08-59.43-45-83.18-22.55-88 112.61-88 90.06 0-5.45 24.25-20.29 52-45 83.18zm138.15 73.23c-42.06 18.31-83.67-10.88-119.3-50.47 103.9-130.07 46.11-200-18.85-200-54.92 0-85.16 46.51-73.28 100.5 6.93 29.19 25.23 62.39 54.43 99.5-32.53 36.05-60.55 52.69-85.15 54.92-50 7.43-89.11-41.06-71.3-91.09 15.1-39.16 111.72-231.18 115.87-241.56 15.75-30.07 25.56-57.4 59.38-57.4 32.34 0 43.4 25.94 60.37 59.87 36 70.62 89.35 177.48 114.84 239.09 13.17 33.07-1.37 71.29-37.01 86.64zm47-136.12C280.27 35.93 273.13 32 224 32c-45.52 0-64.87 31.67-84.66 72.79C33.18 317.1 22.89 347.19 22 349.81-3.22 419.14 48.74 480 111.63 480c21.71 0 60.61-6.06 112.37-62.4 58.68 63.78 101.26 62.4 112.37 62.4 62.89.05 114.85-60.86 89.61-130.19.02-3.89-16.82-38.9-16.82-39.58z\"]\n};\nvar faAlgolia = {\n prefix: 'fab',\n iconName: 'algolia',\n icon: [448, 512, [], \"f36c\", \"M229.3 182.6c-49.3 0-89.2 39.9-89.2 89.2 0 49.3 39.9 89.2 89.2 89.2s89.2-39.9 89.2-89.2c0-49.3-40-89.2-89.2-89.2zm62.7 56.6l-58.9 30.6c-1.8.9-3.8-.4-3.8-2.3V201c0-1.5 1.3-2.7 2.7-2.6 26.2 1 48.9 15.7 61.1 37.1.7 1.3.2 3-1.1 3.7zM389.1 32H58.9C26.4 32 0 58.4 0 90.9V421c0 32.6 26.4 59 58.9 59H389c32.6 0 58.9-26.4 58.9-58.9V90.9C448 58.4 421.6 32 389.1 32zm-202.6 84.7c0-10.8 8.7-19.5 19.5-19.5h45.3c10.8 0 19.5 8.7 19.5 19.5v15.4c0 1.8-1.7 3-3.3 2.5-12.3-3.4-25.1-5.1-38.1-5.1-13.5 0-26.7 1.8-39.4 5.5-1.7.5-3.4-.8-3.4-2.5v-15.8zm-84.4 37l9.2-9.2c7.6-7.6 19.9-7.6 27.5 0l7.7 7.7c1.1 1.1 1 3-.3 4-6.2 4.5-12.1 9.4-17.6 14.9-5.4 5.4-10.4 11.3-14.8 17.4-1 1.3-2.9 1.5-4 .3l-7.7-7.7c-7.6-7.5-7.6-19.8 0-27.4zm127.2 244.8c-70 0-126.6-56.7-126.6-126.6s56.7-126.6 126.6-126.6c70 0 126.6 56.6 126.6 126.6 0 69.8-56.7 126.6-126.6 126.6z\"]\n};\nvar faAlipay = {\n prefix: 'fab',\n iconName: 'alipay',\n icon: [448, 512, [], \"f642\", \"M377.74 32H70.26C31.41 32 0 63.41 0 102.26v307.48C0 448.59 31.41 480 70.26 480h307.48c38.52 0 69.76-31.08 70.26-69.6-45.96-25.62-110.59-60.34-171.6-88.44-32.07 43.97-84.14 81-148.62 81-70.59 0-93.73-45.3-97.04-76.37-3.97-39.01 14.88-81.5 99.52-81.5 35.38 0 79.35 10.25 127.13 24.96 16.53-30.09 26.45-60.34 26.45-60.34h-178.2v-16.7h92.08v-31.24H88.28v-19.01h109.44V92.34h50.92v50.42h109.44v19.01H248.63v31.24h88.77s-15.21 46.62-38.35 90.92c48.93 16.7 100.01 36.04 148.62 52.74V102.26C447.83 63.57 416.43 32 377.74 32zM47.28 322.95c.99 20.17 10.25 53.73 69.93 53.73 52.07 0 92.58-39.68 117.87-72.9-44.63-18.68-84.48-31.41-109.44-31.41-67.45 0-79.35 33.06-78.36 50.58z\"]\n};\nvar faAmazon = {\n prefix: 'fab',\n iconName: 'amazon',\n icon: [448, 512, [], \"f270\", \"M257.2 162.7c-48.7 1.8-169.5 15.5-169.5 117.5 0 109.5 138.3 114 183.5 43.2 6.5 10.2 35.4 37.5 45.3 46.8l56.8-56S341 288.9 341 261.4V114.3C341 89 316.5 32 228.7 32 140.7 32 94 87 94 136.3l73.5 6.8c16.3-49.5 54.2-49.5 54.2-49.5 40.7-.1 35.5 29.8 35.5 69.1zm0 86.8c0 80-84.2 68-84.2 17.2 0-47.2 50.5-56.7 84.2-57.8v40.6zm136 163.5c-7.7 10-70 67-174.5 67S34.2 408.5 9.7 379c-6.8-7.7 1-11.3 5.5-8.3C88.5 415.2 203 488.5 387.7 401c7.5-3.7 13.3 2 5.5 12zm39.8 2.2c-6.5 15.8-16 26.8-21.2 31-5.5 4.5-9.5 2.7-6.5-3.8s19.3-46.5 12.7-55c-6.5-8.3-37-4.3-48-3.2-10.8 1-13 2-14-.3-2.3-5.7 21.7-15.5 37.5-17.5 15.7-1.8 41-.8 46 5.7 3.7 5.1 0 27.1-6.5 43.1z\"]\n};\nvar faAmazonPay = {\n prefix: 'fab',\n iconName: 'amazon-pay',\n icon: [640, 512, [], \"f42c\", \"M14 325.3c2.3-4.2 5.2-4.9 9.7-2.5 10.4 5.6 20.6 11.4 31.2 16.7a595.88 595.88 0 0 0 127.4 46.3 616.61 616.61 0 0 0 63.2 11.8 603.33 603.33 0 0 0 95 5.2c17.4-.4 34.8-1.8 52.1-3.8a603.66 603.66 0 0 0 163.3-42.8c2.9-1.2 5.9-2 9.1-1.2 6.7 1.8 9 9 4.1 13.9a70 70 0 0 1-9.6 7.4c-30.7 21.1-64.2 36.4-99.6 47.9a473.31 473.31 0 0 1-75.1 17.6 431 431 0 0 1-53.2 4.8 21.3 21.3 0 0 0-2.5.3H308a21.3 21.3 0 0 0-2.5-.3c-3.6-.2-7.2-.3-10.7-.4a426.3 426.3 0 0 1-50.4-5.3A448.4 448.4 0 0 1 164 420a443.33 443.33 0 0 1-145.6-87c-1.8-1.6-3-3.8-4.4-5.7zM172 65.1l-4.3.6a80.92 80.92 0 0 0-38 15.1c-2.4 1.7-4.6 3.5-7.1 5.4a4.29 4.29 0 0 1-.4-1.4c-.4-2.7-.8-5.5-1.3-8.2-.7-4.6-3-6.6-7.6-6.6h-11.5c-6.9 0-8.2 1.3-8.2 8.2v209.3c0 1 0 2 .1 3 .2 3 2 4.9 4.9 5 7 .1 14.1.1 21.1 0 2.9 0 4.7-2 5-5 .1-1 .1-2 .1-3v-72.4c1.1.9 1.7 1.4 2.2 1.9 17.9 14.9 38.5 19.8 61 15.4 20.4-4 34.6-16.5 43.8-34.9 7-13.9 9.9-28.7 10.3-44.1.5-17.1-1.2-33.9-8.1-49.8-8.5-19.6-22.6-32.5-43.9-36.9-3.2-.7-6.5-1-9.8-1.5-2.8-.1-5.5-.1-8.3-.1zM124.6 107a3.48 3.48 0 0 1 1.7-3.3c13.7-9.5 28.8-14.5 45.6-13.2 14.9 1.1 27.1 8.4 33.5 25.9 3.9 10.7 4.9 21.8 4.9 33 0 10.4-.8 20.6-4 30.6-6.8 21.3-22.4 29.4-42.6 28.5-14-.6-26.2-6-37.4-13.9a3.57 3.57 0 0 1-1.7-3.3c.1-14.1 0-28.1 0-42.2s.1-28 0-42.1zm205.7-41.9c-1 .1-2 .3-2.9.4a148 148 0 0 0-28.9 4.1c-6.1 1.6-12 3.8-17.9 5.8-3.6 1.2-5.4 3.8-5.3 7.7.1 3.3-.1 6.6 0 9.9.1 4.8 2.1 6.1 6.8 4.9 7.8-2 15.6-4.2 23.5-5.7 12.3-2.3 24.7-3.3 37.2-1.4 6.5 1 12.6 2.9 16.8 8.4 3.7 4.8 5.1 10.5 5.3 16.4.3 8.3.2 16.6.3 24.9a7.84 7.84 0 0 1-.2 1.4c-.5-.1-.9 0-1.3-.1a180.56 180.56 0 0 0-32-4.9c-11.3-.6-22.5.1-33.3 3.9-12.9 4.5-23.3 12.3-29.4 24.9-4.7 9.8-5.4 20.2-3.9 30.7 2 14 9 24.8 21.4 31.7 11.9 6.6 24.8 7.4 37.9 5.4 15.1-2.3 28.5-8.7 40.3-18.4a7.36 7.36 0 0 1 1.6-1.1c.6 3.8 1.1 7.4 1.8 11 .6 3.1 2.5 5.1 5.4 5.2 5.4.1 10.9.1 16.3 0a4.84 4.84 0 0 0 4.8-4.7 26.2 26.2 0 0 0 .1-2.8v-106a80 80 0 0 0-.9-12.9c-1.9-12.9-7.4-23.5-19-30.4-6.7-4-14.1-6-21.8-7.1-3.6-.5-7.2-.8-10.8-1.3-3.9.1-7.9.1-11.9.1zm35 127.7a3.33 3.33 0 0 1-1.5 3c-11.2 8.1-23.5 13.5-37.4 14.9-5.7.6-11.4.4-16.8-1.8a20.08 20.08 0 0 1-12.4-13.3 32.9 32.9 0 0 1-.1-19.4c2.5-8.3 8.4-13 16.4-15.6a61.33 61.33 0 0 1 24.8-2.2c8.4.7 16.6 2.3 25 3.4 1.6.2 2.1 1 2.1 2.6-.1 4.8 0 9.5 0 14.3s-.2 9.4-.1 14.1zm259.9 129.4c-1-5-4.8-6.9-9.1-8.3a88.42 88.42 0 0 0-21-3.9 147.32 147.32 0 0 0-39.2 1.9c-14.3 2.7-27.9 7.3-40 15.6a13.75 13.75 0 0 0-3.7 3.5 5.11 5.11 0 0 0-.5 4c.4 1.5 2.1 1.9 3.6 1.8a16.2 16.2 0 0 0 2.2-.1c7.8-.8 15.5-1.7 23.3-2.5 11.4-1.1 22.9-1.8 34.3-.9a71.64 71.64 0 0 1 14.4 2.7c5.1 1.4 7.4 5.2 7.6 10.4.4 8-1.4 15.7-3.5 23.3-4.1 15.4-10 30.3-15.8 45.1a17.6 17.6 0 0 0-1 3c-.5 2.9 1.2 4.8 4.1 4.1a10.56 10.56 0 0 0 4.8-2.5 145.91 145.91 0 0 0 12.7-13.4c12.8-16.4 20.3-35.3 24.7-55.6.8-3.6 1.4-7.3 2.1-10.9v-17.3zM493.1 199q-19.35-53.55-38.7-107.2c-2-5.7-4.2-11.3-6.3-16.9-1.1-2.9-3.2-4.8-6.4-4.8-7.6-.1-15.2-.2-22.9-.1-2.5 0-3.7 2-3.2 4.5a43.1 43.1 0 0 0 1.9 6.1q29.4 72.75 59.1 145.5c1.7 4.1 2.1 7.6.2 11.8-3.3 7.3-5.9 15-9.3 22.3-3 6.5-8 11.4-15.2 13.3a42.13 42.13 0 0 1-15.4 1.1c-2.5-.2-5-.8-7.5-1-3.4-.2-5.1 1.3-5.2 4.8q-.15 5 0 9.9c.1 5.5 2 8 7.4 8.9a108.18 108.18 0 0 0 16.9 2c17.1.4 30.7-6.5 39.5-21.4a131.63 131.63 0 0 0 9.2-18.4q35.55-89.7 70.6-179.6a26.62 26.62 0 0 0 1.6-5.5c.4-2.8-.9-4.4-3.7-4.4-6.6-.1-13.3 0-19.9 0a7.54 7.54 0 0 0-7.7 5.2c-.5 1.4-1.1 2.7-1.6 4.1l-34.8 100c-2.5 7.2-5.1 14.5-7.7 22.2-.4-1.1-.6-1.7-.9-2.4z\"]\n};\nvar faAmilia = {\n prefix: 'fab',\n iconName: 'amilia',\n icon: [448, 512, [], \"f36d\", \"M240.1 32c-61.9 0-131.5 16.9-184.2 55.4-5.1 3.1-9.1 9.2-7.2 19.4 1.1 5.1 5.1 27.4 10.2 39.6 4.1 10.2 14.2 10.2 20.3 6.1 32.5-22.3 96.5-47.7 152.3-47.7 57.9 0 58.9 28.4 58.9 73.1v38.5C203 227.7 78.2 251 46.7 264.2 11.2 280.5 16.3 357.7 16.3 376s15.2 104 124.9 104c47.8 0 113.7-20.7 153.3-42.1v25.4c0 3 2.1 8.2 6.1 9.1 3.1 1 50.7 2 59.9 2s62.5.3 66.5-.7c4.1-1 5.1-6.1 5.1-9.1V168c-.1-80.3-57.9-136-192-136zm50.2 348c-21.4 13.2-48.7 24.4-79.1 24.4-52.8 0-58.9-33.5-59-44.7 0-12.2-3-42.7 18.3-52.9 24.3-13.2 75.1-29.4 119.8-33.5z\"]\n};\nvar faAndroid = {\n prefix: 'fab',\n iconName: 'android',\n icon: [576, 512, [], \"f17b\", \"M420.55,301.93a24,24,0,1,1,24-24,24,24,0,0,1-24,24m-265.1,0a24,24,0,1,1,24-24,24,24,0,0,1-24,24m273.7-144.48,47.94-83a10,10,0,1,0-17.27-10h0l-48.54,84.07a301.25,301.25,0,0,0-246.56,0L116.18,64.45a10,10,0,1,0-17.27,10h0l47.94,83C64.53,202.22,8.24,285.55,0,384H576c-8.24-98.45-64.54-181.78-146.85-226.55\"]\n};\nvar faAngellist = {\n prefix: 'fab',\n iconName: 'angellist',\n icon: [448, 512, [], \"f209\", \"M347.1 215.4c11.7-32.6 45.4-126.9 45.4-157.1 0-26.6-15.7-48.9-43.7-48.9-44.6 0-84.6 131.7-97.1 163.1C242 144 196.6 0 156.6 0c-31.1 0-45.7 22.9-45.7 51.7 0 35.3 34.2 126.8 46.6 162-6.3-2.3-13.1-4.3-20-4.3-23.4 0-48.3 29.1-48.3 52.6 0 8.9 4.9 21.4 8 29.7-36.9 10-51.1 34.6-51.1 71.7C46 435.6 114.4 512 210.6 512c118 0 191.4-88.6 191.4-202.9 0-43.1-6.9-82-54.9-93.7zM311.7 108c4-12.3 21.1-64.3 37.1-64.3 8.6 0 10.9 8.9 10.9 16 0 19.1-38.6 124.6-47.1 148l-34-6 33.1-93.7zM142.3 48.3c0-11.9 14.5-45.7 46.3 47.1l34.6 100.3c-15.6-1.3-27.7-3-35.4 1.4-10.9-28.8-45.5-119.7-45.5-148.8zM140 244c29.3 0 67.1 94.6 67.1 107.4 0 5.1-4.9 11.4-10.6 11.4-20.9 0-76.9-76.9-76.9-97.7.1-7.7 12.7-21.1 20.4-21.1zm184.3 186.3c-29.1 32-66.3 48.6-109.7 48.6-59.4 0-106.3-32.6-128.9-88.3-17.1-43.4 3.8-68.3 20.6-68.3 11.4 0 54.3 60.3 54.3 73.1 0 4.9-7.7 8.3-11.7 8.3-16.1 0-22.4-15.5-51.1-51.4-29.7 29.7 20.5 86.9 58.3 86.9 26.1 0 43.1-24.2 38-42 3.7 0 8.3.3 11.7-.6 1.1 27.1 9.1 59.4 41.7 61.7 0-.9 2-7.1 2-7.4 0-17.4-10.6-32.6-10.6-50.3 0-28.3 21.7-55.7 43.7-71.7 8-6 17.7-9.7 27.1-13.1 9.7-3.7 20-8 27.4-15.4-1.1-11.2-5.7-21.1-16.9-21.1-27.7 0-120.6 4-120.6-39.7 0-6.7.1-13.1 17.4-13.1 32.3 0 114.3 8 138.3 29.1 18.1 16.1 24.3 113.2-31 174.7zm-98.6-126c9.7 3.1 19.7 4 29.7 6-7.4 5.4-14 12-20.3 19.1-2.8-8.5-6.2-16.8-9.4-25.1z\"]\n};\nvar faAngrycreative = {\n prefix: 'fab',\n iconName: 'angrycreative',\n icon: [640, 512, [], \"f36e\", \"M640 238.2l-3.2 28.2-34.5 2.3-2 18.1 34.5-2.3-3.2 28.2-34.4 2.2-2.3 20.1 34.4-2.2-3 26.1-64.7 4.1 12.7-113.2L527 365.2l-31.9 2-23.8-117.8 30.3-2 13.6 79.4 31.7-82.4 93.1-6.2zM426.8 371.5l28.3-1.8L468 249.6l-28.4 1.9-12.8 120zM162 388.1l-19.4-36-3.5 37.4-28.2 1.7 2.7-29.1c-11 18-32 34.3-56.9 35.8C23.9 399.9-3 377 .3 339.7c2.6-29.3 26.7-62.8 67.5-65.4 37.7-2.4 47.6 23.2 51.3 28.8l2.8-30.8 38.9-2.5c20.1-1.3 38.7 3.7 42.5 23.7l2.6-26.6 64.8-4.2-2.7 27.9-36.4 2.4-1.7 17.9 36.4-2.3-2.7 27.9-36.4 2.3-1.9 19.9 36.3-2.3-2.1 20.8 55-117.2 23.8-1.6L370.4 369l8.9-85.6-22.3 1.4 2.9-27.9 75-4.9-3 28-24.3 1.6-9.7 91.9-58 3.7-4.3-15.6-39.4 2.5-8 16.3-126.2 7.7zm-44.3-70.2l-26.4 1.7C84.6 307.2 76.9 303 65 303.8c-19 1.2-33.3 17.5-34.6 33.3-1.4 16 7.3 32.5 28.7 31.2 12.8-.8 21.3-8.6 28.9-18.9l27-1.7 2.7-29.8zm56.1-7.7c1.2-12.9-7.6-13.6-26.1-12.4l-2.7 28.5c14.2-.9 27.5-2.1 28.8-16.1zm21.1 70.8l5.8-60c-5 13.5-14.7 21.1-27.9 26.6l22.1 33.4zm135.4-45l-7.9-37.8-15.8 39.3 23.7-1.5zm-170.1-74.6l-4.3-17.5-39.6 2.6-8.1 18.2-31.9 2.1 57-121.9 23.9-1.6 30.7 102 9.9-104.7 27-1.8 37.8 63.6 6.5-66.6 28.5-1.9-4 41.2c7.4-13.5 22.9-44.7 63.6-47.5 40.5-2.8 52.4 29.3 53.4 30.3l3.3-32 39.3-2.7c12.7-.9 27.8.3 36.3 9.7l-4.4-11.9 32.2-2.2 12.9 43.2 23-45.7 31-2.2-43.6 78.4-4.8 44.3-28.4 1.9 4.8-44.3-15.8-43c1 22.3-9.2 40.1-32 49.6l25.2 38.8-36.4 2.4-19.2-36.8-4 38.3-28.4 1.9 3.3-31.5c-6.7 9.3-19.7 35.4-59.6 38-26.2 1.7-45.6-10.3-55.4-39.2l-4 40.3-25 1.6-37.6-63.3-6.3 66.2-56.8 3.7zm276.6-82.1c10.2-.7 17.5-2.1 21.6-4.3 4.5-2.4 7-6.4 7.6-12.1.6-5.3-.6-8.8-3.4-10.4-3.6-2.1-10.6-2.8-22.9-2l-2.9 28.8zM327.7 214c5.6 5.9 12.7 8.5 21.3 7.9 4.7-.3 9.1-1.8 13.3-4.1 5.5-3 10.6-8 15.1-14.3l-34.2 2.3 2.4-23.9 63.1-4.3 1.2-12-31.2 2.1c-4.1-3.7-7.8-6.6-11.1-8.1-4-1.7-8.1-2.8-12.2-2.5-8 .5-15.3 3.6-22 9.2-7.7 6.4-12 14.5-12.9 24.4-1.1 9.6 1.4 17.3 7.2 23.3zm-201.3 8.2l23.8-1.6-8.3-37.6-15.5 39.2z\"]\n};\nvar faAngular = {\n prefix: 'fab',\n iconName: 'angular',\n icon: [448, 512, [], \"f420\", \"M185.7 268.1h76.2l-38.1-91.6-38.1 91.6zM223.8 32L16 106.4l31.8 275.7 176 97.9 176-97.9 31.8-275.7zM354 373.8h-48.6l-26.2-65.4H168.6l-26.2 65.4H93.7L223.8 81.5z\"]\n};\nvar faAppStore = {\n prefix: 'fab',\n iconName: 'app-store',\n icon: [512, 512, [], \"f36f\", \"M255.9 120.9l9.1-15.7c5.6-9.8 18.1-13.1 27.9-7.5 9.8 5.6 13.1 18.1 7.5 27.9l-87.5 151.5h63.3c20.5 0 32 24.1 23.1 40.8H113.8c-11.3 0-20.4-9.1-20.4-20.4 0-11.3 9.1-20.4 20.4-20.4h52l66.6-115.4-20.8-36.1c-5.6-9.8-2.3-22.2 7.5-27.9 9.8-5.6 22.2-2.3 27.9 7.5l8.9 15.7zm-78.7 218l-19.6 34c-5.6 9.8-18.1 13.1-27.9 7.5-9.8-5.6-13.1-18.1-7.5-27.9l14.6-25.2c16.4-5.1 29.8-1.2 40.4 11.6zm168.9-61.7h53.1c11.3 0 20.4 9.1 20.4 20.4 0 11.3-9.1 20.4-20.4 20.4h-29.5l19.9 34.5c5.6 9.8 2.3 22.2-7.5 27.9-9.8 5.6-22.2 2.3-27.9-7.5-33.5-58.1-58.7-101.6-75.4-130.6-17.1-29.5-4.9-59.1 7.2-69.1 13.4 23 33.4 57.7 60.1 104zM256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm216 248c0 118.7-96.1 216-216 216-118.7 0-216-96.1-216-216 0-118.7 96.1-216 216-216 118.7 0 216 96.1 216 216z\"]\n};\nvar faAppStoreIos = {\n prefix: 'fab',\n iconName: 'app-store-ios',\n icon: [448, 512, [], \"f370\", \"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM127 384.5c-5.5 9.6-17.8 12.8-27.3 7.3-9.6-5.5-12.8-17.8-7.3-27.3l14.3-24.7c16.1-4.9 29.3-1.1 39.6 11.4L127 384.5zm138.9-53.9H84c-11 0-20-9-20-20s9-20 20-20h51l65.4-113.2-20.5-35.4c-5.5-9.6-2.2-21.8 7.3-27.3 9.6-5.5 21.8-2.2 27.3 7.3l8.9 15.4 8.9-15.4c5.5-9.6 17.8-12.8 27.3-7.3 9.6 5.5 12.8 17.8 7.3 27.3l-85.8 148.6h62.1c20.2 0 31.5 23.7 22.7 40zm98.1 0h-29l19.6 33.9c5.5 9.6 2.2 21.8-7.3 27.3-9.6 5.5-21.8 2.2-27.3-7.3-32.9-56.9-57.5-99.7-74-128.1-16.7-29-4.8-58 7.1-67.8 13.1 22.7 32.7 56.7 58.9 102h52c11 0 20 9 20 20 0 11.1-9 20-20 20z\"]\n};\nvar faApper = {\n prefix: 'fab',\n iconName: 'apper',\n icon: [640, 512, [], \"f371\", \"M42.1 239.1c22.2 0 29 2.8 33.5 14.6h.8v-22.9c0-11.3-4.8-15.4-17.9-15.4-11.3 0-14.4 2.5-15.1 12.8H4.8c.3-13.9 1.5-19.1 5.8-24.4C17.9 195 29.5 192 56.7 192c33 0 47.1 5 53.9 18.9 2 4.3 4 15.6 4 23.7v76.3H76.3l1.3-19.1h-1c-5.3 15.6-13.6 20.4-35.5 20.4-30.3 0-41.1-10.1-41.1-37.3 0-25.2 12.3-35.8 42.1-35.8zm17.1 48.1c13.1 0 16.9-3 16.9-13.4 0-9.1-4.3-11.6-19.6-11.6-13.1 0-17.9 3-17.9 12.1-.1 10.4 3.7 12.9 20.6 12.9zm77.8-94.9h38.3l-1.5 20.6h.8c9.1-17.1 15.9-20.9 37.5-20.9 14.4 0 24.7 3 31.5 9.1 9.8 8.6 12.8 20.4 12.8 48.1 0 30-3 43.1-12.1 52.9-6.8 7.3-16.4 10.1-33.2 10.1-20.4 0-29.2-5.5-33.8-21.2h-.8v70.3H137v-169zm80.9 60.7c0-27.5-3.3-32.5-20.7-32.5-16.9 0-20.7 5-20.7 28.7 0 28 3.5 33.5 21.2 33.5 16.4 0 20.2-5.6 20.2-29.7zm57.9-60.7h38.3l-1.5 20.6h.8c9.1-17.1 15.9-20.9 37.5-20.9 14.4 0 24.7 3 31.5 9.1 9.8 8.6 12.8 20.4 12.8 48.1 0 30-3 43.1-12.1 52.9-6.8 7.3-16.4 10.1-33.3 10.1-20.4 0-29.2-5.5-33.8-21.2h-.8v70.3h-39.5v-169zm80.9 60.7c0-27.5-3.3-32.5-20.7-32.5-16.9 0-20.7 5-20.7 28.7 0 28 3.5 33.5 21.2 33.5 16.4 0 20.2-5.6 20.2-29.7zm53.8-3.8c0-25.4 3.3-37.8 12.3-45.8 8.8-8.1 22.2-11.3 45.1-11.3 42.8 0 55.7 12.8 55.7 55.7v11.1h-75.3c-.3 2-.3 4-.3 4.8 0 16.9 4.5 21.9 20.1 21.9 13.9 0 17.9-3 17.9-13.9h37.5v2.3c0 9.8-2.5 18.9-6.8 24.7-7.3 9.8-19.6 13.6-44.3 13.6-27.5 0-41.6-3.3-50.6-12.3-8.5-8.5-11.3-21.3-11.3-50.8zm76.4-11.6c-.3-1.8-.3-3.3-.3-3.8 0-12.3-3.3-14.6-19.6-14.6-14.4 0-17.1 3-18.1 15.1l-.3 3.3h38.3zm55.6-45.3h38.3l-1.8 19.9h.7c6.8-14.9 14.4-20.2 29.7-20.2 10.8 0 19.1 3.3 23.4 9.3 5.3 7.3 6.8 14.4 6.8 34 0 1.5 0 5 .2 9.3h-35c.3-1.8.3-3.3.3-4 0-15.4-2-19.4-10.3-19.4-6.3 0-10.8 3.3-13.1 9.3-1 3-1 4.3-1 12.3v68h-38.3V192.3z\"]\n};\nvar faApple = {\n prefix: 'fab',\n iconName: 'apple',\n icon: [384, 512, [], \"f179\", \"M318.7 268.7c-.2-36.7 16.4-64.4 50-84.8-18.8-26.9-47.2-41.7-84.7-44.6-35.5-2.8-74.3 20.7-88.5 20.7-15 0-49.4-19.7-76.4-19.7C63.3 141.2 4 184.8 4 273.5q0 39.3 14.4 81.2c12.8 36.7 59 126.7 107.2 125.2 25.2-.6 43-17.9 75.8-17.9 31.8 0 48.3 17.9 76.4 17.9 48.6-.7 90.4-82.5 102.6-119.3-65.2-30.7-61.7-90-61.7-91.9zm-56.6-164.2c27.3-32.4 24.8-61.9 24-72.5-24.1 1.4-52 16.4-67.9 34.9-17.5 19.8-27.8 44.3-25.6 71.9 26.1 2 49.9-11.4 69.5-34.3z\"]\n};\nvar faApplePay = {\n prefix: 'fab',\n iconName: 'apple-pay',\n icon: [640, 512, [], \"f415\", \"M116.9 158.5c-7.5 8.9-19.5 15.9-31.5 14.9-1.5-12 4.4-24.8 11.3-32.6 7.5-9.1 20.6-15.6 31.3-16.1 1.2 12.4-3.7 24.7-11.1 33.8m10.9 17.2c-17.4-1-32.3 9.9-40.5 9.9-8.4 0-21-9.4-34.8-9.1-17.9.3-34.5 10.4-43.6 26.5-18.8 32.3-4.9 80 13.3 106.3 8.9 13 19.5 27.3 33.5 26.8 13.3-.5 18.5-8.6 34.5-8.6 16.1 0 20.8 8.6 34.8 8.4 14.5-.3 23.6-13 32.5-26 10.1-14.8 14.3-29.1 14.5-29.9-.3-.3-28-10.9-28.3-42.9-.3-26.8 21.9-39.5 22.9-40.3-12.5-18.6-32-20.6-38.8-21.1m100.4-36.2v194.9h30.3v-66.6h41.9c38.3 0 65.1-26.3 65.1-64.3s-26.4-64-64.1-64h-73.2zm30.3 25.5h34.9c26.3 0 41.3 14 41.3 38.6s-15 38.8-41.4 38.8h-34.8V165zm162.2 170.9c19 0 36.6-9.6 44.6-24.9h.6v23.4h28v-97c0-28.1-22.5-46.3-57.1-46.3-32.1 0-55.9 18.4-56.8 43.6h27.3c2.3-12 13.4-19.9 28.6-19.9 18.5 0 28.9 8.6 28.9 24.5v10.8l-37.8 2.3c-35.1 2.1-54.1 16.5-54.1 41.5.1 25.2 19.7 42 47.8 42zm8.2-23.1c-16.1 0-26.4-7.8-26.4-19.6 0-12.3 9.9-19.4 28.8-20.5l33.6-2.1v11c0 18.2-15.5 31.2-36 31.2zm102.5 74.6c29.5 0 43.4-11.3 55.5-45.4L640 193h-30.8l-35.6 115.1h-.6L537.4 193h-31.6L557 334.9l-2.8 8.6c-4.6 14.6-12.1 20.3-25.5 20.3-2.4 0-7-.3-8.9-.5v23.4c1.8.4 9.3.7 11.6.7z\"]\n};\nvar faArtstation = {\n prefix: 'fab',\n iconName: 'artstation',\n icon: [512, 512, [], \"f77a\", \"M2 377.4l43 74.3A51.35 51.35 0 0 0 90.9 480h285.4l-59.2-102.6zM501.8 350L335.6 59.3A51.38 51.38 0 0 0 290.2 32h-88.4l257.3 447.6 40.7-70.5c1.9-3.2 21-29.7 2-59.1zM275 304.5l-115.5-200L44 304.5z\"]\n};\nvar faAsymmetrik = {\n prefix: 'fab',\n iconName: 'asymmetrik',\n icon: [576, 512, [], \"f372\", \"M517.5 309.2c38.8-40 58.1-80 58.5-116.1.8-65.5-59.4-118.2-169.4-135C277.9 38.4 118.1 73.6 0 140.5 52 114 110.6 92.3 170.7 82.3c74.5-20.5 153-25.4 221.3-14.8C544.5 91.3 588.8 195 490.8 299.2c-10.2 10.8-22 21.1-35 30.6L304.9 103.4 114.7 388.9c-65.6-29.4-76.5-90.2-19.1-151.2 20.8-22.2 48.3-41.9 79.5-58.1 20-12.2 39.7-22.6 62-30.7-65.1 20.3-122.7 52.9-161.6 92.9-27.7 28.6-41.4 57.1-41.7 82.9-.5 35.1 23.4 65.1 68.4 83l-34.5 51.7h101.6l22-34.4c22.2 1 45.3 0 68.6-2.7l-22.8 37.1h135.5L340 406.3c18.6-5.3 36.9-11.5 54.5-18.7l45.9 71.8H542L468.6 349c18.5-12.1 35-25.5 48.9-39.8zm-187.6 80.5l-25-40.6-32.7 53.3c-23.4 3.5-46.7 5.1-69.2 4.4l101.9-159.3 78.7 123c-17.2 7.4-35.3 13.9-53.7 19.2z\"]\n};\nvar faAtlassian = {\n prefix: 'fab',\n iconName: 'atlassian',\n icon: [512, 512, [], \"f77b\", \"M152.2 236.4c-7.7-8.2-19.7-7.7-24.8 2.8L1.6 490.2c-5 10 2.4 21.7 13.4 21.7h175c5.8.1 11-3.2 13.4-8.4 37.9-77.8 15.1-196.3-51.2-267.1zM244.4 8.1c-122.3 193.4-8.5 348.6 65 495.5 2.5 5.1 7.7 8.4 13.4 8.4H497c11.2 0 18.4-11.8 13.4-21.7 0 0-234.5-470.6-240.4-482.3-5.3-10.6-18.8-10.8-25.6.1z\"]\n};\nvar faAudible = {\n prefix: 'fab',\n iconName: 'audible',\n icon: [640, 512, [], \"f373\", \"M640 199.9v54l-320 200L0 254v-54l320 200 320-200.1zm-194.5 72l47.1-29.4c-37.2-55.8-100.7-92.6-172.7-92.6-72 0-135.5 36.7-172.6 92.4h.3c2.5-2.3 5.1-4.5 7.7-6.7 89.7-74.4 219.4-58.1 290.2 36.3zm-220.1 18.8c16.9-11.9 36.5-18.7 57.4-18.7 34.4 0 65.2 18.4 86.4 47.6l45.4-28.4c-20.9-29.9-55.6-49.5-94.8-49.5-38.9 0-73.4 19.4-94.4 49zM103.6 161.1c131.8-104.3 318.2-76.4 417.5 62.1l.7 1 48.8-30.4C517.1 112.1 424.8 58.1 319.9 58.1c-103.5 0-196.6 53.5-250.5 135.6 9.9-10.5 22.7-23.5 34.2-32.6zm467 32.7z\"]\n};\nvar faAutoprefixer = {\n prefix: 'fab',\n iconName: 'autoprefixer',\n icon: [640, 512, [], \"f41c\", \"M318.4 16l-161 480h77.5l25.4-81.4h119.5L405 496h77.5L318.4 16zm-40.3 341.9l41.2-130.4h1.5l40.9 130.4h-83.6zM640 405l-10-31.4L462.1 358l19.4 56.5L640 405zm-462.1-47L10 373.7 0 405l158.5 9.4 19.4-56.4z\"]\n};\nvar faAvianex = {\n prefix: 'fab',\n iconName: 'avianex',\n icon: [512, 512, [], \"f374\", \"M453.1 32h-312c-38.9 0-76.2 31.2-83.3 69.7L1.2 410.3C-5.9 448.8 19.9 480 58.9 480h312c38.9 0 76.2-31.2 83.3-69.7l56.7-308.5c7-38.6-18.8-69.8-57.8-69.8zm-58.2 347.3l-32 13.5-115.4-110c-14.7 10-29.2 19.5-41.7 27.1l22.1 64.2-17.9 12.7-40.6-61-52.4-48.1 15.7-15.4 58 31.1c9.3-10.5 20.8-22.6 32.8-34.9L203 228.9l-68.8-99.8 18.8-28.9 8.9-4.8L265 207.8l4.9 4.5c19.4-18.8 33.8-32.4 33.8-32.4 7.7-6.5 21.5-2.9 30.7 7.9 9 10.5 10.6 24.7 2.7 31.3-1.8 1.3-15.5 11.4-35.3 25.6l4.5 7.3 94.9 119.4-6.3 7.9z\"]\n};\nvar faAviato = {\n prefix: 'fab',\n iconName: 'aviato',\n icon: [640, 512, [], \"f421\", \"M107.2 283.5l-19-41.8H36.1l-19 41.8H0l62.2-131.4 62.2 131.4h-17.2zm-45-98.1l-19.6 42.5h39.2l-19.6-42.5zm112.7 102.4l-62.2-131.4h17.1l45.1 96 45.1-96h17l-62.1 131.4zm80.6-4.3V156.4H271v127.1h-15.5zm209.1-115.6v115.6h-17.3V167.9h-41.2v-11.5h99.6v11.5h-41.1zM640 218.8c0 9.2-1.7 17.8-5.1 25.8-3.4 8-8.2 15.1-14.2 21.1-6 6-13.1 10.8-21.1 14.2-8 3.4-16.6 5.1-25.8 5.1s-17.8-1.7-25.8-5.1c-8-3.4-15.1-8.2-21.1-14.2-6-6-10.8-13-14.2-21.1-3.4-8-5.1-16.6-5.1-25.8s1.7-17.8 5.1-25.8c3.4-8 8.2-15.1 14.2-21.1 6-6 13-8.4 21.1-11.9 8-3.4 16.6-5.1 25.8-5.1s17.8 1.7 25.8 5.1c8 3.4 15.1 5.8 21.1 11.9 6 6 10.7 13.1 14.2 21.1 3.4 8 5.1 16.6 5.1 25.8zm-15.5 0c0-7.3-1.3-14-3.9-20.3-2.6-6.3-6.2-11.7-10.8-16.3-4.6-4.6-10-8.2-16.2-10.9-6.2-2.7-12.8-4-19.8-4s-13.6 1.3-19.8 4c-6.2 2.7-11.6 6.3-16.2 10.9-4.6 4.6-8.2 10-10.8 16.3-2.6 6.3-3.9 13.1-3.9 20.3 0 7.3 1.3 14 3.9 20.3 2.6 6.3 6.2 11.7 10.8 16.3 4.6 4.6 10 8.2 16.2 10.9 6.2 2.7 12.8 4 19.8 4s13.6-1.3 19.8-4c6.2-2.7 11.6-6.3 16.2-10.9 4.6-4.6 8.2-10 10.8-16.3 2.6-6.3 3.9-13.1 3.9-20.3zm-94.8 96.7v-6.3l88.9-10-242.9 13.4c.6-2.2 1.1-4.6 1.4-7.2.3-2 .5-4.2.6-6.5l64.8-8.1-64.9 1.9c0-.4-.1-.7-.1-1.1-2.8-17.2-25.5-23.7-25.5-23.7l-1.1-26.3h23.8l19 41.8h17.1L348.6 152l-62.2 131.4h17.1l19-41.8h23.6L345 268s-22.7 6.5-25.5 23.7c-.1.3-.1.7-.1 1.1l-64.9-1.9 64.8 8.1c.1 2.3.3 4.4.6 6.5.3 2.6.8 5 1.4 7.2L78.4 299.2l88.9 10v6.3c-5.9.9-10.5 6-10.5 12.2 0 6.8 5.6 12.4 12.4 12.4 6.8 0 12.4-5.6 12.4-12.4 0-6.2-4.6-11.3-10.5-12.2v-5.8l80.3 9v5.4c-5.7 1.1-9.9 6.2-9.9 12.1 0 6.8 5.6 10.2 12.4 10.2 6.8 0 12.4-3.4 12.4-10.2 0-6-4.3-11-9.9-12.1v-4.9l28.4 3.2v23.7h-5.9V360h5.9v-6.6h5v6.6h5.9v-13.8h-5.9V323l38.3 4.3c8.1 11.4 19 13.6 19 13.6l-.1 6.7-5.1.2-.1 12.1h4.1l.1-5h5.2l.1 5h4.1l-.1-12.1-5.1-.2-.1-6.7s10.9-2.1 19-13.6l38.3-4.3v23.2h-5.9V360h5.9v-6.6h5v6.6h5.9v-13.8h-5.9v-23.7l28.4-3.2v4.9c-5.7 1.1-9.9 6.2-9.9 12.1 0 6.8 5.6 10.2 12.4 10.2 6.8 0 12.4-3.4 12.4-10.2 0-6-4.3-11-9.9-12.1v-5.4l80.3-9v5.8c-5.9.9-10.5 6-10.5 12.2 0 6.8 5.6 12.4 12.4 12.4 6.8 0 12.4-5.6 12.4-12.4-.2-6.3-4.7-11.4-10.7-12.3zm-200.8-87.6l19.6-42.5 19.6 42.5h-17.9l-1.7-40.3-1.7 40.3h-17.9z\"]\n};\nvar faAws = {\n prefix: 'fab',\n iconName: 'aws',\n icon: [640, 512, [], \"f375\", \"M180.41 203.01c-.72 22.65 10.6 32.68 10.88 39.05a8.164 8.164 0 0 1-4.1 6.27l-12.8 8.96a10.66 10.66 0 0 1-5.63 1.92c-.43-.02-8.19 1.83-20.48-25.61a78.608 78.608 0 0 1-62.61 29.45c-16.28.89-60.4-9.24-58.13-56.21-1.59-38.28 34.06-62.06 70.93-60.05 7.1.02 21.6.37 46.99 6.27v-15.62c2.69-26.46-14.7-46.99-44.81-43.91-2.4.01-19.4-.5-45.84 10.11-7.36 3.38-8.3 2.82-10.75 2.82-7.41 0-4.36-21.48-2.94-24.2 5.21-6.4 35.86-18.35 65.94-18.18a76.857 76.857 0 0 1 55.69 17.28 70.285 70.285 0 0 1 17.67 52.36l-.01 69.29zM93.99 235.4c32.43-.47 46.16-19.97 49.29-30.47 2.46-10.05 2.05-16.41 2.05-27.4-9.67-2.32-23.59-4.85-39.56-4.87-15.15-1.14-42.82 5.63-41.74 32.26-1.24 16.79 11.12 31.4 29.96 30.48zm170.92 23.05c-7.86.72-11.52-4.86-12.68-10.37l-49.8-164.65c-.97-2.78-1.61-5.65-1.92-8.58a4.61 4.61 0 0 1 3.86-5.25c.24-.04-2.13 0 22.25 0 8.78-.88 11.64 6.03 12.55 10.37l35.72 140.83 33.16-140.83c.53-3.22 2.94-11.07 12.8-10.24h17.16c2.17-.18 11.11-.5 12.68 10.37l33.42 142.63L420.98 80.1c.48-2.18 2.72-11.37 12.68-10.37h19.72c.85-.13 6.15-.81 5.25 8.58-.43 1.85 3.41-10.66-52.75 169.9-1.15 5.51-4.82 11.09-12.68 10.37h-18.69c-10.94 1.15-12.51-9.66-12.68-10.75L328.67 110.7l-32.78 136.99c-.16 1.09-1.73 11.9-12.68 10.75h-18.3zm273.48 5.63c-5.88.01-33.92-.3-57.36-12.29a12.802 12.802 0 0 1-7.81-11.91v-10.75c0-8.45 6.2-6.9 8.83-5.89 10.04 4.06 16.48 7.14 28.81 9.6 36.65 7.53 52.77-2.3 56.72-4.48 13.15-7.81 14.19-25.68 5.25-34.95-10.48-8.79-15.48-9.12-53.13-21-4.64-1.29-43.7-13.61-43.79-52.36-.61-28.24 25.05-56.18 69.52-55.95 12.67-.01 46.43 4.13 55.57 15.62 1.35 2.09 2.02 4.55 1.92 7.04v10.11c0 4.44-1.62 6.66-4.87 6.66-7.71-.86-21.39-11.17-49.16-10.75-6.89-.36-39.89.91-38.41 24.97-.43 18.96 26.61 26.07 29.7 26.89 36.46 10.97 48.65 12.79 63.12 29.58 17.14 22.25 7.9 48.3 4.35 55.44-19.08 37.49-68.42 34.44-69.26 34.42zm40.2 104.86c-70.03 51.72-171.69 79.25-258.49 79.25A469.127 469.127 0 0 1 2.83 327.46c-6.53-5.89-.77-13.96 7.17-9.47a637.37 637.37 0 0 0 316.88 84.12 630.22 630.22 0 0 0 241.59-49.55c11.78-5 21.77 7.8 10.12 16.38zm29.19-33.29c-8.96-11.52-59.28-5.38-81.81-2.69-6.79.77-7.94-5.12-1.79-9.47 40.07-28.17 105.88-20.1 113.44-10.63 7.55 9.47-2.05 75.41-39.56 106.91-5.76 4.87-11.27 2.3-8.71-4.1 8.44-21.25 27.39-68.49 18.43-80.02z\"]\n};\nvar faBandcamp = {\n prefix: 'fab',\n iconName: 'bandcamp',\n icon: [496, 512, [], \"f2d5\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm48.2 326.1h-181L199.9 178h181l-84.7 156.1z\"]\n};\nvar faBattleNet = {\n prefix: 'fab',\n iconName: 'battle-net',\n icon: [512, 512, [], \"f835\", \"M448.61 225.62c26.87.18 35.57-7.43 38.92-12.37 12.47-16.32-7.06-47.6-52.85-71.33 17.76-33.58 30.11-63.68 36.34-85.3 3.38-11.83 1.09-19 .45-20.25-1.72 10.52-15.85 48.46-48.2 100.05-25-11.22-56.52-20.1-93.77-23.8-8.94-16.94-34.88-63.86-60.48-88.93C252.18 7.14 238.7 1.07 228.18.22h-.05c-13.83-1.55-22.67 5.85-27.4 11-17.2 18.53-24.33 48.87-25 84.07-7.24-12.35-17.17-24.63-28.5-25.93h-.18c-20.66-3.48-38.39 29.22-36 81.29-38.36 1.38-71 5.75-93 11.23-9.9 2.45-16.22 7.27-17.76 9.72 1-.38 22.4-9.22 111.56-9.22 5.22 53 29.75 101.82 26 93.19-9.73 15.4-38.24 62.36-47.31 97.7-5.87 22.88-4.37 37.61.15 47.14 5.57 12.75 16.41 16.72 23.2 18.26 25 5.71 55.38-3.63 86.7-21.14-7.53 12.84-13.9 28.51-9.06 39.34 7.31 19.65 44.49 18.66 88.44-9.45 20.18 32.18 40.07 57.94 55.7 74.12a39.79 39.79 0 0 0 8.75 7.09c5.14 3.21 8.58 3.37 8.58 3.37-8.24-6.75-34-38-62.54-91.78 22.22-16 45.65-38.87 67.47-69.27 122.82 4.6 143.29-24.76 148-31.64 14.67-19.88 3.43-57.44-57.32-93.69zm-77.85 106.22c23.81-37.71 30.34-67.77 29.45-92.33 27.86 17.57 47.18 37.58 49.06 58.83 1.14 12.93-8.1 29.12-78.51 33.5zM216.9 387.69c9.76-6.23 19.53-13.12 29.2-20.49 6.68 13.33 13.6 26.1 20.6 38.19-40.6 21.86-68.84 12.76-49.8-17.7zm215-171.35c-10.29-5.34-21.16-10.34-32.38-15.05a722.459 722.459 0 0 0 22.74-36.9c39.06 24.1 45.9 53.18 9.64 51.95zM279.18 398c-5.51-11.35-11-23.5-16.5-36.44 43.25 1.27 62.42-18.73 63.28-20.41 0 .07-25 15.64-62.53 12.25a718.78 718.78 0 0 0 85.06-84q13.06-15.31 24.93-31.11c-.36-.29-1.54-3-16.51-12-51.7 60.27-102.34 98-132.75 115.92-20.59-11.18-40.84-31.78-55.71-61.49-20-39.92-30-82.39-31.57-116.07 12.3.91 25.27 2.17 38.85 3.88-22.29 36.8-14.39 63-13.47 64.23 0-.07-.95-29.17 20.14-59.57a695.23 695.23 0 0 0 44.67 152.84c.93-.38 1.84.88 18.67-8.25-26.33-74.47-33.76-138.17-34-173.43 20-12.42 48.18-19.8 81.63-17.81 44.57 2.67 86.36 15.25 116.32 30.71q-10.69 15.66-23.33 32.47C365.63 152 339.1 145.84 337.5 146c.11 0 25.9 14.07 41.52 47.22a717.63 717.63 0 0 0-115.34-31.71 646.608 646.608 0 0 0-39.39-6.05c-.07.45-1.81 1.85-2.16 20.33C300 190.28 358.78 215.68 389.36 233c.74 23.55-6.95 51.61-25.41 79.57-24.6 37.31-56.39 67.23-84.77 85.43zm27.4-287c-44.56-1.66-73.58 7.43-94.69 20.67 2-52.3 21.31-76.38 38.21-75.28C267 52.15 305 108.55 306.58 111zm-130.65 3.1c.48 12.11 1.59 24.62 3.21 37.28-14.55-.85-28.74-1.25-42.4-1.26-.08 3.24-.12-51 24.67-49.59h.09c5.76 1.09 10.63 6.88 14.43 13.57zm-28.06 162c20.76 39.7 43.3 60.57 65.25 72.31-46.79 24.76-77.53 20-84.92 4.51-.2-.21-11.13-15.3 19.67-76.81zm210.06 74.8\"]\n};\nvar faBehance = {\n prefix: 'fab',\n iconName: 'behance',\n icon: [576, 512, [], \"f1b4\", \"M232 237.2c31.8-15.2 48.4-38.2 48.4-74 0-70.6-52.6-87.8-113.3-87.8H0v354.4h171.8c64.4 0 124.9-30.9 124.9-102.9 0-44.5-21.1-77.4-64.7-89.7zM77.9 135.9H151c28.1 0 53.4 7.9 53.4 40.5 0 30.1-19.7 42.2-47.5 42.2h-79v-82.7zm83.3 233.7H77.9V272h84.9c34.3 0 56 14.3 56 50.6 0 35.8-25.9 47-57.6 47zm358.5-240.7H376V94h143.7v34.9zM576 305.2c0-75.9-44.4-139.2-124.9-139.2-78.2 0-131.3 58.8-131.3 135.8 0 79.9 50.3 134.7 131.3 134.7 61.3 0 101-27.6 120.1-86.3H509c-6.7 21.9-34.3 33.5-55.7 33.5-41.3 0-63-24.2-63-65.3h185.1c.3-4.2.6-8.7.6-13.2zM390.4 274c2.3-33.7 24.7-54.8 58.5-54.8 35.4 0 53.2 20.8 56.2 54.8H390.4z\"]\n};\nvar faBehanceSquare = {\n prefix: 'fab',\n iconName: 'behance-square',\n icon: [448, 512, [], \"f1b5\", \"M186.5 293c0 19.3-14 25.4-31.2 25.4h-45.1v-52.9h46c18.6.1 30.3 7.8 30.3 27.5zm-7.7-82.3c0-17.7-13.7-21.9-28.9-21.9h-39.6v44.8H153c15.1 0 25.8-6.6 25.8-22.9zm132.3 23.2c-18.3 0-30.5 11.4-31.7 29.7h62.2c-1.7-18.5-11.3-29.7-30.5-29.7zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zM271.7 185h77.8v-18.9h-77.8V185zm-43 110.3c0-24.1-11.4-44.9-35-51.6 17.2-8.2 26.2-17.7 26.2-37 0-38.2-28.5-47.5-61.4-47.5H68v192h93.1c34.9-.2 67.6-16.9 67.6-55.9zM380 280.5c0-41.1-24.1-75.4-67.6-75.4-42.4 0-71.1 31.8-71.1 73.6 0 43.3 27.3 73 71.1 73 33.2 0 54.7-14.9 65.1-46.8h-33.7c-3.7 11.9-18.6 18.1-30.2 18.1-22.4 0-34.1-13.1-34.1-35.3h100.2c.1-2.3.3-4.8.3-7.2z\"]\n};\nvar faBimobject = {\n prefix: 'fab',\n iconName: 'bimobject',\n icon: [448, 512, [], \"f378\", \"M416 32H32C14.4 32 0 46.4 0 64v384c0 17.6 14.4 32 32 32h384c17.6 0 32-14.4 32-32V64c0-17.6-14.4-32-32-32zm-64 257.4c0 49.4-11.4 82.6-103.8 82.6h-16.9c-44.1 0-62.4-14.9-70.4-38.8h-.9V368H96V136h64v74.7h1.1c4.6-30.5 39.7-38.8 69.7-38.8h17.3c92.4 0 103.8 33.1 103.8 82.5v35zm-64-28.9v22.9c0 21.7-3.4 33.8-38.4 33.8h-45.3c-28.9 0-44.1-6.5-44.1-35.7v-19c0-29.3 15.2-35.7 44.1-35.7h45.3c35-.2 38.4 12 38.4 33.7z\"]\n};\nvar faBitbucket = {\n prefix: 'fab',\n iconName: 'bitbucket',\n icon: [512, 512, [], \"f171\", \"M22.2 32A16 16 0 0 0 6 47.8a26.35 26.35 0 0 0 .2 2.8l67.9 412.1a21.77 21.77 0 0 0 21.3 18.2h325.7a16 16 0 0 0 16-13.4L505 50.7a16 16 0 0 0-13.2-18.3 24.58 24.58 0 0 0-2.8-.2L22.2 32zm285.9 297.8h-104l-28.1-147h157.3l-25.2 147z\"]\n};\nvar faBitcoin = {\n prefix: 'fab',\n iconName: 'bitcoin',\n icon: [512, 512, [], \"f379\", \"M504 256c0 136.967-111.033 248-248 248S8 392.967 8 256 119.033 8 256 8s248 111.033 248 248zm-141.651-35.33c4.937-32.999-20.191-50.739-54.55-62.573l11.146-44.702-27.213-6.781-10.851 43.524c-7.154-1.783-14.502-3.464-21.803-5.13l10.929-43.81-27.198-6.781-11.153 44.686c-5.922-1.349-11.735-2.682-17.377-4.084l.031-.14-37.53-9.37-7.239 29.062s20.191 4.627 19.765 4.913c11.022 2.751 13.014 10.044 12.68 15.825l-12.696 50.925c.76.194 1.744.473 2.829.907-.907-.225-1.876-.473-2.876-.713l-17.796 71.338c-1.349 3.348-4.767 8.37-12.471 6.464.271.395-19.78-4.937-19.78-4.937l-13.51 31.147 35.414 8.827c6.588 1.651 13.045 3.379 19.4 5.006l-11.262 45.213 27.182 6.781 11.153-44.733a1038.209 1038.209 0 0 0 21.687 5.627l-11.115 44.523 27.213 6.781 11.262-45.128c46.404 8.781 81.299 5.239 95.986-36.727 11.836-33.79-.589-53.281-25.004-65.991 17.78-4.098 31.174-15.792 34.747-39.949zm-62.177 87.179c-8.41 33.79-65.308 15.523-83.755 10.943l14.944-59.899c18.446 4.603 77.6 13.717 68.811 48.956zm8.417-87.667c-7.673 30.736-55.031 15.12-70.393 11.292l13.548-54.327c15.363 3.828 64.836 10.973 56.845 43.035z\"]\n};\nvar faBity = {\n prefix: 'fab',\n iconName: 'bity',\n icon: [496, 512, [], \"f37a\", \"M78.4 67.2C173.8-22 324.5-24 421.5 71c14.3 14.1-6.4 37.1-22.4 21.5-84.8-82.4-215.8-80.3-298.9-3.2-16.3 15.1-36.5-8.3-21.8-22.1zm98.9 418.6c19.3 5.7 29.3-23.6 7.9-30C73 421.9 9.4 306.1 37.7 194.8c5-19.6-24.9-28.1-30.2-7.1-32.1 127.4 41.1 259.8 169.8 298.1zm148.1-2c121.9-40.2 192.9-166.9 164.4-291-4.5-19.7-34.9-13.8-30 7.9 24.2 107.7-37.1 217.9-143.2 253.4-21.2 7-10.4 36 8.8 29.7zm-62.9-79l.2-71.8c0-8.2-6.6-14.8-14.8-14.8-8.2 0-14.8 6.7-14.8 14.8l-.2 71.8c0 8.2 6.6 14.8 14.8 14.8s14.8-6.6 14.8-14.8zm71-269c2.1 90.9 4.7 131.9-85.5 132.5-92.5-.7-86.9-44.3-85.5-132.5 0-21.8-32.5-19.6-32.5 0v71.6c0 69.3 60.7 90.9 118 90.1 57.3.8 118-20.8 118-90.1v-71.6c0-19.6-32.5-21.8-32.5 0z\"]\n};\nvar faBlackTie = {\n prefix: 'fab',\n iconName: 'black-tie',\n icon: [448, 512, [], \"f27e\", \"M0 32v448h448V32H0zm316.5 325.2L224 445.9l-92.5-88.7 64.5-184-64.5-86.6h184.9L252 173.2l64.5 184z\"]\n};\nvar faBlackberry = {\n prefix: 'fab',\n iconName: 'blackberry',\n icon: [512, 512, [], \"f37b\", \"M166 116.9c0 23.4-16.4 49.1-72.5 49.1H23.4l21-88.8h67.8c42.1 0 53.8 23.3 53.8 39.7zm126.2-39.7h-67.8L205.7 166h70.1c53.8 0 70.1-25.7 70.1-49.1.1-16.4-11.6-39.7-53.7-39.7zM88.8 208.1H21L0 296.9h70.1c56.1 0 72.5-23.4 72.5-49.1 0-16.3-11.7-39.7-53.8-39.7zm180.1 0h-67.8l-18.7 88.8h70.1c53.8 0 70.1-23.4 70.1-49.1 0-16.3-11.7-39.7-53.7-39.7zm189.3-53.8h-67.8l-18.7 88.8h70.1c53.8 0 70.1-23.4 70.1-49.1.1-16.3-11.6-39.7-53.7-39.7zm-28 137.9h-67.8L343.7 381h70.1c56.1 0 70.1-23.4 70.1-49.1 0-16.3-11.6-39.7-53.7-39.7zM240.8 346H173l-18.7 88.8h70.1c56.1 0 70.1-25.7 70.1-49.1.1-16.3-11.6-39.7-53.7-39.7z\"]\n};\nvar faBlogger = {\n prefix: 'fab',\n iconName: 'blogger',\n icon: [448, 512, [], \"f37c\", \"M162.4 196c4.8-4.9 6.2-5.1 36.4-5.1 27.2 0 28.1.1 32.1 2.1 5.8 2.9 8.3 7 8.3 13.6 0 5.9-2.4 10-7.6 13.4-2.8 1.8-4.5 1.9-31.1 2.1-16.4.1-29.5-.2-31.5-.8-10.3-2.9-14.1-17.7-6.6-25.3zm61.4 94.5c-53.9 0-55.8.2-60.2 4.1-3.5 3.1-5.7 9.4-5.1 13.9.7 4.7 4.8 10.1 9.2 12 2.2 1 14.1 1.7 56.3 1.2l47.9-.6 9.2-1.5c9-5.1 10.5-17.4 3.1-24.4-5.3-4.7-5-4.7-60.4-4.7zm223.4 130.1c-3.5 28.4-23 50.4-51.1 57.5-7.2 1.8-9.7 1.9-172.9 1.8-157.8 0-165.9-.1-172-1.8-8.4-2.2-15.6-5.5-22.3-10-5.6-3.8-13.9-11.8-17-16.4-3.8-5.6-8.2-15.3-10-22C.1 423 0 420.3 0 256.3 0 93.2 0 89.7 1.8 82.6 8.1 57.9 27.7 39 53 33.4c7.3-1.6 332.1-1.9 340-.3 21.2 4.3 37.9 17.1 47.6 36.4 7.7 15.3 7-1.5 7.3 180.6.2 115.8 0 164.5-.7 170.5zm-85.4-185.2c-1.1-5-4.2-9.6-7.7-11.5-1.1-.6-8-1.3-15.5-1.7-12.4-.6-13.8-.8-17.8-3.1-6.2-3.6-7.9-7.6-8-18.3 0-20.4-8.5-39.4-25.3-56.5-12-12.2-25.3-20.5-40.6-25.1-3.6-1.1-11.8-1.5-39.2-1.8-42.9-.5-52.5.4-67.1 6.2-27 10.7-46.3 33.4-53.4 62.4-1.3 5.4-1.6 14.2-1.9 64.3-.4 62.8 0 72.1 4 84.5 9.7 30.7 37.1 53.4 64.6 58.4 9.2 1.7 122.2 2.1 133.7.5 20.1-2.7 35.9-10.8 50.7-25.9 10.7-10.9 17.4-22.8 21.8-38.5 3.2-10.9 2.9-88.4 1.7-93.9z\"]\n};\nvar faBloggerB = {\n prefix: 'fab',\n iconName: 'blogger-b',\n icon: [448, 512, [], \"f37d\", \"M446.6 222.7c-1.8-8-6.8-15.4-12.5-18.5-1.8-1-13-2.2-25-2.7-20.1-.9-22.3-1.3-28.7-5-10.1-5.9-12.8-12.3-12.9-29.5-.1-33-13.8-63.7-40.9-91.3-19.3-19.7-40.9-33-65.5-40.5-5.9-1.8-19.1-2.4-63.3-2.9-69.4-.8-84.8.6-108.4 10C45.9 59.5 14.7 96.1 3.3 142.9 1.2 151.7.7 165.8.2 246.8c-.6 101.5.1 116.4 6.4 136.5 15.6 49.6 59.9 86.3 104.4 94.3 14.8 2.7 197.3 3.3 216 .8 32.5-4.4 58-17.5 81.9-41.9 17.3-17.7 28.1-36.8 35.2-62.1 4.9-17.6 4.5-142.8 2.5-151.7zm-322.1-63.6c7.8-7.9 10-8.2 58.8-8.2 43.9 0 45.4.1 51.8 3.4 9.3 4.7 13.4 11.3 13.4 21.9 0 9.5-3.8 16.2-12.3 21.6-4.6 2.9-7.3 3.1-50.3 3.3-26.5.2-47.7-.4-50.8-1.2-16.6-4.7-22.8-28.5-10.6-40.8zm191.8 199.8l-14.9 2.4-77.5.9c-68.1.8-87.3-.4-90.9-2-7.1-3.1-13.8-11.7-14.9-19.4-1.1-7.3 2.6-17.3 8.2-22.4 7.1-6.4 10.2-6.6 97.3-6.7 89.6-.1 89.1-.1 97.6 7.8 12.1 11.3 9.5 31.2-4.9 39.4z\"]\n};\nvar faBluetooth = {\n prefix: 'fab',\n iconName: 'bluetooth',\n icon: [448, 512, [], \"f293\", \"M292.6 171.1L249.7 214l-.3-86 43.2 43.1m-43.2 219.8l43.1-43.1-42.9-42.9-.2 86zM416 259.4C416 465 344.1 512 230.9 512S32 465 32 259.4 115.4 0 228.6 0 416 53.9 416 259.4zm-158.5 0l79.4-88.6L211.8 36.5v176.9L138 139.6l-27 26.9 92.7 93-92.7 93 26.9 26.9 73.8-73.8 2.3 170 127.4-127.5-83.9-88.7z\"]\n};\nvar faBluetoothB = {\n prefix: 'fab',\n iconName: 'bluetooth-b',\n icon: [320, 512, [], \"f294\", \"M196.48 260.023l92.626-103.333L143.125 0v206.33l-86.111-86.111-31.406 31.405 108.061 108.399L25.608 368.422l31.406 31.405 86.111-86.111L145.84 512l148.552-148.644-97.912-103.333zm40.86-102.996l-49.977 49.978-.338-100.295 50.315 50.317zM187.363 313.04l49.977 49.978-50.315 50.316.338-100.294z\"]\n};\nvar faBootstrap = {\n prefix: 'fab',\n iconName: 'bootstrap',\n icon: [448, 512, [], \"f836\", \"M292.3 311.93c0 42.41-39.72 41.43-43.92 41.43h-80.89v-81.69h80.89c42.56 0 43.92 31.9 43.92 40.26zm-50.15-73.13c.67 0 38.44 1 38.44-36.31 0-15.52-3.51-35.87-38.44-35.87h-74.66v72.18h74.66zM448 106.67v298.66A74.89 74.89 0 0 1 373.33 480H74.67A74.89 74.89 0 0 1 0 405.33V106.67A74.89 74.89 0 0 1 74.67 32h298.66A74.89 74.89 0 0 1 448 106.67zM338.05 317.86c0-21.57-6.65-58.29-49.05-67.35v-.73c22.91-9.78 37.34-28.25 37.34-55.64 0-7 2-64.78-77.6-64.78h-127v261.33c128.23 0 139.87 1.68 163.6-5.71 14.21-4.42 52.71-17.98 52.71-67.12z\"]\n};\nvar faBtc = {\n prefix: 'fab',\n iconName: 'btc',\n icon: [384, 512, [], \"f15a\", \"M310.204 242.638c27.73-14.18 45.377-39.39 41.28-81.3-5.358-57.351-52.458-76.573-114.85-81.929V0h-48.528v77.203c-12.605 0-25.525.315-38.444.63V0h-48.528v79.409c-17.842.539-38.622.276-97.37 0v51.678c38.314-.678 58.417-3.14 63.023 21.427v217.429c-2.925 19.492-18.524 16.685-53.255 16.071L3.765 443.68c88.481 0 97.37.315 97.37.315V512h48.528v-67.06c13.234.315 26.154.315 38.444.315V512h48.528v-68.005c81.299-4.412 135.647-24.894 142.895-101.467 5.671-61.446-23.32-88.862-69.326-99.89zM150.608 134.553c27.415 0 113.126-8.507 113.126 48.528 0 54.515-85.71 48.212-113.126 48.212v-96.74zm0 251.776V279.821c32.772 0 133.127-9.138 133.127 53.255-.001 60.186-100.355 53.253-133.127 53.253z\"]\n};\nvar faBuffer = {\n prefix: 'fab',\n iconName: 'buffer',\n icon: [448, 512, [], \"f837\", \"M427.84 380.67l-196.5 97.82a18.6 18.6 0 0 1-14.67 0L20.16 380.67c-4-2-4-5.28 0-7.29L67.22 350a18.65 18.65 0 0 1 14.69 0l134.76 67a18.51 18.51 0 0 0 14.67 0l134.76-67a18.62 18.62 0 0 1 14.68 0l47.06 23.43c4.05 1.96 4.05 5.24 0 7.24zm0-136.53l-47.06-23.43a18.62 18.62 0 0 0-14.68 0l-134.76 67.08a18.68 18.68 0 0 1-14.67 0L81.91 220.71a18.65 18.65 0 0 0-14.69 0l-47.06 23.43c-4 2-4 5.29 0 7.31l196.51 97.8a18.6 18.6 0 0 0 14.67 0l196.5-97.8c4.05-2.02 4.05-5.3 0-7.31zM20.16 130.42l196.5 90.29a20.08 20.08 0 0 0 14.67 0l196.51-90.29c4-1.86 4-4.89 0-6.74L231.33 33.4a19.88 19.88 0 0 0-14.67 0l-196.5 90.28c-4.05 1.85-4.05 4.88 0 6.74z\"]\n};\nvar faBuromobelexperte = {\n prefix: 'fab',\n iconName: 'buromobelexperte',\n icon: [448, 512, [], \"f37f\", \"M0 32v128h128V32H0zm120 120H8V40h112v112zm40-120v128h128V32H160zm120 120H168V40h112v112zm40-120v128h128V32H320zm120 120H328V40h112v112zM0 192v128h128V192H0zm120 120H8V200h112v112zm40-120v128h128V192H160zm120 120H168V200h112v112zm40-120v128h128V192H320zm120 120H328V200h112v112zM0 352v128h128V352H0zm120 120H8V360h112v112zm40-120v128h128V352H160zm120 120H168V360h112v112zm40-120v128h128V352H320z\"]\n};\nvar faBuyNLarge = {\n prefix: 'fab',\n iconName: 'buy-n-large',\n icon: [576, 512, [], \"f8a6\", \"M288 32C133.27 32 7.79 132.32 7.79 256S133.27 480 288 480s280.21-100.32 280.21-224S442.73 32 288 32zm-85.39 357.19L64.1 390.55l77.25-290.74h133.44c63.15 0 84.93 28.65 78 72.84a60.24 60.24 0 0 1-1.5 6.85 77.39 77.39 0 0 0-17.21-1.93c-42.35 0-76.69 33.88-76.69 75.65 0 37.14 27.14 68 62.93 74.45-18.24 37.16-56.16 60.92-117.71 61.52zM358 207.11h32l-22.16 90.31h-35.41l-11.19-35.63-7.83 35.63h-37.83l26.63-90.31h31.34l15 36.75zm145.86 182.08H306.79L322.63 328a78.8 78.8 0 0 0 11.47.83c42.34 0 76.69-33.87 76.69-75.65 0-32.65-21-60.46-50.38-71.06l21.33-82.35h92.5l-53.05 205.36h103.87zM211.7 269.39H187l-13.8 56.47h24.7c16.14 0 32.11-3.18 37.94-26.65 5.56-22.31-7.99-29.82-24.14-29.82zM233 170h-21.34L200 217.71h21.37c18 0 35.38-14.64 39.21-30.14C265.23 168.71 251.07 170 233 170z\"]\n};\nvar faBuysellads = {\n prefix: 'fab',\n iconName: 'buysellads',\n icon: [448, 512, [], \"f20d\", \"M224 150.7l42.9 160.7h-85.8L224 150.7zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-65.3 325.3l-94.5-298.7H159.8L65.3 405.3H156l111.7-91.6 24.2 91.6h90.8z\"]\n};\nvar faCanadianMapleLeaf = {\n prefix: 'fab',\n iconName: 'canadian-maple-leaf',\n icon: [512, 512, [], \"f785\", \"M383.8 351.7c2.5-2.5 105.2-92.4 105.2-92.4l-17.5-7.5c-10-4.9-7.4-11.5-5-17.4 2.4-7.6 20.1-67.3 20.1-67.3s-47.7 10-57.7 12.5c-7.5 2.4-10-2.5-12.5-7.5s-15-32.4-15-32.4-52.6 59.9-55.1 62.3c-10 7.5-20.1 0-17.6-10 0-10 27.6-129.6 27.6-129.6s-30.1 17.4-40.1 22.4c-7.5 5-12.6 5-17.6-5C293.5 72.3 255.9 0 255.9 0s-37.5 72.3-42.5 79.8c-5 10-10 10-17.6 5-10-5-40.1-22.4-40.1-22.4S183.3 182 183.3 192c2.5 10-7.5 17.5-17.6 10-2.5-2.5-55.1-62.3-55.1-62.3S98.1 167 95.6 172s-5 9.9-12.5 7.5C73 177 25.4 167 25.4 167s17.6 59.7 20.1 67.3c2.4 6 5 12.5-5 17.4L23 259.3s102.6 89.9 105.2 92.4c5.1 5 10 7.5 5.1 22.5-5.1 15-10.1 35.1-10.1 35.1s95.2-20.1 105.3-22.6c8.7-.9 18.3 2.5 18.3 12.5S241 512 241 512h30s-5.8-102.7-5.8-112.8 9.5-13.4 18.4-12.5c10 2.5 105.2 22.6 105.2 22.6s-5-20.1-10-35.1 0-17.5 5-22.5z\"]\n};\nvar faCcAmazonPay = {\n prefix: 'fab',\n iconName: 'cc-amazon-pay',\n icon: [576, 512, [], \"f42d\", \"M124.7 201.8c.1-11.8 0-23.5 0-35.3v-35.3c0-1.3.4-2 1.4-2.7 11.5-8 24.1-12.1 38.2-11.1 12.5.9 22.7 7 28.1 21.7 3.3 8.9 4.1 18.2 4.1 27.7 0 8.7-.7 17.3-3.4 25.6-5.7 17.8-18.7 24.7-35.7 23.9-11.7-.5-21.9-5-31.4-11.7-.9-.8-1.4-1.6-1.3-2.8zm154.9 14.6c4.6 1.8 9.3 2 14.1 1.5 11.6-1.2 21.9-5.7 31.3-12.5.9-.6 1.3-1.3 1.3-2.5-.1-3.9 0-7.9 0-11.8 0-4-.1-8 0-12 0-1.4-.4-2-1.8-2.2-7-.9-13.9-2.2-20.9-2.9-7-.6-14-.3-20.8 1.9-6.7 2.2-11.7 6.2-13.7 13.1-1.6 5.4-1.6 10.8.1 16.2 1.6 5.5 5.2 9.2 10.4 11.2zM576 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zm-207.5 23.9c.4 1.7.9 3.4 1.6 5.1 16.5 40.6 32.9 81.3 49.5 121.9 1.4 3.5 1.7 6.4.2 9.9-2.8 6.2-4.9 12.6-7.8 18.7-2.6 5.5-6.7 9.5-12.7 11.2-4.2 1.1-8.5 1.3-12.9.9-2.1-.2-4.2-.7-6.3-.8-2.8-.2-4.2 1.1-4.3 4-.1 2.8-.1 5.6 0 8.3.1 4.6 1.6 6.7 6.2 7.5 4.7.8 9.4 1.6 14.2 1.7 14.3.3 25.7-5.4 33.1-17.9 2.9-4.9 5.6-10.1 7.7-15.4 19.8-50.1 39.5-100.3 59.2-150.5.6-1.5 1.1-3 1.3-4.6.4-2.4-.7-3.6-3.1-3.7-5.6-.1-11.1 0-16.7 0-3.1 0-5.3 1.4-6.4 4.3-.4 1.1-.9 2.3-1.3 3.4l-29.1 83.7c-2.1 6.1-4.2 12.1-6.5 18.6-.4-.9-.6-1.4-.8-1.9-10.8-29.9-21.6-59.9-32.4-89.8-1.7-4.7-3.5-9.5-5.3-14.2-.9-2.5-2.7-4-5.4-4-6.4-.1-12.8-.2-19.2-.1-2.2 0-3.3 1.6-2.8 3.7zM242.4 206c1.7 11.7 7.6 20.8 18 26.6 9.9 5.5 20.7 6.2 31.7 4.6 12.7-1.9 23.9-7.3 33.8-15.5.4-.3.8-.6 1.4-1 .5 3.2.9 6.2 1.5 9.2.5 2.6 2.1 4.3 4.5 4.4 4.6.1 9.1.1 13.7 0 2.3-.1 3.8-1.6 4-3.9.1-.8.1-1.6.1-2.3v-88.8c0-3.6-.2-7.2-.7-10.8-1.6-10.8-6.2-19.7-15.9-25.4-5.6-3.3-11.8-5-18.2-5.9-3-.4-6-.7-9.1-1.1h-10c-.8.1-1.6.3-2.5.3-8.2.4-16.3 1.4-24.2 3.5-5.1 1.3-10 3.2-15 4.9-3 1-4.5 3.2-4.4 6.5.1 2.8-.1 5.6 0 8.3.1 4.1 1.8 5.2 5.7 4.1 6.5-1.7 13.1-3.5 19.7-4.8 10.3-1.9 20.7-2.7 31.1-1.2 5.4.8 10.5 2.4 14.1 7 3.1 4 4.2 8.8 4.4 13.7.3 6.9.2 13.9.3 20.8 0 .4-.1.7-.2 1.2-.4 0-.8 0-1.1-.1-8.8-2.1-17.7-3.6-26.8-4.1-9.5-.5-18.9.1-27.9 3.2-10.8 3.8-19.5 10.3-24.6 20.8-4.1 8.3-4.6 17-3.4 25.8zM98.7 106.9v175.3c0 .8 0 1.7.1 2.5.2 2.5 1.7 4.1 4.1 4.2 5.9.1 11.8.1 17.7 0 2.5 0 4-1.7 4.1-4.1.1-.8.1-1.7.1-2.5v-60.7c.9.7 1.4 1.2 1.9 1.6 15 12.5 32.2 16.6 51.1 12.9 17.1-3.4 28.9-13.9 36.7-29.2 5.8-11.6 8.3-24.1 8.7-37 .5-14.3-1-28.4-6.8-41.7-7.1-16.4-18.9-27.3-36.7-30.9-2.7-.6-5.5-.8-8.2-1.2h-7c-1.2.2-2.4.3-3.6.5-11.7 1.4-22.3 5.8-31.8 12.7-2 1.4-3.9 3-5.9 4.5-.1-.5-.3-.8-.4-1.2-.4-2.3-.7-4.6-1.1-6.9-.6-3.9-2.5-5.5-6.4-5.6h-9.7c-5.9-.1-6.9 1-6.9 6.8zM493.6 339c-2.7-.7-5.1 0-7.6 1-43.9 18.4-89.5 30.2-136.8 35.8-14.5 1.7-29.1 2.8-43.7 3.2-26.6.7-53.2-.8-79.6-4.3-17.8-2.4-35.5-5.7-53-9.9-37-8.9-72.7-21.7-106.7-38.8-8.8-4.4-17.4-9.3-26.1-14-3.8-2.1-6.2-1.5-8.2 2.1v1.7c1.2 1.6 2.2 3.4 3.7 4.8 36 32.2 76.6 56.5 122 72.9 21.9 7.9 44.4 13.7 67.3 17.5 14 2.3 28 3.8 42.2 4.5 3 .1 6 .2 9 .4.7 0 1.4.2 2.1.3h17.7c.7-.1 1.4-.3 2.1-.3 14.9-.4 29.8-1.8 44.6-4 21.4-3.2 42.4-8.1 62.9-14.7 29.6-9.6 57.7-22.4 83.4-40.1 2.8-1.9 5.7-3.8 8-6.2 4.3-4.4 2.3-10.4-3.3-11.9zm50.4-27.7c-.8-4.2-4-5.8-7.6-7-5.7-1.9-11.6-2.8-17.6-3.3-11-.9-22-.4-32.8 1.6-12 2.2-23.4 6.1-33.5 13.1-1.2.8-2.4 1.8-3.1 3-.6.9-.7 2.3-.5 3.4.3 1.3 1.7 1.6 3 1.5.6 0 1.2 0 1.8-.1l19.5-2.1c9.6-.9 19.2-1.5 28.8-.8 4.1.3 8.1 1.2 12 2.2 4.3 1.1 6.2 4.4 6.4 8.7.3 6.7-1.2 13.1-2.9 19.5-3.5 12.9-8.3 25.4-13.3 37.8-.3.8-.7 1.7-.8 2.5-.4 2.5 1 4 3.4 3.5 1.4-.3 3-1.1 4-2.1 3.7-3.6 7.5-7.2 10.6-11.2 10.7-13.8 17-29.6 20.7-46.6.7-3 1.2-6.1 1.7-9.1.2-4.7.2-9.6.2-14.5z\"]\n};\nvar faCcAmex = {\n prefix: 'fab',\n iconName: 'cc-amex',\n icon: [576, 512, [], \"f1f3\", \"M325.1 167.8c0-16.4-14.1-18.4-27.4-18.4l-39.1-.3v69.3H275v-25.1h18c18.4 0 14.5 10.3 14.8 25.1h16.6v-13.5c0-9.2-1.5-15.1-11-18.4 7.4-3 11.8-10.7 11.7-18.7zm-29.4 11.3H275v-15.3h21c5.1 0 10.7 1 10.7 7.4 0 6.6-5.3 7.9-11 7.9zM279 268.6h-52.7l-21 22.8-20.5-22.8h-66.5l-.1 69.3h65.4l21.3-23 20.4 23h32.2l.1-23.3c18.9 0 49.3 4.6 49.3-23.3 0-17.3-12.3-22.7-27.9-22.7zm-103.8 54.7h-40.6v-13.8h36.3v-14.1h-36.3v-12.5h41.7l17.9 20.2zm65.8 8.2l-25.3-28.1L241 276zm37.8-31h-21.2v-17.6h21.5c5.6 0 10.2 2.3 10.2 8.4 0 6.4-4.6 9.2-10.5 9.2zm-31.6-136.7v-14.6h-55.5v69.3h55.5v-14.3h-38.9v-13.8h37.8v-14.1h-37.8v-12.5zM576 255.4h-.2zm-194.6 31.9c0-16.4-14.1-18.7-27.1-18.7h-39.4l-.1 69.3h16.6l.1-25.3h17.6c11 0 14.8 2 14.8 13.8l-.1 11.5h16.6l.1-13.8c0-8.9-1.8-15.1-11-18.4 7.7-3.1 11.8-10.8 11.9-18.4zm-29.2 11.2h-20.7v-15.6h21c5.1 0 10.7 1 10.7 7.4 0 6.9-5.4 8.2-11 8.2zm-172.8-80v-69.3h-27.6l-19.7 47-21.7-47H83.3v65.7l-28.1-65.7H30.7L1 218.5h17.9l6.4-15.3h34.5l6.4 15.3H100v-54.2l24 54.2h14.6l24-54.2v54.2zM31.2 188.8l11.2-27.6 11.5 27.6zm477.4 158.9v-4.5c-10.8 5.6-3.9 4.5-156.7 4.5 0-25.2.1-23.9 0-25.2-1.7-.1-3.2-.1-9.4-.1 0 17.9-.1 6.8-.1 25.3h-39.6c0-12.1.1-15.3.1-29.2-10 6-22.8 6.4-34.3 6.2 0 14.7-.1 8.3-.1 23h-48.9c-5.1-5.7-2.7-3.1-15.4-17.4-3.2 3.5-12.8 13.9-16.1 17.4h-82v-92.3h83.1c5 5.6 2.8 3.1 15.5 17.2 3.2-3.5 12.2-13.4 15.7-17.2h58c9.8 0 18 1.9 24.3 5.6v-5.6c54.3 0 64.3-1.4 75.7 5.1v-5.1h78.2v5.2c11.4-6.9 19.6-5.2 64.9-5.2v5c10.3-5.9 16.6-5.2 54.3-5V80c0-26.5-21.5-48-48-48h-480c-26.5 0-48 21.5-48 48v109.8c9.4-21.9 19.7-46 23.1-53.9h39.7c4.3 10.1 1.6 3.7 9 21.1v-21.1h46c2.9 6.2 11.1 24 13.9 30 5.8-13.6 10.1-23.9 12.6-30h103c0-.1 11.5 0 11.6 0 43.7.2 53.6-.8 64.4 5.3v-5.3H363v9.3c7.6-6.1 17.9-9.3 30.7-9.3h27.6c0 .5 1.9.3 2.3.3H456c4.2 9.8 2.6 6 8.8 20.6v-20.6h43.3c4.9 8-1-1.8 11.2 18.4v-18.4h39.9v92h-41.6c-5.4-9-1.4-2.2-13.2-21.9v21.9h-52.8c-6.4-14.8-.1-.3-6.6-15.3h-19c-4.2 10-2.2 5.2-6.4 15.3h-26.8c-12.3 0-22.3-3-29.7-8.9v8.9h-66.5c-.3-13.9-.1-24.8-.1-24.8-1.8-.3-3.4-.2-9.8-.2v25.1H151.2v-11.4c-2.5 5.6-2.7 5.9-5.1 11.4h-29.5c-4-8.9-2.9-6.4-5.1-11.4v11.4H58.6c-4.2-10.1-2.2-5.3-6.4-15.3H33c-4.2 10-2.2 5.2-6.4 15.3H0V432c0 26.5 21.5 48 48 48h480.1c26.5 0 48-21.5 48-48v-90.4c-12.7 8.3-32.7 6.1-67.5 6.1zm36.3-64.5H575v-14.6h-32.9c-12.8 0-23.8 6.6-23.8 20.7 0 33 42.7 12.8 42.7 27.4 0 5.1-4.3 6.4-8.4 6.4h-32l-.1 14.8h32c8.4 0 17.6-1.8 22.5-8.9v-25.8c-10.5-13.8-39.3-1.3-39.3-13.5 0-5.8 4.6-6.5 9.2-6.5zm-57 39.8h-32.2l-.1 14.8h32.2c14.8 0 26.2-5.6 26.2-22 0-33.2-42.9-11.2-42.9-26.3 0-5.6 4.9-6.4 9.2-6.4h30.4v-14.6h-33.2c-12.8 0-23.5 6.6-23.5 20.7 0 33 42.7 12.5 42.7 27.4-.1 5.4-4.7 6.4-8.8 6.4zm-42.2-40.1v-14.3h-55.2l-.1 69.3h55.2l.1-14.3-38.6-.3v-13.8H445v-14.1h-37.8v-12.5zm-56.3-108.1c-.3.2-1.4 2.2-1.4 7.6 0 6 .9 7.7 1.1 7.9.2.1 1.1.5 3.4.5l7.3-16.9c-1.1 0-2.1-.1-3.1-.1-5.6 0-7 .7-7.3 1zm20.4-10.5h-.1zm-16.2-15.2c-23.5 0-34 12-34 35.3 0 22.2 10.2 34 33 34h19.2l6.4-15.3h34.3l6.6 15.3h33.7v-51.9l31.2 51.9h23.6v-69h-16.9v48.1l-29.1-48.1h-25.3v65.4l-27.9-65.4h-24.8l-23.5 54.5h-7.4c-13.3 0-16.1-8.1-16.1-19.9 0-23.8 15.7-20 33.1-19.7v-15.2zm42.1 12.1l11.2 27.6h-22.8zm-101.1-12v69.3h16.9v-69.3z\"]\n};\nvar faCcApplePay = {\n prefix: 'fab',\n iconName: 'cc-apple-pay',\n icon: [576, 512, [], \"f416\", \"M302.2 218.4c0 17.2-10.5 27.1-29 27.1h-24.3v-54.2h24.4c18.4 0 28.9 9.8 28.9 27.1zm47.5 62.6c0 8.3 7.2 13.7 18.5 13.7 14.4 0 25.2-9.1 25.2-21.9v-7.7l-23.5 1.5c-13.3.9-20.2 5.8-20.2 14.4zM576 79v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V79c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM127.8 197.2c8.4.7 16.8-4.2 22.1-10.4 5.2-6.4 8.6-15 7.7-23.7-7.4.3-16.6 4.9-21.9 11.3-4.8 5.5-8.9 14.4-7.9 22.8zm60.6 74.5c-.2-.2-19.6-7.6-19.8-30-.2-18.7 15.3-27.7 16-28.2-8.8-13-22.4-14.4-27.1-14.7-12.2-.7-22.6 6.9-28.4 6.9-5.9 0-14.7-6.6-24.3-6.4-12.5.2-24.2 7.3-30.5 18.6-13.1 22.6-3.4 56 9.3 74.4 6.2 9.1 13.7 19.1 23.5 18.7 9.3-.4 13-6 24.2-6 11.3 0 14.5 6 24.3 5.9 10.2-.2 16.5-9.1 22.8-18.2 6.9-10.4 9.8-20.4 10-21zm135.4-53.4c0-26.6-18.5-44.8-44.9-44.8h-51.2v136.4h21.2v-46.6h29.3c26.8 0 45.6-18.4 45.6-45zm90 23.7c0-19.7-15.8-32.4-40-32.4-22.5 0-39.1 12.9-39.7 30.5h19.1c1.6-8.4 9.4-13.9 20-13.9 13 0 20.2 6 20.2 17.2v7.5l-26.4 1.6c-24.6 1.5-37.9 11.6-37.9 29.1 0 17.7 13.7 29.4 33.4 29.4 13.3 0 25.6-6.7 31.2-17.4h.4V310h19.6v-68zM516 210.9h-21.5l-24.9 80.6h-.4l-24.9-80.6H422l35.9 99.3-1.9 6c-3.2 10.2-8.5 14.2-17.9 14.2-1.7 0-4.9-.2-6.2-.3v16.4c1.2.4 6.5.5 8.1.5 20.7 0 30.4-7.9 38.9-31.8L516 210.9z\"]\n};\nvar faCcDinersClub = {\n prefix: 'fab',\n iconName: 'cc-diners-club',\n icon: [576, 512, [], \"f24c\", \"M239.7 79.9c-96.9 0-175.8 78.6-175.8 175.8 0 96.9 78.9 175.8 175.8 175.8 97.2 0 175.8-78.9 175.8-175.8 0-97.2-78.6-175.8-175.8-175.8zm-39.9 279.6c-41.7-15.9-71.4-56.4-71.4-103.8s29.7-87.9 71.4-104.1v207.9zm79.8.3V151.6c41.7 16.2 71.4 56.7 71.4 104.1s-29.7 87.9-71.4 104.1zM528 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM329.7 448h-90.3c-106.2 0-193.8-85.5-193.8-190.2C45.6 143.2 133.2 64 239.4 64h90.3c105 0 200.7 79.2 200.7 193.8 0 104.7-95.7 190.2-200.7 190.2z\"]\n};\nvar faCcDiscover = {\n prefix: 'fab',\n iconName: 'cc-discover',\n icon: [576, 512, [], \"f1f2\", \"M520.4 196.1c0-7.9-5.5-12.1-15.6-12.1h-4.9v24.9h4.7c10.3 0 15.8-4.4 15.8-12.8zM528 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-44.1 138.9c22.6 0 52.9-4.1 52.9 24.4 0 12.6-6.6 20.7-18.7 23.2l25.8 34.4h-19.6l-22.2-32.8h-2.2v32.8h-16zm-55.9.1h45.3v14H444v18.2h28.3V217H444v22.2h29.3V253H428zm-68.7 0l21.9 55.2 22.2-55.2h17.5l-35.5 84.2h-8.6l-35-84.2zm-55.9-3c24.7 0 44.6 20 44.6 44.6 0 24.7-20 44.6-44.6 44.6-24.7 0-44.6-20-44.6-44.6 0-24.7 20-44.6 44.6-44.6zm-49.3 6.1v19c-20.1-20.1-46.8-4.7-46.8 19 0 25 27.5 38.5 46.8 19.2v19c-29.7 14.3-63.3-5.7-63.3-38.2 0-31.2 33.1-53 63.3-38zm-97.2 66.3c11.4 0 22.4-15.3-3.3-24.4-15-5.5-20.2-11.4-20.2-22.7 0-23.2 30.6-31.4 49.7-14.3l-8.4 10.8c-10.4-11.6-24.9-6.2-24.9 2.5 0 4.4 2.7 6.9 12.3 10.3 18.2 6.6 23.6 12.5 23.6 25.6 0 29.5-38.8 37.4-56.6 11.3l10.3-9.9c3.7 7.1 9.9 10.8 17.5 10.8zM55.4 253H32v-82h23.4c26.1 0 44.1 17 44.1 41.1 0 18.5-13.2 40.9-44.1 40.9zm67.5 0h-16v-82h16zM544 433c0 8.2-6.8 15-15 15H128c189.6-35.6 382.7-139.2 416-160zM74.1 191.6c-5.2-4.9-11.6-6.6-21.9-6.6H48v54.2h4.2c10.3 0 17-2 21.9-6.4 5.7-5.2 8.9-12.8 8.9-20.7s-3.2-15.5-8.9-20.5z\"]\n};\nvar faCcJcb = {\n prefix: 'fab',\n iconName: 'cc-jcb',\n icon: [576, 512, [], \"f24b\", \"M431.5 244.3V212c41.2 0 38.5.2 38.5.2 7.3 1.3 13.3 7.3 13.3 16 0 8.8-6 14.5-13.3 15.8-1.2.4-3.3.3-38.5.3zm42.8 20.2c-2.8-.7-3.3-.5-42.8-.5v35c39.6 0 40 .2 42.8-.5 7.5-1.5 13.5-8 13.5-17 0-8.7-6-15.5-13.5-17zM576 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM182 192.3h-57c0 67.1 10.7 109.7-35.8 109.7-19.5 0-38.8-5.7-57.2-14.8v28c30 8.3 68 8.3 68 8.3 97.9 0 82-47.7 82-131.2zm178.5 4.5c-63.4-16-165-14.9-165 59.3 0 77.1 108.2 73.6 165 59.2V287C312.9 311.7 253 309 253 256s59.8-55.6 107.5-31.2v-28zM544 286.5c0-18.5-16.5-30.5-38-32v-.8c19.5-2.7 30.3-15.5 30.3-30.2 0-19-15.7-30-37-31 0 0 6.3-.3-120.3-.3v127.5h122.7c24.3.1 42.3-12.9 42.3-33.2z\"]\n};\nvar faCcMastercard = {\n prefix: 'fab',\n iconName: 'cc-mastercard',\n icon: [576, 512, [], \"f1f1\", \"M482.9 410.3c0 6.8-4.6 11.7-11.2 11.7-6.8 0-11.2-5.2-11.2-11.7 0-6.5 4.4-11.7 11.2-11.7 6.6 0 11.2 5.2 11.2 11.7zm-310.8-11.7c-7.1 0-11.2 5.2-11.2 11.7 0 6.5 4.1 11.7 11.2 11.7 6.5 0 10.9-4.9 10.9-11.7-.1-6.5-4.4-11.7-10.9-11.7zm117.5-.3c-5.4 0-8.7 3.5-9.5 8.7h19.1c-.9-5.7-4.4-8.7-9.6-8.7zm107.8.3c-6.8 0-10.9 5.2-10.9 11.7 0 6.5 4.1 11.7 10.9 11.7 6.8 0 11.2-4.9 11.2-11.7 0-6.5-4.4-11.7-11.2-11.7zm105.9 26.1c0 .3.3.5.3 1.1 0 .3-.3.5-.3 1.1-.3.3-.3.5-.5.8-.3.3-.5.5-1.1.5-.3.3-.5.3-1.1.3-.3 0-.5 0-1.1-.3-.3 0-.5-.3-.8-.5-.3-.3-.5-.5-.5-.8-.3-.5-.3-.8-.3-1.1 0-.5 0-.8.3-1.1 0-.5.3-.8.5-1.1.3-.3.5-.3.8-.5.5-.3.8-.3 1.1-.3.5 0 .8 0 1.1.3.5.3.8.3 1.1.5s.2.6.5 1.1zm-2.2 1.4c.5 0 .5-.3.8-.3.3-.3.3-.5.3-.8 0-.3 0-.5-.3-.8-.3 0-.5-.3-1.1-.3h-1.6v3.5h.8V426h.3l1.1 1.4h.8l-1.1-1.3zM576 81v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V81c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM64 220.6c0 76.5 62.1 138.5 138.5 138.5 27.2 0 53.9-8.2 76.5-23.1-72.9-59.3-72.4-171.2 0-230.5-22.6-15-49.3-23.1-76.5-23.1-76.4-.1-138.5 62-138.5 138.2zm224 108.8c70.5-55 70.2-162.2 0-217.5-70.2 55.3-70.5 162.6 0 217.5zm-142.3 76.3c0-8.7-5.7-14.4-14.7-14.7-4.6 0-9.5 1.4-12.8 6.5-2.4-4.1-6.5-6.5-12.2-6.5-3.8 0-7.6 1.4-10.6 5.4V392h-8.2v36.7h8.2c0-18.9-2.5-30.2 9-30.2 10.2 0 8.2 10.2 8.2 30.2h7.9c0-18.3-2.5-30.2 9-30.2 10.2 0 8.2 10 8.2 30.2h8.2v-23zm44.9-13.7h-7.9v4.4c-2.7-3.3-6.5-5.4-11.7-5.4-10.3 0-18.2 8.2-18.2 19.3 0 11.2 7.9 19.3 18.2 19.3 5.2 0 9-1.9 11.7-5.4v4.6h7.9V392zm40.5 25.6c0-15-22.9-8.2-22.9-15.2 0-5.7 11.9-4.8 18.5-1.1l3.3-6.5c-9.4-6.1-30.2-6-30.2 8.2 0 14.3 22.9 8.3 22.9 15 0 6.3-13.5 5.8-20.7.8l-3.5 6.3c11.2 7.6 32.6 6 32.6-7.5zm35.4 9.3l-2.2-6.8c-3.8 2.1-12.2 4.4-12.2-4.1v-16.6h13.1V392h-13.1v-11.2h-8.2V392h-7.6v7.3h7.6V416c0 17.6 17.3 14.4 22.6 10.9zm13.3-13.4h27.5c0-16.2-7.4-22.6-17.4-22.6-10.6 0-18.2 7.9-18.2 19.3 0 20.5 22.6 23.9 33.8 14.2l-3.8-6c-7.8 6.4-19.6 5.8-21.9-4.9zm59.1-21.5c-4.6-2-11.6-1.8-15.2 4.4V392h-8.2v36.7h8.2V408c0-11.6 9.5-10.1 12.8-8.4l2.4-7.6zm10.6 18.3c0-11.4 11.6-15.1 20.7-8.4l3.8-6.5c-11.6-9.1-32.7-4.1-32.7 15 0 19.8 22.4 23.8 32.7 15l-3.8-6.5c-9.2 6.5-20.7 2.6-20.7-8.6zm66.7-18.3H408v4.4c-8.3-11-29.9-4.8-29.9 13.9 0 19.2 22.4 24.7 29.9 13.9v4.6h8.2V392zm33.7 0c-2.4-1.2-11-2.9-15.2 4.4V392h-7.9v36.7h7.9V408c0-11 9-10.3 12.8-8.4l2.4-7.6zm40.3-14.9h-7.9v19.3c-8.2-10.9-29.9-5.1-29.9 13.9 0 19.4 22.5 24.6 29.9 13.9v4.6h7.9v-51.7zm7.6-75.1v4.6h.8V302h1.9v-.8h-4.6v.8h1.9zm6.6 123.8c0-.5 0-1.1-.3-1.6-.3-.3-.5-.8-.8-1.1-.3-.3-.8-.5-1.1-.8-.5 0-1.1-.3-1.6-.3-.3 0-.8.3-1.4.3-.5.3-.8.5-1.1.8-.5.3-.8.8-.8 1.1-.3.5-.3 1.1-.3 1.6 0 .3 0 .8.3 1.4 0 .3.3.8.8 1.1.3.3.5.5 1.1.8.5.3 1.1.3 1.4.3.5 0 1.1 0 1.6-.3.3-.3.8-.5 1.1-.8.3-.3.5-.8.8-1.1.3-.6.3-1.1.3-1.4zm3.2-124.7h-1.4l-1.6 3.5-1.6-3.5h-1.4v5.4h.8v-4.1l1.6 3.5h1.1l1.4-3.5v4.1h1.1v-5.4zm4.4-80.5c0-76.2-62.1-138.3-138.5-138.3-27.2 0-53.9 8.2-76.5 23.1 72.1 59.3 73.2 171.5 0 230.5 22.6 15 49.5 23.1 76.5 23.1 76.4.1 138.5-61.9 138.5-138.4z\"]\n};\nvar faCcPaypal = {\n prefix: 'fab',\n iconName: 'cc-paypal',\n icon: [576, 512, [], \"f1f4\", \"M186.3 258.2c0 12.2-9.7 21.5-22 21.5-9.2 0-16-5.2-16-15 0-12.2 9.5-22 21.7-22 9.3 0 16.3 5.7 16.3 15.5zM80.5 209.7h-4.7c-1.5 0-3 1-3.2 2.7l-4.3 26.7 8.2-.3c11 0 19.5-1.5 21.5-14.2 2.3-13.4-6.2-14.9-17.5-14.9zm284 0H360c-1.8 0-3 1-3.2 2.7l-4.2 26.7 8-.3c13 0 22-3 22-18-.1-10.6-9.6-11.1-18.1-11.1zM576 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM128.3 215.4c0-21-16.2-28-34.7-28h-40c-2.5 0-5 2-5.2 4.7L32 294.2c-.3 2 1.2 4 3.2 4h19c2.7 0 5.2-2.9 5.5-5.7l4.5-26.6c1-7.2 13.2-4.7 18-4.7 28.6 0 46.1-17 46.1-45.8zm84.2 8.8h-19c-3.8 0-4 5.5-4.2 8.2-5.8-8.5-14.2-10-23.7-10-24.5 0-43.2 21.5-43.2 45.2 0 19.5 12.2 32.2 31.7 32.2 9 0 20.2-4.9 26.5-11.9-.5 1.5-1 4.7-1 6.2 0 2.3 1 4 3.2 4H200c2.7 0 5-2.9 5.5-5.7l10.2-64.3c.3-1.9-1.2-3.9-3.2-3.9zm40.5 97.9l63.7-92.6c.5-.5.5-1 .5-1.7 0-1.7-1.5-3.5-3.2-3.5h-19.2c-1.7 0-3.5 1-4.5 2.5l-26.5 39-11-37.5c-.8-2.2-3-4-5.5-4h-18.7c-1.7 0-3.2 1.8-3.2 3.5 0 1.2 19.5 56.8 21.2 62.1-2.7 3.8-20.5 28.6-20.5 31.6 0 1.8 1.5 3.2 3.2 3.2h19.2c1.8-.1 3.5-1.1 4.5-2.6zm159.3-106.7c0-21-16.2-28-34.7-28h-39.7c-2.7 0-5.2 2-5.5 4.7l-16.2 102c-.2 2 1.3 4 3.2 4h20.5c2 0 3.5-1.5 4-3.2l4.5-29c1-7.2 13.2-4.7 18-4.7 28.4 0 45.9-17 45.9-45.8zm84.2 8.8h-19c-3.8 0-4 5.5-4.3 8.2-5.5-8.5-14-10-23.7-10-24.5 0-43.2 21.5-43.2 45.2 0 19.5 12.2 32.2 31.7 32.2 9.3 0 20.5-4.9 26.5-11.9-.3 1.5-1 4.7-1 6.2 0 2.3 1 4 3.2 4H484c2.7 0 5-2.9 5.5-5.7l10.2-64.3c.3-1.9-1.2-3.9-3.2-3.9zm47.5-33.3c0-2-1.5-3.5-3.2-3.5h-18.5c-1.5 0-3 1.2-3.2 2.7l-16.2 104-.3.5c0 1.8 1.5 3.5 3.5 3.5h16.5c2.5 0 5-2.9 5.2-5.7L544 191.2v-.3zm-90 51.8c-12.2 0-21.7 9.7-21.7 22 0 9.7 7 15 16.2 15 12 0 21.7-9.2 21.7-21.5.1-9.8-6.9-15.5-16.2-15.5z\"]\n};\nvar faCcStripe = {\n prefix: 'fab',\n iconName: 'cc-stripe',\n icon: [576, 512, [], \"f1f5\", \"M492.4 220.8c-8.9 0-18.7 6.7-18.7 22.7h36.7c0-16-9.3-22.7-18-22.7zM375 223.4c-8.2 0-13.3 2.9-17 7l.2 52.8c3.5 3.7 8.5 6.7 16.8 6.7 13.1 0 21.9-14.3 21.9-33.4 0-18.6-9-33.2-21.9-33.1zM528 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM122.2 281.1c0 25.6-20.3 40.1-49.9 40.3-12.2 0-25.6-2.4-38.8-8.1v-33.9c12 6.4 27.1 11.3 38.9 11.3 7.9 0 13.6-2.1 13.6-8.7 0-17-54-10.6-54-49.9 0-25.2 19.2-40.2 48-40.2 11.8 0 23.5 1.8 35.3 6.5v33.4c-10.8-5.8-24.5-9.1-35.3-9.1-7.5 0-12.1 2.2-12.1 7.7 0 16 54.3 8.4 54.3 50.7zm68.8-56.6h-27V275c0 20.9 22.5 14.4 27 12.6v28.9c-4.7 2.6-13.3 4.7-24.9 4.7-21.1 0-36.9-15.5-36.9-36.5l.2-113.9 34.7-7.4v30.8H191zm74 2.4c-4.5-1.5-18.7-3.6-27.1 7.4v84.4h-35.5V194.2h30.7l2.2 10.5c8.3-15.3 24.9-12.2 29.6-10.5h.1zm44.1 91.8h-35.7V194.2h35.7zm0-142.9l-35.7 7.6v-28.9l35.7-7.6zm74.1 145.5c-12.4 0-20-5.3-25.1-9l-.1 40.2-35.5 7.5V194.2h31.3l1.8 8.8c4.9-4.5 13.9-11.1 27.8-11.1 24.9 0 48.4 22.5 48.4 63.8 0 45.1-23.2 65.5-48.6 65.6zm160.4-51.5h-69.5c1.6 16.6 13.8 21.5 27.6 21.5 14.1 0 25.2-3 34.9-7.9V312c-9.7 5.3-22.4 9.2-39.4 9.2-34.6 0-58.8-21.7-58.8-64.5 0-36.2 20.5-64.9 54.3-64.9 33.7 0 51.3 28.7 51.3 65.1 0 3.5-.3 10.9-.4 12.9z\"]\n};\nvar faCcVisa = {\n prefix: 'fab',\n iconName: 'cc-visa',\n icon: [576, 512, [], \"f1f0\", \"M470.1 231.3s7.6 37.2 9.3 45H446c3.3-8.9 16-43.5 16-43.5-.2.3 3.3-9.1 5.3-14.9l2.8 13.4zM576 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48zM152.5 331.2L215.7 176h-42.5l-39.3 106-4.3-21.5-14-71.4c-2.3-9.9-9.4-12.7-18.2-13.1H32.7l-.7 3.1c15.8 4 29.9 9.8 42.2 17.1l35.8 135h42.5zm94.4.2L272.1 176h-40.2l-25.1 155.4h40.1zm139.9-50.8c.2-17.7-10.6-31.2-33.7-42.3-14.1-7.1-22.7-11.9-22.7-19.2.2-6.6 7.3-13.4 23.1-13.4 13.1-.3 22.7 2.8 29.9 5.9l3.6 1.7 5.5-33.6c-7.9-3.1-20.5-6.6-36-6.6-39.7 0-67.6 21.2-67.8 51.4-.3 22.3 20 34.7 35.2 42.2 15.5 7.6 20.8 12.6 20.8 19.3-.2 10.4-12.6 15.2-24.1 15.2-16 0-24.6-2.5-37.7-8.3l-5.3-2.5-5.6 34.9c9.4 4.3 26.8 8.1 44.8 8.3 42.2.1 69.7-20.8 70-53zM528 331.4L495.6 176h-31.1c-9.6 0-16.9 2.8-21 12.9l-59.7 142.5H426s6.9-19.2 8.4-23.3H486c1.2 5.5 4.8 23.3 4.8 23.3H528z\"]\n};\nvar faCentercode = {\n prefix: 'fab',\n iconName: 'centercode',\n icon: [512, 512, [], \"f380\", \"M329.2 268.6c-3.8 35.2-35.4 60.6-70.6 56.8-35.2-3.8-60.6-35.4-56.8-70.6 3.8-35.2 35.4-60.6 70.6-56.8 35.1 3.8 60.6 35.4 56.8 70.6zm-85.8 235.1C96.7 496-8.2 365.5 10.1 224.3c11.2-86.6 65.8-156.9 139.1-192 161-77.1 349.7 37.4 354.7 216.6 4.1 147-118.4 262.2-260.5 254.8zm179.9-180c27.9-118-160.5-205.9-237.2-234.2-57.5 56.3-69.1 188.6-33.8 344.4 68.8 15.8 169.1-26.4 271-110.2z\"]\n};\nvar faCentos = {\n prefix: 'fab',\n iconName: 'centos',\n icon: [448, 512, [], \"f789\", \"M289.6 97.5l31.6 31.7-76.3 76.5V97.5zm-162.4 31.7l76.3 76.5V97.5h-44.7zm41.5-41.6h44.7v127.9l10.8 10.8 10.8-10.8V87.6h44.7L224.2 32zm26.2 168.1l-10.8-10.8H55.5v-44.8L0 255.7l55.5 55.6v-44.8h128.6l10.8-10.8zm79.3-20.7h107.9v-44.8l-31.6-31.7zm173.3 20.7L392 200.1v44.8H264.3l-10.8 10.8 10.8 10.8H392v44.8l55.5-55.6zM65.4 176.2l32.5-31.7 90.3 90.5h15.3v-15.3l-90.3-90.5 31.6-31.7H65.4zm316.7-78.7h-78.5l31.6 31.7-90.3 90.5V235h15.3l90.3-90.5 31.6 31.7zM203.5 413.9V305.8l-76.3 76.5 31.6 31.7h44.7zM65.4 235h108.8l-76.3-76.5-32.5 31.7zm316.7 100.2l-31.6 31.7-90.3-90.5h-15.3v15.3l90.3 90.5-31.6 31.7h78.5zm0-58.8H274.2l76.3 76.5 31.6-31.7zm-60.9 105.8l-76.3-76.5v108.1h44.7zM97.9 352.9l76.3-76.5H65.4v44.8zm181.8 70.9H235V295.9l-10.8-10.8-10.8 10.8v127.9h-44.7l55.5 55.6zm-166.5-41.6l90.3-90.5v-15.3h-15.3l-90.3 90.5-32.5-31.7v78.7h79.4z\"]\n};\nvar faChrome = {\n prefix: 'fab',\n iconName: 'chrome',\n icon: [496, 512, [], \"f268\", \"M131.5 217.5L55.1 100.1c47.6-59.2 119-91.8 192-92.1 42.3-.3 85.5 10.5 124.8 33.2 43.4 25.2 76.4 61.4 97.4 103L264 133.4c-58.1-3.4-113.4 29.3-132.5 84.1zm32.9 38.5c0 46.2 37.4 83.6 83.6 83.6s83.6-37.4 83.6-83.6-37.4-83.6-83.6-83.6-83.6 37.3-83.6 83.6zm314.9-89.2L339.6 174c37.9 44.3 38.5 108.2 6.6 157.2L234.1 503.6c46.5 2.5 94.4-7.7 137.8-32.9 107.4-62 150.9-192 107.4-303.9zM133.7 303.6L40.4 120.1C14.9 159.1 0 205.9 0 256c0 124 90.8 226.7 209.5 244.9l63.7-124.8c-57.6 10.8-113.2-20.8-139.5-72.5z\"]\n};\nvar faChromecast = {\n prefix: 'fab',\n iconName: 'chromecast',\n icon: [512, 512, [], \"f838\", \"M447.83 64H64a42.72 42.72 0 0 0-42.72 42.72v63.92H64v-63.92h383.83v298.56H298.64V448H448a42.72 42.72 0 0 0 42.72-42.72V106.72A42.72 42.72 0 0 0 448 64zM21.28 383.58v63.92h63.91a63.91 63.91 0 0 0-63.91-63.92zm0-85.28V341a106.63 106.63 0 0 1 106.64 106.66v.34h42.72a149.19 149.19 0 0 0-149-149.36h-.33zm0-85.27v42.72c106-.1 192 85.75 192.08 191.75v.5h42.72c-.46-129.46-105.34-234.27-234.8-234.64z\"]\n};\nvar faCloudscale = {\n prefix: 'fab',\n iconName: 'cloudscale',\n icon: [448, 512, [], \"f383\", \"M318.1 154l-9.4 7.6c-22.5-19.3-51.5-33.6-83.3-33.6C153.8 128 96 188.8 96 260.3c0 6.6.4 13.1 1.4 19.4-2-56 41.8-97.4 92.6-97.4 24.2 0 46.2 9.4 62.6 24.7l-25.2 20.4c-8.3-.9-16.8 1.8-23.1 8.1-11.1 11-11.1 28.9 0 40 11.1 11 28.9 11 40 0 6.3-6.3 9-14.9 8.1-23.1l75.2-88.8c6.3-6.5-3.3-15.9-9.5-9.6zm-83.8 111.5c-5.6 5.5-14.6 5.5-20.2 0-5.6-5.6-5.6-14.6 0-20.2s14.6-5.6 20.2 0 5.6 14.7 0 20.2zM224 32C100.5 32 0 132.5 0 256s100.5 224 224 224 224-100.5 224-224S347.5 32 224 32zm0 384c-88.2 0-160-71.8-160-160S135.8 96 224 96s160 71.8 160 160-71.8 160-160 160z\"]\n};\nvar faCloudsmith = {\n prefix: 'fab',\n iconName: 'cloudsmith',\n icon: [332, 512, [], \"f384\", \"M332.5 419.9c0 46.4-37.6 84.1-84 84.1s-84-37.7-84-84.1 37.6-84 84-84 84 37.6 84 84zm-84-243.9c46.4 0 80-37.6 80-84s-33.6-84-80-84-88 37.6-88 84-29.6 76-76 76-84 41.6-84 88 37.6 80 84 80 84-33.6 84-80 33.6-80 80-80z\"]\n};\nvar faCloudversify = {\n prefix: 'fab',\n iconName: 'cloudversify',\n icon: [616, 512, [], \"f385\", \"M148.6 304c8.2 68.5 67.4 115.5 146 111.3 51.2 43.3 136.8 45.8 186.4-5.6 69.2 1.1 118.5-44.6 131.5-99.5 14.8-62.5-18.2-132.5-92.1-155.1-33-88.1-131.4-101.5-186.5-85-57.3 17.3-84.3 53.2-99.3 109.7-7.8 2.7-26.5 8.9-45 24.1 11.7 0 15.2 8.9 15.2 19.5v20.4c0 10.7-8.7 19.5-19.5 19.5h-20.2c-10.7 0-19.5-6-19.5-16.7V240H98.8C95 240 88 244.3 88 251.9v40.4c0 6.4 5.3 11.8 11.7 11.8h48.9zm227.4 8c-10.7 46.3 21.7 72.4 55.3 86.8C324.1 432.6 259.7 348 296 288c-33.2 21.6-33.7 71.2-29.2 92.9-17.9-12.4-53.8-32.4-57.4-79.8-3-39.9 21.5-75.7 57-93.9C297 191.4 369.9 198.7 400 248c-14.1-48-53.8-70.1-101.8-74.8 30.9-30.7 64.4-50.3 114.2-43.7 69.8 9.3 133.2 82.8 67.7 150.5 35-16.3 48.7-54.4 47.5-76.9l10.5 19.6c11.8 22 15.2 47.6 9.4 72-9.2 39-40.6 68.8-79.7 76.5-32.1 6.3-83.1-5.1-91.8-59.2zM128 208H88.2c-8.9 0-16.2-7.3-16.2-16.2v-39.6c0-8.9 7.3-16.2 16.2-16.2H128c8.9 0 16.2 7.3 16.2 16.2v39.6c0 8.9-7.3 16.2-16.2 16.2zM10.1 168C4.5 168 0 163.5 0 157.9v-27.8c0-5.6 4.5-10.1 10.1-10.1h27.7c5.5 0 10.1 4.5 10.1 10.1v27.8c0 5.6-4.5 10.1-10.1 10.1H10.1zM168 142.7v-21.4c0-5.1 4.2-9.3 9.3-9.3h21.4c5.1 0 9.3 4.2 9.3 9.3v21.4c0 5.1-4.2 9.3-9.3 9.3h-21.4c-5.1 0-9.3-4.2-9.3-9.3zM56 235.5v25c0 6.3-5.1 11.5-11.4 11.5H19.4C13.1 272 8 266.8 8 260.5v-25c0-6.3 5.1-11.5 11.4-11.5h25.1c6.4 0 11.5 5.2 11.5 11.5z\"]\n};\nvar faCodepen = {\n prefix: 'fab',\n iconName: 'codepen',\n icon: [512, 512, [], \"f1cb\", \"M502.285 159.704l-234-156c-7.987-4.915-16.511-4.96-24.571 0l-234 156C3.714 163.703 0 170.847 0 177.989v155.999c0 7.143 3.714 14.286 9.715 18.286l234 156.022c7.987 4.915 16.511 4.96 24.571 0l234-156.022c6-3.999 9.715-11.143 9.715-18.286V177.989c-.001-7.142-3.715-14.286-9.716-18.285zM278 63.131l172.286 114.858-76.857 51.429L278 165.703V63.131zm-44 0v102.572l-95.429 63.715-76.857-51.429L234 63.131zM44 219.132l55.143 36.857L44 292.846v-73.714zm190 229.715L61.714 333.989l76.857-51.429L234 346.275v102.572zm22-140.858l-77.715-52 77.715-52 77.715 52-77.715 52zm22 140.858V346.275l95.429-63.715 76.857 51.429L278 448.847zm190-156.001l-55.143-36.857L468 219.132v73.714z\"]\n};\nvar faCodiepie = {\n prefix: 'fab',\n iconName: 'codiepie',\n icon: [472, 512, [], \"f284\", \"M422.5 202.9c30.7 0 33.5 53.1-.3 53.1h-10.8v44.3h-26.6v-97.4h37.7zM472 352.6C429.9 444.5 350.4 504 248 504 111 504 0 393 0 256S111 8 248 8c97.4 0 172.8 53.7 218.2 138.4l-186 108.8L472 352.6zm-38.5 12.5l-60.3-30.7c-27.1 44.3-70.4 71.4-122.4 71.4-82.5 0-149.2-66.7-149.2-148.9 0-82.5 66.7-149.2 149.2-149.2 48.4 0 88.9 23.5 116.9 63.4l59.5-34.6c-40.7-62.6-104.7-100-179.2-100-121.2 0-219.5 98.3-219.5 219.5S126.8 475.5 248 475.5c78.6 0 146.5-42.1 185.5-110.4z\"]\n};\nvar faConfluence = {\n prefix: 'fab',\n iconName: 'confluence',\n icon: [512, 512, [], \"f78d\", \"M2.3 412.2c-4.5 7.6-2.1 17.5 5.5 22.2l105.9 65.2c7.7 4.7 17.7 2.4 22.4-5.3 0-.1.1-.2.1-.2 67.1-112.2 80.5-95.9 280.9-.7 8.1 3.9 17.8.4 21.7-7.7.1-.1.1-.3.2-.4l50.4-114.1c3.6-8.1-.1-17.6-8.1-21.3-22.2-10.4-66.2-31.2-105.9-50.3C127.5 179 44.6 345.3 2.3 412.2zm507.4-312.1c4.5-7.6 2.1-17.5-5.5-22.2L398.4 12.8c-7.5-5-17.6-3.1-22.6 4.4-.2.3-.4.6-.6 1-67.3 112.6-81.1 95.6-280.6.9-8.1-3.9-17.8-.4-21.7 7.7-.1.1-.1.3-.2.4L22.2 141.3c-3.6 8.1.1 17.6 8.1 21.3 22.2 10.4 66.3 31.2 106 50.4 248 120 330.8-45.4 373.4-112.9z\"]\n};\nvar faConnectdevelop = {\n prefix: 'fab',\n iconName: 'connectdevelop',\n icon: [576, 512, [], \"f20e\", \"M550.5 241l-50.089-86.786c1.071-2.142 1.875-4.553 1.875-7.232 0-8.036-6.696-14.733-14.732-15.001l-55.447-95.893c.536-1.607 1.071-3.214 1.071-4.821 0-8.571-6.964-15.268-15.268-15.268-4.821 0-8.839 2.143-11.786 5.625H299.518C296.839 18.143 292.821 16 288 16s-8.839 2.143-11.518 5.625H170.411C167.464 18.143 163.447 16 158.625 16c-8.303 0-15.268 6.696-15.268 15.268 0 1.607.536 3.482 1.072 4.821l-55.983 97.233c-5.356 2.41-9.107 7.5-9.107 13.661 0 .535.268 1.071.268 1.607l-53.304 92.143c-7.232 1.339-12.59 7.5-12.59 15 0 7.232 5.089 13.393 12.054 15l55.179 95.358c-.536 1.607-.804 2.946-.804 4.821 0 7.232 5.089 13.393 12.054 14.732l51.697 89.732c-.536 1.607-1.071 3.482-1.071 5.357 0 8.571 6.964 15.268 15.268 15.268 4.821 0 8.839-2.143 11.518-5.357h106.875C279.161 493.857 283.447 496 288 496s8.839-2.143 11.518-5.357h107.143c2.678 2.946 6.696 4.821 10.982 4.821 8.571 0 15.268-6.964 15.268-15.268 0-1.607-.267-2.946-.803-4.285l51.697-90.268c6.964-1.339 12.054-7.5 12.054-14.732 0-1.607-.268-3.214-.804-4.821l54.911-95.358c6.964-1.339 12.322-7.5 12.322-15-.002-7.232-5.092-13.393-11.788-14.732zM153.535 450.732l-43.66-75.803h43.66v75.803zm0-83.839h-43.66c-.268-1.071-.804-2.142-1.339-3.214l44.999-47.41v50.624zm0-62.411l-50.357 53.304c-1.339-.536-2.679-1.34-4.018-1.607L43.447 259.75c.535-1.339.535-2.679.535-4.018s0-2.41-.268-3.482l51.965-90c2.679-.268 5.357-1.072 7.768-2.679l50.089 51.965v92.946zm0-102.322l-45.803-47.41c1.339-2.143 2.143-4.821 2.143-7.767 0-.268-.268-.804-.268-1.072l43.928-15.804v72.053zm0-80.625l-43.66 15.804 43.66-75.536v59.732zm326.519 39.108l.804 1.339L445.5 329.125l-63.75-67.232 98.036-101.518.268.268zM291.75 355.107l11.518 11.786H280.5l11.25-11.786zm-.268-11.25l-83.303-85.446 79.553-84.375 83.036 87.589-79.286 82.232zm5.357 5.893l79.286-82.232 67.5 71.25-5.892 28.125H313.714l-16.875-17.143zM410.411 44.393c1.071.536 2.142 1.072 3.482 1.34l57.857 100.714v.536c0 2.946.803 5.624 2.143 7.767L376.393 256l-83.035-87.589L410.411 44.393zm-9.107-2.143L287.732 162.518l-57.054-60.268 166.339-60h4.287zm-123.483 0c2.678 2.678 6.16 4.285 10.179 4.285s7.5-1.607 10.179-4.285h75L224.786 95.821 173.893 42.25h103.928zm-116.249 5.625l1.071-2.142a33.834 33.834 0 0 0 2.679-.804l51.161 53.84-54.911 19.821V47.875zm0 79.286l60.803-21.964 59.732 63.214-79.553 84.107-40.982-42.053v-83.304zm0 92.678L198 257.607l-36.428 38.304v-76.072zm0 87.858l42.053-44.464 82.768 85.982-17.143 17.678H161.572v-59.196zm6.964 162.053c-1.607-1.607-3.482-2.678-5.893-3.482l-1.071-1.607v-89.732h99.91l-91.607 94.821h-1.339zm129.911 0c-2.679-2.41-6.428-4.285-10.447-4.285s-7.767 1.875-10.447 4.285h-96.429l91.607-94.821h38.304l91.607 94.821H298.447zm120-11.786l-4.286 7.5c-1.339.268-2.41.803-3.482 1.339l-89.196-91.875h114.376l-17.412 83.036zm12.856-22.232l12.858-60.803h21.964l-34.822 60.803zm34.822-68.839h-20.357l4.553-21.16 17.143 18.214c-.535.803-1.071 1.874-1.339 2.946zm66.161-107.411l-55.447 96.697c-1.339.535-2.679 1.071-4.018 1.874l-20.625-21.964 34.554-163.928 45.803 79.286c-.267 1.339-.803 2.678-.803 4.285 0 1.339.268 2.411.536 3.75z\"]\n};\nvar faContao = {\n prefix: 'fab',\n iconName: 'contao',\n icon: [512, 512, [], \"f26d\", \"M45.4 305c14.4 67.1 26.4 129 68.2 175H34c-18.7 0-34-15.2-34-34V66c0-18.7 15.2-34 34-34h57.7C77.9 44.6 65.6 59.2 54.8 75.6c-45.4 70-27 146.8-9.4 229.4zM478 32h-90.2c21.4 21.4 39.2 49.5 52.7 84.1l-137.1 29.3c-14.9-29-37.8-53.3-82.6-43.9-24.6 5.3-41 19.3-48.3 34.6-8.8 18.7-13.2 39.8 8.2 140.3 21.1 100.2 33.7 117.7 49.5 131.2 12.9 11.1 33.4 17 58.3 11.7 44.5-9.4 55.7-40.7 57.4-73.2l137.4-29.6c3.2 71.5-18.7 125.2-57.4 163.6H478c18.7 0 34-15.2 34-34V66c0-18.8-15.2-34-34-34z\"]\n};\nvar faCottonBureau = {\n prefix: 'fab',\n iconName: 'cotton-bureau',\n icon: [512, 512, [], \"f89e\", \"M474.31 330.41c-23.66 91.85-94.23 144.59-201.9 148.35V429.6c0-48 26.41-74.39 74.39-74.39 62 0 99.2-37.2 99.2-99.21 0-61.37-36.53-98.28-97.38-99.06-33-69.32-146.5-64.65-177.24 0C110.52 157.72 74 194.63 74 256c0 62.13 37.27 99.41 99.4 99.41 48 0 74.55 26.23 74.55 74.39V479c-134.43-5-211.1-85.07-211.1-223 0-141.82 81.35-223.2 223.2-223.2 114.77 0 189.84 53.2 214.69 148.81H500C473.88 71.51 388.22 8 259.82 8 105 8 12 101.19 12 255.82 12 411.14 105.19 504.34 259.82 504c128.27 0 213.87-63.81 239.67-173.59zM357 182.33c41.37 3.45 64.2 29 64.2 73.67 0 48-26.43 74.41-74.4 74.41-28.61 0-49.33-9.59-61.59-27.33 83.06-16.55 75.59-99.67 71.79-120.75zm-81.68 97.36c-2.46-10.34-16.33-87 56.23-97 2.27 10.09 16.52 87.11-56.26 97zM260 132c28.61 0 49 9.67 61.44 27.61-28.36 5.48-49.36 20.59-61.59 43.45-12.23-22.86-33.23-38-61.6-43.45 12.41-17.69 33.27-27.35 61.57-27.35zm-71.52 50.72c73.17 10.57 58.91 86.81 56.49 97-72.41-9.84-59-86.95-56.25-97zM173.2 330.41c-48 0-74.4-26.4-74.4-74.41 0-44.36 22.86-70 64.22-73.67-6.75 37.2-1.38 106.53 71.65 120.75-12.14 17.63-32.84 27.3-61.14 27.3zm53.21 12.39A80.8 80.8 0 0 0 260 309.25c7.77 14.49 19.33 25.54 33.82 33.55a80.28 80.28 0 0 0-33.58 33.83c-8-14.5-19.07-26.23-33.56-33.83z\"]\n};\nvar faCpanel = {\n prefix: 'fab',\n iconName: 'cpanel',\n icon: [640, 512, [], \"f388\", \"M210.3 220.2c-5.6-24.8-26.9-41.2-51-41.2h-37c-7.1 0-12.5 4.5-14.3 10.9L73.1 320l24.7-.1c6.8 0 12.3-4.5 14.2-10.7l25.8-95.7h19.8c8.4 0 16.2 5.6 18.3 14.8 2.5 10.9-5.9 22.6-18.3 22.6h-10.3c-7 0-12.5 4.6-14.3 10.8l-6.4 23.8h32c37.2 0 58.3-36.2 51.7-65.3zm-156.5 28h18.6c6.9 0 12.4-4.4 14.3-10.9l6.2-23.6h-40C30 213.7 9 227.8 1.7 254.8-7 288.6 18.5 320 52 320h12.4l7.1-26.1c1.2-4.4-2.2-8.3-6.4-8.3H53.8c-24.7 0-24.9-37.4 0-37.4zm247.5-34.8h-77.9l-3.5 13.4c-2.4 9.6 4.5 18.5 14.2 18.5h57.5c4 0 2.4 4.3 2.1 5.3l-8.6 31.8c-.4 1.4-.9 5.3-5.5 5.3h-34.9c-5.3 0-5.3-7.9 0-7.9h21.6c6.8 0 12.3-4.6 14.2-10.8l3.5-13.2h-48.4c-39.2 0-43.6 63.8-.7 63.8l57.5.2c11.2 0 20.6-7.2 23.4-17.8l14-51.8c4.8-19.2-9.7-36.8-28.5-36.8zM633.1 179h-18.9c-4.9 0-9.2 3.2-10.4 7.9L568.2 320c20.7 0 39.8-13.8 44.9-34.5l26.5-98.2c1.2-4.3-2-8.3-6.5-8.3zm-236.3 34.7v.1h-48.3l-26.2 98c-1.2 4.4 2.2 8.3 6.4 8.3h18.9c4.8 0 9.2-3 10.4-7.8l17.2-64H395c12.5 0 21.4 11.8 18.1 23.4l-10.6 40c-1.2 4.3 1.9 8.3 6.4 8.3H428c4.6 0 9.1-2.9 10.3-7.8l8.8-33.1c9-33.1-15.9-65.4-50.3-65.4zm98.3 74.6c-3.6 0-6-3.4-5.1-6.7l8-30c.9-3.9 3.7-6 7.8-6h32.9c2.6 0 4.6 2.4 3.9 5.1l-.7 2.6c-.6 2-1.9 3-3.9 3h-21.6c-7 0-12.6 4.6-14.2 10.8l-3.5 13h53.4c10.5 0 20.3-6.6 23.2-17.6l3.2-12c4.9-19.1-9.3-36.8-28.3-36.8h-47.3c-17.9 0-33.8 12-38.6 29.6l-10.8 40c-5 17.7 8.3 36.7 28.3 36.7h66.7c6.8 0 12.3-4.5 14.2-10.7l5.7-21z\"]\n};\nvar faCreativeCommons = {\n prefix: 'fab',\n iconName: 'creative-commons',\n icon: [496, 512, [], \"f25e\", \"M245.83 214.87l-33.22 17.28c-9.43-19.58-25.24-19.93-27.46-19.93-22.13 0-33.22 14.61-33.22 43.84 0 23.57 9.21 43.84 33.22 43.84 14.47 0 24.65-7.09 30.57-21.26l30.55 15.5c-6.17 11.51-25.69 38.98-65.1 38.98-22.6 0-73.96-10.32-73.96-77.05 0-58.69 43-77.06 72.63-77.06 30.72-.01 52.7 11.95 65.99 35.86zm143.05 0l-32.78 17.28c-9.5-19.77-25.72-19.93-27.9-19.93-22.14 0-33.22 14.61-33.22 43.84 0 23.55 9.23 43.84 33.22 43.84 14.45 0 24.65-7.09 30.54-21.26l31 15.5c-2.1 3.75-21.39 38.98-65.09 38.98-22.69 0-73.96-9.87-73.96-77.05 0-58.67 42.97-77.06 72.63-77.06 30.71-.01 52.58 11.95 65.56 35.86zM247.56 8.05C104.74 8.05 0 123.11 0 256.05c0 138.49 113.6 248 247.56 248 129.93 0 248.44-100.87 248.44-248 0-137.87-106.62-248-248.44-248zm.87 450.81c-112.54 0-203.7-93.04-203.7-202.81 0-105.42 85.43-203.27 203.72-203.27 112.53 0 202.82 89.46 202.82 203.26-.01 121.69-99.68 202.82-202.84 202.82z\"]\n};\nvar faCreativeCommonsBy = {\n prefix: 'fab',\n iconName: 'creative-commons-by',\n icon: [496, 512, [], \"f4e7\", \"M314.9 194.4v101.4h-28.3v120.5h-77.1V295.9h-28.3V194.4c0-4.4 1.6-8.2 4.6-11.3 3.1-3.1 6.9-4.7 11.3-4.7H299c4.1 0 7.8 1.6 11.1 4.7 3.1 3.2 4.8 6.9 4.8 11.3zm-101.5-63.7c0-23.3 11.5-35 34.5-35s34.5 11.7 34.5 35c0 23-11.5 34.5-34.5 34.5s-34.5-11.5-34.5-34.5zM247.6 8C389.4 8 496 118.1 496 256c0 147.1-118.5 248-248.4 248C113.6 504 0 394.5 0 256 0 123.1 104.7 8 247.6 8zm.8 44.7C130.2 52.7 44.7 150.6 44.7 256c0 109.8 91.2 202.8 203.7 202.8 103.2 0 202.8-81.1 202.8-202.8.1-113.8-90.2-203.3-202.8-203.3z\"]\n};\nvar faCreativeCommonsNc = {\n prefix: 'fab',\n iconName: 'creative-commons-nc',\n icon: [496, 512, [], \"f4e8\", \"M247.6 8C387.4 8 496 115.9 496 256c0 147.2-118.5 248-248.4 248C113.1 504 0 393.2 0 256 0 123.1 104.7 8 247.6 8zM55.8 189.1c-7.4 20.4-11.1 42.7-11.1 66.9 0 110.9 92.1 202.4 203.7 202.4 122.4 0 177.2-101.8 178.5-104.1l-93.4-41.6c-7.7 37.1-41.2 53-68.2 55.4v38.1h-28.8V368c-27.5-.3-52.6-10.2-75.3-29.7l34.1-34.5c31.7 29.4 86.4 31.8 86.4-2.2 0-6.2-2.2-11.2-6.6-15.1-14.2-6-1.8-.1-219.3-97.4zM248.4 52.3c-38.4 0-112.4 8.7-170.5 93l94.8 42.5c10-31.3 40.4-42.9 63.8-44.3v-38.1h28.8v38.1c22.7 1.2 43.4 8.9 62 23L295 199.7c-42.7-29.9-83.5-8-70 11.1 53.4 24.1 43.8 19.8 93 41.6l127.1 56.7c4.1-17.4 6.2-35.1 6.2-53.1 0-57-19.8-105-59.3-143.9-39.3-39.9-87.2-59.8-143.6-59.8z\"]\n};\nvar faCreativeCommonsNcEu = {\n prefix: 'fab',\n iconName: 'creative-commons-nc-eu',\n icon: [496, 512, [], \"f4e9\", \"M247.7 8C103.6 8 0 124.8 0 256c0 136.3 111.7 248 247.7 248C377.9 504 496 403.1 496 256 496 117 388.4 8 247.7 8zm.6 450.7c-112 0-203.6-92.5-203.6-202.7 0-23.2 3.7-45.2 10.9-66l65.7 29.1h-4.7v29.5h23.3c0 6.2-.4 3.2-.4 19.5h-22.8v29.5h27c11.4 67 67.2 101.3 124.6 101.3 26.6 0 50.6-7.9 64.8-15.8l-10-46.1c-8.7 4.6-28.2 10.8-47.3 10.8-28.2 0-58.1-10.9-67.3-50.2h90.3l128.3 56.8c-1.5 2.1-56.2 104.3-178.8 104.3zm-16.7-190.6l-.5-.4.9.4h-.4zm77.2-19.5h3.7v-29.5h-70.3l-28.6-12.6c2.5-5.5 5.4-10.5 8.8-14.3 12.9-15.8 31.1-22.4 51.1-22.4 18.3 0 35.3 5.4 46.1 10l11.6-47.3c-15-6.6-37-12.4-62.3-12.4-39 0-72.2 15.8-95.9 42.3-5.3 6.1-9.8 12.9-13.9 20.1l-81.6-36.1c64.6-96.8 157.7-93.6 170.7-93.6 113 0 203 90.2 203 203.4 0 18.7-2.1 36.3-6.3 52.9l-136.1-60.5z\"]\n};\nvar faCreativeCommonsNcJp = {\n prefix: 'fab',\n iconName: 'creative-commons-nc-jp',\n icon: [496, 512, [], \"f4ea\", \"M247.7 8C103.6 8 0 124.8 0 256c0 136.4 111.8 248 247.7 248C377.9 504 496 403.2 496 256 496 117.2 388.5 8 247.7 8zm.6 450.7c-112 0-203.6-92.5-203.6-202.7 0-21.1 3-41.2 9-60.3l127 56.5h-27.9v38.6h58.1l5.7 11.8v18.7h-63.8V360h63.8v56h61.7v-56h64.2v-35.7l81 36.1c-1.5 2.2-57.1 98.3-175.2 98.3zm87.6-137.3h-57.6v-18.7l2.9-5.6 54.7 24.3zm6.5-51.4v-17.8h-38.6l63-116H301l-43.4 96-23-10.2-39.6-85.7h-65.8l27.3 51-81.9-36.5c27.8-44.1 82.6-98.1 173.7-98.1 112.8 0 203 90 203 203.4 0 21-2.7 40.6-7.9 59l-101-45.1z\"]\n};\nvar faCreativeCommonsNd = {\n prefix: 'fab',\n iconName: 'creative-commons-nd',\n icon: [496, 512, [], \"f4eb\", \"M247.6 8C389.4 8 496 118.1 496 256c0 147.1-118.5 248-248.4 248C113.6 504 0 394.5 0 256 0 123.1 104.7 8 247.6 8zm.8 44.7C130.2 52.7 44.7 150.6 44.7 256c0 109.8 91.2 202.8 203.7 202.8 103.2 0 202.8-81.1 202.8-202.8.1-113.8-90.2-203.3-202.8-203.3zm94 144.3v42.5H162.1V197h180.3zm0 79.8v42.5H162.1v-42.5h180.3z\"]\n};\nvar faCreativeCommonsPd = {\n prefix: 'fab',\n iconName: 'creative-commons-pd',\n icon: [496, 512, [], \"f4ec\", \"M248 8C111 8 0 119.1 0 256c0 137 111 248 248 248s248-111 248-248C496 119.1 385 8 248 8zm0 449.5c-139.2 0-235.8-138-190.2-267.9l78.8 35.1c-2.1 10.5-3.3 21.5-3.3 32.9 0 99 73.9 126.9 120.4 126.9 22.9 0 53.5-6.7 79.4-29.5L297 311.1c-5.5 6.3-17.6 16.7-36.3 16.7-37.8 0-53.7-39.9-53.9-71.9 230.4 102.6 216.5 96.5 217.9 96.8-34.3 62.4-100.6 104.8-176.7 104.8zm194.2-150l-224-100c18.8-34 54.9-30.7 74.7-11l40.4-41.6c-27.1-23.3-58-27.5-78.1-27.5-47.4 0-80.9 20.5-100.7 51.6l-74.9-33.4c36.1-54.9 98.1-91.2 168.5-91.2 111.1 0 201.5 90.4 201.5 201.5 0 18-2.4 35.4-6.8 52-.3-.1-.4-.2-.6-.4z\"]\n};\nvar faCreativeCommonsPdAlt = {\n prefix: 'fab',\n iconName: 'creative-commons-pd-alt',\n icon: [496, 512, [], \"f4ed\", \"M247.6 8C104.7 8 0 123.1 0 256c0 138.5 113.6 248 247.6 248C377.5 504 496 403.1 496 256 496 118.1 389.4 8 247.6 8zm.8 450.8c-112.5 0-203.7-93-203.7-202.8 0-105.4 85.5-203.3 203.7-203.3 112.6 0 202.9 89.5 202.8 203.3 0 121.7-99.6 202.8-202.8 202.8zM316.7 186h-53.2v137.2h53.2c21.4 0 70-5.1 70-68.6 0-63.4-48.6-68.6-70-68.6zm.8 108.5h-19.9v-79.7l19.4-.1c3.8 0 35-2.1 35 39.9 0 24.6-10.5 39.9-34.5 39.9zM203.7 186h-68.2v137.3h34.6V279h27c54.1 0 57.1-37.5 57.1-46.5 0-31-16.8-46.5-50.5-46.5zm-4.9 67.3h-29.2v-41.6h28.3c30.9 0 28.8 41.6.9 41.6z\"]\n};\nvar faCreativeCommonsRemix = {\n prefix: 'fab',\n iconName: 'creative-commons-remix',\n icon: [496, 512, [], \"f4ee\", \"M247.6 8C389.4 8 496 118.1 496 256c0 147.1-118.5 248-248.4 248C113.6 504 0 394.5 0 256 0 123.1 104.7 8 247.6 8zm.8 44.7C130.2 52.7 44.7 150.6 44.7 256c0 109.8 91.2 202.8 203.7 202.8 103.2 0 202.8-81.1 202.8-202.8.1-113.8-90.2-203.3-202.8-203.3zm161.7 207.7l4.9 2.2v70c-7.2 3.6-63.4 27.5-67.3 28.8-6.5-1.8-113.7-46.8-137.3-56.2l-64.2 26.6-63.3-27.5v-63.8l59.3-24.8c-.7-.7-.4 5-.4-70.4l67.3-29.7L361 178.5v61.6l49.1 20.3zm-70.4 81.5v-43.8h-.4v-1.8l-113.8-46.5V295l113.8 46.9v-.4l.4.4zm7.5-57.6l39.9-16.4-36.8-15.5-39 16.4 35.9 15.5zm52.3 38.1v-43L355.2 298v43.4l44.3-19z\"]\n};\nvar faCreativeCommonsSa = {\n prefix: 'fab',\n iconName: 'creative-commons-sa',\n icon: [496, 512, [], \"f4ef\", \"M247.6 8C389.4 8 496 118.1 496 256c0 147.1-118.5 248-248.4 248C113.6 504 0 394.5 0 256 0 123.1 104.7 8 247.6 8zm.8 44.7C130.2 52.7 44.7 150.6 44.7 256c0 109.8 91.2 202.8 203.7 202.8 103.2 0 202.8-81.1 202.8-202.8.1-113.8-90.2-203.3-202.8-203.3zM137.7 221c13-83.9 80.5-95.7 108.9-95.7 99.8 0 127.5 82.5 127.5 134.2 0 63.6-41 132.9-128.9 132.9-38.9 0-99.1-20-109.4-97h62.5c1.5 30.1 19.6 45.2 54.5 45.2 23.3 0 58-18.2 58-82.8 0-82.5-49.1-80.6-56.7-80.6-33.1 0-51.7 14.6-55.8 43.8h18.2l-49.2 49.2-49-49.2h19.4z\"]\n};\nvar faCreativeCommonsSampling = {\n prefix: 'fab',\n iconName: 'creative-commons-sampling',\n icon: [496, 512, [], \"f4f0\", \"M247.6 8C389.4 8 496 118.1 496 256c0 147.1-118.5 248-248.4 248C113.6 504 0 394.5 0 256 0 123.1 104.7 8 247.6 8zm.8 44.7C130.2 52.7 44.7 150.6 44.7 256c0 109.8 91.2 202.8 203.7 202.8 103.2 0 202.8-81.1 202.8-202.8.1-113.8-90.2-203.3-202.8-203.3zm3.6 53.2c2.8-.3 11.5 1 11.5 11.5l6.6 107.2 4.9-59.3c0-6 4.7-10.6 10.6-10.6 5.9 0 10.6 4.7 10.6 10.6 0 2.5-.5-5.7 5.7 81.5l5.8-64.2c.3-2.9 2.9-9.3 10.2-9.3 3.8 0 9.9 2.3 10.6 8.9l11.5 96.5 5.3-12.8c1.8-4.4 5.2-6.6 10.2-6.6h58v21.3h-50.9l-18.2 44.3c-3.9 9.9-19.5 9.1-20.8-3.1l-4-31.9-7.5 92.6c-.3 3-3 9.3-10.2 9.3-3 0-9.8-2.1-10.6-9.3 0-1.9.6 5.8-6.2-77.9l-5.3 72.2c-1.1 4.8-4.8 9.3-10.6 9.3-2.9 0-9.8-2-10.6-9.3 0-1.9.5 6.7-5.8-87.7l-5.8 94.8c0 6.3-3.6 12.4-10.6 12.4-5.2 0-10.6-4.1-10.6-12l-5.8-87.7c-5.8 92.5-5.3 84-5.3 85.9-1.1 4.8-4.8 9.3-10.6 9.3-3 0-9.8-2.1-10.6-9.3 0-.7-.4-1.1-.4-2.6l-6.2-88.6L182 348c-.7 6.5-6.7 9.3-10.6 9.3-5.8 0-9.6-4.1-10.6-8.9L149.7 272c-2 4-3.5 8.4-11.1 8.4H87.2v-21.3H132l13.7-27.9c4.4-9.9 18.2-7.2 19.9 2.7l3.1 20.4 8.4-97.9c0-6 4.8-10.6 10.6-10.6.5 0 10.6-.2 10.6 12.4l4.9 69.1 6.6-92.6c0-10.1 9.5-10.6 10.2-10.6.6 0 10.6.7 10.6 10.6l5.3 80.6 6.2-97.9c.1-1.1-.6-10.3 9.9-11.5z\"]\n};\nvar faCreativeCommonsSamplingPlus = {\n prefix: 'fab',\n iconName: 'creative-commons-sampling-plus',\n icon: [496, 512, [], \"f4f1\", \"M247.6 8C389.4 8 496 118.1 496 256c0 147.1-118.5 248-248.4 248C113.6 504 0 394.5 0 256 0 123.1 104.7 8 247.6 8zm.8 44.7C130.2 52.7 44.7 150.6 44.7 256c0 109.8 91.2 202.8 203.7 202.8 103.2 0 202.8-81.1 202.8-202.8.1-113.8-90.2-203.3-202.8-203.3zm107 205.6c-4.7 0-9 2.8-10.7 7.2l-4 9.5-11-92.8c-1.7-13.9-22-13.4-23.1.4l-4.3 51.4-5.2-68.8c-1.1-14.3-22.1-14.2-23.2 0l-3.5 44.9-5.9-94.3c-.9-14.5-22.3-14.4-23.2 0l-5.1 83.7-4.3-66.3c-.9-14.4-22.2-14.4-23.2 0l-5.3 80.2-4.1-57c-1.1-14.3-22-14.3-23.2-.2l-7.7 89.8-1.8-12.2c-1.7-11.4-17.1-13.6-22-3.3l-13.2 27.7H87.5v23.2h51.3c4.4 0 8.4-2.5 10.4-6.4l10.7 73.1c2 13.5 21.9 13 23.1-.7l3.8-43.6 5.7 78.3c1.1 14.4 22.3 14.2 23.2-.1l4.6-70.4 4.8 73.3c.9 14.4 22.3 14.4 23.2-.1l4.9-80.5 4.5 71.8c.9 14.3 22.1 14.5 23.2.2l4.6-58.6 4.9 64.4c1.1 14.3 22 14.2 23.1.1l6.8-83 2.7 22.3c1.4 11.8 17.7 14.1 22.3 3.1l18-43.4h50.5V258l-58.4.3zm-78 5.2h-21.9v21.9c0 4.1-3.3 7.5-7.5 7.5-4.1 0-7.5-3.3-7.5-7.5v-21.9h-21.9c-4.1 0-7.5-3.3-7.5-7.5 0-4.1 3.4-7.5 7.5-7.5h21.9v-21.9c0-4.1 3.4-7.5 7.5-7.5s7.5 3.3 7.5 7.5v21.9h21.9c4.1 0 7.5 3.3 7.5 7.5 0 4.1-3.4 7.5-7.5 7.5z\"]\n};\nvar faCreativeCommonsShare = {\n prefix: 'fab',\n iconName: 'creative-commons-share',\n icon: [496, 512, [], \"f4f2\", \"M247.6 8C389.4 8 496 118.1 496 256c0 147.1-118.5 248-248.4 248C113.6 504 0 394.5 0 256 0 123.1 104.7 8 247.6 8zm.8 44.7C130.2 52.7 44.7 150.6 44.7 256c0 109.8 91.2 202.8 203.7 202.8 103.2 0 202.8-81.1 202.8-202.8.1-113.8-90.2-203.3-202.8-203.3zm101 132.4c7.8 0 13.7 6.1 13.7 13.7v182.5c0 7.7-6.1 13.7-13.7 13.7H214.3c-7.7 0-13.7-6-13.7-13.7v-54h-54c-7.8 0-13.7-6-13.7-13.7V131.1c0-8.2 6.6-12.7 12.4-13.7h136.4c7.7 0 13.7 6 13.7 13.7v54h54zM159.9 300.3h40.7V198.9c0-7.4 5.8-12.6 12-13.7h55.8v-40.3H159.9v155.4zm176.2-88.1H227.6v155.4h108.5V212.2z\"]\n};\nvar faCreativeCommonsZero = {\n prefix: 'fab',\n iconName: 'creative-commons-zero',\n icon: [496, 512, [], \"f4f3\", \"M247.6 8C389.4 8 496 118.1 496 256c0 147.1-118.5 248-248.4 248C113.6 504 0 394.5 0 256 0 123.1 104.7 8 247.6 8zm.8 44.7C130.2 52.7 44.7 150.6 44.7 256c0 109.8 91.2 202.8 203.7 202.8 103.2 0 202.8-81.1 202.8-202.8.1-113.8-90.2-203.3-202.8-203.3zm-.4 60.5c-81.9 0-102.5 77.3-102.5 142.8 0 65.5 20.6 142.8 102.5 142.8S350.5 321.5 350.5 256c0-65.5-20.6-142.8-102.5-142.8zm0 53.9c3.3 0 6.4.5 9.2 1.2 5.9 5.1 8.8 12.1 3.1 21.9l-54.5 100.2c-1.7-12.7-1.9-25.1-1.9-34.4 0-28.8 2-88.9 44.1-88.9zm40.8 46.2c2.9 15.4 3.3 31.4 3.3 42.7 0 28.9-2 88.9-44.1 88.9-13.5 0-32.6-7.7-20.1-26.4l60.9-105.2z\"]\n};\nvar faCriticalRole = {\n prefix: 'fab',\n iconName: 'critical-role',\n icon: [448, 512, [], \"f6c9\", \"M225.82 0c.26.15 216.57 124.51 217.12 124.72 3 1.18 3.7 3.46 3.7 6.56q-.11 125.17 0 250.36a5.88 5.88 0 0 1-3.38 5.78c-21.37 12-207.86 118.29-218.93 124.58h-3C142 466.34 3.08 386.56 2.93 386.48a3.29 3.29 0 0 1-1.88-3.24c0-.87 0-225.94-.05-253.1a5 5 0 0 1 2.93-4.93C27.19 112.11 213.2 6 224.07 0zM215.4 20.42l-.22-.16Q118.06 75.55 21 130.87c0 .12.08.23.13.35l30.86 11.64c-7.71 6-8.32 6-10.65 5.13-.1 0-24.17-9.28-26.8-10v230.43c.88-1.41 64.07-110.91 64.13-111 1.62-2.82 3-1.92 9.12-1.52 1.4.09 1.48.22.78 1.42-41.19 71.33-36.4 63-67.48 116.94-.81 1.4-.61 1.13 1.25 1.13h186.5c1.44 0 1.69-.23 1.7-1.64v-8.88c0-1.34 2.36-.81-18.37-1-7.46-.07-14.14-3.22-21.38-12.7-7.38-9.66-14.62-19.43-21.85-29.21-2.28-3.08-3.45-2.38-16.76-2.38-1.75 0-1.78 0-1.76 1.82.29 26.21.15 25.27 1 32.66.52 4.37 2.16 4.2 9.69 4.81 3.14.26 3.88 4.08.52 4.92-1.57.39-31.6.51-33.67-.1a2.42 2.42 0 0 1 .3-4.73c3.29-.76 6.16.81 6.66-4.44 1.3-13.66 1.17-9 1.1-79.42 0-10.82-.35-12.58-5.36-13.55-1.22-.24-3.54-.16-4.69-.55-2.88-1-2-4.84 1.77-4.85 33.67 0 46.08-1.07 56.06 4.86 7.74 4.61 12 11.48 12.51 20.4.88 14.59-6.51 22.35-15 32.59a1.46 1.46 0 0 0 0 2.22c2.6 3.25 5 6.63 7.71 9.83 27.56 33.23 24.11 30.54 41.28 33.06.89.13 1-.42 1-1.15v-11c0-1 .32-1.43 1.41-1.26a72.37 72.37 0 0 0 23.58-.3c1.08-.15 1.5.2 1.48 1.33 0 .11.88 26.69.87 26.8-.05 1.52.67 1.62 1.89 1.62h186.71Q386.51 304.6 346 234.33c2.26-.66-.4 0 6.69-1.39 2-.39 2.05-.41 3.11 1.44 7.31 12.64 77.31 134 77.37 134.06V138c-1.72.5-103.3 38.72-105.76 39.68-1.08.42-1.55.2-1.91-.88-.63-1.9-1.34-3.76-2.09-5.62-.32-.79-.09-1.13.65-1.39.1 0 95.53-35.85 103-38.77-65.42-37.57-130.56-75-196-112.6l86.82 150.39-.28.33c-9.57-.9-10.46-1.6-11.8-3.94-1-1.69-73.5-127.71-82-142.16-9.1 14.67-83.56 146.21-85.37 146.32-2.93.17-5.88.08-9.25.08q43.25-74.74 86.18-149zm51.93 129.92a37.68 37.68 0 0 0 5.54-.85c1.69-.3 2.53.2 2.6 1.92 0 .11.07 19.06-.86 20.45s-1.88 1.22-2.6-.19c-5-9.69 6.22-9.66-39.12-12-.7 0-1 .23-1 .93 0 .13 3.72 122 3.73 122.11 0 .89.52 1.2 1.21 1.51a83.92 83.92 0 0 1 8.7 4.05c7.31 4.33 11.38 10.84 12.41 19.31 1.44 11.8-2.77 35.77-32.21 37.14-2.75.13-28.26 1.08-34.14-23.25-4.66-19.26 8.26-32.7 19.89-36.4a2.45 2.45 0 0 0 2-2.66c.1-5.63 3-107.1 3.71-121.35.05-1.08-.62-1.16-1.35-1.15-32.35.52-36.75-.34-40.22 8.52-2.42 6.18-4.14 1.32-3.95.23q1.59-9 3.31-18c.4-2.11 1.43-2.61 3.43-1.86 5.59 2.11 6.72 1.7 37.25 1.92 1.73 0 1.78-.08 1.82-1.85.68-27.49.58-22.59 1-29.55a2.69 2.69 0 0 0-1.63-2.8c-5.6-2.91-8.75-7.55-8.9-13.87-.35-14.81 17.72-21.67 27.38-11.51 6.84 7.19 5.8 18.91-2.45 24.15a4.35 4.35 0 0 0-2.22 4.34c0 .59-.11-4.31 1 30.05 0 .9.43 1.12 1.24 1.11.1 0 23-.09 34.47-.37zM68.27 141.7c19.84-4.51 32.68-.56 52.49 1.69 2.76.31 3.74 1.22 3.62 4-.21 5-1.16 22.33-1.24 23.15a2.65 2.65 0 0 1-1.63 2.34c-4.06 1.7-3.61-4.45-4-7.29-3.13-22.43-73.87-32.7-74.63 25.4-.31 23.92 17 53.63 54.08 50.88 27.24-2 19-20.19 24.84-20.47a2.72 2.72 0 0 1 3 3.36c-1.83 10.85-3.42 18.95-3.45 19.15-1.54 9.17-86.7 22.09-93.35-42.06-2.71-25.85 10.44-53.37 40.27-60.15zm80 87.67h-19.49a2.57 2.57 0 0 1-2.66-1.79c2.38-3.75 5.89.92 5.86-6.14-.08-25.75.21-38 .23-40.1 0-3.42-.53-4.65-3.32-4.94-7-.72-3.11-3.37-1.11-3.38 11.84-.1 22.62-.18 30.05.72 8.77 1.07 16.71 12.63 7.93 22.62-2 2.25-4 4.42-6.14 6.73.95 1.15 6.9 8.82 17.28 19.68 2.66 2.78 6.15 3.51 9.88 3.13a2.21 2.21 0 0 0 2.23-2.12c.3-3.42.26 4.73.45-40.58 0-5.65-.34-6.58-3.23-6.83-3.95-.35-4-2.26-.69-3.37l19.09-.09c.32 0 4.49.53 1 3.38 0 .05-.16 0-.24 0-3.61.26-3.94 1-4 4.62-.27 43.93.07 40.23.41 42.82.11.84.27 2.23 5.1 2.14 2.49 0 3.86 3.37 0 3.4-10.37.08-20.74 0-31.11.07-10.67 0-13.47-6.2-24.21-20.82-1.6-2.18-8.31-2.36-8.2-.37.88 16.47 0 17.78 4 17.67 4.75-.1 4.73 3.57.83 3.55zm275-10.15c-1.21 7.13.17 10.38-5.3 10.34-61.55-.42-47.82-.22-50.72-.31a18.4 18.4 0 0 1-3.63-.73c-2.53-.6 1.48-1.23-.38-5.6-1.43-3.37-2.78-6.78-4.11-10.19a1.94 1.94 0 0 0-2-1.44 138 138 0 0 0-14.58.07 2.23 2.23 0 0 0-1.62 1.06c-1.58 3.62-3.07 7.29-4.51 11-1.27 3.23 7.86 1.32 12.19 2.16 3 .57 4.53 3.72.66 3.73H322.9c-2.92 0-3.09-3.15-.74-3.21a6.3 6.3 0 0 0 5.92-3.47c1.5-3 2.8-6 4.11-9.09 18.18-42.14 17.06-40.17 18.42-41.61a1.83 1.83 0 0 1 3 0c2.93 3.34 18.4 44.71 23.62 51.92 2 2.7 5.74 2 6.36 2 3.61.13 4-1.11 4.13-4.29.09-1.87.08 1.17.07-41.24 0-4.46-2.36-3.74-5.55-4.27-.26 0-2.56-.63-.08-3.06.21-.2-.89-.24 21.7-.15 2.32 0 5.32 2.75-1.21 3.45a2.56 2.56 0 0 0-2.66 2.83c-.07 1.63-.19 38.89.29 41.21a3.06 3.06 0 0 0 3.23 2.43c13.25.43 14.92.44 16-3.41 1.67-5.78 4.13-2.52 3.73-.19zm-104.72 64.37c-4.24 0-4.42-3.39-.61-3.41 35.91-.16 28.11.38 37.19-.65 1.68-.19 2.38.24 2.25 1.89-.26 3.39-.64 6.78-1 10.16-.25 2.16-3.2 2.61-3.4-.15-.38-5.31-2.15-4.45-15.63-5.08-1.58-.07-1.64 0-1.64 1.52V304c0 1.65 0 1.6 1.62 1.47 3.12-.25 10.31.34 15.69-1.52.47-.16 3.3-1.79 3.07 1.76 0 .21-.76 10.35-1.18 11.39-.53 1.29-1.88 1.51-2.58.32-1.17-2 0-5.08-3.71-5.3-15.42-.9-12.91-2.55-12.91 6 0 12.25-.76 16.11 3.89 16.24 16.64.48 14.4 0 16.43-5.71.84-2.37 3.5-1.77 3.18.58-.44 3.21-.85 6.43-1.23 9.64 0 .36-.16 2.4-4.66 2.39-37.16-.08-34.54-.19-35.21-.31-2.72-.51-2.2-3 .22-3.45 1.1-.19 4 .54 4.16-2.56 2.44-56.22-.07-51.34-3.91-51.33zm-.41-109.52c2.46.61 3.13 1.76 2.95 4.65-.33 5.3-.34 9-.55 9.69-.66 2.23-3.15 2.12-3.34-.27-.38-4.81-3.05-7.82-7.57-9.15-26.28-7.73-32.81 15.46-27.17 30.22 5.88 15.41 22 15.92 28.86 13.78 5.92-1.85 5.88-6.5 6.91-7.58 1.23-1.3 2.25-1.84 3.12 1.1 0 .1.57 11.89-6 12.75-1.6.21-19.38 3.69-32.68-3.39-21-11.19-16.74-35.47-6.88-45.33 14-14.06 39.91-7.06 42.32-6.47zM289.8 280.14c3.28 0 3.66 3 .16 3.43-2.61.32-5-.42-5 5.46 0 2-.19 29.05.4 41.45.11 2.29 1.15 3.52 3.44 3.65 22 1.21 14.95-1.65 18.79-6.34 1.83-2.24 2.76.84 2.76 1.08.35 13.62-4 12.39-5.19 12.4l-38.16-.19c-1.93-.23-2.06-3-.42-3.38 2-.48 4.94.4 5.13-2.8 1-15.87.57-44.65.34-47.81-.27-3.77-2.8-3.27-5.68-3.71-2.47-.38-2-3.22.34-3.22 1.45-.02 17.97-.03 23.09-.02zm-31.63-57.79c.07 4.08 2.86 3.46 6 3.58 2.61.1 2.53 3.41-.07 3.43-6.48 0-13.7 0-21.61-.06-3.84 0-3.38-3.35 0-3.37 4.49 0 3.24 1.61 3.41-45.54 0-5.08-3.27-3.54-4.72-4.23-2.58-1.23-1.36-3.09.41-3.15 1.29 0 20.19-.41 21.17.21s1.87 1.65-.42 2.86c-1 .52-3.86-.28-4.15 2.47 0 .21-.82 1.63-.07 43.8zm-36.91 274.27a2.93 2.93 0 0 0 3.26 0c17-9.79 182-103.57 197.42-112.51-.14-.43 11.26-.18-181.52-.27-1.22 0-1.57.37-1.53 1.56 0 .1 1.25 44.51 1.22 50.38a28.33 28.33 0 0 1-1.36 7.71c-.55 1.83.38-.5-13.5 32.23-.73 1.72-1 2.21-2-.08-4.19-10.34-8.28-20.72-12.57-31a23.6 23.6 0 0 1-2-10.79c.16-2.46.8-16.12 1.51-48 0-1.95 0-2-2-2h-183c2.58 1.63 178.32 102.57 196 112.76zm-90.9-188.75c0 2.4.36 2.79 2.76 3 11.54 1.17 21 3.74 25.64-7.32 6-14.46 2.66-34.41-12.48-38.84-2-.59-16-2.76-15.94 1.51.05 8.04.01 11.61.02 41.65zm105.75-15.05c0 2.13 1.07 38.68 1.09 39.13.34 9.94-25.58 5.77-25.23-2.59.08-2 1.37-37.42 1.1-39.43-14.1 7.44-14.42 40.21 6.44 48.8a17.9 17.9 0 0 0 22.39-7.07c4.91-7.76 6.84-29.47-5.43-39a2.53 2.53 0 0 1-.36.12zm-12.28-198c-9.83 0-9.73 14.75-.07 14.87s10.1-14.88.07-14.91zm-80.15 103.83c0 1.8.41 2.4 2.17 2.58 13.62 1.39 12.51-11 12.16-13.36-1.69-11.22-14.38-10.2-14.35-7.81.05 4.5-.03 13.68.02 18.59zm212.32 6.4l-6.1-15.84c-2.16 5.48-4.16 10.57-6.23 15.84z\"]\n};\nvar faCss3 = {\n prefix: 'fab',\n iconName: 'css3',\n icon: [512, 512, [], \"f13c\", \"M480 32l-64 368-223.3 80L0 400l19.6-94.8h82l-8 40.6L210 390.2l134.1-44.4 18.8-97.1H29.5l16-82h333.7l10.5-52.7H56.3l16.3-82H480z\"]\n};\nvar faCss3Alt = {\n prefix: 'fab',\n iconName: 'css3-alt',\n icon: [384, 512, [], \"f38b\", \"M0 32l34.9 395.8L192 480l157.1-52.2L384 32H0zm313.1 80l-4.8 47.3L193 208.6l-.3.1h111.5l-12.8 146.6-98.2 28.7-98.8-29.2-6.4-73.9h48.9l3.2 38.3 52.6 13.3 54.7-15.4 3.7-61.6-166.3-.5v-.1l-.2.1-3.6-46.3L193.1 162l6.5-2.7H76.7L70.9 112h242.2z\"]\n};\nvar faCuttlefish = {\n prefix: 'fab',\n iconName: 'cuttlefish',\n icon: [440, 512, [], \"f38c\", \"M344 305.5c-17.5 31.6-57.4 54.5-96 54.5-56.6 0-104-47.4-104-104s47.4-104 104-104c38.6 0 78.5 22.9 96 54.5 13.7-50.9 41.7-93.3 87-117.8C385.7 39.1 320.5 8 248 8 111 8 0 119 0 256s111 248 248 248c72.5 0 137.7-31.1 183-80.7-45.3-24.5-73.3-66.9-87-117.8z\"]\n};\nvar faDAndD = {\n prefix: 'fab',\n iconName: 'd-and-d',\n icon: [576, 512, [], \"f38d\", \"M82.5 98.9c-.6-17.2 2-33.8 12.7-48.2.3 7.4 1.2 14.5 4.2 21.6 5.9-27.5 19.7-49.3 42.3-65.5-1.9 5.9-3.5 11.8-3 17.7 8.7-7.4 18.8-17.8 44.4-22.7 14.7-2.8 29.7-2 42.1 1 38.5 9.3 61 34.3 69.7 72.3 5.3 23.1.7 45-8.3 66.4-5.2 12.4-12 24.4-20.7 35.1-2-1.9-3.9-3.8-5.8-5.6-42.8-40.8-26.8-25.2-37.4-37.4-1.1-1.2-1-2.2-.1-3.6 8.3-13.5 11.8-28.2 10-44-1.1-9.8-4.3-18.9-11.3-26.2-14.5-15.3-39.2-15-53.5.6-11.4 12.5-14.1 27.4-10.9 43.6.2 1.3.4 2.7 0 3.9-3.4 13.7-4.6 27.6-2.5 41.6.1.5.1 1.1.1 1.6 0 .3-.1.5-.2 1.1-21.8-11-36-28.3-43.2-52.2-8.3 17.8-11.1 35.5-6.6 54.1-15.6-15.2-21.3-34.3-22-55.2zm469.6 123.2c-11.6-11.6-25-20.4-40.1-26.6-12.8-5.2-26-7.9-39.9-7.1-10 .6-19.6 3.1-29 6.4-2.5.9-5.1 1.6-7.7 2.2-4.9 1.2-7.3-3.1-4.7-6.8 3.2-4.6 3.4-4.2 15-12 .6-.4 1.2-.8 2.2-1.5h-2.5c-.6 0-1.2.2-1.9.3-19.3 3.3-30.7 15.5-48.9 29.6-10.4 8.1-13.8 3.8-12-.5 1.4-3.5 3.3-6.7 5.1-10 1-1.8 2.3-3.4 3.5-5.1-.2-.2-.5-.3-.7-.5-27 18.3-46.7 42.4-57.7 73.3.3.3.7.6 1 .9.3-.6.5-1.2.9-1.7 10.4-12.1 22.8-21.8 36.6-29.8 18.2-10.6 37.5-18.3 58.7-20.2 4.3-.4 8.7-.1 13.1-.1-1.8.7-3.5.9-5.3 1.1-18.5 2.4-35.5 9-51.5 18.5-30.2 17.9-54.5 42.2-75.1 70.4-.3.4-.4.9-.7 1.3 14.5 5.3 24 17.3 36.1 25.6.2-.1.3-.2.4-.4l1.2-2.7c12.2-26.9 27-52.3 46.7-74.5 16.7-18.8 38-25.3 62.5-20 5.9 1.3 11.4 4.4 17.2 6.8 2.3-1.4 5.1-3.2 8-4.7 8.4-4.3 17.4-7 26.7-9 14.7-3.1 29.5-4.9 44.5-1.3v-.5c-.5-.4-1.2-.8-1.7-1.4zM316.7 397.6c-39.4-33-22.8-19.5-42.7-35.6-.8.9 0-.2-1.9 3-11.2 19.1-25.5 35.3-44 47.6-10.3 6.8-21.5 11.8-34.1 11.8-21.6 0-38.2-9.5-49.4-27.8-12-19.5-13.3-40.7-8.2-62.6 7.8-33.8 30.1-55.2 38.6-64.3-18.7-6.2-33 1.7-46.4 13.9.8-13.9 4.3-26.2 11.8-37.3-24.3 10.6-45.9 25-64.8 43.9-.3-5.8 5.4-43.7 5.6-44.7.3-2.7-.6-5.3-3-7.4-24.2 24.7-44.5 51.8-56.1 84.6 7.4-5.9 14.9-11.4 23.6-16.2-8.3 22.3-19.6 52.8-7.8 101.1 4.6 19 11.9 36.8 24.1 52.3 2.9 3.7 6.3 6.9 9.5 10.3.2-.2.4-.3.6-.5-1.4-7-2.2-14.1-1.5-21.9 2.2 3.2 3.9 6 5.9 8.6 12.6 16 28.7 27.4 47.2 35.6 25 11.3 51.1 13.3 77.9 8.6 54.9-9.7 90.7-48.6 116-98.8 1-1.8.6-2.9-.9-4.2zm172-46.4c-9.5-3.1-22.2-4.2-28.7-2.9 9.9 4 14.1 6.6 18.8 12 12.6 14.4 10.4 34.7-5.4 45.6-11.7 8.1-24.9 10.5-38.9 9.1-1.2-.1-2.3-.4-3-.6 2.8-3.7 6-7 8.1-10.8 9.4-16.8 5.4-42.1-8.7-56.1-2.1-2.1-4.6-3.9-7-5.9-.3 1.3-.1 2.1.1 2.8 4.2 16.6-8.1 32.4-24.8 31.8-7.6-.3-13.9-3.8-19.6-8.5-19.5-16.1-39.1-32.1-58.5-48.3-5.9-4.9-12.5-8.1-20.1-8.7-4.6-.4-9.3-.6-13.9-.9-5.9-.4-8.8-2.8-10.4-8.4-.9-3.4-1.5-6.8-2.2-10.2-1.5-8.1-6.2-13-14.3-14.2-4.4-.7-8.9-1-13.3-1.5-13-1.4-19.8-7.4-22.6-20.3-5 11-1.6 22.4 7.3 29.9 4.5 3.8 9.3 7.3 13.8 11.2 4.6 3.8 7.4 8.7 7.9 14.8.4 4.7.8 9.5 1.8 14.1 2.2 10.6 8.9 18.4 17 25.1 16.5 13.7 33 27.3 49.5 41.1 17.9 15 13.9 32.8 13 56-.9 22.9 12.2 42.9 33.5 51.2 1 .4 2 .6 3.6 1.1-15.7-18.2-10.1-44.1.7-52.3.3 2.2.4 4.3.9 6.4 9.4 44.1 45.4 64.2 85 56.9 16-2.9 30.6-8.9 42.9-19.8 2-1.8 3.7-4.1 5.9-6.5-19.3 4.6-35.8.1-50.9-10.6.7-.3 1.3-.3 1.9-.3 21.3 1.8 40.6-3.4 57-17.4 19.5-16.6 26.6-42.9 17.4-66-8.3-20.1-23.6-32.3-43.8-38.9zM99.4 179.3c-5.3-9.2-13.2-15.6-22.1-21.3 13.7-.5 26.6.2 39.6 3.7-7-12.2-8.5-24.7-5-38.7 5.3 11.9 13.7 20.1 23.6 26.8 19.7 13.2 35.7 19.6 46.7 30.2 3.4 3.3 6.3 7.1 9.6 10.9-.8-2.1-1.4-4.1-2.2-6-5-10.6-13-18.6-22.6-25-1.8-1.2-2.8-2.5-3.4-4.5-3.3-12.5-3-25.1-.7-37.6 1-5.5 2.8-10.9 4.5-16.3.8-2.4 2.3-4.6 4-6.6.6 6.9 0 25.5 19.6 46 10.8 11.3 22.4 21.9 33.9 32.7 9 8.5 18.3 16.7 25.5 26.8 1.1 1.6 2.2 3.3 3.8 4.7-5-13-14.2-24.1-24.2-33.8-9.6-9.3-19.4-18.4-29.2-27.4-3.3-3-4.6-6.7-5.1-10.9-1.2-10.4 0-20.6 4.3-30.2.5-1 1.1-2 1.9-3.3.5 4.2.6 7.9 1.4 11.6 4.8 23.1 20.4 36.3 49.3 63.5 10 9.4 19.3 19.2 25.6 31.6 4.8 9.3 7.3 19 5.7 29.6-.1.6.5 1.7 1.1 2 6.2 2.6 10 6.9 9.7 14.3 7.7-2.6 12.5-8 16.4-14.5 4.2 20.2-9.1 50.3-27.2 58.7.4-4.5 5-23.4-16.5-27.7-6.8-1.3-12.8-1.3-22.9-2.1 4.7-9 10.4-20.6.5-22.4-24.9-4.6-52.8 1.9-57.8 4.6 8.2.4 16.3 1 23.5 3.3-2 6.5-4 12.7-5.8 18.9-1.9 6.5 2.1 14.6 9.3 9.6 1.2-.9 2.3-1.9 3.3-2.7-3.1 17.9-2.9 15.9-2.8 18.3.3 10.2 9.5 7.8 15.7 7.3-2.5 11.8-29.5 27.3-45.4 25.8 7-4.7 12.7-10.3 15.9-17.9-6.5.8-12.9 1.6-19.2 2.4l-.3-.9c4.7-3.4 8-7.8 10.2-13.1 8.7-21.1-3.6-38-25-39.9-9.1-.8-17.8.8-25.9 5.5 6.2-15.6 17.2-26.6 32.6-34.5-15.2-4.3-8.9-2.7-24.6-6.3 14.6-9.3 30.2-13.2 46.5-14.6-5.2-3.2-48.1-3.6-70.2 20.9 7.9 1.4 15.5 2.8 23.2 4.2-23.8 7-44 19.7-62.4 35.6 1.1-4.8 2.7-9.5 3.3-14.3.6-4.5.8-9.2.1-13.6-1.5-9.4-8.9-15.1-19.7-16.3-7.9-.9-15.6.1-23.3 1.3-.9.1-1.7.3-2.9 0 15.8-14.8 36-21.7 53.1-33.5 6-4.5 6.8-8.2 3-14.9zm128.4 26.8c3.3 16 12.6 25.5 23.8 24.3-4.6-11.3-12.1-19.5-23.8-24.3z\"]\n};\nvar faDAndDBeyond = {\n prefix: 'fab',\n iconName: 'd-and-d-beyond',\n icon: [640, 512, [], \"f6ca\", \"M313.8 241.5c13.8 0 21-10.1 24.8-17.9-1-1.1-5-4.2-7.4-6.6-2.4 4.3-8.2 10.7-13.9 10.7-10.2 0-15.4-14.7-3.2-26.6-.5-.2-4.3-1.8-8 2.4 0-3 1-5.1 2.1-6.6-3.5 1.3-9.8 5.6-11.4 7.9.2-5.8 1.6-7.5.6-9l-.2-.2s-8.5 5.6-9.3 14.7c0 0 1.1-1.6 2.1-1.9.6-.3 1.3 0 .6 1.9-.2.6-5.8 15.7 5.1 26-.6-1.6-1.9-7.6 2.4-1.9-.3.1 5.8 7.1 15.7 7.1zm52.4-21.1c0-4-4.9-4.4-5.6-4.5 2 3.9.9 7.5.2 9 2.5-.4 5.4-1.6 5.4-4.5zm10.3 5.2c0-6.4-6.2-11.4-13.5-10.7 8 1.3 5.6 13.8-5 11.4 3.7-2.6 3.2-9.9-1.3-12.5 1.4 4.2-3 8.2-7.4 4.6-2.4-1.9-8-6.6-10.6-8.6-2.4-2.1-5.5-1-6.6-1.8-1.3-1.1-.5-3.8-2.2-5-1.6-.8-3-.3-4.8-1-1.6-.6-2.7-1.9-2.6-3.5-2.5 4.4 3.4 6.3 4.5 8.5 1 1.9-.8 4.8 4 8.5 14.8 11.6 9.1 8 10.4 18.1.6 4.3 4.2 6.7 6.4 7.4-2.1-1.9-2.9-6.4 0-9.3 0 13.9 19.2 13.3 23.1 6.4-2.4 1.1-7-.2-9-1.9 7.7 1 14.2-4.1 14.6-10.6zm-39.4-18.4c2 .8 1.6.7 6.4 4.5 10.2-24.5 21.7-15.7 22-15.5 2.2-1.9 9.8-3.8 13.8-2.7-2.4-2.7-7.5-6.2-13.3-6.2-4.7 0-7.4 2.2-8 1.3-.8-1.4 3.2-3.4 3.2-3.4-5.4.2-9.6 6.7-11.2 5.9-1.1-.5 1.4-3.7 1.4-3.7-5.1 2.9-9.3 9.1-10.2 13 4.6-5.8 13.8-9.8 19.7-9-10.5.5-19.5 9.7-23.8 15.8zm242.5 51.9c-20.7 0-40 1.3-50.3 2.1l7.4 8.2v77.2l-7.4 8.2c10.4.8 30.9 2.1 51.6 2.1 42.1 0 59.1-20.7 59.1-48.9 0-29.3-23.2-48.9-60.4-48.9zm-15.1 75.6v-53.3c30.1-3.3 46.8 3.8 46.8 26.3 0 25.6-21.4 30.2-46.8 27zM301.6 181c-1-3.4-.2-6.9 1.1-9.4 1 3 2.6 6.4 7.5 9-.5-2.4-.2-5.6.5-8-1.4-5.4 2.1-9.9 6.4-9.9 6.9 0 8.5 8.8 4.7 14.4 2.1 3.2 5.5 5.6 7.7 7.8 3.2-3.7 5.5-9.5 5.5-13.8 0-8.2-5.5-15.9-16.7-16.5-20-.9-20.2 16.6-20 18.9.5 5.2 3.4 7.8 3.3 7.5zm-.4 6c-.5 1.8-7 3.7-10.2 6.9 4.8-1 7-.2 7.8 1.8.5 1.4-.2 3.4-.5 5.6 1.6-1.8 7-5.5 11-6.2-1-.3-3.4-.8-4.3-.8 2.9-3.4 9.3-4.5 12.8-3.7-2.2-.2-6.7 1.1-8.5 2.6 1.6.3 3 .6 4.3 1.1-2.1.8-4.8 3.4-5.8 6.1 7-5 13.1 5.2 7 8.2.8.2 2.7 0 3.5-.5-.3 1.1-1.9 3-3 3.4 2.9 0 7-1.9 8.2-4.6 0 0-1.8.6-2.6-.2s.3-4.3.3-4.3c-2.3 2.9-3.4-1.3-1.3-4.2-1-.3-3.5-.6-4.6-.5 3.2-1.1 10.4-1.8 11.2-.3.6 1.1-1 3.4-1 3.4 4-.5 8.3 1.1 6.7 5.1 2.9-1.4 5.5-5.9 4.8-10.4-.3 1-1.6 2.4-2.9 2.7.2-1.4-1-2.2-1.9-2.6 1.7-9.6-14.6-14.2-14.1-23.9-1 1.3-1.8 5-.8 7.1 2.7 3.2 8.7 6.7 10.1 12.2-2.6-6.4-15.1-11.4-14.6-20.2-1.6 1.6-2.6 7.8-1.3 11 2.4 1.4 4.5 3.8 4.8 6.1-2.2-5.1-11.4-6.1-13.9-12.2-.6 2.2-.3 5 1 6.7 0 0-2.2-.8-7-.6 1.7.6 5.1 3.5 4.8 5.2zm25.9 7.4c-2.7 0-3.5-2.1-4.2-4.3 3.3 1.3 4.2 4.3 4.2 4.3zm38.9 3.7l-1-.6c-1.1-1-2.9-1.4-4.7-1.4-2.9 0-5.8 1.3-7.5 3.4-.8.8-1.4 1.8-2.1 2.6v15.7c3.5 2.6 7.1-2.9 3-7.2 1.5.3 4.6 2.7 5.1 3.2 0 0 2.6-.5 5-.5 2.1 0 3.9.3 5.6 1.1V196c-1.1.5-2.2 1-2.7 1.4zM79.9 305.9c17.2-4.6 16.2-18 16.2-19.9 0-20.6-24.1-25-37-25H3l8.3 8.6v29.5H0l11.4 14.6V346L3 354.6c61.7 0 73.8 1.5 86.4-5.9 6.7-4 9.9-9.8 9.9-17.6 0-5.1 2.6-18.8-19.4-25.2zm-41.3-27.5c20 0 29.6-.8 29.6 9.1v3c0 12.1-19 8.8-29.6 8.8zm0 59.2V315c12.2 0 32.7-2.3 32.7 8.8v4.5h.2c0 11.2-12.5 9.3-32.9 9.3zm101.2-19.3l23.1.2v-.2l14.1-21.2h-37.2v-14.9h52.4l-14.1-21v-.2l-73.5.2 7.4 8.2v77.1l-7.4 8.2h81.2l14.1-21.2-60.1.2zm214.7-60.1c-73.9 0-77.5 99.3-.3 99.3 77.9 0 74.1-99.3.3-99.3zm-.3 77.5c-37.4 0-36.9-55.3.2-55.3 36.8.1 38.8 55.3-.2 55.3zm-91.3-8.3l44.1-66.2h-41.7l6.1 7.2-20.5 37.2h-.3l-21-37.2 6.4-7.2h-44.9l44.1 65.8.2 19.4-7.7 8.2h42.6l-7.2-8.2zm-28.4-151.3c1.6 1.3 2.9 2.4 2.9 6.6v38.8c0 4.2-.8 5.3-2.7 6.4-.1.1-7.5 4.5-7.9 4.6h35.1c10 0 17.4-1.5 26-8.6-.6-5 .2-9.5.8-12 0-.2-1.8 1.4-2.7 3.5 0-5.7 1.6-15.4 9.6-20.5-.1 0-3.7-.8-9 1.1 2-3.1 10-7.9 10.4-7.9-8.2-26-38-22.9-32.2-22.9-30.9 0-32.6.3-39.9-4 .1.8.5 8.2 9.6 14.9zm21.5 5.5c4.6 0 23.1-3.3 23.1 17.3 0 20.7-18.4 17.3-23.1 17.3zm228.9 79.6l7 8.3V312h-.3c-5.4-14.4-42.3-41.5-45.2-50.9h-31.6l7.4 8.5v76.9l-7.2 8.3h39l-7.4-8.2v-47.4h.3c3.7 10.6 44.5 42.9 48.5 55.6h21.3v-85.2l7.4-8.3zm-106.7-96.1c-32.2 0-32.8.2-39.9-4 .1.7.5 8.3 9.6 14.9 3.1 2 2.9 4.3 2.9 9.5 1.8-1.1 3.8-2.2 6.1-3-1.1 1.1-2.7 2.7-3.5 4.5 1-1.1 7.5-5.1 14.6-3.5-1.6.3-4 1.1-6.1 2.9.1 0 2.1-1.1 7.5-.3v-4.3c4.7 0 23.1-3.4 23.1 17.3 0 20.5-18.5 17.3-19.7 17.3 5.7 4.4 5.8 12 2.2 16.3h.3c33.4 0 36.7-27.3 36.7-34 0-3.8-1.1-32-33.8-33.6z\"]\n};\nvar faDashcube = {\n prefix: 'fab',\n iconName: 'dashcube',\n icon: [448, 512, [], \"f210\", \"M326.6 104H110.4c-51.1 0-91.2 43.3-91.2 93.5V427c0 50.5 40.1 85 91.2 85h227.2c51.1 0 91.2-34.5 91.2-85V0L326.6 104zM153.9 416.5c-17.7 0-32.4-15.1-32.4-32.8V240.8c0-17.7 14.7-32.5 32.4-32.5h140.7c17.7 0 32 14.8 32 32.5v123.5l51.1 52.3H153.9z\"]\n};\nvar faDelicious = {\n prefix: 'fab',\n iconName: 'delicious',\n icon: [448, 512, [], \"f1a5\", \"M446.5 68c-.4-1.5-.9-3-1.4-4.5-.9-2.5-2-4.8-3.3-7.1-1.4-2.4-3-4.8-4.7-6.9-2.1-2.5-4.4-4.8-6.9-6.8-1.1-.9-2.2-1.7-3.3-2.5-1.3-.9-2.6-1.7-4-2.4-1.8-1-3.6-1.8-5.5-2.5-1.7-.7-3.5-1.3-5.4-1.7-3.8-1-7.9-1.5-12-1.5H48C21.5 32 0 53.5 0 80v352c0 4.1.5 8.2 1.5 12 2 7.7 5.8 14.6 11 20.3 1 1.1 2.1 2.2 3.3 3.3 5.7 5.2 12.6 9 20.3 11 3.8 1 7.9 1.5 12 1.5h352c26.5 0 48-21.5 48-48V80c-.1-4.1-.6-8.2-1.6-12zM416 432c0 8.8-7.2 16-16 16H224V256H32V80c0-8.8 7.2-16 16-16h176v192h192z\"]\n};\nvar faDeploydog = {\n prefix: 'fab',\n iconName: 'deploydog',\n icon: [512, 512, [], \"f38e\", \"M382.2 136h51.7v239.6h-51.7v-20.7c-19.8 24.8-52.8 24.1-73.8 14.7-26.2-11.7-44.3-38.1-44.3-71.8 0-29.8 14.8-57.9 43.3-70.8 20.2-9.1 52.7-10.6 74.8 12.9V136zm-64.7 161.8c0 18.2 13.6 33.5 33.2 33.5 19.8 0 33.2-16.4 33.2-32.9 0-17.1-13.7-33.2-33.2-33.2-19.6 0-33.2 16.4-33.2 32.6zM188.5 136h51.7v239.6h-51.7v-20.7c-19.8 24.8-52.8 24.1-73.8 14.7-26.2-11.7-44.3-38.1-44.3-71.8 0-29.8 14.8-57.9 43.3-70.8 20.2-9.1 52.7-10.6 74.8 12.9V136zm-64.7 161.8c0 18.2 13.6 33.5 33.2 33.5 19.8 0 33.2-16.4 33.2-32.9 0-17.1-13.7-33.2-33.2-33.2-19.7 0-33.2 16.4-33.2 32.6zM448 96c17.5 0 32 14.4 32 32v256c0 17.5-14.4 32-32 32H64c-17.5 0-32-14.4-32-32V128c0-17.5 14.4-32 32-32h384m0-32H64C28.8 64 0 92.8 0 128v256c0 35.2 28.8 64 64 64h384c35.2 0 64-28.8 64-64V128c0-35.2-28.8-64-64-64z\"]\n};\nvar faDeskpro = {\n prefix: 'fab',\n iconName: 'deskpro',\n icon: [480, 512, [], \"f38f\", \"M205.9 512l31.1-38.4c12.3-.2 25.6-1.4 36.5-6.6 38.9-18.6 38.4-61.9 38.3-63.8-.1-5-.8-4.4-28.9-37.4H362c-.2 50.1-7.3 68.5-10.2 75.7-9.4 23.7-43.9 62.8-95.2 69.4-8.7 1.1-32.8 1.2-50.7 1.1zm200.4-167.7c38.6 0 58.5-13.6 73.7-30.9l-175.5-.3-17.4 31.3 119.2-.1zm-43.6-223.9v168.3h-73.5l-32.7 55.5H250c-52.3 0-58.1-56.5-58.3-58.9-1.2-13.2-21.3-11.6-20.1 1.8 1.4 15.8 8.8 40 26.4 57.1h-91c-25.5 0-110.8-26.8-107-114V16.9C0 .9 9.7.3 15 .1h82c.2 0 .3.1.5.1 4.3-.4 50.1-2.1 50.1 43.7 0 13.3 20.2 13.4 20.2 0 0-18.2-5.5-32.8-15.8-43.7h84.2c108.7-.4 126.5 79.4 126.5 120.2zm-132.5 56l64 29.3c13.3-45.5-42.2-71.7-64-29.3z\"]\n};\nvar faDev = {\n prefix: 'fab',\n iconName: 'dev',\n icon: [448, 512, [], \"f6cc\", \"M120.12 208.29c-3.88-2.9-7.77-4.35-11.65-4.35H91.03v104.47h17.45c3.88 0 7.77-1.45 11.65-4.35 3.88-2.9 5.82-7.25 5.82-13.06v-69.65c-.01-5.8-1.96-10.16-5.83-13.06zM404.1 32H43.9C19.7 32 .06 51.59 0 75.8v360.4C.06 460.41 19.7 480 43.9 480h360.2c24.21 0 43.84-19.59 43.9-43.8V75.8c-.06-24.21-19.7-43.8-43.9-43.8zM154.2 291.19c0 18.81-11.61 47.31-48.36 47.25h-46.4V172.98h47.38c35.44 0 47.36 28.46 47.37 47.28l.01 70.93zm100.68-88.66H201.6v38.42h32.57v29.57H201.6v38.41h53.29v29.57h-62.18c-11.16.29-20.44-8.53-20.72-19.69V193.7c-.27-11.15 8.56-20.41 19.71-20.69h63.19l-.01 29.52zm103.64 115.29c-13.2 30.75-36.85 24.63-47.44 0l-38.53-144.8h32.57l29.71 113.72 29.57-113.72h32.58l-38.46 144.8z\"]\n};\nvar faDeviantart = {\n prefix: 'fab',\n iconName: 'deviantart',\n icon: [320, 512, [], \"f1bd\", \"M320 93.2l-98.2 179.1 7.4 9.5H320v127.7H159.1l-13.5 9.2-43.7 84c-.3 0-8.6 8.6-9.2 9.2H0v-93.2l93.2-179.4-7.4-9.2H0V102.5h156l13.5-9.2 43.7-84c.3 0 8.6-8.6 9.2-9.2H320v93.1z\"]\n};\nvar faDhl = {\n prefix: 'fab',\n iconName: 'dhl',\n icon: [640, 512, [], \"f790\", \"M238 301.2h58.7L319 271h-58.7L238 301.2zM0 282.9v6.4h81.8l4.7-6.4H0zM172.9 271c-8.7 0-6-3.6-4.6-5.5 2.8-3.8 7.6-10.4 10.4-14.1 2.8-3.7 2.8-5.9-2.8-5.9h-51l-41.1 55.8h100.1c33.1 0 51.5-22.5 57.2-30.3h-68.2zm317.5-6.9l39.3-53.4h-62.2l-39.3 53.4h62.2zM95.3 271H0v6.4h90.6l4.7-6.4zm111-26.6c-2.8 3.8-7.5 10.4-10.3 14.2-1.4 2-4.1 5.5 4.6 5.5h45.6s7.3-10 13.5-18.4c8.4-11.4.7-35-29.2-35H112.6l-20.4 27.8h111.4c5.6 0 5.5 2.2 2.7 5.9zM0 301.2h73.1l4.7-6.4H0v6.4zm323 0h58.7L404 271h-58.7c-.1 0-22.3 30.2-22.3 30.2zm222 .1h95v-6.4h-90.3l-4.7 6.4zm22.3-30.3l-4.7 6.4H640V271h-72.7zm-13.5 18.3H640v-6.4h-81.5l-4.7 6.4zm-164.2-78.6l-22.5 30.6h-26.2l22.5-30.6h-58.7l-39.3 53.4H409l39.3-53.4h-58.7zm33.5 60.3s-4.3 5.9-6.4 8.7c-7.4 10-.9 21.6 23.2 21.6h94.3l22.3-30.3H423.1z\"]\n};\nvar faDiaspora = {\n prefix: 'fab',\n iconName: 'diaspora',\n icon: [512, 512, [], \"f791\", \"M251.64 354.55c-1.4 0-88 119.9-88.7 119.9S76.34 414 76 413.25s86.6-125.7 86.6-127.4c0-2.2-129.6-44-137.6-47.1-1.3-.5 31.4-101.8 31.7-102.1.6-.7 144.4 47 145.5 47 .4 0 .9-.6 1-1.3.4-2 1-148.6 1.7-149.6.8-1.2 104.5-.7 105.1-.3 1.5 1 3.5 156.1 6.1 156.1 1.4 0 138.7-47 139.3-46.3.8.9 31.9 102.2 31.5 102.6-.9.9-140.2 47.1-140.6 48.8-.3 1.4 82.8 122.1 82.5 122.9s-85.5 63.5-86.3 63.5c-1-.2-89-125.5-90.9-125.5z\"]\n};\nvar faDigg = {\n prefix: 'fab',\n iconName: 'digg',\n icon: [512, 512, [], \"f1a6\", \"M81.7 172.3H0v174.4h132.7V96h-51v76.3zm0 133.4H50.9v-92.3h30.8v92.3zm297.2-133.4v174.4h81.8v28.5h-81.8V416H512V172.3H378.9zm81.8 133.4h-30.8v-92.3h30.8v92.3zm-235.6 41h82.1v28.5h-82.1V416h133.3V172.3H225.1v174.4zm51.2-133.3h30.8v92.3h-30.8v-92.3zM153.3 96h51.3v51h-51.3V96zm0 76.3h51.3v174.4h-51.3V172.3z\"]\n};\nvar faDigitalOcean = {\n prefix: 'fab',\n iconName: 'digital-ocean',\n icon: [512, 512, [], \"f391\", \"M87 481.8h73.7v-73.6H87zM25.4 346.6v61.6H87v-61.6zm466.2-169.7c-23-74.2-82.4-133.3-156.6-156.6C164.9-32.8 8 93.7 8 255.9h95.8c0-101.8 101-180.5 208.1-141.7 39.7 14.3 71.5 46.1 85.8 85.7 39.1 107-39.7 207.8-141.4 208v.3h-.3V504c162.6 0 288.8-156.8 235.6-327.1zm-235.3 231v-95.3h-95.6v95.6H256v-.3z\"]\n};\nvar faDiscord = {\n prefix: 'fab',\n iconName: 'discord',\n icon: [448, 512, [], \"f392\", \"M297.216 243.2c0 15.616-11.52 28.416-26.112 28.416-14.336 0-26.112-12.8-26.112-28.416s11.52-28.416 26.112-28.416c14.592 0 26.112 12.8 26.112 28.416zm-119.552-28.416c-14.592 0-26.112 12.8-26.112 28.416s11.776 28.416 26.112 28.416c14.592 0 26.112-12.8 26.112-28.416.256-15.616-11.52-28.416-26.112-28.416zM448 52.736V512c-64.494-56.994-43.868-38.128-118.784-107.776l13.568 47.36H52.48C23.552 451.584 0 428.032 0 398.848V52.736C0 23.552 23.552 0 52.48 0h343.04C424.448 0 448 23.552 448 52.736zm-72.96 242.688c0-82.432-36.864-149.248-36.864-149.248-36.864-27.648-71.936-26.88-71.936-26.88l-3.584 4.096c43.52 13.312 63.744 32.512 63.744 32.512-60.811-33.329-132.244-33.335-191.232-7.424-9.472 4.352-15.104 7.424-15.104 7.424s21.248-20.224 67.328-33.536l-2.56-3.072s-35.072-.768-71.936 26.88c0 0-36.864 66.816-36.864 149.248 0 0 21.504 37.12 78.08 38.912 0 0 9.472-11.52 17.152-21.248-32.512-9.728-44.8-30.208-44.8-30.208 3.766 2.636 9.976 6.053 10.496 6.4 43.21 24.198 104.588 32.126 159.744 8.96 8.96-3.328 18.944-8.192 29.44-15.104 0 0-12.8 20.992-46.336 30.464 7.68 9.728 16.896 20.736 16.896 20.736 56.576-1.792 78.336-38.912 78.336-38.912z\"]\n};\nvar faDiscourse = {\n prefix: 'fab',\n iconName: 'discourse',\n icon: [448, 512, [], \"f393\", \"M225.9 32C103.3 32 0 130.5 0 252.1 0 256 .1 480 .1 480l225.8-.2c122.7 0 222.1-102.3 222.1-223.9C448 134.3 348.6 32 225.9 32zM224 384c-19.4 0-37.9-4.3-54.4-12.1L88.5 392l22.9-75c-9.8-18.1-15.4-38.9-15.4-61 0-70.7 57.3-128 128-128s128 57.3 128 128-57.3 128-128 128z\"]\n};\nvar faDochub = {\n prefix: 'fab',\n iconName: 'dochub',\n icon: [416, 512, [], \"f394\", \"M397.9 160H256V19.6L397.9 160zM304 192v130c0 66.8-36.5 100.1-113.3 100.1H96V84.8h94.7c12 0 23.1.8 33.1 2.5v-84C212.9 1.1 201.4 0 189.2 0H0v512h189.2C329.7 512 400 447.4 400 318.1V192h-96z\"]\n};\nvar faDocker = {\n prefix: 'fab',\n iconName: 'docker',\n icon: [640, 512, [], \"f395\", \"M349.9 236.3h-66.1v-59.4h66.1v59.4zm0-204.3h-66.1v60.7h66.1V32zm78.2 144.8H362v59.4h66.1v-59.4zm-156.3-72.1h-66.1v60.1h66.1v-60.1zm78.1 0h-66.1v60.1h66.1v-60.1zm276.8 100c-14.4-9.7-47.6-13.2-73.1-8.4-3.3-24-16.7-44.9-41.1-63.7l-14-9.3-9.3 14c-18.4 27.8-23.4 73.6-3.7 103.8-8.7 4.7-25.8 11.1-48.4 10.7H2.4c-8.7 50.8 5.8 116.8 44 162.1 37.1 43.9 92.7 66.2 165.4 66.2 157.4 0 273.9-72.5 328.4-204.2 21.4.4 67.6.1 91.3-45.2 1.5-2.5 6.6-13.2 8.5-17.1l-13.3-8.9zm-511.1-27.9h-66v59.4h66.1v-59.4zm78.1 0h-66.1v59.4h66.1v-59.4zm78.1 0h-66.1v59.4h66.1v-59.4zm-78.1-72.1h-66.1v60.1h66.1v-60.1z\"]\n};\nvar faDraft2digital = {\n prefix: 'fab',\n iconName: 'draft2digital',\n icon: [480, 512, [], \"f396\", \"M480 398.1l-144-82.2v64.7h-91.3c30.8-35 81.8-95.9 111.8-149.3 35.2-62.6 16.1-123.4-12.8-153.3-4.4-4.6-62.2-62.9-166-41.2-59.1 12.4-89.4 43.4-104.3 67.3-13.1 20.9-17 39.8-18.2 47.7-5.5 33 19.4 67.1 56.7 67.1 31.7 0 57.3-25.7 57.3-57.4 0-27.1-19.7-52.1-48-56.8 1.8-7.3 17.7-21.1 26.3-24.7 41.1-17.3 78 5.2 83.3 33.5 8.3 44.3-37.1 90.4-69.7 127.6C84.5 328.1 18.3 396.8 0 415.9l336-.1V480zM369.9 371l47.1 27.2-47.1 27.2zM134.2 161.4c0 12.4-10 22.4-22.4 22.4s-22.4-10-22.4-22.4 10-22.4 22.4-22.4 22.4 10.1 22.4 22.4zM82.5 380.5c25.6-27.4 97.7-104.7 150.8-169.9 35.1-43.1 40.3-82.4 28.4-112.7-7.4-18.8-17.5-30.2-24.3-35.7 45.3 2.1 68 23.4 82.2 38.3 0 0 42.4 48.2 5.8 113.3-37 65.9-110.9 147.5-128.5 166.7z\"]\n};\nvar faDribbble = {\n prefix: 'fab',\n iconName: 'dribbble',\n icon: [512, 512, [], \"f17d\", \"M256 8C119.252 8 8 119.252 8 256s111.252 248 248 248 248-111.252 248-248S392.748 8 256 8zm163.97 114.366c29.503 36.046 47.369 81.957 47.835 131.955-6.984-1.477-77.018-15.682-147.502-6.818-5.752-14.041-11.181-26.393-18.617-41.614 78.321-31.977 113.818-77.482 118.284-83.523zM396.421 97.87c-3.81 5.427-35.697 48.286-111.021 76.519-34.712-63.776-73.185-116.168-79.04-124.008 67.176-16.193 137.966 1.27 190.061 47.489zm-230.48-33.25c5.585 7.659 43.438 60.116 78.537 122.509-99.087 26.313-186.36 25.934-195.834 25.809C62.38 147.205 106.678 92.573 165.941 64.62zM44.17 256.323c0-2.166.043-4.322.108-6.473 9.268.19 111.92 1.513 217.706-30.146 6.064 11.868 11.857 23.915 17.174 35.949-76.599 21.575-146.194 83.527-180.531 142.306C64.794 360.405 44.17 310.73 44.17 256.323zm81.807 167.113c22.127-45.233 82.178-103.622 167.579-132.756 29.74 77.283 42.039 142.053 45.189 160.638-68.112 29.013-150.015 21.053-212.768-27.882zm248.38 8.489c-2.171-12.886-13.446-74.897-41.152-151.033 66.38-10.626 124.7 6.768 131.947 9.055-9.442 58.941-43.273 109.844-90.795 141.978z\"]\n};\nvar faDribbbleSquare = {\n prefix: 'fab',\n iconName: 'dribbble-square',\n icon: [448, 512, [], \"f397\", \"M90.2 228.2c8.9-42.4 37.4-77.7 75.7-95.7 3.6 4.9 28 38.8 50.7 79-64 17-120.3 16.8-126.4 16.7zM314.6 154c-33.6-29.8-79.3-41.1-122.6-30.6 3.8 5.1 28.6 38.9 51 80 48.6-18.3 69.1-45.9 71.6-49.4zM140.1 364c40.5 31.6 93.3 36.7 137.3 18-2-12-10-53.8-29.2-103.6-55.1 18.8-93.8 56.4-108.1 85.6zm98.8-108.2c-3.4-7.8-7.2-15.5-11.1-23.2C159.6 253 93.4 252.2 87.4 252c0 1.4-.1 2.8-.1 4.2 0 35.1 13.3 67.1 35.1 91.4 22.2-37.9 67.1-77.9 116.5-91.8zm34.9 16.3c17.9 49.1 25.1 89.1 26.5 97.4 30.7-20.7 52.5-53.6 58.6-91.6-4.6-1.5-42.3-12.7-85.1-5.8zm-20.3-48.4c4.8 9.8 8.3 17.8 12 26.8 45.5-5.7 90.7 3.4 95.2 4.4-.3-32.3-11.8-61.9-30.9-85.1-2.9 3.9-25.8 33.2-76.3 53.9zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-64 176c0-88.2-71.8-160-160-160S64 167.8 64 256s71.8 160 160 160 160-71.8 160-160z\"]\n};\nvar faDropbox = {\n prefix: 'fab',\n iconName: 'dropbox',\n icon: [528, 512, [], \"f16b\", \"M264.4 116.3l-132 84.3 132 84.3-132 84.3L0 284.1l132.3-84.3L0 116.3 132.3 32l132.1 84.3zM131.6 395.7l132-84.3 132 84.3-132 84.3-132-84.3zm132.8-111.6l132-84.3-132-83.6L395.7 32 528 116.3l-132.3 84.3L528 284.8l-132.3 84.3-131.3-85z\"]\n};\nvar faDrupal = {\n prefix: 'fab',\n iconName: 'drupal',\n icon: [448, 512, [], \"f1a9\", \"M319.5 114.7c-22.2-14-43.5-19.5-64.7-33.5-13-8.8-31.3-30-46.5-48.3-2.7 29.3-11.5 41.2-22 49.5-21.3 17-34.8 22.2-53.5 32.3C117 123 32 181.5 32 290.5 32 399.7 123.8 480 225.8 480 327.5 480 416 406 416 294c0-112.3-83-171-96.5-179.3zm2.5 325.6c-20.1 20.1-90.1 28.7-116.7 4.2-4.8-4.8.3-12 6.5-12 0 0 17 13.3 51.5 13.3 27 0 46-7.7 54.5-14 6.1-4.6 8.4 4.3 4.2 8.5zm-54.5-52.6c8.7-3.6 29-3.8 36.8 1.3 4.1 2.8 16.1 18.8 6.2 23.7-8.4 4.2-1.2-15.7-26.5-15.7-14.7 0-19.5 5.2-26.7 11-7 6-9.8 8-12.2 4.7-6-8.2 15.9-22.3 22.4-25zM360 405c-15.2-1-45.5-48.8-65-49.5-30.9-.9-104.1 80.7-161.3 42-38.8-26.6-14.6-104.8 51.8-105.2 49.5-.5 83.8 49 108.5 48.5 21.3-.3 61.8-41.8 81.8-41.8 48.7 0 23.3 109.3-15.8 106z\"]\n};\nvar faDyalog = {\n prefix: 'fab',\n iconName: 'dyalog',\n icon: [416, 512, [], \"f399\", \"M0 32v119.2h64V96h107.2C284.6 96 352 176.2 352 255.9 352 332 293.4 416 171.2 416H0v64h171.2C331.9 480 416 367.3 416 255.9c0-58.7-22.1-113.4-62.3-154.3C308.9 56 245.7 32 171.2 32H0z\"]\n};\nvar faEarlybirds = {\n prefix: 'fab',\n iconName: 'earlybirds',\n icon: [480, 512, [], \"f39a\", \"M313.2 47.5c1.2-13 21.3-14 36.6-8.7.9.3 26.2 9.7 19 15.2-27.9-7.4-56.4 18.2-55.6-6.5zm-201 6.9c30.7-8.1 62 20 61.1-7.1-1.3-14.2-23.4-15.3-40.2-9.6-1 .3-28.7 10.5-20.9 16.7zM319.4 160c-8.8 0-16 7.2-16 16s7.2 16 16 16 16-7.2 16-16-7.2-16-16-16zm-159.7 0c-8.8 0-16 7.2-16 16s7.2 16 16 16 16-7.2 16-16-7.2-16-16-16zm318.5 163.2c-9.9 24-40.7 11-63.9-1.2-13.5 69.1-58.1 111.4-126.3 124.2.3.9-2-.1 24 1 33.6 1.4 63.8-3.1 97.4-8-19.8-13.8-11.4-37.1-9.8-38.1 1.4-.9 14.7 1.7 21.6 11.5 8.6-12.5 28.4-14.8 30.2-13.6 1.6 1.1 6.6 20.9-6.9 34.6 4.7-.9 8.2-1.6 9.8-2.1 2.6-.8 17.7 11.3 3.1 13.3-14.3 2.3-22.6 5.1-47.1 10.8-45.9 10.7-85.9 11.8-117.7 12.8l1 11.6c3.8 18.1-23.4 24.3-27.6 6.2.8 17.9-27.1 21.8-28.4-1l-.5 5.3c-.7 18.4-28.4 17.9-28.3-.6-7.5 13.5-28.1 6.8-26.4-8.5l1.2-12.4c-36.7.9-59.7 3.1-61.8 3.1-20.9 0-20.9-31.6 0-31.6 2.4 0 27.7 1.3 63.2 2.8-61.1-15.5-103.7-55-114.9-118.2-25 12.8-57.5 26.8-68.2.8-10.5-25.4 21.5-42.6 66.8-73.4.7-6.6 1.6-13.3 2.7-19.8-14.4-19.6-11.6-36.3-16.1-60.4-16.8 2.4-23.2-9.1-23.6-23.1.3-7.3 2.1-14.9 2.4-15.4 1.1-1.8 10.1-2 12.7-2.6 6-31.7 50.6-33.2 90.9-34.5 19.7-21.8 45.2-41.5 80.9-48.3C203.3 29 215.2 8.5 216.2 8c1.7-.8 21.2 4.3 26.3 23.2 5.2-8.8 18.3-11.4 19.6-10.7 1.1.6 6.4 15-4.9 25.9 40.3 3.5 72.2 24.7 96 50.7 36.1 1.5 71.8 5.9 77.1 34 2.7.6 11.6.8 12.7 2.6.3.5 2.1 8.1 2.4 15.4-.5 13.9-6.8 25.4-23.6 23.1-3.2 17.3-2.7 32.9-8.7 47.7 2.4 11.7 4 23.8 4.8 36.4 37 25.4 70.3 42.5 60.3 66.9zM207.4 159.9c.9-44-37.9-42.2-78.6-40.3-21.7 1-38.9 1.9-45.5 13.9-11.4 20.9 5.9 92.9 23.2 101.2 9.8 4.7 73.4 7.9 86.3-7.1 8.2-9.4 15-49.4 14.6-67.7zm52 58.3c-4.3-12.4-6-30.1-15.3-32.7-2-.5-9-.5-11 0-10 2.8-10.8 22.1-17 37.2 15.4 0 19.3 9.7 23.7 9.7 4.3 0 6.3-11.3 19.6-14.2zm135.7-84.7c-6.6-12.1-24.8-12.9-46.5-13.9-40.2-1.9-78.2-3.8-77.3 40.3-.5 18.3 5 58.3 13.2 67.8 13 14.9 76.6 11.8 86.3 7.1 15.8-7.6 36.5-78.9 24.3-101.3z\"]\n};\nvar faEbay = {\n prefix: 'fab',\n iconName: 'ebay',\n icon: [640, 512, [], \"f4f4\", \"M606 189.5l-54.8 109.9-54.9-109.9h-37.5l10.9 20.6c-11.5-19-35.9-26-63.3-26-31.8 0-67.9 8.7-71.5 43.1h33.7c1.4-13.8 15.7-21.8 35-21.8 26 0 41 9.6 41 33v3.4c-12.7 0-28 .1-41.7.4-42.4.9-69.6 10-76.7 34.4 1-5.2 1.5-10.6 1.5-16.2 0-52.1-39.7-76.2-75.4-76.2-21.3 0-43 5.5-58.7 24.2v-80.6h-32.1v169.5c0 10.3-.6 22.9-1.1 33.1h31.5c.7-6.3 1.1-12.9 1.1-19.5 13.6 16.6 35.4 24.9 58.7 24.9 36.9 0 64.9-21.9 73.3-54.2-.5 2.8-.7 5.8-.7 9 0 24.1 21.1 45 60.6 45 26.6 0 45.8-5.7 61.9-25.5 0 6.6.3 13.3 1.1 20.2h29.8c-.7-8.2-1-17.5-1-26.8v-65.6c0-9.3-1.7-17.2-4.8-23.8l61.5 116.1-28.5 54.1h35.9L640 189.5zM243.7 313.8c-29.6 0-50.2-21.5-50.2-53.8 0-32.4 20.6-53.8 50.2-53.8 29.8 0 50.2 21.4 50.2 53.8 0 32.3-20.4 53.8-50.2 53.8zm200.9-47.3c0 30-17.9 48.4-51.6 48.4-25.1 0-35-13.4-35-25.8 0-19.1 18.1-24.4 47.2-25.3 13.1-.5 27.6-.6 39.4-.6zm-411.9 1.6h128.8v-8.5c0-51.7-33.1-75.4-78.4-75.4-56.8 0-83 30.8-83 77.6 0 42.5 25.3 74 82.5 74 31.4 0 68-11.7 74.4-46.1h-33.1c-12 35.8-87.7 36.7-91.2-21.6zm95-21.4H33.3c6.9-56.6 92.1-54.7 94.4 0z\"]\n};\nvar faEdge = {\n prefix: 'fab',\n iconName: 'edge',\n icon: [512, 512, [], \"f282\", \"M25.714 228.163c.111-.162.23-.323.342-.485-.021.162-.045.323-.065.485h-.277zm460.572 15.508c0-44.032-7.754-84.465-28.801-122.405C416.498 47.879 343.912 8.001 258.893 8.001 118.962 7.724 40.617 113.214 26.056 227.679c42.429-61.312 117.073-121.376 220.375-124.966 0 0 109.666 0 99.419 104.957H169.997c6.369-37.386 18.554-58.986 34.339-78.926-75.048 34.893-121.85 96.096-120.742 188.315.83 71.448 50.124 144.836 120.743 171.976 83.357 31.847 192.776 7.2 240.132-21.324V363.307c-80.864 56.494-270.871 60.925-272.255-67.572h314.073v-52.064z\"]\n};\nvar faElementor = {\n prefix: 'fab',\n iconName: 'elementor',\n icon: [448, 512, [], \"f430\", \"M425.6 32H22.4C10 32 0 42 0 54.4v403.2C0 470 10 480 22.4 480h403.2c12.4 0 22.4-10 22.4-22.4V54.4C448 42 438 32 425.6 32M164.3 355.5h-39.8v-199h39.8v199zm159.3 0H204.1v-39.8h119.5v39.8zm0-79.6H204.1v-39.8h119.5v39.8zm0-79.7H204.1v-39.8h119.5v39.8z\"]\n};\nvar faEllo = {\n prefix: 'fab',\n iconName: 'ello',\n icon: [496, 512, [], \"f5f1\", \"M248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm143.84 285.2C375.31 358.51 315.79 404.8 248 404.8s-127.31-46.29-143.84-111.6c-1.65-7.44 2.48-15.71 9.92-17.36 7.44-1.65 15.71 2.48 17.36 9.92 14.05 52.91 62 90.11 116.56 90.11s102.51-37.2 116.56-90.11c1.65-7.44 9.92-12.4 17.36-9.92 7.44 1.65 12.4 9.92 9.92 17.36z\"]\n};\nvar faEmber = {\n prefix: 'fab',\n iconName: 'ember',\n icon: [640, 512, [], \"f423\", \"M639.9 254.6c-1.1-10.7-10.7-6.8-10.7-6.8s-15.6 12.1-29.3 10.7c-13.7-1.3-9.4-32-9.4-32s3-28.1-5.1-30.4c-8.1-2.4-18 7.3-18 7.3s-12.4 13.7-18.3 31.2l-1.6.5s1.9-30.6-.3-37.6c-1.6-3.5-16.4-3.2-18.8 3s-14.2 49.2-15 67.2c0 0-23.1 19.6-43.3 22.8s-25-9.4-25-9.4 54.8-15.3 52.9-59.1-44.2-27.6-49-24c-4.6 3.5-29.4 18.4-36.6 59.7-.2 1.4-.7 7.5-.7 7.5s-21.2 14.2-33 18c0 0 33-55.6-7.3-80.9-11.4-6.8-21.3-.5-27.2 5.3 13.6-17.3 46.4-64.2 36.9-105.2-5.8-24.4-18-27.1-29.2-23.1-17 6.7-23.5 16.7-23.5 16.7s-22 32-27.1 79.5-12.6 105.1-12.6 105.1-10.5 10.2-20.2 10.7-5.4-28.7-5.4-28.7 7.5-44.6 7-52.1-1.1-11.6-9.9-14.2c-8.9-2.7-18.5 8.6-18.5 8.6s-25.5 38.7-27.7 44.6l-1.3 2.4-1.3-1.6s18-52.7.8-53.5-28.5 18.8-28.5 18.8-19.6 32.8-20.4 36.5l-1.3-1.6s8.1-38.2 6.4-47.6c-1.6-9.4-10.5-7.5-10.5-7.5s-11.3-1.3-14.2 5.9-13.7 55.3-15 70.7c0 0-28.2 20.2-46.8 20.4-18.5.3-16.7-11.8-16.7-11.8s68-23.3 49.4-69.2c-8.3-11.8-18-15.5-31.7-15.3-13.7.3-30.3 8.6-41.3 33.3-5.3 11.8-6.8 23-7.8 31.5 0 0-12.3 2.4-18.8-2.9s-10 0-10 0-11.2 14-.1 18.3 28.1 6.1 28.1 6.1c1.6 7.5 6.2 19.5 19.6 29.7 20.2 15.3 58.8-1.3 58.8-1.3l15.9-8.8s.5 14.6 12.1 16.7 16.4 1 36.5-47.9c11.8-25 12.6-23.6 12.6-23.6l1.3-.3s-9.1 46.8-5.6 59.7C187.7 319.4 203 318 203 318s8.3 2.4 15-21.2 19.6-49.9 19.6-49.9h1.6s-5.6 48.1 3 63.7 30.9 5.3 30.9 5.3 15.6-7.8 18-10.2c0 0 18.5 15.8 44.6 12.9 58.3-11.5 79.1-25.9 79.1-25.9s10 24.4 41.1 26.7c35.5 2.7 54.8-18.6 54.8-18.6s-.3 13.5 12.1 18.6 20.7-22.8 20.7-22.8l20.7-57.2h1.9s1.1 37.3 21.5 43.2 47-13.7 47-13.7 6.4-3.5 5.3-14.3zm-578 5.3c.8-32 21.8-45.9 29-39 7.3 7 4.6 22-9.1 31.4-13.7 9.5-19.9 7.6-19.9 7.6zm272.8-123.8s19.1-49.7 23.6-25.5-40 96.2-40 96.2c.5-16.2 16.4-70.7 16.4-70.7zm22.8 138.4c-12.6 33-43.3 19.6-43.3 19.6s-3.5-11.8 6.4-44.9 33.3-20.2 33.3-20.2 16.2 12.4 3.6 45.5zm84.6-14.6s-3-10.5 8.1-30.6c11-20.2 19.6-9.1 19.6-9.1s9.4 10.2-1.3 25.5-26.4 14.2-26.4 14.2z\"]\n};\nvar faEmpire = {\n prefix: 'fab',\n iconName: 'empire',\n icon: [496, 512, [], \"f1d1\", \"M287.6 54.2c-10.8-2.2-22.1-3.3-33.5-3.6V32.4c78.1 2.2 146.1 44 184.6 106.6l-15.8 9.1c-6.1-9.7-12.7-18.8-20.2-27.1l-18 15.5c-26-29.6-61.4-50.7-101.9-58.4l4.8-23.9zM53.4 322.4l23-7.7c-6.4-18.3-10-38.2-10-58.7s3.3-40.4 9.7-58.7l-22.7-7.7c3.6-10.8 8.3-21.3 13.6-31l-15.8-9.1C34 181 24.1 217.5 24.1 256s10 75 27.1 106.6l15.8-9.1c-5.3-10-9.7-20.3-13.6-31.1zM213.1 434c-40.4-8-75.8-29.1-101.9-58.7l-18 15.8c-7.5-8.6-14.4-17.7-20.2-27.4l-16 9.4c38.5 62.3 106.8 104.3 184.9 106.6v-18.3c-11.3-.3-22.7-1.7-33.5-3.6l4.7-23.8zM93.3 120.9l18 15.5c26-29.6 61.4-50.7 101.9-58.4l-4.7-23.8c10.8-2.2 22.1-3.3 33.5-3.6V32.4C163.9 34.6 95.9 76.4 57.4 139l15.8 9.1c6-9.7 12.6-18.9 20.1-27.2zm309.4 270.2l-18-15.8c-26 29.6-61.4 50.7-101.9 58.7l4.7 23.8c-10.8 1.9-22.1 3.3-33.5 3.6v18.3c78.1-2.2 146.4-44.3 184.9-106.6l-16.1-9.4c-5.7 9.7-12.6 18.8-20.1 27.4zM496 256c0 137-111 248-248 248S0 393 0 256 111 8 248 8s248 111 248 248zm-12.2 0c0-130.1-105.7-235.8-235.8-235.8S12.2 125.9 12.2 256 117.9 491.8 248 491.8 483.8 386.1 483.8 256zm-39-106.6l-15.8 9.1c5.3 9.7 10 20.2 13.6 31l-22.7 7.7c6.4 18.3 9.7 38.2 9.7 58.7s-3.6 40.4-10 58.7l23 7.7c-3.9 10.8-8.3 21-13.6 31l15.8 9.1C462 331 471.9 294.5 471.9 256s-9.9-75-27.1-106.6zm-183 177.7c16.3-3.3 30.4-11.6 40.7-23.5l51.2 44.8c11.9-13.6 21.3-29.3 27.1-46.8l-64.2-22.1c2.5-7.5 3.9-15.2 3.9-23.5s-1.4-16.1-3.9-23.5l64.5-22.1c-6.1-17.4-15.5-33.2-27.4-46.8l-51.2 44.8c-10.2-11.9-24.4-20.5-40.7-23.8l13.3-66.4c-8.6-1.9-17.7-2.8-27.1-2.8-9.4 0-18.5.8-27.1 2.8l13.3 66.4c-16.3 3.3-30.4 11.9-40.7 23.8l-51.2-44.8c-11.9 13.6-21.3 29.3-27.4 46.8l64.5 22.1c-2.5 7.5-3.9 15.2-3.9 23.5s1.4 16.1 3.9 23.5l-64.2 22.1c5.8 17.4 15.2 33.2 27.1 46.8l51.2-44.8c10.2 11.9 24.4 20.2 40.7 23.5l-13.3 66.7c8.6 1.7 17.7 2.8 27.1 2.8 9.4 0 18.5-1.1 27.1-2.8l-13.3-66.7z\"]\n};\nvar faEnvira = {\n prefix: 'fab',\n iconName: 'envira',\n icon: [448, 512, [], \"f299\", \"M0 32c477.6 0 366.6 317.3 367.1 366.3L448 480h-26l-70.4-71.2c-39 4.2-124.4 34.5-214.4-37C47 300.3 52 214.7 0 32zm79.7 46c-49.7-23.5-5.2 9.2-5.2 9.2 45.2 31.2 66 73.7 90.2 119.9 31.5 60.2 79 139.7 144.2 167.7 65 28 34.2 12.5 6-8.5-28.2-21.2-68.2-87-91-130.2-31.7-60-61-118.6-144.2-158.1z\"]\n};\nvar faErlang = {\n prefix: 'fab',\n iconName: 'erlang',\n icon: [640, 512, [], \"f39d\", \"M87.2 53.5H0v405h100.4c-49.7-52.6-78.8-125.3-78.7-212.1-.1-76.7 24-142.7 65.5-192.9zm238.2 9.7c-45.9.1-85.1 33.5-89.2 83.2h169.9c-1.1-49.7-34.5-83.1-80.7-83.2zm230.7-9.6h.3l-.1-.1zm.3 0c31.4 42.7 48.7 97.5 46.2 162.7.5 6 .5 11.7 0 24.1H230.2c-.2 109.7 38.9 194.9 138.6 195.3 68.5-.3 118-51 151.9-106.1l96.4 48.2c-17.4 30.9-36.5 57.8-57.9 80.8H640v-405z\"]\n};\nvar faEthereum = {\n prefix: 'fab',\n iconName: 'ethereum',\n icon: [320, 512, [], \"f42e\", \"M311.9 260.8L160 353.6 8 260.8 160 0l151.9 260.8zM160 383.4L8 290.6 160 512l152-221.4-152 92.8z\"]\n};\nvar faEtsy = {\n prefix: 'fab',\n iconName: 'etsy',\n icon: [384, 512, [], \"f2d7\", \"M384 348c-1.75 10.75-13.75 110-15.5 132-117.879-4.299-219.895-4.743-368.5 0v-25.5c45.457-8.948 60.627-8.019 61-35.25 1.793-72.322 3.524-244.143 0-322-1.029-28.46-12.13-26.765-61-36v-25.5c73.886 2.358 255.933 8.551 362.999-3.75-3.5 38.25-7.75 126.5-7.75 126.5H332C320.947 115.665 313.241 68 277.25 68h-137c-10.25 0-10.75 3.5-10.75 9.75V241.5c58 .5 88.5-2.5 88.5-2.5 29.77-.951 27.56-8.502 40.75-65.251h25.75c-4.407 101.351-3.91 61.829-1.75 160.25H257c-9.155-40.086-9.065-61.045-39.501-61.5 0 0-21.5-2-88-2v139c0 26 14.25 38.25 44.25 38.25H263c63.636 0 66.564-24.996 98.751-99.75H384z\"]\n};\nvar faEvernote = {\n prefix: 'fab',\n iconName: 'evernote',\n icon: [384, 512, [], \"f839\", \"M120.82 132.21c1.6 22.31-17.55 21.59-21.61 21.59-68.93 0-73.64-1-83.58 3.34-.56.22-.74 0-.37-.37L123.79 46.45c.38-.37.6-.22.38.37-4.35 9.99-3.35 15.09-3.35 85.39zm79 308c-14.68-37.08 13-76.93 52.52-76.62 17.49 0 22.6 23.21 7.95 31.42-6.19 3.3-24.95 1.74-25.14 19.2-.05 17.09 19.67 25 31.2 24.89A45.64 45.64 0 0 0 312 393.45v-.08c0-11.63-7.79-47.22-47.54-55.34-7.72-1.54-65-6.35-68.35-50.52-3.74 16.93-17.4 63.49-43.11 69.09-8.74 1.94-69.68 7.64-112.92-36.77 0 0-18.57-15.23-28.23-57.95-3.38-15.75-9.28-39.7-11.14-62 0-18 11.14-30.45 25.07-32.2 81 0 90 2.32 101-7.8 9.82-9.24 7.8-15.5 7.8-102.78 1-8.3 7.79-30.81 53.41-24.14 6 .86 31.91 4.18 37.48 30.64l64.26 11.15c20.43 3.71 70.94 7 80.6 57.94 22.66 121.09 8.91 238.46 7.8 238.46C362.15 485.53 267.06 480 267.06 480c-18.95-.23-54.25-9.4-67.27-39.83zm80.94-204.84c-1 1.92-2.2 6 .85 7 14.09 4.93 39.75 6.84 45.88 5.53 3.11-.25 3.05-4.43 2.48-6.65-3.53-21.85-40.83-26.5-49.24-5.92z\"]\n};\nvar faExpeditedssl = {\n prefix: 'fab',\n iconName: 'expeditedssl',\n icon: [496, 512, [], \"f23e\", \"M248 43.4C130.6 43.4 35.4 138.6 35.4 256S130.6 468.6 248 468.6 460.6 373.4 460.6 256 365.4 43.4 248 43.4zm-97.4 132.9c0-53.7 43.7-97.4 97.4-97.4s97.4 43.7 97.4 97.4v26.6c0 5-3.9 8.9-8.9 8.9h-17.7c-5 0-8.9-3.9-8.9-8.9v-26.6c0-82.1-124-82.1-124 0v26.6c0 5-3.9 8.9-8.9 8.9h-17.7c-5 0-8.9-3.9-8.9-8.9v-26.6zM389.7 380c0 9.7-8 17.7-17.7 17.7H124c-9.7 0-17.7-8-17.7-17.7V238.3c0-9.7 8-17.7 17.7-17.7h248c9.7 0 17.7 8 17.7 17.7V380zm-248-137.3v132.9c0 2.5-1.9 4.4-4.4 4.4h-8.9c-2.5 0-4.4-1.9-4.4-4.4V242.7c0-2.5 1.9-4.4 4.4-4.4h8.9c2.5 0 4.4 1.9 4.4 4.4zm141.7 48.7c0 13-7.2 24.4-17.7 30.4v31.6c0 5-3.9 8.9-8.9 8.9h-17.7c-5 0-8.9-3.9-8.9-8.9v-31.6c-10.5-6.1-17.7-17.4-17.7-30.4 0-19.7 15.8-35.4 35.4-35.4s35.5 15.8 35.5 35.4zM248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 478.3C121 486.3 17.7 383 17.7 256S121 25.7 248 25.7 478.3 129 478.3 256 375 486.3 248 486.3z\"]\n};\nvar faFacebook = {\n prefix: 'fab',\n iconName: 'facebook',\n icon: [512, 512, [], \"f09a\", \"M504 256C504 119 393 8 256 8S8 119 8 256c0 123.78 90.69 226.38 209.25 245V327.69h-63V256h63v-54.64c0-62.15 37-96.48 93.67-96.48 27.14 0 55.52 4.84 55.52 4.84v61h-31.28c-30.8 0-40.41 19.12-40.41 38.73V256h68.78l-11 71.69h-57.78V501C413.31 482.38 504 379.78 504 256z\"]\n};\nvar faFacebookF = {\n prefix: 'fab',\n iconName: 'facebook-f',\n icon: [320, 512, [], \"f39e\", \"M279.14 288l14.22-92.66h-88.91v-60.13c0-25.35 12.42-50.06 52.24-50.06h40.42V6.26S260.43 0 225.36 0c-73.22 0-121.08 44.38-121.08 124.72v70.62H22.89V288h81.39v224h100.17V288z\"]\n};\nvar faFacebookMessenger = {\n prefix: 'fab',\n iconName: 'facebook-messenger',\n icon: [512, 512, [], \"f39f\", \"M256.55 8C116.52 8 8 110.34 8 248.57c0 72.3 29.71 134.78 78.07 177.94 8.35 7.51 6.63 11.86 8.05 58.23A19.92 19.92 0 0 0 122 502.31c52.91-23.3 53.59-25.14 62.56-22.7C337.85 521.8 504 423.7 504 248.57 504 110.34 396.59 8 256.55 8zm149.24 185.13l-73 115.57a37.37 37.37 0 0 1-53.91 9.93l-58.08-43.47a15 15 0 0 0-18 0l-78.37 59.44c-10.46 7.93-24.16-4.6-17.11-15.67l73-115.57a37.36 37.36 0 0 1 53.91-9.93l58.06 43.46a15 15 0 0 0 18 0l78.41-59.38c10.44-7.98 24.14 4.54 17.09 15.62z\"]\n};\nvar faFacebookSquare = {\n prefix: 'fab',\n iconName: 'facebook-square',\n icon: [448, 512, [], \"f082\", \"M400 32H48A48 48 0 0 0 0 80v352a48 48 0 0 0 48 48h137.25V327.69h-63V256h63v-54.64c0-62.15 37-96.48 93.67-96.48 27.14 0 55.52 4.84 55.52 4.84v61h-31.27c-30.81 0-40.42 19.12-40.42 38.73V256h68.78l-11 71.69h-57.78V480H400a48 48 0 0 0 48-48V80a48 48 0 0 0-48-48z\"]\n};\nvar faFantasyFlightGames = {\n prefix: 'fab',\n iconName: 'fantasy-flight-games',\n icon: [512, 512, [], \"f6dc\", \"M256 32.86L32.86 256 256 479.14 479.14 256 256 32.86zM88.34 255.83c1.96-2 11.92-12.3 96.49-97.48 41.45-41.75 86.19-43.77 119.77-18.69 24.63 18.4 62.06 58.9 62.15 59 .68.74 1.07 2.86.58 3.38-11.27 11.84-22.68 23.54-33.5 34.69-34.21-32.31-40.52-38.24-48.51-43.95-17.77-12.69-41.4-10.13-56.98 5.1-2.17 2.13-1.79 3.43.12 5.35 2.94 2.95 28.1 28.33 35.09 35.78-11.95 11.6-23.66 22.97-35.69 34.66-12.02-12.54-24.48-25.53-36.54-38.11-21.39 21.09-41.69 41.11-61.85 60.99a42569.01 42569.01 0 0 1-41.13-40.72zm234.82 101.6c-35.49 35.43-78.09 38.14-106.99 20.47-22.08-13.5-39.38-32.08-72.93-66.84 12.05-12.37 23.79-24.42 35.37-36.31 33.02 31.91 37.06 36.01 44.68 42.09 18.48 14.74 42.52 13.67 59.32-1.8 3.68-3.39 3.69-3.64.14-7.24-10.59-10.73-21.19-21.44-31.77-32.18-1.32-1.34-3.03-2.48-.8-4.69 10.79-10.71 21.48-21.52 32.21-32.29.26-.26.65-.38 1.91-1.07 12.37 12.87 24.92 25.92 37.25 38.75 21.01-20.73 41.24-40.68 61.25-60.42 13.68 13.4 27.13 26.58 40.86 40.03-20.17 20.86-81.68 82.71-100.5 101.5zM256 0L0 256l256 256 256-256L256 0zM16 256L256 16l240 240-240 240L16 256z\"]\n};\nvar faFedex = {\n prefix: 'fab',\n iconName: 'fedex',\n icon: [640, 512, [], \"f797\", \"M586 284.5l53.3-59.9h-62.4l-21.7 24.8-22.5-24.8H414v-16h56.1v-48.1H318.9V236h-.5c-9.6-11-21.5-14.8-35.4-14.8-28.4 0-49.8 19.4-57.3 44.9-18-59.4-97.4-57.6-121.9-14v-24.2H49v-26.2h60v-41.1H0V345h49v-77.5h48.9c-1.5 5.7-2.3 11.8-2.3 18.2 0 73.1 102.6 91.4 130.2 23.7h-42c-14.7 20.9-45.8 8.9-45.8-14.6h85.5c3.7 30.5 27.4 56.9 60.1 56.9 14.1 0 27-6.9 34.9-18.6h.5V345h212.2l22.1-25 22.3 25H640l-54-60.5zm-446.7-16.6c6.1-26.3 41.7-25.6 46.5 0h-46.5zm153.4 48.9c-34.6 0-34-62.8 0-62.8 32.6 0 34.5 62.8 0 62.8zm167.8 19.1h-94.4V169.4h95v30.2H405v33.9h55.5v28.1h-56.1v44.7h56.1v29.6zm-45.9-39.8v-24.4h56.1v-44l50.7 57-50.7 57v-45.6h-56.1zm138.6 10.3l-26.1 29.5H489l45.6-51.2-45.6-51.2h39.7l26.6 29.3 25.6-29.3h38.5l-45.4 51 46 51.4h-40.5l-26.3-29.5z\"]\n};\nvar faFedora = {\n prefix: 'fab',\n iconName: 'fedora',\n icon: [448, 512, [], \"f798\", \"M225 32C101.3 31.7.8 131.7.4 255.4L0 425.7a53.6 53.6 0 0 0 53.6 53.9l170.2.4c123.7.3 224.3-99.7 224.6-223.4S348.7 32.3 225 32zm169.8 157.2L333 126.6c2.3-4.7 3.8-9.2 3.8-14.3v-1.6l55.2 56.1a101 101 0 0 1 2.8 22.4zM331 94.3a106.06 106.06 0 0 1 58.5 63.8l-54.3-54.6a26.48 26.48 0 0 0-4.2-9.2zM118.1 247.2a49.66 49.66 0 0 0-7.7 11.4l-8.5-8.5a85.78 85.78 0 0 1 16.2-2.9zM97 251.4l11.8 11.9-.9 8a34.74 34.74 0 0 0 2.4 12.5l-27-27.2a80.6 80.6 0 0 1 13.7-5.2zm-18.2 7.4l38.2 38.4a53.17 53.17 0 0 0-14.1 4.7L67.6 266a107 107 0 0 1 11.2-7.2zm-15.2 9.8l35.3 35.5a67.25 67.25 0 0 0-10.5 8.5L53.5 278a64.33 64.33 0 0 1 10.1-9.4zm-13.3 12.3l34.9 35a56.84 56.84 0 0 0-7.7 11.4l-35.8-35.9c2.8-3.8 5.7-7.2 8.6-10.5zm-11 14.3l36.4 36.6a48.29 48.29 0 0 0-3.6 15.2l-39.5-39.8a99.81 99.81 0 0 1 6.7-12zm-8.8 16.3l41.3 41.8a63.47 63.47 0 0 0 6.7 26.2L25.8 326c1.4-4.9 2.9-9.6 4.7-14.5zm-7.9 43l61.9 62.2a31.24 31.24 0 0 0-3.6 14.3v1.1l-55.4-55.7a88.27 88.27 0 0 1-2.9-21.9zm5.3 30.7l54.3 54.6a28.44 28.44 0 0 0 4.2 9.2 106.32 106.32 0 0 1-58.5-63.8zm-5.3-37a80.69 80.69 0 0 1 2.1-17l72.2 72.5a37.59 37.59 0 0 0-9.9 8.7zm253.3-51.8l-42.6-.1-.1 56c-.2 69.3-64.4 115.8-125.7 102.9-5.7 0-19.9-8.7-19.9-24.2a24.89 24.89 0 0 1 24.5-24.6c6.3 0 6.3 1.6 15.7 1.6a55.91 55.91 0 0 0 56.1-55.9l.1-47c0-4.5-4.5-9-8.9-9l-33.6-.1c-32.6-.1-32.5-49.4.1-49.3l42.6.1.1-56a105.18 105.18 0 0 1 105.6-105 86.35 86.35 0 0 1 20.2 2.3c11.2 1.8 19.9 11.9 19.9 24 0 15.5-14.9 27.8-30.3 23.9-27.4-5.9-65.9 14.4-66 54.9l-.1 47a8.94 8.94 0 0 0 8.9 9l33.6.1c32.5.2 32.4 49.5-.2 49.4zm23.5-.3a35.58 35.58 0 0 0 7.6-11.4l8.5 8.5a102 102 0 0 1-16.1 2.9zm21-4.2L308.6 280l.9-8.1a34.74 34.74 0 0 0-2.4-12.5l27 27.2a74.89 74.89 0 0 1-13.7 5.3zm18-7.4l-38-38.4c4.9-1.1 9.6-2.4 13.7-4.7l36.2 35.9c-3.8 2.5-7.9 5-11.9 7.2zm15.5-9.8l-35.3-35.5a61.06 61.06 0 0 0 10.5-8.5l34.9 35a124.56 124.56 0 0 1-10.1 9zm13.2-12.3l-34.9-35a63.18 63.18 0 0 0 7.7-11.4l35.8 35.9a130.28 130.28 0 0 1-8.6 10.5zm11-14.3l-36.4-36.6a48.29 48.29 0 0 0 3.6-15.2l39.5 39.8a87.72 87.72 0 0 1-6.7 12zm13.5-30.9a140.63 140.63 0 0 1-4.7 14.3L345.6 190a58.19 58.19 0 0 0-7.1-26.2zm1-5.6l-71.9-72.1a32 32 0 0 0 9.9-9.2l64.3 64.7a90.93 90.93 0 0 1-2.3 16.6z\"]\n};\nvar faFigma = {\n prefix: 'fab',\n iconName: 'figma',\n icon: [384, 512, [], \"f799\", \"M277 170.7A85.35 85.35 0 0 0 277 0H106.3a85.3 85.3 0 0 0 0 170.6 85.35 85.35 0 0 0 0 170.7 85.35 85.35 0 1 0 85.3 85.4v-256zm0 0a85.3 85.3 0 1 0 85.3 85.3 85.31 85.31 0 0 0-85.3-85.3z\"]\n};\nvar faFirefox = {\n prefix: 'fab',\n iconName: 'firefox',\n icon: [512, 512, [], \"f269\", \"M503.52,241.48c-.12-1.56-.24-3.12-.24-4.68v-.12l-.36-4.68v-.12a245.86,245.86,0,0,0-7.32-41.15c0-.12,0-.12-.12-.24l-1.08-4c-.12-.24-.12-.48-.24-.6-.36-1.2-.72-2.52-1.08-3.72-.12-.24-.12-.6-.24-.84-.36-1.2-.72-2.4-1.08-3.48-.12-.36-.24-.6-.36-1-.36-1.2-.72-2.28-1.2-3.48l-.36-1.08c-.36-1.08-.84-2.28-1.2-3.36a8.27,8.27,0,0,0-.36-1c-.48-1.08-.84-2.28-1.32-3.36-.12-.24-.24-.6-.36-.84-.48-1.2-1-2.28-1.44-3.48,0-.12-.12-.24-.12-.36-1.56-3.84-3.24-7.68-5-11.4l-.36-.72c-.48-1-.84-1.8-1.32-2.64-.24-.48-.48-1.08-.72-1.56-.36-.84-.84-1.56-1.2-2.4-.36-.6-.6-1.2-1-1.8s-.84-1.44-1.2-2.28c-.36-.6-.72-1.32-1.08-1.92s-.84-1.44-1.2-2.16a18.07,18.07,0,0,0-1.2-2c-.36-.72-.84-1.32-1.2-2s-.84-1.32-1.2-2-.84-1.32-1.2-1.92-.84-1.44-1.32-2.16a15.63,15.63,0,0,0-1.2-1.8L463.2,119a15.63,15.63,0,0,0-1.2-1.8c-.48-.72-1.08-1.56-1.56-2.28-.36-.48-.72-1.08-1.08-1.56l-1.8-2.52c-.36-.48-.6-.84-1-1.32-1-1.32-1.8-2.52-2.76-3.72a248.76,248.76,0,0,0-23.51-26.64A186.82,186.82,0,0,0,412,62.46c-4-3.48-8.16-6.72-12.48-9.84a162.49,162.49,0,0,0-24.6-15.12c-2.4-1.32-4.8-2.52-7.2-3.72a254,254,0,0,0-55.43-19.56c-1.92-.36-3.84-.84-5.64-1.2h-.12c-1-.12-1.8-.36-2.76-.48a236.35,236.35,0,0,0-38-4H255.14a234.62,234.62,0,0,0-45.48,5c-33.59,7.08-63.23,21.24-82.91,39-1.08,1-1.92,1.68-2.4,2.16l-.48.48H124l-.12.12.12-.12a.12.12,0,0,0,.12-.12l-.12.12a.42.42,0,0,1,.24-.12c14.64-8.76,34.92-16,49.44-19.56l5.88-1.44c.36-.12.84-.12,1.2-.24,1.68-.36,3.36-.72,5.16-1.08.24,0,.6-.12.84-.12C250.94,20.94,319.34,40.14,367,85.61a171.49,171.49,0,0,1,26.88,32.76c30.36,49.2,27.48,111.11,3.84,147.59-34.44,53-111.35,71.27-159,24.84a84.19,84.19,0,0,1-25.56-59,74.05,74.05,0,0,1,6.24-31c1.68-3.84,13.08-25.67,18.24-24.59-13.08-2.76-37.55,2.64-54.71,28.19-15.36,22.92-14.52,58.2-5,83.28a132.85,132.85,0,0,1-12.12-39.24c-12.24-82.55,43.31-153,94.31-170.51-27.48-24-96.47-22.31-147.71,15.36-29.88,22-51.23,53.16-62.51,90.36,1.68-20.88,9.6-52.08,25.8-83.88-17.16,8.88-39,37-49.8,62.88-15.6,37.43-21,82.19-16.08,124.79.36,3.24.72,6.36,1.08,9.6,19.92,117.11,122,206.38,244.78,206.38C392.77,503.42,504,392.19,504,255,503.88,250.48,503.76,245.92,503.52,241.48Z\"]\n};\nvar faFirefoxBrowser = {\n prefix: 'fab',\n iconName: 'firefox-browser',\n icon: [512, 512, [], \"f907\", \"M189.37,152.86Zm-58.74-29.37C130.79,123.5,130.71,123.5,130.63,123.49Zm351.42,45.35c-10.61-25.5-32.08-53-48.94-61.73,13.72,26.89,21.67,53.88,24.7,74,0,0,0,.14.05.41-27.58-68.75-74.35-96.47-112.55-156.83-1.93-3.05-3.86-6.11-5.74-9.33-1-1.65-1.86-3.34-2.69-5.05A44.88,44.88,0,0,1,333.24.69a.63.63,0,0,0-.55-.66.9.9,0,0,0-.46,0l-.12.07-.18.1.1-.14c-54.23,31.77-76.72,87.38-82.5,122.78a130,130,0,0,0-48.33,12.33,6.25,6.25,0,0,0-3.09,7.75,6.13,6.13,0,0,0,7.79,3.79l.52-.21a117.84,117.84,0,0,1,42.11-11l1.42-.1c2-.12,4-.2,6-.22A122.61,122.61,0,0,1,291,140c.67.2,1.32.42,2,.63,1.89.57,3.76,1.2,5.62,1.87,1.36.5,2.71,1,4.05,1.58,1.09.44,2.18.88,3.25,1.35q2.52,1.13,5,2.35c.75.37,1.5.74,2.25,1.13q2.4,1.26,4.74,2.63,1.51.87,3,1.8a124.89,124.89,0,0,1,42.66,44.13c-13-9.15-36.35-18.19-58.82-14.28,87.74,43.86,64.18,194.9-57.39,189.2a108.43,108.43,0,0,1-31.74-6.12c-2.42-.91-4.8-1.89-7.16-2.93-1.38-.63-2.76-1.27-4.12-2C174.5,346,149.9,316.92,146.83,281.59c0,0,11.25-41.95,80.62-41.95,7.5,0,28.93-20.92,29.33-27-.09-2-42.54-18.87-59.09-35.18-8.85-8.71-13.05-12.91-16.77-16.06a69.58,69.58,0,0,0-6.31-4.77A113.05,113.05,0,0,1,173.92,97c-25.06,11.41-44.55,29.45-58.71,45.37h-.12c-9.67-12.25-9-52.65-8.43-61.08-.12-.53-7.22,3.68-8.15,4.31a178.54,178.54,0,0,0-23.84,20.43A214,214,0,0,0,51.9,133.36l0,0a.08.08,0,0,1,0,0,205.84,205.84,0,0,0-32.73,73.9c-.06.27-2.33,10.21-4,22.48q-.42,2.87-.78,5.74c-.57,3.69-1,7.71-1.44,14,0,.24,0,.48-.05.72-.18,2.71-.34,5.41-.49,8.12,0,.41,0,.82,0,1.24,0,134.7,109.21,243.89,243.92,243.89,120.64,0,220.82-87.58,240.43-202.62.41-3.12.74-6.26,1.11-9.41,4.85-41.83-.54-85.79-15.82-122.55Z\"]\n};\nvar faFirstOrder = {\n prefix: 'fab',\n iconName: 'first-order',\n icon: [448, 512, [], \"f2b0\", \"M12.9 229.2c.1-.1.2-.3.3-.4 0 .1 0 .3-.1.4h-.2zM224 96.6c-7.1 0-14.6.6-21.4 1.7l3.7 67.4-22-64c-14.3 3.7-27.7 9.4-40 16.6l29.4 61.4-45.1-50.9c-11.4 8.9-21.7 19.1-30.6 30.9l50.6 45.4-61.1-29.7c-7.1 12.3-12.9 25.7-16.6 40l64.3 22.6-68-4c-.9 7.1-1.4 14.6-1.4 22s.6 14.6 1.4 21.7l67.7-4-64 22.6c3.7 14.3 9.4 27.7 16.6 40.3l61.1-29.7L97.7 352c8.9 11.7 19.1 22.3 30.9 30.9l44.9-50.9-29.5 61.4c12.3 7.4 25.7 13.1 40 16.9l22.3-64.6-4 68c7.1 1.1 14.6 1.7 21.7 1.7 7.4 0 14.6-.6 21.7-1.7l-4-68.6 22.6 65.1c14.3-4 27.7-9.4 40-16.9L274.9 332l44.9 50.9c11.7-8.9 22-19.1 30.6-30.9l-50.6-45.1 61.1 29.4c7.1-12.3 12.9-25.7 16.6-40.3l-64-22.3 67.4 4c1.1-7.1 1.4-14.3 1.4-21.7s-.3-14.9-1.4-22l-67.7 4 64-22.3c-3.7-14.3-9.1-28-16.6-40.3l-60.9 29.7 50.6-45.4c-8.9-11.7-19.1-22-30.6-30.9l-45.1 50.9 29.4-61.1c-12.3-7.4-25.7-13.1-40-16.9L241.7 166l4-67.7c-7.1-1.2-14.3-1.7-21.7-1.7zM443.4 128v256L224 512 4.6 384V128L224 0l219.4 128zm-17.1 10.3L224 20.9 21.7 138.3v235.1L224 491.1l202.3-117.7V138.3zM224 37.1l187.7 109.4v218.9L224 474.9 36.3 365.4V146.6L224 37.1zm0 50.9c-92.3 0-166.9 75.1-166.9 168 0 92.6 74.6 167.7 166.9 167.7 92 0 166.9-75.1 166.9-167.7 0-92.9-74.9-168-166.9-168z\"]\n};\nvar faFirstOrderAlt = {\n prefix: 'fab',\n iconName: 'first-order-alt',\n icon: [496, 512, [], \"f50a\", \"M248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm0 488.21C115.34 496.21 7.79 388.66 7.79 256S115.34 15.79 248 15.79 488.21 123.34 488.21 256 380.66 496.21 248 496.21zm0-459.92C126.66 36.29 28.29 134.66 28.29 256S126.66 475.71 248 475.71 467.71 377.34 467.71 256 369.34 36.29 248 36.29zm0 431.22c-116.81 0-211.51-94.69-211.51-211.51S131.19 44.49 248 44.49 459.51 139.19 459.51 256 364.81 467.51 248 467.51zm186.23-162.98a191.613 191.613 0 0 1-20.13 48.69l-74.13-35.88 61.48 54.82a193.515 193.515 0 0 1-37.2 37.29l-54.8-61.57 35.88 74.27a190.944 190.944 0 0 1-48.63 20.23l-27.29-78.47 4.79 82.93c-8.61 1.18-17.4 1.8-26.33 1.8s-17.72-.62-26.33-1.8l4.76-82.46-27.15 78.03a191.365 191.365 0 0 1-48.65-20.2l35.93-74.34-54.87 61.64a193.85 193.85 0 0 1-37.22-37.28l61.59-54.9-74.26 35.93a191.638 191.638 0 0 1-20.14-48.69l77.84-27.11-82.23 4.76c-1.16-8.57-1.78-17.32-1.78-26.21 0-9 .63-17.84 1.82-26.51l82.38 4.77-77.94-27.16a191.726 191.726 0 0 1 20.23-48.67l74.22 35.92-61.52-54.86a193.85 193.85 0 0 1 37.28-37.22l54.76 61.53-35.83-74.17a191.49 191.49 0 0 1 48.65-20.13l26.87 77.25-4.71-81.61c8.61-1.18 17.39-1.8 26.32-1.8s17.71.62 26.32 1.8l-4.74 82.16 27.05-77.76c17.27 4.5 33.6 11.35 48.63 20.17l-35.82 74.12 54.72-61.47a193.13 193.13 0 0 1 37.24 37.23l-61.45 54.77 74.12-35.86a191.515 191.515 0 0 1 20.2 48.65l-77.81 27.1 82.24-4.75c1.19 8.66 1.82 17.5 1.82 26.49 0 8.88-.61 17.63-1.78 26.19l-82.12-4.75 77.72 27.09z\"]\n};\nvar faFirstdraft = {\n prefix: 'fab',\n iconName: 'firstdraft',\n icon: [384, 512, [], \"f3a1\", \"M384 192h-64v128H192v128H0v-25.6h166.4v-128h128v-128H384V192zm-25.6 38.4v128h-128v128H64V512h192V384h128V230.4h-25.6zm25.6 192h-89.6V512H320v-64h64v-25.6zM0 0v384h128V256h128V128h128V0H0z\"]\n};\nvar faFlickr = {\n prefix: 'fab',\n iconName: 'flickr',\n icon: [448, 512, [], \"f16e\", \"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM144.5 319c-35.1 0-63.5-28.4-63.5-63.5s28.4-63.5 63.5-63.5 63.5 28.4 63.5 63.5-28.4 63.5-63.5 63.5zm159 0c-35.1 0-63.5-28.4-63.5-63.5s28.4-63.5 63.5-63.5 63.5 28.4 63.5 63.5-28.4 63.5-63.5 63.5z\"]\n};\nvar faFlipboard = {\n prefix: 'fab',\n iconName: 'flipboard',\n icon: [448, 512, [], \"f44d\", \"M0 32v448h448V32H0zm358.4 179.2h-89.6v89.6h-89.6v89.6H89.6V121.6h268.8v89.6z\"]\n};\nvar faFly = {\n prefix: 'fab',\n iconName: 'fly',\n icon: [384, 512, [], \"f417\", \"M197.8 427.8c12.9 11.7 33.7 33.3 33.2 50.7 0 .8-.1 1.6-.1 2.5-1.8 19.8-18.8 31.1-39.1 31-25-.1-39.9-16.8-38.7-35.8 1-16.2 20.5-36.7 32.4-47.6 2.3-2.1 2.7-2.7 5.6-3.6 3.4 0 3.9.3 6.7 2.8zM331.9 67.3c-16.3-25.7-38.6-40.6-63.3-52.1C243.1 4.5 214-.2 192 0c-44.1 0-71.2 13.2-81.1 17.3C57.3 45.2 26.5 87.2 28 158.6c7.1 82.2 97 176 155.8 233.8 1.7 1.6 4.5 4.5 6.2 5.1l3.3.1c2.1-.7 1.8-.5 3.5-2.1 52.3-49.2 140.7-145.8 155.9-215.7 7-39.2 3.1-72.5-20.8-112.5zM186.8 351.9c-28-51.1-65.2-130.7-69.3-189-3.4-47.5 11.4-131.2 69.3-136.7v325.7zM328.7 180c-16.4 56.8-77.3 128-118.9 170.3C237.6 298.4 275 217 277 158.4c1.6-45.9-9.8-105.8-48-131.4 88.8 18.3 115.5 98.1 99.7 153z\"]\n};\nvar faFontAwesome = {\n prefix: 'fab',\n iconName: 'font-awesome',\n icon: [448, 512, [], \"f2b4\", \"M397.8 32H50.2C22.7 32 0 54.7 0 82.2v347.6C0 457.3 22.7 480 50.2 480h347.6c27.5 0 50.2-22.7 50.2-50.2V82.2c0-27.5-22.7-50.2-50.2-50.2zm-45.4 284.3c0 4.2-3.6 6-7.8 7.8-16.7 7.2-34.6 13.7-53.8 13.7-26.9 0-39.4-16.7-71.7-16.7-23.3 0-47.8 8.4-67.5 17.3-1.2.6-2.4.6-3.6 1.2V385c0 1.8 0 3.6-.6 4.8v1.2c-2.4 8.4-10.2 14.3-19.1 14.3-11.3 0-20.3-9-20.3-20.3V166.4c-7.8-6-13.1-15.5-13.1-26.3 0-18.5 14.9-33.5 33.5-33.5 18.5 0 33.5 14.9 33.5 33.5 0 10.8-4.8 20.3-13.1 26.3v18.5c1.8-.6 3.6-1.2 5.4-2.4 18.5-7.8 40.6-14.3 61.5-14.3 22.7 0 40.6 6 60.9 13.7 4.2 1.8 8.4 2.4 13.1 2.4 22.7 0 47.8-16.1 53.8-16.1 4.8 0 9 3.6 9 7.8v140.3z\"]\n};\nvar faFontAwesomeAlt = {\n prefix: 'fab',\n iconName: 'font-awesome-alt',\n icon: [448, 512, [], \"f35c\", \"M339.3 171.2c-6 0-29.9 15.5-52.6 15.5-4.2 0-8.4-.6-12.5-2.4-19.7-7.8-37-13.7-59.1-13.7-20.3 0-41.8 6.6-59.7 13.7-1.8.6-3.6 1.2-4.8 1.8v-17.9c7.8-6 12.5-14.9 12.5-25.7 0-17.9-14.3-32.3-32.3-32.3s-32.3 14.3-32.3 32.3c0 10.2 4.8 19.7 12.5 25.7v212.1c0 10.8 9 19.7 19.7 19.7 9 0 16.1-6 18.5-13.7V385c.6-1.8.6-3 .6-4.8V336c1.2 0 2.4-.6 3-1.2 19.7-8.4 43-16.7 65.7-16.7 31.1 0 43 16.1 69.3 16.1 18.5 0 36.4-6.6 52-13.7 4.2-1.8 7.2-3.6 7.2-7.8V178.3c1.8-4.1-2.3-7.1-7.7-7.1zM397.8 32H50.2C22.7 32 0 54.7 0 82.2v347.6C0 457.3 22.7 480 50.2 480h347.6c27.5 0 50.2-22.7 50.2-50.2V82.2c0-27.5-22.7-50.2-50.2-50.2zm14.3 397.7c0 7.8-6.6 14.3-14.3 14.3H50.2c-7.8 0-14.3-6.6-14.3-14.3V82.2c0-7.8 6.6-14.3 14.3-14.3h347.6v-.1c7.8 0 14.3 6.6 14.3 14.3z\"]\n};\nvar faFontAwesomeFlag = {\n prefix: 'fab',\n iconName: 'font-awesome-flag',\n icon: [448, 512, [], \"f425\", \"M444.373 359.424c0 7.168-6.144 10.24-13.312 13.312-28.672 12.288-59.392 23.552-92.16 23.552-46.08 0-67.584-28.672-122.88-28.672-39.936 0-81.92 14.336-115.712 29.696-2.048 1.024-4.096 1.024-6.144 2.048v77.824c0 21.405-16.122 34.816-33.792 34.816-19.456 0-34.816-15.36-34.816-34.816V102.4C12.245 92.16 3.029 75.776 3.029 57.344 3.029 25.6 28.629 0 60.373 0s57.344 25.6 57.344 57.344c0 18.432-8.192 34.816-22.528 45.056v31.744c4.124-1.374 58.768-28.672 114.688-28.672 65.27 0 97.676 27.648 126.976 27.648 38.912 0 81.92-27.648 92.16-27.648 8.192 0 15.36 6.144 15.36 13.312v240.64z\"]\n};\nvar faFontAwesomeLogoFull = {\n prefix: 'fab',\n iconName: 'font-awesome-logo-full',\n icon: [3992, 512, [\"Font Awesome\"], \"f4e6\", \"M454.6 0H57.4C25.9 0 0 25.9 0 57.4v397.3C0 486.1 25.9 512 57.4 512h397.3c31.4 0 57.4-25.9 57.4-57.4V57.4C512 25.9 486.1 0 454.6 0zm-58.9 324.9c0 4.8-4.1 6.9-8.9 8.9-19.2 8.1-39.7 15.7-61.5 15.7-40.5 0-68.7-44.8-163.2 2.5v51.8c0 30.3-45.7 30.2-45.7 0v-250c-9-7-15-17.9-15-30.3 0-21 17.1-38.2 38.2-38.2 21 0 38.2 17.1 38.2 38.2 0 12.2-5.8 23.2-14.9 30.2v21c37.1-12 65.5-34.4 146.1-3.4 26.6 11.4 68.7-15.7 76.5-15.7 5.5 0 10.3 4.1 10.3 8.9v160.4zm432.9-174.2h-137v70.1H825c39.8 0 40.4 62.2 0 62.2H691.6v105.6c0 45.5-70.7 46.4-70.7 0V128.3c0-22 18-39.8 39.8-39.8h167.8c39.6 0 40.5 62.2.1 62.2zm191.1 23.4c-169.3 0-169.1 252.4 0 252.4 169.9 0 169.9-252.4 0-252.4zm0 196.1c-81.6 0-82.1-139.8 0-139.8 82.5 0 82.4 139.8 0 139.8zm372.4 53.4c-17.5 0-31.4-13.9-31.4-31.4v-117c0-62.4-72.6-52.5-99.1-16.4v133.4c0 41.5-63.3 41.8-63.3 0V208c0-40 63.1-41.6 63.1 0v3.4c43.3-51.6 162.4-60.4 162.4 39.3v141.5c.3 30.4-31.5 31.4-31.7 31.4zm179.7 2.9c-44.3 0-68.3-22.9-68.3-65.8V235.2H1488c-35.6 0-36.7-55.3 0-55.3h15.5v-37.3c0-41.3 63.8-42.1 63.8 0v37.5h24.9c35.4 0 35.7 55.3 0 55.3h-24.9v108.5c0 29.6 26.1 26.3 27.4 26.3 31.4 0 52.6 56.3-22.9 56.3zM1992 123c-19.5-50.2-95.5-50-114.5 0-107.3 275.7-99.5 252.7-99.5 262.8 0 42.8 58.3 51.2 72.1 14.4l13.5-35.9H2006l13 35.9c14.2 37.7 72.1 27.2 72.1-14.4 0-10.1 5.3 6.8-99.1-262.8zm-108.9 179.1l51.7-142.9 51.8 142.9h-103.5zm591.3-85.6l-53.7 176.3c-12.4 41.2-72 41-84 0l-42.3-135.9-42.3 135.9c-12.4 40.9-72 41.2-84.5 0l-54.2-176.3c-12.5-39.4 49.8-56.1 60.2-16.9L2213 342l45.3-139.5c10.9-32.7 59.6-34.7 71.2 0l45.3 139.5 39.3-142.4c10.3-38.3 72.6-23.8 60.3 16.9zm275.4 75.1c0-42.4-33.9-117.5-119.5-117.5-73.2 0-124.4 56.3-124.4 126 0 77.2 55.3 126.4 128.5 126.4 31.7 0 93-11.5 93-39.8 0-18.3-21.1-31.5-39.3-22.4-49.4 26.2-109 8.4-115.9-43.8h148.3c16.3 0 29.3-13.4 29.3-28.9zM2571 277.7c9.5-73.4 113.9-68.6 118.6 0H2571zm316.7 148.8c-31.4 0-81.6-10.5-96.6-31.9-12.4-17 2.5-39.8 21.8-39.8 16.3 0 36.8 22.9 77.7 22.9 27.4 0 40.4-11 40.4-25.8 0-39.8-142.9-7.4-142.9-102 0-40.4 35.3-75.7 98.6-75.7 31.4 0 74.1 9.9 87.6 29.4 10.8 14.8-1.4 36.2-20.9 36.2-15.1 0-26.7-17.3-66.2-17.3-22.9 0-37.8 10.5-37.8 23.8 0 35.9 142.4 6 142.4 103.1-.1 43.7-37.4 77.1-104.1 77.1zm266.8-252.4c-169.3 0-169.1 252.4 0 252.4 170.1 0 169.6-252.4 0-252.4zm0 196.1c-81.8 0-82-139.8 0-139.8 82.5 0 82.4 139.8 0 139.8zm476.9 22V268.7c0-53.8-61.4-45.8-85.7-10.5v134c0 41.3-63.8 42.1-63.8 0V268.7c0-52.1-59.5-47.4-85.7-10.1v133.6c0 41.5-63.3 41.8-63.3 0V208c0-40 63.1-41.6 63.1 0v3.4c9.9-14.4 41.8-37.3 78.6-37.3 35.3 0 57.7 16.4 66.7 43.8 13.9-21.8 45.8-43.8 82.6-43.8 44.3 0 70.7 23.4 70.7 72.7v145.3c.5 17.3-13.5 31.4-31.9 31.4 3.5.1-31.3 1.1-31.3-31.3zM3992 291.6c0-42.4-32.4-117.5-117.9-117.5-73.2 0-127.5 56.3-127.5 126 0 77.2 58.3 126.4 131.6 126.4 31.7 0 91.5-11.5 91.5-39.8 0-18.3-21.1-31.5-39.3-22.4-49.4 26.2-110.5 8.4-117.5-43.8h149.8c16.3 0 29.1-13.4 29.3-28.9zm-180.5-13.9c9.7-74.4 115.9-68.3 120.1 0h-120.1z\"]\n};\nvar faFonticons = {\n prefix: 'fab',\n iconName: 'fonticons',\n icon: [448, 512, [], \"f280\", \"M0 32v448h448V32zm187 140.9c-18.4 0-19 9.9-19 27.4v23.3c0 2.4-3.5 4.4-.6 4.4h67.4l-11.1 37.3H168v112.9c0 5.8-2 6.7 3.2 7.3l43.5 4.1v25.1H84V389l21.3-2c5.2-.6 6.7-2.3 6.7-7.9V267.7c0-2.3-2.9-2.3-5.8-2.3H84V228h28v-21c0-49.6 26.5-70 77.3-70 34.1 0 64.7 8.2 64.7 52.8l-50.7 6.1c.3-18.7-4.4-23-16.3-23zm74.3 241.8v-25.1l20.4-2.6c5.2-.6 7.6-1.7 7.6-7.3V271.8c0-4.1-2.9-6.7-6.7-7.9l-24.2-6.4 6.7-29.5h80.2v151.7c0 5.8-2.6 6.4 2.9 7.3l15.7 2.6v25.1zm80.8-255.5l9 33.2-7.3 7.3-31.2-16.6-31.2 16.6-7.3-7.3 9-33.2-21.8-24.2 3.5-9.6h27.7l15.5-28h9.3l15.5 28h27.7l3.5 9.6z\"]\n};\nvar faFonticonsFi = {\n prefix: 'fab',\n iconName: 'fonticons-fi',\n icon: [384, 512, [], \"f3a2\", \"M114.4 224h92.4l-15.2 51.2h-76.4V433c0 8-2.8 9.2 4.4 10l59.6 5.6V483H0v-35.2l29.2-2.8c7.2-.8 9.2-3.2 9.2-10.8V278.4c0-3.2-4-3.2-8-3.2H0V224h38.4v-28.8c0-68 36.4-96 106-96 46.8 0 88.8 11.2 88.8 72.4l-69.6 8.4c.4-25.6-6-31.6-22.4-31.6-25.2 0-26 13.6-26 37.6v32c0 3.2-4.8 6-.8 6zM384 483H243.2v-34.4l28-3.6c7.2-.8 10.4-2.4 10.4-10V287c0-5.6-4-9.2-9.2-10.8l-33.2-8.8 9.2-40.4h110v208c0 8-3.6 8.8 4 10l21.6 3.6V483zm-30-347.2l12.4 45.6-10 10-42.8-22.8-42.8 22.8-10-10 12.4-45.6-30-36.4 4.8-10h38L307.2 51H320l21.2 38.4h38l4.8 13.2-30 33.2z\"]\n};\nvar faFortAwesome = {\n prefix: 'fab',\n iconName: 'fort-awesome',\n icon: [512, 512, [], \"f286\", \"M489.2 287.9h-27.4c-2.6 0-4.6 2-4.6 4.6v32h-36.6V146.2c0-2.6-2-4.6-4.6-4.6h-27.4c-2.6 0-4.6 2-4.6 4.6v32h-36.6v-32c0-2.6-2-4.6-4.6-4.6h-27.4c-2.6 0-4.6 2-4.6 4.6v32h-36.6v-32c0-6-8-4.6-11.7-4.6v-38c8.3-2 17.1-3.4 25.7-3.4 10.9 0 20.9 4.3 31.4 4.3 4.6 0 27.7-1.1 27.7-8v-60c0-2.6-2-4.6-4.6-4.6-5.1 0-15.1 4.3-24 4.3-9.7 0-20.9-4.3-32.6-4.3-8 0-16 1.1-23.7 2.9v-4.9c5.4-2.6 9.1-8.3 9.1-14.3 0-20.7-31.4-20.8-31.4 0 0 6 3.7 11.7 9.1 14.3v111.7c-3.7 0-11.7-1.4-11.7 4.6v32h-36.6v-32c0-2.6-2-4.6-4.6-4.6h-27.4c-2.6 0-4.6 2-4.6 4.6v32H128v-32c0-2.6-2-4.6-4.6-4.6H96c-2.6 0-4.6 2-4.6 4.6v178.3H54.8v-32c0-2.6-2-4.6-4.6-4.6H22.8c-2.6 0-4.6 2-4.6 4.6V512h182.9v-96c0-72.6 109.7-72.6 109.7 0v96h182.9V292.5c.1-2.6-1.9-4.6-4.5-4.6zm-288.1-4.5c0 2.6-2 4.6-4.6 4.6h-27.4c-2.6 0-4.6-2-4.6-4.6v-64c0-2.6 2-4.6 4.6-4.6h27.4c2.6 0 4.6 2 4.6 4.6v64zm146.4 0c0 2.6-2 4.6-4.6 4.6h-27.4c-2.6 0-4.6-2-4.6-4.6v-64c0-2.6 2-4.6 4.6-4.6h27.4c2.6 0 4.6 2 4.6 4.6v64z\"]\n};\nvar faFortAwesomeAlt = {\n prefix: 'fab',\n iconName: 'fort-awesome-alt',\n icon: [512, 512, [], \"f3a3\", \"M208 237.4h-22.2c-2.1 0-3.7 1.6-3.7 3.7v51.7c0 2.1 1.6 3.7 3.7 3.7H208c2.1 0 3.7-1.6 3.7-3.7v-51.7c0-2.1-1.6-3.7-3.7-3.7zm118.2 0H304c-2.1 0-3.7 1.6-3.7 3.7v51.7c0 2.1 1.6 3.7 3.7 3.7h22.2c2.1 0 3.7-1.6 3.7-3.7v-51.7c-.1-2.1-1.7-3.7-3.7-3.7zm132-125.1c-2.3-3.2-4.6-6.4-7.1-9.5-9.8-12.5-20.8-24-32.8-34.4-4.5-3.9-9.1-7.6-13.9-11.2-1.6-1.2-3.2-2.3-4.8-3.5C372 34.1 340.3 20 306 13c-16.2-3.3-32.9-5-50-5s-33.9 1.7-50 5c-34.3 7.1-66 21.2-93.3 40.8-1.6 1.1-3.2 2.3-4.8 3.5-4.8 3.6-9.4 7.3-13.9 11.2-3 2.6-5.9 5.3-8.8 8s-5.7 5.5-8.4 8.4c-5.5 5.7-10.7 11.8-15.6 18-2.4 3.1-4.8 6.3-7.1 9.5C25.2 153 8.3 202.5 8.3 256c0 2 .1 4 .1 6 .1.7.1 1.3.1 2 .1 1.3.1 2.7.2 4 0 .8.1 1.5.1 2.3 0 1.3.1 2.5.2 3.7.1.8.1 1.6.2 2.4.1 1.1.2 2.3.3 3.5 0 .8.1 1.6.2 2.4.1 1.2.3 2.4.4 3.6.1.8.2 1.5.3 2.3.1 1.3.3 2.6.5 3.9.1.6.2 1.3.3 1.9l.9 5.7c.1.6.2 1.1.3 1.7.3 1.3.5 2.7.8 4 .2.8.3 1.6.5 2.4.2 1 .5 2.1.7 3.2.2.9.4 1.7.6 2.6.2 1 .4 2 .7 3 .2.9.5 1.8.7 2.7.3 1 .5 1.9.8 2.9.3.9.5 1.8.8 2.7.2.9.5 1.9.8 2.8s.5 1.8.8 2.7c.3 1 .6 1.9.9 2.8.6 1.6 1.1 3.3 1.7 4.9.4 1 .7 1.9 1 2.8.3 1 .7 2 1.1 3 .3.8.6 1.5.9 2.3l1.2 3c.3.7.6 1.5.9 2.2.4 1 .9 2 1.3 3l.9 2.1c.5 1 .9 2 1.4 3 .3.7.6 1.3.9 2 .5 1 1 2.1 1.5 3.1.2.6.5 1.1.8 1.7.6 1.1 1.1 2.2 1.7 3.3.1.2.2.3.3.5 2.2 4.1 4.4 8.2 6.8 12.2.2.4.5.8.7 1.2.7 1.1 1.3 2.2 2 3.3.3.5.6.9.9 1.4.6 1.1 1.3 2.1 2 3.2.3.5.6.9.9 1.4.7 1.1 1.4 2.1 2.1 3.2.2.4.5.8.8 1.2.7 1.1 1.5 2.2 2.3 3.3.2.2.3.5.5.7 37.5 51.7 94.4 88.5 160 99.4.9.1 1.7.3 2.6.4 1 .2 2.1.4 3.1.5s1.9.3 2.8.4c1 .2 2 .3 3 .4.9.1 1.9.2 2.9.3s1.9.2 2.9.3 2.1.2 3.1.3c.9.1 1.8.1 2.7.2 1.1.1 2.3.1 3.4.2.8 0 1.7.1 2.5.1 1.3 0 2.6.1 3.9.1.7.1 1.4.1 2.1.1 2 .1 4 .1 6 .1s4-.1 6-.1c.7 0 1.4-.1 2.1-.1 1.3 0 2.6 0 3.9-.1.8 0 1.7-.1 2.5-.1 1.1-.1 2.3-.1 3.4-.2.9 0 1.8-.1 2.7-.2 1-.1 2.1-.2 3.1-.3s1.9-.2 2.9-.3c.9-.1 1.9-.2 2.9-.3s2-.3 3-.4 1.9-.3 2.8-.4c1-.2 2.1-.3 3.1-.5.9-.1 1.7-.3 2.6-.4 65.6-11 122.5-47.7 160.1-102.4.2-.2.3-.5.5-.7.8-1.1 1.5-2.2 2.3-3.3.2-.4.5-.8.8-1.2.7-1.1 1.4-2.1 2.1-3.2.3-.5.6-.9.9-1.4.6-1.1 1.3-2.1 2-3.2.3-.5.6-.9.9-1.4.7-1.1 1.3-2.2 2-3.3.2-.4.5-.8.7-1.2 2.4-4 4.6-8.1 6.8-12.2.1-.2.2-.3.3-.5.6-1.1 1.1-2.2 1.7-3.3.2-.6.5-1.1.8-1.7.5-1 1-2.1 1.5-3.1.3-.7.6-1.3.9-2 .5-1 1-2 1.4-3l.9-2.1c.5-1 .9-2 1.3-3 .3-.7.6-1.5.9-2.2l1.2-3c.3-.8.6-1.5.9-2.3.4-1 .7-2 1.1-3s.7-1.9 1-2.8c.6-1.6 1.2-3.3 1.7-4.9.3-1 .6-1.9.9-2.8s.5-1.8.8-2.7c.2-.9.5-1.9.8-2.8s.6-1.8.8-2.7c.3-1 .5-1.9.8-2.9.2-.9.5-1.8.7-2.7.2-1 .5-2 .7-3 .2-.9.4-1.7.6-2.6.2-1 .5-2.1.7-3.2.2-.8.3-1.6.5-2.4.3-1.3.6-2.7.8-4 .1-.6.2-1.1.3-1.7l.9-5.7c.1-.6.2-1.3.3-1.9.1-1.3.3-2.6.5-3.9.1-.8.2-1.5.3-2.3.1-1.2.3-2.4.4-3.6 0-.8.1-1.6.2-2.4.1-1.1.2-2.3.3-3.5.1-.8.1-1.6.2-2.4.1 1.7.1.5.2-.7 0-.8.1-1.5.1-2.3.1-1.3.2-2.7.2-4 .1-.7.1-1.3.1-2 .1-2 .1-4 .1-6 0-53.5-16.9-103-45.8-143.7zM448 371.5c-9.4 15.5-20.6 29.9-33.6 42.9-20.6 20.6-44.5 36.7-71.2 48-13.9 5.8-28.2 10.3-42.9 13.2v-75.8c0-58.6-88.6-58.6-88.6 0v75.8c-14.7-2.9-29-7.3-42.9-13.2-26.7-11.3-50.6-27.4-71.2-48-13-13-24.2-27.4-33.6-42.9v-71.3c0-2.1 1.6-3.7 3.7-3.7h22.1c2.1 0 3.7 1.6 3.7 3.7V326h29.6V182c0-2.1 1.6-3.7 3.7-3.7h22.1c2.1 0 3.7 1.6 3.7 3.7v25.9h29.5V182c0-2.1 1.6-3.7 3.7-3.7H208c2.1 0 3.7 1.6 3.7 3.7v25.9h29.5V182c0-4.8 6.5-3.7 9.5-3.7V88.1c-4.4-2-7.4-6.7-7.4-11.5 0-16.8 25.4-16.8 25.4 0 0 4.8-3 9.4-7.4 11.5V92c6.3-1.4 12.7-2.3 19.2-2.3 9.4 0 18.4 3.5 26.3 3.5 7.2 0 15.2-3.5 19.4-3.5 2.1 0 3.7 1.6 3.7 3.7v48.4c0 5.6-18.7 6.5-22.4 6.5-8.6 0-16.6-3.5-25.4-3.5-7 0-14.1 1.2-20.8 2.8v30.7c3 0 9.5-1.1 9.5 3.7v25.9h29.5V182c0-2.1 1.6-3.7 3.7-3.7h22.2c2.1 0 3.7 1.6 3.7 3.7v25.9h29.5V182c0-2.1 1.6-3.7 3.7-3.7h22.1c2.1 0 3.7 1.6 3.7 3.7v144h29.5v-25.8c0-2.1 1.6-3.7 3.7-3.7h22.2c2.1 0 3.7 1.6 3.7 3.7z\"]\n};\nvar faForumbee = {\n prefix: 'fab',\n iconName: 'forumbee',\n icon: [448, 512, [], \"f211\", \"M5.8 309.7C2 292.7 0 275.5 0 258.3 0 135 99.8 35 223.1 35c16.6 0 33.3 2 49.3 5.5C149 87.5 51.9 186 5.8 309.7zm392.9-189.2C385 103 369 87.8 350.9 75.2c-149.6 44.3-266.3 162.1-309.7 312 12.5 18.1 28 35.6 45.2 49 43.1-151.3 161.2-271.7 312.3-315.7zm15.8 252.7c15.2-25.1 25.4-53.7 29.5-82.8-79.4 42.9-145 110.6-187.6 190.3 30-4.4 58.9-15.3 84.6-31.3 35 13.1 70.9 24.3 107 33.6-9.3-36.5-20.4-74.5-33.5-109.8zm29.7-145.5c-2.6-19.5-7.9-38.7-15.8-56.8C290.5 216.7 182 327.5 137.1 466c18.1 7.6 37 12.5 56.6 15.2C240 367.1 330.5 274.4 444.2 227.7z\"]\n};\nvar faFoursquare = {\n prefix: 'fab',\n iconName: 'foursquare',\n icon: [368, 512, [], \"f180\", \"M323.1 3H49.9C12.4 3 0 31.3 0 49.1v433.8c0 20.3 12.1 27.7 18.2 30.1 6.2 2.5 22.8 4.6 32.9-7.1C180 356.5 182.2 354 182.2 354c3.1-3.4 3.4-3.1 6.8-3.1h83.4c35.1 0 40.6-25.2 44.3-39.7l48.6-243C373.8 25.8 363.1 3 323.1 3zm-16.3 73.8l-11.4 59.7c-1.2 6.5-9.5 13.2-16.9 13.2H172.1c-12 0-20.6 8.3-20.6 20.3v13c0 12 8.6 20.6 20.6 20.6h90.4c8.3 0 16.6 9.2 14.8 18.2-1.8 8.9-10.5 53.8-11.4 58.8-.9 4.9-6.8 13.5-16.9 13.5h-73.5c-13.5 0-17.2 1.8-26.5 12.6 0 0-8.9 11.4-89.5 108.3-.9.9-1.8.6-1.8-.3V75.9c0-7.7 6.8-16.6 16.6-16.6h219c8.2 0 15.6 7.7 13.5 17.5z\"]\n};\nvar faFreeCodeCamp = {\n prefix: 'fab',\n iconName: 'free-code-camp',\n icon: [576, 512, [], \"f2c5\", \"M97.22,96.21c10.36-10.65,16-17.12,16-21.9,0-2.76-1.92-5.51-3.83-7.42A14.81,14.81,0,0,0,101,64.05c-8.48,0-20.92,8.79-35.84,25.69C23.68,137,2.51,182.81,3.37,250.34s17.47,117,54.06,161.87C76.22,435.86,90.62,448,100.9,448a13.55,13.55,0,0,0,8.37-3.84c1.91-2.76,3.81-5.63,3.81-8.38,0-5.63-3.86-12.2-13.2-20.55-44.45-42.33-67.32-97-67.48-165C32.25,188.8,54,137.83,97.22,96.21ZM239.47,420.07c.58.37.91.55.91.55Zm93.79.55.17-.13C333.24,420.62,333.17,420.67,333.26,420.62Zm3.13-158.18c-16.24-4.15,50.41-82.89-68.05-177.17,0,0,15.54,49.38-62.83,159.57-74.27,104.35,23.46,168.73,34,175.23-6.73-4.35-47.4-35.7,9.55-128.64,11-18.3,25.53-34.87,43.5-72.16,0,0,15.91,22.45,7.6,71.13C287.7,364,354,342.91,355,343.94c22.75,26.78-17.72,73.51-21.58,76.55,5.49-3.65,117.71-78,33-188.1C360.43,238.4,352.62,266.59,336.39,262.44ZM510.88,89.69C496,72.79,483.52,64,475,64a14.81,14.81,0,0,0-8.39,2.84c-1.91,1.91-3.83,4.66-3.83,7.42,0,4.78,5.6,11.26,16,21.9,43.23,41.61,65,92.59,64.82,154.06-.16,68-23,122.63-67.48,165-9.34,8.35-13.18,14.92-13.2,20.55,0,2.75,1.9,5.62,3.81,8.38A13.61,13.61,0,0,0,475.1,448c10.28,0,24.68-12.13,43.47-35.79,36.59-44.85,53.14-94.38,54.06-161.87S552.32,137,510.88,89.69Z\"]\n};\nvar faFreebsd = {\n prefix: 'fab',\n iconName: 'freebsd',\n icon: [448, 512, [], \"f3a4\", \"M303.7 96.2c11.1-11.1 115.5-77 139.2-53.2 23.7 23.7-42.1 128.1-53.2 139.2-11.1 11.1-39.4.9-63.1-22.9-23.8-23.7-34.1-52-22.9-63.1zM109.9 68.1C73.6 47.5 22 24.6 5.6 41.1c-16.6 16.6 7.1 69.4 27.9 105.7 18.5-32.2 44.8-59.3 76.4-78.7zM406.7 174c3.3 11.3 2.7 20.7-2.7 26.1-20.3 20.3-87.5-27-109.3-70.1-18-32.3-11.1-53.4 14.9-48.7 5.7-3.6 12.3-7.6 19.6-11.6-29.8-15.5-63.6-24.3-99.5-24.3-119.1 0-215.6 96.5-215.6 215.6 0 119 96.5 215.6 215.6 215.6S445.3 380.1 445.3 261c0-38.4-10.1-74.5-27.7-105.8-3.9 7-7.6 13.3-10.9 18.8z\"]\n};\nvar faFulcrum = {\n prefix: 'fab',\n iconName: 'fulcrum',\n icon: [320, 512, [], \"f50b\", \"M95.75 164.14l-35.38 43.55L25 164.14l35.38-43.55zM144.23 0l-20.54 198.18L72.72 256l51 57.82L144.23 512V300.89L103.15 256l41.08-44.89zm79.67 164.14l35.38 43.55 35.38-43.55-35.38-43.55zm-48.48 47L216.5 256l-41.08 44.89V512L196 313.82 247 256l-51-57.82L175.42 0z\"]\n};\nvar faGalacticRepublic = {\n prefix: 'fab',\n iconName: 'galactic-republic',\n icon: [496, 512, [], \"f50c\", \"M248 504C111.25 504 0 392.75 0 256S111.25 8 248 8s248 111.25 248 248-111.25 248-248 248zm0-479.47C120.37 24.53 16.53 128.37 16.53 256S120.37 487.47 248 487.47 479.47 383.63 479.47 256 375.63 24.53 248 24.53zm27.62 21.81v24.62a185.933 185.933 0 0 1 83.57 34.54l17.39-17.36c-28.75-22.06-63.3-36.89-100.96-41.8zm-55.37.07c-37.64 4.94-72.16 19.8-100.88 41.85l17.28 17.36h.08c24.07-17.84 52.55-30.06 83.52-34.67V46.41zm12.25 50.17v82.87c-10.04 2.03-19.42 5.94-27.67 11.42l-58.62-58.59-21.93 21.93 58.67 58.67c-5.47 8.23-9.45 17.59-11.47 27.62h-82.9v31h82.9c2.02 10.02 6.01 19.31 11.47 27.54l-58.67 58.69 21.93 21.93 58.62-58.62a77.873 77.873 0 0 0 27.67 11.47v82.9h31v-82.9c10.05-2.03 19.37-6.06 27.62-11.55l58.67 58.69 21.93-21.93-58.67-58.69c5.46-8.23 9.47-17.52 11.5-27.54h82.87v-31h-82.87c-2.02-10.02-6.03-19.38-11.5-27.62l58.67-58.67-21.93-21.93-58.67 58.67c-8.25-5.49-17.57-9.47-27.62-11.5V96.58h-31zm183.24 30.72l-17.36 17.36a186.337 186.337 0 0 1 34.67 83.67h24.62c-4.95-37.69-19.83-72.29-41.93-101.03zm-335.55.13c-22.06 28.72-36.91 63.26-41.85 100.91h24.65c4.6-30.96 16.76-59.45 34.59-83.52l-17.39-17.39zM38.34 283.67c4.92 37.64 19.75 72.18 41.8 100.9l17.36-17.39c-17.81-24.07-29.92-52.57-34.51-83.52H38.34zm394.7 0c-4.61 30.99-16.8 59.5-34.67 83.6l17.36 17.36c22.08-28.74 36.98-63.29 41.93-100.96h-24.62zM136.66 406.38l-17.36 17.36c28.73 22.09 63.3 36.98 100.96 41.93v-24.64c-30.99-4.63-59.53-16.79-83.6-34.65zm222.53.05c-24.09 17.84-52.58 30.08-83.57 34.67v24.57c37.67-4.92 72.21-19.79 100.96-41.85l-17.31-17.39h-.08z\"]\n};\nvar faGalacticSenate = {\n prefix: 'fab',\n iconName: 'galactic-senate',\n icon: [512, 512, [], \"f50d\", \"M249.86 33.48v26.07C236.28 80.17 226 168.14 225.39 274.9c11.74-15.62 19.13-33.33 19.13-48.24v-16.88c-.03-5.32.75-10.53 2.19-15.65.65-2.14 1.39-4.08 2.62-5.82 1.23-1.75 3.43-3.79 6.68-3.79 3.24 0 5.45 2.05 6.68 3.79 1.23 1.75 1.97 3.68 2.62 5.82 1.44 5.12 2.22 10.33 2.19 15.65v16.88c0 14.91 7.39 32.62 19.13 48.24-.63-106.76-10.91-194.73-24.49-215.35V33.48h-12.28zm-26.34 147.77c-9.52 2.15-18.7 5.19-27.46 9.08 8.9 16.12 9.76 32.64 1.71 37.29-8 4.62-21.85-4.23-31.36-19.82-11.58 8.79-21.88 19.32-30.56 31.09 14.73 9.62 22.89 22.92 18.32 30.66-4.54 7.7-20.03 7.14-35.47-.96-5.78 13.25-9.75 27.51-11.65 42.42 9.68.18 18.67 2.38 26.18 6.04 17.78-.3 32.77-1.96 40.49-4.22 5.55-26.35 23.02-48.23 46.32-59.51.73-25.55 1.88-49.67 3.48-72.07zm64.96 0c1.59 22.4 2.75 46.52 3.47 72.07 23.29 11.28 40.77 33.16 46.32 59.51 7.72 2.26 22.71 3.92 40.49 4.22 7.51-3.66 16.5-5.85 26.18-6.04-1.9-14.91-5.86-29.17-11.65-42.42-15.44 8.1-30.93 8.66-35.47.96-4.57-7.74 3.6-21.05 18.32-30.66-8.68-11.77-18.98-22.3-30.56-31.09-9.51 15.59-23.36 24.44-31.36 19.82-8.05-4.65-7.19-21.16 1.71-37.29a147.49 147.49 0 0 0-27.45-9.08zm-32.48 8.6c-3.23 0-5.86 8.81-6.09 19.93h-.05v16.88c0 41.42-49.01 95.04-93.49 95.04-52 0-122.75-1.45-156.37 29.17v2.51c9.42 17.12 20.58 33.17 33.18 47.97C45.7 380.26 84.77 360.4 141.2 360c45.68 1.02 79.03 20.33 90.76 40.87.01.01-.01.04 0 .05 7.67 2.14 15.85 3.23 24.04 3.21 8.19.02 16.37-1.07 24.04-3.21.01-.01-.01-.04 0-.05 11.74-20.54 45.08-39.85 90.76-40.87 56.43.39 95.49 20.26 108.02 41.35 12.6-14.8 23.76-30.86 33.18-47.97v-2.51c-33.61-30.62-104.37-29.17-156.37-29.17-44.48 0-93.49-53.62-93.49-95.04v-16.88h-.05c-.23-11.12-2.86-19.93-6.09-19.93zm0 96.59c22.42 0 40.6 18.18 40.6 40.6s-18.18 40.65-40.6 40.65-40.6-18.23-40.6-40.65c0-22.42 18.18-40.6 40.6-40.6zm0 7.64c-18.19 0-32.96 14.77-32.96 32.96S237.81 360 256 360s32.96-14.77 32.96-32.96-14.77-32.96-32.96-32.96zm0 6.14c14.81 0 26.82 12.01 26.82 26.82s-12.01 26.82-26.82 26.82-26.82-12.01-26.82-26.82 12.01-26.82 26.82-26.82zm-114.8 66.67c-10.19.07-21.6.36-30.5 1.66.43 4.42 1.51 18.63 7.11 29.76 9.11-2.56 18.36-3.9 27.62-3.9 41.28.94 71.48 34.35 78.26 74.47l.11 4.7c10.4 1.91 21.19 2.94 32.21 2.94 11.03 0 21.81-1.02 32.21-2.94l.11-4.7c6.78-40.12 36.98-73.53 78.26-74.47 9.26 0 18.51 1.34 27.62 3.9 5.6-11.13 6.68-25.34 7.11-29.76-8.9-1.3-20.32-1.58-30.5-1.66-18.76.42-35.19 4.17-48.61 9.67-12.54 16.03-29.16 30.03-49.58 33.07-.09.02-.17.04-.27.05-.05.01-.11.04-.16.05-5.24 1.07-10.63 1.6-16.19 1.6-5.55 0-10.95-.53-16.19-1.6-.05-.01-.11-.04-.16-.05-.1-.02-.17-.04-.27-.05-20.42-3.03-37.03-17.04-49.58-33.07-13.42-5.49-29.86-9.25-48.61-9.67z\"]\n};\nvar faGetPocket = {\n prefix: 'fab',\n iconName: 'get-pocket',\n icon: [448, 512, [], \"f265\", \"M407.6 64h-367C18.5 64 0 82.5 0 104.6v135.2C0 364.5 99.7 464 224.2 464c124 0 223.8-99.5 223.8-224.2V104.6c0-22.4-17.7-40.6-40.4-40.6zm-162 268.5c-12.4 11.8-31.4 11.1-42.4 0C89.5 223.6 88.3 227.4 88.3 209.3c0-16.9 13.8-30.7 30.7-30.7 17 0 16.1 3.8 105.2 89.3 90.6-86.9 88.6-89.3 105.5-89.3 16.9 0 30.7 13.8 30.7 30.7 0 17.8-2.9 15.7-114.8 123.2z\"]\n};\nvar faGg = {\n prefix: 'fab',\n iconName: 'gg',\n icon: [512, 512, [], \"f260\", \"M179.2 230.4l102.4 102.4-102.4 102.4L0 256 179.2 76.8l44.8 44.8-25.6 25.6-19.2-19.2-128 128 128 128 51.5-51.5-77.1-76.5 25.6-25.6zM332.8 76.8L230.4 179.2l102.4 102.4 25.6-25.6-77.1-76.5 51.5-51.5 128 128-128 128-19.2-19.2-25.6 25.6 44.8 44.8L512 256 332.8 76.8z\"]\n};\nvar faGgCircle = {\n prefix: 'fab',\n iconName: 'gg-circle',\n icon: [512, 512, [], \"f261\", \"M257 8C120 8 9 119 9 256s111 248 248 248 248-111 248-248S394 8 257 8zm-49.5 374.8L81.8 257.1l125.7-125.7 35.2 35.4-24.2 24.2-11.1-11.1-77.2 77.2 77.2 77.2 26.6-26.6-53.1-52.9 24.4-24.4 77.2 77.2-75 75.2zm99-2.2l-35.2-35.2 24.1-24.4 11.1 11.1 77.2-77.2-77.2-77.2-26.5 26.5 53.1 52.9-24.4 24.4-77.2-77.2 75-75L432.2 255 306.5 380.6z\"]\n};\nvar faGit = {\n prefix: 'fab',\n iconName: 'git',\n icon: [512, 512, [], \"f1d3\", \"M216.29 158.39H137C97 147.9 6.51 150.63 6.51 233.18c0 30.09 15 51.23 35 61-25.1 23-37 33.85-37 49.21 0 11 4.47 21.14 17.89 26.81C8.13 383.61 0 393.35 0 411.65c0 32.11 28.05 50.82 101.63 50.82 70.75 0 111.79-26.42 111.79-73.18 0-58.66-45.16-56.5-151.63-63l13.43-21.55c27.27 7.58 118.7 10 118.7-67.89 0-18.7-7.73-31.71-15-41.07l37.41-2.84zm-63.42 241.9c0 32.06-104.89 32.1-104.89 2.43 0-8.14 5.27-15 10.57-21.54 77.71 5.3 94.32 3.37 94.32 19.11zm-50.81-134.58c-52.8 0-50.46-71.16 1.2-71.16 49.54 0 50.82 71.16-1.2 71.16zm133.3 100.51v-32.1c26.75-3.66 27.24-2 27.24-11V203.61c0-8.5-2.05-7.38-27.24-16.26l4.47-32.92H324v168.71c0 6.51.4 7.32 6.51 8.14l20.73 2.84v32.1zm52.45-244.31c-23.17 0-36.59-13.43-36.59-36.61s13.42-35.77 36.59-35.77c23.58 0 37 12.62 37 35.77s-13.42 36.61-37 36.61zM512 350.46c-17.49 8.53-43.1 16.26-66.28 16.26-48.38 0-66.67-19.5-66.67-65.46V194.75c0-5.42 1.05-4.06-31.71-4.06V154.5c35.78-4.07 50-22 54.47-66.27h38.63c0 65.83-1.34 61.81 3.26 61.81H501v40.65h-60.56v97.15c0 6.92-4.92 51.41 60.57 26.84z\"]\n};\nvar faGitAlt = {\n prefix: 'fab',\n iconName: 'git-alt',\n icon: [448, 512, [], \"f841\", \"M439.55 236.05L244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z\"]\n};\nvar faGitSquare = {\n prefix: 'fab',\n iconName: 'git-square',\n icon: [448, 512, [], \"f1d2\", \"M100.59 334.24c48.57 3.31 58.95 2.11 58.95 11.94 0 20-65.55 20.06-65.55 1.52.01-5.09 3.29-9.4 6.6-13.46zm27.95-116.64c-32.29 0-33.75 44.47-.75 44.47 32.51 0 31.71-44.47.75-44.47zM448 80v352a48 48 0 0 1-48 48H48a48 48 0 0 1-48-48V80a48 48 0 0 1 48-48h352a48 48 0 0 1 48 48zm-227 69.31c0 14.49 8.38 22.88 22.86 22.88 14.74 0 23.13-8.39 23.13-22.88S258.62 127 243.88 127c-14.48 0-22.88 7.84-22.88 22.31zM199.18 195h-49.55c-25-6.55-81.56-4.85-81.56 46.75 0 18.8 9.4 32 21.85 38.11C74.23 294.23 66.8 301 66.8 310.6c0 6.87 2.79 13.22 11.18 16.76-8.9 8.4-14 14.48-14 25.92C64 373.35 81.53 385 127.52 385c44.22 0 69.87-16.51 69.87-45.73 0-36.67-28.23-35.32-94.77-39.38l8.38-13.43c17 4.74 74.19 6.23 74.19-42.43 0-11.69-4.83-19.82-9.4-25.67l23.38-1.78zm84.34 109.84l-13-1.78c-3.82-.51-4.07-1-4.07-5.09V192.52h-52.6l-2.79 20.57c15.75 5.55 17 4.86 17 10.17V298c0 5.62-.31 4.58-17 6.87v20.06h72.42zM384 315l-6.87-22.37c-40.93 15.37-37.85-12.41-37.85-16.73v-60.72h37.85v-25.41h-35.82c-2.87 0-2 2.52-2-38.63h-24.18c-2.79 27.7-11.68 38.88-34 41.42v22.62c20.47 0 19.82-.85 19.82 2.54v66.57c0 28.72 11.43 40.91 41.67 40.91 14.45 0 30.45-4.83 41.38-10.2z\"]\n};\nvar faGithub = {\n prefix: 'fab',\n iconName: 'github',\n icon: [496, 512, [], \"f09b\", \"M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z\"]\n};\nvar faGithubAlt = {\n prefix: 'fab',\n iconName: 'github-alt',\n icon: [480, 512, [], \"f113\", \"M186.1 328.7c0 20.9-10.9 55.1-36.7 55.1s-36.7-34.2-36.7-55.1 10.9-55.1 36.7-55.1 36.7 34.2 36.7 55.1zM480 278.2c0 31.9-3.2 65.7-17.5 95-37.9 76.6-142.1 74.8-216.7 74.8-75.8 0-186.2 2.7-225.6-74.8-14.6-29-20.2-63.1-20.2-95 0-41.9 13.9-81.5 41.5-113.6-5.2-15.8-7.7-32.4-7.7-48.8 0-21.5 4.9-32.3 14.6-51.8 45.3 0 74.3 9 108.8 36 29-6.9 58.8-10 88.7-10 27 0 54.2 2.9 80.4 9.2 34-26.7 63-35.2 107.8-35.2 9.8 19.5 14.6 30.3 14.6 51.8 0 16.4-2.6 32.7-7.7 48.2 27.5 32.4 39 72.3 39 114.2zm-64.3 50.5c0-43.9-26.7-82.6-73.5-82.6-18.9 0-37 3.4-56 6-14.9 2.3-29.8 3.2-45.1 3.2-15.2 0-30.1-.9-45.1-3.2-18.7-2.6-37-6-56-6-46.8 0-73.5 38.7-73.5 82.6 0 87.8 80.4 101.3 150.4 101.3h48.2c70.3 0 150.6-13.4 150.6-101.3zm-82.6-55.1c-25.8 0-36.7 34.2-36.7 55.1s10.9 55.1 36.7 55.1 36.7-34.2 36.7-55.1-10.9-55.1-36.7-55.1z\"]\n};\nvar faGithubSquare = {\n prefix: 'fab',\n iconName: 'github-square',\n icon: [448, 512, [], \"f092\", \"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM277.3 415.7c-8.4 1.5-11.5-3.7-11.5-8 0-5.4.2-33 .2-55.3 0-15.6-5.2-25.5-11.3-30.7 37-4.1 76-9.2 76-73.1 0-18.2-6.5-27.3-17.1-39 1.7-4.3 7.4-22-1.7-45-13.9-4.3-45.7 17.9-45.7 17.9-13.2-3.7-27.5-5.6-41.6-5.6-14.1 0-28.4 1.9-41.6 5.6 0 0-31.8-22.2-45.7-17.9-9.1 22.9-3.5 40.6-1.7 45-10.6 11.7-15.6 20.8-15.6 39 0 63.6 37.3 69 74.3 73.1-4.8 4.3-9.1 11.7-10.6 22.3-9.5 4.3-33.8 11.7-48.3-13.9-9.1-15.8-25.5-17.1-25.5-17.1-16.2-.2-1.1 10.2-1.1 10.2 10.8 5 18.4 24.2 18.4 24.2 9.7 29.7 56.1 19.7 56.1 19.7 0 13.9.2 36.5.2 40.6 0 4.3-3 9.5-11.5 8-66-22.1-112.2-84.9-112.2-158.3 0-91.8 70.2-161.5 162-161.5S388 165.6 388 257.4c.1 73.4-44.7 136.3-110.7 158.3zm-98.1-61.1c-1.9.4-3.7-.4-3.9-1.7-.2-1.5 1.1-2.8 3-3.2 1.9-.2 3.7.6 3.9 1.9.3 1.3-1 2.6-3 3zm-9.5-.9c0 1.3-1.5 2.4-3.5 2.4-2.2.2-3.7-.9-3.7-2.4 0-1.3 1.5-2.4 3.5-2.4 1.9-.2 3.7.9 3.7 2.4zm-13.7-1.1c-.4 1.3-2.4 1.9-4.1 1.3-1.9-.4-3.2-1.9-2.8-3.2.4-1.3 2.4-1.9 4.1-1.5 2 .6 3.3 2.1 2.8 3.4zm-12.3-5.4c-.9 1.1-2.8.9-4.3-.6-1.5-1.3-1.9-3.2-.9-4.1.9-1.1 2.8-.9 4.3.6 1.3 1.3 1.8 3.3.9 4.1zm-9.1-9.1c-.9.6-2.6 0-3.7-1.5s-1.1-3.2 0-3.9c1.1-.9 2.8-.2 3.7 1.3 1.1 1.5 1.1 3.3 0 4.1zm-6.5-9.7c-.9.9-2.4.4-3.5-.6-1.1-1.3-1.3-2.8-.4-3.5.9-.9 2.4-.4 3.5.6 1.1 1.3 1.3 2.8.4 3.5zm-6.7-7.4c-.4.9-1.7 1.1-2.8.4-1.3-.6-1.9-1.7-1.5-2.6.4-.6 1.5-.9 2.8-.4 1.3.7 1.9 1.8 1.5 2.6z\"]\n};\nvar faGitkraken = {\n prefix: 'fab',\n iconName: 'gitkraken',\n icon: [592, 512, [], \"f3a6\", \"M565.7 118.1c-2.3-6.1-9.3-9.2-15.3-6.6-5.7 2.4-8.5 8.9-6.3 14.6 10.9 29 16.9 60.5 16.9 93.3 0 134.6-100.3 245.7-230.2 262.7V358.4c7.9-1.5 15.5-3.6 23-6.2v104c106.7-25.9 185.9-122.1 185.9-236.8 0-91.8-50.8-171.8-125.8-213.3-5.7-3.2-13-.9-15.9 5-2.7 5.5-.6 12.2 4.7 15.1 67.9 37.6 113.9 110 113.9 193.2 0 93.3-57.9 173.1-139.8 205.4v-92.2c14.2-4.5 24.9-17.7 24.9-33.5 0-13.1-6.8-24.4-17.3-30.5 8.3-79.5 44.5-58.6 44.5-83.9V170c0-38-87.9-161.8-129-164.7-2.5-.2-5-.2-7.6 0C251.1 8.3 163.2 132 163.2 170v14.8c0 25.3 36.3 4.3 44.5 83.9-10.6 6.1-17.3 17.4-17.3 30.5 0 15.8 10.6 29 24.8 33.5v92.2c-81.9-32.2-139.8-112-139.8-205.4 0-83.1 46-155.5 113.9-193.2 5.4-3 7.4-9.6 4.7-15.1-2.9-5.9-10.1-8.2-15.9-5-75 41.5-125.8 121.5-125.8 213.3 0 114.7 79.2 210.8 185.9 236.8v-104c7.6 2.5 15.1 4.6 23 6.2v123.7C131.4 465.2 31 354.1 31 219.5c0-32.8 6-64.3 16.9-93.3 2.2-5.8-.6-12.2-6.3-14.6-6-2.6-13 .4-15.3 6.6C14.5 149.7 8 183.8 8 219.5c0 155.1 122.6 281.6 276.3 287.8V361.4c6.8.4 15 .5 23.4 0v145.8C461.4 501.1 584 374.6 584 219.5c0-35.7-6.5-69.8-18.3-101.4zM365.9 275.5c13 0 23.7 10.5 23.7 23.7 0 13.1-10.6 23.7-23.7 23.7-13 0-23.7-10.5-23.7-23.7 0-13.1 10.6-23.7 23.7-23.7zm-139.8 47.3c-13.2 0-23.7-10.7-23.7-23.7s10.5-23.7 23.7-23.7c13.1 0 23.7 10.6 23.7 23.7 0 13-10.5 23.7-23.7 23.7z\"]\n};\nvar faGitlab = {\n prefix: 'fab',\n iconName: 'gitlab',\n icon: [512, 512, [], \"f296\", \"M105.2 24.9c-3.1-8.9-15.7-8.9-18.9 0L29.8 199.7h132c-.1 0-56.6-174.8-56.6-174.8zM.9 287.7c-2.6 8 .3 16.9 7.1 22l247.9 184-226.2-294zm160.8-88l94.3 294 94.3-294zm349.4 88l-28.8-88-226.3 294 247.9-184c6.9-5.1 9.7-14 7.2-22zM425.7 24.9c-3.1-8.9-15.7-8.9-18.9 0l-56.6 174.8h132z\"]\n};\nvar faGitter = {\n prefix: 'fab',\n iconName: 'gitter',\n icon: [384, 512, [], \"f426\", \"M66.4 322.5H16V0h50.4v322.5zM166.9 76.1h-50.4V512h50.4V76.1zm100.6 0h-50.4V512h50.4V76.1zM368 76h-50.4v247H368V76z\"]\n};\nvar faGlide = {\n prefix: 'fab',\n iconName: 'glide',\n icon: [448, 512, [], \"f2a5\", \"M252.8 148.6c0 8.8-1.6 17.7-3.4 26.4-5.8 27.8-11.6 55.8-17.3 83.6-1.4 6.3-8.3 4.9-13.7 4.9-23.8 0-30.5-26-30.5-45.5 0-29.3 11.2-68.1 38.5-83.1 4.3-2.5 9.2-4.2 14.1-4.2 11.4 0 12.3 8.3 12.3 17.9zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-64 187c0-5.1-20.8-37.7-25.5-39.5-2.2-.9-7.2-2.3-9.6-2.3-23.1 0-38.7 10.5-58.2 21.5l-.5-.5c4.3-29.4 14.6-57.2 14.6-87.4 0-44.6-23.8-62.7-67.5-62.7-71.7 0-108 70.8-108 123.5 0 54.7 32 85 86.3 85 7.5 0 6.9-.6 6.9 2.3-10.5 80.3-56.5 82.9-56.5 58.9 0-24.4 28-36.5 28.3-38-.2-7.6-29.3-17.2-36.7-17.2-21.1 0-32.7 33-32.7 50.6 0 32.3 20.4 54.7 53.3 54.7 48.2 0 83.4-49.7 94.3-91.7 9.4-37.7 7-39.4 12.3-42.1 20-10.1 35.8-16.8 58.4-16.8 11.1 0 19 2.3 36.7 5.2 1.8.1 4.1-1.7 4.1-3.5z\"]\n};\nvar faGlideG = {\n prefix: 'fab',\n iconName: 'glide-g',\n icon: [448, 512, [], \"f2a6\", \"M407.1 211.2c-3.5-1.4-11.6-3.8-15.4-3.8-37.1 0-62.2 16.8-93.5 34.5l-.9-.9c7-47.3 23.5-91.9 23.5-140.4C320.8 29.1 282.6 0 212.4 0 97.3 0 39 113.7 39 198.4 39 286.3 90.3 335 177.6 335c12 0 11-1 11 3.8-16.9 128.9-90.8 133.1-90.8 94.6 0-39.2 45-58.6 45.5-61-.3-12.2-47-27.6-58.9-27.6-33.9.1-52.4 51.2-52.4 79.3C32 476 64.8 512 117.5 512c77.4 0 134-77.8 151.4-145.4 15.1-60.5 11.2-63.3 19.7-67.6 32.2-16.2 57.5-27 93.8-27 17.8 0 30.5 3.7 58.9 8.4 2.9 0 6.7-2.9 6.7-5.8 0-8-33.4-60.5-40.9-63.4zm-175.3-84.4c-9.3 44.7-18.6 89.6-27.8 134.3-2.3 10.2-13.3 7.8-22 7.8-38.3 0-49-41.8-49-73.1 0-47 18-109.3 61.8-133.4 7-4.1 14.8-6.7 22.6-6.7 18.6 0 20 13.3 20 28.7-.1 14.3-2.7 28.5-5.6 42.4z\"]\n};\nvar faGofore = {\n prefix: 'fab',\n iconName: 'gofore',\n icon: [400, 512, [], \"f3a7\", \"M324 319.8h-13.2v34.7c-24.5 23.1-56.3 35.8-89.9 35.8-73.2 0-132.4-60.2-132.4-134.4 0-74.1 59.2-134.4 132.4-134.4 35.3 0 68.6 14 93.6 39.4l62.3-63.3C335 55.3 279.7 32 220.7 32 98 32 0 132.6 0 256c0 122.5 97 224 220.7 224 63.2 0 124.5-26.2 171-82.5-2-27.6-13.4-77.7-67.7-77.7zm-12.1-112.5H205.6v89H324c33.5 0 60.5 15.1 76 41.8v-30.6c0-65.2-40.4-100.2-88.1-100.2z\"]\n};\nvar faGoodreads = {\n prefix: 'fab',\n iconName: 'goodreads',\n icon: [448, 512, [], \"f3a8\", \"M299.9 191.2c5.1 37.3-4.7 79-35.9 100.7-22.3 15.5-52.8 14.1-70.8 5.7-37.1-17.3-49.5-58.6-46.8-97.2 4.3-60.9 40.9-87.9 75.3-87.5 46.9-.2 71.8 31.8 78.2 78.3zM448 88v336c0 30.9-25.1 56-56 56H56c-30.9 0-56-25.1-56-56V88c0-30.9 25.1-56 56-56h336c30.9 0 56 25.1 56 56zM330 313.2s-.1-34-.1-217.3h-29v40.3c-.8.3-1.2-.5-1.6-1.2-9.6-20.7-35.9-46.3-76-46-51.9.4-87.2 31.2-100.6 77.8-4.3 14.9-5.8 30.1-5.5 45.6 1.7 77.9 45.1 117.8 112.4 115.2 28.9-1.1 54.5-17 69-45.2.5-1 1.1-1.9 1.7-2.9.2.1.4.1.6.2.3 3.8.2 30.7.1 34.5-.2 14.8-2 29.5-7.2 43.5-7.8 21-22.3 34.7-44.5 39.5-17.8 3.9-35.6 3.8-53.2-1.2-21.5-6.1-36.5-19-41.1-41.8-.3-1.6-1.3-1.3-2.3-1.3h-26.8c.8 10.6 3.2 20.3 8.5 29.2 24.2 40.5 82.7 48.5 128.2 37.4 49.9-12.3 67.3-54.9 67.4-106.3z\"]\n};\nvar faGoodreadsG = {\n prefix: 'fab',\n iconName: 'goodreads-g',\n icon: [384, 512, [], \"f3a9\", \"M42.6 403.3h2.8c12.7 0 25.5 0 38.2.1 1.6 0 3.1-.4 3.6 2.1 7.1 34.9 30 54.6 62.9 63.9 26.9 7.6 54.1 7.8 81.3 1.8 33.8-7.4 56-28.3 68-60.4 8-21.5 10.7-43.8 11-66.5.1-5.8.3-47-.2-52.8l-.9-.3c-.8 1.5-1.7 2.9-2.5 4.4-22.1 43.1-61.3 67.4-105.4 69.1-103 4-169.4-57-172-176.2-.5-23.7 1.8-46.9 8.3-69.7C58.3 47.7 112.3.6 191.6 0c61.3-.4 101.5 38.7 116.2 70.3.5 1.1 1.3 2.3 2.4 1.9V10.6h44.3c0 280.3.1 332.2.1 332.2-.1 78.5-26.7 143.7-103 162.2-69.5 16.9-159 4.8-196-57.2-8-13.5-11.8-28.3-13-44.5zM188.9 36.5c-52.5-.5-108.5 40.7-115 133.8-4.1 59 14.8 122.2 71.5 148.6 27.6 12.9 74.3 15 108.3-8.7 47.6-33.2 62.7-97 54.8-154-9.7-71.1-47.8-120-119.6-119.7z\"]\n};\nvar faGoogle = {\n prefix: 'fab',\n iconName: 'google',\n icon: [488, 512, [], \"f1a0\", \"M488 261.8C488 403.3 391.1 504 248 504 110.8 504 0 393.2 0 256S110.8 8 248 8c66.8 0 123 24.5 166.3 64.9l-67.5 64.9C258.5 52.6 94.3 116.6 94.3 256c0 86.5 69.1 156.6 153.7 156.6 98.2 0 135-70.4 140.8-106.9H248v-85.3h236.1c2.3 12.7 3.9 24.9 3.9 41.4z\"]\n};\nvar faGoogleDrive = {\n prefix: 'fab',\n iconName: 'google-drive',\n icon: [512, 512, [], \"f3aa\", \"M339 314.9L175.4 32h161.2l163.6 282.9H339zm-137.5 23.6L120.9 480h310.5L512 338.5H201.5zM154.1 67.4L0 338.5 80.6 480 237 208.8 154.1 67.4z\"]\n};\nvar faGooglePlay = {\n prefix: 'fab',\n iconName: 'google-play',\n icon: [512, 512, [], \"f3ab\", \"M325.3 234.3L104.6 13l280.8 161.2-60.1 60.1zM47 0C34 6.8 25.3 19.2 25.3 35.3v441.3c0 16.1 8.7 28.5 21.7 35.3l256.6-256L47 0zm425.2 225.6l-58.9-34.1-65.7 64.5 65.7 64.5 60.1-34.1c18-14.3 18-46.5-1.2-60.8zM104.6 499l280.8-161.2-60.1-60.1L104.6 499z\"]\n};\nvar faGooglePlus = {\n prefix: 'fab',\n iconName: 'google-plus',\n icon: [496, 512, [], \"f2b3\", \"M248 8C111.1 8 0 119.1 0 256s111.1 248 248 248 248-111.1 248-248S384.9 8 248 8zm-70.7 372c-68.8 0-124-55.5-124-124s55.2-124 124-124c31.3 0 60.1 11 83 32.3l-33.6 32.6c-13.2-12.9-31.3-19.1-49.4-19.1-42.9 0-77.2 35.5-77.2 78.1s34.2 78.1 77.2 78.1c32.6 0 64.9-19.1 70.1-53.3h-70.1v-42.6h116.9c1.3 6.8 1.9 13.6 1.9 20.7 0 70.8-47.5 121.2-118.8 121.2zm230.2-106.2v35.5H372v-35.5h-35.5v-35.5H372v-35.5h35.5v35.5h35.2v35.5h-35.2z\"]\n};\nvar faGooglePlusG = {\n prefix: 'fab',\n iconName: 'google-plus-g',\n icon: [640, 512, [], \"f0d5\", \"M386.061 228.496c1.834 9.692 3.143 19.384 3.143 31.956C389.204 370.205 315.599 448 204.8 448c-106.084 0-192-85.915-192-192s85.916-192 192-192c51.864 0 95.083 18.859 128.611 50.292l-52.126 50.03c-14.145-13.621-39.028-29.599-76.485-29.599-65.484 0-118.92 54.221-118.92 121.277 0 67.056 53.436 121.277 118.92 121.277 75.961 0 104.513-54.745 108.965-82.773H204.8v-66.009h181.261zm185.406 6.437V179.2h-56.001v55.733h-55.733v56.001h55.733v55.733h56.001v-55.733H627.2v-56.001h-55.733z\"]\n};\nvar faGooglePlusSquare = {\n prefix: 'fab',\n iconName: 'google-plus-square',\n icon: [448, 512, [], \"f0d4\", \"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM164 356c-55.3 0-100-44.7-100-100s44.7-100 100-100c27 0 49.5 9.8 67 26.2l-27.1 26.1c-7.4-7.1-20.3-15.4-39.8-15.4-34.1 0-61.9 28.2-61.9 63.2 0 34.9 27.8 63.2 61.9 63.2 39.6 0 54.4-28.5 56.8-43.1H164v-34.4h94.4c1 5 1.6 10.1 1.6 16.6 0 57.1-38.3 97.6-96 97.6zm220-81.8h-29v29h-29.2v-29h-29V245h29v-29H355v29h29v29.2z\"]\n};\nvar faGoogleWallet = {\n prefix: 'fab',\n iconName: 'google-wallet',\n icon: [448, 512, [], \"f1ee\", \"M156.8 126.8c37.6 60.6 64.2 113.1 84.3 162.5-8.3 33.8-18.8 66.5-31.3 98.3-13.2-52.3-26.5-101.3-56-148.5 6.5-36.4 2.3-73.6 3-112.3zM109.3 200H16.1c-6.5 0-10.5 7.5-6.5 12.7C51.8 267 81.3 330.5 101.3 400h103.5c-16.2-69.7-38.7-133.7-82.5-193.5-3-4-8-6.5-13-6.5zm47.8-88c68.5 108 130 234.5 138.2 368H409c-12-138-68.4-265-143.2-368H157.1zm251.8-68.5c-1.8-6.8-8.2-11.5-15.2-11.5h-88.3c-5.3 0-9 5-7.8 10.3 13.2 46.5 22.3 95.5 26.5 146 48.2 86.2 79.7 178.3 90.6 270.8 15.8-60.5 25.3-133.5 25.3-203 0-73.6-12.1-145.1-31.1-212.6z\"]\n};\nvar faGratipay = {\n prefix: 'fab',\n iconName: 'gratipay',\n icon: [496, 512, [], \"f184\", \"M248 8C111.1 8 0 119.1 0 256s111.1 248 248 248 248-111.1 248-248S384.9 8 248 8zm114.6 226.4l-113 152.7-112.7-152.7c-8.7-11.9-19.1-50.4 13.6-72 28.1-18.1 54.6-4.2 68.5 11.9 15.9 17.9 46.6 16.9 61.7 0 13.9-16.1 40.4-30 68.1-11.9 32.9 21.6 22.6 60 13.8 72z\"]\n};\nvar faGrav = {\n prefix: 'fab',\n iconName: 'grav',\n icon: [512, 512, [], \"f2d6\", \"M301.1 212c4.4 4.4 4.4 11.9 0 16.3l-9.7 9.7c-4.4 4.7-11.9 4.7-16.6 0l-10.5-10.5c-4.4-4.7-4.4-11.9 0-16.6l9.7-9.7c4.4-4.4 11.9-4.4 16.6 0l10.5 10.8zm-30.2-19.7c3-3 3-7.8 0-10.5-2.8-3-7.5-3-10.5 0-2.8 2.8-2.8 7.5 0 10.5 3.1 2.8 7.8 2.8 10.5 0zm-26 5.3c-3 2.8-3 7.5 0 10.2 2.8 3 7.5 3 10.5 0 2.8-2.8 2.8-7.5 0-10.2-3-3-7.7-3-10.5 0zm72.5-13.3c-19.9-14.4-33.8-43.2-11.9-68.1 21.6-24.9 40.7-17.2 59.8.8 11.9 11.3 29.3 24.9 17.2 48.2-12.5 23.5-45.1 33.2-65.1 19.1zm47.7-44.5c-8.9-10-23.3 6.9-15.5 16.1 7.4 9 32.1 2.4 15.5-16.1zM504 256c0 137-111 248-248 248S8 393 8 256 119 8 256 8s248 111 248 248zm-66.2 42.6c2.5-16.1-20.2-16.6-25.2-25.7-13.6-24.1-27.7-36.8-54.5-30.4 11.6-8 23.5-6.1 23.5-6.1.3-6.4 0-13-9.4-24.9 3.9-12.5.3-22.4.3-22.4 15.5-8.6 26.8-24.4 29.1-43.2 3.6-31-18.8-59.2-49.8-62.8-22.1-2.5-43.7 7.7-54.3 25.7-23.2 40.1 1.4 70.9 22.4 81.4-14.4-1.4-34.3-11.9-40.1-34.3-6.6-25.7 2.8-49.8 8.9-61.4 0 0-4.4-5.8-8-8.9 0 0-13.8 0-24.6 5.3 11.9-15.2 25.2-14.4 25.2-14.4 0-6.4-.6-14.9-3.6-21.6-5.4-11-23.8-12.9-31.7 2.8.1-.2.3-.4.4-.5-5 11.9-1.1 55.9 16.9 87.2-2.5 1.4-9.1 6.1-13 10-21.6 9.7-56.2 60.3-56.2 60.3-28.2 10.8-77.2 50.9-70.6 79.7.3 3 1.4 5.5 3 7.5-2.8 2.2-5.5 5-8.3 8.3-11.9 13.8-5.3 35.2 17.7 24.4 15.8-7.2 29.6-20.2 36.3-30.4 0 0-5.5-5-16.3-4.4 27.7-6.6 34.3-9.4 46.2-9.1 8 3.9 8-34.3 8-34.3 0-14.7-2.2-31-11.1-41.5 12.5 12.2 29.1 32.7 28 60.6-.8 18.3-15.2 23-15.2 23-9.1 16.6-43.2 65.9-30.4 106 0 0-9.7-14.9-10.2-22.1-17.4 19.4-46.5 52.3-24.6 64.5 26.6 14.7 108.8-88.6 126.2-142.3 34.6-20.8 55.4-47.3 63.9-65 22 43.5 95.3 94.5 101.1 59z\"]\n};\nvar faGripfire = {\n prefix: 'fab',\n iconName: 'gripfire',\n icon: [384, 512, [], \"f3ac\", \"M112.5 301.4c0-73.8 105.1-122.5 105.1-203 0-47.1-34-88-39.1-90.4.4 3.3.6 6.7.6 10C179.1 110.1 32 171.9 32 286.6c0 49.8 32.2 79.2 66.5 108.3 65.1 46.7 78.1 71.4 78.1 86.6 0 10.1-4.8 17-4.8 22.3 13.1-16.7 17.4-31.9 17.5-46.4 0-29.6-21.7-56.3-44.2-86.5-16-22.3-32.6-42.6-32.6-69.5zm205.3-39c-12.1-66.8-78-124.4-94.7-130.9l4 7.2c2.4 5.1 3.4 10.9 3.4 17.1 0 44.7-54.2 111.2-56.6 116.7-2.2 5.1-3.2 10.5-3.2 15.8 0 20.1 15.2 42.1 17.9 42.1 2.4 0 56.6-55.4 58.1-87.7 6.4 11.7 9.1 22.6 9.1 33.4 0 41.2-41.8 96.9-41.8 96.9 0 11.6 31.9 53.2 35.5 53.2 1 0 2.2-1.4 3.2-2.4 37.9-39.3 67.3-85 67.3-136.8 0-8-.7-16.2-2.2-24.6z\"]\n};\nvar faGrunt = {\n prefix: 'fab',\n iconName: 'grunt',\n icon: [384, 512, [], \"f3ad\", \"M61.3 189.3c-1.1 10 5.2 19.1 5.2 19.1.7-7.5 2.2-12.8 4-16.6.4 10.3 3.2 23.5 12.8 34.1 6.9 7.6 35.6 23.3 54.9 6.1 1 2.4 2.1 5.3 3 8.5 2.9 10.3-2.7 25.3-2.7 25.3s15.1-17.1 13.9-32.5c10.8-.5 21.4-8.4 21.1-19.5 0 0-18.9 10.4-35.5-8.8-9.7-11.2-40.9-42-83.1-31.8 4.3 1 8.9 2.4 13.5 4.1h-.1c-4.2 2-6.5 7.1-7 12zm28.3-1.8c19.5 11 37.4 25.7 44.9 37-5.7 3.3-21.7 10.4-38-1.7-10.3-7.6-9.8-26.2-6.9-35.3zm142.1 45.8c-1.2 15.5 13.9 32.5 13.9 32.5s-5.6-15-2.7-25.3c.9-3.2 2-6 3-8.5 19.3 17.3 48 1.5 54.8-6.1 9.6-10.6 12.3-23.8 12.8-34.1 1.8 3.8 3.4 9.1 4 16.6 0 0 6.4-9.1 5.2-19.1-.6-5-2.9-10-7-11.8h-.1c4.6-1.8 9.2-3.2 13.5-4.1-42.3-10.2-73.4 20.6-83.1 31.8-16.7 19.2-35.5 8.8-35.5 8.8-.2 10.9 10.4 18.9 21.2 19.3zm62.7-45.8c3 9.1 3.4 27.7-7 35.4-16.3 12.1-32.2 5-37.9 1.6 7.5-11.4 25.4-26 44.9-37zM160 418.5h-29.4c-5.5 0-8.2 1.6-9.5 2.9-1.9 2-2.2 4.7-.9 8.1 3.5 9.1 11.4 16.5 13.7 18.6 3.1 2.7 7.5 4.3 11.8 4.3 4.4 0 8.3-1.7 11-4.6 7.5-8.2 11.9-17.1 13-19.8.6-1.5 1.3-4.5-.9-6.8-1.8-1.8-4.7-2.7-8.8-2.7zm189.2-101.2c-2.4 17.9-13 33.8-24.6 43.7-3.1-22.7-3.7-55.5-3.7-62.4 0-14.7 9.5-24.5 12.2-26.1 2.5-1.5 5.4-3 8.3-4.6 18-9.6 40.4-21.6 40.4-43.7 0-16.2-9.3-23.2-15.4-27.8-.8-.6-1.5-1.1-2.2-1.7-2.1-1.7-3.7-3-4.3-4.4-4.4-9.8-3.6-34.2-1.7-37.6.6-.6 16.7-20.9 11.8-39.2-2-7.4-6.9-13.3-14.1-17-5.3-2.7-11.9-4.2-19.5-4.5-.1-2-.5-3.9-.9-5.9-.6-2.6-1.1-5.3-.9-8.1.4-4.7.8-9 2.2-11.3 8.4-13.3 28.8-17.6 29-17.6l12.3-2.4-8.1-9.5c-.1-.2-17.3-17.5-46.3-17.5-7.9 0-16 1.3-24.1 3.9-24.2 7.8-42.9 30.5-49.4 39.3-3.1-1-6.3-1.9-9.6-2.7-4.2-15.8 9-38.5 9-38.5s-13.6-3-33.7 15.2c-2.6-6.5-8.1-20.5-1.8-37.2C184.6 10.1 177.2 26 175 40.4c-7.6-5.4-6.7-23.1-7.2-27.6-7.5.9-29.2 21.9-28.2 48.3-2 .5-3.9 1.1-5.9 1.7-6.5-8.8-25.1-31.5-49.4-39.3-7.9-2.2-16-3.5-23.9-3.5-29 0-46.1 17.3-46.3 17.5L6 46.9l12.3 2.4c.2 0 20.6 4.3 29 17.6 1.4 2.2 1.8 6.6 2.2 11.3.2 2.8-.4 5.5-.9 8.1-.4 1.9-.8 3.9-.9 5.9-7.7.3-14.2 1.8-19.5 4.5-7.2 3.7-12.1 9.6-14.1 17-5 18.2 11.2 38.5 11.8 39.2 1.9 3.4 2.7 27.8-1.7 37.6-.6 1.4-2.2 2.7-4.3 4.4-.7.5-1.4 1.1-2.2 1.7-6.1 4.6-15.4 11.7-15.4 27.8 0 22.1 22.4 34.1 40.4 43.7 3 1.6 5.8 3.1 8.3 4.6 2.7 1.6 12.2 11.4 12.2 26.1 0 6.9-.6 39.7-3.7 62.4-11.6-9.9-22.2-25.9-24.6-43.8 0 0-29.2 22.6-20.6 70.8 5.2 29.5 23.2 46.1 47 54.7 8.8 19.1 29.4 45.7 67.3 49.6C143 504.3 163 512 192.2 512h.2c29.1 0 49.1-7.7 63.6-19.5 37.9-3.9 58.5-30.5 67.3-49.6 23.8-8.7 41.7-25.2 47-54.7 8.2-48.4-21.1-70.9-21.1-70.9zM305.7 37.7c5.6-1.8 11.6-2.7 17.7-2.7 11 0 19.9 3 24.7 5-3.1 1.4-6.4 3.2-9.7 5.3-2.4-.4-5.6-.8-9.2-.8-10.5 0-20.5 3.1-28.7 8.9-12.3 8.7-18 16.9-20.7 22.4-2.2-1.3-4.5-2.5-7.1-3.7-1.6-.8-3.1-1.5-4.7-2.2 6.1-9.1 19.9-26.5 37.7-32.2zm21 18.2c-.8 1-1.6 2.1-2.3 3.2-3.3 5.2-3.9 11.6-4.4 17.8-.5 6.4-1.1 12.5-4.4 17-4.2.8-8.1 1.7-11.5 2.7-2.3-3.1-5.6-7-10.5-11.2 1.4-4.8 5.5-16.1 13.5-22.5 5.6-4.3 12.2-6.7 19.6-7zM45.6 45.3c-3.3-2.2-6.6-4-9.7-5.3 4.8-2 13.7-5 24.7-5 6.1 0 12 .9 17.7 2.7 17.8 5.8 31.6 23.2 37.7 32.1-1.6.7-3.2 1.4-4.8 2.2-2.5 1.2-4.9 2.5-7.1 3.7-2.6-5.4-8.3-13.7-20.7-22.4-8.3-5.8-18.2-8.9-28.8-8.9-3.4.1-6.6.5-9 .9zm44.7 40.1c-4.9 4.2-8.3 8-10.5 11.2-3.4-.9-7.3-1.9-11.5-2.7C65 89.5 64.5 83.4 64 77c-.5-6.2-1.1-12.6-4.4-17.8-.7-1.1-1.5-2.2-2.3-3.2 7.4.3 14 2.6 19.5 7 8 6.3 12.1 17.6 13.5 22.4zM58.1 259.9c-2.7-1.6-5.6-3.1-8.4-4.6-14.9-8-30.2-16.3-30.2-30.5 0-11.1 4.3-14.6 8.9-18.2l.5-.4c.7-.6 1.4-1.2 2.2-1.8-.9 7.2-1.9 13.3-2.7 14.9 0 0 12.1-15 15.7-44.3 1.4-11.5-1.1-34.3-5.1-43 .2 4.9 0 9.8-.3 14.4-.4-.8-.8-1.6-1.3-2.2-3.2-4-11.8-17.5-9.4-26.6.9-3.5 3.1-6 6.7-7.8 3.8-1.9 8.8-2.9 15.1-2.9 12.3 0 25.9 3.7 32.9 6 25.1 8 55.4 30.9 64.1 37.7.2.2.4.3.4.3l5.6 3.9-3.5-5.8c-.2-.3-19.1-31.4-53.2-46.5 2-2.9 7.4-8.1 21.6-15.1 21.4-10.5 46.5-15.8 74.3-15.8 27.9 0 52.9 5.3 74.3 15.8 14.2 6.9 19.6 12.2 21.6 15.1-34 15.1-52.9 46.2-53.1 46.5l-3.5 5.8 5.6-3.9s.2-.1.4-.3c8.7-6.8 39-29.8 64.1-37.7 7-2.2 20.6-6 32.9-6 6.3 0 11.3 1 15.1 2.9 3.5 1.8 5.7 4.4 6.7 7.8 2.5 9.1-6.1 22.6-9.4 26.6-.5.6-.9 1.3-1.3 2.2-.3-4.6-.5-9.5-.3-14.4-4 8.8-6.5 31.5-5.1 43 3.6 29.3 15.7 44.3 15.7 44.3-.8-1.6-1.8-7.7-2.7-14.9.7.6 1.5 1.2 2.2 1.8l.5.4c4.6 3.7 8.9 7.1 8.9 18.2 0 14.2-15.4 22.5-30.2 30.5-2.9 1.5-5.7 3.1-8.4 4.6-8.7 5-18 16.7-19.1 34.2-.9 14.6.9 49.9 3.4 75.9-12.4 4.8-26.7 6.4-39.7 6.8-2-4.1-3.9-8.5-5.5-13.1-.7-2-19.6-51.1-26.4-62.2 5.5 39 17.5 73.7 23.5 89.6-3.5-.5-7.3-.7-11.7-.7h-117c-4.4 0-8.3.3-11.7.7 6-15.9 18.1-50.6 23.5-89.6-6.8 11.2-25.7 60.3-26.4 62.2-1.6 4.6-3.5 9-5.5 13.1-13-.4-27.2-2-39.7-6.8 2.5-26 4.3-61.2 3.4-75.9-.9-17.4-10.3-29.2-19-34.2zM34.8 404.6c-12.1-20-8.7-54.1-3.7-59.1 10.9 34.4 47.2 44.3 74.4 45.4-2.7 4.2-5.2 7.6-7 10l-1.4 1.4c-7.2 7.8-8.6 18.5-4.1 31.8-22.7-.1-46.3-9.8-58.2-29.5zm45.7 43.5c6 1.1 12.2 1.9 18.6 2.4 3.5 8 7.4 15.9 12.3 23.1-14.4-5.9-24.4-16-30.9-25.5zM192 498.2c-60.6-.1-78.3-45.8-84.9-64.7-3.7-10.5-3.4-18.2.9-23.1 2.9-3.3 9.5-7.2 24.6-7.2h118.8c15.1 0 21.8 3.9 24.6 7.2 4.2 4.8 4.5 12.6.9 23.1-6.6 18.8-24.3 64.6-84.9 64.7zm80.6-24.6c4.9-7.2 8.8-15.1 12.3-23.1 6.4-.5 12.6-1.3 18.6-2.4-6.5 9.5-16.5 19.6-30.9 25.5zm76.6-69c-12 19.7-35.6 29.3-58.1 29.7 4.5-13.3 3.1-24.1-4.1-31.8-.4-.5-.9-1-1.4-1.5-1.8-2.4-4.3-5.8-7-10 27.2-1.2 63.5-11 74.4-45.4 5 5 8.4 39.1-3.8 59zM191.9 187.7h.2c12.7-.1 27.2-17.8 27.2-17.8-9.9 6-18.8 8.1-27.3 8.3-8.5-.2-17.4-2.3-27.3-8.3 0 0 14.5 17.6 27.2 17.8zm61.7 230.7h-29.4c-4.2 0-7.2.9-8.9 2.7-2.2 2.3-1.5 5.2-.9 6.7 1 2.6 5.5 11.3 13 19.3 2.7 2.9 6.6 4.5 11 4.5s8.7-1.6 11.8-4.2c2.3-2 10.2-9.2 13.7-18.1 1.3-3.3 1-6-.9-7.9-1.3-1.3-4-2.9-9.4-3z\"]\n};\nvar faGulp = {\n prefix: 'fab',\n iconName: 'gulp',\n icon: [256, 512, [], \"f3ae\", \"M209.8 391.1l-14.1 24.6-4.6 80.2c0 8.9-28.3 16.1-63.1 16.1s-63.1-7.2-63.1-16.1l-5.8-79.4-14.9-25.4c41.2 17.3 126 16.7 165.6 0zm-196-253.3l13.6 125.5c5.9-20 20.8-47 40-55.2 6.3-2.7 12.7-2.7 18.7.9 5.2 3 9.6 9.3 10.1 11.8 1.2 6.5-2 9.1-4.5 9.1-3 0-5.3-4.6-6.8-7.3-4.1-7.3-10.3-7.6-16.9-2.8-6.9 5-12.9 13.4-17.1 20.7-5.1 8.8-9.4 18.5-12 28.2-1.5 5.6-2.9 14.6-.6 19.9 1 2.2 2.5 3.6 4.9 3.6 5 0 12.3-6.6 15.8-10.1 4.5-4.5 10.3-11.5 12.5-16l5.2-15.5c2.6-6.8 9.9-5.6 9.9 0 0 10.2-3.7 13.6-10 34.7-5.8 19.5-7.6 25.8-7.6 25.8-.7 2.8-3.4 7.5-6.3 7.5-1.2 0-2.1-.4-2.6-1.2-1-1.4-.9-5.3-.8-6.3.2-3.2 6.3-22.2 7.3-25.2-2 2.2-4.1 4.4-6.4 6.6-5.4 5.1-14.1 11.8-21.5 11.8-3.4 0-5.6-.9-7.7-2.4l7.6 79.6c2 5 39.2 17.1 88.2 17.1 49.1 0 86.3-12.2 88.2-17.1l10.9-94.6c-5.7 5.2-12.3 11.6-19.6 14.8-5.4 2.3-17.4 3.8-17.4-5.7 0-5.2 9.1-14.8 14.4-21.5 1.4-1.7 4.7-5.9 4.7-8.1 0-2.9-6-2.2-11.7 2.5-3.2 2.7-6.2 6.3-8.7 9.7-4.3 6-6.6 11.2-8.5 15.5-6.2 14.2-4.1 8.6-9.1 22-5 13.3-4.2 11.8-5.2 14-.9 1.9-2.2 3.5-4 4.5-1.9 1-4.5.9-6.1-.3-.9-.6-1.3-1.9-1.3-3.7 0-.9.1-1.8.3-2.7 1.5-6.1 7.8-18.1 15-34.3 1.6-3.7 1-2.6.8-2.3-6.2 6-10.9 8.9-14.4 10.5-5.8 2.6-13 2.6-14.5-4.1-.1-.4-.1-.8-.2-1.2-11.8 9.2-24.3 11.7-20-8.1-4.6 8.2-12.6 14.9-22.4 14.9-4.1 0-7.1-1.4-8.6-5.1-2.3-5.5 1.3-14.9 4.6-23.8 1.7-4.5 4-9.9 7.1-16.2 1.6-3.4 4.2-5.4 7.6-4.5.6.2 1.1.4 1.6.7 2.6 1.8 1.6 4.5.3 7.2-3.8 7.5-7.1 13-9.3 20.8-.9 3.3-2 9 1.5 9 2.4 0 4.7-.8 6.9-2.4 4.6-3.4 8.3-8.5 11.1-13.5 2-3.6 4.4-8.3 5.6-12.3.5-1.7 1.1-3.3 1.8-4.8 1.1-2.5 2.6-5.1 5.2-5.1 1.3 0 2.4.5 3.2 1.5 1.7 2.2 1.3 4.5.4 6.9-2 5.6-4.7 10.6-6.9 16.7-1.3 3.5-2.7 8-2.7 11.7 0 3.4 3.7 2.6 6.8 1.2 2.4-1.1 4.8-2.8 6.8-4.5 1.2-4.9.9-3.8 26.4-68.2 1.3-3.3 3.7-4.7 6.1-4.7 1.2 0 2.2.4 3.2 1.1 1.7 1.3 1.7 4.1 1 6.2-.7 1.9-.6 1.3-4.5 10.5-5.2 12.1-8.6 20.8-13.2 31.9-1.9 4.6-7.7 18.9-8.7 22.3-.6 2.2-1.3 5.8 1 5.8 5.4 0 19.3-13.1 23.1-17 .2-.3.5-.4.9-.6.6-1.9 1.2-3.7 1.7-5.5 1.4-3.8 2.7-8.2 5.3-11.3.8-1 1.7-1.6 2.7-1.6 2.8 0 4.2 1.2 4.2 4 0 1.1-.7 5.1-1.1 6.2 1.4-1.5 2.9-3 4.5-4.5 15-13.9 25.7-6.8 25.7.2 0 7.4-8.9 17.7-13.8 23.4-1.6 1.9-4.9 5.4-5 6.4 0 1.3.9 1.8 2.2 1.8 2 0 6.4-3.5 8-4.7 5-3.9 11.8-9.9 16.6-14.1l14.8-136.8c-30.5 17.1-197.6 17.2-228.3.2zm229.7-8.5c0 21-231.2 21-231.2 0 0-8.8 51.8-15.9 115.6-15.9 9 0 17.8.1 26.3.4l12.6-48.7L228.1.6c1.4-1.4 5.8-.2 9.9 3.5s6.6 7.9 5.3 9.3l-.1.1L185.9 74l-10 40.7c39.9 2.6 67.6 8.1 67.6 14.6zm-69.4 4.6c0-.8-.9-1.5-2.5-2.1l-.2.8c0 1.3-5 2.4-11.1 2.4s-11.1-1.1-11.1-2.4c0-.1 0-.2.1-.3l.2-.7c-1.8.6-3 1.4-3 2.3 0 2.1 6.2 3.7 13.7 3.7 7.7.1 13.9-1.6 13.9-3.7z\"]\n};\nvar faHackerNews = {\n prefix: 'fab',\n iconName: 'hacker-news',\n icon: [448, 512, [], \"f1d4\", \"M0 32v448h448V32H0zm21.2 197.2H21c.1-.1.2-.3.3-.4 0 .1 0 .3-.1.4zm218 53.9V384h-31.4V281.3L128 128h37.3c52.5 98.3 49.2 101.2 59.3 125.6 12.3-27 5.8-24.4 60.6-125.6H320l-80.8 155.1z\"]\n};\nvar faHackerNewsSquare = {\n prefix: 'fab',\n iconName: 'hacker-news-square',\n icon: [448, 512, [], \"f3af\", \"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM21.2 229.2H21c.1-.1.2-.3.3-.4 0 .1 0 .3-.1.4zm218 53.9V384h-31.4V281.3L128 128h37.3c52.5 98.3 49.2 101.2 59.3 125.6 12.3-27 5.8-24.4 60.6-125.6H320l-80.8 155.1z\"]\n};\nvar faHackerrank = {\n prefix: 'fab',\n iconName: 'hackerrank',\n icon: [512, 512, [], \"f5f7\", \"M477.5 128C463 103.05 285.13 0 256.16 0S49.25 102.79 34.84 128s-14.49 230.8 0 256 192.38 128 221.32 128S463 409.08 477.49 384s14.51-231 .01-256zM316.13 414.22c-4 0-40.91-35.77-38-38.69.87-.87 6.26-1.48 17.55-1.83 0-26.23.59-68.59.94-86.32 0-2-.44-3.43-.44-5.85h-79.93c0 7.1-.46 36.2 1.37 72.88.23 4.54-1.58 6-5.74 5.94-10.13 0-20.27-.11-30.41-.08-4.1 0-5.87-1.53-5.74-6.11.92-33.44 3-84-.15-212.67v-3.17c-9.67-.35-16.38-1-17.26-1.84-2.92-2.92 34.54-38.69 38.49-38.69s41.17 35.78 38.27 38.69c-.87.87-7.9 1.49-16.77 1.84v3.16c-2.42 25.75-2 79.59-2.63 105.39h80.26c0-4.55.39-34.74-1.2-83.64-.1-3.39.95-5.17 4.21-5.2 11.07-.08 22.15-.13 33.23-.06 3.46 0 4.57 1.72 4.5 5.38C333 354.64 336 341.29 336 373.69c8.87.35 16.82 1 17.69 1.84 2.88 2.91-33.62 38.69-37.58 38.69z\"]\n};\nvar faHips = {\n prefix: 'fab',\n iconName: 'hips',\n icon: [640, 512, [], \"f452\", \"M251.6 157.6c0-1.9-.9-2.8-2.8-2.8h-40.9c-1.6 0-2.7 1.4-2.7 2.8v201.8c0 1.4 1.1 2.8 2.7 2.8h40.9c1.9 0 2.8-.9 2.8-2.8zM156.5 168c-16.1-11.8-36.3-17.9-60.3-18-18.1-.1-34.6 3.7-49.8 11.4V80.2c0-1.8-.9-2.7-2.8-2.7H2.7c-1.8 0-2.7.9-2.7 2.7v279.2c0 1.9.9 2.8 2.7 2.8h41c1.9 0 2.8-.9 2.8-2.8V223.3c0-.8-2.8-27 45.8-27 48.5 0 45.8 26.1 45.8 27v122.6c0 9 7.3 16.3 16.4 16.3h27.3c1.8 0 2.7-.9 2.7-2.8V223.3c0-23.4-9.3-41.8-28-55.3zm478.4 110.1c-6.8-15.7-18.4-27-34.9-34.1l-57.6-25.3c-8.6-3.6-9.2-11.2-2.6-16.1 7.4-5.5 44.3-13.9 84 6.8 1.7 1 4-.3 4-2.4v-44.7c0-1.3-.6-2.1-1.9-2.6-17.7-6.6-36.1-9.9-55.1-9.9-26.5 0-45.3 5.8-58.5 15.4-.5.4-28.4 20-22.7 53.7 3.4 19.6 15.8 34.2 37.2 43.6l53.6 23.5c11.6 5.1 15.2 13.3 12.2 21.2-3.7 9.1-13.2 13.6-36.5 13.6-24.3 0-44.7-8.9-58.4-19.1-2.1-1.4-4.4.2-4.4 2.3v34.4c0 10.4 4.9 17.3 14.6 20.7 15.6 5.5 31.6 8.2 48.2 8.2 12.7 0 25.8-1.2 36.3-4.3.7-.3 36-8.9 45.6-45.8 3.5-13.5 2.4-26.5-3.1-39.1zM376.2 149.8c-31.7 0-104.2 20.1-104.2 103.5v183.5c0 .8.6 2.7 2.7 2.7h40.9c1.9 0 2.8-.9 2.8-2.7V348c16.5 12.7 35.8 19.1 57.7 19.1 60.5 0 108.7-48.5 108.7-108.7.1-60.3-48.2-108.6-108.6-108.6zm0 170.9c-17.2 0-31.9-6.1-44-18.2-12.2-12.2-18.2-26.8-18.2-44 0-34.5 27.6-62.2 62.2-62.2 34.5 0 62.2 27.6 62.2 62.2.1 34.3-27.3 62.2-62.2 62.2zM228.3 72.5c-15.9 0-28.8 12.9-28.9 28.9 0 15.6 12.7 28.9 28.9 28.9s28.9-13.1 28.9-28.9c0-16.2-13-28.9-28.9-28.9z\"]\n};\nvar faHireAHelper = {\n prefix: 'fab',\n iconName: 'hire-a-helper',\n icon: [512, 512, [], \"f3b0\", \"M443.1 0H71.9C67.9 37.3 37.4 67.8 0 71.7v371.5c37.4 4.9 66 32.4 71.9 68.8h372.2c3-36.4 32.5-65.8 67.9-69.8V71.7c-36.4-5.9-65-35.3-68.9-71.7zm-37 404.9c-36.3 0-18.8-2-55.1-2-35.8 0-21 2-56.1 2-5.9 0-4.9-8.2 0-9.8 22.8-7.6 22.9-10.2 24.6-12.8 10.4-15.6 5.9-83 5.9-113 0-5.3-6.4-12.8-13.8-12.8H200.4c-7.4 0-13.8 7.5-13.8 12.8 0 30-4.5 97.4 5.9 113 1.7 2.5 1.8 5.2 24.6 12.8 4.9 1.6 6 9.8 0 9.8-35.1 0-20.3-2-56.1-2-36.3 0-18.8 2-55.1 2-7.9 0-5.8-10.8 0-10.8 10.2-3.4 13.5-3.5 21.7-13.8 7.7-12.9 7.9-44.4 7.9-127.8V151.3c0-22.2-12.2-28.3-28.6-32.4-8.8-2.2-4-11.8 1-11.8 36.5 0 20.6 2 57.1 2 32.7 0 16.5-2 49.2-2 3.3 0 8.5 8.3 1 10.8-4.9 1.6-27.6 3.7-27.6 39.3 0 45.6-.2 55.8 1 68.8 0 1.3 2.3 12.8 12.8 12.8h109.2c10.5 0 12.8-11.5 12.8-12.8 1.2-13 1-23.2 1-68.8 0-35.6-22.7-37.7-27.6-39.3-7.5-2.5-2.3-10.8 1-10.8 32.7 0 16.5 2 49.2 2 36.5 0 20.6-2 57.1-2 4.9 0 9.9 9.6 1 11.8-16.4 4.1-28.6 10.3-28.6 32.4v101.2c0 83.4.1 114.9 7.9 127.8 8.2 10.2 11.4 10.4 21.7 13.8 5.8 0 7.8 10.8 0 10.8z\"]\n};\nvar faHooli = {\n prefix: 'fab',\n iconName: 'hooli',\n icon: [640, 512, [], \"f427\", \"M144.5 352l38.3.8c-13.2-4.6-26-10.2-38.3-16.8zm57.7-5.3v5.3l-19.4.8c36.5 12.5 69.9 14.2 94.7 7.2-19.9.2-45.8-2.6-75.3-13.3zm408.9-115.2c15.9 0 28.9-12.9 28.9-28.9s-12.9-24.5-28.9-24.5c-15.9 0-28.9 8.6-28.9 24.5s12.9 28.9 28.9 28.9zm-29 120.5H640V241.5h-57.9zm-73.7 0h57.9V156.7L508.4 184zm-31-119.4c-18.2-18.2-50.4-17.1-50.4-17.1s-32.3-1.1-50.4 17.1c-18.2 18.2-16.8 33.9-16.8 52.6s-1.4 34.3 16.8 52.5 50.4 17.1 50.4 17.1 32.3 1.1 50.4-17.1c18.2-18.2 16.8-33.8 16.8-52.5-.1-18.8 1.3-34.5-16.8-52.6zm-39.8 71.9c0 3.6-1.8 12.5-10.7 12.5s-10.7-8.9-10.7-12.5v-40.4c0-8.7 7.3-10.9 10.7-10.9s10.7 2.1 10.7 10.9zm-106.2-71.9c-18.2-18.2-50.4-17.1-50.4-17.1s-32.2-1.1-50.4 17.1c-1.9 1.9-3.7 3.9-5.3 6-38.2-29.6-72.5-46.5-102.1-61.1v-20.7l-22.5 10.6c-54.4-22.1-89-18.2-97.3.1 0 0-24.9 32.8 61.8 110.8V352h57.9v-28.6c-6.5-4.2-13-8.7-19.4-13.6-14.8-11.2-27.4-21.6-38.4-31.4v-31c13.1 14.7 30.5 31.4 53.4 50.3l4.5 3.6v-29.8c0-6.9 1.7-18.2 10.8-18.2s10.6 6.9 10.6 15V317c18 12.2 37.3 22.1 57.7 29.6v-93.9c0-18.7-13.4-37.4-40.6-37.4-15.8-.1-30.5 8.2-38.5 21.9v-54.3c41.9 20.9 83.9 46.5 99.9 58.3-10.2 14.6-9.3 28.1-9.3 43.7 0 18.7-1.4 34.3 16.8 52.5s50.4 17.1 50.4 17.1 32.3 1.1 50.4-17.1c18.2-18.2 16.7-33.8 16.7-52.5 0-18.5 1.5-34.2-16.7-52.3zM65.2 184v63.3c-48.7-54.5-38.9-76-35.2-79.1 13.5-11.4 37.5-8 64.4 2.1zm226.5 120.5c0 3.6-1.8 12.5-10.7 12.5s-10.7-8.9-10.7-12.5v-40.4c0-8.7 7.3-10.9 10.7-10.9s10.7 2.1 10.7 10.9z\"]\n};\nvar faHornbill = {\n prefix: 'fab',\n iconName: 'hornbill',\n icon: [512, 512, [], \"f592\", \"M76.38 370.3a37.8 37.8 0 1 1-32.07-32.42c-78.28-111.35 52-190.53 52-190.53-5.86 43-8.24 91.16-8.24 91.16-67.31 41.49.93 64.06 39.81 72.87a140.38 140.38 0 0 0 131.66 91.94c1.92 0 3.77-.21 5.67-.28l.11 18.86c-99.22 1.39-158.7-29.14-188.94-51.6zm108-327.7A37.57 37.57 0 0 0 181 21.45a37.95 37.95 0 1 0-31.17 54.22c-22.55 29.91-53.83 89.57-52.42 190l21.84-.15c0-.9-.14-1.77-.14-2.68A140.42 140.42 0 0 1 207 132.71c8-37.71 30.7-114.3 73.8-44.29 0 0 48.14 2.38 91.18 8.24 0 0-77.84-128-187.59-54.06zm304.19 134.17a37.94 37.94 0 1 0-53.84-28.7C403 126.13 344.89 99 251.28 100.33l.14 22.5c2.7-.15 5.39-.41 8.14-.41a140.37 140.37 0 0 1 130.49 88.76c39.1 9 105.06 31.58 38.46 72.54 0 0-2.34 48.13-8.21 91.16 0 0 133.45-81.16 49-194.61a37.45 37.45 0 0 0 19.31-3.5zM374.06 436.24c21.43-32.46 46.42-89.69 45.14-179.66l-19.52.14c.08 2.06.3 4.07.3 6.15a140.34 140.34 0 0 1-91.39 131.45c-8.85 38.95-31.44 106.66-72.77 39.49 0 0-48.12-2.34-91.19-8.22 0 0 79.92 131.34 191.9 51a37.5 37.5 0 0 0 3.64 14 37.93 37.93 0 1 0 33.89-54.29z\"]\n};\nvar faHotjar = {\n prefix: 'fab',\n iconName: 'hotjar',\n icon: [448, 512, [], \"f3b1\", \"M414.9 161.5C340.2 29 121.1 0 121.1 0S222.2 110.4 93 197.7C11.3 252.8-21 324.4 14 402.6c26.8 59.9 83.5 84.3 144.6 93.4-29.2-55.1-6.6-122.4-4.1-129.6 57.1 86.4 165 0 110.8-93.9 71 15.4 81.6 138.6 27.1 215.5 80.5-25.3 134.1-88.9 148.8-145.6 15.5-59.3 3.7-127.9-26.3-180.9z\"]\n};\nvar faHouzz = {\n prefix: 'fab',\n iconName: 'houzz',\n icon: [448, 512, [], \"f27c\", \"M275.9 330.7H171.3V480H17V32h109.5v104.5l305.1 85.6V480H275.9z\"]\n};\nvar faHtml5 = {\n prefix: 'fab',\n iconName: 'html5',\n icon: [384, 512, [], \"f13b\", \"M0 32l34.9 395.8L191.5 480l157.6-52.2L384 32H0zm308.2 127.9H124.4l4.1 49.4h175.6l-13.6 148.4-97.9 27v.3h-1.1l-98.7-27.3-6-75.8h47.7L138 320l53.5 14.5 53.7-14.5 6-62.2H84.3L71.5 112.2h241.1l-4.4 47.7z\"]\n};\nvar faHubspot = {\n prefix: 'fab',\n iconName: 'hubspot',\n icon: [512, 512, [], \"f3b2\", \"M267.4 211.6c-25.1 23.7-40.8 57.3-40.8 94.6 0 29.3 9.7 56.3 26 78L203.1 434c-4.4-1.6-9.1-2.5-14-2.5-10.8 0-20.9 4.2-28.5 11.8-7.6 7.6-11.8 17.8-11.8 28.6s4.2 20.9 11.8 28.5c7.6 7.6 17.8 11.6 28.5 11.6 10.8 0 20.9-3.9 28.6-11.6 7.6-7.6 11.8-17.8 11.8-28.5 0-4.2-.6-8.2-1.9-12.1l50-50.2c22 16.9 49.4 26.9 79.3 26.9 71.9 0 130-58.3 130-130.2 0-65.2-47.7-119.2-110.2-128.7V116c17.5-7.4 28.2-23.8 28.2-42.9 0-26.1-20.9-47.9-47-47.9S311.2 47 311.2 73.1c0 19.1 10.7 35.5 28.2 42.9v61.2c-15.2 2.1-29.6 6.7-42.7 13.6-27.6-20.9-117.5-85.7-168.9-124.8 1.2-4.4 2-9 2-13.8C129.8 23.4 106.3 0 77.4 0 48.6 0 25.2 23.4 25.2 52.2c0 28.9 23.4 52.3 52.2 52.3 9.8 0 18.9-2.9 26.8-7.6l163.2 114.7zm89.5 163.6c-38.1 0-69-30.9-69-69s30.9-69 69-69 69 30.9 69 69-30.9 69-69 69z\"]\n};\nvar faIdeal = {\n prefix: 'fab',\n iconName: 'ideal',\n icon: [576, 512, [], \"f913\", \"M125.61,165.48a49.07,49.07,0,1,0,49.06,49.06A49.08,49.08,0,0,0,125.61,165.48ZM86.15,425.84h78.94V285.32H86.15Zm151.46-211.6c0-20-10-22.53-18.74-22.53H204.82V237.5h14.05C228.62,237.5,237.61,234.69,237.61,214.24Zm201.69,46V168.93h22.75V237.5h33.69C486.5,113.08,388.61,86.19,299.67,86.19H204.84V169h14c25.6,0,41.5,17.35,41.5,45.26,0,28.81-15.52,46-41.5,46h-14V425.88h94.83c144.61,0,194.94-67.16,196.72-165.64Zm-109.75,0H273.3V169h54.43v22.73H296v10.58h30V225H296V237.5h33.51Zm74.66,0-5.16-17.67H369.31l-5.18,17.67H340.47L368,168.92h32.35l27.53,91.34ZM299.65,32H32V480H299.65c161.85,0,251-79.73,251-224.52C550.62,172,518,32,299.65,32Zm0,426.92H53.07V53.07H299.65c142.1,0,229.9,64.61,229.9,202.41C529.55,389.57,448.55,458.92,299.65,458.92Zm83.86-264.85L376,219.88H392.4l-7.52-25.81Z\"]\n};\nvar faImdb = {\n prefix: 'fab',\n iconName: 'imdb',\n icon: [448, 512, [], \"f2d8\", \"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM21.3 229.2H21c.1-.1.2-.3.3-.4zM97 319.8H64V192h33zm113.2 0h-28.7v-86.4l-11.6 86.4h-20.6l-12.2-84.5v84.5h-29V192h42.8c3.3 19.8 6 39.9 8.7 59.9l7.6-59.9h43zm11.4 0V192h24.6c17.6 0 44.7-1.6 49 20.9 1.7 7.6 1.4 16.3 1.4 24.4 0 88.5 11.1 82.6-75 82.5zm160.9-29.2c0 15.7-2.4 30.9-22.2 30.9-9 0-15.2-3-20.9-9.8l-1.9 8.1h-29.8V192h31.7v41.7c6-6.5 12-9.2 20.9-9.2 21.4 0 22.2 12.8 22.2 30.1zM265 229.9c0-9.7 1.6-16-10.3-16v83.7c12.2.3 10.3-8.7 10.3-18.4zm85.5 26.1c0-5.4 1.1-12.7-6.2-12.7-6 0-4.9 8.9-4.9 12.7 0 .6-1.1 39.6 1.1 44.7.8 1.6 2.2 2.4 3.8 2.4 7.8 0 6.2-9 6.2-14.4z\"]\n};\nvar faInstagram = {\n prefix: 'fab',\n iconName: 'instagram',\n icon: [448, 512, [], \"f16d\", \"M224.1 141c-63.6 0-114.9 51.3-114.9 114.9s51.3 114.9 114.9 114.9S339 319.5 339 255.9 287.7 141 224.1 141zm0 189.6c-41.1 0-74.7-33.5-74.7-74.7s33.5-74.7 74.7-74.7 74.7 33.5 74.7 74.7-33.6 74.7-74.7 74.7zm146.4-194.3c0 14.9-12 26.8-26.8 26.8-14.9 0-26.8-12-26.8-26.8s12-26.8 26.8-26.8 26.8 12 26.8 26.8zm76.1 27.2c-1.7-35.9-9.9-67.7-36.2-93.9-26.2-26.2-58-34.4-93.9-36.2-37-2.1-147.9-2.1-184.9 0-35.8 1.7-67.6 9.9-93.9 36.1s-34.4 58-36.2 93.9c-2.1 37-2.1 147.9 0 184.9 1.7 35.9 9.9 67.7 36.2 93.9s58 34.4 93.9 36.2c37 2.1 147.9 2.1 184.9 0 35.9-1.7 67.7-9.9 93.9-36.2 26.2-26.2 34.4-58 36.2-93.9 2.1-37 2.1-147.8 0-184.8zM398.8 388c-7.8 19.6-22.9 34.7-42.6 42.6-29.5 11.7-99.5 9-132.1 9s-102.7 2.6-132.1-9c-19.6-7.8-34.7-22.9-42.6-42.6-11.7-29.5-9-99.5-9-132.1s-2.6-102.7 9-132.1c7.8-19.6 22.9-34.7 42.6-42.6 29.5-11.7 99.5-9 132.1-9s102.7-2.6 132.1 9c19.6 7.8 34.7 22.9 42.6 42.6 11.7 29.5 9 99.5 9 132.1s2.7 102.7-9 132.1z\"]\n};\nvar faIntercom = {\n prefix: 'fab',\n iconName: 'intercom',\n icon: [448, 512, [], \"f7af\", \"M392 32H56C25.1 32 0 57.1 0 88v336c0 30.9 25.1 56 56 56h336c30.9 0 56-25.1 56-56V88c0-30.9-25.1-56-56-56zm-108.3 82.1c0-19.8 29.9-19.8 29.9 0v199.5c0 19.8-29.9 19.8-29.9 0V114.1zm-74.6-7.5c0-19.8 29.9-19.8 29.9 0v216.5c0 19.8-29.9 19.8-29.9 0V106.6zm-74.7 7.5c0-19.8 29.9-19.8 29.9 0v199.5c0 19.8-29.9 19.8-29.9 0V114.1zM59.7 144c0-19.8 29.9-19.8 29.9 0v134.3c0 19.8-29.9 19.8-29.9 0V144zm323.4 227.8c-72.8 63-241.7 65.4-318.1 0-15-12.8 4.4-35.5 19.4-22.7 65.9 55.3 216.1 53.9 279.3 0 14.9-12.9 34.3 9.8 19.4 22.7zm5.2-93.5c0 19.8-29.9 19.8-29.9 0V144c0-19.8 29.9-19.8 29.9 0v134.3z\"]\n};\nvar faInternetExplorer = {\n prefix: 'fab',\n iconName: 'internet-explorer',\n icon: [512, 512, [], \"f26b\", \"M483.049 159.706c10.855-24.575 21.424-60.438 21.424-87.871 0-72.722-79.641-98.371-209.673-38.577-107.632-7.181-211.221 73.67-237.098 186.457 30.852-34.862 78.271-82.298 121.977-101.158C125.404 166.85 79.128 228.002 43.992 291.725 23.246 329.651 0 390.94 0 436.747c0 98.575 92.854 86.5 180.251 42.006 31.423 15.43 66.559 15.573 101.695 15.573 97.124 0 184.249-54.294 216.814-146.022H377.927c-52.509 88.593-196.819 52.996-196.819-47.436H509.9c6.407-43.581-1.655-95.715-26.851-141.162zM64.559 346.877c17.711 51.15 53.703 95.871 100.266 123.304-88.741 48.94-173.267 29.096-100.266-123.304zm115.977-108.873c2-55.151 50.276-94.871 103.98-94.871 53.418 0 101.981 39.72 103.981 94.871H180.536zm184.536-187.6c21.425-10.287 48.563-22.003 72.558-22.003 31.422 0 54.274 21.717 54.274 53.722 0 20.003-7.427 49.007-14.569 67.867-26.28-42.292-65.986-81.584-112.263-99.586z\"]\n};\nvar faInvision = {\n prefix: 'fab',\n iconName: 'invision',\n icon: [448, 512, [], \"f7b0\", \"M407.4 32H40.6C18.2 32 0 50.2 0 72.6v366.8C0 461.8 18.2 480 40.6 480h366.8c22.4 0 40.6-18.2 40.6-40.6V72.6c0-22.4-18.2-40.6-40.6-40.6zM176.1 145.6c.4 23.4-22.4 27.3-26.6 27.4-14.9 0-27.1-12-27.1-27 .1-35.2 53.1-35.5 53.7-.4zM332.8 377c-65.6 0-34.1-74-25-106.6 14.1-46.4-45.2-59-59.9.7l-25.8 103.3H177l8.1-32.5c-31.5 51.8-94.6 44.4-94.6-4.3.1-14.3.9-14 23-104.1H81.7l9.7-35.6h76.4c-33.6 133.7-32.6 126.9-32.9 138.2 0 20.9 40.9 13.5 57.4-23.2l19.8-79.4h-32.3l9.7-35.6h68.8l-8.9 40.5c40.5-75.5 127.9-47.8 101.8 38-14.2 51.1-14.6 50.7-14.9 58.8 0 15.5 17.5 22.6 31.8-16.9L386 325c-10.5 36.7-29.4 52-53.2 52z\"]\n};\nvar faIoxhost = {\n prefix: 'fab',\n iconName: 'ioxhost',\n icon: [640, 512, [], \"f208\", \"M616 160h-67.3C511.2 70.7 422.9 8 320 8 183 8 72 119 72 256c0 16.4 1.6 32.5 4.7 48H24c-13.3 0-24 10.8-24 24 0 13.3 10.7 24 24 24h67.3c37.5 89.3 125.8 152 228.7 152 137 0 248-111 248-248 0-16.4-1.6-32.5-4.7-48H616c13.3 0 24-10.8 24-24 0-13.3-10.7-24-24-24zm-96 96c0 110.5-89.5 200-200 200-75.7 0-141.6-42-175.5-104H424c13.3 0 24-10.8 24-24 0-13.3-10.7-24-24-24H125.8c-3.8-15.4-5.8-31.4-5.8-48 0-110.5 89.5-200 200-200 75.7 0 141.6 42 175.5 104H216c-13.3 0-24 10.8-24 24 0 13.3 10.7 24 24 24h298.2c3.8 15.4 5.8 31.4 5.8 48zm-304-24h208c13.3 0 24 10.7 24 24 0 13.2-10.7 24-24 24H216c-13.3 0-24-10.7-24-24 0-13.2 10.7-24 24-24z\"]\n};\nvar faItchIo = {\n prefix: 'fab',\n iconName: 'itch-io',\n icon: [512, 512, [], \"f83a\", \"M71.92 34.77C50.2 47.67 7.4 96.84 7 109.73v21.34c0 27.06 25.29 50.84 48.25 50.84 27.57 0 50.54-22.85 50.54-50 0 27.12 22.18 50 49.76 50s49-22.85 49-50c0 27.12 23.59 50 51.16 50h.5c27.57 0 51.16-22.85 51.16-50 0 27.12 21.47 50 49 50s49.76-22.85 49.76-50c0 27.12 23 50 50.54 50 23 0 48.25-23.78 48.25-50.84v-21.34c-.4-12.9-43.2-62.07-64.92-75C372.56 32.4 325.76 32 256 32S91.14 33.1 71.92 34.77zm132.32 134.39c-22 38.4-77.9 38.71-99.85.25-13.17 23.14-43.17 32.07-56 27.66-3.87 40.15-13.67 237.13 17.73 269.15 80 18.67 302.08 18.12 379.76 0 31.65-32.27 21.32-232 17.75-269.15-12.92 4.44-42.88-4.6-56-27.66-22 38.52-77.85 38.1-99.85-.24-7.1 12.49-23.05 28.94-51.76 28.94a57.54 57.54 0 0 1-51.75-28.94zm-41.58 53.77c16.47 0 31.09 0 49.22 19.78a436.91 436.91 0 0 1 88.18 0C318.22 223 332.85 223 349.31 223c52.33 0 65.22 77.53 83.87 144.45 17.26 62.15-5.52 63.67-33.95 63.73-42.15-1.57-65.49-32.18-65.49-62.79-39.25 6.43-101.93 8.79-155.55 0 0 30.61-23.34 61.22-65.49 62.79-28.42-.06-51.2-1.58-33.94-63.73 18.67-67 31.56-144.45 83.88-144.45zM256 270.79s-44.38 40.77-52.35 55.21l29-1.17v25.32c0 1.55 21.34.16 23.33.16 11.65.54 23.31 1 23.31-.16v-25.28l29 1.17c-8-14.48-52.35-55.24-52.35-55.24z\"]\n};\nvar faItunes = {\n prefix: 'fab',\n iconName: 'itunes',\n icon: [448, 512, [], \"f3b4\", \"M223.6 80.3C129 80.3 52.5 157 52.5 251.5S129 422.8 223.6 422.8s171.2-76.7 171.2-171.2c0-94.6-76.7-171.3-171.2-171.3zm79.4 240c-3.2 13.6-13.5 21.2-27.3 23.8-12.1 2.2-22.2 2.8-31.9-5-11.8-10-12-26.4-1.4-36.8 8.4-8 20.3-9.6 38-12.8 3-.5 5.6-1.2 7.7-3.7 3.2-3.6 2.2-2 2.2-80.8 0-5.6-2.7-7.1-8.4-6.1-4 .7-91.9 17.1-91.9 17.1-5 1.1-6.7 2.6-6.7 8.3 0 116.1.5 110.8-1.2 118.5-2.1 9-7.6 15.8-14.9 19.6-8.3 4.6-23.4 6.6-31.4 5.2-21.4-4-28.9-28.7-14.4-42.9 8.4-8 20.3-9.6 38-12.8 3-.5 5.6-1.2 7.7-3.7 5-5.7.9-127 2.6-133.7.4-2.6 1.5-4.8 3.5-6.4 2.1-1.7 5.8-2.7 6.7-2.7 101-19 113.3-21.4 115.1-21.4 5.7-.4 9 3 9 8.7-.1 170.6.4 161.4-1 167.6zM345.2 32H102.8C45.9 32 0 77.9 0 134.8v242.4C0 434.1 45.9 480 102.8 480h242.4c57 0 102.8-45.9 102.8-102.8V134.8C448 77.9 402.1 32 345.2 32zM223.6 444c-106.3 0-192.5-86.2-192.5-192.5S117.3 59 223.6 59s192.5 86.2 192.5 192.5S329.9 444 223.6 444z\"]\n};\nvar faItunesNote = {\n prefix: 'fab',\n iconName: 'itunes-note',\n icon: [384, 512, [], \"f3b5\", \"M381.9 388.2c-6.4 27.4-27.2 42.8-55.1 48-24.5 4.5-44.9 5.6-64.5-10.2-23.9-20.1-24.2-53.4-2.7-74.4 17-16.2 40.9-19.5 76.8-25.8 6-1.1 11.2-2.5 15.6-7.4 6.4-7.2 4.4-4.1 4.4-163.2 0-11.2-5.5-14.3-17-12.3-8.2 1.4-185.7 34.6-185.7 34.6-10.2 2.2-13.4 5.2-13.4 16.7 0 234.7 1.1 223.9-2.5 239.5-4.2 18.2-15.4 31.9-30.2 39.5-16.8 9.3-47.2 13.4-63.4 10.4-43.2-8.1-58.4-58-29.1-86.6 17-16.2 40.9-19.5 76.8-25.8 6-1.1 11.2-2.5 15.6-7.4 10.1-11.5 1.8-256.6 5.2-270.2.8-5.2 3-9.6 7.1-12.9 4.2-3.5 11.8-5.5 13.4-5.5 204-38.2 228.9-43.1 232.4-43.1 11.5-.8 18.1 6 18.1 17.6.2 344.5 1.1 326-1.8 338.5z\"]\n};\nvar faJava = {\n prefix: 'fab',\n iconName: 'java',\n icon: [384, 512, [], \"f4e4\", \"M277.74 312.9c9.8-6.7 23.4-12.5 23.4-12.5s-38.7 7-77.2 10.2c-47.1 3.9-97.7 4.7-123.1 1.3-60.1-8 33-30.1 33-30.1s-36.1-2.4-80.6 19c-52.5 25.4 130 37 224.5 12.1zm-85.4-32.1c-19-42.7-83.1-80.2 0-145.8C296 53.2 242.84 0 242.84 0c21.5 84.5-75.6 110.1-110.7 162.6-23.9 35.9 11.7 74.4 60.2 118.2zm114.6-176.2c.1 0-175.2 43.8-91.5 140.2 24.7 28.4-6.5 54-6.5 54s62.7-32.4 33.9-72.9c-26.9-37.8-47.5-56.6 64.1-121.3zm-6.1 270.5a12.19 12.19 0 0 1-2 2.6c128.3-33.7 81.1-118.9 19.8-97.3a17.33 17.33 0 0 0-8.2 6.3 70.45 70.45 0 0 1 11-3c31-6.5 75.5 41.5-20.6 91.4zM348 437.4s14.5 11.9-15.9 21.2c-57.9 17.5-240.8 22.8-291.6.7-18.3-7.9 16-19 26.8-21.3 11.2-2.4 17.7-2 17.7-2-20.3-14.3-131.3 28.1-56.4 40.2C232.84 509.4 401 461.3 348 437.4zM124.44 396c-78.7 22 47.9 67.4 148.1 24.5a185.89 185.89 0 0 1-28.2-13.8c-44.7 8.5-65.4 9.1-106 4.5-33.5-3.8-13.9-15.2-13.9-15.2zm179.8 97.2c-78.7 14.8-175.8 13.1-233.3 3.6 0-.1 11.8 9.7 72.4 13.6 92.2 5.9 233.8-3.3 237.1-46.9 0 0-6.4 16.5-76.2 29.7zM260.64 353c-59.2 11.4-93.5 11.1-136.8 6.6-33.5-3.5-11.6-19.7-11.6-19.7-86.8 28.8 48.2 61.4 169.5 25.9a60.37 60.37 0 0 1-21.1-12.8z\"]\n};\nvar faJediOrder = {\n prefix: 'fab',\n iconName: 'jedi-order',\n icon: [448, 512, [], \"f50e\", \"M398.5 373.6c95.9-122.1 17.2-233.1 17.2-233.1 45.4 85.8-41.4 170.5-41.4 170.5 105-171.5-60.5-271.5-60.5-271.5 96.9 72.7-10.1 190.7-10.1 190.7 85.8 158.4-68.6 230.1-68.6 230.1s-.4-16.9-2.2-85.7c4.3 4.5 34.5 36.2 34.5 36.2l-24.2-47.4 62.6-9.1-62.6-9.1 20.2-55.5-31.4 45.9c-2.2-87.7-7.8-305.1-7.9-306.9v-2.4 1-1 2.4c0 1-5.6 219-7.9 306.9l-31.4-45.9 20.2 55.5-62.6 9.1 62.6 9.1-24.2 47.4 34.5-36.2c-1.8 68.8-2.2 85.7-2.2 85.7s-154.4-71.7-68.6-230.1c0 0-107-118.1-10.1-190.7 0 0-165.5 99.9-60.5 271.5 0 0-86.8-84.8-41.4-170.5 0 0-78.7 111 17.2 233.1 0 0-26.2-16.1-49.4-77.7 0 0 16.9 183.3 222 185.7h4.1c205-2.4 222-185.7 222-185.7-23.6 61.5-49.9 77.7-49.9 77.7z\"]\n};\nvar faJenkins = {\n prefix: 'fab',\n iconName: 'jenkins',\n icon: [512, 512, [], \"f3b6\", \"M487.1 425c-1.4-11.2-19-23.1-28.2-31.9-5.1-5-29-23.1-30.4-29.9-1.4-6.6 9.7-21.5 13.3-28.9 5.1-10.7 8.8-23.7 11.3-32.6 18.8-66.1 20.7-156.9-6.2-211.2-10.2-20.6-38.6-49-56.4-62.5-42-31.7-119.6-35.3-170.1-16.6-14.1 5.2-27.8 9.8-40.1 17.1-33.1 19.4-68.3 32.5-78.1 71.6-24.2 10.8-31.5 41.8-30.3 77.8.2 7 4.1 15.8 2.7 22.4-.7 3.3-5.2 7.6-6.1 9.8-11.6 27.7-2.3 64 11.1 83.7 8.1 11.9 21.5 22.4 39.2 25.2.7 10.6 3.3 19.7 8.2 30.4 3.1 6.8 14.7 19 10.4 27.7-2.2 4.4-21 13.8-27.3 17.6C89 407.2 73.7 415 54.2 429c-12.6 9-32.3 10.2-29.2 31.1 2.1 14.1 10.1 31.6 14.7 45.8.7 2 1.4 4.1 2.1 6h422c4.9-15.3 9.7-30.9 14.6-47.2 3.4-11.4 10.2-27.8 8.7-39.7zM205.9 33.7c1.8-.5 3.4.7 4.9 2.4-.2 5.2-5.4 5.1-8.9 6.8-5.4 6.7-13.4 9.8-20 17.2-6.8 7.5-14.4 27.7-23.4 30-4.5 1.1-9.7-.8-13.6-.5-10.4.7-17.7 6-28.3 7.5 13.6-29.9 56.1-54 89.3-63.4zm-104.8 93.6c13.5-14.9 32.1-24.1 54.8-25.9 11.7 29.7-8.4 65-.9 97.6 2.3 9.9 10.2 25.4-2.4 25.7.3-28.3-34.8-46.3-61.3-29.6-1.8-21.5-4.9-51.7 9.8-67.8zm36.7 200.2c-1-4.1-2.7-12.9-2.3-15.1 1.6-8.7 17.1-12.5 11-24.7-11.3-.1-13.8 10.2-24.1 11.3-26.7 2.6-45.6-35.4-44.4-58.4 1-19.5 17.6-38.2 40.1-35.8 16 1.8 21.4 19.2 24.5 34.7 9.2.5 22.5-.4 26.9-7.6-.6-17.5-8.8-31.6-8.2-47.7 1-30.3 17.5-57.6 4.8-87.4 13.6-30.9 53.5-55.3 83.1-70 36.6-18.3 94.9-3.7 129.3 15.8 19.7 11.1 34.4 32.7 48.3 50.7-19.5-5.8-36.1 4.2-33.1 20.3 16.3-14.9 44.2-.2 52.5 16.4 7.9 15.8 7.8 39.3 9 62.8 2.9 57-10.4 115.9-39.1 157.1-7.7 11-14.1 23-24.9 30.6-26 18.2-65.4 34.7-99.2 23.4-44.7-15-65-44.8-89.5-78.8.7 18.7 13.8 34.1 26.8 48.4 11.3 12.5 25 26.6 39.7 32.4-12.3-2.9-31.1-3.8-36.2 7.2-28.6-1.9-55.1-4.8-68.7-24.2-10.6-15.4-21.4-41.4-26.3-61.4zm222 124.1c4.1-3 11.1-2.9 17.4-3.6-5.4-2.7-13-3.7-19.3-2.2-.1-4.2-2-6.8-3.2-10.2 10.6-3.8 35.5-28.5 49.6-20.3 6.7 3.9 9.5 26.2 10.1 37 .4 9-.8 18-4.5 22.8-18.8-.6-35.8-2.8-50.7-7 .9-6.1-1-12.1.6-16.5zm-17.2-20c-16.8.8-26-1.2-38.3-10.8.2-.8 1.4-.5 1.5-1.4 18 8 40.8-3.3 59-4.9-7.9 5.1-14.6 11.6-22.2 17.1zm-12.1 33.2c-1.6-9.4-3.5-12-2.8-20.2 25-16.6 29.7 28.6 2.8 20.2zM226 438.6c-11.6-.7-48.1-14-38.5-23.7 9.4 6.5 27.5 4.9 41.3 7.3.8 4.4-2.8 10.2-2.8 16.4zM57.7 497.1c-4.3-12.7-9.2-25.1-14.8-36.9 30.8-23.8 65.3-48.9 102.2-63.5 2.8-1.1 23.2 25.4 26.2 27.6 16.5 11.7 37 21 56.2 30.2 1.2 8.8 3.9 20.2 8.7 35.5.7 2.3 1.4 4.7 2.2 7.2H57.7zm240.6 5.7h-.8c.3-.2.5-.4.8-.5v.5zm7.5-5.7c2.1-1.4 4.3-2.8 6.4-4.3 1.1 1.4 2.2 2.8 3.2 4.3h-9.6zm15.1-24.7c-10.8 7.3-20.6 18.3-33.3 25.2-6 3.3-27 11.7-33.4 10.2-3.6-.8-3.9-5.3-5.4-9.5-3.1-9-10.1-23.4-10.8-37-.8-17.2-2.5-46 16-42.4 14.9 2.9 32.3 9.7 43.9 16.1 7.1 3.9 11.1 8.6 21.9 9.5-.1 1.4-.1 2.8-.2 4.3-5.9 3.9-15.3 3.8-21.8 7.1 9.5.4 17 2.7 23.5 5.9-.1 3.4-.3 7-.4 10.6zm53.4 24.7h-14c-.1-3.2-2.8-5.8-6.1-5.8s-5.9 2.6-6.1 5.8h-17.4c-2.8-4.4-5.7-8.6-8.9-12.5 2.1-2.2 4-4.7 6-6.9 9 3.7 14.8-4.9 21.7-4.2 7.9.8 14.2 11.7 25.4 11l-.6 12.6zm8.7 0c.2-4 .4-7.8.6-11.5 15.6-7.3 29 1.3 35.7 11.5H383zm83.4-37c-2.3 11.2-5.8 24-9.9 37.1-.2-.1-.4-.1-.6-.1H428c.6-1.1 1.2-2.2 1.9-3.3-2.6-6.1-9-8.7-10.9-15.5 12.1-22.7 6.5-93.4-24.2-78.5 4.3-6.3 15.6-11.5 20.8-19.3 13 10.4 20.8 20.3 33.2 31.4 6.8 6 20 13.3 21.4 23.1.8 5.5-2.6 18.9-3.8 25.1zM222.2 130.5c5.4-14.9 27.2-34.7 45-32 7.7 1.2 18 8.2 12.2 17.7-30.2-7-45.2 12.6-54.4 33.1-8.1-2-4.9-13.1-2.8-18.8zm184.1 63.1c8.2-3.6 22.4-.7 29.6-5.3-4.2-11.5-10.3-21.4-9.3-37.7.5 0 1 0 1.4.1 6.8 14.2 12.7 29.2 21.4 41.7-5.7 13.5-43.6 25.4-43.1 1.2zm20.4-43zm-117.2 45.7c-6.8-10.9-19-32.5-14.5-45.3 6.5 11.9 8.6 24.4 17.8 33.3 4.1 4 12.2 9 8.2 20.2-.9 2.7-7.8 8.6-11.7 9.7-14.4 4.3-47.9.9-36.6-17.1 11.9.7 27.9 7.8 36.8-.8zm27.3 70c3.8 6.6 1.4 18.7 12.1 20.6 20.2 3.4 43.6-12.3 58.1-17.8 9-15.2-.8-20.7-8.9-30.5-16.6-20-38.8-44.8-38-74.7 6.7-4.9 7.3 7.4 8.2 9.7 8.7 20.3 30.4 46.2 46.3 63.5 3.9 4.3 10.3 8.4 11 11.2 2.1 8.2-5.4 18-4.5 23.5-21.7 13.9-45.8 29.1-81.4 25.6-7.4-6.7-10.3-21.4-2.9-31.1zm-201.3-9.2c-6.8-3.9-8.4-21-16.4-21.4-11.4-.7-9.3 22.2-9.3 35.5-7.8-7.1-9.2-29.1-3.5-40.3-6.6-3.2-9.5 3.6-13.1 5.9 4.7-34.1 49.8-15.8 42.3 20.3zm299.6 28.8c-10.1 19.2-24.4 40.4-54 41-.6-6.2-1.1-15.6 0-19.4 22.7-2.2 36.6-13.7 54-21.6zm-141.9 12.4c18.9 9.9 53.6 11 79.3 10.2 1.4 5.6 1.3 12.6 1.4 19.4-33 1.8-72-6.4-80.7-29.6zm92.2 46.7c-1.7 4.3-5.3 9.3-9.8 11.1-12.1 4.9-45.6 8.7-62.4-.3-10.7-5.7-17.5-18.5-23.4-26-2.8-3.6-16.9-12.9-.2-12.9 13.1 32.7 58 29 95.8 28.1z\"]\n};\nvar faJira = {\n prefix: 'fab',\n iconName: 'jira',\n icon: [496, 512, [], \"f7b1\", \"M490 241.7C417.1 169 320.6 71.8 248.5 0 83 164.9 6 241.7 6 241.7c-7.9 7.9-7.9 20.7 0 28.7C138.8 402.7 67.8 331.9 248.5 512c379.4-378 15.7-16.7 241.5-241.7 8-7.9 8-20.7 0-28.6zm-241.5 90l-76-75.7 76-75.7 76 75.7-76 75.7z\"]\n};\nvar faJoget = {\n prefix: 'fab',\n iconName: 'joget',\n icon: [496, 512, [], \"f3b7\", \"M378.1 45C337.6 19.9 292.6 8 248.2 8 165 8 83.8 49.9 36.9 125.9c-71.9 116.6-35.6 269.3 81 341.2s269.3 35.6 341.2-80.9c71.9-116.6 35.6-269.4-81-341.2zm51.8 323.2c-40.4 65.5-110.4 101.5-182 101.5-6.8 0-13.6-.4-20.4-1-9-13.6-19.9-33.3-23.7-42.4-5.7-13.7-27.2-45.6 31.2-67.1 51.7-19.1 176.7-16.5 208.8-17.6-4 9-8.6 17.9-13.9 26.6zm-200.8-86.3c-55.5-1.4-81.7-20.8-58.5-48.2s51.1-40.7 68.9-51.2c17.9-10.5 27.3-33.7-23.6-29.7C87.3 161.5 48.6 252.1 37.6 293c-8.8-49.7-.1-102.7 28.5-149.1C128 43.4 259.6 12.2 360.1 74.1c74.8 46.1 111.2 130.9 99.3 212.7-24.9-.5-179.3-3.6-230.3-4.9zm183.8-54.8c-22.7-6-57 11.3-86.7 27.2-29.7 15.8-31.1 8.2-31.1 8.2s40.2-28.1 50.7-34.5 31.9-14 13.4-24.6c-3.2-1.8-6.7-2.7-10.4-2.7-17.8 0-41.5 18.7-67.5 35.6-31.5 20.5-65.3 31.3-65.3 31.3l169.5-1.6 46.5-23.4s3.6-9.5-19.1-15.5z\"]\n};\nvar faJoomla = {\n prefix: 'fab',\n iconName: 'joomla',\n icon: [448, 512, [], \"f1aa\", \"M.6 92.1C.6 58.8 27.4 32 60.4 32c30 0 54.5 21.9 59.2 50.2 32.6-7.6 67.1.6 96.5 30l-44.3 44.3c-20.5-20.5-42.6-16.3-55.4-3.5-14.3 14.3-14.3 37.9 0 52.2l99.5 99.5-44 44.3c-87.7-87.2-49.7-49.7-99.8-99.7-26.8-26.5-35-64.8-24.8-98.9C20.4 144.6.6 120.7.6 92.1zm129.5 116.4l44.3 44.3c10-10 89.7-89.7 99.7-99.8 14.3-14.3 37.6-14.3 51.9 0 12.8 12.8 17 35-3.5 55.4l44 44.3c31.2-31.2 38.5-67.6 28.9-101.2 29.2-4.1 51.9-29.2 51.9-59.5 0-33.2-26.8-60.1-59.8-60.1-30.3 0-55.4 22.5-59.5 51.6-33.8-9.9-71.7-1.5-98.3 25.1-18.3 19.1-71.1 71.5-99.6 99.9zm266.3 152.2c8.2-32.7-.9-68.5-26.3-93.9-11.8-12.2 5 4.7-99.5-99.7l-44.3 44.3 99.7 99.7c14.3 14.3 14.3 37.6 0 51.9-12.8 12.8-35 17-55.4-3.5l-44 44.3c27.6 30.2 68 38.8 102.7 28 5.5 27.4 29.7 48.1 58.9 48.1 33 0 59.8-26.8 59.8-60.1 0-30.2-22.5-55-51.6-59.1zm-84.3-53.1l-44-44.3c-87 86.4-50.4 50.4-99.7 99.8-14.3 14.3-37.6 14.3-51.9 0-13.1-13.4-16.9-35.3 3.2-55.4l-44-44.3c-30.2 30.2-38 65.2-29.5 98.3-26.7 6-46.2 29.9-46.2 58.2C0 453.2 26.8 480 59.8 480c28.6 0 52.5-19.8 58.6-46.7 32.7 8.2 68.5-.6 94.2-26 32.1-32 12.2-12.4 99.5-99.7z\"]\n};\nvar faJs = {\n prefix: 'fab',\n iconName: 'js',\n icon: [448, 512, [], \"f3b8\", \"M0 32v448h448V32H0zm243.8 349.4c0 43.6-25.6 63.5-62.9 63.5-33.7 0-53.2-17.4-63.2-38.5l34.3-20.7c6.6 11.7 12.6 21.6 27.1 21.6 13.8 0 22.6-5.4 22.6-26.5V237.7h42.1v143.7zm99.6 63.5c-39.1 0-64.4-18.6-76.7-43l34.3-19.8c9 14.7 20.8 25.6 41.5 25.6 17.4 0 28.6-8.7 28.6-20.8 0-14.4-11.4-19.5-30.7-28l-10.5-4.5c-30.4-12.9-50.5-29.2-50.5-63.5 0-31.6 24.1-55.6 61.6-55.6 26.8 0 46 9.3 59.8 33.7L368 290c-7.2-12.9-15-18-27.1-18-12.3 0-20.1 7.8-20.1 18 0 12.6 7.8 17.7 25.9 25.6l10.5 4.5c35.8 15.3 55.9 31 55.9 66.2 0 37.8-29.8 58.6-69.7 58.6z\"]\n};\nvar faJsSquare = {\n prefix: 'fab',\n iconName: 'js-square',\n icon: [448, 512, [], \"f3b9\", \"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM243.8 381.4c0 43.6-25.6 63.5-62.9 63.5-33.7 0-53.2-17.4-63.2-38.5l34.3-20.7c6.6 11.7 12.6 21.6 27.1 21.6 13.8 0 22.6-5.4 22.6-26.5V237.7h42.1v143.7zm99.6 63.5c-39.1 0-64.4-18.6-76.7-43l34.3-19.8c9 14.7 20.8 25.6 41.5 25.6 17.4 0 28.6-8.7 28.6-20.8 0-14.4-11.4-19.5-30.7-28l-10.5-4.5c-30.4-12.9-50.5-29.2-50.5-63.5 0-31.6 24.1-55.6 61.6-55.6 26.8 0 46 9.3 59.8 33.7L368 290c-7.2-12.9-15-18-27.1-18-12.3 0-20.1 7.8-20.1 18 0 12.6 7.8 17.7 25.9 25.6l10.5 4.5c35.8 15.3 55.9 31 55.9 66.2 0 37.8-29.8 58.6-69.7 58.6z\"]\n};\nvar faJsfiddle = {\n prefix: 'fab',\n iconName: 'jsfiddle',\n icon: [576, 512, [], \"f1cc\", \"M510.634 237.462c-4.727-2.621-5.664-5.748-6.381-10.776-2.352-16.488-3.539-33.619-9.097-49.095-35.895-99.957-153.99-143.386-246.849-91.646-27.37 15.25-48.971 36.369-65.493 63.903-3.184-1.508-5.458-2.71-7.824-3.686-30.102-12.421-59.049-10.121-85.331 9.167-25.531 18.737-36.422 44.548-32.676 76.408.355 3.025-1.967 7.621-4.514 9.545-39.712 29.992-56.031 78.065-41.902 124.615 13.831 45.569 57.514 79.796 105.608 81.433 30.291 1.031 60.637.546 90.959.539 84.041-.021 168.09.531 252.12-.48 52.664-.634 96.108-36.873 108.212-87.293 11.54-48.074-11.144-97.3-56.832-122.634zm21.107 156.88c-18.23 22.432-42.343 35.253-71.28 35.65-56.874.781-113.767.23-170.652.23 0 .7-163.028.159-163.728.154-43.861-.332-76.739-19.766-95.175-59.995-18.902-41.245-4.004-90.848 34.186-116.106 9.182-6.073 12.505-11.566 10.096-23.136-5.49-26.361 4.453-47.956 26.42-62.981 22.987-15.723 47.422-16.146 72.034-3.083 10.269 5.45 14.607 11.564 22.198-2.527 14.222-26.399 34.557-46.727 60.671-61.294 97.46-54.366 228.37 7.568 230.24 132.697.122 8.15 2.412 12.428 9.848 15.894 57.56 26.829 74.456 96.122 35.142 144.497zm-87.789-80.499c-5.848 31.157-34.622 55.096-66.666 55.095-16.953-.001-32.058-6.545-44.079-17.705-27.697-25.713-71.141-74.98-95.937-93.387-20.056-14.888-41.99-12.333-60.272 3.782-49.996 44.071 15.859 121.775 67.063 77.188 4.548-3.96 7.84-9.543 12.744-12.844 8.184-5.509 20.766-.884 13.168 10.622-17.358 26.284-49.33 38.197-78.863 29.301-28.897-8.704-48.84-35.968-48.626-70.179 1.225-22.485 12.364-43.06 35.414-55.965 22.575-12.638 46.369-13.146 66.991 2.474C295.68 280.7 320.467 323.97 352.185 343.47c24.558 15.099 54.254 7.363 68.823-17.506 28.83-49.209-34.592-105.016-78.868-63.46-3.989 3.744-6.917 8.932-11.41 11.72-10.975 6.811-17.333-4.113-12.809-10.353 20.703-28.554 50.464-40.44 83.271-28.214 31.429 11.714 49.108 44.366 42.76 78.186z\"]\n};\nvar faKaggle = {\n prefix: 'fab',\n iconName: 'kaggle',\n icon: [320, 512, [], \"f5fa\", \"M304.2 501.5L158.4 320.3 298.2 185c2.6-2.7 1.7-10.5-5.3-10.5h-69.2c-3.5 0-7 1.8-10.5 5.3L80.9 313.5V7.5q0-7.5-7.5-7.5H21.5Q14 0 14 7.5v497q0 7.5 7.5 7.5h51.9q7.5 0 7.5-7.5v-109l30.8-29.3 110.5 140.6c3 3.5 6.5 5.3 10.5 5.3h66.9q5.25 0 6-3z\"]\n};\nvar faKeybase = {\n prefix: 'fab',\n iconName: 'keybase',\n icon: [448, 512, [], \"f4f5\", \"M286.17 419a18 18 0 1 0 18 18 18 18 0 0 0-18-18zm111.92-147.6c-9.5-14.62-39.37-52.45-87.26-73.71q-9.1-4.06-18.38-7.27a78.43 78.43 0 0 0-47.88-104.13c-12.41-4.1-23.33-6-32.41-5.77-.6-2-1.89-11 9.4-35L198.66 32l-5.48 7.56c-8.69 12.06-16.92 23.55-24.34 34.89a51 51 0 0 0-8.29-1.25c-41.53-2.45-39-2.33-41.06-2.33-50.61 0-50.75 52.12-50.75 45.88l-2.36 36.68c-1.61 27 19.75 50.21 47.63 51.85l8.93.54a214 214 0 0 0-46.29 35.54C14 304.66 14 374 14 429.77v33.64l23.32-29.8a148.6 148.6 0 0 0 14.56 37.56c5.78 10.13 14.87 9.45 19.64 7.33 4.21-1.87 10-6.92 3.75-20.11a178.29 178.29 0 0 1-15.76-53.13l46.82-59.83-24.66 74.11c58.23-42.4 157.38-61.76 236.25-38.59 34.2 10.05 67.45.69 84.74-23.84.72-1 1.2-2.16 1.85-3.22a156.09 156.09 0 0 1 2.8 28.43c0 23.3-3.69 52.93-14.88 81.64-2.52 6.46 1.76 14.5 8.6 15.74 7.42 1.57 15.33-3.1 18.37-11.15C429 443 434 414 434 382.32c0-38.58-13-77.46-35.91-110.92zM142.37 128.58l-15.7-.93-1.39 21.79 13.13.78a93 93 0 0 0 .32 19.57l-22.38-1.34a12.28 12.28 0 0 1-11.76-12.79L107 119c1-12.17 13.87-11.27 13.26-11.32l29.11 1.73a144.35 144.35 0 0 0-7 19.17zm148.42 172.18a10.51 10.51 0 0 1-14.35-1.39l-9.68-11.49-34.42 27a8.09 8.09 0 0 1-11.13-1.08l-15.78-18.64a7.38 7.38 0 0 1 1.34-10.34l34.57-27.18-14.14-16.74-17.09 13.45a7.75 7.75 0 0 1-10.59-1s-3.72-4.42-3.8-4.53a7.38 7.38 0 0 1 1.37-10.34L214 225.19s-18.51-22-18.6-22.14a9.56 9.56 0 0 1 1.74-13.42 10.38 10.38 0 0 1 14.3 1.37l81.09 96.32a9.58 9.58 0 0 1-1.74 13.44zM187.44 419a18 18 0 1 0 18 18 18 18 0 0 0-18-18z\"]\n};\nvar faKeycdn = {\n prefix: 'fab',\n iconName: 'keycdn',\n icon: [512, 512, [], \"f3ba\", \"M63.8 409.3l60.5-59c32.1 42.8 71.1 66 126.6 67.4 30.5.7 60.3-7 86.4-22.4 5.1 5.3 18.5 19.5 20.9 22-32.2 20.7-69.6 31.1-108.1 30.2-43.3-1.1-84.6-16.7-117.7-44.4.3-.6-38.2 37.5-38.6 37.9 9.5 29.8-13.1 62.4-46.3 62.4C20.7 503.3 0 481.7 0 454.9c0-34.3 33.1-56.6 63.8-45.6zm354.9-252.4c19.1 31.3 29.6 67.4 28.7 104-1.1 44.8-19 87.5-48.6 121 .3.3 23.8 25.2 24.1 25.5 9.6-1.3 19.2 2 25.9 9.1 11.3 12 10.9 30.9-1.1 42.4-12 11.3-30.9 10.9-42.4-1.1-6.7-7-9.4-16.8-7.6-26.3-24.9-26.6-44.4-47.2-44.4-47.2 42.7-34.1 63.3-79.6 64.4-124.2.7-28.9-7.2-57.2-21.1-82.2l22.1-21zM104 53.1c6.7 7 9.4 16.8 7.6 26.3l45.9 48.1c-4.7 3.8-13.3 10.4-22.8 21.3-25.4 28.5-39.6 64.8-40.7 102.9-.7 28.9 6.1 57.2 20 82.4l-22 21.5C72.7 324 63.1 287.9 64.2 250.9c1-44.6 18.3-87.6 47.5-121.1l-25.3-26.4c-9.6 1.3-19.2-2-25.9-9.1-11.3-12-10.9-30.9 1.1-42.4C73.5 40.7 92.2 41 104 53.1zM464.9 8c26 0 47.1 22.4 47.1 48.3S490.9 104 464.9 104c-6.3.1-14-1.1-15.9-1.8l-62.9 59.7c-32.7-43.6-76.7-65.9-126.9-67.2-30.5-.7-60.3 6.8-86.2 22.4l-21.1-22C184.1 74.3 221.5 64 260 64.9c43.3 1.1 84.6 16.7 117.7 44.6l41.1-38.6c-1.5-4.7-2.2-9.6-2.2-14.5C416.5 29.7 438.9 8 464.9 8zM256.7 113.4c5.5 0 10.9.4 16.4 1.1 78.1 9.8 133.4 81.1 123.8 159.1-9.8 78.1-81.1 133.4-159.1 123.8-78.1-9.8-133.4-81.1-123.8-159.2 9.3-72.4 70.1-124.6 142.7-124.8zm-59 119.4c.6 22.7 12.2 41.8 32.4 52.2l-11 51.7h73.7l-11-51.7c20.1-10.9 32.1-29 32.4-52.2-.4-32.8-25.8-57.5-58.3-58.3-32.1.8-57.3 24.8-58.2 58.3zM256 160\"]\n};\nvar faKickstarter = {\n prefix: 'fab',\n iconName: 'kickstarter',\n icon: [448, 512, [], \"f3bb\", \"M400 480H48c-26.4 0-48-21.6-48-48V80c0-26.4 21.6-48 48-48h352c26.4 0 48 21.6 48 48v352c0 26.4-21.6 48-48 48zM199.6 178.5c0-30.7-17.6-45.1-39.7-45.1-25.8 0-40 19.8-40 44.5v154.8c0 25.8 13.7 45.6 40.5 45.6 21.5 0 39.2-14 39.2-45.6v-41.8l60.6 75.7c12.3 14.9 39 16.8 55.8 0 14.6-15.1 14.8-36.8 4-50.4l-49.1-62.8 40.5-58.7c9.4-13.5 9.5-34.5-5.6-49.1-16.4-15.9-44.6-17.3-61.4 7l-44.8 64.7v-38.8z\"]\n};\nvar faKickstarterK = {\n prefix: 'fab',\n iconName: 'kickstarter-k',\n icon: [384, 512, [], \"f3bc\", \"M147.3 114.4c0-56.2-32.5-82.4-73.4-82.4C26.2 32 0 68.2 0 113.4v283c0 47.3 25.3 83.4 74.9 83.4 39.8 0 72.4-25.6 72.4-83.4v-76.5l112.1 138.3c22.7 27.2 72.1 30.7 103.2 0 27-27.6 27.3-67.4 7.4-92.2l-90.8-114.8 74.9-107.4c17.4-24.7 17.5-63.1-10.4-89.8-30.3-29-82.4-31.6-113.6 12.8L147.3 185v-70.6z\"]\n};\nvar faKorvue = {\n prefix: 'fab',\n iconName: 'korvue',\n icon: [446, 512, [], \"f42f\", \"M386.5 34h-327C26.8 34 0 60.8 0 93.5v327.1C0 453.2 26.8 480 59.5 480h327.1c33 0 59.5-26.8 59.5-59.5v-327C446 60.8 419.2 34 386.5 34zM87.1 120.8h96v116l61.8-116h110.9l-81.2 132H87.1v-132zm161.8 272.1l-65.7-113.6v113.6h-96V262.1h191.5l88.6 130.8H248.9z\"]\n};\nvar faLaravel = {\n prefix: 'fab',\n iconName: 'laravel',\n icon: [512, 512, [], \"f3bd\", \"M504.4,115.83a5.72,5.72,0,0,0-.28-.68,8.52,8.52,0,0,0-.53-1.25,6,6,0,0,0-.54-.71,9.36,9.36,0,0,0-.72-.94c-.23-.22-.52-.4-.77-.6a8.84,8.84,0,0,0-.9-.68L404.4,55.55a8,8,0,0,0-8,0L300.12,111h0a8.07,8.07,0,0,0-.88.69,7.68,7.68,0,0,0-.78.6,8.23,8.23,0,0,0-.72.93c-.17.24-.39.45-.54.71a9.7,9.7,0,0,0-.52,1.25c-.08.23-.21.44-.28.68a8.08,8.08,0,0,0-.28,2.08V223.18l-80.22,46.19V63.44a7.8,7.8,0,0,0-.28-2.09c-.06-.24-.2-.45-.28-.68a8.35,8.35,0,0,0-.52-1.24c-.14-.26-.37-.47-.54-.72a9.36,9.36,0,0,0-.72-.94,9.46,9.46,0,0,0-.78-.6,9.8,9.8,0,0,0-.88-.68h0L115.61,1.07a8,8,0,0,0-8,0L11.34,56.49h0a6.52,6.52,0,0,0-.88.69,7.81,7.81,0,0,0-.79.6,8.15,8.15,0,0,0-.71.93c-.18.25-.4.46-.55.72a7.88,7.88,0,0,0-.51,1.24,6.46,6.46,0,0,0-.29.67,8.18,8.18,0,0,0-.28,2.1v329.7a8,8,0,0,0,4,6.95l192.5,110.84a8.83,8.83,0,0,0,1.33.54c.21.08.41.2.63.26a7.92,7.92,0,0,0,4.1,0c.2-.05.37-.16.55-.22a8.6,8.6,0,0,0,1.4-.58L404.4,400.09a8,8,0,0,0,4-6.95V287.88l92.24-53.11a8,8,0,0,0,4-7V117.92A8.63,8.63,0,0,0,504.4,115.83ZM111.6,17.28h0l80.19,46.15-80.2,46.18L31.41,63.44Zm88.25,60V278.6l-46.53,26.79-33.69,19.4V123.5l46.53-26.79Zm0,412.78L23.37,388.5V77.32L57.06,96.7l46.52,26.8V338.68a6.94,6.94,0,0,0,.12.9,8,8,0,0,0,.16,1.18h0a5.92,5.92,0,0,0,.38.9,6.38,6.38,0,0,0,.42,1v0a8.54,8.54,0,0,0,.6.78,7.62,7.62,0,0,0,.66.84l0,0c.23.22.52.38.77.58a8.93,8.93,0,0,0,.86.66l0,0,0,0,92.19,52.18Zm8-106.17-80.06-45.32,84.09-48.41,92.26-53.11,80.13,46.13-58.8,33.56Zm184.52,4.57L215.88,490.11V397.8L346.6,323.2l45.77-26.15Zm0-119.13L358.68,250l-46.53-26.79V131.79l33.69,19.4L392.37,178Zm8-105.28-80.2-46.17,80.2-46.16,80.18,46.15Zm8,105.28V178L455,151.19l33.68-19.4v91.39h0Z\"]\n};\nvar faLastfm = {\n prefix: 'fab',\n iconName: 'lastfm',\n icon: [512, 512, [], \"f202\", \"M225.8 367.1l-18.8-51s-30.5 34-76.2 34c-40.5 0-69.2-35.2-69.2-91.5 0-72.1 36.4-97.9 72.1-97.9 66.5 0 74.8 53.3 100.9 134.9 18.8 56.9 54 102.6 155.4 102.6 72.7 0 122-22.3 122-80.9 0-72.9-62.7-80.6-115-92.1-25.8-5.9-33.4-16.4-33.4-34 0-19.9 15.8-31.7 41.6-31.7 28.2 0 43.4 10.6 45.7 35.8l58.6-7c-4.7-52.8-41.1-74.5-100.9-74.5-52.8 0-104.4 19.9-104.4 83.9 0 39.9 19.4 65.1 68 76.8 44.9 10.6 79.8 13.8 79.8 45.7 0 21.7-21.1 30.5-61 30.5-59.2 0-83.9-31.1-97.9-73.9-32-96.8-43.6-163-161.3-163C45.7 113.8 0 168.3 0 261c0 89.1 45.7 137.2 127.9 137.2 66.2 0 97.9-31.1 97.9-31.1z\"]\n};\nvar faLastfmSquare = {\n prefix: 'fab',\n iconName: 'lastfm-square',\n icon: [448, 512, [], \"f203\", \"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-92.2 312.9c-63.4 0-85.4-28.6-97.1-64.1-16.3-51-21.5-84.3-63-84.3-22.4 0-45.1 16.1-45.1 61.2 0 35.2 18 57.2 43.3 57.2 28.6 0 47.6-21.3 47.6-21.3l11.7 31.9s-19.8 19.4-61.2 19.4c-51.3 0-79.9-30.1-79.9-85.8 0-57.9 28.6-92 82.5-92 73.5 0 80.8 41.4 100.8 101.9 8.8 26.8 24.2 46.2 61.2 46.2 24.9 0 38.1-5.5 38.1-19.1 0-19.9-21.8-22-49.9-28.6-30.4-7.3-42.5-23.1-42.5-48 0-40 32.3-52.4 65.2-52.4 37.4 0 60.1 13.6 63 46.6l-36.7 4.4c-1.5-15.8-11-22.4-28.6-22.4-16.1 0-26 7.3-26 19.8 0 11 4.8 17.6 20.9 21.3 32.7 7.1 71.8 12 71.8 57.5.1 36.7-30.7 50.6-76.1 50.6z\"]\n};\nvar faLeanpub = {\n prefix: 'fab',\n iconName: 'leanpub',\n icon: [576, 512, [], \"f212\", \"M386.539 111.485l15.096 248.955-10.979-.275c-36.232-.824-71.64 8.783-102.657 27.997-31.016-19.214-66.424-27.997-102.657-27.997-45.564 0-82.07 10.705-123.516 27.723L93.117 129.6c28.546-11.803 61.484-18.115 92.226-18.115 41.173 0 73.836 13.175 102.657 42.544 27.723-28.271 59.013-41.721 98.539-42.544zM569.07 448c-25.526 0-47.485-5.215-70.542-15.645-34.31-15.645-69.993-24.978-107.871-24.978-38.977 0-74.934 12.901-102.657 40.623-27.723-27.723-63.68-40.623-102.657-40.623-37.878 0-73.561 9.333-107.871 24.978C55.239 442.236 32.731 448 8.303 448H6.93L49.475 98.859C88.726 76.626 136.486 64 181.775 64 218.83 64 256.984 71.685 288 93.095 319.016 71.685 357.17 64 394.225 64c45.289 0 93.049 12.626 132.3 34.859L569.07 448zm-43.368-44.741l-34.036-280.246c-30.742-13.999-67.248-21.41-101.009-21.41-38.428 0-74.385 12.077-102.657 38.702-28.272-26.625-64.228-38.702-102.657-38.702-33.761 0-70.267 7.411-101.009 21.41L50.298 403.259c47.211-19.487 82.894-33.486 135.045-33.486 37.604 0 70.817 9.606 102.657 29.644 31.84-20.038 65.052-29.644 102.657-29.644 52.151 0 87.834 13.999 135.045 33.486z\"]\n};\nvar faLess = {\n prefix: 'fab',\n iconName: 'less',\n icon: [640, 512, [], \"f41d\", \"M612.7 219c0-20.5 3.2-32.6 3.2-54.6 0-34.2-12.6-45.2-40.5-45.2h-20.5v24.2h6.3c14.2 0 17.3 4.7 17.3 22.1 0 16.3-1.6 32.6-1.6 51.5 0 24.2 7.9 33.6 23.6 37.3v1.6c-15.8 3.7-23.6 13.1-23.6 37.3 0 18.9 1.6 34.2 1.6 51.5 0 17.9-3.7 22.6-17.3 22.6v.5h-6.3V393h20.5c27.8 0 40.5-11 40.5-45.2 0-22.6-3.2-34.2-3.2-54.6 0-11 6.8-22.6 27.3-23.6v-27.3c-20.5-.7-27.3-12.3-27.3-23.3zm-105.6 32c-15.8-6.3-30.5-10-30.5-20.5 0-7.9 6.3-12.6 17.9-12.6s22.1 4.7 33.6 13.1l21-27.8c-13.1-10-31-20.5-55.2-20.5-35.7 0-59.9 20.5-59.9 49.4 0 25.7 22.6 38.9 41.5 46.2 16.3 6.3 32.1 11.6 32.1 22.1 0 7.9-6.3 13.1-20.5 13.1-13.1 0-26.3-5.3-40.5-16.3l-21 30.5c15.8 13.1 39.9 22.1 59.9 22.1 42 0 64.6-22.1 64.6-51s-22.5-41-43-47.8zm-358.9 59.4c-3.7 0-8.4-3.2-8.4-13.1V119.1H65.2c-28.4 0-41 11-41 45.2 0 22.6 3.2 35.2 3.2 54.6 0 11-6.8 22.6-27.3 23.6v27.3c20.5.5 27.3 12.1 27.3 23.1 0 19.4-3.2 31-3.2 53.6 0 34.2 12.6 45.2 40.5 45.2h20.5v-24.2h-6.3c-13.1 0-17.3-5.3-17.3-22.6s1.6-32.1 1.6-51.5c0-24.2-7.9-33.6-23.6-37.3v-1.6c15.8-3.7 23.6-13.1 23.6-37.3 0-18.9-1.6-34.2-1.6-51.5s3.7-22.1 17.3-22.1H93v150.8c0 32.1 11 53.1 43.1 53.1 10 0 17.9-1.6 23.6-3.7l-5.3-34.2c-3.1.8-4.6.8-6.2.8zM379.9 251c-16.3-6.3-31-10-31-20.5 0-7.9 6.3-12.6 17.9-12.6 11.6 0 22.1 4.7 33.6 13.1l21-27.8c-13.1-10-31-20.5-55.2-20.5-35.7 0-59.9 20.5-59.9 49.4 0 25.7 22.6 38.9 41.5 46.2 16.3 6.3 32.1 11.6 32.1 22.1 0 7.9-6.3 13.1-20.5 13.1-13.1 0-26.3-5.3-40.5-16.3l-20.5 30.5c15.8 13.1 39.9 22.1 59.9 22.1 42 0 64.6-22.1 64.6-51 .1-28.9-22.5-41-43-47.8zm-155-68.8c-38.4 0-75.1 32.1-74.1 82.5 0 52 34.2 82.5 79.3 82.5 18.9 0 39.9-6.8 56.2-17.9l-15.8-27.8c-11.6 6.8-22.6 10-34.2 10-21 0-37.3-10-41.5-34.2H290c.5-3.7 1.6-11 1.6-19.4.6-42.6-22.6-75.7-66.7-75.7zm-30 66.2c3.2-21 15.8-31 30.5-31 18.9 0 26.3 13.1 26.3 31h-56.8z\"]\n};\nvar faLine = {\n prefix: 'fab',\n iconName: 'line',\n icon: [448, 512, [], \"f3c0\", \"M272.1 204.2v71.1c0 1.8-1.4 3.2-3.2 3.2h-11.4c-1.1 0-2.1-.6-2.6-1.3l-32.6-44v42.2c0 1.8-1.4 3.2-3.2 3.2h-11.4c-1.8 0-3.2-1.4-3.2-3.2v-71.1c0-1.8 1.4-3.2 3.2-3.2H219c1 0 2.1.5 2.6 1.4l32.6 44v-42.2c0-1.8 1.4-3.2 3.2-3.2h11.4c1.8-.1 3.3 1.4 3.3 3.1zm-82-3.2h-11.4c-1.8 0-3.2 1.4-3.2 3.2v71.1c0 1.8 1.4 3.2 3.2 3.2h11.4c1.8 0 3.2-1.4 3.2-3.2v-71.1c0-1.7-1.4-3.2-3.2-3.2zm-27.5 59.6h-31.1v-56.4c0-1.8-1.4-3.2-3.2-3.2h-11.4c-1.8 0-3.2 1.4-3.2 3.2v71.1c0 .9.3 1.6.9 2.2.6.5 1.3.9 2.2.9h45.7c1.8 0 3.2-1.4 3.2-3.2v-11.4c0-1.7-1.4-3.2-3.1-3.2zM332.1 201h-45.7c-1.7 0-3.2 1.4-3.2 3.2v71.1c0 1.7 1.4 3.2 3.2 3.2h45.7c1.8 0 3.2-1.4 3.2-3.2v-11.4c0-1.8-1.4-3.2-3.2-3.2H301v-12h31.1c1.8 0 3.2-1.4 3.2-3.2V234c0-1.8-1.4-3.2-3.2-3.2H301v-12h31.1c1.8 0 3.2-1.4 3.2-3.2v-11.4c-.1-1.7-1.5-3.2-3.2-3.2zM448 113.7V399c-.1 44.8-36.8 81.1-81.7 81H81c-44.8-.1-81.1-36.9-81-81.7V113c.1-44.8 36.9-81.1 81.7-81H367c44.8.1 81.1 36.8 81 81.7zm-61.6 122.6c0-73-73.2-132.4-163.1-132.4-89.9 0-163.1 59.4-163.1 132.4 0 65.4 58 120.2 136.4 130.6 19.1 4.1 16.9 11.1 12.6 36.8-.7 4.1-3.3 16.1 14.1 8.8 17.4-7.3 93.9-55.3 128.2-94.7 23.6-26 34.9-52.3 34.9-81.5z\"]\n};\nvar faLinkedin = {\n prefix: 'fab',\n iconName: 'linkedin',\n icon: [448, 512, [], \"f08c\", \"M416 32H31.9C14.3 32 0 46.5 0 64.3v383.4C0 465.5 14.3 480 31.9 480H416c17.6 0 32-14.5 32-32.3V64.3c0-17.8-14.4-32.3-32-32.3zM135.4 416H69V202.2h66.5V416zm-33.2-243c-21.3 0-38.5-17.3-38.5-38.5S80.9 96 102.2 96c21.2 0 38.5 17.3 38.5 38.5 0 21.3-17.2 38.5-38.5 38.5zm282.1 243h-66.4V312c0-24.8-.5-56.7-34.5-56.7-34.6 0-39.9 27-39.9 54.9V416h-66.4V202.2h63.7v29.2h.9c8.9-16.8 30.6-34.5 62.9-34.5 67.2 0 79.7 44.3 79.7 101.9V416z\"]\n};\nvar faLinkedinIn = {\n prefix: 'fab',\n iconName: 'linkedin-in',\n icon: [448, 512, [], \"f0e1\", \"M100.28 448H7.4V148.9h92.88zM53.79 108.1C24.09 108.1 0 83.5 0 53.8a53.79 53.79 0 0 1 107.58 0c0 29.7-24.1 54.3-53.79 54.3zM447.9 448h-92.68V302.4c0-34.7-.7-79.2-48.29-79.2-48.29 0-55.69 37.7-55.69 76.7V448h-92.78V148.9h89.08v40.8h1.3c12.4-23.5 42.69-48.3 87.88-48.3 94 0 111.28 61.9 111.28 142.3V448z\"]\n};\nvar faLinode = {\n prefix: 'fab',\n iconName: 'linode',\n icon: [448, 512, [], \"f2b8\", \"M437.4 226.3c-.3-.9-.9-1.4-1.4-2l-70-38.6c-.9-.6-2-.6-3.1 0l-58.9 36c-.9.6-1.4 1.7-1.4 2.6l-.9 31.4-24-16c-.9-.6-2.3-.6-3.1 0L240 260.9l-1.4-35.1c0-.9-.6-2-1.4-2.3l-36-24.3 33.7-17.4c1.1-.6 1.7-1.7 1.7-2.9l-5.7-132.3c0-.9-.9-2-1.7-2.6L138.6.3c-.9-.3-1.7-.3-2.3-.3L12.6 38.6c-1.4.6-2.3 2-2 3.7L38 175.4c.9 3.4 34 27.4 38.6 30.9l-26.9 12.9c-1.4.9-2 2.3-1.7 3.4l20.6 100.3c.6 2.9 23.7 23.1 27.1 26.3l-17.4 10.6c-.9.6-1.7 2-1.4 3.1 1.4 7.1 15.4 77.7 16.9 79.1l65.1 69.1c.6.6 1.4.6 2.3.9.6 0 1.1-.3 1.7-.6l83.7-66.9c.9-.6 1.1-1.4 1.1-2.3l-2-46 28 23.7c1.1.9 2.9.9 4 0l66.9-53.4c.9-.6 1.1-1.4 1.1-2.3l2.3-33.4 20.3 14c1.1.9 2.6.9 3.7 0l54.6-43.7c.6-.3 1.1-1.1 1.1-2 .9-6.5 10.3-70.8 9.7-72.8zm-204.8 4.8l4 92.6-90.6 61.2-14-96.6 100.6-57.2zm-7.7-180l5.4 126-106.6 55.4L104 97.7l120.9-46.6zM44 173.1L18 48l79.7 49.4 19.4 132.9L44 173.1zm30.6 147.8L55.7 230l70 58.3 13.7 93.4-64.8-60.8zm24.3 117.7l-13.7-67.1 61.7 60.9 9.7 67.4-57.7-61.2zm64.5 64.5l-10.6-70.9 85.7-61.4 3.1 70-78.2 62.3zm82-115.1c0-3.4.9-22.9-2-25.1l-24.3-20 22.3-14.9c2.3-1.7 1.1-5.7 1.1-8l29.4 22.6.6 68.3-27.1-22.9zm94.3-25.4l-60.9 48.6-.6-68.6 65.7-46.9-4.2 66.9zm27.7-25.7l-19.1-13.4 2-34c.3-.9-.3-2-1.1-2.6L308 259.7l.6-30 64.6 40.6-5.8 66.6zm54.6-39.8l-48.3 38.3 5.7-65.1 51.1-36.6-8.5 63.4z\"]\n};\nvar faLinux = {\n prefix: 'fab',\n iconName: 'linux',\n icon: [448, 512, [], \"f17c\", \"M220.8 123.3c1 .5 1.8 1.7 3 1.7 1.1 0 2.8-.4 2.9-1.5.2-1.4-1.9-2.3-3.2-2.9-1.7-.7-3.9-1-5.5-.1-.4.2-.8.7-.6 1.1.3 1.3 2.3 1.1 3.4 1.7zm-21.9 1.7c1.2 0 2-1.2 3-1.7 1.1-.6 3.1-.4 3.5-1.6.2-.4-.2-.9-.6-1.1-1.6-.9-3.8-.6-5.5.1-1.3.6-3.4 1.5-3.2 2.9.1 1 1.8 1.5 2.8 1.4zM420 403.8c-3.6-4-5.3-11.6-7.2-19.7-1.8-8.1-3.9-16.8-10.5-22.4-1.3-1.1-2.6-2.1-4-2.9-1.3-.8-2.7-1.5-4.1-2 9.2-27.3 5.6-54.5-3.7-79.1-11.4-30.1-31.3-56.4-46.5-74.4-17.1-21.5-33.7-41.9-33.4-72C311.1 85.4 315.7.1 234.8 0 132.4-.2 158 103.4 156.9 135.2c-1.7 23.4-6.4 41.8-22.5 64.7-18.9 22.5-45.5 58.8-58.1 96.7-6 17.9-8.8 36.1-6.2 53.3-6.5 5.8-11.4 14.7-16.6 20.2-4.2 4.3-10.3 5.9-17 8.3s-14 6-18.5 14.5c-2.1 3.9-2.8 8.1-2.8 12.4 0 3.9.6 7.9 1.2 11.8 1.2 8.1 2.5 15.7.8 20.8-5.2 14.4-5.9 24.4-2.2 31.7 3.8 7.3 11.4 10.5 20.1 12.3 17.3 3.6 40.8 2.7 59.3 12.5 19.8 10.4 39.9 14.1 55.9 10.4 11.6-2.6 21.1-9.6 25.9-20.2 12.5-.1 26.3-5.4 48.3-6.6 14.9-1.2 33.6 5.3 55.1 4.1.6 2.3 1.4 4.6 2.5 6.7v.1c8.3 16.7 23.8 24.3 40.3 23 16.6-1.3 34.1-11 48.3-27.9 13.6-16.4 36-23.2 50.9-32.2 7.4-4.5 13.4-10.1 13.9-18.3.4-8.2-4.4-17.3-15.5-29.7zM223.7 87.3c9.8-22.2 34.2-21.8 44-.4 6.5 14.2 3.6 30.9-4.3 40.4-1.6-.8-5.9-2.6-12.6-4.9 1.1-1.2 3.1-2.7 3.9-4.6 4.8-11.8-.2-27-9.1-27.3-7.3-.5-13.9 10.8-11.8 23-4.1-2-9.4-3.5-13-4.4-1-6.9-.3-14.6 2.9-21.8zM183 75.8c10.1 0 20.8 14.2 19.1 33.5-3.5 1-7.1 2.5-10.2 4.6 1.2-8.9-3.3-20.1-9.6-19.6-8.4.7-9.8 21.2-1.8 28.1 1 .8 1.9-.2-5.9 5.5-15.6-14.6-10.5-52.1 8.4-52.1zm-13.6 60.7c6.2-4.6 13.6-10 14.1-10.5 4.7-4.4 13.5-14.2 27.9-14.2 7.1 0 15.6 2.3 25.9 8.9 6.3 4.1 11.3 4.4 22.6 9.3 8.4 3.5 13.7 9.7 10.5 18.2-2.6 7.1-11 14.4-22.7 18.1-11.1 3.6-19.8 16-38.2 14.9-3.9-.2-7-1-9.6-2.1-8-3.5-12.2-10.4-20-15-8.6-4.8-13.2-10.4-14.7-15.3-1.4-4.9 0-9 4.2-12.3zm3.3 334c-2.7 35.1-43.9 34.4-75.3 18-29.9-15.8-68.6-6.5-76.5-21.9-2.4-4.7-2.4-12.7 2.6-26.4v-.2c2.4-7.6.6-16-.6-23.9-1.2-7.8-1.8-15 .9-20 3.5-6.7 8.5-9.1 14.8-11.3 10.3-3.7 11.8-3.4 19.6-9.9 5.5-5.7 9.5-12.9 14.3-18 5.1-5.5 10-8.1 17.7-6.9 8.1 1.2 15.1 6.8 21.9 16l19.6 35.6c9.5 19.9 43.1 48.4 41 68.9zm-1.4-25.9c-4.1-6.6-9.6-13.6-14.4-19.6 7.1 0 14.2-2.2 16.7-8.9 2.3-6.2 0-14.9-7.4-24.9-13.5-18.2-38.3-32.5-38.3-32.5-13.5-8.4-21.1-18.7-24.6-29.9s-3-23.3-.3-35.2c5.2-22.9 18.6-45.2 27.2-59.2 2.3-1.7.8 3.2-8.7 20.8-8.5 16.1-24.4 53.3-2.6 82.4.6-20.7 5.5-41.8 13.8-61.5 12-27.4 37.3-74.9 39.3-112.7 1.1.8 4.6 3.2 6.2 4.1 4.6 2.7 8.1 6.7 12.6 10.3 12.4 10 28.5 9.2 42.4 1.2 6.2-3.5 11.2-7.5 15.9-9 9.9-3.1 17.8-8.6 22.3-15 7.7 30.4 25.7 74.3 37.2 95.7 6.1 11.4 18.3 35.5 23.6 64.6 3.3-.1 7 .4 10.9 1.4 13.8-35.7-11.7-74.2-23.3-84.9-4.7-4.6-4.9-6.6-2.6-6.5 12.6 11.2 29.2 33.7 35.2 59 2.8 11.6 3.3 23.7.4 35.7 16.4 6.8 35.9 17.9 30.7 34.8-2.2-.1-3.2 0-4.2 0 3.2-10.1-3.9-17.6-22.8-26.1-19.6-8.6-36-8.6-38.3 12.5-12.1 4.2-18.3 14.7-21.4 27.3-2.8 11.2-3.6 24.7-4.4 39.9-.5 7.7-3.6 18-6.8 29-32.1 22.9-76.7 32.9-114.3 7.2zm257.4-11.5c-.9 16.8-41.2 19.9-63.2 46.5-13.2 15.7-29.4 24.4-43.6 25.5s-26.5-4.8-33.7-19.3c-4.7-11.1-2.4-23.1 1.1-36.3 3.7-14.2 9.2-28.8 9.9-40.6.8-15.2 1.7-28.5 4.2-38.7 2.6-10.3 6.6-17.2 13.7-21.1.3-.2.7-.3 1-.5.8 13.2 7.3 26.6 18.8 29.5 12.6 3.3 30.7-7.5 38.4-16.3 9-.3 15.7-.9 22.6 5.1 9.9 8.5 7.1 30.3 17.1 41.6 10.6 11.6 14 19.5 13.7 24.6zM173.3 148.7c2 1.9 4.7 4.5 8 7.1 6.6 5.2 15.8 10.6 27.3 10.6 11.6 0 22.5-5.9 31.8-10.8 4.9-2.6 10.9-7 14.8-10.4s5.9-6.3 3.1-6.6-2.6 2.6-6 5.1c-4.4 3.2-9.7 7.4-13.9 9.8-7.4 4.2-19.5 10.2-29.9 10.2s-18.7-4.8-24.9-9.7c-3.1-2.5-5.7-5-7.7-6.9-1.5-1.4-1.9-4.6-4.3-4.9-1.4-.1-1.8 3.7 1.7 6.5z\"]\n};\nvar faLyft = {\n prefix: 'fab',\n iconName: 'lyft',\n icon: [512, 512, [], \"f3c3\", \"M0 81.1h77.8v208.7c0 33.1 15 52.8 27.2 61-12.7 11.1-51.2 20.9-80.2-2.8C7.8 334 0 310.7 0 289V81.1zm485.9 173.5v-22h23.8v-76.8h-26.1c-10.1-46.3-51.2-80.7-100.3-80.7-56.6 0-102.7 46-102.7 102.7V357c16 2.3 35.4-.3 51.7-14 17.1-14 24.8-37.2 24.8-59v-6.7h38.8v-76.8h-38.8v-23.3c0-34.6 52.2-34.6 52.2 0v77.1c0 56.6 46 102.7 102.7 102.7v-76.5c-14.5 0-26.1-11.7-26.1-25.9zm-294.3-99v113c0 15.4-23.8 15.4-23.8 0v-113H91v132.7c0 23.8 8 54 45 63.9 37 9.8 58.2-10.6 58.2-10.6-2.1 13.4-14.5 23.3-34.9 25.3-15.5 1.6-35.2-3.6-45-7.8v70.3c25.1 7.5 51.5 9.8 77.6 4.7 47.1-9.1 76.8-48.4 76.8-100.8V155.1h-77.1v.5z\"]\n};\nvar faMagento = {\n prefix: 'fab',\n iconName: 'magento',\n icon: [448, 512, [], \"f3c4\", \"M445.7 127.9V384l-63.4 36.5V164.7L223.8 73.1 65.2 164.7l.4 255.9L2.3 384V128.1L224.2 0l221.5 127.9zM255.6 420.5L224 438.9l-31.8-18.2v-256l-63.3 36.6.1 255.9 94.9 54.9 95.1-54.9v-256l-63.4-36.6v255.9z\"]\n};\nvar faMailchimp = {\n prefix: 'fab',\n iconName: 'mailchimp',\n icon: [448, 512, [], \"f59e\", \"M330.61 243.52a36.15 36.15 0 0 1 9.3 0c1.66-3.83 1.95-10.43.45-17.61-2.23-10.67-5.25-17.14-11.48-16.13s-6.47 8.74-4.24 19.42c1.26 6 3.49 11.14 6 14.32zM277.05 252c4.47 2 7.2 3.26 8.28 2.13 1.89-1.94-3.48-9.39-12.12-13.09a31.44 31.44 0 0 0-30.61 3.68c-3 2.18-5.81 5.22-5.41 7.06.85 3.74 10-2.71 22.6-3.48 7-.44 12.8 1.75 17.26 3.71zm-9 5.13c-9.07 1.42-15 6.53-13.47 10.1.9.34 1.17.81 5.21-.81a37 37 0 0 1 18.72-1.95c2.92.34 4.31.52 4.94-.49 1.46-2.22-5.71-8-15.39-6.85zm54.17 17.1c3.38-6.87-10.9-13.93-14.3-7s10.92 13.88 14.32 6.97zm15.66-20.47c-7.66-.13-7.95 15.8-.26 15.93s7.98-15.81.28-15.96zm-218.79 78.9c-1.32.31-6 1.45-8.47-2.35-5.2-8 11.11-20.38 3-35.77-9.1-17.47-27.82-13.54-35.05-5.54-8.71 9.6-8.72 23.54-5 24.08 4.27.57 4.08-6.47 7.38-11.63a12.83 12.83 0 0 1 17.85-3.72c11.59 7.59 1.37 17.76 2.28 28.62 1.39 16.68 18.42 16.37 21.58 9a2.08 2.08 0 0 0-.2-2.33c.03.89.68-1.3-3.35-.39zm299.72-17.07c-3.35-11.73-2.57-9.22-6.78-20.52 2.45-3.67 15.29-24-3.07-43.25-10.4-10.92-33.9-16.54-41.1-18.54-1.5-11.39 4.65-58.7-21.52-83 20.79-21.55 33.76-45.29 33.73-65.65-.06-39.16-48.15-51-107.42-26.47l-12.55 5.33c-.06-.05-22.71-22.27-23.05-22.57C169.5-18-41.77 216.81 25.78 273.85l14.76 12.51a72.49 72.49 0 0 0-4.1 33.5c3.36 33.4 36 60.42 67.53 60.38 57.73 133.06 267.9 133.28 322.29 3 1.74-4.47 9.11-24.61 9.11-42.38s-10.09-25.27-16.53-25.27zm-316 48.16c-22.82-.61-47.46-21.15-49.91-45.51-6.17-61.31 74.26-75.27 84-12.33 4.54 29.64-4.67 58.49-34.12 57.81zM84.3 249.55C69.14 252.5 55.78 261.09 47.6 273c-4.88-4.07-14-12-15.59-15-13.01-24.85 14.24-73 33.3-100.21C112.42 90.56 186.19 39.68 220.36 48.91c5.55 1.57 23.94 22.89 23.94 22.89s-34.15 18.94-65.8 45.35c-42.66 32.85-74.89 80.59-94.2 132.4zM323.18 350.7s-35.74 5.3-69.51-7.07c6.21-20.16 27 6.1 96.4-13.81 15.29-4.38 35.37-13 51-25.35a102.85 102.85 0 0 1 7.12 24.28c3.66-.66 14.25-.52 11.44 18.1-3.29 19.87-11.73 36-25.93 50.84A106.86 106.86 0 0 1 362.55 421a132.45 132.45 0 0 1-20.34 8.58c-53.51 17.48-108.3-1.74-126-43a66.33 66.33 0 0 1-3.55-9.74c-7.53-27.2-1.14-59.83 18.84-80.37 1.23-1.31 2.48-2.85 2.48-4.79a8.45 8.45 0 0 0-1.92-4.54c-7-10.13-31.19-27.4-26.33-60.83 3.5-24 24.49-40.91 44.07-39.91l5 .29c8.48.5 15.89 1.59 22.88 1.88 11.69.5 22.2-1.19 34.64-11.56 4.2-3.5 7.57-6.54 13.26-7.51a17.45 17.45 0 0 1 13.6 2.24c10 6.64 11.4 22.73 11.92 34.49.29 6.72 1.1 23 1.38 27.63.63 10.67 3.43 12.17 9.11 14 3.19 1.05 6.15 1.83 10.51 3.06 13.21 3.71 21 7.48 26 12.31a16.38 16.38 0 0 1 4.74 9.29c1.56 11.37-8.82 25.4-36.31 38.16-46.71 21.68-93.68 14.45-100.48 13.68-20.15-2.71-31.63 23.32-19.55 41.15 22.64 33.41 122.4 20 151.37-21.35.69-1 .12-1.59-.73-1-41.77 28.58-97.06 38.21-128.46 26-4.77-1.85-14.73-6.44-15.94-16.67 43.6 13.49 71 .74 71 .74s2.03-2.79-.56-2.53zm-68.47-5.7zm-83.4-187.5c16.74-19.35 37.36-36.18 55.83-45.63a.73.73 0 0 1 1 1c-1.46 2.66-4.29 8.34-5.19 12.65a.75.75 0 0 0 1.16.79c11.49-7.83 31.48-16.22 49-17.3a.77.77 0 0 1 .52 1.38 41.86 41.86 0 0 0-7.71 7.74.75.75 0 0 0 .59 1.19c12.31.09 29.66 4.4 41 10.74.76.43.22 1.91-.64 1.72-69.55-15.94-123.08 18.53-134.5 26.83a.76.76 0 0 1-1-1.12z\"]\n};\nvar faMandalorian = {\n prefix: 'fab',\n iconName: 'mandalorian',\n icon: [448, 512, [], \"f50f\", \"M232.27 511.89c-1-3.26-1.69-15.83-1.39-24.58.55-15.89 1-24.72 1.4-28.76.64-6.2 2.87-20.72 3.28-21.38.6-1 .4-27.87-.24-33.13-.31-2.58-.63-11.9-.69-20.73-.13-16.47-.53-20.12-2.73-24.76-1.1-2.32-1.23-3.84-1-11.43a92.38 92.38 0 0 0-.34-12.71c-2-13-3.46-27.7-3.25-33.9s.43-7.15 2.06-9.67c3.05-4.71 6.51-14 8.62-23.27 2.26-9.86 3.88-17.18 4.59-20.74a109.54 109.54 0 0 1 4.42-15.05c2.27-6.25 2.49-15.39.37-15.39-.3 0-1.38 1.22-2.41 2.71s-4.76 4.8-8.29 7.36c-8.37 6.08-11.7 9.39-12.66 12.58s-1 7.23-.16 7.76c.34.21 1.29 2.4 2.11 4.88a28.83 28.83 0 0 1 .72 15.36c-.39 1.77-1 5.47-1.46 8.23s-1 6.46-1.25 8.22a9.85 9.85 0 0 1-1.55 4.26c-1 1-1.14.91-2.05-.53a14.87 14.87 0 0 1-1.44-4.75c-.25-1.74-1.63-7.11-3.08-11.93-3.28-10.9-3.52-16.15-1-21a14.24 14.24 0 0 0 1.67-4.61c0-2.39-2.2-5.32-7.41-9.89-7-6.18-8.63-7.92-10.23-11.3-1.71-3.6-3.06-4.06-4.54-1.54-1.78 3-2.6 9.11-3 22l-.34 12.19 2 2.25c3.21 3.7 12.07 16.45 13.78 19.83 3.41 6.74 4.34 11.69 4.41 23.56s.95 22.75 2 24.71c.36.66.51 1.35.34 1.52s.41 2.09 1.29 4.27a38.14 38.14 0 0 1 2.06 9 91 91 0 0 0 1.71 10.37c2.23 9.56 2.77 14.08 2.39 20.14-.2 3.27-.53 11.07-.73 17.32-1.31 41.76-1.85 58-2 61.21-.12 2-.39 11.51-.6 21.07-.36 16.3-1.3 27.37-2.42 28.65-.64.73-8.07-4.91-12.52-9.49-3.75-3.87-4-4.79-2.83-9.95.7-3 2.26-18.29 3.33-32.62.36-4.78.81-10.5 1-12.71.83-9.37 1.66-20.35 2.61-34.78.56-8.46 1.33-16.44 1.72-17.73s.89-9.89 1.13-19.11l.43-16.77-2.26-4.3c-1.72-3.28-4.87-6.94-13.22-15.34-6-6.07-11.84-12.3-12.91-13.85l-1.95-2.81.75-10.9c1.09-15.71 1.1-48.57 0-59.06l-.89-8.7-3.28-4.52c-5.86-8.08-5.8-7.75-6.22-33.27-.1-6.07-.38-11.5-.63-12.06-.83-1.87-3.05-2.66-8.54-3.05-8.86-.62-11-1.9-23.85-14.55-6.15-6-12.34-12-13.75-13.19-2.81-2.42-2.79-2-.56-9.63l1.35-4.65-1.69-3a32.22 32.22 0 0 0-2.59-4.07c-1.33-1.51-5.5-10.89-6-13.49a4.24 4.24 0 0 1 .87-3.9c2.23-2.86 3.4-5.68 4.45-10.73 2.33-11.19 7.74-26.09 10.6-29.22 3.18-3.47 7.7-1 9.41 5 1.34 4.79 1.37 9.79.1 18.55a101.2 101.2 0 0 0-1 11.11c0 4 .19 4.69 2.25 7.39 3.33 4.37 7.73 7.41 15.2 10.52a18.67 18.67 0 0 1 4.72 2.85c11.17 10.72 18.62 16.18 22.95 16.85 5.18.8 8 4.54 10 13.39 1.31 5.65 4 11.14 5.46 11.14a9.38 9.38 0 0 0 3.33-1.39c2-1.22 2.25-1.73 2.25-4.18a132.88 132.88 0 0 0-2-17.84c-.37-1.66-.78-4.06-.93-5.35s-.61-3.85-1-5.69c-2.55-11.16-3.65-15.46-4.1-16-1.55-2-4.08-10.2-4.93-15.92-1.64-11.11-4-14.23-12.91-17.39A43.15 43.15 0 0 1 165.24 78c-1.15-1-4-3.22-6.35-5.06s-4.41-3.53-4.6-3.76a22.7 22.7 0 0 0-2.69-2c-6.24-4.22-8.84-7-11.26-12l-2.44-5-.22-13-.22-13 6.91-6.55c3.95-3.75 8.48-7.35 10.59-8.43 3.31-1.69 4.45-1.89 11.37-2 8.53-.19 10.12 0 11.66 1.56s1.36 6.4-.29 8.5a6.66 6.66 0 0 0-1.34 2.32c0 .58-2.61 4.91-5.42 9a30.39 30.39 0 0 0-2.37 6.82c20.44 13.39 21.55 3.77 14.07 29L194 66.92c3.11-8.66 6.47-17.26 8.61-26.22.29-7.63-12-4.19-15.4-8.68-2.33-5.93 3.13-14.18 6.06-19.2 1.6-2.34 6.62-4.7 8.82-4.15.88.22 4.16-.35 7.37-1.28a45.3 45.3 0 0 1 7.55-1.68 29.57 29.57 0 0 0 6-1.29c3.65-1.11 4.5-1.17 6.35-.4a29.54 29.54 0 0 0 5.82 1.36 18.18 18.18 0 0 1 6 1.91 22.67 22.67 0 0 0 5 2.17c2.51.68 3 .57 7.05-1.67l4.35-2.4L268.32 5c10.44-.4 10.81-.47 15.26-2.68L288.16 0l2.46 1.43c1.76 1 3.14 2.73 4.85 6 2.36 4.51 2.38 4.58 1.37 7.37-.88 2.44-.89 3.3-.1 6.39a35.76 35.76 0 0 0 2.1 5.91 13.55 13.55 0 0 1 1.31 4c.31 4.33 0 5.3-2.41 6.92-2.17 1.47-7 7.91-7 9.34a14.77 14.77 0 0 1-1.07 3c-5 11.51-6.76 13.56-14.26 17-9.2 4.2-12.3 5.19-16.21 5.19-3.1 0-4 .25-4.54 1.26a18.33 18.33 0 0 1-4.09 3.71 13.62 13.62 0 0 0-4.38 4.78 5.89 5.89 0 0 1-2.49 2.91 6.88 6.88 0 0 0-2.45 1.71 67.62 67.62 0 0 1-7 5.38c-3.33 2.34-6.87 5-7.87 6A7.27 7.27 0 0 1 224 100a5.76 5.76 0 0 0-2.13 1.65c-1.31 1.39-1.49 2.11-1.14 4.6a36.45 36.45 0 0 0 1.42 5.88c1.32 3.8 1.31 7.86 0 10.57s-.89 6.65 1.35 9.59c2 2.63 2.16 4.56.71 8.84a33.45 33.45 0 0 0-1.06 8.91c0 4.88.22 6.28 1.46 8.38s1.82 2.48 3.24 2.32c2-.23 2.3-1.05 4.71-12.12 2.18-10 3.71-11.92 13.76-17.08 2.94-1.51 7.46-4 10-5.44s6.79-3.69 9.37-4.91a40.09 40.09 0 0 0 15.22-11.67c7.11-8.79 10-16.22 12.85-33.3a18.37 18.37 0 0 1 2.86-7.73 20.39 20.39 0 0 0 2.89-7.31c1-5.3 2.85-9.08 5.58-11.51 4.7-4.18 6-1.09 4.59 10.87-.46 3.86-1.1 10.33-1.44 14.38l-.61 7.36 4.45 4.09 4.45 4.09.11 8.42c.06 4.63.47 9.53.92 10.89l.82 2.47-6.43 6.28c-8.54 8.33-12.88 13.93-16.76 21.61-1.77 3.49-3.74 7.11-4.38 8-2.18 3.11-6.46 13-8.76 20.26l-2.29 7.22-7 6.49c-3.83 3.57-8 7.25-9.17 8.17-3.05 2.32-4.26 5.15-4.26 10a14.62 14.62 0 0 0 1.59 7.26 42 42 0 0 1 2.09 4.83 9.28 9.28 0 0 0 1.57 2.89c1.4 1.59 1.92 16.12.83 23.22-.68 4.48-3.63 12-4.7 12-1.79 0-4.06 9.27-5.07 20.74-.18 2-.62 5.94-1 8.7s-1 10-1.35 16.05c-.77 12.22-.19 18.77 2 23.15 3.41 6.69.52 12.69-11 22.84l-4 3.49.07 5.19a40.81 40.81 0 0 0 1.14 8.87c4.61 16 4.73 16.92 4.38 37.13-.46 26.4-.26 40.27.63 44.15a61.31 61.31 0 0 1 1.08 7c.17 2 .66 5.33 1.08 7.36.47 2.26.78 11 .79 22.74v19.06l-1.81 2.63c-2.71 3.91-15.11 13.54-15.49 12.29zm29.53-45.11c-.18-.3-.33-6.87-.33-14.59 0-14.06-.89-27.54-2.26-34.45-.4-2-.81-9.7-.9-17.06-.15-11.93-1.4-24.37-2.64-26.38-.66-1.07-3-17.66-3-21.3 0-4.23 1-6 5.28-9.13s4.86-3.14 5.48-.72c.28 1.1 1.45 5.62 2.6 10 3.93 15.12 4.14 16.27 4.05 21.74-.1 5.78-.13 6.13-1.74 17.73-1 7.07-1.17 12.39-1 28.43.17 19.4-.64 35.73-2 41.27-.71 2.78-2.8 5.48-3.43 4.43zm-71-37.58a101 101 0 0 1-1.73-10.79 100.5 100.5 0 0 0-1.73-10.79 37.53 37.53 0 0 1-1-6.49c-.31-3.19-.91-7.46-1.33-9.48-1-4.79-3.35-19.35-3.42-21.07 0-.74-.34-4.05-.7-7.36-.67-6.21-.84-27.67-.22-28.29 1-1 6.63 2.76 11.33 7.43l5.28 5.25-.45 6.47c-.25 3.56-.6 10.23-.78 14.83s-.49 9.87-.67 11.71-.61 9.36-.94 16.72c-.79 17.41-1.94 31.29-2.65 32a.62.62 0 0 1-1-.14zm-87.18-266.59c21.07 12.79 17.84 14.15 28.49 17.66 13 4.29 18.87 7.13 23.15 16.87C111.6 233.28 86.25 255 78.55 268c-31 52-6 101.59 62.75 87.21-14.18 29.23-78 28.63-98.68-4.9-24.68-39.95-22.09-118.3 61-187.66zm210.79 179c56.66 6.88 82.32-37.74 46.54-89.23 0 0-26.87-29.34-64.28-68 3-15.45 9.49-32.12 30.57-53.82 89.2 63.51 92 141.61 92.46 149.36 4.3 70.64-78.7 91.18-105.29 61.71z\"]\n};\nvar faMarkdown = {\n prefix: 'fab',\n iconName: 'markdown',\n icon: [640, 512, [], \"f60f\", \"M593.8 59.1H46.2C20.7 59.1 0 79.8 0 105.2v301.5c0 25.5 20.7 46.2 46.2 46.2h547.7c25.5 0 46.2-20.7 46.1-46.1V105.2c0-25.4-20.7-46.1-46.2-46.1zM338.5 360.6H277v-120l-61.5 76.9-61.5-76.9v120H92.3V151.4h61.5l61.5 76.9 61.5-76.9h61.5v209.2zm135.3 3.1L381.5 256H443V151.4h61.5V256H566z\"]\n};\nvar faMastodon = {\n prefix: 'fab',\n iconName: 'mastodon',\n icon: [448, 512, [], \"f4f6\", \"M433 179.11c0-97.2-63.71-125.7-63.71-125.7-62.52-28.7-228.56-28.4-290.48 0 0 0-63.72 28.5-63.72 125.7 0 115.7-6.6 259.4 105.63 289.1 40.51 10.7 75.32 13 103.33 11.4 50.81-2.8 79.32-18.1 79.32-18.1l-1.7-36.9s-36.31 11.4-77.12 10.1c-40.41-1.4-83-4.4-89.63-54a102.54 102.54 0 0 1-.9-13.9c85.63 20.9 158.65 9.1 178.75 6.7 56.12-6.7 105-41.3 111.23-72.9 9.8-49.8 9-121.5 9-121.5zm-75.12 125.2h-46.63v-114.2c0-49.7-64-51.6-64 6.9v62.5h-46.33V197c0-58.5-64-56.6-64-6.9v114.2H90.19c0-122.1-5.2-147.9 18.41-175 25.9-28.9 79.82-30.8 103.83 6.1l11.6 19.5 11.6-19.5c24.11-37.1 78.12-34.8 103.83-6.1 23.71 27.3 18.4 53 18.4 175z\"]\n};\nvar faMaxcdn = {\n prefix: 'fab',\n iconName: 'maxcdn',\n icon: [512, 512, [], \"f136\", \"M461.1 442.7h-97.4L415.6 200c2.3-10.2.9-19.5-4.4-25.7-5-6.1-13.7-9.6-24.2-9.6h-49.3l-59.5 278h-97.4l59.5-278h-83.4l-59.5 278H0l59.5-278-44.6-95.4H387c39.4 0 75.3 16.3 98.3 44.9 23.3 28.6 31.8 67.4 23.6 105.9l-47.8 222.6z\"]\n};\nvar faMdb = {\n prefix: 'fab',\n iconName: 'mdb',\n icon: [576, 512, [], \"f8ca\", \"M17.37 160.41L7 352h43.91l5.59-79.83L84.43 352h44.71l25.54-77.43 4.79 77.43H205l-12.79-191.59H146.7L106 277.74 63.67 160.41zm281 0h-47.9V352h47.9s95 .8 94.2-95.79c-.78-94.21-94.18-95.78-94.18-95.78zm-1.2 146.46V204.78s46 4.27 46.8 50.57-46.78 51.54-46.78 51.54zm238.29-74.24a56.16 56.16 0 0 0 8-38.31c-5.34-35.76-55.08-34.32-55.08-34.32h-51.9v191.58H482s87 4.79 87-63.85c0-43.14-33.52-55.08-33.52-55.08zm-51.9-31.94s13.57-1.59 16 9.59c1.43 6.66-4 12-4 12h-12v-21.57zm-.1 109.46l.1-24.92V267h.08s41.58-4.73 41.19 22.43c-.33 25.65-41.35 20.74-41.35 20.74z\"]\n};\nvar faMedapps = {\n prefix: 'fab',\n iconName: 'medapps',\n icon: [320, 512, [], \"f3c6\", \"M118.3 238.4c3.5-12.5 6.9-33.6 13.2-33.6 8.3 1.8 9.6 23.4 18.6 36.6 4.6-23.5 5.3-85.1 14.1-86.7 9-.7 19.7 66.5 22 77.5 9.9 4.1 48.9 6.6 48.9 6.6 1.9 7.3-24 7.6-40 7.8-4.6 14.8-5.4 27.7-11.4 28-4.7.2-8.2-28.8-17.5-49.6l-9.4 65.5c-4.4 13-15.5-22.5-21.9-39.3-3.3-.1-62.4-1.6-47.6-7.8l31-5zM228 448c21.2 0 21.2-32 0-32H92c-21.2 0-21.2 32 0 32h136zm-24 64c21.2 0 21.2-32 0-32h-88c-21.2 0-21.2 32 0 32h88zm34.2-141.5c3.2-18.9 5.2-36.4 11.9-48.8 7.9-14.7 16.1-28.1 24-41 24.6-40.4 45.9-75.2 45.9-125.5C320 69.6 248.2 0 160 0S0 69.6 0 155.2c0 50.2 21.3 85.1 45.9 125.5 7.9 12.9 16 26.3 24 41 6.7 12.5 8.7 29.8 11.9 48.9 3.5 21 36.1 15.7 32.6-5.1-3.6-21.7-5.6-40.7-15.3-58.6C66.5 246.5 33 211.3 33 155.2 33 87.3 90 32 160 32s127 55.3 127 123.2c0 56.1-33.5 91.3-66.1 151.6-9.7 18-11.7 37.4-15.3 58.6-3.4 20.6 29 26.4 32.6 5.1z\"]\n};\nvar faMedium = {\n prefix: 'fab',\n iconName: 'medium',\n icon: [448, 512, [], \"f23a\", \"M0 32v448h448V32H0zm372.2 106.1l-24 23c-2.1 1.6-3.1 4.2-2.7 6.7v169.3c-.4 2.6.6 5.2 2.7 6.7l23.5 23v5.1h-118V367l24.3-23.6c2.4-2.4 2.4-3.1 2.4-6.7V199.8l-67.6 171.6h-9.1L125 199.8v115c-.7 4.8 1 9.7 4.4 13.2l31.6 38.3v5.1H71.2v-5.1l31.6-38.3c3.4-3.5 4.9-8.4 4.1-13.2v-133c.4-3.7-1-7.3-3.8-9.8L75 138.1V133h87.3l67.4 148L289 133.1h83.2v5z\"]\n};\nvar faMediumM = {\n prefix: 'fab',\n iconName: 'medium-m',\n icon: [512, 512, [], \"f3c7\", \"M71.5 142.3c.6-5.9-1.7-11.8-6.1-15.8L20.3 72.1V64h140.2l108.4 237.7L364.2 64h133.7v8.1l-38.6 37c-3.3 2.5-5 6.7-4.3 10.8v272c-.7 4.1 1 8.3 4.3 10.8l37.7 37v8.1H307.3v-8.1l39.1-37.9c3.8-3.8 3.8-5 3.8-10.8V171.2L241.5 447.1h-14.7L100.4 171.2v184.9c-1.1 7.8 1.5 15.6 7 21.2l50.8 61.6v8.1h-144v-8L65 377.3c5.4-5.6 7.9-13.5 6.5-21.2V142.3z\"]\n};\nvar faMedrt = {\n prefix: 'fab',\n iconName: 'medrt',\n icon: [544, 512, [], \"f3c8\", \"M113.7 256c0 121.8 83.9 222.8 193.5 241.1-18.7 4.5-38.2 6.9-58.2 6.9C111.4 504 0 393 0 256S111.4 8 248.9 8c20.1 0 39.6 2.4 58.2 6.9C197.5 33.2 113.7 134.2 113.7 256m297.4 100.3c-77.7 55.4-179.6 47.5-240.4-14.6 5.5 14.1 12.7 27.7 21.7 40.5 61.6 88.2 182.4 109.3 269.7 47 87.3-62.3 108.1-184.3 46.5-272.6-9-12.9-19.3-24.3-30.5-34.2 37.4 78.8 10.7 178.5-67 233.9m-218.8-244c-1.4 1-2.7 2.1-4 3.1 64.3-17.8 135.9 4 178.9 60.5 35.7 47 42.9 106.6 24.4 158 56.7-56.2 67.6-142.1 22.3-201.8-50-65.5-149.1-74.4-221.6-19.8M296 224c-4.4 0-8-3.6-8-8v-40c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v40c0 4.4-3.6 8-8 8h-40c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h40c4.4 0 8 3.6 8 8v40c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-40c0-4.4 3.6-8 8-8h40c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8h-40z\"]\n};\nvar faMeetup = {\n prefix: 'fab',\n iconName: 'meetup',\n icon: [512, 512, [], \"f2e0\", \"M99 414.3c1.1 5.7-2.3 11.1-8 12.3-5.4 1.1-10.9-2.3-12-8-1.1-5.4 2.3-11.1 7.7-12.3 5.4-1.2 11.1 2.3 12.3 8zm143.1 71.4c-6.3 4.6-8 13.4-3.7 20 4.6 6.6 13.4 8.3 20 3.7 6.3-4.6 8-13.4 3.4-20-4.2-6.5-13.1-8.3-19.7-3.7zm-86-462.3c6.3-1.4 10.3-7.7 8.9-14-1.1-6.6-7.4-10.6-13.7-9.1-6.3 1.4-10.3 7.7-9.1 14 1.4 6.6 7.6 10.6 13.9 9.1zM34.4 226.3c-10-6.9-23.7-4.3-30.6 6-6.9 10-4.3 24 5.7 30.9 10 7.1 23.7 4.6 30.6-5.7 6.9-10.4 4.3-24.1-5.7-31.2zm272-170.9c10.6-6.3 13.7-20 7.7-30.3-6.3-10.6-19.7-14-30-7.7s-13.7 20-7.4 30.6c6 10.3 19.4 13.7 29.7 7.4zm-191.1 58c7.7-5.4 9.4-16 4.3-23.7s-15.7-9.4-23.1-4.3c-7.7 5.4-9.4 16-4.3 23.7 5.1 7.8 15.6 9.5 23.1 4.3zm372.3 156c-7.4 1.7-12.3 9.1-10.6 16.9 1.4 7.4 8.9 12.3 16.3 10.6 7.4-1.4 12.3-8.9 10.6-16.6-1.5-7.4-8.9-12.3-16.3-10.9zm39.7-56.8c-1.1-5.7-6.6-9.1-12-8-5.7 1.1-9.1 6.9-8 12.6 1.1 5.4 6.6 9.1 12.3 8 5.4-1.5 9.1-6.9 7.7-12.6zM447 138.9c-8.6 6-10.6 17.7-4.9 26.3 5.7 8.6 17.4 10.6 26 4.9 8.3-6 10.3-17.7 4.6-26.3-5.7-8.7-17.4-10.9-25.7-4.9zm-6.3 139.4c26.3 43.1 15.1 100-26.3 129.1-17.4 12.3-37.1 17.7-56.9 17.1-12 47.1-69.4 64.6-105.1 32.6-1.1.9-2.6 1.7-3.7 2.9-39.1 27.1-92.3 17.4-119.4-22.3-9.7-14.3-14.6-30.6-15.1-46.9-65.4-10.9-90-94-41.1-139.7-28.3-46.9.6-107.4 53.4-114.9C151.6 70 234.1 38.6 290.1 82c67.4-22.3 136.3 29.4 130.9 101.1 41.1 12.6 52.8 66.9 19.7 95.2zm-70 74.3c-3.1-20.6-40.9-4.6-43.1-27.1-3.1-32 43.7-101.1 40-128-3.4-24-19.4-29.1-33.4-29.4-13.4-.3-16.9 2-21.4 4.6-2.9 1.7-6.6 4.9-11.7-.3-6.3-6-11.1-11.7-19.4-12.9-12.3-2-17.7 2-26.6 9.7-3.4 2.9-12 12.9-20 9.1-3.4-1.7-15.4-7.7-24-11.4-16.3-7.1-40 4.6-48.6 20-12.9 22.9-38 113.1-41.7 125.1-8.6 26.6 10.9 48.6 36.9 47.1 11.1-.6 18.3-4.6 25.4-17.4 4-7.4 41.7-107.7 44.6-112.6 2-3.4 8.9-8 14.6-5.1 5.7 3.1 6.9 9.4 6 15.1-1.1 9.7-28 70.9-28.9 77.7-3.4 22.9 26.9 26.6 38.6 4 3.7-7.1 45.7-92.6 49.4-98.3 4.3-6.3 7.4-8.3 11.7-8 3.1 0 8.3.9 7.1 10.9-1.4 9.4-35.1 72.3-38.9 87.7-4.6 20.6 6.6 41.4 24.9 50.6 11.4 5.7 62.5 15.7 58.5-11.1zm5.7 92.3c-10.3 7.4-12.9 22-5.7 32.6 7.1 10.6 21.4 13.1 32 6 10.6-7.4 13.1-22 6-32.6-7.4-10.6-21.7-13.5-32.3-6z\"]\n};\nvar faMegaport = {\n prefix: 'fab',\n iconName: 'megaport',\n icon: [496, 512, [], \"f5a3\", \"M214.5 209.6v66.2l33.5 33.5 33.3-33.3v-66.4l-33.4-33.4zM248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm145.1 414.4L367 441.6l-26-19.2v-65.5l-33.4-33.4-33.4 33.4v65.5L248 441.6l-26.1-19.2v-65.5l-33.4-33.4-33.5 33.4v65.5l-26.1 19.2-26.1-19.2v-87l59.5-59.5V188l59.5-59.5V52.9l26.1-19.2L274 52.9v75.6l59.5 59.5v87.6l59.7 59.7v87.1z\"]\n};\nvar faMendeley = {\n prefix: 'fab',\n iconName: 'mendeley',\n icon: [640, 512, [], \"f7b3\", \"M624.6 325.2c-12.3-12.4-29.7-19.2-48.4-17.2-43.3-1-49.7-34.9-37.5-98.8 22.8-57.5-14.9-131.5-87.4-130.8-77.4.7-81.7 82-130.9 82-48.1 0-54-81.3-130.9-82-72.9-.8-110.1 73.3-87.4 130.8 12.2 63.9 5.8 97.8-37.5 98.8-21.2-2.3-37 6.5-53 22.5-19.9 19.7-19.3 94.8 42.6 102.6 47.1 5.9 81.6-42.9 61.2-87.8-47.3-103.7 185.9-106.1 146.5-8.2-.1.1-.2.2-.3.4-26.8 42.8 6.8 97.4 58.8 95.2 52.1 2.1 85.4-52.6 58.8-95.2-.1-.2-.2-.3-.3-.4-39.4-97.9 193.8-95.5 146.5 8.2-4.6 10-6.7 21.3-5.7 33 4.9 53.4 68.7 74.1 104.9 35.2 17.8-14.8 23.1-65.6 0-88.3zm-303.9-19.1h-.6c-43.4 0-62.8-37.5-62.8-62.8 0-34.7 28.2-62.8 62.8-62.8h.6c34.7 0 62.8 28.1 62.8 62.8 0 25-19.2 62.8-62.8 62.8z\"]\n};\nvar faMicroblog = {\n prefix: 'fab',\n iconName: 'microblog',\n icon: [448, 512, [], \"f91a\", \"M399.36,362.23c29.49-34.69,47.1-78.34,47.1-125.79C446.46,123.49,346.86,32,224,32S1.54,123.49,1.54,236.44,101.14,440.87,224,440.87a239.28,239.28,0,0,0,79.44-13.44,7.18,7.18,0,0,1,8.12,2.56c18.58,25.09,47.61,42.74,79.89,49.92a4.42,4.42,0,0,0,5.22-3.43,4.37,4.37,0,0,0-.85-3.62,87,87,0,0,1,3.69-110.69ZM329.52,212.4l-57.3,43.49L293,324.75a6.5,6.5,0,0,1-9.94,7.22L224,290.92,164.94,332a6.51,6.51,0,0,1-9.95-7.22l20.79-68.86-57.3-43.49a6.5,6.5,0,0,1,3.8-11.68l71.88-1.51,23.66-67.92a6.5,6.5,0,0,1,12.28,0l23.66,67.92,71.88,1.51a6.5,6.5,0,0,1,3.88,11.68Z\"]\n};\nvar faMicrosoft = {\n prefix: 'fab',\n iconName: 'microsoft',\n icon: [448, 512, [], \"f3ca\", \"M0 32h214.6v214.6H0V32zm233.4 0H448v214.6H233.4V32zM0 265.4h214.6V480H0V265.4zm233.4 0H448V480H233.4V265.4z\"]\n};\nvar faMix = {\n prefix: 'fab',\n iconName: 'mix',\n icon: [448, 512, [], \"f3cb\", \"M0 64v348.9c0 56.2 88 58.1 88 0V174.3c7.9-52.9 88-50.4 88 6.5v175.3c0 57.9 96 58 96 0V240c5.3-54.7 88-52.5 88 4.3v23.8c0 59.9 88 56.6 88 0V64H0z\"]\n};\nvar faMixcloud = {\n prefix: 'fab',\n iconName: 'mixcloud',\n icon: [640, 512, [], \"f289\", \"M424.43 219.729C416.124 134.727 344.135 68 256.919 68c-72.266 0-136.224 46.516-159.205 114.074-54.545 8.029-96.63 54.822-96.63 111.582 0 62.298 50.668 112.966 113.243 112.966h289.614c52.329 0 94.969-42.362 94.969-94.693 0-45.131-32.118-83.063-74.48-92.2zm-20.489 144.53H114.327c-39.04 0-70.881-31.564-70.881-70.604s31.841-70.604 70.881-70.604c18.827 0 36.548 7.475 49.838 20.766 19.963 19.963 50.133-10.227 30.18-30.18-14.675-14.398-32.672-24.365-52.053-29.349 19.935-44.3 64.79-73.926 114.628-73.926 69.496 0 125.979 56.483 125.979 125.702 0 13.568-2.215 26.857-6.369 39.594-8.943 27.517 32.133 38.939 40.147 13.29 2.769-8.306 4.984-16.889 6.369-25.472 19.381 7.476 33.502 26.303 33.502 48.453 0 28.795-23.535 52.33-52.607 52.33zm235.069-52.33c0 44.024-12.737 86.386-37.102 122.657-4.153 6.092-10.798 9.414-17.72 9.414-16.317 0-27.127-18.826-17.443-32.949 19.381-29.349 29.903-63.682 29.903-99.122s-10.521-69.773-29.903-98.845c-15.655-22.831 19.361-47.24 35.163-23.534 24.366 35.993 37.102 78.356 37.102 122.379zm-70.88 0c0 31.565-9.137 62.021-26.857 88.325-4.153 6.091-10.798 9.136-17.72 9.136-17.201 0-27.022-18.979-17.443-32.948 13.013-19.104 19.658-41.255 19.658-64.513 0-22.981-6.645-45.408-19.658-64.512-15.761-22.986 19.008-47.095 35.163-23.535 17.719 26.026 26.857 56.483 26.857 88.047z\"]\n};\nvar faMizuni = {\n prefix: 'fab',\n iconName: 'mizuni',\n icon: [496, 512, [], \"f3cc\", \"M248 8C111 8 0 119.1 0 256c0 137 111 248 248 248s248-111 248-248C496 119.1 385 8 248 8zm-80 351.9c-31.4 10.6-58.8 27.3-80 48.2V136c0-22.1 17.9-40 40-40s40 17.9 40 40v223.9zm120-9.9c-12.9-2-26.2-3.1-39.8-3.1-13.8 0-27.2 1.1-40.2 3.1V136c0-22.1 17.9-40 40-40s40 17.9 40 40v214zm120 57.7c-21.2-20.8-48.6-37.4-80-48V136c0-22.1 17.9-40 40-40s40 17.9 40 40v271.7z\"]\n};\nvar faModx = {\n prefix: 'fab',\n iconName: 'modx',\n icon: [448, 512, [], \"f285\", \"M356 241.8l36.7 23.7V480l-133-83.8L356 241.8zM440 75H226.3l-23 37.8 153.5 96.5L440 75zm-89 142.8L55.2 32v214.5l46 29L351 217.8zM97 294.2L8 437h213.7l125-200.5L97 294.2z\"]\n};\nvar faMonero = {\n prefix: 'fab',\n iconName: 'monero',\n icon: [496, 512, [], \"f3d0\", \"M352 384h108.4C417 455.9 338.1 504 248 504S79 455.9 35.6 384H144V256.2L248 361l104-105v128zM88 336V128l159.4 159.4L408 128v208h74.8c8.5-25.1 13.2-52 13.2-80C496 119 385 8 248 8S0 119 0 256c0 28 4.6 54.9 13.2 80H88z\"]\n};\nvar faNapster = {\n prefix: 'fab',\n iconName: 'napster',\n icon: [496, 512, [], \"f3d2\", \"M298.3 373.6c-14.2 13.6-31.3 24.1-50.4 30.5-19-6.4-36.2-16.9-50.3-30.5h100.7zm44-199.6c20-16.9 43.6-29.2 69.6-36.2V299c0 219.4-328 217.6-328 .3V137.7c25.9 6.9 49.6 19.6 69.5 36.4 56.8-40 132.5-39.9 188.9-.1zm-208.8-58.5c64.4-60 164.3-60.1 228.9-.2-7.1 3.5-13.9 7.3-20.6 11.5-58.7-30.5-129.2-30.4-187.9.1-6.3-4-13.9-8.2-20.4-11.4zM43.8 93.2v69.3c-58.4 36.5-58.4 121.1.1 158.3 26.4 245.1 381.7 240.3 407.6 1.5l.3-1.7c58.7-36.3 58.9-121.7.2-158.2V93.2c-17.3.5-34 3-50.1 7.4-82-91.5-225.5-91.5-307.5.1-16.3-4.4-33.1-7-50.6-7.5zM259.2 352s36-.3 61.3-1.5c10.2-.5 21.1-4 25.5-6.5 26.3-15.1 25.4-39.2 26.2-47.4-79.5-.6-99.9-3.9-113 55.4zm-135.5-55.3c.8 8.2-.1 32.3 26.2 47.4 4.4 2.5 15.2 6 25.5 6.5 25.3 1.1 61.3 1.5 61.3 1.5-13.2-59.4-33.7-56.1-113-55.4zm169.1 123.4c-3.2-5.3-6.9-7.3-6.9-7.3-24.8 7.3-52.2 6.9-75.9 0 0 0-2.9 1.5-6.4 6.6-2.8 4.1-3.7 9.6-3.7 9.6 29.1 17.6 67.1 17.6 96.2 0-.1-.1-.3-4-3.3-8.9z\"]\n};\nvar faNeos = {\n prefix: 'fab',\n iconName: 'neos',\n icon: [512, 512, [], \"f612\", \"M415.44 512h-95.11L212.12 357.46v91.1L125.69 512H28V29.82L68.47 0h108.05l123.74 176.13V63.45L386.69 0h97.69v461.5zM38.77 35.27V496l72-52.88V194l215.5 307.64h84.79l52.35-38.17h-78.27L69 13zm82.54 466.61l80-58.78v-101l-79.76-114.4v220.94L49 501.89h72.34zM80.63 10.77l310.6 442.57h82.37V10.77h-79.75v317.56L170.91 10.77zM311 191.65l72 102.81V15.93l-72 53v122.72z\"]\n};\nvar faNimblr = {\n prefix: 'fab',\n iconName: 'nimblr',\n icon: [384, 512, [], \"f5a8\", \"M246.6 299.29c15.57 0 27.15 11.46 27.15 27s-11.62 27-27.15 27c-15.7 0-27.15-11.57-27.15-27s11.55-27 27.15-27zM113 326.25c0-15.61 11.68-27 27.15-27s27.15 11.46 27.15 27-11.47 27-27.15 27c-15.44 0-27.15-11.31-27.15-27M191.76 159C157 159 89.45 178.77 59.25 227L14 0v335.48C14 433.13 93.61 512 191.76 512s177.76-78.95 177.76-176.52S290.13 159 191.76 159zm0 308.12c-73.27 0-132.51-58.9-132.51-131.59s59.24-131.59 132.51-131.59 132.51 58.86 132.51 131.54S265 467.07 191.76 467.07z\"]\n};\nvar faNode = {\n prefix: 'fab',\n iconName: 'node',\n icon: [640, 512, [], \"f419\", \"M316.3 452c-2.1 0-4.2-.6-6.1-1.6L291 439c-2.9-1.6-1.5-2.2-.5-2.5 3.8-1.3 4.6-1.6 8.7-4 .4-.2 1-.1 1.4.1l14.8 8.8c.5.3 1.3.3 1.8 0L375 408c.5-.3.9-.9.9-1.6v-66.7c0-.7-.3-1.3-.9-1.6l-57.8-33.3c-.5-.3-1.2-.3-1.8 0l-57.8 33.3c-.6.3-.9 1-.9 1.6v66.7c0 .6.4 1.2.9 1.5l15.8 9.1c8.6 4.3 13.9-.8 13.9-5.8v-65.9c0-.9.7-1.7 1.7-1.7h7.3c.9 0 1.7.7 1.7 1.7v65.9c0 11.5-6.2 18-17.1 18-3.3 0-6 0-13.3-3.6l-15.2-8.7c-3.7-2.2-6.1-6.2-6.1-10.5v-66.7c0-4.3 2.3-8.4 6.1-10.5l57.8-33.4c3.7-2.1 8.5-2.1 12.1 0l57.8 33.4c3.7 2.2 6.1 6.2 6.1 10.5v66.7c0 4.3-2.3 8.4-6.1 10.5l-57.8 33.4c-1.7 1.1-3.8 1.7-6 1.7zm46.7-65.8c0-12.5-8.4-15.8-26.2-18.2-18-2.4-19.8-3.6-19.8-7.8 0-3.5 1.5-8.1 14.8-8.1 11.9 0 16.3 2.6 18.1 10.6.2.8.8 1.3 1.6 1.3h7.5c.5 0 .9-.2 1.2-.5.3-.4.5-.8.4-1.3-1.2-13.8-10.3-20.2-28.8-20.2-16.5 0-26.3 7-26.3 18.6 0 12.7 9.8 16.1 25.6 17.7 18.9 1.9 20.4 4.6 20.4 8.3 0 6.5-5.2 9.2-17.4 9.2-15.3 0-18.7-3.8-19.8-11.4-.1-.8-.8-1.4-1.7-1.4h-7.5c-.9 0-1.7.7-1.7 1.7 0 9.7 5.3 21.3 30.6 21.3 18.5 0 29-7.2 29-19.8zm54.5-50.1c0 6.1-5 11.1-11.1 11.1s-11.1-5-11.1-11.1c0-6.3 5.2-11.1 11.1-11.1 6-.1 11.1 4.8 11.1 11.1zm-1.8 0c0-5.2-4.2-9.3-9.4-9.3-5.1 0-9.3 4.1-9.3 9.3 0 5.2 4.2 9.4 9.3 9.4 5.2-.1 9.4-4.3 9.4-9.4zm-4.5 6.2h-2.6c-.1-.6-.5-3.8-.5-3.9-.2-.7-.4-1.1-1.3-1.1h-2.2v5h-2.4v-12.5h4.3c1.5 0 4.4 0 4.4 3.3 0 2.3-1.5 2.8-2.4 3.1 1.7.1 1.8 1.2 2.1 2.8.1 1 .3 2.7.6 3.3zm-2.8-8.8c0-1.7-1.2-1.7-1.8-1.7h-2v3.5h1.9c1.6 0 1.9-1.1 1.9-1.8zM137.3 191c0-2.7-1.4-5.1-3.7-6.4l-61.3-35.3c-1-.6-2.2-.9-3.4-1h-.6c-1.2 0-2.3.4-3.4 1L3.7 184.6C1.4 185.9 0 188.4 0 191l.1 95c0 1.3.7 2.5 1.8 3.2 1.1.7 2.5.7 3.7 0L42 268.3c2.3-1.4 3.7-3.8 3.7-6.4v-44.4c0-2.6 1.4-5.1 3.7-6.4l15.5-8.9c1.2-.7 2.4-1 3.7-1 1.3 0 2.6.3 3.7 1l15.5 8.9c2.3 1.3 3.7 3.8 3.7 6.4v44.4c0 2.6 1.4 5.1 3.7 6.4l36.4 20.9c1.1.7 2.6.7 3.7 0 1.1-.6 1.8-1.9 1.8-3.2l.2-95zM472.5 87.3v176.4c0 2.6-1.4 5.1-3.7 6.4l-61.3 35.4c-2.3 1.3-5.1 1.3-7.4 0l-61.3-35.4c-2.3-1.3-3.7-3.8-3.7-6.4v-70.8c0-2.6 1.4-5.1 3.7-6.4l61.3-35.4c2.3-1.3 5.1-1.3 7.4 0l15.3 8.8c1.7 1 3.9-.3 3.9-2.2v-94c0-2.8 3-4.6 5.5-3.2l36.5 20.4c2.3 1.2 3.8 3.7 3.8 6.4zm-46 128.9c0-.7-.4-1.3-.9-1.6l-21-12.2c-.6-.3-1.3-.3-1.9 0l-21 12.2c-.6.3-.9.9-.9 1.6v24.3c0 .7.4 1.3.9 1.6l21 12.1c.6.3 1.3.3 1.8 0l21-12.1c.6-.3.9-.9.9-1.6v-24.3zm209.8-.7c2.3-1.3 3.7-3.8 3.7-6.4V192c0-2.6-1.4-5.1-3.7-6.4l-60.9-35.4c-2.3-1.3-5.1-1.3-7.4 0l-61.3 35.4c-2.3 1.3-3.7 3.8-3.7 6.4v70.8c0 2.7 1.4 5.1 3.7 6.4l60.9 34.7c2.2 1.3 5 1.3 7.3 0l36.8-20.5c2.5-1.4 2.5-5 0-6.4L550 241.6c-1.2-.7-1.9-1.9-1.9-3.2v-22.2c0-1.3.7-2.5 1.9-3.2l19.2-11.1c1.1-.7 2.6-.7 3.7 0l19.2 11.1c1.1.7 1.9 1.9 1.9 3.2v17.4c0 2.8 3.1 4.6 5.6 3.2l36.7-21.3zM559 219c-.4.3-.7.7-.7 1.2v13.6c0 .5.3 1 .7 1.2l11.8 6.8c.4.3 1 .3 1.4 0L584 235c.4-.3.7-.7.7-1.2v-13.6c0-.5-.3-1-.7-1.2l-11.8-6.8c-.4-.3-1-.3-1.4 0L559 219zm-254.2 43.5v-70.4c0-2.6-1.6-5.1-3.9-6.4l-61.1-35.2c-2.1-1.2-5-1.4-7.4 0l-61.1 35.2c-2.3 1.3-3.9 3.7-3.9 6.4v70.4c0 2.8 1.9 5.2 4 6.4l61.2 35.2c2.4 1.4 5.2 1.3 7.4 0l61-35.2c1.8-1 3.1-2.7 3.6-4.7.1-.5.2-1.1.2-1.7zm-74.3-124.9l-.8.5h1.1l-.3-.5zm76.2 130.2l-.4-.7v.9l.4-.2z\"]\n};\nvar faNodeJs = {\n prefix: 'fab',\n iconName: 'node-js',\n icon: [448, 512, [], \"f3d3\", \"M224 508c-6.7 0-13.5-1.8-19.4-5.2l-61.7-36.5c-9.2-5.2-4.7-7-1.7-8 12.3-4.3 14.8-5.2 27.9-12.7 1.4-.8 3.2-.5 4.6.4l47.4 28.1c1.7 1 4.1 1 5.7 0l184.7-106.6c1.7-1 2.8-3 2.8-5V149.3c0-2.1-1.1-4-2.9-5.1L226.8 37.7c-1.7-1-4-1-5.7 0L36.6 144.3c-1.8 1-2.9 3-2.9 5.1v213.1c0 2 1.1 4 2.9 4.9l50.6 29.2c27.5 13.7 44.3-2.4 44.3-18.7V167.5c0-3 2.4-5.3 5.4-5.3h23.4c2.9 0 5.4 2.3 5.4 5.3V378c0 36.6-20 57.6-54.7 57.6-10.7 0-19.1 0-42.5-11.6l-48.4-27.9C8.1 389.2.7 376.3.7 362.4V149.3c0-13.8 7.4-26.8 19.4-33.7L204.6 9c11.7-6.6 27.2-6.6 38.8 0l184.7 106.7c12 6.9 19.4 19.8 19.4 33.7v213.1c0 13.8-7.4 26.7-19.4 33.7L243.4 502.8c-5.9 3.4-12.6 5.2-19.4 5.2zm149.1-210.1c0-39.9-27-50.5-83.7-58-57.4-7.6-63.2-11.5-63.2-24.9 0-11.1 4.9-25.9 47.4-25.9 37.9 0 51.9 8.2 57.7 33.8.5 2.4 2.7 4.2 5.2 4.2h24c1.5 0 2.9-.6 3.9-1.7s1.5-2.6 1.4-4.1c-3.7-44.1-33-64.6-92.2-64.6-52.7 0-84.1 22.2-84.1 59.5 0 40.4 31.3 51.6 81.8 56.6 60.5 5.9 65.2 14.8 65.2 26.7 0 20.6-16.6 29.4-55.5 29.4-48.9 0-59.6-12.3-63.2-36.6-.4-2.6-2.6-4.5-5.3-4.5h-23.9c-3 0-5.3 2.4-5.3 5.3 0 31.1 16.9 68.2 97.8 68.2 58.4-.1 92-23.2 92-63.4z\"]\n};\nvar faNpm = {\n prefix: 'fab',\n iconName: 'npm',\n icon: [576, 512, [], \"f3d4\", \"M288 288h-32v-64h32v64zm288-128v192H288v32H160v-32H0V160h576zm-416 32H32v128h64v-96h32v96h32V192zm160 0H192v160h64v-32h64V192zm224 0H352v128h64v-96h32v96h32v-96h32v96h32V192z\"]\n};\nvar faNs8 = {\n prefix: 'fab',\n iconName: 'ns8',\n icon: [640, 512, [], \"f3d5\", \"M187.1 159.9l-34.2 113.7-54.5-113.7H49L0 320h44.9L76 213.5 126.6 320h56.9L232 159.9h-44.9zm452.5-.9c-2.9-18-23.9-28.1-42.1-31.3-44.6-7.8-101.9 16.3-88.5 58.8v.1c-43.8 8.7-74.3 26.8-94.2 48.2-3-9.8-13.6-16.6-34-16.6h-87.6c-9.3 0-12.9-2.3-11.5-7.4 1.6-5.5 1.9-6.8 3.7-12.2 2.1-6.4 7.8-7.1 13.3-7.1h133.5l9.7-31.5c-139.7 0-144.5-.5-160.1 1.2-12.3 1.3-23.5 4.8-30.6 15-6.8 9.9-14.4 35.6-17.6 47.1-5.4 19.4-.6 28.6 32.8 28.6h87.3c7.8 0 8.8 2.7 7.7 6.6-1.1 4.4-2.8 10-4.5 14.6-1.6 4.2-4.7 7.4-13.8 7.4H216.3L204.7 320c139.9 0 145.3-.6 160.9-2.3 6.6-.7 13-2.1 18.5-4.9.2 3.7.5 7.3 1.2 10.8 5.4 30.5 27.4 52.3 56.8 59.5 48.6 11.9 108.7-16.8 135.1-68 18.7-36.2 14.1-76.2-3.4-105.5h.1c29.6-5.9 70.3-22 65.7-50.6zM530.7 263.7c-5.9 29.5-36.6 47.8-61.6 43.9-30.9-4.8-38.5-39.5-14.1-64.8 16.2-16.8 45.2-24 68.5-26.9 6.7 14.1 10.3 32 7.2 47.8zm21.8-83.1c-4.2-6-9.8-18.5-2.5-26.3 6.7-7.2 20.9-10.1 31.8-7.7 15.3 3.4 19.7 15.9 4.9 24.4-10.7 6.1-23.6 8.1-34.2 9.6z\"]\n};\nvar faNutritionix = {\n prefix: 'fab',\n iconName: 'nutritionix',\n icon: [400, 512, [], \"f3d6\", \"M88 8.1S221.4-.1 209 112.5c0 0 19.1-74.9 103-40.6 0 0-17.7 74-88 56 0 0 14.6-54.6 66.1-56.6 0 0-39.9-10.3-82.1 48.8 0 0-19.8-94.5-93.6-99.7 0 0 75.2 19.4 77.6 107.5 0 .1-106.4 7-104-119.8zm312 315.6c0 48.5-9.7 95.3-32 132.3-42.2 30.9-105 48-168 48-62.9 0-125.8-17.1-168-48C9.7 419 0 372.2 0 323.7 0 275.3 17.7 229 40 192c42.2-30.9 97.1-48.6 160-48.6 63 0 117.8 17.6 160 48.6 22.3 37 40 83.3 40 131.7zM120 428c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zm0-66.2c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zm0-66.2c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zM192 428c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zm0-66.2c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zm0-66.2c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zM264 428c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zm0-66.2c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zm0-66.2c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zM336 428c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zm0-66.2c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zm0-66.2c0-15.5-12.5-28-28-28s-28 12.5-28 28 12.5 28 28 28 28-12.5 28-28zm24-39.6c-4.8-22.3-7.4-36.9-16-56-38.8-19.9-90.5-32-144-32S94.8 180.1 56 200c-8.8 19.5-11.2 33.9-16 56 42.2-7.9 98.7-14.8 160-14.8s117.8 6.9 160 14.8z\"]\n};\nvar faOdnoklassniki = {\n prefix: 'fab',\n iconName: 'odnoklassniki',\n icon: [320, 512, [], \"f263\", \"M275.1 334c-27.4 17.4-65.1 24.3-90 26.9l20.9 20.6 76.3 76.3c27.9 28.6-17.5 73.3-45.7 45.7-19.1-19.4-47.1-47.4-76.3-76.6L84 503.4c-28.2 27.5-73.6-17.6-45.4-45.7 19.4-19.4 47.1-47.4 76.3-76.3l20.6-20.6c-24.6-2.6-62.9-9.1-90.6-26.9-32.6-21-46.9-33.3-34.3-59 7.4-14.6 27.7-26.9 54.6-5.7 0 0 36.3 28.9 94.9 28.9s94.9-28.9 94.9-28.9c26.9-21.1 47.1-8.9 54.6 5.7 12.4 25.7-1.9 38-34.5 59.1zM30.3 129.7C30.3 58 88.6 0 160 0s129.7 58 129.7 129.7c0 71.4-58.3 129.4-129.7 129.4s-129.7-58-129.7-129.4zm66 0c0 35.1 28.6 63.7 63.7 63.7s63.7-28.6 63.7-63.7c0-35.4-28.6-64-63.7-64s-63.7 28.6-63.7 64z\"]\n};\nvar faOdnoklassnikiSquare = {\n prefix: 'fab',\n iconName: 'odnoklassniki-square',\n icon: [448, 512, [], \"f264\", \"M184.2 177.1c0-22.1 17.9-40 39.8-40s39.8 17.9 39.8 40c0 22-17.9 39.8-39.8 39.8s-39.8-17.9-39.8-39.8zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-305.1 97.1c0 44.6 36.4 80.9 81.1 80.9s81.1-36.2 81.1-80.9c0-44.8-36.4-81.1-81.1-81.1s-81.1 36.2-81.1 81.1zm174.5 90.7c-4.6-9.1-17.3-16.8-34.1-3.6 0 0-22.7 18-59.3 18s-59.3-18-59.3-18c-16.8-13.2-29.5-5.5-34.1 3.6-7.9 16.1 1.1 23.7 21.4 37 17.3 11.1 41.2 15.2 56.6 16.8l-12.9 12.9c-18.2 18-35.5 35.5-47.7 47.7-17.6 17.6 10.7 45.8 28.4 28.6l47.7-47.9c18.2 18.2 35.7 35.7 47.7 47.9 17.6 17.2 46-10.7 28.6-28.6l-47.7-47.7-13-12.9c15.5-1.6 39.1-5.9 56.2-16.8 20.4-13.3 29.3-21 21.5-37z\"]\n};\nvar faOldRepublic = {\n prefix: 'fab',\n iconName: 'old-republic',\n icon: [496, 512, [], \"f510\", \"M235.76 10.23c7.5-.31 15-.28 22.5-.09 3.61.14 7.2.4 10.79.73 4.92.27 9.79 1.03 14.67 1.62 2.93.43 5.83.98 8.75 1.46 7.9 1.33 15.67 3.28 23.39 5.4 12.24 3.47 24.19 7.92 35.76 13.21 26.56 12.24 50.94 29.21 71.63 49.88 20.03 20.09 36.72 43.55 48.89 69.19 1.13 2.59 2.44 5.1 3.47 7.74 2.81 6.43 5.39 12.97 7.58 19.63 4.14 12.33 7.34 24.99 9.42 37.83.57 3.14 1.04 6.3 1.4 9.47.55 3.83.94 7.69 1.18 11.56.83 8.34.84 16.73.77 25.1-.07 4.97-.26 9.94-.75 14.89-.24 3.38-.51 6.76-.98 10.12-.39 2.72-.63 5.46-1.11 8.17-.9 5.15-1.7 10.31-2.87 15.41-4.1 18.5-10.3 36.55-18.51 53.63-15.77 32.83-38.83 62.17-67.12 85.12a246.503 246.503 0 0 1-56.91 34.86c-6.21 2.68-12.46 5.25-18.87 7.41-3.51 1.16-7.01 2.38-10.57 3.39-6.62 1.88-13.29 3.64-20.04 5-4.66.91-9.34 1.73-14.03 2.48-5.25.66-10.5 1.44-15.79 1.74-6.69.66-13.41.84-20.12.81-6.82.03-13.65-.12-20.45-.79-3.29-.23-6.57-.5-9.83-.95-2.72-.39-5.46-.63-8.17-1.11-4.12-.72-8.25-1.37-12.35-2.22-4.25-.94-8.49-1.89-12.69-3.02-8.63-2.17-17.08-5.01-25.41-8.13-10.49-4.12-20.79-8.75-30.64-14.25-2.14-1.15-4.28-2.29-6.35-3.57-11.22-6.58-21.86-14.1-31.92-22.34-34.68-28.41-61.41-66.43-76.35-108.7-3.09-8.74-5.71-17.65-7.8-26.68-1.48-6.16-2.52-12.42-3.58-18.66-.4-2.35-.61-4.73-.95-7.09-.6-3.96-.75-7.96-1.17-11.94-.8-9.47-.71-18.99-.51-28.49.14-3.51.34-7.01.7-10.51.31-3.17.46-6.37.92-9.52.41-2.81.65-5.65 1.16-8.44.7-3.94 1.3-7.9 2.12-11.82 3.43-16.52 8.47-32.73 15.26-48.18 1.15-2.92 2.59-5.72 3.86-8.59 8.05-16.71 17.9-32.56 29.49-47.06 20-25.38 45.1-46.68 73.27-62.47 7.5-4.15 15.16-8.05 23.07-11.37 15.82-6.88 32.41-11.95 49.31-15.38 3.51-.67 7.04-1.24 10.56-1.85 2.62-.47 5.28-.7 7.91-1.08 3.53-.53 7.1-.68 10.65-1.04 2.46-.24 4.91-.36 7.36-.51m8.64 24.41c-9.23.1-18.43.99-27.57 2.23-7.3 1.08-14.53 2.6-21.71 4.3-13.91 3.5-27.48 8.34-40.46 14.42-10.46 4.99-20.59 10.7-30.18 17.22-4.18 2.92-8.4 5.8-12.34 9.03-5.08 3.97-9.98 8.17-14.68 12.59-2.51 2.24-4.81 4.7-7.22 7.06-28.22 28.79-48.44 65.39-57.5 104.69-2.04 8.44-3.54 17.02-4.44 25.65-1.1 8.89-1.44 17.85-1.41 26.8.11 7.14.38 14.28 1.22 21.37.62 7.12 1.87 14.16 3.2 21.18 1.07 4.65 2.03 9.32 3.33 13.91 6.29 23.38 16.5 45.7 30.07 65.75 8.64 12.98 18.78 24.93 29.98 35.77 16.28 15.82 35.05 29.04 55.34 39.22 7.28 3.52 14.66 6.87 22.27 9.63 5.04 1.76 10.06 3.57 15.22 4.98 11.26 3.23 22.77 5.6 34.39 7.06 2.91.29 5.81.61 8.72.9 13.82 1.08 27.74 1 41.54-.43 4.45-.6 8.92-.99 13.35-1.78 3.63-.67 7.28-1.25 10.87-2.1 4.13-.98 8.28-1.91 12.36-3.07 26.5-7.34 51.58-19.71 73.58-36.2 15.78-11.82 29.96-25.76 42.12-41.28 3.26-4.02 6.17-8.31 9.13-12.55 3.39-5.06 6.58-10.25 9.6-15.54 2.4-4.44 4.74-8.91 6.95-13.45 5.69-12.05 10.28-24.62 13.75-37.49 2.59-10.01 4.75-20.16 5.9-30.45 1.77-13.47 1.94-27.1 1.29-40.65-.29-3.89-.67-7.77-1-11.66-2.23-19.08-6.79-37.91-13.82-55.8-5.95-15.13-13.53-29.63-22.61-43.13-12.69-18.8-28.24-35.68-45.97-49.83-25.05-20-54.47-34.55-85.65-42.08-7.78-1.93-15.69-3.34-23.63-4.45-3.91-.59-7.85-.82-11.77-1.24-7.39-.57-14.81-.72-22.22-.58zM139.26 83.53c13.3-8.89 28.08-15.38 43.3-20.18-3.17 1.77-6.44 3.38-9.53 5.29-11.21 6.68-21.52 14.9-30.38 24.49-6.8 7.43-12.76 15.73-17.01 24.89-3.29 6.86-5.64 14.19-6.86 21.71-.93 4.85-1.3 9.81-1.17 14.75.13 13.66 4.44 27.08 11.29 38.82 5.92 10.22 13.63 19.33 22.36 27.26 4.85 4.36 10.24 8.09 14.95 12.6 2.26 2.19 4.49 4.42 6.43 6.91 2.62 3.31 4.89 6.99 5.99 11.1.9 3.02.66 6.2.69 9.31.02 4.1-.04 8.2.03 12.3.14 3.54-.02 7.09.11 10.63.08 2.38.02 4.76.05 7.14.16 5.77.06 11.53.15 17.3.11 2.91.02 5.82.13 8.74.03 1.63.13 3.28-.03 4.91-.91.12-1.82.18-2.73.16-10.99 0-21.88-2.63-31.95-6.93-6-2.7-11.81-5.89-17.09-9.83-5.75-4.19-11.09-8.96-15.79-14.31-6.53-7.24-11.98-15.39-16.62-23.95-1.07-2.03-2.24-4.02-3.18-6.12-1.16-2.64-2.62-5.14-3.67-7.82-4.05-9.68-6.57-19.94-8.08-30.31-.49-4.44-1.09-8.88-1.2-13.35-.7-15.73.84-31.55 4.67-46.82 2.12-8.15 4.77-16.18 8.31-23.83 6.32-14.2 15.34-27.18 26.3-38.19 6.28-6.2 13.13-11.84 20.53-16.67zm175.37-20.12c2.74.74 5.41 1.74 8.09 2.68 6.36 2.33 12.68 4.84 18.71 7.96 13.11 6.44 25.31 14.81 35.82 24.97 10.2 9.95 18.74 21.6 25.14 34.34 1.28 2.75 2.64 5.46 3.81 8.26 6.31 15.1 10 31.26 11.23 47.57.41 4.54.44 9.09.45 13.64.07 11.64-1.49 23.25-4.3 34.53-1.97 7.27-4.35 14.49-7.86 21.18-3.18 6.64-6.68 13.16-10.84 19.24-6.94 10.47-15.6 19.87-25.82 27.22-10.48 7.64-22.64 13.02-35.4 15.38-3.51.69-7.08 1.08-10.66 1.21-1.85.06-3.72.16-5.56-.1-.28-2.15 0-4.31-.01-6.46-.03-3.73.14-7.45.1-11.17.19-7.02.02-14.05.21-21.07.03-2.38-.03-4.76.03-7.14.17-5.07-.04-10.14.14-15.21.1-2.99-.24-6.04.51-8.96.66-2.5 1.78-4.86 3.09-7.08 4.46-7.31 11.06-12.96 17.68-18.26 5.38-4.18 10.47-8.77 15.02-13.84 7.68-8.37 14.17-17.88 18.78-28.27 2.5-5.93 4.52-12.1 5.55-18.46.86-4.37 1.06-8.83 1.01-13.27-.02-7.85-1.4-15.65-3.64-23.17-1.75-5.73-4.27-11.18-7.09-16.45-3.87-6.93-8.65-13.31-13.96-19.2-9.94-10.85-21.75-19.94-34.6-27.1-1.85-1.02-3.84-1.82-5.63-2.97zm-100.8 58.45c.98-1.18 1.99-2.33 3.12-3.38-.61.93-1.27 1.81-1.95 2.68-3.1 3.88-5.54 8.31-7.03 13.06-.87 3.27-1.68 6.6-1.73 10-.07 2.52-.08 5.07.32 7.57 1.13 7.63 4.33 14.85 8.77 21.12 2 2.7 4.25 5.27 6.92 7.33 1.62 1.27 3.53 2.09 5.34 3.05 3.11 1.68 6.32 3.23 9.07 5.48 2.67 2.09 4.55 5.33 4.4 8.79-.01 73.67 0 147.34-.01 221.02 0 1.35-.08 2.7.04 4.04.13 1.48.82 2.83 1.47 4.15.86 1.66 1.78 3.34 3.18 4.62.85.77 1.97 1.4 3.15 1.24 1.5-.2 2.66-1.35 3.45-2.57.96-1.51 1.68-3.16 2.28-4.85.76-2.13.44-4.42.54-6.63.14-4.03-.02-8.06.14-12.09.03-5.89.03-11.77.06-17.66.14-3.62.03-7.24.11-10.86.15-4.03-.02-8.06.14-12.09.03-5.99.03-11.98.07-17.97.14-3.62.02-7.24.11-10.86.14-3.93-.02-7.86.14-11.78.03-5.99.03-11.98.06-17.97.16-3.94-.01-7.88.19-11.82.29 1.44.13 2.92.22 4.38.19 3.61.42 7.23.76 10.84.32 3.44.44 6.89.86 10.32.37 3.1.51 6.22.95 9.31.57 4.09.87 8.21 1.54 12.29 1.46 9.04 2.83 18.11 5.09 26.99 1.13 4.82 2.4 9.61 4 14.3 2.54 7.9 5.72 15.67 10.31 22.62 1.73 2.64 3.87 4.98 6.1 7.21.27.25.55.51.88.71.6.25 1.31-.07 1.7-.57.71-.88 1.17-1.94 1.7-2.93 4.05-7.8 8.18-15.56 12.34-23.31.7-1.31 1.44-2.62 2.56-3.61 1.75-1.57 3.84-2.69 5.98-3.63 2.88-1.22 5.9-2.19 9.03-2.42 6.58-.62 13.11.75 19.56 1.85 3.69.58 7.4 1.17 11.13 1.41 3.74.1 7.48.05 11.21-.28 8.55-.92 16.99-2.96 24.94-6.25 5.3-2.24 10.46-4.83 15.31-7.93 11.46-7.21 21.46-16.57 30.04-27.01 1.17-1.42 2.25-2.9 3.46-4.28-1.2 3.24-2.67 6.37-4.16 9.48-1.25 2.9-2.84 5.61-4.27 8.42-5.16 9.63-11.02 18.91-17.75 27.52-4.03 5.21-8.53 10.05-13.33 14.57-6.64 6.05-14.07 11.37-22.43 14.76-8.21 3.37-17.31 4.63-26.09 3.29-3.56-.58-7.01-1.69-10.41-2.88-2.79-.97-5.39-2.38-8.03-3.69-3.43-1.71-6.64-3.81-9.71-6.08 2.71 3.06 5.69 5.86 8.7 8.61 4.27 3.76 8.74 7.31 13.63 10.23 3.98 2.45 8.29 4.4 12.84 5.51 1.46.37 2.96.46 4.45.6-1.25 1.1-2.63 2.04-3.99 2.98-9.61 6.54-20.01 11.86-30.69 16.43-20.86 8.7-43.17 13.97-65.74 15.34-4.66.24-9.32.36-13.98.36-4.98-.11-9.97-.13-14.92-.65-11.2-.76-22.29-2.73-33.17-5.43-10.35-2.71-20.55-6.12-30.3-10.55-8.71-3.86-17.12-8.42-24.99-13.79-1.83-1.31-3.74-2.53-5.37-4.08 6.6-1.19 13.03-3.39 18.99-6.48 5.74-2.86 10.99-6.66 15.63-11.07 2.24-2.19 4.29-4.59 6.19-7.09-3.43 2.13-6.93 4.15-10.62 5.78-4.41 2.16-9.07 3.77-13.81 5.02-5.73 1.52-11.74 1.73-17.61 1.14-8.13-.95-15.86-4.27-22.51-8.98-4.32-2.94-8.22-6.43-11.96-10.06-9.93-10.16-18.2-21.81-25.66-33.86-3.94-6.27-7.53-12.75-11.12-19.22-1.05-2.04-2.15-4.05-3.18-6.1 2.85 2.92 5.57 5.97 8.43 8.88 8.99 8.97 18.56 17.44 29.16 24.48 7.55 4.9 15.67 9.23 24.56 11.03 3.11.73 6.32.47 9.47.81 2.77.28 5.56.2 8.34.3 5.05.06 10.11.04 15.16-.16 3.65-.16 7.27-.66 10.89-1.09 2.07-.25 4.11-.71 6.14-1.2 3.88-.95 8.11-.96 11.83.61 4.76 1.85 8.44 5.64 11.38 9.71 2.16 3.02 4.06 6.22 5.66 9.58 1.16 2.43 2.46 4.79 3.55 7.26 1 2.24 2.15 4.42 3.42 6.52.67 1.02 1.4 2.15 2.62 2.55 1.06-.75 1.71-1.91 2.28-3.03 2.1-4.16 3.42-8.65 4.89-13.05 2.02-6.59 3.78-13.27 5.19-20.02 2.21-9.25 3.25-18.72 4.54-28.13.56-3.98.83-7.99 1.31-11.97.87-10.64 1.9-21.27 2.24-31.94.08-1.86.24-3.71.25-5.57.01-4.35.25-8.69.22-13.03-.01-2.38-.01-4.76 0-7.13.05-5.07-.2-10.14-.22-15.21-.2-6.61-.71-13.2-1.29-19.78-.73-5.88-1.55-11.78-3.12-17.51-2.05-7.75-5.59-15.03-9.8-21.82-3.16-5.07-6.79-9.88-11.09-14.03-3.88-3.86-8.58-7.08-13.94-8.45-1.5-.41-3.06-.45-4.59-.64.07-2.99.7-5.93 1.26-8.85 1.59-7.71 3.8-15.3 6.76-22.6 1.52-4.03 3.41-7.9 5.39-11.72 3.45-6.56 7.62-12.79 12.46-18.46zm31.27 1.7c.35-.06.71-.12 1.07-.19.19 1.79.09 3.58.1 5.37v38.13c-.01 1.74.13 3.49-.15 5.22-.36-.03-.71-.05-1.06-.05-.95-3.75-1.72-7.55-2.62-11.31-.38-1.53-.58-3.09-1.07-4.59-1.7-.24-3.43-.17-5.15-.2-5.06-.01-10.13 0-15.19-.01-1.66-.01-3.32.09-4.98-.03-.03-.39-.26-.91.16-1.18 1.28-.65 2.72-.88 4.06-1.35 3.43-1.14 6.88-2.16 10.31-3.31 1.39-.48 2.9-.72 4.16-1.54.04-.56.02-1.13-.05-1.68-1.23-.55-2.53-.87-3.81-1.28-3.13-1.03-6.29-1.96-9.41-3.02-1.79-.62-3.67-1-5.41-1.79-.03-.37-.07-.73-.11-1.09 5.09-.19 10.2.06 15.3-.12 3.36-.13 6.73.08 10.09-.07.12-.39.26-.77.37-1.16 1.08-4.94 2.33-9.83 3.39-14.75zm5.97-.2c.36.05.72.12 1.08.2.98 3.85 1.73 7.76 2.71 11.61.36 1.42.56 2.88 1.03 4.27 2.53.18 5.07-.01 7.61.05 5.16.12 10.33.12 15.49.07.76-.01 1.52.03 2.28.08-.04.36-.07.72-.1 1.08-1.82.83-3.78 1.25-5.67 1.89-3.73 1.23-7.48 2.39-11.22 3.57-.57.17-1.12.42-1.67.64-.15.55-.18 1.12-.12 1.69.87.48 1.82.81 2.77 1.09 4.88 1.52 9.73 3.14 14.63 4.6.38.13.78.27 1.13.49.4.27.23.79.15 1.18-1.66.13-3.31.03-4.97.04-5.17.01-10.33-.01-15.5.01-1.61.03-3.22-.02-4.82.21-.52 1.67-.72 3.42-1.17 5.11-.94 3.57-1.52 7.24-2.54 10.78-.36.01-.71.02-1.06.06-.29-1.73-.15-3.48-.15-5.22v-38.13c.02-1.78-.08-3.58.11-5.37zM65.05 168.33c1.12-2.15 2.08-4.4 3.37-6.46-1.82 7.56-2.91 15.27-3.62 23-.8 7.71-.85 15.49-.54 23.23 1.05 19.94 5.54 39.83 14.23 57.88 2.99 5.99 6.35 11.83 10.5 17.11 6.12 7.47 12.53 14.76 19.84 21.09 4.8 4.1 9.99 7.78 15.54 10.8 3.27 1.65 6.51 3.39 9.94 4.68 5.01 2.03 10.19 3.61 15.42 4.94 3.83.96 7.78 1.41 11.52 2.71 5 1.57 9.47 4.61 13.03 8.43 4.93 5.23 8.09 11.87 10.2 18.67.99 2.9 1.59 5.91 2.17 8.92.15.75.22 1.52.16 2.29-6.5 2.78-13.26 5.06-20.26 6.18-4.11.78-8.29.99-12.46 1.08-10.25.24-20.47-1.76-30.12-5.12-3.74-1.42-7.49-2.85-11.03-4.72-8.06-3.84-15.64-8.7-22.46-14.46-2.92-2.55-5.83-5.13-8.4-8.03-9.16-9.83-16.3-21.41-21.79-33.65-2.39-5.55-4.61-11.18-6.37-16.96-1.17-3.94-2.36-7.89-3.26-11.91-.75-2.94-1.22-5.95-1.87-8.92-.46-2.14-.69-4.32-1.03-6.48-.85-5.43-1.28-10.93-1.33-16.43.11-6.18.25-12.37 1.07-18.5.4-2.86.67-5.74 1.15-8.6.98-5.7 2.14-11.37 3.71-16.93 3.09-11.65 7.48-22.95 12.69-33.84zm363.73-6.44c1.1 1.66 1.91 3.48 2.78 5.26 2.1 4.45 4.24 8.9 6.02 13.49 7.61 18.76 12.3 38.79 13.04 59.05.02 1.76.07 3.52.11 5.29.13 9.57-1.27 19.09-3.18 28.45-.73 3.59-1.54 7.17-2.58 10.69-4.04 14.72-10 29-18.41 41.78-8.21 12.57-19.01 23.55-31.84 31.41-5.73 3.59-11.79 6.64-18.05 9.19-5.78 2.19-11.71 4.03-17.8 5.11-6.4 1.05-12.91 1.52-19.4 1.23-7.92-.48-15.78-2.07-23.21-4.85-1.94-.8-3.94-1.46-5.84-2.33-.21-1.51.25-2.99.53-4.46 1.16-5.74 3.03-11.36 5.7-16.58 2.37-4.51 5.52-8.65 9.46-11.9 2.43-2.05 5.24-3.61 8.16-4.83 3.58-1.5 7.47-1.97 11.24-2.83 7.23-1.71 14.37-3.93 21.15-7 10.35-4.65 19.71-11.38 27.65-19.46 1.59-1.61 3.23-3.18 4.74-4.87 3.37-3.76 6.71-7.57 9.85-11.53 7.48-10.07 12.82-21.59 16.71-33.48 1.58-5.3 3.21-10.6 4.21-16.05.63-2.87 1.04-5.78 1.52-8.68.87-6.09 1.59-12.22 1.68-18.38.12-6.65.14-13.32-.53-19.94-.73-7.99-1.87-15.96-3.71-23.78z\"]\n};\nvar faOpencart = {\n prefix: 'fab',\n iconName: 'opencart',\n icon: [640, 512, [], \"f23d\", \"M423.3 440.7c0 25.3-20.3 45.6-45.6 45.6s-45.8-20.3-45.8-45.6 20.6-45.8 45.8-45.8c25.4 0 45.6 20.5 45.6 45.8zm-253.9-45.8c-25.3 0-45.6 20.6-45.6 45.8s20.3 45.6 45.6 45.6 45.8-20.3 45.8-45.6-20.5-45.8-45.8-45.8zm291.7-270C158.9 124.9 81.9 112.1 0 25.7c34.4 51.7 53.3 148.9 373.1 144.2 333.3-5 130 86.1 70.8 188.9 186.7-166.7 319.4-233.9 17.2-233.9z\"]\n};\nvar faOpenid = {\n prefix: 'fab',\n iconName: 'openid',\n icon: [448, 512, [], \"f19b\", \"M271.5 432l-68 32C88.5 453.7 0 392.5 0 318.2c0-71.5 82.5-131 191.7-144.3v43c-71.5 12.5-124 53-124 101.3 0 51 58.5 93.3 135.7 103v-340l68-33.2v384zM448 291l-131.3-28.5 36.8-20.7c-19.5-11.5-43.5-20-70-24.8v-43c46.2 5.5 87.7 19.5 120.3 39.3l35-19.8L448 291z\"]\n};\nvar faOpera = {\n prefix: 'fab',\n iconName: 'opera',\n icon: [496, 512, [], \"f26a\", \"M313.9 32.7c-170.2 0-252.6 223.8-147.5 355.1 36.5 45.4 88.6 75.6 147.5 75.6 36.3 0 70.3-11.1 99.4-30.4-43.8 39.2-101.9 63-165.3 63-3.9 0-8 0-11.9-.3C104.6 489.6 0 381.1 0 248 0 111 111 0 248 0h.8c63.1.3 120.7 24.1 164.4 63.1-29-19.4-63.1-30.4-99.3-30.4zm101.8 397.7c-40.9 24.7-90.7 23.6-132-5.8 56.2-20.5 97.7-91.6 97.7-176.6 0-84.7-41.2-155.8-97.4-176.6 41.8-29.2 91.2-30.3 132.9-5 105.9 98.7 105.5 265.7-1.2 364z\"]\n};\nvar faOptinMonster = {\n prefix: 'fab',\n iconName: 'optin-monster',\n icon: [576, 512, [], \"f23c\", \"M572.6 421.4c5.6-9.5 4.7-15.2-5.4-11.6-3-4.9-7-9.5-11.1-13.8 2.9-9.7-.7-14.2-10.8-9.2-4.6-3.2-10.3-6.5-15.9-9.2 0-15.1-11.6-11.6-17.6-5.7-10.4-1.5-18.7-.3-26.8 5.7.3-6.5.3-13 .3-19.7 12.6 0 40.2-11 45.9-36.2 1.4-6.8 1.6-13.8-.3-21.9-3-13.5-14.3-21.3-25.1-25.7-.8-5.9-7.6-14.3-14.9-15.9s-12.4 4.9-14.1 10.3c-8.5 0-19.2 2.8-21.1 8.4-5.4-.5-11.1-1.4-16.8-1.9 2.7-1.9 5.4-3.5 8.4-4.6 5.4-9.2 14.6-11.4 25.7-11.6V256c19.5-.5 43-5.9 53.8-18.1 12.7-13.8 14.6-37.3 12.4-55.1-2.4-17.3-9.7-37.6-24.6-48.1-8.4-5.9-21.6-.8-22.7 9.5-2.2 19.6 1.2 30-38.6 25.1-10.3-23.8-24.6-44.6-42.7-60C341 49.6 242.9 55.5 166.4 71.7c19.7 4.6 41.1 8.6 59.7 16.5-26.2 2.4-52.7 11.3-76.2 23.2-32.8 17-44 29.9-56.7 42.4 14.9-2.2 28.9-5.1 43.8-3.8-9.7 5.4-18.4 12.2-26.5 20-25.8.9-23.8-5.3-26.2-25.9-1.1-10.5-14.3-15.4-22.7-9.7-28.1 19.9-33.5 79.9-12.2 103.5 10.8 12.2 35.1 17.3 54.9 17.8-.3 1.1-.3 1.9-.3 2.7 10.8.5 19.5 2.7 24.6 11.6 3 1.1 5.7 2.7 8.1 4.6-5.4.5-11.1 1.4-16.5 1.9-3.3-6.6-13.7-8.1-21.1-8.1-1.6-5.7-6.5-12.2-14.1-10.3-6.8 1.9-14.1 10-14.9 15.9-22.5 9.5-30.1 26.8-25.1 47.6 5.3 24.8 33 36.2 45.9 36.2v19.7c-6.6-5-14.3-7.5-26.8-5.7-5.5-5.5-17.3-10.1-17.3 5.7-5.9 2.7-11.4 5.9-15.9 9.2-9.8-4.9-13.6-1.7-11.1 9.2-4.1 4.3-7.8 8.6-11.1 13.8-10.2-3.7-11 2.2-5.4 11.6-1.1 3.5-1.6 7-1.9 10.8-.5 31.6 44.6 64 73.5 65.1 17.3.5 34.6-8.4 43-23.5 113.2 4.9 226.7 4.1 340.2 0 8.1 15.1 25.4 24.3 42.7 23.5 29.2-1.1 74.3-33.5 73.5-65.1.2-3.7-.7-7.2-1.7-10.7zm-73.8-254c1.1-3 2.4-8.4 2.4-14.6 0-5.9 6.8-8.1 14.1-.8 11.1 11.6 14.9 40.5 13.8 51.1-4.1-13.6-13-29-30.3-35.7zm-4.6 6.7c19.5 6.2 28.6 27.6 29.7 48.9-1.1 2.7-3 5.4-4.9 7.6-5.7 5.9-15.4 10-26.2 12.2 4.3-21.3.3-47.3-12.7-63 4.9-.8 10.9-2.4 14.1-5.7zm-24.1 6.8c13.8 11.9 20 39.2 14.1 63.5-4.1.5-8.1.8-11.6.8-1.9-21.9-6.8-44-14.3-64.6 3.7.3 8.1.3 11.8.3zM47.5 203c-1.1-10.5 2.4-39.5 13.8-51.1 7-7.3 14.1-5.1 14.1.8 0 6.2 1.4 11.6 2.4 14.6-17.3 6.8-26.2 22.2-30.3 35.7zm9.7 27.6c-1.9-2.2-3.5-4.9-4.9-7.6 1.4-21.3 10.3-42.7 29.7-48.9 3.2 3.2 9.2 4.9 14.1 5.7-13 15.7-17 41.6-12.7 63-10.8-2.2-20.5-6-26.2-12.2zm47.9 14.6c-4.1 0-8.1-.3-12.7-.8-4.6-18.6-1.9-38.9 5.4-53v.3l12.2-5.1c4.9-1.9 9.7-3.8 14.9-4.9-10.7 19.7-17.4 41.3-19.8 63.5zm184-162.7c41.9 0 76.2 34 76.2 75.9 0 42.2-34.3 76.2-76.2 76.2s-76.2-34-76.2-76.2c0-41.8 34.3-75.9 76.2-75.9zm115.6 174.3c-.3 17.8-7 48.9-23 57-13.2 6.6-6.5-7.5-16.5-58.1 13.3.3 26.6.3 39.5 1.1zm-54-1.6c.8 4.9 3.8 40.3-1.6 41.9-11.6 3.5-40 4.3-51.1-1.1-4.1-3-4.6-35.9-4.3-41.1v.3c18.9-.3 38.1-.3 57 0zM278.3 309c-13 3.5-41.6 4.1-54.6-1.6-6.5-2.7-3.8-42.4-1.9-51.6 19.2-.5 38.4-.5 57.8-.8v.3c1.1 8.3 3.3 51.2-1.3 53.7zm-106.5-51.1c12.2-.8 24.6-1.4 36.8-1.6-2.4 15.4-3 43.5-4.9 52.2-1.1 6.8-4.3 6.8-9.7 4.3-21.9-9.8-27.6-35.2-22.2-54.9zm-35.4 31.3c7.8-1.1 15.7-1.9 23.5-2.7 1.6 6.2 3.8 11.9 7 17.6 10 17 44 35.7 45.1 7 6.2 14.9 40.8 12.2 54.9 10.8 15.7-1.4 23.8-1.4 26.8-14.3 12.4 4.3 30.8 4.1 44 3 11.3-.8 20.8-.5 24.6-8.9 1.1 5.1 1.9 11.6 4.6 16.8 10.8 21.3 37.3 1.4 46.8-31.6 8.6.8 17.6 1.9 26.5 2.7-.4 1.3-3.8 7.3 7.3 11.6-47.6 47-95.7 87.8-163.2 107-63.2-20.8-112.1-59.5-155.9-106.5 9.6-3.4 10.4-8.8 8-12.5zm-21.6 172.5c-3.8 17.8-21.9 29.7-39.7 28.9-19.2-.8-46.5-17-59.2-36.5-2.7-31.1 43.8-61.3 66.2-54.6 14.9 4.3 27.8 30.8 33.5 54 0 3-.3 5.7-.8 8.2zm-8.7-66c-.5-13.5-.5-27-.3-40.5h.3c2.7-1.6 5.7-3.8 7.8-6.5 6.5-1.6 13-5.1 15.1-9.2 3.3-7.1-7-7.5-5.4-12.4 2.7-1.1 5.7-2.2 7.8-3.5 29.2 29.2 58.6 56.5 97.3 77-36.8 11.3-72.4 27.6-105.9 47-1.2-18.6-7.7-35.9-16.7-51.9zm337.6 64.6c-103 3.5-206.2 4.1-309.4 0 0 .3 0 .3-.3.3v-.3h.3c35.1-21.6 72.2-39.2 112.4-50.8 11.6 5.1 23 9.5 34.9 13.2 2.2.8 2.2.8 4.3 0 14.3-4.1 28.4-9.2 42.2-15.4 41.5 11.7 78.8 31.7 115.6 53zm10.5-12.4c-35.9-19.5-73-35.9-111.9-47.6 38.1-20 71.9-47.3 103.5-76.7 2.2 1.4 4.6 2.4 7.6 3.2 0 .8.3 1.9.5 2.4-4.6 2.7-7.8 6.2-5.9 10.3 2.2 3.8 8.6 7.6 15.1 8.9 2.4 2.7 5.1 5.1 8.1 6.8 0 13.8-.3 27.6-.8 41.3l.3-.3c-9.3 15.9-15.5 37-16.5 51.7zm105.9 6.2c-12.7 19.5-40 35.7-59.2 36.5-19.3.9-40.5-13.2-40.5-37 5.7-23.2 18.9-49.7 33.5-54 22.7-6.9 69.2 23.4 66.2 54.5zM372.9 75.2c-3.8-72.1-100.8-79.7-126-23.5 44.6-24.3 90.3-15.7 126 23.5zM74.8 407.1c-15.7 1.6-49.5 25.4-49.5 43.2 0 11.6 15.7 19.5 32.2 14.9 12.2-3.2 31.1-17.6 35.9-27.3 6-11.6-3.7-32.7-18.6-30.8zm215.9-176.2c28.6 0 51.9-21.6 51.9-48.4 0-36.1-40.5-58.1-72.2-44.3 9.5 3 16.5 11.6 16.5 21.6 0 23.3-33.3 32-46.5 11.3-7.3 34.1 19.4 59.8 50.3 59.8zM68 474.1c.5 6.5 12.2 12.7 21.6 9.5 6.8-2.7 14.6-10.5 17.3-16.2 3-7-1.1-20-9.7-18.4-8.9 1.6-29.7 16.7-29.2 25.1zm433.2-67c-14.9-1.9-24.6 19.2-18.9 30.8 4.9 9.7 24.1 24.1 36.2 27.3 16.5 4.6 32.2-3.2 32.2-14.9 0-17.8-33.8-41.6-49.5-43.2zM478.8 449c-8.4-1.6-12.4 11.3-9.5 18.4 2.4 5.7 10.3 13.5 17.3 16.2 9.2 3.2 21.1-3 21.3-9.5.9-8.4-20.2-23.5-29.1-25.1z\"]\n};\nvar faOrcid = {\n prefix: 'fab',\n iconName: 'orcid',\n icon: [512, 512, [], \"f8d2\", \"M294.75 188.19h-45.92V342h47.47c67.62 0 83.12-51.34 83.12-76.91 0-41.64-26.54-76.9-84.67-76.9zM256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm-80.79 360.76h-29.84v-207.5h29.84zm-14.92-231.14a19.57 19.57 0 1 1 19.57-19.57 19.64 19.64 0 0 1-19.57 19.57zM300 369h-81V161.26h80.6c76.73 0 110.44 54.83 110.44 103.85C410 318.39 368.38 369 300 369z\"]\n};\nvar faOsi = {\n prefix: 'fab',\n iconName: 'osi',\n icon: [512, 512, [], \"f41a\", \"M8 266.44C10.3 130.64 105.4 34 221.8 18.34c138.8-18.6 255.6 75.8 278 201.1 21.3 118.8-44 230-151.6 274-9.3 3.8-14.4 1.7-18-7.7q-26.7-69.45-53.4-139c-3.1-8.1-1-13.2 7-16.8 24.2-11 39.3-29.4 43.3-55.8a71.47 71.47 0 0 0-64.5-82.2c-39-3.4-71.8 23.7-77.5 59.7-5.2 33 11.1 63.7 41.9 77.7 9.6 4.4 11.5 8.6 7.8 18.4q-26.85 69.9-53.7 139.9c-2.6 6.9-8.3 9.3-15.5 6.5-52.6-20.3-101.4-61-130.8-119-24.9-49.2-25.2-87.7-26.8-108.7zm20.9-1.9c.4 6.6.6 14.3 1.3 22.1 6.3 71.9 49.6 143.5 131 183.1 3.2 1.5 4.4.8 5.6-2.3q22.35-58.65 45-117.3c1.3-3.3.6-4.8-2.4-6.7-31.6-19.9-47.3-48.5-45.6-86 1-21.6 9.3-40.5 23.8-56.3 30-32.7 77-39.8 115.5-17.6a91.64 91.64 0 0 1 45.2 90.4c-3.6 30.6-19.3 53.9-45.7 69.8-2.7 1.6-3.5 2.9-2.3 6q22.8 58.8 45.2 117.7c1.2 3.1 2.4 3.8 5.6 2.3 35.5-16.6 65.2-40.3 88.1-72 34.8-48.2 49.1-101.9 42.3-161-13.7-117.5-119.4-214.8-255.5-198-106.1 13-195.3 102.5-197.1 225.8z\"]\n};\nvar faPage4 = {\n prefix: 'fab',\n iconName: 'page4',\n icon: [496, 512, [], \"f3d7\", \"M248 504C111 504 0 393 0 256S111 8 248 8c20.9 0 41.3 2.6 60.7 7.5L42.3 392H248v112zm0-143.6V146.8L98.6 360.4H248zm96 31.6v92.7c45.7-19.2 84.5-51.7 111.4-92.7H344zm57.4-138.2l-21.2 8.4 21.2 8.3v-16.7zm-20.3 54.5c-6.7 0-8 6.3-8 12.9v7.7h16.2v-10c0-5.9-2.3-10.6-8.2-10.6zM496 256c0 37.3-8.2 72.7-23 104.4H344V27.3C433.3 64.8 496 153.1 496 256zM360.4 143.6h68.2V96h-13.9v32.6h-13.9V99h-13.9v29.6h-12.7V96h-13.9v47.6zm68.1 185.3H402v-11c0-15.4-5.6-25.2-20.9-25.2-15.4 0-20.7 10.6-20.7 25.9v25.3h68.2v-15zm0-103l-68.2 29.7V268l68.2 29.5v-16.6l-14.4-5.7v-26.5l14.4-5.9v-16.9zm-4.8-68.5h-35.6V184H402v-12.2h11c8.6 15.8 1.3 35.3-18.6 35.3-22.5 0-28.3-25.3-15.5-37.7l-11.6-10.6c-16.2 17.5-12.2 63.9 27.1 63.9 34 0 44.7-35.9 29.3-65.3z\"]\n};\nvar faPagelines = {\n prefix: 'fab',\n iconName: 'pagelines',\n icon: [384, 512, [], \"f18c\", \"M384 312.7c-55.1 136.7-187.1 54-187.1 54-40.5 81.8-107.4 134.4-184.6 134.7-16.1 0-16.6-24.4 0-24.4 64.4-.3 120.5-42.7 157.2-110.1-41.1 15.9-118.6 27.9-161.6-82.2 109-44.9 159.1 11.2 178.3 45.5 9.9-24.4 17-50.9 21.6-79.7 0 0-139.7 21.9-149.5-98.1 119.1-47.9 152.6 76.7 152.6 76.7 1.6-16.7 3.3-52.6 3.3-53.4 0 0-106.3-73.7-38.1-165.2 124.6 43 61.4 162.4 61.4 162.4.5 1.6.5 23.8 0 33.4 0 0 45.2-89 136.4-57.5-4.2 134-141.9 106.4-141.9 106.4-4.4 27.4-11.2 53.4-20 77.5 0 0 83-91.8 172-20z\"]\n};\nvar faPalfed = {\n prefix: 'fab',\n iconName: 'palfed',\n icon: [576, 512, [], \"f3d8\", \"M384.9 193.9c0-47.4-55.2-44.2-95.4-29.8-1.3 39.4-2.5 80.7-3 119.8.7 2.8 2.6 6.2 15.1 6.2 36.8 0 83.4-42.8 83.3-96.2zm-194.5 72.2c.2 0 6.5-2.7 11.2-2.7 26.6 0 20.7 44.1-14.4 44.1-21.5 0-37.1-18.1-37.1-43 0-42 42.9-95.6 100.7-126.5 1-12.4 3-22 10.5-28.2 11.2-9 26.6-3.5 29.5 11.1 72.2-22.2 135.2 1 135.2 72 0 77.9-79.3 152.6-140.1 138.2-.1 39.4.9 74.4 2.7 100v.2c.2 3.4.6 12.5-5.3 19.1-9.6 10.6-33.4 10-36.4-22.3-4.1-44.4.2-206.1 1.4-242.5-21.5 15-58.5 50.3-58.5 75.9.2 2.5.4 4 .6 4.6zM8 181.1s-.1 37.4 38.4 37.4h30l22.4 217.2s0 44.3 44.7 44.3h288.9s44.7-.4 44.7-44.3l22.4-217.2h30s38.4 1.2 38.4-37.4c0 0 .1-37.4-38.4-37.4h-30.1c-7.3-25.6-30.2-74.3-119.4-74.3h-28V50.3s-2.7-18.4-21.1-18.4h-85.8s-21.1 0-21.1 18.4v19.1h-28.1s-105 4.2-120.5 74.3h-29S8 142.5 8 181.1z\"]\n};\nvar faPatreon = {\n prefix: 'fab',\n iconName: 'patreon',\n icon: [512, 512, [], \"f3d9\", \"M512 194.8c0 101.3-82.4 183.8-183.8 183.8-101.7 0-184.4-82.4-184.4-183.8 0-101.6 82.7-184.3 184.4-184.3C429.6 10.5 512 93.2 512 194.8zM0 501.5h90v-491H0v491z\"]\n};\nvar faPaypal = {\n prefix: 'fab',\n iconName: 'paypal',\n icon: [384, 512, [], \"f1ed\", \"M111.4 295.9c-3.5 19.2-17.4 108.7-21.5 134-.3 1.8-1 2.5-3 2.5H12.3c-7.6 0-13.1-6.6-12.1-13.9L58.8 46.6c1.5-9.6 10.1-16.9 20-16.9 152.3 0 165.1-3.7 204 11.4 60.1 23.3 65.6 79.5 44 140.3-21.5 62.6-72.5 89.5-140.1 90.3-43.4.7-69.5-7-75.3 24.2zM357.1 152c-1.8-1.3-2.5-1.8-3 1.3-2 11.4-5.1 22.5-8.8 33.6-39.9 113.8-150.5 103.9-204.5 103.9-6.1 0-10.1 3.3-10.9 9.4-22.6 140.4-27.1 169.7-27.1 169.7-1 7.1 3.5 12.9 10.6 12.9h63.5c8.6 0 15.7-6.3 17.4-14.9.7-5.4-1.1 6.1 14.4-91.3 4.6-22 14.3-19.7 29.3-19.7 71 0 126.4-28.8 142.9-112.3 6.5-34.8 4.6-71.4-23.8-92.6z\"]\n};\nvar faPennyArcade = {\n prefix: 'fab',\n iconName: 'penny-arcade',\n icon: [640, 512, [], \"f704\", \"M421.91 164.27c-4.49 19.45-1.4 6.06-15.1 65.29l39.73-10.61c-22.34-49.61-17.29-38.41-24.63-54.68zm-206.09 51.11c-20.19 5.4-11.31 3.03-39.63 10.58l4.46 46.19c28.17-7.59 20.62-5.57 34.82-9.34 42.3-9.79 32.85-56.42.35-47.43zm326.16-26.19l-45.47-99.2c-5.69-12.37-19.46-18.84-32.62-15.33-70.27 18.75-38.72 10.32-135.59 36.23a27.618 27.618 0 0 0-18.89 17.41C144.26 113.27 0 153.75 0 226.67c0 33.5 30.67 67.11 80.9 95.37l1.74 17.88a27.891 27.891 0 0 0-17.77 28.67l4.3 44.48c1.39 14.31 13.43 25.21 27.8 25.2 5.18-.01-3.01 1.78 122.53-31.76 12.57-3.37 21.12-15.02 20.58-28.02 216.59 45.5 401.99-5.98 399.89-84.83.01-28.15-22.19-66.56-97.99-104.47zM255.14 298.3l-21.91 5.88-48.44 12.91 2.46 23.55 20.53-5.51 4.51 44.51-115.31 30.78-4.3-44.52 20.02-5.35-11.11-114.64-20.12 5.39-4.35-44.5c178.15-47.54 170.18-46.42 186.22-46.65 56.66-1.13 64.15 71.84 42.55 104.43a86.7 86.7 0 0 1-50.75 33.72zm199.18 16.62l-3.89-39.49 14.9-3.98-6.61-14.68-57.76 15.42-4.1 17.54 19.2-5.12 4.05 39.54-112.85 30.07-4.46-44.43 20.99-5.59 33.08-126.47-17.15 4.56-4.2-44.48c93.36-24.99 65.01-17.41 135.59-36.24l66.67 145.47 20.79-5.56 4.3 44.48-108.55 28.96z\"]\n};\nvar faPeriscope = {\n prefix: 'fab',\n iconName: 'periscope',\n icon: [448, 512, [], \"f3da\", \"M370 63.6C331.4 22.6 280.5 0 226.6 0 111.9 0 18.5 96.2 18.5 214.4c0 75.1 57.8 159.8 82.7 192.7C137.8 455.5 192.6 512 226.6 512c41.6 0 112.9-94.2 120.9-105 24.6-33.1 82-118.3 82-192.6 0-56.5-21.1-110.1-59.5-150.8zM226.6 493.9c-42.5 0-190-167.3-190-279.4 0-107.4 83.9-196.3 190-196.3 100.8 0 184.7 89 184.7 196.3.1 112.1-147.4 279.4-184.7 279.4zM338 206.8c0 59.1-51.1 109.7-110.8 109.7-100.6 0-150.7-108.2-92.9-181.8v.4c0 24.5 20.1 44.4 44.8 44.4 24.7 0 44.8-19.9 44.8-44.4 0-18.2-11.1-33.8-26.9-40.7 76.6-19.2 141 39.3 141 112.4z\"]\n};\nvar faPhabricator = {\n prefix: 'fab',\n iconName: 'phabricator',\n icon: [496, 512, [], \"f3db\", \"M323 262.1l-.1-13s21.7-19.8 21.1-21.2l-9.5-20c-.6-1.4-29.5-.5-29.5-.5l-9.4-9.3s.2-28.5-1.2-29.1l-20.1-9.2c-1.4-.6-20.7 21-20.7 21l-13.1-.2s-20.5-21.4-21.9-20.8l-20 8.3c-1.4.5.2 28.9.2 28.9l-9.1 9.1s-29.2-.9-29.7.4l-8.1 19.8c-.6 1.4 21 21 21 21l.1 12.9s-21.7 19.8-21.1 21.2l9.5 20c.6 1.4 29.5.5 29.5.5l9.4 9.3s-.2 31.8 1.2 32.3l20.1 8.3c1.4.6 20.7-23.5 20.7-23.5l13.1.2s20.5 23.8 21.8 23.3l20-7.5c1.4-.6-.2-32.1-.2-32.1l9.1-9.1s29.2.9 29.7-.5l8.1-19.8c.7-1.1-20.9-20.7-20.9-20.7zm-44.9-8.7c.7 17.1-12.8 31.6-30.1 32.4-17.3.8-32.1-12.5-32.8-29.6-.7-17.1 12.8-31.6 30.1-32.3 17.3-.8 32.1 12.5 32.8 29.5zm201.2-37.9l-97-97-.1.1c-75.1-73.3-195.4-72.8-269.8 1.6-50.9 51-27.8 27.9-95.7 95.3-22.3 22.3-22.3 58.7 0 81 69.9 69.4 46.4 46 97.4 97l.1-.1c75.1 73.3 195.4 72.9 269.8-1.6 51-50.9 27.9-27.9 95.3-95.3 22.3-22.3 22.3-58.7 0-81zM140.4 363.8c-59.6-59.5-59.6-156 0-215.5 59.5-59.6 156-59.5 215.6 0 59.5 59.5 59.6 156 0 215.6-59.6 59.5-156 59.4-215.6-.1z\"]\n};\nvar faPhoenixFramework = {\n prefix: 'fab',\n iconName: 'phoenix-framework',\n icon: [640, 512, [], \"f3dc\", \"M212.9 344.3c3.8-.1 22.8-1.4 25.6-2.2-2.4-2.6-43.6-1-68-49.6-4.3-8.6-7.5-17.6-6.4-27.6 2.9-25.5 32.9-30 52-18.5 36 21.6 63.3 91.3 113.7 97.5 37 4.5 84.6-17 108.2-45.4-.6-.1-.8-.2-1-.1-.4.1-.8.2-1.1.3-33.3 12.1-94.3 9.7-134.7-14.8-37.6-22.8-53.1-58.7-51.8-74.6 1.8-21.3 22.9-23.2 35.9-19.6 14.4 3.9 24.4 17.6 38.9 27.4 15.6 10.4 32.9 13.7 51.3 10.3 14.9-2.7 34.4-12.3 36.5-14.5-1.1-.1-1.8-.1-2.5-.2-6.2-.6-12.4-.8-18.5-1.7C279.8 194.5 262.1 47.4 138.5 37.9 94.2 34.5 39.1 46 2.2 72.9c-.8.6-1.5 1.2-2.2 1.8.1.2.1.3.2.5.8 0 1.6-.1 2.4-.2 6.3-1 12.5-.8 18.7.3 23.8 4.3 47.7 23.1 55.9 76.5 5.3 34.3-.7 50.8 8 86.1 19 77.1 91 107.6 127.7 106.4zM75.3 64.9c-.9-1-.9-1.2-1.3-2 12.1-2.6 24.2-4.1 36.6-4.8-1.1 14.7-22.2 21.3-35.3 6.8zm196.9 350.5c-42.8 1.2-92-26.7-123.5-61.4-4.6-5-16.8-20.2-18.6-23.4l.4-.4c6.6 4.1 25.7 18.6 54.8 27 24.2 7 48.1 6.3 71.6-3.3 22.7-9.3 41-.5 43.1 2.9-18.5 3.8-20.1 4.4-24 7.9-5.1 4.4-4.6 11.7 7 17.2 26.2 12.4 63-2.8 97.2 25.4 2.4 2 8.1 7.8 10.1 10.7-.1.2-.3.3-.4.5-4.8-1.5-16.4-7.5-40.2-9.3-24.7-2-46.3 5.3-77.5 6.2zm174.8-252c16.4-5.2 41.3-13.4 66.5-3.3 16.1 6.5 26.2 18.7 32.1 34.6 3.5 9.4 5.1 19.7 5.1 28.7-.2 0-.4 0-.6.1-.2-.4-.4-.9-.5-1.3-5-22-29.9-43.8-67.6-29.9-50.2 18.6-130.4 9.7-176.9-48-.7-.9-2.4-1.7-1.3-3.2.1-.2 2.1.6 3 1.3 18.1 13.4 38.3 21.9 60.3 26.2 30.5 6.1 54.6 2.9 79.9-5.2zm102.7 117.5c-32.4.2-33.8 50.1-103.6 64.4-18.2 3.7-38.7 4.6-44.9 4.2v-.4c2.8-1.5 14.7-2.6 29.7-16.6 7.9-7.3 15.3-15.1 22.8-22.9 19.5-20.2 41.4-42.2 81.9-39 23.1 1.8 29.3 8.2 36.1 12.7.3.2.4.5.7.9-.5 0-.7.1-.9 0-7-2.7-14.3-3.3-21.8-3.3zm-12.3-24.1c-.1.2-.1.4-.2.6-28.9-4.4-48-7.9-68.5 4-17 9.9-31.4 20.5-62 24.4-27.1 3.4-45.1 2.4-66.1-8-.3-.2-.6-.4-1-.6 0-.2.1-.3.1-.5 24.9 3.8 36.4 5.1 55.5-5.8 22.3-12.9 40.1-26.6 71.3-31 29.6-4.1 51.3 2.5 70.9 16.9zM268.6 97.3c-.6-.6-1.1-1.2-2.1-2.3 7.6 0 29.7-1.2 53.4 8.4 19.7 8 32.2 21 50.2 32.9 11.1 7.3 23.4 9.3 36.4 8.1 4.3-.4 8.5-1.2 12.8-1.7.4-.1.9 0 1.5.3-.6.4-1.2.9-1.8 1.2-8.1 4-16.7 6.3-25.6 7.1-26.1 2.6-50.3-3.7-73.4-15.4-19.3-9.9-36.4-22.9-51.4-38.6zM640 335.7c-3.5 3.1-22.7 11.6-42.7 5.3-12.3-3.9-19.5-14.9-31.6-24.1-10-7.6-20.9-7.9-28.1-8.4.6-.8.9-1.2 1.2-1.4 14.8-9.2 30.5-12.2 47.3-6.5 12.5 4.2 19.2 13.5 30.4 24.2 10.8 10.4 21 9.9 23.1 10.5.1-.1.2 0 .4.4zm-212.5 137c2.2 1.2 1.6 1.5 1.5 2-18.5-1.4-33.9-7.6-46.8-22.2-21.8-24.7-41.7-27.9-48.6-29.7.5-.2.8-.4 1.1-.4 13.1.1 26.1.7 38.9 3.9 25.3 6.4 35 25.4 41.6 35.3 3.2 4.8 7.3 8.3 12.3 11.1z\"]\n};\nvar faPhoenixSquadron = {\n prefix: 'fab',\n iconName: 'phoenix-squadron',\n icon: [512, 512, [], \"f511\", \"M96 63.38C142.49 27.25 201.55 7.31 260.51 8.81c29.58-.38 59.11 5.37 86.91 15.33-24.13-4.63-49-6.34-73.38-2.45C231.17 27 191 48.84 162.21 80.87c5.67-1 10.78-3.67 16-5.86 18.14-7.87 37.49-13.26 57.23-14.83 19.74-2.13 39.64-.43 59.28 1.92-14.42 2.79-29.12 4.57-43 9.59-34.43 11.07-65.27 33.16-86.3 62.63-13.8 19.71-23.63 42.86-24.67 67.13-.35 16.49 5.22 34.81 19.83 44a53.27 53.27 0 0 0 37.52 6.74c15.45-2.46 30.07-8.64 43.6-16.33 11.52-6.82 22.67-14.55 32-24.25 3.79-3.22 2.53-8.45 2.62-12.79-2.12-.34-4.38-1.11-6.3.3a203 203 0 0 1-35.82 15.37c-20 6.17-42.16 8.46-62.1.78 12.79 1.73 26.06.31 37.74-5.44 20.23-9.72 36.81-25.2 54.44-38.77a526.57 526.57 0 0 1 88.9-55.31c25.71-12 52.94-22.78 81.57-24.12-15.63 13.72-32.15 26.52-46.78 41.38-14.51 14-27.46 29.5-40.11 45.18-3.52 4.6-8.95 6.94-13.58 10.16a150.7 150.7 0 0 0-51.89 60.1c-9.33 19.68-14.5 41.85-11.77 63.65 1.94 13.69 8.71 27.59 20.9 34.91 12.9 8 29.05 8.07 43.48 5.1 32.8-7.45 61.43-28.89 81-55.84 20.44-27.52 30.52-62.2 29.16-96.35-.52-7.5-1.57-15-1.66-22.49 8 19.48 14.82 39.71 16.65 60.83 2 14.28.75 28.76-1.62 42.9-1.91 11-5.67 21.51-7.78 32.43a165 165 0 0 0 39.34-81.07 183.64 183.64 0 0 0-14.21-104.64c20.78 32 32.34 69.58 35.71 107.48.49 12.73.49 25.51 0 38.23A243.21 243.21 0 0 1 482 371.34c-26.12 47.34-68 85.63-117.19 108-78.29 36.23-174.68 31.32-248-14.68A248.34 248.34 0 0 1 25.36 366 238.34 238.34 0 0 1 0 273.08v-31.34C3.93 172 40.87 105.82 96 63.38m222 80.33a79.13 79.13 0 0 0 16-4.48c5-1.77 9.24-5.94 10.32-11.22-8.96 4.99-17.98 9.92-26.32 15.7z\"]\n};\nvar faPhp = {\n prefix: 'fab',\n iconName: 'php',\n icon: [640, 512, [], \"f457\", \"M320 104.5c171.4 0 303.2 72.2 303.2 151.5S491.3 407.5 320 407.5c-171.4 0-303.2-72.2-303.2-151.5S148.7 104.5 320 104.5m0-16.8C143.3 87.7 0 163 0 256s143.3 168.3 320 168.3S640 349 640 256 496.7 87.7 320 87.7zM218.2 242.5c-7.9 40.5-35.8 36.3-70.1 36.3l13.7-70.6c38 0 63.8-4.1 56.4 34.3zM97.4 350.3h36.7l8.7-44.8c41.1 0 66.6 3 90.2-19.1 26.1-24 32.9-66.7 14.3-88.1-9.7-11.2-25.3-16.7-46.5-16.7h-70.7L97.4 350.3zm185.7-213.6h36.5l-8.7 44.8c31.5 0 60.7-2.3 74.8 10.7 14.8 13.6 7.7 31-8.3 113.1h-37c15.4-79.4 18.3-86 12.7-92-5.4-5.8-17.7-4.6-47.4-4.6l-18.8 96.6h-36.5l32.7-168.6zM505 242.5c-8 41.1-36.7 36.3-70.1 36.3l13.7-70.6c38.2 0 63.8-4.1 56.4 34.3zM384.2 350.3H421l8.7-44.8c43.2 0 67.1 2.5 90.2-19.1 26.1-24 32.9-66.7 14.3-88.1-9.7-11.2-25.3-16.7-46.5-16.7H417l-32.8 168.7z\"]\n};\nvar faPiedPiper = {\n prefix: 'fab',\n iconName: 'pied-piper',\n icon: [480, 512, [], \"f2ae\", \"M455.93,23.2C429.23,30,387.79,51.69,341.35,90.66A206,206,0,0,0,240,64C125.13,64,32,157.12,32,272s93.13,208,208,208,208-93.13,208-208a207.25,207.25,0,0,0-58.75-144.81,155.35,155.35,0,0,0-17,27.4A176.16,176.16,0,0,1,417.1,272c0,97.66-79.44,177.11-177.09,177.11a175.81,175.81,0,0,1-87.63-23.4c82.94-107.33,150.79-37.77,184.31-226.65,5.79-32.62,28-94.26,126.23-160.18C471,33.45,465.35,20.8,455.93,23.2ZM125,406.4A176.66,176.66,0,0,1,62.9,272C62.9,174.34,142.35,94.9,240,94.9a174,174,0,0,1,76.63,17.75C250.64,174.76,189.77,265.52,125,406.4Z\"]\n};\nvar faPiedPiperAlt = {\n prefix: 'fab',\n iconName: 'pied-piper-alt',\n icon: [576, 512, [], \"f1a8\", \"M244 246c-3.2-2-6.3-2.9-10.1-2.9-6.6 0-12.6 3.2-19.3 3.7l1.7 4.9zm135.9 197.9c-19 0-64.1 9.5-79.9 19.8l6.9 45.1c35.7 6.1 70.1 3.6 106-9.8-4.8-10-23.5-55.1-33-55.1zM340.8 177c6.6 2.8 11.5 9.2 22.7 22.1 2-1.4 7.5-5.2 7.5-8.6 0-4.9-11.8-13.2-13.2-23 11.2-5.7 25.2-6 37.6-8.9 68.1-16.4 116.3-52.9 146.8-116.7C548.3 29.3 554 16.1 554.6 2l-2 2.6c-28.4 50-33 63.2-81.3 100-31.9 24.4-69.2 40.2-106.6 54.6l-6.3-.3v-21.8c-19.6 1.6-19.7-14.6-31.6-23-18.7 20.6-31.6 40.8-58.9 51.1-12.7 4.8-19.6 10-25.9 21.8 34.9-16.4 91.2-13.5 98.8-10zM555.5 0l-.6 1.1-.3.9.6-.6zm-59.2 382.1c-33.9-56.9-75.3-118.4-150-115.5l-.3-6c-1.1-13.5 32.8 3.2 35.1-31l-14.4 7.2c-19.8-45.7-8.6-54.3-65.5-54.3-14.7 0-26.7 1.7-41.4 4.6 2.9 18.6 2.2 36.7-10.9 50.3l19.5 5.5c-1.7 3.2-2.9 6.3-2.9 9.8 0 21 42.8 2.9 42.8 33.6 0 18.4-36.8 60.1-54.9 60.1-8 0-53.7-50-53.4-60.1l.3-4.6 52.3-11.5c13-2.6 12.3-22.7-2.9-22.7-3.7 0-43.1 9.2-49.4 10.6-2-5.2-7.5-14.1-13.8-14.1-3.2 0-6.3 3.2-9.5 4-9.2 2.6-31 2.9-21.5 20.1L15.9 298.5c-5.5 1.1-8.9 6.3-8.9 11.8 0 6 5.5 10.9 11.5 10.9 8 0 131.3-28.4 147.4-32.2 2.6 3.2 4.6 6.3 7.8 8.6 20.1 14.4 59.8 85.9 76.4 85.9 24.1 0 58-22.4 71.3-41.9 3.2-4.3 6.9-7.5 12.4-6.9.6 13.8-31.6 34.2-33 43.7-1.4 10.2-1 35.2-.3 41.1 26.7 8.1 52-3.6 77.9-2.9 4.3-21 10.6-41.9 9.8-63.5l-.3-9.5c-1.4-34.2-10.9-38.5-34.8-58.6-1.1-1.1-2.6-2.6-3.7-4 2.2-1.4 1.1-1 4.6-1.7 88.5 0 56.3 183.6 111.5 229.9 33.1-15 72.5-27.9 103.5-47.2-29-25.6-52.6-45.7-72.7-79.9zm-196.2 46.1v27.2l11.8-3.4-2.9-23.8zm-68.7-150.4l24.1 61.2 21-13.8-31.3-50.9zm84.4 154.9l2 12.4c9-1.5 58.4-6.6 58.4-14.1 0-1.4-.6-3.2-.9-4.6-26.8 0-36.9 3.8-59.5 6.3z\"]\n};\nvar faPiedPiperHat = {\n prefix: 'fab',\n iconName: 'pied-piper-hat',\n icon: [640, 512, [], \"f4e5\", \"M640 24.9c-80.8 53.6-89.4 92.5-96.4 104.4-6.7 12.2-11.7 60.3-23.3 83.6-11.7 23.6-54.2 42.2-66.1 50-11.7 7.8-28.3 38.1-41.9 64.2-108.1-4.4-167.4 38.8-259.2 93.6 29.4-9.7 43.3-16.7 43.3-16.7 94.2-36 139.3-68.3 281.1-49.2 1.1 0 1.9.6 2.8.8 3.9 2.2 5.3 6.9 3.1 10.8l-53.9 95.8c-2.5 4.7-7.8 7.2-13.1 6.1-126.8-23.8-226.9 17.3-318.9 18.6C24.1 488 0 453.4 0 451.8c0-1.1.6-1.7 1.7-1.7 0 0 38.3 0 103.1-15.3C178.4 294.5 244 245.4 315.4 245.4c0 0 71.7 0 90.6 61.9 22.8-39.7 28.3-49.2 28.3-49.2 5.3-9.4 35-77.2 86.4-141.4 51.5-64 90.4-79.9 119.3-91.8z\"]\n};\nvar faPiedPiperPp = {\n prefix: 'fab',\n iconName: 'pied-piper-pp',\n icon: [448, 512, [], \"f1a7\", \"M205.3 174.6c0 21.1-14.2 38.1-31.7 38.1-7.1 0-12.8-1.2-17.2-3.7v-68c4.4-2.7 10.1-4.2 17.2-4.2 17.5 0 31.7 16.9 31.7 37.8zm52.6 67c-7.1 0-12.8 1.5-17.2 4.2v68c4.4 2.5 10.1 3.7 17.2 3.7 17.4 0 31.7-16.9 31.7-37.8 0-21.1-14.3-38.1-31.7-38.1zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zM185 255.1c41 0 74.2-35.6 74.2-79.6 0-44-33.2-79.6-74.2-79.6-12 0-24.1 3.2-34.6 8.8h-45.7V311l51.8-10.1v-50.6c8.6 3.1 18.1 4.8 28.5 4.8zm158.4 25.3c0-44-33.2-79.6-73.9-79.6-3.2 0-6.4.2-9.6.7-3.7 12.5-10.1 23.8-19.2 33.4-13.8 15-32.2 23.8-51.8 24.8V416l51.8-10.1v-50.6c8.6 3.2 18.2 4.7 28.7 4.7 40.8 0 74-35.6 74-79.6z\"]\n};\nvar faPiedPiperSquare = {\n prefix: 'fab',\n iconName: 'pied-piper-square',\n icon: [448, 512, [], \"f91e\", \"M32 419L0 479.2l.8-328C.8 85.3 54 32 120 32h327.2c-93 28.9-189.9 94.2-253.9 168.6C122.7 282 82.6 338 32 419M448 32S305.2 98.8 261.6 199.1c-23.2 53.6-28.9 118.1-71 158.6-28.9 27.8-69.8 38.2-105.3 56.3-23.2 12-66.4 40.5-84.9 66h328.4c66 0 119.3-53.3 119.3-119.2-.1 0-.1-328.8-.1-328.8z\"]\n};\nvar faPinterest = {\n prefix: 'fab',\n iconName: 'pinterest',\n icon: [496, 512, [], \"f0d2\", \"M496 256c0 137-111 248-248 248-25.6 0-50.2-3.9-73.4-11.1 10.1-16.5 25.2-43.5 30.8-65 3-11.6 15.4-59 15.4-59 8.1 15.4 31.7 28.5 56.8 28.5 74.8 0 128.7-68.8 128.7-154.3 0-81.9-66.9-143.2-152.9-143.2-107 0-163.9 71.8-163.9 150.1 0 36.4 19.4 81.7 50.3 96.1 4.7 2.2 7.2 1.2 8.3-3.3.8-3.4 5-20.3 6.9-28.1.6-2.5.3-4.7-1.7-7.1-10.1-12.5-18.3-35.3-18.3-56.6 0-54.7 41.4-107.6 112-107.6 60.9 0 103.6 41.5 103.6 100.9 0 67.1-33.9 113.6-78 113.6-24.3 0-42.6-20.1-36.7-44.8 7-29.5 20.5-61.3 20.5-82.6 0-19-10.2-34.9-31.4-34.9-24.9 0-44.9 25.7-44.9 60.2 0 22 7.4 36.8 7.4 36.8s-24.5 103.8-29 123.2c-5 21.4-3 51.6-.9 71.2C65.4 450.9 0 361.1 0 256 0 119 111 8 248 8s248 111 248 248z\"]\n};\nvar faPinterestP = {\n prefix: 'fab',\n iconName: 'pinterest-p',\n icon: [384, 512, [], \"f231\", \"M204 6.5C101.4 6.5 0 74.9 0 185.6 0 256 39.6 296 63.6 296c9.9 0 15.6-27.6 15.6-35.4 0-9.3-23.7-29.1-23.7-67.8 0-80.4 61.2-137.4 140.4-137.4 68.1 0 118.5 38.7 118.5 109.8 0 53.1-21.3 152.7-90.3 152.7-24.9 0-46.2-18-46.2-43.8 0-37.8 26.4-74.4 26.4-113.4 0-66.2-93.9-54.2-93.9 25.8 0 16.8 2.1 35.4 9.6 50.7-13.8 59.4-42 147.9-42 209.1 0 18.9 2.7 37.5 4.5 56.4 3.4 3.8 1.7 3.4 6.9 1.5 50.4-69 48.6-82.5 71.4-172.8 12.3 23.4 44.1 36 69.3 36 106.2 0 153.9-103.5 153.9-196.8C384 71.3 298.2 6.5 204 6.5z\"]\n};\nvar faPinterestSquare = {\n prefix: 'fab',\n iconName: 'pinterest-square',\n icon: [448, 512, [], \"f0d3\", \"M448 80v352c0 26.5-21.5 48-48 48H154.4c9.8-16.4 22.4-40 27.4-59.3 3-11.5 15.3-58.4 15.3-58.4 8 15.3 31.4 28.2 56.3 28.2 74.1 0 127.4-68.1 127.4-152.7 0-81.1-66.2-141.8-151.4-141.8-106 0-162.2 71.1-162.2 148.6 0 36 19.2 80.8 49.8 95.1 4.7 2.2 7.1 1.2 8.2-3.3.8-3.4 5-20.1 6.8-27.8.6-2.5.3-4.6-1.7-7-10.1-12.3-18.3-34.9-18.3-56 0-54.2 41-106.6 110.9-106.6 60.3 0 102.6 41.1 102.6 99.9 0 66.4-33.5 112.4-77.2 112.4-24.1 0-42.1-19.9-36.4-44.4 6.9-29.2 20.3-60.7 20.3-81.8 0-53-75.5-45.7-75.5 25 0 21.7 7.3 36.5 7.3 36.5-31.4 132.8-36.1 134.5-29.6 192.6l2.2.8H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48z\"]\n};\nvar faPlaystation = {\n prefix: 'fab',\n iconName: 'playstation',\n icon: [576, 512, [], \"f3df\", \"M570.9 372.3c-11.3 14.2-38.8 24.3-38.8 24.3L327 470.2v-54.3l150.9-53.8c17.1-6.1 19.8-14.8 5.8-19.4-13.9-4.6-39.1-3.3-56.2 2.9L327 381.1v-56.4c23.2-7.8 47.1-13.6 75.7-16.8 40.9-4.5 90.9.6 130.2 15.5 44.2 14 49.2 34.7 38 48.9zm-224.4-92.5v-139c0-16.3-3-31.3-18.3-35.6-11.7-3.8-19 7.1-19 23.4v347.9l-93.8-29.8V32c39.9 7.4 98 24.9 129.2 35.4C424.1 94.7 451 128.7 451 205.2c0 74.5-46 102.8-104.5 74.6zM43.2 410.2c-45.4-12.8-53-39.5-32.3-54.8 19.1-14.2 51.7-24.9 51.7-24.9l134.5-47.8v54.5l-96.8 34.6c-17.1 6.1-19.7 14.8-5.8 19.4 13.9 4.6 39.1 3.3 56.2-2.9l46.4-16.9v48.8c-51.6 9.3-101.4 7.3-153.9-10z\"]\n};\nvar faProductHunt = {\n prefix: 'fab',\n iconName: 'product-hunt',\n icon: [512, 512, [], \"f288\", \"M326.3 218.8c0 20.5-16.7 37.2-37.2 37.2h-70.3v-74.4h70.3c20.5 0 37.2 16.7 37.2 37.2zM504 256c0 137-111 248-248 248S8 393 8 256 119 8 256 8s248 111 248 248zm-128.1-37.2c0-47.9-38.9-86.8-86.8-86.8H169.2v248h49.6v-74.4h70.3c47.9 0 86.8-38.9 86.8-86.8z\"]\n};\nvar faPushed = {\n prefix: 'fab',\n iconName: 'pushed',\n icon: [432, 512, [], \"f3e1\", \"M407 111.9l-98.5-9 14-33.4c10.4-23.5-10.8-40.4-28.7-37L22.5 76.9c-15.1 2.7-26 18.3-21.4 36.6l105.1 348.3c6.5 21.3 36.7 24.2 47.7 7l35.3-80.8 235.2-231.3c16.4-16.8 4.3-42.9-17.4-44.8zM297.6 53.6c5.1-.7 7.5 2.5 5.2 7.4L286 100.9 108.6 84.6l189-31zM22.7 107.9c-3.1-5.1 1-10 6.1-9.1l248.7 22.7-96.9 230.7L22.7 107.9zM136 456.4c-2.6 4-7.9 3.1-9.4-1.2L43.5 179.7l127.7 197.6c-7 15-35.2 79.1-35.2 79.1zm272.8-314.5L210.1 337.3l89.7-213.7 106.4 9.7c4 1.1 5.7 5.3 2.6 8.6z\"]\n};\nvar faPython = {\n prefix: 'fab',\n iconName: 'python',\n icon: [448, 512, [], \"f3e2\", \"M439.8 200.5c-7.7-30.9-22.3-54.2-53.4-54.2h-40.1v47.4c0 36.8-31.2 67.8-66.8 67.8H172.7c-29.2 0-53.4 25-53.4 54.3v101.8c0 29 25.2 46 53.4 54.3 33.8 9.9 66.3 11.7 106.8 0 26.9-7.8 53.4-23.5 53.4-54.3v-40.7H226.2v-13.6h160.2c31.1 0 42.6-21.7 53.4-54.2 11.2-33.5 10.7-65.7 0-108.6zM286.2 404c11.1 0 20.1 9.1 20.1 20.3 0 11.3-9 20.4-20.1 20.4-11 0-20.1-9.2-20.1-20.4.1-11.3 9.1-20.3 20.1-20.3zM167.8 248.1h106.8c29.7 0 53.4-24.5 53.4-54.3V91.9c0-29-24.4-50.7-53.4-55.6-35.8-5.9-74.7-5.6-106.8.1-45.2 8-53.4 24.7-53.4 55.6v40.7h106.9v13.6h-147c-31.1 0-58.3 18.7-66.8 54.2-9.8 40.7-10.2 66.1 0 108.6 7.6 31.6 25.7 54.2 56.8 54.2H101v-48.8c0-35.3 30.5-66.4 66.8-66.4zm-6.7-142.6c-11.1 0-20.1-9.1-20.1-20.3.1-11.3 9-20.4 20.1-20.4 11 0 20.1 9.2 20.1 20.4s-9 20.3-20.1 20.3z\"]\n};\nvar faQq = {\n prefix: 'fab',\n iconName: 'qq',\n icon: [448, 512, [], \"f1d6\", \"M433.754 420.445c-11.526 1.393-44.86-52.741-44.86-52.741 0 31.345-16.136 72.247-51.051 101.786 16.842 5.192 54.843 19.167 45.803 34.421-7.316 12.343-125.51 7.881-159.632 4.037-34.122 3.844-152.316 8.306-159.632-4.037-9.045-15.25 28.918-29.214 45.783-34.415-34.92-29.539-51.059-70.445-51.059-101.792 0 0-33.334 54.134-44.859 52.741-5.37-.65-12.424-29.644 9.347-99.704 10.261-33.024 21.995-60.478 40.144-105.779C60.683 98.063 108.982.006 224 0c113.737.006 163.156 96.133 160.264 214.963 18.118 45.223 29.912 72.85 40.144 105.778 21.768 70.06 14.716 99.053 9.346 99.704z\"]\n};\nvar faQuinscape = {\n prefix: 'fab',\n iconName: 'quinscape',\n icon: [512, 512, [], \"f459\", \"M313.6 474.6h-1a158.1 158.1 0 0 1 0-316.2c94.9 0 168.2 83.1 157 176.6 4 5.1 8.2 9.6 11.2 15.3 13.4-30.3 20.3-62.4 20.3-97.7C501.1 117.5 391.6 8 256.5 8S12 117.5 12 252.6s109.5 244.6 244.5 244.6a237.36 237.36 0 0 0 70.4-10.1c-5.2-3.5-8.9-8.1-13.3-12.5zm-.1-.1l.4.1zm78.4-168.9a99.2 99.2 0 1 0 99.2 99.2 99.18 99.18 0 0 0-99.2-99.2z\"]\n};\nvar faQuora = {\n prefix: 'fab',\n iconName: 'quora',\n icon: [448, 512, [], \"f2c4\", \"M440.5 386.7h-29.3c-1.5 13.5-10.5 30.8-33 30.8-20.5 0-35.3-14.2-49.5-35.8 44.2-34.2 74.7-87.5 74.7-153C403.5 111.2 306.8 32 205 32 105.3 32 7.3 111.7 7.3 228.7c0 134.1 131.3 221.6 249 189C276 451.3 302 480 351.5 480c81.8 0 90.8-75.3 89-93.3zM297 329.2C277.5 300 253.3 277 205.5 277c-30.5 0-54.3 10-69 22.8l12.2 24.3c6.2-3 13-4 19.8-4 35.5 0 53.7 30.8 69.2 61.3-10 3-20.7 4.2-32.7 4.2-75 0-107.5-53-107.5-156.7C97.5 124.5 130 71 205 71c76.2 0 108.7 53.5 108.7 157.7.1 41.8-5.4 75.6-16.7 100.5z\"]\n};\nvar faRProject = {\n prefix: 'fab',\n iconName: 'r-project',\n icon: [581, 512, [], \"f4f7\", \"M581 226.6C581 119.1 450.9 32 290.5 32S0 119.1 0 226.6C0 322.4 103.3 402 239.4 418.1V480h99.1v-61.5c24.3-2.7 47.6-7.4 69.4-13.9L448 480h112l-67.4-113.7c54.5-35.4 88.4-84.9 88.4-139.7zm-466.8 14.5c0-73.5 98.9-133 220.8-133s211.9 40.7 211.9 133c0 50.1-26.5 85-70.3 106.4-2.4-1.6-4.7-2.9-6.4-3.7-10.2-5.2-27.8-10.5-27.8-10.5s86.6-6.4 86.6-92.7-90.6-87.9-90.6-87.9h-199V361c-74.1-21.5-125.2-67.1-125.2-119.9zm225.1 38.3v-55.6c57.8 0 87.8-6.8 87.8 27.3 0 36.5-38.2 28.3-87.8 28.3zm-.9 72.5H365c10.8 0 18.9 11.7 24 19.2-16.1 1.9-33 2.8-50.6 2.9v-22.1z\"]\n};\nvar faRaspberryPi = {\n prefix: 'fab',\n iconName: 'raspberry-pi',\n icon: [407, 512, [], \"f7bb\", \"M372 232.5l-3.7-6.5c.1-46.4-21.4-65.3-46.5-79.7 7.6-2 15.4-3.6 17.6-13.2 13.1-3.3 15.8-9.4 17.1-15.8 3.4-2.3 14.8-8.7 13.6-19.7 6.4-4.4 10-10.1 8.1-18.1 6.9-7.5 8.7-13.7 5.8-19.4 8.3-10.3 4.6-15.6 1.1-20.9 6.2-11.2.7-23.2-16.6-21.2-6.9-10.1-21.9-7.8-24.2-7.8-2.6-3.2-6-6-16.5-4.7-6.8-6.1-14.4-5-22.3-2.1-9.3-7.3-15.5-1.4-22.6.8C271.6.6 269 5.5 263.5 7.6c-12.3-2.6-16.1 3-22 8.9l-6.9-.1c-18.6 10.8-27.8 32.8-31.1 44.1-3.3-11.3-12.5-33.3-31.1-44.1l-6.9.1c-5.9-5.9-9.7-11.5-22-8.9-5.6-2-8.1-7-19.4-3.4-4.6-1.4-8.9-4.4-13.9-4.3-2.6.1-5.5 1-8.7 3.5-7.9-3-15.5-4-22.3 2.1-10.5-1.3-14 1.4-16.5 4.7-2.3 0-17.3-2.3-24.2 7.8C21.2 16 15.8 28 22 39.2c-3.5 5.4-7.2 10.7 1.1 20.9-2.9 5.7-1.1 11.9 5.8 19.4-1.8 8 1.8 13.7 8.1 18.1-1.2 11 10.2 17.4 13.6 19.7 1.3 6.4 4 12.4 17.1 15.8 2.2 9.5 10 11.2 17.6 13.2-25.1 14.4-46.6 33.3-46.5 79.7l-3.7 6.5c-28.8 17.2-54.7 72.7-14.2 117.7 2.6 14.1 7.1 24.2 11 35.4 5.9 45.2 44.5 66.3 54.6 68.8 14.9 11.2 30.8 21.8 52.2 29.2C159 504.2 181 512 203 512h1c22.1 0 44-7.8 64.2-28.4 21.5-7.4 37.3-18 52.2-29.2 10.2-2.5 48.7-23.6 54.6-68.8 3.9-11.2 8.4-21.3 11-35.4 40.6-45.1 14.7-100.5-14-117.7zm-22.2-8c-1.5 18.7-98.9-65.1-82.1-67.9 45.7-7.5 83.6 19.2 82.1 67.9zm-43 93.1c-24.5 15.8-59.8 5.6-78.8-22.8s-14.6-64.2 9.9-80c24.5-15.8 59.8-5.6 78.8 22.8s14.6 64.2-9.9 80zM238.9 29.3c.8 4.2 1.8 6.8 2.9 7.6 5.4-5.8 9.8-11.7 16.8-17.3 0 3.3-1.7 6.8 2.5 9.4 3.7-5 8.8-9.5 15.5-13.3-3.2 5.6-.6 7.3 1.2 9.6 5.1-4.4 10-8.8 19.4-12.3-2.6 3.1-6.2 6.2-2.4 9.8 5.3-3.3 10.6-6.6 23.1-8.9-2.8 3.1-8.7 6.3-5.1 9.4 6.6-2.5 14-4.4 22.1-5.4-3.9 3.2-7.1 6.3-3.9 8.8 7.1-2.2 16.9-5.1 26.4-2.6l-6 6.1c-.7.8 14.1.6 23.9.8-3.6 5-7.2 9.7-9.3 18.2 1 1 5.8.4 10.4 0-4.7 9.9-12.8 12.3-14.7 16.6 2.9 2.2 6.8 1.6 11.2.1-3.4 6.9-10.4 11.7-16 17.3 1.4 1 3.9 1.6 9.7.9-5.2 5.5-11.4 10.5-18.8 15 1.3 1.5 5.8 1.5 10 1.6-6.7 6.5-15.3 9.9-23.4 14.2 4 2.7 6.9 2.1 10 2.1-5.7 4.7-15.4 7.1-24.4 10 1.7 2.7 3.4 3.4 7.1 4.1-9.5 5.3-23.2 2.9-27 5.6.9 2.7 3.6 4.4 6.7 5.8-15.4.9-57.3-.6-65.4-32.3 15.7-17.3 44.4-37.5 93.7-62.6-38.4 12.8-73 30-102 53.5-34.3-15.9-10.8-55.9 5.8-71.8zm-34.4 114.6c24.2-.3 54.1 17.8 54 34.7-.1 15-21 27.1-53.8 26.9-32.1-.4-53.7-15.2-53.6-29.8 0-11.9 26.2-32.5 53.4-31.8zm-123-12.8c3.7-.7 5.4-1.5 7.1-4.1-9-2.8-18.7-5.3-24.4-10 3.1 0 6 .7 10-2.1-8.1-4.3-16.7-7.7-23.4-14.2 4.2-.1 8.7 0 10-1.6-7.4-4.5-13.6-9.5-18.8-15 5.8.7 8.3.1 9.7-.9-5.6-5.6-12.7-10.4-16-17.3 4.3 1.5 8.3 2 11.2-.1-1.9-4.2-10-6.7-14.7-16.6 4.6.4 9.4 1 10.4 0-2.1-8.5-5.8-13.3-9.3-18.2 9.8-.1 24.6 0 23.9-.8l-6-6.1c9.5-2.5 19.3.4 26.4 2.6 3.2-2.5-.1-5.6-3.9-8.8 8.1 1.1 15.4 2.9 22.1 5.4 3.5-3.1-2.3-6.3-5.1-9.4 12.5 2.3 17.8 5.6 23.1 8.9 3.8-3.6.2-6.7-2.4-9.8 9.4 3.4 14.3 7.9 19.4 12.3 1.7-2.3 4.4-4 1.2-9.6 6.7 3.8 11.8 8.3 15.5 13.3 4.1-2.6 2.5-6.2 2.5-9.4 7 5.6 11.4 11.5 16.8 17.3 1.1-.8 2-3.4 2.9-7.6 16.6 15.9 40.1 55.9 6 71.8-29-23.5-63.6-40.7-102-53.5 49.3 25 78 45.3 93.7 62.6-8 31.8-50 33.2-65.4 32.3 3.1-1.4 5.8-3.2 6.7-5.8-4-2.8-17.6-.4-27.2-5.6zm60.1 24.1c16.8 2.8-80.6 86.5-82.1 67.9-1.5-48.7 36.5-75.5 82.1-67.9zM38.2 342c-23.7-18.8-31.3-73.7 12.6-98.3 26.5-7 9 107.8-12.6 98.3zm91 98.2c-13.3 7.9-45.8 4.7-68.8-27.9-15.5-27.4-13.5-55.2-2.6-63.4 16.3-9.8 41.5 3.4 60.9 25.6 16.9 20 24.6 55.3 10.5 65.7zm-26.4-119.7c-24.5-15.8-28.9-51.6-9.9-80s54.3-38.6 78.8-22.8 28.9 51.6 9.9 80c-19.1 28.4-54.4 38.6-78.8 22.8zM205 496c-29.4 1.2-58.2-23.7-57.8-32.3-.4-12.7 35.8-22.6 59.3-22 23.7-1 55.6 7.5 55.7 18.9.5 11-28.8 35.9-57.2 35.4zm58.9-124.9c.2 29.7-26.2 53.8-58.8 54-32.6.2-59.2-23.8-59.4-53.4v-.6c-.2-29.7 26.2-53.8 58.8-54 32.6-.2 59.2 23.8 59.4 53.4v.6zm82.2 42.7c-25.3 34.6-59.6 35.9-72.3 26.3-13.3-12.4-3.2-50.9 15.1-72 20.9-23.3 43.3-38.5 58.9-26.6 10.5 10.3 16.7 49.1-1.7 72.3zm22.9-73.2c-21.5 9.4-39-105.3-12.6-98.3 43.9 24.7 36.3 79.6 12.6 98.3z\"]\n};\nvar faRavelry = {\n prefix: 'fab',\n iconName: 'ravelry',\n icon: [512, 512, [], \"f2d9\", \"M407.4 61.5C331.6 22.1 257.8 31 182.9 66c-11.3 5.2-15.5 10.6-19.9 19-10.3 19.2-16.2 37.4-19.9 52.7-21.2 25.6-36.4 56.1-43.3 89.9-10.6 18-20.9 41.4-23.1 71.4 0 0-.7 7.6-.5 7.9-35.3-4.6-76.2-27-76.2-27 9.1 14.5 61.3 32.3 76.3 37.9 0 0 1.7 98 64.5 131.2-11.3-17.2-13.3-20.2-13.3-20.2S94.8 369 100.4 324.7c.7 0 1.5.2 2.2.2 23.9 87.4 103.2 151.4 196.9 151.4 6.2 0 12.1-.2 18-.7 14 1.5 27.6.5 40.1-3.9 6.9-2.2 13.8-6.4 20.2-10.8 70.2-39.1 100.9-82 123.1-147.7 5.4-16 8.1-35.5 9.8-52.2 8.7-82.3-30.6-161.6-103.3-199.5zM138.8 163.2s-1.2 12.3-.7 19.7c-3.4 2.5-10.1 8.1-18.2 16.7 5.2-12.8 11.3-25.1 18.9-36.4zm-31.2 121.9c4.4-17.2 13.3-39.1 29.8-55.1 0 0 1.7 48 15.8 90.1l-41.4-6.9c-2.2-9.2-3.5-18.5-4.2-28.1zm7.9 42.8c14.8 3.2 34 7.6 43.1 9.1 27.3 76.8 108.3 124.3 108.3 124.3 1 .5 1.7.7 2.7 1-73.1-11.6-132.7-64.7-154.1-134.4zM386 444.1c-14.5 4.7-36.2 8.4-64.7 3.7 0 0-91.1-23.1-127.5-107.8 38.2.7 52.4-.2 78-3.9 39.4-5.7 79-16.2 115-33 11.8-5.4 11.1-19.4 9.6-29.8-2-12.8-11.1-12.1-21.4-4.7 0 0-82 58.6-189.8 53.7-18.7-32-26.8-110.8-26.8-110.8 41.4-35.2 83.2-59.6 168.4-52.4.2-6.4 3-27.1-20.4-28.1 0 0-93.5-11.1-146 33.5 2.5-16.5 5.9-29.3 11.1-39.4 34.2-30.8 79-49.5 128.3-49.5 106.4 0 193 87.1 193 194.5-.2 76-43.8 142-106.8 174z\"]\n};\nvar faReact = {\n prefix: 'fab',\n iconName: 'react',\n icon: [512, 512, [], \"f41b\", \"M418.2 177.2c-5.4-1.8-10.8-3.5-16.2-5.1.9-3.7 1.7-7.4 2.5-11.1 12.3-59.6 4.2-107.5-23.1-123.3-26.3-15.1-69.2.6-112.6 38.4-4.3 3.7-8.5 7.6-12.5 11.5-2.7-2.6-5.5-5.2-8.3-7.7-45.5-40.4-91.1-57.4-118.4-41.5-26.2 15.2-34 60.3-23 116.7 1.1 5.6 2.3 11.1 3.7 16.7-6.4 1.8-12.7 3.8-18.6 5.9C38.3 196.2 0 225.4 0 255.6c0 31.2 40.8 62.5 96.3 81.5 4.5 1.5 9 3 13.6 4.3-1.5 6-2.8 11.9-4 18-10.5 55.5-2.3 99.5 23.9 114.6 27 15.6 72.4-.4 116.6-39.1 3.5-3.1 7-6.3 10.5-9.7 4.4 4.3 9 8.4 13.6 12.4 42.8 36.8 85.1 51.7 111.2 36.6 27-15.6 35.8-62.9 24.4-120.5-.9-4.4-1.9-8.9-3-13.5 3.2-.9 6.3-1.9 9.4-2.9 57.7-19.1 99.5-50 99.5-81.7 0-30.3-39.4-59.7-93.8-78.4zM282.9 92.3c37.2-32.4 71.9-45.1 87.7-36 16.9 9.7 23.4 48.9 12.8 100.4-.7 3.4-1.4 6.7-2.3 10-22.2-5-44.7-8.6-67.3-10.6-13-18.6-27.2-36.4-42.6-53.1 3.9-3.7 7.7-7.2 11.7-10.7zM167.2 307.5c5.1 8.7 10.3 17.4 15.8 25.9-15.6-1.7-31.1-4.2-46.4-7.5 4.4-14.4 9.9-29.3 16.3-44.5 4.6 8.8 9.3 17.5 14.3 26.1zm-30.3-120.3c14.4-3.2 29.7-5.8 45.6-7.8-5.3 8.3-10.5 16.8-15.4 25.4-4.9 8.5-9.7 17.2-14.2 26-6.3-14.9-11.6-29.5-16-43.6zm27.4 68.9c6.6-13.8 13.8-27.3 21.4-40.6s15.8-26.2 24.4-38.9c15-1.1 30.3-1.7 45.9-1.7s31 .6 45.9 1.7c8.5 12.6 16.6 25.5 24.3 38.7s14.9 26.7 21.7 40.4c-6.7 13.8-13.9 27.4-21.6 40.8-7.6 13.3-15.7 26.2-24.2 39-14.9 1.1-30.4 1.6-46.1 1.6s-30.9-.5-45.6-1.4c-8.7-12.7-16.9-25.7-24.6-39s-14.8-26.8-21.5-40.6zm180.6 51.2c5.1-8.8 9.9-17.7 14.6-26.7 6.4 14.5 12 29.2 16.9 44.3-15.5 3.5-31.2 6.2-47 8 5.4-8.4 10.5-17 15.5-25.6zm14.4-76.5c-4.7-8.8-9.5-17.6-14.5-26.2-4.9-8.5-10-16.9-15.3-25.2 16.1 2 31.5 4.7 45.9 8-4.6 14.8-10 29.2-16.1 43.4zM256.2 118.3c10.5 11.4 20.4 23.4 29.6 35.8-19.8-.9-39.7-.9-59.5 0 9.8-12.9 19.9-24.9 29.9-35.8zM140.2 57c16.8-9.8 54.1 4.2 93.4 39 2.5 2.2 5 4.6 7.6 7-15.5 16.7-29.8 34.5-42.9 53.1-22.6 2-45 5.5-67.2 10.4-1.3-5.1-2.4-10.3-3.5-15.5-9.4-48.4-3.2-84.9 12.6-94zm-24.5 263.6c-4.2-1.2-8.3-2.5-12.4-3.9-21.3-6.7-45.5-17.3-63-31.2-10.1-7-16.9-17.8-18.8-29.9 0-18.3 31.6-41.7 77.2-57.6 5.7-2 11.5-3.8 17.3-5.5 6.8 21.7 15 43 24.5 63.6-9.6 20.9-17.9 42.5-24.8 64.5zm116.6 98c-16.5 15.1-35.6 27.1-56.4 35.3-11.1 5.3-23.9 5.8-35.3 1.3-15.9-9.2-22.5-44.5-13.5-92 1.1-5.6 2.3-11.2 3.7-16.7 22.4 4.8 45 8.1 67.9 9.8 13.2 18.7 27.7 36.6 43.2 53.4-3.2 3.1-6.4 6.1-9.6 8.9zm24.5-24.3c-10.2-11-20.4-23.2-30.3-36.3 9.6.4 19.5.6 29.5.6 10.3 0 20.4-.2 30.4-.7-9.2 12.7-19.1 24.8-29.6 36.4zm130.7 30c-.9 12.2-6.9 23.6-16.5 31.3-15.9 9.2-49.8-2.8-86.4-34.2-4.2-3.6-8.4-7.5-12.7-11.5 15.3-16.9 29.4-34.8 42.2-53.6 22.9-1.9 45.7-5.4 68.2-10.5 1 4.1 1.9 8.2 2.7 12.2 4.9 21.6 5.7 44.1 2.5 66.3zm18.2-107.5c-2.8.9-5.6 1.8-8.5 2.6-7-21.8-15.6-43.1-25.5-63.8 9.6-20.4 17.7-41.4 24.5-62.9 5.2 1.5 10.2 3.1 15 4.7 46.6 16 79.3 39.8 79.3 58 0 19.6-34.9 44.9-84.8 61.4zm-149.7-15c25.3 0 45.8-20.5 45.8-45.8s-20.5-45.8-45.8-45.8c-25.3 0-45.8 20.5-45.8 45.8s20.5 45.8 45.8 45.8z\"]\n};\nvar faReacteurope = {\n prefix: 'fab',\n iconName: 'reacteurope',\n icon: [576, 512, [], \"f75d\", \"M250.6 211.74l5.8-4.1 5.8 4.1-2.1-6.8 5.7-4.3-7.1-.1-2.3-6.8-2.3 6.8-7.2.1 5.7 4.3zm63.7 0l5.8-4.1 5.8 4.1-2.1-6.8 5.7-4.3-7.2-.1-2.3-6.8-2.3 6.8-7.2.1 5.7 4.3zm-91.3 50.5h-3.4c-4.8 0-3.8 4-3.8 12.1 0 4.7-2.3 6.1-5.8 6.1s-5.8-1.4-5.8-6.1v-36.6c0-4.7 2.3-6.1 5.8-6.1s5.8 1.4 5.8 6.1c0 7.2-.7 10.5 3.8 10.5h3.4c4.7-.1 3.8-3.9 3.8-12.3 0-9.9-6.7-14.1-16.8-14.1h-.2c-10.1 0-16.8 4.2-16.8 14.1V276c0 10.4 6.7 14.1 16.8 14.1h.2c10.1 0 16.8-3.8 16.8-14.1 0-9.86 1.1-13.76-3.8-13.76zm-80.7 17.4h-14.7v-19.3H139c2.5 0 3.8-1.3 3.8-3.8v-2.1c0-2.5-1.3-3.8-3.8-3.8h-11.4v-18.3H142c2.5 0 3.8-1.3 3.8-3.8v-2.1c0-2.5-1.3-3.8-3.8-3.8h-21.7c-2.4-.1-3.7 1.3-3.7 3.8v59.1c0 2.5 1.3 3.8 3.8 3.8h21.9c2.5 0 3.8-1.3 3.8-3.8v-2.1c0-2.5-1.3-3.8-3.8-3.8zm-42-18.5c4.6-2 7.3-6 7.3-12.4v-11.9c0-10.1-6.7-14.1-16.8-14.1H77.4c-2.5 0-3.8 1.3-3.8 3.8v59.1c0 2.5 1.3 3.8 3.8 3.8h3.4c2.5 0 3.8-1.3 3.8-3.8v-22.9h5.6l7.4 23.5a4.1 4.1 0 0 0 4.3 3.2h3.3c2.8 0 4-1.8 3.2-4.4zm-3.8-14c0 4.8-2.5 6.1-6.1 6.1h-5.8v-20.9h5.8c3.6 0 6.1 1.3 6.1 6.1zM176 226a3.82 3.82 0 0 0-4.2-3.4h-6.9a3.68 3.68 0 0 0-4 3.4l-11 59.2c-.5 2.7.9 4.1 3.4 4.1h3a3.74 3.74 0 0 0 4.1-3.5l1.8-11.3h12.2l1.8 11.3a3.74 3.74 0 0 0 4.1 3.5h3.5c2.6 0 3.9-1.4 3.4-4.1zm-12.3 39.3l4.7-29.7 4.7 29.7zm89.3 20.2v-53.2h7.5c2.5 0 3.8-1.3 3.8-3.8v-2.1c0-2.5-1.3-3.8-3.8-3.8h-25.8c-2.5 0-3.8 1.3-3.8 3.8v2.1c0 2.5 1.3 3.8 3.8 3.8h7.3v53.2c0 2.5 1.3 3.8 3.8 3.8h3.4c2.5.04 3.8-1.3 3.8-3.76zm248-.8h-19.4V258h16.1a1.89 1.89 0 0 0 2-2v-.8a1.89 1.89 0 0 0-2-2h-16.1v-25.8h19.1a1.89 1.89 0 0 0 2-2v-.8a1.77 1.77 0 0 0-2-1.9h-22.2a1.62 1.62 0 0 0-2 1.8v63a1.81 1.81 0 0 0 2 1.9H501a1.81 1.81 0 0 0 2-1.9v-.8a1.84 1.84 0 0 0-2-1.96zm-93.1-62.9h-.8c-10.1 0-15.3 4.7-15.3 14.1V276c0 9.3 5.2 14.1 15.3 14.1h.8c10.1 0 15.3-4.8 15.3-14.1v-40.1c0-9.36-5.2-14.06-15.3-14.06zm10.2 52.4c-.1 8-3 11.1-10.5 11.1s-10.5-3.1-10.5-11.1v-36.6c0-7.9 3-11.1 10.5-11.1s10.5 3.2 10.5 11.1zm-46.5-14.5c6.1-1.6 9.2-6.1 9.2-13.3v-9.7c0-9.4-5.2-14.1-15.3-14.1h-13.7a1.81 1.81 0 0 0-2 1.9v63a1.81 1.81 0 0 0 2 1.9h1.2a1.74 1.74 0 0 0 1.9-1.9v-26.9h11.6l10.4 27.2a2.32 2.32 0 0 0 2.3 1.5h1.5c1.4 0 2-1 1.5-2.3zm-6.4-3.9H355v-28.5h10.2c7.5 0 10.5 3.1 10.5 11.1v6.4c0 7.84-3 11.04-10.5 11.04zm85.9-33.1h-13.7a1.62 1.62 0 0 0-2 1.8v63a1.81 1.81 0 0 0 2 1.9h1.2a1.74 1.74 0 0 0 1.9-1.9v-26.1h10.6c10.1 0 15.3-4.8 15.3-14.1v-10.5c0-9.4-5.2-14.1-15.3-14.1zm10.2 22.8c0 7.9-3 11.1-10.5 11.1h-10.2v-29.2h10.2c7.5-.1 10.5 3.1 10.5 11zM259.5 308l-2.3-6.8-2.3 6.8-7.1.1 5.7 4.3-2.1 6.8 5.8-4.1 5.8 4.1-2.1-6.8 5.7-4.3zm227.6-136.1a364.42 364.42 0 0 0-35.6-11.3c19.6-78 11.6-134.7-22.3-153.9C394.7-12.66 343.3 11 291 61.94q5.1 4.95 10.2 10.2c82.5-80 119.6-53.5 120.9-52.8 22.4 12.7 36 55.8 15.5 137.8a587.83 587.83 0 0 0-84.6-13C281.1 43.64 212.4 2 170.8 2 140 2 127 23 123.2 29.74c-18.1 32-13.3 84.2.1 133.8-70.5 20.3-120.7 54.1-120.3 95 .5 59.6 103.2 87.8 122.1 92.8-20.5 81.9-10.1 135.6 22.3 153.9 28 15.8 75.1 6 138.2-55.2q-5.1-4.95-10.2-10.2c-82.5 80-119.7 53.5-120.9 52.8-22.3-12.6-36-55.6-15.5-137.9 12.4 2.9 41.8 9.5 84.6 13 71.9 100.4 140.6 142 182.1 142 30.8 0 43.8-21 47.6-27.7 18-31.9 13.3-84.1-.1-133.8 152.3-43.8 156.2-130.2 33.9-176.3zM135.9 36.84c2.9-5.1 11.9-20.3 34.9-20.3 36.8 0 98.8 39.6 163.3 126.2a714 714 0 0 0-93.9.9 547.76 547.76 0 0 1 42.2-52.4Q277.3 86 272.2 81a598.25 598.25 0 0 0-50.7 64.2 569.69 569.69 0 0 0-84.4 14.6c-.2-1.4-24.3-82.2-1.2-123zm304.8 438.3c-2.9 5.1-11.8 20.3-34.9 20.3-36.7 0-98.7-39.4-163.3-126.2a695.38 695.38 0 0 0 93.9-.9 547.76 547.76 0 0 1-42.2 52.4q5.1 5.25 10.2 10.2a588.47 588.47 0 0 0 50.7-64.2c47.3-4.7 80.3-13.5 84.4-14.6 22.7 84.4 4.5 117 1.2 123zm9.1-138.6c-3.6-11.9-7.7-24.1-12.4-36.4a12.67 12.67 0 0 1-10.7-5.7l-.1.1a19.61 19.61 0 0 1-5.4 3.6c5.7 14.3 10.6 28.4 14.7 42.2a535.3 535.3 0 0 1-72 13c3.5-5.3 17.2-26.2 32.2-54.2a24.6 24.6 0 0 1-6-3.2c-1.1 1.2-3.6 4.2-10.9 4.2-6.2 11.2-17.4 30.9-33.9 55.2a711.91 711.91 0 0 1-112.4 1c-7.9-11.2-21.5-31.1-36.8-57.8a21 21 0 0 1-3-1.5c-1.9 1.6-3.9 3.2-12.6 3.2 6.3 11.2 17.5 30.7 33.8 54.6a548.81 548.81 0 0 1-72.2-11.7q5.85-21 14.1-42.9c-3.2 0-5.4.2-8.4-1a17.58 17.58 0 0 1-6.9 1c-4.9 13.4-9.1 26.5-12.7 39.4C-31.7 297-12.1 216 126.7 175.64c3.6 11.9 7.7 24.1 12.4 36.4 10.4 0 12.9 3.4 14.4 5.3a12 12 0 0 1 2.3-2.2c-5.8-14.7-10.9-29.2-15.2-43.3 7-1.8 32.4-8.4 72-13-15.9 24.3-26.7 43.9-32.8 55.3a14.22 14.22 0 0 1 6.4 8 23.42 23.42 0 0 1 10.2-8.4c6.5-11.7 17.9-31.9 34.8-56.9a711.72 711.72 0 0 1 112.4-1c31.5 44.6 28.9 48.1 42.5 64.5a21.42 21.42 0 0 1 10.4-7.4c-6.4-11.4-17.6-31-34.3-55.5 40.4 4.1 65 10 72.2 11.7-4 14.4-8.9 29.2-14.6 44.2a20.74 20.74 0 0 1 6.8 4.3l.1.1a12.72 12.72 0 0 1 8.9-5.6c4.9-13.4 9.2-26.6 12.8-39.5a359.71 359.71 0 0 1 34.5 11c106.1 39.9 74 87.9 72.6 90.4-19.8 35.1-80.1 55.2-105.7 62.5zm-114.4-114h-1.2a1.74 1.74 0 0 0-1.9 1.9v49.8c0 7.9-2.6 11.1-10.1 11.1s-10.1-3.1-10.1-11.1v-49.8a1.69 1.69 0 0 0-1.9-1.9H309a1.81 1.81 0 0 0-2 1.9v51.5c0 9.6 5 14.1 15.1 14.1h.4c10.1 0 15.1-4.6 15.1-14.1v-51.5a2 2 0 0 0-2.2-1.9zM321.7 308l-2.3-6.8-2.3 6.8-7.1.1 5.7 4.3-2.1 6.8 5.8-4.1 5.8 4.1-2.1-6.8 5.7-4.3zm-31.1 7.4l-2.3-6.8-2.3 6.8-7.1.1 5.7 4.3-2.1 6.8 5.8-4.1 5.8 4.1-2.1-6.8 5.7-4.3zm5.1-30.8h-19.4v-26.7h16.1a1.89 1.89 0 0 0 2-2v-.8a1.89 1.89 0 0 0-2-2h-16.1v-25.8h19.1a1.89 1.89 0 0 0 2-2v-.8a1.77 1.77 0 0 0-2-1.9h-22.2a1.81 1.81 0 0 0-2 1.9v63a1.81 1.81 0 0 0 2 1.9h22.5a1.77 1.77 0 0 0 2-1.9v-.8a1.83 1.83 0 0 0-2-2.06zm-7.4-99.4L286 192l-7.1.1 5.7 4.3-2.1 6.8 5.8-4.1 5.8 4.1-2.1-6.8 5.7-4.3-7.1-.1z\"]\n};\nvar faReadme = {\n prefix: 'fab',\n iconName: 'readme',\n icon: [576, 512, [], \"f4d5\", \"M528.3 46.5H388.5c-48.1 0-89.9 33.3-100.4 80.3-10.6-47-52.3-80.3-100.4-80.3H48c-26.5 0-48 21.5-48 48v245.8c0 26.5 21.5 48 48 48h89.7c102.2 0 132.7 24.4 147.3 75 .7 2.8 5.2 2.8 6 0 14.7-50.6 45.2-75 147.3-75H528c26.5 0 48-21.5 48-48V94.6c0-26.4-21.3-47.9-47.7-48.1zM242 311.9c0 1.9-1.5 3.5-3.5 3.5H78.2c-1.9 0-3.5-1.5-3.5-3.5V289c0-1.9 1.5-3.5 3.5-3.5h160.4c1.9 0 3.5 1.5 3.5 3.5v22.9zm0-60.9c0 1.9-1.5 3.5-3.5 3.5H78.2c-1.9 0-3.5-1.5-3.5-3.5v-22.9c0-1.9 1.5-3.5 3.5-3.5h160.4c1.9 0 3.5 1.5 3.5 3.5V251zm0-60.9c0 1.9-1.5 3.5-3.5 3.5H78.2c-1.9 0-3.5-1.5-3.5-3.5v-22.9c0-1.9 1.5-3.5 3.5-3.5h160.4c1.9 0 3.5 1.5 3.5 3.5v22.9zm259.3 121.7c0 1.9-1.5 3.5-3.5 3.5H337.5c-1.9 0-3.5-1.5-3.5-3.5v-22.9c0-1.9 1.5-3.5 3.5-3.5h160.4c1.9 0 3.5 1.5 3.5 3.5v22.9zm0-60.9c0 1.9-1.5 3.5-3.5 3.5H337.5c-1.9 0-3.5-1.5-3.5-3.5V228c0-1.9 1.5-3.5 3.5-3.5h160.4c1.9 0 3.5 1.5 3.5 3.5v22.9zm0-60.9c0 1.9-1.5 3.5-3.5 3.5H337.5c-1.9 0-3.5-1.5-3.5-3.5v-22.8c0-1.9 1.5-3.5 3.5-3.5h160.4c1.9 0 3.5 1.5 3.5 3.5V190z\"]\n};\nvar faRebel = {\n prefix: 'fab',\n iconName: 'rebel',\n icon: [512, 512, [], \"f1d0\", \"M256.5 504C117.2 504 9 387.8 13.2 249.9 16 170.7 56.4 97.7 129.7 49.5c.3 0 1.9-.6 1.1.8-5.8 5.5-111.3 129.8-14.1 226.4 49.8 49.5 90 2.5 90 2.5 38.5-50.1-.6-125.9-.6-125.9-10-24.9-45.7-40.1-45.7-40.1l28.8-31.8c24.4 10.5 43.2 38.7 43.2 38.7.8-29.6-21.9-61.4-21.9-61.4L255.1 8l44.3 50.1c-20.5 28.8-21.9 62.6-21.9 62.6 13.8-23 43.5-39.3 43.5-39.3l28.5 31.8c-27.4 8.9-45.4 39.9-45.4 39.9-15.8 28.5-27.1 89.4.6 127.3 32.4 44.6 87.7-2.8 87.7-2.8 102.7-91.9-10.5-225-10.5-225-6.1-5.5.8-2.8.8-2.8 50.1 36.5 114.6 84.4 116.2 204.8C500.9 400.2 399 504 256.5 504z\"]\n};\nvar faRedRiver = {\n prefix: 'fab',\n iconName: 'red-river',\n icon: [448, 512, [], \"f3e3\", \"M353.2 32H94.8C42.4 32 0 74.4 0 126.8v258.4C0 437.6 42.4 480 94.8 480h258.4c52.4 0 94.8-42.4 94.8-94.8V126.8c0-52.4-42.4-94.8-94.8-94.8zM144.9 200.9v56.3c0 27-21.9 48.9-48.9 48.9V151.9c0-13.2 10.7-23.9 23.9-23.9h154.2c0 27-21.9 48.9-48.9 48.9h-56.3c-12.3-.6-24.6 11.6-24 24zm176.3 72h-56.3c-12.3-.6-24.6 11.6-24 24v56.3c0 27-21.9 48.9-48.9 48.9V247.9c0-13.2 10.7-23.9 23.9-23.9h154.2c0 27-21.9 48.9-48.9 48.9z\"]\n};\nvar faReddit = {\n prefix: 'fab',\n iconName: 'reddit',\n icon: [512, 512, [], \"f1a1\", \"M201.5 305.5c-13.8 0-24.9-11.1-24.9-24.6 0-13.8 11.1-24.9 24.9-24.9 13.6 0 24.6 11.1 24.6 24.9 0 13.6-11.1 24.6-24.6 24.6zM504 256c0 137-111 248-248 248S8 393 8 256 119 8 256 8s248 111 248 248zm-132.3-41.2c-9.4 0-17.7 3.9-23.8 10-22.4-15.5-52.6-25.5-86.1-26.6l17.4-78.3 55.4 12.5c0 13.6 11.1 24.6 24.6 24.6 13.8 0 24.9-11.3 24.9-24.9s-11.1-24.9-24.9-24.9c-9.7 0-18 5.8-22.1 13.8l-61.2-13.6c-3-.8-6.1 1.4-6.9 4.4l-19.1 86.4c-33.2 1.4-63.1 11.3-85.5 26.8-6.1-6.4-14.7-10.2-24.1-10.2-34.9 0-46.3 46.9-14.4 62.8-1.1 5-1.7 10.2-1.7 15.5 0 52.6 59.2 95.2 132 95.2 73.1 0 132.3-42.6 132.3-95.2 0-5.3-.6-10.8-1.9-15.8 31.3-16 19.8-62.5-14.9-62.5zM302.8 331c-18.2 18.2-76.1 17.9-93.6 0-2.2-2.2-6.1-2.2-8.3 0-2.5 2.5-2.5 6.4 0 8.6 22.8 22.8 87.3 22.8 110.2 0 2.5-2.2 2.5-6.1 0-8.6-2.2-2.2-6.1-2.2-8.3 0zm7.7-75c-13.6 0-24.6 11.1-24.6 24.9 0 13.6 11.1 24.6 24.6 24.6 13.8 0 24.9-11.1 24.9-24.6 0-13.8-11-24.9-24.9-24.9z\"]\n};\nvar faRedditAlien = {\n prefix: 'fab',\n iconName: 'reddit-alien',\n icon: [512, 512, [], \"f281\", \"M440.3 203.5c-15 0-28.2 6.2-37.9 15.9-35.7-24.7-83.8-40.6-137.1-42.3L293 52.3l88.2 19.8c0 21.6 17.6 39.2 39.2 39.2 22 0 39.7-18.1 39.7-39.7s-17.6-39.7-39.7-39.7c-15.4 0-28.7 9.3-35.3 22l-97.4-21.6c-4.9-1.3-9.7 2.2-11 7.1L246.3 177c-52.9 2.2-100.5 18.1-136.3 42.8-9.7-10.1-23.4-16.3-38.4-16.3-55.6 0-73.8 74.6-22.9 100.1-1.8 7.9-2.6 16.3-2.6 24.7 0 83.8 94.4 151.7 210.3 151.7 116.4 0 210.8-67.9 210.8-151.7 0-8.4-.9-17.2-3.1-25.1 49.9-25.6 31.5-99.7-23.8-99.7zM129.4 308.9c0-22 17.6-39.7 39.7-39.7 21.6 0 39.2 17.6 39.2 39.7 0 21.6-17.6 39.2-39.2 39.2-22 .1-39.7-17.6-39.7-39.2zm214.3 93.5c-36.4 36.4-139.1 36.4-175.5 0-4-3.5-4-9.7 0-13.7 3.5-3.5 9.7-3.5 13.2 0 27.8 28.5 120 29 149 0 3.5-3.5 9.7-3.5 13.2 0 4.1 4 4.1 10.2.1 13.7zm-.8-54.2c-21.6 0-39.2-17.6-39.2-39.2 0-22 17.6-39.7 39.2-39.7 22 0 39.7 17.6 39.7 39.7-.1 21.5-17.7 39.2-39.7 39.2z\"]\n};\nvar faRedditSquare = {\n prefix: 'fab',\n iconName: 'reddit-square',\n icon: [448, 512, [], \"f1a2\", \"M283.2 345.5c2.7 2.7 2.7 6.8 0 9.2-24.5 24.5-93.8 24.6-118.4 0-2.7-2.4-2.7-6.5 0-9.2 2.4-2.4 6.5-2.4 8.9 0 18.7 19.2 81 19.6 100.5 0 2.4-2.3 6.6-2.3 9 0zm-91.3-53.8c0-14.9-11.9-26.8-26.5-26.8-14.9 0-26.8 11.9-26.8 26.8 0 14.6 11.9 26.5 26.8 26.5 14.6 0 26.5-11.9 26.5-26.5zm90.7-26.8c-14.6 0-26.5 11.9-26.5 26.8 0 14.6 11.9 26.5 26.5 26.5 14.9 0 26.8-11.9 26.8-26.5 0-14.9-11.9-26.8-26.8-26.8zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-99.7 140.6c-10.1 0-19 4.2-25.6 10.7-24.1-16.7-56.5-27.4-92.5-28.6l18.7-84.2 59.5 13.4c0 14.6 11.9 26.5 26.5 26.5 14.9 0 26.8-12.2 26.8-26.8 0-14.6-11.9-26.8-26.8-26.8-10.4 0-19.3 6.2-23.8 14.9l-65.7-14.6c-3.3-.9-6.5 1.5-7.4 4.8l-20.5 92.8c-35.7 1.5-67.8 12.2-91.9 28.9-6.5-6.8-15.8-11-25.9-11-37.5 0-49.8 50.4-15.5 67.5-1.2 5.4-1.8 11-1.8 16.7 0 56.5 63.7 102.3 141.9 102.3 78.5 0 142.2-45.8 142.2-102.3 0-5.7-.6-11.6-2.1-17 33.6-17.2 21.2-67.2-16.1-67.2z\"]\n};\nvar faRedhat = {\n prefix: 'fab',\n iconName: 'redhat',\n icon: [512, 512, [], \"f7bc\", \"M341.52 285.56c33.65 0 82.34-6.94 82.34-47 .22-6.74.86-1.82-20.88-96.24-4.62-19.15-8.68-27.84-42.31-44.65-26.09-13.34-82.92-35.37-99.73-35.37-15.66 0-20.2 20.17-38.87 20.17-18 0-31.31-15.06-48.12-15.06-16.14 0-26.66 11-34.78 33.62-27.5 77.55-26.28 74.27-26.12 78.27 0 24.8 97.64 106.11 228.47 106.11M429 254.84c4.65 22 4.65 24.35 4.65 27.25 0 37.66-42.33 58.56-98 58.56-125.74.08-235.91-73.65-235.91-122.33a49.55 49.55 0 0 1 4.06-19.72C58.56 200.86 0 208.93 0 260.63c0 84.67 200.63 189 359.49 189 121.79 0 152.51-55.08 152.51-98.58 0-34.21-29.59-73.05-82.93-96.24\"]\n};\nvar faRenren = {\n prefix: 'fab',\n iconName: 'renren',\n icon: [512, 512, [], \"f18b\", \"M214 169.1c0 110.4-61 205.4-147.6 247.4C30 373.2 8 317.7 8 256.6 8 133.9 97.1 32.2 214 12.5v156.6zM255 504c-42.9 0-83.3-11-118.5-30.4C193.7 437.5 239.9 382.9 255 319c15.5 63.9 61.7 118.5 118.8 154.7C338.7 493 298.3 504 255 504zm190.6-87.5C359 374.5 298 279.6 298 169.1V12.5c116.9 19.7 206 121.4 206 244.1 0 61.1-22 116.6-58.4 159.9z\"]\n};\nvar faReplyd = {\n prefix: 'fab',\n iconName: 'replyd',\n icon: [448, 512, [], \"f3e6\", \"M320 480H128C57.6 480 0 422.4 0 352V160C0 89.6 57.6 32 128 32h192c70.4 0 128 57.6 128 128v192c0 70.4-57.6 128-128 128zM193.4 273.2c-6.1-2-11.6-3.1-16.4-3.1-7.2 0-13.5 1.9-18.9 5.6-5.4 3.7-9.6 9-12.8 15.8h-1.1l-4.2-18.3h-28v138.9h36.1v-89.7c1.5-5.4 4.4-9.8 8.7-13.2 4.3-3.4 9.8-5.1 16.2-5.1 4.6 0 9.8 1 15.6 3.1l4.8-34zm115.2 103.4c-3.2 2.4-7.7 4.8-13.7 7.1-6 2.3-12.8 3.5-20.4 3.5-12.2 0-21.1-3-26.5-8.9-5.5-5.9-8.5-14.7-9-26.4h83.3c.9-4.8 1.6-9.4 2.1-13.9.5-4.4.7-8.6.7-12.5 0-10.7-1.6-19.7-4.7-26.9-3.2-7.2-7.3-13-12.5-17.2-5.2-4.3-11.1-7.3-17.8-9.2-6.7-1.8-13.5-2.8-20.6-2.8-21.1 0-37.5 6.1-49.2 18.3s-17.5 30.5-17.5 55c0 22.8 5.2 40.7 15.6 53.7 10.4 13.1 26.8 19.6 49.2 19.6 10.7 0 20.9-1.5 30.4-4.6 9.5-3.1 17.1-6.8 22.6-11.2l-12-23.6zm-21.8-70.3c3.8 5.4 5.3 13.1 4.6 23.1h-51.7c.9-9.4 3.7-17 8.2-22.6 4.5-5.6 11.5-8.5 21-8.5 8.2-.1 14.1 2.6 17.9 8zm79.9 2.5c4.1 3.9 9.4 5.8 16.1 5.8 7 0 12.6-1.9 16.7-5.8s6.1-9.1 6.1-15.6-2-11.6-6.1-15.4c-4.1-3.8-9.6-5.7-16.7-5.7-6.7 0-12 1.9-16.1 5.7-4.1 3.8-6.1 8.9-6.1 15.4s2 11.7 6.1 15.6zm0 100.5c4.1 3.9 9.4 5.8 16.1 5.8 7 0 12.6-1.9 16.7-5.8s6.1-9.1 6.1-15.6-2-11.6-6.1-15.4c-4.1-3.8-9.6-5.7-16.7-5.7-6.7 0-12 1.9-16.1 5.7-4.1 3.8-6.1 8.9-6.1 15.4 0 6.6 2 11.7 6.1 15.6z\"]\n};\nvar faResearchgate = {\n prefix: 'fab',\n iconName: 'researchgate',\n icon: [448, 512, [], \"f4f8\", \"M0 32v448h448V32H0zm262.2 334.4c-6.6 3-33.2 6-50-14.2-9.2-10.6-25.3-33.3-42.2-63.6-8.9 0-14.7 0-21.4-.6v46.4c0 23.5 6 21.2 25.8 23.9v8.1c-6.9-.3-23.1-.8-35.6-.8-13.1 0-26.1.6-33.6.8v-8.1c15.5-2.9 22-1.3 22-23.9V225c0-22.6-6.4-21-22-23.9V193c25.8 1 53.1-.6 70.9-.6 31.7 0 55.9 14.4 55.9 45.6 0 21.1-16.7 42.2-39.2 47.5 13.6 24.2 30 45.6 42.2 58.9 7.2 7.8 17.2 14.7 27.2 14.7v7.3zm22.9-135c-23.3 0-32.2-15.7-32.2-32.2V167c0-12.2 8.8-30.4 34-30.4s30.4 17.9 30.4 17.9l-10.7 7.2s-5.5-12.5-19.7-12.5c-7.9 0-19.7 7.3-19.7 19.7v26.8c0 13.4 6.6 23.3 17.9 23.3 14.1 0 21.5-10.9 21.5-26.8h-17.9v-10.7h30.4c0 20.5 4.7 49.9-34 49.9zm-116.5 44.7c-9.4 0-13.6-.3-20-.8v-69.7c6.4-.6 15-.6 22.5-.6 23.3 0 37.2 12.2 37.2 34.5 0 21.9-15 36.6-39.7 36.6z\"]\n};\nvar faResolving = {\n prefix: 'fab',\n iconName: 'resolving',\n icon: [496, 512, [], \"f3e7\", \"M281.2 278.2c46-13.3 49.6-23.5 44-43.4L314 195.5c-6.1-20.9-18.4-28.1-71.1-12.8L54.7 236.8l28.6 98.6 197.9-57.2zM248.5 8C131.4 8 33.2 88.7 7.2 197.5l221.9-63.9c34.8-10.2 54.2-11.7 79.3-8.2 36.3 6.1 52.7 25 61.4 55.2l10.7 37.8c8.2 28.1 1 50.6-23.5 73.6-19.4 17.4-31.2 24.5-61.4 33.2L203 351.8l220.4 27.1 9.7 34.2-48.1 13.3-286.8-37.3 23 80.2c36.8 22 80.3 34.7 126.3 34.7 137 0 248.5-111.4 248.5-248.3C497 119.4 385.5 8 248.5 8zM38.3 388.6L0 256.8c0 48.5 14.3 93.4 38.3 131.8z\"]\n};\nvar faRev = {\n prefix: 'fab',\n iconName: 'rev',\n icon: [448, 512, [], \"f5b2\", \"M289.67 274.89a65.57 65.57 0 1 1-65.56-65.56 65.64 65.64 0 0 1 65.56 65.56zm139.55-5.05h-.13a204.69 204.69 0 0 0-74.32-153l-45.38 26.2a157.07 157.07 0 0 1 71.81 131.84C381.2 361.5 310.73 432 224.11 432S67 361.5 67 274.88c0-81.88 63-149.27 143-156.43v39.12l108.77-62.79L210 32v38.32c-106.7 7.25-191 96-191 204.57 0 111.59 89.12 202.29 200.06 205v.11h210.16V269.84z\"]\n};\nvar faRocketchat = {\n prefix: 'fab',\n iconName: 'rocketchat',\n icon: [576, 512, [], \"f3e8\", \"M486.41 107.57c-76.93-50.83-179.18-62.4-264.12-47.07C127.26-31.16 20.77 11 0 23.12c0 0 73.08 62.1 61.21 116.49-86.52 88.2-45.39 186.4 0 232.77C73.08 426.77 0 488.87 0 488.87c20.57 12.16 126.77 54.19 222.29-37 84.75 15.23 187 3.76 264.12-47.16 119.26-76.14 119.65-220.61 0-297.15zM294.18 404.22a339.53 339.53 0 0 1-88.11-11.37l-19.77 19.09a179.74 179.74 0 0 1-36.59 27.39A143.14 143.14 0 0 1 98 454.06c1-1.78 1.88-3.56 2.77-5.24q29.67-55 16-98.69c-32.53-25.61-52-58.34-52-94.13 0-82 102.74-148.43 229.41-148.43S523.59 174 523.59 256 420.85 404.22 294.18 404.22zM184.12 291.3a34.32 34.32 0 0 1-34.8-33.72c-.7-45.39 67.83-46.38 68.52-1.09v.51a34 34 0 0 1-33.72 34.32zm73.77-33.72c-.79-45.39 67.74-46.48 68.53-1.19v.61c.39 45.08-67.74 45.57-68.53.58zm143.38 33.72a34.33 34.33 0 0 1-34.81-33.72c-.69-45.39 67.84-46.38 68.53-1.09v.51a33.89 33.89 0 0 1-33.72 34.32z\"]\n};\nvar faRockrms = {\n prefix: 'fab',\n iconName: 'rockrms',\n icon: [496, 512, [], \"f3e9\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm157.4 419.5h-90l-112-131.3c-17.9-20.4-3.9-56.1 26.6-56.1h75.3l-84.6-99.3-84.3 98.9h-90L193.5 67.2c14.4-18.4 41.3-17.3 54.5 0l157.7 185.1c19 22.8 2 57.2-27.6 56.1-.6 0-74.2.2-74.2.2l101.5 118.9z\"]\n};\nvar faSafari = {\n prefix: 'fab',\n iconName: 'safari',\n icon: [512, 512, [], \"f267\", \"M274.69,274.69l-37.38-37.38L166,346ZM256,8C119,8,8,119,8,256S119,504,256,504,504,393,504,256,393,8,256,8ZM411.85,182.79l14.78-6.13A8,8,0,0,1,437.08,181h0a8,8,0,0,1-4.33,10.46L418,197.57a8,8,0,0,1-10.45-4.33h0A8,8,0,0,1,411.85,182.79ZM314.43,94l6.12-14.78A8,8,0,0,1,331,74.92h0a8,8,0,0,1,4.33,10.45l-6.13,14.78a8,8,0,0,1-10.45,4.33h0A8,8,0,0,1,314.43,94ZM256,60h0a8,8,0,0,1,8,8V84a8,8,0,0,1-8,8h0a8,8,0,0,1-8-8V68A8,8,0,0,1,256,60ZM181,74.92a8,8,0,0,1,10.46,4.33L197.57,94a8,8,0,1,1-14.78,6.12l-6.13-14.78A8,8,0,0,1,181,74.92Zm-63.58,42.49h0a8,8,0,0,1,11.31,0L140,128.72A8,8,0,0,1,140,140h0a8,8,0,0,1-11.31,0l-11.31-11.31A8,8,0,0,1,117.41,117.41ZM60,256h0a8,8,0,0,1,8-8H84a8,8,0,0,1,8,8h0a8,8,0,0,1-8,8H68A8,8,0,0,1,60,256Zm40.15,73.21-14.78,6.13A8,8,0,0,1,74.92,331h0a8,8,0,0,1,4.33-10.46L94,314.43a8,8,0,0,1,10.45,4.33h0A8,8,0,0,1,100.15,329.21Zm4.33-136h0A8,8,0,0,1,94,197.57l-14.78-6.12A8,8,0,0,1,74.92,181h0a8,8,0,0,1,10.45-4.33l14.78,6.13A8,8,0,0,1,104.48,193.24ZM197.57,418l-6.12,14.78a8,8,0,0,1-14.79-6.12l6.13-14.78A8,8,0,1,1,197.57,418ZM264,444a8,8,0,0,1-8,8h0a8,8,0,0,1-8-8V428a8,8,0,0,1,8-8h0a8,8,0,0,1,8,8Zm67-6.92h0a8,8,0,0,1-10.46-4.33L314.43,418a8,8,0,0,1,4.33-10.45h0a8,8,0,0,1,10.45,4.33l6.13,14.78A8,8,0,0,1,331,437.08Zm63.58-42.49h0a8,8,0,0,1-11.31,0L372,383.28A8,8,0,0,1,372,372h0a8,8,0,0,1,11.31,0l11.31,11.31A8,8,0,0,1,394.59,394.59ZM286.25,286.25,110.34,401.66,225.75,225.75,401.66,110.34ZM437.08,331h0a8,8,0,0,1-10.45,4.33l-14.78-6.13a8,8,0,0,1-4.33-10.45h0A8,8,0,0,1,418,314.43l14.78,6.12A8,8,0,0,1,437.08,331ZM444,264H428a8,8,0,0,1-8-8h0a8,8,0,0,1,8-8h16a8,8,0,0,1,8,8h0A8,8,0,0,1,444,264Z\"]\n};\nvar faSalesforce = {\n prefix: 'fab',\n iconName: 'salesforce',\n icon: [640, 512, [], \"f83b\", \"M248.89 245.64h-26.35c.69-5.16 3.32-14.12 13.64-14.12 6.75 0 11.97 3.82 12.71 14.12zm136.66-13.88c-.47 0-14.11-1.77-14.11 20s13.63 20 14.11 20c13 0 14.11-13.54 14.11-20 0-21.76-13.66-20-14.11-20zm-243.22 23.76a8.63 8.63 0 0 0-3.29 7.29c0 4.78 2.08 6.05 3.29 7.05 4.7 3.7 15.07 2.12 20.93.95v-16.94c-5.32-1.07-16.73-1.96-20.93 1.65zM640 232c0 87.58-80 154.39-165.36 136.43-18.37 33-70.73 70.75-132.2 41.63-41.16 96.05-177.89 92.18-213.81-5.17C8.91 428.78-50.19 266.52 53.36 205.61 18.61 126.18 76 32 167.67 32a124.24 124.24 0 0 1 98.56 48.7c20.7-21.4 49.4-34.81 81.15-34.81 42.34 0 79 23.52 98.8 58.57C539 63.78 640 132.69 640 232zm-519.55 31.8c0-11.76-11.69-15.17-17.87-17.17-5.27-2.11-13.41-3.51-13.41-8.94 0-9.46 17-6.66 25.17-2.12 0 0 1.17.71 1.64-.47.24-.7 2.36-6.58 2.59-7.29a1.13 1.13 0 0 0-.7-1.41c-12.33-7.63-40.7-8.51-40.7 12.7 0 12.46 11.49 15.44 17.88 17.17 4.72 1.58 13.17 3 13.17 8.7 0 4-3.53 7.06-9.17 7.06a31.76 31.76 0 0 1-19-6.35c-.47-.23-1.42-.71-1.65.71l-2.4 7.47c-.47.94.23 1.18.23 1.41 1.75 1.4 10.3 6.59 22.82 6.59 13.17 0 21.4-7.06 21.4-18.11zm32-42.58c-10.13 0-18.66 3.17-21.4 5.18a1 1 0 0 0-.24 1.41l2.59 7.06a1 1 0 0 0 1.18.7c.65 0 6.8-4 16.93-4 4 0 7.06.71 9.18 2.36 3.6 2.8 3.06 8.29 3.06 10.58-4.79-.3-19.11-3.44-29.41 3.76a16.92 16.92 0 0 0-7.34 14.54c0 5.9 1.51 10.4 6.59 14.35 12.24 8.16 36.28 2 38.1 1.41 1.58-.32 3.53-.66 3.53-1.88v-33.88c.04-4.61.32-21.64-22.78-21.64zM199 200.24a1.11 1.11 0 0 0-1.18-1.18H188a1.11 1.11 0 0 0-1.17 1.18v79a1.11 1.11 0 0 0 1.17 1.18h9.88a1.11 1.11 0 0 0 1.18-1.18zm55.75 28.93c-2.1-2.31-6.79-7.53-17.65-7.53-3.51 0-14.16.23-20.7 8.94-6.35 7.63-6.58 18.11-6.58 21.41 0 3.12.15 14.26 7.06 21.17 2.64 2.91 9.06 8.23 22.81 8.23 10.82 0 16.47-2.35 18.58-3.76.47-.24.71-.71.24-1.88l-2.35-6.83a1.26 1.26 0 0 0-1.41-.7c-2.59.94-6.35 2.82-15.29 2.82-17.42 0-16.85-14.74-16.94-16.7h37.17a1.23 1.23 0 0 0 1.17-.94c-.29 0 2.07-14.7-6.09-24.23zm36.69 52.69c13.17 0 21.41-7.06 21.41-18.11 0-11.76-11.7-15.17-17.88-17.17-4.14-1.66-13.41-3.38-13.41-8.94 0-3.76 3.29-6.35 8.47-6.35a38.11 38.11 0 0 1 16.7 4.23s1.18.71 1.65-.47c.23-.7 2.35-6.58 2.58-7.29a1.13 1.13 0 0 0-.7-1.41c-7.91-4.9-16.74-4.94-20.23-4.94-12 0-20.46 7.29-20.46 17.64 0 12.46 11.48 15.44 17.87 17.17 6.11 2 13.17 3.26 13.17 8.7 0 4-3.52 7.06-9.17 7.06a31.8 31.8 0 0 1-19-6.35 1 1 0 0 0-1.65.71l-2.35 7.52c-.47.94.23 1.18.23 1.41 1.72 1.4 10.33 6.59 22.79 6.59zM357.09 224c0-.71-.24-1.18-1.18-1.18h-11.76c0-.14.94-8.94 4.47-12.47 4.16-4.15 11.76-1.64 12-1.64 1.17.47 1.41 0 1.64-.47l2.83-7.77c.7-.94 0-1.17-.24-1.41-5.09-2-17.35-2.87-24.46 4.24-5.48 5.48-7 13.92-8 19.52h-8.47a1.28 1.28 0 0 0-1.17 1.18l-1.42 7.76c0 .7.24 1.17 1.18 1.17h8.23c-8.51 47.9-8.75 50.21-10.35 55.52-1.08 3.62-3.29 6.9-5.88 7.76-.09 0-3.88 1.68-9.64-.24 0 0-.94-.47-1.41.71-.24.71-2.59 6.82-2.83 7.53s0 1.41.47 1.41c5.11 2 13 1.77 17.88 0 6.28-2.28 9.72-7.89 11.53-12.94 2.75-7.71 2.81-9.79 11.76-59.74h12.23a1.29 1.29 0 0 0 1.18-1.18zm53.39 16c-.56-1.68-5.1-18.11-25.17-18.11-15.25 0-23 10-25.16 18.11-1 3-3.18 14 0 23.52.09.3 4.41 18.12 25.16 18.12 14.95 0 22.9-9.61 25.17-18.12 3.21-9.61 1.01-20.52 0-23.52zm45.4-16.7c-5-1.65-16.62-1.9-22.11 5.41v-4.47a1.11 1.11 0 0 0-1.18-1.17h-9.4a1.11 1.11 0 0 0-1.18 1.17v55.28a1.12 1.12 0 0 0 1.18 1.18h9.64a1.12 1.12 0 0 0 1.18-1.18v-27.77c0-2.91.05-11.37 4.46-15.05 4.9-4.9 12-3.36 13.41-3.06a1.57 1.57 0 0 0 1.41-.94 74 74 0 0 0 3.06-8 1.16 1.16 0 0 0-.47-1.41zm46.81 54.1l-2.12-7.29c-.47-1.18-1.41-.71-1.41-.71-4.23 1.82-10.15 1.89-11.29 1.89-4.64 0-17.17-1.13-17.17-19.76 0-6.23 1.85-19.76 16.47-19.76a34.85 34.85 0 0 1 11.52 1.65s.94.47 1.18-.71c.94-2.59 1.64-4.47 2.59-7.53.23-.94-.47-1.17-.71-1.17-11.59-3.87-22.34-2.53-27.76 0-1.59.74-16.23 6.49-16.23 27.52 0 2.9-.58 30.11 28.94 30.11a44.45 44.45 0 0 0 15.52-2.83 1.3 1.3 0 0 0 .47-1.42zm53.87-39.52c-.8-3-5.37-16.23-22.35-16.23-16 0-23.52 10.11-25.64 18.59a38.58 38.58 0 0 0-1.65 11.76c0 25.87 18.84 29.4 29.88 29.4 10.82 0 16.46-2.35 18.58-3.76.47-.24.71-.71.24-1.88l-2.36-6.83a1.26 1.26 0 0 0-1.41-.7c-2.59.94-6.35 2.82-15.29 2.82-17.42 0-16.85-14.74-16.93-16.7h37.16a1.25 1.25 0 0 0 1.18-.94c-.24-.01.94-7.07-1.41-15.54zm-23.29-6.35c-10.33 0-13 9-13.64 14.12H546c-.88-11.92-7.62-14.13-12.73-14.13z\"]\n};\nvar faSass = {\n prefix: 'fab',\n iconName: 'sass',\n icon: [640, 512, [], \"f41e\", \"M301.84 378.92c-.3.6-.6 1.08 0 0zm249.13-87a131.16 131.16 0 0 0-58 13.5c-5.9-11.9-12-22.3-13-30.1-1.2-9.1-2.5-14.5-1.1-25.3s7.7-26.1 7.6-27.2-1.4-6.6-14.3-6.7-24 2.5-25.29 5.9a122.83 122.83 0 0 0-5.3 19.1c-2.3 11.7-25.79 53.5-39.09 75.3-4.4-8.5-8.1-16-8.9-22-1.2-9.1-2.5-14.5-1.1-25.3s7.7-26.1 7.6-27.2-1.4-6.6-14.29-6.7-24 2.5-25.3 5.9-2.7 11.4-5.3 19.1-33.89 77.3-42.08 95.4c-4.2 9.2-7.8 16.6-10.4 21.6-.4.8-.7 1.3-.9 1.7.3-.5.5-1 .5-.8-2.2 4.3-3.5 6.7-3.5 6.7v.1c-1.7 3.2-3.6 6.1-4.5 6.1-.6 0-1.9-8.4.3-19.9 4.7-24.2 15.8-61.8 15.7-63.1-.1-.7 2.1-7.2-7.3-10.7-9.1-3.3-12.4 2.2-13.2 2.2s-1.4 2-1.4 2 10.1-42.4-19.39-42.4c-18.4 0-44 20.2-56.58 38.5-7.9 4.3-25 13.6-43 23.5-6.9 3.8-14 7.7-20.7 11.4-.5-.5-.9-1-1.4-1.5-35.79-38.2-101.87-65.2-99.07-116.5 1-18.7 7.5-67.8 127.07-127.4 98-48.8 176.35-35.4 189.84-5.6 19.4 42.5-41.89 121.6-143.66 133-38.79 4.3-59.18-10.7-64.28-16.3-5.3-5.9-6.1-6.2-8.1-5.1-3.3 1.8-1.2 7 0 10.1 3 7.9 15.5 21.9 36.79 28.9 18.7 6.1 64.18 9.5 119.17-11.8 61.78-23.8 109.87-90.1 95.77-145.6C386.52 18.32 293-.18 204.57 31.22c-52.69 18.7-109.67 48.1-150.66 86.4-48.69 45.6-56.48 85.3-53.28 101.9 11.39 58.9 92.57 97.3 125.06 125.7-1.6.9-3.1 1.7-4.5 2.5-16.29 8.1-78.18 40.5-93.67 74.7-17.5 38.8 2.9 66.6 16.29 70.4 41.79 11.6 84.58-9.3 107.57-43.6s20.2-79.1 9.6-99.5c-.1-.3-.3-.5-.4-.8 4.2-2.5 8.5-5 12.8-7.5 8.29-4.9 16.39-9.4 23.49-13.3-4 10.8-6.9 23.8-8.4 42.6-1.8 22 7.3 50.5 19.1 61.7 5.2 4.9 11.49 5 15.39 5 13.8 0 20-11.4 26.89-25 8.5-16.6 16-35.9 16-35.9s-9.4 52.2 16.3 52.2c9.39 0 18.79-12.1 23-18.3v.1s.2-.4.7-1.2c1-1.5 1.5-2.4 1.5-2.4v-.3c3.8-6.5 12.1-21.4 24.59-46 16.2-31.8 31.69-71.5 31.69-71.5a201.24 201.24 0 0 0 6.2 25.8c2.8 9.5 8.7 19.9 13.4 30-3.8 5.2-6.1 8.2-6.1 8.2a.31.31 0 0 0 .1.2c-3 4-6.4 8.3-9.9 12.5-12.79 15.2-28 32.6-30 37.6-2.4 5.9-1.8 10.3 2.8 13.7 3.4 2.6 9.4 3 15.69 2.5 11.5-.8 19.6-3.6 23.5-5.4a82.2 82.2 0 0 0 20.19-10.6c12.5-9.2 20.1-22.4 19.4-39.8-.4-9.6-3.5-19.2-7.3-28.2 1.1-1.6 2.3-3.3 3.4-5C434.8 301.72 450.1 270 450.1 270a201.24 201.24 0 0 0 6.2 25.8c2.4 8.1 7.09 17 11.39 25.7-18.59 15.1-30.09 32.6-34.09 44.1-7.4 21.3-1.6 30.9 9.3 33.1 4.9 1 11.9-1.3 17.1-3.5a79.46 79.46 0 0 0 21.59-11.1c12.5-9.2 24.59-22.1 23.79-39.6-.3-7.9-2.5-15.8-5.4-23.4 15.7-6.6 36.09-10.2 62.09-7.2 55.68 6.5 66.58 41.3 64.48 55.8s-13.8 22.6-17.7 25-5.1 3.3-4.8 5.1c.5 2.6 2.3 2.5 5.6 1.9 4.6-.8 29.19-11.8 30.29-38.7 1.6-34-31.09-71.4-89-71.1zm-429.18 144.7c-18.39 20.1-44.19 27.7-55.28 21.3C54.61 451 59.31 421.42 82 400c13.8-13 31.59-25 43.39-32.4 2.7-1.6 6.6-4 11.4-6.9.8-.5 1.2-.7 1.2-.7.9-.6 1.9-1.1 2.9-1.7 8.29 30.4.3 57.2-19.1 78.3zm134.36-91.4c-6.4 15.7-19.89 55.7-28.09 53.6-7-1.8-11.3-32.3-1.4-62.3 5-15.1 15.6-33.1 21.9-40.1 10.09-11.3 21.19-14.9 23.79-10.4 3.5 5.9-12.2 49.4-16.2 59.2zm111 53c-2.7 1.4-5.2 2.3-6.4 1.6-.9-.5 1.1-2.4 1.1-2.4s13.9-14.9 19.4-21.7c3.2-4 6.9-8.7 10.89-13.9 0 .5.1 1 .1 1.6-.13 17.9-17.32 30-25.12 34.8zm85.58-19.5c-2-1.4-1.7-6.1 5-20.7 2.6-5.7 8.59-15.3 19-24.5a36.18 36.18 0 0 1 1.9 10.8c-.1 22.5-16.2 30.9-25.89 34.4z\"]\n};\nvar faSchlix = {\n prefix: 'fab',\n iconName: 'schlix',\n icon: [448, 512, [], \"f3ea\", \"M350.5 157.7l-54.2-46.1 73.4-39 78.3 44.2-97.5 40.9zM192 122.1l45.7-28.2 34.7 34.6-55.4 29-25-35.4zm-65.1 6.6l31.9-22.1L176 135l-36.7 22.5-12.4-28.8zm-23.3 88.2l-8.8-34.8 29.6-18.3 13.1 35.3-33.9 17.8zm-21.2-83.7l23.9-18.1 8.9 24-26.7 18.3-6.1-24.2zM59 206.5l-3.6-28.4 22.3-15.5 6.1 28.7L59 206.5zm-30.6 16.6l20.8-12.8 3.3 33.4-22.9 12-1.2-32.6zM1.4 268l19.2-10.2.4 38.2-21 8.8L1.4 268zm59.1 59.3l-28.3 8.3-1.6-46.8 25.1-10.7 4.8 49.2zM99 263.2l-31.1 13-5.2-40.8L90.1 221l8.9 42.2zM123.2 377l-41.6 5.9-8.1-63.5 35.2-10.8 14.5 68.4zm28.5-139.9l21.2 57.1-46.2 13.6-13.7-54.1 38.7-16.6zm85.7 230.5l-70.9-3.3-24.3-95.8 55.2-8.6 40 107.7zm-84.9-279.7l42.2-22.4 28 45.9-50.8 21.3-19.4-44.8zm41 94.9l61.3-18.7 52.8 86.6-79.8 11.3-34.3-79.2zm51.4-85.6l67.3-28.8 65.5 65.4-88.6 26.2-44.2-62.8z\"]\n};\nvar faScribd = {\n prefix: 'fab',\n iconName: 'scribd',\n icon: [384, 512, [], \"f28a\", \"M42.3 252.7c-16.1-19-24.7-45.9-24.8-79.9 0-100.4 75.2-153.1 167.2-153.1 98.6-1.6 156.8 49 184.3 70.6l-50.5 72.1-37.3-24.6 26.9-38.6c-36.5-24-79.4-36.5-123-35.8-50.7-.8-111.7 27.2-111.7 76.2 0 18.7 11.2 20.7 28.6 15.6 23.3-5.3 41.9.6 55.8 14 26.4 24.3 23.2 67.6-.7 91.9-29.2 29.5-85.2 27.3-114.8-8.4zm317.7 5.9c-15.5-18.8-38.9-29.4-63.2-28.6-38.1-2-71.1 28-70.5 67.2-.7 16.8 6 33 18.4 44.3 14.1 13.9 33 19.7 56.3 14.4 17.4-5.1 28.6-3.1 28.6 15.6 0 4.3-.5 8.5-1.4 12.7-16.7 40.9-59.5 64.4-121.4 64.4-51.9.2-102.4-16.4-144.1-47.3l33.7-39.4-35.6-27.4L0 406.3l15.4 13.8c52.5 46.8 120.4 72.5 190.7 72.2 51.4 0 94.4-10.5 133.6-44.1 57.1-51.4 54.2-149.2 20.3-189.6z\"]\n};\nvar faSearchengin = {\n prefix: 'fab',\n iconName: 'searchengin',\n icon: [460, 512, [], \"f3eb\", \"M220.6 130.3l-67.2 28.2V43.2L98.7 233.5l54.7-24.2v130.3l67.2-209.3zm-83.2-96.7l-1.3 4.7-15.2 52.9C80.6 106.7 52 145.8 52 191.5c0 52.3 34.3 95.9 83.4 105.5v53.6C57.5 340.1 0 272.4 0 191.6c0-80.5 59.8-147.2 137.4-158zm311.4 447.2c-11.2 11.2-23.1 12.3-28.6 10.5-5.4-1.8-27.1-19.9-60.4-44.4-33.3-24.6-33.6-35.7-43-56.7-9.4-20.9-30.4-42.6-57.5-52.4l-9.7-14.7c-24.7 16.9-53 26.9-81.3 28.7l2.1-6.6 15.9-49.5c46.5-11.9 80.9-54 80.9-104.2 0-54.5-38.4-102.1-96-107.1V32.3C254.4 37.4 320 106.8 320 191.6c0 33.6-11.2 64.7-29 90.4l14.6 9.6c9.8 27.1 31.5 48 52.4 57.4s32.2 9.7 56.8 43c24.6 33.2 42.7 54.9 44.5 60.3s.7 17.3-10.5 28.5zm-9.9-17.9c0-4.4-3.6-8-8-8s-8 3.6-8 8 3.6 8 8 8 8-3.6 8-8z\"]\n};\nvar faSellcast = {\n prefix: 'fab',\n iconName: 'sellcast',\n icon: [448, 512, [], \"f2da\", \"M353.4 32H94.7C42.6 32 0 74.6 0 126.6v258.7C0 437.4 42.6 480 94.7 480h258.7c52.1 0 94.7-42.6 94.7-94.6V126.6c0-52-42.6-94.6-94.7-94.6zm-50 316.4c-27.9 48.2-89.9 64.9-138.2 37.2-22.9 39.8-54.9 8.6-42.3-13.2l15.7-27.2c5.9-10.3 19.2-13.9 29.5-7.9 18.6 10.8-.1-.1 18.5 10.7 27.6 15.9 63.4 6.3 79.4-21.3 15.9-27.6 6.3-63.4-21.3-79.4-17.8-10.2-.6-.4-18.6-10.6-24.6-14.2-3.4-51.9 21.6-37.5 18.6 10.8-.1-.1 18.5 10.7 48.4 28 65.1 90.3 37.2 138.5zm21.8-208.8c-17 29.5-16.3 28.8-19 31.5-6.5 6.5-16.3 8.7-26.5 3.6-18.6-10.8.1.1-18.5-10.7-27.6-15.9-63.4-6.3-79.4 21.3s-6.3 63.4 21.3 79.4c0 0 18.5 10.6 18.6 10.6 24.6 14.2 3.4 51.9-21.6 37.5-18.6-10.8.1.1-18.5-10.7-48.2-27.8-64.9-90.1-37.1-138.4 27.9-48.2 89.9-64.9 138.2-37.2l4.8-8.4c14.3-24.9 52-3.3 37.7 21.5z\"]\n};\nvar faSellsy = {\n prefix: 'fab',\n iconName: 'sellsy',\n icon: [640, 512, [], \"f213\", \"M539.71 237.308c3.064-12.257 4.29-24.821 4.29-37.384C544 107.382 468.618 32 376.076 32c-77.22 0-144.634 53.012-163.02 127.781-15.322-13.176-34.934-20.53-55.157-20.53-46.271 0-83.962 37.69-83.962 83.961 0 7.354.92 15.015 3.065 22.369-42.9 20.225-70.785 63.738-70.785 111.234C6.216 424.843 61.68 480 129.401 480h381.198c67.72 0 123.184-55.157 123.184-123.184.001-56.384-38.916-106.025-94.073-119.508zM199.88 401.554c0 8.274-7.048 15.321-15.321 15.321H153.61c-8.274 0-15.321-7.048-15.321-15.321V290.626c0-8.273 7.048-15.321 15.321-15.321h30.949c8.274 0 15.321 7.048 15.321 15.321v110.928zm89.477 0c0 8.274-7.048 15.321-15.322 15.321h-30.949c-8.274 0-15.321-7.048-15.321-15.321V270.096c0-8.274 7.048-15.321 15.321-15.321h30.949c8.274 0 15.322 7.048 15.322 15.321v131.458zm89.477 0c0 8.274-7.047 15.321-15.321 15.321h-30.949c-8.274 0-15.322-7.048-15.322-15.321V238.84c0-8.274 7.048-15.321 15.322-15.321h30.949c8.274 0 15.321 7.048 15.321 15.321v162.714zm87.027 0c0 8.274-7.048 15.321-15.322 15.321h-28.497c-8.274 0-15.321-7.048-15.321-15.321V176.941c0-8.579 7.047-15.628 15.321-15.628h28.497c8.274 0 15.322 7.048 15.322 15.628v224.613z\"]\n};\nvar faServicestack = {\n prefix: 'fab',\n iconName: 'servicestack',\n icon: [496, 512, [], \"f3ec\", \"M88 216c81.7 10.2 273.7 102.3 304 232H0c99.5-8.1 184.5-137 88-232zm32-152c32.3 35.6 47.7 83.9 46.4 133.6C249.3 231.3 373.7 321.3 400 448h96C455.3 231.9 222.8 79.5 120 64z\"]\n};\nvar faShirtsinbulk = {\n prefix: 'fab',\n iconName: 'shirtsinbulk',\n icon: [448, 512, [], \"f214\", \"M100 410.3l30.6 13.4 4.4-9.9-30.6-13.4zm39.4 17.5l30.6 13.4 4.4-9.9-30.6-13.4zm172.1-14l4.4 9.9 30.6-13.4-4.4-9.9zM179.1 445l30.3 13.7 4.4-9.9-30.3-13.4zM60.4 392.8L91 406.2l4.4-9.6-30.6-13.7zm211.4 38.5l4.4 9.9 30.6-13.4-4.4-9.9zm-39.3 17.5l4.4 9.9 30.6-13.7-4.4-9.6zm118.4-52.2l4.4 9.6 30.6-13.4-4.4-9.9zM170 46.6h-33.5v10.5H170zm-47.2 0H89.2v10.5h33.5zm-47.3 0H42.3v10.5h33.3zm141.5 0h-33.2v10.5H217zm94.5 0H278v10.5h33.5zm47.3 0h-33.5v10.5h33.5zm-94.6 0H231v10.5h33.2zm141.5 0h-33.3v10.5h33.3zM52.8 351.1H42v33.5h10.8zm70-215.9H89.2v10.5h33.5zm-70 10.6h22.8v-10.5H42v33.5h10.8zm168.9 228.6c50.5 0 91.3-40.8 91.3-91.3 0-50.2-40.8-91.3-91.3-91.3-50.2 0-91.3 41.1-91.3 91.3 0 50.5 41.1 91.3 91.3 91.3zm-48.2-111.1c0-25.4 29.5-31.8 49.6-31.8 16.9 0 29.2 5.8 44.3 12l-8.8 16.9h-.9c-6.4-9.9-24.8-13.1-35.6-13.1-9 0-29.8 1.8-29.8 14.9 0 21.6 78.5-10.2 78.5 37.9 0 25.4-31.5 31.2-51 31.2-18.1 0-32.4-2.9-47.2-12.2l9-18.4h.9c6.1 12.2 23.6 14.9 35.9 14.9 8.7 0 32.7-1.2 32.7-14.3 0-26.1-77.6 6.3-77.6-38zM52.8 178.4H42V212h10.8zm342.4 206.2H406v-33.5h-10.8zM52.8 307.9H42v33.5h10.8zM0 3.7v406l221.7 98.6L448 409.7V3.7zm418.8 387.1L222 476.5 29.2 390.8V120.7h389.7v270.1zm0-299.3H29.2V32.9h389.7v58.6zm-366 130.1H42v33.5h10.8zm0 43.2H42v33.5h10.8zM170 135.2h-33.5v10.5H170zm225.2 163.1H406v-33.5h-10.8zm0-43.2H406v-33.5h-10.8zM217 135.2h-33.2v10.5H217zM395.2 212H406v-33.5h-10.8zm0 129.5H406V308h-10.8zm-131-206.3H231v10.5h33.2zm47.3 0H278v10.5h33.5zm83.7 33.6H406v-33.5h-33.5v10.5h22.8zm-36.4-33.6h-33.5v10.5h33.5z\"]\n};\nvar faShopware = {\n prefix: 'fab',\n iconName: 'shopware',\n icon: [512, 512, [], \"f5b5\", \"M403.5 455.41A246.17 246.17 0 0 1 256 504C118.81 504 8 393 8 256 8 118.81 119 8 256 8a247.39 247.39 0 0 1 165.7 63.5 3.57 3.57 0 0 1-2.86 6.18A418.62 418.62 0 0 0 362.13 74c-129.36 0-222.4 53.47-222.4 155.35 0 109 92.13 145.88 176.83 178.73 33.64 13 65.4 25.36 87 41.59a3.58 3.58 0 0 1 0 5.72zM503 233.09a3.64 3.64 0 0 0-1.27-2.44c-51.76-43-93.62-60.48-144.48-60.48-84.13 0-80.25 52.17-80.25 53.63 0 42.6 52.06 62 112.34 84.49 31.07 11.59 63.19 23.57 92.68 39.93a3.57 3.57 0 0 0 5-1.82A249 249 0 0 0 503 233.09z\"]\n};\nvar faSimplybuilt = {\n prefix: 'fab',\n iconName: 'simplybuilt',\n icon: [512, 512, [], \"f215\", \"M481.2 64h-106c-14.5 0-26.6 11.8-26.6 26.3v39.6H163.3V90.3c0-14.5-12-26.3-26.6-26.3h-106C16.1 64 4.3 75.8 4.3 90.3v331.4c0 14.5 11.8 26.3 26.6 26.3h450.4c14.8 0 26.6-11.8 26.6-26.3V90.3c-.2-14.5-12-26.3-26.7-26.3zM149.8 355.8c-36.6 0-66.4-29.7-66.4-66.4 0-36.9 29.7-66.6 66.4-66.6 36.9 0 66.6 29.7 66.6 66.6 0 36.7-29.7 66.4-66.6 66.4zm212.4 0c-36.9 0-66.6-29.7-66.6-66.6 0-36.6 29.7-66.4 66.6-66.4 36.6 0 66.4 29.7 66.4 66.4 0 36.9-29.8 66.6-66.4 66.6z\"]\n};\nvar faSistrix = {\n prefix: 'fab',\n iconName: 'sistrix',\n icon: [448, 512, [], \"f3ee\", \"M448 449L301.2 300.2c20-27.9 31.9-62.2 31.9-99.2 0-93.1-74.7-168.9-166.5-168.9C74.7 32 0 107.8 0 200.9s74.7 168.9 166.5 168.9c39.8 0 76.3-14.2 105-37.9l146 148.1 30.5-31zM166.5 330.8c-70.6 0-128.1-58.3-128.1-129.9S95.9 71 166.5 71s128.1 58.3 128.1 129.9-57.4 129.9-128.1 129.9z\"]\n};\nvar faSith = {\n prefix: 'fab',\n iconName: 'sith',\n icon: [448, 512, [], \"f512\", \"M0 32l69.71 118.75-58.86-11.52 69.84 91.03a146.741 146.741 0 0 0 0 51.45l-69.84 91.03 58.86-11.52L0 480l118.75-69.71-11.52 58.86 91.03-69.84c17.02 3.04 34.47 3.04 51.48 0l91.03 69.84-11.52-58.86L448 480l-69.71-118.78 58.86 11.52-69.84-91.03c3.03-17.01 3.04-34.44 0-51.45l69.84-91.03-58.86 11.52L448 32l-118.75 69.71 11.52-58.9-91.06 69.87c-8.5-1.52-17.1-2.29-25.71-2.29s-17.21.78-25.71 2.29l-91.06-69.87 11.52 58.9L0 32zm224 99.78c31.8 0 63.6 12.12 87.85 36.37 48.5 48.5 48.49 127.21 0 175.7s-127.2 48.46-175.7-.03c-48.5-48.5-48.49-127.21 0-175.7 24.24-24.25 56.05-36.34 87.85-36.34zm0 36.66c-22.42 0-44.83 8.52-61.92 25.61-34.18 34.18-34.19 89.68 0 123.87s89.65 34.18 123.84 0c34.18-34.18 34.19-89.68 0-123.87-17.09-17.09-39.5-25.61-61.92-25.61z\"]\n};\nvar faSketch = {\n prefix: 'fab',\n iconName: 'sketch',\n icon: [512, 512, [], \"f7c6\", \"M27.5 162.2L9 187.1h90.5l6.9-130.7-78.9 105.8zM396.3 45.7L267.7 32l135.7 147.2-7.1-133.5zM112.2 218.3l-11.2-22H9.9L234.8 458zm2-31.2h284l-81.5-88.5L256.3 33zm297.3 9.1L277.6 458l224.8-261.7h-90.9zM415.4 69L406 56.4l.9 17.3 6.1 113.4h90.3zM113.5 93.5l-4.6 85.6L244.7 32 116.1 45.7zm287.7 102.7h-290l42.4 82.9L256.3 480l144.9-283.8z\"]\n};\nvar faSkyatlas = {\n prefix: 'fab',\n iconName: 'skyatlas',\n icon: [640, 512, [], \"f216\", \"M640 329.3c0 65.9-52.5 114.4-117.5 114.4-165.9 0-196.6-249.7-359.7-249.7-146.9 0-147.1 212.2 5.6 212.2 42.5 0 90.9-17.8 125.3-42.5 5.6-4.1 16.9-16.3 22.8-16.3s10.9 5 10.9 10.9c0 7.8-13.1 19.1-18.7 24.1-40.9 35.6-100.3 61.2-154.7 61.2-83.4.1-154-59-154-144.9s67.5-149.1 152.8-149.1c185.3 0 222.5 245.9 361.9 245.9 99.9 0 94.8-139.7 3.4-139.7-17.5 0-35 11.6-46.9 11.6-8.4 0-15.9-7.2-15.9-15.6 0-11.6 5.3-23.7 5.3-36.3 0-66.6-50.9-114.7-116.9-114.7-53.1 0-80 36.9-88.8 36.9-6.2 0-11.2-5-11.2-11.2 0-5.6 4.1-10.3 7.8-14.4 25.3-28.8 64.7-43.7 102.8-43.7 79.4 0 139.1 58.4 139.1 137.8 0 6.9-.3 13.7-1.2 20.6 11.9-3.1 24.1-4.7 35.9-4.7 60.7 0 111.9 45.3 111.9 107.2z\"]\n};\nvar faSkype = {\n prefix: 'fab',\n iconName: 'skype',\n icon: [448, 512, [], \"f17e\", \"M424.7 299.8c2.9-14 4.7-28.9 4.7-43.8 0-113.5-91.9-205.3-205.3-205.3-14.9 0-29.7 1.7-43.8 4.7C161.3 40.7 137.7 32 112 32 50.2 32 0 82.2 0 144c0 25.7 8.7 49.3 23.3 68.2-2.9 14-4.7 28.9-4.7 43.8 0 113.5 91.9 205.3 205.3 205.3 14.9 0 29.7-1.7 43.8-4.7 19 14.6 42.6 23.3 68.2 23.3 61.8 0 112-50.2 112-112 .1-25.6-8.6-49.2-23.2-68.1zm-194.6 91.5c-65.6 0-120.5-29.2-120.5-65 0-16 9-30.6 29.5-30.6 31.2 0 34.1 44.9 88.1 44.9 25.7 0 42.3-11.4 42.3-26.3 0-18.7-16-21.6-42-28-62.5-15.4-117.8-22-117.8-87.2 0-59.2 58.6-81.1 109.1-81.1 55.1 0 110.8 21.9 110.8 55.4 0 16.9-11.4 31.8-30.3 31.8-28.3 0-29.2-33.5-75-33.5-25.7 0-42 7-42 22.5 0 19.8 20.8 21.8 69.1 33 41.4 9.3 90.7 26.8 90.7 77.6 0 59.1-57.1 86.5-112 86.5z\"]\n};\nvar faSlack = {\n prefix: 'fab',\n iconName: 'slack',\n icon: [448, 512, [], \"f198\", \"M94.12 315.1c0 25.9-21.16 47.06-47.06 47.06S0 341 0 315.1c0-25.9 21.16-47.06 47.06-47.06h47.06v47.06zm23.72 0c0-25.9 21.16-47.06 47.06-47.06s47.06 21.16 47.06 47.06v117.84c0 25.9-21.16 47.06-47.06 47.06s-47.06-21.16-47.06-47.06V315.1zm47.06-188.98c-25.9 0-47.06-21.16-47.06-47.06S139 32 164.9 32s47.06 21.16 47.06 47.06v47.06H164.9zm0 23.72c25.9 0 47.06 21.16 47.06 47.06s-21.16 47.06-47.06 47.06H47.06C21.16 243.96 0 222.8 0 196.9s21.16-47.06 47.06-47.06H164.9zm188.98 47.06c0-25.9 21.16-47.06 47.06-47.06 25.9 0 47.06 21.16 47.06 47.06s-21.16 47.06-47.06 47.06h-47.06V196.9zm-23.72 0c0 25.9-21.16 47.06-47.06 47.06-25.9 0-47.06-21.16-47.06-47.06V79.06c0-25.9 21.16-47.06 47.06-47.06 25.9 0 47.06 21.16 47.06 47.06V196.9zM283.1 385.88c25.9 0 47.06 21.16 47.06 47.06 0 25.9-21.16 47.06-47.06 47.06-25.9 0-47.06-21.16-47.06-47.06v-47.06h47.06zm0-23.72c-25.9 0-47.06-21.16-47.06-47.06 0-25.9 21.16-47.06 47.06-47.06h117.84c25.9 0 47.06 21.16 47.06 47.06 0 25.9-21.16 47.06-47.06 47.06H283.1z\"]\n};\nvar faSlackHash = {\n prefix: 'fab',\n iconName: 'slack-hash',\n icon: [448, 512, [], \"f3ef\", \"M446.2 270.4c-6.2-19-26.9-29.1-46-22.9l-45.4 15.1-30.3-90 45.4-15.1c19.1-6.2 29.1-26.8 23-45.9-6.2-19-26.9-29.1-46-22.9l-45.4 15.1-15.7-47c-6.2-19-26.9-29.1-46-22.9-19.1 6.2-29.1 26.8-23 45.9l15.7 47-93.4 31.2-15.7-47c-6.2-19-26.9-29.1-46-22.9-19.1 6.2-29.1 26.8-23 45.9l15.7 47-45.3 15c-19.1 6.2-29.1 26.8-23 45.9 5 14.5 19.1 24 33.6 24.6 6.8 1 12-1.6 57.7-16.8l30.3 90L78 354.8c-19 6.2-29.1 26.9-23 45.9 5 14.5 19.1 24 33.6 24.6 6.8 1 12-1.6 57.7-16.8l15.7 47c5.9 16.9 24.7 29 46 22.9 19.1-6.2 29.1-26.8 23-45.9l-15.7-47 93.6-31.3 15.7 47c5.9 16.9 24.7 29 46 22.9 19.1-6.2 29.1-26.8 23-45.9l-15.7-47 45.4-15.1c19-6 29.1-26.7 22.9-45.7zm-254.1 47.2l-30.3-90.2 93.5-31.3 30.3 90.2-93.5 31.3z\"]\n};\nvar faSlideshare = {\n prefix: 'fab',\n iconName: 'slideshare',\n icon: [512, 512, [], \"f1e7\", \"M187.7 153.7c-34 0-61.7 25.7-61.7 57.7 0 31.7 27.7 57.7 61.7 57.7s61.7-26 61.7-57.7c0-32-27.7-57.7-61.7-57.7zm143.4 0c-34 0-61.7 25.7-61.7 57.7 0 31.7 27.7 57.7 61.7 57.7 34.3 0 61.7-26 61.7-57.7.1-32-27.4-57.7-61.7-57.7zm156.6 90l-6 4.3V49.7c0-27.4-20.6-49.7-46-49.7H76.6c-25.4 0-46 22.3-46 49.7V248c-2-1.4-4.3-2.9-6.3-4.3-15.1-10.6-25.1 4-16 17.7 18.3 22.6 53.1 50.3 106.3 72C58.3 525.1 252 555.7 248.9 457.5c0-.7.3-56.6.3-96.6 5.1 1.1 9.4 2.3 13.7 3.1 0 39.7.3 92.8.3 93.5-3.1 98.3 190.6 67.7 134.3-124 53.1-21.7 88-49.4 106.3-72 9.1-13.8-.9-28.3-16.1-17.8zm-30.5 19.2c-68.9 37.4-128.3 31.1-160.6 29.7-23.7-.9-32.6 9.1-33.7 24.9-10.3-7.7-18.6-15.5-20.3-17.1-5.1-5.4-13.7-8-27.1-7.7-31.7 1.1-89.7 7.4-157.4-28V72.3c0-34.9 8.9-45.7 40.6-45.7h317.7c30.3 0 40.9 12.9 40.9 45.7v190.6z\"]\n};\nvar faSnapchat = {\n prefix: 'fab',\n iconName: 'snapchat',\n icon: [496, 512, [], \"f2ab\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm169.5 338.9c-3.5 8.1-18.1 14-44.8 18.2-1.4 1.9-2.5 9.8-4.3 15.9-1.1 3.7-3.7 5.9-8.1 5.9h-.2c-6.2 0-12.8-2.9-25.8-2.9-17.6 0-23.7 4-37.4 13.7-14.5 10.3-28.4 19.1-49.2 18.2-21 1.6-38.6-11.2-48.5-18.2-13.8-9.7-19.8-13.7-37.4-13.7-12.5 0-20.4 3.1-25.8 3.1-5.4 0-7.5-3.3-8.3-6-1.8-6.1-2.9-14.1-4.3-16-13.8-2.1-44.8-7.5-45.5-21.4-.2-3.6 2.3-6.8 5.9-7.4 46.3-7.6 67.1-55.1 68-57.1 0-.1.1-.2.2-.3 2.5-5 3-9.2 1.6-12.5-3.4-7.9-17.9-10.7-24-13.2-15.8-6.2-18-13.4-17-18.3 1.6-8.5 14.4-13.8 21.9-10.3 5.9 2.8 11.2 4.2 15.7 4.2 3.3 0 5.5-.8 6.6-1.4-1.4-23.9-4.7-58 3.8-77.1C183.1 100 230.7 96 244.7 96c.6 0 6.1-.1 6.7-.1 34.7 0 68 17.8 84.3 54.3 8.5 19.1 5.2 53.1 3.8 77.1 1.1.6 2.9 1.3 5.7 1.4 4.3-.2 9.2-1.6 14.7-4.2 4-1.9 9.6-1.6 13.6 0 6.3 2.3 10.3 6.8 10.4 11.9.1 6.5-5.7 12.1-17.2 16.6-1.4.6-3.1 1.1-4.9 1.7-6.5 2.1-16.4 5.2-19 11.5-1.4 3.3-.8 7.5 1.6 12.5.1.1.1.2.2.3.9 2 21.7 49.5 68 57.1 4 1 7.1 5.5 4.9 10.8z\"]\n};\nvar faSnapchatGhost = {\n prefix: 'fab',\n iconName: 'snapchat-ghost',\n icon: [512, 512, [], \"f2ac\", \"M510.846 392.673c-5.211 12.157-27.239 21.089-67.36 27.318-2.064 2.786-3.775 14.686-6.507 23.956-1.625 5.566-5.623 8.869-12.128 8.869l-.297-.005c-9.395 0-19.203-4.323-38.852-4.323-26.521 0-35.662 6.043-56.254 20.588-21.832 15.438-42.771 28.764-74.027 27.399-31.646 2.334-58.025-16.908-72.871-27.404-20.714-14.643-29.828-20.582-56.241-20.582-18.864 0-30.736 4.72-38.852 4.72-8.073 0-11.213-4.922-12.422-9.04-2.703-9.189-4.404-21.263-6.523-24.13-20.679-3.209-67.31-11.344-68.498-32.15a10.627 10.627 0 0 1 8.877-11.069c69.583-11.455 100.924-82.901 102.227-85.934.074-.176.155-.344.237-.515 3.713-7.537 4.544-13.849 2.463-18.753-5.05-11.896-26.872-16.164-36.053-19.796-23.715-9.366-27.015-20.128-25.612-27.504 2.437-12.836 21.725-20.735 33.002-15.453 8.919 4.181 16.843 6.297 23.547 6.297 5.022 0 8.212-1.204 9.96-2.171-2.043-35.936-7.101-87.29 5.687-115.969C158.122 21.304 229.705 15.42 250.826 15.42c.944 0 9.141-.089 10.11-.089 52.148 0 102.254 26.78 126.723 81.643 12.777 28.65 7.749 79.792 5.695 116.009 1.582.872 4.357 1.942 8.599 2.139 6.397-.286 13.815-2.389 22.069-6.257 6.085-2.846 14.406-2.461 20.48.058l.029.01c9.476 3.385 15.439 10.215 15.589 17.87.184 9.747-8.522 18.165-25.878 25.018-2.118.835-4.694 1.655-7.434 2.525-9.797 3.106-24.6 7.805-28.616 17.271-2.079 4.904-1.256 11.211 2.46 18.748.087.168.166.342.239.515 1.301 3.03 32.615 74.46 102.23 85.934 6.427 1.058 11.163 7.877 7.725 15.859z\"]\n};\nvar faSnapchatSquare = {\n prefix: 'fab',\n iconName: 'snapchat-square',\n icon: [448, 512, [], \"f2ad\", \"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-6.5 314.9c-3.5 8.1-18.1 14-44.8 18.2-1.4 1.9-2.5 9.8-4.3 15.9-1.1 3.7-3.7 5.9-8.1 5.9h-.2c-6.2 0-12.8-2.9-25.8-2.9-17.6 0-23.7 4-37.4 13.7-14.5 10.3-28.4 19.1-49.2 18.2-21 1.6-38.6-11.2-48.5-18.2-13.8-9.7-19.8-13.7-37.4-13.7-12.5 0-20.4 3.1-25.8 3.1-5.4 0-7.5-3.3-8.3-6-1.8-6.1-2.9-14.1-4.3-16-13.8-2.1-44.8-7.5-45.5-21.4-.2-3.6 2.3-6.8 5.9-7.4 46.3-7.6 67.1-55.1 68-57.1 0-.1.1-.2.2-.3 2.5-5 3-9.2 1.6-12.5-3.4-7.9-17.9-10.7-24-13.2-15.8-6.2-18-13.4-17-18.3 1.6-8.5 14.4-13.8 21.9-10.3 5.9 2.8 11.2 4.2 15.7 4.2 3.3 0 5.5-.8 6.6-1.4-1.4-23.9-4.7-58 3.8-77.1C159.1 100 206.7 96 220.7 96c.6 0 6.1-.1 6.7-.1 34.7 0 68 17.8 84.3 54.3 8.5 19.1 5.2 53.1 3.8 77.1 1.1.6 2.9 1.3 5.7 1.4 4.3-.2 9.2-1.6 14.7-4.2 4-1.9 9.6-1.6 13.6 0 6.3 2.3 10.3 6.8 10.4 11.9.1 6.5-5.7 12.1-17.2 16.6-1.4.6-3.1 1.1-4.9 1.7-6.5 2.1-16.4 5.2-19 11.5-1.4 3.3-.8 7.5 1.6 12.5.1.1.1.2.2.3.9 2 21.7 49.5 68 57.1 4 1 7.1 5.5 4.9 10.8z\"]\n};\nvar faSoundcloud = {\n prefix: 'fab',\n iconName: 'soundcloud',\n icon: [640, 512, [], \"f1be\", \"M111.4 256.3l5.8 65-5.8 68.3c-.3 2.5-2.2 4.4-4.4 4.4s-4.2-1.9-4.2-4.4l-5.6-68.3 5.6-65c0-2.2 1.9-4.2 4.2-4.2 2.2 0 4.1 2 4.4 4.2zm21.4-45.6c-2.8 0-4.7 2.2-5 5l-5 105.6 5 68.3c.3 2.8 2.2 5 5 5 2.5 0 4.7-2.2 4.7-5l5.8-68.3-5.8-105.6c0-2.8-2.2-5-4.7-5zm25.5-24.1c-3.1 0-5.3 2.2-5.6 5.3l-4.4 130 4.4 67.8c.3 3.1 2.5 5.3 5.6 5.3 2.8 0 5.3-2.2 5.3-5.3l5.3-67.8-5.3-130c0-3.1-2.5-5.3-5.3-5.3zM7.2 283.2c-1.4 0-2.2 1.1-2.5 2.5L0 321.3l4.7 35c.3 1.4 1.1 2.5 2.5 2.5s2.2-1.1 2.5-2.5l5.6-35-5.6-35.6c-.3-1.4-1.1-2.5-2.5-2.5zm23.6-21.9c-1.4 0-2.5 1.1-2.5 2.5l-6.4 57.5 6.4 56.1c0 1.7 1.1 2.8 2.5 2.8s2.5-1.1 2.8-2.5l7.2-56.4-7.2-57.5c-.3-1.4-1.4-2.5-2.8-2.5zm25.3-11.4c-1.7 0-3.1 1.4-3.3 3.3L47 321.3l5.8 65.8c.3 1.7 1.7 3.1 3.3 3.1 1.7 0 3.1-1.4 3.1-3.1l6.9-65.8-6.9-68.1c0-1.9-1.4-3.3-3.1-3.3zm25.3-2.2c-1.9 0-3.6 1.4-3.6 3.6l-5.8 70 5.8 67.8c0 2.2 1.7 3.6 3.6 3.6s3.6-1.4 3.9-3.6l6.4-67.8-6.4-70c-.3-2.2-2-3.6-3.9-3.6zm241.4-110.9c-1.1-.8-2.8-1.4-4.2-1.4-2.2 0-4.2.8-5.6 1.9-1.9 1.7-3.1 4.2-3.3 6.7v.8l-3.3 176.7 1.7 32.5 1.7 31.7c.3 4.7 4.2 8.6 8.9 8.6s8.6-3.9 8.6-8.6l3.9-64.2-3.9-177.5c-.4-3-2-5.8-4.5-7.2zm-26.7 15.3c-1.4-.8-2.8-1.4-4.4-1.4s-3.1.6-4.4 1.4c-2.2 1.4-3.6 3.9-3.6 6.7l-.3 1.7-2.8 160.8s0 .3 3.1 65.6v.3c0 1.7.6 3.3 1.7 4.7 1.7 1.9 3.9 3.1 6.4 3.1 2.2 0 4.2-1.1 5.6-2.5 1.7-1.4 2.5-3.3 2.5-5.6l.3-6.7 3.1-58.6-3.3-162.8c-.3-2.8-1.7-5.3-3.9-6.7zm-111.4 22.5c-3.1 0-5.8 2.8-5.8 6.1l-4.4 140.6 4.4 67.2c.3 3.3 2.8 5.8 5.8 5.8 3.3 0 5.8-2.5 6.1-5.8l5-67.2-5-140.6c-.2-3.3-2.7-6.1-6.1-6.1zm376.7 62.8c-10.8 0-21.1 2.2-30.6 6.1-6.4-70.8-65.8-126.4-138.3-126.4-17.8 0-35 3.3-50.3 9.4-6.1 2.2-7.8 4.4-7.8 9.2v249.7c0 5 3.9 8.6 8.6 9.2h218.3c43.3 0 78.6-35 78.6-78.3.1-43.6-35.2-78.9-78.5-78.9zm-296.7-60.3c-4.2 0-7.5 3.3-7.8 7.8l-3.3 136.7 3.3 65.6c.3 4.2 3.6 7.5 7.8 7.5 4.2 0 7.5-3.3 7.5-7.5l3.9-65.6-3.9-136.7c-.3-4.5-3.3-7.8-7.5-7.8zm-53.6-7.8c-3.3 0-6.4 3.1-6.4 6.7l-3.9 145.3 3.9 66.9c.3 3.6 3.1 6.4 6.4 6.4 3.6 0 6.4-2.8 6.7-6.4l4.4-66.9-4.4-145.3c-.3-3.6-3.1-6.7-6.7-6.7zm26.7 3.4c-3.9 0-6.9 3.1-6.9 6.9L227 321.3l3.9 66.4c.3 3.9 3.1 6.9 6.9 6.9s6.9-3.1 6.9-6.9l4.2-66.4-4.2-141.7c0-3.9-3-6.9-6.9-6.9z\"]\n};\nvar faSourcetree = {\n prefix: 'fab',\n iconName: 'sourcetree',\n icon: [448, 512, [], \"f7d3\", \"M427.2 203c0-112.1-90.9-203-203-203C112.1-.2 21.2 90.6 21 202.6A202.86 202.86 0 0 0 161.5 396v101.7a14.3 14.3 0 0 0 14.3 14.3h96.4a14.3 14.3 0 0 0 14.3-14.3V396.1A203.18 203.18 0 0 0 427.2 203zm-271.6 0c0-90.8 137.3-90.8 137.3 0-.1 89.9-137.3 91-137.3 0z\"]\n};\nvar faSpeakap = {\n prefix: 'fab',\n iconName: 'speakap',\n icon: [448, 512, [], \"f3f3\", \"M64 391.78C-15.41 303.59-8 167.42 80.64 87.64s224.8-73 304.21 15.24 72 224.36-16.64 304.14c-18.74 16.87 64 43.09 42 52.26-82.06 34.21-253.91 35-346.23-67.5zm213.31-211.6l38.5-40.86c-9.61-8.89-32-26.83-76.17-27.6-52.33-.91-95.86 28.3-96.77 80-.2 11.33.29 36.72 29.42 54.83 34.46 21.42 86.52 21.51 86 52.26-.37 21.28-26.42 25.81-38.59 25.6-3-.05-30.23-.46-47.61-24.62l-40 42.61c28.16 27 59 32.62 83.49 33.05 10.23.18 96.42.33 97.84-81 .28-15.81-2.07-39.72-28.86-56.59-34.36-21.64-85-19.45-84.43-49.75.41-23.25 31-25.37 37.53-25.26.43 0 26.62.26 39.62 17.37z\"]\n};\nvar faSpeakerDeck = {\n prefix: 'fab',\n iconName: 'speaker-deck',\n icon: [512, 512, [], \"f83c\", \"M213.86 296H100a100 100 0 0 1 0-200h132.84a40 40 0 0 1 0 80H98c-26.47 0-26.45 40 0 40h113.82a100 100 0 0 1 0 200H40a40 40 0 0 1 0-80h173.86c26.48 0 26.46-40 0-40zM298 416a120.21 120.21 0 0 0 51.11-80h64.55a19.83 19.83 0 0 0 19.66-20V196a19.83 19.83 0 0 0-19.66-20H296.42a60.77 60.77 0 0 0 0-80h136.93c43.44 0 78.65 35.82 78.65 80v160c0 44.18-35.21 80-78.65 80z\"]\n};\nvar faSpotify = {\n prefix: 'fab',\n iconName: 'spotify',\n icon: [496, 512, [], \"f1bc\", \"M248 8C111.1 8 0 119.1 0 256s111.1 248 248 248 248-111.1 248-248S384.9 8 248 8zm100.7 364.9c-4.2 0-6.8-1.3-10.7-3.6-62.4-37.6-135-39.2-206.7-24.5-3.9 1-9 2.6-11.9 2.6-9.7 0-15.8-7.7-15.8-15.8 0-10.3 6.1-15.2 13.6-16.8 81.9-18.1 165.6-16.5 237 26.2 6.1 3.9 9.7 7.4 9.7 16.5s-7.1 15.4-15.2 15.4zm26.9-65.6c-5.2 0-8.7-2.3-12.3-4.2-62.5-37-155.7-51.9-238.6-29.4-4.8 1.3-7.4 2.6-11.9 2.6-10.7 0-19.4-8.7-19.4-19.4s5.2-17.8 15.5-20.7c27.8-7.8 56.2-13.6 97.8-13.6 64.9 0 127.6 16.1 177 45.5 8.1 4.8 11.3 11 11.3 19.7-.1 10.8-8.5 19.5-19.4 19.5zm31-76.2c-5.2 0-8.4-1.3-12.9-3.9-71.2-42.5-198.5-52.7-280.9-29.7-3.6 1-8.1 2.6-12.9 2.6-13.2 0-23.3-10.3-23.3-23.6 0-13.6 8.4-21.3 17.4-23.9 35.2-10.3 74.6-15.2 117.5-15.2 73 0 149.5 15.2 205.4 47.8 7.8 4.5 12.9 10.7 12.9 22.6 0 13.6-11 23.3-23.2 23.3z\"]\n};\nvar faSquarespace = {\n prefix: 'fab',\n iconName: 'squarespace',\n icon: [512, 512, [], \"f5be\", \"M186.12 343.34c-9.65 9.65-9.65 25.29 0 34.94 9.65 9.65 25.29 9.65 34.94 0L378.24 221.1c19.29-19.29 50.57-19.29 69.86 0s19.29 50.57 0 69.86L293.95 445.1c19.27 19.29 50.53 19.31 69.82.04l.04-.04 119.25-119.24c38.59-38.59 38.59-101.14 0-139.72-38.59-38.59-101.15-38.59-139.72 0l-157.22 157.2zm244.53-104.8c-9.65-9.65-25.29-9.65-34.93 0l-157.2 157.18c-19.27 19.29-50.53 19.31-69.82.05l-.05-.05c-9.64-9.64-25.27-9.65-34.92-.01l-.01.01c-9.65 9.64-9.66 25.28-.02 34.93l.02.02c38.58 38.57 101.14 38.57 139.72 0l157.2-157.2c9.65-9.65 9.65-25.29.01-34.93zm-261.99 87.33l157.18-157.18c9.64-9.65 9.64-25.29 0-34.94-9.64-9.64-25.27-9.64-34.91 0L133.72 290.93c-19.28 19.29-50.56 19.3-69.85.01l-.01-.01c-19.29-19.28-19.31-50.54-.03-69.84l.03-.03L218.03 66.89c-19.28-19.29-50.55-19.3-69.85-.02l-.02.02L28.93 186.14c-38.58 38.59-38.58 101.14 0 139.72 38.6 38.59 101.13 38.59 139.73.01zm-87.33-52.4c9.64 9.64 25.27 9.64 34.91 0l157.21-157.19c19.28-19.29 50.55-19.3 69.84-.02l.02.02c9.65 9.65 25.29 9.65 34.93 0 9.65-9.65 9.65-25.29 0-34.93-38.59-38.59-101.13-38.59-139.72 0L81.33 238.54c-9.65 9.64-9.65 25.28-.01 34.93h.01z\"]\n};\nvar faStackExchange = {\n prefix: 'fab',\n iconName: 'stack-exchange',\n icon: [448, 512, [], \"f18d\", \"M17.7 332.3h412.7v22c0 37.7-29.3 68-65.3 68h-19L259.3 512v-89.7H83c-36 0-65.3-30.3-65.3-68v-22zm0-23.6h412.7v-85H17.7v85zm0-109.4h412.7v-85H17.7v85zM365 0H83C47 0 17.7 30.3 17.7 67.7V90h412.7V67.7C430.3 30.3 401 0 365 0z\"]\n};\nvar faStackOverflow = {\n prefix: 'fab',\n iconName: 'stack-overflow',\n icon: [384, 512, [], \"f16c\", \"M290.7 311L95 269.7 86.8 309l195.7 41zm51-87L188.2 95.7l-25.5 30.8 153.5 128.3zm-31.2 39.7L129.2 179l-16.7 36.5L293.7 300zM262 32l-32 24 119.3 160.3 32-24zm20.5 328h-200v39.7h200zm39.7 80H42.7V320h-40v160h359.5V320h-40z\"]\n};\nvar faStackpath = {\n prefix: 'fab',\n iconName: 'stackpath',\n icon: [448, 512, [], \"f842\", \"M244.6 232.4c0 8.5-4.26 20.49-21.34 20.49h-19.61v-41.47h19.61c17.13 0 21.34 12.36 21.34 20.98zM448 32v448H0V32zM151.3 287.84c0-21.24-12.12-34.54-46.72-44.85-20.57-7.41-26-10.91-26-18.63s7-14.61 20.41-14.61c14.09 0 20.79 8.45 20.79 18.35h30.7l.19-.57c.5-19.57-15.06-41.65-51.12-41.65-23.37 0-52.55 10.75-52.55 38.29 0 19.4 9.25 31.29 50.74 44.37 17.26 6.15 21.91 10.4 21.91 19.48 0 15.2-19.13 14.23-19.47 14.23-20.4 0-25.65-9.1-25.65-21.9h-30.8l-.18.56c-.68 31.32 28.38 45.22 56.63 45.22 29.98 0 51.12-13.55 51.12-38.29zm125.38-55.63c0-25.3-18.43-45.46-53.42-45.46h-51.78v138.18h32.17v-47.36h19.61c30.25 0 53.42-15.95 53.42-45.36zM297.94 325L347 186.78h-31.09L268 325zm106.52-138.22h-31.09L325.46 325h29.94z\"]\n};\nvar faStaylinked = {\n prefix: 'fab',\n iconName: 'staylinked',\n icon: [440, 512, [], \"f3f5\", \"M382.7 292.5l2.7 2.7-170-167.3c-3.5-3.5-9.7-3.7-13.8-.5L144.3 171c-4.2 3.2-4.6 8.7-1.1 12.2l68.1 64.3c3.6 3.5 9.9 3.7 14 .5l.1-.1c4.1-3.2 10.4-3 14 .5l84 81.3c3.6 3.5 3.2 9-.9 12.2l-93.2 74c-4.2 3.3-10.5 3.1-14.2-.4L63.2 268c-3.5-3.5-9.7-3.7-13.9-.5L3.5 302.4c-4.2 3.2-4.7 8.7-1.2 12.2L211 510.7s7.4 6.8 17.3-.8l198-163.9c4-3.2 4.4-8.7.7-12.2zm54.5-83.4L226.7 2.5c-1.5-1.2-8-5.5-16.3 1.1L3.6 165.7c-4.2 3.2-4.8 8.7-1.2 12.2l42.3 41.7 171.7 165.1c3.7 3.5 10.1 3.7 14.3.4l50.2-38.8-.3-.3 7.7-6c4.2-3.2 4.6-8.7.9-12.2l-57.1-54.4c-3.6-3.5-10-3.7-14.2-.5l-.1.1c-4.2 3.2-10.5 3.1-14.2-.4L109 180.8c-3.6-3.5-3.1-8.9 1.1-12.2l92.2-71.5c4.1-3.2 10.3-3 13.9.5l160.4 159c3.7 3.5 10 3.7 14.1.5l45.8-35.8c4.1-3.2 4.4-8.7.7-12.2z\"]\n};\nvar faSteam = {\n prefix: 'fab',\n iconName: 'steam',\n icon: [496, 512, [], \"f1b6\", \"M496 256c0 137-111.2 248-248.4 248-113.8 0-209.6-76.3-239-180.4l95.2 39.3c6.4 32.1 34.9 56.4 68.9 56.4 39.2 0 71.9-32.4 70.2-73.5l84.5-60.2c52.1 1.3 95.8-40.9 95.8-93.5 0-51.6-42-93.5-93.7-93.5s-93.7 42-93.7 93.5v1.2L176.6 279c-15.5-.9-30.7 3.4-43.5 12.1L0 236.1C10.2 108.4 117.1 8 247.6 8 384.8 8 496 119 496 256zM155.7 384.3l-30.5-12.6a52.79 52.79 0 0 0 27.2 25.8c26.9 11.2 57.8-1.6 69-28.4 5.4-13 5.5-27.3.1-40.3-5.4-13-15.5-23.2-28.5-28.6-12.9-5.4-26.7-5.2-38.9-.6l31.5 13c19.8 8.2 29.2 30.9 20.9 50.7-8.3 19.9-31 29.2-50.8 21zm173.8-129.9c-34.4 0-62.4-28-62.4-62.3s28-62.3 62.4-62.3 62.4 28 62.4 62.3-27.9 62.3-62.4 62.3zm.1-15.6c25.9 0 46.9-21 46.9-46.8 0-25.9-21-46.8-46.9-46.8s-46.9 21-46.9 46.8c.1 25.8 21.1 46.8 46.9 46.8z\"]\n};\nvar faSteamSquare = {\n prefix: 'fab',\n iconName: 'steam-square',\n icon: [448, 512, [], \"f1b7\", \"M185.2 356.5c7.7-18.5-1-39.7-19.6-47.4l-29.5-12.2c11.4-4.3 24.3-4.5 36.4.5 12.2 5.1 21.6 14.6 26.7 26.7 5 12.2 5 25.6-.1 37.7-10.5 25.1-39.4 37-64.6 26.5-11.6-4.8-20.4-13.6-25.4-24.2l28.5 11.8c18.6 7.8 39.9-.9 47.6-19.4zM400 32H48C21.5 32 0 53.5 0 80v160.7l116.6 48.1c12-8.2 26.2-12.1 40.7-11.3l55.4-80.2v-1.1c0-48.2 39.3-87.5 87.6-87.5s87.6 39.3 87.6 87.5c0 49.2-40.9 88.7-89.6 87.5l-79 56.3c1.6 38.5-29.1 68.8-65.7 68.8-31.8 0-58.5-22.7-64.5-52.7L0 319.2V432c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-99.7 222.5c-32.2 0-58.4-26.1-58.4-58.3s26.2-58.3 58.4-58.3 58.4 26.2 58.4 58.3-26.2 58.3-58.4 58.3zm.1-14.6c24.2 0 43.9-19.6 43.9-43.8 0-24.2-19.6-43.8-43.9-43.8-24.2 0-43.9 19.6-43.9 43.8 0 24.2 19.7 43.8 43.9 43.8z\"]\n};\nvar faSteamSymbol = {\n prefix: 'fab',\n iconName: 'steam-symbol',\n icon: [448, 512, [], \"f3f6\", \"M395.5 177.5c0 33.8-27.5 61-61 61-33.8 0-61-27.3-61-61s27.3-61 61-61c33.5 0 61 27.2 61 61zm52.5.2c0 63-51 113.8-113.7 113.8L225 371.3c-4 43-40.5 76.8-84.5 76.8-40.5 0-74.7-28.8-83-67L0 358V250.7L97.2 290c15.1-9.2 32.2-13.3 52-11.5l71-101.7c.5-62.3 51.5-112.8 114-112.8C397 64 448 115 448 177.7zM203 363c0-34.7-27.8-62.5-62.5-62.5-4.5 0-9 .5-13.5 1.5l26 10.5c25.5 10.2 38 39 27.7 64.5-10.2 25.5-39.2 38-64.7 27.5-10.2-4-20.5-8.3-30.7-12.2 10.5 19.7 31.2 33.2 55.2 33.2 34.7 0 62.5-27.8 62.5-62.5zm207.5-185.3c0-42-34.3-76.2-76.2-76.2-42.3 0-76.5 34.2-76.5 76.2 0 42.2 34.3 76.2 76.5 76.2 41.9.1 76.2-33.9 76.2-76.2z\"]\n};\nvar faStickerMule = {\n prefix: 'fab',\n iconName: 'sticker-mule',\n icon: [576, 512, [], \"f3f7\", \"M561.7 199.6c-1.3.3.3 0 0 0zm-6.2-77.4c-7.7-22.3-5.1-7.2-13.4-36.9-1.6-6.5-3.6-14.5-6.2-20-4.4-8.7-4.6-7.5-4.6-9.5 0-5.3 30.7-45.3 19-46.9-5.7-.6-12.2 11.6-20.6 17-8.6 4.2-8 5-10.3 5-2.6 0-5.7-3-6.2-5-2-5.7 1.9-25.9-3.6-25.9-3.6 0-12.3 24.8-17 25.8-5.2 1.3-27.9-11.4-75.1 18-25.3 13.2-86.9 65.2-87 65.3-6.7 4.7-20 4.7-35.5 16-44.4 30.1-109.6 9.4-110.7 9-110.6-26.8-128-15.2-159 11.5-20.8 17.9-23.7 36.5-24.2 38.9-4.2 20.4 5.2 48.3 6.7 64.3 1.8 19.3-2.7 17.7 7.7 98.3.5 1 4.1 0 5.1 1.5 0 8.4-3.8 12.1-4.1 13-1.5 4.5-1.5 10.5 0 16 2.3 8.2 8.2 37.2 8.2 46.9 0 41.8.4 44 2.6 49.4 3.9 10 12.5 9.1 17 12 3.1 3.5-.5 8.5 1 12.5.5 2 3.6 4 6.2 5 9.2 3.6 27 .3 29.9-2.5 1.6-1.5.5-4.5 3.1-5 5.1 0 10.8-.5 14.4-2.5 5.1-2.5 4.1-6 1.5-10.5-.4-.8-7-13.3-9.8-16-2.1-2-5.1-3-7.2-4.5-5.8-4.9-10.3-19.4-10.3-19.5-4.6-19.4-10.3-46.3-4.1-66.8 4.6-17.2 39.5-87.7 39.6-87.8 4.1-6.5 17-11.5 27.3-7 6 1.9 19.3 22 65.4 30.9 47.9 8.7 97.4-2 112.2-2 2.8 2-1.9 13-.5 38.9 0 26.4-.4 13.7-4.1 29.9-2.2 9.7 3.4 23.2-1.5 46.9-1.4 9.8-9.9 32.7-8.2 43.4.5 1 1 2 1.5 3.5.5 4.5 1.5 8.5 4.6 10 7.3 3.6 12-3.5 9.8 11.5-.7 3.1-2.6 12 1.5 15 4.4 3.7 30.6 3.4 36.5.5 2.6-1.5 1.6-4.5 6.4-7.4 1.9-.9 11.3-.4 11.3-6.5.3-1.8-9.2-19.9-9.3-20-2.6-3.5-9.2-4.5-11.3-8-6.9-10.1-1.7-52.6.5-59.4 3-11 5.6-22.4 8.7-32.4 11-42.5 10.3-50.6 16.5-68.3.8-1.8 6.4-23.1 10.3-29.9 9.3-17 21.7-32.4 33.5-47.4 18-22.9 34-46.9 52-69.8 6.1-7 8.2-13.7 18-8 10.8 5.7 21.6 7 31.9 17 14.6 12.8 10.2 18.2 11.8 22.9 1.5 5 7.7 10.5 14.9 9.5 10.4-2 13-2.5 13.4-2.5 2.6-.5 5.7-5 7.2-8 3.1-5.5 7.2-9 7.2-16.5 0-7.7-.4-2.8-20.6-52.9z\"]\n};\nvar faStrava = {\n prefix: 'fab',\n iconName: 'strava',\n icon: [384, 512, [], \"f428\", \"M158.4 0L7 292h89.2l62.2-116.1L220.1 292h88.5zm150.2 292l-43.9 88.2-44.6-88.2h-67.6l112.2 220 111.5-220z\"]\n};\nvar faStripe = {\n prefix: 'fab',\n iconName: 'stripe',\n icon: [640, 512, [], \"f429\", \"M165 144.7l-43.3 9.2-.2 142.4c0 26.3 19.8 43.3 46.1 43.3 14.6 0 25.3-2.7 31.2-5.9v-33.8c-5.7 2.3-33.7 10.5-33.7-15.7V221h33.7v-37.8h-33.7zm89.1 51.6l-2.7-13.1H213v153.2h44.3V233.3c10.5-13.8 28.2-11.1 33.9-9.3v-40.8c-6-2.1-26.7-6-37.1 13.1zm92.3-72.3l-44.6 9.5v36.2l44.6-9.5zM44.9 228.3c0-6.9 5.8-9.6 15.1-9.7 13.5 0 30.7 4.1 44.2 11.4v-41.8c-14.7-5.8-29.4-8.1-44.1-8.1-36 0-60 18.8-60 50.2 0 49.2 67.5 41.2 67.5 62.4 0 8.2-7.1 10.9-17 10.9-14.7 0-33.7-6.1-48.6-14.2v40c16.5 7.1 33.2 10.1 48.5 10.1 36.9 0 62.3-15.8 62.3-47.8 0-52.9-67.9-43.4-67.9-63.4zM640 261.6c0-45.5-22-81.4-64.2-81.4s-67.9 35.9-67.9 81.1c0 53.5 30.3 78.2 73.5 78.2 21.2 0 37.1-4.8 49.2-11.5v-33.4c-12.1 6.1-26 9.8-43.6 9.8-17.3 0-32.5-6.1-34.5-26.9h86.9c.2-2.3.6-11.6.6-15.9zm-87.9-16.8c0-20 12.3-28.4 23.4-28.4 10.9 0 22.5 8.4 22.5 28.4zm-112.9-64.6c-17.4 0-28.6 8.2-34.8 13.9l-2.3-11H363v204.8l44.4-9.4.1-50.2c6.4 4.7 15.9 11.2 31.4 11.2 31.8 0 60.8-23.2 60.8-79.6.1-51.6-29.3-79.7-60.5-79.7zm-10.6 122.5c-10.4 0-16.6-3.8-20.9-8.4l-.3-66c4.6-5.1 11-8.8 21.2-8.8 16.2 0 27.4 18.2 27.4 41.4.1 23.9-10.9 41.8-27.4 41.8zm-126.7 33.7h44.6V183.2h-44.6z\"]\n};\nvar faStripeS = {\n prefix: 'fab',\n iconName: 'stripe-s',\n icon: [384, 512, [], \"f42a\", \"M155.3 154.6c0-22.3 18.6-30.9 48.4-30.9 43.4 0 98.5 13.3 141.9 36.7V26.1C298.3 7.2 251.1 0 203.8 0 88.1 0 11 60.4 11 161.4c0 157.9 216.8 132.3 216.8 200.4 0 26.4-22.9 34.9-54.7 34.9-47.2 0-108.2-19.5-156.1-45.5v128.5a396.09 396.09 0 0 0 156 32.4c118.6 0 200.3-51 200.3-153.6 0-170.2-218-139.7-218-203.9z\"]\n};\nvar faStudiovinari = {\n prefix: 'fab',\n iconName: 'studiovinari',\n icon: [512, 512, [], \"f3f8\", \"M480.3 187.7l4.2 28v28l-25.1 44.1-39.8 78.4-56.1 67.5-79.1 37.8-17.7 24.5-7.7 12-9.6 4s17.3-63.6 19.4-63.6c2.1 0 20.3.7 20.3.7l66.7-38.6-92.5 26.1-55.9 36.8-22.8 28-6.6 1.4 20.8-73.6 6.9-5.5 20.7 12.9 88.3-45.2 56.8-51.5 14.8-68.4-125.4 23.3 15.2-18.2-173.4-53.3 81.9-10.5-166-122.9L133.5 108 32.2 0l252.9 126.6-31.5-38L378 163 234.7 64l18.7 38.4-49.6-18.1L158.3 0l194.6 122L310 66.2l108 96.4 12-8.9-21-16.4 4.2-37.8L451 89.1l29.2 24.7 11.5 4.2-7 6.2 8.5 12-13.1 7.4-10.3 20.2 10.5 23.9z\"]\n};\nvar faStumbleupon = {\n prefix: 'fab',\n iconName: 'stumbleupon',\n icon: [512, 512, [], \"f1a4\", \"M502.9 266v69.7c0 62.1-50.3 112.4-112.4 112.4-61.8 0-112.4-49.8-112.4-111.3v-70.2l34.3 16 51.1-15.2V338c0 14.7 12 26.5 26.7 26.5S417 352.7 417 338v-72h85.9zm-224.7-58.2l34.3 16 51.1-15.2V173c0-60.5-51.1-109-112.1-109-60.8 0-112.1 48.2-112.1 108.2v162.4c0 14.9-12 26.7-26.7 26.7S86 349.5 86 334.6V266H0v69.7C0 397.7 50.3 448 112.4 448c61.6 0 112.4-49.5 112.4-110.8V176.9c0-14.7 12-26.7 26.7-26.7s26.7 12 26.7 26.7v30.9z\"]\n};\nvar faStumbleuponCircle = {\n prefix: 'fab',\n iconName: 'stumbleupon-circle',\n icon: [496, 512, [], \"f1a3\", \"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm0 177.5c-9.8 0-17.8 8-17.8 17.8v106.9c0 40.9-33.9 73.9-74.9 73.9-41.4 0-74.9-33.5-74.9-74.9v-46.5h57.3v45.8c0 10 8 17.8 17.8 17.8s17.8-7.9 17.8-17.8V200.1c0-40 34.2-72.1 74.7-72.1 40.7 0 74.7 32.3 74.7 72.6v23.7l-34.1 10.1-22.9-10.7v-20.6c.1-9.6-7.9-17.6-17.7-17.6zm167.6 123.6c0 41.4-33.5 74.9-74.9 74.9-41.2 0-74.9-33.2-74.9-74.2V263l22.9 10.7 34.1-10.1v47.1c0 9.8 8 17.6 17.8 17.6s17.8-7.9 17.8-17.6v-48h57.3c-.1 45.9-.1 46.4-.1 46.4z\"]\n};\nvar faSuperpowers = {\n prefix: 'fab',\n iconName: 'superpowers',\n icon: [448, 512, [], \"f2dd\", \"M448 32c-83.3 11-166.8 22-250 33-92 12.5-163.3 86.7-169 180-3.3 55.5 18 109.5 57.8 148.2L0 480c83.3-11 166.5-22 249.8-33 91.8-12.5 163.3-86.8 168.7-179.8 3.5-55.5-18-109.5-57.7-148.2L448 32zm-79.7 232.3c-4.2 79.5-74 139.2-152.8 134.5-79.5-4.7-140.7-71-136.3-151 4.5-79.2 74.3-139.3 153-134.5 79.3 4.7 140.5 71 136.1 151z\"]\n};\nvar faSupple = {\n prefix: 'fab',\n iconName: 'supple',\n icon: [640, 512, [], \"f3f9\", \"M640 262.5c0 64.1-109 116.1-243.5 116.1-24.8 0-48.6-1.8-71.1-5 7.7.4 15.5.6 23.4.6 134.5 0 243.5-56.9 243.5-127.1 0-29.4-19.1-56.4-51.2-78 60 21.1 98.9 55.1 98.9 93.4zM47.7 227.9c-.1-70.2 108.8-127.3 243.3-127.6 7.9 0 15.6.2 23.3.5-22.5-3.2-46.3-4.9-71-4.9C108.8 96.3-.1 148.5 0 212.6c.1 38.3 39.1 72.3 99.3 93.3-32.3-21.5-51.5-48.6-51.6-78zm60.2 39.9s10.5 13.2 29.3 13.2c17.9 0 28.4-11.5 28.4-25.1 0-28-40.2-25.1-40.2-39.7 0-5.4 5.3-9.1 12.5-9.1 5.7 0 11.3 2.6 11.3 6.6v3.9h14.2v-7.9c0-12.1-15.4-16.8-25.4-16.8-16.5 0-28.5 10.2-28.5 24.1 0 26.6 40.2 25.4 40.2 39.9 0 6.6-5.8 10.1-12.3 10.1-11.9 0-20.7-10.1-20.7-10.1l-8.8 10.9zm120.8-73.6v54.4c0 11.3-7.1 17.8-17.8 17.8-10.7 0-17.8-6.5-17.8-17.7v-54.5h-15.8v55c0 18.9 13.4 31.9 33.7 31.9 20.1 0 33.4-13 33.4-31.9v-55h-15.7zm34.4 85.4h15.8v-29.5h15.5c16 0 27.2-11.5 27.2-28.1s-11.2-27.8-27.2-27.8h-39.1v13.4h7.8v72zm15.8-43v-29.1h12.9c8.7 0 13.7 5.7 13.7 14.4 0 8.9-5.1 14.7-14 14.7h-12.6zm57 43h15.8v-29.5h15.5c16 0 27.2-11.5 27.2-28.1s-11.2-27.8-27.2-27.8h-39.1v13.4h7.8v72zm15.7-43v-29.1h12.9c8.7 0 13.7 5.7 13.7 14.4 0 8.9-5 14.7-14 14.7h-12.6zm57.1 34.8c0 5.8 2.4 8.2 8.2 8.2h37.6c5.8 0 8.2-2.4 8.2-8.2v-13h-14.3v5.2c0 1.7-1 2.6-2.6 2.6h-18.6c-1.7 0-2.6-1-2.6-2.6v-61.2c0-5.7-2.4-8.2-8.2-8.2H401v13.4h5.2c1.7 0 2.6 1 2.6 2.6v61.2zm63.4 0c0 5.8 2.4 8.2 8.2 8.2H519c5.7 0 8.2-2.4 8.2-8.2v-13h-14.3v5.2c0 1.7-1 2.6-2.6 2.6h-19.7c-1.7 0-2.6-1-2.6-2.6v-20.3h27.7v-13.4H488v-22.4h19.2c1.7 0 2.6 1 2.6 2.6v5.2H524v-13c0-5.7-2.5-8.2-8.2-8.2h-51.6v13.4h7.8v63.9zm58.9-76v5.9h1.6v-5.9h2.7v-1.2h-7v1.2h2.7zm5.7-1.2v7.1h1.5v-5.7l2.3 5.7h1.3l2.3-5.7v5.7h1.5v-7.1h-2.3l-2.1 5.1-2.1-5.1h-2.4z\"]\n};\nvar faSuse = {\n prefix: 'fab',\n iconName: 'suse',\n icon: [640, 512, [], \"f7d6\", \"M471.08 102.66s-.3 18.3-.3 20.3c-9.1-3-74.4-24.1-135.7-26.3-51.9-1.8-122.8-4.3-223 57.3-19.4 12.4-73.9 46.1-99.6 109.7C7 277-.12 307 7 335.06a111 111 0 0 0 16.5 35.7c17.4 25 46.6 41.6 78.1 44.4 44.4 3.9 78.1-16 90-53.3 8.2-25.8 0-63.6-31.5-82.9-25.6-15.7-53.3-12.1-69.2-1.6-13.9 9.2-21.8 23.5-21.6 39.2.3 27.8 24.3 42.6 41.5 42.6a49 49 0 0 0 15.8-2.7c6.5-1.8 13.3-6.5 13.3-14.9 0-12.1-11.6-14.8-16.8-13.9-2.9.5-4.5 2-11.8 2.4-2-.2-12-3.1-12-14V316c.2-12.3 13.2-18 25.5-16.9 32.3 2.8 47.7 40.7 28.5 65.7-18.3 23.7-76.6 23.2-99.7-20.4-26-49.2 12.7-111.2 87-98.4 33.2 5.7 83.6 35.5 102.4 104.3h45.9c-5.7-17.6-8.9-68.3 42.7-68.3 56.7 0 63.9 39.9 79.8 68.3H460c-12.8-18.3-21.7-38.7-18.9-55.8 5.6-33.8 39.7-18.4 82.4-17.4 66.5.4 102.1-27 103.1-28 3.7-3.1 6.5-15.8 7-17.7 1.3-5.1-3.2-2.4-3.2-2.4-8.7 5.2-30.5 15.2-50.9 15.6-25.3.5-76.2-25.4-81.6-28.2-.3-.4.1 1.2-11-25.5 88.4 58.3 118.3 40.5 145.2 21.7.8-.6 4.3-2.9 3.6-5.7-13.8-48.1-22.4-62.7-34.5-69.6-37-21.6-125-34.7-129.2-35.3.1-.1-.9-.3-.9.7zm60.4 72.8a37.54 37.54 0 0 1 38.9-36.3c33.4 1.2 48.8 42.3 24.4 65.2-24.2 22.7-64.4 4.6-63.3-28.9zm38.6-25.3a26.27 26.27 0 1 0 25.4 27.2 26.19 26.19 0 0 0-25.4-27.2zm4.3 28.8c-15.4 0-15.4-15.6 0-15.6s15.4 15.64 0 15.64z\"]\n};\nvar faSwift = {\n prefix: 'fab',\n iconName: 'swift',\n icon: [448, 512, [], \"f8e1\", \"M448 156.09c0-4.51-.08-9-.2-13.52a196.31 196.31 0 0 0-2.58-29.42 99.62 99.62 0 0 0-9.22-28A94.08 94.08 0 0 0 394.84 44a99.17 99.17 0 0 0-28-9.22 195 195 0 0 0-29.43-2.59c-4.51-.12-9-.17-13.52-.2H124.14c-4.51 0-9 .08-13.52.2-2.45.07-4.91.15-7.37.27a171.68 171.68 0 0 0-22.06 2.32 103.06 103.06 0 0 0-21.21 6.1q-3.46 1.45-6.81 3.12a94.66 94.66 0 0 0-18.39 12.32c-1.88 1.61-3.69 3.28-5.43 5A93.86 93.86 0 0 0 12 85.17a99.45 99.45 0 0 0-9.22 28 196.31 196.31 0 0 0-2.54 29.4c-.13 4.51-.18 9-.21 13.52v199.83c0 4.51.08 9 .21 13.51a196.08 196.08 0 0 0 2.58 29.42 99.3 99.3 0 0 0 9.22 28A94.31 94.31 0 0 0 53.17 468a99.47 99.47 0 0 0 28 9.21 195 195 0 0 0 29.43 2.59c4.5.12 9 .17 13.52.2H323.91c4.51 0 9-.08 13.52-.2a196.59 196.59 0 0 0 29.44-2.59 99.57 99.57 0 0 0 28-9.21A94.22 94.22 0 0 0 436 426.84a99.3 99.3 0 0 0 9.22-28 194.79 194.79 0 0 0 2.59-29.42c.12-4.5.17-9 .2-13.51V172.14c-.01-5.35-.01-10.7-.01-16.05zm-69.88 241c-20-38.93-57.23-29.27-76.31-19.47-1.72 1-3.48 2-5.25 3l-.42.25c-39.5 21-92.53 22.54-145.85-.38A234.64 234.64 0 0 1 45 290.12a230.63 230.63 0 0 0 39.17 23.37c56.36 26.4 113 24.49 153 0-57-43.85-104.6-101-141.09-147.22a197.09 197.09 0 0 1-18.78-25.9c43.7 40 112.7 90.22 137.48 104.12-52.57-55.49-98.89-123.94-96.72-121.74 82.79 83.42 159.18 130.59 159.18 130.59 2.88 1.58 5 2.85 6.73 4a127.44 127.44 0 0 0 4.16-12.47c13.22-48.33-1.66-103.58-35.31-149.2C329.61 141.75 375 229.34 356.4 303.42c-.44 1.73-.95 3.4-1.44 5.09 38.52 47.4 28.04 98.17 23.13 88.59z\"]\n};\nvar faSymfony = {\n prefix: 'fab',\n iconName: 'symfony',\n icon: [512, 512, [], \"f83d\", \"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm133.74 143.54c-11.47.41-19.4-6.45-19.77-16.87-.27-9.18 6.68-13.44 6.53-18.85-.23-6.55-10.16-6.82-12.87-6.67-39.78 1.29-48.59 57-58.89 113.85 21.43 3.15 36.65-.72 45.14-6.22 12-7.75-3.34-15.72-1.42-24.56 4-18.16 32.55-19 32 5.3-.36 17.86-25.92 41.81-77.6 35.7-10.76 59.52-18.35 115-58.2 161.72-29 34.46-58.4 39.82-71.58 40.26-24.65.85-41-12.31-41.58-29.84-.56-17 14.45-26.26 24.31-26.59 21.89-.75 30.12 25.67 14.88 34-12.09 9.71.11 12.61 2.05 12.55 10.42-.36 17.34-5.51 22.18-9 24-20 33.24-54.86 45.35-118.35 8.19-49.66 17-78 18.23-82-16.93-12.75-27.08-28.55-49.85-34.72-15.61-4.23-25.12-.63-31.81 7.83-7.92 10-5.29 23 2.37 30.7l12.63 14c15.51 17.93 24 31.87 20.8 50.62-5.06 29.93-40.72 52.9-82.88 39.94-36-11.11-42.7-36.56-38.38-50.62 7.51-24.15 42.36-11.72 34.62 13.6-2.79 8.6-4.92 8.68-6.28 13.07-4.56 14.77 41.85 28.4 51-1.39 4.47-14.52-5.3-21.71-22.25-39.85-28.47-31.75-16-65.49 2.95-79.67C204.23 140.13 251.94 197 262 205.29c37.17-109 100.53-105.46 102.43-105.53 25.16-.81 44.19 10.59 44.83 28.65.25 7.69-4.17 22.59-19.52 23.13z\"]\n};\nvar faTeamspeak = {\n prefix: 'fab',\n iconName: 'teamspeak',\n icon: [512, 512, [], \"f4f9\", \"M244.2 346.79c2.4-12.3-12-30-32.4-48.7-20.9-19.2-48.2-39.1-63.4-46.6-21.7-12-41.7-1.8-46.3 22.7-5 26.2 0 51.4 14.5 73.9 10.2 15.5 25.4 22.7 43.4 24 11.6.6 52.5 2.2 61.7-1 11.9-4.3 20.1-11.8 22.5-24.3zm205 20.8a5.22 5.22 0 0 0-8.3 2.4c-8 25.4-44.7 112.5-172.1 121.5-149.7 10.5 80.3 43.6 145.4-6.4 22.7-17.4 47.6-35 46.6-85.4-.4-10.1-4.9-26.69-11.6-32.1zm62-122.4c-.3-18.9-8.6-33.4-26-42.2-2.9-1.3-5-2.7-5.9-6.4A222.64 222.64 0 0 0 438.9 103c-1.1-1.5-3.5-3.2-2.2-5 8.5-11.5-.3-18-7-24.4Q321.4-31.11 177.4 13.09c-40.1 12.3-73.9 35.6-102 67.4-4 4.3-6.7 9.1-3 14.5 3 4 1.3 6.2-1 9.3C51.6 132 38.2 162.59 32.1 196c-.7 4.3-2.9 6-6.4 7.8-14.2 7-22.5 18.5-24.9 34L0 264.29v20.9c0 30.8 21 50.4 51.8 49 7.7-.3 11.7-4.3 12-11.5 2-77.5-2.4-95.4 3.7-125.8C92.1 72.39 234.3 5 345.3 65.39 411.4 102 445.7 159 447.6 234.79c.8 28.2 0 56.5 0 84.6 0 7 2.2 12.5 9.4 14.2 24.1 5 49.2-12 53.2-36.7 2.9-17.1 1-34.5 1-51.7zm-159.6 131.5c36.5 2.8 59.3-28.5 58.4-60.5-2.1-45.2-66.2-16.5-87.8-8-73.2 28.1-45 54.9-22.2 60.8z\"]\n};\nvar faTelegram = {\n prefix: 'fab',\n iconName: 'telegram',\n icon: [496, 512, [], \"f2c6\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm121.8 169.9l-40.7 191.8c-3 13.6-11.1 16.9-22.4 10.5l-62-45.7-29.9 28.8c-3.3 3.3-6.1 6.1-12.5 6.1l4.4-63.1 114.9-103.8c5-4.4-1.1-6.9-7.7-2.5l-142 89.4-61.2-19.1c-13.3-4.2-13.6-13.3 2.8-19.7l239.1-92.2c11.1-4 20.8 2.7 17.2 19.5z\"]\n};\nvar faTelegramPlane = {\n prefix: 'fab',\n iconName: 'telegram-plane',\n icon: [448, 512, [], \"f3fe\", \"M446.7 98.6l-67.6 318.8c-5.1 22.5-18.4 28.1-37.3 17.5l-103-75.9-49.7 47.8c-5.5 5.5-10.1 10.1-20.7 10.1l7.4-104.9 190.9-172.5c8.3-7.4-1.8-11.5-12.9-4.1L117.8 284 16.2 252.2c-22.1-6.9-22.5-22.1 4.6-32.7L418.2 66.4c18.4-6.9 34.5 4.1 28.5 32.2z\"]\n};\nvar faTencentWeibo = {\n prefix: 'fab',\n iconName: 'tencent-weibo',\n icon: [384, 512, [], \"f1d5\", \"M72.3 495.8c1.4 19.9-27.6 22.2-29.7 2.9C31 368.8 73.7 259.2 144 185.5c-15.6-34 9.2-77.1 50.6-77.1 30.3 0 55.1 24.6 55.1 55.1 0 44-49.5 70.8-86.9 45.1-65.7 71.3-101.4 169.8-90.5 287.2zM192 .1C66.1.1-12.3 134.3 43.7 242.4 52.4 259.8 79 246.9 70 229 23.7 136.4 91 29.8 192 29.8c75.4 0 136.9 61.4 136.9 136.9 0 90.8-86.9 153.9-167.7 133.1-19.1-4.1-25.6 24.4-6.6 29.1 110.7 23.2 204-60 204-162.3C358.6 74.7 284 .1 192 .1z\"]\n};\nvar faTheRedYeti = {\n prefix: 'fab',\n iconName: 'the-red-yeti',\n icon: [512, 512, [], \"f69d\", \"M488.23 241.7l20.7 7.1c-9.6-23.9-23.9-37-31.7-44.8l7.1-18.2c.2 0 12.3-27.8-2.5-30.7-.6-11.3-6.6-27-18.4-27-7.6-10.6-17.7-12.3-30.7-5.9a122.2 122.2 0 0 0-25.3 16.5c-5.3-6.4-3 .4-3-29.8-37.1-24.3-45.4-11.7-74.8 3l.5.5a239.36 239.36 0 0 0-68.4-13.3c-5.5-8.7-18.6-19.1-25.1-25.1l24.8 7.1c-5.5-5.5-26.8-12.9-34.2-15.2 18.2-4.1 29.8-20.8 42.5-33-34.9-10.1-67.9-5.9-97.9 11.8l12-44.2L182 0c-31.6 24.2-33 41.9-33.7 45.5-.9-2.4-6.3-19.6-15.2-27a35.12 35.12 0 0 0-.5 25.3c3 8.4 5.9 14.8 8.4 18.9-16-3.3-28.3-4.9-49.2 0h-3.7l33 14.3a194.26 194.26 0 0 0-46.7 67.4l-1.7 8.4 1.7 1.7 7.6-4.7c-3.3 11.6-5.3 19.4-6.6 25.8a200.18 200.18 0 0 0-27.8 40.3c-15 1-31.8 10.8-40.3 14.3l3 3.4 28.8 1c-.5 1-.7 2.2-1.2 3.2-7.3 6.4-39.8 37.7-33 80.7l20.2-22.4c.5 1.7.7 3.4 1.2 5.2 0 25.5.4 89.6 64.9 150.5 43.6 40 96 60.2 157.5 60.2 121.7 0 223-87.3 223-211.5 6.8-9.7-1.2 3 16.7-25.1l13 14.3 2.5-.5A181.84 181.84 0 0 0 495 255a44.74 44.74 0 0 0-6.8-13.3zM398 111.2l-.5 21.9c5.5 18.1 16.9 17.2 22.4 17.2l-3.4-4.7 22.4-5.4a242.44 242.44 0 0 1-27 0c12.8-2.1 33.3-29 43-11.3 3.4 7.6 6.4 17.2 9.3 27.8l1.7-5.9a56.38 56.38 0 0 1-1.7-15.2c5.4.5 8.8 3.4 9.3 10.1.5 6.4 1.7 14.8 3.4 25.3l4.7-11.3c4.6 0 4.5-3.6-2.5 20.7-20.9-8.7-35.1-8.4-46.5-8.4l18.2-16c-25.3 8.2-33 10.8-54.8 20.9-1.1-5.4-5-13.5-16-19.9-3.2 3.8-2.8.9-.7 14.8h-2.5a62.32 62.32 0 0 0-8.4-23.1l4.2-3.4c8.4-7.1 11.8-14.3 10.6-21.9-.5-6.4-5.4-13.5-13.5-20.7 5.6-3.4 15.2-.4 28.3 8.5zm-39.6-10.1c2.7 1.9 11.4 5.4 18.9 17.2 4.2 8.4 4 9.8 3.4 11.1-.5 2.4-.5 4.3-3 7.1-1.7 2.5-5.4 4.7-11.8 7.6-7.6-13-16.5-23.6-27.8-31.2zM91 143.1l1.2-1.7c1.2-2.9 4.2-7.6 9.3-15.2l2.5-3.4-13 12.3 5.4-4.7-10.1 9.3-4.2 1.2c12.3-24.1 23.1-41.3 32.5-50.2 9.3-9.3 16-16 20.2-19.4l-6.4 1.2c-11.3-4.2-19.4-7.1-24.8-8.4 2.5-.5 3.7-.5 3.2-.5 10.3 0 17.5.5 20.9 1.2a52.35 52.35 0 0 0 16 2.5l.5-1.7-8.4-35.8 13.5 29a42.89 42.89 0 0 0 5.9-14.3c1.7-6.4 5.4-13 10.1-19.4s7.6-10.6 9.3-11.3a234.68 234.68 0 0 0-6.4 25.3l-1.7 7.1-.5 4.7 2.5 2.5C190.4 39.9 214 34 239.8 34.5l21.1.5c-11.8 13.5-27.8 21.9-48.5 24.8a201.26 201.26 0 0 1-23.4 2.9l-.2-.5-2.5-1.2a20.75 20.75 0 0 0-14 2c-2.5-.2-4.9-.5-7.1-.7l-2.5 1.7.5 1.2c2 .2 3.9.5 6.2.7l-2 3.4 3.4-.5-10.6 11.3c-4.2 3-5.4 6.4-4.2 9.3l5.4-3.4h1.2a39.4 39.4 0 0 1 25.3-15.2v-3c6.4.5 13 1 19.4 1.2 6.4 0 8.4.5 5.4 1.2a189.6 189.6 0 0 1 20.7 13.5c13.5 10.1 23.6 21.9 30 35.4 8.8 18.2 13.5 37.1 13.5 56.6a141.13 141.13 0 0 1-3 28.3 209.91 209.91 0 0 1-16 46l2.5.5c18.2-19.7 41.9-16 49.2-16l-6.4 5.9 22.4 17.7-1.7 30.7c-5.4-12.3-16.5-21.1-33-27.8 16.5 14.8 23.6 21.1 21.9 20.2-4.8-2.8-3.5-1.9-10.8-3.7 4.1 4.1 17.5 18.8 18.2 20.7l.2.2-.2.2c0 1.8 1.6-1.2-14 22.9-75.2-15.3-106.27-42.7-141.2-63.2l11.8 1.2c-11.8-18.5-15.6-17.7-38.4-26.1L149 225c-8.8-3-18.2-3-28.3.5l7.6-10.6-1.2-1.7c-14.9 4.3-19.8 9.2-22.6 11.3-1.1-5.5-2.8-12.4-12.3-28.8l-1.2 27-13.2-5c1.5-25.2 5.4-50.5 13.2-74.6zm276.5 330c-49.9 25-56.1 22.4-59 23.9-29.8-11.8-50.9-31.7-63.5-58.8l30 16.5c-9.8-9.3-18.3-16.5-38.4-44.3l11.8 23.1-17.7-7.6c14.2 21.1 23.5 51.7 66.6 73.5-120.8 24.2-199-72.1-200.9-74.3a262.57 262.57 0 0 0 35.4 24.8c3.4 1.7 7.1 2.5 10.1 1.2l-16-20.7c9.2 4.2 9.5 4.5 69.1 29-42.5-20.7-73.8-40.8-93.2-60.2-.5 6.4-1.2 10.1-1.2 10.1a80.25 80.25 0 0 1 20.7 26.6c-39-18.9-57.6-47.6-71.3-82.6 49.9 55.1 118.9 37.5 120.5 37.1 34.8 16.4 69.9 23.6 113.9 10.6 3.3 0 20.3 17 25.3 39.1l4.2-3-2.5-23.6c9 9 24.9 22.6 34.4 13-15.6-5.3-23.5-9.5-29.5-31.7 4.6 4.2 7.6 9 27.8 15l1.2-1.2-10.5-14.2c11.7-4.8-3.5 1 32-10.8 4.3 34.3 9 49.2.7 89.5zm115.3-214.4l-2.5.5 3 9.3c-3.5 5.9-23.7 44.3-71.6 79.7-39.5 29.8-76.6 39.1-80.9 40.3l-7.6-7.1-1.2 3 14.3 16-7.1-4.7 3.4 4.2h-1.2l-21.9-13.5 9.3 26.6-19-27.9-1.2 2.5 7.6 29c-6.1-8.2-21-32.6-56.8-39.6l32.5 21.2a214.82 214.82 0 0 1-93.2-6.4c-4.2-1.2-8.9-2.5-13.5-4.2l1.2-3-44.8-22.4 26.1 22.4c-57.7 9.1-113-25.4-126.4-83.4l-2.5-16.4-22.27 22.3c19.5-57.5 25.6-57.9 51.4-70.1-9.1-5.3-1.6-3.3-38.4-9.3 15.8-5.8 33-15.4 73 5.2a18.5 18.5 0 0 1 3.7-1.7c.6-3.2.4-.8 1-11.8 3.9 10 3.6 8.7 3 9.3l1.7.5c12.7-6.5 8.9-4.5 17-8.9l-5.4 13.5 22.3-5.8-8.4 8.4 2.5 2.5c4.5-1.8 30.3 3.4 40.8 16l-23.6-2.5c39.4 23 51.5 54 55.8 69.6l1.7-1.2c-2.8-22.3-12.4-33.9-16-40.1 4.2 5 39.2 34.6 110.4 46-11.3-.5-23.1 5.4-34.9 18.9l46.7-20.2-9.3 21.9c7.6-10.1 14.8-23.6 21.2-39.6v-.5l1.2-3-1.2 16c13.5-41.8 25.3-78.5 35.4-109.7l13.5-27.8v-2l-5.4-4.2h10.1l5.9 4.2 2.5-1.2-3.4-16 12.3 18.9 41.8-20.2-14.8 13 .5 2.9 17.7-.5a184 184 0 0 1 33 4.2l-23.6 2.5-1.2 3 26.6 23.1a254.21 254.21 0 0 1 27 32c-11.2-3.3-10.3-3.4-21.2-3.4l12.3 32.5zm-6.1-71.3l-3.9 13-14.3-11.8zm-254.8 7.1c1.7 10.6 4.7 17.7 8.8 21.9-9.3 6.6-27.5 13.9-46.5 16l.5 1.2a50.22 50.22 0 0 0 24.8-2.5l-7.1 13c4.2-1.7 10.1-7.1 17.7-14.8 11.9-5.5 12.7-5.1 20.2-16-12.7-6.4-15.7-13.7-18.4-18.8zm3.7-102.3c-6.4-3.4-10.6 3-12.3 18.9s2.5 29.5 11.8 39.6 18.2 10.6 26.1 3 3.4-23.6-11.3-47.7a39.57 39.57 0 0 0-14.27-13.8zm-4.7 46.3c5.4 2.2 10.5 1.9 12.3-10.6v-4.7l-1.2.5c-4.3-3.1-2.5-4.5-1.7-6.2l.5-.5c-.9-1.2-5-8.1-12.5 4.7-.5-13.5.5-21.9 3-24.8 1.2-2.5 4.7-1.2 11.3 4.2 6.4 5.4 11.3 16 15.2 32.5 6.5 28-19.8 26.2-26.9 4.9zm-45-5.5c1.6.3 9.3-1.1 9.3-14.8h-.5c-5.4-1.1-2.2-5.5-.7-5.9-1.7-3-3.4-4.2-5.4-4.7-8.1 0-11.6 12.7-8.1 21.2a7.51 7.51 0 0 0 5.43 4.2zM216 82.9l-2.5.5.5 3a48.94 48.94 0 0 1 26.1 5.9c-2.5-5.5-10-14.3-28.3-14.3l.5 2.5zm-71.8 49.4c21.7 16.8 16.5 21.4 46.5 23.6l-2.9-4.7a42.67 42.67 0 0 0 14.8-28.3c1.7-16-1.2-29.5-8.8-41.3l13-7.6a2.26 2.26 0 0 0-.5-1.7 14.21 14.21 0 0 0-13.5 1.7c-12.7 6.7-28 20.9-29 22.4-1.7 1.7-3.4 5.9-5.4 13.5a99.61 99.61 0 0 0-2.9 23.6c-4.7-8-10.5-6.4-19.9-5.9l7.1 7.6c-16.5 0-23.3 15.4-23.6 16 6.8 0 4.6-7.6 30-12.3-4.3-6.3-3.3-5-4.9-6.6zm18.7-18.7c1.2-7.6 3.4-13 6.4-17.2 5.4-6.4 10.6-10.1 16-11.8 4.2-1.7 7.1 1.2 10.1 9.3a72.14 72.14 0 0 1 3 25.3c-.5 9.3-3.4 17.2-8.4 23.1-2.9 3.4-5.4 5.9-6.4 7.6a39.21 39.21 0 0 1-11.3-.5l-7.1-3.4-5.4-6.4c.8-10 1.3-18.8 3.1-26zm42 56.1c-34.8 14.4-34.7 14-36.1 14.3-20.8 4.7-19-24.4-18.9-24.8l5.9-1.2-.5-2.5c-20.2-2.6-31 4.2-32.5 4.9.5.5 3 3.4 5.9 9.3 4.2-6.4 8.8-10.1 15.2-10.6a83.47 83.47 0 0 0 1.7 33.7c.1.5 2.6 17.4 27.5 24.1 11.3 3 27 1.2 48.9-5.4l-9.2.5c-4.2-14.8-6.4-24.8-5.9-29.5 11.3-8.8 21.9-11.3 30.7-7.6h2.5l-11.8-7.6-7.1.5c-5.9 1.2-12.3 4.2-19.4 8.4z\"]\n};\nvar faThemeco = {\n prefix: 'fab',\n iconName: 'themeco',\n icon: [448, 512, [], \"f5c6\", \"M202.9 8.43c9.9-5.73 26-5.82 35.95-.21L430 115.85c10 5.6 18 19.44 18 30.86V364c0 11.44-8.06 25.29-18 31L238.81 503.74c-9.93 5.66-26 5.57-35.85-.21L17.86 395.12C8 389.34 0 375.38 0 364V146.71c0-11.44 8-25.36 17.91-31.08zm-77.4 199.83c-15.94 0-31.89.14-47.83.14v101.45H96.8V280h28.7c49.71 0 49.56-71.74 0-71.74zm140.14 100.29l-30.73-34.64c37-7.51 34.8-65.23-10.87-65.51-16.09 0-32.17-.14-48.26-.14v101.59h19.13v-33.91h18.41l29.56 33.91h22.76zm-41.59-82.32c23.34 0 23.26 32.46 0 32.46h-29.13v-32.46zm-95.56-1.6c21.18 0 21.11 38.85 0 38.85H96.18v-38.84zm192.65-18.25c-68.46 0-71 105.8 0 105.8 69.48-.01 69.41-105.8 0-105.8zm0 17.39c44.12 0 44.8 70.86 0 70.86s-44.43-70.86 0-70.86z\"]\n};\nvar faThemeisle = {\n prefix: 'fab',\n iconName: 'themeisle',\n icon: [512, 512, [], \"f2b2\", \"M208 88.286c0-10 6.286-21.714 17.715-21.714 11.142 0 17.714 11.714 17.714 21.714 0 10.285-6.572 21.714-17.714 21.714C214.286 110 208 98.571 208 88.286zm304 160c0 36.001-11.429 102.286-36.286 129.714-22.858 24.858-87.428 61.143-120.857 70.572l-1.143.286v32.571c0 16.286-12.572 30.571-29.143 30.571-10 0-19.429-5.714-24.572-14.286-5.427 8.572-14.856 14.286-24.856 14.286-10 0-19.429-5.714-24.858-14.286-5.142 8.572-14.571 14.286-24.57 14.286-10.286 0-19.429-5.714-24.858-14.286-5.143 8.572-14.571 14.286-24.571 14.286-18.857 0-29.429-15.714-29.429-32.857-16.286 12.285-35.715 19.428-56.571 19.428-22 0-43.429-8.285-60.286-22.857 10.285-.286 20.571-2.286 30.285-5.714-20.857-5.714-39.428-18.857-52-36.286 21.37 4.645 46.209 1.673 67.143-11.143-22-22-56.571-58.857-68.572-87.428C1.143 321.714 0 303.714 0 289.429c0-49.714 20.286-160 86.286-160 10.571 0 18.857 4.858 23.143 14.857a158.792 158.792 0 0 1 12-15.428c2-2.572 5.714-5.429 7.143-8.286 7.999-12.571 11.714-21.142 21.714-34C182.571 45.428 232 17.143 285.143 17.143c6 0 12 .285 17.714 1.143C313.714 6.571 328.857 0 344.572 0c14.571 0 29.714 6 40 16.286.857.858 1.428 2.286 1.428 3.428 0 3.714-10.285 13.429-12.857 16.286 4.286 1.429 15.714 6.858 15.714 12 0 2.857-2.857 5.143-4.571 7.143 31.429 27.714 49.429 67.143 56.286 108 4.286-5.143 10.285-8.572 17.143-8.572 10.571 0 20.857 7.144 28.571 14.001C507.143 187.143 512 221.714 512 248.286zM188 89.428c0 18.286 12.571 37.143 32.286 37.143 19.714 0 32.285-18.857 32.285-37.143 0-18-12.571-36.857-32.285-36.857-19.715 0-32.286 18.858-32.286 36.857zM237.714 194c0-19.714 3.714-39.143 8.571-58.286-52.039 79.534-13.531 184.571 68.858 184.571 21.428 0 42.571-7.714 60-20 2-7.429 3.714-14.857 3.714-22.572 0-14.286-6.286-21.428-20.572-21.428-4.571 0-9.143.857-13.429 1.714-63.343 12.668-107.142 3.669-107.142-63.999zm-41.142 254.858c0-11.143-8.858-20.857-20.286-20.857-11.429 0-20 9.715-20 20.857v32.571c0 11.143 8.571 21.142 20 21.142 11.428 0 20.286-9.715 20.286-21.142v-32.571zm49.143 0c0-11.143-8.572-20.857-20-20.857-11.429 0-20.286 9.715-20.286 20.857v32.571c0 11.143 8.857 21.142 20.286 21.142 11.428 0 20-10 20-21.142v-32.571zm49.713 0c0-11.143-8.857-20.857-20.285-20.857-11.429 0-20.286 9.715-20.286 20.857v32.571c0 11.143 8.857 21.142 20.286 21.142 11.428 0 20.285-9.715 20.285-21.142v-32.571zm49.715 0c0-11.143-8.857-20.857-20.286-20.857-11.428 0-20.286 9.715-20.286 20.857v32.571c0 11.143 8.858 21.142 20.286 21.142 11.429 0 20.286-10 20.286-21.142v-32.571zM421.714 286c-30.857 59.142-90.285 102.572-158.571 102.572-96.571 0-160.571-84.572-160.571-176.572 0-16.857 2-33.429 6-49.714-20 33.715-29.714 72.572-29.714 111.429 0 60.286 24.857 121.715 71.429 160.857 5.143-9.714 14.857-16.286 26-16.286 10 0 19.428 5.714 24.571 14.286 5.429-8.571 14.571-14.286 24.858-14.286 10 0 19.428 5.714 24.571 14.286 5.429-8.571 14.857-14.286 24.858-14.286 10 0 19.428 5.714 24.857 14.286 5.143-8.571 14.571-14.286 24.572-14.286 10.857 0 20.857 6.572 25.714 16 43.427-36.286 68.569-92 71.426-148.286zm10.572-99.714c0-53.714-34.571-105.714-92.572-105.714-30.285 0-58.571 15.143-78.857 36.857C240.862 183.812 233.41 254 302.286 254c28.805 0 97.357-28.538 84.286 36.857 28.857-26 45.714-65.714 45.714-104.571z\"]\n};\nvar faThinkPeaks = {\n prefix: 'fab',\n iconName: 'think-peaks',\n icon: [576, 512, [], \"f731\", \"M465.4 409.4l87.1-150.2-32-.3-55.1 95L259.2 0 23 407.4l32 .3L259.2 55.6zm-355.3-44.1h32.1l117.4-202.5L463 511.9l32.5.1-235.8-404.6z\"]\n};\nvar faTradeFederation = {\n prefix: 'fab',\n iconName: 'trade-federation',\n icon: [496, 512, [], \"f513\", \"M248 8.8c-137 0-248 111-248 248s111 248 248 248 248-111 248-248-111-248-248-248zm0 482.8c-129.7 0-234.8-105.1-234.8-234.8S118.3 22 248 22s234.8 105.1 234.8 234.8S377.7 491.6 248 491.6zm155.1-328.5v-46.8H209.3V198H54.2l36.7 46h117.7v196.8h48.8V245h83.3v-47h-83.3v-34.8h145.7zm-73.3 45.1v23.9h-82.9v197.4h-26.8V232.1H96.3l-20.1-23.9h143.9v-80.6h171.8V152h-145v56.2zm-161.3-69l-12.4-20.7 2.1 23.8-23.5 5.4 23.3 5.4-2.1 24 12.3-20.5 22.2 9.5-15.7-18.1 15.8-18.1zm-29.6-19.7l9.3-11.5-12.7 5.9-8-12.4 1.7 13.9-14.3 3.8 13.7 2.7-.8 14.7 6.8-12.2 13.8 5.3zm165.4 145.2l-13.1 5.6-7.3-12.2 1.3 14.2-13.9 3.2 13.9 3.2-1.2 14.2 7.3-12.2 13.1 5.5-9.4-10.7zm106.9-77.2l-20.9 9.1-12-19.6 2.2 22.7-22.3 5.4 22.2 4.9-1.8 22.9 11.5-19.6 21.2 8.8-15.1-17zM248 29.9c-125.3 0-226.9 101.6-226.9 226.9S122.7 483.7 248 483.7s226.9-101.6 226.9-226.9S373.3 29.9 248 29.9zM342.6 196v51h-83.3v195.7h-52.7V245.9H89.9l-40-49.9h157.4v-81.6h197.8v50.7H259.4V196zM248 43.2c60.3 0 114.8 25 153.6 65.2H202.5V190H45.1C73.1 104.8 153.4 43.2 248 43.2zm0 427.1c-117.9 0-213.6-95.6-213.6-213.5 0-21.2 3.1-41.8 8.9-61.1L87.1 252h114.7v196.8h64.6V253h83.3v-62.7h-83.2v-19.2h145.6v-50.8c30.8 37 49.3 84.6 49.3 136.5.1 117.9-95.5 213.5-213.4 213.5zM178.8 275l-11-21.4 1.7 24.5-23.7 3.9 23.8 5.9-3.7 23.8 13-20.9 21.5 10.8-15.8-18.8 16.9-17.1z\"]\n};\nvar faTrello = {\n prefix: 'fab',\n iconName: 'trello',\n icon: [448, 512, [], \"f181\", \"M392.3 32H56.1C25.1 32 0 57.1 0 88c-.1 0 0-4 0 336 0 30.9 25.1 56 56 56h336.2c30.8-.2 55.7-25.2 55.7-56V88c.1-30.8-24.8-55.8-55.6-56zM197 371.3c-.2 14.7-12.1 26.6-26.9 26.6H87.4c-14.8.1-26.9-11.8-27-26.6V117.1c0-14.8 12-26.9 26.9-26.9h82.9c14.8 0 26.9 12 26.9 26.9v254.2zm193.1-112c0 14.8-12 26.9-26.9 26.9h-81c-14.8 0-26.9-12-26.9-26.9V117.2c0-14.8 12-26.9 26.8-26.9h81.1c14.8 0 26.9 12 26.9 26.9v142.1z\"]\n};\nvar faTripadvisor = {\n prefix: 'fab',\n iconName: 'tripadvisor',\n icon: [576, 512, [], \"f262\", \"M166.4 280.521c0 13.236-10.73 23.966-23.966 23.966s-23.966-10.73-23.966-23.966 10.73-23.966 23.966-23.966 23.966 10.729 23.966 23.966zm264.962-23.956c-13.23 0-23.956 10.725-23.956 23.956 0 13.23 10.725 23.956 23.956 23.956 13.23 0 23.956-10.725 23.956-23.956-.001-13.231-10.726-23.956-23.956-23.956zm89.388 139.49c-62.667 49.104-153.276 38.109-202.379-24.559l-30.979 46.325-30.683-45.939c-48.277 60.39-135.622 71.891-197.885 26.055-64.058-47.158-77.759-137.316-30.601-201.374A186.762 186.762 0 0 0 0 139.416l90.286-.05a358.48 358.48 0 0 1 197.065-54.03 350.382 350.382 0 0 1 192.181 53.349l96.218.074a185.713 185.713 0 0 0-28.352 57.649c46.793 62.747 34.964 151.37-26.648 199.647zM259.366 281.761c-.007-63.557-51.535-115.075-115.092-115.068C80.717 166.7 29.2 218.228 29.206 281.785c.007 63.557 51.535 115.075 115.092 115.068 63.513-.075 114.984-51.539 115.068-115.052v-.04zm28.591-10.455c5.433-73.44 65.51-130.884 139.12-133.022a339.146 339.146 0 0 0-139.727-27.812 356.31 356.31 0 0 0-140.164 27.253c74.344 1.582 135.299 59.424 140.771 133.581zm251.706-28.767c-21.992-59.634-88.162-90.148-147.795-68.157-59.634 21.992-90.148 88.162-68.157 147.795v.032c22.038 59.607 88.198 90.091 147.827 68.113 59.615-22.004 90.113-88.162 68.125-147.783zm-326.039 37.975v.115c-.057 39.328-31.986 71.163-71.314 71.106-39.328-.057-71.163-31.986-71.106-71.314.057-39.328 31.986-71.163 71.314-71.106 39.259.116 71.042 31.94 71.106 71.199zm-24.512 0v-.084c-.051-25.784-20.994-46.645-46.778-46.594-25.784.051-46.645 20.994-46.594 46.777.051 25.784 20.994 46.645 46.777 46.594 25.726-.113 46.537-20.968 46.595-46.693zm313.423 0v.048c-.02 39.328-31.918 71.194-71.247 71.173s-71.194-31.918-71.173-71.247c.02-39.328 31.918-71.194 71.247-71.173 39.29.066 71.121 31.909 71.173 71.199zm-24.504-.008c-.009-25.784-20.918-46.679-46.702-46.67-25.784.009-46.679 20.918-46.67 46.702.009 25.784 20.918 46.678 46.702 46.67 25.765-.046 46.636-20.928 46.67-46.693v-.009z\"]\n};\nvar faTumblr = {\n prefix: 'fab',\n iconName: 'tumblr',\n icon: [320, 512, [], \"f173\", \"M309.8 480.3c-13.6 14.5-50 31.7-97.4 31.7-120.8 0-147-88.8-147-140.6v-144H17.9c-5.5 0-10-4.5-10-10v-68c0-7.2 4.5-13.6 11.3-16 62-21.8 81.5-76 84.3-117.1.8-11 6.5-16.3 16.1-16.3h70.9c5.5 0 10 4.5 10 10v115.2h83c5.5 0 10 4.4 10 9.9v81.7c0 5.5-4.5 10-10 10h-83.4V360c0 34.2 23.7 53.6 68 35.8 4.8-1.9 9-3.2 12.7-2.2 3.5.9 5.8 3.4 7.4 7.9l22 64.3c1.8 5 3.3 10.6-.4 14.5z\"]\n};\nvar faTumblrSquare = {\n prefix: 'fab',\n iconName: 'tumblr-square',\n icon: [448, 512, [], \"f174\", \"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-82.3 364.2c-8.5 9.1-31.2 19.8-60.9 19.8-75.5 0-91.9-55.5-91.9-87.9v-90h-29.7c-3.4 0-6.2-2.8-6.2-6.2v-42.5c0-4.5 2.8-8.5 7.1-10 38.8-13.7 50.9-47.5 52.7-73.2.5-6.9 4.1-10.2 10-10.2h44.3c3.4 0 6.2 2.8 6.2 6.2v72h51.9c3.4 0 6.2 2.8 6.2 6.2v51.1c0 3.4-2.8 6.2-6.2 6.2h-52.1V321c0 21.4 14.8 33.5 42.5 22.4 3-1.2 5.6-2 8-1.4 2.2.5 3.6 2.1 4.6 4.9l13.8 40.2c1 3.2 2 6.7-.3 9.1z\"]\n};\nvar faTwitch = {\n prefix: 'fab',\n iconName: 'twitch',\n icon: [512, 512, [], \"f1e8\", \"M391.17,103.47H352.54v109.7h38.63ZM285,103H246.37V212.75H285ZM120.83,0,24.31,91.42V420.58H140.14V512l96.53-91.42h77.25L487.69,256V0ZM449.07,237.75l-77.22,73.12H294.61l-67.6,64v-64H140.14V36.58H449.07Z\"]\n};\nvar faTwitter = {\n prefix: 'fab',\n iconName: 'twitter',\n icon: [512, 512, [], \"f099\", \"M459.37 151.716c.325 4.548.325 9.097.325 13.645 0 138.72-105.583 298.558-298.558 298.558-59.452 0-114.68-17.219-161.137-47.106 8.447.974 16.568 1.299 25.34 1.299 49.055 0 94.213-16.568 130.274-44.832-46.132-.975-84.792-31.188-98.112-72.772 6.498.974 12.995 1.624 19.818 1.624 9.421 0 18.843-1.3 27.614-3.573-48.081-9.747-84.143-51.98-84.143-102.985v-1.299c13.969 7.797 30.214 12.67 47.431 13.319-28.264-18.843-46.781-51.005-46.781-87.391 0-19.492 5.197-37.36 14.294-52.954 51.655 63.675 129.3 105.258 216.365 109.807-1.624-7.797-2.599-15.918-2.599-24.04 0-57.828 46.782-104.934 104.934-104.934 30.213 0 57.502 12.67 76.67 33.137 23.715-4.548 46.456-13.32 66.599-25.34-7.798 24.366-24.366 44.833-46.132 57.827 21.117-2.273 41.584-8.122 60.426-16.243-14.292 20.791-32.161 39.308-52.628 54.253z\"]\n};\nvar faTwitterSquare = {\n prefix: 'fab',\n iconName: 'twitter-square',\n icon: [448, 512, [], \"f081\", \"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-48.9 158.8c.2 2.8.2 5.7.2 8.5 0 86.7-66 186.6-186.6 186.6-37.2 0-71.7-10.8-100.7-29.4 5.3.6 10.4.8 15.8.8 30.7 0 58.9-10.4 81.4-28-28.8-.6-53-19.5-61.3-45.5 10.1 1.5 19.2 1.5 29.6-1.2-30-6.1-52.5-32.5-52.5-64.4v-.8c8.7 4.9 18.9 7.9 29.6 8.3a65.447 65.447 0 0 1-29.2-54.6c0-12.2 3.2-23.4 8.9-33.1 32.3 39.8 80.8 65.8 135.2 68.6-9.3-44.5 24-80.6 64-80.6 18.9 0 35.9 7.9 47.9 20.7 14.8-2.8 29-8.3 41.6-15.8-4.9 15.2-15.2 28-28.8 36.1 13.2-1.4 26-5.1 37.8-10.2-8.9 13.1-20.1 24.7-32.9 34z\"]\n};\nvar faTypo3 = {\n prefix: 'fab',\n iconName: 'typo3',\n icon: [448, 512, [], \"f42b\", \"M178.7 78.4c0-24.7 5.4-32.4 13.9-39.4-69.5 8.5-149.3 34-176.3 66.4-5.4 7.7-9.3 20.8-9.3 37.1C7 246 113.8 480 191.1 480c36.3 0 97.3-59.5 146.7-139-7 2.3-11.6 2.3-18.5 2.3-57.2 0-140.6-198.5-140.6-264.9zM301.5 32c-30.1 0-41.7 5.4-41.7 36.3 0 66.4 53.8 198.5 101.7 198.5 26.3 0 78.8-99.7 78.8-182.3 0-40.9-67-52.5-138.8-52.5z\"]\n};\nvar faUber = {\n prefix: 'fab',\n iconName: 'uber',\n icon: [448, 512, [], \"f402\", \"M414.1 32H33.9C15.2 32 0 47.2 0 65.9V446c0 18.8 15.2 34 33.9 34H414c18.7 0 33.9-15.2 33.9-33.9V65.9C448 47.2 432.8 32 414.1 32zM237.6 391.1C163 398.6 96.4 344.2 88.9 269.6h94.4V290c0 3.7 3 6.8 6.8 6.8H258c3.7 0 6.8-3 6.8-6.8v-67.9c0-3.7-3-6.8-6.8-6.8h-67.9c-3.7 0-6.8 3-6.8 6.8v20.4H88.9c7-69.4 65.4-122.2 135.1-122.2 69.7 0 128.1 52.8 135.1 122.2 7.5 74.5-46.9 141.1-121.5 148.6z\"]\n};\nvar faUbuntu = {\n prefix: 'fab',\n iconName: 'ubuntu',\n icon: [496, 512, [], \"f7df\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm52.7 93c8.8-15.2 28.3-20.5 43.5-11.7 15.3 8.8 20.5 28.3 11.7 43.6-8.8 15.2-28.3 20.5-43.5 11.7-15.3-8.9-20.5-28.4-11.7-43.6zM87.4 287.9c-17.6 0-31.9-14.3-31.9-31.9 0-17.6 14.3-31.9 31.9-31.9 17.6 0 31.9 14.3 31.9 31.9 0 17.6-14.3 31.9-31.9 31.9zm28.1 3.1c22.3-17.9 22.4-51.9 0-69.9 8.6-32.8 29.1-60.7 56.5-79.1l23.7 39.6c-51.5 36.3-51.5 112.5 0 148.8L172 370c-27.4-18.3-47.8-46.3-56.5-79zm228.7 131.7c-15.3 8.8-34.7 3.6-43.5-11.7-8.8-15.3-3.6-34.8 11.7-43.6 15.2-8.8 34.7-3.6 43.5 11.7 8.8 15.3 3.6 34.8-11.7 43.6zm.3-69.5c-26.7-10.3-56.1 6.6-60.5 35-5.2 1.4-48.9 14.3-96.7-9.4l22.5-40.3c57 26.5 123.4-11.7 128.9-74.4l46.1.7c-2.3 34.5-17.3 65.5-40.3 88.4zm-5.9-105.3c-5.4-62-71.3-101.2-128.9-74.4l-22.5-40.3c47.9-23.7 91.5-10.8 96.7-9.4 4.4 28.3 33.8 45.3 60.5 35 23.1 22.9 38 53.9 40.2 88.5l-46 .6z\"]\n};\nvar faUikit = {\n prefix: 'fab',\n iconName: 'uikit',\n icon: [448, 512, [], \"f403\", \"M443.9 128v256L218 512 0 384V169.7l87.6 45.1v117l133.5 75.5 135.8-75.5v-151l-101.1-57.6 87.6-53.1L443.9 128zM308.6 49.1L223.8 0l-88.6 54.8 86 47.3 87.4-53z\"]\n};\nvar faUmbraco = {\n prefix: 'fab',\n iconName: 'umbraco',\n icon: [510, 512, [], \"f8e8\", \"M255.35 8C118.36 7.83 7.14 118.72 7 255.68c-.07 137 111 248.2 248 248.27 136.85 0 247.82-110.7 248-247.67S392.34 8.17 255.35 8zm145 266q-1.14 40.68-14 65t-43.51 35q-30.61 10.7-85.45 10.47h-4.6q-54.78.22-85.44-10.47t-43.52-35q-12.85-24.36-14-65a224.81 224.81 0 0 1 0-30.71 418.37 418.37 0 0 1 3.6-43.88c1.88-13.39 3.57-22.58 5.4-32 1-4.88 1.28-6.42 1.82-8.45a5.09 5.09 0 0 1 4.9-3.89h.69l32 5a5.07 5.07 0 0 1 4.16 5 5 5 0 0 1 0 .77l-1.7 8.78q-2.41 13.25-4.84 33.68a380.62 380.62 0 0 0-2.64 42.15q-.28 40.43 8.13 59.83a43.87 43.87 0 0 0 31.31 25.18A243 243 0 0 0 250 340.6h10.25a242.64 242.64 0 0 0 57.27-5.16 43.86 43.86 0 0 0 31.15-25.23q8.53-19.42 8.13-59.78a388 388 0 0 0-2.6-42.15q-2.48-20.38-4.89-33.68l-1.69-8.78a5 5 0 0 1 0-.77 5 5 0 0 1 4.2-5l32-5h.82a5 5 0 0 1 4.9 3.89c.55 2.05.81 3.57 1.83 8.45 1.82 9.62 3.52 18.78 5.39 32a415.71 415.71 0 0 1 3.61 43.88 228.06 228.06 0 0 1-.04 30.73z\"]\n};\nvar faUniregistry = {\n prefix: 'fab',\n iconName: 'uniregistry',\n icon: [384, 512, [], \"f404\", \"M192 480c39.5 0 76.2-11.8 106.8-32.2H85.3C115.8 468.2 152.5 480 192 480zm-89.1-193.1v-12.4H0v12.4c0 2.5 0 5 .1 7.4h103.1c-.2-2.4-.3-4.9-.3-7.4zm20.5 57H8.5c2.6 8.5 5.8 16.8 9.6 24.8h138.3c-12.9-5.7-24.1-14.2-33-24.8zm-17.7-34.7H1.3c.9 7.6 2.2 15 3.9 22.3h109.7c-4-6.9-7.2-14.4-9.2-22.3zm-2.8-69.3H0v17.3h102.9zm0-173.2H0v4.9h102.9zm0-34.7H0v2.5h102.9zm0 69.3H0v7.4h102.9zm0 104H0v14.8h102.9zm0-69.3H0v9.9h102.9zm0 34.6H0V183h102.9zm166.2 160.9h109.7c1.8-7.3 3.1-14.7 3.9-22.3H278.3c-2.1 7.9-5.2 15.4-9.2 22.3zm12-185.7H384V136H281.1zm0 37.2H384v-12.4H281.1zm0-74.3H384v-7.4H281.1zm0-76.7v2.5H384V32zm-203 410.9h227.7c11.8-8.7 22.7-18.6 32.2-29.7H44.9c9.6 11 21.4 21 33.2 29.7zm203-371.3H384v-4.9H281.1zm0 148.5H384v-14.8H281.1zM38.8 405.7h305.3c6.7-8.5 12.6-17.6 17.8-27.2H23c5.2 9.6 9.2 18.7 15.8 27.2zm188.8-37.1H367c3.7-8 5.8-16.2 8.5-24.8h-115c-8.8 10.7-20.1 19.2-32.9 24.8zm53.5-81.7c0 2.5-.1 5-.4 7.4h103.1c.1-2.5.2-4.9.2-7.4v-12.4H281.1zm0-29.7H384v-17.3H281.1z\"]\n};\nvar faUnity = {\n prefix: 'fab',\n iconName: 'unity',\n icon: [576, 512, [], \"f949\", \"M498.11,206.4,445.31,14.72,248.2,66.08,219,116.14l-59.2-.43L15.54,256,159.82,396.32l59.17-.43,29.24,50,197.08,51.36,52.8-191.62-30-49.63ZM223.77,124.2,374.55,86.51,288,232.33H114.87Zm0,263.63L114.87,279.71H288l86.55,145.81Zm193,14L330.17,256l86.58-145.84L458.56,256Z\"]\n};\nvar faUntappd = {\n prefix: 'fab',\n iconName: 'untappd',\n icon: [640, 512, [], \"f405\", \"M401.3 49.9c-79.8 160.1-84.6 152.5-87.9 173.2l-5.2 32.8c-1.9 12-6.6 23.5-13.7 33.4L145.6 497.1c-7.6 10.6-20.4 16.2-33.4 14.6-40.3-5-77.8-32.2-95.3-68.5-5.7-11.8-4.5-25.8 3.1-36.4l148.9-207.9c7.1-9.9 16.4-18 27.2-23.7l29.3-15.5c18.5-9.8 9.7-11.9 135.6-138.9 1-4.8 1-7.3 3.6-8 3-.7 6.6-1 6.3-4.6l-.4-4.6c-.2-1.9 1.3-3.6 3.2-3.6 4.5-.1 13.2 1.2 25.6 10 12.3 8.9 16.4 16.8 17.7 21.1.6 1.8-.6 3.7-2.4 4.2l-4.5 1.1c-3.4.9-2.5 4.4-2.3 7.4.1 2.8-2.3 3.6-6.5 6.1zM230.1 36.4c3.4.9 2.5 4.4 2.3 7.4-.2 2.7 2.1 3.5 6.4 6 7.9 15.9 15.3 30.5 22.2 44 .7 1.3 2.3 1.5 3.3.5 11.2-12 24.6-26.2 40.5-42.6 1.3-1.4 1.4-3.5.1-4.9-8-8.2-16.5-16.9-25.6-26.1-1-4.7-1-7.3-3.6-8-3-.8-6.6-1-6.3-4.6.3-3.3 1.4-8.1-2.8-8.2-4.5-.1-13.2 1.1-25.6 10-12.3 8.9-16.4 16.8-17.7 21.1-1.4 4.2 3.6 4.6 6.8 5.4zM620 406.7L471.2 198.8c-13.2-18.5-26.6-23.4-56.4-39.1-11.2-5.9-14.2-10.9-30.5-28.9-1-1.1-2.9-.9-3.6.5-46.3 88.8-47.1 82.8-49 94.8-1.7 10.7-1.3 20 .3 29.8 1.9 12 6.6 23.5 13.7 33.4l148.9 207.9c7.6 10.6 20.2 16.2 33.1 14.7 40.3-4.9 78-32 95.7-68.6 5.4-11.9 4.3-25.9-3.4-36.6z\"]\n};\nvar faUps = {\n prefix: 'fab',\n iconName: 'ups',\n icon: [384, 512, [], \"f7e0\", \"M103.2 303c-5.2 3.6-32.6 13.1-32.6-19V180H37.9v102.6c0 74.9 80.2 51.1 97.9 39V180h-32.6zM4 74.82v220.9c0 103.7 74.9 135.2 187.7 184.1 112.4-48.9 187.7-80.2 187.7-184.1V74.82c-116.3-61.6-281.8-49.6-375.4 0zm358.1 220.9c0 86.6-53.2 113.6-170.4 165.3-117.5-51.8-170.5-78.7-170.5-165.3v-126.4c102.3-93.8 231.6-100 340.9-89.8zm-209.6-107.4v212.8h32.7v-68.7c24.4 7.3 71.7-2.6 71.7-78.5 0-97.4-80.7-80.92-104.4-65.6zm32.7 117.3v-100.3c8.4-4.2 38.4-12.7 38.4 49.3 0 67.9-36.4 51.8-38.4 51zm79.1-86.4c.1 47.3 51.6 42.5 52.2 70.4.6 23.5-30.4 23-50.8 4.9v30.1c36.2 21.5 81.9 8.1 83.2-33.5 1.7-51.5-54.1-46.6-53.4-73.2.6-20.3 30.6-20.5 48.5-2.2v-28.4c-28.5-22-79.9-9.2-79.7 31.9z\"]\n};\nvar faUsb = {\n prefix: 'fab',\n iconName: 'usb',\n icon: [640, 512, [], \"f287\", \"M641.5 256c0 3.1-1.7 6.1-4.5 7.5L547.9 317c-1.4.8-2.8 1.4-4.5 1.4-1.4 0-3.1-.3-4.5-1.1-2.8-1.7-4.5-4.5-4.5-7.8v-35.6H295.7c25.3 39.6 40.5 106.9 69.6 106.9H392V354c0-5 3.9-8.9 8.9-8.9H490c5 0 8.9 3.9 8.9 8.9v89.1c0 5-3.9 8.9-8.9 8.9h-89.1c-5 0-8.9-3.9-8.9-8.9v-26.7h-26.7c-75.4 0-81.1-142.5-124.7-142.5H140.3c-8.1 30.6-35.9 53.5-69 53.5C32 327.3 0 295.3 0 256s32-71.3 71.3-71.3c33.1 0 61 22.8 69 53.5 39.1 0 43.9 9.5 74.6-60.4C255 88.7 273 95.7 323.8 95.7c7.5-20.9 27-35.6 50.4-35.6 29.5 0 53.5 23.9 53.5 53.5s-23.9 53.5-53.5 53.5c-23.4 0-42.9-14.8-50.4-35.6H294c-29.1 0-44.3 67.4-69.6 106.9h310.1v-35.6c0-3.3 1.7-6.1 4.5-7.8 2.8-1.7 6.4-1.4 8.9.3l89.1 53.5c2.8 1.1 4.5 4.1 4.5 7.2z\"]\n};\nvar faUsps = {\n prefix: 'fab',\n iconName: 'usps',\n icon: [576, 512, [], \"f7e1\", \"M460.3 241.7c25.8-41.3 15.2-48.8-11.7-48.8h-27c-.1 0-1.5-1.4-10.9 8-11.2 5.6-37.9 6.3-37.9 8.7 0 4.5 70.3-3.1 88.1 0 9.5 1.5-1.5 20.4-4.4 32-.5 4.5 2.4 2.3 3.8.1zm-112.1 22.6c64-21.3 97.3-23.9 102-26.2 4.4-2.9-4.4-6.6-26.2-5.8-51.7 2.2-137.6 37.1-172.6 53.9l-30.7-93.3h196.6c-2.7-28.2-152.9-22.6-337.9-22.6L27 415.8c196.4-97.3 258.9-130.3 321.2-151.5zM94.7 96c253.3 53.7 330 65.7 332.1 85.2 36.4 0 45.9 0 52.4 6.6 21.1 19.7-14.6 67.7-14.6 67.7-4.4 2.9-406.4 160.2-406.4 160.2h423.1L549 96z\"]\n};\nvar faUssunnah = {\n prefix: 'fab',\n iconName: 'ussunnah',\n icon: [512, 512, [], \"f407\", \"M156.8 285.1l5.7 14.4h-8.2c-1.3-3.2-3.1-7.7-3.8-9.5-2.5-6.3-1.1-8.4 0-10 1.9-2.7 3.2-4.4 3.6-5.2 0 2.2.8 5.7 2.7 10.3zm297.3 18.8c-2.1 13.8-5.7 27.1-10.5 39.7l43 23.4-44.8-18.8c-5.3 13.2-12 25.6-19.9 37.2l34.2 30.2-36.8-26.4c-8.4 11.8-18 22.6-28.7 32.3l24.9 34.7-28.1-31.8c-11 9.6-23.1 18-36.1 25.1l15.7 37.2-19.3-35.3c-13.1 6.8-27 12.1-41.6 15.9l6.7 38.4-10.5-37.4c-14.3 3.4-29.2 5.3-44.5 5.4L256 512l-1.9-38.4c-15.3-.1-30.2-2-44.5-5.3L199 505.6l6.7-38.2c-14.6-3.7-28.6-9.1-41.7-15.8l-19.2 35.1 15.6-37c-13-7-25.2-15.4-36.2-25.1l-27.9 31.6 24.7-34.4c-10.7-9.7-20.4-20.5-28.8-32.3l-36.5 26.2 33.9-29.9c-7.9-11.6-14.6-24.1-20-37.3l-44.4 18.7L67.8 344c-4.8-12.7-8.4-26.1-10.5-39.9l-51 9 50.3-14.2c-1.1-8.5-1.7-17.1-1.7-25.9 0-4.7.2-9.4.5-14.1L0 256l56-2.8c1.3-13.1 3.8-25.8 7.5-38.1L6.4 199l58.9 10.4c4-12 9.1-23.5 15.2-34.4l-55.1-30 58.3 24.6C90 159 97.2 149.2 105.3 140L55.8 96.4l53.9 38.7c8.1-8.6 17-16.5 26.6-23.6l-40-55.6 45.6 51.6c9.5-6.6 19.7-12.3 30.3-17.2l-27.3-64.9 33.8 62.1c10.5-4.4 21.4-7.9 32.7-10.4L199 6.4l19.5 69.2c11-2.1 22.3-3.2 33.8-3.4L256 0l3.6 72.2c11.5.2 22.8 1.4 33.8 3.5L313 6.4l-12.4 70.7c11.3 2.6 22.2 6.1 32.6 10.5l33.9-62.2-27.4 65.1c10.6 4.9 20.7 10.7 30.2 17.2l45.8-51.8-40.1 55.9c9.5 7.1 18.4 15 26.5 23.6l54.2-38.9-49.7 43.9c8 9.1 15.2 18.9 21.5 29.4l58.7-24.7-55.5 30.2c6.1 10.9 11.1 22.3 15.1 34.3l59.3-10.4-57.5 16.2c3.7 12.2 6.2 24.9 7.5 37.9L512 256l-56 2.8c.3 4.6.5 9.3.5 14.1 0 8.7-.6 17.3-1.6 25.8l50.7 14.3-51.5-9.1zm-21.8-31c0-97.5-79-176.5-176.5-176.5s-176.5 79-176.5 176.5 79 176.5 176.5 176.5 176.5-79 176.5-176.5zm-24 0c0 84.3-68.3 152.6-152.6 152.6s-152.6-68.3-152.6-152.6 68.3-152.6 152.6-152.6 152.6 68.3 152.6 152.6zM195 241c0 2.1 1.3 3.8 3.6 5.1 3.3 1.9 6.2 4.6 8.2 8.2 2.8-5.7 4.3-9.5 4.3-11.2 0-2.2-1.1-4.4-3.2-7-2.1-2.5-3.2-5.2-3.3-7.7-6.5 6.8-9.6 10.9-9.6 12.6zm-40.7-19c0 2.1 1.3 3.8 3.6 5.1 3.5 1.9 6.2 4.6 8.2 8.2 2.8-5.7 4.3-9.5 4.3-11.2 0-2.2-1.1-4.4-3.2-7-2.1-2.5-3.2-5.2-3.3-7.7-6.5 6.8-9.6 10.9-9.6 12.6zm-19 0c0 2.1 1.3 3.8 3.6 5.1 3.3 1.9 6.2 4.6 8.2 8.2 2.8-5.7 4.3-9.5 4.3-11.2 0-2.2-1.1-4.4-3.2-7-2.1-2.5-3.2-5.2-3.3-7.7-6.4 6.8-9.6 10.9-9.6 12.6zm204.9 87.9c-8.4-3-8.7-6.8-8.7-15.6V182c-8.2 12.5-14.2 18.6-18 18.6 6.3 14.4 9.5 23.9 9.5 28.3v64.3c0 2.2-2.2 6.5-4.7 6.5h-18c-2.8-7.5-10.2-26.9-15.3-40.3-2 2.5-7.2 9.2-10.7 13.7 2.4 1.6 4.1 3.6 5.2 6.3 2.6 6.7 6.4 16.5 7.9 20.2h-9.2c-3.9-10.4-9.6-25.4-11.8-31.1-2 2.5-7.2 9.2-10.7 13.7 2.4 1.6 4.1 3.6 5.2 6.3.8 2 2.8 7.3 4.3 10.9H256c-1.5-4.1-5.6-14.6-8.4-22-2 2.5-7.2 9.2-10.7 13.7 2.5 1.6 4.3 3.6 5.2 6.3.2.6.5 1.4.6 1.7H225c-4.6-13.9-11.4-27.7-11.4-34.1 0-2.2.3-5.1 1.1-8.2-8.8 10.8-14 15.9-14 25 0 7.5 10.4 28.3 10.4 33.3 0 1.7-.5 3.3-1.4 4.9-9.6-12.7-15.5-20.7-18.8-20.7h-12l-11.2-28c-3.8-9.6-5.7-16-5.7-18.8 0-3.8.5-7.7 1.7-12.2-1 1.3-3.7 4.7-5.5 7.1-.8-2.1-3.1-7.7-4.6-11.5-2.1 2.5-7.5 9.1-11.2 13.6.9 2.3 3.3 8.1 4.9 12.2-2.5 3.3-9.1 11.8-13.6 17.7-4 5.3-5.8 13.3-2.7 21.8 2.5 6.7 2 7.9-1.7 14.1H191c5.5 0 14.3 14 15.5 22 13.2-16 15.4-19.6 16.8-21.6h107c3.9 0 7.2-1.9 9.9-5.8zm20.1-26.6V181.7c-9 12.5-15.9 18.6-20.7 18.6 7.1 14.4 10.7 23.9 10.7 28.3v66.3c0 17.5 8.6 20.4 24 20.4 8.1 0 12.5-.8 13.7-2.7-4.3-1.6-7.6-2.5-9.9-3.3-8.1-3.2-17.8-7.4-17.8-26z\"]\n};\nvar faVaadin = {\n prefix: 'fab',\n iconName: 'vaadin',\n icon: [448, 512, [], \"f408\", \"M224.5 140.7c1.5-17.6 4.9-52.7 49.8-52.7h98.6c20.7 0 32.1-7.8 32.1-21.6V54.1c0-12.2 9.3-22.1 21.5-22.1S448 41.9 448 54.1v36.5c0 42.9-21.5 62-66.8 62H280.7c-30.1 0-33 14.7-33 27.1 0 1.3-.1 2.5-.2 3.7-.7 12.3-10.9 22.2-23.4 22.2s-22.7-9.8-23.4-22.2c-.1-1.2-.2-2.4-.2-3.7 0-12.3-3-27.1-33-27.1H66.8c-45.3 0-66.8-19.1-66.8-62V54.1C0 41.9 9.4 32 21.6 32s21.5 9.9 21.5 22.1v12.3C43.1 80.2 54.5 88 75.2 88h98.6c44.8 0 48.3 35.1 49.8 52.7h.9zM224 456c11.5 0 21.4-7 25.7-16.3 1.1-1.8 97.1-169.6 98.2-171.4 11.9-19.6-3.2-44.3-27.2-44.3-13.9 0-23.3 6.4-29.8 20.3L224 362l-66.9-117.7c-6.4-13.9-15.9-20.3-29.8-20.3-24 0-39.1 24.6-27.2 44.3 1.1 1.9 97.1 169.6 98.2 171.4 4.3 9.3 14.2 16.3 25.7 16.3z\"]\n};\nvar faViacoin = {\n prefix: 'fab',\n iconName: 'viacoin',\n icon: [384, 512, [], \"f237\", \"M384 32h-64l-80.7 192h-94.5L64 32H0l48 112H0v48h68.5l13.8 32H0v48h102.8L192 480l89.2-208H384v-48h-82.3l13.8-32H384v-48h-48l48-112zM192 336l-27-64h54l-27 64z\"]\n};\nvar faViadeo = {\n prefix: 'fab',\n iconName: 'viadeo',\n icon: [448, 512, [], \"f2a9\", \"M276.2 150.5v.7C258.3 98.6 233.6 47.8 205.4 0c43.3 29.2 67 100 70.8 150.5zm32.7 121.7c7.6 18.2 11 37.5 11 57 0 77.7-57.8 141-137.8 139.4l3.8-.3c74.2-46.7 109.3-118.6 109.3-205.1 0-38.1-6.5-75.9-18.9-112 1 11.7 1 23.7 1 35.4 0 91.8-18.1 241.6-116.6 280C95 455.2 49.4 398 49.4 329.2c0-75.6 57.4-142.3 135.4-142.3 16.8 0 33.7 3.1 49.1 9.6 1.7-15.1 6.5-29.9 13.4-43.3-19.9-7.2-41.2-10.7-62.5-10.7-161.5 0-238.7 195.9-129.9 313.7 67.9 74.6 192 73.9 259.8 0 56.6-61.3 60.9-142.4 36.4-201-12.7 8-27.1 13.9-42.2 17zM418.1 11.7c-31 66.5-81.3 47.2-115.8 80.1-12.4 12-20.6 34-20.6 50.5 0 14.1 4.5 27.1 12 38.8 47.4-11 98.3-46 118.2-90.7-.7 5.5-4.8 14.4-7.2 19.2-20.3 35.7-64.6 65.6-99.7 84.9 14.8 14.4 33.7 25.8 55 25.8 79 0 110.1-134.6 58.1-208.6z\"]\n};\nvar faViadeoSquare = {\n prefix: 'fab',\n iconName: 'viadeo-square',\n icon: [448, 512, [], \"f2aa\", \"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM280.7 381.2c-42.4 46.2-120 46.6-162.4 0-68-73.6-19.8-196.1 81.2-196.1 13.3 0 26.6 2.1 39.1 6.7-4.3 8.4-7.3 17.6-8.4 27.1-9.7-4.1-20.2-6-30.7-6-48.8 0-84.6 41.7-84.6 88.9 0 43 28.5 78.7 69.5 85.9 61.5-24 72.9-117.6 72.9-175 0-7.3 0-14.8-.6-22.1-11.2-32.9-26.6-64.6-44.2-94.5 27.1 18.3 41.9 62.5 44.2 94.1v.4c7.7 22.5 11.8 46.2 11.8 70 0 54.1-21.9 99-68.3 128.2l-2.4.2c50 1 86.2-38.6 86.2-87.2 0-12.2-2.1-24.3-6.9-35.7 9.5-1.9 18.5-5.6 26.4-10.5 15.3 36.6 12.6 87.3-22.8 125.6zM309 233.7c-13.3 0-25.1-7.1-34.4-16.1 21.9-12 49.6-30.7 62.3-53 1.5-3 4.1-8.6 4.5-12-12.5 27.9-44.2 49.8-73.9 56.7-4.7-7.3-7.5-15.5-7.5-24.3 0-10.3 5.2-24.1 12.9-31.6 21.6-20.5 53-8.5 72.4-50 32.5 46.2 13.1 130.3-36.3 130.3z\"]\n};\nvar faViber = {\n prefix: 'fab',\n iconName: 'viber',\n icon: [512, 512, [], \"f409\", \"M444 49.9C431.3 38.2 379.9.9 265.3.4c0 0-135.1-8.1-200.9 52.3C27.8 89.3 14.9 143 13.5 209.5c-1.4 66.5-3.1 191.1 117 224.9h.1l-.1 51.6s-.8 20.9 13 25.1c16.6 5.2 26.4-10.7 42.3-27.8 8.7-9.4 20.7-23.2 29.8-33.7 82.2 6.9 145.3-8.9 152.5-11.2 16.6-5.4 110.5-17.4 125.7-142 15.8-128.6-7.6-209.8-49.8-246.5zM457.9 287c-12.9 104-89 110.6-103 115.1-6 1.9-61.5 15.7-131.2 11.2 0 0-52 62.7-68.2 79-5.3 5.3-11.1 4.8-11-5.7 0-6.9.4-85.7.4-85.7-.1 0-.1 0 0 0-101.8-28.2-95.8-134.3-94.7-189.8 1.1-55.5 11.6-101 42.6-131.6 55.7-50.5 170.4-43 170.4-43 96.9.4 143.3 29.6 154.1 39.4 35.7 30.6 53.9 103.8 40.6 211.1zm-139-80.8c.4 8.6-12.5 9.2-12.9.6-1.1-22-11.4-32.7-32.6-33.9-8.6-.5-7.8-13.4.7-12.9 27.9 1.5 43.4 17.5 44.8 46.2zm20.3 11.3c1-42.4-25.5-75.6-75.8-79.3-8.5-.6-7.6-13.5.9-12.9 58 4.2 88.9 44.1 87.8 92.5-.1 8.6-13.1 8.2-12.9-.3zm47 13.4c.1 8.6-12.9 8.7-12.9.1-.6-81.5-54.9-125.9-120.8-126.4-8.5-.1-8.5-12.9 0-12.9 73.7.5 133 51.4 133.7 139.2zM374.9 329v.2c-10.8 19-31 40-51.8 33.3l-.2-.3c-21.1-5.9-70.8-31.5-102.2-56.5-16.2-12.8-31-27.9-42.4-42.4-10.3-12.9-20.7-28.2-30.8-46.6-21.3-38.5-26-55.7-26-55.7-6.7-20.8 14.2-41 33.3-51.8h.2c9.2-4.8 18-3.2 23.9 3.9 0 0 12.4 14.8 17.7 22.1 5 6.8 11.7 17.7 15.2 23.8 6.1 10.9 2.3 22-3.7 26.6l-12 9.6c-6.1 4.9-5.3 14-5.3 14s17.8 67.3 84.3 84.3c0 0 9.1.8 14-5.3l9.6-12c4.6-6 15.7-9.8 26.6-3.7 14.7 8.3 33.4 21.2 45.8 32.9 7 5.7 8.6 14.4 3.8 23.6z\"]\n};\nvar faVimeo = {\n prefix: 'fab',\n iconName: 'vimeo',\n icon: [448, 512, [], \"f40a\", \"M403.2 32H44.8C20.1 32 0 52.1 0 76.8v358.4C0 459.9 20.1 480 44.8 480h358.4c24.7 0 44.8-20.1 44.8-44.8V76.8c0-24.7-20.1-44.8-44.8-44.8zM377 180.8c-1.4 31.5-23.4 74.7-66 129.4-44 57.2-81.3 85.8-111.7 85.8-18.9 0-34.8-17.4-47.9-52.3-25.5-93.3-36.4-148-57.4-148-2.4 0-10.9 5.1-25.4 15.2l-15.2-19.6c37.3-32.8 72.9-69.2 95.2-71.2 25.2-2.4 40.7 14.8 46.5 51.7 20.7 131.2 29.9 151 67.6 91.6 13.5-21.4 20.8-37.7 21.8-48.9 3.5-33.2-25.9-30.9-45.8-22.4 15.9-52.1 46.3-77.4 91.2-76 33.3.9 49 22.5 47.1 64.7z\"]\n};\nvar faVimeoSquare = {\n prefix: 'fab',\n iconName: 'vimeo-square',\n icon: [448, 512, [], \"f194\", \"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-16.2 149.6c-1.4 31.1-23.2 73.8-65.3 127.9-43.5 56.5-80.3 84.8-110.4 84.8-18.7 0-34.4-17.2-47.3-51.6-25.2-92.3-35.9-146.4-56.7-146.4-2.4 0-10.8 5-25.1 15.1L64 192c36.9-32.4 72.1-68.4 94.1-70.4 24.9-2.4 40.2 14.6 46 51.1 20.5 129.6 29.6 149.2 66.8 90.5 13.4-21.2 20.6-37.2 21.5-48.3 3.4-32.8-25.6-30.6-45.2-22.2 15.7-51.5 45.8-76.5 90.1-75.1 32.9 1 48.4 22.4 46.5 64z\"]\n};\nvar faVimeoV = {\n prefix: 'fab',\n iconName: 'vimeo-v',\n icon: [448, 512, [], \"f27d\", \"M447.8 153.6c-2 43.6-32.4 103.3-91.4 179.1-60.9 79.2-112.4 118.8-154.6 118.8-26.1 0-48.2-24.1-66.3-72.3C100.3 250 85.3 174.3 56.2 174.3c-3.4 0-15.1 7.1-35.2 21.1L0 168.2c51.6-45.3 100.9-95.7 131.8-98.5 34.9-3.4 56.3 20.5 64.4 71.5 28.7 181.5 41.4 208.9 93.6 126.7 18.7-29.6 28.8-52.1 30.2-67.6 4.8-45.9-35.8-42.8-63.3-31 22-72.1 64.1-107.1 126.2-105.1 45.8 1.2 67.5 31.1 64.9 89.4z\"]\n};\nvar faVine = {\n prefix: 'fab',\n iconName: 'vine',\n icon: [384, 512, [], \"f1ca\", \"M384 254.7v52.1c-18.4 4.2-36.9 6.1-52.1 6.1-36.9 77.4-103 143.8-125.1 156.2-14 7.9-27.1 8.4-42.7-.8C137 452 34.2 367.7 0 102.7h74.5C93.2 261.8 139 343.4 189.3 404.5c27.9-27.9 54.8-65.1 75.6-106.9-49.8-25.3-80.1-80.9-80.1-145.6 0-65.6 37.7-115.1 102.2-115.1 114.9 0 106.2 127.9 81.6 181.5 0 0-46.4 9.2-63.5-20.5 3.4-11.3 8.2-30.8 8.2-48.5 0-31.3-11.3-46.6-28.4-46.6-18.2 0-30.8 17.1-30.8 50 .1 79.2 59.4 118.7 129.9 101.9z\"]\n};\nvar faVk = {\n prefix: 'fab',\n iconName: 'vk',\n icon: [576, 512, [], \"f189\", \"M545 117.7c3.7-12.5 0-21.7-17.8-21.7h-58.9c-15 0-21.9 7.9-25.6 16.7 0 0-30 73.1-72.4 120.5-13.7 13.7-20 18.1-27.5 18.1-3.7 0-9.4-4.4-9.4-16.9V117.7c0-15-4.2-21.7-16.6-21.7h-92.6c-9.4 0-15 7-15 13.5 0 14.2 21.2 17.5 23.4 57.5v86.8c0 19-3.4 22.5-10.9 22.5-20 0-68.6-73.4-97.4-157.4-5.8-16.3-11.5-22.9-26.6-22.9H38.8c-16.8 0-20.2 7.9-20.2 16.7 0 15.6 20 93.1 93.1 195.5C160.4 378.1 229 416 291.4 416c37.5 0 42.1-8.4 42.1-22.9 0-66.8-3.4-73.1 15.4-73.1 8.7 0 23.7 4.4 58.7 38.1 40 40 46.6 57.9 69 57.9h58.9c16.8 0 25.3-8.4 20.4-25-11.2-34.9-86.9-106.7-90.3-111.5-8.7-11.2-6.2-16.2 0-26.2.1-.1 72-101.3 79.4-135.6z\"]\n};\nvar faVnv = {\n prefix: 'fab',\n iconName: 'vnv',\n icon: [640, 512, [], \"f40b\", \"M104.9 352c-34.1 0-46.4-30.4-46.4-30.4L2.6 210.1S-7.8 192 13 192h32.8c10.4 0 13.2 8.7 18.8 18.1l36.7 74.5s5.2 13.1 21.1 13.1 21.1-13.1 21.1-13.1l36.7-74.5c5.6-9.5 8.4-18.1 18.8-18.1h32.8c20.8 0 10.4 18.1 10.4 18.1l-55.8 111.5S174.2 352 140 352h-35.1zm395 0c-34.1 0-46.4-30.4-46.4-30.4l-55.9-111.5S387.2 192 408 192h32.8c10.4 0 13.2 8.7 18.8 18.1l36.7 74.5s5.2 13.1 21.1 13.1 21.1-13.1 21.1-13.1l36.8-74.5c5.6-9.5 8.4-18.1 18.8-18.1H627c20.8 0 10.4 18.1 10.4 18.1l-55.9 111.5S569.3 352 535.1 352h-35.2zM337.6 192c34.1 0 46.4 30.4 46.4 30.4l55.9 111.5s10.4 18.1-10.4 18.1h-32.8c-10.4 0-13.2-8.7-18.8-18.1l-36.7-74.5s-5.2-13.1-21.1-13.1c-15.9 0-21.1 13.1-21.1 13.1l-36.7 74.5c-5.6 9.4-8.4 18.1-18.8 18.1h-32.9c-20.8 0-10.4-18.1-10.4-18.1l55.9-111.5s12.2-30.4 46.4-30.4h35.1z\"]\n};\nvar faVuejs = {\n prefix: 'fab',\n iconName: 'vuejs',\n icon: [448, 512, [], \"f41f\", \"M356.9 64.3H280l-56 88.6-48-88.6H0L224 448 448 64.3h-91.1zm-301.2 32h53.8L224 294.5 338.4 96.3h53.8L224 384.5 55.7 96.3z\"]\n};\nvar faWaze = {\n prefix: 'fab',\n iconName: 'waze',\n icon: [512, 512, [], \"f83f\", \"M502.17 201.67C516.69 287.53 471.23 369.59 389 409.8c13 34.1-12.4 70.2-48.32 70.2a51.68 51.68 0 0 1-51.57-49c-6.44.19-64.2 0-76.33-.64A51.69 51.69 0 0 1 159 479.92c-33.86-1.36-57.95-34.84-47-67.92-37.21-13.11-72.54-34.87-99.62-70.8-13-17.28-.48-41.8 20.84-41.8 46.31 0 32.22-54.17 43.15-110.26C94.8 95.2 193.12 32 288.09 32c102.48 0 197.15 70.67 214.08 169.67zM373.51 388.28c42-19.18 81.33-56.71 96.29-102.14 40.48-123.09-64.15-228-181.71-228-83.45 0-170.32 55.42-186.07 136-9.53 48.91 5 131.35-68.75 131.35C58.21 358.6 91.6 378.11 127 389.54c24.66-21.8 63.87-15.47 79.83 14.34 14.22 1 79.19 1.18 87.9.82a51.69 51.69 0 0 1 78.78-16.42zM205.12 187.13c0-34.74 50.84-34.75 50.84 0s-50.84 34.74-50.84 0zm116.57 0c0-34.74 50.86-34.75 50.86 0s-50.86 34.75-50.86 0zm-122.61 70.69c-3.44-16.94 22.18-22.18 25.62-5.21l.06.28c4.14 21.42 29.85 44 64.12 43.07 35.68-.94 59.25-22.21 64.11-42.77 4.46-16.05 28.6-10.36 25.47 6-5.23 22.18-31.21 62-91.46 62.9-42.55 0-80.88-27.84-87.9-64.25z\"]\n};\nvar faWeebly = {\n prefix: 'fab',\n iconName: 'weebly',\n icon: [512, 512, [], \"f5cc\", \"M425.09 65.83c-39.88 0-73.28 25.73-83.66 64.33-18.16-58.06-65.5-64.33-84.95-64.33-19.78 0-66.8 6.28-85.28 64.33-10.38-38.6-43.45-64.33-83.66-64.33C38.59 65.83 0 99.72 0 143.03c0 28.96 4.18 33.27 77.17 233.48 22.37 60.57 67.77 69.35 92.74 69.35 39.23 0 70.04-19.46 85.93-53.98 15.89 34.83 46.69 54.29 85.93 54.29 24.97 0 70.36-9.1 92.74-69.67 76.55-208.65 77.5-205.58 77.5-227.2.63-48.32-36.01-83.47-86.92-83.47zm26.34 114.81l-65.57 176.44c-7.92 21.49-21.22 37.22-46.24 37.22-23.44 0-37.38-12.41-44.03-33.9l-39.28-117.42h-.95L216.08 360.4c-6.96 21.5-20.9 33.6-44.02 33.6-25.02 0-38.33-15.74-46.24-37.22L60.88 181.55c-5.38-14.83-7.92-23.91-7.92-34.5 0-16.34 15.84-29.36 38.33-29.36 18.69 0 31.99 11.8 36.11 29.05l44.03 139.82h.95l44.66-136.79c6.02-19.67 16.47-32.08 38.96-32.08s32.94 12.11 38.96 32.08l44.66 136.79h.95l44.03-139.82c4.12-17.25 17.42-29.05 36.11-29.05 22.17 0 38.33 13.32 38.33 35.71-.32 7.87-4.12 16.04-7.61 27.24z\"]\n};\nvar faWeibo = {\n prefix: 'fab',\n iconName: 'weibo',\n icon: [512, 512, [], \"f18a\", \"M407 177.6c7.6-24-13.4-46.8-37.4-41.7-22 4.8-28.8-28.1-7.1-32.8 50.1-10.9 92.3 37.1 76.5 84.8-6.8 21.2-38.8 10.8-32-10.3zM214.8 446.7C108.5 446.7 0 395.3 0 310.4c0-44.3 28-95.4 76.3-143.7C176 67 279.5 65.8 249.9 161c-4 13.1 12.3 5.7 12.3 6 79.5-33.6 140.5-16.8 114 51.4-3.7 9.4 1.1 10.9 8.3 13.1 135.7 42.3 34.8 215.2-169.7 215.2zm143.7-146.3c-5.4-55.7-78.5-94-163.4-85.7-84.8 8.6-148.8 60.3-143.4 116s78.5 94 163.4 85.7c84.8-8.6 148.8-60.3 143.4-116zM347.9 35.1c-25.9 5.6-16.8 43.7 8.3 38.3 72.3-15.2 134.8 52.8 111.7 124-7.4 24.2 29.1 37 37.4 12 31.9-99.8-55.1-195.9-157.4-174.3zm-78.5 311c-17.1 38.8-66.8 60-109.1 46.3-40.8-13.1-58-53.4-40.3-89.7 17.7-35.4 63.1-55.4 103.4-45.1 42 10.8 63.1 50.2 46 88.5zm-86.3-30c-12.9-5.4-30 .3-38 12.9-8.3 12.9-4.3 28 8.6 34 13.1 6 30.8.3 39.1-12.9 8-13.1 3.7-28.3-9.7-34zm32.6-13.4c-5.1-1.7-11.4.6-14.3 5.4-2.9 5.1-1.4 10.6 3.7 12.9 5.1 2 11.7-.3 14.6-5.4 2.8-5.2 1.1-10.9-4-12.9z\"]\n};\nvar faWeixin = {\n prefix: 'fab',\n iconName: 'weixin',\n icon: [576, 512, [], \"f1d7\", \"M385.2 167.6c6.4 0 12.6.3 18.8 1.1C387.4 90.3 303.3 32 207.7 32 100.5 32 13 104.8 13 197.4c0 53.4 29.3 97.5 77.9 131.6l-19.3 58.6 68-34.1c24.4 4.8 43.8 9.7 68.2 9.7 6.2 0 12.1-.3 18.3-.8-4-12.9-6.2-26.6-6.2-40.8-.1-84.9 72.9-154 165.3-154zm-104.5-52.9c14.5 0 24.2 9.7 24.2 24.4 0 14.5-9.7 24.2-24.2 24.2-14.8 0-29.3-9.7-29.3-24.2.1-14.7 14.6-24.4 29.3-24.4zm-136.4 48.6c-14.5 0-29.3-9.7-29.3-24.2 0-14.8 14.8-24.4 29.3-24.4 14.8 0 24.4 9.7 24.4 24.4 0 14.6-9.6 24.2-24.4 24.2zM563 319.4c0-77.9-77.9-141.3-165.4-141.3-92.7 0-165.4 63.4-165.4 141.3S305 460.7 397.6 460.7c19.3 0 38.9-5.1 58.6-9.9l53.4 29.3-14.8-48.6C534 402.1 563 363.2 563 319.4zm-219.1-24.5c-9.7 0-19.3-9.7-19.3-19.6 0-9.7 9.7-19.3 19.3-19.3 14.8 0 24.4 9.7 24.4 19.3 0 10-9.7 19.6-24.4 19.6zm107.1 0c-9.7 0-19.3-9.7-19.3-19.6 0-9.7 9.7-19.3 19.3-19.3 14.5 0 24.4 9.7 24.4 19.3.1 10-9.9 19.6-24.4 19.6z\"]\n};\nvar faWhatsapp = {\n prefix: 'fab',\n iconName: 'whatsapp',\n icon: [448, 512, [], \"f232\", \"M380.9 97.1C339 55.1 283.2 32 223.9 32c-122.4 0-222 99.6-222 222 0 39.1 10.2 77.3 29.6 111L0 480l117.7-30.9c32.4 17.7 68.9 27 106.1 27h.1c122.3 0 224.1-99.6 224.1-222 0-59.3-25.2-115-67.1-157zm-157 341.6c-33.2 0-65.7-8.9-94-25.7l-6.7-4-69.8 18.3L72 359.2l-4.4-7c-18.5-29.4-28.2-63.3-28.2-98.2 0-101.7 82.8-184.5 184.6-184.5 49.3 0 95.6 19.2 130.4 54.1 34.8 34.9 56.2 81.2 56.1 130.5 0 101.8-84.9 184.6-186.6 184.6zm101.2-138.2c-5.5-2.8-32.8-16.2-37.9-18-5.1-1.9-8.8-2.8-12.5 2.8-3.7 5.6-14.3 18-17.6 21.8-3.2 3.7-6.5 4.2-12 1.4-32.6-16.3-54-29.1-75.5-66-5.7-9.8 5.7-9.1 16.3-30.3 1.8-3.7.9-6.9-.5-9.7-1.4-2.8-12.5-30.1-17.1-41.2-4.5-10.8-9.1-9.3-12.5-9.5-3.2-.2-6.9-.2-10.6-.2-3.7 0-9.7 1.4-14.8 6.9-5.1 5.6-19.4 19-19.4 46.3 0 27.3 19.9 53.7 22.6 57.4 2.8 3.7 39.1 59.7 94.8 83.8 35.2 15.2 49 16.5 66.6 13.9 10.7-1.6 32.8-13.4 37.4-26.4 4.6-13 4.6-24.1 3.2-26.4-1.3-2.5-5-3.9-10.5-6.6z\"]\n};\nvar faWhatsappSquare = {\n prefix: 'fab',\n iconName: 'whatsapp-square',\n icon: [448, 512, [], \"f40c\", \"M224 122.8c-72.7 0-131.8 59.1-131.9 131.8 0 24.9 7 49.2 20.2 70.1l3.1 5-13.3 48.6 49.9-13.1 4.8 2.9c20.2 12 43.4 18.4 67.1 18.4h.1c72.6 0 133.3-59.1 133.3-131.8 0-35.2-15.2-68.3-40.1-93.2-25-25-58-38.7-93.2-38.7zm77.5 188.4c-3.3 9.3-19.1 17.7-26.7 18.8-12.6 1.9-22.4.9-47.5-9.9-39.7-17.2-65.7-57.2-67.7-59.8-2-2.6-16.2-21.5-16.2-41s10.2-29.1 13.9-33.1c3.6-4 7.9-5 10.6-5 2.6 0 5.3 0 7.6.1 2.4.1 5.7-.9 8.9 6.8 3.3 7.9 11.2 27.4 12.2 29.4s1.7 4.3.3 6.9c-7.6 15.2-15.7 14.6-11.6 21.6 15.3 26.3 30.6 35.4 53.9 47.1 4 2 6.3 1.7 8.6-1 2.3-2.6 9.9-11.6 12.5-15.5 2.6-4 5.3-3.3 8.9-2 3.6 1.3 23.1 10.9 27.1 12.9s6.6 3 7.6 4.6c.9 1.9.9 9.9-2.4 19.1zM400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM223.9 413.2c-26.6 0-52.7-6.7-75.8-19.3L64 416l22.5-82.2c-13.9-24-21.2-51.3-21.2-79.3C65.4 167.1 136.5 96 223.9 96c42.4 0 82.2 16.5 112.2 46.5 29.9 30 47.9 69.8 47.9 112.2 0 87.4-72.7 158.5-160.1 158.5z\"]\n};\nvar faWhmcs = {\n prefix: 'fab',\n iconName: 'whmcs',\n icon: [448, 512, [], \"f40d\", \"M448 161v-21.3l-28.5-8.8-2.2-10.4 20.1-20.7L427 80.4l-29 7.5-7.2-7.5 7.5-28.2-19.1-11.6-21.3 21-10.7-3.2-7-26.4h-22.6l-6.2 26.4-12.1 3.2-19.7-21-19.4 11 8.1 27.7-8.1 8.4-28.5-7.5-11 19.1 20.7 21-2.9 10.4-28.5 7.8-.3 21.7 28.8 7.5 2.4 12.1-20.1 19.9 10.4 18.5 29.6-7.5 7.2 8.6-8.1 26.9 19.9 11.6 19.4-20.4 11.6 2.9 6.7 28.5 22.6.3 6.7-28.8 11.6-3.5 20.7 21.6 20.4-12.1-8.8-28 7.8-8.1 28.8 8.8 10.3-20.1-20.9-18.8 2.2-12.1 29.1-7zm-119.2 45.2c-31.3 0-56.8-25.4-56.8-56.8s25.4-56.8 56.8-56.8 56.8 25.4 56.8 56.8c0 31.5-25.4 56.8-56.8 56.8zm72.3 16.4l46.9 14.5V277l-55.1 13.4-4.1 22.7 38.9 35.3-19.2 37.9-54-16.7-14.6 15.2 16.7 52.5-38.3 22.7-38.9-40.5-21.7 6.6-12.6 54-42.4-.5-12.6-53.6-21.7-5.6-36.4 38.4-37.4-21.7 15.2-50.5-13.7-16.1-55.5 14.1-19.7-34.8 37.9-37.4-4.8-22.8-54-14.1.5-40.9L54 219.9l5.7-19.7-38.9-39.4L41.5 125l53.6 14.1 15.2-15.7-15.2-52 36.4-20.7 36.8 39.4L191 84l11.6-52H245l11.6 45.9L234 72l-6.3-1.7-3.3 5.7-11 19.1-3.3 5.6 4.6 4.6 17.2 17.4-.3 1-23.8 6.5-6.2 1.7-.1 6.4-.2 12.9C153.8 161.6 118 204 118 254.7c0 58.3 47.3 105.7 105.7 105.7 50.5 0 92.7-35.4 103.2-82.8l13.2.2 6.9.1 1.6-6.7 5.6-24 1.9-.6 17.1 17.8 4.7 4.9 5.8-3.4 20.4-12.1 5.8-3.5-2-6.5-6.8-21.2z\"]\n};\nvar faWikipediaW = {\n prefix: 'fab',\n iconName: 'wikipedia-w',\n icon: [640, 512, [], \"f266\", \"M640 51.2l-.3 12.2c-28.1.8-45 15.8-55.8 40.3-25 57.8-103.3 240-155.3 358.6H415l-81.9-193.1c-32.5 63.6-68.3 130-99.2 193.1-.3.3-15 0-15-.3C172 352.3 122.8 243.4 75.8 133.4 64.4 106.7 26.4 63.4.2 63.7c0-3.1-.3-10-.3-14.2h161.9v13.9c-19.2 1.1-52.8 13.3-43.3 34.2 21.9 49.7 103.6 240.3 125.6 288.6 15-29.7 57.8-109.2 75.3-142.8-13.9-28.3-58.6-133.9-72.8-160-9.7-17.8-36.1-19.4-55.8-19.7V49.8l142.5.3v13.1c-19.4.6-38.1 7.8-29.4 26.1 18.9 40 30.6 68.1 48.1 104.7 5.6-10.8 34.7-69.4 48.1-100.8 8.9-20.6-3.9-28.6-38.6-29.4.3-3.6 0-10.3.3-13.6 44.4-.3 111.1-.3 123.1-.6v13.6c-22.5.8-45.8 12.8-58.1 31.7l-59.2 122.8c6.4 16.1 63.3 142.8 69.2 156.7L559.2 91.8c-8.6-23.1-36.4-28.1-47.2-28.3V49.6l127.8 1.1.2.5z\"]\n};\nvar faWindows = {\n prefix: 'fab',\n iconName: 'windows',\n icon: [448, 512, [], \"f17a\", \"M0 93.7l183.6-25.3v177.4H0V93.7zm0 324.6l183.6 25.3V268.4H0v149.9zm203.8 28L448 480V268.4H203.8v177.9zm0-380.6v180.1H448V32L203.8 65.7z\"]\n};\nvar faWix = {\n prefix: 'fab',\n iconName: 'wix',\n icon: [640, 512, [], \"f5cf\", \"M393.38 131.69c0 13.03 2.08 32.69-28.68 43.83-9.52 3.45-15.95 9.66-15.95 9.66 0-31 4.72-42.22 17.4-48.86 9.75-5.11 27.23-4.63 27.23-4.63zm-115.8 35.54l-34.24 132.66-28.48-108.57c-7.69-31.99-20.81-48.53-48.43-48.53-27.37 0-40.66 16.18-48.43 48.53L89.52 299.89 55.28 167.23C49.73 140.51 23.86 128.96 0 131.96l65.57 247.93s21.63 1.56 32.46-3.96c14.22-7.25 20.98-12.84 29.59-46.57 7.67-30.07 29.11-118.41 31.12-124.7 4.76-14.94 11.09-13.81 15.4 0 1.97 6.3 23.45 94.63 31.12 124.7 8.6 33.73 15.37 39.32 29.59 46.57 10.82 5.52 32.46 3.96 32.46 3.96l65.57-247.93c-24.42-3.07-49.82 8.93-55.3 35.27zm115.78 5.21s-4.1 6.34-13.46 11.57c-6.01 3.36-11.78 5.64-17.97 8.61-15.14 7.26-13.18 13.95-13.18 35.2v152.07s16.55 2.09 27.37-3.43c13.93-7.1 17.13-13.95 17.26-44.78V181.41l-.02.01v-8.98zm163.44 84.08L640 132.78s-35.11-5.98-52.5 9.85c-13.3 12.1-24.41 29.55-54.18 72.47-.47.73-6.25 10.54-13.07 0-29.29-42.23-40.8-60.29-54.18-72.47-17.39-15.83-52.5-9.85-52.5-9.85l83.2 123.74-82.97 123.36s36.57 4.62 53.95-11.21c11.49-10.46 17.58-20.37 52.51-70.72 6.81-10.52 12.57-.77 13.07 0 29.4 42.38 39.23 58.06 53.14 70.72 17.39 15.83 53.32 11.21 53.32 11.21L556.8 256.52z\"]\n};\nvar faWizardsOfTheCoast = {\n prefix: 'fab',\n iconName: 'wizards-of-the-coast',\n icon: [640, 512, [], \"f730\", \"M219.19 345.69c-1.9 1.38-11.07 8.44-.26 23.57 4.64 6.42 14.11 12.79 21.73 6.55 6.5-4.88 7.35-12.92.26-23.04-5.47-7.76-14.28-12.88-21.73-7.08zm336.75 75.94c-.34 1.7-.55 1.67.79 0 2.09-4.19 4.19-10.21 4.98-19.9 3.14-38.49-40.33-71.49-101.34-78.03-54.73-6.02-124.38 9.17-188.8 60.49l-.26 1.57c2.62 4.98 4.98 10.74 3.4 21.21l.79.26c63.89-58.4 131.19-77.25 184.35-73.85 58.4 3.67 100.03 34.04 100.03 68.08-.01 9.96-2.63 15.72-3.94 20.17zM392.28 240.42c.79 7.07 4.19 10.21 9.17 10.47 5.5.26 9.43-2.62 10.47-6.55.79-3.4 2.09-29.85 2.09-29.85s-11.26 6.55-14.93 10.47c-3.66 3.68-7.33 8.39-6.8 15.46zm-50.02-151.1C137.75 89.32 13.1 226.8.79 241.2c-1.05.52-1.31.79.79 1.31 60.49 16.5 155.81 81.18 196.13 202.16l1.05.26c55.25-69.92 140.88-128.05 236.99-128.05 80.92 0 130.15 42.16 130.15 80.39 0 18.33-6.55 33.52-22.26 46.35 0 .96-.2.79.79.79 14.66-10.74 27.5-28.8 27.5-48.18 0-22.78-12.05-38.23-12.05-38.23 7.07 7.07 10.74 16.24 10.74 16.24 5.76-40.85 26.97-62.32 26.97-62.32-2.36-9.69-6.81-17.81-6.81-17.81 7.59 8.12 14.4 27.5 14.4 41.37 0 10.47-3.4 22.78-12.57 31.95l.26.52c8.12-4.98 16.5-16.76 16.5-37.97 0-15.71-4.71-25.92-4.71-25.92 5.76-5.24 11.26-9.17 15.97-11.78.79 3.4 2.09 9.69 2.36 14.93 0 1.05.79 1.83 1.05 0 .79-5.76-.26-16.24-.26-16.5 6.02-3.14 9.69-4.45 9.69-4.45C617.74 176 489.43 89.32 342.26 89.32zm-99.24 289.62c-11.06 8.99-24.2 4.08-30.64-4.19-7.45-9.58-6.76-24.09 4.19-32.47 14.85-11.35 27.08-.49 31.16 5.5.28.39 12.13 16.57-4.71 31.16zm2.09-136.43l9.43-17.81 11.78 70.96-12.57 6.02-24.62-28.8 14.14-26.71 3.67 4.45-1.83-8.11zm18.59 117.58l-.26-.26c2.05-4.1-2.5-6.61-17.54-31.69-1.31-2.36-3.14-2.88-4.45-2.62l-.26-.52c7.86-5.76 15.45-10.21 25.4-15.71l.52.26c1.31 1.83 2.09 2.88 3.4 4.71l-.26.52c-1.05-.26-2.36-.79-5.24.26-2.09.79-7.86 3.67-12.31 7.59v1.31c1.57 2.36 3.93 6.55 5.76 9.69h.26c10.05-6.28 7.56-4.55 11.52-7.86h.26c.52 1.83.52 1.83 1.83 5.5l-.26.26c-3.06.61-4.65.34-11.52 5.5v.26c9.46 17.02 11.01 16.75 12.57 15.97l.26.26c-2.34 1.59-6.27 4.21-9.68 6.57zm55.26-32.47c-3.14 1.57-6.02 2.88-9.95 4.98l-.26-.26c1.29-2.59 1.16-2.71-11.78-32.47l-.26-.26c-.15 0-8.9 3.65-9.95 7.33h-.52l-1.05-5.76.26-.52c7.29-4.56 25.53-11.64 27.76-12.57l.52.26 3.14 4.98-.26.52c-3.53-1.76-7.35.76-12.31 2.62v.26c12.31 32.01 12.67 30.64 14.66 30.64v.25zm44.77-16.5c-4.19 1.05-5.24 1.31-9.69 2.88l-.26-.26.52-4.45c-1.05-3.4-3.14-11.52-3.67-13.62l-.26-.26c-3.4.79-8.9 2.62-12.83 3.93l-.26.26c.79 2.62 3.14 9.95 4.19 13.88.79 2.36 1.83 2.88 2.88 3.14v.52c-3.67 1.05-7.07 2.62-10.21 3.93l-.26-.26c1.05-1.31 1.05-2.88.26-4.98-1.05-3.14-8.12-23.83-9.17-27.23-.52-1.83-1.57-3.14-2.62-3.14v-.52c3.14-1.05 6.02-2.09 10.74-3.4l.26.26-.26 4.71c1.31 3.93 2.36 7.59 3.14 9.69h.26c3.93-1.31 9.43-2.88 12.83-3.93l.26-.26-2.62-9.43c-.52-1.83-1.05-3.4-2.62-3.93v-.26c4.45-1.05 7.33-1.83 10.74-2.36l.26.26c-1.05 1.31-1.05 2.88-.52 4.45 1.57 6.28 4.71 20.43 6.28 26.45.54 2.62 1.85 3.41 2.63 3.93zm32.21-6.81l-.26.26c-4.71.52-14.14 2.36-22.52 4.19l-.26-.26.79-4.19c-1.57-7.86-3.4-18.59-4.98-26.19-.26-1.83-.79-2.88-2.62-3.67l.79-.52c9.17-1.57 20.16-2.36 24.88-2.62l.26.26c.52 2.36.79 3.14 1.57 5.5l-.26.26c-1.14-1.14-3.34-3.2-16.24-.79l-.26.26c.26 1.57 1.05 6.55 1.57 9.95l.26.26c9.52-1.68 4.76-.06 10.74-2.36h.26c0 1.57-.26 1.83-.26 5.24h-.26c-4.81-1.03-2.15-.9-10.21 0l-.26.26c.26 2.09 1.57 9.43 2.09 12.57l.26.26c1.15.38 14.21-.65 16.24-4.71h.26c-.53 2.38-1.05 4.21-1.58 6.04zm10.74-44.51c-4.45 2.36-8.12 2.88-11 2.88-.25.02-11.41 1.09-17.54-9.95-6.74-10.79-.98-25.2 5.5-31.69 8.8-8.12 23.35-10.1 28.54-17.02 8.03-10.33-13.04-22.31-29.59-5.76l-2.62-2.88 5.24-16.24c25.59-1.57 45.2-3.04 50.02 16.24.79 3.14 0 9.43-.26 12.05 0 2.62-1.83 18.85-2.09 23.04-.52 4.19-.79 18.33-.79 20.69.26 2.36.52 4.19 1.57 5.5 1.57 1.83 5.76 1.83 5.76 1.83l-.79 4.71c-11.82-1.07-10.28-.59-20.43-1.05-3.22-5.15-2.23-3.28-4.19-7.86 0 .01-4.19 3.94-7.33 5.51zm37.18 21.21c-6.35-10.58-19.82-7.16-21.73 5.5-2.63 17.08 14.3 19.79 20.69 10.21l.26.26c-.52 1.83-1.83 6.02-1.83 6.28l-.52.52c-10.3 6.87-28.5-2.5-25.66-18.59 1.94-10.87 14.44-18.93 28.8-9.95l.26.52c0 1.06-.27 3.41-.27 5.25zm5.77-87.73v-6.55c.69 0 19.65 3.28 27.76 7.33l-1.57 17.54s10.21-9.43 15.45-10.74c5.24-1.57 14.93 7.33 14.93 7.33l-11.26 11.26c-12.07-6.35-19.59-.08-20.69.79-5.29 38.72-8.6 42.17 4.45 46.09l-.52 4.71c-17.55-4.29-18.53-4.5-36.92-7.33l.79-4.71c7.25 0 7.48-5.32 7.59-6.81 0 0 4.98-53.16 4.98-55.25-.02-2.87-4.99-3.66-4.99-3.66zm10.99 114.44c-8.12-2.09-14.14-11-10.74-20.69 3.14-9.43 12.31-12.31 18.85-10.21 9.17 2.62 12.83 11.78 10.74 19.38-2.61 8.9-9.42 13.87-18.85 11.52zm42.16 9.69c-2.36-.52-7.07-2.36-8.64-2.88v-.26l1.57-1.83c.59-8.24.59-7.27.26-7.59-4.82-1.81-6.66-2.36-7.07-2.36-1.31 1.83-2.88 4.45-3.67 5.5l-.79 3.4v.26c-1.31-.26-3.93-1.31-6.02-1.57v-.26l2.62-1.83c3.4-4.71 9.95-14.14 13.88-20.16v-2.09l.52-.26c2.09.79 5.5 2.09 7.59 2.88.48.48.18-1.87-1.05 25.14-.24 1.81.02 2.6.8 3.91zm-4.71-89.82c11.25-18.27 30.76-16.19 34.04-3.4L539.7 198c2.34-6.25-2.82-9.9-4.45-11.26l1.83-3.67c12.22 10.37 16.38 13.97 22.52 20.43-25.91 73.07-30.76 80.81-24.62 84.32l-1.83 4.45c-6.37-3.35-8.9-4.42-17.81-8.64l2.09-6.81c-.26-.26-3.93 3.93-9.69 3.67-19.06-1.3-22.89-31.75-9.67-52.9zm29.33 79.34c0-5.71-6.34-7.89-7.86-5.24-1.31 2.09 1.05 4.98 2.88 8.38 1.57 2.62 2.62 6.28 1.05 9.43-2.64 6.34-12.4 5.31-15.45-.79 0-.7-.27.09 1.83-4.71l.79-.26c-.57 5.66 6.06 9.61 8.38 4.98 1.05-2.09-.52-5.5-2.09-8.38-1.57-2.62-3.67-6.28-1.83-9.69 2.72-5.06 11.25-4.47 14.66 2.36v.52l-2.36 3.4zm21.21 13.36c-1.96-3.27-.91-2.14-4.45-4.71h-.26c-2.36 4.19-5.76 10.47-8.64 16.24-1.31 2.36-1.05 3.4-.79 3.93l-.26.26-5.76-4.45.26-.26 2.09-1.31c3.14-5.76 6.55-12.05 9.17-17.02v-.26c-2.64-1.98-1.22-1.51-6.02-1.83v-.26l3.14-3.4h.26c3.67 2.36 9.95 6.81 12.31 8.9l.26.26-1.31 3.91zm27.23-44.26l-2.88-2.88c.79-2.36 1.83-4.98 2.09-7.59.75-9.74-11.52-11.84-11.52-4.98 0 4.98 7.86 19.38 7.86 27.76 0 10.21-5.76 15.71-13.88 16.5-8.38.79-20.16-10.47-20.16-10.47l4.98-14.4 2.88 2.09c-2.97 17.8 17.68 20.37 13.35 5.24-1.06-4.02-18.75-34.2 2.09-38.23 13.62-2.36 23.04 16.5 23.04 16.5l-7.85 10.46zm35.62-10.21c-11-30.38-60.49-127.53-191.95-129.62-53.42-1.05-94.27 15.45-132.76 37.97l85.63-9.17-91.39 20.69 25.14 19.64-3.93-16.5c7.5-1.71 39.15-8.45 66.77-8.9l-22.26 80.39c13.61-.7 18.97-8.98 19.64-22.78l4.98-1.05.26 26.71c-22.46 3.21-37.3 6.69-49.49 9.95l13.09-43.21-61.54-36.66 2.36 8.12 10.21 4.98c6.28 18.59 19.38 56.56 20.43 58.66 1.95 4.28 3.16 5.78 12.05 4.45l1.05 4.98c-16.08 4.86-23.66 7.61-39.02 14.4l-2.36-4.71c4.4-2.94 8.73-3.94 5.5-12.83-23.7-62.5-21.48-58.14-22.78-59.44l2.36-4.45 33.52 67.3c-3.84-11.87 1.68 1.69-32.99-78.82l-41.9 88.51 4.71-13.88-35.88-42.16 27.76 93.48-11.78 8.38C95 228.58 101.05 231.87 93.23 231.52c-5.5-.26-13.62 5.5-13.62 5.5L74.63 231c30.56-23.53 31.62-24.33 58.4-42.68l4.19 7.07s-5.76 4.19-7.86 7.07c-5.9 9.28 1.67 13.28 61.8 75.68l-18.85-58.92 39.8-10.21 25.66 30.64 4.45-12.31-4.98-24.62 13.09-3.4.52 3.14 3.67-10.47-94.27 29.33 11.26-4.98-13.62-42.42 17.28-9.17 30.11 36.14 28.54-13.09c-1.41-7.47-2.47-14.5-4.71-19.64l17.28 13.88 4.71-2.09-59.18-42.68 23.08 11.5c18.98-6.07 25.23-7.47 32.21-9.69l2.62 11c-12.55 12.55 1.43 16.82 6.55 19.38l-13.62-61.01 12.05 28.28c4.19-1.31 7.33-2.09 7.33-2.09l2.62 8.64s-3.14 1.05-6.28 2.09l8.9 20.95 33.78-65.73-20.69 61.01c42.42-24.09 81.44-36.66 131.98-35.88 67.04 1.05 167.33 40.85 199.8 139.83.78 2.1-.01 2.63-.79.27zM203.48 152.43s1.83-.52 4.19-1.31l9.43 7.59c-.4 0-3.44-.25-11.26 2.36l-2.36-8.64zm143.76 38.5c-1.57-.6-26.46-4.81-33.26 20.69l21.73 17.02 11.53-37.71zM318.43 67.07c-58.4 0-106.05 12.05-114.96 14.4v.79c8.38 2.09 14.4 4.19 21.21 11.78l1.57.26c6.55-1.83 48.97-13.88 110.24-13.88 180.16 0 301.67 116.79 301.67 223.37v9.95c0 1.31.79 2.62 1.05.52.52-2.09.79-8.64.79-19.64.26-83.79-96.63-227.55-321.57-227.55zm211.06 169.68c1.31-5.76 0-12.31-7.33-13.09-9.62-1.13-16.14 23.79-17.02 33.52-.79 5.5-1.31 14.93 6.02 14.93 4.68-.01 9.72-.91 18.33-35.36zm-61.53 42.95c-2.62-.79-9.43-.79-12.57 10.47-1.83 6.81.52 13.35 6.02 14.66 3.67 1.05 8.9.52 11.78-10.74 2.62-9.94-1.83-13.61-5.23-14.39zM491 300.65c1.83.52 3.14 1.05 5.76 1.83 0-1.83.52-8.38.79-12.05-1.05 1.31-5.5 8.12-6.55 9.95v.27z\"]\n};\nvar faWolfPackBattalion = {\n prefix: 'fab',\n iconName: 'wolf-pack-battalion',\n icon: [512, 512, [], \"f514\", \"M267.73 471.53l10.56 15.84 5.28-12.32 5.28 7V512c21.06-7.92 21.11-66.86 25.51-97.21 4.62-31.89-.88-92.81 81.37-149.11-8.88-23.61-12-49.43-2.64-80.05C421 189 447 196.21 456.43 239.73l-30.35 8.36c11.15 23 17 46.76 13.2 72.14L412 313.18l-6.16 33.43-18.47-7-8.8 33.39-19.35-7 26.39 21.11 8.8-28.15L419 364.2l7-35.63 26.39 14.52c.25-20 7-58.06-8.8-84.45l26.39 5.28c4-22.07-2.38-39.21-7.92-56.74l22.43 9.68c-.44-25.07-29.94-56.79-61.58-58.5-20.22-1.09-56.74-25.17-54.1-51.9 2-19.87 17.45-42.62 43.11-49.7-44 36.51-9.68 67.3 5.28 73.46 4.4-11.44 17.54-69.08 0-130.2-40.39 22.87-89.65 65.1-93.2 147.79l-58 38.71-3.52 93.25L369.78 220l7 7-17.59 3.52-44 38.71-15.84-5.28-28.1 49.25-3.52 119.64 21.11 15.84-32.55 15.84-32.55-15.84 21.11-15.84-3.52-119.64-28.15-49.26-15.84 5.28-44-38.71-17.58-3.51 7-7 107.33 59.82-3.52-93.25-58.06-38.71C185 65.1 135.77 22.87 95.3 0c-17.54 61.12-4.4 118.76 0 130.2 15-6.16 49.26-36.95 5.28-73.46 25.66 7.08 41.15 29.83 43.11 49.7 2.63 26.74-33.88 50.81-54.1 51.9-31.65 1.72-61.15 33.44-61.59 58.51l22.43-9.68c-5.54 17.53-11.91 34.67-7.92 56.74l26.39-5.28c-15.76 26.39-9.05 64.43-8.8 84.45l26.39-14.52 7 35.63 24.63-5.28 8.8 28.15L153.35 366 134 373l-8.8-33.43-18.47 7-6.16-33.43-27.27 7c-3.82-25.38 2-49.1 13.2-72.14l-30.35-8.36c9.4-43.52 35.47-50.77 63.34-54.1 9.36 30.62 6.24 56.45-2.64 80.05 82.25 56.3 76.75 117.23 81.37 149.11 4.4 30.35 4.45 89.29 25.51 97.21v-29.83l5.28-7 5.28 12.32 10.56-15.84 11.44 21.11 11.43-21.1zm79.17-95L331.06 366c7.47-4.36 13.76-8.42 19.35-12.32-.6 7.22-.27 13.84-3.51 22.84zm28.15-49.26c-.4 10.94-.9 21.66-1.76 31.67-7.85-1.86-15.57-3.8-21.11-7 8.24-7.94 15.55-16.32 22.87-24.68zm24.63 5.28c0-13.43-2.05-24.21-5.28-33.43a235 235 0 0 1-18.47 27.27zm3.52-80.94c19.44 12.81 27.8 33.66 29.91 56.3-12.32-4.53-24.63-9.31-36.95-10.56 5.06-12 6.65-28.14 7-45.74zm-1.76-45.74c.81 14.3 1.84 28.82 1.76 42.23 19.22-8.11 29.78-9.72 44-14.08-10.61-18.96-27.2-25.53-45.76-28.16zM165.68 376.52L181.52 366c-7.47-4.36-13.76-8.42-19.35-12.32.6 7.26.27 13.88 3.51 22.88zm-28.15-49.26c.4 10.94.9 21.66 1.76 31.67 7.85-1.86 15.57-3.8 21.11-7-8.24-7.93-15.55-16.31-22.87-24.67zm-24.64 5.28c0-13.43 2-24.21 5.28-33.43a235 235 0 0 0 18.47 27.27zm-3.52-80.94c-19.44 12.81-27.8 33.66-29.91 56.3 12.32-4.53 24.63-9.31 37-10.56-5-12-6.65-28.14-7-45.74zm1.76-45.74c-.81 14.3-1.84 28.82-1.76 42.23-19.22-8.11-29.78-9.72-44-14.08 10.63-18.95 27.23-25.52 45.76-28.15z\"]\n};\nvar faWordpress = {\n prefix: 'fab',\n iconName: 'wordpress',\n icon: [512, 512, [], \"f19a\", \"M61.7 169.4l101.5 278C92.2 413 43.3 340.2 43.3 256c0-30.9 6.6-60.1 18.4-86.6zm337.9 75.9c0-26.3-9.4-44.5-17.5-58.7-10.8-17.5-20.9-32.4-20.9-49.9 0-19.6 14.8-37.8 35.7-37.8.9 0 1.8.1 2.8.2-37.9-34.7-88.3-55.9-143.7-55.9-74.3 0-139.7 38.1-177.8 95.9 5 .2 9.7.3 13.7.3 22.2 0 56.7-2.7 56.7-2.7 11.5-.7 12.8 16.2 1.4 17.5 0 0-11.5 1.3-24.3 2l77.5 230.4L249.8 247l-33.1-90.8c-11.5-.7-22.3-2-22.3-2-11.5-.7-10.1-18.2 1.3-17.5 0 0 35.1 2.7 56 2.7 22.2 0 56.7-2.7 56.7-2.7 11.5-.7 12.8 16.2 1.4 17.5 0 0-11.5 1.3-24.3 2l76.9 228.7 21.2-70.9c9-29.4 16-50.5 16-68.7zm-139.9 29.3l-63.8 185.5c19.1 5.6 39.2 8.7 60.1 8.7 24.8 0 48.5-4.3 70.6-12.1-.6-.9-1.1-1.9-1.5-2.9l-65.4-179.2zm183-120.7c.9 6.8 1.4 14 1.4 21.9 0 21.6-4 45.8-16.2 76.2l-65 187.9C426.2 403 468.7 334.5 468.7 256c0-37-9.4-71.8-26-102.1zM504 256c0 136.8-111.3 248-248 248C119.2 504 8 392.7 8 256 8 119.2 119.2 8 256 8c136.7 0 248 111.2 248 248zm-11.4 0c0-130.5-106.2-236.6-236.6-236.6C125.5 19.4 19.4 125.5 19.4 256S125.6 492.6 256 492.6c130.5 0 236.6-106.1 236.6-236.6z\"]\n};\nvar faWordpressSimple = {\n prefix: 'fab',\n iconName: 'wordpress-simple',\n icon: [512, 512, [], \"f411\", \"M256 8C119.3 8 8 119.2 8 256c0 136.7 111.3 248 248 248s248-111.3 248-248C504 119.2 392.7 8 256 8zM33 256c0-32.3 6.9-63 19.3-90.7l106.4 291.4C84.3 420.5 33 344.2 33 256zm223 223c-21.9 0-43-3.2-63-9.1l66.9-194.4 68.5 187.8c.5 1.1 1 2.1 1.6 3.1-23.1 8.1-48 12.6-74 12.6zm30.7-327.5c13.4-.7 25.5-2.1 25.5-2.1 12-1.4 10.6-19.1-1.4-18.4 0 0-36.1 2.8-59.4 2.8-21.9 0-58.7-2.8-58.7-2.8-12-.7-13.4 17.7-1.4 18.4 0 0 11.4 1.4 23.4 2.1l34.7 95.2L200.6 393l-81.2-241.5c13.4-.7 25.5-2.1 25.5-2.1 12-1.4 10.6-19.1-1.4-18.4 0 0-36.1 2.8-59.4 2.8-4.2 0-9.1-.1-14.4-.3C109.6 73 178.1 33 256 33c58 0 110.9 22.2 150.6 58.5-1-.1-1.9-.2-2.9-.2-21.9 0-37.4 19.1-37.4 39.6 0 18.4 10.6 33.9 21.9 52.3 8.5 14.8 18.4 33.9 18.4 61.5 0 19.1-7.3 41.2-17 72.1l-22.2 74.3-80.7-239.6zm81.4 297.2l68.1-196.9c12.7-31.8 17-57.2 17-79.9 0-8.2-.5-15.8-1.5-22.9 17.4 31.8 27.3 68.2 27.3 107 0 82.3-44.6 154.1-110.9 192.7z\"]\n};\nvar faWpbeginner = {\n prefix: 'fab',\n iconName: 'wpbeginner',\n icon: [512, 512, [], \"f297\", \"M462.799 322.374C519.01 386.682 466.961 480 370.944 480c-39.602 0-78.824-17.687-100.142-50.04-6.887.356-22.702.356-29.59 0C219.848 462.381 180.588 480 141.069 480c-95.49 0-148.348-92.996-91.855-157.626C-29.925 190.523 80.479 32 256.006 32c175.632 0 285.87 158.626 206.793 290.374zm-339.647-82.972h41.529v-58.075h-41.529v58.075zm217.18 86.072v-23.839c-60.506 20.915-132.355 9.198-187.589-33.971l.246 24.897c51.101 46.367 131.746 57.875 187.343 32.913zm-150.753-86.072h166.058v-58.075H189.579v58.075z\"]\n};\nvar faWpexplorer = {\n prefix: 'fab',\n iconName: 'wpexplorer',\n icon: [512, 512, [], \"f2de\", \"M512 256c0 141.2-114.7 256-256 256C114.8 512 0 397.3 0 256S114.7 0 256 0s256 114.7 256 256zm-32 0c0-123.2-100.3-224-224-224C132.5 32 32 132.5 32 256s100.5 224 224 224 224-100.5 224-224zM160.9 124.6l86.9 37.1-37.1 86.9-86.9-37.1 37.1-86.9zm110 169.1l46.6 94h-14.6l-50-100-48.9 100h-14l51.1-106.9-22.3-9.4 6-14 68.6 29.1-6 14.3-16.5-7.1zm-11.8-116.3l68.6 29.4-29.4 68.3L230 246l29.1-68.6zm80.3 42.9l54.6 23.1-23.4 54.3-54.3-23.1 23.1-54.3z\"]\n};\nvar faWpforms = {\n prefix: 'fab',\n iconName: 'wpforms',\n icon: [448, 512, [], \"f298\", \"M448 75.2v361.7c0 24.3-19 43.2-43.2 43.2H43.2C19.3 480 0 461.4 0 436.8V75.2C0 51.1 18.8 32 43.2 32h361.7c24 0 43.1 18.8 43.1 43.2zm-37.3 361.6V75.2c0-3-2.6-5.8-5.8-5.8h-9.3L285.3 144 224 94.1 162.8 144 52.5 69.3h-9.3c-3.2 0-5.8 2.8-5.8 5.8v361.7c0 3 2.6 5.8 5.8 5.8h361.7c3.2.1 5.8-2.7 5.8-5.8zM150.2 186v37H76.7v-37h73.5zm0 74.4v37.3H76.7v-37.3h73.5zm11.1-147.3l54-43.7H96.8l64.5 43.7zm210 72.9v37h-196v-37h196zm0 74.4v37.3h-196v-37.3h196zm-84.6-147.3l64.5-43.7H232.8l53.9 43.7zM371.3 335v37.3h-99.4V335h99.4z\"]\n};\nvar faWpressr = {\n prefix: 'fab',\n iconName: 'wpressr',\n icon: [496, 512, [], \"f3e4\", \"M248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm171.33 158.6c-15.18 34.51-30.37 69.02-45.63 103.5-2.44 5.51-6.89 8.24-12.97 8.24-23.02-.01-46.03.06-69.05-.05-5.12-.03-8.25 1.89-10.34 6.72-10.19 23.56-20.63 47-30.95 70.5-1.54 3.51-4.06 5.29-7.92 5.29-45.94-.01-91.87-.02-137.81 0-3.13 0-5.63-1.15-7.72-3.45-11.21-12.33-22.46-24.63-33.68-36.94-2.69-2.95-2.79-6.18-1.21-9.73 8.66-19.54 17.27-39.1 25.89-58.66 12.93-29.35 25.89-58.69 38.75-88.08 1.7-3.88 4.28-5.68 8.54-5.65 14.24.1 28.48.02 42.72.05 6.24.01 9.2 4.84 6.66 10.59-13.6 30.77-27.17 61.55-40.74 92.33-5.72 12.99-11.42 25.99-17.09 39-3.91 8.95 7.08 11.97 10.95 5.6.23-.37-1.42 4.18 30.01-67.69 1.36-3.1 3.41-4.4 6.77-4.39 15.21.08 30.43.02 45.64.04 5.56.01 7.91 3.64 5.66 8.75-8.33 18.96-16.71 37.9-24.98 56.89-4.98 11.43 8.08 12.49 11.28 5.33.04-.08 27.89-63.33 32.19-73.16 2.02-4.61 5.44-6.51 10.35-6.5 26.43.05 52.86 0 79.29.05 12.44.02 13.93-13.65 3.9-13.64-25.26.03-50.52.02-75.78.02-6.27 0-7.84-2.47-5.27-8.27 5.78-13.06 11.59-26.11 17.3-39.21 1.73-3.96 4.52-5.79 8.84-5.78 23.09.06 25.98.02 130.78.03 6.08-.01 8.03 2.79 5.62 8.27z\"]\n};\nvar faXbox = {\n prefix: 'fab',\n iconName: 'xbox',\n icon: [512, 512, [], \"f412\", \"M369.9 318.2c44.3 54.3 64.7 98.8 54.4 118.7-7.9 15.1-56.7 44.6-92.6 55.9-29.6 9.3-68.4 13.3-100.4 10.2-38.2-3.7-76.9-17.4-110.1-39C93.3 445.8 87 438.3 87 423.4c0-29.9 32.9-82.3 89.2-142.1 32-33.9 76.5-73.7 81.4-72.6 9.4 2.1 84.3 75.1 112.3 109.5zM188.6 143.8c-29.7-26.9-58.1-53.9-86.4-63.4-15.2-5.1-16.3-4.8-28.7 8.1-29.2 30.4-53.5 79.7-60.3 122.4-5.4 34.2-6.1 43.8-4.2 60.5 5.6 50.5 17.3 85.4 40.5 120.9 9.5 14.6 12.1 17.3 9.3 9.9-4.2-11-.3-37.5 9.5-64 14.3-39 53.9-112.9 120.3-194.4zm311.6 63.5C483.3 127.3 432.7 77 425.6 77c-7.3 0-24.2 6.5-36 13.9-23.3 14.5-41 31.4-64.3 52.8C367.7 197 427.5 283.1 448.2 346c6.8 20.7 9.7 41.1 7.4 52.3-1.7 8.5-1.7 8.5 1.4 4.6 6.1-7.7 19.9-31.3 25.4-43.5 7.4-16.2 15-40.2 18.6-58.7 4.3-22.5 3.9-70.8-.8-93.4zM141.3 43C189 40.5 251 77.5 255.6 78.4c.7.1 10.4-4.2 21.6-9.7 63.9-31.1 94-25.8 107.4-25.2-63.9-39.3-152.7-50-233.9-11.7-23.4 11.1-24 11.9-9.4 11.2z\"]\n};\nvar faXing = {\n prefix: 'fab',\n iconName: 'xing',\n icon: [384, 512, [], \"f168\", \"M162.7 210c-1.8 3.3-25.2 44.4-70.1 123.5-4.9 8.3-10.8 12.5-17.7 12.5H9.8c-7.7 0-12.1-7.5-8.5-14.4l69-121.3c.2 0 .2-.1 0-.3l-43.9-75.6c-4.3-7.8.3-14.1 8.5-14.1H100c7.3 0 13.3 4.1 18 12.2l44.7 77.5zM382.6 46.1l-144 253v.3L330.2 466c3.9 7.1.2 14.1-8.5 14.1h-65.2c-7.6 0-13.6-4-18-12.2l-92.4-168.5c3.3-5.8 51.5-90.8 144.8-255.2 4.6-8.1 10.4-12.2 17.5-12.2h65.7c8 0 12.3 6.7 8.5 14.1z\"]\n};\nvar faXingSquare = {\n prefix: 'fab',\n iconName: 'xing-square',\n icon: [448, 512, [], \"f169\", \"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM140.4 320.2H93.8c-5.5 0-8.7-5.3-6-10.3l49.3-86.7c.1 0 .1-.1 0-.2l-31.4-54c-3-5.6.2-10.1 6-10.1h46.6c5.2 0 9.5 2.9 12.9 8.7l31.9 55.3c-1.3 2.3-18 31.7-50.1 88.2-3.5 6.2-7.7 9.1-12.6 9.1zm219.7-214.1L257.3 286.8v.2l65.5 119c2.8 5.1.1 10.1-6 10.1h-46.6c-5.5 0-9.7-2.9-12.9-8.7l-66-120.3c2.3-4.1 36.8-64.9 103.4-182.3 3.3-5.8 7.4-8.7 12.5-8.7h46.9c5.7-.1 8.8 4.7 6 10z\"]\n};\nvar faYCombinator = {\n prefix: 'fab',\n iconName: 'y-combinator',\n icon: [448, 512, [], \"f23b\", \"M448 32v448H0V32h448zM236 287.5L313.5 142h-32.7L235 233c-4.7 9.3-9 18.3-12.8 26.8L210 233l-45.2-91h-35l76.7 143.8v94.5H236v-92.8z\"]\n};\nvar faYahoo = {\n prefix: 'fab',\n iconName: 'yahoo',\n icon: [448, 512, [], \"f19e\", \"M252 292l4 220c-12.7-2.2-23.5-3.9-32.3-3.9-8.4 0-19.2 1.7-32.3 3.9l4-220C140.4 197.2 85 95.2 21.4 0c11.9 3.1 23 3.9 33.2 3.9 9 0 20.4-.8 34.1-3.9 40.9 72.2 82.1 138.7 135 225.5C261 163.9 314.8 81.4 358.6 0c11.1 2.9 22 3.9 32.9 3.9 11.5 0 23.2-1 35-3.9C392.1 47.9 294.9 216.9 252 292z\"]\n};\nvar faYammer = {\n prefix: 'fab',\n iconName: 'yammer',\n icon: [512, 512, [], \"f840\", \"M421.78 152.17A23.06 23.06 0 0 0 400.9 112c-.83.43-1.71.9-2.63 1.4-15.25 8.4-118.33 80.62-106.69 88.77s82.04-23.61 130.2-50zm0 217.17c-48.16-26.38-118.64-58.1-130.2-50s91.42 80.35 106.69 88.74c.92.51 1.8 1 2.63 1.41a23.07 23.07 0 0 0 20.88-40.15zM464.21 237c-.95 0-1.95-.06-3-.06-17.4 0-142.52 13.76-136.24 26.51s83.3 18.74 138.21 18.76a23 23 0 0 0 1-45.21zM31 96.65a24.88 24.88 0 0 1 46.14-18.4l81 205.06h1.21l77-203.53a23.52 23.52 0 0 1 44.45 15.27L171.2 368.44C152.65 415.66 134.08 448 77.91 448a139.67 139.67 0 0 1-23.81-1.95 21.31 21.31 0 0 1 6.9-41.77c.66.06 10.91.66 13.86.66 30.47 0 43.74-18.94 58.07-59.41z\"]\n};\nvar faYandex = {\n prefix: 'fab',\n iconName: 'yandex',\n icon: [256, 512, [], \"f413\", \"M153.1 315.8L65.7 512H2l96-209.8c-45.1-22.9-75.2-64.4-75.2-141.1C22.7 53.7 90.8 0 171.7 0H254v512h-55.1V315.8h-45.8zm45.8-269.3h-29.4c-44.4 0-87.4 29.4-87.4 114.6 0 82.3 39.4 108.8 87.4 108.8h29.4V46.5z\"]\n};\nvar faYandexInternational = {\n prefix: 'fab',\n iconName: 'yandex-international',\n icon: [320, 512, [], \"f414\", \"M129.5 512V345.9L18.5 48h55.8l81.8 229.7L250.2 0h51.3L180.8 347.8V512h-51.3z\"]\n};\nvar faYarn = {\n prefix: 'fab',\n iconName: 'yarn',\n icon: [496, 512, [], \"f7e3\", \"M393.9 345.2c-39 9.3-48.4 32.1-104 47.4 0 0-2.7 4-10.4 5.8-13.4 3.3-63.9 6-68.5 6.1-12.4.1-19.9-3.2-22-8.2-6.4-15.3 9.2-22 9.2-22-8.1-5-9-9.9-9.8-8.1-2.4 5.8-3.6 20.1-10.1 26.5-8.8 8.9-25.5 5.9-35.3.8-10.8-5.7.8-19.2.8-19.2s-5.8 3.4-10.5-3.6c-6-9.3-17.1-37.3 11.5-62-1.3-10.1-4.6-53.7 40.6-85.6 0 0-20.6-22.8-12.9-43.3 5-13.4 7-13.3 8.6-13.9 5.7-2.2 11.3-4.6 15.4-9.1 20.6-22.2 46.8-18 46.8-18s12.4-37.8 23.9-30.4c3.5 2.3 16.3 30.6 16.3 30.6s13.6-7.9 15.1-5c8.2 16 9.2 46.5 5.6 65.1-6.1 30.6-21.4 47.1-27.6 57.5-1.4 2.4 16.5 10 27.8 41.3 10.4 28.6 1.1 52.7 2.8 55.3.8 1.4 13.7.8 36.4-13.2 12.8-7.9 28.1-16.9 45.4-17 16.7-.5 17.6 19.2 4.9 22.2zM496 256c0 136.9-111.1 248-248 248S0 392.9 0 256 111.1 8 248 8s248 111.1 248 248zm-79.3 75.2c-1.7-13.6-13.2-23-28-22.8-22 .3-40.5 11.7-52.8 19.2-4.8 3-8.9 5.2-12.4 6.8 3.1-44.5-22.5-73.1-28.7-79.4 7.8-11.3 18.4-27.8 23.4-53.2 4.3-21.7 3-55.5-6.9-74.5-1.6-3.1-7.4-11.2-21-7.4-9.7-20-13-22.1-15.6-23.8-1.1-.7-23.6-16.4-41.4 28-12.2.9-31.3 5.3-47.5 22.8-2 2.2-5.9 3.8-10.1 5.4h.1c-8.4 3-12.3 9.9-16.9 22.3-6.5 17.4.2 34.6 6.8 45.7-17.8 15.9-37 39.8-35.7 82.5-34 36-11.8 73-5.6 79.6-1.6 11.1 3.7 19.4 12 23.8 12.6 6.7 30.3 9.6 43.9 2.8 4.9 5.2 13.8 10.1 30 10.1 6.8 0 58-2.9 72.6-6.5 6.8-1.6 11.5-4.5 14.6-7.1 9.8-3.1 36.8-12.3 62.2-28.7 18-11.7 24.2-14.2 37.6-17.4 12.9-3.2 21-15.1 19.4-28.2z\"]\n};\nvar faYelp = {\n prefix: 'fab',\n iconName: 'yelp',\n icon: [384, 512, [], \"f1e9\", \"M42.9 240.32l99.62 48.61c19.2 9.4 16.2 37.51-4.5 42.71L30.5 358.45a22.79 22.79 0 0 1-28.21-19.6 197.16 197.16 0 0 1 9-85.32 22.8 22.8 0 0 1 31.61-13.21zm44 239.25a199.45 199.45 0 0 0 79.42 32.11A22.78 22.78 0 0 0 192.94 490l3.9-110.82c.7-21.3-25.5-31.91-39.81-16.1l-74.21 82.4a22.82 22.82 0 0 0 4.09 34.09zm145.34-109.92l58.81 94a22.93 22.93 0 0 0 34 5.5 198.36 198.36 0 0 0 52.71-67.61A23 23 0 0 0 364.17 370l-105.42-34.26c-20.31-6.5-37.81 15.8-26.51 33.91zm148.33-132.23a197.44 197.44 0 0 0-50.41-69.31 22.85 22.85 0 0 0-34 4.4l-62 91.92c-11.9 17.7 4.7 40.61 25.2 34.71L366 268.63a23 23 0 0 0 14.61-31.21zM62.11 30.18a22.86 22.86 0 0 0-9.9 32l104.12 180.44c11.7 20.2 42.61 11.9 42.61-11.4V22.88a22.67 22.67 0 0 0-24.5-22.8 320.37 320.37 0 0 0-112.33 30.1z\"]\n};\nvar faYoast = {\n prefix: 'fab',\n iconName: 'yoast',\n icon: [448, 512, [], \"f2b1\", \"M91.3 76h186l-7 18.9h-179c-39.7 0-71.9 31.6-71.9 70.3v205.4c0 35.4 24.9 70.3 84 70.3V460H91.3C41.2 460 0 419.8 0 370.5V165.2C0 115.9 40.7 76 91.3 76zm229.1-56h66.5C243.1 398.1 241.2 418.9 202.2 459.3c-20.8 21.6-49.3 31.7-78.3 32.7v-51.1c49.2-7.7 64.6-49.9 64.6-75.3 0-20.1.6-12.6-82.1-223.2h61.4L218.2 299 320.4 20zM448 161.5V460H234c6.6-9.6 10.7-16.3 12.1-19.4h182.5V161.5c0-32.5-17.1-51.9-48.2-62.9l6.7-17.6c41.7 13.6 60.9 43.1 60.9 80.5z\"]\n};\nvar faYoutube = {\n prefix: 'fab',\n iconName: 'youtube',\n icon: [576, 512, [], \"f167\", \"M549.655 124.083c-6.281-23.65-24.787-42.276-48.284-48.597C458.781 64 288 64 288 64S117.22 64 74.629 75.486c-23.497 6.322-42.003 24.947-48.284 48.597-11.412 42.867-11.412 132.305-11.412 132.305s0 89.438 11.412 132.305c6.281 23.65 24.787 41.5 48.284 47.821C117.22 448 288 448 288 448s170.78 0 213.371-11.486c23.497-6.321 42.003-24.171 48.284-47.821 11.412-42.867 11.412-132.305 11.412-132.305s0-89.438-11.412-132.305zm-317.51 213.508V175.185l142.739 81.205-142.739 81.201z\"]\n};\nvar faYoutubeSquare = {\n prefix: 'fab',\n iconName: 'youtube-square',\n icon: [448, 512, [], \"f431\", \"M186.8 202.1l95.2 54.1-95.2 54.1V202.1zM448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zm-42 176.3s0-59.6-7.6-88.2c-4.2-15.8-16.5-28.2-32.2-32.4C337.9 128 224 128 224 128s-113.9 0-142.2 7.7c-15.7 4.2-28 16.6-32.2 32.4-7.6 28.5-7.6 88.2-7.6 88.2s0 59.6 7.6 88.2c4.2 15.8 16.5 27.7 32.2 31.9C110.1 384 224 384 224 384s113.9 0 142.2-7.7c15.7-4.2 28-16.1 32.2-31.9 7.6-28.5 7.6-88.1 7.6-88.1z\"]\n};\nvar faZhihu = {\n prefix: 'fab',\n iconName: 'zhihu',\n icon: [640, 512, [], \"f63f\", \"M170.54 148.13v217.54l23.43.01 7.71 26.37 42.01-26.37h49.53V148.13H170.54zm97.75 193.93h-27.94l-27.9 17.51-5.08-17.47-11.9-.04V171.75h72.82v170.31zm-118.46-94.39H97.5c1.74-27.1 2.2-51.59 2.2-73.46h51.16s1.97-22.56-8.58-22.31h-88.5c3.49-13.12 7.87-26.66 13.12-40.67 0 0-24.07 0-32.27 21.57-3.39 8.9-13.21 43.14-30.7 78.12 5.89-.64 25.37-1.18 36.84-22.21 2.11-5.89 2.51-6.66 5.14-14.53h28.87c0 10.5-1.2 66.88-1.68 73.44H20.83c-11.74 0-15.56 23.62-15.56 23.62h65.58C66.45 321.1 42.83 363.12 0 396.34c20.49 5.85 40.91-.93 51-9.9 0 0 22.98-20.9 35.59-69.25l53.96 64.94s7.91-26.89-1.24-39.99c-7.58-8.92-28.06-33.06-36.79-41.81L87.9 311.95c4.36-13.98 6.99-27.55 7.87-40.67h61.65s-.09-23.62-7.59-23.62v.01zm412.02-1.6c20.83-25.64 44.98-58.57 44.98-58.57s-18.65-14.8-27.38-4.06c-6 8.15-36.83 48.2-36.83 48.2l19.23 14.43zm-150.09-59.09c-9.01-8.25-25.91 2.13-25.91 2.13s39.52 55.04 41.12 57.45l19.46-13.73s-25.67-37.61-34.66-45.86h-.01zM640 258.35c-19.78 0-130.91.93-131.06.93v-101c4.81 0 12.42-.4 22.85-1.2 40.88-2.41 70.13-4 87.77-4.81 0 0 12.22-27.19-.59-33.44-3.07-1.18-23.17 4.58-23.17 4.58s-165.22 16.49-232.36 18.05c1.6 8.82 7.62 17.08 15.78 19.55 13.31 3.48 22.69 1.7 49.15.89 24.83-1.6 43.68-2.43 56.51-2.43v99.81H351.41s2.82 22.31 25.51 22.85h107.94v70.92c0 13.97-11.19 21.99-24.48 21.12-14.08.11-26.08-1.15-41.69-1.81 1.99 3.97 6.33 14.39 19.31 21.84 9.88 4.81 16.17 6.57 26.02 6.57 29.56 0 45.67-17.28 44.89-45.31v-73.32h122.36c9.68 0 8.7-23.78 8.7-23.78l.03-.01z\"]\n};\nvar _iconsCache = {\n fa500px: fa500px,\n faAccessibleIcon: faAccessibleIcon,\n faAccusoft: faAccusoft,\n faAcquisitionsIncorporated: faAcquisitionsIncorporated,\n faAdn: faAdn,\n faAdobe: faAdobe,\n faAdversal: faAdversal,\n faAffiliatetheme: faAffiliatetheme,\n faAirbnb: faAirbnb,\n faAlgolia: faAlgolia,\n faAlipay: faAlipay,\n faAmazon: faAmazon,\n faAmazonPay: faAmazonPay,\n faAmilia: faAmilia,\n faAndroid: faAndroid,\n faAngellist: faAngellist,\n faAngrycreative: faAngrycreative,\n faAngular: faAngular,\n faAppStore: faAppStore,\n faAppStoreIos: faAppStoreIos,\n faApper: faApper,\n faApple: faApple,\n faApplePay: faApplePay,\n faArtstation: faArtstation,\n faAsymmetrik: faAsymmetrik,\n faAtlassian: faAtlassian,\n faAudible: faAudible,\n faAutoprefixer: faAutoprefixer,\n faAvianex: faAvianex,\n faAviato: faAviato,\n faAws: faAws,\n faBandcamp: faBandcamp,\n faBattleNet: faBattleNet,\n faBehance: faBehance,\n faBehanceSquare: faBehanceSquare,\n faBimobject: faBimobject,\n faBitbucket: faBitbucket,\n faBitcoin: faBitcoin,\n faBity: faBity,\n faBlackTie: faBlackTie,\n faBlackberry: faBlackberry,\n faBlogger: faBlogger,\n faBloggerB: faBloggerB,\n faBluetooth: faBluetooth,\n faBluetoothB: faBluetoothB,\n faBootstrap: faBootstrap,\n faBtc: faBtc,\n faBuffer: faBuffer,\n faBuromobelexperte: faBuromobelexperte,\n faBuyNLarge: faBuyNLarge,\n faBuysellads: faBuysellads,\n faCanadianMapleLeaf: faCanadianMapleLeaf,\n faCcAmazonPay: faCcAmazonPay,\n faCcAmex: faCcAmex,\n faCcApplePay: faCcApplePay,\n faCcDinersClub: faCcDinersClub,\n faCcDiscover: faCcDiscover,\n faCcJcb: faCcJcb,\n faCcMastercard: faCcMastercard,\n faCcPaypal: faCcPaypal,\n faCcStripe: faCcStripe,\n faCcVisa: faCcVisa,\n faCentercode: faCentercode,\n faCentos: faCentos,\n faChrome: faChrome,\n faChromecast: faChromecast,\n faCloudscale: faCloudscale,\n faCloudsmith: faCloudsmith,\n faCloudversify: faCloudversify,\n faCodepen: faCodepen,\n faCodiepie: faCodiepie,\n faConfluence: faConfluence,\n faConnectdevelop: faConnectdevelop,\n faContao: faContao,\n faCottonBureau: faCottonBureau,\n faCpanel: faCpanel,\n faCreativeCommons: faCreativeCommons,\n faCreativeCommonsBy: faCreativeCommonsBy,\n faCreativeCommonsNc: faCreativeCommonsNc,\n faCreativeCommonsNcEu: faCreativeCommonsNcEu,\n faCreativeCommonsNcJp: faCreativeCommonsNcJp,\n faCreativeCommonsNd: faCreativeCommonsNd,\n faCreativeCommonsPd: faCreativeCommonsPd,\n faCreativeCommonsPdAlt: faCreativeCommonsPdAlt,\n faCreativeCommonsRemix: faCreativeCommonsRemix,\n faCreativeCommonsSa: faCreativeCommonsSa,\n faCreativeCommonsSampling: faCreativeCommonsSampling,\n faCreativeCommonsSamplingPlus: faCreativeCommonsSamplingPlus,\n faCreativeCommonsShare: faCreativeCommonsShare,\n faCreativeCommonsZero: faCreativeCommonsZero,\n faCriticalRole: faCriticalRole,\n faCss3: faCss3,\n faCss3Alt: faCss3Alt,\n faCuttlefish: faCuttlefish,\n faDAndD: faDAndD,\n faDAndDBeyond: faDAndDBeyond,\n faDashcube: faDashcube,\n faDelicious: faDelicious,\n faDeploydog: faDeploydog,\n faDeskpro: faDeskpro,\n faDev: faDev,\n faDeviantart: faDeviantart,\n faDhl: faDhl,\n faDiaspora: faDiaspora,\n faDigg: faDigg,\n faDigitalOcean: faDigitalOcean,\n faDiscord: faDiscord,\n faDiscourse: faDiscourse,\n faDochub: faDochub,\n faDocker: faDocker,\n faDraft2digital: faDraft2digital,\n faDribbble: faDribbble,\n faDribbbleSquare: faDribbbleSquare,\n faDropbox: faDropbox,\n faDrupal: faDrupal,\n faDyalog: faDyalog,\n faEarlybirds: faEarlybirds,\n faEbay: faEbay,\n faEdge: faEdge,\n faElementor: faElementor,\n faEllo: faEllo,\n faEmber: faEmber,\n faEmpire: faEmpire,\n faEnvira: faEnvira,\n faErlang: faErlang,\n faEthereum: faEthereum,\n faEtsy: faEtsy,\n faEvernote: faEvernote,\n faExpeditedssl: faExpeditedssl,\n faFacebook: faFacebook,\n faFacebookF: faFacebookF,\n faFacebookMessenger: faFacebookMessenger,\n faFacebookSquare: faFacebookSquare,\n faFantasyFlightGames: faFantasyFlightGames,\n faFedex: faFedex,\n faFedora: faFedora,\n faFigma: faFigma,\n faFirefox: faFirefox,\n faFirefoxBrowser: faFirefoxBrowser,\n faFirstOrder: faFirstOrder,\n faFirstOrderAlt: faFirstOrderAlt,\n faFirstdraft: faFirstdraft,\n faFlickr: faFlickr,\n faFlipboard: faFlipboard,\n faFly: faFly,\n faFontAwesome: faFontAwesome,\n faFontAwesomeAlt: faFontAwesomeAlt,\n faFontAwesomeFlag: faFontAwesomeFlag,\n faFontAwesomeLogoFull: faFontAwesomeLogoFull,\n faFonticons: faFonticons,\n faFonticonsFi: faFonticonsFi,\n faFortAwesome: faFortAwesome,\n faFortAwesomeAlt: faFortAwesomeAlt,\n faForumbee: faForumbee,\n faFoursquare: faFoursquare,\n faFreeCodeCamp: faFreeCodeCamp,\n faFreebsd: faFreebsd,\n faFulcrum: faFulcrum,\n faGalacticRepublic: faGalacticRepublic,\n faGalacticSenate: faGalacticSenate,\n faGetPocket: faGetPocket,\n faGg: faGg,\n faGgCircle: faGgCircle,\n faGit: faGit,\n faGitAlt: faGitAlt,\n faGitSquare: faGitSquare,\n faGithub: faGithub,\n faGithubAlt: faGithubAlt,\n faGithubSquare: faGithubSquare,\n faGitkraken: faGitkraken,\n faGitlab: faGitlab,\n faGitter: faGitter,\n faGlide: faGlide,\n faGlideG: faGlideG,\n faGofore: faGofore,\n faGoodreads: faGoodreads,\n faGoodreadsG: faGoodreadsG,\n faGoogle: faGoogle,\n faGoogleDrive: faGoogleDrive,\n faGooglePlay: faGooglePlay,\n faGooglePlus: faGooglePlus,\n faGooglePlusG: faGooglePlusG,\n faGooglePlusSquare: faGooglePlusSquare,\n faGoogleWallet: faGoogleWallet,\n faGratipay: faGratipay,\n faGrav: faGrav,\n faGripfire: faGripfire,\n faGrunt: faGrunt,\n faGulp: faGulp,\n faHackerNews: faHackerNews,\n faHackerNewsSquare: faHackerNewsSquare,\n faHackerrank: faHackerrank,\n faHips: faHips,\n faHireAHelper: faHireAHelper,\n faHooli: faHooli,\n faHornbill: faHornbill,\n faHotjar: faHotjar,\n faHouzz: faHouzz,\n faHtml5: faHtml5,\n faHubspot: faHubspot,\n faIdeal: faIdeal,\n faImdb: faImdb,\n faInstagram: faInstagram,\n faIntercom: faIntercom,\n faInternetExplorer: faInternetExplorer,\n faInvision: faInvision,\n faIoxhost: faIoxhost,\n faItchIo: faItchIo,\n faItunes: faItunes,\n faItunesNote: faItunesNote,\n faJava: faJava,\n faJediOrder: faJediOrder,\n faJenkins: faJenkins,\n faJira: faJira,\n faJoget: faJoget,\n faJoomla: faJoomla,\n faJs: faJs,\n faJsSquare: faJsSquare,\n faJsfiddle: faJsfiddle,\n faKaggle: faKaggle,\n faKeybase: faKeybase,\n faKeycdn: faKeycdn,\n faKickstarter: faKickstarter,\n faKickstarterK: faKickstarterK,\n faKorvue: faKorvue,\n faLaravel: faLaravel,\n faLastfm: faLastfm,\n faLastfmSquare: faLastfmSquare,\n faLeanpub: faLeanpub,\n faLess: faLess,\n faLine: faLine,\n faLinkedin: faLinkedin,\n faLinkedinIn: faLinkedinIn,\n faLinode: faLinode,\n faLinux: faLinux,\n faLyft: faLyft,\n faMagento: faMagento,\n faMailchimp: faMailchimp,\n faMandalorian: faMandalorian,\n faMarkdown: faMarkdown,\n faMastodon: faMastodon,\n faMaxcdn: faMaxcdn,\n faMdb: faMdb,\n faMedapps: faMedapps,\n faMedium: faMedium,\n faMediumM: faMediumM,\n faMedrt: faMedrt,\n faMeetup: faMeetup,\n faMegaport: faMegaport,\n faMendeley: faMendeley,\n faMicroblog: faMicroblog,\n faMicrosoft: faMicrosoft,\n faMix: faMix,\n faMixcloud: faMixcloud,\n faMizuni: faMizuni,\n faModx: faModx,\n faMonero: faMonero,\n faNapster: faNapster,\n faNeos: faNeos,\n faNimblr: faNimblr,\n faNode: faNode,\n faNodeJs: faNodeJs,\n faNpm: faNpm,\n faNs8: faNs8,\n faNutritionix: faNutritionix,\n faOdnoklassniki: faOdnoklassniki,\n faOdnoklassnikiSquare: faOdnoklassnikiSquare,\n faOldRepublic: faOldRepublic,\n faOpencart: faOpencart,\n faOpenid: faOpenid,\n faOpera: faOpera,\n faOptinMonster: faOptinMonster,\n faOrcid: faOrcid,\n faOsi: faOsi,\n faPage4: faPage4,\n faPagelines: faPagelines,\n faPalfed: faPalfed,\n faPatreon: faPatreon,\n faPaypal: faPaypal,\n faPennyArcade: faPennyArcade,\n faPeriscope: faPeriscope,\n faPhabricator: faPhabricator,\n faPhoenixFramework: faPhoenixFramework,\n faPhoenixSquadron: faPhoenixSquadron,\n faPhp: faPhp,\n faPiedPiper: faPiedPiper,\n faPiedPiperAlt: faPiedPiperAlt,\n faPiedPiperHat: faPiedPiperHat,\n faPiedPiperPp: faPiedPiperPp,\n faPiedPiperSquare: faPiedPiperSquare,\n faPinterest: faPinterest,\n faPinterestP: faPinterestP,\n faPinterestSquare: faPinterestSquare,\n faPlaystation: faPlaystation,\n faProductHunt: faProductHunt,\n faPushed: faPushed,\n faPython: faPython,\n faQq: faQq,\n faQuinscape: faQuinscape,\n faQuora: faQuora,\n faRProject: faRProject,\n faRaspberryPi: faRaspberryPi,\n faRavelry: faRavelry,\n faReact: faReact,\n faReacteurope: faReacteurope,\n faReadme: faReadme,\n faRebel: faRebel,\n faRedRiver: faRedRiver,\n faReddit: faReddit,\n faRedditAlien: faRedditAlien,\n faRedditSquare: faRedditSquare,\n faRedhat: faRedhat,\n faRenren: faRenren,\n faReplyd: faReplyd,\n faResearchgate: faResearchgate,\n faResolving: faResolving,\n faRev: faRev,\n faRocketchat: faRocketchat,\n faRockrms: faRockrms,\n faSafari: faSafari,\n faSalesforce: faSalesforce,\n faSass: faSass,\n faSchlix: faSchlix,\n faScribd: faScribd,\n faSearchengin: faSearchengin,\n faSellcast: faSellcast,\n faSellsy: faSellsy,\n faServicestack: faServicestack,\n faShirtsinbulk: faShirtsinbulk,\n faShopware: faShopware,\n faSimplybuilt: faSimplybuilt,\n faSistrix: faSistrix,\n faSith: faSith,\n faSketch: faSketch,\n faSkyatlas: faSkyatlas,\n faSkype: faSkype,\n faSlack: faSlack,\n faSlackHash: faSlackHash,\n faSlideshare: faSlideshare,\n faSnapchat: faSnapchat,\n faSnapchatGhost: faSnapchatGhost,\n faSnapchatSquare: faSnapchatSquare,\n faSoundcloud: faSoundcloud,\n faSourcetree: faSourcetree,\n faSpeakap: faSpeakap,\n faSpeakerDeck: faSpeakerDeck,\n faSpotify: faSpotify,\n faSquarespace: faSquarespace,\n faStackExchange: faStackExchange,\n faStackOverflow: faStackOverflow,\n faStackpath: faStackpath,\n faStaylinked: faStaylinked,\n faSteam: faSteam,\n faSteamSquare: faSteamSquare,\n faSteamSymbol: faSteamSymbol,\n faStickerMule: faStickerMule,\n faStrava: faStrava,\n faStripe: faStripe,\n faStripeS: faStripeS,\n faStudiovinari: faStudiovinari,\n faStumbleupon: faStumbleupon,\n faStumbleuponCircle: faStumbleuponCircle,\n faSuperpowers: faSuperpowers,\n faSupple: faSupple,\n faSuse: faSuse,\n faSwift: faSwift,\n faSymfony: faSymfony,\n faTeamspeak: faTeamspeak,\n faTelegram: faTelegram,\n faTelegramPlane: faTelegramPlane,\n faTencentWeibo: faTencentWeibo,\n faTheRedYeti: faTheRedYeti,\n faThemeco: faThemeco,\n faThemeisle: faThemeisle,\n faThinkPeaks: faThinkPeaks,\n faTradeFederation: faTradeFederation,\n faTrello: faTrello,\n faTripadvisor: faTripadvisor,\n faTumblr: faTumblr,\n faTumblrSquare: faTumblrSquare,\n faTwitch: faTwitch,\n faTwitter: faTwitter,\n faTwitterSquare: faTwitterSquare,\n faTypo3: faTypo3,\n faUber: faUber,\n faUbuntu: faUbuntu,\n faUikit: faUikit,\n faUmbraco: faUmbraco,\n faUniregistry: faUniregistry,\n faUnity: faUnity,\n faUntappd: faUntappd,\n faUps: faUps,\n faUsb: faUsb,\n faUsps: faUsps,\n faUssunnah: faUssunnah,\n faVaadin: faVaadin,\n faViacoin: faViacoin,\n faViadeo: faViadeo,\n faViadeoSquare: faViadeoSquare,\n faViber: faViber,\n faVimeo: faVimeo,\n faVimeoSquare: faVimeoSquare,\n faVimeoV: faVimeoV,\n faVine: faVine,\n faVk: faVk,\n faVnv: faVnv,\n faVuejs: faVuejs,\n faWaze: faWaze,\n faWeebly: faWeebly,\n faWeibo: faWeibo,\n faWeixin: faWeixin,\n faWhatsapp: faWhatsapp,\n faWhatsappSquare: faWhatsappSquare,\n faWhmcs: faWhmcs,\n faWikipediaW: faWikipediaW,\n faWindows: faWindows,\n faWix: faWix,\n faWizardsOfTheCoast: faWizardsOfTheCoast,\n faWolfPackBattalion: faWolfPackBattalion,\n faWordpress: faWordpress,\n faWordpressSimple: faWordpressSimple,\n faWpbeginner: faWpbeginner,\n faWpexplorer: faWpexplorer,\n faWpforms: faWpforms,\n faWpressr: faWpressr,\n faXbox: faXbox,\n faXing: faXing,\n faXingSquare: faXingSquare,\n faYCombinator: faYCombinator,\n faYahoo: faYahoo,\n faYammer: faYammer,\n faYandex: faYandex,\n faYandexInternational: faYandexInternational,\n faYarn: faYarn,\n faYelp: faYelp,\n faYoast: faYoast,\n faYoutube: faYoutube,\n faYoutubeSquare: faYoutubeSquare,\n faZhihu: faZhihu\n};\n\nexport { _iconsCache as fab, prefix, fa500px, faAccessibleIcon, faAccusoft, faAcquisitionsIncorporated, faAdn, faAdobe, faAdversal, faAffiliatetheme, faAirbnb, faAlgolia, faAlipay, faAmazon, faAmazonPay, faAmilia, faAndroid, faAngellist, faAngrycreative, faAngular, faAppStore, faAppStoreIos, faApper, faApple, faApplePay, faArtstation, faAsymmetrik, faAtlassian, faAudible, faAutoprefixer, faAvianex, faAviato, faAws, faBandcamp, faBattleNet, faBehance, faBehanceSquare, faBimobject, faBitbucket, faBitcoin, faBity, faBlackTie, faBlackberry, faBlogger, faBloggerB, faBluetooth, faBluetoothB, faBootstrap, faBtc, faBuffer, faBuromobelexperte, faBuyNLarge, faBuysellads, faCanadianMapleLeaf, faCcAmazonPay, faCcAmex, faCcApplePay, faCcDinersClub, faCcDiscover, faCcJcb, faCcMastercard, faCcPaypal, faCcStripe, faCcVisa, faCentercode, faCentos, faChrome, faChromecast, faCloudscale, faCloudsmith, faCloudversify, faCodepen, faCodiepie, faConfluence, faConnectdevelop, faContao, faCottonBureau, faCpanel, faCreativeCommons, faCreativeCommonsBy, faCreativeCommonsNc, faCreativeCommonsNcEu, faCreativeCommonsNcJp, faCreativeCommonsNd, faCreativeCommonsPd, faCreativeCommonsPdAlt, faCreativeCommonsRemix, faCreativeCommonsSa, faCreativeCommonsSampling, faCreativeCommonsSamplingPlus, faCreativeCommonsShare, faCreativeCommonsZero, faCriticalRole, faCss3, faCss3Alt, faCuttlefish, faDAndD, faDAndDBeyond, faDashcube, faDelicious, faDeploydog, faDeskpro, faDev, faDeviantart, faDhl, faDiaspora, faDigg, faDigitalOcean, faDiscord, faDiscourse, faDochub, faDocker, faDraft2digital, faDribbble, faDribbbleSquare, faDropbox, faDrupal, faDyalog, faEarlybirds, faEbay, faEdge, faElementor, faEllo, faEmber, faEmpire, faEnvira, faErlang, faEthereum, faEtsy, faEvernote, faExpeditedssl, faFacebook, faFacebookF, faFacebookMessenger, faFacebookSquare, faFantasyFlightGames, faFedex, faFedora, faFigma, faFirefox, faFirefoxBrowser, faFirstOrder, faFirstOrderAlt, faFirstdraft, faFlickr, faFlipboard, faFly, faFontAwesome, faFontAwesomeAlt, faFontAwesomeFlag, faFontAwesomeLogoFull, faFonticons, faFonticonsFi, faFortAwesome, faFortAwesomeAlt, faForumbee, faFoursquare, faFreeCodeCamp, faFreebsd, faFulcrum, faGalacticRepublic, faGalacticSenate, faGetPocket, faGg, faGgCircle, faGit, faGitAlt, faGitSquare, faGithub, faGithubAlt, faGithubSquare, faGitkraken, faGitlab, faGitter, faGlide, faGlideG, faGofore, faGoodreads, faGoodreadsG, faGoogle, faGoogleDrive, faGooglePlay, faGooglePlus, faGooglePlusG, faGooglePlusSquare, faGoogleWallet, faGratipay, faGrav, faGripfire, faGrunt, faGulp, faHackerNews, faHackerNewsSquare, faHackerrank, faHips, faHireAHelper, faHooli, faHornbill, faHotjar, faHouzz, faHtml5, faHubspot, faIdeal, faImdb, faInstagram, faIntercom, faInternetExplorer, faInvision, faIoxhost, faItchIo, faItunes, faItunesNote, faJava, faJediOrder, faJenkins, faJira, faJoget, faJoomla, faJs, faJsSquare, faJsfiddle, faKaggle, faKeybase, faKeycdn, faKickstarter, faKickstarterK, faKorvue, faLaravel, faLastfm, faLastfmSquare, faLeanpub, faLess, faLine, faLinkedin, faLinkedinIn, faLinode, faLinux, faLyft, faMagento, faMailchimp, faMandalorian, faMarkdown, faMastodon, faMaxcdn, faMdb, faMedapps, faMedium, faMediumM, faMedrt, faMeetup, faMegaport, faMendeley, faMicroblog, faMicrosoft, faMix, faMixcloud, faMizuni, faModx, faMonero, faNapster, faNeos, faNimblr, faNode, faNodeJs, faNpm, faNs8, faNutritionix, faOdnoklassniki, faOdnoklassnikiSquare, faOldRepublic, faOpencart, faOpenid, faOpera, faOptinMonster, faOrcid, faOsi, faPage4, faPagelines, faPalfed, faPatreon, faPaypal, faPennyArcade, faPeriscope, faPhabricator, faPhoenixFramework, faPhoenixSquadron, faPhp, faPiedPiper, faPiedPiperAlt, faPiedPiperHat, faPiedPiperPp, faPiedPiperSquare, faPinterest, faPinterestP, faPinterestSquare, faPlaystation, faProductHunt, faPushed, faPython, faQq, faQuinscape, faQuora, faRProject, faRaspberryPi, faRavelry, faReact, faReacteurope, faReadme, faRebel, faRedRiver, faReddit, faRedditAlien, faRedditSquare, faRedhat, faRenren, faReplyd, faResearchgate, faResolving, faRev, faRocketchat, faRockrms, faSafari, faSalesforce, faSass, faSchlix, faScribd, faSearchengin, faSellcast, faSellsy, faServicestack, faShirtsinbulk, faShopware, faSimplybuilt, faSistrix, faSith, faSketch, faSkyatlas, faSkype, faSlack, faSlackHash, faSlideshare, faSnapchat, faSnapchatGhost, faSnapchatSquare, faSoundcloud, faSourcetree, faSpeakap, faSpeakerDeck, faSpotify, faSquarespace, faStackExchange, faStackOverflow, faStackpath, faStaylinked, faSteam, faSteamSquare, faSteamSymbol, faStickerMule, faStrava, faStripe, faStripeS, faStudiovinari, faStumbleupon, faStumbleuponCircle, faSuperpowers, faSupple, faSuse, faSwift, faSymfony, faTeamspeak, faTelegram, faTelegramPlane, faTencentWeibo, faTheRedYeti, faThemeco, faThemeisle, faThinkPeaks, faTradeFederation, faTrello, faTripadvisor, faTumblr, faTumblrSquare, faTwitch, faTwitter, faTwitterSquare, faTypo3, faUber, faUbuntu, faUikit, faUmbraco, faUniregistry, faUnity, faUntappd, faUps, faUsb, faUsps, faUssunnah, faVaadin, faViacoin, faViadeo, faViadeoSquare, faViber, faVimeo, faVimeoSquare, faVimeoV, faVine, faVk, faVnv, faVuejs, faWaze, faWeebly, faWeibo, faWeixin, faWhatsapp, faWhatsappSquare, faWhmcs, faWikipediaW, faWindows, faWix, faWizardsOfTheCoast, faWolfPackBattalion, faWordpress, faWordpressSimple, faWpbeginner, faWpexplorer, faWpforms, faWpressr, faXbox, faXing, faXingSquare, faYCombinator, faYahoo, faYammer, faYandex, faYandexInternational, faYarn, faYelp, faYoast, faYoutube, faYoutubeSquare, faZhihu };\n","var prefix = \"fas\";\nvar faAd = {\n prefix: 'fas',\n iconName: 'ad',\n icon: [512, 512, [], \"f641\", \"M157.52 272h36.96L176 218.78 157.52 272zM352 256c-13.23 0-24 10.77-24 24s10.77 24 24 24 24-10.77 24-24-10.77-24-24-24zM464 64H48C21.5 64 0 85.5 0 112v288c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zM250.58 352h-16.94c-6.81 0-12.88-4.32-15.12-10.75L211.15 320h-70.29l-7.38 21.25A16 16 0 0 1 118.36 352h-16.94c-11.01 0-18.73-10.85-15.12-21.25L140 176.12A23.995 23.995 0 0 1 162.67 160h26.66A23.99 23.99 0 0 1 212 176.13l53.69 154.62c3.61 10.4-4.11 21.25-15.11 21.25zM424 336c0 8.84-7.16 16-16 16h-16c-4.85 0-9.04-2.27-11.98-5.68-8.62 3.66-18.09 5.68-28.02 5.68-39.7 0-72-32.3-72-72s32.3-72 72-72c8.46 0 16.46 1.73 24 4.42V176c0-8.84 7.16-16 16-16h16c8.84 0 16 7.16 16 16v160z\"]\n};\nvar faAddressBook = {\n prefix: 'fas',\n iconName: 'address-book',\n icon: [448, 512, [], \"f2b9\", \"M436 160c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-20V48c0-26.5-21.5-48-48-48H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h320c26.5 0 48-21.5 48-48v-48h20c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-20v-64h20c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-20v-64h20zm-228-32c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zm112 236.8c0 10.6-10 19.2-22.4 19.2H118.4C106 384 96 375.4 96 364.8v-19.2c0-31.8 30.1-57.6 67.2-57.6h5c12.3 5.1 25.7 8 39.8 8s27.6-2.9 39.8-8h5c37.1 0 67.2 25.8 67.2 57.6v19.2z\"]\n};\nvar faAddressCard = {\n prefix: 'fas',\n iconName: 'address-card',\n icon: [576, 512, [], \"f2bb\", \"M528 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-352 96c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zm112 236.8c0 10.6-10 19.2-22.4 19.2H86.4C74 384 64 375.4 64 364.8v-19.2c0-31.8 30.1-57.6 67.2-57.6h5c12.3 5.1 25.7 8 39.8 8s27.6-2.9 39.8-8h5c37.1 0 67.2 25.8 67.2 57.6v19.2zM512 312c0 4.4-3.6 8-8 8H360c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16zm0-64c0 4.4-3.6 8-8 8H360c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16zm0-64c0 4.4-3.6 8-8 8H360c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16z\"]\n};\nvar faAdjust = {\n prefix: 'fas',\n iconName: 'adjust',\n icon: [512, 512, [], \"f042\", \"M8 256c0 136.966 111.033 248 248 248s248-111.034 248-248S392.966 8 256 8 8 119.033 8 256zm248 184V72c101.705 0 184 82.311 184 184 0 101.705-82.311 184-184 184z\"]\n};\nvar faAirFreshener = {\n prefix: 'fas',\n iconName: 'air-freshener',\n icon: [384, 512, [], \"f5d0\", \"M378.94 321.41L284.7 224h49.22c15.3 0 23.66-16.6 13.86-27.53L234.45 69.96c3.43-6.61 5.55-14 5.55-21.96 0-26.51-21.49-48-48-48s-48 21.49-48 48c0 7.96 2.12 15.35 5.55 21.96L36.22 196.47C26.42 207.4 34.78 224 50.08 224H99.3L5.06 321.41C-6.69 333.56 3.34 352 21.7 352H160v32H48c-8.84 0-16 7.16-16 16v96c0 8.84 7.16 16 16 16h288c8.84 0 16-7.16 16-16v-96c0-8.84-7.16-16-16-16H224v-32h138.3c18.36 0 28.39-18.44 16.64-30.59zM192 31.98c8.85 0 16.02 7.17 16.02 16.02 0 8.84-7.17 16.02-16.02 16.02S175.98 56.84 175.98 48c0-8.85 7.17-16.02 16.02-16.02zM304 432v32H80v-32h224z\"]\n};\nvar faAlignCenter = {\n prefix: 'fas',\n iconName: 'align-center',\n icon: [448, 512, [], \"f037\", \"M432 160H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0 256H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM108.1 96h231.81A12.09 12.09 0 0 0 352 83.9V44.09A12.09 12.09 0 0 0 339.91 32H108.1A12.09 12.09 0 0 0 96 44.09V83.9A12.1 12.1 0 0 0 108.1 96zm231.81 256A12.09 12.09 0 0 0 352 339.9v-39.81A12.09 12.09 0 0 0 339.91 288H108.1A12.09 12.09 0 0 0 96 300.09v39.81a12.1 12.1 0 0 0 12.1 12.1z\"]\n};\nvar faAlignJustify = {\n prefix: 'fas',\n iconName: 'align-justify',\n icon: [448, 512, [], \"f039\", \"M432 416H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-128H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-128H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-128H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z\"]\n};\nvar faAlignLeft = {\n prefix: 'fas',\n iconName: 'align-left',\n icon: [448, 512, [], \"f036\", \"M12.83 352h262.34A12.82 12.82 0 0 0 288 339.17v-38.34A12.82 12.82 0 0 0 275.17 288H12.83A12.82 12.82 0 0 0 0 300.83v38.34A12.82 12.82 0 0 0 12.83 352zm0-256h262.34A12.82 12.82 0 0 0 288 83.17V44.83A12.82 12.82 0 0 0 275.17 32H12.83A12.82 12.82 0 0 0 0 44.83v38.34A12.82 12.82 0 0 0 12.83 96zM432 160H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0 256H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z\"]\n};\nvar faAlignRight = {\n prefix: 'fas',\n iconName: 'align-right',\n icon: [448, 512, [], \"f038\", \"M16 224h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm416 192H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm3.17-384H172.83A12.82 12.82 0 0 0 160 44.83v38.34A12.82 12.82 0 0 0 172.83 96h262.34A12.82 12.82 0 0 0 448 83.17V44.83A12.82 12.82 0 0 0 435.17 32zm0 256H172.83A12.82 12.82 0 0 0 160 300.83v38.34A12.82 12.82 0 0 0 172.83 352h262.34A12.82 12.82 0 0 0 448 339.17v-38.34A12.82 12.82 0 0 0 435.17 288z\"]\n};\nvar faAllergies = {\n prefix: 'fas',\n iconName: 'allergies',\n icon: [448, 512, [], \"f461\", \"M416 112c-17.6 0-32 14.4-32 32v72c0 4.4-3.6 8-8 8h-16c-4.4 0-8-3.6-8-8V64c0-17.6-14.4-32-32-32s-32 14.4-32 32v152c0 4.4-3.6 8-8 8h-16c-4.4 0-8-3.6-8-8V32c0-17.6-14.4-32-32-32s-32 14.4-32 32v184c0 4.4-3.6 8-8 8h-16c-4.4 0-8-3.6-8-8V64c0-17.6-14.4-32-32-32S96 46.4 96 64v241l-23.6-32.5c-13-17.9-38-21.8-55.9-8.8s-21.8 38-8.8 55.9l125.6 172.7c9 12.4 23.5 19.8 38.8 19.8h197.6c22.3 0 41.6-15.3 46.7-37l26.5-112.7c3.2-13.7 4.9-28.3 5.1-42.3V144c0-17.6-14.4-32-32-32zM176 416c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm0-96c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm64 128c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm0-96c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm64 32c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm32 64c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm32-128c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16z\"]\n};\nvar faAmbulance = {\n prefix: 'fas',\n iconName: 'ambulance',\n icon: [640, 512, [], \"f0f9\", \"M624 352h-16V243.9c0-12.7-5.1-24.9-14.1-33.9L494 110.1c-9-9-21.2-14.1-33.9-14.1H416V48c0-26.5-21.5-48-48-48H48C21.5 0 0 21.5 0 48v320c0 26.5 21.5 48 48 48h16c0 53 43 96 96 96s96-43 96-96h128c0 53 43 96 96 96s96-43 96-96h48c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zM160 464c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm144-248c0 4.4-3.6 8-8 8h-56v56c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-56h-56c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h56v-56c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v56h56c4.4 0 8 3.6 8 8v48zm176 248c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm80-208H416V144h44.1l99.9 99.9V256z\"]\n};\nvar faAmericanSignLanguageInterpreting = {\n prefix: 'fas',\n iconName: 'american-sign-language-interpreting',\n icon: [640, 512, [], \"f2a3\", \"M290.547 189.039c-20.295-10.149-44.147-11.199-64.739-3.89 42.606 0 71.208 20.475 85.578 50.576 8.576 17.899-5.148 38.071-23.617 38.071 18.429 0 32.211 20.136 23.617 38.071-14.725 30.846-46.123 50.854-80.298 50.854-.557 0-94.471-8.615-94.471-8.615l-66.406 33.347c-9.384 4.693-19.815.379-23.895-7.781L1.86 290.747c-4.167-8.615-1.111-18.897 6.946-23.621l58.072-33.069L108 159.861c6.39-57.245 34.731-109.767 79.743-146.726 11.391-9.448 28.341-7.781 37.51 3.613 9.446 11.394 7.78 28.067-3.612 37.516-12.503 10.559-23.618 22.509-32.509 35.57 21.672-14.729 46.679-24.732 74.186-28.067 14.725-1.945 28.063 8.336 29.73 23.065 1.945 14.728-8.336 28.067-23.062 29.734-16.116 1.945-31.12 7.503-44.178 15.284 26.114-5.713 58.712-3.138 88.079 11.115 13.336 6.669 18.893 22.509 12.224 35.848-6.389 13.06-22.504 18.617-35.564 12.226zm-27.229 69.472c-6.112-12.505-18.338-20.286-32.231-20.286a35.46 35.46 0 0 0-35.565 35.57c0 21.428 17.808 35.57 35.565 35.57 13.893 0 26.119-7.781 32.231-20.286 4.446-9.449 13.614-15.006 23.339-15.284-9.725-.277-18.893-5.835-23.339-15.284zm374.821-37.237c4.168 8.615 1.111 18.897-6.946 23.621l-58.071 33.069L532 352.16c-6.39 57.245-34.731 109.767-79.743 146.726-10.932 9.112-27.799 8.144-37.51-3.613-9.446-11.394-7.78-28.067 3.613-37.516 12.503-10.559 23.617-22.509 32.508-35.57-21.672 14.729-46.679 24.732-74.186 28.067-10.021 2.506-27.552-5.643-29.73-23.065-1.945-14.728 8.336-28.067 23.062-29.734 16.116-1.946 31.12-7.503 44.178-15.284-26.114 5.713-58.712 3.138-88.079-11.115-13.336-6.669-18.893-22.509-12.224-35.848 6.389-13.061 22.505-18.619 35.565-12.227 20.295 10.149 44.147 11.199 64.739 3.89-42.606 0-71.208-20.475-85.578-50.576-8.576-17.899 5.148-38.071 23.617-38.071-18.429 0-32.211-20.136-23.617-38.071 14.033-29.396 44.039-50.887 81.966-50.854l92.803 8.615 66.406-33.347c9.408-4.704 19.828-.354 23.894 7.781l44.455 88.926zm-229.227-18.618c-13.893 0-26.119 7.781-32.231 20.286-4.446 9.449-13.614 15.006-23.339 15.284 9.725.278 18.893 5.836 23.339 15.284 6.112 12.505 18.338 20.286 32.231 20.286a35.46 35.46 0 0 0 35.565-35.57c0-21.429-17.808-35.57-35.565-35.57z\"]\n};\nvar faAnchor = {\n prefix: 'fas',\n iconName: 'anchor',\n icon: [576, 512, [], \"f13d\", \"M12.971 352h32.394C67.172 454.735 181.944 512 288 512c106.229 0 220.853-57.38 242.635-160h32.394c10.691 0 16.045-12.926 8.485-20.485l-67.029-67.029c-4.686-4.686-12.284-4.686-16.971 0l-67.029 67.029c-7.56 7.56-2.206 20.485 8.485 20.485h35.146c-20.29 54.317-84.963 86.588-144.117 94.015V256h52c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-52v-5.47c37.281-13.178 63.995-48.725 64-90.518C384.005 43.772 341.605.738 289.37.01 235.723-.739 192 42.525 192 96c0 41.798 26.716 77.35 64 90.53V192h-52c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h52v190.015c-58.936-7.399-123.82-39.679-144.117-94.015h35.146c10.691 0 16.045-12.926 8.485-20.485l-67.029-67.029c-4.686-4.686-12.284-4.686-16.971 0L4.485 331.515C-3.074 339.074 2.28 352 12.971 352zM288 64c17.645 0 32 14.355 32 32s-14.355 32-32 32-32-14.355-32-32 14.355-32 32-32z\"]\n};\nvar faAngleDoubleDown = {\n prefix: 'fas',\n iconName: 'angle-double-down',\n icon: [320, 512, [], \"f103\", \"M143 256.3L7 120.3c-9.4-9.4-9.4-24.6 0-33.9l22.6-22.6c9.4-9.4 24.6-9.4 33.9 0l96.4 96.4 96.4-96.4c9.4-9.4 24.6-9.4 33.9 0L313 86.3c9.4 9.4 9.4 24.6 0 33.9l-136 136c-9.4 9.5-24.6 9.5-34 .1zm34 192l136-136c9.4-9.4 9.4-24.6 0-33.9l-22.6-22.6c-9.4-9.4-24.6-9.4-33.9 0L160 352.1l-96.4-96.4c-9.4-9.4-24.6-9.4-33.9 0L7 278.3c-9.4 9.4-9.4 24.6 0 33.9l136 136c9.4 9.5 24.6 9.5 34 .1z\"]\n};\nvar faAngleDoubleLeft = {\n prefix: 'fas',\n iconName: 'angle-double-left',\n icon: [448, 512, [], \"f100\", \"M223.7 239l136-136c9.4-9.4 24.6-9.4 33.9 0l22.6 22.6c9.4 9.4 9.4 24.6 0 33.9L319.9 256l96.4 96.4c9.4 9.4 9.4 24.6 0 33.9L393.7 409c-9.4 9.4-24.6 9.4-33.9 0l-136-136c-9.5-9.4-9.5-24.6-.1-34zm-192 34l136 136c9.4 9.4 24.6 9.4 33.9 0l22.6-22.6c9.4-9.4 9.4-24.6 0-33.9L127.9 256l96.4-96.4c9.4-9.4 9.4-24.6 0-33.9L201.7 103c-9.4-9.4-24.6-9.4-33.9 0l-136 136c-9.5 9.4-9.5 24.6-.1 34z\"]\n};\nvar faAngleDoubleRight = {\n prefix: 'fas',\n iconName: 'angle-double-right',\n icon: [448, 512, [], \"f101\", \"M224.3 273l-136 136c-9.4 9.4-24.6 9.4-33.9 0l-22.6-22.6c-9.4-9.4-9.4-24.6 0-33.9l96.4-96.4-96.4-96.4c-9.4-9.4-9.4-24.6 0-33.9L54.3 103c9.4-9.4 24.6-9.4 33.9 0l136 136c9.5 9.4 9.5 24.6.1 34zm192-34l-136-136c-9.4-9.4-24.6-9.4-33.9 0l-22.6 22.6c-9.4 9.4-9.4 24.6 0 33.9l96.4 96.4-96.4 96.4c-9.4 9.4-9.4 24.6 0 33.9l22.6 22.6c9.4 9.4 24.6 9.4 33.9 0l136-136c9.4-9.2 9.4-24.4 0-33.8z\"]\n};\nvar faAngleDoubleUp = {\n prefix: 'fas',\n iconName: 'angle-double-up',\n icon: [320, 512, [], \"f102\", \"M177 255.7l136 136c9.4 9.4 9.4 24.6 0 33.9l-22.6 22.6c-9.4 9.4-24.6 9.4-33.9 0L160 351.9l-96.4 96.4c-9.4 9.4-24.6 9.4-33.9 0L7 425.7c-9.4-9.4-9.4-24.6 0-33.9l136-136c9.4-9.5 24.6-9.5 34-.1zm-34-192L7 199.7c-9.4 9.4-9.4 24.6 0 33.9l22.6 22.6c9.4 9.4 24.6 9.4 33.9 0l96.4-96.4 96.4 96.4c9.4 9.4 24.6 9.4 33.9 0l22.6-22.6c9.4-9.4 9.4-24.6 0-33.9l-136-136c-9.2-9.4-24.4-9.4-33.8 0z\"]\n};\nvar faAngleDown = {\n prefix: 'fas',\n iconName: 'angle-down',\n icon: [320, 512, [], \"f107\", \"M143 352.3L7 216.3c-9.4-9.4-9.4-24.6 0-33.9l22.6-22.6c9.4-9.4 24.6-9.4 33.9 0l96.4 96.4 96.4-96.4c9.4-9.4 24.6-9.4 33.9 0l22.6 22.6c9.4 9.4 9.4 24.6 0 33.9l-136 136c-9.2 9.4-24.4 9.4-33.8 0z\"]\n};\nvar faAngleLeft = {\n prefix: 'fas',\n iconName: 'angle-left',\n icon: [256, 512, [], \"f104\", \"M31.7 239l136-136c9.4-9.4 24.6-9.4 33.9 0l22.6 22.6c9.4 9.4 9.4 24.6 0 33.9L127.9 256l96.4 96.4c9.4 9.4 9.4 24.6 0 33.9L201.7 409c-9.4 9.4-24.6 9.4-33.9 0l-136-136c-9.5-9.4-9.5-24.6-.1-34z\"]\n};\nvar faAngleRight = {\n prefix: 'fas',\n iconName: 'angle-right',\n icon: [256, 512, [], \"f105\", \"M224.3 273l-136 136c-9.4 9.4-24.6 9.4-33.9 0l-22.6-22.6c-9.4-9.4-9.4-24.6 0-33.9l96.4-96.4-96.4-96.4c-9.4-9.4-9.4-24.6 0-33.9L54.3 103c9.4-9.4 24.6-9.4 33.9 0l136 136c9.5 9.4 9.5 24.6.1 34z\"]\n};\nvar faAngleUp = {\n prefix: 'fas',\n iconName: 'angle-up',\n icon: [320, 512, [], \"f106\", \"M177 159.7l136 136c9.4 9.4 9.4 24.6 0 33.9l-22.6 22.6c-9.4 9.4-24.6 9.4-33.9 0L160 255.9l-96.4 96.4c-9.4 9.4-24.6 9.4-33.9 0L7 329.7c-9.4-9.4-9.4-24.6 0-33.9l136-136c9.4-9.5 24.6-9.5 34-.1z\"]\n};\nvar faAngry = {\n prefix: 'fas',\n iconName: 'angry',\n icon: [496, 512, [], \"f556\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM136 240c0-9.3 4.1-17.5 10.5-23.4l-31-9.3c-8.5-2.5-13.3-11.5-10.7-19.9 2.5-8.5 11.4-13.2 19.9-10.7l80 24c8.5 2.5 13.3 11.5 10.7 19.9-2.1 6.9-8.4 11.4-15.3 11.4-.5 0-1.1-.2-1.7-.2.7 2.7 1.7 5.3 1.7 8.2 0 17.7-14.3 32-32 32S136 257.7 136 240zm168 154.2c-27.8-33.4-84.2-33.4-112.1 0-13.5 16.3-38.2-4.2-24.6-20.5 20-24 49.4-37.8 80.6-37.8s60.6 13.8 80.6 37.8c13.8 16.5-11.1 36.6-24.5 20.5zm76.6-186.9l-31 9.3c6.3 5.8 10.5 14.1 10.5 23.4 0 17.7-14.3 32-32 32s-32-14.3-32-32c0-2.9.9-5.6 1.7-8.2-.6.1-1.1.2-1.7.2-6.9 0-13.2-4.5-15.3-11.4-2.5-8.5 2.3-17.4 10.7-19.9l80-24c8.4-2.5 17.4 2.3 19.9 10.7 2.5 8.5-2.3 17.4-10.8 19.9z\"]\n};\nvar faAnkh = {\n prefix: 'fas',\n iconName: 'ankh',\n icon: [320, 512, [], \"f644\", \"M296 256h-44.62C272.46 222.01 288 181.65 288 144 288 55.63 230.69 0 160 0S32 55.63 32 144c0 37.65 15.54 78.01 36.62 112H24c-13.25 0-24 10.74-24 24v32c0 13.25 10.75 24 24 24h96v152c0 13.25 10.75 24 24 24h32c13.25 0 24-10.75 24-24V336h96c13.25 0 24-10.75 24-24v-32c0-13.26-10.75-24-24-24zM160 80c29.61 0 48 24.52 48 64 0 34.66-27.14 78.14-48 100.87-20.86-22.72-48-66.21-48-100.87 0-39.48 18.39-64 48-64z\"]\n};\nvar faAppleAlt = {\n prefix: 'fas',\n iconName: 'apple-alt',\n icon: [448, 512, [], \"f5d1\", \"M350.85 129c25.97 4.67 47.27 18.67 63.92 42 14.65 20.67 24.64 46.67 29.96 78 4.67 28.67 4.32 57.33-1 86-7.99 47.33-23.97 87-47.94 119-28.64 38.67-64.59 58-107.87 58-10.66 0-22.3-3.33-34.96-10-8.66-5.33-18.31-8-28.97-8s-20.3 2.67-28.97 8c-12.66 6.67-24.3 10-34.96 10-43.28 0-79.23-19.33-107.87-58-23.97-32-39.95-71.67-47.94-119-5.32-28.67-5.67-57.33-1-86 5.32-31.33 15.31-57.33 29.96-78 16.65-23.33 37.95-37.33 63.92-42 15.98-2.67 37.95-.33 65.92 7 23.97 6.67 44.28 14.67 60.93 24 16.65-9.33 36.96-17.33 60.93-24 27.98-7.33 49.96-9.67 65.94-7zm-54.94-41c-9.32 8.67-21.65 15-36.96 19-10.66 3.33-22.3 5-34.96 5l-14.98-1c-1.33-9.33-1.33-20 0-32 2.67-24 10.32-42.33 22.97-55 9.32-8.67 21.65-15 36.96-19 10.66-3.33 22.3-5 34.96-5l14.98 1 1 15c0 12.67-1.67 24.33-4.99 35-3.99 15.33-10.31 27.67-18.98 37z\"]\n};\nvar faArchive = {\n prefix: 'fas',\n iconName: 'archive',\n icon: [512, 512, [], \"f187\", \"M32 448c0 17.7 14.3 32 32 32h384c17.7 0 32-14.3 32-32V160H32v288zm160-212c0-6.6 5.4-12 12-12h104c6.6 0 12 5.4 12 12v8c0 6.6-5.4 12-12 12H204c-6.6 0-12-5.4-12-12v-8zM480 32H32C14.3 32 0 46.3 0 64v48c0 8.8 7.2 16 16 16h480c8.8 0 16-7.2 16-16V64c0-17.7-14.3-32-32-32z\"]\n};\nvar faArchway = {\n prefix: 'fas',\n iconName: 'archway',\n icon: [576, 512, [], \"f557\", \"M560 448h-16V96H32v352H16.02c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16H176c8.84 0 16-7.16 16-16V320c0-53.02 42.98-96 96-96s96 42.98 96 96l.02 160v16c0 8.84 7.16 16 16 16H560c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zm0-448H16C7.16 0 0 7.16 0 16v32c0 8.84 7.16 16 16 16h544c8.84 0 16-7.16 16-16V16c0-8.84-7.16-16-16-16z\"]\n};\nvar faArrowAltCircleDown = {\n prefix: 'fas',\n iconName: 'arrow-alt-circle-down',\n icon: [512, 512, [], \"f358\", \"M504 256c0 137-111 248-248 248S8 393 8 256 119 8 256 8s248 111 248 248zM212 140v116h-70.9c-10.7 0-16.1 13-8.5 20.5l114.9 114.3c4.7 4.7 12.2 4.7 16.9 0l114.9-114.3c7.6-7.6 2.2-20.5-8.5-20.5H300V140c0-6.6-5.4-12-12-12h-64c-6.6 0-12 5.4-12 12z\"]\n};\nvar faArrowAltCircleLeft = {\n prefix: 'fas',\n iconName: 'arrow-alt-circle-left',\n icon: [512, 512, [], \"f359\", \"M256 504C119 504 8 393 8 256S119 8 256 8s248 111 248 248-111 248-248 248zm116-292H256v-70.9c0-10.7-13-16.1-20.5-8.5L121.2 247.5c-4.7 4.7-4.7 12.2 0 16.9l114.3 114.9c7.6 7.6 20.5 2.2 20.5-8.5V300h116c6.6 0 12-5.4 12-12v-64c0-6.6-5.4-12-12-12z\"]\n};\nvar faArrowAltCircleRight = {\n prefix: 'fas',\n iconName: 'arrow-alt-circle-right',\n icon: [512, 512, [], \"f35a\", \"M256 8c137 0 248 111 248 248S393 504 256 504 8 393 8 256 119 8 256 8zM140 300h116v70.9c0 10.7 13 16.1 20.5 8.5l114.3-114.9c4.7-4.7 4.7-12.2 0-16.9l-114.3-115c-7.6-7.6-20.5-2.2-20.5 8.5V212H140c-6.6 0-12 5.4-12 12v64c0 6.6 5.4 12 12 12z\"]\n};\nvar faArrowAltCircleUp = {\n prefix: 'fas',\n iconName: 'arrow-alt-circle-up',\n icon: [512, 512, [], \"f35b\", \"M8 256C8 119 119 8 256 8s248 111 248 248-111 248-248 248S8 393 8 256zm292 116V256h70.9c10.7 0 16.1-13 8.5-20.5L264.5 121.2c-4.7-4.7-12.2-4.7-16.9 0l-115 114.3c-7.6 7.6-2.2 20.5 8.5 20.5H212v116c0 6.6 5.4 12 12 12h64c6.6 0 12-5.4 12-12z\"]\n};\nvar faArrowCircleDown = {\n prefix: 'fas',\n iconName: 'arrow-circle-down',\n icon: [512, 512, [], \"f0ab\", \"M504 256c0 137-111 248-248 248S8 393 8 256 119 8 256 8s248 111 248 248zm-143.6-28.9L288 302.6V120c0-13.3-10.7-24-24-24h-16c-13.3 0-24 10.7-24 24v182.6l-72.4-75.5c-9.3-9.7-24.8-9.9-34.3-.4l-10.9 11c-9.4 9.4-9.4 24.6 0 33.9L239 404.3c9.4 9.4 24.6 9.4 33.9 0l132.7-132.7c9.4-9.4 9.4-24.6 0-33.9l-10.9-11c-9.5-9.5-25-9.3-34.3.4z\"]\n};\nvar faArrowCircleLeft = {\n prefix: 'fas',\n iconName: 'arrow-circle-left',\n icon: [512, 512, [], \"f0a8\", \"M256 504C119 504 8 393 8 256S119 8 256 8s248 111 248 248-111 248-248 248zm28.9-143.6L209.4 288H392c13.3 0 24-10.7 24-24v-16c0-13.3-10.7-24-24-24H209.4l75.5-72.4c9.7-9.3 9.9-24.8.4-34.3l-11-10.9c-9.4-9.4-24.6-9.4-33.9 0L107.7 239c-9.4 9.4-9.4 24.6 0 33.9l132.7 132.7c9.4 9.4 24.6 9.4 33.9 0l11-10.9c9.5-9.5 9.3-25-.4-34.3z\"]\n};\nvar faArrowCircleRight = {\n prefix: 'fas',\n iconName: 'arrow-circle-right',\n icon: [512, 512, [], \"f0a9\", \"M256 8c137 0 248 111 248 248S393 504 256 504 8 393 8 256 119 8 256 8zm-28.9 143.6l75.5 72.4H120c-13.3 0-24 10.7-24 24v16c0 13.3 10.7 24 24 24h182.6l-75.5 72.4c-9.7 9.3-9.9 24.8-.4 34.3l11 10.9c9.4 9.4 24.6 9.4 33.9 0L404.3 273c9.4-9.4 9.4-24.6 0-33.9L271.6 106.3c-9.4-9.4-24.6-9.4-33.9 0l-11 10.9c-9.5 9.6-9.3 25.1.4 34.4z\"]\n};\nvar faArrowCircleUp = {\n prefix: 'fas',\n iconName: 'arrow-circle-up',\n icon: [512, 512, [], \"f0aa\", \"M8 256C8 119 119 8 256 8s248 111 248 248-111 248-248 248S8 393 8 256zm143.6 28.9l72.4-75.5V392c0 13.3 10.7 24 24 24h16c13.3 0 24-10.7 24-24V209.4l72.4 75.5c9.3 9.7 24.8 9.9 34.3.4l10.9-11c9.4-9.4 9.4-24.6 0-33.9L273 107.7c-9.4-9.4-24.6-9.4-33.9 0L106.3 240.4c-9.4 9.4-9.4 24.6 0 33.9l10.9 11c9.6 9.5 25.1 9.3 34.4-.4z\"]\n};\nvar faArrowDown = {\n prefix: 'fas',\n iconName: 'arrow-down',\n icon: [448, 512, [], \"f063\", \"M413.1 222.5l22.2 22.2c9.4 9.4 9.4 24.6 0 33.9L241 473c-9.4 9.4-24.6 9.4-33.9 0L12.7 278.6c-9.4-9.4-9.4-24.6 0-33.9l22.2-22.2c9.5-9.5 25-9.3 34.3.4L184 343.4V56c0-13.3 10.7-24 24-24h32c13.3 0 24 10.7 24 24v287.4l114.8-120.5c9.3-9.8 24.8-10 34.3-.4z\"]\n};\nvar faArrowLeft = {\n prefix: 'fas',\n iconName: 'arrow-left',\n icon: [448, 512, [], \"f060\", \"M257.5 445.1l-22.2 22.2c-9.4 9.4-24.6 9.4-33.9 0L7 273c-9.4-9.4-9.4-24.6 0-33.9L201.4 44.7c9.4-9.4 24.6-9.4 33.9 0l22.2 22.2c9.5 9.5 9.3 25-.4 34.3L136.6 216H424c13.3 0 24 10.7 24 24v32c0 13.3-10.7 24-24 24H136.6l120.5 114.8c9.8 9.3 10 24.8.4 34.3z\"]\n};\nvar faArrowRight = {\n prefix: 'fas',\n iconName: 'arrow-right',\n icon: [448, 512, [], \"f061\", \"M190.5 66.9l22.2-22.2c9.4-9.4 24.6-9.4 33.9 0L441 239c9.4 9.4 9.4 24.6 0 33.9L246.6 467.3c-9.4 9.4-24.6 9.4-33.9 0l-22.2-22.2c-9.5-9.5-9.3-25 .4-34.3L311.4 296H24c-13.3 0-24-10.7-24-24v-32c0-13.3 10.7-24 24-24h287.4L190.9 101.2c-9.8-9.3-10-24.8-.4-34.3z\"]\n};\nvar faArrowUp = {\n prefix: 'fas',\n iconName: 'arrow-up',\n icon: [448, 512, [], \"f062\", \"M34.9 289.5l-22.2-22.2c-9.4-9.4-9.4-24.6 0-33.9L207 39c9.4-9.4 24.6-9.4 33.9 0l194.3 194.3c9.4 9.4 9.4 24.6 0 33.9L413 289.4c-9.5 9.5-25 9.3-34.3-.4L264 168.6V456c0 13.3-10.7 24-24 24h-32c-13.3 0-24-10.7-24-24V168.6L69.2 289.1c-9.3 9.8-24.8 10-34.3.4z\"]\n};\nvar faArrowsAlt = {\n prefix: 'fas',\n iconName: 'arrows-alt',\n icon: [512, 512, [], \"f0b2\", \"M352.201 425.775l-79.196 79.196c-9.373 9.373-24.568 9.373-33.941 0l-79.196-79.196c-15.119-15.119-4.411-40.971 16.971-40.97h51.162L228 284H127.196v51.162c0 21.382-25.851 32.09-40.971 16.971L7.029 272.937c-9.373-9.373-9.373-24.569 0-33.941L86.225 159.8c15.119-15.119 40.971-4.411 40.971 16.971V228H228V127.196h-51.23c-21.382 0-32.09-25.851-16.971-40.971l79.196-79.196c9.373-9.373 24.568-9.373 33.941 0l79.196 79.196c15.119 15.119 4.411 40.971-16.971 40.971h-51.162V228h100.804v-51.162c0-21.382 25.851-32.09 40.97-16.971l79.196 79.196c9.373 9.373 9.373 24.569 0 33.941L425.773 352.2c-15.119 15.119-40.971 4.411-40.97-16.971V284H284v100.804h51.23c21.382 0 32.09 25.851 16.971 40.971z\"]\n};\nvar faArrowsAltH = {\n prefix: 'fas',\n iconName: 'arrows-alt-h',\n icon: [512, 512, [], \"f337\", \"M377.941 169.941V216H134.059v-46.059c0-21.382-25.851-32.09-40.971-16.971L7.029 239.029c-9.373 9.373-9.373 24.568 0 33.941l86.059 86.059c15.119 15.119 40.971 4.411 40.971-16.971V296h243.882v46.059c0 21.382 25.851 32.09 40.971 16.971l86.059-86.059c9.373-9.373 9.373-24.568 0-33.941l-86.059-86.059c-15.119-15.12-40.971-4.412-40.971 16.97z\"]\n};\nvar faArrowsAltV = {\n prefix: 'fas',\n iconName: 'arrows-alt-v',\n icon: [256, 512, [], \"f338\", \"M214.059 377.941H168V134.059h46.059c21.382 0 32.09-25.851 16.971-40.971L144.971 7.029c-9.373-9.373-24.568-9.373-33.941 0L24.971 93.088c-15.119 15.119-4.411 40.971 16.971 40.971H88v243.882H41.941c-21.382 0-32.09 25.851-16.971 40.971l86.059 86.059c9.373 9.373 24.568 9.373 33.941 0l86.059-86.059c15.12-15.119 4.412-40.971-16.97-40.971z\"]\n};\nvar faAssistiveListeningSystems = {\n prefix: 'fas',\n iconName: 'assistive-listening-systems',\n icon: [512, 512, [], \"f2a2\", \"M216 260c0 15.464-12.536 28-28 28s-28-12.536-28-28c0-44.112 35.888-80 80-80s80 35.888 80 80c0 15.464-12.536 28-28 28s-28-12.536-28-28c0-13.234-10.767-24-24-24s-24 10.766-24 24zm24-176c-97.047 0-176 78.953-176 176 0 15.464 12.536 28 28 28s28-12.536 28-28c0-66.168 53.832-120 120-120s120 53.832 120 120c0 75.164-71.009 70.311-71.997 143.622L288 404c0 28.673-23.327 52-52 52-15.464 0-28 12.536-28 28s12.536 28 28 28c59.475 0 107.876-48.328 108-107.774.595-34.428 72-48.24 72-144.226 0-97.047-78.953-176-176-176zm-80 236c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zM32 448c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm480-187.993c0-1.518-.012-3.025-.045-4.531C510.076 140.525 436.157 38.47 327.994 1.511c-14.633-4.998-30.549 2.809-35.55 17.442-5 14.633 2.81 30.549 17.442 35.55 85.906 29.354 144.61 110.513 146.077 201.953l.003.188c.026 1.118.033 2.236.033 3.363 0 15.464 12.536 28 28 28s28.001-12.536 28.001-28zM152.971 439.029l-80-80L39.03 392.97l80 80 33.941-33.941z\"]\n};\nvar faAsterisk = {\n prefix: 'fas',\n iconName: 'asterisk',\n icon: [512, 512, [], \"f069\", \"M478.21 334.093L336 256l142.21-78.093c11.795-6.477 15.961-21.384 9.232-33.037l-19.48-33.741c-6.728-11.653-21.72-15.499-33.227-8.523L296 186.718l3.475-162.204C299.763 11.061 288.937 0 275.48 0h-38.96c-13.456 0-24.283 11.061-23.994 24.514L216 186.718 77.265 102.607c-11.506-6.976-26.499-3.13-33.227 8.523l-19.48 33.741c-6.728 11.653-2.562 26.56 9.233 33.037L176 256 33.79 334.093c-11.795 6.477-15.961 21.384-9.232 33.037l19.48 33.741c6.728 11.653 21.721 15.499 33.227 8.523L216 325.282l-3.475 162.204C212.237 500.939 223.064 512 236.52 512h38.961c13.456 0 24.283-11.061 23.995-24.514L296 325.282l138.735 84.111c11.506 6.976 26.499 3.13 33.227-8.523l19.48-33.741c6.728-11.653 2.563-26.559-9.232-33.036z\"]\n};\nvar faAt = {\n prefix: 'fas',\n iconName: 'at',\n icon: [512, 512, [], \"f1fa\", \"M256 8C118.941 8 8 118.919 8 256c0 137.059 110.919 248 248 248 48.154 0 95.342-14.14 135.408-40.223 12.005-7.815 14.625-24.288 5.552-35.372l-10.177-12.433c-7.671-9.371-21.179-11.667-31.373-5.129C325.92 429.757 291.314 440 256 440c-101.458 0-184-82.542-184-184S154.542 72 256 72c100.139 0 184 57.619 184 160 0 38.786-21.093 79.742-58.17 83.693-17.349-.454-16.91-12.857-13.476-30.024l23.433-121.11C394.653 149.75 383.308 136 368.225 136h-44.981a13.518 13.518 0 0 0-13.432 11.993l-.01.092c-14.697-17.901-40.448-21.775-59.971-21.775-74.58 0-137.831 62.234-137.831 151.46 0 65.303 36.785 105.87 96 105.87 26.984 0 57.369-15.637 74.991-38.333 9.522 34.104 40.613 34.103 70.71 34.103C462.609 379.41 504 307.798 504 232 504 95.653 394.023 8 256 8zm-21.68 304.43c-22.249 0-36.07-15.623-36.07-40.771 0-44.993 30.779-72.729 58.63-72.729 22.292 0 35.601 15.241 35.601 40.77 0 45.061-33.875 72.73-58.161 72.73z\"]\n};\nvar faAtlas = {\n prefix: 'fas',\n iconName: 'atlas',\n icon: [448, 512, [], \"f558\", \"M318.38 208h-39.09c-1.49 27.03-6.54 51.35-14.21 70.41 27.71-13.24 48.02-39.19 53.3-70.41zm0-32c-5.29-31.22-25.59-57.17-53.3-70.41 7.68 19.06 12.72 43.38 14.21 70.41h39.09zM224 97.31c-7.69 7.45-20.77 34.42-23.43 78.69h46.87c-2.67-44.26-15.75-71.24-23.44-78.69zm-41.08 8.28c-27.71 13.24-48.02 39.19-53.3 70.41h39.09c1.49-27.03 6.53-51.35 14.21-70.41zm0 172.82c-7.68-19.06-12.72-43.38-14.21-70.41h-39.09c5.28 31.22 25.59 57.17 53.3 70.41zM247.43 208h-46.87c2.66 44.26 15.74 71.24 23.43 78.69 7.7-7.45 20.78-34.43 23.44-78.69zM448 358.4V25.6c0-16-9.6-25.6-25.6-25.6H96C41.6 0 0 41.6 0 96v320c0 54.4 41.6 96 96 96h326.4c12.8 0 25.6-9.6 25.6-25.6v-16c0-6.4-3.2-12.8-9.6-19.2-3.2-16-3.2-60.8 0-73.6 6.4-3.2 9.6-9.6 9.6-19.2zM224 64c70.69 0 128 57.31 128 128s-57.31 128-128 128S96 262.69 96 192 153.31 64 224 64zm160 384H96c-19.2 0-32-12.8-32-32s16-32 32-32h288v64z\"]\n};\nvar faAtom = {\n prefix: 'fas',\n iconName: 'atom',\n icon: [448, 512, [], \"f5d2\", \"M223.99908,224a32,32,0,1,0,32.00782,32A32.06431,32.06431,0,0,0,223.99908,224Zm214.172-96c-10.877-19.5-40.50979-50.75-116.27544-41.875C300.39168,34.875,267.63386,0,223.99908,0s-76.39066,34.875-97.89653,86.125C50.3369,77.375,20.706,108.5,9.82907,128-6.54984,157.375-5.17484,201.125,34.958,256-5.17484,310.875-6.54984,354.625,9.82907,384c29.13087,52.375,101.64652,43.625,116.27348,41.875C147.60842,477.125,180.36429,512,223.99908,512s76.3926-34.875,97.89652-86.125c14.62891,1.75,87.14456,10.5,116.27544-41.875C454.55,354.625,453.175,310.875,413.04017,256,453.175,201.125,454.55,157.375,438.171,128ZM63.33886,352c-4-7.25-.125-24.75,15.00391-48.25,6.87695,6.5,14.12891,12.875,21.88087,19.125,1.625,13.75,4,27.125,6.75,40.125C82.34472,363.875,67.09081,358.625,63.33886,352Zm36.88478-162.875c-7.752,6.25-15.00392,12.625-21.88087,19.125-15.12891-23.5-19.00392-41-15.00391-48.25,3.377-6.125,16.37891-11.5,37.88478-11.5,1.75,0,3.875.375,5.75.375C104.09864,162.25,101.84864,175.625,100.22364,189.125ZM223.99908,64c9.50195,0,22.25586,13.5,33.88282,37.25-11.252,3.75-22.50391,8-33.88282,12.875-11.377-4.875-22.62892-9.125-33.88283-12.875C201.74516,77.5,214.49712,64,223.99908,64Zm0,384c-9.502,0-22.25392-13.5-33.88283-37.25,11.25391-3.75,22.50587-8,33.88283-12.875C235.378,402.75,246.62994,407,257.8819,410.75,246.25494,434.5,233.501,448,223.99908,448Zm0-112a80,80,0,1,1,80-80A80.00023,80.00023,0,0,1,223.99908,336ZM384.6593,352c-3.625,6.625-19.00392,11.875-43.63479,11,2.752-13,5.127-26.375,6.752-40.125,7.75195-6.25,15.00391-12.625,21.87891-19.125C384.7843,327.25,388.6593,344.75,384.6593,352ZM369.65538,208.25c-6.875-6.5-14.127-12.875-21.87891-19.125-1.625-13.5-3.875-26.875-6.752-40.25,1.875,0,4.002-.375,5.752-.375,21.50391,0,34.50782,5.375,37.88283,11.5C388.6593,167.25,384.7843,184.75,369.65538,208.25Z\"]\n};\nvar faAudioDescription = {\n prefix: 'fas',\n iconName: 'audio-description',\n icon: [512, 512, [], \"f29e\", \"M162.925 238.709l8.822 30.655h-25.606l9.041-30.652c1.277-4.421 2.651-9.994 3.872-15.245 1.22 5.251 2.594 10.823 3.871 15.242zm166.474-32.099h-14.523v98.781h14.523c29.776 0 46.175-17.678 46.175-49.776 0-32.239-17.49-49.005-46.175-49.005zM512 112v288c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V112c0-26.51 21.49-48 48-48h416c26.51 0 48 21.49 48 48zM245.459 336.139l-57.097-168A12.001 12.001 0 0 0 177 160h-35.894a12.001 12.001 0 0 0-11.362 8.139l-57.097 168C70.003 343.922 75.789 352 84.009 352h29.133a12 12 0 0 0 11.535-8.693l8.574-29.906h51.367l8.793 29.977A12 12 0 0 0 204.926 352h29.172c8.22 0 14.006-8.078 11.361-15.861zm184.701-80.525c0-58.977-37.919-95.614-98.96-95.614h-57.366c-6.627 0-12 5.373-12 12v168c0 6.627 5.373 12 12 12H331.2c61.041 0 98.96-36.933 98.96-96.386z\"]\n};\nvar faAward = {\n prefix: 'fas',\n iconName: 'award',\n icon: [384, 512, [], \"f559\", \"M97.12 362.63c-8.69-8.69-4.16-6.24-25.12-11.85-9.51-2.55-17.87-7.45-25.43-13.32L1.2 448.7c-4.39 10.77 3.81 22.47 15.43 22.03l52.69-2.01L105.56 507c8 8.44 22.04 5.81 26.43-4.96l52.05-127.62c-10.84 6.04-22.87 9.58-35.31 9.58-19.5 0-37.82-7.59-51.61-21.37zM382.8 448.7l-45.37-111.24c-7.56 5.88-15.92 10.77-25.43 13.32-21.07 5.64-16.45 3.18-25.12 11.85-13.79 13.78-32.12 21.37-51.62 21.37-12.44 0-24.47-3.55-35.31-9.58L252 502.04c4.39 10.77 18.44 13.4 26.43 4.96l36.25-38.28 52.69 2.01c11.62.44 19.82-11.27 15.43-22.03zM263 340c15.28-15.55 17.03-14.21 38.79-20.14 13.89-3.79 24.75-14.84 28.47-28.98 7.48-28.4 5.54-24.97 25.95-45.75 10.17-10.35 14.14-25.44 10.42-39.58-7.47-28.38-7.48-24.42 0-52.83 3.72-14.14-.25-29.23-10.42-39.58-20.41-20.78-18.47-17.36-25.95-45.75-3.72-14.14-14.58-25.19-28.47-28.98-27.88-7.61-24.52-5.62-44.95-26.41-10.17-10.35-25-14.4-38.89-10.61-27.87 7.6-23.98 7.61-51.9 0-13.89-3.79-28.72.25-38.89 10.61-20.41 20.78-17.05 18.8-44.94 26.41-13.89 3.79-24.75 14.84-28.47 28.98-7.47 28.39-5.54 24.97-25.95 45.75-10.17 10.35-14.15 25.44-10.42 39.58 7.47 28.36 7.48 24.4 0 52.82-3.72 14.14.25 29.23 10.42 39.59 20.41 20.78 18.47 17.35 25.95 45.75 3.72 14.14 14.58 25.19 28.47 28.98C104.6 325.96 106.27 325 121 340c13.23 13.47 33.84 15.88 49.74 5.82a39.676 39.676 0 0 1 42.53 0c15.89 10.06 36.5 7.65 49.73-5.82zM97.66 175.96c0-53.03 42.24-96.02 94.34-96.02s94.34 42.99 94.34 96.02-42.24 96.02-94.34 96.02-94.34-42.99-94.34-96.02z\"]\n};\nvar faBaby = {\n prefix: 'fas',\n iconName: 'baby',\n icon: [384, 512, [], \"f77c\", \"M192 160c44.2 0 80-35.8 80-80S236.2 0 192 0s-80 35.8-80 80 35.8 80 80 80zm-53.4 248.8l25.6-32-61.5-51.2L56.8 383c-11.4 14.2-11.7 34.4-.8 49l48 64c7.9 10.5 19.9 16 32 16 8.3 0 16.8-2.6 24-8 17.7-13.2 21.2-38.3 8-56l-29.4-39.2zm142.7-83.2l-61.5 51.2 25.6 32L216 448c-13.2 17.7-9.7 42.8 8 56 7.2 5.4 15.6 8 24 8 12.2 0 24.2-5.5 32-16l48-64c10.9-14.6 10.6-34.8-.8-49l-45.9-57.4zM376.7 145c-12.7-18.1-37.6-22.4-55.7-9.8l-40.6 28.5c-52.7 37-124.2 37-176.8 0L63 135.3C44.9 122.6 20 127 7.3 145-5.4 163.1-1 188 17 200.7l40.6 28.5c17 11.9 35.4 20.9 54.4 27.9V288h160v-30.8c19-7 37.4-16 54.4-27.9l40.6-28.5c18.1-12.8 22.4-37.7 9.7-55.8z\"]\n};\nvar faBabyCarriage = {\n prefix: 'fas',\n iconName: 'baby-carriage',\n icon: [512, 512, [], \"f77d\", \"M144.8 17c-11.3-17.8-37.2-22.8-54-9.4C35.3 51.9 0 118 0 192h256L144.8 17zM496 96h-48c-35.3 0-64 28.7-64 64v64H0c0 50.6 23 96.4 60.3 130.7C25.7 363.6 0 394.7 0 432c0 44.2 35.8 80 80 80s80-35.8 80-80c0-8.9-1.8-17.2-4.4-25.2 21.6 5.9 44.6 9.2 68.4 9.2s46.9-3.3 68.4-9.2c-2.7 8-4.4 16.3-4.4 25.2 0 44.2 35.8 80 80 80s80-35.8 80-80c0-37.3-25.7-68.4-60.3-77.3C425 320.4 448 274.6 448 224v-64h48c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zM80 464c-17.6 0-32-14.4-32-32s14.4-32 32-32 32 14.4 32 32-14.4 32-32 32zm320-32c0 17.6-14.4 32-32 32s-32-14.4-32-32 14.4-32 32-32 32 14.4 32 32z\"]\n};\nvar faBackspace = {\n prefix: 'fas',\n iconName: 'backspace',\n icon: [640, 512, [], \"f55a\", \"M576 64H205.26A63.97 63.97 0 0 0 160 82.75L9.37 233.37c-12.5 12.5-12.5 32.76 0 45.25L160 429.25c12 12 28.28 18.75 45.25 18.75H576c35.35 0 64-28.65 64-64V128c0-35.35-28.65-64-64-64zm-84.69 254.06c6.25 6.25 6.25 16.38 0 22.63l-22.62 22.62c-6.25 6.25-16.38 6.25-22.63 0L384 301.25l-62.06 62.06c-6.25 6.25-16.38 6.25-22.63 0l-22.62-22.62c-6.25-6.25-6.25-16.38 0-22.63L338.75 256l-62.06-62.06c-6.25-6.25-6.25-16.38 0-22.63l22.62-22.62c6.25-6.25 16.38-6.25 22.63 0L384 210.75l62.06-62.06c6.25-6.25 16.38-6.25 22.63 0l22.62 22.62c6.25 6.25 6.25 16.38 0 22.63L429.25 256l62.06 62.06z\"]\n};\nvar faBackward = {\n prefix: 'fas',\n iconName: 'backward',\n icon: [512, 512, [], \"f04a\", \"M11.5 280.6l192 160c20.6 17.2 52.5 2.8 52.5-24.6V96c0-27.4-31.9-41.8-52.5-24.6l-192 160c-15.3 12.8-15.3 36.4 0 49.2zm256 0l192 160c20.6 17.2 52.5 2.8 52.5-24.6V96c0-27.4-31.9-41.8-52.5-24.6l-192 160c-15.3 12.8-15.3 36.4 0 49.2z\"]\n};\nvar faBacon = {\n prefix: 'fas',\n iconName: 'bacon',\n icon: [576, 512, [], \"f7e5\", \"M218.92 336.39c34.89-34.89 44.2-59.7 54.05-86 10.61-28.29 21.59-57.54 61.37-97.34s69.05-50.77 97.35-61.38c23.88-9 46.64-17.68 76.79-45.37L470.81 8.91a31 31 0 0 0-40.18-2.83c-13.64 10.1-25.15 14.39-41 20.3C247 79.52 209.26 191.29 200.65 214.1c-29.75 78.83-89.55 94.68-98.72 98.09-24.86 9.26-54.73 20.38-91.07 50.36C-3 374-3.63 395 9.07 407.61l35.76 35.51C80 410.52 107 400.15 133 390.39c26.27-9.84 51.06-19.12 85.92-54zm348-232l-35.75-35.51c-35.19 32.63-62.18 43-88.25 52.79-26.26 9.85-51.06 19.16-85.95 54s-44.19 59.69-54 86C292.33 290 281.34 319.22 241.55 359s-69 50.73-97.3 61.32c-23.86 9-46.61 17.66-76.72 45.33l37.68 37.43a31 31 0 0 0 40.18 2.82c13.6-10.06 25.09-14.34 40.94-20.24 142.2-53 180-164.1 188.94-187.69C405 219.18 464.8 203.3 474 199.86c24.87-9.27 54.74-20.4 91.11-50.41 13.89-11.4 14.52-32.45 1.82-45.05z\"]\n};\nvar faBahai = {\n prefix: 'fas',\n iconName: 'bahai',\n icon: [512, 512, [], \"f666\", \"M496.25 202.52l-110-15.44 41.82-104.34c6.67-16.64-11.6-32.18-26.59-22.63L307.44 120 273.35 12.82C270.64 4.27 263.32 0 256 0c-7.32 0-14.64 4.27-17.35 12.82l-34.09 107.19-94.04-59.89c-14.99-9.55-33.25 5.99-26.59 22.63l41.82 104.34-110 15.43c-17.54 2.46-21.68 26.27-6.03 34.67l98.16 52.66-74.48 83.54c-10.92 12.25-1.72 30.93 13.29 30.93 1.31 0 2.67-.14 4.07-.45l108.57-23.65-4.11 112.55c-.43 11.65 8.87 19.22 18.41 19.22 5.15 0 10.39-2.21 14.2-7.18l68.18-88.9 68.18 88.9c3.81 4.97 9.04 7.18 14.2 7.18 9.54 0 18.84-7.57 18.41-19.22l-4.11-112.55 108.57 23.65c17.36 3.76 29.21-17.2 17.35-30.49l-74.48-83.54 98.16-52.66c15.64-8.39 11.5-32.2-6.04-34.66zM338.51 311.68l-51.89-11.3 1.97 53.79L256 311.68l-32.59 42.49 1.96-53.79-51.89 11.3 35.6-39.93-46.92-25.17 52.57-7.38-19.99-49.87 44.95 28.62L256 166.72l16.29 51.23 44.95-28.62-19.99 49.87 52.57 7.38-46.92 25.17 35.61 39.93z\"]\n};\nvar faBalanceScale = {\n prefix: 'fas',\n iconName: 'balance-scale',\n icon: [640, 512, [], \"f24e\", \"M256 336h-.02c0-16.18 1.34-8.73-85.05-181.51-17.65-35.29-68.19-35.36-85.87 0C-2.06 328.75.02 320.33.02 336H0c0 44.18 57.31 80 128 80s128-35.82 128-80zM128 176l72 144H56l72-144zm511.98 160c0-16.18 1.34-8.73-85.05-181.51-17.65-35.29-68.19-35.36-85.87 0-87.12 174.26-85.04 165.84-85.04 181.51H384c0 44.18 57.31 80 128 80s128-35.82 128-80h-.02zM440 320l72-144 72 144H440zm88 128H352V153.25c23.51-10.29 41.16-31.48 46.39-57.25H528c8.84 0 16-7.16 16-16V48c0-8.84-7.16-16-16-16H383.64C369.04 12.68 346.09 0 320 0s-49.04 12.68-63.64 32H112c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h129.61c5.23 25.76 22.87 46.96 46.39 57.25V448H112c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h416c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16z\"]\n};\nvar faBalanceScaleLeft = {\n prefix: 'fas',\n iconName: 'balance-scale-left',\n icon: [640, 512, [], \"f515\", \"M528 448H352V153.25c20.42-8.94 36.1-26.22 43.38-47.47l132-44.26c8.38-2.81 12.89-11.88 10.08-20.26l-10.17-30.34C524.48 2.54 515.41-1.97 507.03.84L389.11 40.37C375.3 16.36 349.69 0 320 0c-44.18 0-80 35.82-80 80 0 3.43.59 6.71 1.01 10.03l-128.39 43.05c-8.38 2.81-12.89 11.88-10.08 20.26l10.17 30.34c2.81 8.38 11.88 12.89 20.26 10.08l142.05-47.63c4.07 2.77 8.43 5.12 12.99 7.12V496c0 8.84 7.16 16 16 16h224c8.84 0 16-7.16 16-16v-32c-.01-8.84-7.17-16-16.01-16zm111.98-144c0-16.18 1.34-8.73-85.05-181.51-17.65-35.29-68.19-35.36-85.87 0-87.12 174.26-85.04 165.84-85.04 181.51H384c0 44.18 57.31 80 128 80s128-35.82 128-80h-.02zM440 288l72-144 72 144H440zm-269.07-37.51c-17.65-35.29-68.19-35.36-85.87 0C-2.06 424.75.02 416.33.02 432H0c0 44.18 57.31 80 128 80s128-35.82 128-80h-.02c0-16.18 1.34-8.73-85.05-181.51zM56 416l72-144 72 144H56z\"]\n};\nvar faBalanceScaleRight = {\n prefix: 'fas',\n iconName: 'balance-scale-right',\n icon: [640, 512, [], \"f516\", \"M96 464v32c0 8.84 7.16 16 16 16h224c8.84 0 16-7.16 16-16V153.25c4.56-2 8.92-4.35 12.99-7.12l142.05 47.63c8.38 2.81 17.45-1.71 20.26-10.08l10.17-30.34c2.81-8.38-1.71-17.45-10.08-20.26l-128.4-43.05c.42-3.32 1.01-6.6 1.01-10.03 0-44.18-35.82-80-80-80-29.69 0-55.3 16.36-69.11 40.37L132.96.83c-8.38-2.81-17.45 1.71-20.26 10.08l-10.17 30.34c-2.81 8.38 1.71 17.45 10.08 20.26l132 44.26c7.28 21.25 22.96 38.54 43.38 47.47V448H112c-8.84 0-16 7.16-16 16zM0 304c0 44.18 57.31 80 128 80s128-35.82 128-80h-.02c0-15.67 2.08-7.25-85.05-181.51-17.68-35.36-68.22-35.29-85.87 0C-1.32 295.27.02 287.82.02 304H0zm56-16l72-144 72 144H56zm328.02 144H384c0 44.18 57.31 80 128 80s128-35.82 128-80h-.02c0-15.67 2.08-7.25-85.05-181.51-17.68-35.36-68.22-35.29-85.87 0-86.38 172.78-85.04 165.33-85.04 181.51zM440 416l72-144 72 144H440z\"]\n};\nvar faBan = {\n prefix: 'fas',\n iconName: 'ban',\n icon: [512, 512, [], \"f05e\", \"M256 8C119.034 8 8 119.033 8 256s111.034 248 248 248 248-111.034 248-248S392.967 8 256 8zm130.108 117.892c65.448 65.448 70 165.481 20.677 235.637L150.47 105.216c70.204-49.356 170.226-44.735 235.638 20.676zM125.892 386.108c-65.448-65.448-70-165.481-20.677-235.637L361.53 406.784c-70.203 49.356-170.226 44.736-235.638-20.676z\"]\n};\nvar faBandAid = {\n prefix: 'fas',\n iconName: 'band-aid',\n icon: [640, 512, [], \"f462\", \"M0 160v192c0 35.3 28.7 64 64 64h96V96H64c-35.3 0-64 28.7-64 64zm576-64h-96v320h96c35.3 0 64-28.7 64-64V160c0-35.3-28.7-64-64-64zM192 416h256V96H192v320zm176-232c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm0 96c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm-96-96c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm0 96c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24z\"]\n};\nvar faBarcode = {\n prefix: 'fas',\n iconName: 'barcode',\n icon: [512, 512, [], \"f02a\", \"M0 448V64h18v384H0zm26.857-.273V64H36v383.727h-9.143zm27.143 0V64h8.857v383.727H54zm44.857 0V64h8.857v383.727h-8.857zm36 0V64h17.714v383.727h-17.714zm44.857 0V64h8.857v383.727h-8.857zm18 0V64h8.857v383.727h-8.857zm18 0V64h8.857v383.727h-8.857zm35.715 0V64h18v383.727h-18zm44.857 0V64h18v383.727h-18zm35.999 0V64h18.001v383.727h-18.001zm36.001 0V64h18.001v383.727h-18.001zm26.857 0V64h18v383.727h-18zm45.143 0V64h26.857v383.727h-26.857zm35.714 0V64h9.143v383.727H476zm18 .273V64h18v384h-18z\"]\n};\nvar faBars = {\n prefix: 'fas',\n iconName: 'bars',\n icon: [448, 512, [], \"f0c9\", \"M16 132h416c8.837 0 16-7.163 16-16V76c0-8.837-7.163-16-16-16H16C7.163 60 0 67.163 0 76v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16zm0 160h416c8.837 0 16-7.163 16-16v-40c0-8.837-7.163-16-16-16H16c-8.837 0-16 7.163-16 16v40c0 8.837 7.163 16 16 16z\"]\n};\nvar faBaseballBall = {\n prefix: 'fas',\n iconName: 'baseball-ball',\n icon: [496, 512, [], \"f433\", \"M368.5 363.9l28.8-13.9c11.1 22.9 26 43.2 44.1 60.9 34-42.5 54.5-96.3 54.5-154.9 0-58.5-20.4-112.2-54.2-154.6-17.8 17.3-32.6 37.1-43.6 59.5l-28.7-14.1c12.8-26 30-49 50.8-69C375.6 34.7 315 8 248 8 181.1 8 120.5 34.6 75.9 77.7c20.7 19.9 37.9 42.9 50.7 68.8l-28.7 14.1c-11-22.3-25.7-42.1-43.5-59.4C20.4 143.7 0 197.4 0 256c0 58.6 20.4 112.3 54.4 154.7 18.2-17.7 33.2-38 44.3-61l28.8 13.9c-12.9 26.7-30.3 50.3-51.5 70.7 44.5 43.1 105.1 69.7 172 69.7 66.8 0 127.3-26.5 171.9-69.5-21.1-20.4-38.5-43.9-51.4-70.6zm-228.3-32l-30.5-9.8c14.9-46.4 12.7-93.8-.6-134l30.4-10c15 45.6 18 99.9.7 153.8zm216.3-153.4l30.4 10c-13.2 40.1-15.5 87.5-.6 134l-30.5 9.8c-17.3-54-14.3-108.3.7-153.8z\"]\n};\nvar faBasketballBall = {\n prefix: 'fas',\n iconName: 'basketball-ball',\n icon: [496, 512, [], \"f434\", \"M212.3 10.3c-43.8 6.3-86.2 24.1-122.2 53.8l77.4 77.4c27.8-35.8 43.3-81.2 44.8-131.2zM248 222L405.9 64.1c-42.4-35-93.6-53.5-145.5-56.1-1.2 63.9-21.5 122.3-58.7 167.7L248 222zM56.1 98.1c-29.7 36-47.5 78.4-53.8 122.2 50-1.5 95.5-17 131.2-44.8L56.1 98.1zm272.2 204.2c45.3-37.1 103.7-57.4 167.7-58.7-2.6-51.9-21.1-103.1-56.1-145.5L282 256l46.3 46.3zM248 290L90.1 447.9c42.4 34.9 93.6 53.5 145.5 56.1 1.3-64 21.6-122.4 58.7-167.7L248 290zm191.9 123.9c29.7-36 47.5-78.4 53.8-122.2-50.1 1.6-95.5 17.1-131.2 44.8l77.4 77.4zM167.7 209.7C122.3 246.9 63.9 267.3 0 268.4c2.6 51.9 21.1 103.1 56.1 145.5L214 256l-46.3-46.3zm116 292c43.8-6.3 86.2-24.1 122.2-53.8l-77.4-77.4c-27.7 35.7-43.2 81.2-44.8 131.2z\"]\n};\nvar faBath = {\n prefix: 'fas',\n iconName: 'bath',\n icon: [512, 512, [], \"f2cd\", \"M32,384a95.4,95.4,0,0,0,32,71.09V496a16,16,0,0,0,16,16h32a16,16,0,0,0,16-16V480H384v16a16,16,0,0,0,16,16h32a16,16,0,0,0,16-16V455.09A95.4,95.4,0,0,0,480,384V336H32ZM496,256H80V69.25a21.26,21.26,0,0,1,36.28-15l19.27,19.26c-13.13,29.88-7.61,59.11,8.62,79.73l-.17.17A16,16,0,0,0,144,176l11.31,11.31a16,16,0,0,0,22.63,0L283.31,81.94a16,16,0,0,0,0-22.63L272,48a16,16,0,0,0-22.62,0l-.17.17c-20.62-16.23-49.83-21.75-79.73-8.62L150.22,20.28A69.25,69.25,0,0,0,32,69.25V256H16A16,16,0,0,0,0,272v16a16,16,0,0,0,16,16H496a16,16,0,0,0,16-16V272A16,16,0,0,0,496,256Z\"]\n};\nvar faBatteryEmpty = {\n prefix: 'fas',\n iconName: 'battery-empty',\n icon: [640, 512, [], \"f244\", \"M544 160v64h32v64h-32v64H64V160h480m16-64H48c-26.51 0-48 21.49-48 48v224c0 26.51 21.49 48 48 48h512c26.51 0 48-21.49 48-48v-16h8c13.255 0 24-10.745 24-24V184c0-13.255-10.745-24-24-24h-8v-16c0-26.51-21.49-48-48-48z\"]\n};\nvar faBatteryFull = {\n prefix: 'fas',\n iconName: 'battery-full',\n icon: [640, 512, [], \"f240\", \"M544 160v64h32v64h-32v64H64V160h480m16-64H48c-26.51 0-48 21.49-48 48v224c0 26.51 21.49 48 48 48h512c26.51 0 48-21.49 48-48v-16h8c13.255 0 24-10.745 24-24V184c0-13.255-10.745-24-24-24h-8v-16c0-26.51-21.49-48-48-48zm-48 96H96v128h416V192z\"]\n};\nvar faBatteryHalf = {\n prefix: 'fas',\n iconName: 'battery-half',\n icon: [640, 512, [], \"f242\", \"M544 160v64h32v64h-32v64H64V160h480m16-64H48c-26.51 0-48 21.49-48 48v224c0 26.51 21.49 48 48 48h512c26.51 0 48-21.49 48-48v-16h8c13.255 0 24-10.745 24-24V184c0-13.255-10.745-24-24-24h-8v-16c0-26.51-21.49-48-48-48zm-240 96H96v128h224V192z\"]\n};\nvar faBatteryQuarter = {\n prefix: 'fas',\n iconName: 'battery-quarter',\n icon: [640, 512, [], \"f243\", \"M544 160v64h32v64h-32v64H64V160h480m16-64H48c-26.51 0-48 21.49-48 48v224c0 26.51 21.49 48 48 48h512c26.51 0 48-21.49 48-48v-16h8c13.255 0 24-10.745 24-24V184c0-13.255-10.745-24-24-24h-8v-16c0-26.51-21.49-48-48-48zm-336 96H96v128h128V192z\"]\n};\nvar faBatteryThreeQuarters = {\n prefix: 'fas',\n iconName: 'battery-three-quarters',\n icon: [640, 512, [], \"f241\", \"M544 160v64h32v64h-32v64H64V160h480m16-64H48c-26.51 0-48 21.49-48 48v224c0 26.51 21.49 48 48 48h512c26.51 0 48-21.49 48-48v-16h8c13.255 0 24-10.745 24-24V184c0-13.255-10.745-24-24-24h-8v-16c0-26.51-21.49-48-48-48zm-144 96H96v128h320V192z\"]\n};\nvar faBed = {\n prefix: 'fas',\n iconName: 'bed',\n icon: [640, 512, [], \"f236\", \"M176 256c44.11 0 80-35.89 80-80s-35.89-80-80-80-80 35.89-80 80 35.89 80 80 80zm352-128H304c-8.84 0-16 7.16-16 16v144H64V80c0-8.84-7.16-16-16-16H16C7.16 64 0 71.16 0 80v352c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-48h512v48c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16V240c0-61.86-50.14-112-112-112z\"]\n};\nvar faBeer = {\n prefix: 'fas',\n iconName: 'beer',\n icon: [448, 512, [], \"f0fc\", \"M368 96h-48V56c0-13.255-10.745-24-24-24H24C10.745 32 0 42.745 0 56v400c0 13.255 10.745 24 24 24h272c13.255 0 24-10.745 24-24v-42.11l80.606-35.977C429.396 365.063 448 336.388 448 304.86V176c0-44.112-35.888-80-80-80zm16 208.86a16.018 16.018 0 0 1-9.479 14.611L320 343.805V160h48c8.822 0 16 7.178 16 16v128.86zM208 384c-8.836 0-16-7.164-16-16V144c0-8.836 7.164-16 16-16s16 7.164 16 16v224c0 8.836-7.164 16-16 16zm-96 0c-8.836 0-16-7.164-16-16V144c0-8.836 7.164-16 16-16s16 7.164 16 16v224c0 8.836-7.164 16-16 16z\"]\n};\nvar faBell = {\n prefix: 'fas',\n iconName: 'bell',\n icon: [448, 512, [], \"f0f3\", \"M224 512c35.32 0 63.97-28.65 63.97-64H160.03c0 35.35 28.65 64 63.97 64zm215.39-149.71c-19.32-20.76-55.47-51.99-55.47-154.29 0-77.7-54.48-139.9-127.94-155.16V32c0-17.67-14.32-32-31.98-32s-31.98 14.33-31.98 32v20.84C118.56 68.1 64.08 130.3 64.08 208c0 102.3-36.15 133.53-55.47 154.29-6 6.45-8.66 14.16-8.61 21.71.11 16.4 12.98 32 32.1 32h383.8c19.12 0 32-15.6 32.1-32 .05-7.55-2.61-15.27-8.61-21.71z\"]\n};\nvar faBellSlash = {\n prefix: 'fas',\n iconName: 'bell-slash',\n icon: [640, 512, [], \"f1f6\", \"M633.82 458.1l-90.62-70.05c.19-1.38.8-2.66.8-4.06.05-7.55-2.61-15.27-8.61-21.71-19.32-20.76-55.47-51.99-55.47-154.29 0-77.7-54.48-139.9-127.94-155.16V32c0-17.67-14.32-32-31.98-32s-31.98 14.33-31.98 32v20.84c-40.33 8.38-74.66 31.07-97.59 62.57L45.47 3.37C38.49-2.05 28.43-.8 23.01 6.18L3.37 31.45C-2.05 38.42-.8 48.47 6.18 53.9l588.35 454.73c6.98 5.43 17.03 4.17 22.46-2.81l19.64-25.27c5.42-6.97 4.17-17.02-2.81-22.45zM157.23 251.54c-8.61 67.96-36.41 93.33-52.62 110.75-6 6.45-8.66 14.16-8.61 21.71.11 16.4 12.98 32 32.1 32h241.92L157.23 251.54zM320 512c35.32 0 63.97-28.65 63.97-64H256.03c0 35.35 28.65 64 63.97 64z\"]\n};\nvar faBezierCurve = {\n prefix: 'fas',\n iconName: 'bezier-curve',\n icon: [640, 512, [], \"f55b\", \"M368 32h-96c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32V64c0-17.67-14.33-32-32-32zM208 88h-84.75C113.75 64.56 90.84 48 64 48 28.66 48 0 76.65 0 112s28.66 64 64 64c26.84 0 49.75-16.56 59.25-40h79.73c-55.37 32.52-95.86 87.32-109.54 152h49.4c11.3-41.61 36.77-77.21 71.04-101.56-3.7-8.08-5.88-16.99-5.88-26.44V88zm-48 232H64c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32v-96c0-17.67-14.33-32-32-32zM576 48c-26.84 0-49.75 16.56-59.25 40H432v72c0 9.45-2.19 18.36-5.88 26.44 34.27 24.35 59.74 59.95 71.04 101.56h49.4c-13.68-64.68-54.17-119.48-109.54-152h79.73c9.5 23.44 32.41 40 59.25 40 35.34 0 64-28.65 64-64s-28.66-64-64-64zm0 272h-96c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32v-96c0-17.67-14.33-32-32-32z\"]\n};\nvar faBible = {\n prefix: 'fas',\n iconName: 'bible',\n icon: [448, 512, [], \"f647\", \"M448 358.4V25.6c0-16-9.6-25.6-25.6-25.6H96C41.6 0 0 41.6 0 96v320c0 54.4 41.6 96 96 96h326.4c12.8 0 25.6-9.6 25.6-25.6v-16c0-6.4-3.2-12.8-9.6-19.2-3.2-16-3.2-60.8 0-73.6 6.4-3.2 9.6-9.6 9.6-19.2zM144 144c0-8.84 7.16-16 16-16h48V80c0-8.84 7.16-16 16-16h32c8.84 0 16 7.16 16 16v48h48c8.84 0 16 7.16 16 16v32c0 8.84-7.16 16-16 16h-48v112c0 8.84-7.16 16-16 16h-32c-8.84 0-16-7.16-16-16V192h-48c-8.84 0-16-7.16-16-16v-32zm236.8 304H96c-19.2 0-32-12.8-32-32s16-32 32-32h284.8v64z\"]\n};\nvar faBicycle = {\n prefix: 'fas',\n iconName: 'bicycle',\n icon: [640, 512, [], \"f206\", \"M512.509 192.001c-16.373-.064-32.03 2.955-46.436 8.495l-77.68-125.153A24 24 0 0 0 368.001 64h-64c-8.837 0-16 7.163-16 16v16c0 8.837 7.163 16 16 16h50.649l14.896 24H256.002v-16c0-8.837-7.163-16-16-16h-87.459c-13.441 0-24.777 10.999-24.536 24.437.232 13.044 10.876 23.563 23.995 23.563h48.726l-29.417 47.52c-13.433-4.83-27.904-7.483-42.992-7.52C58.094 191.83.412 249.012.002 319.236-.413 390.279 57.055 448 128.002 448c59.642 0 109.758-40.793 123.967-96h52.033a24 24 0 0 0 20.406-11.367L410.37 201.77l14.938 24.067c-25.455 23.448-41.385 57.081-41.307 94.437.145 68.833 57.899 127.051 126.729 127.719 70.606.685 128.181-55.803 129.255-125.996 1.086-70.941-56.526-129.72-127.476-129.996zM186.75 265.772c9.727 10.529 16.673 23.661 19.642 38.228h-43.306l23.664-38.228zM128.002 400c-44.112 0-80-35.888-80-80s35.888-80 80-80c5.869 0 11.586.653 17.099 1.859l-45.505 73.509C89.715 331.327 101.213 352 120.002 352h81.3c-12.37 28.225-40.562 48-73.3 48zm162.63-96h-35.624c-3.96-31.756-19.556-59.894-42.383-80.026L237.371 184h127.547l-74.286 120zm217.057 95.886c-41.036-2.165-74.049-35.692-75.627-76.755-.812-21.121 6.633-40.518 19.335-55.263l44.433 71.586c4.66 7.508 14.524 9.816 22.032 5.156l13.594-8.437c7.508-4.66 9.817-14.524 5.156-22.032l-44.468-71.643a79.901 79.901 0 0 1 19.858-2.497c44.112 0 80 35.888 80 80-.001 45.54-38.252 82.316-84.313 79.885z\"]\n};\nvar faBiking = {\n prefix: 'fas',\n iconName: 'biking',\n icon: [640, 512, [], \"f84a\", \"M400 96a48 48 0 1 0-48-48 48 48 0 0 0 48 48zm-4 121a31.9 31.9 0 0 0 20 7h64a32 32 0 0 0 0-64h-52.78L356 103a31.94 31.94 0 0 0-40.81.68l-112 96a32 32 0 0 0 3.08 50.92L288 305.12V416a32 32 0 0 0 64 0V288a32 32 0 0 0-14.25-26.62l-41.36-27.57 58.25-49.92zm116 39a128 128 0 1 0 128 128 128 128 0 0 0-128-128zm0 192a64 64 0 1 1 64-64 64 64 0 0 1-64 64zM128 256a128 128 0 1 0 128 128 128 128 0 0 0-128-128zm0 192a64 64 0 1 1 64-64 64 64 0 0 1-64 64z\"]\n};\nvar faBinoculars = {\n prefix: 'fas',\n iconName: 'binoculars',\n icon: [512, 512, [], \"f1e5\", \"M416 48c0-8.84-7.16-16-16-16h-64c-8.84 0-16 7.16-16 16v48h96V48zM63.91 159.99C61.4 253.84 3.46 274.22 0 404v44c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32V288h32V128H95.84c-17.63 0-31.45 14.37-31.93 31.99zm384.18 0c-.48-17.62-14.3-31.99-31.93-31.99H320v160h32v160c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32v-44c-3.46-129.78-61.4-150.16-63.91-244.01zM176 32h-64c-8.84 0-16 7.16-16 16v48h96V48c0-8.84-7.16-16-16-16zm48 256h64V128h-64v160z\"]\n};\nvar faBiohazard = {\n prefix: 'fas',\n iconName: 'biohazard',\n icon: [576, 512, [], \"f780\", \"M287.9 112c18.6 0 36.2 3.8 52.8 9.6 13.3-10.3 23.6-24.3 29.5-40.7-25.2-10.9-53-17-82.2-17-29.1 0-56.9 6-82.1 16.9 5.9 16.4 16.2 30.4 29.5 40.7 16.5-5.7 34-9.5 52.5-9.5zM163.6 438.7c12-11.8 20.4-26.4 24.5-42.4-32.9-26.4-54.8-65.3-58.9-109.6-8.5-2.8-17.2-4.6-26.4-4.6-7.6 0-15.2 1-22.5 3.1 4.1 62.8 35.8 118 83.3 153.5zm224.2-42.6c4.1 16 12.5 30.7 24.5 42.5 47.4-35.5 79.1-90.7 83-153.5-7.2-2-14.7-3-22.2-3-9.2 0-18 1.9-26.6 4.7-4.1 44.2-26 82.9-58.7 109.3zm113.5-205c-17.6-10.4-36.3-16.6-55.3-19.9 6-17.7 10-36.4 10-56.2 0-41-14.5-80.8-41-112.2-2.5-3-6.6-3.7-10-1.8-3.3 1.9-4.8 6-3.6 9.7 4.5 13.8 6.6 26.3 6.6 38.5 0 67.8-53.8 122.9-120 122.9S168 117 168 49.2c0-12.1 2.2-24.7 6.6-38.5 1.2-3.7-.3-7.8-3.6-9.7-3.4-1.9-7.5-1.2-10 1.8C134.6 34.2 120 74 120 115c0 19.8 3.9 38.5 10 56.2-18.9 3.3-37.7 9.5-55.3 19.9-34.6 20.5-61 53.3-74.3 92.4-1.3 3.7.2 7.7 3.5 9.8 3.3 2 7.5 1.3 10-1.6 9.4-10.8 19-19.1 29.2-25.1 57.3-33.9 130.8-13.7 163.9 45 33.1 58.7 13.4 134-43.9 167.9-10.2 6.1-22 10.4-35.8 13.4-3.7.8-6.4 4.2-6.4 8.1.1 4 2.7 7.3 6.5 8 39.7 7.8 80.6.8 115.2-19.7 18-10.6 32.9-24.5 45.3-40.1 12.4 15.6 27.3 29.5 45.3 40.1 34.6 20.5 75.5 27.5 115.2 19.7 3.8-.7 6.4-4 6.5-8 0-3.9-2.6-7.3-6.4-8.1-13.9-2.9-25.6-7.3-35.8-13.4-57.3-33.9-77-109.2-43.9-167.9s106.6-78.9 163.9-45c10.2 6.1 19.8 14.3 29.2 25.1 2.5 2.9 6.7 3.6 10 1.6s4.8-6.1 3.5-9.8c-13.1-39.1-39.5-72-74.1-92.4zm-213.4 129c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48z\"]\n};\nvar faBirthdayCake = {\n prefix: 'fas',\n iconName: 'birthday-cake',\n icon: [448, 512, [], \"f1fd\", \"M448 384c-28.02 0-31.26-32-74.5-32-43.43 0-46.825 32-74.75 32-27.695 0-31.454-32-74.75-32-42.842 0-47.218 32-74.5 32-28.148 0-31.202-32-74.75-32-43.547 0-46.653 32-74.75 32v-80c0-26.5 21.5-48 48-48h16V112h64v144h64V112h64v144h64V112h64v144h16c26.5 0 48 21.5 48 48v80zm0 128H0v-96c43.356 0 46.767-32 74.75-32 27.951 0 31.253 32 74.75 32 42.843 0 47.217-32 74.5-32 28.148 0 31.201 32 74.75 32 43.357 0 46.767-32 74.75-32 27.488 0 31.252 32 74.5 32v96zM96 96c-17.75 0-32-14.25-32-32 0-31 32-23 32-64 12 0 32 29.5 32 56s-14.25 40-32 40zm128 0c-17.75 0-32-14.25-32-32 0-31 32-23 32-64 12 0 32 29.5 32 56s-14.25 40-32 40zm128 0c-17.75 0-32-14.25-32-32 0-31 32-23 32-64 12 0 32 29.5 32 56s-14.25 40-32 40z\"]\n};\nvar faBlender = {\n prefix: 'fas',\n iconName: 'blender',\n icon: [512, 512, [], \"f517\", \"M416 384H160c-35.35 0-64 28.65-64 64v32c0 17.67 14.33 32 32 32h320c17.67 0 32-14.33 32-32v-32c0-35.35-28.65-64-64-64zm-128 96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm40-416h166.54L512 0H48C21.49 0 0 21.49 0 48v160c0 26.51 21.49 48 48 48h103.27l8.73 96h256l17.46-64H328c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h114.18l17.46-64H328c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h140.36l17.46-64H328c-4.42 0-8-3.58-8-8V72c0-4.42 3.58-8 8-8zM64 192V64h69.82l11.64 128H64z\"]\n};\nvar faBlenderPhone = {\n prefix: 'fas',\n iconName: 'blender-phone',\n icon: [576, 512, [], \"f6b6\", \"M392 64h166.54L576 0H192v352h288l17.46-64H392c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h114.18l17.46-64H392c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h140.36l17.46-64H392c-4.42 0-8-3.58-8-8V72c0-4.42 3.58-8 8-8zM158.8 335.01l-25.78-63.26c-2.78-6.81-9.8-10.99-17.24-10.26l-45.03 4.42c-17.28-46.94-17.65-99.78 0-147.72l45.03 4.42c7.43.73 14.46-3.46 17.24-10.26l25.78-63.26c3.02-7.39.2-15.85-6.68-20.07l-39.28-24.1C98.51-3.87 80.09-.5 68.95 11.97c-92.57 103.6-92 259.55 2.1 362.49 9.87 10.8 29.12 12.48 41.65 4.8l39.41-24.18c6.89-4.22 9.7-12.67 6.69-20.07zM480 384H192c-35.35 0-64 28.65-64 64v32c0 17.67 14.33 32 32 32h352c17.67 0 32-14.33 32-32v-32c0-35.35-28.65-64-64-64zm-144 96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faBlind = {\n prefix: 'fas',\n iconName: 'blind',\n icon: [384, 512, [], \"f29d\", \"M380.15 510.837a8 8 0 0 1-10.989-2.687l-125.33-206.427a31.923 31.923 0 0 0 12.958-9.485l126.048 207.608a8 8 0 0 1-2.687 10.991zM142.803 314.338l-32.54 89.485 36.12 88.285c6.693 16.36 25.377 24.192 41.733 17.501 16.357-6.692 24.193-25.376 17.501-41.734l-62.814-153.537zM96 88c24.301 0 44-19.699 44-44S120.301 0 96 0 52 19.699 52 44s19.699 44 44 44zm154.837 169.128l-120-152c-4.733-5.995-11.75-9.108-18.837-9.112V96H80v.026c-7.146.003-14.217 3.161-18.944 9.24L0 183.766v95.694c0 13.455 11.011 24.791 24.464 24.536C37.505 303.748 48 293.1 48 280v-79.766l16-20.571v140.698L9.927 469.055c-6.04 16.609 2.528 34.969 19.138 41.009 16.602 6.039 34.968-2.524 41.009-19.138L136 309.638V202.441l-31.406-39.816a4 4 0 1 1 6.269-4.971l102.3 129.217c9.145 11.584 24.368 11.339 33.708 3.965 10.41-8.216 12.159-23.334 3.966-33.708z\"]\n};\nvar faBlog = {\n prefix: 'fas',\n iconName: 'blog',\n icon: [512, 512, [], \"f781\", \"M172.2 226.8c-14.6-2.9-28.2 8.9-28.2 23.8V301c0 10.2 7.1 18.4 16.7 22 18.2 6.8 31.3 24.4 31.3 45 0 26.5-21.5 48-48 48s-48-21.5-48-48V120c0-13.3-10.7-24-24-24H24c-13.3 0-24 10.7-24 24v248c0 89.5 82.1 160.2 175 140.7 54.4-11.4 98.3-55.4 109.7-109.7 17.4-82.9-37-157.2-112.5-172.2zM209 0c-9.2-.5-17 6.8-17 16v31.6c0 8.5 6.6 15.5 15 15.9 129.4 7 233.4 112 240.9 241.5.5 8.4 7.5 15 15.9 15h32.1c9.2 0 16.5-7.8 16-17C503.4 139.8 372.2 8.6 209 0zm.3 96c-9.3-.7-17.3 6.7-17.3 16.1v32.1c0 8.4 6.5 15.3 14.8 15.9 76.8 6.3 138 68.2 144.9 145.2.8 8.3 7.6 14.7 15.9 14.7h32.2c9.3 0 16.8-8 16.1-17.3-8.4-110.1-96.5-198.2-206.6-206.7z\"]\n};\nvar faBold = {\n prefix: 'fas',\n iconName: 'bold',\n icon: [384, 512, [], \"f032\", \"M333.49 238a122 122 0 0 0 27-65.21C367.87 96.49 308 32 233.42 32H34a16 16 0 0 0-16 16v48a16 16 0 0 0 16 16h31.87v288H34a16 16 0 0 0-16 16v48a16 16 0 0 0 16 16h209.32c70.8 0 134.14-51.75 141-122.4 4.74-48.45-16.39-92.06-50.83-119.6zM145.66 112h87.76a48 48 0 0 1 0 96h-87.76zm87.76 288h-87.76V288h87.76a56 56 0 0 1 0 112z\"]\n};\nvar faBolt = {\n prefix: 'fas',\n iconName: 'bolt',\n icon: [320, 512, [], \"f0e7\", \"M296 160H180.6l42.6-129.8C227.2 15 215.7 0 200 0H56C44 0 33.8 8.9 32.2 20.8l-32 240C-1.7 275.2 9.5 288 24 288h118.7L96.6 482.5c-3.6 15.2 8 29.5 23.3 29.5 8.4 0 16.4-4.4 20.8-12l176-304c9.3-15.9-2.2-36-20.7-36z\"]\n};\nvar faBomb = {\n prefix: 'fas',\n iconName: 'bomb',\n icon: [512, 512, [], \"f1e2\", \"M440.5 88.5l-52 52L415 167c9.4 9.4 9.4 24.6 0 33.9l-17.4 17.4c11.8 26.1 18.4 55.1 18.4 85.6 0 114.9-93.1 208-208 208S0 418.9 0 304 93.1 96 208 96c30.5 0 59.5 6.6 85.6 18.4L311 97c9.4-9.4 24.6-9.4 33.9 0l26.5 26.5 52-52 17.1 17zM500 60h-24c-6.6 0-12 5.4-12 12s5.4 12 12 12h24c6.6 0 12-5.4 12-12s-5.4-12-12-12zM440 0c-6.6 0-12 5.4-12 12v24c0 6.6 5.4 12 12 12s12-5.4 12-12V12c0-6.6-5.4-12-12-12zm33.9 55l17-17c4.7-4.7 4.7-12.3 0-17-4.7-4.7-12.3-4.7-17 0l-17 17c-4.7 4.7-4.7 12.3 0 17 4.8 4.7 12.4 4.7 17 0zm-67.8 0c4.7 4.7 12.3 4.7 17 0 4.7-4.7 4.7-12.3 0-17l-17-17c-4.7-4.7-12.3-4.7-17 0-4.7 4.7-4.7 12.3 0 17l17 17zm67.8 34c-4.7-4.7-12.3-4.7-17 0-4.7 4.7-4.7 12.3 0 17l17 17c4.7 4.7 12.3 4.7 17 0 4.7-4.7 4.7-12.3 0-17l-17-17zM112 272c0-35.3 28.7-64 64-64 8.8 0 16-7.2 16-16s-7.2-16-16-16c-52.9 0-96 43.1-96 96 0 8.8 7.2 16 16 16s16-7.2 16-16z\"]\n};\nvar faBone = {\n prefix: 'fas',\n iconName: 'bone',\n icon: [640, 512, [], \"f5d7\", \"M598.88 244.56c25.2-12.6 41.12-38.36 41.12-66.53v-7.64C640 129.3 606.7 96 565.61 96c-32.02 0-60.44 20.49-70.57 50.86-7.68 23.03-11.6 45.14-38.11 45.14H183.06c-27.38 0-31.58-25.54-38.11-45.14C134.83 116.49 106.4 96 74.39 96 33.3 96 0 129.3 0 170.39v7.64c0 28.17 15.92 53.93 41.12 66.53 9.43 4.71 9.43 18.17 0 22.88C15.92 280.04 0 305.8 0 333.97v7.64C0 382.7 33.3 416 74.38 416c32.02 0 60.44-20.49 70.57-50.86 7.68-23.03 11.6-45.14 38.11-45.14h273.87c27.38 0 31.58 25.54 38.11 45.14C505.17 395.51 533.6 416 565.61 416c41.08 0 74.38-33.3 74.38-74.39v-7.64c0-28.18-15.92-53.93-41.12-66.53-9.42-4.71-9.42-18.17.01-22.88z\"]\n};\nvar faBong = {\n prefix: 'fas',\n iconName: 'bong',\n icon: [448, 512, [], \"f55c\", \"M302.5 512c23.18 0 44.43-12.58 56-32.66C374.69 451.26 384 418.75 384 384c0-36.12-10.08-69.81-27.44-98.62L400 241.94l9.38 9.38c6.25 6.25 16.38 6.25 22.63 0l11.3-11.32c6.25-6.25 6.25-16.38 0-22.63l-52.69-52.69c-6.25-6.25-16.38-6.25-22.63 0l-11.31 11.31c-6.25 6.25-6.25 16.38 0 22.63l9.38 9.38-39.41 39.41c-11.56-11.37-24.53-21.33-38.65-29.51V63.74l15.97-.02c8.82-.01 15.97-7.16 15.98-15.98l.04-31.72C320 7.17 312.82-.01 303.97 0L80.03.26c-8.82.01-15.97 7.16-15.98 15.98l-.04 31.73c-.01 8.85 7.17 16.02 16.02 16.01L96 63.96v153.93C38.67 251.1 0 312.97 0 384c0 34.75 9.31 67.27 25.5 95.34C37.08 499.42 58.33 512 81.5 512h221zM120.06 259.43L144 245.56V63.91l96-.11v181.76l23.94 13.87c24.81 14.37 44.12 35.73 56.56 60.57h-257c12.45-24.84 31.75-46.2 56.56-60.57z\"]\n};\nvar faBook = {\n prefix: 'fas',\n iconName: 'book',\n icon: [448, 512, [], \"f02d\", \"M448 360V24c0-13.3-10.7-24-24-24H96C43 0 0 43 0 96v320c0 53 43 96 96 96h328c13.3 0 24-10.7 24-24v-16c0-7.5-3.5-14.3-8.9-18.7-4.2-15.4-4.2-59.3 0-74.7 5.4-4.3 8.9-11.1 8.9-18.6zM128 134c0-3.3 2.7-6 6-6h212c3.3 0 6 2.7 6 6v20c0 3.3-2.7 6-6 6H134c-3.3 0-6-2.7-6-6v-20zm0 64c0-3.3 2.7-6 6-6h212c3.3 0 6 2.7 6 6v20c0 3.3-2.7 6-6 6H134c-3.3 0-6-2.7-6-6v-20zm253.4 250H96c-17.7 0-32-14.3-32-32 0-17.6 14.4-32 32-32h285.4c-1.9 17.1-1.9 46.9 0 64z\"]\n};\nvar faBookDead = {\n prefix: 'fas',\n iconName: 'book-dead',\n icon: [448, 512, [], \"f6b7\", \"M272 136c8.8 0 16-7.2 16-16s-7.2-16-16-16-16 7.2-16 16 7.2 16 16 16zm176 222.4V25.6c0-16-9.6-25.6-25.6-25.6H96C41.6 0 0 41.6 0 96v320c0 54.4 41.6 96 96 96h326.4c12.8 0 25.6-9.6 25.6-25.6v-16c0-6.4-3.2-12.8-9.6-19.2-3.2-16-3.2-60.8 0-73.6 6.4-3.2 9.6-9.6 9.6-19.2zM240 56c44.2 0 80 28.7 80 64 0 20.9-12.7 39.2-32 50.9V184c0 8.8-7.2 16-16 16h-64c-8.8 0-16-7.2-16-16v-13.1c-19.3-11.7-32-30-32-50.9 0-35.3 35.8-64 80-64zM124.8 223.3l6.3-14.7c1.7-4.1 6.4-5.9 10.5-4.2l98.3 42.1 98.4-42.1c4.1-1.7 8.8.1 10.5 4.2l6.3 14.7c1.7 4.1-.1 8.8-4.2 10.5L280.6 264l70.3 30.1c4.1 1.7 5.9 6.4 4.2 10.5l-6.3 14.7c-1.7 4.1-6.4 5.9-10.5 4.2L240 281.4l-98.3 42.2c-4.1 1.7-8.8-.1-10.5-4.2l-6.3-14.7c-1.7-4.1.1-8.8 4.2-10.5l70.4-30.1-70.5-30.3c-4.1-1.7-5.9-6.4-4.2-10.5zm256 224.7H96c-19.2 0-32-12.8-32-32s16-32 32-32h284.8zM208 136c8.8 0 16-7.2 16-16s-7.2-16-16-16-16 7.2-16 16 7.2 16 16 16z\"]\n};\nvar faBookMedical = {\n prefix: 'fas',\n iconName: 'book-medical',\n icon: [448, 512, [], \"f7e6\", \"M448 358.4V25.6c0-16-9.6-25.6-25.6-25.6H96C41.6 0 0 41.6 0 96v320c0 54.4 41.6 96 96 96h326.4c12.8 0 25.6-9.6 25.6-25.6v-16q0-9.6-9.6-19.2c-3.2-16-3.2-60.8 0-73.6q9.6-4.8 9.6-19.2zM144 168a8 8 0 0 1 8-8h56v-56a8 8 0 0 1 8-8h48a8 8 0 0 1 8 8v56h56a8 8 0 0 1 8 8v48a8 8 0 0 1-8 8h-56v56a8 8 0 0 1-8 8h-48a8 8 0 0 1-8-8v-56h-56a8 8 0 0 1-8-8zm236.8 280H96c-19.2 0-32-12.8-32-32s16-32 32-32h284.8z\"]\n};\nvar faBookOpen = {\n prefix: 'fas',\n iconName: 'book-open',\n icon: [576, 512, [], \"f518\", \"M542.22 32.05c-54.8 3.11-163.72 14.43-230.96 55.59-4.64 2.84-7.27 7.89-7.27 13.17v363.87c0 11.55 12.63 18.85 23.28 13.49 69.18-34.82 169.23-44.32 218.7-46.92 16.89-.89 30.02-14.43 30.02-30.66V62.75c.01-17.71-15.35-31.74-33.77-30.7zM264.73 87.64C197.5 46.48 88.58 35.17 33.78 32.05 15.36 31.01 0 45.04 0 62.75V400.6c0 16.24 13.13 29.78 30.02 30.66 49.49 2.6 149.59 12.11 218.77 46.95 10.62 5.35 23.21-1.94 23.21-13.46V100.63c0-5.29-2.62-10.14-7.27-12.99z\"]\n};\nvar faBookReader = {\n prefix: 'fas',\n iconName: 'book-reader',\n icon: [512, 512, [], \"f5da\", \"M352 96c0-53.02-42.98-96-96-96s-96 42.98-96 96 42.98 96 96 96 96-42.98 96-96zM233.59 241.1c-59.33-36.32-155.43-46.3-203.79-49.05C13.55 191.13 0 203.51 0 219.14v222.8c0 14.33 11.59 26.28 26.49 27.05 43.66 2.29 131.99 10.68 193.04 41.43 9.37 4.72 20.48-1.71 20.48-11.87V252.56c-.01-4.67-2.32-8.95-6.42-11.46zm248.61-49.05c-48.35 2.74-144.46 12.73-203.78 49.05-4.1 2.51-6.41 6.96-6.41 11.63v245.79c0 10.19 11.14 16.63 20.54 11.9 61.04-30.72 149.32-39.11 192.97-41.4 14.9-.78 26.49-12.73 26.49-27.06V219.14c-.01-15.63-13.56-28.01-29.81-27.09z\"]\n};\nvar faBookmark = {\n prefix: 'fas',\n iconName: 'bookmark',\n icon: [384, 512, [], \"f02e\", \"M0 512V48C0 21.49 21.49 0 48 0h288c26.51 0 48 21.49 48 48v464L192 400 0 512z\"]\n};\nvar faBorderAll = {\n prefix: 'fas',\n iconName: 'border-all',\n icon: [448, 512, [], \"f84c\", \"M416 32H32A32 32 0 0 0 0 64v384a32 32 0 0 0 32 32h384a32 32 0 0 0 32-32V64a32 32 0 0 0-32-32zm-32 64v128H256V96zm-192 0v128H64V96zM64 416V288h128v128zm192 0V288h128v128z\"]\n};\nvar faBorderNone = {\n prefix: 'fas',\n iconName: 'border-none',\n icon: [448, 512, [], \"f850\", \"M240 224h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-288 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm96 192h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-96h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-192h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM240 320h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-192h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-96 288h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm96-384h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zM48 224H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0 192H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-96H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-192H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-96H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zm96 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z\"]\n};\nvar faBorderStyle = {\n prefix: 'fas',\n iconName: 'border-style',\n icon: [448, 512, [], \"f853\", \"M240 416h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-96 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm192 0h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm96-192h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0 96h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0 96h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-288h-32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-96H32A32 32 0 0 0 0 64v400a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V96h368a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z\"]\n};\nvar faBowlingBall = {\n prefix: 'fas',\n iconName: 'bowling-ball',\n icon: [496, 512, [], \"f436\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM120 192c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm64-96c0-17.7 14.3-32 32-32s32 14.3 32 32-14.3 32-32 32-32-14.3-32-32zm48 144c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z\"]\n};\nvar faBox = {\n prefix: 'fas',\n iconName: 'box',\n icon: [512, 512, [], \"f466\", \"M509.5 184.6L458.9 32.8C452.4 13.2 434.1 0 413.4 0H272v192h238.7c-.4-2.5-.4-5-1.2-7.4zM240 0H98.6c-20.7 0-39 13.2-45.5 32.8L2.5 184.6c-.8 2.4-.8 4.9-1.2 7.4H240V0zM0 224v240c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V224H0z\"]\n};\nvar faBoxOpen = {\n prefix: 'fas',\n iconName: 'box-open',\n icon: [640, 512, [], \"f49e\", \"M425.7 256c-16.9 0-32.8-9-41.4-23.4L320 126l-64.2 106.6c-8.7 14.5-24.6 23.5-41.5 23.5-4.5 0-9-.6-13.3-1.9L64 215v178c0 14.7 10 27.5 24.2 31l216.2 54.1c10.2 2.5 20.9 2.5 31 0L551.8 424c14.2-3.6 24.2-16.4 24.2-31V215l-137 39.1c-4.3 1.3-8.8 1.9-13.3 1.9zm212.6-112.2L586.8 41c-3.1-6.2-9.8-9.8-16.7-8.9L320 64l91.7 152.1c3.8 6.3 11.4 9.3 18.5 7.3l197.9-56.5c9.9-2.9 14.7-13.9 10.2-23.1zM53.2 41L1.7 143.8c-4.6 9.2.3 20.2 10.1 23l197.9 56.5c7.1 2 14.7-1 18.5-7.3L320 64 69.8 32.1c-6.9-.8-13.5 2.7-16.6 8.9z\"]\n};\nvar faBoxes = {\n prefix: 'fas',\n iconName: 'boxes',\n icon: [576, 512, [], \"f468\", \"M560 288h-80v96l-32-21.3-32 21.3v-96h-80c-8.8 0-16 7.2-16 16v192c0 8.8 7.2 16 16 16h224c8.8 0 16-7.2 16-16V304c0-8.8-7.2-16-16-16zm-384-64h224c8.8 0 16-7.2 16-16V16c0-8.8-7.2-16-16-16h-80v96l-32-21.3L256 96V0h-80c-8.8 0-16 7.2-16 16v192c0 8.8 7.2 16 16 16zm64 64h-80v96l-32-21.3L96 384v-96H16c-8.8 0-16 7.2-16 16v192c0 8.8 7.2 16 16 16h224c8.8 0 16-7.2 16-16V304c0-8.8-7.2-16-16-16z\"]\n};\nvar faBraille = {\n prefix: 'fas',\n iconName: 'braille',\n icon: [640, 512, [], \"f2a1\", \"M128 256c0 35.346-28.654 64-64 64S0 291.346 0 256s28.654-64 64-64 64 28.654 64 64zM64 384c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm0-352C28.654 32 0 60.654 0 96s28.654 64 64 64 64-28.654 64-64-28.654-64-64-64zm160 192c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm0 160c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm0-352c-35.346 0-64 28.654-64 64s28.654 64 64 64 64-28.654 64-64-28.654-64-64-64zm224 192c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm0 160c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm0-352c-35.346 0-64 28.654-64 64s28.654 64 64 64 64-28.654 64-64-28.654-64-64-64zm160 192c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm0 160c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm0-320c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32z\"]\n};\nvar faBrain = {\n prefix: 'fas',\n iconName: 'brain',\n icon: [576, 512, [], \"f5dc\", \"M208 0c-29.9 0-54.7 20.5-61.8 48.2-.8 0-1.4-.2-2.2-.2-35.3 0-64 28.7-64 64 0 4.8.6 9.5 1.7 14C52.5 138 32 166.6 32 200c0 12.6 3.2 24.3 8.3 34.9C16.3 248.7 0 274.3 0 304c0 33.3 20.4 61.9 49.4 73.9-.9 4.6-1.4 9.3-1.4 14.1 0 39.8 32.2 72 72 72 4.1 0 8.1-.5 12-1.2 9.6 28.5 36.2 49.2 68 49.2 39.8 0 72-32.2 72-72V64c0-35.3-28.7-64-64-64zm368 304c0-29.7-16.3-55.3-40.3-69.1 5.2-10.6 8.3-22.3 8.3-34.9 0-33.4-20.5-62-49.7-74 1-4.5 1.7-9.2 1.7-14 0-35.3-28.7-64-64-64-.8 0-1.5.2-2.2.2C422.7 20.5 397.9 0 368 0c-35.3 0-64 28.6-64 64v376c0 39.8 32.2 72 72 72 31.8 0 58.4-20.7 68-49.2 3.9.7 7.9 1.2 12 1.2 39.8 0 72-32.2 72-72 0-4.8-.5-9.5-1.4-14.1 29-12 49.4-40.6 49.4-73.9z\"]\n};\nvar faBreadSlice = {\n prefix: 'fas',\n iconName: 'bread-slice',\n icon: [576, 512, [], \"f7ec\", \"M288 0C108 0 0 93.4 0 169.14 0 199.44 24.24 224 64 224v256c0 17.67 16.12 32 36 32h376c19.88 0 36-14.33 36-32V224c39.76 0 64-24.56 64-54.86C576 93.4 468 0 288 0z\"]\n};\nvar faBriefcase = {\n prefix: 'fas',\n iconName: 'briefcase',\n icon: [512, 512, [], \"f0b1\", \"M320 336c0 8.84-7.16 16-16 16h-96c-8.84 0-16-7.16-16-16v-48H0v144c0 25.6 22.4 48 48 48h416c25.6 0 48-22.4 48-48V288H320v48zm144-208h-80V80c0-25.6-22.4-48-48-48H176c-25.6 0-48 22.4-48 48v48H48c-25.6 0-48 22.4-48 48v80h512v-80c0-25.6-22.4-48-48-48zm-144 0H192V96h128v32z\"]\n};\nvar faBriefcaseMedical = {\n prefix: 'fas',\n iconName: 'briefcase-medical',\n icon: [512, 512, [], \"f469\", \"M464 128h-80V80c0-26.5-21.5-48-48-48H176c-26.5 0-48 21.5-48 48v48H48c-26.5 0-48 21.5-48 48v288c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V176c0-26.5-21.5-48-48-48zM192 96h128v32H192V96zm160 248c0 4.4-3.6 8-8 8h-56v56c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-56h-56c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h56v-56c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v56h56c4.4 0 8 3.6 8 8v48z\"]\n};\nvar faBroadcastTower = {\n prefix: 'fas',\n iconName: 'broadcast-tower',\n icon: [640, 512, [], \"f519\", \"M150.94 192h33.73c11.01 0 18.61-10.83 14.86-21.18-4.93-13.58-7.55-27.98-7.55-42.82s2.62-29.24 7.55-42.82C203.29 74.83 195.68 64 184.67 64h-33.73c-7.01 0-13.46 4.49-15.41 11.23C130.64 92.21 128 109.88 128 128c0 18.12 2.64 35.79 7.54 52.76 1.94 6.74 8.39 11.24 15.4 11.24zM89.92 23.34C95.56 12.72 87.97 0 75.96 0H40.63c-6.27 0-12.14 3.59-14.74 9.31C9.4 45.54 0 85.65 0 128c0 24.75 3.12 68.33 26.69 118.86 2.62 5.63 8.42 9.14 14.61 9.14h34.84c12.02 0 19.61-12.74 13.95-23.37-49.78-93.32-16.71-178.15-.17-209.29zM614.06 9.29C611.46 3.58 605.6 0 599.33 0h-35.42c-11.98 0-19.66 12.66-14.02 23.25 18.27 34.29 48.42 119.42.28 209.23-5.72 10.68 1.8 23.52 13.91 23.52h35.23c6.27 0 12.13-3.58 14.73-9.29C630.57 210.48 640 170.36 640 128s-9.42-82.48-25.94-118.71zM489.06 64h-33.73c-11.01 0-18.61 10.83-14.86 21.18 4.93 13.58 7.55 27.98 7.55 42.82s-2.62 29.24-7.55 42.82c-3.76 10.35 3.85 21.18 14.86 21.18h33.73c7.02 0 13.46-4.49 15.41-11.24 4.9-16.97 7.53-34.64 7.53-52.76 0-18.12-2.64-35.79-7.54-52.76-1.94-6.75-8.39-11.24-15.4-11.24zm-116.3 100.12c7.05-10.29 11.2-22.71 11.2-36.12 0-35.35-28.63-64-63.96-64-35.32 0-63.96 28.65-63.96 64 0 13.41 4.15 25.83 11.2 36.12l-130.5 313.41c-3.4 8.15.46 17.52 8.61 20.92l29.51 12.31c8.15 3.4 17.52-.46 20.91-8.61L244.96 384h150.07l49.2 118.15c3.4 8.16 12.76 12.01 20.91 8.61l29.51-12.31c8.15-3.4 12-12.77 8.61-20.92l-130.5-313.41zM271.62 320L320 203.81 368.38 320h-96.76z\"]\n};\nvar faBroom = {\n prefix: 'fas',\n iconName: 'broom',\n icon: [640, 512, [], \"f51a\", \"M256.47 216.77l86.73 109.18s-16.6 102.36-76.57 150.12C206.66 523.85 0 510.19 0 510.19s3.8-23.14 11-55.43l94.62-112.17c3.97-4.7-.87-11.62-6.65-9.5l-60.4 22.09c14.44-41.66 32.72-80.04 54.6-97.47 59.97-47.76 163.3-40.94 163.3-40.94zM636.53 31.03l-19.86-25c-5.49-6.9-15.52-8.05-22.41-2.56l-232.48 177.8-34.14-42.97c-5.09-6.41-15.14-5.21-18.59 2.21l-25.33 54.55 86.73 109.18 58.8-12.45c8-1.69 11.42-11.2 6.34-17.6l-34.09-42.92 232.48-177.8c6.89-5.48 8.04-15.53 2.55-22.44z\"]\n};\nvar faBrush = {\n prefix: 'fas',\n iconName: 'brush',\n icon: [384, 512, [], \"f55d\", \"M352 0H32C14.33 0 0 14.33 0 32v224h384V32c0-17.67-14.33-32-32-32zM0 320c0 35.35 28.66 64 64 64h64v64c0 35.35 28.66 64 64 64s64-28.65 64-64v-64h64c35.34 0 64-28.65 64-64v-32H0v32zm192 104c13.25 0 24 10.74 24 24 0 13.25-10.75 24-24 24s-24-10.75-24-24c0-13.26 10.75-24 24-24z\"]\n};\nvar faBug = {\n prefix: 'fas',\n iconName: 'bug',\n icon: [512, 512, [], \"f188\", \"M511.988 288.9c-.478 17.43-15.217 31.1-32.653 31.1H424v16c0 21.864-4.882 42.584-13.6 61.145l60.228 60.228c12.496 12.497 12.496 32.758 0 45.255-12.498 12.497-32.759 12.496-45.256 0l-54.736-54.736C345.886 467.965 314.351 480 280 480V236c0-6.627-5.373-12-12-12h-24c-6.627 0-12 5.373-12 12v244c-34.351 0-65.886-12.035-90.636-32.108l-54.736 54.736c-12.498 12.497-32.759 12.496-45.256 0-12.496-12.497-12.496-32.758 0-45.255l60.228-60.228C92.882 378.584 88 357.864 88 336v-16H32.666C15.23 320 .491 306.33.013 288.9-.484 270.816 14.028 256 32 256h56v-58.745l-46.628-46.628c-12.496-12.497-12.496-32.758 0-45.255 12.498-12.497 32.758-12.497 45.256 0L141.255 160h229.489l54.627-54.627c12.498-12.497 32.758-12.497 45.256 0 12.496 12.497 12.496 32.758 0 45.255L424 197.255V256h56c17.972 0 32.484 14.816 31.988 32.9zM257 0c-61.856 0-112 50.144-112 112h224C369 50.144 318.856 0 257 0z\"]\n};\nvar faBuilding = {\n prefix: 'fas',\n iconName: 'building',\n icon: [448, 512, [], \"f1ad\", \"M436 480h-20V24c0-13.255-10.745-24-24-24H56C42.745 0 32 10.745 32 24v456H12c-6.627 0-12 5.373-12 12v20h448v-20c0-6.627-5.373-12-12-12zM128 76c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v40c0 6.627-5.373 12-12 12h-40c-6.627 0-12-5.373-12-12V76zm0 96c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v40c0 6.627-5.373 12-12 12h-40c-6.627 0-12-5.373-12-12v-40zm52 148h-40c-6.627 0-12-5.373-12-12v-40c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v40c0 6.627-5.373 12-12 12zm76 160h-64v-84c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v84zm64-172c0 6.627-5.373 12-12 12h-40c-6.627 0-12-5.373-12-12v-40c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v40zm0-96c0 6.627-5.373 12-12 12h-40c-6.627 0-12-5.373-12-12v-40c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v40zm0-96c0 6.627-5.373 12-12 12h-40c-6.627 0-12-5.373-12-12V76c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v40z\"]\n};\nvar faBullhorn = {\n prefix: 'fas',\n iconName: 'bullhorn',\n icon: [576, 512, [], \"f0a1\", \"M576 240c0-23.63-12.95-44.04-32-55.12V32.01C544 23.26 537.02 0 512 0c-7.12 0-14.19 2.38-19.98 7.02l-85.03 68.03C364.28 109.19 310.66 128 256 128H64c-35.35 0-64 28.65-64 64v96c0 35.35 28.65 64 64 64h33.7c-1.39 10.48-2.18 21.14-2.18 32 0 39.77 9.26 77.35 25.56 110.94 5.19 10.69 16.52 17.06 28.4 17.06h74.28c26.05 0 41.69-29.84 25.9-50.56-16.4-21.52-26.15-48.36-26.15-77.44 0-11.11 1.62-21.79 4.41-32H256c54.66 0 108.28 18.81 150.98 52.95l85.03 68.03a32.023 32.023 0 0 0 19.98 7.02c24.92 0 32-22.78 32-32V295.13C563.05 284.04 576 263.63 576 240zm-96 141.42l-33.05-26.44C392.95 311.78 325.12 288 256 288v-96c69.12 0 136.95-23.78 190.95-66.98L480 98.58v282.84z\"]\n};\nvar faBullseye = {\n prefix: 'fas',\n iconName: 'bullseye',\n icon: [496, 512, [], \"f140\", \"M248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm0 432c-101.69 0-184-82.29-184-184 0-101.69 82.29-184 184-184 101.69 0 184 82.29 184 184 0 101.69-82.29 184-184 184zm0-312c-70.69 0-128 57.31-128 128s57.31 128 128 128 128-57.31 128-128-57.31-128-128-128zm0 192c-35.29 0-64-28.71-64-64s28.71-64 64-64 64 28.71 64 64-28.71 64-64 64z\"]\n};\nvar faBurn = {\n prefix: 'fas',\n iconName: 'burn',\n icon: [384, 512, [], \"f46a\", \"M192 0C79.7 101.3 0 220.9 0 300.5 0 425 79 512 192 512s192-87 192-211.5c0-79.9-80.2-199.6-192-300.5zm0 448c-56.5 0-96-39-96-94.8 0-13.5 4.6-61.5 96-161.2 91.4 99.7 96 147.7 96 161.2 0 55.8-39.5 94.8-96 94.8z\"]\n};\nvar faBus = {\n prefix: 'fas',\n iconName: 'bus',\n icon: [512, 512, [], \"f207\", \"M488 128h-8V80c0-44.8-99.2-80-224-80S32 35.2 32 80v48h-8c-13.25 0-24 10.74-24 24v80c0 13.25 10.75 24 24 24h8v160c0 17.67 14.33 32 32 32v32c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-32h192v32c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-32h6.4c16 0 25.6-12.8 25.6-25.6V256h8c13.25 0 24-10.75 24-24v-80c0-13.26-10.75-24-24-24zM112 400c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm16-112c-17.67 0-32-14.33-32-32V128c0-17.67 14.33-32 32-32h256c17.67 0 32 14.33 32 32v128c0 17.67-14.33 32-32 32H128zm272 112c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faBusAlt = {\n prefix: 'fas',\n iconName: 'bus-alt',\n icon: [512, 512, [], \"f55e\", \"M488 128h-8V80c0-44.8-99.2-80-224-80S32 35.2 32 80v48h-8c-13.25 0-24 10.74-24 24v80c0 13.25 10.75 24 24 24h8v160c0 17.67 14.33 32 32 32v32c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-32h192v32c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-32h6.4c16 0 25.6-12.8 25.6-25.6V256h8c13.25 0 24-10.75 24-24v-80c0-13.26-10.75-24-24-24zM160 72c0-4.42 3.58-8 8-8h176c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H168c-4.42 0-8-3.58-8-8V72zm-48 328c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm128-112H128c-17.67 0-32-14.33-32-32v-96c0-17.67 14.33-32 32-32h112v160zm32 0V128h112c17.67 0 32 14.33 32 32v96c0 17.67-14.33 32-32 32H272zm128 112c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faBusinessTime = {\n prefix: 'fas',\n iconName: 'business-time',\n icon: [640, 512, [], \"f64a\", \"M496 224c-79.59 0-144 64.41-144 144s64.41 144 144 144 144-64.41 144-144-64.41-144-144-144zm64 150.29c0 5.34-4.37 9.71-9.71 9.71h-60.57c-5.34 0-9.71-4.37-9.71-9.71v-76.57c0-5.34 4.37-9.71 9.71-9.71h12.57c5.34 0 9.71 4.37 9.71 9.71V352h38.29c5.34 0 9.71 4.37 9.71 9.71v12.58zM496 192c5.4 0 10.72.33 16 .81V144c0-25.6-22.4-48-48-48h-80V48c0-25.6-22.4-48-48-48H176c-25.6 0-48 22.4-48 48v48H48c-25.6 0-48 22.4-48 48v80h395.12c28.6-20.09 63.35-32 100.88-32zM320 96H192V64h128v32zm6.82 224H208c-8.84 0-16-7.16-16-16v-48H0v144c0 25.6 22.4 48 48 48h291.43C327.1 423.96 320 396.82 320 368c0-16.66 2.48-32.72 6.82-48z\"]\n};\nvar faCalculator = {\n prefix: 'fas',\n iconName: 'calculator',\n icon: [448, 512, [], \"f1ec\", \"M400 0H48C22.4 0 0 22.4 0 48v416c0 25.6 22.4 48 48 48h352c25.6 0 48-22.4 48-48V48c0-25.6-22.4-48-48-48zM128 435.2c0 6.4-6.4 12.8-12.8 12.8H76.8c-6.4 0-12.8-6.4-12.8-12.8v-38.4c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4zm0-128c0 6.4-6.4 12.8-12.8 12.8H76.8c-6.4 0-12.8-6.4-12.8-12.8v-38.4c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4zm128 128c0 6.4-6.4 12.8-12.8 12.8h-38.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4zm0-128c0 6.4-6.4 12.8-12.8 12.8h-38.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4zm128 128c0 6.4-6.4 12.8-12.8 12.8h-38.4c-6.4 0-12.8-6.4-12.8-12.8V268.8c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v166.4zm0-256c0 6.4-6.4 12.8-12.8 12.8H76.8c-6.4 0-12.8-6.4-12.8-12.8V76.8C64 70.4 70.4 64 76.8 64h294.4c6.4 0 12.8 6.4 12.8 12.8v102.4z\"]\n};\nvar faCalendar = {\n prefix: 'fas',\n iconName: 'calendar',\n icon: [448, 512, [], \"f133\", \"M12 192h424c6.6 0 12 5.4 12 12v260c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V204c0-6.6 5.4-12 12-12zm436-44v-36c0-26.5-21.5-48-48-48h-48V12c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v52H160V12c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v52H48C21.5 64 0 85.5 0 112v36c0 6.6 5.4 12 12 12h424c6.6 0 12-5.4 12-12z\"]\n};\nvar faCalendarAlt = {\n prefix: 'fas',\n iconName: 'calendar-alt',\n icon: [448, 512, [], \"f073\", \"M0 464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V192H0v272zm320-196c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40zm0 128c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40zM192 268c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40zm0 128c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40zM64 268c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12H76c-6.6 0-12-5.4-12-12v-40zm0 128c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12H76c-6.6 0-12-5.4-12-12v-40zM400 64h-48V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v48H160V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v48H48C21.5 64 0 85.5 0 112v48h448v-48c0-26.5-21.5-48-48-48z\"]\n};\nvar faCalendarCheck = {\n prefix: 'fas',\n iconName: 'calendar-check',\n icon: [448, 512, [], \"f274\", \"M436 160H12c-6.627 0-12-5.373-12-12v-36c0-26.51 21.49-48 48-48h48V12c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v52h128V12c0-6.627 5.373-12 12-12h40c6.627 0 12 5.373 12 12v52h48c26.51 0 48 21.49 48 48v36c0 6.627-5.373 12-12 12zM12 192h424c6.627 0 12 5.373 12 12v260c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V204c0-6.627 5.373-12 12-12zm333.296 95.947l-28.169-28.398c-4.667-4.705-12.265-4.736-16.97-.068L194.12 364.665l-45.98-46.352c-4.667-4.705-12.266-4.736-16.971-.068l-28.397 28.17c-4.705 4.667-4.736 12.265-.068 16.97l82.601 83.269c4.667 4.705 12.265 4.736 16.97.068l142.953-141.805c4.705-4.667 4.736-12.265.068-16.97z\"]\n};\nvar faCalendarDay = {\n prefix: 'fas',\n iconName: 'calendar-day',\n icon: [448, 512, [], \"f783\", \"M0 464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V192H0v272zm64-192c0-8.8 7.2-16 16-16h96c8.8 0 16 7.2 16 16v96c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16v-96zM400 64h-48V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v48H160V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v48H48C21.5 64 0 85.5 0 112v48h448v-48c0-26.5-21.5-48-48-48z\"]\n};\nvar faCalendarMinus = {\n prefix: 'fas',\n iconName: 'calendar-minus',\n icon: [448, 512, [], \"f272\", \"M436 160H12c-6.6 0-12-5.4-12-12v-36c0-26.5 21.5-48 48-48h48V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h128V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h48c26.5 0 48 21.5 48 48v36c0 6.6-5.4 12-12 12zM12 192h424c6.6 0 12 5.4 12 12v260c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V204c0-6.6 5.4-12 12-12zm304 192c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12H132c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h184z\"]\n};\nvar faCalendarPlus = {\n prefix: 'fas',\n iconName: 'calendar-plus',\n icon: [448, 512, [], \"f271\", \"M436 160H12c-6.6 0-12-5.4-12-12v-36c0-26.5 21.5-48 48-48h48V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h128V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h48c26.5 0 48 21.5 48 48v36c0 6.6-5.4 12-12 12zM12 192h424c6.6 0 12 5.4 12 12v260c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V204c0-6.6 5.4-12 12-12zm316 140c0-6.6-5.4-12-12-12h-60v-60c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v60h-60c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h60v60c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-60h60c6.6 0 12-5.4 12-12v-40z\"]\n};\nvar faCalendarTimes = {\n prefix: 'fas',\n iconName: 'calendar-times',\n icon: [448, 512, [], \"f273\", \"M436 160H12c-6.6 0-12-5.4-12-12v-36c0-26.5 21.5-48 48-48h48V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h128V12c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v52h48c26.5 0 48 21.5 48 48v36c0 6.6-5.4 12-12 12zM12 192h424c6.6 0 12 5.4 12 12v260c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V204c0-6.6 5.4-12 12-12zm257.3 160l48.1-48.1c4.7-4.7 4.7-12.3 0-17l-28.3-28.3c-4.7-4.7-12.3-4.7-17 0L224 306.7l-48.1-48.1c-4.7-4.7-12.3-4.7-17 0l-28.3 28.3c-4.7 4.7-4.7 12.3 0 17l48.1 48.1-48.1 48.1c-4.7 4.7-4.7 12.3 0 17l28.3 28.3c4.7 4.7 12.3 4.7 17 0l48.1-48.1 48.1 48.1c4.7 4.7 12.3 4.7 17 0l28.3-28.3c4.7-4.7 4.7-12.3 0-17L269.3 352z\"]\n};\nvar faCalendarWeek = {\n prefix: 'fas',\n iconName: 'calendar-week',\n icon: [448, 512, [], \"f784\", \"M0 464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V192H0v272zm64-192c0-8.8 7.2-16 16-16h288c8.8 0 16 7.2 16 16v64c0 8.8-7.2 16-16 16H80c-8.8 0-16-7.2-16-16v-64zM400 64h-48V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v48H160V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v48H48C21.5 64 0 85.5 0 112v48h448v-48c0-26.5-21.5-48-48-48z\"]\n};\nvar faCamera = {\n prefix: 'fas',\n iconName: 'camera',\n icon: [512, 512, [], \"f030\", \"M512 144v288c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V144c0-26.5 21.5-48 48-48h88l12.3-32.9c7-18.7 24.9-31.1 44.9-31.1h125.5c20 0 37.9 12.4 44.9 31.1L376 96h88c26.5 0 48 21.5 48 48zM376 288c0-66.2-53.8-120-120-120s-120 53.8-120 120 53.8 120 120 120 120-53.8 120-120zm-32 0c0 48.5-39.5 88-88 88s-88-39.5-88-88 39.5-88 88-88 88 39.5 88 88z\"]\n};\nvar faCameraRetro = {\n prefix: 'fas',\n iconName: 'camera-retro',\n icon: [512, 512, [], \"f083\", \"M48 32C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48H48zm0 32h106c3.3 0 6 2.7 6 6v20c0 3.3-2.7 6-6 6H38c-3.3 0-6-2.7-6-6V80c0-8.8 7.2-16 16-16zm426 96H38c-3.3 0-6-2.7-6-6v-36c0-3.3 2.7-6 6-6h138l30.2-45.3c1.1-1.7 3-2.7 5-2.7H464c8.8 0 16 7.2 16 16v74c0 3.3-2.7 6-6 6zM256 424c-66.2 0-120-53.8-120-120s53.8-120 120-120 120 53.8 120 120-53.8 120-120 120zm0-208c-48.5 0-88 39.5-88 88s39.5 88 88 88 88-39.5 88-88-39.5-88-88-88zm-48 104c-8.8 0-16-7.2-16-16 0-35.3 28.7-64 64-64 8.8 0 16 7.2 16 16s-7.2 16-16 16c-17.6 0-32 14.4-32 32 0 8.8-7.2 16-16 16z\"]\n};\nvar faCampground = {\n prefix: 'fas',\n iconName: 'campground',\n icon: [640, 512, [], \"f6bb\", \"M624 448h-24.68L359.54 117.75l53.41-73.55c5.19-7.15 3.61-17.16-3.54-22.35l-25.9-18.79c-7.15-5.19-17.15-3.61-22.35 3.55L320 63.3 278.83 6.6c-5.19-7.15-15.2-8.74-22.35-3.55l-25.88 18.8c-7.15 5.19-8.74 15.2-3.54 22.35l53.41 73.55L40.68 448H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h608c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zM320 288l116.36 160H203.64L320 288z\"]\n};\nvar faCandyCane = {\n prefix: 'fas',\n iconName: 'candy-cane',\n icon: [512, 512, [], \"f786\", \"M497.5 92C469.6 33.1 411.8 0 352.4 0c-27.9 0-56.2 7.3-81.8 22.6L243.1 39c-15.2 9.1-20.1 28.7-11 43.9l32.8 54.9c6 10 16.6 15.6 27.5 15.6 5.6 0 11.2-1.5 16.4-4.5l27.5-16.4c5.1-3.1 10.8-4.5 16.4-4.5 10.9 0 21.5 5.6 27.5 15.6 9.1 15.1 4.1 34.8-11 43.9L15.6 397.6c-15.2 9.1-20.1 28.7-11 43.9l32.8 54.9c6 10 16.6 15.6 27.5 15.6 5.6 0 11.2-1.5 16.4-4.5L428.6 301c71.7-42.9 104.6-133.5 68.9-209zm-177.7 13l-2.5 1.5L296.8 45c9.7-4.7 19.8-8.1 30.3-10.2l20.6 61.8c-9.8.8-19.4 3.3-27.9 8.4zM145.9 431.8l-60.5-38.5 30.8-18.3 60.5 38.5-30.8 18.3zm107.5-63.9l-60.5-38.5 30.8-18.3 60.5 38.5-30.8 18.3zM364.3 302l-60.5-38.5 30.8-18.3 60.5 38.5-30.8 18.3zm20.4-197.3l46-46c8.4 6.5 16 14.1 22.6 22.6L407.6 127c-5.7-9.3-13.7-16.9-22.9-22.3zm82.1 107.8l-59.5-19.8c3.2-5.3 5.8-10.9 7.4-17.1 1.1-4.5 1.7-9.1 1.8-13.6l60.4 20.1c-2.1 10.4-5.5 20.6-10.1 30.4z\"]\n};\nvar faCannabis = {\n prefix: 'fas',\n iconName: 'cannabis',\n icon: [512, 512, [], \"f55f\", \"M503.47 360.25c-1.56-.82-32.39-16.89-76.78-25.81 64.25-75.12 84.05-161.67 84.93-165.64 1.18-5.33-.44-10.9-4.3-14.77-3.03-3.04-7.12-4.7-11.32-4.7-1.14 0-2.29.12-3.44.38-3.88.85-86.54 19.59-160.58 79.76.01-1.46.01-2.93.01-4.4 0-118.79-59.98-213.72-62.53-217.7A15.973 15.973 0 0 0 256 0c-5.45 0-10.53 2.78-13.47 7.37-2.55 3.98-62.53 98.91-62.53 217.7 0 1.47.01 2.94.01 4.4-74.03-60.16-156.69-78.9-160.58-79.76-1.14-.25-2.29-.38-3.44-.38-4.2 0-8.29 1.66-11.32 4.7A15.986 15.986 0 0 0 .38 168.8c.88 3.97 20.68 90.52 84.93 165.64-44.39 8.92-75.21 24.99-76.78 25.81a16.003 16.003 0 0 0-.02 28.29c2.45 1.29 60.76 31.72 133.49 31.72 6.14 0 11.96-.1 17.5-.31-11.37 22.23-16.52 38.31-16.81 39.22-1.8 5.68-.29 11.89 3.91 16.11a16.019 16.019 0 0 0 16.1 3.99c1.83-.57 37.72-11.99 77.3-39.29V504c0 4.42 3.58 8 8 8h16c4.42 0 8-3.58 8-8v-64.01c39.58 27.3 75.47 38.71 77.3 39.29a16.019 16.019 0 0 0 16.1-3.99c4.2-4.22 5.71-10.43 3.91-16.11-.29-.91-5.45-16.99-16.81-39.22 5.54.21 11.37.31 17.5.31 72.72 0 131.04-30.43 133.49-31.72 5.24-2.78 8.52-8.22 8.51-14.15-.01-5.94-3.29-11.39-8.53-14.15z\"]\n};\nvar faCapsules = {\n prefix: 'fas',\n iconName: 'capsules',\n icon: [576, 512, [], \"f46b\", \"M555.3 300.1L424.2 112.8C401.9 81 366.4 64 330.4 64c-22.6 0-45.5 6.7-65.5 20.7-19.7 13.8-33.7 32.8-41.5 53.8C220.5 79.2 172 32 112 32 50.1 32 0 82.1 0 144v224c0 61.9 50.1 112 112 112s112-50.1 112-112V218.9c3.3 8.6 7.3 17.1 12.8 25L368 431.2c22.2 31.8 57.7 48.8 93.8 48.8 22.7 0 45.5-6.7 65.5-20.7 51.7-36.2 64.2-107.5 28-159.2zM160 256H64V144c0-26.5 21.5-48 48-48s48 21.5 48 48v112zm194.8 44.9l-65.6-93.7c-7.7-11-10.7-24.4-8.3-37.6 2.3-13.2 9.7-24.8 20.7-32.5 8.5-6 18.5-9.1 28.8-9.1 16.5 0 31.9 8 41.3 21.5l65.6 93.7-82.5 57.7z\"]\n};\nvar faCar = {\n prefix: 'fas',\n iconName: 'car',\n icon: [512, 512, [], \"f1b9\", \"M499.99 176h-59.87l-16.64-41.6C406.38 91.63 365.57 64 319.5 64h-127c-46.06 0-86.88 27.63-103.99 70.4L71.87 176H12.01C4.2 176-1.53 183.34.37 190.91l6 24C7.7 220.25 12.5 224 18.01 224h20.07C24.65 235.73 16 252.78 16 272v48c0 16.12 6.16 30.67 16 41.93V416c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-32h256v32c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-54.07c9.84-11.25 16-25.8 16-41.93v-48c0-19.22-8.65-36.27-22.07-48H494c5.51 0 10.31-3.75 11.64-9.09l6-24c1.89-7.57-3.84-14.91-11.65-14.91zm-352.06-17.83c7.29-18.22 24.94-30.17 44.57-30.17h127c19.63 0 37.28 11.95 44.57 30.17L384 208H128l19.93-49.83zM96 319.8c-19.2 0-32-12.76-32-31.9S76.8 256 96 256s48 28.71 48 47.85-28.8 15.95-48 15.95zm320 0c-19.2 0-48 3.19-48-15.95S396.8 256 416 256s32 12.76 32 31.9-12.8 31.9-32 31.9z\"]\n};\nvar faCarAlt = {\n prefix: 'fas',\n iconName: 'car-alt',\n icon: [480, 512, [], \"f5de\", \"M438.66 212.33l-11.24-28.1-19.93-49.83C390.38 91.63 349.57 64 303.5 64h-127c-46.06 0-86.88 27.63-103.99 70.4l-19.93 49.83-11.24 28.1C17.22 221.5 0 244.66 0 272v48c0 16.12 6.16 30.67 16 41.93V416c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-32h256v32c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-54.07c9.84-11.25 16-25.8 16-41.93v-48c0-27.34-17.22-50.5-41.34-59.67zm-306.73-54.16c7.29-18.22 24.94-30.17 44.57-30.17h127c19.63 0 37.28 11.95 44.57 30.17L368 208H112l19.93-49.83zM80 319.8c-19.2 0-32-12.76-32-31.9S60.8 256 80 256s48 28.71 48 47.85-28.8 15.95-48 15.95zm320 0c-19.2 0-48 3.19-48-15.95S380.8 256 400 256s32 12.76 32 31.9-12.8 31.9-32 31.9z\"]\n};\nvar faCarBattery = {\n prefix: 'fas',\n iconName: 'car-battery',\n icon: [512, 512, [], \"f5df\", \"M480 128h-32V80c0-8.84-7.16-16-16-16h-96c-8.84 0-16 7.16-16 16v48H192V80c0-8.84-7.16-16-16-16H80c-8.84 0-16 7.16-16 16v48H32c-17.67 0-32 14.33-32 32v256c0 17.67 14.33 32 32 32h448c17.67 0 32-14.33 32-32V160c0-17.67-14.33-32-32-32zM192 264c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h112c4.42 0 8 3.58 8 8v16zm256 0c0 4.42-3.58 8-8 8h-40v40c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-40h-40c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h40v-40c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v40h40c4.42 0 8 3.58 8 8v16z\"]\n};\nvar faCarCrash = {\n prefix: 'fas',\n iconName: 'car-crash',\n icon: [640, 512, [], \"f5e1\", \"M143.25 220.81l-12.42 46.37c-3.01 11.25-3.63 22.89-2.41 34.39l-35.2 28.98c-6.57 5.41-16.31-.43-14.62-8.77l15.44-76.68c1.06-5.26-2.66-10.28-8-10.79l-77.86-7.55c-8.47-.82-11.23-11.83-4.14-16.54l65.15-43.3c4.46-2.97 5.38-9.15 1.98-13.29L21.46 93.22c-5.41-6.57.43-16.3 8.78-14.62l76.68 15.44c5.26 1.06 10.28-2.66 10.8-8l7.55-77.86c.82-8.48 11.83-11.23 16.55-4.14l43.3 65.14c2.97 4.46 9.15 5.38 13.29 1.98l60.4-49.71c6.57-5.41 16.3.43 14.62 8.77L262.1 86.38c-2.71 3.05-5.43 6.09-7.91 9.4l-32.15 42.97-10.71 14.32c-32.73 8.76-59.18 34.53-68.08 67.74zm494.57 132.51l-12.42 46.36c-3.13 11.68-9.38 21.61-17.55 29.36a66.876 66.876 0 0 1-8.76 7l-13.99 52.23c-1.14 4.27-3.1 8.1-5.65 11.38-7.67 9.84-20.74 14.68-33.54 11.25L515 502.62c-17.07-4.57-27.2-22.12-22.63-39.19l8.28-30.91-247.28-66.26-8.28 30.91c-4.57 17.07-22.12 27.2-39.19 22.63l-30.91-8.28c-12.8-3.43-21.7-14.16-23.42-26.51-.57-4.12-.35-8.42.79-12.68l13.99-52.23a66.62 66.62 0 0 1-4.09-10.45c-3.2-10.79-3.65-22.52-.52-34.2l12.42-46.37c5.31-19.8 19.36-34.83 36.89-42.21a64.336 64.336 0 0 1 18.49-4.72l18.13-24.23 32.15-42.97c3.45-4.61 7.19-8.9 11.2-12.84 8-7.89 17.03-14.44 26.74-19.51 4.86-2.54 9.89-4.71 15.05-6.49 10.33-3.58 21.19-5.63 32.24-6.04 11.05-.41 22.31.82 33.43 3.8l122.68 32.87c11.12 2.98 21.48 7.54 30.85 13.43a111.11 111.11 0 0 1 34.69 34.5c8.82 13.88 14.64 29.84 16.68 46.99l6.36 53.29 3.59 30.05a64.49 64.49 0 0 1 22.74 29.93c4.39 11.88 5.29 25.19 1.75 38.39zM255.58 234.34c-18.55-4.97-34.21 4.04-39.17 22.53-4.96 18.49 4.11 34.12 22.65 39.09 18.55 4.97 45.54 15.51 50.49-2.98 4.96-18.49-15.43-53.67-33.97-58.64zm290.61 28.17l-6.36-53.29c-.58-4.87-1.89-9.53-3.82-13.86-5.8-12.99-17.2-23.01-31.42-26.82l-122.68-32.87a48.008 48.008 0 0 0-50.86 17.61l-32.15 42.97 172 46.08 75.29 20.18zm18.49 54.65c-18.55-4.97-53.8 15.31-58.75 33.79-4.95 18.49 23.69 22.86 42.24 27.83 18.55 4.97 34.21-4.04 39.17-22.53 4.95-18.48-4.11-34.12-22.66-39.09z\"]\n};\nvar faCarSide = {\n prefix: 'fas',\n iconName: 'car-side',\n icon: [640, 512, [], \"f5e4\", \"M544 192h-16L419.22 56.02A64.025 64.025 0 0 0 369.24 32H155.33c-26.17 0-49.7 15.93-59.42 40.23L48 194.26C20.44 201.4 0 226.21 0 256v112c0 8.84 7.16 16 16 16h48c0 53.02 42.98 96 96 96s96-42.98 96-96h128c0 53.02 42.98 96 96 96s96-42.98 96-96h48c8.84 0 16-7.16 16-16v-80c0-53.02-42.98-96-96-96zM160 432c-26.47 0-48-21.53-48-48s21.53-48 48-48 48 21.53 48 48-21.53 48-48 48zm72-240H116.93l38.4-96H232v96zm48 0V96h89.24l76.8 96H280zm200 240c-26.47 0-48-21.53-48-48s21.53-48 48-48 48 21.53 48 48-21.53 48-48 48z\"]\n};\nvar faCaravan = {\n prefix: 'fas',\n iconName: 'caravan',\n icon: [640, 512, [], \"f8ff\", \"M416,208a16,16,0,1,0,16,16A16,16,0,0,0,416,208ZM624,320H576V160A160,160,0,0,0,416,0H64A64,64,0,0,0,0,64V320a64,64,0,0,0,64,64H96a96,96,0,0,0,192,0H624a16,16,0,0,0,16-16V336A16,16,0,0,0,624,320ZM192,432a48,48,0,1,1,48-48A48.05,48.05,0,0,1,192,432Zm64-240a32,32,0,0,1-32,32H96a32,32,0,0,1-32-32V128A32,32,0,0,1,96,96H224a32,32,0,0,1,32,32ZM448,320H320V128a32,32,0,0,1,32-32h64a32,32,0,0,1,32,32Z\"]\n};\nvar faCaretDown = {\n prefix: 'fas',\n iconName: 'caret-down',\n icon: [320, 512, [], \"f0d7\", \"M31.3 192h257.3c17.8 0 26.7 21.5 14.1 34.1L174.1 354.8c-7.8 7.8-20.5 7.8-28.3 0L17.2 226.1C4.6 213.5 13.5 192 31.3 192z\"]\n};\nvar faCaretLeft = {\n prefix: 'fas',\n iconName: 'caret-left',\n icon: [192, 512, [], \"f0d9\", \"M192 127.338v257.324c0 17.818-21.543 26.741-34.142 14.142L29.196 270.142c-7.81-7.81-7.81-20.474 0-28.284l128.662-128.662c12.599-12.6 34.142-3.676 34.142 14.142z\"]\n};\nvar faCaretRight = {\n prefix: 'fas',\n iconName: 'caret-right',\n icon: [192, 512, [], \"f0da\", \"M0 384.662V127.338c0-17.818 21.543-26.741 34.142-14.142l128.662 128.662c7.81 7.81 7.81 20.474 0 28.284L34.142 398.804C21.543 411.404 0 402.48 0 384.662z\"]\n};\nvar faCaretSquareDown = {\n prefix: 'fas',\n iconName: 'caret-square-down',\n icon: [448, 512, [], \"f150\", \"M448 80v352c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48zM92.5 220.5l123 123c4.7 4.7 12.3 4.7 17 0l123-123c7.6-7.6 2.2-20.5-8.5-20.5H101c-10.7 0-16.1 12.9-8.5 20.5z\"]\n};\nvar faCaretSquareLeft = {\n prefix: 'fas',\n iconName: 'caret-square-left',\n icon: [448, 512, [], \"f191\", \"M400 480H48c-26.51 0-48-21.49-48-48V80c0-26.51 21.49-48 48-48h352c26.51 0 48 21.49 48 48v352c0 26.51-21.49 48-48 48zM259.515 124.485l-123.03 123.03c-4.686 4.686-4.686 12.284 0 16.971l123.029 123.029c7.56 7.56 20.485 2.206 20.485-8.485V132.971c.001-10.691-12.925-16.045-20.484-8.486z\"]\n};\nvar faCaretSquareRight = {\n prefix: 'fas',\n iconName: 'caret-square-right',\n icon: [448, 512, [], \"f152\", \"M48 32h352c26.51 0 48 21.49 48 48v352c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V80c0-26.51 21.49-48 48-48zm140.485 355.515l123.029-123.029c4.686-4.686 4.686-12.284 0-16.971l-123.029-123.03c-7.56-7.56-20.485-2.206-20.485 8.485v246.059c0 10.691 12.926 16.045 20.485 8.486z\"]\n};\nvar faCaretSquareUp = {\n prefix: 'fas',\n iconName: 'caret-square-up',\n icon: [448, 512, [], \"f151\", \"M0 432V80c0-26.51 21.49-48 48-48h352c26.51 0 48 21.49 48 48v352c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48zm355.515-140.485l-123.03-123.03c-4.686-4.686-12.284-4.686-16.971 0L92.485 291.515c-7.56 7.56-2.206 20.485 8.485 20.485h246.059c10.691 0 16.045-12.926 8.486-20.485z\"]\n};\nvar faCaretUp = {\n prefix: 'fas',\n iconName: 'caret-up',\n icon: [320, 512, [], \"f0d8\", \"M288.662 352H31.338c-17.818 0-26.741-21.543-14.142-34.142l128.662-128.662c7.81-7.81 20.474-7.81 28.284 0l128.662 128.662c12.6 12.599 3.676 34.142-14.142 34.142z\"]\n};\nvar faCarrot = {\n prefix: 'fas',\n iconName: 'carrot',\n icon: [512, 512, [], \"f787\", \"M298.2 156.6c-52.7-25.7-114.5-10.5-150.2 32.8l55.2 55.2c6.3 6.3 6.3 16.4 0 22.6-3.1 3.1-7.2 4.7-11.3 4.7s-8.2-1.6-11.3-4.7L130.4 217 2.3 479.7c-2.9 6-3.1 13.3 0 19.7 5.4 11.1 18.9 15.7 30 10.3l133.6-65.2-49.2-49.2c-6.3-6.2-6.3-16.4 0-22.6 6.3-6.2 16.4-6.2 22.6 0l57 57 102-49.8c24-11.7 44.5-31.3 57.1-57.1 30.1-61.7 4.5-136.1-57.2-166.2zm92.1-34.9C409.8 81 399.7 32.9 360 0c-50.3 41.7-52.5 107.5-7.9 151.9l8 8c44.4 44.6 110.3 42.4 151.9-7.9-32.9-39.7-81-49.8-121.7-30.3z\"]\n};\nvar faCartArrowDown = {\n prefix: 'fas',\n iconName: 'cart-arrow-down',\n icon: [576, 512, [], \"f218\", \"M504.717 320H211.572l6.545 32h268.418c15.401 0 26.816 14.301 23.403 29.319l-5.517 24.276C523.112 414.668 536 433.828 536 456c0 31.202-25.519 56.444-56.824 55.994-29.823-.429-54.35-24.631-55.155-54.447-.44-16.287 6.085-31.049 16.803-41.548H231.176C241.553 426.165 248 440.326 248 456c0 31.813-26.528 57.431-58.67 55.938-28.54-1.325-51.751-24.385-53.251-52.917-1.158-22.034 10.436-41.455 28.051-51.586L93.883 64H24C10.745 64 0 53.255 0 40V24C0 10.745 10.745 0 24 0h102.529c11.401 0 21.228 8.021 23.513 19.19L159.208 64H551.99c15.401 0 26.816 14.301 23.403 29.319l-47.273 208C525.637 312.246 515.923 320 504.717 320zM403.029 192H360v-60c0-6.627-5.373-12-12-12h-24c-6.627 0-12 5.373-12 12v60h-43.029c-10.691 0-16.045 12.926-8.485 20.485l67.029 67.029c4.686 4.686 12.284 4.686 16.971 0l67.029-67.029c7.559-7.559 2.205-20.485-8.486-20.485z\"]\n};\nvar faCartPlus = {\n prefix: 'fas',\n iconName: 'cart-plus',\n icon: [576, 512, [], \"f217\", \"M504.717 320H211.572l6.545 32h268.418c15.401 0 26.816 14.301 23.403 29.319l-5.517 24.276C523.112 414.668 536 433.828 536 456c0 31.202-25.519 56.444-56.824 55.994-29.823-.429-54.35-24.631-55.155-54.447-.44-16.287 6.085-31.049 16.803-41.548H231.176C241.553 426.165 248 440.326 248 456c0 31.813-26.528 57.431-58.67 55.938-28.54-1.325-51.751-24.385-53.251-52.917-1.158-22.034 10.436-41.455 28.051-51.586L93.883 64H24C10.745 64 0 53.255 0 40V24C0 10.745 10.745 0 24 0h102.529c11.401 0 21.228 8.021 23.513 19.19L159.208 64H551.99c15.401 0 26.816 14.301 23.403 29.319l-47.273 208C525.637 312.246 515.923 320 504.717 320zM408 168h-48v-40c0-8.837-7.163-16-16-16h-16c-8.837 0-16 7.163-16 16v40h-48c-8.837 0-16 7.163-16 16v16c0 8.837 7.163 16 16 16h48v40c0 8.837 7.163 16 16 16h16c8.837 0 16-7.163 16-16v-40h48c8.837 0 16-7.163 16-16v-16c0-8.837-7.163-16-16-16z\"]\n};\nvar faCashRegister = {\n prefix: 'fas',\n iconName: 'cash-register',\n icon: [512, 512, [], \"f788\", \"M511.1 378.8l-26.7-160c-2.6-15.4-15.9-26.7-31.6-26.7H208v-64h96c8.8 0 16-7.2 16-16V16c0-8.8-7.2-16-16-16H48c-8.8 0-16 7.2-16 16v96c0 8.8 7.2 16 16 16h96v64H59.1c-15.6 0-29 11.3-31.6 26.7L.8 378.7c-.6 3.5-.9 7-.9 10.5V480c0 17.7 14.3 32 32 32h448c17.7 0 32-14.3 32-32v-90.7c.1-3.5-.2-7-.8-10.5zM280 248c0-8.8 7.2-16 16-16h16c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16h-16c-8.8 0-16-7.2-16-16v-16zm-32 64h16c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16h-16c-8.8 0-16-7.2-16-16v-16c0-8.8 7.2-16 16-16zm-32-80c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16h-16c-8.8 0-16-7.2-16-16v-16c0-8.8 7.2-16 16-16h16zM80 80V48h192v32H80zm40 200h-16c-8.8 0-16-7.2-16-16v-16c0-8.8 7.2-16 16-16h16c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16zm16 64v-16c0-8.8 7.2-16 16-16h16c8.8 0 16 7.2 16 16v16c0 8.8-7.2 16-16 16h-16c-8.8 0-16-7.2-16-16zm216 112c0 4.4-3.6 8-8 8H168c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h176c4.4 0 8 3.6 8 8v16zm24-112c0 8.8-7.2 16-16 16h-16c-8.8 0-16-7.2-16-16v-16c0-8.8 7.2-16 16-16h16c8.8 0 16 7.2 16 16v16zm48-80c0 8.8-7.2 16-16 16h-16c-8.8 0-16-7.2-16-16v-16c0-8.8 7.2-16 16-16h16c8.8 0 16 7.2 16 16v16z\"]\n};\nvar faCat = {\n prefix: 'fas',\n iconName: 'cat',\n icon: [512, 512, [], \"f6be\", \"M290.59 192c-20.18 0-106.82 1.98-162.59 85.95V192c0-52.94-43.06-96-96-96-17.67 0-32 14.33-32 32s14.33 32 32 32c17.64 0 32 14.36 32 32v256c0 35.3 28.7 64 64 64h176c8.84 0 16-7.16 16-16v-16c0-17.67-14.33-32-32-32h-32l128-96v144c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16V289.86c-10.29 2.67-20.89 4.54-32 4.54-61.81 0-113.52-44.05-125.41-102.4zM448 96h-64l-64-64v134.4c0 53.02 42.98 96 96 96s96-42.98 96-96V32l-64 64zm-72 80c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.16 16-16 16zm80 0c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.16 16-16 16z\"]\n};\nvar faCertificate = {\n prefix: 'fas',\n iconName: 'certificate',\n icon: [512, 512, [], \"f0a3\", \"M458.622 255.92l45.985-45.005c13.708-12.977 7.316-36.039-10.664-40.339l-62.65-15.99 17.661-62.015c4.991-17.838-11.829-34.663-29.661-29.671l-61.994 17.667-15.984-62.671C337.085.197 313.765-6.276 300.99 7.228L256 53.57 211.011 7.229c-12.63-13.351-36.047-7.234-40.325 10.668l-15.984 62.671-61.995-17.667C74.87 57.907 58.056 74.738 63.046 92.572l17.661 62.015-62.65 15.99C.069 174.878-6.31 197.944 7.392 210.915l45.985 45.005-45.985 45.004c-13.708 12.977-7.316 36.039 10.664 40.339l62.65 15.99-17.661 62.015c-4.991 17.838 11.829 34.663 29.661 29.671l61.994-17.667 15.984 62.671c4.439 18.575 27.696 24.018 40.325 10.668L256 458.61l44.989 46.001c12.5 13.488 35.987 7.486 40.325-10.668l15.984-62.671 61.994 17.667c17.836 4.994 34.651-11.837 29.661-29.671l-17.661-62.015 62.65-15.99c17.987-4.302 24.366-27.367 10.664-40.339l-45.984-45.004z\"]\n};\nvar faChair = {\n prefix: 'fas',\n iconName: 'chair',\n icon: [448, 512, [], \"f6c0\", \"M112 128c0-29.5 16.2-55 40-68.9V256h48V48h48v208h48V59.1c23.8 13.9 40 39.4 40 68.9v128h48V128C384 57.3 326.7 0 256 0h-64C121.3 0 64 57.3 64 128v128h48zm334.3 213.9l-10.7-32c-4.4-13.1-16.6-21.9-30.4-21.9H42.7c-13.8 0-26 8.8-30.4 21.9l-10.7 32C-5.2 362.6 10.2 384 32 384v112c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V384h256v112c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V384c21.8 0 37.2-21.4 30.3-42.1z\"]\n};\nvar faChalkboard = {\n prefix: 'fas',\n iconName: 'chalkboard',\n icon: [640, 512, [], \"f51b\", \"M96 64h448v352h64V40c0-22.06-17.94-40-40-40H72C49.94 0 32 17.94 32 40v376h64V64zm528 384H480v-64H288v64H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h608c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16z\"]\n};\nvar faChalkboardTeacher = {\n prefix: 'fas',\n iconName: 'chalkboard-teacher',\n icon: [640, 512, [], \"f51c\", \"M208 352c-2.39 0-4.78.35-7.06 1.09C187.98 357.3 174.35 360 160 360c-14.35 0-27.98-2.7-40.95-6.91-2.28-.74-4.66-1.09-7.05-1.09C49.94 352-.33 402.48 0 464.62.14 490.88 21.73 512 48 512h224c26.27 0 47.86-21.12 48-47.38.33-62.14-49.94-112.62-112-112.62zm-48-32c53.02 0 96-42.98 96-96s-42.98-96-96-96-96 42.98-96 96 42.98 96 96 96zM592 0H208c-26.47 0-48 22.25-48 49.59V96c23.42 0 45.1 6.78 64 17.8V64h352v288h-64v-64H384v64h-76.24c19.1 16.69 33.12 38.73 39.69 64H592c26.47 0 48-22.25 48-49.59V49.59C640 22.25 618.47 0 592 0z\"]\n};\nvar faChargingStation = {\n prefix: 'fas',\n iconName: 'charging-station',\n icon: [576, 512, [], \"f5e7\", \"M336 448H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h320c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zm208-320V80c0-8.84-7.16-16-16-16s-16 7.16-16 16v48h-32V80c0-8.84-7.16-16-16-16s-16 7.16-16 16v48h-16c-8.84 0-16 7.16-16 16v32c0 35.76 23.62 65.69 56 75.93v118.49c0 13.95-9.5 26.92-23.26 29.19C431.22 402.5 416 388.99 416 372v-28c0-48.6-39.4-88-88-88h-8V64c0-35.35-28.65-64-64-64H96C60.65 0 32 28.65 32 64v352h288V304h8c22.09 0 40 17.91 40 40v24.61c0 39.67 28.92 75.16 68.41 79.01C481.71 452.05 520 416.41 520 372V251.93c32.38-10.24 56-40.17 56-75.93v-32c0-8.84-7.16-16-16-16h-16zm-283.91 47.76l-93.7 139c-2.2 3.33-6.21 5.24-10.39 5.24-7.67 0-13.47-6.28-11.67-12.92L167.35 224H108c-7.25 0-12.85-5.59-11.89-11.89l16-107C112.9 99.9 117.98 96 124 96h68c7.88 0 13.62 6.54 11.6 13.21L192 160h57.7c9.24 0 15.01 8.78 10.39 15.76z\"]\n};\nvar faChartArea = {\n prefix: 'fas',\n iconName: 'chart-area',\n icon: [512, 512, [], \"f1fe\", \"M500 384c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12H12c-6.6 0-12-5.4-12-12V76c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v308h436zM372.7 159.5L288 216l-85.3-113.7c-5.1-6.8-15.5-6.3-19.9 1L96 248v104h384l-89.9-187.8c-3.2-6.5-11.4-8.7-17.4-4.7z\"]\n};\nvar faChartBar = {\n prefix: 'fas',\n iconName: 'chart-bar',\n icon: [512, 512, [], \"f080\", \"M332.8 320h38.4c6.4 0 12.8-6.4 12.8-12.8V172.8c0-6.4-6.4-12.8-12.8-12.8h-38.4c-6.4 0-12.8 6.4-12.8 12.8v134.4c0 6.4 6.4 12.8 12.8 12.8zm96 0h38.4c6.4 0 12.8-6.4 12.8-12.8V76.8c0-6.4-6.4-12.8-12.8-12.8h-38.4c-6.4 0-12.8 6.4-12.8 12.8v230.4c0 6.4 6.4 12.8 12.8 12.8zm-288 0h38.4c6.4 0 12.8-6.4 12.8-12.8v-70.4c0-6.4-6.4-12.8-12.8-12.8h-38.4c-6.4 0-12.8 6.4-12.8 12.8v70.4c0 6.4 6.4 12.8 12.8 12.8zm96 0h38.4c6.4 0 12.8-6.4 12.8-12.8V108.8c0-6.4-6.4-12.8-12.8-12.8h-38.4c-6.4 0-12.8 6.4-12.8 12.8v198.4c0 6.4 6.4 12.8 12.8 12.8zM496 384H64V80c0-8.84-7.16-16-16-16H16C7.16 64 0 71.16 0 80v336c0 17.67 14.33 32 32 32h464c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16z\"]\n};\nvar faChartLine = {\n prefix: 'fas',\n iconName: 'chart-line',\n icon: [512, 512, [], \"f201\", \"M496 384H64V80c0-8.84-7.16-16-16-16H16C7.16 64 0 71.16 0 80v336c0 17.67 14.33 32 32 32h464c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zM464 96H345.94c-21.38 0-32.09 25.85-16.97 40.97l32.4 32.4L288 242.75l-73.37-73.37c-12.5-12.5-32.76-12.5-45.25 0l-68.69 68.69c-6.25 6.25-6.25 16.38 0 22.63l22.62 22.62c6.25 6.25 16.38 6.25 22.63 0L192 237.25l73.37 73.37c12.5 12.5 32.76 12.5 45.25 0l96-96 32.4 32.4c15.12 15.12 40.97 4.41 40.97-16.97V112c.01-8.84-7.15-16-15.99-16z\"]\n};\nvar faChartPie = {\n prefix: 'fas',\n iconName: 'chart-pie',\n icon: [544, 512, [], \"f200\", \"M527.79 288H290.5l158.03 158.03c6.04 6.04 15.98 6.53 22.19.68 38.7-36.46 65.32-85.61 73.13-140.86 1.34-9.46-6.51-17.85-16.06-17.85zm-15.83-64.8C503.72 103.74 408.26 8.28 288.8.04 279.68-.59 272 7.1 272 16.24V240h223.77c9.14 0 16.82-7.68 16.19-16.8zM224 288V50.71c0-9.55-8.39-17.4-17.84-16.06C86.99 51.49-4.1 155.6.14 280.37 4.5 408.51 114.83 513.59 243.03 511.98c50.4-.63 96.97-16.87 135.26-44.03 7.9-5.6 8.42-17.23 1.57-24.08L224 288z\"]\n};\nvar faCheck = {\n prefix: 'fas',\n iconName: 'check',\n icon: [512, 512, [], \"f00c\", \"M173.898 439.404l-166.4-166.4c-9.997-9.997-9.997-26.206 0-36.204l36.203-36.204c9.997-9.998 26.207-9.998 36.204 0L192 312.69 432.095 72.596c9.997-9.997 26.207-9.997 36.204 0l36.203 36.204c9.997 9.997 9.997 26.206 0 36.204l-294.4 294.401c-9.998 9.997-26.207 9.997-36.204-.001z\"]\n};\nvar faCheckCircle = {\n prefix: 'fas',\n iconName: 'check-circle',\n icon: [512, 512, [], \"f058\", \"M504 256c0 136.967-111.033 248-248 248S8 392.967 8 256 119.033 8 256 8s248 111.033 248 248zM227.314 387.314l184-184c6.248-6.248 6.248-16.379 0-22.627l-22.627-22.627c-6.248-6.249-16.379-6.249-22.628 0L216 308.118l-70.059-70.059c-6.248-6.248-16.379-6.248-22.628 0l-22.627 22.627c-6.248 6.248-6.248 16.379 0 22.627l104 104c6.249 6.249 16.379 6.249 22.628.001z\"]\n};\nvar faCheckDouble = {\n prefix: 'fas',\n iconName: 'check-double',\n icon: [512, 512, [], \"f560\", \"M505 174.8l-39.6-39.6c-9.4-9.4-24.6-9.4-33.9 0L192 374.7 80.6 263.2c-9.4-9.4-24.6-9.4-33.9 0L7 302.9c-9.4 9.4-9.4 24.6 0 34L175 505c9.4 9.4 24.6 9.4 33.9 0l296-296.2c9.4-9.5 9.4-24.7.1-34zm-324.3 106c6.2 6.3 16.4 6.3 22.6 0l208-208.2c6.2-6.3 6.2-16.4 0-22.6L366.1 4.7c-6.2-6.3-16.4-6.3-22.6 0L192 156.2l-55.4-55.5c-6.2-6.3-16.4-6.3-22.6 0L68.7 146c-6.2 6.3-6.2 16.4 0 22.6l112 112.2z\"]\n};\nvar faCheckSquare = {\n prefix: 'fas',\n iconName: 'check-square',\n icon: [448, 512, [], \"f14a\", \"M400 480H48c-26.51 0-48-21.49-48-48V80c0-26.51 21.49-48 48-48h352c26.51 0 48 21.49 48 48v352c0 26.51-21.49 48-48 48zm-204.686-98.059l184-184c6.248-6.248 6.248-16.379 0-22.627l-22.627-22.627c-6.248-6.248-16.379-6.249-22.628 0L184 302.745l-70.059-70.059c-6.248-6.248-16.379-6.248-22.628 0l-22.627 22.627c-6.248 6.248-6.248 16.379 0 22.627l104 104c6.249 6.25 16.379 6.25 22.628.001z\"]\n};\nvar faCheese = {\n prefix: 'fas',\n iconName: 'cheese',\n icon: [512, 512, [], \"f7ef\", \"M0 288v160a32 32 0 0 0 32 32h448a32 32 0 0 0 32-32V288zM299.83 32a32 32 0 0 0-21.13 7L0 256h512c0-119.89-94-217.8-212.17-224z\"]\n};\nvar faChess = {\n prefix: 'fas',\n iconName: 'chess',\n icon: [512, 512, [], \"f439\", \"M74 208H64a16 16 0 0 0-16 16v16a16 16 0 0 0 16 16h15.94A535.78 535.78 0 0 1 64 384h128a535.78 535.78 0 0 1-15.94-128H192a16 16 0 0 0 16-16v-16a16 16 0 0 0-16-16h-10l33.89-90.38a16 16 0 0 0-15-21.62H144V64h24a8 8 0 0 0 8-8V40a8 8 0 0 0-8-8h-24V8a8 8 0 0 0-8-8h-16a8 8 0 0 0-8 8v24H88a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h24v32H55.09a16 16 0 0 0-15 21.62zm173.16 251.58L224 448v-16a16 16 0 0 0-16-16H48a16 16 0 0 0-16 16v16L8.85 459.58A16 16 0 0 0 0 473.89V496a16 16 0 0 0 16 16h224a16 16 0 0 0 16-16v-22.11a16 16 0 0 0-8.84-14.31zm92.77-157.78l-3.29 82.2h126.72l-3.29-82.21 24.6-20.79A32 32 0 0 0 496 256.54V198a6 6 0 0 0-6-6h-26.38a6 6 0 0 0-6 6v26h-24.71v-26a6 6 0 0 0-6-6H373.1a6 6 0 0 0-6 6v26h-24.71v-26a6 6 0 0 0-6-6H310a6 6 0 0 0-6 6v58.6a32 32 0 0 0 11.36 24.4zM384 304a16 16 0 0 1 32 0v32h-32zm119.16 155.58L480 448v-16a16 16 0 0 0-16-16H336a16 16 0 0 0-16 16v16l-23.15 11.58a16 16 0 0 0-8.85 14.31V496a16 16 0 0 0 16 16h192a16 16 0 0 0 16-16v-22.11a16 16 0 0 0-8.84-14.31z\"]\n};\nvar faChessBishop = {\n prefix: 'fas',\n iconName: 'chess-bishop',\n icon: [320, 512, [], \"f43a\", \"M8 287.88c0 51.64 22.14 73.83 56 84.6V416h192v-43.52c33.86-10.77 56-33 56-84.6 0-30.61-10.73-67.1-26.69-102.56L185 285.65a8 8 0 0 1-11.31 0l-11.31-11.31a8 8 0 0 1 0-11.31L270.27 155.1c-20.8-37.91-46.47-72.1-70.87-92.59C213.4 59.09 224 47.05 224 32a32 32 0 0 0-32-32h-64a32 32 0 0 0-32 32c0 15 10.6 27.09 24.6 30.51C67.81 106.8 8 214.5 8 287.88zM304 448H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h288a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z\"]\n};\nvar faChessBoard = {\n prefix: 'fas',\n iconName: 'chess-board',\n icon: [512, 512, [], \"f43c\", \"M255.9.2h-64v64h64zM0 64.17v64h64v-64zM128 .2H64v64h64zm64 255.9v64h64v-64zM0 192.12v64h64v-64zM383.85.2h-64v64h64zm128 0h-64v64h64zM128 256.1H64v64h64zM511.8 448v-64h-64v64zm0-128v-64h-64v64zM383.85 512h64v-64h-64zm128-319.88v-64h-64v64zM128 512h64v-64h-64zM0 512h64v-64H0zm255.9 0h64v-64h-64zM0 320.07v64h64v-64zm319.88-191.92v-64h-64v64zm-64 128h64v-64h-64zm-64 128v64h64v-64zm128-64h64v-64h-64zm0-127.95h64v-64h-64zm0 191.93v64h64v-64zM64 384.05v64h64v-64zm128-255.9v-64h-64v64zm191.92 255.9h64v-64h-64zm-128-191.93v-64h-64v64zm128-127.95v64h64v-64zm-128 255.9v64h64v-64zm-64-127.95H128v64h64zm191.92 64h64v-64h-64zM128 128.15H64v64h64zm0 191.92v64h64v-64z\"]\n};\nvar faChessKing = {\n prefix: 'fas',\n iconName: 'chess-king',\n icon: [448, 512, [], \"f43f\", \"M400 448H48a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h352a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm16-288H256v-48h40a8 8 0 0 0 8-8V56a8 8 0 0 0-8-8h-40V8a8 8 0 0 0-8-8h-48a8 8 0 0 0-8 8v40h-40a8 8 0 0 0-8 8v48a8 8 0 0 0 8 8h40v48H32a32 32 0 0 0-30.52 41.54L74.56 416h298.88l73.08-214.46A32 32 0 0 0 416 160z\"]\n};\nvar faChessKnight = {\n prefix: 'fas',\n iconName: 'chess-knight',\n icon: [384, 512, [], \"f441\", \"M19 272.47l40.63 18.06a32 32 0 0 0 24.88.47l12.78-5.12a32 32 0 0 0 18.76-20.5l9.22-30.65a24 24 0 0 1 12.55-15.65L159.94 208v50.33a48 48 0 0 1-26.53 42.94l-57.22 28.65A80 80 0 0 0 32 401.48V416h319.86V224c0-106-85.92-192-191.92-192H12A12 12 0 0 0 0 44a16.9 16.9 0 0 0 1.79 7.58L16 80l-9 9a24 24 0 0 0-7 17v137.21a32 32 0 0 0 19 29.26zM52 128a20 20 0 1 1-20 20 20 20 0 0 1 20-20zm316 320H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h352a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z\"]\n};\nvar faChessPawn = {\n prefix: 'fas',\n iconName: 'chess-pawn',\n icon: [320, 512, [], \"f443\", \"M105.1 224H80a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h16v5.49c0 44-4.14 86.6-24 122.51h176c-19.89-35.91-24-78.51-24-122.51V288h16a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-25.1c29.39-18.38 49.1-50.78 49.1-88a104 104 0 0 0-208 0c0 37.22 19.71 69.62 49.1 88zM304 448H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h288a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z\"]\n};\nvar faChessQueen = {\n prefix: 'fas',\n iconName: 'chess-queen',\n icon: [512, 512, [], \"f445\", \"M256 112a56 56 0 1 0-56-56 56 56 0 0 0 56 56zm176 336H80a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h352a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm72.87-263.84l-28.51-15.92c-7.44-5-16.91-2.46-22.29 4.68a47.59 47.59 0 0 1-47.23 18.23C383.7 186.86 368 164.93 368 141.4a13.4 13.4 0 0 0-13.4-13.4h-38.77c-6 0-11.61 4-12.86 9.91a48 48 0 0 1-93.94 0c-1.25-5.92-6.82-9.91-12.86-9.91H157.4a13.4 13.4 0 0 0-13.4 13.4c0 25.69-19 48.75-44.67 50.49a47.5 47.5 0 0 1-41.54-19.15c-5.28-7.09-14.73-9.45-22.09-4.54l-28.57 16a16 16 0 0 0-5.44 20.47L104.24 416h303.52l102.55-211.37a16 16 0 0 0-5.44-20.47z\"]\n};\nvar faChessRook = {\n prefix: 'fas',\n iconName: 'chess-rook',\n icon: [384, 512, [], \"f447\", \"M368 32h-56a16 16 0 0 0-16 16v48h-48V48a16 16 0 0 0-16-16h-80a16 16 0 0 0-16 16v48H88.1V48a16 16 0 0 0-16-16H16A16 16 0 0 0 0 48v176l64 32c0 48.33-1.54 95-13.21 160h282.42C321.54 351 320 303.72 320 256l64-32V48a16 16 0 0 0-16-16zM224 320h-64v-64a32 32 0 0 1 64 0zm144 128H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h352a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z\"]\n};\nvar faChevronCircleDown = {\n prefix: 'fas',\n iconName: 'chevron-circle-down',\n icon: [512, 512, [], \"f13a\", \"M504 256c0 137-111 248-248 248S8 393 8 256 119 8 256 8s248 111 248 248zM273 369.9l135.5-135.5c9.4-9.4 9.4-24.6 0-33.9l-17-17c-9.4-9.4-24.6-9.4-33.9 0L256 285.1 154.4 183.5c-9.4-9.4-24.6-9.4-33.9 0l-17 17c-9.4 9.4-9.4 24.6 0 33.9L239 369.9c9.4 9.4 24.6 9.4 34 0z\"]\n};\nvar faChevronCircleLeft = {\n prefix: 'fas',\n iconName: 'chevron-circle-left',\n icon: [512, 512, [], \"f137\", \"M256 504C119 504 8 393 8 256S119 8 256 8s248 111 248 248-111 248-248 248zM142.1 273l135.5 135.5c9.4 9.4 24.6 9.4 33.9 0l17-17c9.4-9.4 9.4-24.6 0-33.9L226.9 256l101.6-101.6c9.4-9.4 9.4-24.6 0-33.9l-17-17c-9.4-9.4-24.6-9.4-33.9 0L142.1 239c-9.4 9.4-9.4 24.6 0 34z\"]\n};\nvar faChevronCircleRight = {\n prefix: 'fas',\n iconName: 'chevron-circle-right',\n icon: [512, 512, [], \"f138\", \"M256 8c137 0 248 111 248 248S393 504 256 504 8 393 8 256 119 8 256 8zm113.9 231L234.4 103.5c-9.4-9.4-24.6-9.4-33.9 0l-17 17c-9.4 9.4-9.4 24.6 0 33.9L285.1 256 183.5 357.6c-9.4 9.4-9.4 24.6 0 33.9l17 17c9.4 9.4 24.6 9.4 33.9 0L369.9 273c9.4-9.4 9.4-24.6 0-34z\"]\n};\nvar faChevronCircleUp = {\n prefix: 'fas',\n iconName: 'chevron-circle-up',\n icon: [512, 512, [], \"f139\", \"M8 256C8 119 119 8 256 8s248 111 248 248-111 248-248 248S8 393 8 256zm231-113.9L103.5 277.6c-9.4 9.4-9.4 24.6 0 33.9l17 17c9.4 9.4 24.6 9.4 33.9 0L256 226.9l101.6 101.6c9.4 9.4 24.6 9.4 33.9 0l17-17c9.4-9.4 9.4-24.6 0-33.9L273 142.1c-9.4-9.4-24.6-9.4-34 0z\"]\n};\nvar faChevronDown = {\n prefix: 'fas',\n iconName: 'chevron-down',\n icon: [448, 512, [], \"f078\", \"M207.029 381.476L12.686 187.132c-9.373-9.373-9.373-24.569 0-33.941l22.667-22.667c9.357-9.357 24.522-9.375 33.901-.04L224 284.505l154.745-154.021c9.379-9.335 24.544-9.317 33.901.04l22.667 22.667c9.373 9.373 9.373 24.569 0 33.941L240.971 381.476c-9.373 9.372-24.569 9.372-33.942 0z\"]\n};\nvar faChevronLeft = {\n prefix: 'fas',\n iconName: 'chevron-left',\n icon: [320, 512, [], \"f053\", \"M34.52 239.03L228.87 44.69c9.37-9.37 24.57-9.37 33.94 0l22.67 22.67c9.36 9.36 9.37 24.52.04 33.9L131.49 256l154.02 154.75c9.34 9.38 9.32 24.54-.04 33.9l-22.67 22.67c-9.37 9.37-24.57 9.37-33.94 0L34.52 272.97c-9.37-9.37-9.37-24.57 0-33.94z\"]\n};\nvar faChevronRight = {\n prefix: 'fas',\n iconName: 'chevron-right',\n icon: [320, 512, [], \"f054\", \"M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z\"]\n};\nvar faChevronUp = {\n prefix: 'fas',\n iconName: 'chevron-up',\n icon: [448, 512, [], \"f077\", \"M240.971 130.524l194.343 194.343c9.373 9.373 9.373 24.569 0 33.941l-22.667 22.667c-9.357 9.357-24.522 9.375-33.901.04L224 227.495 69.255 381.516c-9.379 9.335-24.544 9.317-33.901-.04l-22.667-22.667c-9.373-9.373-9.373-24.569 0-33.941L207.03 130.525c9.372-9.373 24.568-9.373 33.941-.001z\"]\n};\nvar faChild = {\n prefix: 'fas',\n iconName: 'child',\n icon: [384, 512, [], \"f1ae\", \"M120 72c0-39.765 32.235-72 72-72s72 32.235 72 72c0 39.764-32.235 72-72 72s-72-32.236-72-72zm254.627 1.373c-12.496-12.497-32.758-12.497-45.254 0L242.745 160H141.254L54.627 73.373c-12.496-12.497-32.758-12.497-45.254 0-12.497 12.497-12.497 32.758 0 45.255L104 213.254V480c0 17.673 14.327 32 32 32h16c17.673 0 32-14.327 32-32V368h16v112c0 17.673 14.327 32 32 32h16c17.673 0 32-14.327 32-32V213.254l94.627-94.627c12.497-12.497 12.497-32.757 0-45.254z\"]\n};\nvar faChurch = {\n prefix: 'fas',\n iconName: 'church',\n icon: [640, 512, [], \"f51d\", \"M464.46 246.68L352 179.2V128h48c8.84 0 16-7.16 16-16V80c0-8.84-7.16-16-16-16h-48V16c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v48h-48c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h48v51.2l-112.46 67.48A31.997 31.997 0 0 0 160 274.12V512h96v-96c0-35.35 28.65-64 64-64s64 28.65 64 64v96h96V274.12c0-11.24-5.9-21.66-15.54-27.44zM0 395.96V496c0 8.84 7.16 16 16 16h112V320L19.39 366.54A32.024 32.024 0 0 0 0 395.96zm620.61-29.42L512 320v192h112c8.84 0 16-7.16 16-16V395.96c0-12.8-7.63-24.37-19.39-29.42z\"]\n};\nvar faCircle = {\n prefix: 'fas',\n iconName: 'circle',\n icon: [512, 512, [], \"f111\", \"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8z\"]\n};\nvar faCircleNotch = {\n prefix: 'fas',\n iconName: 'circle-notch',\n icon: [512, 512, [], \"f1ce\", \"M288 39.056v16.659c0 10.804 7.281 20.159 17.686 23.066C383.204 100.434 440 171.518 440 256c0 101.689-82.295 184-184 184-101.689 0-184-82.295-184-184 0-84.47 56.786-155.564 134.312-177.219C216.719 75.874 224 66.517 224 55.712V39.064c0-15.709-14.834-27.153-30.046-23.234C86.603 43.482 7.394 141.206 8.003 257.332c.72 137.052 111.477 246.956 248.531 246.667C393.255 503.711 504 392.788 504 256c0-115.633-79.14-212.779-186.211-240.236C302.678 11.889 288 23.456 288 39.056z\"]\n};\nvar faCity = {\n prefix: 'fas',\n iconName: 'city',\n icon: [640, 512, [], \"f64f\", \"M616 192H480V24c0-13.26-10.74-24-24-24H312c-13.26 0-24 10.74-24 24v72h-64V16c0-8.84-7.16-16-16-16h-16c-8.84 0-16 7.16-16 16v80h-64V16c0-8.84-7.16-16-16-16H80c-8.84 0-16 7.16-16 16v80H24c-13.26 0-24 10.74-24 24v360c0 17.67 14.33 32 32 32h576c17.67 0 32-14.33 32-32V216c0-13.26-10.75-24-24-24zM128 404c0 6.63-5.37 12-12 12H76c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm0-96c0 6.63-5.37 12-12 12H76c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm0-96c0 6.63-5.37 12-12 12H76c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm128 192c0 6.63-5.37 12-12 12h-40c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm0-96c0 6.63-5.37 12-12 12h-40c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm0-96c0 6.63-5.37 12-12 12h-40c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm160 96c0 6.63-5.37 12-12 12h-40c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm0-96c0 6.63-5.37 12-12 12h-40c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm0-96c0 6.63-5.37 12-12 12h-40c-6.63 0-12-5.37-12-12V76c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm160 288c0 6.63-5.37 12-12 12h-40c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40zm0-96c0 6.63-5.37 12-12 12h-40c-6.63 0-12-5.37-12-12v-40c0-6.63 5.37-12 12-12h40c6.63 0 12 5.37 12 12v40z\"]\n};\nvar faClinicMedical = {\n prefix: 'fas',\n iconName: 'clinic-medical',\n icon: [576, 512, [], \"f7f2\", \"M288 115L69.47 307.71c-1.62 1.46-3.69 2.14-5.47 3.35V496a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V311.1c-1.7-1.16-3.72-1.82-5.26-3.2zm96 261a8 8 0 0 1-8 8h-56v56a8 8 0 0 1-8 8h-48a8 8 0 0 1-8-8v-56h-56a8 8 0 0 1-8-8v-48a8 8 0 0 1 8-8h56v-56a8 8 0 0 1 8-8h48a8 8 0 0 1 8 8v56h56a8 8 0 0 1 8 8zm186.69-139.72l-255.94-226a39.85 39.85 0 0 0-53.45 0l-256 226a16 16 0 0 0-1.21 22.6L25.5 282.7a16 16 0 0 0 22.6 1.21L277.42 81.63a16 16 0 0 1 21.17 0L527.91 283.9a16 16 0 0 0 22.6-1.21l21.4-23.82a16 16 0 0 0-1.22-22.59z\"]\n};\nvar faClipboard = {\n prefix: 'fas',\n iconName: 'clipboard',\n icon: [384, 512, [], \"f328\", \"M384 112v352c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V112c0-26.51 21.49-48 48-48h80c0-35.29 28.71-64 64-64s64 28.71 64 64h80c26.51 0 48 21.49 48 48zM192 40c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24m96 114v-20a6 6 0 0 0-6-6H102a6 6 0 0 0-6 6v20a6 6 0 0 0 6 6h180a6 6 0 0 0 6-6z\"]\n};\nvar faClipboardCheck = {\n prefix: 'fas',\n iconName: 'clipboard-check',\n icon: [384, 512, [], \"f46c\", \"M336 64h-80c0-35.3-28.7-64-64-64s-64 28.7-64 64H48C21.5 64 0 85.5 0 112v352c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zM192 40c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm121.2 231.8l-143 141.8c-4.7 4.7-12.3 4.6-17-.1l-82.6-83.3c-4.7-4.7-4.6-12.3.1-17L99.1 285c4.7-4.7 12.3-4.6 17 .1l46 46.4 106-105.2c4.7-4.7 12.3-4.6 17 .1l28.2 28.4c4.7 4.8 4.6 12.3-.1 17z\"]\n};\nvar faClipboardList = {\n prefix: 'fas',\n iconName: 'clipboard-list',\n icon: [384, 512, [], \"f46d\", \"M336 64h-80c0-35.3-28.7-64-64-64s-64 28.7-64 64H48C21.5 64 0 85.5 0 112v352c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zM96 424c-13.3 0-24-10.7-24-24s10.7-24 24-24 24 10.7 24 24-10.7 24-24 24zm0-96c-13.3 0-24-10.7-24-24s10.7-24 24-24 24 10.7 24 24-10.7 24-24 24zm0-96c-13.3 0-24-10.7-24-24s10.7-24 24-24 24 10.7 24 24-10.7 24-24 24zm96-192c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm128 368c0 4.4-3.6 8-8 8H168c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16zm0-96c0 4.4-3.6 8-8 8H168c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16zm0-96c0 4.4-3.6 8-8 8H168c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16z\"]\n};\nvar faClock = {\n prefix: 'fas',\n iconName: 'clock',\n icon: [512, 512, [], \"f017\", \"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm57.1 350.1L224.9 294c-3.1-2.3-4.9-5.9-4.9-9.7V116c0-6.6 5.4-12 12-12h48c6.6 0 12 5.4 12 12v137.7l63.5 46.2c5.4 3.9 6.5 11.4 2.6 16.8l-28.2 38.8c-3.9 5.3-11.4 6.5-16.8 2.6z\"]\n};\nvar faClone = {\n prefix: 'fas',\n iconName: 'clone',\n icon: [512, 512, [], \"f24d\", \"M464 0c26.51 0 48 21.49 48 48v288c0 26.51-21.49 48-48 48H176c-26.51 0-48-21.49-48-48V48c0-26.51 21.49-48 48-48h288M176 416c-44.112 0-80-35.888-80-80V128H48c-26.51 0-48 21.49-48 48v288c0 26.51 21.49 48 48 48h288c26.51 0 48-21.49 48-48v-48H176z\"]\n};\nvar faClosedCaptioning = {\n prefix: 'fas',\n iconName: 'closed-captioning',\n icon: [512, 512, [], \"f20a\", \"M464 64H48C21.5 64 0 85.5 0 112v288c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zM218.1 287.7c2.8-2.5 7.1-2.1 9.2.9l19.5 27.7c1.7 2.4 1.5 5.6-.5 7.7-53.6 56.8-172.8 32.1-172.8-67.9 0-97.3 121.7-119.5 172.5-70.1 2.1 2 2.5 3.2 1 5.7l-17.5 30.5c-1.9 3.1-6.2 4-9.1 1.7-40.8-32-94.6-14.9-94.6 31.2.1 48 51.1 70.5 92.3 32.6zm190.4 0c2.8-2.5 7.1-2.1 9.2.9l19.5 27.7c1.7 2.4 1.5 5.6-.5 7.7-53.5 56.9-172.7 32.1-172.7-67.9 0-97.3 121.7-119.5 172.5-70.1 2.1 2 2.5 3.2 1 5.7L420 222.2c-1.9 3.1-6.2 4-9.1 1.7-40.8-32-94.6-14.9-94.6 31.2 0 48 51 70.5 92.2 32.6z\"]\n};\nvar faCloud = {\n prefix: 'fas',\n iconName: 'cloud',\n icon: [640, 512, [], \"f0c2\", \"M537.6 226.6c4.1-10.7 6.4-22.4 6.4-34.6 0-53-43-96-96-96-19.7 0-38.1 6-53.3 16.2C367 64.2 315.3 32 256 32c-88.4 0-160 71.6-160 160 0 2.7.1 5.4.2 8.1C40.2 219.8 0 273.2 0 336c0 79.5 64.5 144 144 144h368c70.7 0 128-57.3 128-128 0-61.9-44-113.6-102.4-125.4z\"]\n};\nvar faCloudDownloadAlt = {\n prefix: 'fas',\n iconName: 'cloud-download-alt',\n icon: [640, 512, [], \"f381\", \"M537.6 226.6c4.1-10.7 6.4-22.4 6.4-34.6 0-53-43-96-96-96-19.7 0-38.1 6-53.3 16.2C367 64.2 315.3 32 256 32c-88.4 0-160 71.6-160 160 0 2.7.1 5.4.2 8.1C40.2 219.8 0 273.2 0 336c0 79.5 64.5 144 144 144h368c70.7 0 128-57.3 128-128 0-61.9-44-113.6-102.4-125.4zm-132.9 88.7L299.3 420.7c-6.2 6.2-16.4 6.2-22.6 0L171.3 315.3c-10.1-10.1-2.9-27.3 11.3-27.3H248V176c0-8.8 7.2-16 16-16h48c8.8 0 16 7.2 16 16v112h65.4c14.2 0 21.4 17.2 11.3 27.3z\"]\n};\nvar faCloudMeatball = {\n prefix: 'fas',\n iconName: 'cloud-meatball',\n icon: [512, 512, [], \"f73b\", \"M48 352c-26.5 0-48 21.5-48 48s21.5 48 48 48 48-21.5 48-48-21.5-48-48-48zm416 0c-26.5 0-48 21.5-48 48s21.5 48 48 48 48-21.5 48-48-21.5-48-48-48zm-119 11.1c4.6-14.5 1.6-30.8-9.8-42.3-11.5-11.5-27.8-14.4-42.3-9.9-7-13.5-20.7-23-36.9-23s-29.9 9.5-36.9 23c-14.5-4.6-30.8-1.6-42.3 9.9-11.5 11.5-14.4 27.8-9.9 42.3-13.5 7-23 20.7-23 36.9s9.5 29.9 23 36.9c-4.6 14.5-1.6 30.8 9.9 42.3 8.2 8.2 18.9 12.3 29.7 12.3 4.3 0 8.5-1.1 12.6-2.5 7 13.5 20.7 23 36.9 23s29.9-9.5 36.9-23c4.1 1.3 8.3 2.5 12.6 2.5 10.8 0 21.5-4.1 29.7-12.3 11.5-11.5 14.4-27.8 9.8-42.3 13.5-7 23-20.7 23-36.9s-9.5-29.9-23-36.9zM512 224c0-53-43-96-96-96-.6 0-1.1.2-1.6.2 1.1-5.2 1.6-10.6 1.6-16.2 0-44.2-35.8-80-80-80-24.6 0-46.3 11.3-61 28.8C256.4 24.8 219.3 0 176 0 114.1 0 64 50.1 64 112c0 7.3.8 14.3 2.1 21.2C27.8 145.8 0 181.5 0 224c0 53 43 96 96 96h43.4c3.6-8 8.4-15.4 14.8-21.8 13.5-13.5 31.5-21.1 50.8-21.3 13.5-13.2 31.7-20.9 51-20.9s37.5 7.7 51 20.9c19.3.2 37.3 7.8 50.8 21.3 6.4 6.4 11.3 13.8 14.8 21.8H416c53 0 96-43 96-96z\"]\n};\nvar faCloudMoon = {\n prefix: 'fas',\n iconName: 'cloud-moon',\n icon: [576, 512, [], \"f6c3\", \"M342.8 352.7c5.7-9.6 9.2-20.7 9.2-32.7 0-35.3-28.7-64-64-64-17.2 0-32.8 6.9-44.3 17.9-16.3-29.6-47.5-49.9-83.7-49.9-53 0-96 43-96 96 0 2 .5 3.8.6 5.7C27.1 338.8 0 374.1 0 416c0 53 43 96 96 96h240c44.2 0 80-35.8 80-80 0-41.9-32.3-75.8-73.2-79.3zm222.5-54.3c-93.1 17.7-178.5-53.7-178.5-147.7 0-54.2 29-104 76.1-130.8 7.3-4.1 5.4-15.1-2.8-16.7C448.4 1.1 436.7 0 425 0 319.1 0 233.1 85.9 233.1 192c0 8.5.7 16.8 1.8 25 5.9 4.3 11.6 8.9 16.7 14.2 11.4-4.7 23.7-7.2 36.4-7.2 52.9 0 96 43.1 96 96 0 3.6-.2 7.2-.6 10.7 23.6 10.8 42.4 29.5 53.5 52.6 54.4-3.4 103.7-29.3 137.1-70.4 5.3-6.5-.5-16.1-8.7-14.5z\"]\n};\nvar faCloudMoonRain = {\n prefix: 'fas',\n iconName: 'cloud-moon-rain',\n icon: [576, 512, [], \"f73c\", \"M350.5 225.5c-6.9-37.2-39.3-65.5-78.5-65.5-12.3 0-23.9 3-34.3 8-17.4-24.1-45.6-40-77.7-40-53 0-96 43-96 96 0 .5.2 1.1.2 1.6C27.6 232.9 0 265.2 0 304c0 44.2 35.8 80 80 80h256c44.2 0 80-35.8 80-80 0-39.2-28.2-71.7-65.5-78.5zm217.4-1.7c-70.4 13.3-135-40.3-135-110.8 0-40.6 21.9-78 57.5-98.1 5.5-3.1 4.1-11.4-2.1-12.5C479.6.8 470.7 0 461.8 0c-77.9 0-141.1 61.2-144.4 137.9 26.7 11.9 48.2 33.8 58.9 61.7 37.1 14.3 64 47.4 70.2 86.8 5.1.5 10 1.5 15.2 1.5 44.7 0 85.6-20.2 112.6-53.3 4.2-4.8-.2-12-6.4-10.8zM364.5 418.1c-7.6-4.3-17.4-1.8-21.8 6l-36.6 64c-4.4 7.7-1.7 17.4 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l36.6-64c4.3-7.7 1.7-17.4-6-21.8zm-96 0c-7.6-4.3-17.4-1.8-21.8 6l-36.6 64c-4.4 7.7-1.7 17.4 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l36.6-64c4.3-7.7 1.7-17.4-6-21.8zm-96 0c-7.6-4.3-17.4-1.8-21.8 6l-36.6 64c-4.4 7.7-1.7 17.4 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l36.6-64c4.3-7.7 1.7-17.4-6-21.8zm-96 0c-7.6-4.3-17.4-1.8-21.8 6l-36.6 64c-4.4 7.7-1.7 17.4 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l36.6-64c4.3-7.7 1.7-17.4-6-21.8z\"]\n};\nvar faCloudRain = {\n prefix: 'fas',\n iconName: 'cloud-rain',\n icon: [512, 512, [], \"f73d\", \"M416 128c-.6 0-1.1.2-1.6.2 1.1-5.2 1.6-10.6 1.6-16.2 0-44.2-35.8-80-80-80-24.6 0-46.3 11.3-61 28.8C256.4 24.8 219.3 0 176 0 114.1 0 64 50.1 64 112c0 7.3.8 14.3 2.1 21.2C27.8 145.8 0 181.5 0 224c0 53 43 96 96 96h320c53 0 96-43 96-96s-43-96-96-96zM88 374.2c-12.8 44.4-40 56.4-40 87.7 0 27.7 21.5 50.1 48 50.1s48-22.4 48-50.1c0-31.4-27.2-43.1-40-87.7-2.2-8.1-13.5-8.5-16 0zm160 0c-12.8 44.4-40 56.4-40 87.7 0 27.7 21.5 50.1 48 50.1s48-22.4 48-50.1c0-31.4-27.2-43.1-40-87.7-2.2-8.1-13.5-8.5-16 0zm160 0c-12.8 44.4-40 56.4-40 87.7 0 27.7 21.5 50.1 48 50.1s48-22.4 48-50.1c0-31.4-27.2-43.1-40-87.7-2.2-8.1-13.5-8.5-16 0z\"]\n};\nvar faCloudShowersHeavy = {\n prefix: 'fas',\n iconName: 'cloud-showers-heavy',\n icon: [512, 512, [], \"f740\", \"M183.9 370.1c-7.6-4.4-17.4-1.8-21.8 6l-64 112c-4.4 7.7-1.7 17.5 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l64-112c4.4-7.6 1.7-17.4-6-21.8zm96 0c-7.6-4.4-17.4-1.8-21.8 6l-64 112c-4.4 7.7-1.7 17.5 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l64-112c4.4-7.6 1.7-17.4-6-21.8zm-192 0c-7.6-4.4-17.4-1.8-21.8 6l-64 112c-4.4 7.7-1.7 17.5 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l64-112c4.4-7.6 1.7-17.4-6-21.8zm384 0c-7.6-4.4-17.4-1.8-21.8 6l-64 112c-4.4 7.7-1.7 17.5 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l64-112c4.4-7.6 1.7-17.4-6-21.8zm-96 0c-7.6-4.4-17.4-1.8-21.8 6l-64 112c-4.4 7.7-1.7 17.5 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l64-112c4.4-7.6 1.7-17.4-6-21.8zM416 128c-.6 0-1.1.2-1.6.2 1.1-5.2 1.6-10.6 1.6-16.2 0-44.2-35.8-80-80-80-24.6 0-46.3 11.3-61 28.8C256.4 24.8 219.3 0 176 0 114.2 0 64 50.1 64 112c0 7.3.8 14.3 2.1 21.2C27.8 145.8 0 181.5 0 224c0 53 43 96 96 96h320c53 0 96-43 96-96s-43-96-96-96z\"]\n};\nvar faCloudSun = {\n prefix: 'fas',\n iconName: 'cloud-sun',\n icon: [640, 512, [], \"f6c4\", \"M575.2 325.7c.2-1.9.8-3.7.8-5.6 0-35.3-28.7-64-64-64-12.6 0-24.2 3.8-34.1 10-17.6-38.8-56.5-66-101.9-66-61.8 0-112 50.1-112 112 0 3 .7 5.8.9 8.7-49.6 3.7-88.9 44.7-88.9 95.3 0 53 43 96 96 96h272c53 0 96-43 96-96 0-42.1-27.2-77.4-64.8-90.4zm-430.4-22.6c-43.7-43.7-43.7-114.7 0-158.3 43.7-43.7 114.7-43.7 158.4 0 9.7 9.7 16.9 20.9 22.3 32.7 9.8-3.7 20.1-6 30.7-7.5L386 81.1c4-11.9-7.3-23.1-19.2-19.2L279 91.2 237.5 8.4C232-2.8 216-2.8 210.4 8.4L169 91.2 81.1 61.9C69.3 58 58 69.3 61.9 81.1l29.3 87.8-82.8 41.5c-11.2 5.6-11.2 21.5 0 27.1l82.8 41.4-29.3 87.8c-4 11.9 7.3 23.1 19.2 19.2l76.1-25.3c6.1-12.4 14-23.7 23.6-33.5-13.1-5.4-25.4-13.4-36-24zm-4.8-79.2c0 40.8 29.3 74.8 67.9 82.3 8-4.7 16.3-8.8 25.2-11.7 5.4-44.3 31-82.5 67.4-105C287.3 160.4 258 140 224 140c-46.3 0-84 37.6-84 83.9z\"]\n};\nvar faCloudSunRain = {\n prefix: 'fas',\n iconName: 'cloud-sun-rain',\n icon: [576, 512, [], \"f743\", \"M510.5 225.5c-6.9-37.2-39.3-65.5-78.5-65.5-12.3 0-23.9 3-34.3 8-17.4-24.1-45.6-40-77.7-40-53 0-96 43-96 96 0 .5.2 1.1.2 1.6C187.6 233 160 265.2 160 304c0 44.2 35.8 80 80 80h256c44.2 0 80-35.8 80-80 0-39.2-28.2-71.7-65.5-78.5zm-386.4 34.4c-37.4-37.4-37.4-98.3 0-135.8 34.6-34.6 89.1-36.8 126.7-7.4 20-12.9 43.6-20.7 69.2-20.7.7 0 1.3.2 2 .2l8.9-26.7c3.4-10.2-6.3-19.8-16.5-16.4l-75.3 25.1-35.5-71c-4.8-9.6-18.5-9.6-23.3 0l-35.5 71-75.3-25.1c-10.2-3.4-19.8 6.3-16.4 16.5l25.1 75.3-71 35.5c-9.6 4.8-9.6 18.5 0 23.3l71 35.5-25.1 75.3c-3.4 10.2 6.3 19.8 16.5 16.5l59.2-19.7c-.2-2.4-.7-4.7-.7-7.2 0-12.5 2.3-24.5 6.2-35.9-3.6-2.7-7.1-5.2-10.2-8.3zm69.8-58c4.3-24.5 15.8-46.4 31.9-64-9.8-6.2-21.4-9.9-33.8-9.9-35.3 0-64 28.7-64 64 0 18.7 8.2 35.4 21.1 47.1 11.3-15.9 26.6-28.9 44.8-37.2zm330.6 216.2c-7.6-4.3-17.4-1.8-21.8 6l-36.6 64c-4.4 7.7-1.7 17.4 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l36.6-64c4.3-7.7 1.7-17.4-6-21.8zm-96 0c-7.6-4.3-17.4-1.8-21.8 6l-36.6 64c-4.4 7.7-1.7 17.4 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l36.6-64c4.3-7.7 1.7-17.4-6-21.8zm-96 0c-7.6-4.3-17.4-1.8-21.8 6l-36.6 64c-4.4 7.7-1.7 17.4 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l36.6-64c4.3-7.7 1.7-17.4-6-21.8zm-96 0c-7.6-4.3-17.4-1.8-21.8 6l-36.6 64c-4.4 7.7-1.7 17.4 6 21.8 2.5 1.4 5.2 2.1 7.9 2.1 5.5 0 10.9-2.9 13.9-8.1l36.6-64c4.3-7.7 1.7-17.4-6-21.8z\"]\n};\nvar faCloudUploadAlt = {\n prefix: 'fas',\n iconName: 'cloud-upload-alt',\n icon: [640, 512, [], \"f382\", \"M537.6 226.6c4.1-10.7 6.4-22.4 6.4-34.6 0-53-43-96-96-96-19.7 0-38.1 6-53.3 16.2C367 64.2 315.3 32 256 32c-88.4 0-160 71.6-160 160 0 2.7.1 5.4.2 8.1C40.2 219.8 0 273.2 0 336c0 79.5 64.5 144 144 144h368c70.7 0 128-57.3 128-128 0-61.9-44-113.6-102.4-125.4zM393.4 288H328v112c0 8.8-7.2 16-16 16h-48c-8.8 0-16-7.2-16-16V288h-65.4c-14.3 0-21.4-17.2-11.3-27.3l105.4-105.4c6.2-6.2 16.4-6.2 22.6 0l105.4 105.4c10.1 10.1 2.9 27.3-11.3 27.3z\"]\n};\nvar faCocktail = {\n prefix: 'fas',\n iconName: 'cocktail',\n icon: [576, 512, [], \"f561\", \"M296 464h-56V338.78l168.74-168.73c15.52-15.52 4.53-42.05-17.42-42.05H24.68c-21.95 0-32.94 26.53-17.42 42.05L176 338.78V464h-56c-22.09 0-40 17.91-40 40 0 4.42 3.58 8 8 8h240c4.42 0 8-3.58 8-8 0-22.09-17.91-40-40-40zM432 0c-62.61 0-115.35 40.2-135.18 96h52.54c16.65-28.55 47.27-48 82.64-48 52.93 0 96 43.06 96 96s-43.07 96-96 96c-14.04 0-27.29-3.2-39.32-8.64l-35.26 35.26C379.23 279.92 404.59 288 432 288c79.53 0 144-64.47 144-144S511.53 0 432 0z\"]\n};\nvar faCode = {\n prefix: 'fas',\n iconName: 'code',\n icon: [640, 512, [], \"f121\", \"M278.9 511.5l-61-17.7c-6.4-1.8-10-8.5-8.2-14.9L346.2 8.7c1.8-6.4 8.5-10 14.9-8.2l61 17.7c6.4 1.8 10 8.5 8.2 14.9L293.8 503.3c-1.9 6.4-8.5 10.1-14.9 8.2zm-114-112.2l43.5-46.4c4.6-4.9 4.3-12.7-.8-17.2L117 256l90.6-79.7c5.1-4.5 5.5-12.3.8-17.2l-43.5-46.4c-4.5-4.8-12.1-5.1-17-.5L3.8 247.2c-5.1 4.7-5.1 12.8 0 17.5l144.1 135.1c4.9 4.6 12.5 4.4 17-.5zm327.2.6l144.1-135.1c5.1-4.7 5.1-12.8 0-17.5L492.1 112.1c-4.8-4.5-12.4-4.3-17 .5L431.6 159c-4.6 4.9-4.3 12.7.8 17.2L523 256l-90.6 79.7c-5.1 4.5-5.5 12.3-.8 17.2l43.5 46.4c4.5 4.9 12.1 5.1 17 .6z\"]\n};\nvar faCodeBranch = {\n prefix: 'fas',\n iconName: 'code-branch',\n icon: [384, 512, [], \"f126\", \"M384 144c0-44.2-35.8-80-80-80s-80 35.8-80 80c0 36.4 24.3 67.1 57.5 76.8-.6 16.1-4.2 28.5-11 36.9-15.4 19.2-49.3 22.4-85.2 25.7-28.2 2.6-57.4 5.4-81.3 16.9v-144c32.5-10.2 56-40.5 56-76.3 0-44.2-35.8-80-80-80S0 35.8 0 80c0 35.8 23.5 66.1 56 76.3v199.3C23.5 365.9 0 396.2 0 432c0 44.2 35.8 80 80 80s80-35.8 80-80c0-34-21.2-63.1-51.2-74.6 3.1-5.2 7.8-9.8 14.9-13.4 16.2-8.2 40.4-10.4 66.1-12.8 42.2-3.9 90-8.4 118.2-43.4 14-17.4 21.1-39.8 21.6-67.9 31.6-10.8 54.4-40.7 54.4-75.9zM80 64c8.8 0 16 7.2 16 16s-7.2 16-16 16-16-7.2-16-16 7.2-16 16-16zm0 384c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm224-320c8.8 0 16 7.2 16 16s-7.2 16-16 16-16-7.2-16-16 7.2-16 16-16z\"]\n};\nvar faCoffee = {\n prefix: 'fas',\n iconName: 'coffee',\n icon: [640, 512, [], \"f0f4\", \"M192 384h192c53 0 96-43 96-96h32c70.6 0 128-57.4 128-128S582.6 32 512 32H120c-13.3 0-24 10.7-24 24v232c0 53 43 96 96 96zM512 96c35.3 0 64 28.7 64 64s-28.7 64-64 64h-32V96h32zm47.7 384H48.3c-47.6 0-61-64-36-64h583.3c25 0 11.8 64-35.9 64z\"]\n};\nvar faCog = {\n prefix: 'fas',\n iconName: 'cog',\n icon: [512, 512, [], \"f013\", \"M487.4 315.7l-42.6-24.6c4.3-23.2 4.3-47 0-70.2l42.6-24.6c4.9-2.8 7.1-8.6 5.5-14-11.1-35.6-30-67.8-54.7-94.6-3.8-4.1-10-5.1-14.8-2.3L380.8 110c-17.9-15.4-38.5-27.3-60.8-35.1V25.8c0-5.6-3.9-10.5-9.4-11.7-36.7-8.2-74.3-7.8-109.2 0-5.5 1.2-9.4 6.1-9.4 11.7V75c-22.2 7.9-42.8 19.8-60.8 35.1L88.7 85.5c-4.9-2.8-11-1.9-14.8 2.3-24.7 26.7-43.6 58.9-54.7 94.6-1.7 5.4.6 11.2 5.5 14L67.3 221c-4.3 23.2-4.3 47 0 70.2l-42.6 24.6c-4.9 2.8-7.1 8.6-5.5 14 11.1 35.6 30 67.8 54.7 94.6 3.8 4.1 10 5.1 14.8 2.3l42.6-24.6c17.9 15.4 38.5 27.3 60.8 35.1v49.2c0 5.6 3.9 10.5 9.4 11.7 36.7 8.2 74.3 7.8 109.2 0 5.5-1.2 9.4-6.1 9.4-11.7v-49.2c22.2-7.9 42.8-19.8 60.8-35.1l42.6 24.6c4.9 2.8 11 1.9 14.8-2.3 24.7-26.7 43.6-58.9 54.7-94.6 1.5-5.5-.7-11.3-5.6-14.1zM256 336c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80z\"]\n};\nvar faCogs = {\n prefix: 'fas',\n iconName: 'cogs',\n icon: [640, 512, [], \"f085\", \"M512.1 191l-8.2 14.3c-3 5.3-9.4 7.5-15.1 5.4-11.8-4.4-22.6-10.7-32.1-18.6-4.6-3.8-5.8-10.5-2.8-15.7l8.2-14.3c-6.9-8-12.3-17.3-15.9-27.4h-16.5c-6 0-11.2-4.3-12.2-10.3-2-12-2.1-24.6 0-37.1 1-6 6.2-10.4 12.2-10.4h16.5c3.6-10.1 9-19.4 15.9-27.4l-8.2-14.3c-3-5.2-1.9-11.9 2.8-15.7 9.5-7.9 20.4-14.2 32.1-18.6 5.7-2.1 12.1.1 15.1 5.4l8.2 14.3c10.5-1.9 21.2-1.9 31.7 0L552 6.3c3-5.3 9.4-7.5 15.1-5.4 11.8 4.4 22.6 10.7 32.1 18.6 4.6 3.8 5.8 10.5 2.8 15.7l-8.2 14.3c6.9 8 12.3 17.3 15.9 27.4h16.5c6 0 11.2 4.3 12.2 10.3 2 12 2.1 24.6 0 37.1-1 6-6.2 10.4-12.2 10.4h-16.5c-3.6 10.1-9 19.4-15.9 27.4l8.2 14.3c3 5.2 1.9 11.9-2.8 15.7-9.5 7.9-20.4 14.2-32.1 18.6-5.7 2.1-12.1-.1-15.1-5.4l-8.2-14.3c-10.4 1.9-21.2 1.9-31.7 0zm-10.5-58.8c38.5 29.6 82.4-14.3 52.8-52.8-38.5-29.7-82.4 14.3-52.8 52.8zM386.3 286.1l33.7 16.8c10.1 5.8 14.5 18.1 10.5 29.1-8.9 24.2-26.4 46.4-42.6 65.8-7.4 8.9-20.2 11.1-30.3 5.3l-29.1-16.8c-16 13.7-34.6 24.6-54.9 31.7v33.6c0 11.6-8.3 21.6-19.7 23.6-24.6 4.2-50.4 4.4-75.9 0-11.5-2-20-11.9-20-23.6V418c-20.3-7.2-38.9-18-54.9-31.7L74 403c-10 5.8-22.9 3.6-30.3-5.3-16.2-19.4-33.3-41.6-42.2-65.7-4-10.9.4-23.2 10.5-29.1l33.3-16.8c-3.9-20.9-3.9-42.4 0-63.4L12 205.8c-10.1-5.8-14.6-18.1-10.5-29 8.9-24.2 26-46.4 42.2-65.8 7.4-8.9 20.2-11.1 30.3-5.3l29.1 16.8c16-13.7 34.6-24.6 54.9-31.7V57.1c0-11.5 8.2-21.5 19.6-23.5 24.6-4.2 50.5-4.4 76-.1 11.5 2 20 11.9 20 23.6v33.6c20.3 7.2 38.9 18 54.9 31.7l29.1-16.8c10-5.8 22.9-3.6 30.3 5.3 16.2 19.4 33.2 41.6 42.1 65.8 4 10.9.1 23.2-10 29.1l-33.7 16.8c3.9 21 3.9 42.5 0 63.5zm-117.6 21.1c59.2-77-28.7-164.9-105.7-105.7-59.2 77 28.7 164.9 105.7 105.7zm243.4 182.7l-8.2 14.3c-3 5.3-9.4 7.5-15.1 5.4-11.8-4.4-22.6-10.7-32.1-18.6-4.6-3.8-5.8-10.5-2.8-15.7l8.2-14.3c-6.9-8-12.3-17.3-15.9-27.4h-16.5c-6 0-11.2-4.3-12.2-10.3-2-12-2.1-24.6 0-37.1 1-6 6.2-10.4 12.2-10.4h16.5c3.6-10.1 9-19.4 15.9-27.4l-8.2-14.3c-3-5.2-1.9-11.9 2.8-15.7 9.5-7.9 20.4-14.2 32.1-18.6 5.7-2.1 12.1.1 15.1 5.4l8.2 14.3c10.5-1.9 21.2-1.9 31.7 0l8.2-14.3c3-5.3 9.4-7.5 15.1-5.4 11.8 4.4 22.6 10.7 32.1 18.6 4.6 3.8 5.8 10.5 2.8 15.7l-8.2 14.3c6.9 8 12.3 17.3 15.9 27.4h16.5c6 0 11.2 4.3 12.2 10.3 2 12 2.1 24.6 0 37.1-1 6-6.2 10.4-12.2 10.4h-16.5c-3.6 10.1-9 19.4-15.9 27.4l8.2 14.3c3 5.2 1.9 11.9-2.8 15.7-9.5 7.9-20.4 14.2-32.1 18.6-5.7 2.1-12.1-.1-15.1-5.4l-8.2-14.3c-10.4 1.9-21.2 1.9-31.7 0zM501.6 431c38.5 29.6 82.4-14.3 52.8-52.8-38.5-29.6-82.4 14.3-52.8 52.8z\"]\n};\nvar faCoins = {\n prefix: 'fas',\n iconName: 'coins',\n icon: [512, 512, [], \"f51e\", \"M0 405.3V448c0 35.3 86 64 192 64s192-28.7 192-64v-42.7C342.7 434.4 267.2 448 192 448S41.3 434.4 0 405.3zM320 128c106 0 192-28.7 192-64S426 0 320 0 128 28.7 128 64s86 64 192 64zM0 300.4V352c0 35.3 86 64 192 64s192-28.7 192-64v-51.6c-41.3 34-116.9 51.6-192 51.6S41.3 334.4 0 300.4zm416 11c57.3-11.1 96-31.7 96-55.4v-42.7c-23.2 16.4-57.3 27.6-96 34.5v63.6zM192 160C86 160 0 195.8 0 240s86 80 192 80 192-35.8 192-80-86-80-192-80zm219.3 56.3c60-10.8 100.7-32 100.7-56.3v-42.7c-35.5 25.1-96.5 38.6-160.7 41.8 29.5 14.3 51.2 33.5 60 57.2z\"]\n};\nvar faColumns = {\n prefix: 'fas',\n iconName: 'columns',\n icon: [512, 512, [], \"f0db\", \"M464 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V80c0-26.51-21.49-48-48-48zM224 416H64V160h160v256zm224 0H288V160h160v256z\"]\n};\nvar faComment = {\n prefix: 'fas',\n iconName: 'comment',\n icon: [512, 512, [], \"f075\", \"M256 32C114.6 32 0 125.1 0 240c0 49.6 21.4 95 57 130.7C44.5 421.1 2.7 466 2.2 466.5c-2.2 2.3-2.8 5.7-1.5 8.7S4.8 480 8 480c66.3 0 116-31.8 140.6-51.4 32.7 12.3 69 19.4 107.4 19.4 141.4 0 256-93.1 256-208S397.4 32 256 32z\"]\n};\nvar faCommentAlt = {\n prefix: 'fas',\n iconName: 'comment-alt',\n icon: [512, 512, [], \"f27a\", \"M448 0H64C28.7 0 0 28.7 0 64v288c0 35.3 28.7 64 64 64h96v84c0 9.8 11.2 15.5 19.1 9.7L304 416h144c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64z\"]\n};\nvar faCommentDollar = {\n prefix: 'fas',\n iconName: 'comment-dollar',\n icon: [512, 512, [], \"f651\", \"M256 32C114.62 32 0 125.12 0 240c0 49.56 21.41 95.01 57.02 130.74C44.46 421.05 2.7 465.97 2.2 466.5A7.995 7.995 0 0 0 8 480c66.26 0 115.99-31.75 140.6-51.38C181.29 440.93 217.59 448 256 448c141.38 0 256-93.12 256-208S397.38 32 256 32zm24 302.44V352c0 8.84-7.16 16-16 16h-16c-8.84 0-16-7.16-16-16v-17.73c-11.42-1.35-22.28-5.19-31.78-11.46-6.22-4.11-6.82-13.11-1.55-18.38l17.52-17.52c3.74-3.74 9.31-4.24 14.11-2.03 3.18 1.46 6.66 2.22 10.26 2.22h32.78c4.66 0 8.44-3.78 8.44-8.42 0-3.75-2.52-7.08-6.12-8.11l-50.07-14.3c-22.25-6.35-40.01-24.71-42.91-47.67-4.05-32.07 19.03-59.43 49.32-63.05V128c0-8.84 7.16-16 16-16h16c8.84 0 16 7.16 16 16v17.73c11.42 1.35 22.28 5.19 31.78 11.46 6.22 4.11 6.82 13.11 1.55 18.38l-17.52 17.52c-3.74 3.74-9.31 4.24-14.11 2.03a24.516 24.516 0 0 0-10.26-2.22h-32.78c-4.66 0-8.44 3.78-8.44 8.42 0 3.75 2.52 7.08 6.12 8.11l50.07 14.3c22.25 6.36 40.01 24.71 42.91 47.67 4.05 32.06-19.03 59.42-49.32 63.04z\"]\n};\nvar faCommentDots = {\n prefix: 'fas',\n iconName: 'comment-dots',\n icon: [512, 512, [], \"f4ad\", \"M256 32C114.6 32 0 125.1 0 240c0 49.6 21.4 95 57 130.7C44.5 421.1 2.7 466 2.2 466.5c-2.2 2.3-2.8 5.7-1.5 8.7S4.8 480 8 480c66.3 0 116-31.8 140.6-51.4 32.7 12.3 69 19.4 107.4 19.4 141.4 0 256-93.1 256-208S397.4 32 256 32zM128 272c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm128 0c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm128 0c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z\"]\n};\nvar faCommentMedical = {\n prefix: 'fas',\n iconName: 'comment-medical',\n icon: [512, 512, [], \"f7f5\", \"M256 32C114.62 32 0 125.12 0 240c0 49.56 21.41 95 57 130.74C44.46 421.05 2.7 466 2.2 466.5A8 8 0 0 0 8 480c66.26 0 116-31.75 140.6-51.38A304.66 304.66 0 0 0 256 448c141.39 0 256-93.12 256-208S397.39 32 256 32zm96 232a8 8 0 0 1-8 8h-56v56a8 8 0 0 1-8 8h-48a8 8 0 0 1-8-8v-56h-56a8 8 0 0 1-8-8v-48a8 8 0 0 1 8-8h56v-56a8 8 0 0 1 8-8h48a8 8 0 0 1 8 8v56h56a8 8 0 0 1 8 8z\"]\n};\nvar faCommentSlash = {\n prefix: 'fas',\n iconName: 'comment-slash',\n icon: [640, 512, [], \"f4b3\", \"M64 240c0 49.6 21.4 95 57 130.7-12.6 50.3-54.3 95.2-54.8 95.8-2.2 2.3-2.8 5.7-1.5 8.7 1.3 2.9 4.1 4.8 7.3 4.8 66.3 0 116-31.8 140.6-51.4 32.7 12.3 69 19.4 107.4 19.4 27.4 0 53.7-3.6 78.4-10L72.9 186.4c-5.6 17.1-8.9 35-8.9 53.6zm569.8 218.1l-114.4-88.4C554.6 334.1 576 289.2 576 240c0-114.9-114.6-208-256-208-65.1 0-124.2 20.1-169.4 52.7L45.5 3.4C38.5-2 28.5-.8 23 6.2L3.4 31.4c-5.4 7-4.2 17 2.8 22.4l588.4 454.7c7 5.4 17 4.2 22.5-2.8l19.6-25.3c5.4-6.8 4.1-16.9-2.9-22.3z\"]\n};\nvar faComments = {\n prefix: 'fas',\n iconName: 'comments',\n icon: [576, 512, [], \"f086\", \"M416 192c0-88.4-93.1-160-208-160S0 103.6 0 192c0 34.3 14.1 65.9 38 92-13.4 30.2-35.5 54.2-35.8 54.5-2.2 2.3-2.8 5.7-1.5 8.7S4.8 352 8 352c36.6 0 66.9-12.3 88.7-25 32.2 15.7 70.3 25 111.3 25 114.9 0 208-71.6 208-160zm122 220c23.9-26 38-57.7 38-92 0-66.9-53.5-124.2-129.3-148.1.9 6.6 1.3 13.3 1.3 20.1 0 105.9-107.7 192-240 192-10.8 0-21.3-.8-31.7-1.9C207.8 439.6 281.8 480 368 480c41 0 79.1-9.2 111.3-25 21.8 12.7 52.1 25 88.7 25 3.2 0 6.1-1.9 7.3-4.8 1.3-2.9.7-6.3-1.5-8.7-.3-.3-22.4-24.2-35.8-54.5z\"]\n};\nvar faCommentsDollar = {\n prefix: 'fas',\n iconName: 'comments-dollar',\n icon: [576, 512, [], \"f653\", \"M416 192c0-88.37-93.12-160-208-160S0 103.63 0 192c0 34.27 14.13 65.95 37.97 91.98C24.61 314.22 2.52 338.16 2.2 338.5A7.995 7.995 0 0 0 8 352c36.58 0 66.93-12.25 88.73-24.98C128.93 342.76 167.02 352 208 352c114.88 0 208-71.63 208-160zm-224 96v-16.29c-11.29-.58-22.27-4.52-31.37-11.35-3.9-2.93-4.1-8.77-.57-12.14l11.75-11.21c2.77-2.64 6.89-2.76 10.13-.73 3.87 2.42 8.26 3.72 12.82 3.72h28.11c6.5 0 11.8-5.92 11.8-13.19 0-5.95-3.61-11.19-8.77-12.73l-45-13.5c-18.59-5.58-31.58-23.42-31.58-43.39 0-24.52 19.05-44.44 42.67-45.07V96c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v16.29c11.29.58 22.27 4.51 31.37 11.35 3.9 2.93 4.1 8.77.57 12.14l-11.75 11.21c-2.77 2.64-6.89 2.76-10.13.73-3.87-2.43-8.26-3.72-12.82-3.72h-28.11c-6.5 0-11.8 5.92-11.8 13.19 0 5.95 3.61 11.19 8.77 12.73l45 13.5c18.59 5.58 31.58 23.42 31.58 43.39 0 24.53-19.05 44.44-42.67 45.07V288c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8zm346.01 123.99C561.87 385.96 576 354.27 576 320c0-66.94-53.49-124.2-129.33-148.07.86 6.6 1.33 13.29 1.33 20.07 0 105.87-107.66 192-240 192-10.78 0-21.32-.77-31.73-1.88C207.8 439.63 281.77 480 368 480c40.98 0 79.07-9.24 111.27-24.98C501.07 467.75 531.42 480 568 480c3.2 0 6.09-1.91 7.34-4.84 1.27-2.94.66-6.34-1.55-8.67-.31-.33-22.42-24.24-35.78-54.5z\"]\n};\nvar faCompactDisc = {\n prefix: 'fas',\n iconName: 'compact-disc',\n icon: [496, 512, [], \"f51f\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM88 256H56c0-105.9 86.1-192 192-192v32c-88.2 0-160 71.8-160 160zm160 96c-53 0-96-43-96-96s43-96 96-96 96 43 96 96-43 96-96 96zm0-128c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32z\"]\n};\nvar faCompass = {\n prefix: 'fas',\n iconName: 'compass',\n icon: [496, 512, [], \"f14e\", \"M225.38 233.37c-12.5 12.5-12.5 32.76 0 45.25 12.49 12.5 32.76 12.5 45.25 0 12.5-12.5 12.5-32.76 0-45.25-12.5-12.49-32.76-12.49-45.25 0zM248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm126.14 148.05L308.17 300.4a31.938 31.938 0 0 1-15.77 15.77l-144.34 65.97c-16.65 7.61-33.81-9.55-26.2-26.2l65.98-144.35a31.938 31.938 0 0 1 15.77-15.77l144.34-65.97c16.65-7.6 33.8 9.55 26.19 26.2z\"]\n};\nvar faCompress = {\n prefix: 'fas',\n iconName: 'compress',\n icon: [448, 512, [], \"f066\", \"M436 192H312c-13.3 0-24-10.7-24-24V44c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v84h84c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12zm-276-24V44c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v84H12c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h124c13.3 0 24-10.7 24-24zm0 300V344c0-13.3-10.7-24-24-24H12c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h84v84c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12zm192 0v-84h84c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12H312c-13.3 0-24 10.7-24 24v124c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12z\"]\n};\nvar faCompressAlt = {\n prefix: 'fas',\n iconName: 'compress-alt',\n icon: [448, 512, [], \"f422\", \"M4.686 427.314L104 328l-32.922-31.029C55.958 281.851 66.666 256 88.048 256h112C213.303 256 224 266.745 224 280v112c0 21.382-25.803 32.09-40.922 16.971L152 376l-99.314 99.314c-6.248 6.248-16.379 6.248-22.627 0L4.686 449.941c-6.248-6.248-6.248-16.379 0-22.627zM443.314 84.686L344 184l32.922 31.029c15.12 15.12 4.412 40.971-16.97 40.971h-112C234.697 256 224 245.255 224 232V120c0-21.382 25.803-32.09 40.922-16.971L296 136l99.314-99.314c6.248-6.248 16.379-6.248 22.627 0l25.373 25.373c6.248 6.248 6.248 16.379 0 22.627z\"]\n};\nvar faCompressArrowsAlt = {\n prefix: 'fas',\n iconName: 'compress-arrows-alt',\n icon: [512, 512, [], \"f78c\", \"M200 288H88c-21.4 0-32.1 25.8-17 41l32.9 31-99.2 99.3c-6.2 6.2-6.2 16.4 0 22.6l25.4 25.4c6.2 6.2 16.4 6.2 22.6 0L152 408l31.1 33c15.1 15.1 40.9 4.4 40.9-17V312c0-13.3-10.7-24-24-24zm112-64h112c21.4 0 32.1-25.9 17-41l-33-31 99.3-99.3c6.2-6.2 6.2-16.4 0-22.6L481.9 4.7c-6.2-6.2-16.4-6.2-22.6 0L360 104l-31.1-33C313.8 55.9 288 66.6 288 88v112c0 13.3 10.7 24 24 24zm96 136l33-31.1c15.1-15.1 4.4-40.9-17-40.9H312c-13.3 0-24 10.7-24 24v112c0 21.4 25.9 32.1 41 17l31-32.9 99.3 99.3c6.2 6.2 16.4 6.2 22.6 0l25.4-25.4c6.2-6.2 6.2-16.4 0-22.6L408 360zM183 71.1L152 104 52.7 4.7c-6.2-6.2-16.4-6.2-22.6 0L4.7 30.1c-6.2 6.2-6.2 16.4 0 22.6L104 152l-33 31.1C55.9 198.2 66.6 224 88 224h112c13.3 0 24-10.7 24-24V88c0-21.3-25.9-32-41-16.9z\"]\n};\nvar faConciergeBell = {\n prefix: 'fas',\n iconName: 'concierge-bell',\n icon: [512, 512, [], \"f562\", \"M288 130.54V112h16c8.84 0 16-7.16 16-16V80c0-8.84-7.16-16-16-16h-96c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h16v18.54C115.49 146.11 32 239.18 32 352h448c0-112.82-83.49-205.89-192-221.46zM496 384H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h480c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16z\"]\n};\nvar faCookie = {\n prefix: 'fas',\n iconName: 'cookie',\n icon: [512, 512, [], \"f563\", \"M510.37 254.79l-12.08-76.26a132.493 132.493 0 0 0-37.16-72.95l-54.76-54.75c-19.73-19.72-45.18-32.7-72.71-37.05l-76.7-12.15c-27.51-4.36-55.69.11-80.52 12.76L107.32 49.6a132.25 132.25 0 0 0-57.79 57.8l-35.1 68.88a132.602 132.602 0 0 0-12.82 80.94l12.08 76.27a132.493 132.493 0 0 0 37.16 72.95l54.76 54.75a132.087 132.087 0 0 0 72.71 37.05l76.7 12.14c27.51 4.36 55.69-.11 80.52-12.75l69.12-35.21a132.302 132.302 0 0 0 57.79-57.8l35.1-68.87c12.71-24.96 17.2-53.3 12.82-80.96zM176 368c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm32-160c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm160 128c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faCookieBite = {\n prefix: 'fas',\n iconName: 'cookie-bite',\n icon: [512, 512, [], \"f564\", \"M510.52 255.82c-69.97-.85-126.47-57.69-126.47-127.86-70.17 0-127-56.49-127.86-126.45-27.26-4.14-55.13.3-79.72 12.82l-69.13 35.22a132.221 132.221 0 0 0-57.79 57.81l-35.1 68.88a132.645 132.645 0 0 0-12.82 80.95l12.08 76.27a132.521 132.521 0 0 0 37.16 72.96l54.77 54.76a132.036 132.036 0 0 0 72.71 37.06l76.71 12.15c27.51 4.36 55.7-.11 80.53-12.76l69.13-35.21a132.273 132.273 0 0 0 57.79-57.81l35.1-68.88c12.56-24.64 17.01-52.58 12.91-79.91zM176 368c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm32-160c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm160 128c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faCopy = {\n prefix: 'fas',\n iconName: 'copy',\n icon: [448, 512, [], \"f0c5\", \"M320 448v40c0 13.255-10.745 24-24 24H24c-13.255 0-24-10.745-24-24V120c0-13.255 10.745-24 24-24h72v296c0 30.879 25.121 56 56 56h168zm0-344V0H152c-13.255 0-24 10.745-24 24v368c0 13.255 10.745 24 24 24h272c13.255 0 24-10.745 24-24V128H344c-13.2 0-24-10.8-24-24zm120.971-31.029L375.029 7.029A24 24 0 0 0 358.059 0H352v96h96v-6.059a24 24 0 0 0-7.029-16.97z\"]\n};\nvar faCopyright = {\n prefix: 'fas',\n iconName: 'copyright',\n icon: [512, 512, [], \"f1f9\", \"M256 8C119.033 8 8 119.033 8 256s111.033 248 248 248 248-111.033 248-248S392.967 8 256 8zm117.134 346.753c-1.592 1.867-39.776 45.731-109.851 45.731-84.692 0-144.484-63.26-144.484-145.567 0-81.303 62.004-143.401 143.762-143.401 66.957 0 101.965 37.315 103.422 38.904a12 12 0 0 1 1.238 14.623l-22.38 34.655c-4.049 6.267-12.774 7.351-18.234 2.295-.233-.214-26.529-23.88-61.88-23.88-46.116 0-73.916 33.575-73.916 76.082 0 39.602 25.514 79.692 74.277 79.692 38.697 0 65.28-28.338 65.544-28.625 5.132-5.565 14.059-5.033 18.508 1.053l24.547 33.572a12.001 12.001 0 0 1-.553 14.866z\"]\n};\nvar faCouch = {\n prefix: 'fas',\n iconName: 'couch',\n icon: [640, 512, [], \"f4b8\", \"M160 224v64h320v-64c0-35.3 28.7-64 64-64h32c0-53-43-96-96-96H160c-53 0-96 43-96 96h32c35.3 0 64 28.7 64 64zm416-32h-32c-17.7 0-32 14.3-32 32v96H128v-96c0-17.7-14.3-32-32-32H64c-35.3 0-64 28.7-64 64 0 23.6 13 44 32 55.1V432c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16v-16h384v16c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16V311.1c19-11.1 32-31.5 32-55.1 0-35.3-28.7-64-64-64z\"]\n};\nvar faCreditCard = {\n prefix: 'fas',\n iconName: 'credit-card',\n icon: [576, 512, [], \"f09d\", \"M0 432c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V256H0v176zm192-68c0-6.6 5.4-12 12-12h136c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12H204c-6.6 0-12-5.4-12-12v-40zm-128 0c0-6.6 5.4-12 12-12h72c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12H76c-6.6 0-12-5.4-12-12v-40zM576 80v48H0V80c0-26.5 21.5-48 48-48h480c26.5 0 48 21.5 48 48z\"]\n};\nvar faCrop = {\n prefix: 'fas',\n iconName: 'crop',\n icon: [512, 512, [], \"f125\", \"M488 352h-40V109.25l59.31-59.31c6.25-6.25 6.25-16.38 0-22.63L484.69 4.69c-6.25-6.25-16.38-6.25-22.63 0L402.75 64H192v96h114.75L160 306.75V24c0-13.26-10.75-24-24-24H88C74.75 0 64 10.74 64 24v40H24C10.75 64 0 74.74 0 88v48c0 13.25 10.75 24 24 24h40v264c0 13.25 10.75 24 24 24h232v-96H205.25L352 205.25V488c0 13.25 10.75 24 24 24h48c13.25 0 24-10.75 24-24v-40h40c13.25 0 24-10.75 24-24v-48c0-13.26-10.75-24-24-24z\"]\n};\nvar faCropAlt = {\n prefix: 'fas',\n iconName: 'crop-alt',\n icon: [512, 512, [], \"f565\", \"M488 352h-40V96c0-17.67-14.33-32-32-32H192v96h160v328c0 13.25 10.75 24 24 24h48c13.25 0 24-10.75 24-24v-40h40c13.25 0 24-10.75 24-24v-48c0-13.26-10.75-24-24-24zM160 24c0-13.26-10.75-24-24-24H88C74.75 0 64 10.74 64 24v40H24C10.75 64 0 74.74 0 88v48c0 13.25 10.75 24 24 24h40v256c0 17.67 14.33 32 32 32h224v-96H160V24z\"]\n};\nvar faCross = {\n prefix: 'fas',\n iconName: 'cross',\n icon: [384, 512, [], \"f654\", \"M352 128h-96V32c0-17.67-14.33-32-32-32h-64c-17.67 0-32 14.33-32 32v96H32c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h96v224c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32V256h96c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32z\"]\n};\nvar faCrosshairs = {\n prefix: 'fas',\n iconName: 'crosshairs',\n icon: [512, 512, [], \"f05b\", \"M500 224h-30.364C455.724 130.325 381.675 56.276 288 42.364V12c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v30.364C130.325 56.276 56.276 130.325 42.364 224H12c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h30.364C56.276 381.675 130.325 455.724 224 469.636V500c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12v-30.364C381.675 455.724 455.724 381.675 469.636 288H500c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12zM288 404.634V364c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40.634C165.826 392.232 119.783 346.243 107.366 288H148c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-40.634C119.768 165.826 165.757 119.783 224 107.366V148c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12v-40.634C346.174 119.768 392.217 165.757 404.634 224H364c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40.634C392.232 346.174 346.243 392.217 288 404.634zM288 256c0 17.673-14.327 32-32 32s-32-14.327-32-32c0-17.673 14.327-32 32-32s32 14.327 32 32z\"]\n};\nvar faCrow = {\n prefix: 'fas',\n iconName: 'crow',\n icon: [640, 512, [], \"f520\", \"M544 32h-16.36C513.04 12.68 490.09 0 464 0c-44.18 0-80 35.82-80 80v20.98L12.09 393.57A30.216 30.216 0 0 0 0 417.74c0 22.46 23.64 37.07 43.73 27.03L165.27 384h96.49l44.41 120.1c2.27 6.23 9.15 9.44 15.38 7.17l22.55-8.21c6.23-2.27 9.44-9.15 7.17-15.38L312.94 384H352c1.91 0 3.76-.23 5.66-.29l44.51 120.38c2.27 6.23 9.15 9.44 15.38 7.17l22.55-8.21c6.23-2.27 9.44-9.15 7.17-15.38l-41.24-111.53C485.74 352.8 544 279.26 544 192v-80l96-16c0-35.35-42.98-64-96-64zm-80 72c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24z\"]\n};\nvar faCrown = {\n prefix: 'fas',\n iconName: 'crown',\n icon: [640, 512, [], \"f521\", \"M528 448H112c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h416c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm64-320c-26.5 0-48 21.5-48 48 0 7.1 1.6 13.7 4.4 19.8L476 239.2c-15.4 9.2-35.3 4-44.2-11.6L350.3 85C361 76.2 368 63 368 48c0-26.5-21.5-48-48-48s-48 21.5-48 48c0 15 7 28.2 17.7 37l-81.5 142.6c-8.9 15.6-28.9 20.8-44.2 11.6l-72.3-43.4c2.7-6 4.4-12.7 4.4-19.8 0-26.5-21.5-48-48-48S0 149.5 0 176s21.5 48 48 48c2.6 0 5.2-.4 7.7-.8L128 416h384l72.3-192.8c2.5.4 5.1.8 7.7.8 26.5 0 48-21.5 48-48s-21.5-48-48-48z\"]\n};\nvar faCrutch = {\n prefix: 'fas',\n iconName: 'crutch',\n icon: [512, 512, [], \"f7f7\", \"M507.31 185.71l-181-181a16 16 0 0 0-22.62 0L281 27.31a16 16 0 0 0 0 22.63l181 181a16 16 0 0 0 22.63 0l22.62-22.63a16 16 0 0 0 .06-22.6zm-179.54 66.41l-67.89-67.89 55.1-55.1-45.25-45.25-109.67 109.67a96.08 96.08 0 0 0-25.67 46.29L106.65 360.1l-102 102a16 16 0 0 0 0 22.63l22.62 22.62a16 16 0 0 0 22.63 0l102-102 120.25-27.75a95.88 95.88 0 0 0 46.29-25.65l109.68-109.68L382.87 197zm-54.57 54.57a32 32 0 0 1-15.45 8.54l-79.3 18.32 18.3-79.3a32.22 32.22 0 0 1 8.56-15.45l9.31-9.31 67.89 67.89z\"]\n};\nvar faCube = {\n prefix: 'fas',\n iconName: 'cube',\n icon: [512, 512, [], \"f1b2\", \"M239.1 6.3l-208 78c-18.7 7-31.1 25-31.1 45v225.1c0 18.2 10.3 34.8 26.5 42.9l208 104c13.5 6.8 29.4 6.8 42.9 0l208-104c16.3-8.1 26.5-24.8 26.5-42.9V129.3c0-20-12.4-37.9-31.1-44.9l-208-78C262 2.2 250 2.2 239.1 6.3zM256 68.4l192 72v1.1l-192 78-192-78v-1.1l192-72zm32 356V275.5l160-65v133.9l-160 80z\"]\n};\nvar faCubes = {\n prefix: 'fas',\n iconName: 'cubes',\n icon: [512, 512, [], \"f1b3\", \"M488.6 250.2L392 214V105.5c0-15-9.3-28.4-23.4-33.7l-100-37.5c-8.1-3.1-17.1-3.1-25.3 0l-100 37.5c-14.1 5.3-23.4 18.7-23.4 33.7V214l-96.6 36.2C9.3 255.5 0 268.9 0 283.9V394c0 13.6 7.7 26.1 19.9 32.2l100 50c10.1 5.1 22.1 5.1 32.2 0l103.9-52 103.9 52c10.1 5.1 22.1 5.1 32.2 0l100-50c12.2-6.1 19.9-18.6 19.9-32.2V283.9c0-15-9.3-28.4-23.4-33.7zM358 214.8l-85 31.9v-68.2l85-37v73.3zM154 104.1l102-38.2 102 38.2v.6l-102 41.4-102-41.4v-.6zm84 291.1l-85 42.5v-79.1l85-38.8v75.4zm0-112l-102 41.4-102-41.4v-.6l102-38.2 102 38.2v.6zm240 112l-85 42.5v-79.1l85-38.8v75.4zm0-112l-102 41.4-102-41.4v-.6l102-38.2 102 38.2v.6z\"]\n};\nvar faCut = {\n prefix: 'fas',\n iconName: 'cut',\n icon: [448, 512, [], \"f0c4\", \"M278.06 256L444.48 89.57c4.69-4.69 4.69-12.29 0-16.97-32.8-32.8-85.99-32.8-118.79 0L210.18 188.12l-24.86-24.86c4.31-10.92 6.68-22.81 6.68-35.26 0-53.02-42.98-96-96-96S0 74.98 0 128s42.98 96 96 96c4.54 0 8.99-.32 13.36-.93L142.29 256l-32.93 32.93c-4.37-.61-8.83-.93-13.36-.93-53.02 0-96 42.98-96 96s42.98 96 96 96 96-42.98 96-96c0-12.45-2.37-24.34-6.68-35.26l24.86-24.86L325.69 439.4c32.8 32.8 85.99 32.8 118.79 0 4.69-4.68 4.69-12.28 0-16.97L278.06 256zM96 160c-17.64 0-32-14.36-32-32s14.36-32 32-32 32 14.36 32 32-14.36 32-32 32zm0 256c-17.64 0-32-14.36-32-32s14.36-32 32-32 32 14.36 32 32-14.36 32-32 32z\"]\n};\nvar faDatabase = {\n prefix: 'fas',\n iconName: 'database',\n icon: [448, 512, [], \"f1c0\", \"M448 73.143v45.714C448 159.143 347.667 192 224 192S0 159.143 0 118.857V73.143C0 32.857 100.333 0 224 0s224 32.857 224 73.143zM448 176v102.857C448 319.143 347.667 352 224 352S0 319.143 0 278.857V176c48.125 33.143 136.208 48.572 224 48.572S399.874 209.143 448 176zm0 160v102.857C448 479.143 347.667 512 224 512S0 479.143 0 438.857V336c48.125 33.143 136.208 48.572 224 48.572S399.874 369.143 448 336z\"]\n};\nvar faDeaf = {\n prefix: 'fas',\n iconName: 'deaf',\n icon: [512, 512, [], \"f2a4\", \"M216 260c0 15.464-12.536 28-28 28s-28-12.536-28-28c0-44.112 35.888-80 80-80s80 35.888 80 80c0 15.464-12.536 28-28 28s-28-12.536-28-28c0-13.234-10.767-24-24-24s-24 10.766-24 24zm24-176c-97.047 0-176 78.953-176 176 0 15.464 12.536 28 28 28s28-12.536 28-28c0-66.168 53.832-120 120-120s120 53.832 120 120c0 75.164-71.009 70.311-71.997 143.622L288 404c0 28.673-23.327 52-52 52-15.464 0-28 12.536-28 28s12.536 28 28 28c59.475 0 107.876-48.328 108-107.774.595-34.428 72-48.24 72-144.226 0-97.047-78.953-176-176-176zm268.485-52.201L480.2 3.515c-4.687-4.686-12.284-4.686-16.971 0L376.2 90.544c-4.686 4.686-4.686 12.284 0 16.971l28.285 28.285c4.686 4.686 12.284 4.686 16.97 0l87.03-87.029c4.687-4.688 4.687-12.286 0-16.972zM168.97 314.745c-4.686-4.686-12.284-4.686-16.97 0L3.515 463.23c-4.686 4.686-4.686 12.284 0 16.971L31.8 508.485c4.687 4.686 12.284 4.686 16.971 0L197.256 360c4.686-4.686 4.686-12.284 0-16.971l-28.286-28.284z\"]\n};\nvar faDemocrat = {\n prefix: 'fas',\n iconName: 'democrat',\n icon: [640, 512, [], \"f747\", \"M637.3 256.9l-19.6-29.4c-28.2-42.3-75.3-67.5-126.1-67.5H256l-81.2-81.2c20.1-20.1 22.6-51.1 7.5-73.9-3.4-5.2-10.8-5.9-15.2-1.5l-41.8 41.8L82.4 2.4c-3.6-3.6-9.6-3-12.4 1.2-12.3 18.6-10.3 44 6.1 60.4 3.3 3.3 7.3 5.3 11.3 7.5-2.2 1.7-4.7 3.1-6.4 5.4L6.4 176.2c-7.3 9.7-8.4 22.7-3 33.5l14.3 28.6c5.4 10.8 16.5 17.7 28.6 17.7h31c8.5 0 16.6-3.4 22.6-9.4L138 212l54 108h352v-77.8c16.2 12.2 18.3 17.6 40.1 50.3 4.9 7.4 14.8 9.3 22.2 4.4l26.6-17.7c7.3-5 9.3-14.9 4.4-22.3zm-341.1-13.6l-16.5 16.1 3.9 22.7c.7 4.1-3.6 7.2-7.2 5.3L256 276.7l-20.4 10.7c-3.6 1.9-7.9-1.2-7.2-5.3l3.9-22.7-16.5-16.1c-3-2.9-1.3-7.9 2.8-8.5l22.8-3.3 10.2-20.7c1.8-3.7 7.1-3.7 9 0l10.2 20.7 22.8 3.3c4 .6 5.6 5.6 2.6 8.5zm112 0l-16.5 16.1 3.9 22.7c.7 4.1-3.6 7.2-7.2 5.3L368 276.7l-20.4 10.7c-3.6 1.9-7.9-1.2-7.2-5.3l3.9-22.7-16.5-16.1c-3-2.9-1.3-7.9 2.8-8.5l22.8-3.3 10.2-20.7c1.8-3.7 7.1-3.7 9 0l10.2 20.7 22.8 3.3c4 .6 5.6 5.6 2.6 8.5zm112 0l-16.5 16.1 3.9 22.7c.7 4.1-3.6 7.2-7.2 5.3L480 276.7l-20.4 10.7c-3.6 1.9-7.9-1.2-7.2-5.3l3.9-22.7-16.5-16.1c-3-2.9-1.3-7.9 2.8-8.5l22.8-3.3 10.2-20.7c1.8-3.7 7.1-3.7 9 0l10.2 20.7 22.8 3.3c4 .6 5.6 5.6 2.6 8.5zM192 496c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16v-80h160v80c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16V352H192v144z\"]\n};\nvar faDesktop = {\n prefix: 'fas',\n iconName: 'desktop',\n icon: [576, 512, [], \"f108\", \"M528 0H48C21.5 0 0 21.5 0 48v320c0 26.5 21.5 48 48 48h192l-16 48h-72c-13.3 0-24 10.7-24 24s10.7 24 24 24h272c13.3 0 24-10.7 24-24s-10.7-24-24-24h-72l-16-48h192c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zm-16 352H64V64h448v288z\"]\n};\nvar faDharmachakra = {\n prefix: 'fas',\n iconName: 'dharmachakra',\n icon: [512, 512, [], \"f655\", \"M495 225.06l-17.22 1.08c-5.27-39.49-20.79-75.64-43.86-105.84l12.95-11.43c6.92-6.11 7.25-16.79.73-23.31L426.44 64.4c-6.53-6.53-17.21-6.19-23.31.73L391.7 78.07c-30.2-23.06-66.35-38.58-105.83-43.86L286.94 17c.58-9.21-6.74-17-15.97-17h-29.94c-9.23 0-16.54 7.79-15.97 17l1.08 17.22c-39.49 5.27-75.64 20.79-105.83 43.86l-11.43-12.95c-6.11-6.92-16.79-7.25-23.31-.73L64.4 85.56c-6.53 6.53-6.19 17.21.73 23.31l12.95 11.43c-23.06 30.2-38.58 66.35-43.86 105.84L17 225.06c-9.21-.58-17 6.74-17 15.97v29.94c0 9.23 7.79 16.54 17 15.97l17.22-1.08c5.27 39.49 20.79 75.64 43.86 105.83l-12.95 11.43c-6.92 6.11-7.25 16.79-.73 23.31l21.17 21.17c6.53 6.53 17.21 6.19 23.31-.73l11.43-12.95c30.2 23.06 66.35 38.58 105.84 43.86L225.06 495c-.58 9.21 6.74 17 15.97 17h29.94c9.23 0 16.54-7.79 15.97-17l-1.08-17.22c39.49-5.27 75.64-20.79 105.84-43.86l11.43 12.95c6.11 6.92 16.79 7.25 23.31.73l21.17-21.17c6.53-6.53 6.19-17.21-.73-23.31l-12.95-11.43c23.06-30.2 38.58-66.35 43.86-105.83l17.22 1.08c9.21.58 17-6.74 17-15.97v-29.94c-.01-9.23-7.8-16.54-17.01-15.97zM281.84 98.61c24.81 4.07 47.63 13.66 67.23 27.78l-42.62 48.29c-8.73-5.44-18.32-9.54-28.62-11.95l4.01-64.12zm-51.68 0l4.01 64.12c-10.29 2.41-19.89 6.52-28.62 11.95l-42.62-48.29c19.6-14.12 42.42-23.71 67.23-27.78zm-103.77 64.33l48.3 42.61c-5.44 8.73-9.54 18.33-11.96 28.62l-64.12-4.01c4.07-24.81 13.66-47.62 27.78-67.22zm-27.78 118.9l64.12-4.01c2.41 10.29 6.52 19.89 11.95 28.62l-48.29 42.62c-14.12-19.6-23.71-42.42-27.78-67.23zm131.55 131.55c-24.81-4.07-47.63-13.66-67.23-27.78l42.61-48.3c8.73 5.44 18.33 9.54 28.62 11.96l-4 64.12zM256 288c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm25.84 125.39l-4.01-64.12c10.29-2.41 19.89-6.52 28.62-11.96l42.61 48.3c-19.6 14.12-42.41 23.71-67.22 27.78zm103.77-64.33l-48.29-42.62c5.44-8.73 9.54-18.32 11.95-28.62l64.12 4.01c-4.07 24.82-13.66 47.64-27.78 67.23zm-36.34-114.89c-2.41-10.29-6.52-19.89-11.96-28.62l48.3-42.61c14.12 19.6 23.71 42.42 27.78 67.23l-64.12 4z\"]\n};\nvar faDiagnoses = {\n prefix: 'fas',\n iconName: 'diagnoses',\n icon: [640, 512, [], \"f470\", \"M496 256c8.8 0 16-7.2 16-16s-7.2-16-16-16-16 7.2-16 16 7.2 16 16 16zm-176-80c48.5 0 88-39.5 88-88S368.5 0 320 0s-88 39.5-88 88 39.5 88 88 88zM59.8 364c10.2 15.3 29.3 17.8 42.9 9.8 16.2-9.6 56.2-31.7 105.3-48.6V416h224v-90.7c49.1 16.8 89.1 39 105.3 48.6 13.6 8 32.7 5.3 42.9-9.8l17.8-26.7c8.8-13.2 7.6-34.6-10-45.1-11.9-7.1-29.7-17-51.1-27.4-28.1 46.1-99.4 17.8-87.7-35.1C409.3 217.2 365.1 208 320 208c-57 0-112.9 14.5-160 32.2-.2 40.2-47.6 63.3-79.2 36-11.2 6-21.3 11.6-28.7 16-17.6 10.5-18.8 31.8-10 45.1L59.8 364zM368 344c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm-96-96c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm-160 8c8.8 0 16-7.2 16-16s-7.2-16-16-16-16 7.2-16 16 7.2 16 16 16zm512 192H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h608c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16z\"]\n};\nvar faDice = {\n prefix: 'fas',\n iconName: 'dice',\n icon: [640, 512, [], \"f522\", \"M592 192H473.26c12.69 29.59 7.12 65.2-17 89.32L320 417.58V464c0 26.51 21.49 48 48 48h224c26.51 0 48-21.49 48-48V240c0-26.51-21.49-48-48-48zM480 376c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24zm-46.37-186.7L258.7 14.37c-19.16-19.16-50.23-19.16-69.39 0L14.37 189.3c-19.16 19.16-19.16 50.23 0 69.39L189.3 433.63c19.16 19.16 50.23 19.16 69.39 0L433.63 258.7c19.16-19.17 19.16-50.24 0-69.4zM96 248c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24zm128 128c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24zm0-128c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24zm0-128c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24zm128 128c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24z\"]\n};\nvar faDiceD20 = {\n prefix: 'fas',\n iconName: 'dice-d20',\n icon: [480, 512, [], \"f6cf\", \"M106.75 215.06L1.2 370.95c-3.08 5 .1 11.5 5.93 12.14l208.26 22.07-108.64-190.1zM7.41 315.43L82.7 193.08 6.06 147.1c-2.67-1.6-6.06.32-6.06 3.43v162.81c0 4.03 5.29 5.53 7.41 2.09zM18.25 423.6l194.4 87.66c5.3 2.45 11.35-1.43 11.35-7.26v-65.67l-203.55-22.3c-4.45-.5-6.23 5.59-2.2 7.57zm81.22-257.78L179.4 22.88c4.34-7.06-3.59-15.25-10.78-11.14L17.81 110.35c-2.47 1.62-2.39 5.26.13 6.78l81.53 48.69zM240 176h109.21L253.63 7.62C250.5 2.54 245.25 0 240 0s-10.5 2.54-13.63 7.62L130.79 176H240zm233.94-28.9l-76.64 45.99 75.29 122.35c2.11 3.44 7.41 1.94 7.41-2.1V150.53c0-3.11-3.39-5.03-6.06-3.43zm-93.41 18.72l81.53-48.7c2.53-1.52 2.6-5.16.13-6.78l-150.81-98.6c-7.19-4.11-15.12 4.08-10.78 11.14l79.93 142.94zm79.02 250.21L256 438.32v65.67c0 5.84 6.05 9.71 11.35 7.26l194.4-87.66c4.03-1.97 2.25-8.06-2.2-7.56zm-86.3-200.97l-108.63 190.1 208.26-22.07c5.83-.65 9.01-7.14 5.93-12.14L373.25 215.06zM240 208H139.57L240 383.75 340.43 208H240z\"]\n};\nvar faDiceD6 = {\n prefix: 'fas',\n iconName: 'dice-d6',\n icon: [448, 512, [], \"f6d1\", \"M422.19 109.95L256.21 9.07c-19.91-12.1-44.52-12.1-64.43 0L25.81 109.95c-5.32 3.23-5.29 11.27.06 14.46L224 242.55l198.14-118.14c5.35-3.19 5.38-11.22.05-14.46zm13.84 44.63L240 271.46v223.82c0 12.88 13.39 20.91 24.05 14.43l152.16-92.48c19.68-11.96 31.79-33.94 31.79-57.7v-197.7c0-6.41-6.64-10.43-11.97-7.25zM0 161.83v197.7c0 23.77 12.11 45.74 31.79 57.7l152.16 92.47c10.67 6.48 24.05-1.54 24.05-14.43V271.46L11.97 154.58C6.64 151.4 0 155.42 0 161.83z\"]\n};\nvar faDiceFive = {\n prefix: 'fas',\n iconName: 'dice-five',\n icon: [448, 512, [], \"f523\", \"M384 32H64C28.65 32 0 60.65 0 96v320c0 35.35 28.65 64 64 64h320c35.35 0 64-28.65 64-64V96c0-35.35-28.65-64-64-64zM128 384c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm96 96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm96 96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faDiceFour = {\n prefix: 'fas',\n iconName: 'dice-four',\n icon: [448, 512, [], \"f524\", \"M384 32H64C28.65 32 0 60.65 0 96v320c0 35.35 28.65 64 64 64h320c35.35 0 64-28.65 64-64V96c0-35.35-28.65-64-64-64zM128 384c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm192 192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faDiceOne = {\n prefix: 'fas',\n iconName: 'dice-one',\n icon: [448, 512, [], \"f525\", \"M384 32H64C28.65 32 0 60.65 0 96v320c0 35.35 28.65 64 64 64h320c35.35 0 64-28.65 64-64V96c0-35.35-28.65-64-64-64zM224 288c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faDiceSix = {\n prefix: 'fas',\n iconName: 'dice-six',\n icon: [448, 512, [], \"f526\", \"M384 32H64C28.65 32 0 60.65 0 96v320c0 35.35 28.65 64 64 64h320c35.35 0 64-28.65 64-64V96c0-35.35-28.65-64-64-64zM128 384c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm192 192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faDiceThree = {\n prefix: 'fas',\n iconName: 'dice-three',\n icon: [448, 512, [], \"f527\", \"M384 32H64C28.65 32 0 60.65 0 96v320c0 35.35 28.65 64 64 64h320c35.35 0 64-28.65 64-64V96c0-35.35-28.65-64-64-64zM128 192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm96 96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm96 96c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faDiceTwo = {\n prefix: 'fas',\n iconName: 'dice-two',\n icon: [448, 512, [], \"f528\", \"M384 32H64C28.65 32 0 60.65 0 96v320c0 35.35 28.65 64 64 64h320c35.35 0 64-28.65 64-64V96c0-35.35-28.65-64-64-64zM128 192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm192 192c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faDigitalTachograph = {\n prefix: 'fas',\n iconName: 'digital-tachograph',\n icon: [640, 512, [], \"f566\", \"M608 96H32c-17.67 0-32 14.33-32 32v256c0 17.67 14.33 32 32 32h576c17.67 0 32-14.33 32-32V128c0-17.67-14.33-32-32-32zM304 352c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8v-8c0-4.42 3.58-8 8-8h224c4.42 0 8 3.58 8 8v8zM72 288v-16c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H80c-4.42 0-8-3.58-8-8zm64 0v-16c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8zm64 0v-16c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8zm64 0v-16c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8zm40-64c0 8.84-7.16 16-16 16H80c-8.84 0-16-7.16-16-16v-48c0-8.84 7.16-16 16-16h208c8.84 0 16 7.16 16 16v48zm272 128c0 4.42-3.58 8-8 8H344c-4.42 0-8-3.58-8-8v-8c0-4.42 3.58-8 8-8h224c4.42 0 8 3.58 8 8v8z\"]\n};\nvar faDirections = {\n prefix: 'fas',\n iconName: 'directions',\n icon: [512, 512, [], \"f5eb\", \"M502.61 233.32L278.68 9.39c-12.52-12.52-32.83-12.52-45.36 0L9.39 233.32c-12.52 12.53-12.52 32.83 0 45.36l223.93 223.93c12.52 12.53 32.83 12.53 45.36 0l223.93-223.93c12.52-12.53 12.52-32.83 0-45.36zm-100.98 12.56l-84.21 77.73c-5.12 4.73-13.43 1.1-13.43-5.88V264h-96v64c0 4.42-3.58 8-8 8h-32c-4.42 0-8-3.58-8-8v-80c0-17.67 14.33-32 32-32h112v-53.73c0-6.97 8.3-10.61 13.43-5.88l84.21 77.73c3.43 3.17 3.43 8.59 0 11.76z\"]\n};\nvar faDivide = {\n prefix: 'fas',\n iconName: 'divide',\n icon: [448, 512, [], \"f529\", \"M224 352c-35.35 0-64 28.65-64 64s28.65 64 64 64 64-28.65 64-64-28.65-64-64-64zm0-192c35.35 0 64-28.65 64-64s-28.65-64-64-64-64 28.65-64 64 28.65 64 64 64zm192 48H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h384c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z\"]\n};\nvar faDizzy = {\n prefix: 'fas',\n iconName: 'dizzy',\n icon: [496, 512, [], \"f567\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm-96 206.6l-28.7 28.7c-14.8 14.8-37.8-7.5-22.6-22.6l28.7-28.7-28.7-28.7c-15-15 7.7-37.6 22.6-22.6l28.7 28.7 28.7-28.7c15-15 37.6 7.7 22.6 22.6L174.6 192l28.7 28.7c15.2 15.2-7.9 37.4-22.6 22.6L152 214.6zM248 416c-35.3 0-64-28.7-64-64s28.7-64 64-64 64 28.7 64 64-28.7 64-64 64zm147.3-195.3c15.2 15.2-7.9 37.4-22.6 22.6L344 214.6l-28.7 28.7c-14.8 14.8-37.8-7.5-22.6-22.6l28.7-28.7-28.7-28.7c-15-15 7.7-37.6 22.6-22.6l28.7 28.7 28.7-28.7c15-15 37.6 7.7 22.6 22.6L366.6 192l28.7 28.7z\"]\n};\nvar faDna = {\n prefix: 'fas',\n iconName: 'dna',\n icon: [448, 512, [], \"f471\", \"M.1 494.1c-1.1 9.5 6.3 17.8 15.9 17.8l32.3.1c8.1 0 14.9-5.9 16-13.9.7-4.9 1.8-11.1 3.4-18.1H380c1.6 6.9 2.9 13.2 3.5 18.1 1.1 8 7.9 14 16 13.9l32.3-.1c9.6 0 17.1-8.3 15.9-17.8-4.6-37.9-25.6-129-118.9-207.7-17.6 12.4-37.1 24.2-58.5 35.4 6.2 4.6 11.4 9.4 17 14.2H159.7c21.3-18.1 47-35.6 78.7-51.4C410.5 199.1 442.1 65.8 447.9 17.9 449 8.4 441.6.1 432 .1L399.6 0c-8.1 0-14.9 5.9-16 13.9-.7 4.9-1.8 11.1-3.4 18.1H67.8c-1.6-7-2.7-13.1-3.4-18.1-1.1-8-7.9-14-16-13.9L16.1.1C6.5.1-1 8.4.1 17.9 5.3 60.8 31.4 171.8 160 256 31.5 340.2 5.3 451.2.1 494.1zM224 219.6c-25.1-13.7-46.4-28.4-64.3-43.6h128.5c-17.8 15.2-39.1 30-64.2 43.6zM355.1 96c-5.8 10.4-12.8 21.1-21 32H114c-8.3-10.9-15.3-21.6-21-32h262.1zM92.9 416c5.8-10.4 12.8-21.1 21-32h219.4c8.3 10.9 15.4 21.6 21.2 32H92.9z\"]\n};\nvar faDog = {\n prefix: 'fas',\n iconName: 'dog',\n icon: [576, 512, [], \"f6d3\", \"M298.06,224,448,277.55V496a16,16,0,0,1-16,16H368a16,16,0,0,1-16-16V384H192V496a16,16,0,0,1-16,16H112a16,16,0,0,1-16-16V282.09C58.84,268.84,32,233.66,32,192a32,32,0,0,1,64,0,32.06,32.06,0,0,0,32,32ZM544,112v32a64,64,0,0,1-64,64H448v35.58L320,197.87V48c0-14.25,17.22-21.39,27.31-11.31L374.59,64h53.63c10.91,0,23.75,7.92,28.62,17.69L464,96h64A16,16,0,0,1,544,112Zm-112,0a16,16,0,1,0-16,16A16,16,0,0,0,432,112Z\"]\n};\nvar faDollarSign = {\n prefix: 'fas',\n iconName: 'dollar-sign',\n icon: [288, 512, [], \"f155\", \"M209.2 233.4l-108-31.6C88.7 198.2 80 186.5 80 173.5c0-16.3 13.2-29.5 29.5-29.5h66.3c12.2 0 24.2 3.7 34.2 10.5 6.1 4.1 14.3 3.1 19.5-2l34.8-34c7.1-6.9 6.1-18.4-1.8-24.5C238 74.8 207.4 64.1 176 64V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v48h-2.5C45.8 64-5.4 118.7.5 183.6c4.2 46.1 39.4 83.6 83.8 96.6l102.5 30c12.5 3.7 21.2 15.3 21.2 28.3 0 16.3-13.2 29.5-29.5 29.5h-66.3C100 368 88 364.3 78 357.5c-6.1-4.1-14.3-3.1-19.5 2l-34.8 34c-7.1 6.9-6.1 18.4 1.8 24.5 24.5 19.2 55.1 29.9 86.5 30v48c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-48.2c46.6-.9 90.3-28.6 105.7-72.7 21.5-61.6-14.6-124.8-72.5-141.7z\"]\n};\nvar faDolly = {\n prefix: 'fas',\n iconName: 'dolly',\n icon: [576, 512, [], \"f472\", \"M294.2 277.7c18 5 34.7 13.4 49.5 24.7l161.5-53.8c8.4-2.8 12.9-11.9 10.1-20.2L454.9 47.2c-2.8-8.4-11.9-12.9-20.2-10.1l-61.1 20.4 33.1 99.4L346 177l-33.1-99.4-61.6 20.5c-8.4 2.8-12.9 11.9-10.1 20.2l53 159.4zm281 48.7L565 296c-2.8-8.4-11.9-12.9-20.2-10.1l-213.5 71.2c-17.2-22-43.6-36.4-73.5-37L158.4 21.9C154 8.8 141.8 0 128 0H16C7.2 0 0 7.2 0 16v32c0 8.8 7.2 16 16 16h88.9l92.2 276.7c-26.1 20.4-41.7 53.6-36 90.5 6.1 39.4 37.9 72.3 77.3 79.2 60.2 10.7 112.3-34.8 113.4-92.6l213.3-71.2c8.3-2.8 12.9-11.8 10.1-20.2zM256 464c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48z\"]\n};\nvar faDollyFlatbed = {\n prefix: 'fas',\n iconName: 'dolly-flatbed',\n icon: [640, 512, [], \"f474\", \"M208 320h384c8.8 0 16-7.2 16-16V48c0-8.8-7.2-16-16-16H448v128l-48-32-48 32V32H208c-8.8 0-16 7.2-16 16v256c0 8.8 7.2 16 16 16zm416 64H128V16c0-8.8-7.2-16-16-16H16C7.2 0 0 7.2 0 16v32c0 8.8 7.2 16 16 16h48v368c0 8.8 7.2 16 16 16h82.9c-1.8 5-2.9 10.4-2.9 16 0 26.5 21.5 48 48 48s48-21.5 48-48c0-5.6-1.2-11-2.9-16H451c-1.8 5-2.9 10.4-2.9 16 0 26.5 21.5 48 48 48s48-21.5 48-48c0-5.6-1.2-11-2.9-16H624c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16z\"]\n};\nvar faDonate = {\n prefix: 'fas',\n iconName: 'donate',\n icon: [512, 512, [], \"f4b9\", \"M256 416c114.9 0 208-93.1 208-208S370.9 0 256 0 48 93.1 48 208s93.1 208 208 208zM233.8 97.4V80.6c0-9.2 7.4-16.6 16.6-16.6h11.1c9.2 0 16.6 7.4 16.6 16.6v17c15.5.8 30.5 6.1 43 15.4 5.6 4.1 6.2 12.3 1.2 17.1L306 145.6c-3.8 3.7-9.5 3.8-14 1-5.4-3.4-11.4-5.1-17.8-5.1h-38.9c-9 0-16.3 8.2-16.3 18.3 0 8.2 5 15.5 12.1 17.6l62.3 18.7c25.7 7.7 43.7 32.4 43.7 60.1 0 34-26.4 61.5-59.1 62.4v16.8c0 9.2-7.4 16.6-16.6 16.6h-11.1c-9.2 0-16.6-7.4-16.6-16.6v-17c-15.5-.8-30.5-6.1-43-15.4-5.6-4.1-6.2-12.3-1.2-17.1l16.3-15.5c3.8-3.7 9.5-3.8 14-1 5.4 3.4 11.4 5.1 17.8 5.1h38.9c9 0 16.3-8.2 16.3-18.3 0-8.2-5-15.5-12.1-17.6l-62.3-18.7c-25.7-7.7-43.7-32.4-43.7-60.1.1-34 26.4-61.5 59.1-62.4zM480 352h-32.5c-19.6 26-44.6 47.7-73 64h63.8c5.3 0 9.6 3.6 9.6 8v16c0 4.4-4.3 8-9.6 8H73.6c-5.3 0-9.6-3.6-9.6-8v-16c0-4.4 4.3-8 9.6-8h63.8c-28.4-16.3-53.3-38-73-64H32c-17.7 0-32 14.3-32 32v96c0 17.7 14.3 32 32 32h448c17.7 0 32-14.3 32-32v-96c0-17.7-14.3-32-32-32z\"]\n};\nvar faDoorClosed = {\n prefix: 'fas',\n iconName: 'door-closed',\n icon: [640, 512, [], \"f52a\", \"M624 448H512V50.8C512 22.78 490.47 0 464 0H175.99c-26.47 0-48 22.78-48 50.8V448H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h608c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zM415.99 288c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32c.01 17.67-14.32 32-32 32z\"]\n};\nvar faDoorOpen = {\n prefix: 'fas',\n iconName: 'door-open',\n icon: [640, 512, [], \"f52b\", \"M624 448h-80V113.45C544 86.19 522.47 64 496 64H384v64h96v384h144c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zM312.24 1.01l-192 49.74C105.99 54.44 96 67.7 96 82.92V448H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h336V33.18c0-21.58-19.56-37.41-39.76-32.17zM264 288c-13.25 0-24-14.33-24-32s10.75-32 24-32 24 14.33 24 32-10.75 32-24 32z\"]\n};\nvar faDotCircle = {\n prefix: 'fas',\n iconName: 'dot-circle',\n icon: [512, 512, [], \"f192\", \"M256 8C119.033 8 8 119.033 8 256s111.033 248 248 248 248-111.033 248-248S392.967 8 256 8zm80 248c0 44.112-35.888 80-80 80s-80-35.888-80-80 35.888-80 80-80 80 35.888 80 80z\"]\n};\nvar faDove = {\n prefix: 'fas',\n iconName: 'dove',\n icon: [512, 512, [], \"f4ba\", \"M288 167.2v-28.1c-28.2-36.3-47.1-79.3-54.1-125.2-2.1-13.5-19-18.8-27.8-8.3-21.1 24.9-37.7 54.1-48.9 86.5 34.2 38.3 80 64.6 130.8 75.1zM400 64c-44.2 0-80 35.9-80 80.1v59.4C215.6 197.3 127 133 87 41.8c-5.5-12.5-23.2-13.2-29-.9C41.4 76 32 115.2 32 156.6c0 70.8 34.1 136.9 85.1 185.9 13.2 12.7 26.1 23.2 38.9 32.8l-143.9 36C1.4 414-3.4 426.4 2.6 435.7 20 462.6 63 508.2 155.8 512c8 .3 16-2.6 22.1-7.9l65.2-56.1H320c88.4 0 160-71.5 160-159.9V128l32-64H400zm0 96.1c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16z\"]\n};\nvar faDownload = {\n prefix: 'fas',\n iconName: 'download',\n icon: [512, 512, [], \"f019\", \"M216 0h80c13.3 0 24 10.7 24 24v168h87.7c17.8 0 26.7 21.5 14.1 34.1L269.7 378.3c-7.5 7.5-19.8 7.5-27.3 0L90.1 226.1c-12.6-12.6-3.7-34.1 14.1-34.1H192V24c0-13.3 10.7-24 24-24zm296 376v112c0 13.3-10.7 24-24 24H24c-13.3 0-24-10.7-24-24V376c0-13.3 10.7-24 24-24h146.7l49 49c20.1 20.1 52.5 20.1 72.6 0l49-49H488c13.3 0 24 10.7 24 24zm-124 88c0-11-9-20-20-20s-20 9-20 20 9 20 20 20 20-9 20-20zm64 0c0-11-9-20-20-20s-20 9-20 20 9 20 20 20 20-9 20-20z\"]\n};\nvar faDraftingCompass = {\n prefix: 'fas',\n iconName: 'drafting-compass',\n icon: [512, 512, [], \"f568\", \"M457.01 344.42c-25.05 20.33-52.63 37.18-82.54 49.05l54.38 94.19 53.95 23.04c9.81 4.19 20.89-2.21 22.17-12.8l7.02-58.25-54.98-95.23zm42.49-94.56c4.86-7.67 1.89-17.99-6.05-22.39l-28.07-15.57c-7.48-4.15-16.61-1.46-21.26 5.72C403.01 281.15 332.25 320 256 320c-23.93 0-47.23-4.25-69.41-11.53l67.36-116.68c.7.02 1.34.21 2.04.21s1.35-.19 2.04-.21l51.09 88.5c31.23-8.96 59.56-25.75 82.61-48.92l-51.79-89.71C347.39 128.03 352 112.63 352 96c0-53.02-42.98-96-96-96s-96 42.98-96 96c0 16.63 4.61 32.03 12.05 45.66l-68.3 118.31c-12.55-11.61-23.96-24.59-33.68-39-4.79-7.1-13.97-9.62-21.38-5.33l-27.75 16.07c-7.85 4.54-10.63 14.9-5.64 22.47 15.57 23.64 34.69 44.21 55.98 62.02L0 439.66l7.02 58.25c1.28 10.59 12.36 16.99 22.17 12.8l53.95-23.04 70.8-122.63C186.13 377.28 220.62 384 256 384c99.05 0 190.88-51.01 243.5-134.14zM256 64c17.67 0 32 14.33 32 32s-14.33 32-32 32-32-14.33-32-32 14.33-32 32-32z\"]\n};\nvar faDragon = {\n prefix: 'fas',\n iconName: 'dragon',\n icon: [640, 512, [], \"f6d5\", \"M18.32 255.78L192 223.96l-91.28 68.69c-10.08 10.08-2.94 27.31 11.31 27.31h222.7c-9.44-26.4-14.73-54.47-14.73-83.38v-42.27l-119.73-87.6c-23.82-15.88-55.29-14.01-77.06 4.59L5.81 227.64c-12.38 10.33-3.45 30.42 12.51 28.14zm556.87 34.1l-100.66-50.31A47.992 47.992 0 0 1 448 196.65v-36.69h64l28.09 22.63c6 6 14.14 9.37 22.63 9.37h30.97a32 32 0 0 0 28.62-17.69l14.31-28.62a32.005 32.005 0 0 0-3.02-33.51l-74.53-99.38C553.02 4.7 543.54 0 533.47 0H296.02c-7.13 0-10.7 8.57-5.66 13.61L352 63.96 292.42 88.8c-5.9 2.95-5.9 11.36 0 14.31L352 127.96v108.62c0 72.08 36.03 139.39 96 179.38-195.59 6.81-344.56 41.01-434.1 60.91C5.78 478.67 0 485.88 0 494.2 0 504 7.95 512 17.76 512h499.08c63.29.01 119.61-47.56 122.99-110.76 2.52-47.28-22.73-90.4-64.64-111.36zM489.18 66.25l45.65 11.41c-2.75 10.91-12.47 18.89-24.13 18.26-12.96-.71-25.85-12.53-21.52-29.67z\"]\n};\nvar faDrawPolygon = {\n prefix: 'fas',\n iconName: 'draw-polygon',\n icon: [448, 512, [], \"f5ee\", \"M384 352c-.35 0-.67.1-1.02.1l-39.2-65.32c5.07-9.17 8.22-19.56 8.22-30.78s-3.14-21.61-8.22-30.78l39.2-65.32c.35.01.67.1 1.02.1 35.35 0 64-28.65 64-64s-28.65-64-64-64c-23.63 0-44.04 12.95-55.12 32H119.12C108.04 44.95 87.63 32 64 32 28.65 32 0 60.65 0 96c0 23.63 12.95 44.04 32 55.12v209.75C12.95 371.96 0 392.37 0 416c0 35.35 28.65 64 64 64 23.63 0 44.04-12.95 55.12-32h209.75c11.09 19.05 31.49 32 55.12 32 35.35 0 64-28.65 64-64 .01-35.35-28.64-64-63.99-64zm-288 8.88V151.12A63.825 63.825 0 0 0 119.12 128h208.36l-38.46 64.1c-.35-.01-.67-.1-1.02-.1-35.35 0-64 28.65-64 64s28.65 64 64 64c.35 0 .67-.1 1.02-.1l38.46 64.1H119.12A63.748 63.748 0 0 0 96 360.88zM272 256c0-8.82 7.18-16 16-16s16 7.18 16 16-7.18 16-16 16-16-7.18-16-16zM400 96c0 8.82-7.18 16-16 16s-16-7.18-16-16 7.18-16 16-16 16 7.18 16 16zM64 80c8.82 0 16 7.18 16 16s-7.18 16-16 16-16-7.18-16-16 7.18-16 16-16zM48 416c0-8.82 7.18-16 16-16s16 7.18 16 16-7.18 16-16 16-16-7.18-16-16zm336 16c-8.82 0-16-7.18-16-16s7.18-16 16-16 16 7.18 16 16-7.18 16-16 16z\"]\n};\nvar faDrum = {\n prefix: 'fas',\n iconName: 'drum',\n icon: [512, 512, [], \"f569\", \"M431.34 122.05l73.53-47.42a16 16 0 0 0 4.44-22.19l-8.87-13.31a16 16 0 0 0-22.19-4.44l-110.06 71C318.43 96.91 271.22 96 256 96 219.55 96 0 100.55 0 208.15v160.23c0 30.27 27.5 57.68 72 77.86v-101.9a24 24 0 1 1 48 0v118.93c33.05 9.11 71.07 15.06 112 16.73V376.39a24 24 0 1 1 48 0V480c40.93-1.67 78.95-7.62 112-16.73V344.34a24 24 0 1 1 48 0v101.9c44.5-20.18 72-47.59 72-77.86V208.15c0-43.32-35.76-69.76-80.66-86.1zM256 272.24c-114.88 0-208-28.69-208-64.09s93.12-64.08 208-64.08c17.15 0 33.73.71 49.68 1.91l-72.81 47a16 16 0 0 0-4.43 22.19l8.87 13.31a16 16 0 0 0 22.19 4.44l118.64-76.52C430.09 168 464 186.84 464 208.15c0 35.4-93.13 64.09-208 64.09z\"]\n};\nvar faDrumSteelpan = {\n prefix: 'fas',\n iconName: 'drum-steelpan',\n icon: [576, 512, [], \"f56a\", \"M288 32C128.94 32 0 89.31 0 160v192c0 70.69 128.94 128 288 128s288-57.31 288-128V160c0-70.69-128.94-128-288-128zm-82.99 158.36c-4.45 16.61-14.54 30.57-28.31 40.48C100.23 217.46 48 190.78 48 160c0-30.16 50.11-56.39 124.04-70.03l25.6 44.34c9.86 17.09 12.48 36.99 7.37 56.05zM288 240c-21.08 0-41.41-1-60.89-2.7 8.06-26.13 32.15-45.3 60.89-45.3s52.83 19.17 60.89 45.3C329.41 239 309.08 240 288 240zm64-144c0 35.29-28.71 64-64 64s-64-28.71-64-64V82.96c20.4-1.88 41.8-2.96 64-2.96s43.6 1.08 64 2.96V96zm46.93 134.9c-13.81-9.91-23.94-23.9-28.4-40.54-5.11-19.06-2.49-38.96 7.38-56.04l25.65-44.42C477.72 103.5 528 129.79 528 160c0 30.83-52.4 57.54-129.07 70.9z\"]\n};\nvar faDrumstickBite = {\n prefix: 'fas',\n iconName: 'drumstick-bite',\n icon: [512, 512, [], \"f6d7\", \"M462.8 49.57a169.44 169.44 0 0 0-239.5 0C187.82 85 160.13 128 160.13 192v85.83l-40.62 40.59c-9.7 9.69-24 11.07-36.78 6a60.33 60.33 0 0 0-65 98.72C33 438.39 54.24 442.7 73.85 438.21c-4.5 19.6-.18 40.83 15.1 56.1a60.35 60.35 0 0 0 98.8-65c-5.09-12.73-3.72-27 6-36.75L234.36 352h85.89a187.87 187.87 0 0 0 61.89-10c-39.64-43.89-39.83-110.23 1.05-151.07 34.38-34.36 86.76-39.46 128.74-16.8 1.3-44.96-14.81-90.28-49.13-124.56z\"]\n};\nvar faDumbbell = {\n prefix: 'fas',\n iconName: 'dumbbell',\n icon: [640, 512, [], \"f44b\", \"M104 96H56c-13.3 0-24 10.7-24 24v104H8c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h24v104c0 13.3 10.7 24 24 24h48c13.3 0 24-10.7 24-24V120c0-13.3-10.7-24-24-24zm528 128h-24V120c0-13.3-10.7-24-24-24h-48c-13.3 0-24 10.7-24 24v272c0 13.3 10.7 24 24 24h48c13.3 0 24-10.7 24-24V288h24c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zM456 32h-48c-13.3 0-24 10.7-24 24v168H256V56c0-13.3-10.7-24-24-24h-48c-13.3 0-24 10.7-24 24v400c0 13.3 10.7 24 24 24h48c13.3 0 24-10.7 24-24V288h128v168c0 13.3 10.7 24 24 24h48c13.3 0 24-10.7 24-24V56c0-13.3-10.7-24-24-24z\"]\n};\nvar faDumpster = {\n prefix: 'fas',\n iconName: 'dumpster',\n icon: [576, 512, [], \"f793\", \"M560 160c10.4 0 18-9.8 15.5-19.9l-24-96C549.7 37 543.3 32 536 32h-98.9l25.6 128H560zM272 32H171.5l-25.6 128H272V32zm132.5 0H304v128h126.1L404.5 32zM16 160h97.3l25.6-128H40c-7.3 0-13.7 5-15.5 12.1l-24 96C-2 150.2 5.6 160 16 160zm544 64h-20l4-32H32l4 32H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h28l20 160v16c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-16h320v16c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-16l20-160h28c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16z\"]\n};\nvar faDumpsterFire = {\n prefix: 'fas',\n iconName: 'dumpster-fire',\n icon: [640, 512, [], \"f794\", \"M418.7 104.1l.2-.2-14.4-72H304v128h60.8c16.2-19.3 34.2-38.2 53.9-55.8zM272 32H171.5l-25.6 128H272V32zm189.3 72.1c18.2 16.3 35.5 33.7 51.1 51.5 5.7-5.6 11.4-11.1 17.3-16.3l21.3-19 21.3 19c1.1.9 2.1 2.1 3.1 3.1-.1-.8.2-1.5 0-2.3l-24-96C549.7 37 543.3 32 536 32h-98.9l12.3 61.5 11.9 10.6zM16 160h97.3l25.6-128H40c-7.3 0-13.7 5-15.5 12.1l-24 96C-2 150.2 5.6 160 16 160zm324.6 32H32l4 32H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h28l20 160v16c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-16h208.8c-30.2-33.7-48.8-77.9-48.8-126.4 0-35.9 19.9-82.9 52.6-129.6zm210.5-28.8c-14.9 13.3-28.3 27.2-40.2 41.2-19.5-25.8-43.6-52-71-76.4-70.2 62.7-120 144.3-120 193.6 0 87.5 71.6 158.4 160 158.4s160-70.9 160-158.4c.1-36.6-37-112.2-88.8-158.4zm-18.6 229.4c-14.7 10.7-32.9 17-52.5 17-49 0-88.9-33.5-88.9-88 0-27.1 16.5-51 49.4-91.9 4.7 5.6 67.1 88.1 67.1 88.1l39.8-47c2.8 4.8 5.4 9.5 7.7 14 18.6 36.7 10.8 83.6-22.6 107.8z\"]\n};\nvar faDungeon = {\n prefix: 'fas',\n iconName: 'dungeon',\n icon: [512, 512, [], \"f6d9\", \"M128.73 195.32l-82.81-51.76c-8.04-5.02-18.99-2.17-22.93 6.45A254.19 254.19 0 0 0 .54 239.28C-.05 248.37 7.59 256 16.69 256h97.13c7.96 0 14.08-6.25 15.01-14.16 1.09-9.33 3.24-18.33 6.24-26.94 2.56-7.34.25-15.46-6.34-19.58zM319.03 8C298.86 2.82 277.77 0 256 0s-42.86 2.82-63.03 8c-9.17 2.35-13.91 12.6-10.39 21.39l37.47 104.03A16.003 16.003 0 0 0 235.1 144h41.8c6.75 0 12.77-4.23 15.05-10.58l37.47-104.03c3.52-8.79-1.22-19.03-10.39-21.39zM112 288H16c-8.84 0-16 7.16-16 16v64c0 8.84 7.16 16 16 16h96c8.84 0 16-7.16 16-16v-64c0-8.84-7.16-16-16-16zm0 128H16c-8.84 0-16 7.16-16 16v64c0 8.84 7.16 16 16 16h96c8.84 0 16-7.16 16-16v-64c0-8.84-7.16-16-16-16zm77.31-283.67l-36.32-90.8c-3.53-8.83-14.13-12.99-22.42-8.31a257.308 257.308 0 0 0-71.61 59.89c-6.06 7.32-3.85 18.48 4.22 23.52l82.93 51.83c6.51 4.07 14.66 2.62 20.11-2.79 5.18-5.15 10.79-9.85 16.79-14.05 6.28-4.41 9.15-12.17 6.3-19.29zM398.18 256h97.13c9.1 0 16.74-7.63 16.15-16.72a254.135 254.135 0 0 0-22.45-89.27c-3.94-8.62-14.89-11.47-22.93-6.45l-82.81 51.76c-6.59 4.12-8.9 12.24-6.34 19.58 3.01 8.61 5.15 17.62 6.24 26.94.93 7.91 7.05 14.16 15.01 14.16zm54.85-162.89a257.308 257.308 0 0 0-71.61-59.89c-8.28-4.68-18.88-.52-22.42 8.31l-36.32 90.8c-2.85 7.12.02 14.88 6.3 19.28 6 4.2 11.61 8.9 16.79 14.05 5.44 5.41 13.6 6.86 20.11 2.79l82.93-51.83c8.07-5.03 10.29-16.19 4.22-23.51zM496 288h-96c-8.84 0-16 7.16-16 16v64c0 8.84 7.16 16 16 16h96c8.84 0 16-7.16 16-16v-64c0-8.84-7.16-16-16-16zm0 128h-96c-8.84 0-16 7.16-16 16v64c0 8.84 7.16 16 16 16h96c8.84 0 16-7.16 16-16v-64c0-8.84-7.16-16-16-16zM240 177.62V472c0 4.42 3.58 8 8 8h16c4.42 0 8-3.58 8-8V177.62c-5.23-.89-10.52-1.62-16-1.62s-10.77.73-16 1.62zm-64 41.51V472c0 4.42 3.58 8 8 8h16c4.42 0 8-3.58 8-8V189.36c-12.78 7.45-23.84 17.47-32 29.77zm128-29.77V472c0 4.42 3.58 8 8 8h16c4.42 0 8-3.58 8-8V219.13c-8.16-12.3-19.22-22.32-32-29.77z\"]\n};\nvar faEdit = {\n prefix: 'fas',\n iconName: 'edit',\n icon: [576, 512, [], \"f044\", \"M402.6 83.2l90.2 90.2c3.8 3.8 3.8 10 0 13.8L274.4 405.6l-92.8 10.3c-12.4 1.4-22.9-9.1-21.5-21.5l10.3-92.8L388.8 83.2c3.8-3.8 10-3.8 13.8 0zm162-22.9l-48.8-48.8c-15.2-15.2-39.9-15.2-55.2 0l-35.4 35.4c-3.8 3.8-3.8 10 0 13.8l90.2 90.2c3.8 3.8 10 3.8 13.8 0l35.4-35.4c15.2-15.3 15.2-40 0-55.2zM384 346.2V448H64V128h229.8c3.2 0 6.2-1.3 8.5-3.5l40-40c7.6-7.6 2.2-20.5-8.5-20.5H48C21.5 64 0 85.5 0 112v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V306.2c0-10.7-12.9-16-20.5-8.5l-40 40c-2.2 2.3-3.5 5.3-3.5 8.5z\"]\n};\nvar faEgg = {\n prefix: 'fas',\n iconName: 'egg',\n icon: [384, 512, [], \"f7fb\", \"M192 0C86 0 0 214 0 320s86 192 192 192 192-86 192-192S298 0 192 0z\"]\n};\nvar faEject = {\n prefix: 'fas',\n iconName: 'eject',\n icon: [448, 512, [], \"f052\", \"M448 384v64c0 17.673-14.327 32-32 32H32c-17.673 0-32-14.327-32-32v-64c0-17.673 14.327-32 32-32h384c17.673 0 32 14.327 32 32zM48.053 320h351.886c41.651 0 63.581-49.674 35.383-80.435L259.383 47.558c-19.014-20.743-51.751-20.744-70.767 0L12.67 239.565C-15.475 270.268 6.324 320 48.053 320z\"]\n};\nvar faEllipsisH = {\n prefix: 'fas',\n iconName: 'ellipsis-h',\n icon: [512, 512, [], \"f141\", \"M328 256c0 39.8-32.2 72-72 72s-72-32.2-72-72 32.2-72 72-72 72 32.2 72 72zm104-72c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm-352 0c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72z\"]\n};\nvar faEllipsisV = {\n prefix: 'fas',\n iconName: 'ellipsis-v',\n icon: [192, 512, [], \"f142\", \"M96 184c39.8 0 72 32.2 72 72s-32.2 72-72 72-72-32.2-72-72 32.2-72 72-72zM24 80c0 39.8 32.2 72 72 72s72-32.2 72-72S135.8 8 96 8 24 40.2 24 80zm0 352c0 39.8 32.2 72 72 72s72-32.2 72-72-32.2-72-72-72-72 32.2-72 72z\"]\n};\nvar faEnvelope = {\n prefix: 'fas',\n iconName: 'envelope',\n icon: [512, 512, [], \"f0e0\", \"M502.3 190.8c3.9-3.1 9.7-.2 9.7 4.7V400c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V195.6c0-5 5.7-7.8 9.7-4.7 22.4 17.4 52.1 39.5 154.1 113.6 21.1 15.4 56.7 47.8 92.2 47.6 35.7.3 72-32.8 92.3-47.6 102-74.1 131.6-96.3 154-113.7zM256 320c23.2.4 56.6-29.2 73.4-41.4 132.7-96.3 142.8-104.7 173.4-128.7 5.8-4.5 9.2-11.5 9.2-18.9v-19c0-26.5-21.5-48-48-48H48C21.5 64 0 85.5 0 112v19c0 7.4 3.4 14.3 9.2 18.9 30.6 23.9 40.7 32.4 173.4 128.7 16.8 12.2 50.2 41.8 73.4 41.4z\"]\n};\nvar faEnvelopeOpen = {\n prefix: 'fas',\n iconName: 'envelope-open',\n icon: [512, 512, [], \"f2b6\", \"M512 464c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V200.724a48 48 0 0 1 18.387-37.776c24.913-19.529 45.501-35.365 164.2-121.511C199.412 29.17 232.797-.347 256 .003c23.198-.354 56.596 29.172 73.413 41.433 118.687 86.137 139.303 101.995 164.2 121.512A48 48 0 0 1 512 200.724V464zm-65.666-196.605c-2.563-3.728-7.7-4.595-11.339-1.907-22.845 16.873-55.462 40.705-105.582 77.079-16.825 12.266-50.21 41.781-73.413 41.43-23.211.344-56.559-29.143-73.413-41.43-50.114-36.37-82.734-60.204-105.582-77.079-3.639-2.688-8.776-1.821-11.339 1.907l-9.072 13.196a7.998 7.998 0 0 0 1.839 10.967c22.887 16.899 55.454 40.69 105.303 76.868 20.274 14.781 56.524 47.813 92.264 47.573 35.724.242 71.961-32.771 92.263-47.573 49.85-36.179 82.418-59.97 105.303-76.868a7.998 7.998 0 0 0 1.839-10.967l-9.071-13.196z\"]\n};\nvar faEnvelopeOpenText = {\n prefix: 'fas',\n iconName: 'envelope-open-text',\n icon: [512, 512, [], \"f658\", \"M176 216h160c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16H176c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16zm-16 80c0 8.84 7.16 16 16 16h160c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16H176c-8.84 0-16 7.16-16 16v16zm96 121.13c-16.42 0-32.84-5.06-46.86-15.19L0 250.86V464c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V250.86L302.86 401.94c-14.02 10.12-30.44 15.19-46.86 15.19zm237.61-254.18c-8.85-6.94-17.24-13.47-29.61-22.81V96c0-26.51-21.49-48-48-48h-77.55c-3.04-2.2-5.87-4.26-9.04-6.56C312.6 29.17 279.2-.35 256 0c-23.2-.35-56.59 29.17-73.41 41.44-3.17 2.3-6 4.36-9.04 6.56H96c-26.51 0-48 21.49-48 48v44.14c-12.37 9.33-20.76 15.87-29.61 22.81A47.995 47.995 0 0 0 0 200.72v10.65l96 69.35V96h320v184.72l96-69.35v-10.65c0-14.74-6.78-28.67-18.39-37.77z\"]\n};\nvar faEnvelopeSquare = {\n prefix: 'fas',\n iconName: 'envelope-square',\n icon: [448, 512, [], \"f199\", \"M400 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V80c0-26.51-21.49-48-48-48zM178.117 262.104C87.429 196.287 88.353 196.121 64 177.167V152c0-13.255 10.745-24 24-24h272c13.255 0 24 10.745 24 24v25.167c-24.371 18.969-23.434 19.124-114.117 84.938-10.5 7.655-31.392 26.12-45.883 25.894-14.503.218-35.367-18.227-45.883-25.895zM384 217.775V360c0 13.255-10.745 24-24 24H88c-13.255 0-24-10.745-24-24V217.775c13.958 10.794 33.329 25.236 95.303 70.214 14.162 10.341 37.975 32.145 64.694 32.01 26.887.134 51.037-22.041 64.72-32.025 61.958-44.965 81.325-59.406 95.283-70.199z\"]\n};\nvar faEquals = {\n prefix: 'fas',\n iconName: 'equals',\n icon: [448, 512, [], \"f52c\", \"M416 304H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h384c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32zm0-192H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h384c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z\"]\n};\nvar faEraser = {\n prefix: 'fas',\n iconName: 'eraser',\n icon: [512, 512, [], \"f12d\", \"M497.941 273.941c18.745-18.745 18.745-49.137 0-67.882l-160-160c-18.745-18.745-49.136-18.746-67.883 0l-256 256c-18.745 18.745-18.745 49.137 0 67.882l96 96A48.004 48.004 0 0 0 144 480h356c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12H355.883l142.058-142.059zm-302.627-62.627l137.373 137.373L265.373 416H150.628l-80-80 124.686-124.686z\"]\n};\nvar faEthernet = {\n prefix: 'fas',\n iconName: 'ethernet',\n icon: [512, 512, [], \"f796\", \"M496 192h-48v-48c0-8.8-7.2-16-16-16h-48V80c0-8.8-7.2-16-16-16H144c-8.8 0-16 7.2-16 16v48H80c-8.8 0-16 7.2-16 16v48H16c-8.8 0-16 7.2-16 16v224c0 8.8 7.2 16 16 16h80V320h32v128h64V320h32v128h64V320h32v128h64V320h32v128h80c8.8 0 16-7.2 16-16V208c0-8.8-7.2-16-16-16z\"]\n};\nvar faEuroSign = {\n prefix: 'fas',\n iconName: 'euro-sign',\n icon: [320, 512, [], \"f153\", \"M310.706 413.765c-1.314-6.63-7.835-10.872-14.424-9.369-10.692 2.439-27.422 5.413-45.426 5.413-56.763 0-101.929-34.79-121.461-85.449h113.689a12 12 0 0 0 11.708-9.369l6.373-28.36c1.686-7.502-4.019-14.631-11.708-14.631H115.22c-1.21-14.328-1.414-28.287.137-42.245H261.95a12 12 0 0 0 11.723-9.434l6.512-29.755c1.638-7.484-4.061-14.566-11.723-14.566H130.184c20.633-44.991 62.69-75.03 117.619-75.03 14.486 0 28.564 2.25 37.851 4.145 6.216 1.268 12.347-2.498 14.002-8.623l11.991-44.368c1.822-6.741-2.465-13.616-9.326-14.917C290.217 34.912 270.71 32 249.635 32 152.451 32 74.03 92.252 45.075 176H12c-6.627 0-12 5.373-12 12v29.755c0 6.627 5.373 12 12 12h21.569c-1.009 13.607-1.181 29.287-.181 42.245H12c-6.627 0-12 5.373-12 12v28.36c0 6.627 5.373 12 12 12h30.114C67.139 414.692 145.264 480 249.635 480c26.301 0 48.562-4.544 61.101-7.788 6.167-1.595 10.027-7.708 8.788-13.957l-8.818-44.49z\"]\n};\nvar faExchangeAlt = {\n prefix: 'fas',\n iconName: 'exchange-alt',\n icon: [512, 512, [], \"f362\", \"M0 168v-16c0-13.255 10.745-24 24-24h360V80c0-21.367 25.899-32.042 40.971-16.971l80 80c9.372 9.373 9.372 24.569 0 33.941l-80 80C409.956 271.982 384 261.456 384 240v-48H24c-13.255 0-24-10.745-24-24zm488 152H128v-48c0-21.314-25.862-32.08-40.971-16.971l-80 80c-9.372 9.373-9.372 24.569 0 33.941l80 80C102.057 463.997 128 453.437 128 432v-48h360c13.255 0 24-10.745 24-24v-16c0-13.255-10.745-24-24-24z\"]\n};\nvar faExclamation = {\n prefix: 'fas',\n iconName: 'exclamation',\n icon: [192, 512, [], \"f12a\", \"M176 432c0 44.112-35.888 80-80 80s-80-35.888-80-80 35.888-80 80-80 80 35.888 80 80zM25.26 25.199l13.6 272C39.499 309.972 50.041 320 62.83 320h66.34c12.789 0 23.331-10.028 23.97-22.801l13.6-272C167.425 11.49 156.496 0 142.77 0H49.23C35.504 0 24.575 11.49 25.26 25.199z\"]\n};\nvar faExclamationCircle = {\n prefix: 'fas',\n iconName: 'exclamation-circle',\n icon: [512, 512, [], \"f06a\", \"M504 256c0 136.997-111.043 248-248 248S8 392.997 8 256C8 119.083 119.043 8 256 8s248 111.083 248 248zm-248 50c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z\"]\n};\nvar faExclamationTriangle = {\n prefix: 'fas',\n iconName: 'exclamation-triangle',\n icon: [576, 512, [], \"f071\", \"M569.517 440.013C587.975 472.007 564.806 512 527.94 512H48.054c-36.937 0-59.999-40.055-41.577-71.987L246.423 23.985c18.467-32.009 64.72-31.951 83.154 0l239.94 416.028zM288 354c-25.405 0-46 20.595-46 46s20.595 46 46 46 46-20.595 46-46-20.595-46-46-46zm-43.673-165.346l7.418 136c.347 6.364 5.609 11.346 11.982 11.346h48.546c6.373 0 11.635-4.982 11.982-11.346l7.418-136c.375-6.874-5.098-12.654-11.982-12.654h-63.383c-6.884 0-12.356 5.78-11.981 12.654z\"]\n};\nvar faExpand = {\n prefix: 'fas',\n iconName: 'expand',\n icon: [448, 512, [], \"f065\", \"M0 180V56c0-13.3 10.7-24 24-24h124c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12H64v84c0 6.6-5.4 12-12 12H12c-6.6 0-12-5.4-12-12zM288 44v40c0 6.6 5.4 12 12 12h84v84c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12V56c0-13.3-10.7-24-24-24H300c-6.6 0-12 5.4-12 12zm148 276h-40c-6.6 0-12 5.4-12 12v84h-84c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h124c13.3 0 24-10.7 24-24V332c0-6.6-5.4-12-12-12zM160 468v-40c0-6.6-5.4-12-12-12H64v-84c0-6.6-5.4-12-12-12H12c-6.6 0-12 5.4-12 12v124c0 13.3 10.7 24 24 24h124c6.6 0 12-5.4 12-12z\"]\n};\nvar faExpandAlt = {\n prefix: 'fas',\n iconName: 'expand-alt',\n icon: [448, 512, [], \"f424\", \"M212.686 315.314L120 408l32.922 31.029c15.12 15.12 4.412 40.971-16.97 40.971h-112C10.697 480 0 469.255 0 456V344c0-21.382 25.803-32.09 40.922-16.971L72 360l92.686-92.686c6.248-6.248 16.379-6.248 22.627 0l25.373 25.373c6.249 6.248 6.249 16.378 0 22.627zm22.628-118.628L328 104l-32.922-31.029C279.958 57.851 290.666 32 312.048 32h112C437.303 32 448 42.745 448 56v112c0 21.382-25.803 32.09-40.922 16.971L376 152l-92.686 92.686c-6.248 6.248-16.379 6.248-22.627 0l-25.373-25.373c-6.249-6.248-6.249-16.378 0-22.627z\"]\n};\nvar faExpandArrowsAlt = {\n prefix: 'fas',\n iconName: 'expand-arrows-alt',\n icon: [448, 512, [], \"f31e\", \"M448 344v112a23.94 23.94 0 0 1-24 24H312c-21.39 0-32.09-25.9-17-41l36.2-36.2L224 295.6 116.77 402.9 153 439c15.09 15.1 4.39 41-17 41H24a23.94 23.94 0 0 1-24-24V344c0-21.4 25.89-32.1 41-17l36.19 36.2L184.46 256 77.18 148.7 41 185c-15.1 15.1-41 4.4-41-17V56a23.94 23.94 0 0 1 24-24h112c21.39 0 32.09 25.9 17 41l-36.2 36.2L224 216.4l107.23-107.3L295 73c-15.09-15.1-4.39-41 17-41h112a23.94 23.94 0 0 1 24 24v112c0 21.4-25.89 32.1-41 17l-36.19-36.2L263.54 256l107.28 107.3L407 327.1c15.1-15.2 41-4.5 41 16.9z\"]\n};\nvar faExternalLinkAlt = {\n prefix: 'fas',\n iconName: 'external-link-alt',\n icon: [512, 512, [], \"f35d\", \"M432,320H400a16,16,0,0,0-16,16V448H64V128H208a16,16,0,0,0,16-16V80a16,16,0,0,0-16-16H48A48,48,0,0,0,0,112V464a48,48,0,0,0,48,48H400a48,48,0,0,0,48-48V336A16,16,0,0,0,432,320ZM488,0h-128c-21.37,0-32.05,25.91-17,41l35.73,35.73L135,320.37a24,24,0,0,0,0,34L157.67,377a24,24,0,0,0,34,0L435.28,133.32,471,169c15,15,41,4.5,41-17V24A24,24,0,0,0,488,0Z\"]\n};\nvar faExternalLinkSquareAlt = {\n prefix: 'fas',\n iconName: 'external-link-square-alt',\n icon: [448, 512, [], \"f360\", \"M448 80v352c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V80c0-26.51 21.49-48 48-48h352c26.51 0 48 21.49 48 48zm-88 16H248.029c-21.313 0-32.08 25.861-16.971 40.971l31.984 31.987L67.515 364.485c-4.686 4.686-4.686 12.284 0 16.971l31.029 31.029c4.687 4.686 12.285 4.686 16.971 0l195.526-195.526 31.988 31.991C358.058 263.977 384 253.425 384 231.979V120c0-13.255-10.745-24-24-24z\"]\n};\nvar faEye = {\n prefix: 'fas',\n iconName: 'eye',\n icon: [576, 512, [], \"f06e\", \"M572.52 241.4C518.29 135.59 410.93 64 288 64S57.68 135.64 3.48 241.41a32.35 32.35 0 0 0 0 29.19C57.71 376.41 165.07 448 288 448s230.32-71.64 284.52-177.41a32.35 32.35 0 0 0 0-29.19zM288 400a144 144 0 1 1 144-144 143.93 143.93 0 0 1-144 144zm0-240a95.31 95.31 0 0 0-25.31 3.79 47.85 47.85 0 0 1-66.9 66.9A95.78 95.78 0 1 0 288 160z\"]\n};\nvar faEyeDropper = {\n prefix: 'fas',\n iconName: 'eye-dropper',\n icon: [512, 512, [], \"f1fb\", \"M50.75 333.25c-12 12-18.75 28.28-18.75 45.26V424L0 480l32 32 56-32h45.49c16.97 0 33.25-6.74 45.25-18.74l126.64-126.62-128-128L50.75 333.25zM483.88 28.12c-37.47-37.5-98.28-37.5-135.75 0l-77.09 77.09-13.1-13.1c-9.44-9.44-24.65-9.31-33.94 0l-40.97 40.97c-9.37 9.37-9.37 24.57 0 33.94l161.94 161.94c9.44 9.44 24.65 9.31 33.94 0L419.88 288c9.37-9.37 9.37-24.57 0-33.94l-13.1-13.1 77.09-77.09c37.51-37.48 37.51-98.26.01-135.75z\"]\n};\nvar faEyeSlash = {\n prefix: 'fas',\n iconName: 'eye-slash',\n icon: [640, 512, [], \"f070\", \"M320 400c-75.85 0-137.25-58.71-142.9-133.11L72.2 185.82c-13.79 17.3-26.48 35.59-36.72 55.59a32.35 32.35 0 0 0 0 29.19C89.71 376.41 197.07 448 320 448c26.91 0 52.87-4 77.89-10.46L346 397.39a144.13 144.13 0 0 1-26 2.61zm313.82 58.1l-110.55-85.44a331.25 331.25 0 0 0 81.25-102.07 32.35 32.35 0 0 0 0-29.19C550.29 135.59 442.93 64 320 64a308.15 308.15 0 0 0-147.32 37.7L45.46 3.37A16 16 0 0 0 23 6.18L3.37 31.45A16 16 0 0 0 6.18 53.9l588.36 454.73a16 16 0 0 0 22.46-2.81l19.64-25.27a16 16 0 0 0-2.82-22.45zm-183.72-142l-39.3-30.38A94.75 94.75 0 0 0 416 256a94.76 94.76 0 0 0-121.31-92.21A47.65 47.65 0 0 1 304 192a46.64 46.64 0 0 1-1.54 10l-73.61-56.89A142.31 142.31 0 0 1 320 112a143.92 143.92 0 0 1 144 144c0 21.63-5.29 41.79-13.9 60.11z\"]\n};\nvar faFan = {\n prefix: 'fas',\n iconName: 'fan',\n icon: [512, 512, [], \"f863\", \"M352.57 128c-28.09 0-54.09 4.52-77.06 12.86l12.41-123.11C289 7.31 279.81-1.18 269.33.13 189.63 10.13 128 77.64 128 159.43c0 28.09 4.52 54.09 12.86 77.06L17.75 224.08C7.31 223-1.18 232.19.13 242.67c10 79.7 77.51 141.33 159.3 141.33 28.09 0 54.09-4.52 77.06-12.86l-12.41 123.11c-1.05 10.43 8.11 18.93 18.59 17.62 79.7-10 141.33-77.51 141.33-159.3 0-28.09-4.52-54.09-12.86-77.06l123.11 12.41c10.44 1.05 18.93-8.11 17.62-18.59-10-79.7-77.51-141.33-159.3-141.33zM256 288a32 32 0 1 1 32-32 32 32 0 0 1-32 32z\"]\n};\nvar faFastBackward = {\n prefix: 'fas',\n iconName: 'fast-backward',\n icon: [512, 512, [], \"f049\", \"M0 436V76c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v151.9L235.5 71.4C256.1 54.3 288 68.6 288 96v131.9L459.5 71.4C480.1 54.3 512 68.6 512 96v320c0 27.4-31.9 41.7-52.5 24.6L288 285.3V416c0 27.4-31.9 41.7-52.5 24.6L64 285.3V436c0 6.6-5.4 12-12 12H12c-6.6 0-12-5.4-12-12z\"]\n};\nvar faFastForward = {\n prefix: 'fas',\n iconName: 'fast-forward',\n icon: [512, 512, [], \"f050\", \"M512 76v360c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12V284.1L276.5 440.6c-20.6 17.2-52.5 2.8-52.5-24.6V284.1L52.5 440.6C31.9 457.8 0 443.4 0 416V96c0-27.4 31.9-41.7 52.5-24.6L224 226.8V96c0-27.4 31.9-41.7 52.5-24.6L448 226.8V76c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12z\"]\n};\nvar faFax = {\n prefix: 'fas',\n iconName: 'fax',\n icon: [512, 512, [], \"f1ac\", \"M480 160V77.25a32 32 0 0 0-9.38-22.63L425.37 9.37A32 32 0 0 0 402.75 0H160a32 32 0 0 0-32 32v448a32 32 0 0 0 32 32h320a32 32 0 0 0 32-32V192a32 32 0 0 0-32-32zM288 432a16 16 0 0 1-16 16h-32a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h32a16 16 0 0 1 16 16zm0-128a16 16 0 0 1-16 16h-32a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h32a16 16 0 0 1 16 16zm128 128a16 16 0 0 1-16 16h-32a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h32a16 16 0 0 1 16 16zm0-128a16 16 0 0 1-16 16h-32a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h32a16 16 0 0 1 16 16zm0-112H192V64h160v48a16 16 0 0 0 16 16h48zM64 128H32a32 32 0 0 0-32 32v320a32 32 0 0 0 32 32h32a32 32 0 0 0 32-32V160a32 32 0 0 0-32-32z\"]\n};\nvar faFeather = {\n prefix: 'fas',\n iconName: 'feather',\n icon: [512, 512, [], \"f52d\", \"M467.14 44.84c-62.55-62.48-161.67-64.78-252.28 25.73-78.61 78.52-60.98 60.92-85.75 85.66-60.46 60.39-70.39 150.83-63.64 211.17l178.44-178.25c6.26-6.25 16.4-6.25 22.65 0s6.25 16.38 0 22.63L7.04 471.03c-9.38 9.37-9.38 24.57 0 33.94 9.38 9.37 24.6 9.37 33.98 0l66.1-66.03C159.42 454.65 279 457.11 353.95 384h-98.19l147.57-49.14c49.99-49.93 36.38-36.18 46.31-46.86h-97.78l131.54-43.8c45.44-74.46 34.31-148.84-16.26-199.36z\"]\n};\nvar faFeatherAlt = {\n prefix: 'fas',\n iconName: 'feather-alt',\n icon: [512, 512, [], \"f56b\", \"M512 0C460.22 3.56 96.44 38.2 71.01 287.61c-3.09 26.66-4.84 53.44-5.99 80.24l178.87-178.69c6.25-6.25 16.4-6.25 22.65 0s6.25 16.38 0 22.63L7.04 471.03c-9.38 9.37-9.38 24.57 0 33.94 9.38 9.37 24.59 9.37 33.98 0l57.13-57.07c42.09-.14 84.15-2.53 125.96-7.36 53.48-5.44 97.02-26.47 132.58-56.54H255.74l146.79-48.88c11.25-14.89 21.37-30.71 30.45-47.12h-81.14l106.54-53.21C500.29 132.86 510.19 26.26 512 0z\"]\n};\nvar faFemale = {\n prefix: 'fas',\n iconName: 'female',\n icon: [256, 512, [], \"f182\", \"M128 0c35.346 0 64 28.654 64 64s-28.654 64-64 64c-35.346 0-64-28.654-64-64S92.654 0 128 0m119.283 354.179l-48-192A24 24 0 0 0 176 144h-11.36c-22.711 10.443-49.59 10.894-73.28 0H80a24 24 0 0 0-23.283 18.179l-48 192C4.935 369.305 16.383 384 32 384h56v104c0 13.255 10.745 24 24 24h32c13.255 0 24-10.745 24-24V384h56c15.591 0 27.071-14.671 23.283-29.821z\"]\n};\nvar faFighterJet = {\n prefix: 'fas',\n iconName: 'fighter-jet',\n icon: [640, 512, [], \"f0fb\", \"M544 224l-128-16-48-16h-24L227.158 44h39.509C278.333 44 288 41.375 288 38s-9.667-6-21.333-6H152v12h16v164h-48l-66.667-80H18.667L8 138.667V208h8v16h48v2.666l-64 8v42.667l64 8V288H16v16H8v69.333L18.667 384h34.667L120 304h48v164h-16v12h114.667c11.667 0 21.333-2.625 21.333-6s-9.667-6-21.333-6h-39.509L344 320h24l48-16 128-16c96-21.333 96-26.583 96-32 0-5.417 0-10.667-96-32z\"]\n};\nvar faFile = {\n prefix: 'fas',\n iconName: 'file',\n icon: [384, 512, [], \"f15b\", \"M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm160-14.1v6.1H256V0h6.1c6.4 0 12.5 2.5 17 7l97.9 98c4.5 4.5 7 10.6 7 16.9z\"]\n};\nvar faFileAlt = {\n prefix: 'fas',\n iconName: 'file-alt',\n icon: [384, 512, [], \"f15c\", \"M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm64 236c0 6.6-5.4 12-12 12H108c-6.6 0-12-5.4-12-12v-8c0-6.6 5.4-12 12-12h168c6.6 0 12 5.4 12 12v8zm0-64c0 6.6-5.4 12-12 12H108c-6.6 0-12-5.4-12-12v-8c0-6.6 5.4-12 12-12h168c6.6 0 12 5.4 12 12v8zm0-72v8c0 6.6-5.4 12-12 12H108c-6.6 0-12-5.4-12-12v-8c0-6.6 5.4-12 12-12h168c6.6 0 12 5.4 12 12zm96-114.1v6.1H256V0h6.1c6.4 0 12.5 2.5 17 7l97.9 98c4.5 4.5 7 10.6 7 16.9z\"]\n};\nvar faFileArchive = {\n prefix: 'fas',\n iconName: 'file-archive',\n icon: [384, 512, [], \"f1c6\", \"M377 105L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9zM128.4 336c-17.9 0-32.4 12.1-32.4 27 0 15 14.6 27 32.5 27s32.4-12.1 32.4-27-14.6-27-32.5-27zM224 136V0h-63.6v32h-32V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zM95.9 32h32v32h-32zm32.3 384c-33.2 0-58-30.4-51.4-62.9L96.4 256v-32h32v-32h-32v-32h32v-32h-32V96h32V64h32v32h-32v32h32v32h-32v32h32v32h-32v32h22.1c5.7 0 10.7 4.1 11.8 9.7l17.3 87.7c6.4 32.4-18.4 62.6-51.4 62.6z\"]\n};\nvar faFileAudio = {\n prefix: 'fas',\n iconName: 'file-audio',\n icon: [384, 512, [], \"f1c7\", \"M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm-64 268c0 10.7-12.9 16-20.5 8.5L104 376H76c-6.6 0-12-5.4-12-12v-56c0-6.6 5.4-12 12-12h28l35.5-36.5c7.6-7.6 20.5-2.2 20.5 8.5v136zm33.2-47.6c9.1-9.3 9.1-24.1 0-33.4-22.1-22.8 12.2-56.2 34.4-33.5 27.2 27.9 27.2 72.4 0 100.4-21.8 22.3-56.9-10.4-34.4-33.5zm86-117.1c54.4 55.9 54.4 144.8 0 200.8-21.8 22.4-57-10.3-34.4-33.5 36.2-37.2 36.3-96.5 0-133.8-22.1-22.8 12.3-56.3 34.4-33.5zM384 121.9v6.1H256V0h6.1c6.4 0 12.5 2.5 17 7l97.9 98c4.5 4.5 7 10.6 7 16.9z\"]\n};\nvar faFileCode = {\n prefix: 'fas',\n iconName: 'file-code',\n icon: [384, 512, [], \"f1c9\", \"M384 121.941V128H256V0h6.059c6.365 0 12.47 2.529 16.971 7.029l97.941 97.941A24.005 24.005 0 0 1 384 121.941zM248 160c-13.2 0-24-10.8-24-24V0H24C10.745 0 0 10.745 0 24v464c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24V160H248zM123.206 400.505a5.4 5.4 0 0 1-7.633.246l-64.866-60.812a5.4 5.4 0 0 1 0-7.879l64.866-60.812a5.4 5.4 0 0 1 7.633.246l19.579 20.885a5.4 5.4 0 0 1-.372 7.747L101.65 336l40.763 35.874a5.4 5.4 0 0 1 .372 7.747l-19.579 20.884zm51.295 50.479l-27.453-7.97a5.402 5.402 0 0 1-3.681-6.692l61.44-211.626a5.402 5.402 0 0 1 6.692-3.681l27.452 7.97a5.4 5.4 0 0 1 3.68 6.692l-61.44 211.626a5.397 5.397 0 0 1-6.69 3.681zm160.792-111.045l-64.866 60.812a5.4 5.4 0 0 1-7.633-.246l-19.58-20.885a5.4 5.4 0 0 1 .372-7.747L284.35 336l-40.763-35.874a5.4 5.4 0 0 1-.372-7.747l19.58-20.885a5.4 5.4 0 0 1 7.633-.246l64.866 60.812a5.4 5.4 0 0 1-.001 7.879z\"]\n};\nvar faFileContract = {\n prefix: 'fas',\n iconName: 'file-contract',\n icon: [384, 512, [], \"f56c\", \"M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zM64 72c0-4.42 3.58-8 8-8h80c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8V72zm0 64c0-4.42 3.58-8 8-8h80c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8v-16zm192.81 248H304c8.84 0 16 7.16 16 16s-7.16 16-16 16h-47.19c-16.45 0-31.27-9.14-38.64-23.86-2.95-5.92-8.09-6.52-10.17-6.52s-7.22.59-10.02 6.19l-7.67 15.34a15.986 15.986 0 0 1-14.31 8.84c-.38 0-.75-.02-1.14-.05-6.45-.45-12-4.75-14.03-10.89L144 354.59l-10.61 31.88c-5.89 17.66-22.38 29.53-41 29.53H80c-8.84 0-16-7.16-16-16s7.16-16 16-16h12.39c4.83 0 9.11-3.08 10.64-7.66l18.19-54.64c3.3-9.81 12.44-16.41 22.78-16.41s19.48 6.59 22.77 16.41l13.88 41.64c19.77-16.19 54.05-9.7 66 14.16 2.02 4.06 5.96 6.5 10.16 6.5zM377 105L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9z\"]\n};\nvar faFileCsv = {\n prefix: 'fas',\n iconName: 'file-csv',\n icon: [384, 512, [], \"f6dd\", \"M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm-96 144c0 4.42-3.58 8-8 8h-8c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h8c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8h-8c-26.51 0-48-21.49-48-48v-32c0-26.51 21.49-48 48-48h8c4.42 0 8 3.58 8 8v16zm44.27 104H160c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h12.27c5.95 0 10.41-3.5 10.41-6.62 0-1.3-.75-2.66-2.12-3.84l-21.89-18.77c-8.47-7.22-13.33-17.48-13.33-28.14 0-21.3 19.02-38.62 42.41-38.62H200c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8h-12.27c-5.95 0-10.41 3.5-10.41 6.62 0 1.3.75 2.66 2.12 3.84l21.89 18.77c8.47 7.22 13.33 17.48 13.33 28.14.01 21.29-19 38.62-42.39 38.62zM256 264v20.8c0 20.27 5.7 40.17 16 56.88 10.3-16.7 16-36.61 16-56.88V264c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v20.8c0 35.48-12.88 68.89-36.28 94.09-3.02 3.25-7.27 5.11-11.72 5.11s-8.7-1.86-11.72-5.11c-23.4-25.2-36.28-58.61-36.28-94.09V264c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8zm121-159L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9z\"]\n};\nvar faFileDownload = {\n prefix: 'fas',\n iconName: 'file-download',\n icon: [384, 512, [], \"f56d\", \"M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm76.45 211.36l-96.42 95.7c-6.65 6.61-17.39 6.61-24.04 0l-96.42-95.7C73.42 337.29 80.54 320 94.82 320H160v-80c0-8.84 7.16-16 16-16h32c8.84 0 16 7.16 16 16v80h65.18c14.28 0 21.4 17.29 11.27 27.36zM377 105L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9z\"]\n};\nvar faFileExcel = {\n prefix: 'fas',\n iconName: 'file-excel',\n icon: [384, 512, [], \"f1c3\", \"M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm60.1 106.5L224 336l60.1 93.5c5.1 8-.6 18.5-10.1 18.5h-34.9c-4.4 0-8.5-2.4-10.6-6.3C208.9 405.5 192 373 192 373c-6.4 14.8-10 20-36.6 68.8-2.1 3.9-6.1 6.3-10.5 6.3H110c-9.5 0-15.2-10.5-10.1-18.5l60.3-93.5-60.3-93.5c-5.2-8 .6-18.5 10.1-18.5h34.8c4.4 0 8.5 2.4 10.6 6.3 26.1 48.8 20 33.6 36.6 68.5 0 0 6.1-11.7 36.6-68.5 2.1-3.9 6.2-6.3 10.6-6.3H274c9.5-.1 15.2 10.4 10.1 18.4zM384 121.9v6.1H256V0h6.1c6.4 0 12.5 2.5 17 7l97.9 98c4.5 4.5 7 10.6 7 16.9z\"]\n};\nvar faFileExport = {\n prefix: 'fas',\n iconName: 'file-export',\n icon: [576, 512, [], \"f56e\", \"M384 121.9c0-6.3-2.5-12.4-7-16.9L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128zM571 308l-95.7-96.4c-10.1-10.1-27.4-3-27.4 11.3V288h-64v64h64v65.2c0 14.3 17.3 21.4 27.4 11.3L571 332c6.6-6.6 6.6-17.4 0-24zm-379 28v-32c0-8.8 7.2-16 16-16h176V160H248c-13.2 0-24-10.8-24-24V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V352H208c-8.8 0-16-7.2-16-16z\"]\n};\nvar faFileImage = {\n prefix: 'fas',\n iconName: 'file-image',\n icon: [384, 512, [], \"f1c5\", \"M384 121.941V128H256V0h6.059a24 24 0 0 1 16.97 7.029l97.941 97.941a24.002 24.002 0 0 1 7.03 16.971zM248 160c-13.2 0-24-10.8-24-24V0H24C10.745 0 0 10.745 0 24v464c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24V160H248zm-135.455 16c26.51 0 48 21.49 48 48s-21.49 48-48 48-48-21.49-48-48 21.491-48 48-48zm208 240h-256l.485-48.485L104.545 328c4.686-4.686 11.799-4.201 16.485.485L160.545 368 264.06 264.485c4.686-4.686 12.284-4.686 16.971 0L320.545 304v112z\"]\n};\nvar faFileImport = {\n prefix: 'fas',\n iconName: 'file-import',\n icon: [512, 512, [], \"f56f\", \"M16 288c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h112v-64zm489-183L407.1 7c-4.5-4.5-10.6-7-17-7H384v128h128v-6.1c0-6.3-2.5-12.4-7-16.9zm-153 31V0H152c-13.3 0-24 10.7-24 24v264h128v-65.2c0-14.3 17.3-21.4 27.4-11.3L379 308c6.6 6.7 6.6 17.4 0 24l-95.7 96.4c-10.1 10.1-27.4 3-27.4-11.3V352H128v136c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H376c-13.2 0-24-10.8-24-24z\"]\n};\nvar faFileInvoice = {\n prefix: 'fas',\n iconName: 'file-invoice',\n icon: [384, 512, [], \"f570\", \"M288 256H96v64h192v-64zm89-151L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9zm-153 31V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zM64 72c0-4.42 3.58-8 8-8h80c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8V72zm0 64c0-4.42 3.58-8 8-8h80c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8v-16zm256 304c0 4.42-3.58 8-8 8h-80c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h80c4.42 0 8 3.58 8 8v16zm0-200v96c0 8.84-7.16 16-16 16H80c-8.84 0-16-7.16-16-16v-96c0-8.84 7.16-16 16-16h224c8.84 0 16 7.16 16 16z\"]\n};\nvar faFileInvoiceDollar = {\n prefix: 'fas',\n iconName: 'file-invoice-dollar',\n icon: [384, 512, [], \"f571\", \"M377 105L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9zm-153 31V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zM64 72c0-4.42 3.58-8 8-8h80c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8V72zm0 80v-16c0-4.42 3.58-8 8-8h80c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8zm144 263.88V440c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-24.29c-11.29-.58-22.27-4.52-31.37-11.35-3.9-2.93-4.1-8.77-.57-12.14l11.75-11.21c2.77-2.64 6.89-2.76 10.13-.73 3.87 2.42 8.26 3.72 12.82 3.72h28.11c6.5 0 11.8-5.92 11.8-13.19 0-5.95-3.61-11.19-8.77-12.73l-45-13.5c-18.59-5.58-31.58-23.42-31.58-43.39 0-24.52 19.05-44.44 42.67-45.07V232c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v24.29c11.29.58 22.27 4.51 31.37 11.35 3.9 2.93 4.1 8.77.57 12.14l-11.75 11.21c-2.77 2.64-6.89 2.76-10.13.73-3.87-2.43-8.26-3.72-12.82-3.72h-28.11c-6.5 0-11.8 5.92-11.8 13.19 0 5.95 3.61 11.19 8.77 12.73l45 13.5c18.59 5.58 31.58 23.42 31.58 43.39 0 24.53-19.05 44.44-42.67 45.07z\"]\n};\nvar faFileMedical = {\n prefix: 'fas',\n iconName: 'file-medical',\n icon: [384, 512, [], \"f477\", \"M377 105L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9zm-153 31V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm64 160v48c0 4.4-3.6 8-8 8h-56v56c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-56h-56c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h56v-56c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v56h56c4.4 0 8 3.6 8 8z\"]\n};\nvar faFileMedicalAlt = {\n prefix: 'fas',\n iconName: 'file-medical-alt',\n icon: [448, 512, [], \"f478\", \"M288 136V0H88C74.7 0 64 10.7 64 24v232H8c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8h140.9c3 0 5.8 1.7 7.2 4.4l19.9 39.8 56.8-113.7c2.9-5.9 11.4-5.9 14.3 0l34.7 69.5H352c8.8 0 16 7.2 16 16s-7.2 16-16 16h-89.9L240 275.8l-56.8 113.7c-2.9 5.9-11.4 5.9-14.3 0L134.1 320H64v168c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H312c-13.2 0-24-10.8-24-24zm153-31L343.1 7c-4.5-4.5-10.6-7-17-7H320v128h128v-6.1c0-6.3-2.5-12.4-7-16.9z\"]\n};\nvar faFilePdf = {\n prefix: 'fas',\n iconName: 'file-pdf',\n icon: [384, 512, [], \"f1c1\", \"M181.9 256.1c-5-16-4.9-46.9-2-46.9 8.4 0 7.6 36.9 2 46.9zm-1.7 47.2c-7.7 20.2-17.3 43.3-28.4 62.7 18.3-7 39-17.2 62.9-21.9-12.7-9.6-24.9-23.4-34.5-40.8zM86.1 428.1c0 .8 13.2-5.4 34.9-40.2-6.7 6.3-29.1 24.5-34.9 40.2zM248 160h136v328c0 13.3-10.7 24-24 24H24c-13.3 0-24-10.7-24-24V24C0 10.7 10.7 0 24 0h200v136c0 13.2 10.8 24 24 24zm-8 171.8c-20-12.2-33.3-29-42.7-53.8 4.5-18.5 11.6-46.6 6.2-64.2-4.7-29.4-42.4-26.5-47.8-6.8-5 18.3-.4 44.1 8.1 77-11.6 27.6-28.7 64.6-40.8 85.8-.1 0-.1.1-.2.1-27.1 13.9-73.6 44.5-54.5 68 5.6 6.9 16 10 21.5 10 17.9 0 35.7-18 61.1-61.8 25.8-8.5 54.1-19.1 79-23.2 21.7 11.8 47.1 19.5 64 19.5 29.2 0 31.2-32 19.7-43.4-13.9-13.6-54.3-9.7-73.6-7.2zM377 105L279 7c-4.5-4.5-10.6-7-17-7h-6v128h128v-6.1c0-6.3-2.5-12.4-7-16.9zm-74.1 255.3c4.1-2.7-2.5-11.9-42.8-9 37.1 15.8 42.8 9 42.8 9z\"]\n};\nvar faFilePowerpoint = {\n prefix: 'fas',\n iconName: 'file-powerpoint',\n icon: [384, 512, [], \"f1c4\", \"M193.7 271.2c8.8 0 15.5 2.7 20.3 8.1 9.6 10.9 9.8 32.7-.2 44.1-4.9 5.6-11.9 8.5-21.1 8.5h-26.9v-60.7h27.9zM377 105L279 7c-4.5-4.5-10.6-7-17-7h-6v128h128v-6.1c0-6.3-2.5-12.4-7-16.9zm-153 31V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm53 165.2c0 90.3-88.8 77.6-111.1 77.6V436c0 6.6-5.4 12-12 12h-30.8c-6.6 0-12-5.4-12-12V236.2c0-6.6 5.4-12 12-12h81c44.5 0 72.9 32.8 72.9 77z\"]\n};\nvar faFilePrescription = {\n prefix: 'fas',\n iconName: 'file-prescription',\n icon: [384, 512, [], \"f572\", \"M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm68.53 179.48l11.31 11.31c6.25 6.25 6.25 16.38 0 22.63l-29.9 29.9L304 409.38c6.25 6.25 6.25 16.38 0 22.63l-11.31 11.31c-6.25 6.25-16.38 6.25-22.63 0L240 413.25l-30.06 30.06c-6.25 6.25-16.38 6.25-22.63 0L176 432c-6.25-6.25-6.25-16.38 0-22.63l30.06-30.06L146.74 320H128v48c0 8.84-7.16 16-16 16H96c-8.84 0-16-7.16-16-16V208c0-8.84 7.16-16 16-16h80c35.35 0 64 28.65 64 64 0 24.22-13.62 45.05-33.46 55.92L240 345.38l29.9-29.9c6.25-6.25 16.38-6.25 22.63 0zM176 272h-48v-32h48c8.82 0 16 7.18 16 16s-7.18 16-16 16zm208-150.1v6.1H256V0h6.1c6.4 0 12.5 2.5 17 7l97.9 98c4.5 4.5 7 10.6 7 16.9z\"]\n};\nvar faFileSignature = {\n prefix: 'fas',\n iconName: 'file-signature',\n icon: [576, 512, [], \"f573\", \"M218.17 424.14c-2.95-5.92-8.09-6.52-10.17-6.52s-7.22.59-10.02 6.19l-7.67 15.34c-6.37 12.78-25.03 11.37-29.48-2.09L144 386.59l-10.61 31.88c-5.89 17.66-22.38 29.53-41 29.53H80c-8.84 0-16-7.16-16-16s7.16-16 16-16h12.39c4.83 0 9.11-3.08 10.64-7.66l18.19-54.64c3.3-9.81 12.44-16.41 22.78-16.41s19.48 6.59 22.77 16.41l13.88 41.64c19.75-16.19 54.06-9.7 66 14.16 1.89 3.78 5.49 5.95 9.36 6.26v-82.12l128-127.09V160H248c-13.2 0-24-10.8-24-24V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24v-40l-128-.11c-16.12-.31-30.58-9.28-37.83-23.75zM384 121.9c0-6.3-2.5-12.4-7-16.9L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1zm-96 225.06V416h68.99l161.68-162.78-67.88-67.88L288 346.96zm280.54-179.63l-31.87-31.87c-9.94-9.94-26.07-9.94-36.01 0l-27.25 27.25 67.88 67.88 27.25-27.25c9.95-9.94 9.95-26.07 0-36.01z\"]\n};\nvar faFileUpload = {\n prefix: 'fas',\n iconName: 'file-upload',\n icon: [384, 512, [], \"f574\", \"M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm65.18 216.01H224v80c0 8.84-7.16 16-16 16h-32c-8.84 0-16-7.16-16-16v-80H94.82c-14.28 0-21.41-17.29-11.27-27.36l96.42-95.7c6.65-6.61 17.39-6.61 24.04 0l96.42 95.7c10.15 10.07 3.03 27.36-11.25 27.36zM377 105L279.1 7c-4.5-4.5-10.6-7-17-7H256v128h128v-6.1c0-6.3-2.5-12.4-7-16.9z\"]\n};\nvar faFileVideo = {\n prefix: 'fas',\n iconName: 'file-video',\n icon: [384, 512, [], \"f1c8\", \"M384 121.941V128H256V0h6.059c6.365 0 12.47 2.529 16.971 7.029l97.941 97.941A24.005 24.005 0 0 1 384 121.941zM224 136V0H24C10.745 0 0 10.745 0 24v464c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24V160H248c-13.2 0-24-10.8-24-24zm96 144.016v111.963c0 21.445-25.943 31.998-40.971 16.971L224 353.941V392c0 13.255-10.745 24-24 24H88c-13.255 0-24-10.745-24-24V280c0-13.255 10.745-24 24-24h112c13.255 0 24 10.745 24 24v38.059l55.029-55.013c15.011-15.01 40.971-4.491 40.971 16.97z\"]\n};\nvar faFileWord = {\n prefix: 'fas',\n iconName: 'file-word',\n icon: [384, 512, [], \"f1c2\", \"M224 136V0H24C10.7 0 0 10.7 0 24v464c0 13.3 10.7 24 24 24h336c13.3 0 24-10.7 24-24V160H248c-13.2 0-24-10.8-24-24zm57.1 120H305c7.7 0 13.4 7.1 11.7 14.7l-38 168c-1.2 5.5-6.1 9.3-11.7 9.3h-38c-5.5 0-10.3-3.8-11.6-9.1-25.8-103.5-20.8-81.2-25.6-110.5h-.5c-1.1 14.3-2.4 17.4-25.6 110.5-1.3 5.3-6.1 9.1-11.6 9.1H117c-5.6 0-10.5-3.9-11.7-9.4l-37.8-168c-1.7-7.5 4-14.6 11.7-14.6h24.5c5.7 0 10.7 4 11.8 9.7 15.6 78 20.1 109.5 21 122.2 1.6-10.2 7.3-32.7 29.4-122.7 1.3-5.4 6.1-9.1 11.7-9.1h29.1c5.6 0 10.4 3.8 11.7 9.2 24 100.4 28.8 124 29.6 129.4-.2-11.2-2.6-17.8 21.6-129.2 1-5.6 5.9-9.5 11.5-9.5zM384 121.9v6.1H256V0h6.1c6.4 0 12.5 2.5 17 7l97.9 98c4.5 4.5 7 10.6 7 16.9z\"]\n};\nvar faFill = {\n prefix: 'fas',\n iconName: 'fill',\n icon: [512, 512, [], \"f575\", \"M502.63 217.06L294.94 9.37C288.69 3.12 280.5 0 272.31 0s-16.38 3.12-22.62 9.37l-81.58 81.58L81.93 4.77c-6.24-6.25-16.38-6.25-22.62 0L36.69 27.38c-6.24 6.25-6.24 16.38 0 22.63l86.19 86.18-94.76 94.76c-37.49 37.49-37.49 98.26 0 135.75l117.19 117.19c18.75 18.74 43.31 28.12 67.87 28.12 24.57 0 49.13-9.37 67.88-28.12l221.57-221.57c12.49-12.5 12.49-32.76 0-45.26zm-116.22 70.97H65.93c1.36-3.84 3.57-7.98 7.43-11.83l13.15-13.15 81.61-81.61 58.61 58.6c12.49 12.49 32.75 12.49 45.24 0 12.49-12.49 12.49-32.75 0-45.24l-58.61-58.6 58.95-58.95 162.45 162.44-48.35 48.34z\"]\n};\nvar faFillDrip = {\n prefix: 'fas',\n iconName: 'fill-drip',\n icon: [576, 512, [], \"f576\", \"M512 320s-64 92.65-64 128c0 35.35 28.66 64 64 64s64-28.65 64-64-64-128-64-128zm-9.37-102.94L294.94 9.37C288.69 3.12 280.5 0 272.31 0s-16.38 3.12-22.62 9.37l-81.58 81.58L81.93 4.76c-6.25-6.25-16.38-6.25-22.62 0L36.69 27.38c-6.24 6.25-6.24 16.38 0 22.62l86.19 86.18-94.76 94.76c-37.49 37.48-37.49 98.26 0 135.75l117.19 117.19c18.74 18.74 43.31 28.12 67.87 28.12 24.57 0 49.13-9.37 67.87-28.12l221.57-221.57c12.5-12.5 12.5-32.75.01-45.25zm-116.22 70.97H65.93c1.36-3.84 3.57-7.98 7.43-11.83l13.15-13.15 81.61-81.61 58.6 58.6c12.49 12.49 32.75 12.49 45.24 0s12.49-32.75 0-45.24l-58.6-58.6 58.95-58.95 162.44 162.44-48.34 48.34z\"]\n};\nvar faFilm = {\n prefix: 'fas',\n iconName: 'film',\n icon: [512, 512, [], \"f008\", \"M488 64h-8v20c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12V64H96v20c0 6.6-5.4 12-12 12H44c-6.6 0-12-5.4-12-12V64h-8C10.7 64 0 74.7 0 88v336c0 13.3 10.7 24 24 24h8v-20c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v20h320v-20c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v20h8c13.3 0 24-10.7 24-24V88c0-13.3-10.7-24-24-24zM96 372c0 6.6-5.4 12-12 12H44c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm0-96c0 6.6-5.4 12-12 12H44c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm0-96c0 6.6-5.4 12-12 12H44c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm272 208c0 6.6-5.4 12-12 12H156c-6.6 0-12-5.4-12-12v-96c0-6.6 5.4-12 12-12h200c6.6 0 12 5.4 12 12v96zm0-168c0 6.6-5.4 12-12 12H156c-6.6 0-12-5.4-12-12v-96c0-6.6 5.4-12 12-12h200c6.6 0 12 5.4 12 12v96zm112 152c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm0-96c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm0-96c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40z\"]\n};\nvar faFilter = {\n prefix: 'fas',\n iconName: 'filter',\n icon: [512, 512, [], \"f0b0\", \"M487.976 0H24.028C2.71 0-8.047 25.866 7.058 40.971L192 225.941V432c0 7.831 3.821 15.17 10.237 19.662l80 55.98C298.02 518.69 320 507.493 320 487.98V225.941l184.947-184.97C520.021 25.896 509.338 0 487.976 0z\"]\n};\nvar faFingerprint = {\n prefix: 'fas',\n iconName: 'fingerprint',\n icon: [512, 512, [], \"f577\", \"M256.12 245.96c-13.25 0-24 10.74-24 24 1.14 72.25-8.14 141.9-27.7 211.55-2.73 9.72 2.15 30.49 23.12 30.49 10.48 0 20.11-6.92 23.09-17.52 13.53-47.91 31.04-125.41 29.48-224.52.01-13.25-10.73-24-23.99-24zm-.86-81.73C194 164.16 151.25 211.3 152.1 265.32c.75 47.94-3.75 95.91-13.37 142.55-2.69 12.98 5.67 25.69 18.64 28.36 13.05 2.67 25.67-5.66 28.36-18.64 10.34-50.09 15.17-101.58 14.37-153.02-.41-25.95 19.92-52.49 54.45-52.34 31.31.47 57.15 25.34 57.62 55.47.77 48.05-2.81 96.33-10.61 143.55-2.17 13.06 6.69 25.42 19.76 27.58 19.97 3.33 26.81-15.1 27.58-19.77 8.28-50.03 12.06-101.21 11.27-152.11-.88-55.8-47.94-101.88-104.91-102.72zm-110.69-19.78c-10.3-8.34-25.37-6.8-33.76 3.48-25.62 31.5-39.39 71.28-38.75 112 .59 37.58-2.47 75.27-9.11 112.05-2.34 13.05 6.31 25.53 19.36 27.89 20.11 3.5 27.07-14.81 27.89-19.36 7.19-39.84 10.5-80.66 9.86-121.33-.47-29.88 9.2-57.88 28-80.97 8.35-10.28 6.79-25.39-3.49-33.76zm109.47-62.33c-15.41-.41-30.87 1.44-45.78 4.97-12.89 3.06-20.87 15.98-17.83 28.89 3.06 12.89 16 20.83 28.89 17.83 11.05-2.61 22.47-3.77 34-3.69 75.43 1.13 137.73 61.5 138.88 134.58.59 37.88-1.28 76.11-5.58 113.63-1.5 13.17 7.95 25.08 21.11 26.58 16.72 1.95 25.51-11.88 26.58-21.11a929.06 929.06 0 0 0 5.89-119.85c-1.56-98.75-85.07-180.33-186.16-181.83zm252.07 121.45c-2.86-12.92-15.51-21.2-28.61-18.27-12.94 2.86-21.12 15.66-18.26 28.61 4.71 21.41 4.91 37.41 4.7 61.6-.11 13.27 10.55 24.09 23.8 24.2h.2c13.17 0 23.89-10.61 24-23.8.18-22.18.4-44.11-5.83-72.34zm-40.12-90.72C417.29 43.46 337.6 1.29 252.81.02 183.02-.82 118.47 24.91 70.46 72.94 24.09 119.37-.9 181.04.14 246.65l-.12 21.47c-.39 13.25 10.03 24.31 23.28 24.69.23.02.48.02.72.02 12.92 0 23.59-10.3 23.97-23.3l.16-23.64c-.83-52.5 19.16-101.86 56.28-139 38.76-38.8 91.34-59.67 147.68-58.86 69.45 1.03 134.73 35.56 174.62 92.39 7.61 10.86 22.56 13.45 33.42 5.86 10.84-7.62 13.46-22.59 5.84-33.43z\"]\n};\nvar faFire = {\n prefix: 'fas',\n iconName: 'fire',\n icon: [384, 512, [], \"f06d\", \"M216 23.86c0-23.8-30.65-32.77-44.15-13.04C48 191.85 224 200 224 288c0 35.63-29.11 64.46-64.85 63.99-35.17-.45-63.15-29.77-63.15-64.94v-85.51c0-21.7-26.47-32.23-41.43-16.5C27.8 213.16 0 261.33 0 320c0 105.87 86.13 192 192 192s192-86.13 192-192c0-170.29-168-193-168-296.14z\"]\n};\nvar faFireAlt = {\n prefix: 'fas',\n iconName: 'fire-alt',\n icon: [448, 512, [], \"f7e4\", \"M323.56 51.2c-20.8 19.3-39.58 39.59-56.22 59.97C240.08 73.62 206.28 35.53 168 0 69.74 91.17 0 209.96 0 281.6 0 408.85 100.29 512 224 512s224-103.15 224-230.4c0-53.27-51.98-163.14-124.44-230.4zm-19.47 340.65C282.43 407.01 255.72 416 226.86 416 154.71 416 96 368.26 96 290.75c0-38.61 24.31-72.63 72.79-130.75 6.93 7.98 98.83 125.34 98.83 125.34l58.63-66.88c4.14 6.85 7.91 13.55 11.27 19.97 27.35 52.19 15.81 118.97-33.43 153.42z\"]\n};\nvar faFireExtinguisher = {\n prefix: 'fas',\n iconName: 'fire-extinguisher',\n icon: [448, 512, [], \"f134\", \"M434.027 26.329l-168 28C254.693 56.218 256 67.8 256 72h-58.332C208.353 36.108 181.446 0 144 0c-39.435 0-66.368 39.676-52.228 76.203-52.039 13.051-75.381 54.213-90.049 90.884-4.923 12.307 1.063 26.274 13.37 31.197 12.317 4.926 26.279-1.075 31.196-13.37C75.058 112.99 106.964 120 168 120v27.076c-41.543 10.862-72 49.235-72 94.129V488c0 13.255 10.745 24 24 24h144c13.255 0 24-10.745 24-24V240c0-44.731-30.596-82.312-72-92.97V120h40c0 2.974-1.703 15.716 10.027 17.671l168 28C441.342 166.89 448 161.25 448 153.834V38.166c0-7.416-6.658-13.056-13.973-11.837zM144 72c-8.822 0-16-7.178-16-16s7.178-16 16-16 16 7.178 16 16-7.178 16-16 16z\"]\n};\nvar faFirstAid = {\n prefix: 'fas',\n iconName: 'first-aid',\n icon: [576, 512, [], \"f479\", \"M0 80v352c0 26.5 21.5 48 48 48h48V32H48C21.5 32 0 53.5 0 80zm128 400h320V32H128v448zm64-248c0-4.4 3.6-8 8-8h56v-56c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v56h56c4.4 0 8 3.6 8 8v48c0 4.4-3.6 8-8 8h-56v56c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-56h-56c-4.4 0-8-3.6-8-8v-48zM528 32h-48v448h48c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48z\"]\n};\nvar faFish = {\n prefix: 'fas',\n iconName: 'fish',\n icon: [576, 512, [], \"f578\", \"M327.1 96c-89.97 0-168.54 54.77-212.27 101.63L27.5 131.58c-12.13-9.18-30.24.6-27.14 14.66L24.54 256 .35 365.77c-3.1 14.06 15.01 23.83 27.14 14.66l87.33-66.05C158.55 361.23 237.13 416 327.1 416 464.56 416 576 288 576 256S464.56 96 327.1 96zm87.43 184c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24 13.26 0 24 10.74 24 24 0 13.25-10.75 24-24 24z\"]\n};\nvar faFistRaised = {\n prefix: 'fas',\n iconName: 'fist-raised',\n icon: [384, 512, [], \"f6de\", \"M255.98 160V16c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v146.93c5.02-1.78 10.34-2.93 15.97-2.93h48.03zm128 95.99c-.01-35.34-28.66-63.99-63.99-63.99H207.85c-8.78 0-15.9 7.07-15.9 15.85v.56c0 26.27 21.3 47.59 47.57 47.59h35.26c9.68 0 13.2 3.58 13.2 8v16.2c0 4.29-3.59 7.78-7.88 8-44.52 2.28-64.16 24.71-96.05 72.55l-6.31 9.47a7.994 7.994 0 0 1-11.09 2.22l-13.31-8.88a7.994 7.994 0 0 1-2.22-11.09l6.31-9.47c15.73-23.6 30.2-43.26 47.31-58.08-17.27-5.51-31.4-18.12-38.87-34.45-6.59 3.41-13.96 5.52-21.87 5.52h-32c-12.34 0-23.49-4.81-32-12.48C71.48 251.19 60.33 256 48 256H16c-5.64 0-10.97-1.15-16-2.95v77.93c0 33.95 13.48 66.5 37.49 90.51L63.99 448v64h255.98v-63.96l35.91-35.92A96.035 96.035 0 0 0 384 344.21l-.02-88.22zm-32.01-90.09V48c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v112h32c11.28 0 21.94 2.31 32 5.9zM16 224h32c8.84 0 16-7.16 16-16V80c0-8.84-7.16-16-16-16H16C7.16 64 0 71.16 0 80v128c0 8.84 7.16 16 16 16zm95.99 0h32c8.84 0 16-7.16 16-16V48c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v160c0 8.84 7.16 16 16 16z\"]\n};\nvar faFlag = {\n prefix: 'fas',\n iconName: 'flag',\n icon: [512, 512, [], \"f024\", \"M349.565 98.783C295.978 98.783 251.721 64 184.348 64c-24.955 0-47.309 4.384-68.045 12.013a55.947 55.947 0 0 0 3.586-23.562C118.117 24.015 94.806 1.206 66.338.048 34.345-1.254 8 24.296 8 56c0 19.026 9.497 35.825 24 45.945V488c0 13.255 10.745 24 24 24h16c13.255 0 24-10.745 24-24v-94.4c28.311-12.064 63.582-22.122 114.435-22.122 53.588 0 97.844 34.783 165.217 34.783 48.169 0 86.667-16.294 122.505-40.858C506.84 359.452 512 349.571 512 339.045v-243.1c0-23.393-24.269-38.87-45.485-29.016-34.338 15.948-76.454 31.854-116.95 31.854z\"]\n};\nvar faFlagCheckered = {\n prefix: 'fas',\n iconName: 'flag-checkered',\n icon: [512, 512, [], \"f11e\", \"M243.2 189.9V258c26.1 5.9 49.3 15.6 73.6 22.3v-68.2c-26-5.8-49.4-15.5-73.6-22.2zm223.3-123c-34.3 15.9-76.5 31.9-117 31.9C296 98.8 251.7 64 184.3 64c-25 0-47.3 4.4-68 12 2.8-7.3 4.1-15.2 3.6-23.6C118.1 24 94.8 1.2 66.3 0 34.3-1.3 8 24.3 8 56c0 19 9.5 35.8 24 45.9V488c0 13.3 10.7 24 24 24h16c13.3 0 24-10.7 24-24v-94.4c28.3-12.1 63.6-22.1 114.4-22.1 53.6 0 97.8 34.8 165.2 34.8 48.2 0 86.7-16.3 122.5-40.9 8.7-6 13.8-15.8 13.8-26.4V95.9c.1-23.3-24.2-38.8-45.4-29zM169.6 325.5c-25.8 2.7-50 8.2-73.6 16.6v-70.5c26.2-9.3 47.5-15 73.6-17.4zM464 191c-23.6 9.8-46.3 19.5-73.6 23.9V286c24.8-3.4 51.4-11.8 73.6-26v70.5c-25.1 16.1-48.5 24.7-73.6 27.1V286c-27 3.7-47.9 1.5-73.6-5.6v67.4c-23.9-7.4-47.3-16.7-73.6-21.3V258c-19.7-4.4-40.8-6.8-73.6-3.8v-70c-22.4 3.1-44.6 10.2-73.6 20.9v-70.5c33.2-12.2 50.1-19.8 73.6-22v71.6c27-3.7 48.4-1.3 73.6 5.7v-67.4c23.7 7.4 47.2 16.7 73.6 21.3v68.4c23.7 5.3 47.6 6.9 73.6 2.7V143c27-4.8 52.3-13.6 73.6-22.5z\"]\n};\nvar faFlagUsa = {\n prefix: 'fas',\n iconName: 'flag-usa',\n icon: [512, 512, [], \"f74d\", \"M32 0C14.3 0 0 14.3 0 32v464c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V32C64 14.3 49.7 0 32 0zm267.9 303.6c-57.2-15.1-111.7-28.8-203.9 11.1V384c185.7-92.2 221.7 53.3 397.5-23.1 11.4-5 18.5-16.5 18.5-28.8v-36c-43.6 17.3-80.2 24.1-112.1 24.1-37.4-.1-68.9-8.4-100-16.6zm0-96c-57.2-15.1-111.7-28.8-203.9 11.1v61.5c94.8-37.6 154.6-22.7 212.1-7.6 57.2 15.1 111.7 28.8 203.9-11.1V200c-43.6 17.3-80.2 24.1-112.1 24.1-37.4 0-68.9-8.3-100-16.5zm9.5-125.9c51.8 15.6 97.4 29 202.6-20.1V30.8c0-25.1-26.8-38.1-49.4-26.6C291.3 91.5 305.4-62.2 96 32.4v151.9c94.8-37.5 154.6-22.7 212.1-7.6 57.2 15 111.7 28.7 203.9-11.1V96.7c-53.6 23.5-93.3 31.4-126.1 31.4s-59-7.8-85.7-15.9c-4-1.2-8.1-2.4-12.1-3.5V75.5c7.2 2 14.3 4.1 21.3 6.2zM160 128.1c-8.8 0-16-7.1-16-16 0-8.8 7.2-16 16-16s16 7.1 16 16-7.2 16-16 16zm0-55.8c-8.8 0-16-7.1-16-16 0-8.8 7.2-16 16-16s16 7.1 16 16c0 8.8-7.2 16-16 16zm64 47.9c-8.8 0-16-7.1-16-16 0-8.8 7.2-16 16-16s16 7.1 16 16c0 8.8-7.2 16-16 16zm0-55.9c-8.8 0-16-7.1-16-16 0-8.8 7.2-16 16-16s16 7.1 16 16c0 8.8-7.2 16-16 16z\"]\n};\nvar faFlask = {\n prefix: 'fas',\n iconName: 'flask',\n icon: [448, 512, [], \"f0c3\", \"M437.2 403.5L320 215V64h8c13.3 0 24-10.7 24-24V24c0-13.3-10.7-24-24-24H120c-13.3 0-24 10.7-24 24v16c0 13.3 10.7 24 24 24h8v151L10.8 403.5C-18.5 450.6 15.3 512 70.9 512h306.2c55.7 0 89.4-61.5 60.1-108.5zM137.9 320l48.2-77.6c3.7-5.2 5.8-11.6 5.8-18.4V64h64v160c0 6.9 2.2 13.2 5.8 18.4l48.2 77.6h-172z\"]\n};\nvar faFlushed = {\n prefix: 'fas',\n iconName: 'flushed',\n icon: [496, 512, [], \"f579\", \"M344 200c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zm-192 0c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zM248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM80 224c0-39.8 32.2-72 72-72s72 32.2 72 72-32.2 72-72 72-72-32.2-72-72zm232 176H184c-21.2 0-21.2-32 0-32h128c21.2 0 21.2 32 0 32zm32-104c-39.8 0-72-32.2-72-72s32.2-72 72-72 72 32.2 72 72-32.2 72-72 72z\"]\n};\nvar faFolder = {\n prefix: 'fas',\n iconName: 'folder',\n icon: [512, 512, [], \"f07b\", \"M464 128H272l-64-64H48C21.49 64 0 85.49 0 112v288c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V176c0-26.51-21.49-48-48-48z\"]\n};\nvar faFolderMinus = {\n prefix: 'fas',\n iconName: 'folder-minus',\n icon: [512, 512, [], \"f65d\", \"M464 128H272l-64-64H48C21.49 64 0 85.49 0 112v288c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V176c0-26.51-21.49-48-48-48zm-96 168c0 8.84-7.16 16-16 16H160c-8.84 0-16-7.16-16-16v-16c0-8.84 7.16-16 16-16h192c8.84 0 16 7.16 16 16v16z\"]\n};\nvar faFolderOpen = {\n prefix: 'fas',\n iconName: 'folder-open',\n icon: [576, 512, [], \"f07c\", \"M572.694 292.093L500.27 416.248A63.997 63.997 0 0 1 444.989 448H45.025c-18.523 0-30.064-20.093-20.731-36.093l72.424-124.155A64 64 0 0 1 152 256h399.964c18.523 0 30.064 20.093 20.73 36.093zM152 224h328v-48c0-26.51-21.49-48-48-48H272l-64-64H48C21.49 64 0 85.49 0 112v278.046l69.077-118.418C86.214 242.25 117.989 224 152 224z\"]\n};\nvar faFolderPlus = {\n prefix: 'fas',\n iconName: 'folder-plus',\n icon: [512, 512, [], \"f65e\", \"M464 128H272l-64-64H48C21.49 64 0 85.49 0 112v288c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V176c0-26.51-21.49-48-48-48zm-96 168c0 8.84-7.16 16-16 16h-72v72c0 8.84-7.16 16-16 16h-16c-8.84 0-16-7.16-16-16v-72h-72c-8.84 0-16-7.16-16-16v-16c0-8.84 7.16-16 16-16h72v-72c0-8.84 7.16-16 16-16h16c8.84 0 16 7.16 16 16v72h72c8.84 0 16 7.16 16 16v16z\"]\n};\nvar faFont = {\n prefix: 'fas',\n iconName: 'font',\n icon: [448, 512, [], \"f031\", \"M432 416h-23.41L277.88 53.69A32 32 0 0 0 247.58 32h-47.16a32 32 0 0 0-30.3 21.69L39.41 416H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-19.58l23.3-64h152.56l23.3 64H304a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM176.85 272L224 142.51 271.15 272z\"]\n};\nvar faFontAwesomeLogoFull = {\n prefix: 'fas',\n iconName: 'font-awesome-logo-full',\n icon: [3992, 512, [\"Font Awesome\"], \"f4e6\", \"M454.6 0H57.4C25.9 0 0 25.9 0 57.4v397.3C0 486.1 25.9 512 57.4 512h397.3c31.4 0 57.4-25.9 57.4-57.4V57.4C512 25.9 486.1 0 454.6 0zm-58.9 324.9c0 4.8-4.1 6.9-8.9 8.9-19.2 8.1-39.7 15.7-61.5 15.7-40.5 0-68.7-44.8-163.2 2.5v51.8c0 30.3-45.7 30.2-45.7 0v-250c-9-7-15-17.9-15-30.3 0-21 17.1-38.2 38.2-38.2 21 0 38.2 17.1 38.2 38.2 0 12.2-5.8 23.2-14.9 30.2v21c37.1-12 65.5-34.4 146.1-3.4 26.6 11.4 68.7-15.7 76.5-15.7 5.5 0 10.3 4.1 10.3 8.9v160.4zm432.9-174.2h-137v70.1H825c39.8 0 40.4 62.2 0 62.2H691.6v105.6c0 45.5-70.7 46.4-70.7 0V128.3c0-22 18-39.8 39.8-39.8h167.8c39.6 0 40.5 62.2.1 62.2zm191.1 23.4c-169.3 0-169.1 252.4 0 252.4 169.9 0 169.9-252.4 0-252.4zm0 196.1c-81.6 0-82.1-139.8 0-139.8 82.5 0 82.4 139.8 0 139.8zm372.4 53.4c-17.5 0-31.4-13.9-31.4-31.4v-117c0-62.4-72.6-52.5-99.1-16.4v133.4c0 41.5-63.3 41.8-63.3 0V208c0-40 63.1-41.6 63.1 0v3.4c43.3-51.6 162.4-60.4 162.4 39.3v141.5c.3 30.4-31.5 31.4-31.7 31.4zm179.7 2.9c-44.3 0-68.3-22.9-68.3-65.8V235.2H1488c-35.6 0-36.7-55.3 0-55.3h15.5v-37.3c0-41.3 63.8-42.1 63.8 0v37.5h24.9c35.4 0 35.7 55.3 0 55.3h-24.9v108.5c0 29.6 26.1 26.3 27.4 26.3 31.4 0 52.6 56.3-22.9 56.3zM1992 123c-19.5-50.2-95.5-50-114.5 0-107.3 275.7-99.5 252.7-99.5 262.8 0 42.8 58.3 51.2 72.1 14.4l13.5-35.9H2006l13 35.9c14.2 37.7 72.1 27.2 72.1-14.4 0-10.1 5.3 6.8-99.1-262.8zm-108.9 179.1l51.7-142.9 51.8 142.9h-103.5zm591.3-85.6l-53.7 176.3c-12.4 41.2-72 41-84 0l-42.3-135.9-42.3 135.9c-12.4 40.9-72 41.2-84.5 0l-54.2-176.3c-12.5-39.4 49.8-56.1 60.2-16.9L2213 342l45.3-139.5c10.9-32.7 59.6-34.7 71.2 0l45.3 139.5 39.3-142.4c10.3-38.3 72.6-23.8 60.3 16.9zm275.4 75.1c0-42.4-33.9-117.5-119.5-117.5-73.2 0-124.4 56.3-124.4 126 0 77.2 55.3 126.4 128.5 126.4 31.7 0 93-11.5 93-39.8 0-18.3-21.1-31.5-39.3-22.4-49.4 26.2-109 8.4-115.9-43.8h148.3c16.3 0 29.3-13.4 29.3-28.9zM2571 277.7c9.5-73.4 113.9-68.6 118.6 0H2571zm316.7 148.8c-31.4 0-81.6-10.5-96.6-31.9-12.4-17 2.5-39.8 21.8-39.8 16.3 0 36.8 22.9 77.7 22.9 27.4 0 40.4-11 40.4-25.8 0-39.8-142.9-7.4-142.9-102 0-40.4 35.3-75.7 98.6-75.7 31.4 0 74.1 9.9 87.6 29.4 10.8 14.8-1.4 36.2-20.9 36.2-15.1 0-26.7-17.3-66.2-17.3-22.9 0-37.8 10.5-37.8 23.8 0 35.9 142.4 6 142.4 103.1-.1 43.7-37.4 77.1-104.1 77.1zm266.8-252.4c-169.3 0-169.1 252.4 0 252.4 170.1 0 169.6-252.4 0-252.4zm0 196.1c-81.8 0-82-139.8 0-139.8 82.5 0 82.4 139.8 0 139.8zm476.9 22V268.7c0-53.8-61.4-45.8-85.7-10.5v134c0 41.3-63.8 42.1-63.8 0V268.7c0-52.1-59.5-47.4-85.7-10.1v133.6c0 41.5-63.3 41.8-63.3 0V208c0-40 63.1-41.6 63.1 0v3.4c9.9-14.4 41.8-37.3 78.6-37.3 35.3 0 57.7 16.4 66.7 43.8 13.9-21.8 45.8-43.8 82.6-43.8 44.3 0 70.7 23.4 70.7 72.7v145.3c.5 17.3-13.5 31.4-31.9 31.4 3.5.1-31.3 1.1-31.3-31.3zM3992 291.6c0-42.4-32.4-117.5-117.9-117.5-73.2 0-127.5 56.3-127.5 126 0 77.2 58.3 126.4 131.6 126.4 31.7 0 91.5-11.5 91.5-39.8 0-18.3-21.1-31.5-39.3-22.4-49.4 26.2-110.5 8.4-117.5-43.8h149.8c16.3 0 29.1-13.4 29.3-28.9zm-180.5-13.9c9.7-74.4 115.9-68.3 120.1 0h-120.1z\"]\n};\nvar faFootballBall = {\n prefix: 'fas',\n iconName: 'football-ball',\n icon: [496, 512, [], \"f44e\", \"M481.5 60.3c-4.8-18.2-19.1-32.5-37.3-37.4C420.3 16.5 383 8.9 339.4 8L496 164.8c-.8-43.5-8.2-80.6-14.5-104.5zm-467 391.4c4.8 18.2 19.1 32.5 37.3 37.4 23.9 6.4 61.2 14 104.8 14.9L0 347.2c.8 43.5 8.2 80.6 14.5 104.5zM4.2 283.4L220.4 500c132.5-19.4 248.8-118.7 271.5-271.4L275.6 12C143.1 31.4 26.8 130.7 4.2 283.4zm317.3-123.6c3.1-3.1 8.2-3.1 11.3 0l11.3 11.3c3.1 3.1 3.1 8.2 0 11.3l-28.3 28.3 28.3 28.3c3.1 3.1 3.1 8.2 0 11.3l-11.3 11.3c-3.1 3.1-8.2 3.1-11.3 0l-28.3-28.3-22.6 22.7 28.3 28.3c3.1 3.1 3.1 8.2 0 11.3l-11.3 11.3c-3.1 3.1-8.2 3.1-11.3 0L248 278.6l-22.6 22.6 28.3 28.3c3.1 3.1 3.1 8.2 0 11.3l-11.3 11.3c-3.1 3.1-8.2 3.1-11.3 0l-28.3-28.3-28.3 28.3c-3.1 3.1-8.2 3.1-11.3 0l-11.3-11.3c-3.1-3.1-3.1-8.2 0-11.3l28.3-28.3-28.3-28.2c-3.1-3.1-3.1-8.2 0-11.3l11.3-11.3c3.1-3.1 8.2-3.1 11.3 0l28.3 28.3 22.6-22.6-28.3-28.3c-3.1-3.1-3.1-8.2 0-11.3l11.3-11.3c3.1-3.1 8.2-3.1 11.3 0l28.3 28.3 22.6-22.6-28.3-28.3c-3.1-3.1-3.1-8.2 0-11.3l11.3-11.3c3.1-3.1 8.2-3.1 11.3 0l28.3 28.3 28.3-28.5z\"]\n};\nvar faForward = {\n prefix: 'fas',\n iconName: 'forward',\n icon: [512, 512, [], \"f04e\", \"M500.5 231.4l-192-160C287.9 54.3 256 68.6 256 96v320c0 27.4 31.9 41.8 52.5 24.6l192-160c15.3-12.8 15.3-36.4 0-49.2zm-256 0l-192-160C31.9 54.3 0 68.6 0 96v320c0 27.4 31.9 41.8 52.5 24.6l192-160c15.3-12.8 15.3-36.4 0-49.2z\"]\n};\nvar faFrog = {\n prefix: 'fas',\n iconName: 'frog',\n icon: [576, 512, [], \"f52e\", \"M446.53 97.43C439.67 60.23 407.19 32 368 32c-39.23 0-71.72 28.29-78.54 65.54C126.75 112.96-.5 250.12 0 416.98.11 451.9 29.08 480 64 480h304c8.84 0 16-7.16 16-16 0-17.67-14.33-32-32-32h-79.49l35.8-48.33c24.14-36.23 10.35-88.28-33.71-106.6-23.89-9.93-51.55-4.65-72.24 10.88l-32.76 24.59c-7.06 5.31-17.09 3.91-22.41-3.19-5.3-7.08-3.88-17.11 3.19-22.41l34.78-26.09c36.84-27.66 88.28-27.62 125.13 0 10.87 8.15 45.87 39.06 40.8 93.21L469.62 480H560c8.84 0 16-7.16 16-16 0-17.67-14.33-32-32-32h-53.63l-98.52-104.68 154.44-86.65A58.16 58.16 0 0 0 576 189.94c0-21.4-11.72-40.95-30.48-51.23-40.56-22.22-98.99-41.28-98.99-41.28zM368 136c-13.26 0-24-10.75-24-24 0-13.26 10.74-24 24-24 13.25 0 24 10.74 24 24 0 13.25-10.75 24-24 24z\"]\n};\nvar faFrown = {\n prefix: 'fas',\n iconName: 'frown',\n icon: [496, 512, [], \"f119\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm80 168c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm-160 0c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm170.2 218.2C315.8 367.4 282.9 352 248 352s-67.8 15.4-90.2 42.2c-13.5 16.3-38.1-4.2-24.6-20.5C161.7 339.6 203.6 320 248 320s86.3 19.6 114.7 53.8c13.6 16.2-11 36.7-24.5 20.4z\"]\n};\nvar faFrownOpen = {\n prefix: 'fas',\n iconName: 'frown-open',\n icon: [496, 512, [], \"f57a\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM136 208c0-17.7 14.3-32 32-32s32 14.3 32 32-14.3 32-32 32-32-14.3-32-32zm187.3 183.3c-31.2-9.6-59.4-15.3-75.3-15.3s-44.1 5.7-75.3 15.3c-11.5 3.5-22.5-6.3-20.5-18.1 7-40 60.1-61.2 95.8-61.2s88.8 21.3 95.8 61.2c2 11.9-9.1 21.6-20.5 18.1zM328 240c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z\"]\n};\nvar faFunnelDollar = {\n prefix: 'fas',\n iconName: 'funnel-dollar',\n icon: [640, 512, [], \"f662\", \"M433.46 165.94l101.2-111.87C554.61 34.12 540.48 0 512.26 0H31.74C3.52 0-10.61 34.12 9.34 54.07L192 256v155.92c0 12.59 5.93 24.44 16 32l79.99 60c20.86 15.64 48.47 6.97 59.22-13.57C310.8 455.38 288 406.35 288 352c0-89.79 62.05-165.17 145.46-186.06zM480 192c-88.37 0-160 71.63-160 160s71.63 160 160 160 160-71.63 160-160-71.63-160-160-160zm16 239.88V448c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-16.29c-11.29-.58-22.27-4.52-31.37-11.35-3.9-2.93-4.1-8.77-.57-12.14l11.75-11.21c2.77-2.64 6.89-2.76 10.13-.73 3.87 2.42 8.26 3.72 12.82 3.72h28.11c6.5 0 11.8-5.92 11.8-13.19 0-5.95-3.61-11.19-8.77-12.73l-45-13.5c-18.59-5.58-31.58-23.42-31.58-43.39 0-24.52 19.05-44.44 42.67-45.07V256c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v16.29c11.29.58 22.27 4.51 31.37 11.35 3.9 2.93 4.1 8.77.57 12.14l-11.75 11.21c-2.77 2.64-6.89 2.76-10.13.73-3.87-2.43-8.26-3.72-12.82-3.72h-28.11c-6.5 0-11.8 5.92-11.8 13.19 0 5.95 3.61 11.19 8.77 12.73l45 13.5c18.59 5.58 31.58 23.42 31.58 43.39 0 24.53-19.04 44.44-42.67 45.07z\"]\n};\nvar faFutbol = {\n prefix: 'fas',\n iconName: 'futbol',\n icon: [512, 512, [], \"f1e3\", \"M504 256c0 136.967-111.033 248-248 248S8 392.967 8 256 119.033 8 256 8s248 111.033 248 248zm-48 0l-.003-.282-26.064 22.741-62.679-58.5 16.454-84.355 34.303 3.072c-24.889-34.216-60.004-60.089-100.709-73.141l13.651 31.939L256 139l-74.953-41.525 13.651-31.939c-40.631 13.028-75.78 38.87-100.709 73.141l34.565-3.073 16.192 84.355-62.678 58.5-26.064-22.741-.003.282c0 43.015 13.497 83.952 38.472 117.991l7.704-33.897 85.138 10.447 36.301 77.826-29.902 17.786c40.202 13.122 84.29 13.148 124.572 0l-29.902-17.786 36.301-77.826 85.138-10.447 7.704 33.897C442.503 339.952 456 299.015 456 256zm-248.102 69.571l-29.894-91.312L256 177.732l77.996 56.527-29.622 91.312h-96.476z\"]\n};\nvar faGamepad = {\n prefix: 'fas',\n iconName: 'gamepad',\n icon: [640, 512, [], \"f11b\", \"M480.07 96H160a160 160 0 1 0 114.24 272h91.52A160 160 0 1 0 480.07 96zM248 268a12 12 0 0 1-12 12h-52v52a12 12 0 0 1-12 12h-24a12 12 0 0 1-12-12v-52H84a12 12 0 0 1-12-12v-24a12 12 0 0 1 12-12h52v-52a12 12 0 0 1 12-12h24a12 12 0 0 1 12 12v52h52a12 12 0 0 1 12 12zm216 76a40 40 0 1 1 40-40 40 40 0 0 1-40 40zm64-96a40 40 0 1 1 40-40 40 40 0 0 1-40 40z\"]\n};\nvar faGasPump = {\n prefix: 'fas',\n iconName: 'gas-pump',\n icon: [512, 512, [], \"f52f\", \"M336 448H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h320c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm157.2-340.7l-81-81c-6.2-6.2-16.4-6.2-22.6 0l-11.3 11.3c-6.2 6.2-6.2 16.4 0 22.6L416 97.9V160c0 28.1 20.9 51.3 48 55.2V376c0 13.2-10.8 24-24 24s-24-10.8-24-24v-32c0-48.6-39.4-88-88-88h-8V64c0-35.3-28.7-64-64-64H96C60.7 0 32 28.7 32 64v352h288V304h8c22.1 0 40 17.9 40 40v27.8c0 37.7 27 72 64.5 75.9 43 4.3 79.5-29.5 79.5-71.7V152.6c0-17-6.8-33.3-18.8-45.3zM256 192H96V64h160v128z\"]\n};\nvar faGavel = {\n prefix: 'fas',\n iconName: 'gavel',\n icon: [512, 512, [], \"f0e3\", \"M504.971 199.362l-22.627-22.627c-9.373-9.373-24.569-9.373-33.941 0l-5.657 5.657L329.608 69.255l5.657-5.657c9.373-9.373 9.373-24.569 0-33.941L312.638 7.029c-9.373-9.373-24.569-9.373-33.941 0L154.246 131.48c-9.373 9.373-9.373 24.569 0 33.941l22.627 22.627c9.373 9.373 24.569 9.373 33.941 0l5.657-5.657 39.598 39.598-81.04 81.04-5.657-5.657c-12.497-12.497-32.758-12.497-45.255 0L9.373 412.118c-12.497 12.497-12.497 32.758 0 45.255l45.255 45.255c12.497 12.497 32.758 12.497 45.255 0l114.745-114.745c12.497-12.497 12.497-32.758 0-45.255l-5.657-5.657 81.04-81.04 39.598 39.598-5.657 5.657c-9.373 9.373-9.373 24.569 0 33.941l22.627 22.627c9.373 9.373 24.569 9.373 33.941 0l124.451-124.451c9.372-9.372 9.372-24.568 0-33.941z\"]\n};\nvar faGem = {\n prefix: 'fas',\n iconName: 'gem',\n icon: [576, 512, [], \"f3a5\", \"M485.5 0L576 160H474.9L405.7 0h79.8zm-128 0l69.2 160H149.3L218.5 0h139zm-267 0h79.8l-69.2 160H0L90.5 0zM0 192h100.7l123 251.7c1.5 3.1-2.7 5.9-5 3.3L0 192zm148.2 0h279.6l-137 318.2c-1 2.4-4.5 2.4-5.5 0L148.2 192zm204.1 251.7l123-251.7H576L357.3 446.9c-2.3 2.7-6.5-.1-5-3.2z\"]\n};\nvar faGenderless = {\n prefix: 'fas',\n iconName: 'genderless',\n icon: [288, 512, [], \"f22d\", \"M144 176c44.1 0 80 35.9 80 80s-35.9 80-80 80-80-35.9-80-80 35.9-80 80-80m0-64C64.5 112 0 176.5 0 256s64.5 144 144 144 144-64.5 144-144-64.5-144-144-144z\"]\n};\nvar faGhost = {\n prefix: 'fas',\n iconName: 'ghost',\n icon: [384, 512, [], \"f6e2\", \"M186.1.09C81.01 3.24 0 94.92 0 200.05v263.92c0 14.26 17.23 21.39 27.31 11.31l24.92-18.53c6.66-4.95 16-3.99 21.51 2.21l42.95 48.35c6.25 6.25 16.38 6.25 22.63 0l40.72-45.85c6.37-7.17 17.56-7.17 23.92 0l40.72 45.85c6.25 6.25 16.38 6.25 22.63 0l42.95-48.35c5.51-6.2 14.85-7.17 21.51-2.21l24.92 18.53c10.08 10.08 27.31 2.94 27.31-11.31V192C384 84 294.83-3.17 186.1.09zM128 224c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm128 0c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faGift = {\n prefix: 'fas',\n iconName: 'gift',\n icon: [512, 512, [], \"f06b\", \"M32 448c0 17.7 14.3 32 32 32h160V320H32v128zm256 32h160c17.7 0 32-14.3 32-32V320H288v160zm192-320h-42.1c6.2-12.1 10.1-25.5 10.1-40 0-48.5-39.5-88-88-88-41.6 0-68.5 21.3-103 68.3-34.5-47-61.4-68.3-103-68.3-48.5 0-88 39.5-88 88 0 14.5 3.8 27.9 10.1 40H32c-17.7 0-32 14.3-32 32v80c0 8.8 7.2 16 16 16h480c8.8 0 16-7.2 16-16v-80c0-17.7-14.3-32-32-32zm-326.1 0c-22.1 0-40-17.9-40-40s17.9-40 40-40c19.9 0 34.6 3.3 86.1 80h-86.1zm206.1 0h-86.1c51.4-76.5 65.7-80 86.1-80 22.1 0 40 17.9 40 40s-17.9 40-40 40z\"]\n};\nvar faGifts = {\n prefix: 'fas',\n iconName: 'gifts',\n icon: [640, 512, [], \"f79c\", \"M240.6 194.1c1.9-30.8 17.3-61.2 44-79.8C279.4 103.5 268.7 96 256 96h-29.4l30.7-22c7.2-5.1 8.9-15.1 3.7-22.3l-9.3-13c-5.1-7.2-15.1-8.9-22.3-3.7l-32 22.9 11.5-30.6c3.1-8.3-1.1-17.5-9.4-20.6l-15-5.6c-8.3-3.1-17.5 1.1-20.6 9.4l-19.9 53-19.9-53.1C121 2.1 111.8-2.1 103.5 1l-15 5.6C80.2 9.7 76 19 79.2 27.2l11.5 30.6L58.6 35c-7.2-5.1-17.2-3.5-22.3 3.7l-9.3 13c-5.1 7.2-3.5 17.2 3.7 22.3l30.7 22H32c-17.7 0-32 14.3-32 32v352c0 17.7 14.3 32 32 32h168.9c-5.5-9.5-8.9-20.3-8.9-32V256c0-29.9 20.8-55 48.6-61.9zM224 480c0 17.7 14.3 32 32 32h160V384H224v96zm224 32h160c17.7 0 32-14.3 32-32v-96H448v128zm160-288h-20.4c2.6-7.6 4.4-15.5 4.4-23.8 0-35.5-27-72.2-72.1-72.2-48.1 0-75.9 47.7-87.9 75.3-12.1-27.6-39.9-75.3-87.9-75.3-45.1 0-72.1 36.7-72.1 72.2 0 8.3 1.7 16.2 4.4 23.8H256c-17.7 0-32 14.3-32 32v96h192V224h15.3l.7-.2.7.2H448v128h192v-96c0-17.7-14.3-32-32-32zm-272 0c-2.7-1.4-5.1-3-7.2-4.8-7.3-6.4-8.8-13.8-8.8-19 0-9.7 6.4-24.2 24.1-24.2 18.7 0 35.6 27.4 44.5 48H336zm199.2-4.8c-2.1 1.8-4.5 3.4-7.2 4.8h-52.6c8.8-20.3 25.8-48 44.5-48 17.7 0 24.1 14.5 24.1 24.2 0 5.2-1.5 12.6-8.8 19z\"]\n};\nvar faGlassCheers = {\n prefix: 'fas',\n iconName: 'glass-cheers',\n icon: [640, 512, [], \"f79f\", \"M639.4 433.6c-8.4-20.4-31.8-30.1-52.2-21.6l-22.1 9.2-38.7-101.9c47.9-35 64.8-100.3 34.5-152.8L474.3 16c-8-13.9-25.1-19.7-40-13.6L320 49.8 205.7 2.4c-14.9-6.2-32-.3-40 13.6L79.1 166.5C48.9 219 65.7 284.3 113.6 319.2L74.9 421.1l-22.1-9.2c-20.4-8.5-43.7 1.2-52.2 21.6-1.7 4.1.2 8.8 4.3 10.5l162.3 67.4c4.1 1.7 8.7-.2 10.4-4.3 8.4-20.4-1.2-43.8-21.6-52.3l-22.1-9.2L173.3 342c4.4.5 8.8 1.3 13.1 1.3 51.7 0 99.4-33.1 113.4-85.3l20.2-75.4 20.2 75.4c14 52.2 61.7 85.3 113.4 85.3 4.3 0 8.7-.8 13.1-1.3L506 445.6l-22.1 9.2c-20.4 8.5-30.1 31.9-21.6 52.3 1.7 4.1 6.4 6 10.4 4.3L635.1 444c4-1.7 6-6.3 4.3-10.4zM275.9 162.1l-112.1-46.5 36.5-63.4 94.5 39.2-18.9 70.7zm88.2 0l-18.9-70.7 94.5-39.2 36.5 63.4-112.1 46.5z\"]\n};\nvar faGlassMartini = {\n prefix: 'fas',\n iconName: 'glass-martini',\n icon: [512, 512, [], \"f000\", \"M502.05 57.6C523.3 36.34 508.25 0 478.2 0H33.8C3.75 0-11.3 36.34 9.95 57.6L224 271.64V464h-56c-22.09 0-40 17.91-40 40 0 4.42 3.58 8 8 8h240c4.42 0 8-3.58 8-8 0-22.09-17.91-40-40-40h-56V271.64L502.05 57.6z\"]\n};\nvar faGlassMartiniAlt = {\n prefix: 'fas',\n iconName: 'glass-martini-alt',\n icon: [512, 512, [], \"f57b\", \"M502.05 57.6C523.3 36.34 508.25 0 478.2 0H33.8C3.75 0-11.3 36.34 9.95 57.6L224 271.64V464h-56c-22.09 0-40 17.91-40 40 0 4.42 3.58 8 8 8h240c4.42 0 8-3.58 8-8 0-22.09-17.91-40-40-40h-56V271.64L502.05 57.6zM443.77 48l-48 48H116.24l-48-48h375.53z\"]\n};\nvar faGlassWhiskey = {\n prefix: 'fas',\n iconName: 'glass-whiskey',\n icon: [512, 512, [], \"f7a0\", \"M480 32H32C12.5 32-2.4 49.2.3 68.5l56 356.5c4.5 31.5 31.5 54.9 63.4 54.9h273c31.8 0 58.9-23.4 63.4-54.9l55.6-356.5C514.4 49.2 499.5 32 480 32zm-37.4 64l-30 192h-313L69.4 96h373.2z\"]\n};\nvar faGlasses = {\n prefix: 'fas',\n iconName: 'glasses',\n icon: [576, 512, [], \"f530\", \"M574.1 280.37L528.75 98.66c-5.91-23.7-21.59-44.05-43-55.81-21.44-11.73-46.97-14.11-70.19-6.33l-15.25 5.08c-8.39 2.79-12.92 11.86-10.12 20.24l5.06 15.18c2.79 8.38 11.85 12.91 20.23 10.12l13.18-4.39c10.87-3.62 23-3.57 33.16 1.73 10.29 5.37 17.57 14.56 20.37 25.82l38.46 153.82c-22.19-6.81-49.79-12.46-81.2-12.46-34.77 0-73.98 7.02-114.85 26.74h-73.18c-40.87-19.74-80.08-26.75-114.86-26.75-31.42 0-59.02 5.65-81.21 12.46l38.46-153.83c2.79-11.25 10.09-20.45 20.38-25.81 10.16-5.3 22.28-5.35 33.15-1.73l13.17 4.39c8.38 2.79 17.44-1.74 20.23-10.12l5.06-15.18c2.8-8.38-1.73-17.45-10.12-20.24l-15.25-5.08c-23.22-7.78-48.75-5.41-70.19 6.33-21.41 11.77-37.09 32.11-43 55.8L1.9 280.37A64.218 64.218 0 0 0 0 295.86v70.25C0 429.01 51.58 480 115.2 480h37.12c60.28 0 110.37-45.94 114.88-105.37l2.93-38.63h35.75l2.93 38.63C313.31 434.06 363.4 480 423.68 480h37.12c63.62 0 115.2-50.99 115.2-113.88v-70.25c0-5.23-.64-10.43-1.9-15.5zm-370.72 89.42c-1.97 25.91-24.4 46.21-51.06 46.21H115.2C86.97 416 64 393.62 64 366.11v-37.54c18.12-6.49 43.42-12.92 72.58-12.92 23.86 0 47.26 4.33 69.93 12.92l-3.13 41.22zM512 366.12c0 27.51-22.97 49.88-51.2 49.88h-37.12c-26.67 0-49.1-20.3-51.06-46.21l-3.13-41.22c22.67-8.59 46.08-12.92 69.95-12.92 29.12 0 54.43 6.44 72.55 12.93v37.54z\"]\n};\nvar faGlobe = {\n prefix: 'fas',\n iconName: 'globe',\n icon: [496, 512, [], \"f0ac\", \"M336.5 160C322 70.7 287.8 8 248 8s-74 62.7-88.5 152h177zM152 256c0 22.2 1.2 43.5 3.3 64h185.3c2.1-20.5 3.3-41.8 3.3-64s-1.2-43.5-3.3-64H155.3c-2.1 20.5-3.3 41.8-3.3 64zm324.7-96c-28.6-67.9-86.5-120.4-158-141.6 24.4 33.8 41.2 84.7 50 141.6h108zM177.2 18.4C105.8 39.6 47.8 92.1 19.3 160h108c8.7-56.9 25.5-107.8 49.9-141.6zM487.4 192H372.7c2.1 21 3.3 42.5 3.3 64s-1.2 43-3.3 64h114.6c5.5-20.5 8.6-41.8 8.6-64s-3.1-43.5-8.5-64zM120 256c0-21.5 1.2-43 3.3-64H8.6C3.2 212.5 0 233.8 0 256s3.2 43.5 8.6 64h114.6c-2-21-3.2-42.5-3.2-64zm39.5 96c14.5 89.3 48.7 152 88.5 152s74-62.7 88.5-152h-177zm159.3 141.6c71.4-21.2 129.4-73.7 158-141.6h-108c-8.8 56.9-25.6 107.8-50 141.6zM19.3 352c28.6 67.9 86.5 120.4 158 141.6-24.4-33.8-41.2-84.7-50-141.6h-108z\"]\n};\nvar faGlobeAfrica = {\n prefix: 'fas',\n iconName: 'globe-africa',\n icon: [496, 512, [], \"f57c\", \"M248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm160 215.5v6.93c0 5.87-3.32 11.24-8.57 13.86l-15.39 7.7a15.485 15.485 0 0 1-15.53-.97l-18.21-12.14a15.52 15.52 0 0 0-13.5-1.81l-2.65.88c-9.7 3.23-13.66 14.79-7.99 23.3l13.24 19.86c2.87 4.31 7.71 6.9 12.89 6.9h8.21c8.56 0 15.5 6.94 15.5 15.5v11.34c0 3.35-1.09 6.62-3.1 9.3l-18.74 24.98c-1.42 1.9-2.39 4.1-2.83 6.43l-4.3 22.83c-.62 3.29-2.29 6.29-4.76 8.56a159.608 159.608 0 0 0-25 29.16l-13.03 19.55a27.756 27.756 0 0 1-23.09 12.36c-10.51 0-20.12-5.94-24.82-15.34a78.902 78.902 0 0 1-8.33-35.29V367.5c0-8.56-6.94-15.5-15.5-15.5h-25.88c-14.49 0-28.38-5.76-38.63-16a54.659 54.659 0 0 1-16-38.63v-14.06c0-17.19 8.1-33.38 21.85-43.7l27.58-20.69a54.663 54.663 0 0 1 32.78-10.93h.89c8.48 0 16.85 1.97 24.43 5.77l14.72 7.36c3.68 1.84 7.93 2.14 11.83.84l47.31-15.77c6.33-2.11 10.6-8.03 10.6-14.7 0-8.56-6.94-15.5-15.5-15.5h-10.09c-4.11 0-8.05-1.63-10.96-4.54l-6.92-6.92a15.493 15.493 0 0 0-10.96-4.54H199.5c-8.56 0-15.5-6.94-15.5-15.5v-4.4c0-7.11 4.84-13.31 11.74-15.04l14.45-3.61c3.74-.94 7-3.23 9.14-6.44l8.08-12.11c2.87-4.31 7.71-6.9 12.89-6.9h24.21c8.56 0 15.5-6.94 15.5-15.5v-21.7C359.23 71.63 422.86 131.02 441.93 208H423.5c-8.56 0-15.5 6.94-15.5 15.5z\"]\n};\nvar faGlobeAmericas = {\n prefix: 'fas',\n iconName: 'globe-americas',\n icon: [496, 512, [], \"f57d\", \"M248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm82.29 357.6c-3.9 3.88-7.99 7.95-11.31 11.28-2.99 3-5.1 6.7-6.17 10.71-1.51 5.66-2.73 11.38-4.77 16.87l-17.39 46.85c-13.76 3-28 4.69-42.65 4.69v-27.38c1.69-12.62-7.64-36.26-22.63-51.25-6-6-9.37-14.14-9.37-22.63v-32.01c0-11.64-6.27-22.34-16.46-27.97-14.37-7.95-34.81-19.06-48.81-26.11-11.48-5.78-22.1-13.14-31.65-21.75l-.8-.72a114.792 114.792 0 0 1-18.06-20.74c-9.38-13.77-24.66-36.42-34.59-51.14 20.47-45.5 57.36-82.04 103.2-101.89l24.01 12.01C203.48 89.74 216 82.01 216 70.11v-11.3c7.99-1.29 16.12-2.11 24.39-2.42l28.3 28.3c6.25 6.25 6.25 16.38 0 22.63L264 112l-10.34 10.34c-3.12 3.12-3.12 8.19 0 11.31l4.69 4.69c3.12 3.12 3.12 8.19 0 11.31l-8 8a8.008 8.008 0 0 1-5.66 2.34h-8.99c-2.08 0-4.08.81-5.58 2.27l-9.92 9.65a8.008 8.008 0 0 0-1.58 9.31l15.59 31.19c2.66 5.32-1.21 11.58-7.15 11.58h-5.64c-1.93 0-3.79-.7-5.24-1.96l-9.28-8.06a16.017 16.017 0 0 0-15.55-3.1l-31.17 10.39a11.95 11.95 0 0 0-8.17 11.34c0 4.53 2.56 8.66 6.61 10.69l11.08 5.54c9.41 4.71 19.79 7.16 30.31 7.16s22.59 27.29 32 32h66.75c8.49 0 16.62 3.37 22.63 9.37l13.69 13.69a30.503 30.503 0 0 1 8.93 21.57 46.536 46.536 0 0 1-13.72 32.98zM417 274.25c-5.79-1.45-10.84-5-14.15-9.97l-17.98-26.97a23.97 23.97 0 0 1 0-26.62l19.59-29.38c2.32-3.47 5.5-6.29 9.24-8.15l12.98-6.49C440.2 193.59 448 223.87 448 256c0 8.67-.74 17.16-1.82 25.54L417 274.25z\"]\n};\nvar faGlobeAsia = {\n prefix: 'fas',\n iconName: 'globe-asia',\n icon: [496, 512, [], \"f57e\", \"M248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm-11.34 240.23c-2.89 4.82-8.1 7.77-13.72 7.77h-.31c-4.24 0-8.31 1.69-11.31 4.69l-5.66 5.66c-3.12 3.12-3.12 8.19 0 11.31l5.66 5.66c3 3 4.69 7.07 4.69 11.31V304c0 8.84-7.16 16-16 16h-6.11c-6.06 0-11.6-3.42-14.31-8.85l-22.62-45.23c-2.44-4.88-8.95-5.94-12.81-2.08l-19.47 19.46c-3 3-7.07 4.69-11.31 4.69H50.81C49.12 277.55 48 266.92 48 256c0-110.28 89.72-200 200-200 21.51 0 42.2 3.51 61.63 9.82l-50.16 38.53c-5.11 3.41-4.63 11.06.86 13.81l10.83 5.41c5.42 2.71 8.84 8.25 8.84 14.31V216c0 4.42-3.58 8-8 8h-3.06c-3.03 0-5.8-1.71-7.15-4.42-1.56-3.12-5.96-3.29-7.76-.3l-17.37 28.95zM408 358.43c0 4.24-1.69 8.31-4.69 11.31l-9.57 9.57c-3 3-7.07 4.69-11.31 4.69h-15.16c-4.24 0-8.31-1.69-11.31-4.69l-13.01-13.01a26.767 26.767 0 0 0-25.42-7.04l-21.27 5.32c-1.27.32-2.57.48-3.88.48h-10.34c-4.24 0-8.31-1.69-11.31-4.69l-11.91-11.91a8.008 8.008 0 0 1-2.34-5.66v-10.2c0-3.27 1.99-6.21 5.03-7.43l39.34-15.74c1.98-.79 3.86-1.82 5.59-3.05l23.71-16.89a7.978 7.978 0 0 1 4.64-1.48h12.09c3.23 0 6.15 1.94 7.39 4.93l5.35 12.85a4 4 0 0 0 3.69 2.46h3.8c1.78 0 3.35-1.18 3.84-2.88l4.2-14.47c.5-1.71 2.06-2.88 3.84-2.88h6.06c2.21 0 4 1.79 4 4v12.93c0 2.12.84 4.16 2.34 5.66l11.91 11.91c3 3 4.69 7.07 4.69 11.31v24.6z\"]\n};\nvar faGlobeEurope = {\n prefix: 'fas',\n iconName: 'globe-europe',\n icon: [496, 512, [], \"f7a2\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm200 248c0 22.5-3.9 44.2-10.8 64.4h-20.3c-4.3 0-8.4-1.7-11.4-4.8l-32-32.6c-4.5-4.6-4.5-12.1.1-16.7l12.5-12.5v-8.7c0-3-1.2-5.9-3.3-8l-9.4-9.4c-2.1-2.1-5-3.3-8-3.3h-16c-6.2 0-11.3-5.1-11.3-11.3 0-3 1.2-5.9 3.3-8l9.4-9.4c2.1-2.1 5-3.3 8-3.3h32c6.2 0 11.3-5.1 11.3-11.3v-9.4c0-6.2-5.1-11.3-11.3-11.3h-36.7c-8.8 0-16 7.2-16 16v4.5c0 6.9-4.4 13-10.9 15.2l-31.6 10.5c-3.3 1.1-5.5 4.1-5.5 7.6v2.2c0 4.4-3.6 8-8 8h-16c-4.4 0-8-3.6-8-8s-3.6-8-8-8H247c-3 0-5.8 1.7-7.2 4.4l-9.4 18.7c-2.7 5.4-8.2 8.8-14.3 8.8H194c-8.8 0-16-7.2-16-16V199c0-4.2 1.7-8.3 4.7-11.3l20.1-20.1c4.6-4.6 7.2-10.9 7.2-17.5 0-3.4 2.2-6.5 5.5-7.6l40-13.3c1.7-.6 3.2-1.5 4.4-2.7l26.8-26.8c2.1-2.1 3.3-5 3.3-8 0-6.2-5.1-11.3-11.3-11.3H258l-16 16v8c0 4.4-3.6 8-8 8h-16c-4.4 0-8-3.6-8-8v-20c0-2.5 1.2-4.9 3.2-6.4l28.9-21.7c1.9-.1 3.8-.3 5.7-.3C358.3 56 448 145.7 448 256zM130.1 149.1c0-3 1.2-5.9 3.3-8l25.4-25.4c2.1-2.1 5-3.3 8-3.3 6.2 0 11.3 5.1 11.3 11.3v16c0 3-1.2 5.9-3.3 8l-9.4 9.4c-2.1 2.1-5 3.3-8 3.3h-16c-6.2 0-11.3-5.1-11.3-11.3zm128 306.4v-7.1c0-8.8-7.2-16-16-16h-20.2c-10.8 0-26.7-5.3-35.4-11.8l-22.2-16.7c-11.5-8.6-18.2-22.1-18.2-36.4v-23.9c0-16 8.4-30.8 22.1-39l42.9-25.7c7.1-4.2 15.2-6.5 23.4-6.5h31.2c10.9 0 21.4 3.9 29.6 10.9l43.2 37.1h18.3c8.5 0 16.6 3.4 22.6 9.4l17.3 17.3c3.4 3.4 8.1 5.3 12.9 5.3H423c-32.4 58.9-93.8 99.5-164.9 103.1z\"]\n};\nvar faGolfBall = {\n prefix: 'fas',\n iconName: 'golf-ball',\n icon: [416, 512, [], \"f450\", \"M96 416h224c0 17.7-14.3 32-32 32h-16c-17.7 0-32 14.3-32 32v20c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-20c0-17.7-14.3-32-32-32h-16c-17.7 0-32-14.3-32-32zm320-208c0 74.2-39 139.2-97.5 176h-221C39 347.2 0 282.2 0 208 0 93.1 93.1 0 208 0s208 93.1 208 208zm-180.1 43.9c18.3 0 33.1-14.8 33.1-33.1 0-14.4-9.3-26.3-22.1-30.9 9.6 26.8-15.6 51.3-41.9 41.9 4.6 12.8 16.5 22.1 30.9 22.1zm49.1 46.9c0-14.4-9.3-26.3-22.1-30.9 9.6 26.8-15.6 51.3-41.9 41.9 4.6 12.8 16.5 22.1 30.9 22.1 18.3 0 33.1-14.9 33.1-33.1zm64-64c0-14.4-9.3-26.3-22.1-30.9 9.6 26.8-15.6 51.3-41.9 41.9 4.6 12.8 16.5 22.1 30.9 22.1 18.3 0 33.1-14.9 33.1-33.1z\"]\n};\nvar faGopuram = {\n prefix: 'fas',\n iconName: 'gopuram',\n icon: [512, 512, [], \"f664\", \"M496 352h-16V240c0-8.8-7.2-16-16-16h-16v-80c0-8.8-7.2-16-16-16h-16V16c0-8.8-7.2-16-16-16s-16 7.2-16 16v16h-64V16c0-8.8-7.2-16-16-16s-16 7.2-16 16v16h-64V16c0-8.8-7.2-16-16-16s-16 7.2-16 16v16h-64V16c0-8.8-7.2-16-16-16S96 7.2 96 16v112H80c-8.8 0-16 7.2-16 16v80H48c-8.8 0-16 7.2-16 16v112H16c-8.8 0-16 7.2-16 16v128c0 8.8 7.2 16 16 16h80V352h32V224h32v-96h32v96h-32v128h-32v160h80v-80c0-8.8 7.2-16 16-16h64c8.8 0 16 7.2 16 16v80h80V352h-32V224h-32v-96h32v96h32v128h32v160h80c8.8 0 16-7.2 16-16V368c0-8.8-7.2-16-16-16zM232 176c0-8.8 7.2-16 16-16h16c8.8 0 16 7.2 16 16v48h-48zm56 176h-64v-64c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16z\"]\n};\nvar faGraduationCap = {\n prefix: 'fas',\n iconName: 'graduation-cap',\n icon: [640, 512, [], \"f19d\", \"M622.34 153.2L343.4 67.5c-15.2-4.67-31.6-4.67-46.79 0L17.66 153.2c-23.54 7.23-23.54 38.36 0 45.59l48.63 14.94c-10.67 13.19-17.23 29.28-17.88 46.9C38.78 266.15 32 276.11 32 288c0 10.78 5.68 19.85 13.86 25.65L20.33 428.53C18.11 438.52 25.71 448 35.94 448h56.11c10.24 0 17.84-9.48 15.62-19.47L82.14 313.65C90.32 307.85 96 298.78 96 288c0-11.57-6.47-21.25-15.66-26.87.76-15.02 8.44-28.3 20.69-36.72L296.6 284.5c9.06 2.78 26.44 6.25 46.79 0l278.95-85.7c23.55-7.24 23.55-38.36 0-45.6zM352.79 315.09c-28.53 8.76-52.84 3.92-65.59 0l-145.02-44.55L128 384c0 35.35 85.96 64 192 64s192-28.65 192-64l-14.18-113.47-145.03 44.56z\"]\n};\nvar faGreaterThan = {\n prefix: 'fas',\n iconName: 'greater-than',\n icon: [384, 512, [], \"f531\", \"M365.52 209.85L59.22 67.01c-16.06-7.49-35.15-.54-42.64 15.52L3.01 111.61c-7.49 16.06-.54 35.15 15.52 42.64L236.96 256.1 18.49 357.99C2.47 365.46-4.46 384.5 3.01 400.52l13.52 29C24 445.54 43.04 452.47 59.06 445l306.47-142.91a32.003 32.003 0 0 0 18.48-29v-34.23c-.01-12.45-7.21-23.76-18.49-29.01z\"]\n};\nvar faGreaterThanEqual = {\n prefix: 'fas',\n iconName: 'greater-than-equal',\n icon: [448, 512, [], \"f532\", \"M55.22 107.69l175.56 68.09-175.44 68.05c-18.39 6.03-27.88 24.39-21.2 41l12.09 30.08c6.68 16.61 26.99 25.19 45.38 19.15L393.02 214.2c13.77-4.52 22.98-16.61 22.98-30.17v-15.96c0-13.56-9.21-25.65-22.98-30.17L91.3 17.92c-18.29-6-38.51 2.53-45.15 19.06L34.12 66.9c-6.64 16.53 2.81 34.79 21.1 40.79zM424 400H24c-13.25 0-24 10.74-24 24v48c0 13.25 10.75 24 24 24h400c13.25 0 24-10.75 24-24v-48c0-13.26-10.75-24-24-24z\"]\n};\nvar faGrimace = {\n prefix: 'fas',\n iconName: 'grimace',\n icon: [496, 512, [], \"f57f\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM144 400h-8c-17.7 0-32-14.3-32-32v-8h40v40zm0-56h-40v-8c0-17.7 14.3-32 32-32h8v40zm-8-136c0-17.7 14.3-32 32-32s32 14.3 32 32-14.3 32-32 32-32-14.3-32-32zm72 192h-48v-40h48v40zm0-56h-48v-40h48v40zm64 56h-48v-40h48v40zm0-56h-48v-40h48v40zm64 56h-48v-40h48v40zm0-56h-48v-40h48v40zm-8-104c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm64 128c0 17.7-14.3 32-32 32h-8v-40h40v8zm0-24h-40v-40h8c17.7 0 32 14.3 32 32v8z\"]\n};\nvar faGrin = {\n prefix: 'fas',\n iconName: 'grin',\n icon: [496, 512, [], \"f580\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm80 168c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm-160 0c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm80 256c-60.6 0-134.5-38.3-143.8-93.3-2-11.8 9.3-21.6 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.3-3.7 22.6 6.1 20.7 17.9-9.3 55-83.2 93.3-143.8 93.3z\"]\n};\nvar faGrinAlt = {\n prefix: 'fas',\n iconName: 'grin-alt',\n icon: [496, 512, [], \"f581\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm63.7 128.7c7.6-11.4 24.7-11.7 32.7 0 12.4 18.4 15.1 36.9 15.7 55.3-.5 18.4-3.3 36.9-15.7 55.3-7.6 11.4-24.7 11.7-32.7 0-12.4-18.4-15.1-36.9-15.7-55.3.5-18.4 3.3-36.9 15.7-55.3zm-160 0c7.6-11.4 24.7-11.7 32.7 0 12.4 18.4 15.1 36.9 15.7 55.3-.5 18.4-3.3 36.9-15.7 55.3-7.6 11.4-24.7 11.7-32.7 0-12.4-18.4-15.1-36.9-15.7-55.3.5-18.4 3.3-36.9 15.7-55.3zM248 432c-60.6 0-134.5-38.3-143.8-93.3-2-11.8 9.3-21.6 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.4-3.7 22.6 6.1 20.7 17.9-9.3 55-83.2 93.3-143.8 93.3z\"]\n};\nvar faGrinBeam = {\n prefix: 'fas',\n iconName: 'grin-beam',\n icon: [496, 512, [], \"f582\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm80 144c23.8 0 52.7 29.3 56 71.4.7 8.6-10.8 11.9-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.1 7.3-15.6 4-14.9-4.5 3.1-42.1 32-71.4 55.8-71.4zm-160 0c23.8 0 52.7 29.3 56 71.4.7 8.6-10.8 11.9-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.2 7.4-15.6 4-14.9-4.5 3.1-42.1 32-71.4 55.8-71.4zm80 280c-60.6 0-134.5-38.3-143.8-93.3-2-11.9 9.4-21.6 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.4-3.7 22.6 6.1 20.7 17.9-9.3 55-83.2 93.3-143.8 93.3z\"]\n};\nvar faGrinBeamSweat = {\n prefix: 'fas',\n iconName: 'grin-beam-sweat',\n icon: [504, 512, [], \"f583\", \"M456 128c26.5 0 48-21 48-47 0-20-28.5-60.4-41.6-77.8-3.2-4.3-9.6-4.3-12.8 0C436.5 20.6 408 61 408 81c0 26 21.5 47 48 47zm0 32c-44.1 0-80-35.4-80-79 0-4.4.3-14.2 8.1-32.2C345 23.1 298.3 8 248 8 111 8 0 119 0 256s111 248 248 248 248-111 248-248c0-35.1-7.4-68.4-20.5-98.6-6.3 1.5-12.7 2.6-19.5 2.6zm-128-8c23.8 0 52.7 29.3 56 71.4.7 8.6-10.8 12-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.1 7.4-15.6 4-14.9-4.5 3.1-42.1 32-71.4 55.8-71.4zm-160 0c23.8 0 52.7 29.3 56 71.4.7 8.6-10.8 12-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.2 7.4-15.6 4-14.9-4.5 3.1-42.1 32-71.4 55.8-71.4zm80 280c-60.6 0-134.5-38.3-143.8-93.3-2-11.8 9.3-21.6 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.5-3.7 22.6 6.2 20.7 17.9-9.3 55-83.2 93.3-143.8 93.3z\"]\n};\nvar faGrinHearts = {\n prefix: 'fas',\n iconName: 'grin-hearts',\n icon: [496, 512, [], \"f584\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM90.4 183.6c6.7-17.6 26.7-26.7 44.9-21.9l7.1 1.9 2-7.1c5-18.1 22.8-30.9 41.5-27.9 21.4 3.4 34.4 24.2 28.8 44.5L195.3 243c-1.2 4.5-5.9 7.2-10.5 6l-70.2-18.2c-20.4-5.4-31.9-27-24.2-47.2zM248 432c-60.6 0-134.5-38.3-143.8-93.3-2-11.8 9.2-21.5 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.4-3.6 22.6 6.1 20.7 17.9-9.3 55-83.2 93.3-143.8 93.3zm133.4-201.3l-70.2 18.2c-4.5 1.2-9.2-1.5-10.5-6L281.3 173c-5.6-20.3 7.4-41.1 28.8-44.5 18.6-3 36.4 9.8 41.5 27.9l2 7.1 7.1-1.9c18.2-4.7 38.2 4.3 44.9 21.9 7.7 20.3-3.8 41.9-24.2 47.2z\"]\n};\nvar faGrinSquint = {\n prefix: 'fas',\n iconName: 'grin-squint',\n icon: [496, 512, [], \"f585\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm33.8 189.7l80-48c11.6-6.9 24 7.7 15.4 18L343.6 208l33.6 40.3c8.7 10.4-3.9 24.8-15.4 18l-80-48c-7.7-4.7-7.7-15.9 0-20.6zm-163-30c-8.6-10.3 3.8-24.9 15.4-18l80 48c7.8 4.7 7.8 15.9 0 20.6l-80 48c-11.5 6.8-24-7.6-15.4-18l33.6-40.3-33.6-40.3zM248 432c-60.6 0-134.5-38.3-143.8-93.3-2-11.9 9.4-21.6 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.5-3.7 22.6 6.2 20.7 17.9-9.3 55-83.2 93.3-143.8 93.3z\"]\n};\nvar faGrinSquintTears = {\n prefix: 'fas',\n iconName: 'grin-squint-tears',\n icon: [512, 512, [], \"f586\", \"M409.6 111.9c22.6-3.2 73.5-12 88.3-26.8 19.2-19.2 18.9-50.6-.7-70.2S446-5 426.9 14.2c-14.8 14.8-23.5 65.7-26.8 88.3-.8 5.5 3.9 10.2 9.5 9.4zM102.4 400.1c-22.6 3.2-73.5 12-88.3 26.8-19.1 19.1-18.8 50.6.8 70.2s51 19.9 70.2.7c14.8-14.8 23.5-65.7 26.8-88.3.8-5.5-3.9-10.2-9.5-9.4zm311.7-256.5c-33 3.9-48.6-25.1-45.7-45.7 3.4-24 7.4-42.1 11.5-56.5C285.1-13.4 161.8-.5 80.6 80.6-.5 161.7-13.4 285 41.4 379.9c14.4-4.1 32.4-8 56.5-11.5 33.2-3.9 48.6 25.2 45.7 45.7-3.4 24-7.4 42.1-11.5 56.5 94.8 54.8 218.1 41.9 299.3-39.2s94-204.4 39.2-299.3c-14.4 4.1-32.5 8-56.5 11.5zM255.7 106c3.3-13.2 22.4-11.5 23.6 1.8l4.8 52.3 52.3 4.8c13.4 1.2 14.9 20.3 1.8 23.6l-90.5 22.6c-8.9 2.2-16.7-5.9-14.5-14.5l22.5-90.6zm-90.9 230.3L160 284l-52.3-4.8c-13.4-1.2-14.9-20.3-1.8-23.6l90.5-22.6c8.8-2.2 16.7 5.8 14.5 14.5L188.3 338c-3.1 13.2-22.2 11.7-23.5-1.7zm215.7 44.2c-29.3 29.3-75.7 50.4-116.7 50.4-18.9 0-36.6-4.5-51-14.7-9.8-6.9-8.7-21.8 2-27.2 28.3-14.6 63.9-42.4 97.8-76.3s61.7-69.6 76.3-97.8c5.4-10.5 20.2-11.9 27.3-2 32.3 45.3 7.1 124.7-35.7 167.6z\"]\n};\nvar faGrinStars = {\n prefix: 'fas',\n iconName: 'grin-stars',\n icon: [496, 512, [], \"f587\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM94.6 168.9l34.9-5 15.5-31.6c2.9-5.8 11-5.8 13.9 0l15.5 31.6 34.9 5c6.2 1 8.9 8.6 4.3 13.2l-25.4 24.6 6 34.9c1 6.2-5.3 11-11 7.9L152 233.3l-31.3 16.3c-5.7 3.1-12-1.7-11-7.9l6-34.9-25.4-24.6c-4.6-4.7-1.9-12.3 4.3-13.3zM248 432c-60.6 0-134.5-38.3-143.8-93.3-2-11.8 9.3-21.5 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.5-3.7 22.6 6.1 20.7 17.9-9.3 55-83.2 93.3-143.8 93.3zm157.7-249.9l-25.4 24.6 6 34.9c1 6.2-5.3 11-11 7.9L344 233.3l-31.3 16.3c-5.7 3.1-12-1.7-11-7.9l6-34.9-25.4-24.6c-4.5-4.6-1.9-12.2 4.3-13.2l34.9-5 15.5-31.6c2.9-5.8 11-5.8 13.9 0l15.5 31.6 34.9 5c6.3.9 9 8.5 4.4 13.1z\"]\n};\nvar faGrinTears = {\n prefix: 'fas',\n iconName: 'grin-tears',\n icon: [640, 512, [], \"f588\", \"M102.4 256.1c-22.6 3.2-73.5 12-88.3 26.8-19.1 19.1-18.8 50.6.8 70.2s51 19.9 70.2.7c14.8-14.8 23.5-65.7 26.8-88.3.8-5.5-3.9-10.2-9.5-9.4zm523.4 26.8c-14.8-14.8-65.7-23.5-88.3-26.8-5.5-.8-10.3 3.9-9.5 9.5 3.2 22.6 12 73.5 26.8 88.3 19.2 19.2 50.6 18.9 70.2-.7s20-51.2.8-70.3zm-129.4-12.8c-3.8-26.6 19.1-49.5 45.7-45.7 8.9 1.3 16.8 2.7 24.3 4.1C552.7 104.5 447.7 8 320 8S87.3 104.5 73.6 228.5c7.5-1.4 15.4-2.8 24.3-4.1 33.2-3.9 48.6 25.3 45.7 45.7-11.8 82.3-29.9 100.4-35.8 106.4-.9.9-2 1.6-3 2.5 42.7 74.6 123 125 215.2 125s172.5-50.4 215.2-125.1c-1-.9-2.1-1.5-3-2.5-5.9-5.9-24-24-35.8-106.3zM400 152c23.8 0 52.7 29.3 56 71.4.7 8.6-10.8 12-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.2 7.4-15.6 4-14.9-4.5 3.1-42.1 32-71.4 55.8-71.4zm-160 0c23.8 0 52.7 29.3 56 71.4.7 8.6-10.8 12-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.2 7.4-15.6 4-14.9-4.5 3.1-42.1 32-71.4 55.8-71.4zm80 280c-60.6 0-134.5-38.3-143.8-93.3-2-11.7 9.2-21.6 20.7-17.9C227.1 330.5 272 336 320 336s92.9-5.5 123.1-15.2c11.4-3.7 22.6 6.1 20.7 17.9-9.3 55-83.2 93.3-143.8 93.3z\"]\n};\nvar faGrinTongue = {\n prefix: 'fas',\n iconName: 'grin-tongue',\n icon: [496, 512, [], \"f589\", \"M248 8C111 8 0 119 0 256c0 106.3 67 196.7 161 232-5.6-12.2-9-25.7-9-40v-45.5c-24.7-16.2-43.5-38.1-47.8-63.8-2-11.8 9.3-21.5 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.4-3.6 22.6 6.1 20.7 17.9-4.3 25.7-23.1 47.6-47.8 63.8V448c0 14.3-3.4 27.8-9 40 94-35.3 161-125.7 161-232C496 119 385 8 248 8zm-80 232c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm160 0c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm-34.9 134.6c-14.4-6.5-31.1 2.2-34.6 17.6l-1.8 7.8c-2.1 9.2-15.2 9.2-17.3 0l-1.8-7.8c-3.5-15.4-20.2-24.1-34.6-17.6-.9.4.3-.2-18.9 9.4v63c0 35.2 28 64.5 63.1 64.9 35.7.5 64.9-28.4 64.9-64v-64c-19.5-9.6-18.2-8.9-19-9.3z\"]\n};\nvar faGrinTongueSquint = {\n prefix: 'fas',\n iconName: 'grin-tongue-squint',\n icon: [496, 512, [], \"f58a\", \"M293.1 374.6c-14.4-6.5-31.1 2.2-34.6 17.6l-1.8 7.8c-2.1 9.2-15.2 9.2-17.3 0l-1.8-7.8c-3.5-15.4-20.2-24.1-34.6-17.6-.9.4.3-.2-18.9 9.4v63c0 35.2 28 64.5 63.1 64.9 35.7.5 64.9-28.4 64.9-64v-64c-19.5-9.6-18.2-8.9-19-9.3zM248 8C111 8 0 119 0 256c0 106.3 67 196.7 161 232-5.6-12.2-9-25.7-9-40v-45.5c-24.7-16.2-43.5-38.1-47.8-63.8-2-11.8 9.2-21.5 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.4-3.7 22.6 6.1 20.7 17.9-4.3 25.7-23.1 47.6-47.8 63.8V448c0 14.3-3.4 27.8-9 40 94-35.3 161-125.7 161-232C496 119 385 8 248 8zm-33.8 210.3l-80 48c-11.5 6.8-24-7.6-15.4-18l33.6-40.3-33.6-40.3c-8.6-10.3 3.8-24.9 15.4-18l80 48c7.7 4.7 7.7 15.9 0 20.6zm163 30c8.7 10.4-3.9 24.8-15.4 18l-80-48c-7.8-4.7-7.8-15.9 0-20.6l80-48c11.7-6.9 23.9 7.7 15.4 18L343.6 208l33.6 40.3z\"]\n};\nvar faGrinTongueWink = {\n prefix: 'fas',\n iconName: 'grin-tongue-wink',\n icon: [496, 512, [], \"f58b\", \"M344 184c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zM248 8C111 8 0 119 0 256c0 106.3 67 196.7 161 232-5.6-12.2-9-25.7-9-40v-45.5c-24.7-16.2-43.5-38.1-47.8-63.8-2-11.8 9.3-21.5 20.7-17.9C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.5-3.7 22.6 6.1 20.7 17.9-4.3 25.7-23.1 47.6-47.8 63.8V448c0 14.3-3.4 27.8-9 40 94-35.3 161-125.7 161-232C496 119 385 8 248 8zm-56 225l-9.5-8.5c-14.8-13.2-46.2-13.2-61 0L112 233c-8.5 7.4-21.6.3-19.8-10.8 4-25.2 34.2-42.1 59.9-42.1S208 197 212 222.2c1.6 11.1-11.6 18.2-20 10.8zm152 39c-35.3 0-64-28.7-64-64s28.7-64 64-64 64 28.7 64 64-28.7 64-64 64zm-50.9 102.6c-14.4-6.5-31.1 2.2-34.6 17.6l-1.8 7.8c-2.1 9.2-15.2 9.2-17.3 0l-1.8-7.8c-3.5-15.4-20.2-24.1-34.6-17.6-.9.4.3-.2-18.9 9.4v63c0 35.2 28 64.5 63.1 64.9 35.7.5 64.9-28.4 64.9-64v-64c-19.5-9.6-18.2-8.9-19-9.3z\"]\n};\nvar faGrinWink = {\n prefix: 'fas',\n iconName: 'grin-wink',\n icon: [496, 512, [], \"f58c\", \"M0 256c0 137 111 248 248 248s248-111 248-248S385 8 248 8 0 119 0 256zm200-48c0 17.7-14.3 32-32 32s-32-14.3-32-32 14.3-32 32-32 32 14.3 32 32zm168 25l-9.5-8.5c-14.8-13.2-46.2-13.2-61 0L288 233c-8.3 7.4-21.6.4-19.8-10.8 4-25.2 34.2-42.1 59.9-42.1S384 197 388 222.2c1.6 11-11.5 18.2-20 10.8zm-243.1 87.8C155.1 330.5 200 336 248 336s92.9-5.5 123.1-15.2c11.3-3.7 22.6 6 20.7 17.9-9.2 55-83.2 93.3-143.8 93.3s-134.5-38.3-143.8-93.3c-2-11.9 9.3-21.6 20.7-17.9z\"]\n};\nvar faGripHorizontal = {\n prefix: 'fas',\n iconName: 'grip-horizontal',\n icon: [448, 512, [], \"f58d\", \"M96 288H32c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32zm160 0h-64c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32zm160 0h-64c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32zM96 96H32c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32zm160 0h-64c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32zm160 0h-64c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32z\"]\n};\nvar faGripLines = {\n prefix: 'fas',\n iconName: 'grip-lines',\n icon: [512, 512, [], \"f7a4\", \"M496 288H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h480c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm0-128H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h480c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16z\"]\n};\nvar faGripLinesVertical = {\n prefix: 'fas',\n iconName: 'grip-lines-vertical',\n icon: [256, 512, [], \"f7a5\", \"M96 496V16c0-8.8-7.2-16-16-16H48c-8.8 0-16 7.2-16 16v480c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16zm128 0V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v480c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16z\"]\n};\nvar faGripVertical = {\n prefix: 'fas',\n iconName: 'grip-vertical',\n icon: [320, 512, [], \"f58e\", \"M96 32H32C14.33 32 0 46.33 0 64v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32V64c0-17.67-14.33-32-32-32zm0 160H32c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32zm0 160H32c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32zM288 32h-64c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32V64c0-17.67-14.33-32-32-32zm0 160h-64c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32zm0 160h-64c-17.67 0-32 14.33-32 32v64c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-64c0-17.67-14.33-32-32-32z\"]\n};\nvar faGuitar = {\n prefix: 'fas',\n iconName: 'guitar',\n icon: [512, 512, [], \"f7a6\", \"M502.63 39L473 9.37a32 32 0 0 0-45.26 0L381.46 55.7a35.14 35.14 0 0 0-8.53 13.79L360.77 106l-76.26 76.26c-12.16-8.76-25.5-15.74-40.1-19.14-33.45-7.78-67-.88-89.88 22a82.45 82.45 0 0 0-20.24 33.47c-6 18.56-23.21 32.69-42.15 34.46-23.7 2.27-45.73 11.45-62.61 28.44C-16.11 327-7.9 409 47.58 464.45S185 528 230.56 482.52c17-16.88 26.16-38.9 28.45-62.71 1.76-18.85 15.89-36.13 34.43-42.14a82.6 82.6 0 0 0 33.48-20.25c22.87-22.88 29.74-56.36 22-89.75-3.39-14.64-10.37-28-19.16-40.2L406 151.23l36.48-12.16a35.14 35.14 0 0 0 13.79-8.53l46.33-46.32a32 32 0 0 0 .03-45.22zM208 352a48 48 0 1 1 48-48 48 48 0 0 1-48 48z\"]\n};\nvar faHSquare = {\n prefix: 'fas',\n iconName: 'h-square',\n icon: [448, 512, [], \"f0fd\", \"M448 80v352c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V80c0-26.51 21.49-48 48-48h352c26.51 0 48 21.49 48 48zm-112 48h-32c-8.837 0-16 7.163-16 16v80H160v-80c0-8.837-7.163-16-16-16h-32c-8.837 0-16 7.163-16 16v224c0 8.837 7.163 16 16 16h32c8.837 0 16-7.163 16-16v-80h128v80c0 8.837 7.163 16 16 16h32c8.837 0 16-7.163 16-16V144c0-8.837-7.163-16-16-16z\"]\n};\nvar faHamburger = {\n prefix: 'fas',\n iconName: 'hamburger',\n icon: [512, 512, [], \"f805\", \"M464 256H48a48 48 0 0 0 0 96h416a48 48 0 0 0 0-96zm16 128H32a16 16 0 0 0-16 16v16a64 64 0 0 0 64 64h352a64 64 0 0 0 64-64v-16a16 16 0 0 0-16-16zM58.64 224h394.72c34.57 0 54.62-43.9 34.82-75.88C448 83.2 359.55 32.1 256 32c-103.54.1-192 51.2-232.18 116.11C4 180.09 24.07 224 58.64 224zM384 112a16 16 0 1 1-16 16 16 16 0 0 1 16-16zM256 80a16 16 0 1 1-16 16 16 16 0 0 1 16-16zm-128 32a16 16 0 1 1-16 16 16 16 0 0 1 16-16z\"]\n};\nvar faHammer = {\n prefix: 'fas',\n iconName: 'hammer',\n icon: [576, 512, [], \"f6e3\", \"M571.31 193.94l-22.63-22.63c-6.25-6.25-16.38-6.25-22.63 0l-11.31 11.31-28.9-28.9c5.63-21.31.36-44.9-16.35-61.61l-45.25-45.25c-62.48-62.48-163.79-62.48-226.28 0l90.51 45.25v18.75c0 16.97 6.74 33.25 18.75 45.25l49.14 49.14c16.71 16.71 40.3 21.98 61.61 16.35l28.9 28.9-11.31 11.31c-6.25 6.25-6.25 16.38 0 22.63l22.63 22.63c6.25 6.25 16.38 6.25 22.63 0l90.51-90.51c6.23-6.24 6.23-16.37-.02-22.62zm-286.72-15.2c-3.7-3.7-6.84-7.79-9.85-11.95L19.64 404.96c-25.57 23.88-26.26 64.19-1.53 88.93s65.05 24.05 88.93-1.53l238.13-255.07c-3.96-2.91-7.9-5.87-11.44-9.41l-49.14-49.14z\"]\n};\nvar faHamsa = {\n prefix: 'fas',\n iconName: 'hamsa',\n icon: [512, 512, [], \"f665\", \"M509.34 307.25C504.28 295.56 492.75 288 480 288h-64V80c0-22-18-40-40-40s-40 18-40 40v134c0 5.52-4.48 10-10 10h-20c-5.52 0-10-4.48-10-10V40c0-22-18-40-40-40s-40 18-40 40v174c0 5.52-4.48 10-10 10h-20c-5.52 0-10-4.48-10-10V80c0-22-18-40-40-40S96 58 96 80v208H32c-12.75 0-24.28 7.56-29.34 19.25a31.966 31.966 0 0 0 5.94 34.58l102.69 110.03C146.97 490.08 199.69 512 256 512s109.03-21.92 144.72-60.14L503.4 341.83a31.966 31.966 0 0 0 5.94-34.58zM256 416c-53.02 0-96-64-96-64s42.98-64 96-64 96 64 96 64-42.98 64-96 64zm0-96c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32z\"]\n};\nvar faHandHolding = {\n prefix: 'fas',\n iconName: 'hand-holding',\n icon: [576, 512, [], \"f4bd\", \"M565.3 328.1c-11.8-10.7-30.2-10-42.6 0L430.3 402c-11.3 9.1-25.4 14-40 14H272c-8.8 0-16-7.2-16-16s7.2-16 16-16h78.3c15.9 0 30.7-10.9 33.3-26.6 3.3-20-12.1-37.4-31.6-37.4H192c-27 0-53.1 9.3-74.1 26.3L71.4 384H16c-8.8 0-16 7.2-16 16v96c0 8.8 7.2 16 16 16h356.8c14.5 0 28.6-4.9 40-14L564 377c15.2-12.1 16.4-35.3 1.3-48.9z\"]\n};\nvar faHandHoldingHeart = {\n prefix: 'fas',\n iconName: 'hand-holding-heart',\n icon: [576, 512, [], \"f4be\", \"M275.3 250.5c7 7.4 18.4 7.4 25.5 0l108.9-114.2c31.6-33.2 29.8-88.2-5.6-118.8-30.8-26.7-76.7-21.9-104.9 7.7L288 36.9l-11.1-11.6C248.7-4.4 202.8-9.2 172 17.5c-35.3 30.6-37.2 85.6-5.6 118.8l108.9 114.2zm290 77.6c-11.8-10.7-30.2-10-42.6 0L430.3 402c-11.3 9.1-25.4 14-40 14H272c-8.8 0-16-7.2-16-16s7.2-16 16-16h78.3c15.9 0 30.7-10.9 33.3-26.6 3.3-20-12.1-37.4-31.6-37.4H192c-27 0-53.1 9.3-74.1 26.3L71.4 384H16c-8.8 0-16 7.2-16 16v96c0 8.8 7.2 16 16 16h356.8c14.5 0 28.6-4.9 40-14L564 377c15.2-12.1 16.4-35.3 1.3-48.9z\"]\n};\nvar faHandHoldingUsd = {\n prefix: 'fas',\n iconName: 'hand-holding-usd',\n icon: [576, 512, [], \"f4c0\", \"M271.06,144.3l54.27,14.3a8.59,8.59,0,0,1,6.63,8.1c0,4.6-4.09,8.4-9.12,8.4h-35.6a30,30,0,0,1-11.19-2.2c-5.24-2.2-11.28-1.7-15.3,2l-19,17.5a11.68,11.68,0,0,0-2.25,2.66,11.42,11.42,0,0,0,3.88,15.74,83.77,83.77,0,0,0,34.51,11.5V240c0,8.8,7.83,16,17.37,16h17.37c9.55,0,17.38-7.2,17.38-16V222.4c32.93-3.6,57.84-31,53.5-63-3.15-23-22.46-41.3-46.56-47.7L282.68,97.4a8.59,8.59,0,0,1-6.63-8.1c0-4.6,4.09-8.4,9.12-8.4h35.6A30,30,0,0,1,332,83.1c5.23,2.2,11.28,1.7,15.3-2l19-17.5A11.31,11.31,0,0,0,368.47,61a11.43,11.43,0,0,0-3.84-15.78,83.82,83.82,0,0,0-34.52-11.5V16c0-8.8-7.82-16-17.37-16H295.37C285.82,0,278,7.2,278,16V33.6c-32.89,3.6-57.85,31-53.51,63C227.63,119.6,247,137.9,271.06,144.3ZM565.27,328.1c-11.8-10.7-30.2-10-42.6,0L430.27,402a63.64,63.64,0,0,1-40,14H272a16,16,0,0,1,0-32h78.29c15.9,0,30.71-10.9,33.25-26.6a31.2,31.2,0,0,0,.46-5.46A32,32,0,0,0,352,320H192a117.66,117.66,0,0,0-74.1,26.29L71.4,384H16A16,16,0,0,0,0,400v96a16,16,0,0,0,16,16H372.77a64,64,0,0,0,40-14L564,377a32,32,0,0,0,1.28-48.9Z\"]\n};\nvar faHandLizard = {\n prefix: 'fas',\n iconName: 'hand-lizard',\n icon: [576, 512, [], \"f258\", \"M384 480h192V363.778a95.998 95.998 0 0 0-14.833-51.263L398.127 54.368A48 48 0 0 0 357.544 32H24C10.745 32 0 42.745 0 56v16c0 30.928 25.072 56 56 56h229.981c12.844 0 21.556 13.067 16.615 24.923l-21.41 51.385A32 32 0 0 1 251.648 224H128c-35.346 0-64 28.654-64 64v8c0 13.255 10.745 24 24 24h147.406a47.995 47.995 0 0 1 25.692 7.455l111.748 70.811A24.001 24.001 0 0 1 384 418.539V480z\"]\n};\nvar faHandMiddleFinger = {\n prefix: 'fas',\n iconName: 'hand-middle-finger',\n icon: [512, 512, [], \"f806\", \"M479.93 317.12a37.33 37.33 0 0 0-28.28-36.19L416 272v-49.59c0-11.44-9.69-21.29-23.15-23.54l-38.4-6.4C336.63 189.5 320 200.86 320 216v32a8 8 0 0 1-16 0V50c0-26.28-20.25-49.2-46.52-50A48 48 0 0 0 208 48v200a8 8 0 0 1-16 0v-32c0-15.15-16.63-26.51-34.45-23.54l-30.68 5.12c-18 3-30.87 16.12-30.87 31.38V376a8 8 0 0 1-16 0v-76l-27.36 15A37.34 37.34 0 0 0 32 348.4v73.47a37.31 37.31 0 0 0 10.93 26.39l30.93 30.93A112 112 0 0 0 153.05 512h215A112 112 0 0 0 480 400z\"]\n};\nvar faHandPaper = {\n prefix: 'fas',\n iconName: 'hand-paper',\n icon: [448, 512, [], \"f256\", \"M408.781 128.007C386.356 127.578 368 146.36 368 168.79V256h-8V79.79c0-22.43-18.356-41.212-40.781-40.783C297.488 39.423 280 57.169 280 79v177h-8V40.79C272 18.36 253.644-.422 231.219.007 209.488.423 192 18.169 192 40v216h-8V80.79c0-22.43-18.356-41.212-40.781-40.783C121.488 40.423 104 58.169 104 80v235.992l-31.648-43.519c-12.993-17.866-38.009-21.817-55.877-8.823-17.865 12.994-21.815 38.01-8.822 55.877l125.601 172.705A48 48 0 0 0 172.073 512h197.59c22.274 0 41.622-15.324 46.724-37.006l26.508-112.66a192.011 192.011 0 0 0 5.104-43.975V168c.001-21.831-17.487-39.577-39.218-39.993z\"]\n};\nvar faHandPeace = {\n prefix: 'fas',\n iconName: 'hand-peace',\n icon: [448, 512, [], \"f25b\", \"M408 216c-22.092 0-40 17.909-40 40h-8v-32c0-22.091-17.908-40-40-40s-40 17.909-40 40v32h-8V48c0-26.51-21.49-48-48-48s-48 21.49-48 48v208h-13.572L92.688 78.449C82.994 53.774 55.134 41.63 30.461 51.324 5.787 61.017-6.356 88.877 3.337 113.551l74.765 190.342-31.09 24.872c-15.381 12.306-19.515 33.978-9.741 51.081l64 112A39.998 39.998 0 0 0 136 512h240c18.562 0 34.686-12.77 38.937-30.838l32-136A39.97 39.97 0 0 0 448 336v-80c0-22.091-17.908-40-40-40z\"]\n};\nvar faHandPointDown = {\n prefix: 'fas',\n iconName: 'hand-point-down',\n icon: [384, 512, [], \"f0a7\", \"M91.826 467.2V317.966c-8.248 5.841-16.558 10.57-24.918 14.153C35.098 345.752-.014 322.222 0 288c.008-18.616 10.897-32.203 29.092-40 28.286-12.122 64.329-78.648 77.323-107.534 7.956-17.857 25.479-28.453 43.845-28.464l.001-.002h171.526c11.812 0 21.897 8.596 23.703 20.269 7.25 46.837 38.483 61.76 38.315 123.731-.007 2.724.195 13.254.195 16 0 50.654-22.122 81.574-71.263 72.6-9.297 18.597-39.486 30.738-62.315 16.45-21.177 24.645-53.896 22.639-70.944 6.299V467.2c0 24.15-20.201 44.8-43.826 44.8-23.283 0-43.826-21.35-43.826-44.8zM112 72V24c0-13.255 10.745-24 24-24h192c13.255 0 24 10.745 24 24v48c0 13.255-10.745 24-24 24H136c-13.255 0-24-10.745-24-24zm212-24c0-11.046-8.954-20-20-20s-20 8.954-20 20 8.954 20 20 20 20-8.954 20-20z\"]\n};\nvar faHandPointLeft = {\n prefix: 'fas',\n iconName: 'hand-point-left',\n icon: [512, 512, [], \"f0a5\", \"M44.8 155.826h149.234c-5.841-8.248-10.57-16.558-14.153-24.918C166.248 99.098 189.778 63.986 224 64c18.616.008 32.203 10.897 40 29.092 12.122 28.286 78.648 64.329 107.534 77.323 17.857 7.956 28.453 25.479 28.464 43.845l.002.001v171.526c0 11.812-8.596 21.897-20.269 23.703-46.837 7.25-61.76 38.483-123.731 38.315-2.724-.007-13.254.195-16 .195-50.654 0-81.574-22.122-72.6-71.263-18.597-9.297-30.738-39.486-16.45-62.315-24.645-21.177-22.639-53.896-6.299-70.944H44.8c-24.15 0-44.8-20.201-44.8-43.826 0-23.283 21.35-43.826 44.8-43.826zM440 176h48c13.255 0 24 10.745 24 24v192c0 13.255-10.745 24-24 24h-48c-13.255 0-24-10.745-24-24V200c0-13.255 10.745-24 24-24zm24 212c11.046 0 20-8.954 20-20s-8.954-20-20-20-20 8.954-20 20 8.954 20 20 20z\"]\n};\nvar faHandPointRight = {\n prefix: 'fas',\n iconName: 'hand-point-right',\n icon: [512, 512, [], \"f0a4\", \"M512 199.652c0 23.625-20.65 43.826-44.8 43.826h-99.851c16.34 17.048 18.346 49.766-6.299 70.944 14.288 22.829 2.147 53.017-16.45 62.315C353.574 425.878 322.654 448 272 448c-2.746 0-13.276-.203-16-.195-61.971.168-76.894-31.065-123.731-38.315C120.596 407.683 112 397.599 112 385.786V214.261l.002-.001c.011-18.366 10.607-35.889 28.464-43.845 28.886-12.994 95.413-49.038 107.534-77.323 7.797-18.194 21.384-29.084 40-29.092 34.222-.014 57.752 35.098 44.119 66.908-3.583 8.359-8.312 16.67-14.153 24.918H467.2c23.45 0 44.8 20.543 44.8 43.826zM96 200v192c0 13.255-10.745 24-24 24H24c-13.255 0-24-10.745-24-24V200c0-13.255 10.745-24 24-24h48c13.255 0 24 10.745 24 24zM68 368c0-11.046-8.954-20-20-20s-20 8.954-20 20 8.954 20 20 20 20-8.954 20-20z\"]\n};\nvar faHandPointUp = {\n prefix: 'fas',\n iconName: 'hand-point-up',\n icon: [384, 512, [], \"f0a6\", \"M135.652 0c23.625 0 43.826 20.65 43.826 44.8v99.851c17.048-16.34 49.766-18.346 70.944 6.299 22.829-14.288 53.017-2.147 62.315 16.45C361.878 158.426 384 189.346 384 240c0 2.746-.203 13.276-.195 16 .168 61.971-31.065 76.894-38.315 123.731C343.683 391.404 333.599 400 321.786 400H150.261l-.001-.002c-18.366-.011-35.889-10.607-43.845-28.464C93.421 342.648 57.377 276.122 29.092 264 10.897 256.203.008 242.616 0 224c-.014-34.222 35.098-57.752 66.908-44.119 8.359 3.583 16.67 8.312 24.918 14.153V44.8c0-23.45 20.543-44.8 43.826-44.8zM136 416h192c13.255 0 24 10.745 24 24v48c0 13.255-10.745 24-24 24H136c-13.255 0-24-10.745-24-24v-48c0-13.255 10.745-24 24-24zm168 28c-11.046 0-20 8.954-20 20s8.954 20 20 20 20-8.954 20-20-8.954-20-20-20z\"]\n};\nvar faHandPointer = {\n prefix: 'fas',\n iconName: 'hand-pointer',\n icon: [448, 512, [], \"f25a\", \"M448 240v96c0 3.084-.356 6.159-1.063 9.162l-32 136C410.686 499.23 394.562 512 376 512H168a40.004 40.004 0 0 1-32.35-16.473l-127.997-176c-12.993-17.866-9.043-42.883 8.822-55.876 17.867-12.994 42.884-9.043 55.877 8.823L104 315.992V40c0-22.091 17.908-40 40-40s40 17.909 40 40v200h8v-40c0-22.091 17.908-40 40-40s40 17.909 40 40v40h8v-24c0-22.091 17.908-40 40-40s40 17.909 40 40v24h8c0-22.091 17.908-40 40-40s40 17.909 40 40zm-256 80h-8v96h8v-96zm88 0h-8v96h8v-96zm88 0h-8v96h8v-96z\"]\n};\nvar faHandRock = {\n prefix: 'fas',\n iconName: 'hand-rock',\n icon: [512, 512, [], \"f255\", \"M464.8 80c-26.9-.4-48.8 21.2-48.8 48h-8V96.8c0-26.3-20.9-48.3-47.2-48.8-26.9-.4-48.8 21.2-48.8 48v32h-8V80.8c0-26.3-20.9-48.3-47.2-48.8-26.9-.4-48.8 21.2-48.8 48v48h-8V96.8c0-26.3-20.9-48.3-47.2-48.8-26.9-.4-48.8 21.2-48.8 48v136l-8-7.1v-48.1c0-26.3-20.9-48.3-47.2-48.8C21.9 127.6 0 149.2 0 176v66.4c0 27.4 11.7 53.5 32.2 71.8l111.7 99.3c10.2 9.1 16.1 22.2 16.1 35.9v6.7c0 13.3 10.7 24 24 24h240c13.3 0 24-10.7 24-24v-2.9c0-12.8 2.6-25.5 7.5-37.3l49-116.3c5-11.8 7.5-24.5 7.5-37.3V128.8c0-26.3-20.9-48.4-47.2-48.8z\"]\n};\nvar faHandScissors = {\n prefix: 'fas',\n iconName: 'hand-scissors',\n icon: [512, 512, [], \"f257\", \"M216 440c0-22.092 17.909-40 40-40v-8h-32c-22.091 0-40-17.908-40-40s17.909-40 40-40h32v-8H48c-26.51 0-48-21.49-48-48s21.49-48 48-48h208v-13.572l-177.551-69.74c-24.674-9.694-36.818-37.555-27.125-62.228 9.693-24.674 37.554-36.817 62.228-27.124l190.342 74.765 24.872-31.09c12.306-15.381 33.978-19.515 51.081-9.741l112 64A40.002 40.002 0 0 1 512 168v240c0 18.562-12.77 34.686-30.838 38.937l-136 32A39.982 39.982 0 0 1 336 480h-80c-22.091 0-40-17.908-40-40z\"]\n};\nvar faHandSpock = {\n prefix: 'fas',\n iconName: 'hand-spock',\n icon: [512, 512, [], \"f259\", \"M510.9005,145.27027,442.604,432.09391A103.99507,103.99507,0,0,1,341.43745,512H214.074a135.96968,135.96968,0,0,1-93.18489-36.95291L12.59072,373.12723a39.992,39.992,0,0,1,54.8122-58.24988l60.59342,57.02528v0a283.24849,283.24849,0,0,0-11.6703-80.46734L73.63726,147.36011a40.00575,40.00575,0,1,1,76.71833-22.7187l37.15458,125.39477a8.33113,8.33113,0,0,0,16.05656-4.4414L153.26183,49.95406A39.99638,39.99638,0,1,1,230.73015,30.0166l56.09491,218.15825a10.42047,10.42047,0,0,0,20.30018-.501L344.80766,63.96966a40.052,40.052,0,0,1,51.30245-30.0893c19.86073,6.2998,30.86262,27.67378,26.67564,48.08487l-33.83869,164.966a7.55172,7.55172,0,0,0,14.74406,3.2666l29.3973-123.45874a39.99414,39.99414,0,1,1,77.81208,18.53121Z\"]\n};\nvar faHands = {\n prefix: 'fas',\n iconName: 'hands',\n icon: [640, 512, [], \"f4c2\", \"M204.8 230.4c-10.6-14.1-30.7-17-44.8-6.4-14.1 10.6-17 30.7-6.4 44.8l38.1 50.8c4.8 6.4 4.1 15.3-1.5 20.9l-12.8 12.8c-6.7 6.7-17.6 6.2-23.6-1.1L64 244.4V96c0-17.7-14.3-32-32-32S0 78.3 0 96v218.4c0 10.9 3.7 21.5 10.5 30l104.1 134.3c5 6.5 8.4 13.9 10.4 21.7 1.8 6.9 8.1 11.6 15.3 11.6H272c8.8 0 16-7.2 16-16V384c0-27.7-9-54.6-25.6-76.8l-57.6-76.8zM608 64c-17.7 0-32 14.3-32 32v148.4l-89.8 107.8c-6 7.2-17 7.7-23.6 1.1l-12.8-12.8c-5.6-5.6-6.3-14.5-1.5-20.9l38.1-50.8c10.6-14.1 7.7-34.2-6.4-44.8-14.1-10.6-34.2-7.7-44.8 6.4l-57.6 76.8C361 329.4 352 356.3 352 384v112c0 8.8 7.2 16 16 16h131.7c7.1 0 13.5-4.7 15.3-11.6 2-7.8 5.4-15.2 10.4-21.7l104.1-134.3c6.8-8.5 10.5-19.1 10.5-30V96c0-17.7-14.3-32-32-32z\"]\n};\nvar faHandsHelping = {\n prefix: 'fas',\n iconName: 'hands-helping',\n icon: [640, 512, [], \"f4c4\", \"M488 192H336v56c0 39.7-32.3 72-72 72s-72-32.3-72-72V126.4l-64.9 39C107.8 176.9 96 197.8 96 220.2v47.3l-80 46.2C.7 322.5-4.6 342.1 4.3 357.4l80 138.6c8.8 15.3 28.4 20.5 43.7 11.7L231.4 448H368c35.3 0 64-28.7 64-64h16c17.7 0 32-14.3 32-32v-64h8c13.3 0 24-10.7 24-24v-48c0-13.3-10.7-24-24-24zm147.7-37.4L555.7 16C546.9.7 527.3-4.5 512 4.3L408.6 64H306.4c-12 0-23.7 3.4-33.9 9.7L239 94.6c-9.4 5.8-15 16.1-15 27.1V248c0 22.1 17.9 40 40 40s40-17.9 40-40v-88h184c30.9 0 56 25.1 56 56v28.5l80-46.2c15.3-8.9 20.5-28.4 11.7-43.7z\"]\n};\nvar faHandshake = {\n prefix: 'fas',\n iconName: 'handshake',\n icon: [640, 512, [], \"f2b5\", \"M434.7 64h-85.9c-8 0-15.7 3-21.6 8.4l-98.3 90c-.1.1-.2.3-.3.4-16.6 15.6-16.3 40.5-2.1 56 12.7 13.9 39.4 17.6 56.1 2.7.1-.1.3-.1.4-.2l79.9-73.2c6.5-5.9 16.7-5.5 22.6 1 6 6.5 5.5 16.6-1 22.6l-26.1 23.9L504 313.8c2.9 2.4 5.5 5 7.9 7.7V128l-54.6-54.6c-5.9-6-14.1-9.4-22.6-9.4zM544 128.2v223.9c0 17.7 14.3 32 32 32h64V128.2h-96zm48 223.9c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zM0 384h64c17.7 0 32-14.3 32-32V128.2H0V384zm48-63.9c8.8 0 16 7.2 16 16s-7.2 16-16 16-16-7.2-16-16c0-8.9 7.2-16 16-16zm435.9 18.6L334.6 217.5l-30 27.5c-29.7 27.1-75.2 24.5-101.7-4.4-26.9-29.4-24.8-74.9 4.4-101.7L289.1 64h-83.8c-8.5 0-16.6 3.4-22.6 9.4L128 128v223.9h18.3l90.5 81.9c27.4 22.3 67.7 18.1 90-9.3l.2-.2 17.9 15.5c15.9 13 39.4 10.5 52.3-5.4l31.4-38.6 5.4 4.4c13.7 11.1 33.9 9.1 45-4.7l9.5-11.7c11.2-13.8 9.1-33.9-4.6-45.1z\"]\n};\nvar faHanukiah = {\n prefix: 'fas',\n iconName: 'hanukiah',\n icon: [640, 512, [], \"f6e6\", \"M232 160c-4.42 0-8 3.58-8 8v120h32V168c0-4.42-3.58-8-8-8h-16zm-64 0c-4.42 0-8 3.58-8 8v120h32V168c0-4.42-3.58-8-8-8h-16zm224 0c-4.42 0-8 3.58-8 8v120h32V168c0-4.42-3.58-8-8-8h-16zm64 0c-4.42 0-8 3.58-8 8v120h32V168c0-4.42-3.58-8-8-8h-16zm88 8c0-4.42-3.58-8-8-8h-16c-4.42 0-8 3.58-8 8v120h32V168zm-440-8c-4.42 0-8 3.58-8 8v120h32V168c0-4.42-3.58-8-8-8h-16zm520 0h-32c-8.84 0-16 7.16-16 16v112c0 17.67-14.33 32-32 32H352V128c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v192H96c-17.67 0-32-14.33-32-32V176c0-8.84-7.16-16-16-16H16c-8.84 0-16 7.16-16 16v112c0 53.02 42.98 96 96 96h192v64H112c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h416c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16H352v-64h192c53.02 0 96-42.98 96-96V176c0-8.84-7.16-16-16-16zm-16-32c13.25 0 24-11.94 24-26.67S608 48 608 48s-24 38.61-24 53.33S594.75 128 608 128zm-576 0c13.25 0 24-11.94 24-26.67S32 48 32 48 8 86.61 8 101.33 18.75 128 32 128zm288-48c13.25 0 24-11.94 24-26.67S320 0 320 0s-24 38.61-24 53.33S306.75 80 320 80zm-208 48c13.25 0 24-11.94 24-26.67S112 48 112 48s-24 38.61-24 53.33S98.75 128 112 128zm64 0c13.25 0 24-11.94 24-26.67S176 48 176 48s-24 38.61-24 53.33S162.75 128 176 128zm64 0c13.25 0 24-11.94 24-26.67S240 48 240 48s-24 38.61-24 53.33S226.75 128 240 128zm160 0c13.25 0 24-11.94 24-26.67S400 48 400 48s-24 38.61-24 53.33S386.75 128 400 128zm64 0c13.25 0 24-11.94 24-26.67S464 48 464 48s-24 38.61-24 53.33S450.75 128 464 128zm64 0c13.25 0 24-11.94 24-26.67S528 48 528 48s-24 38.61-24 53.33S514.75 128 528 128z\"]\n};\nvar faHardHat = {\n prefix: 'fas',\n iconName: 'hard-hat',\n icon: [512, 512, [], \"f807\", \"M480 288c0-80.25-49.28-148.92-119.19-177.62L320 192V80a16 16 0 0 0-16-16h-96a16 16 0 0 0-16 16v112l-40.81-81.62C81.28 139.08 32 207.75 32 288v64h448zm16 96H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h480a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z\"]\n};\nvar faHashtag = {\n prefix: 'fas',\n iconName: 'hashtag',\n icon: [448, 512, [], \"f292\", \"M440.667 182.109l7.143-40c1.313-7.355-4.342-14.109-11.813-14.109h-74.81l14.623-81.891C377.123 38.754 371.468 32 363.997 32h-40.632a12 12 0 0 0-11.813 9.891L296.175 128H197.54l14.623-81.891C213.477 38.754 207.822 32 200.35 32h-40.632a12 12 0 0 0-11.813 9.891L132.528 128H53.432a12 12 0 0 0-11.813 9.891l-7.143 40C33.163 185.246 38.818 192 46.289 192h74.81L98.242 320H19.146a12 12 0 0 0-11.813 9.891l-7.143 40C-1.123 377.246 4.532 384 12.003 384h74.81L72.19 465.891C70.877 473.246 76.532 480 84.003 480h40.632a12 12 0 0 0 11.813-9.891L151.826 384h98.634l-14.623 81.891C234.523 473.246 240.178 480 247.65 480h40.632a12 12 0 0 0 11.813-9.891L315.472 384h79.096a12 12 0 0 0 11.813-9.891l7.143-40c1.313-7.355-4.342-14.109-11.813-14.109h-74.81l22.857-128h79.096a12 12 0 0 0 11.813-9.891zM261.889 320h-98.634l22.857-128h98.634l-22.857 128z\"]\n};\nvar faHatCowboy = {\n prefix: 'fas',\n iconName: 'hat-cowboy',\n icon: [640, 512, [], \"f8c0\", \"M490 296.9C480.51 239.51 450.51 64 392.3 64c-14 0-26.49 5.93-37 14a58.21 58.21 0 0 1-70.58 0c-10.51-8-23-14-37-14-58.2 0-88.2 175.47-97.71 232.88C188.81 309.47 243.73 320 320 320s131.23-10.51 170-23.1zm142.9-37.18a16 16 0 0 0-19.75 1.5c-1 .9-101.27 90.78-293.16 90.78-190.82 0-292.22-89.94-293.24-90.84A16 16 0 0 0 1 278.53C1.73 280.55 78.32 480 320 480s318.27-199.45 319-201.47a16 16 0 0 0-6.09-18.81z\"]\n};\nvar faHatCowboySide = {\n prefix: 'fas',\n iconName: 'hat-cowboy-side',\n icon: [640, 512, [], \"f8c1\", \"M260.8 291.06c-28.63-22.94-62-35.06-96.4-35.06C87 256 21.47 318.72 1.43 412.06c-3.55 16.6-.43 33.83 8.57 47.3C18.75 472.47 31.83 480 45.88 480H592c-103.21 0-155-37.07-233.19-104.46zm234.65-18.29L468.4 116.2A64 64 0 0 0 392 64.41L200.85 105a64 64 0 0 0-50.35 55.79L143.61 226c6.9-.83 13.7-2 20.79-2 41.79 0 82 14.55 117.29 42.82l98 84.48C450.76 412.54 494.9 448 592 448a48 48 0 0 0 48-48c0-25.39-29.6-119.33-144.55-127.23z\"]\n};\nvar faHatWizard = {\n prefix: 'fas',\n iconName: 'hat-wizard',\n icon: [512, 512, [], \"f6e8\", \"M496 448H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h480c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zm-304-64l-64-32 64-32 32-64 32 64 64 32-64 32-16 32h208l-86.41-201.63a63.955 63.955 0 0 1-1.89-45.45L416 0 228.42 107.19a127.989 127.989 0 0 0-53.46 59.15L64 416h144l-16-32zm64-224l16-32 16 32 32 16-32 16-16 32-16-32-32-16 32-16z\"]\n};\nvar faHdd = {\n prefix: 'fas',\n iconName: 'hdd',\n icon: [576, 512, [], \"f0a0\", \"M576 304v96c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48v-96c0-26.51 21.49-48 48-48h480c26.51 0 48 21.49 48 48zm-48-80a79.557 79.557 0 0 1 30.777 6.165L462.25 85.374A48.003 48.003 0 0 0 422.311 64H153.689a48 48 0 0 0-39.938 21.374L17.223 230.165A79.557 79.557 0 0 1 48 224h480zm-48 96c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32zm-96 0c-17.673 0-32 14.327-32 32s14.327 32 32 32 32-14.327 32-32-14.327-32-32-32z\"]\n};\nvar faHeading = {\n prefix: 'fas',\n iconName: 'heading',\n icon: [512, 512, [], \"f1dc\", \"M448 96v320h32a16 16 0 0 1 16 16v32a16 16 0 0 1-16 16H320a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h32V288H160v128h32a16 16 0 0 1 16 16v32a16 16 0 0 1-16 16H32a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h32V96H32a16 16 0 0 1-16-16V48a16 16 0 0 1 16-16h160a16 16 0 0 1 16 16v32a16 16 0 0 1-16 16h-32v128h192V96h-32a16 16 0 0 1-16-16V48a16 16 0 0 1 16-16h160a16 16 0 0 1 16 16v32a16 16 0 0 1-16 16z\"]\n};\nvar faHeadphones = {\n prefix: 'fas',\n iconName: 'headphones',\n icon: [512, 512, [], \"f025\", \"M256 32C114.52 32 0 146.496 0 288v48a32 32 0 0 0 17.689 28.622l14.383 7.191C34.083 431.903 83.421 480 144 480h24c13.255 0 24-10.745 24-24V280c0-13.255-10.745-24-24-24h-24c-31.342 0-59.671 12.879-80 33.627V288c0-105.869 86.131-192 192-192s192 86.131 192 192v1.627C427.671 268.879 399.342 256 368 256h-24c-13.255 0-24 10.745-24 24v176c0 13.255 10.745 24 24 24h24c60.579 0 109.917-48.098 111.928-108.187l14.382-7.191A32 32 0 0 0 512 336v-48c0-141.479-114.496-256-256-256z\"]\n};\nvar faHeadphonesAlt = {\n prefix: 'fas',\n iconName: 'headphones-alt',\n icon: [512, 512, [], \"f58f\", \"M160 288h-16c-35.35 0-64 28.7-64 64.12v63.76c0 35.41 28.65 64.12 64 64.12h16c17.67 0 32-14.36 32-32.06V320.06c0-17.71-14.33-32.06-32-32.06zm208 0h-16c-17.67 0-32 14.35-32 32.06v127.88c0 17.7 14.33 32.06 32 32.06h16c35.35 0 64-28.71 64-64.12v-63.76c0-35.41-28.65-64.12-64-64.12zM256 32C112.91 32 4.57 151.13 0 288v112c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16V288c0-114.67 93.33-207.8 208-207.82 114.67.02 208 93.15 208 207.82v112c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16V288C507.43 151.13 399.09 32 256 32z\"]\n};\nvar faHeadset = {\n prefix: 'fas',\n iconName: 'headset',\n icon: [512, 512, [], \"f590\", \"M192 208c0-17.67-14.33-32-32-32h-16c-35.35 0-64 28.65-64 64v48c0 35.35 28.65 64 64 64h16c17.67 0 32-14.33 32-32V208zm176 144c35.35 0 64-28.65 64-64v-48c0-35.35-28.65-64-64-64h-16c-17.67 0-32 14.33-32 32v112c0 17.67 14.33 32 32 32h16zM256 0C113.18 0 4.58 118.83 0 256v16c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-16c0-114.69 93.31-208 208-208s208 93.31 208 208h-.12c.08 2.43.12 165.72.12 165.72 0 23.35-18.93 42.28-42.28 42.28H320c0-26.51-21.49-48-48-48h-32c-26.51 0-48 21.49-48 48s21.49 48 48 48h181.72c49.86 0 90.28-40.42 90.28-90.28V256C507.42 118.83 398.82 0 256 0z\"]\n};\nvar faHeart = {\n prefix: 'fas',\n iconName: 'heart',\n icon: [512, 512, [], \"f004\", \"M462.3 62.6C407.5 15.9 326 24.3 275.7 76.2L256 96.5l-19.7-20.3C186.1 24.3 104.5 15.9 49.7 62.6c-62.8 53.6-66.1 149.8-9.9 207.9l193.5 199.8c12.5 12.9 32.8 12.9 45.3 0l193.5-199.8c56.3-58.1 53-154.3-9.8-207.9z\"]\n};\nvar faHeartBroken = {\n prefix: 'fas',\n iconName: 'heart-broken',\n icon: [512, 512, [], \"f7a9\", \"M473.7 73.8l-2.4-2.5c-46-47-118-51.7-169.6-14.8L336 159.9l-96 64 48 128-144-144 96-64-28.6-86.5C159.7 19.6 87 24 40.7 71.4l-2.4 2.4C-10.4 123.6-12.5 202.9 31 256l212.1 218.6c7.1 7.3 18.6 7.3 25.7 0L481 255.9c43.5-53 41.4-132.3-7.3-182.1z\"]\n};\nvar faHeartbeat = {\n prefix: 'fas',\n iconName: 'heartbeat',\n icon: [512, 512, [], \"f21e\", \"M320.2 243.8l-49.7 99.4c-6 12.1-23.4 11.7-28.9-.6l-56.9-126.3-30 71.7H60.6l182.5 186.5c7.1 7.3 18.6 7.3 25.7 0L451.4 288H342.3l-22.1-44.2zM473.7 73.9l-2.4-2.5c-51.5-52.6-135.8-52.6-187.4 0L256 100l-27.9-28.5c-51.5-52.7-135.9-52.7-187.4 0l-2.4 2.4C-10.4 123.7-12.5 203 31 256h102.4l35.9-86.2c5.4-12.9 23.6-13.2 29.4-.4l58.2 129.3 49-97.9c5.9-11.8 22.7-11.8 28.6 0l27.6 55.2H481c43.5-53 41.4-132.3-7.3-182.1z\"]\n};\nvar faHelicopter = {\n prefix: 'fas',\n iconName: 'helicopter',\n icon: [640, 512, [], \"f533\", \"M304 384h272c17.67 0 32-14.33 32-32 0-123.71-100.29-224-224-224V64h176c8.84 0 16-7.16 16-16V16c0-8.84-7.16-16-16-16H144c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h176v64H112L68.8 70.4C65.78 66.37 61.03 64 56 64H16.01C5.6 64-2.04 73.78.49 83.88L32 192l160 64 86.4 115.2A31.992 31.992 0 0 0 304 384zm112-188.49C478.55 208.3 528.03 257.44 540.79 320H416V195.51zm219.37 263.3l-22.15-22.2c-6.25-6.26-16.24-6.1-22.64.01-7.09 6.77-13.84 11.25-24.64 11.25H240c-8.84 0-16 7.18-16 16.03v32.06c0 8.85 7.16 16.03 16 16.03h325.94c14.88 0 35.3-.47 68.45-29.52 7.02-6.14 7.57-17.05.98-23.66z\"]\n};\nvar faHighlighter = {\n prefix: 'fas',\n iconName: 'highlighter',\n icon: [544, 512, [], \"f591\", \"M0 479.98L99.92 512l35.45-35.45-67.04-67.04L0 479.98zm124.61-240.01a36.592 36.592 0 0 0-10.79 38.1l13.05 42.83-50.93 50.94 96.23 96.23 50.86-50.86 42.74 13.08c13.73 4.2 28.65-.01 38.15-10.78l35.55-41.64-173.34-173.34-41.52 35.44zm403.31-160.7l-63.2-63.2c-20.49-20.49-53.38-21.52-75.12-2.35L190.55 183.68l169.77 169.78L530.27 154.4c19.18-21.74 18.15-54.63-2.35-75.13z\"]\n};\nvar faHiking = {\n prefix: 'fas',\n iconName: 'hiking',\n icon: [384, 512, [], \"f6ec\", \"M80.95 472.23c-4.28 17.16 6.14 34.53 23.28 38.81 2.61.66 5.22.95 7.8.95 14.33 0 27.37-9.7 31.02-24.23l25.24-100.97-52.78-52.78-34.56 138.22zm14.89-196.12L137 117c2.19-8.42-3.14-16.95-11.92-19.06-43.88-10.52-88.35 15.07-99.32 57.17L.49 253.24c-2.19 8.42 3.14 16.95 11.92 19.06l63.56 15.25c8.79 2.1 17.68-3.02 19.87-11.44zM368 160h-16c-8.84 0-16 7.16-16 16v16h-34.75l-46.78-46.78C243.38 134.11 228.61 128 212.91 128c-27.02 0-50.47 18.3-57.03 44.52l-26.92 107.72a32.012 32.012 0 0 0 8.42 30.39L224 397.25V480c0 17.67 14.33 32 32 32s32-14.33 32-32v-82.75c0-17.09-6.66-33.16-18.75-45.25l-46.82-46.82c.15-.5.49-.89.62-1.41l19.89-79.57 22.43 22.43c6 6 14.14 9.38 22.62 9.38h48v240c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16V176c.01-8.84-7.15-16-15.99-16zM240 96c26.51 0 48-21.49 48-48S266.51 0 240 0s-48 21.49-48 48 21.49 48 48 48z\"]\n};\nvar faHippo = {\n prefix: 'fas',\n iconName: 'hippo',\n icon: [640, 512, [], \"f6ed\", \"M581.12 96.2c-27.67-.15-52.5 17.58-76.6 26.62C489.98 88.27 455.83 64 416 64c-11.28 0-21.95 2.3-32 5.88V56c0-13.26-10.75-24-24-24h-16c-13.25 0-24 10.74-24 24v48.98C286.01 79.58 241.24 64 192 64 85.96 64 0 135.64 0 224v240c0 8.84 7.16 16 16 16h64c8.84 0 16-7.16 16-16v-70.79C128.35 407.57 166.72 416 208 416s79.65-8.43 112-22.79V464c0 8.84 7.16 16 16 16h64c8.84 0 16-7.16 16-16V288h128v32c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-32c17.67 0 32-14.33 32-32v-92.02c0-34.09-24.79-67.59-58.88-67.78zM448 176c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.16 16-16 16z\"]\n};\nvar faHistory = {\n prefix: 'fas',\n iconName: 'history',\n icon: [512, 512, [], \"f1da\", \"M504 255.531c.253 136.64-111.18 248.372-247.82 248.468-59.015.042-113.223-20.53-155.822-54.911-11.077-8.94-11.905-25.541-1.839-35.607l11.267-11.267c8.609-8.609 22.353-9.551 31.891-1.984C173.062 425.135 212.781 440 256 440c101.705 0 184-82.311 184-184 0-101.705-82.311-184-184-184-48.814 0-93.149 18.969-126.068 49.932l50.754 50.754c10.08 10.08 2.941 27.314-11.313 27.314H24c-8.837 0-16-7.163-16-16V38.627c0-14.254 17.234-21.393 27.314-11.314l49.372 49.372C129.209 34.136 189.552 8 256 8c136.81 0 247.747 110.78 248 247.531zm-180.912 78.784l9.823-12.63c8.138-10.463 6.253-25.542-4.21-33.679L288 256.349V152c0-13.255-10.745-24-24-24h-16c-13.255 0-24 10.745-24 24v135.651l65.409 50.874c10.463 8.137 25.541 6.253 33.679-4.21z\"]\n};\nvar faHockeyPuck = {\n prefix: 'fas',\n iconName: 'hockey-puck',\n icon: [512, 512, [], \"f453\", \"M0 160c0-53 114.6-96 256-96s256 43 256 96-114.6 96-256 96S0 213 0 160zm0 82.2V352c0 53 114.6 96 256 96s256-43 256-96V242.2c-113.4 82.3-398.5 82.4-512 0z\"]\n};\nvar faHollyBerry = {\n prefix: 'fas',\n iconName: 'holly-berry',\n icon: [448, 512, [], \"f7aa\", \"M144 192c26.5 0 48-21.5 48-48s-21.5-48-48-48-48 21.5-48 48 21.5 48 48 48zm112-48c0 26.5 21.5 48 48 48s48-21.5 48-48-21.5-48-48-48-48 21.5-48 48zm-32-48c26.5 0 48-21.5 48-48S250.5 0 224 0s-48 21.5-48 48 21.5 48 48 48zm-16.2 139.1c.1-12.4-13.1-20.1-23.8-13.7-34.3 20.3-71.4 32.7-108.7 36.2-9.7.9-15.6 11.3-11.6 20.2 6.2 13.9 11.1 28.6 14.7 43.8 3.6 15.2-5.3 30.6-20.2 35.1-14.9 4.5-30.1 7.6-45.3 9.1-9.7 1-15.7 11.3-11.7 20.2 15 32.8 22.9 69.5 23 107.7.1 14.4 15.2 23.1 27.6 16 33.2-19 68.9-30.5 104.8-33.9 9.7-.9 15.6-11.3 11.6-20.2-6.2-13.9-11.1-28.6-14.7-43.8-3.6-15.2 5.3-30.6 20.2-35.1 14.9-4.5 30.1-7.6 45.3-9.1 9.7-1 15.7-11.3 11.7-20.2-15.5-34.2-23.3-72.5-22.9-112.3zM435 365.6c-15.2-1.6-30.3-4.7-45.3-9.1-14.9-4.5-23.8-19.9-20.2-35.1 3.6-15.2 8.5-29.8 14.7-43.8 4-8.9-1.9-19.3-11.6-20.2-37.3-3.5-74.4-15.9-108.7-36.2-10.7-6.3-23.9 1.4-23.8 13.7 0 1.6-.2 3.2-.2 4.9.2 33.3 7 65.7 19.9 94 5.7 12.4 5.2 26.6-.6 38.9 4.9 1.2 9.9 2.2 14.8 3.7 14.9 4.5 23.8 19.9 20.2 35.1-3.6 15.2-8.5 29.8-14.7 43.8-4 8.9 1.9 19.3 11.6 20.2 35.9 3.4 71.6 14.9 104.8 33.9 12.5 7.1 27.6-1.6 27.6-16 .2-38.2 8-75 23-107.7 4.3-8.7-1.8-19.1-11.5-20.1z\"]\n};\nvar faHome = {\n prefix: 'fas',\n iconName: 'home',\n icon: [576, 512, [], \"f015\", \"M280.37 148.26L96 300.11V464a16 16 0 0 0 16 16l112.06-.29a16 16 0 0 0 15.92-16V368a16 16 0 0 1 16-16h64a16 16 0 0 1 16 16v95.64a16 16 0 0 0 16 16.05L464 480a16 16 0 0 0 16-16V300L295.67 148.26a12.19 12.19 0 0 0-15.3 0zM571.6 251.47L488 182.56V44.05a12 12 0 0 0-12-12h-56a12 12 0 0 0-12 12v72.61L318.47 43a48 48 0 0 0-61 0L4.34 251.47a12 12 0 0 0-1.6 16.9l25.5 31A12 12 0 0 0 45.15 301l235.22-193.74a12.19 12.19 0 0 1 15.3 0L530.9 301a12 12 0 0 0 16.9-1.6l25.5-31a12 12 0 0 0-1.7-16.93z\"]\n};\nvar faHorse = {\n prefix: 'fas',\n iconName: 'horse',\n icon: [576, 512, [], \"f6f0\", \"M575.92 76.6c-.01-8.13-3.02-15.87-8.58-21.8-3.78-4.03-8.58-9.12-13.69-14.5 11.06-6.84 19.5-17.49 22.18-30.66C576.85 4.68 572.96 0 567.9 0H447.92c-70.69 0-128 57.31-128 128H160c-28.84 0-54.4 12.98-72 33.11V160c-48.53 0-88 39.47-88 88v56c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-56c0-13.22 6.87-24.39 16.78-31.68-.21 2.58-.78 5.05-.78 7.68 0 27.64 11.84 52.36 30.54 69.88l-25.72 68.6a63.945 63.945 0 0 0-2.16 37.99l24.85 99.41A15.982 15.982 0 0 0 107.02 512h65.96c10.41 0 18.05-9.78 15.52-19.88l-26.31-105.26 23.84-63.59L320 345.6V496c0 8.84 7.16 16 16 16h64c8.84 0 16-7.16 16-16V318.22c19.74-20.19 32-47.75 32-78.22 0-.22-.07-.42-.08-.64V136.89l16 7.11 18.9 37.7c7.45 14.87 25.05 21.55 40.49 15.37l32.55-13.02a31.997 31.997 0 0 0 20.12-29.74l-.06-77.71zm-64 19.4c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.16 16-16 16z\"]\n};\nvar faHorseHead = {\n prefix: 'fas',\n iconName: 'horse-head',\n icon: [512, 512, [], \"f7ab\", \"M509.8 332.5l-69.9-164.3c-14.9-41.2-50.4-71-93-79.2 18-10.6 46.3-35.9 34.2-82.3-1.3-5-7.1-7.9-12-6.1L166.9 76.3C35.9 123.4 0 238.9 0 398.8V480c0 17.7 14.3 32 32 32h236.2c23.8 0 39.3-25 28.6-46.3L256 384v-.7c-45.6-3.5-84.6-30.7-104.3-69.6-1.6-3.1-.9-6.9 1.6-9.3l12.1-12.1c3.9-3.9 10.6-2.7 12.9 2.4 14.8 33.7 48.2 57.4 87.4 57.4 17.2 0 33-5.1 46.8-13.2l46 63.9c6 8.4 15.7 13.3 26 13.3h50.3c8.5 0 16.6-3.4 22.6-9.4l45.3-39.8c8.9-9.1 11.7-22.6 7.1-34.4zM328 224c-13.3 0-24-10.7-24-24s10.7-24 24-24 24 10.7 24 24-10.7 24-24 24z\"]\n};\nvar faHospital = {\n prefix: 'fas',\n iconName: 'hospital',\n icon: [448, 512, [], \"f0f8\", \"M448 492v20H0v-20c0-6.627 5.373-12 12-12h20V120c0-13.255 10.745-24 24-24h88V24c0-13.255 10.745-24 24-24h112c13.255 0 24 10.745 24 24v72h88c13.255 0 24 10.745 24 24v360h20c6.627 0 12 5.373 12 12zM308 192h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12zm-168 64h40c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12zm104 128h-40c-6.627 0-12 5.373-12 12v84h64v-84c0-6.627-5.373-12-12-12zm64-96h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12zm-116 12c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12v-40zM182 96h26v26a6 6 0 0 0 6 6h20a6 6 0 0 0 6-6V96h26a6 6 0 0 0 6-6V70a6 6 0 0 0-6-6h-26V38a6 6 0 0 0-6-6h-20a6 6 0 0 0-6 6v26h-26a6 6 0 0 0-6 6v20a6 6 0 0 0 6 6z\"]\n};\nvar faHospitalAlt = {\n prefix: 'fas',\n iconName: 'hospital-alt',\n icon: [576, 512, [], \"f47d\", \"M544 96H416V32c0-17.7-14.3-32-32-32H192c-17.7 0-32 14.3-32 32v64H32c-17.7 0-32 14.3-32 32v368c0 8.8 7.2 16 16 16h544c8.8 0 16-7.2 16-16V128c0-17.7-14.3-32-32-32zM160 436c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm0-128c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm160 128c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm0-128c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm16-170c0 3.3-2.7 6-6 6h-26v26c0 3.3-2.7 6-6 6h-20c-3.3 0-6-2.7-6-6v-26h-26c-3.3 0-6-2.7-6-6v-20c0-3.3 2.7-6 6-6h26V86c0-3.3 2.7-6 6-6h20c3.3 0 6 2.7 6 6v26h26c3.3 0 6 2.7 6 6v20zm144 298c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40zm0-128c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h40c6.6 0 12 5.4 12 12v40z\"]\n};\nvar faHospitalSymbol = {\n prefix: 'fas',\n iconName: 'hospital-symbol',\n icon: [512, 512, [], \"f47e\", \"M256 0C114.6 0 0 114.6 0 256s114.6 256 256 256 256-114.6 256-256S397.4 0 256 0zm112 376c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-88h-96v88c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8V136c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v88h96v-88c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v240z\"]\n};\nvar faHotTub = {\n prefix: 'fas',\n iconName: 'hot-tub',\n icon: [512, 512, [], \"f593\", \"M414.21 177.65c1.02 8.21 7.75 14.35 15.75 14.35h16.12c9.51 0 17.08-8.57 16-18.35-4.34-39.11-22.4-74.53-50.13-97.16-17.37-14.17-28.82-36.75-31.98-62.15C378.96 6.14 372.22 0 364.23 0h-16.12c-9.51 0-17.09 8.57-16 18.35 4.34 39.11 22.4 74.53 50.13 97.16 17.36 14.17 28.82 36.75 31.97 62.14zm-108 0c1.02 8.21 7.75 14.35 15.75 14.35h16.12c9.51 0 17.08-8.57 16-18.35-4.34-39.11-22.4-74.53-50.13-97.16-17.37-14.17-28.82-36.75-31.98-62.15C270.96 6.14 264.22 0 256.23 0h-16.12c-9.51 0-17.09 8.57-16 18.35 4.34 39.11 22.4 74.53 50.13 97.16 17.36 14.17 28.82 36.75 31.97 62.14zM480 256H256l-110.93-83.2a63.99 63.99 0 0 0-38.4-12.8H64c-35.35 0-64 28.65-64 64v224c0 35.35 28.65 64 64 64h384c35.35 0 64-28.65 64-64V288c0-17.67-14.33-32-32-32zM128 440c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8V328c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v112zm96 0c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8V328c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v112zm96 0c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8V328c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v112zm96 0c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8V328c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v112zM64 128c35.35 0 64-28.65 64-64S99.35 0 64 0 0 28.65 0 64s28.65 64 64 64z\"]\n};\nvar faHotdog = {\n prefix: 'fas',\n iconName: 'hotdog',\n icon: [512, 512, [], \"f80f\", \"M488.56 23.44a80 80 0 0 0-113.12 0l-352 352a80 80 0 1 0 113.12 113.12l352-352a80 80 0 0 0 0-113.12zm-49.93 95.19c-19.6 19.59-37.52 22.67-51.93 25.14C373.76 146 364.4 147.6 352 160s-14 21.76-16.23 34.71c-2.48 14.4-5.55 32.33-25.15 51.92s-37.52 22.67-51.92 25.15C245.75 274 236.4 275.6 224 288s-14 21.75-16.23 34.7c-2.47 14.4-5.54 32.33-25.14 51.92s-37.53 22.68-51.93 25.15C117.76 402 108.4 403.6 96 416a16 16 0 0 1-22.63-22.63c19.6-19.59 37.52-22.67 51.92-25.14 13-2.22 22.3-3.82 34.71-16.23s14-21.75 16.22-34.7c2.48-14.4 5.55-32.33 25.15-51.92s37.52-22.67 51.92-25.14c13-2.22 22.3-3.83 34.7-16.23s14-21.76 16.24-34.71c2.47-14.4 5.54-32.33 25.14-51.92s37.52-22.68 51.92-25.15C394.24 110 403.59 108.41 416 96a16 16 0 0 1 22.63 22.63zM31.44 322.18L322.18 31.44l-11.54-11.55c-25-25-63.85-26.66-86.79-3.72L16.17 223.85c-22.94 22.94-21.27 61.79 3.72 86.78zm449.12-132.36L189.82 480.56l11.54 11.55c25 25 63.85 26.66 86.79 3.72l207.68-207.68c22.94-22.94 21.27-61.79-3.72-86.79z\"]\n};\nvar faHotel = {\n prefix: 'fas',\n iconName: 'hotel',\n icon: [576, 512, [], \"f594\", \"M560 64c8.84 0 16-7.16 16-16V16c0-8.84-7.16-16-16-16H16C7.16 0 0 7.16 0 16v32c0 8.84 7.16 16 16 16h15.98v384H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h240v-80c0-8.8 7.2-16 16-16h32c8.8 0 16 7.2 16 16v80h240c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16h-16V64h16zm-304 44.8c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4c0 6.4-6.4 12.8-12.8 12.8h-38.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4zm0 96c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4c0 6.4-6.4 12.8-12.8 12.8h-38.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4zm-128-96c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4c0 6.4-6.4 12.8-12.8 12.8h-38.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4zM179.2 256h-38.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4c0 6.4-6.4 12.8-12.8 12.8zM192 384c0-53.02 42.98-96 96-96s96 42.98 96 96H192zm256-140.8c0 6.4-6.4 12.8-12.8 12.8h-38.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4zm0-96c0 6.4-6.4 12.8-12.8 12.8h-38.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4c0-6.4 6.4-12.8 12.8-12.8h38.4c6.4 0 12.8 6.4 12.8 12.8v38.4z\"]\n};\nvar faHourglass = {\n prefix: 'fas',\n iconName: 'hourglass',\n icon: [384, 512, [], \"f254\", \"M360 64c13.255 0 24-10.745 24-24V24c0-13.255-10.745-24-24-24H24C10.745 0 0 10.745 0 24v16c0 13.255 10.745 24 24 24 0 90.965 51.016 167.734 120.842 192C75.016 280.266 24 357.035 24 448c-13.255 0-24 10.745-24 24v16c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24v-16c0-13.255-10.745-24-24-24 0-90.965-51.016-167.734-120.842-192C308.984 231.734 360 154.965 360 64z\"]\n};\nvar faHourglassEnd = {\n prefix: 'fas',\n iconName: 'hourglass-end',\n icon: [384, 512, [], \"f253\", \"M360 64c13.255 0 24-10.745 24-24V24c0-13.255-10.745-24-24-24H24C10.745 0 0 10.745 0 24v16c0 13.255 10.745 24 24 24 0 90.965 51.016 167.734 120.842 192C75.016 280.266 24 357.035 24 448c-13.255 0-24 10.745-24 24v16c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24v-16c0-13.255-10.745-24-24-24 0-90.965-51.016-167.734-120.842-192C308.984 231.734 360 154.965 360 64zM192 208c-57.787 0-104-66.518-104-144h208c0 77.945-46.51 144-104 144z\"]\n};\nvar faHourglassHalf = {\n prefix: 'fas',\n iconName: 'hourglass-half',\n icon: [384, 512, [], \"f252\", \"M360 0H24C10.745 0 0 10.745 0 24v16c0 13.255 10.745 24 24 24 0 90.965 51.016 167.734 120.842 192C75.016 280.266 24 357.035 24 448c-13.255 0-24 10.745-24 24v16c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24v-16c0-13.255-10.745-24-24-24 0-90.965-51.016-167.734-120.842-192C308.984 231.734 360 154.965 360 64c13.255 0 24-10.745 24-24V24c0-13.255-10.745-24-24-24zm-75.078 384H99.08c17.059-46.797 52.096-80 92.92-80 40.821 0 75.862 33.196 92.922 80zm.019-256H99.078C91.988 108.548 88 86.748 88 64h208c0 22.805-3.987 44.587-11.059 64z\"]\n};\nvar faHourglassStart = {\n prefix: 'fas',\n iconName: 'hourglass-start',\n icon: [384, 512, [], \"f251\", \"M360 0H24C10.745 0 0 10.745 0 24v16c0 13.255 10.745 24 24 24 0 90.965 51.016 167.734 120.842 192C75.016 280.266 24 357.035 24 448c-13.255 0-24 10.745-24 24v16c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24v-16c0-13.255-10.745-24-24-24 0-90.965-51.016-167.734-120.842-192C308.984 231.734 360 154.965 360 64c13.255 0 24-10.745 24-24V24c0-13.255-10.745-24-24-24zm-64 448H88c0-77.458 46.204-144 104-144 57.786 0 104 66.517 104 144z\"]\n};\nvar faHouseDamage = {\n prefix: 'fas',\n iconName: 'house-damage',\n icon: [576, 512, [], \"f6f1\", \"M288 114.96L69.47 307.71c-1.62 1.46-3.69 2.14-5.47 3.35V496c0 8.84 7.16 16 16 16h149.23L192 439.19l104.11-64-60.16-119.22L384 392.75l-104.11 64L319.81 512H496c8.84 0 16-7.16 16-16V311.1c-1.7-1.16-3.72-1.82-5.26-3.2L288 114.96zm282.69 121.32L512 184.45V48c0-8.84-7.16-16-16-16h-64c-8.84 0-16 7.16-16 16v51.69L314.75 10.31C307.12 3.45 297.56.01 288 0s-19.1 3.41-26.7 10.27L5.31 236.28c-6.57 5.91-7.12 16.02-1.21 22.6l21.4 23.82c5.9 6.57 16.02 7.12 22.6 1.21L277.42 81.63c6.05-5.33 15.12-5.33 21.17 0L527.91 283.9c6.57 5.9 16.69 5.36 22.6-1.21l21.4-23.82c5.9-6.57 5.36-16.69-1.22-22.59z\"]\n};\nvar faHryvnia = {\n prefix: 'fas',\n iconName: 'hryvnia',\n icon: [384, 512, [], \"f6f2\", \"M368 240c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16h-41.86c13.41-28.63 13.74-63.33-4.13-94.05C303.34 49.84 267.1 32 229.96 32h-78.82c-24.32 0-47.86 8.53-66.54 24.09L72.83 65.9c-10.18 8.49-11.56 23.62-3.07 33.8l20.49 24.59c8.49 10.19 23.62 11.56 33.81 3.07l11.73-9.78c4.32-3.6 9.77-5.57 15.39-5.57h83.62c11.69 0 21.2 9.52 21.2 21.2 0 5.91-2.48 11.58-6.81 15.58L219.7 176H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h134.37l-34.67 32H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h41.86c-13.41 28.63-13.74 63.33 4.13 94.05C80.66 462.15 116.9 480 154.04 480h78.82c24.32 0 47.86-8.53 66.54-24.09l11.77-9.81c10.18-8.49 11.56-23.62 3.07-33.8l-20.49-24.59c-8.49-10.19-23.62-11.56-33.81-3.07l-11.75 9.8a23.992 23.992 0 0 1-15.36 5.56H149.2c-11.69 0-21.2-9.52-21.2-21.2 0-5.91 2.48-11.58 6.81-15.58L164.3 336H368c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16H233.63l34.67-32H368z\"]\n};\nvar faICursor = {\n prefix: 'fas',\n iconName: 'i-cursor',\n icon: [256, 512, [], \"f246\", \"M256 52.048V12.065C256 5.496 250.726.148 244.158.066 211.621-.344 166.469.011 128 37.959 90.266.736 46.979-.114 11.913.114 5.318.157 0 5.519 0 12.114v39.645c0 6.687 5.458 12.078 12.145 11.998C38.111 63.447 96 67.243 96 112.182V224H60c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h36v112c0 44.932-56.075 48.031-83.95 47.959C5.404 447.942 0 453.306 0 459.952v39.983c0 6.569 5.274 11.917 11.842 11.999 32.537.409 77.689.054 116.158-37.894 37.734 37.223 81.021 38.073 116.087 37.845 6.595-.043 11.913-5.405 11.913-12V460.24c0-6.687-5.458-12.078-12.145-11.998C217.889 448.553 160 444.939 160 400V288h36c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-36V112.182c0-44.932 56.075-48.213 83.95-48.142 6.646.018 12.05-5.346 12.05-11.992z\"]\n};\nvar faIceCream = {\n prefix: 'fas',\n iconName: 'ice-cream',\n icon: [448, 512, [], \"f810\", \"M368 160h-.94a144 144 0 1 0-286.12 0H80a48 48 0 0 0 0 96h288a48 48 0 0 0 0-96zM195.38 493.69a31.52 31.52 0 0 0 57.24 0L352 288H96z\"]\n};\nvar faIcicles = {\n prefix: 'fas',\n iconName: 'icicles',\n icon: [512, 512, [], \"f7ad\", \"M511.4 37.9C515.1 18.2 500 0 480 0H32C10.6 0-4.8 20.7 1.4 41.2l87.1 273.4c2.5 7.2 12.7 7.2 15.1 0L140 190.5l44.2 187.3c1.9 8.3 13.7 8.3 15.6 0l46.5-196.9 34.1 133.4c2.3 7.6 13 7.6 15.3 0l45.8-172.5 66.7 363.8c1.7 8.6 14 8.6 15.7 0l87.5-467.7z\"]\n};\nvar faIcons = {\n prefix: 'fas',\n iconName: 'icons',\n icon: [512, 512, [], \"f86d\", \"M116.65 219.35a15.68 15.68 0 0 0 22.65 0l96.75-99.83c28.15-29 26.5-77.1-4.91-103.88C203.75-7.7 163-3.5 137.86 22.44L128 32.58l-9.85-10.14C93.05-3.5 52.25-7.7 24.86 15.64c-31.41 26.78-33 74.85-5 103.88zm143.92 100.49h-48l-7.08-14.24a27.39 27.39 0 0 0-25.66-17.78h-71.71a27.39 27.39 0 0 0-25.66 17.78l-7 14.24h-48A27.45 27.45 0 0 0 0 347.3v137.25A27.44 27.44 0 0 0 27.43 512h233.14A27.45 27.45 0 0 0 288 484.55V347.3a27.45 27.45 0 0 0-27.43-27.46zM144 468a52 52 0 1 1 52-52 52 52 0 0 1-52 52zm355.4-115.9h-60.58l22.36-50.75c2.1-6.65-3.93-13.21-12.18-13.21h-75.59c-6.3 0-11.66 3.9-12.5 9.1l-16.8 106.93c-1 6.3 4.88 11.89 12.5 11.89h62.31l-24.2 83c-1.89 6.65 4.2 12.9 12.23 12.9a13.26 13.26 0 0 0 10.92-5.25l92.4-138.91c4.88-6.91-1.16-15.7-10.87-15.7zM478.08.33L329.51 23.17C314.87 25.42 304 38.92 304 54.83V161.6a83.25 83.25 0 0 0-16-1.7c-35.35 0-64 21.48-64 48s28.65 48 64 48c35.2 0 63.73-21.32 64-47.66V99.66l112-17.22v47.18a83.25 83.25 0 0 0-16-1.7c-35.35 0-64 21.48-64 48s28.65 48 64 48c35.2 0 63.73-21.32 64-47.66V32c0-19.48-16-34.42-33.92-31.67z\"]\n};\nvar faIdBadge = {\n prefix: 'fas',\n iconName: 'id-badge',\n icon: [384, 512, [], \"f2c1\", \"M336 0H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zM144 32h96c8.8 0 16 7.2 16 16s-7.2 16-16 16h-96c-8.8 0-16-7.2-16-16s7.2-16 16-16zm48 128c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zm112 236.8c0 10.6-10 19.2-22.4 19.2H102.4C90 416 80 407.4 80 396.8v-19.2c0-31.8 30.1-57.6 67.2-57.6h5c12.3 5.1 25.7 8 39.8 8s27.6-2.9 39.8-8h5c37.1 0 67.2 25.8 67.2 57.6v19.2z\"]\n};\nvar faIdCard = {\n prefix: 'fas',\n iconName: 'id-card',\n icon: [576, 512, [], \"f2c2\", \"M528 32H48C21.5 32 0 53.5 0 80v16h576V80c0-26.5-21.5-48-48-48zM0 432c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V128H0v304zm352-232c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H360c-4.4 0-8-3.6-8-8v-16zm0 64c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H360c-4.4 0-8-3.6-8-8v-16zm0 64c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H360c-4.4 0-8-3.6-8-8v-16zM176 192c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zM67.1 396.2C75.5 370.5 99.6 352 128 352h8.2c12.3 5.1 25.7 8 39.8 8s27.6-2.9 39.8-8h8.2c28.4 0 52.5 18.5 60.9 44.2 3.2 9.9-5.2 19.8-15.6 19.8H82.7c-10.4 0-18.8-10-15.6-19.8z\"]\n};\nvar faIdCardAlt = {\n prefix: 'fas',\n iconName: 'id-card-alt',\n icon: [576, 512, [], \"f47f\", \"M528 64H384v96H192V64H48C21.5 64 0 85.5 0 112v352c0 26.5 21.5 48 48 48h480c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zM288 224c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zm93.3 224H194.7c-10.4 0-18.8-10-15.6-19.8 8.3-25.6 32.4-44.2 60.9-44.2h8.2c12.3 5.1 25.7 8 39.8 8s27.6-2.9 39.8-8h8.2c28.4 0 52.5 18.5 60.9 44.2 3.2 9.8-5.2 19.8-15.6 19.8zM352 32c0-17.7-14.3-32-32-32h-64c-17.7 0-32 14.3-32 32v96h128V32z\"]\n};\nvar faIgloo = {\n prefix: 'fas',\n iconName: 'igloo',\n icon: [576, 512, [], \"f7ae\", \"M320 33.9c-10.5-1.2-21.2-1.9-32-1.9-99.8 0-187.8 50.8-239.4 128H320V33.9zM96 192H30.3C11.1 230.6 0 274 0 320h96V192zM352 39.4V160h175.4C487.2 99.9 424.8 55.9 352 39.4zM480 320h96c0-46-11.1-89.4-30.3-128H480v128zm-64 64v96h128c17.7 0 32-14.3 32-32v-96H411.5c2.6 10.3 4.5 20.9 4.5 32zm32-192H128v128h49.8c22.2-38.1 63-64 110.2-64s88 25.9 110.2 64H448V192zM0 448c0 17.7 14.3 32 32 32h128v-96c0-11.1 1.9-21.7 4.5-32H0v96zm288-160c-53 0-96 43-96 96v96h192v-96c0-53-43-96-96-96z\"]\n};\nvar faImage = {\n prefix: 'fas',\n iconName: 'image',\n icon: [512, 512, [], \"f03e\", \"M464 448H48c-26.51 0-48-21.49-48-48V112c0-26.51 21.49-48 48-48h416c26.51 0 48 21.49 48 48v288c0 26.51-21.49 48-48 48zM112 120c-30.928 0-56 25.072-56 56s25.072 56 56 56 56-25.072 56-56-25.072-56-56-56zM64 384h384V272l-87.515-87.515c-4.686-4.686-12.284-4.686-16.971 0L208 320l-55.515-55.515c-4.686-4.686-12.284-4.686-16.971 0L64 336v48z\"]\n};\nvar faImages = {\n prefix: 'fas',\n iconName: 'images',\n icon: [576, 512, [], \"f302\", \"M480 416v16c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V176c0-26.51 21.49-48 48-48h16v208c0 44.112 35.888 80 80 80h336zm96-80V80c0-26.51-21.49-48-48-48H144c-26.51 0-48 21.49-48 48v256c0 26.51 21.49 48 48 48h384c26.51 0 48-21.49 48-48zM256 128c0 26.51-21.49 48-48 48s-48-21.49-48-48 21.49-48 48-48 48 21.49 48 48zm-96 144l55.515-55.515c4.686-4.686 12.284-4.686 16.971 0L272 256l135.515-135.515c4.686-4.686 12.284-4.686 16.971 0L512 208v112H160v-48z\"]\n};\nvar faInbox = {\n prefix: 'fas',\n iconName: 'inbox',\n icon: [576, 512, [], \"f01c\", \"M567.938 243.908L462.25 85.374A48.003 48.003 0 0 0 422.311 64H153.689a48 48 0 0 0-39.938 21.374L8.062 243.908A47.994 47.994 0 0 0 0 270.533V400c0 26.51 21.49 48 48 48h480c26.51 0 48-21.49 48-48V270.533a47.994 47.994 0 0 0-8.062-26.625zM162.252 128h251.497l85.333 128H376l-32 64H232l-32-64H76.918l85.334-128z\"]\n};\nvar faIndent = {\n prefix: 'fas',\n iconName: 'indent',\n icon: [448, 512, [], \"f03c\", \"M27.31 363.3l96-96a16 16 0 0 0 0-22.62l-96-96C17.27 138.66 0 145.78 0 160v192c0 14.31 17.33 21.3 27.31 11.3zM432 416H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm3.17-128H204.83A12.82 12.82 0 0 0 192 300.83v38.34A12.82 12.82 0 0 0 204.83 352h230.34A12.82 12.82 0 0 0 448 339.17v-38.34A12.82 12.82 0 0 0 435.17 288zm0-128H204.83A12.82 12.82 0 0 0 192 172.83v38.34A12.82 12.82 0 0 0 204.83 224h230.34A12.82 12.82 0 0 0 448 211.17v-38.34A12.82 12.82 0 0 0 435.17 160zM432 32H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z\"]\n};\nvar faIndustry = {\n prefix: 'fas',\n iconName: 'industry',\n icon: [512, 512, [], \"f275\", \"M475.115 163.781L336 252.309v-68.28c0-18.916-20.931-30.399-36.885-20.248L160 252.309V56c0-13.255-10.745-24-24-24H24C10.745 32 0 42.745 0 56v400c0 13.255 10.745 24 24 24h464c13.255 0 24-10.745 24-24V184.029c0-18.917-20.931-30.399-36.885-20.248z\"]\n};\nvar faInfinity = {\n prefix: 'fas',\n iconName: 'infinity',\n icon: [640, 512, [], \"f534\", \"M471.1 96C405 96 353.3 137.3 320 174.6 286.7 137.3 235 96 168.9 96 75.8 96 0 167.8 0 256s75.8 160 168.9 160c66.1 0 117.8-41.3 151.1-78.6 33.3 37.3 85 78.6 151.1 78.6 93.1 0 168.9-71.8 168.9-160S564.2 96 471.1 96zM168.9 320c-40.2 0-72.9-28.7-72.9-64s32.7-64 72.9-64c38.2 0 73.4 36.1 94 64-20.4 27.6-55.9 64-94 64zm302.2 0c-38.2 0-73.4-36.1-94-64 20.4-27.6 55.9-64 94-64 40.2 0 72.9 28.7 72.9 64s-32.7 64-72.9 64z\"]\n};\nvar faInfo = {\n prefix: 'fas',\n iconName: 'info',\n icon: [192, 512, [], \"f129\", \"M20 424.229h20V279.771H20c-11.046 0-20-8.954-20-20V212c0-11.046 8.954-20 20-20h112c11.046 0 20 8.954 20 20v212.229h20c11.046 0 20 8.954 20 20V492c0 11.046-8.954 20-20 20H20c-11.046 0-20-8.954-20-20v-47.771c0-11.046 8.954-20 20-20zM96 0C56.235 0 24 32.235 24 72s32.235 72 72 72 72-32.235 72-72S135.764 0 96 0z\"]\n};\nvar faInfoCircle = {\n prefix: 'fas',\n iconName: 'info-circle',\n icon: [512, 512, [], \"f05a\", \"M256 8C119.043 8 8 119.083 8 256c0 136.997 111.043 248 248 248s248-111.003 248-248C504 119.083 392.957 8 256 8zm0 110c23.196 0 42 18.804 42 42s-18.804 42-42 42-42-18.804-42-42 18.804-42 42-42zm56 254c0 6.627-5.373 12-12 12h-88c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h12v-64h-12c-6.627 0-12-5.373-12-12v-24c0-6.627 5.373-12 12-12h64c6.627 0 12 5.373 12 12v100h12c6.627 0 12 5.373 12 12v24z\"]\n};\nvar faItalic = {\n prefix: 'fas',\n iconName: 'italic',\n icon: [320, 512, [], \"f033\", \"M320 48v32a16 16 0 0 1-16 16h-62.76l-80 320H208a16 16 0 0 1 16 16v32a16 16 0 0 1-16 16H16a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h62.76l80-320H112a16 16 0 0 1-16-16V48a16 16 0 0 1 16-16h192a16 16 0 0 1 16 16z\"]\n};\nvar faJedi = {\n prefix: 'fas',\n iconName: 'jedi',\n icon: [576, 512, [], \"f669\", \"M535.95308,352c-42.64069,94.17188-137.64086,160-247.9848,160q-6.39844,0-12.84377-.29688C171.15558,506.9375,81.26481,442.23438,40.01474,352H79.93668L21.3272,293.40625a264.82522,264.82522,0,0,1-5.10938-39.42187,273.6653,273.6653,0,0,1,.5-29.98438H63.93665L22.546,182.625A269.79782,269.79782,0,0,1,130.51489,20.54688a16.06393,16.06393,0,0,1,9.28127-3,16.36332,16.36332,0,0,1,13.5,7.25,16.02739,16.02739,0,0,1,1.625,15.09374,138.387,138.387,0,0,0-9.84376,51.26563c0,45.10937,21.04691,86.57813,57.71884,113.73437a16.29989,16.29989,0,0,1,1.20313,25.39063c-26.54692,23.98437-41.17194,56.5-41.17194,91.57813,0,60.03124,42.95319,110.28124,99.89079,121.92187l2.5-65.26563L238.062,397a8.33911,8.33911,0,0,1-10-.75,8.025,8.025,0,0,1-1.39063-9.9375l20.125-33.76562-42.06257-8.73438a7.9898,7.9898,0,0,1,0-15.65625l42.06257-8.71875-20.10941-33.73438a7.99122,7.99122,0,0,1,11.35939-10.71874L268.437,295.64062,279.95265,7.67188a7.97138,7.97138,0,0,1,8-7.67188h.04687a8.02064,8.02064,0,0,1,7.95314,7.70312L307.48394,295.625l30.39068-20.67188a8.08327,8.08327,0,0,1,10,.8125,7.99866,7.99866,0,0,1,1.39062,9.90626L329.12461,319.4375l42.07819,8.73438a7.99373,7.99373,0,0,1,0,15.65624l-42.07819,8.71876,20.1094,33.73437a7.97791,7.97791,0,0,1-1.32812,9.92187A8.25739,8.25739,0,0,1,337.87462,397L310.7027,378.53125l2.5,65.34375c48.48446-9.40625,87.57828-48.15625,97.31267-96.5A123.52652,123.52652,0,0,0,371.9528,230.29688a16.30634,16.30634,0,0,1,1.20313-25.42188c36.65631-27.17188,57.6876-68.60938,57.6876-113.73438a138.01689,138.01689,0,0,0-9.85939-51.3125,15.98132,15.98132,0,0,1,1.60937-15.09374,16.36914,16.36914,0,0,1,13.5-7.23438,16.02453,16.02453,0,0,1,9.25,2.98438A271.26947,271.26947,0,0,1,553.25,182.76562L511.99992,224h46.9532C559.3125,229.76562,560,235.45312,560,241.26562a270.092,270.092,0,0,1-5.125,51.85938L495.98427,352Z\"]\n};\nvar faJoint = {\n prefix: 'fas',\n iconName: 'joint',\n icon: [640, 512, [], \"f595\", \"M444.34 181.1c22.38 15.68 35.66 41.16 35.66 68.59V280c0 4.42 3.58 8 8 8h48c4.42 0 8-3.58 8-8v-30.31c0-43.24-21.01-83.41-56.34-108.06C463.85 125.02 448 99.34 448 70.31V8c0-4.42-3.58-8-8-8h-48c-4.42 0-8 3.58-8 8v66.4c0 43.69 24.56 81.63 60.34 106.7zM194.97 358.98C126.03 370.07 59.69 394.69 0 432c83.65 52.28 180.3 80 278.94 80h88.57L254.79 380.49c-14.74-17.2-37.45-25.11-59.82-21.51zM553.28 87.09c-5.67-3.8-9.28-9.96-9.28-16.78V8c0-4.42-3.58-8-8-8h-48c-4.42 0-8 3.58-8 8v62.31c0 22.02 10.17 43.41 28.64 55.39C550.79 153.04 576 199.54 576 249.69V280c0 4.42 3.58 8 8 8h48c4.42 0 8-3.58 8-8v-30.31c0-65.44-32.41-126.19-86.72-162.6zM360.89 352.05c-34.4.06-86.81.15-88.21.17l117.8 137.43A63.987 63.987 0 0 0 439.07 512h88.45L409.57 374.4a63.955 63.955 0 0 0-48.68-22.35zM616 352H432l117.99 137.65A63.987 63.987 0 0 0 598.58 512H616c13.25 0 24-10.75 24-24V376c0-13.26-10.75-24-24-24z\"]\n};\nvar faJournalWhills = {\n prefix: 'fas',\n iconName: 'journal-whills',\n icon: [448, 512, [], \"f66a\", \"M438.40625,377.59375c-3.20313,12.8125-3.20313,57.60937,0,73.60937Q447.9922,460.78907,448,470.40625v16c0,16-12.79688,25.59375-25.59375,25.59375H96c-54.40625,0-96-41.59375-96-96V96C0,41.59375,41.59375,0,96,0H422.40625C438.40625,0,448,9.59375,448,25.59375v332.8125Q448,372.79688,438.40625,377.59375ZM380.79688,384H96c-16,0-32,12.79688-32,32s12.79688,32,32,32H380.79688ZM128.01562,176.01562c0,.51563.14063.98438.14063,1.5l37.10937,32.46876A7.99954,7.99954,0,0,1,160,224h-.01562a9.17678,9.17678,0,0,1-5.25-1.98438L131.14062,201.375C142.6875,250.95312,186.90625,288,240,288s97.3125-37.04688,108.875-86.625l-23.59375,20.64062a8.02516,8.02516,0,0,1-5.26563,1.96876H320a9.14641,9.14641,0,0,1-6.01562-2.71876A9.26508,9.26508,0,0,1,312,216a9.097,9.097,0,0,1,2.73438-6.01562l37.10937-32.46876c.01563-.53124.15625-1,.15625-1.51562,0-11.04688-2.09375-21.51562-5.06251-31.59375l-21.26562,21.25a8.00467,8.00467,0,0,1-11.32812-11.3125l26.42187-26.40625a111.81517,111.81517,0,0,0-46.35937-49.26562,63.02336,63.02336,0,0,1-14.0625,82.64062A55.83846,55.83846,0,0,1,251.625,254.73438l-1.42188-34.28126,12.67188,8.625a3.967,3.967,0,0,0,2.25.6875,3.98059,3.98059,0,0,0,3.43749-6.03124l-8.53124-14.3125,17.90625-3.71876a4.00647,4.00647,0,0,0,0-7.84374l-17.90625-3.71876,8.53124-14.3125a3.98059,3.98059,0,0,0-3.43749-6.03124,4.726,4.726,0,0,0-2.25.67187L248.6875,184.125,244,71.82812a4.00386,4.00386,0,0,0-8,0l-4.625,110.8125-12-8.15624a4.003,4.003,0,0,0-5.68751,5.35937l8.53126,14.3125L204.3125,197.875a3.99686,3.99686,0,0,0,0,7.82812l17.90625,3.73438-8.53126,14.29688a4.72469,4.72469,0,0,0-.56249,2.04687,4.59547,4.59547,0,0,0,1.25,2.90625,4.01059,4.01059,0,0,0,2.75,1.09375,4.09016,4.09016,0,0,0,2.25-.6875l10.35937-7.04687L228.375,254.76562a55.86414,55.86414,0,0,1-28.71875-93.45312,63.01119,63.01119,0,0,1-14.04688-82.65625,111.93158,111.93158,0,0,0-46.375,49.26563l26.42187,26.42187a7.99917,7.99917,0,0,1-11.3125,11.3125l-21.26563-21.26563C130.09375,154.48438,128,164.95312,128.01562,176.01562Z\"]\n};\nvar faKaaba = {\n prefix: 'fas',\n iconName: 'kaaba',\n icon: [576, 512, [], \"f66b\", \"M554.12 83.51L318.36 4.93a95.962 95.962 0 0 0-60.71 0L21.88 83.51A32.006 32.006 0 0 0 0 113.87v49.01l265.02-79.51c15.03-4.5 30.92-4.5 45.98 0l265 79.51v-49.01c0-13.77-8.81-26-21.88-30.36zm-279.9 30.52L0 196.3v228.38c0 15 10.42 27.98 25.06 31.24l242.12 53.8a95.937 95.937 0 0 0 41.65 0l242.12-53.8c14.64-3.25 25.06-16.24 25.06-31.24V196.29l-274.2-82.26c-9.04-2.72-18.59-2.72-27.59 0zM128 230.11c0 3.61-2.41 6.77-5.89 7.72l-80 21.82C37.02 261.03 32 257.2 32 251.93v-16.58c0-3.61 2.41-6.77 5.89-7.72l80-21.82c5.09-1.39 10.11 2.44 10.11 7.72v16.58zm144-39.28c0 3.61-2.41 6.77-5.89 7.72l-96 26.18c-5.09 1.39-10.11-2.44-10.11-7.72v-16.58c0-3.61 2.41-6.77 5.89-7.72l96-26.18c5.09-1.39 10.11 2.44 10.11 7.72v16.58zm176 22.7c0-5.28 5.02-9.11 10.11-7.72l80 21.82c3.48.95 5.89 4.11 5.89 7.72v16.58c0 5.28-5.02 9.11-10.11 7.72l-80-21.82a7.997 7.997 0 0 1-5.89-7.72v-16.58zm-144-39.27c0-5.28 5.02-9.11 10.11-7.72l96 26.18c3.48.95 5.89 4.11 5.89 7.72v16.58c0 5.28-5.02 9.11-10.11 7.72l-96-26.18a7.997 7.997 0 0 1-5.89-7.72v-16.58z\"]\n};\nvar faKey = {\n prefix: 'fas',\n iconName: 'key',\n icon: [512, 512, [], \"f084\", \"M512 176.001C512 273.203 433.202 352 336 352c-11.22 0-22.19-1.062-32.827-3.069l-24.012 27.014A23.999 23.999 0 0 1 261.223 384H224v40c0 13.255-10.745 24-24 24h-40v40c0 13.255-10.745 24-24 24H24c-13.255 0-24-10.745-24-24v-78.059c0-6.365 2.529-12.47 7.029-16.971l161.802-161.802C163.108 213.814 160 195.271 160 176 160 78.798 238.797.001 335.999 0 433.488-.001 512 78.511 512 176.001zM336 128c0 26.51 21.49 48 48 48s48-21.49 48-48-21.49-48-48-48-48 21.49-48 48z\"]\n};\nvar faKeyboard = {\n prefix: 'fas',\n iconName: 'keyboard',\n icon: [576, 512, [], \"f11c\", \"M528 448H48c-26.51 0-48-21.49-48-48V112c0-26.51 21.49-48 48-48h480c26.51 0 48 21.49 48 48v288c0 26.51-21.49 48-48 48zM128 180v-40c0-6.627-5.373-12-12-12H76c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm-336 96v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm-336 96v-40c0-6.627-5.373-12-12-12H76c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm288 0v-40c0-6.627-5.373-12-12-12H172c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h232c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12z\"]\n};\nvar faKhanda = {\n prefix: 'fas',\n iconName: 'khanda',\n icon: [512, 512, [], \"f66d\", \"M415.81 66c-6.37-3.5-14.37-2.33-19.36 3.02a15.974 15.974 0 0 0-1.91 19.52c16.49 26.16 25.2 56.39 25.2 87.41-.19 53.25-26.77 102.69-71.27 132.41l-76.63 53.35v-20.1l44.05-36.09c3.92-4.2 5-10.09 2.81-15.28L310.85 273c33.84-19.26 56.94-55.25 56.94-96.99 0-40.79-22.02-76.13-54.59-95.71l5.22-11.44c2.34-5.53.93-11.83-3.57-16.04L255.86 0l-58.99 52.81c-4.5 4.21-5.9 10.51-3.57 16.04l5.22 11.44c-32.57 19.58-54.59 54.93-54.59 95.72 0 41.75 23.09 77.73 56.94 96.99l-7.85 17.24c-2.19 5.18-1.1 11.07 2.81 15.28l44.05 36.09v19.9l-76.59-53.33C119.02 278.62 92.44 229.19 92.26 176c0-31.08 8.71-61.31 25.2-87.47 3.87-6.16 2.4-13.77-2.59-19.08-5-5.34-13.68-6.2-20.02-2.7C16.32 109.6-22.3 205.3 13.36 295.99c7.07 17.99 17.89 34.38 30.46 49.06l55.97 65.36c4.87 5.69 13.04 7.24 19.65 3.72l79.35-42.23L228 392.23l-47.08 32.78c-1.67-.37-3.23-1.01-5.01-1.01-13.25 0-23.99 10.74-23.99 24 0 13.25 10.74 24 23.99 24 12.1 0 21.69-9.11 23.33-20.76l40.63-28.28v29.95c-9.39 5.57-15.99 15.38-15.99 27.1 0 17.67 14.32 32 31.98 32s31.98-14.33 31.98-32c0-11.71-6.61-21.52-15.99-27.1v-30.15l40.91 28.48C314.41 462.89 324 472 336.09 472c13.25 0 23.99-10.75 23.99-24 0-13.26-10.74-24-23.99-24-1.78 0-3.34.64-5.01 1.01L284 392.23l29.21-20.34 79.35 42.23c6.61 3.52 14.78 1.97 19.65-3.71l52.51-61.31c18.87-22.02 34-47.5 41.25-75.59 21.62-83.66-16.45-167.27-90.16-207.51zm-95.99 110c0 22.3-11.49 41.92-28.83 53.38l-5.65-12.41c-8.75-24.52-8.75-51.04 0-75.56l7.83-17.18c16.07 11.65 26.65 30.45 26.65 51.77zm-127.93 0c0-21.32 10.58-40.12 26.66-51.76l7.83 17.18c8.75 24.52 8.75 51.03 0 75.56l-5.65 12.41c-17.34-11.46-28.84-31.09-28.84-53.39z\"]\n};\nvar faKiss = {\n prefix: 'fas',\n iconName: 'kiss',\n icon: [496, 512, [], \"f596\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm-80 232c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm136 156c0 19.2-28.7 41.5-71.5 44-8.5.8-12.1-11.8-3.6-15.4l17-7.2c13-5.5 20.8-13.5 20.8-21.5s-7.8-16-20.8-21.5l-17-7.2c-6-2.5-6.1-12.2 0-14.8l17-7.2c13-5.5 20.8-13.5 20.8-21.5s-7.8-16-20.8-21.5l-17-7.2c-8.6-3.6-4.8-16.5 3.6-15.4 42.8 2.5 71.5 24.8 71.5 44 0 13-13.4 27.3-35.2 36C290.6 368.7 304 383 304 396zm24-156c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z\"]\n};\nvar faKissBeam = {\n prefix: 'fas',\n iconName: 'kiss-beam',\n icon: [496, 512, [], \"f597\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm-39 219.9l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.2 7.4-15.6 4-14.9-4.5 3.3-42.1 32.2-71.4 56-71.4s52.7 29.3 56 71.4c.5 8.5-10.9 12-15.1 4.5zM304 396c0 19.2-28.7 41.5-71.5 44-8.5.8-12.1-11.8-3.6-15.4l17-7.2c13-5.5 20.8-13.5 20.8-21.5s-7.8-16-20.8-21.5l-17-7.2c-6-2.5-6.1-12.2 0-14.8l17-7.2c13-5.5 20.8-13.5 20.8-21.5s-7.8-16-20.8-21.5l-17-7.2c-8.6-3.6-4.8-16.5 3.6-15.4 42.8 2.5 71.5 24.8 71.5 44 0 13-13.4 27.3-35.2 36C290.6 368.7 304 383 304 396zm65-168.1l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.1 7.3-15.6 4-14.9-4.5 3.3-42.1 32.2-71.4 56-71.4s52.7 29.3 56 71.4c.5 8.5-10.9 12-15.1 4.5z\"]\n};\nvar faKissWinkHeart = {\n prefix: 'fas',\n iconName: 'kiss-wink-heart',\n icon: [504, 512, [], \"f598\", \"M501.1 402.5c-8-20.8-31.5-31.5-53.1-25.9l-8.4 2.2-2.3-8.4c-5.9-21.4-27-36.5-49-33-25.2 4-40.6 28.6-34 52.6l22.9 82.6c1.5 5.3 7 8.5 12.4 7.1l83-21.5c24.1-6.3 37.7-31.8 28.5-55.7zm-177.6-4c-5.6-20.3-2.3-42 9-59.7 29.7-46.3 98.7-45.5 127.8 4.3 6.4.1 12.6 1.4 18.6 2.9 10.9-27.9 17.1-58.2 17.1-90C496 119 385 8 248 8S0 119 0 256s111 248 248 248c35.4 0 68.9-7.5 99.4-20.9-.3-.7-23.9-84.6-23.9-84.6zM168 240c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm120 156c0 19.2-28.7 41.5-71.5 44-8.5.8-12.1-11.8-3.6-15.4l17-7.2c13-5.5 20.8-13.5 20.8-21.5s-7.8-16-20.8-21.5l-17-7.2c-6-2.5-5.7-12.3 0-14.8l17-7.2c13-5.5 20.8-13.5 20.8-21.5s-7.8-16-20.8-21.5l-17-7.2c-8.8-3.7-4.6-16.6 3.6-15.4 42.8 2.5 71.5 24.8 71.5 44 0 13-13.4 27.3-35.2 36C274.6 368.7 288 383 288 396zm16-179c-8.3 7.4-21.6.4-19.8-10.8 4-25.2 34.2-42.1 59.9-42.1S400 181 404 206.2c1.7 11.1-11.3 18.3-19.8 10.8l-9.5-8.5c-14.8-13.2-46.2-13.2-61 0L304 217z\"]\n};\nvar faKiwiBird = {\n prefix: 'fas',\n iconName: 'kiwi-bird',\n icon: [576, 512, [], \"f535\", \"M575.81 217.98C572.64 157.41 518.28 112 457.63 112h-9.37c-52.82 0-104.25-16.25-147.74-46.24-41.99-28.96-96.04-41.62-153.21-28.7C129.3 41.12-.08 78.24 0 224c.04 70.95 38.68 132.8 95.99 166.01V464c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-54.26c15.36 3.96 31.4 6.26 48 6.26 5.44 0 10.68-.73 16-1.18V464c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-59.43c14.24-5.06 27.88-11.39 40.34-19.51C342.07 355.25 393.86 336 448.46 336c25.48 0 16.01-.31 23.05-.78l74.41 136.44c2.86 5.23 8.3 8.34 14.05 8.34 1.31 0 2.64-.16 3.95-.5 7.09-1.8 12.05-8.19 12.05-15.5 0 0 .14-240.24-.16-246.02zM463.97 248c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24zm80 153.25l-39.86-73.08c15.12-5.83 28.73-14.6 39.86-25.98v99.06z\"]\n};\nvar faLandmark = {\n prefix: 'fas',\n iconName: 'landmark',\n icon: [512, 512, [], \"f66f\", \"M501.62 92.11L267.24 2.04a31.958 31.958 0 0 0-22.47 0L10.38 92.11A16.001 16.001 0 0 0 0 107.09V144c0 8.84 7.16 16 16 16h480c8.84 0 16-7.16 16-16v-36.91c0-6.67-4.14-12.64-10.38-14.98zM64 192v160H48c-8.84 0-16 7.16-16 16v48h448v-48c0-8.84-7.16-16-16-16h-16V192h-64v160h-96V192h-64v160h-96V192H64zm432 256H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h480c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16z\"]\n};\nvar faLanguage = {\n prefix: 'fas',\n iconName: 'language',\n icon: [640, 512, [], \"f1ab\", \"M152.1 236.2c-3.5-12.1-7.8-33.2-7.8-33.2h-.5s-4.3 21.1-7.8 33.2l-11.1 37.5H163zM616 96H336v320h280c13.3 0 24-10.7 24-24V120c0-13.3-10.7-24-24-24zm-24 120c0 6.6-5.4 12-12 12h-11.4c-6.9 23.6-21.7 47.4-42.7 69.9 8.4 6.4 17.1 12.5 26.1 18 5.5 3.4 7.3 10.5 4.1 16.2l-7.9 13.9c-3.4 5.9-10.9 7.8-16.7 4.3-12.6-7.8-24.5-16.1-35.4-24.9-10.9 8.7-22.7 17.1-35.4 24.9-5.8 3.5-13.3 1.6-16.7-4.3l-7.9-13.9c-3.2-5.6-1.4-12.8 4.2-16.2 9.3-5.7 18-11.7 26.1-18-7.9-8.4-14.9-17-21-25.7-4-5.7-2.2-13.6 3.7-17.1l6.5-3.9 7.3-4.3c5.4-3.2 12.4-1.7 16 3.4 5 7 10.8 14 17.4 20.9 13.5-14.2 23.8-28.9 30-43.2H412c-6.6 0-12-5.4-12-12v-16c0-6.6 5.4-12 12-12h64v-16c0-6.6 5.4-12 12-12h16c6.6 0 12 5.4 12 12v16h64c6.6 0 12 5.4 12 12zM0 120v272c0 13.3 10.7 24 24 24h280V96H24c-13.3 0-24 10.7-24 24zm58.9 216.1L116.4 167c1.7-4.9 6.2-8.1 11.4-8.1h32.5c5.1 0 9.7 3.3 11.4 8.1l57.5 169.1c2.6 7.8-3.1 15.9-11.4 15.9h-22.9a12 12 0 0 1-11.5-8.6l-9.4-31.9h-60.2l-9.1 31.8c-1.5 5.1-6.2 8.7-11.5 8.7H70.3c-8.2 0-14-8.1-11.4-15.9z\"]\n};\nvar faLaptop = {\n prefix: 'fas',\n iconName: 'laptop',\n icon: [640, 512, [], \"f109\", \"M624 416H381.54c-.74 19.81-14.71 32-32.74 32H288c-18.69 0-33.02-17.47-32.77-32H16c-8.8 0-16 7.2-16 16v16c0 35.2 28.8 64 64 64h512c35.2 0 64-28.8 64-64v-16c0-8.8-7.2-16-16-16zM576 48c0-26.4-21.6-48-48-48H112C85.6 0 64 21.6 64 48v336h512V48zm-64 272H128V64h384v256z\"]\n};\nvar faLaptopCode = {\n prefix: 'fas',\n iconName: 'laptop-code',\n icon: [640, 512, [], \"f5fc\", \"M255.03 261.65c6.25 6.25 16.38 6.25 22.63 0l11.31-11.31c6.25-6.25 6.25-16.38 0-22.63L253.25 192l35.71-35.72c6.25-6.25 6.25-16.38 0-22.63l-11.31-11.31c-6.25-6.25-16.38-6.25-22.63 0l-58.34 58.34c-6.25 6.25-6.25 16.38 0 22.63l58.35 58.34zm96.01-11.3l11.31 11.31c6.25 6.25 16.38 6.25 22.63 0l58.34-58.34c6.25-6.25 6.25-16.38 0-22.63l-58.34-58.34c-6.25-6.25-16.38-6.25-22.63 0l-11.31 11.31c-6.25 6.25-6.25 16.38 0 22.63L386.75 192l-35.71 35.72c-6.25 6.25-6.25 16.38 0 22.63zM624 416H381.54c-.74 19.81-14.71 32-32.74 32H288c-18.69 0-33.02-17.47-32.77-32H16c-8.8 0-16 7.2-16 16v16c0 35.2 28.8 64 64 64h512c35.2 0 64-28.8 64-64v-16c0-8.8-7.2-16-16-16zM576 48c0-26.4-21.6-48-48-48H112C85.6 0 64 21.6 64 48v336h512V48zm-64 272H128V64h384v256z\"]\n};\nvar faLaptopMedical = {\n prefix: 'fas',\n iconName: 'laptop-medical',\n icon: [640, 512, [], \"f812\", \"M232 224h56v56a8 8 0 0 0 8 8h48a8 8 0 0 0 8-8v-56h56a8 8 0 0 0 8-8v-48a8 8 0 0 0-8-8h-56v-56a8 8 0 0 0-8-8h-48a8 8 0 0 0-8 8v56h-56a8 8 0 0 0-8 8v48a8 8 0 0 0 8 8zM576 48a48.14 48.14 0 0 0-48-48H112a48.14 48.14 0 0 0-48 48v336h512zm-64 272H128V64h384zm112 96H381.54c-.74 19.81-14.71 32-32.74 32H288c-18.69 0-33-17.47-32.77-32H16a16 16 0 0 0-16 16v16a64.19 64.19 0 0 0 64 64h512a64.19 64.19 0 0 0 64-64v-16a16 16 0 0 0-16-16z\"]\n};\nvar faLaugh = {\n prefix: 'fas',\n iconName: 'laugh',\n icon: [496, 512, [], \"f599\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm80 152c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm-160 0c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm88 272h-16c-73.4 0-134-55-142.9-126-1.2-9.5 6.3-18 15.9-18h270c9.6 0 17.1 8.4 15.9 18-8.9 71-69.5 126-142.9 126z\"]\n};\nvar faLaughBeam = {\n prefix: 'fas',\n iconName: 'laugh-beam',\n icon: [496, 512, [], \"f59a\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm24 199.4c3.3-42.1 32.2-71.4 56-71.4s52.7 29.3 56 71.4c.7 8.6-10.8 11.9-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.2 7.4-15.8 4.1-15.1-4.5zm-160 0c3.3-42.1 32.2-71.4 56-71.4s52.7 29.3 56 71.4c.7 8.6-10.8 11.9-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.3 7.4-15.8 4-15.1-4.5zM398.9 306C390 377 329.4 432 256 432h-16c-73.4 0-134-55-142.9-126-1.2-9.5 6.3-18 15.9-18h270c9.6 0 17.1 8.4 15.9 18z\"]\n};\nvar faLaughSquint = {\n prefix: 'fas',\n iconName: 'laugh-squint',\n icon: [496, 512, [], \"f59b\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm33.8 161.7l80-48c11.6-6.9 24 7.7 15.4 18L343.6 180l33.6 40.3c8.7 10.4-3.9 24.8-15.4 18l-80-48c-7.7-4.7-7.7-15.9 0-20.6zm-163-30c-8.6-10.3 3.8-24.9 15.4-18l80 48c7.8 4.7 7.8 15.9 0 20.6l-80 48c-11.5 6.8-24-7.6-15.4-18l33.6-40.3-33.6-40.3zM398.9 306C390 377 329.4 432 256 432h-16c-73.4 0-134-55-142.9-126-1.2-9.5 6.3-18 15.9-18h270c9.6 0 17.1 8.4 15.9 18z\"]\n};\nvar faLaughWink = {\n prefix: 'fas',\n iconName: 'laugh-wink',\n icon: [496, 512, [], \"f59c\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm20.1 198.1c4-25.2 34.2-42.1 59.9-42.1s55.9 16.9 59.9 42.1c1.7 11.1-11.4 18.3-19.8 10.8l-9.5-8.5c-14.8-13.2-46.2-13.2-61 0L288 217c-8.4 7.4-21.6.3-19.9-10.9zM168 160c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm230.9 146C390 377 329.4 432 256 432h-16c-73.4 0-134-55-142.9-126-1.2-9.5 6.3-18 15.9-18h270c9.6 0 17.1 8.4 15.9 18z\"]\n};\nvar faLayerGroup = {\n prefix: 'fas',\n iconName: 'layer-group',\n icon: [512, 512, [], \"f5fd\", \"M12.41 148.02l232.94 105.67c6.8 3.09 14.49 3.09 21.29 0l232.94-105.67c16.55-7.51 16.55-32.52 0-40.03L266.65 2.31a25.607 25.607 0 0 0-21.29 0L12.41 107.98c-16.55 7.51-16.55 32.53 0 40.04zm487.18 88.28l-58.09-26.33-161.64 73.27c-7.56 3.43-15.59 5.17-23.86 5.17s-16.29-1.74-23.86-5.17L70.51 209.97l-58.1 26.33c-16.55 7.5-16.55 32.5 0 40l232.94 105.59c6.8 3.08 14.49 3.08 21.29 0L499.59 276.3c16.55-7.5 16.55-32.5 0-40zm0 127.8l-57.87-26.23-161.86 73.37c-7.56 3.43-15.59 5.17-23.86 5.17s-16.29-1.74-23.86-5.17L70.29 337.87 12.41 364.1c-16.55 7.5-16.55 32.5 0 40l232.94 105.59c6.8 3.08 14.49 3.08 21.29 0L499.59 404.1c16.55-7.5 16.55-32.5 0-40z\"]\n};\nvar faLeaf = {\n prefix: 'fas',\n iconName: 'leaf',\n icon: [576, 512, [], \"f06c\", \"M546.2 9.7c-5.6-12.5-21.6-13-28.3-1.2C486.9 62.4 431.4 96 368 96h-80C182 96 96 182 96 288c0 7 .8 13.7 1.5 20.5C161.3 262.8 253.4 224 384 224c8.8 0 16 7.2 16 16s-7.2 16-16 16C132.6 256 26 410.1 2.4 468c-6.6 16.3 1.2 34.9 17.5 41.6 16.4 6.8 35-1.1 41.8-17.3 1.5-3.6 20.9-47.9 71.9-90.6 32.4 43.9 94 85.8 174.9 77.2C465.5 467.5 576 326.7 576 154.3c0-50.2-10.8-102.2-29.8-144.6z\"]\n};\nvar faLemon = {\n prefix: 'fas',\n iconName: 'lemon',\n icon: [512, 512, [], \"f094\", \"M489.038 22.963C465.944-.13 434.648-5.93 413.947 6.129c-58.906 34.312-181.25-53.077-321.073 86.746S40.441 355.041 6.129 413.945c-12.059 20.702-6.26 51.999 16.833 75.093 23.095 23.095 54.392 28.891 75.095 16.832 58.901-34.31 181.246 53.079 321.068-86.743S471.56 156.96 505.871 98.056c12.059-20.702 6.261-51.999-16.833-75.093zM243.881 95.522c-58.189 14.547-133.808 90.155-148.358 148.358-1.817 7.27-8.342 12.124-15.511 12.124-1.284 0-2.59-.156-3.893-.481-8.572-2.144-13.784-10.83-11.642-19.403C81.901 166.427 166.316 81.93 236.119 64.478c8.575-2.143 17.261 3.069 19.403 11.642s-3.069 17.259-11.641 19.402z\"]\n};\nvar faLessThan = {\n prefix: 'fas',\n iconName: 'less-than',\n icon: [384, 512, [], \"f536\", \"M365.46 357.74L147.04 255.89l218.47-101.88c16.02-7.47 22.95-26.51 15.48-42.53l-13.52-29C360 66.46 340.96 59.53 324.94 67L18.48 209.91a32.014 32.014 0 0 0-18.48 29v34.24c0 12.44 7.21 23.75 18.48 29l306.31 142.83c16.06 7.49 35.15.54 42.64-15.52l13.56-29.08c7.49-16.06.54-35.15-15.53-42.64z\"]\n};\nvar faLessThanEqual = {\n prefix: 'fas',\n iconName: 'less-than-equal',\n icon: [448, 512, [], \"f537\", \"M54.98 214.2l301.41 119.87c18.39 6.03 38.71-2.54 45.38-19.15l12.09-30.08c6.68-16.61-2.82-34.97-21.21-41l-175.44-68.05 175.56-68.09c18.29-6 27.74-24.27 21.1-40.79l-12.03-29.92c-6.64-16.53-26.86-25.06-45.15-19.06L54.98 137.89C41.21 142.41 32 154.5 32 168.07v15.96c0 13.56 9.21 25.65 22.98 30.17zM424 400H24c-13.25 0-24 10.74-24 24v48c0 13.25 10.75 24 24 24h400c13.25 0 24-10.75 24-24v-48c0-13.26-10.75-24-24-24z\"]\n};\nvar faLevelDownAlt = {\n prefix: 'fas',\n iconName: 'level-down-alt',\n icon: [320, 512, [], \"f3be\", \"M313.553 392.331L209.587 504.334c-9.485 10.214-25.676 10.229-35.174 0L70.438 392.331C56.232 377.031 67.062 352 88.025 352H152V80H68.024a11.996 11.996 0 0 1-8.485-3.515l-56-56C-4.021 12.926 1.333 0 12.024 0H208c13.255 0 24 10.745 24 24v328h63.966c20.878 0 31.851 24.969 17.587 40.331z\"]\n};\nvar faLevelUpAlt = {\n prefix: 'fas',\n iconName: 'level-up-alt',\n icon: [320, 512, [], \"f3bf\", \"M313.553 119.669L209.587 7.666c-9.485-10.214-25.676-10.229-35.174 0L70.438 119.669C56.232 134.969 67.062 160 88.025 160H152v272H68.024a11.996 11.996 0 0 0-8.485 3.515l-56 56C-4.021 499.074 1.333 512 12.024 512H208c13.255 0 24-10.745 24-24V160h63.966c20.878 0 31.851-24.969 17.587-40.331z\"]\n};\nvar faLifeRing = {\n prefix: 'fas',\n iconName: 'life-ring',\n icon: [512, 512, [], \"f1cd\", \"M256 8C119.033 8 8 119.033 8 256s111.033 248 248 248 248-111.033 248-248S392.967 8 256 8zm173.696 119.559l-63.399 63.399c-10.987-18.559-26.67-34.252-45.255-45.255l63.399-63.399a218.396 218.396 0 0 1 45.255 45.255zM256 352c-53.019 0-96-42.981-96-96s42.981-96 96-96 96 42.981 96 96-42.981 96-96 96zM127.559 82.304l63.399 63.399c-18.559 10.987-34.252 26.67-45.255 45.255l-63.399-63.399a218.372 218.372 0 0 1 45.255-45.255zM82.304 384.441l63.399-63.399c10.987 18.559 26.67 34.252 45.255 45.255l-63.399 63.399a218.396 218.396 0 0 1-45.255-45.255zm302.137 45.255l-63.399-63.399c18.559-10.987 34.252-26.67 45.255-45.255l63.399 63.399a218.403 218.403 0 0 1-45.255 45.255z\"]\n};\nvar faLightbulb = {\n prefix: 'fas',\n iconName: 'lightbulb',\n icon: [352, 512, [], \"f0eb\", \"M96.06 454.35c.01 6.29 1.87 12.45 5.36 17.69l17.09 25.69a31.99 31.99 0 0 0 26.64 14.28h61.71a31.99 31.99 0 0 0 26.64-14.28l17.09-25.69a31.989 31.989 0 0 0 5.36-17.69l.04-38.35H96.01l.05 38.35zM0 176c0 44.37 16.45 84.85 43.56 115.78 16.52 18.85 42.36 58.23 52.21 91.45.04.26.07.52.11.78h160.24c.04-.26.07-.51.11-.78 9.85-33.22 35.69-72.6 52.21-91.45C335.55 260.85 352 220.37 352 176 352 78.61 272.91-.3 175.45 0 73.44.31 0 82.97 0 176zm176-80c-44.11 0-80 35.89-80 80 0 8.84-7.16 16-16 16s-16-7.16-16-16c0-61.76 50.24-112 112-112 8.84 0 16 7.16 16 16s-7.16 16-16 16z\"]\n};\nvar faLink = {\n prefix: 'fas',\n iconName: 'link',\n icon: [512, 512, [], \"f0c1\", \"M326.612 185.391c59.747 59.809 58.927 155.698.36 214.59-.11.12-.24.25-.36.37l-67.2 67.2c-59.27 59.27-155.699 59.262-214.96 0-59.27-59.26-59.27-155.7 0-214.96l37.106-37.106c9.84-9.84 26.786-3.3 27.294 10.606.648 17.722 3.826 35.527 9.69 52.721 1.986 5.822.567 12.262-3.783 16.612l-13.087 13.087c-28.026 28.026-28.905 73.66-1.155 101.96 28.024 28.579 74.086 28.749 102.325.51l67.2-67.19c28.191-28.191 28.073-73.757 0-101.83-3.701-3.694-7.429-6.564-10.341-8.569a16.037 16.037 0 0 1-6.947-12.606c-.396-10.567 3.348-21.456 11.698-29.806l21.054-21.055c5.521-5.521 14.182-6.199 20.584-1.731a152.482 152.482 0 0 1 20.522 17.197zM467.547 44.449c-59.261-59.262-155.69-59.27-214.96 0l-67.2 67.2c-.12.12-.25.25-.36.37-58.566 58.892-59.387 154.781.36 214.59a152.454 152.454 0 0 0 20.521 17.196c6.402 4.468 15.064 3.789 20.584-1.731l21.054-21.055c8.35-8.35 12.094-19.239 11.698-29.806a16.037 16.037 0 0 0-6.947-12.606c-2.912-2.005-6.64-4.875-10.341-8.569-28.073-28.073-28.191-73.639 0-101.83l67.2-67.19c28.239-28.239 74.3-28.069 102.325.51 27.75 28.3 26.872 73.934-1.155 101.96l-13.087 13.087c-4.35 4.35-5.769 10.79-3.783 16.612 5.864 17.194 9.042 34.999 9.69 52.721.509 13.906 17.454 20.446 27.294 10.606l37.106-37.106c59.271-59.259 59.271-155.699.001-214.959z\"]\n};\nvar faLiraSign = {\n prefix: 'fas',\n iconName: 'lira-sign',\n icon: [384, 512, [], \"f195\", \"M371.994 256h-48.019C317.64 256 312 260.912 312 267.246 312 368 230.179 416 144 416V256.781l134.603-29.912A12 12 0 0 0 288 215.155v-40.976c0-7.677-7.109-13.38-14.603-11.714L144 191.219V160.78l134.603-29.912A12 12 0 0 0 288 119.154V78.179c0-7.677-7.109-13.38-14.603-11.714L144 95.219V44c0-6.627-5.373-12-12-12H76c-6.627 0-12 5.373-12 12v68.997L9.397 125.131A12 12 0 0 0 0 136.845v40.976c0 7.677 7.109 13.38 14.603 11.714L64 178.558v30.439L9.397 221.131A12 12 0 0 0 0 232.845v40.976c0 7.677 7.109 13.38 14.603 11.714L64 274.558V468c0 6.627 5.373 12 12 12h79.583c134.091 0 223.255-77.834 228.408-211.592.261-6.782-5.211-12.408-11.997-12.408z\"]\n};\nvar faList = {\n prefix: 'fas',\n iconName: 'list',\n icon: [512, 512, [], \"f03a\", \"M80 368H16a16 16 0 0 0-16 16v64a16 16 0 0 0 16 16h64a16 16 0 0 0 16-16v-64a16 16 0 0 0-16-16zm0-320H16A16 16 0 0 0 0 64v64a16 16 0 0 0 16 16h64a16 16 0 0 0 16-16V64a16 16 0 0 0-16-16zm0 160H16a16 16 0 0 0-16 16v64a16 16 0 0 0 16 16h64a16 16 0 0 0 16-16v-64a16 16 0 0 0-16-16zm416 176H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z\"]\n};\nvar faListAlt = {\n prefix: 'fas',\n iconName: 'list-alt',\n icon: [512, 512, [], \"f022\", \"M464 480H48c-26.51 0-48-21.49-48-48V80c0-26.51 21.49-48 48-48h416c26.51 0 48 21.49 48 48v352c0 26.51-21.49 48-48 48zM128 120c-22.091 0-40 17.909-40 40s17.909 40 40 40 40-17.909 40-40-17.909-40-40-40zm0 96c-22.091 0-40 17.909-40 40s17.909 40 40 40 40-17.909 40-40-17.909-40-40-40zm0 96c-22.091 0-40 17.909-40 40s17.909 40 40 40 40-17.909 40-40-17.909-40-40-40zm288-136v-32c0-6.627-5.373-12-12-12H204c-6.627 0-12 5.373-12 12v32c0 6.627 5.373 12 12 12h200c6.627 0 12-5.373 12-12zm0 96v-32c0-6.627-5.373-12-12-12H204c-6.627 0-12 5.373-12 12v32c0 6.627 5.373 12 12 12h200c6.627 0 12-5.373 12-12zm0 96v-32c0-6.627-5.373-12-12-12H204c-6.627 0-12 5.373-12 12v32c0 6.627 5.373 12 12 12h200c6.627 0 12-5.373 12-12z\"]\n};\nvar faListOl = {\n prefix: 'fas',\n iconName: 'list-ol',\n icon: [512, 512, [], \"f0cb\", \"M61.77 401l17.5-20.15a19.92 19.92 0 0 0 5.07-14.19v-3.31C84.34 356 80.5 352 73 352H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8h22.83a157.41 157.41 0 0 0-11 12.31l-5.61 7c-4 5.07-5.25 10.13-2.8 14.88l1.05 1.93c3 5.76 6.29 7.88 12.25 7.88h4.73c10.33 0 15.94 2.44 15.94 9.09 0 4.72-4.2 8.22-14.36 8.22a41.54 41.54 0 0 1-15.47-3.12c-6.49-3.88-11.74-3.5-15.6 3.12l-5.59 9.31c-3.72 6.13-3.19 11.72 2.63 15.94 7.71 4.69 20.38 9.44 37 9.44 34.16 0 48.5-22.75 48.5-44.12-.03-14.38-9.12-29.76-28.73-34.88zM496 224H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h64a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H64V40a8 8 0 0 0-8-8H32a8 8 0 0 0-7.14 4.42l-8 16A8 8 0 0 0 24 64h8v64H16a8 8 0 0 0-8 8v16a8 8 0 0 0 8 8zm-3.91 160H80a8 8 0 0 0 8-8v-16a8 8 0 0 0-8-8H41.32c3.29-10.29 48.34-18.68 48.34-56.44 0-29.06-25-39.56-44.47-39.56-21.36 0-33.8 10-40.46 18.75-4.37 5.59-3 10.84 2.8 15.37l8.58 6.88c5.61 4.56 11 2.47 16.12-2.44a13.44 13.44 0 0 1 9.46-3.84c3.33 0 9.28 1.56 9.28 8.75C51 248.19 0 257.31 0 304.59v4C0 316 5.08 320 12.09 320z\"]\n};\nvar faListUl = {\n prefix: 'fas',\n iconName: 'list-ul',\n icon: [512, 512, [], \"f0ca\", \"M48 48a48 48 0 1 0 48 48 48 48 0 0 0-48-48zm0 160a48 48 0 1 0 48 48 48 48 0 0 0-48-48zm0 160a48 48 0 1 0 48 48 48 48 0 0 0-48-48zm448 16H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-320H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 160H176a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h320a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z\"]\n};\nvar faLocationArrow = {\n prefix: 'fas',\n iconName: 'location-arrow',\n icon: [512, 512, [], \"f124\", \"M444.52 3.52L28.74 195.42c-47.97 22.39-31.98 92.75 19.19 92.75h175.91v175.91c0 51.17 70.36 67.17 92.75 19.19l191.9-415.78c15.99-38.39-25.59-79.97-63.97-63.97z\"]\n};\nvar faLock = {\n prefix: 'fas',\n iconName: 'lock',\n icon: [448, 512, [], \"f023\", \"M400 224h-24v-72C376 68.2 307.8 0 224 0S72 68.2 72 152v72H48c-26.5 0-48 21.5-48 48v192c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V272c0-26.5-21.5-48-48-48zm-104 0H152v-72c0-39.7 32.3-72 72-72s72 32.3 72 72v72z\"]\n};\nvar faLockOpen = {\n prefix: 'fas',\n iconName: 'lock-open',\n icon: [576, 512, [], \"f3c1\", \"M423.5 0C339.5.3 272 69.5 272 153.5V224H48c-26.5 0-48 21.5-48 48v192c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V272c0-26.5-21.5-48-48-48h-48v-71.1c0-39.6 31.7-72.5 71.3-72.9 40-.4 72.7 32.1 72.7 72v80c0 13.3 10.7 24 24 24h32c13.3 0 24-10.7 24-24v-80C576 68 507.5-.3 423.5 0z\"]\n};\nvar faLongArrowAltDown = {\n prefix: 'fas',\n iconName: 'long-arrow-alt-down',\n icon: [256, 512, [], \"f309\", \"M168 345.941V44c0-6.627-5.373-12-12-12h-56c-6.627 0-12 5.373-12 12v301.941H41.941c-21.382 0-32.09 25.851-16.971 40.971l86.059 86.059c9.373 9.373 24.569 9.373 33.941 0l86.059-86.059c15.119-15.119 4.411-40.971-16.971-40.971H168z\"]\n};\nvar faLongArrowAltLeft = {\n prefix: 'fas',\n iconName: 'long-arrow-alt-left',\n icon: [448, 512, [], \"f30a\", \"M134.059 296H436c6.627 0 12-5.373 12-12v-56c0-6.627-5.373-12-12-12H134.059v-46.059c0-21.382-25.851-32.09-40.971-16.971L7.029 239.029c-9.373 9.373-9.373 24.569 0 33.941l86.059 86.059c15.119 15.119 40.971 4.411 40.971-16.971V296z\"]\n};\nvar faLongArrowAltRight = {\n prefix: 'fas',\n iconName: 'long-arrow-alt-right',\n icon: [448, 512, [], \"f30b\", \"M313.941 216H12c-6.627 0-12 5.373-12 12v56c0 6.627 5.373 12 12 12h301.941v46.059c0 21.382 25.851 32.09 40.971 16.971l86.059-86.059c9.373-9.373 9.373-24.569 0-33.941l-86.059-86.059c-15.119-15.119-40.971-4.411-40.971 16.971V216z\"]\n};\nvar faLongArrowAltUp = {\n prefix: 'fas',\n iconName: 'long-arrow-alt-up',\n icon: [256, 512, [], \"f30c\", \"M88 166.059V468c0 6.627 5.373 12 12 12h56c6.627 0 12-5.373 12-12V166.059h46.059c21.382 0 32.09-25.851 16.971-40.971l-86.059-86.059c-9.373-9.373-24.569-9.373-33.941 0l-86.059 86.059c-15.119 15.119-4.411 40.971 16.971 40.971H88z\"]\n};\nvar faLowVision = {\n prefix: 'fas',\n iconName: 'low-vision',\n icon: [576, 512, [], \"f2a8\", \"M569.344 231.631C512.96 135.949 407.81 72 288 72c-28.468 0-56.102 3.619-82.451 10.409L152.778 10.24c-7.601-10.858-22.564-13.5-33.423-5.9l-13.114 9.178c-10.86 7.601-13.502 22.566-5.9 33.426l43.131 58.395C89.449 131.73 40.228 174.683 6.682 231.581c-.01.017-.023.033-.034.05-8.765 14.875-8.964 33.528 0 48.739 38.5 65.332 99.742 115.862 172.859 141.349L55.316 244.302A272.194 272.194 0 0 1 83.61 208.39l119.4 170.58h.01l40.63 58.04a330.055 330.055 0 0 0 78.94 1.17l-189.98-271.4a277.628 277.628 0 0 1 38.777-21.563l251.836 356.544c7.601 10.858 22.564 13.499 33.423 5.9l13.114-9.178c10.86-7.601 13.502-22.567 5.9-33.426l-43.12-58.377-.007-.009c57.161-27.978 104.835-72.04 136.81-126.301a47.938 47.938 0 0 0 .001-48.739zM390.026 345.94l-19.066-27.23c24.682-32.567 27.711-76.353 8.8-111.68v.03c0 23.65-19.17 42.82-42.82 42.82-23.828 0-42.82-19.349-42.82-42.82 0-23.65 19.17-42.82 42.82-42.82h.03c-24.75-13.249-53.522-15.643-79.51-7.68l-19.068-27.237C253.758 123.306 270.488 120 288 120c75.162 0 136 60.826 136 136 0 34.504-12.833 65.975-33.974 89.94z\"]\n};\nvar faLuggageCart = {\n prefix: 'fas',\n iconName: 'luggage-cart',\n icon: [640, 512, [], \"f59d\", \"M224 320h32V96h-32c-17.67 0-32 14.33-32 32v160c0 17.67 14.33 32 32 32zm352-32V128c0-17.67-14.33-32-32-32h-32v224h32c17.67 0 32-14.33 32-32zm48 96H128V16c0-8.84-7.16-16-16-16H16C7.16 0 0 7.16 0 16v32c0 8.84 7.16 16 16 16h48v368c0 8.84 7.16 16 16 16h82.94c-1.79 5.03-2.94 10.36-2.94 16 0 26.51 21.49 48 48 48s48-21.49 48-48c0-5.64-1.15-10.97-2.94-16h197.88c-1.79 5.03-2.94 10.36-2.94 16 0 26.51 21.49 48 48 48s48-21.49 48-48c0-5.64-1.15-10.97-2.94-16H624c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zM480 96V48c0-26.51-21.49-48-48-48h-96c-26.51 0-48 21.49-48 48v272h192V96zm-48 0h-96V48h96v48z\"]\n};\nvar faMagic = {\n prefix: 'fas',\n iconName: 'magic',\n icon: [512, 512, [], \"f0d0\", \"M224 96l16-32 32-16-32-16-16-32-16 32-32 16 32 16 16 32zM80 160l26.66-53.33L160 80l-53.34-26.67L80 0 53.34 53.33 0 80l53.34 26.67L80 160zm352 128l-26.66 53.33L352 368l53.34 26.67L432 448l26.66-53.33L512 368l-53.34-26.67L432 288zm70.62-193.77L417.77 9.38C411.53 3.12 403.34 0 395.15 0c-8.19 0-16.38 3.12-22.63 9.38L9.38 372.52c-12.5 12.5-12.5 32.76 0 45.25l84.85 84.85c6.25 6.25 14.44 9.37 22.62 9.37 8.19 0 16.38-3.12 22.63-9.37l363.14-363.15c12.5-12.48 12.5-32.75 0-45.24zM359.45 203.46l-50.91-50.91 86.6-86.6 50.91 50.91-86.6 86.6z\"]\n};\nvar faMagnet = {\n prefix: 'fas',\n iconName: 'magnet',\n icon: [512, 512, [], \"f076\", \"M164.07 148.1H12a12 12 0 0 1-12-12v-80a36 36 0 0 1 36-36h104a36 36 0 0 1 36 36v80a11.89 11.89 0 0 1-11.93 12zm347.93-12V56a36 36 0 0 0-36-36H372a36 36 0 0 0-36 36v80a12 12 0 0 0 12 12h152a11.89 11.89 0 0 0 12-11.9zm-164 44a12 12 0 0 0-12 12v52c0 128.1-160 127.9-160 0v-52a12 12 0 0 0-12-12H12.1a12 12 0 0 0-12 12.1c.1 21.4.6 40.3 0 53.3 0 150.6 136.17 246.6 256.75 246.6s255-96 255-246.7c-.6-12.8-.2-33 0-53.2a12 12 0 0 0-12-12.1z\"]\n};\nvar faMailBulk = {\n prefix: 'fas',\n iconName: 'mail-bulk',\n icon: [576, 512, [], \"f674\", \"M160 448c-25.6 0-51.2-22.4-64-32-64-44.8-83.2-60.8-96-70.4V480c0 17.67 14.33 32 32 32h256c17.67 0 32-14.33 32-32V345.6c-12.8 9.6-32 25.6-96 70.4-12.8 9.6-38.4 32-64 32zm128-192H32c-17.67 0-32 14.33-32 32v16c25.6 19.2 22.4 19.2 115.2 86.4 9.6 6.4 28.8 25.6 44.8 25.6s35.2-19.2 44.8-22.4c92.8-67.2 89.6-67.2 115.2-86.4V288c0-17.67-14.33-32-32-32zm256-96H224c-17.67 0-32 14.33-32 32v32h96c33.21 0 60.59 25.42 63.71 57.82l.29-.22V416h192c17.67 0 32-14.33 32-32V192c0-17.67-14.33-32-32-32zm-32 128h-64v-64h64v64zm-352-96c0-35.29 28.71-64 64-64h224V32c0-17.67-14.33-32-32-32H96C78.33 0 64 14.33 64 32v192h96v-32z\"]\n};\nvar faMale = {\n prefix: 'fas',\n iconName: 'male',\n icon: [192, 512, [], \"f183\", \"M96 0c35.346 0 64 28.654 64 64s-28.654 64-64 64-64-28.654-64-64S60.654 0 96 0m48 144h-11.36c-22.711 10.443-49.59 10.894-73.28 0H48c-26.51 0-48 21.49-48 48v136c0 13.255 10.745 24 24 24h16v136c0 13.255 10.745 24 24 24h64c13.255 0 24-10.745 24-24V352h16c13.255 0 24-10.745 24-24V192c0-26.51-21.49-48-48-48z\"]\n};\nvar faMap = {\n prefix: 'fas',\n iconName: 'map',\n icon: [576, 512, [], \"f279\", \"M0 117.66v346.32c0 11.32 11.43 19.06 21.94 14.86L160 416V32L20.12 87.95A32.006 32.006 0 0 0 0 117.66zM192 416l192 64V96L192 32v384zM554.06 33.16L416 96v384l139.88-55.95A31.996 31.996 0 0 0 576 394.34V48.02c0-11.32-11.43-19.06-21.94-14.86z\"]\n};\nvar faMapMarked = {\n prefix: 'fas',\n iconName: 'map-marked',\n icon: [576, 512, [], \"f59f\", \"M288 0c-69.59 0-126 56.41-126 126 0 56.26 82.35 158.8 113.9 196.02 6.39 7.54 17.82 7.54 24.2 0C331.65 284.8 414 182.26 414 126 414 56.41 357.59 0 288 0zM20.12 215.95A32.006 32.006 0 0 0 0 245.66v250.32c0 11.32 11.43 19.06 21.94 14.86L160 448V214.92c-8.84-15.98-16.07-31.54-21.25-46.42L20.12 215.95zM288 359.67c-14.07 0-27.38-6.18-36.51-16.96-19.66-23.2-40.57-49.62-59.49-76.72v182l192 64V266c-18.92 27.09-39.82 53.52-59.49 76.72-9.13 10.77-22.44 16.95-36.51 16.95zm266.06-198.51L416 224v288l139.88-55.95A31.996 31.996 0 0 0 576 426.34V176.02c0-11.32-11.43-19.06-21.94-14.86z\"]\n};\nvar faMapMarkedAlt = {\n prefix: 'fas',\n iconName: 'map-marked-alt',\n icon: [576, 512, [], \"f5a0\", \"M288 0c-69.59 0-126 56.41-126 126 0 56.26 82.35 158.8 113.9 196.02 6.39 7.54 17.82 7.54 24.2 0C331.65 284.8 414 182.26 414 126 414 56.41 357.59 0 288 0zm0 168c-23.2 0-42-18.8-42-42s18.8-42 42-42 42 18.8 42 42-18.8 42-42 42zM20.12 215.95A32.006 32.006 0 0 0 0 245.66v250.32c0 11.32 11.43 19.06 21.94 14.86L160 448V214.92c-8.84-15.98-16.07-31.54-21.25-46.42L20.12 215.95zM288 359.67c-14.07 0-27.38-6.18-36.51-16.96-19.66-23.2-40.57-49.62-59.49-76.72v182l192 64V266c-18.92 27.09-39.82 53.52-59.49 76.72-9.13 10.77-22.44 16.95-36.51 16.95zm266.06-198.51L416 224v288l139.88-55.95A31.996 31.996 0 0 0 576 426.34V176.02c0-11.32-11.43-19.06-21.94-14.86z\"]\n};\nvar faMapMarker = {\n prefix: 'fas',\n iconName: 'map-marker',\n icon: [384, 512, [], \"f041\", \"M172.268 501.67C26.97 291.031 0 269.413 0 192 0 85.961 85.961 0 192 0s192 85.961 192 192c0 77.413-26.97 99.031-172.268 309.67-9.535 13.774-29.93 13.773-39.464 0z\"]\n};\nvar faMapMarkerAlt = {\n prefix: 'fas',\n iconName: 'map-marker-alt',\n icon: [384, 512, [], \"f3c5\", \"M172.268 501.67C26.97 291.031 0 269.413 0 192 0 85.961 85.961 0 192 0s192 85.961 192 192c0 77.413-26.97 99.031-172.268 309.67-9.535 13.774-29.93 13.773-39.464 0zM192 272c44.183 0 80-35.817 80-80s-35.817-80-80-80-80 35.817-80 80 35.817 80 80 80z\"]\n};\nvar faMapPin = {\n prefix: 'fas',\n iconName: 'map-pin',\n icon: [288, 512, [], \"f276\", \"M112 316.94v156.69l22.02 33.02c4.75 7.12 15.22 7.12 19.97 0L176 473.63V316.94c-10.39 1.92-21.06 3.06-32 3.06s-21.61-1.14-32-3.06zM144 0C64.47 0 0 64.47 0 144s64.47 144 144 144 144-64.47 144-144S223.53 0 144 0zm0 76c-37.5 0-68 30.5-68 68 0 6.62-5.38 12-12 12s-12-5.38-12-12c0-50.73 41.28-92 92-92 6.62 0 12 5.38 12 12s-5.38 12-12 12z\"]\n};\nvar faMapSigns = {\n prefix: 'fas',\n iconName: 'map-signs',\n icon: [512, 512, [], \"f277\", \"M507.31 84.69L464 41.37c-6-6-14.14-9.37-22.63-9.37H288V16c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v16H56c-13.25 0-24 10.75-24 24v80c0 13.25 10.75 24 24 24h385.37c8.49 0 16.62-3.37 22.63-9.37l43.31-43.31c6.25-6.26 6.25-16.38 0-22.63zM224 496c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16V384h-64v112zm232-272H288v-32h-64v32H70.63c-8.49 0-16.62 3.37-22.63 9.37L4.69 276.69c-6.25 6.25-6.25 16.38 0 22.63L48 342.63c6 6 14.14 9.37 22.63 9.37H456c13.25 0 24-10.75 24-24v-80c0-13.25-10.75-24-24-24z\"]\n};\nvar faMarker = {\n prefix: 'fas',\n iconName: 'marker',\n icon: [512, 512, [], \"f5a1\", \"M93.95 290.03A327.038 327.038 0 0 0 .17 485.11l-.03.23c-1.7 15.28 11.21 28.2 26.49 26.51a327.02 327.02 0 0 0 195.34-93.8l75.4-75.4-128.02-128.02-75.4 75.4zM485.49 26.51c-35.35-35.35-92.67-35.35-128.02 0l-21.76 21.76-36.56-36.55c-15.62-15.62-40.95-15.62-56.56 0L138.47 115.84c-6.25 6.25-6.25 16.38 0 22.63l22.62 22.62c6.25 6.25 16.38 6.25 22.63 0l87.15-87.15 19.59 19.59L191.98 192 320 320.02l165.49-165.49c35.35-35.35 35.35-92.66 0-128.02z\"]\n};\nvar faMars = {\n prefix: 'fas',\n iconName: 'mars',\n icon: [384, 512, [], \"f222\", \"M372 64h-79c-10.7 0-16 12.9-8.5 20.5l16.9 16.9-80.7 80.7c-22.2-14-48.5-22.1-76.7-22.1C64.5 160 0 224.5 0 304s64.5 144 144 144 144-64.5 144-144c0-28.2-8.1-54.5-22.1-76.7l80.7-80.7 16.9 16.9c7.6 7.6 20.5 2.2 20.5-8.5V76c0-6.6-5.4-12-12-12zM144 384c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80z\"]\n};\nvar faMarsDouble = {\n prefix: 'fas',\n iconName: 'mars-double',\n icon: [512, 512, [], \"f227\", \"M340 0h-79c-10.7 0-16 12.9-8.5 20.5l16.9 16.9-48.7 48.7C198.5 72.1 172.2 64 144 64 64.5 64 0 128.5 0 208s64.5 144 144 144 144-64.5 144-144c0-28.2-8.1-54.5-22.1-76.7l48.7-48.7 16.9 16.9c2.4 2.4 5.5 3.5 8.4 3.5 6.2 0 12.1-4.8 12.1-12V12c0-6.6-5.4-12-12-12zM144 288c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80zm356-128.1h-79c-10.7 0-16 12.9-8.5 20.5l16.9 16.9-48.7 48.7c-18.2-11.4-39-18.9-61.5-21.3-2.1 21.8-8.2 43.3-18.4 63.3 1.1 0 2.2-.1 3.2-.1 44.1 0 80 35.9 80 80s-35.9 80-80 80-80-35.9-80-80c0-1.1 0-2.2.1-3.2-20 10.2-41.5 16.4-63.3 18.4C168.4 455.6 229.6 512 304 512c79.5 0 144-64.5 144-144 0-28.2-8.1-54.5-22.1-76.7l48.7-48.7 16.9 16.9c2.4 2.4 5.4 3.5 8.4 3.5 6.2 0 12.1-4.8 12.1-12v-79c0-6.7-5.4-12.1-12-12.1z\"]\n};\nvar faMarsStroke = {\n prefix: 'fas',\n iconName: 'mars-stroke',\n icon: [384, 512, [], \"f229\", \"M372 64h-79c-10.7 0-16 12.9-8.5 20.5l16.9 16.9-17.5 17.5-14.1-14.1c-4.7-4.7-12.3-4.7-17 0L224.5 133c-4.7 4.7-4.7 12.3 0 17l14.1 14.1-18 18c-22.2-14-48.5-22.1-76.7-22.1C64.5 160 0 224.5 0 304s64.5 144 144 144 144-64.5 144-144c0-28.2-8.1-54.5-22.1-76.7l18-18 14.1 14.1c4.7 4.7 12.3 4.7 17 0l28.3-28.3c4.7-4.7 4.7-12.3 0-17L329.2 164l17.5-17.5 16.9 16.9c7.6 7.6 20.5 2.2 20.5-8.5V76c-.1-6.6-5.5-12-12.1-12zM144 384c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80z\"]\n};\nvar faMarsStrokeH = {\n prefix: 'fas',\n iconName: 'mars-stroke-h',\n icon: [480, 512, [], \"f22b\", \"M476.2 247.5l-55.9-55.9c-7.6-7.6-20.5-2.2-20.5 8.5V224H376v-20c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12v20h-27.6c-5.8-25.6-18.7-49.9-38.6-69.8C189.6 98 98.4 98 42.2 154.2c-56.2 56.2-56.2 147.4 0 203.6 56.2 56.2 147.4 56.2 203.6 0 19.9-19.9 32.8-44.2 38.6-69.8H312v20c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-20h23.9v23.9c0 10.7 12.9 16 20.5 8.5l55.9-55.9c4.6-4.7 4.6-12.3-.1-17zm-275.6 65.1c-31.2 31.2-81.9 31.2-113.1 0-31.2-31.2-31.2-81.9 0-113.1 31.2-31.2 81.9-31.2 113.1 0 31.2 31.1 31.2 81.9 0 113.1z\"]\n};\nvar faMarsStrokeV = {\n prefix: 'fas',\n iconName: 'mars-stroke-v',\n icon: [288, 512, [], \"f22a\", \"M245.8 234.2c-19.9-19.9-44.2-32.8-69.8-38.6v-25.4h20c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-20V81.4h23.9c10.7 0 16-12.9 8.5-20.5L152.5 5.1c-4.7-4.7-12.3-4.7-17 0L79.6 61c-7.6 7.6-2.2 20.5 8.5 20.5H112v24.7H92c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h20v25.4c-25.6 5.8-49.9 18.7-69.8 38.6-56.2 56.2-56.2 147.4 0 203.6 56.2 56.2 147.4 56.2 203.6 0 56.3-56.2 56.3-147.4 0-203.6zm-45.2 158.4c-31.2 31.2-81.9 31.2-113.1 0-31.2-31.2-31.2-81.9 0-113.1 31.2-31.2 81.9-31.2 113.1 0 31.2 31.1 31.2 81.9 0 113.1z\"]\n};\nvar faMask = {\n prefix: 'fas',\n iconName: 'mask',\n icon: [640, 512, [], \"f6fa\", \"M320.67 64c-442.6 0-357.57 384-158.46 384 39.9 0 77.47-20.69 101.42-55.86l25.73-37.79c15.66-22.99 46.97-22.99 62.63 0l25.73 37.79C401.66 427.31 439.23 448 479.13 448c189.86 0 290.63-384-158.46-384zM184 308.36c-41.06 0-67.76-25.66-80.08-41.05-5.23-6.53-5.23-16.09 0-22.63 12.32-15.4 39.01-41.05 80.08-41.05s67.76 25.66 80.08 41.05c5.23 6.53 5.23 16.09 0 22.63-12.32 15.4-39.02 41.05-80.08 41.05zm272 0c-41.06 0-67.76-25.66-80.08-41.05-5.23-6.53-5.23-16.09 0-22.63 12.32-15.4 39.01-41.05 80.08-41.05s67.76 25.66 80.08 41.05c5.23 6.53 5.23 16.09 0 22.63-12.32 15.4-39.02 41.05-80.08 41.05z\"]\n};\nvar faMedal = {\n prefix: 'fas',\n iconName: 'medal',\n icon: [512, 512, [], \"f5a2\", \"M223.75 130.75L154.62 15.54A31.997 31.997 0 0 0 127.18 0H16.03C3.08 0-4.5 14.57 2.92 25.18l111.27 158.96c29.72-27.77 67.52-46.83 109.56-53.39zM495.97 0H384.82c-11.24 0-21.66 5.9-27.44 15.54l-69.13 115.21c42.04 6.56 79.84 25.62 109.56 53.38L509.08 25.18C516.5 14.57 508.92 0 495.97 0zM256 160c-97.2 0-176 78.8-176 176s78.8 176 176 176 176-78.8 176-176-78.8-176-176-176zm92.52 157.26l-37.93 36.96 8.97 52.22c1.6 9.36-8.26 16.51-16.65 12.09L256 393.88l-46.9 24.65c-8.4 4.45-18.25-2.74-16.65-12.09l8.97-52.22-37.93-36.96c-6.82-6.64-3.05-18.23 6.35-19.59l52.43-7.64 23.43-47.52c2.11-4.28 6.19-6.39 10.28-6.39 4.11 0 8.22 2.14 10.33 6.39l23.43 47.52 52.43 7.64c9.4 1.36 13.17 12.95 6.35 19.59z\"]\n};\nvar faMedkit = {\n prefix: 'fas',\n iconName: 'medkit',\n icon: [512, 512, [], \"f0fa\", \"M96 480h320V128h-32V80c0-26.51-21.49-48-48-48H176c-26.51 0-48 21.49-48 48v48H96v352zm96-384h128v32H192V96zm320 80v256c0 26.51-21.49 48-48 48h-16V128h16c26.51 0 48 21.49 48 48zM64 480H48c-26.51 0-48-21.49-48-48V176c0-26.51 21.49-48 48-48h16v352zm288-208v32c0 8.837-7.163 16-16 16h-48v48c0 8.837-7.163 16-16 16h-32c-8.837 0-16-7.163-16-16v-48h-48c-8.837 0-16-7.163-16-16v-32c0-8.837 7.163-16 16-16h48v-48c0-8.837 7.163-16 16-16h32c8.837 0 16 7.163 16 16v48h48c8.837 0 16 7.163 16 16z\"]\n};\nvar faMeh = {\n prefix: 'fas',\n iconName: 'meh',\n icon: [496, 512, [], \"f11a\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm-80 168c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm176 192H152c-21.2 0-21.2-32 0-32h192c21.2 0 21.2 32 0 32zm-16-128c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z\"]\n};\nvar faMehBlank = {\n prefix: 'fas',\n iconName: 'meh-blank',\n icon: [496, 512, [], \"f5a4\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm-80 232c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm160 0c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z\"]\n};\nvar faMehRollingEyes = {\n prefix: 'fas',\n iconName: 'meh-rolling-eyes',\n icon: [496, 512, [], \"f5a5\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM88 224c0-24.3 13.7-45.2 33.6-56-.7 2.6-1.6 5.2-1.6 8 0 17.7 14.3 32 32 32s32-14.3 32-32c0-2.8-.9-5.4-1.6-8 19.9 10.8 33.6 31.7 33.6 56 0 35.3-28.7 64-64 64s-64-28.7-64-64zm224 176H184c-21.2 0-21.2-32 0-32h128c21.2 0 21.2 32 0 32zm32-112c-35.3 0-64-28.7-64-64 0-24.3 13.7-45.2 33.6-56-.7 2.6-1.6 5.2-1.6 8 0 17.7 14.3 32 32 32s32-14.3 32-32c0-2.8-.9-5.4-1.6-8 19.9 10.8 33.6 31.7 33.6 56 0 35.3-28.7 64-64 64z\"]\n};\nvar faMemory = {\n prefix: 'fas',\n iconName: 'memory',\n icon: [640, 512, [], \"f538\", \"M640 130.94V96c0-17.67-14.33-32-32-32H32C14.33 64 0 78.33 0 96v34.94c18.6 6.61 32 24.19 32 45.06s-13.4 38.45-32 45.06V320h640v-98.94c-18.6-6.61-32-24.19-32-45.06s13.4-38.45 32-45.06zM224 256h-64V128h64v128zm128 0h-64V128h64v128zm128 0h-64V128h64v128zM0 448h64v-26.67c0-8.84 7.16-16 16-16s16 7.16 16 16V448h128v-26.67c0-8.84 7.16-16 16-16s16 7.16 16 16V448h128v-26.67c0-8.84 7.16-16 16-16s16 7.16 16 16V448h128v-26.67c0-8.84 7.16-16 16-16s16 7.16 16 16V448h64v-96H0v96z\"]\n};\nvar faMenorah = {\n prefix: 'fas',\n iconName: 'menorah',\n icon: [640, 512, [], \"f676\", \"M144 128h-32c-8.84 0-16 7.16-16 16v144h64V144c0-8.84-7.16-16-16-16zm96 0h-32c-8.84 0-16 7.16-16 16v144h64V144c0-8.84-7.16-16-16-16zm192 0h-32c-8.84 0-16 7.16-16 16v144h64V144c0-8.84-7.16-16-16-16zm96 0h-32c-8.84 0-16 7.16-16 16v144h64V144c0-8.84-7.16-16-16-16zm80-32c17.67 0 32-14.33 32-32S608 0 608 0s-32 46.33-32 64 14.33 32 32 32zm-96 0c17.67 0 32-14.33 32-32S512 0 512 0s-32 46.33-32 64 14.33 32 32 32zm-96 0c17.67 0 32-14.33 32-32S416 0 416 0s-32 46.33-32 64 14.33 32 32 32zm-96 0c17.67 0 32-14.33 32-32S320 0 320 0s-32 46.33-32 64 14.33 32 32 32zm-96 0c17.67 0 32-14.33 32-32S224 0 224 0s-32 46.33-32 64 14.33 32 32 32zm-96 0c17.67 0 32-14.33 32-32S128 0 128 0 96 46.33 96 64s14.33 32 32 32zm-96 0c17.67 0 32-14.33 32-32S32 0 32 0 0 46.33 0 64s14.33 32 32 32zm544 192c0 17.67-14.33 32-32 32H352V144c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v176H96c-17.67 0-32-14.33-32-32V144c0-8.84-7.16-16-16-16H16c-8.84 0-16 7.16-16 16v144c0 53.02 42.98 96 96 96h192v64H112c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h416c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16H352v-64h192c53.02 0 96-42.98 96-96V144c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v144z\"]\n};\nvar faMercury = {\n prefix: 'fas',\n iconName: 'mercury',\n icon: [288, 512, [], \"f223\", \"M288 208c0-44.2-19.9-83.7-51.2-110.1 2.5-1.8 4.9-3.8 7.2-5.8 24.7-21.2 39.8-48.8 43.2-78.8.9-7.1-4.7-13.3-11.9-13.3h-40.5C229 0 224.1 4.1 223 9.8c-2.4 12.5-9.6 24.3-20.7 33.8C187 56.8 166.3 64 144 64s-43-7.2-58.4-20.4C74.5 34.1 67.4 22.3 64.9 9.8 63.8 4.1 58.9 0 53.2 0H12.7C5.5 0-.1 6.2.8 13.3 4.2 43.4 19.2 71 44 92.2c2.3 2 4.7 3.9 7.2 5.8C19.9 124.3 0 163.8 0 208c0 68.5 47.9 125.9 112 140.4V400H76c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h36v36c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-36h36c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-36v-51.6c64.1-14.5 112-71.9 112-140.4zm-224 0c0-44.1 35.9-80 80-80s80 35.9 80 80-35.9 80-80 80-80-35.9-80-80z\"]\n};\nvar faMeteor = {\n prefix: 'fas',\n iconName: 'meteor',\n icon: [512, 512, [], \"f753\", \"M511.328,20.8027c-11.60759,38.70264-34.30724,111.70173-61.30311,187.70077,6.99893,2.09372,13.4042,4,18.60653,5.59368a16.06158,16.06158,0,0,1,9.49854,22.906c-22.106,42.29635-82.69047,152.795-142.47819,214.40356-.99984,1.09373-1.99969,2.5-2.99954,3.49995A194.83046,194.83046,0,1,1,57.085,179.41009c.99985-1,2.40588-2,3.49947-3,61.59994-59.90549,171.97367-120.40473,214.37343-142.4982a16.058,16.058,0,0,1,22.90274,9.49988c1.59351,5.09368,3.49947,11.5936,5.5929,18.59351C379.34818,35.00565,452.43074,12.30281,491.12794.70921A16.18325,16.18325,0,0,1,511.328,20.8027ZM319.951,320.00207A127.98041,127.98041,0,1,0,191.97061,448.00046,127.97573,127.97573,0,0,0,319.951,320.00207Zm-127.98041-31.9996a31.9951,31.9951,0,1,1-31.9951-31.9996A31.959,31.959,0,0,1,191.97061,288.00247Zm31.9951,79.999a15.99755,15.99755,0,1,1-15.99755-15.9998A16.04975,16.04975,0,0,1,223.96571,368.00147Z\"]\n};\nvar faMicrochip = {\n prefix: 'fas',\n iconName: 'microchip',\n icon: [512, 512, [], \"f2db\", \"M416 48v416c0 26.51-21.49 48-48 48H144c-26.51 0-48-21.49-48-48V48c0-26.51 21.49-48 48-48h224c26.51 0 48 21.49 48 48zm96 58v12a6 6 0 0 1-6 6h-18v6a6 6 0 0 1-6 6h-42V88h42a6 6 0 0 1 6 6v6h18a6 6 0 0 1 6 6zm0 96v12a6 6 0 0 1-6 6h-18v6a6 6 0 0 1-6 6h-42v-48h42a6 6 0 0 1 6 6v6h18a6 6 0 0 1 6 6zm0 96v12a6 6 0 0 1-6 6h-18v6a6 6 0 0 1-6 6h-42v-48h42a6 6 0 0 1 6 6v6h18a6 6 0 0 1 6 6zm0 96v12a6 6 0 0 1-6 6h-18v6a6 6 0 0 1-6 6h-42v-48h42a6 6 0 0 1 6 6v6h18a6 6 0 0 1 6 6zM30 376h42v48H30a6 6 0 0 1-6-6v-6H6a6 6 0 0 1-6-6v-12a6 6 0 0 1 6-6h18v-6a6 6 0 0 1 6-6zm0-96h42v48H30a6 6 0 0 1-6-6v-6H6a6 6 0 0 1-6-6v-12a6 6 0 0 1 6-6h18v-6a6 6 0 0 1 6-6zm0-96h42v48H30a6 6 0 0 1-6-6v-6H6a6 6 0 0 1-6-6v-12a6 6 0 0 1 6-6h18v-6a6 6 0 0 1 6-6zm0-96h42v48H30a6 6 0 0 1-6-6v-6H6a6 6 0 0 1-6-6v-12a6 6 0 0 1 6-6h18v-6a6 6 0 0 1 6-6z\"]\n};\nvar faMicrophone = {\n prefix: 'fas',\n iconName: 'microphone',\n icon: [352, 512, [], \"f130\", \"M176 352c53.02 0 96-42.98 96-96V96c0-53.02-42.98-96-96-96S80 42.98 80 96v160c0 53.02 42.98 96 96 96zm160-160h-16c-8.84 0-16 7.16-16 16v48c0 74.8-64.49 134.82-140.79 127.38C96.71 376.89 48 317.11 48 250.3V208c0-8.84-7.16-16-16-16H16c-8.84 0-16 7.16-16 16v40.16c0 89.64 63.97 169.55 152 181.69V464H96c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h160c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16h-56v-33.77C285.71 418.47 352 344.9 352 256v-48c0-8.84-7.16-16-16-16z\"]\n};\nvar faMicrophoneAlt = {\n prefix: 'fas',\n iconName: 'microphone-alt',\n icon: [352, 512, [], \"f3c9\", \"M336 192h-16c-8.84 0-16 7.16-16 16v48c0 74.8-64.49 134.82-140.79 127.38C96.71 376.89 48 317.11 48 250.3V208c0-8.84-7.16-16-16-16H16c-8.84 0-16 7.16-16 16v40.16c0 89.64 63.97 169.55 152 181.69V464H96c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h160c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16h-56v-33.77C285.71 418.47 352 344.9 352 256v-48c0-8.84-7.16-16-16-16zM176 352c53.02 0 96-42.98 96-96h-85.33c-5.89 0-10.67-3.58-10.67-8v-16c0-4.42 4.78-8 10.67-8H272v-32h-85.33c-5.89 0-10.67-3.58-10.67-8v-16c0-4.42 4.78-8 10.67-8H272v-32h-85.33c-5.89 0-10.67-3.58-10.67-8v-16c0-4.42 4.78-8 10.67-8H272c0-53.02-42.98-96-96-96S80 42.98 80 96v160c0 53.02 42.98 96 96 96z\"]\n};\nvar faMicrophoneAltSlash = {\n prefix: 'fas',\n iconName: 'microphone-alt-slash',\n icon: [640, 512, [], \"f539\", \"M633.82 458.1L476.26 336.33C488.74 312.21 496 284.98 496 256v-48c0-8.84-7.16-16-16-16h-16c-8.84 0-16 7.16-16 16v48c0 17.92-3.96 34.8-10.72 50.2l-26.55-20.52c3.1-9.4 5.28-19.22 5.28-29.67h-43.67l-41.4-32H416v-32h-85.33c-5.89 0-10.67-3.58-10.67-8v-16c0-4.42 4.78-8 10.67-8H416v-32h-85.33c-5.89 0-10.67-3.58-10.67-8v-16c0-4.42 4.78-8 10.67-8H416c0-53.02-42.98-96-96-96s-96 42.98-96 96v45.36L45.47 3.37C38.49-2.05 28.43-.8 23.01 6.18L3.37 31.45C-2.05 38.42-.8 48.47 6.18 53.9l588.36 454.73c6.98 5.43 17.03 4.17 22.46-2.81l19.64-25.27c5.41-6.97 4.16-17.02-2.82-22.45zM400 464h-56v-33.78c11.71-1.62 23.1-4.28 33.96-8.08l-50.4-38.96c-6.71.4-13.41.87-20.35.2-55.85-5.45-98.74-48.63-111.18-101.85L144 241.31v6.85c0 89.64 63.97 169.55 152 181.69V464h-56c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h160c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16z\"]\n};\nvar faMicrophoneSlash = {\n prefix: 'fas',\n iconName: 'microphone-slash',\n icon: [640, 512, [], \"f131\", \"M633.82 458.1l-157.8-121.96C488.61 312.13 496 285.01 496 256v-48c0-8.84-7.16-16-16-16h-16c-8.84 0-16 7.16-16 16v48c0 17.92-3.96 34.8-10.72 50.2l-26.55-20.52c3.1-9.4 5.28-19.22 5.28-29.67V96c0-53.02-42.98-96-96-96s-96 42.98-96 96v45.36L45.47 3.37C38.49-2.05 28.43-.8 23.01 6.18L3.37 31.45C-2.05 38.42-.8 48.47 6.18 53.9l588.36 454.73c6.98 5.43 17.03 4.17 22.46-2.81l19.64-25.27c5.41-6.97 4.16-17.02-2.82-22.45zM400 464h-56v-33.77c11.66-1.6 22.85-4.54 33.67-8.31l-50.11-38.73c-6.71.4-13.41.87-20.35.2-55.85-5.45-98.74-48.63-111.18-101.85L144 241.31v6.85c0 89.64 63.97 169.55 152 181.69V464h-56c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h160c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16z\"]\n};\nvar faMicroscope = {\n prefix: 'fas',\n iconName: 'microscope',\n icon: [512, 512, [], \"f610\", \"M160 320h12v16c0 8.84 7.16 16 16 16h40c8.84 0 16-7.16 16-16v-16h12c17.67 0 32-14.33 32-32V64c0-17.67-14.33-32-32-32V16c0-8.84-7.16-16-16-16h-64c-8.84 0-16 7.16-16 16v16c-17.67 0-32 14.33-32 32v224c0 17.67 14.33 32 32 32zm304 128h-1.29C493.24 413.99 512 369.2 512 320c0-105.88-86.12-192-192-192v64c70.58 0 128 57.42 128 128s-57.42 128-128 128H48c-26.51 0-48 21.49-48 48 0 8.84 7.16 16 16 16h480c8.84 0 16-7.16 16-16 0-26.51-21.49-48-48-48zm-360-32h208c4.42 0 8-3.58 8-8v-16c0-4.42-3.58-8-8-8H104c-4.42 0-8 3.58-8 8v16c0 4.42 3.58 8 8 8z\"]\n};\nvar faMinus = {\n prefix: 'fas',\n iconName: 'minus',\n icon: [448, 512, [], \"f068\", \"M416 208H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h384c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z\"]\n};\nvar faMinusCircle = {\n prefix: 'fas',\n iconName: 'minus-circle',\n icon: [512, 512, [], \"f056\", \"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zM124 296c-6.6 0-12-5.4-12-12v-56c0-6.6 5.4-12 12-12h264c6.6 0 12 5.4 12 12v56c0 6.6-5.4 12-12 12H124z\"]\n};\nvar faMinusSquare = {\n prefix: 'fas',\n iconName: 'minus-square',\n icon: [448, 512, [], \"f146\", \"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM92 296c-6.6 0-12-5.4-12-12v-56c0-6.6 5.4-12 12-12h264c6.6 0 12 5.4 12 12v56c0 6.6-5.4 12-12 12H92z\"]\n};\nvar faMitten = {\n prefix: 'fas',\n iconName: 'mitten',\n icon: [448, 512, [], \"f7b5\", \"M368 416H48c-8.8 0-16 7.2-16 16v64c0 8.8 7.2 16 16 16h320c8.8 0 16-7.2 16-16v-64c0-8.8-7.2-16-16-16zm57-209.1c-27.2-22.6-67.5-19-90.1 8.2l-20.9 25-29.6-128.4c-18-77.5-95.4-125.9-172.8-108C34.2 21.6-14.2 98.9 3.7 176.4L51.6 384h309l72.5-87c22.7-27.2 19-67.5-8.1-90.1z\"]\n};\nvar faMobile = {\n prefix: 'fas',\n iconName: 'mobile',\n icon: [320, 512, [], \"f10b\", \"M272 0H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h224c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zM160 480c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z\"]\n};\nvar faMobileAlt = {\n prefix: 'fas',\n iconName: 'mobile-alt',\n icon: [320, 512, [], \"f3cd\", \"M272 0H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h224c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zM160 480c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm112-108c0 6.6-5.4 12-12 12H60c-6.6 0-12-5.4-12-12V60c0-6.6 5.4-12 12-12h200c6.6 0 12 5.4 12 12v312z\"]\n};\nvar faMoneyBill = {\n prefix: 'fas',\n iconName: 'money-bill',\n icon: [640, 512, [], \"f0d6\", \"M608 64H32C14.33 64 0 78.33 0 96v320c0 17.67 14.33 32 32 32h576c17.67 0 32-14.33 32-32V96c0-17.67-14.33-32-32-32zM48 400v-64c35.35 0 64 28.65 64 64H48zm0-224v-64h64c0 35.35-28.65 64-64 64zm272 176c-44.19 0-80-42.99-80-96 0-53.02 35.82-96 80-96s80 42.98 80 96c0 53.03-35.83 96-80 96zm272 48h-64c0-35.35 28.65-64 64-64v64zm0-224c-35.35 0-64-28.65-64-64h64v64z\"]\n};\nvar faMoneyBillAlt = {\n prefix: 'fas',\n iconName: 'money-bill-alt',\n icon: [640, 512, [], \"f3d1\", \"M352 288h-16v-88c0-4.42-3.58-8-8-8h-13.58c-4.74 0-9.37 1.4-13.31 4.03l-15.33 10.22a7.994 7.994 0 0 0-2.22 11.09l8.88 13.31a7.994 7.994 0 0 0 11.09 2.22l.47-.31V288h-16c-4.42 0-8 3.58-8 8v16c0 4.42 3.58 8 8 8h64c4.42 0 8-3.58 8-8v-16c0-4.42-3.58-8-8-8zM608 64H32C14.33 64 0 78.33 0 96v320c0 17.67 14.33 32 32 32h576c17.67 0 32-14.33 32-32V96c0-17.67-14.33-32-32-32zM48 400v-64c35.35 0 64 28.65 64 64H48zm0-224v-64h64c0 35.35-28.65 64-64 64zm272 192c-53.02 0-96-50.15-96-112 0-61.86 42.98-112 96-112s96 50.14 96 112c0 61.87-43 112-96 112zm272 32h-64c0-35.35 28.65-64 64-64v64zm0-224c-35.35 0-64-28.65-64-64h64v64z\"]\n};\nvar faMoneyBillWave = {\n prefix: 'fas',\n iconName: 'money-bill-wave',\n icon: [640, 512, [], \"f53a\", \"M621.16 54.46C582.37 38.19 543.55 32 504.75 32c-123.17-.01-246.33 62.34-369.5 62.34-30.89 0-61.76-3.92-92.65-13.72-3.47-1.1-6.95-1.62-10.35-1.62C15.04 79 0 92.32 0 110.81v317.26c0 12.63 7.23 24.6 18.84 29.46C57.63 473.81 96.45 480 135.25 480c123.17 0 246.34-62.35 369.51-62.35 30.89 0 61.76 3.92 92.65 13.72 3.47 1.1 6.95 1.62 10.35 1.62 17.21 0 32.25-13.32 32.25-31.81V83.93c-.01-12.64-7.24-24.6-18.85-29.47zM48 132.22c20.12 5.04 41.12 7.57 62.72 8.93C104.84 170.54 79 192.69 48 192.69v-60.47zm0 285v-47.78c34.37 0 62.18 27.27 63.71 61.4-22.53-1.81-43.59-6.31-63.71-13.62zM320 352c-44.19 0-80-42.99-80-96 0-53.02 35.82-96 80-96s80 42.98 80 96c0 53.03-35.83 96-80 96zm272 27.78c-17.52-4.39-35.71-6.85-54.32-8.44 5.87-26.08 27.5-45.88 54.32-49.28v57.72zm0-236.11c-30.89-3.91-54.86-29.7-55.81-61.55 19.54 2.17 38.09 6.23 55.81 12.66v48.89z\"]\n};\nvar faMoneyBillWaveAlt = {\n prefix: 'fas',\n iconName: 'money-bill-wave-alt',\n icon: [640, 512, [], \"f53b\", \"M621.16 54.46C582.37 38.19 543.55 32 504.75 32c-123.17-.01-246.33 62.34-369.5 62.34-30.89 0-61.76-3.92-92.65-13.72-3.47-1.1-6.95-1.62-10.35-1.62C15.04 79 0 92.32 0 110.81v317.26c0 12.63 7.23 24.6 18.84 29.46C57.63 473.81 96.45 480 135.25 480c123.17 0 246.34-62.35 369.51-62.35 30.89 0 61.76 3.92 92.65 13.72 3.47 1.1 6.95 1.62 10.35 1.62 17.21 0 32.25-13.32 32.25-31.81V83.93c-.01-12.64-7.24-24.6-18.85-29.47zM320 352c-44.19 0-80-42.99-80-96 0-53.02 35.82-96 80-96s80 42.98 80 96c0 53.03-35.83 96-80 96z\"]\n};\nvar faMoneyCheck = {\n prefix: 'fas',\n iconName: 'money-check',\n icon: [640, 512, [], \"f53c\", \"M0 448c0 17.67 14.33 32 32 32h576c17.67 0 32-14.33 32-32V128H0v320zm448-208c0-8.84 7.16-16 16-16h96c8.84 0 16 7.16 16 16v32c0 8.84-7.16 16-16 16h-96c-8.84 0-16-7.16-16-16v-32zm0 120c0-4.42 3.58-8 8-8h112c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H456c-4.42 0-8-3.58-8-8v-16zM64 264c0-4.42 3.58-8 8-8h304c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8v-16zm0 96c0-4.42 3.58-8 8-8h176c4.42 0 8 3.58 8 8v16c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8v-16zM624 32H16C7.16 32 0 39.16 0 48v48h640V48c0-8.84-7.16-16-16-16z\"]\n};\nvar faMoneyCheckAlt = {\n prefix: 'fas',\n iconName: 'money-check-alt',\n icon: [640, 512, [], \"f53d\", \"M608 32H32C14.33 32 0 46.33 0 64v384c0 17.67 14.33 32 32 32h576c17.67 0 32-14.33 32-32V64c0-17.67-14.33-32-32-32zM176 327.88V344c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-16.29c-11.29-.58-22.27-4.52-31.37-11.35-3.9-2.93-4.1-8.77-.57-12.14l11.75-11.21c2.77-2.64 6.89-2.76 10.13-.73 3.87 2.42 8.26 3.72 12.82 3.72h28.11c6.5 0 11.8-5.92 11.8-13.19 0-5.95-3.61-11.19-8.77-12.73l-45-13.5c-18.59-5.58-31.58-23.42-31.58-43.39 0-24.52 19.05-44.44 42.67-45.07V152c0-4.42 3.58-8 8-8h16c4.42 0 8 3.58 8 8v16.29c11.29.58 22.27 4.51 31.37 11.35 3.9 2.93 4.1 8.77.57 12.14l-11.75 11.21c-2.77 2.64-6.89 2.76-10.13.73-3.87-2.43-8.26-3.72-12.82-3.72h-28.11c-6.5 0-11.8 5.92-11.8 13.19 0 5.95 3.61 11.19 8.77 12.73l45 13.5c18.59 5.58 31.58 23.42 31.58 43.39 0 24.53-19.05 44.44-42.67 45.07zM416 312c0 4.42-3.58 8-8 8H296c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h112c4.42 0 8 3.58 8 8v16zm160 0c0 4.42-3.58 8-8 8h-80c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h80c4.42 0 8 3.58 8 8v16zm0-96c0 4.42-3.58 8-8 8H296c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h272c4.42 0 8 3.58 8 8v16z\"]\n};\nvar faMonument = {\n prefix: 'fas',\n iconName: 'monument',\n icon: [384, 512, [], \"f5a6\", \"M368 448H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h352c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zm-78.86-347.26a31.97 31.97 0 0 0-9.21-19.44L203.31 4.69c-6.25-6.25-16.38-6.25-22.63 0l-76.6 76.61a31.97 31.97 0 0 0-9.21 19.44L64 416h256l-30.86-315.26zM240 307.2c0 6.4-6.4 12.8-12.8 12.8h-70.4c-6.4 0-12.8-6.4-12.8-12.8v-38.4c0-6.4 6.4-12.8 12.8-12.8h70.4c6.4 0 12.8 6.4 12.8 12.8v38.4z\"]\n};\nvar faMoon = {\n prefix: 'fas',\n iconName: 'moon',\n icon: [512, 512, [], \"f186\", \"M283.211 512c78.962 0 151.079-35.925 198.857-94.792 7.068-8.708-.639-21.43-11.562-19.35-124.203 23.654-238.262-71.576-238.262-196.954 0-72.222 38.662-138.635 101.498-174.394 9.686-5.512 7.25-20.197-3.756-22.23A258.156 258.156 0 0 0 283.211 0c-141.309 0-256 114.511-256 256 0 141.309 114.511 256 256 256z\"]\n};\nvar faMortarPestle = {\n prefix: 'fas',\n iconName: 'mortar-pestle',\n icon: [512, 512, [], \"f5a7\", \"M501.54 60.91c17.22-17.22 12.51-46.25-9.27-57.14a35.696 35.696 0 0 0-37.37 3.37L251.09 160h151.37l99.08-99.09zM496 192H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h16c0 80.98 50.2 150.11 121.13 178.32-12.76 16.87-21.72 36.8-24.95 58.69-1.46 9.92 6.04 18.98 16.07 18.98h223.5c10.03 0 17.53-9.06 16.07-18.98-3.22-21.89-12.18-41.82-24.95-58.69C429.8 406.11 480 336.98 480 256h16c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16z\"]\n};\nvar faMosque = {\n prefix: 'fas',\n iconName: 'mosque',\n icon: [640, 512, [], \"f678\", \"M0 480c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32V160H0v320zm579.16-192c17.86-17.39 28.84-37.34 28.84-58.91 0-52.86-41.79-93.79-87.92-122.9-41.94-26.47-80.63-57.77-111.96-96.22L400 0l-8.12 9.97c-31.33 38.45-70.01 69.76-111.96 96.22C233.79 135.3 192 176.23 192 229.09c0 21.57 10.98 41.52 28.84 58.91h358.32zM608 320H192c-17.67 0-32 14.33-32 32v128c0 17.67 14.33 32 32 32h32v-64c0-17.67 14.33-32 32-32s32 14.33 32 32v64h64v-72c0-48 48-72 48-72s48 24 48 72v72h64v-64c0-17.67 14.33-32 32-32s32 14.33 32 32v64h32c17.67 0 32-14.33 32-32V352c0-17.67-14.33-32-32-32zM64 0S0 32 0 96v32h128V96c0-64-64-96-64-96z\"]\n};\nvar faMotorcycle = {\n prefix: 'fas',\n iconName: 'motorcycle',\n icon: [640, 512, [], \"f21c\", \"M512.9 192c-14.9-.1-29.1 2.3-42.4 6.9L437.6 144H520c13.3 0 24-10.7 24-24V88c0-13.3-10.7-24-24-24h-45.3c-6.8 0-13.3 2.9-17.8 7.9l-37.5 41.7-22.8-38C392.2 68.4 384.4 64 376 64h-80c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h66.4l19.2 32H227.9c-17.7-23.1-44.9-40-99.9-40H72.5C59 104 47.7 115 48 128.5c.2 13 10.9 23.5 24 23.5h56c24.5 0 38.7 10.9 47.8 24.8l-11.3 20.5c-13-3.9-26.9-5.7-41.3-5.2C55.9 194.5 1.6 249.6 0 317c-1.6 72.1 56.3 131 128 131 59.6 0 109.7-40.8 124-96h84.2c13.7 0 24.6-11.4 24-25.1-2.1-47.1 17.5-93.7 56.2-125l12.5 20.8c-27.6 23.7-45.1 58.9-44.8 98.2.5 69.6 57.2 126.5 126.8 127.1 71.6.7 129.8-57.5 129.2-129.1-.7-69.6-57.6-126.4-127.2-126.9zM128 400c-44.1 0-80-35.9-80-80s35.9-80 80-80c4.2 0 8.4.3 12.5 1L99 316.4c-8.8 16 2.8 35.6 21 35.6h81.3c-12.4 28.2-40.6 48-73.3 48zm463.9-75.6c-2.2 40.6-35 73.4-75.5 75.5-46.1 2.5-84.4-34.3-84.4-79.9 0-21.4 8.4-40.8 22.1-55.1l49.4 82.4c4.5 7.6 14.4 10 22 5.5l13.7-8.2c7.6-4.5 10-14.4 5.5-22l-48.6-80.9c5.2-1.1 10.5-1.6 15.9-1.6 45.6-.1 82.3 38.2 79.9 84.3z\"]\n};\nvar faMountain = {\n prefix: 'fas',\n iconName: 'mountain',\n icon: [640, 512, [], \"f6fc\", \"M634.92 462.7l-288-448C341.03 5.54 330.89 0 320 0s-21.03 5.54-26.92 14.7l-288 448a32.001 32.001 0 0 0-1.17 32.64A32.004 32.004 0 0 0 32 512h576c11.71 0 22.48-6.39 28.09-16.67a31.983 31.983 0 0 0-1.17-32.63zM320 91.18L405.39 224H320l-64 64-38.06-38.06L320 91.18z\"]\n};\nvar faMouse = {\n prefix: 'fas',\n iconName: 'mouse',\n icon: [384, 512, [], \"f8cc\", \"M0 352a160 160 0 0 0 160 160h64a160 160 0 0 0 160-160V224H0zM176 0h-16A160 160 0 0 0 0 160v32h176zm48 0h-16v192h176v-32A160 160 0 0 0 224 0z\"]\n};\nvar faMousePointer = {\n prefix: 'fas',\n iconName: 'mouse-pointer',\n icon: [320, 512, [], \"f245\", \"M302.189 329.126H196.105l55.831 135.993c3.889 9.428-.555 19.999-9.444 23.999l-49.165 21.427c-9.165 4-19.443-.571-23.332-9.714l-53.053-129.136-86.664 89.138C18.729 472.71 0 463.554 0 447.977V18.299C0 1.899 19.921-6.096 30.277 5.443l284.412 292.542c11.472 11.179 3.007 31.141-12.5 31.141z\"]\n};\nvar faMugHot = {\n prefix: 'fas',\n iconName: 'mug-hot',\n icon: [512, 512, [], \"f7b6\", \"M127.1 146.5c1.3 7.7 8 13.5 16 13.5h16.5c9.8 0 17.6-8.5 16.3-18-3.8-28.2-16.4-54.2-36.6-74.7-14.4-14.7-23.6-33.3-26.4-53.5C111.8 5.9 105 0 96.8 0H80.4C70.6 0 63 8.5 64.1 18c3.9 31.9 18 61.3 40.6 84.4 12 12.2 19.7 27.5 22.4 44.1zm112 0c1.3 7.7 8 13.5 16 13.5h16.5c9.8 0 17.6-8.5 16.3-18-3.8-28.2-16.4-54.2-36.6-74.7-14.4-14.7-23.6-33.3-26.4-53.5C223.8 5.9 217 0 208.8 0h-16.4c-9.8 0-17.5 8.5-16.3 18 3.9 31.9 18 61.3 40.6 84.4 12 12.2 19.7 27.5 22.4 44.1zM400 192H32c-17.7 0-32 14.3-32 32v192c0 53 43 96 96 96h192c53 0 96-43 96-96h16c61.8 0 112-50.2 112-112s-50.2-112-112-112zm0 160h-16v-96h16c26.5 0 48 21.5 48 48s-21.5 48-48 48z\"]\n};\nvar faMusic = {\n prefix: 'fas',\n iconName: 'music',\n icon: [512, 512, [], \"f001\", \"M470.38 1.51L150.41 96A32 32 0 0 0 128 126.51v261.41A139 139 0 0 0 96 384c-53 0-96 28.66-96 64s43 64 96 64 96-28.66 96-64V214.32l256-75v184.61a138.4 138.4 0 0 0-32-3.93c-53 0-96 28.66-96 64s43 64 96 64 96-28.65 96-64V32a32 32 0 0 0-41.62-30.49z\"]\n};\nvar faNetworkWired = {\n prefix: 'fas',\n iconName: 'network-wired',\n icon: [640, 512, [], \"f6ff\", \"M640 264v-16c0-8.84-7.16-16-16-16H344v-40h72c17.67 0 32-14.33 32-32V32c0-17.67-14.33-32-32-32H224c-17.67 0-32 14.33-32 32v128c0 17.67 14.33 32 32 32h72v40H16c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h104v40H64c-17.67 0-32 14.33-32 32v128c0 17.67 14.33 32 32 32h160c17.67 0 32-14.33 32-32V352c0-17.67-14.33-32-32-32h-56v-40h304v40h-56c-17.67 0-32 14.33-32 32v128c0 17.67 14.33 32 32 32h160c17.67 0 32-14.33 32-32V352c0-17.67-14.33-32-32-32h-56v-40h104c8.84 0 16-7.16 16-16zM256 128V64h128v64H256zm-64 320H96v-64h96v64zm352 0h-96v-64h96v64z\"]\n};\nvar faNeuter = {\n prefix: 'fas',\n iconName: 'neuter',\n icon: [288, 512, [], \"f22c\", \"M288 176c0-79.5-64.5-144-144-144S0 96.5 0 176c0 68.5 47.9 125.9 112 140.4V468c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12V316.4c64.1-14.5 112-71.9 112-140.4zm-144 80c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80z\"]\n};\nvar faNewspaper = {\n prefix: 'fas',\n iconName: 'newspaper',\n icon: [576, 512, [], \"f1ea\", \"M552 64H88c-13.255 0-24 10.745-24 24v8H24c-13.255 0-24 10.745-24 24v272c0 30.928 25.072 56 56 56h472c26.51 0 48-21.49 48-48V88c0-13.255-10.745-24-24-24zM56 400a8 8 0 0 1-8-8V144h16v248a8 8 0 0 1-8 8zm236-16H140c-6.627 0-12-5.373-12-12v-8c0-6.627 5.373-12 12-12h152c6.627 0 12 5.373 12 12v8c0 6.627-5.373 12-12 12zm208 0H348c-6.627 0-12-5.373-12-12v-8c0-6.627 5.373-12 12-12h152c6.627 0 12 5.373 12 12v8c0 6.627-5.373 12-12 12zm-208-96H140c-6.627 0-12-5.373-12-12v-8c0-6.627 5.373-12 12-12h152c6.627 0 12 5.373 12 12v8c0 6.627-5.373 12-12 12zm208 0H348c-6.627 0-12-5.373-12-12v-8c0-6.627 5.373-12 12-12h152c6.627 0 12 5.373 12 12v8c0 6.627-5.373 12-12 12zm0-96H140c-6.627 0-12-5.373-12-12v-40c0-6.627 5.373-12 12-12h360c6.627 0 12 5.373 12 12v40c0 6.627-5.373 12-12 12z\"]\n};\nvar faNotEqual = {\n prefix: 'fas',\n iconName: 'not-equal',\n icon: [448, 512, [], \"f53e\", \"M416 208c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32h-23.88l51.87-66.81c5.37-7.02 4.04-17.06-2.97-22.43L415.61 3.3c-7.02-5.38-17.06-4.04-22.44 2.97L311.09 112H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h204.56l-74.53 96H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h55.49l-51.87 66.81c-5.37 7.01-4.04 17.05 2.97 22.43L64 508.7c7.02 5.38 17.06 4.04 22.43-2.97L168.52 400H416c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32H243.05l74.53-96H416z\"]\n};\nvar faNotesMedical = {\n prefix: 'fas',\n iconName: 'notes-medical',\n icon: [384, 512, [], \"f481\", \"M336 64h-80c0-35.3-28.7-64-64-64s-64 28.7-64 64H48C21.5 64 0 85.5 0 112v352c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V112c0-26.5-21.5-48-48-48zM192 40c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24zm96 304c0 4.4-3.6 8-8 8h-56v56c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-56h-56c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h56v-56c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v56h56c4.4 0 8 3.6 8 8v48zm0-192c0 4.4-3.6 8-8 8H104c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h176c4.4 0 8 3.6 8 8v16z\"]\n};\nvar faObjectGroup = {\n prefix: 'fas',\n iconName: 'object-group',\n icon: [512, 512, [], \"f247\", \"M480 128V96h20c6.627 0 12-5.373 12-12V44c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v20H64V44c0-6.627-5.373-12-12-12H12C5.373 32 0 37.373 0 44v40c0 6.627 5.373 12 12 12h20v320H12c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12v-20h384v20c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-20V128zM96 276V140c0-6.627 5.373-12 12-12h168c6.627 0 12 5.373 12 12v136c0 6.627-5.373 12-12 12H108c-6.627 0-12-5.373-12-12zm320 96c0 6.627-5.373 12-12 12H236c-6.627 0-12-5.373-12-12v-52h72c13.255 0 24-10.745 24-24v-72h84c6.627 0 12 5.373 12 12v136z\"]\n};\nvar faObjectUngroup = {\n prefix: 'fas',\n iconName: 'object-ungroup',\n icon: [576, 512, [], \"f248\", \"M64 320v26a6 6 0 0 1-6 6H6a6 6 0 0 1-6-6v-52a6 6 0 0 1 6-6h26V96H6a6 6 0 0 1-6-6V38a6 6 0 0 1 6-6h52a6 6 0 0 1 6 6v26h288V38a6 6 0 0 1 6-6h52a6 6 0 0 1 6 6v52a6 6 0 0 1-6 6h-26v192h26a6 6 0 0 1 6 6v52a6 6 0 0 1-6 6h-52a6 6 0 0 1-6-6v-26H64zm480-64v-32h26a6 6 0 0 0 6-6v-52a6 6 0 0 0-6-6h-52a6 6 0 0 0-6 6v26H408v72h8c13.255 0 24 10.745 24 24v64c0 13.255-10.745 24-24 24h-64c-13.255 0-24-10.745-24-24v-8H192v72h-26a6 6 0 0 0-6 6v52a6 6 0 0 0 6 6h52a6 6 0 0 0 6-6v-26h288v26a6 6 0 0 0 6 6h52a6 6 0 0 0 6-6v-52a6 6 0 0 0-6-6h-26V256z\"]\n};\nvar faOilCan = {\n prefix: 'fas',\n iconName: 'oil-can',\n icon: [640, 512, [], \"f613\", \"M629.8 160.31L416 224l-50.49-25.24a64.07 64.07 0 0 0-28.62-6.76H280v-48h56c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16H176c-8.84 0-16 7.16-16 16v16c0 8.84 7.16 16 16 16h56v48h-56L37.72 166.86a31.9 31.9 0 0 0-5.79-.53C14.67 166.33 0 180.36 0 198.34v94.95c0 15.46 11.06 28.72 26.28 31.48L96 337.46V384c0 17.67 14.33 32 32 32h274.63c8.55 0 16.75-3.42 22.76-9.51l212.26-214.75c1.5-1.5 2.34-3.54 2.34-5.66V168c.01-5.31-5.08-9.15-10.19-7.69zM96 288.67l-48-8.73v-62.43l48 8.73v62.43zm453.33 84.66c0 23.56 19.1 42.67 42.67 42.67s42.67-19.1 42.67-42.67S592 288 592 288s-42.67 61.77-42.67 85.33z\"]\n};\nvar faOm = {\n prefix: 'fas',\n iconName: 'om',\n icon: [512, 512, [], \"f679\", \"M360.6 60.94a10.43 10.43 0 0 0 14.76 0l21.57-21.56a10.43 10.43 0 0 0 0-14.76L375.35 3.06c-4.08-4.07-10.68-4.07-14.76 0l-21.57 21.56a10.43 10.43 0 0 0 0 14.76l21.58 21.56zM412.11 192c-26.69 0-51.77 10.39-70.64 29.25l-24.25 24.25c-6.78 6.77-15.78 10.5-25.38 10.5H245c10.54-22.1 14.17-48.11 7.73-75.23-10.1-42.55-46.36-76.11-89.52-83.19-36.15-5.93-70.9 5.04-96.01 28.78-7.36 6.96-6.97 18.85 1.12 24.93l26.15 19.63c5.72 4.3 13.66 4.32 19.2-.21 8.45-6.9 19.02-10.71 30.27-10.71 26.47 0 48.01 21.53 48.01 48s-21.54 48-48.01 48h-31.9c-11.96 0-19.74 12.58-14.39 23.28l16.09 32.17c2.53 5.06 7.6 8.1 13.17 8.55h33.03c35.3 0 64.01 28.7 64.01 64s-28.71 64-64.01 64c-96.02 0-122.35-54.02-145.15-92.03-4.53-7.55-14.77-3.58-14.79 5.22C-.09 416 41.13 512 159.94 512c70.59 0 128.02-57.42 128.02-128 0-23.42-6.78-45.1-17.81-64h21.69c26.69 0 51.77-10.39 70.64-29.25l24.25-24.25c6.78-6.77 15.78-10.5 25.38-10.5 19.78 0 35.88 16.09 35.88 35.88V392c0 13.23-18.77 24-32.01 24-39.4 0-66.67-24.24-81.82-42.89-4.77-5.87-14.2-2.54-14.2 5.02V416s0 64 96.02 64c48.54 0 96.02-39.47 96.02-88V291.88c0-55.08-44.8-99.88-99.89-99.88zm42.18-124.73c-85.55 65.12-169.05 2.75-172.58.05-6.02-4.62-14.44-4.38-20.14.55-5.74 4.92-7.27 13.17-3.66 19.8 1.61 2.95 40.37 72.34 118.8 72.34 79.92 0 98.78-31.36 101.75-37.66 1.02-2.12 1.53-4.47 1.53-6.83V80c0-13.22-15.14-20.69-25.7-12.73z\"]\n};\nvar faOtter = {\n prefix: 'fas',\n iconName: 'otter',\n icon: [640, 512, [], \"f700\", \"M608 32h-32l-13.25-13.25A63.97 63.97 0 0 0 517.49 0H497c-11.14 0-22.08 2.91-31.75 8.43L312 96h-56C149.96 96 64 181.96 64 288v1.61c0 32.75-16 62.14-39.56 84.89-18.19 17.58-28.1 43.68-23.19 71.8 6.76 38.8 42.9 65.7 82.28 65.7H192c17.67 0 32-14.33 32-32s-14.33-32-32-32H80c-8.83 0-16-7.17-16-16s7.17-16 16-16h224c8.84 0 16-7.16 16-16v-16c0-17.67-14.33-32-32-32h-64l149.49-80.5L448 416h80c8.84 0 16-7.16 16-16v-16c0-17.67-14.33-32-32-32h-28.22l-55.11-110.21L521.14 192H544c53.02 0 96-42.98 96-96V64c0-17.67-14.33-32-32-32zm-96 16c8.84 0 16 7.16 16 16s-7.16 16-16 16-16-7.16-16-16 7.16-16 16-16zm32 96h-34.96L407.2 198.84l-13.77-27.55L512 112h77.05c-6.62 18.58-24.22 32-45.05 32z\"]\n};\nvar faOutdent = {\n prefix: 'fas',\n iconName: 'outdent',\n icon: [448, 512, [], \"f03b\", \"M100.69 363.29c10 10 27.31 2.93 27.31-11.31V160c0-14.32-17.33-21.31-27.31-11.31l-96 96a16 16 0 0 0 0 22.62zM432 416H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm3.17-128H204.83A12.82 12.82 0 0 0 192 300.83v38.34A12.82 12.82 0 0 0 204.83 352h230.34A12.82 12.82 0 0 0 448 339.17v-38.34A12.82 12.82 0 0 0 435.17 288zm0-128H204.83A12.82 12.82 0 0 0 192 172.83v38.34A12.82 12.82 0 0 0 204.83 224h230.34A12.82 12.82 0 0 0 448 211.17v-38.34A12.82 12.82 0 0 0 435.17 160zM432 32H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z\"]\n};\nvar faPager = {\n prefix: 'fas',\n iconName: 'pager',\n icon: [512, 512, [], \"f815\", \"M448 64H64a64 64 0 0 0-64 64v256a64 64 0 0 0 64 64h384a64 64 0 0 0 64-64V128a64 64 0 0 0-64-64zM160 368H80a16 16 0 0 1-16-16v-16a16 16 0 0 1 16-16h80zm128-16a16 16 0 0 1-16 16h-80v-48h80a16 16 0 0 1 16 16zm160-128a32 32 0 0 1-32 32H96a32 32 0 0 1-32-32v-64a32 32 0 0 1 32-32h320a32 32 0 0 1 32 32z\"]\n};\nvar faPaintBrush = {\n prefix: 'fas',\n iconName: 'paint-brush',\n icon: [512, 512, [], \"f1fc\", \"M167.02 309.34c-40.12 2.58-76.53 17.86-97.19 72.3-2.35 6.21-8 9.98-14.59 9.98-11.11 0-45.46-27.67-55.25-34.35C0 439.62 37.93 512 128 512c75.86 0 128-43.77 128-120.19 0-3.11-.65-6.08-.97-9.13l-88.01-73.34zM457.89 0c-15.16 0-29.37 6.71-40.21 16.45C213.27 199.05 192 203.34 192 257.09c0 13.7 3.25 26.76 8.73 38.7l63.82 53.18c7.21 1.8 14.64 3.03 22.39 3.03 62.11 0 98.11-45.47 211.16-256.46 7.38-14.35 13.9-29.85 13.9-45.99C512 20.64 486 0 457.89 0z\"]\n};\nvar faPaintRoller = {\n prefix: 'fas',\n iconName: 'paint-roller',\n icon: [512, 512, [], \"f5aa\", \"M416 128V32c0-17.67-14.33-32-32-32H32C14.33 0 0 14.33 0 32v96c0 17.67 14.33 32 32 32h352c17.67 0 32-14.33 32-32zm32-64v128c0 17.67-14.33 32-32 32H256c-35.35 0-64 28.65-64 64v32c-17.67 0-32 14.33-32 32v128c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32V352c0-17.67-14.33-32-32-32v-32h160c53.02 0 96-42.98 96-96v-64c0-35.35-28.65-64-64-64z\"]\n};\nvar faPalette = {\n prefix: 'fas',\n iconName: 'palette',\n icon: [512, 512, [], \"f53f\", \"M204.3 5C104.9 24.4 24.8 104.3 5.2 203.4c-37 187 131.7 326.4 258.8 306.7 41.2-6.4 61.4-54.6 42.5-91.7-23.1-45.4 9.9-98.4 60.9-98.4h79.7c35.8 0 64.8-29.6 64.9-65.3C511.5 97.1 368.1-26.9 204.3 5zM96 320c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm32-128c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm128-64c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm128 64c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z\"]\n};\nvar faPallet = {\n prefix: 'fas',\n iconName: 'pallet',\n icon: [640, 512, [], \"f482\", \"M144 256h352c8.8 0 16-7.2 16-16V16c0-8.8-7.2-16-16-16H384v128l-64-32-64 32V0H144c-8.8 0-16 7.2-16 16v224c0 8.8 7.2 16 16 16zm480 128c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h48v64H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h608c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16h-48v-64h48zm-336 64H128v-64h160v64zm224 0H352v-64h160v64z\"]\n};\nvar faPaperPlane = {\n prefix: 'fas',\n iconName: 'paper-plane',\n icon: [512, 512, [], \"f1d8\", \"M476 3.2L12.5 270.6c-18.1 10.4-15.8 35.6 2.2 43.2L121 358.4l287.3-253.2c5.5-4.9 13.3 2.6 8.6 8.3L176 407v80.5c0 23.6 28.5 32.9 42.5 15.8L282 426l124.6 52.2c14.2 6 30.4-2.9 33-18.2l72-432C515 7.8 493.3-6.8 476 3.2z\"]\n};\nvar faPaperclip = {\n prefix: 'fas',\n iconName: 'paperclip',\n icon: [448, 512, [], \"f0c6\", \"M43.246 466.142c-58.43-60.289-57.341-157.511 1.386-217.581L254.392 34c44.316-45.332 116.351-45.336 160.671 0 43.89 44.894 43.943 117.329 0 162.276L232.214 383.128c-29.855 30.537-78.633 30.111-107.982-.998-28.275-29.97-27.368-77.473 1.452-106.953l143.743-146.835c6.182-6.314 16.312-6.422 22.626-.241l22.861 22.379c6.315 6.182 6.422 16.312.241 22.626L171.427 319.927c-4.932 5.045-5.236 13.428-.648 18.292 4.372 4.634 11.245 4.711 15.688.165l182.849-186.851c19.613-20.062 19.613-52.725-.011-72.798-19.189-19.627-49.957-19.637-69.154 0L90.39 293.295c-34.763 35.56-35.299 93.12-1.191 128.313 34.01 35.093 88.985 35.137 123.058.286l172.06-175.999c6.177-6.319 16.307-6.433 22.626-.256l22.877 22.364c6.319 6.177 6.434 16.307.256 22.626l-172.06 175.998c-59.576 60.938-155.943 60.216-214.77-.485z\"]\n};\nvar faParachuteBox = {\n prefix: 'fas',\n iconName: 'parachute-box',\n icon: [512, 512, [], \"f4cd\", \"M511.9 175c-9.1-75.6-78.4-132.4-158.3-158.7C390 55.7 416 116.9 416 192h28.1L327.5 321.5c-2.5-.6-4.8-1.5-7.5-1.5h-48V192h112C384 76.8 315.1 0 256 0S128 76.8 128 192h112v128h-48c-2.7 0-5 .9-7.5 1.5L67.9 192H96c0-75.1 26-136.3 62.4-175.7C78.5 42.7 9.2 99.5.1 175c-1.1 9.1 6.8 17 16 17h8.7l136.7 151.9c-.7 2.6-1.6 5.2-1.6 8.1v128c0 17.7 14.3 32 32 32h128c17.7 0 32-14.3 32-32V352c0-2.9-.9-5.4-1.6-8.1L487.1 192h8.7c9.3 0 17.2-7.8 16.1-17z\"]\n};\nvar faParagraph = {\n prefix: 'fas',\n iconName: 'paragraph',\n icon: [448, 512, [], \"f1dd\", \"M448 48v32a16 16 0 0 1-16 16h-48v368a16 16 0 0 1-16 16h-32a16 16 0 0 1-16-16V96h-32v368a16 16 0 0 1-16 16h-32a16 16 0 0 1-16-16V352h-32a160 160 0 0 1 0-320h240a16 16 0 0 1 16 16z\"]\n};\nvar faParking = {\n prefix: 'fas',\n iconName: 'parking',\n icon: [448, 512, [], \"f540\", \"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM240 320h-48v48c0 8.8-7.2 16-16 16h-32c-8.8 0-16-7.2-16-16V144c0-8.8 7.2-16 16-16h96c52.9 0 96 43.1 96 96s-43.1 96-96 96zm0-128h-48v64h48c17.6 0 32-14.4 32-32s-14.4-32-32-32z\"]\n};\nvar faPassport = {\n prefix: 'fas',\n iconName: 'passport',\n icon: [448, 512, [], \"f5ab\", \"M129.62 176h39.09c1.49-27.03 6.54-51.35 14.21-70.41-27.71 13.24-48.02 39.19-53.3 70.41zm0 32c5.29 31.22 25.59 57.17 53.3 70.41-7.68-19.06-12.72-43.38-14.21-70.41h-39.09zM224 286.69c7.69-7.45 20.77-34.42 23.43-78.69h-46.87c2.67 44.26 15.75 71.24 23.44 78.69zM200.57 176h46.87c-2.66-44.26-15.74-71.24-23.43-78.69-7.7 7.45-20.78 34.43-23.44 78.69zm64.51 102.41c27.71-13.24 48.02-39.19 53.3-70.41h-39.09c-1.49 27.03-6.53 51.35-14.21 70.41zM416 0H64C28.65 0 0 28.65 0 64v384c0 35.35 28.65 64 64 64h352c17.67 0 32-14.33 32-32V32c0-17.67-14.33-32-32-32zm-80 416H112c-8.8 0-16-7.2-16-16s7.2-16 16-16h224c8.8 0 16 7.2 16 16s-7.2 16-16 16zm-112-96c-70.69 0-128-57.31-128-128S153.31 64 224 64s128 57.31 128 128-57.31 128-128 128zm41.08-214.41c7.68 19.06 12.72 43.38 14.21 70.41h39.09c-5.28-31.22-25.59-57.17-53.3-70.41z\"]\n};\nvar faPastafarianism = {\n prefix: 'fas',\n iconName: 'pastafarianism',\n icon: [640, 512, [], \"f67b\", \"M624.54 347.67c-32.7-12.52-57.36 4.25-75.37 16.45-17.06 11.53-23.25 14.42-31.41 11.36-8.12-3.09-10.83-9.38-15.89-29.38-3.33-13.15-7.44-29.32-17.95-42.65 2.24-2.91 4.43-5.79 6.38-8.57C500.47 304.45 513.71 312 532 312c33.95 0 50.87-25.78 62.06-42.83 10.59-16.14 15-21.17 21.94-21.17 13.25 0 24-10.75 24-24s-10.75-24-24-24c-33.95 0-50.87 25.78-62.06 42.83-10.6 16.14-15 21.17-21.94 21.17-17.31 0-37.48-61.43-97.26-101.91l17.25-34.5C485.43 125.5 512 97.98 512 64c0-35.35-28.65-64-64-64s-64 28.65-64 64c0 13.02 3.94 25.1 10.62 35.21l-18.15 36.3c-16.98-4.6-35.6-7.51-56.46-7.51s-39.49 2.91-56.46 7.51l-18.15-36.3C252.06 89.1 256 77.02 256 64c0-35.35-28.65-64-64-64s-64 28.65-64 64c0 33.98 26.56 61.5 60.02 63.6l17.25 34.5C145.68 202.44 125.15 264 108 264c-6.94 0-11.34-5.03-21.94-21.17C74.88 225.78 57.96 200 24 200c-13.25 0-24 10.75-24 24s10.75 24 24 24c6.94 0 11.34 5.03 21.94 21.17C57.13 286.22 74.05 312 108 312c18.29 0 31.53-7.55 41.7-17.11 1.95 2.79 4.14 5.66 6.38 8.57-10.51 13.33-14.62 29.5-17.95 42.65-5.06 20-7.77 26.28-15.89 29.38-8.11 3.06-14.33.17-31.41-11.36-18.03-12.2-42.72-28.92-75.37-16.45-12.39 4.72-18.59 18.58-13.87 30.97 4.72 12.41 18.61 18.61 30.97 13.88 8.16-3.09 14.34-.19 31.39 11.36 13.55 9.16 30.83 20.86 52.42 20.84 7.17 0 14.83-1.28 22.97-4.39 32.66-12.44 39.98-41.33 45.33-62.44 2.21-8.72 3.99-14.49 5.95-18.87 16.62 13.61 36.95 25.88 61.64 34.17-9.96 37-32.18 90.8-60.26 90.8-13.25 0-24 10.75-24 24s10.75 24 24 24c66.74 0 97.05-88.63 107.42-129.14 6.69.6 13.42 1.14 20.58 1.14s13.89-.54 20.58-1.14C350.95 423.37 381.26 512 448 512c13.25 0 24-10.75 24-24s-10.75-24-24-24c-27.94 0-50.21-53.81-60.22-90.81 24.69-8.29 45-20.56 61.62-34.16 1.96 4.38 3.74 10.15 5.95 18.87 5.34 21.11 12.67 50 45.33 62.44 8.14 3.11 15.8 4.39 22.97 4.39 21.59 0 38.87-11.69 52.42-20.84 17.05-11.55 23.28-14.45 31.39-11.36 12.39 4.75 26.27-1.47 30.97-13.88 4.71-12.4-1.49-26.26-13.89-30.98zM448 48c8.82 0 16 7.18 16 16s-7.18 16-16 16-16-7.18-16-16 7.18-16 16-16zm-256 0c8.82 0 16 7.18 16 16s-7.18 16-16 16-16-7.18-16-16 7.18-16 16-16z\"]\n};\nvar faPaste = {\n prefix: 'fas',\n iconName: 'paste',\n icon: [448, 512, [], \"f0ea\", \"M128 184c0-30.879 25.122-56 56-56h136V56c0-13.255-10.745-24-24-24h-80.61C204.306 12.89 183.637 0 160 0s-44.306 12.89-55.39 32H24C10.745 32 0 42.745 0 56v336c0 13.255 10.745 24 24 24h104V184zm32-144c13.255 0 24 10.745 24 24s-10.745 24-24 24-24-10.745-24-24 10.745-24 24-24zm184 248h104v200c0 13.255-10.745 24-24 24H184c-13.255 0-24-10.745-24-24V184c0-13.255 10.745-24 24-24h136v104c0 13.2 10.8 24 24 24zm104-38.059V256h-96v-96h6.059a24 24 0 0 1 16.97 7.029l65.941 65.941a24.002 24.002 0 0 1 7.03 16.971z\"]\n};\nvar faPause = {\n prefix: 'fas',\n iconName: 'pause',\n icon: [448, 512, [], \"f04c\", \"M144 479H48c-26.5 0-48-21.5-48-48V79c0-26.5 21.5-48 48-48h96c26.5 0 48 21.5 48 48v352c0 26.5-21.5 48-48 48zm304-48V79c0-26.5-21.5-48-48-48h-96c-26.5 0-48 21.5-48 48v352c0 26.5 21.5 48 48 48h96c26.5 0 48-21.5 48-48z\"]\n};\nvar faPauseCircle = {\n prefix: 'fas',\n iconName: 'pause-circle',\n icon: [512, 512, [], \"f28b\", \"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm-16 328c0 8.8-7.2 16-16 16h-48c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16h48c8.8 0 16 7.2 16 16v160zm112 0c0 8.8-7.2 16-16 16h-48c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16h48c8.8 0 16 7.2 16 16v160z\"]\n};\nvar faPaw = {\n prefix: 'fas',\n iconName: 'paw',\n icon: [512, 512, [], \"f1b0\", \"M256 224c-79.41 0-192 122.76-192 200.25 0 34.9 26.81 55.75 71.74 55.75 48.84 0 81.09-25.08 120.26-25.08 39.51 0 71.85 25.08 120.26 25.08 44.93 0 71.74-20.85 71.74-55.75C448 346.76 335.41 224 256 224zm-147.28-12.61c-10.4-34.65-42.44-57.09-71.56-50.13-29.12 6.96-44.29 40.69-33.89 75.34 10.4 34.65 42.44 57.09 71.56 50.13 29.12-6.96 44.29-40.69 33.89-75.34zm84.72-20.78c30.94-8.14 46.42-49.94 34.58-93.36s-46.52-72.01-77.46-63.87-46.42 49.94-34.58 93.36c11.84 43.42 46.53 72.02 77.46 63.87zm281.39-29.34c-29.12-6.96-61.15 15.48-71.56 50.13-10.4 34.65 4.77 68.38 33.89 75.34 29.12 6.96 61.15-15.48 71.56-50.13 10.4-34.65-4.77-68.38-33.89-75.34zm-156.27 29.34c30.94 8.14 65.62-20.45 77.46-63.87 11.84-43.42-3.64-85.21-34.58-93.36s-65.62 20.45-77.46 63.87c-11.84 43.42 3.64 85.22 34.58 93.36z\"]\n};\nvar faPeace = {\n prefix: 'fas',\n iconName: 'peace',\n icon: [496, 512, [], \"f67c\", \"M248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm184 248c0 31.93-8.2 61.97-22.57 88.17L280 240.63V74.97c86.23 15.21 152 90.5 152 181.03zM216 437.03c-33.86-5.97-64.49-21.2-89.29-43.02L216 322.57v114.46zm64-114.46L369.29 394c-24.8 21.82-55.43 37.05-89.29 43.02V322.57zm-64-247.6v165.66L86.57 344.17C72.2 317.97 64 287.93 64 256c0-90.53 65.77-165.82 152-181.03z\"]\n};\nvar faPen = {\n prefix: 'fas',\n iconName: 'pen',\n icon: [512, 512, [], \"f304\", \"M290.74 93.24l128.02 128.02-277.99 277.99-114.14 12.6C11.35 513.54-1.56 500.62.14 485.34l12.7-114.22 277.9-277.88zm207.2-19.06l-60.11-60.11c-18.75-18.75-49.16-18.75-67.91 0l-56.55 56.55 128.02 128.02 56.55-56.55c18.75-18.76 18.75-49.16 0-67.91z\"]\n};\nvar faPenAlt = {\n prefix: 'fas',\n iconName: 'pen-alt',\n icon: [512, 512, [], \"f305\", \"M497.94 74.17l-60.11-60.11c-18.75-18.75-49.16-18.75-67.91 0l-56.55 56.55 128.02 128.02 56.55-56.55c18.75-18.75 18.75-49.15 0-67.91zm-246.8-20.53c-15.62-15.62-40.94-15.62-56.56 0L75.8 172.43c-6.25 6.25-6.25 16.38 0 22.62l22.63 22.63c6.25 6.25 16.38 6.25 22.63 0l101.82-101.82 22.63 22.62L93.95 290.03A327.038 327.038 0 0 0 .17 485.11l-.03.23c-1.7 15.28 11.21 28.2 26.49 26.51a327.02 327.02 0 0 0 195.34-93.8l196.79-196.79-82.77-82.77-84.85-84.85z\"]\n};\nvar faPenFancy = {\n prefix: 'fas',\n iconName: 'pen-fancy',\n icon: [512, 512, [], \"f5ac\", \"M79.18 282.94a32.005 32.005 0 0 0-20.24 20.24L0 480l4.69 4.69 92.89-92.89c-.66-2.56-1.57-5.03-1.57-7.8 0-17.67 14.33-32 32-32s32 14.33 32 32-14.33 32-32 32c-2.77 0-5.24-.91-7.8-1.57l-92.89 92.89L32 512l176.82-58.94a31.983 31.983 0 0 0 20.24-20.24l33.07-84.07-98.88-98.88-84.07 33.07zM369.25 28.32L186.14 227.81l97.85 97.85 199.49-183.11C568.4 67.48 443.73-55.94 369.25 28.32z\"]\n};\nvar faPenNib = {\n prefix: 'fas',\n iconName: 'pen-nib',\n icon: [512, 512, [], \"f5ad\", \"M136.6 138.79a64.003 64.003 0 0 0-43.31 41.35L0 460l14.69 14.69L164.8 324.58c-2.99-6.26-4.8-13.18-4.8-20.58 0-26.51 21.49-48 48-48s48 21.49 48 48-21.49 48-48 48c-7.4 0-14.32-1.81-20.58-4.8L37.31 497.31 52 512l279.86-93.29a64.003 64.003 0 0 0 41.35-43.31L416 224 288 96l-151.4 42.79zm361.34-64.62l-60.11-60.11c-18.75-18.75-49.16-18.75-67.91 0l-56.55 56.55 128.02 128.02 56.55-56.55c18.75-18.75 18.75-49.15 0-67.91z\"]\n};\nvar faPenSquare = {\n prefix: 'fas',\n iconName: 'pen-square',\n icon: [448, 512, [], \"f14b\", \"M400 480H48c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48h352c26.5 0 48 21.5 48 48v352c0 26.5-21.5 48-48 48zM238.1 177.9L102.4 313.6l-6.3 57.1c-.8 7.6 5.6 14.1 13.3 13.3l57.1-6.3L302.2 242c2.3-2.3 2.3-6.1 0-8.5L246.7 178c-2.5-2.4-6.3-2.4-8.6-.1zM345 165.1L314.9 135c-9.4-9.4-24.6-9.4-33.9 0l-23.1 23.1c-2.3 2.3-2.3 6.1 0 8.5l55.5 55.5c2.3 2.3 6.1 2.3 8.5 0L345 199c9.3-9.3 9.3-24.5 0-33.9z\"]\n};\nvar faPencilAlt = {\n prefix: 'fas',\n iconName: 'pencil-alt',\n icon: [512, 512, [], \"f303\", \"M497.9 142.1l-46.1 46.1c-4.7 4.7-12.3 4.7-17 0l-111-111c-4.7-4.7-4.7-12.3 0-17l46.1-46.1c18.7-18.7 49.1-18.7 67.9 0l60.1 60.1c18.8 18.7 18.8 49.1 0 67.9zM284.2 99.8L21.6 362.4.4 483.9c-2.9 16.4 11.4 30.6 27.8 27.8l121.5-21.3 262.6-262.6c4.7-4.7 4.7-12.3 0-17l-111-111c-4.8-4.7-12.4-4.7-17.1 0zM124.1 339.9c-5.5-5.5-5.5-14.3 0-19.8l154-154c5.5-5.5 14.3-5.5 19.8 0s5.5 14.3 0 19.8l-154 154c-5.5 5.5-14.3 5.5-19.8 0zM88 424h48v36.3l-64.5 11.3-31.1-31.1L51.7 376H88v48z\"]\n};\nvar faPencilRuler = {\n prefix: 'fas',\n iconName: 'pencil-ruler',\n icon: [512, 512, [], \"f5ae\", \"M109.46 244.04l134.58-134.56-44.12-44.12-61.68 61.68a7.919 7.919 0 0 1-11.21 0l-11.21-11.21c-3.1-3.1-3.1-8.12 0-11.21l61.68-61.68-33.64-33.65C131.47-3.1 111.39-3.1 99 9.29L9.29 99c-12.38 12.39-12.39 32.47 0 44.86l100.17 100.18zm388.47-116.8c18.76-18.76 18.75-49.17 0-67.93l-45.25-45.25c-18.76-18.76-49.18-18.76-67.95 0l-46.02 46.01 113.2 113.2 46.02-46.03zM316.08 82.71l-297 296.96L.32 487.11c-2.53 14.49 10.09 27.11 24.59 24.56l107.45-18.84L429.28 195.9 316.08 82.71zm186.63 285.43l-33.64-33.64-61.68 61.68c-3.1 3.1-8.12 3.1-11.21 0l-11.21-11.21c-3.09-3.1-3.09-8.12 0-11.21l61.68-61.68-44.14-44.14L267.93 402.5l100.21 100.2c12.39 12.39 32.47 12.39 44.86 0l89.71-89.7c12.39-12.39 12.39-32.47 0-44.86z\"]\n};\nvar faPeopleCarry = {\n prefix: 'fas',\n iconName: 'people-carry',\n icon: [640, 512, [], \"f4ce\", \"M128 96c26.5 0 48-21.5 48-48S154.5 0 128 0 80 21.5 80 48s21.5 48 48 48zm384 0c26.5 0 48-21.5 48-48S538.5 0 512 0s-48 21.5-48 48 21.5 48 48 48zm125.7 372.1l-44-110-41.1 46.4-2 18.2 27.7 69.2c5 12.5 17 20.1 29.7 20.1 4 0 8-.7 11.9-2.3 16.4-6.6 24.4-25.2 17.8-41.6zm-34.2-209.8L585 178.1c-4.6-20-18.6-36.8-37.5-44.9-18.5-8-39-6.7-56.1 3.3-22.7 13.4-39.7 34.5-48.1 59.4L432 229.8 416 240v-96c0-8.8-7.2-16-16-16H240c-8.8 0-16 7.2-16 16v96l-16.1-10.2-11.3-33.9c-8.3-25-25.4-46-48.1-59.4-17.2-10-37.6-11.3-56.1-3.3-18.9 8.1-32.9 24.9-37.5 44.9l-18.4 80.2c-4.6 20 .7 41.2 14.4 56.7l67.2 75.9 10.1 92.6C130 499.8 143.8 512 160 512c1.2 0 2.3-.1 3.5-.2 17.6-1.9 30.2-17.7 28.3-35.3l-10.1-92.8c-1.5-13-6.9-25.1-15.6-35l-43.3-49 17.6-70.3 6.8 20.4c4.1 12.5 11.9 23.4 24.5 32.6l51.1 32.5c4.6 2.9 12.1 4.6 17.2 5h160c5.1-.4 12.6-2.1 17.2-5l51.1-32.5c12.6-9.2 20.4-20 24.5-32.6l6.8-20.4 17.6 70.3-43.3 49c-8.7 9.9-14.1 22-15.6 35l-10.1 92.8c-1.9 17.6 10.8 33.4 28.3 35.3 1.2.1 2.3.2 3.5.2 16.1 0 30-12.1 31.8-28.5l10.1-92.6 67.2-75.9c13.6-15.5 19-36.7 14.4-56.7zM46.3 358.1l-44 110c-6.6 16.4 1.4 35 17.8 41.6 16.8 6.6 35.1-1.7 41.6-17.8l27.7-69.2-2-18.2-41.1-46.4z\"]\n};\nvar faPepperHot = {\n prefix: 'fas',\n iconName: 'pepper-hot',\n icon: [512, 512, [], \"f816\", \"M330.67 263.12V173.4l-52.75-24.22C219.44 218.76 197.58 400 56 400a56 56 0 0 0 0 112c212.64 0 370.65-122.87 419.18-210.34l-37.05-38.54zm131.09-128.37C493.92 74.91 477.18 26.48 458.62 3a8 8 0 0 0-11.93-.59l-22.9 23a8.06 8.06 0 0 0-.89 10.23c6.86 10.36 17.05 35.1-1.4 72.32A142.85 142.85 0 0 0 364.34 96c-28 0-54 8.54-76.34 22.59l74.67 34.29v78.24h89.09L506.44 288c3.26-12.62 5.56-25.63 5.56-39.31a154 154 0 0 0-50.24-113.94z\"]\n};\nvar faPercent = {\n prefix: 'fas',\n iconName: 'percent',\n icon: [448, 512, [], \"f295\", \"M112 224c61.9 0 112-50.1 112-112S173.9 0 112 0 0 50.1 0 112s50.1 112 112 112zm0-160c26.5 0 48 21.5 48 48s-21.5 48-48 48-48-21.5-48-48 21.5-48 48-48zm224 224c-61.9 0-112 50.1-112 112s50.1 112 112 112 112-50.1 112-112-50.1-112-112-112zm0 160c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zM392.3.2l31.6-.1c19.4-.1 30.9 21.8 19.7 37.8L77.4 501.6a23.95 23.95 0 0 1-19.6 10.2l-33.4.1c-19.5 0-30.9-21.9-19.7-37.8l368-463.7C377.2 4 384.5.2 392.3.2z\"]\n};\nvar faPercentage = {\n prefix: 'fas',\n iconName: 'percentage',\n icon: [384, 512, [], \"f541\", \"M109.25 173.25c24.99-24.99 24.99-65.52 0-90.51-24.99-24.99-65.52-24.99-90.51 0-24.99 24.99-24.99 65.52 0 90.51 25 25 65.52 25 90.51 0zm256 165.49c-24.99-24.99-65.52-24.99-90.51 0-24.99 24.99-24.99 65.52 0 90.51 24.99 24.99 65.52 24.99 90.51 0 25-24.99 25-65.51 0-90.51zm-1.94-231.43l-22.62-22.62c-12.5-12.5-32.76-12.5-45.25 0L20.69 359.44c-12.5 12.5-12.5 32.76 0 45.25l22.62 22.62c12.5 12.5 32.76 12.5 45.25 0l274.75-274.75c12.5-12.49 12.5-32.75 0-45.25z\"]\n};\nvar faPersonBooth = {\n prefix: 'fas',\n iconName: 'person-booth',\n icon: [576, 512, [], \"f756\", \"M192 496c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V320h-64v176zm32-272h-50.9l-45.2-45.3C115.8 166.6 99.7 160 82.7 160H64c-17.1 0-33.2 6.7-45.3 18.8C6.7 190.9 0 207 0 224.1L.2 320 0 480c0 17.7 14.3 32 31.9 32 17.6 0 32-14.3 32-32l.1-100.7c.9.5 1.6 1.3 2.5 1.7l29.1 43v56c0 17.7 14.3 32 32 32s32-14.3 32-32v-56.5c0-9.9-2.3-19.8-6.7-28.6l-41.2-61.3V253l20.9 20.9c9.1 9.1 21.1 14.1 33.9 14.1H224c17.7 0 32-14.3 32-32s-14.3-32-32-32zM64 128c26.5 0 48-21.5 48-48S90.5 32 64 32 16 53.5 16 80s21.5 48 48 48zm224-96l31.5 223.1-30.9 154.6c-4.3 21.6 13 38.3 31.4 38.3 15.2 0 28-9.1 32.3-30.4.9 16.9 14.6 30.4 31.7 30.4 17.7 0 32-14.3 32-32 0 17.7 14.3 32 32 32s32-14.3 32-32V0H288v32zm-96 0v160h64V0h-32c-17.7 0-32 14.3-32 32zM544 0h-32v496c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V32c0-17.7-14.3-32-32-32z\"]\n};\nvar faPhone = {\n prefix: 'fas',\n iconName: 'phone',\n icon: [512, 512, [], \"f095\", \"M493.4 24.6l-104-24c-11.3-2.6-22.9 3.3-27.5 13.9l-48 112c-4.2 9.8-1.4 21.3 6.9 28l60.6 49.6c-36 76.7-98.9 140.5-177.2 177.2l-49.6-60.6c-6.8-8.3-18.2-11.1-28-6.9l-112 48C3.9 366.5-2 378.1.6 389.4l24 104C27.1 504.2 36.7 512 48 512c256.1 0 464-207.5 464-464 0-11.2-7.7-20.9-18.6-23.4z\"]\n};\nvar faPhoneAlt = {\n prefix: 'fas',\n iconName: 'phone-alt',\n icon: [512, 512, [], \"f879\", \"M497.39 361.8l-112-48a24 24 0 0 0-28 6.9l-49.6 60.6A370.66 370.66 0 0 1 130.6 204.11l60.6-49.6a23.94 23.94 0 0 0 6.9-28l-48-112A24.16 24.16 0 0 0 122.6.61l-104 24A24 24 0 0 0 0 48c0 256.5 207.9 464 464 464a24 24 0 0 0 23.4-18.6l24-104a24.29 24.29 0 0 0-14.01-27.6z\"]\n};\nvar faPhoneSlash = {\n prefix: 'fas',\n iconName: 'phone-slash',\n icon: [640, 512, [], \"f3dd\", \"M268.2 381.4l-49.6-60.6c-6.8-8.3-18.2-11.1-28-6.9l-112 48c-10.7 4.6-16.5 16.1-13.9 27.5l24 104c2.5 10.8 12.1 18.6 23.4 18.6 100.7 0 193.7-32.4 269.7-86.9l-80-61.8c-10.9 6.5-22.1 12.7-33.6 18.1zm365.6 76.7L475.1 335.5C537.9 256.4 576 156.9 576 48c0-11.2-7.7-20.9-18.6-23.4l-104-24c-11.3-2.6-22.9 3.3-27.5 13.9l-48 112c-4.2 9.8-1.4 21.3 6.9 28l60.6 49.6c-12.2 26.1-27.9 50.3-46 72.8L45.5 3.4C38.5-2 28.5-.8 23 6.2L3.4 31.4c-5.4 7-4.2 17 2.8 22.4l588.4 454.7c7 5.4 17 4.2 22.5-2.8l19.6-25.3c5.4-6.8 4.1-16.9-2.9-22.3z\"]\n};\nvar faPhoneSquare = {\n prefix: 'fas',\n iconName: 'phone-square',\n icon: [448, 512, [], \"f098\", \"M400 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V80c0-26.51-21.49-48-48-48zM94 416c-7.033 0-13.057-4.873-14.616-11.627l-14.998-65a15 15 0 0 1 8.707-17.16l69.998-29.999a15 15 0 0 1 17.518 4.289l30.997 37.885c48.944-22.963 88.297-62.858 110.781-110.78l-37.886-30.997a15.001 15.001 0 0 1-4.289-17.518l30-69.998a15 15 0 0 1 17.16-8.707l65 14.998A14.997 14.997 0 0 1 384 126c0 160.292-129.945 290-290 290z\"]\n};\nvar faPhoneSquareAlt = {\n prefix: 'fas',\n iconName: 'phone-square-alt',\n icon: [448, 512, [], \"f87b\", \"M400 32H48A48 48 0 0 0 0 80v352a48 48 0 0 0 48 48h352a48 48 0 0 0 48-48V80a48 48 0 0 0-48-48zm-16.39 307.37l-15 65A15 15 0 0 1 354 416C194 416 64 286.29 64 126a15.7 15.7 0 0 1 11.63-14.61l65-15A18.23 18.23 0 0 1 144 96a16.27 16.27 0 0 1 13.79 9.09l30 70A17.9 17.9 0 0 1 189 181a17 17 0 0 1-5.5 11.61l-37.89 31a231.91 231.91 0 0 0 110.78 110.78l31-37.89A17 17 0 0 1 299 291a17.85 17.85 0 0 1 5.91 1.21l70 30A16.25 16.25 0 0 1 384 336a17.41 17.41 0 0 1-.39 3.37z\"]\n};\nvar faPhoneVolume = {\n prefix: 'fas',\n iconName: 'phone-volume',\n icon: [384, 512, [], \"f2a0\", \"M97.333 506.966c-129.874-129.874-129.681-340.252 0-469.933 5.698-5.698 14.527-6.632 21.263-2.422l64.817 40.513a17.187 17.187 0 0 1 6.849 20.958l-32.408 81.021a17.188 17.188 0 0 1-17.669 10.719l-55.81-5.58c-21.051 58.261-20.612 122.471 0 179.515l55.811-5.581a17.188 17.188 0 0 1 17.669 10.719l32.408 81.022a17.188 17.188 0 0 1-6.849 20.958l-64.817 40.513a17.19 17.19 0 0 1-21.264-2.422zM247.126 95.473c11.832 20.047 11.832 45.008 0 65.055-3.95 6.693-13.108 7.959-18.718 2.581l-5.975-5.726c-3.911-3.748-4.793-9.622-2.261-14.41a32.063 32.063 0 0 0 0-29.945c-2.533-4.788-1.65-10.662 2.261-14.41l5.975-5.726c5.61-5.378 14.768-4.112 18.718 2.581zm91.787-91.187c60.14 71.604 60.092 175.882 0 247.428-4.474 5.327-12.53 5.746-17.552.933l-5.798-5.557c-4.56-4.371-4.977-11.529-.93-16.379 49.687-59.538 49.646-145.933 0-205.422-4.047-4.85-3.631-12.008.93-16.379l5.798-5.557c5.022-4.813 13.078-4.394 17.552.933zm-45.972 44.941c36.05 46.322 36.108 111.149 0 157.546-4.39 5.641-12.697 6.251-17.856 1.304l-5.818-5.579c-4.4-4.219-4.998-11.095-1.285-15.931 26.536-34.564 26.534-82.572 0-117.134-3.713-4.836-3.115-11.711 1.285-15.931l5.818-5.579c5.159-4.947 13.466-4.337 17.856 1.304z\"]\n};\nvar faPhotoVideo = {\n prefix: 'fas',\n iconName: 'photo-video',\n icon: [640, 512, [], \"f87c\", \"M608 0H160a32 32 0 0 0-32 32v96h160V64h192v320h128a32 32 0 0 0 32-32V32a32 32 0 0 0-32-32zM232 103a9 9 0 0 1-9 9h-30a9 9 0 0 1-9-9V73a9 9 0 0 1 9-9h30a9 9 0 0 1 9 9zm352 208a9 9 0 0 1-9 9h-30a9 9 0 0 1-9-9v-30a9 9 0 0 1 9-9h30a9 9 0 0 1 9 9zm0-104a9 9 0 0 1-9 9h-30a9 9 0 0 1-9-9v-30a9 9 0 0 1 9-9h30a9 9 0 0 1 9 9zm0-104a9 9 0 0 1-9 9h-30a9 9 0 0 1-9-9V73a9 9 0 0 1 9-9h30a9 9 0 0 1 9 9zm-168 57H32a32 32 0 0 0-32 32v288a32 32 0 0 0 32 32h384a32 32 0 0 0 32-32V192a32 32 0 0 0-32-32zM96 224a32 32 0 1 1-32 32 32 32 0 0 1 32-32zm288 224H64v-32l64-64 32 32 128-128 96 96z\"]\n};\nvar faPiggyBank = {\n prefix: 'fas',\n iconName: 'piggy-bank',\n icon: [576, 512, [], \"f4d3\", \"M560 224h-29.5c-8.8-20-21.6-37.7-37.4-52.5L512 96h-32c-29.4 0-55.4 13.5-73 34.3-7.6-1.1-15.1-2.3-23-2.3H256c-77.4 0-141.9 55-156.8 128H56c-14.8 0-26.5-13.5-23.5-28.8C34.7 215.8 45.4 208 57 208h1c3.3 0 6-2.7 6-6v-20c0-3.3-2.7-6-6-6-28.5 0-53.9 20.4-57.5 48.6C-3.9 258.8 22.7 288 56 288h40c0 52.2 25.4 98.1 64 127.3V496c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16v-48h128v48c0 8.8 7.2 16 16 16h64c8.8 0 16-7.2 16-16v-80.7c11.8-8.9 22.3-19.4 31.3-31.3H560c8.8 0 16-7.2 16-16V240c0-8.8-7.2-16-16-16zm-128 64c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zM256 96h128c5.4 0 10.7.4 15.9.8 0-.3.1-.5.1-.8 0-53-43-96-96-96s-96 43-96 96c0 2.1.5 4.1.6 6.2 15.2-3.9 31-6.2 47.4-6.2z\"]\n};\nvar faPills = {\n prefix: 'fas',\n iconName: 'pills',\n icon: [576, 512, [], \"f484\", \"M112 32C50.1 32 0 82.1 0 144v224c0 61.9 50.1 112 112 112s112-50.1 112-112V144c0-61.9-50.1-112-112-112zm48 224H64V144c0-26.5 21.5-48 48-48s48 21.5 48 48v112zm139.7-29.7c-3.5-3.5-9.4-3.1-12.3.8-45.3 62.5-40.4 150.1 15.9 206.4 56.3 56.3 143.9 61.2 206.4 15.9 4-2.9 4.3-8.8.8-12.3L299.7 226.3zm229.8-19c-56.3-56.3-143.9-61.2-206.4-15.9-4 2.9-4.3 8.8-.8 12.3l210.8 210.8c3.5 3.5 9.4 3.1 12.3-.8 45.3-62.6 40.5-150.1-15.9-206.4z\"]\n};\nvar faPizzaSlice = {\n prefix: 'fas',\n iconName: 'pizza-slice',\n icon: [512, 512, [], \"f818\", \"M158.87.15c-16.16-1.52-31.2 8.42-35.33 24.12l-14.81 56.27c187.62 5.49 314.54 130.61 322.48 317l56.94-15.78c15.72-4.36 25.49-19.68 23.62-35.9C490.89 165.08 340.78 17.32 158.87.15zm-58.47 112L.55 491.64a16.21 16.21 0 0 0 20 19.75l379-105.1c-4.27-174.89-123.08-292.14-299.15-294.1zM128 416a32 32 0 1 1 32-32 32 32 0 0 1-32 32zm48-152a32 32 0 1 1 32-32 32 32 0 0 1-32 32zm104 104a32 32 0 1 1 32-32 32 32 0 0 1-32 32z\"]\n};\nvar faPlaceOfWorship = {\n prefix: 'fas',\n iconName: 'place-of-worship',\n icon: [640, 512, [], \"f67f\", \"M620.61 366.55L512 320v192h112c8.84 0 16-7.16 16-16V395.96a32 32 0 0 0-19.39-29.41zM0 395.96V496c0 8.84 7.16 16 16 16h112V320L19.39 366.55A32 32 0 0 0 0 395.96zm464.46-149.28L416 217.6V102.63c0-8.49-3.37-16.62-9.38-22.63L331.31 4.69c-6.25-6.25-16.38-6.25-22.62 0L233.38 80c-6 6-9.38 14.14-9.38 22.63V217.6l-48.46 29.08A31.997 31.997 0 0 0 160 274.12V512h96v-96c0-35.35 28.66-64 64-64s64 28.65 64 64v96h96V274.12c0-11.24-5.9-21.66-15.54-27.44z\"]\n};\nvar faPlane = {\n prefix: 'fas',\n iconName: 'plane',\n icon: [576, 512, [], \"f072\", \"M480 192H365.71L260.61 8.06A16.014 16.014 0 0 0 246.71 0h-65.5c-10.63 0-18.3 10.17-15.38 20.39L214.86 192H112l-43.2-57.6c-3.02-4.03-7.77-6.4-12.8-6.4H16.01C5.6 128-2.04 137.78.49 147.88L32 256 .49 364.12C-2.04 374.22 5.6 384 16.01 384H56c5.04 0 9.78-2.37 12.8-6.4L112 320h102.86l-49.03 171.6c-2.92 10.22 4.75 20.4 15.38 20.4h65.5c5.74 0 11.04-3.08 13.89-8.06L365.71 320H480c35.35 0 96-28.65 96-64s-60.65-64-96-64z\"]\n};\nvar faPlaneArrival = {\n prefix: 'fas',\n iconName: 'plane-arrival',\n icon: [640, 512, [], \"f5af\", \"M624 448H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h608c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zM44.81 205.66l88.74 80a62.607 62.607 0 0 0 25.47 13.93l287.6 78.35c26.48 7.21 54.56 8.72 81 1.36 29.67-8.27 43.44-21.21 47.25-35.71 3.83-14.5-1.73-32.71-23.37-54.96-19.28-19.82-44.35-32.79-70.83-40l-97.51-26.56L282.8 30.22c-1.51-5.81-5.95-10.35-11.66-11.91L206.05.58c-10.56-2.88-20.9 5.32-20.71 16.44l47.92 164.21-102.2-27.84-27.59-67.88c-1.93-4.89-6.01-8.57-11.02-9.93L52.72 64.75c-10.34-2.82-20.53 5-20.72 15.88l.23 101.78c.19 8.91 6.03 17.34 12.58 23.25z\"]\n};\nvar faPlaneDeparture = {\n prefix: 'fas',\n iconName: 'plane-departure',\n icon: [640, 512, [], \"f5b0\", \"M624 448H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h608c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zM80.55 341.27c6.28 6.84 15.1 10.72 24.33 10.71l130.54-.18a65.62 65.62 0 0 0 29.64-7.12l290.96-147.65c26.74-13.57 50.71-32.94 67.02-58.31 18.31-28.48 20.3-49.09 13.07-63.65-7.21-14.57-24.74-25.27-58.25-27.45-29.85-1.94-59.54 5.92-86.28 19.48l-98.51 49.99-218.7-82.06a17.799 17.799 0 0 0-18-1.11L90.62 67.29c-10.67 5.41-13.25 19.65-5.17 28.53l156.22 98.1-103.21 52.38-72.35-36.47a17.804 17.804 0 0 0-16.07.02L9.91 230.22c-10.44 5.3-13.19 19.12-5.57 28.08l76.21 82.97z\"]\n};\nvar faPlay = {\n prefix: 'fas',\n iconName: 'play',\n icon: [448, 512, [], \"f04b\", \"M424.4 214.7L72.4 6.6C43.8-10.3 0 6.1 0 47.9V464c0 37.5 40.7 60.1 72.4 41.3l352-208c31.4-18.5 31.5-64.1 0-82.6z\"]\n};\nvar faPlayCircle = {\n prefix: 'fas',\n iconName: 'play-circle',\n icon: [512, 512, [], \"f144\", \"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm115.7 272l-176 101c-15.8 8.8-35.7-2.5-35.7-21V152c0-18.4 19.8-29.8 35.7-21l176 107c16.4 9.2 16.4 32.9 0 42z\"]\n};\nvar faPlug = {\n prefix: 'fas',\n iconName: 'plug',\n icon: [384, 512, [], \"f1e6\", \"M320,32a32,32,0,0,0-64,0v96h64Zm48,128H16A16,16,0,0,0,0,176v32a16,16,0,0,0,16,16H32v32A160.07,160.07,0,0,0,160,412.8V512h64V412.8A160.07,160.07,0,0,0,352,256V224h16a16,16,0,0,0,16-16V176A16,16,0,0,0,368,160ZM128,32a32,32,0,0,0-64,0v96h64Z\"]\n};\nvar faPlus = {\n prefix: 'fas',\n iconName: 'plus',\n icon: [448, 512, [], \"f067\", \"M416 208H272V64c0-17.67-14.33-32-32-32h-32c-17.67 0-32 14.33-32 32v144H32c-17.67 0-32 14.33-32 32v32c0 17.67 14.33 32 32 32h144v144c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32V304h144c17.67 0 32-14.33 32-32v-32c0-17.67-14.33-32-32-32z\"]\n};\nvar faPlusCircle = {\n prefix: 'fas',\n iconName: 'plus-circle',\n icon: [512, 512, [], \"f055\", \"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm144 276c0 6.6-5.4 12-12 12h-92v92c0 6.6-5.4 12-12 12h-56c-6.6 0-12-5.4-12-12v-92h-92c-6.6 0-12-5.4-12-12v-56c0-6.6 5.4-12 12-12h92v-92c0-6.6 5.4-12 12-12h56c6.6 0 12 5.4 12 12v92h92c6.6 0 12 5.4 12 12v56z\"]\n};\nvar faPlusSquare = {\n prefix: 'fas',\n iconName: 'plus-square',\n icon: [448, 512, [], \"f0fe\", \"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-32 252c0 6.6-5.4 12-12 12h-92v92c0 6.6-5.4 12-12 12h-56c-6.6 0-12-5.4-12-12v-92H92c-6.6 0-12-5.4-12-12v-56c0-6.6 5.4-12 12-12h92v-92c0-6.6 5.4-12 12-12h56c6.6 0 12 5.4 12 12v92h92c6.6 0 12 5.4 12 12v56z\"]\n};\nvar faPodcast = {\n prefix: 'fas',\n iconName: 'podcast',\n icon: [448, 512, [], \"f2ce\", \"M267.429 488.563C262.286 507.573 242.858 512 224 512c-18.857 0-38.286-4.427-43.428-23.437C172.927 460.134 160 388.898 160 355.75c0-35.156 31.142-43.75 64-43.75s64 8.594 64 43.75c0 32.949-12.871 104.179-20.571 132.813zM156.867 288.554c-18.693-18.308-29.958-44.173-28.784-72.599 2.054-49.724 42.395-89.956 92.124-91.881C274.862 121.958 320 165.807 320 220c0 26.827-11.064 51.116-28.866 68.552-2.675 2.62-2.401 6.986.628 9.187 9.312 6.765 16.46 15.343 21.234 25.363 1.741 3.654 6.497 4.66 9.449 1.891 28.826-27.043 46.553-65.783 45.511-108.565-1.855-76.206-63.595-138.208-139.793-140.369C146.869 73.753 80 139.215 80 220c0 41.361 17.532 78.7 45.55 104.989 2.953 2.771 7.711 1.77 9.453-1.887 4.774-10.021 11.923-18.598 21.235-25.363 3.029-2.2 3.304-6.566.629-9.185zM224 0C100.204 0 0 100.185 0 224c0 89.992 52.602 165.647 125.739 201.408 4.333 2.118 9.267-1.544 8.535-6.31-2.382-15.512-4.342-30.946-5.406-44.339-.146-1.836-1.149-3.486-2.678-4.512-47.4-31.806-78.564-86.016-78.187-147.347.592-96.237 79.29-174.648 175.529-174.899C320.793 47.747 400 126.797 400 224c0 61.932-32.158 116.49-80.65 147.867-.999 14.037-3.069 30.588-5.624 47.23-.732 4.767 4.203 8.429 8.535 6.31C395.227 389.727 448 314.187 448 224 448 100.205 347.815 0 224 0zm0 160c-35.346 0-64 28.654-64 64s28.654 64 64 64 64-28.654 64-64-28.654-64-64-64z\"]\n};\nvar faPoll = {\n prefix: 'fas',\n iconName: 'poll',\n icon: [448, 512, [], \"f681\", \"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zM160 368c0 8.84-7.16 16-16 16h-32c-8.84 0-16-7.16-16-16V240c0-8.84 7.16-16 16-16h32c8.84 0 16 7.16 16 16v128zm96 0c0 8.84-7.16 16-16 16h-32c-8.84 0-16-7.16-16-16V144c0-8.84 7.16-16 16-16h32c8.84 0 16 7.16 16 16v224zm96 0c0 8.84-7.16 16-16 16h-32c-8.84 0-16-7.16-16-16v-64c0-8.84 7.16-16 16-16h32c8.84 0 16 7.16 16 16v64z\"]\n};\nvar faPollH = {\n prefix: 'fas',\n iconName: 'poll-h',\n icon: [448, 512, [], \"f682\", \"M448 432V80c0-26.5-21.5-48-48-48H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48zM112 192c-8.84 0-16-7.16-16-16v-32c0-8.84 7.16-16 16-16h128c8.84 0 16 7.16 16 16v32c0 8.84-7.16 16-16 16H112zm0 96c-8.84 0-16-7.16-16-16v-32c0-8.84 7.16-16 16-16h224c8.84 0 16 7.16 16 16v32c0 8.84-7.16 16-16 16H112zm0 96c-8.84 0-16-7.16-16-16v-32c0-8.84 7.16-16 16-16h64c8.84 0 16 7.16 16 16v32c0 8.84-7.16 16-16 16h-64z\"]\n};\nvar faPoo = {\n prefix: 'fas',\n iconName: 'poo',\n icon: [512, 512, [], \"f2fe\", \"M451.4 369.1C468.7 356 480 335.4 480 312c0-39.8-32.2-72-72-72h-14.1c13.4-11.7 22.1-28.8 22.1-48 0-35.3-28.7-64-64-64h-5.9c3.6-10.1 5.9-20.7 5.9-32 0-53-43-96-96-96-5.2 0-10.2.7-15.1 1.5C250.3 14.6 256 30.6 256 48c0 44.2-35.8 80-80 80h-16c-35.3 0-64 28.7-64 64 0 19.2 8.7 36.3 22.1 48H104c-39.8 0-72 32.2-72 72 0 23.4 11.3 44 28.6 57.1C26.3 374.6 0 404.1 0 440c0 39.8 32.2 72 72 72h368c39.8 0 72-32.2 72-72 0-35.9-26.3-65.4-60.6-70.9zM192 256c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm159.5 139C341 422.9 293 448 256 448s-85-25.1-95.5-53c-2-5.3 2-11 7.8-11h175.4c5.8 0 9.8 5.7 7.8 11zM320 320c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z\"]\n};\nvar faPooStorm = {\n prefix: 'fas',\n iconName: 'poo-storm',\n icon: [448, 512, [], \"f75a\", \"M308 336h-57.7l17.3-64.9c2-7.6-3.7-15.1-11.6-15.1h-68c-6 0-11.1 4.5-11.9 10.4l-16 120c-1 7.2 4.6 13.6 11.9 13.6h59.3l-23 97.2c-1.8 7.6 4 14.8 11.7 14.8 4.2 0 8.2-2.2 10.4-6l88-152c4.6-8-1.2-18-10.4-18zm66.4-111.3c5.9-9.6 9.6-20.6 9.6-32.7 0-35.3-28.7-64-64-64h-5.9c3.6-10.1 5.9-20.7 5.9-32 0-53-43-96-96-96-5.2 0-10.2.7-15.1 1.5C218.3 14.6 224 30.6 224 48c0 44.2-35.8 80-80 80h-16c-35.3 0-64 28.7-64 64 0 12.1 3.7 23.1 9.6 32.7C32.6 228 0 262.2 0 304c0 44 36 80 80 80h48.3c.1-.6 0-1.2 0-1.8l16-120c3-21.8 21.7-38.2 43.7-38.2h68c13.8 0 26.5 6.3 34.9 17.2s11.2 24.8 7.6 38.1l-6.6 24.7h16c15.7 0 30.3 8.4 38.1 22 7.8 13.6 7.8 30.5 0 44l-8.1 14h30c44 0 80-36 80-80 .1-41.8-32.5-76-73.5-79.3z\"]\n};\nvar faPoop = {\n prefix: 'fas',\n iconName: 'poop',\n icon: [512, 512, [], \"f619\", \"M451.36 369.14C468.66 355.99 480 335.41 480 312c0-39.77-32.24-72-72-72h-14.07c13.42-11.73 22.07-28.78 22.07-48 0-35.35-28.65-64-64-64h-5.88c3.57-10.05 5.88-20.72 5.88-32 0-53.02-42.98-96-96-96-5.17 0-10.15.74-15.11 1.52C250.31 14.64 256 30.62 256 48c0 44.18-35.82 80-80 80h-16c-35.35 0-64 28.65-64 64 0 19.22 8.65 36.27 22.07 48H104c-39.76 0-72 32.23-72 72 0 23.41 11.34 43.99 28.64 57.14C26.31 374.62 0 404.12 0 440c0 39.76 32.24 72 72 72h368c39.76 0 72-32.24 72-72 0-35.88-26.31-65.38-60.64-70.86z\"]\n};\nvar faPortrait = {\n prefix: 'fas',\n iconName: 'portrait',\n icon: [384, 512, [], \"f3e0\", \"M336 0H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zM192 128c35.3 0 64 28.7 64 64s-28.7 64-64 64-64-28.7-64-64 28.7-64 64-64zm112 236.8c0 10.6-10 19.2-22.4 19.2H102.4C90 384 80 375.4 80 364.8v-19.2c0-31.8 30.1-57.6 67.2-57.6h5c12.3 5.1 25.7 8 39.8 8s27.6-2.9 39.8-8h5c37.1 0 67.2 25.8 67.2 57.6v19.2z\"]\n};\nvar faPoundSign = {\n prefix: 'fas',\n iconName: 'pound-sign',\n icon: [320, 512, [], \"f154\", \"M308 352h-45.495c-6.627 0-12 5.373-12 12v50.848H128V288h84c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-84v-63.556c0-32.266 24.562-57.086 61.792-57.086 23.658 0 45.878 11.505 57.652 18.849 5.151 3.213 11.888 2.051 15.688-2.685l28.493-35.513c4.233-5.276 3.279-13.005-2.119-17.081C273.124 54.56 236.576 32 187.931 32 106.026 32 48 84.742 48 157.961V224H20c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h28v128H12c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h296c6.627 0 12-5.373 12-12V364c0-6.627-5.373-12-12-12z\"]\n};\nvar faPowerOff = {\n prefix: 'fas',\n iconName: 'power-off',\n icon: [512, 512, [], \"f011\", \"M400 54.1c63 45 104 118.6 104 201.9 0 136.8-110.8 247.7-247.5 248C120 504.3 8.2 393 8 256.4 7.9 173.1 48.9 99.3 111.8 54.2c11.7-8.3 28-4.8 35 7.7L162.6 90c5.9 10.5 3.1 23.8-6.6 31-41.5 30.8-68 79.6-68 134.9-.1 92.3 74.5 168.1 168 168.1 91.6 0 168.6-74.2 168-169.1-.3-51.8-24.7-101.8-68.1-134-9.7-7.2-12.4-20.5-6.5-30.9l15.8-28.1c7-12.4 23.2-16.1 34.8-7.8zM296 264V24c0-13.3-10.7-24-24-24h-32c-13.3 0-24 10.7-24 24v240c0 13.3 10.7 24 24 24h32c13.3 0 24-10.7 24-24z\"]\n};\nvar faPray = {\n prefix: 'fas',\n iconName: 'pray',\n icon: [384, 512, [], \"f683\", \"M256 128c35.35 0 64-28.65 64-64S291.35 0 256 0s-64 28.65-64 64 28.65 64 64 64zm-30.63 169.75c14.06 16.72 39 19.09 55.97 5.22l88-72.02c17.09-13.98 19.59-39.19 5.62-56.28-13.97-17.11-39.19-19.59-56.31-5.62l-57.44 47-38.91-46.31c-15.44-18.39-39.22-27.92-64-25.33-24.19 2.48-45.25 16.27-56.37 36.92l-49.37 92.03c-23.4 43.64-8.69 96.37 34.19 123.75L131.56 432H40c-22.09 0-40 17.91-40 40s17.91 40 40 40h208c34.08 0 53.77-42.79 28.28-68.28L166.42 333.86l34.8-64.87 24.15 28.76z\"]\n};\nvar faPrayingHands = {\n prefix: 'fas',\n iconName: 'praying-hands',\n icon: [640, 512, [], \"f684\", \"M272 191.91c-17.6 0-32 14.4-32 32v80c0 8.84-7.16 16-16 16s-16-7.16-16-16v-76.55c0-17.39 4.72-34.47 13.69-49.39l77.75-129.59c9.09-15.16 4.19-34.81-10.97-43.91-14.45-8.67-32.72-4.3-42.3 9.21-.2.23-.62.21-.79.48l-117.26 175.9C117.56 205.9 112 224.31 112 243.29v80.23l-90.12 30.04A31.974 31.974 0 0 0 0 383.91v96c0 10.82 8.52 32 32 32 2.69 0 5.41-.34 8.06-1.03l179.19-46.62C269.16 449.99 304 403.8 304 351.91v-128c0-17.6-14.4-32-32-32zm346.12 161.73L528 323.6v-80.23c0-18.98-5.56-37.39-16.12-53.23L394.62 14.25c-.18-.27-.59-.24-.79-.48-9.58-13.51-27.85-17.88-42.3-9.21-15.16 9.09-20.06 28.75-10.97 43.91l77.75 129.59c8.97 14.92 13.69 32 13.69 49.39V304c0 8.84-7.16 16-16 16s-16-7.16-16-16v-80c0-17.6-14.4-32-32-32s-32 14.4-32 32v128c0 51.89 34.84 98.08 84.75 112.34l179.19 46.62c2.66.69 5.38 1.03 8.06 1.03 23.48 0 32-21.18 32-32v-96c0-13.77-8.81-25.99-21.88-30.35z\"]\n};\nvar faPrescription = {\n prefix: 'fas',\n iconName: 'prescription',\n icon: [384, 512, [], \"f5b1\", \"M301.26 352l78.06-78.06c6.25-6.25 6.25-16.38 0-22.63l-22.63-22.63c-6.25-6.25-16.38-6.25-22.63 0L256 306.74l-83.96-83.96C219.31 216.8 256 176.89 256 128c0-53.02-42.98-96-96-96H16C7.16 32 0 39.16 0 48v256c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-80h18.75l128 128-78.06 78.06c-6.25 6.25-6.25 16.38 0 22.63l22.63 22.63c6.25 6.25 16.38 6.25 22.63 0L256 397.25l78.06 78.06c6.25 6.25 16.38 6.25 22.63 0l22.63-22.63c6.25-6.25 6.25-16.38 0-22.63L301.26 352zM64 96h96c17.64 0 32 14.36 32 32s-14.36 32-32 32H64V96z\"]\n};\nvar faPrescriptionBottle = {\n prefix: 'fas',\n iconName: 'prescription-bottle',\n icon: [384, 512, [], \"f485\", \"M32 192h120c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H32v64h120c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H32v64h120c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H32v64c0 17.6 14.4 32 32 32h256c17.6 0 32-14.4 32-32V128H32v64zM360 0H24C10.8 0 0 10.8 0 24v48c0 13.2 10.8 24 24 24h336c13.2 0 24-10.8 24-24V24c0-13.2-10.8-24-24-24z\"]\n};\nvar faPrescriptionBottleAlt = {\n prefix: 'fas',\n iconName: 'prescription-bottle-alt',\n icon: [384, 512, [], \"f486\", \"M360 0H24C10.8 0 0 10.8 0 24v48c0 13.2 10.8 24 24 24h336c13.2 0 24-10.8 24-24V24c0-13.2-10.8-24-24-24zM32 480c0 17.6 14.4 32 32 32h256c17.6 0 32-14.4 32-32V128H32v352zm64-184c0-4.4 3.6-8 8-8h56v-56c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v56h56c4.4 0 8 3.6 8 8v48c0 4.4-3.6 8-8 8h-56v56c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-56h-56c-4.4 0-8-3.6-8-8v-48z\"]\n};\nvar faPrint = {\n prefix: 'fas',\n iconName: 'print',\n icon: [512, 512, [], \"f02f\", \"M448 192V77.25c0-8.49-3.37-16.62-9.37-22.63L393.37 9.37c-6-6-14.14-9.37-22.63-9.37H96C78.33 0 64 14.33 64 32v160c-35.35 0-64 28.65-64 64v112c0 8.84 7.16 16 16 16h48v96c0 17.67 14.33 32 32 32h320c17.67 0 32-14.33 32-32v-96h48c8.84 0 16-7.16 16-16V256c0-35.35-28.65-64-64-64zm-64 256H128v-96h256v96zm0-224H128V64h192v48c0 8.84 7.16 16 16 16h48v96zm48 72c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24z\"]\n};\nvar faProcedures = {\n prefix: 'fas',\n iconName: 'procedures',\n icon: [640, 512, [], \"f487\", \"M528 224H272c-8.8 0-16 7.2-16 16v144H64V144c0-8.8-7.2-16-16-16H16c-8.8 0-16 7.2-16 16v352c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-48h512v48c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V336c0-61.9-50.1-112-112-112zM136 96h126.1l27.6 55.2c5.9 11.8 22.7 11.8 28.6 0L368 51.8 390.1 96H512c8.8 0 16-7.2 16-16s-7.2-16-16-16H409.9L382.3 8.8C376.4-3 359.6-3 353.7 8.8L304 108.2l-19.9-39.8c-1.4-2.7-4.1-4.4-7.2-4.4H136c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8zm24 256c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64z\"]\n};\nvar faProjectDiagram = {\n prefix: 'fas',\n iconName: 'project-diagram',\n icon: [640, 512, [], \"f542\", \"M384 320H256c-17.67 0-32 14.33-32 32v128c0 17.67 14.33 32 32 32h128c17.67 0 32-14.33 32-32V352c0-17.67-14.33-32-32-32zM192 32c0-17.67-14.33-32-32-32H32C14.33 0 0 14.33 0 32v128c0 17.67 14.33 32 32 32h95.72l73.16 128.04C211.98 300.98 232.4 288 256 288h.28L192 175.51V128h224V64H192V32zM608 0H480c-17.67 0-32 14.33-32 32v128c0 17.67 14.33 32 32 32h128c17.67 0 32-14.33 32-32V32c0-17.67-14.33-32-32-32z\"]\n};\nvar faPuzzlePiece = {\n prefix: 'fas',\n iconName: 'puzzle-piece',\n icon: [576, 512, [], \"f12e\", \"M519.442 288.651c-41.519 0-59.5 31.593-82.058 31.593C377.409 320.244 432 144 432 144s-196.288 80-196.288-3.297c0-35.827 36.288-46.25 36.288-85.985C272 19.216 243.885 0 210.539 0c-34.654 0-66.366 18.891-66.366 56.346 0 41.364 31.711 59.277 31.711 81.75C175.885 207.719 0 166.758 0 166.758v333.237s178.635 41.047 178.635-28.662c0-22.473-40-40.107-40-81.471 0-37.456 29.25-56.346 63.577-56.346 33.673 0 61.788 19.216 61.788 54.717 0 39.735-36.288 50.158-36.288 85.985 0 60.803 129.675 25.73 181.23 25.73 0 0-34.725-120.101 25.827-120.101 35.962 0 46.423 36.152 86.308 36.152C556.712 416 576 387.99 576 354.443c0-34.199-18.962-65.792-56.558-65.792z\"]\n};\nvar faQrcode = {\n prefix: 'fas',\n iconName: 'qrcode',\n icon: [448, 512, [], \"f029\", \"M0 224h192V32H0v192zM64 96h64v64H64V96zm192-64v192h192V32H256zm128 128h-64V96h64v64zM0 480h192V288H0v192zm64-128h64v64H64v-64zm352-64h32v128h-96v-32h-32v96h-64V288h96v32h64v-32zm0 160h32v32h-32v-32zm-64 0h32v32h-32v-32z\"]\n};\nvar faQuestion = {\n prefix: 'fas',\n iconName: 'question',\n icon: [384, 512, [], \"f128\", \"M202.021 0C122.202 0 70.503 32.703 29.914 91.026c-7.363 10.58-5.093 25.086 5.178 32.874l43.138 32.709c10.373 7.865 25.132 6.026 33.253-4.148 25.049-31.381 43.63-49.449 82.757-49.449 30.764 0 68.816 19.799 68.816 49.631 0 22.552-18.617 34.134-48.993 51.164-35.423 19.86-82.299 44.576-82.299 106.405V320c0 13.255 10.745 24 24 24h72.471c13.255 0 24-10.745 24-24v-5.773c0-42.86 125.268-44.645 125.268-160.627C377.504 66.256 286.902 0 202.021 0zM192 373.459c-38.196 0-69.271 31.075-69.271 69.271 0 38.195 31.075 69.27 69.271 69.27s69.271-31.075 69.271-69.271-31.075-69.27-69.271-69.27z\"]\n};\nvar faQuestionCircle = {\n prefix: 'fas',\n iconName: 'question-circle',\n icon: [512, 512, [], \"f059\", \"M504 256c0 136.997-111.043 248-248 248S8 392.997 8 256C8 119.083 119.043 8 256 8s248 111.083 248 248zM262.655 90c-54.497 0-89.255 22.957-116.549 63.758-3.536 5.286-2.353 12.415 2.715 16.258l34.699 26.31c5.205 3.947 12.621 3.008 16.665-2.122 17.864-22.658 30.113-35.797 57.303-35.797 20.429 0 45.698 13.148 45.698 32.958 0 14.976-12.363 22.667-32.534 33.976C247.128 238.528 216 254.941 216 296v4c0 6.627 5.373 12 12 12h56c6.627 0 12-5.373 12-12v-1.333c0-28.462 83.186-29.647 83.186-106.667 0-58.002-60.165-102-116.531-102zM256 338c-25.365 0-46 20.635-46 46 0 25.364 20.635 46 46 46s46-20.636 46-46c0-25.365-20.635-46-46-46z\"]\n};\nvar faQuidditch = {\n prefix: 'fas',\n iconName: 'quidditch',\n icon: [640, 512, [], \"f458\", \"M256.5 216.8L343.2 326s-16.6 102.4-76.6 150.1C206.7 523.8 0 510.2 0 510.2s3.8-23.1 11-55.4l94.6-112.2c4-4.7-.9-11.6-6.6-9.5l-60.4 22.1c14.4-41.7 32.7-80 54.6-97.5 59.9-47.8 163.3-40.9 163.3-40.9zm238 135c-44 0-79.8 35.8-79.8 79.9 0 44.1 35.7 79.9 79.8 79.9 44.1 0 79.8-35.8 79.8-79.9 0-44.2-35.8-79.9-79.8-79.9zM636.5 31L616.7 6c-5.5-6.9-15.5-8-22.4-2.6L361.8 181.3l-34.1-43c-5.1-6.4-15.1-5.2-18.6 2.2l-25.3 54.6 86.7 109.2 58.8-12.4c8-1.7 11.4-11.2 6.3-17.6l-34.1-42.9L634 53.5c6.9-5.5 8-15.6 2.5-22.5z\"]\n};\nvar faQuoteLeft = {\n prefix: 'fas',\n iconName: 'quote-left',\n icon: [512, 512, [], \"f10d\", \"M464 256h-80v-64c0-35.3 28.7-64 64-64h8c13.3 0 24-10.7 24-24V56c0-13.3-10.7-24-24-24h-8c-88.4 0-160 71.6-160 160v240c0 26.5 21.5 48 48 48h128c26.5 0 48-21.5 48-48V304c0-26.5-21.5-48-48-48zm-288 0H96v-64c0-35.3 28.7-64 64-64h8c13.3 0 24-10.7 24-24V56c0-13.3-10.7-24-24-24h-8C71.6 32 0 103.6 0 192v240c0 26.5 21.5 48 48 48h128c26.5 0 48-21.5 48-48V304c0-26.5-21.5-48-48-48z\"]\n};\nvar faQuoteRight = {\n prefix: 'fas',\n iconName: 'quote-right',\n icon: [512, 512, [], \"f10e\", \"M464 32H336c-26.5 0-48 21.5-48 48v128c0 26.5 21.5 48 48 48h80v64c0 35.3-28.7 64-64 64h-8c-13.3 0-24 10.7-24 24v48c0 13.3 10.7 24 24 24h8c88.4 0 160-71.6 160-160V80c0-26.5-21.5-48-48-48zm-288 0H48C21.5 32 0 53.5 0 80v128c0 26.5 21.5 48 48 48h80v64c0 35.3-28.7 64-64 64h-8c-13.3 0-24 10.7-24 24v48c0 13.3 10.7 24 24 24h8c88.4 0 160-71.6 160-160V80c0-26.5-21.5-48-48-48z\"]\n};\nvar faQuran = {\n prefix: 'fas',\n iconName: 'quran',\n icon: [448, 512, [], \"f687\", \"M448 358.4V25.6c0-16-9.6-25.6-25.6-25.6H96C41.6 0 0 41.6 0 96v320c0 54.4 41.6 96 96 96h326.4c12.8 0 25.6-9.6 25.6-25.6v-16c0-6.4-3.2-12.8-9.6-19.2-3.2-16-3.2-60.8 0-73.6 6.4-3.2 9.6-9.6 9.6-19.2zM301.08 145.82c.6-1.21 1.76-1.82 2.92-1.82s2.32.61 2.92 1.82l11.18 22.65 25 3.63c2.67.39 3.74 3.67 1.81 5.56l-18.09 17.63 4.27 24.89c.36 2.11-1.31 3.82-3.21 3.82-.5 0-1.02-.12-1.52-.38L304 211.87l-22.36 11.75c-.5.26-1.02.38-1.52.38-1.9 0-3.57-1.71-3.21-3.82l4.27-24.89-18.09-17.63c-1.94-1.89-.87-5.17 1.81-5.56l24.99-3.63 11.19-22.65zm-57.89-69.01c13.67 0 27.26 2.49 40.38 7.41a6.775 6.775 0 1 1-2.38 13.12c-.67 0-3.09-.21-4.13-.21-52.31 0-94.86 42.55-94.86 94.86 0 52.3 42.55 94.86 94.86 94.86 1.03 0 3.48-.21 4.13-.21 3.93 0 6.8 3.14 6.8 6.78 0 2.98-1.94 5.51-4.62 6.42-13.07 4.87-26.59 7.34-40.19 7.34C179.67 307.19 128 255.51 128 192c0-63.52 51.67-115.19 115.19-115.19zM380.8 448H96c-19.2 0-32-12.8-32-32s16-32 32-32h284.8v64z\"]\n};\nvar faRadiation = {\n prefix: 'fas',\n iconName: 'radiation',\n icon: [496, 512, [], \"f7b9\", \"M328.2 255.8h151.6c9.1 0 16.8-7.7 16.2-16.8-5.1-75.8-44.4-142.2-102.5-184.2-7.4-5.3-17.9-2.9-22.7 4.8L290.4 188c22.6 14.3 37.8 39.2 37.8 67.8zm-37.8 67.7c-12.3 7.7-26.8 12.4-42.4 12.4-15.6 0-30-4.7-42.4-12.4L125.2 452c-4.8 7.7-2.4 18.1 5.6 22.4C165.7 493.2 205.6 504 248 504s82.3-10.8 117.2-29.6c8-4.3 10.4-14.8 5.6-22.4l-80.4-128.5zM248 303.8c26.5 0 48-21.5 48-48s-21.5-48-48-48-48 21.5-48 48 21.5 48 48 48zm-231.8-48h151.6c0-28.6 15.2-53.5 37.8-67.7L125.2 59.7c-4.8-7.7-15.3-10.2-22.7-4.8C44.4 96.9 5.1 163.3 0 239.1c-.6 9 7.1 16.7 16.2 16.7z\"]\n};\nvar faRadiationAlt = {\n prefix: 'fas',\n iconName: 'radiation-alt',\n icon: [496, 512, [], \"f7ba\", \"M312 256h79.1c9.2 0 16.9-7.7 16-16.8-4.6-43.6-27-81.8-59.5-107.8-7.6-6.1-18.8-4.5-24 3.8L281.9 202c18 11.2 30.1 31.2 30.1 54zm-97.8 54.1L172.4 377c-4.9 7.8-2.4 18.4 5.8 22.5 21.1 10.4 44.7 16.5 69.8 16.5s48.7-6.1 69.9-16.5c8.2-4.1 10.6-14.7 5.8-22.5l-41.8-66.9c-9.8 6.2-21.4 9.9-33.8 9.9s-24.1-3.7-33.9-9.9zM104.9 256H184c0-22.8 12.1-42.8 30.2-54.1l-41.7-66.8c-5.2-8.3-16.4-9.9-24-3.8-32.6 26-54.9 64.2-59.5 107.8-1.1 9.2 6.7 16.9 15.9 16.9zM248 504c137 0 248-111 248-248S385 8 248 8 0 119 0 256s111 248 248 248zm0-432c101.5 0 184 82.5 184 184s-82.5 184-184 184S64 357.5 64 256 146.5 72 248 72zm0 216c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32z\"]\n};\nvar faRainbow = {\n prefix: 'fas',\n iconName: 'rainbow',\n icon: [576, 512, [], \"f75b\", \"M268.3 32.7C115.4 42.9 0 176.9 0 330.2V464c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V320C64 186.8 180.9 80.3 317.5 97.9 430.4 112.4 512 214 512 327.8V464c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V320c0-165.3-140-298.6-307.7-287.3zm-5.6 96.9C166 142 96 229.1 96 326.7V464c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V320c0-74.8 64.5-134.8 140.8-127.4 66.5 6.5 115.2 66.2 115.2 133.1V464c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V320c0-114.2-100.2-205.4-217.3-190.4zm6.2 96.3c-45.6 8.9-76.9 51.5-76.9 97.9V464c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V320c0-17.6 14.3-32 32-32s32 14.4 32 32v144c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V320c0-59.2-53.8-106-115.1-94.1z\"]\n};\nvar faRandom = {\n prefix: 'fas',\n iconName: 'random',\n icon: [512, 512, [], \"f074\", \"M504.971 359.029c9.373 9.373 9.373 24.569 0 33.941l-80 79.984c-15.01 15.01-40.971 4.49-40.971-16.971V416h-58.785a12.004 12.004 0 0 1-8.773-3.812l-70.556-75.596 53.333-57.143L352 336h32v-39.981c0-21.438 25.943-31.998 40.971-16.971l80 79.981zM12 176h84l52.781 56.551 53.333-57.143-70.556-75.596A11.999 11.999 0 0 0 122.785 96H12c-6.627 0-12 5.373-12 12v56c0 6.627 5.373 12 12 12zm372 0v39.984c0 21.46 25.961 31.98 40.971 16.971l80-79.984c9.373-9.373 9.373-24.569 0-33.941l-80-79.981C409.943 24.021 384 34.582 384 56.019V96h-58.785a12.004 12.004 0 0 0-8.773 3.812L96 336H12c-6.627 0-12 5.373-12 12v56c0 6.627 5.373 12 12 12h110.785c3.326 0 6.503-1.381 8.773-3.812L352 176h32z\"]\n};\nvar faReceipt = {\n prefix: 'fas',\n iconName: 'receipt',\n icon: [384, 512, [], \"f543\", \"M358.4 3.2L320 48 265.6 3.2a15.9 15.9 0 0 0-19.2 0L192 48 137.6 3.2a15.9 15.9 0 0 0-19.2 0L64 48 25.6 3.2C15-4.7 0 2.8 0 16v480c0 13.2 15 20.7 25.6 12.8L64 464l54.4 44.8a15.9 15.9 0 0 0 19.2 0L192 464l54.4 44.8a15.9 15.9 0 0 0 19.2 0L320 464l38.4 44.8c10.5 7.9 25.6.4 25.6-12.8V16c0-13.2-15-20.7-25.6-12.8zM320 360c0 4.4-3.6 8-8 8H72c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h240c4.4 0 8 3.6 8 8v16zm0-96c0 4.4-3.6 8-8 8H72c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h240c4.4 0 8 3.6 8 8v16zm0-96c0 4.4-3.6 8-8 8H72c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h240c4.4 0 8 3.6 8 8v16z\"]\n};\nvar faRecordVinyl = {\n prefix: 'fas',\n iconName: 'record-vinyl',\n icon: [512, 512, [], \"f8d9\", \"M256 152a104 104 0 1 0 104 104 104 104 0 0 0-104-104zm0 128a24 24 0 1 1 24-24 24 24 0 0 1-24 24zm0-272C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm0 376a128 128 0 1 1 128-128 128 128 0 0 1-128 128z\"]\n};\nvar faRecycle = {\n prefix: 'fas',\n iconName: 'recycle',\n icon: [512, 512, [], \"f1b8\", \"M184.561 261.903c3.232 13.997-12.123 24.635-24.068 17.168l-40.736-25.455-50.867 81.402C55.606 356.273 70.96 384 96.012 384H148c6.627 0 12 5.373 12 12v40c0 6.627-5.373 12-12 12H96.115c-75.334 0-121.302-83.048-81.408-146.88l50.822-81.388-40.725-25.448c-12.081-7.547-8.966-25.961 4.879-29.158l110.237-25.45c8.611-1.988 17.201 3.381 19.189 11.99l25.452 110.237zm98.561-182.915l41.289 66.076-40.74 25.457c-12.051 7.528-9 25.953 4.879 29.158l110.237 25.45c8.672 1.999 17.215-3.438 19.189-11.99l25.45-110.237c3.197-13.844-11.99-24.719-24.068-17.168l-40.687 25.424-41.263-66.082c-37.521-60.033-125.209-60.171-162.816 0l-17.963 28.766c-3.51 5.62-1.8 13.021 3.82 16.533l33.919 21.195c5.62 3.512 13.024 1.803 16.536-3.817l17.961-28.743c12.712-20.341 41.973-19.676 54.257-.022zM497.288 301.12l-27.515-44.065c-3.511-5.623-10.916-7.334-16.538-3.821l-33.861 21.159c-5.62 3.512-7.33 10.915-3.818 16.536l27.564 44.112c13.257 21.211-2.057 48.96-27.136 48.96H320V336.02c0-14.213-17.242-21.383-27.313-11.313l-80 79.981c-6.249 6.248-6.249 16.379 0 22.627l80 79.989C302.689 517.308 320 510.3 320 495.989V448h95.88c75.274 0 121.335-82.997 81.408-146.88z\"]\n};\nvar faRedo = {\n prefix: 'fas',\n iconName: 'redo',\n icon: [512, 512, [], \"f01e\", \"M500.33 0h-47.41a12 12 0 0 0-12 12.57l4 82.76A247.42 247.42 0 0 0 256 8C119.34 8 7.9 119.53 8 256.19 8.1 393.07 119.1 504 256 504a247.1 247.1 0 0 0 166.18-63.91 12 12 0 0 0 .48-17.43l-34-34a12 12 0 0 0-16.38-.55A176 176 0 1 1 402.1 157.8l-101.53-4.87a12 12 0 0 0-12.57 12v47.41a12 12 0 0 0 12 12h200.33a12 12 0 0 0 12-12V12a12 12 0 0 0-12-12z\"]\n};\nvar faRedoAlt = {\n prefix: 'fas',\n iconName: 'redo-alt',\n icon: [512, 512, [], \"f2f9\", \"M256.455 8c66.269.119 126.437 26.233 170.859 68.685l35.715-35.715C478.149 25.851 504 36.559 504 57.941V192c0 13.255-10.745 24-24 24H345.941c-21.382 0-32.09-25.851-16.971-40.971l41.75-41.75c-30.864-28.899-70.801-44.907-113.23-45.273-92.398-.798-170.283 73.977-169.484 169.442C88.764 348.009 162.184 424 256 424c41.127 0 79.997-14.678 110.629-41.556 4.743-4.161 11.906-3.908 16.368.553l39.662 39.662c4.872 4.872 4.631 12.815-.482 17.433C378.202 479.813 319.926 504 256 504 119.034 504 8.001 392.967 8 256.002 7.999 119.193 119.646 7.755 256.455 8z\"]\n};\nvar faRegistered = {\n prefix: 'fas',\n iconName: 'registered',\n icon: [512, 512, [], \"f25d\", \"M285.363 207.475c0 18.6-9.831 28.431-28.431 28.431h-29.876v-56.14h23.378c28.668 0 34.929 8.773 34.929 27.709zM504 256c0 136.967-111.033 248-248 248S8 392.967 8 256 119.033 8 256 8s248 111.033 248 248zM363.411 360.414c-46.729-84.825-43.299-78.636-44.702-80.98 23.432-15.172 37.945-42.979 37.945-74.486 0-54.244-31.5-89.252-105.498-89.252h-70.667c-13.255 0-24 10.745-24 24V372c0 13.255 10.745 24 24 24h22.567c13.255 0 24-10.745 24-24v-71.663h25.556l44.129 82.937a24.001 24.001 0 0 0 21.188 12.727h24.464c18.261-.001 29.829-19.591 21.018-35.587z\"]\n};\nvar faRemoveFormat = {\n prefix: 'fas',\n iconName: 'remove-format',\n icon: [640, 512, [], \"f87d\", \"M336 416h-11.17l9.26-27.77L267 336.4 240.49 416H208a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm297.82 42.1L377 259.59 426.17 112H544v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16H176a16 16 0 0 0-16 16v43.9L45.46 3.38A16 16 0 0 0 23 6.19L3.37 31.46a16 16 0 0 0 2.81 22.45l588.36 454.72a16 16 0 0 0 22.46-2.81l19.64-25.27a16 16 0 0 0-2.82-22.45zM309.91 207.76L224 141.36V112h117.83z\"]\n};\nvar faReply = {\n prefix: 'fas',\n iconName: 'reply',\n icon: [512, 512, [], \"f3e5\", \"M8.309 189.836L184.313 37.851C199.719 24.546 224 35.347 224 56.015v80.053c160.629 1.839 288 34.032 288 186.258 0 61.441-39.581 122.309-83.333 154.132-13.653 9.931-33.111-2.533-28.077-18.631 45.344-145.012-21.507-183.51-176.59-185.742V360c0 20.7-24.3 31.453-39.687 18.164l-176.004-152c-11.071-9.562-11.086-26.753 0-36.328z\"]\n};\nvar faReplyAll = {\n prefix: 'fas',\n iconName: 'reply-all',\n icon: [576, 512, [], \"f122\", \"M136.309 189.836L312.313 37.851C327.72 24.546 352 35.348 352 56.015v82.763c129.182 10.231 224 52.212 224 183.548 0 61.441-39.582 122.309-83.333 154.132-13.653 9.931-33.111-2.533-28.077-18.631 38.512-123.162-3.922-169.482-112.59-182.015v84.175c0 20.701-24.3 31.453-39.687 18.164L136.309 226.164c-11.071-9.561-11.086-26.753 0-36.328zm-128 36.328L184.313 378.15C199.7 391.439 224 380.687 224 359.986v-15.818l-108.606-93.785A55.96 55.96 0 0 1 96 207.998a55.953 55.953 0 0 1 19.393-42.38L224 71.832V56.015c0-20.667-24.28-31.469-39.687-18.164L8.309 189.836c-11.086 9.575-11.071 26.767 0 36.328z\"]\n};\nvar faRepublican = {\n prefix: 'fas',\n iconName: 'republican',\n icon: [640, 512, [], \"f75e\", \"M544 192c0-88.4-71.6-160-160-160H160C71.6 32 0 103.6 0 192v64h544v-64zm-367.7-21.6l-19.8 19.3 4.7 27.3c.8 4.9-4.3 8.6-8.7 6.3L128 210.4l-24.5 12.9c-4.3 2.3-9.5-1.4-8.7-6.3l4.7-27.3-19.8-19.3c-3.6-3.5-1.6-9.5 3.3-10.2l27.4-4 12.2-24.8c2.2-4.5 8.6-4.4 10.7 0l12.2 24.8 27.4 4c5 .7 6.9 6.7 3.4 10.2zm144 0l-19.8 19.3 4.7 27.3c.8 4.9-4.3 8.6-8.7 6.3L272 210.4l-24.5 12.9c-4.3 2.3-9.5-1.4-8.7-6.3l4.7-27.3-19.8-19.3c-3.6-3.5-1.6-9.5 3.3-10.2l27.4-4 12.2-24.8c2.2-4.5 8.6-4.4 10.7 0l12.2 24.8 27.4 4c5 .7 6.9 6.7 3.4 10.2zm144 0l-19.8 19.3 4.7 27.3c.8 4.9-4.3 8.6-8.7 6.3L416 210.4l-24.5 12.9c-4.3 2.3-9.5-1.4-8.7-6.3l4.7-27.3-19.8-19.3c-3.6-3.5-1.6-9.5 3.3-10.2l27.4-4 12.2-24.8c2.2-4.5 8.6-4.4 10.7 0l12.2 24.8 27.4 4c5 .7 6.9 6.7 3.4 10.2zM624 320h-32c-8.8 0-16 7.2-16 16v64c0 8.8-7.2 16-16 16s-16-7.2-16-16V288H0v176c0 8.8 7.2 16 16 16h96c8.8 0 16-7.2 16-16v-80h192v80c0 8.8 7.2 16 16 16h96c8.8 0 16-7.2 16-16V352h32v43.3c0 41.8 30 80.1 71.6 84.3 47.8 4.9 88.4-32.7 88.4-79.6v-64c0-8.8-7.2-16-16-16z\"]\n};\nvar faRestroom = {\n prefix: 'fas',\n iconName: 'restroom',\n icon: [640, 512, [], \"f7bd\", \"M128 128c35.3 0 64-28.7 64-64S163.3 0 128 0 64 28.7 64 64s28.7 64 64 64zm384 0c35.3 0 64-28.7 64-64S547.3 0 512 0s-64 28.7-64 64 28.7 64 64 64zm127.3 226.5l-45.6-185.8c-3.3-13.5-15.5-23-29.8-24.2-15 9.7-32.8 15.5-52 15.5-19.2 0-37-5.8-52-15.5-14.3 1.2-26.5 10.7-29.8 24.2l-45.6 185.8C381 369.6 393 384 409.2 384H464v104c0 13.3 10.7 24 24 24h48c13.3 0 24-10.7 24-24V384h54.8c16.2 0 28.2-14.4 24.5-29.5zM336 0h-32c-8.8 0-16 7.2-16 16v480c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V16c0-8.8-7.2-16-16-16zM180.1 144.4c-15 9.8-32.9 15.6-52.1 15.6-19.2 0-37.1-5.8-52.1-15.6C51.3 146.5 32 166.9 32 192v136c0 13.3 10.7 24 24 24h8v136c0 13.3 10.7 24 24 24h80c13.3 0 24-10.7 24-24V352h8c13.3 0 24-10.7 24-24V192c0-25.1-19.3-45.5-43.9-47.6z\"]\n};\nvar faRetweet = {\n prefix: 'fas',\n iconName: 'retweet',\n icon: [640, 512, [], \"f079\", \"M629.657 343.598L528.971 444.284c-9.373 9.372-24.568 9.372-33.941 0L394.343 343.598c-9.373-9.373-9.373-24.569 0-33.941l10.823-10.823c9.562-9.562 25.133-9.34 34.419.492L480 342.118V160H292.451a24.005 24.005 0 0 1-16.971-7.029l-16-16C244.361 121.851 255.069 96 276.451 96H520c13.255 0 24 10.745 24 24v222.118l40.416-42.792c9.285-9.831 24.856-10.054 34.419-.492l10.823 10.823c9.372 9.372 9.372 24.569-.001 33.941zm-265.138 15.431A23.999 23.999 0 0 0 347.548 352H160V169.881l40.416 42.792c9.286 9.831 24.856 10.054 34.419.491l10.822-10.822c9.373-9.373 9.373-24.569 0-33.941L144.971 67.716c-9.373-9.373-24.569-9.373-33.941 0L10.343 168.402c-9.373 9.373-9.373 24.569 0 33.941l10.822 10.822c9.562 9.562 25.133 9.34 34.419-.491L96 169.881V392c0 13.255 10.745 24 24 24h243.549c21.382 0 32.09-25.851 16.971-40.971l-16.001-16z\"]\n};\nvar faRibbon = {\n prefix: 'fas',\n iconName: 'ribbon',\n icon: [448, 512, [], \"f4d6\", \"M6.1 444.3c-9.6 10.8-7.5 27.6 4.5 35.7l68.8 27.9c9.9 6.7 23.3 5 31.3-3.8l91.8-101.9-79.2-87.9-117.2 130zm435.8 0s-292-324.6-295.4-330.1c15.4-8.4 40.2-17.9 77.5-17.9s62.1 9.5 77.5 17.9c-3.3 5.6-56 64.6-56 64.6l79.1 87.7 34.2-38c28.7-31.9 33.3-78.6 11.4-115.5l-43.7-73.5c-4.3-7.2-9.9-13.3-16.8-18-40.7-27.6-127.4-29.7-171.4 0-6.9 4.7-12.5 10.8-16.8 18l-43.6 73.2c-1.5 2.5-37.1 62.2 11.5 116L337.5 504c8 8.9 21.4 10.5 31.3 3.8l68.8-27.9c11.9-8 14-24.8 4.3-35.6z\"]\n};\nvar faRing = {\n prefix: 'fas',\n iconName: 'ring',\n icon: [512, 512, [], \"f70b\", \"M256 64C110.06 64 0 125.91 0 208v98.13C0 384.48 114.62 448 256 448s256-63.52 256-141.87V208c0-82.09-110.06-144-256-144zm0 64c106.04 0 192 35.82 192 80 0 9.26-3.97 18.12-10.91 26.39C392.15 208.21 328.23 192 256 192s-136.15 16.21-181.09 42.39C67.97 226.12 64 217.26 64 208c0-44.18 85.96-80 192-80zM120.43 264.64C155.04 249.93 201.64 240 256 240s100.96 9.93 135.57 24.64C356.84 279.07 308.93 288 256 288s-100.84-8.93-135.57-23.36z\"]\n};\nvar faRoad = {\n prefix: 'fas',\n iconName: 'road',\n icon: [576, 512, [], \"f018\", \"M573.19 402.67l-139.79-320C428.43 71.29 417.6 64 405.68 64h-97.59l2.45 23.16c.5 4.72-3.21 8.84-7.96 8.84h-29.16c-4.75 0-8.46-4.12-7.96-8.84L267.91 64h-97.59c-11.93 0-22.76 7.29-27.73 18.67L2.8 402.67C-6.45 423.86 8.31 448 30.54 448h196.84l10.31-97.68c.86-8.14 7.72-14.32 15.91-14.32h68.8c8.19 0 15.05 6.18 15.91 14.32L348.62 448h196.84c22.23 0 36.99-24.14 27.73-45.33zM260.4 135.16a8 8 0 0 1 7.96-7.16h39.29c4.09 0 7.53 3.09 7.96 7.16l4.6 43.58c.75 7.09-4.81 13.26-11.93 13.26h-40.54c-7.13 0-12.68-6.17-11.93-13.26l4.59-43.58zM315.64 304h-55.29c-9.5 0-16.91-8.23-15.91-17.68l5.07-48c.86-8.14 7.72-14.32 15.91-14.32h45.15c8.19 0 15.05 6.18 15.91 14.32l5.07 48c1 9.45-6.41 17.68-15.91 17.68z\"]\n};\nvar faRobot = {\n prefix: 'fas',\n iconName: 'robot',\n icon: [640, 512, [], \"f544\", \"M32,224H64V416H32A31.96166,31.96166,0,0,1,0,384V256A31.96166,31.96166,0,0,1,32,224Zm512-48V448a64.06328,64.06328,0,0,1-64,64H160a64.06328,64.06328,0,0,1-64-64V176a79.974,79.974,0,0,1,80-80H288V32a32,32,0,0,1,64,0V96H464A79.974,79.974,0,0,1,544,176ZM264,256a40,40,0,1,0-40,40A39.997,39.997,0,0,0,264,256Zm-8,128H192v32h64Zm96,0H288v32h64ZM456,256a40,40,0,1,0-40,40A39.997,39.997,0,0,0,456,256Zm-8,128H384v32h64ZM640,256V384a31.96166,31.96166,0,0,1-32,32H576V224h32A31.96166,31.96166,0,0,1,640,256Z\"]\n};\nvar faRocket = {\n prefix: 'fas',\n iconName: 'rocket',\n icon: [512, 512, [], \"f135\", \"M505.12019,19.09375c-1.18945-5.53125-6.65819-11-12.207-12.1875C460.716,0,435.507,0,410.40747,0,307.17523,0,245.26909,55.20312,199.05238,128H94.83772c-16.34763.01562-35.55658,11.875-42.88664,26.48438L2.51562,253.29688A28.4,28.4,0,0,0,0,264a24.00867,24.00867,0,0,0,24.00582,24H127.81618l-22.47457,22.46875c-11.36521,11.36133-12.99607,32.25781,0,45.25L156.24582,406.625c11.15623,11.1875,32.15619,13.15625,45.27726,0l22.47457-22.46875V488a24.00867,24.00867,0,0,0,24.00581,24,28.55934,28.55934,0,0,0,10.707-2.51562l98.72834-49.39063c14.62888-7.29687,26.50776-26.5,26.50776-42.85937V312.79688c72.59753-46.3125,128.03493-108.40626,128.03493-211.09376C512.07526,76.5,512.07526,51.29688,505.12019,19.09375ZM384.04033,168A40,40,0,1,1,424.05,128,40.02322,40.02322,0,0,1,384.04033,168Z\"]\n};\nvar faRoute = {\n prefix: 'fas',\n iconName: 'route',\n icon: [512, 512, [], \"f4d7\", \"M416 320h-96c-17.6 0-32-14.4-32-32s14.4-32 32-32h96s96-107 96-160-43-96-96-96-96 43-96 96c0 25.5 22.2 63.4 45.3 96H320c-52.9 0-96 43.1-96 96s43.1 96 96 96h96c17.6 0 32 14.4 32 32s-14.4 32-32 32H185.5c-16 24.8-33.8 47.7-47.3 64H416c52.9 0 96-43.1 96-96s-43.1-96-96-96zm0-256c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zM96 256c-53 0-96 43-96 96s96 160 96 160 96-107 96-160-43-96-96-96zm0 128c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z\"]\n};\nvar faRss = {\n prefix: 'fas',\n iconName: 'rss',\n icon: [448, 512, [], \"f09e\", \"M128.081 415.959c0 35.369-28.672 64.041-64.041 64.041S0 451.328 0 415.959s28.672-64.041 64.041-64.041 64.04 28.673 64.04 64.041zm175.66 47.25c-8.354-154.6-132.185-278.587-286.95-286.95C7.656 175.765 0 183.105 0 192.253v48.069c0 8.415 6.49 15.472 14.887 16.018 111.832 7.284 201.473 96.702 208.772 208.772.547 8.397 7.604 14.887 16.018 14.887h48.069c9.149.001 16.489-7.655 15.995-16.79zm144.249.288C439.596 229.677 251.465 40.445 16.503 32.01 7.473 31.686 0 38.981 0 48.016v48.068c0 8.625 6.835 15.645 15.453 15.999 191.179 7.839 344.627 161.316 352.465 352.465.353 8.618 7.373 15.453 15.999 15.453h48.068c9.034-.001 16.329-7.474 16.005-16.504z\"]\n};\nvar faRssSquare = {\n prefix: 'fas',\n iconName: 'rss-square',\n icon: [448, 512, [], \"f143\", \"M400 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V80c0-26.51-21.49-48-48-48zM112 416c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48zm157.533 0h-34.335c-6.011 0-11.051-4.636-11.442-10.634-5.214-80.05-69.243-143.92-149.123-149.123-5.997-.39-10.633-5.431-10.633-11.441v-34.335c0-6.535 5.468-11.777 11.994-11.425 110.546 5.974 198.997 94.536 204.964 204.964.352 6.526-4.89 11.994-11.425 11.994zm103.027 0h-34.334c-6.161 0-11.175-4.882-11.427-11.038-5.598-136.535-115.204-246.161-251.76-251.76C68.882 152.949 64 147.935 64 141.774V107.44c0-6.454 5.338-11.664 11.787-11.432 167.83 6.025 302.21 141.191 308.205 308.205.232 6.449-4.978 11.787-11.432 11.787z\"]\n};\nvar faRubleSign = {\n prefix: 'fas',\n iconName: 'ruble-sign',\n icon: [384, 512, [], \"f158\", \"M239.36 320C324.48 320 384 260.542 384 175.071S324.48 32 239.36 32H76c-6.627 0-12 5.373-12 12v206.632H12c-6.627 0-12 5.373-12 12V308c0 6.627 5.373 12 12 12h52v32H12c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h52v52c0 6.627 5.373 12 12 12h58.56c6.627 0 12-5.373 12-12v-52H308c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12H146.56v-32h92.8zm-92.8-219.252h78.72c46.72 0 74.88 29.11 74.88 74.323 0 45.832-28.16 75.561-76.16 75.561h-77.44V100.748z\"]\n};\nvar faRuler = {\n prefix: 'fas',\n iconName: 'ruler',\n icon: [640, 512, [], \"f545\", \"M635.7 167.2L556.1 31.7c-8.8-15-28.3-20.1-43.5-11.5l-69 39.1L503.3 161c2.2 3.8.9 8.5-2.9 10.7l-13.8 7.8c-3.8 2.2-8.7.9-10.9-2.9L416 75l-55.2 31.3 27.9 47.4c2.2 3.8.9 8.5-2.9 10.7l-13.8 7.8c-3.8 2.2-8.7.9-10.9-2.9L333.2 122 278 153.3 337.8 255c2.2 3.7.9 8.5-2.9 10.7l-13.8 7.8c-3.8 2.2-8.7.9-10.9-2.9l-59.7-101.7-55.2 31.3 27.9 47.4c2.2 3.8.9 8.5-2.9 10.7l-13.8 7.8c-3.8 2.2-8.7.9-10.9-2.9l-27.9-47.5-55.2 31.3 59.7 101.7c2.2 3.7.9 8.5-2.9 10.7l-13.8 7.8c-3.8 2.2-8.7.9-10.9-2.9L84.9 262.9l-69 39.1C.7 310.7-4.6 329.8 4.2 344.8l79.6 135.6c8.8 15 28.3 20.1 43.5 11.5L624.1 210c15.2-8.6 20.4-27.8 11.6-42.8z\"]\n};\nvar faRulerCombined = {\n prefix: 'fas',\n iconName: 'ruler-combined',\n icon: [512, 512, [], \"f546\", \"M160 288h-56c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h56v-64h-56c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h56V96h-56c-4.42 0-8-3.58-8-8V72c0-4.42 3.58-8 8-8h56V32c0-17.67-14.33-32-32-32H32C14.33 0 0 14.33 0 32v448c0 2.77.91 5.24 1.57 7.8L160 329.38V288zm320 64h-32v56c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-56h-64v56c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-56h-64v56c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-56h-41.37L24.2 510.43c2.56.66 5.04 1.57 7.8 1.57h448c17.67 0 32-14.33 32-32v-96c0-17.67-14.33-32-32-32z\"]\n};\nvar faRulerHorizontal = {\n prefix: 'fas',\n iconName: 'ruler-horizontal',\n icon: [576, 512, [], \"f547\", \"M544 128h-48v88c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-88h-64v88c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-88h-64v88c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-88h-64v88c0 4.42-3.58 8-8 8h-16c-4.42 0-8-3.58-8-8v-88h-64v88c0 4.42-3.58 8-8 8H88c-4.42 0-8-3.58-8-8v-88H32c-17.67 0-32 14.33-32 32v192c0 17.67 14.33 32 32 32h512c17.67 0 32-14.33 32-32V160c0-17.67-14.33-32-32-32z\"]\n};\nvar faRulerVertical = {\n prefix: 'fas',\n iconName: 'ruler-vertical',\n icon: [256, 512, [], \"f548\", \"M168 416c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h88v-64h-88c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h88v-64h-88c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h88v-64h-88c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h88V32c0-17.67-14.33-32-32-32H32C14.33 0 0 14.33 0 32v448c0 17.67 14.33 32 32 32h192c17.67 0 32-14.33 32-32v-64h-88z\"]\n};\nvar faRunning = {\n prefix: 'fas',\n iconName: 'running',\n icon: [416, 512, [], \"f70c\", \"M272 96c26.51 0 48-21.49 48-48S298.51 0 272 0s-48 21.49-48 48 21.49 48 48 48zM113.69 317.47l-14.8 34.52H32c-17.67 0-32 14.33-32 32s14.33 32 32 32h77.45c19.25 0 36.58-11.44 44.11-29.09l8.79-20.52-10.67-6.3c-17.32-10.23-30.06-25.37-37.99-42.61zM384 223.99h-44.03l-26.06-53.25c-12.5-25.55-35.45-44.23-61.78-50.94l-71.08-21.14c-28.3-6.8-57.77-.55-80.84 17.14l-39.67 30.41c-14.03 10.75-16.69 30.83-5.92 44.86s30.84 16.66 44.86 5.92l39.69-30.41c7.67-5.89 17.44-8 25.27-6.14l14.7 4.37-37.46 87.39c-12.62 29.48-1.31 64.01 26.3 80.31l84.98 50.17-27.47 87.73c-5.28 16.86 4.11 34.81 20.97 40.09 3.19 1 6.41 1.48 9.58 1.48 13.61 0 26.23-8.77 30.52-22.45l31.64-101.06c5.91-20.77-2.89-43.08-21.64-54.39l-61.24-36.14 31.31-78.28 20.27 41.43c8 16.34 24.92 26.89 43.11 26.89H384c17.67 0 32-14.33 32-32s-14.33-31.99-32-31.99z\"]\n};\nvar faRupeeSign = {\n prefix: 'fas',\n iconName: 'rupee-sign',\n icon: [320, 512, [], \"f156\", \"M308 96c6.627 0 12-5.373 12-12V44c0-6.627-5.373-12-12-12H12C5.373 32 0 37.373 0 44v44.748c0 6.627 5.373 12 12 12h85.28c27.308 0 48.261 9.958 60.97 27.252H12c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h158.757c-6.217 36.086-32.961 58.632-74.757 58.632H12c-6.627 0-12 5.373-12 12v53.012c0 3.349 1.4 6.546 3.861 8.818l165.052 152.356a12.001 12.001 0 0 0 8.139 3.182h82.562c10.924 0 16.166-13.408 8.139-20.818L116.871 319.906c76.499-2.34 131.144-53.395 138.318-127.906H308c6.627 0 12-5.373 12-12v-40c0-6.627-5.373-12-12-12h-58.69c-3.486-11.541-8.28-22.246-14.252-32H308z\"]\n};\nvar faSadCry = {\n prefix: 'fas',\n iconName: 'sad-cry',\n icon: [496, 512, [], \"f5b3\", \"M248 8C111 8 0 119 0 256c0 90.1 48.2 168.7 120 212.1V288c0-8.8 7.2-16 16-16s16 7.2 16 16v196.7c29.5 12.4 62 19.3 96 19.3s66.5-6.9 96-19.3V288c0-8.8 7.2-16 16-16s16 7.2 16 16v180.1C447.8 424.7 496 346 496 256 496 119 385 8 248 8zm-65.5 216.5c-14.8-13.2-46.2-13.2-61 0L112 233c-3.8 3.3-9.3 4-13.7 1.6-4.4-2.4-6.9-7.4-6.1-12.4 4-25.2 34.2-42.1 59.9-42.1S208 197 212 222.2c.8 5-1.7 10-6.1 12.4-5.8 3.1-11.2.7-13.7-1.6l-9.7-8.5zM248 416c-26.5 0-48-28.7-48-64s21.5-64 48-64 48 28.7 48 64-21.5 64-48 64zm149.8-181.5c-5.8 3.1-11.2.7-13.7-1.6l-9.5-8.5c-14.8-13.2-46.2-13.2-61 0L304 233c-3.8 3.3-9.3 4-13.7 1.6-4.4-2.4-6.9-7.4-6.1-12.4 4-25.2 34.2-42.1 59.9-42.1S400 197 404 222.2c.6 4.9-1.8 9.9-6.2 12.3z\"]\n};\nvar faSadTear = {\n prefix: 'fas',\n iconName: 'sad-tear',\n icon: [496, 512, [], \"f5b4\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm80 168c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zM152 416c-26.5 0-48-21-48-47 0-20 28.5-60.4 41.6-77.8 3.2-4.3 9.6-4.3 12.8 0C171.5 308.6 200 349 200 369c0 26-21.5 47-48 47zm16-176c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm170.2 154.2C315.8 367.4 282.9 352 248 352c-21.2 0-21.2-32 0-32 44.4 0 86.3 19.6 114.7 53.8 13.8 16.4-11.2 36.5-24.5 20.4z\"]\n};\nvar faSatellite = {\n prefix: 'fas',\n iconName: 'satellite',\n icon: [512, 512, [], \"f7bf\", \"M502.60969,310.04206l-96.70393,96.71625a31.88151,31.88151,0,0,1-45.00765,0L280.572,326.34115l-9.89231,9.90759a190.56343,190.56343,0,0,1-5.40716,168.52287c-4.50077,8.50115-16.39342,9.59505-23.20707,2.79725L134.54715,400.05428l-17.7999,17.79929c.70324,2.60972,1.60965,5.00067,1.60965,7.79793a32.00544,32.00544,0,1,1-32.00544-32.00434c2.79735,0,5.18838.90637,7.7982,1.60959l17.7999-17.79929L4.43129,269.94287c-6.798-6.81342-5.70409-18.6119,2.79735-23.20627a190.58161,190.58161,0,0,1,168.52864-5.407l9.79854-9.79821-80.31053-80.41716a32.002,32.002,0,0,1,0-45.09987L201.96474,9.29814A31.62639,31.62639,0,0,1,224.46868,0a31.99951,31.99951,0,0,1,22.59759,9.29814l80.32615,80.30777,47.805-47.89713a33.6075,33.6075,0,0,1,47.50808,0l47.50807,47.50645a33.63308,33.63308,0,0,1,0,47.50644l-47.805,47.89713L502.71908,265.036A31.78938,31.78938,0,0,1,502.60969,310.04206ZM219.56159,197.433l73.82505-73.82252-68.918-68.9-73.80942,73.80689Zm237.74352,90.106-68.90233-68.9156-73.825,73.82252,68.918,68.9Z\"]\n};\nvar faSatelliteDish = {\n prefix: 'fas',\n iconName: 'satellite-dish',\n icon: [512, 512, [], \"f7c0\", \"M305.44954,462.59c7.39157,7.29792,6.18829,20.09661-3.00038,25.00356-77.713,41.80281-176.72559,29.9105-242.34331-35.7082C-5.49624,386.28227-17.404,287.362,24.41381,209.554c4.89125-9.095,17.68975-10.29834,25.00318-3.00043L166.22872,323.36708l27.39411-27.39452c-.68759-2.60974-1.594-5.00071-1.594-7.81361a32.00407,32.00407,0,1,1,32.00407,32.00455c-2.79723,0-5.20378-.89075-7.79786-1.594l-27.40974,27.41015ZM511.9758,303.06732a16.10336,16.10336,0,0,1-16.002,17.00242H463.86031a15.96956,15.96956,0,0,1-15.89265-15.00213C440.46671,175.5492,336.45348,70.53427,207.03078,63.53328a15.84486,15.84486,0,0,1-15.00191-15.90852V16.02652A16.09389,16.09389,0,0,1,209.031.02425C372.25491,8.61922,503.47472,139.841,511.9758,303.06732Zm-96.01221-.29692a16.21093,16.21093,0,0,1-16.11142,17.29934H367.645a16.06862,16.06862,0,0,1-15.89265-14.70522c-6.90712-77.01094-68.118-138.91037-144.92467-145.22376a15.94,15.94,0,0,1-14.79876-15.89289V112.13393a16.134,16.134,0,0,1,17.29908-16.096C319.45132,104.5391,407.55627,192.64538,415.96359,302.7704Z\"]\n};\nvar faSave = {\n prefix: 'fas',\n iconName: 'save',\n icon: [448, 512, [], \"f0c7\", \"M433.941 129.941l-83.882-83.882A48 48 0 0 0 316.118 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48V163.882a48 48 0 0 0-14.059-33.941zM224 416c-35.346 0-64-28.654-64-64 0-35.346 28.654-64 64-64s64 28.654 64 64c0 35.346-28.654 64-64 64zm96-304.52V212c0 6.627-5.373 12-12 12H76c-6.627 0-12-5.373-12-12V108c0-6.627 5.373-12 12-12h228.52c3.183 0 6.235 1.264 8.485 3.515l3.48 3.48A11.996 11.996 0 0 1 320 111.48z\"]\n};\nvar faSchool = {\n prefix: 'fas',\n iconName: 'school',\n icon: [640, 512, [], \"f549\", \"M0 224v272c0 8.84 7.16 16 16 16h80V192H32c-17.67 0-32 14.33-32 32zm360-48h-24v-40c0-4.42-3.58-8-8-8h-16c-4.42 0-8 3.58-8 8v64c0 4.42 3.58 8 8 8h48c4.42 0 8-3.58 8-8v-16c0-4.42-3.58-8-8-8zm137.75-63.96l-160-106.67a32.02 32.02 0 0 0-35.5 0l-160 106.67A32.002 32.002 0 0 0 128 138.66V512h128V368c0-8.84 7.16-16 16-16h96c8.84 0 16 7.16 16 16v144h128V138.67c0-10.7-5.35-20.7-14.25-26.63zM320 256c-44.18 0-80-35.82-80-80s35.82-80 80-80 80 35.82 80 80-35.82 80-80 80zm288-64h-64v320h80c8.84 0 16-7.16 16-16V224c0-17.67-14.33-32-32-32z\"]\n};\nvar faScrewdriver = {\n prefix: 'fas',\n iconName: 'screwdriver',\n icon: [512, 512, [], \"f54a\", \"M448 0L320 96v62.06l-83.03 83.03c6.79 4.25 13.27 9.06 19.07 14.87 5.8 5.8 10.62 12.28 14.87 19.07L353.94 192H416l96-128-64-64zM128 278.59L10.92 395.67c-14.55 14.55-14.55 38.15 0 52.71l52.7 52.7c14.56 14.56 38.15 14.56 52.71 0L233.41 384c29.11-29.11 29.11-76.3 0-105.41s-76.3-29.11-105.41 0z\"]\n};\nvar faScroll = {\n prefix: 'fas',\n iconName: 'scroll',\n icon: [640, 512, [], \"f70e\", \"M48 0C21.53 0 0 21.53 0 48v64c0 8.84 7.16 16 16 16h80V48C96 21.53 74.47 0 48 0zm208 412.57V352h288V96c0-52.94-43.06-96-96-96H111.59C121.74 13.41 128 29.92 128 48v368c0 38.87 34.65 69.65 74.75 63.12C234.22 474 256 444.46 256 412.57zM288 384v32c0 52.93-43.06 96-96 96h336c61.86 0 112-50.14 112-112 0-8.84-7.16-16-16-16H288z\"]\n};\nvar faSdCard = {\n prefix: 'fas',\n iconName: 'sd-card',\n icon: [384, 512, [], \"f7c2\", \"M320 0H128L0 128v320c0 35.3 28.7 64 64 64h256c35.3 0 64-28.7 64-64V64c0-35.3-28.7-64-64-64zM160 160h-48V64h48v96zm80 0h-48V64h48v96zm80 0h-48V64h48v96z\"]\n};\nvar faSearch = {\n prefix: 'fas',\n iconName: 'search',\n icon: [512, 512, [], \"f002\", \"M505 442.7L405.3 343c-4.5-4.5-10.6-7-17-7H372c27.6-35.3 44-79.7 44-128C416 93.1 322.9 0 208 0S0 93.1 0 208s93.1 208 208 208c48.3 0 92.7-16.4 128-44v16.3c0 6.4 2.5 12.5 7 17l99.7 99.7c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.6.1-34zM208 336c-70.7 0-128-57.2-128-128 0-70.7 57.2-128 128-128 70.7 0 128 57.2 128 128 0 70.7-57.2 128-128 128z\"]\n};\nvar faSearchDollar = {\n prefix: 'fas',\n iconName: 'search-dollar',\n icon: [512, 512, [], \"f688\", \"M505.04 442.66l-99.71-99.69c-4.5-4.5-10.6-7-17-7h-16.3c27.6-35.3 44-79.69 44-127.99C416.03 93.09 322.92 0 208.02 0S0 93.09 0 207.98s93.11 207.98 208.02 207.98c48.3 0 92.71-16.4 128.01-44v16.3c0 6.4 2.5 12.5 7 17l99.71 99.69c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.59.1-33.99zm-297.02-90.7c-79.54 0-144-64.34-144-143.98 0-79.53 64.35-143.98 144-143.98 79.54 0 144 64.34 144 143.98 0 79.53-64.35 143.98-144 143.98zm27.11-152.54l-45.01-13.5c-5.16-1.55-8.77-6.78-8.77-12.73 0-7.27 5.3-13.19 11.8-13.19h28.11c4.56 0 8.96 1.29 12.82 3.72 3.24 2.03 7.36 1.91 10.13-.73l11.75-11.21c3.53-3.37 3.33-9.21-.57-12.14-9.1-6.83-20.08-10.77-31.37-11.35V112c0-4.42-3.58-8-8-8h-16c-4.42 0-8 3.58-8 8v16.12c-23.63.63-42.68 20.55-42.68 45.07 0 19.97 12.99 37.81 31.58 43.39l45.01 13.5c5.16 1.55 8.77 6.78 8.77 12.73 0 7.27-5.3 13.19-11.8 13.19h-28.1c-4.56 0-8.96-1.29-12.82-3.72-3.24-2.03-7.36-1.91-10.13.73l-11.75 11.21c-3.53 3.37-3.33 9.21.57 12.14 9.1 6.83 20.08 10.77 31.37 11.35V304c0 4.42 3.58 8 8 8h16c4.42 0 8-3.58 8-8v-16.12c23.63-.63 42.68-20.54 42.68-45.07 0-19.97-12.99-37.81-31.59-43.39z\"]\n};\nvar faSearchLocation = {\n prefix: 'fas',\n iconName: 'search-location',\n icon: [512, 512, [], \"f689\", \"M505.04 442.66l-99.71-99.69c-4.5-4.5-10.6-7-17-7h-16.3c27.6-35.3 44-79.69 44-127.99C416.03 93.09 322.92 0 208.02 0S0 93.09 0 207.98s93.11 207.98 208.02 207.98c48.3 0 92.71-16.4 128.01-44v16.3c0 6.4 2.5 12.5 7 17l99.71 99.69c9.4 9.4 24.6 9.4 33.9 0l28.3-28.3c9.4-9.4 9.4-24.59.1-33.99zm-297.02-90.7c-79.54 0-144-64.34-144-143.98 0-79.53 64.35-143.98 144-143.98 79.54 0 144 64.34 144 143.98 0 79.53-64.35 143.98-144 143.98zm.02-239.96c-40.78 0-73.84 33.05-73.84 73.83 0 32.96 48.26 93.05 66.75 114.86a9.24 9.24 0 0 0 14.18 0c18.49-21.81 66.75-81.89 66.75-114.86 0-40.78-33.06-73.83-73.84-73.83zm0 96c-13.26 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24z\"]\n};\nvar faSearchMinus = {\n prefix: 'fas',\n iconName: 'search-minus',\n icon: [512, 512, [], \"f010\", \"M304 192v32c0 6.6-5.4 12-12 12H124c-6.6 0-12-5.4-12-12v-32c0-6.6 5.4-12 12-12h168c6.6 0 12 5.4 12 12zm201 284.7L476.7 505c-9.4 9.4-24.6 9.4-33.9 0L343 405.3c-4.5-4.5-7-10.6-7-17V372c-35.3 27.6-79.7 44-128 44C93.1 416 0 322.9 0 208S93.1 0 208 0s208 93.1 208 208c0 48.3-16.4 92.7-44 128h16.3c6.4 0 12.5 2.5 17 7l99.7 99.7c9.3 9.4 9.3 24.6 0 34zM344 208c0-75.2-60.8-136-136-136S72 132.8 72 208s60.8 136 136 136 136-60.8 136-136z\"]\n};\nvar faSearchPlus = {\n prefix: 'fas',\n iconName: 'search-plus',\n icon: [512, 512, [], \"f00e\", \"M304 192v32c0 6.6-5.4 12-12 12h-56v56c0 6.6-5.4 12-12 12h-32c-6.6 0-12-5.4-12-12v-56h-56c-6.6 0-12-5.4-12-12v-32c0-6.6 5.4-12 12-12h56v-56c0-6.6 5.4-12 12-12h32c6.6 0 12 5.4 12 12v56h56c6.6 0 12 5.4 12 12zm201 284.7L476.7 505c-9.4 9.4-24.6 9.4-33.9 0L343 405.3c-4.5-4.5-7-10.6-7-17V372c-35.3 27.6-79.7 44-128 44C93.1 416 0 322.9 0 208S93.1 0 208 0s208 93.1 208 208c0 48.3-16.4 92.7-44 128h16.3c6.4 0 12.5 2.5 17 7l99.7 99.7c9.3 9.4 9.3 24.6 0 34zM344 208c0-75.2-60.8-136-136-136S72 132.8 72 208s60.8 136 136 136 136-60.8 136-136z\"]\n};\nvar faSeedling = {\n prefix: 'fas',\n iconName: 'seedling',\n icon: [512, 512, [], \"f4d8\", \"M64 96H0c0 123.7 100.3 224 224 224v144c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V320C288 196.3 187.7 96 64 96zm384-64c-84.2 0-157.4 46.5-195.7 115.2 27.7 30.2 48.2 66.9 59 107.6C424 243.1 512 147.9 512 32h-64z\"]\n};\nvar faServer = {\n prefix: 'fas',\n iconName: 'server',\n icon: [512, 512, [], \"f233\", \"M480 160H32c-17.673 0-32-14.327-32-32V64c0-17.673 14.327-32 32-32h448c17.673 0 32 14.327 32 32v64c0 17.673-14.327 32-32 32zm-48-88c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24zm-64 0c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24zm112 248H32c-17.673 0-32-14.327-32-32v-64c0-17.673 14.327-32 32-32h448c17.673 0 32 14.327 32 32v64c0 17.673-14.327 32-32 32zm-48-88c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24zm-64 0c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24zm112 248H32c-17.673 0-32-14.327-32-32v-64c0-17.673 14.327-32 32-32h448c17.673 0 32 14.327 32 32v64c0 17.673-14.327 32-32 32zm-48-88c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24zm-64 0c-13.255 0-24 10.745-24 24s10.745 24 24 24 24-10.745 24-24-10.745-24-24-24z\"]\n};\nvar faShapes = {\n prefix: 'fas',\n iconName: 'shapes',\n icon: [512, 512, [], \"f61f\", \"M128,256A128,128,0,1,0,256,384,128,128,0,0,0,128,256Zm379-54.86L400.07,18.29a37.26,37.26,0,0,0-64.14,0L229,201.14C214.76,225.52,232.58,256,261.09,256H474.91C503.42,256,521.24,225.52,507,201.14ZM480,288H320a32,32,0,0,0-32,32V480a32,32,0,0,0,32,32H480a32,32,0,0,0,32-32V320A32,32,0,0,0,480,288Z\"]\n};\nvar faShare = {\n prefix: 'fas',\n iconName: 'share',\n icon: [512, 512, [], \"f064\", \"M503.691 189.836L327.687 37.851C312.281 24.546 288 35.347 288 56.015v80.053C127.371 137.907 0 170.1 0 322.326c0 61.441 39.581 122.309 83.333 154.132 13.653 9.931 33.111-2.533 28.077-18.631C66.066 312.814 132.917 274.316 288 272.085V360c0 20.7 24.3 31.453 39.687 18.164l176.004-152c11.071-9.562 11.086-26.753 0-36.328z\"]\n};\nvar faShareAlt = {\n prefix: 'fas',\n iconName: 'share-alt',\n icon: [448, 512, [], \"f1e0\", \"M352 320c-22.608 0-43.387 7.819-59.79 20.895l-102.486-64.054a96.551 96.551 0 0 0 0-41.683l102.486-64.054C308.613 184.181 329.392 192 352 192c53.019 0 96-42.981 96-96S405.019 0 352 0s-96 42.981-96 96c0 7.158.79 14.13 2.276 20.841L155.79 180.895C139.387 167.819 118.608 160 96 160c-53.019 0-96 42.981-96 96s42.981 96 96 96c22.608 0 43.387-7.819 59.79-20.895l102.486 64.054A96.301 96.301 0 0 0 256 416c0 53.019 42.981 96 96 96s96-42.981 96-96-42.981-96-96-96z\"]\n};\nvar faShareAltSquare = {\n prefix: 'fas',\n iconName: 'share-alt-square',\n icon: [448, 512, [], \"f1e1\", \"M448 80v352c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V80c0-26.51 21.49-48 48-48h352c26.51 0 48 21.49 48 48zM304 296c-14.562 0-27.823 5.561-37.783 14.671l-67.958-40.775a56.339 56.339 0 0 0 0-27.793l67.958-40.775C276.177 210.439 289.438 216 304 216c30.928 0 56-25.072 56-56s-25.072-56-56-56-56 25.072-56 56c0 4.797.605 9.453 1.74 13.897l-67.958 40.775C171.823 205.561 158.562 200 144 200c-30.928 0-56 25.072-56 56s25.072 56 56 56c14.562 0 27.823-5.561 37.783-14.671l67.958 40.775a56.088 56.088 0 0 0-1.74 13.897c0 30.928 25.072 56 56 56s56-25.072 56-56C360 321.072 334.928 296 304 296z\"]\n};\nvar faShareSquare = {\n prefix: 'fas',\n iconName: 'share-square',\n icon: [576, 512, [], \"f14d\", \"M568.482 177.448L424.479 313.433C409.3 327.768 384 317.14 384 295.985v-71.963c-144.575.97-205.566 35.113-164.775 171.353 4.483 14.973-12.846 26.567-25.006 17.33C155.252 383.105 120 326.488 120 269.339c0-143.937 117.599-172.5 264-173.312V24.012c0-21.174 25.317-31.768 40.479-17.448l144.003 135.988c10.02 9.463 10.028 25.425 0 34.896zM384 379.128V448H64V128h50.916a11.99 11.99 0 0 0 8.648-3.693c14.953-15.568 32.237-27.89 51.014-37.676C185.708 80.83 181.584 64 169.033 64H48C21.49 64 0 85.49 0 112v352c0 26.51 21.49 48 48 48h352c26.51 0 48-21.49 48-48v-88.806c0-8.288-8.197-14.066-16.011-11.302a71.83 71.83 0 0 1-34.189 3.377c-7.27-1.046-13.8 4.514-13.8 11.859z\"]\n};\nvar faShekelSign = {\n prefix: 'fas',\n iconName: 'shekel-sign',\n icon: [448, 512, [], \"f20b\", \"M248 168v168c0 8.84 7.16 16 16 16h48c8.84 0 16-7.16 16-16V168c0-75.11-60.89-136-136-136H24C10.75 32 0 42.74 0 56v408c0 8.84 7.16 16 16 16h48c8.84 0 16-7.16 16-16V112h112c30.93 0 56 25.07 56 56zM432 32h-48c-8.84 0-16 7.16-16 16v296c0 30.93-25.07 56-56 56H200V176c0-8.84-7.16-16-16-16h-48c-8.84 0-16 7.16-16 16v280c0 13.25 10.75 24 24 24h168c75.11 0 136-60.89 136-136V48c0-8.84-7.16-16-16-16z\"]\n};\nvar faShieldAlt = {\n prefix: 'fas',\n iconName: 'shield-alt',\n icon: [512, 512, [], \"f3ed\", \"M466.5 83.7l-192-80a48.15 48.15 0 0 0-36.9 0l-192 80C27.7 91.1 16 108.6 16 128c0 198.5 114.5 335.7 221.5 380.3 11.8 4.9 25.1 4.9 36.9 0C360.1 472.6 496 349.3 496 128c0-19.4-11.7-36.9-29.5-44.3zM256.1 446.3l-.1-381 175.9 73.3c-3.3 151.4-82.1 261.1-175.8 307.7z\"]\n};\nvar faShip = {\n prefix: 'fas',\n iconName: 'ship',\n icon: [640, 512, [], \"f21a\", \"M496.616 372.639l70.012-70.012c16.899-16.9 9.942-45.771-12.836-53.092L512 236.102V96c0-17.673-14.327-32-32-32h-64V24c0-13.255-10.745-24-24-24H248c-13.255 0-24 10.745-24 24v40h-64c-17.673 0-32 14.327-32 32v140.102l-41.792 13.433c-22.753 7.313-29.754 36.173-12.836 53.092l70.012 70.012C125.828 416.287 85.587 448 24 448c-13.255 0-24 10.745-24 24v16c0 13.255 10.745 24 24 24 61.023 0 107.499-20.61 143.258-59.396C181.677 487.432 216.021 512 256 512h128c39.979 0 74.323-24.568 88.742-59.396C508.495 491.384 554.968 512 616 512c13.255 0 24-10.745 24-24v-16c0-13.255-10.745-24-24-24-60.817 0-101.542-31.001-119.384-75.361zM192 128h256v87.531l-118.208-37.995a31.995 31.995 0 0 0-19.584 0L192 215.531V128z\"]\n};\nvar faShippingFast = {\n prefix: 'fas',\n iconName: 'shipping-fast',\n icon: [640, 512, [], \"f48b\", \"M624 352h-16V243.9c0-12.7-5.1-24.9-14.1-33.9L494 110.1c-9-9-21.2-14.1-33.9-14.1H416V48c0-26.5-21.5-48-48-48H112C85.5 0 64 21.5 64 48v48H8c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8h272c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H40c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8h208c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H8c-4.4 0-8 3.6-8 8v16c0 4.4 3.6 8 8 8h208c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H64v128c0 53 43 96 96 96s96-43 96-96h128c0 53 43 96 96 96s96-43 96-96h48c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zM160 464c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm320 0c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm80-208H416V144h44.1l99.9 99.9V256z\"]\n};\nvar faShoePrints = {\n prefix: 'fas',\n iconName: 'shoe-prints',\n icon: [640, 512, [], \"f54b\", \"M192 160h32V32h-32c-35.35 0-64 28.65-64 64s28.65 64 64 64zM0 416c0 35.35 28.65 64 64 64h32V352H64c-35.35 0-64 28.65-64 64zm337.46-128c-34.91 0-76.16 13.12-104.73 32-24.79 16.38-44.52 32-104.73 32v128l57.53 15.97c26.21 7.28 53.01 13.12 80.31 15.05 32.69 2.31 65.6.67 97.58-6.2C472.9 481.3 512 429.22 512 384c0-64-84.18-96-174.54-96zM491.42 7.19C459.44.32 426.53-1.33 393.84.99c-27.3 1.93-54.1 7.77-80.31 15.04L256 32v128c60.2 0 79.94 15.62 104.73 32 28.57 18.88 69.82 32 104.73 32C555.82 224 640 192 640 128c0-45.22-39.1-97.3-148.58-120.81z\"]\n};\nvar faShoppingBag = {\n prefix: 'fas',\n iconName: 'shopping-bag',\n icon: [448, 512, [], \"f290\", \"M352 160v-32C352 57.42 294.579 0 224 0 153.42 0 96 57.42 96 128v32H0v272c0 44.183 35.817 80 80 80h288c44.183 0 80-35.817 80-80V160h-96zm-192-32c0-35.29 28.71-64 64-64s64 28.71 64 64v32H160v-32zm160 120c-13.255 0-24-10.745-24-24s10.745-24 24-24 24 10.745 24 24-10.745 24-24 24zm-192 0c-13.255 0-24-10.745-24-24s10.745-24 24-24 24 10.745 24 24-10.745 24-24 24z\"]\n};\nvar faShoppingBasket = {\n prefix: 'fas',\n iconName: 'shopping-basket',\n icon: [576, 512, [], \"f291\", \"M576 216v16c0 13.255-10.745 24-24 24h-8l-26.113 182.788C514.509 462.435 494.257 480 470.37 480H105.63c-23.887 0-44.139-17.565-47.518-41.212L32 256h-8c-13.255 0-24-10.745-24-24v-16c0-13.255 10.745-24 24-24h67.341l106.78-146.821c10.395-14.292 30.407-17.453 44.701-7.058 14.293 10.395 17.453 30.408 7.058 44.701L170.477 192h235.046L326.12 82.821c-10.395-14.292-7.234-34.306 7.059-44.701 14.291-10.395 34.306-7.235 44.701 7.058L484.659 192H552c13.255 0 24 10.745 24 24zM312 392V280c0-13.255-10.745-24-24-24s-24 10.745-24 24v112c0 13.255 10.745 24 24 24s24-10.745 24-24zm112 0V280c0-13.255-10.745-24-24-24s-24 10.745-24 24v112c0 13.255 10.745 24 24 24s24-10.745 24-24zm-224 0V280c0-13.255-10.745-24-24-24s-24 10.745-24 24v112c0 13.255 10.745 24 24 24s24-10.745 24-24z\"]\n};\nvar faShoppingCart = {\n prefix: 'fas',\n iconName: 'shopping-cart',\n icon: [576, 512, [], \"f07a\", \"M528.12 301.319l47.273-208C578.806 78.301 567.391 64 551.99 64H159.208l-9.166-44.81C147.758 8.021 137.93 0 126.529 0H24C10.745 0 0 10.745 0 24v16c0 13.255 10.745 24 24 24h69.883l70.248 343.435C147.325 417.1 136 435.222 136 456c0 30.928 25.072 56 56 56s56-25.072 56-56c0-15.674-6.447-29.835-16.824-40h209.647C430.447 426.165 424 440.326 424 456c0 30.928 25.072 56 56 56s56-25.072 56-56c0-22.172-12.888-41.332-31.579-50.405l5.517-24.276c3.413-15.018-8.002-29.319-23.403-29.319H218.117l-6.545-32h293.145c11.206 0 20.92-7.754 23.403-18.681z\"]\n};\nvar faShower = {\n prefix: 'fas',\n iconName: 'shower',\n icon: [512, 512, [], \"f2cc\", \"M304,320a16,16,0,1,0,16,16A16,16,0,0,0,304,320Zm32-96a16,16,0,1,0,16,16A16,16,0,0,0,336,224Zm32,64a16,16,0,1,0-16-16A16,16,0,0,0,368,288Zm-32,32a16,16,0,1,0-16-16A16,16,0,0,0,336,320Zm-32-64a16,16,0,1,0,16,16A16,16,0,0,0,304,256Zm128-32a16,16,0,1,0-16-16A16,16,0,0,0,432,224Zm-48,16a16,16,0,1,0,16-16A16,16,0,0,0,384,240Zm-16-48a16,16,0,1,0,16,16A16,16,0,0,0,368,192Zm96,32a16,16,0,1,0,16,16A16,16,0,0,0,464,224Zm32-32a16,16,0,1,0,16,16A16,16,0,0,0,496,192Zm-64,64a16,16,0,1,0,16,16A16,16,0,0,0,432,256Zm-32,32a16,16,0,1,0,16,16A16,16,0,0,0,400,288Zm-64,64a16,16,0,1,0,16,16A16,16,0,0,0,336,352Zm-32,32a16,16,0,1,0,16,16A16,16,0,0,0,304,384Zm64-64a16,16,0,1,0,16,16A16,16,0,0,0,368,320Zm21.65-218.35-11.3-11.31a16,16,0,0,0-22.63,0L350.05,96A111.19,111.19,0,0,0,272,64c-19.24,0-37.08,5.3-52.9,13.85l-10-10A121.72,121.72,0,0,0,123.44,32C55.49,31.5,0,92.91,0,160.85V464a16,16,0,0,0,16,16H48a16,16,0,0,0,16-16V158.4c0-30.15,21-58.2,51-61.93a58.38,58.38,0,0,1,48.93,16.67l10,10C165.3,138.92,160,156.76,160,176a111.23,111.23,0,0,0,32,78.05l-5.66,5.67a16,16,0,0,0,0,22.62l11.3,11.31a16,16,0,0,0,22.63,0L389.65,124.28A16,16,0,0,0,389.65,101.65Z\"]\n};\nvar faShuttleVan = {\n prefix: 'fas',\n iconName: 'shuttle-van',\n icon: [640, 512, [], \"f5b6\", \"M628.88 210.65L494.39 49.27A48.01 48.01 0 0 0 457.52 32H32C14.33 32 0 46.33 0 64v288c0 17.67 14.33 32 32 32h32c0 53.02 42.98 96 96 96s96-42.98 96-96h128c0 53.02 42.98 96 96 96s96-42.98 96-96h32c17.67 0 32-14.33 32-32V241.38c0-11.23-3.94-22.1-11.12-30.73zM64 192V96h96v96H64zm96 240c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48zm160-240h-96V96h96v96zm160 240c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48zm-96-240V96h66.02l80 96H384z\"]\n};\nvar faSign = {\n prefix: 'fas',\n iconName: 'sign',\n icon: [512, 512, [], \"f4d9\", \"M496 64H128V16c0-8.8-7.2-16-16-16H80c-8.8 0-16 7.2-16 16v48H16C7.2 64 0 71.2 0 80v32c0 8.8 7.2 16 16 16h48v368c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V128h368c8.8 0 16-7.2 16-16V80c0-8.8-7.2-16-16-16zM160 384h320V160H160v224z\"]\n};\nvar faSignInAlt = {\n prefix: 'fas',\n iconName: 'sign-in-alt',\n icon: [512, 512, [], \"f2f6\", \"M416 448h-84c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h84c17.7 0 32-14.3 32-32V160c0-17.7-14.3-32-32-32h-84c-6.6 0-12-5.4-12-12V76c0-6.6 5.4-12 12-12h84c53 0 96 43 96 96v192c0 53-43 96-96 96zm-47-201L201 79c-15-15-41-4.5-41 17v96H24c-13.3 0-24 10.7-24 24v96c0 13.3 10.7 24 24 24h136v96c0 21.5 26 32 41 17l168-168c9.3-9.4 9.3-24.6 0-34z\"]\n};\nvar faSignLanguage = {\n prefix: 'fas',\n iconName: 'sign-language',\n icon: [448, 512, [], \"f2a7\", \"M91.434 483.987c-.307-16.018 13.109-29.129 29.13-29.129h62.293v-5.714H56.993c-16.021 0-29.437-13.111-29.13-29.129C28.16 404.491 40.835 392 56.428 392h126.429v-5.714H29.136c-16.021 0-29.437-13.111-29.13-29.129.297-15.522 12.973-28.013 28.566-28.013h154.286v-5.714H57.707c-16.021 0-29.437-13.111-29.13-29.129.297-15.522 12.973-28.013 28.566-28.013h168.566l-31.085-22.606c-12.762-9.281-15.583-27.149-6.302-39.912 9.281-12.761 27.15-15.582 39.912-6.302l123.361 89.715a34.287 34.287 0 0 1 14.12 27.728v141.136c0 15.91-10.946 29.73-26.433 33.374l-80.471 18.934a137.16 137.16 0 0 1-31.411 3.646H120c-15.593-.001-28.269-12.492-28.566-28.014zm73.249-225.701h36.423l-11.187-8.136c-18.579-13.511-20.313-40.887-3.17-56.536l-13.004-16.7c-9.843-12.641-28.43-15.171-40.88-5.088-12.065 9.771-14.133 27.447-4.553 39.75l36.371 46.71zm283.298-2.103l-5.003-152.452c-.518-15.771-13.722-28.136-29.493-27.619-15.773.518-28.137 13.722-27.619 29.493l1.262 38.415L283.565 11.019c-9.58-12.303-27.223-14.63-39.653-5.328-12.827 9.599-14.929 28.24-5.086 40.881l76.889 98.745-4.509 3.511-94.79-121.734c-9.58-12.303-27.223-14.63-39.653-5.328-12.827 9.599-14.929 28.24-5.086 40.881l94.443 121.288-4.509 3.511-77.675-99.754c-9.58-12.303-27.223-14.63-39.653-5.328-12.827 9.599-14.929 28.24-5.086 40.881l52.053 66.849c12.497-8.257 29.055-8.285 41.69.904l123.36 89.714c10.904 7.93 17.415 20.715 17.415 34.198v16.999l61.064-47.549a34.285 34.285 0 0 0 13.202-28.177z\"]\n};\nvar faSignOutAlt = {\n prefix: 'fas',\n iconName: 'sign-out-alt',\n icon: [512, 512, [], \"f2f5\", \"M497 273L329 441c-15 15-41 4.5-41-17v-96H152c-13.3 0-24-10.7-24-24v-96c0-13.3 10.7-24 24-24h136V88c0-21.4 25.9-32 41-17l168 168c9.3 9.4 9.3 24.6 0 34zM192 436v-40c0-6.6-5.4-12-12-12H96c-17.7 0-32-14.3-32-32V160c0-17.7 14.3-32 32-32h84c6.6 0 12-5.4 12-12V76c0-6.6-5.4-12-12-12H96c-53 0-96 43-96 96v192c0 53 43 96 96 96h84c6.6 0 12-5.4 12-12z\"]\n};\nvar faSignal = {\n prefix: 'fas',\n iconName: 'signal',\n icon: [640, 512, [], \"f012\", \"M216 288h-48c-8.84 0-16 7.16-16 16v192c0 8.84 7.16 16 16 16h48c8.84 0 16-7.16 16-16V304c0-8.84-7.16-16-16-16zM88 384H40c-8.84 0-16 7.16-16 16v96c0 8.84 7.16 16 16 16h48c8.84 0 16-7.16 16-16v-96c0-8.84-7.16-16-16-16zm256-192h-48c-8.84 0-16 7.16-16 16v288c0 8.84 7.16 16 16 16h48c8.84 0 16-7.16 16-16V208c0-8.84-7.16-16-16-16zm128-96h-48c-8.84 0-16 7.16-16 16v384c0 8.84 7.16 16 16 16h48c8.84 0 16-7.16 16-16V112c0-8.84-7.16-16-16-16zM600 0h-48c-8.84 0-16 7.16-16 16v480c0 8.84 7.16 16 16 16h48c8.84 0 16-7.16 16-16V16c0-8.84-7.16-16-16-16z\"]\n};\nvar faSignature = {\n prefix: 'fas',\n iconName: 'signature',\n icon: [640, 512, [], \"f5b7\", \"M623.2 192c-51.8 3.5-125.7 54.7-163.1 71.5-29.1 13.1-54.2 24.4-76.1 24.4-22.6 0-26-16.2-21.3-51.9 1.1-8 11.7-79.2-42.7-76.1-25.1 1.5-64.3 24.8-169.5 126L192 182.2c30.4-75.9-53.2-151.5-129.7-102.8L7.4 116.3C0 121-2.2 130.9 2.5 138.4l17.2 27c4.7 7.5 14.6 9.7 22.1 4.9l58-38.9c18.4-11.7 40.7 7.2 32.7 27.1L34.3 404.1C27.5 421 37 448 64 448c8.3 0 16.5-3.2 22.6-9.4 42.2-42.2 154.7-150.7 211.2-195.8-2.2 28.5-2.1 58.9 20.6 83.8 15.3 16.8 37.3 25.3 65.5 25.3 35.6 0 68-14.6 102.3-30 33-14.8 99-62.6 138.4-65.8 8.5-.7 15.2-7.3 15.2-15.8v-32.1c.2-9.1-7.5-16.8-16.6-16.2z\"]\n};\nvar faSimCard = {\n prefix: 'fas',\n iconName: 'sim-card',\n icon: [384, 512, [], \"f7c4\", \"M0 64v384c0 35.3 28.7 64 64 64h256c35.3 0 64-28.7 64-64V128L256 0H64C28.7 0 0 28.7 0 64zm224 192h-64v-64h64v64zm96 0h-64v-64h32c17.7 0 32 14.3 32 32v32zm-64 128h64v32c0 17.7-14.3 32-32 32h-32v-64zm-96 0h64v64h-64v-64zm-96 0h64v64H96c-17.7 0-32-14.3-32-32v-32zm0-96h256v64H64v-64zm0-64c0-17.7 14.3-32 32-32h32v64H64v-32z\"]\n};\nvar faSitemap = {\n prefix: 'fas',\n iconName: 'sitemap',\n icon: [640, 512, [], \"f0e8\", \"M128 352H32c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32v-96c0-17.67-14.33-32-32-32zm-24-80h192v48h48v-48h192v48h48v-57.59c0-21.17-17.23-38.41-38.41-38.41H344v-64h40c17.67 0 32-14.33 32-32V32c0-17.67-14.33-32-32-32H256c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h40v64H94.41C73.23 224 56 241.23 56 262.41V320h48v-48zm264 80h-96c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32v-96c0-17.67-14.33-32-32-32zm240 0h-96c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32v-96c0-17.67-14.33-32-32-32z\"]\n};\nvar faSkating = {\n prefix: 'fas',\n iconName: 'skating',\n icon: [448, 512, [], \"f7c5\", \"M400 0c-26.5 0-48 21.5-48 48s21.5 48 48 48 48-21.5 48-48-21.5-48-48-48zm0 448c-8.8 0-16 7.2-16 16s-7.2 16-16 16h-96c-8.8 0-16 7.2-16 16s7.2 16 16 16h96c26.5 0 48-21.5 48-48 0-8.8-7.2-16-16-16zm-282.2 8.6c-6.2 6.2-16.4 6.3-22.6 0l-67.9-67.9c-6.2-6.2-16.4-6.2-22.6 0s-6.2 16.4 0 22.6l67.9 67.9c9.4 9.4 21.7 14 34 14s24.6-4.7 33.9-14c6.2-6.2 6.2-16.4 0-22.6s-16.4-6.3-22.7 0zm56.1-179.8l-93.7 93.7c-12.5 12.5-12.5 32.8 0 45.2 6.2 6.2 14.4 9.4 22.6 9.4s16.4-3.1 22.6-9.4l91.9-91.9-30.2-30.2c-5-5-9.4-10.7-13.2-16.8zM128 160h105.5l-20.1 17.2c-13.5 11.5-21.6 28.4-22.3 46.1-.7 17.8 6.1 35.2 18.7 47.7l78.2 78.2V432c0 17.7 14.3 32 32 32s32-14.3 32-32v-89.4c0-12.6-5.1-25-14.1-33.9l-61-61c.5-.4 1.2-.6 1.7-1.1l82.3-82.3c11.5-11.5 14.9-28.6 8.7-43.6-6.2-15-20.7-24.7-37-24.7H128c-17.7 0-32 14.3-32 32s14.3 32 32 32z\"]\n};\nvar faSkiing = {\n prefix: 'fas',\n iconName: 'skiing',\n icon: [512, 512, [], \"f7c9\", \"M432 96c26.5 0 48-21.5 48-48S458.5 0 432 0s-48 21.5-48 48 21.5 48 48 48zm73 356.1c-9.4-9.4-24.6-9.4-33.9 0-12.1 12.1-30.5 15.4-45.1 8.7l-135.8-70.2 49.2-73.8c12.7-19 10.2-44.5-6-60.6L293 215.7l-107-53.1c-2.9 19.9 3.4 40 17.7 54.4l75.1 75.2-45.9 68.8L35 258.7c-11.7-6-26.2-1.5-32.3 10.3-6.1 11.8-1.5 26.3 10.3 32.3l391.9 202.5c11.9 5.5 24.5 8.1 37.1 8.1 23.2 0 46-9 63-26 9.3-9.3 9.3-24.5 0-33.8zM120 91.6l-11.5 22.5c14.4 7.3 31.2 4.9 42.8-4.8l47.2 23.4c-.1.1-.1.2-.2.3l114.5 56.8 32.4-13 6.4 19.1c4 12.1 12.6 22 24 27.7l58.1 29c15.9 7.9 35 1.5 42.9-14.3 7.9-15.8 1.5-35-14.3-42.9l-52.1-26.1-17.1-51.2c-8.1-24.2-40.9-56.6-84.5-39.2l-81.2 32.5-62.5-31c.3-14.5-7.2-28.6-20.9-35.6l-11.1 21.7h-.2l-34.4-7c-1.8-.4-3.7.2-5 1.7-1.9 2.2-1.7 5.5.5 7.4l26.2 23z\"]\n};\nvar faSkiingNordic = {\n prefix: 'fas',\n iconName: 'skiing-nordic',\n icon: [576, 512, [], \"f7ca\", \"M336 96c26.5 0 48-21.5 48-48S362.5 0 336 0s-48 21.5-48 48 21.5 48 48 48zm216 320c-13.2 0-24 10.7-24 24 0 13.2-10.8 24-24 24h-69.5L460 285.6c11.7-4.7 20.1-16.2 20.1-29.6 0-17.7-14.3-32-32-32h-44L378 170.8c-12.5-25.5-35.5-44.2-61.8-50.9L245 98.7c-28.3-6.8-57.8-.5-80.8 17.1l-39.7 30.4c-14 10.7-16.7 30.8-5.9 44.9.7.9 1.7 1.3 2.4 2.1L66.9 464H24c-13.2 0-24 10.7-24 24s10.8 24 24 24h480c39.7 0 72-32.3 72-72 0-13.2-10.8-24-24-24zm-260.5 48h-96.9l43.1-91-22-13c-12.1-7.2-21.9-16.9-29.5-27.8L123.7 464H99.5l52.3-261.4c4.1-1 8.1-2.9 11.7-5.6l39.7-30.4c7.7-5.9 17.4-8 25.3-6.1l14.7 4.4-37.5 87.4c-12.6 29.5-1.3 64 26.3 80.3l85 50.2-25.5 81.2zm110.6 0h-43.6l23.6-75.5c5.9-20.8-2.9-43.1-21.6-54.4L299.3 298l31.3-78.3 20.3 41.4c8 16.3 24.9 26.9 43.1 26.9h33.3l-25.2 176z\"]\n};\nvar faSkull = {\n prefix: 'fas',\n iconName: 'skull',\n icon: [512, 512, [], \"f54c\", \"M256 0C114.6 0 0 100.3 0 224c0 70.1 36.9 132.6 94.5 173.7 9.6 6.9 15.2 18.1 13.5 29.9l-9.4 66.2c-1.4 9.6 6 18.2 15.7 18.2H192v-56c0-4.4 3.6-8 8-8h16c4.4 0 8 3.6 8 8v56h64v-56c0-4.4 3.6-8 8-8h16c4.4 0 8 3.6 8 8v56h77.7c9.7 0 17.1-8.6 15.7-18.2l-9.4-66.2c-1.7-11.7 3.8-23 13.5-29.9C475.1 356.6 512 294.1 512 224 512 100.3 397.4 0 256 0zm-96 320c-35.3 0-64-28.7-64-64s28.7-64 64-64 64 28.7 64 64-28.7 64-64 64zm192 0c-35.3 0-64-28.7-64-64s28.7-64 64-64 64 28.7 64 64-28.7 64-64 64z\"]\n};\nvar faSkullCrossbones = {\n prefix: 'fas',\n iconName: 'skull-crossbones',\n icon: [448, 512, [], \"f714\", \"M439.15 453.06L297.17 384l141.99-69.06c7.9-3.95 11.11-13.56 7.15-21.46L432 264.85c-3.95-7.9-13.56-11.11-21.47-7.16L224 348.41 37.47 257.69c-7.9-3.95-17.51-.75-21.47 7.16L1.69 293.48c-3.95 7.9-.75 17.51 7.15 21.46L150.83 384 8.85 453.06c-7.9 3.95-11.11 13.56-7.15 21.47l14.31 28.63c3.95 7.9 13.56 11.11 21.47 7.15L224 419.59l186.53 90.72c7.9 3.95 17.51.75 21.47-7.15l14.31-28.63c3.95-7.91.74-17.52-7.16-21.47zM150 237.28l-5.48 25.87c-2.67 12.62 5.42 24.85 16.45 24.85h126.08c11.03 0 19.12-12.23 16.45-24.85l-5.5-25.87c41.78-22.41 70-62.75 70-109.28C368 57.31 303.53 0 224 0S80 57.31 80 128c0 46.53 28.22 86.87 70 109.28zM280 112c17.65 0 32 14.35 32 32s-14.35 32-32 32-32-14.35-32-32 14.35-32 32-32zm-112 0c17.65 0 32 14.35 32 32s-14.35 32-32 32-32-14.35-32-32 14.35-32 32-32z\"]\n};\nvar faSlash = {\n prefix: 'fas',\n iconName: 'slash',\n icon: [640, 512, [], \"f715\", \"M594.53 508.63L6.18 53.9c-6.97-5.42-8.23-15.47-2.81-22.45L23.01 6.18C28.43-.8 38.49-2.06 45.47 3.37L633.82 458.1c6.97 5.42 8.23 15.47 2.81 22.45l-19.64 25.27c-5.42 6.98-15.48 8.23-22.46 2.81z\"]\n};\nvar faSleigh = {\n prefix: 'fas',\n iconName: 'sleigh',\n icon: [640, 512, [], \"f7cc\", \"M612.7 350.7l-9.3-7.4c-6.9-5.5-17-4.4-22.5 2.5l-10 12.5c-5.5 6.9-4.4 17 2.5 22.5l9.3 7.4c5.9 4.7 9.2 11.7 9.2 19.2 0 13.6-11 24.6-24.6 24.6H48c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h516c39 0 73.7-29.3 75.9-68.3 1.4-23.8-8.7-46.3-27.2-61zM32 224c0 59.6 40.9 109.2 96 123.5V400h64v-48h192v48h64v-48c53 0 96-43 96-96v-96c17.7 0 32-14.3 32-32s-14.3-32-32-32h-96v64c0 35.3-28.7 64-64 64h-20.7c-65.8 0-125.9-37.2-155.3-96-29.4-58.8-89.6-96-155.3-96H32C14.3 32 0 46.3 0 64s14.3 32 32 32v128z\"]\n};\nvar faSlidersH = {\n prefix: 'fas',\n iconName: 'sliders-h',\n icon: [512, 512, [], \"f1de\", \"M496 384H160v-16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v16H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h80v16c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-16h336c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm0-160h-80v-16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v16H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h336v16c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-16h80c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm0-160H288V48c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v16H16C7.2 64 0 71.2 0 80v32c0 8.8 7.2 16 16 16h208v16c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-16h208c8.8 0 16-7.2 16-16V80c0-8.8-7.2-16-16-16z\"]\n};\nvar faSmile = {\n prefix: 'fas',\n iconName: 'smile',\n icon: [496, 512, [], \"f118\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm80 168c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm-160 0c17.7 0 32 14.3 32 32s-14.3 32-32 32-32-14.3-32-32 14.3-32 32-32zm194.8 170.2C334.3 380.4 292.5 400 248 400s-86.3-19.6-114.8-53.8c-13.6-16.3 11-36.7 24.6-20.5 22.4 26.9 55.2 42.2 90.2 42.2s67.8-15.4 90.2-42.2c13.4-16.2 38.1 4.2 24.6 20.5z\"]\n};\nvar faSmileBeam = {\n prefix: 'fas',\n iconName: 'smile-beam',\n icon: [496, 512, [], \"f5b8\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM112 223.4c3.3-42.1 32.2-71.4 56-71.4s52.7 29.3 56 71.4c.7 8.6-10.8 11.9-14.9 4.5l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.3 7.4-15.8 4-15.1-4.5zm250.8 122.8C334.3 380.4 292.5 400 248 400s-86.3-19.6-114.8-53.8c-13.5-16.3 11-36.7 24.6-20.5 22.4 26.9 55.2 42.2 90.2 42.2s67.8-15.4 90.2-42.2c13.6-16.2 38.1 4.3 24.6 20.5zm6.2-118.3l-9.5-17c-7.7-13.7-19.2-21.6-31.5-21.6s-23.8 7.9-31.5 21.6l-9.5 17c-4.1 7.3-15.6 4-14.9-4.5 3.3-42.1 32.2-71.4 56-71.4s52.7 29.3 56 71.4c.6 8.6-11 11.9-15.1 4.5z\"]\n};\nvar faSmileWink = {\n prefix: 'fas',\n iconName: 'smile-wink',\n icon: [496, 512, [], \"f4da\", \"M0 256c0 137 111 248 248 248s248-111 248-248S385 8 248 8 0 119 0 256zm200-48c0 17.7-14.3 32-32 32s-32-14.3-32-32 14.3-32 32-32 32 14.3 32 32zm158.5 16.5c-14.8-13.2-46.2-13.2-61 0L288 233c-8.3 7.4-21.6.4-19.8-10.8 4-25.2 34.2-42.1 59.9-42.1S384 197 388 222.2c1.7 11.1-11.4 18.3-19.8 10.8l-9.7-8.5zM157.8 325.8C180.2 352.7 213 368 248 368s67.8-15.4 90.2-42.2c13.6-16.2 38.1 4.2 24.6 20.5C334.3 380.4 292.5 400 248 400s-86.3-19.6-114.8-53.8c-13.5-16.3 11.2-36.7 24.6-20.4z\"]\n};\nvar faSmog = {\n prefix: 'fas',\n iconName: 'smog',\n icon: [640, 512, [], \"f75f\", \"M624 368H80c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h544c8.8 0 16-7.2 16-16v-16c0-8.8-7.2-16-16-16zm-480 96H16c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h128c8.8 0 16-7.2 16-16v-16c0-8.8-7.2-16-16-16zm416 0H224c-8.8 0-16 7.2-16 16v16c0 8.8 7.2 16 16 16h336c8.8 0 16-7.2 16-16v-16c0-8.8-7.2-16-16-16zM144 288h156.1c22.5 19.7 51.6 32 83.9 32s61.3-12.3 83.9-32H528c61.9 0 112-50.1 112-112S589.9 64 528 64c-18 0-34.7 4.6-49.7 12.1C454 31 406.8 0 352 0c-41 0-77.8 17.3-104 44.8C221.8 17.3 185 0 144 0 64.5 0 0 64.5 0 144s64.5 144 144 144z\"]\n};\nvar faSmoking = {\n prefix: 'fas',\n iconName: 'smoking',\n icon: [640, 512, [], \"f48d\", \"M632 352h-48c-4.4 0-8 3.6-8 8v144c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V360c0-4.4-3.6-8-8-8zM553.3 87.1c-5.7-3.8-9.3-10-9.3-16.8V8c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v62.3c0 22 10.2 43.4 28.6 55.4 42.2 27.3 67.4 73.8 67.4 124V280c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-30.3c0-65.5-32.4-126.2-86.7-162.6zM432 352H48c-26.5 0-48 21.5-48 48v64c0 26.5 21.5 48 48 48h384c8.8 0 16-7.2 16-16V368c0-8.8-7.2-16-16-16zm-32 112H224v-64h176v64zm87.7-322.4C463.8 125 448 99.3 448 70.3V8c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v66.4c0 43.7 24.6 81.6 60.3 106.7 22.4 15.7 35.7 41.2 35.7 68.6V280c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-30.3c0-43.3-21-83.4-56.3-108.1zM536 352h-48c-4.4 0-8 3.6-8 8v144c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8V360c0-4.4-3.6-8-8-8z\"]\n};\nvar faSmokingBan = {\n prefix: 'fas',\n iconName: 'smoking-ban',\n icon: [512, 512, [], \"f54d\", \"M96 304c0 8.8 7.2 16 16 16h117.5l-96-96H112c-8.8 0-16 7.2-16 16v64zM256 0C114.6 0 0 114.6 0 256s114.6 256 256 256 256-114.6 256-256S397.4 0 256 0zm0 448c-105.9 0-192-86.1-192-192 0-41.4 13.3-79.7 35.7-111.1l267.4 267.4C335.7 434.7 297.4 448 256 448zm45.2-192H384v32h-50.8l-32-32zm111.1 111.1L365.2 320H400c8.8 0 16-7.2 16-16v-64c0-8.8-7.2-16-16-16H269.2L144.9 99.7C176.3 77.3 214.6 64 256 64c105.9 0 192 86.1 192 192 0 41.4-13.3 79.7-35.7 111.1zM320.6 128c-15.6 0-28.6-11.2-31.4-25.9-.7-3.6-4-6.1-7.7-6.1h-16.2c-5 0-8.7 4.5-8 9.4 4.6 30.9 31.2 54.6 63.3 54.6 15.6 0 28.6 11.2 31.4 25.9.7 3.6 4 6.1 7.7 6.1h16.2c5 0 8.7-4.5 8-9.4-4.6-30.9-31.2-54.6-63.3-54.6z\"]\n};\nvar faSms = {\n prefix: 'fas',\n iconName: 'sms',\n icon: [512, 512, [], \"f7cd\", \"M256 32C114.6 32 0 125.1 0 240c0 49.6 21.4 95 57 130.7C44.5 421.1 2.7 466 2.2 466.5c-2.2 2.3-2.8 5.7-1.5 8.7 1.3 3 4.1 4.8 7.3 4.8 66.3 0 116-31.8 140.6-51.4 32.7 12.3 69 19.4 107.4 19.4 141.4 0 256-93.1 256-208S397.4 32 256 32zM128.2 304H116c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h12.3c6 0 10.4-3.5 10.4-6.6 0-1.3-.8-2.7-2.1-3.8l-21.9-18.8c-8.5-7.2-13.3-17.5-13.3-28.1 0-21.3 19-38.6 42.4-38.6H156c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8h-12.3c-6 0-10.4 3.5-10.4 6.6 0 1.3.8 2.7 2.1 3.8l21.9 18.8c8.5 7.2 13.3 17.5 13.3 28.1.1 21.3-19 38.6-42.4 38.6zm191.8-8c0 4.4-3.6 8-8 8h-16c-4.4 0-8-3.6-8-8v-68.2l-24.8 55.8c-2.9 5.9-11.4 5.9-14.3 0L224 227.8V296c0 4.4-3.6 8-8 8h-16c-4.4 0-8-3.6-8-8V192c0-8.8 7.2-16 16-16h16c6.1 0 11.6 3.4 14.3 8.8l17.7 35.4 17.7-35.4c2.7-5.4 8.3-8.8 14.3-8.8h16c8.8 0 16 7.2 16 16v104zm48.3 8H356c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h12.3c6 0 10.4-3.5 10.4-6.6 0-1.3-.8-2.7-2.1-3.8l-21.9-18.8c-8.5-7.2-13.3-17.5-13.3-28.1 0-21.3 19-38.6 42.4-38.6H396c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8h-12.3c-6 0-10.4 3.5-10.4 6.6 0 1.3.8 2.7 2.1 3.8l21.9 18.8c8.5 7.2 13.3 17.5 13.3 28.1.1 21.3-18.9 38.6-42.3 38.6z\"]\n};\nvar faSnowboarding = {\n prefix: 'fas',\n iconName: 'snowboarding',\n icon: [512, 512, [], \"f7ce\", \"M432 96c26.5 0 48-21.5 48-48S458.5 0 432 0s-48 21.5-48 48 21.5 48 48 48zm28.8 153.6c5.8 4.3 12.5 6.4 19.2 6.4 9.7 0 19.3-4.4 25.6-12.8 10.6-14.1 7.8-34.2-6.4-44.8l-111.4-83.5c-13.8-10.3-29.1-18.4-45.4-23.8l-63.7-21.2-26.1-52.1C244.7 2 225.5-4.4 209.7 3.5c-15.8 7.9-22.2 27.1-14.3 42.9l29.1 58.1c5.7 11.4 15.6 19.9 27.7 24l16.4 5.5-41.2 20.6c-21.8 10.9-35.4 32.8-35.4 57.2v53.1l-74.1 24.7c-16.8 5.6-25.8 23.7-20.2 40.5 1.7 5.2 4.9 9.4 8.7 12.9l-38.7-14.1c-9.7-3.5-17.4-10.6-21.8-20-5.6-12-19.9-17.2-31.9-11.6s-17.2 19.9-11.6 31.9c9.8 21 27.1 36.9 48.9 44.8l364.8 132.7c9.7 3.5 19.7 5.3 29.7 5.3 12.5 0 24.9-2.7 36.5-8.2 12-5.6 17.2-19.9 11.6-31.9S474 454.7 462 460.3c-9.3 4.4-19.8 4.8-29.5 1.3l-90.8-33.1c8.7-4.1 15.6-11.8 17.8-21.9l21.9-102c3.9-18.2-3.2-37.2-18.1-48.4l-52-39 66-30.5 83.5 62.9zm-144.4 51.7l-19.7 92c-1.5 7.1-.1 13.9 2.8 20l-169.4-61.6c2.7-.2 5.4-.4 8-1.3l85-28.4c19.6-6.5 32.8-24.8 32.8-45.5V256l60.5 45.3z\"]\n};\nvar faSnowflake = {\n prefix: 'fas',\n iconName: 'snowflake',\n icon: [448, 512, [], \"f2dc\", \"M440.3 345.2l-33.8-19.5 26-7c8.2-2.2 13.1-10.7 10.9-18.9l-4-14.9c-2.2-8.2-10.7-13.1-18.9-10.9l-70.8 19-63.9-37 63.8-36.9 70.8 19c8.2 2.2 16.7-2.7 18.9-10.9l4-14.9c2.2-8.2-2.7-16.7-10.9-18.9l-26-7 33.8-19.5c7.4-4.3 9.9-13.7 5.7-21.1L430.4 119c-4.3-7.4-13.7-9.9-21.1-5.7l-33.8 19.5 7-26c2.2-8.2-2.7-16.7-10.9-18.9l-14.9-4c-8.2-2.2-16.7 2.7-18.9 10.9l-19 70.8-62.8 36.2v-77.5l53.7-53.7c6.2-6.2 6.2-16.4 0-22.6l-11.3-11.3c-6.2-6.2-16.4-6.2-22.6 0L256 56.4V16c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v40.4l-19.7-19.7c-6.2-6.2-16.4-6.2-22.6 0L138.3 48c-6.3 6.2-6.3 16.4 0 22.6l53.7 53.7v77.5l-62.8-36.2-19-70.8c-2.2-8.2-10.7-13.1-18.9-10.9l-14.9 4c-8.2 2.2-13.1 10.7-10.9 18.9l7 26-33.8-19.5c-7.4-4.3-16.8-1.7-21.1 5.7L2.1 145.7c-4.3 7.4-1.7 16.8 5.7 21.1l33.8 19.5-26 7c-8.3 2.2-13.2 10.7-11 19l4 14.9c2.2 8.2 10.7 13.1 18.9 10.9l70.8-19 63.8 36.9-63.8 36.9-70.8-19c-8.2-2.2-16.7 2.7-18.9 10.9l-4 14.9c-2.2 8.2 2.7 16.7 10.9 18.9l26 7-33.8 19.6c-7.4 4.3-9.9 13.7-5.7 21.1l15.5 26.8c4.3 7.4 13.7 9.9 21.1 5.7l33.8-19.5-7 26c-2.2 8.2 2.7 16.7 10.9 18.9l14.9 4c8.2 2.2 16.7-2.7 18.9-10.9l19-70.8 62.8-36.2v77.5l-53.7 53.7c-6.3 6.2-6.3 16.4 0 22.6l11.3 11.3c6.2 6.2 16.4 6.2 22.6 0l19.7-19.7V496c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-40.4l19.7 19.7c6.2 6.2 16.4 6.2 22.6 0l11.3-11.3c6.2-6.2 6.2-16.4 0-22.6L256 387.7v-77.5l62.8 36.2 19 70.8c2.2 8.2 10.7 13.1 18.9 10.9l14.9-4c8.2-2.2 13.1-10.7 10.9-18.9l-7-26 33.8 19.5c7.4 4.3 16.8 1.7 21.1-5.7l15.5-26.8c4.3-7.3 1.8-16.8-5.6-21z\"]\n};\nvar faSnowman = {\n prefix: 'fas',\n iconName: 'snowman',\n icon: [512, 512, [], \"f7d0\", \"M510.9 152.3l-5.9-14.5c-3.3-8-12.6-11.9-20.8-8.7L456 140.6v-29c0-8.6-7.2-15.6-16-15.6h-16c-8.8 0-16 7-16 15.6v46.9c0 .5.3 1 .3 1.5l-56.4 23c-5.9-10-13.3-18.9-22-26.6 13.6-16.6 22-37.4 22-60.5 0-53-43-96-96-96s-96 43-96 96c0 23.1 8.5 43.9 22 60.5-8.7 7.7-16 16.6-22 26.6l-56.4-23c.1-.5.3-1 .3-1.5v-46.9C104 103 96.8 96 88 96H72c-8.8 0-16 7-16 15.6v29l-28.1-11.5c-8.2-3.2-17.5.7-20.8 8.7l-5.9 14.5c-3.3 8 .7 17.1 8.9 20.3l135.2 55.2c-.4 4-1.2 8-1.2 12.2 0 10.1 1.7 19.6 4.2 28.9C120.9 296.4 104 334.2 104 376c0 54 28.4 100.9 70.8 127.8 9.3 5.9 20.3 8.2 31.3 8.2h99.2c13.3 0 26.3-4.1 37.2-11.7 46.5-32.3 74.4-89.4 62.9-152.6-5.5-30.2-20.5-57.6-41.6-79 2.5-9.2 4.2-18.7 4.2-28.7 0-4.2-.8-8.1-1.2-12.2L502 172.6c8.1-3.1 12.1-12.2 8.9-20.3zM224 96c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm32 272c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm0-64c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm0-64c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16zm0-88s-16-23.2-16-32 7.2-16 16-16 16 7.2 16 16-16 32-16 32zm32-56c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16z\"]\n};\nvar faSnowplow = {\n prefix: 'fas',\n iconName: 'snowplow',\n icon: [640, 512, [], \"f7d2\", \"M120 376c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zm80 0c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zm80 0c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zm80 0c-13.3 0-24 10.7-24 24s10.7 24 24 24 24-10.7 24-24-10.7-24-24-24zm238.6 49.4c-14.5-14.5-22.6-34.1-22.6-54.6V269.2c0-20.5 8.1-40.1 22.6-54.6l36.7-36.7c6.2-6.2 6.2-16.4 0-22.6l-22.6-22.6c-6.2-6.2-16.4-6.2-22.6 0l-36.7 36.7c-26.5 26.5-41.4 62.4-41.4 99.9V288h-64v-50.9c0-8.7-1.8-17.2-5.2-25.2L364.5 29.1C356.9 11.4 339.6 0 320.3 0H176c-26.5 0-48 21.5-48 48v112h-16c-26.5 0-48 21.5-48 48v91.2C26.3 317.2 0 355.4 0 400c0 61.9 50.1 112 112 112h256c61.9 0 112-50.1 112-112 0-17.3-4.2-33.4-11.2-48H512v18.7c0 37.5 14.9 73.4 41.4 99.9l36.7 36.7c6.2 6.2 16.4 6.2 22.6 0l22.6-22.6c6.2-6.2 6.2-16.4 0-22.6l-36.7-36.7zM192 64h117.8l68.6 160H256l-64-64V64zm176 384H112c-26.5 0-48-21.5-48-48s21.5-48 48-48h256c26.5 0 48 21.5 48 48s-21.5 48-48 48z\"]\n};\nvar faSocks = {\n prefix: 'fas',\n iconName: 'socks',\n icon: [512, 512, [], \"f696\", \"M214.66 311.01L288 256V96H128v176l-86.65 64.61c-39.4 29.56-53.86 84.42-29.21 127.06C30.39 495.25 63.27 512 96.08 512c20.03 0 40.25-6.25 57.52-19.2l21.86-16.39c-29.85-55.38-13.54-125.84 39.2-165.4zM288 32c0-11.05 3.07-21.3 8.02-30.38C293.4.92 290.85 0 288 0H160c-17.67 0-32 14.33-32 32v32h160V32zM480 0H352c-17.67 0-32 14.33-32 32v32h192V32c0-17.67-14.33-32-32-32zM320 272l-86.13 64.61c-39.4 29.56-53.86 84.42-29.21 127.06 18.25 31.58 50.61 48.33 83.42 48.33 20.03 0 40.25-6.25 57.52-19.2l115.2-86.4A127.997 127.997 0 0 0 512 304V96H320v176z\"]\n};\nvar faSolarPanel = {\n prefix: 'fas',\n iconName: 'solar-panel',\n icon: [640, 512, [], \"f5ba\", \"M431.98 448.01l-47.97.05V416h-128v32.21l-47.98.05c-8.82.01-15.97 7.16-15.98 15.99l-.05 31.73c-.01 8.85 7.17 16.03 16.02 16.02l223.96-.26c8.82-.01 15.97-7.16 15.98-15.98l.04-31.73c.01-8.85-7.17-16.03-16.02-16.02zM585.2 26.74C582.58 11.31 568.99 0 553.06 0H86.93C71 0 57.41 11.31 54.79 26.74-3.32 369.16.04 348.08.03 352c-.03 17.32 14.29 32 32.6 32h574.74c18.23 0 32.51-14.56 32.59-31.79.02-4.08 3.35 16.95-54.76-325.47zM259.83 64h120.33l9.77 96H250.06l9.77-96zm-75.17 256H71.09L90.1 208h105.97l-11.41 112zm16.29-160H98.24l16.29-96h96.19l-9.77 96zm32.82 160l11.4-112h149.65l11.4 112H233.77zm195.5-256h96.19l16.29 96H439.04l-9.77-96zm26.06 256l-11.4-112H549.9l19.01 112H455.33z\"]\n};\nvar faSort = {\n prefix: 'fas',\n iconName: 'sort',\n icon: [320, 512, [], \"f0dc\", \"M41 288h238c21.4 0 32.1 25.9 17 41L177 448c-9.4 9.4-24.6 9.4-33.9 0L24 329c-15.1-15.1-4.4-41 17-41zm255-105L177 64c-9.4-9.4-24.6-9.4-33.9 0L24 183c-15.1 15.1-4.4 41 17 41h238c21.4 0 32.1-25.9 17-41z\"]\n};\nvar faSortAlphaDown = {\n prefix: 'fas',\n iconName: 'sort-alpha-down',\n icon: [448, 512, [], \"f15d\", \"M176 352h-48V48a16 16 0 0 0-16-16H80a16 16 0 0 0-16 16v304H16c-14.19 0-21.36 17.24-11.29 27.31l80 96a16 16 0 0 0 22.62 0l80-96C197.35 369.26 190.22 352 176 352zm240-64H288a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h56l-61.26 70.45A32 32 0 0 0 272 446.37V464a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-56l61.26-70.45A32 32 0 0 0 432 321.63V304a16 16 0 0 0-16-16zm31.06-85.38l-59.27-160A16 16 0 0 0 372.72 32h-41.44a16 16 0 0 0-15.07 10.62l-59.27 160A16 16 0 0 0 272 224h24.83a16 16 0 0 0 15.23-11.08l4.42-12.92h71l4.41 12.92A16 16 0 0 0 407.16 224H432a16 16 0 0 0 15.06-21.38zM335.61 144L352 96l16.39 48z\"]\n};\nvar faSortAlphaDownAlt = {\n prefix: 'fas',\n iconName: 'sort-alpha-down-alt',\n icon: [448, 512, [], \"f881\", \"M176 352h-48V48a16 16 0 0 0-16-16H80a16 16 0 0 0-16 16v304H16c-14.19 0-21.36 17.24-11.29 27.31l80 96a16 16 0 0 0 22.62 0l80-96C197.35 369.26 190.22 352 176 352zm112-128h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-56l61.26-70.45A32 32 0 0 0 432 65.63V48a16 16 0 0 0-16-16H288a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h56l-61.26 70.45A32 32 0 0 0 272 190.37V208a16 16 0 0 0 16 16zm159.06 234.62l-59.27-160A16 16 0 0 0 372.72 288h-41.44a16 16 0 0 0-15.07 10.62l-59.27 160A16 16 0 0 0 272 480h24.83a16 16 0 0 0 15.23-11.08l4.42-12.92h71l4.41 12.92A16 16 0 0 0 407.16 480H432a16 16 0 0 0 15.06-21.38zM335.61 400L352 352l16.39 48z\"]\n};\nvar faSortAlphaUp = {\n prefix: 'fas',\n iconName: 'sort-alpha-up',\n icon: [448, 512, [], \"f15e\", \"M16 160h48v304a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V160h48c14.21 0 21.38-17.24 11.31-27.31l-80-96a16 16 0 0 0-22.62 0l-80 96C-5.35 142.74 1.78 160 16 160zm400 128H288a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h56l-61.26 70.45A32 32 0 0 0 272 446.37V464a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-56l61.26-70.45A32 32 0 0 0 432 321.63V304a16 16 0 0 0-16-16zm31.06-85.38l-59.27-160A16 16 0 0 0 372.72 32h-41.44a16 16 0 0 0-15.07 10.62l-59.27 160A16 16 0 0 0 272 224h24.83a16 16 0 0 0 15.23-11.08l4.42-12.92h71l4.41 12.92A16 16 0 0 0 407.16 224H432a16 16 0 0 0 15.06-21.38zM335.61 144L352 96l16.39 48z\"]\n};\nvar faSortAlphaUpAlt = {\n prefix: 'fas',\n iconName: 'sort-alpha-up-alt',\n icon: [448, 512, [], \"f882\", \"M16 160h48v304a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V160h48c14.21 0 21.38-17.24 11.31-27.31l-80-96a16 16 0 0 0-22.62 0l-80 96C-5.35 142.74 1.78 160 16 160zm272 64h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-56l61.26-70.45A32 32 0 0 0 432 65.63V48a16 16 0 0 0-16-16H288a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h56l-61.26 70.45A32 32 0 0 0 272 190.37V208a16 16 0 0 0 16 16zm159.06 234.62l-59.27-160A16 16 0 0 0 372.72 288h-41.44a16 16 0 0 0-15.07 10.62l-59.27 160A16 16 0 0 0 272 480h24.83a16 16 0 0 0 15.23-11.08l4.42-12.92h71l4.41 12.92A16 16 0 0 0 407.16 480H432a16 16 0 0 0 15.06-21.38zM335.61 400L352 352l16.39 48z\"]\n};\nvar faSortAmountDown = {\n prefix: 'fas',\n iconName: 'sort-amount-down',\n icon: [512, 512, [], \"f160\", \"M304 416h-64a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h64a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-128-64h-48V48a16 16 0 0 0-16-16H80a16 16 0 0 0-16 16v304H16c-14.19 0-21.37 17.24-11.29 27.31l80 96a16 16 0 0 0 22.62 0l80-96C197.35 369.26 190.22 352 176 352zm256-192H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h192a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-64 128H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM496 32H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h256a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z\"]\n};\nvar faSortAmountDownAlt = {\n prefix: 'fas',\n iconName: 'sort-amount-down-alt',\n icon: [512, 512, [], \"f884\", \"M240 96h64a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16h-64a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm0 128h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm256 192H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h256a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-256-64h192a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm-64 0h-48V48a16 16 0 0 0-16-16H80a16 16 0 0 0-16 16v304H16c-14.19 0-21.37 17.24-11.29 27.31l80 96a16 16 0 0 0 22.62 0l80-96C197.35 369.26 190.22 352 176 352z\"]\n};\nvar faSortAmountUp = {\n prefix: 'fas',\n iconName: 'sort-amount-up',\n icon: [512, 512, [], \"f161\", \"M304 416h-64a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h64a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM16 160h48v304a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V160h48c14.21 0 21.38-17.24 11.31-27.31l-80-96a16 16 0 0 0-22.62 0l-80 96C-5.35 142.74 1.77 160 16 160zm416 0H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h192a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-64 128H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM496 32H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h256a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z\"]\n};\nvar faSortAmountUpAlt = {\n prefix: 'fas',\n iconName: 'sort-amount-up-alt',\n icon: [512, 512, [], \"f885\", \"M240 96h64a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16h-64a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm0 128h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm256 192H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h256a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-256-64h192a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16H240a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zM16 160h48v304a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V160h48c14.21 0 21.39-17.24 11.31-27.31l-80-96a16 16 0 0 0-22.62 0l-80 96C-5.35 142.74 1.78 160 16 160z\"]\n};\nvar faSortDown = {\n prefix: 'fas',\n iconName: 'sort-down',\n icon: [320, 512, [], \"f0dd\", \"M41 288h238c21.4 0 32.1 25.9 17 41L177 448c-9.4 9.4-24.6 9.4-33.9 0L24 329c-15.1-15.1-4.4-41 17-41z\"]\n};\nvar faSortNumericDown = {\n prefix: 'fas',\n iconName: 'sort-numeric-down',\n icon: [448, 512, [], \"f162\", \"M304 96h16v64h-16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h96a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-16V48a16 16 0 0 0-16-16h-48a16 16 0 0 0-14.29 8.83l-16 32A16 16 0 0 0 304 96zm26.15 162.91a79 79 0 0 0-55 54.17c-14.25 51.05 21.21 97.77 68.85 102.53a84.07 84.07 0 0 1-20.85 12.91c-7.57 3.4-10.8 12.47-8.18 20.34l9.9 20c2.87 8.63 12.53 13.49 20.9 9.91 58-24.76 86.25-61.61 86.25-132V336c-.02-51.21-48.4-91.34-101.85-77.09zM352 356a20 20 0 1 1 20-20 20 20 0 0 1-20 20zm-176-4h-48V48a16 16 0 0 0-16-16H80a16 16 0 0 0-16 16v304H16c-14.19 0-21.36 17.24-11.29 27.31l80 96a16 16 0 0 0 22.62 0l80-96C197.35 369.26 190.22 352 176 352z\"]\n};\nvar faSortNumericDownAlt = {\n prefix: 'fas',\n iconName: 'sort-numeric-down-alt',\n icon: [448, 512, [], \"f886\", \"M176 352h-48V48a16 16 0 0 0-16-16H80a16 16 0 0 0-16 16v304H16c-14.19 0-21.36 17.24-11.29 27.31l80 96a16 16 0 0 0 22.62 0l80-96C197.35 369.26 190.22 352 176 352zm224 64h-16V304a16 16 0 0 0-16-16h-48a16 16 0 0 0-14.29 8.83l-16 32A16 16 0 0 0 304 352h16v64h-16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h96a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM330.17 34.91a79 79 0 0 0-55 54.17c-14.27 51.05 21.19 97.77 68.83 102.53a84.07 84.07 0 0 1-20.85 12.91c-7.57 3.4-10.8 12.47-8.18 20.34l9.9 20c2.87 8.63 12.53 13.49 20.9 9.91 58-24.77 86.25-61.61 86.25-132V112c-.02-51.21-48.4-91.34-101.85-77.09zM352 132a20 20 0 1 1 20-20 20 20 0 0 1-20 20z\"]\n};\nvar faSortNumericUp = {\n prefix: 'fas',\n iconName: 'sort-numeric-up',\n icon: [448, 512, [], \"f163\", \"M330.17 258.91a79 79 0 0 0-55 54.17c-14.27 51.05 21.19 97.77 68.83 102.53a84.07 84.07 0 0 1-20.85 12.91c-7.57 3.4-10.8 12.47-8.18 20.34l9.9 20c2.87 8.63 12.53 13.49 20.9 9.91 58-24.76 86.25-61.61 86.25-132V336c-.02-51.21-48.4-91.34-101.85-77.09zM352 356a20 20 0 1 1 20-20 20 20 0 0 1-20 20zM304 96h16v64h-16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h96a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-16V48a16 16 0 0 0-16-16h-48a16 16 0 0 0-14.29 8.83l-16 32A16 16 0 0 0 304 96zM107.31 36.69a16 16 0 0 0-22.62 0l-80 96C-5.35 142.74 1.78 160 16 160h48v304a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V160h48c14.21 0 21.38-17.24 11.31-27.31z\"]\n};\nvar faSortNumericUpAlt = {\n prefix: 'fas',\n iconName: 'sort-numeric-up-alt',\n icon: [448, 512, [], \"f887\", \"M107.31 36.69a16 16 0 0 0-22.62 0l-80 96C-5.35 142.74 1.78 160 16 160h48v304a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V160h48c14.21 0 21.38-17.24 11.31-27.31zM400 416h-16V304a16 16 0 0 0-16-16h-48a16 16 0 0 0-14.29 8.83l-16 32A16 16 0 0 0 304 352h16v64h-16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h96a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM330.17 34.91a79 79 0 0 0-55 54.17c-14.27 51.05 21.19 97.77 68.83 102.53a84.07 84.07 0 0 1-20.85 12.91c-7.57 3.4-10.8 12.47-8.18 20.34l9.9 20c2.87 8.63 12.53 13.49 20.9 9.91 58-24.77 86.25-61.61 86.25-132V112c-.02-51.21-48.4-91.34-101.85-77.09zM352 132a20 20 0 1 1 20-20 20 20 0 0 1-20 20z\"]\n};\nvar faSortUp = {\n prefix: 'fas',\n iconName: 'sort-up',\n icon: [320, 512, [], \"f0de\", \"M279 224H41c-21.4 0-32.1-25.9-17-41L143 64c9.4-9.4 24.6-9.4 33.9 0l119 119c15.2 15.1 4.5 41-16.9 41z\"]\n};\nvar faSpa = {\n prefix: 'fas',\n iconName: 'spa',\n icon: [576, 512, [], \"f5bb\", \"M568.25 192c-29.04.13-135.01 6.16-213.84 83-33.12 29.63-53.36 63.3-66.41 94.86-13.05-31.56-33.29-65.23-66.41-94.86-78.83-76.84-184.8-82.87-213.84-83-4.41-.02-7.79 3.4-7.75 7.82.23 27.92 7.14 126.14 88.77 199.3C172.79 480.94 256 480 288 480s115.19.95 199.23-80.88c81.64-73.17 88.54-171.38 88.77-199.3.04-4.42-3.34-7.84-7.75-7.82zM287.98 302.6c12.82-18.85 27.6-35.78 44.09-50.52 19.09-18.61 39.58-33.3 60.26-45.18-16.44-70.5-51.72-133.05-96.73-172.22-4.11-3.58-11.02-3.58-15.14 0-44.99 39.14-80.27 101.63-96.74 172.07 20.37 11.7 40.5 26.14 59.22 44.39a282.768 282.768 0 0 1 45.04 51.46z\"]\n};\nvar faSpaceShuttle = {\n prefix: 'fas',\n iconName: 'space-shuttle',\n icon: [640, 512, [], \"f197\", \"M592.604 208.244C559.735 192.836 515.777 184 472 184H186.327c-4.952-6.555-10.585-11.978-16.72-16H376C229.157 137.747 219.403 32 96.003 32H96v128H80V32c-26.51 0-48 28.654-48 64v64c-23.197 0-32 10.032-32 24v40c0 13.983 8.819 24 32 24v16c-23.197 0-32 10.032-32 24v40c0 13.983 8.819 24 32 24v64c0 35.346 21.49 64 48 64V352h16v128h.003c123.4 0 133.154-105.747 279.997-136H169.606c6.135-4.022 11.768-9.445 16.72-16H472c43.777 0 87.735-8.836 120.604-24.244C622.282 289.845 640 271.992 640 256s-17.718-33.845-47.396-47.756zM488 296a8 8 0 0 1-8-8v-64a8 8 0 0 1 8-8c31.909 0 31.942 80 0 80z\"]\n};\nvar faSpellCheck = {\n prefix: 'fas',\n iconName: 'spell-check',\n icon: [576, 512, [], \"f891\", \"M272 256h91.36c43.2 0 82-32.2 84.51-75.34a79.82 79.82 0 0 0-25.26-63.07 79.81 79.81 0 0 0 9.06-44.91C427.9 30.57 389.3 0 347 0h-75a16 16 0 0 0-16 16v224a16 16 0 0 0 16 16zm40-200h40a24 24 0 0 1 0 48h-40zm0 96h56a24 24 0 0 1 0 48h-56zM155.12 22.25A32 32 0 0 0 124.64 0H99.36a32 32 0 0 0-30.48 22.25L.59 235.73A16 16 0 0 0 16 256h24.93a16 16 0 0 0 15.42-11.73L68.29 208h87.42l11.94 36.27A16 16 0 0 0 183.07 256H208a16 16 0 0 0 15.42-20.27zM89.37 144L112 75.3l22.63 68.7zm482 132.48l-45.21-45.3a15.88 15.88 0 0 0-22.59 0l-151.5 151.5-55.41-55.5a15.88 15.88 0 0 0-22.59 0l-45.3 45.3a16 16 0 0 0 0 22.59l112 112.21a15.89 15.89 0 0 0 22.6 0l208-208.21a16 16 0 0 0-.02-22.59z\"]\n};\nvar faSpider = {\n prefix: 'fas',\n iconName: 'spider',\n icon: [576, 512, [], \"f717\", \"M151.17 167.35L177.1 176h4.67l5.22-26.12c.72-3.58 1.8-7.58 3.21-11.79l-20.29-40.58 23.8-71.39c2.79-8.38-1.73-17.44-10.12-20.24L168.42.82c-8.38-2.8-17.45 1.73-20.24 10.12l-25.89 77.68a32.04 32.04 0 0 0 1.73 24.43l27.15 54.3zm422.14 182.03l-52.75-79.12a32.002 32.002 0 0 0-26.62-14.25H416l68.99-24.36a32.03 32.03 0 0 0 16.51-12.61l53.6-80.41c4.9-7.35 2.91-17.29-4.44-22.19l-13.31-8.88c-7.35-4.9-17.29-2.91-22.19 4.44l-50.56 75.83L404.1 208H368l-10.37-51.85C355.44 145.18 340.26 96 288 96c-52.26 0-67.44 49.18-69.63 60.15L208 208h-36.1l-60.49-20.17L60.84 112c-4.9-7.35-14.83-9.34-22.19-4.44l-13.31 8.88c-7.35 4.9-9.34 14.83-4.44 22.19l53.6 80.41a32.03 32.03 0 0 0 16.51 12.61L160 256H82.06a32.02 32.02 0 0 0-26.63 14.25L2.69 349.38c-4.9 7.35-2.92 17.29 4.44 22.19l13.31 8.88c7.35 4.9 17.29 2.91 22.19-4.44l48-72h47.06l-60.83 97.33A31.988 31.988 0 0 0 72 418.3V496c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-73.11l74.08-118.53c-1.01 14.05-2.08 28.11-2.08 42.21C192 399.64 232.76 448 288 448s96-48.36 96-101.43c0-14.1-1.08-28.16-2.08-42.21L456 422.89V496c0 8.84 7.16 16 16 16h16c8.84 0 16-7.16 16-16v-77.71c0-6-1.69-11.88-4.86-16.96L438.31 304h47.06l48 72c4.9 7.35 14.84 9.34 22.19 4.44l13.31-8.88c7.36-4.9 9.34-14.83 4.44-22.18zM406.09 97.51l-20.29 40.58c1.41 4.21 2.49 8.21 3.21 11.79l5.22 26.12h4.67l25.93-8.65 27.15-54.3a31.995 31.995 0 0 0 1.73-24.43l-25.89-77.68C425.03 2.56 415.96-1.98 407.58.82l-15.17 5.06c-8.38 2.8-12.91 11.86-10.12 20.24l23.8 71.39z\"]\n};\nvar faSpinner = {\n prefix: 'fas',\n iconName: 'spinner',\n icon: [512, 512, [], \"f110\", \"M304 48c0 26.51-21.49 48-48 48s-48-21.49-48-48 21.49-48 48-48 48 21.49 48 48zm-48 368c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.49-48-48-48zm208-208c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.49-48-48-48zM96 256c0-26.51-21.49-48-48-48S0 229.49 0 256s21.49 48 48 48 48-21.49 48-48zm12.922 99.078c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48c0-26.509-21.491-48-48-48zm294.156 0c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48c0-26.509-21.49-48-48-48zM108.922 60.922c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.491-48-48-48z\"]\n};\nvar faSplotch = {\n prefix: 'fas',\n iconName: 'splotch',\n icon: [512, 512, [], \"f5bc\", \"M472.29 195.89l-67.06-22.95c-19.28-6.6-33.54-20.92-38.14-38.3L351.1 74.19c-11.58-43.77-76.57-57.13-109.98-22.62l-46.14 47.67c-13.26 13.71-33.54 20.93-54.2 19.31l-71.88-5.62c-52.05-4.07-86.93 44.88-59.03 82.83l38.54 52.42c11.08 15.07 12.82 33.86 4.64 50.24L24.62 355.4c-20.59 41.25 22.84 84.87 73.49 73.81l69.96-15.28c20.11-4.39 41.45 0 57.07 11.73l54.32 40.83c39.32 29.56 101.04 7.57 104.45-37.22l4.7-61.86c1.35-17.79 12.8-33.86 30.63-42.99l62-31.74c44.88-22.96 39.59-80.17-8.95-96.79z\"]\n};\nvar faSprayCan = {\n prefix: 'fas',\n iconName: 'spray-can',\n icon: [512, 512, [], \"f5bd\", \"M224 32c0-17.67-14.33-32-32-32h-64c-17.67 0-32 14.33-32 32v96h128V32zm256 96c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32zm-256 32H96c-53.02 0-96 42.98-96 96v224c0 17.67 14.33 32 32 32h256c17.67 0 32-14.33 32-32V256c0-53.02-42.98-96-96-96zm-64 256c-44.18 0-80-35.82-80-80s35.82-80 80-80 80 35.82 80 80-35.82 80-80 80zM480 96c17.67 0 32-14.33 32-32s-14.33-32-32-32-32 14.33-32 32 14.33 32 32 32zm-96 32c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32zm-96-96c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32zm96 0c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32zm96 192c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32z\"]\n};\nvar faSquare = {\n prefix: 'fas',\n iconName: 'square',\n icon: [448, 512, [], \"f0c8\", \"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48z\"]\n};\nvar faSquareFull = {\n prefix: 'fas',\n iconName: 'square-full',\n icon: [512, 512, [], \"f45c\", \"M512 512H0V0h512v512z\"]\n};\nvar faSquareRootAlt = {\n prefix: 'fas',\n iconName: 'square-root-alt',\n icon: [576, 512, [], \"f698\", \"M571.31 251.31l-22.62-22.62c-6.25-6.25-16.38-6.25-22.63 0L480 274.75l-46.06-46.06c-6.25-6.25-16.38-6.25-22.63 0l-22.62 22.62c-6.25 6.25-6.25 16.38 0 22.63L434.75 320l-46.06 46.06c-6.25 6.25-6.25 16.38 0 22.63l22.62 22.62c6.25 6.25 16.38 6.25 22.63 0L480 365.25l46.06 46.06c6.25 6.25 16.38 6.25 22.63 0l22.62-22.62c6.25-6.25 6.25-16.38 0-22.63L525.25 320l46.06-46.06c6.25-6.25 6.25-16.38 0-22.63zM552 0H307.65c-14.54 0-27.26 9.8-30.95 23.87l-84.79 322.8-58.41-106.1A32.008 32.008 0 0 0 105.47 224H24c-13.25 0-24 10.74-24 24v48c0 13.25 10.75 24 24 24h43.62l88.88 163.73C168.99 503.5 186.3 512 204.94 512c17.27 0 44.44-9 54.28-41.48L357.03 96H552c13.25 0 24-10.75 24-24V24c0-13.26-10.75-24-24-24z\"]\n};\nvar faStamp = {\n prefix: 'fas',\n iconName: 'stamp',\n icon: [512, 512, [], \"f5bf\", \"M32 512h448v-64H32v64zm384-256h-66.56c-16.26 0-29.44-13.18-29.44-29.44v-9.46c0-27.37 8.88-53.41 21.46-77.72 9.11-17.61 12.9-38.39 9.05-60.42-6.77-38.78-38.47-70.7-77.26-77.45C212.62-9.04 160 37.33 160 96c0 14.16 3.12 27.54 8.69 39.58C182.02 164.43 192 194.7 192 226.49v.07c0 16.26-13.18 29.44-29.44 29.44H96c-53.02 0-96 42.98-96 96v32c0 17.67 14.33 32 32 32h448c17.67 0 32-14.33 32-32v-32c0-53.02-42.98-96-96-96z\"]\n};\nvar faStar = {\n prefix: 'fas',\n iconName: 'star',\n icon: [576, 512, [], \"f005\", \"M259.3 17.8L194 150.2 47.9 171.5c-26.2 3.8-36.7 36.1-17.7 54.6l105.7 103-25 145.5c-4.5 26.3 23.2 46 46.4 33.7L288 439.6l130.7 68.7c23.2 12.2 50.9-7.4 46.4-33.7l-25-145.5 105.7-103c19-18.5 8.5-50.8-17.7-54.6L382 150.2 316.7 17.8c-11.7-23.6-45.6-23.9-57.4 0z\"]\n};\nvar faStarAndCrescent = {\n prefix: 'fas',\n iconName: 'star-and-crescent',\n icon: [512, 512, [], \"f699\", \"M340.47 466.36c-1.45 0-6.89.46-9.18.46-116.25 0-210.82-94.57-210.82-210.82S215.04 45.18 331.29 45.18c2.32 0 7.7.46 9.18.46 7.13 0 13.33-5.03 14.75-12.07 1.46-7.25-2.55-14.49-9.47-17.09C316.58 5.54 286.39 0 256 0 114.84 0 0 114.84 0 256s114.84 256 256 256c30.23 0 60.28-5.49 89.32-16.32 5.96-2.02 10.28-7.64 10.28-14.26 0-8.09-6.39-15.06-15.13-15.06zm162.99-252.5l-76.38-11.1-34.16-69.21c-1.83-3.7-5.38-5.55-8.93-5.55s-7.1 1.85-8.93 5.55l-34.16 69.21-76.38 11.1c-8.17 1.18-11.43 11.22-5.52 16.99l55.27 53.87-13.05 76.07c-1.11 6.44 4.01 11.66 9.81 11.66 1.53 0 3.11-.36 4.64-1.17L384 335.37l68.31 35.91c1.53.8 3.11 1.17 4.64 1.17 5.8 0 10.92-5.23 9.81-11.66l-13.05-76.07 55.27-53.87c5.91-5.77 2.65-15.81-5.52-16.99z\"]\n};\nvar faStarHalf = {\n prefix: 'fas',\n iconName: 'star-half',\n icon: [576, 512, [], \"f089\", \"M288 0c-11.4 0-22.8 5.9-28.7 17.8L194 150.2 47.9 171.4c-26.2 3.8-36.7 36.1-17.7 54.6l105.7 103-25 145.5c-4.5 26.1 23 46 46.4 33.7L288 439.6V0z\"]\n};\nvar faStarHalfAlt = {\n prefix: 'fas',\n iconName: 'star-half-alt',\n icon: [536, 512, [], \"f5c0\", \"M508.55 171.51L362.18 150.2 296.77 17.81C290.89 5.98 279.42 0 267.95 0c-11.4 0-22.79 5.9-28.69 17.81l-65.43 132.38-146.38 21.29c-26.25 3.8-36.77 36.09-17.74 54.59l105.89 103-25.06 145.48C86.98 495.33 103.57 512 122.15 512c4.93 0 10-1.17 14.87-3.75l130.95-68.68 130.94 68.7c4.86 2.55 9.92 3.71 14.83 3.71 18.6 0 35.22-16.61 31.66-37.4l-25.03-145.49 105.91-102.98c19.04-18.5 8.52-50.8-17.73-54.6zm-121.74 123.2l-18.12 17.62 4.28 24.88 19.52 113.45-102.13-53.59-22.38-11.74.03-317.19 51.03 103.29 11.18 22.63 25.01 3.64 114.23 16.63-82.65 80.38z\"]\n};\nvar faStarOfDavid = {\n prefix: 'fas',\n iconName: 'star-of-david',\n icon: [464, 512, [], \"f69a\", \"M405.68 256l53.21-89.39C473.3 142.4 455.48 112 426.88 112H319.96l-55.95-93.98C256.86 6.01 244.43 0 232 0s-24.86 6.01-32.01 18.02L144.04 112H37.11c-28.6 0-46.42 30.4-32.01 54.61L58.32 256 5.1 345.39C-9.31 369.6 8.51 400 37.11 400h106.93l55.95 93.98C207.14 505.99 219.57 512 232 512s24.86-6.01 32.01-18.02L319.96 400h106.93c28.6 0 46.42-30.4 32.01-54.61L405.68 256zm-12.78-88l-19.8 33.26L353.3 168h39.6zm-52.39 88l-52.39 88H175.88l-52.39-88 52.38-88h112.25l52.39 88zM232 73.72L254.79 112h-45.57L232 73.72zM71.1 168h39.6l-19.8 33.26L71.1 168zm0 176l19.8-33.26L110.7 344H71.1zM232 438.28L209.21 400h45.57L232 438.28zM353.29 344l19.8-33.26L392.9 344h-39.61z\"]\n};\nvar faStarOfLife = {\n prefix: 'fas',\n iconName: 'star-of-life',\n icon: [480, 512, [], \"f621\", \"M471.99 334.43L336.06 256l135.93-78.43c7.66-4.42 10.28-14.2 5.86-21.86l-32.02-55.43c-4.42-7.65-14.21-10.28-21.87-5.86l-135.93 78.43V16c0-8.84-7.17-16-16.01-16h-64.04c-8.84 0-16.01 7.16-16.01 16v156.86L56.04 94.43c-7.66-4.42-17.45-1.79-21.87 5.86L2.15 155.71c-4.42 7.65-1.8 17.44 5.86 21.86L143.94 256 8.01 334.43c-7.66 4.42-10.28 14.21-5.86 21.86l32.02 55.43c4.42 7.65 14.21 10.27 21.87 5.86l135.93-78.43V496c0 8.84 7.17 16 16.01 16h64.04c8.84 0 16.01-7.16 16.01-16V339.14l135.93 78.43c7.66 4.42 17.45 1.8 21.87-5.86l32.02-55.43c4.42-7.65 1.8-17.43-5.86-21.85z\"]\n};\nvar faStepBackward = {\n prefix: 'fas',\n iconName: 'step-backward',\n icon: [448, 512, [], \"f048\", \"M64 468V44c0-6.6 5.4-12 12-12h48c6.6 0 12 5.4 12 12v176.4l195.5-181C352.1 22.3 384 36.6 384 64v384c0 27.4-31.9 41.7-52.5 24.6L136 292.7V468c0 6.6-5.4 12-12 12H76c-6.6 0-12-5.4-12-12z\"]\n};\nvar faStepForward = {\n prefix: 'fas',\n iconName: 'step-forward',\n icon: [448, 512, [], \"f051\", \"M384 44v424c0 6.6-5.4 12-12 12h-48c-6.6 0-12-5.4-12-12V291.6l-195.5 181C95.9 489.7 64 475.4 64 448V64c0-27.4 31.9-41.7 52.5-24.6L312 219.3V44c0-6.6 5.4-12 12-12h48c6.6 0 12 5.4 12 12z\"]\n};\nvar faStethoscope = {\n prefix: 'fas',\n iconName: 'stethoscope',\n icon: [512, 512, [], \"f0f1\", \"M447.1 112c-34.2.5-62.3 28.4-63 62.6-.5 24.3 12.5 45.6 32 56.8V344c0 57.3-50.2 104-112 104-60 0-109.2-44.1-111.9-99.2C265 333.8 320 269.2 320 192V36.6c0-11.4-8.1-21.3-19.3-23.5L237.8.5c-13-2.6-25.6 5.8-28.2 18.8L206.4 35c-2.6 13 5.8 25.6 18.8 28.2l30.7 6.1v121.4c0 52.9-42.2 96.7-95.1 97.2-53.4.5-96.9-42.7-96.9-96V69.4l30.7-6.1c13-2.6 21.4-15.2 18.8-28.2l-3.1-15.7C107.7 6.4 95.1-2 82.1.6L19.3 13C8.1 15.3 0 25.1 0 36.6V192c0 77.3 55.1 142 128.1 156.8C130.7 439.2 208.6 512 304 512c97 0 176-75.4 176-168V231.4c19.1-11.1 32-31.7 32-55.4 0-35.7-29.2-64.5-64.9-64zm.9 80c-8.8 0-16-7.2-16-16s7.2-16 16-16 16 7.2 16 16-7.2 16-16 16z\"]\n};\nvar faStickyNote = {\n prefix: 'fas',\n iconName: 'sticky-note',\n icon: [448, 512, [], \"f249\", \"M312 320h136V56c0-13.3-10.7-24-24-24H24C10.7 32 0 42.7 0 56v400c0 13.3 10.7 24 24 24h264V344c0-13.2 10.8-24 24-24zm129 55l-98 98c-4.5 4.5-10.6 7-17 7h-6V352h128v6.1c0 6.3-2.5 12.4-7 16.9z\"]\n};\nvar faStop = {\n prefix: 'fas',\n iconName: 'stop',\n icon: [448, 512, [], \"f04d\", \"M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48z\"]\n};\nvar faStopCircle = {\n prefix: 'fas',\n iconName: 'stop-circle',\n icon: [512, 512, [], \"f28d\", \"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm96 328c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16V176c0-8.8 7.2-16 16-16h160c8.8 0 16 7.2 16 16v160z\"]\n};\nvar faStopwatch = {\n prefix: 'fas',\n iconName: 'stopwatch',\n icon: [448, 512, [], \"f2f2\", \"M432 304c0 114.9-93.1 208-208 208S16 418.9 16 304c0-104 76.3-190.2 176-205.5V64h-28c-6.6 0-12-5.4-12-12V12c0-6.6 5.4-12 12-12h120c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12h-28v34.5c37.5 5.8 71.7 21.6 99.7 44.6l27.5-27.5c4.7-4.7 12.3-4.7 17 0l28.3 28.3c4.7 4.7 4.7 12.3 0 17l-29.4 29.4-.6.6C419.7 223.3 432 262.2 432 304zm-176 36V188.5c0-6.6-5.4-12-12-12h-40c-6.6 0-12 5.4-12 12V340c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12z\"]\n};\nvar faStore = {\n prefix: 'fas',\n iconName: 'store',\n icon: [616, 512, [], \"f54e\", \"M602 118.6L537.1 15C531.3 5.7 521 0 510 0H106C95 0 84.7 5.7 78.9 15L14 118.6c-33.5 53.5-3.8 127.9 58.8 136.4 4.5.6 9.1.9 13.7.9 29.6 0 55.8-13 73.8-33.1 18 20.1 44.3 33.1 73.8 33.1 29.6 0 55.8-13 73.8-33.1 18 20.1 44.3 33.1 73.8 33.1 29.6 0 55.8-13 73.8-33.1 18.1 20.1 44.3 33.1 73.8 33.1 4.7 0 9.2-.3 13.7-.9 62.8-8.4 92.6-82.8 59-136.4zM529.5 288c-10 0-19.9-1.5-29.5-3.8V384H116v-99.8c-9.6 2.2-19.5 3.8-29.5 3.8-6 0-12.1-.4-18-1.2-5.6-.8-11.1-2.1-16.4-3.6V480c0 17.7 14.3 32 32 32h448c17.7 0 32-14.3 32-32V283.2c-5.4 1.6-10.8 2.9-16.4 3.6-6.1.8-12.1 1.2-18.2 1.2z\"]\n};\nvar faStoreAlt = {\n prefix: 'fas',\n iconName: 'store-alt',\n icon: [640, 512, [], \"f54f\", \"M320 384H128V224H64v256c0 17.7 14.3 32 32 32h256c17.7 0 32-14.3 32-32V224h-64v160zm314.6-241.8l-85.3-128c-6-8.9-16-14.2-26.7-14.2H117.4c-10.7 0-20.7 5.3-26.6 14.2l-85.3 128c-14.2 21.3 1 49.8 26.6 49.8H608c25.5 0 40.7-28.5 26.6-49.8zM512 496c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16V224h-64v272z\"]\n};\nvar faStream = {\n prefix: 'fas',\n iconName: 'stream',\n icon: [512, 512, [], \"f550\", \"M16 128h416c8.84 0 16-7.16 16-16V48c0-8.84-7.16-16-16-16H16C7.16 32 0 39.16 0 48v64c0 8.84 7.16 16 16 16zm480 80H80c-8.84 0-16 7.16-16 16v64c0 8.84 7.16 16 16 16h416c8.84 0 16-7.16 16-16v-64c0-8.84-7.16-16-16-16zm-64 176H16c-8.84 0-16 7.16-16 16v64c0 8.84 7.16 16 16 16h416c8.84 0 16-7.16 16-16v-64c0-8.84-7.16-16-16-16z\"]\n};\nvar faStreetView = {\n prefix: 'fas',\n iconName: 'street-view',\n icon: [512, 512, [], \"f21d\", \"M367.9 329.76c-4.62 5.3-9.78 10.1-15.9 13.65v22.94c66.52 9.34 112 28.05 112 49.65 0 30.93-93.12 56-208 56S48 446.93 48 416c0-21.6 45.48-40.3 112-49.65v-22.94c-6.12-3.55-11.28-8.35-15.9-13.65C58.87 345.34 0 378.05 0 416c0 53.02 114.62 96 256 96s256-42.98 256-96c0-37.95-58.87-70.66-144.1-86.24zM256 128c35.35 0 64-28.65 64-64S291.35 0 256 0s-64 28.65-64 64 28.65 64 64 64zm-64 192v96c0 17.67 14.33 32 32 32h64c17.67 0 32-14.33 32-32v-96c17.67 0 32-14.33 32-32v-96c0-26.51-21.49-48-48-48h-11.8c-11.07 5.03-23.26 8-36.2 8s-25.13-2.97-36.2-8H208c-26.51 0-48 21.49-48 48v96c0 17.67 14.33 32 32 32z\"]\n};\nvar faStrikethrough = {\n prefix: 'fas',\n iconName: 'strikethrough',\n icon: [512, 512, [], \"f0cc\", \"M496 224H293.9l-87.17-26.83A43.55 43.55 0 0 1 219.55 112h66.79A49.89 49.89 0 0 1 331 139.58a16 16 0 0 0 21.46 7.15l42.94-21.47a16 16 0 0 0 7.16-21.46l-.53-1A128 128 0 0 0 287.51 32h-68a123.68 123.68 0 0 0-123 135.64c2 20.89 10.1 39.83 21.78 56.36H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h480a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm-180.24 96A43 43 0 0 1 336 356.45 43.59 43.59 0 0 1 292.45 400h-66.79A49.89 49.89 0 0 1 181 372.42a16 16 0 0 0-21.46-7.15l-42.94 21.47a16 16 0 0 0-7.16 21.46l.53 1A128 128 0 0 0 224.49 480h68a123.68 123.68 0 0 0 123-135.64 114.25 114.25 0 0 0-5.34-24.36z\"]\n};\nvar faStroopwafel = {\n prefix: 'fas',\n iconName: 'stroopwafel',\n icon: [512, 512, [], \"f551\", \"M188.12 210.74L142.86 256l45.25 45.25L233.37 256l-45.25-45.26zm113.13-22.62L256 142.86l-45.25 45.25L256 233.37l45.25-45.25zm-90.5 135.76L256 369.14l45.26-45.26L256 278.63l-45.25 45.25zM256 0C114.62 0 0 114.62 0 256s114.62 256 256 256 256-114.62 256-256S397.38 0 256 0zm186.68 295.6l-11.31 11.31c-3.12 3.12-8.19 3.12-11.31 0l-28.29-28.29-45.25 45.25 33.94 33.94 16.97-16.97c3.12-3.12 8.19-3.12 11.31 0l11.31 11.31c3.12 3.12 3.12 8.19 0 11.31l-16.97 16.97 16.97 16.97c3.12 3.12 3.12 8.19 0 11.31l-11.31 11.31c-3.12 3.12-8.19 3.12-11.31 0l-16.97-16.97-16.97 16.97c-3.12 3.12-8.19 3.12-11.31 0l-11.31-11.31c-3.12-3.12-3.12-8.19 0-11.31l16.97-16.97-33.94-33.94-45.26 45.26 28.29 28.29c3.12 3.12 3.12 8.19 0 11.31l-11.31 11.31c-3.12 3.12-8.19 3.12-11.31 0L256 414.39l-28.29 28.29c-3.12 3.12-8.19 3.12-11.31 0l-11.31-11.31c-3.12-3.12-3.12-8.19 0-11.31l28.29-28.29-45.25-45.26-33.94 33.94 16.97 16.97c3.12 3.12 3.12 8.19 0 11.31l-11.31 11.31c-3.12 3.12-8.19 3.12-11.31 0l-16.97-16.97-16.97 16.97c-3.12 3.12-8.19 3.12-11.31 0l-11.31-11.31c-3.12-3.12-3.12-8.19 0-11.31l16.97-16.97-16.97-16.97c-3.12-3.12-3.12-8.19 0-11.31l11.31-11.31c3.12-3.12 8.19-3.12 11.31 0l16.97 16.97 33.94-33.94-45.25-45.25-28.29 28.29c-3.12 3.12-8.19 3.12-11.31 0L69.32 295.6c-3.12-3.12-3.12-8.19 0-11.31L97.61 256l-28.29-28.29c-3.12-3.12-3.12-8.19 0-11.31l11.31-11.31c3.12-3.12 8.19-3.12 11.31 0l28.29 28.29 45.25-45.26-33.94-33.94-16.97 16.97c-3.12 3.12-8.19 3.12-11.31 0l-11.31-11.31c-3.12-3.12-3.12-8.19 0-11.31l16.97-16.97-16.97-16.97c-3.12-3.12-3.12-8.19 0-11.31l11.31-11.31c3.12-3.12 8.19-3.12 11.31 0l16.97 16.97 16.97-16.97c3.12-3.12 8.19-3.12 11.31 0l11.31 11.31c3.12 3.12 3.12 8.19 0 11.31l-16.97 16.97 33.94 33.94 45.26-45.25-28.29-28.29c-3.12-3.12-3.12-8.19 0-11.31l11.31-11.31c3.12-3.12 8.19-3.12 11.31 0L256 97.61l28.29-28.29c3.12-3.12 8.19-3.12 11.31 0l11.31 11.31c3.12 3.12 3.12 8.19 0 11.31l-28.29 28.29 45.26 45.25 33.94-33.94-16.97-16.97c-3.12-3.12-3.12-8.19 0-11.31l11.31-11.31c3.12-3.12 8.19-3.12 11.31 0l16.97 16.97 16.97-16.97c3.12-3.12 8.19-3.12 11.31 0l11.31 11.31c3.12 3.12 3.12 8.19 0 11.31l-16.97 16.97 16.97 16.97c3.12 3.12 3.12 8.19 0 11.31l-11.31 11.31c-3.12 3.12-8.19 3.12-11.31 0l-16.97-16.97-33.94 33.94 45.25 45.26 28.29-28.29c3.12-3.12 8.19-3.12 11.31 0l11.31 11.31c3.12 3.12 3.12 8.19 0 11.31L414.39 256l28.29 28.28a8.015 8.015 0 0 1 0 11.32zM278.63 256l45.26 45.25L369.14 256l-45.25-45.26L278.63 256z\"]\n};\nvar faSubscript = {\n prefix: 'fas',\n iconName: 'subscript',\n icon: [512, 512, [], \"f12c\", \"M496 448h-16V304a16 16 0 0 0-16-16h-48a16 16 0 0 0-14.29 8.83l-16 32A16 16 0 0 0 400 352h16v96h-16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h96a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM336 64h-67a16 16 0 0 0-13.14 6.87l-79.9 115-79.9-115A16 16 0 0 0 83 64H16A16 16 0 0 0 0 80v48a16 16 0 0 0 16 16h33.48l77.81 112-77.81 112H16a16 16 0 0 0-16 16v48a16 16 0 0 0 16 16h67a16 16 0 0 0 13.14-6.87l79.9-115 79.9 115A16 16 0 0 0 269 448h67a16 16 0 0 0 16-16v-48a16 16 0 0 0-16-16h-33.48l-77.81-112 77.81-112H336a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16z\"]\n};\nvar faSubway = {\n prefix: 'fas',\n iconName: 'subway',\n icon: [448, 512, [], \"f239\", \"M448 96v256c0 51.815-61.624 96-130.022 96l62.98 49.721C386.905 502.417 383.562 512 376 512H72c-7.578 0-10.892-9.594-4.957-14.279L130.022 448C61.82 448 0 403.954 0 352V96C0 42.981 64 0 128 0h192c65 0 128 42.981 128 96zM200 232V120c0-13.255-10.745-24-24-24H72c-13.255 0-24 10.745-24 24v112c0 13.255 10.745 24 24 24h104c13.255 0 24-10.745 24-24zm200 0V120c0-13.255-10.745-24-24-24H272c-13.255 0-24 10.745-24 24v112c0 13.255 10.745 24 24 24h104c13.255 0 24-10.745 24-24zm-48 56c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.49-48-48-48zm-256 0c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.49-48-48-48z\"]\n};\nvar faSuitcase = {\n prefix: 'fas',\n iconName: 'suitcase',\n icon: [512, 512, [], \"f0f2\", \"M128 480h256V80c0-26.5-21.5-48-48-48H176c-26.5 0-48 21.5-48 48v400zm64-384h128v32H192V96zm320 80v256c0 26.5-21.5 48-48 48h-48V128h48c26.5 0 48 21.5 48 48zM96 480H48c-26.5 0-48-21.5-48-48V176c0-26.5 21.5-48 48-48h48v352z\"]\n};\nvar faSuitcaseRolling = {\n prefix: 'fas',\n iconName: 'suitcase-rolling',\n icon: [384, 512, [], \"f5c1\", \"M336 160H48c-26.51 0-48 21.49-48 48v224c0 26.51 21.49 48 48 48h16v16c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-16h128v16c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-16h16c26.51 0 48-21.49 48-48V208c0-26.51-21.49-48-48-48zm-16 216c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h240c4.42 0 8 3.58 8 8v16zm0-96c0 4.42-3.58 8-8 8H72c-4.42 0-8-3.58-8-8v-16c0-4.42 3.58-8 8-8h240c4.42 0 8 3.58 8 8v16zM144 48h96v80h48V48c0-26.51-21.49-48-48-48h-96c-26.51 0-48 21.49-48 48v80h48V48z\"]\n};\nvar faSun = {\n prefix: 'fas',\n iconName: 'sun',\n icon: [512, 512, [], \"f185\", \"M256 160c-52.9 0-96 43.1-96 96s43.1 96 96 96 96-43.1 96-96-43.1-96-96-96zm246.4 80.5l-94.7-47.3 33.5-100.4c4.5-13.6-8.4-26.5-21.9-21.9l-100.4 33.5-47.4-94.8c-6.4-12.8-24.6-12.8-31 0l-47.3 94.7L92.7 70.8c-13.6-4.5-26.5 8.4-21.9 21.9l33.5 100.4-94.7 47.4c-12.8 6.4-12.8 24.6 0 31l94.7 47.3-33.5 100.5c-4.5 13.6 8.4 26.5 21.9 21.9l100.4-33.5 47.3 94.7c6.4 12.8 24.6 12.8 31 0l47.3-94.7 100.4 33.5c13.6 4.5 26.5-8.4 21.9-21.9l-33.5-100.4 94.7-47.3c13-6.5 13-24.7.2-31.1zm-155.9 106c-49.9 49.9-131.1 49.9-181 0-49.9-49.9-49.9-131.1 0-181 49.9-49.9 131.1-49.9 181 0 49.9 49.9 49.9 131.1 0 181z\"]\n};\nvar faSuperscript = {\n prefix: 'fas',\n iconName: 'superscript',\n icon: [512, 512, [], \"f12b\", \"M496 160h-16V16a16 16 0 0 0-16-16h-48a16 16 0 0 0-14.29 8.83l-16 32A16 16 0 0 0 400 64h16v96h-16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h96a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zM336 64h-67a16 16 0 0 0-13.14 6.87l-79.9 115-79.9-115A16 16 0 0 0 83 64H16A16 16 0 0 0 0 80v48a16 16 0 0 0 16 16h33.48l77.81 112-77.81 112H16a16 16 0 0 0-16 16v48a16 16 0 0 0 16 16h67a16 16 0 0 0 13.14-6.87l79.9-115 79.9 115A16 16 0 0 0 269 448h67a16 16 0 0 0 16-16v-48a16 16 0 0 0-16-16h-33.48l-77.81-112 77.81-112H336a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16z\"]\n};\nvar faSurprise = {\n prefix: 'fas',\n iconName: 'surprise',\n icon: [496, 512, [], \"f5c2\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zM136 208c0-17.7 14.3-32 32-32s32 14.3 32 32-14.3 32-32 32-32-14.3-32-32zm112 208c-35.3 0-64-28.7-64-64s28.7-64 64-64 64 28.7 64 64-28.7 64-64 64zm80-176c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z\"]\n};\nvar faSwatchbook = {\n prefix: 'fas',\n iconName: 'swatchbook',\n icon: [512, 512, [], \"f5c3\", \"M434.66,167.71h0L344.5,77.36a31.83,31.83,0,0,0-45-.07h0l-.07.07L224,152.88V424L434.66,212.9A32,32,0,0,0,434.66,167.71ZM480,320H373.09L186.68,506.51c-2.06,2.07-4.5,3.58-6.68,5.49H480a32,32,0,0,0,32-32V352A32,32,0,0,0,480,320ZM192,32A32,32,0,0,0,160,0H32A32,32,0,0,0,0,32V416a96,96,0,0,0,192,0ZM96,440a24,24,0,1,1,24-24A24,24,0,0,1,96,440Zm32-184H64V192h64Zm0-128H64V64h64Z\"]\n};\nvar faSwimmer = {\n prefix: 'fas',\n iconName: 'swimmer',\n icon: [640, 512, [], \"f5c4\", \"M189.61 310.58c3.54 3.26 15.27 9.42 34.39 9.42s30.86-6.16 34.39-9.42c16.02-14.77 34.5-22.58 53.46-22.58h16.3c18.96 0 37.45 7.81 53.46 22.58 3.54 3.26 15.27 9.42 34.39 9.42s30.86-6.16 34.39-9.42c14.86-13.71 31.88-21.12 49.39-22.16l-112.84-80.6 18-12.86c3.64-2.58 8.28-3.52 12.62-2.61l100.35 21.53c25.91 5.53 51.44-10.97 57-36.88 5.55-25.92-10.95-51.44-36.88-57L437.68 98.47c-30.73-6.58-63.02.12-88.56 18.38l-80.02 57.17c-10.38 7.39-19.36 16.44-26.72 26.94L173.75 299c5.47 3.23 10.82 6.93 15.86 11.58zM624 352h-16c-26.04 0-45.8-8.42-56.09-17.9-8.9-8.21-19.66-14.1-31.77-14.1h-16.3c-12.11 0-22.87 5.89-31.77 14.1C461.8 343.58 442.04 352 416 352s-45.8-8.42-56.09-17.9c-8.9-8.21-19.66-14.1-31.77-14.1h-16.3c-12.11 0-22.87 5.89-31.77 14.1C269.8 343.58 250.04 352 224 352s-45.8-8.42-56.09-17.9c-8.9-8.21-19.66-14.1-31.77-14.1h-16.3c-12.11 0-22.87 5.89-31.77 14.1C77.8 343.58 58.04 352 32 352H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h16c38.62 0 72.72-12.19 96-31.84 23.28 19.66 57.38 31.84 96 31.84s72.72-12.19 96-31.84c23.28 19.66 57.38 31.84 96 31.84s72.72-12.19 96-31.84c23.28 19.66 57.38 31.84 96 31.84h16c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zm-512-96c44.18 0 80-35.82 80-80s-35.82-80-80-80-80 35.82-80 80 35.82 80 80 80z\"]\n};\nvar faSwimmingPool = {\n prefix: 'fas',\n iconName: 'swimming-pool',\n icon: [640, 512, [], \"f5c5\", \"M624 416h-16c-26.04 0-45.8-8.42-56.09-17.9-8.9-8.21-19.66-14.1-31.77-14.1h-16.3c-12.11 0-22.87 5.89-31.77 14.1C461.8 407.58 442.04 416 416 416s-45.8-8.42-56.09-17.9c-8.9-8.21-19.66-14.1-31.77-14.1h-16.3c-12.11 0-22.87 5.89-31.77 14.1C269.8 407.58 250.04 416 224 416s-45.8-8.42-56.09-17.9c-8.9-8.21-19.66-14.1-31.77-14.1h-16.3c-12.11 0-22.87 5.89-31.77 14.1C77.8 407.58 58.04 416 32 416H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h16c38.62 0 72.72-12.19 96-31.84 23.28 19.66 57.38 31.84 96 31.84s72.72-12.19 96-31.84c23.28 19.66 57.38 31.84 96 31.84s72.72-12.19 96-31.84c23.28 19.66 57.38 31.84 96 31.84h16c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zm-400-32v-96h192v96c19.12 0 30.86-6.16 34.39-9.42 9.17-8.46 19.2-14.34 29.61-18.07V128c0-17.64 14.36-32 32-32s32 14.36 32 32v16c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-16c0-52.94-43.06-96-96-96s-96 43.06-96 96v96H224v-96c0-17.64 14.36-32 32-32s32 14.36 32 32v16c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-16c0-52.94-43.06-96-96-96s-96 43.06-96 96v228.5c10.41 3.73 20.44 9.62 29.61 18.07 3.53 3.27 15.27 9.43 34.39 9.43z\"]\n};\nvar faSynagogue = {\n prefix: 'fas',\n iconName: 'synagogue',\n icon: [640, 512, [], \"f69b\", \"M70 196.51L6.67 268.29A26.643 26.643 0 0 0 0 285.93V512h128V239.58l-38-43.07c-5.31-6.01-14.69-6.01-20 0zm563.33 71.78L570 196.51c-5.31-6.02-14.69-6.02-20 0l-38 43.07V512h128V285.93c0-6.5-2.37-12.77-6.67-17.64zM339.99 7.01c-11.69-9.35-28.29-9.35-39.98 0l-128 102.4A32.005 32.005 0 0 0 160 134.4V512h96v-92.57c0-31.88 21.78-61.43 53.25-66.55C349.34 346.35 384 377.13 384 416v96h96V134.4c0-9.72-4.42-18.92-12.01-24.99l-128-102.4zm52.07 215.55c1.98 3.15-.29 7.24-4 7.24h-38.94L324 269.79c-1.85 2.95-6.15 2.95-8 0l-25.12-39.98h-38.94c-3.72 0-5.98-4.09-4-7.24l19.2-30.56-19.2-30.56c-1.98-3.15.29-7.24 4-7.24h38.94l25.12-40c1.85-2.95 6.15-2.95 8 0l25.12 39.98h38.95c3.71 0 5.98 4.09 4 7.24L372.87 192l19.19 30.56z\"]\n};\nvar faSync = {\n prefix: 'fas',\n iconName: 'sync',\n icon: [512, 512, [], \"f021\", \"M440.65 12.57l4 82.77A247.16 247.16 0 0 0 255.83 8C134.73 8 33.91 94.92 12.29 209.82A12 12 0 0 0 24.09 224h49.05a12 12 0 0 0 11.67-9.26 175.91 175.91 0 0 1 317-56.94l-101.46-4.86a12 12 0 0 0-12.57 12v47.41a12 12 0 0 0 12 12H500a12 12 0 0 0 12-12V12a12 12 0 0 0-12-12h-47.37a12 12 0 0 0-11.98 12.57zM255.83 432a175.61 175.61 0 0 1-146-77.8l101.8 4.87a12 12 0 0 0 12.57-12v-47.4a12 12 0 0 0-12-12H12a12 12 0 0 0-12 12V500a12 12 0 0 0 12 12h47.35a12 12 0 0 0 12-12.6l-4.15-82.57A247.17 247.17 0 0 0 255.83 504c121.11 0 221.93-86.92 243.55-201.82a12 12 0 0 0-11.8-14.18h-49.05a12 12 0 0 0-11.67 9.26A175.86 175.86 0 0 1 255.83 432z\"]\n};\nvar faSyncAlt = {\n prefix: 'fas',\n iconName: 'sync-alt',\n icon: [512, 512, [], \"f2f1\", \"M370.72 133.28C339.458 104.008 298.888 87.962 255.848 88c-77.458.068-144.328 53.178-162.791 126.85-1.344 5.363-6.122 9.15-11.651 9.15H24.103c-7.498 0-13.194-6.807-11.807-14.176C33.933 94.924 134.813 8 256 8c66.448 0 126.791 26.136 171.315 68.685L463.03 40.97C478.149 25.851 504 36.559 504 57.941V192c0 13.255-10.745 24-24 24H345.941c-21.382 0-32.09-25.851-16.971-40.971l41.75-41.749zM32 296h134.059c21.382 0 32.09 25.851 16.971 40.971l-41.75 41.75c31.262 29.273 71.835 45.319 114.876 45.28 77.418-.07 144.315-53.144 162.787-126.849 1.344-5.363 6.122-9.15 11.651-9.15h57.304c7.498 0 13.194 6.807 11.807 14.176C478.067 417.076 377.187 504 256 504c-66.448 0-126.791-26.136-171.315-68.685L48.97 471.03C33.851 486.149 8 475.441 8 454.059V320c0-13.255 10.745-24 24-24z\"]\n};\nvar faSyringe = {\n prefix: 'fas',\n iconName: 'syringe',\n icon: [512, 512, [], \"f48e\", \"M201.5 174.8l55.7 55.8c3.1 3.1 3.1 8.2 0 11.3l-11.3 11.3c-3.1 3.1-8.2 3.1-11.3 0l-55.7-55.8-45.3 45.3 55.8 55.8c3.1 3.1 3.1 8.2 0 11.3l-11.3 11.3c-3.1 3.1-8.2 3.1-11.3 0L111 265.2l-26.4 26.4c-17.3 17.3-25.6 41.1-23 65.4l7.1 63.6L2.3 487c-3.1 3.1-3.1 8.2 0 11.3l11.3 11.3c3.1 3.1 8.2 3.1 11.3 0l66.3-66.3 63.6 7.1c23.9 2.6 47.9-5.4 65.4-23l181.9-181.9-135.7-135.7-64.9 65zm308.2-93.3L430.5 2.3c-3.1-3.1-8.2-3.1-11.3 0l-11.3 11.3c-3.1 3.1-3.1 8.2 0 11.3l28.3 28.3-45.3 45.3-56.6-56.6-17-17c-3.1-3.1-8.2-3.1-11.3 0l-33.9 33.9c-3.1 3.1-3.1 8.2 0 11.3l17 17L424.8 223l17 17c3.1 3.1 8.2 3.1 11.3 0l33.9-34c3.1-3.1 3.1-8.2 0-11.3l-73.5-73.5 45.3-45.3 28.3 28.3c3.1 3.1 8.2 3.1 11.3 0l11.3-11.3c3.1-3.2 3.1-8.2 0-11.4z\"]\n};\nvar faTable = {\n prefix: 'fas',\n iconName: 'table',\n icon: [512, 512, [], \"f0ce\", \"M464 32H48C21.49 32 0 53.49 0 80v352c0 26.51 21.49 48 48 48h416c26.51 0 48-21.49 48-48V80c0-26.51-21.49-48-48-48zM224 416H64v-96h160v96zm0-160H64v-96h160v96zm224 160H288v-96h160v96zm0-160H288v-96h160v96z\"]\n};\nvar faTableTennis = {\n prefix: 'fas',\n iconName: 'table-tennis',\n icon: [512, 512, [], \"f45d\", \"M496.2 296.5C527.7 218.7 512 126.2 449 63.1 365.1-21 229-21 145.1 63.1l-56 56.1 211.5 211.5c46.1-62.1 131.5-77.4 195.6-34.2zm-217.9 79.7L57.9 155.9c-27.3 45.3-21.7 105 17.3 144.1l34.5 34.6L6.7 424c-8.6 7.5-9.1 20.7-1 28.8l53.4 53.5c8 8.1 21.2 7.6 28.7-1L177.1 402l35.7 35.7c19.7 19.7 44.6 30.5 70.3 33.3-7.1-17-11-35.6-11-55.1-.1-13.8 2.5-27 6.2-39.7zM416 320c-53 0-96 43-96 96s43 96 96 96 96-43 96-96-43-96-96-96z\"]\n};\nvar faTablet = {\n prefix: 'fas',\n iconName: 'tablet',\n icon: [448, 512, [], \"f10a\", \"M400 0H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zM224 480c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32z\"]\n};\nvar faTabletAlt = {\n prefix: 'fas',\n iconName: 'tablet-alt',\n icon: [448, 512, [], \"f3fa\", \"M400 0H48C21.5 0 0 21.5 0 48v416c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V48c0-26.5-21.5-48-48-48zM224 480c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm176-108c0 6.6-5.4 12-12 12H60c-6.6 0-12-5.4-12-12V60c0-6.6 5.4-12 12-12h328c6.6 0 12 5.4 12 12v312z\"]\n};\nvar faTablets = {\n prefix: 'fas',\n iconName: 'tablets',\n icon: [640, 512, [], \"f490\", \"M160 192C78.9 192 12.5 250.5.1 326.7c-.8 4.8 3.3 9.3 8.3 9.3h303.3c5 0 9.1-4.5 8.3-9.3C307.5 250.5 241.1 192 160 192zm151.6 176H8.4c-5 0-9.1 4.5-8.3 9.3C12.5 453.5 78.9 512 160 512s147.5-58.5 159.9-134.7c.8-4.8-3.3-9.3-8.3-9.3zM593.4 46.6c-56.5-56.5-144.2-61.4-206.9-16-4 2.9-4.3 8.9-.8 12.3L597 254.3c3.5 3.5 9.5 3.2 12.3-.8 45.5-62.7 40.6-150.4-15.9-206.9zM363 65.7c-3.5-3.5-9.5-3.2-12.3.8-45.4 62.7-40.5 150.4 15.9 206.9 56.5 56.5 144.2 61.4 206.9 15.9 4-2.9 4.3-8.9.8-12.3L363 65.7z\"]\n};\nvar faTachometerAlt = {\n prefix: 'fas',\n iconName: 'tachometer-alt',\n icon: [576, 512, [], \"f3fd\", \"M288 32C128.94 32 0 160.94 0 320c0 52.8 14.25 102.26 39.06 144.8 5.61 9.62 16.3 15.2 27.44 15.2h443c11.14 0 21.83-5.58 27.44-15.2C561.75 422.26 576 372.8 576 320c0-159.06-128.94-288-288-288zm0 64c14.71 0 26.58 10.13 30.32 23.65-1.11 2.26-2.64 4.23-3.45 6.67l-9.22 27.67c-5.13 3.49-10.97 6.01-17.64 6.01-17.67 0-32-14.33-32-32S270.33 96 288 96zM96 384c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm48-160c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm246.77-72.41l-61.33 184C343.13 347.33 352 364.54 352 384c0 11.72-3.38 22.55-8.88 32H232.88c-5.5-9.45-8.88-20.28-8.88-32 0-33.94 26.5-61.43 59.9-63.59l61.34-184.01c4.17-12.56 17.73-19.45 30.36-15.17 12.57 4.19 19.35 17.79 15.17 30.36zm14.66 57.2l15.52-46.55c3.47-1.29 7.13-2.23 11.05-2.23 17.67 0 32 14.33 32 32s-14.33 32-32 32c-11.38-.01-20.89-6.28-26.57-15.22zM480 384c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faTag = {\n prefix: 'fas',\n iconName: 'tag',\n icon: [512, 512, [], \"f02b\", \"M0 252.118V48C0 21.49 21.49 0 48 0h204.118a48 48 0 0 1 33.941 14.059l211.882 211.882c18.745 18.745 18.745 49.137 0 67.882L293.823 497.941c-18.745 18.745-49.137 18.745-67.882 0L14.059 286.059A48 48 0 0 1 0 252.118zM112 64c-26.51 0-48 21.49-48 48s21.49 48 48 48 48-21.49 48-48-21.49-48-48-48z\"]\n};\nvar faTags = {\n prefix: 'fas',\n iconName: 'tags',\n icon: [640, 512, [], \"f02c\", \"M497.941 225.941L286.059 14.059A48 48 0 0 0 252.118 0H48C21.49 0 0 21.49 0 48v204.118a48 48 0 0 0 14.059 33.941l211.882 211.882c18.744 18.745 49.136 18.746 67.882 0l204.118-204.118c18.745-18.745 18.745-49.137 0-67.882zM112 160c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48zm513.941 133.823L421.823 497.941c-18.745 18.745-49.137 18.745-67.882 0l-.36-.36L527.64 323.522c16.999-16.999 26.36-39.6 26.36-63.64s-9.362-46.641-26.36-63.64L331.397 0h48.721a48 48 0 0 1 33.941 14.059l211.882 211.882c18.745 18.745 18.745 49.137 0 67.882z\"]\n};\nvar faTape = {\n prefix: 'fas',\n iconName: 'tape',\n icon: [640, 512, [], \"f4db\", \"M224 192c-35.3 0-64 28.7-64 64s28.7 64 64 64 64-28.7 64-64-28.7-64-64-64zm400 224H380.6c41.5-40.7 67.4-97.3 67.4-160 0-123.7-100.3-224-224-224S0 132.3 0 256s100.3 224 224 224h400c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm-400-64c-53 0-96-43-96-96s43-96 96-96 96 43 96 96-43 96-96 96z\"]\n};\nvar faTasks = {\n prefix: 'fas',\n iconName: 'tasks',\n icon: [512, 512, [], \"f0ae\", \"M139.61 35.5a12 12 0 0 0-17 0L58.93 98.81l-22.7-22.12a12 12 0 0 0-17 0L3.53 92.41a12 12 0 0 0 0 17l47.59 47.4a12.78 12.78 0 0 0 17.61 0l15.59-15.62L156.52 69a12.09 12.09 0 0 0 .09-17zm0 159.19a12 12 0 0 0-17 0l-63.68 63.72-22.7-22.1a12 12 0 0 0-17 0L3.53 252a12 12 0 0 0 0 17L51 316.5a12.77 12.77 0 0 0 17.6 0l15.7-15.69 72.2-72.22a12 12 0 0 0 .09-16.9zM64 368c-26.49 0-48.59 21.5-48.59 48S37.53 464 64 464a48 48 0 0 0 0-96zm432 16H208a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h288a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16zm0-320H208a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h288a16 16 0 0 0 16-16V80a16 16 0 0 0-16-16zm0 160H208a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h288a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z\"]\n};\nvar faTaxi = {\n prefix: 'fas',\n iconName: 'taxi',\n icon: [512, 512, [], \"f1ba\", \"M462 241.64l-22-84.84c-9.6-35.2-41.6-60.8-76.8-60.8H352V64c0-17.67-14.33-32-32-32H192c-17.67 0-32 14.33-32 32v32h-11.2c-35.2 0-67.2 25.6-76.8 60.8l-22 84.84C21.41 248.04 0 273.47 0 304v48c0 23.63 12.95 44.04 32 55.12V448c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-32h256v32c0 17.67 14.33 32 32 32h32c17.67 0 32-14.33 32-32v-40.88c19.05-11.09 32-31.5 32-55.12v-48c0-30.53-21.41-55.96-50-62.36zM96 352c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm20.55-112l17.2-66.36c2.23-8.16 9.59-13.64 15.06-13.64h214.4c5.47 0 12.83 5.48 14.85 12.86L395.45 240h-278.9zM416 352c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faTeeth = {\n prefix: 'fas',\n iconName: 'teeth',\n icon: [640, 512, [], \"f62e\", \"M544 0H96C42.98 0 0 42.98 0 96v320c0 53.02 42.98 96 96 96h448c53.02 0 96-42.98 96-96V96c0-53.02-42.98-96-96-96zM160 368c0 26.51-21.49 48-48 48s-48-21.49-48-48v-64c0-8.84 7.16-16 16-16h64c8.84 0 16 7.16 16 16v64zm0-128c0 8.84-7.16 16-16 16H80c-8.84 0-16-7.16-16-16v-64c0-26.51 21.49-48 48-48s48 21.49 48 48v64zm144 120c0 30.93-25.07 56-56 56s-56-25.07-56-56v-56c0-8.84 7.16-16 16-16h80c8.84 0 16 7.16 16 16v56zm0-120c0 8.84-7.16 16-16 16h-80c-8.84 0-16-7.16-16-16v-88c0-30.93 25.07-56 56-56s56 25.07 56 56v88zm144 120c0 30.93-25.07 56-56 56s-56-25.07-56-56v-56c0-8.84 7.16-16 16-16h80c8.84 0 16 7.16 16 16v56zm0-120c0 8.84-7.16 16-16 16h-80c-8.84 0-16-7.16-16-16v-88c0-30.93 25.07-56 56-56s56 25.07 56 56v88zm128 128c0 26.51-21.49 48-48 48s-48-21.49-48-48v-64c0-8.84 7.16-16 16-16h64c8.84 0 16 7.16 16 16v64zm0-128c0 8.84-7.16 16-16 16h-64c-8.84 0-16-7.16-16-16v-64c0-26.51 21.49-48 48-48s48 21.49 48 48v64z\"]\n};\nvar faTeethOpen = {\n prefix: 'fas',\n iconName: 'teeth-open',\n icon: [640, 512, [], \"f62f\", \"M544 0H96C42.98 0 0 42.98 0 96v64c0 35.35 28.66 64 64 64h512c35.34 0 64-28.65 64-64V96c0-53.02-42.98-96-96-96zM160 176c0 8.84-7.16 16-16 16H80c-8.84 0-16-7.16-16-16v-32c0-26.51 21.49-48 48-48s48 21.49 48 48v32zm144 0c0 8.84-7.16 16-16 16h-80c-8.84 0-16-7.16-16-16v-56c0-30.93 25.07-56 56-56s56 25.07 56 56v56zm144 0c0 8.84-7.16 16-16 16h-80c-8.84 0-16-7.16-16-16v-56c0-30.93 25.07-56 56-56s56 25.07 56 56v56zm128 0c0 8.84-7.16 16-16 16h-64c-8.84 0-16-7.16-16-16v-32c0-26.51 21.49-48 48-48s48 21.49 48 48v32zm0 144H64c-35.34 0-64 28.65-64 64v32c0 53.02 42.98 96 96 96h448c53.02 0 96-42.98 96-96v-32c0-35.35-28.66-64-64-64zm-416 80c0 26.51-21.49 48-48 48s-48-21.49-48-48v-32c0-8.84 7.16-16 16-16h64c8.84 0 16 7.16 16 16v32zm144-8c0 30.93-25.07 56-56 56s-56-25.07-56-56v-24c0-8.84 7.16-16 16-16h80c8.84 0 16 7.16 16 16v24zm144 0c0 30.93-25.07 56-56 56s-56-25.07-56-56v-24c0-8.84 7.16-16 16-16h80c8.84 0 16 7.16 16 16v24zm128 8c0 26.51-21.49 48-48 48s-48-21.49-48-48v-32c0-8.84 7.16-16 16-16h64c8.84 0 16 7.16 16 16v32z\"]\n};\nvar faTemperatureHigh = {\n prefix: 'fas',\n iconName: 'temperature-high',\n icon: [512, 512, [], \"f769\", \"M416 0c-52.9 0-96 43.1-96 96s43.1 96 96 96 96-43.1 96-96-43.1-96-96-96zm0 128c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm-160-16C256 50.1 205.9 0 144 0S32 50.1 32 112v166.5C12.3 303.2 0 334 0 368c0 79.5 64.5 144 144 144s144-64.5 144-144c0-34-12.3-64.9-32-89.5V112zM144 448c-44.1 0-80-35.9-80-80 0-25.5 12.2-48.9 32-63.8V112c0-26.5 21.5-48 48-48s48 21.5 48 48v192.2c19.8 14.8 32 38.3 32 63.8 0 44.1-35.9 80-80 80zm16-125.1V112c0-8.8-7.2-16-16-16s-16 7.2-16 16v210.9c-18.6 6.6-32 24.2-32 45.1 0 26.5 21.5 48 48 48s48-21.5 48-48c0-20.9-13.4-38.5-32-45.1z\"]\n};\nvar faTemperatureLow = {\n prefix: 'fas',\n iconName: 'temperature-low',\n icon: [512, 512, [], \"f76b\", \"M416 0c-52.9 0-96 43.1-96 96s43.1 96 96 96 96-43.1 96-96-43.1-96-96-96zm0 128c-17.7 0-32-14.3-32-32s14.3-32 32-32 32 14.3 32 32-14.3 32-32 32zm-160-16C256 50.1 205.9 0 144 0S32 50.1 32 112v166.5C12.3 303.2 0 334 0 368c0 79.5 64.5 144 144 144s144-64.5 144-144c0-34-12.3-64.9-32-89.5V112zM144 448c-44.1 0-80-35.9-80-80 0-25.5 12.2-48.9 32-63.8V112c0-26.5 21.5-48 48-48s48 21.5 48 48v192.2c19.8 14.8 32 38.3 32 63.8 0 44.1-35.9 80-80 80zm16-125.1V304c0-8.8-7.2-16-16-16s-16 7.2-16 16v18.9c-18.6 6.6-32 24.2-32 45.1 0 26.5 21.5 48 48 48s48-21.5 48-48c0-20.9-13.4-38.5-32-45.1z\"]\n};\nvar faTenge = {\n prefix: 'fas',\n iconName: 'tenge',\n icon: [384, 512, [], \"f7d7\", \"M372 160H12c-6.6 0-12 5.4-12 12v56c0 6.6 5.4 12 12 12h140v228c0 6.6 5.4 12 12 12h56c6.6 0 12-5.4 12-12V240h140c6.6 0 12-5.4 12-12v-56c0-6.6-5.4-12-12-12zm0-128H12C5.4 32 0 37.4 0 44v56c0 6.6 5.4 12 12 12h360c6.6 0 12-5.4 12-12V44c0-6.6-5.4-12-12-12z\"]\n};\nvar faTerminal = {\n prefix: 'fas',\n iconName: 'terminal',\n icon: [640, 512, [], \"f120\", \"M257.981 272.971L63.638 467.314c-9.373 9.373-24.569 9.373-33.941 0L7.029 444.647c-9.357-9.357-9.375-24.522-.04-33.901L161.011 256 6.99 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L257.981 239.03c9.373 9.372 9.373 24.568 0 33.941zM640 456v-32c0-13.255-10.745-24-24-24H312c-13.255 0-24 10.745-24 24v32c0 13.255 10.745 24 24 24h304c13.255 0 24-10.745 24-24z\"]\n};\nvar faTextHeight = {\n prefix: 'fas',\n iconName: 'text-height',\n icon: [576, 512, [], \"f034\", \"M304 32H16A16 16 0 0 0 0 48v96a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-32h56v304H80a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h160a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-40V112h56v32a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zm256 336h-48V144h48c14.31 0 21.33-17.31 11.31-27.31l-80-80a16 16 0 0 0-22.62 0l-80 80C379.36 126 384.36 144 400 144h48v224h-48c-14.31 0-21.32 17.31-11.31 27.31l80 80a16 16 0 0 0 22.62 0l80-80C580.64 386 575.64 368 560 368z\"]\n};\nvar faTextWidth = {\n prefix: 'fas',\n iconName: 'text-width',\n icon: [448, 512, [], \"f035\", \"M432 32H16A16 16 0 0 0 0 48v80a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16v-16h120v112h-24a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h128a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16h-24V112h120v16a16 16 0 0 0 16 16h32a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zm-68.69 260.69C354 283.36 336 288.36 336 304v48H112v-48c0-14.31-17.31-21.32-27.31-11.31l-80 80a16 16 0 0 0 0 22.62l80 80C94 484.64 112 479.64 112 464v-48h224v48c0 14.31 17.31 21.33 27.31 11.31l80-80a16 16 0 0 0 0-22.62z\"]\n};\nvar faTh = {\n prefix: 'fas',\n iconName: 'th',\n icon: [512, 512, [], \"f00a\", \"M149.333 56v80c0 13.255-10.745 24-24 24H24c-13.255 0-24-10.745-24-24V56c0-13.255 10.745-24 24-24h101.333c13.255 0 24 10.745 24 24zm181.334 240v-80c0-13.255-10.745-24-24-24H205.333c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24h101.333c13.256 0 24.001-10.745 24.001-24zm32-240v80c0 13.255 10.745 24 24 24H488c13.255 0 24-10.745 24-24V56c0-13.255-10.745-24-24-24H386.667c-13.255 0-24 10.745-24 24zm-32 80V56c0-13.255-10.745-24-24-24H205.333c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24h101.333c13.256 0 24.001-10.745 24.001-24zm-205.334 56H24c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24h101.333c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24zM0 376v80c0 13.255 10.745 24 24 24h101.333c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H24c-13.255 0-24 10.745-24 24zm386.667-56H488c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H386.667c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24zm0 160H488c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H386.667c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24zM181.333 376v80c0 13.255 10.745 24 24 24h101.333c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H205.333c-13.255 0-24 10.745-24 24z\"]\n};\nvar faThLarge = {\n prefix: 'fas',\n iconName: 'th-large',\n icon: [512, 512, [], \"f009\", \"M296 32h192c13.255 0 24 10.745 24 24v160c0 13.255-10.745 24-24 24H296c-13.255 0-24-10.745-24-24V56c0-13.255 10.745-24 24-24zm-80 0H24C10.745 32 0 42.745 0 56v160c0 13.255 10.745 24 24 24h192c13.255 0 24-10.745 24-24V56c0-13.255-10.745-24-24-24zM0 296v160c0 13.255 10.745 24 24 24h192c13.255 0 24-10.745 24-24V296c0-13.255-10.745-24-24-24H24c-13.255 0-24 10.745-24 24zm296 184h192c13.255 0 24-10.745 24-24V296c0-13.255-10.745-24-24-24H296c-13.255 0-24 10.745-24 24v160c0 13.255 10.745 24 24 24z\"]\n};\nvar faThList = {\n prefix: 'fas',\n iconName: 'th-list',\n icon: [512, 512, [], \"f00b\", \"M149.333 216v80c0 13.255-10.745 24-24 24H24c-13.255 0-24-10.745-24-24v-80c0-13.255 10.745-24 24-24h101.333c13.255 0 24 10.745 24 24zM0 376v80c0 13.255 10.745 24 24 24h101.333c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H24c-13.255 0-24 10.745-24 24zM125.333 32H24C10.745 32 0 42.745 0 56v80c0 13.255 10.745 24 24 24h101.333c13.255 0 24-10.745 24-24V56c0-13.255-10.745-24-24-24zm80 448H488c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H205.333c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24zm-24-424v80c0 13.255 10.745 24 24 24H488c13.255 0 24-10.745 24-24V56c0-13.255-10.745-24-24-24H205.333c-13.255 0-24 10.745-24 24zm24 264H488c13.255 0 24-10.745 24-24v-80c0-13.255-10.745-24-24-24H205.333c-13.255 0-24 10.745-24 24v80c0 13.255 10.745 24 24 24z\"]\n};\nvar faTheaterMasks = {\n prefix: 'fas',\n iconName: 'theater-masks',\n icon: [640, 512, [], \"f630\", \"M206.86 245.15c-35.88 10.45-59.95 41.2-57.53 74.1 11.4-12.72 28.81-23.7 49.9-30.92l7.63-43.18zM95.81 295L64.08 115.49c-.29-1.62.28-2.62.24-2.65 57.76-32.06 123.12-49.01 189.01-49.01 1.61 0 3.23.17 4.85.19 13.95-13.47 31.73-22.83 51.59-26 18.89-3.02 38.05-4.55 57.18-5.32-9.99-13.95-24.48-24.23-41.77-27C301.27 1.89 277.24 0 253.32 0 176.66 0 101.02 19.42 33.2 57.06 9.03 70.48-3.92 98.48 1.05 126.58l31.73 179.51c14.23 80.52 136.33 142.08 204.45 142.08 3.59 0 6.75-.46 10.01-.8-13.52-17.08-28.94-40.48-39.5-67.58-47.61-12.98-106.06-51.62-111.93-84.79zm97.55-137.46c-.73-4.12-2.23-7.87-4.07-11.4-8.25 8.91-20.67 15.75-35.32 18.32-14.65 2.58-28.67.4-39.48-5.17-.52 3.94-.64 7.98.09 12.1 3.84 21.7 24.58 36.19 46.34 32.37 21.75-3.82 36.28-24.52 32.44-46.22zM606.8 120.9c-88.98-49.38-191.43-67.41-291.98-51.35-27.31 4.36-49.08 26.26-54.04 54.36l-31.73 179.51c-15.39 87.05 95.28 196.27 158.31 207.35 63.03 11.09 204.47-53.79 219.86-140.84l31.73-179.51c4.97-28.11-7.98-56.11-32.15-69.52zm-273.24 96.8c3.84-21.7 24.58-36.19 46.34-32.36 21.76 3.83 36.28 24.52 32.45 46.22-.73 4.12-2.23 7.87-4.07 11.4-8.25-8.91-20.67-15.75-35.32-18.32-14.65-2.58-28.67-.4-39.48 5.17-.53-3.95-.65-7.99.08-12.11zm70.47 198.76c-55.68-9.79-93.52-59.27-89.04-112.9 20.6 25.54 56.21 46.17 99.49 53.78 43.28 7.61 83.82.37 111.93-16.6-14.18 51.94-66.71 85.51-122.38 75.72zm130.3-151.34c-8.25-8.91-20.68-15.75-35.33-18.32-14.65-2.58-28.67-.4-39.48 5.17-.52-3.94-.64-7.98.09-12.1 3.84-21.7 24.58-36.19 46.34-32.37 21.75 3.83 36.28 24.52 32.45 46.22-.73 4.13-2.23 7.88-4.07 11.4z\"]\n};\nvar faThermometer = {\n prefix: 'fas',\n iconName: 'thermometer',\n icon: [512, 512, [], \"f491\", \"M476.8 20.4c-37.5-30.7-95.5-26.3-131.9 10.2l-45.7 46 50.5 50.5c3.1 3.1 3.1 8.2 0 11.3l-11.3 11.3c-3.1 3.1-8.2 3.1-11.3 0l-50.4-50.5-45.1 45.4 50.3 50.4c3.1 3.1 3.1 8.2 0 11.3l-11.3 11.3c-3.1 3.1-8.2 3.1-11.3 0L209 167.4l-45.1 45.4L214 263c3.1 3.1 3.1 8.2 0 11.3l-11.3 11.3c-3.1 3.1-8.2 3.1-11.3 0l-50.1-50.2L96 281.1V382L7 471c-9.4 9.4-9.4 24.6 0 33.9 9.4 9.4 24.6 9.4 33.9 0l89-89h99.9L484 162.6c34.9-34.9 42.2-101.5-7.2-142.2z\"]\n};\nvar faThermometerEmpty = {\n prefix: 'fas',\n iconName: 'thermometer-empty',\n icon: [256, 512, [], \"f2cb\", \"M192 384c0 35.346-28.654 64-64 64s-64-28.654-64-64c0-35.346 28.654-64 64-64s64 28.654 64 64zm32-84.653c19.912 22.563 32 52.194 32 84.653 0 70.696-57.303 128-128 128-.299 0-.609-.001-.909-.003C56.789 511.509-.357 453.636.002 383.333.166 351.135 12.225 321.755 32 299.347V96c0-53.019 42.981-96 96-96s96 42.981 96 96v203.347zM208 384c0-34.339-19.37-52.19-32-66.502V96c0-26.467-21.533-48-48-48S80 69.533 80 96v221.498c-12.732 14.428-31.825 32.1-31.999 66.08-.224 43.876 35.563 80.116 79.423 80.42L128 464c44.112 0 80-35.888 80-80z\"]\n};\nvar faThermometerFull = {\n prefix: 'fas',\n iconName: 'thermometer-full',\n icon: [256, 512, [], \"f2c7\", \"M224 96c0-53.019-42.981-96-96-96S32 42.981 32 96v203.347C12.225 321.756.166 351.136.002 383.333c-.359 70.303 56.787 128.176 127.089 128.664.299.002.61.003.909.003 70.698 0 128-57.304 128-128 0-32.459-12.088-62.09-32-84.653V96zm-96 368l-.576-.002c-43.86-.304-79.647-36.544-79.423-80.42.173-33.98 19.266-51.652 31.999-66.08V96c0-26.467 21.533-48 48-48s48 21.533 48 48v221.498c12.63 14.312 32 32.164 32 66.502 0 44.112-35.888 80-80 80zm64-80c0 35.346-28.654 64-64 64s-64-28.654-64-64c0-23.685 12.876-44.349 32-55.417V96c0-17.673 14.327-32 32-32s32 14.327 32 32v232.583c19.124 11.068 32 31.732 32 55.417z\"]\n};\nvar faThermometerHalf = {\n prefix: 'fas',\n iconName: 'thermometer-half',\n icon: [256, 512, [], \"f2c9\", \"M192 384c0 35.346-28.654 64-64 64s-64-28.654-64-64c0-23.685 12.876-44.349 32-55.417V224c0-17.673 14.327-32 32-32s32 14.327 32 32v104.583c19.124 11.068 32 31.732 32 55.417zm32-84.653c19.912 22.563 32 52.194 32 84.653 0 70.696-57.303 128-128 128-.299 0-.609-.001-.909-.003C56.789 511.509-.357 453.636.002 383.333.166 351.135 12.225 321.755 32 299.347V96c0-53.019 42.981-96 96-96s96 42.981 96 96v203.347zM208 384c0-34.339-19.37-52.19-32-66.502V96c0-26.467-21.533-48-48-48S80 69.533 80 96v221.498c-12.732 14.428-31.825 32.1-31.999 66.08-.224 43.876 35.563 80.116 79.423 80.42L128 464c44.112 0 80-35.888 80-80z\"]\n};\nvar faThermometerQuarter = {\n prefix: 'fas',\n iconName: 'thermometer-quarter',\n icon: [256, 512, [], \"f2ca\", \"M192 384c0 35.346-28.654 64-64 64s-64-28.654-64-64c0-23.685 12.876-44.349 32-55.417V288c0-17.673 14.327-32 32-32s32 14.327 32 32v40.583c19.124 11.068 32 31.732 32 55.417zm32-84.653c19.912 22.563 32 52.194 32 84.653 0 70.696-57.303 128-128 128-.299 0-.609-.001-.909-.003C56.789 511.509-.357 453.636.002 383.333.166 351.135 12.225 321.755 32 299.347V96c0-53.019 42.981-96 96-96s96 42.981 96 96v203.347zM208 384c0-34.339-19.37-52.19-32-66.502V96c0-26.467-21.533-48-48-48S80 69.533 80 96v221.498c-12.732 14.428-31.825 32.1-31.999 66.08-.224 43.876 35.563 80.116 79.423 80.42L128 464c44.112 0 80-35.888 80-80z\"]\n};\nvar faThermometerThreeQuarters = {\n prefix: 'fas',\n iconName: 'thermometer-three-quarters',\n icon: [256, 512, [], \"f2c8\", \"M192 384c0 35.346-28.654 64-64 64-35.346 0-64-28.654-64-64 0-23.685 12.876-44.349 32-55.417V160c0-17.673 14.327-32 32-32s32 14.327 32 32v168.583c19.124 11.068 32 31.732 32 55.417zm32-84.653c19.912 22.563 32 52.194 32 84.653 0 70.696-57.303 128-128 128-.299 0-.609-.001-.909-.003C56.789 511.509-.357 453.636.002 383.333.166 351.135 12.225 321.755 32 299.347V96c0-53.019 42.981-96 96-96s96 42.981 96 96v203.347zM208 384c0-34.339-19.37-52.19-32-66.502V96c0-26.467-21.533-48-48-48S80 69.533 80 96v221.498c-12.732 14.428-31.825 32.1-31.999 66.08-.224 43.876 35.563 80.116 79.423 80.42L128 464c44.112 0 80-35.888 80-80z\"]\n};\nvar faThumbsDown = {\n prefix: 'fas',\n iconName: 'thumbs-down',\n icon: [512, 512, [], \"f165\", \"M0 56v240c0 13.255 10.745 24 24 24h80c13.255 0 24-10.745 24-24V56c0-13.255-10.745-24-24-24H24C10.745 32 0 42.745 0 56zm40 200c0-13.255 10.745-24 24-24s24 10.745 24 24-10.745 24-24 24-24-10.745-24-24zm272 256c-20.183 0-29.485-39.293-33.931-57.795-5.206-21.666-10.589-44.07-25.393-58.902-32.469-32.524-49.503-73.967-89.117-113.111a11.98 11.98 0 0 1-3.558-8.521V59.901c0-6.541 5.243-11.878 11.783-11.998 15.831-.29 36.694-9.079 52.651-16.178C256.189 17.598 295.709.017 343.995 0h2.844c42.777 0 93.363.413 113.774 29.737 8.392 12.057 10.446 27.034 6.148 44.632 16.312 17.053 25.063 48.863 16.382 74.757 17.544 23.432 19.143 56.132 9.308 79.469l.11.11c11.893 11.949 19.523 31.259 19.439 49.197-.156 30.352-26.157 58.098-59.553 58.098H350.723C358.03 364.34 384 388.132 384 430.548 384 504 336 512 312 512z\"]\n};\nvar faThumbsUp = {\n prefix: 'fas',\n iconName: 'thumbs-up',\n icon: [512, 512, [], \"f164\", \"M104 224H24c-13.255 0-24 10.745-24 24v240c0 13.255 10.745 24 24 24h80c13.255 0 24-10.745 24-24V248c0-13.255-10.745-24-24-24zM64 472c-13.255 0-24-10.745-24-24s10.745-24 24-24 24 10.745 24 24-10.745 24-24 24zM384 81.452c0 42.416-25.97 66.208-33.277 94.548h101.723c33.397 0 59.397 27.746 59.553 58.098.084 17.938-7.546 37.249-19.439 49.197l-.11.11c9.836 23.337 8.237 56.037-9.308 79.469 8.681 25.895-.069 57.704-16.382 74.757 4.298 17.598 2.244 32.575-6.148 44.632C440.202 511.587 389.616 512 346.839 512l-2.845-.001c-48.287-.017-87.806-17.598-119.56-31.725-15.957-7.099-36.821-15.887-52.651-16.178-6.54-.12-11.783-5.457-11.783-11.998v-213.77c0-3.2 1.282-6.271 3.558-8.521 39.614-39.144 56.648-80.587 89.117-113.111 14.804-14.832 20.188-37.236 25.393-58.902C282.515 39.293 291.817 0 312 0c24 0 72 8 72 81.452z\"]\n};\nvar faThumbtack = {\n prefix: 'fas',\n iconName: 'thumbtack',\n icon: [384, 512, [], \"f08d\", \"M298.028 214.267L285.793 96H328c13.255 0 24-10.745 24-24V24c0-13.255-10.745-24-24-24H56C42.745 0 32 10.745 32 24v48c0 13.255 10.745 24 24 24h42.207L85.972 214.267C37.465 236.82 0 277.261 0 328c0 13.255 10.745 24 24 24h136v104.007c0 1.242.289 2.467.845 3.578l24 48c2.941 5.882 11.364 5.893 14.311 0l24-48a8.008 8.008 0 0 0 .845-3.578V352h136c13.255 0 24-10.745 24-24-.001-51.183-37.983-91.42-85.973-113.733z\"]\n};\nvar faTicketAlt = {\n prefix: 'fas',\n iconName: 'ticket-alt',\n icon: [576, 512, [], \"f3ff\", \"M128 160h320v192H128V160zm400 96c0 26.51 21.49 48 48 48v96c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48v-96c26.51 0 48-21.49 48-48s-21.49-48-48-48v-96c0-26.51 21.49-48 48-48h480c26.51 0 48 21.49 48 48v96c-26.51 0-48 21.49-48 48zm-48-104c0-13.255-10.745-24-24-24H120c-13.255 0-24 10.745-24 24v208c0 13.255 10.745 24 24 24h336c13.255 0 24-10.745 24-24V152z\"]\n};\nvar faTimes = {\n prefix: 'fas',\n iconName: 'times',\n icon: [352, 512, [], \"f00d\", \"M242.72 256l100.07-100.07c12.28-12.28 12.28-32.19 0-44.48l-22.24-22.24c-12.28-12.28-32.19-12.28-44.48 0L176 189.28 75.93 89.21c-12.28-12.28-32.19-12.28-44.48 0L9.21 111.45c-12.28 12.28-12.28 32.19 0 44.48L109.28 256 9.21 356.07c-12.28 12.28-12.28 32.19 0 44.48l22.24 22.24c12.28 12.28 32.2 12.28 44.48 0L176 322.72l100.07 100.07c12.28 12.28 32.2 12.28 44.48 0l22.24-22.24c12.28-12.28 12.28-32.19 0-44.48L242.72 256z\"]\n};\nvar faTimesCircle = {\n prefix: 'fas',\n iconName: 'times-circle',\n icon: [512, 512, [], \"f057\", \"M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm121.6 313.1c4.7 4.7 4.7 12.3 0 17L338 377.6c-4.7 4.7-12.3 4.7-17 0L256 312l-65.1 65.6c-4.7 4.7-12.3 4.7-17 0L134.4 338c-4.7-4.7-4.7-12.3 0-17l65.6-65-65.6-65.1c-4.7-4.7-4.7-12.3 0-17l39.6-39.6c4.7-4.7 12.3-4.7 17 0l65 65.7 65.1-65.6c4.7-4.7 12.3-4.7 17 0l39.6 39.6c4.7 4.7 4.7 12.3 0 17L312 256l65.6 65.1z\"]\n};\nvar faTint = {\n prefix: 'fas',\n iconName: 'tint',\n icon: [352, 512, [], \"f043\", \"M205.22 22.09c-7.94-28.78-49.44-30.12-58.44 0C100.01 179.85 0 222.72 0 333.91 0 432.35 78.72 512 176 512s176-79.65 176-178.09c0-111.75-99.79-153.34-146.78-311.82zM176 448c-61.75 0-112-50.25-112-112 0-8.84 7.16-16 16-16s16 7.16 16 16c0 44.11 35.89 80 80 80 8.84 0 16 7.16 16 16s-7.16 16-16 16z\"]\n};\nvar faTintSlash = {\n prefix: 'fas',\n iconName: 'tint-slash',\n icon: [640, 512, [], \"f5c7\", \"M633.82 458.1L494.97 350.78c.52-5.57 1.03-11.16 1.03-16.87 0-111.76-99.79-153.34-146.78-311.82-7.94-28.78-49.44-30.12-58.44 0-15.52 52.34-36.87 91.96-58.49 125.68L45.47 3.37C38.49-2.05 28.43-.8 23.01 6.18L3.37 31.45C-2.05 38.42-.8 48.47 6.18 53.9l588.36 454.73c6.98 5.43 17.03 4.17 22.46-2.81l19.64-25.27c5.41-6.97 4.16-17.02-2.82-22.45zM144 333.91C144 432.35 222.72 512 320 512c44.71 0 85.37-16.96 116.4-44.7L162.72 255.78c-11.41 23.5-18.72 48.35-18.72 78.13z\"]\n};\nvar faTired = {\n prefix: 'fas',\n iconName: 'tired',\n icon: [496, 512, [], \"f5c8\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm33.8 189.7l80-48c11.6-6.9 24 7.7 15.4 18L343.6 208l33.6 40.3c8.7 10.4-3.9 24.8-15.4 18l-80-48c-7.7-4.7-7.7-15.9 0-20.6zm-163-30c-8.6-10.3 3.8-24.9 15.4-18l80 48c7.8 4.7 7.8 15.9 0 20.6l-80 48c-11.5 6.8-24-7.6-15.4-18l33.6-40.3-33.6-40.3zM248 288c51.9 0 115.3 43.8 123.2 106.7 1.7 13.6-8 24.6-17.7 20.4-25.9-11.1-64.4-17.4-105.5-17.4s-79.6 6.3-105.5 17.4c-9.8 4.2-19.4-7-17.7-20.4C132.7 331.8 196.1 288 248 288z\"]\n};\nvar faToggleOff = {\n prefix: 'fas',\n iconName: 'toggle-off',\n icon: [576, 512, [], \"f204\", \"M384 64H192C85.961 64 0 149.961 0 256s85.961 192 192 192h192c106.039 0 192-85.961 192-192S490.039 64 384 64zM64 256c0-70.741 57.249-128 128-128 70.741 0 128 57.249 128 128 0 70.741-57.249 128-128 128-70.741 0-128-57.249-128-128zm320 128h-48.905c65.217-72.858 65.236-183.12 0-256H384c70.741 0 128 57.249 128 128 0 70.74-57.249 128-128 128z\"]\n};\nvar faToggleOn = {\n prefix: 'fas',\n iconName: 'toggle-on',\n icon: [576, 512, [], \"f205\", \"M384 64H192C86 64 0 150 0 256s86 192 192 192h192c106 0 192-86 192-192S490 64 384 64zm0 320c-70.8 0-128-57.3-128-128 0-70.8 57.3-128 128-128 70.8 0 128 57.3 128 128 0 70.8-57.3 128-128 128z\"]\n};\nvar faToilet = {\n prefix: 'fas',\n iconName: 'toilet',\n icon: [384, 512, [], \"f7d8\", \"M368 48c8.8 0 16-7.2 16-16V16c0-8.8-7.2-16-16-16H16C7.2 0 0 7.2 0 16v16c0 8.8 7.2 16 16 16h16v156.7C11.8 214.8 0 226.9 0 240c0 67.2 34.6 126.2 86.8 160.5l-21.4 70.2C59.1 491.2 74.5 512 96 512h192c21.5 0 36.9-20.8 30.6-41.3l-21.4-70.2C349.4 366.2 384 307.2 384 240c0-13.1-11.8-25.2-32-35.3V48h16zM80 72c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H88c-4.4 0-8-3.6-8-8V72zm112 200c-77.1 0-139.6-14.3-139.6-32s62.5-32 139.6-32 139.6 14.3 139.6 32-62.5 32-139.6 32z\"]\n};\nvar faToiletPaper = {\n prefix: 'fas',\n iconName: 'toilet-paper',\n icon: [576, 512, [], \"f71e\", \"M128 0C74.98 0 32 85.96 32 192v172.07c0 41.12-9.8 62.77-31.17 126.87C-2.62 501.3 5.09 512 16.01 512h280.92c13.77 0 26-8.81 30.36-21.88 12.83-38.48 24.71-72.4 24.71-126.05V192c0-83.6 23.67-153.52 60.44-192H128zM96 224c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.16 16-16 16zm64 0c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.16 16-16 16zm64 0c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.16 16-16 16zm64 0c-8.84 0-16-7.16-16-16s7.16-16 16-16 16 7.16 16 16-7.16 16-16 16zM480 0c-53.02 0-96 85.96-96 192s42.98 192 96 192 96-85.96 96-192S533.02 0 480 0zm0 256c-17.67 0-32-28.65-32-64s14.33-64 32-64 32 28.65 32 64-14.33 64-32 64z\"]\n};\nvar faToolbox = {\n prefix: 'fas',\n iconName: 'toolbox',\n icon: [512, 512, [], \"f552\", \"M502.63 214.63l-45.25-45.25c-6-6-14.14-9.37-22.63-9.37H384V80c0-26.51-21.49-48-48-48H176c-26.51 0-48 21.49-48 48v80H77.25c-8.49 0-16.62 3.37-22.63 9.37L9.37 214.63c-6 6-9.37 14.14-9.37 22.63V320h128v-16c0-8.84 7.16-16 16-16h32c8.84 0 16 7.16 16 16v16h128v-16c0-8.84 7.16-16 16-16h32c8.84 0 16 7.16 16 16v16h128v-82.75c0-8.48-3.37-16.62-9.37-22.62zM320 160H192V96h128v64zm64 208c0 8.84-7.16 16-16 16h-32c-8.84 0-16-7.16-16-16v-16H192v16c0 8.84-7.16 16-16 16h-32c-8.84 0-16-7.16-16-16v-16H0v96c0 17.67 14.33 32 32 32h448c17.67 0 32-14.33 32-32v-96H384v16z\"]\n};\nvar faTools = {\n prefix: 'fas',\n iconName: 'tools',\n icon: [512, 512, [], \"f7d9\", \"M501.1 395.7L384 278.6c-23.1-23.1-57.6-27.6-85.4-13.9L192 158.1V96L64 0 0 64l96 128h62.1l106.6 106.6c-13.6 27.8-9.2 62.3 13.9 85.4l117.1 117.1c14.6 14.6 38.2 14.6 52.7 0l52.7-52.7c14.5-14.6 14.5-38.2 0-52.7zM331.7 225c28.3 0 54.9 11 74.9 31l19.4 19.4c15.8-6.9 30.8-16.5 43.8-29.5 37.1-37.1 49.7-89.3 37.9-136.7-2.2-9-13.5-12.1-20.1-5.5l-74.4 74.4-67.9-11.3L334 98.9l74.4-74.4c6.6-6.6 3.4-17.9-5.7-20.2-47.4-11.7-99.6.9-136.6 37.9-28.5 28.5-41.9 66.1-41.2 103.6l82.1 82.1c8.1-1.9 16.5-2.9 24.7-2.9zm-103.9 82l-56.7-56.7L18.7 402.8c-25 25-25 65.5 0 90.5s65.5 25 90.5 0l123.6-123.6c-7.6-19.9-9.9-41.6-5-62.7zM64 472c-13.2 0-24-10.8-24-24 0-13.3 10.7-24 24-24s24 10.7 24 24c0 13.2-10.7 24-24 24z\"]\n};\nvar faTooth = {\n prefix: 'fas',\n iconName: 'tooth',\n icon: [448, 512, [], \"f5c9\", \"M443.98 96.25c-11.01-45.22-47.11-82.06-92.01-93.72-32.19-8.36-63 5.1-89.14 24.33-3.25 2.39-6.96 3.73-10.5 5.48l28.32 18.21c7.42 4.77 9.58 14.67 4.8 22.11-4.46 6.95-14.27 9.86-22.11 4.8L162.83 12.84c-20.7-10.85-43.38-16.4-66.81-10.31-44.9 11.67-81 48.5-92.01 93.72-10.13 41.62-.42 80.81 21.5 110.43 23.36 31.57 32.68 68.66 36.29 107.35 4.4 47.16 10.33 94.16 20.94 140.32l7.8 33.95c3.19 13.87 15.49 23.7 29.67 23.7 13.97 0 26.15-9.55 29.54-23.16l34.47-138.42c4.56-18.32 20.96-31.16 39.76-31.16s35.2 12.85 39.76 31.16l34.47 138.42c3.39 13.61 15.57 23.16 29.54 23.16 14.18 0 26.48-9.83 29.67-23.7l7.8-33.95c10.61-46.15 16.53-93.16 20.94-140.32 3.61-38.7 12.93-75.78 36.29-107.35 21.95-29.61 31.66-68.8 21.53-110.43z\"]\n};\nvar faTorah = {\n prefix: 'fas',\n iconName: 'torah',\n icon: [640, 512, [], \"f6a0\", \"M320.05 366.48l17.72-29.64h-35.46zm99.21-166H382.4l18.46 30.82zM48 0C21.49 0 0 14.33 0 32v448c0 17.67 21.49 32 48 32s48-14.33 48-32V32C96 14.33 74.51 0 48 0zm172.74 311.5h36.85l-18.46-30.82zm161.71 0h36.86l-18.45-30.8zM128 464h384V48H128zm66.77-278.13a21.22 21.22 0 0 1 18.48-10.71h59.45l29.13-48.71a21.13 21.13 0 0 1 18.22-10.37A20.76 20.76 0 0 1 338 126.29l29.25 48.86h59.52a21.12 21.12 0 0 1 18.1 32L415.63 256 445 305a20.69 20.69 0 0 1 .24 21.12 21.25 21.25 0 0 1-18.48 10.72h-59.47l-29.13 48.7a21.13 21.13 0 0 1-18.16 10.4 20.79 20.79 0 0 1-18-10.22l-29.25-48.88h-59.5a21.11 21.11 0 0 1-18.1-32L224.36 256 195 207a20.7 20.7 0 0 1-.23-21.13zM592 0c-26.51 0-48 14.33-48 32v448c0 17.67 21.49 32 48 32s48-14.33 48-32V32c0-17.67-21.49-32-48-32zM320 145.53l-17.78 29.62h35.46zm-62.45 55h-36.81l18.44 30.8zm29.58 111h65.79L386.09 256l-33.23-55.52h-65.79L253.9 256z\"]\n};\nvar faToriiGate = {\n prefix: 'fas',\n iconName: 'torii-gate',\n icon: [512, 512, [], \"f6a1\", \"M376.45 32h-240.9A303.17 303.17 0 0 1 0 0v96c0 17.67 14.33 32 32 32h32v64H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h48v240c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16V256h256v240c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16V256h48c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16h-48v-64h32c17.67 0 32-14.33 32-32V0a303.17 303.17 0 0 1-135.55 32zM128 128h96v64h-96v-64zm256 64h-96v-64h96v64z\"]\n};\nvar faTractor = {\n prefix: 'fas',\n iconName: 'tractor',\n icon: [640, 512, [], \"f722\", \"M528 336c-48.6 0-88 39.4-88 88s39.4 88 88 88 88-39.4 88-88-39.4-88-88-88zm0 112c-13.23 0-24-10.77-24-24s10.77-24 24-24 24 10.77 24 24-10.77 24-24 24zm80-288h-64v-40.2c0-14.12 4.7-27.76 13.15-38.84 4.42-5.8 3.55-14.06-1.32-19.49L534.2 37.3c-6.66-7.45-18.32-6.92-24.7.78C490.58 60.9 480 89.81 480 119.8V160H377.67L321.58 29.14A47.914 47.914 0 0 0 277.45 0H144c-26.47 0-48 21.53-48 48v146.52c-8.63-6.73-20.96-6.46-28.89 1.47L36 227.1c-8.59 8.59-8.59 22.52 0 31.11l5.06 5.06c-4.99 9.26-8.96 18.82-11.91 28.72H22c-12.15 0-22 9.85-22 22v44c0 12.15 9.85 22 22 22h7.14c2.96 9.91 6.92 19.46 11.91 28.73l-5.06 5.06c-8.59 8.59-8.59 22.52 0 31.11L67.1 476c8.59 8.59 22.52 8.59 31.11 0l5.06-5.06c9.26 4.99 18.82 8.96 28.72 11.91V490c0 12.15 9.85 22 22 22h44c12.15 0 22-9.85 22-22v-7.14c9.9-2.95 19.46-6.92 28.72-11.91l5.06 5.06c8.59 8.59 22.52 8.59 31.11 0l31.11-31.11c8.59-8.59 8.59-22.52 0-31.11l-5.06-5.06c4.99-9.26 8.96-18.82 11.91-28.72H330c12.15 0 22-9.85 22-22v-6h80.54c21.91-28.99 56.32-48 95.46-48 18.64 0 36.07 4.61 51.8 12.2l50.82-50.82c6-6 9.37-14.14 9.37-22.63V192c.01-17.67-14.32-32-31.99-32zM176 416c-44.18 0-80-35.82-80-80s35.82-80 80-80 80 35.82 80 80-35.82 80-80 80zm22-256h-38V64h106.89l41.15 96H198z\"]\n};\nvar faTrademark = {\n prefix: 'fas',\n iconName: 'trademark',\n icon: [640, 512, [], \"f25c\", \"M260.6 96H12c-6.6 0-12 5.4-12 12v43.1c0 6.6 5.4 12 12 12h85.1V404c0 6.6 5.4 12 12 12h54.3c6.6 0 12-5.4 12-12V163.1h85.1c6.6 0 12-5.4 12-12V108c.1-6.6-5.3-12-11.9-12zM640 403l-24-296c-.5-6.2-5.7-11-12-11h-65.4c-5.1 0-9.7 3.3-11.3 8.1l-43.8 127.1c-7.2 20.6-16.1 52.8-16.1 52.8h-.9s-8.9-32.2-16.1-52.8l-43.8-127.1c-1.7-4.8-6.2-8.1-11.3-8.1h-65.4c-6.2 0-11.4 4.8-12 11l-24.4 296c-.6 7 4.9 13 12 13H360c6.3 0 11.5-4.9 12-11.2l9.1-132.9c1.8-24.2 0-53.7 0-53.7h.9s10.7 33.6 17.9 53.7l30.7 84.7c1.7 4.7 6.2 7.9 11.3 7.9h50.3c5.1 0 9.6-3.2 11.3-7.9l30.7-84.7c7.2-20.1 17.9-53.7 17.9-53.7h.9s-1.8 29.5 0 53.7l9.1 132.9c.4 6.3 5.7 11.2 12 11.2H628c7 0 12.5-6 12-13z\"]\n};\nvar faTrafficLight = {\n prefix: 'fas',\n iconName: 'traffic-light',\n icon: [384, 512, [], \"f637\", \"M384 192h-64v-37.88c37.2-13.22 64-48.38 64-90.12h-64V32c0-17.67-14.33-32-32-32H96C78.33 0 64 14.33 64 32v32H0c0 41.74 26.8 76.9 64 90.12V192H0c0 41.74 26.8 76.9 64 90.12V320H0c0 42.84 28.25 78.69 66.99 91.05C79.42 468.72 130.6 512 192 512s112.58-43.28 125.01-100.95C355.75 398.69 384 362.84 384 320h-64v-37.88c37.2-13.22 64-48.38 64-90.12zM192 416c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48zm0-128c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48zm0-128c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48z\"]\n};\nvar faTrailer = {\n prefix: 'fas',\n iconName: 'trailer',\n icon: [640, 512, [], \"f941\", \"M624,320H544V80a16,16,0,0,0-16-16H16A16,16,0,0,0,0,80V368a16,16,0,0,0,16,16H65.61c7.83-54.21,54-96,110.39-96s102.56,41.79,110.39,96H624a16,16,0,0,0,16-16V336A16,16,0,0,0,624,320ZM96,243.68a176.29,176.29,0,0,0-32,20.71V136a8,8,0,0,1,8-8H88a8,8,0,0,1,8,8Zm96-18.54c-5.31-.49-10.57-1.14-16-1.14s-10.69.65-16,1.14V136a8,8,0,0,1,8-8h16a8,8,0,0,1,8,8Zm96,39.25a176.29,176.29,0,0,0-32-20.71V136a8,8,0,0,1,8-8h16a8,8,0,0,1,8,8ZM384,320H352V136a8,8,0,0,1,8-8h16a8,8,0,0,1,8,8Zm96,0H448V136a8,8,0,0,1,8-8h16a8,8,0,0,1,8,8Zm-304,0a80,80,0,1,0,80,80A80,80,0,0,0,176,320Zm0,112a32,32,0,1,1,32-32A32,32,0,0,1,176,432Z\"]\n};\nvar faTrain = {\n prefix: 'fas',\n iconName: 'train',\n icon: [448, 512, [], \"f238\", \"M448 96v256c0 51.815-61.624 96-130.022 96l62.98 49.721C386.905 502.417 383.562 512 376 512H72c-7.578 0-10.892-9.594-4.957-14.279L130.022 448C61.82 448 0 403.954 0 352V96C0 42.981 64 0 128 0h192c65 0 128 42.981 128 96zm-48 136V120c0-13.255-10.745-24-24-24H72c-13.255 0-24 10.745-24 24v112c0 13.255 10.745 24 24 24h304c13.255 0 24-10.745 24-24zm-176 64c-30.928 0-56 25.072-56 56s25.072 56 56 56 56-25.072 56-56-25.072-56-56-56z\"]\n};\nvar faTram = {\n prefix: 'fas',\n iconName: 'tram',\n icon: [512, 512, [], \"f7da\", \"M288 64c17.7 0 32-14.3 32-32S305.7 0 288 0s-32 14.3-32 32 14.3 32 32 32zm223.5-12.1c-2.3-8.6-11-13.6-19.6-11.3l-480 128c-8.5 2.3-13.6 11-11.3 19.6C2.5 195.3 8.9 200 16 200c1.4 0 2.8-.2 4.1-.5L240 140.8V224H64c-17.7 0-32 14.3-32 32v224c0 17.7 14.3 32 32 32h384c17.7 0 32-14.3 32-32V256c0-17.7-14.3-32-32-32H272v-91.7l228.1-60.8c8.6-2.3 13.6-11.1 11.4-19.6zM176 384H80v-96h96v96zm160-96h96v96h-96v-96zm-32 0v96h-96v-96h96zM192 96c17.7 0 32-14.3 32-32s-14.3-32-32-32-32 14.3-32 32 14.3 32 32 32z\"]\n};\nvar faTransgender = {\n prefix: 'fas',\n iconName: 'transgender',\n icon: [384, 512, [], \"f224\", \"M372 0h-79c-10.7 0-16 12.9-8.5 20.5l16.9 16.9-80.7 80.7C198.5 104.1 172.2 96 144 96 64.5 96 0 160.5 0 240c0 68.5 47.9 125.9 112 140.4V408H76c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h36v28c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-28h36c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-36v-27.6c64.1-14.6 112-71.9 112-140.4 0-28.2-8.1-54.5-22.1-76.7l80.7-80.7 16.9 16.9c7.6 7.6 20.5 2.2 20.5-8.5V12c0-6.6-5.4-12-12-12zM144 320c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80z\"]\n};\nvar faTransgenderAlt = {\n prefix: 'fas',\n iconName: 'transgender-alt',\n icon: [480, 512, [], \"f225\", \"M468 0h-79c-10.7 0-16 12.9-8.5 20.5l16.9 16.9-80.7 80.7C294.5 104.1 268.2 96 240 96c-28.2 0-54.5 8.1-76.7 22.1l-16.5-16.5 19.8-19.8c4.7-4.7 4.7-12.3 0-17l-28.3-28.3c-4.7-4.7-12.3-4.7-17 0l-19.8 19.8-19-19 16.9-16.9C107.1 12.9 101.7 0 91 0H12C5.4 0 0 5.4 0 12v79c0 10.7 12.9 16 20.5 8.5l16.9-16.9 19 19-19.8 19.8c-4.7 4.7-4.7 12.3 0 17l28.3 28.3c4.7 4.7 12.3 4.7 17 0l19.8-19.8 16.5 16.5C104.1 185.5 96 211.8 96 240c0 68.5 47.9 125.9 112 140.4V408h-36c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h36v28c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-28h36c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-36v-27.6c64.1-14.6 112-71.9 112-140.4 0-28.2-8.1-54.5-22.1-76.7l80.7-80.7 16.9 16.9c7.6 7.6 20.5 2.2 20.5-8.5V12c0-6.6-5.4-12-12-12zM240 320c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80z\"]\n};\nvar faTrash = {\n prefix: 'fas',\n iconName: 'trash',\n icon: [448, 512, [], \"f1f8\", \"M432 32H312l-9.4-18.7A24 24 0 0 0 281.1 0H166.8a23.72 23.72 0 0 0-21.4 13.3L136 32H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16zM53.2 467a48 48 0 0 0 47.9 45h245.8a48 48 0 0 0 47.9-45L416 128H32z\"]\n};\nvar faTrashAlt = {\n prefix: 'fas',\n iconName: 'trash-alt',\n icon: [448, 512, [], \"f2ed\", \"M32 464a48 48 0 0 0 48 48h288a48 48 0 0 0 48-48V128H32zm272-256a16 16 0 0 1 32 0v224a16 16 0 0 1-32 0zm-96 0a16 16 0 0 1 32 0v224a16 16 0 0 1-32 0zm-96 0a16 16 0 0 1 32 0v224a16 16 0 0 1-32 0zM432 32H312l-9.4-18.7A24 24 0 0 0 281.1 0H166.8a23.72 23.72 0 0 0-21.4 13.3L136 32H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z\"]\n};\nvar faTrashRestore = {\n prefix: 'fas',\n iconName: 'trash-restore',\n icon: [448, 512, [], \"f829\", \"M53.2 467a48 48 0 0 0 47.9 45h245.8a48 48 0 0 0 47.9-45L416 128H32zm70.11-175.8l89.38-94.26a15.41 15.41 0 0 1 22.62 0l89.38 94.26c10.08 10.62 2.94 28.8-11.32 28.8H256v112a16 16 0 0 1-16 16h-32a16 16 0 0 1-16-16V320h-57.37c-14.26 0-21.4-18.18-11.32-28.8zM432 32H312l-9.4-18.7A24 24 0 0 0 281.1 0H166.8a23.72 23.72 0 0 0-21.4 13.3L136 32H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z\"]\n};\nvar faTrashRestoreAlt = {\n prefix: 'fas',\n iconName: 'trash-restore-alt',\n icon: [448, 512, [], \"f82a\", \"M32 464a48 48 0 0 0 48 48h288a48 48 0 0 0 48-48V128H32zm91.31-172.8l89.38-94.26a15.41 15.41 0 0 1 22.62 0l89.38 94.26c10.08 10.62 2.94 28.8-11.32 28.8H256v112a16 16 0 0 1-16 16h-32a16 16 0 0 1-16-16V320h-57.37c-14.26 0-21.4-18.18-11.32-28.8zM432 32H312l-9.4-18.7A24 24 0 0 0 281.1 0H166.8a23.72 23.72 0 0 0-21.4 13.3L136 32H16A16 16 0 0 0 0 48v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16V48a16 16 0 0 0-16-16z\"]\n};\nvar faTree = {\n prefix: 'fas',\n iconName: 'tree',\n icon: [384, 512, [], \"f1bb\", \"M378.31 378.49L298.42 288h30.63c9.01 0 16.98-5 20.78-13.06 3.8-8.04 2.55-17.26-3.28-24.05L268.42 160h28.89c9.1 0 17.3-5.35 20.86-13.61 3.52-8.13 1.86-17.59-4.24-24.08L203.66 4.83c-6.03-6.45-17.28-6.45-23.32 0L70.06 122.31c-6.1 6.49-7.75 15.95-4.24 24.08C69.38 154.65 77.59 160 86.69 160h28.89l-78.14 90.91c-5.81 6.78-7.06 15.99-3.27 24.04C37.97 283 45.93 288 54.95 288h30.63L5.69 378.49c-6 6.79-7.36 16.09-3.56 24.26 3.75 8.05 12 13.25 21.01 13.25H160v24.45l-30.29 48.4c-5.32 10.64 2.42 23.16 14.31 23.16h95.96c11.89 0 19.63-12.52 14.31-23.16L224 440.45V416h136.86c9.01 0 17.26-5.2 21.01-13.25 3.8-8.17 2.44-17.47-3.56-24.26z\"]\n};\nvar faTrophy = {\n prefix: 'fas',\n iconName: 'trophy',\n icon: [576, 512, [], \"f091\", \"M552 64H448V24c0-13.3-10.7-24-24-24H152c-13.3 0-24 10.7-24 24v40H24C10.7 64 0 74.7 0 88v56c0 35.7 22.5 72.4 61.9 100.7 31.5 22.7 69.8 37.1 110 41.7C203.3 338.5 240 360 240 360v72h-48c-35.3 0-64 20.7-64 56v12c0 6.6 5.4 12 12 12h296c6.6 0 12-5.4 12-12v-12c0-35.3-28.7-56-64-56h-48v-72s36.7-21.5 68.1-73.6c40.3-4.6 78.6-19 110-41.7 39.3-28.3 61.9-65 61.9-100.7V88c0-13.3-10.7-24-24-24zM99.3 192.8C74.9 175.2 64 155.6 64 144v-16h64.2c1 32.6 5.8 61.2 12.8 86.2-15.1-5.2-29.2-12.4-41.7-21.4zM512 144c0 16.1-17.7 36.1-35.3 48.8-12.5 9-26.7 16.2-41.8 21.4 7-25 11.8-53.6 12.8-86.2H512v16z\"]\n};\nvar faTruck = {\n prefix: 'fas',\n iconName: 'truck',\n icon: [640, 512, [], \"f0d1\", \"M624 352h-16V243.9c0-12.7-5.1-24.9-14.1-33.9L494 110.1c-9-9-21.2-14.1-33.9-14.1H416V48c0-26.5-21.5-48-48-48H48C21.5 0 0 21.5 0 48v320c0 26.5 21.5 48 48 48h16c0 53 43 96 96 96s96-43 96-96h128c0 53 43 96 96 96s96-43 96-96h48c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zM160 464c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm320 0c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48zm80-208H416V144h44.1l99.9 99.9V256z\"]\n};\nvar faTruckLoading = {\n prefix: 'fas',\n iconName: 'truck-loading',\n icon: [640, 512, [], \"f4de\", \"M50.2 375.6c2.3 8.5 11.1 13.6 19.6 11.3l216.4-58c8.5-2.3 13.6-11.1 11.3-19.6l-49.7-185.5c-2.3-8.5-11.1-13.6-19.6-11.3L151 133.3l24.8 92.7-61.8 16.5-24.8-92.7-77.3 20.7C3.4 172.8-1.7 181.6.6 190.1l49.6 185.5zM384 0c-17.7 0-32 14.3-32 32v323.6L5.9 450c-4.3 1.2-6.8 5.6-5.6 9.8l12.6 46.3c1.2 4.3 5.6 6.8 9.8 5.6l393.7-107.4C418.8 464.1 467.6 512 528 512c61.9 0 112-50.1 112-112V0H384zm144 448c-26.5 0-48-21.5-48-48s21.5-48 48-48 48 21.5 48 48-21.5 48-48 48z\"]\n};\nvar faTruckMonster = {\n prefix: 'fas',\n iconName: 'truck-monster',\n icon: [640, 512, [], \"f63b\", \"M624 224h-16v-64c0-17.67-14.33-32-32-32h-73.6L419.22 24.02A64.025 64.025 0 0 0 369.24 0H256c-17.67 0-32 14.33-32 32v96H48c-8.84 0-16 7.16-16 16v80H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h16.72c29.21-38.65 75.1-64 127.28-64s98.07 25.35 127.28 64h65.45c29.21-38.65 75.1-64 127.28-64s98.07 25.35 127.28 64H624c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zm-336-96V64h81.24l51.2 64H288zm304 224h-5.2c-2.2-7.33-5.07-14.28-8.65-20.89l3.67-3.67c6.25-6.25 6.25-16.38 0-22.63l-22.63-22.63c-6.25-6.25-16.38-6.25-22.63 0l-3.67 3.67A110.85 110.85 0 0 0 512 277.2V272c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v5.2c-7.33 2.2-14.28 5.07-20.89 8.65l-3.67-3.67c-6.25-6.25-16.38-6.25-22.63 0l-22.63 22.63c-6.25 6.25-6.25 16.38 0 22.63l3.67 3.67A110.85 110.85 0 0 0 373.2 352H368c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h5.2c2.2 7.33 5.07 14.28 8.65 20.89l-3.67 3.67c-6.25 6.25-6.25 16.38 0 22.63l22.63 22.63c6.25 6.25 16.38 6.25 22.63 0l3.67-3.67c6.61 3.57 13.57 6.45 20.9 8.65v5.2c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-5.2c7.33-2.2 14.28-5.07 20.9-8.65l3.67 3.67c6.25 6.25 16.38 6.25 22.63 0l22.63-22.63c6.25-6.25 6.25-16.38 0-22.63l-3.67-3.67a110.85 110.85 0 0 0 8.65-20.89h5.2c8.84 0 16-7.16 16-16v-32c-.02-8.84-7.18-16-16.02-16zm-112 80c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48zm-208-80h-5.2c-2.2-7.33-5.07-14.28-8.65-20.89l3.67-3.67c6.25-6.25 6.25-16.38 0-22.63l-22.63-22.63c-6.25-6.25-16.38-6.25-22.63 0l-3.67 3.67A110.85 110.85 0 0 0 192 277.2V272c0-8.84-7.16-16-16-16h-32c-8.84 0-16 7.16-16 16v5.2c-7.33 2.2-14.28 5.07-20.89 8.65l-3.67-3.67c-6.25-6.25-16.38-6.25-22.63 0L58.18 304.8c-6.25 6.25-6.25 16.38 0 22.63l3.67 3.67a110.85 110.85 0 0 0-8.65 20.89H48c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h5.2c2.2 7.33 5.07 14.28 8.65 20.89l-3.67 3.67c-6.25 6.25-6.25 16.38 0 22.63l22.63 22.63c6.25 6.25 16.38 6.25 22.63 0l3.67-3.67c6.61 3.57 13.57 6.45 20.9 8.65v5.2c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-5.2c7.33-2.2 14.28-5.07 20.9-8.65l3.67 3.67c6.25 6.25 16.38 6.25 22.63 0l22.63-22.63c6.25-6.25 6.25-16.38 0-22.63l-3.67-3.67a110.85 110.85 0 0 0 8.65-20.89h5.2c8.84 0 16-7.16 16-16v-32C288 359.16 280.84 352 272 352zm-112 80c-26.51 0-48-21.49-48-48s21.49-48 48-48 48 21.49 48 48-21.49 48-48 48z\"]\n};\nvar faTruckMoving = {\n prefix: 'fas',\n iconName: 'truck-moving',\n icon: [640, 512, [], \"f4df\", \"M621.3 237.3l-58.5-58.5c-12-12-28.3-18.7-45.3-18.7H480V64c0-17.7-14.3-32-32-32H32C14.3 32 0 46.3 0 64v336c0 44.2 35.8 80 80 80 26.3 0 49.4-12.9 64-32.4 14.6 19.6 37.7 32.4 64 32.4 44.2 0 80-35.8 80-80 0-5.5-.6-10.8-1.6-16h163.2c-1.1 5.2-1.6 10.5-1.6 16 0 44.2 35.8 80 80 80s80-35.8 80-80c0-5.5-.6-10.8-1.6-16H624c8.8 0 16-7.2 16-16v-85.5c0-17-6.7-33.2-18.7-45.2zM80 432c-17.6 0-32-14.4-32-32s14.4-32 32-32 32 14.4 32 32-14.4 32-32 32zm128 0c-17.6 0-32-14.4-32-32s14.4-32 32-32 32 14.4 32 32-14.4 32-32 32zm272-224h37.5c4.3 0 8.3 1.7 11.3 4.7l43.3 43.3H480v-48zm48 224c-17.6 0-32-14.4-32-32s14.4-32 32-32 32 14.4 32 32-14.4 32-32 32z\"]\n};\nvar faTruckPickup = {\n prefix: 'fas',\n iconName: 'truck-pickup',\n icon: [640, 512, [], \"f63c\", \"M624 288h-16v-64c0-17.67-14.33-32-32-32h-48L419.22 56.02A64.025 64.025 0 0 0 369.24 32H256c-17.67 0-32 14.33-32 32v128H64c-17.67 0-32 14.33-32 32v64H16c-8.84 0-16 7.16-16 16v32c0 8.84 7.16 16 16 16h49.61c-.76 5.27-1.61 10.52-1.61 16 0 61.86 50.14 112 112 112s112-50.14 112-112c0-5.48-.85-10.73-1.61-16h67.23c-.76 5.27-1.61 10.52-1.61 16 0 61.86 50.14 112 112 112s112-50.14 112-112c0-5.48-.85-10.73-1.61-16H624c8.84 0 16-7.16 16-16v-32c0-8.84-7.16-16-16-16zM288 96h81.24l76.8 96H288V96zM176 416c-26.47 0-48-21.53-48-48s21.53-48 48-48 48 21.53 48 48-21.53 48-48 48zm288 0c-26.47 0-48-21.53-48-48s21.53-48 48-48 48 21.53 48 48-21.53 48-48 48z\"]\n};\nvar faTshirt = {\n prefix: 'fas',\n iconName: 'tshirt',\n icon: [640, 512, [], \"f553\", \"M631.2 96.5L436.5 0C416.4 27.8 371.9 47.2 320 47.2S223.6 27.8 203.5 0L8.8 96.5c-7.9 4-11.1 13.6-7.2 21.5l57.2 114.5c4 7.9 13.6 11.1 21.5 7.2l56.6-27.7c10.6-5.2 23 2.5 23 14.4V480c0 17.7 14.3 32 32 32h256c17.7 0 32-14.3 32-32V226.3c0-11.8 12.4-19.6 23-14.4l56.6 27.7c7.9 4 17.5.8 21.5-7.2L638.3 118c4-7.9.8-17.6-7.1-21.5z\"]\n};\nvar faTty = {\n prefix: 'fas',\n iconName: 'tty',\n icon: [512, 512, [], \"f1e4\", \"M5.37 103.822c138.532-138.532 362.936-138.326 501.262 0 6.078 6.078 7.074 15.496 2.583 22.681l-43.214 69.138a18.332 18.332 0 0 1-22.356 7.305l-86.422-34.569a18.335 18.335 0 0 1-11.434-18.846L351.741 90c-62.145-22.454-130.636-21.986-191.483 0l5.953 59.532a18.331 18.331 0 0 1-11.434 18.846l-86.423 34.568a18.334 18.334 0 0 1-22.356-7.305L2.787 126.502a18.333 18.333 0 0 1 2.583-22.68zM96 308v-40c0-6.627-5.373-12-12-12H44c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm-336 96v-40c0-6.627-5.373-12-12-12H92c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zM96 500v-40c0-6.627-5.373-12-12-12H44c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12zm288 0v-40c0-6.627-5.373-12-12-12H140c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h232c6.627 0 12-5.373 12-12zm96 0v-40c0-6.627-5.373-12-12-12h-40c-6.627 0-12 5.373-12 12v40c0 6.627 5.373 12 12 12h40c6.627 0 12-5.373 12-12z\"]\n};\nvar faTv = {\n prefix: 'fas',\n iconName: 'tv',\n icon: [640, 512, [], \"f26c\", \"M592 0H48A48 48 0 0 0 0 48v320a48 48 0 0 0 48 48h240v32H112a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16H352v-32h240a48 48 0 0 0 48-48V48a48 48 0 0 0-48-48zm-16 352H64V64h512z\"]\n};\nvar faUmbrella = {\n prefix: 'fas',\n iconName: 'umbrella',\n icon: [576, 512, [], \"f0e9\", \"M575.7 280.8C547.1 144.5 437.3 62.6 320 49.9V32c0-17.7-14.3-32-32-32s-32 14.3-32 32v17.9C138.3 62.6 29.5 144.5.3 280.8c-2.2 10.1 8.5 21.3 18.7 11.4 52-55 107.7-52.4 158.6 37 5.3 9.5 14.9 8.6 19.7 0 20.2-35.4 44.9-73.2 90.7-73.2 58.5 0 88.2 68.8 90.7 73.2 4.8 8.6 14.4 9.5 19.7 0 51-89.5 107.1-91.4 158.6-37 10.3 10 20.9-1.3 18.7-11.4zM256 301.7V432c0 8.8-7.2 16-16 16-7.8 0-13.2-5.3-15.1-10.7-5.9-16.7-24.1-25.4-40.8-19.5-16.7 5.9-25.4 24.2-19.5 40.8 11.2 31.9 41.6 53.3 75.4 53.3 44.1 0 80-35.9 80-80V301.6c-9.1-7.9-19.8-13.6-32-13.6-12.3.1-22.4 4.8-32 13.7z\"]\n};\nvar faUmbrellaBeach = {\n prefix: 'fas',\n iconName: 'umbrella-beach',\n icon: [640, 512, [], \"f5ca\", \"M115.38 136.9l102.11 37.18c35.19-81.54 86.21-144.29 139-173.7-95.88-4.89-188.78 36.96-248.53 111.8-6.69 8.4-2.66 21.05 7.42 24.72zm132.25 48.16l238.48 86.83c35.76-121.38 18.7-231.66-42.63-253.98-7.4-2.7-15.13-4-23.09-4-58.02.01-128.27 69.17-172.76 171.15zM521.48 60.5c6.22 16.3 10.83 34.6 13.2 55.19 5.74 49.89-1.42 108.23-18.95 166.98l102.62 37.36c10.09 3.67 21.31-3.43 21.57-14.17 2.32-95.69-41.91-187.44-118.44-245.36zM560 447.98H321.06L386 269.5l-60.14-21.9-72.9 200.37H16c-8.84 0-16 7.16-16 16.01v32.01C0 504.83 7.16 512 16 512h544c8.84 0 16-7.17 16-16.01v-32.01c0-8.84-7.16-16-16-16z\"]\n};\nvar faUnderline = {\n prefix: 'fas',\n iconName: 'underline',\n icon: [448, 512, [], \"f0cd\", \"M32 64h32v160c0 88.22 71.78 160 160 160s160-71.78 160-160V64h32a16 16 0 0 0 16-16V16a16 16 0 0 0-16-16H272a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h32v160a80 80 0 0 1-160 0V64h32a16 16 0 0 0 16-16V16a16 16 0 0 0-16-16H32a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16zm400 384H16a16 16 0 0 0-16 16v32a16 16 0 0 0 16 16h416a16 16 0 0 0 16-16v-32a16 16 0 0 0-16-16z\"]\n};\nvar faUndo = {\n prefix: 'fas',\n iconName: 'undo',\n icon: [512, 512, [], \"f0e2\", \"M212.333 224.333H12c-6.627 0-12-5.373-12-12V12C0 5.373 5.373 0 12 0h48c6.627 0 12 5.373 12 12v78.112C117.773 39.279 184.26 7.47 258.175 8.007c136.906.994 246.448 111.623 246.157 248.532C504.041 393.258 393.12 504 256.333 504c-64.089 0-122.496-24.313-166.51-64.215-5.099-4.622-5.334-12.554-.467-17.42l33.967-33.967c4.474-4.474 11.662-4.717 16.401-.525C170.76 415.336 211.58 432 256.333 432c97.268 0 176-78.716 176-176 0-97.267-78.716-176-176-176-58.496 0-110.28 28.476-142.274 72.333h98.274c6.627 0 12 5.373 12 12v48c0 6.627-5.373 12-12 12z\"]\n};\nvar faUndoAlt = {\n prefix: 'fas',\n iconName: 'undo-alt',\n icon: [512, 512, [], \"f2ea\", \"M255.545 8c-66.269.119-126.438 26.233-170.86 68.685L48.971 40.971C33.851 25.851 8 36.559 8 57.941V192c0 13.255 10.745 24 24 24h134.059c21.382 0 32.09-25.851 16.971-40.971l-41.75-41.75c30.864-28.899 70.801-44.907 113.23-45.273 92.398-.798 170.283 73.977 169.484 169.442C423.236 348.009 349.816 424 256 424c-41.127 0-79.997-14.678-110.63-41.556-4.743-4.161-11.906-3.908-16.368.553L89.34 422.659c-4.872 4.872-4.631 12.815.482 17.433C133.798 479.813 192.074 504 256 504c136.966 0 247.999-111.033 248-247.998C504.001 119.193 392.354 7.755 255.545 8z\"]\n};\nvar faUniversalAccess = {\n prefix: 'fas',\n iconName: 'universal-access',\n icon: [512, 512, [], \"f29a\", \"M256 48c114.953 0 208 93.029 208 208 0 114.953-93.029 208-208 208-114.953 0-208-93.029-208-208 0-114.953 93.029-208 208-208m0-40C119.033 8 8 119.033 8 256s111.033 248 248 248 248-111.033 248-248S392.967 8 256 8zm0 56C149.961 64 64 149.961 64 256s85.961 192 192 192 192-85.961 192-192S362.039 64 256 64zm0 44c19.882 0 36 16.118 36 36s-16.118 36-36 36-36-16.118-36-36 16.118-36 36-36zm117.741 98.023c-28.712 6.779-55.511 12.748-82.14 15.807.851 101.023 12.306 123.052 25.037 155.621 3.617 9.26-.957 19.698-10.217 23.315-9.261 3.617-19.699-.957-23.316-10.217-8.705-22.308-17.086-40.636-22.261-78.549h-9.686c-5.167 37.851-13.534 56.208-22.262 78.549-3.615 9.255-14.05 13.836-23.315 10.217-9.26-3.617-13.834-14.056-10.217-23.315 12.713-32.541 24.185-54.541 25.037-155.621-26.629-3.058-53.428-9.027-82.141-15.807-8.6-2.031-13.926-10.648-11.895-19.249s10.647-13.926 19.249-11.895c96.686 22.829 124.283 22.783 220.775 0 8.599-2.03 17.218 3.294 19.249 11.895 2.029 8.601-3.297 17.219-11.897 19.249z\"]\n};\nvar faUniversity = {\n prefix: 'fas',\n iconName: 'university',\n icon: [512, 512, [], \"f19c\", \"M496 128v16a8 8 0 0 1-8 8h-24v12c0 6.627-5.373 12-12 12H60c-6.627 0-12-5.373-12-12v-12H24a8 8 0 0 1-8-8v-16a8 8 0 0 1 4.941-7.392l232-88a7.996 7.996 0 0 1 6.118 0l232 88A8 8 0 0 1 496 128zm-24 304H40c-13.255 0-24 10.745-24 24v16a8 8 0 0 0 8 8h464a8 8 0 0 0 8-8v-16c0-13.255-10.745-24-24-24zM96 192v192H60c-6.627 0-12 5.373-12 12v20h416v-20c0-6.627-5.373-12-12-12h-36V192h-64v192h-64V192h-64v192h-64V192H96z\"]\n};\nvar faUnlink = {\n prefix: 'fas',\n iconName: 'unlink',\n icon: [512, 512, [], \"f127\", \"M304.083 405.907c4.686 4.686 4.686 12.284 0 16.971l-44.674 44.674c-59.263 59.262-155.693 59.266-214.961 0-59.264-59.265-59.264-155.696 0-214.96l44.675-44.675c4.686-4.686 12.284-4.686 16.971 0l39.598 39.598c4.686 4.686 4.686 12.284 0 16.971l-44.675 44.674c-28.072 28.073-28.072 73.75 0 101.823 28.072 28.072 73.75 28.073 101.824 0l44.674-44.674c4.686-4.686 12.284-4.686 16.971 0l39.597 39.598zm-56.568-260.216c4.686 4.686 12.284 4.686 16.971 0l44.674-44.674c28.072-28.075 73.75-28.073 101.824 0 28.072 28.073 28.072 73.75 0 101.823l-44.675 44.674c-4.686 4.686-4.686 12.284 0 16.971l39.598 39.598c4.686 4.686 12.284 4.686 16.971 0l44.675-44.675c59.265-59.265 59.265-155.695 0-214.96-59.266-59.264-155.695-59.264-214.961 0l-44.674 44.674c-4.686 4.686-4.686 12.284 0 16.971l39.597 39.598zm234.828 359.28l22.627-22.627c9.373-9.373 9.373-24.569 0-33.941L63.598 7.029c-9.373-9.373-24.569-9.373-33.941 0L7.029 29.657c-9.373 9.373-9.373 24.569 0 33.941l441.373 441.373c9.373 9.372 24.569 9.372 33.941 0z\"]\n};\nvar faUnlock = {\n prefix: 'fas',\n iconName: 'unlock',\n icon: [448, 512, [], \"f09c\", \"M400 256H152V152.9c0-39.6 31.7-72.5 71.3-72.9 40-.4 72.7 32.1 72.7 72v16c0 13.3 10.7 24 24 24h32c13.3 0 24-10.7 24-24v-16C376 68 307.5-.3 223.5 0 139.5.3 72 69.5 72 153.5V256H48c-26.5 0-48 21.5-48 48v160c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V304c0-26.5-21.5-48-48-48z\"]\n};\nvar faUnlockAlt = {\n prefix: 'fas',\n iconName: 'unlock-alt',\n icon: [448, 512, [], \"f13e\", \"M400 256H152V152.9c0-39.6 31.7-72.5 71.3-72.9 40-.4 72.7 32.1 72.7 72v16c0 13.3 10.7 24 24 24h32c13.3 0 24-10.7 24-24v-16C376 68 307.5-.3 223.5 0 139.5.3 72 69.5 72 153.5V256H48c-26.5 0-48 21.5-48 48v160c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V304c0-26.5-21.5-48-48-48zM264 408c0 22.1-17.9 40-40 40s-40-17.9-40-40v-48c0-22.1 17.9-40 40-40s40 17.9 40 40v48z\"]\n};\nvar faUpload = {\n prefix: 'fas',\n iconName: 'upload',\n icon: [512, 512, [], \"f093\", \"M296 384h-80c-13.3 0-24-10.7-24-24V192h-87.7c-17.8 0-26.7-21.5-14.1-34.1L242.3 5.7c7.5-7.5 19.8-7.5 27.3 0l152.2 152.2c12.6 12.6 3.7 34.1-14.1 34.1H320v168c0 13.3-10.7 24-24 24zm216-8v112c0 13.3-10.7 24-24 24H24c-13.3 0-24-10.7-24-24V376c0-13.3 10.7-24 24-24h136v8c0 30.9 25.1 56 56 56h80c30.9 0 56-25.1 56-56v-8h136c13.3 0 24 10.7 24 24zm-124 88c0-11-9-20-20-20s-20 9-20 20 9 20 20 20 20-9 20-20zm64 0c0-11-9-20-20-20s-20 9-20 20 9 20 20 20 20-9 20-20z\"]\n};\nvar faUser = {\n prefix: 'fas',\n iconName: 'user',\n icon: [448, 512, [], \"f007\", \"M224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm89.6 32h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-74.2-60.2-134.4-134.4-134.4z\"]\n};\nvar faUserAlt = {\n prefix: 'fas',\n iconName: 'user-alt',\n icon: [512, 512, [], \"f406\", \"M256 288c79.5 0 144-64.5 144-144S335.5 0 256 0 112 64.5 112 144s64.5 144 144 144zm128 32h-55.1c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16H128C57.3 320 0 377.3 0 448v16c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48v-16c0-70.7-57.3-128-128-128z\"]\n};\nvar faUserAltSlash = {\n prefix: 'fas',\n iconName: 'user-alt-slash',\n icon: [640, 512, [], \"f4fa\", \"M633.8 458.1L389.6 269.3C433.8 244.7 464 198.1 464 144 464 64.5 399.5 0 320 0c-67.1 0-123 46.1-139 108.2L45.5 3.4C38.5-2 28.5-.8 23 6.2L3.4 31.4c-5.4 7-4.2 17 2.8 22.4l588.4 454.7c7 5.4 17 4.2 22.5-2.8l19.6-25.3c5.4-6.8 4.1-16.9-2.9-22.3zM198.4 320C124.2 320 64 380.2 64 454.4v9.6c0 26.5 21.5 48 48 48h382.2L245.8 320h-47.4z\"]\n};\nvar faUserAstronaut = {\n prefix: 'fas',\n iconName: 'user-astronaut',\n icon: [448, 512, [], \"f4fb\", \"M64 224h13.5c24.7 56.5 80.9 96 146.5 96s121.8-39.5 146.5-96H384c8.8 0 16-7.2 16-16v-96c0-8.8-7.2-16-16-16h-13.5C345.8 39.5 289.6 0 224 0S102.2 39.5 77.5 96H64c-8.8 0-16 7.2-16 16v96c0 8.8 7.2 16 16 16zm40-88c0-22.1 21.5-40 48-40h144c26.5 0 48 17.9 48 40v24c0 53-43 96-96 96h-48c-53 0-96-43-96-96v-24zm72 72l12-36 36-12-36-12-12-36-12 36-36 12 36 12 12 36zm151.6 113.4C297.7 340.7 262.2 352 224 352s-73.7-11.3-103.6-30.6C52.9 328.5 0 385 0 454.4v9.6c0 26.5 21.5 48 48 48h80v-64c0-17.7 14.3-32 32-32h128c17.7 0 32 14.3 32 32v64h80c26.5 0 48-21.5 48-48v-9.6c0-69.4-52.9-125.9-120.4-133zM272 448c-8.8 0-16 7.2-16 16s7.2 16 16 16 16-7.2 16-16-7.2-16-16-16zm-96 0c-8.8 0-16 7.2-16 16v48h32v-48c0-8.8-7.2-16-16-16z\"]\n};\nvar faUserCheck = {\n prefix: 'fas',\n iconName: 'user-check',\n icon: [640, 512, [], \"f4fc\", \"M224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm89.6 32h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-74.2-60.2-134.4-134.4-134.4zm323-128.4l-27.8-28.1c-4.6-4.7-12.1-4.7-16.8-.1l-104.8 104-45.5-45.8c-4.6-4.7-12.1-4.7-16.8-.1l-28.1 27.9c-4.7 4.6-4.7 12.1-.1 16.8l81.7 82.3c4.6 4.7 12.1 4.7 16.8.1l141.3-140.2c4.6-4.7 4.7-12.2.1-16.8z\"]\n};\nvar faUserCircle = {\n prefix: 'fas',\n iconName: 'user-circle',\n icon: [496, 512, [], \"f2bd\", \"M248 8C111 8 0 119 0 256s111 248 248 248 248-111 248-248S385 8 248 8zm0 96c48.6 0 88 39.4 88 88s-39.4 88-88 88-88-39.4-88-88 39.4-88 88-88zm0 344c-58.7 0-111.3-26.6-146.5-68.2 18.8-35.4 55.6-59.8 98.5-59.8 2.4 0 4.8.4 7.1 1.1 13 4.2 26.6 6.9 40.9 6.9 14.3 0 28-2.7 40.9-6.9 2.3-.7 4.7-1.1 7.1-1.1 42.9 0 79.7 24.4 98.5 59.8C359.3 421.4 306.7 448 248 448z\"]\n};\nvar faUserClock = {\n prefix: 'fas',\n iconName: 'user-clock',\n icon: [640, 512, [], \"f4fd\", \"M496 224c-79.6 0-144 64.4-144 144s64.4 144 144 144 144-64.4 144-144-64.4-144-144-144zm64 150.3c0 5.3-4.4 9.7-9.7 9.7h-60.6c-5.3 0-9.7-4.4-9.7-9.7v-76.6c0-5.3 4.4-9.7 9.7-9.7h12.6c5.3 0 9.7 4.4 9.7 9.7V352h38.3c5.3 0 9.7 4.4 9.7 9.7v12.6zM320 368c0-27.8 6.7-54.1 18.2-77.5-8-1.5-16.2-2.5-24.6-2.5h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h347.1c-45.3-31.9-75.1-84.5-75.1-144zm-96-112c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128z\"]\n};\nvar faUserCog = {\n prefix: 'fas',\n iconName: 'user-cog',\n icon: [640, 512, [], \"f4fe\", \"M610.5 373.3c2.6-14.1 2.6-28.5 0-42.6l25.8-14.9c3-1.7 4.3-5.2 3.3-8.5-6.7-21.6-18.2-41.2-33.2-57.4-2.3-2.5-6-3.1-9-1.4l-25.8 14.9c-10.9-9.3-23.4-16.5-36.9-21.3v-29.8c0-3.4-2.4-6.4-5.7-7.1-22.3-5-45-4.8-66.2 0-3.3.7-5.7 3.7-5.7 7.1v29.8c-13.5 4.8-26 12-36.9 21.3l-25.8-14.9c-2.9-1.7-6.7-1.1-9 1.4-15 16.2-26.5 35.8-33.2 57.4-1 3.3.4 6.8 3.3 8.5l25.8 14.9c-2.6 14.1-2.6 28.5 0 42.6l-25.8 14.9c-3 1.7-4.3 5.2-3.3 8.5 6.7 21.6 18.2 41.1 33.2 57.4 2.3 2.5 6 3.1 9 1.4l25.8-14.9c10.9 9.3 23.4 16.5 36.9 21.3v29.8c0 3.4 2.4 6.4 5.7 7.1 22.3 5 45 4.8 66.2 0 3.3-.7 5.7-3.7 5.7-7.1v-29.8c13.5-4.8 26-12 36.9-21.3l25.8 14.9c2.9 1.7 6.7 1.1 9-1.4 15-16.2 26.5-35.8 33.2-57.4 1-3.3-.4-6.8-3.3-8.5l-25.8-14.9zM496 400.5c-26.8 0-48.5-21.8-48.5-48.5s21.8-48.5 48.5-48.5 48.5 21.8 48.5 48.5-21.7 48.5-48.5 48.5zM224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm201.2 226.5c-2.3-1.2-4.6-2.6-6.8-3.9l-7.9 4.6c-6 3.4-12.8 5.3-19.6 5.3-10.9 0-21.4-4.6-28.9-12.6-18.3-19.8-32.3-43.9-40.2-69.6-5.5-17.7 1.9-36.4 17.9-45.7l7.9-4.6c-.1-2.6-.1-5.2 0-7.8l-7.9-4.6c-16-9.2-23.4-28-17.9-45.7.9-2.9 2.2-5.8 3.2-8.7-3.8-.3-7.5-1.2-11.4-1.2h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c10.1 0 19.5-3.2 27.2-8.5-1.2-3.8-2-7.7-2-11.8v-9.2z\"]\n};\nvar faUserEdit = {\n prefix: 'fas',\n iconName: 'user-edit',\n icon: [640, 512, [], \"f4ff\", \"M224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm89.6 32h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h274.9c-2.4-6.8-3.4-14-2.6-21.3l6.8-60.9 1.2-11.1 7.9-7.9 77.3-77.3c-24.5-27.7-60-45.5-99.9-45.5zm45.3 145.3l-6.8 61c-1.1 10.2 7.5 18.8 17.6 17.6l60.9-6.8 137.9-137.9-71.7-71.7-137.9 137.8zM633 268.9L595.1 231c-9.3-9.3-24.5-9.3-33.8 0l-37.8 37.8-4.1 4.1 71.8 71.7 41.8-41.8c9.3-9.4 9.3-24.5 0-33.9z\"]\n};\nvar faUserFriends = {\n prefix: 'fas',\n iconName: 'user-friends',\n icon: [640, 512, [], \"f500\", \"M192 256c61.9 0 112-50.1 112-112S253.9 32 192 32 80 82.1 80 144s50.1 112 112 112zm76.8 32h-8.3c-20.8 10-43.9 16-68.5 16s-47.6-6-68.5-16h-8.3C51.6 288 0 339.6 0 403.2V432c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48v-28.8c0-63.6-51.6-115.2-115.2-115.2zM480 256c53 0 96-43 96-96s-43-96-96-96-96 43-96 96 43 96 96 96zm48 32h-3.8c-13.9 4.8-28.6 8-44.2 8s-30.3-3.2-44.2-8H432c-20.4 0-39.2 5.9-55.7 15.4 24.4 26.3 39.7 61.2 39.7 99.8v38.4c0 2.2-.5 4.3-.6 6.4H592c26.5 0 48-21.5 48-48 0-61.9-50.1-112-112-112z\"]\n};\nvar faUserGraduate = {\n prefix: 'fas',\n iconName: 'user-graduate',\n icon: [448, 512, [], \"f501\", \"M319.4 320.6L224 416l-95.4-95.4C57.1 323.7 0 382.2 0 454.4v9.6c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-9.6c0-72.2-57.1-130.7-128.6-133.8zM13.6 79.8l6.4 1.5v58.4c-7 4.2-12 11.5-12 20.3 0 8.4 4.6 15.4 11.1 19.7L3.5 242c-1.7 6.9 2.1 14 7.6 14h41.8c5.5 0 9.3-7.1 7.6-14l-15.6-62.3C51.4 175.4 56 168.4 56 160c0-8.8-5-16.1-12-20.3V87.1l66 15.9c-8.6 17.2-14 36.4-14 57 0 70.7 57.3 128 128 128s128-57.3 128-128c0-20.6-5.3-39.8-14-57l96.3-23.2c18.2-4.4 18.2-27.1 0-31.5l-190.4-46c-13-3.1-26.7-3.1-39.7 0L13.6 48.2c-18.1 4.4-18.1 27.2 0 31.6z\"]\n};\nvar faUserInjured = {\n prefix: 'fas',\n iconName: 'user-injured',\n icon: [448, 512, [], \"f728\", \"M277.37 11.98C261.08 4.47 243.11 0 224 0c-53.69 0-99.5 33.13-118.51 80h81.19l90.69-68.02zM342.51 80c-7.9-19.47-20.67-36.2-36.49-49.52L239.99 80h102.52zM224 256c70.69 0 128-57.31 128-128 0-5.48-.95-10.7-1.61-16H97.61c-.67 5.3-1.61 10.52-1.61 16 0 70.69 57.31 128 128 128zM80 299.7V512h128.26l-98.45-221.52A132.835 132.835 0 0 0 80 299.7zM0 464c0 26.51 21.49 48 48 48V320.24C18.88 344.89 0 381.26 0 422.4V464zm256-48h-55.38l42.67 96H256c26.47 0 48-21.53 48-48s-21.53-48-48-48zm57.6-128h-16.71c-22.24 10.18-46.88 16-72.89 16s-50.65-5.82-72.89-16h-7.37l42.67 96H256c44.11 0 80 35.89 80 80 0 18.08-6.26 34.59-16.41 48H400c26.51 0 48-21.49 48-48v-41.6c0-74.23-60.17-134.4-134.4-134.4z\"]\n};\nvar faUserLock = {\n prefix: 'fas',\n iconName: 'user-lock',\n icon: [640, 512, [], \"f502\", \"M224 256A128 128 0 1 0 96 128a128 128 0 0 0 128 128zm96 64a63.08 63.08 0 0 1 8.1-30.5c-4.8-.5-9.5-1.5-14.5-1.5h-16.7a174.08 174.08 0 0 1-145.8 0h-16.7A134.43 134.43 0 0 0 0 422.4V464a48 48 0 0 0 48 48h280.9a63.54 63.54 0 0 1-8.9-32zm288-32h-32v-80a80 80 0 0 0-160 0v80h-32a32 32 0 0 0-32 32v160a32 32 0 0 0 32 32h224a32 32 0 0 0 32-32V320a32 32 0 0 0-32-32zM496 432a32 32 0 1 1 32-32 32 32 0 0 1-32 32zm32-144h-64v-80a32 32 0 0 1 64 0z\"]\n};\nvar faUserMd = {\n prefix: 'fas',\n iconName: 'user-md',\n icon: [448, 512, [], \"f0f0\", \"M224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zM104 424c0 13.3 10.7 24 24 24s24-10.7 24-24-10.7-24-24-24-24 10.7-24 24zm216-135.4v49c36.5 7.4 64 39.8 64 78.4v41.7c0 7.6-5.4 14.2-12.9 15.7l-32.2 6.4c-4.3.9-8.5-1.9-9.4-6.3l-3.1-15.7c-.9-4.3 1.9-8.6 6.3-9.4l19.3-3.9V416c0-62.8-96-65.1-96 1.9v26.7l19.3 3.9c4.3.9 7.1 5.1 6.3 9.4l-3.1 15.7c-.9 4.3-5.1 7.1-9.4 6.3l-31.2-4.2c-7.9-1.1-13.8-7.8-13.8-15.9V416c0-38.6 27.5-70.9 64-78.4v-45.2c-2.2.7-4.4 1.1-6.6 1.9-18 6.3-37.3 9.8-57.4 9.8s-39.4-3.5-57.4-9.8c-7.4-2.6-14.9-4.2-22.6-5.2v81.6c23.1 6.9 40 28.1 40 53.4 0 30.9-25.1 56-56 56s-56-25.1-56-56c0-25.3 16.9-46.5 40-53.4v-80.4C48.5 301 0 355.8 0 422.4v44.8C0 491.9 20.1 512 44.8 512h358.4c24.7 0 44.8-20.1 44.8-44.8v-44.8c0-72-56.8-130.3-128-133.8z\"]\n};\nvar faUserMinus = {\n prefix: 'fas',\n iconName: 'user-minus',\n icon: [640, 512, [], \"f503\", \"M624 208H432c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h192c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm-400 48c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm89.6 32h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-74.2-60.2-134.4-134.4-134.4z\"]\n};\nvar faUserNinja = {\n prefix: 'fas',\n iconName: 'user-ninja',\n icon: [448, 512, [], \"f504\", \"M325.4 289.2L224 390.6 122.6 289.2C54 295.3 0 352.2 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-70.2-54-127.1-122.6-133.2zM32 192c27.3 0 51.8-11.5 69.2-29.7 15.1 53.9 64 93.7 122.8 93.7 70.7 0 128-57.3 128-128S294.7 0 224 0c-50.4 0-93.6 29.4-114.5 71.8C92.1 47.8 64 32 32 32c0 33.4 17.1 62.8 43.1 80-26 17.2-43.1 46.6-43.1 80zm144-96h96c17.7 0 32 14.3 32 32H144c0-17.7 14.3-32 32-32z\"]\n};\nvar faUserNurse = {\n prefix: 'fas',\n iconName: 'user-nurse',\n icon: [448, 512, [], \"f82f\", \"M319.41,320,224,415.39,128.59,320C57.1,323.1,0,381.6,0,453.79A58.21,58.21,0,0,0,58.21,512H389.79A58.21,58.21,0,0,0,448,453.79C448,381.6,390.9,323.1,319.41,320ZM224,304A128,128,0,0,0,352,176V65.82a32,32,0,0,0-20.76-30L246.47,4.07a64,64,0,0,0-44.94,0L116.76,35.86A32,32,0,0,0,96,65.82V176A128,128,0,0,0,224,304ZM184,71.67a5,5,0,0,1,5-5h21.67V45a5,5,0,0,1,5-5h16.66a5,5,0,0,1,5,5V66.67H259a5,5,0,0,1,5,5V88.33a5,5,0,0,1-5,5H237.33V115a5,5,0,0,1-5,5H215.67a5,5,0,0,1-5-5V93.33H189a5,5,0,0,1-5-5ZM144,160H304v16a80,80,0,0,1-160,0Z\"]\n};\nvar faUserPlus = {\n prefix: 'fas',\n iconName: 'user-plus',\n icon: [640, 512, [], \"f234\", \"M624 208h-64v-64c0-8.8-7.2-16-16-16h-32c-8.8 0-16 7.2-16 16v64h-64c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h64v64c0 8.8 7.2 16 16 16h32c8.8 0 16-7.2 16-16v-64h64c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zm-400 48c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm89.6 32h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-74.2-60.2-134.4-134.4-134.4z\"]\n};\nvar faUserSecret = {\n prefix: 'fas',\n iconName: 'user-secret',\n icon: [448, 512, [], \"f21b\", \"M383.9 308.3l23.9-62.6c4-10.5-3.7-21.7-15-21.7h-58.5c11-18.9 17.8-40.6 17.8-64v-.3c39.2-7.8 64-19.1 64-31.7 0-13.3-27.3-25.1-70.1-33-9.2-32.8-27-65.8-40.6-82.8-9.5-11.9-25.9-15.6-39.5-8.8l-27.6 13.8c-9 4.5-19.6 4.5-28.6 0L182.1 3.4c-13.6-6.8-30-3.1-39.5 8.8-13.5 17-31.4 50-40.6 82.8-42.7 7.9-70 19.7-70 33 0 12.6 24.8 23.9 64 31.7v.3c0 23.4 6.8 45.1 17.8 64H56.3c-11.5 0-19.2 11.7-14.7 22.3l25.8 60.2C27.3 329.8 0 372.7 0 422.4v44.8C0 491.9 20.1 512 44.8 512h358.4c24.7 0 44.8-20.1 44.8-44.8v-44.8c0-48.4-25.8-90.4-64.1-114.1zM176 480l-41.6-192 49.6 32 24 40-32 120zm96 0l-32-120 24-40 49.6-32L272 480zm41.7-298.5c-3.9 11.9-7 24.6-16.5 33.4-10.1 9.3-48 22.4-64-25-2.8-8.4-15.4-8.4-18.3 0-17 50.2-56 32.4-64 25-9.5-8.8-12.7-21.5-16.5-33.4-.8-2.5-6.3-5.7-6.3-5.8v-10.8c28.3 3.6 61 5.8 96 5.8s67.7-2.1 96-5.8v10.8c-.1.1-5.6 3.2-6.4 5.8z\"]\n};\nvar faUserShield = {\n prefix: 'fas',\n iconName: 'user-shield',\n icon: [640, 512, [], \"f505\", \"M622.3 271.1l-115.2-45c-4.1-1.6-12.6-3.7-22.2 0l-115.2 45c-10.7 4.2-17.7 14-17.7 24.9 0 111.6 68.7 188.8 132.9 213.9 9.6 3.7 18 1.6 22.2 0C558.4 489.9 640 420.5 640 296c0-10.9-7-20.7-17.7-24.9zM496 462.4V273.3l95.5 37.3c-5.6 87.1-60.9 135.4-95.5 151.8zM224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm96 40c0-2.5.8-4.8 1.1-7.2-2.5-.1-4.9-.8-7.5-.8h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c6.8 0 13.3-1.5 19.2-4-54-42.9-99.2-116.7-99.2-212z\"]\n};\nvar faUserSlash = {\n prefix: 'fas',\n iconName: 'user-slash',\n icon: [640, 512, [], \"f506\", \"M633.8 458.1L362.3 248.3C412.1 230.7 448 183.8 448 128 448 57.3 390.7 0 320 0c-67.1 0-121.5 51.8-126.9 117.4L45.5 3.4C38.5-2 28.5-.8 23 6.2L3.4 31.4c-5.4 7-4.2 17 2.8 22.4l588.4 454.7c7 5.4 17 4.2 22.5-2.8l19.6-25.3c5.4-6.8 4.1-16.9-2.9-22.3zM96 422.4V464c0 26.5 21.5 48 48 48h350.2L207.4 290.3C144.2 301.3 96 356 96 422.4z\"]\n};\nvar faUserTag = {\n prefix: 'fas',\n iconName: 'user-tag',\n icon: [640, 512, [], \"f507\", \"M630.6 364.9l-90.3-90.2c-12-12-28.3-18.7-45.3-18.7h-79.3c-17.7 0-32 14.3-32 32v79.2c0 17 6.7 33.2 18.7 45.2l90.3 90.2c12.5 12.5 32.8 12.5 45.3 0l92.5-92.5c12.6-12.5 12.6-32.7.1-45.2zm-182.8-21c-13.3 0-24-10.7-24-24s10.7-24 24-24 24 10.7 24 24c0 13.2-10.7 24-24 24zm-223.8-88c70.7 0 128-57.3 128-128C352 57.3 294.7 0 224 0S96 57.3 96 128c0 70.6 57.3 127.9 128 127.9zm127.8 111.2V294c-12.2-3.6-24.9-6.2-38.2-6.2h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 287.9 0 348.1 0 422.3v41.6c0 26.5 21.5 48 48 48h352c15.5 0 29.1-7.5 37.9-18.9l-58-58c-18.1-18.1-28.1-42.2-28.1-67.9z\"]\n};\nvar faUserTie = {\n prefix: 'fas',\n iconName: 'user-tie',\n icon: [448, 512, [], \"f508\", \"M224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm95.8 32.6L272 480l-32-136 32-56h-96l32 56-32 136-47.8-191.4C56.9 292 0 350.3 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-72.1-56.9-130.4-128.2-133.8z\"]\n};\nvar faUserTimes = {\n prefix: 'fas',\n iconName: 'user-times',\n icon: [640, 512, [], \"f235\", \"M589.6 240l45.6-45.6c6.3-6.3 6.3-16.5 0-22.8l-22.8-22.8c-6.3-6.3-16.5-6.3-22.8 0L544 194.4l-45.6-45.6c-6.3-6.3-16.5-6.3-22.8 0l-22.8 22.8c-6.3 6.3-6.3 16.5 0 22.8l45.6 45.6-45.6 45.6c-6.3 6.3-6.3 16.5 0 22.8l22.8 22.8c6.3 6.3 16.5 6.3 22.8 0l45.6-45.6 45.6 45.6c6.3 6.3 16.5 6.3 22.8 0l22.8-22.8c6.3-6.3 6.3-16.5 0-22.8L589.6 240zM224 256c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128zm89.6 32h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48v-41.6c0-74.2-60.2-134.4-134.4-134.4z\"]\n};\nvar faUsers = {\n prefix: 'fas',\n iconName: 'users',\n icon: [640, 512, [], \"f0c0\", \"M96 224c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm448 0c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm32 32h-64c-17.6 0-33.5 7.1-45.1 18.6 40.3 22.1 68.9 62 75.1 109.4h66c17.7 0 32-14.3 32-32v-32c0-35.3-28.7-64-64-64zm-256 0c61.9 0 112-50.1 112-112S381.9 32 320 32 208 82.1 208 144s50.1 112 112 112zm76.8 32h-8.3c-20.8 10-43.9 16-68.5 16s-47.6-6-68.5-16h-8.3C179.6 288 128 339.6 128 403.2V432c0 26.5 21.5 48 48 48h288c26.5 0 48-21.5 48-48v-28.8c0-63.6-51.6-115.2-115.2-115.2zm-223.7-13.4C161.5 263.1 145.6 256 128 256H64c-35.3 0-64 28.7-64 64v32c0 17.7 14.3 32 32 32h65.9c6.3-47.4 34.9-87.3 75.2-109.4z\"]\n};\nvar faUsersCog = {\n prefix: 'fas',\n iconName: 'users-cog',\n icon: [640, 512, [], \"f509\", \"M610.5 341.3c2.6-14.1 2.6-28.5 0-42.6l25.8-14.9c3-1.7 4.3-5.2 3.3-8.5-6.7-21.6-18.2-41.2-33.2-57.4-2.3-2.5-6-3.1-9-1.4l-25.8 14.9c-10.9-9.3-23.4-16.5-36.9-21.3v-29.8c0-3.4-2.4-6.4-5.7-7.1-22.3-5-45-4.8-66.2 0-3.3.7-5.7 3.7-5.7 7.1v29.8c-13.5 4.8-26 12-36.9 21.3l-25.8-14.9c-2.9-1.7-6.7-1.1-9 1.4-15 16.2-26.5 35.8-33.2 57.4-1 3.3.4 6.8 3.3 8.5l25.8 14.9c-2.6 14.1-2.6 28.5 0 42.6l-25.8 14.9c-3 1.7-4.3 5.2-3.3 8.5 6.7 21.6 18.2 41.1 33.2 57.4 2.3 2.5 6 3.1 9 1.4l25.8-14.9c10.9 9.3 23.4 16.5 36.9 21.3v29.8c0 3.4 2.4 6.4 5.7 7.1 22.3 5 45 4.8 66.2 0 3.3-.7 5.7-3.7 5.7-7.1v-29.8c13.5-4.8 26-12 36.9-21.3l25.8 14.9c2.9 1.7 6.7 1.1 9-1.4 15-16.2 26.5-35.8 33.2-57.4 1-3.3-.4-6.8-3.3-8.5l-25.8-14.9zM496 368.5c-26.8 0-48.5-21.8-48.5-48.5s21.8-48.5 48.5-48.5 48.5 21.8 48.5 48.5-21.7 48.5-48.5 48.5zM96 224c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64zm224 32c1.9 0 3.7-.5 5.6-.6 8.3-21.7 20.5-42.1 36.3-59.2 7.4-8 17.9-12.6 28.9-12.6 6.9 0 13.7 1.8 19.6 5.3l7.9 4.6c.8-.5 1.6-.9 2.4-1.4 7-14.6 11.2-30.8 11.2-48 0-61.9-50.1-112-112-112S208 82.1 208 144c0 61.9 50.1 112 112 112zm105.2 194.5c-2.3-1.2-4.6-2.6-6.8-3.9-8.2 4.8-15.3 9.8-27.5 9.8-10.9 0-21.4-4.6-28.9-12.6-18.3-19.8-32.3-43.9-40.2-69.6-10.7-34.5 24.9-49.7 25.8-50.3-.1-2.6-.1-5.2 0-7.8l-7.9-4.6c-3.8-2.2-7-5-9.8-8.1-3.3.2-6.5.6-9.8.6-24.6 0-47.6-6-68.5-16h-8.3C179.6 288 128 339.6 128 403.2V432c0 26.5 21.5 48 48 48h255.4c-3.7-6-6.2-12.8-6.2-20.3v-9.2zM173.1 274.6C161.5 263.1 145.6 256 128 256H64c-35.3 0-64 28.7-64 64v32c0 17.7 14.3 32 32 32h65.9c6.3-47.4 34.9-87.3 75.2-109.4z\"]\n};\nvar faUtensilSpoon = {\n prefix: 'fas',\n iconName: 'utensil-spoon',\n icon: [512, 512, [], \"f2e5\", \"M480.1 31.9c-55-55.1-164.9-34.5-227.8 28.5-49.3 49.3-55.1 110-28.8 160.4L9 413.2c-11.6 10.5-12.1 28.5-1 39.5L59.3 504c11 11 29.1 10.5 39.5-1.1l192.4-214.4c50.4 26.3 111.1 20.5 160.4-28.8 63-62.9 83.6-172.8 28.5-227.8z\"]\n};\nvar faUtensils = {\n prefix: 'fas',\n iconName: 'utensils',\n icon: [416, 512, [], \"f2e7\", \"M207.9 15.2c.8 4.7 16.1 94.5 16.1 128.8 0 52.3-27.8 89.6-68.9 104.6L168 486.7c.7 13.7-10.2 25.3-24 25.3H80c-13.7 0-24.7-11.5-24-25.3l12.9-238.1C27.7 233.6 0 196.2 0 144 0 109.6 15.3 19.9 16.1 15.2 19.3-5.1 61.4-5.4 64 16.3v141.2c1.3 3.4 15.1 3.2 16 0 1.4-25.3 7.9-139.2 8-141.8 3.3-20.8 44.7-20.8 47.9 0 .2 2.7 6.6 116.5 8 141.8.9 3.2 14.8 3.4 16 0V16.3c2.6-21.6 44.8-21.4 48-1.1zm119.2 285.7l-15 185.1c-1.2 14 9.9 26 23.9 26h56c13.3 0 24-10.7 24-24V24c0-13.2-10.7-24-24-24-82.5 0-221.4 178.5-64.9 300.9z\"]\n};\nvar faVectorSquare = {\n prefix: 'fas',\n iconName: 'vector-square',\n icon: [512, 512, [], \"f5cb\", \"M512 128V32c0-17.67-14.33-32-32-32h-96c-17.67 0-32 14.33-32 32H160c0-17.67-14.33-32-32-32H32C14.33 0 0 14.33 0 32v96c0 17.67 14.33 32 32 32v192c-17.67 0-32 14.33-32 32v96c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32h192c0 17.67 14.33 32 32 32h96c17.67 0 32-14.33 32-32v-96c0-17.67-14.33-32-32-32V160c17.67 0 32-14.33 32-32zm-96-64h32v32h-32V64zM64 64h32v32H64V64zm32 384H64v-32h32v32zm352 0h-32v-32h32v32zm-32-96h-32c-17.67 0-32 14.33-32 32v32H160v-32c0-17.67-14.33-32-32-32H96V160h32c17.67 0 32-14.33 32-32V96h192v32c0 17.67 14.33 32 32 32h32v192z\"]\n};\nvar faVenus = {\n prefix: 'fas',\n iconName: 'venus',\n icon: [288, 512, [], \"f221\", \"M288 176c0-79.5-64.5-144-144-144S0 96.5 0 176c0 68.5 47.9 125.9 112 140.4V368H76c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h36v36c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-36h36c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-36v-51.6c64.1-14.5 112-71.9 112-140.4zm-224 0c0-44.1 35.9-80 80-80s80 35.9 80 80-35.9 80-80 80-80-35.9-80-80z\"]\n};\nvar faVenusDouble = {\n prefix: 'fas',\n iconName: 'venus-double',\n icon: [512, 512, [], \"f226\", \"M288 176c0-79.5-64.5-144-144-144S0 96.5 0 176c0 68.5 47.9 125.9 112 140.4V368H76c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h36v36c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-36h36c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-36v-51.6c64.1-14.5 112-71.9 112-140.4zm-224 0c0-44.1 35.9-80 80-80s80 35.9 80 80-35.9 80-80 80-80-35.9-80-80zm336 140.4V368h36c6.6 0 12 5.4 12 12v40c0 6.6-5.4 12-12 12h-36v36c0 6.6-5.4 12-12 12h-40c-6.6 0-12-5.4-12-12v-36h-36c-6.6 0-12-5.4-12-12v-40c0-6.6 5.4-12 12-12h36v-51.6c-21.2-4.8-40.6-14.3-57.2-27.3 14-16.7 25-36 32.1-57.1 14.5 14.8 34.7 24 57.1 24 44.1 0 80-35.9 80-80s-35.9-80-80-80c-22.3 0-42.6 9.2-57.1 24-7.1-21.1-18-40.4-32.1-57.1C303.4 43.6 334.3 32 368 32c79.5 0 144 64.5 144 144 0 68.5-47.9 125.9-112 140.4z\"]\n};\nvar faVenusMars = {\n prefix: 'fas',\n iconName: 'venus-mars',\n icon: [576, 512, [], \"f228\", \"M564 0h-79c-10.7 0-16 12.9-8.5 20.5l16.9 16.9-48.7 48.7C422.5 72.1 396.2 64 368 64c-33.7 0-64.6 11.6-89.2 30.9 14 16.7 25 36 32.1 57.1 14.5-14.8 34.7-24 57.1-24 44.1 0 80 35.9 80 80s-35.9 80-80 80c-22.3 0-42.6-9.2-57.1-24-7.1 21.1-18 40.4-32.1 57.1 24.5 19.4 55.5 30.9 89.2 30.9 79.5 0 144-64.5 144-144 0-28.2-8.1-54.5-22.1-76.7l48.7-48.7 16.9 16.9c2.4 2.4 5.4 3.5 8.4 3.5 6.2 0 12.1-4.8 12.1-12V12c0-6.6-5.4-12-12-12zM144 64C64.5 64 0 128.5 0 208c0 68.5 47.9 125.9 112 140.4V400H76c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h36v36c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-36h36c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-36v-51.6c64.1-14.6 112-71.9 112-140.4 0-79.5-64.5-144-144-144zm0 224c-44.1 0-80-35.9-80-80s35.9-80 80-80 80 35.9 80 80-35.9 80-80 80z\"]\n};\nvar faVial = {\n prefix: 'fas',\n iconName: 'vial',\n icon: [480, 512, [], \"f492\", \"M477.7 186.1L309.5 18.3c-3.1-3.1-8.2-3.1-11.3 0l-34 33.9c-3.1 3.1-3.1 8.2 0 11.3l11.2 11.1L33 316.5c-38.8 38.7-45.1 102-9.4 143.5 20.6 24 49.5 36 78.4 35.9 26.4 0 52.8-10 72.9-30.1l246.3-245.7 11.2 11.1c3.1 3.1 8.2 3.1 11.3 0l34-33.9c3.1-3 3.1-8.1 0-11.2zM318 256H161l148-147.7 78.5 78.3L318 256z\"]\n};\nvar faVials = {\n prefix: 'fas',\n iconName: 'vials',\n icon: [640, 512, [], \"f493\", \"M72 64h24v240c0 44.1 35.9 80 80 80s80-35.9 80-80V64h24c4.4 0 8-3.6 8-8V8c0-4.4-3.6-8-8-8H72c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8zm72 0h64v96h-64V64zm480 384H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h608c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zM360 64h24v240c0 44.1 35.9 80 80 80s80-35.9 80-80V64h24c4.4 0 8-3.6 8-8V8c0-4.4-3.6-8-8-8H360c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8zm72 0h64v96h-64V64z\"]\n};\nvar faVideo = {\n prefix: 'fas',\n iconName: 'video',\n icon: [576, 512, [], \"f03d\", \"M336.2 64H47.8C21.4 64 0 85.4 0 111.8v288.4C0 426.6 21.4 448 47.8 448h288.4c26.4 0 47.8-21.4 47.8-47.8V111.8c0-26.4-21.4-47.8-47.8-47.8zm189.4 37.7L416 177.3v157.4l109.6 75.5c21.2 14.6 50.4-.3 50.4-25.8V127.5c0-25.4-29.1-40.4-50.4-25.8z\"]\n};\nvar faVideoSlash = {\n prefix: 'fas',\n iconName: 'video-slash',\n icon: [640, 512, [], \"f4e2\", \"M633.8 458.1l-55-42.5c15.4-1.4 29.2-13.7 29.2-31.1v-257c0-25.5-29.1-40.4-50.4-25.8L448 177.3v137.2l-32-24.7v-178c0-26.4-21.4-47.8-47.8-47.8H123.9L45.5 3.4C38.5-2 28.5-.8 23 6.2L3.4 31.4c-5.4 7-4.2 17 2.8 22.4L42.7 82 416 370.6l178.5 138c7 5.4 17 4.2 22.5-2.8l19.6-25.3c5.5-6.9 4.2-17-2.8-22.4zM32 400.2c0 26.4 21.4 47.8 47.8 47.8h288.4c11.2 0 21.4-4 29.6-10.5L32 154.7v245.5z\"]\n};\nvar faVihara = {\n prefix: 'fas',\n iconName: 'vihara',\n icon: [640, 512, [], \"f6a7\", \"M632.88 400.71L544 352v-64l55.16-17.69c11.79-5.9 11.79-22.72 0-28.62L480 192v-64l27.31-16.3c7.72-7.72 5.61-20.74-4.16-25.62L320 0 136.85 86.07c-9.77 4.88-11.88 17.9-4.16 25.62L160 128v64L40.84 241.69c-11.79 5.9-11.79 22.72 0 28.62L96 288v64L7.12 400.71c-5.42 3.62-7.7 9.63-7 15.29.62 5.01 3.57 9.75 8.72 12.33L64 448v48c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-48h160v48c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-48h160v48c0 8.84 7.16 16 16 16h32c8.84 0 16-7.16 16-16v-48l55.15-19.67c5.16-2.58 8.1-7.32 8.72-12.33.71-5.67-1.57-11.68-6.99-15.29zM224 128h192v64H224v-64zm-64 224v-64h320v64H160z\"]\n};\nvar faVoicemail = {\n prefix: 'fas',\n iconName: 'voicemail',\n icon: [640, 512, [], \"f897\", \"M496 128a144 144 0 0 0-119.74 224H263.74A144 144 0 1 0 144 416h352a144 144 0 0 0 0-288zM64 272a80 80 0 1 1 80 80 80 80 0 0 1-80-80zm432 80a80 80 0 1 1 80-80 80 80 0 0 1-80 80z\"]\n};\nvar faVolleyballBall = {\n prefix: 'fas',\n iconName: 'volleyball-ball',\n icon: [512, 512, [], \"f45f\", \"M231.39 243.48a285.56 285.56 0 0 0-22.7-105.7c-90.8 42.4-157.5 122.4-180.3 216.8a249 249 0 0 0 56.9 81.1 333.87 333.87 0 0 1 146.1-192.2zm-36.9-134.4a284.23 284.23 0 0 0-57.4-70.7c-91 49.8-144.8 152.9-125 262.2 33.4-83.1 98.4-152 182.4-191.5zm187.6 165.1c8.6-99.8-27.3-197.5-97.5-264.4-14.7-1.7-51.6-5.5-98.9 8.5A333.87 333.87 0 0 1 279.19 241a285 285 0 0 0 102.9 33.18zm-124.7 9.5a286.33 286.33 0 0 0-80.2 72.6c82 57.3 184.5 75.1 277.5 47.8a247.15 247.15 0 0 0 42.2-89.9 336.1 336.1 0 0 1-80.9 10.4c-54.6-.1-108.9-14.1-158.6-40.9zm-98.3 99.7c-15.2 26-25.7 54.4-32.1 84.2a247.07 247.07 0 0 0 289-22.1c-112.9 16.1-203.3-24.8-256.9-62.1zm180.3-360.6c55.3 70.4 82.5 161.2 74.6 253.6a286.59 286.59 0 0 0 89.7-14.2c0-2 .3-4 .3-6 0-107.8-68.7-199.1-164.6-233.4z\"]\n};\nvar faVolumeDown = {\n prefix: 'fas',\n iconName: 'volume-down',\n icon: [384, 512, [], \"f027\", \"M215.03 72.04L126.06 161H24c-13.26 0-24 10.74-24 24v144c0 13.25 10.74 24 24 24h102.06l88.97 88.95c15.03 15.03 40.97 4.47 40.97-16.97V89.02c0-21.47-25.96-31.98-40.97-16.98zm123.2 108.08c-11.58-6.33-26.19-2.16-32.61 9.45-6.39 11.61-2.16 26.2 9.45 32.61C327.98 229.28 336 242.62 336 257c0 14.38-8.02 27.72-20.92 34.81-11.61 6.41-15.84 21-9.45 32.61 6.43 11.66 21.05 15.8 32.61 9.45 28.23-15.55 45.77-45 45.77-76.88s-17.54-61.32-45.78-76.87z\"]\n};\nvar faVolumeMute = {\n prefix: 'fas',\n iconName: 'volume-mute',\n icon: [512, 512, [], \"f6a9\", \"M215.03 71.05L126.06 160H24c-13.26 0-24 10.74-24 24v144c0 13.25 10.74 24 24 24h102.06l88.97 88.95c15.03 15.03 40.97 4.47 40.97-16.97V88.02c0-21.46-25.96-31.98-40.97-16.97zM461.64 256l45.64-45.64c6.3-6.3 6.3-16.52 0-22.82l-22.82-22.82c-6.3-6.3-16.52-6.3-22.82 0L416 210.36l-45.64-45.64c-6.3-6.3-16.52-6.3-22.82 0l-22.82 22.82c-6.3 6.3-6.3 16.52 0 22.82L370.36 256l-45.63 45.63c-6.3 6.3-6.3 16.52 0 22.82l22.82 22.82c6.3 6.3 16.52 6.3 22.82 0L416 301.64l45.64 45.64c6.3 6.3 16.52 6.3 22.82 0l22.82-22.82c6.3-6.3 6.3-16.52 0-22.82L461.64 256z\"]\n};\nvar faVolumeOff = {\n prefix: 'fas',\n iconName: 'volume-off',\n icon: [256, 512, [], \"f026\", \"M215 71l-89 89H24a24 24 0 0 0-24 24v144a24 24 0 0 0 24 24h102.06L215 441c15 15 41 4.47 41-17V88c0-21.47-26-32-41-17z\"]\n};\nvar faVolumeUp = {\n prefix: 'fas',\n iconName: 'volume-up',\n icon: [576, 512, [], \"f028\", \"M215.03 71.05L126.06 160H24c-13.26 0-24 10.74-24 24v144c0 13.25 10.74 24 24 24h102.06l88.97 88.95c15.03 15.03 40.97 4.47 40.97-16.97V88.02c0-21.46-25.96-31.98-40.97-16.97zm233.32-51.08c-11.17-7.33-26.18-4.24-33.51 6.95-7.34 11.17-4.22 26.18 6.95 33.51 66.27 43.49 105.82 116.6 105.82 195.58 0 78.98-39.55 152.09-105.82 195.58-11.17 7.32-14.29 22.34-6.95 33.5 7.04 10.71 21.93 14.56 33.51 6.95C528.27 439.58 576 351.33 576 256S528.27 72.43 448.35 19.97zM480 256c0-63.53-32.06-121.94-85.77-156.24-11.19-7.14-26.03-3.82-33.12 7.46s-3.78 26.21 7.41 33.36C408.27 165.97 432 209.11 432 256s-23.73 90.03-63.48 115.42c-11.19 7.14-14.5 22.07-7.41 33.36 6.51 10.36 21.12 15.14 33.12 7.46C447.94 377.94 480 319.54 480 256zm-141.77-76.87c-11.58-6.33-26.19-2.16-32.61 9.45-6.39 11.61-2.16 26.2 9.45 32.61C327.98 228.28 336 241.63 336 256c0 14.38-8.02 27.72-20.92 34.81-11.61 6.41-15.84 21-9.45 32.61 6.43 11.66 21.05 15.8 32.61 9.45 28.23-15.55 45.77-45 45.77-76.88s-17.54-61.32-45.78-76.86z\"]\n};\nvar faVoteYea = {\n prefix: 'fas',\n iconName: 'vote-yea',\n icon: [640, 512, [], \"f772\", \"M608 320h-64v64h22.4c5.3 0 9.6 3.6 9.6 8v16c0 4.4-4.3 8-9.6 8H73.6c-5.3 0-9.6-3.6-9.6-8v-16c0-4.4 4.3-8 9.6-8H96v-64H32c-17.7 0-32 14.3-32 32v96c0 17.7 14.3 32 32 32h576c17.7 0 32-14.3 32-32v-96c0-17.7-14.3-32-32-32zm-96 64V64.3c0-17.9-14.5-32.3-32.3-32.3H160.4C142.5 32 128 46.5 128 64.3V384h384zM211.2 202l25.5-25.3c4.2-4.2 11-4.2 15.2.1l41.3 41.6 95.2-94.4c4.2-4.2 11-4.2 15.2.1l25.3 25.5c4.2 4.2 4.2 11-.1 15.2L300.5 292c-4.2 4.2-11 4.2-15.2-.1l-74.1-74.7c-4.3-4.2-4.2-11 0-15.2z\"]\n};\nvar faVrCardboard = {\n prefix: 'fas',\n iconName: 'vr-cardboard',\n icon: [640, 512, [], \"f729\", \"M608 64H32C14.33 64 0 78.33 0 96v320c0 17.67 14.33 32 32 32h160.22c25.19 0 48.03-14.77 58.36-37.74l27.74-61.64C286.21 331.08 302.35 320 320 320s33.79 11.08 41.68 28.62l27.74 61.64C399.75 433.23 422.6 448 447.78 448H608c17.67 0 32-14.33 32-32V96c0-17.67-14.33-32-32-32zM160 304c-35.35 0-64-28.65-64-64s28.65-64 64-64 64 28.65 64 64-28.65 64-64 64zm320 0c-35.35 0-64-28.65-64-64s28.65-64 64-64 64 28.65 64 64-28.65 64-64 64z\"]\n};\nvar faWalking = {\n prefix: 'fas',\n iconName: 'walking',\n icon: [320, 512, [], \"f554\", \"M208 96c26.5 0 48-21.5 48-48S234.5 0 208 0s-48 21.5-48 48 21.5 48 48 48zm94.5 149.1l-23.3-11.8-9.7-29.4c-14.7-44.6-55.7-75.8-102.2-75.9-36-.1-55.9 10.1-93.3 25.2-21.6 8.7-39.3 25.2-49.7 46.2L17.6 213c-7.8 15.8-1.5 35 14.2 42.9 15.6 7.9 34.6 1.5 42.5-14.3L81 228c3.5-7 9.3-12.5 16.5-15.4l26.8-10.8-15.2 60.7c-5.2 20.8.4 42.9 14.9 58.8l59.9 65.4c7.2 7.9 12.3 17.4 14.9 27.7l18.3 73.3c4.3 17.1 21.7 27.6 38.8 23.3 17.1-4.3 27.6-21.7 23.3-38.8l-22.2-89c-2.6-10.3-7.7-19.9-14.9-27.7l-45.5-49.7 17.2-68.7 5.5 16.5c5.3 16.1 16.7 29.4 31.7 37l23.3 11.8c15.6 7.9 34.6 1.5 42.5-14.3 7.7-15.7 1.4-35.1-14.3-43zM73.6 385.8c-3.2 8.1-8 15.4-14.2 21.5l-50 50.1c-12.5 12.5-12.5 32.8 0 45.3s32.7 12.5 45.2 0l59.4-59.4c6.1-6.1 10.9-13.4 14.2-21.5l13.5-33.8c-55.3-60.3-38.7-41.8-47.4-53.7l-20.7 51.5z\"]\n};\nvar faWallet = {\n prefix: 'fas',\n iconName: 'wallet',\n icon: [512, 512, [], \"f555\", \"M461.2 128H80c-8.84 0-16-7.16-16-16s7.16-16 16-16h384c8.84 0 16-7.16 16-16 0-26.51-21.49-48-48-48H64C28.65 32 0 60.65 0 96v320c0 35.35 28.65 64 64 64h397.2c28.02 0 50.8-21.53 50.8-48V176c0-26.47-22.78-48-50.8-48zM416 336c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z\"]\n};\nvar faWarehouse = {\n prefix: 'fas',\n iconName: 'warehouse',\n icon: [640, 512, [], \"f494\", \"M504 352H136.4c-4.4 0-8 3.6-8 8l-.1 48c0 4.4 3.6 8 8 8H504c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zm0 96H136.1c-4.4 0-8 3.6-8 8l-.1 48c0 4.4 3.6 8 8 8h368c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zm0-192H136.6c-4.4 0-8 3.6-8 8l-.1 48c0 4.4 3.6 8 8 8H504c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8zm106.5-139L338.4 3.7a48.15 48.15 0 0 0-36.9 0L29.5 117C11.7 124.5 0 141.9 0 161.3V504c0 4.4 3.6 8 8 8h80c4.4 0 8-3.6 8-8V256c0-17.6 14.6-32 32.6-32h382.8c18 0 32.6 14.4 32.6 32v248c0 4.4 3.6 8 8 8h80c4.4 0 8-3.6 8-8V161.3c0-19.4-11.7-36.8-29.5-44.3z\"]\n};\nvar faWater = {\n prefix: 'fas',\n iconName: 'water',\n icon: [576, 512, [], \"f773\", \"M562.1 383.9c-21.5-2.4-42.1-10.5-57.9-22.9-14.1-11.1-34.2-11.3-48.2 0-37.9 30.4-107.2 30.4-145.7-1.5-13.5-11.2-33-9.1-46.7 1.8-38 30.1-106.9 30-145.2-1.7-13.5-11.2-33.3-8.9-47.1 2-15.5 12.2-36 20.1-57.7 22.4-7.9.8-13.6 7.8-13.6 15.7v32.2c0 9.1 7.6 16.8 16.7 16 28.8-2.5 56.1-11.4 79.4-25.9 56.5 34.6 137 34.1 192 0 56.5 34.6 137 34.1 192 0 23.3 14.2 50.9 23.3 79.1 25.8 9.1.8 16.7-6.9 16.7-16v-31.6c.1-8-5.7-15.4-13.8-16.3zm0-144c-21.5-2.4-42.1-10.5-57.9-22.9-14.1-11.1-34.2-11.3-48.2 0-37.9 30.4-107.2 30.4-145.7-1.5-13.5-11.2-33-9.1-46.7 1.8-38 30.1-106.9 30-145.2-1.7-13.5-11.2-33.3-8.9-47.1 2-15.5 12.2-36 20.1-57.7 22.4-7.9.8-13.6 7.8-13.6 15.7v32.2c0 9.1 7.6 16.8 16.7 16 28.8-2.5 56.1-11.4 79.4-25.9 56.5 34.6 137 34.1 192 0 56.5 34.6 137 34.1 192 0 23.3 14.2 50.9 23.3 79.1 25.8 9.1.8 16.7-6.9 16.7-16v-31.6c.1-8-5.7-15.4-13.8-16.3zm0-144C540.6 93.4 520 85.4 504.2 73 490.1 61.9 470 61.7 456 73c-37.9 30.4-107.2 30.4-145.7-1.5-13.5-11.2-33-9.1-46.7 1.8-38 30.1-106.9 30-145.2-1.7-13.5-11.2-33.3-8.9-47.1 2-15.5 12.2-36 20.1-57.7 22.4-7.9.8-13.6 7.8-13.6 15.7v32.2c0 9.1 7.6 16.8 16.7 16 28.8-2.5 56.1-11.4 79.4-25.9 56.5 34.6 137 34.1 192 0 56.5 34.6 137 34.1 192 0 23.3 14.2 50.9 23.3 79.1 25.8 9.1.8 16.7-6.9 16.7-16v-31.6c.1-8-5.7-15.4-13.8-16.3z\"]\n};\nvar faWaveSquare = {\n prefix: 'fas',\n iconName: 'wave-square',\n icon: [640, 512, [], \"f83e\", \"M476 480H324a36 36 0 0 1-36-36V96h-96v156a36 36 0 0 1-36 36H16a16 16 0 0 1-16-16v-32a16 16 0 0 1 16-16h112V68a36 36 0 0 1 36-36h152a36 36 0 0 1 36 36v348h96V260a36 36 0 0 1 36-36h140a16 16 0 0 1 16 16v32a16 16 0 0 1-16 16H512v156a36 36 0 0 1-36 36z\"]\n};\nvar faWeight = {\n prefix: 'fas',\n iconName: 'weight',\n icon: [512, 512, [], \"f496\", \"M448 64h-25.98C438.44 92.28 448 125.01 448 160c0 105.87-86.13 192-192 192S64 265.87 64 160c0-34.99 9.56-67.72 25.98-96H64C28.71 64 0 92.71 0 128v320c0 35.29 28.71 64 64 64h384c35.29 0 64-28.71 64-64V128c0-35.29-28.71-64-64-64zM256 320c88.37 0 160-71.63 160-160S344.37 0 256 0 96 71.63 96 160s71.63 160 160 160zm-.3-151.94l33.58-78.36c3.5-8.17 12.94-11.92 21.03-8.41 8.12 3.48 11.88 12.89 8.41 21l-33.67 78.55C291.73 188 296 197.45 296 208c0 22.09-17.91 40-40 40s-40-17.91-40-40c0-21.98 17.76-39.77 39.7-39.94z\"]\n};\nvar faWeightHanging = {\n prefix: 'fas',\n iconName: 'weight-hanging',\n icon: [512, 512, [], \"f5cd\", \"M510.28 445.86l-73.03-292.13c-3.8-15.19-16.44-25.72-30.87-25.72h-60.25c3.57-10.05 5.88-20.72 5.88-32 0-53.02-42.98-96-96-96s-96 42.98-96 96c0 11.28 2.3 21.95 5.88 32h-60.25c-14.43 0-27.08 10.54-30.87 25.72L1.72 445.86C-6.61 479.17 16.38 512 48.03 512h415.95c31.64 0 54.63-32.83 46.3-66.14zM256 128c-17.64 0-32-14.36-32-32s14.36-32 32-32 32 14.36 32 32-14.36 32-32 32z\"]\n};\nvar faWheelchair = {\n prefix: 'fas',\n iconName: 'wheelchair',\n icon: [512, 512, [], \"f193\", \"M496.101 385.669l14.227 28.663c3.929 7.915.697 17.516-7.218 21.445l-65.465 32.886c-16.049 7.967-35.556 1.194-43.189-15.055L331.679 320H192c-15.925 0-29.426-11.71-31.679-27.475C126.433 55.308 128.38 70.044 128 64c0-36.358 30.318-65.635 67.052-63.929 33.271 1.545 60.048 28.905 60.925 62.201.868 32.933-23.152 60.423-54.608 65.039l4.67 32.69H336c8.837 0 16 7.163 16 16v32c0 8.837-7.163 16-16 16H215.182l4.572 32H352a32 32 0 0 1 28.962 18.392L438.477 396.8l36.178-18.349c7.915-3.929 17.517-.697 21.446 7.218zM311.358 352h-24.506c-7.788 54.204-54.528 96-110.852 96-61.757 0-112-50.243-112-112 0-41.505 22.694-77.809 56.324-97.156-3.712-25.965-6.844-47.86-9.488-66.333C45.956 198.464 0 261.963 0 336c0 97.047 78.953 176 176 176 71.87 0 133.806-43.308 161.11-105.192L311.358 352z\"]\n};\nvar faWifi = {\n prefix: 'fas',\n iconName: 'wifi',\n icon: [640, 512, [], \"f1eb\", \"M634.91 154.88C457.74-8.99 182.19-8.93 5.09 154.88c-6.66 6.16-6.79 16.59-.35 22.98l34.24 33.97c6.14 6.1 16.02 6.23 22.4.38 145.92-133.68 371.3-133.71 517.25 0 6.38 5.85 16.26 5.71 22.4-.38l34.24-33.97c6.43-6.39 6.3-16.82-.36-22.98zM320 352c-35.35 0-64 28.65-64 64s28.65 64 64 64 64-28.65 64-64-28.65-64-64-64zm202.67-83.59c-115.26-101.93-290.21-101.82-405.34 0-6.9 6.1-7.12 16.69-.57 23.15l34.44 33.99c6 5.92 15.66 6.32 22.05.8 83.95-72.57 209.74-72.41 293.49 0 6.39 5.52 16.05 5.13 22.05-.8l34.44-33.99c6.56-6.46 6.33-17.06-.56-23.15z\"]\n};\nvar faWind = {\n prefix: 'fas',\n iconName: 'wind',\n icon: [512, 512, [], \"f72e\", \"M156.7 256H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h142.2c15.9 0 30.8 10.9 33.4 26.6 3.3 20-12.1 37.4-31.6 37.4-14.1 0-26.1-9.2-30.4-21.9-2.1-6.3-8.6-10.1-15.2-10.1H81.6c-9.8 0-17.7 8.8-15.9 18.4 8.6 44.1 47.6 77.6 94.2 77.6 57.1 0 102.7-50.1 95.2-108.6C249 291 205.4 256 156.7 256zM16 224h336c59.7 0 106.8-54.8 93.8-116.7-7.6-36.2-36.9-65.5-73.1-73.1-55.4-11.6-105.1 24.9-114.9 75.5-1.9 9.6 6.1 18.3 15.8 18.3h32.8c6.7 0 13.1-3.8 15.2-10.1C325.9 105.2 337.9 96 352 96c19.4 0 34.9 17.4 31.6 37.4-2.6 15.7-17.4 26.6-33.4 26.6H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16zm384 32H243.7c19.3 16.6 33.2 38.8 39.8 64H400c26.5 0 48 21.5 48 48s-21.5 48-48 48c-17.9 0-33.3-9.9-41.6-24.4-2.9-5-8.7-7.6-14.5-7.6h-33.8c-10.9 0-19 10.8-15.3 21.1 17.8 50.6 70.5 84.8 129.4 72.3 41.2-8.7 75.1-41.6 84.7-82.7C526 321.5 470.5 256 400 256z\"]\n};\nvar faWindowClose = {\n prefix: 'fas',\n iconName: 'window-close',\n icon: [512, 512, [], \"f410\", \"M464 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-83.6 290.5c4.8 4.8 4.8 12.6 0 17.4l-40.5 40.5c-4.8 4.8-12.6 4.8-17.4 0L256 313.3l-66.5 67.1c-4.8 4.8-12.6 4.8-17.4 0l-40.5-40.5c-4.8-4.8-4.8-12.6 0-17.4l67.1-66.5-67.1-66.5c-4.8-4.8-4.8-12.6 0-17.4l40.5-40.5c4.8-4.8 12.6-4.8 17.4 0l66.5 67.1 66.5-67.1c4.8-4.8 12.6-4.8 17.4 0l40.5 40.5c4.8 4.8 4.8 12.6 0 17.4L313.3 256l67.1 66.5z\"]\n};\nvar faWindowMaximize = {\n prefix: 'fas',\n iconName: 'window-maximize',\n icon: [512, 512, [], \"f2d0\", \"M464 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48zm-16 160H64v-84c0-6.6 5.4-12 12-12h360c6.6 0 12 5.4 12 12v84z\"]\n};\nvar faWindowMinimize = {\n prefix: 'fas',\n iconName: 'window-minimize',\n icon: [512, 512, [], \"f2d1\", \"M464 352H48c-26.5 0-48 21.5-48 48v32c0 26.5 21.5 48 48 48h416c26.5 0 48-21.5 48-48v-32c0-26.5-21.5-48-48-48z\"]\n};\nvar faWindowRestore = {\n prefix: 'fas',\n iconName: 'window-restore',\n icon: [512, 512, [], \"f2d2\", \"M512 48v288c0 26.5-21.5 48-48 48h-48V176c0-44.1-35.9-80-80-80H128V48c0-26.5 21.5-48 48-48h288c26.5 0 48 21.5 48 48zM384 176v288c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48V176c0-26.5 21.5-48 48-48h288c26.5 0 48 21.5 48 48zm-68 28c0-6.6-5.4-12-12-12H76c-6.6 0-12 5.4-12 12v52h252v-52z\"]\n};\nvar faWineBottle = {\n prefix: 'fas',\n iconName: 'wine-bottle',\n icon: [512, 512, [], \"f72f\", \"M507.31 72.57L439.43 4.69c-6.25-6.25-16.38-6.25-22.63 0l-22.63 22.63c-6.25 6.25-6.25 16.38 0 22.63l-76.67 76.67c-46.58-19.7-102.4-10.73-140.37 27.23L18.75 312.23c-24.99 24.99-24.99 65.52 0 90.51l90.51 90.51c24.99 24.99 65.52 24.99 90.51 0l158.39-158.39c37.96-37.96 46.93-93.79 27.23-140.37l76.67-76.67c6.25 6.25 16.38 6.25 22.63 0l22.63-22.63c6.24-6.24 6.24-16.37-.01-22.62zM179.22 423.29l-90.51-90.51 122.04-122.04 90.51 90.51-122.04 122.04z\"]\n};\nvar faWineGlass = {\n prefix: 'fas',\n iconName: 'wine-glass',\n icon: [288, 512, [], \"f4e3\", \"M216 464h-40V346.81c68.47-15.89 118.05-79.91 111.4-154.16l-15.95-178.1C270.71 6.31 263.9 0 255.74 0H32.26c-8.15 0-14.97 6.31-15.7 14.55L.6 192.66C-6.05 266.91 43.53 330.93 112 346.82V464H72c-22.09 0-40 17.91-40 40 0 4.42 3.58 8 8 8h208c4.42 0 8-3.58 8-8 0-22.09-17.91-40-40-40z\"]\n};\nvar faWineGlassAlt = {\n prefix: 'fas',\n iconName: 'wine-glass-alt',\n icon: [288, 512, [], \"f5ce\", \"M216 464h-40V346.81c68.47-15.89 118.05-79.91 111.4-154.16l-15.95-178.1C270.71 6.31 263.9 0 255.74 0H32.26c-8.15 0-14.97 6.31-15.7 14.55L.6 192.66C-6.05 266.91 43.53 330.93 112 346.82V464H72c-22.09 0-40 17.91-40 40 0 4.42 3.58 8 8 8h208c4.42 0 8-3.58 8-8 0-22.09-17.91-40-40-40zM61.75 48h164.5l7.17 80H54.58l7.17-80z\"]\n};\nvar faWonSign = {\n prefix: 'fas',\n iconName: 'won-sign',\n icon: [576, 512, [], \"f159\", \"M564 192c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-48l18.6-80.6c1.7-7.5-4-14.7-11.7-14.7h-46.1c-5.7 0-10.6 4-11.7 9.5L450.7 128H340.8l-19.7-86c-1.3-5.5-6.1-9.3-11.7-9.3h-44c-5.6 0-10.4 3.8-11.7 9.3l-20 86H125l-17.5-85.7c-1.1-5.6-6.1-9.6-11.8-9.6H53.6c-7.7 0-13.4 7.1-11.7 14.6L60 128H12c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h62.3l7.2 32H12c-6.6 0-12 5.4-12 12v40c0 6.6 5.4 12 12 12h83.9l40.9 182.6c1.2 5.5 6.1 9.4 11.7 9.4h56.8c5.6 0 10.4-3.9 11.7-9.3L259.3 288h55.1l42.4 182.7c1.3 5.4 6.1 9.3 11.7 9.3h56.8c5.6 0 10.4-3.9 11.7-9.3L479.1 288H564c6.6 0 12-5.4 12-12v-40c0-6.6-5.4-12-12-12h-70.1l7.4-32zM183.8 342c-6.2 25.8-6.8 47.2-7.3 47.2h-1.1s-1.7-22-6.8-47.2l-11-54h38.8zm27.5-118h-66.8l-6.5-32h80.8zm62.9 0l2-8.6c1.9-8 3.5-16 4.8-23.4h11.8c1.3 7.4 2.9 15.4 4.8 23.4l2 8.6zm130.9 118c-5.1 25.2-6.8 47.2-6.8 47.2h-1.1c-.6 0-1.1-21.4-7.3-47.2l-12.4-54h39.1zm25.2-118h-67.4l-7.3-32h81.6z\"]\n};\nvar faWrench = {\n prefix: 'fas',\n iconName: 'wrench',\n icon: [512, 512, [], \"f0ad\", \"M507.73 109.1c-2.24-9.03-13.54-12.09-20.12-5.51l-74.36 74.36-67.88-11.31-11.31-67.88 74.36-74.36c6.62-6.62 3.43-17.9-5.66-20.16-47.38-11.74-99.55.91-136.58 37.93-39.64 39.64-50.55 97.1-34.05 147.2L18.74 402.76c-24.99 24.99-24.99 65.51 0 90.5 24.99 24.99 65.51 24.99 90.5 0l213.21-213.21c50.12 16.71 107.47 5.68 147.37-34.22 37.07-37.07 49.7-89.32 37.91-136.73zM64 472c-13.25 0-24-10.75-24-24 0-13.26 10.75-24 24-24s24 10.74 24 24c0 13.25-10.75 24-24 24z\"]\n};\nvar faXRay = {\n prefix: 'fas',\n iconName: 'x-ray',\n icon: [640, 512, [], \"f497\", \"M240 384c-8.8 0-16 7.2-16 16s7.2 16 16 16 16-7.2 16-16-7.2-16-16-16zm160 32c8.8 0 16-7.2 16-16s-7.2-16-16-16-16 7.2-16 16 7.2 16 16 16zM624 0H16C7.2 0 0 7.2 0 16v32c0 8.8 7.2 16 16 16h608c8.8 0 16-7.2 16-16V16c0-8.8-7.2-16-16-16zm0 448h-48V96H64v352H16c-8.8 0-16 7.2-16 16v32c0 8.8 7.2 16 16 16h608c8.8 0 16-7.2 16-16v-32c0-8.8-7.2-16-16-16zM480 248c0 4.4-3.6 8-8 8H336v32h104c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H336v32h64c26.5 0 48 21.5 48 48s-21.5 48-48 48-48-21.5-48-48v-16h-64v16c0 26.5-21.5 48-48 48s-48-21.5-48-48 21.5-48 48-48h64v-32H200c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h104v-32H168c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h136v-32H200c-4.4 0-8-3.6-8-8v-16c0-4.4 3.6-8 8-8h104v-24c0-4.4 3.6-8 8-8h16c4.4 0 8 3.6 8 8v24h104c4.4 0 8 3.6 8 8v16c0 4.4-3.6 8-8 8H336v32h136c4.4 0 8 3.6 8 8v16z\"]\n};\nvar faYenSign = {\n prefix: 'fas',\n iconName: 'yen-sign',\n icon: [384, 512, [], \"f157\", \"M351.2 32h-65.3c-4.6 0-8.8 2.6-10.8 6.7l-55.4 113.2c-14.5 34.7-27.1 71.9-27.1 71.9h-1.3s-12.6-37.2-27.1-71.9L108.8 38.7c-2-4.1-6.2-6.7-10.8-6.7H32.8c-9.1 0-14.8 9.7-10.6 17.6L102.3 200H44c-6.6 0-12 5.4-12 12v32c0 6.6 5.4 12 12 12h88.2l19.8 37.2V320H44c-6.6 0-12 5.4-12 12v32c0 6.6 5.4 12 12 12h108v92c0 6.6 5.4 12 12 12h56c6.6 0 12-5.4 12-12v-92h108c6.6 0 12-5.4 12-12v-32c0-6.6-5.4-12-12-12H232v-26.8l19.8-37.2H340c6.6 0 12-5.4 12-12v-32c0-6.6-5.4-12-12-12h-58.3l80.1-150.4c4.3-7.9-1.5-17.6-10.6-17.6z\"]\n};\nvar faYinYang = {\n prefix: 'fas',\n iconName: 'yin-yang',\n icon: [496, 512, [], \"f6ad\", \"M248 8C111.03 8 0 119.03 0 256s111.03 248 248 248 248-111.03 248-248S384.97 8 248 8zm0 376c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm0-128c-53.02 0-96 42.98-96 96s42.98 96 96 96c-106.04 0-192-85.96-192-192S141.96 64 248 64c53.02 0 96 42.98 96 96s-42.98 96-96 96zm0-128c-17.67 0-32 14.33-32 32s14.33 32 32 32 32-14.33 32-32-14.33-32-32-32z\"]\n};\nvar _iconsCache = {\n faAd: faAd,\n faAddressBook: faAddressBook,\n faAddressCard: faAddressCard,\n faAdjust: faAdjust,\n faAirFreshener: faAirFreshener,\n faAlignCenter: faAlignCenter,\n faAlignJustify: faAlignJustify,\n faAlignLeft: faAlignLeft,\n faAlignRight: faAlignRight,\n faAllergies: faAllergies,\n faAmbulance: faAmbulance,\n faAmericanSignLanguageInterpreting: faAmericanSignLanguageInterpreting,\n faAnchor: faAnchor,\n faAngleDoubleDown: faAngleDoubleDown,\n faAngleDoubleLeft: faAngleDoubleLeft,\n faAngleDoubleRight: faAngleDoubleRight,\n faAngleDoubleUp: faAngleDoubleUp,\n faAngleDown: faAngleDown,\n faAngleLeft: faAngleLeft,\n faAngleRight: faAngleRight,\n faAngleUp: faAngleUp,\n faAngry: faAngry,\n faAnkh: faAnkh,\n faAppleAlt: faAppleAlt,\n faArchive: faArchive,\n faArchway: faArchway,\n faArrowAltCircleDown: faArrowAltCircleDown,\n faArrowAltCircleLeft: faArrowAltCircleLeft,\n faArrowAltCircleRight: faArrowAltCircleRight,\n faArrowAltCircleUp: faArrowAltCircleUp,\n faArrowCircleDown: faArrowCircleDown,\n faArrowCircleLeft: faArrowCircleLeft,\n faArrowCircleRight: faArrowCircleRight,\n faArrowCircleUp: faArrowCircleUp,\n faArrowDown: faArrowDown,\n faArrowLeft: faArrowLeft,\n faArrowRight: faArrowRight,\n faArrowUp: faArrowUp,\n faArrowsAlt: faArrowsAlt,\n faArrowsAltH: faArrowsAltH,\n faArrowsAltV: faArrowsAltV,\n faAssistiveListeningSystems: faAssistiveListeningSystems,\n faAsterisk: faAsterisk,\n faAt: faAt,\n faAtlas: faAtlas,\n faAtom: faAtom,\n faAudioDescription: faAudioDescription,\n faAward: faAward,\n faBaby: faBaby,\n faBabyCarriage: faBabyCarriage,\n faBackspace: faBackspace,\n faBackward: faBackward,\n faBacon: faBacon,\n faBahai: faBahai,\n faBalanceScale: faBalanceScale,\n faBalanceScaleLeft: faBalanceScaleLeft,\n faBalanceScaleRight: faBalanceScaleRight,\n faBan: faBan,\n faBandAid: faBandAid,\n faBarcode: faBarcode,\n faBars: faBars,\n faBaseballBall: faBaseballBall,\n faBasketballBall: faBasketballBall,\n faBath: faBath,\n faBatteryEmpty: faBatteryEmpty,\n faBatteryFull: faBatteryFull,\n faBatteryHalf: faBatteryHalf,\n faBatteryQuarter: faBatteryQuarter,\n faBatteryThreeQuarters: faBatteryThreeQuarters,\n faBed: faBed,\n faBeer: faBeer,\n faBell: faBell,\n faBellSlash: faBellSlash,\n faBezierCurve: faBezierCurve,\n faBible: faBible,\n faBicycle: faBicycle,\n faBiking: faBiking,\n faBinoculars: faBinoculars,\n faBiohazard: faBiohazard,\n faBirthdayCake: faBirthdayCake,\n faBlender: faBlender,\n faBlenderPhone: faBlenderPhone,\n faBlind: faBlind,\n faBlog: faBlog,\n faBold: faBold,\n faBolt: faBolt,\n faBomb: faBomb,\n faBone: faBone,\n faBong: faBong,\n faBook: faBook,\n faBookDead: faBookDead,\n faBookMedical: faBookMedical,\n faBookOpen: faBookOpen,\n faBookReader: faBookReader,\n faBookmark: faBookmark,\n faBorderAll: faBorderAll,\n faBorderNone: faBorderNone,\n faBorderStyle: faBorderStyle,\n faBowlingBall: faBowlingBall,\n faBox: faBox,\n faBoxOpen: faBoxOpen,\n faBoxes: faBoxes,\n faBraille: faBraille,\n faBrain: faBrain,\n faBreadSlice: faBreadSlice,\n faBriefcase: faBriefcase,\n faBriefcaseMedical: faBriefcaseMedical,\n faBroadcastTower: faBroadcastTower,\n faBroom: faBroom,\n faBrush: faBrush,\n faBug: faBug,\n faBuilding: faBuilding,\n faBullhorn: faBullhorn,\n faBullseye: faBullseye,\n faBurn: faBurn,\n faBus: faBus,\n faBusAlt: faBusAlt,\n faBusinessTime: faBusinessTime,\n faCalculator: faCalculator,\n faCalendar: faCalendar,\n faCalendarAlt: faCalendarAlt,\n faCalendarCheck: faCalendarCheck,\n faCalendarDay: faCalendarDay,\n faCalendarMinus: faCalendarMinus,\n faCalendarPlus: faCalendarPlus,\n faCalendarTimes: faCalendarTimes,\n faCalendarWeek: faCalendarWeek,\n faCamera: faCamera,\n faCameraRetro: faCameraRetro,\n faCampground: faCampground,\n faCandyCane: faCandyCane,\n faCannabis: faCannabis,\n faCapsules: faCapsules,\n faCar: faCar,\n faCarAlt: faCarAlt,\n faCarBattery: faCarBattery,\n faCarCrash: faCarCrash,\n faCarSide: faCarSide,\n faCaravan: faCaravan,\n faCaretDown: faCaretDown,\n faCaretLeft: faCaretLeft,\n faCaretRight: faCaretRight,\n faCaretSquareDown: faCaretSquareDown,\n faCaretSquareLeft: faCaretSquareLeft,\n faCaretSquareRight: faCaretSquareRight,\n faCaretSquareUp: faCaretSquareUp,\n faCaretUp: faCaretUp,\n faCarrot: faCarrot,\n faCartArrowDown: faCartArrowDown,\n faCartPlus: faCartPlus,\n faCashRegister: faCashRegister,\n faCat: faCat,\n faCertificate: faCertificate,\n faChair: faChair,\n faChalkboard: faChalkboard,\n faChalkboardTeacher: faChalkboardTeacher,\n faChargingStation: faChargingStation,\n faChartArea: faChartArea,\n faChartBar: faChartBar,\n faChartLine: faChartLine,\n faChartPie: faChartPie,\n faCheck: faCheck,\n faCheckCircle: faCheckCircle,\n faCheckDouble: faCheckDouble,\n faCheckSquare: faCheckSquare,\n faCheese: faCheese,\n faChess: faChess,\n faChessBishop: faChessBishop,\n faChessBoard: faChessBoard,\n faChessKing: faChessKing,\n faChessKnight: faChessKnight,\n faChessPawn: faChessPawn,\n faChessQueen: faChessQueen,\n faChessRook: faChessRook,\n faChevronCircleDown: faChevronCircleDown,\n faChevronCircleLeft: faChevronCircleLeft,\n faChevronCircleRight: faChevronCircleRight,\n faChevronCircleUp: faChevronCircleUp,\n faChevronDown: faChevronDown,\n faChevronLeft: faChevronLeft,\n faChevronRight: faChevronRight,\n faChevronUp: faChevronUp,\n faChild: faChild,\n faChurch: faChurch,\n faCircle: faCircle,\n faCircleNotch: faCircleNotch,\n faCity: faCity,\n faClinicMedical: faClinicMedical,\n faClipboard: faClipboard,\n faClipboardCheck: faClipboardCheck,\n faClipboardList: faClipboardList,\n faClock: faClock,\n faClone: faClone,\n faClosedCaptioning: faClosedCaptioning,\n faCloud: faCloud,\n faCloudDownloadAlt: faCloudDownloadAlt,\n faCloudMeatball: faCloudMeatball,\n faCloudMoon: faCloudMoon,\n faCloudMoonRain: faCloudMoonRain,\n faCloudRain: faCloudRain,\n faCloudShowersHeavy: faCloudShowersHeavy,\n faCloudSun: faCloudSun,\n faCloudSunRain: faCloudSunRain,\n faCloudUploadAlt: faCloudUploadAlt,\n faCocktail: faCocktail,\n faCode: faCode,\n faCodeBranch: faCodeBranch,\n faCoffee: faCoffee,\n faCog: faCog,\n faCogs: faCogs,\n faCoins: faCoins,\n faColumns: faColumns,\n faComment: faComment,\n faCommentAlt: faCommentAlt,\n faCommentDollar: faCommentDollar,\n faCommentDots: faCommentDots,\n faCommentMedical: faCommentMedical,\n faCommentSlash: faCommentSlash,\n faComments: faComments,\n faCommentsDollar: faCommentsDollar,\n faCompactDisc: faCompactDisc,\n faCompass: faCompass,\n faCompress: faCompress,\n faCompressAlt: faCompressAlt,\n faCompressArrowsAlt: faCompressArrowsAlt,\n faConciergeBell: faConciergeBell,\n faCookie: faCookie,\n faCookieBite: faCookieBite,\n faCopy: faCopy,\n faCopyright: faCopyright,\n faCouch: faCouch,\n faCreditCard: faCreditCard,\n faCrop: faCrop,\n faCropAlt: faCropAlt,\n faCross: faCross,\n faCrosshairs: faCrosshairs,\n faCrow: faCrow,\n faCrown: faCrown,\n faCrutch: faCrutch,\n faCube: faCube,\n faCubes: faCubes,\n faCut: faCut,\n faDatabase: faDatabase,\n faDeaf: faDeaf,\n faDemocrat: faDemocrat,\n faDesktop: faDesktop,\n faDharmachakra: faDharmachakra,\n faDiagnoses: faDiagnoses,\n faDice: faDice,\n faDiceD20: faDiceD20,\n faDiceD6: faDiceD6,\n faDiceFive: faDiceFive,\n faDiceFour: faDiceFour,\n faDiceOne: faDiceOne,\n faDiceSix: faDiceSix,\n faDiceThree: faDiceThree,\n faDiceTwo: faDiceTwo,\n faDigitalTachograph: faDigitalTachograph,\n faDirections: faDirections,\n faDivide: faDivide,\n faDizzy: faDizzy,\n faDna: faDna,\n faDog: faDog,\n faDollarSign: faDollarSign,\n faDolly: faDolly,\n faDollyFlatbed: faDollyFlatbed,\n faDonate: faDonate,\n faDoorClosed: faDoorClosed,\n faDoorOpen: faDoorOpen,\n faDotCircle: faDotCircle,\n faDove: faDove,\n faDownload: faDownload,\n faDraftingCompass: faDraftingCompass,\n faDragon: faDragon,\n faDrawPolygon: faDrawPolygon,\n faDrum: faDrum,\n faDrumSteelpan: faDrumSteelpan,\n faDrumstickBite: faDrumstickBite,\n faDumbbell: faDumbbell,\n faDumpster: faDumpster,\n faDumpsterFire: faDumpsterFire,\n faDungeon: faDungeon,\n faEdit: faEdit,\n faEgg: faEgg,\n faEject: faEject,\n faEllipsisH: faEllipsisH,\n faEllipsisV: faEllipsisV,\n faEnvelope: faEnvelope,\n faEnvelopeOpen: faEnvelopeOpen,\n faEnvelopeOpenText: faEnvelopeOpenText,\n faEnvelopeSquare: faEnvelopeSquare,\n faEquals: faEquals,\n faEraser: faEraser,\n faEthernet: faEthernet,\n faEuroSign: faEuroSign,\n faExchangeAlt: faExchangeAlt,\n faExclamation: faExclamation,\n faExclamationCircle: faExclamationCircle,\n faExclamationTriangle: faExclamationTriangle,\n faExpand: faExpand,\n faExpandAlt: faExpandAlt,\n faExpandArrowsAlt: faExpandArrowsAlt,\n faExternalLinkAlt: faExternalLinkAlt,\n faExternalLinkSquareAlt: faExternalLinkSquareAlt,\n faEye: faEye,\n faEyeDropper: faEyeDropper,\n faEyeSlash: faEyeSlash,\n faFan: faFan,\n faFastBackward: faFastBackward,\n faFastForward: faFastForward,\n faFax: faFax,\n faFeather: faFeather,\n faFeatherAlt: faFeatherAlt,\n faFemale: faFemale,\n faFighterJet: faFighterJet,\n faFile: faFile,\n faFileAlt: faFileAlt,\n faFileArchive: faFileArchive,\n faFileAudio: faFileAudio,\n faFileCode: faFileCode,\n faFileContract: faFileContract,\n faFileCsv: faFileCsv,\n faFileDownload: faFileDownload,\n faFileExcel: faFileExcel,\n faFileExport: faFileExport,\n faFileImage: faFileImage,\n faFileImport: faFileImport,\n faFileInvoice: faFileInvoice,\n faFileInvoiceDollar: faFileInvoiceDollar,\n faFileMedical: faFileMedical,\n faFileMedicalAlt: faFileMedicalAlt,\n faFilePdf: faFilePdf,\n faFilePowerpoint: faFilePowerpoint,\n faFilePrescription: faFilePrescription,\n faFileSignature: faFileSignature,\n faFileUpload: faFileUpload,\n faFileVideo: faFileVideo,\n faFileWord: faFileWord,\n faFill: faFill,\n faFillDrip: faFillDrip,\n faFilm: faFilm,\n faFilter: faFilter,\n faFingerprint: faFingerprint,\n faFire: faFire,\n faFireAlt: faFireAlt,\n faFireExtinguisher: faFireExtinguisher,\n faFirstAid: faFirstAid,\n faFish: faFish,\n faFistRaised: faFistRaised,\n faFlag: faFlag,\n faFlagCheckered: faFlagCheckered,\n faFlagUsa: faFlagUsa,\n faFlask: faFlask,\n faFlushed: faFlushed,\n faFolder: faFolder,\n faFolderMinus: faFolderMinus,\n faFolderOpen: faFolderOpen,\n faFolderPlus: faFolderPlus,\n faFont: faFont,\n faFontAwesomeLogoFull: faFontAwesomeLogoFull,\n faFootballBall: faFootballBall,\n faForward: faForward,\n faFrog: faFrog,\n faFrown: faFrown,\n faFrownOpen: faFrownOpen,\n faFunnelDollar: faFunnelDollar,\n faFutbol: faFutbol,\n faGamepad: faGamepad,\n faGasPump: faGasPump,\n faGavel: faGavel,\n faGem: faGem,\n faGenderless: faGenderless,\n faGhost: faGhost,\n faGift: faGift,\n faGifts: faGifts,\n faGlassCheers: faGlassCheers,\n faGlassMartini: faGlassMartini,\n faGlassMartiniAlt: faGlassMartiniAlt,\n faGlassWhiskey: faGlassWhiskey,\n faGlasses: faGlasses,\n faGlobe: faGlobe,\n faGlobeAfrica: faGlobeAfrica,\n faGlobeAmericas: faGlobeAmericas,\n faGlobeAsia: faGlobeAsia,\n faGlobeEurope: faGlobeEurope,\n faGolfBall: faGolfBall,\n faGopuram: faGopuram,\n faGraduationCap: faGraduationCap,\n faGreaterThan: faGreaterThan,\n faGreaterThanEqual: faGreaterThanEqual,\n faGrimace: faGrimace,\n faGrin: faGrin,\n faGrinAlt: faGrinAlt,\n faGrinBeam: faGrinBeam,\n faGrinBeamSweat: faGrinBeamSweat,\n faGrinHearts: faGrinHearts,\n faGrinSquint: faGrinSquint,\n faGrinSquintTears: faGrinSquintTears,\n faGrinStars: faGrinStars,\n faGrinTears: faGrinTears,\n faGrinTongue: faGrinTongue,\n faGrinTongueSquint: faGrinTongueSquint,\n faGrinTongueWink: faGrinTongueWink,\n faGrinWink: faGrinWink,\n faGripHorizontal: faGripHorizontal,\n faGripLines: faGripLines,\n faGripLinesVertical: faGripLinesVertical,\n faGripVertical: faGripVertical,\n faGuitar: faGuitar,\n faHSquare: faHSquare,\n faHamburger: faHamburger,\n faHammer: faHammer,\n faHamsa: faHamsa,\n faHandHolding: faHandHolding,\n faHandHoldingHeart: faHandHoldingHeart,\n faHandHoldingUsd: faHandHoldingUsd,\n faHandLizard: faHandLizard,\n faHandMiddleFinger: faHandMiddleFinger,\n faHandPaper: faHandPaper,\n faHandPeace: faHandPeace,\n faHandPointDown: faHandPointDown,\n faHandPointLeft: faHandPointLeft,\n faHandPointRight: faHandPointRight,\n faHandPointUp: faHandPointUp,\n faHandPointer: faHandPointer,\n faHandRock: faHandRock,\n faHandScissors: faHandScissors,\n faHandSpock: faHandSpock,\n faHands: faHands,\n faHandsHelping: faHandsHelping,\n faHandshake: faHandshake,\n faHanukiah: faHanukiah,\n faHardHat: faHardHat,\n faHashtag: faHashtag,\n faHatCowboy: faHatCowboy,\n faHatCowboySide: faHatCowboySide,\n faHatWizard: faHatWizard,\n faHdd: faHdd,\n faHeading: faHeading,\n faHeadphones: faHeadphones,\n faHeadphonesAlt: faHeadphonesAlt,\n faHeadset: faHeadset,\n faHeart: faHeart,\n faHeartBroken: faHeartBroken,\n faHeartbeat: faHeartbeat,\n faHelicopter: faHelicopter,\n faHighlighter: faHighlighter,\n faHiking: faHiking,\n faHippo: faHippo,\n faHistory: faHistory,\n faHockeyPuck: faHockeyPuck,\n faHollyBerry: faHollyBerry,\n faHome: faHome,\n faHorse: faHorse,\n faHorseHead: faHorseHead,\n faHospital: faHospital,\n faHospitalAlt: faHospitalAlt,\n faHospitalSymbol: faHospitalSymbol,\n faHotTub: faHotTub,\n faHotdog: faHotdog,\n faHotel: faHotel,\n faHourglass: faHourglass,\n faHourglassEnd: faHourglassEnd,\n faHourglassHalf: faHourglassHalf,\n faHourglassStart: faHourglassStart,\n faHouseDamage: faHouseDamage,\n faHryvnia: faHryvnia,\n faICursor: faICursor,\n faIceCream: faIceCream,\n faIcicles: faIcicles,\n faIcons: faIcons,\n faIdBadge: faIdBadge,\n faIdCard: faIdCard,\n faIdCardAlt: faIdCardAlt,\n faIgloo: faIgloo,\n faImage: faImage,\n faImages: faImages,\n faInbox: faInbox,\n faIndent: faIndent,\n faIndustry: faIndustry,\n faInfinity: faInfinity,\n faInfo: faInfo,\n faInfoCircle: faInfoCircle,\n faItalic: faItalic,\n faJedi: faJedi,\n faJoint: faJoint,\n faJournalWhills: faJournalWhills,\n faKaaba: faKaaba,\n faKey: faKey,\n faKeyboard: faKeyboard,\n faKhanda: faKhanda,\n faKiss: faKiss,\n faKissBeam: faKissBeam,\n faKissWinkHeart: faKissWinkHeart,\n faKiwiBird: faKiwiBird,\n faLandmark: faLandmark,\n faLanguage: faLanguage,\n faLaptop: faLaptop,\n faLaptopCode: faLaptopCode,\n faLaptopMedical: faLaptopMedical,\n faLaugh: faLaugh,\n faLaughBeam: faLaughBeam,\n faLaughSquint: faLaughSquint,\n faLaughWink: faLaughWink,\n faLayerGroup: faLayerGroup,\n faLeaf: faLeaf,\n faLemon: faLemon,\n faLessThan: faLessThan,\n faLessThanEqual: faLessThanEqual,\n faLevelDownAlt: faLevelDownAlt,\n faLevelUpAlt: faLevelUpAlt,\n faLifeRing: faLifeRing,\n faLightbulb: faLightbulb,\n faLink: faLink,\n faLiraSign: faLiraSign,\n faList: faList,\n faListAlt: faListAlt,\n faListOl: faListOl,\n faListUl: faListUl,\n faLocationArrow: faLocationArrow,\n faLock: faLock,\n faLockOpen: faLockOpen,\n faLongArrowAltDown: faLongArrowAltDown,\n faLongArrowAltLeft: faLongArrowAltLeft,\n faLongArrowAltRight: faLongArrowAltRight,\n faLongArrowAltUp: faLongArrowAltUp,\n faLowVision: faLowVision,\n faLuggageCart: faLuggageCart,\n faMagic: faMagic,\n faMagnet: faMagnet,\n faMailBulk: faMailBulk,\n faMale: faMale,\n faMap: faMap,\n faMapMarked: faMapMarked,\n faMapMarkedAlt: faMapMarkedAlt,\n faMapMarker: faMapMarker,\n faMapMarkerAlt: faMapMarkerAlt,\n faMapPin: faMapPin,\n faMapSigns: faMapSigns,\n faMarker: faMarker,\n faMars: faMars,\n faMarsDouble: faMarsDouble,\n faMarsStroke: faMarsStroke,\n faMarsStrokeH: faMarsStrokeH,\n faMarsStrokeV: faMarsStrokeV,\n faMask: faMask,\n faMedal: faMedal,\n faMedkit: faMedkit,\n faMeh: faMeh,\n faMehBlank: faMehBlank,\n faMehRollingEyes: faMehRollingEyes,\n faMemory: faMemory,\n faMenorah: faMenorah,\n faMercury: faMercury,\n faMeteor: faMeteor,\n faMicrochip: faMicrochip,\n faMicrophone: faMicrophone,\n faMicrophoneAlt: faMicrophoneAlt,\n faMicrophoneAltSlash: faMicrophoneAltSlash,\n faMicrophoneSlash: faMicrophoneSlash,\n faMicroscope: faMicroscope,\n faMinus: faMinus,\n faMinusCircle: faMinusCircle,\n faMinusSquare: faMinusSquare,\n faMitten: faMitten,\n faMobile: faMobile,\n faMobileAlt: faMobileAlt,\n faMoneyBill: faMoneyBill,\n faMoneyBillAlt: faMoneyBillAlt,\n faMoneyBillWave: faMoneyBillWave,\n faMoneyBillWaveAlt: faMoneyBillWaveAlt,\n faMoneyCheck: faMoneyCheck,\n faMoneyCheckAlt: faMoneyCheckAlt,\n faMonument: faMonument,\n faMoon: faMoon,\n faMortarPestle: faMortarPestle,\n faMosque: faMosque,\n faMotorcycle: faMotorcycle,\n faMountain: faMountain,\n faMouse: faMouse,\n faMousePointer: faMousePointer,\n faMugHot: faMugHot,\n faMusic: faMusic,\n faNetworkWired: faNetworkWired,\n faNeuter: faNeuter,\n faNewspaper: faNewspaper,\n faNotEqual: faNotEqual,\n faNotesMedical: faNotesMedical,\n faObjectGroup: faObjectGroup,\n faObjectUngroup: faObjectUngroup,\n faOilCan: faOilCan,\n faOm: faOm,\n faOtter: faOtter,\n faOutdent: faOutdent,\n faPager: faPager,\n faPaintBrush: faPaintBrush,\n faPaintRoller: faPaintRoller,\n faPalette: faPalette,\n faPallet: faPallet,\n faPaperPlane: faPaperPlane,\n faPaperclip: faPaperclip,\n faParachuteBox: faParachuteBox,\n faParagraph: faParagraph,\n faParking: faParking,\n faPassport: faPassport,\n faPastafarianism: faPastafarianism,\n faPaste: faPaste,\n faPause: faPause,\n faPauseCircle: faPauseCircle,\n faPaw: faPaw,\n faPeace: faPeace,\n faPen: faPen,\n faPenAlt: faPenAlt,\n faPenFancy: faPenFancy,\n faPenNib: faPenNib,\n faPenSquare: faPenSquare,\n faPencilAlt: faPencilAlt,\n faPencilRuler: faPencilRuler,\n faPeopleCarry: faPeopleCarry,\n faPepperHot: faPepperHot,\n faPercent: faPercent,\n faPercentage: faPercentage,\n faPersonBooth: faPersonBooth,\n faPhone: faPhone,\n faPhoneAlt: faPhoneAlt,\n faPhoneSlash: faPhoneSlash,\n faPhoneSquare: faPhoneSquare,\n faPhoneSquareAlt: faPhoneSquareAlt,\n faPhoneVolume: faPhoneVolume,\n faPhotoVideo: faPhotoVideo,\n faPiggyBank: faPiggyBank,\n faPills: faPills,\n faPizzaSlice: faPizzaSlice,\n faPlaceOfWorship: faPlaceOfWorship,\n faPlane: faPlane,\n faPlaneArrival: faPlaneArrival,\n faPlaneDeparture: faPlaneDeparture,\n faPlay: faPlay,\n faPlayCircle: faPlayCircle,\n faPlug: faPlug,\n faPlus: faPlus,\n faPlusCircle: faPlusCircle,\n faPlusSquare: faPlusSquare,\n faPodcast: faPodcast,\n faPoll: faPoll,\n faPollH: faPollH,\n faPoo: faPoo,\n faPooStorm: faPooStorm,\n faPoop: faPoop,\n faPortrait: faPortrait,\n faPoundSign: faPoundSign,\n faPowerOff: faPowerOff,\n faPray: faPray,\n faPrayingHands: faPrayingHands,\n faPrescription: faPrescription,\n faPrescriptionBottle: faPrescriptionBottle,\n faPrescriptionBottleAlt: faPrescriptionBottleAlt,\n faPrint: faPrint,\n faProcedures: faProcedures,\n faProjectDiagram: faProjectDiagram,\n faPuzzlePiece: faPuzzlePiece,\n faQrcode: faQrcode,\n faQuestion: faQuestion,\n faQuestionCircle: faQuestionCircle,\n faQuidditch: faQuidditch,\n faQuoteLeft: faQuoteLeft,\n faQuoteRight: faQuoteRight,\n faQuran: faQuran,\n faRadiation: faRadiation,\n faRadiationAlt: faRadiationAlt,\n faRainbow: faRainbow,\n faRandom: faRandom,\n faReceipt: faReceipt,\n faRecordVinyl: faRecordVinyl,\n faRecycle: faRecycle,\n faRedo: faRedo,\n faRedoAlt: faRedoAlt,\n faRegistered: faRegistered,\n faRemoveFormat: faRemoveFormat,\n faReply: faReply,\n faReplyAll: faReplyAll,\n faRepublican: faRepublican,\n faRestroom: faRestroom,\n faRetweet: faRetweet,\n faRibbon: faRibbon,\n faRing: faRing,\n faRoad: faRoad,\n faRobot: faRobot,\n faRocket: faRocket,\n faRoute: faRoute,\n faRss: faRss,\n faRssSquare: faRssSquare,\n faRubleSign: faRubleSign,\n faRuler: faRuler,\n faRulerCombined: faRulerCombined,\n faRulerHorizontal: faRulerHorizontal,\n faRulerVertical: faRulerVertical,\n faRunning: faRunning,\n faRupeeSign: faRupeeSign,\n faSadCry: faSadCry,\n faSadTear: faSadTear,\n faSatellite: faSatellite,\n faSatelliteDish: faSatelliteDish,\n faSave: faSave,\n faSchool: faSchool,\n faScrewdriver: faScrewdriver,\n faScroll: faScroll,\n faSdCard: faSdCard,\n faSearch: faSearch,\n faSearchDollar: faSearchDollar,\n faSearchLocation: faSearchLocation,\n faSearchMinus: faSearchMinus,\n faSearchPlus: faSearchPlus,\n faSeedling: faSeedling,\n faServer: faServer,\n faShapes: faShapes,\n faShare: faShare,\n faShareAlt: faShareAlt,\n faShareAltSquare: faShareAltSquare,\n faShareSquare: faShareSquare,\n faShekelSign: faShekelSign,\n faShieldAlt: faShieldAlt,\n faShip: faShip,\n faShippingFast: faShippingFast,\n faShoePrints: faShoePrints,\n faShoppingBag: faShoppingBag,\n faShoppingBasket: faShoppingBasket,\n faShoppingCart: faShoppingCart,\n faShower: faShower,\n faShuttleVan: faShuttleVan,\n faSign: faSign,\n faSignInAlt: faSignInAlt,\n faSignLanguage: faSignLanguage,\n faSignOutAlt: faSignOutAlt,\n faSignal: faSignal,\n faSignature: faSignature,\n faSimCard: faSimCard,\n faSitemap: faSitemap,\n faSkating: faSkating,\n faSkiing: faSkiing,\n faSkiingNordic: faSkiingNordic,\n faSkull: faSkull,\n faSkullCrossbones: faSkullCrossbones,\n faSlash: faSlash,\n faSleigh: faSleigh,\n faSlidersH: faSlidersH,\n faSmile: faSmile,\n faSmileBeam: faSmileBeam,\n faSmileWink: faSmileWink,\n faSmog: faSmog,\n faSmoking: faSmoking,\n faSmokingBan: faSmokingBan,\n faSms: faSms,\n faSnowboarding: faSnowboarding,\n faSnowflake: faSnowflake,\n faSnowman: faSnowman,\n faSnowplow: faSnowplow,\n faSocks: faSocks,\n faSolarPanel: faSolarPanel,\n faSort: faSort,\n faSortAlphaDown: faSortAlphaDown,\n faSortAlphaDownAlt: faSortAlphaDownAlt,\n faSortAlphaUp: faSortAlphaUp,\n faSortAlphaUpAlt: faSortAlphaUpAlt,\n faSortAmountDown: faSortAmountDown,\n faSortAmountDownAlt: faSortAmountDownAlt,\n faSortAmountUp: faSortAmountUp,\n faSortAmountUpAlt: faSortAmountUpAlt,\n faSortDown: faSortDown,\n faSortNumericDown: faSortNumericDown,\n faSortNumericDownAlt: faSortNumericDownAlt,\n faSortNumericUp: faSortNumericUp,\n faSortNumericUpAlt: faSortNumericUpAlt,\n faSortUp: faSortUp,\n faSpa: faSpa,\n faSpaceShuttle: faSpaceShuttle,\n faSpellCheck: faSpellCheck,\n faSpider: faSpider,\n faSpinner: faSpinner,\n faSplotch: faSplotch,\n faSprayCan: faSprayCan,\n faSquare: faSquare,\n faSquareFull: faSquareFull,\n faSquareRootAlt: faSquareRootAlt,\n faStamp: faStamp,\n faStar: faStar,\n faStarAndCrescent: faStarAndCrescent,\n faStarHalf: faStarHalf,\n faStarHalfAlt: faStarHalfAlt,\n faStarOfDavid: faStarOfDavid,\n faStarOfLife: faStarOfLife,\n faStepBackward: faStepBackward,\n faStepForward: faStepForward,\n faStethoscope: faStethoscope,\n faStickyNote: faStickyNote,\n faStop: faStop,\n faStopCircle: faStopCircle,\n faStopwatch: faStopwatch,\n faStore: faStore,\n faStoreAlt: faStoreAlt,\n faStream: faStream,\n faStreetView: faStreetView,\n faStrikethrough: faStrikethrough,\n faStroopwafel: faStroopwafel,\n faSubscript: faSubscript,\n faSubway: faSubway,\n faSuitcase: faSuitcase,\n faSuitcaseRolling: faSuitcaseRolling,\n faSun: faSun,\n faSuperscript: faSuperscript,\n faSurprise: faSurprise,\n faSwatchbook: faSwatchbook,\n faSwimmer: faSwimmer,\n faSwimmingPool: faSwimmingPool,\n faSynagogue: faSynagogue,\n faSync: faSync,\n faSyncAlt: faSyncAlt,\n faSyringe: faSyringe,\n faTable: faTable,\n faTableTennis: faTableTennis,\n faTablet: faTablet,\n faTabletAlt: faTabletAlt,\n faTablets: faTablets,\n faTachometerAlt: faTachometerAlt,\n faTag: faTag,\n faTags: faTags,\n faTape: faTape,\n faTasks: faTasks,\n faTaxi: faTaxi,\n faTeeth: faTeeth,\n faTeethOpen: faTeethOpen,\n faTemperatureHigh: faTemperatureHigh,\n faTemperatureLow: faTemperatureLow,\n faTenge: faTenge,\n faTerminal: faTerminal,\n faTextHeight: faTextHeight,\n faTextWidth: faTextWidth,\n faTh: faTh,\n faThLarge: faThLarge,\n faThList: faThList,\n faTheaterMasks: faTheaterMasks,\n faThermometer: faThermometer,\n faThermometerEmpty: faThermometerEmpty,\n faThermometerFull: faThermometerFull,\n faThermometerHalf: faThermometerHalf,\n faThermometerQuarter: faThermometerQuarter,\n faThermometerThreeQuarters: faThermometerThreeQuarters,\n faThumbsDown: faThumbsDown,\n faThumbsUp: faThumbsUp,\n faThumbtack: faThumbtack,\n faTicketAlt: faTicketAlt,\n faTimes: faTimes,\n faTimesCircle: faTimesCircle,\n faTint: faTint,\n faTintSlash: faTintSlash,\n faTired: faTired,\n faToggleOff: faToggleOff,\n faToggleOn: faToggleOn,\n faToilet: faToilet,\n faToiletPaper: faToiletPaper,\n faToolbox: faToolbox,\n faTools: faTools,\n faTooth: faTooth,\n faTorah: faTorah,\n faToriiGate: faToriiGate,\n faTractor: faTractor,\n faTrademark: faTrademark,\n faTrafficLight: faTrafficLight,\n faTrailer: faTrailer,\n faTrain: faTrain,\n faTram: faTram,\n faTransgender: faTransgender,\n faTransgenderAlt: faTransgenderAlt,\n faTrash: faTrash,\n faTrashAlt: faTrashAlt,\n faTrashRestore: faTrashRestore,\n faTrashRestoreAlt: faTrashRestoreAlt,\n faTree: faTree,\n faTrophy: faTrophy,\n faTruck: faTruck,\n faTruckLoading: faTruckLoading,\n faTruckMonster: faTruckMonster,\n faTruckMoving: faTruckMoving,\n faTruckPickup: faTruckPickup,\n faTshirt: faTshirt,\n faTty: faTty,\n faTv: faTv,\n faUmbrella: faUmbrella,\n faUmbrellaBeach: faUmbrellaBeach,\n faUnderline: faUnderline,\n faUndo: faUndo,\n faUndoAlt: faUndoAlt,\n faUniversalAccess: faUniversalAccess,\n faUniversity: faUniversity,\n faUnlink: faUnlink,\n faUnlock: faUnlock,\n faUnlockAlt: faUnlockAlt,\n faUpload: faUpload,\n faUser: faUser,\n faUserAlt: faUserAlt,\n faUserAltSlash: faUserAltSlash,\n faUserAstronaut: faUserAstronaut,\n faUserCheck: faUserCheck,\n faUserCircle: faUserCircle,\n faUserClock: faUserClock,\n faUserCog: faUserCog,\n faUserEdit: faUserEdit,\n faUserFriends: faUserFriends,\n faUserGraduate: faUserGraduate,\n faUserInjured: faUserInjured,\n faUserLock: faUserLock,\n faUserMd: faUserMd,\n faUserMinus: faUserMinus,\n faUserNinja: faUserNinja,\n faUserNurse: faUserNurse,\n faUserPlus: faUserPlus,\n faUserSecret: faUserSecret,\n faUserShield: faUserShield,\n faUserSlash: faUserSlash,\n faUserTag: faUserTag,\n faUserTie: faUserTie,\n faUserTimes: faUserTimes,\n faUsers: faUsers,\n faUsersCog: faUsersCog,\n faUtensilSpoon: faUtensilSpoon,\n faUtensils: faUtensils,\n faVectorSquare: faVectorSquare,\n faVenus: faVenus,\n faVenusDouble: faVenusDouble,\n faVenusMars: faVenusMars,\n faVial: faVial,\n faVials: faVials,\n faVideo: faVideo,\n faVideoSlash: faVideoSlash,\n faVihara: faVihara,\n faVoicemail: faVoicemail,\n faVolleyballBall: faVolleyballBall,\n faVolumeDown: faVolumeDown,\n faVolumeMute: faVolumeMute,\n faVolumeOff: faVolumeOff,\n faVolumeUp: faVolumeUp,\n faVoteYea: faVoteYea,\n faVrCardboard: faVrCardboard,\n faWalking: faWalking,\n faWallet: faWallet,\n faWarehouse: faWarehouse,\n faWater: faWater,\n faWaveSquare: faWaveSquare,\n faWeight: faWeight,\n faWeightHanging: faWeightHanging,\n faWheelchair: faWheelchair,\n faWifi: faWifi,\n faWind: faWind,\n faWindowClose: faWindowClose,\n faWindowMaximize: faWindowMaximize,\n faWindowMinimize: faWindowMinimize,\n faWindowRestore: faWindowRestore,\n faWineBottle: faWineBottle,\n faWineGlass: faWineGlass,\n faWineGlassAlt: faWineGlassAlt,\n faWonSign: faWonSign,\n faWrench: faWrench,\n faXRay: faXRay,\n faYenSign: faYenSign,\n faYinYang: faYinYang\n};\n\nexport { _iconsCache as fas, prefix, faAd, faAddressBook, faAddressCard, faAdjust, faAirFreshener, faAlignCenter, faAlignJustify, faAlignLeft, faAlignRight, faAllergies, faAmbulance, faAmericanSignLanguageInterpreting, faAnchor, faAngleDoubleDown, faAngleDoubleLeft, faAngleDoubleRight, faAngleDoubleUp, faAngleDown, faAngleLeft, faAngleRight, faAngleUp, faAngry, faAnkh, faAppleAlt, faArchive, faArchway, faArrowAltCircleDown, faArrowAltCircleLeft, faArrowAltCircleRight, faArrowAltCircleUp, faArrowCircleDown, faArrowCircleLeft, faArrowCircleRight, faArrowCircleUp, faArrowDown, faArrowLeft, faArrowRight, faArrowUp, faArrowsAlt, faArrowsAltH, faArrowsAltV, faAssistiveListeningSystems, faAsterisk, faAt, faAtlas, faAtom, faAudioDescription, faAward, faBaby, faBabyCarriage, faBackspace, faBackward, faBacon, faBahai, faBalanceScale, faBalanceScaleLeft, faBalanceScaleRight, faBan, faBandAid, faBarcode, faBars, faBaseballBall, faBasketballBall, faBath, faBatteryEmpty, faBatteryFull, faBatteryHalf, faBatteryQuarter, faBatteryThreeQuarters, faBed, faBeer, faBell, faBellSlash, faBezierCurve, faBible, faBicycle, faBiking, faBinoculars, faBiohazard, faBirthdayCake, faBlender, faBlenderPhone, faBlind, faBlog, faBold, faBolt, faBomb, faBone, faBong, faBook, faBookDead, faBookMedical, faBookOpen, faBookReader, faBookmark, faBorderAll, faBorderNone, faBorderStyle, faBowlingBall, faBox, faBoxOpen, faBoxes, faBraille, faBrain, faBreadSlice, faBriefcase, faBriefcaseMedical, faBroadcastTower, faBroom, faBrush, faBug, faBuilding, faBullhorn, faBullseye, faBurn, faBus, faBusAlt, faBusinessTime, faCalculator, faCalendar, faCalendarAlt, faCalendarCheck, faCalendarDay, faCalendarMinus, faCalendarPlus, faCalendarTimes, faCalendarWeek, faCamera, faCameraRetro, faCampground, faCandyCane, faCannabis, faCapsules, faCar, faCarAlt, faCarBattery, faCarCrash, faCarSide, faCaravan, faCaretDown, faCaretLeft, faCaretRight, faCaretSquareDown, faCaretSquareLeft, faCaretSquareRight, faCaretSquareUp, faCaretUp, faCarrot, faCartArrowDown, faCartPlus, faCashRegister, faCat, faCertificate, faChair, faChalkboard, faChalkboardTeacher, faChargingStation, faChartArea, faChartBar, faChartLine, faChartPie, faCheck, faCheckCircle, faCheckDouble, faCheckSquare, faCheese, faChess, faChessBishop, faChessBoard, faChessKing, faChessKnight, faChessPawn, faChessQueen, faChessRook, faChevronCircleDown, faChevronCircleLeft, faChevronCircleRight, faChevronCircleUp, faChevronDown, faChevronLeft, faChevronRight, faChevronUp, faChild, faChurch, faCircle, faCircleNotch, faCity, faClinicMedical, faClipboard, faClipboardCheck, faClipboardList, faClock, faClone, faClosedCaptioning, faCloud, faCloudDownloadAlt, faCloudMeatball, faCloudMoon, faCloudMoonRain, faCloudRain, faCloudShowersHeavy, faCloudSun, faCloudSunRain, faCloudUploadAlt, faCocktail, faCode, faCodeBranch, faCoffee, faCog, faCogs, faCoins, faColumns, faComment, faCommentAlt, faCommentDollar, faCommentDots, faCommentMedical, faCommentSlash, faComments, faCommentsDollar, faCompactDisc, faCompass, faCompress, faCompressAlt, faCompressArrowsAlt, faConciergeBell, faCookie, faCookieBite, faCopy, faCopyright, faCouch, faCreditCard, faCrop, faCropAlt, faCross, faCrosshairs, faCrow, faCrown, faCrutch, faCube, faCubes, faCut, faDatabase, faDeaf, faDemocrat, faDesktop, faDharmachakra, faDiagnoses, faDice, faDiceD20, faDiceD6, faDiceFive, faDiceFour, faDiceOne, faDiceSix, faDiceThree, faDiceTwo, faDigitalTachograph, faDirections, faDivide, faDizzy, faDna, faDog, faDollarSign, faDolly, faDollyFlatbed, faDonate, faDoorClosed, faDoorOpen, faDotCircle, faDove, faDownload, faDraftingCompass, faDragon, faDrawPolygon, faDrum, faDrumSteelpan, faDrumstickBite, faDumbbell, faDumpster, faDumpsterFire, faDungeon, faEdit, faEgg, faEject, faEllipsisH, faEllipsisV, faEnvelope, faEnvelopeOpen, faEnvelopeOpenText, faEnvelopeSquare, faEquals, faEraser, faEthernet, faEuroSign, faExchangeAlt, faExclamation, faExclamationCircle, faExclamationTriangle, faExpand, faExpandAlt, faExpandArrowsAlt, faExternalLinkAlt, faExternalLinkSquareAlt, faEye, faEyeDropper, faEyeSlash, faFan, faFastBackward, faFastForward, faFax, faFeather, faFeatherAlt, faFemale, faFighterJet, faFile, faFileAlt, faFileArchive, faFileAudio, faFileCode, faFileContract, faFileCsv, faFileDownload, faFileExcel, faFileExport, faFileImage, faFileImport, faFileInvoice, faFileInvoiceDollar, faFileMedical, faFileMedicalAlt, faFilePdf, faFilePowerpoint, faFilePrescription, faFileSignature, faFileUpload, faFileVideo, faFileWord, faFill, faFillDrip, faFilm, faFilter, faFingerprint, faFire, faFireAlt, faFireExtinguisher, faFirstAid, faFish, faFistRaised, faFlag, faFlagCheckered, faFlagUsa, faFlask, faFlushed, faFolder, faFolderMinus, faFolderOpen, faFolderPlus, faFont, faFontAwesomeLogoFull, faFootballBall, faForward, faFrog, faFrown, faFrownOpen, faFunnelDollar, faFutbol, faGamepad, faGasPump, faGavel, faGem, faGenderless, faGhost, faGift, faGifts, faGlassCheers, faGlassMartini, faGlassMartiniAlt, faGlassWhiskey, faGlasses, faGlobe, faGlobeAfrica, faGlobeAmericas, faGlobeAsia, faGlobeEurope, faGolfBall, faGopuram, faGraduationCap, faGreaterThan, faGreaterThanEqual, faGrimace, faGrin, faGrinAlt, faGrinBeam, faGrinBeamSweat, faGrinHearts, faGrinSquint, faGrinSquintTears, faGrinStars, faGrinTears, faGrinTongue, faGrinTongueSquint, faGrinTongueWink, faGrinWink, faGripHorizontal, faGripLines, faGripLinesVertical, faGripVertical, faGuitar, faHSquare, faHamburger, faHammer, faHamsa, faHandHolding, faHandHoldingHeart, faHandHoldingUsd, faHandLizard, faHandMiddleFinger, faHandPaper, faHandPeace, faHandPointDown, faHandPointLeft, faHandPointRight, faHandPointUp, faHandPointer, faHandRock, faHandScissors, faHandSpock, faHands, faHandsHelping, faHandshake, faHanukiah, faHardHat, faHashtag, faHatCowboy, faHatCowboySide, faHatWizard, faHdd, faHeading, faHeadphones, faHeadphonesAlt, faHeadset, faHeart, faHeartBroken, faHeartbeat, faHelicopter, faHighlighter, faHiking, faHippo, faHistory, faHockeyPuck, faHollyBerry, faHome, faHorse, faHorseHead, faHospital, faHospitalAlt, faHospitalSymbol, faHotTub, faHotdog, faHotel, faHourglass, faHourglassEnd, faHourglassHalf, faHourglassStart, faHouseDamage, faHryvnia, faICursor, faIceCream, faIcicles, faIcons, faIdBadge, faIdCard, faIdCardAlt, faIgloo, faImage, faImages, faInbox, faIndent, faIndustry, faInfinity, faInfo, faInfoCircle, faItalic, faJedi, faJoint, faJournalWhills, faKaaba, faKey, faKeyboard, faKhanda, faKiss, faKissBeam, faKissWinkHeart, faKiwiBird, faLandmark, faLanguage, faLaptop, faLaptopCode, faLaptopMedical, faLaugh, faLaughBeam, faLaughSquint, faLaughWink, faLayerGroup, faLeaf, faLemon, faLessThan, faLessThanEqual, faLevelDownAlt, faLevelUpAlt, faLifeRing, faLightbulb, faLink, faLiraSign, faList, faListAlt, faListOl, faListUl, faLocationArrow, faLock, faLockOpen, faLongArrowAltDown, faLongArrowAltLeft, faLongArrowAltRight, faLongArrowAltUp, faLowVision, faLuggageCart, faMagic, faMagnet, faMailBulk, faMale, faMap, faMapMarked, faMapMarkedAlt, faMapMarker, faMapMarkerAlt, faMapPin, faMapSigns, faMarker, faMars, faMarsDouble, faMarsStroke, faMarsStrokeH, faMarsStrokeV, faMask, faMedal, faMedkit, faMeh, faMehBlank, faMehRollingEyes, faMemory, faMenorah, faMercury, faMeteor, faMicrochip, faMicrophone, faMicrophoneAlt, faMicrophoneAltSlash, faMicrophoneSlash, faMicroscope, faMinus, faMinusCircle, faMinusSquare, faMitten, faMobile, faMobileAlt, faMoneyBill, faMoneyBillAlt, faMoneyBillWave, faMoneyBillWaveAlt, faMoneyCheck, faMoneyCheckAlt, faMonument, faMoon, faMortarPestle, faMosque, faMotorcycle, faMountain, faMouse, faMousePointer, faMugHot, faMusic, faNetworkWired, faNeuter, faNewspaper, faNotEqual, faNotesMedical, faObjectGroup, faObjectUngroup, faOilCan, faOm, faOtter, faOutdent, faPager, faPaintBrush, faPaintRoller, faPalette, faPallet, faPaperPlane, faPaperclip, faParachuteBox, faParagraph, faParking, faPassport, faPastafarianism, faPaste, faPause, faPauseCircle, faPaw, faPeace, faPen, faPenAlt, faPenFancy, faPenNib, faPenSquare, faPencilAlt, faPencilRuler, faPeopleCarry, faPepperHot, faPercent, faPercentage, faPersonBooth, faPhone, faPhoneAlt, faPhoneSlash, faPhoneSquare, faPhoneSquareAlt, faPhoneVolume, faPhotoVideo, faPiggyBank, faPills, faPizzaSlice, faPlaceOfWorship, faPlane, faPlaneArrival, faPlaneDeparture, faPlay, faPlayCircle, faPlug, faPlus, faPlusCircle, faPlusSquare, faPodcast, faPoll, faPollH, faPoo, faPooStorm, faPoop, faPortrait, faPoundSign, faPowerOff, faPray, faPrayingHands, faPrescription, faPrescriptionBottle, faPrescriptionBottleAlt, faPrint, faProcedures, faProjectDiagram, faPuzzlePiece, faQrcode, faQuestion, faQuestionCircle, faQuidditch, faQuoteLeft, faQuoteRight, faQuran, faRadiation, faRadiationAlt, faRainbow, faRandom, faReceipt, faRecordVinyl, faRecycle, faRedo, faRedoAlt, faRegistered, faRemoveFormat, faReply, faReplyAll, faRepublican, faRestroom, faRetweet, faRibbon, faRing, faRoad, faRobot, faRocket, faRoute, faRss, faRssSquare, faRubleSign, faRuler, faRulerCombined, faRulerHorizontal, faRulerVertical, faRunning, faRupeeSign, faSadCry, faSadTear, faSatellite, faSatelliteDish, faSave, faSchool, faScrewdriver, faScroll, faSdCard, faSearch, faSearchDollar, faSearchLocation, faSearchMinus, faSearchPlus, faSeedling, faServer, faShapes, faShare, faShareAlt, faShareAltSquare, faShareSquare, faShekelSign, faShieldAlt, faShip, faShippingFast, faShoePrints, faShoppingBag, faShoppingBasket, faShoppingCart, faShower, faShuttleVan, faSign, faSignInAlt, faSignLanguage, faSignOutAlt, faSignal, faSignature, faSimCard, faSitemap, faSkating, faSkiing, faSkiingNordic, faSkull, faSkullCrossbones, faSlash, faSleigh, faSlidersH, faSmile, faSmileBeam, faSmileWink, faSmog, faSmoking, faSmokingBan, faSms, faSnowboarding, faSnowflake, faSnowman, faSnowplow, faSocks, faSolarPanel, faSort, faSortAlphaDown, faSortAlphaDownAlt, faSortAlphaUp, faSortAlphaUpAlt, faSortAmountDown, faSortAmountDownAlt, faSortAmountUp, faSortAmountUpAlt, faSortDown, faSortNumericDown, faSortNumericDownAlt, faSortNumericUp, faSortNumericUpAlt, faSortUp, faSpa, faSpaceShuttle, faSpellCheck, faSpider, faSpinner, faSplotch, faSprayCan, faSquare, faSquareFull, faSquareRootAlt, faStamp, faStar, faStarAndCrescent, faStarHalf, faStarHalfAlt, faStarOfDavid, faStarOfLife, faStepBackward, faStepForward, faStethoscope, faStickyNote, faStop, faStopCircle, faStopwatch, faStore, faStoreAlt, faStream, faStreetView, faStrikethrough, faStroopwafel, faSubscript, faSubway, faSuitcase, faSuitcaseRolling, faSun, faSuperscript, faSurprise, faSwatchbook, faSwimmer, faSwimmingPool, faSynagogue, faSync, faSyncAlt, faSyringe, faTable, faTableTennis, faTablet, faTabletAlt, faTablets, faTachometerAlt, faTag, faTags, faTape, faTasks, faTaxi, faTeeth, faTeethOpen, faTemperatureHigh, faTemperatureLow, faTenge, faTerminal, faTextHeight, faTextWidth, faTh, faThLarge, faThList, faTheaterMasks, faThermometer, faThermometerEmpty, faThermometerFull, faThermometerHalf, faThermometerQuarter, faThermometerThreeQuarters, faThumbsDown, faThumbsUp, faThumbtack, faTicketAlt, faTimes, faTimesCircle, faTint, faTintSlash, faTired, faToggleOff, faToggleOn, faToilet, faToiletPaper, faToolbox, faTools, faTooth, faTorah, faToriiGate, faTractor, faTrademark, faTrafficLight, faTrailer, faTrain, faTram, faTransgender, faTransgenderAlt, faTrash, faTrashAlt, faTrashRestore, faTrashRestoreAlt, faTree, faTrophy, faTruck, faTruckLoading, faTruckMonster, faTruckMoving, faTruckPickup, faTshirt, faTty, faTv, faUmbrella, faUmbrellaBeach, faUnderline, faUndo, faUndoAlt, faUniversalAccess, faUniversity, faUnlink, faUnlock, faUnlockAlt, faUpload, faUser, faUserAlt, faUserAltSlash, faUserAstronaut, faUserCheck, faUserCircle, faUserClock, faUserCog, faUserEdit, faUserFriends, faUserGraduate, faUserInjured, faUserLock, faUserMd, faUserMinus, faUserNinja, faUserNurse, faUserPlus, faUserSecret, faUserShield, faUserSlash, faUserTag, faUserTie, faUserTimes, faUsers, faUsersCog, faUtensilSpoon, faUtensils, faVectorSquare, faVenus, faVenusDouble, faVenusMars, faVial, faVials, faVideo, faVideoSlash, faVihara, faVoicemail, faVolleyballBall, faVolumeDown, faVolumeMute, faVolumeOff, faVolumeUp, faVoteYea, faVrCardboard, faWalking, faWallet, faWarehouse, faWater, faWaveSquare, faWeight, faWeightHanging, faWheelchair, faWifi, faWind, faWindowClose, faWindowMaximize, faWindowMinimize, faWindowRestore, faWineBottle, faWineGlass, faWineGlassAlt, faWonSign, faWrench, faXRay, faYenSign, faYinYang };\n","function _typeof(obj) {\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n var ownKeys = Object.keys(source);\n\n if (typeof Object.getOwnPropertySymbols === 'function') {\n ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n\n ownKeys.forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n }\n\n return target;\n}\n\nfunction _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest();\n}\n\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread();\n}\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];\n\n return arr2;\n }\n}\n\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nfunction _iterableToArray(iter) {\n if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter);\n}\n\nfunction _iterableToArrayLimit(arr, i) {\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}\n\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance\");\n}\n\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n}\n\nvar noop = function noop() {};\n\nvar _WINDOW = {};\nvar _DOCUMENT = {};\nvar _MUTATION_OBSERVER = null;\nvar _PERFORMANCE = {\n mark: noop,\n measure: noop\n};\n\ntry {\n if (typeof window !== 'undefined') _WINDOW = window;\n if (typeof document !== 'undefined') _DOCUMENT = document;\n if (typeof MutationObserver !== 'undefined') _MUTATION_OBSERVER = MutationObserver;\n if (typeof performance !== 'undefined') _PERFORMANCE = performance;\n} catch (e) {}\n\nvar _ref = _WINDOW.navigator || {},\n _ref$userAgent = _ref.userAgent,\n userAgent = _ref$userAgent === void 0 ? '' : _ref$userAgent;\n\nvar WINDOW = _WINDOW;\nvar DOCUMENT = _DOCUMENT;\nvar MUTATION_OBSERVER = _MUTATION_OBSERVER;\nvar PERFORMANCE = _PERFORMANCE;\nvar IS_BROWSER = !!WINDOW.document;\nvar IS_DOM = !!DOCUMENT.documentElement && !!DOCUMENT.head && typeof DOCUMENT.addEventListener === 'function' && typeof DOCUMENT.createElement === 'function';\nvar IS_IE = ~userAgent.indexOf('MSIE') || ~userAgent.indexOf('Trident/');\n\nvar NAMESPACE_IDENTIFIER = '___FONT_AWESOME___';\nvar UNITS_IN_GRID = 16;\nvar DEFAULT_FAMILY_PREFIX = 'fa';\nvar DEFAULT_REPLACEMENT_CLASS = 'svg-inline--fa';\nvar DATA_FA_I2SVG = 'data-fa-i2svg';\nvar DATA_FA_PSEUDO_ELEMENT = 'data-fa-pseudo-element';\nvar DATA_FA_PSEUDO_ELEMENT_PENDING = 'data-fa-pseudo-element-pending';\nvar DATA_PREFIX = 'data-prefix';\nvar DATA_ICON = 'data-icon';\nvar HTML_CLASS_I2SVG_BASE_CLASS = 'fontawesome-i2svg';\nvar MUTATION_APPROACH_ASYNC = 'async';\nvar TAGNAMES_TO_SKIP_FOR_PSEUDOELEMENTS = ['HTML', 'HEAD', 'STYLE', 'SCRIPT'];\nvar PRODUCTION = function () {\n try {\n return process.env.NODE_ENV === 'production';\n } catch (e) {\n return false;\n }\n}();\nvar PREFIX_TO_STYLE = {\n 'fas': 'solid',\n 'far': 'regular',\n 'fal': 'light',\n 'fad': 'duotone',\n 'fab': 'brands',\n 'fa': 'solid'\n};\nvar STYLE_TO_PREFIX = {\n 'solid': 'fas',\n 'regular': 'far',\n 'light': 'fal',\n 'duotone': 'fad',\n 'brands': 'fab'\n};\nvar LAYERS_TEXT_CLASSNAME = 'fa-layers-text';\nvar FONT_FAMILY_PATTERN = /Font Awesome 5 (Solid|Regular|Light|Duotone|Brands|Free|Pro)/;\nvar FONT_WEIGHT_TO_PREFIX = {\n '900': 'fas',\n '400': 'far',\n 'normal': 'far',\n '300': 'fal'\n};\nvar oneToTen = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];\nvar oneToTwenty = oneToTen.concat([11, 12, 13, 14, 15, 16, 17, 18, 19, 20]);\nvar ATTRIBUTES_WATCHED_FOR_MUTATION = ['class', 'data-prefix', 'data-icon', 'data-fa-transform', 'data-fa-mask'];\nvar DUOTONE_CLASSES = {\n GROUP: 'group',\n SWAP_OPACITY: 'swap-opacity',\n PRIMARY: 'primary',\n SECONDARY: 'secondary'\n};\nvar RESERVED_CLASSES = ['xs', 'sm', 'lg', 'fw', 'ul', 'li', 'border', 'pull-left', 'pull-right', 'spin', 'pulse', 'rotate-90', 'rotate-180', 'rotate-270', 'flip-horizontal', 'flip-vertical', 'flip-both', 'stack', 'stack-1x', 'stack-2x', 'inverse', 'layers', 'layers-text', 'layers-counter', DUOTONE_CLASSES.GROUP, DUOTONE_CLASSES.SWAP_OPACITY, DUOTONE_CLASSES.PRIMARY, DUOTONE_CLASSES.SECONDARY].concat(oneToTen.map(function (n) {\n return \"\".concat(n, \"x\");\n})).concat(oneToTwenty.map(function (n) {\n return \"w-\".concat(n);\n}));\n\nvar initial = WINDOW.FontAwesomeConfig || {};\n\nfunction getAttrConfig(attr) {\n var element = DOCUMENT.querySelector('script[' + attr + ']');\n\n if (element) {\n return element.getAttribute(attr);\n }\n}\n\nfunction coerce(val) {\n // Getting an empty string will occur if the attribute is set on the HTML tag but without a value\n // We'll assume that this is an indication that it should be toggled to true\n // For example \n if (val === '') return true;\n if (val === 'false') return false;\n if (val === 'true') return true;\n return val;\n}\n\nif (DOCUMENT && typeof DOCUMENT.querySelector === 'function') {\n var attrs = [['data-family-prefix', 'familyPrefix'], ['data-replacement-class', 'replacementClass'], ['data-auto-replace-svg', 'autoReplaceSvg'], ['data-auto-add-css', 'autoAddCss'], ['data-auto-a11y', 'autoA11y'], ['data-search-pseudo-elements', 'searchPseudoElements'], ['data-observe-mutations', 'observeMutations'], ['data-mutate-approach', 'mutateApproach'], ['data-keep-original-source', 'keepOriginalSource'], ['data-measure-performance', 'measurePerformance'], ['data-show-missing-icons', 'showMissingIcons']];\n attrs.forEach(function (_ref) {\n var _ref2 = _slicedToArray(_ref, 2),\n attr = _ref2[0],\n key = _ref2[1];\n\n var val = coerce(getAttrConfig(attr));\n\n if (val !== undefined && val !== null) {\n initial[key] = val;\n }\n });\n}\n\nvar _default = {\n familyPrefix: DEFAULT_FAMILY_PREFIX,\n replacementClass: DEFAULT_REPLACEMENT_CLASS,\n autoReplaceSvg: true,\n autoAddCss: true,\n autoA11y: true,\n searchPseudoElements: false,\n observeMutations: true,\n mutateApproach: 'async',\n keepOriginalSource: true,\n measurePerformance: false,\n showMissingIcons: true\n};\n\nvar _config = _objectSpread({}, _default, initial);\n\nif (!_config.autoReplaceSvg) _config.observeMutations = false;\n\nvar config = _objectSpread({}, _config);\n\nWINDOW.FontAwesomeConfig = config;\n\nvar w = WINDOW || {};\nif (!w[NAMESPACE_IDENTIFIER]) w[NAMESPACE_IDENTIFIER] = {};\nif (!w[NAMESPACE_IDENTIFIER].styles) w[NAMESPACE_IDENTIFIER].styles = {};\nif (!w[NAMESPACE_IDENTIFIER].hooks) w[NAMESPACE_IDENTIFIER].hooks = {};\nif (!w[NAMESPACE_IDENTIFIER].shims) w[NAMESPACE_IDENTIFIER].shims = [];\nvar namespace = w[NAMESPACE_IDENTIFIER];\n\nvar functions = [];\n\nvar listener = function listener() {\n DOCUMENT.removeEventListener('DOMContentLoaded', listener);\n loaded = 1;\n functions.map(function (fn) {\n return fn();\n });\n};\n\nvar loaded = false;\n\nif (IS_DOM) {\n loaded = (DOCUMENT.documentElement.doScroll ? /^loaded|^c/ : /^loaded|^i|^c/).test(DOCUMENT.readyState);\n if (!loaded) DOCUMENT.addEventListener('DOMContentLoaded', listener);\n}\n\nfunction domready (fn) {\n if (!IS_DOM) return;\n loaded ? setTimeout(fn, 0) : functions.push(fn);\n}\n\nvar PENDING = 'pending';\nvar SETTLED = 'settled';\nvar FULFILLED = 'fulfilled';\nvar REJECTED = 'rejected';\n\nvar NOOP = function NOOP() {};\n\nvar isNode = typeof global !== 'undefined' && typeof global.process !== 'undefined' && typeof global.process.emit === 'function';\nvar asyncSetTimer = typeof setImmediate === 'undefined' ? setTimeout : setImmediate;\nvar asyncQueue = [];\nvar asyncTimer;\n\nfunction asyncFlush() {\n // run promise callbacks\n for (var i = 0; i < asyncQueue.length; i++) {\n asyncQueue[i][0](asyncQueue[i][1]);\n } // reset async asyncQueue\n\n\n asyncQueue = [];\n asyncTimer = false;\n}\n\nfunction asyncCall(callback, arg) {\n asyncQueue.push([callback, arg]);\n\n if (!asyncTimer) {\n asyncTimer = true;\n asyncSetTimer(asyncFlush, 0);\n }\n}\n\nfunction invokeResolver(resolver, promise) {\n function resolvePromise(value) {\n resolve(promise, value);\n }\n\n function rejectPromise(reason) {\n reject(promise, reason);\n }\n\n try {\n resolver(resolvePromise, rejectPromise);\n } catch (e) {\n rejectPromise(e);\n }\n}\n\nfunction invokeCallback(subscriber) {\n var owner = subscriber.owner;\n var settled = owner._state;\n var value = owner._data;\n var callback = subscriber[settled];\n var promise = subscriber.then;\n\n if (typeof callback === 'function') {\n settled = FULFILLED;\n\n try {\n value = callback(value);\n } catch (e) {\n reject(promise, e);\n }\n }\n\n if (!handleThenable(promise, value)) {\n if (settled === FULFILLED) {\n resolve(promise, value);\n }\n\n if (settled === REJECTED) {\n reject(promise, value);\n }\n }\n}\n\nfunction handleThenable(promise, value) {\n var resolved;\n\n try {\n if (promise === value) {\n throw new TypeError('A promises callback cannot return that same promise.');\n }\n\n if (value && (typeof value === 'function' || _typeof(value) === 'object')) {\n // then should be retrieved only once\n var then = value.then;\n\n if (typeof then === 'function') {\n then.call(value, function (val) {\n if (!resolved) {\n resolved = true;\n\n if (value === val) {\n fulfill(promise, val);\n } else {\n resolve(promise, val);\n }\n }\n }, function (reason) {\n if (!resolved) {\n resolved = true;\n reject(promise, reason);\n }\n });\n return true;\n }\n }\n } catch (e) {\n if (!resolved) {\n reject(promise, e);\n }\n\n return true;\n }\n\n return false;\n}\n\nfunction resolve(promise, value) {\n if (promise === value || !handleThenable(promise, value)) {\n fulfill(promise, value);\n }\n}\n\nfunction fulfill(promise, value) {\n if (promise._state === PENDING) {\n promise._state = SETTLED;\n promise._data = value;\n asyncCall(publishFulfillment, promise);\n }\n}\n\nfunction reject(promise, reason) {\n if (promise._state === PENDING) {\n promise._state = SETTLED;\n promise._data = reason;\n asyncCall(publishRejection, promise);\n }\n}\n\nfunction publish(promise) {\n promise._then = promise._then.forEach(invokeCallback);\n}\n\nfunction publishFulfillment(promise) {\n promise._state = FULFILLED;\n publish(promise);\n}\n\nfunction publishRejection(promise) {\n promise._state = REJECTED;\n publish(promise);\n\n if (!promise._handled && isNode) {\n global.process.emit('unhandledRejection', promise._data, promise);\n }\n}\n\nfunction notifyRejectionHandled(promise) {\n global.process.emit('rejectionHandled', promise);\n}\n/**\n * @class\n */\n\n\nfunction P(resolver) {\n if (typeof resolver !== 'function') {\n throw new TypeError('Promise resolver ' + resolver + ' is not a function');\n }\n\n if (this instanceof P === false) {\n throw new TypeError('Failed to construct \\'Promise\\': Please use the \\'new\\' operator, this object constructor cannot be called as a function.');\n }\n\n this._then = [];\n invokeResolver(resolver, this);\n}\n\nP.prototype = {\n constructor: P,\n _state: PENDING,\n _then: null,\n _data: undefined,\n _handled: false,\n then: function then(onFulfillment, onRejection) {\n var subscriber = {\n owner: this,\n then: new this.constructor(NOOP),\n fulfilled: onFulfillment,\n rejected: onRejection\n };\n\n if ((onRejection || onFulfillment) && !this._handled) {\n this._handled = true;\n\n if (this._state === REJECTED && isNode) {\n asyncCall(notifyRejectionHandled, this);\n }\n }\n\n if (this._state === FULFILLED || this._state === REJECTED) {\n // already resolved, call callback async\n asyncCall(invokeCallback, subscriber);\n } else {\n // subscribe\n this._then.push(subscriber);\n }\n\n return subscriber.then;\n },\n catch: function _catch(onRejection) {\n return this.then(null, onRejection);\n }\n};\n\nP.all = function (promises) {\n if (!Array.isArray(promises)) {\n throw new TypeError('You must pass an array to Promise.all().');\n }\n\n return new P(function (resolve, reject) {\n var results = [];\n var remaining = 0;\n\n function resolver(index) {\n remaining++;\n return function (value) {\n results[index] = value;\n\n if (! --remaining) {\n resolve(results);\n }\n };\n }\n\n for (var i = 0, promise; i < promises.length; i++) {\n promise = promises[i];\n\n if (promise && typeof promise.then === 'function') {\n promise.then(resolver(i), reject);\n } else {\n results[i] = promise;\n }\n }\n\n if (!remaining) {\n resolve(results);\n }\n });\n};\n\nP.race = function (promises) {\n if (!Array.isArray(promises)) {\n throw new TypeError('You must pass an array to Promise.race().');\n }\n\n return new P(function (resolve, reject) {\n for (var i = 0, promise; i < promises.length; i++) {\n promise = promises[i];\n\n if (promise && typeof promise.then === 'function') {\n promise.then(resolve, reject);\n } else {\n resolve(promise);\n }\n }\n });\n};\n\nP.resolve = function (value) {\n if (value && _typeof(value) === 'object' && value.constructor === P) {\n return value;\n }\n\n return new P(function (resolve) {\n resolve(value);\n });\n};\n\nP.reject = function (reason) {\n return new P(function (resolve, reject) {\n reject(reason);\n });\n};\n\nvar picked = typeof Promise === 'function' ? Promise : P;\n\nvar d = UNITS_IN_GRID;\nvar meaninglessTransform = {\n size: 16,\n x: 0,\n y: 0,\n rotate: 0,\n flipX: false,\n flipY: false\n};\n\nfunction isReserved(name) {\n return ~RESERVED_CLASSES.indexOf(name);\n}\nfunction insertCss(css) {\n if (!css || !IS_DOM) {\n return;\n }\n\n var style = DOCUMENT.createElement('style');\n style.setAttribute('type', 'text/css');\n style.innerHTML = css;\n var headChildren = DOCUMENT.head.childNodes;\n var beforeChild = null;\n\n for (var i = headChildren.length - 1; i > -1; i--) {\n var child = headChildren[i];\n var tagName = (child.tagName || '').toUpperCase();\n\n if (['STYLE', 'LINK'].indexOf(tagName) > -1) {\n beforeChild = child;\n }\n }\n\n DOCUMENT.head.insertBefore(style, beforeChild);\n return css;\n}\nvar idPool = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';\nfunction nextUniqueId() {\n var size = 12;\n var id = '';\n\n while (size-- > 0) {\n id += idPool[Math.random() * 62 | 0];\n }\n\n return id;\n}\nfunction toArray(obj) {\n var array = [];\n\n for (var i = (obj || []).length >>> 0; i--;) {\n array[i] = obj[i];\n }\n\n return array;\n}\nfunction classArray(node) {\n if (node.classList) {\n return toArray(node.classList);\n } else {\n return (node.getAttribute('class') || '').split(' ').filter(function (i) {\n return i;\n });\n }\n}\nfunction getIconName(familyPrefix, cls) {\n var parts = cls.split('-');\n var prefix = parts[0];\n var iconName = parts.slice(1).join('-');\n\n if (prefix === familyPrefix && iconName !== '' && !isReserved(iconName)) {\n return iconName;\n } else {\n return null;\n }\n}\nfunction htmlEscape(str) {\n return \"\".concat(str).replace(/&/g, '&').replace(/\"/g, '"').replace(/'/g, ''').replace(//g, '>');\n}\nfunction joinAttributes(attributes) {\n return Object.keys(attributes || {}).reduce(function (acc, attributeName) {\n return acc + \"\".concat(attributeName, \"=\\\"\").concat(htmlEscape(attributes[attributeName]), \"\\\" \");\n }, '').trim();\n}\nfunction joinStyles(styles) {\n return Object.keys(styles || {}).reduce(function (acc, styleName) {\n return acc + \"\".concat(styleName, \": \").concat(styles[styleName], \";\");\n }, '');\n}\nfunction transformIsMeaningful(transform) {\n return transform.size !== meaninglessTransform.size || transform.x !== meaninglessTransform.x || transform.y !== meaninglessTransform.y || transform.rotate !== meaninglessTransform.rotate || transform.flipX || transform.flipY;\n}\nfunction transformForSvg(_ref) {\n var transform = _ref.transform,\n containerWidth = _ref.containerWidth,\n iconWidth = _ref.iconWidth;\n var outer = {\n transform: \"translate(\".concat(containerWidth / 2, \" 256)\")\n };\n var innerTranslate = \"translate(\".concat(transform.x * 32, \", \").concat(transform.y * 32, \") \");\n var innerScale = \"scale(\".concat(transform.size / 16 * (transform.flipX ? -1 : 1), \", \").concat(transform.size / 16 * (transform.flipY ? -1 : 1), \") \");\n var innerRotate = \"rotate(\".concat(transform.rotate, \" 0 0)\");\n var inner = {\n transform: \"\".concat(innerTranslate, \" \").concat(innerScale, \" \").concat(innerRotate)\n };\n var path = {\n transform: \"translate(\".concat(iconWidth / 2 * -1, \" -256)\")\n };\n return {\n outer: outer,\n inner: inner,\n path: path\n };\n}\nfunction transformForCss(_ref2) {\n var transform = _ref2.transform,\n _ref2$width = _ref2.width,\n width = _ref2$width === void 0 ? UNITS_IN_GRID : _ref2$width,\n _ref2$height = _ref2.height,\n height = _ref2$height === void 0 ? UNITS_IN_GRID : _ref2$height,\n _ref2$startCentered = _ref2.startCentered,\n startCentered = _ref2$startCentered === void 0 ? false : _ref2$startCentered;\n var val = '';\n\n if (startCentered && IS_IE) {\n val += \"translate(\".concat(transform.x / d - width / 2, \"em, \").concat(transform.y / d - height / 2, \"em) \");\n } else if (startCentered) {\n val += \"translate(calc(-50% + \".concat(transform.x / d, \"em), calc(-50% + \").concat(transform.y / d, \"em)) \");\n } else {\n val += \"translate(\".concat(transform.x / d, \"em, \").concat(transform.y / d, \"em) \");\n }\n\n val += \"scale(\".concat(transform.size / d * (transform.flipX ? -1 : 1), \", \").concat(transform.size / d * (transform.flipY ? -1 : 1), \") \");\n val += \"rotate(\".concat(transform.rotate, \"deg) \");\n return val;\n}\n\nvar ALL_SPACE = {\n x: 0,\n y: 0,\n width: '100%',\n height: '100%'\n};\n\nfunction fillBlack(abstract) {\n var force = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n if (abstract.attributes && (abstract.attributes.fill || force)) {\n abstract.attributes.fill = 'black';\n }\n\n return abstract;\n}\n\nfunction deGroup(abstract) {\n if (abstract.tag === 'g') {\n return abstract.children;\n } else {\n return [abstract];\n }\n}\n\nfunction makeIconMasking (_ref) {\n var children = _ref.children,\n attributes = _ref.attributes,\n main = _ref.main,\n mask = _ref.mask,\n transform = _ref.transform;\n var mainWidth = main.width,\n mainPath = main.icon;\n var maskWidth = mask.width,\n maskPath = mask.icon;\n var trans = transformForSvg({\n transform: transform,\n containerWidth: maskWidth,\n iconWidth: mainWidth\n });\n var maskRect = {\n tag: 'rect',\n attributes: _objectSpread({}, ALL_SPACE, {\n fill: 'white'\n })\n };\n var maskInnerGroupChildrenMixin = mainPath.children ? {\n children: mainPath.children.map(fillBlack)\n } : {};\n var maskInnerGroup = {\n tag: 'g',\n attributes: _objectSpread({}, trans.inner),\n children: [fillBlack(_objectSpread({\n tag: mainPath.tag,\n attributes: _objectSpread({}, mainPath.attributes, trans.path)\n }, maskInnerGroupChildrenMixin))]\n };\n var maskOuterGroup = {\n tag: 'g',\n attributes: _objectSpread({}, trans.outer),\n children: [maskInnerGroup]\n };\n var maskId = \"mask-\".concat(nextUniqueId());\n var clipId = \"clip-\".concat(nextUniqueId());\n var maskTag = {\n tag: 'mask',\n attributes: _objectSpread({}, ALL_SPACE, {\n id: maskId,\n maskUnits: 'userSpaceOnUse',\n maskContentUnits: 'userSpaceOnUse'\n }),\n children: [maskRect, maskOuterGroup]\n };\n var defs = {\n tag: 'defs',\n children: [{\n tag: 'clipPath',\n attributes: {\n id: clipId\n },\n children: deGroup(maskPath)\n }, maskTag]\n };\n children.push(defs, {\n tag: 'rect',\n attributes: _objectSpread({\n fill: 'currentColor',\n 'clip-path': \"url(#\".concat(clipId, \")\"),\n mask: \"url(#\".concat(maskId, \")\")\n }, ALL_SPACE)\n });\n return {\n children: children,\n attributes: attributes\n };\n}\n\nfunction makeIconStandard (_ref) {\n var children = _ref.children,\n attributes = _ref.attributes,\n main = _ref.main,\n transform = _ref.transform,\n styles = _ref.styles;\n var styleString = joinStyles(styles);\n\n if (styleString.length > 0) {\n attributes['style'] = styleString;\n }\n\n if (transformIsMeaningful(transform)) {\n var trans = transformForSvg({\n transform: transform,\n containerWidth: main.width,\n iconWidth: main.width\n });\n children.push({\n tag: 'g',\n attributes: _objectSpread({}, trans.outer),\n children: [{\n tag: 'g',\n attributes: _objectSpread({}, trans.inner),\n children: [{\n tag: main.icon.tag,\n children: main.icon.children,\n attributes: _objectSpread({}, main.icon.attributes, trans.path)\n }]\n }]\n });\n } else {\n children.push(main.icon);\n }\n\n return {\n children: children,\n attributes: attributes\n };\n}\n\nfunction asIcon (_ref) {\n var children = _ref.children,\n main = _ref.main,\n mask = _ref.mask,\n attributes = _ref.attributes,\n styles = _ref.styles,\n transform = _ref.transform;\n\n if (transformIsMeaningful(transform) && main.found && !mask.found) {\n var width = main.width,\n height = main.height;\n var offset = {\n x: width / height / 2,\n y: 0.5\n };\n attributes['style'] = joinStyles(_objectSpread({}, styles, {\n 'transform-origin': \"\".concat(offset.x + transform.x / 16, \"em \").concat(offset.y + transform.y / 16, \"em\")\n }));\n }\n\n return [{\n tag: 'svg',\n attributes: attributes,\n children: children\n }];\n}\n\nfunction asSymbol (_ref) {\n var prefix = _ref.prefix,\n iconName = _ref.iconName,\n children = _ref.children,\n attributes = _ref.attributes,\n symbol = _ref.symbol;\n var id = symbol === true ? \"\".concat(prefix, \"-\").concat(config.familyPrefix, \"-\").concat(iconName) : symbol;\n return [{\n tag: 'svg',\n attributes: {\n style: 'display: none;'\n },\n children: [{\n tag: 'symbol',\n attributes: _objectSpread({}, attributes, {\n id: id\n }),\n children: children\n }]\n }];\n}\n\nfunction makeInlineSvgAbstract(params) {\n var _params$icons = params.icons,\n main = _params$icons.main,\n mask = _params$icons.mask,\n prefix = params.prefix,\n iconName = params.iconName,\n transform = params.transform,\n symbol = params.symbol,\n title = params.title,\n extra = params.extra,\n _params$watchable = params.watchable,\n watchable = _params$watchable === void 0 ? false : _params$watchable;\n\n var _ref = mask.found ? mask : main,\n width = _ref.width,\n height = _ref.height;\n\n var widthClass = \"fa-w-\".concat(Math.ceil(width / height * 16));\n var attrClass = [config.replacementClass, iconName ? \"\".concat(config.familyPrefix, \"-\").concat(iconName) : '', widthClass].filter(function (c) {\n return extra.classes.indexOf(c) === -1;\n }).concat(extra.classes).join(' ');\n var content = {\n children: [],\n attributes: _objectSpread({}, extra.attributes, {\n 'data-prefix': prefix,\n 'data-icon': iconName,\n 'class': attrClass,\n 'role': extra.attributes.role || 'img',\n 'xmlns': 'http://www.w3.org/2000/svg',\n 'viewBox': \"0 0 \".concat(width, \" \").concat(height)\n })\n };\n\n if (watchable) {\n content.attributes[DATA_FA_I2SVG] = '';\n }\n\n if (title) content.children.push({\n tag: 'title',\n attributes: {\n id: content.attributes['aria-labelledby'] || \"title-\".concat(nextUniqueId())\n },\n children: [title]\n });\n\n var args = _objectSpread({}, content, {\n prefix: prefix,\n iconName: iconName,\n main: main,\n mask: mask,\n transform: transform,\n symbol: symbol,\n styles: extra.styles\n });\n\n var _ref2 = mask.found && main.found ? makeIconMasking(args) : makeIconStandard(args),\n children = _ref2.children,\n attributes = _ref2.attributes;\n\n args.children = children;\n args.attributes = attributes;\n\n if (symbol) {\n return asSymbol(args);\n } else {\n return asIcon(args);\n }\n}\nfunction makeLayersTextAbstract(params) {\n var content = params.content,\n width = params.width,\n height = params.height,\n transform = params.transform,\n title = params.title,\n extra = params.extra,\n _params$watchable2 = params.watchable,\n watchable = _params$watchable2 === void 0 ? false : _params$watchable2;\n\n var attributes = _objectSpread({}, extra.attributes, title ? {\n 'title': title\n } : {}, {\n 'class': extra.classes.join(' ')\n });\n\n if (watchable) {\n attributes[DATA_FA_I2SVG] = '';\n }\n\n var styles = _objectSpread({}, extra.styles);\n\n if (transformIsMeaningful(transform)) {\n styles['transform'] = transformForCss({\n transform: transform,\n startCentered: true,\n width: width,\n height: height\n });\n styles['-webkit-transform'] = styles['transform'];\n }\n\n var styleString = joinStyles(styles);\n\n if (styleString.length > 0) {\n attributes['style'] = styleString;\n }\n\n var val = [];\n val.push({\n tag: 'span',\n attributes: attributes,\n children: [content]\n });\n\n if (title) {\n val.push({\n tag: 'span',\n attributes: {\n class: 'sr-only'\n },\n children: [title]\n });\n }\n\n return val;\n}\nfunction makeLayersCounterAbstract(params) {\n var content = params.content,\n title = params.title,\n extra = params.extra;\n\n var attributes = _objectSpread({}, extra.attributes, title ? {\n 'title': title\n } : {}, {\n 'class': extra.classes.join(' ')\n });\n\n var styleString = joinStyles(extra.styles);\n\n if (styleString.length > 0) {\n attributes['style'] = styleString;\n }\n\n var val = [];\n val.push({\n tag: 'span',\n attributes: attributes,\n children: [content]\n });\n\n if (title) {\n val.push({\n tag: 'span',\n attributes: {\n class: 'sr-only'\n },\n children: [title]\n });\n }\n\n return val;\n}\n\nvar noop$1 = function noop() {};\n\nvar p = config.measurePerformance && PERFORMANCE && PERFORMANCE.mark && PERFORMANCE.measure ? PERFORMANCE : {\n mark: noop$1,\n measure: noop$1\n};\nvar preamble = \"FA \\\"5.12.0\\\"\";\n\nvar begin = function begin(name) {\n p.mark(\"\".concat(preamble, \" \").concat(name, \" begins\"));\n return function () {\n return end(name);\n };\n};\n\nvar end = function end(name) {\n p.mark(\"\".concat(preamble, \" \").concat(name, \" ends\"));\n p.measure(\"\".concat(preamble, \" \").concat(name), \"\".concat(preamble, \" \").concat(name, \" begins\"), \"\".concat(preamble, \" \").concat(name, \" ends\"));\n};\n\nvar perf = {\n begin: begin,\n end: end\n};\n\n/**\n * Internal helper to bind a function known to have 4 arguments\n * to a given context.\n */\n\nvar bindInternal4 = function bindInternal4(func, thisContext) {\n return function (a, b, c, d) {\n return func.call(thisContext, a, b, c, d);\n };\n};\n\n/**\n * # Reduce\n *\n * A fast object `.reduce()` implementation.\n *\n * @param {Object} subject The object to reduce over.\n * @param {Function} fn The reducer function.\n * @param {mixed} initialValue The initial value for the reducer, defaults to subject[0].\n * @param {Object} thisContext The context for the reducer.\n * @return {mixed} The final result.\n */\n\n\nvar reduce = function fastReduceObject(subject, fn, initialValue, thisContext) {\n var keys = Object.keys(subject),\n length = keys.length,\n iterator = thisContext !== undefined ? bindInternal4(fn, thisContext) : fn,\n i,\n key,\n result;\n\n if (initialValue === undefined) {\n i = 1;\n result = subject[keys[0]];\n } else {\n i = 0;\n result = initialValue;\n }\n\n for (; i < length; i++) {\n key = keys[i];\n result = iterator(result, subject[key], key, subject);\n }\n\n return result;\n};\n\nfunction toHex(unicode) {\n var result = '';\n\n for (var i = 0; i < unicode.length; i++) {\n var hex = unicode.charCodeAt(i).toString(16);\n result += ('000' + hex).slice(-4);\n }\n\n return result;\n}\n\nfunction defineIcons(prefix, icons) {\n var params = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var _params$skipHooks = params.skipHooks,\n skipHooks = _params$skipHooks === void 0 ? false : _params$skipHooks;\n var normalized = Object.keys(icons).reduce(function (acc, iconName) {\n var icon = icons[iconName];\n var expanded = !!icon.icon;\n\n if (expanded) {\n acc[icon.iconName] = icon.icon;\n } else {\n acc[iconName] = icon;\n }\n\n return acc;\n }, {});\n\n if (typeof namespace.hooks.addPack === 'function' && !skipHooks) {\n namespace.hooks.addPack(prefix, normalized);\n } else {\n namespace.styles[prefix] = _objectSpread({}, namespace.styles[prefix] || {}, normalized);\n }\n /**\n * Font Awesome 4 used the prefix of `fa` for all icons. With the introduction\n * of new styles we needed to differentiate between them. Prefix `fa` is now an alias\n * for `fas` so we'll easy the upgrade process for our users by automatically defining\n * this as well.\n */\n\n\n if (prefix === 'fas') {\n defineIcons('fa', icons);\n }\n}\n\nvar styles = namespace.styles,\n shims = namespace.shims;\nvar _byUnicode = {};\nvar _byLigature = {};\nvar _byOldName = {};\nvar build = function build() {\n var lookup = function lookup(reducer) {\n return reduce(styles, function (o, style, prefix) {\n o[prefix] = reduce(style, reducer, {});\n return o;\n }, {});\n };\n\n _byUnicode = lookup(function (acc, icon, iconName) {\n if (icon[3]) {\n acc[icon[3]] = iconName;\n }\n\n return acc;\n });\n _byLigature = lookup(function (acc, icon, iconName) {\n var ligatures = icon[2];\n acc[iconName] = iconName;\n ligatures.forEach(function (ligature) {\n acc[ligature] = iconName;\n });\n return acc;\n });\n var hasRegular = 'far' in styles;\n _byOldName = reduce(shims, function (acc, shim) {\n var oldName = shim[0];\n var prefix = shim[1];\n var iconName = shim[2];\n\n if (prefix === 'far' && !hasRegular) {\n prefix = 'fas';\n }\n\n acc[oldName] = {\n prefix: prefix,\n iconName: iconName\n };\n return acc;\n }, {});\n};\nbuild();\nfunction byUnicode(prefix, unicode) {\n return (_byUnicode[prefix] || {})[unicode];\n}\nfunction byLigature(prefix, ligature) {\n return (_byLigature[prefix] || {})[ligature];\n}\nfunction byOldName(name) {\n return _byOldName[name] || {\n prefix: null,\n iconName: null\n };\n}\n\nvar styles$1 = namespace.styles;\nvar emptyCanonicalIcon = function emptyCanonicalIcon() {\n return {\n prefix: null,\n iconName: null,\n rest: []\n };\n};\nfunction getCanonicalIcon(values) {\n return values.reduce(function (acc, cls) {\n var iconName = getIconName(config.familyPrefix, cls);\n\n if (styles$1[cls]) {\n acc.prefix = cls;\n } else if (config.autoFetchSvg && ['fas', 'far', 'fal', 'fad', 'fab', 'fa'].indexOf(cls) > -1) {\n acc.prefix = cls;\n } else if (iconName) {\n var shim = acc.prefix === 'fa' ? byOldName(iconName) : {};\n acc.iconName = shim.iconName || iconName;\n acc.prefix = shim.prefix || acc.prefix;\n } else if (cls !== config.replacementClass && cls.indexOf('fa-w-') !== 0) {\n acc.rest.push(cls);\n }\n\n return acc;\n }, emptyCanonicalIcon());\n}\nfunction iconFromMapping(mapping, prefix, iconName) {\n if (mapping && mapping[prefix] && mapping[prefix][iconName]) {\n return {\n prefix: prefix,\n iconName: iconName,\n icon: mapping[prefix][iconName]\n };\n }\n}\n\nfunction toHtml(abstractNodes) {\n var tag = abstractNodes.tag,\n _abstractNodes$attrib = abstractNodes.attributes,\n attributes = _abstractNodes$attrib === void 0 ? {} : _abstractNodes$attrib,\n _abstractNodes$childr = abstractNodes.children,\n children = _abstractNodes$childr === void 0 ? [] : _abstractNodes$childr;\n\n if (typeof abstractNodes === 'string') {\n return htmlEscape(abstractNodes);\n } else {\n return \"<\".concat(tag, \" \").concat(joinAttributes(attributes), \">\").concat(children.map(toHtml).join(''), \"\");\n }\n}\n\nvar noop$2 = function noop() {};\n\nfunction isWatched(node) {\n var i2svg = node.getAttribute ? node.getAttribute(DATA_FA_I2SVG) : null;\n return typeof i2svg === 'string';\n}\n\nfunction getMutator() {\n if (config.autoReplaceSvg === true) {\n return mutators.replace;\n }\n\n var mutator = mutators[config.autoReplaceSvg];\n return mutator || mutators.replace;\n}\n\nvar mutators = {\n replace: function replace(mutation) {\n var node = mutation[0];\n var abstract = mutation[1];\n var newOuterHTML = abstract.map(function (a) {\n return toHtml(a);\n }).join('\\n');\n\n if (node.parentNode && node.outerHTML) {\n node.outerHTML = newOuterHTML + (config.keepOriginalSource && node.tagName.toLowerCase() !== 'svg' ? \"\") : '');\n } else if (node.parentNode) {\n var newNode = document.createElement('span');\n node.parentNode.replaceChild(newNode, node);\n newNode.outerHTML = newOuterHTML;\n }\n },\n nest: function nest(mutation) {\n var node = mutation[0];\n var abstract = mutation[1]; // If we already have a replaced node we do not want to continue nesting within it.\n // Short-circuit to the standard replacement\n\n if (~classArray(node).indexOf(config.replacementClass)) {\n return mutators.replace(mutation);\n }\n\n var forSvg = new RegExp(\"\".concat(config.familyPrefix, \"-.*\"));\n delete abstract[0].attributes.style;\n delete abstract[0].attributes.id;\n var splitClasses = abstract[0].attributes.class.split(' ').reduce(function (acc, cls) {\n if (cls === config.replacementClass || cls.match(forSvg)) {\n acc.toSvg.push(cls);\n } else {\n acc.toNode.push(cls);\n }\n\n return acc;\n }, {\n toNode: [],\n toSvg: []\n });\n abstract[0].attributes.class = splitClasses.toSvg.join(' ');\n var newInnerHTML = abstract.map(function (a) {\n return toHtml(a);\n }).join('\\n');\n node.setAttribute('class', splitClasses.toNode.join(' '));\n node.setAttribute(DATA_FA_I2SVG, '');\n node.innerHTML = newInnerHTML;\n }\n};\n\nfunction performOperationSync(op) {\n op();\n}\n\nfunction perform(mutations, callback) {\n var callbackFunction = typeof callback === 'function' ? callback : noop$2;\n\n if (mutations.length === 0) {\n callbackFunction();\n } else {\n var frame = performOperationSync;\n\n if (config.mutateApproach === MUTATION_APPROACH_ASYNC) {\n frame = WINDOW.requestAnimationFrame || performOperationSync;\n }\n\n frame(function () {\n var mutator = getMutator();\n var mark = perf.begin('mutate');\n mutations.map(mutator);\n mark();\n callbackFunction();\n });\n }\n}\nvar disabled = false;\nfunction disableObservation() {\n disabled = true;\n}\nfunction enableObservation() {\n disabled = false;\n}\nvar mo = null;\nfunction observe(options) {\n if (!MUTATION_OBSERVER) {\n return;\n }\n\n if (!config.observeMutations) {\n return;\n }\n\n var treeCallback = options.treeCallback,\n nodeCallback = options.nodeCallback,\n pseudoElementsCallback = options.pseudoElementsCallback,\n _options$observeMutat = options.observeMutationsRoot,\n observeMutationsRoot = _options$observeMutat === void 0 ? DOCUMENT : _options$observeMutat;\n mo = new MUTATION_OBSERVER(function (objects) {\n if (disabled) return;\n toArray(objects).forEach(function (mutationRecord) {\n if (mutationRecord.type === 'childList' && mutationRecord.addedNodes.length > 0 && !isWatched(mutationRecord.addedNodes[0])) {\n if (config.searchPseudoElements) {\n pseudoElementsCallback(mutationRecord.target);\n }\n\n treeCallback(mutationRecord.target);\n }\n\n if (mutationRecord.type === 'attributes' && mutationRecord.target.parentNode && config.searchPseudoElements) {\n pseudoElementsCallback(mutationRecord.target.parentNode);\n }\n\n if (mutationRecord.type === 'attributes' && isWatched(mutationRecord.target) && ~ATTRIBUTES_WATCHED_FOR_MUTATION.indexOf(mutationRecord.attributeName)) {\n if (mutationRecord.attributeName === 'class') {\n var _getCanonicalIcon = getCanonicalIcon(classArray(mutationRecord.target)),\n prefix = _getCanonicalIcon.prefix,\n iconName = _getCanonicalIcon.iconName;\n\n if (prefix) mutationRecord.target.setAttribute('data-prefix', prefix);\n if (iconName) mutationRecord.target.setAttribute('data-icon', iconName);\n } else {\n nodeCallback(mutationRecord.target);\n }\n }\n });\n });\n if (!IS_DOM) return;\n mo.observe(observeMutationsRoot, {\n childList: true,\n attributes: true,\n characterData: true,\n subtree: true\n });\n}\nfunction disconnect() {\n if (!mo) return;\n mo.disconnect();\n}\n\nfunction styleParser (node) {\n var style = node.getAttribute('style');\n var val = [];\n\n if (style) {\n val = style.split(';').reduce(function (acc, style) {\n var styles = style.split(':');\n var prop = styles[0];\n var value = styles.slice(1);\n\n if (prop && value.length > 0) {\n acc[prop] = value.join(':').trim();\n }\n\n return acc;\n }, {});\n }\n\n return val;\n}\n\nfunction classParser (node) {\n var existingPrefix = node.getAttribute('data-prefix');\n var existingIconName = node.getAttribute('data-icon');\n var innerText = node.innerText !== undefined ? node.innerText.trim() : '';\n var val = getCanonicalIcon(classArray(node));\n\n if (existingPrefix && existingIconName) {\n val.prefix = existingPrefix;\n val.iconName = existingIconName;\n }\n\n if (val.prefix && innerText.length > 1) {\n val.iconName = byLigature(val.prefix, node.innerText);\n } else if (val.prefix && innerText.length === 1) {\n val.iconName = byUnicode(val.prefix, toHex(node.innerText));\n }\n\n return val;\n}\n\nvar parseTransformString = function parseTransformString(transformString) {\n var transform = {\n size: 16,\n x: 0,\n y: 0,\n flipX: false,\n flipY: false,\n rotate: 0\n };\n\n if (!transformString) {\n return transform;\n } else {\n return transformString.toLowerCase().split(' ').reduce(function (acc, n) {\n var parts = n.toLowerCase().split('-');\n var first = parts[0];\n var rest = parts.slice(1).join('-');\n\n if (first && rest === 'h') {\n acc.flipX = true;\n return acc;\n }\n\n if (first && rest === 'v') {\n acc.flipY = true;\n return acc;\n }\n\n rest = parseFloat(rest);\n\n if (isNaN(rest)) {\n return acc;\n }\n\n switch (first) {\n case 'grow':\n acc.size = acc.size + rest;\n break;\n\n case 'shrink':\n acc.size = acc.size - rest;\n break;\n\n case 'left':\n acc.x = acc.x - rest;\n break;\n\n case 'right':\n acc.x = acc.x + rest;\n break;\n\n case 'up':\n acc.y = acc.y - rest;\n break;\n\n case 'down':\n acc.y = acc.y + rest;\n break;\n\n case 'rotate':\n acc.rotate = acc.rotate + rest;\n break;\n }\n\n return acc;\n }, transform);\n }\n};\nfunction transformParser (node) {\n return parseTransformString(node.getAttribute('data-fa-transform'));\n}\n\nfunction symbolParser (node) {\n var symbol = node.getAttribute('data-fa-symbol');\n return symbol === null ? false : symbol === '' ? true : symbol;\n}\n\nfunction attributesParser (node) {\n var extraAttributes = toArray(node.attributes).reduce(function (acc, attr) {\n if (acc.name !== 'class' && acc.name !== 'style') {\n acc[attr.name] = attr.value;\n }\n\n return acc;\n }, {});\n var title = node.getAttribute('title');\n\n if (config.autoA11y) {\n if (title) {\n extraAttributes['aria-labelledby'] = \"\".concat(config.replacementClass, \"-title-\").concat(nextUniqueId());\n } else {\n extraAttributes['aria-hidden'] = 'true';\n extraAttributes['focusable'] = 'false';\n }\n }\n\n return extraAttributes;\n}\n\nfunction maskParser (node) {\n var mask = node.getAttribute('data-fa-mask');\n\n if (!mask) {\n return emptyCanonicalIcon();\n } else {\n return getCanonicalIcon(mask.split(' ').map(function (i) {\n return i.trim();\n }));\n }\n}\n\nfunction blankMeta() {\n return {\n iconName: null,\n title: null,\n prefix: null,\n transform: meaninglessTransform,\n symbol: false,\n mask: null,\n extra: {\n classes: [],\n styles: {},\n attributes: {}\n }\n };\n}\nfunction parseMeta(node) {\n var _classParser = classParser(node),\n iconName = _classParser.iconName,\n prefix = _classParser.prefix,\n extraClasses = _classParser.rest;\n\n var extraStyles = styleParser(node);\n var transform = transformParser(node);\n var symbol = symbolParser(node);\n var extraAttributes = attributesParser(node);\n var mask = maskParser(node);\n return {\n iconName: iconName,\n title: node.getAttribute('title'),\n prefix: prefix,\n transform: transform,\n symbol: symbol,\n mask: mask,\n extra: {\n classes: extraClasses,\n styles: extraStyles,\n attributes: extraAttributes\n }\n };\n}\n\nfunction MissingIcon(error) {\n this.name = 'MissingIcon';\n this.message = error || 'Icon unavailable';\n this.stack = new Error().stack;\n}\nMissingIcon.prototype = Object.create(Error.prototype);\nMissingIcon.prototype.constructor = MissingIcon;\n\nvar FILL = {\n fill: 'currentColor'\n};\nvar ANIMATION_BASE = {\n attributeType: 'XML',\n repeatCount: 'indefinite',\n dur: '2s'\n};\nvar RING = {\n tag: 'path',\n attributes: _objectSpread({}, FILL, {\n d: 'M156.5,447.7l-12.6,29.5c-18.7-9.5-35.9-21.2-51.5-34.9l22.7-22.7C127.6,430.5,141.5,440,156.5,447.7z M40.6,272H8.5 c1.4,21.2,5.4,41.7,11.7,61.1L50,321.2C45.1,305.5,41.8,289,40.6,272z M40.6,240c1.4-18.8,5.2-37,11.1-54.1l-29.5-12.6 C14.7,194.3,10,216.7,8.5,240H40.6z M64.3,156.5c7.8-14.9,17.2-28.8,28.1-41.5L69.7,92.3c-13.7,15.6-25.5,32.8-34.9,51.5 L64.3,156.5z M397,419.6c-13.9,12-29.4,22.3-46.1,30.4l11.9,29.8c20.7-9.9,39.8-22.6,56.9-37.6L397,419.6z M115,92.4 c13.9-12,29.4-22.3,46.1-30.4l-11.9-29.8c-20.7,9.9-39.8,22.6-56.8,37.6L115,92.4z M447.7,355.5c-7.8,14.9-17.2,28.8-28.1,41.5 l22.7,22.7c13.7-15.6,25.5-32.9,34.9-51.5L447.7,355.5z M471.4,272c-1.4,18.8-5.2,37-11.1,54.1l29.5,12.6 c7.5-21.1,12.2-43.5,13.6-66.8H471.4z M321.2,462c-15.7,5-32.2,8.2-49.2,9.4v32.1c21.2-1.4,41.7-5.4,61.1-11.7L321.2,462z M240,471.4c-18.8-1.4-37-5.2-54.1-11.1l-12.6,29.5c21.1,7.5,43.5,12.2,66.8,13.6V471.4z M462,190.8c5,15.7,8.2,32.2,9.4,49.2h32.1 c-1.4-21.2-5.4-41.7-11.7-61.1L462,190.8z M92.4,397c-12-13.9-22.3-29.4-30.4-46.1l-29.8,11.9c9.9,20.7,22.6,39.8,37.6,56.9 L92.4,397z M272,40.6c18.8,1.4,36.9,5.2,54.1,11.1l12.6-29.5C317.7,14.7,295.3,10,272,8.5V40.6z M190.8,50 c15.7-5,32.2-8.2,49.2-9.4V8.5c-21.2,1.4-41.7,5.4-61.1,11.7L190.8,50z M442.3,92.3L419.6,115c12,13.9,22.3,29.4,30.5,46.1 l29.8-11.9C470,128.5,457.3,109.4,442.3,92.3z M397,92.4l22.7-22.7c-15.6-13.7-32.8-25.5-51.5-34.9l-12.6,29.5 C370.4,72.1,384.4,81.5,397,92.4z'\n })\n};\n\nvar OPACITY_ANIMATE = _objectSpread({}, ANIMATION_BASE, {\n attributeName: 'opacity'\n});\n\nvar DOT = {\n tag: 'circle',\n attributes: _objectSpread({}, FILL, {\n cx: '256',\n cy: '364',\n r: '28'\n }),\n children: [{\n tag: 'animate',\n attributes: _objectSpread({}, ANIMATION_BASE, {\n attributeName: 'r',\n values: '28;14;28;28;14;28;'\n })\n }, {\n tag: 'animate',\n attributes: _objectSpread({}, OPACITY_ANIMATE, {\n values: '1;0;1;1;0;1;'\n })\n }]\n};\nvar QUESTION = {\n tag: 'path',\n attributes: _objectSpread({}, FILL, {\n opacity: '1',\n d: 'M263.7,312h-16c-6.6,0-12-5.4-12-12c0-71,77.4-63.9,77.4-107.8c0-20-17.8-40.2-57.4-40.2c-29.1,0-44.3,9.6-59.2,28.7 c-3.9,5-11.1,6-16.2,2.4l-13.1-9.2c-5.6-3.9-6.9-11.8-2.6-17.2c21.2-27.2,46.4-44.7,91.2-44.7c52.3,0,97.4,29.8,97.4,80.2 c0,67.6-77.4,63.5-77.4,107.8C275.7,306.6,270.3,312,263.7,312z'\n }),\n children: [{\n tag: 'animate',\n attributes: _objectSpread({}, OPACITY_ANIMATE, {\n values: '1;0;0;0;0;1;'\n })\n }]\n};\nvar EXCLAMATION = {\n tag: 'path',\n attributes: _objectSpread({}, FILL, {\n opacity: '0',\n d: 'M232.5,134.5l7,168c0.3,6.4,5.6,11.5,12,11.5h9c6.4,0,11.7-5.1,12-11.5l7-168c0.3-6.8-5.2-12.5-12-12.5h-23 C237.7,122,232.2,127.7,232.5,134.5z'\n }),\n children: [{\n tag: 'animate',\n attributes: _objectSpread({}, OPACITY_ANIMATE, {\n values: '0;0;1;1;0;0;'\n })\n }]\n};\nvar missing = {\n tag: 'g',\n children: [RING, DOT, QUESTION, EXCLAMATION]\n};\n\nvar styles$2 = namespace.styles;\nfunction asFoundIcon(icon) {\n var width = icon[0];\n var height = icon[1];\n\n var _icon$slice = icon.slice(4),\n _icon$slice2 = _slicedToArray(_icon$slice, 1),\n vectorData = _icon$slice2[0];\n\n var element = null;\n\n if (Array.isArray(vectorData)) {\n element = {\n tag: 'g',\n attributes: {\n class: \"\".concat(config.familyPrefix, \"-\").concat(DUOTONE_CLASSES.GROUP)\n },\n children: [{\n tag: 'path',\n attributes: {\n class: \"\".concat(config.familyPrefix, \"-\").concat(DUOTONE_CLASSES.SECONDARY),\n fill: 'currentColor',\n d: vectorData[0]\n }\n }, {\n tag: 'path',\n attributes: {\n class: \"\".concat(config.familyPrefix, \"-\").concat(DUOTONE_CLASSES.PRIMARY),\n fill: 'currentColor',\n d: vectorData[1]\n }\n }]\n };\n } else {\n element = {\n tag: 'path',\n attributes: {\n fill: 'currentColor',\n d: vectorData\n }\n };\n }\n\n return {\n found: true,\n width: width,\n height: height,\n icon: element\n };\n}\nfunction findIcon(iconName, prefix) {\n return new picked(function (resolve, reject) {\n var val = {\n found: false,\n width: 512,\n height: 512,\n icon: missing\n };\n\n if (iconName && prefix && styles$2[prefix] && styles$2[prefix][iconName]) {\n var icon = styles$2[prefix][iconName];\n return resolve(asFoundIcon(icon));\n }\n\n var headers = {};\n\n if (_typeof(WINDOW.FontAwesomeKitConfig) === 'object' && typeof window.FontAwesomeKitConfig.token === 'string') {\n headers['fa-kit-token'] = WINDOW.FontAwesomeKitConfig.token;\n }\n\n if (iconName && prefix && !config.showMissingIcons) {\n reject(new MissingIcon(\"Icon is missing for prefix \".concat(prefix, \" with icon name \").concat(iconName)));\n } else {\n resolve(val);\n }\n });\n}\n\nvar styles$3 = namespace.styles;\n\nfunction generateSvgReplacementMutation(node, nodeMeta) {\n var iconName = nodeMeta.iconName,\n title = nodeMeta.title,\n prefix = nodeMeta.prefix,\n transform = nodeMeta.transform,\n symbol = nodeMeta.symbol,\n mask = nodeMeta.mask,\n extra = nodeMeta.extra;\n return new picked(function (resolve, reject) {\n picked.all([findIcon(iconName, prefix), findIcon(mask.iconName, mask.prefix)]).then(function (_ref) {\n var _ref2 = _slicedToArray(_ref, 2),\n main = _ref2[0],\n mask = _ref2[1];\n\n resolve([node, makeInlineSvgAbstract({\n icons: {\n main: main,\n mask: mask\n },\n prefix: prefix,\n iconName: iconName,\n transform: transform,\n symbol: symbol,\n mask: mask,\n title: title,\n extra: extra,\n watchable: true\n })]);\n });\n });\n}\n\nfunction generateLayersText(node, nodeMeta) {\n var title = nodeMeta.title,\n transform = nodeMeta.transform,\n extra = nodeMeta.extra;\n var width = null;\n var height = null;\n\n if (IS_IE) {\n var computedFontSize = parseInt(getComputedStyle(node).fontSize, 10);\n var boundingClientRect = node.getBoundingClientRect();\n width = boundingClientRect.width / computedFontSize;\n height = boundingClientRect.height / computedFontSize;\n }\n\n if (config.autoA11y && !title) {\n extra.attributes['aria-hidden'] = 'true';\n }\n\n return picked.resolve([node, makeLayersTextAbstract({\n content: node.innerHTML,\n width: width,\n height: height,\n transform: transform,\n title: title,\n extra: extra,\n watchable: true\n })]);\n}\n\nfunction generateMutation(node) {\n var nodeMeta = parseMeta(node);\n\n if (~nodeMeta.extra.classes.indexOf(LAYERS_TEXT_CLASSNAME)) {\n return generateLayersText(node, nodeMeta);\n } else {\n return generateSvgReplacementMutation(node, nodeMeta);\n }\n}\n\nfunction onTree(root) {\n var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n if (!IS_DOM) return;\n var htmlClassList = DOCUMENT.documentElement.classList;\n\n var hclAdd = function hclAdd(suffix) {\n return htmlClassList.add(\"\".concat(HTML_CLASS_I2SVG_BASE_CLASS, \"-\").concat(suffix));\n };\n\n var hclRemove = function hclRemove(suffix) {\n return htmlClassList.remove(\"\".concat(HTML_CLASS_I2SVG_BASE_CLASS, \"-\").concat(suffix));\n };\n\n var prefixes = config.autoFetchSvg ? Object.keys(PREFIX_TO_STYLE) : Object.keys(styles$3);\n var prefixesDomQuery = [\".\".concat(LAYERS_TEXT_CLASSNAME, \":not([\").concat(DATA_FA_I2SVG, \"])\")].concat(prefixes.map(function (p) {\n return \".\".concat(p, \":not([\").concat(DATA_FA_I2SVG, \"])\");\n })).join(', ');\n\n if (prefixesDomQuery.length === 0) {\n return;\n }\n\n var candidates = [];\n\n try {\n candidates = toArray(root.querySelectorAll(prefixesDomQuery));\n } catch (e) {// noop\n }\n\n if (candidates.length > 0) {\n hclAdd('pending');\n hclRemove('complete');\n } else {\n return;\n }\n\n var mark = perf.begin('onTree');\n var mutations = candidates.reduce(function (acc, node) {\n try {\n var mutation = generateMutation(node);\n\n if (mutation) {\n acc.push(mutation);\n }\n } catch (e) {\n if (!PRODUCTION) {\n if (e instanceof MissingIcon) {\n console.error(e);\n }\n }\n }\n\n return acc;\n }, []);\n return new picked(function (resolve, reject) {\n picked.all(mutations).then(function (resolvedMutations) {\n perform(resolvedMutations, function () {\n hclAdd('active');\n hclAdd('complete');\n hclRemove('pending');\n if (typeof callback === 'function') callback();\n mark();\n resolve();\n });\n }).catch(function () {\n mark();\n reject();\n });\n });\n}\nfunction onNode(node) {\n var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n generateMutation(node).then(function (mutation) {\n if (mutation) {\n perform([mutation], callback);\n }\n });\n}\n\nfunction replaceForPosition(node, position) {\n var pendingAttribute = \"\".concat(DATA_FA_PSEUDO_ELEMENT_PENDING).concat(position.replace(':', '-'));\n return new picked(function (resolve, reject) {\n if (node.getAttribute(pendingAttribute) !== null) {\n // This node is already being processed\n return resolve();\n }\n\n var children = toArray(node.children);\n var alreadyProcessedPseudoElement = children.filter(function (c) {\n return c.getAttribute(DATA_FA_PSEUDO_ELEMENT) === position;\n })[0];\n var styles = WINDOW.getComputedStyle(node, position);\n var fontFamily = styles.getPropertyValue('font-family').match(FONT_FAMILY_PATTERN);\n var fontWeight = styles.getPropertyValue('font-weight');\n\n if (alreadyProcessedPseudoElement && !fontFamily) {\n // If we've already processed it but the current computed style does not result in a font-family,\n // that probably means that a class name that was previously present to make the icon has been\n // removed. So we now should delete the icon.\n node.removeChild(alreadyProcessedPseudoElement);\n return resolve();\n } else if (fontFamily) {\n var content = styles.getPropertyValue('content');\n var prefix = ~['Solid', 'Regular', 'Light', 'Duotone', 'Brands'].indexOf(fontFamily[1]) ? STYLE_TO_PREFIX[fontFamily[1].toLowerCase()] : FONT_WEIGHT_TO_PREFIX[fontWeight];\n var hexValue = toHex(content.length === 3 ? content.substr(1, 1) : content);\n var iconName = byUnicode(prefix, hexValue);\n var iconIdentifier = iconName; // Only convert the pseudo element in this :before/:after position into an icon if we haven't\n // already done so with the same prefix and iconName\n\n if (iconName && (!alreadyProcessedPseudoElement || alreadyProcessedPseudoElement.getAttribute(DATA_PREFIX) !== prefix || alreadyProcessedPseudoElement.getAttribute(DATA_ICON) !== iconIdentifier)) {\n node.setAttribute(pendingAttribute, iconIdentifier);\n\n if (alreadyProcessedPseudoElement) {\n // Delete the old one, since we're replacing it with a new one\n node.removeChild(alreadyProcessedPseudoElement);\n }\n\n var meta = blankMeta();\n var extra = meta.extra;\n extra.attributes[DATA_FA_PSEUDO_ELEMENT] = position;\n findIcon(iconName, prefix).then(function (main) {\n var abstract = makeInlineSvgAbstract(_objectSpread({}, meta, {\n icons: {\n main: main,\n mask: emptyCanonicalIcon()\n },\n prefix: prefix,\n iconName: iconIdentifier,\n extra: extra,\n watchable: true\n }));\n var element = DOCUMENT.createElement('svg');\n\n if (position === ':before') {\n node.insertBefore(element, node.firstChild);\n } else {\n node.appendChild(element);\n }\n\n element.outerHTML = abstract.map(function (a) {\n return toHtml(a);\n }).join('\\n');\n node.removeAttribute(pendingAttribute);\n resolve();\n }).catch(reject);\n } else {\n resolve();\n }\n } else {\n resolve();\n }\n });\n}\n\nfunction replace(node) {\n return picked.all([replaceForPosition(node, ':before'), replaceForPosition(node, ':after')]);\n}\n\nfunction processable(node) {\n return node.parentNode !== document.head && !~TAGNAMES_TO_SKIP_FOR_PSEUDOELEMENTS.indexOf(node.tagName.toUpperCase()) && !node.getAttribute(DATA_FA_PSEUDO_ELEMENT) && (!node.parentNode || node.parentNode.tagName !== 'svg');\n}\n\nfunction searchPseudoElements (root) {\n if (!IS_DOM) return;\n return new picked(function (resolve, reject) {\n var operations = toArray(root.querySelectorAll('*')).filter(processable).map(replace);\n var end = perf.begin('searchPseudoElements');\n disableObservation();\n picked.all(operations).then(function () {\n end();\n enableObservation();\n resolve();\n }).catch(function () {\n end();\n enableObservation();\n reject();\n });\n });\n}\n\nvar baseStyles = \"svg:not(:root).svg-inline--fa {\\n overflow: visible;\\n}\\n\\n.svg-inline--fa {\\n display: inline-block;\\n font-size: inherit;\\n height: 1em;\\n overflow: visible;\\n vertical-align: -0.125em;\\n}\\n.svg-inline--fa.fa-lg {\\n vertical-align: -0.225em;\\n}\\n.svg-inline--fa.fa-w-1 {\\n width: 0.0625em;\\n}\\n.svg-inline--fa.fa-w-2 {\\n width: 0.125em;\\n}\\n.svg-inline--fa.fa-w-3 {\\n width: 0.1875em;\\n}\\n.svg-inline--fa.fa-w-4 {\\n width: 0.25em;\\n}\\n.svg-inline--fa.fa-w-5 {\\n width: 0.3125em;\\n}\\n.svg-inline--fa.fa-w-6 {\\n width: 0.375em;\\n}\\n.svg-inline--fa.fa-w-7 {\\n width: 0.4375em;\\n}\\n.svg-inline--fa.fa-w-8 {\\n width: 0.5em;\\n}\\n.svg-inline--fa.fa-w-9 {\\n width: 0.5625em;\\n}\\n.svg-inline--fa.fa-w-10 {\\n width: 0.625em;\\n}\\n.svg-inline--fa.fa-w-11 {\\n width: 0.6875em;\\n}\\n.svg-inline--fa.fa-w-12 {\\n width: 0.75em;\\n}\\n.svg-inline--fa.fa-w-13 {\\n width: 0.8125em;\\n}\\n.svg-inline--fa.fa-w-14 {\\n width: 0.875em;\\n}\\n.svg-inline--fa.fa-w-15 {\\n width: 0.9375em;\\n}\\n.svg-inline--fa.fa-w-16 {\\n width: 1em;\\n}\\n.svg-inline--fa.fa-w-17 {\\n width: 1.0625em;\\n}\\n.svg-inline--fa.fa-w-18 {\\n width: 1.125em;\\n}\\n.svg-inline--fa.fa-w-19 {\\n width: 1.1875em;\\n}\\n.svg-inline--fa.fa-w-20 {\\n width: 1.25em;\\n}\\n.svg-inline--fa.fa-pull-left {\\n margin-right: 0.3em;\\n width: auto;\\n}\\n.svg-inline--fa.fa-pull-right {\\n margin-left: 0.3em;\\n width: auto;\\n}\\n.svg-inline--fa.fa-border {\\n height: 1.5em;\\n}\\n.svg-inline--fa.fa-li {\\n width: 2em;\\n}\\n.svg-inline--fa.fa-fw {\\n width: 1.25em;\\n}\\n\\n.fa-layers svg.svg-inline--fa {\\n bottom: 0;\\n left: 0;\\n margin: auto;\\n position: absolute;\\n right: 0;\\n top: 0;\\n}\\n\\n.fa-layers {\\n display: inline-block;\\n height: 1em;\\n position: relative;\\n text-align: center;\\n vertical-align: -0.125em;\\n width: 1em;\\n}\\n.fa-layers svg.svg-inline--fa {\\n -webkit-transform-origin: center center;\\n transform-origin: center center;\\n}\\n\\n.fa-layers-counter, .fa-layers-text {\\n display: inline-block;\\n position: absolute;\\n text-align: center;\\n}\\n\\n.fa-layers-text {\\n left: 50%;\\n top: 50%;\\n -webkit-transform: translate(-50%, -50%);\\n transform: translate(-50%, -50%);\\n -webkit-transform-origin: center center;\\n transform-origin: center center;\\n}\\n\\n.fa-layers-counter {\\n background-color: #ff253a;\\n border-radius: 1em;\\n -webkit-box-sizing: border-box;\\n box-sizing: border-box;\\n color: #fff;\\n height: 1.5em;\\n line-height: 1;\\n max-width: 5em;\\n min-width: 1.5em;\\n overflow: hidden;\\n padding: 0.25em;\\n right: 0;\\n text-overflow: ellipsis;\\n top: 0;\\n -webkit-transform: scale(0.25);\\n transform: scale(0.25);\\n -webkit-transform-origin: top right;\\n transform-origin: top right;\\n}\\n\\n.fa-layers-bottom-right {\\n bottom: 0;\\n right: 0;\\n top: auto;\\n -webkit-transform: scale(0.25);\\n transform: scale(0.25);\\n -webkit-transform-origin: bottom right;\\n transform-origin: bottom right;\\n}\\n\\n.fa-layers-bottom-left {\\n bottom: 0;\\n left: 0;\\n right: auto;\\n top: auto;\\n -webkit-transform: scale(0.25);\\n transform: scale(0.25);\\n -webkit-transform-origin: bottom left;\\n transform-origin: bottom left;\\n}\\n\\n.fa-layers-top-right {\\n right: 0;\\n top: 0;\\n -webkit-transform: scale(0.25);\\n transform: scale(0.25);\\n -webkit-transform-origin: top right;\\n transform-origin: top right;\\n}\\n\\n.fa-layers-top-left {\\n left: 0;\\n right: auto;\\n top: 0;\\n -webkit-transform: scale(0.25);\\n transform: scale(0.25);\\n -webkit-transform-origin: top left;\\n transform-origin: top left;\\n}\\n\\n.fa-lg {\\n font-size: 1.3333333333em;\\n line-height: 0.75em;\\n vertical-align: -0.0667em;\\n}\\n\\n.fa-xs {\\n font-size: 0.75em;\\n}\\n\\n.fa-sm {\\n font-size: 0.875em;\\n}\\n\\n.fa-1x {\\n font-size: 1em;\\n}\\n\\n.fa-2x {\\n font-size: 2em;\\n}\\n\\n.fa-3x {\\n font-size: 3em;\\n}\\n\\n.fa-4x {\\n font-size: 4em;\\n}\\n\\n.fa-5x {\\n font-size: 5em;\\n}\\n\\n.fa-6x {\\n font-size: 6em;\\n}\\n\\n.fa-7x {\\n font-size: 7em;\\n}\\n\\n.fa-8x {\\n font-size: 8em;\\n}\\n\\n.fa-9x {\\n font-size: 9em;\\n}\\n\\n.fa-10x {\\n font-size: 10em;\\n}\\n\\n.fa-fw {\\n text-align: center;\\n width: 1.25em;\\n}\\n\\n.fa-ul {\\n list-style-type: none;\\n margin-left: 2.5em;\\n padding-left: 0;\\n}\\n.fa-ul > li {\\n position: relative;\\n}\\n\\n.fa-li {\\n left: -2em;\\n position: absolute;\\n text-align: center;\\n width: 2em;\\n line-height: inherit;\\n}\\n\\n.fa-border {\\n border: solid 0.08em #eee;\\n border-radius: 0.1em;\\n padding: 0.2em 0.25em 0.15em;\\n}\\n\\n.fa-pull-left {\\n float: left;\\n}\\n\\n.fa-pull-right {\\n float: right;\\n}\\n\\n.fa.fa-pull-left,\\n.fas.fa-pull-left,\\n.far.fa-pull-left,\\n.fal.fa-pull-left,\\n.fab.fa-pull-left {\\n margin-right: 0.3em;\\n}\\n.fa.fa-pull-right,\\n.fas.fa-pull-right,\\n.far.fa-pull-right,\\n.fal.fa-pull-right,\\n.fab.fa-pull-right {\\n margin-left: 0.3em;\\n}\\n\\n.fa-spin {\\n -webkit-animation: fa-spin 2s infinite linear;\\n animation: fa-spin 2s infinite linear;\\n}\\n\\n.fa-pulse {\\n -webkit-animation: fa-spin 1s infinite steps(8);\\n animation: fa-spin 1s infinite steps(8);\\n}\\n\\n@-webkit-keyframes fa-spin {\\n 0% {\\n -webkit-transform: rotate(0deg);\\n transform: rotate(0deg);\\n }\\n 100% {\\n -webkit-transform: rotate(360deg);\\n transform: rotate(360deg);\\n }\\n}\\n\\n@keyframes fa-spin {\\n 0% {\\n -webkit-transform: rotate(0deg);\\n transform: rotate(0deg);\\n }\\n 100% {\\n -webkit-transform: rotate(360deg);\\n transform: rotate(360deg);\\n }\\n}\\n.fa-rotate-90 {\\n -ms-filter: \\\"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)\\\";\\n -webkit-transform: rotate(90deg);\\n transform: rotate(90deg);\\n}\\n\\n.fa-rotate-180 {\\n -ms-filter: \\\"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)\\\";\\n -webkit-transform: rotate(180deg);\\n transform: rotate(180deg);\\n}\\n\\n.fa-rotate-270 {\\n -ms-filter: \\\"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)\\\";\\n -webkit-transform: rotate(270deg);\\n transform: rotate(270deg);\\n}\\n\\n.fa-flip-horizontal {\\n -ms-filter: \\\"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)\\\";\\n -webkit-transform: scale(-1, 1);\\n transform: scale(-1, 1);\\n}\\n\\n.fa-flip-vertical {\\n -ms-filter: \\\"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)\\\";\\n -webkit-transform: scale(1, -1);\\n transform: scale(1, -1);\\n}\\n\\n.fa-flip-both, .fa-flip-horizontal.fa-flip-vertical {\\n -ms-filter: \\\"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)\\\";\\n -webkit-transform: scale(-1, -1);\\n transform: scale(-1, -1);\\n}\\n\\n:root .fa-rotate-90,\\n:root .fa-rotate-180,\\n:root .fa-rotate-270,\\n:root .fa-flip-horizontal,\\n:root .fa-flip-vertical,\\n:root .fa-flip-both {\\n -webkit-filter: none;\\n filter: none;\\n}\\n\\n.fa-stack {\\n display: inline-block;\\n height: 2em;\\n position: relative;\\n width: 2.5em;\\n}\\n\\n.fa-stack-1x,\\n.fa-stack-2x {\\n bottom: 0;\\n left: 0;\\n margin: auto;\\n position: absolute;\\n right: 0;\\n top: 0;\\n}\\n\\n.svg-inline--fa.fa-stack-1x {\\n height: 1em;\\n width: 1.25em;\\n}\\n.svg-inline--fa.fa-stack-2x {\\n height: 2em;\\n width: 2.5em;\\n}\\n\\n.fa-inverse {\\n color: #fff;\\n}\\n\\n.sr-only {\\n border: 0;\\n clip: rect(0, 0, 0, 0);\\n height: 1px;\\n margin: -1px;\\n overflow: hidden;\\n padding: 0;\\n position: absolute;\\n width: 1px;\\n}\\n\\n.sr-only-focusable:active, .sr-only-focusable:focus {\\n clip: auto;\\n height: auto;\\n margin: 0;\\n overflow: visible;\\n position: static;\\n width: auto;\\n}\\n\\n.svg-inline--fa .fa-primary {\\n fill: var(--fa-primary-color, currentColor);\\n opacity: 1;\\n opacity: var(--fa-primary-opacity, 1);\\n}\\n\\n.svg-inline--fa .fa-secondary {\\n fill: var(--fa-secondary-color, currentColor);\\n opacity: 0.4;\\n opacity: var(--fa-secondary-opacity, 0.4);\\n}\\n\\n.svg-inline--fa.fa-swap-opacity .fa-primary {\\n opacity: 0.4;\\n opacity: var(--fa-secondary-opacity, 0.4);\\n}\\n\\n.svg-inline--fa.fa-swap-opacity .fa-secondary {\\n opacity: 1;\\n opacity: var(--fa-primary-opacity, 1);\\n}\\n\\n.svg-inline--fa mask .fa-primary,\\n.svg-inline--fa mask .fa-secondary {\\n fill: black;\\n}\\n\\n.fad.fa-inverse {\\n color: #fff;\\n}\";\n\nfunction css () {\n var dfp = DEFAULT_FAMILY_PREFIX;\n var drc = DEFAULT_REPLACEMENT_CLASS;\n var fp = config.familyPrefix;\n var rc = config.replacementClass;\n var s = baseStyles;\n\n if (fp !== dfp || rc !== drc) {\n var dPatt = new RegExp(\"\\\\.\".concat(dfp, \"\\\\-\"), 'g');\n var customPropPatt = new RegExp(\"\\\\--\".concat(dfp, \"\\\\-\"), 'g');\n var rPatt = new RegExp(\"\\\\.\".concat(drc), 'g');\n s = s.replace(dPatt, \".\".concat(fp, \"-\")).replace(customPropPatt, \"--\".concat(fp, \"-\")).replace(rPatt, \".\".concat(rc));\n }\n\n return s;\n}\n\nvar Library =\n/*#__PURE__*/\nfunction () {\n function Library() {\n _classCallCheck(this, Library);\n\n this.definitions = {};\n }\n\n _createClass(Library, [{\n key: \"add\",\n value: function add() {\n var _this = this;\n\n for (var _len = arguments.length, definitions = new Array(_len), _key = 0; _key < _len; _key++) {\n definitions[_key] = arguments[_key];\n }\n\n var additions = definitions.reduce(this._pullDefinitions, {});\n Object.keys(additions).forEach(function (key) {\n _this.definitions[key] = _objectSpread({}, _this.definitions[key] || {}, additions[key]);\n defineIcons(key, additions[key]);\n build();\n });\n }\n }, {\n key: \"reset\",\n value: function reset() {\n this.definitions = {};\n }\n }, {\n key: \"_pullDefinitions\",\n value: function _pullDefinitions(additions, definition) {\n var normalized = definition.prefix && definition.iconName && definition.icon ? {\n 0: definition\n } : definition;\n Object.keys(normalized).map(function (key) {\n var _normalized$key = normalized[key],\n prefix = _normalized$key.prefix,\n iconName = _normalized$key.iconName,\n icon = _normalized$key.icon;\n if (!additions[prefix]) additions[prefix] = {};\n additions[prefix][iconName] = icon;\n });\n return additions;\n }\n }]);\n\n return Library;\n}();\n\nfunction ensureCss() {\n if (config.autoAddCss && !_cssInserted) {\n insertCss(css());\n\n _cssInserted = true;\n }\n}\n\nfunction apiObject(val, abstractCreator) {\n Object.defineProperty(val, 'abstract', {\n get: abstractCreator\n });\n Object.defineProperty(val, 'html', {\n get: function get() {\n return val.abstract.map(function (a) {\n return toHtml(a);\n });\n }\n });\n Object.defineProperty(val, 'node', {\n get: function get() {\n if (!IS_DOM) return;\n var container = DOCUMENT.createElement('div');\n container.innerHTML = val.html;\n return container.children;\n }\n });\n return val;\n}\n\nfunction findIconDefinition(iconLookup) {\n var _iconLookup$prefix = iconLookup.prefix,\n prefix = _iconLookup$prefix === void 0 ? 'fa' : _iconLookup$prefix,\n iconName = iconLookup.iconName;\n if (!iconName) return;\n return iconFromMapping(library.definitions, prefix, iconName) || iconFromMapping(namespace.styles, prefix, iconName);\n}\n\nfunction resolveIcons(next) {\n return function (maybeIconDefinition) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var iconDefinition = (maybeIconDefinition || {}).icon ? maybeIconDefinition : findIconDefinition(maybeIconDefinition || {});\n var mask = params.mask;\n\n if (mask) {\n mask = (mask || {}).icon ? mask : findIconDefinition(mask || {});\n }\n\n return next(iconDefinition, _objectSpread({}, params, {\n mask: mask\n }));\n };\n}\n\nvar library = new Library();\nvar noAuto = function noAuto() {\n config.autoReplaceSvg = false;\n config.observeMutations = false;\n disconnect();\n};\nvar _cssInserted = false;\nvar dom = {\n i2svg: function i2svg() {\n var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (IS_DOM) {\n ensureCss();\n var _params$node = params.node,\n node = _params$node === void 0 ? DOCUMENT : _params$node,\n _params$callback = params.callback,\n callback = _params$callback === void 0 ? function () {} : _params$callback;\n\n if (config.searchPseudoElements) {\n searchPseudoElements(node);\n }\n\n return onTree(node, callback);\n } else {\n return picked.reject('Operation requires a DOM of some kind.');\n }\n },\n css: css,\n insertCss: function insertCss$$1() {\n if (!_cssInserted) {\n insertCss(css());\n\n _cssInserted = true;\n }\n },\n watch: function watch() {\n var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var autoReplaceSvgRoot = params.autoReplaceSvgRoot,\n observeMutationsRoot = params.observeMutationsRoot;\n\n if (config.autoReplaceSvg === false) {\n config.autoReplaceSvg = true;\n }\n\n config.observeMutations = true;\n domready(function () {\n autoReplace({\n autoReplaceSvgRoot: autoReplaceSvgRoot\n });\n observe({\n treeCallback: onTree,\n nodeCallback: onNode,\n pseudoElementsCallback: searchPseudoElements,\n observeMutationsRoot: observeMutationsRoot\n });\n });\n }\n};\nvar parse = {\n transform: function transform(transformString) {\n return parseTransformString(transformString);\n }\n};\nvar icon = resolveIcons(function (iconDefinition) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _params$transform = params.transform,\n transform = _params$transform === void 0 ? meaninglessTransform : _params$transform,\n _params$symbol = params.symbol,\n symbol = _params$symbol === void 0 ? false : _params$symbol,\n _params$mask = params.mask,\n mask = _params$mask === void 0 ? null : _params$mask,\n _params$title = params.title,\n title = _params$title === void 0 ? null : _params$title,\n _params$classes = params.classes,\n classes = _params$classes === void 0 ? [] : _params$classes,\n _params$attributes = params.attributes,\n attributes = _params$attributes === void 0 ? {} : _params$attributes,\n _params$styles = params.styles,\n styles = _params$styles === void 0 ? {} : _params$styles;\n if (!iconDefinition) return;\n var prefix = iconDefinition.prefix,\n iconName = iconDefinition.iconName,\n icon = iconDefinition.icon;\n return apiObject(_objectSpread({\n type: 'icon'\n }, iconDefinition), function () {\n ensureCss();\n\n if (config.autoA11y) {\n if (title) {\n attributes['aria-labelledby'] = \"\".concat(config.replacementClass, \"-title-\").concat(nextUniqueId());\n } else {\n attributes['aria-hidden'] = 'true';\n attributes['focusable'] = 'false';\n }\n }\n\n return makeInlineSvgAbstract({\n icons: {\n main: asFoundIcon(icon),\n mask: mask ? asFoundIcon(mask.icon) : {\n found: false,\n width: null,\n height: null,\n icon: {}\n }\n },\n prefix: prefix,\n iconName: iconName,\n transform: _objectSpread({}, meaninglessTransform, transform),\n symbol: symbol,\n title: title,\n extra: {\n attributes: attributes,\n styles: styles,\n classes: classes\n }\n });\n });\n});\nvar text = function text(content) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _params$transform2 = params.transform,\n transform = _params$transform2 === void 0 ? meaninglessTransform : _params$transform2,\n _params$title2 = params.title,\n title = _params$title2 === void 0 ? null : _params$title2,\n _params$classes2 = params.classes,\n classes = _params$classes2 === void 0 ? [] : _params$classes2,\n _params$attributes2 = params.attributes,\n attributes = _params$attributes2 === void 0 ? {} : _params$attributes2,\n _params$styles2 = params.styles,\n styles = _params$styles2 === void 0 ? {} : _params$styles2;\n return apiObject({\n type: 'text',\n content: content\n }, function () {\n ensureCss();\n return makeLayersTextAbstract({\n content: content,\n transform: _objectSpread({}, meaninglessTransform, transform),\n title: title,\n extra: {\n attributes: attributes,\n styles: styles,\n classes: [\"\".concat(config.familyPrefix, \"-layers-text\")].concat(_toConsumableArray(classes))\n }\n });\n });\n};\nvar counter = function counter(content) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _params$title3 = params.title,\n title = _params$title3 === void 0 ? null : _params$title3,\n _params$classes3 = params.classes,\n classes = _params$classes3 === void 0 ? [] : _params$classes3,\n _params$attributes3 = params.attributes,\n attributes = _params$attributes3 === void 0 ? {} : _params$attributes3,\n _params$styles3 = params.styles,\n styles = _params$styles3 === void 0 ? {} : _params$styles3;\n return apiObject({\n type: 'counter',\n content: content\n }, function () {\n ensureCss();\n return makeLayersCounterAbstract({\n content: content.toString(),\n title: title,\n extra: {\n attributes: attributes,\n styles: styles,\n classes: [\"\".concat(config.familyPrefix, \"-layers-counter\")].concat(_toConsumableArray(classes))\n }\n });\n });\n};\nvar layer = function layer(assembler) {\n var params = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _params$classes4 = params.classes,\n classes = _params$classes4 === void 0 ? [] : _params$classes4;\n return apiObject({\n type: 'layer'\n }, function () {\n ensureCss();\n var children = [];\n assembler(function (args) {\n Array.isArray(args) ? args.map(function (a) {\n children = children.concat(a.abstract);\n }) : children = children.concat(args.abstract);\n });\n return [{\n tag: 'span',\n attributes: {\n class: [\"\".concat(config.familyPrefix, \"-layers\")].concat(_toConsumableArray(classes)).join(' ')\n },\n children: children\n }];\n });\n};\nvar api = {\n noAuto: noAuto,\n config: config,\n dom: dom,\n library: library,\n parse: parse,\n findIconDefinition: findIconDefinition,\n icon: icon,\n text: text,\n counter: counter,\n layer: layer,\n toHtml: toHtml\n};\n\nvar autoReplace = function autoReplace() {\n var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var _params$autoReplaceSv = params.autoReplaceSvgRoot,\n autoReplaceSvgRoot = _params$autoReplaceSv === void 0 ? DOCUMENT : _params$autoReplaceSv;\n if ((Object.keys(namespace.styles).length > 0 || config.autoFetchSvg) && IS_DOM && config.autoReplaceSvg) api.dom.i2svg({\n node: autoReplaceSvgRoot\n });\n};\n\nexport { icon, noAuto, config, toHtml, layer, text, counter, library, dom, parse, findIconDefinition };\n","import { parse, icon } from '@fortawesome/fontawesome-svg-core';\nimport PropTypes from 'prop-types';\nimport React from 'react';\n\nfunction _typeof(obj) {\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n var ownKeys = Object.keys(source);\n\n if (typeof Object.getOwnPropertySymbols === 'function') {\n ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n\n ownKeys.forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n }\n\n return target;\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n\n var target = _objectWithoutPropertiesLoose(source, excluded);\n\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread();\n}\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];\n\n return arr2;\n }\n}\n\nfunction _iterableToArray(iter) {\n if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter);\n}\n\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance\");\n}\n\n// Get CSS class list from a props object\nfunction classList(props) {\n var _classes;\n\n var spin = props.spin,\n pulse = props.pulse,\n fixedWidth = props.fixedWidth,\n inverse = props.inverse,\n border = props.border,\n listItem = props.listItem,\n flip = props.flip,\n size = props.size,\n rotation = props.rotation,\n pull = props.pull; // map of CSS class names to properties\n\n var classes = (_classes = {\n 'fa-spin': spin,\n 'fa-pulse': pulse,\n 'fa-fw': fixedWidth,\n 'fa-inverse': inverse,\n 'fa-border': border,\n 'fa-li': listItem,\n 'fa-flip-horizontal': flip === 'horizontal' || flip === 'both',\n 'fa-flip-vertical': flip === 'vertical' || flip === 'both'\n }, _defineProperty(_classes, \"fa-\".concat(size), typeof size !== 'undefined' && size !== null), _defineProperty(_classes, \"fa-rotate-\".concat(rotation), typeof rotation !== 'undefined' && rotation !== null), _defineProperty(_classes, \"fa-pull-\".concat(pull), typeof pull !== 'undefined' && pull !== null), _defineProperty(_classes, 'fa-swap-opacity', props.swapOpacity), _classes); // map over all the keys in the classes object\n // return an array of the keys where the value for the key is not null\n\n return Object.keys(classes).map(function (key) {\n return classes[key] ? key : null;\n }).filter(function (key) {\n return key;\n });\n}\n\n// Camelize taken from humps\n// humps is copyright © 2012+ Dom Christie\n// Released under the MIT license.\n// Performant way to determine if object coerces to a number\nfunction _isNumerical(obj) {\n obj = obj - 0; // eslint-disable-next-line no-self-compare\n\n return obj === obj;\n}\n\nfunction camelize(string) {\n if (_isNumerical(string)) {\n return string;\n } // eslint-disable-next-line no-useless-escape\n\n\n string = string.replace(/[\\-_\\s]+(.)?/g, function (match, chr) {\n return chr ? chr.toUpperCase() : '';\n }); // Ensure 1st char is always lowercase\n\n return string.substr(0, 1).toLowerCase() + string.substr(1);\n}\n\nfunction capitalize(val) {\n return val.charAt(0).toUpperCase() + val.slice(1);\n}\n\nfunction styleToObject(style) {\n return style.split(';').map(function (s) {\n return s.trim();\n }).filter(function (s) {\n return s;\n }).reduce(function (acc, pair) {\n var i = pair.indexOf(':');\n var prop = camelize(pair.slice(0, i));\n var value = pair.slice(i + 1).trim();\n prop.startsWith('webkit') ? acc[capitalize(prop)] = value : acc[prop] = value;\n return acc;\n }, {});\n}\n\nfunction convert(createElement, element) {\n var extraProps = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n if (typeof element === 'string') {\n return element;\n }\n\n var children = (element.children || []).map(function (child) {\n return convert(createElement, child);\n });\n var mixins = Object.keys(element.attributes || {}).reduce(function (acc, key) {\n var val = element.attributes[key];\n\n switch (key) {\n case 'class':\n acc.attrs['className'] = val;\n delete element.attributes['class'];\n break;\n\n case 'style':\n acc.attrs['style'] = styleToObject(val);\n break;\n\n default:\n if (key.indexOf('aria-') === 0 || key.indexOf('data-') === 0) {\n acc.attrs[key.toLowerCase()] = val;\n } else {\n acc.attrs[camelize(key)] = val;\n }\n\n }\n\n return acc;\n }, {\n attrs: {}\n });\n\n var _extraProps$style = extraProps.style,\n existingStyle = _extraProps$style === void 0 ? {} : _extraProps$style,\n remaining = _objectWithoutProperties(extraProps, [\"style\"]);\n\n mixins.attrs['style'] = _objectSpread({}, mixins.attrs['style'], existingStyle);\n return createElement.apply(void 0, [element.tag, _objectSpread({}, mixins.attrs, remaining)].concat(_toConsumableArray(children)));\n}\n\nvar PRODUCTION = false;\n\ntry {\n PRODUCTION = process.env.NODE_ENV === 'production';\n} catch (e) {}\n\nfunction log () {\n if (!PRODUCTION && console && typeof console.error === 'function') {\n var _console;\n\n (_console = console).error.apply(_console, arguments);\n }\n}\n\n// Normalize icon arguments\nfunction normalizeIconArgs(icon$$1) {\n // if the icon is null, there's nothing to do\n if (icon$$1 === null) {\n return null;\n } // if the icon is an object and has a prefix and an icon name, return it\n\n\n if (_typeof(icon$$1) === 'object' && icon$$1.prefix && icon$$1.iconName) {\n return icon$$1;\n } // if it's an array with length of two\n\n\n if (Array.isArray(icon$$1) && icon$$1.length === 2) {\n // use the first item as prefix, second as icon name\n return {\n prefix: icon$$1[0],\n iconName: icon$$1[1]\n };\n } // if it's a string, use it as the icon name\n\n\n if (typeof icon$$1 === 'string') {\n return {\n prefix: 'fas',\n iconName: icon$$1\n };\n }\n}\n\n// creates an object with a key of key\n// and a value of value\n// if certain conditions are met\nfunction objectWithKey(key, value) {\n // if the value is a non-empty array\n // or it's not an array but it is truthy\n // then create the object with the key and the value\n // if not, return an empty array\n return Array.isArray(value) && value.length > 0 || !Array.isArray(value) && value ? _defineProperty({}, key, value) : {};\n}\n\nfunction FontAwesomeIcon(props) {\n var iconArgs = props.icon,\n maskArgs = props.mask,\n symbol = props.symbol,\n className = props.className,\n title = props.title;\n var iconLookup = normalizeIconArgs(iconArgs);\n var classes = objectWithKey('classes', [].concat(_toConsumableArray(classList(props)), _toConsumableArray(className.split(' '))));\n var transform = objectWithKey('transform', typeof props.transform === 'string' ? parse.transform(props.transform) : props.transform);\n var mask = objectWithKey('mask', normalizeIconArgs(maskArgs));\n var renderedIcon = icon(iconLookup, _objectSpread({}, classes, transform, mask, {\n symbol: symbol,\n title: title\n }));\n\n if (!renderedIcon) {\n log('Could not find icon', iconLookup);\n return null;\n }\n\n var abstract = renderedIcon.abstract;\n var extraProps = {};\n Object.keys(props).forEach(function (key) {\n if (!FontAwesomeIcon.defaultProps.hasOwnProperty(key)) {\n extraProps[key] = props[key];\n }\n });\n return convertCurry(abstract[0], extraProps);\n}\nFontAwesomeIcon.displayName = 'FontAwesomeIcon';\nFontAwesomeIcon.propTypes = {\n border: PropTypes.bool,\n className: PropTypes.string,\n mask: PropTypes.oneOfType([PropTypes.object, PropTypes.array, PropTypes.string]),\n fixedWidth: PropTypes.bool,\n inverse: PropTypes.bool,\n flip: PropTypes.oneOf(['horizontal', 'vertical', 'both']),\n icon: PropTypes.oneOfType([PropTypes.object, PropTypes.array, PropTypes.string]),\n listItem: PropTypes.bool,\n pull: PropTypes.oneOf(['right', 'left']),\n pulse: PropTypes.bool,\n rotation: PropTypes.oneOf([90, 180, 270]),\n size: PropTypes.oneOf(['lg', 'xs', 'sm', '1x', '2x', '3x', '4x', '5x', '6x', '7x', '8x', '9x', '10x']),\n spin: PropTypes.bool,\n symbol: PropTypes.oneOfType([PropTypes.bool, PropTypes.string]),\n title: PropTypes.string,\n transform: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n swapOpacity: PropTypes.bool\n};\nFontAwesomeIcon.defaultProps = {\n border: false,\n className: '',\n mask: null,\n fixedWidth: false,\n inverse: false,\n flip: null,\n icon: null,\n listItem: false,\n pull: null,\n pulse: false,\n rotation: null,\n size: null,\n spin: false,\n symbol: false,\n title: '',\n transform: null,\n swapOpacity: false\n};\nvar convertCurry = convert.bind(null, React.createElement);\n\nexport { FontAwesomeIcon };\n","/**\n * @hidden\n */\nexport var isPresent = function (value) { return value !== null && value !== undefined; };\n/**\n * @hidden\n */\nexport var isBlank = function (value) { return value === null || value === undefined; };\n/**\n * @hidden\n */\nexport var isArray = function (value) { return Array.isArray(value); };\n/**\n * @hidden\n */\nexport var isFunction = function (value) { return typeof value === 'function'; };\n/**\n * @hidden\n */\nexport var isString = function (value) { return typeof value === 'string'; };\n/**\n * @hidden\n */\nexport var isTruthy = function (value) { return !!value; };\n/**\n * @hidden\n */\nexport var isNullOrEmptyString = function (value) { return isBlank(value) || value.trim().length === 0; };\n/**\n * @hidden\n */\nexport var isNotNullOrEmptyString = function (value) { return !isNullOrEmptyString(value); };\n/**\n * @hidden\n */\nexport var isNumeric = function (value) { return !isNaN(value - parseFloat(value)); };\n/**\n * @hidden\n */\nexport var isDate = function (value) { return value && value.getTime; };\n","import { isPresent } from '../utils';\n// tslint:enable:max-line-length\n/**\n * @hidden\n * Type guard for `CompositeFilterDescriptor`.\n */\nexport var isCompositeFilterDescriptor = function (source) {\n return isPresent(source.filters);\n};\n","/**\n * @hidden\n */\nexport var ifElse = function (predicate, right, left) { return function (value) { return predicate(value) ? right(value) : left(value); }; };\n/**\n * @hidden\n * Performs the right-to-left function composition. Functions should have a unary.\n */\nexport var compose = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return function (data) { return args.reduceRight(function (acc, curr) { return curr(acc); }, data); };\n};\n/**\n * @hidden\n */\nexport var constant = function (x) { return function () { return x; }; };\n/**\n * @hidden\n */\nexport var identity = function (x) { return x; };\n","import { isPresent } from './utils';\nvar getterCache = {};\nvar FIELD_REGEX = /\\[(?:(\\d+)|['\"](.*?)['\"])\\]|((?:(?!\\[.*?\\]|\\.).)+)/g;\n// tslint:disable-next-line:no-string-literal\ngetterCache['undefined'] = function (obj) { return obj; };\n/**\n * @hidden\n */\nexport var getter = function (field, safe) {\n var key = field + safe;\n if (getterCache[key]) {\n return getterCache[key];\n }\n var fields = [];\n field.replace(FIELD_REGEX, function (_, index, indexAccessor, field) {\n fields.push(isPresent(index) ? index : (indexAccessor || field));\n return undefined;\n });\n getterCache[key] = function (obj) {\n var result = obj;\n for (var idx = 0; idx < fields.length; idx++) {\n result = result[fields[idx]];\n if (!isPresent(result) && safe) {\n return result;\n }\n }\n return result;\n };\n return getterCache[key];\n};\n","import * as tslib_1 from \"tslib\";\nimport { isPresent, isNotNullOrEmptyString } from './utils';\nimport { serializeFilter } from './odata-filtering.operators';\nimport { ifElse, constant } from './funcs';\nvar serializeSort = function (orderby) {\n var str = orderby\n .filter(function (sort) { return isPresent(sort.dir); })\n .map(function (sort) {\n var order = sort.field.replace(/\\./g, \"/\");\n return sort.dir === \"desc\" ? order + \" desc\" : order;\n }).join(\",\");\n return str ? \"$orderby=\" + str : str;\n};\nvar emptyString = constant('');\nvar concat = function (a) { return function (b) { return a + b; }; };\nvar serializeKey = function (strings, val) { return ifElse(isPresent, concat(strings[0]), emptyString)(val); };\nvar rules = function (settings, state) { return function (key) { return ({\n \"filter\": serializeFilter(state.filter || {}, settings),\n \"skip\": serializeKey(templateObject_1 || (templateObject_1 = tslib_1.__makeTemplateObject([\"$skip=\", \"\"], [\"$skip=\", \"\"])), state.skip),\n \"sort\": serializeSort(state.sort || []),\n \"take\": serializeKey(templateObject_2 || (templateObject_2 = tslib_1.__makeTemplateObject([\"$top=\", \"\"], [\"$top=\", \"\"])), state.take)\n}[key]); }; };\n// tslint:enable:max-line-length\n/**\n * Converts a [`State`]({% slug api_kendo-data-query_state %}) into an OData v4 compatible string.\n *\n * @param {State} state - The state that will be serialized.\n * @param {ODataSettings} settings - The settings that are used during the serialization.\n * @returns {string} - The serialized state.\n */\nexport var toODataString = function (state, settings) {\n if (settings === void 0) { settings = {}; }\n return (Object.keys(state)\n .map(rules(settings, state))\n .filter(isNotNullOrEmptyString)\n .join('&'));\n};\nvar templateObject_1, templateObject_2;\n","import * as tslib_1 from \"tslib\";\nimport { isCompositeFilterDescriptor } from '../filtering/filter-descriptor.interface';\nimport { isPresent, isNotNullOrEmptyString, isArray } from '../utils';\nimport { getter } from '../accessor';\nimport { compose, ifElse, identity } from '../funcs';\nimport { isStringValue, isDateValue, quote, serializeFilters, toUTC, encodeValue } from '../filter-serialization.common';\nvar toQueryString = function (values) { return values.reduce(function (acc, _a) {\n var key = _a[0], value = _a[1];\n return acc.concat([key + \"=\" + value]);\n}, []); };\nvar toObject = function (values) { return values.reduce(function (acc, _a) {\n var key = _a[0], value = _a[1];\n var _b;\n return (tslib_1.__assign({}, acc, (_b = {}, _b[key] = value, _b)));\n}, {}); };\nvar pairwise = function (key) { return function (value) { return [key, value]; }; };\nvar empty = function () { return null; };\nvar isNotEmptyArray = function (value) { return isPresent(value) && isArray(value) && value.length > 0; };\nvar has = function (accessor) { return function (value) { return isPresent(accessor(value)); }; };\nvar isNotEmpty = function (accessor) { return function (value) { return isNotEmptyArray(accessor(value)); }; };\nvar runOrEmpty = function (predicate, fn) { return ifElse(predicate, fn, empty); };\nvar calcPage = function (_a) {\n var skip = _a.skip, take = _a.take;\n return Math.floor((skip || 0) / take) + 1;\n};\nvar formatDescriptors = function (accessor, formatter) { return function (state) { return (accessor(state).map(formatter).join(\"~\")); }; };\nvar removeAfter = function (what) { return function (str) { return str.slice(0, str.indexOf(what)); }; };\nvar replace = function (patterns) {\n return compose.apply(void 0, patterns.map(function (_a) {\n var left = _a[0], right = _a[1];\n return function (s) { return s.replace(new RegExp(left, \"g\"), right); };\n }));\n};\nvar sanitizeDateLiterals = replace([[\"\\\"\", \"\"], [\":\", \"-\"]]);\nvar removeAfterDot = removeAfter(\".\");\nvar directionFormatter = function (_a) {\n var field = _a.field, _b = _a.dir, dir = _b === void 0 ? \"asc\" : _b;\n return field + \"-\" + dir;\n};\nvar aggregateFormatter = function (_a) {\n var field = _a.field, aggregate = _a.aggregate;\n return field + \"-\" + aggregate;\n};\nvar take = getter(\"take\");\nvar aggregates = getter(\"aggregates\");\nvar skip = getter(\"skip\");\nvar group = getter(\"group\");\nvar sort = getter(\"sort\", true);\nvar formatSort = formatDescriptors(sort, directionFormatter);\nvar formatGroup = formatDescriptors(group, directionFormatter);\nvar formatAggregates = formatDescriptors(aggregates, aggregateFormatter);\nvar prefixDateValue = function (value) { return \"datetime'\" + value + \"'\"; };\nvar formatDateValue = compose(prefixDateValue, removeAfterDot, sanitizeDateLiterals, JSON.stringify, toUTC);\nvar formatDate = function (_a) {\n var field = _a.field, value = _a.value, ignoreCase = _a.ignoreCase, operator = _a.operator;\n return ({\n value: formatDateValue(value),\n field: field,\n ignoreCase: ignoreCase,\n operator: operator\n });\n};\nvar normalizeSort = function (state) { return Object.assign({}, state, {\n sort: (sort(state) || []).filter(function (_a) {\n var dir = _a.dir;\n return isNotNullOrEmptyString(dir);\n })\n}); };\nvar transformSkip = compose(pairwise('page'), calcPage);\nvar transformTake = compose(pairwise('pageSize'), take);\nvar transformGroup = compose(pairwise('group'), formatGroup);\nvar transformSort = compose(pairwise('sort'), formatSort);\nvar transformAggregates = compose(pairwise('aggregate'), formatAggregates);\nvar serializePage = runOrEmpty(has(skip), transformSkip);\nvar serializePageSize = runOrEmpty(has(take), transformTake);\nvar serializeGroup = runOrEmpty(isNotEmpty(group), transformGroup);\nvar serializeAggregates = runOrEmpty(has(aggregates), transformAggregates);\nvar serializeSort = compose(runOrEmpty(isNotEmpty(sort), transformSort), normalizeSort);\nvar hasField = function (_a) {\n var field = _a.field;\n return isNotNullOrEmptyString(field);\n};\nvar filterFormatter = function (_a) {\n var field = _a.field, operator = _a.operator, value = _a.value;\n return field + \"~\" + operator + \"~\" + value;\n};\nvar dateFormatter = ifElse(isDateValue, compose(filterFormatter, formatDate), filterFormatter);\nvar typedFormatter = function (encode) { return runOrEmpty(hasField, ifElse(isStringValue, compose(filterFormatter, quote, encode ? encodeValue : identity), dateFormatter)); };\nvar join = function (_a) {\n var logic = _a.logic;\n return \"~\" + logic + \"~\";\n};\nvar serialize = function (encode) { return serializeFilters(function (filter) { return ifElse(isCompositeFilterDescriptor, serialize(encode), typedFormatter(encode))(filter); }, join); };\nvar serializeFilter = function (_a, encode) {\n var filter = _a.filter;\n if (filter && filter.filters) {\n var filters = serialize(encode)(filter);\n if (filters.length) {\n return ['filter', filters];\n }\n }\n return null;\n};\nvar rules = function (state, encode) {\n if (encode === void 0) { encode = true; }\n return function (key) { return ({\n \"aggregates\": serializeAggregates(state),\n \"filter\": serializeFilter(state, encode),\n \"group\": serializeGroup(state),\n \"skip\": serializePage(state),\n \"sort\": serializeSort(state),\n \"take\": serializePageSize(state)\n }[key]); };\n};\n/**\n * Converts a [`DataSourceRequestState`]({% slug api_kendo-data-query_datasourcerequeststate %}) into a string\n * that is comparable with the `DataSourceRequest` format in UI for ASP.NET MVC.\n *\n * @param {DataRequestState} state - The state that will be serialized.\n * @returns {string} - The serialized state.\n *\n * @example\n * {% platform_content angular %}\n * ```ts-no-run\n * import {\n * toDataSourceRequestString,\n * translateDataSourceResultGroups,\n * translateAggregateResults\n * } from '@progress/kendo-data-query';\n *\n * export class Service {\n * private BASE_URL: string = '...';\n *\n * constructor(private http: Http) { }\n *\n * // Omitted for brevity...\n *\n * private fetch(state: DataSourceRequestState): Observable {\n * const queryStr = `${toDataSourceRequestString(state)}`; //serialize the state\n * const hasGroups = state.group && state.group.length;\n *\n * return this.http\n * .get(`${this.BASE_URL}?${queryStr}`) //send the state to the server\n * .map(response => response.json())\n * .map(({Data, Total, AggregateResults}) => // process the response\n * ({\n * //if there are groups convert them to compatible format\n * data: hasGroups ? translateDataSourceResultGroups(Data) : Data,\n * total: Total,\n * // convert the aggregates if such exists\n * aggregateResult: translateAggregateResults(AggregateResults)\n * })\n * );\n * }\n * }\n * ```\n * {% endplatform_content %}\n *\n * {% platform_content react %}\n * ```jsx-no-run\n * import React from 'react';\n * import { toDataSourceRequestString, translateDataSourceResultGroups } from '@progress/kendo-data-query';\n *\n * export function withState(WrappedGrid) {\n * return class StatefullGrid extends React.Component {\n * constructor(props) {\n * super(props);\n * this.state = { dataState: { skip: 0, take: 20 } };\n * }\n *\n * render() {\n * return (\n * \n * );\n * }\n *\n * componentDidMount() {\n * this.fetchData(this.state.dataState);\n * }\n *\n * dataStateChange = (changeEvent) => {\n * this.setState({ dataState: changeEvent.data });\n * this.fetchData(changeEvent.data);\n * }\n *\n * fetchData(dataState) {\n * const queryStr = `${toDataSourceRequestString(dataState)}`; // Serialize the state\n * const hasGroups = dataState.group && dataState.group.length;\n *\n * const base_url = 'api/Products';\n * const init = { method: 'GET', accept: 'application/json', headers: {} };\n *\n * fetch(`${base_url}?${queryStr}`, init)\n * .then(response => response.json())\n * .then(({ data, total }) => {\n * this.setState({\n * data: hasGroups ? translateDataSourceResultGroups(data) : data,\n * total,\n * dataState\n * });\n * });\n * }\n * }\n * }\n * ```\n * {% endplatform_content %}\n */\nexport var toDataSourceRequestString = function (state) { return (toQueryString(Object.keys(state)\n .map(rules(state))\n .filter(isPresent)).join('&')); };\n/**\n * Converts a [`DataSourceRequestState`]({% slug api_kendo-data-query_datasourcerequeststate %}) into an object\n * that is compatible with the `DataSourceRequest` format in UI for ASP.NET MVC.\n *\n * @param {DataRequestState} state - The state that will be serialized.\n * @returns {any} - The serialized state.\n */\nexport var toDataSourceRequest = function (state) { return (toObject(Object.keys(state)\n .map(rules(state, false))\n .filter(isPresent))); };\n","import * as tslib_1 from \"tslib\";\nimport { isString, isDate } from './utils';\n/**\n * @hidden\n * Creates a single arity function which wraps the value based on the provided predicate.\n * @example\n * ```\n * wrapIf(() => ignoreCase) `tolower(${field})`\n * //ignoreCase=true -> tolower(${field})`\n * //ignoreCase=false -> ${field}`\n * ```\n */\nexport var wrapIf = function (predicate) { return function (str) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n return predicate() ? \"\" + str[0] + args[0] + str[1] : args[0];\n}; };\n/**\n * @hidden\n */\nexport var toUTC = function (date) {\n return new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds()));\n};\n/**\n * @hidden\n */\nexport var quote = function (_a) {\n var field = _a.field, value = _a.value, ignoreCase = _a.ignoreCase, operator = _a.operator;\n return ({\n value: \"'\" + value.replace(/'/g, \"''\") + \"'\",\n field: field,\n ignoreCase: ignoreCase,\n operator: operator\n });\n};\n/**\n * @hidden\n */\nexport var encodeValue = function (_a) {\n var field = _a.field, value = _a.value, ignoreCase = _a.ignoreCase, operator = _a.operator;\n return ({\n value: \"\" + encodeURIComponent(value),\n field: field,\n ignoreCase: ignoreCase,\n operator: operator\n });\n};\n/**\n * @hidden\n */\nexport var toLower = function (_a) {\n var field = _a.field, value = _a.value, ignoreCase = _a.ignoreCase, operator = _a.operator;\n return ({\n field: wrapIf(function () { return ignoreCase; })(templateObject_1 || (templateObject_1 = tslib_1.__makeTemplateObject([\"tolower(\", \")\"], [\"tolower(\", \")\"])), field),\n value: value,\n ignoreCase: ignoreCase,\n operator: operator\n });\n};\n/**\n * @hidden\n */\nexport var normalizeField = function (_a) {\n var field = _a.field, value = _a.value, ignoreCase = _a.ignoreCase, operator = _a.operator;\n return ({\n value: value,\n field: field.replace(/\\./g, \"/\"),\n ignoreCase: ignoreCase,\n operator: operator\n });\n};\n/**\n * @hidden\n */\nexport var isStringValue = function (x) { return isString(x.value); };\n/**\n * @hidden\n */\nexport var isDateValue = function (x) { return isDate(x.value); };\n/**\n * @hidden\n */\nexport var serializeFilters = function (map, join) { return function (filter) {\n var brackets = wrapIf(function () { return filter.filters.length > 1; });\n return brackets(templateObject_2 || (templateObject_2 = tslib_1.__makeTemplateObject([\"(\", \")\"], [\"(\",\n \")\"])), filter.filters\n .map(map)\n .join(join(filter)));\n}; };\nvar templateObject_1, templateObject_2;\n","import { isPresent } from '../utils';\nimport { compose } from '../funcs';\n// tslint:enable:max-line-length\nvar set = function (field, target, value) {\n target[field] = value;\n return target;\n};\nvar toCamelCase = function (str) { return str.replace(/(^[A-Z])/g, function (_, g1) { return g1.toLowerCase(); }); };\nvar prop = function (fieldName) { return function (obj) {\n var value = obj[fieldName];\n if (isPresent(value)) {\n return value;\n }\n return obj[toCamelCase(fieldName)];\n}; };\nvar member = prop(\"Member\");\nvar aggregateMethodName = prop(\"AggregateMethodName\");\nvar value = prop(\"Value\");\nvar convert = function (mapper) { return function (values) { return Object.keys(values).reduce(mapper.bind(null, values), {}); }; };\nvar translateAggregate = convert(function (source, acc, field) { return set(field.toLowerCase(), acc, source[field]); });\nvar translateAggregates = convert(function (source, acc, field) { return set(field, acc, translateAggregate(source[field])); });\nvar valueOrDefault = function (value, defaultValue) { return isPresent(value) ? value : defaultValue; };\nvar normalizeGroup = function (group) { return ({\n aggregates: group.Aggregates || group.aggregates,\n field: group.Member || group.member || group.field,\n hasSubgroups: group.HasSubgroups || group.hasSubgroups || false,\n items: group.Items || group.items,\n value: valueOrDefault(group.Key, valueOrDefault(group.key, group.value))\n}); };\nvar translateGroup = compose(function (_a) {\n var field = _a.field, hasSubgroups = _a.hasSubgroups, value = _a.value, aggregates = _a.aggregates, items = _a.items;\n return ({\n aggregates: translateAggregates(aggregates),\n field: field,\n items: hasSubgroups ? items.map(translateGroup) : items,\n value: value\n });\n}, normalizeGroup);\n// tslint:disable:max-line-length\n/**\n * Converts the grouped result, which is returned into the `Data` field of the UI for ASP.NET MVC `ToDataSourceResult` method, to a comparable format.\n * @param data - The value of the `Data` field of the response.\n * @returns {GroupResult[]} - The converted result.\n */\nexport var translateDataSourceResultGroups = function (data) { return data.map(translateGroup); };\n/**\n * Converts the `AggregateResults` field content, which is returned by the UI for ASP.NET MVC `ToDataSourceResult` method, to a comparable format.\n * @param data - The value of the `AggregateResults` field of the response.\n * @returns {AggregateResult} - The converted result.\n */\n// tslint:enable:max-line-length\nexport var translateAggregateResults = function (data) { return ((data || []).reduce(function (acc, x) { return set(member(x), acc, set(aggregateMethodName(x).toLowerCase(), acc[member(x)] || {}, value(x))); }, {})); };\n","import { isPresent, isBlank } from '../utils';\nimport { getter } from '../accessor';\nvar compare = function (a, b) {\n if (isBlank(a)) {\n return a === b ? 0 : -1;\n }\n if (isBlank(b)) {\n return 1;\n }\n if (a.localeCompare) {\n return a.localeCompare(b);\n }\n return a > b ? 1 : (a < b ? -1 : 0);\n};\nvar compareDesc = function (a, b) { return compare(b, a); };\nvar descriptorAsFunc = function (descriptor) {\n var prop = getter(descriptor.field, true);\n return function (a, b) { return (descriptor.dir === 'asc' ? compare : compareDesc)(prop(a), prop(b)); };\n};\nvar initial = function (_a, _b) { return 0; };\n// tslint:disable:max-line-length\n/**\n * Converts the `SortDescriptors` into a [`Comparer`]({% slug api_kendo-data-query_comparer %}) function that can be used through `Array.sort`. If multiple descriptors are provided, sorting is applied in a right-to-left order.\n * @param {SortDescriptor[]} descriptors - The descriptors which will be converted.\n * @returns {Comparer} - The produced function.\n *\n * @example\n * ```ts-no-run\n * import { composeSortDescriptors } from '@progress/kendo-data-query';\n *\n * const data = [{ name: \"Pork\" }, { name: \"Pepper\" }, { name: \"Beef\" } ];\n * const comparer = composeSortDescriptors([{ field: \"name\", dir: \"asc\" }]);\n * const result = data.sort(comparer);\n * // output: [{ name: \"Beef\" }, { name: \"Pepper\" }, { name: \"Pork\" }];\n * ```\n */\n// tslint:enable:max-line-length\nexport var composeSortDescriptors = function (descriptors) { return (descriptors\n .filter(function (x) { return isPresent(x.dir); })\n .map(function (descriptor) { return descriptorAsFunc(descriptor); })\n .reduce(function (acc, curr) { return function (a, b) { return acc(a, b) || curr(a, b); }; }, initial)); };\n","import { isPresent, isNumeric, isDate } from './utils';\nimport { getter } from './accessor';\nvar valueToString = function (value) {\n value = isPresent(value) && value.getTime ? value.getTime() : value;\n return value + \"\";\n};\n/**\n * @hidden\n */\nexport var groupCombinator = function (field) {\n var prop = getter(field, true);\n var position = 0;\n return function (agg, value) {\n agg[field] = agg[field] || {};\n var groupValue = prop(value);\n var key = valueToString(groupValue);\n var values = agg[field][key] || { __position: position++, aggregates: {}, items: [], value: groupValue };\n values.items.push(value);\n agg[field][key] = values;\n return agg;\n };\n};\n/**\n * @hidden\n */\nexport var expandAggregates = function (result) {\n if (result === void 0) { result = {}; }\n Object.keys(result).forEach(function (field) {\n var aggregates = result[field];\n Object.keys(aggregates).forEach(function (aggregate) {\n aggregates[aggregate] = aggregates[aggregate].result();\n });\n });\n return result;\n};\nvar aggregatesFuncs = function (name) { return ({\n average: function () {\n var value = 0;\n var count = 0;\n return {\n calc: function (curr) {\n if (isNumeric(curr)) {\n value += curr;\n count++;\n }\n else {\n value = curr;\n }\n },\n result: function () { return isNumeric(value) ? value / count : value; }\n };\n },\n count: function () {\n var state = 0;\n return {\n calc: function () { return state++; },\n result: function () { return state; }\n };\n },\n max: function () {\n var state = Number.NEGATIVE_INFINITY;\n return {\n calc: function (value) {\n state = isNumeric(state) || isDate(state) ? state : value;\n if (state < value && (isNumeric(value) || isDate(value))) {\n state = value;\n }\n },\n result: function () { return state; }\n };\n },\n min: function () {\n var state = Number.POSITIVE_INFINITY;\n return {\n calc: function (value) {\n state = isNumeric(state) || isDate(state) ? state : value;\n if (state > value && (isNumeric(value) || isDate(value))) {\n state = value;\n }\n },\n result: function () { return state; }\n };\n },\n sum: function () {\n var state = 0;\n return {\n calc: function (value) { return state += value; },\n result: function () { return state; }\n };\n }\n}[name]()); };\n/**\n * @hidden\n */\nexport var aggregatesCombinator = function (descriptors) {\n var functions = descriptors.map(function (descriptor) {\n var fieldAccessor = getter(descriptor.field, true);\n var aggregateName = (descriptor.aggregate || \"\").toLowerCase();\n var aggregateAccessor = getter(aggregateName, true);\n return function (state, value) {\n var fieldAggregates = state[descriptor.field] || {};\n var aggregateFunction = aggregateAccessor(fieldAggregates)\n || aggregatesFuncs(aggregateName);\n aggregateFunction.calc(fieldAccessor(value));\n fieldAggregates[descriptor.aggregate] = aggregateFunction;\n state[descriptor.field] = fieldAggregates;\n return state;\n };\n });\n return function (state, value) { return functions.reduce(function (agg, calc) { return calc(agg, value); }, state); };\n};\n/**\n * @hidden\n * Adds the value to the `arr` and produces a new array.\n *\n * > The original array will be modified.\n */\nexport var concat = function (arr, value) {\n arr.push(value);\n return arr;\n};\n/**\n * @hidden\n * Returns a reducer that will apply the specified transformation to the value.\n */\nexport var map = function (transform) { return (function (reduce) { return (function (acc, curr, index) { return reduce(acc, transform(curr, index)); }); }); };\n/**\n * @hidden\n * Returns a reducer that will filter out items which do not match the `Predicate`.\n */\nexport var filter = function (predicate) { return (function (reduce) { return (function (acc, curr) { return predicate(curr) ? reduce(acc, curr) : acc; }); }); };\n/**\n * @hidden\n */\nexport var isTransformerResult = function (source) {\n return isPresent(source.__value);\n};\nvar reduced = function (x) {\n if (isTransformerResult(x)) {\n return x;\n }\n return {\n __value: x,\n reduced: true\n };\n};\n/**\n * @hidden\n * Returns a reducer that will take the specified number of items.\n */\nexport var take = function (count) { return (function (reduce) { return (function (acc, curr) { return count-- > 0 ? reduce(acc, curr) : reduced(acc); }); }); };\n/**\n * @hidden\n * Returns a reducer that will take the specified number of items.\n */\nexport var takeWhile = function (predicate) { return (function (reduce) { return (function (acc, curr) { return predicate(curr) ? reduce(acc, curr) : reduced(acc); }); }); };\n/**\n * @hidden\n * Returns a reducer that will skip the specified number of items.\n */\nexport var skip = function (count) { return (function (reduce) { return (function (acc, curr) { return count-- <= 0 ? reduce(acc, curr) : acc; }); }); };\n/**\n * @hidden\n * Transforms the data by applying the supplied transformer.\n */\nexport var exec = function (transform, initialValue, data) {\n var result = initialValue;\n for (var idx = 0, length_1 = data.length; idx < length_1; idx++) {\n result = transform(result, data[idx], idx);\n if (isTransformerResult(result)) {\n result = result.__value;\n break;\n }\n }\n return result;\n};\n","import { isPresent, isString, isArray } from '../utils';\nimport { isCompositeFilterDescriptor } from './filter-descriptor.interface';\nvar operatorMap = function (key) { return ({\n \"!=\": \"neq\",\n \"<\": \"lt\",\n \"<=\": \"lte\",\n \"==\": \"eq\",\n \">\": \"gt\",\n \">=\": \"gte\",\n equal: \"eq\",\n equals: \"eq\",\n equalto: \"eq\",\n ge: \"gte\",\n greater: \"gt\",\n greaterthan: \"gt\",\n greaterthanequal: \"gte\",\n isempty: \"isempty\",\n isequalto: \"eq\",\n isgreaterthan: \"gt\",\n isgreaterthanorequalto: \"gte\",\n islessthan: \"lt\",\n islessthanorequalto: \"lte\",\n isnotempty: \"isnotempty\",\n isnotequalto: \"neq\",\n isnull: \"isnull\",\n le: \"lte\",\n less: \"lt\",\n lessthan: \"lt\",\n lessthanequal: \"lte\",\n ne: \"neq\",\n notequal: \"neq\",\n notequals: \"neq\",\n notequalto: \"neq\",\n notsubstringof: \"doesnotcontain\"\n}[key.toLowerCase()] || key); };\nvar normalizeOperator = function (descriptor) {\n if (descriptor.filters) {\n descriptor.filters = descriptor.filters.map(function (filter) {\n var result = Object.assign({}, filter);\n if (!isCompositeFilterDescriptor(filter) && isString(filter.operator)) {\n result.operator = operatorMap(filter.operator);\n }\n if (isCompositeFilterDescriptor(filter)) {\n normalizeOperator(result);\n }\n return result;\n });\n }\n};\nvar normalizeDescriptor = function (descriptor) {\n if (!isCompositeFilterDescriptor(descriptor)) {\n return {\n filters: isArray(descriptor) ? descriptor : [descriptor],\n logic: \"and\"\n };\n }\n return Object.assign({}, descriptor);\n};\n// tslint:disable:max-line-length\n/**\n * Converts a [`FilterDescriptor`]({% slug api_kendo-data-query_filterdescriptor %}) into a [`CompositeFilterDescriptor`]({% slug api_kendo-data-query_compositefilterdescriptor %}). If a `CompositeFilterDescriptor` is passed, no modifications will be made.\n *\n * @param {CompositeFilterDescriptor | FilterDescriptor} descriptor - The descriptor that will be normalized.\n * @returns {CompositeFilterDescriptor} - The normalized descriptor.\n */\n// tslint:enable:max-line-length\nexport var normalizeFilters = function (descriptor) {\n if (isPresent(descriptor)) {\n descriptor = normalizeDescriptor(descriptor);\n normalizeOperator(descriptor);\n }\n return descriptor;\n};\n","import { exec, map, aggregatesCombinator, expandAggregates } from '../transducers';\nvar identity = map(function (x) { return x; });\n// tslint:disable:max-line-length\n/**\n * Applies the specified [`AggregateDescriptors`]({% slug api_kendo-data-query_aggregatedescriptor %}) to the data. Returns an [`AggregateResult`]({% slug api_kendo-data-query_aggregateresult %}) instance.\n *\n * @example\n * ```ts-no-run\n * const data = [\n * { unitPrice: 23, unitsInStock: 21 },\n * { unitPrice: 10, unitsInStock: 12 },\n * { unitPrice: 20, unitsInStock: 33 }\n * ];\n *\n * const result = aggregateBy(data, [\n * { aggregate: \"sum\", field: \"unitPrice\" },\n * { aggregate: \"sum\", field: \"unitsInStock\" }\n * ]);\n *\n * //output:\n * // {\n * // \"unitPrice\": { \"sum\": 53 },\n * // \"unitsInStock\": { \"sum\": 66 }\n * // }\n * ```\n * @param {T[]} data - The data on which the calculation will be executed.\n * @param {AggregateDescriptor[]} descriptors - The aggregate operations that will be executed.\n * @param {any} transformers - For internal use.\n * @returns {AggregateResult} - The aggregated result.\n * For more information, refer to the [`aggregateresult`]({% slug api_kendo-data-query_aggregateresult %}) configuration.\n */\n// tslint:enable:max-line-length\nexport var aggregateBy = function (data, descriptors, transformers) {\n if (descriptors === void 0) { descriptors = []; }\n if (transformers === void 0) { transformers = identity; }\n var initialValue = {};\n if (!descriptors.length) {\n return initialValue;\n }\n var result = exec(transformers(aggregatesCombinator(descriptors)), initialValue, data);\n return expandAggregates(result);\n};\n","import { isCompositeFilterDescriptor } from \"./filter-descriptor.interface\";\nimport { getter } from \"../accessor\";\nimport { isFunction, isPresent, isDate, isString, isBlank, isNumeric } from \"../utils\";\nvar logic = {\n \"or\": {\n concat: function (acc, fn) { return function (a) { return acc(a) || fn(a); }; },\n identity: function () { return false; }\n },\n \"and\": {\n concat: function (acc, fn) { return function (a) { return acc(a) && fn(a); }; },\n identity: function () { return true; }\n }\n};\nvar operatorsMap = {\n contains: function (a, b) { return (a || \"\").indexOf(b) >= 0; },\n doesnotcontain: function (a, b) { return (a || \"\").indexOf(b) === -1; },\n doesnotendwith: function (a, b) { return (a || \"\").indexOf(b, (a || \"\").length - (b || \"\").length) < 0; },\n doesnotstartwith: function (a, b) { return (a || \"\").lastIndexOf(b, 0) === -1; },\n endswith: function (a, b) { return (a || \"\").indexOf(b, (a || \"\").length - (b || \"\").length) >= 0; },\n eq: function (a, b) { return a === b; },\n gt: function (a, b) { return a > b; },\n gte: function (a, b) { return a >= b; },\n isempty: function (a) { return a === ''; },\n isnotempty: function (a) { return a !== ''; },\n isnotnull: function (a) { return isPresent(a); },\n isnull: function (a) { return isBlank(a); },\n lt: function (a, b) { return a < b; },\n lte: function (a, b) { return a <= b; },\n neq: function (a, b) { return a != b; },\n startswith: function (a, b) { return (a || \"\").lastIndexOf(b, 0) === 0; }\n};\nvar dateRegExp = /^\\/Date\\((.*?)\\)\\/$/;\nvar convertValue = function (value, ignoreCase) {\n if (value != null && isString(value)) {\n var date = dateRegExp.exec(value);\n if (date) {\n return new Date(+date[1]).getTime();\n }\n else if (ignoreCase) {\n return value.toLowerCase();\n }\n }\n else if (value != null && isDate(value)) {\n return value.getTime();\n }\n return value;\n};\nvar typedGetter = function (prop, value, ignoreCase) {\n if (!isPresent(value)) {\n return prop;\n }\n var acc = prop;\n if (isString(value)) {\n var date = dateRegExp.exec(value);\n if (date) {\n value = new Date(+date[1]);\n }\n else {\n acc = function (a) {\n var x = prop(a);\n if (typeof x === 'string' && ignoreCase) {\n return x.toLowerCase();\n }\n else {\n return isNumeric(x) ? x + \"\" : x;\n }\n };\n }\n }\n if (isDate(value)) {\n return function (a) {\n var x = acc(a);\n return isDate(x) ? x.getTime() : x;\n };\n }\n return acc;\n};\nvar transformFilter = function (_a) {\n var field = _a.field, ignoreCase = _a.ignoreCase, value = _a.value, operator = _a.operator;\n field = !isPresent(field) ? function (a) { return a; } : field;\n ignoreCase = isPresent(ignoreCase) ? ignoreCase : true;\n var itemProp = typedGetter(isFunction(field) ? field : getter(field, true), value, ignoreCase);\n value = convertValue(value, ignoreCase);\n var op = isFunction(operator) ? operator : operatorsMap[operator];\n return function (a) { return op(itemProp(a), value, ignoreCase); };\n};\n/**\n * @hidden\n */\nexport var transformCompositeFilter = function (filter) {\n var combiner = logic[filter.logic];\n return filter.filters\n .filter(isPresent)\n .map(function (x) { return isCompositeFilterDescriptor(x) ? transformCompositeFilter(x) : transformFilter(x); })\n .reduce(combiner.concat, combiner.identity);\n};\n","import { isPresent } from '../utils';\nimport { isCompositeFilterDescriptor } from './filter-descriptor.interface';\nimport { normalizeFilters } from './filter.operators';\nimport { transformCompositeFilter } from \"./filter-no-eval\";\n// tslint:disable:max-line-length\n/**\n * Creates a [`Predicate`]({% slug api_kendo-data-query_predicate %}) function for the specified [`CompositeFilterDescriptor`]({% slug api_kendo-data-query_compositefilterdescriptor %}).\n *\n * @param {CompositeFilterDescriptor} descriptor - The descriptor for which the predicate is created.\n * @returns {Predicate} - The created function instance.\n *\n * @example\n * ```ts-no-run\n * import { compileFilter } from '@progress/kendo-data-query';\n *\n * const data = [{ name: \"Pork\" }, { name: \"Pepper\" }, { name: \"Beef\" } ];\n * const predicate = compileFilter({ logic: \"and\", filters: [{ field: \"name\", operator: \"startswith\", value: \"P\" }] });\n * const result = data.filter(predicate);\n *\n * ```\n */\n// tslint:enable:max-line-length\nexport var compileFilter = function (descriptor) {\n if (!descriptor || descriptor.filters.length === 0) {\n return function () { return true; };\n }\n return transformCompositeFilter(descriptor);\n};\n// tslint:disable:max-line-length\n/**\n * Filters the provided array according to the specified [`CompositeFilterDescriptor`]({% slug api_kendo-data-query_compositefilterdescriptor %}).\n *\n * @param {T[]} data - The data that will be filtered.\n * @param {(CompositeFilterDescriptor | FilterDescriptor)} descriptor - The filter criteria that will be applied.\n * @returns {T[]} - The filtered data.\n *\n * @example\n * ```ts-no-run\n * import { filterBy } from '@progress/kendo-data-query';\n *\n * const data = [\n * { name: \"Pork\", category: \"Food\", subcategory: \"Meat\" },\n * { name: \"Pepper\", category: \"Food\", subcategory: \"Vegetables\" },\n * { name: \"Beef\", category: \"Food\", subcategory: \"Meat\" }\n * ];\n *\n * const result = filterBy(data, {\n * logic: 'and',\n * filters: [\n * { field: \"name\", operator: \"startswith\", value: \"p\", ignoreCase: true },\n * { field: \"subcategory\", operator: \"eq\", value: \"Meat\" },\n * ]\n * });\n *\n * // output:\n * // [{ \"name\": \"Pork\", \"category\": \"Food\", \"subcategory\": \"Meat\" }]\n * ```\n */\n// tslint:enable:max-line-length\nexport var filterBy = function (data, descriptor) {\n if (!isPresent(descriptor) || (isCompositeFilterDescriptor(descriptor) && descriptor.filters.length === 0)) {\n return data;\n }\n return data.filter(compileFilter(normalizeFilters(descriptor)));\n};\n","var merge = function (data, left, middle, right, compare) {\n var leftLength = middle - left;\n var rightLength = right - middle;\n var temp = [];\n for (var idx = 0; idx < leftLength; idx++) {\n temp.push(data[left + idx]);\n }\n var cursor1 = 0;\n var cursor2 = middle;\n var dest = left;\n do {\n if (compare(data[cursor2], temp[cursor1]) < 0) {\n data[dest++] = data[cursor2++];\n rightLength--;\n }\n else {\n data[dest++] = temp[cursor1++];\n leftLength--;\n }\n } while (rightLength > 0 && leftLength > 0);\n while (leftLength) {\n data[dest++] = temp[cursor1++];\n leftLength--;\n }\n while (rightLength) {\n data[dest++] = data[cursor2++];\n rightLength--;\n }\n};\n/**\n * @hidden\n */\nexport var sort = function (data, start, end, compare) {\n if (end - start < 2) {\n return;\n }\n var mid = (start + end) >>> 1; // tslint:disable-line:no-bitwise\n sort(data, start, mid, compare);\n sort(data, mid, end, compare);\n merge(data, start, mid, end, compare);\n};\n","import { exec, map, groupCombinator } from '../transducers';\nimport { isArray, isPresent } from '../utils';\nimport { aggregateBy } from './aggregate.operators';\nimport { filterBy } from '../filtering/filter-expression.factory';\n/**\n * @hidden\n */\nexport var normalizeGroups = function (descriptors) {\n descriptors = isArray(descriptors) ? descriptors : [descriptors];\n return descriptors.map(function (x) { return Object.assign({ dir: \"asc\" }, x); });\n};\nvar identity = map(function (x) { return x; });\n/**\n * Groups the provided data according to the specified descriptors.\n *\n * @param {Array} data - The data that will be grouped.\n * @param {GroupDescriptor[]} descriptors - The descriptors.\n * @param {any} transformers - For internal use.\n * @param {Array} originalData - For internal use.\n * @returns {(Array> | T[])} - The grouped data.\n *\n * @example\n * ```ts-no-run\n *\n * import { groupBy } from '@progress/kendo-data-query';\n *\n * const data = [\n * { name: \"Pork\", category: \"Food\", subcategory: \"Meat\" },\n * { name: \"Pepper\", category: \"Food\", subcategory: \"Vegetables\" },\n * { name: \"Beef\", category: \"Food\", subcategory: \"Meat\" }\n * ];\n *\n * const result = groupBy(data, [{ field: \"subcategory\" }]);\n * ```\n */\nexport var groupBy = function (data, descriptors, transformers, originalData) {\n if (descriptors === void 0) { descriptors = []; }\n if (transformers === void 0) { transformers = identity; }\n if (originalData === void 0) { originalData = data; }\n descriptors = normalizeGroups(descriptors);\n if (!descriptors.length) {\n return data;\n }\n var descriptor = descriptors[0];\n var initialValue = {};\n var view = exec(transformers(groupCombinator(descriptor.field)), initialValue, data);\n var result = [];\n Object.keys(view).forEach(function (field) {\n Object.keys(view[field]).forEach(function (value) {\n var group = view[field][value];\n var aggregateResult = {};\n var filteredData = originalData;\n if (isPresent(descriptor.aggregates)) {\n filteredData = filterBy(originalData, {\n field: descriptor.field,\n ignoreCase: false,\n operator: 'eq',\n value: group.value\n });\n aggregateResult = aggregateBy(filteredData, descriptor.aggregates);\n }\n result[group.__position] = {\n aggregates: aggregateResult,\n field: field,\n items: descriptors.length > 1 ?\n groupBy(group.items, descriptors.slice(1), identity, filteredData)\n : group.items,\n value: group.value\n };\n });\n });\n return result;\n};\n","import { isPresent, isString } from './utils';\nimport { composeSortDescriptors } from './sorting/sort-array.operator';\nimport { groupBy, normalizeGroups } from './grouping/group.operators';\nimport { normalizeFilters } from './filtering/filter.operators';\nimport { compileFilter } from './filtering/filter-expression.factory';\nimport { exec, skip, take, filter, concat } from './transducers';\nimport { getter } from './accessor';\nimport { compose } from './funcs';\nimport { sort } from './sorting/sort';\n/**\n * Orders the specified array according to the provided sort descriptors.\n *\n * @param {T[]} data - The data to be sorted.\n * @param {SortDescriptor[]} descriptors - The descriptors by which the data will be sorted.\n * @returns {T[]} - The sorted data.\n *\n * @example\n * ```ts-no-run\n * import { orderBy } from '@progress/kendo-data-query';\n *\n * const data = [\n * { name: \"Pork\", category: \"Food\", subcategory: \"Meat\" },\n * { name: \"Pepper\", category: \"Food\", subcategory: \"Vegetables\" },\n * { name: \"Beef\", category: \"Food\", subcategory: \"Meat\" }\n * ];\n *\n * const result = orderBy(data, [{ field: \"name\", dir: \"asc\" }]);\n * ```\n */\nexport var orderBy = function (data, descriptors) {\n if (descriptors.some(function (x) { return isPresent(x.dir); })) {\n data = data.slice(0);\n var comparer = composeSortDescriptors(descriptors);\n sort(data, 0, data.length, comparer);\n }\n return data;\n};\nvar defaultComparer = function (a, b) { return a === b; };\nvar normalizeComparer = function (comparer) {\n if (isString(comparer)) {\n var accessor_1 = getter(comparer);\n comparer = function (a, b) { return accessor_1(a) === accessor_1(b); };\n }\n return comparer;\n};\nvar _distinct = function (data, comparer) {\n return data.filter(function (x, idx, xs) { return xs.findIndex(comparer.bind(null, x)) === idx; });\n};\n/**\n * Reduces the provided array so it contains only unique values.\n *\n * @param {T[]} data - The array that will be reduced.\n * @param {(Comparer | string)} comparer - An optional custom comparer function or the field name that will be used for comparison.\n * @returns {T[]} - The reduced data.\n *\n * @example\n * ```ts-no-run\n * import { distinct } from '@progress/kendo-data-query';\n *\n * const data = [\n * { name: \"Pork\", category: \"Food\", subcategory: \"Meat\" },\n * { name: \"Pepper\", category: \"Food\", subcategory: \"Vegetables\" },\n * { name: \"Beef\", category: \"Food\", subcategory: \"Meat\" }\n * ];\n *\n * const result = distinct(data, \"subcategory\");\n *\n * // output:\n * // result => [\n * // { name: \"Pork\", category: \"Food\", subcategory: \"Meat\" },\n * // { name: \"Pepper\", category: \"Food\", subcategory: \"Vegetables\" }\n * // ];\n * ```\n */\nexport var distinct = function (data, comparer) {\n if (comparer === void 0) { comparer = defaultComparer; }\n return _distinct(data, normalizeComparer(comparer));\n};\n/**\n * @hidden\n */\nexport var count = function (data, predicate) {\n var counter = 0;\n for (var idx = 0, length_1 = data.length; idx < length_1; idx++) {\n if (predicate(data[idx])) {\n counter++;\n }\n }\n return counter;\n};\n/**\n * @hidden\n */\nexport var limit = function (data, predicate) {\n if (predicate) {\n return data.filter(predicate);\n }\n return data;\n};\n/**\n * Applies the specified operation descriptors to the data.\n *\n * @param {T[]} data - The data to be processed.\n * @param {State} state - The operation descriptors that will be applied to the data.\n * @returns {DataResult} - The processed data.\n *\n * @example\n * ```ts-no-run\n *\n * const result = process(data, {\n * skip: 10,\n * take: 20,\n * group: [{\n * field: 'category.categoryName',\n * aggregates: [\n * { aggregate: \"sum\", field: \"unitPrice\" },\n * { aggregate: \"sum\", field: \"unitsInStock\" }\n * ]\n * }],\n * sort: [{ field: 'productName', dir: 'desc' }],\n * filter: {\n * logic: \"or\",\n * filters: [\n * { field: \"discontinued\", operator: \"eq\", value: true },\n * { field: \"unitPrice\", operator: \"lt\", value: 22 }\n * ]\n * }\n * });\n *\n * ```\n */\nexport var process = function (data, state) {\n var skipCount = state.skip, takeCount = state.take, filterDescriptor = state.filter, sort = state.sort, group = state.group;\n var sortDescriptors = normalizeGroups(group || []).concat(sort || []);\n if (sortDescriptors.length) {\n data = orderBy(data, sortDescriptors);\n }\n var hasFilters = isPresent(filterDescriptor) && filter.length;\n var hasGroups = isPresent(group) && group.length;\n if (!hasFilters && !hasGroups) {\n return {\n data: takeCount ? data.slice(skipCount, skipCount + takeCount) : data,\n total: data.length\n };\n }\n var total;\n var transformers = [];\n var predicate;\n if (hasFilters) {\n predicate = compileFilter(normalizeFilters(filterDescriptor));\n total = count(data, predicate);\n transformers.push(filter(predicate));\n }\n else {\n total = data.length;\n }\n if (isPresent(skipCount) && isPresent(takeCount)) {\n transformers.push(skip(skipCount));\n transformers.push(take(takeCount));\n }\n if (transformers.length) {\n var transform = compose.apply(void 0, transformers);\n var result = hasGroups ?\n groupBy(data, group, transform, limit(data, predicate)) :\n exec(transform(concat), [], data);\n return { data: result, total: total };\n }\n return {\n data: hasGroups ? groupBy(data, group) : data,\n total: total\n };\n};\n","/**\n * @hidden\n */\nvar outerHeight = function (element) {\n if (!element) {\n return 0;\n }\n var wnd = element.ownerDocument.defaultView;\n var computedStyles = wnd.getComputedStyle(element);\n var marginTop = parseFloat(computedStyles.marginTop);\n var marginBottom = parseFloat(computedStyles.marginBottom);\n return element.offsetHeight + marginTop + marginBottom;\n};\n/**\n * @hidden\n */\nvar outerWidth = function (element) {\n if (!element) {\n return 0;\n }\n var wnd = element.ownerDocument.defaultView;\n var computedStyles = wnd.getComputedStyle(element);\n var marginLeft = parseFloat(computedStyles.marginLeft);\n var marginRight = parseFloat(computedStyles.marginRight);\n return element.offsetWidth + marginLeft + marginRight;\n};\n/**\n * @hidden\n */\nvar styles = {\n 'animation-container': 'k-animation-container',\n 'animation-container-relative': 'k-animation-container-relative',\n 'animation-container-fixed': 'k-animation-container-fixed',\n 'push-right-enter': 'k-push-right-enter',\n 'push-right-appear': 'k-push-right-appear',\n 'push-right-enter-active': 'k-push-right-enter-active',\n 'push-right-appear-active': 'k-push-right-appear-active',\n 'push-right-exit': 'k-push-right-exit',\n 'push-right-exit-active': 'k-push-right-exit-active',\n 'push-left-enter': 'k-push-left-enter',\n 'push-left-appear': 'k-push-left-appear',\n 'push-left-enter-active': 'k-push-left-enter-active',\n 'push-left-appear-active': 'k-push-left-appear-active',\n 'push-left-exit': 'k-push-left-exit',\n 'push-left-exit-active': 'k-push-left-exit-active',\n 'push-down-enter': 'k-push-down-enter',\n 'push-down-appear': 'k-push-down-appear',\n 'push-down-enter-active': 'k-push-down-enter-active',\n 'push-down-appear-active': 'k-push-down-appear-active',\n 'push-down-exit': 'k-push-down-exit',\n 'push-down-exit-active': 'k-push-down-exit-active',\n 'push-up-enter': 'k-push-up-enter',\n 'push-up-appear': 'k-push-up-appear',\n 'push-up-enter-active': 'k-push-up-enter-active',\n 'push-up-appear-active': 'k-push-up-appear-active',\n 'push-up-exit': 'k-push-up-exit',\n 'push-up-exit-active': 'k-push-up-exit-active',\n 'expand': 'k-expand',\n 'expand-vertical-enter': 'k-expand-vertical-enter',\n 'expand-vertical-appear': 'k-expand-vertical-appear',\n 'expand-vertical-enter-active': 'k-expand-vertical-enter-active',\n 'expand-vertical-appear-active': 'k-expand-vertical-appear-active',\n 'expand-vertical-exit': 'k-expand-vertical-exit',\n 'expand-vertical-exit-active': 'k-expand-vertical-exit-active',\n 'expand-horizontal-enter': 'k-expand-horizontal-enter',\n 'expand-horizontal-appear': 'k-expand-horizontal-appear',\n 'expand-horizontal-enter-active': 'k-expand-horizontal-enter-active',\n 'expand-horizontal-appear-active': 'k-expand-horizontal-appear-active',\n 'expand-horizontal-exit': 'k-expand-horizontal-exit',\n 'expand-horizontal-exit-active': 'k-expand-horizontal-exit-active',\n 'child-animation-container': 'k-child-animation-container',\n 'fade-enter': 'k-fade-enter',\n 'fade-appear': 'k-fade-appear',\n 'fade-enter-active': 'k-fade-enter-active',\n 'fade-appear-active': 'k-fade-appear-active',\n 'fade-exit': 'k-fade-exit',\n 'fade-exit-active': 'k-fade-exit-active',\n 'zoom-in-enter': 'k-zoom-in-enter',\n 'zoom-in-appear': 'k-zoom-in-appear',\n 'zoom-in-enter-active': 'k-zoom-in-enter-active',\n 'zoom-in-appear-active': 'k-zoom-in-appear-active',\n 'zoom-in-exit': 'k-zoom-in-exit',\n 'zoom-in-exit-active': 'k-zoom-in-exit-active',\n 'zoom-out-enter': 'k-zoom-out-enter',\n 'zoom-out-appear': 'k-zoom-out-appear',\n 'zoom-out-enter-active': 'k-zoom-out-enter-active',\n 'zoom-out-appear-active': 'k-zoom-out-appear-active',\n 'zoom-out-exit': 'k-zoom-out-exit',\n 'zoom-out-exit-active': 'k-zoom-out-exit-active',\n 'slide-in-appear': 'k-slide-in-appear',\n 'centered': 'k-centered',\n 'slide-in-appear-active': 'k-slide-in-appear-active',\n 'slide-down-enter': 'k-slide-down-enter',\n 'slide-down-appear': 'k-slide-down-appear',\n 'slide-down-enter-active': 'k-slide-down-enter-active',\n 'slide-down-appear-active': 'k-slide-down-appear-active',\n 'slide-down-exit': 'k-slide-down-exit',\n 'slide-down-exit-active': 'k-slide-down-exit-active',\n 'slide-up-enter': 'k-slide-up-enter',\n 'slide-up-appear': 'k-slide-up-appear',\n 'slide-up-enter-active': 'k-slide-up-enter-active',\n 'slide-up-appear-active': 'k-slide-up-appear-active',\n 'slide-up-exit': 'k-slide-up-exit',\n 'slide-up-exit-active': 'k-slide-up-exit-active',\n 'slide-right-enter': 'k-slide-right-enter',\n 'slide-right-appear': 'k-slide-right-appear',\n 'slide-right-enter-active': 'k-slide-right-enter-active',\n 'slide-right-appear-active': 'k-slide-right-appear-active',\n 'slide-right-exit': 'k-slide-right-exit',\n 'slide-right-exit-active': 'k-slide-right-exit-active',\n 'slide-left-enter': 'k-slide-left-enter',\n 'slide-left-appear': 'k-slide-left-appear',\n 'slide-left-enter-active': 'k-slide-left-enter-active',\n 'slide-left-appear-active': 'k-slide-left-appear-active',\n 'slide-left-exit': 'k-slide-left-exit',\n 'slide-left-exit-active': 'k-slide-left-exit-active',\n 'reveal-vertical-enter': 'k-reveal-vertical-enter',\n 'reveal-vertical-appear': 'k-reveal-vertical-appear',\n 'reveal-vertical-enter-active': 'k-reveal-vertical-enter-active',\n 'reveal-vertical-appear-active': 'k-reveal-vertical-appear-active',\n 'reveal-vertical-exit': 'k-reveal-vertical-exit',\n 'reveal-vertical-exit-active': 'k-reveal-vertical-exit-active',\n 'reveal-horizontal-enter': 'k-reveal-horizontal-enter',\n 'reveal-horizontal-appear': 'k-reveal-horizontal-appear',\n 'reveal-horizontal-enter-active': 'k-reveal-horizontal-enter-active',\n 'reveal-horizontal-appear-active': 'k-reveal-horizontal-appear-active',\n 'reveal-horizontal-exit': 'k-reveal-horizontal-exit',\n 'reveal-horizontal-exit-active': 'k-reveal-horizontal-exit-active'\n};\n/**\n * @hidden\n */\nexport default {\n outerHeight: outerHeight,\n outerWidth: outerWidth,\n styles: styles\n};\n//# sourceMappingURL=util.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\n t[p[i]] = s[p[i]];\n return t;\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { classNames, noop } from '@progress/kendo-react-common';\nimport { CSSTransition } from 'react-transition-group';\nimport util from './util';\nvar styles = util.styles;\nvar AnimationChild = /** @class */ (function (_super) {\n __extends(AnimationChild, _super);\n function AnimationChild() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Object.defineProperty(AnimationChild.prototype, \"element\", {\n /**\n * The element that is being animated.\n */\n get: function () {\n return this._element;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @hidden\n */\n AnimationChild.prototype.render = function () {\n var _this = this;\n var _a = this.props, children = _a.children, style = _a.style, appear = _a.appear, enter = _a.enter, exit = _a.exit, transitionName = _a.transitionName, transitionEnterDuration = _a.transitionEnterDuration, transitionExitDuration = _a.transitionExitDuration, className = _a.className, onEnter = _a.onEnter, onEntering = _a.onEntering, onEntered = _a.onEntered, onExit = _a.onExit, onExiting = _a.onExiting, onExited = _a.onExited, mountOnEnter = _a.mountOnEnter, unmountOnExit = _a.unmountOnExit, animationEnteringStyle = _a.animationEnteringStyle, animationEnteredStyle = _a.animationEnteredStyle, animationExitingStyle = _a.animationExitingStyle, animationExitedStyle = _a.animationExitedStyle, other = __rest(_a, [\"children\", \"style\", \"appear\", \"enter\", \"exit\", \"transitionName\", \"transitionEnterDuration\", \"transitionExitDuration\", \"className\", \"onEnter\", \"onEntering\", \"onEntered\", \"onExit\", \"onExiting\", \"onExited\", \"mountOnEnter\", \"unmountOnExit\", \"animationEnteringStyle\", \"animationEnteredStyle\", \"animationExitingStyle\", \"animationExitedStyle\"]);\n var childAnimationContainerClassNames = classNames(className, styles['child-animation-container']);\n var defaultStyle = __assign({ transitionDelay: '0ms' }, style);\n var animationStyle = {\n entering: __assign({ transitionDuration: transitionEnterDuration + \"ms\" }, animationEnteringStyle),\n entered: __assign({}, animationEnteredStyle),\n exiting: __assign({ transitionDuration: transitionExitDuration + \"ms\" }, animationExitingStyle),\n exited: __assign({}, animationExitedStyle)\n };\n var transitionProps = {\n in: this.props.in,\n appear: appear,\n enter: enter,\n exit: exit,\n mountOnEnter: mountOnEnter,\n unmountOnExit: unmountOnExit,\n timeout: {\n enter: transitionEnterDuration,\n exit: transitionExitDuration\n },\n onEnter: (function (e) {\n if (onEnter) {\n onEnter.call(undefined, { animatedElement: e, target: _this });\n }\n }),\n onEntering: (function (e) {\n if (onEntering) {\n onEntering.call(undefined, { animatedElement: e, target: _this });\n }\n }),\n onEntered: (function (e) {\n if (onEntered) {\n onEntered.call(undefined, { animatedElement: e, target: _this });\n }\n }),\n onExit: (function (e) {\n if (onExit) {\n onExit.call(undefined, { animatedElement: e, target: _this });\n }\n }),\n onExiting: (function (e) {\n if (onExiting) {\n onExiting.call(undefined, { animatedElement: e, target: _this });\n }\n }),\n onExited: (function (e) {\n if (onExited) {\n onExited.call(undefined, { animatedElement: e, target: _this });\n }\n }),\n classNames: {\n appear: styles[transitionName + \"-appear\"] || transitionName + \"-appear\",\n appearActive: styles[transitionName + \"-appear-active\"] || transitionName + \"-appear-active\",\n enter: styles[transitionName + \"-enter\"] || transitionName + \"-enter\",\n enterActive: styles[transitionName + \"-enter-active\"] || transitionName + \"-enter-active\",\n exit: styles[transitionName + \"-exit\"] || transitionName + \"-exit\",\n exitActive: styles[transitionName + \"-exit-active\"] || transitionName + \"-exit-active\"\n }\n };\n return (React.createElement(CSSTransition, __assign({}, transitionProps, other), function (status) {\n return (React.createElement(\"div\", { style: __assign({}, defaultStyle, animationStyle[status]), className: childAnimationContainerClassNames, ref: function (div) { _this._element = div; } }, children));\n }));\n };\n /**\n * @hidden\n */\n AnimationChild.propTypes = {\n in: PropTypes.bool,\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node\n ]),\n transitionName: PropTypes.string.isRequired,\n className: PropTypes.string,\n appear: PropTypes.bool,\n enter: PropTypes.bool,\n exit: PropTypes.bool,\n transitionEnterDuration: PropTypes.number.isRequired,\n transitionExitDuration: PropTypes.number.isRequired,\n mountOnEnter: PropTypes.bool,\n unmountOnExit: PropTypes.bool,\n animationEnteringStyle: PropTypes.object,\n animationEnteredStyle: PropTypes.object,\n animationExitingStyle: PropTypes.object,\n animationExitedStyle: PropTypes.object\n };\n /**\n * @hidden\n */\n AnimationChild.defaultProps = {\n mountOnEnter: true,\n unmountOnExit: false,\n onEnter: noop,\n onEntering: noop,\n onEntered: noop,\n onExit: noop,\n onExiting: noop,\n onExited: noop,\n animationEnteringStyle: {},\n animationEnteredStyle: {},\n animationExitingStyle: {},\n animationExitedStyle: {}\n };\n return AnimationChild;\n}(React.Component));\nexport { AnimationChild };\n//# sourceMappingURL=AnimationChild.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\n t[p[i]] = s[p[i]];\n return t;\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { classNames } from '@progress/kendo-react-common';\nimport { AnimationChild } from './AnimationChild';\nimport { TransitionGroup } from 'react-transition-group';\nimport util from './util';\nvar styles = util.styles;\n// tslint:enable:max-line-length\nvar Animation = /** @class */ (function (_super) {\n __extends(Animation, _super);\n function Animation() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @hidden\n */\n Animation.prototype.render = function () {\n var _a = this.props, id = _a.id, style = _a.style, children = _a.children, component = _a.component, className = _a.className, childFactory = _a.childFactory, stackChildren = _a.stackChildren, componentChildStyle = _a.componentChildStyle, componentChildClassName = _a.componentChildClassName, other = __rest(_a, [\"id\", \"style\", \"children\", \"component\", \"className\", \"childFactory\", \"stackChildren\", \"componentChildStyle\", \"componentChildClassName\"]);\n var transitionProps = {\n id: id,\n style: style,\n component: component,\n childFactory: childFactory,\n className: classNames(styles['animation-container'], styles['animation-container-relative'], className)\n };\n var content = React.Children.map(children || null, function (child) { return (React.createElement(AnimationChild, __assign({}, other, { style: componentChildStyle, className: componentChildClassName }), child)); });\n return (React.createElement(TransitionGroup, __assign({}, transitionProps), content));\n };\n /**\n * @hidden\n */\n Animation.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node\n ]),\n childFactory: PropTypes.any,\n className: PropTypes.string,\n component: PropTypes.string,\n id: PropTypes.string,\n style: PropTypes.any,\n transitionName: PropTypes.string.isRequired,\n appear: PropTypes.bool.isRequired,\n enter: PropTypes.bool.isRequired,\n exit: PropTypes.bool.isRequired,\n transitionEnterDuration: PropTypes.number.isRequired,\n transitionExitDuration: PropTypes.number.isRequired\n };\n /**\n * @hidden\n */\n Animation.defaultProps = {\n component: 'div'\n };\n return Animation;\n}(React.Component));\nexport { Animation };\n//# sourceMappingURL=Animation.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\n t[p[i]] = s[p[i]];\n return t;\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { Animation } from './Animation';\n// tslint:enable:max-line-length\nvar Fade = /** @class */ (function (_super) {\n __extends(Fade, _super);\n function Fade() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @hidden\n */\n Fade.prototype.render = function () {\n var _a = this.props, children = _a.children, other = __rest(_a, [\"children\"]);\n var animationProps = {\n transitionName: \"fade\"\n };\n return (React.createElement(Animation, __assign({}, animationProps, other), children));\n };\n /**\n * @hidden\n */\n Fade.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node\n ]),\n childFactory: PropTypes.any,\n className: PropTypes.string,\n component: PropTypes.string,\n id: PropTypes.string,\n style: PropTypes.any\n };\n /**\n * @hidden\n */\n Fade.defaultProps = {\n appear: false,\n enter: true,\n exit: false,\n transitionEnterDuration: 500,\n transitionExitDuration: 500\n };\n return Fade;\n}(React.Component));\nexport { Fade };\n//# sourceMappingURL=Fade.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\n t[p[i]] = s[p[i]];\n return t;\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { Animation } from './Animation';\n// tslint:enable:max-line-length\nvar Expand = /** @class */ (function (_super) {\n __extends(Expand, _super);\n function Expand() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @hidden\n */\n Expand.prototype.render = function () {\n var _a = this.props, direction = _a.direction, children = _a.children, other = __rest(_a, [\"direction\", \"children\"]);\n var animationProps = {\n transitionName: \"expand-\" + direction\n };\n return (React.createElement(Animation, __assign({}, animationProps, other), children));\n };\n /**\n * @hidden\n */\n Expand.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node\n ]),\n childFactory: PropTypes.any,\n className: PropTypes.string,\n direction: PropTypes.oneOf([\n 'horizontal',\n 'vertical'\n ]),\n component: PropTypes.string,\n id: PropTypes.string,\n style: PropTypes.any\n };\n /**\n * @hidden\n */\n Expand.defaultProps = {\n appear: false,\n enter: true,\n exit: true,\n transitionEnterDuration: 300,\n transitionExitDuration: 300,\n direction: 'vertical'\n };\n return Expand;\n}(React.Component));\nexport { Expand };\n//# sourceMappingURL=Expand.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\n t[p[i]] = s[p[i]];\n return t;\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { Animation } from './Animation';\nvar EXITING_ANIMATION_STYLE = { position: 'absolute', top: '0', left: '0' };\n// tslint:enable:max-line-length\nvar Push = /** @class */ (function (_super) {\n __extends(Push, _super);\n function Push() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @hidden\n */\n Push.prototype.render = function () {\n var _a = this.props, children = _a.children, direction = _a.direction, other = __rest(_a, [\"children\", \"direction\"]);\n return (React.createElement(Animation, __assign({}, other, { transitionName: \"push-\" + direction, animationExitingStyle: this.props.stackChildren\n ? EXITING_ANIMATION_STYLE\n : undefined }), children));\n };\n /**\n * @hidden\n */\n Push.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node\n ]),\n childFactory: PropTypes.any,\n className: PropTypes.string,\n direction: PropTypes.oneOf([\n 'up',\n 'down',\n 'left',\n 'right'\n ]),\n component: PropTypes.string,\n id: PropTypes.string,\n style: PropTypes.any,\n stackChildren: PropTypes.bool\n };\n /**\n * @hidden\n */\n Push.defaultProps = {\n appear: false,\n enter: true,\n exit: true,\n transitionEnterDuration: 300,\n transitionExitDuration: 300,\n direction: 'right',\n stackChildren: false\n };\n return Push;\n}(React.Component));\nexport { Push };\n//# sourceMappingURL=Push.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\n t[p[i]] = s[p[i]];\n return t;\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { Animation } from './Animation';\n// tslint:enable:max-line-length\nvar Slide = /** @class */ (function (_super) {\n __extends(Slide, _super);\n function Slide() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @hidden\n */\n Slide.prototype.render = function () {\n var _a = this.props, direction = _a.direction, children = _a.children, other = __rest(_a, [\"direction\", \"children\"]);\n var animationProps = {\n transitionName: \"slide-\" + direction\n };\n return (React.createElement(Animation, __assign({}, animationProps, other), children));\n };\n /**\n * @hidden\n */\n Slide.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node\n ]),\n childFactory: PropTypes.any,\n className: PropTypes.string,\n direction: PropTypes.oneOf([\n 'up',\n 'down',\n 'left',\n 'right'\n ]),\n component: PropTypes.string,\n id: PropTypes.string,\n style: PropTypes.any\n };\n /**\n * @hidden\n */\n Slide.defaultProps = {\n appear: false,\n enter: true,\n exit: true,\n transitionEnterDuration: 300,\n transitionExitDuration: 300,\n direction: 'down'\n };\n return Slide;\n}(React.Component));\nexport { Slide };\n//# sourceMappingURL=Slide.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\n t[p[i]] = s[p[i]];\n return t;\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { Animation } from './Animation';\nvar EXITING_ANIMATION_STYLE = { position: 'absolute', top: '0', left: '0' };\n// tslint:enable:max-line-length\nvar Zoom = /** @class */ (function (_super) {\n __extends(Zoom, _super);\n function Zoom() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @hidden\n */\n Zoom.prototype.render = function () {\n var _a = this.props, children = _a.children, direction = _a.direction, other = __rest(_a, [\"children\", \"direction\"]);\n return (React.createElement(Animation, __assign({}, other, { transitionName: \"zoom-\" + direction, animationExitingStyle: this.props.stackChildren\n ? EXITING_ANIMATION_STYLE\n : undefined }), children));\n };\n /**\n * @hidden\n */\n Zoom.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node\n ]),\n childFactory: PropTypes.any,\n className: PropTypes.string,\n direction: PropTypes.oneOf([\n 'in',\n 'out'\n ]),\n component: PropTypes.string,\n id: PropTypes.string,\n style: PropTypes.any,\n stackChildren: PropTypes.bool\n };\n /**\n * @hidden\n */\n Zoom.defaultProps = {\n appear: false,\n enter: true,\n exit: true,\n transitionEnterDuration: 300,\n transitionExitDuration: 300,\n direction: 'out',\n stackChildren: false\n };\n return Zoom;\n}(React.Component));\nexport { Zoom };\n//# sourceMappingURL=Zoom.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\n t[p[i]] = s[p[i]];\n return t;\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { Animation } from './Animation';\nimport { noop } from '@progress/kendo-react-common';\nimport util from './util';\nvar Reveal = /** @class */ (function (_super) {\n __extends(Reveal, _super);\n function Reveal() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /**\n * @hidden\n */\n _this.state = {\n maxHeight: undefined,\n maxWidth: undefined\n };\n _this.componentWillEnter = function (event) {\n var onEnter = _this.props.onEnter;\n _this.updateContainerDimensions(event.animatedElement, function () {\n if (onEnter) {\n onEnter.call(undefined, event);\n }\n });\n };\n _this.componentIsEntering = function (event) {\n var onEntering = _this.props.onEntering;\n _this.updateContainerDimensions(event.animatedElement, function () {\n if (onEntering) {\n onEntering.call(undefined, event);\n }\n });\n };\n _this.componentWillExit = function (event) {\n var onExit = _this.props.onExit;\n _this.updateContainerDimensions(event.animatedElement, function () {\n if (onExit) {\n onExit.call(undefined, event);\n }\n });\n };\n _this.updateContainerDimensions = function (node, done) {\n if (done === void 0) { done = noop; }\n var content = node.firstChild;\n if (content) {\n var newHeight = util.outerHeight(content);\n var newWidth = util.outerWidth(content);\n _this.setState({\n maxHeight: newHeight,\n maxWidth: newWidth\n }, done);\n }\n };\n return _this;\n }\n /**\n * @hidden\n */\n Reveal.prototype.render = function () {\n var _a = this.props, direction = _a.direction, children = _a.children, childFactory = _a.childFactory, other = __rest(_a, [\"direction\", \"children\", \"childFactory\"]);\n var _b = this.state, maxHeight = _b.maxHeight, maxWidth = _b.maxWidth;\n var maxOffset;\n if (direction === 'vertical') {\n maxOffset = { maxHeight: maxHeight ? maxHeight + \"px\" : null };\n }\n else {\n maxOffset = { maxWidth: maxWidth ? maxWidth + \"px\" : null };\n }\n var animationEnteringStyle = {\n maxHeight: maxOffset.maxHeight,\n maxWidth: maxOffset.maxWidth\n };\n var factory = function (child) {\n if (!child.props.in) {\n return React.cloneElement(child, __assign({}, child.props, { style: __assign({}, child.props.style, { maxHeight: maxOffset.maxHeight, maxWidth: maxOffset.maxWidth }) }));\n }\n return child;\n };\n return (React.createElement(Animation, __assign({}, other, { childFactory: childFactory ? childFactory : factory, onEnter: this.componentWillEnter, onEntering: this.componentIsEntering, onExit: this.componentWillExit, animationEnteringStyle: animationEnteringStyle, transitionName: \"reveal-\" + direction }), children));\n };\n /**\n * @hidden\n */\n Reveal.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node\n ]),\n childFactory: PropTypes.any,\n className: PropTypes.string,\n direction: PropTypes.oneOf([\n 'horizontal',\n 'vertical'\n ]),\n component: PropTypes.string,\n id: PropTypes.string,\n style: PropTypes.any\n };\n /**\n * @hidden\n */\n Reveal.defaultProps = {\n appear: false,\n enter: true,\n exit: true,\n transitionEnterDuration: 300,\n transitionExitDuration: 300,\n direction: 'vertical'\n };\n return Reveal;\n}(React.Component));\nexport { Reveal };\n//# sourceMappingURL=Reveal.js.map","/**\n * @hidden\n */\nexport var classNames = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return args\n .filter(function (arg) { return arg !== true && !!arg; })\n .map(function (arg) {\n return Array.isArray(arg)\n ? classNames.apply(void 0, arg) : typeof arg === 'object'\n ? Object\n .keys(arg)\n .map(function (key, idx) { return arg[idx] || (arg[key] && key) || null; })\n .filter(function (el) { return el !== null; })\n .join(' ')\n : arg;\n })\n .filter(function (arg) { return !!arg; })\n .join(' ');\n};\n//# sourceMappingURL=classNames.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { classNames } from './classNames';\n/**\n * @hidden\n */\nvar FloatingLabel = /** @class */ (function (_super) {\n __extends(FloatingLabel, _super);\n function FloatingLabel() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.state = {\n focused: false\n };\n _this.handleFocus = function (_) {\n _this.setState({ focused: true });\n };\n _this.handleBlur = function (_) {\n _this.setState({ focused: false });\n };\n return _this;\n }\n FloatingLabel.prototype.render = function () {\n var _a = this.props, label = _a.label, id = _a.id, className = _a.className, value = _a.value, placeholder = _a.placeholder, valid = _a.valid, style = _a.style;\n var childClassNames = classNames({\n 'k-textbox-container': true,\n 'k-state-focused': this.state.focused,\n 'k-state-empty': !(value || placeholder),\n 'k-state-invalid': !valid && valid !== undefined,\n 'k-rtl': this.props.dir === 'rtl'\n }, className);\n return (React.createElement(\"span\", { className: childClassNames, onFocus: this.handleFocus, onBlur: this.handleBlur, style: style, dir: this.props.dir },\n this.props.children,\n label\n ? id\n ? React.createElement(\"label\", { htmlFor: id, className: \"k-label\" }, label)\n : React.createElement(\"span\", { className: \"k-label\" }, label)\n : null));\n };\n FloatingLabel.propTypes = {\n label: PropTypes.string,\n id: PropTypes.string,\n value: PropTypes.string,\n placeholder: PropTypes.string,\n valid: PropTypes.bool\n };\n return FloatingLabel;\n}(React.Component));\nexport default FloatingLabel;\n//# sourceMappingURL=FloatingLabel.js.map","/* tslint:disable:no-bitwise */\n/**\n * @hidden\n */\nvar guid = function () {\n var id = '';\n var i;\n var random;\n for (i = 0; i < 32; i++) {\n random = Math.random() * 16 | 0;\n if (i === 8 || i === 12 || i === 16 || i === 20) {\n id += '-';\n }\n id += (i === 12 ? 4 : (i === 16 ? (random & 3 | 8) : random)).toString(16);\n }\n return id;\n};\nexport { guid };\n//# sourceMappingURL=guid.js.map","/**\n * @hidden\n */\nvar Keys = {\n backspace: 8,\n tab: 9,\n enter: 13,\n shift: 16,\n esc: 27,\n space: 32,\n pageUp: 33,\n pageDown: 34,\n end: 35,\n home: 36,\n left: 37,\n up: 38,\n right: 39,\n down: 40,\n delete: 46\n};\nexport { Keys };\n//# sourceMappingURL=keys.js.map","/**\n * @hidden\n */\nvar noop = function () { };\nexport { noop };\n//# sourceMappingURL=noop.js.map","/**\n * @hidden\n * Dispatches a new event based on an event that was already internally dispatched to KendoReact users.\n *\n * @param eventHandler - The public event handler that is assigned by the user.\n * When undefined, the method is not an option.\n * @param dispatchedEvent - The event that was already dispatched internally.\n * @param target - The target component of the new event.\n * @param eventData - The additional data that will be passed through the new event.\n * When the new event has no additional data\n * other than the `BaseEvent` arguments, pass `undefined`.\n */\nexport default function dispatchEvent(eventHandler, dispatchedEvent, target, eventData) {\n if (eventHandler) {\n var eventBaseData = {\n syntheticEvent: dispatchedEvent,\n nativeEvent: dispatchedEvent.nativeEvent,\n target: target\n };\n eventHandler.call(undefined, Object.assign(eventBaseData, eventData));\n }\n}\n//# sourceMappingURL=dispatchEvent.js.map","/**\n * @hidden\n */\nvar canUseDOM = Boolean(\n// from fbjs\ntypeof window !== 'undefined' &&\n window.document &&\n window.document.createElement);\nexport { canUseDOM };\n//# sourceMappingURL=canUseDOM.js.map","var proxy = function (a, b) { return function (e) { return b(a(e)); }; };\n\nvar bind = function (el, event, callback) { return el.addEventListener && el.addEventListener(event, callback); };\n\nvar unbind = function (el, event, callback) { return el && el.removeEventListener && el.removeEventListener(event, callback); };\n\nvar noop = function () { /* empty */ };\n\nvar preventDefault = function (e) { return e.preventDefault(); };\n\nvar touchRegExp = /touch/;\n\n// 300ms is the usual mouse interval;\n// // However, an underpowered mobile device under a heavy load may queue mouse events for a longer period.\nvar IGNORE_MOUSE_TIMEOUT = 2000;\n\nfunction normalizeEvent(e) {\n if (e.type.match(touchRegExp)) {\n return {\n pageX: e.changedTouches[0].pageX,\n pageY: e.changedTouches[0].pageY,\n clientX: e.changedTouches[0].clientX,\n clientY: e.changedTouches[0].clientY,\n type: e.type,\n originalEvent: e,\n isTouch: true\n };\n }\n\n return {\n pageX: e.pageX,\n pageY: e.pageY,\n clientX: e.clientX,\n clientY: e.clientY,\n offsetX: e.offsetX,\n offsetY: e.offsetY,\n type: e.type,\n ctrlKey: e.ctrlKey,\n shiftKey: e.shiftKey,\n altKey: e.altKey,\n originalEvent: e\n };\n}\n\nexport var Draggable = function Draggable(ref) {\n var this$1 = this;\n var press = ref.press; if ( press === void 0 ) press = noop;\n var drag = ref.drag; if ( drag === void 0 ) drag = noop;\n var release = ref.release; if ( release === void 0 ) release = noop;\n var mouseOnly = ref.mouseOnly; if ( mouseOnly === void 0 ) mouseOnly = false;\n\n this._pressHandler = proxy(normalizeEvent, press);\n this._dragHandler = proxy(normalizeEvent, drag);\n this._releaseHandler = proxy(normalizeEvent, release);\n this._ignoreMouse = false;\n this._mouseOnly = mouseOnly;\n\n this._touchstart = function (e) {\n if (e.touches.length === 1) {\n this$1._pressHandler(e);\n }\n };\n\n this._touchmove = function (e) {\n if (e.touches.length === 1) {\n this$1._dragHandler(e);\n }\n };\n\n this._touchend = function (e) {\n // the last finger has been lifted, and the user is not doing gesture.\n // there might be a better way to handle this.\n if (e.touches.length === 0 && e.changedTouches.length === 1) {\n this$1._releaseHandler(e);\n this$1._ignoreMouse = true;\n setTimeout(this$1._restoreMouse, IGNORE_MOUSE_TIMEOUT);\n }\n };\n\n this._restoreMouse = function () {\n this$1._ignoreMouse = false;\n };\n\n this._mousedown = function (e) {\n var which = e.which;\n\n if ((which && which > 1) || this$1._ignoreMouse) {\n return;\n }\n\n bind(document, \"mousemove\", this$1._mousemove);\n bind(document, \"mouseup\", this$1._mouseup);\n this$1._pressHandler(e);\n };\n\n this._mousemove = function (e) {\n this$1._dragHandler(e);\n };\n\n this._mouseup = function (e) {\n unbind(document, \"mousemove\", this$1._mousemove);\n unbind(document, \"mouseup\", this$1._mouseup);\n this$1._releaseHandler(e);\n };\n\n this._pointerdown = function (e) {\n if (e.isPrimary && e.button === 0) {\n bind(document, \"pointermove\", this$1._pointermove);\n bind(document, \"pointerup\", this$1._pointerup);\n bind(document, \"pointercancel\", this$1._pointerup);\n bind(document, \"contextmenu\", preventDefault);\n\n this$1._pressHandler(e);\n }\n };\n\n this._pointermove = function (e) {\n if (e.isPrimary) {\n this$1._dragHandler(e);\n }\n };\n\n this._pointerup = function (e) {\n if (e.isPrimary) {\n unbind(document, \"pointermove\", this$1._pointermove);\n unbind(document, \"pointerup\", this$1._pointerup);\n unbind(document, \"pointercancel\", this$1._pointerup);\n unbind(document, \"contextmenu\", preventDefault);\n\n this$1._releaseHandler(e);\n }\n };\n};\n\nDraggable.supportPointerEvent = function supportPointerEvent () {\n return (typeof window !== 'undefined') && window.PointerEvent;\n};\n\nDraggable.prototype.bindTo = function bindTo (element) {\n if (element === this._element) {\n return;\n }\n\n if (this._element) {\n this._unbindFromCurrent();\n }\n\n this._element = element;\n this._bindToCurrent();\n};\n\nDraggable.prototype._bindToCurrent = function _bindToCurrent () {\n var element = this._element;\n\n if (this._usePointers()) {\n bind(element, \"pointerdown\", this._pointerdown);\n return;\n }\n\n bind(element, \"mousedown\", this._mousedown);\n\n if (!this._mouseOnly) {\n bind(element, \"touchstart\", this._touchstart);\n bind(element, \"touchmove\", this._touchmove);\n bind(element, \"touchend\", this._touchend);\n }\n};\n\nDraggable.prototype._unbindFromCurrent = function _unbindFromCurrent () {\n var element = this._element;\n\n if (this._usePointers()) {\n unbind(element, \"pointerdown\", this._pointerdown);\n unbind(document, \"pointermove\", this._pointermove);\n unbind(document, \"pointerup\", this._pointerup);\n unbind(document, \"contextmenu\", preventDefault);\n unbind(document, \"pointercancel\", this._pointerup);\n return;\n }\n\n unbind(element, \"mousedown\", this._mousedown);\n\n if (!this._mouseOnly) {\n unbind(element, \"touchstart\", this._touchstart);\n unbind(element, \"touchmove\", this._touchmove);\n unbind(element, \"touchend\", this._touchend);\n }\n};\n\nDraggable.prototype._usePointers = function _usePointers () {\n return !this._mouseOnly && Draggable.supportPointerEvent();\n};\n\nDraggable.prototype.destroy = function destroy () {\n this._unbindFromCurrent();\n this._element = null;\n};\n\n// Re-export as \"default\" field to address a bug\n// where the ES Module is imported by CommonJS code.\n//\n// See https://github.com/telerik/kendo-angular/issues/1314\nDraggable.default = Draggable;\n\n// Rollup won't output exports['default'] otherwise\nexport default Draggable;\n\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport KendoDraggable from '@telerik/kendo-draggable';\n/**\n * @hidden\n */\nvar Draggable = /** @class */ (function (_super) {\n __extends(Draggable, _super);\n function Draggable() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /**\n * @hidden\n */\n _this.element = null;\n _this.draggable = new KendoDraggable({\n press: function (event) {\n if (_this.element && _this.props.onPress) {\n _this.props.onPress.call(undefined, {\n target: _this,\n event: event,\n element: _this.element\n });\n }\n },\n drag: function (event) {\n if (_this.element && _this.props.onDrag) {\n _this.props.onDrag.call(undefined, {\n target: _this,\n event: event,\n element: _this.element\n });\n }\n },\n release: function (event) {\n if (_this.element && _this.props.onRelease) {\n _this.props.onRelease.call(undefined, {\n target: _this,\n event: event\n });\n }\n }\n });\n _this.assingRef = function (element) {\n _this.element = element;\n };\n return _this;\n }\n Draggable.prototype.componentDidMount = function () {\n if (this.element) {\n this.draggable.bindTo(this.element);\n }\n };\n Draggable.prototype.componentWillUnmount = function () {\n this.draggable.destroy();\n };\n Draggable.prototype.render = function () {\n return (React.cloneElement(React.Children.only(this.props.children), {\n ref: this.assingRef\n }));\n };\n Draggable.propTypes = {\n children: PropTypes.element.isRequired\n };\n return Draggable;\n}(React.Component));\nexport { Draggable };\n//# sourceMappingURL=Draggable.js.map","/**\n * @hidden\n */\nexport var focusFirstFocusableChild = function (element) {\n if (element) {\n // should focus wrapper if it's focusable in future versions\n var elements = element.querySelectorAll('input, [tabindex]:not([tabindex=\"-1\"])');\n if (elements.length && elements[0].focus) {\n elements[0].focus();\n }\n }\n};\n//# sourceMappingURL=focus.js.map","import * as React from 'react';\n/**\n * @hidden\n */\nexport var useRtl = function (elementRef, initialDir) {\n // Dir prop is read only on initial rendering due to specifics of getComputedStyles - see below\n var _a = React.useState(initialDir), rtl = _a[0], setRtl = _a[1];\n React.useEffect(function () {\n if (!rtl && window && elementRef.current) {\n // Note: getComputedStyle forces reflow\n var rtlCandidate = window.getComputedStyle(elementRef.current).direction;\n if (rtlCandidate) {\n // rerender is needed as DOM is read after first render\n setRtl(rtlCandidate);\n }\n }\n }, []);\n return rtl;\n};\n//# sourceMappingURL=hooks.js.map","/**\n * @hidden\n */\nvar DISABLED_TABINDEX = -1;\n/**\n * @hidden\n */\nvar DEFAULT_TABINDEX = 0;\n/**\n * @hidden\n */\nexport var getTabIndex = function (tabIndex, disabled, useDefaultTabIndexWhenDisabled) {\n var parsedTabIndex = typeof tabIndex === 'string' ? parseInt(tabIndex, undefined) : tabIndex;\n if (parsedTabIndex === NaN) {\n return undefined;\n }\n return parsedTabIndex !== undefined\n ? parsedTabIndex\n : disabled ?\n (useDefaultTabIndexWhenDisabled ? undefined : DISABLED_TABINDEX)\n : DEFAULT_TABINDEX;\n};\n//# sourceMappingURL=getTabIndex.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport { Popup } from '@progress/kendo-react-popup';\n/**\n * @hidden\n */\nvar ListContainer = /** @class */ (function (_super) {\n __extends(ListContainer, _super);\n function ListContainer() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ListContainer.prototype.render = function () {\n var _a = this.props, children = _a.children, onMouseDown = _a.onMouseDown, onBlur = _a.onBlur, width = _a.width, dir = _a.dir, popupSettings = _a.popupSettings;\n return (React.createElement(Popup, __assign({ style: { width: width, direction: dir } }, popupSettings),\n React.createElement(\"div\", { onMouseDown: onMouseDown, onBlur: onBlur }, children)));\n };\n return ListContainer;\n}(React.Component));\nexport default ListContainer;\n//# sourceMappingURL=ListContainer.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\n/**\n * @hidden\n */\nvar ListFilter = /** @class */ (function (_super) {\n __extends(ListFilter, _super);\n function ListFilter() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ListFilter.prototype.render = function () {\n var _this = this;\n return (React.createElement(\"span\", { className: \"k-list-filter\" },\n React.createElement(\"input\", { ref: function (input) { return _this.input = input; }, value: this.props.value || '', className: \"k-textbox\", onChange: this.props.onChange, onKeyDown: this.props.onKeyDown }),\n React.createElement(\"span\", { className: \"k-icon k-i-search\" })));\n };\n return ListFilter;\n}(React.Component));\nexport default ListFilter;\n//# sourceMappingURL=ListFilter.js.map","/**\n * @hidden\n */\nvar isPresent = function (value) { return value !== null && value !== undefined; };\n/**\n * @hidden\n */\nvar sameCharsOnly = function (word, character) {\n for (var idx = 0; idx < word.length; idx++) {\n if (word.charAt(idx) !== character) {\n return false;\n }\n }\n return true;\n};\n/**\n * @hidden\n */\nvar shuffleData = function (data, splitIndex, defaultItem) {\n var result = data;\n if (defaultItem) {\n result = [defaultItem].concat(result);\n }\n return result.slice(splitIndex).concat(result.slice(0, splitIndex));\n};\n/**\n * @hidden\n */\nvar matchText = function (text, word, ignoreCase) {\n if (!isPresent(text)) {\n return false;\n }\n var temp = String(text);\n if (ignoreCase) {\n temp = temp.toLowerCase();\n }\n return temp.indexOf(word) === 0;\n};\n/**\n * @hidden\n */\nvar scrollToItem = function (scrollElem, itemHeight, itemIndex, translate, virtualScroll) {\n var viewportHeight = scrollElem.offsetHeight;\n var itemOffsetTop = (itemHeight * itemIndex) +\n (virtualScroll ? translate - scrollElem.scrollTop : 0);\n if (virtualScroll) {\n var diff = 0;\n if (itemOffsetTop + itemHeight > viewportHeight) {\n diff = itemOffsetTop + itemHeight - viewportHeight;\n }\n else if (itemOffsetTop < 0) {\n diff = itemOffsetTop;\n }\n if (diff !== 0) {\n scrollElem.scrollTop += diff;\n }\n else if (scrollElem.scrollTop === 0 && translate !== 0) {\n scrollElem.scrollTop = translate;\n }\n }\n else {\n if (itemOffsetTop + itemHeight > viewportHeight + scrollElem.scrollTop) {\n scrollElem.scrollTop = (itemOffsetTop + itemHeight - viewportHeight);\n }\n else if (itemOffsetTop < scrollElem.scrollTop) {\n scrollElem.scrollTop -= scrollElem.scrollTop - itemOffsetTop;\n }\n }\n};\n/**\n * @hidden\n */\nvar itemIndexStartsWith = function (items, text, field) {\n var result = -1;\n if (text) {\n text = text.toLowerCase();\n for (var i = 0; i < items.length; i++) {\n var itemText = (getItemValue(items[i], field) || '') + '';\n if (itemText && itemText.toLowerCase().startsWith(text)) {\n result = i;\n break;\n }\n }\n }\n return result;\n};\n/**\n * @hidden\n */\nvar getItemIndexByText = function (data, text, textField, matchCase) {\n if (matchCase === void 0) { matchCase = false; }\n var casing = function (value) { return matchCase ? value : value.toLowerCase(); };\n return data.findIndex(function (item) {\n return textField ? casing(getItemValue(item, textField)) === casing(text) :\n casing(text) === casing(item.toString());\n });\n};\n/**\n * @hidden\n */\nvar getItemValue = function (item, field) {\n if (field && isPresent(item)) {\n var path = field.split('.');\n var data_1 = item;\n path.forEach(function (p) {\n data_1 = data_1 ? data_1[p] : undefined;\n });\n return data_1;\n }\n return item;\n};\n/**\n * @hidden\n */\nvar matchDataCollections = function (data1, data2, key) {\n if (data1 === void 0) { data1 = []; }\n if (data2 === void 0) { data2 = []; }\n if (data1 === data2) {\n return true;\n }\n if (data1.length !== data2.length) {\n return false;\n }\n for (var i = 0; i < data1.length; i++) {\n if (!areSame(data1[i], data2[i], key)) {\n return false;\n }\n }\n return true;\n};\n/**\n * @hidden\n */\nvar removeDataItems = function (items, toRemove, key) {\n toRemove.forEach(function (item) {\n var itemIndex = items.findIndex(function (i) { return areSame(i, item, key); });\n if (itemIndex !== -1) {\n items.splice(itemIndex, 1);\n }\n });\n};\n/**\n * @hidden\n */\nvar areSame = function (item1, item2, key) {\n return item1 === item2 ||\n (isPresent(item1) === isPresent(item2) && getItemValue(item1, key) === getItemValue(item2, key));\n};\n/**\n * @hidden\n */\nvar getFocusedItem = function (data, value, textField) {\n if (value) {\n var selectedIndex = getItemIndexByText(data, value, textField, true);\n return selectedIndex !== -1 ? data[selectedIndex] : data[itemIndexStartsWith(data, value, textField)];\n }\n return data[0];\n};\n/**\n * @hidden\n */\nvar suggestValue = function (value, data, textField) {\n if (data === void 0) { data = []; }\n var suggested = '';\n if (value) {\n var suggestedItem = data[itemIndexStartsWith(data, value, textField)];\n if (suggestedItem) {\n var suggestedText = getItemValue(suggestedItem, textField);\n if (value.toLowerCase() !== suggestedText.toLowerCase()) {\n suggested = suggestedText.substring(value.length);\n }\n }\n }\n return suggested;\n};\n/**\n * @hidden\n */\nvar preventDefaultNonInputs = function (event) {\n if (event.target.nodeName !== 'INPUT') {\n event.preventDefault();\n }\n};\nexport { isPresent, sameCharsOnly, shuffleData, matchText, scrollToItem, itemIndexStartsWith, getItemIndexByText, getItemValue, matchDataCollections, removeDataItems, areSame, getFocusedItem, preventDefaultNonInputs, suggestValue };\n//# sourceMappingURL=utils.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport { classNames } from '@progress/kendo-react-common';\nimport { getItemValue } from './utils';\nvar preventDefault = function (e) { return e.preventDefault(); };\n/**\n * @hidden\n */\nvar ListDefaultItem = /** @class */ (function (_super) {\n __extends(ListDefaultItem, _super);\n function ListDefaultItem() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ListDefaultItem.prototype.render = function () {\n var _a = this.props, selected = _a.selected, defaultItem = _a.defaultItem, textField = _a.textField;\n return (React.createElement(\"div\", { onClick: this.props.onClick, onMouseDown: preventDefault, className: classNames('k-list-optionlabel', {\n 'k-state-selected': selected\n }) }, getItemValue(defaultItem, textField) || ''));\n };\n return ListDefaultItem;\n}(React.Component));\nexport default ListDefaultItem;\n//# sourceMappingURL=ListDefaultItem.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport { classNames } from '@progress/kendo-react-common';\nimport { getItemValue } from './utils';\n// tslint:enable:max-line-length\n/**\n * @hidden\n */\nvar ListItem = /** @class */ (function (_super) {\n __extends(ListItem, _super);\n function ListItem() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.handleClick = function (e) { return _this.props.onClick(_this.props.index, e); };\n return _this;\n }\n ListItem.prototype.render = function () {\n var selected = this.props.selected;\n var renderer = this.props.render || this.props.renderer;\n var item = (React.createElement(\"li\", { id: this.props.id, role: \"option\", \"aria-selected\": selected, className: classNames('k-item', {\n 'k-state-selected': selected,\n 'k-state-focused': this.props.focused\n }), onClick: this.handleClick }, getItemValue(this.props.dataItem, this.props.textField).toString()));\n return renderer !== undefined ? renderer.call(undefined, item, this.props) : item;\n };\n return ListItem;\n}(React.Component));\nexport default ListItem;\n//# sourceMappingURL=ListItem.js.map","var _a;\n/**\n * @hidden\n */\nexport var nodata = 'dropdowns.nodata';\n/**\n * @hidden\n */\nexport var clear = 'dropdowns.clear';\n/**\n * @hidden\n */\nexport var messages = (_a = {},\n _a[clear] = 'clear',\n _a[nodata] = 'NO DATA FOUND.',\n _a);\n//# sourceMappingURL=index.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport ListItem from './ListItem';\nimport { areSame } from './utils';\nimport { registerForLocalization, provideLocalizationService } from '@progress/kendo-react-intl';\nimport { messages, nodata } from '../messages';\n/**\n * @hidden\n */\nvar List = /** @class */ (function (_super) {\n __extends(List, _super);\n function List() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n List.prototype.renderItems = function () {\n var _this = this;\n var _a = this.props, textField = _a.textField, valueField = _a.valueField, optionsGuid = _a.optionsGuid, _b = _a.skip, skip = _b === void 0 ? 0 : _b, focusedIndex = _a.focusedIndex, _c = _a.highlightSelected, highlightSelected = _c === void 0 ? true : _c, value = _a.value, itemRender = _a.itemRender;\n var isArray = Array.isArray(value);\n return this.props.data.map(function (item, index) {\n var realIndex = skip + index;\n var selected = highlightSelected &&\n ((!isArray && areSame(item, value, valueField)) ||\n (isArray && value.findIndex(function (i) { return areSame(i, item, valueField); }) !== -1));\n return (React.createElement(ListItem, { id: \"option-\" + optionsGuid + \"-\" + realIndex, dataItem: item, selected: selected, focused: focusedIndex === index, index: realIndex, key: realIndex, onClick: _this.props.onClick, textField: textField, render: itemRender }));\n });\n };\n List.prototype.renderNoValueElement = function (localizationService) {\n var noDataRender = this.props.noDataRender;\n var noDataElement = (React.createElement(\"div\", { className: 'k-nodata' },\n React.createElement(\"div\", null, localizationService.toLanguageString(nodata, messages[nodata]))));\n return noDataRender ?\n noDataRender.call(undefined, noDataElement) : noDataElement;\n };\n List.prototype.render = function () {\n var localizationService = provideLocalizationService(this);\n var _a = this.props, id = _a.id, show = _a.show, wrapperCssClass = _a.wrapperCssClass, wrapperStyle = _a.wrapperStyle, listStyle = _a.listStyle, listRef = _a.listRef;\n var items = this.renderItems();\n return (items.length ? (React.createElement(\"div\", { className: wrapperCssClass, style: wrapperStyle, ref: function (element) { return element && element.setAttribute('unselectable', 'on'); } },\n React.createElement(\"ul\", { id: id, role: \"listbox\", \"aria-hidden\": !show ? true : undefined, className: 'k-list k-reset', ref: listRef, style: listStyle }, items))) : this.renderNoValueElement(localizationService));\n };\n return List;\n}(React.Component));\nexport default List;\nregisterForLocalization(List);\n//# sourceMappingURL=List.js.map","var maxHeightIE = 1533915;\n/**\n * @hidden\n */\nvar VirtualScroll = /** @class */ (function () {\n function VirtualScroll() {\n var _this = this;\n this.containerHeight = 0;\n this.skip = 0;\n this.total = 0;\n this.enabled = false;\n this.pageSize = 0;\n this.itemHeight = 0;\n this.prevScrollPos = 0;\n this.listTranslate = 0;\n this.scrollSyncing = false;\n this.scrollerRef = function (element) {\n var vs = _this;\n vs.container = element;\n if (element) {\n element.setAttribute('unselectable', 'on');\n setTimeout(vs.calcScrollElementHeight.bind(vs), 0);\n }\n };\n this.calcScrollElementHeight = function () {\n _this.scrollSyncing = true;\n var heightChanged = false;\n _this.itemHeight = _this.list ? _this.list.children[0].offsetHeight : _this.itemHeight;\n _this.containerHeight = Math.min(maxHeightIE, _this.itemHeight * _this.total);\n var newHeight = _this.containerHeight;\n if (_this.scrollElement) {\n heightChanged = _this.scrollElement.style.height !== newHeight + 'px';\n if (heightChanged) {\n _this.scrollElement.style.height = newHeight + 'px';\n }\n }\n _this.scrollSyncing = false;\n return heightChanged;\n };\n this.scrollHandler = this.scrollHandler.bind(this);\n }\n Object.defineProperty(VirtualScroll.prototype, \"translate\", {\n get: function () {\n return this.listTranslate;\n },\n enumerable: true,\n configurable: true\n });\n VirtualScroll.prototype.changePage = function (skip, e) {\n var newSkip = Math.min(Math.max(0, skip), this.total - this.pageSize);\n if (newSkip !== this.skip) {\n this.PageChange({ skip: newSkip, take: this.pageSize }, e);\n }\n };\n VirtualScroll.prototype.translateTo = function (dY) {\n this.listTranslate = dY;\n if (this.list) {\n this.list.style.transform = 'translateY(' + dY + 'px)';\n }\n };\n VirtualScroll.prototype.reset = function () {\n if (this.container) {\n this.calcScrollElementHeight();\n this.container.scrollTop = 0;\n this.translateTo(0);\n }\n };\n VirtualScroll.prototype.scrollToEnd = function () {\n if (this.container && this.list) {\n this.calcScrollElementHeight();\n this.container.scrollTop = this.container.scrollHeight - this.container.offsetHeight;\n this.translateTo(this.container.scrollHeight - this.list.offsetHeight);\n }\n };\n VirtualScroll.prototype.localScrollUp = function (e) {\n var height = this.itemHeight;\n var scrollTop = this.container.scrollTop;\n var targetTranslate = this.listTranslate;\n var items;\n var additionalOnTop = scrollTop - targetTranslate;\n if (additionalOnTop > height) {\n return;\n }\n for (items = 0; items < this.skip; items++) {\n if (targetTranslate + height + additionalOnTop <= scrollTop) {\n break;\n }\n targetTranslate -= height;\n }\n targetTranslate = this.validateTranslate(targetTranslate);\n if (this.skip - items <= 0 && targetTranslate >= scrollTop) {\n this.translateTo(0);\n this.changePage(0, e);\n this.container.scrollTop = 0;\n return;\n }\n if (targetTranslate !== this.listTranslate) {\n this.translateTo(targetTranslate);\n this.changePage(this.skip - items, e);\n }\n };\n VirtualScroll.prototype.localScrollDown = function (e) {\n var height = this.itemHeight;\n var scrollTop = this.container.scrollTop;\n var targetTranslate = this.listTranslate;\n var itemsLenght = this.list.children.length;\n var items;\n for (items = 0; items < itemsLenght; items++) {\n if (targetTranslate + height >= scrollTop) {\n break;\n }\n targetTranslate += height;\n }\n targetTranslate = this.validateTranslate(targetTranslate);\n if (items >= itemsLenght && this.skip + items >= this.total) {\n this.translateTo(targetTranslate);\n this.changePage(this.total - 1, e);\n }\n else if (targetTranslate !== this.listTranslate) {\n this.translateTo(targetTranslate);\n this.changePage(this.skip + items, e);\n }\n };\n VirtualScroll.prototype.scrollNonStrict = function (e) {\n var floatItemIndex = this.total * this.prevScrollPos / (this.containerHeight);\n var itemIndex = Math.min(Math.floor(floatItemIndex), this.total - 1);\n var targetTranslate = this.containerHeight * floatItemIndex / this.total;\n targetTranslate = this.validateTranslate(targetTranslate);\n this.translateTo(targetTranslate);\n this.changePage(itemIndex, e);\n };\n VirtualScroll.prototype.scrollHandler = function (e) {\n var scrollTop = this.container ? this.container.scrollTop : 0;\n var prev = this.prevScrollPos;\n this.prevScrollPos = scrollTop;\n if (!this.enabled || !this.list || !this.container || this.scrollSyncing) {\n return;\n }\n if (scrollTop - prev <= 0 && scrollTop > this.listTranslate - this.list.scrollHeight / 10) {\n this.localScrollUp(e);\n }\n else if (scrollTop - prev > 0 && scrollTop < this.listTranslate + this.list.scrollHeight * 2 / 3) {\n this.localScrollDown(e);\n }\n else {\n this.scrollNonStrict(e);\n }\n };\n VirtualScroll.prototype.validateTranslate = function (translate) {\n translate = Math.max(0, translate);\n translate = Math.min(this.containerHeight - this.list.offsetHeight, translate);\n return translate;\n };\n return VirtualScroll;\n}());\nexport default VirtualScroll;\n//# sourceMappingURL=VirtualScroll.js.map","import { isPresent } from './utils';\nimport { Keys } from '@progress/kendo-react-common';\n/**\n * @hidden\n */\nvar Navigation = /** @class */ (function () {\n function Navigation() {\n }\n Navigation.prototype.navigate = function (args) {\n var keyCode = args.keyCode;\n if (keyCode === Keys.up || keyCode === Keys.left) {\n return this.next({ current: args.current, min: args.min, max: args.max, step: -1 });\n }\n else if (keyCode === Keys.down || keyCode === Keys.right) {\n return this.next({ current: args.current, min: args.min, max: args.max, step: 1 });\n }\n else if (keyCode === Keys.home) {\n return 0;\n }\n else if (keyCode === Keys.end) {\n return args.max;\n }\n };\n Navigation.prototype.next = function (args) {\n if (!isPresent(args.current)) {\n return args.min;\n }\n else {\n return Math.min(args.max, Math.max(args.current + args.step, args.min));\n }\n };\n return Navigation;\n}());\nexport { Navigation };\n//# sourceMappingURL=Navigation.js.map","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport VirtualScroll from './VirtualScroll';\nimport { Navigation } from './Navigation';\nimport { scrollToItem, areSame } from './utils';\nimport { guid } from '@progress/kendo-react-common';\n/**\n * @hidden\n */\nvar DropDownBase = /** @class */ (function () {\n function DropDownBase(component) {\n var _this = this;\n this.vs = new VirtualScroll();\n this.navigation = new Navigation();\n this.handleItemClick = function (index, event) {\n var state = _this.initState();\n state.syntheticEvent = event;\n _this.component.handleItemSelect(index, state);\n _this.togglePopup(state);\n _this.applyState(state);\n };\n this.handleFocus = function (event) {\n if (!_this.component.state.focused) {\n var state = _this.initState();\n state.data.focused = true;\n state.events.push({ type: 'onFocus' });\n state.syntheticEvent = event;\n _this.applyState(state);\n }\n };\n this.filterChanged = function (text, state) {\n var _a = _this.component.props, textField = _a.textField, filterable = _a.filterable;\n if (filterable) {\n state.events.push({\n type: 'onFilterChange',\n filter: {\n field: textField,\n operator: 'contains',\n ignoreCase: true,\n value: text\n }\n });\n }\n };\n this.togglePopup = function (state) {\n var props = _this.component.props;\n var opened = props.opened !== undefined ? props.opened : _this.component.state.opened;\n if (props.opened === undefined) {\n state.data.opened = !opened;\n }\n if (opened) {\n state.events.push({ type: 'onClose' });\n }\n else {\n state.events.push({ type: 'onOpen' });\n _this.calculatePopupWidth();\n }\n };\n this.pageChange = function (page, syntheticEvent) {\n var state = _this.initState();\n state.syntheticEvent = syntheticEvent;\n _this.triggerOnPageChange(state, page.skip, page.take);\n _this.applyState(state);\n };\n this.scrollToVirtualItem = function (virtual, selectedItemIndex) {\n var vs = _this.vs;\n vs.enabled = false;\n if (virtual.skip === 0) {\n vs.reset();\n }\n else if (virtual.skip + virtual.pageSize === virtual.total) {\n vs.scrollToEnd();\n }\n else {\n var scrollTop = vs.translate;\n if (scrollTop === 0) {\n vs.calcScrollElementHeight();\n scrollTop = (vs.itemHeight * virtual.skip);\n vs.translateTo(scrollTop - vs.itemHeight);\n }\n if (vs.container) {\n vs.container.scrollTop = scrollTop;\n }\n _this.scrollToItem(selectedItemIndex, true);\n }\n setTimeout(function () { return vs.enabled = true; }, 10);\n };\n // Common rendering\n this.renderScrollWrapper = function (children) {\n var popupSettings = _this.getPopupSettings();\n var vs = _this.vs;\n return vs.enabled ? (React.createElement(\"div\", { onScroll: vs.scrollHandler, ref: vs.scrollerRef, style: {\n height: popupSettings.height,\n overflowY: 'scroll'\n } }, children)) :\n (children);\n };\n this.renderScrollElement = function () {\n var vs = _this.vs;\n return vs.enabled && (React.createElement(\"div\", { ref: function (element) { return vs.scrollElement = element; }, key: 'scrollElementKey' }));\n };\n this.listBoxId = guid();\n this.guid = guid();\n this.component = component;\n this.vs.PageChange = this.pageChange;\n }\n DropDownBase.prototype.didMount = function () {\n var props = this.component.props;\n var popupSettings = props.popupSettings || {};\n var style = props.style || {};\n var popupWidth = popupSettings.width;\n var shouldUpdate = props.opened === true;\n if (popupWidth === undefined) {\n this.calculatePopupWidth();\n }\n if (props.dir === undefined && style.direction === undefined) {\n this.calculateDir();\n shouldUpdate = true;\n }\n if (shouldUpdate) {\n this.component.forceUpdate();\n }\n };\n DropDownBase.prototype.calculateDir = function () {\n if (this.component.element) {\n this.dirCalculated = window.getComputedStyle(this.component.element).direction || undefined;\n }\n };\n DropDownBase.prototype.calculatePopupWidth = function () {\n if (this.wrapper) {\n this.popupWidth = this.wrapper.offsetWidth + 'px';\n }\n };\n DropDownBase.prototype.scrollToItem = function (itemIndex, vsEnabled) {\n var list = this.list || this.vs.list;\n var item = list ? list.children[0] : undefined;\n if (item && itemIndex >= 0) {\n var vs = this.vs;\n var scrollElement = (vs.container || list.parentNode);\n var virtualScroll = vsEnabled !== undefined ? vsEnabled : vs.enabled;\n scrollToItem(scrollElement, item.offsetHeight, itemIndex, vs.translate, virtualScroll);\n }\n };\n DropDownBase.prototype.initState = function () {\n var state = {\n data: {},\n events: [],\n syntheticEvent: undefined\n };\n return state;\n };\n DropDownBase.prototype.applyState = function (state) {\n var _this = this;\n if (Object.keys(state.data).length > 0) {\n this.component.setState(state.data);\n }\n var eventArgs = {\n syntheticEvent: state.syntheticEvent,\n nativeEvent: state.syntheticEvent ? state.syntheticEvent.nativeEvent : undefined,\n target: this.component,\n value: this.component.value\n };\n state.events.forEach(function (eventData) {\n var type = eventData.type;\n delete eventData.type;\n var handler = _this.component.props[type];\n if (handler) {\n handler.call(undefined, __assign({}, eventArgs, eventData));\n }\n });\n };\n DropDownBase.prototype.triggerOnPageChange = function (state, skip, take) {\n var virtual = this.component.props.virtual;\n if (virtual) {\n var newSkip = Math.min(Math.max(0, skip), Math.max(0, virtual.total - take));\n if (newSkip !== virtual.skip) {\n state.events.push({\n type: 'onPageChange',\n page: { skip: newSkip, take: take }\n });\n }\n }\n };\n DropDownBase.prototype.triggerPageChangeCornerItems = function (item, state) {\n var props = this.component.props;\n var _a = props.data, data = _a === void 0 ? [] : _a, dataItemKey = props.dataItemKey, virtual = props.virtual;\n var opened = props.opened !== undefined ? props.opened : this.component.state.opened;\n if (item && virtual && this.vs.enabled) {\n if (virtual.skip > 0 && areSame(item, data[0], dataItemKey)) {\n this.triggerOnPageChange(state, virtual.skip - 1, virtual.pageSize);\n }\n else if (!opened && virtual.skip + virtual.pageSize < virtual.total &&\n areSame(item, data[data.length - 1], dataItemKey)) {\n this.triggerOnPageChange(state, virtual.skip + 1, virtual.pageSize);\n }\n }\n };\n DropDownBase.prototype.getPopupSettings = function () {\n return Object\n .assign({}, DropDownBase.defaultProps.popupSettings, this.component.props.popupSettings);\n };\n DropDownBase.basicPropTypes = {\n opened: PropTypes.bool,\n disabled: PropTypes.bool,\n dir: PropTypes.string,\n tabIndex: PropTypes.number,\n accessKey: PropTypes.string,\n data: PropTypes.array,\n textField: PropTypes.string,\n className: PropTypes.string,\n label: PropTypes.string,\n loading: PropTypes.bool,\n popupSettings: PropTypes.shape({\n animate: PropTypes.oneOfType([PropTypes.bool, PropTypes.shape({\n openDuration: PropTypes.number,\n closeDuration: PropTypes.number\n })]),\n width: PropTypes.string,\n height: PropTypes.string\n }),\n onOpen: PropTypes.func,\n onClose: PropTypes.func,\n onFocus: PropTypes.func,\n onBlur: PropTypes.func,\n onChange: PropTypes.func,\n itemRender: PropTypes.func,\n listNoDataRender: PropTypes.func,\n header: PropTypes.node,\n footer: PropTypes.node\n };\n DropDownBase.propTypes = __assign({}, DropDownBase.basicPropTypes, { value: PropTypes.any, defaultValue: PropTypes.any, filterable: PropTypes.bool, filter: PropTypes.string, virtual: PropTypes.shape({\n pageSize: PropTypes.number.isRequired,\n skip: PropTypes.number.isRequired,\n total: PropTypes.number.isRequired\n }), onFilterChange: PropTypes.func, onPageChange: PropTypes.func });\n DropDownBase.defaultProps = {\n popupSettings: {\n animate: true,\n height: '200px'\n },\n required: false,\n validityStyles: true\n };\n return DropDownBase;\n}());\nexport default DropDownBase;\n//# sourceMappingURL=DropDownBase.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { classNames, Keys, FloatingLabel } from '@progress/kendo-react-common';\nimport ListContainer from '../common/ListContainer';\nimport ListFilter from '../common/ListFilter';\nimport ListDefaultItem from '../common/ListDefaultItem';\nimport List from '../common/List';\nimport DropDownBase from '../common/DropDownBase';\nimport { isPresent, getItemValue, sameCharsOnly, shuffleData, matchText, areSame, preventDefaultNonInputs, getFocusedItem } from '../common/utils';\nvar VALIDATION_MESSAGE = 'Please select a value from the list!';\n/**\n * Represents the [KendoReact DropDownList component]({% slug overview_dropdownlist %}).\n *\n * @example\n * ```jsx\n * class App extends React.Component {\n * dropdownlist = null;\n * render() {\n * return (\n *
\n * this.dropdownlist = component}\n * />\n * \n *
\n * );\n * }\n * }\n * ReactDOM.render(, document.querySelector('my-app'));\n * ```\n */\nvar DropDownList = /** @class */ (function (_super) {\n __extends(DropDownList, _super);\n function DropDownList() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /**\n * @hidden\n */\n _this.state = {};\n _this.base = new DropDownBase(_this);\n _this.searchState = { word: '', last: '' };\n _this._skipFocusEvent = false;\n _this._filterInput = null;\n _this._navigated = false;\n /**\n * @hidden\n */\n _this.handleItemSelect = function (index, state) {\n var _a = _this.props, _b = _a.data, data = _b === void 0 ? [] : _b, virtual = _a.virtual, dataItemKey = _a.dataItemKey, defaultItem = _a.defaultItem;\n var skip = virtual ? virtual.skip : 0;\n var item = (index === -1 && defaultItem !== undefined) ?\n defaultItem : data[index - skip];\n var newSelected = !areSame(item, _this.value, dataItemKey);\n _this.triggerOnChange(item, state);\n if (newSelected) {\n _this.base.triggerPageChangeCornerItems(item, state);\n }\n };\n _this.renderDropDownWrapper = function () {\n var _a = _this.props, dataItemKey = _a.dataItemKey, _b = _a.data, data = _b === void 0 ? [] : _b, textField = _a.textField, disabled = _a.disabled, tabIndex = _a.tabIndex, loading = _a.loading, iconClassName = _a.iconClassName, _c = _a.virtual, virtual = _c === void 0 ? { skip: 0 } : _c, valueRender = _a.valueRender;\n var focused = _this.state.focused;\n var opened = _this.props.opened !== undefined ? _this.props.opened : _this.state.opened;\n var value = _this.value;\n var selectedIndex = data.findIndex(function (i) { return areSame(i, value, dataItemKey); });\n var text = getItemValue(value, textField);\n var valueDefaultRendering = (React.createElement(\"span\", { className: \"k-input\" }, text));\n var valueElement = valueRender !== undefined ?\n valueRender.call(undefined, valueDefaultRendering, value) : valueDefaultRendering;\n return (React.createElement(\"span\", { ref: function (el) { return _this.base.wrapper = el; }, role: 'listbox', tabIndex: disabled ? undefined : tabIndex, accessKey: _this.props.accessKey, className: classNames('k-dropdown-wrap', {\n 'k-state-default': !disabled,\n 'k-state-focused': focused,\n 'k-state-disabled': disabled\n }), style: _this.props.style, onKeyDown: _this.handleKeyDown, onKeyPress: _this.handleKeyPress, onClick: disabled ? undefined : _this.handleWrapperClick, \"aria-disabled\": disabled || undefined, \"aria-haspopup\": true, \"aria-expanded\": opened || false, \"aria-owns\": _this.base.listBoxId, \"aria-activedescendant\": 'option-' + _this.base.guid + '-' + (selectedIndex + virtual.skip), \"aria-label\": _this.props.label },\n valueElement,\n React.createElement(\"span\", { className: \"k-select\" },\n React.createElement(\"span\", { className: classNames('k-icon', iconClassName, {\n 'k-i-arrow-s': !loading && !iconClassName,\n 'k-i-loading': loading && !iconClassName\n }) })),\n _this.dummySelect(value)));\n };\n _this.dummySelect = function (value) {\n /* Dummy component to support forms */\n return (React.createElement(\"select\", { name: _this.props.name, ref: function (el) { _this._select = el; }, tabIndex: -1, \"aria-hidden\": true, title: _this.props.label, style: { opacity: 0, width: 1, border: 0, zIndex: -1, position: 'absolute', left: '50%' } },\n React.createElement(\"option\", { value: _this.props.valueMap ? _this.props.valueMap.call(undefined, value) : value })));\n };\n _this.renderListContainer = function () {\n var _a = _this.props, header = _a.header, footer = _a.footer, dir = _a.dir;\n var base = _this.base;\n var popupSettings = base.getPopupSettings();\n var opened = _this.props.opened !== undefined ? _this.props.opened : _this.state.opened;\n var virtual = _this.props.virtual !== undefined;\n var popupWidth = popupSettings.width !== undefined ? popupSettings.width : base.popupWidth;\n var listContainerProps = {\n onMouseDown: preventDefaultNonInputs,\n dir: dir !== undefined ? dir : base.dirCalculated,\n width: popupWidth,\n popupSettings: {\n className: classNames('k-list-container k-reset', popupSettings.className),\n animate: popupSettings.animate,\n anchor: _this.element || undefined,\n show: opened,\n open: _this.onPopupOpened,\n close: _this.onPopupClosed\n }\n };\n return (React.createElement(ListContainer, __assign({}, listContainerProps),\n _this.renderListFilter(),\n virtual ? _this.renderDefaultItem() : undefined,\n virtual && header,\n _this.base.renderScrollWrapper(!virtual ? [\n _this.renderDefaultItem(),\n header,\n _this.renderList(),\n footer,\n _this.base.renderScrollElement()\n ] : [\n _this.renderList(),\n _this.base.renderScrollElement()\n ]),\n virtual && footer));\n };\n _this.renderList = function () {\n var _a = _this.props, _b = _a.data, data = _b === void 0 ? [] : _b, textField = _a.textField, dataItemKey = _a.dataItemKey, _c = _a.virtual, virtual = _c === void 0 ? { skip: 0 } : _c, listNoDataRender = _a.listNoDataRender, itemRender = _a.itemRender;\n var vs = _this.base.vs;\n var skip = virtual.skip;\n var opened = _this.props.opened !== undefined ? _this.props.opened : _this.state.opened;\n var popupSettings = _this.base.getPopupSettings();\n var translate = \"translateY(\" + vs.translate + \"px)\";\n return (React.createElement(List, { id: _this.base.listBoxId, show: opened, data: data.slice(), focusedIndex: _this.focusedIndex(), value: _this.value, textField: textField, valueField: dataItemKey, optionsGuid: _this.base.guid, listRef: function (list) { return vs.list = _this.base.list = list; }, wrapperStyle: !vs.enabled ?\n { maxHeight: popupSettings.height } : { float: 'left', width: '100%' }, wrapperCssClass: !vs.enabled ? 'k-list-scroller' : undefined, listStyle: vs.enabled ?\n { transform: translate } : undefined, key: \"listkey\", skip: skip, onClick: _this.handleItemClick, itemRender: itemRender, noDataRender: listNoDataRender }));\n };\n _this.renderListFilter = function () {\n var filterText = _this.props.filter !== undefined ? _this.props.filter : _this.state.text;\n return _this.props.filterable && (React.createElement(ListFilter, { value: filterText, ref: function (filter) { return _this._filterInput = filter && filter.input; }, onChange: _this.handleListFilterChange, onKeyDown: _this.handleKeyDown }));\n };\n _this.renderDefaultItem = function () {\n var _a = _this.props, textField = _a.textField, defaultItem = _a.defaultItem, dataItemKey = _a.dataItemKey;\n return defaultItem !== undefined && (React.createElement(ListDefaultItem, { defaultItem: defaultItem, textField: textField, selected: areSame(_this.value, defaultItem, dataItemKey), key: \"defaultitemkey\", onClick: _this.handleDefaultItemClick }));\n };\n _this.search = function (event) {\n clearTimeout(_this._typingTimeout);\n if (!_this.props.filterable) {\n _this._typingTimeout = setTimeout(function () { return _this.searchState.word = ''; }, _this.props.delay);\n _this.selectNext(event);\n }\n };\n _this.selectNext = function (event) {\n var _a = _this.props, _b = _a.data, data = _b === void 0 ? [] : _b, dataItemKey = _a.dataItemKey;\n var mappedData = data.map(function (item, idx) {\n return { item: item, itemIndex: idx };\n });\n var word = _this.searchState.word;\n var last = _this.searchState.last;\n var isInLoop = sameCharsOnly(word, last);\n var dataLength = mappedData.length;\n var startIndex = Math.max(0, data.findIndex(function (i) { return areSame(i, _this.value, dataItemKey); }));\n var defaultItem;\n if (_this.props.defaultItem) {\n defaultItem = { item: _this.props.defaultItem, itemIndex: -1 };\n dataLength += 1;\n startIndex += 1;\n }\n startIndex += isInLoop ? 1 : 0;\n mappedData = shuffleData(mappedData, startIndex, defaultItem);\n var text, loopMatch, nextMatch, index = 0;\n var _c = _this.props, textField = _c.textField, ignoreCase = _c.ignoreCase;\n for (; index < dataLength; index++) {\n text = getItemValue(mappedData[index].item, textField);\n loopMatch = isInLoop && matchText(text, last, ignoreCase);\n nextMatch = matchText(text, word, ignoreCase);\n if (loopMatch || nextMatch) {\n index = mappedData[index].itemIndex;\n break;\n }\n }\n if (index !== dataLength) {\n var state = _this.base.initState();\n state.syntheticEvent = event;\n _this.handleItemSelect(index, state);\n _this.applyState(state);\n _this._valueDuringOnChange = undefined;\n }\n };\n _this.handleKeyDown = function (event) {\n var _a = _this.props, _b = _a.data, data = _b === void 0 ? [] : _b, filterable = _a.filterable, disabled = _a.disabled, _c = _a.virtual, virtual = _c === void 0 ? { skip: 0, total: 0, pageSize: 0 } : _c;\n var opened = _this.props.opened !== undefined ? _this.props.opened : _this.state.opened;\n var keyCode = event.keyCode;\n var homeOrEndKeys = keyCode === Keys.home || keyCode === Keys.end;\n var upOrDownKeys = keyCode === Keys.up || keyCode === Keys.down;\n var shouldOpen = !opened &&\n ((event.altKey && keyCode === Keys.down) || keyCode === Keys.enter || keyCode === Keys.space);\n var shouldClose = opened && ((event.altKey && keyCode === Keys.up) || keyCode === Keys.esc);\n var leftOrRightKeys = keyCode === Keys.left || keyCode === Keys.right;\n var shouldNavigate = upOrDownKeys || (!filterable && (leftOrRightKeys || homeOrEndKeys));\n var state = _this.base.initState();\n state.syntheticEvent = event;\n if (disabled) {\n return;\n }\n else if (homeOrEndKeys && _this.base.vs.enabled) {\n if (keyCode === Keys.home) {\n if (virtual.skip !== 0) {\n _this.base.triggerOnPageChange(state, 0, virtual.pageSize);\n _this._navigated = true;\n }\n else {\n _this.triggerOnChange(data[0], state);\n }\n }\n else {\n if (virtual.skip < virtual.total - virtual.pageSize) {\n _this.base.triggerOnPageChange(state, virtual.total - virtual.pageSize, virtual.pageSize);\n _this._navigated = true;\n }\n else {\n _this.triggerOnChange(data[data.length - 1], state);\n }\n }\n }\n else if (opened && keyCode === Keys.enter) {\n var focusedIndex = _this.focusedIndex();\n if (focusedIndex !== undefined) {\n _this.handleItemSelect(focusedIndex, state);\n }\n _this.base.togglePopup(state);\n event.preventDefault();\n }\n else if (shouldOpen || shouldClose) {\n _this.base.togglePopup(state);\n event.preventDefault();\n }\n else if (shouldNavigate) {\n _this.onNavigate(state, keyCode);\n event.preventDefault();\n }\n _this.applyState(state);\n };\n _this.handleItemClick = function (index, event) {\n _this.base.handleItemClick(index, event);\n _this._valueDuringOnChange = undefined;\n };\n _this.handleFocus = function (event) {\n if (_this._skipFocusEvent) {\n return;\n }\n _this.base.handleFocus(event);\n };\n _this.handleBlur = function (event) {\n if (_this._skipFocusEvent || !_this.state.focused) {\n return;\n }\n var opened = _this.props.opened !== undefined ? _this.props.opened : _this.state.opened;\n var state = _this.base.initState();\n state.syntheticEvent = event;\n state.data.focused = false;\n state.events.push({ type: 'onBlur' });\n if (opened) {\n _this.base.togglePopup(state);\n }\n _this.applyState(state);\n };\n _this.handleDefaultItemClick = function (event) {\n var state = _this.base.initState();\n state.syntheticEvent = event;\n _this.base.togglePopup(state);\n _this.triggerOnChange(_this.props.defaultItem, state);\n _this.applyState(state);\n };\n _this.handleWrapperClick = function (event) {\n var state = _this.base.initState();\n state.syntheticEvent = event;\n if (!_this.state.focused) {\n state.data.focused = true;\n }\n _this.base.togglePopup(state);\n _this.applyState(state);\n };\n _this.handleKeyPress = function (event) {\n if (_this.props.filterable || event.which === 0 || event.keyCode === Keys.enter) {\n return;\n }\n var character = String.fromCharCode(event.charCode || event.keyCode);\n if (_this.props.ignoreCase) {\n character = character.toLowerCase();\n }\n if (character === ' ') {\n event.preventDefault();\n }\n _this.searchState = {\n word: _this.searchState.word + character,\n last: _this.searchState.last + character\n };\n _this.search(event);\n };\n _this.handleListFilterChange = function (event) {\n var state = _this.base.initState();\n state.syntheticEvent = event;\n if (_this.props.filter === undefined) {\n state.data.text = event.target.value;\n }\n _this.base.filterChanged(event.target.value, state);\n _this.applyState(state);\n };\n _this.onPopupOpened = function () {\n if (_this._filterInput) {\n _this.focusElement(_this._filterInput);\n }\n };\n _this.onPopupClosed = function () {\n if (_this.state.focused) {\n setTimeout(function () {\n if (_this.state.focused && _this.base.wrapper) {\n _this.focusElement(_this.base.wrapper);\n }\n });\n }\n };\n _this.setValidity = function () {\n if (_this._select && _this._select.setCustomValidity) {\n _this._select.setCustomValidity(_this.validity.valid\n ? ''\n : _this.props.validationMessage || VALIDATION_MESSAGE);\n }\n };\n return _this;\n }\n /**\n * @hidden\n */\n DropDownList.prototype.focus = function () {\n if (this.base.wrapper) {\n this.base.wrapper.focus();\n }\n };\n Object.defineProperty(DropDownList.prototype, \"element\", {\n /**\n * @hidden\n */\n get: function () {\n return this._element;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DropDownList.prototype, \"value\", {\n /**\n * The value of the DropDownList.\n */\n get: function () {\n var value;\n if (this._valueDuringOnChange !== undefined) {\n value = this._valueDuringOnChange;\n }\n else if (this.props.value !== undefined) {\n value = this.props.value;\n }\n else if (this.state.value !== undefined) {\n value = this.state.value;\n }\n else if (this.props.defaultValue !== undefined) {\n value = this.props.defaultValue;\n }\n if (!isPresent(value) && this.props.defaultItem !== undefined) {\n value = this.props.defaultItem;\n }\n return value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DropDownList.prototype, \"index\", {\n /**\n * The index of the selected item.\n */\n get: function () {\n var _a = this.props, _b = _a.data, data = _b === void 0 ? [] : _b, dataItemKey = _a.dataItemKey;\n var value = this.value;\n // TO DO: deprecate it!\n return data.findIndex(function (i) { return areSame(i, value, dataItemKey); });\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DropDownList.prototype, \"name\", {\n /**\n * Gets the `name` property of the DropDownList.\n */\n get: function () {\n return this.props.name;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DropDownList.prototype, \"validity\", {\n /**\n * Represents the validity state into which the DropDownList is set.\n */\n get: function () {\n var customError = this.props.validationMessage !== undefined;\n var isValid = (!this.required\n || (this.value !== null && this.value !== '' && this.value !== undefined));\n var valid = this.props.valid !== undefined ? this.props.valid : isValid;\n return {\n customError: customError,\n valid: valid,\n valueMissing: this.value === null\n };\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DropDownList.prototype, \"validityStyles\", {\n get: function () {\n return this.props.validityStyles !== undefined\n ? this.props.validityStyles\n : DropDownList.defaultProps.validityStyles;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DropDownList.prototype, \"required\", {\n /**\n * @hidden\n */\n get: function () {\n return this.props.required !== undefined\n ? this.props.required\n : DropDownList.defaultProps.required;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @hidden\n */\n DropDownList.prototype.componentDidUpdate = function (prevProps, prevState) {\n var _a = this.props, _b = _a.data, data = _b === void 0 ? [] : _b, dataItemKey = _a.dataItemKey, virtual = _a.virtual;\n var prevTotal = prevProps.virtual ? prevProps.virtual.total : 0;\n var opened = this.props.opened !== undefined ? this.props.opened : this.state.opened;\n var prevOpened = prevProps.opened !== undefined ? prevProps.opened : prevState.opened;\n var opening = !prevOpened && opened;\n var closing = prevOpened && !opened;\n if (!this.base.getPopupSettings().animate) {\n if (opening) {\n this.onPopupOpened();\n }\n else if (closing) {\n // this.onPopupClosed();\n }\n }\n if (virtual && virtual.total !== prevTotal) {\n this.base.vs.calcScrollElementHeight();\n this.base.vs.reset();\n }\n else {\n var selectedItem_1 = this.value;\n var prevSelectedItem = prevProps.value !== undefined ? prevProps.value : prevState.value;\n var selectedItemIndex = data.findIndex(function (i) { return areSame(i, selectedItem_1, dataItemKey); });\n var selectedItemChanged = !areSame(prevSelectedItem, selectedItem_1, dataItemKey);\n if (opening && virtual) {\n this.base.scrollToVirtualItem(virtual, selectedItemIndex);\n }\n else if (opening && !virtual) {\n this.base.scrollToItem(selectedItemIndex);\n }\n else if (opened && prevOpened && selectedItem_1 && selectedItemChanged && !this._navigated) {\n this.base.scrollToItem(selectedItemIndex);\n }\n else if (opened && prevOpened && this._navigated) {\n if (this._navigated && virtual && virtual.skip === 0) {\n this.base.vs.reset();\n }\n else if (this._navigated && virtual && virtual.skip === virtual.total - virtual.pageSize) {\n this.base.vs.scrollToEnd();\n }\n }\n }\n this._navigated = false;\n this.setValidity();\n };\n /**\n * @hidden\n */\n DropDownList.prototype.componentDidMount = function () {\n this.base.didMount();\n this.setValidity();\n };\n /**\n * @hidden\n */\n DropDownList.prototype.render = function () {\n var _this = this;\n var _a = this.props, style = _a.style, className = _a.className, label = _a.label, dir = _a.dir, virtual = _a.virtual;\n var opened = this.props.opened !== undefined ? this.props.opened : this.state.opened;\n var text = getItemValue(this.value, this.props.textField);\n var isValid = !this.validityStyles || this.validity.valid;\n var base = this.base;\n var vs = base.vs;\n vs.enabled = virtual !== undefined;\n if (virtual !== undefined) {\n base.vs.skip = virtual.skip;\n base.vs.total = virtual.total;\n base.vs.pageSize = virtual.pageSize;\n }\n var dropdownlist = (React.createElement(\"span\", { ref: function (dropdown) { return _this._element = dropdown; }, className: classNames('k-widget k-dropdown k-header', {\n 'k-state-invalid': !isValid\n }, className), style: !label\n ? style\n : __assign({}, style, { width: undefined }), dir: dir, onMouseDown: opened ? preventDefaultNonInputs : undefined, onFocus: this.handleFocus, onBlur: this.handleBlur },\n this.renderDropDownWrapper(),\n this.renderListContainer()));\n return label ? (React.createElement(FloatingLabel, { label: label, value: text, style: { width: style ? style.width : undefined }, valid: isValid, children: dropdownlist })) : dropdownlist;\n };\n /**\n * @hidden\n */\n DropDownList.prototype.onNavigate = function (state, keyCode) {\n var _a = this.props, _b = _a.data, data = _b === void 0 ? [] : _b, defaultItem = _a.defaultItem, dataItemKey = _a.dataItemKey, _c = _a.virtual, virtual = _c === void 0 ? { skip: 0, total: 0, pageSize: 0 } : _c;\n var vs = this.base.vs;\n var value = this.value;\n var index = data.findIndex(function (i) { return areSame(i, value, dataItemKey); });\n var newIndex = this.base.navigation.navigate({\n current: virtual.skip + index,\n max: (vs.enabled ? virtual.total : data.length) - 1,\n min: defaultItem !== undefined ? -1 : 0,\n keyCode: keyCode\n });\n if (newIndex !== undefined) {\n this.handleItemSelect(newIndex, state);\n }\n this.applyState(state);\n };\n DropDownList.prototype.focusedIndex = function () {\n var filterText = isPresent(this.props.filter) ? this.props.filter : this.state.text;\n var _a = this.props, _b = _a.data, data = _b === void 0 ? [] : _b, _c = _a.virtual, virtual = _c === void 0 ? { skip: 0 } : _c, dataItemKey = _a.dataItemKey;\n var value = this.value;\n var selectedIndex = data.findIndex(function (i) { return areSame(i, value, dataItemKey); });\n var hasSelected = !(selectedIndex < 0 && !this.props.defaultItem);\n if (!hasSelected && filterText && virtual.skip === 0) {\n return data.indexOf(getFocusedItem(data, filterText, this.props.textField));\n }\n else {\n return !hasSelected && virtual.skip === 0 ? 0 : undefined;\n }\n };\n DropDownList.prototype.focusElement = function (element) {\n var _this = this;\n this._skipFocusEvent = true;\n element.focus();\n setTimeout(function () { return _this._skipFocusEvent = false; }, 30);\n };\n DropDownList.prototype.triggerOnChange = function (item, state) {\n if (areSame(this.value, item, this.props.dataItemKey)) {\n return;\n }\n if (this.props.value === undefined) {\n state.data.value = item;\n }\n this._valueDuringOnChange = item;\n state.events.push({ type: 'onChange' });\n };\n DropDownList.prototype.applyState = function (state) {\n this.base.applyState(state);\n this._valueDuringOnChange = undefined;\n };\n /**\n * @hidden\n */\n DropDownList.propTypes = __assign({ delay: PropTypes.number, ignoreCase: PropTypes.bool, iconClassName: PropTypes.string, defaultItem: PropTypes.any, valueRender: PropTypes.func, valueMap: PropTypes.func, validationMessage: PropTypes.string, required: PropTypes.bool }, DropDownBase.propTypes);\n /**\n * @hidden\n */\n DropDownList.defaultProps = __assign({ delay: 500, tabIndex: 0, ignoreCase: true }, DropDownBase.defaultProps, { required: false });\n return DropDownList;\n}(React.Component));\nexport default DropDownList;\n//# sourceMappingURL=DropDownList.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport { registerForLocalization, provideLocalizationService } from '@progress/kendo-react-intl';\nimport { messages, clear } from '../messages';\n/**\n * @hidden\n */\nvar ClearButton = /** @class */ (function (_super) {\n __extends(ClearButton, _super);\n function ClearButton() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.onMouseDown = function (e) { return e.preventDefault(); };\n return _this;\n }\n ClearButton.prototype.render = function () {\n var title = provideLocalizationService(this).toLanguageString(clear, messages[clear]);\n return (React.createElement(\"span\", { className: \"k-icon k-clear-value k-i-close\", role: \"button\", onClick: this.props.onClick, onMouseDown: this.onMouseDown, tabIndex: -1, title: title, key: \"clearbutton\" }));\n };\n return ClearButton;\n}(React.Component));\nexport default ClearButton;\nregisterForLocalization(ClearButton);\n//# sourceMappingURL=ClearButton.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport ClearButton from './ClearButton';\n/**\n * @hidden\n */\nvar SearchBar = /** @class */ (function (_super) {\n __extends(SearchBar, _super);\n function SearchBar() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Object.defineProperty(SearchBar.prototype, \"input\", {\n /**\n * @hidden\n */\n get: function () {\n return this._input;\n },\n enumerable: true,\n configurable: true\n });\n SearchBar.prototype.componentDidUpdate = function (prevProps) {\n var prevValue = prevProps.value;\n var prevSuggestedText = prevProps.suggestedText;\n var _a = this.props, value = _a.value, suggestedText = _a.suggestedText, focused = _a.focused;\n var input = this.input;\n var valueChanged = prevValue !== value || suggestedText !== prevSuggestedText;\n var deleting = valueChanged && prevValue.startsWith(value) &&\n !(prevSuggestedText && suggestedText && prevSuggestedText.endsWith(suggestedText));\n if (focused && input && document.activeElement !== input) {\n input.focus();\n }\n if (suggestedText && valueChanged && !deleting && input) {\n input.setSelectionRange(value.length - suggestedText.length, value.length);\n }\n };\n SearchBar.prototype.render = function () {\n var _this = this;\n return [(React.createElement(\"span\", { className: \"k-searchbar\", key: \"searchbar\" },\n React.createElement(\"input\", { autoComplete: \"off\", id: this.props.id, type: \"text\", size: this.props.size, placeholder: this.props.placeholder, className: \"k-input\", tabIndex: this.props.tabIndex, accessKey: this.props.accessKey, role: \"listbox\", name: this.props.name, value: this.props.value, onChange: this.props.onChange, ref: function (input) { return _this._input = input; }, onKeyDown: this.props.onKeyDown, onFocus: this.props.onFocus, onBlur: this.props.onBlur, \"aria-disabled\": this.props.disabled || undefined, disabled: this.props.disabled || undefined, readOnly: this.props.readOnly || undefined, \"aria-haspopup\": \"listbox\", \"aria-expanded\": this.props.expanded || false, \"aria-owns\": this.props.owns, \"aria-activedescendant\": this.props.activedescendant, \"aria-describedby\": this.props.describedby }))),\n this.props.clearButton && React.createElement(ClearButton, { onClick: this.props.clearButtonClick, key: \"clearbutton\" })\n ];\n };\n return SearchBar;\n}(React.Component));\nexport default SearchBar;\n//# sourceMappingURL=SearchBar.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport DropDownBase from '../common/DropDownBase';\nimport { guid, classNames, FloatingLabel, Keys } from '@progress/kendo-react-common';\nimport { areSame, itemIndexStartsWith, getItemIndexByText, getItemValue, isPresent, suggestValue } from '../common/utils';\nimport SearchBar from '../common/SearchBar';\nimport ListContainer from '../common/ListContainer';\nimport List from '../common/List';\nvar VALIDATION_MESSAGE = 'Please enter a valid value!';\n/**\n * Represents the [KendoReact ComboBox component]({% slug overview_combobox %}).\n *\n * @example\n * ```jsx\n * class App extends React.Component {\n * combobox = null;\n * render() {\n * return (\n *
\n * this.combobox = component}\n * />\n * \n *
\n * );\n * }\n * }\n * ReactDOM.render(, document.querySelector('my-app'));\n * ```\n */\nvar ComboBox = /** @class */ (function (_super) {\n __extends(ComboBox, _super);\n function ComboBox() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /**\n * @hidden\n */\n _this.state = {};\n _this.base = new DropDownBase(_this);\n _this._inputId = guid();\n _this._suggested = '';\n /**\n * @hidden\n */\n _this.handleItemSelect = function (index, state) {\n var _a = _this.props, _b = _a.data, data = _b === void 0 ? [] : _b, virtual = _a.virtual, dataItemKey = _a.dataItemKey;\n var skip = virtual ? virtual.skip : 0;\n var item = data[index - skip];\n var newSelected = !areSame(item, _this.value, dataItemKey);\n _this.triggerOnChange(item, state);\n if (_this.state.text !== undefined) {\n state.data.text = undefined;\n }\n if (newSelected) {\n _this.base.triggerPageChangeCornerItems(item, state);\n }\n };\n _this.toggleBtnClick = function (event) {\n var state = _this.base.initState();\n state.syntheticEvent = event;\n _this.base.togglePopup(state);\n _this.applyState(state);\n };\n _this.handleItemClick = function (index, event) {\n _this.base.handleItemClick(index, event);\n _this._valueDuringOnChange = undefined;\n };\n _this.handleBlur = function (event) {\n if (_this.state.focused) {\n var state = _this.base.initState();\n state.data.focused = false;\n state.events.push({ type: 'onBlur' });\n state.syntheticEvent = event;\n _this.applyValueOnRejectSuggestions(event.currentTarget.value, state);\n }\n };\n _this.onInputKeyDown = function (event) {\n var keyCode = event.keyCode;\n var opened = _this.props.opened !== undefined ? _this.props.opened : _this.state.opened;\n var state = _this.base.initState();\n state.syntheticEvent = event;\n if (!event.altKey && (keyCode === Keys.up || keyCode === Keys.down)) {\n event.preventDefault();\n _this.onNavigate(state, keyCode);\n _this.applyState(state);\n return;\n }\n var togglePopup = function () {\n event.preventDefault();\n _this.base.togglePopup(state);\n _this.applyState(state);\n };\n if (opened) {\n if (event.altKey && keyCode === Keys.up) {\n togglePopup();\n }\n else if (keyCode === Keys.enter) {\n event.preventDefault();\n _this.applyValueOnEnter(event.currentTarget.value, state);\n }\n else if (keyCode === Keys.esc) {\n _this.applyValueOnRejectSuggestions(event.currentTarget.value, state);\n }\n }\n else if (event.altKey && keyCode === Keys.down) {\n togglePopup();\n }\n };\n _this.inputOnChange = function (event) {\n var state = _this.base.initState();\n state.syntheticEvent = event;\n var opened = _this.props.opened !== undefined ? _this.props.opened : _this.state.opened;\n var input = event.currentTarget;\n var value = input.value;\n if (_this.props.suggest) {\n var selectionAtEnd = input.selectionEnd === value.length;\n var prevText = _this.props.filter !== undefined ? _this.props.filter : _this.state.text;\n if (!isPresent(prevText)) {\n prevText = getItemValue(_this.value, _this.props.textField) || '';\n }\n var deletedSuggestion = prevText && prevText === value;\n var deleting = prevText && prevText.length > value.length;\n if (deletedSuggestion || deleting || !selectionAtEnd) {\n _this._suggested = '';\n }\n else {\n _this.suggestValue(value);\n }\n }\n if (_this.props.filter === undefined) {\n state.data.text = value;\n }\n if (_this.state.focusedItem !== undefined) {\n state.data.focusedItem = undefined;\n }\n if (!opened) {\n _this.base.togglePopup(state);\n }\n _this.base.filterChanged(value, state);\n _this.applyState(state);\n };\n _this.clearButtonClick = function (event) {\n var state = _this.base.initState();\n state.syntheticEvent = event;\n event.stopPropagation();\n _this._suggested = '';\n _this.base.filterChanged('', state);\n if (_this.props.filter === undefined && _this.state.text !== undefined) {\n state.data.text = undefined;\n }\n _this.triggerOnChange(null, state);\n var opened = _this.props.opened !== undefined ? _this.props.opened : _this.state.opened;\n if (opened) {\n _this.base.togglePopup(state);\n }\n _this.applyState(state);\n };\n _this.setValidity = function () {\n if (_this._input && _this._input.setCustomValidity) {\n _this._input.setCustomValidity(_this.validity.valid\n ? ''\n : _this.props.validationMessage || VALIDATION_MESSAGE);\n }\n };\n return _this;\n }\n /**\n * @hidden\n */\n ComboBox.prototype.focus = function () {\n if (this._input) {\n this._input.focus();\n }\n };\n Object.defineProperty(ComboBox.prototype, \"element\", {\n /**\n * @hidden\n */\n get: function () {\n return this._element;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ComboBox.prototype, \"value\", {\n /**\n * The value of the ComboBox.\n */\n get: function () {\n if (this._valueDuringOnChange !== undefined) {\n return this._valueDuringOnChange;\n }\n else if (this.props.value !== undefined) {\n return this.props.value;\n }\n else if (this.state.value !== undefined) {\n return this.state.value;\n }\n else if (this.props.defaultValue !== undefined) {\n return this.props.defaultValue;\n }\n return undefined;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ComboBox.prototype, \"index\", {\n /**\n * The index of the selected item.\n */\n get: function () {\n var _a = this.props, _b = _a.data, data = _b === void 0 ? [] : _b, dataItemKey = _a.dataItemKey;\n var value = this.value;\n // TO DO: deprecate it!\n return data.findIndex(function (i) { return areSame(i, value, dataItemKey); });\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ComboBox.prototype, \"name\", {\n /**\n * Gets the `name` property of the ComboBox.\n */\n get: function () {\n return this.props.name;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ComboBox.prototype, \"validity\", {\n /**\n * Represents the validity state into which the component is set.\n */\n get: function () {\n // remove the undefined check when this is fixed:\n // https://github.com/telerik/kendo-react-private/issues/252\n var customError = this.props.validationMessage !== undefined;\n var isValid = (!this.required\n || (this.value !== null && this.value !== '' && this.value !== undefined));\n var valid = this.props.valid !== undefined ? this.props.valid : isValid;\n return {\n customError: customError,\n valid: valid,\n valueMissing: this.value === null\n };\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ComboBox.prototype, \"validityStyles\", {\n get: function () {\n return this.props.validityStyles !== undefined\n ? this.props.validityStyles\n : ComboBox.defaultProps.validityStyles;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ComboBox.prototype, \"required\", {\n /**\n * @hidden\n */\n get: function () {\n return this.props.required !== undefined\n ? this.props.required\n : ComboBox.defaultProps.required;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @hidden\n */\n ComboBox.prototype.componentDidUpdate = function (prevProps, prevState) {\n var _a = this.props, _b = _a.data, data = _b === void 0 ? [] : _b, dataItemKey = _a.dataItemKey, virtual = _a.virtual;\n var prevTotal = prevProps.virtual ? prevProps.virtual.total : 0;\n var opened = this.props.opened !== undefined ? this.props.opened : this.state.opened;\n var prevOpened = prevProps.opened !== undefined ? prevProps.opened : prevState.opened;\n var opening = !prevOpened && opened;\n var selectedItem = this.value;\n this._valueOnDidUpdate = selectedItem;\n if (virtual && virtual.total !== prevTotal) {\n this.base.vs.calcScrollElementHeight();\n this.base.vs.reset();\n }\n else {\n var prevSelectedItem = prevProps.value !== undefined ? prevProps.value : prevState.value;\n var selectedItemIndex = data.findIndex(function (i) { return areSame(i, selectedItem, dataItemKey); });\n var selectedItemChanged = !areSame(prevSelectedItem, selectedItem, dataItemKey);\n if (opening && virtual) {\n this.base.scrollToVirtualItem(virtual, selectedItemIndex);\n }\n else if (opening && !virtual) {\n this.base.scrollToItem(selectedItemIndex);\n }\n else if (opened && prevOpened && selectedItem && selectedItemChanged) {\n this.base.scrollToItem(selectedItemIndex);\n }\n }\n if (opening && this._input) {\n this._input.focus();\n }\n this.setValidity();\n };\n /**\n * @hidden\n */\n ComboBox.prototype.componentDidMount = function () {\n this.base.didMount();\n this.setValidity();\n };\n /**\n * @hidden\n */\n ComboBox.prototype.render = function () {\n var _this = this;\n var _a = this.props, dir = _a.dir, disabled = _a.disabled, _b = _a.clearButton, clearButton = _b === void 0 ? ComboBox.defaultProps.clearButton : _b, label = _a.label, textField = _a.textField, className = _a.className, style = _a.style, loading = _a.loading, iconClassName = _a.iconClassName, virtual = _a.virtual;\n var focused = this.state.focused;\n var isValid = !this.validityStyles || this.validity.valid;\n var text = this.props.filter !== undefined ? this.props.filter : this.state.text;\n var selectedItemText = getItemValue(this.value, textField);\n var inputText = isPresent(text) ? text : selectedItemText;\n var renderClearButton = clearButton && (!!(inputText) || isPresent(this.value));\n var base = this.base;\n var vs = base.vs;\n vs.enabled = virtual !== undefined;\n if (virtual !== undefined) {\n vs.skip = virtual.skip;\n vs.total = virtual.total;\n vs.pageSize = virtual.pageSize;\n }\n var combobox = (React.createElement(\"span\", { className: classNames('k-widget k-combobox k-header', {\n 'k-combobox-clearable': clearButton,\n 'k-state-invalid': !isValid\n }, className), ref: function (element) { return _this._element = element; }, style: !label\n ? style\n : __assign({}, style, { width: undefined }), dir: dir },\n React.createElement(\"span\", { ref: function (wrapper) { return base.wrapper = wrapper; }, className: classNames('k-dropdown-wrap', {\n 'k-state-default': !disabled,\n 'k-state-disabled': disabled,\n 'k-state-focused': focused && !disabled\n }) },\n this.renderSearchBar(renderClearButton, inputText || '', this._inputId),\n React.createElement(\"span\", { className: \"k-select\", onClick: this.toggleBtnClick, onMouseDown: function (e) { return e.preventDefault(); } },\n React.createElement(\"span\", { className: classNames('k-icon', iconClassName, {\n 'k-i-arrow-s': !loading && !iconClassName,\n 'k-i-loading': loading && !iconClassName\n }) }))),\n this.renderListContainer()));\n return label\n ? (React.createElement(FloatingLabel, { label: label, value: inputText, style: { width: style ? style.width : undefined }, valid: isValid, id: this._inputId, children: combobox }))\n : combobox;\n };\n /**\n * @hidden\n */\n ComboBox.prototype.onNavigate = function (state, keyCode) {\n var _a = this.props, _b = _a.data, data = _b === void 0 ? [] : _b, _c = _a.virtual, virtual = _c === void 0 ? { skip: 0 } : _c;\n var text = this.props.filter ? this.props.filter : this.state.text;\n var focusedIndex = this.getFocusedIndex();\n var vs = this.base.vs;\n var value = this.value;\n this._suggested = '';\n if (focusedIndex !== -1 && !isPresent(value)) {\n this.handleItemSelect(focusedIndex, state);\n }\n else if (text === '') {\n this.handleItemSelect(0, state);\n }\n else {\n var currentIndex = virtual.skip + focusedIndex;\n var newIndex = this.base.navigation.navigate({\n keyCode: keyCode,\n current: currentIndex,\n max: (vs.enabled ? vs.total : data.length) - 1,\n min: 0\n });\n if (newIndex !== undefined) {\n this.handleItemSelect(newIndex, state);\n }\n }\n };\n ComboBox.prototype.applyValueOnEnter = function (value, state) {\n var _a;\n var _b = this.props, _c = _b.data, data = _c === void 0 ? [] : _c, textField = _b.textField, allowCustom = _b.allowCustom;\n var opened = this.props.opened !== undefined ? this.props.opened : this.state.opened;\n var currentValueText = getItemValue(this.value, textField);\n var valueIndex = currentValueText === value ?\n this.index : getItemIndexByText(data, value, textField);\n var itemSelected = valueIndex !== -1;\n var newSelected = undefined;\n this._suggested = '';\n if (itemSelected) { // typed text match item from list\n newSelected = data[valueIndex];\n }\n else {\n if (allowCustom) { // any custom text not in list\n newSelected = textField !== undefined ? (_a = {}, _a[textField] = value, _a) : value;\n }\n else {\n return this.selectFocusedItem(value, state);\n }\n }\n this.triggerOnChange(newSelected, state);\n if (opened) {\n this.base.togglePopup(state);\n }\n if (this.props.filter === undefined && this.state.text !== undefined) {\n state.data.text = undefined;\n }\n this.applyState(state);\n };\n ComboBox.prototype.applyValueOnRejectSuggestions = function (text, state) {\n var _a;\n var _b = this.props, _c = _b.data, data = _c === void 0 ? [] : _c, textField = _b.textField, allowCustom = _b.allowCustom;\n var opened = this.props.opened !== undefined ? this.props.opened : this.state.opened;\n var valueItemText = getItemValue(this.value, textField);\n this._suggested = '';\n if (text === valueItemText || (text === '' && !isPresent(valueItemText))) {\n if (opened) {\n this.base.togglePopup(state);\n }\n return this.applyState(state);\n }\n var valueIndex = getItemIndexByText(data, text, textField, true);\n var itemSelected = valueIndex !== -1;\n var newSelected = null;\n if (itemSelected) {\n newSelected = data[valueIndex];\n }\n else if (allowCustom) {\n newSelected = text ? (textField ? (_a = {}, _a[textField] = text, _a) : text) : null;\n }\n this.triggerOnChange(newSelected, state);\n if (this.state.text !== undefined) {\n state.data.text = undefined;\n this.base.filterChanged('', state);\n }\n if (opened) {\n this.base.togglePopup(state);\n }\n this.applyState(state);\n };\n ComboBox.prototype.selectFocusedItem = function (text, state) {\n var opened = this.props.opened !== undefined ? this.props.opened : this.state.opened;\n var _a = this.props, _b = _a.data, data = _b === void 0 ? [] : _b, textField = _a.textField, _c = _a.virtual, virtual = _c === void 0 ? { skip: 0 } : _c;\n var skip = virtual.skip;\n var focusedItemIndex = (text === '' && skip === 0) ? 0 :\n itemIndexStartsWith(data, text, textField);\n if (focusedItemIndex !== -1) {\n this.handleItemSelect(focusedItemIndex + skip, state);\n }\n else {\n this.triggerOnChange(null, state);\n if (this.state.text !== undefined) {\n state.data.text = undefined;\n }\n }\n if (opened) {\n this.base.togglePopup(state);\n }\n return this.applyState(state);\n };\n ComboBox.prototype.renderListContainer = function () {\n var base = this.base;\n var _a = this.props, dir = _a.dir, header = _a.header, footer = _a.footer;\n var opened = this.props.opened !== undefined ? this.props.opened : this.state.opened;\n var popupSettings = base.getPopupSettings();\n var popupWidth = popupSettings.width !== undefined ? popupSettings.width : base.popupWidth;\n return (React.createElement(ListContainer, { onMouseDown: function (e) { return e.preventDefault(); }, width: popupWidth, popupSettings: {\n animate: popupSettings.animate,\n anchor: this.element || undefined,\n show: opened,\n className: classNames('k-list-container k-reset', popupSettings.className)\n }, dir: dir !== undefined ? dir : this.base.dirCalculated },\n header,\n base.renderScrollWrapper([\n this.renderList(),\n base.renderScrollElement()\n ]),\n footer));\n };\n ComboBox.prototype.renderList = function () {\n var _this = this;\n var base = this.base;\n var _a = this.props, textField = _a.textField, dataItemKey = _a.dataItemKey, listNoDataRender = _a.listNoDataRender, itemRender = _a.itemRender, _b = _a.data, data = _b === void 0 ? [] : _b, _c = _a.virtual, virtual = _c === void 0 ? { skip: 0 } : _c;\n var popupSettings = base.getPopupSettings();\n var vs = base.vs;\n var skip = virtual.skip;\n var opened = this.props.opened !== undefined ? this.props.opened : this.state.opened;\n var translate = \"translateY(\" + vs.translate + \"px)\";\n var focusedIndex = opened ? this.getFocusedIndex() : undefined;\n var text = this.props.filter !== undefined ? this.props.filter : this.state.text;\n var selectedItemText = getItemValue(this.value, textField);\n var value = isPresent(text) && text !== selectedItemText ? null : this.value;\n return (React.createElement(List, { id: base.listBoxId, show: opened, data: data, focusedIndex: focusedIndex, value: value, textField: textField, valueField: dataItemKey, optionsGuid: base.guid, listRef: function (list) { return vs.list = _this.base.list = list; }, wrapperStyle: !vs.enabled ?\n { maxHeight: popupSettings.height } : { float: 'left', width: '100%' }, wrapperCssClass: !vs.enabled ? 'k-list-scroller' : undefined, listStyle: vs.enabled ?\n { transform: translate } : undefined, key: \"listkey\", skip: skip, onClick: this.handleItemClick, itemRender: itemRender, noDataRender: listNoDataRender }));\n };\n ComboBox.prototype.renderSearchBar = function (clearButton, text, id) {\n var _this = this;\n var _a = this.props, placeholder = _a.placeholder, tabIndex = _a.tabIndex, disabled = _a.disabled, _b = _a.data, data = _b === void 0 ? [] : _b, dataItemKey = _a.dataItemKey, _c = _a.virtual, virtual = _c === void 0 ? { skip: 0 } : _c;\n var opened = this.props.opened !== undefined ? this.props.opened : this.state.opened;\n var value = this.value;\n var selectedIndex = Math.max(0, data.findIndex(function (i) { return areSame(i, value, dataItemKey); }));\n if (this._suggested && !areSame(this._valueOnDidUpdate, value, dataItemKey)) {\n this._suggested = '';\n }\n return (React.createElement(SearchBar, { id: id, placeholder: placeholder, tabIndex: tabIndex || undefined, accessKey: this.props.accessKey, value: text + this._suggested, suggestedText: this._suggested, ref: function (el) { return _this._input = el && el.input; }, onKeyDown: this.onInputKeyDown, onChange: this.inputOnChange, onFocus: this.base.handleFocus, onBlur: this.handleBlur, disabled: disabled, expanded: opened, owns: this.base.listBoxId, activedescendant: this.base.guid + '-' + (selectedIndex + virtual.skip), clearButton: clearButton, clearButtonClick: this.clearButtonClick }));\n };\n ComboBox.prototype.triggerOnChange = function (item, state) {\n var value = this.value;\n if ((!isPresent(value) && !isPresent(item)) || areSame(value, item, this.props.dataItemKey)) {\n return;\n }\n if (this.props.value === undefined) {\n state.data.value = item;\n }\n this._valueDuringOnChange = item;\n state.events.push({ type: 'onChange' });\n };\n ComboBox.prototype.getFocusedIndex = function () {\n var value = this.value;\n var _a = this.props, _b = _a.data, data = _b === void 0 ? [] : _b, textField = _a.textField, dataItemKey = _a.dataItemKey, _c = _a.virtual, virtual = _c === void 0 ? { skip: 0 } : _c;\n var text = this.props.filter ? this.props.filter : this.state.text;\n if (isPresent(value) && text === undefined) {\n return data.findIndex(function (i) { return areSame(i, value, dataItemKey); });\n }\n else if (text) {\n return itemIndexStartsWith(data, text, textField);\n }\n else {\n return virtual.skip === 0 ? 0 : -1;\n }\n };\n ComboBox.prototype.suggestValue = function (value) {\n var _a = this.props, data = _a.data, textField = _a.textField;\n this._suggested = suggestValue(value, data, textField);\n };\n ComboBox.prototype.applyState = function (state) {\n this.base.applyState(state);\n this._valueDuringOnChange = undefined;\n };\n /**\n * @hidden\n */\n ComboBox.propTypes = __assign({}, DropDownBase.propTypes, { dataItemKey: PropTypes.string, suggest: PropTypes.bool, placeholder: PropTypes.string, allowCustom: PropTypes.bool, clearButton: PropTypes.bool, iconClassName: PropTypes.string, validationMessage: PropTypes.string, required: PropTypes.bool });\n /**\n * @hidden\n */\n ComboBox.defaultProps = __assign({}, DropDownBase.defaultProps, { allowCustom: false, clearButton: true, required: false });\n return ComboBox;\n}(React.Component));\nexport default ComboBox;\n//# sourceMappingURL=ComboBox.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport SearchBar from './../common/SearchBar';\nimport ListContainer from './../common/ListContainer';\nimport List from './../common/List';\nimport DropDownBase from '../common/DropDownBase';\nimport { itemIndexStartsWith, getItemValue, areSame, getFocusedItem } from '../common/utils';\nimport { guid, Keys, classNames, FloatingLabel } from '@progress/kendo-react-common';\nvar VALIDATION_MESSAGE = 'Please enter a valid value!';\n/**\n * Represents the [KendoReact AutoComplete component]({% slug overview_autocomplete %}).\n *\n * @example\n * ```jsx\n * class App extends React.Component {\n * autocomplete = null;\n * render() {\n * return (\n *
\n * this.autocomplete = component}\n * />\n * \n *
\n * );\n * }\n * }\n * ReactDOM.render(, document.querySelector('my-app'));\n * ```\n */\nvar AutoComplete = /** @class */ (function (_super) {\n __extends(AutoComplete, _super);\n function AutoComplete() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /**\n * @hidden\n */\n _this.state = {};\n _this.base = new DropDownBase(_this);\n _this._inputId = guid();\n _this._suggested = '';\n /**\n * @hidden\n */\n _this.handleItemSelect = function (index, state) {\n var _a = _this.props.data, data = _a === void 0 ? [] : _a;\n var newText = getItemValue(data[index], _this.props.textField);\n _this.triggerOnChange(newText, state);\n };\n /**\n * @hidden\n */\n _this.itemFocus = function (index, state) {\n var _a = _this.props, _b = _a.data, data = _b === void 0 ? [] : _b, textField = _a.textField;\n var focusedItem = data[index];\n if (!areSame(_this.state.focusedItem, focusedItem, textField)) {\n state.data.focusedItem = focusedItem;\n }\n };\n /**\n * @hidden\n */\n _this.togglePopup = function (state) {\n _this.base.togglePopup(state);\n };\n _this.setValidity = function () {\n if (_this._input && _this._input.setCustomValidity) {\n _this._input.setCustomValidity(_this.validity.valid\n ? ''\n : _this.props.validationMessage || VALIDATION_MESSAGE);\n }\n };\n _this.handleItemClick = function (index, event) {\n _this.base.handleItemClick(index, event);\n _this._valueDuringOnChange = undefined;\n };\n _this.onChangeHandler = function (event) {\n var base = _this.base;\n var state = base.initState();\n var input = event.currentTarget;\n var value = input.value;\n var selectionAtEnd = input.selectionEnd === value.length;\n state.syntheticEvent = event;\n var prevSuggestion = _this._suggested;\n var prevValue = _this.value;\n var prevUserInput = prevValue &&\n prevValue.substring(0, prevValue.length - prevSuggestion.length);\n var deletedSuggestion = prevUserInput && prevUserInput === value;\n var deleting = prevUserInput && prevUserInput.length > value.length;\n var suggest = _this.props.suggest;\n var opened = _this.props.opened !== undefined ?\n _this.props.opened : _this.state.opened;\n if (suggest !== undefined && suggest !== false) {\n if (deletedSuggestion || deleting || !selectionAtEnd) {\n _this._suggested = '';\n }\n else {\n _this.suggestValue(value);\n }\n var newValue = value + _this._suggested;\n var suggestion = { userInput: value, value: _this._suggested };\n _this.triggerOnChange(newValue, state, { suggestion: suggestion });\n }\n else {\n _this._suggested = '';\n _this.triggerOnChange(value, state);\n }\n if ((!opened && value) || (opened && !value)) {\n _this.togglePopup(state);\n }\n state.data.focusedItem = undefined;\n _this.applyState(state);\n };\n _this.clearButtonClick = function (event) {\n var base = _this.base;\n var state = base.initState();\n var opened = _this.props.opened !== undefined ? _this.props.opened : _this.state.opened;\n state.syntheticEvent = event;\n var newValue = '';\n _this._suggested = '';\n _this.triggerOnChange(newValue, state);\n if (_this.state.focusedItem !== undefined) {\n state.data.focusedItem = undefined;\n }\n if (opened) {\n _this.togglePopup(state);\n }\n _this.applyState(state);\n };\n _this.onInputKeyDown = function (event) {\n var keyCode = event.keyCode;\n var opened = _this.props.opened !== undefined ? _this.props.opened : _this.state.opened;\n var state = _this.base.initState();\n state.syntheticEvent = event;\n var preventDefault = function () {\n if (opened) {\n event.preventDefault();\n }\n };\n if (keyCode === Keys.enter || keyCode === Keys.esc) {\n preventDefault();\n _this.applyInputValue(event.currentTarget.value, state, event.keyCode);\n }\n else if (keyCode === Keys.up || keyCode === Keys.down) {\n preventDefault();\n _this.onNavigate(state, keyCode);\n }\n };\n _this.handleBlur = function (event) {\n if (_this.state.focused) {\n var state = _this.base.initState();\n state.data.focused = false;\n state.events.push({ type: 'onBlur' });\n state.syntheticEvent = event;\n _this.applyInputValue(event.currentTarget.value, state);\n }\n };\n return _this;\n }\n /**\n * @hidden\n */\n AutoComplete.prototype.focus = function () {\n if (this._input) {\n this._input.focus();\n }\n };\n Object.defineProperty(AutoComplete.prototype, \"element\", {\n /**\n * @hidden\n */\n get: function () {\n return this._element;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(AutoComplete.prototype, \"value\", {\n /**\n * The value of the AutoComplete.\n */\n get: function () {\n if (this._valueDuringOnChange !== undefined) {\n return this._valueDuringOnChange;\n }\n else if (this.props.value !== undefined) {\n return this.props.value;\n }\n else if (this.state.value !== undefined) {\n return this.state.value;\n }\n else if (this.props.defaultValue !== undefined) {\n return this.props.defaultValue;\n }\n return '';\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(AutoComplete.prototype, \"name\", {\n /**\n * Gets the `name` property of the AutoComplete.\n */\n get: function () {\n return this.props.name;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(AutoComplete.prototype, \"validity\", {\n /**\n * Represents the validity state into which the AutoComplete is set.\n */\n get: function () {\n // The AutoComplete component is in a invalid state\n // only if it's required and the value is null!\n var customError = this.props.validationMessage !== undefined;\n var isValid = (!this.required || this.value !== '');\n var valid = this.props.valid !== undefined ? this.props.valid : isValid;\n return {\n customError: customError,\n valid: valid,\n valueMissing: this.value === null\n };\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(AutoComplete.prototype, \"validityStyles\", {\n /**\n * @hidden\n */\n get: function () {\n return this.props.validityStyles !== undefined\n ? this.props.validityStyles\n : AutoComplete.defaultProps.validityStyles;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(AutoComplete.prototype, \"required\", {\n /**\n * @hidden\n */\n get: function () {\n return this.props.required !== undefined\n ? this.props.required\n : AutoComplete.defaultProps.required;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @hidden\n */\n AutoComplete.prototype.componentDidUpdate = function (prevProps, prevState) {\n var _a = this.props.data, data = _a === void 0 ? [] : _a;\n var _b = prevProps.data, prevData = _b === void 0 ? [] : _b;\n var focusedIndex = this.focusedIndex();\n var focusedItem = data[focusedIndex];\n var dataChanged = prevData !== data;\n var focusedItemChanged = focusedItem !== undefined && prevState.focusedItem !== focusedItem;\n var opened = this.props.opened !== undefined ? this.props.opened : this.state.opened;\n var prevOpened = prevProps.opened !== undefined ? prevProps.opened : prevState.opened;\n var opening = !prevOpened && opened;\n if ((opened && (focusedItemChanged || dataChanged)) || opening) {\n this.base.scrollToItem(focusedIndex);\n }\n this.setValidity();\n };\n /**\n * @hidden\n */\n AutoComplete.prototype.componentDidMount = function () {\n this.base.didMount();\n this.setValidity();\n };\n /**\n * @hidden\n */\n AutoComplete.prototype.render = function () {\n var _this = this;\n var _a = this.props, dir = _a.dir, disabled = _a.disabled, label = _a.label, className = _a.className, style = _a.style, loading = _a.loading, suggest = _a.suggest;\n var isValid = !this.validityStyles || this.validity.valid;\n var focused = this.state.focused;\n var base = this.base;\n var value = this.value;\n var renderClearButton = !loading && !!value;\n if (typeof suggest === 'string') {\n this._suggested = suggest;\n }\n var autoComplete = (React.createElement(\"span\", { className: classNames('k-widget k-autocomplete k-header', className, {\n 'k-state-disabled': disabled,\n 'k-state-focused': focused && !disabled,\n 'k-state-invalid': !isValid\n }), ref: function (element) {\n _this._element = element;\n base.wrapper = element;\n }, style: !label\n ? style\n : __assign({}, style, { width: undefined }), dir: dir },\n this.renderSearchBar(renderClearButton, value || ''),\n loading && React.createElement(\"span\", { className: \"k-icon k-i-loading\" }),\n this.renderListContainer()));\n return label\n ? (React.createElement(FloatingLabel, { label: label, value: value, valid: isValid, style: { width: style ? style.width : undefined }, id: this._inputId, children: autoComplete }))\n : autoComplete;\n };\n /**\n * @hidden\n */\n AutoComplete.prototype.onNavigate = function (state, keyCode) {\n var _this = this;\n var typedText = this.value;\n var _a = this.props, _b = _a.data, data = _b === void 0 ? [] : _b, textField = _a.textField;\n var focusedIndex = this.state.focusedItem !== undefined ?\n data.findIndex(function (i) { return areSame(i, _this.state.focusedItem, textField); }) :\n data.indexOf(getFocusedItem(data, typedText, textField));\n var newFocused = this.base.navigation.navigate({\n keyCode: keyCode,\n current: focusedIndex,\n max: data.length - 1,\n min: 0\n });\n if (newFocused !== undefined) {\n this.itemFocus(newFocused, state);\n }\n this.applyState(state);\n };\n /**\n * @hidden\n */\n AutoComplete.prototype.applyInputValue = function (value, state, eventKey) {\n var opened = this.props.opened !== undefined ? this.props.opened : this.state.opened;\n var _a = this.props, _b = _a.data, data = _b === void 0 ? [] : _b, textField = _a.textField;\n var focusedIndex = this.focusedIndex(value);\n var focusedItem = data[focusedIndex];\n this._suggested = '';\n if (opened && eventKey === Keys.enter) {\n var newValue = getItemValue(focusedItem, textField);\n this.triggerOnChange(newValue, state);\n }\n if (opened) {\n this.togglePopup(state);\n }\n this.applyState(state);\n };\n AutoComplete.prototype.renderSearchBar = function (clearButton, value) {\n var _this = this;\n var base = this.base;\n var _a = this.props, placeholder = _a.placeholder, tabIndex = _a.tabIndex, disabled = _a.disabled, readonly = _a.readonly;\n var focused = this.state.focused;\n var opened = this.props.opened !== undefined ? this.props.opened : this.state.opened;\n return (React.createElement(SearchBar, { id: this._inputId, placeholder: placeholder, tabIndex: tabIndex || undefined, accessKey: this.props.accessKey, value: value, suggestedText: this._suggested, focused: focused, name: this.props.name, ref: function (searchbar) { return _this._input = searchbar && searchbar.input; }, onKeyDown: this.onInputKeyDown, onChange: this.onChangeHandler, onFocus: base.handleFocus, onBlur: this.handleBlur, disabled: disabled, readOnly: readonly, expanded: opened, owns: base.listBoxId, activedescendant: 'option-' + base.guid + '-' + this.focusedIndex(), clearButton: clearButton, clearButtonClick: this.clearButtonClick }));\n };\n AutoComplete.prototype.renderListContainer = function () {\n var base = this.base;\n var _a = this.props, dir = _a.dir, header = _a.header, footer = _a.footer;\n var popupSettings = base.getPopupSettings();\n var opened = this.props.opened !== undefined ? this.props.opened : this.state.opened;\n var popupWidth = popupSettings.width !== undefined ? popupSettings.width : base.popupWidth;\n return (React.createElement(ListContainer, { onMouseDown: function (e) { return e.preventDefault(); }, width: popupWidth, popupSettings: {\n animate: popupSettings.animate,\n anchor: this.element || undefined,\n show: opened,\n className: classNames('k-list-container k-reset', popupSettings.className)\n }, dir: dir !== undefined ? dir : this.base.dirCalculated },\n header,\n this.renderList(),\n footer));\n };\n AutoComplete.prototype.renderList = function () {\n var base = this.base;\n var popupSettings = base.getPopupSettings();\n var _a = this.props, textField = _a.textField, _b = _a.data, data = _b === void 0 ? [] : _b, listNoDataRender = _a.listNoDataRender, itemRender = _a.itemRender;\n var value = this.value;\n var opened = this.props.opened !== undefined ? this.props.opened : this.state.opened;\n return (React.createElement(List, { id: base.listBoxId, show: opened, data: data.slice(), focusedIndex: this.focusedIndex(), value: value, textField: textField, valueField: textField, highlightSelected: false, optionsGuid: base.guid, listRef: function (list) { return base.list = list; }, wrapperStyle: { maxHeight: popupSettings.height }, wrapperCssClass: \"k-list-scroller\", onClick: this.handleItemClick, itemRender: itemRender, noDataRender: listNoDataRender }));\n };\n AutoComplete.prototype.triggerOnChange = function (newValue, state, eventArgs) {\n if (this.value === newValue && !eventArgs) {\n return;\n }\n state.data.value = newValue;\n this._valueDuringOnChange = newValue;\n state.events.push(__assign({ type: 'onChange' }, (eventArgs || {})));\n };\n AutoComplete.prototype.applyState = function (state) {\n this.base.applyState(state);\n this._valueDuringOnChange = undefined;\n };\n AutoComplete.prototype.suggestValue = function (value) {\n this._suggested = '';\n if (value) {\n var _a = this.props, _b = _a.data, data = _b === void 0 ? [] : _b, textField = _a.textField;\n var suggestedItem = data[itemIndexStartsWith(data, value, textField)];\n if (suggestedItem) {\n var suggestedText = getItemValue(suggestedItem, textField);\n if (value.toLowerCase() !== suggestedText.toLowerCase()) {\n this._suggested = suggestedText.substring(value.length);\n }\n }\n }\n };\n AutoComplete.prototype.focusedIndex = function (value) {\n var _this = this;\n var _a = this.props, _b = _a.data, data = _b === void 0 ? [] : _b, textField = _a.textField;\n return this.state.focusedItem !== undefined ?\n data.findIndex(function (i) { return areSame(i, _this.state.focusedItem, textField); }) :\n Math.max(0, data.indexOf(getFocusedItem(data, value !== undefined ? value : this.value, textField)));\n };\n /**\n * @hidden\n */\n AutoComplete.propTypes = __assign({}, DropDownBase.basicPropTypes, { suggest: PropTypes.oneOfType([PropTypes.bool, PropTypes.string]), placeholder: PropTypes.string, value: PropTypes.string, defaultValue: PropTypes.string, validationMessage: PropTypes.string, required: PropTypes.bool, readonly: PropTypes.bool });\n /**\n * @hidden\n */\n AutoComplete.defaultProps = __assign({}, DropDownBase.defaultProps);\n return AutoComplete;\n}(React.Component));\nexport default AutoComplete;\n//# sourceMappingURL=AutoComplete.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nvar tagClassName = 'k-button';\nvar focusedTagClassName = tagClassName + ' k-state-focused';\nvar preventDefault = function (event) { return event.preventDefault(); };\nvar stopPropagation = function (event) { return event.stopPropagation(); };\n/**\n * @hidden\n */\nvar TagList = /** @class */ (function (_super) {\n __extends(TagList, _super);\n function TagList() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n TagList.prototype.render = function () {\n var _this = this;\n var _a = this.props, data = _a.data, guid = _a.guid;\n return (React.createElement(\"ul\", { className: \"k-reset\", role: \"listbox\", id: 'tagslist-' + guid }, data.map(function (tagData) {\n var tag = (React.createElement(\"li\", { className: tagData === _this.props.focused ? focusedTagClassName : tagClassName, key: tagData.text, id: \"tag-\" + guid + \"-\" + tagData.text.replace(/\\s+/g, '-'), onMouseDown: preventDefault, onClick: stopPropagation, \"aria-selected\": true, role: \"option\", \"aria-setsize\": data.length },\n React.createElement(\"span\", null, tagData.text),\n React.createElement(\"span\", { \"aria-label\": \"delete\", className: \"k-select\", onClick: function (e) { return _this.props.onTagDelete.call(undefined, tagData.data, e); } },\n React.createElement(\"span\", { className: \"k-icon k-i-close\" }))));\n return _this.props.tagRender ?\n _this.props.tagRender(tagData, tag) : tag;\n })));\n };\n return TagList;\n}(React.Component));\nexport default TagList;\n//# sourceMappingURL=TagList.js.map","/**\n * @hidden\n */\nexport var ActiveDescendant;\n(function (ActiveDescendant) {\n ActiveDescendant[ActiveDescendant[\"PopupList\"] = 0] = \"PopupList\";\n ActiveDescendant[ActiveDescendant[\"TagsList\"] = 1] = \"TagsList\";\n})(ActiveDescendant || (ActiveDescendant = {}));\n//# sourceMappingURL=settings.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { classNames, Keys, FloatingLabel, guid } from '@progress/kendo-react-common';\nimport ListContainer from '../common/ListContainer';\nimport List from '../common/List';\nimport TagList from './TagList';\nimport SearchBar from '../common/SearchBar';\nimport DropDownBase from '../common/DropDownBase';\nimport { ActiveDescendant } from './../common/settings';\nimport { itemIndexStartsWith, getItemValue, areSame, matchDataCollections, removeDataItems, isPresent, preventDefaultNonInputs } from '../common/utils';\nvar VALIDATION_MESSAGE = 'Please enter a valid value!';\nvar preventDefault = function (event) { return event.preventDefault(); };\nvar matchTags = function (tag1, tag2, key) {\n if (!!tag1 !== !!tag2 || tag1.text !== tag2.text) {\n return false;\n }\n return tag1 === tag2 || matchDataCollections(tag1.data, tag2.data, key);\n};\nvar isCustom = function (type) { return type === FocusedItemType.CustomItem; };\nvar FocusedItemType;\n(function (FocusedItemType) {\n FocusedItemType[FocusedItemType[\"None\"] = 0] = \"None\";\n FocusedItemType[FocusedItemType[\"ListItem\"] = 1] = \"ListItem\";\n FocusedItemType[FocusedItemType[\"CustomItem\"] = 2] = \"CustomItem\";\n})(FocusedItemType || (FocusedItemType = {}));\n/**\n * Represents the [KendoReact MultiSelect component]({% slug overview_multiselect %}).\n *\n * @example\n * ```jsx\n * class App extends React.Component {\n * multiselect = null;\n * render() {\n * return (\n *
\n * this.multiselect = component}\n * />\n * \n *
\n * );\n * }\n * }\n * ReactDOM.render(, document.querySelector('my-app'));\n * ```\n */\nvar MultiSelect = /** @class */ (function (_super) {\n __extends(MultiSelect, _super);\n function MultiSelect() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /**\n * @hidden\n */\n _this.state = {\n activedescendant: ActiveDescendant.PopupList\n };\n _this._valueItemsDuringOnChange = null;\n _this._inputId = guid();\n _this.base = new DropDownBase(_this);\n _this._tags = [];\n _this._skipFocusEvent = false;\n /**\n * @hidden\n */\n _this.handleItemSelect = function (index, state) {\n var _a = _this.props, _b = _a.data, data = _b === void 0 ? [] : _b, dataItemKey = _a.dataItemKey, virtual = _a.virtual;\n var skip = virtual ? virtual.skip : 0;\n var dataItem = data[index - skip];\n var indexInValue = _this.value.findIndex(function (i) { return areSame(i, dataItem, dataItemKey); });\n var newItems = [];\n if (indexInValue !== -1) { // item is already selected\n newItems = _this.value;\n newItems.splice(indexInValue, 1);\n }\n else {\n newItems = _this.value.concat([dataItem]);\n }\n var text = _this.props.filter !== undefined ? _this.props.filter : _this.state.text;\n if (text) {\n if (_this.state.text) {\n state.data.text = '';\n }\n _this.base.filterChanged('', state);\n }\n if (_this.state.focusedIndex !== undefined) {\n state.data.focusedIndex = undefined;\n }\n _this.triggerOnChange(newItems, state);\n _this.base.triggerPageChangeCornerItems(dataItem, state);\n };\n /**\n * @hidden\n */\n _this.onTagDelete = function (itemsToRemove, event) {\n var opened = _this.props.opened !== undefined ? _this.props.opened : _this.state.opened;\n var state = _this.base.initState();\n state.syntheticEvent = event;\n if (opened) {\n _this.base.togglePopup(state);\n }\n if (!_this.state.focused) {\n state.data.focused = true;\n }\n var selected = _this.value;\n removeDataItems(selected, itemsToRemove, _this.props.dataItemKey);\n _this.triggerOnChange(selected, state);\n _this.applyState(state);\n };\n /**\n * @hidden\n */\n _this.itemFocus = function (index, state) {\n var _a = _this.props, _b = _a.data, data = _b === void 0 ? [] : _b, allowCustom = _a.allowCustom, virtual = _a.virtual;\n var skip = virtual ? virtual.skip : 0;\n var text = _this.props.filter !== undefined ? _this.props.filter : _this.state.text;\n var focusedIndex = _this.getFocusedState().focusedIndex;\n var customItem = allowCustom && text;\n var nextFocusedItem = data[index - skip];\n if (nextFocusedItem && focusedIndex !== index) {\n if (_this.state.focusedIndex !== index) {\n state.data.focusedIndex = index;\n state.data.activedescendant = ActiveDescendant.PopupList;\n }\n }\n else if (customItem && index === -1) {\n if (_this.state.focusedIndex !== undefined) {\n state.data.focusedIndex = undefined;\n }\n }\n _this.base.triggerPageChangeCornerItems(nextFocusedItem, state);\n };\n _this.searchbarRef = function (searchbar) {\n var input = _this._input = searchbar && searchbar.input;\n if (input && _this.state.focused) {\n setTimeout(function () { return input.focus(); }, 0);\n }\n };\n _this.onChangeHandler = function (event) {\n var state = _this.base.initState();\n var value = event.currentTarget.value;\n var opened = _this.props.opened !== undefined ? _this.props.opened : _this.state.opened;\n state.syntheticEvent = event;\n if (_this.props.filter === undefined) {\n state.data.text = value;\n }\n state.data.focusedIndex = undefined;\n if (!opened) {\n _this.base.togglePopup(state);\n }\n _this.base.filterChanged(value, state);\n _this.applyState(state);\n };\n _this.clearButtonClick = function (event) {\n var opened = _this.props.opened !== undefined ? _this.props.opened : _this.state.opened;\n var state = _this.base.initState();\n state.syntheticEvent = event;\n event.stopPropagation();\n if (_this.value.length > 0) {\n _this.triggerOnChange([], state);\n }\n if (_this.state.focusedIndex !== undefined) {\n state.data.focusedIndex = undefined;\n }\n if (opened) {\n _this.base.togglePopup(state);\n }\n var text = _this.props.filter !== undefined ? _this.props.filter : _this.state.text;\n if (isPresent(text) && text !== '') {\n _this.base.filterChanged('', state);\n }\n if (_this.state.text) {\n state.data.text = '';\n }\n _this.applyState(state);\n };\n _this.onInputKeyDown = function (event) {\n var keyCode = event.keyCode;\n var text = _this.props.filter !== undefined ? _this.props.filter : _this.state.text;\n var opened = _this.props.opened !== undefined ? _this.props.opened : _this.state.opened;\n var focusedItem = _this.getFocusedState().focusedItem;\n var state = _this.base.initState();\n state.syntheticEvent = event;\n if (!text && _this.value.length > 0 &&\n (keyCode === Keys.left || keyCode === Keys.right ||\n keyCode === Keys.home || keyCode === Keys.end ||\n keyCode === Keys.delete || keyCode === Keys.backspace)) {\n return _this.onTagsNavigate(event, state);\n }\n var togglePopup = function () {\n event.preventDefault();\n _this.base.togglePopup(state);\n _this.applyState(state);\n };\n if (opened) {\n if (event.altKey && keyCode === Keys.up) {\n togglePopup();\n }\n else if (keyCode === Keys.up || keyCode === Keys.down) {\n event.preventDefault();\n _this.onNavigate(state, keyCode);\n }\n else if (keyCode === Keys.enter) {\n event.preventDefault();\n if (_this.props.allowCustom && text && focusedItem === null) {\n _this.customItemSelect(event);\n }\n else {\n _this.selectFocusedItem(event);\n }\n }\n else if (keyCode === Keys.esc) {\n togglePopup();\n }\n }\n else if (event.altKey && keyCode === Keys.down) {\n togglePopup();\n }\n };\n _this.renderListContainer = function () {\n var base = _this.base;\n var _a = _this.props, header = _a.header, footer = _a.footer, allowCustom = _a.allowCustom, dir = _a.dir;\n var popupSettings = _this.base.getPopupSettings();\n var opened = _this.props.opened !== undefined ? _this.props.opened : _this.state.opened;\n var text = _this.props.filter !== undefined ? _this.props.filter : _this.state.text;\n var virtual = _this.props.virtual !== undefined;\n var popupWidth = popupSettings.width !== undefined ? popupSettings.width : base.popupWidth;\n var listContainerProps = {\n onMouseDown: preventDefault,\n dir: dir !== undefined ? dir : base.dirCalculated,\n onBlur: _this.handleBlur,\n width: popupWidth,\n popupSettings: {\n className: classNames('k-list-container k-reset', popupSettings.className),\n animate: popupSettings.animate,\n anchor: _this.element || undefined,\n show: opened,\n open: _this.onPopupOpened,\n close: _this.onPopupClosed\n }\n };\n var focusedType = _this.getFocusedState().focusedType;\n var customItem = allowCustom && text && (React.createElement(\"div\", { className: \"k-list\", key: \"customitem\", onClick: _this.customItemSelect },\n React.createElement(\"div\", { className: classNames('k-item k-custom-item', { 'k-state-focused': isCustom(focusedType) }) },\n text,\n React.createElement(\"span\", { className: \"k-icon k-i-plus\", style: { float: 'right' } }))));\n return (React.createElement(ListContainer, __assign({}, listContainerProps),\n virtual && header,\n _this.base.renderScrollWrapper(!virtual ? [\n header,\n customItem,\n _this.renderList(),\n footer,\n _this.base.renderScrollElement()\n ] : [\n customItem,\n _this.renderList(),\n _this.base.renderScrollElement()\n ]),\n virtual && footer));\n };\n _this.renderList = function () {\n var _a = _this.props, _b = _a.data, data = _b === void 0 ? [] : _b, textField = _a.textField, listNoDataRender = _a.listNoDataRender, itemRender = _a.itemRender, dataItemKey = _a.dataItemKey, virtual = _a.virtual;\n var vs = _this.base.vs;\n var skip = virtual ? virtual.skip : 0;\n var opened = _this.props.opened !== undefined ? _this.props.opened : _this.state.opened;\n var focusedIndex = _this.getFocusedState().focusedIndex;\n var popupSettings = _this.base.getPopupSettings();\n var translate = \"translateY(\" + vs.translate + \"px)\";\n return (React.createElement(List, { id: _this.base.listBoxId, show: opened, data: data.slice(), focusedIndex: focusedIndex - skip, value: _this.value, textField: textField, valueField: dataItemKey, optionsGuid: _this.base.guid, listRef: function (list) { return vs.list = _this.base.list = list; }, wrapperStyle: vs.enabled ?\n { float: 'left', width: '100%' } : { maxHeight: popupSettings.height }, wrapperCssClass: vs.enabled ? undefined : 'k-list-scroller', listStyle: vs.enabled ? { transform: translate } : undefined, key: \"listKey\", skip: skip, onClick: _this.handleItemClick, itemRender: itemRender, noDataRender: listNoDataRender }));\n };\n _this.customItemSelect = function (event) {\n var _a;\n var itemText = _this.props.filter !== undefined ? _this.props.filter : _this.state.text;\n var textField = _this.props.textField;\n if (!itemText) {\n return;\n }\n var state = _this.base.initState();\n state.syntheticEvent = event;\n var item = textField ? (_a = {}, _a[textField] = itemText, _a) : itemText;\n if (_this.state.text !== undefined) {\n state.data.text = '';\n }\n state.data.focusedIndex = undefined;\n _this.base.filterChanged('', state);\n var newItems = _this.value.concat([item]);\n _this.triggerOnChange(newItems, state);\n _this.base.togglePopup(state);\n _this.applyState(state);\n };\n _this.handleWrapperClick = function (event) {\n var opened = _this.props.opened !== undefined ? _this.props.opened : _this.state.opened;\n var input = _this._input;\n if (!opened && input) {\n _this.focusElement(input);\n }\n var state = _this.base.initState();\n state.syntheticEvent = event;\n if (!_this.state.focused) {\n state.events.push({ type: 'onFocus' });\n state.data.focused = true;\n }\n _this.base.togglePopup(state);\n _this.applyState(state);\n };\n _this.handleItemClick = function (index, event) {\n var state = _this.base.initState();\n state.syntheticEvent = event;\n _this.handleItemSelect(index, state);\n if (_this.props.autoClose) {\n _this.base.togglePopup(state);\n }\n _this.applyState(state);\n };\n _this.handleBlur = function (event) {\n if (!_this.state.focused || _this._skipFocusEvent) {\n return;\n }\n var opened = _this.props.opened !== undefined ? _this.props.opened : _this.state.opened;\n var state = _this.base.initState();\n var _a = _this.props, allowCustom = _a.allowCustom, filterable = _a.filterable;\n state.syntheticEvent = event;\n state.data.focused = false;\n state.events.push({ type: 'onBlur' });\n if (opened) {\n if (_this.state.opened) {\n state.data.opened = false;\n }\n state.events.push({ type: 'onClose' });\n }\n if (!allowCustom && !filterable && _this.state.text) {\n state.data.text = '';\n }\n _this.applyState(state);\n };\n _this.handleFocus = function (event) {\n if (_this._skipFocusEvent) {\n return;\n }\n _this.base.handleFocus(event);\n };\n _this.onPopupOpened = function () {\n if (_this._input && _this.state.focused) {\n _this.focusElement(_this._input);\n }\n };\n _this.onPopupClosed = function () {\n if (_this.state.focused) {\n setTimeout(function () { if (_this.state.focused) {\n _this.focusElement(_this._input);\n } }, 0);\n }\n };\n _this.setValidity = function () {\n if (_this._input && _this._input.setCustomValidity) {\n _this._input.setCustomValidity(_this.validity.valid\n ? ''\n : _this.props.validationMessage || VALIDATION_MESSAGE);\n }\n };\n return _this;\n }\n /**\n * @hidden\n */\n MultiSelect.prototype.focus = function () {\n if (this._input) {\n this._input.focus();\n }\n };\n Object.defineProperty(MultiSelect.prototype, \"element\", {\n /**\n * @hidden\n */\n get: function () {\n return this._element;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MultiSelect.prototype, \"value\", {\n /**\n * Represents the value of the MultiSelect.\n */\n get: function () {\n var result = [];\n if (this._valueItemsDuringOnChange) {\n result.push.apply(result, this._valueItemsDuringOnChange);\n }\n else if (this.props.value) {\n result.push.apply(result, this.props.value);\n }\n else if (this.state.value) {\n result.push.apply(result, this.state.value);\n }\n else if (this.props.defaultValue) {\n result.push.apply(result, this.props.defaultValue);\n }\n return result;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MultiSelect.prototype, \"name\", {\n /**\n * Gets the `name` property of the MultiSelect.\n */\n get: function () {\n return this.props.name;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MultiSelect.prototype, \"validity\", {\n /**\n * Represents the validity state into which the MultiSelect is set.\n */\n get: function () {\n var customError = this.props.validationMessage !== undefined;\n var isValid = (!this.required\n || (this.value !== null && this.value.length > 0 && this.value !== undefined));\n var valid = this.props.valid !== undefined ? this.props.valid : isValid;\n return {\n customError: customError,\n valid: valid,\n valueMissing: this.value === null\n };\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MultiSelect.prototype, \"required\", {\n /**\n * @hidden\n */\n get: function () {\n return this.props.required !== undefined\n ? this.props.required\n : MultiSelect.defaultProps.required;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MultiSelect.prototype, \"validityStyles\", {\n get: function () {\n return this.props.validityStyles !== undefined\n ? this.props.validityStyles\n : MultiSelect.defaultProps.validityStyles;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @hidden\n */\n MultiSelect.prototype.componentDidUpdate = function (prevProps, prevState) {\n var _a = this.props, virtual = _a.virtual, data = _a.data;\n var skip = virtual ? virtual.skip : 0;\n var prevTotal = prevProps.virtual ? prevProps.virtual.total : 0;\n var opened = this.props.opened !== undefined ? this.props.opened : this.state.opened;\n var prevOpened = prevProps.opened !== undefined ? prevProps.opened : prevState.opened;\n var opening = !prevOpened && opened;\n var closing = prevOpened && !opened;\n var popupSettings = this.base.getPopupSettings();\n if (!popupSettings.animate && closing) {\n this.onPopupClosed();\n }\n if (virtual && virtual.total !== prevTotal) {\n this.base.vs.calcScrollElementHeight();\n this.base.vs.reset();\n }\n else {\n var _b = this.getFocusedState(), focusedItem = _b.focusedItem, focusedIndex = _b.focusedIndex;\n var focusedItemChanged = focusedIndex !== undefined && prevState.focusedIndex !== focusedIndex;\n var prevData = prevProps.data;\n if (opening && virtual) {\n this.base.scrollToVirtualItem(virtual, focusedIndex - skip);\n }\n else if (opening && !virtual) {\n this.base.scrollToItem(focusedIndex);\n }\n else if (opened && prevOpened && focusedItem && (focusedItemChanged || prevData !== data)) {\n this.base.scrollToItem(focusedIndex - skip);\n }\n }\n this.setValidity();\n };\n /**\n * @hidden\n */\n MultiSelect.prototype.componentDidMount = function () {\n this.base.didMount();\n this.setValidity();\n };\n /**\n * @hidden\n */\n MultiSelect.prototype.onNavigate = function (state, keyCode) {\n var _a = this.props, allowCustom = _a.allowCustom, _b = _a.data, data = _b === void 0 ? [] : _b;\n var opened = this.props.opened !== undefined ? this.props.opened : this.state.opened;\n var text = this.props.filter !== undefined ? this.props.filter : this.state.text;\n var _c = this.getFocusedState(), focusedType = _c.focusedType, focusedIndex = _c.focusedIndex;\n var customItem = allowCustom && text;\n var customItemFocused = isCustom(focusedType);\n var base = this.base;\n var vs = base.vs;\n if (opened && keyCode === Keys.up && customItemFocused) {\n if (this.state.focusedIndex !== undefined) {\n state.data.focusedIndex = undefined;\n }\n }\n else {\n var newFocused = base.navigation.navigate({\n keyCode: keyCode,\n current: focusedIndex,\n max: (vs.enabled ? vs.total : data.length) - 1,\n min: customItem ? -1 : 0\n });\n if (newFocused !== undefined) {\n this.itemFocus(newFocused, state);\n }\n }\n this.applyState(state);\n };\n /**\n * @hidden\n */\n MultiSelect.prototype.render = function () {\n var _this = this;\n var _a = this.props, style = _a.style, className = _a.className, label = _a.label, dir = _a.dir, disabled = _a.disabled, tags = _a.tags, textField = _a.textField, dataItemKey = _a.dataItemKey, virtual = _a.virtual;\n var _b = this.state, focused = _b.focused, text = _b.text, focusedTag = _b.focusedTag;\n var vs = this.base.vs;\n vs.enabled = virtual !== undefined;\n if (virtual !== undefined) {\n vs.skip = virtual.skip;\n vs.total = virtual.total;\n vs.pageSize = virtual.pageSize;\n }\n var tagsToRender = [];\n if (tags === undefined) {\n this.value.forEach(function (item) {\n tagsToRender.push({ text: getItemValue(item, textField), data: [item] });\n });\n }\n else {\n tagsToRender.push.apply(tagsToRender, tags);\n }\n this.setItems(tagsToRender, this._tags);\n var isValid = !this.validityStyles || this.validity.valid;\n var component = (React.createElement(\"span\", { ref: function (dropdown) { return _this._element = dropdown; }, className: classNames('k-widget k-multiselect k-header', className, {\n 'k-state-focused': focused && !disabled,\n 'k-state-invalid': !isValid,\n 'k-state-disabled': disabled\n }), style: !label\n ? style\n : __assign({}, style, { width: undefined }), dir: dir, onFocus: this.handleFocus, onBlur: this.handleBlur },\n React.createElement(\"div\", { onClick: this.handleWrapperClick, ref: function (wrapper) { return _this.base.wrapper = wrapper; }, className: \"k-multiselect-wrap k-floatwrap\", onMouseDown: preventDefaultNonInputs },\n tagsToRender.length > 0 && React.createElement(TagList, { tagRender: this.props.tagRender, onTagDelete: this.onTagDelete, data: tagsToRender, guid: this.base.guid, focused: focusedTag ? tagsToRender.find(function (t) { return matchTags(t, focusedTag, dataItemKey); }) : undefined }),\n this.renderSearchbar(),\n this.props.loading && React.createElement(\"span\", { className: \"k-icon k-i-loading\" })),\n this.renderListContainer()));\n return label ? (React.createElement(FloatingLabel, { label: label, value: text || getItemValue(this.value[0], textField), style: { width: style ? style.width : undefined }, children: component, valid: isValid, id: this._inputId })) : component;\n };\n MultiSelect.prototype.renderSearchbar = function () {\n var _a = this.state, activedescendant = _a.activedescendant, focusedTag = _a.focusedTag;\n var _b = this.props, disabled = _b.disabled, placeholder = _b.placeholder;\n var text = (this.props.filter !== undefined ? this.props.filter : this.state.text) || '';\n var opened = this.props.opened !== undefined ? this.props.opened : this.state.opened;\n var focusedIndex = this.getFocusedState().focusedIndex;\n var clearButton = !!text || this.value.length > 0;\n var placeholderToShow = this.value.length === 0 && !text ? placeholder : undefined;\n var ariaActivedescendant = activedescendant === ActiveDescendant.TagsList && focusedTag !== undefined ?\n \"tag-\" + this.base.guid + \"-\" + focusedTag.text.replace(/\\s+/g, '-') :\n \"option-\" + this.base.guid + \"-\" + focusedIndex;\n return (React.createElement(SearchBar, { id: this._inputId, size: Math.max((placeholderToShow || '').length, text.length, 1), tabIndex: this.props.tabIndex, accessKey: this.props.accessKey, placeholder: placeholderToShow, value: text, onChange: this.onChangeHandler, onKeyDown: this.onInputKeyDown, ref: this.searchbarRef, disabled: disabled, expanded: opened, owns: this.base.listBoxId, activedescendant: ariaActivedescendant, describedby: 'tagslist-' + this.base.guid, clearButton: clearButton, clearButtonClick: this.clearButtonClick }));\n };\n MultiSelect.prototype.onTagsNavigate = function (event, state) {\n var keyCode = event.keyCode;\n var focusedTag = this.state.focusedTag;\n var tags = this._tags;\n var itemsKey = this.props.dataItemKey;\n var focusedIndex = focusedTag ?\n tags.findIndex(function (t) { return matchTags(t, focusedTag, itemsKey); }) : -1;\n var newFocusedTag = undefined;\n var hasFocused = focusedIndex !== -1;\n if (keyCode === Keys.left) {\n if (hasFocused) {\n focusedIndex = Math.max(0, focusedIndex - 1);\n }\n else {\n focusedIndex = tags.length - 1;\n }\n newFocusedTag = tags[focusedIndex];\n }\n else if (keyCode === Keys.right) {\n if (focusedIndex === tags.length - 1) {\n newFocusedTag = undefined;\n }\n else if (hasFocused) {\n focusedIndex = Math.min(tags.length - 1, focusedIndex + 1);\n newFocusedTag = tags[focusedIndex];\n }\n }\n else if (keyCode === Keys.home) {\n newFocusedTag = tags[0];\n }\n else if (keyCode === Keys.end) {\n newFocusedTag = tags[tags.length - 1];\n }\n else if (keyCode === Keys.delete) {\n if (hasFocused) {\n var items = this.value;\n removeDataItems(items, tags[focusedIndex].data, itemsKey);\n this.triggerOnChange(items, state);\n }\n }\n else if (keyCode === Keys.backspace) {\n var items = this.value;\n if (hasFocused) {\n removeDataItems(items, tags[focusedIndex].data, itemsKey);\n this.triggerOnChange(items, state);\n }\n else if (!hasFocused && tags.length) {\n var removed = tags.pop();\n removeDataItems(items, removed.data, itemsKey);\n this.triggerOnChange(items, state);\n }\n }\n if (newFocusedTag !== focusedTag) {\n state.data.focusedTag = newFocusedTag;\n state.data.activedescendant = ActiveDescendant.TagsList;\n }\n this.applyState(state);\n };\n MultiSelect.prototype.triggerOnChange = function (items, state) {\n if (this.props.value === undefined) {\n state.data.value = items.slice();\n }\n this._valueItemsDuringOnChange = [];\n this.setItems(items, this._valueItemsDuringOnChange);\n state.events.push({ type: 'onChange' });\n };\n MultiSelect.prototype.selectFocusedItem = function (event) {\n var _a = this.props, _b = _a.data, data = _b === void 0 ? [] : _b, virtual = _a.virtual;\n var focusedIndex = this.getFocusedState().focusedIndex;\n var skip = virtual ? virtual.skip : 0;\n if (data[focusedIndex - skip] !== undefined) {\n this.handleItemClick(focusedIndex, event);\n }\n };\n MultiSelect.prototype.setItems = function (srcItems, destItems) {\n destItems.length = 0;\n destItems.push.apply(destItems, srcItems);\n };\n MultiSelect.prototype.getFocusedState = function () {\n var focusedIndex = this.state.focusedIndex;\n var text = this.props.filter !== undefined ? this.props.filter : this.state.text;\n var _a = this.props, allowCustom = _a.allowCustom, _b = _a.data, data = _b === void 0 ? [] : _b, dataItemKey = _a.dataItemKey, virtual = _a.virtual, textField = _a.textField;\n var skip = (virtual && virtual.skip) || 0;\n var focusedInd;\n if (focusedIndex !== undefined) {\n return {\n focusedIndex: focusedIndex,\n focusedItem: data[focusedIndex - skip],\n focusedType: FocusedItemType.ListItem\n };\n }\n var selected = this.value;\n if (allowCustom && text) {\n return { focusedItem: null, focusedIndex: -1, focusedType: FocusedItemType.CustomItem };\n }\n else if (text) {\n focusedInd = itemIndexStartsWith(data, text, textField);\n return {\n focusedItem: data[focusedInd],\n focusedIndex: focusedInd + skip,\n focusedType: FocusedItemType.ListItem\n };\n }\n else if (selected.length) {\n var last_1 = selected[selected.length - 1];\n focusedInd = data.findIndex(function (i) { return areSame(i, last_1, dataItemKey); });\n if (data[focusedInd] !== undefined) {\n return {\n focusedIndex: focusedInd + skip,\n focusedItem: data[focusedInd],\n focusedType: FocusedItemType.ListItem\n };\n }\n return { focusedType: FocusedItemType.None, focusedIndex: -1 };\n }\n return skip === 0 ?\n { focusedItem: data[0], focusedIndex: 0, focusedType: FocusedItemType.ListItem } :\n { focusedType: FocusedItemType.None, focusedIndex: -1 };\n };\n MultiSelect.prototype.focusElement = function (element) {\n var _this = this;\n this._skipFocusEvent = true;\n element.focus();\n setTimeout(function () { return _this._skipFocusEvent = false; }, 30);\n };\n MultiSelect.prototype.applyState = function (state) {\n this.base.applyState(state);\n this._valueItemsDuringOnChange = null;\n };\n /**\n * @hidden\n */\n MultiSelect.propTypes = __assign({}, DropDownBase.propTypes, { autoClose: PropTypes.bool, value: PropTypes.arrayOf(PropTypes.any), defaultValue: PropTypes.arrayOf(PropTypes.any), dataItemKey: PropTypes.string, placeholder: PropTypes.string, tags: PropTypes.arrayOf(PropTypes.shape({\n text: PropTypes.string,\n data: PropTypes.arrayOf(PropTypes.any)\n })), tagRender: PropTypes.func });\n /**\n * @hidden\n */\n MultiSelect.defaultProps = __assign({}, DropDownBase.defaultProps, { autoClose: true, required: false });\n return MultiSelect;\n}(React.Component));\nexport default MultiSelect;\n//# sourceMappingURL=MultiSelect.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nvar dots = '...';\n/**\n * @hidden\n */\nvar PagerNumericButtons = /** @class */ (function (_super) {\n __extends(PagerNumericButtons, _super);\n function PagerNumericButtons() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.handlePageChange = function (e, page) {\n e.preventDefault();\n _this.props.pageChange(page, e);\n };\n return _this;\n }\n PagerNumericButtons.prototype.render = function () {\n var _this = this;\n var prevDots = this.start > 1 && this.renderDots(this.start - 1);\n var postDots = this.end < this.props.totalPages && this.renderDots(this.end + 1);\n var buttons = [];\n for (var idx = this.start; idx <= this.end; idx++) {\n buttons.push(idx);\n }\n var numerics = buttons.map(function (page) { return (React.createElement(\"li\", { key: page },\n React.createElement(\"a\", { href: \"#\", onClick: function (e) { return _this.handlePageChange(e, page); }, className: _this.props.currentPage === page ? 'k-link k-state-selected' : 'k-link' }, page))); });\n return (React.createElement(\"ul\", { className: \"k-pager-numbers k-reset\" },\n prevDots,\n numerics,\n postDots));\n };\n PagerNumericButtons.prototype.renderDots = function (page) {\n var _this = this;\n return (React.createElement(\"li\", null,\n React.createElement(\"a\", { className: \"k-link\", onClick: function (e) { return _this.handlePageChange(e, page); }, href: \"#\" }, dots)));\n };\n Object.defineProperty(PagerNumericButtons.prototype, \"end\", {\n get: function () {\n return Math.min((this.start + this.props.buttonCount) - 1, this.props.totalPages);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PagerNumericButtons.prototype, \"start\", {\n get: function () {\n var page = this.props.currentPage;\n var buttonCount = this.props.buttonCount;\n if (page > buttonCount) {\n var reminder = (page % buttonCount);\n return (reminder === 0) ? (page - buttonCount) + 1 : (page - reminder) + 1;\n }\n return 1;\n },\n enumerable: true,\n configurable: true\n });\n return PagerNumericButtons;\n}(React.Component));\nexport { PagerNumericButtons };\n//# sourceMappingURL=PagerNumericButtons.js.map","var _a;\n/**\n * @hidden\n */\nexport var pagerInfo = 'pager.info';\n/**\n * @hidden\n */\nexport var pagerFirstPage = 'pager.firstPage';\n/**\n * @hidden\n */\nexport var pagerPreviousPage = 'pager.previousPage';\n/**\n * @hidden\n */\nexport var pagerNextPage = 'pager.nextPage';\n/**\n * @hidden\n */\nexport var pagerLastPage = 'pager.lastPage';\n/**\n * @hidden\n */\nexport var pagerItemPerPage = 'pager.itemsPerPage';\n/**\n * @hidden\n */\nexport var pagerPage = 'pager.page';\n/**\n * @hidden\n */\nexport var pagerOf = 'pager.of';\n/**\n * @hidden\n */\nexport var messages = (_a = {},\n _a[pagerItemPerPage] = 'items per page',\n _a[pagerInfo] = '{0} - {1} of {2} items',\n _a[pagerFirstPage] = 'Go to the first page',\n _a[pagerPreviousPage] = 'Go to the previous page',\n _a[pagerNextPage] = 'Go to the next page',\n _a[pagerLastPage] = 'Go to the last page',\n _a[pagerPage] = 'Page',\n _a[pagerOf] = 'of',\n _a);\n//# sourceMappingURL=index.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport { registerForLocalization, provideLocalizationService } from '@progress/kendo-react-intl';\nimport { messages, pagerOf, pagerPage } from './../messages';\n/**\n * @hidden\n */\nvar PagerInput = /** @class */ (function (_super) {\n __extends(PagerInput, _super);\n function PagerInput() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this._text = undefined;\n _this.onChange = function (e) {\n var text = _this._text = e.target.value.replace(/\\D/g, '');\n _this.forceUpdate();\n if (text) {\n _this.props.pageChange(parseInt(text, 10), e);\n }\n };\n _this.value = function () {\n var value = _this._text === undefined ? _this.props.currentPage.toString() : _this._text;\n _this._text = undefined;\n return value;\n };\n return _this;\n }\n PagerInput.prototype.render = function () {\n var _this = this;\n var localizationService = provideLocalizationService(this);\n return (React.createElement(\"span\", { className: \"k-pager-input k-label\" },\n localizationService.toLanguageString(pagerPage, messages[pagerPage]),\n React.createElement(\"input\", { className: \"k-textbox\", value: this.value(), onBlur: function () { return _this.forceUpdate(); }, onChange: this.onChange }), localizationService.toLanguageString(pagerOf, messages[pagerOf]) + \" \" + this.props.totalPages));\n };\n return PagerInput;\n}(React.Component));\nexport { PagerInput };\nregisterForLocalization(PagerInput);\n//# sourceMappingURL=PagerInput.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport { registerForLocalization, provideLocalizationService } from '@progress/kendo-react-intl';\nimport { messages, pagerItemPerPage } from './../messages';\n/**\n * @hidden\n */\nvar PagerPageSizes = /** @class */ (function (_super) {\n __extends(PagerPageSizes, _super);\n function PagerPageSizes() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.pageSizeChange = function (e) {\n if (_this.props.pageChange) {\n _this.props.pageChange({ skip: 0, take: parseInt(e.target.value, 10) }, e);\n }\n };\n return _this;\n }\n PagerPageSizes.prototype.render = function () {\n var _this = this;\n var sizes = this.props.pageSizes.slice();\n if (sizes.filter(function (s) { return s === _this.props.pageSize; }).length === 0) {\n sizes.unshift(this.props.pageSize);\n }\n return (React.createElement(\"label\", { className: \"k-pager-sizes k-label\" },\n React.createElement(\"select\", { value: this.props.pageSize, onChange: this.pageSizeChange }, sizes.map(function (value, index) {\n return React.createElement(\"option\", { key: index, value: value },\n \" \",\n value,\n \" \");\n })),\n provideLocalizationService(this).toLanguageString(pagerItemPerPage, messages[pagerItemPerPage])));\n };\n return PagerPageSizes;\n}(React.Component));\nexport { PagerPageSizes };\nregisterForLocalization(PagerPageSizes);\n//# sourceMappingURL=PagerPageSizes.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { PagerNumericButtons } from './PagerNumericButtons';\nimport { PagerInput } from './PagerInput';\nimport { PagerPageSizes } from './PagerPageSizes';\nimport { messages, pagerFirstPage, pagerLastPage, pagerNextPage, pagerPreviousPage, pagerInfo } from '../messages';\nimport { registerForIntl, registerForLocalization, provideLocalizationService, provideIntlService } from '@progress/kendo-react-intl';\nvar Pager = /** @class */ (function (_super) {\n __extends(Pager, _super);\n function Pager() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.changePage = function (page, event) {\n if (_this.props.onPageChange && page > 0 && page <= _this.totalPages) {\n _this.props.onPageChange({\n target: _this,\n skip: (page - 1) * _this.props.take,\n take: _this.props.take,\n syntheticEvent: event,\n nativeEvent: event.nativeEvent\n });\n }\n };\n return _this;\n }\n /**\n * @hidden\n */\n Pager.prototype.render = function () {\n var _a = this.props, skip = _a.skip, take = _a.take, total = _a.total, pageSizes = _a.pageSizes, className = _a.className;\n var localizationService = provideLocalizationService(this);\n var intlService = provideIntlService(this);\n var currentPage = Math.floor(skip / take) + 1;\n var changer = this.props.type === 'numeric' ?\n (React.createElement(PagerNumericButtons, { buttonCount: this.props.buttonCount || 0, totalPages: this.totalPages, currentPage: currentPage, pageChange: this.changePage })) : (React.createElement(PagerInput, { currentPage: currentPage, totalPages: this.totalPages, pageChange: this.changePage }));\n var first, prev, next, last;\n if (this.props.previousNext) {\n first = this.renderButton(1, 'k-link k-pager-nav k-pager-first' + (currentPage === 1 ? ' k-state-disabled' : ''), localizationService.toLanguageString(pagerFirstPage, messages[pagerFirstPage]), 'k-icon k-i-arrow-end-left');\n prev = this.renderButton(currentPage - 1, 'k-link k-pager-nav' + (currentPage === 1 ? ' k-state-disabled' : ''), localizationService.toLanguageString(pagerPreviousPage, messages[pagerPreviousPage]), 'k-icon k-i-arrow-60-left');\n next = this.renderButton(currentPage + 1, 'k-link k-pager-nav' + (currentPage === this.totalPages ? ' k-state-disabled' : ''), localizationService.toLanguageString(pagerNextPage, messages[pagerNextPage]), 'k-icon k-i-arrow-60-right');\n last = this.renderButton(this.totalPages, 'k-link k-pager-nav k-pager-last' + (currentPage === this.totalPages ? ' k-state-disabled' : ''), localizationService.toLanguageString(pagerLastPage, messages[pagerLastPage]), 'k-icon k-i-arrow-end-right');\n }\n var pagerPageSizes = pageSizes !== undefined && (React.createElement(PagerPageSizes, { pageChange: this.props.onPageChange, pageSize: take, pageSizes: pageSizes }));\n var info = this.props.info && (React.createElement(\"div\", { className: \"k-pager-info k-label\" }, intlService\n .format(localizationService.toLanguageString(pagerInfo, messages[pagerInfo]), [\n Math.min(skip + 1, total),\n Math.min(skip + take, total),\n total\n ])));\n return (React.createElement(\"div\", { className: 'k-pager-wrap k-floatwrap k-widget' + (className ? \" \" + className : ''), style: this.props.style },\n first,\n prev,\n changer,\n next,\n last,\n pagerPageSizes,\n info));\n };\n Pager.prototype.renderButton = function (page, className, title, icon) {\n var _this = this;\n return (React.createElement(\"a\", { onClick: function (e) {\n e.preventDefault();\n _this.changePage(page, e);\n }, href: \"#\", className: className, title: title },\n React.createElement(\"span\", { className: icon, \"aria-label\": title })));\n };\n Object.defineProperty(Pager.prototype, \"totalPages\", {\n get: function () {\n return Math.ceil((this.props.total || 0) / this.props.take);\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @hidden\n */\n Pager.propTypes = {\n className: PropTypes.string,\n style: PropTypes.object,\n total: PropTypes.number.isRequired,\n skip: PropTypes.number.isRequired,\n take: PropTypes.number.isRequired,\n buttonCount: PropTypes.number,\n info: PropTypes.bool,\n type: PropTypes.oneOf(['numeric', 'input']),\n pageSizes: PropTypes.arrayOf(PropTypes.number),\n previousNext: PropTypes.bool,\n onPageChange: PropTypes.func\n };\n /**\n * @hidden\n */\n Pager.defaultProps = {\n buttonCount: 10,\n info: true,\n type: 'numeric'\n };\n return Pager;\n}(React.Component));\nexport { Pager };\nregisterForIntl(Pager);\nregisterForLocalization(Pager);\n//# sourceMappingURL=Pager.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\n/**\n * @hidden\n */\nexport var createFilterCell = function (settings) {\n var Cell = /** @class */ (function (_super) {\n __extends(FilterCell, _super);\n function FilterCell() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.filterChange = function (event) {\n if (_this.props.onFilterChange) {\n _this.props.onFilterChange(event);\n }\n };\n _this.inputChange = function (e) {\n var value = e.target.value;\n var _a = _this.props, _b = _a.filter, filter = _b === void 0 ? [] : _b, _c = _a.field, field = _c === void 0 ? '' : _c;\n var existing = _this.findCellFilter();\n var filterResult = existing ?\n filter.map(function (f) { return f.field === field ? __assign({}, existing, { value: value }) : f; }) : filter.concat([__assign({}, settings.emptyFilter, { value: value, field: field })]);\n _this.filterChange({\n filter: filterResult,\n field: field,\n syntheticEvent: e.syntheticEvent\n });\n };\n _this.operatorChange = function (e) {\n var operator = e.target.value.operator;\n var _a = _this.props, _b = _a.filter, filter = _b === void 0 ? [] : _b, _c = _a.field, field = _c === void 0 ? '' : _c;\n var existing = _this.findCellFilter();\n var filterResult = existing ?\n filter.map(function (f) { return f.field === field ? __assign({}, existing, { operator: operator }) : f; }) : filter.concat([__assign({}, settings.emptyFilter, { field: field, operator: operator })]);\n _this.filterChange({\n filter: filterResult,\n field: field,\n syntheticEvent: e.syntheticEvent\n });\n };\n _this.clearButtonClick = function (e) {\n var _a = _this.props, _b = _a.filter, filter = _b === void 0 ? [] : _b, _c = _a.field, field = _c === void 0 ? '' : _c;\n _this.filterChange({\n filter: filter.filter(function (f) { return f.field !== field; }),\n field: field,\n syntheticEvent: e\n });\n };\n _this.findCellFilter = function () {\n var _a = _this.props, _b = _a.filter, filter = _b === void 0 ? [] : _b, field = _a.field;\n return filter.find(function (f) { return f.field === field; });\n };\n return _this;\n }\n FilterCell.prototype.render = function () {\n var _a = this.props, _b = _a.clearButtonTitle, clearButtonTitle = _b === void 0 ? '' : _b, _c = _a.operators, operators = _c === void 0 ? [] : _c;\n var filter = this.findCellFilter() || __assign({}, settings.emptyFilter, { operator: '' });\n var operator = filter.operator, value = filter.value;\n var operatorComponentProps = {\n value: operators.find(function (item) { return item.operator === operator; }) || null,\n onChange: this.operatorChange,\n className: 'k-dropdown-operator',\n iconClassName: 'k-i-filter k-icon',\n data: operators,\n textField: 'text',\n popupSettings: { width: '' },\n components: this.props.components\n };\n return (React.createElement(\"div\", { className: \"k-filtercell\" },\n React.createElement(\"div\", { className: \"k-filtercell-wrapper\" },\n settings.inputComponent({ value: value, onChange: this.inputChange, components: this.props.components }),\n React.createElement(\"div\", { className: \"k-filtercell-operator\" },\n settings.operatorComponent(operatorComponentProps, this.props),\n React.createElement(\"button\", { className: \n /* button is always visible if there is either value or operator */\n (!(value === null || value === '') || operator) ?\n 'k-button k-button-icon k-clear-button-visible' :\n 'k-button k-button-icon', title: clearButtonTitle, type: \"button\", onClick: this.clearButtonClick },\n React.createElement(\"span\", { className: \"k-icon k-i-filter-clear\" }))))));\n };\n return FilterCell;\n }(React.Component));\n return Cell;\n};\n//# sourceMappingURL=FilterCell.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\n t[p[i]] = s[p[i]];\n return t;\n};\nimport * as React from 'react';\nimport { createFilterCell } from './FilterCell';\nvar booleanOperator = 'eq';\nvar settings = {\n emptyFilter: { operator: booleanOperator, value: '' },\n inputComponent: function (_props) { return null; },\n operatorComponent: function (props, cellProps) {\n var _a = cellProps.filter, filter = _a === void 0 ? [] : _a, field = cellProps.field;\n var current = filter.find(function (f) { return f.field === field; });\n var DropDownList = props.components.DropDownList, restProps = __rest(props, [\"components\"]);\n return DropDownList && (React.createElement(DropDownList, __assign({}, restProps, { value: props.data.find(function (x) { return x.operator === (current ? current.value : ''); }), onChange: function (e) {\n if (!cellProps.onFilterChange) {\n return;\n }\n var value = e.target.value.operator;\n if (value === '') {\n if (current) {\n cellProps.onFilterChange.call(undefined, {\n filter: filter.filter(function (f) { return f.field !== current.field; }),\n field: field,\n syntheticEvent: e.syntheticEvent\n });\n }\n return;\n }\n var filterResult = current ?\n filter.map(function (f) { return f.field === field ? __assign({}, current, { value: value }) : f; }) : filter.concat([{ value: value, field: field, operator: booleanOperator }]);\n cellProps.onFilterChange.call(undefined, {\n filter: filterResult,\n field: field,\n syntheticEvent: e.syntheticEvent\n });\n } })));\n }\n};\n/**\n * @hidden\n */\nvar BooleanFilter = /** @class */ (function (_super) {\n __extends(BooleanFilter, _super);\n function BooleanFilter() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return BooleanFilter;\n}(createFilterCell(settings)));\nexport { BooleanFilter };\n//# sourceMappingURL=BooleanFilter.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\n t[p[i]] = s[p[i]];\n return t;\n};\nimport * as React from 'react';\nimport { createFilterCell } from './FilterCell';\nvar settings = {\n inputComponent: function (props) {\n var DatePicker = props.components.DatePicker, restProps = __rest(props, [\"components\"]);\n return DatePicker && React.createElement(DatePicker, __assign({}, restProps));\n },\n operatorComponent: function (props) {\n var DropDownList = props.components.DropDownList, restProps = __rest(props, [\"components\"]);\n return DropDownList && React.createElement(DropDownList, __assign({}, restProps));\n },\n emptyFilter: { operator: 'eq', value: null }\n};\n/**\n * @hidden\n */\nvar DateFilter = /** @class */ (function (_super) {\n __extends(DateFilter, _super);\n function DateFilter() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return DateFilter;\n}(createFilterCell(settings)));\nexport { DateFilter };\n//# sourceMappingURL=DateFilter.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\n t[p[i]] = s[p[i]];\n return t;\n};\nimport * as React from 'react';\nimport { createFilterCell } from './FilterCell';\nvar settings = {\n inputComponent: function (props) {\n var NumericTextBox = props.components.NumericTextBox, restProps = __rest(props, [\"components\"]);\n return NumericTextBox && React.createElement(NumericTextBox, __assign({}, restProps));\n },\n operatorComponent: function (props) {\n var DropDownList = props.components.DropDownList, restProps = __rest(props, [\"components\"]);\n return DropDownList && React.createElement(DropDownList, __assign({}, restProps));\n },\n emptyFilter: { operator: 'eq', value: null }\n};\n/**\n * @hidden\n */\nvar NumericFilter = /** @class */ (function (_super) {\n __extends(NumericFilter, _super);\n function NumericFilter() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return NumericFilter;\n}(createFilterCell(settings)));\nexport { NumericFilter };\n//# sourceMappingURL=NumericFilter.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\n t[p[i]] = s[p[i]];\n return t;\n};\nimport * as React from 'react';\nimport { createFilterCell } from './FilterCell';\nvar settings = {\n inputComponent: function (props) {\n var Input = props.components.Input, restProps = __rest(props, [\"components\"]);\n return Input && React.createElement(Input, __assign({}, restProps));\n },\n operatorComponent: function (props) {\n var DropDownList = props.components.DropDownList, restProps = __rest(props, [\"components\"]);\n return DropDownList && React.createElement(DropDownList, __assign({}, restProps));\n },\n emptyFilter: { operator: 'contains', value: '' }\n};\n/**\n * @hidden\n */\nvar TextFilter = /** @class */ (function (_super) {\n __extends(TextFilter, _super);\n function TextFilter() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return TextFilter;\n}(createFilterCell(settings)));\nexport { TextFilter };\n//# sourceMappingURL=TextFilter.js.map","import { ColumnDefaultProps } from '../ColumnProps';\n/**\n * @hidden\n */\nexport function mapColumns(columns) {\n var columnsMap = [[]];\n var stickyLeftWidth = 0;\n for (var q = columns.length - 1; q >= 0; q--) {\n columns[q].colSpan = columns[q].colSpan || 1;\n if (columns[q].parentIndex !== -1) {\n columns[columns[q].parentIndex].colSpan =\n (columns[columns[q].parentIndex].colSpan || 0) + columns[q].colSpan;\n }\n }\n var maxDepth = 0;\n columns.forEach(function (d) { maxDepth = Math.max(maxDepth, d.depth); });\n var rowSpan = 1;\n columns.forEach(function (column, i) {\n columnsMap[column.depth] = columnsMap[column.depth] || [];\n var needKFirst = false;\n if (columnsMap[column.depth].length === 0) {\n if (rowSpan <= 1) {\n rowSpan = 1 + (column.children.length > 0 ? 0 : maxDepth - column.depth);\n }\n else {\n rowSpan--;\n needKFirst = true;\n }\n }\n column.rowSpan = 1 + (column.children.length > 0 ? 0 : maxDepth - column.depth);\n column.kFirst = needKFirst;\n column.index = columnsMap[column.depth].length;\n columnsMap[column.depth].push(i);\n if (column.locked && column.children.length === 0) {\n column.left = stickyLeftWidth;\n stickyLeftWidth += column.width ? parseFloat(column.width.toString()) : 0;\n }\n });\n var nextIsLocked = false;\n var stickyRightWidth = 0;\n for (var i = columns.length - 1; i >= 0; i--) {\n var column = columns[i];\n if (column.locked && column.children.length === 0) {\n column.right = stickyRightWidth;\n stickyRightWidth += column.width ? parseFloat(column.width.toString()) : 0;\n column.rightBorder = !nextIsLocked;\n }\n nextIsLocked = column.locked || false;\n }\n return columnsMap;\n}\n/**\n * @hidden\n */\nexport function readColumns(elements, depth) {\n if (depth === void 0) { depth = 0; }\n var columns = [];\n if (!elements || !elements.length) {\n return [];\n }\n elements.forEach(function (columnProps) {\n var children = readColumns(columnProps.children || [], depth + 1);\n columns.push(Object.assign({}, { depth: depth }, ColumnDefaultProps, columnProps, {\n declarationIndex: columns.length,\n children: children,\n rowSpan: 0,\n colSpan: 0\n }));\n });\n var comparator = function (a, b) {\n return a.orderIndex === b.orderIndex ?\n a.declarationIndex - b.declarationIndex :\n ((a.orderIndex || 0) - (b.orderIndex || 0));\n };\n columns.sort(comparator);\n if (depth === 0) {\n var ret_1 = [];\n var flat_1 = function (cols, pIndex) {\n return cols.forEach(function (c) {\n c.parentIndex = pIndex;\n flat_1(c.children, ret_1.push(c) - 1);\n });\n };\n flat_1(columns, -1);\n return ret_1;\n }\n return columns;\n}\n/**\n * @hidden\n */\nexport function isRtl(element) {\n return Boolean(element && getComputedStyle(element).direction === 'rtl');\n}\n/**\n * @hidden\n */\nexport function getIndex(event, parent) {\n if (!parent || !event || !event.originalEvent) {\n return -1;\n }\n var target = document.elementFromPoint(event.clientX, event.originalEvent.clientY);\n while (target && target.parentElement !== parent) {\n target = target.parentElement;\n }\n var children = parent.children;\n for (var i = 0; i < children.length; i++) {\n if (children[i] === target) {\n return i;\n }\n }\n return -1;\n}\n//# sourceMappingURL=index.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport { isRtl } from './utils';\n/**\n * @hidden\n */\nvar Header = /** @class */ (function (_super) {\n __extends(Header, _super);\n function Header() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = null;\n return _this;\n }\n Header.prototype.componentDidMount = function () {\n var columnResize = this.props.columnResize;\n if (columnResize && columnResize.resizable) {\n columnResize.setIsRtl(isRtl(this.element));\n }\n };\n Header.prototype.render = function () {\n var _this = this;\n return (React.createElement(\"thead\", { className: \"k-grid-header\", ref: function (el) { return _this.element = el; } },\n this.props.headerRow,\n this.props.filterRow));\n };\n return Header;\n}(React.Component));\nexport { Header };\n//# sourceMappingURL=Header.js.map","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\n/**\n * @hidden\n */\nexport function HeaderCell(props) {\n var clickProps = props.onClick ? {\n href: '#',\n onClick: props.onClick\n } : {};\n var defaultRendering = (React.createElement(\"a\", __assign({ className: \"k-link\" }, clickProps),\n props.title || props.field || '\\u00A0',\n props.children));\n return props.render ?\n props.render.call(undefined, defaultRendering, props) :\n defaultRendering;\n}\n//# sourceMappingURL=HeaderCell.js.map","/**\n * @hidden\n */\nexport var normalize = function () {\n var settings = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n settings[_i] = arguments[_i];\n }\n return Object.assign.apply(Object, [{ allowUnsort: true, mode: 'single' }].concat(settings));\n};\n//# sourceMappingURL=SortSettings.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport { Draggable } from '@progress/kendo-react-common';\n/**\n * @hidden\n */\nvar ColumnResizer = /** @class */ (function (_super) {\n __extends(ColumnResizer, _super);\n function ColumnResizer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /**\n * @hidden\n */\n _this.onDrag = function (data) {\n var element = _this.draggable && _this.draggable.element;\n if (element) {\n _this.props.resize(data.event, element, false);\n }\n };\n /**\n * @hidden\n */\n _this.onRelease = function (data) {\n var element = _this.draggable && _this.draggable.element;\n if (element) {\n _this.props.resize(data.event, element, true);\n }\n };\n return _this;\n }\n ColumnResizer.prototype.render = function () {\n var _this = this;\n return (React.createElement(Draggable, { onDrag: this.onDrag, onRelease: this.onRelease, ref: function (component) { _this.draggable = component; } },\n React.createElement(\"span\", { className: \"k-column-resizer\", draggable: false })));\n };\n return ColumnResizer;\n}(React.PureComponent));\nexport { ColumnResizer };\n//# sourceMappingURL=ColumnResizer.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport { Draggable } from '@progress/kendo-react-common';\n/**\n * @hidden\n */\nvar ColumnDraggable = /** @class */ (function (_super) {\n __extends(ColumnDraggable, _super);\n function ColumnDraggable() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /**\n * @hidden\n */\n _this.onPress = function (data) {\n var element = _this.draggable && _this.draggable.element;\n if (element && _this.props.pressHandler) {\n _this.props.pressHandler(data.event, element);\n }\n };\n /**\n * @hidden\n */\n _this.onDrag = function (data) {\n var element = _this.draggable && _this.draggable.element;\n if (element && _this.props.dragHandler) {\n _this.props.dragHandler(data.event, element);\n }\n };\n /**\n * @hidden\n */\n _this.onRelease = function (data) {\n var element = _this.draggable && _this.draggable.element;\n if (element && _this.props.releaseHandler) {\n _this.props.releaseHandler(data.event);\n }\n };\n return _this;\n }\n ColumnDraggable.prototype.render = function () {\n var _this = this;\n return (React.createElement(Draggable, { onPress: this.onPress, onDrag: this.onDrag, onRelease: this.onRelease, ref: function (component) { _this.draggable = component; } },\n React.createElement(\"tr\", null, this.props.children)));\n };\n return ColumnDraggable;\n}(React.PureComponent));\nexport { ColumnDraggable };\n//# sourceMappingURL=ColumnDraggable.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport { HeaderCell } from './HeaderCell';\nimport { normalize } from './SortSettings';\nimport { ColumnResizer } from '../drag/ColumnResizer';\nimport { ColumnDraggable } from '../drag/ColumnDraggable';\n/**\n * @hidden\n */\nvar sortSeqMap = {\n true: { 'asc': 'desc', 'desc': '', '': 'asc' },\n false: { 'asc': 'desc', 'desc': 'asc', '': 'asc' }\n};\n/**\n * @hidden\n */\nvar ariaSortMap = {\n 'none': 'none',\n 'asc': 'ascending',\n 'desc': 'descending'\n};\n/**\n * @hidden\n */\nvar HeaderRow = /** @class */ (function (_super) {\n __extends(HeaderRow, _super);\n function HeaderRow() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.cellClick = function (e, column) {\n e.preventDefault();\n if (!_this.props.sortChange) {\n return;\n }\n var _a = normalize(_this.props.sortable || false, column.sortable || false), allowUnsort = _a.allowUnsort, mode = _a.mode;\n var oldDescriptor = (_this.props.sort || []).filter(function (d) { return d.field === column.field; })[0];\n var dir = sortSeqMap[allowUnsort][oldDescriptor && oldDescriptor.dir || ''];\n var newDescriptor = (mode === 'single') ?\n [] : (_this.props.sort || []).filter(function (d) { return d.field !== column.field; });\n if (dir !== '' && column.field) {\n newDescriptor.push({ field: column.field, dir: dir });\n }\n _this.props.sortChange(e, newDescriptor, column.field);\n };\n _this.cells = function (rowIndexes) { return rowIndexes.map(function (columnIndex, index) {\n var column = _this.props.columns[columnIndex];\n var columnResize = _this.props.columnResize;\n var resizable = columnResize && columnResize.resizable && column.resizable;\n var sortable = _this.props.sortable && column.sortable;\n var sortIndex = _this.props.sort ? _this.props.sort.findIndex(function (s) { return s.field === column.field; }) : -1;\n var sortDir = sortIndex >= 0 ? ((_this.props.sort)[sortIndex].dir || 'none') : 'none';\n var headerCellProps = {\n field: column.field,\n onClick: sortable && (function (e) { return _this.cellClick(e, column); }) || undefined,\n selectionChange: _this.props.selectionChange,\n title: column.title,\n selectionValue: column.headerSelectionValue,\n render: _this.props.cellRender,\n children: _this.sortIcon(sortIndex)\n };\n var className = (column.kFirst ? 'k-first ' : '')\n + _this.cellClass(column.field, column.headerClassName, column.locked);\n var style = (column.locked !== undefined) ? {\n left: column.left,\n right: column.right,\n borderRightWidth: column.rightBorder ? '1px' : ''\n } : {};\n return (React.createElement(\"th\", { \"aria-sort\": sortable ? ariaSortMap[sortDir] : undefined, key: index, colSpan: column.colSpan, rowSpan: column.rowSpan, className: className, style: style },\n column.headerCell && React.createElement(column.headerCell, __assign({}, headerCellProps)) ||\n React.createElement(HeaderCell, __assign({}, headerCellProps)),\n resizable && columnResize &&\n React.createElement(ColumnResizer, { key: \"ColumnResizer\", resize: function (e, element, end) { return columnResize.dragHandler(e, column, element, end); } })));\n }); };\n return _this;\n }\n HeaderRow.prototype.cellClass = function (field, headerClassName, locked) {\n var result = \"k-header\" + (locked ? ' k-grid-header-sticky' : '') + (headerClassName ? ' ' + headerClassName : '');\n if (this.props.sort && this.props.sort.some(function (descriptor) { return descriptor.field === field; })) {\n result += ' k-sorted';\n }\n return result;\n };\n HeaderRow.prototype.sortIcon = function (sortIndex) {\n if (!this.props.sort) {\n return null;\n }\n return sortIndex >= 0 && [\n React.createElement(\"span\", { key: 1, className: 'k-icon k-i-sort-' + this.props.sort[sortIndex].dir + '-sm' }),\n this.props.sort.length > 1 && React.createElement(\"span\", { key: 2, className: \"k-sort-order\" }, sortIndex + 1)\n ];\n };\n HeaderRow.prototype.render = function () {\n var _this = this;\n return this.props.columnsMap.map(function (rowIndexes, i) {\n return _this.props.pressHandler && (React.createElement(ColumnDraggable, { key: i, pressHandler: _this.props.pressHandler, dragHandler: _this.props.dragHandler, releaseHandler: _this.props.releaseHandler }, _this.cells(rowIndexes))) || React.createElement(\"tr\", null, _this.cells(rowIndexes));\n });\n };\n return HeaderRow;\n}(React.Component));\nexport { HeaderRow };\n//# sourceMappingURL=HeaderRow.js.map","/**\n * @hidden\n */\nvar ColumnResize = /** @class */ (function () {\n function ColumnResize(triggerResize) {\n var _this = this;\n /**\n * The settings for resizing the Grid.\n */\n this.resizable = false;\n this.isRtl = false;\n this.setIsRtl = function (isRtl) {\n _this.isRtl = isRtl;\n };\n this.onResize = triggerResize;\n this.dragHandler = this.dragHandler.bind(this);\n }\n ColumnResize.prototype.dragHandler = function (event, column, dragCue, end) {\n var e = event.originalEvent;\n if (!end) {\n e.preventDefault();\n e.stopPropagation();\n e.stopImmediatePropagation();\n }\n var tdElement = dragCue.parentElement;\n if (!tdElement || !tdElement.parentElement) {\n return;\n }\n var oldWidth = tdElement.clientWidth;\n var newWidth;\n if (this.isRtl) {\n newWidth = (dragCue.getBoundingClientRect().right - (dragCue.offsetWidth / 2)) - event.clientX;\n newWidth += oldWidth;\n }\n else {\n newWidth = oldWidth + event.clientX - dragCue.getBoundingClientRect().left - (dragCue.offsetWidth / 2);\n }\n if (!end && Math.abs(newWidth - oldWidth) < 1) {\n return;\n }\n this.setWidths(column, Math.floor(newWidth) / oldWidth);\n var index = this.columns.filter(function (c) { return !c.children.length; }).indexOf(column);\n this.onResize(index, oldWidth, newWidth, e, end);\n };\n ColumnResize.prototype.setWidths = function (column, coef) {\n var indexInOriginal = this.columns.indexOf(column);\n var toAdjust = [];\n var more = column.children.length;\n for (var i = indexInOriginal + 1; more > 0 && i < this.columns.length; i++, more--) {\n var cc = this.columns[i];\n if (!cc.children.length) {\n toAdjust.push(cc);\n }\n else {\n more += cc.children.length;\n }\n }\n if (toAdjust.length === 0) {\n toAdjust.push(column);\n }\n toAdjust.forEach(function (colToAdjust) {\n var targetWidth = colToAdjust.width ? parseFloat(colToAdjust.width.toString()) * coef : 0;\n var min = colToAdjust.minResizableWidth === undefined ? 10 : colToAdjust.minResizableWidth;\n if (targetWidth < min) {\n targetWidth = min;\n }\n colToAdjust.width = targetWidth;\n });\n this.updateColElements(toAdjust);\n };\n ColumnResize.prototype.updateColElements = function (affectedColumns) {\n var columns = this.columns.filter(function (c) { return !c.children.length; });\n var difference = 1e-10;\n for (var i = 0; i < affectedColumns.length; i++) {\n var colIndex = columns.indexOf(affectedColumns[i]);\n var currentColumnFloatWidth = parseFloat((affectedColumns[i].width || 0).toString());\n difference += currentColumnFloatWidth - Math.floor(currentColumnFloatWidth);\n var currentWidth = Math.floor(currentColumnFloatWidth) + Math.floor(difference);\n difference -= Math.floor(difference);\n this.setColWidth(this.colGroupMain && this.colGroupMain.children[colIndex], currentWidth);\n this.setColWidth(this.colGroupHeader && this.colGroupHeader.children[colIndex], currentWidth);\n this.setColWidth(this.colGroupFooter && this.colGroupFooter.children[colIndex], currentWidth);\n }\n };\n ColumnResize.prototype.setColWidth = function (col, width) {\n if (col) {\n col.style.width = width + 'px';\n }\n };\n return ColumnResize;\n}());\nexport { ColumnResize };\n//# sourceMappingURL=ColumnResize.js.map","import { getIndex } from './../header/';\n/**\n * @hidden\n */\nvar CommonDragLogic = /** @class */ (function () {\n function CommonDragLogic(columnReorder, groupReorder, columnToGroup) {\n var _this = this;\n this.reorderable = false;\n this.groupable = false;\n this.startColumn = -1;\n this.startGroup = -1;\n this.currentColumn = -1;\n this.currentGroup = -1;\n this.dropElementClue = null;\n this.dragElementClue = null;\n this.groupPanelDivElement = null;\n this.refGroupPanelDiv = function (e) {\n _this.groupPanelDivElement = e;\n };\n this.refDropElementClue = function (e) {\n _this.dropElementClue = e;\n };\n this.refDragElementClue = function (e) {\n _this.dragElementClue = e;\n };\n this.pressHandler = function (event, element) {\n if (!event.isTouch) {\n event.originalEvent.preventDefault();\n }\n var startColumn = _this.getColumnIndex(event, element);\n _this.startGroup = _this.getGroupIndex(event);\n if (startColumn >= 0) {\n var col = _this.columns[startColumn];\n if (col.reorderable && _this.reorderable || col.groupable && _this.groupable) {\n _this.startColumn = startColumn;\n }\n }\n };\n this.dragHandler = function (event, element) {\n if (!event.isTouch) {\n event.originalEvent.preventDefault();\n }\n event.originalEvent.stopPropagation();\n if (_this.startColumn === -1 && _this.startGroup === -1) {\n return;\n }\n _this.currentColumn = _this.getColumnIndex(event, element);\n _this.currentGroup = _this.getGroupIndex(event);\n if (_this.groupPanelDivElement && _this.startGroup >= 0) {\n _this.currentGroup = Math.min(_this.currentGroup, _this.groupPanelDivElement.children.length - 2);\n }\n var invalidIndex = !_this.isValid();\n if (invalidIndex) {\n _this.currentColumn = -1;\n _this.currentGroup = -1;\n }\n var targetElement = (_this.currentColumn >= 0) ?\n element.children[_this.columns[_this.currentColumn].index] :\n _this.groupPanelDivElement && _this.groupPanelDivElement.children[_this.currentGroup];\n _this.updateDragElementClue(event, element, targetElement, invalidIndex);\n _this.updateDropElementClue(event, element, targetElement, invalidIndex);\n };\n this.releaseHandler = function (event) {\n var prevColumnIndex = _this.startColumn;\n var nextColumnIndex = _this.currentColumn;\n var prevGroupIndex = _this.startGroup;\n var nextGroupIndex = _this.currentGroup;\n if (_this.dropElementClue) {\n _this.dropElementClue.setState({ visible: false });\n }\n if (_this.dragElementClue) {\n _this.dragElementClue.setState({ visible: false });\n }\n var isValid = _this.isValid();\n _this.startColumn = _this.startGroup = _this.currentColumn = _this.currentGroup = -1;\n if (!isValid) {\n return;\n }\n if (prevColumnIndex >= 0 && nextColumnIndex >= 0) {\n _this.columnReorder(prevColumnIndex, nextColumnIndex, event.originalEvent);\n }\n else if (prevGroupIndex >= 0 && nextGroupIndex >= 0) {\n _this.groupReorder(prevGroupIndex, nextGroupIndex, event.originalEvent);\n }\n else if (prevColumnIndex >= 0 && nextGroupIndex >= 0) {\n _this.columnToGroup(prevColumnIndex, nextGroupIndex, event.originalEvent);\n }\n };\n this.columnReorder = columnReorder;\n this.groupReorder = groupReorder;\n this.columnToGroup = columnToGroup;\n }\n CommonDragLogic.prototype.getColumnIndex = function (event, parent) {\n if (!parent || (parent.parentElement === this.groupPanelDivElement)) {\n return -1;\n }\n var index = getIndex(event, parent);\n if (index === -1) {\n return -1;\n }\n var _loop_1 = function (i) {\n if (parent.parentNode.children[i] === parent) {\n return { value: this_1.columns.findIndex(function (c) { return ((c.index === index) && (c.depth === i)); }) };\n }\n };\n var this_1 = this;\n for (var i = 0; i < parent.parentNode.children.length; i++) {\n var state_1 = _loop_1(i);\n if (typeof state_1 === \"object\")\n return state_1.value;\n }\n return -1;\n };\n CommonDragLogic.prototype.getGroupIndex = function (event) {\n return getIndex(event, this.groupPanelDivElement);\n };\n CommonDragLogic.prototype.isValid = function () {\n if (this.startGroup >= 0) {\n // group can be moved into group only\n return this.currentGroup >= 0 && this.currentGroup !== this.startGroup;\n }\n if (this.startColumn === -1) {\n return false;\n }\n if (this.currentGroup >= 0) {\n // column to group is possible\n return this.columns[this.startColumn].groupable === true && this.groupable === true;\n }\n // reorder is possible\n return this.reorderable === true &&\n this.currentColumn >= 0 &&\n this.currentColumn !== this.startColumn &&\n this.columns[this.startColumn].reorderable === true &&\n this.columns[this.currentColumn].parentIndex === this.columns[this.startColumn].parentIndex;\n };\n CommonDragLogic.prototype.updateDragElementClue = function (event, element, targetElement, invalidIndex) {\n if (!this.dragElementClue) {\n return;\n }\n var innerText = this.startColumn >= 0 ?\n element.children[this.columns[this.startColumn].index].innerText :\n element.innerText;\n this.dragElementClue.setState({\n visible: true,\n top: (event.pageY + 10),\n left: event.pageX,\n innerText: innerText,\n status: (invalidIndex || !targetElement) ? 'k-i-cancel' : 'k-i-add'\n });\n };\n CommonDragLogic.prototype.updateDropElementClue = function (event, element, targetElement, invalidIndex) {\n if (!this.dropElementClue) {\n return;\n }\n if (invalidIndex || !targetElement) {\n this.dropElementClue.setState({ visible: false });\n return;\n }\n var rect = targetElement.getBoundingClientRect();\n var left = rect.left + event.pageX - event.clientX - 6;\n if (this.currentColumn > this.startColumn || this.currentGroup > this.startGroup && this.startGroup !== -1) {\n left += rect.width;\n }\n var top = rect.top + event.pageY - event.clientY;\n this.dropElementClue.setState({\n visible: true,\n top: top,\n left: left,\n height: (this.currentColumn >= 0) ? element.clientHeight : rect.height\n });\n };\n return CommonDragLogic;\n}());\nexport { CommonDragLogic };\n//# sourceMappingURL=CommonDragLogic.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\n/**\n * @hidden\n */\nvar DragClue = /** @class */ (function (_super) {\n __extends(DragClue, _super);\n function DragClue() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.state = {\n visible: false,\n top: 0,\n left: 0,\n innerText: '',\n status: 'k-i-cancel'\n };\n return _this;\n }\n DragClue.prototype.render = function () {\n return this.state.visible && (React.createElement(\"div\", { className: \"k-header k-drag-clue\", style: {\n display: 'block',\n position: 'absolute',\n zIndex: 20000,\n padding: '8px 12px',\n top: this.state.top + 'px',\n left: this.state.left + 'px'\n } },\n React.createElement(\"span\", { className: 'k-icon k-drag-status ' + this.state.status + ' k-icon-with-modifier' },\n React.createElement(\"span\", { className: \"k-icon k-icon-modifier\" })),\n this.state.innerText));\n };\n return DragClue;\n}(React.PureComponent));\nexport { DragClue };\n//# sourceMappingURL=DragClue.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\n/**\n * @hidden\n */\nvar DropClue = /** @class */ (function (_super) {\n __extends(DropClue, _super);\n function DropClue() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.state = {\n height: 0,\n visible: false,\n left: 0,\n top: 0\n };\n return _this;\n }\n DropClue.prototype.render = function () {\n return this.state.visible && (React.createElement(\"div\", { className: \"k-grouping-dropclue\", style: {\n zIndex: 10000,\n display: 'block',\n top: this.state.top + 'px',\n left: this.state.left + 'px',\n height: this.state.height + 'px'\n } }));\n };\n return DropClue;\n}(React.PureComponent));\nexport { DropClue };\n//# sourceMappingURL=DropClue.js.map","import * as PropTypes from 'prop-types';\n/**\n * @hidden\n */\nexport var GridColumn = function (_) { return null; };\n/**\n * @hidden\n */\nGridColumn.displayName = 'KendoReactGridColumn';\n/**\n * @hidden\n */\nGridColumn.defaultProps = {\n filterable: true,\n editable: true,\n sortable: true,\n resizable: true,\n reorderable: true,\n groupable: true\n};\n/**\n * @hidden\n */\nGridColumn.propTypes = {\n field: PropTypes.string,\n title: PropTypes.string,\n editable: PropTypes.bool,\n sortable: PropTypes.bool,\n cell: PropTypes.any,\n filterCell: PropTypes.any,\n filterable: PropTypes.bool,\n filter: PropTypes.oneOf(['text', 'numeric', 'boolean', 'date']),\n editor: PropTypes.oneOf(['text', 'numeric', 'boolean', 'date']),\n width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n minResizableWidth: PropTypes.number,\n headerCell: PropTypes.any,\n footerCell: PropTypes.any,\n headerSelectionValue: PropTypes.bool,\n format: PropTypes.string,\n headerClassName: PropTypes.string,\n className: PropTypes.string,\n reorderable: PropTypes.bool,\n resizable: PropTypes.bool,\n orderIndex: PropTypes.number,\n groupable: PropTypes.bool,\n columnMenu: PropTypes.any,\n locked: PropTypes.bool\n};\n//# sourceMappingURL=GridColumn.js.map","/**\n * @hidden\n */\nexport function getNestedValue(fieldName, dataItem) {\n var path = (fieldName || '').split('.');\n var data = dataItem;\n path.forEach(function (p) {\n data = data ? data[p] : undefined;\n });\n return data;\n}\n/**\n * @hidden\n */\nexport function flatData(output, input, footer, dataIndex, groupDefined, field, level) {\n if (level === void 0) { level = 0; }\n var maxLevel = level;\n for (var i = 0; i < input.length; i++) {\n if (!groupDefined || input[i].value === undefined || input[i].items === undefined) {\n output[output.length] = {\n dataIndex: ++dataIndex.index,\n dataItem: input[i],\n rowType: 'data',\n level: level,\n expanded: field === undefined || getNestedValue(field, input[i])\n };\n continue;\n }\n maxLevel = Math.max(maxLevel, level + 1);\n var expanded = field === undefined ||\n getNestedValue(field, input[i]) === undefined ||\n getNestedValue(field, input[i]);\n // header\n output[output.length] = {\n dataIndex: -1,\n dataItem: input[i],\n level: level,\n rowType: 'groupHeader',\n expanded: expanded\n };\n // children\n if (expanded) {\n maxLevel = Math.max(flatData(output, input[i].items, footer, dataIndex, groupDefined, field, level + 1), maxLevel);\n }\n // footer\n if (footer === 'always' || (expanded && footer === 'visible')) {\n output[output.length] = {\n dataIndex: -1,\n dataItem: input[i],\n rowType: 'groupFooter',\n level: level,\n expanded: expanded\n };\n }\n }\n return maxLevel;\n}\n/**\n * @hidden\n */\nexport function isRtl(element) {\n return element && (getComputedStyle(element).direction === 'rtl') || false;\n}\n/**\n * @hidden\n */\nexport function getIndex(event, parent) {\n if (!parent || !event || !event.originalEvent) {\n return -1;\n }\n var target = document.elementFromPoint(event.clientX, event.originalEvent.clientY);\n while (target && target.parentElement !== parent) {\n target = target.parentElement;\n }\n var children = parent.children;\n for (var i = 0; i < children.length; i++) {\n if (children[i] === target) {\n return i;\n }\n }\n return -1;\n}\nvar eventKeys = [\n 'sortChange',\n 'filterChange',\n 'groupChange',\n 'pageChange',\n 'expandChange',\n 'selectionChange',\n 'headerSelectionChange',\n 'rowClick',\n 'itemChange',\n 'dataStateChange',\n 'columnResize',\n 'columnReorder'\n];\nvar deprecatedHandlerMessage = function (oldKey, newKey) { return (\"The \" + oldKey + \" event handler property is deprecated, \" +\n (\"use https://www.telerik.com/kendo-react-ui/components/grid/api/GridProps/#toc-\" + newKey + \" instead\")); };\n/**\n * @hidden\n */\nexport function checkPropCompatibility(props) {\n for (var index = 0; index < eventKeys.length; index++) {\n var eventKey = eventKeys[index];\n if (props[eventKey] !== undefined) {\n var newKey = 'on' + eventKey.charAt(0).toUpperCase() + eventKey.slice(1);\n console.warn(deprecatedHandlerMessage(eventKey, newKey));\n }\n }\n}\n/**\n * @hidden\n */\nexport function mapColumns(columns) {\n var columnsMap = [[]];\n var stickyLeftWidth = 0;\n for (var q = columns.length - 1; q >= 0; q--) {\n columns[q].colSpan = columns[q].colSpan || 1;\n if (columns[q].parentIndex !== -1) {\n columns[columns[q].parentIndex].colSpan =\n (columns[columns[q].parentIndex].colSpan || 0) + columns[q].colSpan;\n }\n }\n var maxDepth = 0;\n columns.forEach(function (d) { maxDepth = Math.max(maxDepth, d.depth); });\n var rowSpan = 1;\n columns.forEach(function (column, i) {\n columnsMap[column.depth] = columnsMap[column.depth] || [];\n var needKFirst = false;\n if (columnsMap[column.depth].length === 0) {\n if (rowSpan <= 1) {\n rowSpan = 1 + (column.children.length > 0 ? 0 : maxDepth - column.depth);\n }\n else {\n rowSpan--;\n needKFirst = true;\n }\n }\n column.rowSpan = 1 + (column.children.length > 0 ? 0 : maxDepth - column.depth);\n column.kFirst = needKFirst;\n column.index = columnsMap[column.depth].length;\n columnsMap[column.depth].push(i);\n if (column.locked && column.children.length === 0) {\n column.left = stickyLeftWidth;\n stickyLeftWidth += column.width ? parseFloat(column.width.toString()) : 0;\n }\n });\n var nextIsLocked = false;\n var stickyRightWidth = 0;\n for (var i = columns.length - 1; i >= 0; i--) {\n var column = columns[i];\n if (column.locked && column.children.length === 0) {\n column.right = stickyRightWidth;\n stickyRightWidth += column.width ? parseFloat(column.width.toString()) : 0;\n column.rightBorder = !nextIsLocked;\n }\n nextIsLocked = column.locked || false;\n }\n return columnsMap;\n}\nimport { GridColumn } from '../GridColumn';\n/**\n * @hidden\n */\nexport function readColumns(elements, oldColumns, depth) {\n if (depth === void 0) { depth = 0; }\n var columns = [];\n if (!elements) {\n return [];\n }\n if (elements && elements.length === undefined) {\n elements = [elements];\n }\n elements.forEach(function (columnProps, index) {\n columnProps = columnProps.props ? columnProps.props : columnProps;\n var oldColumn = oldColumns[index] || null;\n var c = readColumns(columnProps.children, oldColumn && oldColumn.children || [], depth + 1);\n columns.push(Object.assign({ depth: depth }, GridColumn.defaultProps, (c.length) ? { cell: function () { return null; }, filterCell: function () { return null; } } : {}, oldColumn ? { width: oldColumn.width, orderIndex: oldColumn.orderIndex } : {}, columnProps, {\n declarationIndex: columns.length,\n children: c,\n rowSpan: 0,\n colSpan: 0\n }));\n });\n var comparator = function (a, b) {\n return a.orderIndex === b.orderIndex ?\n a.declarationIndex - b.declarationIndex :\n ((a.orderIndex || 0) - (b.orderIndex || 0));\n };\n columns.sort(comparator);\n if (depth === 0) {\n var ret_1 = [];\n var flat_1 = function (cols, pIndex) {\n return cols.forEach(function (c) {\n c.parentIndex = pIndex;\n flat_1(c.children, ret_1.push(c) - 1);\n });\n };\n flat_1(columns, -1);\n return ret_1;\n }\n return columns;\n}\n/**\n * @hidden\n */\nexport function autoGenerateColumns(data, group, expandField) {\n var propData = [];\n if (Array.isArray(data)) {\n propData = data;\n }\n else if (data) {\n propData = data.data;\n }\n var columns = [];\n if (propData.length > 0) {\n var itemForColumnsGen = propData[0];\n if (group) {\n for (var i = 0; i < group.length; i++) {\n itemForColumnsGen = itemForColumnsGen.items && itemForColumnsGen.items[0];\n }\n }\n var fields = Object.getOwnPropertyNames(itemForColumnsGen);\n fields.forEach(function (field) {\n if (field !== expandField) {\n columns.push(Object.assign({\n declarationIndex: -1,\n parentIndex: -1,\n depth: 0,\n colSpan: 0,\n rowSpan: 0,\n index: 0,\n left: 0,\n right: 0,\n rightBorder: false,\n children: []\n }, GridColumn.defaultProps, { field: field }));\n }\n });\n }\n return columns;\n}\nvar hasParentFooterCell = function (columns, column) {\n var parent = columns[column.parentIndex];\n while (parent) {\n if (parent.footerCell) {\n return true;\n }\n parent = columns[parent.parentIndex];\n }\n return false;\n};\n/**\n * @hidden\n */\nexport var footerColumns = function (columns) {\n return columns.filter(function (column) {\n if (hasParentFooterCell(columns, column)) {\n return false;\n }\n return Boolean(column.footerCell) || !(column.children && column.children.length > 0);\n });\n};\n//# sourceMappingURL=index.js.map","/**\n * An enumeration which represents the horizontal direction.\n * The `Forward` option moves forward.\n * The `Backward` option moves backward.\n */\nexport var Direction;\n(function (Direction) {\n /**\n * The `Forward` value with an underlying `1` number value.\n */\n Direction[Direction[\"Forward\"] = 1] = \"Forward\";\n /**\n * The `Backward` value with an underlying `-1` (minus one) number value.\n */\n Direction[Direction[\"Backward\"] = -1] = \"Backward\";\n})(Direction || (Direction = {}));\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport { getNestedValue } from './../utils';\nimport { guid } from '@progress/kendo-react-common';\n/**\n * @hidden\n */\nvar GridSelectionCell = /** @class */ (function (_super) {\n __extends(GridSelectionCell, _super);\n function GridSelectionCell() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this._inputId = guid();\n _this.handleOnChange = function (syntheticEvent) {\n if (_this.props.selectionChange) {\n _this.props.selectionChange({ syntheticEvent: syntheticEvent });\n }\n };\n return _this;\n }\n GridSelectionCell.prototype.render = function () {\n var data = getNestedValue(this.props.field, this.props.dataItem);\n var defaultRendering = this.props.rowType !== 'groupHeader' ? (React.createElement(\"td\", { colSpan: this.props.colSpan, style: this.props.style, className: this.props.className },\n React.createElement(\"input\", { checked: data, id: this._inputId, type: \"checkbox\", className: \"k-checkbox\", onChange: this.handleOnChange }),\n React.createElement(\"label\", { className: \"k-checkbox-label\", htmlFor: this._inputId }))) : null;\n return this.props.render ?\n this.props.render.call(undefined, defaultRendering, this.props) :\n defaultRendering;\n };\n return GridSelectionCell;\n}(React.Component));\nexport { GridSelectionCell };\n//# sourceMappingURL=GridSelectionCell.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport { getNestedValue } from './../utils';\n/**\n * @hidden\n */\nvar GridHierarchyCell = /** @class */ (function (_super) {\n __extends(GridHierarchyCell, _super);\n function GridHierarchyCell() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @hidden\n */\n GridHierarchyCell.prototype.render = function () {\n var _this = this;\n var defaultRendering = null;\n if (this.props.rowType === 'groupFooter') {\n defaultRendering = React.createElement(\"td\", { className: \"k-hierarchy-cell\" });\n }\n else if (this.props.rowType !== 'groupHeader') {\n var expanded_1 = getNestedValue(this.props.field, this.props.dataItem);\n var className = expanded_1 ? 'k-icon k-minus' : 'k-icon k-plus';\n defaultRendering = (React.createElement(\"td\", { className: \"k-hierarchy-cell\" },\n React.createElement(\"a\", { onClick: function (e) {\n e.preventDefault();\n if (_this.props.onChange) {\n _this.props.onChange({\n dataItem: _this.props.dataItem,\n syntheticEvent: e,\n field: _this.props.field,\n value: !expanded_1\n });\n }\n }, className: className, href: \"#\", tabIndex: -1 })));\n }\n return this.props.render ?\n this.props.render.call(undefined, defaultRendering, this.props) :\n defaultRendering;\n };\n return GridHierarchyCell;\n}(React.Component));\nexport { GridHierarchyCell };\n//# sourceMappingURL=GridHierarchyCell.js.map","/**\n * A function that clones the passed date. The parameter could be `null`.\n *\n * @param date - The initial date value.\n * @returns - A new `Date` instance.\n *\n * @example\n * ```ts-no-run\n * cloneDate(new Date(2016, 0, 1)); // returns new Date(2016, 0, 1);\n * cloneDate(null); // returns null\n * ```\n */\nexport var cloneDate = function (date) { return date ? new Date(date.getTime()) : null; };\n","import { cloneDate } from './clone-date';\n/**\n * @hidden\n */\nexport var adjustDST = function (date, hour) {\n var newDate = cloneDate(date);\n if (hour === 0 && newDate.getHours() === 23) {\n newDate.setHours(newDate.getHours() + 2);\n }\n return newDate;\n};\n","import { adjustDST } from './adjust-dst';\nimport { cloneDate } from './clone-date';\n/**\n * A function that adds and subtracts days from a `Date` object.\n *\n * @param date - The initial date value.\n * @param offset - The number of days to add and subtract from the date.\n * @returns - A new `Date` instance.\n *\n * @example\n * ```ts-no-run\n * addDays(new Date(2016, 0, 1), 5); // 2016-1-6\n * addDays(new Date(2016, 0, 1), -5); // 2015-12-26\n * ```\n */\nexport var addDays = function (date, offset) {\n var newDate = cloneDate(date);\n newDate.setDate(newDate.getDate() + offset);\n return adjustDST(newDate, date.getHours());\n};\n","import { adjustDST } from './adjust-dst';\n/**\n * A function which returns a new `Date` instance.\n *\n * @param year - The year value.\n * @param month - The month value.\n * @param day - The day value.\n * @param hours - The hours value.\n * @param minutes - The minutes value.\n * @param seconds - The seconds value.\n * @param milliseconds - milliseconds value.\n * @returns The date instance.\n *\n * @example\n * ```ts-no-run\n * createDate(2016, 0, 15); // 2016-01-15 00:00:00\n * createDate(2016, 0, 15, 22, 22, 20); // 2016-01-15 22:22:20\n * ```\n */\nexport var createDate = function (year, month, day, hours, minutes, seconds, milliseconds) {\n if (hours === void 0) { hours = 0; }\n if (minutes === void 0) { minutes = 0; }\n if (seconds === void 0) { seconds = 0; }\n if (milliseconds === void 0) { milliseconds = 0; }\n var date = new Date(year, month, day, hours, minutes, seconds, milliseconds);\n if (year > -1 && year < 100) {\n date.setFullYear(date.getFullYear() - 1900);\n }\n return adjustDST(date, hours);\n};\n","import { addDays } from './add-days';\nimport { createDate } from './create-date';\n/**\n * A function which returns the last date of the month.\n *\n * @param date - The initial date.\n * @returns - The last date of the initial date month.\n *\n * @example\n * ```ts-no-run\n * lastDayOfMonth(new Date(2016, 0, 15)); // 2016-01-31\n * ```\n */\nexport var lastDayOfMonth = function (date) {\n var newDate = createDate(date.getFullYear(), date.getMonth() + 1, 1, date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds());\n return addDays(newDate, -1);\n};\n","import { adjustDST } from './adjust-dst';\nimport { cloneDate } from './clone-date';\nimport { lastDayOfMonth } from './last-day-of-month';\nvar MONTHS_LENGTH = 12;\nvar normalize = function (date, expectedMonth) { return (date.getMonth() !== expectedMonth ? lastDayOfMonth(addMonths(date, -1)) : date //tslint:disable-line:no-use-before-declare\n); };\n/**\n * A function that adds and subtracts months from a `Date` object.\n *\n * @param date - The initial date value.\n * @param offset - The number of months to add or subtract from the date.\n * @returns - A new `Date` instance.\n *\n * @example\n * ```ts-no-run\n * addMonths(new Date(2016, 5, 1), 5); // 2016-11-1\n * addMonths(new Date(2016, 5, 1), -5); // 2015-1-1\n * ```\n */\nexport var addMonths = function (date, offset) {\n var newDate = cloneDate(date);\n var diff = (newDate.getMonth() + offset) % MONTHS_LENGTH;\n var expectedMonth = (MONTHS_LENGTH + diff) % MONTHS_LENGTH;\n newDate.setMonth(newDate.getMonth() + offset);\n return normalize(adjustDST(newDate, date.getHours()), expectedMonth);\n};\n","import { addDays } from './add-days';\n/**\n * A function that adds and subtracts weeks from a Date object.\n *\n * @param date - The initial date value.\n * @param offset - The number of weeks to add/subtract from the date.\n * @returns - A new `Date` instance.\n *\n * @example\n * ```ts-no-run\n * addWeeks(new Date(2016, 5, 1), 3); // 2016-6-22\n * addWeeks(new Date(2016, 5, 1), -3); // 2015-5-11\n * ```\n */\nexport var addWeeks = function (date, offset) {\n return addDays(date, offset * 7);\n};\n","import { addMonths } from './add-months';\nimport { createDate } from './create-date';\nimport { lastDayOfMonth } from './last-day-of-month';\n/**\n * @hidden\n */\nexport var setYear = function (value, year) {\n var month = value.getMonth();\n var candidate = createDate(year, month, value.getDate(), value.getHours(), value.getMinutes(), value.getSeconds(), value.getMilliseconds());\n return candidate.getMonth() === month ? candidate : lastDayOfMonth(addMonths(candidate, -1));\n};\n","import { adjustDST } from './adjust-dst';\nimport { setYear } from './set-year';\n/**\n * A function that adds and subtracts years from a `Date` object.\n *\n * @param date - The initial date value.\n * @param offset - The number of years to add or subtract from the date.\n * @returns - A new `Date` instance.\n *\n * @example\n * ```ts-no-run\n * addYears(new Date(2016, 5, 1), 5); // 2011-6-1\n * addYears(new Date(2016, 5, 1), -5); // 2021-6-1\n * ```\n */\nexport var addYears = function (value, offset) {\n return adjustDST(setYear(value, value.getFullYear() + offset), value.getHours());\n};\n","import { addYears } from './add-years';\n/**\n * A function that adds and subtracts decades from a `Date` object.\n *\n * @param date - The initial date value.\n * @param offset - The number of decades to add or subtract from the date.\n * @returns - A new `Date` instance.\n *\n * @example\n * ```ts-no-run\n * addDecades(new Date(2016, 5, 1), 5); // 2066-6-1\n * addDecades(new Date(2016, 5, 1), -5); // 1966-6-1\n * ```\n */\nexport var addDecades = function (value, offset) {\n return addYears(value, 10 * offset);\n};\n","import { addYears } from './add-years';\n/**\n * A function that adds and subtracts centuries from a `Date` object.\n *\n * @param date - The initial date value.\n * @param offset - The number of centuries to add or subtract from the date.\n * @returns - A new `Date` instance.\n *\n * @example\n * ```ts-no-run\n * addCenturies(new Date(2016, 5, 1), 5); // 2516-6-1\n * addCenturies(new Date(2016, 5, 1), -5); // 1516-6-1\n * ```\n */\nexport var addCenturies = function (value, offset) {\n return addYears(value, 100 * offset);\n};\n","import { Direction } from \"./direction.enum\";\nimport { adjustDST } from \"./adjust-dst\";\nimport { cloneDate } from './clone-date';\n/**\n * @hidden\n *\n * A function which returns the next or previous date for a specific week day.\n * For example, `Day.Monday`.\n *\n * @param date - The date to calculate from.\n * @param weekDay - The `Day` enum specifying the desired week day.\n * @param direction - The `Direction` enum specifying the calculation direction.\n * @returns - A `Date` instance.\n *\n * @example\n * ```ts-no-run\n * dayOfWeek(new Date(2016, 0, 1), Day.Wednesday, Direction.Forward); // 2016-01-06, Wednesday\n * dayOfWeek(new Date(2016, 0, 1), Day.Wednesday, Direction.Backward); // 2015-12-30, Wednesday\n * ```\n */\nexport var dayOfWeek = function (date, weekDay, direction) {\n if (direction === void 0) { direction = Direction.Forward; }\n var newDate = cloneDate(date);\n var newDay = ((weekDay - newDate.getDay()) + (7 * direction)) % 7;\n newDate.setDate(newDate.getDate() + newDay);\n return adjustDST(newDate, date.getHours());\n};\n","/**\n * Enumeration which represents the week days.\n */\nexport var Day;\n(function (Day) {\n /**\n * The Sunday value with an underlying `0` number value.\n */\n Day[Day[\"Sunday\"] = 0] = \"Sunday\";\n /**\n * The Monday value with an underlying `1` number value.\n */\n Day[Day[\"Monday\"] = 1] = \"Monday\";\n /**\n * The Tuesday value with an underlying `2` number value.\n */\n Day[Day[\"Tuesday\"] = 2] = \"Tuesday\";\n /**\n * The Wednesday value with an underlying `3` number value.\n */\n Day[Day[\"Wednesday\"] = 3] = \"Wednesday\";\n /**\n * The Thursday value with an underlying `4` number value.\n */\n Day[Day[\"Thursday\"] = 4] = \"Thursday\";\n /**\n * The Friday value with an underlying `5` number value.\n */\n Day[Day[\"Friday\"] = 5] = \"Friday\";\n /**\n * The Saturday value with an underlying `6` number value.\n */\n Day[Day[\"Saturday\"] = 6] = \"Saturday\";\n})(Day || (Day = {}));\n","/**\n * A function that calculates duration in months between two `Date` objects.\n *\n * @param start - The start date value.\n * @param end - The end date value.\n * @returns - The duration in months.\n *\n * @example\n * ```ts-no-run\n * durationInMonths(new Date(2016, 0, 1), new Date(2017, 0, 1)); // 12\n * durationInMonths(new Date(2016, 6, 1), new Date(2017, 0, 1)); // 6\n * durationInMonths(new Date(2016, 0, 1), new Date(2016, 0, 1)); // 0\n * ```\n */\nexport var durationInMonths = function (start, end) { return (((end.getFullYear() - start.getFullYear())) * 12 + (end.getMonth() - start.getMonth())); };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar _a, _b, _c;\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { classNames } from '@progress/kendo-react-common';\nimport { RowHeightService, ScrollerService } from './services';\n/**\n * @hidden\n */\nexport var ScrollDirection;\n(function (ScrollDirection) {\n ScrollDirection[ScrollDirection[\"Backward\"] = 0] = \"Backward\";\n ScrollDirection[ScrollDirection[\"Forward\"] = 1] = \"Forward\";\n})(ScrollDirection || (ScrollDirection = {}));\nvar differenceToScroll = function (scrollTop, staticOffset, maxScrollDifference) {\n return Math.min(Math.abs(staticOffset - scrollTop), maxScrollDifference);\n};\nvar FRAME_DURATION = 17;\nvar scrollModifiers = (_a = {},\n _a[ScrollDirection.Forward] = function (step) { return function (value) { return value + step; }; },\n _a[ScrollDirection.Backward] = function (step) { return function (value) { return value - step; }; },\n _a);\nvar scrollNormalizers = (_b = {},\n _b[ScrollDirection.Forward] = function (end) { return function (value) { return Math.min(value, end); }; },\n _b[ScrollDirection.Backward] = function (end) { return function (value) { return Math.max(value, end); }; },\n _b);\nvar scrollValidators = (_c = {},\n _c[ScrollDirection.Forward] = function (end) { return function (start) { return start < end; }; },\n _c[ScrollDirection.Backward] = function (end) { return function (start) { return start > end; }; },\n _c);\n/**\n * @hidden\n */\nvar Virtualization = /** @class */ (function (_super) {\n __extends(Virtualization, _super);\n function Virtualization(props) {\n var _this = _super.call(this, props) || this;\n _this.animationInProgress = false;\n _this.scrollTo = function (value) {\n var scrollProperty = _this.direction === 'vertical' ? 'scrollTop' : 'scrollLeft';\n if (!_this.scrollContainer) {\n return;\n }\n _this.scrollContainer[scrollProperty] = value;\n };\n _this.scrollToIndex = function (index) {\n if (!_this.rowHeightService) {\n return;\n }\n _this.animationInProgress = false;\n _this.scrollTo(_this.rowHeightService.offset(index));\n };\n _this.animateToIndex = function (index) {\n if (!_this.rowHeightService || !window) {\n return;\n }\n window.cancelAnimationFrame(_this.cancelAnimation);\n var indexOffset = _this.rowHeightService.offset(index);\n var direction = _this.getContainerScrollDirection(indexOffset);\n var _a = _this.scrollRange(indexOffset, direction), start = _a.start, end = _a.end;\n if (start === end) {\n return;\n }\n var step = _this.scrollStep(start, end);\n var modifyScroll = scrollModifiers[direction](step);\n var normalizeScroll = scrollNormalizers[direction](end);\n var isScrollValid = scrollValidators[direction](modifyScroll(end));\n var animate = function (progress) {\n _this.animationInProgress = true;\n var next = modifyScroll(progress);\n _this.scrollTo(normalizeScroll(next));\n isScrollValid(next)\n ? _this.cancelAnimation = window.requestAnimationFrame(function () { animate(next); })\n : _this.animationInProgress = false;\n };\n _this.cancelAnimation = window.requestAnimationFrame(function () { animate(start); });\n };\n _this.scrollToBottom = function () {\n if (!_this.rowHeightService) {\n return;\n }\n _this.scrollTo(_this.rowHeightService.totalHeight() + _this.props.bottomOffset);\n };\n _this.scrollStep = function (start, end) {\n var duration = _this.props.scrollDuration || Virtualization.defaultProps.scrollDuration;\n return Math.abs(end - start) / (duration / FRAME_DURATION);\n };\n _this.scrollRange = function (indexOffset, direction) {\n var containerScroll = _this.containerScrollPosition;\n if (parseInt(\"\" + indexOffset, 10) === parseInt(\"\" + containerScroll, 10)) {\n return { start: indexOffset, end: indexOffset };\n }\n var maxScroll = _this.containerMaxScroll();\n var sign = direction === ScrollDirection.Backward ? 1 : -1;\n var difference = differenceToScroll(containerScroll, indexOffset, _this.props.maxScrollDifference);\n var end = Math.min(indexOffset, maxScroll);\n var start = Math.min(Math.max(end + (sign * difference), 0), maxScroll);\n return { start: start, end: end };\n };\n _this.containerMaxScroll = function () {\n return _this.containerScrollSize - _this.containerOffsetSize;\n };\n _this.getContainerScrollDirection = function (indexOffset) {\n return indexOffset < _this.containerScrollPosition ? ScrollDirection.Backward : ScrollDirection.Forward;\n };\n _this.initServices = function (props) {\n if (props === void 0) { props = _this.props; }\n var dimension = _this.direction === 'vertical' ? props.itemHeight : props.itemWidth;\n if (dimension === undefined) {\n return;\n }\n _this.rowHeightService = new RowHeightService(props.total, dimension, 0);\n _this.scrollerService.create(_this.rowHeightService, props.skip, props.take, props.total, props.topOffset, _this.scrollOffsetSize, _this.direction);\n };\n _this.getContainerProperty = function (propertyName) {\n if (!_this.scrollContainer) {\n return 0;\n }\n return _this.scrollContainer[propertyName];\n };\n _this.handleScroll = function (event) {\n if (!_this.scrollContainer || !_this.rowHeightService) {\n return;\n }\n var target = event.target;\n _this.scrollerService.onScroll({\n scrollLeft: target.scrollLeft,\n scrollTop: target.scrollTop,\n offsetHeight: target.offsetHeight,\n offsetWidth: target.offsetWidth\n });\n var index = _this.rowHeightService.index(_this.containerScrollPosition - _this.props.topOffset);\n var onScrollAction = _this.props.onScrollAction;\n var args = {\n index: index,\n target: target,\n scrollAction: _this.scrollAction,\n pageAction: _this.pageAction,\n animationInProgress: _this.animationInProgress\n };\n if (onScrollAction) {\n onScrollAction.call(undefined, args);\n }\n _this.scrollAction = undefined;\n _this.pageAction = undefined;\n };\n _this.handleScrollAction = function (action) {\n _this.scrollAction = action;\n };\n _this.handlePageAction = function (action) {\n _this.pageAction = action;\n };\n _this.scrollerService = new ScrollerService(_this.handleScrollAction, _this.handlePageAction);\n return _this;\n }\n Object.defineProperty(Virtualization.prototype, \"element\", {\n get: function () {\n return this.scrollContainer;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Virtualization.prototype, \"containerOffsetSize\", {\n get: function () {\n return this.getContainerProperty(this.direction === 'vertical' ? 'offsetHeight' : 'offsetWidth');\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Virtualization.prototype, \"containerScrollSize\", {\n get: function () {\n return this.getContainerProperty(this.direction === 'vertical' ? 'scrollHeight' : 'scrollWidth');\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Virtualization.prototype, \"containerScrollPosition\", {\n get: function () {\n return this.getContainerProperty(this.direction === 'vertical' ? 'scrollTop' : 'scrollLeft');\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Virtualization.prototype, \"direction\", {\n get: function () {\n return this.props.direction !== undefined ? this.props.direction : Virtualization.defaultProps.direction;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Virtualization.prototype, \"scrollOffsetSize\", {\n get: function () {\n return this.props.scrollOffsetSize !== undefined\n ? this.props.scrollOffsetSize : Virtualization.defaultProps.scrollOffsetSize;\n },\n enumerable: true,\n configurable: true\n });\n Virtualization.prototype.activeIndex = function () {\n return this.itemIndex(Math.ceil(this.containerScrollPosition));\n };\n Virtualization.prototype.itemIndex = function (offset) {\n if (!this.rowHeightService) {\n return 0;\n }\n return this.rowHeightService.index(offset);\n };\n Virtualization.prototype.itemOffset = function (index) {\n if (!this.rowHeightService) {\n return 0;\n }\n return this.rowHeightService.offset(index);\n };\n Virtualization.prototype.isIndexVisible = function (index) {\n if (!this.rowHeightService) {\n return false;\n }\n var containerTop = this.containerScrollPosition;\n var containerBottom = containerTop + this.containerOffsetSize;\n var top = this.rowHeightService.offset(index);\n var bottom = top + this.rowHeightService.height(index);\n return top >= containerTop && bottom <= containerBottom;\n };\n Virtualization.prototype.isListScrolled = function (index) {\n if (!this.rowHeightService) {\n return false;\n }\n return this.containerScrollPosition !== this.rowHeightService.offset(index);\n };\n Virtualization.prototype.componentDidMount = function () {\n var onMount = this.props.onMount;\n if (onMount) {\n onMount.call(undefined, this);\n }\n };\n Virtualization.prototype.render = function () {\n var _this = this;\n if (this.lastTotal !== this.props.total\n || this.lastDirection !== this.direction\n || this.lastTake !== this.props.take) {\n this.initServices();\n this.lastTotal = this.props.total;\n this.lastDirection = this.direction;\n this.lastTake = this.props.take;\n }\n var vertexLength = \"\" + ((this.rowHeightService ? this.rowHeightService.totalHeight() : 0) + this.props.bottomOffset);\n var placeholderStyle = this.direction === 'vertical'\n ? { height: vertexLength + \"px\" }\n : { width: vertexLength + \"px\" };\n var rootClassNames = classNames('k-content k-scrollable', {\n 'k-scrollable-horizontal': this.direction === 'horizontal'\n }, this.props.className);\n var scrollableClassNames = classNames('k-scrollable-placeholder', {\n 'k-scrollable-horizontal-placeholder': this.direction === 'horizontal'\n });\n return (React.createElement(\"div\", { ref: function (el) { _this.scrollContainer = el; }, onScroll: this.handleScroll, className: rootClassNames, tabIndex: this.props.tabIndex, role: this.props.role },\n this.props.children,\n React.createElement(\"div\", { style: placeholderStyle, className: scrollableClassNames })));\n };\n Virtualization.propTypes = {\n bottomOffset: PropTypes.number.isRequired,\n className: PropTypes.string,\n direction: PropTypes.oneOf(['horizontal', 'vertical']),\n forceScroll: PropTypes.bool,\n itemHeight: PropTypes.number,\n itemWidth: PropTypes.number,\n maxScrollDifference: PropTypes.number,\n onScroll: PropTypes.func,\n onScrollAction: PropTypes.func,\n scrollDuration: PropTypes.number,\n scrollOffsetSize: PropTypes.number,\n skip: PropTypes.number.isRequired,\n tabIndex: PropTypes.number,\n take: PropTypes.number.isRequired,\n topOffset: PropTypes.number.isRequired,\n total: PropTypes.number.isRequired,\n role: PropTypes.string\n };\n Virtualization.defaultProps = {\n direction: 'vertical',\n forceScroll: false,\n scrollOffsetSize: 0,\n maxScrollDifference: 100,\n scrollDuration: 100\n };\n return Virtualization;\n}(React.Component));\nexport { Virtualization };\n//# sourceMappingURL=Virtualization.js.map","/**\n * A function that calculates duration in years between two `Date` objects.\n *\n * @param start - The start date value.\n * @param end - The end date value.\n * @returns - The duration in years.\n *\n * @example\n * ```ts-no-run\n * durationInYears(new Date(2016, 0, 1), new Date(2028, 0, 1)); // 12\n * durationInYears(new Date(2016, 0, 1), new Date(2022, 0, 1)); // 6\n * durationInYears(new Date(2016, 0, 1), new Date(2016, 0, 1)); // 0\n * ```\n */\nexport var durationInYears = function (start, end) { return (end.getFullYear() - start.getFullYear()); };\n","import { setYear } from './set-year';\n/**\n * @hidden\n */\nexport var normalizeYear = function (value, year) { return (setYear(value, year(value.getFullYear()))); };\n","import { normalizeYear } from './normalize-year';\n/**\n * A function that returns a `Date` object of the first year in a decade.\n *\n * @param date - The start date value.\n * @returns - The first year in a decade.\n *\n * @example\n * ```ts-no-run\n * firstYearOfDecade(new Date(2017, 0, 1)); // 2010-1-1\n * firstYearOfDecade(new Date(2007, 10, 22)); // 2000-11-22\n * firstYearOfDecade(new Date(2026, 0, 1)); // 2020-1-1\n * ```\n */\nexport var firstYearOfDecade = function (value) { return (normalizeYear(value, function (y) { return y - (y % 10); })); };\n","import { firstYearOfDecade } from './first-year-of-decade';\n/**\n * A function that calculates duration in decades between two `Date` objects.\n *\n * @param start - The start date value.\n * @param end - The end date value.\n * @returns - The duration in months.\n *\n * @example\n * ```ts-no-run\n * durationInDecades(new Date(2016, 0, 1), new Date(2136, 0, 1)); // 12\n * durationInDecades(new Date(2016, 0, 1), new Date(2016, 0, 1)); // 0\n * ```\n */\nexport var durationInDecades = function (start, end) { return ((firstYearOfDecade(end).getFullYear() - firstYearOfDecade(start).getFullYear()) / 10); };\n","import { normalizeYear } from './normalize-year';\n/**\n * A function that returns a `Date` object of the first decade in a century.\n *\n * @param date - The start date value.\n * @returns - The first year in a century.\n *\n * @example\n * ```ts-no-run\n * firstDecadeOfCentury(new Date(2017, 0, 1)); // 2000-1-1\n * firstDecadeOfCentury(new Date(2007, 10, 22)); // 2000-11-22\n * firstDecadeOfCentury(new Date(2126, 0, 1)); // 2100-1-1\n * ```\n */\nexport var firstDecadeOfCentury = function (value) { return (normalizeYear(value, function (y) { return y - (y % 100); })); };\n","import { firstDecadeOfCentury } from './first-decade-of-century';\n/**\n * A function that calculates duration in centuries between two `Date` objects.\n *\n * @param start - The start date value.\n * @param end - The end date value.\n * @returns - The duration in months.\n *\n * @example\n * ```ts-no-run\n * durationInCenturies(new Date(2016, 0, 1), new Date(3216, 0, 1)); // 12\n * durationInCenturies(new Date(2016, 6, 1), new Date(2617, 0, 1)); // 6\n * durationInCenturies(new Date(2016, 0, 1), new Date(2016, 0, 1)); // 0\n * ```\n */\nexport var durationInCenturies = function (start, end) { return ((firstDecadeOfCentury(end).getFullYear() - firstDecadeOfCentury(start).getFullYear()) / 100); };\n","import { createDate } from './create-date';\n/**\n * A function which returns the passed date with a midnight time portion.\n *\n * @param date - The initial date.\n * @returns - The date with a midnight time portion.\n *\n * @example\n * ```ts-no-run\n * getDate(new Date(2016, 0, 15, 14, 30, 30)); // 2016-01-15 00:00:00\n * ```\n */\nexport var getDate = function (date) {\n return createDate(date.getFullYear(), date.getMonth(), date.getDate(), 0, 0, 0);\n};\n","import { createDate } from './create-date';\n/**\n * A function which returns the first date of the month.\n *\n * @param date - The initial date.\n * @returns - The first date of the initial date month.\n *\n * @example\n * ```ts-no-run\n * firstDayOfMonth(new Date(2016, 0, 15)); // 2016-01-01\n * ```\n */\nexport var firstDayOfMonth = function (date) {\n return createDate(date.getFullYear(), date.getMonth(), 1, date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds());\n};\n","import { addMonths } from './add-months';\nimport { createDate } from './create-date';\nimport { lastDayOfMonth } from './last-day-of-month';\n/**\n * @hidden\n */\nexport var setMonth = function (value, month) {\n var day = value.getDate();\n var candidate = createDate(value.getFullYear(), month, day, value.getHours(), value.getMinutes(), value.getSeconds(), value.getMilliseconds());\n return candidate.getDate() === day ? candidate : lastDayOfMonth(addMonths(candidate, -1));\n};\n","import { setMonth } from './set-month';\n/**\n * A function that returns a `Date` object of the first month in a year.\n *\n * @param date - The start date value.\n * @returns - The first month in a year.\n *\n * @example\n * ```ts-no-run\n * firstMonthOfYear(new Date(2017, 11, 1)); // 2017-1-1\n * firstMonthOfYear(new Date(2017, 0, 1)); // 2017-1-1\n * ```\n */\nexport var firstMonthOfYear = function (value) { return setMonth(value, 0); };\n","/**\n * A function that compares two dates.\n * The comparison also includes the time portion.\n *\n * @param candidate - The candidate date.\n * @param expected - The expected date.\n * @returns - A Boolean value indicating whether the values are equal.\n *\n * @example\n * ```ts-no-run\n * isEqual(new Date(2016, 0, 1), new Date(2016, 0, 1)); // true\n * isEqual(new Date(2016, 0, 1), new Date(2016, 0, 2)); // false\n * isEqual(new Date(2016, 0, 1, 10), new Date(2016, 0, 1, 20)); // false\n * ```\n */\nexport var isEqual = function (candidate, expected) {\n if (!candidate && !expected) {\n return true;\n }\n return candidate && expected && candidate.getTime() === expected.getTime();\n};\n","import { getDate } from './get-date';\nimport { isEqual } from './is-equal';\n/**\n * A function that compares the date portions of 2 dates.\n *\n * @param candidate - The candidate date.\n * @param expected - The expected date.\n * @returns - A Boolean value whether the values are equal.\n *\n * @example\n * ```ts-no-run\n * isEqualDate(new Date(2016, 0, 1, 10), new Date(2016, 0, 1, 20)); // true\n * isEqualDate(new Date(2016, 0, 1, 10), new Date(2016, 0, 2, 10)); // false\n * ```\n */\nexport var isEqualDate = function (candidate, expected) {\n if (!candidate && !expected) {\n return true;\n }\n return candidate && expected && isEqual(getDate(candidate), getDate(expected));\n};\n","import { setMonth } from './set-month';\n/**\n * A function that returns a `Date` object of the last month in a year.\n *\n * @param date - The start date value.\n * @returns - The last month in a year.\n *\n * @example\n * ```ts-no-run\n * lastMonthOfYear(new Date(2017, 5, 3)); // 2017-12-3\n * lastMonthOfYear(new Date(2017, 11, 3)); // 2017-12-3\n * ```\n */\nexport var lastMonthOfYear = function (value) { return setMonth(value, 11); };\n","import { normalizeYear } from './normalize-year';\n/**\n * A function that returns a `Date` object of the last year in a decade.\n *\n * @param date - The start date value.\n * @returns - The last year in a decade.\n *\n * @example\n * ```ts-no-run\n * lastYearOfDecade(new Date(2017, 0, 1)); // 2019-1-1\n * lastYearOfDecade(new Date(2007, 10, 22)); // 2009-11-22\n * lastYearOfDecade(new Date(2026, 0, 1)); // 2029-1-1\n * ```\n */\nexport var lastYearOfDecade = function (value) { return (normalizeYear(value, function (y) { return y - (y % 10) + 9; })); };\n","import { normalizeYear } from './normalize-year';\n/**\n * A function that returns a `Date` object of the last decade in a century.\n *\n * @param date - The start date value.\n * @returns - The last year in a decade.\n *\n * @example\n * ```ts-no-run\n * lastDecadeOfCentury(new Date(2017, 0, 1)); // 2090-1-1\n * lastDecadeOfCentury(new Date(2007, 10, 22)); // 2090-11-22\n * lastDecadeOfCentury(new Date(2126, 0, 1)); // 2190-1-1\n * ```\n */\nexport var lastDecadeOfCentury = function (value) { return (normalizeYear(value, function (y) { return y - (y % 100) + 90; })); };\n","import { Day } from './day.enum';\nimport { addDays } from './add-days';\nimport { createDate } from './create-date';\nimport { prevDayOfWeek } from './prev-day-of-week';\nimport { MS_PER_DAY } from './ms-per-day';\nvar moveDateToWeekStart = function (date, weekStartDay) {\n if (weekStartDay !== Day.Monday) {\n return addDays(prevDayOfWeek(date, weekStartDay), 4);\n }\n return addDays(date, (4 - (date.getDay() || 7)));\n};\nvar calcWeekInYear = function (date, weekStartDay) {\n var firstWeekInYear = createDate(date.getFullYear(), 0, 1, -6);\n var newDate = moveDateToWeekStart(date, weekStartDay);\n var diffInMS = newDate.getTime() - firstWeekInYear.getTime();\n var days = Math.floor(diffInMS / MS_PER_DAY);\n return 1 + Math.floor(days / 7);\n};\n/**\n * A function that returns the number of the week within a year, which is calculated in relation to the date.\n *\n * For more information, refer to the [**ISO week date**](https://en.wikipedia.org/wiki/ISO_week_date) article.\n *\n * @param date - The date used for the week number calculation.\n * @param weekStartDay - The first day of the week. By default, the first week day is Monday.\n * @returns - The number of the week within the year.\n *\n * @example\n * ```ts-no-run\n * weekInYear(new Date(2016, 0, 1)); // Week 53, 2015\n * weekInYear(new Date(2016, 0, 5)); // Week 1, 2016\n * weekInYear(new Date(2017, 0, 1)); // Week 52, 2016\n * weekInYear(new Date(2017, 0, 2)); // Week 1, 2017\n * ```\n */\nexport var weekInYear = function (date, weekStartDay) {\n if (weekStartDay === void 0) { weekStartDay = Day.Monday; }\n var prevWeekDate = addDays(date, -7);\n var nextWeekDate = addDays(date, 7);\n var weekNumber = calcWeekInYear(date, weekStartDay);\n if (weekNumber === 0) {\n return calcWeekInYear(prevWeekDate, weekStartDay) + 1;\n }\n if (weekNumber === 53 && calcWeekInYear(nextWeekDate, weekStartDay) > 1) {\n return 1;\n }\n return weekNumber;\n};\n","import { Direction } from \"./direction.enum\";\nimport { dayOfWeek } from './day-of-week';\n/**\n * A function which returns a date by a specific week name.\n * For example, `Day.Monday`.\n *\n * @param date - The date to calculate from.\n * @param weekDay - The `Day` enum specifying the desired week day.\n * @returns - A `Date` instance.\n *\n * @example\n * ```ts-no-run\n * prevDayOfWeek(new Date(2016, 0, 1), Day.Wednesday); // 2015-12-30, Wednesday\n * ```\n */\nexport var prevDayOfWeek = function (date, weekDay) {\n return dayOfWeek(date, weekDay, Direction.Backward);\n};\n","/**\n * The duration of the day in milliseconds.\n */\nexport var MS_PER_DAY = 86400000;\n","/**\n * @hidden\n */\nvar update = function (arr, idx, value) { return (arr.slice(0, idx + 1).concat((arr.slice(idx + 1).map(function (x) { return x + value; })))); };\n/**\n * @hidden\n */\nvar RowHeightService = /** @class */ (function () {\n function RowHeightService(total, rowHeight, detailRowHeight) {\n if (total === void 0) { total = 0; }\n this.total = total;\n this.rowHeight = rowHeight;\n this.detailRowHeight = detailRowHeight;\n this.offsets = [];\n this.heights = [];\n var agg = 0;\n for (var idx = 0; idx < total; idx++) {\n this.offsets.push(agg);\n agg += rowHeight;\n this.heights.push(rowHeight);\n }\n }\n RowHeightService.prototype.height = function (rowIndex) {\n return this.heights[rowIndex];\n };\n RowHeightService.prototype.expandDetail = function (rowIndex) {\n if (this.height(rowIndex) === this.rowHeight) {\n this.updateRowHeight(rowIndex, this.detailRowHeight);\n }\n };\n RowHeightService.prototype.collapseDetail = function (rowIndex) {\n if (this.height(rowIndex) > this.rowHeight) {\n this.updateRowHeight(rowIndex, this.detailRowHeight * -1);\n }\n };\n RowHeightService.prototype.index = function (position) {\n for (var i = 0; i < this.offsets.length; i++) {\n if (position === this.offsets[i]) {\n return i;\n }\n if (position < this.offsets[i]) {\n return i - 1;\n }\n }\n return this.total - 1;\n };\n RowHeightService.prototype.offset = function (rowIndex) {\n return this.offsets[rowIndex];\n };\n RowHeightService.prototype.totalHeight = function () {\n return this.heights.reduce(function (prev, curr) { return prev + curr; }, 0);\n };\n RowHeightService.prototype.updateRowHeight = function (rowIndex, value) {\n this.heights[rowIndex] += value;\n this.offsets = update(this.offsets, rowIndex, value);\n };\n return RowHeightService;\n}());\nexport { RowHeightService };\n//# sourceMappingURL=RowHeightService.js.map","var normalize = function (x) { return Math.max(x, 0); };\n/**\n * @hidden\n */\nvar ScrollAction = /** @class */ (function () {\n function ScrollAction(offset) {\n this.offset = offset;\n }\n return ScrollAction;\n}());\nexport { ScrollAction };\n/**\n * @hidden\n */\nvar PageAction = /** @class */ (function () {\n function PageAction(skip) {\n this.skip = skip;\n }\n return PageAction;\n}());\nexport { PageAction };\n/**\n * @hidden\n */\nvar ScrollerService = /** @class */ (function () {\n function ScrollerService(onScrollAction, onPageAction) {\n this.onScrollAction = onScrollAction;\n this.onPageAction = onPageAction;\n this.firstLoaded = 0;\n this.bottomOffset = 0;\n this.topOffset = 0;\n }\n ScrollerService.prototype.create = function (rowHeightService, skip, take, total, topOffset, bottomOffset, direction) {\n if (topOffset === void 0) { topOffset = 0; }\n if (bottomOffset === void 0) { bottomOffset = 0; }\n if (direction === void 0) { direction = 'vertical'; }\n this.rowHeightService = rowHeightService;\n this.firstLoaded = skip;\n this.lastLoaded = skip + take;\n this.take = take;\n this.total = total;\n this.lastScrollTop = 0;\n this.topOffset = topOffset;\n this.bottomOffset = bottomOffset;\n this.direction = direction;\n var offsetBufferRows = this.rowsForHeight(topOffset);\n var skipWithOffset = normalize(skip - offsetBufferRows);\n this.onScrollAction(new ScrollAction(this.rowOffset(skipWithOffset)));\n this.onPageAction(new PageAction(skipWithOffset));\n };\n ScrollerService.prototype.onScroll = function (_a) {\n var scrollLeft = _a.scrollLeft, scrollTop = _a.scrollTop, offsetHeight = _a.offsetHeight, offsetWidth = _a.offsetWidth;\n var scrollPosition = this.direction === 'vertical' ? scrollTop : scrollLeft;\n var offsetSize = this.direction === 'vertical' ? offsetHeight : offsetWidth;\n if (this.lastScrollTop === scrollPosition) {\n return;\n }\n var up = this.lastScrollTop >= scrollPosition;\n this.lastScrollTop = scrollPosition;\n var firstItemIndex = this.rowHeightService.index(normalize(scrollPosition - this.topOffset));\n var lastItemIndex = this.rowHeightService.index(normalize(scrollPosition + offsetSize - this.bottomOffset));\n if (!up && lastItemIndex >= this.lastLoaded && this.lastLoaded < this.total) {\n this.firstLoaded = firstItemIndex;\n this.onScrollAction(new ScrollAction(this.rowOffset(firstItemIndex)));\n this.lastLoaded = Math.min(this.firstLoaded + this.take, this.total);\n this.onPageAction(new PageAction(this.firstLoaded));\n }\n if (up && firstItemIndex <= this.firstLoaded) {\n var nonVisibleBuffer = Math.floor(this.take * 0.3);\n this.firstLoaded = normalize(firstItemIndex - nonVisibleBuffer);\n this.onScrollAction(new ScrollAction(this.rowOffset(this.firstLoaded)));\n this.lastLoaded = Math.min(this.firstLoaded + this.take, this.total);\n this.onPageAction(new PageAction(this.firstLoaded));\n }\n };\n ScrollerService.prototype.rowOffset = function (index) {\n return this.rowHeightService.offset(index) + this.topOffset;\n };\n ScrollerService.prototype.rowsForHeight = function (height) {\n return Math.ceil(height / this.rowHeightService.height(0));\n };\n return ScrollerService;\n}());\nexport { ScrollerService };\n//# sourceMappingURL=ScrollerService.js.map","/**\n * @hidden\n */\nexport var Action;\n(function (Action) {\n Action[Action[\"Left\"] = 0] = \"Left\";\n Action[Action[\"Right\"] = 1] = \"Right\";\n Action[Action[\"Up\"] = 2] = \"Up\";\n Action[Action[\"Down\"] = 3] = \"Down\";\n Action[Action[\"PrevView\"] = 4] = \"PrevView\";\n Action[Action[\"NextView\"] = 5] = \"NextView\";\n Action[Action[\"FirstInView\"] = 6] = \"FirstInView\";\n Action[Action[\"LastInView\"] = 7] = \"LastInView\";\n Action[Action[\"LowerView\"] = 8] = \"LowerView\";\n Action[Action[\"UpperView\"] = 9] = \"UpperView\";\n})(Action || (Action = {}));\n//# sourceMappingURL=NavigationAction.js.map","/**\n * The Enum which defines all possible Calendar view types.\n */\nexport var CalendarViewEnum;\n(function (CalendarViewEnum) {\n CalendarViewEnum[CalendarViewEnum[\"month\"] = 0] = \"month\";\n CalendarViewEnum[CalendarViewEnum[\"year\"] = 1] = \"year\";\n CalendarViewEnum[CalendarViewEnum[\"decade\"] = 2] = \"decade\";\n CalendarViewEnum[CalendarViewEnum[\"century\"] = 3] = \"century\";\n})(CalendarViewEnum || (CalendarViewEnum = {}));\n//# sourceMappingURL=CalendarViewEnum.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\n t[p[i]] = s[p[i]];\n return t;\n};\nimport * as React from 'react';\nimport { classNames } from '@progress/kendo-react-common';\n/**\n * @hidden\n */\nvar compareProps = function (x, y) {\n var xProps = Object.getOwnPropertyNames(x);\n var yProps = Object.getOwnPropertyNames(y);\n if (xProps.length !== yProps.length) {\n return false;\n }\n for (var i = 0; i < xProps.length; i++) {\n var propName = xProps[i];\n if (x[propName] !== y[propName]) {\n return false;\n }\n }\n return true;\n};\n/**\n * The `CalendarCell` component is internally used for rendering the items in the current view. Also be used as a custom `cell` of the [Calendar]({% slug api_dateinputs_calendarprops %}#toc-cell) and the [MultiViewCalendar]({% slug api_dateinputs_multiviewcalendarprops %}#toc-cell).\n *\n * * [Customizing the cells inside the Calendar view]({% slug custom_rendering_calendar %}#toc-cells-inside-the-view)\n * * [Customizing the cells inside the MultiViewCalendar view]({% slug custom_rendering_multiviewcalendar %}#toc-cells-inside-the-view)\n */\nvar CalendarCell = /** @class */ (function (_super) {\n __extends(CalendarCell, _super);\n function CalendarCell() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n // tslint:enable:max-line-length\n _this.handleClick = function (event) {\n var _a = _this.props, onClick = _a.onClick, value = _a.value;\n if (onClick) {\n onClick.call(undefined, value, event);\n }\n };\n _this.handleMouseEnter = function () {\n var _a = _this.props, onMouseEnter = _a.onMouseEnter, value = _a.value;\n if (onMouseEnter) {\n onMouseEnter.call(undefined, value);\n }\n };\n _this.handleMouseLeave = function () {\n var _a = _this.props, onMouseLeave = _a.onMouseLeave, value = _a.value;\n if (onMouseLeave) {\n onMouseLeave.call(undefined, value);\n }\n };\n return _this;\n }\n // Manually checking if the component needs an update\n // due to date object being compared by instance\n // and new Date object is created\n // every time and fails the shallow compare of the React.PureComponent.\n /**\n * @hidden\n */\n CalendarCell.prototype.shouldComponentUpdate = function (nextProps) {\n var _a = this.props, value = _a.value, props = __rest(_a, [\"value\"]);\n var newValue = nextProps.value, newProps = __rest(nextProps, [\"value\"]);\n var valueEqual = !(value && newValue) || value.getTime() === newValue.getTime();\n return !(valueEqual && compareProps(props, newProps));\n };\n // tslint:disable:max-line-length\n /**\n * @return\n * Returns a `` element with a `` inside to apply the styles. The text inside is the [`formattedValue`]({% slug api_dateinputs_calendarcellprops %}#toc-formattedvalue) of the `cell`.\n */\n CalendarCell.prototype.render = function () {\n var _a = this.props, className = _a.className, formattedValue = _a.formattedValue, isWeekend = _a.isWeekend, isFocused = _a.isFocused, isSelected = _a.isSelected, isRangeStart = _a.isRangeStart, isRangeMid = _a.isRangeMid, isRangeEnd = _a.isRangeEnd, isRangeSplitStart = _a.isRangeSplitStart, isRangeSplitEnd = _a.isRangeSplitEnd, isToday = _a.isToday, isDisabled = _a.isDisabled, view = _a.view, value = _a.value, other = __rest(_a, [\"className\", \"formattedValue\", \"isWeekend\", \"isFocused\", \"isSelected\", \"isRangeStart\", \"isRangeMid\", \"isRangeEnd\", \"isRangeSplitStart\", \"isRangeSplitEnd\", \"isToday\", \"isDisabled\", \"view\", \"value\"]);\n var isEndActive = this.props.activeRangeEnd === 'end' && isRangeEnd;\n var isStartActive = this.props.activeRangeEnd === 'start' && isRangeStart;\n var rootClassName = classNames({\n 'k-range-end': isRangeEnd,\n 'k-range-mid': isRangeMid,\n 'k-range-split-end': isRangeSplitEnd,\n 'k-range-split-start': isRangeSplitStart,\n 'k-range-start': isRangeStart,\n 'k-state-active': isStartActive || isEndActive,\n 'k-state-pending-focus': isFocused,\n 'k-state-selected': isSelected || isRangeStart || isRangeEnd,\n 'k-today': isToday,\n 'k-weekend': isWeekend,\n 'k-state-disabled': isDisabled\n }, className);\n return (React.createElement(\"td\", __assign({}, other, { className: rootClassName, onClick: this.handleClick, onMouseEnter: this.handleMouseEnter, onMouseLeave: this.handleMouseLeave }),\n React.createElement(\"span\", { className: \"k-link\" }, this.props.children)));\n };\n return CalendarCell;\n}(React.Component));\nexport { CalendarCell };\n//# sourceMappingURL=CalendarCell.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\n/**\n * The `CalendarWeekCell` component is internally used for rendering the week cells inside the `month` view of the Calendar. Also used as a [custom week cell for the Calendar]({% slug api_dateinputs_calendarprops %}#toc-weekcell) and the [MultiViewCalendar]({% slug api_dateinputs_multiviewcalendarprops %}#toc-weekcell) components.\n *\n * * [Customizing week-column cells in the Calendar]({% slug custom_rendering_calendar %}#toc-cells-inside-the-week-column)\n * * [Customizing week-column cells in the MultiViewCalendar]({% slug custom_rendering_multiviewcalendar %}#toc-cells-inside-the-week-column)\n */\nvar CalendarWeekCell = /** @class */ (function (_super) {\n __extends(CalendarWeekCell, _super);\n function CalendarWeekCell() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @return\n * Returns a `` element with the [`value`]({% slug api_dateinputs_calendarweekcellprops %}#toc-value) as a child.\n */\n CalendarWeekCell.prototype.render = function () {\n return (React.createElement(\"td\", __assign({}, this.props), this.props.children));\n };\n return CalendarWeekCell;\n}(React.Component));\nexport { CalendarWeekCell };\n//# sourceMappingURL=CalendarWeekCell.js.map","/**\n * @hidden\n */\nexport var EMPTY_SELECTIONRANGE = { start: null, end: null };\n//# sourceMappingURL=SelectionRange.js.map","var _a;\n/* tslint:disable:object-literal-sort-keys */\nimport { addDecades, addCenturies, cloneDate, durationInCenturies, firstYearOfDecade, firstDecadeOfCentury, lastDecadeOfCentury } from '@progress/kendo-date-math';\nimport { Action, EMPTY_SELECTIONRANGE } from '../models';\nimport { getToday, isInRange, isInSelectionRange, range } from '../../utils';\nvar EMPTY_DATA = [[]];\nvar CELLS_LENGTH = 5;\nvar ROWS_LENGTH = 2;\nvar ACTIONS = (_a = {},\n _a[Action.Left] = function (date) { return addDecades(date, -1); },\n _a[Action.Up] = function (date) { return addDecades(date, -5); },\n _a[Action.Right] = function (date) { return addDecades(date, 1); },\n _a[Action.Down] = function (date) { return addDecades(date, 5); },\n _a[Action.PrevView] = function (date) { return addCenturies(date, -1); },\n _a[Action.NextView] = function (date) { return addCenturies(date, 1); },\n _a[Action.FirstInView] = function (date) { return firstDecadeOfCentury(date); },\n _a[Action.LastInView] = function (date) { return lastDecadeOfCentury(date); },\n _a);\n/**\n * @hidden\n */\nvar CenturyViewService = /** @class */ (function () {\n function CenturyViewService() {\n }\n CenturyViewService.prototype.addToDate = function (min, skip) {\n return addCenturies(min, skip);\n };\n CenturyViewService.prototype.datesList = function (start, count) {\n return range(0, count).map(function (i) { return addCenturies(start, i); });\n };\n CenturyViewService.prototype.data = function (options) {\n var _this = this;\n var cellUID = options.cellUID, focusedDate = options.focusedDate, isActiveView = options.isActiveView, max = options.max, min = options.min, selectedDate = options.selectedDate, _a = options.selectionRange, selectionRange = _a === void 0 ? EMPTY_SELECTIONRANGE : _a, viewDate = options.viewDate;\n if (!viewDate) {\n return EMPTY_DATA;\n }\n var cells = range(0, CELLS_LENGTH);\n var firstDate = firstDecadeOfCentury(viewDate);\n var lastDate = lastDecadeOfCentury(viewDate);\n var today = getToday();\n return range(0, ROWS_LENGTH).map(function (rowOffset) {\n var baseDate = addDecades(firstDate, rowOffset * CELLS_LENGTH);\n return cells.map(function (cellOffset) {\n var cellDate = _this.normalize(addDecades(baseDate, cellOffset), min, max);\n if (!_this.isInRange(cellDate, min, max)) {\n return null;\n }\n var isRangeStart = _this.isEqual(cellDate, selectionRange.start);\n var isRangeEnd = _this.isEqual(cellDate, selectionRange.end);\n var isInMiddle = !isRangeStart && !isRangeEnd;\n var isRangeMid = isInMiddle && isInSelectionRange(cellDate, selectionRange);\n var isSelected = isActiveView && (!Array.isArray(selectedDate)\n ? isInRange(selectedDate, min, max) && _this.isEqual(cellDate, selectedDate)\n : _this.isSelectedFromArray(cellDate, selectedDate, min, max));\n return {\n formattedValue: _this.value(cellDate),\n id: \"\" + cellUID + cellDate.getTime(),\n isFocused: _this.isEqual(cellDate, focusedDate),\n isSelected: isSelected,\n isWeekend: false,\n isRangeStart: isRangeStart,\n isRangeMid: isRangeMid,\n isRangeEnd: isRangeEnd,\n isRangeSplitEnd: isRangeMid && _this.isEqual(cellDate, lastDate),\n isRangeSplitStart: isRangeMid && _this.isEqual(cellDate, firstDate),\n isToday: _this.isEqual(cellDate, today),\n title: _this.cellTitle(cellDate),\n value: cellDate\n };\n });\n });\n };\n CenturyViewService.prototype.isSelectedFromArray = function (candidate, dates, min, max) {\n var _this = this;\n var result = false;\n dates.forEach(function (date) {\n if (isInRange(candidate, min, max) && _this.isEqual(candidate, date)) {\n result = true;\n }\n });\n return result;\n };\n CenturyViewService.prototype.isEqual = function (candidate, expected) {\n if (!candidate || !expected) {\n return false;\n }\n // TODO: double-check this!\n return firstYearOfDecade(candidate).getFullYear() === firstYearOfDecade(expected).getFullYear();\n };\n CenturyViewService.prototype.isInArray = function (date, dates) {\n if (!dates.length) {\n return false;\n }\n var year = date.getFullYear();\n return dates[0].getFullYear() <= year && year <= (dates[dates.length - 1].getFullYear() + 99);\n };\n CenturyViewService.prototype.isInRange = function (candidate, min, max) {\n var year = firstYearOfDecade(candidate).getFullYear();\n var aboveMin = !min || firstYearOfDecade(min).getFullYear() <= year;\n var belowMax = !max || year <= firstYearOfDecade(max).getFullYear();\n return aboveMin && belowMax;\n };\n CenturyViewService.prototype.isInSameView = function (candidate, value) {\n return durationInCenturies(candidate, value) === 0;\n };\n CenturyViewService.prototype.isRangeStart = function (value) {\n return value.getFullYear() % 1000 === 0;\n };\n CenturyViewService.prototype.move = function (value, action) {\n var modifier = ACTIONS[action];\n if (!modifier) {\n return value;\n }\n return modifier(value);\n };\n CenturyViewService.prototype.cellTitle = function (value) {\n return firstYearOfDecade(value).getFullYear().toString();\n };\n CenturyViewService.prototype.navigationTitle = function (value) {\n return value ? firstDecadeOfCentury(value).getFullYear().toString() : '';\n };\n CenturyViewService.prototype.title = function (value) {\n if (!value) {\n return '';\n }\n return firstDecadeOfCentury(value).getFullYear() + \" - \" + lastDecadeOfCentury(value).getFullYear();\n };\n CenturyViewService.prototype.rowLength = function (_) {\n return CELLS_LENGTH;\n };\n CenturyViewService.prototype.skip = function (value, min) {\n return durationInCenturies(min, value);\n };\n CenturyViewService.prototype.total = function (min, max) {\n return durationInCenturies(min, max) + 1;\n };\n CenturyViewService.prototype.value = function (current) {\n return current ? firstYearOfDecade(current).getFullYear().toString() : '';\n };\n CenturyViewService.prototype.viewDate = function (date, max, border) {\n if (border === void 0) { border = 1; }\n var renderTwoViews = durationInCenturies(date, max) < border;\n return renderTwoViews ? addCenturies(date, -1) : date;\n };\n CenturyViewService.prototype.normalize = function (cellDate, min, max) {\n if (cellDate < min && this.isEqual(cellDate, min)) {\n return cloneDate(min);\n }\n if (cellDate > max && this.isEqual(cellDate, max)) {\n return cloneDate(max);\n }\n return cellDate;\n };\n return CenturyViewService;\n}());\nexport { CenturyViewService };\n//# sourceMappingURL=CenturyViewService.js.map","var _a;\nimport { addDecades, addYears, cloneDate, durationInDecades, firstYearOfDecade, lastYearOfDecade } from '@progress/kendo-date-math';\nimport { Action } from '../models/NavigationAction';\nimport { EMPTY_SELECTIONRANGE } from '../models/SelectionRange';\nimport { getToday, isInRange, isInSelectionRange, range } from '../../utils';\nvar EMPTY_DATA = [[]];\nvar CELLS_LENGTH = 5;\nvar ROWS_LENGTH = 2;\nvar ACTIONS = (_a = {},\n _a[Action.Left] = function (date) { return addYears(date, -1); },\n _a[Action.Up] = function (date) { return addYears(date, -5); },\n _a[Action.Right] = function (date) { return addYears(date, 1); },\n _a[Action.Down] = function (date) { return addYears(date, 5); },\n _a[Action.PrevView] = function (date) { return addDecades(date, -1); },\n _a[Action.NextView] = function (date) { return addDecades(date, 1); },\n _a[Action.FirstInView] = function (date) { return firstYearOfDecade(date); },\n _a[Action.LastInView] = function (date) { return lastYearOfDecade(date); },\n _a);\n/**\n * @hidden\n */\nvar DecadeViewService = /** @class */ (function () {\n function DecadeViewService() {\n }\n DecadeViewService.prototype.addToDate = function (min, skip) {\n return addDecades(min, skip);\n };\n DecadeViewService.prototype.datesList = function (start, count) {\n return range(0, count).map(function (i) { return addDecades(start, i); });\n };\n DecadeViewService.prototype.data = function (options) {\n var _this = this;\n var cellUID = options.cellUID, focusedDate = options.focusedDate, isActiveView = options.isActiveView, max = options.max, min = options.min, selectedDate = options.selectedDate, _a = options.selectionRange, selectionRange = _a === void 0 ? EMPTY_SELECTIONRANGE : _a, viewDate = options.viewDate;\n if (!viewDate) {\n return EMPTY_DATA;\n }\n var cells = range(0, CELLS_LENGTH);\n var firstDate = firstYearOfDecade(viewDate);\n var lastDate = lastYearOfDecade(viewDate);\n var today = getToday();\n return range(0, ROWS_LENGTH).map(function (rowOffset) {\n var baseDate = addYears(firstDate, rowOffset * CELLS_LENGTH);\n return cells.map(function (cellOffset) {\n var cellDate = _this.normalize(addYears(baseDate, cellOffset), min, max);\n if (!_this.isInRange(cellDate, min, max)) {\n return null;\n }\n var isRangeStart = _this.isEqual(cellDate, selectionRange.start);\n var isRangeEnd = _this.isEqual(cellDate, selectionRange.end);\n var isInMiddle = !isRangeStart && !isRangeEnd;\n var isRangeMid = isInMiddle && isInSelectionRange(cellDate, selectionRange);\n var isSelected = isActiveView && (!Array.isArray(selectedDate)\n ? isInRange(selectedDate, min, max) && _this.isEqual(cellDate, selectedDate)\n : _this.isSelectedFromArray(cellDate, selectedDate, min, max));\n return {\n formattedValue: _this.value(cellDate),\n id: \"\" + cellUID + cellDate.getTime(),\n isFocused: _this.isEqual(cellDate, focusedDate),\n isSelected: isSelected,\n isWeekend: false,\n isRangeStart: isRangeStart,\n isRangeMid: isRangeMid,\n isRangeEnd: isRangeEnd,\n isRangeSplitEnd: isRangeMid && _this.isEqual(cellDate, lastDate),\n isRangeSplitStart: isRangeMid && _this.isEqual(cellDate, firstDate),\n isToday: _this.isEqual(cellDate, today),\n title: _this.cellTitle(cellDate),\n value: cellDate\n };\n });\n });\n };\n DecadeViewService.prototype.isSelectedFromArray = function (candidate, dates, min, max) {\n var _this = this;\n var result = false;\n dates.forEach(function (date) {\n if (isInRange(candidate, min, max) && _this.isEqual(candidate, date)) {\n result = true;\n }\n });\n return result;\n };\n DecadeViewService.prototype.isEqual = function (candidate, expected) {\n if (!candidate || !expected) {\n return false;\n }\n return candidate.getFullYear() === expected.getFullYear();\n };\n DecadeViewService.prototype.isInArray = function (date, dates) {\n if (!dates.length) {\n return false;\n }\n var year = date.getFullYear();\n return dates[0].getFullYear() <= year && year <= (dates[dates.length - 1].getFullYear() + 9);\n };\n DecadeViewService.prototype.isInRange = function (candidate, min, max) {\n var year = candidate.getFullYear();\n var aboveMin = !min || min.getFullYear() <= year;\n var belowMax = !max || year <= max.getFullYear();\n return aboveMin && belowMax;\n };\n DecadeViewService.prototype.isRangeStart = function (value) {\n return value.getFullYear() % 100 === 0;\n };\n DecadeViewService.prototype.isInSameView = function (candidate, value) {\n return durationInDecades(candidate, value) === 0;\n };\n DecadeViewService.prototype.move = function (value, action) {\n var modifier = ACTIONS[action];\n if (!modifier) {\n return value;\n }\n return modifier(value);\n };\n DecadeViewService.prototype.cellTitle = function (value) {\n return value.getFullYear().toString();\n };\n DecadeViewService.prototype.navigationTitle = function (value) {\n return value ? firstYearOfDecade(value).getFullYear().toString() : '';\n };\n DecadeViewService.prototype.title = function (value) {\n if (!value) {\n return '';\n }\n return firstYearOfDecade(value).getFullYear() + \" - \" + lastYearOfDecade(value).getFullYear();\n };\n DecadeViewService.prototype.rowLength = function (_) {\n return CELLS_LENGTH;\n };\n DecadeViewService.prototype.skip = function (value, min) {\n return durationInDecades(min, value);\n };\n DecadeViewService.prototype.total = function (min, max) {\n return durationInDecades(min, max) + 1;\n };\n DecadeViewService.prototype.value = function (current) {\n return current ? current.getFullYear().toString() : '';\n };\n DecadeViewService.prototype.viewDate = function (date, max, border) {\n if (border === void 0) { border = 1; }\n var renderTwoViews = durationInDecades(date, max) < border;\n return renderTwoViews ? addDecades(date, -1) : date;\n };\n DecadeViewService.prototype.normalize = function (cellDate, min, max) {\n if (cellDate < min && this.isEqual(cellDate, min)) {\n return cloneDate(min);\n }\n if (cellDate > max && this.isEqual(cellDate, max)) {\n return cloneDate(max);\n }\n return cellDate;\n };\n return DecadeViewService;\n}());\nexport { DecadeViewService };\n//# sourceMappingURL=DecadeViewService.js.map","var _a;\nimport { addDays, addWeeks, addMonths, dayOfWeek, durationInMonths, getDate, firstDayOfMonth, lastDayOfMonth } from '@progress/kendo-date-math';\nimport { Action } from '../models/NavigationAction';\nimport { EMPTY_SELECTIONRANGE } from '../models/SelectionRange';\nimport { getToday, isInRange, isInSelectionRange, range } from '../../utils';\nvar EMPTY_DATA = [[]];\nvar CELLS_LENGTH = 7;\nvar ROWS_LENGTH = 6;\nvar SATURDAY = 6;\nvar SUNDAY = 0;\nvar ACTIONS = (_a = {},\n _a[Action.Left] = function (date) { return addDays(date, -1); },\n _a[Action.Up] = function (date) { return addWeeks(date, -1); },\n _a[Action.Right] = function (date) { return addDays(date, 1); },\n _a[Action.Down] = function (date) { return addWeeks(date, 1); },\n _a[Action.PrevView] = function (date) { return addMonths(date, -1); },\n _a[Action.NextView] = function (date) { return addMonths(date, 1); },\n _a[Action.FirstInView] = function (date) { return firstDayOfMonth(date); },\n _a[Action.LastInView] = function (date) { return lastDayOfMonth(date); },\n _a);\n/**\n * @hidden\n */\nvar MonthViewService = /** @class */ (function () {\n function MonthViewService(intl) {\n this.intl = intl;\n }\n MonthViewService.prototype.addToDate = function (min, skip) {\n return addMonths(min, skip);\n };\n MonthViewService.prototype.datesList = function (start, count) {\n return range(0, count).map(function (i) { return addMonths(start, i); });\n };\n MonthViewService.prototype.data = function (options) {\n var _this = this;\n var cellUID = options.cellUID, focusedDate = options.focusedDate, isActiveView = options.isActiveView, max = options.max, min = options.min, selectedDate = options.selectedDate, _a = options.selectionRange, selectionRange = _a === void 0 ? EMPTY_SELECTIONRANGE : _a, viewDate = options.viewDate;\n if (!viewDate) {\n return EMPTY_DATA;\n }\n var firstMonthDate = firstDayOfMonth(viewDate);\n var lastMonthDate = lastDayOfMonth(viewDate);\n var backward = -1;\n var date = dayOfWeek(firstMonthDate, this.intl.firstDay(), backward);\n var cells = range(0, CELLS_LENGTH);\n var today = getToday();\n return range(0, ROWS_LENGTH).map(function (rowOffset) {\n var baseDate = addDays(date, rowOffset * CELLS_LENGTH);\n return cells.map(function (cellOffset) {\n var cellDate = _this.normalize(addDays(baseDate, cellOffset), min, max);\n var otherMonth = cellDate < firstMonthDate || cellDate > lastMonthDate;\n var outOfRange = cellDate < min || cellDate > max;\n if (otherMonth || outOfRange) {\n return null;\n }\n var isRangeStart = _this.isEqual(cellDate, selectionRange.start);\n var isRangeEnd = _this.isEqual(cellDate, selectionRange.end);\n var isInMiddle = !isRangeStart && !isRangeEnd;\n var isRangeMid = isInMiddle && isInSelectionRange(cellDate, selectionRange);\n var isSelected = isActiveView && (!Array.isArray(selectedDate)\n ? isInRange(selectedDate, min, max) && _this.isEqual(cellDate, selectedDate)\n : _this.isSelectedFromArray(cellDate, selectedDate, min, max));\n return {\n formattedValue: _this.value(cellDate),\n id: \"\" + cellUID + cellDate.getTime(),\n isFocused: _this.isEqual(cellDate, focusedDate),\n isSelected: isSelected,\n isWeekend: _this.isWeekend(cellDate),\n isRangeStart: isRangeStart,\n isRangeMid: isRangeMid,\n isRangeEnd: isRangeEnd,\n isRangeSplitStart: isRangeMid && _this.isEqual(cellDate, firstMonthDate),\n isRangeSplitEnd: isRangeMid && _this.isEqual(cellDate, lastMonthDate),\n isToday: _this.isEqual(cellDate, today),\n title: _this.cellTitle(cellDate),\n value: cellDate\n };\n });\n });\n };\n MonthViewService.prototype.isEqual = function (candidate, expected) {\n if (!candidate || !expected) {\n return false;\n }\n return getDate(candidate).getTime() === getDate(expected).getTime();\n };\n MonthViewService.prototype.isSelectedFromArray = function (candidate, dates, min, max) {\n var _this = this;\n var result = false;\n dates.forEach(function (date) {\n if (isInRange(candidate, min, max) && _this.isEqual(candidate, date)) {\n result = true;\n }\n });\n return result;\n };\n MonthViewService.prototype.isInArray = function (date, dates) {\n return !!dates.length && firstDayOfMonth(dates[0]) <= date && date <= lastDayOfMonth(dates[dates.length - 1]);\n };\n MonthViewService.prototype.isInRange = function (candidate, min, max) {\n var value = getDate(candidate);\n var aboveMin = !min || getDate(min) <= value;\n var belowMax = !max || value <= getDate(max);\n return aboveMin && belowMax;\n };\n MonthViewService.prototype.isInSameView = function (candidate, value) {\n return durationInMonths(candidate, value) === 0;\n };\n MonthViewService.prototype.isRangeStart = function (value) {\n return !value.getMonth();\n };\n MonthViewService.prototype.move = function (value, action) {\n var modifier = ACTIONS[action];\n if (!modifier) {\n return value;\n }\n return modifier(value);\n };\n MonthViewService.prototype.cellTitle = function (value) {\n return this.intl.formatDate(value, 'D');\n };\n MonthViewService.prototype.navigationTitle = function (value) {\n if (!value) {\n return '';\n }\n return this.isRangeStart(value) ? value.getFullYear().toString() : this.abbrMonthNames()[value.getMonth()];\n };\n MonthViewService.prototype.title = function (current) {\n return this.wideMonthNames()[current.getMonth()] + \" \" + current.getFullYear();\n };\n MonthViewService.prototype.rowLength = function (prependCell) {\n return CELLS_LENGTH + (prependCell ? 1 : 0);\n };\n MonthViewService.prototype.skip = function (value, min) {\n return durationInMonths(min, value);\n };\n MonthViewService.prototype.total = function (min, max) {\n return durationInMonths(min, max) + 1;\n };\n MonthViewService.prototype.value = function (current) {\n return current ? current.getDate().toString() : '';\n };\n MonthViewService.prototype.viewDate = function (date, max, border) {\n if (border === void 0) { border = 1; }\n var renderTwoViews = durationInMonths(date, max) < border;\n return renderTwoViews ? addMonths(date, -1) : date;\n };\n MonthViewService.prototype.isWeekend = function (date) {\n var day = date.getDay();\n return day === SATURDAY || day === SUNDAY;\n };\n MonthViewService.prototype.abbrMonthNames = function () {\n return this.intl.dateFormatNames({ nameType: 'abbreviated', type: 'months' });\n };\n MonthViewService.prototype.normalize = function (cellDate, min, max) {\n if (cellDate < min && this.isEqual(cellDate, min)) {\n return getDate(min);\n }\n if (cellDate > max && this.isEqual(cellDate, max)) {\n return getDate(max);\n }\n return cellDate;\n };\n MonthViewService.prototype.wideMonthNames = function () {\n return this.intl.dateFormatNames({ nameType: 'wide', type: 'months' });\n };\n return MonthViewService;\n}());\nexport { MonthViewService };\n//# sourceMappingURL=MonthViewService.js.map","var _a;\nimport { addMonths, addYears, cloneDate, createDate, durationInYears, firstMonthOfYear, lastMonthOfYear } from '@progress/kendo-date-math';\nimport { Action } from '../models/NavigationAction';\nimport { getToday, isInRange, isInSelectionRange, range } from '../../utils';\nimport { EMPTY_SELECTIONRANGE } from '../models/SelectionRange';\nvar EMPTY_DATA = [[]];\nvar CELLS_LENGTH = 5;\nvar ROWS_LENGTH = 3;\nvar upStep = function (month) {\n if (month > 4) {\n return -5;\n }\n if (month < 2) {\n return -2;\n }\n return -7;\n};\nvar downStep = function (month) {\n if (month < 7) {\n return 5;\n }\n if (month < 10) {\n return 7;\n }\n return 2;\n};\nvar ACTIONS = (_a = {},\n _a[Action.Left] = function (date) { return addMonths(date, -1); },\n _a[Action.Up] = function (date) { return addMonths(date, upStep(date.getMonth())); },\n _a[Action.Right] = function (date) { return addMonths(date, 1); },\n _a[Action.Down] = function (date) { return addMonths(date, downStep(date.getMonth())); },\n _a[Action.PrevView] = function (date) { return addYears(date, -1); },\n _a[Action.NextView] = function (date) { return addYears(date, 1); },\n _a[Action.FirstInView] = function (date) { return firstMonthOfYear(date); },\n _a[Action.LastInView] = function (date) { return lastMonthOfYear(date); },\n _a);\n/**\n * @hidden\n */\nvar YearViewService = /** @class */ (function () {\n function YearViewService(intl) {\n this._intl = intl;\n }\n YearViewService.prototype.addToDate = function (min, skip) {\n return addYears(min, skip);\n };\n YearViewService.prototype.datesList = function (start, count) {\n return range(0, count).map(function (i) { return addYears(start, i); });\n };\n YearViewService.prototype.data = function (options) {\n var _this = this;\n var cellUID = options.cellUID, focusedDate = options.focusedDate, isActiveView = options.isActiveView, max = options.max, min = options.min, selectedDate = options.selectedDate, _a = options.selectionRange, selectionRange = _a === void 0 ? EMPTY_SELECTIONRANGE : _a, viewDate = options.viewDate;\n if (!viewDate) {\n return EMPTY_DATA;\n }\n var months = this.abbrMonthNames();\n var firstDate = firstMonthOfYear(viewDate);\n var lastDate = lastMonthOfYear(viewDate);\n var currentYear = firstDate.getFullYear();\n var cells = range(0, CELLS_LENGTH);\n var today = getToday();\n return range(0, ROWS_LENGTH).map(function (rowOffset) {\n var baseDate = addMonths(firstDate, rowOffset * CELLS_LENGTH);\n return cells.map(function (cellOffset) {\n var cellDate = _this.normalize(addMonths(baseDate, cellOffset), min, max);\n var changedYear = currentYear < cellDate.getFullYear();\n if (!_this.isInRange(cellDate, min, max) || changedYear) {\n return null;\n }\n var isRangeStart = _this.isEqual(cellDate, selectionRange.start);\n var isRangeEnd = _this.isEqual(cellDate, selectionRange.end);\n var isInMiddle = !isRangeStart && !isRangeEnd;\n var isRangeMid = isInMiddle && isInSelectionRange(cellDate, selectionRange);\n var isSelected = isActiveView && (!Array.isArray(selectedDate)\n ? isInRange(selectedDate, min, max) && _this.isEqual(cellDate, selectedDate)\n : _this.isSelectedFromArray(cellDate, selectedDate, min, max));\n return {\n formattedValue: months[cellDate.getMonth()],\n id: \"\" + cellUID + cellDate.getTime(),\n isFocused: _this.isEqual(cellDate, focusedDate),\n isSelected: isSelected,\n isWeekend: false,\n isRangeStart: isRangeStart,\n isRangeMid: isRangeMid,\n isRangeEnd: isRangeEnd,\n isRangeSplitEnd: isRangeMid && _this.isEqual(cellDate, lastDate),\n isRangeSplitStart: isRangeMid && _this.isEqual(cellDate, firstDate),\n isToday: _this.isEqual(cellDate, today),\n title: _this.cellTitle(cellDate),\n value: cellDate\n };\n });\n });\n };\n YearViewService.prototype.isSelectedFromArray = function (candidate, dates, min, max) {\n var _this = this;\n var result = false;\n dates.forEach(function (date) {\n if (isInRange(candidate, min, max) && _this.isEqual(candidate, date)) {\n result = true;\n }\n });\n return result;\n };\n YearViewService.prototype.isEqual = function (candidate, expected) {\n if (!candidate || !expected) {\n return false;\n }\n return candidate.getFullYear() === expected.getFullYear() &&\n candidate.getMonth() === expected.getMonth();\n };\n YearViewService.prototype.isInArray = function (date, dates) {\n if (!dates.length) {\n return false;\n }\n var year = date.getFullYear();\n return dates[0].getFullYear() <= year && year <= dates[dates.length - 1].getFullYear();\n };\n YearViewService.prototype.isInRange = function (candidate, min, max) {\n var candidateValue = createDate(candidate.getFullYear(), candidate.getMonth(), 1);\n var aboveMin = !min || createDate(min.getFullYear(), min.getMonth(), 1) <= candidateValue;\n var belowMax = !max || candidateValue <= createDate(max.getFullYear(), max.getMonth(), 1);\n return aboveMin && belowMax;\n };\n YearViewService.prototype.isInSameView = function (candidate, value) {\n return durationInYears(candidate, value) === 0;\n };\n YearViewService.prototype.isRangeStart = function (value) {\n return value.getFullYear() % 10 === 0;\n };\n YearViewService.prototype.move = function (value, action) {\n var modifier = ACTIONS[action];\n if (!modifier) {\n return value;\n }\n return modifier(value);\n };\n YearViewService.prototype.cellTitle = function (value) {\n return value.getFullYear() + \" \" + this.value(value);\n };\n YearViewService.prototype.navigationTitle = function (value) {\n return this.title(value);\n };\n YearViewService.prototype.title = function (current) {\n return current ? current.getFullYear().toString() : '';\n };\n YearViewService.prototype.rowLength = function (_) {\n return CELLS_LENGTH;\n };\n YearViewService.prototype.skip = function (value, min) {\n return durationInYears(min, value);\n };\n YearViewService.prototype.total = function (min, max) {\n return durationInYears(min, max) + 1;\n };\n YearViewService.prototype.value = function (current) {\n return current ? this.abbrMonthNames()[current.getMonth()] : '';\n };\n YearViewService.prototype.viewDate = function (date, max, border) {\n if (border === void 0) { border = 1; }\n var renderTwoViews = durationInYears(date, max) < border;\n return renderTwoViews ? addYears(date, -1) : date;\n };\n YearViewService.prototype.abbrMonthNames = function () {\n return this._intl.dateFormatNames({ nameType: 'abbreviated', type: 'months' });\n };\n YearViewService.prototype.normalize = function (cellDate, min, max) {\n if (cellDate < min && this.isEqual(cellDate, min)) {\n return cloneDate(min);\n }\n if (cellDate > max && this.isEqual(cellDate, max)) {\n return cloneDate(max);\n }\n return cellDate;\n };\n return YearViewService;\n}());\nexport { YearViewService };\n//# sourceMappingURL=YearViewService.js.map","var _a;\nimport { CenturyViewService } from './CenturyViewService';\nimport { DecadeViewService } from './DecadeViewService';\nimport { MonthViewService } from './MonthViewService';\nimport { YearViewService } from './YearViewService';\nimport { CalendarViewEnum } from '../models/CalendarViewEnum';\nvar services = (_a = {},\n _a[CalendarViewEnum.month] = MonthViewService,\n _a[CalendarViewEnum.year] = YearViewService,\n _a[CalendarViewEnum.decade] = DecadeViewService,\n _a[CalendarViewEnum.century] = CenturyViewService,\n _a);\nvar viewOffset = function (view, offset) {\n var candidate = CalendarViewEnum[CalendarViewEnum[view + offset]];\n return candidate !== undefined ? candidate : view;\n};\n/**\n * @hidden\n */\nvar BusViewService = /** @class */ (function () {\n function BusViewService(onViewChanged) {\n this.bottom = CalendarViewEnum.month;\n this.top = CalendarViewEnum.century;\n this.onViewChanged = onViewChanged;\n }\n BusViewService.prototype.configure = function (bottom, top) {\n this.bottom = bottom;\n this.top = top;\n };\n BusViewService.prototype.service = function (view, intl) {\n return new services[\"\" + view](intl);\n };\n BusViewService.prototype.moveDown = function (view, event) {\n this.move(view, -1, event);\n };\n BusViewService.prototype.moveUp = function (view, event) {\n this.move(view, 1, event);\n };\n BusViewService.prototype.moveToBottom = function (activeView) {\n if (activeView === this.bottom) {\n return;\n }\n this.onViewChanged({ view: this.bottom });\n };\n BusViewService.prototype.canMoveDown = function (view) {\n return this.bottom < view;\n };\n BusViewService.prototype.canMoveUp = function (view) {\n return view < this.top;\n };\n BusViewService.prototype.clamp = function (view) {\n if (view < this.bottom) {\n return this.bottom;\n }\n if (view > this.top) {\n return this.top;\n }\n return view;\n };\n BusViewService.prototype.move = function (view, offset, event) {\n var candidate = this.clamp(viewOffset(view, offset));\n if (candidate === view) {\n return;\n }\n this.onViewChanged({ view: candidate }, event);\n };\n return BusViewService;\n}());\nexport { BusViewService };\n//# sourceMappingURL=BusViewService.js.map","import { cloneDate, isEqual } from '@progress/kendo-date-math';\nimport { getDate } from '@progress/kendo-date-math';\nimport { EMPTY_SELECTIONRANGE } from './calendar/models/SelectionRange';\n/**\n * @hidden\n */\nexport var isEqualRange = function (initial, updated) {\n var _a = initial || EMPTY_SELECTIONRANGE, initialStart = _a.start, initialEnd = _a.end;\n var _b = updated || EMPTY_SELECTIONRANGE, updatedStart = _b.start, updatedEnd = _b.end;\n if (initialStart === null || initialEnd === null || updatedStart === null || updatedEnd === null) {\n return false;\n }\n return isEqual(initialStart, updatedStart) && isEqual(initialEnd, updatedEnd);\n};\n/**\n * @hidden\n */\nexport var viewInRange = function (candidate, min, max) {\n if (min === undefined || max === undefined) {\n return candidate;\n }\n return min <= candidate && candidate <= max\n ? candidate\n : candidate < min\n ? min\n : max;\n};\n/**\n * @hidden\n */\nexport var MIDNIGHT_DATE = new Date(1980, 0, 1);\n/**\n * @hidden\n */\nexport var MIN_DATE = new Date(1900, 0, 1);\n/**\n * @hidden\n */\nexport var MAX_DATE = new Date(2099, 11, 31);\n/**\n * @hidden\n */\nexport var MIN_TIME = new Date(1980, 0, 1);\n/**\n * @hidden\n */\nexport var MAX_TIME = new Date(1980, 0, 1, 23, 59, 59);\nvar isSet = function (value) { return value !== null && value !== undefined; };\n/**\n * @hidden\n */\nexport var isValidRange = function (min, max) { return (!isSet(min) || !isSet(max) || min <= max); };\n/**\n * @hidden\n */\nexport var setTime = function (origin, candidate) {\n var date = cloneDate(origin);\n date.setHours(candidate.getHours(), candidate.getMinutes(), candidate.getSeconds(), candidate.getMilliseconds());\n return date;\n};\n/**\n * @hidden\n */\nexport var getToday = function () { return getDate(new Date()); };\n/**\n * @hidden\n */\nexport var isInRange = function (candidate, min, max) { return (!candidate || !((min && min > candidate) || (max && max < candidate))); };\n/**\n * @hidden\n */\nexport var isInDateRange = function (candidate, min, max) { return (candidate === null\n || !((min && getDate(min) > getDate(candidate))\n || (max && getDate(max) < getDate(candidate)))); };\n/**\n * @hidden\n */\nexport var isInSelectionRange = function (value, selectionRange) {\n var _a = selectionRange || EMPTY_SELECTIONRANGE, start = _a.start, end = _a.end;\n if (!start || !end) {\n return false;\n }\n return start < value && value < end;\n};\n/**\n * @hidden\n */\nexport var range = function (start, end, step) {\n if (step === void 0) { step = 1; }\n var result = [];\n for (var i = start; i < end; i = i + step) {\n result.push(i);\n }\n return result;\n};\n/**\n * @hidden\n */\nexport var shiftWeekNames = function (names, offset) { return (names.slice(offset).concat(names.slice(0, offset))); };\n/**\n * @hidden\n */\nexport var dateInRange = function (candidate, min, max) {\n if (!candidate) {\n return candidate;\n }\n if (min && candidate < min) {\n return cloneDate(min);\n }\n if (max && candidate > max) {\n return cloneDate(max);\n }\n return candidate;\n};\n/**\n * @hidden\n */\nexport var domContainerFactory = function (type) { return function (children, classes, styles) {\n if (classes === void 0) { classes = ''; }\n if (styles === void 0) { styles = {}; }\n var container = document.createElement(type);\n container.className = classes;\n Object.keys(styles).map(function (key) { return container.style[key] = styles[key]; });\n if (typeof children === 'string') {\n container.innerHTML = children || '';\n }\n else {\n (children || []).forEach(function (child) { return child && container.appendChild(child); });\n }\n return container;\n}; };\n//# sourceMappingURL=utils.js.map","import { CalendarViewEnum } from '../models/CalendarViewEnum';\nimport { domContainerFactory as containerFactory } from '../../utils';\nimport { canUseDOM } from '@progress/kendo-react-common';\n/**\n * @hidden\n */\nvar DOMService = /** @class */ (function () {\n function DOMService() {\n this.didCalculate = false;\n }\n DOMService.prototype.ensureHeights = function () {\n if (this.calendarHeight !== undefined) {\n return;\n }\n this.calculateHeights();\n };\n DOMService.prototype.calculateHeights = function (container) {\n var _this = this;\n if (!canUseDOM) {\n return;\n }\n var div = containerFactory('div');\n var ul = containerFactory('ul');\n var li = containerFactory('li');\n var td = containerFactory('td');\n var th = containerFactory('th');\n var tr = containerFactory('tr');\n var tbody = containerFactory('tbody');\n var thead = containerFactory('thead');\n var table = containerFactory('table');\n var monthHeader = function () { return (div(\"\\n March 2017\\n TODAY\\n \", 'k-calendar-header')); };\n var monthWeekHeader = function () { return (table([\n thead([\n tr([th('MO')])\n ])\n ], 'k-calendar-weekdays')); };\n var repeat = function (count, mapper) { return new Array(count).fill('1').map(mapper); };\n var content = function (rows, cells) {\n if (cells === void 0) { cells = 1; }\n return (table([\n tbody([tr([th('1')])].concat(repeat(rows, function () { return tr(repeat(cells, function (c) { return td(\"\" + c + \"\"); })); })))\n ]));\n };\n var scrollable = function (children) { return div(children, 'k-content k-scrollable'); };\n var view = function (contentElement, className, renderWeekHeader) { return (div(renderWeekHeader\n ? [\n monthHeader(),\n monthWeekHeader(),\n scrollable([contentElement, contentElement])\n ]\n : [\n monthHeader(),\n scrollable([contentElement, contentElement])\n ], className, { left: '-10000px', position: 'absolute' })); };\n var navigationList = (function () {\n var navElement;\n return function () {\n if (!canUseDOM) {\n return null;\n }\n if (!navElement) {\n navElement = div([scrollable([ul([li('FEB')])])], 'k-calendar-navigation', { left: '0px', position: 'absolute' });\n }\n return navElement;\n };\n })();\n var viewFactory = function (_a, className, renderWeekHeader) {\n var cells = _a.cells, rows = _a.rows;\n var viewElement;\n return function () {\n if (!canUseDOM) {\n return null;\n }\n if (!viewElement) {\n viewElement = view(content(rows, cells), className, renderWeekHeader);\n }\n return viewElement;\n };\n };\n var getScrollable = function (element) { return element.querySelector('.k-scrollable'); };\n var horizontal = function (element) {\n var scrollableElement = getScrollable(element);\n scrollableElement.className = scrollableElement.className + \" k-scrollable-horizontal\";\n return element;\n };\n var monthView = viewFactory({ cells: 7, rows: 6 }, 'k-calendar-view k-calendar-monthview', true);\n var yearView = viewFactory({ cells: 5, rows: 3 }, 'k-calendar-view k-calendar-yearview', false);\n var decadeView = viewFactory({ cells: 5, rows: 2 }, 'k-calendar-view k-calendar-decadeview', false);\n var horzMonthView = function () { return horizontal(monthView()); };\n var horzYearView = function () { return horizontal(yearView()); };\n var horzDecadeView = function () { return horizontal(decadeView()); };\n var height = function (element) { return (parseFloat(window.getComputedStyle(element).height) || element.offsetHeight); };\n var width = function (element) {\n var styles = window.getComputedStyle(element);\n var computed = parseFloat(styles.width)\n + parseFloat(styles.paddingLeft)\n + parseFloat(styles.paddingRight);\n return computed || element.offsetWidth;\n };\n var getBody = function (element) { return element.querySelector('tbody'); };\n this.didCalculate = true;\n if (container) {\n this.hostContainer = container;\n }\n this.batch(monthView(), function (contentElement) {\n var viewElement = getBody(contentElement);\n _this.calendarHeight = height(contentElement);\n _this.monthViewHeight = height(viewElement);\n _this.headerHeight = height(viewElement.children[0]);\n _this.scrollableContentHeight = height(getScrollable(contentElement));\n });\n this.batch(horzMonthView(), function (contentElement) {\n var viewElement = getBody(contentElement);\n _this.calendarWidth = width(contentElement);\n _this.monthViewWidth = width(viewElement);\n _this.scrollableContentWidth = width(getScrollable(contentElement));\n });\n this.batch(yearView(), function (contentElement) {\n _this.yearViewHeight = height(getBody(contentElement));\n _this.scrollableYearContentHeight = height(getScrollable(contentElement));\n });\n this.batch(horzYearView(), function (contentElement) {\n _this.yearViewWidth = width(getBody(contentElement));\n });\n this.batch(decadeView(), function (contentElement) {\n _this.decadeViewHeight = height(getBody(contentElement));\n _this.centuryViewHeight = _this.decadeViewHeight;\n });\n this.batch(horzDecadeView(), function (contentElement) {\n _this.decadeViewWidth = width(getBody(contentElement));\n _this.centuryViewWidth = _this.decadeViewWidth;\n });\n this.batch(navigationList(), function (contentElement) {\n _this.navigationItemHeight = height(contentElement.querySelector('li'));\n });\n };\n DOMService.prototype.viewHeight = function (viewType) {\n return this.viewDimension(viewType, 'height');\n };\n DOMService.prototype.viewWidth = function (viewType) {\n return this.viewDimension(viewType, 'width');\n };\n DOMService.prototype.viewDimension = function (viewType, dimension) {\n var viewProp = dimension === 'height' ? 'ViewHeight' : 'ViewWidth';\n switch (viewType) {\n case CalendarViewEnum.month:\n return this[\"month\" + viewProp];\n case CalendarViewEnum.year:\n return this[\"year\" + viewProp];\n case CalendarViewEnum.decade:\n return this[\"decade\" + viewProp];\n case CalendarViewEnum.century:\n return this[\"century\" + viewProp];\n default:\n return 1;\n }\n };\n DOMService.prototype.batch = function (contentElement, action) {\n var hostContainer = this.hostContainer || document.body;\n var appendedContent = hostContainer.appendChild(contentElement);\n action(appendedContent);\n hostContainer.removeChild(appendedContent);\n };\n return DOMService;\n}());\nexport { DOMService };\n//# sourceMappingURL=DOMService.js.map","import { Action } from '../models/NavigationAction';\nvar KEY_TO_ACTION = {\n '33': Action.PrevView,\n '34': Action.NextView,\n '35': Action.LastInView,\n '36': Action.FirstInView,\n '37': Action.Left,\n '38': Action.Up,\n '39': Action.Right,\n '40': Action.Down,\n 'meta+38': Action.UpperView,\n 'meta+40': Action.LowerView\n};\n/**\n * @hidden\n */\nvar NavigationService = /** @class */ (function () {\n function NavigationService(bus) {\n this.bus = bus;\n }\n NavigationService.prototype.action = function (event) {\n var action = \"\" + (event.ctrlKey || event.metaKey ? 'meta+' : '') + event.keyCode;\n return KEY_TO_ACTION[action];\n };\n NavigationService.prototype.move = function (value, action, activeView, service, event) {\n if (!service) {\n return value;\n }\n if (action === Action.UpperView && this.bus.canMoveUp(activeView)) {\n this.bus.moveUp(activeView, event);\n return value;\n }\n if (action === Action.LowerView && this.bus.canMoveDown(activeView)) {\n this.bus.moveDown(activeView, event);\n return value;\n }\n return service.move(value, action);\n };\n return NavigationService;\n}());\nexport { NavigationService };\n//# sourceMappingURL=NavigationService.js.map","var divideByMagnitude = function (magnitude) { return function (x) { return Math.floor(x / magnitude); }; };\nvar powerByMagnitude = function (magnitude) { return function (x) { return x * magnitude; }; };\n/**\n * @hidden\n */\nvar ScrollSyncService = /** @class */ (function () {\n function ScrollSyncService(dom) {\n this.dom = dom;\n this.monthScrolled = false;\n this.navScrolled = false;\n }\n ScrollSyncService.prototype.configure = function (activeView) {\n var magnitude = Math.max(this.dom.viewHeight(activeView) / this.dom.navigationItemHeight, 1);\n this.divideByMagnitude = divideByMagnitude(magnitude);\n this.powerByMagnitude = powerByMagnitude(magnitude);\n };\n ScrollSyncService.prototype.sync = function (navigator, view, e) {\n if (!navigator || !view) {\n return;\n }\n this.navigator = navigator;\n this.view = view;\n if (e.target === this.navigator.element) {\n if (this.monthScrolled) {\n this.monthScrolled = false;\n return;\n }\n this.navScrolled = true;\n this.scrollSiblingOf(this.navigator.element);\n }\n if (e.target === this.view.element) {\n if (this.navScrolled) {\n this.navScrolled = false;\n return;\n }\n this.monthScrolled = true;\n this.scrollSiblingOf(this.view.element);\n }\n };\n ScrollSyncService.prototype.scrollSiblingOf = function (scrolledElement) {\n var component = this.siblingComponent(scrolledElement);\n var scrollTop = this.calculateScroll(component, scrolledElement.scrollTop);\n component.scrollTo(scrollTop);\n };\n ScrollSyncService.prototype.siblingComponent = function (scrollableElement) {\n return this.navigator.element === scrollableElement ? this.view : this.navigator;\n };\n ScrollSyncService.prototype.calculateScroll = function (component, scrollTop) {\n var modifier = component === this.navigator ? this.divideByMagnitude : this.powerByMagnitude;\n return modifier(scrollTop);\n };\n return ScrollSyncService;\n}());\nexport { ScrollSyncService };\n//# sourceMappingURL=ScrollSyncService.js.map","import { shiftWeekNames } from '../../utils';\n/**\n * @hidden\n */\nvar WeekNamesService = /** @class */ (function () {\n function WeekNamesService(intl) {\n this.intl = intl;\n }\n WeekNamesService.prototype.getWeekNames = function (includeWeekNumber) {\n if (includeWeekNumber === void 0) { includeWeekNumber = false; }\n var weekNames = shiftWeekNames(this.intl.dateFormatNames({ nameType: 'short', type: 'days' }), this.intl.firstDay());\n return includeWeekNumber ? [''].concat(weekNames) : weekNames;\n };\n return WeekNamesService;\n}());\nexport { WeekNamesService };\n//# sourceMappingURL=WeekNamesService.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { weekInYear, cloneDate } from '@progress/kendo-date-math';\nimport { registerForIntl, provideIntlService } from '@progress/kendo-react-intl';\nimport { CalendarCell } from './CalendarCell';\nimport { CalendarWeekCell } from './CalendarWeekCell';\nimport { CalendarViewEnum } from '../models';\nimport { setTime, getToday } from '../../utils';\nimport { WeekNamesService } from '../services';\n// tslint:disable-next-line jsx-use-translation-function\nvar emptyCell = function (idx) { return (React.createElement(\"td\", { key: idx }, \"\\u00A0\")); };\n/**\n * @hidden\n */\nvar View = /** @class */ (function (_super) {\n __extends(View, _super);\n function View() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.buildWeekNumber = function (row, idx) {\n var firstDayOfWeek = _this.firstDate(row);\n if (!firstDayOfWeek) {\n return emptyCell(\"week-cell-\" + idx);\n }\n var weekCellValue = _this.getWeekNumber(_this.firstDate(row));\n var uniqueID = \"kendo-react-calendar-week-cell-\" + weekCellValue;\n var cellProps = {\n className: 'k-alt',\n value: weekCellValue\n };\n return _this.props.weekCell\n ? React.createElement(_this.props.weekCell, __assign({}, cellProps, { key: uniqueID }), weekCellValue)\n : React.createElement(CalendarWeekCell, __assign({}, cellProps, { key: uniqueID }), weekCellValue);\n };\n _this.buildRow = function (row) {\n return row.map(function (cell, idx) {\n if (!cell) {\n return emptyCell(idx);\n }\n var aria = { 'aria-selected': cell.isSelected };\n var uniqueID = \"kendo-react-calendar-cell-\" + cell.value.getTime();\n var isDisabled = cell.value.getTime() < _this.props.min.getTime()\n || cell.value.getTime() > _this.props.max.getTime();\n var cellProps = __assign({}, aria, cell, { isDisabled: isDisabled, view: _this.props.activeView, onClick: _this.handleClick, onMouseEnter: _this.handleMouseEnter, onMouseLeave: _this.handleMouseLeave });\n return _this.props.cell\n ? (React.createElement(_this.props.cell, __assign({}, cellProps, { key: uniqueID }), cell.formattedValue))\n : (React.createElement(CalendarCell, __assign({}, cellProps, { key: uniqueID }), cell.formattedValue));\n });\n };\n _this.firstDate = function (row) {\n var cell = _this.firstWeekDateContext(row);\n return cell ? cell.value : null;\n };\n _this.firstWeekDateContext = function (rowCtx) {\n if (!_this.weekNumber) {\n return null;\n }\n var idx = 0;\n var ctx = rowCtx[idx];\n while (!ctx && idx < rowCtx.length) {\n ctx = rowCtx[++idx];\n }\n return ctx;\n };\n _this.handleClick = function (value, event) {\n var onChange = _this.props.onChange;\n if (onChange) {\n var args = {\n value: cloneDate(value),\n target: _this,\n nativeEvent: event && event.nativeEvent,\n syntheticEvent: event\n };\n onChange.call(undefined, args);\n }\n };\n _this.handleMouseEnter = function (value) {\n var onCellEnter = _this.props.onCellEnter;\n if (onCellEnter) {\n onCellEnter.call(undefined, cloneDate(value));\n }\n };\n _this.handleMouseLeave = function (value) {\n var onCellLeave = _this.props.onCellLeave;\n if (onCellLeave) {\n onCellLeave.call(undefined, cloneDate(value));\n }\n };\n return _this;\n }\n Object.defineProperty(View.prototype, \"isHorizontal\", {\n get: function () {\n return this.props.direction === 'horizontal';\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(View.prototype, \"isMonthView\", {\n get: function () {\n return this.props.activeView === CalendarViewEnum.month;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(View.prototype, \"weekNumber\", {\n get: function () {\n return Boolean(this.props.showWeekNumbers && this.props.activeView === CalendarViewEnum.month);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(View.prototype, \"selectedDate\", {\n get: function () {\n return this.props.selectedDate !== undefined ? this.props.selectedDate : View.defaultProps.selectedDate;\n },\n enumerable: true,\n configurable: true\n });\n View.prototype.render = function () {\n var _this = this;\n this.intl = provideIntlService(this);\n this.weekService = new WeekNamesService(this.intl);\n var weekNames = this.weekService.getWeekNames(this.weekNumber);\n var colSpan = this.props.service.rowLength(this.weekNumber);\n var title = this.props.service.title(this.props.viewDate);\n var time = getToday();\n var viewDate = setTime(this.props.viewDate, time);\n var data = this.props.service.data({\n cellUID: this.props.cellUID,\n focusedDate: this.props.focusedDate,\n isActiveView: !this.props.bus.canMoveDown(this.props.activeView),\n selectedDate: this.selectedDate,\n selectionRange: this.props.selectionRange,\n viewDate: viewDate\n });\n return (React.createElement(\"tbody\", { role: \"rowgroup\" },\n !this.isHorizontal && (React.createElement(\"tr\", { role: \"row\" },\n React.createElement(\"th\", { scope: \"col\", colSpan: colSpan }, title))),\n (this.isMonthView && this.isHorizontal) && (React.createElement(\"tr\", { role: \"row\" }, weekNames.map(function (name, idx) { return (React.createElement(\"th\", { key: idx }, name)); }))),\n data.map(function (row, idx) {\n return (React.createElement(\"tr\", { role: \"row\", key: idx },\n _this.weekNumber && _this.buildWeekNumber(row, idx),\n _this.buildRow(row)));\n })));\n };\n View.prototype.getWeekNumber = function (date) {\n if (!this.weekNumber) {\n return null;\n }\n return weekInYear(date, this.intl.firstDay());\n };\n View.propTypes = {\n activeRangeEnd: PropTypes.oneOf(['start', 'end', null]),\n activeView: PropTypes.number.isRequired,\n cellUID: PropTypes.string.isRequired,\n direction: PropTypes.oneOf(['horizontal', 'vertical']),\n focusedDate: PropTypes.instanceOf(Date).isRequired,\n max: PropTypes.instanceOf(Date).isRequired,\n min: PropTypes.instanceOf(Date).isRequired,\n onChange: PropTypes.func,\n selectedDate: PropTypes.oneOfType([PropTypes.instanceOf(Date), PropTypes.arrayOf(PropTypes.instanceOf(Date))]),\n showWeekNumbers: PropTypes.bool,\n viewDate: PropTypes.instanceOf(Date).isRequired\n };\n View.defaultProps = {\n direction: 'vertical',\n selectedDate: getToday(),\n showWeekNumbers: false\n };\n return View;\n}(React.Component));\nexport { View };\nregisterForIntl(View);\n//# sourceMappingURL=View.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\n t[p[i]] = s[p[i]];\n return t;\n};\nimport * as React from 'react';\n/**\n * The `CalendarHeaderTitle` component is internally used for rendering the title of the current calendar view. Also used as a custom `headerTitle` for the [Calendar]({% slug api_dateinputs_calendarprops %}#toc-headertitle) and the [MultiViewCalendar]({% slug api_dateinputs_multiviewcalendarprops %}#toc-headertitle) components.\n *\n * * [Customizing the title for the current Calendar view]({% slug custom_rendering_calendar %}#toc-cells-inside-the-view)\n * * [Customizing the title for the current MultiViewCalendar view]({% slug custom_rendering_multiviewcalendar %}#toc-cells-inside-the-view)\n */\nvar CalendarHeaderTitle = /** @class */ (function (_super) {\n __extends(CalendarHeaderTitle, _super);\n function CalendarHeaderTitle() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @return\n * Returns a `` element with the [`value`]({% slug api_dateinputs_calendarheadertitleprops %}#toc-value) of the title as a child.\n */\n CalendarHeaderTitle.prototype.render = function () {\n var _a = this.props, view = _a.view, props = __rest(_a, [\"view\"]);\n return (React.createElement(\"span\", __assign({}, props), this.props.children));\n };\n return CalendarHeaderTitle;\n}(React.PureComponent));\nexport { CalendarHeaderTitle };\n//# sourceMappingURL=CalendarHeaderTitle.js.map","var _a;\n/**\n * @hidden\n */\nexport var prevView = 'multiviewcalendar.prevView';\n/**\n * @hidden\n */\nexport var nextView = 'multiviewcalendar.nextView';\n/**\n * @hidden\n */\nexport var increaseValue = 'dateinput.increment';\n/**\n * @hidden\n */\nexport var decreaseValue = 'dateinput.decrement';\n/**\n * @hidden\n */\nexport var today = 'calendar.today';\n/**\n * @hidden\n */\nexport var toggleCalendar = 'datepicker.toggleCalendar';\n/**\n * @hidden\n */\nexport var swapStartEnd = 'daterangepicker.swapStartEnd';\n/**\n * @hidden\n */\nexport var start = 'daterangepicker.start';\n/**\n * @hidden\n */\nexport var end = 'daterangepicker.end';\n/**\n * @hidden\n */\nexport var separator = 'daterangepicker.separator';\n/**\n * @hidden\n */\nexport var toggleDateTimeSelector = 'datetimepicker.toggleDateTimeSelector';\n/**\n * @hidden\n */\nexport var now = 'timepicker.now';\n/**\n * @hidden\n */\nexport var selectNow = 'timepicker.selectNow';\n/**\n * @hidden\n */\nexport var timePickerCancel = 'timepicker.cancel';\n/**\n * @hidden\n */\nexport var timePickerSet = 'timepicker.set';\n/**\n * @hidden\n */\nexport var toggleTimeSelector = 'timepicker.toggleTimeSelector';\n/**\n * @hidden\n */\nexport var toggleClock = 'timepicker.toggleClock';\n/**\n * @hidden\n */\nexport var date = 'datetimepicker.date';\n/**\n * @hidden\n */\nexport var time = 'datetimepicker.time';\n/**\n * @hidden\n */\nexport var dateTimePickerCancel = 'datetimepicker.cancel';\n/**\n * @hidden\n */\nexport var dateTimePickerSet = 'datetimepicker.set';\n/**\n * @hidden\n */\nexport var messages = (_a = {},\n _a[today] = 'TODAY',\n _a[now] = 'NOW',\n _a[timePickerSet] = 'Set',\n _a[timePickerCancel] = 'Cancel',\n _a[date] = 'Date',\n _a[time] = 'Time',\n _a[dateTimePickerCancel] = 'Cancel',\n _a[dateTimePickerSet] = 'Set',\n _a[start] = 'Start',\n _a[end] = 'End',\n _a[separator] = ' ',\n _a[selectNow] = 'Select Now',\n _a[toggleTimeSelector] = 'Toggle TimeSelector',\n _a[toggleClock] = 'Toggle Clock',\n _a[increaseValue] = 'Increase value',\n _a[decreaseValue] = 'Decrease value',\n _a[toggleCalendar] = 'Toggle calendar',\n _a[prevView] = 'Navigate to previous view',\n _a[nextView] = 'Navigate to next view',\n _a[swapStartEnd] = 'Swap start and end values',\n _a[toggleDateTimeSelector] = 'Toggle date-time selector',\n _a);\n//# sourceMappingURL=index.js.map","/**\n * @hidden\n */\nexport var MIDNIGHT_DATE = new Date(1980, 0, 1);\n/**\n * @hidden\n */\nexport var MIN_DATE = new Date(1900, 0, 1);\n/**\n * @hidden\n */\nexport var MAX_DATE = new Date(2099, 11, 31);\n/**\n * @hidden\n */\nexport var MIN_TIME = new Date(1980, 0, 1);\n/**\n * @hidden\n */\nexport var MAX_TIME = new Date(1980, 0, 1, 23, 59, 59);\n//# sourceMappingURL=defaults.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { registerForLocalization, provideLocalizationService } from '@progress/kendo-react-intl';\nimport { getDate } from '@progress/kendo-date-math';\nimport { classNames } from '@progress/kendo-react-common';\nimport { CalendarHeaderTitle } from './CalendarHeaderTitle';\nimport { messages, today } from '../../messages';\nimport { getToday, isInRange, dateInRange, MAX_DATE } from '../../utils';\nimport { MIN_DATE } from '../../defaults';\n/**\n * @hidden\n */\nvar Header = /** @class */ (function (_super) {\n __extends(Header, _super);\n function Header() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.getTitle = function () {\n if (!_this.props.currentDate) {\n return '';\n }\n var take = _this.rangeLength - 1;\n var title = _this.props.service.title(_this.props.currentDate);\n var nextDate = _this.props.service.addToDate(_this.props.currentDate, take);\n if (take < 1 || !_this.props.service.isInRange(nextDate, _this.min, _this.max)) {\n return title;\n }\n return title + \" - \" + _this.props.service.title(nextDate);\n };\n _this.handleTitleClick = function (event) {\n if (!_this.navigate) {\n return;\n }\n _this.props.bus.moveUp(_this.props.activeView, event);\n };\n _this.handleTodayClick = function (event) {\n if (!_this.todayIsInRange) {\n return;\n }\n _this.props.bus.moveToBottom(_this.props.activeView);\n var onTodayClick = _this.props.onTodayClick;\n if (onTodayClick) {\n var args = {\n syntheticEvent: event,\n nativeEvent: event.nativeEvent,\n value: dateInRange(getToday(), _this.min, _this.max),\n target: _this\n };\n onTodayClick.call(undefined, args);\n }\n };\n return _this;\n }\n Object.defineProperty(Header.prototype, \"min\", {\n get: function () {\n return this.props.min !== undefined\n ? this.props.min\n : Header.defaultProps.min;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Header.prototype, \"max\", {\n get: function () {\n return this.props.max !== undefined\n ? this.props.max\n : Header.defaultProps.max;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Header.prototype, \"rangeLength\", {\n get: function () {\n return this.props.rangeLength !== undefined ? this.props.rangeLength : Header.defaultProps.rangeLength;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Header.prototype, \"navigate\", {\n get: function () {\n return this.props.bus.canMoveUp(this.props.activeView);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Header.prototype, \"todayIsInRange\", {\n get: function () {\n return isInRange(getToday(), getDate(this.min), getDate(this.max));\n },\n enumerable: true,\n configurable: true\n });\n Header.prototype.render = function () {\n this.localization = provideLocalizationService(this);\n var todayMessage = this.localization.toLanguageString(today, messages[today]);\n var title = this.getTitle();\n var titleClassNames = classNames('k-button k-bare k-title', {\n 'k-state-disabled': !this.navigate\n });\n var todayClassNames = classNames('k-today', {\n 'k-state-disabled': !this.todayIsInRange\n });\n var headerTitleProps = {\n children: title,\n value: title,\n view: this.props.activeView,\n className: titleClassNames,\n onClick: this.handleTitleClick\n };\n var headerTitle = this.props.headerTitle\n ? React.createElement(this.props.headerTitle, __assign({}, headerTitleProps), title)\n : React.createElement(CalendarHeaderTitle, __assign({}, headerTitleProps), title);\n return (React.createElement(\"div\", { className: \"k-calendar-header\" },\n headerTitle,\n React.createElement(\"span\", { className: todayClassNames, onClick: this.handleTodayClick }, todayMessage)));\n };\n Header.propTypes = {\n activeView: PropTypes.number.isRequired,\n currentDate: PropTypes.instanceOf(Date).isRequired,\n max: PropTypes.instanceOf(Date).isRequired,\n min: PropTypes.instanceOf(Date).isRequired,\n onTodayClick: PropTypes.func,\n rangeLength: PropTypes.number\n };\n Header.defaultProps = {\n rangeLength: 1,\n min: MIN_DATE,\n max: MAX_DATE\n };\n return Header;\n}(React.Component));\nexport { Header };\nregisterForLocalization(Header);\n//# sourceMappingURL=Header.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { classNames } from '@progress/kendo-react-common';\nimport { cloneDate, isEqualDate } from '@progress/kendo-date-math';\nimport { registerForIntl, provideIntlService } from '@progress/kendo-react-intl';\nimport { Virtualization } from '../../virtualization/Virtualization';\nimport { View } from './View';\nimport { Header } from './Header';\nimport { dateInRange, shiftWeekNames } from '../../utils';\nimport { CalendarViewEnum } from '../models';\nvar VIEWS_COUNT = 5;\n/**\n * @hidden\n */\nvar ViewList = /** @class */ (function (_super) {\n __extends(ViewList, _super);\n function ViewList(props) {\n var _this = _super.call(this, props) || this;\n _this.isActive = false;\n _this.animateToIndex = true;\n _this.shouldScroll = false;\n _this.focusActiveDate = function () {\n if (!_this._element) {\n return;\n }\n var focusedCell = _this._element.querySelector(\"td.k-state-focused\");\n var nextActiveCell = _this._element.querySelector('.k-state-pending-focus');\n if (focusedCell && focusedCell[0]) {\n focusedCell[0].classList.remove('k-state-focused');\n }\n if (nextActiveCell) {\n nextActiveCell.classList.add('k-state-focused');\n }\n _this.isActive = true;\n };\n _this.blurActiveDate = function () {\n if (!_this._element) {\n return;\n }\n var focusedCell = _this._element.querySelector(\"td.k-state-focused\");\n if (focusedCell) {\n focusedCell.classList.remove('k-state-focused');\n }\n _this.isActive = false;\n };\n _this.handleVirtualizationMount = function (virtualization) {\n _this.virtualization = virtualization;\n if (_this.virtualization && _this.table) {\n _this.table.style.transform = \"translateY(\" + _this.viewOffset + \"px)\";\n var viewDate = dateInRange(_this.props.focusedDate, _this.props.min, _this.props.max);\n var indexToScroll = _this.props.service.skip(viewDate, _this.props.min);\n _this.virtualization.scrollToIndex(indexToScroll);\n }\n };\n _this.buildMonthView = function (cols, weekNames) {\n return (React.createElement(\"table\", { key: \"calendar-view-list-weekdays\", className: \"k-calendar-weekdays\" },\n React.createElement(\"colgroup\", null, cols.map(function (_, idx) { return (React.createElement(\"col\", { key: idx })); })),\n React.createElement(\"thead\", null,\n React.createElement(\"tr\", null, weekNames.map(function (name, idx) { return (React.createElement(\"th\", { key: idx }, name)); })))));\n };\n _this.buildDates = function (cols, dates) {\n var cellUID = _this.props.cellUID;\n return (React.createElement(\"table\", { ref: function (table) { return _this.table = table; } },\n React.createElement(\"colgroup\", null, cols.map(function (_, idx) { return (React.createElement(\"col\", { key: idx })); })),\n dates.map(function (date) { return (React.createElement(View, { ref: function (el) { if (!_this.calendarView) {\n _this.calendarView = el;\n } }, key: date.getTime(), activeView: _this.props.activeView, viewDate: date, min: _this.props.min, max: _this.props.max, cellUID: cellUID, focusedDate: _this.props.focusedDate, cell: _this.props.cell, selectedDate: _this.props.value, showWeekNumbers: _this.weekNumber, onChange: _this.handleDateChange, bus: _this.props.bus, service: _this.props.service, weekCell: _this.props.weekCell })); })));\n };\n _this.calculateHeights = function () {\n if (!_this.props.dom) {\n return;\n }\n var scrollableHeight = _this.props.activeView === CalendarViewEnum.month ?\n _this.props.dom.scrollableContentHeight :\n _this.props.dom.scrollableYearContentHeight;\n _this.bottomOffset = scrollableHeight - _this.props.dom.viewHeight(_this.props.activeView);\n _this.viewOffset = -1 * _this.props.dom.headerHeight;\n _this.viewHeight = _this.props.dom.viewHeight(_this.props.activeView) || 1;\n };\n _this.getTake = function (skip, total) {\n return Math.min(total - skip, _this.take);\n };\n _this.handleScrollAction = function (_a) {\n var index = _a.index, scrollAction = _a.scrollAction, pageAction = _a.pageAction;\n var skip = pageAction ? pageAction.skip : _this.state.skip;\n if (_this.state.index !== index || _this.state.skip !== skip) {\n _this.setState({ index: index, skip: skip });\n }\n if (_this.table && scrollAction) {\n var translate = \"translateY(\" + scrollAction.offset + \"px)\";\n _this.table.style.transform = translate;\n }\n };\n _this.handleTodayClick = function (event) {\n _this.shouldScroll = true;\n _this.handleDateChange.call(undefined, event, true);\n };\n _this.handleDateChange = function (event, isTodayClick) {\n if (isTodayClick === void 0) { isTodayClick = false; }\n var onChange = _this.props.onChange;\n if (onChange) {\n var args = {\n syntheticEvent: event.syntheticEvent,\n nativeEvent: event.nativeEvent,\n value: cloneDate(event.value),\n target: _this,\n isTodayClick: isTodayClick\n };\n onChange.call(undefined, args);\n }\n };\n _this.lastView = _this.props.activeView;\n _this.lastFocus = _this.props.focusedDate;\n _this.state = {\n skip: _this.props.service.skip(_this.props.focusedDate, _this.props.min),\n index: _this.props.service.skip(_this.props.focusedDate, _this.props.min)\n };\n return _this;\n }\n Object.defineProperty(ViewList.prototype, \"element\", {\n get: function () {\n return this._element;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ViewList.prototype, \"weekNames\", {\n get: function () {\n this.intl = provideIntlService(this);\n var weekNames = shiftWeekNames(this.intl.dateFormatNames({ nameType: 'short', type: 'days' }), this.intl.firstDay());\n return this.weekNumber ? [''].concat(weekNames) : weekNames;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ViewList.prototype, \"weekNumber\", {\n get: function () {\n return Boolean(this.props.showWeekNumbers && this.props.activeView === CalendarViewEnum.month);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ViewList.prototype, \"take\", {\n get: function () {\n return this.props.take !== undefined ? this.props.take : ViewList.defaultProps.take;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ViewList.prototype, \"animate\", {\n get: function () {\n return Boolean(this.props.smoothScroll && this.animateToIndex);\n },\n enumerable: true,\n configurable: true\n });\n ViewList.prototype.componentDidUpdate = function (_prevProps, _prevState) {\n this.shouldScroll = false;\n if (this.indexToScroll !== undefined && this.virtualization) {\n this.virtualization[this.animate ? 'animateToIndex' : 'scrollToIndex'](this.indexToScroll);\n }\n if (this.isActive) {\n this.focusActiveDate();\n }\n this.lastView = this.props.activeView;\n // this.lastFocus = this.props.focusedDate;\n this.indexToScroll = undefined;\n };\n ViewList.prototype.render = function () {\n var _this = this;\n this.calculateHeights();\n var didViewChange = this.lastView !== this.props.activeView;\n var focusedDate = dateInRange(this.props.focusedDate, this.props.min, this.props.max);\n var skip = !didViewChange ? this.state.skip : this.props.service.skip(focusedDate, this.props.min);\n var total = this.props.service.total(this.props.min, this.props.max);\n var take = this.getTake(skip, total);\n var viewDate = this.props.service.addToDate(this.props.min, skip);\n var activeDate = this.props.service.addToDate(this.props.min, this.state.index);\n var cols = new Array(this.props.service.rowLength(this.weekNumber)).fill('');\n var didViewChanged = this.props.activeView !== this.lastView;\n this.animateToIndex = !didViewChanged;\n if (didViewChanged\n || !isEqualDate(this.lastFocus, focusedDate)\n || this.shouldScroll\n || (!this.props.shouldScroll || this.props.shouldScroll())) {\n this.indexToScroll = this.props.service.skip(focusedDate, this.props.min);\n }\n this.lastFocus = focusedDate;\n var rootClassNames = classNames('k-calendar-view', {\n 'k-calendar-monthview': this.props.activeView === CalendarViewEnum.month,\n 'k-calendar-yearview': this.props.activeView === CalendarViewEnum.year,\n 'k-calendar-decadeview': this.props.activeView === CalendarViewEnum.decade,\n 'k-calendar-centuryview': this.props.activeView === CalendarViewEnum.century\n });\n var dates = this.buildDates(cols, this.props.service.datesList(viewDate, take));\n var viewListBody = [\n (React.createElement(Header, { key: \"calendar-view-list-header\", currentDate: activeDate, min: this.props.min, max: this.props.max, activeView: this.props.activeView, onTodayClick: this.handleTodayClick, bus: this.props.bus, service: this.props.service, headerTitle: this.props.headerTitle })),\n (this.props.activeView === CalendarViewEnum.month && this.buildMonthView(cols, this.weekNames)),\n (React.createElement(Virtualization, { key: \"calendar-view-list-content\", skip: skip, take: this.take, total: total, itemHeight: this.viewHeight, topOffset: this.viewOffset, bottomOffset: this.bottomOffset, scrollOffsetSize: this.viewOffset, maxScrollDifference: this.viewHeight, onScrollAction: this.handleScrollAction, onMount: this.handleVirtualizationMount, children: dates }))\n ];\n return (React.createElement(\"div\", { ref: function (el) { _this._element = el; }, className: rootClassNames }, this.props.dom.didCalculate ? viewListBody : null));\n };\n ViewList.propTypes = {\n activeView: PropTypes.number.isRequired,\n bottomOffset: PropTypes.number,\n cellUID: PropTypes.string.isRequired,\n focusedDate: PropTypes.instanceOf(Date).isRequired,\n max: PropTypes.instanceOf(Date).isRequired,\n min: PropTypes.instanceOf(Date).isRequired,\n onChange: PropTypes.func,\n showWeekNumbers: PropTypes.bool,\n smoothScroll: PropTypes.bool,\n take: PropTypes.number,\n value: PropTypes.instanceOf(Date),\n viewHeight: PropTypes.number,\n viewOffset: PropTypes.number\n };\n ViewList.defaultProps = {\n take: VIEWS_COUNT,\n showWeekNumbers: false,\n smoothScroll: true\n };\n return ViewList;\n}(React.Component));\nexport { ViewList };\nregisterForIntl(ViewList);\n//# sourceMappingURL=ViewList.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\n t[p[i]] = s[p[i]];\n return t;\n};\nimport * as React from 'react';\nimport { classNames } from '@progress/kendo-react-common';\n/**\n * The `CalendarNavigationItem` component is internally used for rendering the items in the side navigation of the Calendar. Also used as a custom navigation item for the [Calendar]({% slug api_dateinputs_calendarprops %}#toc-navigationitem) ([see example]({% slug custom_rendering_calendar %}#toc-items-in-the-side-navigation)).\n */\nvar CalendarNavigationItem = /** @class */ (function (_super) {\n __extends(CalendarNavigationItem, _super);\n function CalendarNavigationItem() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.handleClick = function (event) {\n var _a = _this.props, onClick = _a.onClick, value = _a.value;\n if (onClick) {\n onClick.call(undefined, value, event);\n }\n };\n return _this;\n }\n /**\n * @return\n * Returns a `
  • ` element with a `` inside. The text inside represents the [`value`]({% slug api_dateinputs_calendarnavigationitemprops %}#toc-value) of the `navigationItem`.\n */\n CalendarNavigationItem.prototype.render = function () {\n var _a = this.props, isRangeStart = _a.isRangeStart, value = _a.value, text = _a.text, other = __rest(_a, [\"isRangeStart\", \"value\", \"text\"]);\n return (React.createElement(\"li\", __assign({}, other, { onClick: this.handleClick }),\n React.createElement(\"span\", { className: classNames({ 'k-calendar-navigation-marker': isRangeStart }) }, this.props.children)));\n };\n return CalendarNavigationItem;\n}(React.Component));\nexport { CalendarNavigationItem };\n//# sourceMappingURL=CalendarNavigationItem.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { cloneDate, isEqual } from '@progress/kendo-date-math';\nimport { CalendarNavigationItem } from './CalendarNavigationItem';\nimport { dateInRange } from '../../utils';\nimport { Virtualization } from '../../virtualization/Virtualization';\nvar ITEMS_COUNT = 30;\n/**\n * @hidden\n */\nvar Navigation = /** @class */ (function (_super) {\n __extends(Navigation, _super);\n function Navigation(props) {\n var _this = _super.call(this, props) || this;\n _this.topOffset = 0;\n _this.handleVirtualizationMount = function (virtualization) {\n _this.virtualization = virtualization;\n if (_this.virtualization && _this.list) {\n _this.list.style.transform = \"translateY(\" + _this.topOffset + \"px)\";\n var viewDate = dateInRange(_this.props.focusedDate, _this.props.min, _this.props.max);\n var indexToScroll = _this.props.service.skip(viewDate, _this.props.min);\n _this.virtualization.scrollToIndex(indexToScroll);\n }\n };\n _this.buildNavigationItem = function (date) {\n var text = _this.props.service.navigationTitle(date);\n var isRangeStart = _this.props.service.isRangeStart(date);\n var uniqueID = \"kendo-react-calendar-nav-item-\" + date.getTime();\n var navigationItemProps = {\n text: text,\n value: date,\n isRangeStart: isRangeStart,\n view: _this.props.activeView,\n onClick: _this.handleDateChange\n };\n return _this.props.navigationItem\n ? (React.createElement(_this.props.navigationItem, __assign({}, navigationItemProps, { key: uniqueID }), text))\n : (React.createElement(CalendarNavigationItem, __assign({}, navigationItemProps, { key: uniqueID }), text));\n };\n _this.calculateHeights = function () {\n var calendarHeight = _this.props.dom.calendarHeight;\n _this.itemHeight = _this.props.dom.navigationItemHeight || 1;\n _this.maxViewHeight = _this.props.dom.monthViewHeight;\n _this.topOffset = (calendarHeight - _this.itemHeight) / 2;\n _this.bottomOffset = calendarHeight - _this.itemHeight;\n };\n _this.handleDateChange = function (value, event) {\n var onChange = _this.props.onChange;\n if (onChange) {\n var args = {\n value: cloneDate(value),\n target: _this,\n nativeEvent: event && event.nativeEvent,\n syntheticEvent: event\n };\n onChange.call(undefined, args);\n }\n };\n _this.handleScrollAction = function (_a) {\n var scrollAction = _a.scrollAction, pageAction = _a.pageAction;\n var skip = pageAction ? pageAction.skip : _this.state.skip;\n if (_this.state.skip !== skip) {\n _this.setState({ skip: skip });\n }\n if (_this.list && scrollAction) {\n var translate = \"translateY(\" + scrollAction.offset + \"px)\";\n _this.list.style.transform = translate;\n }\n };\n _this.lastView = _this.props.activeView;\n _this.lastFocus = _this.props.focusedDate;\n var skip = _this.props.service.skip(_this.props.focusedDate, _this.props.min);\n var total = _this.props.service.total(_this.props.min, _this.props.max);\n _this.state = {\n skip: (skip - _this.getTake(skip, total) > 0) ? skip : 0\n };\n return _this;\n }\n Object.defineProperty(Navigation.prototype, \"take\", {\n get: function () {\n return this.props.take !== undefined\n ? this.props.take\n : Navigation.defaultProps.take;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @hidden\n */\n Navigation.prototype.componentDidUpdate = function (_prevProps, _prevState) {\n if (this.indexToScroll !== undefined && this.virtualization) {\n this.virtualization.scrollToIndex(this.indexToScroll);\n }\n this.lastView = this.props.activeView;\n this.lastFocus = this.props.focusedDate;\n this.indexToScroll = undefined;\n };\n Navigation.prototype.render = function () {\n var _this = this;\n this.calculateHeights();\n var didViewChange = this.lastView !== this.props.activeView;\n var focusedDate = dateInRange(this.props.focusedDate, this.props.min, this.props.max);\n var skip = !didViewChange ? this.state.skip : this.props.service.skip(focusedDate, this.props.min);\n var total = this.props.service.total(this.props.min, this.props.max);\n var take = this.getTake(skip, total);\n var viewDate = this.props.service.addToDate(this.props.min, skip);\n var dates = this.props.service.datesList(viewDate, take);\n if (this.props.activeView !== this.lastView\n || !isEqual(focusedDate, this.lastFocus)) {\n this.indexToScroll = this.props.service.skip(focusedDate, this.props.min);\n }\n var navigationBody = (React.createElement(Virtualization, { skip: skip, take: this.take, total: total, itemHeight: this.itemHeight, topOffset: this.topOffset, bottomOffset: this.bottomOffset, maxScrollDifference: this.maxViewHeight, onScrollAction: this.handleScrollAction, onMount: this.handleVirtualizationMount },\n React.createElement(\"ul\", { ref: function (el) { _this.list = el; }, className: \"k-reset\" }, dates.map(function (date) { return (_this.buildNavigationItem(date)); }))));\n return (React.createElement(\"div\", { className: \"k-calendar-navigation\" },\n React.createElement(\"span\", { className: \"k-calendar-navigation-highlight\" }),\n this.props.dom.didCalculate ? navigationBody : null));\n };\n Navigation.prototype.getTake = function (skip, total) {\n return Math.min(total - skip, this.take);\n };\n Navigation.propTypes = {\n activeView: PropTypes.number.isRequired,\n focusedDate: PropTypes.instanceOf(Date).isRequired,\n max: PropTypes.instanceOf(Date).isRequired,\n min: PropTypes.instanceOf(Date).isRequired,\n onChange: PropTypes.func,\n take: PropTypes.number\n };\n Navigation.defaultProps = {\n take: ITEMS_COUNT\n };\n return Navigation;\n}(React.Component));\nexport { Navigation };\n//# sourceMappingURL=Navigation.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { classNames, guid, Keys } from '@progress/kendo-react-common';\nimport { cloneDate, getDate, isEqualDate } from '@progress/kendo-date-math';\nimport { provideIntlService, registerForIntl } from '@progress/kendo-react-intl';\nimport { ViewList } from './ViewList';\nimport { Navigation } from './Navigation';\nimport { MIN_DATE, MAX_DATE } from '../../defaults';\nimport { CalendarViewEnum } from '../models';\nimport { getToday, dateInRange, isInRange, viewInRange } from '../../utils';\nimport { BusViewService, DOMService, ScrollSyncService, NavigationService } from '../services';\nvar virtualizationProp = function (x) { return x ? x.virtualization : null; };\nvar calculateValue = function (min, max, stateValue, propValue) {\n if (min === void 0) { min = Calendar.defaultProps.min; }\n if (max === void 0) { max = Calendar.defaultProps.max; }\n return propValue !== undefined\n ? propValue !== null && isInRange(propValue, min, max)\n ? propValue\n : null\n : stateValue !== null && isInRange(stateValue, min, max)\n ? stateValue\n : null;\n};\nvar Calendar = /** @class */ (function (_super) {\n __extends(Calendar, _super);\n function Calendar(props) {\n var _this = _super.call(this, props) || this;\n _this.cellUID = guid();\n _this.id = guid();\n _this.isActive = false;\n _this.didNavigationChange = false;\n _this.shouldScroll = function () { return _this.didNavigationChange; };\n _this.handleScroll = function (event) {\n if (!_this.scrollSyncService) {\n return;\n }\n _this.scrollSyncService.sync(virtualizationProp(_this.Navigation), virtualizationProp(_this.calendarViewList), event);\n };\n _this.handleNavigationChange = function (event) {\n if (_this.props.disabled) {\n return;\n }\n _this.didNavigationChange = true;\n var focusedDate = cloneDate(event.value);\n _this.setState({ focusedDate: focusedDate });\n };\n _this.handleViewChange = function (_a) {\n var view = _a.view;\n _this.scrollSyncService.configure(view);\n _this.setState({ activeView: view });\n };\n _this.handleDateChange = function (event) {\n var value = cloneDate(event.value);\n var focusedDate = cloneDate(event.value);\n var canNavigateDown = _this.bus.canMoveDown(_this.state.activeView);\n if (_this.props.disabled) {\n return;\n }\n if (canNavigateDown) {\n if (event.isTodayClick) {\n _this.bus.moveToBottom(_this.state.activeView);\n }\n else {\n _this.bus.moveDown(_this.state.activeView, event.syntheticEvent);\n _this.setState({ focusedDate: focusedDate });\n return;\n }\n }\n _this.setState({ value: value, focusedDate: focusedDate });\n _this.valueDuringOnChange = value;\n var onChange = _this.props.onChange;\n if (onChange) {\n var args = {\n syntheticEvent: event.syntheticEvent,\n nativeEvent: event.nativeEvent,\n value: value,\n target: _this\n };\n onChange.call(undefined, args);\n }\n _this.valueDuringOnChange = undefined;\n };\n _this.handleFocus = function (event) {\n _this.isActive = true;\n if (!_this.calendarViewList) {\n return;\n }\n _this.calendarViewList.focusActiveDate();\n var onFocus = _this.props.onFocus;\n if (onFocus) {\n onFocus.call(undefined, event);\n }\n };\n _this.handleBlur = function (event) {\n _this.isActive = false;\n if (!_this.calendarViewList) {\n return;\n }\n _this.calendarViewList.blurActiveDate();\n var onBlur = _this.props.onBlur;\n if (onBlur) {\n onBlur.call(undefined, event);\n }\n };\n _this.handleKeyDown = function (event) {\n var keyCode = event.keyCode;\n if (keyCode === Keys.enter) {\n if (_this.value !== null\n && isEqualDate(_this.focusedDate, _this.value)) {\n var viewDate = dateInRange(_this.focusedDate, _this.min, _this.max);\n virtualizationProp(_this.calendarViewList).scrollToIndex(_this.service.skip(viewDate, _this.min));\n }\n var args = {\n syntheticEvent: event,\n nativeEvent: event.nativeEvent,\n value: _this.focusedDate,\n target: _this\n };\n _this.handleDateChange.call(undefined, args);\n }\n else {\n var candidate = dateInRange(_this.navigation.move(_this.focusedDate, _this.navigation.action(event), _this.state.activeView, _this.service, event), _this.min, _this.max);\n if (isEqualDate(_this.focusedDate, candidate)) {\n return;\n }\n _this.setState({ focusedDate: candidate });\n }\n event.preventDefault();\n };\n _this.handleMouseDown = function (event) {\n event.preventDefault();\n };\n _this.handleClick = function (_) {\n if (_this._element) {\n _this._element.focus({ preventScroll: true });\n }\n };\n var value = calculateValue(_this.min, _this.max, _this.props.defaultValue || Calendar.defaultProps.defaultValue, _this.props.value);\n _this.state = {\n value: value,\n activeView: viewInRange(CalendarViewEnum[props.defaultActiveView], _this.bottomView, _this.topView),\n focusedDate: dateInRange(props.focusedDate\n || value\n || getToday(), _this.min, _this.max)\n };\n _this.dom = new DOMService();\n _this.bus = new BusViewService(_this.handleViewChange);\n _this.navigation = new NavigationService(_this.bus);\n _this.oldValue = value;\n return _this;\n }\n Object.defineProperty(Calendar.prototype, \"element\", {\n /**\n * Gets the wrapping element of the Calendar.\n */\n get: function () {\n return this._element;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Calendar.prototype, \"value\", {\n /**\n * Gets the value of the Calendar.\n */\n get: function () {\n return this.valueDuringOnChange !== undefined\n ? this.valueDuringOnChange\n : this.props.value !== undefined\n ? this.props.value\n : this.state.value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Calendar.prototype, \"min\", {\n get: function () {\n return getDate(this.props.min !== undefined\n ? this.props.min\n : Calendar.defaultProps.min);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Calendar.prototype, \"max\", {\n get: function () {\n return getDate(this.props.max !== undefined\n ? this.props.max\n : Calendar.defaultProps.max);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Calendar.prototype, \"bottomView\", {\n get: function () {\n return CalendarViewEnum[this.props.bottomView !== undefined\n ? this.props.bottomView\n : Calendar.defaultProps.bottomView];\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Calendar.prototype, \"topView\", {\n get: function () {\n return CalendarViewEnum[this.props.topView !== undefined\n ? this.props.topView\n : Calendar.defaultProps.topView];\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @hidden\n */\n Calendar.prototype.componentDidMount = function () {\n var _this = this;\n // Async calculation of height to avoid animation cancellation\n Promise.resolve().then(function () {\n if (!_this._element) {\n return;\n }\n _this.dom.calculateHeights(_this._element);\n _this.scrollSyncService = new ScrollSyncService(_this.dom);\n _this.scrollSyncService.configure(_this.state.activeView);\n _this.forceUpdate();\n });\n };\n /**\n * @hidden\n */\n Calendar.prototype.componentDidUpdate = function (_, prevState) {\n if (prevState.activeView !== this.state.activeView) {\n this.scrollSyncService.configure(this.state.activeView);\n }\n if (this.calendarViewList) {\n this.isActive ? this.calendarViewList.focusActiveDate() : this.calendarViewList.blurActiveDate();\n }\n this.didNavigationChange = false;\n this.oldValue = this.value;\n };\n /**\n * @hidden\n */\n Calendar.prototype.focus = function () {\n if (this._element) {\n this._element.focus();\n }\n };\n /**\n * @hidden\n */\n Calendar.prototype.render = function () {\n var _this = this;\n var didValueChange = this.value !== null && this.oldValue !== null\n ? !isEqualDate(this.value, this.oldValue)\n : this.value !== this.oldValue;\n var activeView = viewInRange(this.state.activeView, CalendarViewEnum[this.props.bottomView !== undefined\n ? this.props.bottomView\n : Calendar.defaultProps.bottomView], CalendarViewEnum[this.props.topView !== undefined\n ? this.props.topView\n : Calendar.defaultProps.topView]);\n var value = calculateValue(this.min, this.max, this.value, this.value);\n var sanitizedValue = value ? getDate(value) : null;\n this.focusedDate = getDate(dateInRange(didValueChange && value !== null\n ? value\n : this.state.focusedDate, this.min, this.max));\n this.intl = provideIntlService(this);\n this.bus.configure(this.bottomView, this.topView);\n this.service = this.bus.service(activeView, this.intl);\n var rootClassNames = classNames('k-widget k-calendar k-calendar-infinite', {\n 'k-state-disabled': this.props.disabled,\n 'k-week-number': this.props.weekNumber\n }, this.props.className);\n var aria = {\n 'aria-disabled': this.props.disabled,\n 'aria-activedescendant': this.cellUID + this.focusedDate.getTime()\n };\n var calendarBody = [this.props.navigation && (React.createElement(Navigation, { key: 0, ref: function (el) { _this.Navigation = el; }, activeView: this.state.activeView, focusedDate: this.focusedDate, min: this.min, max: this.max, onChange: this.handleNavigationChange, service: this.service, dom: this.dom, navigationItem: this.props.navigationItem })), (React.createElement(ViewList, { key: 1, ref: function (el) { _this.calendarViewList = el; }, activeView: this.state.activeView, focusedDate: this.focusedDate, min: this.min, max: this.max, bus: this.bus, shouldScroll: this.shouldScroll, service: this.service, cell: this.props.cell, weekCell: this.props.weekCell, dom: this.dom, smoothScroll: this.props.smoothScroll, showWeekNumbers: this.props.weekNumber, onChange: this.handleDateChange, value: sanitizedValue, cellUID: this.cellUID, headerTitle: this.props.headerTitle }))];\n return (React.createElement(\"div\", __assign({}, aria, { ref: function (el) { _this._element = el; }, className: rootClassNames, id: this.props.id || this.id, role: \"grid\", tabIndex: !this.props.disabled ? this.props.tabIndex || 0 : undefined, onScroll: this.handleScroll, onFocus: this.handleFocus, onBlur: this.handleBlur, onKeyDown: this.handleKeyDown, onMouseDown: this.handleMouseDown, onClick: this.handleClick }), calendarBody));\n };\n /**\n * @hidden\n */\n Calendar.propTypes = {\n className: PropTypes.string,\n defaultActiveView: PropTypes.oneOf(['month', 'year', 'decade', 'century']),\n defaultValue: PropTypes.instanceOf(Date),\n disabled: PropTypes.bool,\n focusedDate: PropTypes.instanceOf(Date),\n id: PropTypes.string,\n max: PropTypes.instanceOf(Date),\n min: PropTypes.instanceOf(Date),\n navigation: PropTypes.bool,\n smoothScroll: PropTypes.bool,\n onBlur: PropTypes.func,\n onChange: PropTypes.func,\n onFocus: PropTypes.func,\n tabIndex: PropTypes.number,\n value: PropTypes.instanceOf(Date),\n weekNumber: PropTypes.bool,\n topView: function (props, propName, componentName) {\n var prop = props[propName];\n var bottomView = props.bottomView;\n if (prop && bottomView && CalendarViewEnum[prop] < CalendarViewEnum[bottomView]) {\n return new Error(\"Invalid prop + \" + propName + \" suplied to \" + componentName + \".\\n \" + propName + \" can not be smaller than bottomView.\\n \");\n }\n },\n bottomView: function (props, propName, componentName) {\n var prop = props[propName];\n var topView = props.topView;\n if (prop && topView && CalendarViewEnum[prop] > CalendarViewEnum[topView]) {\n return new Error(\"Invalid prop + \" + propName + \" suplied to \" + componentName + \".\\n \" + propName + \" can not be bigger than topView.\\n \");\n }\n }\n };\n /**\n * @hidden\n */\n Calendar.defaultProps = {\n disabled: false,\n min: MIN_DATE,\n max: MAX_DATE,\n navigation: true,\n defaultActiveView: 'month',\n defaultValue: null,\n smoothScroll: true,\n topView: 'century',\n bottomView: 'month'\n };\n return Calendar;\n}(React.Component));\nexport { Calendar };\nregisterForIntl(Calendar);\n//# sourceMappingURL=Calendar.js.map","/**\n * @hidden\n */\nvar Mask = /** @class */ (function () {\n function Mask() {\n this.symbols = '';\n }\n return Mask;\n}());\nexport { Mask };\n//# sourceMappingURL=mask.js.map","/**\n * @hidden\n */\nexport var defaultFormat = 'd';\n/**\n * @hidden\n */\nexport var defaultFormatPlaceholder = 'wide';\n/**\n * @hidden\n */\nexport var padZero = function (length) { return new Array(Math.max(length, 0)).fill('0').join(''); };\n/**\n * @hidden\n */\nexport var approximateStringMatching = function (oldTextOrigin, oldFormat, newTextOrigin, selectionStart) {\n /*\n Remove the right part of the cursor.\n oldFormat = oldFormat.substring(0, caret + oldText.length - newText.length);\n */\n var oldTextSeparator = oldTextOrigin[selectionStart + oldTextOrigin.length - newTextOrigin.length];\n var oldText = oldTextOrigin.substring(0, selectionStart + oldTextOrigin.length - newTextOrigin.length);\n var newText = newTextOrigin.substring(0, selectionStart);\n var diff = [];\n /* Handle the typing of a single character over the same selection. */\n if (oldText === newText && selectionStart > 0) {\n diff.push([oldFormat[selectionStart - 1], newText[selectionStart - 1]]);\n return diff;\n }\n if (oldText.indexOf(newText) === 0 &&\n (newText.length === 0 || oldFormat[newText.length - 1] !== oldFormat[newText.length])) {\n /* Handle Delete/Backspace. */\n var deletedSymbol = '';\n /*\n The whole text is replaced by the same character.\n A nasty patch is required to keep the selection in the first segment.\n */\n if (newText.length === 1) {\n diff.push([oldFormat[0], newText[0]]);\n }\n for (var i = newText.length; i < oldText.length; i++) {\n if (oldFormat[i] !== deletedSymbol && oldFormat[i] !== '_') {\n deletedSymbol = oldFormat[i];\n diff.push([deletedSymbol, '']);\n }\n }\n return diff;\n }\n /*\n Handle the insertion of the text (the new text is longer than the previous one).\n Handle the typing over a literal as well.\n */\n if (newText.indexOf(oldText) === 0 || oldFormat[selectionStart - 1] === '_') {\n var symbol = oldFormat[0];\n for (var i = Math.max(0, oldText.length - 1); i < oldFormat.length; i++) {\n if (oldFormat[i] !== '_') {\n symbol = oldFormat[i];\n break;\n }\n }\n return [[symbol, newText[selectionStart - 1]]];\n }\n /* Handle the entering of a space or a separator for navigating to the next item. */\n if (newText[newText.length - 1] === ' ' || newText[newText.length - 1] === oldTextSeparator) {\n return [[oldFormat[selectionStart - 1], '_']];\n }\n /* Handle typing over a correctly selected part. */\n return [[oldFormat[selectionStart - 1], newText[selectionStart - 1]]];\n};\n/**\n * @hidden\n */\nexport var dateSymbolMap = function (map, part) { map[part.pattern[0]] = part.type; return map; };\n/**\n * @hidden\n */\nexport var isInRange = function (candidate, min, max) { return (candidate === null || !((min && min > candidate) || (max && max < candidate))); };\n/**\n * @hidden\n */\nexport var invalidClasses = ['k-state-invalid'];\n/**\n * @hidden\n */\nexport var wrapperClasses = ['k-widget', 'k-dateinput'];\n//# sourceMappingURL=utils.js.map","import { addMonths, cloneDate, createDate, isEqual, getDate, lastDayOfMonth } from '@progress/kendo-date-math';\nimport { Mask } from './mask';\nimport { dateSymbolMap } from './../utils';\n/**\n * @hidden\n */\nvar KendoDate = /** @class */ (function () {\n function KendoDate(intlProvider, formatPlaceholder, format) {\n this.year = true;\n this.month = true;\n this.date = true;\n this.hours = true;\n this.minutes = true;\n this.seconds = true;\n this.milliseconds = true;\n this.leadingZero = null;\n this.typedMonthPart = '';\n this.knownParts = 'adHhmMsEy';\n this.symbols = {\n 'E': 'E',\n 'H': 'H',\n 'M': 'M',\n 'a': 'a',\n 'd': 'd',\n 'h': 'h',\n 'm': 'm',\n 's': 's',\n 'y': 'y'\n };\n this._value = getDate(new Date());\n this.intlProvider = intlProvider;\n this.formatPlaceholder = formatPlaceholder;\n this.format = format;\n this.monthNames = this.allFormatedMonths();\n }\n Object.defineProperty(KendoDate.prototype, \"intl\", {\n get: function () {\n return this.intlProvider();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(KendoDate.prototype, \"value\", {\n get: function () {\n return this._value;\n },\n enumerable: true,\n configurable: true\n });\n KendoDate.prototype.setValue = function (value) {\n if (!value) {\n this._value = getDate(new Date());\n this.modifyExisting(false);\n }\n else if (!isEqual(value, this._value)) {\n this._value = cloneDate(value);\n this.modifyExisting(true);\n }\n };\n KendoDate.prototype.hasValue = function () {\n var _this = this;\n var pred = function (a, p) { return a || p.type !== 'literal' && p.type !== 'dayperiod' && _this.getExisting(p.pattern[0]); };\n return this.intl.splitDateFormat(this.format).reduce(pred, false);\n };\n KendoDate.prototype.getDateObject = function () {\n for (var i = 0; i < this.knownParts.length; i++) {\n if (!this.getExisting(this.knownParts[i])) {\n return null;\n }\n }\n return cloneDate(this.value);\n };\n KendoDate.prototype.getTextAndFormat = function () {\n return this.merge(this.intl.formatDate(this.value, this.format), this.dateFormatString(this.value, this.format));\n };\n KendoDate.prototype.modifyExisting = function (value) {\n var sampleFormat = this.dateFormatString(this.value, this.format).symbols;\n for (var i = 0; i < sampleFormat.length; i++) {\n this.setExisting(sampleFormat[i], value);\n }\n };\n KendoDate.prototype.getExisting = function (symbol) {\n switch (symbol) {\n case 'y': return this.year;\n case 'M':\n case 'L': return this.month;\n case 'd': return this.date;\n case 'E': return this.date && this.month && this.year;\n case 'h':\n case 'H': return this.hours;\n case 'm': return this.minutes;\n case 's': return this.seconds;\n default: return true;\n }\n };\n KendoDate.prototype.setExisting = function (symbol, value) {\n switch (symbol) {\n case 'y':\n // allow 2/29 dates\n this.year = value;\n if (value === false) {\n this._value.setFullYear(2000);\n }\n break;\n case 'M':\n // make sure you can type 31 in the day part\n this.month = value;\n if (value === false) {\n this._value.setMonth(0);\n }\n break;\n case 'd':\n this.date = value;\n break;\n case 'h':\n case 'H':\n this.hours = value;\n break;\n case 'm':\n this.minutes = value;\n break;\n case 's':\n this.seconds = value;\n break;\n default: return;\n }\n };\n KendoDate.prototype.modifyPart = function (symbol, offset) {\n var newValue = cloneDate(this.value);\n switch (symbol) {\n case 'y':\n newValue.setFullYear(newValue.getFullYear() + offset);\n break;\n case 'M':\n newValue = addMonths(this.value, offset);\n break;\n case 'd':\n case 'E':\n newValue.setDate(newValue.getDate() + offset);\n break;\n case 'h':\n case 'H':\n newValue.setHours(newValue.getHours() + offset);\n break;\n case 'm':\n newValue.setMinutes(newValue.getMinutes() + offset);\n break;\n case 's':\n newValue.setSeconds(newValue.getSeconds() + offset);\n break;\n case 'a':\n newValue.setHours(newValue.getHours() + (12 * offset));\n break;\n default: break;\n }\n this.setExisting(symbol, true);\n this._value = newValue;\n };\n KendoDate.prototype.parsePart = function (symbol, currentChar) {\n var _a;\n this.resetLeadingZero();\n if (!currentChar) {\n this.setExisting(symbol, false);\n return { value: null };\n }\n var baseDate = this.intl.formatDate(this.value, this.format);\n var dateParts = this.dateFormatString(this.value, this.format);\n var baseFormat = dateParts.symbols;\n var replaced = false;\n var prefix = '';\n var current = '';\n var suffix = '';\n for (var i = 0; i < baseDate.length; i++) {\n if (baseFormat[i] === symbol) {\n current += this.getExisting(symbol) ? baseDate[i] : '0';\n replaced = true;\n }\n else if (!replaced) {\n prefix += baseDate[i];\n }\n else {\n suffix += baseDate[i];\n }\n }\n var parsedDate = null;\n var month = this.matchMonth(currentChar);\n while (current.length > 0 && current.charAt(0) === '0') {\n current = current.slice(1);\n }\n if (current.length >= 4) {\n current = '';\n }\n for (var i = 0; i < 2; i++) {\n var middle = current + currentChar;\n var middleNumber = parseInt(middle, 10);\n parsedDate = this.intl.parseDate(prefix + middle + suffix, this.format);\n if (!parsedDate && !isNaN(middleNumber) && !isNaN(parseInt(currentChar, 10))) {\n if (symbol === 'M' && !month) {\n var monthNumber = middleNumber - 1;\n if (monthNumber > -1 && monthNumber < 12) {\n parsedDate = cloneDate(this.value);\n parsedDate.setMonth(monthNumber);\n if (parsedDate.getMonth() !== monthNumber) {\n parsedDate = lastDayOfMonth(addMonths(parsedDate, -1));\n }\n }\n }\n if (symbol === 'y') {\n parsedDate = createDate(parseInt(middle, 10), this.month ? this.value.getMonth() : 0, this.date ? this.value.getDate() : 1, this.hours ? this.value.getHours() : 0, this.minutes ? this.value.getMinutes() : 0, this.seconds ? this.value.getSeconds() : 0, this.milliseconds ? this.value.getMilliseconds() : 0);\n if (this.date && parsedDate.getDate() !== this.value.getDate()) {\n parsedDate = lastDayOfMonth(addMonths(parsedDate, -1));\n }\n }\n }\n if (parsedDate) {\n this._value = parsedDate;\n this.setExisting(symbol, true);\n return { value: this.value };\n }\n current = '';\n }\n if (month) {\n parsedDate = this.intl.parseDate(prefix + month + suffix, this.format);\n if (parsedDate) {\n this._value = parsedDate;\n this.setExisting(symbol, true);\n return { value: this.value };\n }\n }\n if (currentChar === '0') {\n this.leadingZero = !this.isAbbrMonth(dateParts.partMap, symbol) ? (_a = {}, _a[symbol] = true, _a) : null;\n this.setExisting(symbol, false);\n }\n return { value: null };\n };\n KendoDate.prototype.symbolMap = function (symbol) {\n return this.intl.splitDateFormat(this.format).reduce(dateSymbolMap, {})[symbol];\n };\n KendoDate.prototype.resetLeadingZero = function () {\n var hasLeadingZero = this.leadingZero !== null;\n this.leadingZero = null;\n return hasLeadingZero;\n };\n KendoDate.prototype.isAbbrMonth = function (parts, symbol) {\n var pattern = this.partPattern(parts, symbol);\n return pattern.type === 'month' && pattern.names;\n };\n KendoDate.prototype.partPattern = function (parts, symbol) {\n return parts.filter(function (part) { return part.pattern.indexOf(symbol) !== -1; })[0];\n };\n KendoDate.prototype.matchMonth = function (typedChar) {\n this.typedMonthPart += typedChar.toLowerCase();\n if (this.monthNames.length === 0) {\n return '';\n }\n while (this.typedMonthPart.length > 0) {\n for (var i = 0; i < this.monthNames.length; i++) {\n if (this.monthNames[i].toLowerCase().indexOf(this.typedMonthPart) === 0) {\n return this.monthNames[i];\n }\n }\n var monthAsNum = parseInt(this.typedMonthPart, 10);\n /* ensure they exact match */\n if (monthAsNum >= 1 && monthAsNum <= 12 && monthAsNum.toString() === this.typedMonthPart) {\n return this.monthNames[monthAsNum - 1];\n }\n this.typedMonthPart = this.typedMonthPart.substring(1, this.typedMonthPart.length);\n }\n return '';\n };\n KendoDate.prototype.allFormatedMonths = function () {\n var dateFormatParts = this.intl.splitDateFormat(this.format);\n for (var i = 0; i < dateFormatParts.length; i++) {\n if (dateFormatParts[i].type === 'month' && dateFormatParts[i].names) {\n return this.intl.dateFormatNames(dateFormatParts[i].names);\n }\n }\n return [];\n };\n KendoDate.prototype.dateFormatString = function (date, format) {\n var dateFormatParts = this.intl.splitDateFormat(format);\n var parts = [];\n var partMap = [];\n for (var i = 0; i < dateFormatParts.length; i++) {\n var partLength = this.intl.formatDate(date, { pattern: dateFormatParts[i].pattern }).length;\n while (partLength > 0) {\n parts.push(this.symbols[dateFormatParts[i].pattern[0]] || '_');\n partMap.push(dateFormatParts[i]);\n partLength--;\n }\n }\n var returnValue = new Mask();\n returnValue.symbols = parts.join('');\n returnValue.partMap = partMap;\n return returnValue;\n };\n KendoDate.prototype.merge = function (text, mask) {\n // Important: right to left.\n var resultText = '';\n var resultFormat = '';\n var format = mask.symbols;\n for (var r = format.length - 1; r >= 0; r--) {\n if (this.knownParts.indexOf(format[r]) === -1 || this.getExisting(format[r])) {\n resultText = text[r] + resultText;\n resultFormat = format[r] + resultFormat;\n }\n else {\n var currentSymbol = format[r];\n while (r >= 0 && currentSymbol === format[r]) {\n r--;\n }\n r++;\n if (this.leadingZero && this.leadingZero[currentSymbol]) {\n resultText = '0' + resultText;\n }\n else {\n resultText = this.dateFieldName(mask.partMap[r]) + resultText;\n }\n while (resultFormat.length < resultText.length) {\n resultFormat = format[r] + resultFormat;\n }\n }\n }\n return { text: resultText, format: resultFormat };\n };\n KendoDate.prototype.dateFieldName = function (part) {\n var formatPlaceholder = this.formatPlaceholder || 'wide';\n if (formatPlaceholder[part.type]) {\n return formatPlaceholder[part.type];\n }\n if (formatPlaceholder === 'formatPattern') {\n return part.pattern;\n }\n return this.intl.dateFieldName(Object.assign(part, { nameType: formatPlaceholder }));\n };\n return KendoDate;\n}());\nexport { KendoDate };\n//# sourceMappingURL=kendo-date.js.map","/**\n * @hidden\n */\nexport var TIME_PART = {\n dayperiod: 'dayperiod',\n hour: 'hour',\n millisecond: 'millisecond',\n minute: 'minute',\n second: 'second'\n};\n//# sourceMappingURL=TimePart.js.map","import { cloneDate, addDays } from '@progress/kendo-date-math';\nimport { TIME_PART } from './models/TimePart';\nimport { MIDNIGHT_DATE, setTime } from '../utils';\nvar setter = function (method) { return function (date, value) {\n var clone = cloneDate(date);\n clone[method](value);\n return clone;\n}; };\nvar defaultGetters = [\n { type: TIME_PART.hour, getter: function (value) { return value.getHours(); } },\n { type: TIME_PART.minute, getter: function (value) { return value.getMinutes(); } },\n { type: TIME_PART.second, getter: function (value) { return value.getSeconds(); } },\n { type: TIME_PART.millisecond, getter: function (value) { return value.getMilliseconds(); } }\n];\nvar left = function (getter) { return function (origin, _) { return getter(origin); }; };\nvar right = function (getter) { return function (_, candidate) { return getter(candidate); }; };\nvar convertToObject = function (parts) { return parts.reduce(function (obj, p) { obj[p.type] = p.type; return obj; }, {}); };\nvar getterByPart = function (parts) { return function (g) { return parts[g.type] ? right(g.getter) : left(g.getter); }; };\nvar gettersFactory = function (getters) { return function (parts) { return (getters.map(getterByPart(convertToObject(parts)))); }; };\nvar snapValue = function (getter, step, min, type) { return function (date) {\n var value = getter(date);\n var minValue = getter(min);\n if (type === 'hour') {\n return value - ((value - minValue) % step);\n }\n if (date.getTime() <= min.getTime()\n && value !== 0\n && value <= minValue) {\n return (Math.ceil(value / step)) * step;\n }\n return value - (value % step);\n}; };\nvar snappersFactory = function (getters) { return function (steps, min) { return (getters.map(function (g) {\n var step = Math.floor(steps[g.type]);\n return step ? snapValue(g.getter, step, min, g.type) : g.getter;\n})); }; };\n/**\n * @hidden\n */\nexport var generateGetters = gettersFactory(defaultGetters);\n/**\n * @hidden\n */\nexport var generateSnappers = snappersFactory(defaultGetters);\n/**\n * @hidden\n */\nexport var valueMerger = function (getters) { return function (origin, candidate) {\n origin.setHours.apply(origin, getters.map(function (g) { return g(origin, candidate); }));\n return origin;\n}; };\n/**\n * @hidden\n */\nexport var snapTime = function (snappers) { return function (candidate) {\n var date = cloneDate(candidate);\n date.setHours.apply(date, snappers.map(function (s) { return s(date); }));\n return date;\n}; };\n/**\n * @hidden\n */\nexport var setHours = setter('setHours');\n/**\n * @hidden\n */\nexport var setMinutes = setter('setMinutes');\n/**\n * @hidden\n */\nexport var setSeconds = setter('setSeconds');\n/**\n * @hidden\n */\nexport var getNow = function () { return new Date(); };\n/**\n * @hidden\n */\nexport var range = function (start, end, step) {\n if (step === void 0) { step = 1; }\n var result = [];\n for (var i = start; i < end; i = i + step) {\n result.push(i);\n }\n return result;\n};\nvar normalizeTimes = function (candidate, min, max) { return ({\n candidateValue: setTime(MIDNIGHT_DATE, candidate),\n maxValue: addDays(setTime(MIDNIGHT_DATE, max), min.getHours() < max.getHours() ? 0 : 1),\n minValue: setTime(MIDNIGHT_DATE, min)\n}); };\n/**\n * @hidden\n */\nexport var timeInRange = function (candidate, min, max) {\n if (!candidate || !min || !max) {\n return candidate;\n }\n var _a = normalizeTimes(candidate, min, max), candidateValue = _a.candidateValue, minValue = _a.minValue, maxValue = _a.maxValue;\n if (candidateValue < minValue) {\n return setTime(candidate, min);\n }\n if (candidateValue > maxValue) {\n return setTime(candidate, max);\n }\n return candidate;\n};\n/**\n * @hidden\n */\nexport var isInTimeRange = function (candidate, min, max) {\n if (!candidate || !min || !max) {\n return true;\n }\n var _a = normalizeTimes(candidate, min, max), candidateValue = _a.candidateValue, minValue = _a.minValue, maxValue = _a.maxValue;\n return minValue <= candidateValue && candidateValue <= maxValue;\n};\n/**\n * @hidden\n */\nexport var isInRange = function (candidate, min, max) {\n if (candidate === null) {\n return true;\n }\n var _a = normalizeTimes(candidate, min, max), candidateValue = _a.candidateValue, minValue = _a.minValue, maxValue = _a.maxValue;\n return minValue <= candidateValue && candidateValue <= maxValue;\n};\n/**\n * @hidden\n */\nexport var isSmallerThanMin = function (val, min) {\n if (val === null || min === null) {\n return false;\n }\n var normalizedValue = setTime(MIDNIGHT_DATE, val);\n var normalizedMin = setTime(MIDNIGHT_DATE, min);\n return normalizedValue.getTime() < normalizedMin.getHours();\n};\n/**\n * @hidden\n */\nexport var isBiggerThanMax = function (val, max) {\n if (val === null || max === null) {\n return false;\n }\n var normalizedValue = setTime(MIDNIGHT_DATE, val);\n var normalizedMax = setTime(MIDNIGHT_DATE, max);\n return normalizedMax.getTime() < normalizedValue.getHours();\n};\n//# sourceMappingURL=utils.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { isEqual, cloneDate } from '@progress/kendo-date-math';\nimport { registerForIntl, provideIntlService, registerForLocalization, provideLocalizationService } from '@progress/kendo-react-intl';\nimport { KendoDate } from './models';\nimport { FloatingLabel, guid, noop } from '@progress/kendo-react-common';\nimport { approximateStringMatching, defaultFormat, defaultFormatPlaceholder, isInRange, invalidClasses, wrapperClasses } from './utils';\nimport { MAX_DATE, MIN_DATE } from './../utils';\nimport { messages, increaseValue, decreaseValue } from './../messages';\nimport { isInTimeRange } from '../timepicker/utils';\nimport { MIN_TIME, MAX_TIME } from '../defaults';\nvar VALIDATION_MESSAGE = 'Please enter a valid value!';\n// tslint:enable:max-line-length\nvar DateInput = /** @class */ (function (_super) {\n __extends(DateInput, _super);\n function DateInput() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.kendoDate = null;\n _this._element = null;\n _this._inputId = guid();\n /**\n * @hidden\n */\n _this.setValidity = function () {\n if (_this.element && _this.element.setCustomValidity) {\n _this.element.setCustomValidity(_this.validity.valid\n ? ''\n : _this.props.validationMessage || DateInput.defaultProps.validationMessage);\n }\n };\n /* Handlers */\n _this.spinnersMouseDown = function (event) {\n /* do not steal focus from input when changing value with spinners */\n event.preventDefault();\n /* manually focus the input in case the user clicks the spinners first */\n if (_this.element && document.activeElement !== _this.element) {\n _this.element.focus({ preventScroll: true });\n }\n };\n _this.elementChange = function (event) {\n if (!_this.element || !_this.kendoDate) {\n return;\n }\n var _a = _this.kendoDate.getTextAndFormat(), text = _a.text, currentFormat = _a.format;\n _this.currentFormat = currentFormat;\n var dateBeforeChange = _this.value;\n var diff = approximateStringMatching(text, _this.currentFormat, _this.element.value, _this.selection.start);\n var navigationOnly = (diff.length === 1 && diff[0][1] === '_');\n if (!navigationOnly) {\n for (var i = 0; i < diff.length; i++) {\n _this.kendoDate.parsePart(diff[i][0], diff[i][1]);\n }\n }\n if (diff.length && diff[0][0] !== '_') {\n _this.setSelection(_this.selectionBySymbol(diff[0][0]));\n }\n if (navigationOnly) {\n _this.switchDateSegment(1);\n }\n _this.triggerChange(event, dateBeforeChange);\n };\n _this.elementClick = function (_) {\n _this.setSelection(_this.selectionByIndex(_this.selection.start));\n };\n _this.wheel = function (event) {\n if (document.activeElement !== _this.element) {\n return;\n }\n if (event.nativeEvent.deltaY < 0) {\n event.preventDefault();\n _this.increasePart(event);\n }\n if (event.nativeEvent.deltaY > 0) {\n event.preventDefault();\n _this.decreasePart(event);\n }\n };\n _this.increasePart = function (event) {\n _this.modifyDateSegmentValue(1, event);\n };\n _this.decreasePart = function (event) {\n _this.modifyDateSegmentValue(-1, event);\n };\n _this.elementKeyDown = function (event) {\n if (event.altKey) {\n return;\n }\n switch (event.keyCode) {\n case 37:\n /*\n * Key: `Left Arrow`\n * Action: Switches to previous logical* segment.\n * (*) https://www.w3.org/International/articles/inline-bidi-markup/uba-basics\n */\n _this.switchDateSegment(-1);\n break;\n case (38):\n /*\n * Key: `Up Arrow`\n * Action: Increases the currently selected segment value.\n */\n _this.modifyDateSegmentValue(1, event);\n break;\n case 39:\n /*\n * Key: `Right Arrow`\n * Action: Switches to the next logical segment.\n */\n _this.switchDateSegment(1);\n break;\n case 40:\n /*\n * Key: `Down Arrow`\n * Action: Decreases the currently selected segment value.\n */\n _this.modifyDateSegmentValue(-1, event);\n break;\n default:\n /*\n * Key: any\n * Action: Does not prevent the default behavior.\n */\n return;\n }\n event.preventDefault();\n };\n return _this;\n }\n /**\n * @hidden\n */\n DateInput.prototype.componentDidMount = function () {\n this.setValidity();\n };\n /**\n * @hidden\n */\n DateInput.prototype.componentDidUpdate = function () {\n if (this._lastSelectedSymbol) {\n this.setSelection(this.selectionBySymbol(this._lastSelectedSymbol));\n }\n this.setValidity();\n };\n /**\n * @hidden\n */\n DateInput.prototype.render = function () {\n var _this = this;\n var localizationService = provideLocalizationService(this);\n var props = __assign({}, DateInput.defaultProps, this.props);\n var formatPlaceholder = props.formatPlaceholder, format = props.format, value = props.value, min = props.min, max = props.max, name = props.name, label = props.label, id = props.id, defaultValue = props.defaultValue;\n if (this.kendoDate === null) {\n this.kendoDate = new KendoDate(this.intl.bind(this), formatPlaceholder, format);\n this.kendoDate.setValue(value || defaultValue);\n }\n else {\n this.kendoDate.format = format;\n this.kendoDate.formatPlaceholder = formatPlaceholder;\n }\n if (value !== undefined && this.value !== value) {\n this.kendoDate.setValue(value);\n }\n var _a = this.kendoDate.getTextAndFormat(), currentText = _a.text, currentFormat = _a.format;\n this.currentFormat = currentFormat;\n var inputId = id || this._inputId;\n var isValid = !this.validityStyles || this.validity.valid;\n var ariaProps = {\n 'aria-valuemin': min === null ? undefined : min.getTime(),\n 'aria-valuemax': max === null ? undefined : max.getTime(),\n 'aria-valuetext': currentText\n };\n if (this.value !== null) {\n ariaProps['aria-valuenow'] = this.value.getTime();\n }\n var wrapperClassesInstance = wrapperClasses.slice();\n if (this.props.className) {\n wrapperClassesInstance.push(this.props.className);\n }\n var dateinput = (React.createElement(\"span\", { style: !label\n ? { width: this.props.width }\n : undefined, dir: this.props.dir, className: isValid ? wrapperClassesInstance.join(' ') :\n Array.prototype.concat([], wrapperClassesInstance, invalidClasses).join(' ') },\n React.createElement(\"span\", { className: 'k-dateinput-wrap' + (this.props.disabled ? ' k-state-disabled' : '') },\n React.createElement(\"input\", __assign({ role: \"spinbutton\", tabIndex: this.props.tabIndex, disabled: this.props.disabled, title: this.props.title || currentText, type: \"text\", spellCheck: false, autoComplete: \"off\", autoCorrect: \"off\", className: \"k-input\", id: inputId, onWheel: this.wheel, onClick: this.elementClick, onInput: this.elementChange, onKeyDown: this.elementKeyDown, onChange: noop, value: currentText, name: name }, ariaProps, { ref: function (input) { return _this._element = input; } })),\n this.props.children,\n this.props.spinners &&\n React.createElement(\"span\", { className: \"k-select\", onMouseDown: this.spinnersMouseDown },\n React.createElement(\"span\", { className: \"k-link k-link-increase\", \"aria-label\": localizationService\n .toLanguageString(increaseValue, messages[increaseValue]), title: localizationService\n .toLanguageString(increaseValue, messages[increaseValue]), onClick: this.increasePart },\n React.createElement(\"span\", { className: \"k-icon k-i-arrow-n\" })),\n React.createElement(\"span\", { className: \"k-link k-link-decrease\", \"aria-label\": localizationService\n .toLanguageString(decreaseValue, messages[decreaseValue]), title: localizationService\n .toLanguageString(decreaseValue, messages[decreaseValue]), onClick: this.decreasePart },\n React.createElement(\"span\", { className: \"k-icon k-i-arrow-s\" }))))));\n return label\n ? (React.createElement(FloatingLabel, { id: inputId, value: currentText, valid: isValid, label: label, children: dateinput, style: { width: this.props.width } }))\n : dateinput;\n };\n Object.defineProperty(DateInput.prototype, \"value\", {\n /* Public Getters */\n /**\n * Gets the value of the DateInput.\n */\n get: function () {\n if (this.valueDuringOnChange !== undefined) {\n return this.valueDuringOnChange;\n }\n return this.kendoDate && this.kendoDate.getDateObject();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DateInput.prototype, \"name\", {\n /**\n * Gets the `name` property of the DateInput.\n */\n get: function () {\n return this.props.name;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DateInput.prototype, \"min\", {\n get: function () {\n return this.props.min !== undefined\n ? this.props.min\n : DateInput.defaultProps.min;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DateInput.prototype, \"max\", {\n get: function () {\n return this.props.max !== undefined\n ? this.props.max\n : DateInput.defaultProps.max;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DateInput.prototype, \"validity\", {\n /**\n * Represents the validity state into which the DateInput is set.\n */\n get: function () {\n var inRange = isInRange(this.value, this.min, this.max)\n && isInTimeRange(this.value, this.props.minTime, this.props.maxTime);\n var customError = this.props.validationMessage !== undefined;\n var isValid = (!this.required || this.value !== null) && inRange;\n var valid = this.props.valid !== undefined ? this.props.valid : isValid;\n return {\n customError: customError,\n rangeOverflow: (this.value && this.max.getTime() < this.value.getTime()) || false,\n rangeUnderflow: (this.value && this.value.getTime() < this.min.getTime()) || false,\n valid: valid,\n valueMissing: this.value === null\n };\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DateInput.prototype, \"element\", {\n /**\n * Gets the element of the DateInput.\n *\n * @return - An `HTMLInputElement`.\n *\n * @example\n * ```jsx\n * class App extends React.Component {\n * constructor(props) {\n * super(props);\n * }\n * element = null;\n * render() {\n * return (\n *
    \n * \n * this.element = dateInput ? dateInput.element : null}\n * />\n * \n *
    \n * );\n * }\n * }\n *\n * ReactDOM.render(\n * ,\n * document.getElementsByTagName('my-app')[0]\n * );\n * ```\n */\n get: function () {\n return this._element;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @hidden\n */\n DateInput.prototype.focus = function () {\n if (this._element) {\n this._element.focus();\n }\n };\n Object.defineProperty(DateInput.prototype, \"validityStyles\", {\n /**\n * @hidden\n */\n get: function () {\n return this.props.validityStyles !== undefined\n ? this.props.validityStyles\n : DateInput.defaultProps.validityStyles;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DateInput.prototype, \"required\", {\n /**\n * @hidden\n */\n get: function () {\n return this.props.required !== undefined\n ? this.props.required\n : DateInput.defaultProps.required;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @hidden\n */\n DateInput.prototype.intl = function () {\n return provideIntlService(this);\n };\n Object.defineProperty(DateInput.prototype, \"selection\", {\n /* end handlers */\n get: function () {\n var returnValue = { start: 0, end: 0 };\n if (this.element !== null && this.element.selectionStart !== undefined) {\n returnValue = { start: this.element.selectionStart, end: this.element.selectionEnd };\n }\n return returnValue;\n },\n enumerable: true,\n configurable: true\n });\n DateInput.prototype.setSelection = function (selection) {\n var _this = this;\n this._lastSelectedSymbol = this.currentFormat[selection.start];\n window.requestAnimationFrame(function () {\n if (_this.element && document.activeElement === _this.element) {\n _this.element.setSelectionRange(selection.start, selection.end);\n }\n });\n };\n DateInput.prototype.triggerChange = function (event, oldValue) {\n this.valueDuringOnChange = this.value;\n this.forceUpdate();\n if (this.props.onChange\n && !isEqual(oldValue, this.value)) {\n // isEqual works with null\n this.props.onChange.call(undefined, {\n syntheticEvent: event,\n nativeEvent: event.nativeEvent,\n value: this.value,\n target: this\n // inRange: this.props.min && this.props.max ? isInRange(value, this.props.min, this.props.max) : true\n });\n }\n this.valueDuringOnChange = undefined;\n };\n DateInput.prototype.selectionBySymbol = function (symbol) {\n var start = -1;\n var end = 0;\n for (var i = 0; i < this.currentFormat.length; i++) {\n if (this.currentFormat[i] === symbol) {\n end = i + 1;\n if (start === -1) {\n start = i;\n }\n }\n }\n if (start < 0) {\n start = 0;\n }\n return { start: start, end: end };\n };\n DateInput.prototype.selectionByIndex = function (index) {\n var selection = { start: index, end: index };\n for (var i = index, j = index - 1; i < this.currentFormat.length || j >= 0; i++, j--) {\n if (i < this.currentFormat.length && this.currentFormat[i] !== '_') {\n selection = this.selectionBySymbol(this.currentFormat[i]);\n break;\n }\n if (j >= 0 && this.currentFormat[j] !== '_') {\n selection = this.selectionBySymbol(this.currentFormat[j]);\n break;\n }\n }\n return selection;\n };\n DateInput.prototype.switchDateSegment = function (offset) {\n var _a = this.selection, selectionStart = _a.start, selectionEnd = _a.end;\n if (selectionStart < selectionEnd &&\n this.currentFormat[selectionStart] !== this.currentFormat[selectionEnd - 1]) {\n this.setSelection(this.selectionByIndex(offset > 0 ? selectionStart : selectionEnd - 1));\n return;\n }\n var previousFormatSymbol = this.currentFormat[selectionStart];\n var a = selectionStart + offset;\n while (a > 0 && a < this.currentFormat.length) {\n if (this.currentFormat[a] !== previousFormatSymbol &&\n this.currentFormat[a] !== '_') {\n break;\n }\n a += offset;\n }\n if (this.currentFormat[a] === '_') {\n // no known symbol is found\n return;\n }\n var b = a;\n while (b >= 0 && b < this.currentFormat.length) {\n if (this.currentFormat[b] !== this.currentFormat[a]) {\n break;\n }\n b += offset;\n }\n if (a > b && (b + 1 !== selectionStart || a + 1 !== selectionEnd)) {\n this.setSelection({ start: b + 1, end: a + 1 });\n }\n else if (a < b && (a !== selectionStart || b !== selectionEnd)) {\n this.setSelection({ start: a, end: b });\n }\n };\n DateInput.prototype.modifyDateSegmentValue = function (offset, event) {\n if (!this.kendoDate) {\n return;\n }\n var oldValue = this.value;\n var symbol = this.currentFormat[this.selection.start];\n var currentStepSymbol = this.kendoDate.symbolMap(symbol);\n var step = ((this.props.steps || {})[currentStepSymbol] || 1) * offset;\n this.kendoDate.modifyPart(symbol, step);\n this.setSelection(this.selectionBySymbol(symbol));\n this.triggerChange(event, oldValue);\n };\n /**\n * @hidden\n */\n DateInput.propTypes = {\n value: PropTypes.instanceOf(Date),\n format: PropTypes.string,\n formatPlaceholder: PropTypes.oneOfType([\n PropTypes.oneOf(['wide', 'narrow', 'short', 'formatPattern']),\n PropTypes.shape({\n year: PropTypes.string,\n month: PropTypes.string,\n day: PropTypes.string,\n hour: PropTypes.string,\n minute: PropTypes.string,\n second: PropTypes.string\n })\n ]),\n width: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.number\n ]),\n tabIndex: PropTypes.number,\n title: PropTypes.string,\n steps: PropTypes.shape({\n year: PropTypes.number,\n month: PropTypes.number,\n day: PropTypes.number,\n hour: PropTypes.number,\n minute: PropTypes.number,\n second: PropTypes.number\n }),\n min: PropTypes.instanceOf(Date),\n max: PropTypes.instanceOf(Date),\n disabled: PropTypes.bool,\n spinners: PropTypes.bool,\n name: PropTypes.string,\n dir: PropTypes.string,\n label: PropTypes.string,\n id: PropTypes.string,\n onChange: PropTypes.func,\n validationMessage: PropTypes.string,\n required: PropTypes.bool,\n validate: PropTypes.bool,\n valid: PropTypes.bool\n };\n /**\n * @hidden\n */\n DateInput.defaultProps = {\n format: defaultFormat,\n formatPlaceholder: defaultFormatPlaceholder,\n defaultValue: null,\n spinners: false,\n disabled: false,\n max: cloneDate(MAX_DATE),\n min: cloneDate(MIN_DATE),\n minTime: cloneDate(MIN_TIME),\n maxTime: cloneDate(MAX_TIME),\n required: false,\n validityStyles: true,\n validationMessage: VALIDATION_MESSAGE\n // the rest of the properties are undefined by default\n };\n return DateInput;\n}(React.Component));\nexport { DateInput };\nregisterForIntl(DateInput);\nregisterForLocalization(DateInput);\n//# sourceMappingURL=DateInput.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\n t[p[i]] = s[p[i]];\n return t;\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { Popup } from '@progress/kendo-react-popup';\nimport { getDate, cloneDate } from '@progress/kendo-date-math';\nimport { classNames, guid, Keys } from '@progress/kendo-react-common';\nimport { DateInput } from '../dateinput/DateInput';\nimport { Calendar } from '../calendar/components/Calendar';\nimport { MIN_DATE, MAX_DATE, setTime } from '../utils';\nimport { isInDateRange } from '../utils';\nimport { messages, toggleCalendar } from '../messages';\nimport { registerForLocalization, provideLocalizationService } from '@progress/kendo-react-intl';\nvar DatePicker = /** @class */ (function (_super) {\n __extends(DatePicker, _super);\n function DatePicker(props) {\n var _this = _super.call(this, props) || this;\n _this._popupId = guid();\n _this._element = null;\n _this._wrapper = null;\n _this._dateInput = null;\n _this._calendar = null;\n _this.shouldFocusDateInput = false;\n // Using this, to avoid bumping the react version\n // to 16.3 and use `createRef()`;\n // Inline arrow functions is a performance hit\n // so... we use this.\n _this.setDateInputRef = function (dateInput) {\n _this._dateInput = dateInput;\n };\n _this.setCalendarRef = function (calendar) {\n _this._calendar = calendar;\n };\n _this.nextValue = function (nextProps, nextState) {\n return nextProps.value !== undefined\n ? nextProps.value\n : nextState.value;\n };\n _this.nextShow = function (nextProps, nextState) {\n return nextProps.show !== undefined\n ? nextProps.show\n : nextState.show;\n };\n _this.handleInputValueChange = function (event) {\n _this.handleValueChange(event.value, event);\n };\n _this.handleCalendarValueChange = function (event) {\n var value = _this.mergeTime(event.value);\n _this.handleValueChange(value, event);\n };\n _this.handleValueChange = function (value, event) {\n _this.setState({\n value: cloneDate(value || undefined),\n show: false\n });\n _this.valueDuringOnChange = value;\n _this.showDuringOnChange = false;\n _this.shouldFocusDateInput = true;\n var onChange = _this.props.onChange;\n if (onChange) {\n onChange.call(undefined, {\n syntheticEvent: event.syntheticEvent,\n nativeEvent: event.nativeEvent,\n value: _this.value,\n show: _this.show,\n target: _this\n });\n }\n _this.valueDuringOnChange = undefined;\n _this.showDuringOnChange = undefined;\n };\n _this.handleFocus = function (event) {\n clearTimeout(_this.nextTickId);\n if (_this._wrapper) {\n _this._wrapper.classList.add('k-state-focused');\n }\n var onFocus = _this.props.onFocus;\n if (onFocus) {\n onFocus.call(undefined, event);\n }\n };\n _this.handleBlur = function (event) {\n _this.nextTick(function () {\n if (_this._wrapper) {\n _this._wrapper.classList.remove('k-state-focused');\n }\n _this.setShow(false);\n });\n var onBlur = _this.props.onBlur;\n if (onBlur) {\n onBlur.call(undefined, event);\n }\n };\n _this.handleIconClick = function () {\n if (_this.props.disabled) {\n return;\n }\n _this.shouldFocusDateInput = true;\n _this.setShow(!_this.show);\n };\n _this.handleIconMouseDown = function (event) {\n event.preventDefault();\n };\n _this.handleKeyDown = function (event) {\n var altKey = event.altKey, keyCode = event.keyCode;\n if (keyCode === Keys.esc) {\n _this.setShow(false);\n return;\n }\n if (altKey && (keyCode === Keys.up || keyCode === Keys.down)) {\n event.preventDefault();\n event.stopPropagation();\n _this.shouldFocusDateInput = keyCode === Keys.up;\n _this.setShow(keyCode === Keys.down);\n }\n };\n _this.state = {\n value: _this.props.defaultValue || DatePicker.defaultProps.defaultValue,\n show: _this.props.defaultShow || DatePicker.defaultProps.defaultShow\n };\n return _this;\n }\n Object.defineProperty(DatePicker.prototype, \"element\", {\n /**\n * Gets the wrapping element of the DatePicker.\n */\n get: function () {\n return this._element;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DatePicker.prototype, \"dateInput\", {\n /**\n * Gets the DateInput component inside the DatePicker component.\n */\n get: function () {\n return this._dateInput;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DatePicker.prototype, \"calendar\", {\n /**\n * Gets the Calendar component inside the DatePicker component.\n */\n get: function () {\n return this._calendar;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DatePicker.prototype, \"value\", {\n /**\n * Gets the value of the DatePicker.\n */\n get: function () {\n var value = this.valueDuringOnChange !== undefined\n ? this.valueDuringOnChange\n : this.props.value !== undefined\n ? this.props.value\n : this.state.value;\n return (value !== null) ? cloneDate(value) : null;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DatePicker.prototype, \"show\", {\n /**\n * Gets the popup state of the DatePicker.\n */\n get: function () {\n return this.showDuringOnChange !== undefined\n ? this.showDuringOnChange\n : this.props.show !== undefined\n ? this.props.show\n : this.state.show;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DatePicker.prototype, \"name\", {\n /**\n * Gets the `name` property of the DatePicker.\n */\n get: function () {\n return this.props.name;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DatePicker.prototype, \"min\", {\n get: function () {\n return this.props.min !== undefined\n ? this.props.min\n : DatePicker.defaultProps.min;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DatePicker.prototype, \"max\", {\n get: function () {\n return this.props.max !== undefined\n ? this.props.max\n : DatePicker.defaultProps.max;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DatePicker.prototype, \"validity\", {\n /**\n * Represents the validity state into which the DatePicker is set.\n */\n get: function () {\n var inRange = isInDateRange(this.value, this.min, this.max);\n var customError = this.props.validationMessage !== undefined;\n var isValid = (!this.required || this.value !== null) && inRange;\n var valid = this.props.valid !== undefined ? this.props.valid : isValid;\n return {\n customError: customError,\n rangeOverflow: (this.value && this.max.getTime() < this.value.getTime()) || false,\n rangeUnderflow: (this.value && this.value.getTime() < this.min.getTime()) || false,\n valid: valid,\n valueMissing: this.value === null\n };\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DatePicker.prototype, \"validityStyles\", {\n /**\n * @hidden\n */\n get: function () {\n return this.props.validityStyles !== undefined\n ? this.props.validityStyles\n : DatePicker.defaultProps.validityStyles;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DatePicker.prototype, \"required\", {\n /**\n * @hidden\n */\n get: function () {\n return this.props.required !== undefined\n ? this.props.required\n : DatePicker.defaultProps.required;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @hidden\n */\n DatePicker.prototype.componentDidMount = function () {\n if (this.show) {\n // If defaultShow is true during the initial render, the popup is not aligned.\n this.forceUpdate();\n }\n if (this._dateInput && this._dateInput.element) {\n this._dateInput.element.setAttribute('aria-haspopup', 'true');\n // this._dateInput.element.setAttribute('aria-expanded', `${this.show}`);\n }\n if (this.element) {\n this.element.setAttribute('aria-expanded', \"\" + this.show);\n }\n };\n /**\n * @hidden\n */\n DatePicker.prototype.componentDidUpdate = function (prevProps) {\n if (this.element) {\n this.element.setAttribute('aria-expanded', \"\" + this.show);\n }\n if (this._calendar && this._calendar.element && this.show && !prevProps.show) {\n this._calendar.element.focus({ preventScroll: true });\n }\n if (this._dateInput\n && this._dateInput.element\n && !this.show\n && this.shouldFocusDateInput) {\n this._dateInput.element.focus({ preventScroll: true });\n }\n this.shouldFocusDateInput = false;\n };\n /**\n * @hidden\n */\n DatePicker.prototype.componentWillUnmount = function () {\n clearTimeout(this.nextTickId);\n };\n /**\n * @hidden\n */\n DatePicker.prototype.focus = function () {\n if (this._dateInput) {\n this._dateInput.focus();\n }\n };\n /**\n * @hidden\n */\n DatePicker.prototype.render = function () {\n var _this = this;\n var _a = this.props, disabled = _a.disabled, tabIndex = _a.tabIndex, title = _a.title, id = _a.id, format = _a.format, formatPlaceholder = _a.formatPlaceholder, min = _a.min, max = _a.max, weekNumber = _a.weekNumber, focusedDate = _a.focusedDate, className = _a.className, width = _a.width, name = _a.name, validationMessage = _a.validationMessage, required = _a.required, validityStyles = _a.validityStyles;\n var _b = this.props.popupSettings, popupClass = _b.popupClass, otherPopupSettings = __rest(_b, [\"popupClass\"]);\n var show = this.show;\n var value = this.value;\n var sanitizedValue = value && getDate(value);\n var isValid = !this.validityStyles || this.validity.valid;\n var rootClassName = classNames('k-widget k-datepicker', {\n 'k-state-invalid': !isValid\n }, className);\n var wrapperClassNames = classNames('k-picker-wrap', {\n 'k-state-default': !disabled,\n 'k-state-disabled': disabled\n });\n var popupClassNames = classNames('k-calendar-container k-group k-reset', popupClass);\n var dateInputProps = {\n disabled: disabled,\n format: format,\n formatPlaceholder: formatPlaceholder,\n id: id,\n max: max,\n min: min,\n name: name,\n onChange: this.handleInputValueChange,\n required: required,\n tabIndex: !show ? tabIndex : -1,\n title: title,\n valid: this.validity.valid,\n validationMessage: validationMessage,\n validityStyles: validityStyles,\n value: value\n };\n var popupProps = __assign({ show: show, animate: this._wrapper !== null, anchor: this._wrapper || undefined, className: popupClassNames, id: this._popupId, anchorAlign: {\n horizontal: 'left',\n vertical: 'bottom'\n }, popupAlign: {\n horizontal: 'left',\n vertical: 'top'\n } }, otherPopupSettings);\n var calendarProps = {\n disabled: disabled,\n value: sanitizedValue,\n min: min,\n max: max,\n weekNumber: weekNumber,\n focusedDate: focusedDate,\n onChange: this.handleCalendarValueChange\n };\n var calendar = this.props.calendar\n ? React.createElement(this.props.calendar, __assign({}, calendarProps))\n : React.createElement(Calendar, __assign({ ref: this.setCalendarRef }, calendarProps));\n return (React.createElement(\"span\", { role: \"group\", \"aria-expanded\": this.show, ref: function (span) { _this._element = span; }, className: rootClassName, onKeyDown: this.handleKeyDown, style: { width: width }, onFocus: this.handleFocus, onBlur: this.handleBlur },\n React.createElement(\"span\", { ref: function (span) { _this._wrapper = span; }, className: wrapperClassNames },\n this.props.dateInput\n ? React.createElement(this.props.dateInput, __assign({}, dateInputProps))\n : React.createElement(DateInput, __assign({ ref: this.setDateInputRef }, dateInputProps)),\n React.createElement(\"span\", __assign({ role: \"button\", onMouseDown: this.handleIconMouseDown, onClick: this.handleIconClick, title: provideLocalizationService(this)\n .toLanguageString(toggleCalendar, messages[toggleCalendar]), className: \"k-select\" }, {\n 'aria-label': provideLocalizationService(this)\n .toLanguageString(toggleCalendar, messages[toggleCalendar])\n }),\n React.createElement(\"span\", { className: \"k-icon k-i-calendar\" }))),\n this.props.popup\n ? React.createElement(this.props.popup, __assign({}, popupProps),\n calendar,\n \" \")\n : React.createElement(Popup, __assign({}, popupProps), calendar)));\n };\n DatePicker.prototype.setShow = function (show) {\n if (this.show === show) {\n return;\n }\n this.setState({ show: show });\n };\n DatePicker.prototype.mergeTime = function (value) {\n return this.value && value ? setTime(value, this.value) : value;\n };\n DatePicker.prototype.nextTick = function (f) {\n // XXX: use setTimeout due to async focus/blur events in IE, and missing relatedTarget prop.\n // XXX: https://github.com/facebook/react/issues/3751\n // Handles multiple focus events happening at the same time.\n clearTimeout(this.nextTickId);\n this.nextTickId = setTimeout(function () { return f(); });\n };\n /**\n * @hidden\n */\n DatePicker.propTypes = {\n className: PropTypes.string,\n defaultShow: PropTypes.bool,\n defaultValue: PropTypes.instanceOf(Date),\n disabled: PropTypes.bool,\n focusedDate: PropTypes.instanceOf(Date),\n format: PropTypes.string,\n formatPlaceholder: PropTypes.oneOfType([\n PropTypes.oneOf(['wide', 'narrow', 'short', 'formatPattern']),\n PropTypes.shape({\n year: PropTypes.string,\n month: PropTypes.string,\n day: PropTypes.string,\n hour: PropTypes.string,\n minute: PropTypes.string,\n second: PropTypes.string\n })\n ]),\n id: PropTypes.string,\n min: PropTypes.instanceOf(Date),\n max: PropTypes.instanceOf(Date),\n name: PropTypes.string,\n popupSettings: PropTypes.shape({\n animate: PropTypes.bool,\n appendTo: PropTypes.any,\n popupClass: PropTypes.string\n }),\n show: PropTypes.bool,\n tabIndex: PropTypes.number,\n title: PropTypes.string,\n value: PropTypes.instanceOf(Date),\n weekNumber: PropTypes.bool,\n width: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n validationMessage: PropTypes.string,\n required: PropTypes.bool,\n validate: PropTypes.bool,\n valid: PropTypes.bool\n };\n /**\n * @hidden\n */\n DatePicker.defaultProps = {\n defaultShow: false,\n defaultValue: null,\n disabled: false,\n format: 'd',\n max: MAX_DATE,\n min: MIN_DATE,\n popupSettings: {},\n tabIndex: 0,\n title: '',\n weekNumber: false,\n required: false,\n validityStyles: true\n };\n return DatePicker;\n}(React.Component));\nexport { DatePicker };\nregisterForLocalization(DatePicker);\n//# sourceMappingURL=DatePicker.js.map","import { cloneDate } from '@progress/kendo-date-math';\nvar setHours = function (date, hours) {\n var clone = cloneDate(date);\n clone.setHours(hours);\n return clone;\n};\nvar isAM = function (value) { return value !== null && value < 12; };\nvar isPM = function (value) { return value !== null && (!value || value > 11); };\nvar inRange = function (value, min, max) { return ((!min && !max) || (value >= min && value <= max)); };\nvar inReverseRange = function (value, min, max) { return ((!min && !max) || value >= min || value <= max); };\n/**\n * @hidden\n */\nvar DayPeriodService = /** @class */ (function () {\n function DayPeriodService(intl) {\n this.intl = intl;\n }\n /**\n * @hidden\n */\n DayPeriodService.prototype.apply = function (value, candidate) {\n var hour = value.getHours();\n var hourAM = isAM(hour);\n var candidateAM = isAM(candidate.getHours());\n if ((hourAM && candidateAM) || (!hourAM && !candidateAM)) {\n return value;\n }\n var _a = this.normalizedRange(), min = _a[0], _b = _a[1], max = _b === void 0 ? 24 : _b;\n var result = hour + (candidateAM ? -12 : 12);\n return setHours(value, Math.min(Math.max(min, result), (max || 24)));\n };\n /**\n * @hidden\n */\n DayPeriodService.prototype.configure = function (settings) {\n var _a = settings.min, min = _a === void 0 ? this.min : _a, _b = settings.max, max = _b === void 0 ? this.max : _b, _c = settings.part, part = _c === void 0 ? this.part : _c;\n this.min = min;\n this.max = max;\n this.part = part;\n };\n /**\n * @hidden\n */\n DayPeriodService.prototype.data = function (_) {\n var names = this.part.names;\n if (!names) {\n return [];\n }\n var data = [];\n var _a = this.normalizedRange(), min = _a[0], max = _a[1];\n var dayPeriod = this.intl.dateFormatNames(names);\n if (isAM(min)) {\n data.push({ text: dayPeriod.am, value: setHours(this.min, min) });\n }\n if (isPM(max)) {\n data.push({ text: dayPeriod.pm, value: setHours(this.min, Math.max(12, max)) });\n }\n return this.min.getHours() !== min ? data.reverse() : data;\n };\n /**\n * @hidden\n */\n DayPeriodService.prototype.isRangeChanged = function (_, __) {\n return false;\n };\n /**\n * @hidden\n */\n DayPeriodService.prototype.limitRange = function (min, max, _) {\n return [min, max];\n };\n /**\n * @hidden\n */\n DayPeriodService.prototype.total = function () {\n var _a = this.normalizedRange(), min = _a[0], max = _a[1];\n if (!min && !max) {\n return 2;\n }\n if (min > 11 || max < 12) {\n return 1;\n }\n return 2;\n };\n /**\n * @hidden\n */\n DayPeriodService.prototype.selectedIndex = function (value) {\n if (!this.valueInList(value)) {\n return -1;\n }\n var index = Math.floor(value.getHours() / 12);\n return this.min.getHours() === this.normalizedRange()[0] ? index : (index === 0 ? 1 : 0);\n };\n /**\n * @hidden\n */\n DayPeriodService.prototype.valueInList = function (value) {\n var reverse = this.min.getHours() !== this.normalizedRange()[0];\n var isInRange = reverse ? inReverseRange : inRange;\n return isInRange(value.getHours(), this.min.getHours(), this.max.getHours());\n };\n DayPeriodService.prototype.normalizedRange = function () {\n var minHour = this.min.getHours();\n var maxHour = this.max.getHours();\n return [\n Math.min(minHour, maxHour),\n Math.max(minHour, maxHour)\n ];\n };\n return DayPeriodService;\n}());\nexport { DayPeriodService };\n//# sourceMappingURL=DayPeriodService.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar _a, _b;\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { cloneDate } from '@progress/kendo-date-math';\nimport { Keys, noop } from '@progress/kendo-react-common';\nimport { provideIntlService, registerForIntl } from '@progress/kendo-react-intl';\nimport { Virtualization } from '../virtualization/Virtualization';\nimport { TIME_PART } from './models';\nimport { SecondsService, MinutesService, HoursService, DayPeriodService, DOMService } from './services';\nimport { MAX_TIME, MIDNIGHT_DATE } from '../utils';\nvar SCROLL_THRESHOLD = 2; // < 2px threshold\nvar SNAP_THRESHOLD = 0.05; // % of the item height\nvar SKIP = 0;\nvar getters = (_a = {},\n _a[Keys.end] = function (data, _) { return data[data.length - 1]; },\n _a[Keys.home] = function (data, _) { return data[0]; },\n _a[Keys.up] = function (data, index) { return data[index - 1]; },\n _a[Keys.down] = function (data, index) { return data[index + 1]; },\n _a);\nvar services = (_b = {},\n _b[TIME_PART.dayperiod] = DayPeriodService,\n _b[TIME_PART.hour] = HoursService,\n _b[TIME_PART.minute] = MinutesService,\n _b[TIME_PART.second] = SecondsService,\n _b);\n/**\n * @hidden\n */\nvar TimeList = /** @class */ (function (_super) {\n __extends(TimeList, _super);\n function TimeList(props) {\n var _this = _super.call(this, props) || this;\n _this.animateToIndex = false;\n _this.focus = function (args) {\n Promise.resolve().then(function () {\n if (!_this.element) {\n return;\n }\n _this.element.focus(args);\n });\n };\n _this.itemOffset = function (scrollTop) {\n if (!_this.virtualization) {\n return -1;\n }\n var valueIndex = _this.service.selectedIndex(_this.props.value);\n var activeIndex = _this.virtualization.activeIndex();\n var offset = _this.virtualization.itemOffset(activeIndex);\n var distance = Math.abs(Math.ceil(scrollTop) - offset);\n if (valueIndex === activeIndex && distance < SCROLL_THRESHOLD) {\n return offset;\n }\n var scrollUp = valueIndex > activeIndex;\n var moveToNext = scrollUp && distance >= _this.bottomThreshold || !scrollUp && distance > _this.topThreshold;\n return moveToNext ? _this.virtualization.itemOffset(activeIndex + 1) : offset;\n };\n _this.calculateHeights = function () {\n if (!_this.dom.didCalculate) {\n return;\n }\n _this.itemHeight = _this.dom.itemHeight;\n _this.listHeight = _this.dom.timeListHeight;\n _this.topOffset = (_this.listHeight - _this.itemHeight) / 2;\n _this.bottomOffset = _this.listHeight - _this.itemHeight;\n _this.topThreshold = _this.itemHeight * SNAP_THRESHOLD;\n _this.bottomThreshold = _this.itemHeight * (1 - SNAP_THRESHOLD);\n };\n _this.configureServices = function (_a) {\n var _b = _a === void 0 ? _this.props : _a, min = _b.min, max = _b.max, value = _b.value;\n var _c = _this.service.limitRange(min || _this.min, max || _this.max, value || _this.props.value), newMin = _c[0], newMax = _c[1];\n _this.service.configure(_this.serviceSettings({ min: newMin, max: newMax }));\n };\n _this.serviceSettings = function (settings) {\n var defaults = {\n boundRange: _this.props.boundRange || TimeList.defaultProps.boundRange,\n insertUndividedMax: false,\n min: cloneDate(_this.min),\n max: cloneDate(_this.max),\n part: _this.props.part,\n step: _this.step\n };\n var result = Object.assign({}, defaults, settings);\n result.boundRange = result.part.type !== 'hour' || _this.props.boundRange || TimeList.defaultProps.boundRange;\n return result;\n };\n _this.handleScrollAction = function (_a) {\n var target = _a.target, animationInProgress = _a.animationInProgress;\n if (!_this.virtualization) {\n return;\n }\n if (target && !animationInProgress) {\n _this.animateToIndex = false;\n var index = _this.virtualization.itemIndex(_this.itemOffset(target.scrollTop));\n var dataItem = _this.service.data(_this.props.value)[index];\n _this.handleChange(dataItem);\n }\n };\n _this.handleFocus = function (event) {\n var onFocus = _this.props.onFocus;\n if (onFocus) {\n onFocus.call(undefined, event);\n }\n };\n _this.handleBlur = function (event) {\n var onBlur = _this.props.onBlur;\n if (onBlur) {\n onBlur.call(undefined, event);\n }\n };\n _this.handleMouseOver = function () {\n if (!_this._element) {\n return;\n }\n if (document && document.activeElement !== _this._element) {\n _this._element.focus({ preventScroll: true });\n }\n };\n _this.handleKeyDown = function (event) {\n var keyCode = event.keyCode;\n if (keyCode === Keys.down\n || keyCode === Keys.up\n || keyCode === Keys.end\n || keyCode === Keys.home) {\n event.preventDefault();\n }\n var getter = getters[event.keyCode] || noop;\n var dataItem = getter(_this.service.data(_this.props.value), _this.service.selectedIndex(_this.props.value));\n if (dataItem) {\n _this.handleChange(dataItem);\n }\n };\n _this.handleChange = function (dataItem) {\n var candidate = _this.service.apply(_this.props.value, dataItem.value);\n if (_this.props.value.getTime() === candidate.getTime()) {\n return;\n }\n _this.setState({\n value: candidate\n });\n var onChange = _this.props.onChange;\n if (onChange) {\n onChange.call(undefined, candidate);\n }\n };\n _this.dom = new DOMService();\n return _this;\n }\n Object.defineProperty(TimeList.prototype, \"element\", {\n get: function () {\n return this._element;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TimeList.prototype, \"animate\", {\n get: function () {\n return Boolean(this.props.smoothScroll && this.animateToIndex);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TimeList.prototype, \"min\", {\n get: function () {\n return this.props.min || TimeList.defaultProps.min;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TimeList.prototype, \"max\", {\n get: function () {\n return this.props.max || TimeList.defaultProps.max;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TimeList.prototype, \"step\", {\n get: function () {\n return this.props.step !== undefined && this.props.step !== 0\n ? Math.floor(this.props.step)\n : TimeList.defaultProps.step;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @hidden\n */\n TimeList.prototype.componentDidMount = function () {\n var _this = this;\n // Async calculation of height to avoid animation cancellation\n Promise.resolve().then(function () {\n if (!_this._element) {\n return;\n }\n _this.dom.calculateHeights(_this._element);\n _this.forceUpdate();\n });\n };\n /**\n * @hidden\n */\n TimeList.prototype.componentDidUpdate = function () {\n if (!this.virtualization) {\n return;\n }\n var index = this.service.selectedIndex(this.props.value);\n this.virtualization[this.animate ? 'animateToIndex' : 'scrollToIndex'](index);\n this.animateToIndex = true;\n };\n /**\n * @hidden\n */\n TimeList.prototype.render = function () {\n var _this = this;\n if (!this.props.part.type || !services[this.props.part.type]) {\n return;\n }\n this.calculateHeights();\n this.intl = provideIntlService(this);\n this.service = new services[this.props.part.type](this.intl);\n this.configureServices();\n var data = this.service.data(this.props.value);\n var transform = 'translateY(' + this.topOffset + 'px)';\n var total = this.service.total(this.props.value);\n var list = (React.createElement(\"ul\", { style: { transform: transform, msTransform: transform }, className: \"k-reset\" }, data.map(function (item, idx) {\n return (React.createElement(\"li\", { key: idx, className: \"k-item\", onClick: function () { _this.handleChange(item); } },\n React.createElement(\"span\", null, item.text)));\n })));\n return (React.createElement(\"div\", { className: \"k-time-list\", id: String(this.props.id || ''), tabIndex: this.props.disabled ? -1 : 0, ref: function (el) { _this._element = el; }, onKeyDown: this.handleKeyDown, onFocus: this.handleFocus, onBlur: this.handleBlur, onMouseOver: this.handleMouseOver }, this.dom.didCalculate\n ? (React.createElement(Virtualization, { bottomOffset: this.bottomOffset, children: list, className: \"k-time-container\", itemHeight: this.itemHeight, maxScrollDifference: this.listHeight, onScrollAction: this.handleScrollAction, ref: function (el) { _this.virtualization = el; }, role: \"presentation\", skip: SKIP, tabIndex: -1, take: total, topOffset: this.topOffset, total: total }))\n : (React.createElement(\"div\", { className: \"k-time-container\" }, list))));\n };\n TimeList.propTypes = {\n id: PropTypes.number,\n max: PropTypes.instanceOf(Date),\n min: PropTypes.instanceOf(Date),\n part: function (props, propName, componentName) {\n var prop = props[propName];\n if (!prop || !services[prop.type]) {\n throw new Error(\"\\n Invalid prop '\" + propName + \"' supplied to \" + componentName + \".\\n Supported part types are hour|minute|second|dayperiod.\\n \");\n }\n },\n step: function (props, propName, componentName) {\n var prop = props[propName];\n if (prop !== undefined && prop <= 0) {\n throw new Error(\"\\n Invalid prop '\" + propName + \"' supplied to \" + componentName + \".\\n \" + propName + \" cannot be less than 1.\\n \");\n }\n },\n value: PropTypes.instanceOf(Date),\n smoothScroll: PropTypes.bool\n };\n TimeList.defaultProps = {\n boundRange: false,\n max: MAX_TIME,\n min: MIDNIGHT_DATE,\n step: 1,\n smoothScroll: true\n };\n return TimeList;\n}(React.Component));\nexport { TimeList };\nregisterForIntl(TimeList);\n//# sourceMappingURL=TimeList.js.map","import { domContainerFactory as containerFactory } from '../../utils';\nimport { canUseDOM } from '@progress/kendo-react-common';\n/**\n * @hidden\n */\nvar DOMService = /** @class */ (function () {\n function DOMService() {\n this.didCalculate = false;\n }\n DOMService.prototype.ensureHeights = function () {\n if (this.timeListHeight !== undefined) {\n return;\n }\n this.calculateHeights();\n };\n DOMService.prototype.calculateHeights = function (container) {\n if (!canUseDOM) {\n return;\n }\n var div = containerFactory('div');\n var ul = containerFactory('ul');\n var li = containerFactory('li');\n var listItem = function () { return li('02', 'k-item'); };\n var list = function () { return ul([listItem()], 'k-reset'); };\n var scrollable = function () { return (div([list()], 'k-time-container k-content k-scrollable')); };\n var timeListWrapper = function () {\n return div([div([scrollable()], 'k-time-list')], 'k-time-list-wrapper', { left: '-10000px', position: 'absolute' });\n };\n var timeWrapper = timeListWrapper();\n var listContainer = container && container.querySelector('.k-time-container');\n var hostContainer = listContainer || document.body;\n var wrapper = hostContainer.appendChild(timeWrapper);\n this.timeListHeight = wrapper.querySelector('.k-scrollable').offsetHeight;\n this.itemHeight = wrapper.querySelector('li').offsetHeight;\n hostContainer.removeChild(wrapper);\n this.didCalculate = true;\n };\n return DOMService;\n}());\nexport { DOMService };\n//# sourceMappingURL=DOMService.js.map","import { getDate, isEqual } from '@progress/kendo-date-math';\nimport { MIDNIGHT_DATE } from '../../utils';\nimport { range, setHours } from '../utils';\nvar HOURS_IN_DAY = 24;\nvar clampToRange = function (rangeValue) { return function (value) { return value % rangeValue; }; };\nvar clamp = clampToRange(HOURS_IN_DAY);\nvar stepper = function (start, step) { return function (idx) { return clamp(start + (idx * step)); }; };\nvar distanceFromMin = function (value, min) { return clamp(HOURS_IN_DAY + value - min); };\nvar limit = function (borderValue) { return function (barrier, value) {\n var useBarrier = !value || getDate(barrier).getTime() === getDate(value).getTime();\n return useBarrier ? barrier : setHours(barrier, borderValue);\n}; };\nvar limitDown = limit(0);\nvar limitUp = limit(HOURS_IN_DAY - 1);\n/**\n * @hidden\n */\nvar HoursService = /** @class */ (function () {\n function HoursService(intl) {\n this.intl = intl;\n this.boundRange = false;\n this.insertUndividedMax = false;\n }\n HoursService.prototype.apply = function (value, candidate) {\n return setHours(value, candidate.getHours());\n };\n HoursService.prototype.configure = function (settings) {\n var _this = this;\n var _a = settings.boundRange, boundRange = _a === void 0 ? this.boundRange : _a, _b = settings.insertUndividedMax, insertUndividedMax = _b === void 0 ? this.insertUndividedMax : _b, _c = settings.min, min = _c === void 0 ? this.min : _c, _d = settings.max, max = _d === void 0 ? this.max : _d, part = settings.part, _e = settings.step, step = _e === void 0 ? this.step : _e;\n this.boundRange = boundRange;\n this.insertUndividedMax = insertUndividedMax;\n this.toListItem = function (hour) {\n var date = setHours(MIDNIGHT_DATE, hour);\n return {\n text: _this.intl.formatDate(date, part.pattern),\n value: date\n };\n };\n this.min = min;\n this.max = max;\n this.step = step;\n };\n HoursService.prototype.data = function (selectedValue) {\n var _this = this;\n var min = this.range(selectedValue)[0];\n var getHour = stepper(min, this.step);\n var convertToItem = function (idx) { return (_this.toListItem(getHour(idx))); };\n var data = range(0, this.countFromMin(selectedValue)).map(convertToItem);\n this.addLast(data);\n if (selectedValue) {\n this.addMissing(data, selectedValue);\n }\n return data;\n };\n HoursService.prototype.isRangeChanged = function (min, max) {\n return !isEqual(this.min, min) || !isEqual(this.max, max);\n };\n HoursService.prototype.limitRange = function (min, max, value) {\n return this.boundRange ? [limitDown(min, value), limitUp(max, value)] : [min, max];\n };\n HoursService.prototype.total = function (value) {\n var last = this.insertUndividedMax && this.isLastMissing(value) ? 1 : 0;\n var missing = this.isMissing(value) ? 1 : 0;\n return this.countFromMin(value) + missing + last;\n };\n HoursService.prototype.selectedIndex = function (value) {\n return Math.ceil(this.divideByStep(value));\n };\n HoursService.prototype.valueInList = function (value) {\n if (!value) {\n return true;\n }\n var matchMax = this.insertUndividedMax && this.lastHour(value) === value.getHours();\n return matchMax || !this.isMissing(value);\n };\n HoursService.prototype.addLast = function (data, value) {\n if (this.insertUndividedMax && this.isLastMissing(value)) {\n data.push(this.toListItem(this.lastHour(value)));\n }\n return data;\n };\n HoursService.prototype.addMissing = function (data, value) {\n if (this.valueInList(value)) {\n return data;\n }\n var missingItem = this.toListItem(value.getHours());\n data.splice(this.selectedIndex(value), 0, missingItem);\n return data;\n };\n HoursService.prototype.countFromMin = function (value) {\n var _a = this.range(value), min = _a[0], max = _a[1];\n return Math.floor(distanceFromMin(max, min) / this.step) + 1; /* include min */\n };\n HoursService.prototype.isMissing = function (value) {\n if (!value) {\n return false;\n }\n return this.selectedIndex(value) !== this.divideByStep(value);\n };\n HoursService.prototype.isLastMissing = function (value) {\n return this.isMissing(setHours(this.max, this.lastHour(value)));\n };\n HoursService.prototype.divideByStep = function (value) {\n return distanceFromMin(value.getHours(), this.min.getHours()) / this.step;\n };\n HoursService.prototype.lastHour = function (value) {\n return this.range(value)[1];\n };\n HoursService.prototype.range = function (value) {\n var _a = this.limitRange(this.min, this.max, value), min = _a[0], max = _a[1];\n return [min.getHours(), max.getHours()];\n };\n return HoursService;\n}());\nexport { HoursService };\n//# sourceMappingURL=HoursService.js.map","import { isEqual } from '@progress/kendo-date-math';\nimport { MIDNIGHT_DATE } from '../../utils';\nimport { range, setMinutes } from '../utils';\nvar MINUTES_IN_HOUR = 60;\nvar clampToRange = function (rangeValue) { return function (value) { return value % rangeValue; }; };\nvar clamp = clampToRange(MINUTES_IN_HOUR);\nvar stepper = function (start, step) { return function (idx) { return clamp(start + (idx * step)); }; };\nvar distanceFromMin = function (value, min) { return clamp(MINUTES_IN_HOUR + value - min); };\nvar limit = function (borderValue) { return function (barrier, value) {\n var useBarrier = !value || barrier.getHours() === value.getHours();\n return useBarrier ? barrier : setMinutes(barrier, borderValue);\n}; };\nvar limitDown = limit(0);\nvar limitUp = limit(MINUTES_IN_HOUR - 1);\n/**\n * @hidden\n */\nvar MinutesService = /** @class */ (function () {\n function MinutesService(intl) {\n this.intl = intl;\n this.insertUndividedMax = false;\n }\n MinutesService.prototype.apply = function (value, candidate) {\n return setMinutes(value, candidate.getMinutes());\n };\n MinutesService.prototype.configure = function (settings) {\n var _this = this;\n var _a = settings.insertUndividedMax, insertUndividedMax = _a === void 0 ? this.insertUndividedMax : _a, _b = settings.min, min = _b === void 0 ? this.min : _b, _c = settings.max, max = _c === void 0 ? this.max : _c, part = settings.part, _d = settings.step, step = _d === void 0 ? this.step : _d;\n this.insertUndividedMax = insertUndividedMax;\n this.toListItem = function (minute) {\n var date = setMinutes(MIDNIGHT_DATE, minute);\n return {\n text: _this.intl.formatDate(date, part.pattern),\n value: date\n };\n };\n this.min = min;\n this.max = max;\n this.step = step;\n };\n MinutesService.prototype.data = function (selectedValue) {\n var _this = this;\n var min = this.range(selectedValue)[0];\n var getMinute = stepper(min, this.step);\n var convertToItem = function (idx) { return (_this.toListItem(getMinute(idx))); };\n var data = range(0, this.countFromMin(selectedValue)).map(convertToItem);\n this.addLast(data);\n if (selectedValue) {\n this.addMissing(data, selectedValue);\n }\n return data;\n };\n MinutesService.prototype.isRangeChanged = function (min, max) {\n return !isEqual(this.min, min) || !isEqual(this.max, max);\n };\n MinutesService.prototype.limitRange = function (min, max, value) {\n return [limitDown(min, value), limitUp(max, value)];\n };\n MinutesService.prototype.total = function (value) {\n var last = this.insertUndividedMax && this.isLastMissing(value) ? 1 : 0;\n var missing = this.isMissing(value) ? 1 : 0;\n return this.countFromMin(value) + missing + last;\n };\n MinutesService.prototype.selectedIndex = function (value) {\n return Math.ceil(this.divideByStep(value));\n };\n MinutesService.prototype.valueInList = function (value) {\n if (!value) {\n return true;\n }\n var matchMax = this.insertUndividedMax && this.lastMinute(value) === value.getMinutes();\n return matchMax || !this.isMissing(value);\n };\n MinutesService.prototype.addLast = function (data, value) {\n if (this.insertUndividedMax && this.isLastMissing(value)) {\n data.push(this.toListItem(this.lastMinute(value)));\n }\n return data;\n };\n MinutesService.prototype.addMissing = function (data, value) {\n if (this.valueInList(value)) {\n return data;\n }\n var missingItem = this.toListItem(value.getMinutes());\n data.splice(this.selectedIndex(value), 0, missingItem);\n return data;\n };\n MinutesService.prototype.countFromMin = function (value) {\n var _a = this.range(value), min = _a[0], max = _a[1];\n return Math.floor(distanceFromMin(max, min) / this.step) + 1; /* include min */\n };\n MinutesService.prototype.isMissing = function (value) {\n if (!value) {\n return false;\n }\n return this.selectedIndex(value) !== this.divideByStep(value);\n };\n MinutesService.prototype.isLastMissing = function (value) {\n return this.isMissing(setMinutes(this.max, this.lastMinute(value)));\n };\n MinutesService.prototype.divideByStep = function (value) {\n return distanceFromMin(value.getMinutes(), this.min.getMinutes()) / this.step;\n };\n MinutesService.prototype.lastMinute = function (value) {\n return this.range(value)[1];\n };\n MinutesService.prototype.range = function (value) {\n var _a = this.limitRange(this.min, this.max, value), min = _a[0], max = _a[1];\n return [min.getMinutes(), max.getMinutes()];\n };\n return MinutesService;\n}());\nexport { MinutesService };\n//# sourceMappingURL=MinutesService.js.map","import { isEqual } from '@progress/kendo-date-math';\nimport { MIDNIGHT_DATE } from '../../utils';\nimport { range, setSeconds } from '../utils';\nvar SECONDS_IN_HOUR = 60;\nvar clampToRange = function (rangeValue) { return function (value) { return value % rangeValue; }; };\nvar clamp = clampToRange(SECONDS_IN_HOUR);\nvar stepper = function (start, step) { return function (idx) { return clamp(start + (idx * step)); }; };\nvar distanceFromMin = function (value, min) { return clamp(SECONDS_IN_HOUR + value - min); };\nvar limit = function (borderValue) { return function (barrier, value) {\n var useBarrier = !value ||\n (barrier.getMinutes() === value.getMinutes() && barrier.getHours() === value.getHours());\n return useBarrier ? barrier : setSeconds(barrier, borderValue);\n}; };\nvar limitDown = limit(0);\nvar limitUp = limit(SECONDS_IN_HOUR - 1);\n/**\n * @hidden\n */\nvar SecondsService = /** @class */ (function () {\n function SecondsService(intl) {\n this.intl = intl;\n this.insertUndividedMax = false;\n }\n SecondsService.prototype.apply = function (value, candidate) {\n return setSeconds(value, candidate.getSeconds());\n };\n SecondsService.prototype.configure = function (settings) {\n var _this = this;\n var _a = settings.insertUndividedMax, insertUndividedMax = _a === void 0 ? this.insertUndividedMax : _a, _b = settings.min, min = _b === void 0 ? this.min : _b, _c = settings.max, max = _c === void 0 ? this.max : _c, part = settings.part, _d = settings.step, step = _d === void 0 ? this.step : _d;\n this.insertUndividedMax = insertUndividedMax;\n this.toListItem = function (minute) {\n var date = setSeconds(MIDNIGHT_DATE, minute);\n return {\n text: _this.intl.formatDate(date, part.pattern),\n value: date\n };\n };\n this.min = min;\n this.max = max;\n this.step = step;\n };\n SecondsService.prototype.data = function (selectedValue) {\n var _this = this;\n var min = this.range(selectedValue)[0];\n var getSecond = stepper(min, this.step);\n var convertToItem = function (idx) { return (_this.toListItem(getSecond(idx))); };\n var data = range(0, this.countFromMin(selectedValue)).map(convertToItem);\n this.addLast(data);\n if (selectedValue) {\n this.addMissing(data, selectedValue);\n }\n return data;\n };\n SecondsService.prototype.isRangeChanged = function (min, max) {\n return !isEqual(this.min, min) || !isEqual(this.max, max);\n };\n SecondsService.prototype.limitRange = function (min, max, value) {\n return [limitDown(min, value), limitUp(max, value)];\n };\n SecondsService.prototype.total = function (value) {\n var last = this.insertUndividedMax && this.isLastMissing(value) ? 1 : 0;\n var missing = this.isMissing(value) ? 1 : 0;\n return this.countFromMin(value) + missing + last;\n };\n SecondsService.prototype.selectedIndex = function (value) {\n return Math.ceil(this.divideByStep(value));\n };\n SecondsService.prototype.valueInList = function (value) {\n if (!value) {\n return true;\n }\n var matchMax = this.insertUndividedMax && this.lastSecond(value) === value.getSeconds();\n return matchMax || !this.isMissing(value);\n };\n SecondsService.prototype.divideByStep = function (value) {\n return distanceFromMin(value.getSeconds(), this.min.getSeconds()) / this.step;\n };\n SecondsService.prototype.addLast = function (data, value) {\n if (this.insertUndividedMax && this.isLastMissing(value)) {\n data.push(this.toListItem(this.lastSecond(value)));\n }\n return data;\n };\n SecondsService.prototype.addMissing = function (data, value) {\n if (this.valueInList(value)) {\n return data;\n }\n var missingItem = this.toListItem(value.getSeconds());\n data.splice(this.selectedIndex(value), 0, missingItem);\n return data;\n };\n SecondsService.prototype.countFromMin = function (value) {\n var _a = this.range(value), min = _a[0], max = _a[1];\n return Math.floor(distanceFromMin(max, min) / this.step) + 1; /* include min */\n };\n SecondsService.prototype.isMissing = function (value) {\n if (!value) {\n return false;\n }\n return this.selectedIndex(value) !== this.divideByStep(value);\n };\n SecondsService.prototype.isLastMissing = function (value) {\n return this.isMissing(setSeconds(this.max, this.lastSecond(value)));\n };\n SecondsService.prototype.lastSecond = function (value) {\n return this.range(value)[1];\n };\n SecondsService.prototype.range = function (value) {\n var _a = this.limitRange(this.min, this.max, value), min = _a[0], max = _a[1];\n return [min.getSeconds(), max.getSeconds()];\n };\n return SecondsService;\n}());\nexport { SecondsService };\n//# sourceMappingURL=SecondsService.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { cloneDate } from '@progress/kendo-date-math';\nimport { classNames, Keys } from '@progress/kendo-react-common';\nimport { provideIntlService, provideLocalizationService, registerForIntl, registerForLocalization } from '@progress/kendo-react-intl';\nimport { messages, now, selectNow } from '../messages';\nimport { TimeList } from './TimeList';\nimport { MIDNIGHT_DATE, MIN_TIME, MAX_TIME } from '../utils';\nimport { TIME_PART } from './models/TimePart';\nimport { generateSnappers, getNow, isInTimeRange, snapTime, timeInRange } from './utils';\nvar formatRegExp = new RegExp(TIME_PART.hour + \"|\" + TIME_PART.minute + \"|\" + TIME_PART.second + \"|\" + TIME_PART.dayperiod + \"|literal\");\n/**\n * @hidden\n */\nexport var Direction;\n(function (Direction) {\n Direction[Direction[\"Left\"] = 0] = \"Left\";\n Direction[Direction[\"Right\"] = 1] = \"Right\";\n})(Direction || (Direction = {}));\n/**\n * @hidden\n */\nvar TimePart = /** @class */ (function (_super) {\n __extends(TimePart, _super);\n function TimePart(props) {\n var _this = _super.call(this, props) || this;\n _this.timeLists = [];\n _this.focus = function (args) {\n Promise.resolve().then(function () {\n var timeList = _this.timeLists[0];\n if ((_this.state.activeListIndex === -1) && !_this.hasActiveButton() && timeList && timeList.element) {\n timeList.focus(args);\n }\n });\n };\n _this.timeFormatReducer = function (acc, current) { return acc + current.pattern; };\n // Filtering only the time part of the format.\n // Literal types are added if the previous part is\n // part of a time format.\n _this.timeFormatFilter = function (part, index, all) {\n var prevItem = index >= 1 && all[index - 1];\n if (!prevItem) {\n return formatRegExp.test(part.type || '');\n }\n if (prevItem && part.type === 'literal') {\n return formatRegExp.test(prevItem.type || '');\n }\n return formatRegExp.test(part.type || '');\n };\n _this.focusList = function (dir) {\n if (!_this.timeLists.length) {\n return;\n }\n _this.timeLists.reduce(_this.listReducer, ([]))\n .map(function (state) { return dir === Direction.Right ? state.next : state.prev; })\n .map(function (list) { return list && list.element && list.element.focus({ preventScroll: true }); });\n };\n _this.listReducer = function (state, list, idx, all) {\n if (state.length || list.props.id !== _this.state.activeListIndex) {\n return state;\n }\n return [{\n next: all[idx + 1] || list,\n prev: all[idx - 1] || list\n }];\n };\n _this.showNowButton = function () {\n return !_this.hasSteps() && _this.props.nowButton && isInTimeRange(getNow(), _this.min, _this.max);\n };\n _this.handleKeyDown = function (event) {\n var keyCode = event.keyCode;\n switch (keyCode) {\n case Keys.left:\n event.preventDefault();\n _this.focusList(Direction.Left);\n return;\n case Keys.right:\n event.preventDefault();\n _this.focusList(Direction.Right);\n return;\n default:\n return;\n }\n };\n _this.handleListBlur = function () {\n _this.nextTick(function () {\n _this.setState({ activeListIndex: -1 });\n });\n };\n _this.handleListFocus = function (idx) {\n clearTimeout(_this.nextTickId);\n _this.setState({\n activeListIndex: idx\n });\n };\n _this.handleChange = function (candidate) {\n var onChange = _this.props.onChange;\n if (onChange) {\n onChange.call(undefined, candidate);\n }\n };\n _this.snapTime = snapTime(generateSnappers(_this.props.steps, _this.props.min || TimePart.defaultProps.min));\n _this.state = {\n activeListIndex: -1\n };\n _this.hasActiveButton = _this.hasActiveButton.bind(_this);\n return _this;\n }\n Object.defineProperty(TimePart.prototype, \"element\", {\n /**\n * @hidden\n */\n get: function () {\n return this._element;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TimePart.prototype, \"intl\", {\n get: function () {\n return provideIntlService(this);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TimePart.prototype, \"value\", {\n get: function () {\n return timeInRange(this.snapTime(cloneDate(this.props.value || MIDNIGHT_DATE)), this.min, this.max);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TimePart.prototype, \"min\", {\n get: function () {\n return this.snapTime(this.props.min || TimePart.defaultProps.min);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TimePart.prototype, \"max\", {\n get: function () {\n return this.snapTime(this.props.max || TimePart.defaultProps.max);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TimePart.prototype, \"steps\", {\n get: function () {\n return this.props.steps || TimePart.defaultProps.steps;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TimePart.prototype, \"boundRange\", {\n get: function () {\n return this.props.boundRange !== undefined\n ? this.props.boundRange\n : TimePart.defaultProps.boundRange;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @hidden\n */\n TimePart.prototype.componentWillUnmount = function () {\n clearTimeout(this.nextTickId);\n };\n TimePart.prototype.componentDidMount = function () {\n var onMount = this.props.onMount;\n if (onMount) {\n onMount.call(undefined, this.value);\n }\n };\n /**\n * @hidden\n */\n TimePart.prototype.render = function () {\n var _this = this;\n var _a = this.props, format = _a.format, smoothScroll = _a.smoothScroll, onNowClick = _a.onNowClick, className = _a.className, disabled = _a.disabled;\n this.snapTime = snapTime(generateSnappers(this.steps, this.min));\n this.dateFormatParts = this.intl\n .splitDateFormat(format || TimePart.defaultProps.format)\n .filter(this.timeFormatFilter);\n var rootClassName = classNames({\n 'k-state-disabled': disabled\n }, className, 'k-time-part');\n this.timeLists = [];\n var localizationService = provideLocalizationService(this);\n var selectNowMessage = localizationService.toLanguageString(selectNow, messages[selectNow]);\n return (React.createElement(\"div\", { className: rootClassName },\n React.createElement(\"div\", { className: \"k-time-header\" },\n React.createElement(\"span\", { className: \"k-title\" }, this.intl.formatDate(this.value, this.dateFormatParts.reduce(this.timeFormatReducer, ''))),\n this.showNowButton() &&\n React.createElement(\"button\", __assign({ ref: function (btn) { _this._nowButton = btn; }, className: \"k-button k-bare k-time-now\", title: selectNowMessage }, { 'aria-label': selectNowMessage }, { onClick: onNowClick, tabIndex: disabled ? -1 : 0 }), localizationService.toLanguageString(now, messages[now]))),\n React.createElement(\"div\", { className: \"k-time-list-container\", onKeyDown: this.handleKeyDown },\n React.createElement(\"span\", { className: \"k-time-highlight\" }),\n this.dateFormatParts.map(function (part, idx) {\n return (part.type !== 'literal'\n ? React.createElement(\"div\", { key: idx, className: classNames('k-time-list-wrapper', {\n 'k-state-focused': idx === _this.state.activeListIndex\n }), role: \"presentation\", tabIndex: -1 },\n React.createElement(\"span\", { className: \"k-title\", onMouseDown: function (e) { e.preventDefault(); } }, _this.intl.dateFieldName(part)),\n React.createElement(TimeList, { min: _this.min, max: _this.max, boundRange: _this.boundRange, part: part, step: part.type ? _this.steps[part.type] : 1, smoothScroll: smoothScroll, ref: function (el) { if (!el) {\n return;\n } _this.timeLists.push(el); }, id: idx, onFocus: function () { _this.handleListFocus(idx); }, onBlur: _this.handleListBlur, onChange: _this.handleChange, value: _this.value, disabled: disabled }))\n : React.createElement(\"div\", { key: idx, className: \"k-time-separator\" }, part.pattern));\n }))));\n };\n TimePart.prototype.nextTick = function (f) {\n // XXX: use setTimeout due to async focus/blur events in IE, and missing relatedTarget prop.\n // XXX: https://github.com/facebook/react/issues/3751\n clearTimeout(this.nextTickId);\n this.nextTickId = setTimeout(function () { return f(); });\n };\n TimePart.prototype.hasActiveButton = function () {\n return document.activeElement === this._nowButton;\n };\n TimePart.prototype.hasSteps = function () {\n var _this = this;\n var keys = Object.keys(this.steps);\n return keys.length !== keys.reduce(function (acc, k) { return acc + _this.steps[k]; }, 0);\n };\n TimePart.propTypes = {\n cancelButton: PropTypes.bool,\n disabled: PropTypes.bool,\n format: PropTypes.string,\n max: PropTypes.instanceOf(Date),\n min: PropTypes.instanceOf(Date),\n nowButton: PropTypes.bool,\n steps: PropTypes.shape({\n hour: PropTypes.number,\n minute: PropTypes.number,\n second: PropTypes.number\n }),\n smoothScroll: PropTypes.bool,\n tabIndex: PropTypes.number,\n value: PropTypes.instanceOf(Date)\n };\n TimePart.defaultProps = {\n value: null,\n disabled: false,\n nowButton: true,\n cancelButton: true,\n format: 'hh:mm a',\n min: MIN_TIME,\n max: MAX_TIME,\n steps: {},\n boundRange: false\n };\n return TimePart;\n}(React.Component));\nexport { TimePart };\nregisterForIntl(TimePart);\nregisterForLocalization(TimePart);\n//# sourceMappingURL=TimePart.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { cloneDate } from '@progress/kendo-date-math';\nimport { classNames, Keys } from '@progress/kendo-react-common';\nimport { provideIntlService, registerForIntl, registerForLocalization, provideLocalizationService } from '@progress/kendo-react-intl';\nimport { messages, timePickerCancel, timePickerSet } from '../messages';\nimport { MIN_TIME, MAX_TIME, MIDNIGHT_DATE } from '../utils';\nimport { generateGetters, getNow, valueMerger } from './utils';\nimport { TimePart } from './TimePart';\n/**\n * @hidden\n */\nexport var Direction;\n(function (Direction) {\n Direction[Direction[\"Left\"] = 0] = \"Left\";\n Direction[Direction[\"Right\"] = 1] = \"Right\";\n})(Direction || (Direction = {}));\n/**\n * @hidden\n */\nvar TimeSelector = /** @class */ (function (_super) {\n __extends(TimeSelector, _super);\n function TimeSelector(props) {\n var _this = _super.call(this, props) || this;\n _this.focusActiveList = function () {\n if (!_this.timePart) {\n return;\n }\n _this.timePart.focus({ preventScroll: true });\n };\n _this.handleKeyDown = function (event) {\n var keyCode = event.keyCode;\n switch (keyCode) {\n case Keys.enter:\n if (!_this.hasActiveButton()) {\n _this.handleAccept(event);\n }\n return;\n default:\n return;\n }\n };\n _this.handleAccept = function (event) {\n var value = _this.mergeValue(cloneDate(_this.value || getNow()), _this.current);\n _this.setState({ value: value });\n _this.valueDuringOnChange = value;\n var onChange = _this.props.onChange;\n if (onChange) {\n onChange.call(undefined, {\n syntheticEvent: event,\n nativeEvent: event.nativeEvent,\n value: _this.value,\n target: _this\n });\n }\n _this.valueDuringOnChange = undefined;\n };\n _this.handleReject = function (event) {\n _this.setState({ current: _this.value });\n var onReject = _this.props.onReject;\n if (onReject) {\n onReject.call(undefined, event);\n }\n };\n _this.handleNowClick = function (event) {\n var now = _this.mergeValue(cloneDate(_this.value || getNow()), getNow());\n _this.setState({\n current: now,\n value: now\n });\n _this.valueDuringOnChange = now;\n var onChange = _this.props.onChange;\n if (onChange) {\n onChange.call(undefined, {\n syntheticEvent: event,\n nativeEvent: event.nativeEvent,\n value: _this.value,\n target: _this\n });\n }\n _this.valueDuringOnChange = undefined;\n };\n _this.handleChange = function (candidate) {\n _this.setState({ current: candidate });\n };\n _this.dateFormatParts = _this.intl.splitDateFormat(_this.props.format || TimeSelector.defaultProps.format);\n _this.mergeValue = valueMerger(generateGetters(_this.dateFormatParts));\n _this.hasActiveButton = _this.hasActiveButton.bind(_this);\n _this.state = {\n current: _this.props.value || MIDNIGHT_DATE,\n value: _this.props.value || TimeSelector.defaultProps.value\n };\n return _this;\n }\n Object.defineProperty(TimeSelector.prototype, \"element\", {\n /**\n * @hidden\n */\n get: function () {\n return this._element;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TimeSelector.prototype, \"value\", {\n get: function () {\n var value = this.valueDuringOnChange !== undefined\n ? this.valueDuringOnChange\n : this.props.value !== undefined\n ? this.props.value\n : this.state.value;\n return (value !== null)\n ? cloneDate(value)\n : null;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TimeSelector.prototype, \"intl\", {\n get: function () {\n return provideIntlService(this);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TimeSelector.prototype, \"current\", {\n get: function () {\n return this.state.current !== null\n ? cloneDate(this.state.current)\n : null;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @hidden\n */\n TimeSelector.prototype.componentWillUnmount = function () {\n clearTimeout(this.nextTickId);\n };\n /**\n * @hidden\n */\n TimeSelector.prototype.render = function () {\n var _this = this;\n var _a = this.props, format = _a.format, cancelButton = _a.cancelButton, disabled = _a.disabled, tabIndex = _a.tabIndex, className = _a.className, smoothScroll = _a.smoothScroll, min = _a.min, max = _a.max, boundRange = _a.boundRange, nowButton = _a.nowButton, steps = _a.steps;\n var localizationService = provideLocalizationService(this);\n var cancelMessage = localizationService.toLanguageString(timePickerCancel, messages[timePickerCancel]);\n var setMessage = localizationService.toLanguageString(timePickerSet, messages[timePickerSet]);\n return (React.createElement(\"div\", { ref: function (el) { _this._element = el; }, tabIndex: !disabled ? tabIndex || 0 : undefined, className: classNames('k-timeselector k-reset', className, {\n 'k-state-disabled': disabled\n }), onKeyDown: this.handleKeyDown },\n React.createElement(TimePart, { ref: function (el) { _this.timePart = el; }, value: this.current, onChange: this.handleChange, onNowClick: this.handleNowClick, format: format, smoothScroll: smoothScroll, min: min, max: max, boundRange: boundRange, disabled: disabled, nowButton: nowButton, steps: steps }),\n React.createElement(\"div\", { className: \"k-time-footer k-action-buttons\" },\n cancelButton &&\n React.createElement(\"button\", __assign({ ref: function (btn) { _this._cancelButton = btn; }, className: \"k-button k-time-cancel\", onClick: this.handleReject, title: cancelMessage }, { 'aria-label': cancelMessage }), cancelMessage),\n React.createElement(\"button\", __assign({ ref: function (btn) { _this._acceptButton = btn; }, className: \"k-time-accept k-button k-primary\", onClick: this.handleAccept, title: setMessage }, { 'aria-label': setMessage }), setMessage))));\n };\n TimeSelector.prototype.nextTick = function (f) {\n // XXX: use setTimeout due to async focus/blur events in IE, and missing relatedTarget prop.\n // XXX: https://github.com/facebook/react/issues/3751\n clearTimeout(this.nextTickId);\n this.nextTickId = setTimeout(function () { return f(); });\n };\n TimeSelector.prototype.hasActiveButton = function () {\n if (!this._acceptButton) {\n return false;\n }\n return document.activeElement === this._acceptButton\n || document.activeElement === this._cancelButton;\n };\n TimeSelector.propTypes = {\n cancelButton: PropTypes.bool,\n className: PropTypes.string,\n disabled: PropTypes.bool,\n format: PropTypes.string,\n max: PropTypes.instanceOf(Date),\n min: PropTypes.instanceOf(Date),\n nowButton: PropTypes.bool,\n steps: PropTypes.shape({\n hour: PropTypes.number,\n minute: PropTypes.number,\n second: PropTypes.number\n }),\n smoothScroll: PropTypes.bool,\n tabIndex: PropTypes.number,\n value: PropTypes.instanceOf(Date)\n };\n TimeSelector.defaultProps = {\n value: null,\n disabled: false,\n cancelButton: true,\n format: 't',\n min: MIN_TIME,\n max: MAX_TIME,\n boundRange: false\n };\n return TimeSelector;\n}(React.Component));\nexport { TimeSelector };\nregisterForIntl(TimeSelector);\nregisterForLocalization(TimeSelector);\n//# sourceMappingURL=TimeSelector.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\n t[p[i]] = s[p[i]];\n return t;\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { Popup } from '@progress/kendo-react-popup';\nimport { cloneDate } from '@progress/kendo-date-math';\nimport { classNames, guid, Keys } from '@progress/kendo-react-common';\nimport { registerForLocalization, provideLocalizationService } from '@progress/kendo-react-intl';\nimport { messages, toggleTimeSelector, toggleClock } from '../messages';\nimport { DateInput } from '../dateinput/DateInput';\nimport { TimeSelector } from './TimeSelector';\nimport { MIDNIGHT_DATE, MIN_TIME, MAX_TIME, setTime } from '../utils';\nimport { isInRange, isSmallerThanMin, isBiggerThanMax } from './utils';\nvar TimePicker = /** @class */ (function (_super) {\n __extends(TimePicker, _super);\n function TimePicker(props) {\n var _this = _super.call(this, props) || this;\n _this._popupId = guid();\n _this._element = null;\n _this._wrapper = null;\n _this._dateInput = null;\n _this._timeSelector = null;\n _this.shouldFocusDateInput = false;\n // Using `this` to avoid bumping the React version\n // to 16.3 and use `createRef()`.\n // Inline arrow functions is a performance hit\n // so... we use `this`.\n _this.setDateInputRef = function (dateInput) {\n _this._dateInput = dateInput;\n };\n _this.setTimeSelectorRef = function (timeSelector) {\n _this._timeSelector = timeSelector;\n };\n _this.nextValue = function (nextProps, nextState) {\n return nextProps.value !== undefined\n ? nextProps.value\n : nextState.value;\n };\n _this.nextShow = function (nextProps, nextState) {\n return nextProps.show !== undefined\n ? nextProps.show\n : nextState.show;\n };\n _this.handleInputValueChange = function (event) {\n var value = _this.mergeTime(event.value);\n _this.handleValueChange(__assign({}, event, { value: value }));\n };\n _this.handleValueChange = function (event) {\n _this.setState({\n value: cloneDate(event.value),\n show: false\n });\n _this.valueDuringOnChange = event.value;\n _this.showDuringOnChange = false;\n _this.shouldFocusDateInput = true;\n var onChange = _this.props.onChange;\n if (onChange) {\n onChange.call(undefined, {\n syntheticEvent: event.syntheticEvent,\n nativeEvent: event.nativeEvent,\n value: _this.value,\n show: _this.show,\n target: _this\n });\n }\n _this.valueDuringOnChange = undefined;\n _this.showDuringOnChange = undefined;\n };\n _this.handleFocus = function (event) {\n clearTimeout(_this.nextTickId);\n if (_this._wrapper) {\n _this._wrapper.classList.add('k-state-focused');\n }\n var onFocus = _this.props.onFocus;\n if (onFocus) {\n onFocus.call(undefined, event);\n }\n };\n _this.handleBlur = function (event) {\n _this.nextTick(function () {\n if (_this._wrapper) {\n _this._wrapper.classList.remove('k-state-focused');\n }\n _this.setShow(false);\n });\n var onBlur = _this.props.onBlur;\n if (onBlur) {\n onBlur.call(undefined, event);\n }\n };\n _this.handleValueReject = function (_) {\n _this.setShow(false);\n };\n _this.handleIconClick = function (_) {\n if (_this.props.disabled) {\n return;\n }\n _this.shouldFocusDateInput = true;\n _this.setShow(!_this.show);\n };\n _this.handleIconMouseDown = function (event) {\n event.preventDefault();\n };\n _this.handleKeyDown = function (event) {\n var altKey = event.altKey, keyCode = event.keyCode;\n if (keyCode === Keys.esc) {\n _this.setShow(false);\n return;\n }\n if (altKey && (keyCode === Keys.up || keyCode === Keys.down)) {\n event.preventDefault();\n event.stopPropagation();\n _this.shouldFocusDateInput = keyCode === Keys.up;\n _this.setShow(keyCode === Keys.down);\n }\n };\n _this.state = {\n value: _this.props.defaultValue || TimePicker.defaultProps.defaultValue,\n show: _this.props.defaultShow || TimePicker.defaultProps.defaultShow\n };\n _this.normalizeTime = _this.normalizeTime.bind(_this);\n _this.setShow = _this.setShow.bind(_this);\n _this.nextTick = _this.nextTick.bind(_this);\n _this.mergeTime = _this.mergeTime.bind(_this);\n return _this;\n }\n Object.defineProperty(TimePicker.prototype, \"element\", {\n /**\n * Gets the wrapping element of the TimePicker.\n */\n get: function () {\n return this._element;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TimePicker.prototype, \"dateInput\", {\n /**\n * Gets the DateInput component inside the TimePicker component.\n */\n get: function () {\n return this._dateInput;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TimePicker.prototype, \"timeSelector\", {\n /**\n * Gets the TimeSelector component inside the TimePicker component.\n */\n get: function () {\n return this._timeSelector;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TimePicker.prototype, \"value\", {\n /**\n * Gets the value of the TimePicker.\n */\n get: function () {\n var value = this.valueDuringOnChange !== undefined\n ? this.valueDuringOnChange\n : this.props.value !== undefined\n ? this.props.value\n : this.state.value;\n return (value !== null) ? cloneDate(value) : null;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TimePicker.prototype, \"show\", {\n /**\n * Gets the popup state of the TimeSelector.\n */\n get: function () {\n return this.showDuringOnChange !== undefined\n ? this.showDuringOnChange\n : this.props.show !== undefined\n ? this.props.show\n : this.state.show;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TimePicker.prototype, \"name\", {\n /**\n * Gets the `name` property of the TimePicker.\n */\n get: function () {\n return this.props.name;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TimePicker.prototype, \"validity\", {\n /**\n * Represents the validity state into which the TimePicker is set.\n */\n get: function () {\n var value = this.value && this.normalizeTime(this.value);\n var min = this.normalizeTime(this.min);\n var max = this.normalizeTime(this.max);\n var inRange = isInRange(value, min, max);\n var customError = this.props.validationMessage !== undefined;\n var isValid = (!this.required || this.value !== null) && inRange;\n var valid = this.props.valid !== undefined ? this.props.valid : isValid;\n return {\n customError: customError,\n rangeOverflow: isBiggerThanMax(value, max),\n rangeUnderflow: isSmallerThanMin(value, min),\n valid: valid,\n valueMissing: this.value === null\n };\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TimePicker.prototype, \"validityStyles\", {\n /**\n * @hidden\n */\n get: function () {\n return this.props.validityStyles !== undefined\n ? this.props.validityStyles\n : TimePicker.defaultProps.validityStyles;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TimePicker.prototype, \"required\", {\n /**\n * @hidden\n */\n get: function () {\n return this.props.required !== undefined\n ? this.props.required\n : TimePicker.defaultProps.required;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TimePicker.prototype, \"popupSettings\", {\n get: function () {\n return this.props.popupSettings || TimePicker.defaultProps.popupSettings;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TimePicker.prototype, \"min\", {\n get: function () {\n return this.props.min !== undefined ? this.props.min : TimePicker.defaultProps.min;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TimePicker.prototype, \"max\", {\n get: function () {\n return this.props.max !== undefined ? this.props.max : TimePicker.defaultProps.max;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @hidden\n */\n TimePicker.prototype.componentDidMount = function () {\n if (this.show) {\n // If defaultShow is true during the initial render, the popup is not aligned.\n this.forceUpdate();\n }\n if (this._dateInput && this._dateInput.element) {\n this._dateInput.element.setAttribute('aria-haspopup', 'true');\n this._dateInput.element.setAttribute('aria-expanded', \"\" + this.show);\n }\n };\n /**\n * @hidden\n */\n TimePicker.prototype.componentWillUnmount = function () {\n clearTimeout(this.nextTickId);\n };\n /**\n * @hidden\n */\n TimePicker.prototype.componentDidUpdate = function (prevProps) {\n if (this._dateInput && this._dateInput.element) {\n this._dateInput.element.setAttribute('aria-expanded', \"\" + this.show);\n }\n if (this._timeSelector\n && this.show\n && !prevProps.show) {\n this._timeSelector.focusActiveList();\n }\n else if (this._dateInput\n && this._dateInput.element\n && !this.show\n && this.shouldFocusDateInput) {\n this._dateInput.element.focus({ preventScroll: true });\n }\n this.shouldFocusDateInput = false;\n };\n /**\n * @hidden\n */\n TimePicker.prototype.focus = function () {\n if (this._dateInput) {\n this._dateInput.focus();\n }\n };\n /**\n * @hidden\n */\n TimePicker.prototype.render = function () {\n var _this = this;\n var _a = this.props, disabled = _a.disabled, tabIndex = _a.tabIndex, title = _a.title, id = _a.id, className = _a.className, format = _a.format, formatPlaceholder = _a.formatPlaceholder, smoothScroll = _a.smoothScroll, width = _a.width, name = _a.name, steps = _a.steps, cancelButton = _a.cancelButton, nowButton = _a.nowButton, validationMessage = _a.validationMessage, required = _a.required, validityStyles = _a.validityStyles;\n var _b = this.popupSettings, popupClass = _b.popupClass, otherPopupSettings = __rest(_b, [\"popupClass\"]);\n var isValid = !this.validityStyles || this.validity.valid;\n var rootClassName = classNames('k-widget k-timepicker', {\n 'k-state-invalid': !isValid\n }, className);\n var wrapperClassNames = classNames('k-picker-wrap', {\n 'k-state-default': !disabled,\n 'k-state-disabled': disabled\n });\n var popupClassNames = classNames('k-group k-reset', popupClass);\n var dateInputProps = {\n disabled: disabled,\n format: format,\n formatPlaceholder: formatPlaceholder,\n id: id,\n max: this.normalizeTime(this.max),\n min: this.normalizeTime(this.min),\n name: name,\n onChange: this.handleInputValueChange,\n required: required,\n steps: steps,\n tabIndex: !this.show ? tabIndex : -1,\n title: title,\n valid: this.validity.valid,\n validationMessage: validationMessage,\n validityStyles: validityStyles,\n value: this.value && this.normalizeTime(this.value)\n };\n var popupProps = __assign({ show: this.show, animate: this._wrapper !== null, anchor: this._wrapper || undefined, className: popupClassNames, id: this._popupId, anchorAlign: {\n horizontal: 'left',\n vertical: 'bottom'\n }, popupAlign: {\n horizontal: 'left',\n vertical: 'top'\n } }, otherPopupSettings);\n var timeSelector = (React.createElement(TimeSelector, { ref: this.setTimeSelectorRef, cancelButton: cancelButton, disabled: disabled, nowButton: nowButton, format: format, min: this.min, max: this.max, steps: steps, smoothScroll: smoothScroll, value: this.value, onChange: this.handleValueChange, onReject: this.handleValueReject }));\n var localizationService = provideLocalizationService(this);\n var toggleClockMessage = localizationService.toLanguageString(toggleClock, messages[toggleClock]);\n var toggleTimeMessage = localizationService\n .toLanguageString(toggleTimeSelector, messages[toggleTimeSelector]);\n return (React.createElement(\"div\", { ref: function (span) { _this._element = span; }, className: rootClassName, onKeyDown: this.handleKeyDown, style: { width: width }, onFocus: this.handleFocus, onBlur: this.handleBlur },\n React.createElement(\"span\", { ref: function (span) { _this._wrapper = span; }, className: wrapperClassNames },\n this.props.dateInput\n ? React.createElement(this.props.dateInput, __assign({}, dateInputProps))\n : React.createElement(DateInput, __assign({ ref: this.setDateInputRef }, dateInputProps)),\n React.createElement(\"span\", __assign({ role: \"button\", onMouseDown: this.handleIconMouseDown, onClick: this.handleIconClick, title: toggleTimeMessage, className: \"k-select\" }, {\n 'aria-controls': this._popupId,\n 'aria-label': toggleClockMessage\n }),\n React.createElement(\"span\", { className: \"k-icon k-i-clock\" }))),\n this.props.popup\n ? React.createElement(this.props.popup, __assign({}, popupProps), timeSelector)\n : React.createElement(Popup, __assign({}, popupProps), timeSelector)));\n };\n TimePicker.prototype.normalizeTime = function (date) {\n return setTime(MIDNIGHT_DATE, date);\n };\n TimePicker.prototype.setShow = function (show) {\n if (this.show === show) {\n return;\n }\n this.setState({ show: show });\n };\n TimePicker.prototype.nextTick = function (f) {\n // XXX: use setTimeout due to async focus/blur events in IE, and missing relatedTarget prop.\n // XXX: https://github.com/facebook/react/issues/3751\n clearTimeout(this.nextTickId);\n this.nextTickId = setTimeout(function () { return f(); });\n };\n TimePicker.prototype.mergeTime = function (value) {\n return this.value && value ? setTime(this.value, value) : value;\n };\n /**\n * @hidden\n */\n TimePicker.propTypes = {\n className: PropTypes.string,\n cancelButton: PropTypes.bool,\n nowButton: PropTypes.bool,\n defaultShow: PropTypes.bool,\n defaultValue: PropTypes.instanceOf(Date),\n disabled: PropTypes.bool,\n format: PropTypes.string,\n formatPlaceholder: PropTypes.oneOfType([\n PropTypes.oneOf(['wide', 'narrow', 'short', 'formatPattern']),\n PropTypes.shape({\n year: PropTypes.string,\n month: PropTypes.string,\n day: PropTypes.string,\n hour: PropTypes.string,\n minute: PropTypes.string,\n second: PropTypes.string\n })\n ]),\n id: PropTypes.string,\n min: PropTypes.instanceOf(Date),\n max: PropTypes.instanceOf(Date),\n name: PropTypes.string,\n popupSettings: PropTypes.shape({\n animate: PropTypes.bool,\n appendTo: PropTypes.any,\n popupClass: PropTypes.string\n }),\n show: PropTypes.bool,\n steps: PropTypes.shape({\n hour: PropTypes.number,\n minute: PropTypes.number,\n second: PropTypes.number\n }),\n smoothScroll: PropTypes.bool,\n tabIndex: PropTypes.number,\n title: PropTypes.string,\n value: PropTypes.instanceOf(Date),\n width: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n validationMessage: PropTypes.string,\n required: PropTypes.bool,\n validate: PropTypes.bool,\n valid: PropTypes.bool\n };\n /**\n * @hidden\n */\n TimePicker.defaultProps = {\n defaultShow: false,\n defaultValue: null,\n disabled: false,\n format: 't',\n max: MAX_TIME,\n min: MIN_TIME,\n popupSettings: {},\n title: '',\n tabIndex: 0,\n steps: {},\n required: false,\n validityStyles: true\n };\n return TimePicker;\n}(React.Component));\nexport { TimePicker };\nregisterForLocalization(TimePicker);\n//# sourceMappingURL=TimePicker.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport { Header } from './Header';\nimport { View } from './View';\nimport { CalendarViewEnum } from '../models';\nimport { classNames } from '@progress/kendo-react-common';\nimport { cloneDate } from '@progress/kendo-date-math';\nimport { MAX_DATE, MIN_DATE } from '../../defaults';\nvar DEFAULT_FETCH_MONTHS_COUNT = 2;\n/**\n * @hidden\n */\nvar HorizontalViewList = /** @class */ (function (_super) {\n __extends(HorizontalViewList, _super);\n function HorizontalViewList(props) {\n var _this = _super.call(this, props) || this;\n _this.isActive = false;\n _this.focusActiveDate = function () {\n if (!_this._element) {\n return;\n }\n var focusedCell = _this._element.querySelector(\"td.k-state-focused\");\n var nextActiveCell = _this._element.querySelector('.k-state-pending-focus');\n if (focusedCell && focusedCell[0]) {\n focusedCell[0].classList.remove('k-state-focused');\n }\n if (nextActiveCell) {\n nextActiveCell.classList.add('k-state-focused');\n }\n _this.isActive = true;\n };\n _this.blurActiveDate = function () {\n if (!_this._element) {\n return;\n }\n var focusedCell = _this._element.querySelector(\"td.k-state-focused\");\n if (focusedCell) {\n focusedCell.classList.remove('k-state-focused');\n }\n _this.isActive = false;\n };\n _this.rotateSelectionRange = function (selectionRange) {\n if (selectionRange.start === null || selectionRange.end === null) {\n return selectionRange;\n }\n var needRotate = selectionRange.end < selectionRange.start;\n return {\n start: needRotate ? selectionRange.end : selectionRange.start,\n end: needRotate ? selectionRange.start : selectionRange.end\n };\n };\n _this.handleTodayClick = function (event) {\n _this.handleDateChange.call(undefined, event, true);\n };\n _this.handleDateChange = function (event, isTodayClick) {\n if (isTodayClick === void 0) { isTodayClick = false; }\n var onChange = _this.props.onChange;\n if (onChange) {\n var args = {\n syntheticEvent: event.syntheticEvent,\n nativeEvent: event.nativeEvent,\n value: cloneDate(event.value),\n target: _this,\n isTodayClick: isTodayClick\n };\n onChange.call(undefined, args);\n }\n };\n _this.lastView = props.activeView;\n return _this;\n }\n Object.defineProperty(HorizontalViewList.prototype, \"element\", {\n get: function () {\n return this._element;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(HorizontalViewList.prototype, \"weekNumber\", {\n get: function () {\n return Boolean(this.props.showWeekNumbers && this.props.activeView === CalendarViewEnum.month);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(HorizontalViewList.prototype, \"min\", {\n get: function () {\n return this.props.min !== undefined\n ? this.props.min\n : HorizontalViewList.defaultProps.min;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(HorizontalViewList.prototype, \"max\", {\n get: function () {\n return this.props.max !== undefined\n ? this.props.max\n : HorizontalViewList.defaultProps.max;\n },\n enumerable: true,\n configurable: true\n });\n HorizontalViewList.prototype.componentDidUpdate = function () {\n if (this.isActive) {\n this.focusActiveDate();\n }\n this.lastView = this.props.activeView;\n this.lastViewsCount = this.props.views || HorizontalViewList.defaultProps.views;\n };\n HorizontalViewList.prototype.render = function () {\n var _this = this;\n var didViewChange = this.lastView !== this.props.activeView;\n var isDateInList = this.dates && this.props.service.isInArray(this.props.focusedDate, this.dates);\n var didViewsCountChange = this.lastViewsCount !== this.props.views;\n if (!isDateInList || didViewChange || didViewsCountChange) {\n this.dates = this.props.service.datesList(this.props.focusedDate, this.props.views || HorizontalViewList.defaultProps.views);\n }\n var activeDate = cloneDate(this.dates && this.dates[0] ? this.dates[0] : undefined);\n var selectionRange = this.props.allowReverse\n ? this.rotateSelectionRange(this.props.selectionRange)\n : this.props.selectionRange;\n var rootClassNames = classNames('k-calendar-view', {\n 'k-calendar-monthview': this.props.activeView === CalendarViewEnum.month,\n 'k-calendar-yearview': this.props.activeView === CalendarViewEnum.year,\n 'k-calendar-decadeview': this.props.activeView === CalendarViewEnum.decade,\n 'k-calendar-centuryview': this.props.activeView === CalendarViewEnum.century\n });\n return (React.createElement(\"div\", { ref: function (el) { _this._element = el; }, className: rootClassNames },\n React.createElement(Header, { key: \".kendo.calendar.header.\" + activeDate.getTime(), activeView: this.props.activeView, currentDate: activeDate, min: this.min, max: this.max, rangeLength: this.props.views, onTodayClick: this.handleTodayClick, bus: this.props.bus, service: this.props.service, headerTitle: this.props.headerTitle }),\n React.createElement(\"table\", { className: \"k-content\", key: activeDate.getTime() }, this.dates.map(function (date) { return (React.createElement(View, { bus: _this.props.bus, service: _this.props.service, key: date.getTime(), direction: \"horizontal\", activeView: _this.props.activeView, cellUID: _this.props.cellUID, viewDate: date, min: _this.min, max: _this.max, focusedDate: _this.props.focusedDate, selectionRange: selectionRange, selectedDate: _this.props.value, showWeekNumbers: _this.weekNumber, onChange: _this.handleDateChange, onCellEnter: _this.props.onCellEnter, cell: _this.props.cell, weekCell: _this.props.weekCell })); }))));\n };\n HorizontalViewList.defaultProps = {\n showWeekNumbers: false,\n views: DEFAULT_FETCH_MONTHS_COUNT,\n take: DEFAULT_FETCH_MONTHS_COUNT,\n allowReverse: true,\n min: MIN_DATE,\n max: MAX_DATE\n };\n return HorizontalViewList;\n}(React.Component));\nexport { HorizontalViewList };\n//# sourceMappingURL=HorizontalViewList.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { registerForIntl, provideIntlService, registerForLocalization, provideLocalizationService } from '@progress/kendo-react-intl';\nimport { classNames, guid, Keys } from '@progress/kendo-react-common';\nimport { cloneDate, isEqualDate, getDate } from '@progress/kendo-date-math';\nimport { Action, CalendarViewEnum, EMPTY_SELECTIONRANGE } from '../models';\nimport { MIN_DATE, MAX_DATE } from '../../defaults';\nimport { messages, prevView, nextView } from '../../messages';\nimport { BusViewService, NavigationService } from '../services';\nimport { dateInRange, isInRange, viewInRange, getToday } from '../../utils';\nimport { HorizontalViewList } from './HorizontalViewList';\nvar extractDateFromValue = function (min, max, value) {\n if (min === void 0) { min = MultiViewCalendar.defaultProps.min; }\n if (max === void 0) { max = MultiViewCalendar.defaultProps.max; }\n return value instanceof Date && !Array.isArray(value) && isInRange(getDate(value), min, max)\n ? getDate(value)\n : null;\n};\nvar extractMultipleFromValue = function (min, max, value) {\n if (min === void 0) { min = MultiViewCalendar.defaultProps.min; }\n if (max === void 0) { max = MultiViewCalendar.defaultProps.max; }\n return Array.isArray(value)\n ? value.filter(function (date) { return isInRange(date, min, max); }).map(function (date) { return getDate(date); })\n : null;\n};\nvar extractRangeFromValue = function (value) {\n return typeof value === 'object' && !(value instanceof Date) && value !== null && !Array.isArray(value)\n ? value\n : EMPTY_SELECTIONRANGE;\n};\nvar extractFocusedDate = function (single, multiple, range) {\n return single || (multiple && multiple[0]) || (range && range.start);\n};\nvar extractActiveRange = function (range, single) {\n return range.start === null && single === null\n ? 'start'\n : range.end === null\n ? 'end'\n : 'start';\n};\nvar MultiViewCalendar = /** @class */ (function (_super) {\n __extends(MultiViewCalendar, _super);\n function MultiViewCalendar(props) {\n var _this = _super.call(this, props) || this;\n _this.selectedDate = null;\n _this.selectedMultiple = null;\n _this.selectedRange = EMPTY_SELECTIONRANGE;\n _this.cellUID = guid();\n _this.activeRangeEnd = 'start';\n _this.wrapperID = guid();\n _this.isActive = false;\n _this.calculateFocusFromValue = true;\n _this.clampRange = function (value) { return ({ start: value, end: null }); };\n _this.rangeWithFocused = function (range, focusedDate) {\n return {\n start: range.start,\n end: range.end === null && range.start !== null && _this.isActive ? focusedDate : range.end\n };\n };\n _this.generateRange = function (candidate, value) {\n var end = value.end, start = value.start;\n var shouldSwap = value.start !== null && candidate.getTime() <= value.start.getTime();\n if (!_this.props.allowReverse && shouldSwap) {\n return { start: candidate, end: _this.selectedRange.start };\n }\n return _this.activeRange !== 'end'\n ? ({ start: candidate, end: end })\n : ({ start: start || _this.selectedDate, end: candidate });\n };\n _this.canNavigate = function (action) {\n if (!_this.service) {\n return false;\n }\n var candidate = _this.service.move(_this.focusedDate, action);\n return (_this.min <= candidate && candidate <= _this.max)\n || _this.service.isInSameView(candidate, _this.min)\n || _this.service.isInSameView(candidate, _this.max);\n };\n _this.isListInRange = function (list) {\n return _this.min < list[0]\n && _this.max > list[Math.max(0, (_this.props.views || MultiViewCalendar.defaultProps.views) - 1)];\n };\n _this.navigate = function (action) {\n _this.calculateFocusFromValue = false;\n var candidate = _this.move(action);\n _this.setState({ focusedDate: candidate });\n };\n _this.move = function (action) {\n return _this.clampDate(_this.service.move(_this.focusedDate, action));\n };\n _this.clampDate = function (value) {\n return dateInRange(value, _this.min, _this.max);\n };\n _this.shouldAutoCorrect = function (candidate, value) {\n var end = value.end, start = value.start;\n if (_this.activeRange !== 'end') {\n return end !== null && candidate > end;\n }\n else {\n return start !== null && candidate < start;\n }\n };\n _this.handleCellEnter = function (value) {\n if (_this.props.mode === 'range') {\n _this.calculateFocusFromValue = false;\n _this.setState({\n focusedDate: value\n });\n }\n };\n _this.handleMouseDown = function (event) {\n event.preventDefault();\n };\n _this.handleClick = function (_) {\n if (!_this._element) {\n return;\n }\n _this._element.focus({ preventScroll: true });\n };\n _this.handleFocus = function (event) {\n _this.isActive = true;\n if (!_this.calendarViewList) {\n return;\n }\n _this.calendarViewList.focusActiveDate();\n var onFocus = _this.props.onFocus;\n if (onFocus) {\n onFocus.call(undefined, event);\n }\n };\n _this.handleBlur = function (event) {\n _this.isActive = false;\n if (!_this.calendarViewList) {\n return;\n }\n _this.calendarViewList.blurActiveDate();\n var onBlur = _this.props.onBlur;\n if (onBlur) {\n onBlur.call(undefined, event);\n }\n };\n _this.handlePrevButtonClick = function () {\n _this.navigate(Action.PrevView);\n };\n _this.handleNextButtonClick = function () {\n _this.navigate(Action.NextView);\n };\n _this.handleKeyDown = function (event) {\n var keyCode = event.keyCode;\n if (keyCode === Keys.enter) {\n var args = {\n syntheticEvent: event,\n nativeEvent: event.nativeEvent,\n value: _this.focusedDate,\n target: _this\n };\n _this.handleDateChange.call(undefined, args);\n }\n else {\n var candidate = dateInRange(_this.navigation.move(_this.focusedDate, _this.navigation.action(event), _this.state.activeView, _this.service, event), _this.min, _this.max);\n if (isEqualDate(_this.focusedDate, candidate)) {\n return;\n }\n _this.calculateFocusFromValue = false;\n _this.setState({ focusedDate: candidate });\n }\n event.preventDefault();\n };\n _this.handleViewChange = function (_a) {\n var view = _a.view;\n _this.setState({ activeView: view });\n };\n _this.handleDateChange = function (event) {\n var focusedDate = cloneDate(event.value);\n var canNavigateDown = _this.bus.canMoveDown(_this.state.activeView);\n if (_this.props.disabled) {\n return;\n }\n if (canNavigateDown) {\n if (event.isTodayClick) {\n _this.bus.moveToBottom(_this.state.activeView);\n }\n else {\n _this.bus.moveDown(_this.state.activeView, event.syntheticEvent);\n _this.setState({ focusedDate: focusedDate });\n return;\n }\n }\n _this.calculateFocusFromValue = true;\n var value;\n switch (_this.props.mode) {\n case 'single':\n value = cloneDate(event.value);\n break;\n case 'multiple':\n if (Array.isArray(_this.selectedMultiple)) {\n var result = _this.selectedMultiple.slice();\n var index_1 = -1;\n result.forEach(function (date, idx) {\n if (isEqualDate(date, event.value)) {\n index_1 = idx;\n }\n });\n index_1 !== -1\n ? result.splice(index_1, 1)\n : result.push(cloneDate(event.value));\n value = result.slice();\n }\n else {\n if (_this.selectedDate) {\n value = [cloneDate(_this.selectedDate), cloneDate(event.value)];\n }\n else {\n value = [cloneDate(event.value)];\n }\n }\n break;\n case 'range':\n var hasSelection = _this.selectedRange.start !== null\n && _this.selectedRange.end !== null\n && _this.activeRange === 'start';\n value = hasSelection\n ? _this.clampRange(event.value)\n : _this.generateRange(event.value, _this.selectedRange);\n _this.activeRangeEnd = _this.activeRange !== 'end' ? 'end' : 'start';\n break;\n default:\n value = cloneDate(event.value);\n break;\n }\n _this.valueDuringOnChange = value;\n _this.setState({ value: value, focusedDate: focusedDate });\n _this.valueDuringOnChange = value;\n var onChange = _this.props.onChange;\n if (onChange) {\n var args = {\n syntheticEvent: event.syntheticEvent,\n nativeEvent: event.nativeEvent,\n value: value,\n target: _this\n };\n onChange.call(undefined, args);\n }\n _this.valueDuringOnChange = undefined;\n };\n var value = props.value !== undefined\n ? props.value\n : props.defaultValue || MultiViewCalendar.defaultProps.defaultValue;\n var selectedDate = extractDateFromValue(_this.min, _this.max, value);\n var selectedMultiple = extractMultipleFromValue(_this.min, _this.max, value);\n var selectedRange = extractRangeFromValue(value);\n var calculatedFocus = extractFocusedDate(selectedDate, selectedMultiple, selectedRange);\n var activeView = viewInRange(CalendarViewEnum[props.defaultActiveView], _this.bottomView, _this.topView);\n var focusedDate = dateInRange(props.focusedDate || calculatedFocus || getToday(), _this.min, _this.max);\n _this.state = {\n value: value,\n activeView: activeView,\n focusedDate: focusedDate\n };\n _this.activeRangeEnd = extractActiveRange(selectedRange, selectedDate);\n _this.bus = new BusViewService(_this.handleViewChange);\n _this.navigation = new NavigationService(_this.bus);\n _this.calculateFocusFromValue = false;\n return _this;\n }\n Object.defineProperty(MultiViewCalendar.prototype, \"element\", {\n /**\n * Gets the wrapping element of the MultiViewCalendar component.\n */\n get: function () {\n return this._element;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MultiViewCalendar.prototype, \"value\", {\n /**\n * Gets the value of the MultiViewCalendar.\n */\n get: function () {\n return this.valueDuringOnChange !== undefined\n ? this.valueDuringOnChange\n : this.props.value !== undefined\n ? this.props.value\n : this.state.value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MultiViewCalendar.prototype, \"focusedDate\", {\n /**\n * Gets the current focused date of the MultiViewCalendar.\n */\n get: function () {\n return cloneDate(this._focusedDate);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MultiViewCalendar.prototype, \"min\", {\n get: function () {\n return getDate(this.props.min !== undefined\n ? this.props.min\n : MultiViewCalendar.defaultProps.min);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MultiViewCalendar.prototype, \"max\", {\n get: function () {\n return getDate(this.props.max !== undefined\n ? this.props.max\n : MultiViewCalendar.defaultProps.max);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MultiViewCalendar.prototype, \"bottomView\", {\n get: function () {\n return CalendarViewEnum[this.props.bottomView !== undefined\n ? this.props.bottomView\n : MultiViewCalendar.defaultProps.bottomView];\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MultiViewCalendar.prototype, \"topView\", {\n get: function () {\n return CalendarViewEnum[this.props.topView !== undefined\n ? this.props.topView\n : MultiViewCalendar.defaultProps.topView];\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MultiViewCalendar.prototype, \"activeRange\", {\n get: function () {\n return this.props.activeRangeEnd !== undefined\n ? this.props.activeRangeEnd\n : this.activeRangeEnd;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @hidden\n */\n MultiViewCalendar.prototype.componentDidMount = function () {\n this.calculateFocusFromValue = true;\n };\n /**\n * @hidden\n */\n MultiViewCalendar.prototype.componentDidUpdate = function () {\n if (this.calendarViewList) {\n this.isActive ? this.calendarViewList.focusActiveDate() : this.calendarViewList.blurActiveDate();\n }\n this.calculateFocusFromValue = false;\n };\n /**\n * @hidden\n */\n MultiViewCalendar.prototype.focus = function () {\n if (this._element) {\n this._element.focus();\n }\n };\n /**\n * @hidden\n */\n MultiViewCalendar.prototype.render = function () {\n var _this = this;\n this.intl = provideIntlService(this);\n this.localization = provideLocalizationService(this);\n this.bus.configure(this.bottomView, this.topView);\n var activeView = viewInRange(this.state.activeView, this.bottomView, this.topView);\n this.service = this.bus.service(activeView, this.intl);\n this.selectedDate = extractDateFromValue(this.min, this.max, this.value);\n this.selectedMultiple = extractMultipleFromValue(this.min, this.max, this.value);\n this.selectedRange = extractRangeFromValue(this.value);\n var calculatedFocus = extractFocusedDate(this.selectedDate, this.selectedMultiple, this.selectedRange);\n this._focusedDate = dateInRange(this.calculateFocusFromValue && calculatedFocus !== null\n ? calculatedFocus\n : this.state.focusedDate, this.min, this.max);\n var wrapperClassName = classNames('k-widget k-calendar k-calendar-infinite k-calendar-range', {\n 'k-state-disabled': this.props.disabled\n }, this.props.className);\n var visualizedRange = this.rangeWithFocused(this.selectedRange, this.focusedDate);\n var wrapperAria = {\n 'aria-disabled': this.props.disabled,\n 'aria-activedescendant': this.cellUID + this.focusedDate.getTime()\n };\n var prevViewTitle = this.localization.toLanguageString(prevView, messages[prevView]);\n var nextViewTittle = this.localization.toLanguageString(nextView, messages[nextView]);\n var isPrevDisabled = !this.canNavigate(Action.PrevView);\n var isNextDisabled = !this.canNavigate(Action.NextView);\n var prevBtnAria = { 'aria-disabled': isPrevDisabled };\n var nextBtnAria = { 'aria-disabled': isNextDisabled };\n return (React.createElement(\"div\", __assign({ ref: function (el) { _this._element = el; }, className: wrapperClassName, id: this.props.id || this.wrapperID, role: 'grid', tabIndex: !this.props.disabled ? this.props.tabIndex : undefined, onFocus: this.handleFocus, onBlur: this.handleBlur, onMouseDown: this.handleMouseDown, onClick: this.handleClick, onKeyDown: this.handleKeyDown }, wrapperAria),\n React.createElement(\"button\", __assign({ className: \"k-button k-prev-view\", title: prevViewTitle, disabled: isPrevDisabled, onClick: this.handlePrevButtonClick }, prevBtnAria),\n React.createElement(\"span\", { className: \"k-icon k-i-arrow-chevron-left\" })),\n React.createElement(HorizontalViewList, { ref: function (el) { _this.calendarViewList = el; }, activeView: activeView, focusedDate: this.focusedDate, min: this.min, max: this.max, bus: this.bus, service: this.service, selectionRange: visualizedRange, value: this.selectedMultiple || this.selectedDate, cellUID: this.cellUID, views: this.props.views, onChange: this.handleDateChange, showWeekNumbers: this.props.weekNumber, onCellEnter: this.handleCellEnter, cell: this.props.cell, weekCell: this.props.weekCell, headerTitle: this.props.headerTitle }),\n React.createElement(\"button\", __assign({ className: \"k-button k-next-view\", title: nextViewTittle, disabled: isNextDisabled, onClick: this.handleNextButtonClick }, nextBtnAria),\n React.createElement(\"span\", { className: \"k-icon k-i-arrow-chevron-right\" }))));\n };\n /**\n * @hidden\n */\n MultiViewCalendar.propTypes = {\n activeRangeEnd: PropTypes.oneOf(['start', 'end']),\n allowReverse: PropTypes.bool,\n bottomView: PropTypes.oneOf(['month', 'year', 'decade', 'century']),\n className: PropTypes.string,\n defaultActiveView: PropTypes.oneOf(['month', 'year', 'decade', 'century']),\n defaultValue: PropTypes.oneOfType([\n PropTypes.instanceOf(Date),\n PropTypes.arrayOf(PropTypes.instanceOf(Date)),\n PropTypes.shape({ start: PropTypes.instanceOf(Date), end: PropTypes.instanceOf(Date) })\n ]),\n disabled: PropTypes.bool,\n focusedDate: PropTypes.instanceOf(Date),\n id: PropTypes.string,\n max: PropTypes.instanceOf(Date),\n min: PropTypes.instanceOf(Date),\n mode: PropTypes.oneOf(['single', 'multiple', 'range']),\n onBlur: PropTypes.func,\n onChange: PropTypes.func,\n onFocus: PropTypes.func,\n tabIndex: PropTypes.number,\n topView: PropTypes.oneOf(['month', 'year', 'decade', 'century']),\n value: PropTypes.oneOfType([\n PropTypes.instanceOf(Date),\n PropTypes.arrayOf(PropTypes.instanceOf(Date)),\n PropTypes.shape({ start: PropTypes.instanceOf(Date), end: PropTypes.instanceOf(Date) })\n ]),\n views: function (props, propName, componentName) {\n var views = props[propName];\n if (views !== undefined && views < 1) {\n return new Error(\"Invalid prop '\" + propName + \"' supplied to\" +\n (\"'\" + componentName + \"'. The '\" + propName + \"' property cannot be less than 1'\"));\n }\n },\n weekNumber: PropTypes.bool\n };\n /**\n * @hidden\n */\n MultiViewCalendar.defaultProps = {\n disabled: false,\n min: MIN_DATE,\n max: MAX_DATE,\n navigation: true,\n defaultActiveView: 'month',\n defaultValue: null,\n topView: 'century',\n tabIndex: 0,\n bottomView: 'month',\n views: 2,\n allowReverse: false\n };\n return MultiViewCalendar;\n}(React.Component));\nexport { MultiViewCalendar };\nregisterForIntl(MultiViewCalendar);\nregisterForLocalization(MultiViewCalendar);\n//# sourceMappingURL=MultiViewCalendar.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { Popup } from '@progress/kendo-react-popup';\nimport { cloneDate } from '@progress/kendo-date-math';\nimport { guid, classNames, Keys } from '@progress/kendo-react-common';\nimport { provideLocalizationService, registerForLocalization } from '@progress/kendo-react-intl';\nimport { DateInput } from '../dateinput/DateInput';\nimport { MultiViewCalendar } from '../calendar/components/MultiViewCalendar';\nimport { EMPTY_SELECTIONRANGE } from '../calendar/models';\nimport { MIN_DATE, MAX_DATE } from '../defaults';\nimport { swapStartEnd, start, end, separator, messages } from '../messages';\nvar WRAPPER_STYLES = { display: 'inline-block' };\nvar DateRangePicker = /** @class */ (function (_super) {\n __extends(DateRangePicker, _super);\n function DateRangePicker(props) {\n var _this = _super.call(this, props) || this;\n _this._element = null;\n _this._wrapper = null;\n _this._calendar = null;\n _this._popupId = guid();\n _this._startInputId = guid();\n _this._endInputId = guid();\n _this.shouldFocusDateInput = false;\n _this.shouldFocusCalendar = false;\n _this.setStartDateInputRef = function (dateInput) {\n _this._startDateInput = dateInput;\n };\n _this.setEndDateInputRef = function (dateInput) {\n _this._endDateInput = dateInput;\n };\n _this.setCalendarRef = function (calendar) {\n _this._calendar = calendar;\n };\n _this.focusCalendarElement = function () {\n if (_this._calendar && _this._calendar.element) {\n _this._calendar.element.focus({ preventScroll: true });\n }\n };\n _this.calculateValue = function (props, state) {\n var value = props.value !== undefined\n ? props.value\n : state.value;\n return value || EMPTY_SELECTIONRANGE;\n };\n _this.calculateShow = function (nextProps, nextState) {\n return nextProps.show !== undefined\n ? nextProps.show\n : nextState.show;\n };\n _this.handleReverseClick = function (event) {\n var value = {\n start: _this.value.end,\n end: _this.value.start\n };\n var args = {\n syntheticEvent: event,\n nativeEvent: event.nativeEvent\n };\n _this.handleChange(value, args);\n };\n _this.handleReverseMouseDown = function (event) {\n event.preventDefault();\n };\n _this.handleFocus = function (event) {\n clearTimeout(_this.nextTickId);\n if (!_this.shouldFocusDateInput) {\n _this.setShow(true);\n }\n if (_this._startDateInput && _this._startDateInput.element) {\n _this._startDateInput.element.classList.add('k-state-focused');\n }\n if (_this._endDateInput && _this._endDateInput.element) {\n _this._endDateInput.element.classList.add('k-state-focused');\n }\n var onFocus = _this.props.onFocus;\n if (onFocus) {\n onFocus.call(undefined, event);\n }\n };\n _this.handleBlur = function (event) {\n _this.nextTick(function () {\n if (_this._startDateInput && _this._startDateInput.element) {\n _this._startDateInput.element.classList.remove('k-state-focused');\n }\n if (_this._endDateInput && _this._endDateInput.element) {\n _this._endDateInput.element.classList.remove('k-state-focused');\n }\n _this.setShow(false);\n });\n var onBlur = _this.props.onBlur;\n if (onBlur) {\n onBlur.call(undefined, event);\n }\n };\n _this.handleEndChange = function (event) {\n var value = {\n start: _this.value.start,\n end: cloneDate(event.value || undefined)\n };\n _this.handleChange(value, event);\n };\n _this.handleStartChange = function (event) {\n var value = {\n start: cloneDate(event.value || undefined),\n end: _this.value.end\n };\n _this.handleChange(value, event);\n };\n _this.extractRangeFromValue = function (event) {\n if (!Array.isArray(event.value) && !(event.value instanceof Date)) {\n return event.value || EMPTY_SELECTIONRANGE;\n }\n var candidate = Array.isArray(event.value) ? event.value[0] : event.value;\n return {\n start: _this.value.end !== null ? candidate : _this.value.start,\n end: _this.value.start !== null ? candidate : _this.value.end\n };\n };\n _this.handleCalendarChange = function (event) {\n var value = _this.extractRangeFromValue(event);\n _this.handleChange(value, event);\n };\n _this.handleKeyDown = function (event) {\n var keyCode = event.keyCode, altKey = event.altKey;\n if (keyCode === Keys.esc) {\n event.preventDefault();\n _this.shouldFocusDateInput = true;\n _this.setShow(false);\n }\n else if (altKey && keyCode === Keys.down) {\n event.preventDefault();\n _this.shouldFocusCalendar = true;\n _this.setShow(true);\n }\n else if (keyCode === Keys.tab\n && _this.show\n && _this._calendar\n && _this._calendar.element\n && _this._endDateInput\n && _this._endDateInput.element\n && document\n && document.activeElement === _this._endDateInput.element) {\n event.preventDefault();\n _this.focusCalendarElement();\n }\n };\n _this.handleChange = function (value, event) {\n _this.setState({ value: value });\n _this.valueDuringOnChange = value;\n var onChange = _this.props.onChange;\n if (onChange) {\n var args = {\n syntheticEvent: event.syntheticEvent,\n nativeEvent: event.nativeEvent,\n value: _this.value,\n show: _this.show,\n target: _this\n };\n onChange.call(undefined, args);\n }\n _this.valueDuringOnChange = undefined;\n };\n _this.state = {\n show: _this.props.show || _this.props.defaultShow || DateRangePicker.defaultProps.defaultShow,\n value: _this.props.value || _this.props.defaultValue || DateRangePicker.defaultProps.defaultValue\n };\n _this.nextTick = _this.nextTick.bind(_this);\n _this.setShow = _this.setShow.bind(_this);\n _this.focusCalendarElement = _this.focusCalendarElement.bind(_this);\n _this.focusDateInputElement = _this.focusDateInputElement.bind(_this);\n return _this;\n }\n Object.defineProperty(DateRangePicker.prototype, \"element\", {\n /**\n * Gets the wrapping element of the DateRangePicker.\n */\n get: function () {\n return this._element;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DateRangePicker.prototype, \"calendar\", {\n /**\n * Gets the MultiVieCalendar inside the DateRangePicker.\n */\n get: function () {\n return this._calendar;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DateRangePicker.prototype, \"value\", {\n /**\n * Gets the value of the DateRangePicker.\n */\n get: function () {\n var value = this.valueDuringOnChange !== undefined\n ? this.valueDuringOnChange\n : this.props.value !== undefined\n ? this.props.value\n : this.state.value;\n return value || EMPTY_SELECTIONRANGE;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DateRangePicker.prototype, \"show\", {\n /**\n * Gets the popup state of the DateRangePicker.\n */\n get: function () {\n return this.showDuringOnChange !== undefined\n ? this.showDuringOnChange\n : this.props.show !== undefined\n ? this.props.show\n : this.state.show;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DateRangePicker.prototype, \"min\", {\n get: function () {\n return this.props.min !== undefined\n ? this.props.min\n : DateRangePicker.defaultProps.min;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DateRangePicker.prototype, \"max\", {\n get: function () {\n return this.props.max !== undefined\n ? this.props.max\n : DateRangePicker.defaultProps.max;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @hidden\n */\n DateRangePicker.prototype.componentDidMount = function () {\n if (this.show) {\n // If defaultShow is true during the initial render, the popup is not aligned.\n this.forceUpdate();\n }\n if (this._startDateInput && this._startDateInput.element\n && this._endDateInput && this._endDateInput.element) {\n this._startDateInput.element.setAttribute('aria-expanded', \"\" + this.show);\n this._endDateInput.element.setAttribute('aria-expanded', \"\" + this.show);\n }\n };\n /**\n * @hidden\n */\n DateRangePicker.prototype.componentDidUpdate = function () {\n if (this._startDateInput && this._startDateInput.element\n && this._endDateInput && this._endDateInput.element) {\n this._startDateInput.element.setAttribute('aria-expanded', \"\" + this.show);\n this._endDateInput.element.setAttribute('aria-expanded', \"\" + this.show);\n }\n if (this.shouldFocusCalendar) {\n this.focusCalendarElement();\n }\n if (this.shouldFocusDateInput) {\n this.focusDateInputElement();\n }\n this.shouldFocusCalendar = false;\n this.shouldFocusDateInput = false;\n };\n /**\n * @hidden\n */\n DateRangePicker.prototype.componentWillUnmount = function () {\n clearTimeout(this.nextTickId);\n };\n /**\n * @hidden\n */\n DateRangePicker.prototype.focus = function () {\n if (this._startDateInput) {\n this._startDateInput.focus();\n }\n };\n /**\n * @hidden\n */\n DateRangePicker.prototype.render = function () {\n var _this = this;\n var value = this.value || EMPTY_SELECTIONRANGE;\n var startDateInputId = (this.props.startDateInputSettings || {}).id || this._startInputId;\n var endDateInputId = (this.props.endDateInputSettings || {}).id || this._endInputId;\n var rootClassName = classNames('k-daterangepicker', {\n 'k-state-disabled': this.props.disabled\n }, this.props.className);\n var localizationService = provideLocalizationService(this);\n var startMessage = localizationService.toLanguageString(start, messages[start]);\n var endMessage = localizationService.toLanguageString(end, messages[end]);\n var separatorMessage = localizationService.toLanguageString(separator, messages[separator]);\n var startDateInputProps = __assign({ label: startMessage, format: this.props.format, min: this.min, max: this.max, id: this._startInputId, disabled: this.props.disabled }, this.props.startDateInputSettings, { value: value.start, onChange: this.handleStartChange });\n var endDateInputProps = __assign({ label: endMessage, format: this.props.format, min: this.min, max: this.max, id: this._endInputId, disabled: this.props.disabled }, this.props.endDateInputSettings, { value: value.end, onChange: this.handleEndChange });\n var popupProps = __assign({ animate: this._wrapper !== null, anchor: this._wrapper || undefined, id: this._popupId, anchorAlign: {\n horizontal: 'left',\n vertical: 'bottom'\n }, popupAlign: {\n horizontal: 'left',\n vertical: 'top'\n } }, this.props.popupSettings, { show: this.show });\n var calendarProps = __assign({ min: this.min, max: this.max, allowReverse: this.props.allowReverse, mode: 'range', focusedDate: this.props.focusedDate, disabled: this.props.disabled }, this.props.calendarSettings, { value: value, onChange: this.handleCalendarChange });\n var calendar = this.props.calendar\n ? React.createElement(this.props.calendar, __assign({}, calendarProps))\n : React.createElement(MultiViewCalendar, __assign({}, calendarProps, { ref: this.setCalendarRef }));\n var reverseButton = (React.createElement(\"span\", __assign({ role: \"button\", className: \"k-select k-button k-flat\", title: provideLocalizationService(this)\n .toLanguageString(swapStartEnd, messages[swapStartEnd]), onMouseDown: this.handleReverseMouseDown, onClick: this.handleReverseClick }, {\n 'aria-controls': startDateInputId + ' ' + endDateInputId,\n 'aria-label': provideLocalizationService(this)\n .toLanguageString(swapStartEnd, messages[swapStartEnd])\n }),\n React.createElement(\"span\", { style: { transform: 'rotate(90deg)' }, className: \"k-icon k-i-arrows-swap\" })));\n return (React.createElement(\"span\", { ref: function (span) { _this._element = span; }, className: rootClassName, style: this.props.style, id: this.props.id, tabIndex: this.props.tabIndex, onFocus: this.handleFocus, onBlur: this.handleBlur, onKeyDown: this.handleKeyDown },\n React.createElement(\"span\", { ref: function (span) { _this._wrapper = span; }, className: \"k-daterangepicker-wrap\", style: WRAPPER_STYLES },\n this.props.startDateInput\n ? React.createElement(this.props.startDateInput, __assign({}, startDateInputProps))\n : React.createElement(DateInput, __assign({}, startDateInputProps, { ref: this.setStartDateInputRef })),\n (this.props.allowReverse\n || (this.props.calendarSettings && this.props.calendarSettings.allowReverse))\n && this.props.swapButton\n ? (reverseButton)\n : (separatorMessage),\n this.props.endDateInput\n ? React.createElement(this.props.endDateInput, __assign({}, endDateInputProps))\n : React.createElement(DateInput, __assign({}, endDateInputProps, { ref: this.setEndDateInputRef }))),\n this.props.popup\n ? React.createElement(this.props.popup, __assign({}, popupProps), calendar)\n : React.createElement(Popup, __assign({}, popupProps), calendar)));\n };\n DateRangePicker.prototype.focusDateInputElement = function () {\n if (!document || !this._startDateInput || !this._startDateInput.element\n || !this._endDateInput || !this._endDateInput.element) {\n return;\n }\n if ((this.value.start === null || this.value.end !== null)\n && document.activeElement !== this._endDateInput.element) {\n this._startDateInput.element.focus({ preventScroll: true });\n }\n else if (document.activeElement !== this._startDateInput.element) {\n this._endDateInput.element.focus({ preventScroll: true });\n }\n };\n DateRangePicker.prototype.nextTick = function (f) {\n // XXX: use setTimeout due to async focus/blur events in IE, and missing relatedTarget prop.\n // XXX: https://github.com/facebook/react/issues/3751\n // Handles multiple focus events happening at the same time.\n clearTimeout(this.nextTickId);\n this.nextTickId = setTimeout(function () { return f(); });\n };\n DateRangePicker.prototype.setShow = function (show) {\n if (this.show === show) {\n return;\n }\n this.setState({ show: show });\n };\n /**\n * @hidden\n */\n DateRangePicker.propTypes = {\n allowReverse: PropTypes.bool,\n calendarSettings: PropTypes.any,\n className: PropTypes.string,\n defaultShow: PropTypes.bool,\n defaultValue: PropTypes.shape({ start: PropTypes.instanceOf(Date), end: PropTypes.instanceOf(Date) }),\n disabled: PropTypes.bool,\n endDateInputSettings: PropTypes.shape(DateInput.propTypes),\n focusedDate: PropTypes.instanceOf(Date),\n format: PropTypes.string,\n id: PropTypes.string,\n max: PropTypes.instanceOf(Date),\n min: PropTypes.instanceOf(Date),\n onBlur: PropTypes.func,\n onChange: PropTypes.func,\n onFocus: PropTypes.func,\n popupSettings: PropTypes.any,\n show: PropTypes.bool,\n startDateInputSettings: PropTypes.any,\n style: PropTypes.any,\n swapButton: PropTypes.any,\n tabIndex: PropTypes.number,\n value: PropTypes.shape({ start: PropTypes.instanceOf(Date), end: PropTypes.instanceOf(Date) })\n };\n /**\n * @hidden\n */\n DateRangePicker.defaultProps = {\n allowReverse: false,\n defaultShow: false,\n defaultValue: EMPTY_SELECTIONRANGE,\n disabled: false,\n format: 'd',\n max: MAX_DATE,\n min: MIN_DATE,\n swapButton: false\n };\n return DateRangePicker;\n}(React.Component));\nexport { DateRangePicker };\nregisterForLocalization(DateRangePicker);\n//# sourceMappingURL=DateRangePicker.js.map","/**\n * @hidden\n */\nvar styles = {\n button: 'k-button',\n 'bare': 'k-bare',\n 'flat': 'k-flat',\n 'outline': 'k-outline',\n 'primary': 'k-primary',\n 'state-active': 'k-state-active',\n 'button-icon': 'k-button-icon',\n 'button-icontext': 'k-button-icontext',\n 'state-disabled': 'k-state-disabled',\n 'group-start': 'k-group-start',\n 'group-end': 'k-group-end',\n 'button-group': 'k-button-group',\n 'button-group-stretched': 'k-button-group-stretched',\n 'ltr': 'k-ltr',\n 'rtl': 'k-rtl'\n};\n/**\n * @hidden\n */\nexport default {\n styles: styles\n};\n//# sourceMappingURL=util.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\n t[p[i]] = s[p[i]];\n return t;\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { classNames } from '@progress/kendo-react-common';\nimport util from './util';\nvar styles = util.styles;\n/**\n * @hidden\n */\nfunction iconElement(_a) {\n var imageUrl = _a.imageUrl, icon = _a.icon, iconClass = _a.iconClass, imageAlt = _a.imageAlt;\n if (imageUrl) {\n return (React.createElement(\"img\", { role: \"presentation\", className: 'k-image', alt: imageAlt, src: imageUrl }));\n }\n else if (icon) {\n var iconClasses = classNames('k-icon', 'k-i-' + icon);\n return (React.createElement(\"span\", { role: \"presentation\", className: iconClasses }));\n }\n else if (iconClass) {\n return (React.createElement(\"span\", { role: \"presentation\", className: iconClass }));\n }\n return null;\n}\nvar Button = /** @class */ (function (_super) {\n __extends(Button, _super);\n function Button(props) {\n var _this = _super.call(this, props) || this;\n _this._element = null;\n _this.handleClick = function (event) {\n _this.toggleIfApplicable();\n if (_this.props.onClick) {\n _this.props.onClick.call(undefined, event);\n }\n };\n _this.state = { active: _this.props.togglable === true && _this.props.selected === true };\n return _this;\n }\n Object.defineProperty(Button.prototype, \"element\", {\n /**\n * Gets the DOM element of the Button component.\n */\n get: function () {\n return this._element;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Button.prototype, \"selected\", {\n /**\n * Returns `true` when the component is togglable and selected ([see example]({% slug toggleable_button %})).\n * Otherwise, returns `false`.\n */\n get: function () {\n return this._activeTemp !== undefined ? this._activeTemp : this.state.active;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @hidden\n */\n Button.getDerivedStateFromProps = function (props, state) {\n if (props.togglable && props.selected !== undefined && props.selected !== state.active) {\n return { active: props.selected };\n }\n return null;\n };\n /**\n * @hidden\n */\n Button.prototype.render = function () {\n var _this = this;\n var _a;\n var _b = this.props, children = _b.children, look = _b.look, primary = _b.primary, togglable = _b.togglable, icon = _b.icon, iconClass = _b.iconClass, imageUrl = _b.imageUrl, imageAlt = _b.imageAlt, className = _b.className, onClick = _b.onClick, htmlAttributes = __rest(_b, [\"children\", \"look\", \"primary\", \"togglable\", \"icon\", \"iconClass\", \"imageUrl\", \"imageAlt\", \"className\", \"onClick\"]);\n var hasIcon = (icon !== undefined || iconClass !== undefined || imageUrl !== undefined);\n var hasChildren = children !== undefined;\n var buttonClasses = classNames([styles.button], (_a = {},\n _a[styles[\"\" + look]] = look !== 'default',\n _a[styles.primary] = primary,\n _a[styles['state-disabled']] = this.props.disabled,\n _a[styles['state-active']] = this.state.active,\n _a[styles['button-icon']] = !hasChildren && hasIcon,\n _a[styles['button-icontext']] = hasChildren && hasIcon,\n _a), [styles[\"\" + this.props.dir]], className);\n var buttonProps = {\n className: buttonClasses,\n onClick: this.handleClick,\n // Accessibility properties\n role: togglable ? 'checkbox' : undefined,\n 'aria-disabled': this.props.disabled || undefined,\n 'aria-checked': togglable ? this.state.active : undefined\n };\n var iconEl = iconElement({\n icon: icon,\n iconClass: iconClass,\n imageUrl: imageUrl,\n imageAlt: imageAlt\n });\n return (React.createElement(\"button\", __assign({}, buttonProps, htmlAttributes, { ref: function (button) { return _this._element = button; } }),\n iconEl,\n children));\n };\n Button.prototype.toggleIfApplicable = function () {\n var _this = this;\n if (this.props.togglable && this.props.selected === undefined) {\n var active = !this.state.active;\n this._activeTemp = active;\n this.setState({ active: active }, function () { return _this._activeTemp = undefined; });\n }\n };\n /**\n * @hidden\n */\n Button.propTypes = {\n children: PropTypes.node,\n look: PropTypes.oneOf(['default', 'bare', 'flat', 'outline']),\n primary: PropTypes.bool,\n selected: PropTypes.bool,\n togglable: PropTypes.bool,\n icon: PropTypes.string,\n iconClass: PropTypes.string,\n imageUrl: PropTypes.string,\n imageAlt: PropTypes.string\n };\n /**\n * @hidden\n */\n Button.defaultProps = {\n look: 'default',\n primary: false,\n togglable: false\n };\n return Button;\n}(React.Component));\nexport default Button;\n//# sourceMappingURL=Button.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { classNames } from '@progress/kendo-react-common';\nimport util from './util';\nvar styles = util.styles;\nvar ButtonGroup = /** @class */ (function (_super) {\n __extends(ButtonGroup, _super);\n function ButtonGroup() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this._element = null;\n return _this;\n }\n /**\n * @hidden\n */\n ButtonGroup.prototype.render = function () {\n var _this = this;\n var _a;\n var buttons = this.mapButtons(this.props.children);\n var groupClasses = classNames([styles['button-group']], (_a = {},\n _a[styles['state-disabled']] = this.props.disabled,\n _a[styles['button-group-stretched']] = !!this.props.width,\n _a), this.props.className);\n var groupProps = {\n className: groupClasses,\n style: { 'width': \"\" + this.props.width },\n dir: this.props.dir,\n // Accessibility properties\n role: 'group',\n 'aria-disabled': this.props.disabled,\n 'aria-multiselectable': true\n };\n return (React.createElement(\"div\", __assign({ ref: function (div) { _this._element = div; } }, groupProps, { className: groupClasses }), buttons));\n };\n ButtonGroup.prototype.mapButtons = function (children) {\n var _this = this;\n var count = React.Children.count(children);\n var rtl = this.props.dir !== undefined\n ? this.props.dir === 'rtl'\n : (this._element && (getComputedStyle(this._element).direction === 'rtl') || false);\n return React.Children.map(children, function (child, index) {\n if (React.isValidElement(child)) {\n return _this.renderButton(child, index, (index === count - 1), rtl);\n }\n return child;\n });\n };\n ButtonGroup.prototype.renderButton = function (child, index, isLast, isRtl) {\n var _a;\n var className = classNames(child.props.className, (_a = {},\n _a[styles['group-start']] = isRtl ? isLast : index === 0,\n _a[styles['group-end']] = isRtl ? index === 0 : isLast,\n _a));\n var style = __assign({}, (this.props.width ? { width: this.props.width } : {}), (child.props.style || {}));\n var disabled = this.props.disabled || child.props.disabled;\n var buttonProps = __assign({}, child.props, (className ? { className: className } : {}), (Object.keys(style).length ? { style: style } : {}), (disabled !== undefined ? { disabled: disabled } : {}));\n return React.Children.count(child.props.children) > 0 ?\n React.cloneElement(child, buttonProps, child.props.children) :\n React.cloneElement(child, buttonProps);\n };\n /**\n * @hidden\n */\n ButtonGroup.propTypes = {\n children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.element), PropTypes.element]),\n className: PropTypes.string,\n disabled: PropTypes.bool,\n width: PropTypes.string,\n dir: PropTypes.string\n };\n return ButtonGroup;\n}(React.Component));\nexport default ButtonGroup;\n//# sourceMappingURL=ButtonGroup.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport { classNames } from '@progress/kendo-react-common';\n/**\n * @hidden\n */\nvar ButtonItem = /** @class */ (function (_super) {\n __extends(ButtonItem, _super);\n function ButtonItem() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.onClick = function (event) { return _this.props.onClick(event, _this.props.index); };\n return _this;\n }\n ButtonItem.prototype.render = function () {\n var _a = this.props, dataItem = _a.dataItem, focused = _a.focused, id = _a.id, onDown = _a.onDown;\n return (React.createElement(\"li\", { id: id, className: classNames('k-item', {\n 'k-state-focused': focused,\n 'k-state-selected': dataItem.selected,\n 'k-state-disabled': dataItem.disabled\n }), onClick: this.onClick, onMouseDown: onDown, onPointerDown: onDown, role: \"menuItem\", \"aria-disabled\": dataItem.disabled || undefined }, this.renderContent()));\n };\n ButtonItem.prototype.renderContent = function () {\n var _a = this.props, dataItem = _a.dataItem, textField = _a.textField, index = _a.index;\n var Render = this.props.dataItem.render || this.props.itemRender;\n var text = dataItem.text !== undefined ? dataItem.text :\n (textField ? dataItem[textField] : dataItem);\n var iconClass = dataItem.icon ? \"k-icon k-i-\" + dataItem.icon : dataItem.iconClass;\n return (Render && React.createElement(Render, { item: dataItem, itemIndex: index })) || ([\n (iconClass && (React.createElement(\"span\", { className: iconClass, role: \"presentation\", key: \"icon\" }))),\n (dataItem.imageUrl && (React.createElement(\"img\", { className: \"k-image\", alt: \"\", src: dataItem.imageUrl, role: \"presentation\", key: \"image\" }))),\n text\n ]);\n };\n return ButtonItem;\n}(React.Component));\nexport default ButtonItem;\n//# sourceMappingURL=ButtonItem.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nvar SplitButtonItem = /** @class */ (function (_super) {\n __extends(SplitButtonItem, _super);\n function SplitButtonItem() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @hidden\n */\n SplitButtonItem.prototype.render = function () {\n return null;\n };\n /**\n * @hidden\n */\n SplitButtonItem.propTypes = {\n text: PropTypes.string,\n icon: PropTypes.string,\n iconClass: PropTypes.string,\n imageUrl: PropTypes.string,\n disabled: PropTypes.bool,\n render: PropTypes.any\n };\n return SplitButtonItem;\n}(React.Component));\nexport default SplitButtonItem;\n//# sourceMappingURL=SplitButtonItem.js.map","import { Keys } from '@progress/kendo-react-common';\n/**\n * @hidden\n */\nvar navigate = function (focusedIndex, keyCode, altKey, total) {\n if (altKey) {\n return focusedIndex;\n }\n switch (keyCode) {\n case Keys.enter:\n case Keys.space:\n case Keys.esc:\n return -1;\n case Keys.up:\n case Keys.left:\n return Math.max(0, focusedIndex - 1);\n case Keys.down:\n case Keys.right:\n return Math.min(total - 1, focusedIndex + 1);\n default:\n return focusedIndex;\n }\n};\nexport default navigate;\n//# sourceMappingURL=navigation.js.map","/**\n * @hidden\n */\nexport function getAnchorAlign(isDirectionRightToLeft) {\n var align = { horizontal: 'left', vertical: 'bottom' };\n if (isDirectionRightToLeft) {\n align.horizontal = 'right';\n }\n return align;\n}\n/**\n * @hidden\n */\nexport function getPopupAlign(isDirectionRightToLeft) {\n var align = { horizontal: 'left', vertical: 'top' };\n if (isDirectionRightToLeft) {\n align.horizontal = 'right';\n }\n return align;\n}\n//# sourceMappingURL=popup.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { Button } from './../main';\nimport { classNames, guid, Keys } from '@progress/kendo-react-common';\nimport { dispatchEvent } from '@progress/kendo-react-common';\nimport ButtonItem from './ButtonItem';\nimport SplitButtonItem from './SplitButtonItem';\nimport navigation from './utils/navigation';\nimport { Popup } from '@progress/kendo-react-popup';\nimport { getAnchorAlign, getPopupAlign } from './utils/popup';\n/**\n * Represents the [KendoReact SplitButton component]({% slug overview_splitbutton %}).\n *\n * @example\n * ```jsx\n * class App extends React.Component {\n * render() {\n * return (\n * \n * \n * \n * \n * \n * );\n * }\n * }\n * ReactDOM.render(, document.querySelector('my-app'));\n * ```\n */\nvar SplitButton = /** @class */ (function (_super) {\n __extends(SplitButton, _super);\n function SplitButton() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /**\n * @hidden\n */\n _this.state = {\n focused: false,\n focusedIndex: -1,\n opened: false\n };\n _this.wrapper = null;\n _this.mainButton = null;\n _this.guid = guid();\n _this.buttonsData = [];\n _this.onKeyDown = function (event) {\n var _a = _this.state, opened = _a.opened, focusedIndex = _a.focusedIndex;\n if (event.altKey) {\n if (!opened && event.keyCode === Keys.down) {\n _this.dispatchPopupEvent(event, true);\n _this.setState({ focusedIndex: 0, opened: true });\n }\n else if (opened && event.keyCode === Keys.up) {\n _this.dispatchPopupEvent(event, false);\n _this.setState({ focusedIndex: -1, opened: false });\n }\n return;\n }\n var newState = undefined;\n if (event.keyCode === Keys.enter || event.keyCode === Keys.space) {\n // Prevent default because otherwise when an item is selected\n // click on the default button gets emitted which opens the popup again.\n event.preventDefault();\n _this.dispatchClickEvent(event, focusedIndex);\n if (focusedIndex >= 0) {\n newState = {\n focusedIndex: opened ? -1 : 0,\n opened: !opened\n };\n _this.dispatchPopupEvent(event, newState.opened);\n }\n }\n else if (opened && event.keyCode === Keys.esc) {\n newState = {\n focusedIndex: -1,\n opened: false\n };\n _this.dispatchPopupEvent(event, newState.opened);\n }\n if (opened) {\n var newFocused = navigation(focusedIndex, event.keyCode, event.altKey, _this.buttonsData.length);\n if (newFocused !== focusedIndex) {\n newState = newState || {};\n newState.focusedIndex = newFocused;\n }\n var arrowKey = event.keyCode === Keys.up || event.keyCode === Keys.down ||\n event.keyCode === Keys.left || event.keyCode === Keys.right;\n if (!event.altKey && arrowKey) {\n // Needed to notify the parent listeners that event is handled.\n event.preventDefault();\n }\n }\n if (newState) {\n _this.setState(newState);\n }\n };\n _this.onFocus = function (event) {\n dispatchEvent(_this.props.onFocus, event, _this, undefined);\n _this.setState({ focused: true, focusedIndex: -1 });\n };\n _this.onItemClick = function (event, clickedItemIndex) {\n var opened = _this.state.opened;\n if (opened) {\n _this.setState({ focusedIndex: 0, opened: false });\n }\n _this.dispatchClickEvent(event, clickedItemIndex);\n if (opened) {\n _this.dispatchPopupEvent(event, false);\n }\n };\n _this.onBlur = function (event) {\n _this.setState({\n focused: false,\n focusedIndex: -1,\n opened: false\n });\n dispatchEvent(_this.props.onBlur, event, _this, undefined);\n if (_this.state.opened) {\n _this.dispatchPopupEvent(event, false);\n }\n };\n _this.onSplitPartClick = function (event) {\n if (_this.buttonsData.length) {\n var opened = _this.state.opened;\n var toOpen = !opened;\n _this.dispatchPopupEvent(event, toOpen);\n _this.setState({\n focusedIndex: toOpen ? 0 : -1,\n opened: toOpen,\n focused: true\n });\n }\n };\n _this.onDownSplitPart = function (event) {\n event.preventDefault();\n if (_this.element && document.activeElement !== _this.element) {\n _this.element.focus();\n }\n };\n _this.onItemDown = function (event) {\n if (document.activeElement === _this.element) {\n event.preventDefault();\n }\n };\n _this.dispatchPopupEvent = function (dispatchedEvent, open) {\n dispatchEvent(open ? _this.props.onOpen : _this.props.onClose, dispatchedEvent, _this, undefined);\n };\n return _this;\n }\n /**\n * @hidden\n */\n SplitButton.prototype.render = function () {\n var _this = this;\n this.buttonsData = this.props.items ||\n React.Children.toArray(this.props.children)\n .filter(function (child) { return child && child.type === SplitButtonItem; })\n .map(function (child) { return child.props; });\n var rtl = this.isRtl();\n var dir = rtl ? 'rtl' : undefined;\n var _a = this.props, tabIndex = _a.tabIndex, disabled = _a.disabled;\n var focusedIndex = this.state.focusedIndex;\n return (React.createElement(\"div\", { className: classNames('k-widget', 'k-split-button', 'k-button-group', this.props.className, {\n 'k-state-focused': this.state.focused\n }), onKeyDown: this.onKeyDown, onFocus: this.onFocus, onBlur: this.onBlur, dir: dir, ref: function (el) { return _this.wrapper = el; } },\n React.createElement(Button, { onClick: function (event) { return _this.onItemClick(event, -1); }, disabled: disabled || undefined, tabIndex: tabIndex, accessKey: this.props.accessKey, className: this.props.buttonClass, icon: this.props.icon, iconClass: this.props.iconClass, imageUrl: this.props.imageUrl, look: this.props.look, dir: dir, \"aria-disabled\": disabled, \"aria-haspopup\": true, \"aria-expanded\": this.state.opened, \"aria-label\": this.props.text + \" splitbutton\", ref: function (el) { return _this.mainButton = el && el.element; }, \"aria-owns\": this.guid, \"aria-activedescendant\": focusedIndex >= 0 ? this.guid + \"-\" + focusedIndex : undefined }, this.props.text),\n React.createElement(Button, { icon: \"arrow-s\", disabled: disabled || undefined, tabIndex: -1, look: this.props.look, onClick: this.onSplitPartClick, onMouseDown: this.onDownSplitPart, onPointerDown: this.onDownSplitPart, dir: dir, \"aria-label\": \"menu toggling button\" }),\n this.renderPopup(rtl)));\n };\n /**\n * @hidden\n */\n SplitButton.prototype.componentDidMount = function () {\n if (this.props.dir === undefined && this.isRtl()) {\n this.forceUpdate();\n }\n };\n Object.defineProperty(SplitButton.prototype, \"element\", {\n /**\n * The DOM element of main button.\n */\n get: function () {\n return this.mainButton;\n },\n enumerable: true,\n configurable: true\n });\n SplitButton.prototype.dispatchClickEvent = function (dispatchedEvent, clickedItemIndex) {\n if (!this.isItemDisabled(clickedItemIndex)) {\n if (clickedItemIndex === -1) {\n dispatchEvent(this.props.onButtonClick, dispatchedEvent, this, undefined);\n }\n else {\n dispatchEvent(this.props.onItemClick, dispatchedEvent, this, {\n item: this.buttonsData[clickedItemIndex],\n itemIndex: clickedItemIndex\n });\n }\n }\n };\n SplitButton.prototype.renderPopup = function (rtl) {\n var _a = this.props.popupSettings, popupSettings = _a === void 0 ? {} : _a;\n return (React.createElement(Popup, { anchor: this.wrapper || undefined, show: this.state.opened, animate: popupSettings.animate, popupClass: classNames('k-list-container k-reset k-group', popupSettings.popupClass), anchorAlign: popupSettings.anchorAlign || getAnchorAlign(rtl), popupAlign: popupSettings.popupAlign || getPopupAlign(rtl), style: rtl ? { direction: 'rtl' } : undefined },\n React.createElement(\"ul\", { className: \"k-list k-reset\", role: \"menu\", id: this.guid }, this.renderChildItems())));\n };\n SplitButton.prototype.renderChildItems = function () {\n var _this = this;\n var _a = this.props, itemRender = _a.itemRender, textField = _a.textField;\n return this.buttonsData.length > 0 ? (this.buttonsData.map(function (item, index) {\n return (React.createElement(ButtonItem, { dataItem: item, textField: textField, focused: _this.state.focusedIndex === index, onClick: _this.onItemClick, onDown: _this.onItemDown, itemRender: itemRender, key: index, index: index, id: _this.guid + \"-\" + index }));\n })) : null;\n };\n SplitButton.prototype.isItemDisabled = function (index) {\n return this.buttonsData[index] ? this.buttonsData[index].disabled : this.props.disabled;\n };\n SplitButton.prototype.isRtl = function () {\n return this.props.dir !== undefined ? this.props.dir === 'rtl' :\n !!this.wrapper && getComputedStyle(this.wrapper).direction === 'rtl';\n };\n /**\n * @hidden\n */\n SplitButton.propTypes = {\n accessKey: PropTypes.string,\n onButtonClick: PropTypes.func,\n onFocus: PropTypes.func,\n onBlur: PropTypes.func,\n onItemClick: PropTypes.func,\n onOpen: PropTypes.func,\n onClose: PropTypes.func,\n text: PropTypes.string,\n items: PropTypes.arrayOf(PropTypes.any),\n textField: PropTypes.string,\n tabIndex: PropTypes.number,\n disabled: PropTypes.bool,\n icon: PropTypes.string,\n iconClass: PropTypes.string,\n imageUrl: PropTypes.string,\n popupSettings: PropTypes.object,\n itemRender: PropTypes.any,\n look: PropTypes.string,\n className: PropTypes.string,\n buttonClass: PropTypes.string,\n dir: PropTypes.string\n };\n return SplitButton;\n}(React.Component));\nexport default SplitButton;\n//# sourceMappingURL=SplitButton.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nvar DropDownButtonItem = /** @class */ (function (_super) {\n __extends(DropDownButtonItem, _super);\n function DropDownButtonItem() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @hidden\n */\n DropDownButtonItem.prototype.render = function () {\n return null;\n };\n /**\n * @hidden\n */\n DropDownButtonItem.propTypes = {\n text: PropTypes.string,\n icon: PropTypes.string,\n iconClass: PropTypes.string,\n imageUrl: PropTypes.string,\n selected: PropTypes.bool,\n disabled: PropTypes.bool,\n render: PropTypes.any\n };\n return DropDownButtonItem;\n}(React.Component));\nexport default DropDownButtonItem;\n//# sourceMappingURL=DropDownButtonItem.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { Button } from './../main';\nimport { classNames, guid, Keys } from '@progress/kendo-react-common';\nimport { dispatchEvent } from '@progress/kendo-react-common';\nimport navigation from './utils/navigation';\nimport DropDownButtonItem from './DropDownButtonItem';\nimport ButtonItem from './ButtonItem';\nimport { Popup } from '@progress/kendo-react-popup';\nimport { getAnchorAlign, getPopupAlign } from './utils/popup';\n/**\n * Represents the [KendoReact DropDownButton component]({% slug overview_dropdownbutton %}).\n *\n * @example\n * ```jsx\n * class App extends React.Component {\n * render() {\n * return (\n * \n * \n * \n * \n * \n * );\n * }\n * }\n * ReactDOM.render(, document.querySelector('my-app'));\n * ```\n */\nvar DropDownButton = /** @class */ (function (_super) {\n __extends(DropDownButton, _super);\n function DropDownButton() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /**\n * @hidden\n */\n _this.state = {\n opened: false,\n focused: false,\n focusedIndex: -1\n };\n _this.wrapper = null;\n _this.mainButton = null;\n _this.guid = guid();\n _this.buttonsData = [];\n _this.onKeyDown = function (event) {\n var _a = _this.state, opened = _a.opened, focusedIndex = _a.focusedIndex;\n if (event.altKey) {\n if (!opened && event.keyCode === Keys.down) {\n _this.dispatchPopupEvent(event, true);\n _this.setState({ focusedIndex: 0, opened: true });\n }\n else if (opened && event.keyCode === Keys.up) {\n _this.dispatchPopupEvent(event, false);\n _this.setState({ focusedIndex: -1, opened: false });\n }\n return;\n }\n var newState = undefined;\n if (event.keyCode === Keys.enter || event.keyCode === Keys.space) {\n if (focusedIndex >= 0) {\n _this.dispatchClickEvent(event, focusedIndex);\n }\n // Prevent default because otherwise when an item is selected\n // click on the default button gets emitted which opens the popup again.\n event.preventDefault();\n newState = {\n focusedIndex: opened ? -1 : 0,\n opened: !opened\n };\n _this.dispatchPopupEvent(event, newState.opened);\n }\n else if (opened && event.keyCode === Keys.esc) {\n newState = {\n focusedIndex: -1,\n opened: false\n };\n _this.dispatchPopupEvent(event, newState.opened);\n }\n if (opened) {\n var newFocused = navigation(focusedIndex, event.keyCode, event.altKey, _this.buttonsData.length);\n if (newFocused !== focusedIndex) {\n newState = newState || {};\n newState.focusedIndex = newFocused;\n }\n var arrowKey = event.keyCode === Keys.up || event.keyCode === Keys.down ||\n event.keyCode === Keys.left || event.keyCode === Keys.right;\n if (!event.altKey && arrowKey) {\n // Needed to notify the parent listeners that event is handled.\n event.preventDefault();\n }\n }\n if (newState) {\n _this.setState(newState);\n }\n };\n _this.onFocus = function (event) {\n _this.setState({ focused: true, focusedIndex: _this.state.opened ? 0 : -1 });\n dispatchEvent(_this.props.onFocus, event, _this, undefined);\n };\n _this.onBlur = function (event) {\n _this.setState({ focused: false, opened: false, focusedIndex: -1 });\n dispatchEvent(_this.props.onBlur, event, _this, undefined);\n var fireCloseEvent = _this.state.opened;\n if (fireCloseEvent) {\n _this.dispatchPopupEvent(event, false);\n }\n };\n _this.onItemClick = function (event, clickedItemIndex) {\n _this.setState({ focusedIndex: -1, opened: false });\n _this.dispatchClickEvent(event, clickedItemIndex);\n _this.dispatchPopupEvent(event, false);\n };\n _this.onItemDown = function (event) {\n if (document.activeElement === _this.element) {\n event.preventDefault();\n }\n };\n _this.mouseDown = function (event) {\n event.preventDefault();\n };\n _this.onClickMainButton = function (event) {\n if (!_this.buttonsData.length) {\n return;\n }\n var opened = _this.state.opened;\n var toOpen = !opened;\n _this.setState({\n opened: toOpen,\n focused: true,\n focusedIndex: toOpen ? 0 : -1\n });\n _this.dispatchPopupEvent(event, toOpen);\n };\n _this.dispatchPopupEvent = function (dispatchedEvent, open) {\n dispatchEvent(open ? _this.props.onOpen : _this.props.onClose, dispatchedEvent, _this, undefined);\n };\n return _this;\n }\n /**\n * @hidden\n */\n DropDownButton.prototype.render = function () {\n var _this = this;\n var rtl = this.isRtl();\n var dir = rtl ? 'rtl' : undefined;\n var _a = this.props, tabIndex = _a.tabIndex, disabled = _a.disabled;\n var focusedIndex = this.state.focusedIndex;\n this.buttonsData = this.props.items ||\n React.Children.toArray(this.props.children)\n .filter(function (child) { return child && child.type === DropDownButtonItem; })\n .map(function (child) { return child.props; });\n return (React.createElement(\"div\", { className: classNames('k-widget', 'k-dropdown-button', this.props.className, {\n 'k-state-focused': this.state.focused\n }), onKeyDown: this.onKeyDown, onFocus: this.onFocus, onBlur: this.onBlur, dir: dir, ref: function (el) { return _this.wrapper = el; } },\n React.createElement(Button, { onClick: this.onClickMainButton, onMouseDown: this.mouseDown, disabled: disabled || undefined, tabIndex: tabIndex, accessKey: this.props.accessKey, icon: this.props.icon, iconClass: this.props.iconClass, className: this.props.buttonClass, imageUrl: this.props.imageUrl, look: this.props.look, primary: this.props.primary, dir: dir, \"aria-disabled\": disabled, \"aria-haspopup\": true, \"aria-expanded\": this.state.opened, \"aria-label\": this.props.text + \" dropdownbutton\", ref: function (btn) { return _this.mainButton = btn && btn.element; }, \"aria-owns\": this.guid, \"aria-activedescendant\": focusedIndex >= 0 ? this.guid + \"-\" + focusedIndex : undefined }, this.props.text),\n this.renderPopup(rtl)));\n };\n /**\n * @hidden\n */\n DropDownButton.prototype.componentDidMount = function () {\n if (this.props.dir === undefined && this.isRtl()) {\n this.forceUpdate();\n }\n };\n /**\n * @hidden\n */\n DropDownButton.prototype.componentDidUpdate = function () {\n if (this.state.focused && this.element) {\n // firefox in mac does not focus on mouse-down, next line fixes this\n this.element.focus();\n }\n };\n Object.defineProperty(DropDownButton.prototype, \"element\", {\n /**\n * The DOM element of main button.\n */\n get: function () {\n return this.mainButton;\n },\n enumerable: true,\n configurable: true\n });\n DropDownButton.prototype.dispatchClickEvent = function (dispatchedEvent, index) {\n if (!this.isItemDisabled(index)) {\n dispatchEvent(this.props.onItemClick, dispatchedEvent, this, {\n item: this.buttonsData[index],\n itemIndex: index\n });\n }\n };\n DropDownButton.prototype.renderPopup = function (rtl) {\n var _a = this.props.popupSettings, popupSettings = _a === void 0 ? {} : _a;\n return (React.createElement(Popup, { anchor: this.wrapper || undefined, show: this.state.opened, animate: popupSettings.animate, popupClass: classNames('k-list-container k-reset k-group', popupSettings.popupClass), anchorAlign: popupSettings.anchorAlign || getAnchorAlign(rtl), popupAlign: popupSettings.popupAlign || getPopupAlign(rtl), style: rtl ? { direction: 'rtl' } : undefined },\n React.createElement(\"ul\", { className: \"k-list k-reset\", role: \"menu\", id: this.guid }, this.renderChildItems())));\n };\n DropDownButton.prototype.renderChildItems = function () {\n var _this = this;\n var _a = this.props, itemRender = _a.itemRender, textField = _a.textField;\n return this.buttonsData.length > 0 ? (this.buttonsData.map(function (item, index) {\n return (React.createElement(ButtonItem, { dataItem: item, textField: textField, focused: _this.state.focusedIndex === index, onClick: _this.onItemClick, onDown: _this.onItemDown, itemRender: itemRender, index: index, key: index, id: _this.guid + \"-\" + index }));\n })) : null;\n };\n DropDownButton.prototype.isItemDisabled = function (index) {\n return this.buttonsData[index] ? this.buttonsData[index].disabled : this.props.disabled;\n };\n DropDownButton.prototype.isRtl = function () {\n return this.props.dir !== undefined ? this.props.dir === 'rtl' :\n !!this.wrapper && getComputedStyle(this.wrapper).direction === 'rtl';\n };\n /**\n * @hidden\n */\n DropDownButton.propTypes = {\n accessKey: PropTypes.string,\n primary: PropTypes.bool,\n onFocus: PropTypes.func,\n onBlur: PropTypes.func,\n onItemClick: PropTypes.func,\n onOpen: PropTypes.func,\n onClose: PropTypes.func,\n text: PropTypes.string,\n items: PropTypes.arrayOf(PropTypes.any),\n textField: PropTypes.string,\n tabIndex: PropTypes.number,\n disabled: PropTypes.bool,\n icon: PropTypes.string,\n iconClass: PropTypes.string,\n imageUrl: PropTypes.string,\n popupSettings: PropTypes.object,\n itemRender: PropTypes.any,\n look: PropTypes.string,\n className: PropTypes.string,\n buttonClass: PropTypes.string,\n dir: PropTypes.string\n };\n return DropDownButton;\n}(React.Component));\nexport default DropDownButton;\n//# sourceMappingURL=DropDownButton.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\n/**\n * Represents the KendoReact ToolbarItem component.\n * To add a tool to the Toolbar, wrap it inside a ToolbarItem component\n * ([see example]({% slug content_toolbar %})).\n */\nvar ToolbarItem = /** @class */ (function (_super) {\n __extends(ToolbarItem, _super);\n function ToolbarItem() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this._element = null;\n return _this;\n }\n Object.defineProperty(ToolbarItem.prototype, \"element\", {\n /**\n * Returns the HTML element of the ToolbarItem component.\n */\n get: function () {\n return this._element;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @hidden\n */\n ToolbarItem.prototype.render = function () {\n var _this = this;\n return (React.createElement(\"span\", { className: this.props.className, style: { display: 'inline-block' }, ref: function (e) { return _this._element = e; } }, this.props.children));\n };\n /**\n * @hidden\n */\n ToolbarItem.propTypes = {\n className: PropTypes.string\n };\n return ToolbarItem;\n}(React.PureComponent));\nexport default ToolbarItem;\n//# sourceMappingURL=ToolbarItem.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport { findDOMNode } from 'react-dom';\n/**\n * @hidden\n */\nvar ToolbarButton = /** @class */ (function (_super) {\n __extends(ToolbarButton, _super);\n function ToolbarButton(props) {\n var _this = _super.call(this, props) || this;\n _this._element = null;\n _this.state = {\n tabIndex: props.tabIndex\n };\n return _this;\n }\n Object.defineProperty(ToolbarButton.prototype, \"button\", {\n get: function () {\n var element = findDOMNode(this);\n if (element && element.nodeName !== 'BUTTON') {\n return element.querySelector('button');\n }\n return element;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ToolbarButton.prototype, \"tabIndex\", {\n get: function () {\n return this.state.tabIndex;\n },\n set: function (value) {\n if (this.state.tabIndex !== value) {\n this.setState({\n tabIndex: value\n });\n }\n },\n enumerable: true,\n configurable: true\n });\n ToolbarButton.prototype.focus = function () {\n var button = this.element;\n if (button) {\n button.focus();\n }\n };\n Object.defineProperty(ToolbarButton.prototype, \"element\", {\n get: function () {\n return this._element;\n },\n enumerable: true,\n configurable: true\n });\n ToolbarButton.prototype.componentDidMount = function () {\n this._element = this.button;\n this.adjustTabIndex();\n };\n ToolbarButton.prototype.componentWillUnmount = function () {\n this._element = null;\n };\n ToolbarButton.prototype.componentDidUpdate = function () {\n this._element = this.button;\n this.adjustTabIndex();\n };\n ToolbarButton.prototype.render = function () {\n var button = this.props.button;\n return React.cloneElement(button, __assign({}, button.props, { tabIndex: this.state.tabIndex }), button.props.children);\n };\n ToolbarButton.prototype.adjustTabIndex = function () {\n var button = this.element;\n var tabIndex = this.state.tabIndex;\n if (button && button.tabIndex !== tabIndex) {\n button.tabIndex = tabIndex;\n }\n };\n return ToolbarButton;\n}(React.Component));\nexport default ToolbarButton;\n//# sourceMappingURL=ToolbarButton.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport ToolbarItem from './tools/ToolbarItem';\nimport ToolbarButton from './tools/ToolbarButton';\nimport ButtonGroup from '../ButtonGroup';\nimport { classNames, Keys } from '@progress/kendo-react-common';\n/**\n * Represents the [KendoReact Toolbar component]({% slug overview_toolbar %}).\n *\n * @example\n * ```jsx\n * class App extends React.Component {\n * render() {\n * return (\n * \n * \n * \n * \n * \n * \n * \n * \n * \n * );\n * }\n * }\n * ReactDOM.render(, document.querySelector('my-app'));\n * ```\n */\nvar Toolbar = /** @class */ (function (_super) {\n __extends(Toolbar, _super);\n function Toolbar() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this._element = null;\n _this.buttons = [];\n _this.focusedIndex = 0;\n _this.counter = 0;\n _this.offsetHeight = 0;\n _this.offsetWidth = 0;\n _this.mapToolbarChild = function (toolbarItem) {\n if (toolbarItem && toolbarItem.type === ToolbarItem) {\n return React.cloneElement(toolbarItem, toolbarItem.props, React.Children.map(toolbarItem.props.children, _this.mapItemChildren));\n }\n return toolbarItem;\n };\n _this.mapItemChildren = function (tool) {\n if (tool.type === ButtonGroup) {\n return React.cloneElement(tool, tool.props, React.Children.map(tool.props.children, _this.mapButton));\n }\n return _this.mapButton(tool);\n };\n _this.mapButton = function (button) {\n var index = _this.counter;\n _this.counter++;\n return (React.createElement(ToolbarButton, { ref: function (b) { return _this.buttonRef(b, index); }, tabIndex: _this.focusedIndex === index ?\n (_this.props.tabIndex || Toolbar.defaultProps.tabIndex) : -1, button: button }));\n };\n _this.buttonRef = function (button, index) {\n _this.buttons[index] = button;\n if (!button && !_this.buttons.find(function (b) { return b !== null; })) {\n _this.buttons.length = 0;\n }\n };\n _this.onKeyDown = function (event) {\n var target = event.target;\n var _a = _this, focusedIndex = _a.focusedIndex, buttons = _a.buttons;\n var arrowKey = event.keyCode === Keys.left || event.keyCode === Keys.right;\n if (!arrowKey || event.defaultPrevented || buttons.findIndex(function (b) { return b !== null && b.element === target; }) === -1) {\n return;\n }\n if (event.keyCode === Keys.left) {\n _this.focusButton(focusedIndex, focusedIndex - 1);\n }\n else {\n _this.focusButton(focusedIndex, focusedIndex + 1);\n }\n };\n _this.onWindowResize = function (event) {\n var element = _this.element;\n if (!element) {\n return;\n }\n var offsetWidth = element.offsetWidth;\n var offsetHeight = element.offsetHeight;\n if (_this.offsetWidth !== offsetWidth || _this.offsetHeight !== offsetHeight) {\n _this.offsetWidth = offsetWidth;\n _this.offsetHeight = offsetHeight;\n var newSizes = { offsetWidth: _this.offsetWidth, offsetHeight: _this.offsetHeight };\n if (_this.props.onResize) {\n _this.props.onResize.call(undefined, __assign({ target: _this }, newSizes, { nativeEvent: event }));\n }\n }\n };\n return _this;\n }\n Object.defineProperty(Toolbar.prototype, \"element\", {\n /**\n * Returns the HTML element of the Toolbar component.\n */\n get: function () {\n return this._element;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @hidden\n */\n Toolbar.prototype.componentDidMount = function () {\n window.addEventListener('resize', this.onWindowResize);\n var element = this.element;\n if (element) {\n this.offsetWidth = element.offsetWidth;\n this.offsetHeight = element.offsetHeight;\n }\n };\n /**\n * @hidden\n */\n Toolbar.prototype.componentDidUpdate = function () {\n var _this = this;\n var element = this.element;\n if (!element) {\n return;\n }\n var focused = element.querySelector('button:focus');\n var prevFocusedIndex = this.focusedIndex;\n if (!focused) {\n this.focusedIndex = 0;\n }\n else {\n var focusedIndex = this.buttons.findIndex(function (b) { return b !== null && b.element === focused; });\n if (focusedIndex !== -1 && focusedIndex !== this.focusedIndex) {\n this.focusedIndex = focusedIndex;\n }\n }\n if (prevFocusedIndex !== this.focusedIndex) {\n var _a = this.props.tabIndex, tabIndex_1 = _a === void 0 ? Toolbar.defaultProps.tabIndex : _a;\n this.buttons.forEach(function (button, index) {\n if (button) {\n button.tabIndex = (index === _this.focusedIndex && button.tabIndex === -1) ?\n tabIndex_1 : -1;\n }\n });\n }\n };\n /**\n * @hidden\n */\n Toolbar.prototype.componentWillUnmount = function () {\n window.removeEventListener('resize', this.onWindowResize);\n };\n /**\n * @hidden\n */\n Toolbar.prototype.render = function () {\n var _this = this;\n this.counter = 0;\n return (React.createElement(\"div\", { className: classNames('k-widget k-toolbar', this.props.className), style: this.props.style, role: \"toolbar\", dir: this.props.dir, ref: function (element) { return _this._element = element; }, onKeyDown: this.onKeyDown }, React.Children.map(this.props.children, this.mapToolbarChild)));\n };\n Toolbar.prototype.focusButton = function (prevIndex, index) {\n var toolbarButton = this.buttons[index];\n if (toolbarButton) {\n var newFocused = toolbarButton.element;\n var currentFocused = this.element &&\n this.element.querySelector('button:focus');\n var _a = this.props.tabIndex, tabIndex = _a === void 0 ? Toolbar.defaultProps.tabIndex : _a;\n this.focusedIndex = index;\n if (currentFocused !== newFocused) {\n toolbarButton.tabIndex = tabIndex;\n toolbarButton.focus();\n var prevButton = this.buttons[prevIndex];\n if (prevButton) {\n prevButton.tabIndex = -1;\n }\n }\n }\n };\n /**\n * @hidden\n */\n Toolbar.propTypes = {\n tabIndex: PropTypes.number,\n dir: PropTypes.string,\n style: PropTypes.object,\n className: PropTypes.string,\n onResize: PropTypes.func\n };\n /**\n * @hidden\n */\n Toolbar.defaultProps = {\n tabIndex: 0\n };\n return Toolbar;\n}(React.Component));\nexport default Toolbar;\n//# sourceMappingURL=Toolbar.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport ToolbarItem from './ToolbarItem';\n/**\n * Represents the KendoReact Toolbar Separator component.\n */\nvar ToolbarSeparator = /** @class */ (function (_super) {\n __extends(ToolbarSeparator, _super);\n function ToolbarSeparator() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @hidden\n */\n ToolbarSeparator.prototype.render = function () {\n return (React.createElement(ToolbarItem, { className: \"k-separator\" }));\n };\n return ToolbarSeparator;\n}(React.PureComponent));\nexport default ToolbarSeparator;\n//# sourceMappingURL=ToolbarSeparator.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport { registerForLocalization, provideLocalizationService } from '@progress/kendo-react-intl';\nimport { messages, date, time, dateTimePickerCancel as cancel, dateTimePickerSet as set } from '../messages';\nimport { Button, ButtonGroup } from '@progress/kendo-react-buttons';\nimport { Calendar } from '../calendar/components/Calendar';\nimport { TimePart } from '../timepicker/TimePart';\nimport { setTime, getToday, MIN_TIME, MAX_TIME } from '../utils';\nimport { isEqualDate } from '@progress/kendo-date-math';\nimport { Keys, classNames } from '@progress/kendo-react-common';\nimport { MIDNIGHT_DATE } from '../defaults';\nimport { getNow } from '../timepicker/utils';\n/**\n * @hidden\n */\nvar DateTimeSelector = /** @class */ (function (_super) {\n __extends(DateTimeSelector, _super);\n function DateTimeSelector(props) {\n var _this = _super.call(this, props) || this;\n _this.focus = function (args) {\n // Async to avoid stealing the focus from the DateInput on close\n Promise.resolve().then(function () {\n if (_this.state.tab === 'time' && _this._timePart) {\n _this._timePart.focus(args);\n }\n if (_this.state.tab === 'date' && _this._calendar && _this._calendar.element) {\n _this._calendar.element.focus(args);\n }\n });\n };\n _this.move = function (direction) {\n if (direction === 'right' && _this.state.tab === 'time') {\n return;\n }\n if (direction === 'left' && _this.state.tab === 'date') {\n return;\n }\n var nextPart = direction === 'left' ? 'date' : 'time';\n _this.shouldFocusPart = true;\n _this.setState({ tab: nextPart });\n };\n _this.handleReject = function (event) {\n _this.setState({ dateValue: _this.props.value, timeValue: _this.props.value || MIDNIGHT_DATE });\n var value = _this.mergeDate(_this.props.value, _this.props.value || MIDNIGHT_DATE);\n if (_this.props.onReject) {\n var args = {\n nativeEvent: event.nativeEvent,\n syntheticEvent: event,\n target: _this,\n value: value\n };\n _this.props.onReject.call(undefined, args);\n }\n };\n _this.handleAccept = function (event, timeOverride) {\n if (!_this.state.dateValue || !_this.state.timeValue || !_this.hasDateValue) {\n return;\n }\n var value = _this.mergeDate(_this.state.dateValue, timeOverride || _this.state.timeValue);\n _this.props.onChange.call(undefined, {\n syntheticEvent: event,\n nativeEvent: event.nativeEvent,\n value: value,\n target: _this\n });\n };\n _this.handleNowClick = function (event) {\n _this.setState({ timeValue: getNow() });\n _this.handleAccept(event, getNow());\n };\n _this.handleCalendarValueChange = function (event) {\n event.syntheticEvent.stopPropagation();\n _this.setState({ dateValue: event.value, tab: 'time' });\n _this.shouldFocusPart = true;\n };\n _this.handleTimeListContainerChange = function (candidate) {\n _this.setState({ timeValue: candidate });\n };\n _this.handleDateClick = function (event) {\n event.stopPropagation();\n _this.move('left');\n };\n _this.handleTimeClick = function (event) {\n event.stopPropagation();\n _this.move('right');\n };\n _this.handleKeyDown = function (event) {\n var keyCode = event.keyCode, altKey = event.altKey;\n switch (keyCode) {\n case Keys.enter:\n if (!_this.hasActiveButton() && _this.hasDateValue) {\n _this.handleAccept(event);\n }\n return;\n case Keys.left:\n if (!altKey) {\n return;\n }\n _this.move('left');\n return;\n case Keys.right:\n if (!altKey) {\n return;\n }\n _this.move('right');\n return;\n default:\n return;\n }\n };\n _this.handleTimePartMount = function (value) {\n _this.setState({ timeValue: value });\n };\n _this.state = {\n tab: 'date',\n dateValue: _this.props.value,\n timeValue: _this.props.value || MIDNIGHT_DATE\n };\n return _this;\n }\n Object.defineProperty(DateTimeSelector.prototype, \"calendar\", {\n get: function () {\n return this._calendar;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DateTimeSelector.prototype, \"timePart\", {\n get: function () {\n return this._timePart;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DateTimeSelector.prototype, \"hasDateValue\", {\n get: function () {\n return this.state.dateValue !== null;\n },\n enumerable: true,\n configurable: true\n });\n DateTimeSelector.prototype.componentDidUpdate = function () {\n if (this.shouldFocusPart) {\n this.focus({ preventScroll: true });\n }\n this.shouldFocusPart = false;\n };\n DateTimeSelector.prototype.render = function () {\n var _this = this;\n var _a = this.props, disabled = _a.disabled, cancelButton = _a.cancelButton, min = _a.min, max = _a.max, weekNumber = _a.weekNumber, focusedDate = _a.focusedDate, format = _a.format;\n var rootClassName = classNames({\n 'k-date-tab': this.state.tab === 'date',\n 'k-time-tab': this.state.tab === 'time',\n 'k-state-disabled': disabled\n }, 'k-datetime-wrap');\n var setButtonClassName = classNames({ 'k-state-disabled': !this.hasDateValue }, 'k-time-accept k-button k-primary');\n var localizationService = provideLocalizationService(this);\n var dateMessage = localizationService.toLanguageString(date, messages[date]);\n var timeMessage = localizationService.toLanguageString(time, messages[time]);\n var cancelMessage = localizationService.toLanguageString(cancel, messages[cancel]);\n var setMessage = localizationService.toLanguageString(set, messages[set]);\n return (React.createElement(\"div\", { onKeyDown: this.handleKeyDown, className: rootClassName, tabIndex: -1 },\n React.createElement(\"div\", { className: \"k-datetime-buttongroup\" },\n React.createElement(ButtonGroup, { width: \"100%\" },\n React.createElement(Button, { selected: this.state.tab === 'date', togglable: true, onClick: this.handleDateClick }, dateMessage),\n React.createElement(Button, { selected: this.state.tab === 'time', togglable: true, onClick: this.handleTimeClick }, timeMessage))),\n React.createElement(\"div\", { className: \"k-datetime-selector\" },\n React.createElement(\"div\", { className: \"k-datetime-calendar-wrap\" }, React.createElement(Calendar, { key: 0, disabled: disabled || this.state.tab !== 'date', ref: function (calendar) { _this._calendar = calendar; }, value: this.state.dateValue, min: min, max: max, weekNumber: weekNumber, focusedDate: focusedDate, onChange: this.handleCalendarValueChange, navigation: false })),\n React.createElement(\"div\", { className: \"k-datetime-time-wrap\" }, React.createElement(TimePart, { key: 1, onNowClick: this.handleNowClick, disabled: disabled || this.state.tab !== 'time', ref: function (timePart) { _this._timePart = timePart; }, min: this.minTime || MIN_TIME, max: this.maxTime || MAX_TIME, value: this.state.timeValue, format: format, onChange: this.handleTimeListContainerChange, onMount: this.handleTimePartMount }))),\n React.createElement(\"div\", { className: \"k-datetime-footer k-action-buttons\" },\n cancelButton && React.createElement(\"button\", __assign({ ref: function (btn) { _this._cancelButton = btn; }, className: \"k-button k-time-cancel\", onClick: this.handleReject, title: cancelMessage }, { 'aria-label': cancelMessage }), cancelMessage),\n React.createElement(\"button\", __assign({ ref: function (btn) { _this._acceptButton = btn; }, className: setButtonClassName, onClick: this.handleAccept, title: setMessage }, { 'aria-label': setMessage }), setMessage))));\n };\n Object.defineProperty(DateTimeSelector.prototype, \"minTime\", {\n get: function () {\n return this.props.minTime !== undefined\n ? this.props.minTime\n : this.normalizeRange(this.props.min, this.state.dateValue);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DateTimeSelector.prototype, \"maxTime\", {\n get: function () {\n return this.props.maxTime !== undefined\n ? this.props.maxTime\n : this.normalizeRange(this.props.max, this.state.dateValue);\n },\n enumerable: true,\n configurable: true\n });\n DateTimeSelector.prototype.normalizeRange = function (candidate, value) {\n return isEqualDate(candidate, value || getToday())\n ? candidate\n : null;\n };\n DateTimeSelector.prototype.hasActiveButton = function () {\n if (!this._acceptButton) {\n return false;\n }\n return document.activeElement === this._acceptButton\n || document.activeElement === this._cancelButton;\n };\n DateTimeSelector.prototype.mergeTime = function (current, candidate) {\n return current && candidate ? setTime(candidate, current) : candidate;\n };\n DateTimeSelector.prototype.mergeDate = function (candidate, value) {\n return candidate ? setTime(candidate || getToday(), value) : value;\n };\n return DateTimeSelector;\n}(React.Component));\nexport { DateTimeSelector };\nregisterForLocalization(DateTimeSelector);\n//# sourceMappingURL=DateTimeSelector.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { Popup } from '@progress/kendo-react-popup';\nimport { cloneDate } from '@progress/kendo-date-math';\nimport { classNames, guid, Keys } from '@progress/kendo-react-common';\nimport { DateInput } from '../dateinput/DateInput';\nimport { MIN_DATE, MAX_DATE, isInDateRange, MAX_TIME } from '../utils';\nimport { messages, toggleDateTimeSelector } from '../messages';\nimport { registerForLocalization, provideLocalizationService } from '@progress/kendo-react-intl';\nimport { DateTimeSelector } from './DateTimeSelector';\nimport { isInTimeRange } from '../timepicker/utils';\nimport { MIN_TIME } from '../defaults';\nvar DateTimePicker = /** @class */ (function (_super) {\n __extends(DateTimePicker, _super);\n function DateTimePicker(props) {\n var _this = _super.call(this, props) || this;\n _this._popupId = guid();\n _this._element = null;\n _this._wrapper = null;\n _this._dateInput = null;\n _this._dateTimeSelector = null;\n _this.shouldFocusDateInput = false;\n _this.handleReject = function () {\n _this.setShow(false);\n };\n _this.handleValueChange = function (event) {\n _this.setState({\n value: cloneDate(event.value || undefined),\n show: false\n });\n _this.valueDuringOnChange = event.value;\n _this.showDuringOnChange = false;\n _this.shouldFocusDateInput = true;\n var onChange = _this.props.onChange;\n if (onChange) {\n onChange.call(undefined, {\n syntheticEvent: event.syntheticEvent,\n nativeEvent: event.nativeEvent,\n value: _this.value,\n show: _this.show,\n target: _this\n });\n }\n _this.valueDuringOnChange = undefined;\n _this.showDuringOnChange = undefined;\n };\n _this.handleFocus = function (event) {\n clearTimeout(_this.nextTickId);\n if (_this._wrapper) {\n _this._wrapper.classList.add('k-state-focused');\n }\n var onFocus = _this.props.onFocus;\n if (onFocus) {\n onFocus.call(undefined, event);\n }\n };\n _this.handleBlur = function (event) {\n _this.nextTick(function () {\n if (_this._wrapper) {\n _this._wrapper.classList.remove('k-state-focused');\n }\n _this.setShow(false);\n });\n var onBlur = _this.props.onBlur;\n if (onBlur) {\n onBlur.call(undefined, event);\n }\n };\n _this.handleDateIconClick = function () {\n if (_this.props.disabled) {\n return;\n }\n _this.shouldFocusDateInput = true;\n _this.setShow(!_this.show);\n };\n _this.handleIconMouseDown = function (event) {\n event.preventDefault();\n };\n _this.handleKeyDown = function (event) {\n var altKey = event.altKey, keyCode = event.keyCode;\n if (keyCode === Keys.esc) {\n _this.setShow(false);\n return;\n }\n if (altKey && (keyCode === Keys.up || keyCode === Keys.down)) {\n event.preventDefault();\n event.stopPropagation();\n _this.shouldFocusDateInput = keyCode === Keys.up;\n _this.setShow(keyCode === Keys.down);\n }\n };\n _this.state = {\n value: _this.props.defaultValue || DateTimePicker.defaultProps.defaultValue,\n show: _this.props.defaultShow || DateTimePicker.defaultProps.defaultShow\n };\n return _this;\n }\n Object.defineProperty(DateTimePicker.prototype, \"element\", {\n /**\n * Gets the wrapping element of the DateTimePicker.\n */\n get: function () {\n return this._element;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DateTimePicker.prototype, \"dateInput\", {\n /**\n * Gets the DateInput component inside the DateTimePicker component.\n */\n get: function () {\n return this._dateInput;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DateTimePicker.prototype, \"value\", {\n /**\n * Gets the value of the DateTimePicker.\n */\n get: function () {\n var value = this.valueDuringOnChange !== undefined\n ? this.valueDuringOnChange\n : this.props.value !== undefined\n ? this.props.value\n : this.state.value;\n return (value !== null) ? cloneDate(value) : null;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DateTimePicker.prototype, \"show\", {\n /**\n * Gets the popup state of the DateTimePicker.\n */\n get: function () {\n return this.showDuringOnChange !== undefined\n ? this.showDuringOnChange\n : this.props.show !== undefined\n ? this.props.show\n : this.state.show;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DateTimePicker.prototype, \"name\", {\n /**\n * Gets the `name` property of the DateTimePicker.\n */\n get: function () {\n return this.props.name;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DateTimePicker.prototype, \"min\", {\n get: function () {\n return this.props.min !== undefined\n ? this.props.min\n : DateTimePicker.defaultProps.min;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DateTimePicker.prototype, \"max\", {\n get: function () {\n return this.props.max !== undefined\n ? this.props.max\n : DateTimePicker.defaultProps.max;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DateTimePicker.prototype, \"validity\", {\n /**\n * Represents the validity state into which the DateTimePicker is set.\n */\n get: function () {\n var inRange = isInDateRange(this.value, this.min, this.max)\n && isInTimeRange(this.value, this.props.minTime || MIN_TIME, this.props.maxTime || MAX_TIME);\n var customError = this.props.validationMessage !== undefined;\n var isValid = (!this.required || this.value !== null) && inRange;\n var valid = this.props.valid !== undefined ? this.props.valid : isValid;\n return {\n customError: customError,\n rangeOverflow: (this.value && this.max.getTime() < this.value.getTime()) || false,\n rangeUnderflow: (this.value && this.value.getTime() < this.min.getTime()) || false,\n valid: valid,\n valueMissing: this.value === null\n };\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DateTimePicker.prototype, \"validityStyles\", {\n /**\n * @hidden\n */\n get: function () {\n return this.props.validityStyles !== undefined\n ? this.props.validityStyles\n : DateTimePicker.defaultProps.validityStyles;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DateTimePicker.prototype, \"required\", {\n /**\n * @hidden\n */\n get: function () {\n return this.props.required !== undefined\n ? this.props.required\n : DateTimePicker.defaultProps.required;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @hidden\n */\n DateTimePicker.prototype.componentDidMount = function () {\n if (this.show) {\n // If defaultShow is true during the initial render, the popup is not aligned.\n this.forceUpdate();\n }\n if (this._dateInput && this._dateInput.element) {\n this._dateInput.element.setAttribute('aria-haspopup', 'true');\n this._dateInput.element.setAttribute('aria-expanded', \"\" + this.show);\n }\n };\n /**\n * @hidden\n */\n DateTimePicker.prototype.componentDidUpdate = function (prevProps) {\n if (this._dateInput && this._dateInput.element) {\n this._dateInput.element.setAttribute('aria-expanded', \"\" + this.show);\n }\n if (this._dateTimeSelector && this.show && !prevProps.show) {\n this._dateTimeSelector.focus({ preventScroll: true });\n }\n if (this._dateInput\n && this._dateInput.element\n && !this.show\n && this.shouldFocusDateInput) {\n this._dateInput.element.focus({ preventScroll: true });\n }\n this.shouldFocusDateInput = false;\n };\n /**\n * @hidden\n */\n DateTimePicker.prototype.componentWillUnmount = function () {\n clearTimeout(this.nextTickId);\n };\n /**\n * @hidden\n */\n DateTimePicker.prototype.focus = function () {\n if (this._dateInput) {\n this._dateInput.focus();\n }\n };\n /**\n * @hidden\n */\n DateTimePicker.prototype.render = function () {\n var _this = this;\n var _a = this.props, disabled = _a.disabled, tabIndex = _a.tabIndex, title = _a.title, id = _a.id, format = _a.format, formatPlaceholder = _a.formatPlaceholder, min = _a.min, max = _a.max, weekNumber = _a.weekNumber, focusedDate = _a.focusedDate, className = _a.className, width = _a.width, name = _a.name, validationMessage = _a.validationMessage, required = _a.required, validityStyles = _a.validityStyles, cancelButton = _a.cancelButton, minTime = _a.minTime, maxTime = _a.maxTime;\n var isValid = !this.validityStyles || this.validity.valid;\n var rootClassName = classNames('k-widget k-datetimepicker', {\n 'k-state-invalid': !isValid\n }, className);\n var wrapperClassNames = classNames('k-picker-wrap', {\n 'k-state-default': !disabled,\n 'k-state-disabled': disabled\n });\n return (React.createElement(\"div\", { ref: function (div) { _this._element = div; }, className: rootClassName, onKeyDown: this.handleKeyDown, style: { width: width }, onFocus: this.handleFocus, onBlur: this.handleBlur },\n React.createElement(\"div\", { ref: function (span) { _this._wrapper = span; }, className: wrapperClassNames },\n React.createElement(DateInput, { ref: function (dateInput) { _this._dateInput = dateInput; }, id: id, format: format, formatPlaceholder: formatPlaceholder, disabled: disabled, tabIndex: !this.show ? tabIndex : -1, title: title, valid: this.validity.valid, validityStyles: validityStyles, validationMessage: validationMessage, required: required, min: min, max: max, minTime: minTime, maxTime: maxTime, value: this.value, onChange: this.handleValueChange, name: name }),\n React.createElement(\"span\", __assign({ role: \"button\", onMouseDown: this.handleIconMouseDown, onClick: this.handleDateIconClick, title: provideLocalizationService(this)\n .toLanguageString(toggleDateTimeSelector, messages[toggleDateTimeSelector]), className: \"k-select\" }, {\n 'aria-controls': this._popupId,\n 'aria-label': provideLocalizationService(this)\n .toLanguageString(toggleDateTimeSelector, messages[toggleDateTimeSelector])\n }),\n React.createElement(\"span\", { className: \"k-link k-link-date\" },\n React.createElement(\"span\", { className: \"k-icon k-i-calendar\" })))),\n React.createElement(Popup, { show: this.show, animate: this._wrapper !== null, anchor: this._wrapper || undefined, className: \"k-datetime-container k-group k-reset\", id: this._popupId, anchorAlign: {\n horizontal: 'left',\n vertical: 'bottom'\n }, popupAlign: {\n horizontal: 'left',\n vertical: 'top'\n } },\n React.createElement(DateTimeSelector, { ref: function (dateTimeSelector) { _this._dateTimeSelector = dateTimeSelector; }, cancelButton: cancelButton, value: this.value, onChange: this.handleValueChange, onReject: this.handleReject, disabled: disabled, weekNumber: weekNumber, min: this.min, max: this.max, minTime: minTime, maxTime: maxTime, focusedDate: focusedDate, format: format }))));\n };\n DateTimePicker.prototype.setShow = function (show) {\n if (this.show === show) {\n return;\n }\n this.setState({ show: show });\n };\n DateTimePicker.prototype.nextTick = function (f) {\n // XXX: use setTimeout due to async focus/blur events in IE, and missing relatedTarget prop.\n // XXX: https://github.com/facebook/react/issues/3751\n // Handles multiple focus events happening at the same time.\n clearTimeout(this.nextTickId);\n this.nextTickId = setTimeout(function () { return f(); });\n };\n /**\n * @hidden\n */\n DateTimePicker.propTypes = {\n className: PropTypes.string,\n defaultShow: PropTypes.bool,\n defaultValue: PropTypes.instanceOf(Date),\n disabled: PropTypes.bool,\n focusedDate: PropTypes.instanceOf(Date),\n format: PropTypes.string,\n formatPlaceholder: PropTypes.oneOfType([\n PropTypes.oneOf(['wide', 'narrow', 'short', 'formatPattern']),\n PropTypes.shape({\n year: PropTypes.string,\n month: PropTypes.string,\n day: PropTypes.string,\n hour: PropTypes.string,\n minute: PropTypes.string,\n second: PropTypes.string\n })\n ]),\n id: PropTypes.string,\n min: PropTypes.instanceOf(Date),\n max: PropTypes.instanceOf(Date),\n name: PropTypes.string,\n popupSettings: PropTypes.shape({\n animate: PropTypes.bool,\n appendTo: PropTypes.any,\n popupClass: PropTypes.string\n }),\n show: PropTypes.bool,\n tabIndex: PropTypes.number,\n title: PropTypes.string,\n value: PropTypes.instanceOf(Date),\n weekNumber: PropTypes.bool,\n width: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n validationMessage: PropTypes.string,\n required: PropTypes.bool,\n validate: PropTypes.bool,\n valid: PropTypes.bool,\n cancelButton: PropTypes.bool\n };\n /**\n * @hidden\n */\n DateTimePicker.defaultProps = {\n defaultShow: false,\n defaultValue: null,\n disabled: false,\n format: 'g',\n max: MAX_DATE,\n min: MIN_DATE,\n popupSettings: {},\n tabIndex: 0,\n title: '',\n weekNumber: false,\n required: false,\n validityStyles: true,\n cancelButton: true\n };\n return DateTimePicker;\n}(React.Component));\nexport { DateTimePicker };\nregisterForLocalization(DateTimePicker);\n//# sourceMappingURL=DateTimePicker.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport { getNestedValue } from './../utils';\nimport { NumericTextBox } from '@progress/kendo-react-inputs';\nimport { DatePicker } from '@progress/kendo-react-dateinputs';\nimport { guid } from '@progress/kendo-react-common';\n/**\n * @hidden\n */\nvar GridEditCell = /** @class */ (function (_super) {\n __extends(GridEditCell, _super);\n function GridEditCell() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this._inputId = guid();\n /**\n * @hidden\n */\n _this.handleOnChange = function (syntheticEvent) {\n if (_this.props.onChange) {\n var value = syntheticEvent.target.type === 'checkbox' ?\n syntheticEvent.target.checked :\n syntheticEvent.target.value;\n _this.props.onChange({\n dataItem: _this.props.dataItem,\n field: _this.props.field,\n syntheticEvent: syntheticEvent,\n value: value\n });\n }\n };\n /**\n * @hidden\n */\n _this.inputChange = function (e) {\n if (_this.props.onChange) {\n _this.props.onChange({\n dataItem: _this.props.dataItem,\n field: _this.props.field,\n syntheticEvent: e.syntheticEvent,\n value: e.value\n });\n }\n };\n return _this;\n }\n /**\n * @hidden\n */\n GridEditCell.prototype.render = function () {\n var data = getNestedValue(this.props.field, this.props.dataItem);\n var defaultRendering = null;\n switch (this.props.editor) {\n case 'numeric':\n defaultRendering = (React.createElement(\"td\", { colSpan: this.props.colSpan, style: this.props.style, className: this.props.className },\n React.createElement(NumericTextBox, { width: \"100%\", value: (data === undefined) ? null : data, onChange: this.inputChange })));\n break;\n case 'date':\n defaultRendering = (React.createElement(\"td\", { colSpan: this.props.colSpan, style: this.props.style, className: this.props.className },\n React.createElement(DatePicker, { width: \"100%\", value: data, onChange: this.inputChange })));\n break;\n case 'boolean':\n defaultRendering = (React.createElement(\"td\", { colSpan: this.props.colSpan, style: this.props.style, className: this.props.className },\n React.createElement(\"input\", { checked: data || false, id: this._inputId, type: \"checkbox\", className: \"k-checkbox\", onChange: this.handleOnChange }),\n React.createElement(\"label\", { className: \"k-checkbox-label\", htmlFor: this._inputId })));\n break;\n default:\n defaultRendering = (React.createElement(\"td\", { colSpan: this.props.colSpan, style: this.props.style, className: this.props.className },\n React.createElement(\"input\", { style: { width: '100%' }, className: \"k-textbox\", value: data || '', onChange: this.handleOnChange })));\n }\n return this.props.render ?\n this.props.render.call(undefined, defaultRendering, this.props) :\n defaultRendering;\n };\n return GridEditCell;\n}(React.Component));\nexport { GridEditCell };\n//# sourceMappingURL=GridEditCell.js.map","var _a;\n/**\n * @hidden\n */\nexport var noRecords = 'grid.noRecords';\n/**\n * @hidden\n */\nexport var pagerInfo = 'grid.pagerInfo';\n/**\n * @hidden\n */\nexport var pagerFirstPage = 'grid.pagerFirstPage';\n/**\n * @hidden\n */\nexport var pagerPreviousPage = 'grid.pagerPreviousPage';\n/**\n * @hidden\n */\nexport var pagerNextPage = 'grid.pagerNextPage';\n/**\n * @hidden\n */\nexport var pagerLastPage = 'grid.pagerLastPage';\n/**\n * @hidden\n */\nexport var pagerItemPerPage = 'grid.pagerItemsPerPage';\n/**\n * @hidden\n */\nexport var pagerPage = 'grid.pagerPage';\n/**\n * @hidden\n */\nexport var pagerOf = 'grid.pagerOf';\n/**\n * @hidden\n */\nexport var groupPanelEmpty = 'grid.groupPanelEmpty';\n/**\n * @hidden\n */\nexport var filterClearButton = 'grid.filterClearButton';\n/**\n * @hidden\n */\nexport var filterSubmitButton = 'grid.filterSubmitButton';\n/**\n * @hidden\n */\nexport var filterTitle = 'grid.filterTitle';\n/**\n * @hidden\n */\nexport var sortAscending = 'grid.sortAscending';\n/**\n * @hidden\n */\nexport var sortDescending = 'grid.sortDescending';\n/**\n * @hidden\n */\nexport var messages = (_a = {},\n _a[noRecords] = 'No records available',\n _a[groupPanelEmpty] = 'Drag a column header and drop it here to group by that column',\n _a[filterClearButton] = 'Clear',\n _a[filterSubmitButton] = 'Filter',\n _a[filterTitle] = 'Filter',\n _a[sortAscending] = 'Sort Ascending',\n _a[sortDescending] = 'Sort Descending',\n _a[pagerItemPerPage] = 'items per page',\n _a[pagerInfo] = '{0} - {1} of {2} items',\n _a[pagerFirstPage] = 'Go to the first page',\n _a[pagerPreviousPage] = 'Go to the previous page',\n _a[pagerNextPage] = 'Go to the next page',\n _a[pagerLastPage] = 'Go to the last page',\n _a[pagerPage] = 'Page',\n _a[pagerOf] = 'of',\n _a['grid.filterEqOperator'] = 'Is equal to',\n _a['grid.filterNotEqOperator'] = 'Is not equal to',\n _a['grid.filterIsNullOperator'] = 'Is null',\n _a['grid.filterIsNotNullOperator'] = 'Is not null',\n _a['grid.filterIsEmptyOperator'] = 'Is empty',\n _a['grid.filterIsNotEmptyOperator'] = 'Is not empty',\n _a['grid.filterStartsWithOperator'] = 'Starts with',\n _a['grid.filterContainsOperator'] = 'Contains',\n _a['grid.filterNotContainsOperator'] = 'Does not contain',\n _a['grid.filterEndsWithOperator'] = 'Ends with',\n _a['grid.filterGteOperator'] = 'Is greater than or equal to',\n _a['grid.filterGtOperator'] = 'Is greater than',\n _a['grid.filterLteOperator'] = 'Is less than or equal to',\n _a['grid.filterLtOperator'] = 'Is less than',\n _a['grid.filterIsTrue'] = 'Is true',\n _a['grid.filterIsFalse'] = 'Is false',\n _a['grid.filterBooleanAll'] = '(All)',\n _a['grid.filterAfterOrEqualOperator'] = 'Is after or equal to',\n _a['grid.filterAfterOperator'] = 'Is after',\n _a['grid.filterBeforeOperator'] = 'Is before',\n _a['grid.filterBeforeOrEqualOperator'] = 'Is before or equal to',\n _a['grid.filterAndLogic'] = 'And',\n _a['grid.filterOrLogic'] = 'Or',\n _a);\n//# sourceMappingURL=index.js.map","var getDocument = function () { return typeof document !== 'undefined' ? document : {}; };\n/**\n * @hidden\n */\nvar BrowserSupportService = /** @class */ (function () {\n function BrowserSupportService() {\n }\n Object.defineProperty(BrowserSupportService.prototype, \"scrollbarWidth\", {\n get: function () {\n var document = getDocument();\n if (!this.scrollbar && document && document.createElement) {\n var div = document.createElement('div');\n div.style.cssText = 'overflow:scroll;overflow-x:hidden;zoom:1;clear:both;display:block';\n div.innerHTML = ' ';\n document.body.appendChild(div);\n this.scrollbar = div.offsetWidth - div.scrollWidth;\n document.body.removeChild(div);\n }\n return this.scrollbar;\n },\n enumerable: true,\n configurable: true\n });\n return BrowserSupportService;\n}());\nexport { BrowserSupportService };\n//# sourceMappingURL=browser-support.service.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport { BrowserSupportService } from '../utils/browser-support.service';\nimport { isRtl } from '../utils';\n/**\n * @hidden\n */\nvar Header = /** @class */ (function (_super) {\n __extends(Header, _super);\n function Header() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.divStyle = {};\n _this.element = null;\n _this.headerWrap = null;\n _this.table = null;\n return _this;\n }\n Header.prototype.componentDidMount = function () {\n var rtl = isRtl(this.element);\n if (this.props.columnResize) {\n this.props.columnResize.setIsRtl(rtl);\n }\n var scrollbarWidth = (new BrowserSupportService()).scrollbarWidth;\n var padding = Math.max(0, scrollbarWidth - 1) + 'px';\n var right = rtl ? 0 : padding;\n var left = rtl ? padding : 0;\n this.divStyle = { padding: \"0 \" + right + \" 0 \" + left };\n this.forceUpdate();\n };\n /**\n *\n * @param scrollLeft - Scrolls to the left (in pixels).\n */\n Header.prototype.setScrollLeft = function (scrollLeft) {\n if (this.headerWrap) {\n this.headerWrap.scrollLeft = scrollLeft;\n }\n };\n /**\n *\n * @param width - Scrolls the width (in pixels).\n */\n Header.prototype.setWidth = function (width) {\n if (this.table) {\n this.table.style.width = width + 'px';\n }\n };\n Header.prototype.render = function () {\n var _this = this;\n if (!this.props.staticHeaders) {\n return (React.createElement(\"thead\", { className: \"k-grid-header\" },\n this.props.headerRow,\n this.props.filterRow));\n }\n return (React.createElement(\"div\", { ref: function (div) { _this.element = div; }, className: \"k-grid-header\", style: this.divStyle },\n React.createElement(\"div\", { ref: function (div) { _this.headerWrap = div; }, className: \"k-grid-header-wrap\" },\n React.createElement(\"table\", { ref: function (table) { _this.table = table; } },\n React.createElement(\"colgroup\", { ref: function (e) { _this.props.columnResize.colGroupHeader = e; } }, this.props.cols),\n React.createElement(\"thead\", null,\n this.props.headerRow,\n this.props.filterRow)))));\n };\n return Header;\n}(React.Component));\nexport { Header };\n//# sourceMappingURL=Header.js.map","/**\n * @hidden\n */\nexport var normalize = function () {\n var settings = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n settings[_i] = arguments[_i];\n }\n return Object.assign.apply(Object, [{ allowUnsort: true, mode: 'single' }].concat(settings));\n};\n//# sourceMappingURL=GridSortSettings.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport { Draggable } from '@progress/kendo-react-common';\n/**\n * @hidden\n */\nvar ColumnResizer = /** @class */ (function (_super) {\n __extends(ColumnResizer, _super);\n function ColumnResizer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /**\n * @hidden\n */\n _this.onDrag = function (data) {\n var element = _this.draggable && _this.draggable.element;\n if (element) {\n _this.props.resize(data.event, element, false);\n }\n };\n /**\n * @hidden\n */\n _this.onRelease = function (data) {\n var element = _this.draggable && _this.draggable.element;\n if (element) {\n _this.props.resize(data.event, element, true);\n }\n };\n return _this;\n }\n ColumnResizer.prototype.render = function () {\n var _this = this;\n return (React.createElement(Draggable, { onDrag: this.onDrag, onRelease: this.onRelease, ref: function (component) { _this.draggable = component; } },\n React.createElement(\"span\", { className: \"k-column-resizer\", style: { touchAction: 'none' }, draggable: false })));\n };\n return ColumnResizer;\n}(React.PureComponent));\nexport { ColumnResizer };\n//# sourceMappingURL=ColumnResizer.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport { Draggable } from '@progress/kendo-react-common';\n/**\n * @hidden\n */\nvar ColumnDraggable = /** @class */ (function (_super) {\n __extends(ColumnDraggable, _super);\n function ColumnDraggable() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /**\n * @hidden\n */\n _this.onPress = function (data) {\n var element = _this.draggable && _this.draggable.element;\n if (element && _this.props.pressHandler) {\n _this.props.pressHandler(data.event, element);\n }\n };\n /**\n * @hidden\n */\n _this.onDrag = function (data) {\n var element = _this.draggable && _this.draggable.element;\n if (element && _this.props.dragHandler) {\n _this.props.dragHandler(data.event, element);\n }\n };\n /**\n * @hidden\n */\n _this.onRelease = function (data) {\n var element = _this.draggable && _this.draggable.element;\n if (element && _this.props.releaseHandler) {\n _this.props.releaseHandler(data.event);\n }\n };\n return _this;\n }\n ColumnDraggable.prototype.render = function () {\n var _this = this;\n return (React.createElement(Draggable, { onPress: this.onPress, onDrag: this.onDrag, onRelease: this.onRelease, ref: function (component) { _this.draggable = component; } },\n React.createElement(\"tr\", { style: { touchAction: 'none' } }, this.props.children)));\n };\n return ColumnDraggable;\n}(React.PureComponent));\nexport { ColumnDraggable };\n//# sourceMappingURL=ColumnDraggable.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\n/**\n * @example\n * ```jsx\n * class App extends React.PureComponent {\n * state = {\n * details: false,\n * data: [\n * { foo: 'A1', bar: 'B1', b1: 1, b2:2 },\n * { foo: 'A2', bar: 'B2', b1: 3, b2:4 },\n * { foo: 'A3', bar: 'B2', b1: 5, b2:6 }\n * ]\n * };\n *\n * CustomHeaderCell = (props) =>\n * \n * {props.title || props.field + ' '}\n * \n * \n *\n * render() {\n * return (\n * \n * \n * \n * {this.state.barDetails && [\n * ,\n * \n * ]}\n * \n * \n * );\n * }\n * }\n *\n * ReactDOM.render(, document.querySelector('my-app'));\n * ```\n */\nvar GridHeaderCell = /** @class */ (function (_super) {\n __extends(GridHeaderCell, _super);\n function GridHeaderCell() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @hidden\n */\n GridHeaderCell.prototype.render = function () {\n var clickProps = this.props.onClick ? {\n href: '#',\n onClick: this.props.onClick\n } : {};\n var defaultRendering = (React.createElement(\"a\", __assign({ className: \"k-link\" }, clickProps),\n this.props.title || this.props.field || '\\u00A0',\n this.props.children));\n if (this.props.render) {\n return this.props.render.call(undefined, defaultRendering, this.props);\n }\n return defaultRendering;\n };\n return GridHeaderCell;\n}(React.Component));\nexport { GridHeaderCell };\n//# sourceMappingURL=GridHeaderCell.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\n t[p[i]] = s[p[i]];\n return t;\n};\nimport * as React from 'react';\nimport { Popup } from '@progress/kendo-react-popup';\n/**\n * @hidden\n */\nvar ColumnMenu = /** @class */ (function (_super) {\n __extends(ColumnMenu, _super);\n function ColumnMenu() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.state = {\n show: false\n };\n _this.blurTimeout = undefined;\n _this.blur = function () {\n clearTimeout(_this.blurTimeout);\n _this.blurTimeout = setTimeout(function () { _this.closeMenu(); });\n };\n _this.focus = function () {\n clearTimeout(_this.blurTimeout);\n };\n _this.anchorClick = function () {\n _this.setState({ show: !_this.state.show }, function () { return _this.state.show && _this._content && _this._content.focus(); });\n };\n _this.closeMenu = function () {\n _this.setState({ show: false });\n };\n return _this;\n }\n ColumnMenu.prototype.render = function () {\n var _this = this;\n var _a = this.props, ChildComponent = _a.render, others = __rest(_a, [\"render\"]);\n return (React.createElement(\"div\", { style: { display: 'inline' } },\n React.createElement(\"div\", { style: { display: 'inline', position: 'absolute', cursor: 'pointer', right: 5 }, ref: function (e) { return _this._anchor = e; }, onClick: this.anchorClick },\n React.createElement(\"span\", { className: 'k-icon k-i-more-vertical' })),\n React.createElement(Popup, { anchor: this._anchor, show: this.state.show },\n React.createElement(\"div\", { ref: function (e) { return _this._content = e; }, className: 'k-grid-columnmenu-popup', tabIndex: 0, onBlur: this.blur, onFocus: this.focus, style: { outline: 'none' } },\n React.createElement(ChildComponent, __assign({}, others, { onCloseMenu: this.closeMenu }))))));\n };\n return ColumnMenu;\n}(React.Component));\nexport { ColumnMenu };\n//# sourceMappingURL=ColumnMenu.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport { normalize } from '../interfaces/GridSortSettings';\nimport { ColumnResizer } from '../drag/ColumnResizer';\nimport { ColumnDraggable } from '../drag/ColumnDraggable';\nimport { GridHeaderCell } from './GridHeaderCell';\nimport { ColumnMenu } from '../columnMenu/ColumnMenu';\n/**\n * @hidden\n */\nvar sortSeqMap = {\n true: { 'asc': 'desc', 'desc': '', '': 'asc' },\n false: { 'asc': 'desc', 'desc': 'asc', '': 'asc' }\n};\n/**\n * @hidden\n */\nvar ariaSortMap = {\n 'none': 'none',\n 'asc': 'ascending',\n 'desc': 'descending'\n};\n/**\n * @hidden\n */\nvar HeaderRow = /** @class */ (function (_super) {\n __extends(HeaderRow, _super);\n function HeaderRow(props) {\n var _this = _super.call(this, props) || this;\n _this.cells = function (rowIndexes) { return rowIndexes.map(function (columnIndex, index) {\n var column = _this.props.columns[columnIndex];\n var sortable = _this.props.sortable && column.sortable;\n var sortIndex = _this.props.sort ? _this.props.sort.findIndex(function (s) { return s.field === column.field; }) : -1;\n var sortDir = sortIndex >= 0 ? ((_this.props.sort)[sortIndex].dir || 'none') : 'none';\n var headerCellProps = {\n field: column.field,\n onClick: sortable && (function (e) { return _this.cellClick(e, column); }) || undefined,\n selectionChange: _this.props.selectionChange,\n title: column.title,\n selectionValue: column.headerSelectionValue,\n render: _this.props.cellRender,\n children: _this.sortIcon(sortIndex),\n key: 1\n };\n var className = (column.kFirst ? 'k-first ' : '')\n + _this.cellClass(column.field, column.headerClassName, column.locked);\n var columnMenu = column.columnMenu || _this.props.columnMenu;\n var style = (column.locked !== undefined) ? {\n left: column.left,\n right: column.right,\n borderRightWidth: column.rightBorder ? '1px' : ''\n } : {};\n return (React.createElement(\"th\", { \"aria-sort\": ariaSortMap[sortDir], key: index, colSpan: column.colSpan, rowSpan: column.rowSpan, className: className, style: style }, [\n column.children.length === 0 && columnMenu &&\n React.createElement(ColumnMenu, { key: 0, column: {\n field: column.field,\n filter: column.filter\n }, sortable: sortable && _this.props.sortable, sort: _this.props.sort, onSortChange: _this.props.sortChange, filter: _this.props.filter, filterable: _this.props.filterable && column.filterable, filterOperators: _this.props.filterOperators, onFilterChange: _this.props.filterChange, render: columnMenu }),\n column.headerCell &&\n React.createElement(column.headerCell, __assign({}, headerCellProps)) ||\n React.createElement(GridHeaderCell, __assign({}, headerCellProps)),\n _this.props.columnResize && _this.props.columnResize.resizable && column.resizable &&\n React.createElement(ColumnResizer, { key: 2, resize: function (e, element, end) {\n return _this.props.columnResize &&\n _this.props.columnResize.dragHandler(e, column, element, end);\n } })\n ]));\n }); };\n _this.cellClick = _this.cellClick.bind(_this);\n return _this;\n }\n HeaderRow.prototype.cellClick = function (e, column) {\n e.preventDefault();\n if (!this.props.sortChange) {\n return;\n }\n var _a = normalize(this.props.sortable || false, column.sortable || false), allowUnsort = _a.allowUnsort, mode = _a.mode;\n var oldDescriptor = (this.props.sort || []).filter(function (d) { return d.field === column.field; })[0];\n var dir = sortSeqMap[allowUnsort][oldDescriptor && oldDescriptor.dir || ''];\n var newDescriptor = (mode === 'single') ?\n [] : (this.props.sort || []).filter(function (d) { return d.field !== column.field; });\n if (dir !== '' && column.field) {\n newDescriptor.push({ field: column.field, dir: dir });\n }\n this.props.sortChange(newDescriptor, e);\n };\n HeaderRow.prototype.cellClass = function (field, headerClassName, locked) {\n var customClass = headerClassName ? ' ' + headerClassName : '';\n var result = \"k-header \" + (locked ? 'k-grid-header-sticky' : '') + customClass;\n if (this.props.sort &&\n this.props.sort.filter(function (descriptor) { return descriptor.field === field; }).length > 0) {\n result += ' k-sorted';\n }\n return result;\n };\n HeaderRow.prototype.sortIcon = function (sortIndex) {\n if (!this.props.sort) {\n return null;\n }\n return sortIndex >= 0 && [\n React.createElement(\"span\", { key: 1, className: 'k-icon k-i-sort-' + this.props.sort[sortIndex].dir + '-sm' }),\n this.props.sort.length > 1 && React.createElement(\"span\", { key: 2, className: \"k-sort-order\" }, sortIndex + 1)\n ];\n };\n HeaderRow.prototype.render = function () {\n var _this = this;\n return this.props.columnsMap.map(function (rowIndexes, i) {\n return _this.props.pressHandler && (React.createElement(ColumnDraggable, { key: i, pressHandler: _this.props.pressHandler, dragHandler: _this.props.dragHandler, releaseHandler: _this.props.releaseHandler }, _this.cells(rowIndexes))) || React.createElement(\"tr\", null, _this.cells(rowIndexes));\n });\n };\n return HeaderRow;\n}(React.Component));\nexport { HeaderRow };\n//# sourceMappingURL=HeaderRow.js.map","import { messages } from './messages';\n/**\n * @hidden\n */\nexport var filterLogicList = [\n { text: 'grid.filterAndLogic', operator: 'and' },\n { text: 'grid.filterOrLogic', operator: 'or' }\n];\n/**\n * @hidden\n */\nexport var operators = {\n 'text': [\n { text: 'grid.filterContainsOperator', operator: 'contains' },\n { text: 'grid.filterNotContainsOperator', operator: 'doesnotcontain' },\n { text: 'grid.filterEqOperator', operator: 'eq' },\n { text: 'grid.filterNotEqOperator', operator: 'neq' },\n { text: 'grid.filterStartsWithOperator', operator: 'startswith' },\n { text: 'grid.filterEndsWithOperator', operator: 'endswith' },\n { text: 'grid.filterIsNullOperator', operator: 'isnull' },\n { text: 'grid.filterIsNotNullOperator', operator: 'isnotnull' },\n { text: 'grid.filterIsEmptyOperator', operator: 'isempty' },\n { text: 'grid.filterIsNotEmptyOperator', operator: 'isnotempty' }\n ],\n 'numeric': [\n { text: 'grid.filterEqOperator', operator: 'eq' },\n { text: 'grid.filterNotEqOperator', operator: 'neq' },\n { text: 'grid.filterGteOperator', operator: 'gte' },\n { text: 'grid.filterGtOperator', operator: 'gt' },\n { text: 'grid.filterLteOperator', operator: 'lte' },\n { text: 'grid.filterLtOperator', operator: 'lt' },\n { text: 'grid.filterIsNullOperator', operator: 'isnull' },\n { text: 'grid.filterIsNotNullOperator', operator: 'isnotnull' }\n ],\n 'date': [\n { text: 'grid.filterEqOperator', operator: 'eq' },\n { text: 'grid.filterNotEqOperator', operator: 'neq' },\n { text: 'grid.filterAfterOrEqualOperator', operator: 'gte' },\n { text: 'grid.filterAfterOperator', operator: 'gt' },\n { text: 'grid.filterBeforeOperator', operator: 'lt' },\n { text: 'grid.filterBeforeOrEqualOperator', operator: 'lte' },\n { text: 'grid.filterIsNullOperator', operator: 'isnull' },\n { text: 'grid.filterIsNotNullOperator', operator: 'isnotnull' }\n ],\n 'boolean': [\n { text: 'grid.filterEqOperator', operator: 'eq' }\n ]\n};\n/**\n * @hidden\n */\nexport var IsUnaryFilter = function (operator) {\n return operator === 'isnull' || operator === 'isnotnull' || operator === 'isempty' || operator === 'isnotempty';\n};\n/**\n * @hidden\n */\nexport var operatorMap = function (iterable, service) { return iterable.map(function (operator) { return ({\n text: service.toLanguageString(operator.text, messages[operator.text]),\n operator: operator.operator\n}); }); };\n/**\n * @hidden\n */\nexport var defaultBooleanOperator = 'eq';\n/**\n * @hidden\n */\nexport var booleanFilterValues = [\n { text: 'grid.filterBooleanAll', operator: '' },\n { text: 'grid.filterIsTrue', operator: true },\n { text: 'grid.filterIsFalse', operator: false }\n];\n/**\n * @hidden\n */\nexport var defaultHideSecondFilter = {\n text: false,\n numeric: false,\n date: false,\n boolean: true\n};\n/**\n * @hidden\n */\nexport var cellInputChange = function (value, e, props) {\n var defaultOperator = getDefaultOperator(props.operators);\n var operator = props.operator;\n switch (props.filterType) {\n case 'numeric':\n if (!operator || IsUnaryFilter(operator)) {\n // change the operator to default\n operator = defaultOperator;\n }\n if (value === null && operator === defaultOperator) {\n // clear only the default operator\n operator = '';\n }\n break;\n case 'date':\n if (!operator || IsUnaryFilter(operator)) {\n operator = defaultOperator;\n }\n if (value === null && operator === defaultOperator) {\n operator = '';\n }\n break;\n case 'text':\n if (!operator || IsUnaryFilter(operator)) {\n operator = defaultOperator;\n }\n if (!value && operator === defaultOperator) {\n operator = '';\n }\n break;\n default: return;\n }\n props.onChange({ value: value, operator: operator, syntheticEvent: e });\n};\n/**\n * @hidden\n */\nexport var getDefaultOperator = function (filterOperators, filterType) {\n if (filterType) {\n return filterOperators[filterType][0].operator;\n }\n else {\n return filterOperators[0].operator;\n }\n};\n/**\n * @hidden\n */\nexport var getFilterType = function (filterType) {\n return filterType || 'text';\n};\n/**\n * @hidden\n */\nexport var cellBoolDropdownChange = function (event, onChange) {\n var item = event.target.value;\n onChange({\n value: item.operator,\n operator: item.operator === '' ? '' : defaultBooleanOperator,\n syntheticEvent: event.syntheticEvent\n });\n};\n/**\n * @hidden\n */\nexport var cellOperatorChange = function (event, currentValue, onChange) {\n var value = currentValue;\n var item = event.target.value;\n if (!event.target.state.opened) {\n return;\n }\n if (IsUnaryFilter(item.operator)) {\n // clear the value to avoid confusion on what is filtered\n value = null;\n }\n onChange({ value: value, operator: item.operator, syntheticEvent: event.syntheticEvent });\n};\n//# sourceMappingURL=filterCommon.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport { DropDownList } from '@progress/kendo-react-dropdowns';\nimport { NumericTextBox } from '@progress/kendo-react-inputs';\nimport { DatePicker } from '@progress/kendo-react-dateinputs';\nimport { messages, filterClearButton } from '../messages';\nimport { registerForLocalization, provideLocalizationService } from '@progress/kendo-react-intl';\nimport { cellBoolDropdownChange, cellInputChange, cellOperatorChange } from '../filterCommon';\nvar GridFilterCell = /** @class */ (function (_super) {\n __extends(GridFilterCell, _super);\n function GridFilterCell(props) {\n var _this = _super.call(this, props) || this;\n _this.renderOperatorEditor = function () {\n if (_this.props.filterType === 'boolean') {\n return;\n }\n var value = _this.props.operators.find(function (item) { return item.operator === _this.props.operator; }) || null;\n return (React.createElement(DropDownList, { value: value, onChange: _this.operatorChange, className: \"k-dropdown-operator\", iconClassName: \"k-i-filter k-icon\", data: _this.props.operators, textField: \"text\", popupSettings: {\n width: ''\n } }));\n };\n _this.inputChange = _this.inputChange.bind(_this);\n _this.clear = _this.clear.bind(_this);\n _this.operatorChange = _this.operatorChange.bind(_this);\n _this.boolDropdownChange = _this.boolDropdownChange.bind(_this);\n return _this;\n }\n /**\n * @hidden\n */\n GridFilterCell.prototype.render = function () {\n var localizationService = provideLocalizationService(this);\n var defaultRendering = (React.createElement(\"div\", { className: \"k-filtercell\" },\n React.createElement(\"div\", { className: \"k-filtercell-wrapper\" },\n this.filterComponent(this.props.filterType, this.props.value, this.props.booleanValues),\n React.createElement(\"div\", { className: \"k-filtercell-operator\" },\n this.renderOperatorEditor(),\n React.createElement(\"button\", { className: \n /* button is always visible if there is either value or operator */\n (!(this.props.value === null || this.props.value === '') || this.props.operator) ?\n 'k-button k-button-icon k-clear-button-visible' :\n 'k-button k-button-icon', title: localizationService.toLanguageString(filterClearButton, messages[filterClearButton]), type: \"button\", onClick: this.clear },\n React.createElement(\"span\", { className: \"k-icon k-i-filter-clear\" }))))));\n if (this.props.render) {\n return this.props.render.call(undefined, defaultRendering, this.props);\n }\n return defaultRendering;\n };\n GridFilterCell.prototype.inputChange = function (value, e) {\n cellInputChange(value, e, this.props);\n };\n GridFilterCell.prototype.operatorChange = function (event) {\n cellOperatorChange(event, this.props.value, this.props.onChange);\n };\n GridFilterCell.prototype.boolDropdownChange = function (event) {\n cellBoolDropdownChange(event, this.props.onChange);\n };\n GridFilterCell.prototype.clear = function (e) {\n e.preventDefault();\n this.props.onChange({ value: '', operator: '', syntheticEvent: e });\n };\n GridFilterCell.prototype.filterComponent = function (filterType, value, booleanValues) {\n var _this = this;\n switch (filterType) {\n case 'numeric':\n return (React.createElement(NumericTextBox, { value: value, onChange: function (e) { _this.inputChange(e.value, e.syntheticEvent); } }));\n case 'date':\n return (React.createElement(DatePicker, { value: value, onChange: function (e) { _this.inputChange(e.value, e.syntheticEvent); } }));\n case 'boolean':\n var noFilterSet_1 = function (filter) { return filter === null || filter === undefined; };\n return (React.createElement(DropDownList, { onChange: this.boolDropdownChange, value: booleanValues.find(function (item) { return item.operator === (noFilterSet_1(value) ? '' : value); }), data: booleanValues, textField: \"text\" }));\n default: return (React.createElement(\"input\", { className: \"k-textbox\", value: value || '', onChange: function (e) { _this.inputChange(e.target.value, e); } }));\n }\n };\n return GridFilterCell;\n}(React.Component));\nexport { GridFilterCell };\nregisterForLocalization(GridFilterCell);\n//# sourceMappingURL=GridFilterCell.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport { registerForLocalization, provideLocalizationService } from '@progress/kendo-react-intl';\nimport { GridFilterCell } from '../cells/GridFilterCell';\nimport { operatorMap, booleanFilterValues, getFilterType } from '../filterCommon';\n/**\n *\n * @hidden\n */\nvar FilterRow = /** @class */ (function (_super) {\n __extends(FilterRow, _super);\n function FilterRow() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n FilterRow.prototype.headerCellClassName = function (field, locked) {\n var result = \"\" + (locked ? 'k-grid-header-sticky' : '');\n if (this.props.sort &&\n this.props.sort.filter(function (descriptor) { return descriptor.field === field; }).length > 0) {\n result += ' k-sorted';\n }\n return result;\n };\n FilterRow.prototype.setFilter = function (value, operator, field, e) {\n if (!this.props.filterChange) {\n return;\n }\n var filters = [];\n if (value !== '' && value !== null || operator !== '') {\n filters.push({\n field: field,\n operator: operator,\n value: value\n });\n }\n if (this.props.filter && this.props.filter.filters) {\n var oldFilters = this.props.filter.filters || [];\n oldFilters.forEach(function (filter) {\n var descriptor = filter;\n if (descriptor && descriptor.field !== field) {\n filters.push(descriptor);\n }\n });\n }\n this.props.filterChange(filters.length > 0 ? { logic: 'and', filters: filters } : null, e);\n };\n FilterRow.prototype.render = function () {\n var _this = this;\n var localizationService = provideLocalizationService(this);\n var oldFilters = this.props.filter && this.props.filter.filters || [];\n var activeFilterValueFor = function (field, defaultValue) {\n if (defaultValue === void 0) { defaultValue = null; }\n var found = oldFilters.filter(function (filter) { return filter.field === field; })[0];\n return found ? found.value : defaultValue;\n };\n var activeOperatorFor = function (field) {\n var found = oldFilters.filter(function (filter) { return filter.field === field; })[0];\n return found ? found.operator : null;\n };\n var serviceIndex = 0, index = -1;\n var filterCells = this.props.columns.filter(function (c) { return c.children.length === 0; })\n .map(function (column) {\n var filterType = getFilterType(column.filter);\n var filterCellProps = column.filterable && {\n render: _this.props.cellRender,\n field: column.field,\n value: activeFilterValueFor(column.field, filterType === 'text' ? '' : null),\n operator: activeOperatorFor(column.field),\n operators: operatorMap(_this.props.filterOperators[filterType] || [], localizationService),\n booleanValues: operatorMap(booleanFilterValues, localizationService),\n filterType: filterType,\n onChange: function (e) { _this.setFilter(e.value, e.operator, column.field, e.syntheticEvent); }\n };\n var key = (column.declarationIndex >= 0) ? ++index : --serviceIndex;\n return (React.createElement(\"th\", { key: key, style: (column.left !== undefined) && {\n left: column.left,\n right: column.right,\n borderRightWidth: column.rightBorder ? '1px' : ''\n } || {}, className: _this.headerCellClassName(column.field, column.locked) }, filterCellProps && (column.filterCell ?\n React.createElement(column.filterCell, __assign({}, filterCellProps)) :\n React.createElement(GridFilterCell, __assign({}, filterCellProps)))));\n });\n return React.createElement(\"tr\", { className: \"k-filter-row\" }, filterCells);\n };\n return FilterRow;\n}(React.Component));\nexport { FilterRow };\nregisterForLocalization(FilterRow);\n//# sourceMappingURL=FilterRow.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport { Draggable } from '@progress/kendo-react-common';\n/**\n * @hidden\n */\nvar GroupingIndicator = /** @class */ (function (_super) {\n __extends(GroupingIndicator, _super);\n function GroupingIndicator() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /**\n * @hidden\n */\n _this.onPress = function (data) {\n var element = _this.draggable && _this.draggable.element;\n if (element && _this.props.onPress) {\n _this.props.onPress(data.event, element);\n }\n };\n /**\n * @hidden\n */\n _this.onDrag = function (data) {\n var element = _this.draggable && _this.draggable.element;\n if (element && _this.props.onDrag) {\n _this.props.onDrag(data.event, element);\n }\n };\n /**\n * @hidden\n */\n _this.onRelease = function (data) {\n var element = _this.draggable && _this.draggable.element;\n if (element && _this.props.onRelease) {\n _this.props.onRelease(data.event);\n }\n };\n _this.sortChange = function (event) {\n event.preventDefault();\n if (_this.props.onSortChange) {\n var sort = (_this.props.dir === 'asc') ? 'desc' : 'asc';\n _this.props.onSortChange(event, sort);\n }\n };\n _this.groupRemove = function (event) {\n event.preventDefault();\n if (_this.props.onRemove) {\n _this.props.onRemove(event);\n }\n };\n return _this;\n }\n GroupingIndicator.prototype.render = function () {\n var _this = this;\n return (React.createElement(Draggable, { onPress: this.onPress, onDrag: this.onDrag, onRelease: this.onRelease, ref: function (component) { _this.draggable = component; } },\n React.createElement(\"div\", { className: \"k-indicator-container\", style: { touchAction: 'none' } },\n React.createElement(\"div\", { className: \"k-group-indicator\" },\n React.createElement(\"a\", { className: \"k-link\", href: \"#\", tabIndex: -1, onClick: this.sortChange },\n React.createElement(\"span\", { className: 'k-icon k-i-sort-' + this.props.dir + '-sm' }),\n this.props.title),\n React.createElement(\"a\", { className: \"k-button k-button-icon k-bare\", tabIndex: -1, onClick: this.groupRemove },\n React.createElement(\"span\", { className: \"k-icon k-i-group-delete\" }))))));\n };\n return GroupingIndicator;\n}(React.Component));\nexport { GroupingIndicator };\n//# sourceMappingURL=GroupingIndicator.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport { GroupingIndicator } from '../drag/GroupingIndicator';\nimport { registerForLocalization, provideLocalizationService as intl } from '@progress/kendo-react-intl';\nimport { messages, groupPanelEmpty as messageKey } from './../messages';\n/**\n * @hidden\n */\nvar GroupPanel = /** @class */ (function (_super) {\n __extends(GroupPanel, _super);\n function GroupPanel() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.onGroupRemove = function (event, index) {\n var newGroups = _this.props.group.slice();\n newGroups.splice(index, 1);\n _this.props.groupChange(newGroups, event);\n };\n _this.onGroupSortChange = function (event, index, groupDesc, dir) {\n var group = Object.assign({}, groupDesc, { dir: dir });\n var newGroups = _this.props.group.slice();\n newGroups.splice(index, 1, group);\n _this.props.groupChange(newGroups, event);\n };\n return _this;\n }\n GroupPanel.prototype.render = function () {\n var _this = this;\n var groupsProp = this.props.group || [];\n var groups = groupsProp.map(function (groupDesc, index) { return (React.createElement(GroupingIndicator, { key: index, dir: groupDesc.dir || 'asc', title: _this.props.resolveTitle(groupDesc.field), onRemove: function (event) {\n _this.onGroupRemove(event, index);\n }, onSortChange: function (event, dir) {\n _this.onGroupSortChange(event, index, groupDesc, dir);\n }, onPress: _this.props.pressHandler, onDrag: _this.props.dragHandler, onRelease: _this.props.releaseHandler })); });\n return (React.createElement(\"div\", { ref: this.props.refCallback, className: \"k-grouping-header k-grouping-header-flex\" },\n groups,\n React.createElement(\"div\", { className: \"k-indicator-container\" }, !groups.length && intl(this).toLanguageString(messageKey, messages[messageKey]))));\n };\n return GroupPanel;\n}(React.Component));\nexport { GroupPanel };\nregisterForLocalization(GroupPanel);\n//# sourceMappingURL=GroupPanel.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport { BrowserSupportService } from '../utils/browser-support.service';\nimport { isRtl } from '../utils';\n/**\n * @hidden\n */\nvar Footer = /** @class */ (function (_super) {\n __extends(Footer, _super);\n function Footer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.divStyle = {};\n _this.element = null;\n _this.footerWrap = null;\n _this.table = null;\n return _this;\n }\n Footer.prototype.componentDidMount = function () {\n this.setState({});\n var scrollbarWidth = (new BrowserSupportService()).scrollbarWidth;\n var rtl = isRtl(this.element);\n var padding = scrollbarWidth + 'px';\n var right = rtl ? 0 : padding;\n var left = rtl ? padding : 0;\n this.divStyle = { padding: \"0 \" + right + \" 0 \" + left };\n };\n /**\n *\n * @param scrollLeft - Scrolls to the left (in pixels).\n */\n Footer.prototype.setScrollLeft = function (scrollLeft) {\n if (this.footerWrap) {\n this.footerWrap.scrollLeft = scrollLeft;\n }\n };\n /**\n *\n * @param width - Scrolls the width (in pixels).\n */\n Footer.prototype.setWidth = function (width) {\n if (this.table) {\n this.table.style.width = width + 'px';\n }\n };\n Footer.prototype.render = function () {\n var _this = this;\n if (!this.props.staticHeaders) {\n return (React.createElement(\"tfoot\", { className: \"k-grid-footer\" }, this.props.row));\n }\n return (React.createElement(\"div\", { ref: function (div) { _this.element = div; }, className: \"k-grid-footer\", style: this.divStyle },\n React.createElement(\"div\", { ref: function (div) { _this.footerWrap = div; }, className: \"k-grid-footer-wrap\" },\n React.createElement(\"table\", { ref: function (table) { _this.table = table; } },\n React.createElement(\"colgroup\", { ref: function (e) { _this.props.columnResize.colGroupFooter = e; } }, this.props.cols),\n React.createElement(\"tfoot\", null, this.props.row)))));\n };\n return Footer;\n}(React.Component));\nexport { Footer };\n//# sourceMappingURL=Footer.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\n/**\n * @hidden\n */\nvar PagerNumericButtons = /** @class */ (function (_super) {\n __extends(PagerNumericButtons, _super);\n function PagerNumericButtons() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.click = function (e, page) {\n e.preventDefault();\n _this.props.pageChange(page, e);\n };\n return _this;\n }\n Object.defineProperty(PagerNumericButtons.prototype, \"end\", {\n get: function () {\n return Math.min((this.start + this.props.buttonCount) - 1, this.props.totalPages);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PagerNumericButtons.prototype, \"start\", {\n get: function () {\n var page = this.props.currentPage;\n var buttonCount = this.props.buttonCount;\n if (page > buttonCount) {\n var reminder = (page % buttonCount);\n return (reminder === 0) ? (page - buttonCount) + 1 : (page - reminder) + 1;\n }\n return 1;\n },\n enumerable: true,\n configurable: true\n });\n PagerNumericButtons.prototype.render = function () {\n var _this = this;\n var dots = '...';\n var prevDots = this.start > 1 ?\n (React.createElement(\"li\", null,\n React.createElement(\"a\", { className: \"k-link\", onClick: function (e) { return _this.click(e, _this.start - 1); }, href: \"#\" }, dots))) : '';\n var postDots = this.end < this.props.totalPages ?\n (React.createElement(\"li\", null,\n React.createElement(\"a\", { className: \"k-link\", onClick: function (e) { return _this.click(e, _this.end + 1); }, href: \"#\" }, dots))) : '';\n var buttons = [];\n for (var idx = this.start; idx <= this.end; idx++) {\n buttons.push(idx);\n }\n var numerics = buttons.map(function (page) { return (React.createElement(\"li\", { key: page },\n React.createElement(\"a\", { href: \"#\", onClick: function (e) { return _this.click(e, page); }, className: _this.props.currentPage === page ? 'k-link k-state-selected' : 'k-link' }, page))); });\n return (React.createElement(\"ul\", { className: \"k-pager-numbers k-reset\" },\n prevDots,\n numerics,\n postDots));\n };\n return PagerNumericButtons;\n}(React.Component));\nexport { PagerNumericButtons };\n//# sourceMappingURL=PagerNumericButtons.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport { registerForLocalization, provideLocalizationService } from '@progress/kendo-react-intl';\nimport { messages, pagerOf, pagerPage } from './../messages';\n/**\n * @hidden\n */\nvar PagerInput = /** @class */ (function (_super) {\n __extends(PagerInput, _super);\n function PagerInput() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this._text = undefined;\n _this.onChange = function (e) {\n var text = _this._text = e.target.value.replace(/\\D/g, '');\n _this.forceUpdate();\n if (text) {\n _this.props.pageChange(parseInt(text, 10), e);\n }\n };\n _this.value = function () {\n var value = _this._text === undefined ? _this.props.currentPage.toString() : _this._text;\n _this._text = undefined;\n return value;\n };\n return _this;\n }\n PagerInput.prototype.render = function () {\n var _this = this;\n var localizationService = provideLocalizationService(this);\n return (React.createElement(\"span\", { className: \"k-pager-input k-label\" },\n localizationService.toLanguageString(pagerPage, messages[pagerPage]),\n \" \",\n React.createElement(\"input\", { className: \"k-textbox\", value: this.value(), onBlur: function () { return _this.forceUpdate(); }, onChange: this.onChange }),\n \" \",\n localizationService.toLanguageString(pagerOf, messages[pagerOf]),\n \" \",\n this.props.totalPages));\n };\n return PagerInput;\n}(React.Component));\nexport { PagerInput };\nregisterForLocalization(PagerInput);\n//# sourceMappingURL=PagerInput.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport { registerForLocalization, provideLocalizationService } from '@progress/kendo-react-intl';\nimport { messages, pagerItemPerPage } from './../messages';\nimport { DropDownList } from '@progress/kendo-react-dropdowns';\n/**\n * @hidden\n */\nvar PagerPageSizes = /** @class */ (function (_super) {\n __extends(PagerPageSizes, _super);\n function PagerPageSizes() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.pageSizeChange = function (e) {\n if (_this.props.pageChange) {\n _this.props.pageChange({ skip: 0, take: parseInt(e.target.value, 10) }, e);\n }\n };\n return _this;\n }\n PagerPageSizes.prototype.render = function () {\n var _this = this;\n var sizes = this.props.pageSizes.slice();\n if (sizes.filter(function (s) { return s === _this.props.pageSize; }).length === 0) {\n sizes.unshift(this.props.pageSize);\n }\n return (React.createElement(\"span\", { className: \"k-pager-sizes k-label\" },\n React.createElement(DropDownList, { value: this.props.pageSize, data: sizes, onChange: this.pageSizeChange }),\n provideLocalizationService(this).toLanguageString(pagerItemPerPage, messages[pagerItemPerPage])));\n };\n return PagerPageSizes;\n}(React.Component));\nexport { PagerPageSizes };\nregisterForLocalization(PagerPageSizes);\n//# sourceMappingURL=PagerPageSizes.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport { normalize } from './GridPagerSettings';\nimport { PagerNumericButtons } from './PagerNumericButtons';\nimport { PagerInput } from './PagerInput';\nimport { PagerPageSizes } from './PagerPageSizes';\nimport { messages, pagerFirstPage, pagerLastPage, pagerNextPage, pagerPreviousPage, pagerInfo } from '../messages';\nimport { registerForIntl, registerForLocalization, provideLocalizationService, provideIntlService } from '@progress/kendo-react-intl';\n/**\n * @hidden\n */\nvar Pager = /** @class */ (function (_super) {\n __extends(Pager, _super);\n function Pager() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.changePage = function (page, e) {\n if (_this.props.pageChange && page > 0 && page <= _this.totalPages) {\n _this.props.pageChange({\n skip: (page - 1) * _this.props.pageSize,\n take: _this.props.pageSize\n }, e);\n }\n };\n return _this;\n }\n Object.defineProperty(Pager.prototype, \"totalPages\", {\n get: function () {\n return Math.ceil((this.props.total || 0) / this.props.pageSize);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Pager.prototype, \"currentPage\", {\n get: function () {\n return Math.floor((this.props.skip || 0) / this.props.pageSize) + 1;\n },\n enumerable: true,\n configurable: true\n });\n Pager.prototype.button = function (page, className, title, icon) {\n var _this = this;\n return (React.createElement(\"a\", { onClick: function (e) { e.preventDefault(); _this.changePage(page, e); }, href: \"#\", className: className, title: title },\n React.createElement(\"span\", { className: icon, \"aria-label\": title })));\n };\n Pager.prototype.render = function () {\n var settings = normalize(this.props.settings);\n var localizationService = provideLocalizationService(this);\n var intlService = provideIntlService(this);\n var changer = settings.type === 'numeric' ?\n (React.createElement(PagerNumericButtons, { buttonCount: settings.buttonCount || 0, totalPages: this.totalPages, currentPage: this.currentPage, pageChange: this.changePage })) : (React.createElement(PagerInput, { currentPage: this.currentPage, totalPages: this.totalPages, pageChange: this.changePage }));\n var first, prev, next, last;\n if (settings.previousNext) {\n first = this.button(1, 'k-link k-pager-nav k-pager-first' + (this.currentPage === 1 ? ' k-state-disabled' : ''), localizationService.toLanguageString(pagerFirstPage, messages[pagerFirstPage]), 'k-icon k-i-seek-w');\n prev = this.button(this.currentPage - 1, 'k-link k-pager-nav' + (this.currentPage === 1 ? ' k-state-disabled' : ''), localizationService.toLanguageString(pagerPreviousPage, messages[pagerPreviousPage]), 'k-icon k-i-arrow-w');\n next = this.button(this.currentPage + 1, 'k-link k-pager-nav' + (this.currentPage === this.totalPages ? ' k-state-disabled' : ''), localizationService.toLanguageString(pagerNextPage, messages[pagerNextPage]), 'k-icon k-i-arrow-e');\n last = this.button(this.totalPages, 'k-link k-pager-nav k-pager-last' + (this.currentPage === this.totalPages ? ' k-state-disabled' : ''), localizationService.toLanguageString(pagerLastPage, messages[pagerLastPage]), 'k-icon k-i-seek-e');\n }\n var pageSizes = settings.pageSizes !== false && (React.createElement(PagerPageSizes, { pageChange: this.props.pageChange, pageSize: this.props.pageSize, pageSizes: settings.pageSizes }));\n var defaultMessage = messages[pagerInfo];\n var info = !settings.info ? '' : (React.createElement(\"div\", { className: \"k-pager-info k-label\" }, intlService\n .format(localizationService.toLanguageString(pagerInfo, defaultMessage), [\n Math.min(this.props.skip + 1, this.props.total),\n Math.min(this.props.skip + this.props.pageSize, this.props.total),\n this.props.total\n ])));\n return (React.createElement(\"div\", { className: \"k-pager-wrap k-grid-pager k-widget\" },\n first,\n prev,\n changer,\n next,\n last,\n pageSizes,\n info));\n };\n return Pager;\n}(React.Component));\nexport { Pager };\nregisterForIntl(Pager);\nregisterForLocalization(Pager);\n//# sourceMappingURL=Pager.js.map","/**\n * @hidden\n */\nvar normalizeSettings = function (_a) {\n var _b = _a.buttonCount, buttonCount = _b === void 0 ? 10 : _b, _c = _a.info, info = _c === void 0 ? true : _c, _d = _a.type, type = _d === void 0 ? 'numeric' : _d, _e = _a.pageSizes, pageSizes = _e === void 0 ? false : _e, _f = _a.previousNext, previousNext = _f === void 0 ? true : _f;\n return ({\n buttonCount: buttonCount,\n info: info,\n pageSizes: pageSizes === true ? [5, 10, 20] : pageSizes,\n previousNext: previousNext,\n type: type\n });\n};\n/**\n * @hidden\n */\nexport var normalize = function (settings) {\n return normalizeSettings(settings === true ? {} : settings);\n};\n//# sourceMappingURL=GridPagerSettings.js.map","/**\n * @hidden\n */\nvar VirtualScroll = /** @class */ (function () {\n function VirtualScroll(cached) {\n this.containerHeight = 0;\n this.topCacheCount = 0; // 4;\n this.attendedSkip = 0; // -4;\n this.propsSkip = 0;\n this.total = 0;\n this.scrollableVirtual = false;\n this.realSkip = 0;\n this.pageSize = 0;\n this.heightContainer = null;\n this.prevScrollPos = 0;\n this.tableTranslate = 0;\n this.scrollSyncing = false;\n if (cached) {\n this.topCacheCount = 4;\n this.attendedSkip = -this.topCacheCount;\n }\n this.scrollHandler = this.scrollHandler.bind(this);\n }\n Object.defineProperty(VirtualScroll.prototype, \"rowHeights\", {\n /**\n * @return - The row heights in an array.\n */\n get: function () {\n var result = [];\n var allRows = this.tableBody && this.tableBody.children || [];\n var accumulate = 0;\n for (var i = 0; i < allRows.length; i++) {\n if (allRows[i].className.indexOf('k-grouping-row') > -1) {\n accumulate += allRows[i].scrollHeight;\n continue;\n }\n if (allRows[i].className.indexOf('k-detail-row') > -1) {\n result[result.length - 1].line += allRows[i].scrollHeight;\n }\n else {\n result.push({\n line: allRows[i].scrollHeight,\n acc: accumulate\n });\n accumulate = 0;\n }\n }\n return result;\n },\n enumerable: true,\n configurable: true\n });\n VirtualScroll.prototype.changePage = function (skip, e) {\n this.attendedSkip = skip - this.topCacheCount;\n this.PageChange({\n skip: Math.max(0, skip - this.topCacheCount),\n take: this.pageSize\n }, e);\n };\n VirtualScroll.prototype.translate = function (dY) {\n this.tableTranslate = dY;\n if (this.scrollableVirtual && this.table) {\n this.table.style.transform = 'translateY(' + dY + 'px)';\n }\n };\n VirtualScroll.prototype.syncScroll = function () {\n if (!this.scrollableVirtual || !this.container) {\n return;\n }\n this.syncTimeout = null;\n var scrollTop = this.container.scrollTop;\n var containerHeight = this.containerHeight; // = this.container.scrollHeight;\n var rowHeights = this.rowHeights;\n var percentage = (scrollTop - this.tableTranslate) / rowHeights[0].line;\n var targetFloorScrollPosition = Math.floor((containerHeight) * (this.propsSkip + percentage) / this.total);\n if (this.container.scrollTop !== (this.prevScrollPos = targetFloorScrollPosition)) {\n this.scrollSyncing = true;\n this.container.scrollTop = (this.prevScrollPos = targetFloorScrollPosition);\n }\n this.translate(this.tableTranslate + targetFloorScrollPosition - scrollTop);\n };\n VirtualScroll.prototype.reset = function () {\n this.scrollSyncing = true;\n if (this.container) {\n this.container.scrollTop = 0;\n }\n this.translate(0);\n };\n VirtualScroll.prototype.localScrollUp = function (e) {\n if (!this.container) {\n return;\n }\n var heights = this.rowHeights;\n var scrollTop = this.container.scrollTop;\n var targetTranslate = this.tableTranslate;\n var rowsCount = 0;\n var additionalOnTop = scrollTop - targetTranslate;\n if (additionalOnTop > 0) {\n return;\n }\n while ((rowsCount < this.topCacheCount + this.attendedSkip - this.realSkip)\n && this.propsSkip - rowsCount > 0 &&\n !(targetTranslate + (heights[heights.length - 1 - rowsCount].line + heights[heights.length - 1 - rowsCount].acc) + additionalOnTop <= scrollTop)) {\n targetTranslate -= heights[heights.length - 1 - rowsCount].line +\n heights[heights.length - 1 - rowsCount].acc;\n rowsCount++;\n }\n if (rowsCount === 0 && this.topCacheCount === 0 && this.attendedSkip > 0) {\n // allows local scrolling up, when top caching is disabled\n // for variable heights 'topCacheCount' should be atleast 1 to avoid flickering\n targetTranslate = Math.max(targetTranslate - heights[0].line, 0);\n rowsCount = 1;\n }\n if (this.propsSkip - rowsCount <= 0 && targetTranslate > scrollTop) {\n this.translate(0);\n this.changePage(0, e);\n this.container.scrollTop = 0;\n return;\n }\n if (targetTranslate > scrollTop) {\n targetTranslate = scrollTop;\n // need to handle these cases\n // if the item height is not available:\n // floor the translate to beginning of the item in absolute value\n }\n if (targetTranslate !== this.tableTranslate) {\n this.translate(targetTranslate);\n this.changePage(this.propsSkip - rowsCount, e);\n }\n };\n VirtualScroll.prototype.localScrollDown = function (e) {\n if (!this.container) {\n return;\n }\n var heights = this.rowHeights;\n var scrollTop = this.container.scrollTop;\n var targetTranslate = this.tableTranslate;\n var rowsCount = 0;\n while (rowsCount < heights.length - this.topCacheCount &&\n !(targetTranslate + heights[rowsCount].line + heights[rowsCount].acc > scrollTop)) {\n targetTranslate += heights[rowsCount].line + heights[rowsCount].acc;\n rowsCount++;\n }\n if (rowsCount >= heights.length - this.topCacheCount && this.propsSkip + rowsCount >= this.total) {\n this.translate(targetTranslate);\n this.changePage(this.total - 1, e);\n }\n else if (targetTranslate !== this.tableTranslate) {\n this.translate(targetTranslate);\n this.changePage(this.propsSkip + rowsCount, e);\n }\n };\n VirtualScroll.prototype.scrollNonStrict = function (e) {\n var floatRowIndex = this.total * this.prevScrollPos / (this.containerHeight);\n var rowIndex = Math.floor(floatRowIndex);\n if (rowIndex >= this.total) {\n rowIndex = this.total - 1;\n }\n var rowpercentage = Math.min(floatRowIndex - rowIndex, 1);\n var microAdjust = 0;\n var rowIndexOffset = rowIndex - this.propsSkip;\n var heights = this.rowHeights;\n if (rowIndexOffset >= 0 && rowIndexOffset <= 1) {\n microAdjust = -((heights[0].line + heights[0].acc) * rowpercentage);\n }\n else if (rowIndexOffset === -1) {\n microAdjust = -((heights[heights.length - 1].line + heights[heights.length - 1].acc) * rowpercentage);\n }\n this.translate(microAdjust + this.containerHeight * floatRowIndex / this.total);\n this.changePage(rowIndex, e);\n };\n VirtualScroll.prototype.scrollHandler = function (e) {\n if (!this.scrollableVirtual) {\n return;\n }\n if (this.scrollSyncing || !this.container || !this.table) {\n this.scrollSyncing = false;\n return;\n }\n var grid = this;\n clearTimeout(this.syncTimeout);\n this.syncTimeout = setTimeout(function () { grid.syncScroll(); }, 200);\n var scrollTop = this.container.scrollTop;\n var prev = this.prevScrollPos;\n this.prevScrollPos = scrollTop;\n if (scrollTop - prev < 0 && scrollTop > this.tableTranslate - this.table.scrollHeight / 10) {\n this.localScrollUp(e);\n }\n else if (scrollTop - prev > 0 && scrollTop < this.tableTranslate + this.table.scrollHeight * 2 / 3) {\n this.localScrollDown(e);\n }\n else {\n this.scrollNonStrict(e);\n }\n this.prevScrollPos = scrollTop;\n };\n return VirtualScroll;\n}());\nexport { VirtualScroll };\n//# sourceMappingURL=VirtualScroll.js.map","/**\n * @hidden\n */\nvar ColumnResize = /** @class */ (function () {\n function ColumnResize(triggerResize) {\n var _this = this;\n /**\n * The settings for resizing the Grid.\n */\n this.resizable = false;\n this.isRtl = false;\n this.setIsRtl = function (isRtl) {\n _this.isRtl = isRtl;\n };\n this.onResize = triggerResize;\n this.dragHandler = this.dragHandler.bind(this);\n }\n ColumnResize.prototype.dragHandler = function (event, column, dragCue, end) {\n var e = event.originalEvent;\n if (!end) {\n e.preventDefault();\n e.stopPropagation();\n e.stopImmediatePropagation();\n }\n var tdElement = dragCue.parentElement;\n if (!tdElement || !tdElement.parentElement) {\n return;\n }\n var oldWidth = tdElement.clientWidth;\n var newWidth;\n if (this.isRtl) {\n newWidth = (dragCue.getBoundingClientRect().right - (dragCue.offsetWidth / 2)) - event.clientX;\n newWidth += oldWidth;\n }\n else {\n newWidth = oldWidth + event.clientX - dragCue.getBoundingClientRect().left - (dragCue.offsetWidth / 2);\n }\n if (!end && Math.abs(newWidth - oldWidth) < 1) {\n return;\n }\n this.fixateInitialWidths(tdElement.parentElement.clientWidth);\n this.setWidths(column, Math.floor(newWidth) / oldWidth);\n var index = this.columns.filter(function (c) { return !c.children.length; }).indexOf(column);\n this.onResize(index, oldWidth, newWidth, e, end);\n };\n ColumnResize.prototype.fixateInitialWidths = function (width) {\n var columns = this.columns.filter(function (c) { return !c.children.length; });\n var remainingCount = 0;\n var cols = this.colGroupMain ? this.colGroupMain.children : [];\n for (var i = 0; i < cols.length; i++) {\n if (cols[i].width) {\n width -= parseFloat(cols[i].width);\n }\n else {\n remainingCount++;\n }\n }\n if (remainingCount === 0) {\n return;\n }\n var perCol = Math.floor(width / remainingCount);\n for (var i = 0; i < cols.length; i++) {\n var col = cols[i];\n if (!col.width) {\n col.width = perCol;\n columns[i].width = perCol.toString();\n if (this.colGroupHeader) {\n this.colGroupHeader.children[i].width = perCol;\n }\n if (this.colGroupFooter) {\n this.colGroupFooter.children[i].width = perCol;\n }\n }\n }\n };\n ColumnResize.prototype.setWidths = function (column, coef) {\n var indexInOriginal = this.columns.indexOf(column);\n var toAdjust = [];\n var more = column.children.length;\n for (var i = indexInOriginal + 1; more > 0 && i < this.columns.length; i++, more--) {\n var cc = this.columns[i];\n if (!cc.children.length) {\n toAdjust.push(cc);\n }\n else {\n more += cc.children.length;\n }\n }\n if (toAdjust.length === 0) {\n toAdjust.push(column);\n }\n toAdjust.forEach(function (colToAdjust) {\n var targetWidth = colToAdjust.width ? parseFloat(colToAdjust.width.toString()) * coef : 0;\n var min = colToAdjust.minResizableWidth === undefined ? 10 : colToAdjust.minResizableWidth;\n if (targetWidth < min) {\n targetWidth = min;\n }\n colToAdjust.width = targetWidth;\n });\n this.updateColElements(toAdjust);\n };\n ColumnResize.prototype.updateColElements = function (affectedColumns) {\n var columns = this.columns.filter(function (c) { return !c.children.length; });\n var difference = 1e-10;\n for (var i = 0; i < affectedColumns.length; i++) {\n var colIndex = columns.indexOf(affectedColumns[i]);\n var currentColumnFloatWidth = parseFloat((affectedColumns[i].width || 0).toString());\n difference += currentColumnFloatWidth - Math.floor(currentColumnFloatWidth);\n var currentWidth = Math.floor(currentColumnFloatWidth) + Math.floor(difference);\n difference -= Math.floor(difference);\n if (this.colGroupMain && this.colGroupMain.children[colIndex]) {\n this.colGroupMain.children[colIndex].width = currentWidth + 'px';\n }\n if (this.colGroupHeader && this.colGroupHeader.children[colIndex]) {\n // static headers\n this.colGroupHeader.children[colIndex].width = currentWidth + 'px';\n }\n if (this.colGroupFooter && this.colGroupFooter.children[colIndex]) {\n // static footers\n this.colGroupFooter.children[colIndex].width = currentWidth + 'px';\n }\n }\n };\n return ColumnResize;\n}());\nexport { ColumnResize };\n//# sourceMappingURL=ColumnResize.js.map","import { getIndex } from '../utils';\n/**\n * @hidden\n */\nvar CommonDragLogic = /** @class */ (function () {\n function CommonDragLogic(columnReorder, groupReorder, columnToGroup) {\n var _this = this;\n this.reorderable = false;\n this.groupable = false;\n this.startColumn = -1;\n this.startGroup = -1;\n this.currentColumn = -1;\n this.currentGroup = -1;\n this.dropElementClue = null;\n this.dragElementClue = null;\n this.groupPanelDivElement = null;\n this.refGroupPanelDiv = function (e) {\n _this.groupPanelDivElement = e;\n };\n this.refDropElementClue = function (e) {\n _this.dropElementClue = e;\n };\n this.refDragElementClue = function (e) {\n _this.dragElementClue = e;\n };\n this.pressHandler = function (event, element) {\n if (!event.isTouch) {\n event.originalEvent.preventDefault();\n }\n var startColumn = _this.getColumnIndex(event, element);\n _this.startGroup = _this.getGroupIndex(event);\n if (startColumn >= 0) {\n var col = _this.columns[startColumn];\n if (col.reorderable && _this.reorderable || col.groupable && _this.groupable) {\n _this.startColumn = startColumn;\n }\n }\n };\n this.dragHandler = function (event, element) {\n if (!event.isTouch) {\n event.originalEvent.preventDefault();\n }\n event.originalEvent.stopPropagation();\n if (_this.startColumn === -1 && _this.startGroup === -1) {\n return;\n }\n _this.currentColumn = _this.getColumnIndex(event, element);\n _this.currentGroup = _this.getGroupIndex(event);\n if (_this.groupPanelDivElement && _this.startGroup >= 0) {\n _this.currentGroup = Math.min(_this.currentGroup, _this.groupPanelDivElement.children.length - 2);\n }\n var invalidIndex = !_this.isValid();\n if (invalidIndex) {\n _this.currentColumn = -1;\n _this.currentGroup = -1;\n }\n var targetElement = (_this.currentColumn >= 0) ?\n element.children[_this.columns[_this.currentColumn].index] :\n _this.groupPanelDivElement && _this.groupPanelDivElement.children[_this.currentGroup];\n _this.updateDragElementClue(event, element, targetElement, invalidIndex);\n _this.updateDropElementClue(event, element, targetElement, invalidIndex);\n };\n this.releaseHandler = function (event) {\n var prevColumnIndex = _this.startColumn;\n var nextColumnIndex = _this.currentColumn;\n var prevGroupIndex = _this.startGroup;\n var nextGroupIndex = _this.currentGroup;\n if (_this.dropElementClue) {\n _this.dropElementClue.setState({ visible: false });\n }\n if (_this.dragElementClue) {\n _this.dragElementClue.setState({ visible: false });\n }\n var isValid = _this.isValid();\n _this.startColumn = _this.startGroup = _this.currentColumn = _this.currentGroup = -1;\n if (!isValid) {\n return;\n }\n if (prevColumnIndex >= 0 && nextColumnIndex >= 0) {\n _this.columnReorder(prevColumnIndex, nextColumnIndex, event.originalEvent);\n }\n else if (prevGroupIndex >= 0 && nextGroupIndex >= 0) {\n _this.groupReorder(prevGroupIndex, nextGroupIndex, event.originalEvent);\n }\n else if (prevColumnIndex >= 0 && nextGroupIndex >= 0) {\n _this.columnToGroup(prevColumnIndex, nextGroupIndex, event.originalEvent);\n }\n };\n this.columnReorder = columnReorder;\n this.groupReorder = groupReorder;\n this.columnToGroup = columnToGroup;\n }\n CommonDragLogic.prototype.getColumnIndex = function (event, parent) {\n if (!parent || (parent.parentElement === this.groupPanelDivElement)) {\n return -1;\n }\n var index = getIndex(event, parent);\n if (index === -1) {\n return -1;\n }\n var _loop_1 = function (i) {\n if (parent.parentNode.children[i] === parent) {\n return { value: this_1.columns.findIndex(function (c) { return ((c.index === index) && (c.depth === i)); }) };\n }\n };\n var this_1 = this;\n for (var i = 0; i < parent.parentNode.children.length; i++) {\n var state_1 = _loop_1(i);\n if (typeof state_1 === \"object\")\n return state_1.value;\n }\n return -1;\n };\n CommonDragLogic.prototype.getGroupIndex = function (event) {\n return getIndex(event, this.groupPanelDivElement);\n };\n CommonDragLogic.prototype.isValid = function () {\n if (this.startGroup >= 0) {\n // group can be moved into group only\n return this.currentGroup >= 0 && this.currentGroup !== this.startGroup;\n }\n if (this.startColumn === -1) {\n return false;\n }\n if (this.currentGroup >= 0) {\n // column to group is possible\n return this.columns[this.startColumn].groupable === true && this.groupable === true;\n }\n // reorder is possible\n return this.reorderable === true &&\n this.currentColumn >= 0 &&\n this.currentColumn !== this.startColumn &&\n this.columns[this.startColumn].reorderable === true &&\n this.columns[this.currentColumn].parentIndex === this.columns[this.startColumn].parentIndex;\n };\n CommonDragLogic.prototype.updateDragElementClue = function (event, element, targetElement, invalidIndex) {\n if (!this.dragElementClue) {\n return;\n }\n var innerText = this.startColumn >= 0 ?\n element.children[this.columns[this.startColumn].index].innerText :\n element.innerText;\n this.dragElementClue.setState({\n visible: true,\n top: (event.pageY + 10),\n left: event.pageX,\n innerText: innerText,\n status: (invalidIndex || !targetElement) ? 'k-i-cancel' : 'k-i-add'\n });\n };\n CommonDragLogic.prototype.updateDropElementClue = function (event, element, targetElement, invalidIndex) {\n if (!this.dropElementClue) {\n return;\n }\n if (invalidIndex || !targetElement) {\n this.dropElementClue.setState({ visible: false });\n return;\n }\n var rect = targetElement.getBoundingClientRect();\n var left = rect.left + event.pageX - event.clientX - 6;\n if (this.currentColumn > this.startColumn || this.currentGroup > this.startGroup && this.startGroup !== -1) {\n left += rect.width;\n }\n var top = rect.top + event.pageY - event.clientY;\n this.dropElementClue.setState({\n visible: true,\n top: top,\n left: left,\n height: (this.currentColumn >= 0) ? element.clientHeight : rect.height\n });\n };\n return CommonDragLogic;\n}());\nexport { CommonDragLogic };\n//# sourceMappingURL=CommonDragLogic.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\n/**\n * @hidden\n */\nvar DragClue = /** @class */ (function (_super) {\n __extends(DragClue, _super);\n function DragClue() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.state = {\n visible: false,\n top: 0,\n left: 0,\n innerText: '',\n status: 'k-i-cancel'\n };\n return _this;\n }\n DragClue.prototype.render = function () {\n return this.state.visible && (React.createElement(\"div\", { className: \"k-header k-drag-clue\", style: {\n display: 'block',\n position: 'absolute',\n zIndex: 20000,\n padding: '8px 12px',\n top: this.state.top + 'px',\n left: this.state.left + 'px'\n } },\n React.createElement(\"span\", { className: 'k-icon k-drag-status ' + this.state.status + ' k-icon-with-modifier' },\n React.createElement(\"span\", { className: \"k-icon k-icon-modifier\" })),\n this.state.innerText));\n };\n return DragClue;\n}(React.PureComponent));\nexport { DragClue };\n//# sourceMappingURL=DragClue.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\n/**\n * @hidden\n */\nvar DropClue = /** @class */ (function (_super) {\n __extends(DropClue, _super);\n function DropClue() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.state = {\n height: 0,\n visible: false,\n left: 0,\n top: 0\n };\n return _this;\n }\n DropClue.prototype.render = function () {\n return this.state.visible && (React.createElement(\"div\", { className: \"k-grouping-dropclue\", style: {\n zIndex: 10000,\n display: 'block',\n top: this.state.top + 'px',\n left: this.state.left + 'px',\n height: this.state.height + 'px'\n } }));\n };\n return DropClue;\n}(React.PureComponent));\nexport { DropClue };\n//# sourceMappingURL=DropClue.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport { getNestedValue } from './../utils';\nimport { registerForIntl, provideIntlService } from '@progress/kendo-react-intl';\nvar GridCell = /** @class */ (function (_super) {\n __extends(GridCell, _super);\n function GridCell() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @hidden\n */\n GridCell.prototype.render = function () {\n var defaultRendering = null;\n if (this.props.rowType === 'groupFooter') {\n defaultRendering = React.createElement(\"td\", { className: this.props.className });\n }\n else if (this.props.field !== undefined && this.props.rowType !== 'groupHeader') {\n var data = getNestedValue(this.props.field, this.props.dataItem);\n var dataAsString = '';\n if (data !== undefined && data !== null) {\n dataAsString = this.props.format ?\n provideIntlService(this).format(this.props.format, data) :\n data.toString();\n }\n defaultRendering = (React.createElement(\"td\", { colSpan: this.props.colSpan, style: this.props.style, className: this.props.className }, dataAsString));\n }\n return this.props.render ?\n this.props.render.call(undefined, defaultRendering, this.props) :\n defaultRendering;\n };\n return GridCell;\n}(React.Component));\nexport { GridCell };\nregisterForIntl(GridCell);\n//# sourceMappingURL=GridCell.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\n/**\n * @hidden\n */\nvar GridGroupCell = /** @class */ (function (_super) {\n __extends(GridGroupCell, _super);\n function GridGroupCell() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @hidden\n */\n GridGroupCell.prototype.render = function () {\n var defaultRendering = null;\n var _a = this.props, columnIndex = _a.columnIndex, level = _a.level, columnsCount = _a.columnsCount, rowType = _a.rowType, dataItem = _a.dataItem, field = _a.field, onChange = _a.onChange, expanded = _a.expanded, render = _a.render;\n var definedField = field || '';\n if (columnIndex === undefined || level === undefined || columnIndex < level ||\n columnsCount === undefined || rowType !== 'groupHeader' || dataItem[definedField] === undefined) {\n defaultRendering = (React.createElement(\"td\", { style: this.props.style, key: 'g' + columnIndex, className: \"k-group-cell\" }));\n }\n else if (columnIndex <= level) {\n defaultRendering = (React.createElement(\"td\", { style: this.props.style, key: 'g-colspan', colSpan: columnsCount - columnIndex },\n React.createElement(\"p\", { className: \"k-reset\" },\n React.createElement(\"a\", { onClick: function (e) {\n e.preventDefault();\n if (onChange) {\n onChange({\n dataItem: dataItem,\n syntheticEvent: e,\n field: undefined,\n value: !expanded\n });\n }\n }, href: \"#\", tabIndex: -1, className: expanded ? 'k-i-collapse k-icon' : 'k-i-expand k-icon' }),\n ((dataItem[definedField] instanceof Date) && dataItem[definedField].toString) ?\n dataItem[definedField].toString() :\n dataItem[definedField])));\n }\n return render ?\n render.call(undefined, defaultRendering, this.props) :\n defaultRendering;\n };\n return GridGroupCell;\n}(React.Component));\nexport { GridGroupCell };\n//# sourceMappingURL=GridGroupCell.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport { getNestedValue } from '../utils';\n/**\n * The component for each of the items in the `data` property which the Grid renders.\n */\nvar GridRow = /** @class */ (function (_super) {\n __extends(GridRow, _super);\n function GridRow() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @hidden\n */\n GridRow.prototype.render = function () {\n var className = (this.props.rowType === 'groupFooter' || this.props.rowType === 'groupHeader') ?\n (this.props.rowType === 'groupFooter' && 'k-group-footer' || 'k-grouping-row') :\n (this.props.isAltRow ? 'k-master-row k-alt' : 'k-master-row') +\n (this.props.selectedField !== undefined &&\n getNestedValue(this.props.selectedField, this.props.dataItem) ?\n ' k-state-selected' : '');\n var defaultRendering = (React.createElement(\"tr\", { onClick: this.props.onClick, onDoubleClick: this.props.onDoubleClick, className: className, style: {\n height: this.props.rowHeight ? this.props.rowHeight + 'px' : '',\n visibility: this.props.isHidden ? 'hidden' : ''\n } }, this.props.children));\n return this.props.render ?\n this.props.render.call(undefined, defaultRendering, this.props) :\n defaultRendering;\n };\n return GridRow;\n}(React.Component));\nexport { GridRow };\n//# sourceMappingURL=GridRow.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport { guid } from '@progress/kendo-react-common';\n/**\n * @hidden\n */\nvar GridHeaderSelectionCell = /** @class */ (function (_super) {\n __extends(GridHeaderSelectionCell, _super);\n function GridHeaderSelectionCell() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this._inputId = guid();\n return _this;\n }\n GridHeaderSelectionCell.prototype.render = function () {\n var _this = this;\n var defaultRendering = [\n (React.createElement(\"input\", { key: 0, checked: this.props.selectionValue, id: this._inputId, type: \"checkbox\", className: \"k-checkbox\", onChange: function (e) {\n return _this.props.selectionChange({\n field: _this.props.field,\n syntheticEvent: e\n });\n } })),\n (React.createElement(\"label\", { key: 1, className: \"k-checkbox-label\", htmlFor: this._inputId }))\n ];\n return this.props.render ?\n this.props.render.call(undefined, defaultRendering, this.props) :\n defaultRendering;\n };\n return GridHeaderSelectionCell;\n}(React.Component));\nexport { GridHeaderSelectionCell };\n//# sourceMappingURL=GridHeaderSelectionCell.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport { registerForLocalization, provideLocalizationService as intl } from '@progress/kendo-react-intl';\nimport { messages, noRecords } from './messages';\n// tslint:disable:max-line-length\n/**\n * Represents the GridNoRecords component. The component is rendered when the `data` property of the Grid is empty or `null`.\n *\n * @example\n * ```jsx\n * class App extends React.Component {\n * render() {\n * return (\n * \n * \n * There is no data available\n * \n * \n * \n * \n * );\n * }\n * }\n * ReactDOM.render(\n * ,\n * document.querySelector('my-app')\n * );\n * ```\n */\n// tslint:enable:max-line-length\nvar GridNoRecords = /** @class */ (function (_super) {\n __extends(GridNoRecords, _super);\n function GridNoRecords() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @hidden\n */\n GridNoRecords.prototype.render = function () {\n return this.props.children || intl(this).toLanguageString(noRecords, messages[noRecords]);\n };\n /**\n * @hidden\n */\n GridNoRecords.displayName = 'KendoReactGridNoRecords';\n return GridNoRecords;\n}(React.Component));\nexport { GridNoRecords };\nregisterForLocalization(GridNoRecords);\n//# sourceMappingURL=GridNoRecords.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport { footerColumns } from './../utils';\n/**\n * @hidden\n */\nvar FooterRow = /** @class */ (function (_super) {\n __extends(FooterRow, _super);\n function FooterRow() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this._element = null;\n _this.renderCell = function (column, index) {\n var tdProps = {\n colSpan: column.colSpan !== 1 ? column.colSpan : undefined,\n style: (column.left !== undefined) ? {\n position: 'sticky',\n left: column.left,\n right: column.right,\n zIndex: 1,\n background: '#f6f6f6',\n borderRightWidth: column.rightBorder ? '1px' : undefined\n } : undefined\n };\n var cellProps = __assign({ field: column.field }, tdProps);\n return (column.footerCell && React.createElement(column.footerCell, __assign({}, cellProps, { key: index }))) || (React.createElement(\"td\", __assign({ key: index }, tdProps)));\n };\n return _this;\n }\n Object.defineProperty(FooterRow.prototype, \"element\", {\n get: function () {\n return this._element;\n },\n enumerable: true,\n configurable: true\n });\n FooterRow.prototype.render = function () {\n return React.createElement(\"tr\", null, footerColumns(this.props.columns).map(this.renderCell));\n };\n return FooterRow;\n}(React.Component));\nexport { FooterRow };\n//# sourceMappingURL=FooterRow.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\n t[p[i]] = s[p[i]];\n return t;\n};\nimport * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport * as PropTypes from 'prop-types';\nimport { dispatchEvent } from '@progress/kendo-react-common';\nimport { tableColumnsVirtualization } from '@progress/kendo-react-data-tools';\nimport { GridSelectionCell } from './cells/GridSelectionCell';\nimport { GridHierarchyCell } from './cells/GridHierarchyCell';\nimport { GridEditCell } from './cells/GridEditCell';\nimport { Header } from './header/Header';\nimport { HeaderRow } from './header/HeaderRow';\nimport { FilterRow } from './header/FilterRow';\nimport { GroupPanel } from './header/GroupPanel';\nimport { Footer } from './footer/Footer';\nimport { Pager } from './paging/Pager';\nimport { VirtualScroll } from './VirtualScroll';\nimport { ColumnResize } from './drag/ColumnResize';\nimport { CommonDragLogic } from './drag/CommonDragLogic';\nimport { DragClue } from './drag/DragClue';\nimport { DropClue } from './drag/DropClue';\nimport { getNestedValue, flatData, mapColumns, readColumns, autoGenerateColumns } from './utils/index';\nimport { GridCell } from './cells/GridCell';\nimport { GridGroupCell } from './cells/GridGroupCell';\nimport { GridRow } from './rows/GridRow';\nimport { GridHeaderSelectionCell } from './header/GridHeaderSelectionCell';\nimport { GridNoRecords } from './GridNoRecords';\nimport { operators } from './filterCommon';\nimport { FooterRow } from './footer/FooterRow';\n/**\n * Represents the [KendoReact Grid component]({% slug overview_grid %}).\n *\n * @example\n * ```jsx\n * class App extends React.Component {\n * constructor(props) {\n * super(props);\n * this.state = {\n * data: [\n * { 'foo': 'A1', 'bar': 'B1' },\n * { 'foo': 'A2', 'bar': 'B2' },\n * { 'foo': 'A3', 'bar': 'B2' }\n * ]\n * };\n * }\n * render() {\n * return (\n * \n * \n * \n * \n * );\n * }\n * }\n * ReactDOM.render(, document.querySelector('my-app'));\n * ```\n */\nvar Grid = /** @class */ (function (_super) {\n __extends(Grid, _super);\n function Grid(props) {\n var _this = _super.call(this, props) || this;\n _this._columns = [];\n _this._columnsMap = [[]];\n _this._header = null;\n _this._footer = null;\n _this.forceUpdateTimeout = undefined;\n _this.scrollHandler = function (event) {\n if (event.currentTarget !== event.currentTarget) {\n return;\n }\n clearTimeout(_this.forceUpdateTimeout);\n if (_this.props.columnVirtualization && !_this.vs.scrollableVirtual) {\n _this.forceUpdateTimeout = setTimeout(function () { _this.forceUpdate(); }, 0);\n }\n if (_this._header) {\n _this._header.setScrollLeft(event.currentTarget.scrollLeft);\n }\n if (_this._footer) {\n _this._footer.setScrollLeft(event.currentTarget.scrollLeft);\n }\n if (_this.vs) {\n _this.vs.scrollHandler(event);\n }\n dispatchEvent(_this.props.onScroll, event, _this, undefined);\n };\n _this.rowClick = function (e, item) {\n if (_this.props.onRowClick && e.target.nodeName === 'TD') {\n _this.props.onRowClick.call(undefined, __assign({ dataItem: item.dataItem }, _this.getArguments(e)));\n }\n };\n _this.rowDblClick = function (e, item) {\n if (_this.props.onRowDoubleClick && e.target.nodeName === 'TD') {\n _this.props.onRowDoubleClick.call(undefined, __assign({ dataItem: item.dataItem }, _this.getArguments(e)));\n }\n };\n _this.itemChange = function (event) {\n var itemChange = _this.props.onItemChange;\n if (event.field === _this.props.expandField || _this.props.group && event.field === undefined) {\n var expandChange = _this.props.onExpandChange;\n if (expandChange) {\n expandChange.call(undefined, __assign({}, _this.getArguments(event.syntheticEvent), { dataItem: event.dataItem, value: event.value }));\n }\n return;\n }\n if (itemChange) {\n itemChange.call(undefined, __assign({}, _this.getArguments(event.syntheticEvent), { dataItem: event.dataItem, field: event.field, value: event.value }));\n }\n };\n _this.onHeaderSelectionChange = function (event) {\n if (_this.props.onHeaderSelectionChange) {\n _this.props.onHeaderSelectionChange.call(undefined, {\n field: event.field,\n nativeEvent: event.syntheticEvent && event.syntheticEvent.nativeEvent,\n syntheticEvent: event.syntheticEvent,\n target: _this\n });\n }\n };\n _this.pageChange = function (page, syntheticEvent) {\n _this.raiseDataEvent(_this.props.onPageChange, { page: page }, { skip: page.skip, take: page.take }, syntheticEvent);\n };\n _this.sortChange = function (sort, syntheticEvent) {\n _this.raiseDataEvent(_this.props.onSortChange, { sort: sort }, { sort: sort }, syntheticEvent);\n };\n _this.filterChange = function (filter, syntheticEvent) {\n _this.raiseDataEvent(_this.props.onFilterChange, { filter: filter }, { filter: filter, skip: 0 }, syntheticEvent);\n };\n _this.groupChange = function (groups, event) {\n var syntheticEvent = event.nativeEvent ?\n event : { nativeEvent: event.nativeEvent || event.originalEvent };\n _this.raiseDataEvent(_this.props.onGroupChange, { group: groups }, { group: groups, skip: 0 }, syntheticEvent);\n };\n _this.resolveTitle = function (field) {\n var column = _this._columns.find(function (c) { return c.field === field; });\n var title = column && (column.title || column.field);\n return title === undefined ? field : title;\n };\n var groupable = _this.props.groupable === true ||\n (typeof _this.props.groupable === 'object') && _this.props.groupable.enabled !== false;\n _this.vs = new VirtualScroll(groupable || props.rowHeight === undefined || props.rowHeight === 0);\n _this.dragLogic = new CommonDragLogic(_this.columnReorder.bind(_this), _this.groupReorder.bind(_this), _this.columnToGroup.bind(_this));\n _this.columnResize = new ColumnResize(_this.onResize.bind(_this));\n return _this;\n }\n Object.defineProperty(Grid.prototype, \"columns\", {\n // tslint:disable:max-line-length\n /**\n * A getter of the current columns. Gets the current column width or current columns, or any other [`GridColumnProps`]({% slug api_grid_gridcolumnprops %}) for each defined column. Can be used on each Grid instance. To obtain the instance of the rendered Grid, use the `ref` callback. The following example demonstrates how to reorder the columns by dragging their handlers and check the properties afterwards. You can check the result in the browser console.\n *\n * @example\n * ```jsx\n * class App extends React.Component {\n * constructor(props) {\n * super(props);\n * this.state = {\n * data: [\n * { 'foo': 'A1', 'bar': 'B1' },\n * { 'foo': 'A2', 'bar': 'B2' },\n * { 'foo': 'A3', 'bar': 'B2' }\n * ]\n * };\n * this.grid = null;\n * }\n * render() {\n * return (\n *
    \n * { this.grid = g; }}\n * >\n * \n * \n * \n * \n *
    \n * );\n * }\n * }\n * ReactDOM.render(, document.querySelector('my-app'));\n * ```\n */\n // tslint:enable:max-line-length\n get: function () {\n var shuffledColumns = this._columns.filter(function (q) { return q.declarationIndex >= 0 && q.parentIndex === -1; });\n var sanitize = function (columns) {\n columns.sort(function (a, b) { return a.declarationIndex - b.declarationIndex; });\n return columns.map(function (column) {\n var declarationIndex = column.declarationIndex, parentIndex = column.parentIndex, depth = column.depth, colSpan = column.colSpan, rowSpan = column.rowSpan, index = column.index, kFirst = column.kFirst, children = column.children, props = __rest(column, [\"declarationIndex\", \"parentIndex\", \"depth\", \"colSpan\", \"rowSpan\", \"index\", \"kFirst\", \"children\"]);\n return children.length ? __assign({ children: sanitize(children) }, props) : props;\n });\n };\n return sanitize(shuffledColumns);\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @hidden\n */\n Grid.prototype.componentWillReceiveProps = function (nextProps) {\n var groupable = this.props.groupable === true ||\n (typeof this.props.groupable === 'object') && this.props.groupable.enabled !== false;\n if (nextProps.total !== this.props.total ||\n nextProps.rowHeight !== this.props.rowHeight) {\n this.vs.reset();\n this.vs = new VirtualScroll(groupable || nextProps.rowHeight === undefined || nextProps.rowHeight === 0);\n }\n else if (Math.max(0, this.vs.attendedSkip) !== nextProps.skip && nextProps.skip !== undefined) {\n this.vs.attendedSkip = nextProps.skip;\n this.vs.propsSkip = (nextProps.skip || 0) + (nextProps.scrollable === 'virtual' ?\n this.vs.topCacheCount + (this.vs.attendedSkip - (nextProps.skip || 0)) : 0);\n this.vs.syncScroll();\n }\n };\n /**\n * @hidden\n */\n Grid.prototype.componentWillUnmount = function () {\n clearTimeout(this.forceUpdateTimeout);\n this.columnResize.columns = [];\n this.dragLogic.columns = [];\n this._columns = [];\n };\n /**\n * @hidden\n */\n Grid.prototype.render = function () {\n var _this = this;\n var total = this.props.total || 0;\n var propsData = [];\n if (Array.isArray(this.props.data)) {\n propsData = this.props.data;\n }\n else if (this.props.data) {\n propsData = this.props.data.data;\n total = total || this.props.data.total;\n }\n var groupable = this.props.groupable === true ||\n (typeof this.props.groupable === 'object') && this.props.groupable.enabled !== false;\n this.columnResize.resizable = this.props.resizable || false;\n this.dragLogic.reorderable = this.props.reorderable || false;\n this.dragLogic.groupable = groupable;\n this.vs.PageChange = this.pageChange;\n this.vs.realSkip = this.props.skip || 0;\n this.vs.pageSize = (this.props.take !== undefined ? this.props.take : this.props.pageSize) || 0;\n this.vs.scrollableVirtual = (this.props.scrollable === 'virtual');\n this.vs.total = total;\n this.vs.propsSkip = (this.props.skip || 0) + (this.props.scrollable === 'virtual' ?\n this.vs.topCacheCount + (this.vs.attendedSkip - (this.props.skip || 0)) : 0);\n if (this.props.rowHeight !== undefined && this.props.rowHeight > 0 && !groupable) {\n this.vs.containerHeight = Math.min(1533915, this.props.rowHeight * (total || 0));\n }\n else {\n this.vs.containerHeight = 1533915;\n }\n var groupingFooter = (typeof this.props.groupable === 'object') && this.props.groupable.footer || 'none';\n var data = [];\n var resolvedGroupsCount = flatData(data, propsData, groupingFooter, { index: this.props.skip || 0 }, this.props.group !== undefined, this.props.expandField);\n var children = React.Children.toArray(this.props.children);\n this.initColumns(children.filter(function (child) { return child &&\n child.type.displayName === 'KendoReactGridColumn'; }), resolvedGroupsCount);\n var toolbar = children.filter(function (child) { return child &&\n child.type.displayName === 'KendoReactGridToolbar'; });\n var noRecords = children.filter(function (child) { return child &&\n child.type.displayName === 'KendoReactGridNoRecords'; });\n var columnsWithColGroup = this._columns.filter(function (c) { return c.children.length === 0; });\n var groupingPanel = groupable && (React.createElement(GroupPanel, { group: this.props.group || [], groupChange: this.groupChange, pressHandler: this.dragLogic.pressHandler, dragHandler: this.dragLogic.dragHandler, releaseHandler: this.dragLogic.releaseHandler, refCallback: this.dragLogic.refGroupPanelDiv, resolveTitle: this.resolveTitle }));\n var clues = (this.dragLogic.reorderable || this.dragLogic.groupable) && document && document.body && [\n ReactDOM.createPortal(React.createElement(DropClue, { ref: this.dragLogic.refDropElementClue }), document.body),\n ReactDOM.createPortal(React.createElement(DragClue, { ref: this.dragLogic.refDragElementClue }), document.body)\n ];\n var header = (React.createElement(Header, { columnResize: this.columnResize, staticHeaders: this.props.scrollable !== 'none', ref: function (h) { _this._header = h; }, headerRow: React.createElement(HeaderRow, { sort: this.props.sort, sortable: this.props.sortable, sortChange: this.sortChange, filter: this.props.filter, filterable: this.props.filterable, filterOperators: this.props.filterOperators || operators, filterChange: this.filterChange, columnMenu: this.props.columnMenu, selectionChange: this.onHeaderSelectionChange, columns: this._columns, columnResize: this.columnResize, pressHandler: this.dragLogic.pressHandler, dragHandler: this.dragLogic.dragHandler, releaseHandler: this.dragLogic.releaseHandler, columnsMap: this._columnsMap, cellRender: this.props.headerCellRender }), filterRow: this.props.filterable && React.createElement(FilterRow, { columns: this._columns, filter: this.props.filter, filterOperators: this.props.filterOperators || operators, filterChange: this.filterChange, sort: this.props.sort, cellRender: this.props.filterCellRender }) || undefined, cols: columnsWithColGroup.map(function (column, index) { return React.createElement(\"col\", { key: index.toString(), width: column.width !== undefined ?\n Math.floor(parseFloat(column.width.toString())) + 'px' : undefined }); }) }));\n var footer = this._columns.some(function (c) { return Boolean(c.footerCell); }) ? (React.createElement(Footer, { columnResize: this.columnResize, staticHeaders: this.props.scrollable !== 'none', ref: function (f) { return _this._footer = f; }, row: React.createElement(FooterRow, { columns: this._columns }), cols: columnsWithColGroup.map(function (column, index) { return React.createElement(\"col\", { key: index.toString(), width: column.width !== undefined ?\n Math.floor(parseFloat(column.width.toString())) + 'px' : undefined }); }) })) : null;\n var scrollLeft = this.vs && this.vs.container && this.vs.container.scrollLeft || 0;\n var tableWidth = parseFloat(((this.props.style || {}).width || '').toString());\n var _a = tableColumnsVirtualization({\n enabled: this.props.columnVirtualization,\n columns: this._columns,\n tableViewPortWidth: tableWidth,\n scrollLeft: scrollLeft\n }), colSpans = _a.colSpans, isColHidden = _a.hiddenColumns;\n var dataRow = function (item) { return _this._columns.map(function (column, index) {\n if (isColHidden[index]) {\n return null;\n }\n var className = \"\" + (column.className ? column.className + ' ' : '')\n + (\"\" + (column.locked ? 'k-grid-content-sticky' : ''));\n var cellProps = {\n colSpan: colSpans[index],\n dataItem: item.dataItem,\n field: column.field,\n editor: column.editor,\n format: column.format,\n className: className,\n render: _this.props.cellRender,\n onChange: _this.itemChange,\n selectionChange: (_this.props.onSelectionChange) ? (function (e) {\n _this.selectionChange(e, item.dataItem);\n }) : undefined,\n columnIndex: index,\n columnsCount: _this._columns.filter(function (c) { return !c.children.length; }).length,\n rowType: item.rowType,\n level: item.level,\n expanded: item.expanded,\n dataIndex: item.dataIndex,\n style: (column.left !== undefined) && {\n left: column.left,\n right: column.right,\n borderRightWidth: column.rightBorder ? '1px' : ''\n } || {}\n };\n if (column.cell) {\n return React.createElement(column.cell, __assign({ key: index }, cellProps));\n }\n if (column.editable && _this.props.editField) {\n var inEdit = getNestedValue(_this.props.editField, item.dataItem);\n if (inEdit === true || inEdit === column.field) {\n return React.createElement(GridEditCell, __assign({ key: index }, cellProps));\n }\n }\n return React.createElement(GridCell, __assign({ key: index }, cellProps));\n }); };\n var hiddenRows = 0;\n if (this.props.scrollable === 'virtual') {\n for (var i = 0; i < this.vs.topCacheCount + this.vs.attendedSkip - (this.props.skip || 0); i++) {\n var item = data.shift();\n if (item) {\n data.push(item);\n hiddenRows++;\n if (item.rowType === 'groupHeader') {\n i--;\n }\n }\n else {\n break;\n }\n }\n }\n var hidden = function (index) { return (index >= data.length - hiddenRows); };\n var absoluteIndex = function (index) { return index + (_this.vs.propsSkip || 0); };\n var absoluteDataIndex = this.vs.propsSkip || 0;\n var body = data.length && data.map(function (item, index) {\n if (item.rowType === 'data') {\n absoluteDataIndex++;\n }\n var isAlt = absoluteDataIndex % 2 === 0;\n return [(React.createElement(GridRow, { key: absoluteIndex(index) * 2, dataItem: item.dataItem, isAltRow: isAlt, rowType: item.rowType, isHidden: hidden(index), onClick: function (e) { return _this.rowClick(e, item); }, onDoubleClick: function (e) { return _this.rowDblClick(e, item); }, selectedField: _this.props.selectedField, rowHeight: _this.props.rowHeight, render: _this.props.rowRender }, dataRow(item))),\n _this.props.detail && item.rowType === 'data' && item.expanded && (React.createElement(\"tr\", { key: absoluteIndex(index) * 2 + 1, className: isAlt ? 'k-detail-row k-alt' : 'k-detail-row', style: { visibility: hidden(index) ? 'hidden' : '' } },\n _this.props.group && _this.props.group.map(function (group, idx) {\n return (React.createElement(GridGroupCell, { dataIndex: item.dataIndex, field: group.field, dataItem: item.dataItem, key: idx, style: {} }));\n }),\n _this.props.expandField && React.createElement(\"td\", { className: \"k-hierarchy-cell\" }),\n React.createElement(\"td\", { className: \"k-detail-cell\", colSpan: (_this._columns.filter(function (c) { return !c.children.length; }).length\n - (_this.props.expandField ? 1 : 0)\n - (_this.props.group ? _this.props.group.length : 0)) || 1 },\n React.createElement(_this.props.detail, { dataItem: item.dataItem }))))\n ];\n }) || (React.createElement(\"tr\", { className: \"k-grid-norecords\" },\n React.createElement(\"td\", { colSpan: this._columns.filter(function (c) { return !c.children.length; }).length }, noRecords.length ? noRecords : React.createElement(GridNoRecords, null))));\n var pager = this.props.pageable && (React.createElement(Pager, { pageChange: this.pageChange, total: total, skip: this.vs.propsSkip || 0, pageSize: (this.props.take !== undefined ? this.props.take : this.props.pageSize) || 10, settings: this.props.pageable }));\n var sorted = function (field) {\n return _this.props.sort && _this.props.sort.filter(function (descriptor) { return descriptor.field === field; }).length > 0;\n };\n var colGroups = (React.createElement(\"colgroup\", { ref: function (c) { _this.columnResize.colGroupMain = c; } }, columnsWithColGroup.map(function (column, index) { return (React.createElement(\"col\", { key: index.toString(), className: sorted(column.field) ? 'k-sorted' : undefined, width: column.width !== undefined ?\n Math.floor(parseFloat(column.width.toString())) + 'px' : undefined })); })));\n if (this.props.scrollable === 'none') {\n return (React.createElement(\"div\", { style: this.props.style, className: 'k-widget k-grid ' + (this.props.className || '') },\n toolbar,\n groupingPanel,\n React.createElement(\"table\", { ref: function (table) {\n _this.vs.table = table;\n _this.resetTableWidth();\n } },\n colGroups,\n header,\n React.createElement(\"tbody\", null, body),\n footer),\n pager,\n clues));\n }\n var wrapperStyle = this.props.style || {};\n if (this.props.scrollable === 'virtual') {\n // Set the default height for vs if not existing.\n if (!wrapperStyle.height) {\n wrapperStyle = Object.assign({}, wrapperStyle, { height: '450px' });\n }\n }\n return (React.createElement(\"div\", { style: wrapperStyle, className: 'k-widget k-grid' +\n ((this.props.scrollable === 'virtual' ? ' k-grid-virtual ' : ' ') +\n (this.props.className || '')), ref: function () {\n _this.resetTableWidth();\n } },\n toolbar,\n groupingPanel,\n header,\n React.createElement(\"div\", { className: \"k-grid-container\" },\n React.createElement(\"div\", { ref: function (container) { _this.vs.container = container; }, className: \"k-grid-content k-virtual-content\", onScroll: this.scrollHandler },\n React.createElement(\"div\", { style: { 'position': 'relative' } },\n React.createElement(\"table\", { tabIndex: -1, className: 'k-grid-table', ref: function (table) { return _this.vs.table = table; } },\n colGroups,\n React.createElement(\"tbody\", { ref: function (tableBody) { _this.vs.tableBody = tableBody; } }, body))),\n React.createElement(\"div\", { className: \"k-height-container\" },\n React.createElement(\"div\", { style: this.props.scrollable === 'virtual' ?\n { 'height': (this.vs.containerHeight) + 'px' } : {} })))),\n footer,\n pager,\n clues));\n };\n Grid.prototype.selectionChange = function (event, dataItem) {\n if (this.props.onSelectionChange) {\n this.props.onSelectionChange.call(undefined, __assign({}, this.getArguments(event.syntheticEvent), { dataItem: dataItem }));\n }\n };\n Grid.prototype.raiseDataEvent = function (handler, data, moreData, syntheticEvent) {\n var dataStateChange = this.props.onDataStateChange;\n if (handler) {\n handler.call(undefined, __assign({}, this.getArguments(syntheticEvent), data));\n }\n else if (dataStateChange) {\n dataStateChange.call(undefined, __assign({}, this.getArguments(syntheticEvent), { data: __assign({}, this.getDataState(), moreData), dataState: __assign({}, this.getDataState(), moreData) }));\n }\n };\n Grid.prototype.columnReorder = function (prev, next, nativeEvent) {\n var _this = this;\n var _a;\n var depth = this._columns[prev].depth;\n var end = function (index) {\n do {\n index++;\n } while (index < _this._columns.length && _this._columns[index].depth > depth);\n return index;\n };\n var spliced = this._columns.splice(prev, end(prev) - prev);\n (_a = this._columns).splice.apply(_a, [prev < next ? end(next - spliced.length) : next, 0].concat(spliced));\n this._columns.filter(function (q) { return q.declarationIndex >= 0; }).forEach(function (c, i) { return c.orderIndex = i; });\n var eventColumnProps = this.columns;\n this.forceUpdate();\n if (this.props.onColumnReorder) {\n this.props.onColumnReorder.call(undefined, {\n target: this,\n columns: eventColumnProps,\n nativeEvent: nativeEvent\n });\n }\n };\n Grid.prototype.groupReorder = function (prevIndex, nextIndex, nativeEvent) {\n if (this.props.group === undefined) {\n return;\n }\n var group = this.props.group.slice();\n group.splice.apply(group, [nextIndex, 0].concat(group.splice(prevIndex, 1)));\n this.groupChange(group, nativeEvent);\n };\n Grid.prototype.columnToGroup = function (columnIndex, groupIndex, nativeEvent) {\n var field = this._columns[columnIndex].field;\n if (!field) {\n return;\n }\n var group = (this.props.group || []).slice();\n group.splice(groupIndex, 0, { field: field });\n this.groupChange(group, nativeEvent);\n };\n Grid.prototype.resetTableWidth = function () {\n var totalWidth = 0;\n if (!this.columnResize.colGroupMain) {\n return;\n }\n var colElements = this.columnResize.colGroupMain.children;\n for (var i = 0; i < colElements.length; i++) {\n var width = colElements[i].width;\n if (!width) {\n return;\n }\n totalWidth += parseFloat(width.toString());\n }\n totalWidth = Math.round(totalWidth);\n if (this._header) {\n this._header.setWidth(totalWidth);\n }\n if (this._footer) {\n this._footer.setWidth(totalWidth);\n }\n if (this.vs.table) {\n this.vs.table.style.width = totalWidth + 'px';\n }\n };\n Grid.prototype.onResize = function (index, newWidth, oldWidth, nativeEvent, end) {\n this.resetTableWidth();\n if (this.props.onColumnResize) {\n this.props.onColumnResize.call(undefined, {\n columns: this.columns,\n index: index,\n nativeEvent: nativeEvent,\n newWidth: newWidth,\n oldWidth: oldWidth,\n end: end,\n target: this\n });\n }\n };\n Grid.prototype.initColumns = function (columnElements, groupCount) {\n var _this = this;\n this._columns = readColumns(columnElements, this.columns);\n if (this._columns.length === 0) {\n this._columns = autoGenerateColumns(this.props.data, this.props.group, this.props.expandField);\n }\n if (this.props.selectedField) {\n this._columns.filter(function (c) { return c.field === _this.props.selectedField; }).forEach(function (c) {\n c.width = c.width || '50px';\n c.cell = c.cell || GridSelectionCell;\n c.headerCell = c.headerCell || GridHeaderSelectionCell;\n });\n }\n var defaultServiceProps = {\n resizable: true,\n width: '32px',\n title: ' ',\n declarationIndex: -1,\n orderIndex: -1,\n children: [],\n parentIndex: -1,\n depth: 0,\n colSpan: 0,\n rowSpan: 0,\n left: 0,\n right: 0,\n index: 0,\n rightBorder: false\n };\n var columnIndexOffset = 0;\n if (this.props.expandField && (this.props.onExpandChange) && this.props.detail) {\n this._columns.unshift(__assign({}, defaultServiceProps, { cell: GridHierarchyCell, field: this.props.expandField, headerClassName: 'k-hierarchy-cell k-header' }));\n columnIndexOffset++;\n }\n for (var i = 0; i < groupCount; i++) {\n this._columns.unshift(__assign({}, defaultServiceProps, { cell: GridGroupCell, field: 'value' }));\n columnIndexOffset++;\n }\n this._columns.slice(columnIndexOffset).forEach(function (c) { return c.parentIndex >= 0 && (c.parentIndex += columnIndexOffset); });\n this._columnsMap = mapColumns(this._columns);\n this.columnResize.columns = this._columns;\n this.dragLogic.columns = this._columns;\n };\n Grid.prototype.getDataState = function () {\n return {\n filter: this.props.filter,\n sort: this.props.sort,\n skip: this.props.skip,\n take: (this.props.take !== undefined ? this.props.take : this.props.pageSize),\n group: this.props.group\n };\n };\n Grid.prototype.getArguments = function (syntheticEvent) {\n return {\n nativeEvent: syntheticEvent && syntheticEvent.nativeEvent,\n syntheticEvent: syntheticEvent,\n target: this\n };\n };\n /**\n * @hidden\n */\n Grid.displayName = 'KendoReactGrid';\n /**\n * @hidden\n */\n Grid.defaultProps = {\n // never use this\n };\n /**\n * @hidden\n */\n Grid.propTypes = {\n data: PropTypes.oneOfType([\n PropTypes.array,\n PropTypes.shape({\n data: PropTypes.array,\n total: PropTypes.number\n })\n ]),\n sortable: PropTypes.oneOfType([\n PropTypes.bool,\n PropTypes.shape({\n mode: PropTypes.oneOf(['single', 'multiple']),\n allowUnsort: PropTypes.bool\n })\n ]),\n onSortChange: PropTypes.func,\n sort: PropTypes.array,\n filterable: PropTypes.bool,\n filter: PropTypes.any,\n onFilterChange: PropTypes.func,\n pageable: PropTypes.oneOfType([\n PropTypes.bool,\n PropTypes.shape({\n buttonCount: PropTypes.number,\n info: PropTypes.bool,\n type: PropTypes.oneOf(['numeric', 'input']),\n pageSizes: PropTypes.oneOfType([PropTypes.bool, PropTypes.arrayOf(PropTypes.number)]),\n previousNext: PropTypes.bool\n })\n ]),\n pageSize: PropTypes.number,\n onPageChange: PropTypes.func,\n total: PropTypes.number,\n skip: PropTypes.number,\n take: PropTypes.number,\n onExpandChange: PropTypes.func,\n expandField: PropTypes.string,\n selectedField: PropTypes.string,\n onSelectionChange: PropTypes.func,\n onHeaderSelectionChange: PropTypes.func,\n resizable: PropTypes.bool,\n reorderable: PropTypes.bool,\n group: PropTypes.any,\n groupable: PropTypes.oneOfType([\n PropTypes.bool,\n PropTypes.shape({\n enabled: PropTypes.bool,\n footer: PropTypes.oneOf(['always', 'visible', 'none'])\n })\n ]),\n onGroupChange: PropTypes.func,\n onRowClick: PropTypes.func,\n onRowDoubleClick: PropTypes.func,\n onItemChange: PropTypes.func,\n editField: PropTypes.string,\n scrollable: PropTypes.oneOf(['none', 'scrollable', 'virtual']),\n rowHeight: PropTypes.number,\n detail: PropTypes.any,\n style: PropTypes.object,\n onDataStateChange: PropTypes.func,\n onColumnResize: PropTypes.func,\n onColumnReorder: PropTypes.func\n };\n return Grid;\n}(React.Component));\nexport { Grid };\n//# sourceMappingURL=Grid.js.map","/**\n * @hidden\n */\nexport function tableColumnsVirtualization(args) {\n var enabled = args.enabled, _a = args.columns, columns = _a === void 0 ? [] : _a, tableViewPortWidth = args.tableViewPortWidth, scrollLeft = args.scrollLeft;\n var colSpans = columns.map(function () { return 1; });\n var hiddenColumns = columns.map(function () { return false; });\n if (!enabled) {\n return { colSpans: colSpans, hiddenColumns: hiddenColumns };\n }\n var widths = columns.map(function (c) { return parseFloat((c.width || '').toString()) || 10; });\n var widthOfHiddenColumns = 0;\n for (var i = 0; i < columns.length; i++) {\n if (columns[i].locked) {\n continue;\n }\n var considerNext = (i < widths.length - 1) ? widths[i + 1] : 0;\n if (widthOfHiddenColumns + widths[i] + considerNext < scrollLeft) {\n hiddenColumns[i] = true;\n widthOfHiddenColumns += widths[i];\n }\n else {\n break;\n }\n }\n var totalWidth = widths.reduce(function (acc, current) { return acc + current; }, 0);\n widthOfHiddenColumns = 0;\n for (var i = columns.length - 1; i >= 0; i--) {\n if (columns[i].locked) {\n continue;\n }\n if (widthOfHiddenColumns + 2 * widths[i] < totalWidth - tableViewPortWidth - scrollLeft) {\n hiddenColumns[i] = true;\n widthOfHiddenColumns += widths[i];\n }\n else {\n break;\n }\n }\n var hiddenCols = hiddenColumns.slice();\n var hidden = function (value) { return value; };\n var lastVisible = hiddenCols.lastIndexOf(false);\n var anyHidden = hiddenCols.some(hidden);\n var allHidden = hiddenCols.every(hidden);\n var hiddenSeqLength;\n var updateIndex;\n while (anyHidden && hiddenCols.length && (lastVisible !== -1 || allHidden)) {\n if (lastVisible < hiddenCols.length - 1) {\n hiddenSeqLength = allHidden ? hiddenCols.length : hiddenCols.length - lastVisible - 1;\n updateIndex = hiddenCols.length - hiddenSeqLength;\n if (updateIndex === 0) {\n updateIndex = hiddenSeqLength - 1;\n }\n hiddenColumns[updateIndex] = false;\n colSpans[updateIndex] = hiddenSeqLength;\n hiddenCols.splice(lastVisible + 1, hiddenSeqLength);\n }\n while (hiddenCols.length && !hiddenCols[hiddenCols.length - 1]) {\n hiddenCols.pop();\n }\n lastVisible = hiddenCols.lastIndexOf(false);\n anyHidden = hiddenCols.some(hidden);\n allHidden = hiddenCols.every(hidden);\n }\n return { colSpans: colSpans, hiddenColumns: hiddenColumns };\n}\n//# sourceMappingURL=columns.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\n/**\n * The GridColumnMenuItem component that is used inside the Grid ColumnMenu.\n */\nvar GridColumnMenuItem = /** @class */ (function (_super) {\n __extends(GridColumnMenuItem, _super);\n function GridColumnMenuItem() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.onClick = function (e) {\n if (_this.props.onClick) {\n _this.props.onClick(e);\n }\n };\n return _this;\n }\n /**\n * @hidden\n */\n GridColumnMenuItem.prototype.render = function () {\n var _a = this.props, title = _a.title, iconClass = _a.iconClass, selected = _a.selected;\n return (React.createElement(\"div\", { onClick: this.onClick, className: \"k-columnmenu-item \" + (selected ? 'k-state-selected' : '') },\n iconClass && React.createElement(\"span\", { className: \"k-icon \" + iconClass }),\n title));\n };\n return GridColumnMenuItem;\n}(React.Component));\nexport { GridColumnMenuItem };\n//# sourceMappingURL=GridColumnMenuItem.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\n/**\n * The GridColumnMenuItemGroup that will be used inside the Grid ColumnMenu.\n */\nvar GridColumnMenuItemGroup = /** @class */ (function (_super) {\n __extends(GridColumnMenuItemGroup, _super);\n function GridColumnMenuItemGroup() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @hidden\n */\n GridColumnMenuItemGroup.prototype.render = function () {\n var children = this.props.children;\n return (React.createElement(\"div\", { className: \"k-columnmenu-item-wrapper\" }, children));\n };\n return GridColumnMenuItemGroup;\n}(React.Component));\nexport { GridColumnMenuItemGroup };\n//# sourceMappingURL=GridColumnMenuItemGroup.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport { GridColumnMenuItem } from './GridColumnMenuItem';\nimport { GridColumnMenuItemGroup } from './GridColumnMenuItemGroup';\nimport { normalize } from '../interfaces/GridSortSettings';\nimport { provideLocalizationService, registerForIntl, registerForLocalization } from '@progress/kendo-react-intl';\nimport { messages, sortAscending, sortDescending } from '../messages';\n/**\n * @hidden\n */\nvar ASC_DIR = 'asc';\n/**\n * @hidden\n */\nvar DESC_DIR = 'desc';\n/**\n * @hidden\n */\nvar sortSeqMap = {\n true: {\n 'asc': { 'asc': '', 'desc': 'desc' },\n 'desc': { 'asc': 'asc', 'desc': '' },\n '': { 'asc': 'asc', 'desc': 'desc' }\n },\n false: {\n 'asc': { 'asc': 'asc', 'desc': 'desc' },\n 'desc': { 'asc': 'asc', 'desc': 'desc' },\n '': { 'asc': 'asc', 'desc': 'desc' }\n }\n};\n/**\n * @hidden\n */\nvar sortIndex = function (field, sort) {\n if (!sort) {\n return -1;\n }\n return sort.findIndex(function (s) { return s.field === field; });\n};\n/**\n * @hidden\n */\nvar sortedAsc = function (sortedIndex, sort) {\n return !!(sort && sortedIndex > -1 && sort[sortedIndex].dir === ASC_DIR);\n};\n/**\n * @hidden\n */\nvar sortedDesc = function (sortedIndex, sort) {\n return !!(sort && sortedIndex > -1 && sort[sortedIndex].dir === DESC_DIR);\n};\n/**\n * @example\n * ```jsx-no-run\n * class ColumnMenu extends React.Component {\n * render() {\n * return (\n *
    \n * \n *
    );\n * }\n * }\n *\n * class App extends React.PureComponent {\n * constructor(props) {\n * super(props);\n *\n * this.state = this.createAppState({\n * take: 10,\n * skip: 0\n * });\n * }\n *\n * createAppState(dataState) {\n * return {\n * result: process(products.slice(0), dataState),\n * dataState: dataState\n * };\n * }\n *\n * dataStateChange = (event) => {\n * this.setState(this.createAppState(event.data));\n * }\n *\n * render() {\n * return (\n *
    \n * \n * \n * \n * \n *
    \n *
    \n * );\n * }\n * }\n *\n * ReactDOM.render(, document.querySelector('my-app'));\n * ```\n */\nvar GridColumnMenuSort = /** @class */ (function (_super) {\n __extends(GridColumnMenuSort, _super);\n function GridColumnMenuSort() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /**\n * @hidden\n */\n _this.onAscClick = function (e) {\n _this.onSort(e, ASC_DIR);\n if (_this.props.onCloseMenu) {\n _this.props.onCloseMenu();\n }\n };\n /**\n * @hidden\n */\n _this.onDescClick = function (e) {\n _this.onSort(e, DESC_DIR);\n if (_this.props.onCloseMenu) {\n _this.props.onCloseMenu();\n }\n };\n return _this;\n }\n /**\n * @hidden\n */\n GridColumnMenuSort.prototype.onSort = function (e, selectedDir) {\n e.preventDefault();\n if (!this.props.onSortChange) {\n return;\n }\n var _a = this.props, column = _a.column, sortable = _a.sortable, sort = _a.sort;\n var _b = normalize(sortable || false, false), allowUnsort = _b.allowUnsort, mode = _b.mode;\n var oldDescriptor = (sort || []).filter(function (d) { return d.field === column.field; })[0];\n var dir = sortSeqMap[allowUnsort][oldDescriptor && oldDescriptor.dir || ''][selectedDir];\n var newDescriptor = (mode === 'single') ?\n [] : (this.props.sort || []).filter(function (d) { return d.field !== column.field; });\n if (dir !== '' && column.field) {\n newDescriptor.push({ field: column.field, dir: dir });\n }\n this.props.onSortChange(newDescriptor, e);\n };\n /**\n * @hidden\n */\n GridColumnMenuSort.prototype.render = function () {\n var _a = this.props, sort = _a.sort, column = _a.column;\n var currentSortIndex = sortIndex(column.field, sort);\n var localizationService = provideLocalizationService(this);\n return (React.createElement(GridColumnMenuItemGroup, null,\n React.createElement(GridColumnMenuItem, { title: localizationService.toLanguageString(sortAscending, messages[sortAscending]), iconClass: 'k-i-sort-asc-sm', selected: sortedAsc(currentSortIndex, sort), onClick: this.onAscClick }),\n React.createElement(GridColumnMenuItem, { title: localizationService.toLanguageString(sortDescending, messages[sortDescending]), iconClass: 'k-i-sort-desc-sm', selected: sortedDesc(currentSortIndex, sort), onClick: this.onDescClick })));\n };\n // tslint:disable:max-line-length\n /**\n * Can be used to check if sorting is applied to a specific field ([see example]({% slug column_menu_grid %}#toc-styling-the-column-menu-icon)). Useful for creating active sort indicators.\n */\n // tslint:enable:max-line-length\n GridColumnMenuSort.active = function (field, sort) {\n var currentSortIndex = sortIndex(field, sort);\n return sortedDesc(currentSortIndex, sort) || sortedAsc(currentSortIndex, sort);\n };\n return GridColumnMenuSort;\n}(React.Component));\nexport { GridColumnMenuSort };\nregisterForIntl(GridColumnMenuSort);\nregisterForLocalization(GridColumnMenuSort);\n//# sourceMappingURL=GridColumnMenuSort.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport { Reveal } from '@progress/kendo-react-animation';\n/**\n * The GridColumnMenuItemContent that will be used inside the Grid ColumnMenu.\n */\nvar GridColumnMenuItemContent = /** @class */ (function (_super) {\n __extends(GridColumnMenuItemContent, _super);\n function GridColumnMenuItemContent() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @hidden\n */\n GridColumnMenuItemContent.prototype.render = function () {\n return (React.createElement(\"div\", { className: 'k-columnmenu-item-content' },\n React.createElement(Reveal, { style: { position: 'relative', display: 'block' } }, this.props.show ? this.props.children : null)));\n };\n return GridColumnMenuItemContent;\n}(React.Component));\nexport { GridColumnMenuItemContent };\n//# sourceMappingURL=GridColumnMenuItemContent.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport { DropDownList } from '@progress/kendo-react-dropdowns';\nimport { NumericTextBox } from '@progress/kendo-react-inputs';\nimport { DatePicker } from '@progress/kendo-react-dateinputs';\nimport { cellBoolDropdownChange, cellInputChange, cellOperatorChange } from '../filterCommon';\n/**\n * @hidden\n */\nvar GridColumnMenuFilterCell = /** @class */ (function (_super) {\n __extends(GridColumnMenuFilterCell, _super);\n function GridColumnMenuFilterCell(props) {\n var _this = _super.call(this, props) || this;\n _this.renderOperatorEditor = function () {\n if (_this.props.filterType === 'boolean') {\n return;\n }\n var value = _this.props.operators.find(function (item) { return item.operator === _this.props.operator; }) || null;\n return (React.createElement(DropDownList, { value: value, onChange: _this.operatorChange, data: _this.props.operators, textField: \"text\" }));\n };\n _this.inputChange = _this.inputChange.bind(_this);\n _this.operatorChange = _this.operatorChange.bind(_this);\n _this.boolDropdownChange = _this.boolDropdownChange.bind(_this);\n return _this;\n }\n /**\n * @hidden\n */\n GridColumnMenuFilterCell.prototype.render = function () {\n return (React.createElement(\"div\", null,\n this.renderOperatorEditor(),\n this.filterComponent(this.props.filterType, this.props.value, this.props.booleanValues)));\n };\n GridColumnMenuFilterCell.prototype.inputChange = function (value, e) {\n cellInputChange(value, e, this.props);\n };\n GridColumnMenuFilterCell.prototype.operatorChange = function (event) {\n cellOperatorChange(event, this.props.value, this.props.onChange);\n };\n GridColumnMenuFilterCell.prototype.boolDropdownChange = function (event) {\n cellBoolDropdownChange(event, this.props.onChange);\n };\n GridColumnMenuFilterCell.prototype.filterComponent = function (filterType, value, booleanValues) {\n var _this = this;\n switch (filterType) {\n case 'numeric':\n return (React.createElement(NumericTextBox, { value: value, onChange: function (e) { _this.inputChange(e.value, e.syntheticEvent); } }));\n case 'date':\n return (React.createElement(DatePicker, { value: value, onChange: function (e) { _this.inputChange(e.value, e.syntheticEvent); } }));\n case 'boolean':\n var noFilterSet_1 = function (filter) { return filter === null || filter === undefined; };\n return (React.createElement(DropDownList, { onChange: this.boolDropdownChange, value: booleanValues.find(function (item) { return item.operator === (noFilterSet_1(value) ? '' : value); }), data: booleanValues, textField: \"text\" }));\n default: return (React.createElement(\"input\", { className: \"k-textbox\", value: value || '', onChange: function (e) { _this.inputChange(e.target.value, e); } }));\n }\n };\n return GridColumnMenuFilterCell;\n}(React.Component));\nexport { GridColumnMenuFilterCell };\n//# sourceMappingURL=GridColumnMenuFilterCell.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport { GridColumnMenuFilterCell } from './GridColumnMenuFilterCell';\nimport { DropDownList } from '@progress/kendo-react-dropdowns';\n/**\n * @hidden\n */\nvar GridColumnMenuFilterUI = /** @class */ (function (_super) {\n __extends(GridColumnMenuFilterUI, _super);\n function GridColumnMenuFilterUI() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n GridColumnMenuFilterUI.prototype.render = function () {\n var _a = this.props, firstFilterProps = _a.firstFilterProps, hideSecondFilter = _a.hideSecondFilter, secondFilterProps = _a.secondFilterProps, logicData = _a.logicData, logicValue = _a.logicValue, onLogicChange = _a.onLogicChange;\n return (React.createElement(\"div\", null,\n React.createElement(GridColumnMenuFilterCell, __assign({}, firstFilterProps)),\n !hideSecondFilter && (React.createElement(\"div\", null,\n React.createElement(DropDownList, { data: logicData, value: logicValue, onChange: onLogicChange, className: 'k-filter-and', textField: \"text\" }),\n React.createElement(GridColumnMenuFilterCell, __assign({}, secondFilterProps))))));\n };\n return GridColumnMenuFilterUI;\n}(React.Component));\nexport { GridColumnMenuFilterUI };\n//# sourceMappingURL=GridColumnMenuFilterUI.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport { isCompositeFilterDescriptor } from '@progress/kendo-data-query';\nimport { GridColumnMenuItem } from './GridColumnMenuItem';\nimport { GridColumnMenuItemGroup } from './GridColumnMenuItemGroup';\nimport { GridColumnMenuItemContent } from './GridColumnMenuItemContent';\nimport { provideLocalizationService, registerForLocalization } from '@progress/kendo-react-intl';\nimport { operatorMap, getDefaultOperator, filterLogicList, defaultHideSecondFilter, booleanFilterValues, getFilterType } from '../filterCommon';\nimport { messages, filterClearButton, filterSubmitButton, filterTitle } from '../messages';\nimport { GridColumnMenuFilterUI } from './GridColumnMenuFilterUI';\n/**\n * @hidden\n */\nexport var rootFilterOrDefault = function (rootFilter) {\n return (rootFilter || { filters: [], logic: 'and' });\n};\n/**\n * @hidden\n */\nexport var filterGroupByField = function (field, filter) {\n var rootFilter = rootFilterOrDefault(filter);\n var compositeFilters = rootFilter.filters\n .filter(function (f) {\n if (isCompositeFilterDescriptor(f)) {\n return f.filters &&\n f.filters.length &&\n f.filters.length <= 2 &&\n !f.filters.find(function (nf) { return isCompositeFilterDescriptor(nf) || nf.field !== field; });\n }\n return false;\n });\n return compositeFilters[0] || null;\n};\n/**\n * @example\n * ```jsx-no-run\n * class TextColumnMenu extends React.Component {\n * render() {\n * return (\n *
    \n * \n * \n *
    );\n * }\n * }\n *\n * class App extends React.PureComponent {\n * constructor(props) {\n * super(props);\n *\n * this.state = this.createAppState({\n * take: 10,\n * skip: 0\n * });\n * }\n *\n * createAppState(dataState) {\n * return {\n * result: process(products.slice(0), dataState),\n * dataState: dataState\n * };\n * }\n *\n * dataStateChange = (event) => {\n * this.setState(this.createAppState(event.data));\n * }\n *\n * render() {\n * return (\n *
    \n * \n * \n * \n * \n *
    \n *
    \n * );\n * }\n * }\n *\n * ReactDOM.render(, document.querySelector('my-app'));\n * ```\n */\nvar GridColumnMenuFilter = /** @class */ (function (_super) {\n __extends(GridColumnMenuFilter, _super);\n function GridColumnMenuFilter(props) {\n var _this = _super.call(this, props) || this;\n /**\n * @hidden\n */\n _this.isControlled = function () { return _this.props.expanded !== undefined; };\n /**\n * @hidden\n */\n _this.onFilterExpand = function () {\n var isControlled = _this.isControlled();\n var nextValue = !(isControlled ? _this.props.expanded : _this.state.expanded);\n if (_this.props.onExpandChange) {\n _this.props.onExpandChange(nextValue);\n }\n if (!isControlled) {\n _this.setState({\n expanded: nextValue\n });\n }\n };\n /**\n * @hidden\n */\n _this.firstFilterChange = function (e) {\n _this.filterChange(0, e);\n };\n /**\n * @hidden\n */\n _this.secondFilterChange = function (e) {\n _this.filterChange(1, e);\n };\n /**\n * @hidden\n */\n _this.logicChange = function (e) {\n _this.setState({\n filterGroup: __assign({}, _this.state.filterGroup, { logic: e.target.value.operator })\n });\n };\n /**\n * @hidden\n */\n _this.clear = function (e) {\n e.preventDefault();\n if (!_this.props.onFilterChange) {\n return;\n }\n var field = _this.props.column.field;\n var rootFilter = rootFilterOrDefault(_this.props.filter);\n var filterGroup = filterGroupByField(field, _this.props.filter);\n var rootFilters = rootFilter.filters.filter(function (f) { return f !== filterGroup; });\n if (!rootFilters.length) {\n _this.props.onFilterChange(null, e);\n }\n else {\n _this.props.onFilterChange(__assign({}, rootFilter, { filters: rootFilters }), e);\n }\n if (_this.props.onCloseMenu) {\n _this.props.onCloseMenu();\n }\n };\n /**\n * @hidden\n */\n _this.currentFilterGroup = function () {\n return __assign({}, _this.state.filterGroup, { filters: _this.state\n .filterGroup\n .filters\n .filter(function (nf) {\n return (nf.value !== undefined && nf.value !== null && nf.value !== '') ||\n (nf.value === null && nf.operator);\n }) });\n };\n /**\n * @hidden\n */\n _this.submit = function (e) {\n e.preventDefault();\n if (!_this.props.onFilterChange) {\n return;\n }\n var field = _this.props.column.field;\n var rootFilter = rootFilterOrDefault(_this.props.filter);\n var filterGroup = filterGroupByField(field, _this.props.filter);\n var currentFilterGroup = _this.currentFilterGroup();\n var updatedFilter = null;\n if (filterGroup && currentFilterGroup.filters.length > 0) {\n var rootFilters = rootFilter.filters.map(function (f) {\n if (f === filterGroup) {\n return currentFilterGroup;\n }\n return f;\n });\n updatedFilter = __assign({}, rootFilter, { filters: rootFilters });\n }\n else if (currentFilterGroup.filters.length === 0) {\n var rootFilters = rootFilter\n .filters\n .filter(function (f) { return f !== filterGroup; });\n if (rootFilters.length) {\n updatedFilter = __assign({}, rootFilter, { filters: rootFilters });\n }\n }\n else {\n updatedFilter = __assign({}, rootFilter, { filters: rootFilter.filters.concat([currentFilterGroup]) });\n }\n _this.props.onFilterChange(updatedFilter, e);\n if (_this.props.onCloseMenu) {\n _this.props.onCloseMenu();\n }\n };\n var filterGroup;\n if (props.column && props.column.field) {\n var filterType = getFilterType(props.column.filter);\n var defaultOperator = getDefaultOperator(props.filterOperators, filterType);\n filterGroup = filterGroupByField(props.column.field, props.filter);\n filterGroup = filterGroup ? __assign({}, filterGroup, { filters: filterGroup.filters.map(function (f) {\n return __assign({}, f);\n }) }) : {\n logic: 'and',\n filters: [\n { field: props.column.field, operator: defaultOperator },\n { field: props.column.field, operator: defaultOperator }\n ]\n };\n if (filterGroup.filters.filter(function (x) { return x.field === props.column.field; }).length === 1) {\n filterGroup.filters.splice(1, 0, { field: props.column.field, operator: defaultOperator });\n }\n }\n _this.state = {\n expanded: props.expanded || false,\n filterGroup: filterGroup\n };\n return _this;\n }\n /**\n * @hidden\n */\n GridColumnMenuFilter.prototype.removeGroup = function (group, rootFilter) {\n var filters = rootFilter.filters.slice();\n var groupIndex = filters\n .findIndex(function (f) { return f === group; });\n if (groupIndex > -1) {\n filters.splice(groupIndex, 1);\n }\n return __assign({}, rootFilter, { filters: filters });\n };\n /**\n * @hidden\n */\n GridColumnMenuFilter.prototype.insertGroup = function (group, rootFilter) {\n return __assign({}, rootFilter, { filters: [\n group\n ].concat(rootFilter.filters) });\n };\n /**\n * @hidden\n */\n GridColumnMenuFilter.prototype.filterChange = function (filterIndex, e) {\n var filters = this.state.filterGroup.filters.map(function (f, i) {\n if (i === filterIndex) {\n return __assign({}, f, { value: e.value, operator: e.operator });\n }\n return f;\n });\n this.setState({\n filterGroup: __assign({}, this.state.filterGroup, { filters: filters })\n });\n };\n /**\n * @hidden\n */\n GridColumnMenuFilter.prototype.render = function () {\n var _a = this.props, column = _a.column, filterUI = _a.filterUI, hideSecondFilter = _a.hideSecondFilter, filterOperators = _a.filterOperators;\n if (!column || !column.field) {\n return React.createElement(\"div\", null);\n }\n var filterType = getFilterType(column.filter);\n var currentHideSecondFilter = hideSecondFilter !== undefined ?\n hideSecondFilter : defaultHideSecondFilter[filterType];\n var localizationService = provideLocalizationService(this);\n var filters = this.state.filterGroup.filters;\n var currentOperators = operatorMap(filterOperators[filterType], localizationService);\n var booleanValues = operatorMap(booleanFilterValues, localizationService);\n var firstFilterCellProps = {\n field: column.field,\n value: filters[0].value,\n operator: filters[0].operator,\n operators: currentOperators,\n booleanValues: booleanValues,\n onChange: this.firstFilterChange,\n filterType: filterType\n };\n var secondFilterCellProps = {\n field: column.field,\n value: filters[1].value,\n operator: filters[1].operator,\n operators: currentOperators,\n booleanValues: booleanValues,\n onChange: this.secondFilterChange,\n filterType: filterType\n };\n var filterLogic = this.state.filterGroup.logic;\n var logicData = operatorMap(filterLogicList, localizationService);\n var logicProps = {\n value: logicData.find(function (item) { return item.operator === (filterLogic === null ? '' : filterLogic); }),\n onChange: this.logicChange,\n data: logicData\n };\n var FilterUI = filterUI;\n var filterUIProps = {\n firstFilterProps: firstFilterCellProps,\n secondFilterProps: secondFilterCellProps,\n logicData: logicProps.data,\n logicValue: logicProps.value,\n onLogicChange: logicProps.onChange,\n hideSecondFilter: currentHideSecondFilter\n };\n var isFilterValid = this.currentFilterGroup().filters.length !== 0;\n var expandState = this.isControlled() ? this.props.expanded : this.state.expanded;\n return (React.createElement(GridColumnMenuItemGroup, null,\n React.createElement(GridColumnMenuItem, { title: localizationService.toLanguageString(filterTitle, messages[filterTitle]), iconClass: 'k-i-filter', onClick: this.onFilterExpand }),\n React.createElement(GridColumnMenuItemContent, { show: !!expandState },\n React.createElement(\"div\", { className: 'kendo-grid-filter-menu-container' },\n React.createElement(\"form\", { className: 'k-filter-menu k-group k-reset k-state-border-up', onSubmit: this.submit, onReset: this.clear },\n React.createElement(\"div\", { className: 'k-filter-menu-container' },\n FilterUI ?\n React.createElement(FilterUI, __assign({}, filterUIProps)) :\n React.createElement(GridColumnMenuFilterUI, __assign({}, filterUIProps)),\n React.createElement(\"div\", { className: 'k-columnmenu-actions' },\n React.createElement(\"button\", { className: 'k-button', type: 'reset' }, localizationService\n .toLanguageString(filterClearButton, messages[filterClearButton])),\n React.createElement(\"button\", { className: 'k-button k-primary', disabled: !isFilterValid }, localizationService\n .toLanguageString(filterSubmitButton, messages[filterSubmitButton])))))))));\n };\n // tslint:disable:max-line-length\n /**\n * Can be used to check if filtering is applied to a specific field ([see example]({% slug column_menu_grid %}#toc-styling-the-column-menu-icon)). Useful for creating active filter indicators.\n */\n // tslint:enable:max-line-length\n GridColumnMenuFilter.active = function (field, filter) {\n return !!filterGroupByField(field, filter);\n };\n return GridColumnMenuFilter;\n}(React.Component));\nexport { GridColumnMenuFilter };\nregisterForLocalization(GridColumnMenuFilter);\n//# sourceMappingURL=GridColumnMenuFilter.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\n// tslint:disable:max-line-length\n/**\n * Represents the detail row class of the KendoReact Grid. Used to define custom details for each row. Can be applied for building the hierarchy. If `expandField` is set, the details for each row will be visible or hidden depending on the current data item and its `expandField` value.\n *\n * @example\n * ```jsx\n * class CustomGridDetailRow extends GridDetailRow {\n * render() {\n * const detailData = this.props.dataItem.MasterField2;\n * return (\n *
    \n * This is detail template with another grid inside it\n * \n *
    \n * );\n * }\n * }\n *\n * class App extends React.Component {\n * constructor(props) {\n * super(props);\n * this.state = {\n * data: [{MasterField1:'A1', MasterField2: [{DetailField1: 1, DetailField2: 2}]},\n * {MasterField1:'B1', MasterField2: [{DetailField1: 3, DetailField2: 4}]},\n * {MasterField1:'C1', MasterField2: [{DetailField1: 5, DetailField2: 6}]}]\n * };\n * }\n * render() {\n * return (\n * \n * \n * \n * );\n * }\n * }\n * ReactDOM.render(\n * ,\n * document.querySelector('my-app')\n * );\n * ```\n */\n// tslint:enable:max-line-length\nvar GridDetailRow = /** @class */ (function (_super) {\n __extends(GridDetailRow, _super);\n function GridDetailRow() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @hidden\n */\n GridDetailRow.prototype.render = function () {\n return null;\n };\n return GridDetailRow;\n}(React.Component));\nexport { GridDetailRow };\n//# sourceMappingURL=GridDetailRow.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\n/**\n * Represents the GridToolbar component.\n *\n * @example\n * ```jsx\n * class App extends React.Component {\n * constructor(props) {\n * super(props);\n * this.state = {\n * data: [{'Column1':'A1', 'Column2':'A2'},\n * {'Column1':'B1', 'Column2':'B2'},\n * {'Column1':'C1', 'Column2':'C2'}]\n * };\n * this.customClick = this.customClick.bind(this);\n * }\n *\n * customClick() {\n * alert(\"Custom handler in custom toolbar\");\n * }\n * render() {\n * return (\n * \n * \n * Click\n * \n * \n * \n * );\n * }\n * }\n * ReactDOM.render(\n * ,\n * document.querySelector('my-app')\n * );\n * ```\n */\nvar GridToolbar = /** @class */ (function (_super) {\n __extends(GridToolbar, _super);\n function GridToolbar() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @hidden\n */\n GridToolbar.prototype.render = function () {\n return (React.createElement(\"div\", { className: \"k-header k-grid-toolbar\" }, this.props.children));\n };\n /**\n * @hidden\n */\n GridToolbar.displayName = 'KendoReactGridToolbar';\n return GridToolbar;\n}(React.Component));\nexport { GridToolbar };\n//# sourceMappingURL=GridToolbar.js.map","/**\n * @hidden\n */\nexport var isPresent = function (value) { return value !== null && value !== undefined; };\n/**\n * @hidden\n *\n * Fits the contender number into the specified bounds.\n * If the number is NaN or null, the minimum is returned.\n *\n * @param contender Represents the number you want to fit into the specified bounds.\n * @param min The inclusive lower bound number.\n * @param max The inclusive upper bound number.\n */\nexport var fitIntoBounds = function (contender, min, max) {\n if (!isPresent(contender) || isNaN(contender)) {\n return min;\n }\n return contender <= min ? min : contender >= max ? max : contender;\n};\n//# sourceMappingURL=misc.js.map","\nvar ObserversMixin = {\n extend: function(proto) {\n var this$1 = this;\n\n for (var method in this$1) {\n if (method !== \"extend\") {\n proto[method] = this$1[method];\n }\n }\n },\n\n observers: function() {\n this._observers = this._observers || [];\n return this._observers;\n },\n\n addObserver: function(element) {\n if (!this._observers) {\n this._observers = [ element ];\n } else {\n this._observers.push(element);\n }\n return this;\n },\n\n removeObserver: function(element) {\n var observers = this.observers();\n var index = observers.indexOf(element);\n if (index !== -1) {\n observers.splice(index, 1);\n }\n return this;\n },\n\n trigger: function(methodName, event) {\n var observers = this._observers;\n\n if (observers && !this._suspended) {\n for (var idx = 0; idx < observers.length; idx++) {\n var observer = observers[idx];\n if (observer[methodName]) {\n observer[methodName](event);\n }\n }\n }\n return this;\n },\n\n optionsChange: function(e) {\n if ( e === void 0 ) e = {};\n\n e.element = this;\n this.trigger(\"optionsChange\", e);\n },\n\n geometryChange: function() {\n this.trigger(\"geometryChange\", {\n element: this\n });\n },\n\n suspend: function() {\n this._suspended = (this._suspended || 0) + 1;\n return this;\n },\n\n resume: function() {\n this._suspended = Math.max((this._suspended || 0) - 1, 0);\n return this;\n },\n\n _observerField: function(field, value) {\n if (this[field]) {\n this[field].removeObserver(this);\n }\n this[field] = value;\n value.addObserver(this);\n }\n};\n\nexport default ObserversMixin;","var wnd = typeof window !== \"undefined\" ? window : {};\n\nvar animationFrame = wnd.requestAnimationFrame ||\n wnd.webkitRequestAnimationFrame ||\n wnd.mozRequestAnimationFrame ||\n wnd.oRequestAnimationFrame ||\n wnd.msRequestAnimationFrame ||\n function(callback) { setTimeout(callback, 1000 / 60); };\n\nexport default function animationFrameProxy(callback) {\n animationFrame.call(wnd, callback);\n}\n","var Class = function Class () {};\n\nexport default Class;","var ampRegExp = /&/g;\nvar ltRegExp = //g;\n\nexport default function htmlEncode(value) {\n return String(value).replace(ampRegExp, \"&\").replace(ltRegExp, \"<\").replace(gtRegExp, \">\").replace(quoteRegExp, \""\").replace(aposRegExp, \"'\");\n}","import Class from './class';\n\nvar Observable = (function (Class) {\n function Observable() {\n Class.call(this);\n\n this._events = {};\n }\n\n if ( Class ) Observable.__proto__ = Class;\n Observable.prototype = Object.create( Class && Class.prototype );\n Observable.prototype.constructor = Observable;\n\n Observable.prototype.bind = function bind (eventName, handlers, one) {\n var arguments$1 = arguments;\n var this$1 = this;\n\n var eventNames = getArray(eventName);\n var handlersIsFunction = isFunction(handlers);\n var length = eventNames.length;\n\n if (handlers === undefined) {\n for (var field in eventName) {\n this$1.bind(field, eventName[field]);\n }\n return this;\n }\n\n var loop = function ( idx ) {\n var eventName$1 = eventNames[idx];\n\n var handler = handlersIsFunction ? handlers : handlers[eventName$1];\n\n if (handler) {\n if (one) {\n var original = handler;\n handler = function () { // eslint-disable-line no-loop-func\n this$1.unbind(eventName$1, handler);\n original.apply(this$1, arguments$1);\n };\n handler.original = original;\n }\n var events = this$1._events[eventName$1] = this$1._events[eventName$1] || [];\n events.push(handler);\n }\n };\n\n for (var idx = 0; idx < length; idx++) loop( idx );\n\n return this;\n };\n\n Observable.prototype.one = function one (eventNames, handlers) {\n return this.bind(eventNames, handlers, true);\n };\n\n Observable.prototype.first = function first (eventName, handlers) {\n var this$1 = this;\n\n var eventNames = getArray(eventName);\n var handlersIsFunction = isFunction(handlers);\n\n for (var idx = 0, length = eventNames.length; idx < length; idx++) {\n var eventName$1 = eventNames[idx];\n\n var handler = handlersIsFunction ? handlers : handlers[eventName$1];\n\n if (handler) {\n var events = this$1._events[eventName$1] = this$1._events[eventName$1] || [];\n events.unshift(handler);\n }\n }\n\n return this;\n };\n\n Observable.prototype.trigger = function trigger (eventName, e) {\n var this$1 = this;\n if ( e === void 0 ) e = {};\n\n var events = this._events[eventName];\n\n if (events) {\n var length = events.length;\n\n e.sender = this;\n e._defaultPrevented = false;\n e.preventDefault = preventDefault;\n e.isDefaultPrevented = isDefaultPrevented;\n\n events = events.slice();\n\n for (var idx = 0; idx < length; idx++) {\n events[idx].call(this$1, e);\n }\n\n return e._defaultPrevented === true;\n }\n\n return false;\n };\n\n Observable.prototype.unbind = function unbind (eventName, handler) {\n var events = this._events[eventName];\n\n if (eventName === undefined) {\n this._events = {};\n } else if (events) {\n if (handler) {\n for (var idx = events.length - 1; idx >= 0; idx--) {\n if (events[idx] === handler || events[idx].original === handler) {\n events.splice(idx, 1);\n }\n }\n } else {\n this._events[eventName] = [];\n }\n }\n\n return this;\n };\n\n return Observable;\n}(Class));\n\nfunction isFunction(value) {\n return typeof value === \"function\";\n}\n\nfunction getArray(value) {\n return typeof value === \"string\" ? [ value ] : value;\n}\n\nfunction preventDefault() {\n this._defaultPrevented = true;\n}\n\nfunction isDefaultPrevented() {\n return this._defaultPrevented === true;\n}\n\nexport default Observable;","var support = {};\n\nif (typeof window !== 'undefined') {\n support.browser = (function(userAgent) {\n var browserRxs = {\n edge: /(edge)[ \\/]([\\w.]+)/i,\n webkit: /(chrome)[ \\/]([\\w.]+)/i,\n safari: /(webkit)[ \\/]([\\w.]+)/i,\n opera: /(opera)(?:.*version|)[ \\/]([\\w.]+)/i,\n msie: /(msie\\s|trident.*? rv:)([\\w.]+)/i,\n mozilla: /(mozilla)(?:.*? rv:([\\w.]+)|)/i\n };\n\n var browser;\n\n for (var agent in browserRxs) {\n if (browserRxs.hasOwnProperty(agent)) {\n var match = userAgent.match(browserRxs[agent]);\n if (match) {\n browser = {};\n browser[agent] = true;\n browser[match[1].toLowerCase().split(\" \")[0].split(\"/\")[0]] = true;\n browser.version = parseInt(document.documentMode || match[2], 10);\n\n break;\n }\n }\n }\n\n return browser;\n\n })(window.navigator.userAgent);\n}\n\nexport default support;\n\n","function now() {\n return new Date().getTime();\n}\n\nexport default function throttle(fn, delay) {\n var lastExecTime = 0;\n var timeout;\n\n if (!delay || delay <= 0) {\n return fn;\n }\n\n var throttled = function() {\n var elapsed = now() - lastExecTime;\n var args = arguments;\n\n var exec = function() {\n fn.apply(null, args);\n lastExecTime = now();\n };\n\n // first execution\n if (!lastExecTime) {\n return exec();\n }\n\n if (timeout) {\n clearTimeout(timeout);\n }\n\n if (elapsed > delay) {\n exec();\n } else {\n timeout = setTimeout(exec, delay - elapsed);\n }\n };\n\n throttled.cancel = function() {\n clearTimeout(timeout);\n };\n\n return throttled;\n}","var namedColors = {\n aliceblue: \"f0f8ff\", antiquewhite: \"faebd7\", aqua: \"00ffff\",\n aquamarine: \"7fffd4\", azure: \"f0ffff\", beige: \"f5f5dc\",\n bisque: \"ffe4c4\", black: \"000000\", blanchedalmond: \"ffebcd\",\n blue: \"0000ff\", blueviolet: \"8a2be2\", brown: \"a52a2a\",\n burlywood: \"deb887\", cadetblue: \"5f9ea0\", chartreuse: \"7fff00\",\n chocolate: \"d2691e\", coral: \"ff7f50\", cornflowerblue: \"6495ed\",\n cornsilk: \"fff8dc\", crimson: \"dc143c\", cyan: \"00ffff\",\n darkblue: \"00008b\", darkcyan: \"008b8b\", darkgoldenrod: \"b8860b\",\n darkgray: \"a9a9a9\", darkgrey: \"a9a9a9\", darkgreen: \"006400\",\n darkkhaki: \"bdb76b\", darkmagenta: \"8b008b\", darkolivegreen: \"556b2f\",\n darkorange: \"ff8c00\", darkorchid: \"9932cc\", darkred: \"8b0000\",\n darksalmon: \"e9967a\", darkseagreen: \"8fbc8f\", darkslateblue: \"483d8b\",\n darkslategray: \"2f4f4f\", darkslategrey: \"2f4f4f\", darkturquoise: \"00ced1\",\n darkviolet: \"9400d3\", deeppink: \"ff1493\", deepskyblue: \"00bfff\",\n dimgray: \"696969\", dimgrey: \"696969\", dodgerblue: \"1e90ff\",\n firebrick: \"b22222\", floralwhite: \"fffaf0\", forestgreen: \"228b22\",\n fuchsia: \"ff00ff\", gainsboro: \"dcdcdc\", ghostwhite: \"f8f8ff\",\n gold: \"ffd700\", goldenrod: \"daa520\", gray: \"808080\",\n grey: \"808080\", green: \"008000\", greenyellow: \"adff2f\",\n honeydew: \"f0fff0\", hotpink: \"ff69b4\", indianred: \"cd5c5c\",\n indigo: \"4b0082\", ivory: \"fffff0\", khaki: \"f0e68c\",\n lavender: \"e6e6fa\", lavenderblush: \"fff0f5\", lawngreen: \"7cfc00\",\n lemonchiffon: \"fffacd\", lightblue: \"add8e6\", lightcoral: \"f08080\",\n lightcyan: \"e0ffff\", lightgoldenrodyellow: \"fafad2\", lightgray: \"d3d3d3\",\n lightgrey: \"d3d3d3\", lightgreen: \"90ee90\", lightpink: \"ffb6c1\",\n lightsalmon: \"ffa07a\", lightseagreen: \"20b2aa\", lightskyblue: \"87cefa\",\n lightslategray: \"778899\", lightslategrey: \"778899\", lightsteelblue: \"b0c4de\",\n lightyellow: \"ffffe0\", lime: \"00ff00\", limegreen: \"32cd32\",\n linen: \"faf0e6\", magenta: \"ff00ff\", maroon: \"800000\",\n mediumaquamarine: \"66cdaa\", mediumblue: \"0000cd\", mediumorchid: \"ba55d3\",\n mediumpurple: \"9370d8\", mediumseagreen: \"3cb371\", mediumslateblue: \"7b68ee\",\n mediumspringgreen: \"00fa9a\", mediumturquoise: \"48d1cc\", mediumvioletred: \"c71585\",\n midnightblue: \"191970\", mintcream: \"f5fffa\", mistyrose: \"ffe4e1\",\n moccasin: \"ffe4b5\", navajowhite: \"ffdead\", navy: \"000080\",\n oldlace: \"fdf5e6\", olive: \"808000\", olivedrab: \"6b8e23\",\n orange: \"ffa500\", orangered: \"ff4500\", orchid: \"da70d6\",\n palegoldenrod: \"eee8aa\", palegreen: \"98fb98\", paleturquoise: \"afeeee\",\n palevioletred: \"d87093\", papayawhip: \"ffefd5\", peachpuff: \"ffdab9\",\n peru: \"cd853f\", pink: \"ffc0cb\", plum: \"dda0dd\",\n powderblue: \"b0e0e6\", purple: \"800080\", red: \"ff0000\",\n rosybrown: \"bc8f8f\", royalblue: \"4169e1\", saddlebrown: \"8b4513\",\n salmon: \"fa8072\", sandybrown: \"f4a460\", seagreen: \"2e8b57\",\n seashell: \"fff5ee\", sienna: \"a0522d\", silver: \"c0c0c0\",\n skyblue: \"87ceeb\", slateblue: \"6a5acd\", slategray: \"708090\",\n slategrey: \"708090\", snow: \"fffafa\", springgreen: \"00ff7f\",\n steelblue: \"4682b4\", tan: \"d2b48c\", teal: \"008080\",\n thistle: \"d8bfd8\", tomato: \"ff6347\", turquoise: \"40e0d0\",\n violet: \"ee82ee\", wheat: \"f5deb3\", white: \"ffffff\",\n whitesmoke: \"f5f5f5\", yellow: \"ffff00\", yellowgreen: \"9acd32\"\n};\n\nexport default namedColors;","import Class from '../class';\nimport support from '../support';\nimport namedColors from './named-colors';\n\nvar browser = support.browser;\n\nvar matchNamedColor = function (color) {\n var colorNames = Object.keys(namedColors);\n colorNames.push(\"transparent\");\n\n var regexp = new RegExp(\"^(\" + colorNames.join(\"|\") + \")(\\\\W|$)\", \"i\");\n matchNamedColor = function (color) { return regexp.exec(color); };\n\n return regexp.exec(color);\n};\n\nvar BaseColor = (function (Class) {\n function BaseColor() { Class.call(this); }\n\n if ( Class ) BaseColor.__proto__ = Class;\n BaseColor.prototype = Object.create( Class && Class.prototype );\n BaseColor.prototype.constructor = BaseColor;\n BaseColor.prototype.toHSV = function toHSV () { return this; };\n\n BaseColor.prototype.toRGB = function toRGB () { return this; };\n\n BaseColor.prototype.toHex = function toHex () { return this.toBytes().toHex(); };\n\n BaseColor.prototype.toBytes = function toBytes () { return this; };\n\n BaseColor.prototype.toCss = function toCss () { return \"#\" + this.toHex(); };\n\n BaseColor.prototype.toCssRgba = function toCssRgba () {\n var rgb = this.toBytes();\n return (\"rgba(\" + (rgb.r) + \", \" + (rgb.g) + \", \" + (rgb.b) + \", \" + (parseFloat((Number(this.a)).toFixed(3))) + \")\");\n };\n\n BaseColor.prototype.toDisplay = function toDisplay () {\n if (browser.msie && browser.version < 9) {\n return this.toCss(); // no RGBA support; does it support any opacity in colors?\n }\n return this.toCssRgba();\n };\n\n BaseColor.prototype.equals = function equals (c) {\n return c === this || c !== null && this.toCssRgba() === parseColor(c).toCssRgba();\n };\n\n BaseColor.prototype.diff = function diff (other) {\n if (other === null) {\n return NaN;\n }\n\n var c1 = this.toBytes();\n var c2 = other.toBytes();\n\n return Math.sqrt(Math.pow((c1.r - c2.r) * 0.30, 2) +\n Math.pow((c1.g - c2.g) * 0.59, 2) +\n Math.pow((c1.b - c2.b) * 0.11, 2));\n };\n\n BaseColor.prototype.clone = function clone () {\n var c = this.toBytes();\n if (c === this) {\n c = new Bytes(c.r, c.g, c.b, c.a);\n }\n\n return c;\n };\n\n return BaseColor;\n}(Class));\n\nvar RGB = (function (BaseColor) {\n function RGB(r, g, b, a) {\n BaseColor.call(this);\n\n this.r = r;\n this.g = g;\n this.b = b;\n this.a = a;\n }\n\n if ( BaseColor ) RGB.__proto__ = BaseColor;\n RGB.prototype = Object.create( BaseColor && BaseColor.prototype );\n RGB.prototype.constructor = RGB;\n\n RGB.prototype.toHSV = function toHSV () {\n var ref = this;\n var r = ref.r;\n var g = ref.g;\n var b = ref.b;\n var min = Math.min(r, g, b);\n var max = Math.max(r, g, b);\n var delta = max - min;\n var v = max;\n var h, s;\n\n if (delta === 0) {\n return new HSV(0, 0, v, this.a);\n }\n\n if (max !== 0) {\n s = delta / max;\n if (r === max) {\n h = (g - b) / delta;\n } else if (g === max) {\n h = 2 + (b - r) / delta;\n } else {\n h = 4 + (r - g) / delta;\n }\n\n h *= 60;\n if (h < 0) {\n h += 360;\n }\n } else {\n s = 0;\n h = -1;\n }\n\n return new HSV(h, s, v, this.a);\n };\n\n RGB.prototype.toHSL = function toHSL () {\n var ref = this;\n var r = ref.r;\n var g = ref.g;\n var b = ref.b;\n var max = Math.max(r, g, b);\n var min = Math.min(r, g, b);\n var h, s, l = (max + min) / 2;\n\n if (max === min) {\n h = s = 0;\n } else {\n var d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n switch (max) {\n case r: h = (g - b) / d + (g < b ? 6 : 0); break;\n case g: h = (b - r) / d + 2; break;\n case b: h = (r - g) / d + 4; break;\n default: break;\n }\n }\n\n return new HSL(h * 60, s * 100, l * 100, this.a);\n };\n\n RGB.prototype.toBytes = function toBytes () {\n return new Bytes(this.r * 255, this.g * 255, this.b * 255, this.a);\n };\n\n return RGB;\n}(BaseColor));\n\nvar Bytes = (function (RGB) {\n function Bytes(r, g, b, a) {\n RGB.call(this, Math.round(r), Math.round(g), Math.round(b), a);\n }\n\n if ( RGB ) Bytes.__proto__ = RGB;\n Bytes.prototype = Object.create( RGB && RGB.prototype );\n Bytes.prototype.constructor = Bytes;\n\n Bytes.prototype.toRGB = function toRGB () {\n return new RGB(this.r / 255, this.g / 255, this.b / 255, this.a);\n };\n\n Bytes.prototype.toHSV = function toHSV () {\n return this.toRGB().toHSV();\n };\n\n Bytes.prototype.toHSL = function toHSL () {\n return this.toRGB().toHSL();\n };\n\n Bytes.prototype.toHex = function toHex () {\n return hex(this.r, 2) + hex(this.g, 2) + hex(this.b, 2);\n };\n\n Bytes.prototype.toBytes = function toBytes () {\n return this;\n };\n\n return Bytes;\n}(RGB));\n\nfunction hex(n, width, pad) {\n if ( pad === void 0 ) pad = \"0\";\n\n var result = n.toString(16);\n while (width > result.length) {\n result = pad + result;\n }\n\n return result;\n}\n\nvar HSV = (function (BaseColor) {\n function HSV(h, s, v, a) {\n BaseColor.call(this);\n\n this.h = h;\n this.s = s;\n this.v = v;\n this.a = a;\n }\n\n if ( BaseColor ) HSV.__proto__ = BaseColor;\n HSV.prototype = Object.create( BaseColor && BaseColor.prototype );\n HSV.prototype.constructor = HSV;\n\n HSV.prototype.toRGB = function toRGB () {\n var ref = this;\n var h = ref.h;\n var s = ref.s;\n var v = ref.v;\n var r, g, b;\n\n if (s === 0) {\n r = g = b = v;\n } else {\n h /= 60;\n\n var i = Math.floor(h);\n var f = h - i;\n var p = v * (1 - s);\n var q = v * (1 - s * f);\n var t = v * (1 - s * (1 - f));\n\n switch (i) {\n case 0: r = v; g = t; b = p; break;\n case 1: r = q; g = v; b = p; break;\n case 2: r = p; g = v; b = t; break;\n case 3: r = p; g = q; b = v; break;\n case 4: r = t; g = p; b = v; break;\n default: r = v; g = p; b = q; break;\n }\n }\n\n return new RGB(r, g, b, this.a);\n };\n\n HSV.prototype.toHSL = function toHSL () {\n return this.toRGB().toHSL();\n };\n\n HSV.prototype.toBytes = function toBytes () {\n return this.toRGB().toBytes();\n };\n\n return HSV;\n}(BaseColor));\n\nvar HSL = (function (BaseColor) {\n function HSL(h, s, l, a) {\n BaseColor.call(this);\n\n this.h = h;\n this.s = s;\n this.l = l;\n this.a = a;\n }\n\n if ( BaseColor ) HSL.__proto__ = BaseColor;\n HSL.prototype = Object.create( BaseColor && BaseColor.prototype );\n HSL.prototype.constructor = HSL;\n\n HSL.prototype.toRGB = function toRGB () {\n var h = this.h / 360;\n var s = this.s / 100;\n var l = this.l / 100;\n var r, g, b;\n\n if (s === 0) {\n r = g = b = l; // achromatic\n } else {\n var q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n var p = 2 * l - q;\n r = hue2rgb(p, q, h + 1 / 3);\n g = hue2rgb(p, q, h);\n b = hue2rgb(p, q, h - 1 / 3);\n }\n\n return new RGB(r, g, b, this.a);\n };\n\n HSL.prototype.toHSV = function toHSV () {\n return this.toRGB().toHSV();\n };\n\n HSL.prototype.toBytes = function toBytes () {\n return this.toRGB().toBytes();\n };\n\n return HSL;\n}(BaseColor));\n\nfunction hue2rgb(p, q, s) {\n var t = s;\n\n if (t < 0) {\n t += 1;\n }\n\n if (t > 1) {\n t -= 1;\n }\n\n if (t < 1 / 6) {\n return p + (q - p) * 6 * t;\n }\n\n if (t < 1 / 2) {\n return q;\n }\n\n if (t < 2 / 3) {\n return p + (q - p) * (2 / 3 - t) * 6;\n }\n\n return p;\n}\n\nexport { RGB, Bytes, HSV, HSL };\n\nexport default function parseColor(value, safe) {\n var m, ret;\n\n if (value == null || value === \"none\") {\n return null;\n }\n\n if (value instanceof BaseColor) {\n return value;\n }\n\n var color = value.toLowerCase();\n if ((m = matchNamedColor(color))) {\n if (m[1] === \"transparent\") {\n color = new RGB(1, 1, 1, 0);\n } else {\n color = parseColor(namedColors[m[1]], safe);\n }\n color.match = [ m[1] ];\n return color;\n }\n if ((m = /^#?([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})\\b/i.exec(color))) {\n ret = new Bytes(parseInt(m[1], 16),\n parseInt(m[2], 16),\n parseInt(m[3], 16), 1);\n } else if ((m = /^#?([0-9a-f])([0-9a-f])([0-9a-f])\\b/i.exec(color))) {\n ret = new Bytes(parseInt(m[1] + m[1], 16),\n parseInt(m[2] + m[2], 16),\n parseInt(m[3] + m[3], 16), 1);\n } else if ((m = /^rgb\\(\\s*([0-9]+)\\s*,\\s*([0-9]+)\\s*,\\s*([0-9]+)\\s*\\)/.exec(color))) {\n ret = new Bytes(parseInt(m[1], 10),\n parseInt(m[2], 10),\n parseInt(m[3], 10), 1);\n } else if ((m = /^rgba\\(\\s*([0-9]+)\\s*,\\s*([0-9]+)\\s*,\\s*([0-9]+)\\s*,\\s*([0-9.]+)\\s*\\)/.exec(color))) {\n ret = new Bytes(parseInt(m[1], 10),\n parseInt(m[2], 10),\n parseInt(m[3], 10), parseFloat(m[4]));\n } else if ((m = /^rgb\\(\\s*([0-9]*\\.?[0-9]+)%\\s*,\\s*([0-9]*\\.?[0-9]+)%\\s*,\\s*([0-9]*\\.?[0-9]+)%\\s*\\)/.exec(color))) {\n ret = new RGB(parseFloat(m[1]) / 100,\n parseFloat(m[2]) / 100,\n parseFloat(m[3]) / 100, 1);\n } else if ((m = /^rgba\\(\\s*([0-9]*\\.?[0-9]+)%\\s*,\\s*([0-9]*\\.?[0-9]+)%\\s*,\\s*([0-9]*\\.?[0-9]+)%\\s*,\\s*([0-9.]+)\\s*\\)/.exec(color))) {\n ret = new RGB(parseFloat(m[1]) / 100,\n parseFloat(m[2]) / 100,\n parseFloat(m[3]) / 100, parseFloat(m[4]));\n }\n\n if (ret) {\n ret.match = m;\n } else if (!safe) {\n throw new Error(\"Cannot parse color: \" + color);\n }\n\n return ret;\n}\n","import Class from '../class';\nimport namedColors from './named-colors';\nimport { Bytes, RGB, HSV, HSL } from './parse-color';\n\nvar DARK_TRESHOLD = 180;\n\nvar Color = (function (Class) {\n function Color(value) {\n var this$1 = this;\n\n Class.call(this);\n\n if (arguments.length === 1) {\n var formats = Color.formats;\n var resolvedColor = this.resolveColor(value);\n\n for (var idx = 0; idx < formats.length; idx++) {\n var formatRegex = formats[idx].re;\n var processor = formats[idx].process;\n var parts = formatRegex.exec(resolvedColor);\n\n if (parts) {\n var channels = processor(parts);\n this$1.r = channels[0];\n this$1.g = channels[1];\n this$1.b = channels[2];\n }\n }\n } else {\n this.r = arguments[0];\n this.g = arguments[1];\n this.b = arguments[2];\n }\n\n this.r = this.normalizeByte(this.r);\n this.g = this.normalizeByte(this.g);\n this.b = this.normalizeByte(this.b);\n }\n\n if ( Class ) Color.__proto__ = Class;\n Color.prototype = Object.create( Class && Class.prototype );\n Color.prototype.constructor = Color;\n\n Color.prototype.toHex = function toHex () {\n var pad = this.padDigit;\n var r = this.r.toString(16);\n var g = this.g.toString(16);\n var b = this.b.toString(16);\n\n return \"#\" + pad(r) + pad(g) + pad(b);\n };\n\n Color.prototype.resolveColor = function resolveColor (value) {\n var color = value || \"black\";\n\n if (color.charAt(0) === \"#\") {\n color = color.substr(1, 6);\n }\n\n color = color.replace(/ /g, \"\");\n color = color.toLowerCase();\n color = Color.namedColors[color] || color;\n\n return color;\n };\n\n Color.prototype.normalizeByte = function normalizeByte (value) {\n if (value < 0 || isNaN(value)) {\n return 0;\n }\n\n return value > 255 ? 255 : value;\n };\n\n Color.prototype.padDigit = function padDigit (value) {\n return (value.length === 1) ? \"0\" + value : value;\n };\n\n Color.prototype.brightness = function brightness (value) {\n var round = Math.round;\n\n this.r = round(this.normalizeByte(this.r * value));\n this.g = round(this.normalizeByte(this.g * value));\n this.b = round(this.normalizeByte(this.b * value));\n\n return this;\n };\n\n Color.prototype.percBrightness = function percBrightness () {\n return Math.sqrt(0.241 * this.r * this.r + 0.691 * this.g * this.g + 0.068 * this.b * this.b);\n };\n\n Color.prototype.isDark = function isDark () {\n return this.percBrightness() < DARK_TRESHOLD;\n };\n\n Color.fromBytes = function fromBytes (r, g, b, a) {\n return new Bytes(r, g, b, a != null ? a : 1);\n };\n\n Color.fromRGB = function fromRGB (r, g, b, a) {\n return new RGB(r, g, b, a != null ? a : 1);\n };\n\n Color.fromHSV = function fromHSV (h, s, v, a) {\n return new HSV(h, s, v, a != null ? a : 1);\n };\n\n Color.fromHSL = function fromHSL (h, s, l, a) {\n return new HSL(h, s, l, a != null ? a : 1);\n };\n\n return Color;\n}(Class));\n\nColor.formats = [ {\n re: /^rgb\\((\\d{1,3}),\\s*(\\d{1,3}),\\s*(\\d{1,3})\\)$/,\n process: function(parts) {\n return [\n parseInt(parts[1], 10), parseInt(parts[2], 10), parseInt(parts[3], 10)\n ];\n }\n}, {\n re: /^(\\w{2})(\\w{2})(\\w{2})$/,\n process: function(parts) {\n return [\n parseInt(parts[1], 16), parseInt(parts[2], 16), parseInt(parts[3], 16)\n ];\n }\n}, {\n re: /^(\\w{1})(\\w{1})(\\w{1})$/,\n process: function(parts) {\n return [\n parseInt(parts[1] + parts[1], 16),\n parseInt(parts[2] + parts[2], 16),\n parseInt(parts[3] + parts[3], 16)\n ];\n }\n} ];\n\nColor.namedColors = namedColors;\n\nexport default Color;","export default function append(first, second) {\n first.push.apply(first, second);\n return first;\n}","/* eslint-disable key-spacing,no-multi-spaces,no-param-reassign */\n\nvar literals = {\n 1 : \"i\", 10 : \"x\", 100 : \"c\",\n 2 : \"ii\", 20 : \"xx\", 200 : \"cc\",\n 3 : \"iii\", 30 : \"xxx\", 300 : \"ccc\",\n 4 : \"iv\", 40 : \"xl\", 400 : \"cd\",\n 5 : \"v\", 50 : \"l\", 500 : \"d\",\n 6 : \"vi\", 60 : \"lx\", 600 : \"dc\",\n 7 : \"vii\", 70 : \"lxx\", 700 : \"dcc\",\n 8 : \"viii\", 80 : \"lxxx\", 800 : \"dccc\",\n 9 : \"ix\", 90 : \"xc\", 900 : \"cm\",\n 1000 : \"m\"\n};\n\nexport default function arabicToRoman(n) {\n var values = [ 1000,\n 900 , 800, 700, 600, 500, 400, 300, 200, 100,\n 90 , 80 , 70 , 60 , 50 , 40 , 30 , 20 , 10 ,\n 9 , 8 , 7 , 6 , 5 , 4 , 3 , 2 , 1 ];\n\n var roman = \"\";\n while (n > 0) {\n if (n < values[0]) {\n values.shift();\n } else {\n roman += literals[values[0]];\n n -= values[0];\n }\n }\n return roman;\n}","export default function createPromise() {\n var resolveFn, rejectFn;\n var promise = new Promise(function (resolve, reject) {\n resolveFn = function (data) {\n promise._state = \"resolved\";\n resolve(data);\n return promise;\n };\n rejectFn = function (data) {\n promise._state = \"rejected\";\n reject(data);\n\n return promise;\n };\n });\n promise._state = \"pending\";\n promise.resolve = resolveFn;\n promise.reject = rejectFn;\n promise.state = function () { return promise._state; };\n\n return promise;\n}\n","var UNDEFINED = \"undefined\";\n\nexport default function defined(value) {\n return typeof value !== UNDEFINED;\n}","var defId = 1;\n\nexport default function definitionId() {\n return \"kdef\" + defId++;\n}","var DEG_TO_RAD = Math.PI / 180;\nvar MAX_NUM = Number.MAX_VALUE;\nvar MIN_NUM = -Number.MAX_VALUE;\n\nexport { DEG_TO_RAD, MAX_NUM, MIN_NUM };","import { DEG_TO_RAD } from './constants';\n\nexport default function deg(radians) {\n return radians / DEG_TO_RAD;\n}","import defined from './defined';\n\nexport default function isTransparent(color) {\n return color === \"\" || color === null || color === \"none\" || color === \"transparent\" || !defined(color);\n}","export default function last(array) {\n if (array) {\n return array[array.length - 1];\n }\n}","/* eslint-disable no-multi-spaces, key-spacing, indent, camelcase, space-before-blocks, eqeqeq, brace-style */\n/* eslint-disable space-infix-ops, space-before-function-paren, array-bracket-spacing, object-curly-spacing */\n/* eslint-disable no-nested-ternary, max-params, default-case, no-else-return, no-empty */\n/* eslint-disable no-param-reassign, no-var, block-scoped-var */\n\n// mergeSort is stable.\nexport default function mergeSort(a, cmp) {\n if (a.length < 2) {\n return a.slice();\n }\n function merge(a, b) {\n var r = [], ai = 0, bi = 0, i = 0;\n while (ai < a.length && bi < b.length) {\n if (cmp(a[ai], b[bi]) <= 0) {\n r[i++] = a[ai++];\n } else {\n r[i++] = b[bi++];\n }\n }\n if (ai < a.length) {\n r.push.apply(r, a.slice(ai));\n }\n if (bi < b.length) {\n r.push.apply(r, b.slice(bi));\n }\n return r;\n }\n return (function sort(a) {\n if (a.length <= 1) {\n return a;\n }\n var m = Math.floor(a.length / 2);\n var left = a.slice(0, m);\n var right = a.slice(m);\n left = sort(left);\n right = sort(right);\n return merge(left, right);\n })(a);\n}","import { DEG_TO_RAD } from './constants';\n\nexport default function rad(degrees) {\n return degrees * DEG_TO_RAD;\n}\n","function pow(p) {\n if (p) {\n return Math.pow(10, p);\n }\n\n return 1;\n}\n\nexport default function round(value, precision) {\n var power = pow(precision);\n return Math.round(value * power) / power;\n}","import defined from './defined';\n\nexport default function valueOrDefault(value, defaultValue) {\n return defined(value) ? value : defaultValue;\n}","export default function bindEvents(element, events) {\n for (var eventName in events) {\n var eventNames = eventName.trim().split(\" \");\n for (var idx = 0; idx < eventNames.length; idx++) {\n element.addEventListener(eventNames[idx], events[eventName], false);\n }\n }\n}","export default function elementStyles(element, styles) {\n var result = {};\n var style = window.getComputedStyle(element) || {};\n var stylesArray = Array.isArray(styles) ? styles : [ styles ];\n\n for (var idx = 0; idx < stylesArray.length; idx++) {\n var field = stylesArray[idx];\n result[field] = style[field];\n }\n\n return result;\n}","import elementStyles from './element-styles';\nimport defined from './defined';\n\nfunction getPixels(value) {\n if (isNaN(value)) {\n return value;\n }\n return value + \"px\";\n}\n\nexport default function elementSize(element, size) {\n if (size) {\n var width = size.width;\n var height = size.height;\n\n if (defined(width)) {\n element.style.width = getPixels(width);\n }\n\n if (defined(height)) {\n element.style.height = getPixels(height);\n }\n\n } else {\n var size$1 = elementStyles(element, [ 'width', 'height' ]);\n\n return {\n width: parseInt(size$1.width, 10),\n height: parseInt(size$1.height, 10)\n };\n }\n}","export default function unbindEvents(element, events) {\n if ( events === void 0 ) events = {};\n\n for (var name in events) {\n var eventNames = name.trim().split(\" \");\n for (var idx = 0; idx < eventNames.length; idx++) {\n element.removeEventListener(eventNames[idx], events[name], false);\n }\n }\n}","var KEY_STR = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\nvar fromCharCode = String.fromCharCode;\n\nfunction encodeUTF8(input) {\n var output = \"\";\n\n for (var i = 0; i < input.length; i++) {\n var c = input.charCodeAt(i);\n\n if (c < 0x80) {\n // One byte\n output += fromCharCode(c);\n } else if (c < 0x800) {\n // Two bytes\n output += fromCharCode(0xC0 | (c >>> 6));\n output += fromCharCode(0x80 | (c & 0x3f));\n } else if (c < 0x10000) {\n // Three bytes\n output += fromCharCode(0xE0 | (c >>> 12));\n output += fromCharCode(0x80 | (c >>> 6 & 0x3f));\n output += fromCharCode(0x80 | (c & 0x3f));\n }\n }\n\n return output;\n}\n\nexport default function encodeBase64(input) {\n var output = \"\";\n var i = 0;\n\n var utfInput = encodeUTF8(input);\n\n while (i < utfInput.length) {\n var chr1 = utfInput.charCodeAt(i++);\n var chr2 = utfInput.charCodeAt(i++);\n var chr3 = utfInput.charCodeAt(i++);\n\n var enc1 = chr1 >> 2;\n var enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);\n var enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);\n var enc4 = chr3 & 63;\n\n if (isNaN(chr2)) {\n enc3 = enc4 = 64;\n } else if (isNaN(chr3)) {\n enc4 = 64;\n }\n\n output = output +\n KEY_STR.charAt(enc1) + KEY_STR.charAt(enc2) +\n KEY_STR.charAt(enc3) + KEY_STR.charAt(enc4);\n }\n\n return output;\n}","import { Class } from '../common';\n\nvar LRUCache = (function (Class) {\n function LRUCache(size) {\n Class.call(this);\n\n this._size = size;\n this._length = 0;\n this._map = {};\n }\n\n if ( Class ) LRUCache.__proto__ = Class;\n LRUCache.prototype = Object.create( Class && Class.prototype );\n LRUCache.prototype.constructor = LRUCache;\n\n LRUCache.prototype.put = function put (key, value) {\n var map = this._map;\n var entry = { key: key, value: value };\n\n map[key] = entry;\n\n if (!this._head) {\n this._head = this._tail = entry;\n } else {\n this._tail.newer = entry;\n entry.older = this._tail;\n this._tail = entry;\n }\n\n if (this._length >= this._size) {\n map[this._head.key] = null;\n this._head = this._head.newer;\n this._head.older = null;\n } else {\n this._length++;\n }\n };\n\n LRUCache.prototype.get = function get (key) {\n var entry = this._map[key];\n\n if (entry) {\n if (entry === this._head && entry !== this._tail) {\n this._head = entry.newer;\n this._head.older = null;\n }\n\n if (entry !== this._tail) {\n if (entry.older) {\n entry.older.newer = entry.newer;\n entry.newer.older = entry.older;\n }\n\n entry.older = this._tail;\n entry.newer = null;\n\n this._tail.newer = entry;\n this._tail = entry;\n }\n\n return entry.value;\n }\n };\n\n return LRUCache;\n}(Class));\n\nexport default LRUCache;","var REPLACE_REGEX = /\\r?\\n|\\r|\\t/g;\nvar SPACE = ' ';\n\nfunction normalizeText(text) {\n return String(text).replace(REPLACE_REGEX, SPACE);\n}\n\nfunction objectKey(object) {\n var parts = [];\n for (var key in object) {\n parts.push(key + object[key]);\n }\n\n return parts.sort().join(\"\");\n}\n\n// Computes FNV-1 hash\n// See http://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function\nfunction hashKey(str) {\n // 32-bit FNV-1 offset basis\n // See http://isthe.com/chongo/tech/comp/fnv/#FNV-param\n var hash = 0x811C9DC5;\n\n for (var i = 0; i < str.length; ++i) {\n hash += (hash << 1) + (hash << 4) + (hash << 7) + (hash << 8) + (hash << 24);\n hash ^= str.charCodeAt(i);\n }\n\n return hash >>> 0;\n}\n\nexport { objectKey, hashKey, normalizeText };","import LRUCache from './lru-cache';\nimport { Class } from '../common';\nimport { objectKey, hashKey, normalizeText } from './util';\n\nfunction zeroSize() {\n return { width: 0, height: 0, baseline: 0 };\n}\n\nvar DEFAULT_OPTIONS = {\n baselineMarkerSize: 1\n};\n\nvar defaultMeasureBox;\n\nif (typeof document !== \"undefined\") {\n defaultMeasureBox = document.createElement(\"div\");\n defaultMeasureBox.style.cssText = \"position: absolute !important; top: -4000px !important; width: auto !important; height: auto !important;\" +\n \"padding: 0 !important; margin: 0 !important; border: 0 !important;\" +\n \"line-height: normal !important; visibility: hidden !important; white-space: pre!important;\";\n}\n\nvar TextMetrics = (function (Class) {\n function TextMetrics(options) {\n Class.call(this);\n\n this._cache = new LRUCache(1000);\n this.options = Object.assign({}, DEFAULT_OPTIONS, options);\n }\n\n if ( Class ) TextMetrics.__proto__ = Class;\n TextMetrics.prototype = Object.create( Class && Class.prototype );\n TextMetrics.prototype.constructor = TextMetrics;\n\n TextMetrics.prototype.measure = function measure (text, style, options) {\n if ( options === void 0 ) options = {};\n\n if (!text) {\n return zeroSize();\n }\n\n var styleKey = objectKey(style);\n var cacheKey = hashKey(text + styleKey);\n var cachedResult = this._cache.get(cacheKey);\n\n if (cachedResult) {\n return cachedResult;\n }\n\n var size = zeroSize();\n var measureBox = options.box || defaultMeasureBox;\n var baselineMarker = this._baselineMarker().cloneNode(false);\n\n for (var key in style) {\n var value = style[key];\n if (typeof value !== \"undefined\") {\n measureBox.style[key] = value;\n }\n }\n\n var textStr = options.normalizeText !== false ? normalizeText(text) : String(text);\n\n measureBox.textContent = textStr;\n measureBox.appendChild(baselineMarker);\n document.body.appendChild(measureBox);\n\n if (textStr.length) {\n size.width = measureBox.offsetWidth - this.options.baselineMarkerSize;\n size.height = measureBox.offsetHeight;\n size.baseline = baselineMarker.offsetTop + this.options.baselineMarkerSize;\n }\n\n if (size.width > 0 && size.height > 0) {\n this._cache.put(cacheKey, size);\n }\n\n measureBox.parentNode.removeChild(measureBox);\n\n return size;\n };\n\n TextMetrics.prototype._baselineMarker = function _baselineMarker () {\n var marker = document.createElement(\"div\");\n marker.style.cssText = \"display: inline-block; vertical-align: baseline;width: \" +\n this.options.baselineMarkerSize + \"px; height: \" + this.options.baselineMarkerSize + \"px;overflow: hidden;\";\n\n return marker;\n };\n\n return TextMetrics;\n}(Class));\n\nTextMetrics.current = new TextMetrics();\n\nexport default TextMetrics;","import TextMetrics from './text-metrics';\n\nexport default function measureText(text, style, measureBox) {\n return TextMetrics.current.measure(text, style, measureBox);\n}\n","import ObserversMixin from '../mixins/observers-mixin';\nimport { Class } from '../common';\nimport { defined } from '../util';\n\nvar toString = {}.toString;\n\nvar OptionsStore = (function (Class) {\n function OptionsStore(options, prefix) {\n var this$1 = this;\n if ( prefix === void 0 ) prefix = \"\";\n\n Class.call(this);\n\n this.prefix = prefix;\n\n for (var field in options) {\n var member = options[field];\n member = this$1._wrap(member, field);\n this$1[field] = member;\n }\n }\n\n if ( Class ) OptionsStore.__proto__ = Class;\n OptionsStore.prototype = Object.create( Class && Class.prototype );\n OptionsStore.prototype.constructor = OptionsStore;\n\n OptionsStore.prototype.get = function get (field) {\n var parts = field.split(\".\");\n var result = this;\n\n while (parts.length && result) {\n var part = parts.shift();\n result = result[part];\n }\n\n return result;\n };\n\n OptionsStore.prototype.set = function set (field, value) {\n var current = this.get(field);\n\n if (current !== value) {\n this._set(field, this._wrap(value, field));\n this.optionsChange({\n field: this.prefix + field,\n value: value\n });\n }\n };\n\n OptionsStore.prototype._set = function _set (field, value) {\n var this$1 = this;\n\n var composite = field.indexOf(\".\") >= 0;\n var parentObj = this;\n var fieldName = field;\n\n if (composite) {\n var parts = fieldName.split(\".\");\n var prefix = this.prefix;\n\n while (parts.length > 1) {\n fieldName = parts.shift();\n prefix += fieldName + \".\";\n\n var obj = parentObj[fieldName];\n\n if (!obj) {\n obj = new OptionsStore({}, prefix);\n obj.addObserver(this$1);\n parentObj[fieldName] = obj;\n }\n parentObj = obj;\n }\n fieldName = parts[0];\n }\n\n parentObj._clear(fieldName);\n parentObj[fieldName] = value;\n };\n\n OptionsStore.prototype._clear = function _clear (field) {\n var current = this[field];\n if (current && current.removeObserver) {\n current.removeObserver(this);\n }\n };\n\n OptionsStore.prototype._wrap = function _wrap (object, field) {\n var type = toString.call(object);\n var wrapped = object;\n\n if (wrapped !== null && defined(wrapped) && type === \"[object Object]\") {\n if (!(object instanceof OptionsStore) && !(object instanceof Class)) {\n wrapped = new OptionsStore(wrapped, this.prefix + field + \".\");\n }\n\n wrapped.addObserver(this);\n }\n\n return wrapped;\n };\n\n return OptionsStore;\n}(Class));\n\nObserversMixin.extend(OptionsStore.prototype);\n\nexport default OptionsStore;","function setAccessor(field) {\n return function(value) {\n if (this[field] !== value) {\n this[field] = value;\n this.geometryChange();\n }\n\n return this;\n };\n}\n\nfunction getAccessor(field) {\n return function() {\n return this[field];\n };\n}\n\nexport default function defineAccessors(fn, fields) {\n for (var i = 0; i < fields.length; i++) {\n var name = fields[i];\n var capitalized = name.charAt(0).toUpperCase() +\n name.substring(1, name.length);\n\n fn[\"set\" + capitalized] = setAccessor(name);\n fn[\"get\" + capitalized] = getAccessor(name);\n }\n}","import { Class } from '../common';\nimport { defined, rad, round } from '../util';\n\nvar Matrix = (function (Class) {\n function Matrix(a, b, c, d, e, f) {\n if ( a === void 0 ) a = 0;\n if ( b === void 0 ) b = 0;\n if ( c === void 0 ) c = 0;\n if ( d === void 0 ) d = 0;\n if ( e === void 0 ) e = 0;\n if ( f === void 0 ) f = 0;\n\n Class.call(this);\n\n this.a = a;\n this.b = b;\n this.c = c;\n this.d = d;\n this.e = e;\n this.f = f;\n }\n\n if ( Class ) Matrix.__proto__ = Class;\n Matrix.prototype = Object.create( Class && Class.prototype );\n Matrix.prototype.constructor = Matrix;\n\n Matrix.prototype.multiplyCopy = function multiplyCopy (matrix) {\n return new Matrix(\n this.a * matrix.a + this.c * matrix.b,\n this.b * matrix.a + this.d * matrix.b,\n this.a * matrix.c + this.c * matrix.d,\n this.b * matrix.c + this.d * matrix.d,\n this.a * matrix.e + this.c * matrix.f + this.e,\n this.b * matrix.e + this.d * matrix.f + this.f\n );\n };\n\n Matrix.prototype.invert = function invert () {\n var ref = this;\n var a = ref.a;\n var b = ref.b;\n var d = ref.c;\n var e = ref.d;\n var g = ref.e;\n var h = ref.f;\n var det = a * e - b * d;\n\n if (det === 0) {\n return null;\n }\n\n return new Matrix(e / det, -b / det, -d / det, a / det,\n (d * h - e * g) / det, (b * g - a * h) / det);\n };\n\n Matrix.prototype.clone = function clone () {\n return new Matrix(this.a, this.b, this.c, this.d, this.e, this.f);\n };\n\n Matrix.prototype.equals = function equals (other) {\n if (!other) {\n return false;\n }\n\n return this.a === other.a && this.b === other.b &&\n this.c === other.c && this.d === other.d &&\n this.e === other.e && this.f === other.f;\n };\n\n Matrix.prototype.round = function round$1 (precision) {\n this.a = round(this.a, precision);\n this.b = round(this.b, precision);\n this.c = round(this.c, precision);\n this.d = round(this.d, precision);\n this.e = round(this.e, precision);\n this.f = round(this.f, precision);\n\n return this;\n };\n\n Matrix.prototype.toArray = function toArray (precision) {\n var result = [ this.a, this.b, this.c, this.d, this.e, this.f ];\n\n if (defined(precision)) {\n for (var i = 0; i < result.length; i++) {\n result[i] = round(result[i], precision);\n }\n }\n\n return result;\n };\n\n Matrix.prototype.toString = function toString (precision, separator) {\n if ( separator === void 0 ) separator = \",\";\n\n return this.toArray(precision).join(separator);\n };\n\n Matrix.translate = function translate (x, y) {\n return new Matrix(1, 0, 0, 1, x, y);\n };\n\n Matrix.unit = function unit () {\n return new Matrix(1, 0, 0, 1, 0, 0);\n };\n\n Matrix.rotate = function rotate (angle, x, y) {\n var matrix = new Matrix();\n matrix.a = Math.cos(rad(angle));\n matrix.b = Math.sin(rad(angle));\n matrix.c = -matrix.b;\n matrix.d = matrix.a;\n matrix.e = (x - x * matrix.a + y * matrix.b) || 0;\n matrix.f = (y - y * matrix.a - x * matrix.b) || 0;\n\n return matrix;\n };\n\n Matrix.scale = function scale (scaleX, scaleY) {\n return new Matrix(scaleX, 0, 0, scaleY, 0, 0);\n };\n\n return Matrix;\n}(Class));\n\nMatrix.IDENTITY = Matrix.unit();\n\nexport default Matrix;","export default function toMatrix(transformation) {\n if (transformation && typeof transformation.matrix === \"function\") {\n return transformation.matrix();\n }\n\n return transformation;\n}","import defineAccessors from '../accessors/define-accessors';\nimport ObserversMixin from '../mixins/observers-mixin';\nimport { Class } from '../common';\nimport { defined, MIN_NUM, MAX_NUM, round } from '../util';\nimport Matrix from './matrix';\nimport toMatrix from './to-matrix';\n\nvar Point = (function (Class) {\n function Point(x, y) {\n Class.call(this);\n\n this.x = x || 0;\n this.y = y || 0;\n }\n\n if ( Class ) Point.__proto__ = Class;\n Point.prototype = Object.create( Class && Class.prototype );\n Point.prototype.constructor = Point;\n\n var staticAccessors = { ZERO: { configurable: true } };\n\n Point.prototype.equals = function equals (other) {\n return other && other.x === this.x && other.y === this.y;\n };\n\n Point.prototype.clone = function clone () {\n return new Point(this.x, this.y);\n };\n\n Point.prototype.rotate = function rotate (angle, origin) {\n var originPoint = Point.create(origin) || Point.ZERO;\n\n return this.transform(Matrix.rotate(angle, originPoint.x, originPoint.y));\n };\n\n Point.prototype.translate = function translate (x, y) {\n this.x += x;\n this.y += y;\n\n this.geometryChange();\n\n return this;\n };\n\n Point.prototype.translateWith = function translateWith (point) {\n return this.translate(point.x, point.y);\n };\n\n Point.prototype.move = function move (x, y) {\n this.x = this.y = 0;\n return this.translate(x, y);\n };\n\n Point.prototype.scale = function scale (scaleX, scaleY) {\n if ( scaleY === void 0 ) scaleY = scaleX;\n\n this.x *= scaleX;\n this.y *= scaleY;\n\n this.geometryChange();\n\n return this;\n };\n\n Point.prototype.scaleCopy = function scaleCopy (scaleX, scaleY) {\n return this.clone().scale(scaleX, scaleY);\n };\n\n Point.prototype.transform = function transform (transformation) {\n var matrix = toMatrix(transformation);\n var ref = this;\n var x = ref.x;\n var y = ref.y;\n\n this.x = matrix.a * x + matrix.c * y + matrix.e;\n this.y = matrix.b * x + matrix.d * y + matrix.f;\n\n this.geometryChange();\n\n return this;\n };\n\n Point.prototype.transformCopy = function transformCopy (transformation) {\n var point = this.clone();\n\n if (transformation) {\n point.transform(transformation);\n }\n\n return point;\n };\n\n Point.prototype.distanceTo = function distanceTo (point) {\n var dx = this.x - point.x;\n var dy = this.y - point.y;\n\n return Math.sqrt(dx * dx + dy * dy);\n };\n\n Point.prototype.round = function round$1 (digits) {\n this.x = round(this.x, digits);\n this.y = round(this.y, digits);\n\n this.geometryChange();\n\n return this;\n };\n\n Point.prototype.toArray = function toArray (digits) {\n var doRound = defined(digits);\n var x = doRound ? round(this.x, digits) : this.x;\n var y = doRound ? round(this.y, digits) : this.y;\n\n return [ x, y ];\n };\n\n Point.prototype.toString = function toString (digits, separator) {\n if ( separator === void 0 ) separator = \" \";\n\n var ref = this;\n var x = ref.x;\n var y = ref.y;\n\n if (defined(digits)) {\n x = round(x, digits);\n y = round(y, digits);\n }\n\n return x + separator + y;\n };\n\n Point.create = function create (arg0, arg1) {\n if (defined(arg0)) {\n if (arg0 instanceof Point) {\n return arg0;\n } else if (arguments.length === 1 && arg0.length === 2) {\n return new Point(arg0[0], arg0[1]);\n }\n\n return new Point(arg0, arg1);\n }\n };\n\n Point.min = function min () {\n var arguments$1 = arguments;\n\n var minX = MAX_NUM;\n var minY = MAX_NUM;\n\n for (var i = 0; i < arguments.length; i++) {\n var point = arguments$1[i];\n minX = Math.min(point.x, minX);\n minY = Math.min(point.y, minY);\n }\n\n return new Point(minX, minY);\n };\n\n Point.max = function max () {\n var arguments$1 = arguments;\n\n var maxX = MIN_NUM;\n var maxY = MIN_NUM;\n\n for (var i = 0; i < arguments.length; i++) {\n var point = arguments$1[i];\n maxX = Math.max(point.x, maxX);\n maxY = Math.max(point.y, maxY);\n }\n\n return new Point(maxX, maxY);\n };\n\n Point.minPoint = function minPoint () {\n return new Point(MIN_NUM, MIN_NUM);\n };\n\n Point.maxPoint = function maxPoint () {\n return new Point(MAX_NUM, MAX_NUM);\n };\n\n staticAccessors.ZERO.get = function () {\n return new Point(0, 0);\n };\n\n Object.defineProperties( Point, staticAccessors );\n\n return Point;\n}(Class));\n\ndefineAccessors(Point.prototype, [ \"x\", \"y\" ]);\nObserversMixin.extend(Point.prototype);\n\nexport default Point;\n","import defineAccessors from '../accessors/define-accessors';\nimport ObserversMixin from '../mixins/observers-mixin';\nimport { Class } from '../common';\nimport { defined, round } from '../util';\n\nvar Size = (function (Class) {\n function Size(width, height) {\n Class.call(this);\n\n this.width = width || 0;\n this.height = height || 0;\n }\n\n if ( Class ) Size.__proto__ = Class;\n Size.prototype = Object.create( Class && Class.prototype );\n Size.prototype.constructor = Size;\n\n var staticAccessors = { ZERO: { configurable: true } };\n\n Size.prototype.equals = function equals (other) {\n return other && other.width === this.width && other.height === this.height;\n };\n\n Size.prototype.clone = function clone () {\n return new Size(this.width, this.height);\n };\n\n Size.prototype.toArray = function toArray (digits) {\n var doRound = defined(digits);\n var width = doRound ? round(this.width, digits) : this.width;\n var height = doRound ? round(this.height, digits) : this.height;\n\n return [ width, height ];\n };\n\n Size.create = function create (arg0, arg1) {\n if (defined(arg0)) {\n if (arg0 instanceof Size) {\n return arg0;\n } else if (arguments.length === 1 && arg0.length === 2) {\n return new Size(arg0[0], arg0[1]);\n }\n\n return new Size(arg0, arg1);\n }\n };\n\n staticAccessors.ZERO.get = function () {\n return new Size(0, 0);\n };\n\n Object.defineProperties( Size, staticAccessors );\n\n return Size;\n}(Class));\n\ndefineAccessors(Size.prototype, [ \"width\", \"height\" ]);\nObserversMixin.extend(Size.prototype);\n\nexport default Size;","import ObserversMixin from '../mixins/observers-mixin';\nimport { Class } from '../common';\nimport Point from './point';\nimport Size from './size';\n\nvar Rect = (function (Class) {\n function Rect(origin, size) {\n if ( origin === void 0 ) origin = new Point();\n if ( size === void 0 ) size = new Size();\n\n Class.call(this);\n\n this.setOrigin(origin);\n this.setSize(size);\n }\n\n if ( Class ) Rect.__proto__ = Class;\n Rect.prototype = Object.create( Class && Class.prototype );\n Rect.prototype.constructor = Rect;\n\n Rect.prototype.clone = function clone () {\n return new Rect(\n this.origin.clone(),\n this.size.clone()\n );\n };\n\n Rect.prototype.equals = function equals (other) {\n return other &&\n other.origin.equals(this.origin) &&\n other.size.equals(this.size);\n };\n\n Rect.prototype.setOrigin = function setOrigin (value) {\n this._observerField(\"origin\", Point.create(value));\n this.geometryChange();\n return this;\n };\n\n Rect.prototype.getOrigin = function getOrigin () {\n return this.origin;\n };\n\n Rect.prototype.setSize = function setSize (value) {\n this._observerField(\"size\", Size.create(value));\n this.geometryChange();\n return this;\n };\n\n Rect.prototype.getSize = function getSize () {\n return this.size;\n };\n\n Rect.prototype.width = function width () {\n return this.size.width;\n };\n\n Rect.prototype.height = function height () {\n return this.size.height;\n };\n\n Rect.prototype.topLeft = function topLeft () {\n return this.origin.clone();\n };\n\n Rect.prototype.bottomRight = function bottomRight () {\n return this.origin.clone().translate(this.width(), this.height());\n };\n\n Rect.prototype.topRight = function topRight () {\n return this.origin.clone().translate(this.width(), 0);\n };\n\n Rect.prototype.bottomLeft = function bottomLeft () {\n return this.origin.clone().translate(0, this.height());\n };\n\n Rect.prototype.center = function center () {\n return this.origin.clone().translate(this.width() / 2, this.height() / 2);\n };\n\n Rect.prototype.bbox = function bbox (matrix) {\n var tl = this.topLeft().transformCopy(matrix);\n var tr = this.topRight().transformCopy(matrix);\n var br = this.bottomRight().transformCopy(matrix);\n var bl = this.bottomLeft().transformCopy(matrix);\n\n return Rect.fromPoints(tl, tr, br, bl);\n };\n\n Rect.prototype.transformCopy = function transformCopy (m) {\n return Rect.fromPoints(\n this.topLeft().transform(m),\n this.bottomRight().transform(m)\n );\n };\n\n Rect.prototype.expand = function expand (x, y) {\n if ( y === void 0 ) y = x;\n\n\n this.size.width += 2 * x;\n this.size.height += 2 * y;\n\n this.origin.translate(-x, -y);\n\n return this;\n };\n\n Rect.prototype.expandCopy = function expandCopy (x, y) {\n return this.clone().expand(x, y);\n };\n\n Rect.prototype.containsPoint = function containsPoint (point) {\n var origin = this.origin;\n var bottomRight = this.bottomRight();\n return !(point.x < origin.x || point.y < origin.y || bottomRight.x < point.x || bottomRight.y < point.y);\n };\n\n Rect.prototype._isOnPath = function _isOnPath (point, width) {\n var rectOuter = this.expandCopy(width, width);\n var rectInner = this.expandCopy(-width, -width);\n\n return rectOuter.containsPoint(point) && !rectInner.containsPoint(point);\n };\n\n Rect.fromPoints = function fromPoints () {\n var topLeft = Point.min.apply(null, arguments);\n var bottomRight = Point.max.apply(null, arguments);\n var size = new Size(\n bottomRight.x - topLeft.x,\n bottomRight.y - topLeft.y\n );\n\n return new Rect(topLeft, size);\n };\n\n Rect.union = function union (a, b) {\n return Rect.fromPoints(\n Point.min(a.topLeft(), b.topLeft()),\n Point.max(a.bottomRight(), b.bottomRight())\n );\n };\n\n Rect.intersect = function intersect (a, b) {\n var rect1 = {\n left: a.topLeft().x,\n top: a.topLeft().y,\n right: a.bottomRight().x,\n bottom: a.bottomRight().y\n };\n\n var rect2 = {\n left: b.topLeft().x,\n top: b.topLeft().y,\n right: b.bottomRight().x,\n bottom: b.bottomRight().y\n };\n\n if (rect1.left <= rect2.right &&\n rect2.left <= rect1.right &&\n rect1.top <= rect2.bottom &&\n rect2.top <= rect1.bottom) {\n return Rect.fromPoints(\n new Point(Math.max(rect1.left, rect2.left), Math.max(rect1.top, rect2.top)),\n new Point(Math.min(rect1.right, rect2.right), Math.min(rect1.bottom, rect2.bottom))\n );\n }\n };\n\n return Rect;\n}(Class));\n\nObserversMixin.extend(Rect.prototype);\n\nexport default Rect;","import ObserversMixin from '../mixins/observers-mixin';\nimport { Class } from '../common';\nimport toMatrix from './to-matrix';\nimport Matrix from './matrix';\nimport Point from './point';\n\nvar Transformation = (function (Class) {\n function Transformation(matrix) {\n if ( matrix === void 0 ) matrix = Matrix.unit();\n\n Class.call(this);\n\n this._matrix = matrix;\n }\n\n if ( Class ) Transformation.__proto__ = Class;\n Transformation.prototype = Object.create( Class && Class.prototype );\n Transformation.prototype.constructor = Transformation;\n\n Transformation.prototype.clone = function clone () {\n return new Transformation(\n this._matrix.clone()\n );\n };\n\n Transformation.prototype.equals = function equals (other) {\n return other &&\n other._matrix.equals(this._matrix);\n };\n\n Transformation.prototype.translate = function translate (x, y) {\n this._matrix = this._matrix.multiplyCopy(Matrix.translate(x, y));\n\n this._optionsChange();\n return this;\n };\n\n Transformation.prototype.scale = function scale (scaleX, scaleY, origin) {\n if ( scaleY === void 0 ) scaleY = scaleX;\n if ( origin === void 0 ) origin = null;\n\n var originPoint = origin;\n\n if (originPoint) {\n originPoint = Point.create(originPoint);\n this._matrix = this._matrix.multiplyCopy(Matrix.translate(originPoint.x, originPoint.y));\n }\n\n this._matrix = this._matrix.multiplyCopy(Matrix.scale(scaleX, scaleY));\n\n if (originPoint) {\n this._matrix = this._matrix.multiplyCopy(Matrix.translate(-originPoint.x, -originPoint.y));\n }\n\n this._optionsChange();\n return this;\n };\n\n Transformation.prototype.rotate = function rotate (angle, origin) {\n var originPoint = Point.create(origin) || Point.ZERO;\n\n this._matrix = this._matrix.multiplyCopy(Matrix.rotate(angle, originPoint.x, originPoint.y));\n\n this._optionsChange();\n return this;\n };\n\n Transformation.prototype.multiply = function multiply (transformation) {\n var matrix = toMatrix(transformation);\n\n this._matrix = this._matrix.multiplyCopy(matrix);\n\n this._optionsChange();\n return this;\n };\n\n Transformation.prototype.matrix = function matrix (value) {\n if (value) {\n this._matrix = value;\n this._optionsChange();\n return this;\n }\n\n return this._matrix;\n };\n\n Transformation.prototype._optionsChange = function _optionsChange () {\n this.optionsChange({\n field: \"transform\",\n value: this\n });\n };\n\n return Transformation;\n}(Class));\n\nObserversMixin.extend(Transformation.prototype);\n\nexport default Transformation;\n","import Transformation from './transformation';\n\nexport default function transform(matrix) {\n if (matrix === null) {\n return null;\n }\n\n if (matrix instanceof Transformation) {\n return matrix;\n }\n\n return new Transformation(matrix);\n}","import OptionsStore from '../core/options-store';\nimport ObserversMixin from '../mixins/observers-mixin';\nimport Rect from '../geometry/rect';\nimport Matrix from '../geometry/matrix';\nimport createTransform from '../geometry/transform';\nimport toMatrix from '../geometry/to-matrix';\nimport { Class } from '../common';\nimport { defined, definitionId, isTransparent, valueOrDefault } from '../util';\n\nvar Element = (function (Class) {\n function Element(options) {\n Class.call(this);\n\n this._initOptions(options);\n }\n\n if ( Class ) Element.__proto__ = Class;\n Element.prototype = Object.create( Class && Class.prototype );\n Element.prototype.constructor = Element;\n\n Element.prototype._initOptions = function _initOptions (options) {\n if ( options === void 0 ) options = {};\n\n var clip = options.clip;\n var transform = options.transform;\n\n if (transform) {\n options.transform = createTransform(transform);\n }\n\n if (clip && !clip.id) {\n clip.id = definitionId();\n }\n\n this.options = new OptionsStore(options);\n this.options.addObserver(this);\n };\n\n Element.prototype.transform = function transform (value) {\n if (defined(value)) {\n this.options.set(\"transform\", createTransform(value));\n } else {\n return this.options.get(\"transform\");\n }\n };\n\n Element.prototype.parentTransform = function parentTransform () {\n var element = this;\n var parentMatrix;\n\n while (element.parent) {\n element = element.parent;\n var transformation = element.transform();\n if (transformation) {\n parentMatrix = transformation.matrix().multiplyCopy(parentMatrix || Matrix.unit());\n }\n }\n\n if (parentMatrix) {\n return createTransform(parentMatrix);\n }\n };\n\n Element.prototype.currentTransform = function currentTransform (parentTransform) {\n if ( parentTransform === void 0 ) parentTransform = this.parentTransform();\n\n var elementTransform = this.transform();\n var elementMatrix = toMatrix(elementTransform);\n\n var parentMatrix = toMatrix(parentTransform);\n var combinedMatrix;\n\n if (elementMatrix && parentMatrix) {\n combinedMatrix = parentMatrix.multiplyCopy(elementMatrix);\n } else {\n combinedMatrix = elementMatrix || parentMatrix;\n }\n\n if (combinedMatrix) {\n return createTransform(combinedMatrix);\n }\n };\n\n Element.prototype.visible = function visible (value) {\n if (defined(value)) {\n this.options.set(\"visible\", value);\n return this;\n }\n\n return this.options.get(\"visible\") !== false;\n };\n\n Element.prototype.clip = function clip (value) {\n var options = this.options;\n if (defined(value)) {\n if (value && !value.id) {\n value.id = definitionId();\n }\n options.set(\"clip\", value);\n return this;\n }\n\n return options.get(\"clip\");\n };\n\n Element.prototype.opacity = function opacity (value) {\n if (defined(value)) {\n this.options.set(\"opacity\", value);\n return this;\n }\n\n return valueOrDefault(this.options.get(\"opacity\"), 1);\n };\n\n Element.prototype.clippedBBox = function clippedBBox (transformation) {\n var bbox = this._clippedBBox(transformation);\n if (bbox) {\n var clip = this.clip();\n return clip ? Rect.intersect(bbox, clip.bbox(transformation)) : bbox;\n }\n };\n\n Element.prototype.containsPoint = function containsPoint (point, parentTransform) {\n if (this.visible()) {\n var transform = this.currentTransform(parentTransform);\n var transformedPoint = point;\n if (transform) {\n transformedPoint = point.transformCopy(transform.matrix().invert());\n }\n return (this._hasFill() && this._containsPoint(transformedPoint)) || (this._isOnPath && this._hasStroke() && this._isOnPath(transformedPoint));\n }\n return false;\n };\n\n Element.prototype._hasFill = function _hasFill () {\n var fill = this.options.fill;\n return fill && !isTransparent(fill.color);\n };\n\n Element.prototype._hasStroke = function _hasStroke () {\n var stroke = this.options.stroke;\n return stroke && stroke.width > 0 && !isTransparent(stroke.color);\n };\n\n Element.prototype._clippedBBox = function _clippedBBox (transformation) {\n return this.bbox(transformation);\n };\n\n return Element;\n}(Class));\n\nElement.prototype.nodeType = \"Element\";\n\nObserversMixin.extend(Element.prototype);\n\nexport default Element;\n","export default function ellipseExtremeAngles(center, rx, ry, matrix) {\n var extremeX = 0;\n var extremeY = 0;\n\n if (matrix) {\n extremeX = Math.atan2(matrix.c * ry, matrix.a * rx);\n if (matrix.b !== 0) {\n extremeY = Math.atan2(matrix.d * ry, matrix.b * rx);\n }\n }\n\n return {\n x: extremeX,\n y: extremeY\n };\n}","import defineAccessors from '../accessors/define-accessors';\nimport ObserversMixin from '../mixins/observers-mixin';\nimport Point from './point';\nimport Rect from './rect';\nimport ellipseExtremeAngles from './math/ellipse-extreme-angles';\nimport { Class } from '../common';\nimport { rad } from '../util';\n\nvar PI_DIV_2 = Math.PI / 2;\n\nvar Circle = (function (Class) {\n function Circle(center, radius) {\n if ( center === void 0 ) center = new Point();\n if ( radius === void 0 ) radius = 0;\n\n Class.call(this);\n\n this.setCenter(center);\n this.setRadius(radius);\n }\n\n if ( Class ) Circle.__proto__ = Class;\n Circle.prototype = Object.create( Class && Class.prototype );\n Circle.prototype.constructor = Circle;\n\n Circle.prototype.setCenter = function setCenter (value) {\n this._observerField(\"center\", Point.create(value));\n this.geometryChange();\n return this;\n };\n\n Circle.prototype.getCenter = function getCenter () {\n return this.center;\n };\n\n Circle.prototype.equals = function equals (other) {\n return other &&\n other.center.equals(this.center) &&\n other.radius === this.radius;\n };\n\n Circle.prototype.clone = function clone () {\n return new Circle(this.center.clone(), this.radius);\n };\n\n Circle.prototype.pointAt = function pointAt (angle) {\n return this._pointAt(rad(angle));\n };\n\n Circle.prototype.bbox = function bbox (matrix) {\n var this$1 = this;\n\n var extremeAngles = ellipseExtremeAngles(this.center, this.radius, this.radius, matrix);\n var minPoint = Point.maxPoint();\n var maxPoint = Point.minPoint();\n\n for (var i = 0; i < 4; i++) {\n var currentPointX = this$1._pointAt(extremeAngles.x + i * PI_DIV_2).transformCopy(matrix);\n var currentPointY = this$1._pointAt(extremeAngles.y + i * PI_DIV_2).transformCopy(matrix);\n var currentPoint = new Point(currentPointX.x, currentPointY.y);\n\n minPoint = Point.min(minPoint, currentPoint);\n maxPoint = Point.max(maxPoint, currentPoint);\n }\n\n return Rect.fromPoints(minPoint, maxPoint);\n };\n\n Circle.prototype._pointAt = function _pointAt (angle) {\n var ref = this;\n var center = ref.center;\n var radius = ref.radius;\n\n return new Point(\n center.x + radius * Math.cos(angle),\n center.y + radius * Math.sin(angle)\n );\n };\n\n Circle.prototype.containsPoint = function containsPoint (point) {\n var ref = this;\n var center = ref.center;\n var radius = ref.radius;\n var inCircle = Math.pow(point.x - center.x, 2) +\n Math.pow(point.y - center.y, 2) <= Math.pow(radius, 2);\n return inCircle;\n };\n\n Circle.prototype._isOnPath = function _isOnPath (point, width) {\n var ref = this;\n var center = ref.center;\n var radius = ref.radius;\n var pointDistance = center.distanceTo(point);\n\n return radius - width <= pointDistance && pointDistance <= radius + width;\n };\n\n return Circle;\n}(Class));\n\ndefineAccessors(Circle.prototype, [ \"radius\" ]);\nObserversMixin.extend(Circle.prototype);\n\nexport default Circle;","import { defined } from '../util';\n\nvar GRADIENT = \"Gradient\";\n\nvar Paintable = {\n extend: function(proto) {\n proto.fill = this.fill;\n proto.stroke = this.stroke;\n },\n\n fill: function(color, opacity) {\n var options = this.options;\n\n if (defined(color)) {\n if (color && color.nodeType !== GRADIENT) {\n var newFill = {\n color: color\n };\n if (defined(opacity)) {\n newFill.opacity = opacity;\n }\n options.set(\"fill\", newFill);\n } else {\n options.set(\"fill\", color);\n }\n\n return this;\n }\n\n return options.get(\"fill\");\n },\n\n stroke: function(color, width, opacity) {\n if (defined(color)) {\n this.options.set(\"stroke.color\", color);\n\n if (defined(width)) {\n this.options.set(\"stroke.width\", width);\n }\n\n if (defined(opacity)) {\n this.options.set(\"stroke.opacity\", opacity);\n }\n\n return this;\n }\n\n return this.options.get(\"stroke\");\n }\n};\n\nexport default Paintable;","import Matrix from '../geometry/matrix';\nimport toMatrix from '../geometry/to-matrix';\n\nvar IDENTITY_MATRIX_HASH = Matrix.IDENTITY.toString();\n\nvar Measurable = {\n extend: function(proto) {\n proto.bbox = this.bbox;\n proto.geometryChange = this.geometryChange;\n },\n\n bbox: function(transformation) {\n var combinedMatrix = toMatrix(this.currentTransform(transformation));\n var matrixHash = combinedMatrix ? combinedMatrix.toString() : IDENTITY_MATRIX_HASH;\n var bbox;\n\n if (this._bboxCache && this._matrixHash === matrixHash) {\n bbox = this._bboxCache.clone();\n } else {\n bbox = this._bbox(combinedMatrix);\n this._bboxCache = bbox ? bbox.clone() : null;\n this._matrixHash = matrixHash;\n }\n\n var strokeWidth = this.options.get(\"stroke.width\");\n if (strokeWidth && bbox) {\n bbox.expand(strokeWidth / 2);\n }\n\n return bbox;\n },\n\n geometryChange: function() {\n delete this._bboxCache;\n this.trigger(\"geometryChange\", {\n element: this\n });\n }\n};\n\nexport default Measurable;","import { defined } from '../util';\n\nfunction geometryAccessor(name) {\n var fieldName = \"_\" + name;\n return function(value) {\n if (defined(value)) {\n this._observerField(fieldName, value);\n this.geometryChange();\n return this;\n }\n\n return this[fieldName];\n };\n}\n\nexport default function defineGeometryAccessors(fn, names) {\n for (var i = 0; i < names.length; i++) {\n fn[names[i]] = geometryAccessor(names[i]);\n }\n}","import GeometryCircle from '../geometry/circle';\nimport Paintable from '../mixins/paintable';\nimport Measurable from '../mixins/measurable';\nimport defineGeometryAccessors from '../accessors/define-geometry-accessors';\nimport Element from './element';\nimport { defined } from '../util';\n\nvar DEFAULT_STROKE = \"#000\";\n\nvar Circle = (function (Element) {\n function Circle(geometry, options) {\n if ( geometry === void 0 ) geometry = new GeometryCircle();\n if ( options === void 0 ) options = {};\n\n Element.call(this, options);\n this.geometry(geometry);\n\n if (!defined(this.options.stroke)) {\n this.stroke(DEFAULT_STROKE);\n }\n }\n\n if ( Element ) Circle.__proto__ = Element;\n Circle.prototype = Object.create( Element && Element.prototype );\n Circle.prototype.constructor = Circle;\n\n Circle.prototype.rawBBox = function rawBBox () {\n return this._geometry.bbox();\n };\n\n Circle.prototype._bbox = function _bbox (matrix) {\n return this._geometry.bbox(matrix);\n };\n\n Circle.prototype._containsPoint = function _containsPoint (point) {\n return this.geometry().containsPoint(point);\n };\n\n Circle.prototype._isOnPath = function _isOnPath (point) {\n return this.geometry()._isOnPath(point, this.options.stroke.width / 2);\n };\n\n return Circle;\n}(Element));\n\nCircle.prototype.nodeType = \"Circle\";\n\nPaintable.extend(Circle.prototype);\nMeasurable.extend(Circle.prototype);\ndefineGeometryAccessors(Circle.prototype, [ \"geometry\" ]);\n\nexport default Circle;","var PRECISION = 10;\n\nexport { PRECISION };","import { PRECISION } from '../constants';\n\nimport { round } from '../../util';\n\nexport default function close(a, b, tolerance) {\n if ( tolerance === void 0 ) tolerance = PRECISION;\n\n return round(Math.abs(a - b), tolerance) === 0;\n}","import close from './close';\n\nexport default function closeOrLess(a, b, tolerance) {\n return a < b || close(a, b, tolerance);\n}","import defineAccessors from '../accessors/define-accessors';\nimport ObserversMixin from '../mixins/observers-mixin';\nimport { Class } from '../common';\nimport { deg, rad, round } from '../util';\n\nimport closeOrLess from './math/close-or-less';\nimport lineIntersection from './math/line-intersection';\nimport ellipseExtremeAngles from './math/ellipse-extreme-angles';\n\nimport { PRECISION } from './constants';\nimport Point from './point';\nimport Rect from './rect';\nimport transform from './transform';\n\nvar MAX_INTERVAL = 45;\nvar pow = Math.pow;\n\nvar Arc = (function (Class) {\n function Arc(center, options) {\n if ( center === void 0 ) center = new Point();\n if ( options === void 0 ) options = {};\n\n Class.call(this);\n\n this.setCenter(center);\n\n this.radiusX = options.radiusX;\n this.radiusY = options.radiusY || options.radiusX;\n this.startAngle = options.startAngle;\n this.endAngle = options.endAngle;\n this.anticlockwise = options.anticlockwise || false;\n this.xRotation = options.xRotation;\n }\n\n if ( Class ) Arc.__proto__ = Class;\n Arc.prototype = Object.create( Class && Class.prototype );\n Arc.prototype.constructor = Arc;\n\n Arc.prototype.clone = function clone () {\n return new Arc(this.center, {\n radiusX: this.radiusX,\n radiusY: this.radiusY,\n startAngle: this.startAngle,\n endAngle: this.endAngle,\n anticlockwise: this.anticlockwise\n });\n };\n\n Arc.prototype.setCenter = function setCenter (value) {\n this._observerField(\"center\", Point.create(value));\n this.geometryChange();\n return this;\n };\n\n Arc.prototype.getCenter = function getCenter () {\n return this.center;\n };\n\n Arc.prototype.pointAt = function pointAt (angle) {\n var center = this.center;\n var radian = rad(angle);\n\n return new Point(\n center.x + this.radiusX * Math.cos(radian),\n center.y + this.radiusY * Math.sin(radian)\n );\n };\n\n Arc.prototype.curvePoints = function curvePoints () {\n var this$1 = this;\n\n var startAngle = this.startAngle;\n var dir = this.anticlockwise ? -1 : 1;\n var curvePoints = [ this.pointAt(startAngle) ];\n var interval = this._arcInterval();\n var intervalAngle = interval.endAngle - interval.startAngle;\n var subIntervalsCount = Math.ceil(intervalAngle / MAX_INTERVAL);\n var subIntervalAngle = intervalAngle / subIntervalsCount;\n var currentAngle = startAngle;\n var transformation;\n if (this.xRotation) {\n transformation = transform().rotate(this.xRotation, this.center);\n }\n\n for (var i = 1; i <= subIntervalsCount; i++) {\n var nextAngle = currentAngle + dir * subIntervalAngle;\n var points = this$1._intervalCurvePoints(currentAngle, nextAngle, transformation);\n\n curvePoints.push(points.cp1, points.cp2, points.p2);\n currentAngle = nextAngle;\n }\n\n return curvePoints;\n };\n\n Arc.prototype.bbox = function bbox (matrix) {\n var this$1 = this;\n\n var interval = this._arcInterval();\n var startAngle = interval.startAngle;\n var endAngle = interval.endAngle;\n var extremeAngles = ellipseExtremeAngles(this.center, this.radiusX, this.radiusY, matrix);\n var extremeX = deg(extremeAngles.x);\n var extremeY = deg(extremeAngles.y);\n var endPoint = this.pointAt(endAngle).transformCopy(matrix);\n var currentAngleX = bboxStartAngle(extremeX, startAngle);\n var currentAngleY = bboxStartAngle(extremeY, startAngle);\n var currentPoint = this.pointAt(startAngle).transformCopy(matrix);\n var minPoint = Point.min(currentPoint, endPoint);\n var maxPoint = Point.max(currentPoint, endPoint);\n\n while (currentAngleX < endAngle || currentAngleY < endAngle) {\n var currentPointX = (void 0);\n if (currentAngleX < endAngle) {\n currentPointX = this$1.pointAt(currentAngleX).transformCopy(matrix);\n currentAngleX += 90;\n }\n\n var currentPointY = (void 0);\n if (currentAngleY < endAngle) {\n currentPointY = this$1.pointAt(currentAngleY).transformCopy(matrix);\n currentAngleY += 90;\n }\n\n currentPoint = new Point(currentPointX.x, currentPointY.y);\n minPoint = Point.min(minPoint, currentPoint);\n maxPoint = Point.max(maxPoint, currentPoint);\n }\n\n return Rect.fromPoints(minPoint, maxPoint);\n };\n\n Arc.prototype._arcInterval = function _arcInterval () {\n var ref = this;\n var startAngle = ref.startAngle;\n var endAngle = ref.endAngle;\n var anticlockwise = ref.anticlockwise;\n\n if (anticlockwise) {\n var oldStart = startAngle;\n startAngle = endAngle;\n endAngle = oldStart;\n }\n\n if (startAngle > endAngle || (anticlockwise && startAngle === endAngle)) {\n endAngle += 360;\n }\n\n return {\n startAngle: startAngle,\n endAngle: endAngle\n };\n };\n\n Arc.prototype._intervalCurvePoints = function _intervalCurvePoints (startAngle, endAngle, transformation) {\n var p1 = this.pointAt(startAngle);\n var p2 = this.pointAt(endAngle);\n var p1Derivative = this._derivativeAt(startAngle);\n var p2Derivative = this._derivativeAt(endAngle);\n var t = (rad(endAngle) - rad(startAngle)) / 3;\n var cp1 = new Point(p1.x + t * p1Derivative.x, p1.y + t * p1Derivative.y);\n var cp2 = new Point(p2.x - t * p2Derivative.x, p2.y - t * p2Derivative.y);\n if (transformation) {\n p1.transform(transformation);\n p2.transform(transformation);\n cp1.transform(transformation);\n cp2.transform(transformation);\n }\n\n return {\n p1: p1,\n cp1: cp1,\n cp2: cp2,\n p2: p2\n };\n };\n\n Arc.prototype._derivativeAt = function _derivativeAt (angle) {\n var radian = rad(angle);\n\n return new Point(-this.radiusX * Math.sin(radian), this.radiusY * Math.cos(radian));\n };\n\n Arc.prototype.containsPoint = function containsPoint (point) {\n var interval = this._arcInterval();\n var intervalAngle = interval.endAngle - interval.startAngle;\n var ref = this;\n var center = ref.center;\n var radiusX = ref.radiusX;\n var radiusY = ref.radiusY;\n var distance = center.distanceTo(point);\n var angleRad = Math.atan2(point.y - center.y, point.x - center.x);\n var pointRadius = (radiusX * radiusY) /\n Math.sqrt(pow(radiusX, 2) * pow(Math.sin(angleRad), 2) + pow(radiusY, 2) * pow(Math.cos(angleRad), 2));\n var startPoint = this.pointAt(this.startAngle).round(PRECISION);\n var endPoint = this.pointAt(this.endAngle).round(PRECISION);\n var intersection = lineIntersection(center, point.round(PRECISION), startPoint, endPoint);\n var containsPoint;\n\n if (intervalAngle < 180) {\n containsPoint = intersection && closeOrLess(center.distanceTo(intersection), distance) && closeOrLess(distance, pointRadius);\n } else {\n var angle = calculateAngle(center.x, center.y, radiusX, radiusY, point.x, point.y);\n if (angle !== 360) {\n angle = (360 + angle) % 360;\n }\n\n var inAngleRange = interval.startAngle <= angle && angle <= interval.endAngle;\n containsPoint = (inAngleRange && closeOrLess(distance, pointRadius)) || (!inAngleRange && (!intersection || intersection.equals(point)));\n }\n return containsPoint;\n };\n\n Arc.prototype._isOnPath = function _isOnPath (point, width) {\n var interval = this._arcInterval();\n var center = this.center;\n var angle = calculateAngle(center.x, center.y, this.radiusX, this.radiusY, point.x, point.y);\n if (angle !== 360) {\n angle = (360 + angle) % 360;\n }\n\n var inAngleRange = interval.startAngle <= angle && angle <= interval.endAngle;\n\n return inAngleRange && this.pointAt(angle).distanceTo(point) <= width;\n };\n\n Arc.fromPoints = function fromPoints (start, end, rx, ry, largeArc, swipe, rotation) {// eslint-disable-line max-params\n var arcParameters = normalizeArcParameters({\n x1: start.x,\n y1: start.y,\n x2: end.x,\n y2: end.y,\n rx: rx,\n ry: ry,\n largeArc: largeArc,\n swipe: swipe,\n rotation: rotation\n });\n\n return new Arc(arcParameters.center, {\n startAngle: arcParameters.startAngle,\n endAngle: arcParameters.endAngle,\n radiusX: arcParameters.radiusX,\n radiusY: arcParameters.radiusY,\n xRotation: arcParameters.xRotation,\n anticlockwise: swipe === 0\n });\n };\n\n return Arc;\n}(Class));\n\ndefineAccessors(Arc.prototype, [ \"radiusX\", \"radiusY\", \"startAngle\", \"endAngle\", \"anticlockwise\" ]);\nObserversMixin.extend(Arc.prototype);\n\nfunction calculateAngle(cx, cy, rx, ry, x, y) {\n var cos = round((x - cx) / rx, 3);\n var sin = round((y - cy) / ry, 3);\n\n return round(deg(Math.atan2(sin, cos)));\n}\n\nfunction normalizeArcParameters(parameters) {\n var x1 = parameters.x1;\n var y1 = parameters.y1;\n var x2 = parameters.x2;\n var y2 = parameters.y2;\n var rx = parameters.rx;\n var ry = parameters.ry;\n var largeArc = parameters.largeArc;\n var swipe = parameters.swipe;\n var rotation = parameters.rotation; if ( rotation === void 0 ) rotation = 0;\n\n var radians = rad(rotation);\n var cosine = Math.cos(radians);\n var sine = Math.sin(radians);\n\n var xT = cosine * (x1 - x2) / 2 + sine * (y1 - y2) / 2;\n var yT = -sine * (x1 - x2) / 2 + cosine * (y1 - y2) / 2;\n\n var sign = largeArc !== swipe ? 1 : -1;\n\n var xt2 = Math.pow(xT, 2);\n var yt2 = Math.pow(yT, 2);\n var rx2 = Math.pow(rx, 2);\n var ry2 = Math.pow(ry, 2);\n\n var delta = xt2 / rx2 + yt2 / ry2;\n\n if (delta > 1) {\n delta = Math.sqrt(xt2 / rx2 + yt2 / ry2);\n rx = delta * rx;\n rx2 = Math.pow(rx, 2);\n\n ry = delta * ry;\n ry2 = Math.pow(ry, 2);\n }\n\n var constT = sign * Math.sqrt((rx2 * ry2 - rx2 * yt2 - ry2 * xt2) / (rx2 * yt2 + ry2 * xt2));\n // due to rounding errors the value could become NaN even after radii correction\n if (isNaN(constT)) {\n constT = 0;\n }\n\n var cxT = constT * (rx * yT) / ry;\n var cyT = - constT * (ry * xT) / rx;\n\n var cx = cosine * cxT - sine * cyT + (x1 + x2) / 2;\n var cy = sine * cxT + cosine * cyT + (y1 + y2) / 2;\n\n\n var uX = (xT - cxT) / rx;\n var uY = (yT - cyT) / ry;\n var vX = -(xT + cxT) / rx;\n var vY = -(yT + cyT) / ry;\n\n var startAngle = (uY >= 0 ? 1 : -1) * deg(Math.acos(uX / Math.sqrt(uX * uX + uY * uY)));\n\n var angleCosine = round((uX * vX + uY * vY) / (Math.sqrt(uX * uX + uY * uY) * Math.sqrt(vX * vX + vY * vY)), 10);\n var angle = (uX * vY - uY * vX >= 0 ? 1 : -1) * deg(Math.acos(angleCosine));\n\n if (!swipe && angle > 0) {\n angle -= 360;\n }\n\n if (swipe && angle < 0) {\n angle += 360;\n }\n var endAngle = startAngle + angle;\n var signEndAngle = endAngle >= 0 ? 1 : -1;\n endAngle = (Math.abs(endAngle) % 360) * signEndAngle;\n\n return {\n center: new Point(cx, cy),\n startAngle: startAngle,\n endAngle: endAngle,\n radiusX: rx,\n radiusY: ry,\n xRotation: rotation\n };\n}\n\nfunction bboxStartAngle(angle, start) {\n var startAngle = angle;\n\n while (startAngle < start) {\n startAngle += 90;\n }\n\n return startAngle;\n}\n\nexport default Arc;\n","import Point from '../point';\n\nexport default function lineIntersection(p0, p1, p2, p3) {\n var s1x = p1.x - p0.x;\n var s2x = p3.x - p2.x;\n var s1y = p1.y - p0.y;\n var s2y = p3.y - p2.y;\n var nx = p0.x - p2.x;\n var ny = p0.y - p2.y;\n var d = s1x * s2y - s2x * s1y;\n var s = (s1x * ny - s1y * nx) / d;\n var t = (s2x * ny - s2y * nx) / d;\n\n if (s >= 0 && s <= 1 && t >= 0 && t <= 1) {\n return new Point(p0.x + t * s1x, p0.y + t * s1y);\n }\n}","import ObserversMixin from '../mixins/observers-mixin';\nimport { Class } from '../common';\n\nvar push = [].push;\nvar pop = [].pop;\nvar splice = [].splice;\nvar shift = [].shift;\nvar slice = [].slice;\nvar unshift = [].unshift;\n\nvar ElementsArray = (function (Class) {\n function ElementsArray(array) {\n if ( array === void 0 ) array = [];\n\n Class.call(this);\n\n this.length = 0;\n this._splice(0, array.length, array);\n }\n\n if ( Class ) ElementsArray.__proto__ = Class;\n ElementsArray.prototype = Object.create( Class && Class.prototype );\n ElementsArray.prototype.constructor = ElementsArray;\n\n ElementsArray.prototype.elements = function elements (value) {\n if (value) {\n this._splice(0, this.length, value);\n\n this._change();\n return this;\n }\n\n return this.slice(0);\n };\n\n ElementsArray.prototype.push = function push$1 () {\n var elements = arguments;\n var result = push.apply(this, elements);\n\n this._add(elements);\n\n return result;\n };\n\n ElementsArray.prototype.slice = function slice$1 () {\n return slice.call(this);\n };\n\n ElementsArray.prototype.pop = function pop$1 () {\n var length = this.length;\n var result = pop.apply(this);\n\n if (length) {\n this._remove([ result ]);\n }\n\n return result;\n };\n\n ElementsArray.prototype.splice = function splice (index, howMany) {\n var elements = slice.call(arguments, 2);\n var result = this._splice(index, howMany, elements);\n\n this._change();\n\n return result;\n };\n\n ElementsArray.prototype.shift = function shift$1 () {\n var length = this.length;\n var result = shift.apply(this);\n\n if (length) {\n this._remove([ result ]);\n }\n\n return result;\n };\n\n ElementsArray.prototype.unshift = function unshift$1 () {\n var elements = arguments;\n var result = unshift.apply(this, elements);\n\n this._add(elements);\n\n return result;\n };\n\n ElementsArray.prototype.indexOf = function indexOf (element) {\n var this$1 = this;\n\n var length = this.length;\n\n for (var idx = 0; idx < length; idx++) {\n if (this$1[idx] === element) {\n return idx;\n }\n }\n return -1;\n };\n\n ElementsArray.prototype._splice = function _splice (index, howMany, elements) {\n var result = splice.apply(this, [ index, howMany ].concat(elements));\n\n this._clearObserver(result);\n this._setObserver(elements);\n\n return result;\n };\n\n ElementsArray.prototype._add = function _add (elements) {\n this._setObserver(elements);\n this._change();\n };\n\n ElementsArray.prototype._remove = function _remove (elements) {\n this._clearObserver(elements);\n this._change();\n };\n\n ElementsArray.prototype._setObserver = function _setObserver (elements) {\n var this$1 = this;\n\n for (var idx = 0; idx < elements.length; idx++) {\n elements[idx].addObserver(this$1);\n }\n };\n\n ElementsArray.prototype._clearObserver = function _clearObserver (elements) {\n var this$1 = this;\n\n for (var idx = 0; idx < elements.length; idx++) {\n elements[idx].removeObserver(this$1);\n }\n };\n\n ElementsArray.prototype._change = function _change () {};\n\n return ElementsArray;\n}(Class));\n\nObserversMixin.extend(ElementsArray.prototype);\n\nexport default ElementsArray;\n","import ElementsArray from './elements-array';\n\nvar GeometryElementsArray = (function (ElementsArray) {\n function GeometryElementsArray () {\n ElementsArray.apply(this, arguments);\n }\n\n if ( ElementsArray ) GeometryElementsArray.__proto__ = ElementsArray;\n GeometryElementsArray.prototype = Object.create( ElementsArray && ElementsArray.prototype );\n GeometryElementsArray.prototype.constructor = GeometryElementsArray;\n\n GeometryElementsArray.prototype._change = function _change () {\n this.geometryChange();\n };\n\n return GeometryElementsArray;\n}(ElementsArray));\n\nexport default GeometryElementsArray;","import { defined } from '../util';\nimport Point from '../geometry/point';\n\nfunction pointAccessor(name) {\n var fieldName = \"_\" + name;\n return function(value) {\n if (defined(value)) {\n this._observerField(fieldName, Point.create(value));\n this.geometryChange();\n return this;\n }\n\n return this[fieldName];\n };\n}\n\nexport default function definePointAccessors(fn, names) {\n for (var i = 0; i < names.length; i++) {\n fn[names[i]] = pointAccessor(names[i]);\n }\n}","import { deg } from '../../util';\nimport transform from '../transform';\n\nexport default function isOutOfEndPoint(endPoint, controlPoint, point) {\n var angle = deg(Math.atan2(controlPoint.y - endPoint.y, controlPoint.x - endPoint.x));\n var rotatedPoint = point.transformCopy(transform().rotate(-angle, endPoint));\n\n return rotatedPoint.x < endPoint.x;\n}","export default function calculateCurveAt(t, field, points) {\n var t1 = 1 - t;\n return Math.pow(t1, 3) * points[0][field] +\n 3 * Math.pow(t1, 2) * t * points[1][field] +\n 3 * Math.pow(t, 2) * t1 * points[2][field] +\n Math.pow(t, 3) * points[3][field];\n}","export default function toCubicPolynomial(points, field) {\n return [ -points[0][field] + 3 * points[1][field] - 3 * points[2][field] + points[3][field],\n 3 * (points[0][field] - 2 * points[1][field] + points[2][field]),\n 3 * (-points[0][field] + points[1][field]),\n points[0][field]\n ];\n}","import { PRECISION } from '../constants';\nimport { Class } from '../../common';\nimport { round } from '../../util';\n\nvar ComplexNumber = (function (Class) {\n function ComplexNumber(real, img) {\n if ( real === void 0 ) real = 0;\n if ( img === void 0 ) img = 0;\n\n Class.call(this);\n\n this.real = real;\n this.img = img;\n }\n\n if ( Class ) ComplexNumber.__proto__ = Class;\n ComplexNumber.prototype = Object.create( Class && Class.prototype );\n ComplexNumber.prototype.constructor = ComplexNumber;\n\n ComplexNumber.prototype.add = function add (cNumber) {\n return new ComplexNumber(round(this.real + cNumber.real, PRECISION), round(this.img + cNumber.img, PRECISION));\n };\n\n ComplexNumber.prototype.addConstant = function addConstant (value) {\n return new ComplexNumber(this.real + value, this.img);\n };\n\n ComplexNumber.prototype.negate = function negate () {\n return new ComplexNumber(-this.real, -this.img);\n };\n\n ComplexNumber.prototype.multiply = function multiply (cNumber) {\n return new ComplexNumber(this.real * cNumber.real - this.img * cNumber.img,\n this.real * cNumber.img + this.img * cNumber.real);\n };\n\n ComplexNumber.prototype.multiplyConstant = function multiplyConstant (value) {\n return new ComplexNumber(this.real * value, this.img * value);\n };\n\n ComplexNumber.prototype.nthRoot = function nthRoot (n) {\n var rad = Math.atan2(this.img, this.real);\n var r = Math.sqrt(Math.pow(this.img, 2) + Math.pow(this.real, 2));\n var nthR = Math.pow(r, 1 / n);\n\n return new ComplexNumber(nthR * Math.cos(rad / n), nthR * Math.sin(rad / n)); //Moivre's formula\n };\n\n ComplexNumber.prototype.equals = function equals (cNumber) {\n return this.real === cNumber.real && this.img === cNumber.img;\n };\n\n ComplexNumber.prototype.isReal = function isReal () {\n return this.img === 0;\n };\n\n return ComplexNumber;\n}(Class));\n\nexport default ComplexNumber;","import ComplexNumber from './complex-number';\nimport { PRECISION } from '../constants';\nimport { round } from '../../util';\n\nfunction numberSign(x) {\n return x < 0 ? -1 : 1;\n}\n\nfunction solveQuadraticEquation(a, b, c) {\n var squareRoot = Math.sqrt(Math.pow(b, 2) - 4 * a * c);\n return [\n (-b + squareRoot) / (2 * a),\n (-b - squareRoot) / (2 * a)\n ];\n}\n\n//Cardano's formula\nexport default function solveCubicEquation(a, b, c, d) {\n if (a === 0) {\n return solveQuadraticEquation(b, c, d);\n }\n\n var p = (3 * a * c - Math.pow(b, 2)) / (3 * Math.pow(a, 2));\n var q = (2 * Math.pow(b, 3) - 9 * a * b * c + 27 * Math.pow(a, 2) * d) / (27 * Math.pow(a, 3));\n var Q = Math.pow(p / 3, 3) + Math.pow(q / 2, 2);\n var i = new ComplexNumber(0,1);\n var b3a = -b / (3 * a);\n var x1, x2, y1, y2, y3, z1, z2;\n\n if (Q < 0) {\n x1 = new ComplexNumber(-q / 2, Math.sqrt(-Q)).nthRoot(3);\n x2 = new ComplexNumber(-q / 2, - Math.sqrt(-Q)).nthRoot(3);\n } else {\n x1 = -q / 2 + Math.sqrt(Q);\n x1 = new ComplexNumber(numberSign(x1) * Math.pow(Math.abs(x1), 1 / 3));\n x2 = -q / 2 - Math.sqrt(Q);\n x2 = new ComplexNumber(numberSign(x2) * Math.pow(Math.abs(x2), 1 / 3));\n }\n\n y1 = x1.add(x2);\n\n z1 = x1.add(x2).multiplyConstant(-1 / 2);\n z2 = x1.add(x2.negate()).multiplyConstant(Math.sqrt(3) / 2);\n\n y2 = z1.add(i.multiply(z2));\n y3 = z1.add(i.negate().multiply(z2));\n\n var result = [];\n\n if (y1.isReal()) {\n result.push(round(y1.real + b3a, PRECISION));\n }\n if (y2.isReal()) {\n result.push(round(y2.real + b3a, PRECISION));\n }\n if (y3.isReal()) {\n result.push(round(y3.real + b3a, PRECISION));\n }\n\n return result;\n}","import toCubicPolynomial from './to-cubic-polynomial';\nimport solveCubicEquation from './solve-cubic-equation';\nimport calculateCurveAt from './calculate-curve-at';\n\nexport default function hasRootsInRange(points, point, field, rootField, range) {\n var polynomial = toCubicPolynomial(points, rootField);\n var roots = solveCubicEquation(polynomial[0], polynomial[1], polynomial[2], polynomial[3] - point[rootField]);\n var intersection;\n\n for (var idx = 0; idx < roots.length; idx++) {\n if (0 <= roots[idx] && roots[idx] <= 1) {\n intersection = calculateCurveAt(roots[idx], field, points);\n if (Math.abs(intersection - point[field]) <= range) {\n return true;\n }\n }\n }\n}","export default function lineIntersectionsCount(a, b, point) {\n var intersects;\n if (a.x !== b.x) {\n var minX = Math.min(a.x, b.x);\n var maxX = Math.max(a.x, b.x);\n var minY = Math.min(a.y, b.y);\n var maxY = Math.max(a.y, b.y);\n var inRange = minX <= point.x && point.x < maxX;\n\n if (minY === maxY) {\n intersects = point.y <= minY && inRange;\n } else {\n intersects = inRange && (((maxY - minY) * ((a.x - b.x) * (a.y - b.y) > 0 ? point.x - minX : maxX - point.x)) / (maxX - minX) + minY - point.y) >= 0;\n }\n }\n\n return intersects ? 1 : 0;\n}","import ObserversMixin from '../mixins/observers-mixin';\nimport { Class } from '../common';\nimport definePointAccessors from '../accessors/define-point-accessors';\nimport Rect from './rect';\nimport Point from './point';\nimport transform from './transform';\nimport { deg, MIN_NUM, MAX_NUM } from '../util';\nimport isOutOfEndPoint from './math/is-out-of-end-point';\nimport calculateCurveAt from './math/calculate-curve-at';\nimport hasRootsInRange from './math/has-roots-in-range';\nimport curveIntersectionsCount from './math/curve-intersections-count';\nimport lineIntersectionsCount from './math/line-intersections-count';\n\nvar Segment = (function (Class) {\n function Segment(anchor, controlIn, controlOut) {\n Class.call(this);\n\n this.anchor(anchor || new Point());\n this.controlIn(controlIn);\n this.controlOut(controlOut);\n }\n\n if ( Class ) Segment.__proto__ = Class;\n Segment.prototype = Object.create( Class && Class.prototype );\n Segment.prototype.constructor = Segment;\n\n Segment.prototype.bboxTo = function bboxTo (toSegment, matrix) {\n var segmentAnchor = this.anchor().transformCopy(matrix);\n var toSegmentAnchor = toSegment.anchor().transformCopy(matrix);\n var rect;\n\n if (this.controlOut() && toSegment.controlIn()) {\n rect = this._curveBoundingBox(\n segmentAnchor, this.controlOut().transformCopy(matrix),\n toSegment.controlIn().transformCopy(matrix), toSegmentAnchor\n );\n } else {\n rect = this._lineBoundingBox(segmentAnchor, toSegmentAnchor);\n }\n\n return rect;\n };\n\n Segment.prototype._lineBoundingBox = function _lineBoundingBox (p1, p2) {\n return Rect.fromPoints(p1, p2);\n };\n\n Segment.prototype._curveBoundingBox = function _curveBoundingBox (p1, cp1, cp2, p2) {\n var points = [ p1, cp1, cp2, p2 ];\n var extremesX = this._curveExtremesFor(points, \"x\");\n var extremesY = this._curveExtremesFor(points, \"y\");\n var xLimits = arrayLimits([ extremesX.min, extremesX.max, p1.x, p2.x ]);\n var yLimits = arrayLimits([ extremesY.min, extremesY.max, p1.y, p2.y ]);\n\n return Rect.fromPoints(new Point(xLimits.min, yLimits.min), new Point(xLimits.max, yLimits.max));\n };\n\n Segment.prototype._curveExtremesFor = function _curveExtremesFor (points, field) {\n var extremes = this._curveExtremes(\n points[0][field], points[1][field],\n points[2][field], points[3][field]\n );\n\n return {\n min: calculateCurveAt(extremes.min, field, points),\n max: calculateCurveAt(extremes.max, field, points)\n };\n };\n\n Segment.prototype._curveExtremes = function _curveExtremes (x1, x2, x3, x4) {\n var a = x1 - 3 * x2 + 3 * x3 - x4;\n var b = - 2 * (x1 - 2 * x2 + x3);\n var c = x1 - x2;\n var sqrt = Math.sqrt(b * b - 4 * a * c);\n var t1 = 0;\n var t2 = 1;\n\n if (a === 0) {\n if (b !== 0) {\n t1 = t2 = -c / b;\n }\n } else if (!isNaN(sqrt)) {\n t1 = (- b + sqrt) / (2 * a);\n t2 = (- b - sqrt) / (2 * a);\n }\n\n var min = Math.max(Math.min(t1, t2), 0);\n if (min < 0 || min > 1) {\n min = 0;\n }\n\n var max = Math.min(Math.max(t1, t2), 1);\n if (max > 1 || max < 0) {\n max = 1;\n }\n\n return {\n min: min,\n max: max\n };\n };\n\n Segment.prototype._intersectionsTo = function _intersectionsTo (segment, point) {\n var intersectionsCount;\n if (this.controlOut() && segment.controlIn()) {\n intersectionsCount = curveIntersectionsCount([ this.anchor(), this.controlOut(), segment.controlIn(), segment.anchor() ], point, this.bboxTo(segment));\n } else {\n intersectionsCount = lineIntersectionsCount(this.anchor(), segment.anchor(), point);\n }\n return intersectionsCount;\n };\n\n Segment.prototype._isOnCurveTo = function _isOnCurveTo (segment, point, width, endSegment) {\n var bbox = this.bboxTo(segment).expand(width, width);\n if (bbox.containsPoint(point)) {\n var p1 = this.anchor();\n var p2 = this.controlOut();\n var p3 = segment.controlIn();\n var p4 = segment.anchor();\n\n if (endSegment === \"start\" && p1.distanceTo(point) <= width) {\n return !isOutOfEndPoint(p1, p2, point);\n } else if (endSegment === \"end\" && p4.distanceTo(point) <= width) {\n return !isOutOfEndPoint(p4, p3, point);\n }\n\n //the approach is not entirely correct but is close and the alternatives are solving a 6th degree polynomial or testing the segment points\n var points = [ p1, p2, p3, p4 ];\n if (hasRootsInRange(points, point, \"x\", \"y\", width) || hasRootsInRange(points, point, \"y\", \"x\", width)) {\n return true;\n }\n var rotation = transform().rotate(45, point);\n var rotatedPoints = [ p1.transformCopy(rotation), p2.transformCopy(rotation), p3.transformCopy(rotation), p4.transformCopy(rotation) ];\n return hasRootsInRange(rotatedPoints, point, \"x\", \"y\", width) || hasRootsInRange(rotatedPoints, point, \"y\", \"x\", width);\n }\n };\n\n Segment.prototype._isOnLineTo = function _isOnLineTo (segment, point, width) {\n var p1 = this.anchor();\n var p2 = segment.anchor();\n var angle = deg(Math.atan2(p2.y - p1.y, p2.x - p1.x));\n var rect = new Rect([ p1.x, p1.y - width / 2 ], [ p1.distanceTo(p2), width ]);\n return rect.containsPoint(point.transformCopy(transform().rotate(-angle, p1)));\n };\n\n Segment.prototype._isOnPathTo = function _isOnPathTo (segment, point, width, endSegment) {\n var isOnPath;\n if (this.controlOut() && segment.controlIn()) {\n isOnPath = this._isOnCurveTo(segment, point, width / 2, endSegment);\n } else {\n isOnPath = this._isOnLineTo(segment, point, width);\n }\n return isOnPath;\n };\n\n return Segment;\n}(Class));\n\ndefinePointAccessors(Segment.prototype, [ \"anchor\", \"controlIn\", \"controlOut\" ]);\nObserversMixin.extend(Segment.prototype);\n\nfunction arrayLimits(arr) {\n var length = arr.length;\n var min = MAX_NUM;\n var max = MIN_NUM;\n\n for (var i = 0; i < length; i ++) {\n max = Math.max(max, arr[i]);\n min = Math.min(min, arr[i]);\n }\n\n return {\n min: min,\n max: max\n };\n}\n\nexport default Segment;","import toCubicPolynomial from './to-cubic-polynomial';\nimport solveCubicEquation from './solve-cubic-equation';\nimport calculateCurveAt from './calculate-curve-at';\nimport close from './close';\n\nexport default function curveIntersectionsCount(points, point, bbox) {\n var polynomial = toCubicPolynomial(points, \"x\");\n var roots = solveCubicEquation(polynomial[0], polynomial[1], polynomial[2], polynomial[3] - point.x);\n var rayIntersection, intersectsRay;\n var count = 0;\n for (var i = 0; i < roots.length; i++) {\n rayIntersection = calculateCurveAt(roots[i], \"y\", points);\n intersectsRay = close(rayIntersection, point.y) || rayIntersection > point.y;\n if (intersectsRay && (((roots[i] === 0 || roots[i] === 1) && bbox.bottomRight().x > point.x) || (0 < roots[i] && roots[i] < 1))) {\n count++;\n }\n }\n\n return count;\n}","import Rect from '../../geometry/rect';\n\nexport default function elementsBoundingBox(elements, applyTransform, transformation) {\n var boundingBox;\n\n for (var i = 0; i < elements.length; i++) {\n var element = elements[i];\n if (element.visible()) {\n var elementBoundingBox = applyTransform ? element.bbox(transformation) : element.rawBBox();\n if (elementBoundingBox) {\n if (boundingBox) {\n boundingBox = Rect.union(boundingBox, elementBoundingBox);\n } else {\n boundingBox = elementBoundingBox;\n }\n }\n }\n }\n\n return boundingBox;\n}\n\n","import Rect from '../../geometry/rect';\n\nexport default function elementsClippedBoundingBox(elements, transformation) {\n var boundingBox;\n\n for (var i = 0; i < elements.length; i++) {\n var element = elements[i];\n if (element.visible()) {\n var elementBoundingBox = element.clippedBBox(transformation);\n if (elementBoundingBox) {\n if (boundingBox) {\n boundingBox = Rect.union(boundingBox, elementBoundingBox);\n } else {\n boundingBox = elementBoundingBox;\n }\n }\n }\n }\n\n return boundingBox;\n}","import GeometryElementsArray from './geometry-elements-array';\nimport Element from './element';\nimport Path from './path';\nimport Paintable from '../mixins/paintable';\nimport Measurable from '../mixins/measurable';\nimport elementsBoundingBox from './utils/elements-bounding-box';\nimport elementsClippedBoundingBox from './utils/elements-clippend-bounding-box';\nimport { defined, last } from '../util';\n\nvar MultiPath = (function (Element) {\n function MultiPath(options) {\n Element.call(this, options);\n this.paths = new GeometryElementsArray();\n this.paths.addObserver(this);\n\n if (!defined(this.options.stroke)) {\n this.stroke(\"#000\");\n }\n }\n\n if ( Element ) MultiPath.__proto__ = Element;\n MultiPath.prototype = Object.create( Element && Element.prototype );\n MultiPath.prototype.constructor = MultiPath;\n\n MultiPath.prototype.moveTo = function moveTo (x, y) {\n var path = new Path();\n path.moveTo(x, y);\n\n this.paths.push(path);\n\n return this;\n };\n\n MultiPath.prototype.lineTo = function lineTo (x, y) {\n if (this.paths.length > 0) {\n last(this.paths).lineTo(x, y);\n }\n\n return this;\n };\n\n MultiPath.prototype.curveTo = function curveTo (controlOut, controlIn, point) {\n if (this.paths.length > 0) {\n last(this.paths).curveTo(controlOut, controlIn, point);\n }\n\n return this;\n };\n\n MultiPath.prototype.arc = function arc (startAngle, endAngle, radiusX, radiusY, anticlockwise) {\n if (this.paths.length > 0) {\n last(this.paths).arc(startAngle, endAngle, radiusX, radiusY, anticlockwise);\n }\n\n return this;\n };\n\n MultiPath.prototype.arcTo = function arcTo (end, rx, ry, largeArc, swipe, rotation) {\n if (this.paths.length > 0) {\n last(this.paths).arcTo(end, rx, ry, largeArc, swipe, rotation);\n }\n\n return this;\n };\n\n MultiPath.prototype.close = function close () {\n if (this.paths.length > 0) {\n last(this.paths).close();\n }\n\n return this;\n };\n\n MultiPath.prototype._bbox = function _bbox (matrix) {\n return elementsBoundingBox(this.paths, true, matrix);\n };\n\n MultiPath.prototype.rawBBox = function rawBBox () {\n return elementsBoundingBox(this.paths, false);\n };\n\n MultiPath.prototype._containsPoint = function _containsPoint (point) {\n var paths = this.paths;\n\n for (var idx = 0; idx < paths.length; idx++) {\n if (paths[idx]._containsPoint(point)) {\n return true;\n }\n }\n return false;\n };\n\n MultiPath.prototype._isOnPath = function _isOnPath (point) {\n var paths = this.paths;\n var width = this.options.stroke.width;\n\n for (var idx = 0; idx < paths.length; idx++) {\n if (paths[idx]._isOnPath(point, width)) {\n return true;\n }\n }\n return false;\n };\n\n MultiPath.prototype._clippedBBox = function _clippedBBox (transformation) {\n return elementsClippedBoundingBox(this.paths, this.currentTransform(transformation));\n };\n\n return MultiPath;\n}(Element));\n\nMultiPath.prototype.nodeType = \"MultiPath\";\n\nPaintable.extend(MultiPath.prototype);\nMeasurable.extend(MultiPath.prototype);\n\nexport default MultiPath;","import Point from '../geometry/point';\nimport { last } from '../util';\n\nvar ShapeMap = {\n l: function(path, options) {\n var parameters = options.parameters;\n var position = options.position;\n\n for (var i = 0; i < parameters.length; i += 2) {\n var point = new Point(parameters[i], parameters[i + 1]);\n\n if (options.isRelative) {\n point.translateWith(position);\n }\n\n path.lineTo(point.x, point.y);\n\n position.x = point.x;\n position.y = point.y;\n }\n },\n\n c: function(path, options) {\n var parameters = options.parameters;\n var position = options.position;\n\n for (var i = 0; i < parameters.length; i += 6) {\n var controlOut = new Point(parameters[i], parameters[i + 1]);\n var controlIn = new Point(parameters[i + 2], parameters[i + 3]);\n var point = new Point(parameters[i + 4], parameters[i + 5]);\n if (options.isRelative) {\n controlIn.translateWith(position);\n controlOut.translateWith(position);\n point.translateWith(position);\n }\n\n path.curveTo(controlOut, controlIn, point);\n\n position.x = point.x;\n position.y = point.y;\n }\n },\n\n v: function(path, options) {\n var value = options.isRelative ? 0 : options.position.x;\n\n toLineParamaters(options.parameters, true, value);\n this.l(path, options);\n },\n\n h: function(path, options) {\n var value = options.isRelative ? 0 : options.position.y;\n\n toLineParamaters(options.parameters, false, value);\n this.l(path, options);\n },\n\n a: function(path, options) {\n var parameters = options.parameters;\n var position = options.position;\n\n for (var i = 0; i < parameters.length; i += 7) {\n var radiusX = parameters[i];\n var radiusY = parameters[i + 1];\n var rotation = parameters[i + 2];\n var largeArc = parameters[i + 3];\n var swipe = parameters[i + 4];\n var endPoint = new Point(parameters[i + 5], parameters[i + 6]);\n\n if (options.isRelative) {\n endPoint.translateWith(position);\n }\n if (position.x !== endPoint.x || position.y !== endPoint.y) {\n path.arcTo(endPoint, radiusX, radiusY, largeArc, swipe, rotation);\n\n position.x = endPoint.x;\n position.y = endPoint.y;\n }\n }\n },\n\n s: function(path, options) {\n var parameters = options.parameters;\n var position = options.position;\n var previousCommand = options.previousCommand;\n var lastControlIn;\n\n if (previousCommand === \"s\" || previousCommand === \"c\") {\n lastControlIn = last(last(path.paths).segments).controlIn();\n }\n\n for (var i = 0; i < parameters.length; i += 4) {\n var controlIn = new Point(parameters[i], parameters[i + 1]);\n var endPoint = new Point(parameters[i + 2], parameters[i + 3]);\n var controlOut = (void 0);\n\n if (options.isRelative) {\n controlIn.translateWith(position);\n endPoint.translateWith(position);\n }\n\n if (lastControlIn) {\n controlOut = reflectionPoint(lastControlIn, position);\n } else {\n controlOut = position.clone();\n }\n\n lastControlIn = controlIn;\n\n path.curveTo(controlOut, controlIn, endPoint);\n\n position.x = endPoint.x;\n position.y = endPoint.y;\n }\n },\n\n q: function(path, options) {\n var parameters = options.parameters;\n var position = options.position;\n\n for (var i = 0; i < parameters.length; i += 4) {\n var controlPoint = new Point(parameters[i], parameters[i + 1]);\n var endPoint = new Point(parameters[i + 2], parameters[i + 3]);\n\n if (options.isRelative) {\n controlPoint.translateWith(position);\n endPoint.translateWith(position);\n }\n\n var cubicControlPoints = quadraticToCubicControlPoints(position, controlPoint, endPoint);\n\n path.curveTo(cubicControlPoints.controlOut, cubicControlPoints.controlIn, endPoint);\n\n position.x = endPoint.x;\n position.y = endPoint.y;\n }\n },\n\n t: function(path, options) {\n var parameters = options.parameters;\n var position = options.position;\n var previousCommand = options.previousCommand;\n var controlPoint;\n\n if (previousCommand === \"q\" || previousCommand === \"t\") {\n var lastSegment = last(last(path.paths).segments);\n controlPoint = lastSegment.controlIn().clone()\n .translateWith(position.scaleCopy(-1 / 3))\n .scale(3 / 2);\n }\n\n for (var i = 0; i < parameters.length; i += 2) {\n var endPoint = new Point(parameters[i], parameters[i + 1]);\n if (options.isRelative) {\n endPoint.translateWith(position);\n }\n\n if (controlPoint) {\n controlPoint = reflectionPoint(controlPoint, position);\n } else {\n controlPoint = position.clone();\n }\n\n var cubicControlPoints = quadraticToCubicControlPoints(position, controlPoint, endPoint);\n\n path.curveTo(cubicControlPoints.controlOut, cubicControlPoints.controlIn, endPoint);\n\n position.x = endPoint.x;\n position.y = endPoint.y;\n }\n }\n};\n\nfunction toLineParamaters(parameters, isVertical, value) {\n var insertPosition = isVertical ? 0 : 1;\n\n for (var i = 0; i < parameters.length; i += 2) {\n parameters.splice(i + insertPosition, 0, value);\n }\n}\n\nfunction reflectionPoint(point, center) {\n if (point && center) {\n return center.scaleCopy(2).translate(-point.x, -point.y);\n }\n}\n\nvar third = 1 / 3;\n\nfunction quadraticToCubicControlPoints(position, controlPoint, endPoint) {\n var scaledPoint = controlPoint.clone().scale(2 / 3);\n return {\n controlOut: scaledPoint.clone().translateWith(position.scaleCopy(third)),\n controlIn: scaledPoint.translateWith(endPoint.scaleCopy(third))\n };\n}\n\nexport default ShapeMap;","import { Class } from '../common';\nimport MultiPath from '../shapes/multi-path';\nimport Point from '../geometry/point';\nimport ShapeMap from './shape-map';\n\nvar SEGMENT_REGEX = /([a-df-z]{1})([^a-df-z]*)(z)?/gi;\nvar SPLIT_REGEX = /[,\\s]?([+\\-]?(?:\\d*\\.\\d+|\\d+)(?:[eE][+\\-]?\\d+)?)/g;\nvar MOVE = \"m\";\nvar CLOSE = \"z\";\n\nfunction parseParameters(str) {\n var parameters = [];\n str.replace(SPLIT_REGEX, function(match, number) {\n parameters.push(parseFloat(number));\n });\n return parameters;\n}\n\nvar PathParser = (function (Class) {\n function PathParser () {\n Class.apply(this, arguments);\n }\n\n if ( Class ) PathParser.__proto__ = Class;\n PathParser.prototype = Object.create( Class && Class.prototype );\n PathParser.prototype.constructor = PathParser;\n\n PathParser.prototype.parse = function parse (str, options) {\n var multiPath = new MultiPath(options);\n var position = new Point();\n var previousCommand;\n\n str.replace(SEGMENT_REGEX, function (match, element, params, closePath) {\n var command = element.toLowerCase();\n var isRelative = command === element;\n var parameters = parseParameters(params.trim());\n\n if (command === MOVE) {\n if (isRelative) {\n position.x += parameters[0];\n position.y += parameters[1];\n } else {\n position.x = parameters[0];\n position.y = parameters[1];\n }\n\n multiPath.moveTo(position.x, position.y);\n\n if (parameters.length > 2) {\n command = \"l\";\n parameters.splice(0, 2);\n }\n }\n\n if (ShapeMap[command]) {\n ShapeMap[command](\n multiPath, {\n parameters: parameters,\n position: position,\n isRelative: isRelative,\n previousCommand: previousCommand\n }\n );\n\n if (closePath && closePath.toLowerCase() === CLOSE) {\n multiPath.close();\n }\n } else if (command !== MOVE) {\n throw new Error(\"Error while parsing SVG path. Unsupported command: \" + command);\n }\n\n previousCommand = command;\n });\n\n return multiPath;\n };\n\n return PathParser;\n}(Class));\n\nPathParser.current = new PathParser();\n\nexport default PathParser;\n","import GeometryElementsArray from './geometry-elements-array';\nimport Element from './element';\nimport Paintable from '../mixins/paintable';\nimport Measurable from '../mixins/measurable';\nimport Arc from '../geometry/arc';\nimport Rect from '../geometry/rect';\nimport Segment from '../geometry/segment';\nimport Point from '../geometry/point';\nimport Size from '../geometry/size';\nimport lineIntersectionsCount from '../geometry/math/line-intersections-count';\nimport { defined, last, rad } from '../util';\nimport PathParser from '../parsing/path-parser';\n\nvar Path = (function (Element) {\n function Path(options) {\n Element.call(this, options);\n this.segments = new GeometryElementsArray();\n this.segments.addObserver(this);\n\n if (!defined(this.options.stroke)) {\n this.stroke(\"#000\");\n\n if (!defined(this.options.stroke.lineJoin)) {\n this.options.set(\"stroke.lineJoin\", \"miter\");\n }\n }\n }\n\n if ( Element ) Path.__proto__ = Element;\n Path.prototype = Object.create( Element && Element.prototype );\n Path.prototype.constructor = Path;\n\n Path.prototype.moveTo = function moveTo (x, y) {\n this.suspend();\n this.segments.elements([]);\n this.resume();\n\n this.lineTo(x, y);\n\n return this;\n };\n\n Path.prototype.lineTo = function lineTo (x, y) {\n var point = defined(y) ? new Point(x, y) : x;\n var segment = new Segment(point);\n\n this.segments.push(segment);\n\n return this;\n };\n\n Path.prototype.curveTo = function curveTo (controlOut, controlIn, point) {\n if (this.segments.length > 0) {\n var lastSegment = last(this.segments);\n var segment = new Segment(point, controlIn);\n this.suspend();\n lastSegment.controlOut(controlOut);\n this.resume();\n\n this.segments.push(segment);\n }\n\n return this;\n };\n\n Path.prototype.arc = function arc (startAngle, endAngle, radiusX, radiusY, anticlockwise) {\n if (this.segments.length > 0) {\n var lastSegment = last(this.segments);\n var anchor = lastSegment.anchor();\n var start = rad(startAngle);\n var center = new Point(anchor.x - radiusX * Math.cos(start),\n anchor.y - radiusY * Math.sin(start));\n var arc = new Arc(center, {\n startAngle: startAngle,\n endAngle: endAngle,\n radiusX: radiusX,\n radiusY: radiusY,\n anticlockwise: anticlockwise\n });\n\n this._addArcSegments(arc);\n }\n\n return this;\n };\n\n Path.prototype.arcTo = function arcTo (end, rx, ry, largeArc, swipe, rotation) {\n if (this.segments.length > 0) {\n var lastSegment = last(this.segments);\n var anchor = lastSegment.anchor();\n var arc = Arc.fromPoints(anchor, end, rx, ry, largeArc, swipe, rotation);\n\n this._addArcSegments(arc);\n }\n return this;\n };\n\n Path.prototype._addArcSegments = function _addArcSegments (arc) {\n var this$1 = this;\n\n this.suspend();\n\n var curvePoints = arc.curvePoints();\n\n for (var i = 1; i < curvePoints.length; i += 3) {\n this$1.curveTo(curvePoints[i], curvePoints[i + 1], curvePoints[i + 2]);\n }\n\n this.resume();\n this.geometryChange();\n };\n\n Path.prototype.close = function close () {\n this.options.closed = true;\n this.geometryChange();\n\n return this;\n };\n\n Path.prototype.rawBBox = function rawBBox () {\n return this._bbox();\n };\n\n Path.prototype._containsPoint = function _containsPoint (point) {\n var segments = this.segments;\n var length = segments.length;\n var intersectionsCount = 0;\n var previous, current;\n\n for (var idx = 1; idx < length; idx++) {\n previous = segments[idx - 1];\n current = segments[idx];\n intersectionsCount += previous._intersectionsTo(current, point);\n }\n\n if (this.options.closed || !segments[0].anchor().equals(segments[length - 1].anchor())) {\n intersectionsCount += lineIntersectionsCount(segments[0].anchor(), segments[length - 1].anchor(), point);\n }\n\n return intersectionsCount % 2 !== 0;\n };\n\n Path.prototype._isOnPath = function _isOnPath (point, width) {\n var segments = this.segments;\n var length = segments.length;\n var pathWidth = width || this.options.stroke.width;\n\n if (length > 1) {\n if (segments[0]._isOnPathTo(segments[1], point, pathWidth, \"start\")) {\n return true;\n }\n\n for (var idx = 2; idx <= length - 2; idx++) {\n if (segments[idx - 1]._isOnPathTo(segments[idx], point, pathWidth)) {\n return true;\n }\n }\n\n if (segments[length - 2]._isOnPathTo(segments[length - 1], point, pathWidth, \"end\")) {\n return true;\n }\n }\n return false;\n };\n\n Path.prototype._bbox = function _bbox (matrix) {\n var segments = this.segments;\n var length = segments.length;\n var boundingBox;\n\n if (length === 1) {\n var anchor = segments[0].anchor().transformCopy(matrix);\n boundingBox = new Rect(anchor, Size.ZERO);\n } else if (length > 0) {\n for (var i = 1; i < length; i++) {\n var segmentBox = segments[i - 1].bboxTo(segments[i], matrix);\n if (boundingBox) {\n boundingBox = Rect.union(boundingBox, segmentBox);\n } else {\n boundingBox = segmentBox;\n }\n }\n }\n\n return boundingBox;\n };\n\n Path.fromRect = function fromRect (rect, options) {\n return new Path(options)\n .moveTo(rect.topLeft())\n .lineTo(rect.topRight())\n .lineTo(rect.bottomRight())\n .lineTo(rect.bottomLeft())\n .close();\n };\n\n Path.fromPoints = function fromPoints (points, options) {\n if (points) {\n var path = new Path(options);\n\n for (var i = 0; i < points.length; i++) {\n var point = Point.create(points[i]);\n if (point) {\n if (i === 0) {\n path.moveTo(point);\n } else {\n path.lineTo(point);\n }\n }\n }\n\n return path;\n }\n };\n\n Path.fromArc = function fromArc (arc, options) {\n var path = new Path(options);\n var startAngle = arc.startAngle;\n var start = arc.pointAt(startAngle);\n path.moveTo(start.x, start.y);\n path.arc(startAngle, arc.endAngle, arc.radiusX, arc.radiusY, arc.anticlockwise);\n return path;\n };\n\n return Path;\n}(Element));\n\nPath.prototype.nodeType = \"Path\";\n\nPaintable.extend(Path.prototype);\nMeasurable.extend(Path.prototype);\n\nPath.parse = function(str, options) {\n return PathParser.current.parse(str, options);\n};\n\nexport default Path;\n","import GeometryArc from '../geometry/arc';\nimport Element from './element';\nimport Path from './path';\nimport Paintable from '../mixins/paintable';\nimport Measurable from '../mixins/measurable';\nimport defineGeometryAccessors from '../accessors/define-geometry-accessors';\nimport { defined } from '../util';\n\nvar DEFAULT_STROKE = \"#000\";\n\nvar Arc = (function (Element) {\n function Arc(geometry, options) {\n if ( geometry === void 0 ) geometry = new GeometryArc();\n if ( options === void 0 ) options = {};\n\n Element.call(this, options);\n\n this.geometry(geometry);\n\n if (!defined(this.options.stroke)) {\n this.stroke(DEFAULT_STROKE);\n }\n }\n\n if ( Element ) Arc.__proto__ = Element;\n Arc.prototype = Object.create( Element && Element.prototype );\n Arc.prototype.constructor = Arc;\n\n Arc.prototype._bbox = function _bbox (matrix) {\n return this._geometry.bbox(matrix);\n };\n\n Arc.prototype.rawBBox = function rawBBox () {\n return this.geometry().bbox();\n };\n\n Arc.prototype.toPath = function toPath () {\n var path = new Path();\n var curvePoints = this.geometry().curvePoints();\n\n if (curvePoints.length > 0) {\n path.moveTo(curvePoints[0].x, curvePoints[0].y);\n\n for (var i = 1; i < curvePoints.length; i += 3) {\n path.curveTo(curvePoints[i], curvePoints[i + 1], curvePoints[i + 2]);\n }\n }\n\n return path;\n };\n\n Arc.prototype._containsPoint = function _containsPoint (point) {\n return this.geometry().containsPoint(point);\n };\n\n Arc.prototype._isOnPath = function _isOnPath (point) {\n return this.geometry()._isOnPath(point, this.options.stroke.width / 2);\n };\n\n return Arc;\n}(Element));\n\nArc.prototype.nodeType = \"Arc\";\n\nPaintable.extend(Arc.prototype);\nMeasurable.extend(Arc.prototype);\ndefineGeometryAccessors(Arc.prototype, [ \"geometry\" ]);\n\nexport default Arc;","import Element from './element';\nimport Point from '../geometry/point';\nimport Rect from '../geometry/rect';\nimport toMatrix from '../geometry/to-matrix';\nimport Paintable from '../mixins/paintable';\nimport definePointAccessors from '../accessors/define-point-accessors';\nimport { defined, measureText } from '../util';\n\nvar DEFAULT_FONT = \"12px sans-serif\";\nvar DEFAULT_FILL = \"#000\";\n\nvar Text = (function (Element) {\n function Text(content, position, options) {\n if ( position === void 0 ) position = new Point();\n if ( options === void 0 ) options = {};\n\n Element.call(this, options);\n\n this.content(content);\n this.position(position);\n\n if (!this.options.font) {\n this.options.font = DEFAULT_FONT;\n }\n\n if (!defined(this.options.fill)) {\n this.fill(DEFAULT_FILL);\n }\n }\n\n if ( Element ) Text.__proto__ = Element;\n Text.prototype = Object.create( Element && Element.prototype );\n Text.prototype.constructor = Text;\n\n Text.prototype.content = function content (value) {\n if (defined(value)) {\n this.options.set(\"content\", value);\n return this;\n }\n\n return this.options.get(\"content\");\n };\n\n Text.prototype.measure = function measure () {\n var metrics = measureText(this.content(), {\n font: this.options.get(\"font\")\n });\n\n return metrics;\n };\n\n Text.prototype.rect = function rect () {\n var size = this.measure();\n var pos = this.position().clone();\n return new Rect(pos, [ size.width, size.height ]);\n };\n\n Text.prototype.bbox = function bbox (transformation) {\n var combinedMatrix = toMatrix(this.currentTransform(transformation));\n return this.rect().bbox(combinedMatrix);\n };\n\n Text.prototype.rawBBox = function rawBBox () {\n return this.rect().bbox();\n };\n\n Text.prototype._containsPoint = function _containsPoint (point) {\n return this.rect().containsPoint(point);\n };\n\n return Text;\n}(Element));\n\nText.prototype.nodeType = \"Text\";\n\nPaintable.extend(Text.prototype);\n\ndefinePointAccessors(Text.prototype, [ \"position\" ]);\n\nexport default Text;","import defineGeometryAccessors from '../accessors/define-geometry-accessors';\nimport Element from './element';\nimport Rect from '../geometry/rect';\nimport toMatrix from '../geometry/to-matrix';\nimport { defined } from '../util';\n\nvar Image = (function (Element) {\n function Image(src, rect, options) {\n if ( rect === void 0 ) rect = new Rect();\n if ( options === void 0 ) options = {};\n\n Element.call(this, options);\n\n this.src(src);\n this.rect(rect);\n }\n\n if ( Element ) Image.__proto__ = Element;\n Image.prototype = Object.create( Element && Element.prototype );\n Image.prototype.constructor = Image;\n\n Image.prototype.src = function src (value) {\n if (defined(value)) {\n this.options.set(\"src\", value);\n return this;\n }\n\n return this.options.get(\"src\");\n };\n\n Image.prototype.bbox = function bbox (transformation) {\n var combinedMatrix = toMatrix(this.currentTransform(transformation));\n return this._rect.bbox(combinedMatrix);\n };\n\n Image.prototype.rawBBox = function rawBBox () {\n return this._rect.bbox();\n };\n\n Image.prototype._containsPoint = function _containsPoint (point) {\n return this._rect.containsPoint(point);\n };\n\n Image.prototype._hasFill = function _hasFill () {\n return this.src();\n };\n\n return Image;\n}(Element));\n\nImage.prototype.nodeType = \"Image\";\n\ndefineGeometryAccessors(Image.prototype, [ \"rect\" ]);\n\nexport default Image;","\nvar Traversable = {\n extend: function(proto, childrenField) {\n proto.traverse = function(callback) {\n var children = this[childrenField];\n\n for (var i = 0; i < children.length; i++) {\n var child = children[i];\n\n if (child.traverse) {\n child.traverse(callback);\n } else {\n callback(child);\n }\n }\n\n return this;\n };\n }\n};\n\nexport default Traversable;","import Element from './element';\nimport Traversable from '../mixins/traversable';\nimport { append } from '../util';\nimport elementsBoundingBox from './utils/elements-bounding-box';\nimport elementsClippedBoundingBox from './utils/elements-clippend-bounding-box';\n\nvar Group = (function (Element) {\n function Group(options) {\n Element.call(this, options);\n this.children = [];\n }\n\n if ( Element ) Group.__proto__ = Element;\n Group.prototype = Object.create( Element && Element.prototype );\n Group.prototype.constructor = Group;\n\n Group.prototype.childrenChange = function childrenChange (action, items, index) {\n this.trigger(\"childrenChange\",{\n action: action,\n items: items,\n index: index\n });\n };\n\n Group.prototype.append = function append$1 () {\n append(this.children, arguments);\n this._reparent(arguments, this);\n\n this.childrenChange(\"add\", arguments);\n\n return this;\n };\n\n Group.prototype.insert = function insert (index, element) {\n this.children.splice(index, 0, element);\n element.parent = this;\n\n this.childrenChange(\"add\", [ element ], index);\n\n return this;\n };\n\n Group.prototype.insertAt = function insertAt (element, index) {\n return this.insert(index, element);\n };\n\n Group.prototype.remove = function remove (element) {\n var index = this.children.indexOf(element);\n if (index >= 0) {\n this.children.splice(index, 1);\n element.parent = null;\n this.childrenChange(\"remove\", [ element ], index);\n }\n\n return this;\n };\n\n Group.prototype.removeAt = function removeAt (index) {\n if (0 <= index && index < this.children.length) {\n var element = this.children[index];\n this.children.splice(index, 1);\n element.parent = null;\n this.childrenChange(\"remove\", [ element ], index);\n }\n\n return this;\n };\n\n Group.prototype.clear = function clear () {\n var items = this.children;\n this.children = [];\n this._reparent(items, null);\n\n this.childrenChange(\"remove\", items, 0);\n\n return this;\n };\n\n Group.prototype.bbox = function bbox (transformation) {\n return elementsBoundingBox(this.children, true, this.currentTransform(transformation));\n };\n\n Group.prototype.rawBBox = function rawBBox () {\n return elementsBoundingBox(this.children, false);\n };\n\n Group.prototype._clippedBBox = function _clippedBBox (transformation) {\n return elementsClippedBoundingBox(this.children, this.currentTransform(transformation));\n };\n\n Group.prototype.currentTransform = function currentTransform (transformation) {\n return Element.prototype.currentTransform.call(this, transformation) || null;\n };\n\n Group.prototype.containsPoint = function containsPoint (point, parentTransform) {\n if (this.visible()) {\n var children = this.children;\n var transform = this.currentTransform(parentTransform);\n for (var idx = 0; idx < children.length; idx++) {\n if (children[idx].containsPoint(point, transform)) {\n return true;\n }\n }\n }\n return false;\n };\n\n Group.prototype._reparent = function _reparent (elements, newParent) {\n var this$1 = this;\n\n for (var i = 0; i < elements.length; i++) {\n var child = elements[i];\n var parent = child.parent;\n if (parent && parent !== this$1 && parent.remove) {\n parent.remove(child);\n }\n\n child.parent = newParent;\n }\n };\n\n return Group;\n}(Element));\n\nGroup.prototype.nodeType = \"Group\";\n\nTraversable.extend(Group.prototype, \"children\");\n\nexport default Group;","\nexport default function alignStart(size, rect, align, axis, sizeField) {\n var start;\n if (align === \"start\") {\n start = rect.origin[axis];\n } else if (align === \"end\") {\n start = rect.origin[axis] + rect.size[sizeField] - size;\n } else {\n start = rect.origin[axis] + (rect.size[sizeField] - size) / 2;\n }\n\n return start;\n}","\nexport default function alignStartReverse(size, rect, align, axis, sizeField) {\n var start;\n if (align === \"start\") {\n start = rect.origin[axis] + rect.size[sizeField] - size;\n } else if (align === \"end\") {\n start = rect.origin[axis];\n } else {\n start = rect.origin[axis] + (rect.size[sizeField] - size) / 2;\n }\n\n return start;\n}","import Group from './group';\nimport Size from '../geometry/size';\nimport Rect from '../geometry/rect';\nimport Point from '../geometry/point';\nimport createTransform from '../geometry/transform';\nimport translateToPoint from '../alignment/translate-to-point';\nimport alignStart from '../alignment/align-start';\nimport alignStartReverse from '../alignment/align-start-reverse';\n\nvar DEFAULT_OPTIONS = {\n alignContent: \"start\",\n justifyContent: \"start\",\n alignItems: \"start\",\n spacing: 0,\n orientation: \"horizontal\",\n lineSpacing: 0,\n wrap: true,\n revers: false\n};\n\nvar forEach = function (elements, callback) {\n elements.forEach(callback);\n};\n\nvar forEachReverse = function (elements, callback) {\n var length = elements.length;\n\n for (var idx = length - 1; idx >= 0; idx--) {\n callback(elements[idx], idx);\n }\n};\n\nvar Layout = (function (Group) {\n function Layout(rect, options) {\n Group.call(this, Object.assign({}, DEFAULT_OPTIONS, options));\n this._rect = rect;\n this._fieldMap = {};\n }\n\n if ( Group ) Layout.__proto__ = Group;\n Layout.prototype = Object.create( Group && Group.prototype );\n Layout.prototype.constructor = Layout;\n\n Layout.prototype.rect = function rect (value) {\n if (value) {\n this._rect = value;\n return this;\n }\n\n return this._rect;\n };\n\n Layout.prototype._initMap = function _initMap () {\n var options = this.options;\n var fieldMap = this._fieldMap;\n if (options.orientation === \"horizontal\") {\n fieldMap.sizeField = \"width\";\n fieldMap.groupsSizeField = \"height\";\n fieldMap.groupAxis = \"x\";\n fieldMap.groupsAxis = \"y\";\n } else {\n fieldMap.sizeField = \"height\";\n fieldMap.groupsSizeField = \"width\";\n fieldMap.groupAxis = \"y\";\n fieldMap.groupsAxis = \"x\";\n }\n\n if (options.reverse) {\n this.forEach = forEachReverse;\n this.justifyAlign = alignStartReverse;\n } else {\n this.forEach = forEach;\n this.justifyAlign = alignStart;\n }\n };\n\n Layout.prototype.reflow = function reflow () {\n var this$1 = this;\n\n if (!this._rect || this.children.length === 0) {\n return;\n }\n this._initMap();\n\n if (this.options.transform) {\n this.transform(null);\n }\n\n var options = this.options;\n var rect = this._rect;\n var ref = this._initGroups();\n var groups = ref.groups;\n var groupsSize = ref.groupsSize;\n var ref$1 = this._fieldMap;\n var sizeField = ref$1.sizeField;\n var groupsSizeField = ref$1.groupsSizeField;\n var groupAxis = ref$1.groupAxis;\n var groupsAxis = ref$1.groupsAxis;\n var groupOrigin = new Point();\n var elementOrigin = new Point();\n var size = new Size();\n var groupStart = alignStart(groupsSize, rect, options.alignContent, groupsAxis, groupsSizeField);\n var elementStart, group, groupBox;\n\n var arrangeElements = function (bbox, idx) {\n var element = group.elements[idx];\n\n elementOrigin[groupAxis] = elementStart;\n elementOrigin[groupsAxis] = alignStart(bbox.size[groupsSizeField], groupBox, options.alignItems, groupsAxis, groupsSizeField);\n translateToPoint(elementOrigin, bbox, element);\n elementStart += bbox.size[sizeField] + options.spacing;\n };\n\n for (var groupIdx = 0; groupIdx < groups.length; groupIdx++) {\n group = groups[groupIdx];\n groupOrigin[groupAxis] = elementStart = this$1.justifyAlign(group.size, rect, options.justifyContent, groupAxis, sizeField);\n groupOrigin[groupsAxis] = groupStart;\n size[sizeField] = group.size;\n size[groupsSizeField] = group.lineSize;\n groupBox = new Rect(groupOrigin, size);\n this$1.forEach(group.bboxes, arrangeElements);\n\n groupStart += group.lineSize + options.lineSpacing;\n }\n\n if (!options.wrap && group.size > rect.size[sizeField]) {\n var scale = rect.size[sizeField] / groupBox.size[sizeField];\n var scaledStart = groupBox.topLeft().scale(scale, scale);\n var scaledSize = groupBox.size[groupsSizeField] * scale;\n var newStart = alignStart(scaledSize, rect, options.alignContent, groupsAxis, groupsSizeField);\n var transform = createTransform();\n if (groupAxis === \"x\") {\n transform.translate(rect.origin.x - scaledStart.x, newStart - scaledStart.y);\n } else {\n transform.translate(newStart - scaledStart.x, rect.origin.y - scaledStart.y);\n }\n transform.scale(scale, scale);\n\n this.transform(transform);\n }\n };\n\n Layout.prototype._initGroups = function _initGroups () {\n var this$1 = this;\n\n var ref = this;\n var options = ref.options;\n var children = ref.children;\n var lineSpacing = options.lineSpacing;\n var wrap = options.wrap;\n var spacing = options.spacing;\n var sizeField = this._fieldMap.sizeField;\n var group = this._newGroup();\n var groups = [];\n var addGroup = function() {\n groups.push(group);\n groupsSize += group.lineSize + lineSpacing;\n };\n var groupsSize = -lineSpacing;\n\n for (var idx = 0; idx < children.length; idx++) {\n var element = children[idx];\n var bbox = children[idx].clippedBBox();\n if (element.visible() && bbox) {\n if (wrap && group.size + bbox.size[sizeField] + spacing > this$1._rect.size[sizeField]) {\n if (group.bboxes.length === 0) {\n this$1._addToGroup(group, bbox, element);\n addGroup();\n group = this$1._newGroup();\n } else {\n addGroup();\n group = this$1._newGroup();\n this$1._addToGroup(group, bbox, element);\n }\n } else {\n this$1._addToGroup(group, bbox, element);\n }\n }\n }\n\n if (group.bboxes.length) {\n addGroup();\n }\n\n return {\n groups: groups,\n groupsSize: groupsSize\n };\n };\n\n Layout.prototype._addToGroup = function _addToGroup (group, bbox, element) {\n group.size += bbox.size[this._fieldMap.sizeField] + this.options.spacing;\n group.lineSize = Math.max(bbox.size[this._fieldMap.groupsSizeField], group.lineSize);\n group.bboxes.push(bbox);\n group.elements.push(element);\n };\n\n Layout.prototype._newGroup = function _newGroup () {\n return {\n lineSize: 0,\n size: -this.options.spacing,\n bboxes: [],\n elements: []\n };\n };\n\n return Layout;\n}(Group));\n\nexport default Layout;","import createTransform from '../geometry/transform';\n\nexport default function translateToPoint(point, bbox, element) {\n var transofrm = element.transform() || createTransform();\n var matrix = transofrm.matrix();\n matrix.e += point.x - bbox.origin.x;\n matrix.f += point.y - bbox.origin.y;\n\n transofrm.matrix(matrix);\n element.transform(transofrm);\n}","import defineGeometryAccessors from '../accessors/define-geometry-accessors';\nimport Element from './element';\nimport Paintable from '../mixins/paintable';\nimport Measurable from '../mixins/measurable';\nimport GeometryRect from '../geometry/rect';\nimport { defined } from '../util';\n\nvar Rect = (function (Element) {\n function Rect(geometry, options) {\n if ( geometry === void 0 ) geometry = new GeometryRect();\n if ( options === void 0 ) options = {};\n\n Element.call(this, options);\n this.geometry(geometry);\n\n if (!defined(this.options.stroke)) {\n this.stroke(\"#000\");\n }\n }\n\n if ( Element ) Rect.__proto__ = Element;\n Rect.prototype = Object.create( Element && Element.prototype );\n Rect.prototype.constructor = Rect;\n\n Rect.prototype._bbox = function _bbox (matrix) {\n return this._geometry.bbox(matrix);\n };\n\n Rect.prototype.rawBBox = function rawBBox () {\n return this._geometry.bbox();\n };\n\n Rect.prototype._containsPoint = function _containsPoint (point) {\n return this._geometry.containsPoint(point);\n };\n\n Rect.prototype._isOnPath = function _isOnPath (point) {\n return this.geometry()._isOnPath(point, this.options.stroke.width / 2);\n };\n\n return Rect;\n}(Element));\n\nRect.prototype.nodeType = \"Rect\";\n\nPaintable.extend(Rect.prototype);\nMeasurable.extend(Rect.prototype);\ndefineGeometryAccessors(Rect.prototype, [ \"geometry\" ]);\n\nexport default Rect;\n\n","import ElementsArray from '../shapes/elements-array';\n\nvar StopsArray = (function (ElementsArray) {\n function StopsArray () {\n ElementsArray.apply(this, arguments);\n }\n\n if ( ElementsArray ) StopsArray.__proto__ = ElementsArray;\n StopsArray.prototype = Object.create( ElementsArray && ElementsArray.prototype );\n StopsArray.prototype.constructor = StopsArray;\n\n StopsArray.prototype._change = function _change () {\n this.optionsChange({\n field: \"stops\"\n });\n };\n\n return StopsArray;\n}(ElementsArray));\n\nexport default StopsArray;","import { defined } from '../util';\n\nfunction optionsAccessor(name) {\n return function(value) {\n if (defined(value)) {\n this.options.set(name, value);\n return this;\n }\n\n return this.options.get(name);\n };\n}\n\nexport default function defineOptionsAccessors(fn, names) {\n for (var i = 0; i < names.length; i++) {\n fn[names[i]] = optionsAccessor(names[i]);\n }\n}","import defineOptionsAccessors from '../accessors/define-options-accessors';\nimport OptionsStore from '../core/options-store';\nimport ObserversMixin from '../mixins/observers-mixin';\nimport { Class } from '../common';\nimport { defined } from '../util';\n\nvar GradientStop = (function (Class) {\n function GradientStop(offset, color, opacity) {\n Class.call(this);\n\n this.options = new OptionsStore({\n offset: offset,\n color: color,\n opacity: defined(opacity) ? opacity : 1\n });\n this.options.addObserver(this);\n }\n\n if ( Class ) GradientStop.__proto__ = Class;\n GradientStop.prototype = Object.create( Class && Class.prototype );\n GradientStop.prototype.constructor = GradientStop;\n\n GradientStop.create = function create (arg) {\n if (defined(arg)) {\n var stop;\n if (arg instanceof GradientStop) {\n stop = arg;\n } else if (arg.length > 1) {\n stop = new GradientStop(arg[0], arg[1], arg[2]);\n } else {\n stop = new GradientStop(arg.offset, arg.color, arg.opacity);\n }\n\n return stop;\n }\n };\n\n return GradientStop;\n}(Class));\n\ndefineOptionsAccessors(GradientStop.prototype, [ \"offset\", \"color\", \"opacity\" ]);\nObserversMixin.extend(GradientStop.prototype);\n\nexport default GradientStop;\n","import ObserversMixin from '../mixins/observers-mixin';\nimport StopsArray from './stops-array';\nimport GradientStop from './gradient-stop';\nimport { Class } from '../common';\nimport { defined, definitionId } from '../util';\n\nvar Gradient = (function (Class) {\n function Gradient(options) {\n if ( options === void 0 ) options = {};\n\n Class.call(this);\n\n this.stops = new StopsArray(this._createStops(options.stops));\n this.stops.addObserver(this);\n this._userSpace = options.userSpace;\n this.id = definitionId();\n }\n\n if ( Class ) Gradient.__proto__ = Class;\n Gradient.prototype = Object.create( Class && Class.prototype );\n Gradient.prototype.constructor = Gradient;\n\n Gradient.prototype.userSpace = function userSpace (value) {\n if (defined(value)) {\n this._userSpace = value;\n this.optionsChange();\n return this;\n }\n\n return this._userSpace;\n };\n\n Gradient.prototype._createStops = function _createStops (stops) {\n if ( stops === void 0 ) stops = [];\n\n var result = [];\n for (var idx = 0; idx < stops.length; idx++) {\n result.push(GradientStop.create(stops[idx]));\n }\n\n return result;\n };\n\n Gradient.prototype.addStop = function addStop (offset, color, opacity) {\n this.stops.push(new GradientStop(offset, color, opacity));\n };\n\n Gradient.prototype.removeStop = function removeStop (stop) {\n var index = this.stops.indexOf(stop);\n if (index >= 0) {\n this.stops.splice(index, 1);\n }\n };\n\n return Gradient;\n}(Class));\n\nGradient.prototype.nodeType = \"Gradient\";\n\nObserversMixin.extend(Gradient.prototype);\n\nObject.assign(Gradient.prototype, {\n optionsChange: function(e) {\n this.trigger(\"optionsChange\", {\n field: \"gradient\" + (e ? \".\" + e.field : \"\"),\n value: this\n });\n },\n\n geometryChange: function() {\n this.optionsChange();\n }\n});\n\nexport default Gradient;","import definePointAccessors from '../accessors/define-point-accessors';\nimport Point from '../geometry/point';\nimport Gradient from './gradient';\n\nvar LinearGradient = (function (Gradient) {\n function LinearGradient(options) {\n if ( options === void 0 ) options = {};\n\n Gradient.call(this, options);\n\n this.start(options.start || new Point());\n\n this.end(options.end || new Point(1, 0));\n }\n\n if ( Gradient ) LinearGradient.__proto__ = Gradient;\n LinearGradient.prototype = Object.create( Gradient && Gradient.prototype );\n LinearGradient.prototype.constructor = LinearGradient;\n\n return LinearGradient;\n}(Gradient));\n\ndefinePointAccessors(LinearGradient.prototype, [ \"start\", \"end\" ]);\n\nexport default LinearGradient;","import definePointAccessors from '../accessors/define-point-accessors';\nimport Point from '../geometry/point';\nimport Gradient from './gradient';\nimport { defined } from '../util';\n\nvar RadialGradient = (function (Gradient) {\n function RadialGradient(options) {\n if ( options === void 0 ) options = {};\n\n Gradient.call(this, options);\n\n this.center(options.center || new Point());\n this._radius = defined(options.radius) ? options.radius : 1;\n this._fallbackFill = options.fallbackFill;\n }\n\n if ( Gradient ) RadialGradient.__proto__ = Gradient;\n RadialGradient.prototype = Object.create( Gradient && Gradient.prototype );\n RadialGradient.prototype.constructor = RadialGradient;\n\n RadialGradient.prototype.radius = function radius (value) {\n if (defined(value)) {\n this._radius = value;\n this.geometryChange();\n return this;\n }\n\n return this._radius;\n };\n\n RadialGradient.prototype.fallbackFill = function fallbackFill (value) {\n if (defined(value)) {\n this._fallbackFill = value;\n this.optionsChange();\n return this;\n }\n\n return this._fallbackFill;\n };\n\n return RadialGradient;\n}(Gradient));\n\ndefinePointAccessors(RadialGradient.prototype, [ \"center\" ]);\n\nexport default RadialGradient;","export function swing(position) {\n return 0.5 - Math.cos(position * Math.PI) / 2;\n}\n\nexport function linear(position) {\n return position;\n}\n\nexport function easeOutElastic(position, time, start, diff) {\n var s = 1.70158,\n p = 0,\n a = diff;\n\n if (position === 0) {\n return start;\n }\n\n if (position === 1) {\n return start + diff;\n }\n\n if (!p) {\n p = 0.5;\n }\n\n if (a < Math.abs(diff)) {\n a = diff;\n s = p / 4;\n } else {\n s = p / (2 * Math.PI) * Math.asin(diff / a);\n }\n\n return a * Math.pow(2, -10 * position) *\n Math.sin((Number(position) - s) * (1.1 * Math.PI) / p) + diff + start;\n}\n","import { Class } from '../common';\n\nvar AnimationFactory = (function (Class) {\n function AnimationFactory() {\n Class.call(this);\n\n this._items = [];\n }\n\n if ( Class ) AnimationFactory.__proto__ = Class;\n AnimationFactory.prototype = Object.create( Class && Class.prototype );\n AnimationFactory.prototype.constructor = AnimationFactory;\n\n AnimationFactory.prototype.register = function register (name, type) {\n this._items.push({\n name: name,\n type: type\n });\n };\n\n AnimationFactory.prototype.create = function create (element, options) {\n var items = this._items;\n var match;\n\n if (options && options.type) {\n var type = options.type.toLowerCase();\n for (var i = 0; i < items.length; i++) {\n if (items[i].name.toLowerCase() === type) {\n match = items[i];\n break;\n }\n }\n }\n\n if (match) {\n return new match.type(element, options);\n }\n };\n\n return AnimationFactory;\n}(Class));\n\nAnimationFactory.current = new AnimationFactory();\n\nexport default AnimationFactory;\n","import * as easingFunctions from './easing-functions';\nimport { limitValue } from '../util';\nimport { animationFrame, Class } from '../common';\nimport AnimationFactory from './animation-factory';\n\nvar now = Date.now || function() {\n return new Date().getTime();\n};\n\nvar Animation = (function (Class) {\n function Animation(element, options) {\n Class.call(this);\n\n this.options = Object.assign({}, this.options, options);\n this.element = element;\n }\n\n if ( Class ) Animation.__proto__ = Class;\n Animation.prototype = Object.create( Class && Class.prototype );\n Animation.prototype.constructor = Animation;\n\n Animation.prototype.setup = function setup () {};\n Animation.prototype.step = function step () {};\n\n Animation.prototype.play = function play () {\n var this$1 = this;\n\n var options = this.options;\n var duration = options.duration;\n var delay = options.delay; if ( delay === void 0 ) delay = 0;\n var easing = easingFunctions[options.easing];\n var start = now() + delay;\n var finish = start + duration;\n\n if (duration === 0) {\n this.step(1);\n this.abort();\n } else {\n setTimeout(function () {\n var loop = function () {\n if (this$1._stopped) {\n return;\n }\n\n var wallTime = now();\n\n var time = limitValue(wallTime - start, 0, duration);\n var position = time / duration;\n var easingPosition = easing(position, time, 0, 1, duration);\n\n this$1.step(easingPosition);\n\n if (wallTime < finish) {\n animationFrame(loop);\n } else {\n this$1.abort();\n }\n };\n\n loop();\n }, delay);\n }\n };\n\n Animation.prototype.abort = function abort () {\n this._stopped = true;\n };\n\n Animation.prototype.destroy = function destroy () {\n this.abort();\n };\n\n return Animation;\n}(Class));\n\nAnimation.prototype.options = {\n duration: 500,\n easing: \"swing\"\n};\n\nAnimation.create = function(type, element, options) {\n return AnimationFactory.current.create(type, element, options);\n};\n\nexport default Animation;\n","export default function limitValue(value, min, max) {\n return Math.max(Math.min(value, max), min);\n}","import { Class, logToConsole } from '../common';\n\nvar SurfaceFactory = (function (Class) {\n function SurfaceFactory() {\n Class.call(this);\n\n this._items = [];\n }\n\n if ( Class ) SurfaceFactory.__proto__ = Class;\n SurfaceFactory.prototype = Object.create( Class && Class.prototype );\n SurfaceFactory.prototype.constructor = SurfaceFactory;\n\n SurfaceFactory.prototype.register = function register (name, type, order) {\n var items = this._items;\n var first = items[0];\n var entry = {\n name: name,\n type: type,\n order: order\n };\n\n if (!first || order < first.order) {\n items.unshift(entry);\n } else {\n items.push(entry);\n }\n };\n\n SurfaceFactory.prototype.create = function create (element, options) {\n var items = this._items;\n var match = items[0];\n\n if (options && options.type) {\n var preferred = options.type.toLowerCase();\n for (var i = 0; i < items.length; i++) {\n if (items[i].name === preferred) {\n match = items[i];\n break;\n }\n }\n }\n\n if (match) {\n return new match.type(element, options);\n }\n\n logToConsole(\n \"Warning: Unable to create Kendo UI Drawing Surface. Possible causes:\\n\" +\n \"- The browser does not support SVG and Canvas. User agent: \" + (navigator.userAgent));\n };\n\n return SurfaceFactory;\n}(Class));\n\nSurfaceFactory.current = new SurfaceFactory();\n\nexport default SurfaceFactory;","/* eslint-disable no-console */\n\nexport default function logToConsole(message) {\n var console = window.console;\n\n if (typeof(console) != \"undefined\" && console.log) {\n console.log(message);\n }\n}","import Group from '../shapes/group';\nimport Point from '../geometry/point';\nimport SurfaceFactory from './surface-factory';\nimport { Observable } from '../common';\nimport { eventElement, eventCoordinates, elementStyles, elementSize, elementOffset } from '../util';\n\nvar events = [\n \"click\",\n \"mouseenter\",\n \"mouseleave\",\n \"mousemove\",\n \"resize\"\n];\n\nvar Surface = (function (Observable) {\n function Surface(element, options) {\n Observable.call(this);\n\n this.options = Object.assign({}, options);\n this.element = element;\n this.element._kendoExportVisual = this.exportVisual.bind(this);\n\n this._click = this._handler(\"click\");\n this._mouseenter = this._handler(\"mouseenter\");\n this._mouseleave = this._handler(\"mouseleave\");\n this._mousemove = this._handler(\"mousemove\");\n\n this._visual = new Group();\n\n elementSize(element, this.options);\n\n this.bind(events, this.options);\n\n this._enableTracking();\n }\n\n if ( Observable ) Surface.__proto__ = Observable;\n Surface.prototype = Object.create( Observable && Observable.prototype );\n Surface.prototype.constructor = Surface;\n\n Surface.prototype.draw = function draw (element) {\n this._visual.children.push(element);\n };\n\n Surface.prototype.clear = function clear () {\n this._visual.children = [];\n };\n\n Surface.prototype.destroy = function destroy () {\n this._visual = null;\n this.element._kendoExportVisual = null;\n this.unbind();\n };\n\n Surface.prototype.eventTarget = function eventTarget (e) {\n var this$1 = this;\n\n var domNode = eventElement(e);\n var node;\n\n while (!node && domNode) {\n node = domNode._kendoNode;\n if (domNode === this$1.element) {\n break;\n }\n\n domNode = domNode.parentElement;\n }\n\n if (node) {\n return node.srcElement;\n }\n };\n\n Surface.prototype.exportVisual = function exportVisual () {\n return this._visual;\n };\n\n Surface.prototype.getSize = function getSize () {\n return elementSize(this.element);\n };\n\n Surface.prototype.currentSize = function currentSize (size) {\n if (size) {\n this._size = size;\n } else {\n return this._size;\n }\n };\n\n Surface.prototype.setSize = function setSize (size) {\n elementSize(this.element, size);\n\n this.currentSize(size);\n this._resize();\n };\n\n Surface.prototype.resize = function resize (force) {\n var size = this.getSize();\n var currentSize = this.currentSize();\n\n if (force || (size.width > 0 || size.height > 0) && (!currentSize || size.width !== currentSize.width || size.height !== currentSize.height)) {\n this.currentSize(size);\n this._resize(size, force);\n this.trigger(\"resize\", size);\n }\n };\n\n Surface.prototype.size = function size (value) {\n if (!value) {\n return this.getSize();\n }\n\n this.setSize(value);\n };\n\n Surface.prototype.suspendTracking = function suspendTracking () {\n this._suspendedTracking = true;\n };\n\n Surface.prototype.resumeTracking = function resumeTracking () {\n this._suspendedTracking = false;\n };\n\n Surface.prototype._enableTracking = function _enableTracking () {};\n\n Surface.prototype._resize = function _resize () {};\n\n Surface.prototype._handler = function _handler (eventName) {\n var this$1 = this;\n\n return function (e) {\n var node = this$1.eventTarget(e);\n if (node && !this$1._suspendedTracking) {\n this$1.trigger(eventName, {\n element: node,\n originalEvent: e,\n type: eventName\n });\n }\n };\n };\n\n Surface.prototype._elementOffset = function _elementOffset () {\n var element = this.element;\n var ref = elementStyles(element, [ \"paddingLeft\", \"paddingTop\" ]);\n var paddingLeft = ref.paddingLeft;\n var paddingTop = ref.paddingTop;\n var ref$1 = elementOffset(element);\n var left = ref$1.left;\n var top = ref$1.top;\n\n return {\n left: left + parseInt(paddingLeft, 10),\n top: top + parseInt(paddingTop, 10)\n };\n };\n\n Surface.prototype._surfacePoint = function _surfacePoint (e) {\n var offset = this._elementOffset();\n var coord = eventCoordinates(e);\n var x = coord.x - offset.left;\n var y = coord.y - offset.top;\n\n return new Point(x, y);\n };\n\n return Surface;\n}(Observable));\n\nSurface.create = function(element, options) {\n return SurfaceFactory.current.create(element, options);\n};\n\nSurface.support = {};\n\nexport default Surface;\n","export default function eventElement(e) {\n if ( e === void 0 ) e = {};\n\n return e.touch ? e.touch.initialTouch : e.target;\n}","export default function elementOffset(element) {\n var box = element.getBoundingClientRect();\n\n var documentElement = document.documentElement;\n\n return {\n top: box.top + (window.pageYOffset || documentElement.scrollTop) - (documentElement.clientTop || 0),\n left: box.left + (window.pageXOffset || documentElement.scrollLeft) - (documentElement.clientLeft || 0)\n };\n}","import defined from './defined';\n\nexport default function eventCoordinates(e) {\n if (defined((e.x || {}).location)) {\n return {\n x: e.x.location,\n y: e.y.location\n };\n }\n\n return {\n x: e.pageX || e.clientX || 0,\n y: e.pageY || e.clientY || 0\n };\n}","import { Class } from '../common';\n\nvar BaseNode = (function (Class) {\n function BaseNode(srcElement) {\n Class.call(this);\n\n this.childNodes = [];\n this.parent = null;\n\n if (srcElement) {\n this.srcElement = srcElement;\n this.observe();\n }\n }\n\n if ( Class ) BaseNode.__proto__ = Class;\n BaseNode.prototype = Object.create( Class && Class.prototype );\n BaseNode.prototype.constructor = BaseNode;\n\n BaseNode.prototype.destroy = function destroy () {\n var this$1 = this;\n\n if (this.srcElement) {\n this.srcElement.removeObserver(this);\n }\n\n var children = this.childNodes;\n for (var i = 0; i < children.length; i++) {\n this$1.childNodes[i].destroy();\n }\n\n this.parent = null;\n };\n\n BaseNode.prototype.load = function load () {};\n\n BaseNode.prototype.observe = function observe () {\n if (this.srcElement) {\n this.srcElement.addObserver(this);\n }\n };\n\n BaseNode.prototype.append = function append (node) {\n this.childNodes.push(node);\n node.parent = this;\n };\n\n BaseNode.prototype.insertAt = function insertAt (node, pos) {\n this.childNodes.splice(pos, 0, node);\n node.parent = this;\n };\n\n BaseNode.prototype.remove = function remove (index, count) {\n var this$1 = this;\n\n var end = index + count;\n for (var i = index; i < end; i++) {\n this$1.childNodes[i].removeSelf();\n }\n this.childNodes.splice(index, count);\n };\n\n BaseNode.prototype.removeSelf = function removeSelf () {\n this.clear();\n this.destroy();\n };\n\n BaseNode.prototype.clear = function clear () {\n this.remove(0, this.childNodes.length);\n };\n\n BaseNode.prototype.invalidate = function invalidate () {\n if (this.parent) {\n this.parent.invalidate();\n }\n };\n\n BaseNode.prototype.geometryChange = function geometryChange () {\n this.invalidate();\n };\n\n BaseNode.prototype.optionsChange = function optionsChange () {\n this.invalidate();\n };\n\n BaseNode.prototype.childrenChange = function childrenChange (e) {\n if (e.action === \"add\") {\n this.load(e.items, e.index);\n } else if (e.action === \"remove\") {\n this.remove(e.index, e.items.length);\n }\n\n this.invalidate();\n };\n\n return BaseNode;\n}(Class));\n\nexport default BaseNode;","import { defined } from '../../util';\n\nexport default function renderAttr(name, value) {\n return (defined(value) && value !== null) ? (\" \" + name + \"=\\\"\" + value + \"\\\" \") : \"\";\n}","import renderAttr from './render-attribute';\n\nexport default function renderAllAttr(attrs) {\n var output = \"\";\n for (var i = 0; i < attrs.length; i++) {\n output += renderAttr(attrs[i][0], attrs[i][1]);\n }\n\n return output;\n}","import { defined } from '../../util';\n\nexport default function renderStyle(attrs) {\n var output = \"\";\n for (var i = 0; i < attrs.length; i++) {\n var value = attrs[i][1];\n if (defined(value)) {\n output += attrs[i][0] + \":\" + value + \";\";\n }\n }\n\n if (output !== \"\") {\n return output;\n }\n}","var NODE_MAP = {};\n\nexport default NODE_MAP;","var SVG_NS = \"http://www.w3.org/2000/svg\";\nvar NONE = \"none\";\n\nexport { SVG_NS, NONE };","import { SVG_NS } from '../constants';\n\nvar renderSVG = function(container, svg) {\n container.innerHTML = svg;\n};\n\nif (typeof document !== \"undefined\") {\n var testFragment = \"\";\n var testContainer = document.createElement(\"div\");\n var hasParser = typeof DOMParser !== \"undefined\";\n\n testContainer.innerHTML = testFragment;\n\n if (hasParser && testContainer.firstChild.namespaceURI !== SVG_NS) {\n renderSVG = function(container, svg) {\n var parser = new DOMParser();\n var chartDoc = parser.parseFromString(svg, \"text/xml\");\n var importedDoc = document.adoptNode(chartDoc.documentElement);\n\n container.innerHTML = \"\";\n container.appendChild(importedDoc);\n };\n }\n}\n\nexport default renderSVG;","import BaseNode from '../core/base-node';\nimport renderAllAttr from './utils/render-all-attributes';\nimport renderAttr from './utils/render-attribute';\nimport renderStyle from './utils/render-style';\nimport NODE_MAP from './node-map';\nimport renderSVG from './utils/render-svg';\nimport { SVG_NS, NONE } from './constants';\nimport { support } from '../common';\nimport { defined } from '../util';\n\nvar TRANSFORM = \"transform\";\nvar DefinitionMap = {\n clip: \"clip-path\",\n fill: \"fill\"\n};\n\nfunction isDefinition(type, value) {\n return type === \"clip\" || (type === \"fill\" && (!value || value.nodeType === \"Gradient\"));\n}\n\nfunction baseUrl() {\n var base = document.getElementsByTagName(\"base\")[0];\n var href = document.location.href;\n var url = \"\";\n\n if (base && !(support.browser || {}).msie) {\n var hashIndex = href.indexOf(\"#\");\n if (hashIndex !== -1) {\n href = href.substring(0, hashIndex);\n }\n\n url = href;\n }\n\n return url;\n}\n\nvar Node = (function (BaseNode) {\n function Node(srcElement, options) {\n BaseNode.call(this, srcElement);\n this.definitions = {};\n\n this.options = options;\n }\n\n if ( BaseNode ) Node.__proto__ = BaseNode;\n Node.prototype = Object.create( BaseNode && BaseNode.prototype );\n Node.prototype.constructor = Node;\n\n Node.prototype.destroy = function destroy () {\n if (this.element) {\n this.element._kendoNode = null;\n this.element = null;\n }\n\n this.clearDefinitions();\n BaseNode.prototype.destroy.call(this);\n };\n\n Node.prototype.load = function load (elements, pos) {\n var this$1 = this;\n\n for (var i = 0; i < elements.length; i++) {\n var srcElement = elements[i];\n var children = srcElement.children;\n\n var childNode = new NODE_MAP[srcElement.nodeType](srcElement, this$1.options);\n\n if (defined(pos)) {\n this$1.insertAt(childNode, pos);\n } else {\n this$1.append(childNode);\n }\n\n childNode.createDefinitions();\n\n if (children && children.length > 0) {\n childNode.load(children);\n }\n\n var element = this$1.element;\n if (element) {\n childNode.attachTo(element, pos);\n }\n }\n };\n\n Node.prototype.root = function root () {\n var root = this;\n\n while (root.parent) {\n root = root.parent;\n }\n\n return root;\n };\n\n Node.prototype.attachTo = function attachTo (domElement, pos) {\n var container = document.createElement(\"div\");\n renderSVG(container,\n \"\" +\n this.render() +\n \"\"\n );\n\n var element = container.firstChild.firstChild;\n if (element) {\n if (defined(pos)) {\n domElement.insertBefore(element, domElement.childNodes[pos] || null);\n } else {\n domElement.appendChild(element);\n }\n this.setElement(element);\n }\n };\n\n Node.prototype.setElement = function setElement (element) {\n if (this.element) {\n this.element._kendoNode = null;\n }\n\n this.element = element;\n this.element._kendoNode = this;\n\n var nodes = this.childNodes;\n for (var i = 0; i < nodes.length; i++) {\n var childElement = element.childNodes[i];\n nodes[i].setElement(childElement);\n }\n };\n\n Node.prototype.clear = function clear () {\n this.clearDefinitions();\n\n if (this.element) {\n this.element.innerHTML = \"\";\n }\n\n var children = this.childNodes;\n for (var i = 0; i < children.length; i++) {\n children[i].destroy();\n }\n\n this.childNodes = [];\n };\n\n Node.prototype.removeSelf = function removeSelf () {\n if (this.element) {\n var parentNode = this.element.parentNode;\n if (parentNode) {\n parentNode.removeChild(this.element);\n }\n this.element = null;\n }\n\n BaseNode.prototype.removeSelf.call(this);\n };\n\n Node.prototype.template = function template () {\n return this.renderChildren();\n };\n\n Node.prototype.render = function render () {\n return this.template();\n };\n\n Node.prototype.renderChildren = function renderChildren () {\n var nodes = this.childNodes;\n var output = \"\";\n\n for (var i = 0; i < nodes.length; i++) {\n output += nodes[i].render();\n }\n\n return output;\n };\n\n Node.prototype.optionsChange = function optionsChange (e) {\n var field = e.field;\n var value = e.value;\n\n if (field === \"visible\") {\n this.css(\"display\", value ? \"\" : NONE);\n } else if (DefinitionMap[field] && isDefinition(field, value)) {\n this.updateDefinition(field, value);\n } else if (field === \"opacity\") {\n this.attr(\"opacity\", value);\n } else if (field === \"cursor\") {\n this.css(\"cursor\", value);\n } else if (field === \"id\") {\n if (value) {\n this.attr(\"id\", value);\n } else {\n this.removeAttr(\"id\");\n }\n }\n\n BaseNode.prototype.optionsChange.call(this, e);\n };\n\n Node.prototype.attr = function attr (name, value) {\n if (this.element) {\n this.element.setAttribute(name, value);\n }\n };\n\n Node.prototype.allAttr = function allAttr (attrs) {\n var this$1 = this;\n\n for (var i = 0; i < attrs.length; i++) {\n this$1.attr(attrs[i][0], attrs[i][1]);\n }\n };\n\n Node.prototype.css = function css (name, value) {\n if (this.element) {\n this.element.style[name] = value;\n }\n };\n\n Node.prototype.allCss = function allCss (styles) {\n var this$1 = this;\n\n for (var i = 0; i < styles.length; i++) {\n this$1.css(styles[i][0], styles[i][1]);\n }\n };\n\n Node.prototype.removeAttr = function removeAttr (name) {\n if (this.element) {\n this.element.removeAttribute(name);\n }\n };\n\n Node.prototype.mapTransform = function mapTransform (transform) {\n var attrs = [];\n if (transform) {\n attrs.push([\n TRANSFORM,\n \"matrix(\" + transform.matrix().toString(6) + \")\"\n ]);\n }\n\n return attrs;\n };\n\n Node.prototype.renderTransform = function renderTransform () {\n return renderAllAttr(\n this.mapTransform(this.srcElement.transform())\n );\n };\n\n Node.prototype.transformChange = function transformChange (value) {\n if (value) {\n this.allAttr(this.mapTransform(value));\n } else {\n this.removeAttr(TRANSFORM);\n }\n };\n\n Node.prototype.mapStyle = function mapStyle () {\n var options = this.srcElement.options;\n var style = [ [ \"cursor\", options.cursor ] ];\n\n if (options.visible === false) {\n style.push([ \"display\", NONE ]);\n }\n\n return style;\n };\n\n Node.prototype.renderStyle = function renderStyle$1 () {\n return renderAttr(\"style\", renderStyle(this.mapStyle(true)));\n };\n\n Node.prototype.renderOpacity = function renderOpacity () {\n return renderAttr(\"opacity\", this.srcElement.options.opacity);\n };\n\n Node.prototype.renderId = function renderId () {\n return renderAttr(\"id\", this.srcElement.options.id);\n };\n\n Node.prototype.createDefinitions = function createDefinitions () {\n var srcElement = this.srcElement;\n var definitions = this.definitions;\n if (srcElement) {\n var options = srcElement.options;\n var hasDefinitions;\n\n for (var field in DefinitionMap) {\n var definition = options.get(field);\n if (definition && isDefinition(field, definition)) {\n definitions[field] = definition;\n hasDefinitions = true;\n }\n }\n if (hasDefinitions) {\n this.definitionChange({\n action: \"add\",\n definitions: definitions\n });\n }\n }\n };\n\n Node.prototype.definitionChange = function definitionChange (e) {\n if (this.parent) {\n this.parent.definitionChange(e);\n }\n };\n\n Node.prototype.updateDefinition = function updateDefinition (type, value) {\n var definitions = this.definitions;\n var current = definitions[type];\n var attr = DefinitionMap[type];\n var definition = {};\n if (current) {\n definition[type] = current;\n this.definitionChange({\n action: \"remove\",\n definitions: definition\n });\n delete definitions[type];\n }\n\n if (!value) {\n if (current) {\n this.removeAttr(attr);\n }\n } else {\n definition[type] = value;\n this.definitionChange({\n action: \"add\",\n definitions: definition\n });\n definitions[type] = value;\n this.attr(attr, this.refUrl(value.id));\n }\n };\n\n Node.prototype.clearDefinitions = function clearDefinitions () {\n var definitions = this.definitions;\n\n this.definitionChange({\n action: \"remove\",\n definitions: definitions\n });\n this.definitions = {};\n };\n\n Node.prototype.renderDefinitions = function renderDefinitions () {\n return renderAllAttr(this.mapDefinitions());\n };\n\n Node.prototype.mapDefinitions = function mapDefinitions () {\n var this$1 = this;\n\n var definitions = this.definitions;\n var attrs = [];\n\n for (var field in definitions) {\n attrs.push([ DefinitionMap[field], this$1.refUrl(definitions[field].id) ]);\n }\n\n return attrs;\n };\n\n Node.prototype.refUrl = function refUrl (id) {\n var skipBaseHref = (this.options || {}).skipBaseHref;\n var baseHref = this.baseUrl().replace(/'/g, \"\\\\'\");\n var base = skipBaseHref ? '' : baseHref;\n return (\"url(\" + base + \"#\" + id + \")\");\n };\n\n Node.prototype.baseUrl = function baseUrl$1 () {\n return baseUrl();\n };\n\n return Node;\n}(BaseNode));\n\nexport default Node;\n","import Node from './node';\nimport renderAttr from './utils/render-attribute';\n\nvar GradientStopNode = (function (Node) {\n function GradientStopNode () {\n Node.apply(this, arguments);\n }\n\n if ( Node ) GradientStopNode.__proto__ = Node;\n GradientStopNode.prototype = Object.create( Node && Node.prototype );\n GradientStopNode.prototype.constructor = GradientStopNode;\n\n GradientStopNode.prototype.template = function template () {\n return (\"\");\n };\n\n GradientStopNode.prototype.renderOffset = function renderOffset () {\n return renderAttr(\"offset\", this.srcElement.offset());\n };\n\n GradientStopNode.prototype.mapStyle = function mapStyle () {\n var srcElement = this.srcElement;\n return [\n [ \"stop-color\", srcElement.color() ],\n [ \"stop-opacity\", srcElement.opacity() ]\n ];\n };\n\n GradientStopNode.prototype.optionsChange = function optionsChange (e) {\n if (e.field === \"offset\") {\n this.attr(e.field, e.value);\n } else if (e.field === \"color\" || e.field === \"opacity\") {\n this.css(\"stop-\" + e.field, e.value);\n }\n };\n\n return GradientStopNode;\n}(Node));\n\nexport default GradientStopNode;","import GradientStopNode from './gradient-stop-node';\nimport BaseNode from '../core/base-node';\nimport Node from './node';\nimport renderAllAttr from './utils/render-all-attributes';\n\nvar GradientNode = (function (Node) {\n function GradientNode(srcElement) {\n Node.call(this, srcElement);\n\n this.id = srcElement.id;\n\n this.loadStops();\n }\n\n if ( Node ) GradientNode.__proto__ = Node;\n GradientNode.prototype = Object.create( Node && Node.prototype );\n GradientNode.prototype.constructor = GradientNode;\n\n GradientNode.prototype.loadStops = function loadStops () {\n var this$1 = this;\n\n var stops = this.srcElement.stops;\n var element = this.element;\n\n for (var idx = 0; idx < stops.length; idx++) {\n var stopNode = new GradientStopNode(stops[idx]);\n this$1.append(stopNode);\n if (element) {\n stopNode.attachTo(element);\n }\n }\n };\n\n GradientNode.prototype.optionsChange = function optionsChange (e) {\n if (e.field === \"gradient.stops\") {\n BaseNode.prototype.clear.call(this);\n this.loadStops();\n } else if (e.field === \"gradient\") {\n this.allAttr(this.mapCoordinates());\n }\n };\n\n GradientNode.prototype.renderCoordinates = function renderCoordinates () {\n return renderAllAttr(this.mapCoordinates());\n };\n\n GradientNode.prototype.mapSpace = function mapSpace () {\n return [ \"gradientUnits\", this.srcElement.userSpace() ? \"userSpaceOnUse\" : \"objectBoundingBox\" ];\n };\n\n return GradientNode;\n}(Node));\n\nexport default GradientNode;","import GradientNode from './gradient-node';\n\nvar LinearGradientNode = (function (GradientNode) {\n function LinearGradientNode () {\n GradientNode.apply(this, arguments);\n }\n\n if ( GradientNode ) LinearGradientNode.__proto__ = GradientNode;\n LinearGradientNode.prototype = Object.create( GradientNode && GradientNode.prototype );\n LinearGradientNode.prototype.constructor = LinearGradientNode;\n\n LinearGradientNode.prototype.template = function template () {\n return (\"\" + (this.renderChildren()) + \"\");\n };\n\n LinearGradientNode.prototype.mapCoordinates = function mapCoordinates () {\n var srcElement = this.srcElement;\n var start = srcElement.start();\n var end = srcElement.end();\n var attrs = [\n [ \"x1\", start.x ],\n [ \"y1\", start.y ],\n [ \"x2\", end.x ],\n [ \"y2\", end.y ],\n this.mapSpace()\n ];\n\n return attrs;\n };\n\n return LinearGradientNode;\n}(GradientNode));\n\nexport default LinearGradientNode;","import GradientNode from './gradient-node';\n\nvar RadialGradientNode = (function (GradientNode) {\n function RadialGradientNode () {\n GradientNode.apply(this, arguments);\n }\n\n if ( GradientNode ) RadialGradientNode.__proto__ = GradientNode;\n RadialGradientNode.prototype = Object.create( GradientNode && GradientNode.prototype );\n RadialGradientNode.prototype.constructor = RadialGradientNode;\n\n RadialGradientNode.prototype.template = function template () {\n return (\"\" + (this.renderChildren()) + \"\");\n };\n\n RadialGradientNode.prototype.mapCoordinates = function mapCoordinates () {\n var srcElement = this.srcElement;\n var center = srcElement.center();\n var radius = srcElement.radius();\n var attrs = [\n [ \"cx\", center.x ],\n [ \"cy\", center.y ],\n [ \"r\", radius ],\n this.mapSpace()\n ];\n return attrs;\n };\n\n return RadialGradientNode;\n}(GradientNode));\n\nexport default RadialGradientNode;","import Node from './node';\n\nvar ClipNode = (function (Node) {\n function ClipNode(srcElement) {\n Node.call(this);\n\n this.srcElement = srcElement;\n this.id = srcElement.id;\n\n this.load([ srcElement ]);\n }\n\n if ( Node ) ClipNode.__proto__ = Node;\n ClipNode.prototype = Object.create( Node && Node.prototype );\n ClipNode.prototype.constructor = ClipNode;\n\n ClipNode.prototype.template = function template () {\n return (\"\" + (this.renderChildren()) + \"\");\n };\n\n return ClipNode;\n}(Node));\n\nexport default ClipNode;","import LinearGradient from '../gradients/linear-gradient';\nimport RadialGradient from '../gradients/radial-gradient';\nimport LinearGradientNode from './linear-gradient-node';\nimport RadialGradientNode from './radial-gradient-node';\nimport Node from './node';\nimport ClipNode from './clip-node';\n\nvar DefinitionNode = (function (Node) {\n function DefinitionNode() {\n Node.call(this);\n this.definitionMap = {};\n }\n\n if ( Node ) DefinitionNode.__proto__ = Node;\n DefinitionNode.prototype = Object.create( Node && Node.prototype );\n DefinitionNode.prototype.constructor = DefinitionNode;\n\n DefinitionNode.prototype.attachTo = function attachTo (domElement) {\n this.element = domElement;\n };\n\n DefinitionNode.prototype.template = function template () {\n return (\"\" + (this.renderChildren()) + \"\");\n };\n\n DefinitionNode.prototype.definitionChange = function definitionChange (e) {\n var definitions = e.definitions;\n var action = e.action;\n\n if (action === \"add\") {\n this.addDefinitions(definitions);\n } else if (action === \"remove\") {\n this.removeDefinitions(definitions);\n }\n };\n\n DefinitionNode.prototype.createDefinition = function createDefinition (type, item) {\n var nodeType;\n if (type === \"clip\") {\n nodeType = ClipNode;\n } else if (type === \"fill\") {\n if (item instanceof LinearGradient) {\n nodeType = LinearGradientNode;\n } else if (item instanceof RadialGradient) {\n nodeType = RadialGradientNode;\n }\n }\n return new nodeType(item);\n };\n\n DefinitionNode.prototype.addDefinitions = function addDefinitions (definitions) {\n var this$1 = this;\n\n for (var field in definitions) {\n this$1.addDefinition(field, definitions[field]);\n }\n };\n\n DefinitionNode.prototype.addDefinition = function addDefinition (type, srcElement) {\n var ref = this;\n var element = ref.element;\n var definitionMap = ref.definitionMap;\n var id = srcElement.id;\n var mapItem = definitionMap[id];\n if (!mapItem) {\n var node = this.createDefinition(type, srcElement);\n definitionMap[id] = {\n element: node,\n count: 1\n };\n this.append(node);\n if (element) {\n node.attachTo(this.element);\n }\n } else {\n mapItem.count++;\n }\n };\n\n DefinitionNode.prototype.removeDefinitions = function removeDefinitions (definitions) {\n var this$1 = this;\n\n for (var field in definitions) {\n this$1.removeDefinition(definitions[field]);\n }\n };\n\n DefinitionNode.prototype.removeDefinition = function removeDefinition (srcElement) {\n var definitionMap = this.definitionMap;\n var id = srcElement.id;\n var mapItem = definitionMap[id];\n\n if (mapItem) {\n mapItem.count--;\n if (mapItem.count === 0) {\n this.remove(this.childNodes.indexOf(mapItem.element), 1);\n delete definitionMap[id];\n }\n }\n };\n\n return DefinitionNode;\n}(Node));\n\nexport default DefinitionNode;","import BaseNode from '../core/base-node';\nimport Node from './node';\nimport DefinitionNode from './definition-node';\n\nvar RootNode = (function (Node) {\n function RootNode(options) {\n Node.call(this);\n this.options = options;\n this.defs = new DefinitionNode();\n }\n\n if ( Node ) RootNode.__proto__ = Node;\n RootNode.prototype = Object.create( Node && Node.prototype );\n RootNode.prototype.constructor = RootNode;\n\n RootNode.prototype.attachTo = function attachTo (domElement) {\n this.element = domElement;\n this.defs.attachTo(domElement.firstElementChild);\n };\n\n RootNode.prototype.clear = function clear () {\n BaseNode.prototype.clear.call(this);\n };\n\n RootNode.prototype.template = function template () {\n return this.defs.render() + this.renderChildren();\n };\n\n RootNode.prototype.definitionChange = function definitionChange (e) {\n this.defs.definitionChange(e);\n };\n\n return RootNode;\n}(Node));\n\nexport default RootNode;","import BaseSurface from '../core/surface';\nimport SurfaceFactory from '../core/surface-factory';\nimport RootNode from './root-node';\nimport Group from '../shapes/group';\nimport transform from '../geometry/transform';\nimport renderSVG from './utils/render-svg';\nimport { SVG_NS } from './constants';\nimport { bindEvents, unbindEvents, elementStyles } from '../util';\n\nvar RTL = 'rtl';\n\nfunction alignToScreen(element) {\n var ctm;\n\n try {\n ctm = element.getScreenCTM ? element.getScreenCTM() : null;\n } catch (e) { } // eslint-disable-line no-empty\n\n if (ctm) {\n var left = - ctm.e % 1;\n var top = - ctm.f % 1;\n var style = element.style;\n\n if (left !== 0 || top !== 0) {\n style.left = left + \"px\";\n style.top = top + \"px\";\n }\n }\n}\n\nvar Surface = (function (BaseSurface) {\n function Surface(element, options) {\n BaseSurface.call(this, element, options);\n\n this._root = new RootNode(Object.assign({\n rtl: elementStyles(element, 'direction').direction === RTL\n }, this.options));\n\n renderSVG(this.element, this._template());\n\n this._rootElement = this.element.firstElementChild;\n\n alignToScreen(this._rootElement);\n\n this._root.attachTo(this._rootElement);\n\n bindEvents(this.element, {\n click: this._click,\n mouseover: this._mouseenter,\n mouseout: this._mouseleave,\n mousemove: this._mousemove\n });\n\n this.resize();\n }\n\n if ( BaseSurface ) Surface.__proto__ = BaseSurface;\n Surface.prototype = Object.create( BaseSurface && BaseSurface.prototype );\n Surface.prototype.constructor = Surface;\n\n Surface.prototype.destroy = function destroy () {\n if (this._root) {\n this._root.destroy();\n this._root = null;\n this._rootElement = null;\n unbindEvents(this.element, {\n click: this._click,\n mouseover: this._mouseenter,\n mouseout: this._mouseleave,\n mousemove: this._mousemove\n });\n }\n\n BaseSurface.prototype.destroy.call(this);\n };\n\n Surface.prototype.translate = function translate (offset) {\n var viewBox = (Math.round(offset.x)) + \" \" + (Math.round(offset.y)) + \" \" + (this._size.width) + \" \" + (this._size.height);\n\n this._offset = offset;\n this._rootElement.setAttribute(\"viewBox\", viewBox);\n };\n\n Surface.prototype.draw = function draw (element) {\n BaseSurface.prototype.draw.call(this, element);\n this._root.load([ element ]);\n };\n\n Surface.prototype.clear = function clear () {\n BaseSurface.prototype.clear.call(this);\n this._root.clear();\n };\n\n Surface.prototype.svg = function svg () {\n return \"\" + this._template();\n };\n\n Surface.prototype.exportVisual = function exportVisual () {\n var ref = this;\n var visual = ref._visual;\n var offset = ref._offset;\n\n if (offset) {\n var wrap = new Group();\n wrap.children.push(visual);\n\n wrap.transform(\n transform().translate(-offset.x, -offset.y)\n );\n\n visual = wrap;\n }\n\n return visual;\n };\n\n Surface.prototype._resize = function _resize () {\n if (this._offset) {\n this.translate(this._offset);\n }\n };\n\n Surface.prototype._template = function _template () {\n return (\"\" + (this._root.render()) + \"\");\n };\n\n return Surface;\n}(BaseSurface));\n\nSurface.prototype.type = \"svg\";\n\nif (typeof document !== \"undefined\" && document.implementation.hasFeature(\"http://www.w3.org/TR/SVG11/feature#BasicStructure\", \"1.1\")) {\n BaseSurface.support.svg = true;\n SurfaceFactory.current.register(\"svg\", Surface, 10);\n}\n\nexport default Surface;","import Node from './node';\nimport NODE_MAP from './node-map';\n\nvar GroupNode = (function (Node) {\n function GroupNode () {\n Node.apply(this, arguments);\n }\n\n if ( Node ) GroupNode.__proto__ = Node;\n GroupNode.prototype = Object.create( Node && Node.prototype );\n GroupNode.prototype.constructor = GroupNode;\n\n GroupNode.prototype.template = function template () {\n return (\"\" + (this.renderChildren()) + \"\");\n };\n\n GroupNode.prototype.optionsChange = function optionsChange (e) {\n if (e.field === \"transform\") {\n this.transformChange(e.value);\n }\n\n Node.prototype.optionsChange.call(this, e);\n };\n\n return GroupNode;\n}(Node));\n\nNODE_MAP.Group = GroupNode;\n\nexport default GroupNode;","var DASH_ARRAYS = {\n dot: [ 1.5, 3.5 ],\n dash: [ 4, 3.5 ],\n longdash: [ 8, 3.5 ],\n dashdot: [ 3.5, 3.5, 1.5, 3.5 ],\n longdashdot: [ 8, 3.5, 1.5, 3.5 ],\n longdashdotdot: [ 8, 3.5, 1.5, 3.5, 1.5, 3.5 ]\n};\n\nvar SOLID = \"solid\";\nvar BUTT = \"butt\";\n\nexport { DASH_ARRAYS, SOLID, BUTT };","import Node from './node';\nimport { defined, isTransparent } from '../util';\nimport { DASH_ARRAYS, SOLID, BUTT } from '../core/constants';\nimport { NONE } from './constants';\nimport renderAllAttr from './utils/render-all-attributes';\nimport renderAttr from './utils/render-attribute';\nimport NODE_MAP from './node-map';\n\nvar ATTRIBUTE_MAP = {\n \"fill.opacity\": \"fill-opacity\",\n \"stroke.color\": \"stroke\",\n \"stroke.width\": \"stroke-width\",\n \"stroke.opacity\": \"stroke-opacity\"\n};\nvar SPACE = \" \";\n\nvar PathNode = (function (Node) {\n function PathNode () {\n Node.apply(this, arguments);\n }\n\n if ( Node ) PathNode.__proto__ = Node;\n PathNode.prototype = Object.create( Node && Node.prototype );\n PathNode.prototype.constructor = PathNode;\n\n PathNode.prototype.geometryChange = function geometryChange () {\n this.attr(\"d\", this.renderData());\n this.invalidate();\n };\n\n PathNode.prototype.optionsChange = function optionsChange (e) {\n switch (e.field) {\n case \"fill\":\n if (e.value) {\n this.allAttr(this.mapFill(e.value));\n } else {\n this.removeAttr(\"fill\");\n }\n break;\n\n case \"fill.color\":\n this.allAttr(this.mapFill({ color: e.value }));\n break;\n\n case \"stroke\":\n if (e.value) {\n this.allAttr(this.mapStroke(e.value));\n } else {\n this.removeAttr(\"stroke\");\n }\n break;\n\n case \"transform\":\n this.transformChange(e.value);\n break;\n\n default:\n var name = ATTRIBUTE_MAP[e.field];\n if (name) {\n this.attr(name, e.value);\n }\n break;\n }\n\n Node.prototype.optionsChange.call(this, e);\n };\n\n PathNode.prototype.content = function content () {\n if (this.element) {\n this.element.textContent = this.srcElement.content();\n }\n };\n\n PathNode.prototype.renderData = function renderData () {\n return this.printPath(this.srcElement);\n };\n\n PathNode.prototype.printPath = function printPath (path) {\n var this$1 = this;\n\n var segments = path.segments;\n var length = segments.length;\n if (length > 0) {\n var parts = [];\n var output, currentType;\n\n for (var i = 1; i < length; i++) {\n var segmentType = this$1.segmentType(segments[i - 1], segments[i]);\n if (segmentType !== currentType) {\n currentType = segmentType;\n parts.push(segmentType);\n }\n\n if (segmentType === \"L\") {\n parts.push(this$1.printPoints(segments[i].anchor()));\n } else {\n parts.push(this$1.printPoints(segments[i - 1].controlOut(), segments[i].controlIn(), segments[i].anchor()));\n }\n }\n\n output = \"M\" + this.printPoints(segments[0].anchor()) + SPACE + parts.join(SPACE);\n if (path.options.closed) {\n output += \"Z\";\n }\n\n return output;\n }\n };\n\n PathNode.prototype.printPoints = function printPoints () {\n var points = arguments;\n var length = points.length;\n var result = [];\n\n for (var i = 0; i < length; i++) {\n result.push(points[i].toString(3));\n }\n\n return result.join(\" \");\n };\n\n PathNode.prototype.segmentType = function segmentType (segmentStart, segmentEnd) {\n return segmentStart.controlOut() && segmentEnd.controlIn() ? \"C\" : \"L\";\n };\n\n PathNode.prototype.mapStroke = function mapStroke (stroke) {\n var attrs = [];\n\n if (stroke && !isTransparent(stroke.color)) {\n attrs.push([ \"stroke\", stroke.color ]);\n attrs.push([ \"stroke-width\", stroke.width ]);\n attrs.push([ \"stroke-linecap\", this.renderLinecap(stroke) ]);\n attrs.push([ \"stroke-linejoin\", stroke.lineJoin ]);\n\n if (defined(stroke.opacity)) {\n attrs.push([ \"stroke-opacity\", stroke.opacity ]);\n }\n\n if (defined(stroke.dashType)) {\n attrs.push([ \"stroke-dasharray\", this.renderDashType(stroke) ]);\n }\n } else {\n attrs.push([ \"stroke\", NONE ]);\n }\n\n return attrs;\n };\n\n PathNode.prototype.renderStroke = function renderStroke () {\n return renderAllAttr(\n this.mapStroke(this.srcElement.options.stroke)\n );\n };\n\n PathNode.prototype.renderDashType = function renderDashType (stroke) {\n var dashType = stroke.dashType;\n var width = stroke.width; if ( width === void 0 ) width = 1;\n\n if (dashType && dashType !== SOLID) {\n var dashArray = DASH_ARRAYS[dashType.toLowerCase()];\n var result = [];\n\n for (var i = 0; i < dashArray.length; i++) {\n result.push(dashArray[i] * width);\n }\n\n return result.join(\" \");\n }\n };\n\n PathNode.prototype.renderLinecap = function renderLinecap (stroke) {\n var dashType = stroke.dashType;\n var lineCap = stroke.lineCap;\n\n return (dashType && dashType !== \"solid\") ? BUTT : lineCap;\n };\n\n PathNode.prototype.mapFill = function mapFill (fill) {\n var attrs = [];\n if (!(fill && fill.nodeType === \"Gradient\")) {\n if (fill && !isTransparent(fill.color)) {\n attrs.push([ \"fill\", fill.color ]);\n\n if (defined(fill.opacity)) {\n attrs.push([ \"fill-opacity\", fill.opacity ]);\n }\n } else {\n attrs.push([ \"fill\", NONE ]);\n }\n }\n\n return attrs;\n };\n\n PathNode.prototype.renderFill = function renderFill () {\n return renderAllAttr(\n this.mapFill(this.srcElement.options.fill)\n );\n };\n\n PathNode.prototype.template = function template () {\n return \"\";\n };\n\n return PathNode;\n}(Node));\n\nNODE_MAP.Path = PathNode;\n\nexport default PathNode;","import PathNode from './path-node';\nimport NODE_MAP from './node-map';\n\nvar ArcNode = (function (PathNode) {\n function ArcNode () {\n PathNode.apply(this, arguments);\n }\n\n if ( PathNode ) ArcNode.__proto__ = PathNode;\n ArcNode.prototype = Object.create( PathNode && PathNode.prototype );\n ArcNode.prototype.constructor = ArcNode;\n\n ArcNode.prototype.renderData = function renderData () {\n return this.printPath(this.srcElement.toPath());\n };\n\n return ArcNode;\n}(PathNode));\n\nNODE_MAP.Arc = ArcNode;\n\nexport default ArcNode;","import PathNode from './path-node';\nimport NODE_MAP from './node-map';\n\nvar CircleNode = (function (PathNode) {\n function CircleNode () {\n PathNode.apply(this, arguments);\n }\n\n if ( PathNode ) CircleNode.__proto__ = PathNode;\n CircleNode.prototype = Object.create( PathNode && PathNode.prototype );\n CircleNode.prototype.constructor = CircleNode;\n\n CircleNode.prototype.geometryChange = function geometryChange () {\n var center = this.center();\n this.attr(\"cx\", center.x);\n this.attr(\"cy\", center.y);\n this.attr(\"r\", this.radius());\n this.invalidate();\n };\n\n CircleNode.prototype.center = function center () {\n return this.srcElement.geometry().center;\n };\n\n CircleNode.prototype.radius = function radius () {\n return this.srcElement.geometry().radius;\n };\n\n CircleNode.prototype.template = function template () {\n return \"\";\n };\n\n return CircleNode;\n}(PathNode));\n\nNODE_MAP.Circle = CircleNode;\n\nexport default CircleNode;","import PathNode from './path-node';\nimport NODE_MAP from './node-map';\n\nvar RectNode = (function (PathNode) {\n function RectNode () {\n PathNode.apply(this, arguments);\n }\n\n if ( PathNode ) RectNode.__proto__ = PathNode;\n RectNode.prototype = Object.create( PathNode && PathNode.prototype );\n RectNode.prototype.constructor = RectNode;\n\n RectNode.prototype.geometryChange = function geometryChange () {\n var geometry = this.srcElement.geometry();\n this.attr(\"x\", geometry.origin.x);\n this.attr(\"y\", geometry.origin.y);\n this.attr(\"width\", geometry.size.width);\n this.attr(\"height\", geometry.size.height);\n this.invalidate();\n };\n\n RectNode.prototype.size = function size () {\n return this.srcElement.geometry().size;\n };\n\n RectNode.prototype.origin = function origin () {\n return this.srcElement.geometry().origin;\n };\n\n RectNode.prototype.template = function template () {\n return \"\";\n };\n\n return RectNode;\n}(PathNode));\n\nNODE_MAP.Rect = RectNode;\n\nexport default RectNode;","import PathNode from './path-node';\nimport NODE_MAP from './node-map';\nimport renderAllAttr from './utils/render-all-attributes';\nimport { htmlEncode } from '../common';\n\nvar ImageNode = (function (PathNode) {\n function ImageNode () {\n PathNode.apply(this, arguments);\n }\n\n if ( PathNode ) ImageNode.__proto__ = PathNode;\n ImageNode.prototype = Object.create( PathNode && PathNode.prototype );\n ImageNode.prototype.constructor = ImageNode;\n\n ImageNode.prototype.geometryChange = function geometryChange () {\n this.allAttr(this.mapPosition());\n this.invalidate();\n };\n\n ImageNode.prototype.optionsChange = function optionsChange (e) {\n if (e.field === \"src\") {\n this.allAttr(this.mapSource());\n }\n\n PathNode.prototype.optionsChange.call(this, e);\n };\n\n ImageNode.prototype.mapPosition = function mapPosition () {\n var rect = this.srcElement.rect();\n var tl = rect.topLeft();\n\n return [\n [ \"x\", tl.x ],\n [ \"y\", tl.y ],\n [ \"width\", rect.width() + \"px\" ],\n [ \"height\", rect.height() + \"px\" ]\n ];\n };\n\n ImageNode.prototype.renderPosition = function renderPosition () {\n return renderAllAttr(this.mapPosition());\n };\n\n ImageNode.prototype.mapSource = function mapSource (encode) {\n var src = this.srcElement.src();\n\n if (encode) {\n src = htmlEncode(src);\n }\n\n return [ [ \"xlink:href\", src ] ];\n };\n\n ImageNode.prototype.renderSource = function renderSource () {\n return renderAllAttr(this.mapSource(true));\n };\n\n ImageNode.prototype.template = function template () {\n return \"\" +\n \"\";\n };\n\n return ImageNode;\n}(PathNode));\n\nNODE_MAP.Image = ImageNode;\n\nexport default ImageNode;","import PathNode from './path-node';\nimport renderStyle from './utils/render-style';\nimport renderAttr from './utils/render-attribute';\nimport NODE_MAP from './node-map';\nimport { htmlEncode, support } from '../common';\nimport { normalizeText } from '../text-metrics';\n\nvar ENTITY_REGEX = /&(?:[a-zA-Z]+|#\\d+);/g;\n\nfunction decodeEntities(text) {\n if (!text || typeof text !== \"string\" || !ENTITY_REGEX.test(text)) {\n return text;\n }\n\n var element = decodeEntities._element;\n ENTITY_REGEX.lastIndex = 0;\n\n return text.replace(ENTITY_REGEX, function (match) {\n element.innerHTML = match;\n\n return element.textContent || element.innerText;\n });\n}\n\nif (typeof document !== \"undefined\") {\n decodeEntities._element = document.createElement(\"span\");\n}\n\nvar TextNode = (function (PathNode) {\n function TextNode () {\n PathNode.apply(this, arguments);\n }\n\n if ( PathNode ) TextNode.__proto__ = PathNode;\n TextNode.prototype = Object.create( PathNode && PathNode.prototype );\n TextNode.prototype.constructor = TextNode;\n\n TextNode.prototype.geometryChange = function geometryChange () {\n var pos = this.pos();\n this.attr(\"x\", pos.x);\n this.attr(\"y\", pos.y);\n this.invalidate();\n };\n\n TextNode.prototype.optionsChange = function optionsChange (e) {\n if (e.field === \"font\") {\n this.attr(\"style\", renderStyle(this.mapStyle()));\n this.geometryChange();\n } else if (e.field === \"content\") {\n PathNode.prototype.content.call(this, this.srcElement.content());\n }\n\n PathNode.prototype.optionsChange.call(this, e);\n };\n\n TextNode.prototype.mapStyle = function mapStyle (encode) {\n var style = PathNode.prototype.mapStyle.call(this, encode);\n var font = this.srcElement.options.font;\n\n if (encode) {\n font = htmlEncode(font);\n }\n\n style.push([ \"font\", font ], [ \"white-space\", \"pre\" ]);\n\n return style;\n };\n\n TextNode.prototype.pos = function pos () {\n var pos = this.srcElement.position();\n var size = this.srcElement.measure();\n return pos.clone().setY(pos.y + size.baseline);\n };\n\n TextNode.prototype.renderContent = function renderContent () {\n var content = this.srcElement.content();\n content = decodeEntities(content);\n content = htmlEncode(content);\n\n return normalizeText(content);\n };\n\n TextNode.prototype.renderTextAnchor = function renderTextAnchor () {\n var anchor;\n\n if ((this.options || {}).rtl && !(support.browser.msie || support.browser.edge)) {\n anchor = 'end';\n }\n\n return renderAttr(\"text-anchor\", anchor);\n };\n\n TextNode.prototype.template = function template () {\n return \"\" + (this.renderContent()) + \"\";\n };\n\n return TextNode;\n}(PathNode));\n\nNODE_MAP.Text = TextNode;\n\nexport default TextNode;","import PathNode from './path-node';\nimport NODE_MAP from './node-map';\n\nvar MultiPathNode = (function (PathNode) {\n function MultiPathNode () {\n PathNode.apply(this, arguments);\n }\n\n if ( PathNode ) MultiPathNode.__proto__ = PathNode;\n MultiPathNode.prototype = Object.create( PathNode && PathNode.prototype );\n MultiPathNode.prototype.constructor = MultiPathNode;\n\n MultiPathNode.prototype.renderData = function renderData () {\n var this$1 = this;\n\n var paths = this.srcElement.paths;\n\n if (paths.length > 0) {\n var result = [];\n\n for (var i = 0; i < paths.length; i++) {\n result.push(this$1.printPath(paths[i]));\n }\n\n return result.join(\" \");\n }\n };\n\n return MultiPathNode;\n}(PathNode));\n\nNODE_MAP.MultiPath = MultiPathNode;\n\nexport default MultiPathNode;","var NODE_MAP = {};\n\nexport default NODE_MAP;","\nexport default function renderPath(ctx, path) {\n var segments = path.segments;\n\n if (segments.length === 0) {\n return;\n }\n\n var segment = segments[0];\n var anchor = segment.anchor();\n ctx.moveTo(anchor.x, anchor.y);\n\n for (var i = 1; i < segments.length; i++) {\n segment = segments[i];\n anchor = segment.anchor();\n\n var prevSeg = segments[i - 1];\n var prevOut = prevSeg.controlOut();\n var controlIn = segment.controlIn();\n\n if (prevOut && controlIn) {\n ctx.bezierCurveTo(prevOut.x, prevOut.y,\n controlIn.x, controlIn.y,\n anchor.x, anchor.y);\n } else {\n ctx.lineTo(anchor.x, anchor.y);\n }\n }\n\n if (path.options.closed) {\n ctx.closePath();\n }\n}","import BaseNode from '../core/base-node';\nimport NODE_MAP from './node-map';\nimport renderPath from './utils/render-path';\nimport { defined } from '../util';\n\nvar Node = (function (BaseNode) {\n function Node(srcElement) {\n BaseNode.call(this, srcElement);\n if (srcElement) {\n this.initClip();\n }\n }\n\n if ( BaseNode ) Node.__proto__ = BaseNode;\n Node.prototype = Object.create( BaseNode && BaseNode.prototype );\n Node.prototype.constructor = Node;\n\n Node.prototype.initClip = function initClip () {\n var clip = this.srcElement.clip();\n if (clip) {\n this.clip = clip;\n clip.addObserver(this);\n }\n };\n\n Node.prototype.clear = function clear () {\n if (this.srcElement) {\n this.srcElement.removeObserver(this);\n }\n\n this.clearClip();\n\n BaseNode.prototype.clear.call(this);\n };\n\n Node.prototype.clearClip = function clearClip () {\n if (this.clip) {\n this.clip.removeObserver(this);\n delete this.clip;\n }\n };\n\n Node.prototype.setClip = function setClip (ctx) {\n if (this.clip) {\n ctx.beginPath();\n renderPath(ctx, this.clip);\n ctx.clip();\n }\n };\n\n Node.prototype.optionsChange = function optionsChange (e) {\n if (e.field === \"clip\") {\n this.clearClip();\n this.initClip();\n }\n\n BaseNode.prototype.optionsChange.call(this, e);\n };\n\n Node.prototype.setTransform = function setTransform (ctx) {\n if (this.srcElement) {\n var transform = this.srcElement.transform();\n if (transform) {\n ctx.transform.apply(ctx, transform.matrix().toArray(6));\n }\n }\n };\n\n Node.prototype.loadElements = function loadElements (elements, pos, cors) {\n var this$1 = this;\n\n for (var i = 0; i < elements.length; i++) {\n var srcElement = elements[i];\n var children = srcElement.children;\n\n var childNode = new NODE_MAP[srcElement.nodeType](srcElement, cors);\n\n if (children && children.length > 0) {\n childNode.load(children, pos, cors);\n }\n\n if (defined(pos)) {\n this$1.insertAt(childNode, pos);\n } else {\n this$1.append(childNode);\n }\n }\n };\n\n Node.prototype.load = function load (elements, pos, cors) {\n this.loadElements(elements, pos, cors);\n\n this.invalidate();\n };\n\n Node.prototype.setOpacity = function setOpacity (ctx) {\n if (this.srcElement) {\n var opacity = this.srcElement.opacity();\n if (defined(opacity)) {\n this.globalAlpha(ctx, opacity);\n }\n }\n };\n\n Node.prototype.globalAlpha = function globalAlpha (ctx, value) {\n var opactity = value;\n if (opactity && ctx.globalAlpha) {\n opactity *= ctx.globalAlpha;\n }\n ctx.globalAlpha = opactity;\n };\n\n Node.prototype.visible = function visible () {\n var src = this.srcElement;\n return !src || (src && src.options.visible !== false);\n };\n\n return Node;\n}(BaseNode));\n\nexport default Node;","import Node from './node';\nimport Traversable from '../mixins/traversable';\nimport NODE_MAP from './node-map';\n\nvar GroupNode = (function (Node) {\n function GroupNode () {\n Node.apply(this, arguments);\n }\n\n if ( Node ) GroupNode.__proto__ = Node;\n GroupNode.prototype = Object.create( Node && Node.prototype );\n GroupNode.prototype.constructor = GroupNode;\n\n GroupNode.prototype.renderTo = function renderTo (ctx) {\n if (!this.visible()) {\n return;\n }\n\n ctx.save();\n\n this.setTransform(ctx);\n this.setClip(ctx);\n this.setOpacity(ctx);\n\n var childNodes = this.childNodes;\n for (var i = 0; i < childNodes.length; i++) {\n var child = childNodes[i];\n if (child.visible()) {\n child.renderTo(ctx);\n }\n }\n\n ctx.restore();\n };\n\n return GroupNode;\n}(Node));\n\nTraversable.extend(GroupNode.prototype, \"childNodes\");\n\nNODE_MAP.Group = GroupNode;\n\nexport default GroupNode;","import GroupNode from './group-node';\nimport Traversable from '../mixins/traversable';\nimport { animationFrame, throttle } from '../common';\n\nvar FRAME_DELAY = 1000 / 60;\n\nvar RootNode = (function (GroupNode) {\n function RootNode(canvas, size) {\n GroupNode.call(this);\n\n this.canvas = canvas;\n this.size = size;\n this.ctx = canvas.getContext(\"2d\");\n\n var invalidateHandler = this._invalidate.bind(this);\n this.invalidate = throttle(function () {\n animationFrame(invalidateHandler);\n }, FRAME_DELAY);\n }\n\n if ( GroupNode ) RootNode.__proto__ = GroupNode;\n RootNode.prototype = Object.create( GroupNode && GroupNode.prototype );\n RootNode.prototype.constructor = RootNode;\n\n RootNode.prototype.destroy = function destroy () {\n GroupNode.prototype.destroy.call(this);\n this.canvas = null;\n this.ctx = null;\n };\n\n RootNode.prototype.load = function load (elements, pos, cors) {\n this.loadElements(elements, pos, cors);\n this._invalidate();\n };\n\n RootNode.prototype._rescale = function _rescale () {\n var ref = this;\n var canvas = ref.canvas;\n var size = ref.size;\n var scale = 1;\n\n if (typeof window.devicePixelRatio === 'number') {\n scale = window.devicePixelRatio;\n }\n\n canvas.width = size.width * scale;\n canvas.height = size.height * scale;\n this.ctx.scale(scale, scale);\n };\n\n RootNode.prototype._invalidate = function _invalidate () {\n if (!this.ctx) {\n return;\n }\n\n this._rescale();\n\n this.ctx.clearRect(0, 0, this.canvas.width, this.canvas.height);\n this.renderTo(this.ctx);\n };\n\n return RootNode;\n}(GroupNode));\n\nTraversable.extend(RootNode.prototype, \"childNodes\");\n\nexport default RootNode;\n","import { Class } from '../common';\n\nvar QuadRoot = (function (Class) {\n function QuadRoot() {\n Class.call(this);\n\n this.shapes = [];\n }\n\n if ( Class ) QuadRoot.__proto__ = Class;\n QuadRoot.prototype = Object.create( Class && Class.prototype );\n QuadRoot.prototype.constructor = QuadRoot;\n\n QuadRoot.prototype._add = function _add (shape, bbox) {\n this.shapes.push({\n bbox: bbox,\n shape: shape\n });\n shape._quadNode = this;\n };\n\n QuadRoot.prototype.pointShapes = function pointShapes (point) {\n var shapes = this.shapes;\n var length = shapes.length;\n var result = [];\n for (var idx = 0; idx < length; idx++) {\n if (shapes[idx].bbox.containsPoint(point)) {\n result.push(shapes[idx].shape);\n }\n }\n return result;\n };\n\n QuadRoot.prototype.insert = function insert (shape, bbox) {\n this._add(shape, bbox);\n };\n\n QuadRoot.prototype.remove = function remove (shape) {\n var shapes = this.shapes;\n var length = shapes.length;\n\n for (var idx = 0; idx < length; idx++) {\n if (shapes[idx].shape === shape) {\n shapes.splice(idx, 1);\n break;\n }\n }\n };\n\n return QuadRoot;\n}(Class));\n\nexport default QuadRoot;","import QuadRoot from './quad-root';\nimport { Rect } from '../geometry';\nimport { append } from '../util';\n\nvar QuadNode = (function (QuadRoot) {\n function QuadNode(rect) {\n QuadRoot.call(this);\n this.children = [];\n this.rect = rect;\n }\n\n if ( QuadRoot ) QuadNode.__proto__ = QuadRoot;\n QuadNode.prototype = Object.create( QuadRoot && QuadRoot.prototype );\n QuadNode.prototype.constructor = QuadNode;\n\n QuadNode.prototype.inBounds = function inBounds (rect) {\n var nodeRect = this.rect;\n var nodeBottomRight = nodeRect.bottomRight();\n var bottomRight = rect.bottomRight();\n var inBounds = nodeRect.origin.x <= rect.origin.x && nodeRect.origin.y <= rect.origin.y && bottomRight.x <= nodeBottomRight.x &&\n bottomRight.y <= nodeBottomRight.y;\n return inBounds;\n };\n\n QuadNode.prototype.pointShapes = function pointShapes (point) {\n var children = this.children;\n var length = children.length;\n var result = QuadRoot.prototype.pointShapes.call(this, point);\n for (var idx = 0; idx < length; idx++) {\n append(result, children[idx].pointShapes(point));\n }\n return result;\n };\n\n QuadNode.prototype.insert = function insert (shape, bbox) {\n var children = this.children;\n var inserted = false;\n\n if (this.inBounds(bbox)) {\n if (this.shapes.length < 4) {\n this._add(shape, bbox);\n } else {\n if (!children.length) {\n this._initChildren();\n }\n\n for (var idx = 0; idx < children.length; idx++) {\n if (children[idx].insert(shape, bbox)) {\n inserted = true;\n break;\n }\n }\n\n if (!inserted) {\n this._add(shape, bbox);\n }\n }\n inserted = true;\n }\n\n return inserted;\n };\n\n QuadNode.prototype._initChildren = function _initChildren () {\n var ref = this;\n var rect = ref.rect;\n var children = ref.children;\n var center = rect.center();\n var halfWidth = rect.width() / 2;\n var halfHeight = rect.height() / 2;\n\n children.push(\n new QuadNode(new Rect([ rect.origin.x, rect.origin.y ], [ halfWidth, halfHeight ])),\n new QuadNode(new Rect([ center.x, rect.origin.y ], [ halfWidth, halfHeight ])),\n new QuadNode(new Rect([ rect.origin.x, center.y ], [ halfWidth, halfHeight ])),\n new QuadNode(new Rect([ center.x, center.y ], [ halfWidth, halfHeight ]))\n );\n };\n\n return QuadNode;\n}(QuadRoot));\n\nexport default QuadNode;","import QuadRoot from './quad-root';\nimport QuadNode from './quad-node';\nimport { Rect } from '../geometry';\nimport { Class } from '../common';\nimport { append } from '../util';\n\nvar ROOT_SIZE = 3000;\nvar LEVEL_STEP = 10000;\nvar MAX_LEVEL = 75;\n\nvar ShapesQuadTree = (function (Class) {\n function ShapesQuadTree() {\n Class.call(this);\n\n this.initRoots();\n }\n\n if ( Class ) ShapesQuadTree.__proto__ = Class;\n ShapesQuadTree.prototype = Object.create( Class && Class.prototype );\n ShapesQuadTree.prototype.constructor = ShapesQuadTree;\n\n ShapesQuadTree.prototype.initRoots = function initRoots () {\n this.rootMap = {};\n this.root = new QuadRoot();\n this.rootElements = [];\n };\n\n ShapesQuadTree.prototype.clear = function clear () {\n var this$1 = this;\n\n var rootElements = this.rootElements;\n for (var idx = 0; idx < rootElements.length; idx++) {\n this$1.remove(rootElements[idx]);\n }\n this.initRoots();\n };\n\n ShapesQuadTree.prototype.pointShape = function pointShape (point) {\n var sectorRoot = ( this.rootMap[ Math.floor( point.x / ROOT_SIZE ) ] || {} )[ Math.floor( point.y / ROOT_SIZE ) ];\n var result = this.root.pointShapes(point);\n\n if (sectorRoot) {\n result = result.concat(sectorRoot.pointShapes(point));\n }\n\n this.assignZindex(result);\n\n result.sort(zIndexComparer);\n for (var idx = 0; idx < result.length; idx++) {\n if (result[idx].containsPoint(point)) {\n return result[idx];\n }\n }\n };\n\n ShapesQuadTree.prototype.assignZindex = function assignZindex (elements) {\n var this$1 = this;\n\n for (var idx = 0; idx < elements.length; idx++) {\n var element = elements[idx];\n var zIndex = 0;\n var levelWeight = Math.pow(LEVEL_STEP, MAX_LEVEL);\n var parents = [];\n\n while (element) {\n parents.push(element);\n element = element.parent;\n }\n\n while (parents.length) {\n element = parents.pop();\n zIndex += ((element.parent ? element.parent.children : this$1.rootElements).indexOf(element) + 1) * levelWeight;\n levelWeight /= LEVEL_STEP;\n }\n\n elements[idx]._zIndex = zIndex;\n }\n };\n\n ShapesQuadTree.prototype.optionsChange = function optionsChange (e) {\n if (e.field === \"transform\" || e.field === \"stroke.width\") {\n this.bboxChange(e.element);\n }\n };\n\n ShapesQuadTree.prototype.geometryChange = function geometryChange (e) {\n this.bboxChange(e.element);\n };\n\n ShapesQuadTree.prototype.bboxChange = function bboxChange (element) {\n var this$1 = this;\n\n if (element.nodeType === \"Group\") {\n for (var idx = 0; idx < element.children.length; idx++) {\n this$1.bboxChange(element.children[idx]);\n }\n } else {\n if (element._quadNode) {\n element._quadNode.remove(element);\n }\n this._insertShape(element);\n }\n };\n\n ShapesQuadTree.prototype.add = function add (elements) {\n var elementsArray = Array.isArray(elements) ? elements.slice(0) : [ elements ];\n\n append(this.rootElements, elementsArray);\n this._insert(elementsArray);\n };\n\n ShapesQuadTree.prototype.childrenChange = function childrenChange (e) {\n var this$1 = this;\n\n if (e.action === \"remove\") {\n for (var idx = 0; idx < e.items.length; idx++) {\n this$1.remove(e.items[idx]);\n }\n } else {\n this._insert(Array.prototype.slice.call(e.items, 0));\n }\n };\n\n ShapesQuadTree.prototype._insert = function _insert (elements) {\n var this$1 = this;\n\n var element;\n\n while (elements.length > 0) {\n element = elements.pop();\n element.addObserver(this$1);\n if (element.nodeType === \"Group\") {\n append(elements, element.children);\n } else {\n this$1._insertShape(element);\n }\n }\n };\n\n ShapesQuadTree.prototype._insertShape = function _insertShape (shape) {\n var bbox = shape.bbox();\n if (bbox) {\n var sectors = this.getSectors(bbox);\n var x = sectors[0][0];\n var y = sectors[1][0];\n\n if (this.inRoot(sectors)) {\n this.root.insert(shape, bbox);\n } else {\n var rootMap = this.rootMap;\n if (!rootMap[x]) {\n rootMap[x] = {};\n }\n\n if (!rootMap[x][y]) {\n rootMap[x][y] = new QuadNode(\n new Rect([ x * ROOT_SIZE, y * ROOT_SIZE ], [ ROOT_SIZE, ROOT_SIZE ])\n );\n }\n\n rootMap[x][y].insert(shape, bbox);\n }\n }\n };\n\n ShapesQuadTree.prototype.remove = function remove (element) {\n var this$1 = this;\n\n element.removeObserver(this);\n\n if (element.nodeType === \"Group\") {\n var children = element.children;\n for (var idx = 0; idx < children.length; idx++) {\n this$1.remove(children[idx]);\n }\n } else if (element._quadNode) {\n element._quadNode.remove(element);\n delete element._quadNode;\n }\n };\n\n ShapesQuadTree.prototype.inRoot = function inRoot (sectors) {\n return sectors[0].length > 1 || sectors[1].length > 1;\n };\n\n ShapesQuadTree.prototype.getSectors = function getSectors (rect) {\n var bottomRight = rect.bottomRight();\n var bottomX = Math.floor(bottomRight.x / ROOT_SIZE);\n var bottomY = Math.floor(bottomRight.y / ROOT_SIZE);\n var sectors = [ [], [] ];\n for (var x = Math.floor(rect.origin.x / ROOT_SIZE); x <= bottomX; x++) {\n sectors[0].push(x);\n }\n for (var y = Math.floor(rect.origin.y / ROOT_SIZE); y <= bottomY; y++) {\n sectors[1].push(y);\n }\n return sectors;\n };\n\n return ShapesQuadTree;\n}(Class));\n\nfunction zIndexComparer(x1, x2) {\n if (x1._zIndex < x2._zIndex) {\n return 1;\n }\n if (x1._zIndex > x2._zIndex) {\n return -1;\n }\n\n return 0;\n}\n\nexport default ShapesQuadTree;","import { defined } from '../util';\n\nvar SurfaceCursor = function SurfaceCursor(surface) {\n surface.bind(\"mouseenter\", this._mouseenter.bind(this));\n surface.bind(\"mouseleave\", this._mouseleave.bind(this));\n\n this.element = surface.element;\n};\n\nSurfaceCursor.prototype.clear = function clear () {\n this._resetCursor();\n};\n\nSurfaceCursor.prototype.destroy = function destroy () {\n this._resetCursor();\n delete this.element;\n};\n\nSurfaceCursor.prototype._mouseenter = function _mouseenter (e) {\n var cursor = this._shapeCursor(e);\n\n if (!cursor) {\n this._resetCursor();\n } else {\n if (!this._current) {\n this._defaultCursor = this._getCursor();\n }\n\n this._setCursor(cursor);\n }\n};\n\nSurfaceCursor.prototype._mouseleave = function _mouseleave () {\n this._resetCursor();\n};\n\nSurfaceCursor.prototype._shapeCursor = function _shapeCursor (e) {\n var shape = e.element;\n\n while (shape && !defined(shape.options.cursor)) {\n shape = shape.parent;\n }\n\n if (shape) {\n return shape.options.cursor;\n }\n};\n\nSurfaceCursor.prototype._getCursor = function _getCursor () {\n if (this.element) {\n return this.element.style.cursor;\n }\n};\n\nSurfaceCursor.prototype._setCursor = function _setCursor (cursor) {\n if (this.element) {\n this.element.style.cursor = cursor;\n this._current = cursor;\n }\n};\n\nSurfaceCursor.prototype._resetCursor = function _resetCursor () {\n if (this._current) {\n this._setCursor(this._defaultCursor || \"\");\n delete this._current;\n }\n};\n\nexport default SurfaceCursor;\n\n","import BaseSurface from '../core/surface';\nimport SurfaceFactory from '../core/surface-factory';\nimport { createPromise, promiseAll, bindEvents, elementSize, unbindEvents } from '../util';\nimport RootNode from './root-node';\nimport ShapesQuadTree from '../search/shapes-quad-tree';\nimport SurfaceCursor from './surface-cursor';\n\nvar Surface = (function (BaseSurface) {\n function Surface(element, options) {\n BaseSurface.call(this, element, options);\n\n this.element.innerHTML = this._template(this);\n\n var canvas = this.element.firstElementChild;\n var size = elementSize(element);\n\n canvas.width = size.width;\n canvas.height = size.height;\n\n this._rootElement = canvas;\n\n this._root = new RootNode(canvas, size);\n\n this._mouseTrackHandler = this._trackMouse.bind(this);\n\n bindEvents(this.element, {\n click: this._mouseTrackHandler,\n mousemove: this._mouseTrackHandler\n });\n }\n\n if ( BaseSurface ) Surface.__proto__ = BaseSurface;\n Surface.prototype = Object.create( BaseSurface && BaseSurface.prototype );\n Surface.prototype.constructor = Surface;\n\n Surface.prototype.destroy = function destroy () {\n BaseSurface.prototype.destroy.call(this);\n\n if (this._root) {\n this._root.destroy();\n this._root = null;\n }\n\n if (this._searchTree) {\n this._searchTree.clear();\n delete this._searchTree;\n }\n\n if (this._cursor) {\n this._cursor.destroy();\n delete this._cursor;\n }\n\n unbindEvents(this.element, {\n click: this._mouseTrackHandler,\n mousemove: this._mouseTrackHandler\n });\n };\n\n Surface.prototype.draw = function draw (element) {\n BaseSurface.prototype.draw.call(this, element);\n this._root.load([ element ], undefined, this.options.cors);\n\n if (this._searchTree) {\n this._searchTree.add([ element ]);\n }\n };\n\n Surface.prototype.clear = function clear () {\n BaseSurface.prototype.clear.call(this);\n this._root.clear();\n\n if (this._searchTree) {\n this._searchTree.clear();\n }\n\n if (this._cursor) {\n this._cursor.clear();\n }\n };\n\n Surface.prototype.eventTarget = function eventTarget (e) {\n if (this._searchTree) {\n var point = this._surfacePoint(e);\n var shape = this._searchTree.pointShape(point);\n return shape;\n }\n };\n\n Surface.prototype.image = function image () {\n var ref = this;\n var root = ref._root;\n var rootElement = ref._rootElement;\n var loadingStates = [];\n\n root.traverse(function (childNode) {\n if (childNode.loading) {\n loadingStates.push(childNode.loading);\n }\n });\n\n var promise = createPromise();\n var resolveDataURL = function () {\n root._invalidate();\n\n try {\n var data = rootElement.toDataURL();\n promise.resolve(data);\n } catch (e) {\n promise.reject(e);\n }\n };\n\n promiseAll(loadingStates).then(resolveDataURL, resolveDataURL);\n\n return promise;\n };\n\n Surface.prototype.suspendTracking = function suspendTracking () {\n BaseSurface.prototype.suspendTracking.call(this);\n if (this._searchTree) {\n this._searchTree.clear();\n delete this._searchTree;\n }\n };\n\n Surface.prototype.resumeTracking = function resumeTracking () {\n BaseSurface.prototype.resumeTracking.call(this);\n if (!this._searchTree) {\n this._searchTree = new ShapesQuadTree();\n\n var childNodes = this._root.childNodes;\n var rootElements = [];\n for (var idx = 0; idx < childNodes.length; idx++) {\n rootElements.push(childNodes[idx].srcElement);\n }\n this._searchTree.add(rootElements);\n }\n };\n\n Surface.prototype._resize = function _resize () {\n this._rootElement.width = this._size.width;\n this._rootElement.height = this._size.height;\n\n this._root.size = this._size;\n this._root.invalidate();\n };\n\n Surface.prototype._template = function _template () {\n return \"\";\n };\n\n Surface.prototype._enableTracking = function _enableTracking () {\n this._searchTree = new ShapesQuadTree();\n this._cursor = new SurfaceCursor(this);\n\n BaseSurface.prototype._enableTracking.call(this);\n };\n\n Surface.prototype._trackMouse = function _trackMouse (e) {\n if (this._suspendedTracking) {\n return;\n }\n\n var shape = this.eventTarget(e);\n\n if (e.type !== \"click\") {\n var currentShape = this._currentShape;\n if (currentShape && currentShape !== shape) {\n this.trigger(\"mouseleave\", {\n element: currentShape,\n originalEvent: e,\n type: \"mouseleave\"\n });\n }\n\n if (shape && currentShape !== shape) {\n this.trigger(\"mouseenter\", {\n element: shape,\n originalEvent: e,\n type: \"mouseenter\"\n });\n }\n\n this.trigger(\"mousemove\", {\n element: shape,\n originalEvent: e,\n type: \"mousemove\"\n });\n\n this._currentShape = shape;\n } else if (shape) {\n this.trigger(\"click\", {\n element: shape,\n originalEvent: e,\n type: \"click\"\n });\n }\n };\n\n return Surface;\n}(BaseSurface));\n\nSurface.prototype.type = \"canvas\";\n\nif (typeof document !== \"undefined\" && document.createElement(\"canvas\").getContext) {\n BaseSurface.support.canvas = true;\n SurfaceFactory.current.register(\"canvas\", Surface, 20);\n}\n\nexport default Surface;\n","export default function promiseAll(promises) {\n return Promise.all(promises);\n}","import Node from './node';\nimport { parseColor } from '../common';\nimport { isTransparent, valueOrDefault } from '../util';\nimport LinearGradient from '../gradients/linear-gradient';\nimport RadialGradient from '../gradients/radial-gradient';\nimport { DASH_ARRAYS, SOLID, BUTT } from '../core/constants';\nimport renderPath from './utils/render-path';\nimport NODE_MAP from './node-map';\n\nfunction addGradientStops(gradient, stops) {\n for (var idx = 0; idx < stops.length; idx++) {\n var stop = stops[idx];\n var color = parseColor(stop.color());\n\n color.a *= stop.opacity();\n\n gradient.addColorStop(stop.offset(), color.toCssRgba());\n }\n}\n\nvar PathNode = (function (Node) {\n function PathNode () {\n Node.apply(this, arguments);\n }\n\n if ( Node ) PathNode.__proto__ = Node;\n PathNode.prototype = Object.create( Node && Node.prototype );\n PathNode.prototype.constructor = PathNode;\n\n PathNode.prototype.renderTo = function renderTo (ctx) {\n ctx.save();\n\n this.setTransform(ctx);\n this.setClip(ctx);\n this.setOpacity(ctx);\n\n ctx.beginPath();\n\n this.renderPoints(ctx, this.srcElement);\n\n this.setLineDash(ctx);\n this.setLineCap(ctx);\n this.setLineJoin(ctx);\n\n this.setFill(ctx);\n this.setStroke(ctx);\n\n ctx.restore();\n };\n\n PathNode.prototype.setFill = function setFill (ctx) {\n var fill = this.srcElement.options.fill;\n var hasFill = false;\n\n if (fill) {\n if (fill.nodeType === \"Gradient\") {\n this.setGradientFill(ctx, fill);\n hasFill = true;\n } else if (!isTransparent(fill.color)) {\n ctx.fillStyle = fill.color;\n\n ctx.save();\n this.globalAlpha(ctx, fill.opacity);\n ctx.fill();\n ctx.restore();\n\n hasFill = true;\n }\n }\n\n return hasFill;\n };\n\n PathNode.prototype.setGradientFill = function setGradientFill (ctx, fill) {\n var bbox = this.srcElement.rawBBox();\n var gradient;\n\n if (fill instanceof LinearGradient) {\n var start = fill.start();\n var end = fill.end();\n gradient = ctx.createLinearGradient(start.x, start.y, end.x, end.y);\n } else if (fill instanceof RadialGradient) {\n var center = fill.center();\n gradient = ctx.createRadialGradient(center.x, center.y, 0, center.x, center.y, fill.radius());\n }\n\n addGradientStops(gradient, fill.stops);\n\n ctx.save();\n\n if (!fill.userSpace()) {\n ctx.transform(bbox.width(), 0, 0, bbox.height(), bbox.origin.x, bbox.origin.y);\n }\n ctx.fillStyle = gradient;\n ctx.fill();\n\n ctx.restore();\n };\n\n PathNode.prototype.setStroke = function setStroke (ctx) {\n var stroke = this.srcElement.options.stroke;\n if (stroke && !isTransparent(stroke.color) && stroke.width > 0) {\n ctx.strokeStyle = stroke.color;\n ctx.lineWidth = valueOrDefault(stroke.width, 1);\n\n ctx.save();\n this.globalAlpha(ctx, stroke.opacity);\n ctx.stroke();\n ctx.restore();\n\n return true;\n }\n };\n\n PathNode.prototype.dashType = function dashType () {\n var stroke = this.srcElement.options.stroke;\n if (stroke && stroke.dashType) {\n return stroke.dashType.toLowerCase();\n }\n };\n\n PathNode.prototype.setLineDash = function setLineDash (ctx) {\n var dashType = this.dashType();\n if (dashType && dashType !== SOLID) {\n var dashArray = DASH_ARRAYS[dashType];\n if (ctx.setLineDash) {\n ctx.setLineDash(dashArray);\n } else {\n ctx.mozDash = dashArray;\n ctx.webkitLineDash = dashArray;\n }\n }\n };\n\n PathNode.prototype.setLineCap = function setLineCap (ctx) {\n var dashType = this.dashType();\n var stroke = this.srcElement.options.stroke;\n if (dashType && dashType !== SOLID) {\n ctx.lineCap = BUTT;\n } else if (stroke && stroke.lineCap) {\n ctx.lineCap = stroke.lineCap;\n }\n };\n\n PathNode.prototype.setLineJoin = function setLineJoin (ctx) {\n var stroke = this.srcElement.options.stroke;\n if (stroke && stroke.lineJoin) {\n ctx.lineJoin = stroke.lineJoin;\n }\n };\n\n PathNode.prototype.renderPoints = function renderPoints (ctx, path) {\n renderPath(ctx, path);\n };\n\n return PathNode;\n}(Node));\n\nNODE_MAP.Path = PathNode;\n\nexport default PathNode;\n","import PathNode from './path-node';\nimport NODE_MAP from './node-map';\nimport renderPath from './utils/render-path';\n\nvar ArcNode = (function (PathNode) {\n function ArcNode () {\n PathNode.apply(this, arguments);\n }\n\n if ( PathNode ) ArcNode.__proto__ = PathNode;\n ArcNode.prototype = Object.create( PathNode && PathNode.prototype );\n ArcNode.prototype.constructor = ArcNode;\n\n ArcNode.prototype.renderPoints = function renderPoints (ctx) {\n var path = this.srcElement.toPath();\n renderPath(ctx, path);\n };\n\n return ArcNode;\n}(PathNode));\n\nNODE_MAP.Arc = ArcNode;\n\nexport default ArcNode;","import PathNode from './path-node';\nimport NODE_MAP from './node-map';\n\nvar CircleNode = (function (PathNode) {\n function CircleNode () {\n PathNode.apply(this, arguments);\n }\n\n if ( PathNode ) CircleNode.__proto__ = PathNode;\n CircleNode.prototype = Object.create( PathNode && PathNode.prototype );\n CircleNode.prototype.constructor = CircleNode;\n\n CircleNode.prototype.renderPoints = function renderPoints (ctx) {\n var ref = this.srcElement.geometry();\n var center = ref.center;\n var radius = ref.radius;\n\n ctx.arc(center.x, center.y, radius, 0, Math.PI * 2);\n };\n\n return CircleNode;\n}(PathNode));\n\nNODE_MAP.Circle = CircleNode;\n\nexport default CircleNode;","import PathNode from './path-node';\nimport NODE_MAP from './node-map';\n\nvar RectNode = (function (PathNode) {\n function RectNode () {\n PathNode.apply(this, arguments);\n }\n\n if ( PathNode ) RectNode.__proto__ = PathNode;\n RectNode.prototype = Object.create( PathNode && PathNode.prototype );\n RectNode.prototype.constructor = RectNode;\n\n RectNode.prototype.renderPoints = function renderPoints (ctx) {\n var ref = this.srcElement.geometry();\n var origin = ref.origin;\n var size = ref.size;\n\n ctx.rect(origin.x, origin.y, size.width, size.height);\n };\n\n return RectNode;\n}(PathNode));\n\nNODE_MAP.Rect = RectNode;\n\nexport default RectNode;","import PathNode from './path-node';\nimport NODE_MAP from './node-map';\nimport { createPromise } from '../util';\n\nvar ImageNode = (function (PathNode) {\n function ImageNode(srcElement, cors) {\n PathNode.call(this, srcElement);\n\n this.onLoad = this.onLoad.bind(this);\n this.onError = this.onError.bind(this);\n\n this.loading = createPromise();\n\n var img = this.img = new Image();\n\n if (cors && !(/^data:/i.test(srcElement.src()))) {\n img.crossOrigin = cors;\n }\n\n img.src = srcElement.src();\n\n if (img.complete) {\n this.onLoad();\n } else {\n img.onload = this.onLoad;\n img.onerror = this.onError;\n }\n }\n\n if ( PathNode ) ImageNode.__proto__ = PathNode;\n ImageNode.prototype = Object.create( PathNode && PathNode.prototype );\n ImageNode.prototype.constructor = ImageNode;\n\n ImageNode.prototype.renderTo = function renderTo (ctx) {\n if (this.loading.state() === \"resolved\") {\n ctx.save();\n\n this.setTransform(ctx);\n this.setClip(ctx);\n\n this.drawImage(ctx);\n\n ctx.restore();\n }\n };\n\n ImageNode.prototype.optionsChange = function optionsChange (e) {\n if (e.field === \"src\") {\n this.loading = createPromise();\n this.img.src = this.srcElement.src();\n } else {\n PathNode.prototype.optionsChange.call(this, e);\n }\n };\n\n ImageNode.prototype.onLoad = function onLoad () {\n this.loading.resolve();\n this.invalidate();\n };\n\n ImageNode.prototype.onError = function onError () {\n this.loading.reject(new Error(\n \"Unable to load image '\" + this.img.src +\n \"'. Check for connectivity and verify CORS headers.\"\n ));\n };\n\n ImageNode.prototype.drawImage = function drawImage (ctx) {\n var rect = this.srcElement.rect();\n var topLeft = rect.topLeft();\n\n ctx.drawImage(\n this.img, topLeft.x, topLeft.y, rect.width(), rect.height()\n );\n };\n\n return ImageNode;\n}(PathNode));\n\nNODE_MAP.Image = ImageNode;\n\nexport default ImageNode;","import PathNode from './path-node';\nimport NODE_MAP from './node-map';\n\nvar TextNode = (function (PathNode) {\n function TextNode () {\n PathNode.apply(this, arguments);\n }\n\n if ( PathNode ) TextNode.__proto__ = PathNode;\n TextNode.prototype = Object.create( PathNode && PathNode.prototype );\n TextNode.prototype.constructor = TextNode;\n\n TextNode.prototype.renderTo = function renderTo (ctx) {\n var text = this.srcElement;\n var pos = text.position();\n var size = text.measure();\n\n ctx.save();\n\n this.setTransform(ctx);\n this.setClip(ctx);\n this.setOpacity(ctx);\n\n ctx.beginPath();\n\n ctx.font = text.options.font;\n ctx.textAlign = 'left';\n\n if (this.setFill(ctx)) {\n ctx.fillText(text.content(), pos.x, pos.y + size.baseline);\n }\n\n if (this.setStroke(ctx)) {\n this.setLineDash(ctx);\n ctx.strokeText(text.content(), pos.x, pos.y + size.baseline);\n }\n\n ctx.restore();\n };\n\n return TextNode;\n}(PathNode));\n\n\nNODE_MAP.Text = TextNode;\n\nexport default TextNode;","import PathNode from './path-node';\nimport NODE_MAP from './node-map';\nimport renderPath from './utils/render-path';\n\nvar MultiPathNode = (function (PathNode) {\n function MultiPathNode () {\n PathNode.apply(this, arguments);\n }\n\n if ( PathNode ) MultiPathNode.__proto__ = PathNode;\n MultiPathNode.prototype = Object.create( PathNode && PathNode.prototype );\n MultiPathNode.prototype.constructor = MultiPathNode;\n\n MultiPathNode.prototype.renderPoints = function renderPoints (ctx) {\n var paths = this.srcElement.paths;\n for (var i = 0; i < paths.length; i++) {\n renderPath(ctx, paths[i]);\n }\n };\n\n return MultiPathNode;\n}(PathNode));\n\nNODE_MAP.MultiPath = MultiPathNode;\n\nexport default MultiPathNode;","import { support } from '../common';\n\n/* eslint-disable no-multi-spaces, key-spacing, indent, camelcase, space-before-blocks, eqeqeq, brace-style */\n/* eslint-disable space-infix-ops, space-before-function-paren, array-bracket-spacing, object-curly-spacing */\n/* eslint-disable no-nested-ternary, max-params, default-case, no-else-return, no-empty */\n/* eslint-disable no-param-reassign, no-var, block-scoped-var */\n\n// XXX: remove this junk (assume `true`) when we no longer have to support IE < 10\n// IE 9 (at least compatibility) reports having Uint8Array but the request response does not contain ArrayBuffer which results in missing table head error\nvar HAS_TYPED_ARRAYS = typeof Uint8Array !== 'undefined' && support.browser && (!support.browser.msie || support.browser.version > 9);\n\nvar BASE64 = (function(){\n var keyStr = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\n return {\n decode: function(str) {\n var input = str.replace(/[^A-Za-z0-9\\+\\/\\=]/g, \"\"), i = 0, n = input.length, output = [];\n\n while (i < n) {\n var enc1 = keyStr.indexOf(input.charAt(i++));\n var enc2 = keyStr.indexOf(input.charAt(i++));\n var enc3 = keyStr.indexOf(input.charAt(i++));\n var enc4 = keyStr.indexOf(input.charAt(i++));\n\n var chr1 = (enc1 << 2) | (enc2 >>> 4);\n var chr2 = ((enc2 & 15) << 4) | (enc3 >>> 2);\n var chr3 = ((enc3 & 3) << 6) | enc4;\n\n output.push(chr1);\n if (enc3 != 64) {\n output.push(chr2);\n }\n if (enc4 != 64) {\n output.push(chr3);\n }\n }\n\n return output;\n },\n encode: function(bytes) {\n var i = 0, n = bytes.length;\n var output = \"\";\n\n while (i < n) {\n var chr1 = bytes[i++];\n var chr2 = bytes[i++];\n var chr3 = bytes[i++];\n\n var enc1 = chr1 >>> 2;\n var enc2 = ((chr1 & 3) << 4) | (chr2 >>> 4);\n var enc3 = ((chr2 & 15) << 2) | (chr3 >>> 6);\n var enc4 = chr3 & 63;\n\n if (i - n == 2) {\n enc3 = enc4 = 64;\n } else if (i - n == 1) {\n enc4 = 64;\n }\n\n output += keyStr.charAt(enc1) + keyStr.charAt(enc2) + keyStr.charAt(enc3) + keyStr.charAt(enc4);\n }\n return output;\n }\n };\n}());\n\nfunction BinaryStream(data) {\n var offset = 0, length = 0;\n if (data == null) {\n data = HAS_TYPED_ARRAYS ? new Uint8Array(256) : [];\n } else {\n length = data.length;\n }\n\n var ensure = HAS_TYPED_ARRAYS ? function(len) {\n if (len >= data.length) {\n var tmp = new Uint8Array(Math.max(len + 256, data.length * 2));\n tmp.set(data, 0);\n data = tmp;\n }\n } : function() {};\n\n var get = HAS_TYPED_ARRAYS ? function() {\n return new Uint8Array(data.buffer, 0, length);\n } : function() {\n return data;\n };\n\n var write = HAS_TYPED_ARRAYS ? function(bytes) {\n if (typeof bytes == \"string\") {\n return writeString(bytes);\n }\n var len = bytes.length;\n ensure(offset + len);\n data.set(bytes, offset);\n offset += len;\n if (offset > length) {\n length = offset;\n }\n } : function(bytes) {\n if (typeof bytes == \"string\") {\n return writeString(bytes);\n }\n for (var i = 0; i < bytes.length; ++i) {\n writeByte(bytes[i]);\n }\n };\n\n var slice = HAS_TYPED_ARRAYS ? function(start, length) {\n if (data.buffer.slice) {\n return new Uint8Array(data.buffer.slice(start, start + length));\n } else {\n // IE10\n var x = new Uint8Array(length);\n x.set(new Uint8Array(data.buffer, start, length));\n return x;\n }\n } : function(start, length) {\n return data.slice(start, start + length);\n };\n\n function eof() {\n return offset >= length;\n }\n function readByte() {\n return offset < length ? data[offset++] : 0;\n }\n function writeByte(b) {\n ensure(offset);\n data[offset++] = b & 0xFF;\n if (offset > length) {\n length = offset;\n }\n }\n function readShort() {\n return (readByte() << 8) | readByte();\n }\n function writeShort(w) {\n writeByte(w >> 8);\n writeByte(w);\n }\n function readShort_() {\n var w = readShort();\n return w >= 0x8000 ? w - 0x10000 : w;\n }\n function writeShort_(w) {\n writeShort(w < 0 ? w + 0x10000 : w);\n }\n function readLong() {\n return (readShort() * 0x10000) + readShort();\n }\n function writeLong(w) {\n writeShort((w >>> 16) & 0xFFFF);\n writeShort(w & 0xFFFF);\n }\n function readLong_() {\n var w = readLong();\n return w >= 0x80000000 ? w - 0x100000000 : w;\n }\n function writeLong_(w) {\n writeLong(w < 0 ? w + 0x100000000 : w);\n }\n function readFixed() {\n return readLong() / 0x10000;\n }\n function writeFixed(f) {\n writeLong(Math.round(f * 0x10000));\n }\n function readFixed_() {\n return readLong_() / 0x10000;\n }\n function writeFixed_(f) {\n writeLong_(Math.round(f * 0x10000));\n }\n function read(len) {\n return times(len, readByte);\n }\n function readString(len) {\n return String.fromCharCode.apply(String, read(len));\n }\n function writeString(str) {\n for (var i = 0; i < str.length; ++i) {\n writeByte(str.charCodeAt(i));\n }\n }\n function times(n, reader) {\n for (var ret = new Array(n), i = 0; i < n; ++i) {\n ret[i] = reader();\n }\n return ret;\n }\n\n var stream = {\n eof : eof,\n readByte : readByte,\n writeByte : writeByte,\n readShort : readShort,\n writeShort : writeShort,\n readLong : readLong,\n writeLong : writeLong,\n readFixed : readFixed,\n writeFixed : writeFixed,\n\n // signed numbers.\n readShort_ : readShort_,\n writeShort_ : writeShort_,\n readLong_ : readLong_,\n writeLong_ : writeLong_,\n readFixed_ : readFixed_,\n writeFixed_ : writeFixed_,\n\n read : read,\n write : write,\n readString : readString,\n writeString : writeString,\n\n times : times,\n get : get,\n slice : slice,\n\n offset: function(pos) {\n if (pos != null) {\n offset = pos;\n return stream;\n }\n return offset;\n },\n\n skip: function(nbytes) {\n offset += nbytes;\n },\n\n toString: function() {\n throw new Error(\"FIX CALLER. BinaryStream is no longer convertible to string!\");\n },\n\n length: function() { return length; },\n\n saveExcursion: function(f) {\n var pos = offset;\n try {\n return f();\n } finally {\n offset = pos;\n }\n },\n\n writeBase64: function(base64) {\n if (window.atob) {\n writeString(window.atob(base64));\n } else {\n write(BASE64.decode(base64));\n }\n },\n base64: function() {\n return BASE64.encode(get());\n }\n };\n\n return stream;\n}\n\nfunction ucs2decode(string) {\n var output = [],\n counter = 0,\n length = string.length,\n value,\n extra;\n while (counter < length) {\n value = string.charCodeAt(counter++);\n if (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n // high surrogate, and there is a next character\n extra = string.charCodeAt(counter++);\n if ((extra & 0xFC00) == 0xDC00) { // low surrogate\n output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n } else {\n // unmatched surrogate; only append this code unit, in case the next\n // code unit is the high surrogate of a surrogate pair\n output.push(value);\n counter--;\n }\n } else {\n output.push(value);\n }\n }\n return output;\n}\n\nfunction ucs2encode(array) {\n return array.map(function(value){\n var output = \"\";\n if (value > 0xFFFF) {\n value -= 0x10000;\n output += String.fromCharCode(value >>> 10 & 0x3FF | 0xD800);\n value = 0xDC00 | value & 0x3FF;\n }\n output += String.fromCharCode(value);\n return output;\n }).join(\"\");\n}\n\nfunction atobUint8Array(base64) {\n var data = window.atob(base64);\n var result = new Uint8Array(data.length);\n\n for (var idx = 0; idx < data.length; idx++) {\n result[idx] = data.charCodeAt(idx);\n }\n\n return result;\n}\n\nfunction createUint8Array(data) {\n var result = new Uint8Array(data.length);\n\n for (var idx = 0; idx < data.length; idx++) {\n result[idx] = data[idx];\n }\n\n return result;\n}\n\nfunction base64ToUint8Array(base64) {\n if (window.atob) {\n return atobUint8Array(base64);\n }\n\n return createUint8Array(BASE64.decode(base64));\n}\n\nexport {\n HAS_TYPED_ARRAYS,\n BASE64,\n BinaryStream,\n ucs2decode,\n ucs2encode,\n base64ToUint8Array\n};\n","/* eslint-disable no-multi-spaces, key-spacing, indent, camelcase, space-before-blocks, eqeqeq, brace-style */\n/* eslint-disable space-infix-ops, space-before-function-paren, array-bracket-spacing, object-curly-spacing */\n/* eslint-disable no-nested-ternary, max-params, default-case, no-else-return, no-empty */\n/* eslint-disable no-param-reassign, no-var, block-scoped-var */\n\n/*****************************************************************************\\\n *\n * The code in this file, although written from scratch, is influenced by the\n * TrueType parser/encoder in PDFKit -- http://pdfkit.org/ (a CoffeeScript\n * library for producing PDF files).\n *\n * PDFKit is (c) Devon Govett 2014 and released under the MIT License.\n *\n\\*****************************************************************************/\n\nimport { BinaryStream, ucs2decode } from \"./utils\";\n\nfunction hasOwnProperty(obj, key) {\n return Object.prototype.hasOwnProperty.call(obj, key);\n}\n\nfunction sortedKeys(obj) {\n return Object.keys(obj).sort(function(a, b){ return a - b; }).map(parseFloat);\n}\n\n///\n\nfunction Directory(data) {\n this.raw = data;\n this.scalerType = data.readLong();\n this.tableCount = data.readShort();\n this.searchRange = data.readShort();\n this.entrySelector = data.readShort();\n this.rangeShift = data.readShort();\n\n var tables = this.tables = {};\n for (var i = 0; i < this.tableCount; ++i) {\n var entry = {\n tag : data.readString(4),\n checksum : data.readLong(),\n offset : data.readLong(),\n length : data.readLong()\n };\n tables[entry.tag] = entry;\n }\n}\n\nDirectory.prototype = {\n\n readTable: function(name, Ctor) {\n var def = this.tables[name];\n if (!def) {\n throw new Error(\"Table \" + name + \" not found in directory\");\n }\n return (this[name] = def.table = new Ctor(this, def));\n },\n\n render: function(tables) {\n var this$1 = this;\n\n var tableCount = Object.keys(tables).length;\n\n var maxpow2 = Math.pow(2, Math.floor(Math.log(tableCount) / Math.LN2));\n var searchRange = maxpow2 * 16;\n var entrySelector = Math.floor(Math.log(maxpow2) / Math.LN2);\n var rangeShift = tableCount * 16 - searchRange;\n\n var out = BinaryStream();\n out.writeLong(this.scalerType);\n out.writeShort(tableCount);\n out.writeShort(searchRange);\n out.writeShort(entrySelector);\n out.writeShort(rangeShift);\n\n var directoryLength = tableCount * 16;\n var offset = out.offset() + directoryLength;\n var headOffset = null;\n var tableData = BinaryStream();\n\n for (var tag in tables) {\n if (hasOwnProperty(tables, tag)) {\n var table = tables[tag];\n\n out.writeString(tag);\n out.writeLong(this$1.checksum(table));\n out.writeLong(offset);\n out.writeLong(table.length);\n\n tableData.write(table);\n if (tag == \"head\") {\n headOffset = offset;\n }\n offset += table.length;\n\n while (offset % 4) {\n tableData.writeByte(0);\n offset++;\n }\n }\n }\n\n out.write(tableData.get());\n var sum = this.checksum(out.get());\n var adjustment = 0xB1B0AFBA - sum;\n\n out.offset(headOffset + 8);\n out.writeLong(adjustment);\n return out.get();\n },\n\n checksum: function(data) {\n data = BinaryStream(data);\n var sum = 0;\n while (!data.eof()) {\n sum += data.readLong();\n }\n return sum & 0xFFFFFFFF;\n }\n};\n\nfunction deftable(methods) {\n function Ctor(file, def) {\n this.definition = def;\n this.length = def.length;\n this.offset = def.offset;\n this.file = file;\n this.rawData = file.raw;\n this.parse(file.raw);\n }\n Ctor.prototype.raw = function() {\n return this.rawData.slice(this.offset, this.length);\n };\n for (var i in methods) {\n if (hasOwnProperty(methods, i)) {\n Ctor[i] = Ctor.prototype[i] = methods[i];\n }\n }\n return Ctor;\n}\n\nvar HeadTable = deftable({\n parse: function(data) {\n data.offset(this.offset);\n this.version = data.readLong();\n this.revision = data.readLong();\n this.checkSumAdjustment = data.readLong();\n this.magicNumber = data.readLong();\n this.flags = data.readShort();\n this.unitsPerEm = data.readShort();\n this.created = data.read(8);\n this.modified = data.read(8);\n\n this.xMin = data.readShort_();\n this.yMin = data.readShort_();\n this.xMax = data.readShort_();\n this.yMax = data.readShort_();\n\n this.macStyle = data.readShort();\n this.lowestRecPPEM = data.readShort();\n this.fontDirectionHint = data.readShort_();\n this.indexToLocFormat = data.readShort_();\n this.glyphDataFormat = data.readShort_();\n },\n render: function(indexToLocFormat) {\n var out = BinaryStream();\n out.writeLong(this.version);\n out.writeLong(this.revision);\n out.writeLong(0); // checksum adjustment; shall be computed later\n out.writeLong(this.magicNumber);\n out.writeShort(this.flags);\n out.writeShort(this.unitsPerEm);\n out.write(this.created);\n out.write(this.modified);\n out.writeShort_(this.xMin);\n out.writeShort_(this.yMin);\n out.writeShort_(this.xMax);\n out.writeShort_(this.yMax);\n out.writeShort(this.macStyle);\n out.writeShort(this.lowestRecPPEM);\n out.writeShort_(this.fontDirectionHint);\n out.writeShort_(indexToLocFormat); // this will depend on the `loca` table\n out.writeShort_(this.glyphDataFormat);\n return out.get();\n }\n});\n\nvar LocaTable = deftable({\n parse: function(data) {\n data.offset(this.offset);\n var format = this.file.head.indexToLocFormat;\n if (format === 0) {\n this.offsets = data.times(this.length / 2, function(){\n return 2 * data.readShort();\n });\n } else {\n this.offsets = data.times(this.length / 4, data.readLong);\n }\n },\n offsetOf: function(id) {\n return this.offsets[id];\n },\n lengthOf: function(id) {\n return this.offsets[id + 1] - this.offsets[id];\n },\n render: function(offsets) {\n var out = BinaryStream();\n var needsLongFormat = offsets[offsets.length - 1] > 0xFFFF;\n for (var i = 0; i < offsets.length; ++i) {\n if (needsLongFormat) {\n out.writeLong(offsets[i]);\n } else {\n out.writeShort(offsets[i] / 2);\n }\n }\n return {\n format: needsLongFormat ? 1 : 0,\n table: out.get()\n };\n }\n});\n\nvar HheaTable = deftable({\n parse: function(data) {\n data.offset(this.offset);\n\n this.version = data.readLong();\n this.ascent = data.readShort_();\n this.descent = data.readShort_();\n this.lineGap = data.readShort_();\n this.advanceWidthMax = data.readShort();\n this.minLeftSideBearing = data.readShort_();\n this.minRightSideBearing = data.readShort_();\n this.xMaxExtent = data.readShort_();\n this.caretSlopeRise = data.readShort_();\n this.caretSlopeRun = data.readShort_();\n this.caretOffset = data.readShort_();\n\n data.skip(4 * 2); // reserved\n\n this.metricDataFormat = data.readShort_();\n this.numOfLongHorMetrics = data.readShort();\n },\n render: function(ids) {\n var out = BinaryStream();\n out.writeLong(this.version);\n out.writeShort_(this.ascent);\n out.writeShort_(this.descent);\n out.writeShort_(this.lineGap);\n out.writeShort(this.advanceWidthMax);\n out.writeShort_(this.minLeftSideBearing);\n out.writeShort_(this.minRightSideBearing);\n out.writeShort_(this.xMaxExtent);\n out.writeShort_(this.caretSlopeRise);\n out.writeShort_(this.caretSlopeRun);\n out.writeShort_(this.caretOffset);\n\n out.write([ 0, 0, 0, 0, 0, 0, 0, 0 ]); // reserved bytes\n\n out.writeShort_(this.metricDataFormat);\n out.writeShort(ids.length);\n return out.get();\n }\n});\n\nvar MaxpTable = deftable({\n parse: function(data) {\n data.offset(this.offset);\n this.version = data.readLong();\n this.numGlyphs = data.readShort();\n this.maxPoints = data.readShort();\n this.maxContours = data.readShort();\n this.maxComponentPoints = data.readShort();\n this.maxComponentContours = data.readShort();\n this.maxZones = data.readShort();\n this.maxTwilightPoints = data.readShort();\n this.maxStorage = data.readShort();\n this.maxFunctionDefs = data.readShort();\n this.maxInstructionDefs = data.readShort();\n this.maxStackElements = data.readShort();\n this.maxSizeOfInstructions = data.readShort();\n this.maxComponentElements = data.readShort();\n this.maxComponentDepth = data.readShort();\n },\n render: function(glyphIds) {\n var out = BinaryStream();\n out.writeLong(this.version);\n out.writeShort(glyphIds.length);\n out.writeShort(this.maxPoints);\n out.writeShort(this.maxContours);\n out.writeShort(this.maxComponentPoints);\n out.writeShort(this.maxComponentContours);\n out.writeShort(this.maxZones);\n out.writeShort(this.maxTwilightPoints);\n out.writeShort(this.maxStorage);\n out.writeShort(this.maxFunctionDefs);\n out.writeShort(this.maxInstructionDefs);\n out.writeShort(this.maxStackElements);\n out.writeShort(this.maxSizeOfInstructions);\n out.writeShort(this.maxComponentElements);\n out.writeShort(this.maxComponentDepth);\n return out.get();\n }\n});\n\nvar HmtxTable = deftable({\n parse: function(data) {\n data.offset(this.offset);\n var dir = this.file, hhea = dir.hhea;\n this.metrics = data.times(hhea.numOfLongHorMetrics, function(){\n return {\n advance: data.readShort(),\n lsb: data.readShort_()\n };\n });\n var lsbCount = dir.maxp.numGlyphs - dir.hhea.numOfLongHorMetrics;\n this.leftSideBearings = data.times(lsbCount, data.readShort_);\n },\n forGlyph: function(id) {\n var metrics = this.metrics;\n var n = metrics.length;\n if (id < n) {\n return metrics[id];\n }\n return {\n advance: metrics[n - 1].advance,\n lsb: this.leftSideBearings[id - n]\n };\n },\n render: function(glyphIds) {\n var this$1 = this;\n\n var out = BinaryStream();\n for (var i = 0; i < glyphIds.length; ++i) {\n var m = this$1.forGlyph(glyphIds[i]);\n out.writeShort(m.advance);\n out.writeShort_(m.lsb);\n }\n return out.get();\n }\n});\n\nvar GlyfTable = (function(){\n\n function SimpleGlyph(raw) {\n this.raw = raw;\n }\n SimpleGlyph.prototype = {\n compound: false,\n render: function() {\n return this.raw.get();\n }\n };\n\n var ARG_1_AND_2_ARE_WORDS = 0x0001;\n var WE_HAVE_A_SCALE = 0x0008;\n var MORE_COMPONENTS = 0x0020;\n var WE_HAVE_AN_X_AND_Y_SCALE = 0x0040;\n var WE_HAVE_A_TWO_BY_TWO = 0x0080;\n //var WE_HAVE_INSTRUCTIONS = 0x0100;\n\n function CompoundGlyph(data) {\n this.raw = data;\n var ids = this.glyphIds = [];\n var offsets = this.idOffsets = [];\n while (true) { // eslint-disable-line no-constant-condition\n var flags = data.readShort();\n offsets.push(data.offset());\n ids.push(data.readShort());\n\n if (!(flags & MORE_COMPONENTS)) {\n break;\n }\n\n data.skip(flags & ARG_1_AND_2_ARE_WORDS ? 4 : 2);\n\n if (flags & WE_HAVE_A_TWO_BY_TWO) {\n data.skip(8);\n } else if (flags & WE_HAVE_AN_X_AND_Y_SCALE) {\n data.skip(4);\n } else if (flags & WE_HAVE_A_SCALE) {\n data.skip(2);\n }\n }\n }\n\n CompoundGlyph.prototype = {\n compound: true,\n render: function(old2new) {\n var this$1 = this;\n\n var out = BinaryStream(this.raw.get());\n for (var i = 0; i < this.glyphIds.length; ++i) {\n var id = this$1.glyphIds[i];\n out.offset(this$1.idOffsets[i]);\n out.writeShort(old2new[id]);\n }\n return out.get();\n }\n };\n\n return deftable({\n parse: function() {\n this.cache = {};\n },\n glyphFor: function(id) {\n var cache = this.cache;\n if (hasOwnProperty(cache, id)) {\n return cache[id];\n }\n\n var loca = this.file.loca;\n var length = loca.lengthOf(id);\n\n if (length === 0) {\n return (cache[id] = null);\n }\n\n var data = this.rawData;\n var offset = this.offset + loca.offsetOf(id);\n var raw = BinaryStream(data.slice(offset, length));\n\n var numberOfContours = raw.readShort_();\n var xMin = raw.readShort_();\n var yMin = raw.readShort_();\n var xMax = raw.readShort_();\n var yMax = raw.readShort_();\n\n var glyph = cache[id] = numberOfContours == -1 ? new CompoundGlyph(raw) : new SimpleGlyph(raw);\n\n glyph.numberOfContours = numberOfContours;\n glyph.xMin = xMin;\n glyph.yMin = yMin;\n glyph.xMax = xMax;\n glyph.yMax = yMax;\n\n return glyph;\n },\n render: function(glyphs, oldIds, old2new) {\n var out = BinaryStream(), offsets = [];\n for (var i = 0; i < oldIds.length; ++i) {\n var id = oldIds[i];\n var glyph = glyphs[id];\n offsets.push(out.offset());\n if (glyph) {\n out.write(glyph.render(old2new));\n }\n }\n offsets.push(out.offset());\n return {\n table: out.get(),\n offsets: offsets\n };\n }\n });\n\n}());\n\nvar NameTable = (function(){\n\n function NameEntry(text, entry) {\n this.text = text;\n this.length = text.length;\n this.platformID = entry.platformID;\n this.platformSpecificID = entry.platformSpecificID;\n this.languageID = entry.languageID;\n this.nameID = entry.nameID;\n }\n\n return deftable({\n parse: function(data) {\n data.offset(this.offset);\n data.readShort(); // format\n var count = data.readShort();\n var stringOffset = this.offset + data.readShort();\n var nameRecords = data.times(count, function(){\n return {\n platformID : data.readShort(),\n platformSpecificID : data.readShort(),\n languageID : data.readShort(),\n nameID : data.readShort(),\n length : data.readShort(),\n offset : data.readShort() + stringOffset\n };\n });\n var strings = this.strings = {};\n for (var i = 0; i < nameRecords.length; ++i) {\n var rec = nameRecords[i];\n data.offset(rec.offset);\n var text = data.readString(rec.length);\n if (!strings[rec.nameID]) {\n strings[rec.nameID] = [];\n }\n strings[rec.nameID].push(new NameEntry(text, rec));\n }\n this.postscriptEntry = strings[6][0];\n this.postscriptName = this.postscriptEntry.text.replace(/[^\\x20-\\x7F]/g, \"\");\n },\n\n render: function(psName) {\n var this$1 = this;\n\n var strings = this.strings;\n var strCount = 0;\n for (var i in strings) {\n if (hasOwnProperty(strings, i)) {\n strCount += strings[i].length;\n }\n }\n var out = BinaryStream();\n var strTable = BinaryStream();\n\n out.writeShort(0); // format\n out.writeShort(strCount);\n out.writeShort(6 + 12 * strCount); // stringOffset\n\n for (i in strings) {\n if (hasOwnProperty(strings, i)) {\n var list = i == 6 ? [\n new NameEntry(psName, this$1.postscriptEntry)\n ] : strings[i];\n for (var j = 0; j < list.length; ++j) {\n var str = list[j];\n out.writeShort(str.platformID);\n out.writeShort(str.platformSpecificID);\n out.writeShort(str.languageID);\n out.writeShort(str.nameID);\n out.writeShort(str.length);\n out.writeShort(strTable.offset());\n\n strTable.writeString(str.text);\n }\n }\n }\n\n out.write(strTable.get());\n\n return out.get();\n }\n });\n\n})();\n\nvar PostTable = (function(){\n\n var POSTSCRIPT_GLYPHS = \".notdef .null nonmarkingreturn space exclam quotedbl numbersign dollar percent ampersand quotesingle parenleft parenright asterisk plus comma hyphen period slash zero one two three four five six seven eight nine colon semicolon less equal greater question at A B C D E F G H I J K L M N O P Q R S T U V W X Y Z bracketleft backslash bracketright asciicircum underscore grave a b c d e f g h i j k l m n o p q r s t u v w x y z braceleft bar braceright asciitilde Adieresis Aring Ccedilla Eacute Ntilde Odieresis Udieresis aacute agrave acircumflex adieresis atilde aring ccedilla eacute egrave ecircumflex edieresis iacute igrave icircumflex idieresis ntilde oacute ograve ocircumflex odieresis otilde uacute ugrave ucircumflex udieresis dagger degree cent sterling section bullet paragraph germandbls registered copyright trademark acute dieresis notequal AE Oslash infinity plusminus lessequal greaterequal yen mu partialdiff summation product pi integral ordfeminine ordmasculine Omega ae oslash questiondown exclamdown logicalnot radical florin approxequal Delta guillemotleft guillemotright ellipsis nonbreakingspace Agrave Atilde Otilde OE oe endash emdash quotedblleft quotedblright quoteleft quoteright divide lozenge ydieresis Ydieresis fraction currency guilsinglleft guilsinglright fi fl daggerdbl periodcentered quotesinglbase quotedblbase perthousand Acircumflex Ecircumflex Aacute Edieresis Egrave Iacute Icircumflex Idieresis Igrave Oacute Ocircumflex apple Ograve Uacute Ucircumflex Ugrave dotlessi circumflex tilde macron breve dotaccent ring cedilla hungarumlaut ogonek caron Lslash lslash Scaron scaron Zcaron zcaron brokenbar Eth eth Yacute yacute Thorn thorn minus multiply onesuperior twosuperior threesuperior onehalf onequarter threequarters franc Gbreve gbreve Idotaccent Scedilla scedilla Cacute cacute Ccaron ccaron dcroat\".split(/\\s+/g);\n\n return deftable({\n parse: function(data) {\n var this$1 = this;\n\n data.offset(this.offset);\n\n this.format = data.readLong();\n this.italicAngle = data.readFixed_();\n this.underlinePosition = data.readShort_();\n this.underlineThickness = data.readShort_();\n this.isFixedPitch = data.readLong();\n this.minMemType42 = data.readLong();\n this.maxMemType42 = data.readLong();\n this.minMemType1 = data.readLong();\n this.maxMemType1 = data.readLong();\n\n var numberOfGlyphs;\n\n switch (this.format) {\n case 0x00010000:\n case 0x00030000:\n break;\n\n case 0x00020000:\n numberOfGlyphs = data.readShort();\n this.glyphNameIndex = data.times(numberOfGlyphs, data.readShort);\n this.names = [];\n var limit = this.offset + this.length;\n while (data.offset() < limit) {\n this$1.names.push(data.readString(data.readByte()));\n }\n break;\n\n case 0x00025000:\n numberOfGlyphs = data.readShort();\n this.offsets = data.read(numberOfGlyphs);\n break;\n\n case 0x00040000:\n this.map = data.times(this.file.maxp.numGlyphs, data.readShort);\n break;\n }\n },\n glyphFor: function(code) {\n switch (this.format) {\n case 0x00010000:\n return POSTSCRIPT_GLYPHS[code] || \".notdef\";\n\n case 0x00020000:\n var index = this.glyphNameIndex[code];\n if (index < POSTSCRIPT_GLYPHS.length) {\n return POSTSCRIPT_GLYPHS[index];\n }\n return this.names[index - POSTSCRIPT_GLYPHS.length] || \".notdef\";\n\n case 0x00025000:\n\n case 0x00030000:\n return \".notdef\";\n\n case 0x00040000:\n return this.map[code] || 0xFFFF;\n }\n },\n render: function(mapping) {\n var this$1 = this;\n\n if (this.format == 0x00030000) {\n return this.raw();\n }\n\n // keep original header, but set format to 2.0\n var out = BinaryStream(this.rawData.slice(this.offset, 32));\n out.writeLong(0x00020000);\n out.offset(32);\n\n var indexes = [];\n var strings = [];\n\n for (var i = 0; i < mapping.length; ++i) {\n var id = mapping[i];\n var post = this$1.glyphFor(id);\n var index = POSTSCRIPT_GLYPHS.indexOf(post);\n if (index >= 0) {\n indexes.push(index);\n } else {\n indexes.push(POSTSCRIPT_GLYPHS.length + strings.length);\n strings.push(post);\n }\n }\n\n out.writeShort(mapping.length);\n\n for (i = 0; i < indexes.length; ++i) {\n out.writeShort(indexes[i]);\n }\n\n for (i = 0; i < strings.length; ++i) {\n out.writeByte(strings[i].length);\n out.writeString(strings[i]);\n }\n\n return out.get();\n }\n });\n})();\n\nvar CmapTable = (function(){\n\n function CmapEntry(data, offset, codeMap) {\n var self = this;\n self.platformID = data.readShort();\n self.platformSpecificID = data.readShort();\n self.offset = offset + data.readLong();\n\n data.saveExcursion(function(){\n var code;\n data.offset(self.offset);\n self.format = data.readShort();\n\n switch (self.format) {\n case 0:\n self.length = data.readShort();\n self.language = data.readShort();\n for (var i = 0; i < 256; ++i) {\n codeMap[i] = data.readByte();\n }\n break;\n\n case 4:\n self.length = data.readShort();\n self.language = data.readShort();\n var segCount = data.readShort() / 2;\n\n data.skip(6); // searchRange, entrySelector, rangeShift\n var endCode = data.times(segCount, data.readShort);\n data.skip(2); // reserved pad\n var startCode = data.times(segCount, data.readShort);\n var idDelta = data.times(segCount, data.readShort_);\n var idRangeOffset = data.times(segCount, data.readShort);\n\n var count = (self.length + self.offset - data.offset()) / 2;\n var glyphIds = data.times(count, data.readShort);\n\n for (i = 0; i < segCount; ++i) {\n var start = startCode[i], end = endCode[i];\n for (code = start; code <= end; ++code) {\n var glyphId;\n if (idRangeOffset[i] === 0) {\n glyphId = code + idDelta[i];\n } else {\n ///\n // When non-zero, idRangeOffset contains for each segment the byte offset of the Glyph ID\n // into the glyphIds table, from the *current* `i` cell of idRangeOffset. In other words,\n // this offset spans from the first into the second array. This works, because the arrays\n // are consecutive in the TTF file:\n //\n // [ ...idRangeOffset... ][ ...glyphIds... ]\n // ...... 48 ...... .... ID ....\n // ^----- 48 bytes -----^\n //\n // (but I can't stop wondering why is it not just a plain index, possibly incremented by 1\n // so that we can have that special `zero` value.)\n //\n // The elements of idRangeOffset are even numbers, because both arrays contain 16-bit words,\n // yet the offset is in bytes. That is why we divide it by 2. Then we subtract the\n // remaining segments (segCount-i), and add the code-start offset, to which we need to add\n // the corresponding delta to get the actual glyph ID.\n ///\n var index = idRangeOffset[i] / 2 - (segCount - i) + (code - start);\n glyphId = glyphIds[index] || 0;\n if (glyphId !== 0) {\n glyphId += idDelta[i];\n }\n }\n codeMap[code] = glyphId & 0xFFFF;\n }\n }\n break;\n\n case 6:\n self.length = data.readShort();\n self.language = data.readShort();\n code = data.readShort();\n var length = data.readShort();\n while (length-- > 0) {\n codeMap[code++] = data.readShort();\n }\n break;\n\n case 12:\n data.readShort(); // reserved\n self.length = data.readLong();\n self.language = data.readLong();\n var ngroups = data.readLong();\n while (ngroups-- > 0) {\n code = data.readLong();\n var endCharCode = data.readLong();\n var glyphCode = data.readLong();\n while (code <= endCharCode) {\n codeMap[code++] = glyphCode++;\n }\n }\n break;\n\n default:\n if (window.console) {\n window.console.error(\"Unhandled CMAP format: \" + self.format);\n }\n }\n });\n }\n\n function renderCharmap(ncid2ogid, ogid2ngid) {\n var codes = sortedKeys(ncid2ogid);\n var startCodes = [];\n var endCodes = [];\n var last = null;\n var diff = null;\n\n function new_gid(charcode) {\n return ogid2ngid[ncid2ogid[charcode]];\n }\n\n for (var i = 0; i < codes.length; ++i) {\n var code = codes[i];\n var gid = new_gid(code);\n var delta = gid - code;\n if (last == null || delta !== diff) {\n if (last) {\n endCodes.push(last);\n }\n startCodes.push(code);\n diff = delta;\n }\n last = code;\n }\n\n if (last) {\n endCodes.push(last);\n }\n endCodes.push(0xFFFF);\n startCodes.push(0xFFFF);\n\n var segCount = startCodes.length;\n var segCountX2 = segCount * 2;\n var searchRange = 2 * Math.pow(2, Math.floor(Math.log(segCount) / Math.LN2));\n var entrySelector = Math.log(searchRange / 2) / Math.LN2;\n var rangeShift = segCountX2 - searchRange;\n\n var deltas = [];\n var rangeOffsets = [];\n var glyphIds = [];\n\n for (i = 0; i < segCount; ++i) {\n var startCode = startCodes[i];\n var endCode = endCodes[i];\n if (startCode == 0xFFFF) {\n deltas.push(0);\n rangeOffsets.push(0);\n break;\n }\n var startGlyph = new_gid(startCode);\n if (startCode - startGlyph >= 0x8000) {\n deltas.push(0);\n rangeOffsets.push(2 * (glyphIds.length + segCount - i));\n for (var j = startCode; j <= endCode; ++j) {\n glyphIds.push(new_gid(j));\n }\n } else {\n deltas.push(startGlyph - startCode);\n rangeOffsets.push(0);\n }\n }\n\n var out = BinaryStream();\n\n out.writeShort(3); // platformID\n out.writeShort(1); // platformSpecificID\n out.writeLong(12); // offset\n out.writeShort(4); // format\n out.writeShort(16 + segCount * 8 + glyphIds.length * 2); // length\n out.writeShort(0); // language\n out.writeShort(segCountX2);\n out.writeShort(searchRange);\n out.writeShort(entrySelector);\n out.writeShort(rangeShift);\n\n endCodes.forEach(out.writeShort);\n out.writeShort(0); // reserved pad\n startCodes.forEach(out.writeShort);\n deltas.forEach(out.writeShort_);\n rangeOffsets.forEach(out.writeShort);\n glyphIds.forEach(out.writeShort);\n\n return out.get();\n }\n\n return deftable({\n parse: function(data) {\n var self = this;\n var offset = self.offset;\n data.offset(offset);\n self.codeMap = {};\n self.version = data.readShort();\n var tableCount = data.readShort();\n self.tables = data.times(tableCount, function(){\n return new CmapEntry(data, offset, self.codeMap);\n });\n },\n render: function(ncid2ogid, ogid2ngid) {\n var out = BinaryStream();\n out.writeShort(0); // version\n out.writeShort(1); // tableCount\n out.write(renderCharmap(ncid2ogid, ogid2ngid));\n return out.get();\n }\n });\n\n})();\n\nvar OS2Table = deftable({\n parse: function(data) {\n data.offset(this.offset);\n this.version = data.readShort();\n this.averageCharWidth = data.readShort_();\n this.weightClass = data.readShort();\n this.widthClass = data.readShort();\n this.type = data.readShort();\n this.ySubscriptXSize = data.readShort_();\n this.ySubscriptYSize = data.readShort_();\n this.ySubscriptXOffset = data.readShort_();\n this.ySubscriptYOffset = data.readShort_();\n this.ySuperscriptXSize = data.readShort_();\n this.ySuperscriptYSize = data.readShort_();\n this.ySuperscriptXOffset = data.readShort_();\n this.ySuperscriptYOffset = data.readShort_();\n this.yStrikeoutSize = data.readShort_();\n this.yStrikeoutPosition = data.readShort_();\n this.familyClass = data.readShort_();\n\n this.panose = data.times(10, data.readByte);\n this.charRange = data.times(4, data.readLong);\n\n this.vendorID = data.readString(4);\n this.selection = data.readShort();\n this.firstCharIndex = data.readShort();\n this.lastCharIndex = data.readShort();\n\n if (this.version > 0) {\n this.ascent = data.readShort_();\n this.descent = data.readShort_();\n this.lineGap = data.readShort_();\n this.winAscent = data.readShort();\n this.winDescent = data.readShort();\n this.codePageRange = data.times(2, data.readLong);\n\n if (this.version > 1) {\n this.xHeight = data.readShort();\n this.capHeight = data.readShort();\n this.defaultChar = data.readShort();\n this.breakChar = data.readShort();\n this.maxContext = data.readShort();\n }\n }\n },\n render: function() {\n return this.raw();\n }\n});\n\nvar subsetTag = 100000;\n\nfunction nextSubsetTag() {\n var ret = \"\", n = String(subsetTag);\n for (var i = 0; i < n.length; ++i) {\n ret += String.fromCharCode(n.charCodeAt(i) - 48 + 65);\n }\n ++subsetTag;\n return ret;\n}\n\nfunction Subfont(font) {\n this.font = font;\n this.subset = {};\n this.unicodes = {};\n this.ogid2ngid = { 0: 0 };\n this.ngid2ogid = { 0: 0 };\n this.ncid2ogid = {};\n this.next = this.firstChar = 1;\n this.nextGid = 1;\n this.psName = nextSubsetTag() + \"+\" + this.font.psName;\n}\n\nSubfont.prototype = {\n use: function(ch) {\n var self = this;\n if (typeof ch == \"string\") {\n return ucs2decode(ch).reduce(function(ret, code){\n return ret + String.fromCharCode(self.use(code));\n }, \"\");\n }\n var code = self.unicodes[ch];\n if (!code) {\n code = self.next++;\n self.subset[code] = ch;\n self.unicodes[ch] = code;\n\n // generate new GID (glyph ID) and maintain newGID ->\n // oldGID and back mappings\n var old_gid = self.font.cmap.codeMap[ch];\n if (old_gid) {\n self.ncid2ogid[code] = old_gid;\n if (self.ogid2ngid[old_gid] == null) {\n var new_gid = self.nextGid++;\n self.ogid2ngid[old_gid] = new_gid;\n self.ngid2ogid[new_gid] = old_gid;\n }\n }\n }\n return code;\n },\n encodeText: function(text) {\n return this.use(text);\n },\n glyphIds: function() {\n return sortedKeys(this.ogid2ngid);\n },\n glyphsFor: function(glyphIds, result) {\n var this$1 = this;\n\n if (!result) {\n result = {};\n }\n for (var i = 0; i < glyphIds.length; ++i) {\n var id = glyphIds[i];\n if (!result[id]) {\n var glyph = result[id] = this$1.font.glyf.glyphFor(id);\n if (glyph && glyph.compound) {\n this$1.glyphsFor(glyph.glyphIds, result);\n }\n }\n }\n return result;\n },\n render: function() {\n var this$1 = this;\n\n var glyphs = this.glyphsFor(this.glyphIds());\n\n // add missing sub-glyphs\n for (var old_gid in glyphs) {\n if (hasOwnProperty(glyphs, old_gid)) {\n old_gid = parseInt(old_gid, 10);\n if (this$1.ogid2ngid[old_gid] == null) {\n var new_gid = this$1.nextGid++;\n this$1.ogid2ngid[old_gid] = new_gid;\n this$1.ngid2ogid[new_gid] = old_gid;\n }\n }\n }\n\n // must obtain old_gid_ids in an order matching sorted\n // new_gid_ids\n var new_gid_ids = sortedKeys(this.ngid2ogid);\n var old_gid_ids = new_gid_ids.map(function(id){\n return this.ngid2ogid[id];\n }, this);\n\n var font = this.font;\n var glyf = font.glyf.render(glyphs, old_gid_ids, this.ogid2ngid);\n var loca = font.loca.render(glyf.offsets);\n\n this.lastChar = this.next - 1;\n\n var tables = {\n \"cmap\" : CmapTable.render(this.ncid2ogid, this.ogid2ngid),\n \"glyf\" : glyf.table,\n \"loca\" : loca.table,\n \"hmtx\" : font.hmtx.render(old_gid_ids),\n \"hhea\" : font.hhea.render(old_gid_ids),\n \"maxp\" : font.maxp.render(old_gid_ids),\n \"post\" : font.post.render(old_gid_ids),\n \"name\" : font.name.render(this.psName),\n \"head\" : font.head.render(loca.format),\n \"OS/2\" : font.os2.render()\n };\n\n return this.font.directory.render(tables);\n },\n cidToGidMap: function() {\n var this$1 = this;\n\n var out = BinaryStream(), len = 0;\n for (var cid = this.firstChar; cid < this.next; ++cid) {\n while (len < cid) {\n out.writeShort(0);\n len++;\n }\n var old_gid = this$1.ncid2ogid[cid];\n if (old_gid) {\n var new_gid = this$1.ogid2ngid[old_gid];\n out.writeShort(new_gid);\n } else {\n out.writeShort(0);\n }\n len++;\n }\n return out.get();\n }\n};\n\nfunction TTFFont(rawData, name) {\n var self = this;\n var data = self.contents = BinaryStream(rawData);\n if (data.readString(4) == \"ttcf\") {\n var offset;\n var parse = function() {\n data.offset(offset);\n self.parse();\n };\n if (!name) {\n throw new Error(\"Must specify a name for TTC files\");\n }\n data.readLong(); // version\n var numFonts = data.readLong();\n for (var i = 0; i < numFonts; ++i) {\n offset = data.readLong();\n data.saveExcursion(parse);\n if (self.psName == name) {\n return;\n }\n }\n throw new Error(\"Font \" + name + \" not found in collection\");\n } else {\n data.offset(0);\n self.parse();\n }\n}\n\nTTFFont.prototype = {\n parse: function() {\n var dir = this.directory = new Directory(this.contents);\n\n this.head = dir.readTable(\"head\", HeadTable);\n this.loca = dir.readTable(\"loca\", LocaTable);\n this.hhea = dir.readTable(\"hhea\", HheaTable);\n this.maxp = dir.readTable(\"maxp\", MaxpTable);\n this.hmtx = dir.readTable(\"hmtx\", HmtxTable);\n this.glyf = dir.readTable(\"glyf\", GlyfTable);\n this.name = dir.readTable(\"name\", NameTable);\n this.post = dir.readTable(\"post\", PostTable);\n this.cmap = dir.readTable(\"cmap\", CmapTable);\n this.os2 = dir.readTable(\"OS/2\", OS2Table);\n\n this.psName = this.name.postscriptName;\n this.ascent = this.os2.ascent || this.hhea.ascent;\n this.descent = this.os2.descent || this.hhea.descent;\n this.lineGap = this.os2.lineGap || this.hhea.lineGap;\n this.scale = 1000 / this.head.unitsPerEm;\n },\n widthOfGlyph: function(glyph) {\n return this.hmtx.forGlyph(glyph).advance * this.scale;\n },\n makeSubset: function() {\n return new Subfont(this);\n }\n};\n\nexport { TTFFont };\n","import { deflate as pakoDeflate } from 'pako/dist/pako_deflate';\n\nexport var deflate = pakoDeflate;\n\nexport function supportsDeflate() {\n return true;\n}\n\n","/* eslint-disable no-multi-spaces, key-spacing, indent, camelcase, space-before-blocks, eqeqeq, brace-style */\n/* eslint-disable space-infix-ops, space-before-function-paren, array-bracket-spacing, object-curly-spacing */\n/* eslint-disable no-nested-ternary, max-params, default-case, no-else-return, no-empty */\n/* eslint-disable no-param-reassign, no-var, block-scoped-var */\n\nimport { BinaryStream, ucs2encode, base64ToUint8Array, HAS_TYPED_ARRAYS } from \"./utils\";\nimport { support } from '../common';\nimport { TTFFont } from \"./ttf\";\nimport { deflate, supportsDeflate } from './deflate';\n\nvar browser = support.browser;\nvar NL = \"\\n\";\n\nvar RESOURCE_COUNTER = 0;\n\nvar PAPER_SIZE = {\n a0 : [ 2383.94 , 3370.39 ],\n a1 : [ 1683.78 , 2383.94 ],\n a2 : [ 1190.55 , 1683.78 ],\n a3 : [ 841.89 , 1190.55 ],\n a4 : [ 595.28 , 841.89 ],\n a5 : [ 419.53 , 595.28 ],\n a6 : [ 297.64 , 419.53 ],\n a7 : [ 209.76 , 297.64 ],\n a8 : [ 147.40 , 209.76 ],\n a9 : [ 104.88 , 147.40 ],\n a10 : [ 73.70 , 104.88 ],\n b0 : [ 2834.65 , 4008.19 ],\n b1 : [ 2004.09 , 2834.65 ],\n b2 : [ 1417.32 , 2004.09 ],\n b3 : [ 1000.63 , 1417.32 ],\n b4 : [ 708.66 , 1000.63 ],\n b5 : [ 498.90 , 708.66 ],\n b6 : [ 354.33 , 498.90 ],\n b7 : [ 249.45 , 354.33 ],\n b8 : [ 175.75 , 249.45 ],\n b9 : [ 124.72 , 175.75 ],\n b10 : [ 87.87 , 124.72 ],\n c0 : [ 2599.37 , 3676.54 ],\n c1 : [ 1836.85 , 2599.37 ],\n c2 : [ 1298.27 , 1836.85 ],\n c3 : [ 918.43 , 1298.27 ],\n c4 : [ 649.13 , 918.43 ],\n c5 : [ 459.21 , 649.13 ],\n c6 : [ 323.15 , 459.21 ],\n c7 : [ 229.61 , 323.15 ],\n c8 : [ 161.57 , 229.61 ],\n c9 : [ 113.39 , 161.57 ],\n c10 : [ 79.37 , 113.39 ],\n executive : [ 521.86 , 756.00 ],\n folio : [ 612.00 , 936.00 ],\n legal : [ 612.00 , 1008.00 ],\n letter : [ 612.00 , 792.00 ],\n tabloid : [ 792.00 , 1224.00 ]\n};\n\nfunction makeOutput() {\n var indentLevel = 0, output = BinaryStream();\n function out() {\n var arguments$1 = arguments;\n\n for (var i = 0; i < arguments.length; ++i) {\n var x = arguments$1[i];\n if (x === undefined) {\n throw new Error(\"Cannot output undefined to PDF\");\n }\n else if (x instanceof PDFValue) {\n x.beforeRender(out);\n x.render(out);\n }\n else if (isArray(x)) {\n renderArray(x, out);\n }\n else if (isDate(x)) {\n renderDate(x, out);\n }\n else if (typeof x == \"number\") {\n if (isNaN(x)) {\n throw new Error(\"Cannot output NaN to PDF\");\n }\n // make sure it doesn't end up in exponent notation\n var num = x.toFixed(7);\n if (num.indexOf(\".\") >= 0) {\n num = num.replace(/\\.?0+$/, \"\");\n }\n if (num == \"-0\") {\n num = \"0\";\n }\n output.writeString(num);\n }\n else if (/string|boolean/.test(typeof x)) {\n output.writeString(String(x));\n }\n else if (typeof x.get == \"function\") {\n output.write(x.get());\n }\n else if (typeof x == \"object\") {\n if (!x) {\n output.writeString(\"null\");\n } else {\n out(new PDFDictionary(x));\n }\n }\n }\n }\n out.writeData = function(data) {\n output.write(data);\n };\n out.withIndent = function(f) {\n ++indentLevel;\n f(out);\n --indentLevel;\n };\n out.indent = function() {\n out(NL, pad(\"\", indentLevel * 2, \" \"));\n out.apply(null, arguments);\n };\n out.offset = function() {\n return output.offset();\n };\n out.toString = function() {\n throw new Error(\"FIX CALLER\");\n };\n out.get = function() {\n return output.get();\n };\n out.stream = function() {\n return output;\n };\n return out;\n}\n\nfunction wrapObject(value, id) {\n var beforeRender = value.beforeRender;\n var renderValue = value.render;\n\n value.beforeRender = function(){};\n\n value.render = function(out) {\n out(id, \" 0 R\");\n };\n\n value.renderFull = function(out) {\n value._offset = out.offset();\n out(id, \" 0 obj \");\n beforeRender.call(value, out);\n renderValue.call(value, out);\n out(\" endobj\");\n };\n}\n\nfunction getPaperOptions(getOption) {\n if (typeof getOption != \"function\") {\n var options = getOption;\n getOption = function(key, def) {\n return key in options ? options[key] : def;\n };\n }\n var paperSize = getOption(\"paperSize\", PAPER_SIZE.a4);\n if (!paperSize) {\n return {};\n }\n if (typeof paperSize == \"string\") {\n paperSize = PAPER_SIZE[paperSize.toLowerCase()];\n if (paperSize == null) {\n throw new Error(\"Unknown paper size\");\n }\n }\n\n paperSize[0] = unitsToPoints(paperSize[0]);\n paperSize[1] = unitsToPoints(paperSize[1]);\n\n if (getOption(\"landscape\", false)) {\n paperSize = [\n Math.max(paperSize[0], paperSize[1]),\n Math.min(paperSize[0], paperSize[1])\n ];\n }\n\n var margin = getOption(\"margin\");\n if (margin) {\n if (typeof margin == \"string\" || typeof margin == \"number\") {\n margin = unitsToPoints(margin, 0);\n margin = { left: margin, top: margin, right: margin, bottom: margin };\n } else {\n margin = {\n left : unitsToPoints(margin.left, 0),\n top : unitsToPoints(margin.top, 0),\n right : unitsToPoints(margin.right, 0),\n bottom : unitsToPoints(margin.bottom, 0)\n };\n }\n if (getOption(\"addMargin\")) {\n paperSize[0] += margin.left + margin.right;\n paperSize[1] += margin.top + margin.bottom;\n }\n }\n return { paperSize: paperSize, margin: margin };\n}\n\nfunction PDFDocument(options) {\n var self = this;\n var out = makeOutput();\n var objcount = 0;\n var objects = [];\n\n function getOption(name, defval) {\n return (options && options[name] != null) ? options[name] : defval;\n }\n\n self.getOption = getOption;\n\n self.attach = function(value) {\n if (objects.indexOf(value) < 0) {\n wrapObject(value, ++objcount);\n objects.push(value);\n }\n return value;\n };\n\n self.pages = [];\n\n self.FONTS = {};\n self.IMAGES = {};\n self.GRAD_COL_FUNCTIONS = {}; // cache for color gradient functions\n self.GRAD_OPC_FUNCTIONS = {}; // cache for opacity gradient functions\n self.GRAD_COL = {}; // cache for whole color gradient objects\n self.GRAD_OPC = {}; // cache for whole opacity gradient objects\n\n var catalog = self.attach(new PDFCatalog());\n var pageTree = self.attach(new PDFPageTree());\n\n if (getOption(\"autoPrint\")) {\n var nameTree = {};\n nameTree.JavaScript = new PDFDictionary({ Names: [\n new PDFString(\"JS\"), self.attach(new PDFDictionary({\n S: _(\"JavaScript\"),\n JS: new PDFString(\"print(true);\")\n }))\n ] });\n catalog.props.Names = new PDFDictionary(nameTree);\n }\n\n catalog.setPages(pageTree);\n\n var info = self.attach(new PDFDictionary({\n Producer : new PDFString(getOption(\"producer\", \"Kendo UI PDF Generator\")), // XXX: kendo.version?\n Title : new PDFString(getOption(\"title\", \"\")),\n Author : new PDFString(getOption(\"author\", \"\")),\n Subject : new PDFString(getOption(\"subject\", \"\")),\n Keywords : new PDFString(getOption(\"keywords\", \"\")),\n Creator : new PDFString(getOption(\"creator\", \"Kendo UI PDF Generator\")),\n CreationDate : getOption(\"date\", new Date())\n }));\n\n self.addPage = function(options) {\n var paperOptions = getPaperOptions(function(name, defval){\n return (options && options[name] != null) ? options[name] : defval;\n });\n var paperSize = paperOptions.paperSize;\n var margin = paperOptions.margin;\n var contentWidth = paperSize[0];\n var contentHeight = paperSize[1];\n if (margin) {\n contentWidth -= margin.left + margin.right;\n contentHeight -= margin.top + margin.bottom;\n }\n var content = new PDFStream(makeOutput(), null, true);\n var props = {\n Contents : self.attach(content),\n Parent : pageTree,\n MediaBox : [ 0, 0, paperSize[0], paperSize[1] ]\n };\n var page = new PDFPage(self, props);\n page._content = content;\n pageTree.addPage(self.attach(page));\n\n // canvas-like coord. system. (0,0) is upper-left.\n // text must be vertically mirorred before drawing.\n page.transform(1, 0, 0, -1, 0, paperSize[1]);\n\n if (margin) {\n page.translate(margin.left, margin.top);\n // XXX: clip to right/bottom margin. Make this optional?\n page.rect(0, 0, contentWidth, contentHeight);\n page.clip();\n }\n\n self.pages.push(page);\n return page;\n };\n\n self.render = function() {\n var i;\n /// file header\n out(\"%PDF-1.4\", NL, \"%\\xc2\\xc1\\xda\\xcf\\xce\", NL, NL);\n\n /// file body\n for (i = 0; i < objects.length; ++i) {\n objects[i].renderFull(out);\n out(NL, NL);\n }\n\n /// cross-reference table\n var xrefOffset = out.offset();\n out(\"xref\", NL, 0, \" \", objects.length + 1, NL);\n out(\"0000000000 65535 f \", NL);\n for (i = 0; i < objects.length; ++i) {\n out(zeropad(objects[i]._offset, 10), \" 00000 n \", NL);\n }\n out(NL);\n\n /// trailer\n out(\"trailer\", NL);\n out(new PDFDictionary({\n Size: objects.length + 1,\n Root: catalog,\n Info: info\n }), NL, NL);\n\n /// end\n out(\"startxref\", NL, xrefOffset, NL);\n out(\"%%EOF\", NL);\n\n return out.stream().offset(0);\n };\n}\n\nvar FONT_CACHE = {\n \"Times-Roman\" : true,\n \"Times-Bold\" : true,\n \"Times-Italic\" : true,\n \"Times-BoldItalic\" : true,\n \"Helvetica\" : true,\n \"Helvetica-Bold\" : true,\n \"Helvetica-Oblique\" : true,\n \"Helvetica-BoldOblique\" : true,\n \"Courier\" : true,\n \"Courier-Bold\" : true,\n \"Courier-Oblique\" : true,\n \"Courier-BoldOblique\" : true,\n \"Symbol\" : true,\n \"ZapfDingbats\" : true\n};\n\nfunction loadBinary(url, cont) {\n // IE throws Accesss denied error for Data URIs\n var m;\n if (browser.msie && (m = /^data:.*?;base64,/i.exec(url))) {\n cont(base64ToUint8Array(url.substr(m[0].length)));\n return;\n }\n\n function error() {\n if (window.console) {\n if (window.console.error) {\n window.console.error(\"Cannot load URL: %s\", url);\n } else {\n window.console.log(\"Cannot load URL: %s\", url);\n }\n }\n cont(null);\n }\n var req = new XMLHttpRequest();\n req.open('GET', url, true);\n if (HAS_TYPED_ARRAYS) {\n req.responseType = \"arraybuffer\";\n }\n req.onload = function() {\n if (req.status == 200 || req.status == 304) {\n if (HAS_TYPED_ARRAYS) {\n cont(new Uint8Array(req.response));\n } else {\n cont(new window.VBArray(req.responseBody).toArray()); // IE9 only\n }\n } else {\n error();\n }\n };\n req.onerror = error;\n req.send(null);\n}\n\nfunction loadFont(url, cont) {\n var font = FONT_CACHE[url];\n if (font) {\n cont(font);\n } else {\n loadBinary(url, function(data){\n if (data == null) {\n throw new Error(\"Cannot load font from \" + url);\n } else {\n var font = new TTFFont(data);\n FONT_CACHE[url] = font;\n cont(font);\n }\n });\n }\n}\n\nvar IMAGE_CACHE = {};\n\nfunction clearImageCache() {\n IMAGE_CACHE = {};\n}\n\nfunction loadImage(url, size, cont) {\n var img = IMAGE_CACHE[url], bloburl, blob;\n if (img) {\n cont(img);\n } else {\n img = new Image();\n if (!(/^data:/i.test(url))) {\n img.crossOrigin = \"Anonymous\";\n }\n if (HAS_TYPED_ARRAYS && !(/^data:/i.test(url))) {\n // IE10 fails to load images from another domain even when the server sends the\n // proper CORS headers. a XHR, however, will be able to load the data.\n // http://stackoverflow.com/a/19734516/154985\n //\n // On the other hand, it's worth doing it this way for all browsers which support\n // responseType = \"blob\" (HAS_TYPED_ARRAYS will be true), because we can inspect the\n // mime type and if it's a JPEG (very common case) we can save a lot of time in\n // _load below.\n var xhr = new XMLHttpRequest();\n xhr.onload = function() {\n blob = xhr.response;\n bloburl = URL.createObjectURL(blob);\n _load(bloburl);\n };\n xhr.onerror = _onerror;\n xhr.open(\"GET\", url, true);\n xhr.responseType = \"blob\";\n xhr.send();\n } else {\n _load(url);\n }\n }\n\n function _load(url) {\n img.src = url;\n if (img.complete && !browser.msie) {\n // IE, bless it's little heart, says img.complete == true even though the image is\n // not loaded (width=0), therefore we must go the onload route (ticket 929635).\n _onload();\n } else {\n img.onload = _onload;\n img.onerror = _onerror;\n }\n }\n\n function _trycanvas() {\n if (!size) {\n size = { width: img.width, height: img.height };\n }\n\n var canvas = document.createElement(\"canvas\");\n canvas.width = size.width;\n canvas.height = size.height;\n\n var ctx = canvas.getContext(\"2d\");\n ctx.drawImage(img, 0, 0, size.width, size.height);\n\n var imgdata;\n try {\n imgdata = ctx.getImageData(0, 0, size.width, size.height);\n } catch (ex) {\n // it tainted the canvas -- can't draw it.\n _onerror();\n return;\n } finally {\n if (bloburl) {\n URL.revokeObjectURL(bloburl);\n }\n }\n\n // in case it contains transparency, we must separate rgb data from the alpha\n // channel and create a PDFRawImage image with opacity. otherwise we can use a\n // PDFJpegImage.\n //\n // to do this in one step, we create the rgb and alpha streams anyway, even if\n // we might end up not using them if hasAlpha remains false.\n\n var hasAlpha = false, rgb = BinaryStream(), alpha = BinaryStream();\n var rawbytes = imgdata.data;\n var i = 0;\n while (i < rawbytes.length) {\n rgb.writeByte(rawbytes[i++]);\n rgb.writeByte(rawbytes[i++]);\n rgb.writeByte(rawbytes[i++]);\n var a = rawbytes[i++];\n if (a < 255) {\n hasAlpha = true;\n }\n alpha.writeByte(a);\n }\n\n if (hasAlpha) {\n img = new PDFRawImage(size.width, size.height, rgb, alpha);\n } else {\n // no transparency, encode as JPEG.\n var data = canvas.toDataURL(\"image/jpeg\");\n data = data.substr(data.indexOf(\";base64,\") + 8);\n\n var stream = BinaryStream();\n stream.writeBase64(data);\n img = new PDFJpegImage(stream);\n }\n\n cont(IMAGE_CACHE[url] = img);\n }\n\n function _onerror() {\n cont(IMAGE_CACHE[url] = \"ERROR\");\n }\n\n function _onload() {\n if (size) {\n // but if requested size is bigger than the image, just use the original image.\n if (size.width >= img.width || size.height >= img.height) {\n size = null;\n }\n }\n if (!size && blob && /^image\\/jpe?g$/i.test(blob.type)) {\n // If we know we got a JPEG, we can skip the process of rendering it to a\n // canvas, getting the pixel data, searching for transparency we know we won't\n // find, getting back a data URI and then decoding the BASE64 to finally get the\n // binary we already have. Also, we avoid downgrading the image quality, with\n // the possible drawback of making a bigger PDF; still, seems legit.\n //\n // Besides saving a lot of work, this also reuses the buffer memory\n // (BinaryStream does not create a copy), potentially saving some GC cycles.\n var reader = new FileReader();\n reader.onload = function() {\n try {\n var img = new PDFJpegImage(BinaryStream(new Uint8Array(this.result)));\n URL.revokeObjectURL(bloburl);\n cont(IMAGE_CACHE[url] = img);\n } catch (ex) {\n // if there's an error parsing the JPEG stream, it could be due to a\n // misconfigured server (improper content-type:\n // https://github.com/telerik/kendo-ui-core/issues/4184). If that's the case,\n // the canvas will still be able to draw it.\n _trycanvas();\n }\n };\n reader.readAsArrayBuffer(blob);\n } else {\n _trycanvas();\n }\n }\n}\n\nfunction manyLoader(loadOne) {\n return function(urls, callback) {\n var n = urls.length, i = n;\n if (n === 0) {\n return callback();\n }\n function next() {\n if (--n === 0) {\n callback();\n }\n }\n while (i-- > 0) {\n loadOne(urls[i], next);\n }\n };\n}\n\nvar loadFonts = manyLoader(loadFont);\nvar loadImages = function(images, callback) {\n var urls = Object.keys(images), n = urls.length;\n if (n === 0) {\n return callback();\n }\n function next() {\n if (--n === 0) {\n callback();\n }\n }\n urls.forEach(function(url){\n loadImage(url, images[url], next);\n });\n};\n\nPDFDocument.prototype = {\n loadFonts: loadFonts,\n loadImages: loadImages,\n\n getFont: function(url) {\n var font = this.FONTS[url];\n if (!font) {\n font = FONT_CACHE[url];\n if (!font) {\n throw new Error(\"Font \" + url + \" has not been loaded\");\n }\n if (font === true) {\n font = this.attach(new PDFStandardFont(url));\n } else {\n font = this.attach(new PDFFont(this, font));\n }\n this.FONTS[url] = font;\n }\n return font;\n },\n\n getImage: function(url) {\n var img = this.IMAGES[url];\n if (!img) {\n img = IMAGE_CACHE[url];\n if (!img) {\n throw new Error(\"Image \" + url + \" has not been loaded\");\n }\n if (img === \"ERROR\") {\n return null;\n }\n img = this.IMAGES[url] = this.attach(img.asStream(this));\n }\n return img;\n },\n\n getOpacityGS: function(opacity, forStroke) {\n var id = parseFloat(opacity).toFixed(3);\n opacity = parseFloat(id);\n id += forStroke ? \"S\" : \"F\";\n var cache = this._opacityGSCache || (this._opacityGSCache = {});\n var gs = cache[id];\n if (!gs) {\n var props = {\n Type: _(\"ExtGState\")\n };\n if (forStroke) {\n props.CA = opacity;\n } else {\n props.ca = opacity;\n }\n gs = this.attach(new PDFDictionary(props));\n gs._resourceName = _(\"GS\" + (++RESOURCE_COUNTER));\n cache[id] = gs;\n }\n return gs;\n },\n\n dict: function(props) {\n return new PDFDictionary(props);\n },\n\n name: function(str) {\n return _(str);\n },\n\n stream: function(props, content) {\n return new PDFStream(content, props);\n }\n};\n\n/* -----[ utils ]----- */\n\nfunction pad(str, len, ch) {\n while (str.length < len) {\n str = ch + str;\n }\n return str;\n}\n\nfunction zeropad(n, len) {\n return pad(String(n), len, \"0\");\n}\n\nfunction hasOwnProperty(obj, key) {\n return Object.prototype.hasOwnProperty.call(obj, key);\n}\n\nvar isArray = Array.isArray || function(obj) {\n return obj instanceof Array;\n};\n\nfunction isDate(obj) {\n return obj instanceof Date;\n}\n\nfunction renderArray(a, out) {\n out(\"[\");\n if (a.length > 0) {\n out.withIndent(function(){\n for (var i = 0; i < a.length; ++i) {\n if (i > 0 && i % 8 === 0) {\n out.indent(a[i]);\n } else {\n out(\" \", a[i]);\n }\n }\n });\n //out.indent();\n }\n out(\" ]\");\n}\n\nfunction renderDate(date, out) {\n out(\"(D:\",\n zeropad(date.getUTCFullYear(), 4),\n zeropad(date.getUTCMonth() + 1, 2),\n zeropad(date.getUTCDate(), 2),\n zeropad(date.getUTCHours(), 2),\n zeropad(date.getUTCMinutes(), 2),\n zeropad(date.getUTCSeconds(), 2),\n \"Z)\");\n}\n\nfunction mm2pt(mm) {\n return mm * (72/25.4);\n}\n\nfunction cm2pt(cm) {\n return mm2pt(cm * 10);\n}\n\nfunction in2pt(inch) {\n return inch * 72;\n}\n\n\nfunction unitsToPoints(x, def) {\n if (typeof x == \"number\") {\n return x;\n }\n if (typeof x == \"string\") {\n var m;\n m = /^\\s*([0-9.]+)\\s*(mm|cm|in|pt)\\s*$/.exec(x);\n if (m) {\n var num = parseFloat(m[1]);\n if (!isNaN(num)) {\n if (m[2] == \"pt\") {\n return num;\n }\n return {\n \"mm\": mm2pt,\n \"cm\": cm2pt,\n \"in\": in2pt\n }[m[2]](num);\n }\n }\n }\n if (def != null) {\n return def;\n }\n throw new Error(\"Can't parse unit: \" + x);\n}\n\n/* -----[ PDF basic objects ]----- */\n\nfunction PDFValue(){}\n\nPDFValue.prototype.beforeRender = function(){};\n\nfunction defclass(Ctor, proto, Base) {\n if (!Base) {\n Base = PDFValue;\n }\n Ctor.prototype = new Base();\n for (var i in proto) {\n if (hasOwnProperty(proto, i)) {\n Ctor.prototype[i] = proto[i];\n }\n }\n return Ctor;\n}\n\n/// strings\n\nvar PDFString = defclass(function PDFString(value){\n this.value = value;\n}, {\n render: function(out) {\n var txt = \"\", val = this.value;\n for (var i = 0; i < val.length; ++i) {\n txt += String.fromCharCode(val.charCodeAt(i) & 0xFF);\n }\n out(\"(\", txt.replace(/([\\(\\)\\\\])/g, \"\\\\$1\"), \")\");\n },\n toString: function() {\n return this.value;\n }\n});\n\nvar PDFHexString = defclass(function PDFHexString(value){\n this.value = value;\n}, {\n render: function(out) {\n var this$1 = this;\n\n out(\"<\");\n for (var i = 0; i < this.value.length; ++i) {\n out(zeropad(this$1.value.charCodeAt(i).toString(16), 4));\n }\n out(\">\");\n }\n}, PDFString);\n\n/// names\n\nvar PDFName = defclass(function PDFName(name) {\n this.name = name;\n}, {\n render: function(out) {\n out(\"/\" + this.escape());\n },\n escape: function() {\n return this.name.replace(/[^\\x21-\\x7E]/g, function(c){\n return \"#\" + zeropad(c.charCodeAt(0).toString(16), 2);\n });\n },\n toString: function() {\n return this.name;\n }\n});\n\nvar PDFName_cache = {};\nPDFName.get = _;\n\nfunction _(name) {\n if (hasOwnProperty(PDFName_cache, name)) {\n return PDFName_cache[name];\n }\n return (PDFName_cache[name] = new PDFName(name));\n}\n\n/// dictionary\n\nvar PDFDictionary = defclass(function PDFDictionary(props) {\n this.props = props;\n}, {\n render: function(out) {\n var props = this.props, empty = true;\n out(\"<<\");\n out.withIndent(function(){\n for (var i in props) {\n if (hasOwnProperty(props, i) && !/^_/.test(i)) {\n empty = false;\n out.indent(_(i), \" \", props[i]);\n }\n }\n });\n if (!empty) {\n out.indent();\n }\n out(\">>\");\n }\n});\n\n/// streams\n\nvar PDFStream = defclass(function PDFStream(data, props, compress) {\n if (typeof data == \"string\") {\n var tmp = BinaryStream();\n tmp.write(data);\n data = tmp;\n }\n this.data = data;\n this.props = props || {};\n this.compress = compress;\n}, {\n render: function(out) {\n var data = this.data.get(), props = this.props;\n if (this.compress && supportsDeflate()) {\n if (!props.Filter) {\n props.Filter = [];\n } else if (!(props.Filter instanceof Array)) {\n props.Filter = [ props.Filter ];\n }\n props.Filter.unshift(_(\"FlateDecode\"));\n data = deflate(data);\n }\n props.Length = data.length;\n out(new PDFDictionary(props), \" stream\", NL);\n out.writeData(data);\n out(NL, \"endstream\");\n }\n});\n\n/// catalog\n\nvar PDFCatalog = defclass(function PDFCatalog(){\n this.props = {\n Type: _(\"Catalog\")\n };\n}, {\n setPages: function(pagesObj) {\n this.props.Pages = pagesObj;\n }\n}, PDFDictionary);\n\n/// page tree\n\nvar PDFPageTree = defclass(function PDFPageTree(){\n this.props = {\n Type : _(\"Pages\"),\n Kids : [],\n Count : 0\n };\n}, {\n addPage: function(pageObj) {\n this.props.Kids.push(pageObj);\n this.props.Count++;\n }\n}, PDFDictionary);\n\n/// images\n\n// JPEG\n\nvar SOF_CODES = [0xc0, 0xc1, 0xc2, 0xc3, 0xc5, 0xc6, 0xc7, 0xc9, 0xca, 0xcb, 0xcd, 0xce, 0xcf];\n\nfunction PDFJpegImage(data) {\n // we must determine the correct color space. we'll parse a bit\n // of the JPEG stream for this, it's still better than going\n // through the canvas.\n // https://github.com/telerik/kendo-ui-core/issues/2845\n data.offset(0);\n var width, height, colorSpace, bitsPerComponent;\n var soi = data.readShort();\n if (soi != 0xFFD8) {\n // XXX: do we have some better options here?\n throw new Error(\"Invalid JPEG image\");\n }\n while (!data.eof()) {\n var ff = data.readByte();\n if (ff != 0xFF) {\n throw new Error(\"Invalid JPEG image\");\n }\n var marker = data.readByte();\n var length = data.readShort();\n if (SOF_CODES.indexOf(marker) >= 0) {\n // \"start of frame\" marker\n bitsPerComponent = data.readByte();\n height = data.readShort();\n width = data.readShort();\n colorSpace = data.readByte();\n break;\n }\n data.skip(length - 2);\n }\n\n if (colorSpace == null) {\n throw new Error(\"Invalid JPEG image\");\n }\n\n var props = {\n Type : _(\"XObject\"),\n Subtype : _(\"Image\"),\n Width : width,\n Height : height,\n BitsPerComponent : bitsPerComponent,\n Filter : _(\"DCTDecode\")\n };\n\n switch (colorSpace) {\n case 1:\n props.ColorSpace = _(\"DeviceGray\");\n break;\n case 3:\n props.ColorSpace = _(\"DeviceRGB\");\n break;\n case 4:\n props.ColorSpace = _(\"DeviceCMYK\");\n props.Decode = [ 1, 0, 1, 0, 1, 0, 1, 0 ]; // invert colors\n break;\n }\n\n this.asStream = function() {\n data.offset(0);\n var stream = new PDFStream(data, props);\n stream._resourceName = _(\"I\" + (++RESOURCE_COUNTER));\n return stream;\n };\n}\n\n// PDFRawImage will be used for images with transparency (PNG)\n\nfunction PDFRawImage(width, height, rgb, alpha) {\n this.asStream = function(pdf) {\n var mask = new PDFStream(alpha, {\n Type : _(\"XObject\"),\n Subtype : _(\"Image\"),\n Width : width,\n Height : height,\n BitsPerComponent : 8,\n ColorSpace : _(\"DeviceGray\")\n }, true);\n var stream = new PDFStream(rgb, {\n Type : _(\"XObject\"),\n Subtype : _(\"Image\"),\n Width : width,\n Height : height,\n BitsPerComponent : 8,\n ColorSpace : _(\"DeviceRGB\"),\n SMask : pdf.attach(mask)\n }, true);\n stream._resourceName = _(\"I\" + (++RESOURCE_COUNTER));\n return stream;\n };\n}\n\n/// standard fonts\n\nvar PDFStandardFont = defclass(function PDFStandardFont(name){\n this.props = {\n Type : _(\"Font\"),\n Subtype : _(\"Type1\"),\n BaseFont : _(name)\n };\n this._resourceName = _(\"F\" + (++RESOURCE_COUNTER));\n}, {\n encodeText: function(str) {\n return new PDFString(String(str));\n }\n}, PDFDictionary);\n\n/// TTF fonts\n\nvar PDFFont = defclass(function PDFFont(pdf, font, props){\n props = this.props = props || {};\n props.Type = _(\"Font\");\n props.Subtype = _(\"Type0\");\n props.Encoding = _(\"Identity-H\");\n\n this._pdf = pdf;\n this._font = font;\n this._sub = font.makeSubset();\n this._resourceName = _(\"F\" + (++RESOURCE_COUNTER));\n\n var head = font.head;\n\n this.name = font.psName;\n var scale = this.scale = font.scale;\n this.bbox = [\n head.xMin * scale,\n head.yMin * scale,\n head.xMax * scale,\n head.yMax * scale\n ];\n\n this.italicAngle = font.post.italicAngle;\n this.ascent = font.ascent * scale;\n this.descent = font.descent * scale;\n this.lineGap = font.lineGap * scale;\n this.capHeight = font.os2.capHeight || this.ascent;\n this.xHeight = font.os2.xHeight || 0;\n this.stemV = 0;\n\n this.familyClass = (font.os2.familyClass || 0) >> 8;\n this.isSerif = this.familyClass >= 1 && this.familyClass <= 7;\n this.isScript = this.familyClass == 10;\n\n this.flags = ((font.post.isFixedPitch ? 1 : 0) |\n (this.isSerif ? 1 << 1 : 0) |\n (this.isScript ? 1 << 3 : 0) |\n (this.italicAngle !== 0 ? 1 << 6 : 0) |\n (1 << 5));\n}, {\n encodeText: function(text) {\n return new PDFHexString(this._sub.encodeText(String(text)));\n },\n getTextWidth: function(fontSize, text) {\n var this$1 = this;\n\n var width = 0, codeMap = this._font.cmap.codeMap;\n for (var i = 0; i < text.length; ++i) {\n var glyphId = codeMap[text.charCodeAt(i)];\n width += this$1._font.widthOfGlyph(glyphId || 0);\n }\n return width * fontSize / 1000;\n },\n beforeRender: function() {\n var self = this;\n var sub = self._sub;\n\n // write the TTF data\n var data = sub.render();\n var fontStream = new PDFStream(BinaryStream(data), {\n Length1: data.length\n }, true);\n\n var descriptor = self._pdf.attach(new PDFDictionary({\n Type : _(\"FontDescriptor\"),\n FontName : _(self._sub.psName),\n FontBBox : self.bbox,\n Flags : self.flags,\n StemV : self.stemV,\n ItalicAngle : self.italicAngle,\n Ascent : self.ascent,\n Descent : self.descent,\n CapHeight : self.capHeight,\n XHeight : self.xHeight,\n FontFile2 : self._pdf.attach(fontStream)\n }));\n\n var cmap = sub.ncid2ogid;\n var firstChar = sub.firstChar;\n var lastChar = sub.lastChar;\n var charWidths = [];\n (function loop(i, chunk){\n if (i <= lastChar) {\n var gid = cmap[i];\n if (gid == null) {\n loop(i + 1);\n } else {\n if (!chunk) {\n charWidths.push(i, chunk = []);\n }\n chunk.push(self._font.widthOfGlyph(gid));\n loop(i + 1, chunk);\n }\n }\n })(firstChar);\n\n // As if two dictionaries weren't enough, we need another\n // one, the \"descendant font\". Only that one can be of\n // Subtype CIDFontType2. PDF is the X11 of document\n // formats: portable but full of legacy that nobody cares\n // about anymore.\n\n var descendant = new PDFDictionary({\n Type: _(\"Font\"),\n Subtype: _(\"CIDFontType2\"),\n BaseFont: _(self._sub.psName),\n CIDSystemInfo: new PDFDictionary({\n Registry : new PDFString(\"Adobe\"),\n Ordering : new PDFString(\"Identity\"),\n Supplement : 0\n }),\n FontDescriptor: descriptor,\n FirstChar: firstChar,\n LastChar: lastChar,\n DW: Math.round(self._font.widthOfGlyph(0)),\n W: charWidths,\n CIDToGIDMap: self._pdf.attach(self._makeCidToGidMap())\n });\n\n var dict = self.props;\n dict.BaseFont = _(self._sub.psName);\n dict.DescendantFonts = [ self._pdf.attach(descendant) ];\n\n // Compute the ToUnicode map so that apps can extract\n // meaningful text from the PDF.\n var unimap = new PDFToUnicodeCmap(firstChar, lastChar, sub.subset);\n var unimapStream = new PDFStream(makeOutput(), null, true);\n unimapStream.data(unimap);\n dict.ToUnicode = self._pdf.attach(unimapStream);\n },\n _makeCidToGidMap: function() {\n return new PDFStream(BinaryStream(this._sub.cidToGidMap()), null, true);\n }\n}, PDFDictionary);\n\nvar PDFToUnicodeCmap = defclass(function PDFUnicodeCMap(firstChar, lastChar, map){\n this.firstChar = firstChar;\n this.lastChar = lastChar;\n this.map = map;\n}, {\n render: function(out) {\n out.indent(\"/CIDInit /ProcSet findresource begin\");\n out.indent(\"12 dict begin\");\n out.indent(\"begincmap\");\n out.indent(\"/CIDSystemInfo <<\");\n out.indent(\" /Registry (Adobe)\");\n out.indent(\" /Ordering (UCS)\");\n out.indent(\" /Supplement 0\");\n out.indent(\">> def\");\n out.indent(\"/CMapName /Adobe-Identity-UCS def\");\n out.indent(\"/CMapType 2 def\");\n out.indent(\"1 begincodespacerange\");\n out.indent(\" <0000>\");\n out.indent(\"endcodespacerange\");\n\n var self = this;\n out.indent(self.lastChar - self.firstChar + 1, \" beginbfchar\");\n out.withIndent(function(){\n for (var code = self.firstChar; code <= self.lastChar; ++code) {\n var unicode = self.map[code];\n var str = ucs2encode([ unicode ]);\n out.indent(\"<\", zeropad(code.toString(16), 4), \">\", \"<\");\n for (var i = 0; i < str.length; ++i) {\n out(zeropad(str.charCodeAt(i).toString(16), 4));\n }\n out(\">\");\n }\n });\n out.indent(\"endbfchar\");\n\n out.indent(\"endcmap\");\n out.indent(\"CMapName currentdict /CMap defineresource pop\");\n out.indent(\"end\");\n out.indent(\"end\");\n }\n});\n\n/// gradients\n\nfunction makeHash(a) {\n return a.map(function(x){\n return isArray(x) ? makeHash(x)\n : typeof x == \"number\" ? (Math.round(x * 1000) / 1000).toFixed(3)\n : x;\n }).join(\" \");\n}\n\nfunction cacheColorGradientFunction(pdf, r1, g1, b1, r2, g2, b2) {\n var hash = makeHash([ r1, g1, b1, r2, g2, b2 ]);\n var func = pdf.GRAD_COL_FUNCTIONS[hash];\n if (!func) {\n func = pdf.GRAD_COL_FUNCTIONS[hash] = pdf.attach(new PDFDictionary({\n FunctionType: 2,\n Domain: [ 0, 1 ],\n Range: [ 0, 1, 0, 1, 0, 1 ],\n N: 1,\n C0: [ r1 , g1 , b1 ],\n C1: [ r2 , g2 , b2 ]\n }));\n }\n return func;\n}\n\nfunction cacheOpacityGradientFunction(pdf, a1, a2) {\n var hash = makeHash([ a1, a2 ]);\n var func = pdf.GRAD_OPC_FUNCTIONS[hash];\n if (!func) {\n func = pdf.GRAD_OPC_FUNCTIONS[hash] = pdf.attach(new PDFDictionary({\n FunctionType: 2,\n Domain: [ 0, 1 ],\n Range: [ 0, 1 ],\n N: 1,\n C0: [ a1 ],\n C1: [ a2 ]\n }));\n }\n return func;\n}\n\nfunction makeGradientFunctions(pdf, stops) {\n var hasAlpha = false;\n var opacities = [];\n var colors = [];\n var offsets = [];\n var encode = [];\n var i, prev, cur, prevColor, curColor;\n for (i = 1; i < stops.length; ++i) {\n prev = stops[i - 1];\n cur = stops[i];\n prevColor = prev.color;\n curColor = cur.color;\n colors.push(cacheColorGradientFunction(\n pdf,\n prevColor.r, prevColor.g, prevColor.b,\n curColor.r, curColor.g, curColor.b\n ));\n if (prevColor.a < 1 || curColor.a < 1) {\n hasAlpha = true;\n }\n offsets.push(cur.offset);\n encode.push(0, 1);\n }\n if (hasAlpha) {\n for (i = 1; i < stops.length; ++i) {\n prev = stops[i - 1];\n cur = stops[i];\n prevColor = prev.color;\n curColor = cur.color;\n opacities.push(cacheOpacityGradientFunction(\n pdf, prevColor.a, curColor.a\n ));\n }\n }\n offsets.pop();\n return {\n hasAlpha : hasAlpha,\n colors : assemble(colors),\n opacities : hasAlpha ? assemble(opacities) : null\n };\n function assemble(funcs) {\n if (funcs.length == 1) {\n return funcs[0];\n }\n return {\n FunctionType: 3,\n Functions: funcs,\n Domain: [ 0, 1 ],\n Bounds: offsets,\n Encode: encode\n };\n }\n}\n\nfunction cacheColorGradient(pdf, isRadial, stops, coords, funcs, box) {\n var shading, hash;\n // if box is given then we have user-space coordinates, which\n // means the gradient is designed for a certain position/size\n // on page. caching won't do any good.\n if (!box) {\n var a = [ isRadial ].concat(coords);\n stops.forEach(function(x){\n a.push(x.offset, x.color.r, x.color.g, x.color.b);\n });\n hash = makeHash(a);\n shading = pdf.GRAD_COL[hash];\n }\n if (!shading) {\n shading = new PDFDictionary({\n Type: _(\"Shading\"),\n ShadingType: isRadial ? 3 : 2,\n ColorSpace: _(\"DeviceRGB\"),\n Coords: coords,\n Domain: [ 0, 1 ],\n Function: funcs,\n Extend: [ true, true ]\n });\n pdf.attach(shading);\n shading._resourceName = \"S\" + (++RESOURCE_COUNTER);\n if (hash) {\n pdf.GRAD_COL[hash] = shading;\n }\n }\n return shading;\n}\n\nfunction cacheOpacityGradient(pdf, isRadial, stops, coords, funcs, box) {\n var opacity, hash;\n // if box is given then we have user-space coordinates, which\n // means the gradient is designed for a certain position/size\n // on page. caching won't do any good.\n if (!box) {\n var a = [ isRadial ].concat(coords);\n stops.forEach(function(x){\n a.push(x.offset, x.color.a);\n });\n hash = makeHash(a);\n opacity = pdf.GRAD_OPC[hash];\n }\n if (!opacity) {\n opacity = new PDFDictionary({\n Type: _(\"ExtGState\"),\n AIS: false,\n CA: 1,\n ca: 1,\n SMask: {\n Type: _(\"Mask\"),\n S: _(\"Luminosity\"),\n G: pdf.attach(new PDFStream(\"/a0 gs /s0 sh\", {\n Type: _(\"XObject\"),\n Subtype: _(\"Form\"),\n FormType: 1,\n BBox: (box ? [\n box.left, box.top + box.height, box.left + box.width, box.top\n ] : [ 0, 1, 1, 0 ]),\n Group: {\n Type: _(\"Group\"),\n S: _(\"Transparency\"),\n CS: _(\"DeviceGray\"),\n I: true\n },\n Resources: {\n ExtGState: {\n a0: { CA: 1, ca: 1 }\n },\n Shading: {\n s0: {\n ColorSpace: _(\"DeviceGray\"),\n Coords: coords,\n Domain: [ 0, 1 ],\n ShadingType: isRadial ? 3 : 2,\n Function: funcs,\n Extend: [ true, true ]\n }\n }\n }\n }))\n }\n });\n pdf.attach(opacity);\n opacity._resourceName = \"O\" + (++RESOURCE_COUNTER);\n if (hash) {\n pdf.GRAD_OPC[hash] = opacity;\n }\n }\n return opacity;\n}\n\nfunction cacheGradient(pdf, gradient, box) {\n var isRadial = gradient.type == \"radial\";\n var funcs = makeGradientFunctions(pdf, gradient.stops);\n var coords = isRadial ? [\n gradient.start.x , gradient.start.y , gradient.start.r,\n gradient.end.x , gradient.end.y , gradient.end.r\n ] : [\n gradient.start.x , gradient.start.y,\n gradient.end.x , gradient.end.y\n ];\n var shading = cacheColorGradient(\n pdf, isRadial, gradient.stops, coords, funcs.colors, gradient.userSpace && box\n );\n var opacity = funcs.hasAlpha ? cacheOpacityGradient(\n pdf, isRadial, gradient.stops, coords, funcs.opacities, gradient.userSpace && box\n ) : null;\n return {\n hasAlpha: funcs.hasAlpha,\n shading: shading,\n opacity: opacity\n };\n}\n\n/// page object\n\nvar PDFPage = defclass(function PDFPage(pdf, props){\n this._pdf = pdf;\n this._rcount = 0;\n this._textMode = false;\n this._fontResources = {};\n this._gsResources = {};\n this._xResources = {};\n this._patResources = {};\n this._shResources = {};\n this._opacity = 1;\n this._matrix = [ 1, 0, 0, 1, 0, 0 ];\n this._annotations = [];\n\n this._font = null;\n this._fontSize = null;\n\n this._contextStack = [];\n\n props = this.props = props || {};\n props.Type = _(\"Page\");\n props.ProcSet = [\n _(\"PDF\"),\n _(\"Text\"),\n _(\"ImageB\"),\n _(\"ImageC\"),\n _(\"ImageI\")\n ];\n props.Resources = new PDFDictionary({\n Font : new PDFDictionary(this._fontResources),\n ExtGState : new PDFDictionary(this._gsResources),\n XObject : new PDFDictionary(this._xResources),\n Pattern : new PDFDictionary(this._patResources),\n Shading : new PDFDictionary(this._shResources)\n });\n props.Annots = this._annotations;\n}, {\n _out: function() {\n this._content.data.apply(null, arguments);\n },\n transform: function(a, b, c, d, e, f) {\n if (!isIdentityMatrix(arguments)) {\n this._matrix = mmul(arguments, this._matrix);\n this._out(a, \" \", b, \" \", c, \" \", d, \" \", e, \" \", f, \" cm\");\n // XXX: debug\n // this._out(\" % current matrix: \", this._matrix);\n this._out(NL);\n }\n },\n translate: function(dx, dy) {\n this.transform(1, 0, 0, 1, dx, dy);\n },\n scale: function(sx, sy) {\n this.transform(sx, 0, 0, sy, 0, 0);\n },\n rotate: function(angle) {\n var cos = Math.cos(angle), sin = Math.sin(angle);\n this.transform(cos, sin, -sin, cos, 0, 0);\n },\n beginText: function() {\n this._textMode = true;\n this._out(\"BT\", NL);\n },\n endText: function() {\n this._textMode = false;\n this._out(\"ET\", NL);\n },\n _requireTextMode: function() {\n if (!this._textMode) {\n throw new Error(\"Text mode required; call page.beginText() first\");\n }\n },\n _requireFont: function() {\n if (!this._font) {\n throw new Error(\"No font selected; call page.setFont() first\");\n }\n },\n setFont: function(font, size) {\n this._requireTextMode();\n if (font == null) {\n font = this._font;\n } else if (!(font instanceof PDFFont)) {\n font = this._pdf.getFont(font);\n }\n if (size == null) {\n size = this._fontSize;\n }\n this._fontResources[font._resourceName] = font;\n this._font = font;\n this._fontSize = size;\n this._out(font._resourceName, \" \", size, \" Tf\", NL);\n },\n setTextLeading: function(size) {\n this._requireTextMode();\n this._out(size, \" TL\", NL);\n },\n setTextRenderingMode: function(mode) {\n this._requireTextMode();\n this._out(mode, \" Tr\", NL);\n },\n showText: function(text, requestedWidth) {\n this._requireFont();\n if (text.length > 1 && requestedWidth && this._font instanceof PDFFont) {\n var outputWidth = this._font.getTextWidth(this._fontSize, text);\n var scale = requestedWidth / outputWidth * 100;\n this._out(scale, \" Tz \");\n }\n this._out(this._font.encodeText(text), \" Tj\", NL);\n },\n showTextNL: function(text) {\n this._requireFont();\n this._out(this._font.encodeText(text), \" '\", NL);\n },\n addLink: function(uri, box) {\n var ll = this._toPage({ x: box.left, y: box.bottom });\n var ur = this._toPage({ x: box.right, y: box.top });\n this._annotations.push(new PDFDictionary({\n Type : _(\"Annot\"),\n Subtype : _(\"Link\"),\n Rect : [ ll.x, ll.y, ur.x, ur.y ],\n Border : [ 0, 0, 0 ],\n A : new PDFDictionary({\n Type : _(\"Action\"),\n S : _(\"URI\"),\n URI : new PDFString(uri)\n })\n }));\n },\n setStrokeColor: function(r, g, b) {\n this._out(r, \" \", g, \" \", b, \" RG\", NL);\n },\n setOpacity: function(opacity) {\n this.setFillOpacity(opacity);\n this.setStrokeOpacity(opacity);\n this._opacity *= opacity;\n },\n setStrokeOpacity: function(opacity) {\n if (opacity < 1) {\n var gs = this._pdf.getOpacityGS(this._opacity * opacity, true);\n this._gsResources[gs._resourceName] = gs;\n this._out(gs._resourceName, \" gs\", NL);\n }\n },\n setFillColor: function(r, g, b) {\n this._out(r, \" \", g, \" \", b, \" rg\", NL);\n },\n setFillOpacity: function(opacity) {\n if (opacity < 1) {\n var gs = this._pdf.getOpacityGS(this._opacity * opacity, false);\n this._gsResources[gs._resourceName] = gs;\n this._out(gs._resourceName, \" gs\", NL);\n }\n },\n gradient: function(gradient, box) {\n this.save();\n this.rect(box.left, box.top, box.width, box.height);\n this.clip();\n if (!gradient.userSpace) {\n this.transform(box.width, 0, 0, box.height, box.left, box.top);\n }\n var g = cacheGradient(this._pdf, gradient, box);\n var sname = g.shading._resourceName, oname;\n this._shResources[sname] = g.shading;\n if (g.hasAlpha) {\n oname = g.opacity._resourceName;\n this._gsResources[oname] = g.opacity;\n this._out(\"/\" + oname + \" gs \");\n }\n this._out(\"/\" + sname + \" sh\", NL);\n this.restore();\n },\n setDashPattern: function(dashArray, dashPhase) {\n this._out(dashArray, \" \", dashPhase, \" d\", NL);\n },\n setLineWidth: function(width) {\n this._out(width, \" w\", NL);\n },\n setLineCap: function(lineCap) {\n this._out(lineCap, \" J\", NL);\n },\n setLineJoin: function(lineJoin) {\n this._out(lineJoin, \" j\", NL);\n },\n setMitterLimit: function(mitterLimit) {\n this._out(mitterLimit, \" M\", NL);\n },\n save: function() {\n this._contextStack.push(this._context());\n this._out(\"q\", NL);\n },\n restore: function() {\n this._out(\"Q\", NL);\n this._context(this._contextStack.pop());\n },\n\n // paths\n moveTo: function(x, y) {\n this._out(x, \" \", y, \" m\", NL);\n },\n lineTo: function(x, y) {\n this._out(x, \" \", y, \" l\", NL);\n },\n bezier: function(x1, y1, x2, y2, x3, y3) {\n this._out(x1, \" \", y1, \" \", x2, \" \", y2, \" \", x3, \" \", y3, \" c\", NL);\n },\n bezier1: function(x1, y1, x3, y3) {\n this._out(x1, \" \", y1, \" \", x3, \" \", y3, \" y\", NL);\n },\n bezier2: function(x2, y2, x3, y3) {\n this._out(x2, \" \", y2, \" \", x3, \" \", y3, \" v\", NL);\n },\n close: function() {\n this._out(\"h\", NL);\n },\n rect: function(x, y, w, h) {\n this._out(x, \" \", y, \" \", w, \" \", h, \" re\", NL);\n },\n ellipse: function(x, y, rx, ry) {\n function _X(v) { return x + v; }\n function _Y(v) { return y + v; }\n\n // how to get to the \"magic number\" is explained here:\n // http://www.whizkidtech.redprince.net/bezier/circle/kappa/\n var k = 0.5522847498307936;\n\n this.moveTo(_X(0), _Y(ry));\n this.bezier(\n _X(rx * k) , _Y(ry),\n _X(rx) , _Y(ry * k),\n _X(rx) , _Y(0)\n );\n this.bezier(\n _X(rx) , _Y(-ry * k),\n _X(rx * k) , _Y(-ry),\n _X(0) , _Y(-ry)\n );\n this.bezier(\n _X(-rx * k) , _Y(-ry),\n _X(-rx) , _Y(-ry * k),\n _X(-rx) , _Y(0)\n );\n this.bezier(\n _X(-rx) , _Y(ry * k),\n _X(-rx * k) , _Y(ry),\n _X(0) , _Y(ry)\n );\n },\n circle: function(x, y, r) {\n this.ellipse(x, y, r, r);\n },\n stroke: function() {\n this._out(\"S\", NL);\n },\n nop: function() {\n this._out(\"n\", NL);\n },\n clip: function() {\n this._out(\"W n\", NL);\n },\n clipStroke: function() {\n this._out(\"W S\", NL);\n },\n closeStroke: function() {\n this._out(\"s\", NL);\n },\n fill: function() {\n this._out(\"f\", NL);\n },\n fillStroke: function() {\n this._out(\"B\", NL);\n },\n drawImage: function(url) {\n var img = this._pdf.getImage(url);\n if (img) { // the result can be null for a cross-domain image\n this._xResources[img._resourceName] = img;\n this._out(img._resourceName, \" Do\", NL);\n }\n },\n comment: function(txt) {\n var self = this;\n txt.split(/\\r?\\n/g).forEach(function(line){\n self._out(\"% \", line, NL);\n });\n },\n\n // internal\n _context: function(val) {\n if (val != null) {\n this._opacity = val.opacity;\n this._matrix = val.matrix;\n } else {\n return {\n opacity: this._opacity,\n matrix: this._matrix\n };\n }\n },\n\n _toPage: function(p) {\n var m = this._matrix;\n var a = m[0], b = m[1], c = m[2], d = m[3], e = m[4], f = m[5];\n return {\n x: a*p.x + c*p.y + e,\n y: b*p.x + d*p.y + f\n };\n }\n}, PDFDictionary);\n\nfunction unquote(str) {\n return str.replace(/^\\s*(['\"])(.*)\\1\\s*$/, \"$2\");\n}\n\nfunction parseFontDef(fontdef) {\n // XXX: this is very crude for now and buggy. Proper parsing is quite involved.\n var rx = /^\\s*((normal|italic)\\s+)?((normal|small-caps)\\s+)?((normal|bold|\\d+)\\s+)?(([0-9.]+)(px|pt))(\\/(([0-9.]+)(px|pt)|normal))?\\s+(.*?)\\s*$/i;\n var m = rx.exec(fontdef);\n if (!m) {\n return { fontSize: 12, fontFamily: \"sans-serif\" };\n }\n var fontSize = m[8] ? parseInt(m[8], 10) : 12;\n return {\n italic : m[2] && m[2].toLowerCase() == \"italic\",\n variant : m[4],\n bold : m[6] && /bold|700/i.test(m[6]),\n fontSize : fontSize,\n lineHeight : m[12] ? m[12] == \"normal\" ? fontSize : parseInt(m[12], 10) : null,\n fontFamily : m[14].split(/\\s*,\\s*/g).map(unquote)\n };\n}\n\nfunction getFontURL(style) {\n function mkFamily(name) {\n if (style.bold) {\n name += \"|bold\";\n }\n if (style.italic) {\n name += \"|italic\";\n }\n return name.toLowerCase();\n }\n var fontFamily = style.fontFamily;\n var name, url;\n if (fontFamily instanceof Array) {\n for (var i = 0; i < fontFamily.length; ++i) {\n name = mkFamily(fontFamily[i]);\n url = FONT_MAPPINGS[name];\n if (url) {\n break;\n }\n }\n } else {\n url = FONT_MAPPINGS[fontFamily.toLowerCase()];\n }\n while (typeof url == \"function\") {\n url = url();\n }\n if (!url) {\n url = \"Times-Roman\";\n }\n return url;\n}\n\nvar FONT_MAPPINGS = {\n \"serif\" : \"Times-Roman\",\n \"serif|bold\" : \"Times-Bold\",\n \"serif|italic\" : \"Times-Italic\",\n \"serif|bold|italic\" : \"Times-BoldItalic\",\n \"sans-serif\" : \"Helvetica\",\n \"sans-serif|bold\" : \"Helvetica-Bold\",\n \"sans-serif|italic\" : \"Helvetica-Oblique\",\n \"sans-serif|bold|italic\" : \"Helvetica-BoldOblique\",\n \"monospace\" : \"Courier\",\n \"monospace|bold\" : \"Courier-Bold\",\n \"monospace|italic\" : \"Courier-Oblique\",\n \"monospace|bold|italic\" : \"Courier-BoldOblique\",\n \"zapfdingbats\" : \"ZapfDingbats\",\n \"zapfdingbats|bold\" : \"ZapfDingbats\",\n \"zapfdingbats|italic\" : \"ZapfDingbats\",\n \"zapfdingbats|bold|italic\" : \"ZapfDingbats\"\n};\n\nfunction fontAlias(alias, name) {\n alias = alias.toLowerCase();\n FONT_MAPPINGS[alias] = function() {\n return FONT_MAPPINGS[name];\n };\n FONT_MAPPINGS[alias + \"|bold\"] = function() {\n return FONT_MAPPINGS[name + \"|bold\"];\n };\n FONT_MAPPINGS[alias + \"|italic\"] = function() {\n return FONT_MAPPINGS[name + \"|italic\"];\n };\n FONT_MAPPINGS[alias + \"|bold|italic\"] = function() {\n return FONT_MAPPINGS[name + \"|bold|italic\"];\n };\n}\n\n// Let's define some common names to an appropriate replacement.\n// These are overridable via pdf.defineFont, should the user want to\n// include the proper versions.\n\nfontAlias(\"Times New Roman\" , \"serif\");\nfontAlias(\"Courier New\" , \"monospace\");\nfontAlias(\"Arial\" , \"sans-serif\");\nfontAlias(\"Helvetica\" , \"sans-serif\");\nfontAlias(\"Verdana\" , \"sans-serif\");\nfontAlias(\"Tahoma\" , \"sans-serif\");\nfontAlias(\"Georgia\" , \"sans-serif\");\nfontAlias(\"Monaco\" , \"monospace\");\nfontAlias(\"Andale Mono\" , \"monospace\");\n\nfunction defineFont(name, url) {\n if (arguments.length == 1) {\n for (var i in name) {\n if (hasOwnProperty(name, i)) {\n defineFont(i, name[i]);\n }\n }\n } else {\n name = name.toLowerCase();\n FONT_MAPPINGS[name] = url;\n\n // special handling for DejaVu fonts: if they get defined,\n // let them also replace the default families, for good\n // Unicode support out of the box.\n switch (name) {\n case \"dejavu sans\" : FONT_MAPPINGS[\"sans-serif\"] = url; break;\n case \"dejavu sans|bold\" : FONT_MAPPINGS[\"sans-serif|bold\"] = url; break;\n case \"dejavu sans|italic\" : FONT_MAPPINGS[\"sans-serif|italic\"] = url; break;\n case \"dejavu sans|bold|italic\" : FONT_MAPPINGS[\"sans-serif|bold|italic\"] = url; break;\n case \"dejavu serif\" : FONT_MAPPINGS[\"serif\"] = url; break;\n case \"dejavu serif|bold\" : FONT_MAPPINGS[\"serif|bold\"] = url; break;\n case \"dejavu serif|italic\" : FONT_MAPPINGS[\"serif|italic\"] = url; break;\n case \"dejavu serif|bold|italic\" : FONT_MAPPINGS[\"serif|bold|italic\"] = url; break;\n case \"dejavu mono\" : FONT_MAPPINGS[\"monospace\"] = url; break;\n case \"dejavu mono|bold\" : FONT_MAPPINGS[\"monospace|bold\"] = url; break;\n case \"dejavu mono|italic\" : FONT_MAPPINGS[\"monospace|italic\"] = url; break;\n case \"dejavu mono|bold|italic\" : FONT_MAPPINGS[\"monospace|bold|italic\"] = url; break;\n }\n }\n}\n\nfunction mmul(a, b) {\n var a1 = a[0], b1 = a[1], c1 = a[2], d1 = a[3], e1 = a[4], f1 = a[5];\n var a2 = b[0], b2 = b[1], c2 = b[2], d2 = b[3], e2 = b[4], f2 = b[5];\n return [\n a1*a2 + b1*c2, a1*b2 + b1*d2,\n c1*a2 + d1*c2, c1*b2 + d1*d2,\n e1*a2 + f1*c2 + e2, e1*b2 + f1*d2 + f2\n ];\n}\n\nfunction isIdentityMatrix(m) {\n return m[0] === 1 && m[1] === 0 && m[2] === 0 && m[3] === 1 && m[4] === 0 && m[5] === 0;\n}\n\nvar TEXT_RENDERING_MODE = {\n fill : 0,\n stroke : 1,\n fillAndStroke : 2,\n invisible : 3,\n fillAndClip : 4,\n strokeAndClip : 5,\n fillStrokeClip : 6,\n clip : 7\n};\n\nexport {\n PDFDocument as Document,\n BinaryStream,\n defineFont,\n parseFontDef,\n getFontURL,\n loadFonts,\n loadImages,\n getPaperOptions,\n clearImageCache,\n TEXT_RENDERING_MODE\n};\n","/* eslint-disable no-multi-spaces, key-spacing, indent, camelcase, space-before-blocks, eqeqeq, brace-style */\n/* eslint-disable space-infix-ops, space-before-function-paren, array-bracket-spacing, object-curly-spacing */\n/* eslint-disable no-nested-ternary, max-params, default-case, no-else-return, no-empty, yoda */\n/* eslint-disable no-param-reassign, no-var, block-scoped-var */\n\nimport * as geo from \"../geometry\";\nimport * as PDF from \"../pdf\";\nimport { arabicToRoman, createPromise, measureText, mergeSort } from '../util';\nimport { parseColor as utils_parseColor, support, template as compileTemplate } from \"../common\";\nimport { Path, Text, Group, Image, Circle, LinearGradient } from \"../drawing\";\n\nvar browser = support.browser || {};\n/*\n\n XXX: to test:\n\n - cloneNodes function:\n - drawing document containing canvas with page breaking\n - drawing document with named radio -s (should not clear selection)\n - IE9/IE10 don't support el.dataset; do they copy user data?\n\n - repeating table headers/footers on page breaking\n\n - forceBreak, keepTogether\n\n - avoidLinks\n\n */\n\n/* -----[ local vars ]----- */\n\nfunction slice(thing) {\n return Array.prototype.slice.call(thing);\n}\n\nvar KENDO_PSEUDO_ELEMENT = \"KENDO-PSEUDO-ELEMENT\";\n\nvar IMAGE_CACHE = {};\n\nvar nodeInfo = {};\nnodeInfo._root = nodeInfo;\n\n/* -----[ Custom Text node to speed up rendering in PDF ]----- */\n\nvar inBrowser = typeof window !== 'undefined';\nvar microsoft = inBrowser ? browser.msie || browser.edge : false;\n\nvar TextRect = (function (Text) {\n function TextRect(str, rect, options) {\n Text.call(this, str, rect.getOrigin(), options);\n this._pdfRect = rect;\n }\n\n if ( Text ) TextRect.__proto__ = Text;\n TextRect.prototype = Object.create( Text && Text.prototype );\n TextRect.prototype.constructor = TextRect;\n TextRect.prototype.rect = function rect () {\n // this is the crux of it: we can avoid a call to\n // measure(), which is what the base class does, since we\n // already know the rect. measure() is s-l-o-w.\n return this._pdfRect;\n };\n TextRect.prototype.rawBBox = function rawBBox () {\n // also let's avoid creating a new rectangle.\n return this._pdfRect;\n };\n\n return TextRect;\n}(Text));\n\nfunction addClass(el, cls) {\n if (el.classList) {\n el.classList.add(cls);\n } else {\n el.className += \" \" + cls;\n }\n}\n\nfunction removeClass(el, cls) {\n if (el.classList) {\n el.classList.remove(cls);\n } else {\n el.className = el.className.split(/\\s+/).reduce(function(a, word){\n if (word != cls) {\n a.push(word);\n }\n return a;\n }, []).join(\" \");\n }\n}\n\nfunction setCSS(el, styles) {\n Object.keys(styles).forEach(function(key){\n el.style[key] = styles[key];\n });\n}\n\nvar matches = typeof Element !== \"undefined\" && Element.prototype && (function(p){\n if (p.matches) {\n return function(el, selector) { return el.matches(selector); };\n }\n if (p.webkitMatchesSelector) {\n return function(el, selector) { return el.webkitMatchesSelector(selector); };\n }\n if (p.mozMatchesSelector) {\n return function(el, selector) { return el.mozMatchesSelector(selector); };\n }\n if (p.msMatchesSelector) {\n return function(el, selector) { return el.msMatchesSelector(selector); };\n }\n return function(s) {\n\treturn [].indexOf.call(document.querySelectorAll(s), this) !== -1;\n };\n})(Element.prototype);\n\nfunction closest(el, selector) {\n if (el.closest) {\n return el.closest(selector);\n }\n // IE: stringifying rather than simply comparing with `document`,\n // which is not iframe-proof and fails in editor export —\n // https://github.com/telerik/kendo/issues/6721\n while (el && !/^\\[object (?:HTML)?Document\\]$/.test(String(el))) {\n if (el.nodeType == 1 /* Element */ && matches(el, selector)) {\n return el;\n }\n el = el.parentNode;\n }\n}\n\n// clone nodes ourselves, so that we redraw (DOM or\n// jQuery clone will not)\nvar cloneNodes = (function($){\n if ($) {\n // if we have Kendo and jQuery, use this version as it will\n // maintain proper links between cloned element and Kendo\n // widgets (i.e. it clones jQuery data(), which isn't the same\n // as element's data attributes).\n // https://github.com/telerik/kendo-ui-core/issues/2750\n return function cloneNodes(el) {\n var clone = el.cloneNode(false);\n if (el.nodeType == 1 /* Element */) {\n var $el = $(el), $clone = $(clone), i;\n var data = $el.data();\n for (i in data) {\n $clone.data(i, data[i]);\n }\n if (/^canvas$/i.test(el.tagName)) {\n clone.getContext(\"2d\").drawImage(el, 0, 0);\n } else if (/^(?:input|select|textarea|option)$/i.test(el.tagName)) {\n // drop the name attributes so that we don't affect the selection of the\n // original nodes (i.e. checked status of radio buttons) when we insert our copy\n // into the DOM. https://github.com/telerik/kendo/issues/5409\n clone.removeAttribute(\"id\");\n clone.removeAttribute(\"name\");\n clone.value = el.value;\n clone.checked = el.checked;\n clone.selected = el.selected;\n }\n for (i = el.firstChild; i; i = i.nextSibling) {\n clone.appendChild(cloneNodes(i));\n }\n }\n return clone;\n };\n } else {\n // the no-jQuery version\n return function cloneNodes(el) {\n var clone = (function dive(node){\n var clone = node.cloneNode(false);\n if (node._kendoExportVisual) {\n clone._kendoExportVisual = node._kendoExportVisual;\n }\n for (var i = node.firstChild; i; i = i.nextSibling) {\n clone.appendChild(dive(i));\n }\n return clone;\n })(el);\n\n // re-draw canvases - https://github.com/telerik/kendo/issues/4872\n var canvases = el.querySelectorAll(\"canvas\");\n if (canvases.length) {\n slice(clone.querySelectorAll(\"canvas\")).forEach(function (canvas, i) {\n canvas.getContext(\"2d\").drawImage(canvases[i], 0, 0);\n });\n }\n\n // remove \"name\" attributes from elements -\n // https://github.com/telerik/kendo/issues/5409\n var orig = el.querySelectorAll(\"input, select, textarea, option\");\n slice(clone.querySelectorAll(\"input, select, textarea, option\")).forEach(function (el, i) {\n el.removeAttribute(\"id\");\n el.removeAttribute(\"name\");\n el.value = orig[i].value;\n el.checked = orig[i].checked;\n el.selected = orig[i].selected;\n });\n\n return clone;\n };\n }\n})(typeof window !== \"undefined\" && window.kendo && window.kendo.jQuery);\n\nfunction getXY(thing) {\n if (typeof thing == \"number\") {\n return { x: thing, y: thing };\n }\n if (Array.isArray(thing)) {\n return { x: thing[0], y: thing[1] };\n }\n return { x: thing.x, y: thing.y };\n}\n\nfunction drawDOM(element, options) {\n if (!options) {\n options = {};\n }\n var promise = createPromise();\n\n if (!element) {\n return promise.reject(\"No element to export\");\n }\n\n if (typeof window.getComputedStyle != \"function\") {\n throw new Error(\"window.getComputedStyle is missing. You are using an unsupported browser, or running in IE8 compatibility mode. Drawing HTML is supported in Chrome, Firefox, Safari and IE9+.\");\n }\n\n PDF.defineFont(getFontFaces(element.ownerDocument));\n\n var scale = getXY(options.scale || 1);\n\n function doOne(element) {\n var group = new Group();\n\n // translate to start of page\n var pos = element.getBoundingClientRect();\n setTransform(group, [\n scale.x,\n 0,\n 0,\n scale.y,\n (-pos.left * scale.x),\n (-pos.top * scale.y)\n ]);\n\n nodeInfo._clipbox = false;\n nodeInfo._matrix = geo.Matrix.unit();\n nodeInfo._stackingContext = {\n element: element,\n group: group\n };\n\n if (options.avoidLinks === true) {\n nodeInfo._avoidLinks = \"a\";\n } else {\n nodeInfo._avoidLinks = options.avoidLinks;\n }\n\n addClass(element, \"k-pdf-export\");\n renderElement(element, group);\n removeClass(element, \"k-pdf-export\");\n\n return group;\n }\n\n cacheImages(element, function(){\n var forceBreak = options && options.forcePageBreak;\n var hasPaperSize = options && options.paperSize && options.paperSize != \"auto\";\n var paperOptions = PDF.getPaperOptions(function(key, def){\n if (key == \"paperSize\") {\n // PDF.getPaperOptions croaks on \"auto\", just pass dummy A4 as we might\n // still be interested in margins.\n return hasPaperSize ? options[key] : \"A4\";\n }\n return key in options ? options[key] : def;\n });\n var pageWidth = hasPaperSize && paperOptions.paperSize[0];\n var pageHeight = hasPaperSize && paperOptions.paperSize[1];\n var margin = options.margin && paperOptions.margin;\n var hasMargin = Boolean(margin);\n if (forceBreak || pageHeight) {\n if (!margin) {\n margin = { left: 0, top: 0, right: 0, bottom: 0 };\n }\n\n // we want paper size and margin to be unaffected by\n // scaling in the output, so we have to reverse-scale\n // before our calculations begin.\n if (pageWidth) { pageWidth /= scale.x; }\n if (pageHeight) { pageHeight /= scale.y; }\n margin.left /= scale.x;\n margin.right /= scale.x;\n margin.top /= scale.y;\n margin.bottom /= scale.y;\n\n var group = new Group({\n pdf: {\n multiPage : true,\n paperSize : hasPaperSize ? paperOptions.paperSize : \"auto\",\n _ignoreMargin : hasMargin // HACK! see exportPDF in pdf/drawing.js\n }\n });\n handlePageBreaks(\n function(x) {\n if (options.progress) {\n var canceled = false, pageNum = 0;\n (function next(){\n if (pageNum < x.pages.length) {\n var page = doOne(x.pages[pageNum]);\n group.append(page);\n options.progress({\n page: page,\n pageNum: ++pageNum,\n totalPages: x.pages.length,\n cancel: function() {\n canceled = true;\n }\n });\n if (!canceled) {\n setTimeout(next);\n } else {\n // XXX: should we also fail() the deferred object?\n x.container.parentNode.removeChild(x.container);\n }\n } else {\n x.container.parentNode.removeChild(x.container);\n promise.resolve(group);\n }\n })();\n } else {\n x.pages.forEach(function(page){\n group.append(doOne(page));\n });\n x.container.parentNode.removeChild(x.container);\n promise.resolve(group);\n }\n },\n element,\n forceBreak,\n pageWidth ? pageWidth - margin.left - margin.right : null,\n pageHeight ? pageHeight - margin.top - margin.bottom : null,\n margin,\n options\n );\n } else {\n promise.resolve(doOne(element));\n }\n });\n\n function makeTemplate(template) {\n if (template != null) {\n if (typeof template == \"string\") {\n template = compileTemplate(template.replace(/^\\s+|\\s+$/g, \"\"));\n }\n if (typeof template == \"function\") {\n return function(data) {\n var el = template(data);\n if (el && typeof el == \"string\") {\n var div = document.createElement(\"div\");\n div.innerHTML = el;\n el = div.firstElementChild;\n }\n return el;\n };\n }\n // assumed DOM element\n return function() {\n return template.cloneNode(true);\n };\n }\n }\n\n function handlePageBreaks(callback, element, forceBreak, pageWidth, pageHeight, margin, options) {\n var template = makeTemplate(options.template);\n var doc = element.ownerDocument;\n var pages = [];\n var copy = options._destructive ? element : cloneNodes(element);\n var container = doc.createElement(\"KENDO-PDF-DOCUMENT\");\n var adjust = 0;\n\n // make sure elements are at the end (Grid widget\n // places TFOOT before TBODY, tricking our algorithm to\n // insert a page break right after the header).\n // https://github.com/telerik/kendo/issues/4699\n slice(copy.querySelectorAll(\"tfoot\")).forEach(function(tfoot){\n tfoot.parentNode.appendChild(tfoot);\n });\n\n // remember the index of each LI from an ordered list.\n // we'll use it to reconstruct the proper numbering.\n slice(copy.querySelectorAll(\"ol\")).forEach(function(ol){\n slice(ol.children).forEach(function(li, index){\n li.setAttribute(\"kendo-split-index\", index);\n });\n });\n\n setCSS(container, {\n display : \"block\",\n position : \"absolute\",\n boxSizing : \"content-box\",\n left : \"-10000px\",\n top : \"-10000px\"\n });\n\n if (pageWidth) {\n // subtle: if we don't set the width *and* margins here, the layout in this\n // container will be different from the one in our final page elements, and we'll\n // split at the wrong places.\n setCSS(container, {\n width : pageWidth + \"px\",\n paddingLeft : margin.left + \"px\",\n paddingRight : margin.right + \"px\"\n });\n\n // when the first element has a margin-top (i.e. a

    ) the page will be\n // inadvertently enlarged by that number (the browser will report the container's\n // bounding box top to start at the element's top, rather than including its\n // margin). Adding overflow: hidden seems to fix it.\n //\n // to understand the difference, try the following snippets in your browser:\n //\n // 1.
    \n //

    Foo

    \n //
    \n //\n // 2.
    \n //

    Foo

    \n //
    \n //\n // this detail is not important when automatic page breaking is not requested, hence\n // doing it only if pageWidth is defined.\n setCSS(copy, { overflow: \"hidden\" });\n }\n\n element.parentNode.insertBefore(container, element);\n container.appendChild(copy);\n\n // we need the timeouts here, so that images dimensions are\n // properly computed in DOM when we start our thing.\n if (options.beforePageBreak) {\n setTimeout(function(){\n options.beforePageBreak(container, doPageBreak);\n }, 15);\n } else {\n setTimeout(doPageBreak, 15);\n }\n\n function doPageBreak() {\n if (forceBreak != \"-\" || pageHeight) {\n splitElement(copy);\n }\n\n {\n var page = makePage();\n copy.parentNode.insertBefore(page, copy);\n page.appendChild(copy);\n }\n\n if (template) {\n pages.forEach(function(page, i){\n var el = template({\n element : page,\n pageNum : i + 1,\n totalPages : pages.length\n });\n if (el) {\n page.appendChild(el);\n }\n });\n }\n\n cacheImages(pages, function() {\n // Even though we already cached images, they simply won't be available\n // immediately in the newly created DOM. Previously we'd allow a 10ms timeout,\n // but that's arbitrary and clearly not working in all cases\n // (https://github.com/telerik/kendo/issues/5399), so this function will wait\n // for their .complete attribute.\n whenImagesAreActuallyLoaded(pages, function(){\n callback({ pages: pages, container: container });\n });\n });\n }\n\n function keepTogether(el) {\n if (options.keepTogether && matches(el, options.keepTogether) && el.offsetHeight <= pageHeight - adjust) {\n return true;\n }\n\n var tag = el.tagName;\n if (/^h[1-6]$/i.test(tag) && el.offsetHeight >= pageHeight - adjust) {\n return false;\n }\n\n return (el.getAttribute(\"data-kendo-chart\") ||\n /^(?:img|tr|thead|th|tfoot|iframe|svg|object|canvas|input|textarea|select|video|h[1-6])/i.test(el.tagName));\n }\n\n function splitElement(element) {\n if (element.tagName == \"TABLE\") {\n setCSS(element, { tableLayout: \"fixed\" });\n }\n if (keepTogether(element)) {\n return;\n }\n var style = getComputedStyle(element);\n var bottomPadding = parseFloat(getPropertyValue(style, \"padding-bottom\"));\n var bottomBorder = parseFloat(getPropertyValue(style, \"border-bottom-width\"));\n var saveAdjust = adjust;\n adjust += bottomPadding + bottomBorder;\n var isFirst = true;\n for (var el = element.firstChild; el; el = el.nextSibling) {\n if (el.nodeType == 1 /* Element */) {\n isFirst = false;\n if (matches(el, forceBreak)) {\n breakAtElement(el);\n continue;\n }\n if (!pageHeight) {\n // we're in \"manual breaks mode\"\n splitElement(el);\n continue;\n }\n if (!/^(?:static|relative)$/.test(getPropertyValue(getComputedStyle(el), \"position\"))) {\n continue;\n }\n var fall = fallsOnMargin(el);\n if (fall == 1) {\n // element starts on next page, break before anyway.\n breakAtElement(el);\n }\n else if (fall) {\n // elements ends up on next page, or possibly doesn't fit on a page at\n // all. break before it anyway if it's an or , otherwise\n // attempt to split.\n if (keepTogether(el)) {\n breakAtElement(el);\n } else {\n splitElement(el);\n }\n }\n else {\n splitElement(el);\n }\n }\n else if (el.nodeType == 3 /* Text */ && pageHeight) {\n splitText(el, isFirst);\n isFirst = false;\n }\n }\n adjust = saveAdjust;\n }\n\n function firstInParent(el) {\n var p = el.parentNode, first = p.firstChild;\n if (el === first) {\n return true;\n }\n if (el === p.children[0]) {\n if (first.nodeType == 7 /* comment */ ||\n first.nodeType == 8 /* processing instruction */) {\n return true;\n }\n if (first.nodeType == 3 /* text */) {\n // if whitespace only we can probably consider it's first\n return !/\\S/.test(first.data);\n }\n }\n return false;\n }\n\n function breakAtElement(el) {\n if (el.nodeType == 1 && el !== copy && firstInParent(el)) {\n return breakAtElement(el.parentNode);\n }\n var table, colgroup, thead, grid, gridHead;\n table = closest(el, \"table\");\n colgroup = table && table.querySelector(\"colgroup\");\n if (options.repeatHeaders) {\n thead = table && table.querySelector(\"thead\");\n\n // If we break page in a Kendo Grid, repeat its header. This ugly hack is\n // necessary because a scrollable grid will keep the header in a separate\n // element from its content.\n //\n // XXX: This is likely to break as soon as the widget HTML is modified.\n grid = closest(el, \".k-grid.k-widget\");\n if (grid && grid.querySelector(\".k-auto-scrollable\")) {\n gridHead = grid.querySelector(\".k-grid-header\");\n }\n }\n var page = makePage();\n var range = doc.createRange();\n range.setStartBefore(copy);\n range.setEndBefore(el);\n page.appendChild(range.extractContents());\n copy.parentNode.insertBefore(page, copy);\n preventBulletOnListItem(el.parentNode);\n if (table) {\n table = closest(el, \"table\"); // that's the
    on next page!\n if (options.repeatHeaders && thead) {\n table.insertBefore(thead.cloneNode(true), table.firstChild);\n }\n if (colgroup) {\n table.insertBefore(colgroup.cloneNode(true), table.firstChild);\n }\n }\n if (options.repeatHeaders && gridHead) {\n grid = closest(el, \".k-grid.k-widget\");\n grid.insertBefore(gridHead.cloneNode(true), grid.firstChild);\n }\n }\n\n function makePage() {\n var page = doc.createElement(\"KENDO-PDF-PAGE\");\n setCSS(page, {\n display : \"block\",\n boxSizing: \"content-box\",\n width : pageWidth ? (pageWidth + \"px\") : \"auto\",\n padding : (margin.top + \"px \" +\n margin.right + \"px \" +\n margin.bottom + \"px \" +\n margin.left + \"px\"),\n\n // allow absolutely positioned elements to be relative to current page\n position : \"relative\",\n\n // without the following we might affect layout of subsequent pages\n height : pageHeight ? (pageHeight + \"px\") : \"auto\",\n overflow : pageHeight || pageWidth ? \"hidden\" : \"visible\",\n clear : \"both\"\n });\n\n // debug\n // $(\"
    \").css({\n // position : \"absolute\",\n // left : margin.left,\n // top : margin.top,\n // width : pageWidth,\n // height : pageHeight,\n // boxSizing : \"border-box\",\n // background: \"rgba(255, 255, 0, 0.5)\"\n // //border : \"1px solid red\"\n // }).appendTo(page);\n\n if (options && options.pageClassName) {\n page.className = options.pageClassName;\n }\n pages.push(page);\n return page;\n }\n\n function fallsOnMargin(thing) {\n var box = thing.getBoundingClientRect();\n if (box.width === 0 || box.height === 0) {\n // I'd say an element with dimensions zero fits on current page.\n return 0;\n }\n var top = copy.getBoundingClientRect().top;\n var available = pageHeight - adjust;\n return (box.height > available) ? 3\n : (box.top - top > available) ? 1\n : (box.bottom - top > available) ? 2\n : 0;\n }\n\n function splitText(node, isFirst) {\n if (!/\\S/.test(node.data)) {\n return;\n }\n\n var len = node.data.length;\n var range = doc.createRange();\n range.selectNodeContents(node);\n var fall = fallsOnMargin(range);\n if (!fall) {\n return; // the whole text fits on current page\n }\n\n var nextnode = node;\n if (fall == 1) {\n // starts on next page, break before anyway.\n if (isFirst) {\n // avoid leaving an empty

    ,

  • , etc. on previous page.\n breakAtElement(node.parentNode);\n } else {\n breakAtElement(node);\n }\n }\n else {\n (function findEOP(min, pos, max) {\n range.setEnd(node, pos);\n if (min == pos || pos == max) {\n return pos;\n }\n if (fallsOnMargin(range)) {\n return findEOP(min, (min + pos) >> 1, pos);\n } else {\n return findEOP(pos, (pos + max) >> 1, max);\n }\n })(0, len >> 1, len);\n\n if (!/\\S/.test(range.toString()) && isFirst) {\n // avoid leaving an empty

    ,

  • , etc. on previous page.\n breakAtElement(node.parentNode);\n } else {\n // This is only needed for IE, but it feels cleaner to do it anyway. Without\n // it, IE will truncate a very long text (playground/pdf-long-text-2.html).\n nextnode = node.splitText(range.endOffset);\n\n var page = makePage();\n range.setStartBefore(copy);\n page.appendChild(range.extractContents());\n copy.parentNode.insertBefore(page, copy);\n preventBulletOnListItem(nextnode.parentNode);\n }\n }\n\n splitText(nextnode);\n }\n\n function preventBulletOnListItem(el) {\n // set a hint on continued LI elements, to tell the\n // renderer not to draw the bullet again.\n // https://github.com/telerik/kendo-ui-core/issues/2732\n var li = closest(el, \"li\");\n if (li) {\n li.setAttribute(\"kendo-no-bullet\", \"1\");\n preventBulletOnListItem(li.parentNode);\n }\n }\n }\n\n return promise;\n}\n\ndrawDOM.getFontFaces = getFontFaces;\n\n// This is needed for the Spreadsheet print functionality. Since\n// there we only need to draw text, this cuts through the ceremony\n// of drawDOM/renderElement and renders the text node directly.\ndrawDOM.drawText = function(element) {\n var group = new Group();\n nodeInfo._clipbox = false;\n nodeInfo._matrix = geo.Matrix.unit();\n nodeInfo._stackingContext = {\n element: element,\n group: group\n };\n pushNodeInfo(element, getComputedStyle(element), group);\n if (element.firstChild.nodeType == 3 /* Text */) {\n // avoid the penalty of renderElement\n renderText(element, element.firstChild, group);\n } else {\n _renderElement(element, group);\n }\n popNodeInfo();\n return group;\n};\n\nvar parseBackgroundImage = (function(){\n var tok_linear_gradient = /^((-webkit-|-moz-|-o-|-ms-)?linear-gradient\\s*)\\(/;\n //var tok_radial_gradient = /^((-webkit-|-moz-|-o-|-ms-)?radial-gradient\\s*)\\(/;\n var tok_percent = /^([-0-9.]+%)/;\n var tok_length = /^([-0-9.]+px)/;\n var tok_keyword = /^(left|right|top|bottom|to|center)\\W/;\n var tok_angle = /^([-0-9.]+(deg|grad|rad|turn)|0)/;\n var tok_whitespace = /^(\\s+)/;\n var tok_popen = /^(\\()/;\n var tok_pclose = /^(\\))/;\n var tok_comma = /^(,)/;\n var tok_url = /^(url)\\(/;\n var tok_content = /^(.*?)\\)/;\n\n var cache1 = {}, cache2 = {};\n\n function parse(input) {\n var orig = input;\n if (hasOwnProperty(cache1, orig)) {\n return cache1[orig];\n }\n function skip_ws() {\n var m = tok_whitespace.exec(input);\n if (m) {\n input = input.substr(m[1].length);\n }\n }\n function read(token) {\n skip_ws();\n var m = token.exec(input);\n if (m) {\n input = input.substr(m[1].length);\n return m[1];\n }\n }\n\n function read_stop() {\n var color = utils_parseColor(input, true);\n var length, percent;\n if (color) {\n var match =\n /^#[0-9a-f]+/i.exec(input) ||\n /^rgba?\\(.*?\\)/i.exec(input) ||\n /^..*?\\b/.exec(input); // maybe named color\n input = input.substr(match[0].length);\n color = color.toRGB();\n if (!(length = read(tok_length))) {\n percent = read(tok_percent);\n }\n return { color: color, length: length, percent: percent };\n }\n }\n\n function read_linear_gradient(propName) {\n var angle;\n var to1, to2;\n var stops = [];\n var reverse = false;\n\n if (read(tok_popen)) {\n // 1. [ || to , ]?\n angle = read(tok_angle);\n if (angle == \"0\") {\n angle = \"0deg\"; // Edge\n }\n if (angle) {\n angle = parseAngle(angle);\n read(tok_comma);\n }\n else {\n to1 = read(tok_keyword);\n if (to1 == \"to\") {\n to1 = read(tok_keyword);\n } else if (to1 && /^-/.test(propName)) {\n reverse = true;\n }\n to2 = read(tok_keyword);\n read(tok_comma);\n }\n\n if (/-moz-/.test(propName) && angle == null && to1 == null) {\n var x = read(tok_percent), y = read(tok_percent);\n reverse = true;\n if (x == \"0%\") {\n to1 = \"left\";\n } else if (x == \"100%\") {\n to1 = \"right\";\n }\n if (y == \"0%\") {\n to2 = \"top\";\n } else if (y == \"100%\") {\n to2 = \"bottom\";\n }\n read(tok_comma);\n }\n\n // 2. color stops\n while (input && !read(tok_pclose)) {\n var stop = read_stop();\n if (!stop) {\n break;\n }\n stops.push(stop);\n read(tok_comma);\n }\n\n return {\n type : \"linear\",\n angle : angle,\n to : to1 && to2 ? to1 + \" \" + to2 : to1 ? to1 : to2 ? to2 : null,\n stops : stops,\n reverse : reverse\n };\n }\n }\n\n function read_url() {\n if (read(tok_popen)) {\n var url = read(tok_content);\n url = url.replace(/^['\"]+|[\"']+$/g, \"\");\n read(tok_pclose);\n return { type: \"url\", url: url };\n }\n }\n\n var tok;\n\n if ((tok = read(tok_linear_gradient))) {\n tok = read_linear_gradient(tok);\n }\n else if ((tok = read(tok_url))) {\n tok = read_url();\n }\n\n return (cache1[orig] = tok || { type: \"none\" });\n }\n\n return function(input) {\n if (hasOwnProperty(cache2, input)) {\n return cache2[input];\n }\n return (cache2[input] = splitProperty(input).map(parse));\n };\n})();\n\nvar splitProperty = (function(){\n var cache = {};\n return function(input, separator) {\n if (!separator) {\n separator = /^\\s*,\\s*/;\n }\n\n var cacheKey = input + separator;\n\n if (hasOwnProperty(cache, cacheKey)) {\n return cache[cacheKey];\n }\n\n var ret = [];\n var last = 0, pos = 0;\n var in_paren = 0;\n var in_string = false;\n var m;\n\n function looking_at(rx) {\n return (m = rx.exec(input.substr(pos)));\n }\n\n function trim(str) {\n return str.replace(/^\\s+|\\s+$/g, \"\");\n }\n\n while (pos < input.length) {\n if (!in_string && looking_at(/^[\\(\\[\\{]/)) {\n in_paren++;\n pos++;\n }\n else if (!in_string && looking_at(/^[\\)\\]\\}]/)) {\n in_paren--;\n pos++;\n }\n else if (!in_string && looking_at(/^[\\\"\\']/)) {\n in_string = m[0];\n pos++;\n }\n else if (in_string == \"'\" && looking_at(/^\\\\\\'/)) {\n pos += 2;\n }\n else if (in_string == '\"' && looking_at(/^\\\\\\\"/)) {\n pos += 2;\n }\n else if (in_string == \"'\" && looking_at(/^\\'/)) {\n in_string = false;\n pos++;\n }\n else if (in_string == '\"' && looking_at(/^\\\"/)) {\n in_string = false;\n pos++;\n }\n else if (looking_at(separator)) {\n if (!in_string && !in_paren && pos > last) {\n ret.push(trim(input.substring(last, pos)));\n last = pos + m[0].length;\n }\n pos += m[0].length;\n }\n else {\n pos++;\n }\n }\n if (last < pos) {\n ret.push(trim(input.substring(last, pos)));\n }\n return (cache[cacheKey] = ret);\n };\n})();\n\nvar getFontURL = (function(cache){\n return function(el){\n // XXX: for IE we get here the whole cssText of the rule,\n // because the computedStyle.src is empty. Next time we need\n // to fix these regexps we better write a CSS parser. :-\\\n var url = cache[el];\n if (!url) {\n var m;\n if ((m = /url\\((['\"]?)([^'\")]*?)\\1\\)\\s+format\\((['\"]?)truetype\\3\\)/.exec(el))) {\n url = cache[el] = m[2];\n } else if ((m = /url\\((['\"]?)([^'\")]*?\\.ttf)\\1\\)/.exec(el))) {\n url = cache[el] = m[2];\n }\n }\n return url;\n };\n})(Object.create(null));\n\nvar getFontHeight = (function(cache){\n return function(font) {\n var height = cache[font];\n if (height == null) {\n height = cache[font] = measureText(\"Mapq\", { font: font }).height;\n }\n return height;\n };\n})(Object.create(null));\n\nfunction getFontFaces(doc) {\n if (doc == null) {\n doc = document;\n }\n var result = {};\n for (var i = 0; i < doc.styleSheets.length; ++i) {\n doStylesheet(doc.styleSheets[i]);\n }\n return result;\n function doStylesheet(ss) {\n if (ss) {\n var rules = null;\n try {\n rules = ss.cssRules;\n } catch (ex) {}\n if (rules) {\n addRules(ss, rules);\n }\n }\n }\n function findFonts(rule) {\n var src = getPropertyValue(rule.style, \"src\");\n if (src) {\n return splitProperty(src).reduce(function(a, el){\n var font = getFontURL(el);\n if (font) {\n a.push(font);\n }\n return a;\n }, []);\n } else {\n // Internet Explorer\n // XXX: this is gross. should work though for valid CSS.\n var font = getFontURL(rule.cssText);\n return font ? [ font ] : [];\n }\n }\n function addRules(styleSheet, rules) {\n for (var i = 0; i < rules.length; ++i) {\n var r = rules[i];\n switch (r.type) {\n case 3: // CSSImportRule\n doStylesheet(r.styleSheet);\n break;\n case 5: // CSSFontFaceRule\n var style = r.style;\n var family = splitProperty(getPropertyValue(style, \"font-family\"));\n var bold = /^([56789]00|bold)$/i.test(getPropertyValue(style, \"font-weight\"));\n var italic = \"italic\" == getPropertyValue(style, \"font-style\");\n var src = findFonts(r);\n if (src.length > 0) {\n addRule(styleSheet, family, bold, italic, src[0]);\n }\n }\n }\n }\n function addRule(styleSheet, names, bold, italic, url) {\n // We get full resolved absolute URLs in Chrome, but sadly\n // not in Firefox.\n if (!(/^data:/i.test(url))) {\n if (!(/^[^\\/:]+:\\/\\//.test(url) || /^\\//.test(url))) {\n url = String(styleSheet.href).replace(/[^\\/]*$/, \"\") + url;\n }\n }\n names.forEach(function(name){\n name = name.replace(/^(['\"]?)(.*?)\\1$/, \"$2\"); // it's quoted\n if (bold) {\n name += \"|bold\";\n }\n if (italic) {\n name += \"|italic\";\n }\n result[name] = url;\n });\n }\n}\n\nfunction hasOwnProperty(obj, key) {\n return Object.prototype.hasOwnProperty.call(obj, key);\n}\n\nfunction getCounter(name) {\n name = \"_counter_\" + name;\n return nodeInfo[name];\n}\n\nfunction getAllCounters(name) {\n var values = [], p = nodeInfo;\n name = \"_counter_\" + name;\n while (p) {\n if (hasOwnProperty(p, name)) {\n values.push(p[name]);\n }\n p = Object.getPrototypeOf(p);\n }\n return values.reverse();\n}\n\nfunction incCounter(name, inc) {\n var p = nodeInfo;\n name = \"_counter_\" + name;\n while (p && !hasOwnProperty(p, name)) {\n p = Object.getPrototypeOf(p);\n }\n if (!p) {\n p = nodeInfo._root;\n }\n p[name] = (p[name] || 0) + (inc == null ? 1 : inc);\n}\n\nfunction resetCounter(name, val) {\n name = \"_counter_\" + name;\n nodeInfo[name] = val == null ? 0 : val;\n}\n\nfunction doCounters(a, f, def) {\n for (var i = 0; i < a.length;) {\n var name = a[i++];\n var val = parseFloat(a[i]);\n if (isNaN(val)) {\n f(name, def);\n } else {\n f(name, val);\n ++i;\n }\n }\n}\n\nfunction updateCounters(style) {\n var counterReset = getPropertyValue(style, \"counter-reset\");\n if (counterReset) {\n doCounters(splitProperty(counterReset, /^\\s+/), resetCounter, 0);\n }\n var counterIncrement = getPropertyValue(style, \"counter-increment\");\n if (counterIncrement) {\n doCounters(splitProperty(counterIncrement, /^\\s+/), incCounter, 1);\n }\n}\n\nfunction parseColor(str, css) {\n var color = utils_parseColor(str, true);\n if (color) {\n color = color.toRGB();\n if (css) {\n color = color.toCssRgba();\n } else if (color.a === 0) {\n color = null;\n }\n }\n return color;\n}\n\nfunction whenImagesAreActuallyLoaded(elements, callback) {\n var pending = 0;\n elements.forEach(function(el){\n var images = el.querySelectorAll(\"img\");\n for (var i = 0; i < images.length; ++i) {\n var img = images[i];\n if (!img.complete) {\n pending++;\n img.onload = img.onerror = next;\n }\n }\n });\n if (!pending) {\n next();\n }\n function next() {\n if (--pending <= 0) {\n callback();\n }\n }\n}\n\nfunction cacheImages(element, callback) {\n var urls = [];\n function add(url) {\n if (!IMAGE_CACHE[url]) {\n IMAGE_CACHE[url] = true;\n urls.push(url);\n }\n }\n function dive(element){\n if (/^img$/i.test(element.tagName)) {\n add(element.src);\n }\n parseBackgroundImage(\n getPropertyValue(\n getComputedStyle(element), \"background-image\"\n )\n ).forEach(function(bg){\n if (bg.type == \"url\") {\n add(bg.url);\n }\n });\n\n if (element.children) {\n slice(element.children).forEach(dive);\n }\n }\n\n if (Array.isArray(element)) {\n element.forEach(dive);\n } else {\n dive(element);\n }\n\n var count = urls.length;\n function next() {\n if (--count <= 0) {\n callback();\n }\n }\n if (count === 0) {\n next();\n }\n urls.forEach(function(url){\n var img = IMAGE_CACHE[url] = new window.Image();\n if (!(/^data:/i.test(url))) {\n img.crossOrigin = \"Anonymous\";\n }\n img.src = url;\n if (img.complete) {\n next();\n } else {\n img.onload = next;\n img.onerror = function() {\n IMAGE_CACHE[url] = null;\n next();\n };\n }\n });\n}\n\nfunction alphaNumeral(n) {\n var result = \"\";\n do {\n var r = n % 26;\n result = String.fromCharCode(97 + r) + result;\n n = Math.floor(n / 26);\n } while (n > 0);\n return result;\n}\n\nfunction pushNodeInfo(element, style, group) {\n nodeInfo = Object.create(nodeInfo);\n nodeInfo[element.tagName.toLowerCase()] = {\n element: element,\n style: style\n };\n var decoration = getPropertyValue(style, \"text-decoration\");\n if (decoration && decoration != \"none\") {\n var color = getPropertyValue(style, \"color\");\n decoration.split(/\\s+/g).forEach(function(name){\n if (!nodeInfo[name]) {\n nodeInfo[name] = color;\n }\n });\n }\n\n if (createsStackingContext(style)) {\n nodeInfo._stackingContext = {\n element: element,\n group: group\n };\n }\n}\n\nfunction popNodeInfo() {\n nodeInfo = Object.getPrototypeOf(nodeInfo);\n}\n\nfunction updateClipbox(path) {\n if (nodeInfo._clipbox != null) {\n var box = path.bbox(nodeInfo._matrix);\n if (nodeInfo._clipbox) {\n nodeInfo._clipbox = geo.Rect.intersect(nodeInfo._clipbox, box);\n } else {\n nodeInfo._clipbox = box;\n }\n }\n}\n\nfunction emptyClipbox() {\n var cb = nodeInfo._clipbox;\n if (cb == null) {\n return true;\n }\n if (cb) {\n return cb.width() === 0 || cb.height() === 0;\n }\n}\n\nfunction createsStackingContext(style) {\n function prop(name) { return getPropertyValue(style, name); }\n if (prop(\"transform\") != \"none\" ||\n prop(\"position\") != \"static\" ||\n prop(\"z-index\") != \"auto\" ||\n prop(\"opacity\") < 1) {\n return true;\n }\n}\n\nfunction getComputedStyle(element, pseudoElt) {\n return window.getComputedStyle(element, pseudoElt || null);\n}\n\nfunction getPropertyValue(style, prop, defa) {\n var val = style.getPropertyValue(prop);\n if (val == null || val === \"\") {\n if (browser.webkit) {\n val = style.getPropertyValue(\"-webkit-\" + prop );\n } else if (browser.mozilla) {\n val = style.getPropertyValue(\"-moz-\" + prop );\n } else if (browser.opera) {\n val = style.getPropertyValue(\"-o-\" + prop);\n } else if (microsoft) {\n val = style.getPropertyValue(\"-ms-\" + prop);\n }\n }\n if (arguments.length > 2 && (val == null || val === \"\")) {\n return defa;\n } else {\n return val;\n }\n}\n\nfunction pleaseSetPropertyValue(style, prop, value, important) {\n style.setProperty(prop, value, important);\n if (browser.webkit) {\n style.setProperty(\"-webkit-\" + prop, value, important);\n } else if (browser.mozilla) {\n style.setProperty(\"-moz-\" + prop, value, important);\n } else if (browser.opera) {\n style.setProperty(\"-o-\" + prop, value, important);\n } else if (microsoft) {\n style.setProperty(\"-ms-\" + prop, value, important);\n prop = \"ms\" + prop.replace(/(^|-)([a-z])/g, function(s, p1, p2){\n return p1 + p2.toUpperCase();\n });\n style[prop] = value;\n }\n}\n\nfunction getBorder(style, side) {\n side = \"border-\" + side;\n return {\n width: parseFloat(getPropertyValue(style, side + \"-width\")),\n style: getPropertyValue(style, side + \"-style\"),\n color: parseColor(getPropertyValue(style, side + \"-color\"), true)\n };\n}\n\nfunction saveStyle(element, func) {\n var prev = element.style.cssText;\n var result = func();\n element.style.cssText = prev;\n return result;\n}\n\nfunction getBorderRadius(style, side) {\n var r = getPropertyValue(style, \"border-\" + side + \"-radius\").split(/\\s+/g).map(parseFloat);\n if (r.length == 1) {\n r.push(r[0]);\n }\n return sanitizeRadius({ x: r[0], y: r[1] });\n}\n\nfunction getContentBox(element) {\n var box = element.getBoundingClientRect();\n box = innerBox(box, \"border-*-width\", element);\n box = innerBox(box, \"padding-*\", element);\n return box;\n}\n\nfunction innerBox(box, prop, element) {\n var style, wt, wr, wb, wl;\n if (typeof prop == \"string\") {\n style = getComputedStyle(element);\n wt = parseFloat(getPropertyValue(style, prop.replace(\"*\", \"top\")));\n wr = parseFloat(getPropertyValue(style, prop.replace(\"*\", \"right\")));\n wb = parseFloat(getPropertyValue(style, prop.replace(\"*\", \"bottom\")));\n wl = parseFloat(getPropertyValue(style, prop.replace(\"*\", \"left\")));\n }\n else if (typeof prop == \"number\") {\n wt = wr = wb = wl = prop;\n }\n return {\n top : box.top + wt,\n right : box.right - wr,\n bottom : box.bottom - wb,\n left : box.left + wl,\n width : box.right - box.left - wr - wl,\n height : box.bottom - box.top - wb - wt\n };\n}\n\nfunction getTransform(style) {\n var transform = getPropertyValue(style, \"transform\");\n if (transform == \"none\") {\n return null;\n }\n var matrix = /^\\s*matrix\\(\\s*(.*?)\\s*\\)\\s*$/.exec(transform);\n if (matrix) {\n var origin = getPropertyValue(style, \"transform-origin\");\n matrix = matrix[1].split(/\\s*,\\s*/g).map(parseFloat);\n origin = origin.split(/\\s+/g).map(parseFloat);\n return {\n matrix: matrix,\n origin: origin\n };\n }\n}\n\nfunction radiansToDegrees(radians) {\n return ((180 * radians) / Math.PI) % 360;\n}\n\nfunction parseAngle(angle) {\n var num = parseFloat(angle);\n if (/grad$/.test(angle)) {\n return Math.PI * num / 200;\n }\n else if (/rad$/.test(angle)) {\n return num;\n }\n else if (/turn$/.test(angle)) {\n return Math.PI * num * 2;\n }\n else if (/deg$/.test(angle)) {\n return Math.PI * num / 180;\n }\n}\n\nfunction setTransform(shape, m) {\n m = new geo.Matrix(m[0], m[1], m[2], m[3], m[4], m[5]);\n shape.transform(m);\n return m;\n}\n\nfunction setClipping(shape, clipPath) {\n shape.clip(clipPath);\n}\n\nfunction addArcToPath(path, x, y, options) {\n var points = new geo.Arc([ x, y ], options).curvePoints(), i = 1;\n while (i < points.length) {\n path.curveTo(points[i++], points[i++], points[i++]);\n }\n}\n\nfunction sanitizeRadius(r) {\n if (r.x <= 0 || r.y <= 0) {\n r.x = r.y = 0;\n }\n return r;\n}\n\nfunction adjustBorderRadiusForBox(box, rTL, rTR, rBR, rBL) {\n // adjust border radiuses such that the sum of adjacent\n // radiuses is not bigger than the length of the side.\n // seems the correct algorithm is variant (3) from here:\n // http://www.w3.org/Style/CSS/Tracker/issues/29?changelog\n var tl_x = Math.max(0, rTL.x), tl_y = Math.max(0, rTL.y);\n var tr_x = Math.max(0, rTR.x), tr_y = Math.max(0, rTR.y);\n var br_x = Math.max(0, rBR.x), br_y = Math.max(0, rBR.y);\n var bl_x = Math.max(0, rBL.x), bl_y = Math.max(0, rBL.y);\n\n var f = Math.min(\n box.width / (tl_x + tr_x),\n box.height / (tr_y + br_y),\n box.width / (br_x + bl_x),\n box.height / (bl_y + tl_y)\n );\n\n if (f < 1) {\n tl_x *= f; tl_y *= f;\n tr_x *= f; tr_y *= f;\n br_x *= f; br_y *= f;\n bl_x *= f; bl_y *= f;\n }\n\n return {\n tl: { x: tl_x, y: tl_y },\n tr: { x: tr_x, y: tr_y },\n br: { x: br_x, y: br_y },\n bl: { x: bl_x, y: bl_y }\n };\n}\n\nfunction elementRoundBox(element, box, type) {\n var style = getComputedStyle(element);\n\n var rTL = getBorderRadius(style, \"top-left\");\n var rTR = getBorderRadius(style, \"top-right\");\n var rBL = getBorderRadius(style, \"bottom-left\");\n var rBR = getBorderRadius(style, \"bottom-right\");\n\n if (type == \"padding\" || type == \"content\") {\n var bt = getBorder(style, \"top\");\n var br = getBorder(style, \"right\");\n var bb = getBorder(style, \"bottom\");\n var bl = getBorder(style, \"left\");\n rTL.x -= bl.width; rTL.y -= bt.width;\n rTR.x -= br.width; rTR.y -= bt.width;\n rBR.x -= br.width; rBR.y -= bb.width;\n rBL.x -= bl.width; rBL.y -= bb.width;\n if (type == \"content\") {\n var pt = parseFloat(getPropertyValue(style, \"padding-top\"));\n var pr = parseFloat(getPropertyValue(style, \"padding-right\"));\n var pb = parseFloat(getPropertyValue(style, \"padding-bottom\"));\n var pl = parseFloat(getPropertyValue(style, \"padding-left\"));\n rTL.x -= pl; rTL.y -= pt;\n rTR.x -= pr; rTR.y -= pt;\n rBR.x -= pr; rBR.y -= pb;\n rBL.x -= pl; rBL.y -= pb;\n }\n }\n\n if (typeof type == \"number\") {\n rTL.x -= type; rTL.y -= type;\n rTR.x -= type; rTR.y -= type;\n rBR.x -= type; rBR.y -= type;\n rBL.x -= type; rBL.y -= type;\n }\n\n return roundBox(box, rTL, rTR, rBR, rBL);\n}\n\n// Create a drawing.Path for a rounded rectangle. Receives the\n// bounding box and the border-radiuses in CSS order (top-left,\n// top-right, bottom-right, bottom-left). The radiuses must be\n// objects containing x (horiz. radius) and y (vertical radius).\nfunction roundBox(box, rTL0, rTR0, rBR0, rBL0) {\n var tmp = adjustBorderRadiusForBox(box, rTL0, rTR0, rBR0, rBL0);\n var rTL = tmp.tl;\n var rTR = tmp.tr;\n var rBR = tmp.br;\n var rBL = tmp.bl;\n var path = new Path({ fill: null, stroke: null });\n path.moveTo(box.left, box.top + rTL.y);\n if (rTL.x) {\n addArcToPath(path, box.left + rTL.x, box.top + rTL.y, {\n startAngle: -180,\n endAngle: -90,\n radiusX: rTL.x,\n radiusY: rTL.y\n });\n }\n path.lineTo(box.right - rTR.x, box.top);\n if (rTR.x) {\n addArcToPath(path, box.right - rTR.x, box.top + rTR.y, {\n startAngle: -90,\n endAngle: 0,\n radiusX: rTR.x,\n radiusY: rTR.y\n });\n }\n path.lineTo(box.right, box.bottom - rBR.y);\n if (rBR.x) {\n addArcToPath(path, box.right - rBR.x, box.bottom - rBR.y, {\n startAngle: 0,\n endAngle: 90,\n radiusX: rBR.x,\n radiusY: rBR.y\n });\n }\n path.lineTo(box.left + rBL.x, box.bottom);\n if (rBL.x) {\n addArcToPath(path, box.left + rBL.x, box.bottom - rBL.y, {\n startAngle: 90,\n endAngle: 180,\n radiusX: rBL.x,\n radiusY: rBL.y\n });\n }\n return path.close();\n}\n\nfunction formatCounter(val, style) {\n var str = String(parseFloat(val));\n switch (style) {\n case \"decimal-leading-zero\":\n if (str.length < 2) {\n str = \"0\" + str;\n }\n return str;\n case \"lower-roman\":\n return arabicToRoman(val).toLowerCase();\n case \"upper-roman\":\n return arabicToRoman(val).toUpperCase();\n case \"lower-latin\":\n case \"lower-alpha\":\n return alphaNumeral(val - 1);\n case \"upper-latin\":\n case \"upper-alpha\":\n return alphaNumeral(val - 1).toUpperCase();\n default:\n return str;\n }\n}\n\nfunction evalPseudoElementContent(element, content) {\n function displayCounter(name, style, separator) {\n if (!separator) {\n return formatCounter(getCounter(name) || 0, style);\n }\n separator = separator.replace(/^\\s*([\"'])(.*)\\1\\s*$/, \"$2\");\n return getAllCounters(name).map(function(val){\n return formatCounter(val, style);\n }).join(separator);\n }\n var a = splitProperty(content, /^\\s+/);\n var result = [], m;\n a.forEach(function(el){\n var tmp;\n if ((m = /^\\s*([\"'])(.*)\\1\\s*$/.exec(el))) {\n result.push(m[2].replace(/\\\\([0-9a-f]{4})/gi, function(s, p){\n return String.fromCharCode(parseInt(p, 16));\n }));\n }\n else if ((m = /^\\s*counter\\((.*?)\\)\\s*$/.exec(el))) {\n tmp = splitProperty(m[1]);\n result.push(displayCounter(tmp[0], tmp[1]));\n }\n else if ((m = /^\\s*counters\\((.*?)\\)\\s*$/.exec(el))) {\n tmp = splitProperty(m[1]);\n result.push(displayCounter(tmp[0], tmp[2], tmp[1]));\n }\n else if ((m = /^\\s*attr\\((.*?)\\)\\s*$/.exec(el))) {\n result.push(element.getAttribute(m[1]) || \"\");\n }\n else {\n result.push(el);\n }\n });\n return result.join(\"\");\n}\n\nfunction getCssText(style) {\n if (style.cssText) {\n return style.cssText;\n }\n // Status: NEW. Report year: 2002. Current year: 2014.\n // Nice played, Mozillians.\n // https://bugzilla.mozilla.org/show_bug.cgi?id=137687\n var result = [];\n for (var i = 0; i < style.length; ++i) {\n result.push(style[i] + \": \" + getPropertyValue(style, style[i]));\n }\n return result.join(\";\\n\");\n}\n\nfunction _renderWithPseudoElements(element, group) {\n if (element.tagName == KENDO_PSEUDO_ELEMENT) {\n _renderElement(element, group);\n return;\n }\n var fake = [];\n function pseudo(kind, place) {\n var style = getComputedStyle(element, kind), content = style.content;\n updateCounters(style);\n if (content && content != \"normal\" && content != \"none\" && style.width != \"0px\") {\n var psel = element.ownerDocument.createElement(KENDO_PSEUDO_ELEMENT);\n psel.style.cssText = getCssText(style);\n psel.textContent = evalPseudoElementContent(element, content);\n element.insertBefore(psel, place);\n fake.push(psel);\n }\n }\n pseudo(\":before\", element.firstChild);\n pseudo(\":after\", null);\n if (fake.length > 0) {\n var saveClass = element.className;\n element.className += \" kendo-pdf-hide-pseudo-elements\";\n _renderElement(element, group);\n element.className = saveClass;\n fake.forEach(function(el){ element.removeChild(el); });\n } else {\n _renderElement(element, group);\n }\n}\n\nfunction _renderElement(element, group) {\n var style = getComputedStyle(element);\n\n var top = getBorder(style, \"top\");\n var right = getBorder(style, \"right\");\n var bottom = getBorder(style, \"bottom\");\n var left = getBorder(style, \"left\");\n\n var rTL0 = getBorderRadius(style, \"top-left\");\n var rTR0 = getBorderRadius(style, \"top-right\");\n var rBL0 = getBorderRadius(style, \"bottom-left\");\n var rBR0 = getBorderRadius(style, \"bottom-right\");\n\n var dir = getPropertyValue(style, \"direction\");\n\n var backgroundColor = getPropertyValue(style, \"background-color\");\n backgroundColor = parseColor(backgroundColor);\n\n var backgroundImage = parseBackgroundImage( getPropertyValue(style, \"background-image\") );\n var backgroundRepeat = splitProperty( getPropertyValue(style, \"background-repeat\") );\n var backgroundPosition = splitProperty( getPropertyValue(style, \"background-position\") );\n var backgroundOrigin = splitProperty( getPropertyValue(style, \"background-origin\") );\n var backgroundSize = splitProperty( getPropertyValue(style, \"background-size\") );\n\n // IE shrinks the text with text-overflow: ellipsis,\n // apparently because the returned bounding box for the range\n // is limited to the visible area minus space for the dots,\n // instead of being the full width of the text.\n //\n // https://github.com/telerik/kendo/issues/5232\n // https://github.com/telerik/kendo-ui-core/issues/1868\n //\n // We have to test it here rather than in renderText because\n // text-overflow: ellipsis could be set on a parent element (not\n // necessarily the one containing the text); in this case,\n // getComputedStyle(elementWithTheText) will return \"clip\", not\n // \"ellipsis\" (which is probably a bug, but oh well...)\n var textOverflow, saveTextOverflow;\n if (microsoft) {\n textOverflow = style.textOverflow; // computed style\n if (textOverflow == \"ellipsis\") {\n saveTextOverflow = element.style.textOverflow; // own style.\n element.style.textOverflow = \"clip\";\n }\n }\n\n if (browser.msie && browser.version < 10) {\n // IE9 hacks. getPropertyValue won't return the correct\n // value. Sucks that we have to do it here, I'd prefer to\n // move it in getPropertyValue, but we don't have the\n // element.\n backgroundPosition = splitProperty(element.currentStyle.backgroundPosition);\n }\n\n var innerbox = innerBox(element.getBoundingClientRect(), \"border-*-width\", element);\n\n // CSS \"clip\" property - if present, replace the group with a\n // new one which is clipped. This must happen before drawing\n // the borders and background.\n (function(){\n var clip = getPropertyValue(style, \"clip\");\n var m = /^\\s*rect\\((.*)\\)\\s*$/.exec(clip);\n if (m) {\n var a = m[1].split(/[ ,]+/g);\n var top = a[0] == \"auto\" ? innerbox.top : parseFloat(a[0]) + innerbox.top;\n var right = a[1] == \"auto\" ? innerbox.right : parseFloat(a[1]) + innerbox.left;\n var bottom = a[2] == \"auto\" ? innerbox.bottom : parseFloat(a[2]) + innerbox.top;\n var left = a[3] == \"auto\" ? innerbox.left : parseFloat(a[3]) + innerbox.left;\n var tmp = new Group();\n var clipPath = new Path()\n .moveTo(left, top)\n .lineTo(right, top)\n .lineTo(right, bottom)\n .lineTo(left, bottom)\n .close();\n setClipping(tmp, clipPath);\n group.append(tmp);\n group = tmp;\n updateClipbox(clipPath);\n }\n })();\n\n var boxes, i, cells;\n var display = getPropertyValue(style, \"display\");\n\n if (display == \"table-row\") {\n // because of rowspan/colspan, we shouldn't draw background of table row elements on the\n // box given by its getBoundingClientRect, because if we do we risk overwritting a\n // previously rendered cell. https://github.com/telerik/kendo/issues/4881\n boxes = [];\n for (i = 0, cells = element.children; i < cells.length; ++i) {\n boxes.push(cells[i].getBoundingClientRect());\n }\n } else {\n boxes = element.getClientRects();\n if (boxes.length == 1) {\n // Workaround the missing borders in Chrome! getClientRects() boxes contains values\n // rounded to integer. getBoundingClientRect() appears to work fine. We still need\n // getClientRects() to support cases where there are more boxes (continued inline\n // elements that might have border/background).\n boxes = [ element.getBoundingClientRect() ];\n }\n }\n\n // This function workarounds another Chrome bug, where boxes returned for a table with\n // border-collapse: collapse will overlap the table border. Our rendering is not perfect in\n // such case anyway, but with this is better than without it.\n boxes = adjustBoxes(boxes);\n\n for (i = 0; i < boxes.length; ++i) {\n drawOneBox(boxes[i], i === 0, i == boxes.length - 1);\n }\n\n // Render links as separate groups. We can't use boxes returned by element's getClientRects\n // because if display type is \"inline\" (default for ), boxes will not include the height of\n // images inside. https://github.com/telerik/kendo-ui-core/issues/3359\n if (element.tagName == \"A\" && element.href && !/^#?$/.test(element.getAttribute(\"href\"))) {\n if (!nodeInfo._avoidLinks || !matches(element, nodeInfo._avoidLinks)) {\n var r = document.createRange();\n r.selectNodeContents(element);\n slice(r.getClientRects()).forEach(function(box){\n var g = new Group();\n g._pdfLink = {\n url : element.href,\n top : box.top,\n right : box.right,\n bottom : box.bottom,\n left : box.left\n };\n group.append(g);\n });\n }\n }\n\n if (boxes.length > 0 && display == \"list-item\" && !element.getAttribute(\"kendo-no-bullet\")) {\n drawBullet(boxes[0]);\n }\n\n // overflow: hidden/auto - if present, replace the group with\n // a new one clipped by the inner box.\n (function(){\n function clipit() {\n var clipPath = elementRoundBox(element, innerbox, \"padding\");\n var tmp = new Group();\n setClipping(tmp, clipPath);\n group.append(tmp);\n group = tmp;\n updateClipbox(clipPath);\n }\n if (isFormField(element)) {\n clipit();\n } else if (/^(hidden|auto|scroll)/.test(getPropertyValue(style, \"overflow\"))) {\n clipit();\n } else if (/^(hidden|auto|scroll)/.test(getPropertyValue(style, \"overflow-x\"))) {\n clipit();\n } else if (/^(hidden|auto|scroll)/.test(getPropertyValue(style, \"overflow-y\"))) {\n clipit();\n }\n })();\n\n if (!maybeRenderWidget(element, group)) {\n renderContents(element, group);\n }\n\n if (microsoft && textOverflow == \"ellipsis\") {\n element.style.textOverflow = saveTextOverflow;\n }\n\n return group; // only utility functions after this line.\n\n function adjustBoxes(boxes) {\n if (/^td$/i.test(element.tagName)) {\n var table = nodeInfo.table;\n if (table && getPropertyValue(table.style, \"border-collapse\") == \"collapse\") {\n var tableBorderLeft = getBorder(table.style, \"left\").width;\n var tableBorderTop = getBorder(table.style, \"top\").width;\n // check if we need to adjust\n if (tableBorderLeft === 0 && tableBorderTop === 0) {\n return boxes; // nope\n }\n var tableBox = table.element.getBoundingClientRect();\n var firstCell = table.element.rows[0].cells[0];\n var firstCellBox = firstCell.getBoundingClientRect();\n if (firstCellBox.top == tableBox.top || firstCellBox.left == tableBox.left) {\n return slice(boxes).map(function(box){\n return {\n left : box.left + tableBorderLeft,\n top : box.top + tableBorderTop,\n right : box.right + tableBorderLeft,\n bottom : box.bottom + tableBorderTop,\n height : box.height,\n width : box.width\n };\n });\n }\n }\n }\n return boxes;\n }\n\n // this function will be called to draw each border. it\n // draws starting at origin and the resulted path must be\n // translated/rotated to be placed in the proper position.\n //\n // arguments are named as if it draws the top border:\n //\n // - `len` the length of the edge\n // - `Wtop` the width of the edge (i.e. border-top-width)\n // - `Wleft` the width of the left edge (border-left-width)\n // - `Wright` the width of the right edge\n // - `rl` and `rl` -- the border radius on the left and right\n // (objects containing x and y, for horiz/vertical radius)\n // - `transform` -- transformation to apply\n //\n function drawEdge(color, len, Wtop, Wleft, Wright, rl, rr, transform) {\n if (Wtop <= 0) {\n return;\n }\n\n var path, edge = new Group();\n setTransform(edge, transform);\n group.append(edge);\n\n sanitizeRadius(rl);\n sanitizeRadius(rr);\n\n // draw main border. this is the area without the rounded corners\n path = new Path({\n fill: { color: color },\n stroke: null\n });\n edge.append(path);\n path.moveTo(rl.x ? Math.max(rl.x, Wleft) : 0, 0)\n .lineTo(len - (rr.x ? Math.max(rr.x, Wright) : 0), 0)\n .lineTo(len - Math.max(rr.x, Wright), Wtop)\n .lineTo(Math.max(rl.x, Wleft), Wtop)\n .close();\n\n if (rl.x) {\n drawRoundCorner(Wleft, rl, [ -1, 0, 0, 1, rl.x, 0 ]);\n }\n\n if (rr.x) {\n drawRoundCorner(Wright, rr, [ 1, 0, 0, 1, len - rr.x, 0 ]);\n }\n\n // draws one round corner, starting at origin (needs to be\n // translated/rotated to be placed properly).\n function drawRoundCorner(Wright, r, transform) {\n var angle = Math.PI/2 * Wright / (Wright + Wtop);\n\n // not sanitizing this one, because negative values\n // are useful to fill the box correctly.\n var ri = {\n x: r.x - Wright,\n y: r.y - Wtop\n };\n\n var path = new Path({\n fill: { color: color },\n stroke: null\n }).moveTo(0, 0);\n\n setTransform(path, transform);\n\n addArcToPath(path, 0, r.y, {\n startAngle: -90,\n endAngle: -radiansToDegrees(angle),\n radiusX: r.x,\n radiusY: r.y\n });\n\n if (ri.x > 0 && ri.y > 0) {\n path.lineTo(ri.x * Math.cos(angle), r.y - ri.y * Math.sin(angle));\n addArcToPath(path, 0, r.y, {\n startAngle: -radiansToDegrees(angle),\n endAngle: -90,\n radiusX: ri.x,\n radiusY: ri.y,\n anticlockwise: true\n });\n }\n else if (ri.x > 0) {\n path.lineTo(ri.x, Wtop)\n .lineTo(0, Wtop);\n }\n else {\n path.lineTo(ri.x, Wtop)\n .lineTo(ri.x, 0);\n }\n\n edge.append(path.close());\n }\n }\n\n function drawBackground(box) {\n var background = new Group();\n setClipping(background, roundBox(box, rTL0, rTR0, rBR0, rBL0));\n group.append(background);\n\n if (backgroundColor) {\n var path = new Path({\n fill: { color: backgroundColor.toCssRgba() },\n stroke: null\n });\n path.moveTo(box.left, box.top)\n .lineTo(box.right, box.top)\n .lineTo(box.right, box.bottom)\n .lineTo(box.left, box.bottom)\n .close();\n background.append(path);\n }\n\n for (var i = backgroundImage.length; --i >= 0;) {\n drawOneBackground(\n background, box,\n backgroundImage[i],\n backgroundRepeat[i % backgroundRepeat.length],\n backgroundPosition[i % backgroundPosition.length],\n backgroundOrigin[i % backgroundOrigin.length],\n backgroundSize[i % backgroundSize.length]\n );\n }\n }\n\n function drawOneBackground(group, box, background, backgroundRepeat, backgroundPosition, backgroundOrigin, backgroundSize) {\n if (!background || (background == \"none\")) {\n return;\n }\n\n if (background.type == \"url\") {\n // SVG taints the canvas, can't draw it.\n if (/^url\\(\\\"data:image\\/svg/i.test(background.url)) {\n return;\n }\n var img = IMAGE_CACHE[background.url];\n if (img && img.width > 0 && img.height > 0) {\n drawBackgroundImage(group, box, img.width, img.height, function(group, rect){\n group.append(new Image(background.url, rect));\n });\n }\n } else if (background.type == \"linear\") {\n drawBackgroundImage(group, box, box.width, box.height, gradientRenderer(background));\n } else {\n return;\n }\n\n function drawBackgroundImage(group, box, img_width, img_height, renderBG) {\n var aspect_ratio = img_width / img_height, f;\n\n // for background-origin: border-box the box is already appropriate\n var orgBox = box;\n if (backgroundOrigin == \"content-box\") {\n orgBox = innerBox(orgBox, \"border-*-width\", element);\n orgBox = innerBox(orgBox, \"padding-*\", element);\n } else if (backgroundOrigin == \"padding-box\") {\n orgBox = innerBox(orgBox, \"border-*-width\", element);\n }\n\n if (!/^\\s*auto(\\s+auto)?\\s*$/.test(backgroundSize)) {\n if (backgroundSize == \"contain\") {\n f = Math.min(orgBox.width / img_width,\n orgBox.height / img_height);\n img_width *= f;\n img_height *= f;\n }\n else if (backgroundSize == \"cover\") {\n f = Math.max(orgBox.width / img_width,\n orgBox.height / img_height);\n img_width *= f;\n img_height *= f;\n }\n else {\n var size = backgroundSize.split(/\\s+/g);\n // compute width\n if (/%$/.test(size[0])) {\n img_width = orgBox.width * parseFloat(size[0]) / 100;\n } else {\n img_width = parseFloat(size[0]);\n }\n // compute height\n if (size.length == 1 || size[1] == \"auto\") {\n img_height = img_width / aspect_ratio;\n } else if (/%$/.test(size[1])) {\n img_height = orgBox.height * parseFloat(size[1]) / 100;\n } else {\n img_height = parseFloat(size[1]);\n }\n }\n }\n\n var pos = String(backgroundPosition);\n\n // IE sometimes reports single-word positions\n // https://github.com/telerik/kendo-ui-core/issues/2786\n //\n // it seems to switch to percentages when the horizontal\n // position is not \"center\", therefore we don't handle\n // multi-word cases here. All other browsers return\n // percentages or pixels instead of keywords. At least\n // for now...\n switch (pos) {\n case \"bottom\" : pos = \"50% 100%\"; break;\n case \"top\" : pos = \"50% 0\"; break;\n case \"left\" : pos = \"0 50%\"; break;\n case \"right\" : pos = \"100% 50%\"; break;\n case \"center\" : pos = \"50% 50%\"; break;\n }\n\n pos = pos.split(/\\s+/);\n if (pos.length == 1) {\n pos[1] = \"50%\";\n }\n\n if (/%$/.test(pos[0])) {\n pos[0] = parseFloat(pos[0]) / 100 * (orgBox.width - img_width);\n } else {\n pos[0] = parseFloat(pos[0]);\n }\n if (/%$/.test(pos[1])) {\n pos[1] = parseFloat(pos[1]) / 100 * (orgBox.height - img_height);\n } else {\n pos[1] = parseFloat(pos[1]);\n }\n\n var rect = new geo.Rect([ orgBox.left + pos[0], orgBox.top + pos[1] ], [ img_width, img_height ]);\n\n // XXX: background-repeat could be implemented more\n // efficiently as a fill pattern (at least for PDF\n // output, probably SVG too).\n\n function rewX() {\n while (rect.origin.x > box.left) {\n rect.origin.x -= img_width;\n }\n }\n\n function rewY() {\n while (rect.origin.y > box.top) {\n rect.origin.y -= img_height;\n }\n }\n\n function repeatX() {\n while (rect.origin.x < box.right) {\n renderBG(group, rect.clone());\n rect.origin.x += img_width;\n }\n }\n\n if (backgroundRepeat == \"no-repeat\") {\n renderBG(group, rect);\n }\n else if (backgroundRepeat == \"repeat-x\") {\n rewX();\n repeatX();\n }\n else if (backgroundRepeat == \"repeat-y\") {\n rewY();\n while (rect.origin.y < box.bottom) {\n renderBG(group, rect.clone());\n rect.origin.y += img_height;\n }\n }\n else if (backgroundRepeat == \"repeat\") {\n rewX();\n rewY();\n var origin = rect.origin.clone();\n while (rect.origin.y < box.bottom) {\n rect.origin.x = origin.x;\n repeatX();\n rect.origin.y += img_height;\n }\n }\n }\n }\n\n function drawBullet() {\n var listStyleType = getPropertyValue(style, \"list-style-type\");\n if (listStyleType == \"none\") {\n return;\n }\n var listStylePosition = getPropertyValue(style, \"list-style-position\");\n\n function _drawBullet(f) {\n saveStyle(element, function(){\n element.style.position = \"relative\";\n var bullet = element.ownerDocument.createElement(KENDO_PSEUDO_ELEMENT);\n bullet.style.position = \"absolute\";\n bullet.style.boxSizing = \"border-box\";\n if (listStylePosition == \"outside\") {\n bullet.style.width = \"6em\";\n bullet.style.left = \"-6.8em\";\n bullet.style.textAlign = \"right\";\n } else {\n bullet.style.left = \"0px\";\n }\n f(bullet);\n element.insertBefore(bullet, element.firstChild);\n renderElement(bullet, group);\n element.removeChild(bullet);\n });\n }\n\n function elementIndex(f) {\n var a = element.parentNode.children;\n var k = element.getAttribute(\"kendo-split-index\");\n if (k != null) {\n return f(k|0, a.length);\n }\n for (var i = 0; i < a.length; ++i) {\n if (a[i] === element) {\n return f(i, a.length);\n }\n }\n }\n\n switch (listStyleType) {\n case \"circle\":\n case \"disc\":\n case \"square\":\n _drawBullet(function(bullet){\n // XXX: the science behind these values is called \"trial and error\".\n bullet.style.fontSize = \"60%\";\n bullet.style.lineHeight = \"200%\";\n bullet.style.paddingRight = \"0.5em\";\n bullet.style.fontFamily = \"DejaVu Serif\";\n bullet.innerHTML = {\n \"disc\" : \"\\u25cf\",\n \"circle\" : \"\\u25ef\",\n \"square\" : \"\\u25a0\"\n }[listStyleType];\n });\n break;\n\n case \"decimal\":\n case \"decimal-leading-zero\":\n _drawBullet(function(bullet){\n elementIndex(function(idx){\n ++idx;\n if (listStyleType == \"decimal-leading-zero\" && idx < 10) {\n idx = \"0\" + idx;\n }\n bullet.innerHTML = idx + \".\";\n });\n });\n break;\n\n case \"lower-roman\":\n case \"upper-roman\":\n _drawBullet(function(bullet){\n elementIndex(function(idx){\n idx = arabicToRoman(idx + 1);\n if (listStyleType == \"upper-roman\") {\n idx = idx.toUpperCase();\n }\n bullet.innerHTML = idx + \".\";\n });\n });\n break;\n\n case \"lower-latin\":\n case \"lower-alpha\":\n case \"upper-latin\":\n case \"upper-alpha\":\n _drawBullet(function(bullet){\n elementIndex(function(idx){\n idx = alphaNumeral(idx);\n if (/^upper/i.test(listStyleType)) {\n idx = idx.toUpperCase();\n }\n bullet.innerHTML = idx + \".\";\n });\n });\n break;\n }\n }\n\n // draws a single border box\n function drawOneBox(box, isFirst, isLast) {\n if (box.width === 0 || box.height === 0) {\n return;\n }\n\n drawBackground(box);\n\n var shouldDrawLeft = (left.width > 0 && ((isFirst && dir == \"ltr\") || (isLast && dir == \"rtl\")));\n var shouldDrawRight = (right.width > 0 && ((isLast && dir == \"ltr\") || (isFirst && dir == \"rtl\")));\n\n // The most general case is that the 4 borders have different widths and border\n // radiuses. The way that is handled is by drawing 3 Paths for each border: the\n // straight line, and two round corners which represent half of the entire rounded\n // corner. To simplify code those shapes are drawed at origin (by the drawEdge\n // function), then translated/rotated into the right position.\n //\n // However, this leads to poor results due to rounding in the simpler cases where\n // borders are straight lines. Therefore we handle a few such cases separately with\n // straight lines. C^wC^wC^w -- nope, scratch that. poor rendering was because of a bug\n // in Chrome (getClientRects() returns rounded integer values rather than exact floats.\n // web dev is still a ghetto.)\n\n // first, just in case there is no border...\n if (top.width === 0 && left.width === 0 && right.width === 0 && bottom.width === 0) {\n return;\n }\n\n // START paint borders\n // if all borders have equal colors...\n if (top.color == right.color && top.color == bottom.color && top.color == left.color) {\n\n // if same widths too, we can draw the whole border by stroking a single path.\n if (top.width == right.width && top.width == bottom.width && top.width == left.width)\n {\n if (shouldDrawLeft && shouldDrawRight) {\n // reduce box by half the border width, so we can draw it by stroking.\n box = innerBox(box, top.width/2);\n\n // adjust the border radiuses, again by top.width/2, and make the path element.\n var path = elementRoundBox(element, box, top.width/2);\n path.options.stroke = {\n color: top.color,\n width: top.width\n };\n group.append(path);\n return;\n }\n }\n }\n\n // if border radiuses are zero and widths are at most one pixel, we can again use simple\n // paths.\n if (rTL0.x === 0 && rTR0.x === 0 && rBR0.x === 0 && rBL0.x === 0) {\n // alright, 1.9px will do as well. the difference in color blending should not be\n // noticeable.\n if (top.width < 2 && left.width < 2 && right.width < 2 && bottom.width < 2) {\n // top border\n if (top.width > 0) {\n group.append(\n new Path({\n stroke: { width: top.width, color: top.color }\n })\n .moveTo(box.left, box.top + top.width/2)\n .lineTo(box.right, box.top + top.width/2)\n );\n }\n\n // bottom border\n if (bottom.width > 0) {\n group.append(\n new Path({\n stroke: { width: bottom.width, color: bottom.color }\n })\n .moveTo(box.left, box.bottom - bottom.width/2)\n .lineTo(box.right, box.bottom - bottom.width/2)\n );\n }\n\n // left border\n if (shouldDrawLeft) {\n group.append(\n new Path({\n stroke: { width: left.width, color: left.color }\n })\n .moveTo(box.left + left.width/2, box.top)\n .lineTo(box.left + left.width/2, box.bottom)\n );\n }\n\n // right border\n if (shouldDrawRight) {\n group.append(\n new Path({\n stroke: { width: right.width, color: right.color }\n })\n .moveTo(box.right - right.width/2, box.top)\n .lineTo(box.right - right.width/2, box.bottom)\n );\n }\n\n return;\n }\n }\n // END paint borders\n\n var tmp = adjustBorderRadiusForBox(box, rTL0, rTR0, rBR0, rBL0);\n var rTL = tmp.tl;\n var rTR = tmp.tr;\n var rBR = tmp.br;\n var rBL = tmp.bl;\n\n // top border\n drawEdge(top.color,\n box.width, top.width, left.width, right.width,\n rTL, rTR,\n [ 1, 0, 0, 1, box.left, box.top ]);\n\n // bottom border\n drawEdge(bottom.color,\n box.width, bottom.width, right.width, left.width,\n rBR, rBL,\n [ -1, 0, 0, -1, box.right, box.bottom ]);\n\n // for left/right borders we need to invert the border-radiuses\n function inv(p) {\n return { x: p.y, y: p.x };\n }\n\n // left border\n drawEdge(left.color,\n box.height, left.width, bottom.width, top.width,\n inv(rBL), inv(rTL),\n [ 0, -1, 1, 0, box.left, box.bottom ]);\n\n // right border\n drawEdge(right.color,\n box.height, right.width, top.width, bottom.width,\n inv(rTR), inv(rBR),\n [ 0, 1, -1, 0, box.right, box.top ]);\n }\n}\n\nfunction gradientRenderer(gradient) {\n return function(group, rect) {\n var width = rect.width(), height = rect.height();\n\n switch (gradient.type) {\n case \"linear\":\n\n // figure out the angle.\n var angle = gradient.angle != null ? gradient.angle : Math.PI;\n switch (gradient.to) {\n case \"top\":\n angle = 0;\n break;\n case \"left\":\n angle = -Math.PI / 2;\n break;\n case \"bottom\":\n angle = Math.PI;\n break;\n case \"right\":\n angle = Math.PI / 2;\n break;\n case \"top left\": case \"left top\":\n angle = -Math.atan2(height, width);\n break;\n case \"top right\": case \"right top\":\n angle = Math.atan2(height, width);\n break;\n case \"bottom left\": case \"left bottom\":\n angle = Math.PI + Math.atan2(height, width);\n break;\n case \"bottom right\": case \"right bottom\":\n angle = Math.PI - Math.atan2(height, width);\n break;\n }\n\n if (gradient.reverse) {\n angle -= Math.PI;\n }\n\n // limit the angle between 0..2PI\n angle %= 2 * Math.PI;\n if (angle < 0) {\n angle += 2 * Math.PI;\n }\n\n // compute gradient's start/end points. here len is the length of the gradient line\n // and x,y is the end point relative to the center of the rectangle in conventional\n // (math) axis direction.\n\n // this is the original (unscaled) length of the gradient line. needed to deal with\n // absolutely positioned color stops. formula from the CSS spec:\n // http://dev.w3.org/csswg/css-images-3/#linear-gradient-syntax\n var pxlen = Math.abs(width * Math.sin(angle)) + Math.abs(height * Math.cos(angle));\n\n // The math below is pretty simple, but it took a while to figure out. We compute x\n // and y, the *end* of the gradient line. However, we want to transform them into\n // element-based coordinates (SVG's gradientUnits=\"objectBoundingBox\"). That means,\n // x=0 is the left edge, x=1 is the right edge, y=0 is the top edge and y=1 is the\n // bottom edge.\n //\n // A naive approach would use the original angle for these calculations. Say we'd\n // like to draw a gradient angled at 45deg in a 100x400 box. When we use\n // objectBoundingBox, the renderer will draw it in a 1x1 *square* box, and then\n // scale that to the desired dimensions. The 45deg angle will look more like 70deg\n // after scaling. SVG (http://www.w3.org/TR/SVG/pservers.html#LinearGradients) says\n // the following:\n //\n // When gradientUnits=\"objectBoundingBox\" and 'gradientTransform' is the\n // identity matrix, the normal of the linear gradient is perpendicular to the\n // gradient vector in object bounding box space (i.e., the abstract coordinate\n // system where (0,0) is at the top/left of the object bounding box and (1,1) is\n // at the bottom/right of the object bounding box). When the object's bounding\n // box is not square, the gradient normal which is initially perpendicular to\n // the gradient vector within object bounding box space may render\n // non-perpendicular relative to the gradient vector in user space. If the\n // gradient vector is parallel to one of the axes of the bounding box, the\n // gradient normal will remain perpendicular. This transformation is due to\n // application of the non-uniform scaling transformation from bounding box space\n // to user space.\n //\n // which is an extremely long and confusing way to tell what I just said above.\n //\n // For this reason we need to apply the reverse scaling to the original angle, so\n // that when it'll finally be rendered it'll actually be at the desired slope. Now\n // I'll let you figure out the math yourself.\n\n var scaledAngle = Math.atan(width * Math.tan(angle) / height);\n var sin = Math.sin(scaledAngle), cos = Math.cos(scaledAngle);\n var len = Math.abs(sin) + Math.abs(cos);\n var x = len/2 * sin;\n var y = len/2 * cos;\n\n // Because of the arctangent, our scaledAngle ends up between -PI/2..PI/2, possibly\n // losing the intended direction of the gradient. The following fixes it.\n if (angle > Math.PI/2 && angle <= 3*Math.PI/2) {\n x = -x;\n y = -y;\n }\n\n // compute the color stops.\n var implicit = [], right = 0;\n var stops = gradient.stops.map(function(s, i){\n var offset = s.percent;\n if (offset) {\n offset = parseFloat(offset) / 100;\n } else if (s.length) {\n offset = parseFloat(s.length) / pxlen;\n } else if (i === 0) {\n offset = 0;\n } else if (i == gradient.stops.length - 1) {\n offset = 1;\n }\n var stop = {\n color: s.color.toCssRgba(),\n offset: offset\n };\n if (offset != null) {\n right = offset;\n // fix implicit offsets\n implicit.forEach(function(s, i){\n var stop = s.stop;\n stop.offset = s.left + (right - s.left) * (i + 1) / (implicit.length + 1);\n });\n implicit = [];\n } else {\n implicit.push({ left: right, stop: stop });\n }\n return stop;\n });\n\n var start = [ 0.5 - x, 0.5 + y ];\n var end = [ 0.5 + x, 0.5 - y ];\n\n // finally, draw it.\n group.append(\n Path.fromRect(rect)\n .stroke(null)\n .fill(new LinearGradient({\n start : start,\n end : end,\n stops : stops,\n userSpace : false\n }))\n );\n break;\n case \"radial\":\n // XXX:\n if (window.console && window.console.log) {\n window.console.log(\"Radial gradients are not yet supported in HTML renderer\");\n }\n break;\n }\n };\n}\n\nfunction maybeRenderWidget(element, group) {\n var visual;\n\n if (element._kendoExportVisual) {\n visual = element._kendoExportVisual();\n } else if (window.kendo && window.kendo.jQuery && element.getAttribute(window.kendo.attr(\"role\"))) {\n var widget = window.kendo.widgetInstance(window.kendo.jQuery(element));\n if (widget && (widget.exportDOMVisual || widget.exportVisual)) {\n if (widget.exportDOMVisual) {\n visual = widget.exportDOMVisual();\n } else {\n visual = widget.exportVisual();\n }\n }\n }\n\n if (!visual) {\n return false;\n }\n\n var wrap = new Group();\n wrap.children.push(visual);\n\n var bbox = element.getBoundingClientRect();\n wrap.transform(geo.transform().translate(bbox.left, bbox.top));\n\n group.append(wrap);\n\n return true;\n}\n\nfunction renderImage(element, url, group) {\n var box = getContentBox(element);\n var rect = new geo.Rect([ box.left, box.top ], [ box.width, box.height ]);\n var image = new Image(url, rect);\n setClipping(image, elementRoundBox(element, box, \"content\"));\n group.append(image);\n}\n\nfunction zIndexSort(a, b) {\n var sa = getComputedStyle(a);\n var sb = getComputedStyle(b);\n var za = parseFloat(getPropertyValue(sa, \"z-index\"));\n var zb = parseFloat(getPropertyValue(sb, \"z-index\"));\n var pa = getPropertyValue(sa, \"position\");\n var pb = getPropertyValue(sb, \"position\");\n if (isNaN(za) && isNaN(zb)) {\n if ((/static|absolute/.test(pa)) && (/static|absolute/.test(pb))) {\n return 0;\n }\n if (pa == \"static\") {\n return -1;\n }\n if (pb == \"static\") {\n return 1;\n }\n return 0;\n }\n if (isNaN(za)) {\n return zb === 0 ? 0 : zb > 0 ? -1 : 1;\n }\n if (isNaN(zb)) {\n return za === 0 ? 0 : za > 0 ? 1 : -1;\n }\n return parseFloat(za) - parseFloat(zb);\n}\n\nfunction isFormField(element) {\n return /^(?:textarea|select|input)$/i.test(element.tagName);\n}\n\nfunction getSelectedOption(element) {\n if (element.selectedOptions && element.selectedOptions.length > 0) {\n return element.selectedOptions[0];\n }\n return element.options[element.selectedIndex];\n}\n\nfunction renderCheckbox(element, group) {\n var style = getComputedStyle(element);\n var color = getPropertyValue(style, \"color\");\n var box = element.getBoundingClientRect();\n if (element.type == \"checkbox\") {\n group.append(\n Path.fromRect(\n new geo.Rect([ box.left+1, box.top+1 ],\n [ box.width-2, box.height-2 ])\n ).stroke(color, 1)\n );\n if (element.checked) {\n // fill a rectangle inside? looks kinda ugly.\n // group.append(\n // Path.fromRect(\n // new geo.Rect([ box.left+4, box.top+4 ],\n // [ box.width-8, box.height-8])\n // ).fill(color).stroke(null)\n // );\n\n // let's draw a checkmark instead. artistic, eh?\n group.append(\n new Path()\n .stroke(color, 1.2)\n .moveTo(box.left + 0.22 * box.width,\n box.top + 0.55 * box.height)\n .lineTo(box.left + 0.45 * box.width,\n box.top + 0.75 * box.height)\n .lineTo(box.left + 0.78 * box.width,\n box.top + 0.22 * box.width)\n );\n }\n } else {\n group.append(\n new Circle(\n new geo.Circle([\n (box.left + box.right) / 2,\n (box.top + box.bottom) / 2\n ], Math.min(box.width-2, box.height-2) / 2)\n ).stroke(color, 1)\n );\n if (element.checked) {\n group.append(\n new Circle(\n new geo.Circle([\n (box.left + box.right) / 2,\n (box.top + box.bottom) / 2\n ], Math.min(box.width-8, box.height-8) / 2)\n ).fill(color).stroke(null)\n );\n }\n }\n}\n\nfunction renderFormField(element, group) {\n var tag = element.tagName.toLowerCase();\n if (tag == \"input\" && (element.type == \"checkbox\" || element.type == \"radio\")) {\n return renderCheckbox(element, group);\n }\n var p = element.parentNode;\n var doc = element.ownerDocument;\n var el = doc.createElement(KENDO_PSEUDO_ELEMENT);\n var option;\n el.style.cssText = getCssText(getComputedStyle(element));\n if (tag == \"input\") {\n el.style.whiteSpace = \"pre\";\n }\n if (tag == \"select\" || tag == \"textarea\") {\n el.style.overflow = \"auto\";\n }\n if (tag == \"select\") {\n if (element.multiple) {\n for (var i = 0; i < element.options.length; ++i) {\n option = doc.createElement(KENDO_PSEUDO_ELEMENT);\n option.style.cssText = getCssText(getComputedStyle(element.options[i]));\n option.style.display = \"block\"; // IE9 messes up without this\n option.textContent = element.options[i].textContent;\n el.appendChild(option);\n }\n } else {\n option = getSelectedOption(element);\n if (option) {\n el.textContent = option.textContent;\n }\n }\n } else {\n el.textContent = element.value;\n }\n p.insertBefore(el, element);\n el.scrollLeft = element.scrollLeft;\n el.scrollTop = element.scrollTop;\n\n // must temporarily hide the original element, otherwise it\n // may affect layout of the fake element we want to render.\n element.style.display = \"none\";\n\n renderContents(el, group);\n element.style.display = \"\";\n p.removeChild(el);\n}\n\nfunction renderContents(element, group) {\n if (nodeInfo._stackingContext.element === element) {\n // the group that was set in pushNodeInfo might have\n // changed due to clipping/transforms, update it here.\n nodeInfo._stackingContext.group = group;\n }\n switch (element.tagName.toLowerCase()) {\n case \"img\":\n renderImage(element, element.src, group);\n break;\n\n case \"canvas\":\n try {\n renderImage(element, element.toDataURL(\"image/png\"), group);\n } catch (ex) {\n // tainted; can't draw it, ignore.\n }\n break;\n\n case \"textarea\":\n case \"input\":\n case \"select\":\n renderFormField(element, group);\n break;\n\n default:\n var children = [], floats = [], positioned = [];\n for (var i = element.firstChild; i; i = i.nextSibling) {\n switch (i.nodeType) {\n case 3: // Text\n if (/\\S/.test(i.data)) {\n renderText(element, i, group);\n }\n break;\n case 1: // Element\n var style = getComputedStyle(i);\n var floating = getPropertyValue(style, \"float\");\n var position = getPropertyValue(style, \"position\");\n if (position != \"static\") {\n positioned.push(i);\n }\n else if (floating != \"none\") {\n floats.push(i);\n } else {\n children.push(i);\n }\n break;\n }\n }\n\n mergeSort(children, zIndexSort).forEach(function(el){ renderElement(el, group); });\n mergeSort(floats, zIndexSort).forEach(function(el){ renderElement(el, group); });\n mergeSort(positioned, zIndexSort).forEach(function(el){ renderElement(el, group); });\n }\n}\n\nfunction renderText(element, node, group) {\n if (emptyClipbox()) {\n return;\n }\n var style = getComputedStyle(element);\n\n if (parseFloat(getPropertyValue(style, \"text-indent\")) < -500) {\n // assume it should not be displayed. the slider's\n // draggable handle displays a Drag text for some reason,\n // having text-indent: -3333px.\n return;\n }\n\n var text = node.data;\n var start = 0;\n var end = text.search(/\\S\\s*$/) + 1;\n\n if (!end) {\n return; // whitespace-only node\n }\n\n var fontSize = getPropertyValue(style, \"font-size\");\n var lineHeight = getPropertyValue(style, \"line-height\");\n\n // simply getPropertyValue(\"font\") doesn't work in Firefox :-\\\n var font = [\n getPropertyValue(style, \"font-style\"),\n getPropertyValue(style, \"font-variant\"),\n getPropertyValue(style, \"font-weight\"),\n fontSize, // no need for line height here; it breaks layout in FF\n getPropertyValue(style, \"font-family\")\n ].join(\" \");\n\n fontSize = parseFloat(fontSize);\n lineHeight = parseFloat(lineHeight);\n\n if (fontSize === 0) {\n return;\n }\n\n var color = getPropertyValue(style, \"color\");\n var range = element.ownerDocument.createRange();\n var align = getPropertyValue(style, \"text-align\");\n var isJustified = align == \"justify\";\n var columnCount = getPropertyValue(style, \"column-count\", 1);\n var whiteSpace = getPropertyValue(style, \"white-space\");\n var textTransform = getPropertyValue(style, \"text-transform\");\n\n // A line of 500px, with a font of 12px, contains an average of 80 characters, but since we\n // err, we'd like to guess a bigger number rather than a smaller one. Multiplying by 5\n // seems to be a good option.\n var estimateLineLength = element.getBoundingClientRect().width / fontSize * 5;\n if (estimateLineLength === 0) {\n estimateLineLength = 500;\n }\n\n // we'll maintain this so we can workaround bugs in Chrome's Range.getClientRects\n // https://github.com/telerik/kendo/issues/5740\n var prevLineBottom = null;\n\n var underline = nodeInfo[\"underline\"];\n var lineThrough = nodeInfo[\"line-through\"];\n var overline = nodeInfo[\"overline\"];\n var hasDecoration = underline || lineThrough || overline;\n\n // doChunk returns true when all text has been rendered\n while (!doChunk()) {}\n\n if (hasDecoration) {\n range.selectNode(node);\n slice(range.getClientRects()).forEach(decorate);\n }\n\n return; // only function declarations after this line\n\n function actuallyGetRangeBoundingRect(range) {\n // XXX: to be revised when this Chrome bug is fixed:\n // https://bugs.chromium.org/p/chromium/issues/detail?id=612459\n if (microsoft || browser.chrome) {\n // Workaround browser bugs: IE and Chrome would sometimes\n // return 0 or 1-width rectangles before or after the main\n // one. https://github.com/telerik/kendo/issues/4674\n\n // Actually Chrome 50 got worse, since the rectangles can now have the width of a\n // full character, making it hard to tell whether it's a bogus rectangle or valid\n // selection location. The workaround is to ignore rectangles that fall on the\n // previous line. https://github.com/telerik/kendo/issues/5740\n var rectangles = range.getClientRects(), box = {\n top : Infinity,\n right : -Infinity,\n bottom : -Infinity,\n left : Infinity\n }, done = false;\n for (var i = 0; i < rectangles.length; ++i) {\n var b = rectangles[i];\n if (b.width <= 1 || b.bottom === prevLineBottom) {\n continue; // bogus rectangle\n }\n box.left = Math.min(b.left , box.left);\n box.top = Math.min(b.top , box.top);\n box.right = Math.max(b.right , box.right);\n box.bottom = Math.max(b.bottom , box.bottom);\n done = true;\n }\n if (!done) {\n return range.getBoundingClientRect();\n }\n box.width = box.right - box.left;\n box.height = box.bottom - box.top;\n return box;\n }\n return range.getBoundingClientRect();\n }\n\n // Render a chunk of text, typically one line (but for justified text we render each word as\n // a separate Text object, because spacing is variable). Returns true when it finished the\n // current node. After each chunk it updates `start` to just after the last rendered\n // character.\n function doChunk() {\n var origStart = start;\n var box, pos = text.substr(start).search(/\\S/);\n start += pos;\n if (pos < 0 || start >= end) {\n return true;\n }\n\n // Select a single character to determine the height of a line of text. The box.bottom\n // will be essential for us to figure out where the next line begins.\n range.setStart(node, start);\n range.setEnd(node, start + 1);\n box = actuallyGetRangeBoundingRect(range);\n\n // for justified text we must split at each space, because space has variable width.\n var found = false;\n if (isJustified || columnCount > 1) {\n pos = text.substr(start).search(/\\s/);\n if (pos >= 0) {\n // we can only split there if it's on the same line, otherwise we'll fall back\n // to the default mechanism (see findEOL below).\n range.setEnd(node, start + pos);\n var r = actuallyGetRangeBoundingRect(range);\n if (r.bottom == box.bottom) {\n box = r;\n found = true;\n start += pos;\n }\n }\n }\n\n if (!found) {\n // This code does three things: (1) it selects one line of text in `range`, (2) it\n // leaves the bounding rect of that line in `box` and (3) it returns the position\n // just after the EOL. We know where the line starts (`start`) but we don't know\n // where it ends. To figure this out, we select a piece of text and look at the\n // bottom of the bounding box. If it changes, we have more than one line selected\n // and should retry with a smaller selection.\n //\n // To speed things up, we first try to select all text in the node (`start` ->\n // `end`). If there's more than one line there, then select only half of it. And\n // so on. When we find a value for `end` that fits in one line, we try increasing\n // it (also in halves) until we get to the next line. The algorithm stops when the\n // right side of the bounding box does not change.\n //\n // One more thing to note is that everything happens in a single Text DOM node.\n // There's no other tags inside it, therefore the left/top coordinates of the\n // bounding box will not change.\n pos = (function findEOL(min, eol, max){\n range.setEnd(node, eol);\n var r = actuallyGetRangeBoundingRect(range);\n if (r.bottom != box.bottom && min < eol) {\n return findEOL(min, (min + eol) >> 1, eol);\n } else if (r.right != box.right) {\n box = r;\n if (eol < max) {\n return findEOL(eol, (eol + max) >> 1, max);\n } else {\n return eol;\n }\n } else {\n return eol;\n }\n })(start, Math.min(end, start + estimateLineLength), end);\n\n if (pos == start) {\n // if EOL is at the start, then no more text fits on this line. Skip the\n // remainder of this node entirely to avoid a stack overflow.\n return true;\n }\n start = pos;\n\n pos = range.toString().search(/\\s+$/);\n if (pos === 0) {\n return false; // whitespace only; we should not get here.\n }\n if (pos > 0) {\n // eliminate trailing whitespace\n range.setEnd(node, range.startOffset + pos);\n box = actuallyGetRangeBoundingRect(range);\n }\n }\n\n // another workaround for IE: if we rely on getBoundingClientRect() we'll overlap with the bullet for LI\n // elements. Calling getClientRects() and using the *first* rect appears to give us the correct location.\n // Note: not to be used in Chrome as it randomly returns a zero-width rectangle from the previous line.\n if (microsoft) {\n box = range.getClientRects()[0];\n }\n\n var str = range.toString();\n if (!/^(?:pre|pre-wrap)$/i.test(whiteSpace)) {\n // node with non-significant space -- collapse whitespace.\n str = str.replace(/\\s+/g, \" \");\n }\n else if (/\\t/.test(str)) {\n // with significant whitespace we need to do something about literal TAB characters.\n // There's no TAB glyph in a font so they would be rendered in PDF as an empty box,\n // and the whole text will stretch to fill the original width. The core PDF lib\n // does not have sufficient context to deal with it.\n\n // calculate the starting column here, since we initially discarded any whitespace.\n var cc = 0;\n for (pos = origStart; pos < range.startOffset; ++pos) {\n var code = text.charCodeAt(pos);\n if (code == 9) {\n // when we meet a TAB we must round up to the next tab stop.\n // in all browsers TABs seem to be 8 characters.\n cc += 8 - cc % 8;\n } else if (code == 10 || code == 13) {\n // just in case we meet a newline we must restart.\n cc = 0;\n } else {\n // ordinary character --> advance one column\n cc++;\n }\n }\n\n // based on starting column, replace any TAB characters in the string we actually\n // have to display with spaces so that they align to columns multiple of 8.\n while ((pos = str.search(\"\\t\")) >= 0) {\n var indent = \" \".substr(0, 8 - (cc + pos) % 8);\n str = str.substr(0, pos) + indent + str.substr(pos + 1);\n }\n }\n\n if (!found) {\n prevLineBottom = box.bottom;\n }\n drawText(str, box);\n }\n\n function drawText(str, box) {\n // In IE the box height will be approximately lineHeight, while in\n // other browsers it'll (correctly) be the height of the bounding\n // box for the current text/font. Which is to say, IE sucks again.\n // The only good solution I can think of is to measure the text\n // ourselves and center the bounding box.\n if (microsoft && !isNaN(lineHeight)) {\n var height = getFontHeight(font);\n var top = (box.top + box.bottom - height) / 2;\n box = {\n top : top,\n right : box.right,\n bottom : top + height,\n left : box.left,\n height : height,\n width : box.right - box.left\n };\n }\n\n // var path = new Path({ stroke: { color: \"red\" }});\n // path.moveTo(box.left, box.top)\n // .lineTo(box.right, box.top)\n // .lineTo(box.right, box.bottom)\n // .lineTo(box.left, box.bottom)\n // .close();\n // group.append(path);\n\n switch (textTransform) {\n case \"uppercase\":\n str = str.toUpperCase();\n break;\n case \"lowercase\":\n str = str.toLowerCase();\n break;\n case \"capitalize\":\n str = str.replace(/(?:^|\\s)\\S/g, function (l) { return l.toUpperCase(); });\n break;\n }\n\n var text = new TextRect(\n str, new geo.Rect([ box.left, box.top ],\n [ box.width, box.height ]),\n {\n font: font,\n fill: { color: color }\n }\n );\n group.append(text);\n }\n\n function decorate(box) {\n line(underline, box.bottom);\n line(lineThrough, box.bottom - box.height / 2.7);\n line(overline, box.top);\n function line(color, ypos) {\n if (color) {\n var width = fontSize / 12;\n var path = new Path({ stroke: {\n width: width,\n color: color\n }});\n\n ypos -= width;\n path.moveTo(box.left, ypos)\n .lineTo(box.right, ypos);\n group.append(path);\n }\n }\n }\n}\n\nfunction groupInStackingContext(element, group, zIndex) {\n var main;\n if (zIndex != \"auto\") {\n // use the current stacking context\n main = nodeInfo._stackingContext.group;\n zIndex = parseFloat(zIndex);\n } else {\n // normal flow — use given container. we still have to\n // figure out where should we insert this element with the\n // assumption that its z-index is zero, as the group might\n // already contain elements with higher z-index.\n main = group;\n zIndex = 0;\n }\n var a = main.children;\n for (var i = 0; i < a.length; ++i) {\n if (a[i]._dom_zIndex != null && a[i]._dom_zIndex > zIndex) {\n break;\n }\n }\n\n var tmp = new Group();\n main.insert(i, tmp);\n tmp._dom_zIndex = zIndex;\n\n if (main !== group) {\n // console.log(\"Placing\", element, \"in\", nodeInfo._stackingContext.element, \"at position\", i, \" / \", a.length);\n // console.log(a.slice(i+1));\n\n // if (nodeInfo._matrix) {\n // tmp.transform(nodeInfo._matrix);\n // }\n if (nodeInfo._clipbox) {\n var m = nodeInfo._matrix.invert();\n var r = nodeInfo._clipbox.transformCopy(m);\n setClipping(tmp, Path.fromRect(r));\n // console.log(r);\n // tmp.append(Path.fromRect(r));\n // tmp.append(new Text(element.className || element.id, r.topLeft()));\n }\n }\n\n return tmp;\n}\n\nfunction renderElement(element, container) {\n var style = getComputedStyle(element);\n\n updateCounters(style);\n\n if (/^(style|script|link|meta|iframe|svg|col|colgroup)$/i.test(element.tagName)) {\n return;\n }\n\n if (nodeInfo._clipbox == null) {\n return;\n }\n\n var opacity = parseFloat(getPropertyValue(style, \"opacity\"));\n var visibility = getPropertyValue(style, \"visibility\");\n var display = getPropertyValue(style, \"display\");\n\n if (opacity === 0 || visibility == \"hidden\" || display == \"none\") {\n return;\n }\n\n var tr = getTransform(style);\n var group;\n\n var zIndex = getPropertyValue(style, \"z-index\");\n if ((tr || opacity < 1) && zIndex == \"auto\") {\n zIndex = 0;\n }\n group = groupInStackingContext(element, container, zIndex);\n\n // XXX: remove at some point\n // group._pdfElement = element;\n // group.options._pdfDebug = \"\";\n // if (element.id) {\n // group.options._pdfDebug = \"#\" + element.id;\n // }\n // if (element.className) {\n // group.options._pdfDebug += \".\" + element.className.split(\" \").join(\".\");\n // }\n\n if (opacity < 1) {\n group.opacity(opacity * group.opacity());\n }\n\n pushNodeInfo(element, style, group);\n\n if (!tr) {\n _renderWithPseudoElements(element, group);\n }\n else {\n saveStyle(element, function(){\n // must clear transform, so getBoundingClientRect returns correct values.\n pleaseSetPropertyValue(element.style, \"transform\", \"none\", \"important\");\n\n // must also clear transitions, so correct values are returned *immediately*\n pleaseSetPropertyValue(element.style, \"transition\", \"none\", \"important\");\n\n // the presence of any transform makes it behave like it had position: relative,\n // because why not.\n // http://meyerweb.com/eric/thoughts/2011/09/12/un-fixing-fixed-elements-with-css-transforms/\n if (getPropertyValue(style, \"position\") == \"static\") {\n // but only if it's not already positioned. :-/\n pleaseSetPropertyValue(element.style, \"position\", \"relative\", \"important\");\n }\n\n // must translate to origin before applying the CSS\n // transformation, then translate back.\n var bbox = element.getBoundingClientRect();\n var x = bbox.left + tr.origin[0];\n var y = bbox.top + tr.origin[1];\n var m = [ 1, 0, 0, 1, -x, -y ];\n m = mmul(m, tr.matrix);\n m = mmul(m, [ 1, 0, 0, 1, x, y ]);\n m = setTransform(group, m);\n\n nodeInfo._matrix = nodeInfo._matrix.multiplyCopy(m);\n\n _renderWithPseudoElements(element, group);\n });\n }\n\n popNodeInfo();\n\n //drawDebugBox(element.getBoundingClientRect(), container);\n}\n\n// function drawDebugBox(box, group, color) {\n// var path = Path.fromRect(new geo.Rect([ box.left, box.top ], [ box.width, box.height ]));\n// if (color) {\n// path.stroke(color);\n// }\n// group.append(path);\n// }\n\n// function dumpTextNode(node) {\n// var txt = node.data.replace(/^\\s+/, \"\");\n// if (txt.length < 100) {\n// console.log(node.data.length + \": |\" + txt);\n// } else {\n// console.log(node.data.length + \": |\" + txt.substr(0, 50) + \"|...|\" + txt.substr(-50));\n// }\n// }\n\nfunction mmul(a, b) {\n var a1 = a[0], b1 = a[1], c1 = a[2], d1 = a[3], e1 = a[4], f1 = a[5];\n var a2 = b[0], b2 = b[1], c2 = b[2], d2 = b[3], e2 = b[4], f2 = b[5];\n return [\n a1*a2 + b1*c2, a1*b2 + b1*d2,\n c1*a2 + d1*c2, c1*b2 + d1*d2,\n e1*a2 + f1*c2 + e2, e1*b2 + f1*d2 + f2\n ];\n}\n\nexport { drawDOM };\n\n","export default function template() {\n // XXX: no template engine for now\n throw new Error(\"String template not yet supported. Pass a function and use your preferred template engine.\");\n}","import { parseColor as parse, Color } from '@progress/kendo-drawing';\nimport { isPresent, fitIntoBounds } from './misc';\n/**\n * @hidden\n *\n * Returns the hex or RGBA string representation of the color.\n */\nexport var parseColor = function (value, format, safe) {\n if (safe === void 0) { safe = true; }\n var allowedFormats = ['hex', 'rgba']; // TODO: constant?\n // Angular supports third type: name : const allowedFormats: Array = ['hex', 'rgba', 'name'];\n if (allowedFormats.indexOf(format) === -1) {\n throw new Error(\"Unsupported color output format '\" + format + \"'. The available options are 'hex' or 'rgba'.\");\n }\n if (!isPresent(value)) {\n return;\n }\n var parsedColor = parse(value.trim(), safe);\n if (!isPresent(parsedColor)) {\n return;\n }\n return format === 'hex' ? parsedColor.toCss() : parsedColor.toCssRgba();\n};\n/**\n * @hidden\n *\n * Returns an HSV object representation of the color string.\n */\nexport var getHSV = function (value, safe) {\n if (safe === void 0) { safe = true; }\n var parsed = parse(value, safe);\n if (!isPresent(parsed)) {\n return {};\n }\n return parsed.toHSV();\n};\n/**\n * @hidden\n *\n * Returns an RGBA object representation of the color string.\n */\nexport var getRGBA = function (value, safe) {\n if (safe === void 0) { safe = true; }\n var parsed = parse(value, safe);\n if (!isPresent(parsed)) {\n return {};\n }\n return parsed.toBytes();\n};\n/**\n * @hidden\n *\n * Returns the RGBA string representation of the color.\n */\nexport var getColorFromHSV = function (hsva) {\n var hue = fitIntoBounds(hsva.h, 0, 359.9);\n var saturation = fitIntoBounds(hsva.s, 0, 1);\n var value = fitIntoBounds(hsva.v, 0, 1);\n var alpha = fitIntoBounds(hsva.a, 0, 1);\n return Color.fromHSV(hue, saturation, value, alpha).toCssRgba();\n};\n/**\n * @hidden\n *\n * Returns the RGBA string representation of the color based on the `hue` and\n * assuming the `value`, `saturation`, and `alpha` have a value of `1`.\n */\nexport var getColorFromHue = function (hue) {\n return getColorFromHSV({ h: hue, s: 1, v: 1, a: 1 });\n};\n/**\n * @hidden\n *\n * Returns the RGBA string representation of the color.\n */\nexport var getColorFromRGBA = function (rgba) {\n var red = fitIntoBounds(rgba.r, 0, 255);\n var green = fitIntoBounds(rgba.g, 0, 255);\n var blue = fitIntoBounds(rgba.b, 0, 255);\n var alpha = fitIntoBounds(rgba.a, 0, 1);\n return Color.fromBytes(red, green, blue, alpha).toCssRgba();\n};\n//# sourceMappingURL=color-parser.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport { parseColor } from './utils/color-parser';\nimport { isPresent } from './utils/misc';\n/**\n * @hidden\n */\nvar HexInput = /** @class */ (function (_super) {\n __extends(HexInput, _super);\n function HexInput(props) {\n var _this = _super.call(this, props) || this;\n _this.onChange = function (event) {\n var hex = event.target.value;\n var value = parseColor(hex, 'rgba');\n _this.setState({ hex: hex });\n if (isPresent(value)) {\n _this.props.onHexChange(hex, value, event);\n }\n };\n _this.onBlur = function () {\n if (!isPresent(parseColor(_this.state.hex, 'rgba'))) {\n _this.setState({ hex: _this.state.originalHex });\n }\n };\n _this.state = { hex: _this.props.hex, originalHex: _this.props.hex };\n return _this;\n }\n HexInput.prototype.render = function () {\n return (React.createElement(\"input\", { value: this.state.hex, className: \"k-textbox k-hex-value\", onChange: this.onChange, onBlur: this.onBlur, disabled: this.props.disabled }));\n };\n HexInput.getDerivedStateFromProps = function (props, state) {\n if (props.hex !== state.originalHex) {\n return { hex: props.hex, originalHex: props.hex };\n }\n return null;\n };\n return HexInput;\n}(React.Component));\nexport default HexInput;\n//# sourceMappingURL=HexInput.js.map","var cache = {};\n/**\n * @hidden\n */\nexport function cacheHsva(componentGuid, value, hsva) {\n cache[componentGuid] = { value: value, hsva: hsva };\n}\n/**\n * @hidden\n */\nexport function cacheRgba(componentGuid, value, rgba) {\n cache[componentGuid] = { value: value, rgba: rgba };\n}\n/**\n * @hidden\n */\nexport function cacheHex(componentGuid, value, hex) {\n cache[componentGuid] = { value: value, hex: hex };\n}\n/**\n * @hidden\n */\nexport function removeCachedColor(componentGuid) {\n delete cache[componentGuid];\n}\n/**\n * @hidden\n */\nexport function getCachedHex(componentGuid, value) {\n if (componentGuid) {\n var cachedColor = cache[componentGuid];\n return cachedColor && cachedColor.value === value ? cachedColor.hex : undefined;\n }\n else {\n return undefined;\n }\n}\n/**\n * @hidden\n */\nexport function getCachedHsva(componentGuid, value) {\n if (componentGuid) {\n var cachedColor = cache[componentGuid];\n return cachedColor && cachedColor.value === value ? cachedColor.hsva : undefined;\n }\n else {\n return undefined;\n }\n}\n/**\n * @hidden\n */\nexport function getCachedRgba(componentGuid, value) {\n if (componentGuid) {\n var cachedColor = cache[componentGuid];\n return cachedColor && cachedColor.value === value ? cachedColor.rgba : undefined;\n }\n else {\n return undefined;\n }\n}\n//# sourceMappingURL=color-cache.js.map","var _a;\n/**\n * @hidden\n */\nexport var numericIncreaseValue = 'numerictextbox.increment';\n/**\n * @hidden\n */\nexport var numericDecreaseValue = 'numerictextbox.decrement';\n/**\n * @hidden\n */\nexport var sliderIncreaseValue = 'slider.increment';\n/**\n * @hidden\n */\nexport var sliderDecreaseValue = 'slider.decrement';\n/**\n * @hidden\n */\nexport var sliderDragTitle = 'slider.dragTitle';\n/**\n * @hidden\n */\nexport var colorGradientR = 'colorGradient.r';\n/**\n * @hidden\n */\nexport var colorGradientG = 'colorGradient.g';\n/**\n * @hidden\n */\nexport var colorGradientB = 'colorGradient.b';\n/**\n * @hidden\n */\nexport var colorGradientA = 'colorGradient.a';\n/**\n * @hidden\n */\nexport var colorGradientHex = 'colorGradient.hex';\n/**\n * @hidden\n */\nexport var checkboxValidation = 'checkbox.validation';\n/**\n * @hidden\n */\nexport var switchValidation = 'switch.validation';\n/**\n * @hidden\n */\nexport var messages = (_a = {},\n _a[numericIncreaseValue] = 'Increase value',\n _a[numericDecreaseValue] = 'Decrease value',\n _a[sliderIncreaseValue] = 'Increase',\n _a[sliderDecreaseValue] = 'Decrease',\n _a[sliderDragTitle] = 'Drag',\n _a[colorGradientR] = 'r',\n _a[colorGradientG] = 'g',\n _a[colorGradientB] = 'b',\n _a[colorGradientA] = 'a',\n _a[colorGradientHex] = 'hex',\n _a[checkboxValidation] = 'Please check this box if you want to proceed!',\n _a[switchValidation] = 'Please turn on if you want to proceed!',\n _a);\n//# sourceMappingURL=index.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport { NumericTextBox } from '../main';\nimport HexInput from './HexInput';\nimport { registerForIntl, registerForLocalization, provideLocalizationService } from '@progress/kendo-react-intl';\nimport { messages, colorGradientR, colorGradientHex, colorGradientA, colorGradientB, colorGradientG } from '../messages';\n/**\n * @hidden\n */\nvar ColorInput = /** @class */ (function (_super) {\n __extends(ColorInput, _super);\n function ColorInput() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.onRgbaRChange = function (event) {\n _this.dispatchRgbaChange({ r: event.value }, event);\n };\n _this.onRgbaGChange = function (event) {\n _this.dispatchRgbaChange({ g: event.value }, event);\n };\n _this.onRgbaBChange = function (event) {\n _this.dispatchRgbaChange({ b: event.value }, event);\n };\n _this.onRgbaAChange = function (event) {\n _this.dispatchRgbaChange({ a: event.value }, event);\n };\n return _this;\n }\n ColorInput.prototype.render = function () {\n var localizationService = provideLocalizationService(this);\n var hexMessage = localizationService.toLanguageString(colorGradientR, messages[colorGradientHex]);\n var rMessage = localizationService.toLanguageString(colorGradientR, messages[colorGradientR]);\n var gMessage = localizationService.toLanguageString(colorGradientR, messages[colorGradientG]);\n var bMessage = localizationService.toLanguageString(colorGradientR, messages[colorGradientB]);\n var aMessage = localizationService.toLanguageString(colorGradientR, messages[colorGradientA]);\n return (React.createElement(\"div\", null,\n React.createElement(\"div\", { className: \"k-hbox k-gradient-values\" },\n React.createElement(HexInput, { hex: this.props.hex, onHexChange: this.props.onHexChange, disabled: this.props.disabled }),\n React.createElement(NumericTextBox, { value: this.props.rgba.r, min: 0, max: 255, spinners: false, format: \"n\", onChange: this.onRgbaRChange, disabled: this.props.disabled }),\n React.createElement(NumericTextBox, { value: this.props.rgba.g, min: 0, max: 255, spinners: false, format: \"n\", onChange: this.onRgbaGChange, disabled: this.props.disabled }),\n React.createElement(NumericTextBox, { value: this.props.rgba.b, min: 0, max: 255, spinners: false, format: \"n\", onChange: this.onRgbaBChange, disabled: this.props.disabled }),\n this.props.opacity && React.createElement(NumericTextBox, { value: this.props.rgba.a, min: 0, max: 1, step: 0.01, spinners: false, format: \"n2\", onChange: this.onRgbaAChange, disabled: this.props.disabled })),\n React.createElement(\"div\", { className: \"k-hbox k-gradient-values\" },\n React.createElement(\"div\", { className: \"k-hex-value\" }, hexMessage),\n React.createElement(\"div\", null, rMessage),\n React.createElement(\"div\", null, gMessage),\n React.createElement(\"div\", null, bMessage),\n this.props.opacity && (React.createElement(\"div\", null, aMessage)))));\n };\n ColorInput.prototype.dispatchRgbaChange = function (newValue, event) {\n var rgba = __assign({}, this.props.rgba);\n if (newValue.r !== undefined) {\n rgba.r = newValue.r;\n }\n if (newValue.g !== undefined) {\n rgba.g = newValue.g;\n }\n if (newValue.b !== undefined) {\n rgba.b = newValue.b;\n }\n if (newValue.a !== undefined) {\n rgba.a = newValue.a;\n }\n this.props.onRgbaChange(rgba, event);\n };\n return ColorInput;\n}(React.Component));\nexport default ColorInput;\nregisterForIntl(ColorInput);\nregisterForLocalization(ColorInput);\n//# sourceMappingURL=ColorInput.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { Draggable, guid, classNames, focusFirstFocusableChild, getTabIndex } from '@progress/kendo-react-common';\nimport { Slider } from './../main';\nimport { fitIntoBounds, isPresent } from './utils/misc';\nimport { getColorFromHue, parseColor, getHSV, getColorFromHSV, getRGBA, getColorFromRGBA } from './utils/color-parser';\nimport { cacheHsva, removeCachedColor, getCachedHsva, getCachedRgba, getCachedHex, cacheRgba, cacheHex } from './utils/color-cache';\nimport ColorInput from './ColorInput';\nvar FORMAT = 'rgba';\nvar DEFAULT_SELECTED_COLOR = 'rgba(255, 255, 255, 1)';\n/**\n * Represents the [KendoReact ColorGradient component]({% slug overview_colorgradient %}).\n *\n * @example\n * ```jsx\n * class App extends React.Component {\n * render() {\n * return ;\n * }\n * }\n * ReactDOM.render(, document.querySelector('my-app'));\n * ```\n */\nvar ColorGradient = /** @class */ (function (_super) {\n __extends(ColorGradient, _super);\n function ColorGradient(props) {\n var _this = _super.call(this, props) || this;\n /**\n * @hidden\n */\n _this.onHexChange = function (hex, value, event) {\n if (_this.isUncontrolled) {\n var hsva = getHSV(value);\n _this.setState({ hsva: hsva, backgroundColor: getColorFromHue(hsva.h), rgba: getRGBA(value), hex: hex });\n }\n else {\n cacheHex(_this.state.guid, value, hex);\n }\n _this.dispatchChangeEvent(value, event, event.nativeEvent);\n };\n /**\n * @hidden\n */\n _this.onRgbaChange = function (rgba, event) {\n var value = getColorFromRGBA(rgba);\n if (_this.isUncontrolled) {\n var hsva = getHSV(value);\n var hex = parseColor(value, 'hex');\n _this.setState({ hsva: hsva, backgroundColor: getColorFromHue(hsva.h), rgba: rgba, hex: hex });\n }\n else {\n cacheRgba(_this.state.guid, value, rgba);\n }\n _this.dispatchChangeEvent(value, event.syntheticEvent, event.nativeEvent);\n };\n /**\n * @hidden\n */\n _this.onAlphaSliderChange = function (event) {\n _this.handleHsvaChange(Object.assign({}, _this.state.hsva, { a: event.value / 100 }), event.syntheticEvent, event.nativeEvent);\n };\n /**\n * @hidden\n */\n _this.onHueSliderChange = function (event) {\n _this.handleHsvaChange(Object.assign({}, _this.state.hsva, { h: event.value }), event.syntheticEvent, event.nativeEvent);\n };\n /**\n * @hidden\n */\n _this.onDrag = function (e) {\n _this.gradientWrapper.classList.add('k-dragging');\n _this.changePosition(e.event);\n };\n /**\n * @hidden\n */\n _this.onRelease = function () {\n _this.gradientWrapper.classList.remove('k-dragging');\n };\n /**\n * @hidden\n */\n _this.onGradientWrapperClick = function (event) {\n _this.changePosition(event);\n };\n /**\n * @hidden\n */\n _this.changePosition = function (event) {\n var gradientRectMetrics = _this.getGradientRectMetrics();\n var deltaX = event.clientX - gradientRectMetrics.left;\n var deltaY = event.clientY - gradientRectMetrics.top;\n var left = fitIntoBounds(deltaX, 0, gradientRectMetrics.width);\n var top = fitIntoBounds(deltaY, 0, gradientRectMetrics.height);\n var hsva = Object.assign({}, _this.state.hsva, { s: left / gradientRectMetrics.width, v: 1 - top / gradientRectMetrics.height });\n _this.handleHsvaChange(hsva, event, event.nativeEvent);\n };\n /**\n * @hidden\n */\n _this.focus = function () {\n focusFirstFocusableChild(_this.wrapper);\n };\n var value = props.value || props.defaultValue || parseColor(DEFAULT_SELECTED_COLOR, FORMAT);\n _this.state = Object.assign({}, ColorGradient.getStateFromValue(value), { isFirstRender: true, guid: guid() });\n return _this;\n }\n /**\n * @hidden\n */\n ColorGradient.getDerivedStateFromProps = function (props, state) {\n if (props.value && !state.isFirstRender) {\n // The component is in controlled mode.\n return ColorGradient.getStateFromValue(props.value, state.guid);\n }\n return null;\n };\n /**\n * @hidden\n */\n ColorGradient.prototype.componentDidMount = function () {\n this.setAlphaSliderBackground(this.state.backgroundColor);\n if (this.state.isFirstRender) {\n this.setState({ isFirstRender: false });\n }\n };\n /**\n * @hidden\n */\n ColorGradient.prototype.componentWillUnmount = function () {\n removeCachedColor(this.state.guid);\n };\n /**\n * @hidden\n */\n ColorGradient.prototype.componentDidUpdate = function (_, prevState) {\n if (prevState.backgroundColor !== this.state.backgroundColor) {\n this.setAlphaSliderBackground(this.state.backgroundColor);\n }\n };\n /**\n * @hidden\n */\n ColorGradient.prototype.renderRectangleDragHandle = function () {\n var style = {};\n if (!this.state.isFirstRender) {\n var gradientRectMetrics = this.getGradientRectMetrics();\n var top_1 = (1 - this.state.hsva.v) * gradientRectMetrics.height;\n var left = this.state.hsva.s * gradientRectMetrics.width;\n style.top = top_1 + \"px\";\n style.left = left + \"px\";\n }\n return React.createElement(\"div\", { className: \"k-draghandle\", style: style });\n };\n /**\n * @hidden\n */\n ColorGradient.prototype.handleHsvaChange = function (hsva, syntheticEvent, nativeEvent) {\n var value = getColorFromHSV(hsva);\n if (this.isUncontrolled) {\n var hex = parseColor(value, 'hex');\n this.setState({ hsva: hsva, backgroundColor: getColorFromHue(hsva.h), rgba: getRGBA(value), hex: hex });\n }\n else {\n cacheHsva(this.state.guid, value, hsva);\n }\n this.dispatchChangeEvent(value, syntheticEvent, nativeEvent);\n };\n /**\n * @hidden\n */\n ColorGradient.prototype.dispatchChangeEvent = function (value, syntheticEvent, nativeEvent) {\n if (this.props.onChange) {\n this.props.onChange.call(undefined, { syntheticEvent: syntheticEvent, nativeEvent: nativeEvent, target: this, value: value });\n }\n };\n /**\n * @hidden\n */\n ColorGradient.getStateFromValue = function (value, componentGuid) {\n if (!isPresent(parseColor(value, 'hex'))) {\n // Validate/sanitize the input.\n value = DEFAULT_SELECTED_COLOR;\n }\n var hsva = getCachedHsva(componentGuid, value) || getHSV(value);\n var rgba = getCachedRgba(componentGuid, value) || getRGBA(value);\n var hex = getCachedHex(componentGuid, value) || parseColor(value, 'hex');\n return { hsva: hsva, backgroundColor: getColorFromHue(hsva.h), rgba: rgba, hex: hex };\n };\n /**\n * @hidden\n */\n ColorGradient.prototype.setAlphaSliderBackground = function (backgroundColor) {\n if (this.props.opacity && this.alphaSlider && this.alphaSlider.sliderTrack) {\n this.alphaSlider.sliderTrack.style.background = \"linear-gradient(to top, transparent, \" + backgroundColor + \")\";\n }\n };\n Object.defineProperty(ColorGradient.prototype, \"isUncontrolled\", {\n /**\n * @hidden\n */\n get: function () {\n return this.props.value === undefined;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @hidden\n */\n ColorGradient.prototype.getGradientRectMetrics = function () {\n return this.gradientWrapper.getBoundingClientRect();\n };\n /**\n * @hidden\n */\n ColorGradient.prototype.render = function () {\n var _this = this;\n var className = classNames('k-widget k-flatcolorpicker', { 'k-state-disabled': this.props.disabled });\n return (React.createElement(\"div\", { className: className, \"aria-disabled\": this.props.disabled ? 'true' : undefined, style: this.props.style, ref: function (el) { return _this.wrapper = el; }, tabIndex: getTabIndex(this.props.tabIndex, this.props.disabled) },\n React.createElement(\"div\", { className: \"k-hbox k-hsv-wrap\" },\n React.createElement(\"div\", { className: \"k-hsv-rectangle\", style: { background: this.state.backgroundColor } },\n React.createElement(Draggable, { onDrag: this.onDrag, onRelease: this.onRelease, ref: function (el) { return _this.gradientWrapper = el ? el.element : undefined; } },\n React.createElement(\"div\", { className: \"k-hsv-gradient\", style: { touchAction: 'none' }, onClick: this.onGradientWrapperClick }, this.renderRectangleDragHandle()))),\n React.createElement(\"div\", { className: \"k-hbox k-sliders-wrap\" },\n React.createElement(Slider, { value: this.state.hsva.h, buttons: false, vertical: true, min: 0, max: 360, step: 5, onChange: this.onHueSliderChange, className: \"k-hue-slider\", disabled: this.props.disabled }),\n this.props.opacity && React.createElement(Slider, { value: isPresent(this.state.hsva.a) ? this.state.hsva.a * 100 : 100, buttons: false, vertical: true, min: 0, max: 100, step: 1, onChange: this.onAlphaSliderChange, className: \"k-alpha-slider\", disabled: this.props.disabled, ref: function (el) { return _this.alphaSlider = el; } }))),\n React.createElement(ColorInput, { rgba: this.state.rgba, onRgbaChange: this.onRgbaChange, hex: this.state.hex, onHexChange: this.onHexChange, opacity: this.props.opacity, disabled: this.props.disabled })));\n };\n /**\n * @hidden\n */\n ColorGradient.propTypes = {\n defaultValue: PropTypes.string,\n value: PropTypes.string,\n onChange: PropTypes.func,\n opacity: PropTypes.bool,\n disabled: PropTypes.bool,\n style: PropTypes.any\n };\n /**\n * @hidden\n */\n ColorGradient.defaultProps = {\n opacity: true\n };\n return ColorGradient;\n}(React.Component));\nexport { ColorGradient };\n//# sourceMappingURL=ColorGradient.js.map","import { isPresent } from './misc';\nimport { parseColor } from '@progress/kendo-drawing';\n/**\n * @hidden\n */\nvar ColorPaletteService = /** @class */ (function () {\n function ColorPaletteService() {\n this.colorRows = [];\n }\n ColorPaletteService.prototype.setColorMatrix = function (palette, columns) {\n this.colorRows = [];\n if (!(isPresent(palette) && palette.length)) {\n return;\n }\n columns = columns || palette.length;\n for (var start = 0; start < palette.length; start += columns) {\n var row = palette.slice(start, columns + start);\n this.colorRows.push(row);\n }\n };\n ColorPaletteService.prototype.getCellCoordsFor = function (color) {\n var _this = this;\n if (!isPresent(color)) {\n return;\n }\n var parsedColor = color ? parseColor(color, true) : color;\n var colors = [color];\n if (isPresent(parsedColor)) {\n colors.push(parsedColor.toCss(), parsedColor.toCssRgba());\n }\n var _loop_1 = function (row) {\n var _loop_2 = function (col) {\n if (colors.some(function (c) { return c === _this.colorRows[row][col]; })) {\n return { value: { row: row, col: col } };\n }\n };\n for (var col = 0; col < this_1.colorRows[row].length; col++) {\n var state_2 = _loop_2(col);\n if (typeof state_2 === \"object\")\n return state_2;\n }\n };\n var this_1 = this;\n for (var row = 0; row < this.colorRows.length; row++) {\n var state_1 = _loop_1(row);\n if (typeof state_1 === \"object\")\n return state_1.value;\n }\n };\n ColorPaletteService.prototype.getColorAt = function (cellCoords) {\n if (!(isPresent(cellCoords) && isPresent(this.colorRows[cellCoords.row]))) {\n return;\n }\n return this.colorRows[cellCoords.row][cellCoords.col];\n };\n ColorPaletteService.prototype.getNextCell = function (current, horizontalStep, verticalStep) {\n if (!(isPresent(current) && isPresent(current.row) && isPresent(current.col))) {\n return { row: 0, col: 0 };\n }\n var row = this.clampIndex(current.row + verticalStep, this.colorRows.length - 1);\n var col = this.clampIndex(current.col + horizontalStep, this.colorRows[row].length - 1);\n return { row: row, col: col };\n };\n ColorPaletteService.prototype.clampIndex = function (index, max) {\n var minArrayIndex = 0;\n if (index < minArrayIndex) {\n return minArrayIndex;\n }\n if (index > max) {\n return max;\n }\n return index;\n };\n return ColorPaletteService;\n}());\nexport { ColorPaletteService };\n//# sourceMappingURL=color-palette.service.js.map","// tslint:disable:max-line-length\n/**\n * @hidden\n */\nexport var PALETTEPRESETS = {\n basic: {\n colors: ['#000000', '#7f7f7f', '#880015', '#ed1c24', '#ff7f27', '#fff200', '#22b14c', '#00a2e8', '#3f48cc', '#a349a4', ' ffffff', '#c3c3c3', '#b97a57', '#ffaec9', '#ffc90e', '#efe4b0', '#b5e61d', '#99d9ea', '#7092be', '#c8bfe7'],\n columns: 10\n },\n office: {\n colors: ['#ffffff', '#000000', '#e6e6e6', '#435569', '#4371c4', '#ed7e32', '#a5a4a5', '#febf04', '#5a9bd5', '#71ae48', '#f2f2f3', '#7f7f7f', '#d1cece', '#d5dde3', '#dae1f4', '#fce5d4', '#deeded', '#fff2cc', '#deeaf6', '#e1efd9', '#d7d8d8', '#585959', '#aeabab', '#adbaca', '#b4c5e7', '#f6caac', '#dbdbdb', '#ffe498', '#bcd6ee', '#c5e0b2', '#bfbfc0', '#3f3f3f', '#767070', '#8595b1', '#8fabdb', '#f5b183', '#c9c8c9', '#fed965', '#9bc4e5', '#a8d08d', '#a5a5a6', '#262625', '#393939', '#334050', '#2e5496', '#c45a11', '#7b7b7a', '#bf9000', '#2f75b5', '#548235', '#7f7f7f', '#0b0c0c', '#161616', '#222a34', '#203764', '#843d0b', '#525252', '#7f6000', '#1d4d79', '#375623'],\n columns: 10\n },\n apex: {\n colors: ['#ffffff', '#000000', '#c9c2d1', '#69676d', '#ceb966', '#9cb084', '#6bb1c9', '#6585cf', '#7e6bc9', '#a379bb', '#f2f2f2', '#7f7f7f', '#f4f2f5', '#e0e0e2', '#f5f1e0', '#ebefe6', '#e1eff4', '#e0e6f5', '#e5e1f4', '#ece4f1', '#d8d8d8', '#595959', '#e9e6ec', '#c2c1c5', '#ebe3c1', '#d7dfcd', '#c3dfe9', '#c1ceeb', '#cbc3e9', '#dac9e3', '#bfbfbf', '#3f3f3f', '#dedae3', '#a4a3a8', '#e1d5a3', '#c3cfb5', '#a6d0de', '#a2b5e2', '#b1a6de', '#c7aed6', '#a5a5a5', '#262626', '#9688a5', '#4e4d51', '#ae9638', '#758c5a', '#3d8da9', '#365bb0', '#533da9', '#7d4d99', '#7f7f7f', '#0c0c0c', '#635672', '#343336', '#746425', '#4e5d3c', '#295e70', '#243c75', '#372970', '#533366'],\n columns: 10\n },\n austin: {\n colors: ['#ffffff', '#000000', '#caf278', '#3e3d2d', '#94c600', '#71685a', '#ff6700', '#909465', '#956b43', '#fea022', '#f2f2f2', '#7f7f7f', '#f4fce4', '#dddcd0', '#efffc0', '#e3e1dc', '#ffe0cb', '#e8e9df', '#ece1d6', '#feecd2', '#d8d8d8', '#595959', '#e9f9c9', '#bbb9a1', '#dfff82', '#c8c3ba', '#ffc299', '#d2d4c0', '#dac3ad', '#fed9a6', '#bfbfbf', '#3f3f3f', '#dff7ae', '#ada598', '#cfff43', '#ada598', '#ffa365', '#bcbfa1', '#c8a585', '#fec67a', '#a5a5a5', '#262626', '#a9ea25', '#2e2d21', '#6f9400', '#544e43', '#bf4d00', '#6c6f4b', '#6f5032', '#d77b00', '#7f7f7f', '#0c0c0c', '#74a50f', '#1f1e16', '#4a6300', '#38342d', '#7f3300', '#484a32', '#4a3521', '#8f5200'],\n columns: 10\n },\n clarity: {\n colors: ['#ffffff', '#292934', '#f3f2dc', '#d2533c', '#93a299', '#ad8f67', '#726056', '#4c5a6a', '#808da0', '#79463d', '#f2f2f2', '#e7e7ec', '#e7e5b9', '#f6dcd8', '#e9ecea', '#eee8e0', '#e4dedb', '#d8dde3', '#e5e8ec', '#e9d6d3', '#d8d8d8', '#c4c4d1', '#d5d185', '#edbab1', '#d3d9d6', '#ded2c2', '#c9beb8', '#b2bcc8', '#ccd1d9', '#d3aea7', '#bfbfbf', '#8a8aa3', '#aca73b', '#e4978a', '#bec7c1', '#cdbba3', '#af9e94', '#8c9bac', '#b2bac6', '#bd857c', '#a5a5a5', '#56566e', '#56531d', '#a43925', '#6b7c72', '#866b48', '#554840', '#39434f', '#5c697b', '#5a342d', '#7f7f7f', '#3b3b4b', '#22210b', '#6d2619', '#47534c', '#594730', '#39302b', '#262d35', '#3d4652', '#3c231e'],\n columns: 10\n },\n slipstream: {\n colors: ['#ffffff', '#000000', '#b4dcfa', '#212745', '#4e67c8', '#5eccf3', '#a7ea52', '#5dceaf', '#ff8021', '#f14124', '#f2f2f2', '#7f7f7f', '#8bc9f7', '#c7cce4', '#dbe0f4', '#def4fc', '#edfadc', '#def5ef', '#ffe5d2', '#fcd9d3', '#d8d8d8', '#595959', '#4facf3', '#909aca', '#b8c2e9', '#beeafa', '#dbf6b9', '#beebdf', '#ffcca6', '#f9b3a7', '#bfbfbf', '#3f3f3f', '#0d78c9', '#5967af', '#94a3de', '#9ee0f7', '#caf297', '#9de1cf', '#ffb279', '#f68d7b', '#a5a5a5', '#262626', '#063c64', '#181d33', '#31479f', '#11b2eb', '#81d319', '#34ac8b', '#d85c00', '#c3260c', '#7f7f7f', '#0c0c0c', '#021828', '#101322', '#202f6a', '#0b769c', '#568c11', '#22725c', '#903d00', '#821908'],\n columns: 10\n },\n metro: {\n colors: ['#ffffff', '#000000', '#d6ecff', '#4e5b6f', '#7fd13b', '#ea157a', '#feb80a', '#00addc', '#738ac8', '#1ab39f', '#f2f2f2', '#7f7f7f', '#a7d6ff', '#d9dde4', '#e5f5d7', '#fad0e4', '#fef0cd', '#c5f2ff', '#e2e7f4', '#c9f7f1', '#d8d8d8', '#595959', '#60b5ff', '#b3bcca', '#cbecb0', '#f6a1c9', '#fee29c', '#8be6ff', '#c7d0e9', '#94efe3', '#bfbfbf', '#3f3f3f', '#007dea', '#8d9baf', '#b2e389', '#f272af', '#fed46b', '#51d9ff', '#aab8de', '#5fe7d5', '#a5a5a5', '#262626', '#003e75', '#3a4453', '#5ea226', '#af0f5b', '#c58c00', '#0081a5', '#425ea9', '#138677', '#7f7f7f', '#0c0c0c', '#00192e', '#272d37', '#3f6c19', '#750a3d', '#835d00', '#00566e', '#2c3f71', '#0c594f'],\n columns: 10\n },\n flow: {\n colors: ['#ffffff', '#000000', '#dbf5f9', '#04617b', '#0f6fc6', '#009dd9', '#0bd0d9', '#10cf9b', '#7cca62', '#a5c249', '#f2f2f2', '#7f7f7f', '#b2e9f2', '#b4ecfc', '#c7e2fa', '#c4eeff', '#c9fafc', '#c9faed', '#e4f4df', '#edf2da', '#d8d8d8', '#595959', '#76d9e8', '#6adafa', '#90c6f6', '#89deff', '#93f5f9', '#94f6db', '#cae9c0', '#dbe6b6', '#bfbfbf', '#3f3f3f', '#21b2c8', '#20c8f7', '#59a9f2', '#4fceff', '#5df0f6', '#5ff2ca', '#b0dfa0', '#c9da91', '#a5a5a5', '#262626', '#105964', '#02485c', '#0b5394', '#0075a2', '#089ca2', '#0b9b74', '#54a838', '#7e9532', '#7f7f7f', '#0c0c0c', '#062328', '#01303d', '#073763', '#004e6c', '#05686c', '#07674d', '#387025', '#546321'],\n columns: 10\n },\n hardcover: {\n colors: ['#ffffff', '#000000', '#ece9c6', '#895d1d', '#873624', '#d6862d', '#d0be40', '#877f6c', '#972109', '#aeb795', '#f2f2f2', '#7f7f7f', '#e1dca5', '#f2e0c6', '#f0d0c9', '#f6e6d5', '#f5f2d8', '#e7e5e1', '#fbc7bc', '#eef0e9', '#d8d8d8', '#595959', '#d0c974', '#e6c28d', '#e2a293', '#eeceaa', '#ece5b2', '#cfccc3', '#f78f7a', '#dee2d4', '#bfbfbf', '#3f3f3f', '#a29a36', '#daa454', '#d4735e', '#e6b681', '#e2d88c', '#b7b2a5', '#f35838', '#ced3bf', '#a5a5a5', '#262626', '#514d1b', '#664515', '#65281a', '#a2641f', '#a39428', '#655f50', '#711806', '#879464', '#7f7f7f', '#0c0c0c', '#201e0a', '#442e0e', '#431b11', '#6c4315', '#6d621a', '#433f35', '#4b1004', '#5a6243'],\n columns: 10\n },\n trek: {\n colors: ['#ffffff', '#000000', '#fbeec9', '#4e3b30', '#f0a22e', '#a5644e', '#b58b80', '#c3986d', '#a19574', '#c17529', '#f2f2f2', '#7f7f7f', '#f7e09e', '#e1d6cf', '#fcecd5', '#eddfda', '#f0e7e5', '#f3eae1', '#ece9e3', '#f5e3d1', '#d8d8d8', '#595959', '#f3cc5f', '#c4ad9f', '#f9d9ab', '#dcc0b6', '#e1d0cc', '#e7d5c4', '#d9d4c7', '#ebc7a3', '#bfbfbf', '#3f3f3f', '#d29f0f', '#a78470', '#f6c781', '#cba092', '#d2b9b2', '#dbc1a7', '#c6bfab', '#e1ac76', '#a5a5a5', '#262626', '#694f07', '#3a2c24', '#c87d0e', '#7b4b3a', '#926255', '#a17242', '#7b7153', '#90571e', '#7f7f7f', '#0c0c0c', '#2a1f03', '#271d18', '#855309', '#523226', '#614138', '#6b4c2c', '#524b37', '#603a14'],\n columns: 10\n },\n verve: {\n colors: ['#ffffff', '#000000', '#d2d2d2', '#666666', '#ff388c', '#e40059', '#9c007f', '#68007f', '#005bd3', '#00349e', '#f2f2f2', '#7f7f7f', '#bdbdbd', '#e0e0e0', '#ffd7e8', '#ffc6dc', '#ffb8f1', '#f1b2ff', '#c3dcff', '#b8cfff', '#d8d8d8', '#595959', '#9d9d9d', '#c1c1c1', '#ffafd1', '#ff8eba', '#ff71e4', '#e365ff', '#87baff', '#72a0ff', '#bfbfbf', '#3f3f3f', '#696969', '#a3a3a3', '#ff87ba', '#ff5597', '#ff2ad7', '#d519ff', '#4b98ff', '#2b71ff', '#a5a5a5', '#262626', '#343434', '#4c4c4c', '#e90062', '#ab0042', '#75005f', '#4e005f', '#00449e', '#002676', '#7f7f7f', '#0c0c0c', '#151515', '#333333', '#9b0041', '#72002c', '#4e003f', '#34003f', '#002d69', '#00194f'],\n columns: 10\n },\n monochrome: {\n colors: ['#000000', '#1a1a1a', '#333333', '#4d4d4d', '#666666', '#808080', '#999999', '#b3b3b3', '#cccccc', '#e6e6e6', '#f2f2f2', '#ffffff'],\n columns: 12\n }\n};\n//# sourceMappingURL=palette-presets.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { ColorPaletteService } from './utils/color-palette.service';\nimport { classNames, Keys, dispatchEvent, guid, getTabIndex } from '@progress/kendo-react-common';\nimport { PALETTEPRESETS } from './models/palette-presets';\nimport { isPresent } from './utils/misc';\nimport { parseColor } from './utils/color-parser';\n/**\n * @hidden\n */\nexport var DEFAULT_TILE_SIZE = 24;\n/**\n * @hidden\n */\nexport var DEFAULT_COLUMNS_COUNT = 10;\n/**\n * @hidden\n */\nexport var DEFAULT_PRESET = 'office';\n/**\n * Represents the [KendoReact ColorPalette component]({% slug overview_colorpalette %}).\n *\n * @example\n * ```jsx\n * class App extends React.Component {\n * render() {\n * return ;\n * }\n * }\n * ReactDOM.render(, document.querySelector('my-app'));\n * ```\n */\nvar ColorPalette = /** @class */ (function (_super) {\n __extends(ColorPalette, _super);\n function ColorPalette(props) {\n var _this = _super.call(this, props) || this;\n /**\n * @hidden\n */\n _this.wrapper = null;\n _this.guid = guid();\n _this.onKeyDown = function (event) {\n switch (event.keyCode) {\n case Keys.down:\n _this.handleCellNavigation(0, 1);\n break;\n case Keys.up:\n _this.handleCellNavigation(0, -1);\n break;\n case Keys.right:\n _this.handleCellNavigation(1, 0);\n break;\n case Keys.left:\n _this.handleCellNavigation(-1, 0);\n break;\n case Keys.enter:\n _this.handleEnter(event);\n break;\n default: return;\n }\n event.preventDefault();\n };\n _this.onColorClick = function (color, event) {\n if (_this.isUncontrolled) {\n _this.setState({ selectedColor: color, focusedColor: color });\n }\n else {\n _this.setState({ focusedColor: color });\n }\n _this.dispatchChangeEvent(color, event);\n };\n _this.onFocus = function () {\n _this.setState({ focusedColor: _this.state.selectedColor || _this.paletteService.colorRows[0][0] });\n };\n _this.onBlur = function () {\n _this.setState({ focusedColor: undefined });\n };\n // The empty string for the `value` prop means no selection but controlled mode.\n _this.state = {\n selectedColor: _this.props.value !== undefined ? _this.props.value : _this.props.defaultValue,\n isFirstRender: true\n };\n return _this;\n }\n /**\n * @hidden\n */\n ColorPalette.prototype.focus = function () {\n if (this.wrapper) {\n this.wrapper.focus();\n }\n };\n /**\n * @hidden\n */\n ColorPalette.prototype.render = function () {\n var _this = this;\n var paletteInfo = this.getPaletteInfo();\n var svc = this.paletteService = new ColorPaletteService();\n svc.setColorMatrix(paletteInfo.colors, paletteInfo.columns);\n var selectedCellCoords = svc.getCellCoordsFor(this.state.selectedColor);\n var focusedCellCoords = svc.getCellCoordsFor(this.state.focusedColor);\n var className = classNames('k-widget k-colorpalette', { 'k-state-disabled': this.props.disabled });\n if (paletteInfo.colors.length) {\n return (React.createElement(\"div\", { className: className, onFocus: this.onFocus, onBlur: this.onBlur, onKeyDown: this.onKeyDown, \"aria-disabled\": this.props.disabled ? 'true' : undefined, \"aria-activedescendant\": selectedCellCoords && this.createCellId(selectedCellCoords), tabIndex: getTabIndex(this.props.tabIndex, this.props.disabled), ref: function (el) { return _this.wrapper = el; } },\n React.createElement(\"div\", { role: \"grid\" },\n React.createElement(\"table\", { className: \"k-palette k-reset\", role: \"presentation\" },\n React.createElement(\"tbody\", null, this.renderRows(svc.colorRows, selectedCellCoords, focusedCellCoords))))));\n }\n else {\n // In this way, the code prevents an eventual focus of the component when no cells are available.\n // This is needed because upon focus the first cell gets focused.\n return '';\n }\n };\n /**\n * @hidden\n */\n ColorPalette.getDerivedStateFromProps = function (props, state) {\n if (!state.isFirstRender && props.value !== undefined) {\n // The component is in controlled mode.\n if (props.value === '' && state.selectedColor !== undefined) {\n // The selection has to be removed.\n return { selectedColor: undefined };\n }\n else if (props.value !== '' && props.value !== state.selectedColor) {\n return { selectedColor: props.value };\n }\n }\n else if (state.isFirstRender) {\n return { isFirstRender: false };\n }\n return null;\n };\n ColorPalette.prototype.handleCellNavigation = function (horizontalStep, verticalStep) {\n if (this.focusedColorCooridanates) {\n var newCoords = this.paletteService.getNextCell(this.focusedColorCooridanates, horizontalStep, verticalStep);\n this.setState({ focusedColor: this.paletteService.getColorAt(newCoords) });\n }\n else {\n this.setState({ focusedColor: this.paletteService.colorRows[0][0] });\n }\n };\n ColorPalette.prototype.handleEnter = function (event) {\n if (this.isUncontrolled) {\n this.setState({ selectedColor: this.state.focusedColor });\n }\n this.dispatchChangeEvent(this.state.focusedColor, event);\n };\n ColorPalette.prototype.dispatchChangeEvent = function (value, event) {\n dispatchEvent(this.props.onChange, event, this, { value: value, rgbaValue: parseColor(value, 'rgba') });\n };\n Object.defineProperty(ColorPalette.prototype, \"focusedColorCooridanates\", {\n get: function () {\n return this.state.focusedColor ? this.paletteService.getCellCoordsFor(this.state.focusedColor) : undefined;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ColorPalette.prototype, \"isUncontrolled\", {\n get: function () {\n return this.props.value === undefined;\n },\n enumerable: true,\n configurable: true\n });\n ColorPalette.prototype.getPaletteInfo = function () {\n if (typeof this.props.palette === 'string') {\n var preset = PALETTEPRESETS[this.props.palette];\n if (isPresent(preset)) {\n return {\n colors: preset.colors,\n columns: this.props.columns || preset.columns || DEFAULT_COLUMNS_COUNT\n };\n }\n else {\n return { colors: [], columns: 0 };\n }\n }\n else {\n return { colors: this.props.palette || [], columns: this.props.columns || DEFAULT_COLUMNS_COUNT };\n }\n };\n ColorPalette.prototype.renderRows = function (rows, selectedCellCoords, focusedCellCoords) {\n var _this = this;\n return rows.map(function (row, i) {\n return React.createElement(\"tr\", { role: \"row\", key: i }, _this.renderColumns(row, i, selectedCellCoords, focusedCellCoords));\n });\n };\n ColorPalette.prototype.renderColumns = function (columns, rowIndex, selectedCellCoords, focusedCellCoords) {\n var _this = this;\n var rowIsSelected = selectedCellCoords !== undefined && selectedCellCoords.row === rowIndex;\n var selectedColumn = selectedCellCoords && selectedCellCoords.col;\n var rowIsFocused = focusedCellCoords !== undefined && focusedCellCoords.row === rowIndex;\n var focusedColumn = focusedCellCoords && focusedCellCoords.col;\n var tileSize = typeof this.props.tileSize !== 'number' ?\n this.props.tileSize : { width: this.props.tileSize, height: this.props.tileSize };\n var width = tileSize.width + 'px';\n var height = tileSize.height + 'px';\n return columns.map(function (color, i) {\n var isSelected = rowIsSelected && selectedColumn === i;\n var className = classNames('k-item', {\n 'k-state-selected': isSelected,\n 'k-state-focused': rowIsFocused && focusedColumn === i\n });\n return (React.createElement(\"td\", { className: className, \"aria-label\": color, \"aria-selected\": isSelected ? true : _this.props.disabled ? undefined : false, style: { backgroundColor: color, width: width, height: height, minWidth: width }, onClick: function (event) { return _this.onColorClick(color, event); }, id: _this.createCellId({ row: rowIndex, col: i }), key: i }));\n });\n };\n ColorPalette.prototype.createCellId = function (cellCoords) {\n return this.guid + \"_\" + cellCoords.row + \"_\" + cellCoords.col;\n };\n /**\n * @hidden\n */\n ColorPalette.propTypes = {\n palette: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.string), PropTypes.string]),\n columns: PropTypes.number,\n tileSize: PropTypes.any,\n defaultValue: PropTypes.string,\n value: PropTypes.string,\n disabled: PropTypes.bool,\n tabIndex: PropTypes.number,\n onChange: PropTypes.func\n };\n /**\n * @hidden\n */\n ColorPalette.defaultProps = {\n palette: DEFAULT_PRESET,\n tileSize: DEFAULT_TILE_SIZE\n };\n return ColorPalette;\n}(React.Component));\nexport { ColorPalette };\n//# sourceMappingURL=ColorPalette.js.map","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport { Popup } from '@progress/kendo-react-popup';\nimport { classNames } from '@progress/kendo-react-common';\n/**\n * @hidden\n */\nvar ANCHOR_VERTICAL_ALIGN = 'bottom';\n/**\n * @hidden\n */\nvar POPUP_VERTICAL_ALIGN = 'top';\n/**\n * @hidden\n */\nexport var Picker = function (props) {\n var popupSettings = props.popupSettings || {};\n var horizontalAlign = props.dir === 'rtl' ? 'right' : 'left';\n var anchorAlign = React.useMemo(function () { return ({ horizontal: horizontalAlign, vertical: ANCHOR_VERTICAL_ALIGN }); }, [horizontalAlign]);\n var popupAlign = React.useMemo(function () { return ({ horizontal: horizontalAlign, vertical: POPUP_VERTICAL_ALIGN }); }, [horizontalAlign]);\n return (React.createElement(React.Fragment, null,\n props.input,\n props.button,\n React.createElement(Popup, __assign({ style: __assign({}, (popupSettings || {}).style, { direction: props.dir }) }, popupSettings, { anchor: props.popupAnchor, anchorAlign: anchorAlign, popupAlign: popupAlign, show: props.open, open: props.onOpen, close: props.onClose, className: classNames('k-reset', popupSettings.className) }), props.content)));\n};\nPicker.displayName = 'KendoPickerComponent';\n//# sourceMappingURL=Picker.js.map","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { classNames, Keys, useRtl, getTabIndex } from '@progress/kendo-react-common';\nimport { Picker } from './Picker';\nimport { ColorGradient } from './ColorGradient';\nimport { ColorPalette, DEFAULT_PRESET, DEFAULT_TILE_SIZE } from './ColorPalette';\n/**\n * @hidden\n */\nvar DEFAULT_GRADIENT_SETTINGS = {\n opacity: true\n};\n/**\n * @hidden\n */\nvar DEFAULT_PALETTE_SETTINGS = {\n palette: DEFAULT_PRESET,\n tileSize: DEFAULT_TILE_SIZE\n};\n/**\n * @hidden\n */\nvar isControlled = function (prop) {\n return prop !== undefined;\n};\n/**\n * Represents the [KendoReact ColorPicker component]({% slug overview_colorpicker %}).\n *\n * @example\n * ```jsx\n * class App extends React.Component {\n * render() {\n * return ;\n * }\n * }\n * ReactDOM.render(, document.querySelector('my-app'));\n * ```\n */\nexport var ColorPicker = React.forwardRef(function (props, target) {\n var popupSettings = props.popupSettings, gradientSettings = props.gradientSettings, paletteSettings = props.paletteSettings, disabled = props.disabled, tabIndex = props.tabIndex, view = props.view, icon = props.icon, onChange = props.onChange, onFocus = props.onFocus, onBlur = props.onBlur;\n var focusableElementRef = React.useRef(null);\n var gradientRef = React.useRef(null);\n var paletteRef = React.useRef(null);\n var blurTimeoutRef = React.useRef();\n var focusElement = React.useCallback(function () {\n if (focusableElementRef.current) {\n focusableElementRef.current.focus();\n }\n }, []);\n React.useImperativeHandle(target, function () { return ({\n // we agreed that each element will have focus method exposed\n element: focusableElementRef.current,\n focus: focusElement\n }); });\n var _a = React.useState(false), focused = _a[0], setFocused = _a[1];\n var _b = React.useState(props.defaultValue), stateValue = _b[0], setStateValue = _b[1];\n var _c = React.useState(false), stateOpen = _c[0], setStateOpen = _c[1];\n var isValueControlled = isControlled(props.value);\n var isOpenControlled = isControlled(props.open);\n var value = isValueControlled ? props.value : stateValue;\n var open = isOpenControlled ? props.open : stateOpen;\n var setOpen = React.useCallback(function (nextOpen, isBlur) {\n if (!isOpenControlled) {\n if (!nextOpen && !isBlur && focusableElementRef && focusableElementRef.current) {\n focusableElementRef.current.focus();\n }\n setStateOpen(nextOpen);\n }\n }, [isOpenControlled]);\n var onKeyDownHandler = React.useCallback(function (event) {\n var altKey = event.altKey, keyCode = event.keyCode;\n if (keyCode === Keys.esc) {\n setOpen(false);\n return;\n }\n if (keyCode === Keys.enter && !isOpenControlled) {\n event.preventDefault();\n event.stopPropagation();\n setOpen(!open);\n return;\n }\n if (altKey && (keyCode === Keys.up || keyCode === Keys.down)) {\n event.preventDefault();\n event.stopPropagation();\n if (keyCode === Keys.up && focusableElementRef && focusableElementRef.current) {\n focusableElementRef.current.focus();\n setOpen(false);\n }\n if (keyCode === Keys.down) {\n setOpen(true);\n }\n }\n }, [open, isOpenControlled]);\n var onOpenHandler = React.useCallback(function () {\n // Skip content autofocus when in controlled mode\n if (!isOpenControlled) {\n if (gradientRef.current) {\n gradientRef.current.focus();\n }\n else if (paletteRef.current) {\n paletteRef.current.focus();\n }\n }\n }, [isOpenControlled]);\n var onClickHandler = React.useCallback(function () {\n setOpen(!open, true);\n }, [open]);\n var onFocusHandler = React.useCallback(function (event) {\n if (blurTimeoutRef.current) {\n clearTimeout(blurTimeoutRef.current);\n blurTimeoutRef.current = undefined;\n // case where moving back to input from popup\n // if (event.target === focusableElementRef.current) {\n // setOpen(false); // in this case we should focus input on keydown\n // }\n }\n else {\n setFocused(true);\n }\n if (onFocus) {\n onFocus.call(undefined, {\n nativeEvent: event.nativeEvent,\n syntheticEvent: event\n });\n }\n }, [onFocus]);\n var onBlurTimeout = React.useCallback(function () {\n setOpen(false, true);\n setFocused(false);\n blurTimeoutRef.current = undefined;\n }, []);\n var onBlurHandler = React.useCallback(function (event) {\n clearTimeout(blurTimeoutRef.current);\n blurTimeoutRef.current = setTimeout(onBlurTimeout);\n if (onBlur) {\n onBlur.call(undefined, {\n nativeEvent: event.nativeEvent,\n syntheticEvent: event\n });\n }\n }, [onBlur]);\n var onChangeHandler = React.useCallback(function (event, isPalette) {\n var currentValue = isPalette ? event.rgbaValue : event.value;\n if (!isValueControlled) {\n setStateValue(currentValue);\n }\n if (isPalette) {\n setOpen(false);\n }\n if (onChange) {\n onChange.call(undefined, {\n value: currentValue,\n nativeEvent: event.nativeEvent,\n syntheticEvent: event.syntheticEvent\n });\n }\n }, [isValueControlled, onChange]);\n var onPaletteChangeHandler = React.useCallback(function (event) { return onChangeHandler(event, true); }, [isControlled, onChangeHandler]);\n var dir = useRtl(focusableElementRef, props.dir);\n var iconClassName = props.iconClassName || (icon && \"k-icon k-i-\" + icon);\n var className = React.useMemo(function () { return classNames({\n 'k-picker-wrap': true,\n 'k-state-default': !disabled,\n 'k-state-disabled': disabled,\n 'k-state-focused': focused\n }); }, [focused, disabled]);\n return (React.createElement(\"span\", { className: 'k-widget k-colorpicker', dir: dir },\n React.createElement(\"span\", { className: className, ref: focusableElementRef, tabIndex: getTabIndex(tabIndex, disabled), onKeyDown: onKeyDownHandler, onFocus: onFocusHandler, onBlur: onBlurHandler },\n React.createElement(Picker, { dir: dir, open: open, onOpen: onOpenHandler, popupAnchor: focusableElementRef.current || undefined, popupSettings: __assign({}, popupSettings), input: (!iconClassName ? (React.createElement(\"span\", { className: 'k-selected-color', style: { backgroundColor: value } }, !value && React.createElement(\"span\", { className: 'k-icon k-i-line' }))) : (React.createElement(\"span\", { className: classNames('k-tool-icon', iconClassName) },\n React.createElement(\"span\", { className: 'k-selected-color', style: { backgroundColor: value } })))), button: (React.createElement(\"span\", { onClick: onClickHandler, className: 'k-select' },\n React.createElement(\"span\", { className: 'k-icon k-i-arrow-s' }))), content: (React.createElement(React.Fragment, null,\n (view === 'combo' || view === 'gradient') && (React.createElement(ColorGradient, __assign({}, gradientSettings, { tabIndex: 0, ref: gradientRef, value: value, onChange: onChangeHandler }))),\n (view === 'combo' || view === 'palette') && (React.createElement(ColorPalette, __assign({}, paletteSettings, { ref: paletteRef, value: value, onChange: onPaletteChangeHandler }))))) }))));\n});\nColorPicker.propTypes = {\n value: PropTypes.string,\n defaultValue: PropTypes.string,\n disabled: PropTypes.bool,\n view: PropTypes.oneOf(['gradient', 'palette', 'combo']),\n dir: PropTypes.string\n};\nColorPicker.defaultProps = {\n view: 'palette',\n gradientSettings: DEFAULT_GRADIENT_SETTINGS,\n paletteSettings: DEFAULT_PALETTE_SETTINGS\n};\nColorPicker.displayName = 'KendoColorPicker';\n//# sourceMappingURL=ColorPicker.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\n t[p[i]] = s[p[i]];\n return t;\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { guid, classNames, FloatingLabel } from '@progress/kendo-react-common';\nvar Input = /** @class */ (function (_super) {\n __extends(Input, _super);\n function Input(props) {\n var _this = _super.call(this, props) || this;\n _this._inputId = guid();\n _this.isInvalid = function (state) {\n var result = false;\n for (var prop in state) {\n if (state.hasOwnProperty(prop)) {\n result = result || state[prop];\n }\n }\n return result;\n };\n /**\n * @hidden\n */\n _this.setValidity = function () {\n if (_this._input && _this._input.setCustomValidity) {\n _this.validity.valid || !_this.validityStyles\n ? _this._input.classList.remove('k-state-invalid')\n : _this._input.classList.add('k-state-invalid');\n _this._input.setCustomValidity(_this.validity.valid\n ? ''\n : _this.props.validationMessage || '');\n }\n };\n _this.handleChange = function (event) {\n _this.setState({\n value: event.target.value\n });\n _this.valueDuringOnChange = event.target.value;\n if (_this.props.onChange) {\n _this.props.onChange.call(undefined, {\n syntheticEvent: event,\n nativeEvent: event.nativeEvent,\n value: event.target.value,\n target: _this\n });\n }\n _this.valueDuringOnChange = undefined;\n };\n /**\n * @hidden\n */\n _this.handleAutoFill = function (e) {\n if (e.animationName === 'autoFillStart') {\n var parent_1 = e.target.parentNode;\n if (parent_1 && parent_1.classList.contains('k-state-empty')) {\n parent_1.classList.remove('k-state-empty');\n }\n }\n };\n _this.state = {\n value: _this.props.defaultValue || Input.defaultProps.defaultValue\n };\n return _this;\n }\n /**\n * @hidden\n */\n Input.prototype.focus = function () {\n if (this._input) {\n this._input.focus();\n }\n };\n Object.defineProperty(Input.prototype, \"element\", {\n /**\n * Gets the native input element of the Input component.\n */\n get: function () {\n return this._input;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Input.prototype, \"value\", {\n /**\n * Gets the value of the Input.\n */\n get: function () {\n return this.valueDuringOnChange !== undefined\n ? this.valueDuringOnChange\n : this.props.value !== undefined\n ? this.props.value\n : this.state.value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Input.prototype, \"name\", {\n /**\n * Gets the `name` property of the Input.\n */\n get: function () {\n return this.props.name;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Input.prototype, \"validity\", {\n /**\n * Represents the validity state into which the Input is set.\n */\n get: function () {\n var result = {\n badInput: this._input ? this._input.validity.badInput : false,\n patternMismatch: this._input\n ? this._input.validity.patternMismatch\n : false,\n rangeOverflow: this._input ? this._input.validity.rangeOverflow : false,\n rangeUnderflow: this._input ? this._input.validity.rangeUnderflow : false,\n stepMismatch: this._input ? this._input.validity.stepMismatch : false,\n tooLong: this._input ? this._input.validity.tooLong : false,\n typeMismatch: this._input ? this._input.validity.typeMismatch : false,\n valueMissing: this._input ? this._input.validity.valueMissing : false\n };\n return __assign({}, result, { customError: this.props.validationMessage !== undefined, valid: this.props.valid !== undefined\n ? this.props.valid\n : this._input\n ? !this.isInvalid(result)\n : true });\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Input.prototype, \"validityStyles\", {\n /**\n * @hidden\n */\n get: function () {\n return this.props.validityStyles !== undefined\n ? this.props.validityStyles\n : Input.defaultProps.validityStyles;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @hidden\n */\n Input.prototype.componentDidMount = function () {\n this.forceUpdate();\n };\n /**\n * @hidden\n */\n Input.prototype.componentDidUpdate = function () {\n this.setValidity();\n };\n /**\n * @hidden\n */\n Input.prototype.render = function () {\n var _this = this;\n var _a = this.props, className = _a.className, label = _a.label, id = _a.id, validationMessage = _a.validationMessage, defaultValue = _a.defaultValue, valid = _a.valid, \n // Removed to support direct use in Form Field component\n visited = _a.visited, touched = _a.touched, modified = _a.modified, validityStyles = _a.validityStyles, style = _a.style, props = __rest(_a, [\"className\", \"label\", \"id\", \"validationMessage\", \"defaultValue\", \"valid\", \"visited\", \"touched\", \"modified\", \"validityStyles\", \"style\"]);\n var inputId = id || this._inputId;\n var isValid = !this.validityStyles || this.validity.valid;\n var inputClassName = classNames(className, 'k-textbox');\n var textbox = (React.createElement(\"input\", __assign({}, props, { style: !label\n ? style\n : undefined, value: this.value, id: inputId, className: inputClassName, onChange: this.handleChange, onAnimationStart: this.handleAutoFill, ref: function (el) { _this._input = el; } })));\n return label ?\n (React.createElement(FloatingLabel, { label: label, children: textbox, value: String(this.value), placeholder: props.placeholder, id: inputId, valid: isValid, style: style, dir: props.dir }))\n : textbox;\n };\n /**\n * @hidden\n */\n Input.propTypes = {\n label: PropTypes.string,\n validationMessage: PropTypes.string,\n required: PropTypes.bool,\n validate: PropTypes.bool\n };\n /**\n * @hidden\n */\n Input.defaultProps = {\n defaultValue: '',\n required: false,\n validityStyles: true\n };\n return Input;\n}(React.Component));\nexport { Input };\n//# sourceMappingURL=Input.js.map","/**\n * @hidden\n */\nexport var ResultType;\n(function (ResultType) {\n ResultType[ResultType[\"Literal\"] = 0] = \"Literal\";\n ResultType[ResultType[\"Mask\"] = 1] = \"Mask\";\n ResultType[ResultType[\"Undefined\"] = 2] = \"Undefined\";\n})(ResultType || (ResultType = {}));\n/**\n * @hidden\n */\nvar Result = /** @class */ (function () {\n function Result(value, rest, type) {\n if (type === void 0) { type = ResultType.Undefined; }\n this.value = value;\n this.rest = rest;\n this.type = type;\n }\n // map :: Functor f => f a ~> (a -> b) -> f b\n Result.prototype.map = function (fn) {\n return new Result(fn(this.value), this.rest);\n };\n // chain :: Chain m => m a ~> (a -> m b) -> m b\n Result.prototype.chain = function (fn) {\n return fn(this.value, this.rest);\n };\n Result.prototype.fold = function (s, _ /*we don't need it*/) {\n return s(this.value, this.rest);\n };\n Result.prototype.concat = function (r) {\n return this.map(function (vs, _) { return r.chain(function (v, __) { return vs.concat([v]); }); });\n };\n Result.prototype.toString = function () {\n return \"Result({ value: '\" + this.value + \"', rest: \" + this.rest + \" })\";\n };\n return Result;\n}());\nexport { Result };\n//# sourceMappingURL=result.js.map","/**\n * @hidden\n */\nvar Stream = /** @class */ (function () {\n function Stream(input, control) {\n if (input === void 0) { input = []; }\n if (control === void 0) { control = []; }\n this.input = input;\n this.control = control;\n this.inputCursor = 0;\n this.controlCursor = 0;\n }\n Stream.prototype.eof = function () {\n return this.inputCursor >= this.input.length;\n };\n // Get the first value from the input.\n Stream.prototype.next = function () {\n return {\n char: this.input[this.inputCursor++],\n control: this.control[this.controlCursor++]\n };\n };\n Stream.prototype.peek = function () {\n return {\n char: this.input[this.inputCursor],\n control: this.control[this.controlCursor]\n };\n };\n Stream.prototype.eat_input = function () {\n this.inputCursor++;\n };\n Stream.prototype.eat_control = function () {\n this.controlCursor++;\n };\n Stream.prototype.eat = function () {\n this.inputCursor++;\n this.controlCursor++;\n };\n return Stream;\n}());\nexport { Stream };\n//# sourceMappingURL=stream.js.map","import { Result, ResultType } from './result';\nimport { Stream } from './stream';\nvar toArray = function (value) { return (value || '').split(''); };\nvar ESCAPE_CHARACTER = '\\\\';\n/**\n * @hidden\n */\nvar Parser = /** @class */ (function () {\n function Parser(parse) {\n this.parse = parse;\n }\n Parser.prototype.run = function (input, control) {\n if (control === void 0) { control = ''; }\n if (input instanceof Stream) {\n return this.parse(input);\n }\n else {\n return this.parse(new Stream(toArray(input), toArray(control)));\n }\n };\n // map :: Functor f => f a ~> (a -> b) -> f b\n Parser.prototype.map = function (f) {\n var _this = this;\n return new Parser(function (stream) { return _this.parse(stream).map(f); });\n };\n // chain :: Chain m => m a ~> (a -> m b) -> m b\n Parser.prototype.chain = function (f) {\n var _this = this;\n return new Parser(function (stream) { return _this.parse(stream).chain(function (v, s) { return f(v).run(s); }); });\n };\n Parser.prototype.isLiteral = function (c) {\n return this.run(c).type === ResultType.Literal;\n };\n return Parser;\n}());\nexport { Parser };\n/**\n * @hidden\n */\nexport var mask = function (_a) {\n var prompt = _a.prompt, promptPlaceholder = _a.promptPlaceholder;\n return function (rule) { return new Parser(function (stream) {\n while (!stream.eof()) {\n var _a = stream.peek(), char = _a.char, control = _a.control;\n if (char === control && control === prompt) {\n stream.eat();\n return new Result(prompt, stream, ResultType.Mask);\n }\n if (rule.test(char)) {\n stream.eat();\n return new Result(char, stream, ResultType.Mask);\n }\n if (char === promptPlaceholder) {\n stream.eat();\n return new Result(prompt, stream, ResultType.Mask);\n }\n stream.eat_input();\n }\n stream.eat();\n return new Result(prompt, stream, ResultType.Mask);\n }); };\n};\n/**\n * @hidden\n */\nexport var literal = function (_token) { return new Parser(function (stream) {\n // let {char, control} = stream.peek();\n var char = stream.peek().char;\n if (char === _token) {\n stream.eat();\n return new Result(_token, stream, ResultType.Literal);\n }\n // if (control === _token) {\n // while (!stream.eof() && char !== _token) {\n // stream.eat_input();\n // char = stream.peek().char;\n // }\n // }\n //\n // if (control !== undefined) {\n // stream.eat();\n // }\n return new Result(_token, stream, ResultType.Literal);\n}); };\n/**\n * @hidden\n */\nexport var unmask = function (prompt) { return function (rule) { return new Parser(function (stream) {\n while (!stream.eof()) {\n var _a = stream.peek(), char = _a.char, control = _a.control;\n if (char === prompt && control === prompt) {\n stream.eat();\n return new Result(char, stream);\n }\n if (rule.test(char)) {\n stream.eat();\n return new Result(char, stream);\n }\n stream.eat_input();\n }\n stream.eat();\n return new Result('', stream);\n}); }; };\n/**\n * @hidden\n */\nexport var unliteral = function (_token) { return new Parser(function (stream) {\n if (stream.eof()) {\n return new Result('', stream);\n }\n var char = stream.peek().char;\n if (char === _token) {\n stream.eat();\n }\n return new Result(_token, stream);\n}); };\n/**\n * @hidden\n */\nexport var token = function (rules, creator) { return new Parser(function (stream) {\n var char = stream.next().char;\n var rule = rules[char];\n if (char === ESCAPE_CHARACTER) {\n char = stream.next().char;\n return new Result(creator.literal(char), stream);\n }\n if (!rule) {\n return new Result(creator.literal(char), stream);\n }\n return new Result(creator.mask(rule), stream);\n}); };\n/**\n * @hidden\n */\nexport var rawMask = function (_a) {\n var prompt = _a.prompt, promptPlaceholder = _a.promptPlaceholder;\n return new Parser(function (stream) {\n var char = stream.next().char;\n if (char === prompt) {\n return new Result(promptPlaceholder, stream);\n }\n return new Result(char, stream);\n });\n};\n/**\n * @hidden\n */\nexport var rawLiteral = function (includeLiterals) { return new Parser(function (stream) {\n var char = stream.next().char;\n if (includeLiterals) {\n return new Result(char, stream);\n }\n return new Result('', stream);\n}); };\n//# sourceMappingURL=parsers.js.map","import { Parser } from './parsers';\nimport { Result } from './result';\n/**\n * @hidden\n */\nvar always = function (value) { return new Parser(function (stream) { return new Result(value, stream); }); };\n/**\n * @hidden\n */\nvar append = function (p1, p2) { return p1.chain(function (vs) { return p2.map(function (v) { return vs.concat([v]); }); }); };\n/**\n * @hidden\n */\nexport var sequence = function (list) { return list.reduce(function (acc, parser) { return append(acc, parser); }, always([])); };\n/**\n * @hidden\n */\nexport var greedy = function (parser) { return new Parser(function (stream) {\n var result = new Result([], stream);\n while (!stream.eof()) {\n result = result.concat(parser.run(stream));\n }\n return result;\n}); };\n//# sourceMappingURL=combinators.js.map","import { greedy, sequence } from './parsing/combinators';\nimport { literal, mask as maskParser, rawLiteral, rawMask, token, unliteral, unmask } from './parsing/parsers';\n/**\n * @hidden\n */\nvar MaskingService = /** @class */ (function () {\n function MaskingService() {\n this.rules = {};\n this.prompt = '_';\n this.mask = '';\n this.promptPlaceholder = ' ';\n this.includeLiterals = false;\n this.maskTokens = [];\n this.unmaskTokens = [];\n this.rawTokens = [];\n this.validationTokens = [];\n }\n MaskingService.prototype.update = function (_a) {\n var _b = _a.mask, mask = _b === void 0 ? '' : _b, _c = _a.prompt, prompt = _c === void 0 ? '' : _c, _d = _a.promptPlaceholder, promptPlaceholder = _d === void 0 ? ' ' : _d, _e = _a.rules, rules = _e === void 0 ? {} : _e, _f = _a.includeLiterals, includeLiterals = _f === void 0 ? false : _f;\n this.mask = mask;\n this.prompt = prompt;\n this.promptPlaceholder = promptPlaceholder;\n this.rules = rules;\n this.includeLiterals = includeLiterals;\n this.tokenize();\n };\n MaskingService.prototype.validationValue = function (maskedValue) {\n if (maskedValue === void 0) { maskedValue = ''; }\n var value = maskedValue;\n sequence(this.validationTokens)\n .run(maskedValue)\n .fold(function (unmasked) {\n value = unmasked.join('');\n });\n return value;\n };\n MaskingService.prototype.rawValue = function (maskedValue) {\n if (maskedValue === void 0) { maskedValue = ''; }\n var value = maskedValue;\n if (!this.rawTokens.length) {\n return value;\n }\n sequence(this.rawTokens)\n .run(maskedValue)\n .fold(function (unmasked) {\n value = unmasked.join('');\n });\n return value;\n };\n /**\n * @hidden\n */\n MaskingService.prototype.maskRaw = function (rawValue) {\n if (rawValue === void 0) { rawValue = ''; }\n var value = rawValue;\n if (!this.maskTokens.length) {\n return value;\n }\n sequence(this.maskTokens)\n .run(rawValue)\n .fold(function (masked) {\n value = masked.join('');\n });\n return value;\n };\n MaskingService.prototype.maskInput = function (input, control, splitPoint) {\n if (input.length < control.length) {\n return this.maskRemoved(input, control, splitPoint);\n }\n return this.maskInserted(input, control, splitPoint);\n };\n MaskingService.prototype.maskInRange = function (pasted, oldValue, start, end) {\n var value = '';\n var selection = end;\n var beforeChange = oldValue.split('').slice(0, start);\n var afterChange = oldValue.split('').slice(end);\n sequence(this.maskTokens.slice(start, end))\n .run(pasted)\n .fold(function (masked) {\n value = beforeChange\n .concat(masked)\n .concat(afterChange)\n .join('');\n });\n return {\n selection: selection,\n value: value\n };\n };\n MaskingService.prototype.maskRemoved = function (input, control, splitPoint) {\n var _this = this;\n var value = '';\n var selection = splitPoint;\n var unchanged = input.split('').slice(splitPoint);\n var changed = input.split('').slice(0, splitPoint).join('');\n var take = this.maskTokens.length - (input.length - splitPoint);\n sequence(this.maskTokens.slice(0, take))\n .run(changed, control)\n .fold(function (masked) {\n selection = _this.adjustPosition(masked, selection);\n value = masked.concat(unchanged).join('');\n });\n return {\n selection: selection,\n value: value\n };\n };\n MaskingService.prototype.adjustPosition = function (input, selection) {\n var caretChar = input[selection];\n var isLiteral = this.maskTokens[selection].isLiteral(caretChar);\n if (!isLiteral && caretChar !== this.prompt) {\n return selection + 1;\n }\n return selection;\n };\n MaskingService.prototype.maskInserted = function (input, control, splitPoint) {\n var _this = this;\n var value = '';\n var selection = splitPoint;\n var changed = input.slice(0, splitPoint);\n sequence(this.unmaskTokens)\n .run(changed, control)\n .chain(function (unmasked) {\n selection = unmasked.join('').length;\n var unchanged = control.slice(selection);\n return sequence(_this.maskTokens)\n .run(unmasked.join('') + unchanged, control);\n })\n .fold(function (masked) {\n value = masked.join('');\n });\n return {\n selection: selection,\n value: value\n };\n };\n Object.defineProperty(MaskingService.prototype, \"maskTokenCreator\", {\n get: function () {\n var _a = this, prompt = _a.prompt, promptPlaceholder = _a.promptPlaceholder;\n return {\n literal: function (rule) { return literal(rule); },\n mask: function (rule) { return maskParser({ prompt: prompt, promptPlaceholder: promptPlaceholder })(rule); }\n };\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MaskingService.prototype, \"unmaskTokenCreator\", {\n get: function () {\n var _this = this;\n return {\n literal: function (rule) { return unliteral(rule); },\n mask: function (rule) { return unmask(_this.prompt)(rule); }\n };\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MaskingService.prototype, \"rawTokenCreator\", {\n get: function () {\n var _a = this, prompt = _a.prompt, promptPlaceholder = _a.promptPlaceholder, includeLiterals = _a.includeLiterals;\n return {\n literal: function (_) { return rawLiteral(includeLiterals); },\n mask: function (_) { return rawMask({ prompt: prompt, promptPlaceholder: promptPlaceholder }); }\n };\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MaskingService.prototype, \"validationTokenCreator\", {\n get: function () {\n var prompt = this.prompt;\n return {\n literal: function (_) { return rawLiteral(false); },\n mask: function (_) { return rawMask({ prompt: prompt, promptPlaceholder: '' }); }\n };\n },\n enumerable: true,\n configurable: true\n });\n MaskingService.prototype.tokenize = function () {\n var _this = this;\n greedy(token(this.rules, this.maskTokenCreator))\n .run(this.mask)\n .fold(function (tokens, _) {\n _this.maskTokens = tokens;\n });\n greedy(token(this.rules, this.unmaskTokenCreator))\n .run(this.mask)\n .fold(function (tokens, _) {\n _this.unmaskTokens = tokens;\n });\n greedy(token(this.rules, this.rawTokenCreator))\n .run(this.mask)\n .fold(function (tokens, _) {\n _this.rawTokens = tokens;\n });\n greedy(token(this.rules, this.validationTokenCreator))\n .run(this.mask)\n .fold(function (tokens, _) {\n _this.validationTokens = tokens;\n });\n };\n return MaskingService;\n}());\nexport { MaskingService };\n//# sourceMappingURL=masking.service.js.map","/**\n * @hidden\n */\nvar defaultRules = {\n '#': /[\\d\\s\\+\\-]/,\n '&': /[\\S]/,\n '0': /[\\d]/,\n '9': /[\\d\\s]/,\n '?': /[a-zA-Z\\s]/,\n 'A': /[a-zA-Z0-9]/,\n 'C': /./,\n 'L': /[a-zA-Z]/,\n 'a': /[a-zA-Z0-9\\s]/\n};\n/**\n * @hidden\n */\nvar returnFalse = function () { return false; };\n/**\n * @hidden\n */\nvar validationMessage = 'Please enter a valid value!';\n/**\n * @hidden\n */\nvar maskingChanged = function (prev, next) {\n return prev.includeLiterals !== next.includeLiterals ||\n prev.mask !== next.mask ||\n prev.prompt !== next.prompt ||\n prev.promptPlaceholder !== next.promptPlaceholder ||\n !sameRules(prev.rules, next.rules);\n};\n/**\n * @hidden\n */\nvar sameRules = function (rules1, rules2) {\n if (!!rules1 !== !!rules2) {\n return false;\n }\n if (rules1 === rules2 || (!rules1 || !rules2)) {\n return true;\n }\n var same = true;\n for (var key in rules1) {\n if (rules1[key] !== rules2[key]) {\n same = false;\n break;\n }\n }\n if (same) {\n for (var key in rules2) {\n if (!rules1.hasOwnProperty(key)) {\n same = false;\n break;\n }\n }\n }\n return same;\n};\nexport { defaultRules, maskingChanged, returnFalse, validationMessage };\n//# sourceMappingURL=utils.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { MaskingService } from './masking.service';\nimport { defaultRules, maskingChanged, returnFalse, validationMessage } from './utils';\nimport { guid, classNames, FloatingLabel, getTabIndex } from '@progress/kendo-react-common';\n/**\n * Represents the props of the [KendoReact MaskedTextBox component]({% slug overview_maskedtextbox %}).\n */\nvar MaskedTextBox = /** @class */ (function (_super) {\n __extends(MaskedTextBox, _super);\n function MaskedTextBox() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /**\n * @hidden\n */\n _this.state = {};\n _this._inputId = \"k-\" + guid();\n _this._service = new MaskingService();\n _this._isPasted = false;\n _this._selection = [null, null];\n _this._input = null;\n _this.pasteHandler = function (event) {\n var _a = event.target, selectionStart = _a.selectionStart, selectionEnd = _a.selectionEnd;\n if (selectionEnd === selectionStart) {\n return;\n }\n _this._isPasted = true;\n _this._selection = [selectionStart || 0, selectionEnd || 0];\n };\n _this.onChangeHandler = function (event) {\n var input = event.currentTarget;\n var value = input.value;\n var start = _this._selection[0] || 0;\n var end = _this._selection[1] || 0;\n if (!_this.props.mask) {\n _this._isPasted = false;\n _this._selection = [null, null];\n _this.triggerOnChange(value, event);\n return;\n }\n var maskedValue = _this.value;\n var result;\n if (_this._isPasted) {\n _this._isPasted = false;\n var rightPart = maskedValue.length - end;\n var to = value.length - rightPart;\n result = _this._service.maskInRange(value.slice(start, to), maskedValue, start, end);\n }\n else {\n result = _this._service.maskInput(value, maskedValue, input.selectionStart || 0);\n }\n _this._selection = [result.selection, result.selection];\n _this.triggerOnChange(result.value, event);\n };\n _this.focusHandler = function (event) {\n if (!_this.state.focused) {\n _this.setState({ focused: true });\n if (_this.props.onFocus) {\n _this.props.onFocus.call(undefined, {\n target: _this,\n syntheticEvent: event,\n nativeEvent: event.nativeEvent\n });\n }\n }\n };\n _this.blurHandler = function (event) {\n if (_this.state.focused) {\n _this.setState({ focused: false });\n if (_this.props.onBlur) {\n _this.props.onBlur.call(undefined, {\n target: _this,\n syntheticEvent: event,\n nativeEvent: event.nativeEvent\n });\n }\n }\n };\n _this.setValidity = function () {\n if (_this.element) {\n _this.element.setCustomValidity(_this.validity.valid\n ? ''\n : _this.props.validationMessage || validationMessage);\n }\n };\n return _this;\n }\n /**\n * @hidden\n */\n MaskedTextBox.prototype.focus = function () {\n if (this._input) {\n this._input.focus();\n }\n };\n Object.defineProperty(MaskedTextBox.prototype, \"element\", {\n /**\n * Gets the element of the MaskedTextBox.\n *\n * @return - An `HTMLInputElement`.\n *\n * @example\n * ```jsx\n * class App extends React.Component {\n * constructor(props) {\n * super(props);\n * }\n * element = null;\n * render() {\n * return (\n *
    \n * \n * this.element = component ? component.element : null}\n * />\n * \n *
    \n * );\n * }\n * }\n *\n * ReactDOM.render(\n * ,\n * document.getElementsByTagName('my-app')[0]\n * );\n * ```\n */\n get: function () {\n return this._input;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MaskedTextBox.prototype, \"value\", {\n /**\n * Gets the value with the mask of the MaskedTextBox.\n */\n get: function () {\n if (this._valueDuringOnChange !== undefined) {\n return this._valueDuringOnChange;\n }\n else if (this.props.value !== undefined) {\n return this.props.value;\n }\n else if (this.state.value !== undefined) {\n return this.state.value;\n }\n else if (this.props.defaultValue !== undefined) {\n return this.props.defaultValue;\n }\n return '';\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MaskedTextBox.prototype, \"rawValue\", {\n /**\n * Gets the raw value without the mask of the MaskedTextBox.\n */\n get: function () {\n return this._service.rawValue(this.value);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MaskedTextBox.prototype, \"validity\", {\n /**\n * Represents the validity state into which the MaskedTextBox is set.\n */\n get: function () {\n var maskedValue = this.value;\n var value = this._service.validationValue(maskedValue);\n var customError = this.props.validationMessage !== undefined;\n var valid = (this.props.valid !== undefined ?\n this.props.valid : ((!this.required || !!value)) &&\n (!this.props.maskValidation || !this.props.prompt || maskedValue.indexOf(this.props.prompt) === -1));\n return {\n customError: customError,\n valid: valid,\n valueMissing: !value\n };\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MaskedTextBox.prototype, \"validityStyles\", {\n /**\n * @hidden\n */\n get: function () {\n return this.props.validityStyles !== undefined\n ? this.props.validityStyles\n : MaskedTextBox.defaultProps.validityStyles;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MaskedTextBox.prototype, \"required\", {\n /**\n * @hidden\n */\n get: function () {\n return this.props.required !== undefined\n ? this.props.required\n : MaskedTextBox.defaultProps.required;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(MaskedTextBox.prototype, \"name\", {\n /**\n * Gets the `name` property of the MaskedTextBox.\n */\n get: function () {\n return this.props.name;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @hidden\n */\n MaskedTextBox.prototype.componentDidUpdate = function (prevProps, prevState) {\n if (this.element && this.state.focused && prevState.focused) {\n var _a = this._selection, start = _a[0], end = _a[1];\n var prevSelection = prevProps.selection;\n var nextSelection = this.props.selection;\n if ((!prevSelection && nextSelection) ||\n (prevSelection && nextSelection &&\n (prevSelection.start !== nextSelection.start || prevSelection.end !== nextSelection.end))) {\n start = nextSelection.start;\n end = nextSelection.end;\n }\n if (start !== null && end !== null) {\n this.element.setSelectionRange(start, end);\n }\n }\n if (maskingChanged(prevProps, this.props)) {\n this.updateService();\n }\n this.setValidity();\n };\n /**\n * @hidden\n */\n MaskedTextBox.prototype.componentDidMount = function () {\n this.updateService();\n this.setValidity();\n };\n /**\n * @hidden\n */\n MaskedTextBox.prototype.render = function () {\n var _this = this;\n var inputId = this.props.id || this._inputId;\n var isValid = !this.validityStyles || this.validity.valid;\n var component = (React.createElement(\"span\", { dir: this.props.dir, className: classNames('k-widget k-maskedtextbox', this.props.className, {\n 'k-state-focused': this.state.focused,\n 'k-state-disabled': this.props.disabled,\n 'k-state-invalid': !isValid\n }), style: !this.props.label\n ? { width: this.props.width }\n : undefined },\n React.createElement(\"input\", { type: \"text\", autoComplete: \"off\", autoCorrect: \"off\", autoCapitalize: \"off\", spellCheck: false, className: \"k-textbox\", value: this.value, id: inputId, name: this.props.name, tabIndex: getTabIndex(this.props.tabIndex, this.props.disabled, true), accessKey: this.props.accessKey, title: this.props.title, disabled: this.props.disabled || undefined, readOnly: this.props.readonly || undefined, placeholder: this.props.placeholder, ref: function (input) { return _this._input = input; }, onChange: this.onChangeHandler, onPaste: this.pasteHandler, onFocus: this.focusHandler, onBlur: this.blurHandler, onDragStart: returnFalse, onDrop: returnFalse })));\n return this.props.label\n ? (React.createElement(FloatingLabel, { id: inputId, value: this.value, valid: isValid, placeholder: this.props.placeholder, label: this.props.label, children: component, style: { width: this.props.width }, dir: this.props.dir }))\n : component;\n };\n MaskedTextBox.prototype.triggerOnChange = function (maskedValue, event) {\n this.setState({\n value: maskedValue\n });\n if (this.props.onChange) {\n this._valueDuringOnChange = maskedValue;\n this.props.onChange.call(undefined, {\n syntheticEvent: event,\n nativeEvent: event.nativeEvent,\n selectionStart: this._selection[0],\n selectionEnd: this._selection[1],\n target: this,\n value: this.value\n });\n this._valueDuringOnChange = undefined;\n }\n };\n MaskedTextBox.prototype.updateService = function (extra) {\n var config = Object.assign({\n includeLiterals: this.props.includeLiterals,\n mask: this.props.mask,\n prompt: this.props.prompt,\n promptPlaceholder: this.props.promptPlaceholder,\n rules: this.rules\n }, extra); // tslint:disable-line:align\n this._service.update(config);\n };\n Object.defineProperty(MaskedTextBox.prototype, \"rules\", {\n get: function () {\n return Object.assign({}, defaultRules, this.props.rules);\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @hidden\n */\n MaskedTextBox.propTypes = {\n value: PropTypes.string,\n defaultValue: PropTypes.string,\n placeholder: PropTypes.string,\n title: PropTypes.string,\n dir: PropTypes.string,\n id: PropTypes.string,\n width: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.number\n ]),\n tabIndex: PropTypes.number,\n accessKey: PropTypes.string,\n disabled: PropTypes.bool,\n readonly: PropTypes.bool,\n prompt: PropTypes.string,\n promptPlaceholder: PropTypes.string,\n includeLiterals: PropTypes.bool,\n maskValidation: PropTypes.bool,\n mask: PropTypes.string,\n rules: function (props, propName, componentName) {\n var rules = props.rules;\n if (rules !== undefined) {\n var valid = Object.entries(rules)\n .some(function (e) { return typeof e !== 'string' || !(rules[e] instanceof RegExp); });\n if (!valid) {\n return new Error('Invalid prop `' + propName + '` supplied to' +\n ' `' + componentName + '`. Validation failed.');\n }\n }\n },\n selection: PropTypes.shape({\n start: PropTypes.number.isRequired,\n end: PropTypes.number.isRequired\n }),\n name: PropTypes.string,\n label: PropTypes.string,\n validationMessage: PropTypes.string,\n required: PropTypes.bool,\n valid: PropTypes.bool,\n validityStyles: PropTypes.bool,\n onChange: PropTypes.func\n };\n /**\n * @hidden\n */\n MaskedTextBox.defaultProps = {\n prompt: '_',\n promptPlaceholder: ' ',\n includeLiterals: false,\n maskValidation: true,\n rules: defaultRules,\n required: false,\n validityStyles: true\n };\n return MaskedTextBox;\n}(React.Component));\nexport { MaskedTextBox };\n//# sourceMappingURL=MaskedTextBox.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { registerForIntl, provideIntlService, registerForLocalization, provideLocalizationService } from '@progress/kendo-react-intl';\nimport { guid, classNames, FloatingLabel, dispatchEvent, getTabIndex } from '@progress/kendo-react-common';\nimport { messages, numericIncreaseValue, numericDecreaseValue } from './../messages';\nvar VALIDATION_MESSAGE = 'Please enter a valid value!';\n// tslint:enable:max-line-length\nvar NumericTextBox = /** @class */ (function (_super) {\n __extends(NumericTextBox, _super);\n function NumericTextBox(props) {\n var _this = _super.call(this, props) || this;\n _this.valueDuringOnChange = undefined;\n _this.textBeforeInput = '';\n _this._inputId = guid();\n _this.setValidity = function () {\n if (_this.element && _this.element.setCustomValidity) {\n _this.element.setCustomValidity(_this.validity.valid\n ? ''\n : _this.props.validationMessage || VALIDATION_MESSAGE);\n }\n };\n _this.elementChange = _this.elementChange.bind(_this);\n _this.increase = _this.increase.bind(_this);\n _this.decrease = _this.decrease.bind(_this);\n _this.wheel = _this.wheel.bind(_this);\n _this.keyDown = _this.keyDown.bind(_this);\n var initialState = {\n value: null,\n looselyFormattedText: null,\n selectionStart: 0,\n selectionEnd: 0,\n decimalSelect: false\n };\n if (_this.props.value !== undefined) {\n initialState.value = _this.props.value;\n }\n else if (_this.props.defaultValue !== undefined) {\n initialState.value = _this.props.defaultValue;\n }\n _this.state = initialState;\n return _this;\n }\n Object.defineProperty(NumericTextBox.prototype, \"name\", {\n /**\n * Gets the `name` property of the NumericTextBox.\n */\n get: function () {\n return this.props.name;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(NumericTextBox.prototype, \"value\", {\n /**\n * Gets the value of the NumericTextBox.\n */\n get: function () {\n if (this.valueDuringOnChange !== undefined) {\n return this.valueDuringOnChange;\n }\n else {\n return this.state.value;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(NumericTextBox.prototype, \"validity\", {\n /**\n * Represents the validity state into which the NumericTextBox is set.\n */\n get: function () {\n // The NumericTextBox currently autocorrect its' value,\n // so the only invalid state is if it's required and\n // the value is null!\n var customError = this.props.validationMessage !== undefined;\n var isValid = (!this.required || (this.value !== null));\n var valid = this.props.valid !== undefined ? this.props.valid : isValid;\n return {\n customError: customError,\n valid: valid,\n valueMissing: this.value === null\n };\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(NumericTextBox.prototype, \"validityStyles\", {\n /**\n * @hidden\n */\n get: function () {\n return this.props.validityStyles !== undefined\n ? this.props.validityStyles\n : NumericTextBox.defaultProps.validityStyles;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(NumericTextBox.prototype, \"required\", {\n /**\n * @hidden\n */\n get: function () {\n return this.props.required !== undefined\n ? this.props.required\n : NumericTextBox.defaultProps.required;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @hidden\n */\n NumericTextBox.prototype.focus = function () {\n if (this._element) {\n this._element.focus();\n }\n };\n Object.defineProperty(NumericTextBox.prototype, \"element\", {\n /**\n * Gets the element of the NumericTextBox.\n *\n * @return - An `HTMLInputElement`.\n *\n * @example\n * ```jsx\n * class App extends React.Component {\n * constructor(props) {\n * super(props);\n * }\n * element = null;\n * render() {\n * return (\n *
    \n * \n * this.element = numericTextBox ? numericTextBox.element : null}\n * />\n * \n *
    \n * );\n * }\n * }\n *\n * ReactDOM.render(\n * ,\n * document.getElementsByTagName('my-app')[0]\n * );\n * ```\n */\n get: function () {\n return this._element;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @hidden\n */\n NumericTextBox.getDerivedStateFromProps = function (props, state) {\n if (props.value !== undefined && props.value !== state.value) {\n return { value: props.value };\n }\n return null;\n };\n /**\n * @hidden\n */\n NumericTextBox.prototype.componentDidMount = function () {\n if (this.element) {\n this.textBeforeInput = this.element.value;\n }\n this.setValidity();\n };\n /**\n * @hidden\n */\n NumericTextBox.prototype.componentDidUpdate = function (_, prevState) {\n if (!(document && document.activeElement !== this.element || !this.element) &&\n this.state.looselyFormattedText !== null) {\n // An IE related issue.\n // When having multiple inputs and if selection is applied, the caret moves to the latest changed input.\n // So, skip the application of the selection if the input is not focused.\n if (this.element.value !== this.state.looselyFormattedText && this.state.value === prevState.value) {\n // culture is changed, typing was not valid or was ranged.\n this.element.selectionStart = this.state.selectionStart;\n this.element.selectionEnd = this.state.selectionEnd;\n }\n else {\n var position = void 0;\n var indexOfDecimal = this.state.looselyFormattedText.indexOf(this.symbols.decimal);\n if (indexOfDecimal >= 0 && indexOfDecimal < this.state.selectionStart) {\n position = this.state.selectionEnd;\n }\n else {\n position = this.state.selectionEnd -\n (this.state.looselyFormattedText.length - this.element.value.length);\n }\n var indexOfNewDecimal = this.element.value.indexOf(this.symbols.decimal);\n if (this.state.decimalSelect || (this.state.value === null && indexOfNewDecimal >= 0) ||\n (indexOfDecimal === -1 && indexOfNewDecimal >= 0)) {\n if (this.state.selectionStart < indexOfNewDecimal + 2 && indexOfDecimal >= 0) {\n position = indexOfNewDecimal + 1;\n }\n else {\n position = indexOfNewDecimal;\n }\n }\n if (!this.state.decimalSelect && (this.state.value === prevState.value)) {\n position = this.state.selectionEnd -\n (this.state.looselyFormattedText.length - this.element.value.length);\n }\n if (this.state.looselyFormattedText[0] === this.symbols.decimal\n && prevState.looselyFormattedText === this.symbols.decimal) {\n position = this.state.value !== undefined ? this.formatNumber(this.state.value).length : 0;\n }\n this.element.selectionStart = this.element.selectionEnd = position;\n }\n }\n if (this.element) {\n this.textBeforeInput = this.element.value;\n }\n this.setValidity();\n };\n Object.defineProperty(NumericTextBox.prototype, \"valueAsLocalString\", {\n /**\n * @hidden\n */\n get: function () {\n this.intl = provideIntlService(this);\n this.symbols = this.intl.numberSymbols();\n if (this.state.looselyFormattedText !== null &&\n !this.state.decimalSelect &&\n this.parseNumber(this.state.looselyFormattedText) === this.state.value &&\n this.formatNumber(this.state.value).length < this.state.looselyFormattedText.length &&\n this.state.looselyFormattedText.indexOf(this.formatNumber(this.state.value)) === 0) {\n // the user is currently typing, do not interrupt them\n return this.state.looselyFormattedText;\n }\n return this.formatNumber(this.state.value);\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @hidden\n */\n NumericTextBox.prototype.render = function () {\n var _this = this;\n var inputId = this.props.id || this._inputId;\n var localizationService = provideLocalizationService(this);\n var isValid = !this.validityStyles || this.validity.valid;\n var numerictextbox = (React.createElement(\"span\", { dir: this.props.dir, style: !this.props.label\n ? { width: this.props.width }\n : undefined, className: 'k-widget k-numerictextbox' + (this.props.className ? ' ' + this.props.className : ''), \"aria-disabled\": this.props.disabled ? 'true' : undefined },\n React.createElement(\"span\", { className: classNames('k-numeric-wrap', {\n 'k-state-disabled': this.props.disabled,\n 'k-state-invalid': !isValid\n }), ref: function (elementWrapper) { _this.elementWrapper = elementWrapper; } },\n React.createElement(\"input\", { tabIndex: getTabIndex(this.props.tabIndex, this.props.disabled), accessKey: this.props.accessKey, disabled: this.props.disabled, title: this.props.title, \"aria-valuemin\": this.props.min, \"aria-valuemax\": this.props.max, placeholder: this.props.placeholder, type: this.props.inputType || 'tel', spellCheck: false, autoComplete: \"off\", autoCorrect: \"off\", className: \"k-input k-formatted-value\", id: inputId, value: this.valueAsLocalString, \"aria-valuenow\": (this.state.value !== null) ? this.state.value : undefined, name: this.props.name, onWheel: this.wheel, onKeyDown: this.keyDown, onChange: this.elementChange, ref: function (input) { return _this._element = input; } }),\n this.props.children,\n this.props.spinners &&\n React.createElement(\"span\", { className: \"k-select\", onMouseDown: function (e) {\n if (document && _this._element) {\n e.preventDefault();\n if (document.activeElement !== _this._element) {\n _this._element.focus();\n }\n }\n } },\n React.createElement(\"span\", { className: \"k-link k-link-increase\", \"aria-label\": localizationService\n .toLanguageString(numericIncreaseValue, messages[numericIncreaseValue]), title: localizationService\n .toLanguageString(numericIncreaseValue, messages[numericIncreaseValue]), onClick: this.increase },\n React.createElement(\"span\", { className: \"k-icon k-i-arrow-n\" })),\n React.createElement(\"span\", { className: \"k-link k-link-decrease\", \"aria-label\": localizationService\n .toLanguageString(numericDecreaseValue, messages[numericDecreaseValue]), title: localizationService\n .toLanguageString(numericDecreaseValue, messages[numericDecreaseValue]), onClick: this.decrease },\n React.createElement(\"span\", { className: \"k-icon k-i-arrow-s\" }))))));\n return this.props.label\n ? (React.createElement(FloatingLabel, { id: inputId, value: this.valueAsLocalString, valid: isValid, placeholder: this.props.placeholder, label: this.props.label, children: numerictextbox, style: { width: this.props.width }, dir: this.props.dir }))\n : numerictextbox;\n };\n NumericTextBox.prototype.formatNumber = function (value) {\n if (value == null) {\n return '';\n }\n return this.intl.formatNumber(value, this.props.format).toString();\n // the second argument actually supports null/undefined\n };\n NumericTextBox.prototype.parseNumber = function (text) {\n return this.intl.parseNumber(text, this.props.format);\n };\n NumericTextBox.prototype.elementChange = function (event) {\n if (!this.element) {\n return;\n }\n var element = this.element;\n var newState = {\n value: this.state.value,\n looselyFormattedText: element.value,\n selectionStart: this.element.selectionStart,\n selectionEnd: this.element.selectionEnd,\n decimalSelect: false\n };\n var text = element.value; // do NOT use 'event.target.value', always use 'element.value'\n var minusSign = this.symbols.minusSign;\n if (text === minusSign) {\n newState.value = null;\n this.triggerChange(newState, event);\n return;\n }\n if (text.split(minusSign).length !== this.textBeforeInput.split(minusSign).length &&\n text.length === this.textBeforeInput.length + minusSign.length) {\n // positive/negative change\n newState.value = -this.parseNumber(this.textBeforeInput);\n this.triggerChange(newState, event);\n return;\n }\n var decimal = this.symbols.decimal;\n if (text.split(RegExp('\\\\' + decimal)).length > 2) {\n // prevent typing second decimal separator\n newState.decimalSelect = true;\n this.triggerChange(newState, event);\n return;\n }\n if (text.length > 1 && text.indexOf(decimal) === -1 && this.textBeforeInput.indexOf(decimal) >= 0 &&\n text.length + decimal.length === this.textBeforeInput.length) {\n // prevent deleting of decimal separator on its own\n newState.decimalSelect = true;\n this.triggerChange(newState, event);\n return;\n }\n var value = this.parseNumber(text);\n if (value === this.state.value && text.length > 0 && text[text.length - 1] === decimal) {\n if ((this.formatNumber(1.1) || '').toString().indexOf(decimal) > -1) {\n newState.looselyFormattedText = text;\n this.triggerChange(newState, event);\n return;\n }\n }\n var invalid = ((value === null || isNaN(value)) && text.length > 0 && text !== this.symbols.minusSign);\n var wrapper = this.elementWrapper;\n if ((text.length > this.textBeforeInput.length) &&\n (this.parseNumber(text) === this.parseNumber(text.slice(0, element.selectionStart)) &&\n (this.parseNumber(text.slice(element.selectionStart - 1)) === null ||\n isNaN(this.parseNumber(text.slice(element.selectionStart - 1)))))) {\n invalid = true;\n }\n if (invalid) {\n // block typing of invalid characters\n if (wrapper && wrapper.className.indexOf(\"k-state-invalid\") === -1) {\n wrapper.className += ' k-state-invalid';\n setTimeout(function () { wrapper.className = wrapper.className.replace(' k-state-invalid', ''); }, 50);\n }\n newState.looselyFormattedText = this.textBeforeInput;\n newState.selectionStart = newState.selectionEnd =\n element.selectionEnd + this.textBeforeInput.length - element.value.length;\n this.triggerChange(newState, event);\n return;\n }\n newState.value = value;\n this.triggerChange(newState, event);\n };\n NumericTextBox.prototype.nonInputActions = function (value, event) {\n var newState = {\n value: value,\n looselyFormattedText: null,\n selectionStart: 0,\n selectionEnd: 0,\n decimalSelect: false\n };\n this.triggerChange(newState, event);\n };\n NumericTextBox.prototype.triggerChange = function (newState, event) {\n if (this.props.disabled) {\n return;\n }\n // decimals ranging based on the format:\n this.valueDuringOnChange = this.ranged(this.parseNumber(this.formatNumber(this.ranged(newState.value))));\n // const value = newState.value;\n var shouldFireEvent = (this.valueDuringOnChange !== this.state.value);\n if (this.props.value !== undefined) {\n // controlled\n newState.value = this.props.value;\n }\n else {\n // uncontrolled\n newState.value = this.valueDuringOnChange;\n }\n this.setState(newState);\n if (shouldFireEvent) {\n dispatchEvent(this.props.onChange, event, this, { value: this.valueDuringOnChange });\n }\n this.valueDuringOnChange = undefined;\n };\n NumericTextBox.prototype.ranged = function (value) {\n if (value == null) {\n return value;\n }\n if (!(value > 1 || value < 1 || value === 1)) {\n // null, undefined or NaN\n return null;\n }\n if (this.props.max !== undefined && this.props.min !== undefined && this.props.max < this.props.min) {\n return null;\n }\n // TODO: This should be something improved like\n // while (value < max) { value *= 10 }\n // and the selection should be adjusted\n // to get good experience when typing values in ranges like [222,11111]\n if (this.props.max !== undefined && value > this.props.max) {\n value = this.props.max;\n }\n if (this.props.min !== undefined && value < this.props.min) {\n value = this.props.min;\n }\n return value;\n };\n NumericTextBox.prototype.increase = function (syntheticEvent) {\n this.nonInputActions((this.state.value || 0) + (this.props.step || 0), syntheticEvent);\n };\n NumericTextBox.prototype.decrease = function (syntheticEvent) {\n this.nonInputActions((this.state.value || 0) - (this.props.step || 0), syntheticEvent);\n };\n NumericTextBox.prototype.wheel = function (event) {\n if (!document || document.activeElement !== this.element || !this.element) {\n return;\n }\n if (event.nativeEvent.deltaY < 0) {\n event.preventDefault();\n this.increase(event);\n }\n if (event.nativeEvent.deltaY > 0) {\n event.preventDefault();\n this.decrease(event);\n }\n };\n NumericTextBox.prototype.keyDown = function (event) {\n switch (event.keyCode) {\n case 38:\n // arrow up\n this.increase(event);\n break;\n case 40:\n // arrow down\n this.decrease(event);\n break;\n case 110:\n // numpad decimal key\n var element = this.element;\n if (element) {\n var text = element.value;\n var selectionStart = element.selectionStart, selectionEnd = element.selectionEnd;\n element.value = text.slice(0, selectionStart) + this.symbols.decimal + text.slice(selectionEnd);\n element.selectionStart = element.selectionEnd = selectionStart + 1;\n this.elementChange(event); // TODO: remove this call (use triggerChange directly with custom state)\n }\n break;\n default:\n return;\n }\n event.preventDefault();\n };\n /**\n * @hidden\n */\n NumericTextBox.propTypes = {\n value: PropTypes.number,\n defaultValue: PropTypes.number,\n step: PropTypes.number,\n format: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.shape({\n style: PropTypes.oneOf(['decimal', 'currency', 'percent', 'scientific', 'accounting']),\n currency: PropTypes.string,\n currencyDisplay: PropTypes.oneOf(['symbol', 'code', 'name']),\n useGrouping: PropTypes.bool,\n minimumIntegerDigits: PropTypes.number,\n minimumFractionDigits: PropTypes.number,\n maximumFractionDigits: PropTypes.number\n })\n ]),\n width: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.number\n ]),\n tabIndex: PropTypes.number,\n accessKey: PropTypes.string,\n title: PropTypes.string,\n placeholder: PropTypes.string,\n min: PropTypes.number,\n max: PropTypes.number,\n spinners: PropTypes.bool,\n disabled: PropTypes.bool,\n dir: PropTypes.string,\n name: PropTypes.string,\n label: PropTypes.string,\n validationMessage: PropTypes.string,\n required: PropTypes.bool,\n id: PropTypes.string,\n onChange: PropTypes.func\n };\n /**\n * @hidden\n */\n NumericTextBox.defaultProps = {\n spinners: true,\n disabled: false,\n onChange: function (_) { return; },\n step: 1,\n required: false,\n validityStyles: true\n // the rest of the properties are undefined by default\n };\n return NumericTextBox;\n}(React.Component));\nexport { NumericTextBox };\nregisterForIntl(NumericTextBox);\nregisterForLocalization(NumericTextBox);\n//# sourceMappingURL=NumericTextBox.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\n/**\n * @hidden\n */\nexport var SLIDER_LABEL_ATTRIBUTE = 'data-slider-label';\n/**\n * Represents the KendoReact SliderLabel component.\n */\nvar SliderLabel = /** @class */ (function (_super) {\n __extends(SliderLabel, _super);\n function SliderLabel() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @hidden\n */\n SliderLabel.prototype.render = function () {\n var _a;\n var style = this.props.vertical\n ? { bottom: this.props.position + \"%\", height: '1px', width: '100%' }\n : { left: this.props.position + \"%\", width: '1px' };\n var labelTextStyle = this.props.vertical\n ? { top: '-8px' }\n : { width: '40px', left: \"-20px\" };\n return (React.createElement(\"li\", { role: \"presentation\", className: \"k-tick k-tick-large\", title: this.props.title, style: __assign({ zIndex: 1, position: 'absolute' }, style) },\n React.createElement(\"span\", __assign({ style: __assign({ position: 'absolute' }, labelTextStyle) }, (_a = {}, _a[SLIDER_LABEL_ATTRIBUTE] = true, _a), { className: \"k-label\", onClick: this.props.onClick }),\n \" \",\n this.props.children)));\n };\n return SliderLabel;\n}(React.PureComponent));\nexport { SliderLabel };\n//# sourceMappingURL=SliderLabel.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { dispatchEvent, Keys, classNames, Draggable, getTabIndex } from '@progress/kendo-react-common';\nimport { registerForLocalization, provideLocalizationService } from '@progress/kendo-react-intl';\nimport { messages, sliderIncreaseValue, sliderDecreaseValue, sliderDragTitle } from './../messages';\nimport { SLIDER_LABEL_ATTRIBUTE } from './SliderLabel';\n/**\n * Represents the [KendoReact Slider component]({% slug overview_slider%}).\n */\nvar Slider = /** @class */ (function (_super) {\n __extends(Slider, _super);\n function Slider() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /**\n * @hidden\n */\n _this.state = {\n value: _this.props.defaultValue === undefined ? _this.props.min : _this.props.defaultValue,\n focused: false\n };\n /**\n * @hidden\n */\n _this.buttons = function (props) {\n if (!props.enabled) {\n return props.children;\n }\n return (React.createElement(React.Fragment, null,\n React.createElement(\"a\", { className: \"k-button k-button-decrease\", style: { position: 'relative' }, title: props.decrementTitle, onClick: props.decrement },\n React.createElement(\"span\", { className: classNames('k-icon', {\n 'k-i-arrow-s': _this.props.vertical,\n 'k-i-arrow-w': !_this.props.vertical\n }) })),\n props.children,\n React.createElement(\"a\", { className: \"k-button k-button-increase\", style: { position: 'relative' }, title: props.incrementTitle, onClick: props.increment },\n React.createElement(\"span\", { className: classNames('k-icon', {\n 'k-i-arrow-n': _this.props.vertical,\n 'k-i-arrow-e': !_this.props.vertical\n }) }))));\n };\n _this.isLabel = function (target) {\n var currentTarget = target;\n while (currentTarget) {\n if (Boolean(currentTarget.getAttribute(SLIDER_LABEL_ATTRIBUTE))) {\n return true;\n }\n currentTarget = currentTarget.parentElement;\n }\n return false;\n };\n _this.onFocus = function () {\n _this.setState({ focused: true });\n };\n _this.onBlur = function () {\n _this.setState({ focused: false });\n };\n _this.onKeyDown = function (e) {\n var newValue = undefined;\n if (e.keyCode === Keys.left || e.keyCode === Keys.down) {\n newValue = _this.state.value - (_this.props.step || 0);\n }\n else if (e.keyCode === Keys.right || e.keyCode === Keys.up) {\n newValue = _this.state.value + (_this.props.step || 0);\n }\n else if (e.keyCode === Keys.home) {\n newValue = _this.props.min;\n }\n else if (e.keyCode === Keys.end) {\n newValue = _this.props.max;\n }\n if (newValue !== undefined) {\n e.preventDefault();\n _this.change(e, newValue);\n }\n };\n _this.decrement = function (e) {\n e.preventDefault();\n _this.change(e, _this.state.value - (_this.props.step || 0));\n };\n _this.increment = function (e) {\n e.preventDefault();\n _this.change(e, _this.state.value + (_this.props.step || 0));\n };\n _this.dragStart = function (e) {\n if (!_this.isLabel(e.event.originalEvent.target)) {\n if (e.event.isTouch) {\n e.event.originalEvent.preventDefault();\n }\n _this.drag(e);\n }\n };\n _this.dragOver = function (e) {\n e.event.originalEvent.preventDefault();\n _this.drag(e);\n };\n _this.drag = function (e) {\n var computed = e.element.getBoundingClientRect();\n var distance = _this.props.vertical ? (computed.bottom - e.event.clientY) : (e.event.clientX - computed.left);\n var size = _this.props.vertical ? computed.height : computed.width;\n var percentage = (distance / size);\n _this.change(e, _this.props.min + percentage * (_this.props.max - _this.props.min));\n };\n return _this;\n }\n /**\n * @hidden\n */\n Slider.getDerivedStateFromProps = function (props, state) {\n var value = props.value !== undefined ? props.value : state.value;\n var min = props.min, max = props.max;\n return value === undefined ? null :\n { value: Math.min(Math.max(value, min), max) };\n };\n /**\n * @hidden\n */\n Slider.prototype.render = function () {\n var _this = this;\n var lS = provideLocalizationService(this);\n var percentValue = ((this.state.value - this.props.min) / (this.props.max - this.props.min)) * 100;\n var trackStyles = this.props.vertical\n ? { marginTop: '0.5rem', marginBottom: '0.5rem' }\n : { marginLeft: '0.5rem', marginRight: '0.5rem' };\n var sliderItemsStyle = this.props.vertical\n ? { paddingTop: 0, height: '100%' }\n : {};\n return (React.createElement(\"div\", { \"aria-valuemin\": this.props.min, \"aria-valuemax\": this.props.max, \"aria-valuenow\": this.state.value, \"aria-disabled\": this.props.disabled ? 'true' : undefined, role: \"slider\", style: this.props.style, tabIndex: getTabIndex(this.props.tabIndex, this.props.disabled, undefined), onFocus: this.onFocus, onBlur: this.onBlur, onKeyDown: this.onKeyDown, className: classNames('k-slider k-widget k-state-default', this.props.className, {\n 'k-state-focused': this.state.focused,\n 'k-state-disabled': this.props.disabled,\n 'k-slider-horizontal': !this.props.vertical,\n 'k-slider-vertical': this.props.vertical\n }), ref: function (el) { return _this._element = el; } },\n React.createElement(\"div\", { className: classNames('k-slider-wrap', {\n 'k-slider-buttons': this.props.buttons\n }), style: {\n display: 'flex',\n position: 'relative',\n flexDirection: this.props.vertical ? 'column-reverse' : 'row'\n } },\n React.createElement(this.buttons, { enabled: this.props.buttons, decrement: this.decrement, increment: this.increment, incrementTitle: lS.toLanguageString(sliderIncreaseValue, messages[sliderIncreaseValue]), decrementTitle: lS.toLanguageString(sliderDecreaseValue, messages[sliderDecreaseValue]) },\n React.createElement(Draggable, { onDrag: this.dragOver, onPress: this.dragStart },\n React.createElement(\"div\", { className: \"k-slider-track-wrap\", style: __assign({ flexGrow: 1, position: 'relative', touchAction: 'none' }, trackStyles) },\n this.props.children && (React.createElement(\"ul\", { className: \"k-reset k-slider-items\", style: __assign({ margin: 0 }, sliderItemsStyle) }, React.Children.map(this.props.children, function (child) {\n return child && React.cloneElement(child, {\n position: 100 * (child.props.position - _this.props.min) /\n (_this.props.max - _this.props.min),\n vertical: _this.props.vertical\n }, child.props.children);\n }))),\n React.createElement(\"div\", { className: \"k-slider-track\", style: this.props.vertical\n ? { bottom: 0, height: '100%' }\n : { left: 0, width: '100%' }, ref: function (el) { return _this._sliderTrack = el; } },\n React.createElement(\"div\", { className: \"k-slider-selection\", style: this.props.vertical\n ? { height: percentValue + '%' }\n : { width: percentValue + '%' } }),\n React.createElement(\"a\", { className: \"k-draghandle\", title: lS.toLanguageString(sliderDragTitle, messages[sliderDragTitle]), style: this.props.vertical\n ? { bottom: 'calc(' + percentValue + '% - 8px)', zIndex: 1 }\n : { left: 'calc(' + percentValue + '% - 8px)', zIndex: 1 } }))))))));\n };\n /**\n * @hidden\n */\n Slider.prototype.focus = function () {\n if (this._element) {\n this._element.focus();\n }\n };\n Object.defineProperty(Slider.prototype, \"sliderTrack\", {\n /**\n * @hidden\n */\n get: function () {\n return this._sliderTrack;\n },\n enumerable: true,\n configurable: true\n });\n Slider.prototype.change = function (e, value) {\n value = Math.min(Math.max(value, this.props.min), this.props.max);\n this.setState({ value: value });\n dispatchEvent(this.props.onChange, e, this, { value: value });\n };\n /**\n * @hidden\n */\n Slider.propTypes = {\n min: PropTypes.number.isRequired,\n max: PropTypes.number.isRequired,\n value: PropTypes.number,\n vertical: PropTypes.bool\n // TODO: validation when buttons is set to true, but no step is provided\n };\n return Slider;\n}(React.Component));\nexport { Slider };\nregisterForLocalization(Slider);\n//# sourceMappingURL=Slider.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { classNames, guid, noop, Keys, dispatchEvent, getTabIndex } from '@progress/kendo-react-common';\nimport { provideLocalizationService } from '@progress/kendo-react-intl';\nimport { messages, switchValidation } from './../messages';\nvar SWITCH_CONTAINER = 'k-switch-container';\nvar SWITCH_HANDLE = 'k-switch-handle';\nvar SWITCH_LABEL_ON = 'k-switch-label-on';\nvar SWITCH_LABEL_OFF = 'k-switch-label-off';\n/**\n * Represents the [KendoReact Switch component]({% slug overview_switch%}).\n */\nvar Switch = /** @class */ (function (_super) {\n __extends(Switch, _super);\n /**\n * @hidden\n */\n function Switch(props) {\n var _this = _super.call(this, props) || this;\n /**\n * @hidden\n */\n _this.setValidity = function () {\n if (_this._input && _this._input.setCustomValidity) {\n _this._input.setCustomValidity(_this.validity.valid\n ? ''\n : _this.props.validationMessage ||\n _this.defaultValidationMessage.toLanguageString(switchValidation, messages[switchValidation]));\n }\n };\n _this.limit = function (offset, drag, wrapper) {\n var wrapperWidth = wrapper.offsetWidth;\n var margin = drag.offsetWidth;\n if (offset < 0) {\n return 0;\n }\n else if (offset > wrapperWidth - margin) {\n return wrapperWidth - margin;\n }\n return offset;\n };\n _this.toggle = function (value, event) {\n _this.setState({ checked: value });\n _this.valueDuringOnChange = value;\n dispatchEvent(_this.props.onChange, event, _this, { value: value });\n _this.valueDuringOnChange = undefined;\n };\n _this._id = guid();\n _this.defaultValidationMessage = provideLocalizationService(_this);\n _this.dummyInput = function (value) {\n /* Dummy component to support forms */\n return (React.createElement(\"input\", { type: \"checkbox\", checked: _this.props.checked, ref: function (el) { _this._input = el; }, tabIndex: -1, \"aria-hidden\": true, value: value, style: { opacity: 0, width: 1, border: 0, zIndex: -1, position: 'absolute', left: '50%' } }));\n };\n _this.handleClick = function (event) {\n _this.toggle(!_this.value, event);\n };\n _this.handleKeyDown = function (event) {\n if (_this.props.disabled) {\n return;\n }\n var keyCode = event.keyCode;\n if (keyCode === Keys.space || keyCode === Keys.enter) {\n _this.toggle(!_this.value, event);\n }\n };\n _this.handleWrapperFocus = function (event) {\n if (_this.props.disabled) {\n return;\n }\n _this.setState({ focused: true });\n var onFocus = _this.props.onFocus;\n if (onFocus) {\n onFocus.call(undefined, event);\n }\n };\n _this.handleWrapperBlur = function (event) {\n if (_this.props.disabled) {\n return;\n }\n _this.setState({ focused: false });\n var onBlur = _this.props.onBlur;\n if (onBlur) {\n onBlur.call(undefined, event);\n }\n };\n _this.state = {\n checked: props.defaultChecked || Switch.defaultProps.defaultChecked,\n focused: false\n };\n return _this;\n }\n Object.defineProperty(Switch.prototype, \"value\", {\n /**\n * Gets the value of the Switch.\n */\n get: function () {\n return this.valueDuringOnChange !== undefined\n ? this.valueDuringOnChange\n : this.props.checked !== undefined\n ? this.props.checked\n : this.state.checked;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Switch.prototype, \"element\", {\n get: function () {\n return this._element;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Switch.prototype, \"name\", {\n /**\n * Gets the `name` property of the Switch.\n */\n get: function () {\n return this.props.name;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Switch.prototype, \"validity\", {\n /**\n * Represents the validity state into which the Switch is set.\n */\n get: function () {\n var customError = this.props.validationMessage !== undefined;\n var isValid = this.props.valid !== undefined ?\n this.props.valid :\n !this.props.required ?\n true :\n this.value ? true : false;\n var valid = this.props.valid !== undefined ? this.props.valid : isValid;\n return {\n customError: customError,\n valid: valid,\n valueMissing: this.value === null\n };\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Switch.prototype, \"validityStyles\", {\n /**\n * @hidden\n */\n get: function () {\n return this.props.validityStyles !== undefined\n ? this.props.validityStyles\n : Switch.defaultProps.validityStyles;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Switch.prototype, \"required\", {\n /**\n * @hidden\n */\n get: function () {\n return this.props.required !== undefined\n ? this.props.required\n : Switch.defaultProps.required;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @hidden\n */\n Switch.prototype.componentDidMount = function () {\n this.setValidity();\n // Due to dynamic dir calculation\n this.forceUpdate();\n };\n /**\n * @hidden\n */\n Switch.prototype.componentDidUpdate = function () {\n this.setValidity();\n };\n /**\n * @hidden\n */\n Switch.prototype.focus = function () {\n if (this._element) {\n this._element.focus();\n }\n };\n /**\n * @hidden\n */\n Switch.prototype.render = function () {\n var _this = this;\n var focused = this.state.focused;\n var _a = this.props, dir = _a.dir, disabled = _a.disabled, id = _a.id, offLabel = _a.offLabel, onLabel = _a.onLabel, tabIndex = _a.tabIndex;\n this.dir = dir || (this._wrapper && getComputedStyle(this._wrapper).direction) || undefined;\n var isValid = !this.validityStyles || this.validity.valid;\n var switchClassName = classNames({\n 'k-widget': true,\n 'k-switch': true,\n 'k-switch-on': this.value,\n 'k-switch-off': !this.value,\n 'k-state-focused': focused,\n 'k-state-disabled': disabled,\n 'k-state-invalid': !isValid\n }, this.props.className);\n var ariaAttributes = {\n 'aria-checked': this.value,\n 'aria-disabled': disabled || undefined\n };\n return (React.createElement(\"span\", __assign({ ref: function (span) { _this._wrapper = span; }, className: switchClassName, dir: this.dir, onKeyDown: this.handleKeyDown, onClick: this.handleClick, onBlur: this.handleWrapperBlur, onFocus: this.handleWrapperFocus }, ariaAttributes),\n React.createElement(\"span\", { className: SWITCH_CONTAINER, id: id || this._id, ref: function (span) { _this._element = span; }, tabIndex: getTabIndex(tabIndex, disabled, undefined), accessKey: this.props.accessKey },\n this.dummyInput(this.value),\n React.createElement(\"span\", { className: SWITCH_LABEL_ON }, onLabel),\n React.createElement(\"span\", { className: SWITCH_LABEL_OFF }, offLabel),\n React.createElement(\"span\", { className: SWITCH_HANDLE }))));\n };\n /**\n * @hidden\n */\n Switch.propTypes = {\n accessKey: PropTypes.string,\n checked: PropTypes.bool,\n className: PropTypes.string,\n disabled: PropTypes.bool,\n defaultChecked: PropTypes.bool,\n dir: PropTypes.string,\n id: PropTypes.string,\n offLabel: PropTypes.string,\n required: PropTypes.bool,\n tabIndex: PropTypes.number,\n valid: PropTypes.bool,\n validate: PropTypes.bool,\n validationMessage: PropTypes.string,\n onBlur: PropTypes.any,\n onChange: PropTypes.any,\n onFocus: PropTypes.any,\n onLabel: PropTypes.string\n };\n /**\n * @hidden\n */\n Switch.defaultProps = {\n disabled: false,\n defaultChecked: false,\n offLabel: 'OFF',\n onBlur: noop,\n onFocus: noop,\n onLabel: 'ON',\n required: false,\n validityStyles: true\n };\n return Switch;\n}(React.Component));\nexport { Switch };\n//# sourceMappingURL=Switch.js.map","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { Keys, classNames, guid, useRtl, getTabIndex, dispatchEvent } from '@progress/kendo-react-common';\nimport { useLocalization } from '@progress/kendo-react-intl';\nimport { messages, checkboxValidation } from './../messages';\n/**\n * Represents the [KendoReact Checkbox component]({% slug overview_checkbox %}).\n *\n * @example\n * ```jsx\n * class App extends React.Component {\n * render() {\n * return ;\n * }\n * }\n * ReactDOM.render(, document.querySelector('my-app'));\n * ```\n */\nexport var Checkbox = React.forwardRef(function (props, target) {\n var checked = props.checked, className = props.className, children = props.children, defaultChecked = props.defaultChecked, disabled = props.disabled, id = props.id, label = props.label, labelPlacement = props.labelPlacement, onChange = props.onChange, onFocus = props.onFocus, tabIndex = props.tabIndex, value = props.value, required = props.required, validationMessage = props.validationMessage, validityStyles = props.validityStyles;\n var elementRef = React.useRef(null);\n var focusElement = React.useCallback(function () {\n if (elementRef.current) {\n elementRef.current.focus();\n }\n }, []);\n React.useImperativeHandle(target, function () { return ({\n element: elementRef,\n focus: focusElement\n }); });\n var _a = React.useState(defaultChecked), stateChecked = _a[0], setStateChecked = _a[1];\n var valueIsBoolean = (typeof value === 'boolean' || value === null);\n var isControlled = checked !== undefined || valueIsBoolean;\n var currentChecked = isControlled ? checked : stateChecked;\n var useValueAsChecked = currentChecked === undefined && valueIsBoolean;\n var checkedProp = useValueAsChecked ? value : currentChecked;\n var valueProp = (useValueAsChecked || valueIsBoolean) ? undefined : value;\n var indeterminateProp = checkedProp === null;\n var calculatedId = React.useMemo(function () { return guid(); }, []);\n var localizationService = useLocalization();\n var localizeMessage = function (message) {\n return localizationService.toLanguageString(message, messages[message]);\n };\n var defaultValidationMessage = localizeMessage(checkboxValidation);\n var isValid = props.valid !== undefined ?\n props.valid :\n !required ?\n true :\n currentChecked ? true : false;\n React.useEffect(function () {\n if (elementRef.current && elementRef.current.setCustomValidity) {\n elementRef.current.setCustomValidity(isValid\n ? ''\n : (validationMessage || defaultValidationMessage));\n }\n }, [isValid, validationMessage, defaultValidationMessage]);\n var setValue = React.useCallback(function (e, val) {\n if (!isControlled) {\n setStateChecked(val);\n }\n if (onChange) {\n var handle = {\n element: elementRef,\n focus: focusElement\n };\n dispatchEvent(onChange, e, handle, { value: val });\n }\n }, [onChange, setStateChecked]);\n var onChangeHandler = React.useCallback(function (e) {\n var newValue = e.target.checked;\n setValue(e, newValue);\n }, []);\n var onKeyDownHandler = React.useCallback(function (e) {\n if (disabled) {\n return;\n }\n var keyCode = e.keyCode;\n var currentValue = e.currentTarget.checked;\n if (keyCode === Keys.space || keyCode === Keys.enter) {\n e.preventDefault();\n e.stopPropagation();\n setValue(e, !currentValue);\n }\n }, []);\n var onFocusHandler = React.useCallback(function (e) {\n if (onFocus) {\n var handle = {\n element: elementRef,\n focus: focusElement\n };\n dispatchEvent(onFocus, e, handle, undefined);\n }\n }, [onFocus]);\n var dir = useRtl(elementRef, props.dir);\n var checkboxClasses = classNames({\n 'k-state-default': !disabled,\n 'k-state-disabled': disabled\n }, className);\n var inputProps = {\n type: 'checkbox',\n className: classNames({\n 'k-checkbox': true,\n 'k-state-indeterminate': indeterminateProp,\n 'k-state-invalid': !(isValid || validityStyles !== undefined || validityStyles === true)\n }),\n ref: elementRef,\n id: id || calculatedId,\n checked: Boolean(checkedProp),\n disabled: disabled,\n tabIndex: getTabIndex(tabIndex, disabled),\n role: 'checkbox',\n required: required !== undefined ? required : false,\n 'aria-checked': currentChecked || checkedProp ?\n true :\n indeterminateProp ?\n 'mixed' :\n false,\n 'aria-disabled': disabled || undefined,\n onChange: onChangeHandler,\n onKeyDown: onKeyDownHandler,\n onFocus: onFocusHandler\n };\n var checkboxInput = (React.createElement(React.Fragment, null, \n // removing value prop is required due to bug in react where\n // value set to undefined override default submit value\n valueProp === undefined ? (React.createElement(\"input\", __assign({}, inputProps))) : (React.createElement(\"input\", __assign({}, inputProps, { value: valueIsBoolean ? undefined : valueProp })))));\n var checkboxLabel = (React.createElement(React.Fragment, null, label !== undefined ? (React.createElement(\"label\", { className: 'k-checkbox-label', htmlFor: id || calculatedId, style: { userSelect: 'none' } }, label)) : null));\n return (React.createElement(React.Fragment, null, (labelPlacement === 'before') ? (React.createElement(\"span\", { className: checkboxClasses, dir: 'rtl' },\n checkboxInput,\n checkboxLabel,\n children)) : (React.createElement(\"span\", { className: checkboxClasses, dir: dir },\n checkboxInput,\n checkboxLabel,\n children))));\n});\nCheckbox.propTypes = {\n checked: PropTypes.bool,\n className: PropTypes.string,\n defaultChecked: PropTypes.bool,\n defaultValue: PropTypes.any,\n dir: PropTypes.string,\n disabled: PropTypes.bool,\n id: PropTypes.string,\n label: PropTypes.string,\n labelPlacement: PropTypes.string,\n tabIndex: PropTypes.number,\n value: PropTypes.any,\n validationMessage: PropTypes.string,\n required: PropTypes.bool,\n validate: PropTypes.bool,\n valid: PropTypes.bool,\n onChange: PropTypes.func,\n onFocus: PropTypes.func\n};\nCheckbox.displayName = 'KendoCheckbox';\n//# sourceMappingURL=Checkbox.js.map","export default function isString(value) {\n return typeof value === \"string\";\n}","import errorDetails from './error-details';\n\nvar formatRegExp = /\\{(\\d+)}?\\}/g;\n\nvar IntlError = function IntlError(ref) {\n var name = ref.name;\n var message = ref.message;\n\n if (!name || !message) {\n throw new Error(\"{ name: string, message: string } object is required!\");\n }\n\n this.name = name;\n this.message = message;\n};\n\nIntlError.prototype.formatMessage = function formatMessage () {\n var values = [], len = arguments.length;\n while ( len-- ) values[ len ] = arguments[ len ];\n\n var flattenValues = flatten(values);\n\n var formattedMessage = this.message.replace(formatRegExp, function(match, index) {\n return flattenValues[parseInt(index, 10)];\n });\n\n return ((this.name) + \": \" + formattedMessage);\n};\n\nIntlError.prototype.error = function error () {\n var values = [], len = arguments.length;\n while ( len-- ) values[ len ] = arguments[ len ];\n\n return new Error(this.formatMessage(values));\n};\n\nvar flatten = function(arr) {\n return arr.reduce(function (a, b) { return a.concat(b); }, []);\n};\n\nvar toIntlErrors = function(errors) {\n var predicate = function(prev, name) {\n prev[name] = new IntlError({ name: name, message: errors[name] });\n return prev;\n };\n\n return Object.keys(errors).reduce(predicate, {});\n};\n\nvar errors = toIntlErrors(errorDetails);\n\nexport {\n errors,\n IntlError,\n toIntlErrors\n};\n","//The error is represented by unique name and corresponding message\n//The message can contain placeholders with index, e.g. {0}, {1}\n\nexport default {\n \"NoLocale\": \"Missing locale info for '{0}'\",\n \"NoCurrency\": \"Cannot determine currency information. Please load the locale currencies data.\",\n \"NoSupplementalCurrency\": \"Cannot determine currency. Please load the supplemental currencyData.\",\n \"NoCurrencyRegion\": \"No currency data for region '{0}'\",\n \"NoCurrencyDisplay\": \"Cannot determine currency display information. Please load the locale currencies data. The default culture does not include the all currencies data.\",\n \"NoGMTInfo\": \"Cannot determine locale GMT format. Please load the locale timeZoneNames data.\",\n \"NoWeekData\": \"Cannot determine locale first day of week. Please load the supplemental weekData.\",\n \"NoFirstDay\": \"Cannot determine locale first day of week. Please load the supplemental weekData. The default culture includes only the 'en-US' first day info.\",\n \"NoValidCurrency\": \"Cannot determine a default currency for the {0} locale. Please specify explicitly the currency with the format options.\",\n \"NoDateFieldNames\": \"Cannot determine the locale date field names. Please load the locale dateFields data.\"\n};\n","import defaultData from './default-data';\nimport isString from '../common/is-string';\nimport { errors } from '../errors';\n\nfunction availableLocaleInfo(fullName, suffixes) {\n var parts = fullName.split(\"-\");\n var language = parts[0];\n var script = parts[1];\n var territory = parts[2];\n\n return cldr[fullName] || (suffixes.indexOf(territory) !== -1 && cldr[language + \"-\" + territory]) || (suffixes.indexOf(script) !== -1 && cldr[language + \"-\" + script]) || cldr[language];\n}\n\nfunction localeFullName(language, suffixes) {\n var likelySubtags = cldr.supplemental.likelySubtags;\n\n for (var idx = 0; idx < suffixes.length; idx++) {\n var name = likelySubtags[language + \"-\" + suffixes[idx ]];\n if (name) {\n return name;\n }\n }\n\n if (likelySubtags[language]) {\n return likelySubtags[language];\n }\n}\n\nexport var cldr = defaultData;\n\nexport function getLocaleInfo(locale) {\n var info;\n if (isString(locale)) {\n info = localeInfo(locale);\n } else {\n info = locale;\n }\n return info;\n}\n\nexport function localeInfo(locale) {\n if (cldr[locale]) {\n return cldr[locale];\n }\n\n var likelySubtags = cldr.supplemental.likelySubtags;\n if (likelySubtags) {\n var parts = locale.split(\"-\");\n var language = parts[0];\n var suffixes = parts.slice(1);\n var fullName = localeFullName(language, suffixes);\n var info = fullName ? availableLocaleInfo(fullName, suffixes) : null;\n if (info) {\n return info;\n }\n }\n\n throw errors.NoLocale.error(locale);\n}\n","var defaultData = {\n en: {\n name: \"en\",\n identity: {\n version: {\n _number: \"$Revision: 12418 $\",\n _cldrVersion: \"29\"\n },\n language: \"en\"\n },\n territory: \"US\",\n numbers: {\n symbols: {\n decimal: \".\",\n group: \",\",\n list: \";\",\n percentSign: \"%\",\n plusSign: \"+\",\n minusSign: \"-\",\n exponential: \"E\",\n superscriptingExponent: \"×\",\n perMille: \"‰\",\n infinity: \"∞\",\n nan: \"NaN\",\n timeSeparator: \":\"\n },\n decimal: {\n patterns: [\n \"n\"\n ],\n groupSize: [\n 3\n ]\n },\n scientific: {\n patterns: [\n \"nEn\"\n ],\n groupSize: []\n },\n percent: {\n patterns: [\n \"n%\"\n ],\n groupSize: [\n 3\n ]\n },\n currency: {\n patterns: [\n \"$n\"\n ],\n groupSize: [\n 3\n ],\n \"unitPattern-count-one\": \"n $\",\n \"unitPattern-count-other\": \"n $\"\n },\n currencies: {\n BGN: {\n displayName: \"Bulgarian Lev\",\n \"displayName-count-one\": \"Bulgarian lev\",\n \"displayName-count-other\": \"Bulgarian leva\",\n symbol: \"BGN\"\n },\n EUR: {\n displayName: \"Euro\",\n \"displayName-count-one\": \"euro\",\n \"displayName-count-other\": \"euros\",\n symbol: \"€\",\n \"symbol-alt-narrow\": \"€\"\n },\n USD: {\n displayName: \"US Dollar\",\n \"displayName-count-one\": \"US dollar\",\n \"displayName-count-other\": \"US dollars\",\n symbol: \"$\",\n \"symbol-alt-narrow\": \"$\"\n }\n },\n localeCurrency: \"USD\",\n accounting: {\n patterns: [\n \"$n\",\n \"($n)\"\n ],\n groupSize: [\n 3\n ]\n }\n },\n calendar: {\n gmtFormat: \"GMT{0}\",\n gmtZeroFormat: \"GMT\",\n patterns: {\n d: \"M/d/y\",\n D: \"EEEE, MMMM d, y\",\n m: \"MMM d\",\n M: \"MMMM d\",\n y: \"MMM y\",\n Y: \"MMMM y\",\n F: \"EEEE, MMMM d, y h:mm:ss a\",\n g: \"M/d/y h:mm a\",\n G: \"M/d/y h:mm:ss a\",\n t: \"h:mm a\",\n T: \"h:mm:ss a\",\n s: \"yyyy'-'MM'-'dd'T'HH':'mm':'ss\",\n u: \"yyyy'-'MM'-'dd HH':'mm':'ss'Z'\"\n },\n dateTimeFormats: {\n full: \"{1} 'at' {0}\",\n long: \"{1} 'at' {0}\",\n medium: \"{1}, {0}\",\n short: \"{1}, {0}\",\n availableFormats: {\n Bh: \"h B\",\n Bhm: \"h:mm B\",\n Bhms: \"h:mm:ss B\",\n d: \"d\",\n E: \"ccc\",\n EBhm: \"E h:mm B\",\n EBhms: \"E h:mm:ss B\",\n Ed: \"d E\",\n Ehm: \"E h:mm a\",\n EHm: \"E HH:mm\",\n Ehms: \"E h:mm:ss a\",\n EHms: \"E HH:mm:ss\",\n Gy: \"y G\",\n GyMMM: \"MMM y G\",\n GyMMMd: \"MMM d, y G\",\n GyMMMEd: \"E, MMM d, y G\",\n h: \"h a\",\n H: \"HH\",\n hm: \"h:mm a\",\n Hm: \"HH:mm\",\n hms: \"h:mm:ss a\",\n Hms: \"HH:mm:ss\",\n hmsv: \"h:mm:ss a v\",\n Hmsv: \"HH:mm:ss v\",\n hmv: \"h:mm a v\",\n Hmv: \"HH:mm v\",\n M: \"L\",\n Md: \"M/d\",\n MEd: \"E, M/d\",\n MMM: \"LLL\",\n MMMd: \"MMM d\",\n MMMEd: \"E, MMM d\",\n MMMMd: \"MMMM d\",\n \"MMMMW-count-one\": \"'week' W 'of' MMMM\",\n \"MMMMW-count-other\": \"'week' W 'of' MMMM\",\n ms: \"mm:ss\",\n y: \"y\",\n yM: \"M/y\",\n yMd: \"M/d/y\",\n yMEd: \"E, M/d/y\",\n yMMM: \"MMM y\",\n yMMMd: \"MMM d, y\",\n yMMMEd: \"E, MMM d, y\",\n yMMMM: \"MMMM y\",\n yQQQ: \"QQQ y\",\n yQQQQ: \"QQQQ y\",\n \"yw-count-one\": \"'week' w 'of' Y\",\n \"yw-count-other\": \"'week' w 'of' Y\"\n }\n },\n timeFormats: {\n full: \"h:mm:ss a zzzz\",\n long: \"h:mm:ss a z\",\n medium: \"h:mm:ss a\",\n short: \"h:mm a\"\n },\n dateFormats: {\n full: \"EEEE, MMMM d, y\",\n long: \"MMMM d, y\",\n medium: \"MMM d, y\",\n short: \"M/d/yy\"\n },\n days: {\n format: {\n abbreviated: [\n \"Sun\",\n \"Mon\",\n \"Tue\",\n \"Wed\",\n \"Thu\",\n \"Fri\",\n \"Sat\"\n ],\n narrow: [\n \"S\",\n \"M\",\n \"T\",\n \"W\",\n \"T\",\n \"F\",\n \"S\"\n ],\n short: [\n \"Su\",\n \"Mo\",\n \"Tu\",\n \"We\",\n \"Th\",\n \"Fr\",\n \"Sa\"\n ],\n wide: [\n \"Sunday\",\n \"Monday\",\n \"Tuesday\",\n \"Wednesday\",\n \"Thursday\",\n \"Friday\",\n \"Saturday\"\n ]\n },\n \"stand-alone\": {\n abbreviated: [\n \"Sun\",\n \"Mon\",\n \"Tue\",\n \"Wed\",\n \"Thu\",\n \"Fri\",\n \"Sat\"\n ],\n narrow: [\n \"S\",\n \"M\",\n \"T\",\n \"W\",\n \"T\",\n \"F\",\n \"S\"\n ],\n short: [\n \"Su\",\n \"Mo\",\n \"Tu\",\n \"We\",\n \"Th\",\n \"Fr\",\n \"Sa\"\n ],\n wide: [\n \"Sunday\",\n \"Monday\",\n \"Tuesday\",\n \"Wednesday\",\n \"Thursday\",\n \"Friday\",\n \"Saturday\"\n ]\n }\n },\n months: {\n format: {\n abbreviated: [\n \"Jan\",\n \"Feb\",\n \"Mar\",\n \"Apr\",\n \"May\",\n \"Jun\",\n \"Jul\",\n \"Aug\",\n \"Sep\",\n \"Oct\",\n \"Nov\",\n \"Dec\"\n ],\n narrow: [\n \"J\",\n \"F\",\n \"M\",\n \"A\",\n \"M\",\n \"J\",\n \"J\",\n \"A\",\n \"S\",\n \"O\",\n \"N\",\n \"D\"\n ],\n wide: [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\"\n ]\n },\n \"stand-alone\": {\n abbreviated: [\n \"Jan\",\n \"Feb\",\n \"Mar\",\n \"Apr\",\n \"May\",\n \"Jun\",\n \"Jul\",\n \"Aug\",\n \"Sep\",\n \"Oct\",\n \"Nov\",\n \"Dec\"\n ],\n narrow: [\n \"J\",\n \"F\",\n \"M\",\n \"A\",\n \"M\",\n \"J\",\n \"J\",\n \"A\",\n \"S\",\n \"O\",\n \"N\",\n \"D\"\n ],\n wide: [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\"\n ]\n }\n },\n quarters: {\n format: {\n abbreviated: [\n \"Q1\",\n \"Q2\",\n \"Q3\",\n \"Q4\"\n ],\n narrow: [\n \"1\",\n \"2\",\n \"3\",\n \"4\"\n ],\n wide: [\n \"1st quarter\",\n \"2nd quarter\",\n \"3rd quarter\",\n \"4th quarter\"\n ]\n },\n \"stand-alone\": {\n abbreviated: [\n \"Q1\",\n \"Q2\",\n \"Q3\",\n \"Q4\"\n ],\n narrow: [\n \"1\",\n \"2\",\n \"3\",\n \"4\"\n ],\n wide: [\n \"1st quarter\",\n \"2nd quarter\",\n \"3rd quarter\",\n \"4th quarter\"\n ]\n }\n },\n dayPeriods: {\n format: {\n abbreviated: {\n midnight: \"midnight\",\n am: \"AM\",\n \"am-alt-variant\": \"am\",\n noon: \"noon\",\n pm: \"PM\",\n \"pm-alt-variant\": \"pm\",\n morning1: \"in the morning\",\n afternoon1: \"in the afternoon\",\n evening1: \"in the evening\",\n night1: \"at night\"\n },\n narrow: {\n midnight: \"mi\",\n am: \"a\",\n \"am-alt-variant\": \"am\",\n noon: \"n\",\n pm: \"p\",\n \"pm-alt-variant\": \"pm\",\n morning1: \"in the morning\",\n afternoon1: \"in the afternoon\",\n evening1: \"in the evening\",\n night1: \"at night\"\n },\n wide: {\n midnight: \"midnight\",\n am: \"AM\",\n \"am-alt-variant\": \"am\",\n noon: \"noon\",\n pm: \"PM\",\n \"pm-alt-variant\": \"pm\",\n morning1: \"in the morning\",\n afternoon1: \"in the afternoon\",\n evening1: \"in the evening\",\n night1: \"at night\"\n }\n },\n \"stand-alone\": {\n abbreviated: {\n midnight: \"midnight\",\n am: \"AM\",\n \"am-alt-variant\": \"am\",\n noon: \"noon\",\n pm: \"PM\",\n \"pm-alt-variant\": \"pm\",\n morning1: \"morning\",\n afternoon1: \"afternoon\",\n evening1: \"evening\",\n night1: \"night\"\n },\n narrow: {\n midnight: \"midnight\",\n am: \"AM\",\n \"am-alt-variant\": \"am\",\n noon: \"noon\",\n pm: \"PM\",\n \"pm-alt-variant\": \"pm\",\n morning1: \"morning\",\n afternoon1: \"afternoon\",\n evening1: \"evening\",\n night1: \"night\"\n },\n wide: {\n midnight: \"midnight\",\n am: \"AM\",\n \"am-alt-variant\": \"am\",\n noon: \"noon\",\n pm: \"PM\",\n \"pm-alt-variant\": \"pm\",\n morning1: \"morning\",\n afternoon1: \"afternoon\",\n evening1: \"evening\",\n night1: \"night\"\n }\n }\n },\n eras: {\n format: {\n wide: {\n \"0\": \"Before Christ\",\n \"1\": \"Anno Domini\",\n \"0-alt-variant\": \"Before Common Era\",\n \"1-alt-variant\": \"Common Era\"\n },\n abbreviated: {\n \"0\": \"BC\",\n \"1\": \"AD\",\n \"0-alt-variant\": \"BCE\",\n \"1-alt-variant\": \"CE\"\n },\n narrow: {\n \"0\": \"B\",\n \"1\": \"A\",\n \"0-alt-variant\": \"BCE\",\n \"1-alt-variant\": \"CE\"\n }\n }\n },\n dateFields: {\n era: {\n wide: \"era\"\n },\n year: {\n wide: \"year\",\n short: \"yr.\",\n narrow: \"yr.\"\n },\n quarter: {\n wide: \"quarter\",\n short: \"qtr.\",\n narrow: \"qtr.\"\n },\n month: {\n wide: \"month\",\n short: \"mo.\",\n narrow: \"mo.\"\n },\n week: {\n wide: \"week\",\n short: \"wk.\",\n narrow: \"wk.\"\n },\n day: {\n wide: \"day\",\n short: \"day\",\n narrow: \"day\"\n },\n weekday: {\n wide: \"day of the week\"\n },\n dayperiod: {\n wide: \"AM/PM\"\n },\n hour: {\n wide: \"hour\",\n short: \"hr.\",\n narrow: \"hr.\"\n },\n minute: {\n wide: \"minute\",\n short: \"min.\",\n narrow: \"min.\"\n },\n second: {\n wide: \"second\",\n short: \"sec.\",\n narrow: \"sec.\"\n },\n zone: {\n wide: \"time zone\"\n }\n }\n }\n },\n supplemental: {\n likelySubtags: {\n en: \"en-Latn-US\"\n },\n currencyData: {\n region: {\n US: [\n {\n USD: {\n _from: \"1792-01-01\"\n }\n }\n ]\n }\n },\n weekData: {\n firstDay: {\n US: \"sun\"\n },\n weekendStart: {\n \"001\": \"sat\"\n },\n weekendEnd: {\n \"001\": \"sun\"\n }\n }\n }\n};\nexport default defaultData;","import { cldr } from './info';\n\nfunction territoryFromName(name, identity) {\n var likelySubtags = cldr.supplemental.likelySubtags;\n var parts = name.split(\"-\");\n if (likelySubtags) {\n var likelyName = likelySubtags[name] || likelySubtags[parts[0]];\n if (likelyName) {\n parts = likelyName.split(\"-\");\n }\n }\n\n if (identity) {\n for (var idx = parts.length - 1; idx >= 1; idx--) {\n var part = parts[idx];\n if (part === identity.variant || part === identity.script) {\n parts.splice(idx, 1);\n }\n }\n }\n\n var length = parts.length;\n\n if (length > 1) {\n var territory = parts[length - 1];\n return territory.toUpperCase();\n }\n}\n\nexport default function localeTerritory(info) {\n if (info.territory) {\n return info.territory;\n }\n\n var name = info.name;\n var identity = info.identity;\n var territory;\n\n if (identity && identity.territory) {\n territory = identity.territory;\n } else {\n territory = territoryFromName(name, identity);\n }\n\n info.territory = territory;\n\n return territory;\n}\n","export var DECIMAL = \"decimal\";\nexport var CURRENCY = \"currency\";\nexport var ACCOUNTING = \"accounting\";\nexport var PERCENT = \"percent\";\nexport var SCIENTIFIC = \"scientific\";\n\nexport var CURRENCY_PLACEHOLDER = \"$\";\nexport var PERCENT_PLACEHOLDER = \"%\";\nexport var NUMBER_PLACEHOLDER = \"n\";\n\nexport var LIST_SEPARATOR = \";\";\nexport var GROUP_SEPARATOR = \",\";\n\nexport var POINT = \".\";\nexport var EMPTY = \"\";\n\nexport var DEFAULT_LOCALE = \"en\";\n\n","import { getLocaleInfo } from './info';\nimport { EMPTY } from '../common/constants';\n\nfunction lowerArray(arr) {\n var result = [];\n for (var idx = 0; idx < arr.length; idx++) {\n result.push(arr[idx].toLowerCase());\n }\n return result;\n}\n\nfunction lowerObject(obj) {\n var result = {};\n for (var field in obj) {\n result[field] = obj[field].toLowerCase();\n }\n return result;\n}\n\nfunction cloneLower(obj) {\n var result = Array.isArray(obj) ? lowerArray(obj) : lowerObject(obj);\n return result;\n}\n\nexport default function dateFormatNames(locale, options) {\n var type = options.type;\n var nameType = options.nameType;\n var standAlone = options.standAlone;\n var lower = options.lower;\n var info = getLocaleInfo(locale);\n var formatType = standAlone ? \"stand-alone\" : \"format\";\n var lowerNameType = (lower ? \"lower-\" : EMPTY) + nameType;\n var formatNames = info.calendar[type][formatType];\n var result = formatNames[lowerNameType];\n if (!result && lower) {\n result = formatNames[lowerNameType] = cloneLower(formatNames[nameType]);\n }\n return result;\n}","export default function parseRangeDate(value) {\n var parts = value.split('-');\n var year = parseInt(parts[0], 10);\n var month = parseInt(parts[1], 10) - 1;\n var day = parseInt(parts[2], 10);\n\n return new Date(year, month, day);\n}\n","import { cldr, getLocaleInfo } from './info';\nimport { errors } from '../errors';\nimport localeTerritory from './territory';\nimport parseRangeDate from './parse-range-date';\n\n/* eslint-disable consistent-return */\n\nvar NoCurrency = errors.NoCurrency;\nvar NoCurrencyDisplay = errors.NoCurrencyDisplay;\nvar NoSupplementalCurrency = errors.NoSupplementalCurrency;\nvar NoCurrencyRegion = errors.NoCurrencyRegion;\nvar NoValidCurrency = errors.NoValidCurrency;\n\nvar DEFAULT_CURRENCY_FRACTIONS = 2;\nvar SYMBOL = \"symbol\";\nvar INVALID_CURRENCY_CODE = 'XXX';\n\nvar GLOBAL_CURRENCIES = {\n '001': 'USD', // 001 refers to world. not sure if it is correct to assume USD but seems better than throw an error\n '150': 'EUR' // 150 territory for Europe\n\n};\n\nfunction getCurrencyInfo(locale, currency, throwIfNoValid) {\n var info = getLocaleInfo(locale);\n var currencies = info.numbers.currencies;\n if (!currencies) {\n if (throwIfNoValid) {\n throw NoCurrency.error();\n }\n\n return;\n }\n\n var currencyDisplayInfo = currencies[currency];\n\n if (!currencyDisplayInfo) {\n if (throwIfNoValid) {\n throw NoCurrencyDisplay.error();\n }\n\n return;\n }\n\n return currencyDisplayInfo;\n}\n\nfunction lengthComparer(a, b) {\n return b.length - a.length;\n}\n\nfunction regionCurrency(regionCurrencies) {\n var latestValidUntil, latestValidUntilRange;\n var latestStillValid, latestStillValidDate;\n\n for (var idx = 0; idx < regionCurrencies.length; idx++) {\n var currency = regionCurrencies[idx];\n var code = Object.keys(currency)[0];\n var info = currency[code];\n if (code !== INVALID_CURRENCY_CODE && info._tender !== 'false' && info._from) {\n if (!info._to) {\n var stillValidDate = parseRangeDate(info._from);\n if (!latestStillValidDate || latestStillValidDate < stillValidDate) {\n latestStillValid = code;\n latestStillValidDate = stillValidDate;\n }\n } else if (!latestStillValid) {\n var validFrom = parseRangeDate(info._from);\n var validTo = parseRangeDate(info._to);\n if (!latestValidUntilRange || latestValidUntilRange.to < validTo || latestValidUntilRange.from < validFrom) {\n latestValidUntil = code;\n latestValidUntilRange = {\n from: validFrom,\n to: validTo\n };\n }\n }\n }\n }\n\n return latestStillValid || latestValidUntil;\n}\n\nexport function currencyDisplays(locale, currency, throwIfNoValid) {\n if ( throwIfNoValid === void 0 ) throwIfNoValid = true;\n\n var currencyInfo = getCurrencyInfo(locale, currency, throwIfNoValid);\n if (!currencyInfo) {\n return;\n }\n\n if (!currencyInfo.displays) {\n var displays = [ currency ];\n for (var field in currencyInfo) {\n displays.push(currencyInfo[field]);\n }\n displays.sort(lengthComparer);\n currencyInfo.displays = displays;\n }\n\n return currencyInfo.displays;\n}\n\nexport function currencyDisplay(locale, options) {\n var value = options.value;\n var currency = options.currency;\n var currencyDisplay = options.currencyDisplay; if ( currencyDisplay === void 0 ) currencyDisplay = SYMBOL;\n\n if (currencyDisplay === \"code\") {\n return currency;\n }\n\n var currencyInfo = getCurrencyInfo(locale, currency, true);\n var result;\n\n if (currencyDisplay === SYMBOL) {\n result = currencyInfo[\"symbol-alt-narrow\"] || currencyInfo[SYMBOL];\n } else {\n if (typeof value === undefined || value !== 1) {\n result = currencyInfo[\"displayName-count-other\"];\n } else {\n result = currencyInfo[\"displayName-count-one\"];\n }\n }\n\n return result;\n}\n\nexport function currencyFractionOptions(code) {\n var minimumFractionDigits = DEFAULT_CURRENCY_FRACTIONS;\n var maximumFractionDigits = DEFAULT_CURRENCY_FRACTIONS;\n\n var fractions = ((cldr.supplemental.currencyData || {}).fractions || {})[code];\n\n if (fractions && fractions._digits) {\n maximumFractionDigits = minimumFractionDigits = parseInt(fractions._digits, 10);\n }\n\n return {\n minimumFractionDigits: minimumFractionDigits,\n maximumFractionDigits: maximumFractionDigits\n };\n}\n\nexport function territoryCurrencyCode(territory, throwIfNoValid) {\n if ( throwIfNoValid === void 0 ) throwIfNoValid = true;\n\n if (GLOBAL_CURRENCIES[territory]) {\n return GLOBAL_CURRENCIES[territory];\n }\n\n var currencyData = cldr.supplemental.currencyData;\n if (!currencyData) {\n if (throwIfNoValid) {\n throw NoSupplementalCurrency.error();\n }\n\n return;\n }\n\n var regionCurrencies = currencyData.region[territory];\n\n if (!regionCurrencies) {\n if (throwIfNoValid) {\n throw NoCurrencyRegion.error(territory);\n }\n\n return;\n }\n\n var currencyCode = regionCurrency(regionCurrencies);\n\n return currencyCode;\n}\n\nexport function localeCurrency(locale, throwIfNoValid) {\n var info = getLocaleInfo(locale);\n var numbers = info.numbers;\n\n if (!numbers.localeCurrency) {\n var currency = territoryCurrencyCode(localeTerritory(info), throwIfNoValid);\n\n if (!currency && throwIfNoValid) {\n throw NoValidCurrency.error(info.name);\n }\n\n numbers.localeCurrency = currency;\n }\n\n return numbers.localeCurrency;\n}\n","\nexport var DAYS_OF_WEEK = [ \"sun\", \"mon\", \"tue\", \"wed\", \"thu\", \"fri\", \"sat\" ];\n\nexport var DEFAULT_TERRITORY = '001';\n","import { cldr, getLocaleInfo } from './info';\nimport localeTerritory from './territory';\n\nimport { DAYS_OF_WEEK, DEFAULT_TERRITORY } from './constants';\nimport { errors } from '../errors';\n\nvar NoWeekData = errors.NoWeekData;\nvar NoFirstDay = errors.NoFirstDay;\n\nexport default function firstDay(locale) {\n var info = getLocaleInfo(locale);\n\n if (!isNaN(info.firstDay)) {\n return info.firstDay;\n }\n\n var weekData = cldr.supplemental.weekData;\n if (!weekData) {\n throw NoWeekData.error();\n }\n\n var firstDay = weekData.firstDay[localeTerritory(info)] || weekData.firstDay[DEFAULT_TERRITORY];\n\n if (!firstDay) {\n throw NoFirstDay.error();\n }\n\n info.firstDay = DAYS_OF_WEEK.indexOf(firstDay);\n\n return info.firstDay;\n}\n","import { currencyDisplay, localeCurrency } from '../cldr';\n\nexport default function formatCurrencySymbol(info, options) {\n if ( options === void 0 ) options = {};\n\n if (!options.currency) {\n options.currency = localeCurrency(info, true);\n }\n\n var display = currencyDisplay(info, options);\n\n return display;\n}\n","export default function groupInteger(number, start, end, options, info) {\n var symbols = info.numbers.symbols;\n var decimalIndex = number.indexOf(symbols.decimal);\n var groupSizes = options.groupSize.slice();\n var groupSize = groupSizes.shift();\n\n var integerEnd = decimalIndex !== -1 ? decimalIndex : end + 1;\n\n var integer = number.substring(start, integerEnd);\n var result = number;\n var integerLength = integer.length;\n\n if (integerLength >= groupSize) {\n var idx = integerLength;\n var parts = [];\n\n while (idx > -1) {\n var value = integer.substring(idx - groupSize, idx);\n if (value) {\n parts.push(value);\n }\n idx -= groupSize;\n var newGroupSize = groupSizes.shift();\n groupSize = newGroupSize !== undefined ? newGroupSize : groupSize;\n\n if (groupSize === 0) {\n value = integer.substring(0, idx);\n if (value) {\n parts.push(value);\n }\n break;\n }\n }\n\n integer = parts.reverse().join(symbols.group);\n result = number.substring(0, start) + integer + number.substring(integerEnd);\n }\n\n return result;\n}","import { CURRENCY, ACCOUNTING } from '../common/constants';\n\nexport default function isCurrencyStyle(style) {\n return style === CURRENCY || style === ACCOUNTING;\n}","export default function pad(number, digits, right) {\n if ( digits === void 0 ) digits = 2;\n if ( right === void 0 ) right = false;\n\n var count = digits - String(number).length;\n var result = number;\n\n if (count > 0) {\n var padString = new Array(count + 1).join(\"0\");\n result = right ? number + padString : padString + number;\n }\n\n return result;\n}","var MAX_PRECISION = 20;\n\nexport default function round(value, precision) {\n var result = value;\n var decimals = precision || 0;\n\n result = result.toString().split('e');\n result = Math.round(Number(result[0] + 'e' + (result[1] ? (Number(result[1]) + decimals) : decimals)));\n\n result = result.toString().split('e');\n result = Number(result[0] + 'e' + (result[1] ? (Number(result[1]) - decimals) : -decimals));\n\n return result.toFixed(Math.min(decimals, MAX_PRECISION));\n}","import { cldr, getLocaleInfo } from './info';\nimport localeTerritory from './territory';\n\nimport { DAYS_OF_WEEK, DEFAULT_TERRITORY } from './constants';\nimport { errors } from '../errors';\n\nvar NoWeekData = errors.NoWeekData;\n\nexport default function weekendRange(locale) {\n var info = getLocaleInfo(locale);\n\n if (info.weekendRange) {\n return info.weekendRange;\n }\n\n var weekData = cldr.supplemental.weekData;\n if (!weekData) {\n throw NoWeekData.error();\n }\n\n var territory = localeTerritory(info);\n var start = weekData.weekendStart[territory] || weekData.weekendStart[DEFAULT_TERRITORY];\n var end = weekData.weekendEnd[territory] || weekData.weekendEnd[DEFAULT_TERRITORY];\n\n info.weekendRange = {\n start: DAYS_OF_WEEK.indexOf(start),\n end: DAYS_OF_WEEK.indexOf(end)\n };\n\n return info.weekendRange;\n}\n","import { PERCENT, SCIENTIFIC, NUMBER_PLACEHOLDER, CURRENCY_PLACEHOLDER, PERCENT_PLACEHOLDER, EMPTY, POINT } from '../common/constants';\nimport formatCurrencySymbol from './format-currency-symbol';\nimport groupInteger from './group-integer';\nimport isCurrencyStyle from './is-currency-style';\nimport pad from '../common/pad';\nimport round from '../common/round';\nimport { currencyFractionOptions } from '../cldr';\n\nvar DEFAULT_DECIMAL_ROUNDING = 3;\nvar DEFAULT_PERCENT_ROUNDING = 0;\n\nvar trailingZeroRegex = /0+$/;\n\nfunction fractionOptions(options) {\n var minimumFractionDigits = options.minimumFractionDigits;\n var maximumFractionDigits = options.maximumFractionDigits;\n var style = options.style;\n var isCurrency = isCurrencyStyle(style);\n var currencyFractions;\n if (isCurrency) {\n currencyFractions = currencyFractionOptions(options.currency);\n }\n\n if (minimumFractionDigits === undefined) {\n minimumFractionDigits = isCurrency ? currencyFractions.minimumFractionDigits : 0;\n }\n\n if (maximumFractionDigits === undefined) {\n if (style === PERCENT) {\n maximumFractionDigits = Math.max(minimumFractionDigits, DEFAULT_PERCENT_ROUNDING);\n } else if (isCurrency) {\n maximumFractionDigits = Math.max(minimumFractionDigits, currencyFractions.maximumFractionDigits);\n } else {\n maximumFractionDigits = Math.max(minimumFractionDigits, DEFAULT_DECIMAL_ROUNDING);\n }\n }\n\n return {\n minimumFractionDigits: minimumFractionDigits,\n maximumFractionDigits: maximumFractionDigits\n };\n}\n\nfunction applyPattern(value, pattern, symbol) {\n var result = EMPTY;\n for (var idx = 0, length = pattern.length; idx < length; idx++) {\n var ch = pattern.charAt(idx);\n\n if (ch === NUMBER_PLACEHOLDER) {\n result += value;\n } else if (ch === CURRENCY_PLACEHOLDER || ch === PERCENT_PLACEHOLDER) {\n result += symbol;\n } else {\n result += ch;\n }\n }\n return result;\n}\n\nfunction currencyUnitPattern(info, value) {\n var currencyInfo = info.numbers.currency;\n var pattern = value !== 1 ? currencyInfo[\"unitPattern-count-other\"] : currencyInfo[\"unitPattern-count-one\"];\n if (value < 0) {\n pattern = pattern.replace(NUMBER_PLACEHOLDER, (\"-\" + NUMBER_PLACEHOLDER));\n }\n\n return pattern;\n}\n\n\nexport default function standardNumberFormat(number, options, info) {\n var symbols = info.numbers.symbols;\n var style = options.style;\n var isCurrency = isCurrencyStyle(style);\n\n //return number in exponential format\n if (style === SCIENTIFIC) {\n var exponential = options.minimumFractionDigits !== undefined ? number.toExponential(options.minimumFractionDigits) : number.toExponential();\n return exponential.replace(POINT, symbols.decimal);\n }\n\n var value = number;\n var symbol;\n\n if (isCurrency) {\n options.value = value;\n symbol = formatCurrencySymbol(info, options);\n }\n\n if (style === PERCENT) {\n value *= 100;\n symbol = symbols.percentSign;\n }\n\n var ref = fractionOptions(options);\n var minimumFractionDigits = ref.minimumFractionDigits;\n var maximumFractionDigits = ref.maximumFractionDigits;\n\n value = round(value, maximumFractionDigits);\n\n var negative = value < 0;\n\n var parts = value.split(POINT);\n\n var integer = parts[0];\n var fraction = pad(parts[1] ? parts[1].replace(trailingZeroRegex, EMPTY) : EMPTY, minimumFractionDigits, true);\n\n //exclude \"-\" if number is negative.\n if (negative) {\n integer = integer.substring(1);\n }\n\n if (options.minimumIntegerDigits) {\n integer = pad(integer, options.minimumIntegerDigits);\n }\n\n var formattedValue = options.useGrouping !== false ? groupInteger(integer, 0, integer.length, options, info) : integer;\n\n if (fraction) {\n formattedValue += symbols.decimal + fraction;\n }\n\n var pattern;\n\n if (isCurrency && options.currencyDisplay === \"name\") {\n pattern = currencyUnitPattern(info, number);\n } else {\n var patterns = options.patterns;\n pattern = negative ? patterns[1] || (\"-\" + patterns[0]) : patterns[0];\n }\n\n if (pattern === NUMBER_PLACEHOLDER && !negative) {\n return formattedValue;\n }\n\n var result = applyPattern(formattedValue, pattern, symbol);\n\n return result;\n}","import { CURRENCY, PERCENT, LIST_SEPARATOR, GROUP_SEPARATOR, CURRENCY_PLACEHOLDER, PERCENT_PLACEHOLDER, POINT, EMPTY } from '../common/constants';\nimport formatCurrencySymbol from './format-currency-symbol';\nimport groupInteger from './group-integer';\nimport round from '../common/round';\n\nvar PLACEHOLDER = \"__??__\";\n\nvar SHARP = \"#\";\nvar ZERO = \"0\";\n\nvar literalRegExp = /(\\\\.)|(['][^']*[']?)|([\"][^\"]*[\"]?)/g;\nvar trailingZerosRegExp = /(\\.(?:[0-9]*[1-9])?)0+$/g;\nvar trailingPointRegExp = /\\.$/;\nvar commaRegExp = /\\,/g;\n\nfunction setFormatLiterals(formatOptions) {\n var format = formatOptions.format;\n if (format.indexOf(\"'\") > -1 || format.indexOf(\"\\\"\") > -1 || format.indexOf(\"\\\\\") > -1) {\n var literals = formatOptions.literals = [];\n formatOptions.format = format.replace(literalRegExp, function(match) {\n var quoteChar = match.charAt(0).replace(\"\\\\\", EMPTY);\n var literal = match.slice(1).replace(quoteChar, EMPTY);\n\n literals.push(literal);\n\n return PLACEHOLDER;\n });\n }\n}\n\nfunction trimTrailingZeros(value, lastZero) {\n var trimRegex;\n\n if (lastZero === 0) {\n trimRegex = trailingZerosRegExp;\n } else {\n trimRegex = new RegExp((\"(\\\\.[0-9]{\" + lastZero + \"}[1-9]*)0+$\"), 'g');\n }\n\n return value.replace(trimRegex, '$1').replace(trailingPointRegExp, EMPTY);\n}\n\nfunction roundNumber(formatOptions) {\n var number = formatOptions.number;\n var format = formatOptions.format;\n var decimalIndex = format.indexOf(POINT);\n\n if (decimalIndex !== -1) {\n var zeroIndex = format.lastIndexOf(ZERO) - decimalIndex;\n var sharpIndex = format.lastIndexOf(SHARP) - decimalIndex;\n var hasZero = zeroIndex > -1;\n var hasSharp = sharpIndex > -1;\n var fraction = number.toString().split(\"e\");\n\n if (fraction[1]) {\n fraction = round(number, Math.abs(fraction[1]));\n } else {\n fraction = fraction[0];\n }\n fraction = fraction.split(POINT)[1] || EMPTY;\n\n var precision = fraction.length;\n var trailingZeros = -1;\n\n if (!hasZero && !hasSharp) {\n formatOptions.format = format.substring(0, decimalIndex) + format.substring(decimalIndex + 1);\n decimalIndex = -1;\n precision = 0;\n } else if (hasZero && zeroIndex > sharpIndex) {\n precision = zeroIndex;\n } else if (sharpIndex > zeroIndex) {\n if (hasSharp && precision > sharpIndex) {\n precision = sharpIndex;\n } else if (hasZero && precision < zeroIndex) {\n precision = zeroIndex;\n }\n\n trailingZeros = hasZero ? zeroIndex : 0;\n }\n\n if (precision > -1) {\n number = round(number, precision);\n if (trailingZeros > -1) {\n number = trimTrailingZeros(number, trailingZeros);\n }\n }\n } else {\n number = round(number);\n }\n\n if (formatOptions.negative && (number * -1) >= 0) {\n formatOptions.negative = false;\n }\n\n formatOptions.number = number;\n formatOptions.decimalIndex = decimalIndex;\n}\n\nfunction isConstantFormat(format) {\n return format.indexOf(SHARP) === -1 && format.indexOf(ZERO) === -1;\n}\n\nfunction setValueSpecificFormat(formatOptions) {\n var number = formatOptions.number;\n var format = formatOptions.format;\n format = format.split(LIST_SEPARATOR);\n if (formatOptions.negative && format[1]) {\n format = format[1];\n formatOptions.hasNegativeFormat = true;\n } else if (number === 0) {\n var zeroFormat = format[2];\n format = zeroFormat || format[0];\n if (zeroFormat && isConstantFormat(zeroFormat)) {\n formatOptions.constant = zeroFormat;\n }\n } else {\n format = format[0];\n }\n\n formatOptions.format = format;\n}\n\nfunction setStyleOptions(formatOptions, info) {\n var format = formatOptions.format;\n\n //multiply number if the format has percent\n if (format.indexOf(PERCENT_PLACEHOLDER) !== -1) {\n formatOptions.style = PERCENT;\n formatOptions.symbol = info.numbers.symbols.percentSign;\n formatOptions.number *= 100;\n }\n\n if (format.indexOf(CURRENCY_PLACEHOLDER) !== -1) {\n formatOptions.style = CURRENCY;\n formatOptions.symbol = formatCurrencySymbol(info);\n }\n}\n\nfunction setGroupOptions(formatOptions) {\n formatOptions.hasGroup = formatOptions.format.indexOf(GROUP_SEPARATOR) > -1;\n if (formatOptions.hasGroup) {\n formatOptions.format = formatOptions.format.replace(commaRegExp, EMPTY);\n }\n}\n\nfunction placeholderIndex(index1, index2, start) {\n var index;\n if (index1 === -1 && index2 !== -1) {\n index = index2;\n } else if (index1 !== -1 && index2 === -1) {\n index = index1;\n } else {\n index = start ? Math.min(index1, index2) : Math.max(index1, index2);\n }\n return index;\n}\n\nfunction setPlaceholderIndices(formatOptions) {\n var format = formatOptions.format;\n var sharpIndex = format.indexOf(SHARP);\n var zeroIndex = format.indexOf(ZERO);\n\n var start = placeholderIndex(sharpIndex, zeroIndex, true);\n\n sharpIndex = format.lastIndexOf(SHARP);\n zeroIndex = format.lastIndexOf(ZERO);\n\n var end = placeholderIndex(sharpIndex, zeroIndex);\n\n if (start === format.length) {\n end = start;\n }\n\n formatOptions.start = start;\n formatOptions.end = end;\n formatOptions.lastZeroIndex = zeroIndex;\n}\n\nfunction replaceStyleSymbols(number, style, symbol) {\n var result = number;\n if (style === CURRENCY || style === PERCENT) {\n result = EMPTY;\n for (var idx = 0, length = number.length; idx < length; idx++) {\n var ch = number.charAt(idx);\n result += (ch === CURRENCY_PLACEHOLDER || ch === PERCENT_PLACEHOLDER) ? symbol : ch;\n }\n }\n return result;\n}\n\nfunction replaceLiterals(number, literals) {\n var result = number;\n if (literals) {\n var length = literals.length;\n for (var idx = 0; idx < length; idx++) {\n result = result.replace(PLACEHOLDER, literals[idx]);\n }\n }\n return result;\n}\n\nfunction replacePlaceHolders(formatOptions, info) {\n var start = formatOptions.start;\n var end = formatOptions.end;\n var negative = formatOptions.negative;\n var format = formatOptions.format;\n var decimalIndex = formatOptions.decimalIndex;\n var lastZeroIndex = formatOptions.lastZeroIndex;\n var hasNegativeFormat = formatOptions.hasNegativeFormat;\n var hasGroup = formatOptions.hasGroup;\n var number = formatOptions.number;\n var value = number.toString().split(POINT);\n var length = format.length;\n var integer = value[0];\n var fraction = value[1] || EMPTY;\n var integerLength = integer.length;\n var replacement = EMPTY;\n\n number = format.substring(0, start);\n\n if (negative && !hasNegativeFormat) {\n number += \"-\";\n }\n\n for (var idx = start; idx < length; idx++) {\n var ch = format.charAt(idx);\n\n if (decimalIndex === -1) {\n if (end - idx < integerLength) {\n\n number += integer;\n break;\n }\n } else {\n if (lastZeroIndex !== -1 && lastZeroIndex < idx) {\n replacement = EMPTY;\n }\n\n if ((decimalIndex - idx) <= integerLength && decimalIndex - idx > -1) {\n number += integer;\n idx = decimalIndex;\n }\n\n if (decimalIndex === idx) {\n number += (fraction ? info.numbers.symbols.decimal : EMPTY) + fraction;\n idx += end - decimalIndex + 1;\n continue;\n }\n }\n\n if (ch === ZERO) {\n number += ch;\n replacement = ch;\n } else if (ch === SHARP) {\n number += replacement;\n }\n }\n\n if (hasGroup) {\n number = groupInteger(number, start + (negative && !hasNegativeFormat ? 1 : 0), Math.max(end, (integerLength + start)), info.numbers.decimal, info);\n }\n\n if (end >= start) {\n number += format.substring(end + 1);\n }\n\n return number;\n}\n\nfunction applyCustomFormat(formatOptions, info) {\n var number = formatOptions.number;\n if (formatOptions.start !== -1) {\n number = replacePlaceHolders(formatOptions, info);\n number = replaceStyleSymbols(number, formatOptions.style, formatOptions.symbol);\n number = replaceLiterals(number, formatOptions.literals);\n }\n\n return number;\n}\n\nexport default function customNumberFormat(number, format, info) {\n var formatOptions = {\n negative: number < 0,\n number: Math.abs(number),\n format: format\n };\n\n setValueSpecificFormat(formatOptions);\n\n if (formatOptions.constant) {\n return formatOptions.constant;\n }\n\n setFormatLiterals(formatOptions);\n setStyleOptions(formatOptions, info);\n setGroupOptions(formatOptions);\n roundNumber(formatOptions);\n setPlaceholderIndices(formatOptions);\n\n return applyCustomFormat(formatOptions, info);\n}","import { CURRENCY, ACCOUNTING, DECIMAL, PERCENT, SCIENTIFIC } from '../common/constants';\nimport isString from '../common/is-string';\n\nvar standardFormatRegExp = /^(n|c|p|e|a)(\\d*)$/i;\n\nfunction standardFormatOptions(format) {\n var formatAndPrecision = standardFormatRegExp.exec(format);\n\n if (formatAndPrecision) {\n var options = {\n style: DECIMAL\n };\n\n var style = formatAndPrecision[1].toLowerCase();\n\n if (style === \"c\") {\n options.style = CURRENCY;\n } else if (style === \"a\") {\n options.style = ACCOUNTING;\n } else if (style === \"p\") {\n options.style = PERCENT;\n } else if (style === \"e\") {\n options.style = SCIENTIFIC;\n }\n\n if (formatAndPrecision[2]) {\n options.minimumFractionDigits = options.maximumFractionDigits = parseInt(formatAndPrecision[2], 10);\n }\n\n return options;\n }\n}\n\nexport default function formatOptions(format) {\n var options;\n if (isString(format)) {\n options = standardFormatOptions(format);\n } else {\n options = format;\n }\n\n return options;\n}","import { localeInfo } from '../cldr';\nimport { DECIMAL, DEFAULT_LOCALE, NUMBER_PLACEHOLDER, EMPTY } from '../common/constants';\nimport standardNumberFormat from './standard-number-format';\nimport customNumberFormat from './custom-number-format';\nimport formatOptions from './format-options';\n\nexport default function formatNumber(number, format, locale) {\n if ( format === void 0 ) format = NUMBER_PLACEHOLDER;\n if ( locale === void 0 ) locale = DEFAULT_LOCALE;\n\n if (number === undefined || number === null) {\n return EMPTY;\n }\n\n if (!isFinite(number)) {\n return String(number);\n }\n\n var info = localeInfo(locale);\n var options = formatOptions(format);\n\n var result;\n if (options) {\n var style = options.style || DECIMAL;\n result = standardNumberFormat(number, Object.assign({}, info.numbers[style], options), info);\n } else {\n result = customNumberFormat(number, format, info);\n }\n\n return result;\n}\n","export default function isNumber(value) {\n return typeof value === \"number\";\n}","import { localeInfo, localeCurrency, currencyDisplays } from '../cldr';\nimport { PERCENT, NUMBER_PLACEHOLDER, CURRENCY_PLACEHOLDER, DEFAULT_LOCALE, EMPTY, POINT } from '../common/constants';\nimport isNumber from '../common/is-number';\nimport isCurrencyStyle from './is-currency-style';\nimport formatOptions from './format-options';\n\nvar exponentRegExp = /[eE][\\-+]?[0-9]+/;\nvar nonBreakingSpaceRegExp = /\\u00A0/g;\n\nfunction cleanNegativePattern(number, patterns) {\n if (patterns.length > 1) {\n var parts = (patterns[1] || EMPTY).replace(CURRENCY_PLACEHOLDER, EMPTY).split(NUMBER_PLACEHOLDER);\n if (number.indexOf(parts[0]) > -1 && number.indexOf(parts[1]) > -1) {\n return number.replace(parts[0], EMPTY).replace(parts[1], EMPTY);\n }\n }\n}\n\nfunction cleanCurrencyNumber(value, info, format) {\n var options = formatOptions(format) || {};\n var isCurrency = isCurrencyStyle(options.style);\n var number = value;\n var negative;\n\n var currency = options.currency || localeCurrency(info, isCurrency);\n\n if (currency) {\n var displays = currencyDisplays(info, currency, isCurrency);\n if (displays) {\n for (var idx = 0; idx < displays.length; idx++) {\n var display = displays[idx];\n if (number.includes(display)) {\n number = number.replace(display, EMPTY);\n isCurrency = true;\n break;\n }\n }\n }\n\n if (isCurrency) {\n var cleanNumber = cleanNegativePattern(number, info.numbers.currency.patterns) ||\n cleanNegativePattern(number, info.numbers.accounting.patterns);\n\n if (cleanNumber) {\n negative = true;\n number = cleanNumber;\n }\n\n }\n }\n\n return {\n number: number,\n negative: negative\n };\n}\n\nexport default function parseNumber(value, locale, format) {\n if ( locale === void 0 ) locale = DEFAULT_LOCALE;\n if ( format === void 0 ) format = {};\n\n if (!value && value !== 0) {\n return null;\n }\n\n if (isNumber(value)) {\n return value;\n }\n\n var info = localeInfo(locale);\n var symbols = info.numbers.symbols;\n\n var number = value.toString();\n var isPercent;\n\n if (exponentRegExp.test(number)) {\n number = parseFloat(number.replace(symbols.decimal, POINT));\n return isNaN(number) ? null : number;\n }\n\n var negativeSignIndex = number.indexOf(\"-\");\n if (negativeSignIndex > 0) {\n return null;\n }\n\n var isNegative = negativeSignIndex > -1;\n var ref = cleanCurrencyNumber(number, info, format);\n var negativeCurrency = ref.negative;\n var newNumber = ref.number;\n\n number = newNumber;\n isNegative = negativeCurrency !== undefined ? negativeCurrency : isNegative;\n\n if (format.style === PERCENT || number.indexOf(symbols.percentSign) > -1) {\n number = number.replace(symbols.percentSign, EMPTY);\n isPercent = true;\n }\n\n number = number.replace(\"-\", EMPTY)\n .replace(nonBreakingSpaceRegExp, \" \")\n .split(symbols.group.replace(nonBreakingSpaceRegExp, \" \")).join(EMPTY)\n .replace(symbols.decimal, POINT);\n\n number = parseFloat(number);\n\n if (isNaN(number)) {\n number = null;\n } else if (isNegative) {\n number *= -1;\n }\n\n if (number && isPercent) {\n number /= 100;\n }\n\n return number;\n}\n","var formatRegExp = /\\{(\\d+)}/g;\n\nexport default function formatString(format) {\n var values = arguments;\n\n return format.replace(formatRegExp, function (match, index) {\n var value = values[parseInt(index, 10) + 1];\n\n return value;\n });\n}","import formatString from '../common/format-string';\nimport isString from '../common/is-string';\nimport { EMPTY } from '../common/constants';\n\nvar REMOVAL_PENALTY = 120;\nvar ADDITION_PENALTY = 20;\nvar LENGHT_DELTA = [ 2, 1, 5, 3, 4 ];\nvar LONG_LESS_PENALTY_DELTA = -2;\nvar SHORT_LESS_PENALTY_DELTA = -1;\nvar SHORT_MORE_PENALTY_DELTA = 1;\nvar LONG_MORE_PENALTY_DELTA = 2;\n\nvar PENALTIES = {};\nPENALTIES[LONG_LESS_PENALTY_DELTA.toString()] = 8;\nPENALTIES[SHORT_LESS_PENALTY_DELTA.toString()] = 6;\nPENALTIES[LONG_MORE_PENALTY_DELTA.toString()] = 6;\nPENALTIES[SHORT_MORE_PENALTY_DELTA.toString()] = 3;\n\nvar VALUE_FORMAT_LENGTH = {\n numeric: 1,\n \"2-digit\": 2,\n short: 3,\n long: 4,\n narrow: 5\n};\n\nvar TIME_SPECIFIERS_REGEX = /[hHmsSzZoOvVxX]/;\n\nfunction getHourSpecifier(options) {\n return options.hour12 ? \"h\" : \"H\";\n}\n\nvar DATE_OPTIONS_MAP = [ {\n key: \"era\",\n specifier: \"G\"\n}, {\n key: \"year\",\n specifier: \"y\"\n}, {\n key: \"month\",\n specifier: \"M\"\n}, {\n key: \"day\",\n specifier: \"d\"\n}, {\n key: \"weekday\",\n specifier: \"E\"\n}, {\n key: \"hour\",\n getSpecifier: getHourSpecifier\n}, {\n key: \"minute\",\n specifier: \"m\"\n}, {\n key: \"second\",\n specifier: \"s\"\n}, {\n key: \"timeZoneName\",\n specifier: \"z\"\n} ];\n\nvar STAND_ALONE_SPECIFIERS = {\n e: 'c',\n E: 'c',\n M: 'L',\n Q: 'q'\n};\n\nvar specifiersRegex = {};\nvar resolvedFormats = {};\n\nfunction getSpecifierRegex(specifier) {\n if (!specifiersRegex[specifier]) {\n specifiersRegex[specifier] = new RegExp(specifier + \"+\");\n }\n return specifiersRegex[specifier];\n}\n\nfunction skeletonSpecifiers(skeleton) {\n var result = [];\n var current = skeleton.charAt(0);\n var specifier = current;\n for (var idx = 1; idx < skeleton.length; idx++) {\n var character = skeleton.charAt(idx);\n if (character === specifier) {\n current += character;\n } else {\n result.push(current);\n current = specifier = character;\n }\n }\n\n result.push(current);\n\n return result;\n}\n\nfunction findBestMatch(specifiers, availableFormats) {\n var specifiersLength = specifiers.length;\n var maxScore = -Number.MAX_VALUE;\n var bestMatches, result;\n for (var format in availableFormats) {\n var matches = [];\n var currentFormat = format.replace(\"v\", \"z\");\n var score = 0;\n for (var idx = 0; idx < specifiersLength; idx++) {\n var specifier = specifiers[idx];\n var specifierRegex = getSpecifierRegex(specifier[0]);\n var match = (specifierRegex.exec(currentFormat) || [])[0];\n\n if (!match) {\n score -= REMOVAL_PENALTY;\n } else {\n currentFormat = currentFormat.replace(match, EMPTY);\n if (match.length !== specifier.length) {\n var delta = Math.max(Math.min(LENGHT_DELTA[match.length] - LENGHT_DELTA[specifier.length], 2), -2);\n score -= PENALTIES[delta];\n }\n }\n\n matches.push(match);\n\n if (score < maxScore) {\n break;\n }\n }\n\n if (currentFormat.length) {\n score -= skeletonSpecifiers(currentFormat).length * ADDITION_PENALTY;\n }\n\n if (score > maxScore) {\n maxScore = score;\n bestMatches = matches;\n result = availableFormats[format];\n }\n }\n\n result = result.replace(\"v\", \"z\");\n\n for (var idx$1 = 0; idx$1 < specifiersLength; idx$1++) {\n var bestMatch = bestMatches[idx$1];\n if (bestMatch && bestMatch !== specifiers[idx$1]) {\n var matchSpecifier = bestMatches[idx$1][0];\n result = result.replace(getSpecifierRegex(matchSpecifier), specifiers[idx$1]);\n if (STAND_ALONE_SPECIFIERS[matchSpecifier]) {\n result = result.replace(getSpecifierRegex(STAND_ALONE_SPECIFIERS[matchSpecifier]), specifiers[idx$1]);\n }\n }\n }\n\n return result;\n}\n\nfunction cacheFormat(skeleton, format, locale) {\n if (!resolvedFormats[locale]) {\n resolvedFormats[locale] = {};\n }\n resolvedFormats[locale][skeleton] = format;\n}\n\n\nfunction skeletonFormat(skeleton, info) {\n var availableFormats = info.calendar.dateTimeFormats.availableFormats;\n if (availableFormats[skeleton]) {\n return availableFormats[skeleton];\n }\n if (resolvedFormats[info.name] && resolvedFormats[info.name][skeleton]) {\n return resolvedFormats[info.name][skeleton];\n }\n var timeStartIndex = skeleton.search(TIME_SPECIFIERS_REGEX);\n var result;\n if (timeStartIndex > 0) {\n var dateSkeleton = skeleton.substr(0, timeStartIndex);\n var timeSkeleton = skeleton.substr(timeStartIndex);\n\n result = formatString(info.calendar.dateTimeFormats.short, //should be deterimed based on specifiers\n availableFormats[timeSkeleton] || findBestMatch(skeletonSpecifiers(timeSkeleton), availableFormats),\n availableFormats[dateSkeleton] || findBestMatch(skeletonSpecifiers(dateSkeleton), availableFormats));\n } else {\n result = findBestMatch(skeletonSpecifiers(skeleton), availableFormats);\n }\n\n cacheFormat(skeleton, result, info.name);\n return result;\n}\n\nfunction skeletonFromOptions(options) {\n var result = [];\n for (var idx = 0; idx < DATE_OPTIONS_MAP.length; idx++) {\n var option = DATE_OPTIONS_MAP[idx];\n var field = option.key;\n var value = options[field];\n if (value) {\n var spcifier = option.specifier || option.getSpecifier(options);\n result.push(spcifier.repeat(VALUE_FORMAT_LENGTH[value]));\n }\n }\n\n return result.join(EMPTY);\n}\n\nexport default function datePattern(format, info) {\n var calendar = info.calendar;\n var result;\n if (isString(format)) {\n if (calendar.patterns[format]) {\n result = calendar.patterns[format];\n } else {\n result = format;\n }\n } else if (format) {\n if (format.pattern) {\n return format.pattern;\n }\n\n var skeleton = format.skeleton;\n if (!skeleton) {\n if (format.datetime) {\n result = formatString(calendar.dateTimeFormats[format.datetime], calendar.timeFormats[format.datetime], calendar.dateFormats[format.datetime]);\n } else if (format.date) {\n result = calendar.dateFormats[format.date];\n } else if (format.time) {\n result = calendar.timeFormats[format.time];\n } else {\n skeleton = skeletonFromOptions(format);\n }\n }\n\n if (skeleton) {\n result = skeletonFormat(skeleton, info);\n }\n }\n\n if (!result) {\n result = calendar.patterns.d;\n }\n\n return result;\n}\n","export default function dateNameType(formatLength) {\n var nameType;\n if (formatLength <= 3) {\n nameType = \"abbreviated\";\n } else if (formatLength === 4) {\n nameType = \"wide\";\n } else if (formatLength === 5) {\n nameType = \"narrow\";\n } else if (formatLength === 6) {\n nameType = \"short\";\n }\n\n return nameType;\n}","import dateFormatNames from '../cldr/date-format-names';\nimport dateNameType from './date-name-type';\n\nexport default function formatNames(locale, type, formatLength, standAlone, lower) {\n return dateFormatNames(locale, {\n type: type,\n nameType: dateNameType(formatLength),\n standAlone: standAlone,\n lower: lower\n });\n}","function isFunction(fun) {\n return typeof(fun) === 'function';\n}\n\nexport default function isDate(value) {\n return Boolean(value) && isFunction(value.getTime) && isFunction(value.getMonth);\n}\n","var MONTH = 'month';\nvar HOUR = 'hour';\nvar ZONE = 'zone';\nvar WEEKDAY = 'weekday';\nvar QUARTER = 'quarter';\n\nvar DATE_FIELD_MAP = {\n 'G': 'era',\n 'y': 'year',\n 'q': QUARTER,\n 'Q': QUARTER,\n 'M': MONTH,\n 'L': MONTH,\n 'd': 'day',\n 'E': WEEKDAY,\n 'c': WEEKDAY,\n 'e': WEEKDAY,\n 'h': HOUR,\n 'H': HOUR,\n 'k': HOUR,\n 'K': HOUR,\n 'm': 'minute',\n 's': 'second',\n 'a': 'dayperiod',\n 'x': ZONE,\n 'X': ZONE,\n 'z': ZONE,\n 'Z': ZONE\n};\n\nvar dateFormatRegExp = /d{1,2}|E{1,6}|e{1,6}|c{3,6}|c{1}|M{1,5}|L{1,5}|y{1,4}|H{1,2}|h{1,2}|k{1,2}|K{1,2}|m{1,2}|a{1,5}|s{1,2}|S{1,3}|z{1,4}|Z{1,5}|x{1,5}|X{1,5}|G{1,5}|q{1,5}|Q{1,5}|\"[^\"]*\"|'[^']*'/g;\n\nexport { dateFormatRegExp, DATE_FIELD_MAP };","import { localeInfo, firstDay } from '../cldr';\nimport { DEFAULT_LOCALE, EMPTY } from '../common/constants';\nimport formatString from '../common/format-string';\nimport datePattern from './date-pattern';\nimport formatNames from './format-names';\nimport pad from '../common/pad';\nimport isDate from '../common/is-date';\nimport { dateFormatRegExp } from './constants';\n\nfunction formatDayOfWeekIndex(day, formatLength, localeInfo) {\n var firstDayIndex = firstDay(localeInfo);\n var dayIndex;\n if (day < firstDayIndex) {\n dayIndex = 7 - firstDayIndex + day;\n } else {\n dayIndex = day - firstDayIndex;\n }\n\n return dayIndex + 1;\n}\n\nfunction formatMonth(month, formatLength, info, standAlone) {\n if (formatLength <= 2) {\n return pad(month + 1, formatLength);\n }\n return formatNames(info, \"months\", formatLength, standAlone)[month];\n}\n\nfunction formatQuarter(date, formatLength, info, standAlone) {\n var quarter = Math.floor(date.getMonth() / 3);\n if (formatLength < 3) {\n return quarter + 1;\n }\n\n return formatNames(info, \"quarters\", formatLength, standAlone)[quarter];\n}\n\n\nfunction formatTimeZone(date, info, options) {\n var shortHours = options.shortHours;\n var optionalMinutes = options.optionalMinutes;\n var separator = options.separator;\n var localizedName = options.localizedName;\n var zZeroOffset = options.zZeroOffset;\n var offset = date.getTimezoneOffset() / 60;\n if (offset === 0 && zZeroOffset) {\n return \"Z\";\n }\n var sign = offset <= 0 ? \"+\" : \"-\";\n var hoursMinutes = Math.abs(offset).toString().split(\".\");\n var minutes = hoursMinutes[1] || 0;\n var result = sign + (shortHours ? hoursMinutes[0] : pad(hoursMinutes[0], 2));\n if (minutes || !optionalMinutes) {\n result += (separator ? \":\" : EMPTY) + pad(minutes, 2);\n }\n\n if (localizedName) {\n var localizedFormat = offset === 0 ? info.calendar.gmtZeroFormat : info.calendar.gmtFormat;\n result = formatString(localizedFormat, result);\n }\n\n return result;\n}\n\nfunction formatDayOfWeek(date, formatLength, info, standAlone) {\n var result;\n if (formatLength < 3) {\n result = formatDayOfWeekIndex(date.getDay(), formatLength, info);\n } else {\n result = formatNames(info, \"days\", formatLength, standAlone)[date.getDay()];\n }\n return result;\n}\n\nvar formatters = {};\n\nformatters.d = function(date, formatLength) {\n return pad(date.getDate(), formatLength);\n};\n\nformatters.E = function(date, formatLength, info) {\n return formatNames(info, \"days\", formatLength)[date.getDay()];\n};\n\nformatters.M = function(date, formatLength, info) {\n return formatMonth(date.getMonth(), formatLength, info, false);\n};\n\nformatters.L = function(date, formatLength, info) {\n return formatMonth(date.getMonth(), formatLength, info, true);\n};\n\nformatters.y = function(date, formatLength) {\n var year = date.getFullYear();\n if (formatLength === 2) {\n year = year % 100;\n }\n return pad(year, formatLength);\n};\n\nformatters.h = function(date, formatLength) {\n var hours = date.getHours() % 12 || 12;\n return pad(hours, formatLength);\n};\n\nformatters.H = function(date, formatLength) {\n return pad(date.getHours(), formatLength);\n};\n\nformatters.k = function(date, formatLength) {\n return pad(date.getHours() || 24, formatLength);\n};\n\nformatters.K = function(date, formatLength) {\n return pad(date.getHours() % 12, formatLength);\n};\n\nformatters.m = function(date, formatLength) {\n return pad(date.getMinutes(), formatLength);\n};\n\nformatters.s = function(date, formatLength) {\n return pad(date.getSeconds(), formatLength);\n};\n\nformatters.S = function(date, formatLength) {\n var milliseconds = date.getMilliseconds();\n var result;\n if (milliseconds !== 0) {\n result = String(date.getMilliseconds() / 1000).split(\".\")[1].substr(0, formatLength);\n } else {\n result = pad(EMPTY, formatLength);\n }\n return result;\n};\n\nformatters.a = function(date, formatLength, info) {\n return formatNames(info, \"dayPeriods\", formatLength)[date.getHours() < 12 ? \"am\" : \"pm\"];\n};\n\nformatters.z = function(date, formatLength, info) {\n return formatTimeZone(date, info, {\n shortHours: formatLength < 4,\n optionalMinutes: formatLength < 4,\n separator: true,\n localizedName: true\n });\n};\n\nformatters.Z = function(date, formatLength, info) {\n return formatTimeZone(date, info, {\n separator: formatLength > 3,\n localizedName: formatLength === 4,\n zZeroOffset: formatLength === 5\n });\n};\n\nformatters.x = function(date, formatLength, info) {\n return formatTimeZone(date, info, {\n optionalMinutes: formatLength === 1,\n separator: formatLength === 3 || formatLength === 5\n });\n};\n\nformatters.X = function(date, formatLength, info) {\n return formatTimeZone(date, info, {\n optionalMinutes: formatLength === 1,\n separator: formatLength === 3 || formatLength === 5,\n zZeroOffset: true\n });\n};\n\nformatters.G = function(date, formatLength, info) {\n var era = date.getFullYear() >= 0 ? 1 : 0;\n return formatNames(info, \"eras\", formatLength)[era];\n};\n\nformatters.e = formatDayOfWeek;\n\nformatters.c = function(date, formatLength, info) {\n return formatDayOfWeek(date, formatLength, info, true);\n};\n\nformatters.q = function(date, formatLength, info) {\n return formatQuarter(date, formatLength, info, true);\n};\n\nformatters.Q = formatQuarter;\n\nexport default function formatDate(date, format, locale) {\n if ( locale === void 0 ) locale = DEFAULT_LOCALE;\n\n if (!isDate(date)) {\n if (date === undefined || date === null) {\n return EMPTY;\n }\n return date;\n }\n\n var info = localeInfo(locale);\n var pattern = datePattern(format, info);\n\n return pattern.replace(dateFormatRegExp, function(match) {\n var formatLength = match.length;\n var result;\n\n if (match.includes(\"'\") || match.includes(\"\\\"\")) {\n result = match.slice(1, formatLength - 1);\n } else {\n result = formatters[match[0]](date, formatLength, info);\n }\n\n return result;\n });\n}\n","export function convertTimeZone(date, fromOffset, toOffset) {\n var fromLocalOffset = date.getTimezoneOffset();\n\n var offsetDate = new Date(date.getTime() + (fromOffset - toOffset) * 60000);\n\n var toLocalOffset = offsetDate.getTimezoneOffset();\n\n return new Date(offsetDate.getTime() + (toLocalOffset - fromLocalOffset) * 60000);\n}\n\nexport function adjustDST(date, hours) {\n if (!hours && date.getHours() === 23) {\n date.setHours(date.getHours() + 2);\n }\n}","import { adjustDST, convertTimeZone } from './time-utils';\nimport { localeInfo } from '../cldr';\nimport { DEFAULT_LOCALE, EMPTY } from '../common/constants';\nimport { errors } from '../errors';\nimport formatNames from './format-names';\nimport datePattern from './date-pattern';\nimport round from '../common/round';\nimport isDate from '../common/is-date';\n\nvar timeZoneOffsetRegExp = /([+|\\-]\\d{1,2})(:?)(\\d{2})?/;\nvar dateRegExp = /^\\/Date\\((.*?)\\)\\/$/;\nvar offsetRegExp = /[+-]\\d*/;\nvar numberRegExp = {\n 2: /^\\d{1,2}/,\n 3: /^\\d{1,3}/,\n 4: /^\\d{4}/\n};\nvar numberRegex = /\\d+/;\nvar PLACEHOLDER = \"{0}\";\n\nvar standardDateFormats = [\n \"yyyy/MM/dd HH:mm:ss\",\n \"yyyy/MM/dd HH:mm\",\n \"yyyy/MM/dd\",\n \"E MMM dd yyyy HH:mm:ss\",\n \"yyyy-MM-ddTHH:mm:ss.SSSSSSSXXX\",\n \"yyyy-MM-ddTHH:mm:ss.SSSXXX\",\n \"yyyy-MM-ddTHH:mm:ss.SSXXX\",\n \"yyyy-MM-ddTHH:mm:ssXXX\",\n \"yyyy-MM-ddTHH:mm:ss.SSSSSSS\",\n \"yyyy-MM-ddTHH:mm:ss.SSS\",\n \"yyyy-MM-ddTHH:mmXXX\",\n \"yyyy-MM-ddTHH:mmX\",\n \"yyyy-MM-ddTHH:mm:ss\",\n \"yyyy-MM-ddTHH:mm\",\n \"yyyy-MM-dd HH:mm:ss\",\n \"yyyy-MM-dd HH:mm\",\n \"yyyy-MM-dd\",\n \"HH:mm:ss\",\n \"HH:mm\"\n];\nvar FORMATS_SEQUENCE = [ \"G\", \"g\", \"F\", \"Y\", \"y\", \"M\", \"m\", \"D\", \"d\", \"y\", \"T\", \"t\" ];\nvar TWO_DIGIT_YEAR_MAX = 2029;\n\nfunction outOfRange(value, start, end) {\n return !(value >= start && value <= end);\n}\n\nfunction lookAhead(match, state) {\n var format = state.format;\n var idx = state.idx;\n var i = 0;\n while (format[idx] === match) {\n i++;\n idx++;\n }\n if (i > 0) {\n idx -= 1;\n }\n state.idx = idx;\n return i;\n}\n\nfunction getNumber(size, state) {\n var regex = size ? (numberRegExp[size] || new RegExp('^\\\\d{1,' + size + '}')) : numberRegex,\n match = state.value.substr(state.valueIdx, size).match(regex);\n\n if (match) {\n match = match[0];\n state.valueIdx += match.length;\n return parseInt(match, 10);\n }\n return null;\n}\n\nfunction getIndexByName(names, state, lower) {\n var i = 0,\n length = names.length,\n name, nameLength,\n matchLength = 0,\n matchIdx = 0,\n subValue;\n\n for (; i < length; i++) {\n name = names[i];\n nameLength = name.length;\n subValue = state.value.substr(state.valueIdx, nameLength);\n\n if (lower) {\n subValue = subValue.toLowerCase();\n }\n\n if (subValue === name && nameLength > matchLength) {\n matchLength = nameLength;\n matchIdx = i;\n }\n }\n\n if (matchLength) {\n state.valueIdx += matchLength;\n return matchIdx + 1;\n }\n\n return null;\n}\n\nfunction checkLiteral(state) {\n var result = false;\n if (state.value.charAt(state.valueIdx) === state.format[state.idx]) {\n state.valueIdx++;\n result = true;\n }\n return result;\n}\n\nfunction calendarGmtFormats(calendar) {\n var gmtFormat = calendar.gmtFormat;\n var gmtZeroFormat = calendar.gmtZeroFormat;\n if (!gmtFormat) {\n throw errors.NoGMTInfo.error();\n }\n\n return [ gmtFormat.replace(PLACEHOLDER, EMPTY).toLowerCase(), gmtZeroFormat.replace(PLACEHOLDER, EMPTY).toLowerCase() ];\n}\n\nfunction parseTimeZoneOffset(state, info, options) {\n var shortHours = options.shortHours;\n var noSeparator = options.noSeparator;\n var optionalMinutes = options.optionalMinutes;\n var localizedName = options.localizedName;\n var zLiteral = options.zLiteral;\n state.UTC = true;\n\n if (zLiteral && state.value.charAt(state.valueIdx) === \"Z\") {\n state.valueIdx++;\n return false;\n }\n\n if (localizedName && !getIndexByName(calendarGmtFormats(info.calendar), state, true)) {\n return true;\n }\n\n var matches = timeZoneOffsetRegExp.exec(state.value.substr(state.valueIdx, 6));\n if (!matches) {\n return !localizedName;\n }\n\n var hoursMatch = matches[1];\n var minutesMatch = matches[3];\n var hoursOffset = parseInt(hoursMatch, 10);\n var separator = matches[2];\n var minutesOffset = parseInt(minutesMatch, 10);\n\n if (isNaN(hoursOffset) || (!shortHours && hoursMatch.length !== 3) || (!optionalMinutes && isNaN(minutesOffset)) || (noSeparator && separator)) {\n return true;\n }\n\n if (isNaN(minutesOffset)) {\n minutesOffset = null;\n }\n\n if (outOfRange(hoursOffset, -12, 13) || (minutesOffset && outOfRange(minutesOffset, 0, 59))) {\n return true;\n }\n\n state.valueIdx += matches[0].length;\n state.hoursOffset = hoursOffset;\n state.minutesOffset = minutesOffset;\n}\n\nfunction parseMonth(ch, state, info) {\n var count = lookAhead(ch, state);\n var names = formatNames(info, \"months\", count, ch === \"L\", true);\n\n var month = count < 3 ? getNumber(2, state) : getIndexByName(names, state, true);\n\n if (month === null || outOfRange(month, 1, 12)) {\n return true;\n }\n state.month = month - 1;\n}\n\nfunction parseDayOfWeek(ch, state, info) {\n var count = lookAhead(ch, state);\n var names = formatNames(info, \"days\", count, ch === \"c\", true);\n var dayOfWeek = count < 3 ? getNumber(1, state) : getIndexByName(names, state, true);\n if ((!dayOfWeek && dayOfWeek !== 0) || outOfRange(dayOfWeek, 1, 7)) {\n return true;\n }\n}\n\nvar parsers = {};\n\nparsers.d = function(state) {\n lookAhead(\"d\", state);\n var day = getNumber(2, state);\n\n if (day === null || outOfRange(day, 1, 31)) {\n return true;\n }\n\n if (state.day === null) {\n state.day = day;\n }\n};\n\nparsers.E = function(state, info) {\n var count = lookAhead(\"E\", state);\n //validate if it matches the day?\n var dayOfWeek = getIndexByName(formatNames(info, \"days\", count, false, true), state, true);\n if (dayOfWeek === null) {\n return true;\n }\n};\n\nparsers.M = function(state, info) {\n return parseMonth(\"M\", state, info);\n};\n\nparsers.L = function(state, info) {\n return parseMonth(\"L\", state, info);\n};\n\nparsers.y = function(state) {\n var count = lookAhead(\"y\", state);\n var year = getNumber(count === 1 ? undefined : count, state);\n\n if (year === null) {\n return true;\n }\n\n if (count === 2) {\n var currentYear = new Date().getFullYear();\n year = (currentYear - currentYear % 100) + year;\n if (year > TWO_DIGIT_YEAR_MAX) {\n year -= 100;\n }\n }\n\n state.year = year;\n};\n\nparsers.h = function(state) {\n lookAhead(\"h\", state);\n\n var hours = getNumber(2, state);\n if (hours === 12) {\n hours = 0;\n }\n\n if (hours === null || outOfRange(hours, 0, 11)) {\n return true;\n }\n\n state.hours = hours;\n};\n\nparsers.K = function(state) {\n lookAhead(\"K\", state);\n\n var hours = getNumber(2, state);\n\n if (hours === null || outOfRange(hours, 0, 11)) {\n return true;\n }\n\n state.hours = hours;\n};\n\nparsers.a = function(state, info) {\n var count = lookAhead(\"a\", state);\n var periodFormats = formatNames(info, \"dayPeriods\", count, false, true);\n\n var pmHour = getIndexByName([ periodFormats.pm ], state, true);\n if (!pmHour && !getIndexByName([ periodFormats.am ], state, true)) {\n return true;\n }\n\n state.pmHour = pmHour;\n};\n\nparsers.H = function(state) {\n lookAhead(\"H\", state);\n var hours = getNumber(2, state);\n if (hours === null || outOfRange(hours, 0, 23)) {\n return true;\n }\n state.hours = hours;\n};\n\nparsers.k = function(state) {\n lookAhead(\"k\", state);\n\n var hours = getNumber(2, state);\n\n if (hours === null || outOfRange(hours, 1, 24)) {\n return true;\n }\n\n state.hours = hours === 24 ? 0 : hours;\n};\n\nparsers.m = function(state) {\n lookAhead(\"m\", state);\n var minutes = getNumber(2, state);\n\n if (minutes === null || outOfRange(minutes, 0, 59)) {\n return true;\n }\n\n state.minutes = minutes;\n};\n\nparsers.s = function(state) {\n lookAhead(\"s\", state);\n var seconds = getNumber(2, state);\n if (seconds === null || outOfRange(seconds, 0, 59)) {\n return true;\n }\n state.seconds = seconds;\n};\n\nparsers.S = function(state) {\n var count = lookAhead(\"S\", state);\n var match = state.value.substr(state.valueIdx, count);\n var milliseconds = null;\n\n if (!isNaN(parseInt(match, 10))) {\n milliseconds = parseFloat(\"0.\" + match, 10);\n milliseconds = round(milliseconds, 3);\n milliseconds *= 1000;\n state.valueIdx += count;\n }\n\n if (milliseconds === null || outOfRange(milliseconds, 0, 999)) {\n return true;\n }\n\n state.milliseconds = milliseconds;\n};\n\nparsers.z = function(state, info) {\n var count = lookAhead(\"z\", state);\n\n var shortFormat = count < 4;\n\n var invalid = parseTimeZoneOffset(state, info, {\n shortHours: shortFormat,\n optionalMinutes: shortFormat,\n localizedName: true\n });\n\n if (invalid) {\n return invalid;\n }\n};\n\nparsers.Z = function(state, info) {\n var count = lookAhead(\"Z\", state);\n\n var invalid = parseTimeZoneOffset(state, info, {\n noSeparator: count < 4,\n zLiteral: count === 5,\n localizedName: count === 4\n });\n\n if (invalid) {\n return invalid;\n }\n};\n\nparsers.x = function(state, info) {\n var count = lookAhead(\"x\", state);\n\n var invalid = parseTimeZoneOffset(state, info, {\n noSeparator: count !== 3 && count !== 5,\n optionalMinutes: count === 1\n });\n if (invalid) {\n return invalid;\n }\n};\n\nparsers.X = function(state, info) {\n var count = lookAhead(\"X\", state);\n\n var invalid = parseTimeZoneOffset(state, info, {\n noSeparator: count !== 3 && count !== 5,\n optionalMinutes: count === 1,\n zLiteral: true\n });\n if (invalid) {\n return invalid;\n }\n};\n\nparsers.G = function(state, info) {\n var count = lookAhead(\"G\", state);\n var eras = formatNames(info, \"eras\", count, false, true);\n var era = getIndexByName([ eras[0], eras[1] ], state, true);\n\n if (era === null) {\n return true;\n }\n};\n\nparsers.e = function(state, info) {\n return parseDayOfWeek(\"e\", state, info);\n};\n\nparsers.c = function(state, info) {\n return parseDayOfWeek(\"c\", state, info);\n};\n\nfunction createDate(state) {\n var year = state.year;\n var month = state.month;\n var day = state.day;\n var hours = state.hours;\n var minutes = state.minutes;\n var seconds = state.seconds;\n var milliseconds = state.milliseconds;\n var pmHour = state.pmHour;\n var UTC = state.UTC;\n var hoursOffset = state.hoursOffset;\n var minutesOffset = state.minutesOffset;\n var hasTime = hours !== null || minutes !== null || seconds || null;\n var date = new Date();\n var result;\n\n if (year === null && month === null && day === null && hasTime) {\n year = date.getFullYear();\n month = date.getMonth();\n day = date.getDate();\n } else {\n if (year === null) {\n year = date.getFullYear();\n }\n\n if (day === null) {\n day = 1;\n }\n }\n\n if (pmHour && hours < 12) {\n hours += 12;\n }\n\n if (UTC) {\n if (hoursOffset) {\n hours += -hoursOffset;\n }\n\n if (minutesOffset) {\n minutes += -minutesOffset * (hoursOffset < 0 ? -1 : 1);\n }\n\n result = new Date(Date.UTC(year, month, day, hours, minutes, seconds, milliseconds));\n } else {\n result = new Date(year, month, day, hours, minutes, seconds, milliseconds);\n adjustDST(result, hours);\n }\n\n if (year < 100) {\n result.setFullYear(year);\n }\n\n if (result.getDate() !== day && UTC === undefined) {\n return null;\n }\n\n return result;\n}\n\nfunction parseExact(value, format, info) {\n var pattern = datePattern(format, info).split(EMPTY);\n\n var state = {\n format: pattern,\n idx: 0,\n value: value,\n valueIdx: 0,\n year: null,\n month: null,\n day: null,\n hours: null,\n minutes: null,\n seconds: null,\n milliseconds: null\n };\n var length = pattern.length;\n var literal = false;\n\n for (; state.idx < length; state.idx++) {\n var ch = pattern[state.idx];\n\n if (literal) {\n if (ch === \"'\") {\n literal = false;\n }\n\n checkLiteral(state);\n } else {\n if (parsers[ch]) {\n var invalid = parsers[ch](state, info);\n if (invalid) {\n return null;\n }\n } else if (ch === \"'\") {\n literal = true;\n checkLiteral(state);\n } else if (!checkLiteral(state)) {\n return null;\n }\n }\n }\n\n if (state.valueIdx < value.length) {\n return null;\n }\n\n return createDate(state) || null;\n}\n\nfunction parseMicrosoftDateOffset(offset) {\n var sign = offset.substr(0, 1) === \"-\" ? -1 : 1;\n\n var result = offset.substring(1);\n result = (parseInt(result.substr(0, 2), 10) * 60) + parseInt(result.substring(2), 10);\n\n return sign * result;\n}\n\nfunction parseMicrosoftDateFormat(value) {\n if (value && value.indexOf(\"/D\") === 0) {\n var date = dateRegExp.exec(value);\n if (date) {\n date = date[1];\n var tzoffset = offsetRegExp.exec(date.substring(1));\n\n date = new Date(parseInt(date, 10));\n\n if (tzoffset) {\n tzoffset = parseMicrosoftDateOffset(tzoffset[0]);\n date = convertTimeZone(date, date.getTimezoneOffset(), 0);\n date = convertTimeZone(date, 0, -1 * tzoffset);\n }\n\n return date;\n }\n }\n}\n\nfunction defaultFormats(calendar) {\n var formats = [];\n var patterns = calendar.patterns;\n var length = FORMATS_SEQUENCE.length;\n\n for (var idx = 0; idx < length; idx++) {\n formats.push(patterns[FORMATS_SEQUENCE[idx]]);\n }\n\n return formats.concat(standardDateFormats);\n}\n\nexport default function parseDate(value, formats, locale) {\n if ( locale === void 0 ) locale = DEFAULT_LOCALE;\n\n if (!value) {\n return null;\n }\n\n if (isDate(value)) {\n return value;\n }\n\n var parseValue = String(value).trim();\n var date = parseMicrosoftDateFormat(parseValue);\n if (date) {\n return date;\n }\n\n var info = localeInfo(locale);\n var parseFormats = formats || defaultFormats(info.calendar);\n parseFormats = Array.isArray(parseFormats) ? parseFormats : [ parseFormats ];\n\n var length = parseFormats.length;\n\n for (var idx = 0; idx < length; idx++) {\n date = parseExact(parseValue, parseFormats[idx], info);\n if (date) {\n return date;\n }\n }\n\n return date;\n}\n","import { DEFAULT_LOCALE } from '../common/constants';\nimport isNumber from '../common/is-number';\nimport datePattern from './date-pattern';\nimport dateNameType from './date-name-type';\nimport { dateFormatRegExp, DATE_FIELD_MAP } from './constants';\nimport { localeInfo } from '../cldr';\n\nvar NAME_TYPES = {\n month: {\n type: 'months',\n minLength: 3,\n standAlone: 'L'\n },\n\n quarter: {\n type: 'quarters',\n minLength: 3,\n standAlone: 'q'\n },\n\n weekday: {\n type: 'days',\n minLength: {\n E: 0,\n c: 3,\n e: 3\n },\n standAlone: 'c'\n },\n\n dayperiod: {\n type: 'dayPeriods',\n minLength: 0\n },\n\n era: {\n type: 'eras',\n minLength: 0\n }\n};\n\nvar LITERAL = 'literal';\n\nfunction addLiteral(parts, value) {\n var lastPart = parts[parts.length - 1];\n if (lastPart && lastPart.type === LITERAL) {\n lastPart.pattern += value;\n } else {\n parts.push({\n type: LITERAL,\n pattern: value\n });\n }\n}\n\nfunction isHour12(pattern) {\n return pattern === 'h' || pattern === 'K';\n}\n\nexport default function splitDateFormat(format, locale) {\n if ( locale === void 0 ) locale = DEFAULT_LOCALE;\n\n var info = localeInfo(locale);\n var pattern = datePattern(format, info);\n var parts = [];\n var lastIndex = dateFormatRegExp.lastIndex = 0;\n var match = dateFormatRegExp.exec(pattern);\n\n while (match) {\n var value = match[0];\n\n if (lastIndex < match.index) {\n addLiteral(parts, pattern.substring(lastIndex, match.index));\n }\n\n if (value.startsWith('\"') || value.startsWith(\"'\")) {\n addLiteral(parts, value);\n } else {\n var specifier = value[0];\n var type = DATE_FIELD_MAP[specifier];\n var part = {\n type: type,\n pattern: value\n };\n\n if (type === 'hour') {\n part.hour12 = isHour12(value);\n }\n\n var names = NAME_TYPES[type];\n\n if (names) {\n var minLength = isNumber(names.minLength) ? names.minLength : names.minLength[specifier];\n var patternLength = value.length;\n\n if (patternLength >= minLength) {\n part.names = {\n type: names.type,\n nameType: dateNameType(patternLength),\n standAlone: names.standAlone === specifier\n };\n }\n }\n\n parts.push(part);\n }\n\n lastIndex = dateFormatRegExp.lastIndex;\n match = dateFormatRegExp.exec(pattern);\n }\n\n if (lastIndex < pattern.length) {\n addLiteral(parts, pattern.substring(lastIndex));\n }\n\n return parts;\n}\n","import { formatDate } from './dates';\nimport { formatNumber } from './numbers';\nimport { EMPTY } from './common/constants';\nimport isDate from './common/is-date';\nimport isNumber from './common/is-number';\n\nvar formatRegExp = /\\{(\\d+)(:[^\\}]+)?\\}/g;\n\nexport function toString(value, format, locale) {\n if (format) {\n if (isDate(value)) {\n return formatDate(value, format, locale);\n } else if (isNumber(value)) {\n return formatNumber(value, format, locale);\n }\n }\n\n return value !== undefined && value !== null ? value : EMPTY;\n}\n\nexport function format(format, values, locale) {\n return format.replace(formatRegExp, function(match, index, placeholderFormat) {\n var value = values[parseInt(index, 10)];\n\n return toString(value, placeholderFormat ? placeholderFormat.substring(1) : EMPTY, locale);\n });\n}\n","import * as coreIntl from '@telerik/kendo-intl';\n// tslint:disable:max-line-length\n/**\n * A service which provides internationalization methods and is bound to a specific locale.\n */\nvar IntlService = /** @class */ (function () {\n /**\n * Creates a new instance of the internationalization service.\n *\n * @param locale - The locale that will be used by the internationalization methods.\n */\n function IntlService(locale) {\n this.locale = locale;\n if (locale === '' && process.env.NODE_ENV !== 'production') {\n throw 'Locale should not be empty string';\n }\n }\n /**\n * Formats a string with placeholders such as `Total amount {0:c}`.\n *\n * @param format - The format string.\n * @param values - One or more values to output in the format string placeholders.\n * @return - The formatted string.\n */\n IntlService.prototype.format = function (format) {\n var values = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n values[_i - 1] = arguments[_i];\n }\n /* The following code retains backward compatibility with the old API */\n if (values.length === 1 && Array.isArray(values[0])) {\n return coreIntl.format(format, values[0], this.locale);\n }\n return coreIntl.format(format, values, this.locale);\n };\n /**\n * Converts a `Date` object to a string based on the specified format. If no format is provided, the default short date format is used.\n *\n * @param value - The date which will be formatted.\n * @param format - The format string or options.\n * @return - The formatted date.\n */\n IntlService.prototype.formatDate = function (value, format) {\n return coreIntl.formatDate(value, format, this.locale);\n };\n /**\n * Converts an object to a string based on the specified format.\n *\n * @param value - The value which will be formatted.\n * @param format - The format to use.\n * @return - The formatted object.\n */\n IntlService.prototype.toString = function (value, format) {\n return coreIntl.toString(value, format, this.locale);\n };\n /**\n * Converts a string to a `Number`.\n *\n * @param value - The string which will be parsed.\n * @param format - The format string or options.\n * @return - The parsed number.\n */\n IntlService.prototype.parseNumber = function (value, format) {\n return coreIntl.parseNumber(value, this.locale, format);\n };\n /**\n * Converts a string to a `Date` object based on the specified format.\n *\n * @param value - The string which will be converted.\n * @param format - The format strings or options.\n * @return - The parsed date.\n */\n IntlService.prototype.parseDate = function (value, format) {\n return coreIntl.parseDate(value, format, this.locale);\n };\n /**\n * Converts a `Number` to a string based on the specified format.\n *\n * @param value - The number which will be formatted.\n * @param format - The format string or options.\n * @return - The formatted number.\n */\n IntlService.prototype.formatNumber = function (value, format) {\n return coreIntl.formatNumber(value, format, this.locale);\n };\n /**\n * Returns a localized date field name based on specific `dateFieldName` options.\n *\n * @param options - The detailed configuration for the desired date field name.\n * @returns - The localized date field name from the current locale based on the option.\n */\n IntlService.prototype.dateFieldName = function (options) {\n return coreIntl.dateFieldName(options, this.locale);\n };\n /**\n * Returns the day names from the current locale based on the option.\n *\n * @param options - The detailed configuration for the desired date format.\n * @return - The day names from the current locale based on the option.\n */\n IntlService.prototype.dateFormatNames = function (options) {\n return coreIntl.dateFormatNames(this.locale, options);\n };\n /**\n * Splits the date format into objects which contain information about each part of the pattern.\n *\n * @param format - The format string or options.\n * @returns - The date format parts.\n */\n IntlService.prototype.splitDateFormat = function (format) {\n return coreIntl.splitDateFormat(format, this.locale);\n };\n /**\n * Returns the number symbols from the current locale.\n *\n * @return - The number symbols from the current locale.\n */\n IntlService.prototype.numberSymbols = function () {\n return coreIntl.numberSymbols(this.locale);\n };\n /**\n * Returns the first day index, starting from Sunday.\n *\n * @return - The index of the first day of the week (0 == Sunday).\n */\n IntlService.prototype.firstDay = function () {\n return coreIntl.firstDay(this.locale);\n };\n return IntlService;\n}());\nexport { IntlService };\n// tslint:enable:max-line-length\n//# sourceMappingURL=IntlService.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { IntlService } from './IntlService';\nimport { IntlContext } from './IntlContext';\n// tslint:disable:max-line-length\n/**\n * A React component which provides an internationalization service. Expects a locale string as a property of the component.\n */\nvar IntlProvider = /** @class */ (function (_super) {\n __extends(IntlProvider, _super);\n function IntlProvider() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * Returns an internationalization service. The method is suitable for overriding when you implement custom internationalization behavior.\n */\n IntlProvider.prototype.getIntlService = function () {\n return new IntlService(this.props.locale);\n };\n /**\n * @hidden\n */\n IntlProvider.prototype.getChildContext = function () {\n return {\n kendoIntlService: this.getIntlService()\n };\n };\n /**\n * @hidden\n */\n IntlProvider.prototype.render = function () {\n return (React.createElement(IntlContext.Provider, { value: this.getIntlService() }, React.Children.only(this.props.children)));\n };\n /**\n * @hidden\n */\n IntlProvider.propTypes = {\n locale: PropTypes.string\n };\n /**\n * @hidden\n */\n IntlProvider.childContextTypes = {\n kendoIntlService: PropTypes.object\n };\n return IntlProvider;\n}(React.Component));\nexport default IntlProvider;\n// tslint:enable:max-line-length\n//# sourceMappingURL=IntlProvider.js.map","import { localeInfo } from './info';\nimport { errors } from '../errors';\nimport { DEFAULT_LOCALE } from '../common/constants';\n\nexport default function dateFieldName(options, locale) {\n if ( locale === void 0 ) locale = DEFAULT_LOCALE;\n\n var info = localeInfo(locale);\n var dateFields = info.calendar.dateFields;\n if (!dateFields) {\n throw errors.NoDateFieldNames.error();\n }\n\n var fieldNameInfo = dateFields[options.type] || {};\n\n return fieldNameInfo[options.nameType] || fieldNameInfo['wide'];\n}\n","import { getLocaleInfo } from './info';\n\nexport default function numberSymbols(locale) {\n var info = getLocaleInfo(locale);\n\n return info.numbers.symbols;\n}","import * as React from 'react';\nimport { IntlService } from './IntlService';\nexport var IntlContext = React.createContext(new IntlService('en'));\n//# sourceMappingURL=IntlContext.js.map","/**\n * @hidden\n */\nexport var messages = Object.create({});\n//# sourceMappingURL=messages.js.map","import { messages } from './messages';\n/**\n * A service which provides localization methods.\n */\nvar LocalizationService = /** @class */ (function () {\n function LocalizationService(language) {\n this.language = language;\n if (language === '' && process.env.NODE_ENV !== 'production') {\n throw 'Language should not be an empty string';\n }\n }\n // tslint:disable:max-line-length\n /**\n * Provides a string based on a key for the current language. When no string for the current language is available under this key, the `defaultValue` is returned.\n *\n * @param key - The key which identifies the string for the current language.\n * @param defaultValue - The default value which will be returned when no string\n * for the current language is available under the key.\n * @return - The string for the current language.\n */\n // tslint:enable:max-line-length\n LocalizationService.prototype.toLanguageString = function (key, defaultValue) {\n if (this.language &&\n messages[this.language] &&\n messages[this.language].hasOwnProperty(key)) {\n return messages[this.language][key];\n }\n else {\n return defaultValue;\n }\n };\n return LocalizationService;\n}());\nexport { LocalizationService };\n//# sourceMappingURL=LocalizationService.js.map","import * as React from 'react';\nimport { LocalizationService } from './LocalizationService';\nexport var LocalizationContext = React.createContext(new LocalizationService('en'));\n//# sourceMappingURL=LocalizationContext.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { LocalizationService } from './LocalizationService';\nimport { LocalizationContext } from './LocalizationContext';\n// tslint:disable:max-line-length\n/**\n * A React component which provides a localization service. Expects a language string as a property of the component.\n */\nvar LocalizationProvider = /** @class */ (function (_super) {\n __extends(LocalizationProvider, _super);\n function LocalizationProvider() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * Returns a localization service. The method is suitable for overriding when you implement custom localization behavior.\n */\n LocalizationProvider.prototype.getLocalizationService = function () {\n return new LocalizationService(this.props.language);\n };\n /**\n * @hidden\n */\n LocalizationProvider.prototype.getChildContext = function () {\n return {\n kendoLocalizationService: this.getLocalizationService()\n };\n };\n /**\n * @hidden\n */\n LocalizationProvider.prototype.render = function () {\n return (React.createElement(LocalizationContext.Provider, { value: this.getLocalizationService() }, React.Children.only(this.props.children)));\n };\n /**\n * @hidden\n */\n LocalizationProvider.propTypes = {\n language: PropTypes.string\n };\n /**\n * @hidden\n */\n LocalizationProvider.childContextTypes = {\n kendoLocalizationService: PropTypes.object\n };\n return LocalizationProvider;\n}(React.Component));\nexport { LocalizationProvider };\n// tslint:enable:max-line-length\n//# sourceMappingURL=LocalizationProvider.js.map","import * as PropTypes from 'prop-types';\nimport { IntlService } from './Intl/IntlService';\nimport { LocalizationService } from './Localization/LocalizationService';\n// tslint:disable:max-line-length\n/**\n * Provides an internationalization service. When the passed component is a direct or indirect child of `IntlProvider`, the returned service uses the locale of the provider. Otherwise, uses `en` as a default locale. To handle locale changes, call the method on each `render`.\n *\n * @param componentClass - The React component class that will use the internationalization service.\n */\nexport function provideIntlService(component) {\n if (!component && process.env.NODE_ENV !== 'production') {\n throw \"Passed component - \" + component + \" is invalid.\";\n }\n var intlServiceFromContext = component.context && component.context.kendoIntlService;\n return intlServiceFromContext || new IntlService('en');\n}\n/**\n * Provides a localization service. When the passed component is a direct or indirect child of `LocalizationProvider`, the returned service uses the language of the provider. To handle locale changes, call the method on each `render`.\n *\n * @param componentClass - The React component class that will use the internationalization service.\n */\nexport function provideLocalizationService(component) {\n if (!component && process.env.NODE_ENV !== 'production') {\n throw \"Passed component - \" + component + \" is invalid.\";\n }\n var localizationServiceFromContext = component.context && component.context.kendoLocalizationService;\n return localizationServiceFromContext || new LocalizationService();\n}\n/**\n * A method which registers a component class or a functional stateless component for internationalization. When a component of that type is a direct or indirect child of `IntlProvider`, the locale of the provider is used. Otherwise, uses `en` as a default locale.\n *\n * @param component - The React component class that will use the internationalization methods.\n */\nexport function registerForIntl(component) {\n var ctx = {\n kendoIntlService: PropTypes.object\n };\n if (component.contextTypes) {\n Object.assign(component.contextTypes, ctx);\n }\n else {\n component.contextTypes = ctx;\n }\n}\n/**\n * A method which registers a component class or a stateless functional component for localization. When a component of that type is a direct or indirect child of `LocalizationProvider`, the language of the provider is used.\n *\n * @param component - The React component class that will use the internationalization methods.\n */\nexport function registerForLocalization(component) {\n var ctx = {\n kendoLocalizationService: PropTypes.object\n };\n if (component.contextTypes) {\n Object.assign(component.contextTypes, ctx);\n }\n else {\n component.contextTypes = ctx;\n }\n}\n// tslint:enable:max-line-length\n//# sourceMappingURL=intlUtils.js.map","import * as React from 'react';\nimport { IntlContext } from '../Intl/IntlContext';\n/**\n * @hidden\n */\nexport var useInternationalization = function () { return React.useContext(IntlContext); };\n//# sourceMappingURL=useInternationalization.js.map","import * as React from 'react';\nimport { LocalizationContext } from '../Localization/LocalizationContext';\n/**\n * @hidden\n */\nexport var useLocalization = function () { return React.useContext(LocalizationContext); };\n//# sourceMappingURL=useLocalization.js.map","export default {\n \"bottom\": \"bottom\",\n \"center\": \"center\",\n \"middle\": \"middle\",\n \"left\": \"left\",\n \"right\": \"right\",\n \"top\": \"top\"\n};\n","export default function ownerDocument(element) {\n return element.ownerDocument || element.document || element;\n}\n","import ownerDocument from './owner-document';\n\nvar getWindow = function (element) { return ownerDocument(element).defaultView; };\n\nexport default getWindow;\n","import ownerDocument from './owner-document';\n\nvar getDocument = function (element) { return ownerDocument(element).documentElement; };\n\nexport default getDocument;\n","var cachedWidth = 0;\n\nexport default function scrollbarWidth() {\n if (!cachedWidth && typeof document !== 'undefined') {\n var div = document.createElement(\"div\");\n\n div.style.cssText = \"overflow:scroll;overflow-x:hidden;zoom:1;clear:both;display:block\";\n div.innerHTML = \" \";\n document.body.appendChild(div);\n\n cachedWidth = div.offsetWidth - div.scrollWidth;\n\n document.body.removeChild(div);\n }\n\n return cachedWidth;\n}\n","import wnd from './window';\nimport getDocument from './document';\nimport scrollbarWidth from './scrollbar-width';\n\nexport default function windowViewport(element) {\n var win = wnd(element);\n var document = getDocument(element);\n var result = {\n height: win.innerHeight,\n width: win.innerWidth\n };\n\n if (document.scrollHeight - document.clientHeight > 0) {\n result.width -= scrollbarWidth();\n }\n\n return result;\n}\n","import windowViewport from './window-viewport';\n\nvar boundingOffset = function (element) {\n if (!element.getBoundingClientRect) {\n var viewport = windowViewport(element);\n return {\n bottom: viewport.height,\n left: 0,\n right: viewport.width,\n top: 0\n };\n }\n\n var ref = element.getBoundingClientRect();\n var bottom = ref.bottom;\n var left = ref.left;\n var right = ref.right;\n var top = ref.top;\n\n return {\n bottom: bottom,\n left: left,\n right: right,\n top: top\n };\n};\n\nexport default boundingOffset;\n","import documentElement from './document';\n\nvar offsetParent = function (element) {\n var offsetParent = element.offsetParent;\n\n while (offsetParent && offsetParent.style.position === \"static\") {\n offsetParent = offsetParent.offsetParent;\n }\n\n return offsetParent || documentElement(element);\n};\n\nexport default offsetParent;\n","var rectOfHiddenElement = function (element) {\n var ref = element.style;\n var display = ref.display;\n var left = ref.left;\n var position = ref.position;\n\n element.style.display = '';\n element.style.left = '-10000px';\n element.style.position = 'absolute';\n\n var rect = element.getBoundingClientRect();\n\n element.style.display = display;\n element.style.left = left;\n element.style.position = position;\n\n return rect;\n};\n\nvar offset = function (element) {\n var rect = element.getBoundingClientRect();\n var left = rect.left;\n var top = rect.top;\n\n if (!rect.height && !rect.width) {\n rect = rectOfHiddenElement(element);\n }\n\n return {\n top: top,\n left: left,\n height: rect.height,\n width: rect.width\n };\n};\n\nexport default offset;\n","export default function (element, until) {\n var result = [];\n var next = element.parentNode;\n\n while (next) {\n result.push(next);\n\n if (next === until) { break; }\n\n next = next.parentNode;\n }\n\n return result;\n};\n","import docElement from './document';\nimport wnd from './window';\n\nexport default function scrollPosition(element) {\n var documentElement = docElement(element);\n var win = wnd(element);\n\n return {\n x: win.pageXOffset || documentElement.scrollLeft || 0,\n y: win.pageYOffset || documentElement.scrollTop || 0\n };\n}\n","import scrollPosition from './scroll-position';\n\nexport default function (element) {\n if (element === (element.ownerDocument || {}).body) {\n return scrollPosition(element);\n }\n\n return {\n x: element.scrollLeft,\n y: element.scrollTop\n };\n};\n","import offsetParent from './offset-parent';\nimport offsetRect from './offset';\nimport wnd from './window';\n\nvar position = function (element, parent) {\n var win = wnd(element);\n var elementStyles = win.getComputedStyle(element);\n var offset = offsetRect(element);\n var parentElement = parent || offsetParent(element);\n\n var ownerDocument = element.ownerDocument;\n var useRelative = parentElement !== ownerDocument.body && parentElement !== ownerDocument.documentElement;\n\n var parentOffset = { top: 0, left: 0 };\n\n if (elementStyles.position !== \"fixed\" && useRelative) {\n var parentStyles = win.getComputedStyle(parentElement);\n\n parentOffset = offsetRect(parentElement);\n parentOffset.top += parseInt(parentStyles.borderTopWidth, 10);\n parentOffset.left += parseInt(parentStyles.borderLeftWidth, 10);\n }\n\n return {\n top: offset.top - parentOffset.top,\n left: offset.left - parentOffset.left,\n height: offset.height,\n width: offset.width\n };\n};\n\nexport default position;\n","export default {\n \"fit\": \"fit\",\n \"flip\": \"flip\"\n};\n","import alignPoint from './align-point';\nimport collision from './collision';\n\nvar fit = function(position, size, viewPortSize) {\n var output = 0;\n\n if (position + size > viewPortSize) {\n output = viewPortSize - (position + size);\n }\n\n if (position < 0) {\n output = -position;\n }\n\n return output;\n};\n\nvar flip = function(ref) {\n var offset = ref.offset;\n var size = ref.size;\n var anchorSize = ref.anchorSize;\n var viewPortSize = ref.viewPortSize;\n var anchorAlignPoint = ref.anchorAlignPoint;\n var elementAlignPoint = ref.elementAlignPoint;\n var margin = ref.margin;\n\n var output = 0;\n\n var isPositionCentered = elementAlignPoint === alignPoint.center || elementAlignPoint === alignPoint.middle;\n var isOriginCentered = anchorAlignPoint === alignPoint.center || anchorAlignPoint === alignPoint.middle;\n var marginToAdd = 2 * margin; //2x to keep margin after flip\n\n if (elementAlignPoint !== anchorAlignPoint && !isPositionCentered && !isOriginCentered) {\n var isBeforeAnchor = anchorAlignPoint === alignPoint.top || anchorAlignPoint === alignPoint.left;\n if (offset < 0 && isBeforeAnchor) {\n output = size + anchorSize + marginToAdd;\n if (offset + output + size > viewPortSize) {\n output = 0; //skip flip\n }\n } else if (offset >= 0 && !isBeforeAnchor) {\n if (offset + size > viewPortSize) {\n output += -(anchorSize + size + marginToAdd);\n }\n\n if (offset + output < 0) {\n output = 0; //skip flip\n }\n }\n }\n\n return output;\n};\n\nvar restrictToView = function (options) {\n var anchorRect = options.anchorRect;\n var anchorAlign = options.anchorAlign;\n var elementRect = options.elementRect;\n var elementAlign = options.elementAlign;\n var collisions = options.collisions;\n var viewPort = options.viewPort;\n var margin = options.margin; if ( margin === void 0 ) margin = {};\n var elementTop = elementRect.top;\n var elementLeft = elementRect.left;\n var elementHeight = elementRect.height;\n var elementWidth = elementRect.width;\n var viewPortHeight = viewPort.height;\n var viewPortWidth = viewPort.width;\n var horizontalMargin = margin.horizontal || 0;\n var verticalMargin = margin.vertical || 0;\n\n var left = 0;\n var top = 0;\n\n var isHorizontalFlip = collisions.horizontal === collision.flip;\n var isVerticalFlip = collisions.vertical === collision.flip;\n\n if (collisions.vertical === collision.fit) {\n top += fit(elementTop, elementHeight, viewPortHeight);\n }\n\n if (collisions.horizontal === collision.fit) {\n left += fit(elementLeft, elementWidth, viewPortWidth);\n }\n\n if (isVerticalFlip) {\n top += flip({\n margin: verticalMargin,\n offset: elementTop,\n size: elementHeight,\n anchorSize: anchorRect.height,\n viewPortSize: viewPortHeight,\n anchorAlignPoint: anchorAlign.vertical,\n elementAlignPoint: elementAlign.vertical\n });\n }\n\n if (isHorizontalFlip) {\n left += flip({\n margin: horizontalMargin,\n offset: elementLeft,\n size: elementWidth,\n anchorSize: anchorRect.width,\n viewPortSize: viewPortWidth,\n anchorAlignPoint: anchorAlign.horizontal,\n elementAlignPoint: elementAlign.horizontal\n });\n }\n var flippedHorizontal = isHorizontalFlip && left !== 0;\n var flippedVertical = isVerticalFlip && top !== 0;\n\n return {\n flipped: flippedHorizontal || flippedVertical,\n flip: {\n horizontal: flippedHorizontal,\n vertical: flippedVertical\n },\n offset: {\n left: left,\n top: top\n }\n };\n};\n\nexport default restrictToView;\n","export default function (element) {\n var result = [];\n\n var sibling = element.parentNode.firstElementChild;\n\n while (sibling) {\n if (sibling !== element) {\n result.push(sibling);\n }\n\n sibling = sibling.nextElementSibling;\n }\n return result;\n};\n","/* eslint-disable no-loop-func */\n\nimport parents from './parents';\nimport siblings from './siblings';\n\nexport default function (anchor, container) {\n var parentElements = parents(anchor);\n var containerElement = container;\n var siblingElements;\n var result;\n\n while (containerElement) {\n siblingElements = siblings(containerElement);\n\n result = parentElements.reduce(\n function (list, p) { return list.concat(siblingElements.filter(function (s) { return s === p; })); },\n []\n )[0];\n\n if (result) { break; }\n\n containerElement = containerElement.parentElement;\n }\n\n return result;\n};\n\n","import { parents, siblingContainer } from '@progress/kendo-popup-common';\nimport { canUseDOM } from '@progress/kendo-react-common';\n/**\n * @hidden\n */\nexport var eitherRect = function (rect, offset) {\n if (!rect) {\n return { height: 0, left: offset.left, top: offset.top, width: 0 };\n }\n return rect;\n};\n/**\n * @hidden\n */\nexport var replaceOffset = function (rect, offset) {\n if (!offset) {\n return rect;\n }\n var result = {\n height: rect.height,\n left: offset.left,\n top: offset.top,\n width: rect.width\n };\n return result;\n};\n/**\n * @hidden\n */\nexport var removeStackingOffset = function (rect, stackingOffset) {\n if (!stackingOffset) {\n return rect;\n }\n var result = {\n height: rect.height,\n left: rect.left - stackingOffset.left,\n top: rect.top - stackingOffset.top,\n width: rect.width\n };\n return result;\n};\n/**\n * @hidden\n */\nexport var isDifferentOffset = function (oldOffset, newOffset) {\n var oldLeft = oldOffset.left, oldTop = oldOffset.top;\n var newLeft = newOffset.left, newTop = newOffset.top;\n return Math.abs(oldLeft - newLeft) >= 1 || Math.abs(oldTop - newTop) >= 1;\n};\n/**\n * @hidden\n */\nexport var hasBoundingRect = function (elem) { return !!elem.getBoundingClientRect; };\n/**\n * @hidden\n */\nexport var OVERFLOW_REGEXP = /auto|scroll/;\n/**\n * @hidden\n */\nvar overflowStyle = function (element) {\n var styles = window.getComputedStyle(element);\n return \"\" + styles.overflow + styles.overflowX + styles.overflowY;\n};\n/**\n * @hidden\n */\nexport var scrollableParents = function (element) {\n var parentElements = [];\n if (!canUseDOM) {\n return parentElements;\n }\n var parent = element.parentElement;\n while (parent) {\n if (OVERFLOW_REGEXP.test(overflowStyle(parent))) {\n parentElements.push(parent);\n }\n parent = parent.parentElement;\n }\n parentElements.push(window);\n return parentElements;\n};\n/**\n * @hidden\n */\nexport var FRAME_DURATION = 1000 / 60; // 1000ms divided by 60fps\n/**\n * @hidden\n */\nexport var hasRelativeStackingContext = function () {\n if (!canUseDOM) {\n return false;\n }\n var top = 10;\n var parent = document.createElement('div');\n parent.style.transform = 'matrix(10, 0, 0, 10, 0, 0)';\n parent.innerHTML = \"
    child
    \";\n document.body.appendChild(parent);\n var isDifferent = parent.children[0].getBoundingClientRect().top !== top;\n document.body.removeChild(parent);\n return isDifferent;\n};\n/**\n * @hidden\n */\nexport var HAS_RELATIVE_STACKING_CONTEXT = hasRelativeStackingContext();\n/**\n * @hidden\n */\nexport var zIndex = function (anchor, container) {\n if (!anchor || !canUseDOM) {\n return null;\n }\n var sibling = siblingContainer(anchor, container);\n if (!sibling) {\n return null;\n }\n var result = [anchor].concat(parents(anchor, sibling)).reduce(function (index, p) {\n var zIndexStyle = p.style.zIndex || window.getComputedStyle(p).zIndex;\n var current = parseInt(zIndexStyle, 10);\n return current > index ? current : index;\n }, 0);\n return result ? (result + 1) : null;\n};\n/**\n * @hidden\n */\nexport var CollisionType = {\n fit: 'fit',\n flip: 'flip'\n};\n/**\n * @hidden\n */\nexport var AlignPoint = {\n left: 'left',\n center: 'center',\n right: 'right',\n bottom: 'bottom',\n top: 'top'\n};\n/**\n * @hidden\n */\nexport var throttle = function (func, wait, options) {\n if (options === void 0) { options = {}; }\n var timeout, context, args, result;\n var previous = 0;\n options = options || {};\n var later = function () {\n previous = options.leading === false ? 0 : new Date().getTime();\n timeout = null;\n result = func.apply(context, args);\n if (!timeout) {\n context = args = null;\n }\n };\n var throttled = function () {\n var now = new Date().getTime();\n if (!previous && options.leading === false) {\n previous = now;\n }\n var remaining = wait - (now - previous);\n context = this;\n args = arguments;\n if (remaining <= 0 || remaining > wait) {\n if (timeout) {\n clearTimeout(timeout);\n timeout = null;\n }\n previous = now;\n result = func.apply(context, args);\n if (!timeout) {\n context = args = null;\n }\n }\n else if (!timeout && options.trailing !== false) {\n timeout = setTimeout(later, remaining);\n }\n return result;\n };\n return throttled;\n};\n//# sourceMappingURL=util.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport * as PropTypes from 'prop-types';\nimport * as ReactDOMServer from 'react-dom/server';\nimport { Slide } from '@progress/kendo-react-animation';\nimport { classNames, canUseDOM } from '@progress/kendo-react-common';\nimport { CollisionType, AlignPoint, throttle, FRAME_DURATION } from './util';\nimport { AlignService } from './services/alignService';\nimport { DOMService } from './services/domService';\nimport { PositionService } from './services/positionService';\nvar DEFAULT_OFFSET = {\n left: -1000,\n top: 0\n};\nvar ANIMATION_CONTAINER = 'k-animation-container';\nvar ANIMATION_CONTAINER_SHOWN = 'k-animation-container-shown';\nvar K_POPUP = 'k-popup';\nvar getHtmlElement = function (source) {\n return ReactDOM.findDOMNode(source);\n};\nvar Popup = /** @class */ (function (_super) {\n __extends(Popup, _super);\n function Popup(props) {\n var _this = _super.call(this, props) || this;\n _this._exitingAnimation = false;\n _this._prevShow = false;\n _this.onOpened = function () {\n var element = getHtmlElement(_this);\n if (_this.props.show) {\n element.classList.add(ANIMATION_CONTAINER_SHOWN);\n }\n _this.attachRepositionHandlers(element);\n if (_this.props.open) {\n _this.props.open.call(undefined, { target: _this });\n }\n if (_this.props.onOpen) {\n _this.props.onOpen.call(undefined, { target: _this });\n }\n };\n _this.onClosing = function () {\n if (!_this.props.show) {\n var element = getHtmlElement(_this);\n element.classList.remove(ANIMATION_CONTAINER_SHOWN);\n }\n _this.detachRepositionHandlers();\n };\n _this.onClosed = function () {\n if (_this._exitingAnimation) {\n _this._exitingAnimation = false;\n _this.forceUpdate();\n }\n if (_this.props.close) {\n _this.props.close.call(undefined, { target: _this });\n }\n if (_this.props.onClose) {\n _this.props.onClose.call(undefined, { target: _this });\n }\n };\n _this.position = function (settings, element, anchorElement) {\n var anchorAlign = settings.anchorAlign, popupAlign = settings.popupAlign, collision = settings.collision, offset = settings.offset;\n var alignedOffset = _this._alignService.alignElement({\n anchor: anchorElement,\n element: element,\n elementAlign: popupAlign,\n anchorAlign: anchorAlign,\n offset: offset\n });\n var result = _this._positionService.positionElement({\n anchor: anchorElement,\n anchorAlign: anchorAlign,\n collisions: collision,\n element: element,\n currentLocation: alignedOffset,\n elementAlign: popupAlign\n });\n return result;\n };\n _this._flipped = false;\n _this._offset = _this.props.offset;\n _this._prevShow = props.show;\n _this._domService = new DOMService();\n _this._alignService = new AlignService(_this._domService);\n _this._positionService = new PositionService(_this._domService);\n _this.onOpened = _this.onOpened.bind(_this);\n _this.onClosing = _this.onClosing.bind(_this);\n _this.reposition = throttle(_this.reposition.bind(_this), FRAME_DURATION);\n return _this;\n }\n /**\n * @hidden\n */\n Popup.prototype.componentDidUpdate = function () {\n this._prevShow = this.props.show;\n };\n /**\n * @hidden\n */\n Popup.prototype.componentWillUnmount = function () {\n this.detachRepositionHandlers();\n };\n /**\n * @hidden\n */\n Popup.prototype.render = function () {\n var _a = this.props, children = _a.children, className = _a.className, popupClass = _a.popupClass, show = _a.show, id = _a.id, _b = _a.appendTo, appendTo = _b === void 0 ? canUseDOM ? document.body : undefined : _b;\n if (show) {\n var newPosition = this.calculatePosition(this.props, appendTo);\n this._offset = newPosition.offset;\n this._flipped = !!newPosition.flipped;\n }\n var direction = this._flipped && show ? 'up' : 'down';\n var _c = this.transitionDuration, transitionEnterDuration = _c.transitionEnterDuration, transitionExitDuration = _c.transitionExitDuration;\n var style = Object.assign({}, { position: 'absolute' }, this.props.style || {}, __assign({}, this._offset));\n this._exitingAnimation = this._exitingAnimation || (this._prevShow && !show);\n if ((show || this._exitingAnimation) && appendTo) {\n var popup = (React.createElement(Slide, { componentChildClassName: classNames(popupClass, K_POPUP), className: classNames(className), id: id, onEntered: this.onOpened, onExiting: this.onClosing, onExited: this.onClosed, direction: direction, style: style, transitionEnterDuration: transitionEnterDuration, transitionExitDuration: transitionExitDuration, appear: true }, show ? children : null));\n return ReactDOM.createPortal(popup, appendTo);\n }\n return null;\n };\n Object.defineProperty(Popup.prototype, \"transitionDuration\", {\n get: function () {\n var animate = this.props.animate;\n var transitionEnterDuration = 0;\n var transitionExitDuration = 0;\n if (animate) {\n if (animate === true) {\n // Inherit the default duration of the Animation component.\n transitionEnterDuration = transitionExitDuration = undefined;\n }\n else {\n transitionEnterDuration = animate.openDuration;\n transitionExitDuration = animate.closeDuration;\n }\n }\n return { transitionEnterDuration: transitionEnterDuration, transitionExitDuration: transitionExitDuration };\n },\n enumerable: true,\n configurable: true\n });\n Popup.prototype.calculatePosition = function (props, appendTo) {\n if (!appendTo || !canUseDOM) {\n return {\n flipped: false,\n offset: props.offset\n };\n }\n var root = document.createElement('div');\n appendTo.appendChild(root);\n var style = Object.assign({}, props.style || {}, __assign({ visibility: 'hidden' }, DEFAULT_OFFSET));\n var innerClasses = { className: classNames(props.popupClass, K_POPUP, 'k-child-animation-container') };\n var popup = (React.createElement(\"div\", { className: classNames(ANIMATION_CONTAINER, ANIMATION_CONTAINER_SHOWN, props.className), style: style }, React.Children.map(props.children, function (child, index) {\n return React.createElement(\"div\", __assign({ key: index }, innerClasses), child);\n })));\n root.innerHTML = ReactDOMServer.renderToStaticMarkup(popup);\n var newPosition = this.position(props, root.firstChild, props.anchor);\n root.parentNode.removeChild(root);\n return newPosition;\n };\n Popup.prototype.attachRepositionHandlers = function (element) {\n var _this = this;\n this.detachRepositionHandlers();\n this._scrollableParents = this._domService.scrollableParents(this.props.anchor || element);\n this._scrollableParents.map(function (p) { return p.addEventListener('scroll', _this.reposition); });\n window.addEventListener('resize', this.reposition);\n };\n Popup.prototype.detachRepositionHandlers = function () {\n var _this = this;\n if (this._scrollableParents) {\n this._scrollableParents.map(function (p) { return p.removeEventListener('scroll', _this.reposition); });\n this._scrollableParents = undefined;\n }\n window.removeEventListener('resize', this.reposition);\n };\n Popup.prototype.reposition = function () {\n this.forceUpdate();\n };\n /**\n * @hidden\n */\n Popup.propTypes = {\n anchor: function (props) {\n var anchor = props.anchor;\n if (anchor && typeof anchor.nodeType !== 'number') {\n return new Error('Invalid prop `anchor` supplied to `Kendo React Popup`. Validation failed.');\n }\n },\n appendTo: function (props) {\n var element = props.appendTo;\n if (element && typeof element.nodeType !== 'number') {\n return new Error('Invalid prop `appendTo` supplied to `Kendo React Popup`. Validation failed.');\n }\n },\n className: PropTypes.string,\n id: PropTypes.string,\n popupClass: PropTypes.string,\n collision: PropTypes.shape({\n horizontal: PropTypes.oneOf([\n CollisionType.fit,\n CollisionType.flip\n ]),\n vertical: PropTypes.oneOf([\n CollisionType.fit,\n CollisionType.flip\n ])\n }),\n anchorAlign: PropTypes.shape({\n horizontal: PropTypes.oneOf([\n AlignPoint.left,\n AlignPoint.center,\n AlignPoint.right\n ]),\n vertical: PropTypes.oneOf([\n AlignPoint.top,\n AlignPoint.center,\n AlignPoint.bottom\n ])\n }),\n popupAlign: PropTypes.shape({\n horizontal: PropTypes.oneOf([\n AlignPoint.left,\n AlignPoint.center,\n AlignPoint.right\n ]),\n vertical: PropTypes.oneOf([\n AlignPoint.top,\n AlignPoint.center,\n AlignPoint.bottom\n ])\n }),\n offset: PropTypes.shape({\n left: PropTypes.number,\n top: PropTypes.number\n }),\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node\n ]),\n show: PropTypes.bool,\n animate: PropTypes.oneOfType([\n PropTypes.bool,\n PropTypes.shape({\n openDuration: PropTypes.number,\n closeDuration: PropTypes.number\n })\n ])\n };\n /**\n * @hidden\n */\n Popup.defaultProps = {\n collision: {\n horizontal: CollisionType.fit,\n vertical: CollisionType.flip\n },\n anchorAlign: {\n horizontal: AlignPoint.left,\n vertical: AlignPoint.bottom\n },\n popupAlign: {\n horizontal: AlignPoint.left,\n vertical: AlignPoint.top\n },\n offset: DEFAULT_OFFSET,\n animate: true,\n show: false\n };\n return Popup;\n}(React.Component));\nexport default Popup;\n//# sourceMappingURL=Popup.js.map","import { eitherRect, removeStackingOffset } from '../util';\n/**\n * @hidden\n */\nvar AlignService = /** @class */ (function () {\n function AlignService(_dom) {\n this._dom = _dom;\n }\n AlignService.prototype.alignElement = function (settings) {\n var anchor = settings.anchor, element = settings.element, anchorAlign = settings.anchorAlign, elementAlign = settings.elementAlign, offset = settings.offset;\n var fixedMode = !this._dom.hasOffsetParent(element);\n var anchorRect = fixedMode ?\n this.absoluteRect(anchor, element, offset) :\n this.relativeRect(anchor, element, offset);\n return this._dom.align({\n anchorAlign: anchorAlign,\n anchorRect: anchorRect,\n elementAlign: elementAlign,\n elementRect: this._dom.offset(element)\n });\n };\n AlignService.prototype.absoluteRect = function (anchor, element, offset) {\n var dom = this._dom;\n var rect = eitherRect(dom.offset(anchor), offset);\n var stackingOffset = dom.stackingElementOffset(element);\n var removedOffset = removeStackingOffset(rect, stackingOffset);\n var stackingScroll = dom.stackingElementScroll(element);\n var withScroll = dom.addScroll(removedOffset, stackingScroll);\n var scrollPosition = this.elementScrollPosition(anchor, element);\n var result = dom.removeScroll(withScroll, scrollPosition);\n result.left += window.scrollX || window.pageXOffset;\n result.top += window.scrollY || window.pageYOffset;\n return result;\n };\n AlignService.prototype.elementScrollPosition = function (anchor, element) {\n return anchor ? { x: 0, y: 0 } : this._dom.scrollPosition(element);\n };\n AlignService.prototype.relativeRect = function (anchor, element, offset) {\n return eitherRect(this._dom.position(anchor, element), offset);\n };\n return AlignService;\n}());\nexport { AlignService };\n//# sourceMappingURL=alignService.js.map","import { align, applyLocationOffset, boundingOffset, getWindowViewPort, isBodyOffset, offset, positionWithScroll, restrictToView, addScroll, removeScroll, scrollPosition, siblingContainer } from '@progress/kendo-popup-common';\nimport { HAS_RELATIVE_STACKING_CONTEXT, scrollableParents, zIndex } from '../util';\nimport { canUseDOM } from '@progress/kendo-react-common';\n/**\n * @hidden\n */\nvar DOMService = /** @class */ (function () {\n function DOMService() {\n }\n DOMService.prototype.addOffset = function (current, addition) {\n return {\n left: current.left + addition.left,\n top: current.top + addition.top\n };\n };\n DOMService.prototype.align = function (settings) {\n return align(settings);\n };\n DOMService.prototype.boundingOffset = function (el) {\n return boundingOffset(el);\n };\n DOMService.prototype.getWindow = function () {\n return canUseDOM ? window : null;\n };\n DOMService.prototype.isBodyOffset = function (el) {\n return isBodyOffset(el);\n };\n DOMService.prototype.hasOffsetParent = function (el) {\n if (!el) {\n return false;\n }\n var offsetParentEl = el.offsetParent;\n return offsetParentEl &&\n !(offsetParentEl.nodeName === 'BODY' &&\n window.getComputedStyle(offsetParentEl).position === 'static');\n };\n DOMService.prototype.offset = function (el) {\n if (!el) {\n return null;\n }\n return offset(el);\n };\n DOMService.prototype.staticOffset = function (element) {\n if (!element) {\n return null;\n }\n var _a = element.style, left = _a.left, top = _a.top;\n element.style.left = '0px';\n element.style.top = '0px';\n var currentOffset = offset(element);\n element.style.left = left;\n element.style.top = top;\n return currentOffset;\n };\n DOMService.prototype.position = function (element, popup) {\n if (!element || !popup) {\n return null;\n }\n var parentSibling = siblingContainer(element, popup);\n return positionWithScroll(element, parentSibling);\n };\n DOMService.prototype.relativeOffset = function (el, currentLocation) {\n return applyLocationOffset(this.offset(el), currentLocation, this.isBodyOffset(el));\n };\n DOMService.prototype.addScroll = function (rect, scroll) {\n return addScroll(rect, scroll);\n };\n DOMService.prototype.removeScroll = function (rect, scroll) {\n return removeScroll(rect, scroll);\n };\n DOMService.prototype.restrictToView = function (settings) {\n return restrictToView(settings);\n };\n DOMService.prototype.scrollPosition = function (el) {\n return scrollPosition(el);\n };\n DOMService.prototype.scrollableParents = function (el) {\n return scrollableParents(el);\n };\n DOMService.prototype.stackingElementOffset = function (el) {\n var relativeContextElement = this.getRelativeContextElement(el);\n if (!relativeContextElement) {\n return null;\n }\n return offset(relativeContextElement);\n };\n DOMService.prototype.stackingElementScroll = function (el) {\n var relativeContextElement = this.getRelativeContextElement(el);\n if (!relativeContextElement) {\n return { x: 0, y: 0 };\n }\n return {\n x: relativeContextElement.scrollLeft,\n y: relativeContextElement.scrollTop\n };\n };\n DOMService.prototype.stackingElementViewPort = function (el) {\n var relativeContextElement = this.getRelativeContextElement(el);\n if (!relativeContextElement) {\n return null;\n }\n return {\n height: relativeContextElement.scrollHeight,\n width: relativeContextElement.scrollWidth\n };\n };\n DOMService.prototype.getRelativeContextElement = function (el) {\n if (!el || !HAS_RELATIVE_STACKING_CONTEXT) {\n return null;\n }\n var parent = el.parentElement;\n while (parent) {\n if (window.getComputedStyle(parent).transform !== 'none') {\n return parent;\n }\n parent = parent.parentElement;\n }\n return null;\n };\n DOMService.prototype.useRelativePosition = function (el) {\n return !!this.getRelativeContextElement(el);\n };\n DOMService.prototype.windowViewPort = function (el) {\n return getWindowViewPort(el);\n };\n DOMService.prototype.zIndex = function (anchor, container) {\n return zIndex(anchor, container);\n };\n DOMService.prototype.zoomLevel = function () {\n if (!canUseDOM) {\n return 1;\n }\n return parseFloat((document.documentElement.clientWidth / window.innerWidth).toFixed(2));\n };\n DOMService.prototype.isZoomed = function () {\n return this.zoomLevel() > 1;\n };\n return DOMService;\n}());\nexport { DOMService };\n//# sourceMappingURL=domService.js.map","import point from './align-point';\n\nvar align = function (options) {\n var anchorRect = options.anchorRect;\n var anchorAlign = options.anchorAlign;\n var elementRect = options.elementRect;\n var elementAlign = options.elementAlign;\n var margin = options.margin; if ( margin === void 0 ) margin = {};\n var anchorHorizontal = anchorAlign.horizontal;\n var anchorVertical = anchorAlign.vertical;\n var elementHorizontal = elementAlign.horizontal;\n var elementVertical = elementAlign.vertical;\n\n var horizontalMargin = margin.horizontal || 0;\n var verticalMargin = margin.vertical || 0;\n\n var top = anchorRect.top;\n var left = anchorRect.left;\n\n if (anchorVertical === point.bottom) {\n top += anchorRect.height;\n }\n\n if (anchorVertical === point.center || anchorVertical === point.middle) {\n top += Math.round(anchorRect.height / 2);\n }\n\n if (elementVertical === point.bottom) {\n top -= elementRect.height;\n verticalMargin *= -1;\n }\n\n if (elementVertical === point.center || elementVertical === point.middle) {\n top -= Math.round(elementRect.height / 2);\n verticalMargin *= -1;\n }\n\n if (anchorHorizontal === point.right) {\n left += anchorRect.width;\n }\n\n if (anchorHorizontal === point.center || anchorHorizontal === point.middle) {\n left += Math.round(anchorRect.width / 2);\n }\n\n if (elementHorizontal === point.right) {\n left -= elementRect.width;\n horizontalMargin *= -1;\n }\n\n if (elementHorizontal === point.center || elementHorizontal === point.middle) {\n left -= Math.round(elementRect.width / 2);\n horizontalMargin *= -1;\n }\n\n return {\n top: top + verticalMargin,\n left: left + horizontalMargin\n };\n};\n\nexport default align;\n","import offsetParent from './offset-parent';\n\nvar isBodyOffset = function (element) { return (offsetParent(element) === element.ownerDocument.body); };\n\nexport default isBodyOffset;\n","import offsetParentScrollPosition from './offset-parent-scroll-position';\nimport offsetParent from './offset-parent';\nimport position from './position';\n\nexport default function (element, parent, scale) {\n if ( scale === void 0 ) scale = 1;\n\n var offsetParentElement = parent ? offsetParent(parent) : null;\n var ref = position(element, offsetParentElement);\n var top = ref.top;\n var left = ref.left;\n var height = ref.height;\n var width = ref.width;\n var ref$1 = offsetParentScrollPosition(offsetParentElement, element);\n var x = ref$1.x;\n var y = ref$1.y;\n var ownerDocument = element.ownerDocument;\n var positionScale = offsetParentElement === ownerDocument.body || offsetParentElement === ownerDocument.documentElement ? 1 : scale;\n\n return {\n top: top + y * positionScale,\n left: left + x * positionScale,\n height: height,\n width: width\n };\n};\n","import elementScrollPosition from './element-scroll-position';\nimport parentScrollPosition from './parent-scroll-position';\n\nexport default function (offsetParentElement, element) { return ( // eslint-disable-line no-arrow-condition\n offsetParentElement ? elementScrollPosition(offsetParentElement) : parentScrollPosition(element)\n); };\n","import offsetParent from './offset-parent';\nimport elementScrollPosition from './element-scroll-position';\n\nexport default function parentScrollPosition(element) {\n var parent = offsetParent(element);\n\n return parent ? elementScrollPosition(parent) : { x: 0, y: 0 };\n}\n","export default function applyLocationOffset(rect, location, isOffsetBody) {\n var top = rect.top;\n var left = rect.left;\n\n if (isOffsetBody) {\n left = 0;\n top = 0;\n }\n\n return {\n top: top + location.top,\n left: left + location.left,\n height: rect.height,\n width: rect.width\n };\n}\n","export default function addScroll(rect, scroll) {\n return {\n top: rect.top + scroll.y,\n left: rect.left + scroll.x,\n height: rect.height,\n width: rect.width\n };\n}\n","export default function removeScroll(rect, scroll) {\n return {\n top: rect.top - scroll.y,\n left: rect.left - scroll.x,\n height: rect.height,\n width: rect.width\n };\n}\n","import { eitherRect, replaceOffset } from '../util';\n/**\n * @hidden\n */\nvar PositionService = /** @class */ (function () {\n function PositionService(_dom) {\n this._dom = _dom;\n }\n PositionService.prototype.positionElement = function (settings) {\n var anchor = settings.anchor, currentLocation = settings.currentLocation, element = settings.element, anchorAlign = settings.anchorAlign, elementAlign = settings.elementAlign, collisions = settings.collisions;\n var dom = this._dom;\n var viewPort = settings.viewPort || dom.stackingElementViewPort(element) || dom.windowViewPort(element);\n var anchorRect = eitherRect(dom.offset(anchor), currentLocation);\n var initialElementRect = replaceOffset(dom.staticOffset(element), currentLocation);\n var elementRect = this.elementRect(element, initialElementRect);\n var result = dom.restrictToView({\n anchorAlign: anchorAlign,\n anchorRect: anchorRect,\n collisions: collisions,\n elementAlign: elementAlign,\n elementRect: elementRect,\n viewPort: viewPort\n });\n return {\n flipped: result.flipped,\n offset: dom.addOffset(initialElementRect, result.offset)\n };\n };\n PositionService.prototype.elementRect = function (element, rect) {\n return this._dom.removeScroll(rect, this._dom.scrollPosition(element));\n };\n return PositionService;\n}());\nexport { PositionService };\n//# sourceMappingURL=positionService.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\n t[p[i]] = s[p[i]];\n return t;\n};\nimport * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport * as PropTypes from 'prop-types';\nimport { dispatchEvent } from '@progress/kendo-react-common';\nimport { getLeftPosition, getTopPosition, getDomRect, isTooltipElement } from './utils';\nvar Tooltip = /** @class */ (function (_super) {\n __extends(Tooltip, _super);\n function Tooltip() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /**\n * @hidden\n */\n _this.state = {\n targetElement: null,\n open: false\n };\n _this.title = '';\n _this.top = 0;\n _this.left = 0;\n /**\n * The method is used on the MouseOut event to hide the Tooltip.\n */\n _this.handleMouseOut = function (event) {\n var element = document.elementFromPoint(event.clientX, event.clientY);\n if (isTooltipElement(element)) {\n return;\n }\n if (_this.props.open) {\n return;\n }\n dispatchEvent(_this.props.onClose, event, _this, undefined);\n _this.setState({ targetElement: null, open: false });\n };\n /**\n * Used on the `MouseOver` event to show the Tooltip.\n */\n _this.handleMouseOver = function (event) {\n var target = event.target;\n if (!_this.isVisible(target) || isTooltipElement(target) || target === _this.state.targetElement) {\n return;\n }\n _this.showToolTip(event);\n dispatchEvent(_this.props.onOpen, event, _this, undefined);\n };\n _this.handleBodyMousemove = function (event) {\n _this.top = event.clientY;\n _this.left = event.clientX;\n };\n _this.position = function (element) {\n var domRect = getDomRect(_this.state.targetElement);\n var left = getLeftPosition(_this.left, element.offsetWidth, domRect, _this.props.anchorElement, _this.props.position);\n var top = getTopPosition(_this.top, domRect, element.offsetHeight, _this.props.anchorElement, _this.props.position);\n return { left: left, top: top };\n };\n _this.getTitle = function (element) {\n while (element) {\n if (element.title || element.titleExpando) {\n return element.title || element.titleExpando;\n }\n element = _this.props.parentTitle && element.parentElement || null;\n }\n return '';\n };\n _this.calloutClassName = function () {\n switch (_this.props.position) {\n case 'bottom':\n return 'k-callout k-callout-n';\n case 'left':\n return 'k-callout k-callout-e';\n case 'right':\n return 'k-callout k-callout-w';\n case 'top':\n return 'k-callout k-callout-s';\n default:\n return _this.top < (window.innerHeight / 2) ? 'k-callout k-callout-n' : 'k-callout k-callout-s';\n }\n };\n return _this;\n }\n /**\n * @hidden\n */\n Tooltip.prototype.componentDidMount = function () {\n if (document) {\n document.body.addEventListener('mousemove', this.handleBodyMousemove);\n }\n };\n /**\n * @hidden\n */\n Tooltip.prototype.componentWillUnmount = function () {\n clearTimeout(this.openTimeout);\n this.openTimeout = undefined;\n if (document) {\n document.body.removeEventListener('mousemove', this.handleBodyMousemove);\n }\n };\n /**\n * @hidden\n */\n Tooltip.prototype.componentDidUpdate = function () {\n if (this.props.open && this.props.targetElement) {\n this.showToolTip({ target: this.props.targetElement });\n }\n };\n /**\n * @hidden\n */\n Tooltip.prototype.render = function () {\n var _this = this;\n if (this.props.children) {\n var _a = this.props, children = _a.children, options = __rest(_a, [\"children\"]);\n var tooltip_1 = null;\n return (React.createElement(\"div\", { onMouseOver: function (event) { if (tooltip_1) {\n tooltip_1.handleMouseOver(event);\n } }, onMouseOut: function (event) { if (tooltip_1) {\n tooltip_1.handleMouseOut(event);\n } } },\n React.createElement(Tooltip, __assign({ ref: function (el) { return tooltip_1 = el; } }, options)),\n children));\n }\n if (this.props.open === false) {\n return null;\n }\n return this.state.targetElement &&\n this.title &&\n document &&\n ReactDOM.createPortal((React.createElement(\"div\", { ref: function (el) {\n if (!el) {\n return;\n }\n var position = _this.position(el);\n el.style.left = position.left + 'px';\n el.style.top = position.top + 'px';\n }, className: 'k-animation-container k-animation-container-fixed k-animation-container-shown'\n + (this.props.className ? ' ' + this.props.className : ''), tabIndex: 0 },\n React.createElement(\"div\", { className: \"k-tooltip\", style: {\n position: 'relative'\n } },\n React.createElement(\"div\", { className: \"k-tooltip-content\" }, this.props.content &&\n React.createElement(this.props.content, { title: this.title, target: this.state.targetElement })\n || this.title),\n this.props.showCallout && React.createElement(\"div\", { ref: function (el) {\n if (!el) {\n return;\n }\n el.className = _this.calloutClassName();\n if (_this.props.position === 'auto') {\n _this.left < (window.screen.availWidth / 2)\n ? el.style.left = _this.props.setCalloutOnPositionAuto || '25%'\n : el.style.left = _this.props.setCalloutOnPositionAuto || '75%';\n }\n } })))), document.body);\n };\n Tooltip.prototype.showToolTip = function (event) {\n var _this = this;\n var target = this.props.targetElement || event.target;\n clearTimeout(this.openTimeout);\n this.title = this.getTitle(target);\n if (this.title) {\n target.titleExpando = target.titleExpando || target.title;\n target.title = '';\n }\n if (!this.props.openDelay) {\n this.setState({ targetElement: target, open: true });\n }\n else {\n this.openTimeout = setTimeout(function () { _this.setState({ targetElement: target, open: true }); }, this.props.openDelay);\n }\n };\n Tooltip.prototype.isVisible = function (element) {\n return !this.props.filter || this.props.filter(element);\n };\n /**\n * @hidden\n */\n Tooltip.propTypes = {\n anchorElement: PropTypes.oneOf(['pointer', 'target']),\n content: PropTypes.func,\n filter: PropTypes.func,\n openDelay: PropTypes.number,\n position: PropTypes.oneOf(['right', 'left', 'top', 'bottom', 'auto'])\n };\n Tooltip.defaultProps = {\n anchorElement: 'pointer',\n openDelay: 400,\n position: 'auto',\n showCallout: true,\n parentTitle: false\n };\n return Tooltip;\n}(React.PureComponent));\nexport { Tooltip };\n//# sourceMappingURL=Tooltip.js.map","var arrowWidth = 10;\nvar arrowHeight = 10;\n/**\n * @hidden\n */\nexport var getLeftPosition = function (left, elementWidth, targetElement, anchorElement, position) {\n switch (position) {\n case 'bottom':\n return anchorElement === 'pointer'\n ? left - (elementWidth / 2)\n : targetElement.left - (elementWidth / 2) + targetElement.width / 2;\n case 'left':\n return anchorElement === 'pointer'\n ? left - elementWidth - arrowWidth\n : targetElement.left - elementWidth - arrowWidth;\n case 'right':\n return anchorElement === 'pointer'\n ? left + arrowWidth\n : targetElement.right + arrowWidth;\n case 'top':\n return anchorElement === 'pointer'\n ? left - (elementWidth / 2)\n : targetElement.left - (elementWidth / 2) + targetElement.width / 2;\n default:\n if (anchorElement === 'pointer') {\n return left < (window.screen.availWidth / 2)\n ? left - arrowWidth\n : left - elementWidth + arrowWidth;\n }\n else {\n return left < (window.screen.availWidth / 2)\n ? targetElement.left\n : targetElement.right - elementWidth;\n }\n }\n};\n/**\n * @hidden\n */\nexport var getTopPosition = function (top, targetElement, elementHeight, anchorElement, position) {\n switch (position) {\n case 'bottom':\n return anchorElement === 'pointer'\n ? top + arrowHeight\n : targetElement.bottom + arrowHeight;\n case 'left':\n return anchorElement === 'pointer'\n ? top - (elementHeight / 2)\n : targetElement.top - (elementHeight / 2) + (targetElement.height / 2);\n case 'right':\n return anchorElement === 'pointer'\n ? top - (elementHeight / 2)\n : targetElement.top - (elementHeight / 2) + (targetElement.height / 2);\n case 'top':\n return anchorElement === 'pointer'\n ? top - elementHeight - arrowHeight\n : targetElement.top - elementHeight - arrowHeight;\n default:\n if (anchorElement === 'pointer') {\n return top < (window.innerHeight / 2)\n ? top + arrowWidth\n : top - elementHeight - arrowWidth;\n }\n else {\n return top < (window.innerHeight / 2)\n ? targetElement.bottom + arrowHeight\n : targetElement.top - elementHeight - arrowHeight;\n }\n }\n};\n/**\n * @hidden\n */\nexport var getDomRect = function (currentTarget) {\n if (currentTarget !== null) {\n return currentTarget.getBoundingClientRect();\n }\n return document.body.getBoundingClientRect();\n};\n/**\n * @hidden\n */\nexport var toolTipSelectors = [\n 'k-tooltip-content',\n 'k-animation-container',\n 'k-tooltip',\n 'k-tooltip-title',\n 'k-tooltip k-tooltip-closable',\n 'k-icon k-i-close'\n];\n/**\n * @hidden\n */\nexport var isTooltipElement = function (element) {\n if (element === null) {\n return false;\n }\n var node = element;\n while (node) {\n if (node !== null && node.className === 'k-tooltip') {\n return true;\n }\n node.parentNode !== null ? node = node.parentNode : node = false;\n }\n return toolTipSelectors.filter(function (t) { return t === element.className; }).length > 0;\n};\n//# sourceMappingURL=utils.js.map","module.exports = require('./lib/axios');","'use strict';\n\nvar utils = require('./../utils');\nvar settle = require('./../core/settle');\nvar buildURL = require('./../helpers/buildURL');\nvar buildFullPath = require('../core/buildFullPath');\nvar parseHeaders = require('./../helpers/parseHeaders');\nvar isURLSameOrigin = require('./../helpers/isURLSameOrigin');\nvar createError = require('../core/createError');\n\nmodule.exports = function xhrAdapter(config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n var requestData = config.data;\n var requestHeaders = config.headers;\n\n if (utils.isFormData(requestData)) {\n delete requestHeaders['Content-Type']; // Let the browser set it\n }\n\n var request = new XMLHttpRequest();\n\n // HTTP basic authentication\n if (config.auth) {\n var username = config.auth.username || '';\n var password = config.auth.password || '';\n requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password);\n }\n\n var fullPath = buildFullPath(config.baseURL, config.url);\n request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true);\n\n // Set the request timeout in MS\n request.timeout = config.timeout;\n\n // Listen for ready state\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n\n // Prepare the response\n var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;\n var responseData = !config.responseType || config.responseType === 'text' ? request.responseText : request.response;\n var response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config: config,\n request: request\n };\n\n settle(resolve, reject, response);\n\n // Clean up request\n request = null;\n };\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(createError('Request aborted', config, 'ECONNABORTED', request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(createError('Network Error', config, null, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n var timeoutErrorMessage = 'timeout of ' + config.timeout + 'ms exceeded';\n if (config.timeoutErrorMessage) {\n timeoutErrorMessage = config.timeoutErrorMessage;\n }\n reject(createError(timeoutErrorMessage, config, 'ECONNABORTED',\n request));\n\n // Clean up request\n request = null;\n };\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n if (utils.isStandardBrowserEnv()) {\n var cookies = require('./../helpers/cookies');\n\n // Add xsrf header\n var xsrfValue = (config.withCredentials || isURLSameOrigin(fullPath)) && config.xsrfCookieName ?\n cookies.read(config.xsrfCookieName) :\n undefined;\n\n if (xsrfValue) {\n requestHeaders[config.xsrfHeaderName] = xsrfValue;\n }\n }\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders, function setRequestHeader(val, key) {\n if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') {\n // Remove Content-Type if data is undefined\n delete requestHeaders[key];\n } else {\n // Otherwise add header to the request\n request.setRequestHeader(key, val);\n }\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(config.withCredentials)) {\n request.withCredentials = !!config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (config.responseType) {\n try {\n request.responseType = config.responseType;\n } catch (e) {\n // Expected DOMException thrown by browsers not compatible XMLHttpRequest Level 2.\n // But, this can be suppressed for 'json' type as it can be parsed by default 'transformResponse' function.\n if (config.responseType !== 'json') {\n throw e;\n }\n }\n }\n\n // Handle progress if needed\n if (typeof config.onDownloadProgress === 'function') {\n request.addEventListener('progress', config.onDownloadProgress);\n }\n\n // Not all browsers support upload events\n if (typeof config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', config.onUploadProgress);\n }\n\n if (config.cancelToken) {\n // Handle cancellation\n config.cancelToken.promise.then(function onCanceled(cancel) {\n if (!request) {\n return;\n }\n\n request.abort();\n reject(cancel);\n // Clean up request\n request = null;\n });\n }\n\n if (requestData === undefined) {\n requestData = null;\n }\n\n // Send the request\n request.send(requestData);\n });\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar bind = require('./helpers/bind');\nvar Axios = require('./core/Axios');\nvar mergeConfig = require('./core/mergeConfig');\nvar defaults = require('./defaults');\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n * @return {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n var context = new Axios(defaultConfig);\n var instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context);\n\n // Copy context to instance\n utils.extend(instance, context);\n\n return instance;\n}\n\n// Create the default instance to be exported\nvar axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Factory for creating new instances\naxios.create = function create(instanceConfig) {\n return createInstance(mergeConfig(axios.defaults, instanceConfig));\n};\n\n// Expose Cancel & CancelToken\naxios.Cancel = require('./cancel/Cancel');\naxios.CancelToken = require('./cancel/CancelToken');\naxios.isCancel = require('./cancel/isCancel');\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\naxios.spread = require('./helpers/spread');\n\nmodule.exports = axios;\n\n// Allow use of default import syntax in TypeScript\nmodule.exports.default = axios;\n","'use strict';\n\n/**\n * A `Cancel` is an object that is thrown when an operation is canceled.\n *\n * @class\n * @param {string=} message The message.\n */\nfunction Cancel(message) {\n this.message = message;\n}\n\nCancel.prototype.toString = function toString() {\n return 'Cancel' + (this.message ? ': ' + this.message : '');\n};\n\nCancel.prototype.__CANCEL__ = true;\n\nmodule.exports = Cancel;\n","'use strict';\n\nvar Cancel = require('./Cancel');\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @class\n * @param {Function} executor The executor function.\n */\nfunction CancelToken(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n var resolvePromise;\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n var token = this;\n executor(function cancel(message) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new Cancel(message);\n resolvePromise(token.reason);\n });\n}\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nCancelToken.prototype.throwIfRequested = function throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n};\n\n/**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\nCancelToken.source = function source() {\n var cancel;\n var token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token: token,\n cancel: cancel\n };\n};\n\nmodule.exports = CancelToken;\n","'use strict';\n\nmodule.exports = function isCancel(value) {\n return !!(value && value.__CANCEL__);\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar buildURL = require('../helpers/buildURL');\nvar InterceptorManager = require('./InterceptorManager');\nvar dispatchRequest = require('./dispatchRequest');\nvar mergeConfig = require('./mergeConfig');\n\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n */\nfunction Axios(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n}\n\n/**\n * Dispatch a request\n *\n * @param {Object} config The config specific for this request (merged with this.defaults)\n */\nAxios.prototype.request = function request(config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof config === 'string') {\n config = arguments[1] || {};\n config.url = arguments[0];\n } else {\n config = config || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n // Set config.method\n if (config.method) {\n config.method = config.method.toLowerCase();\n } else if (this.defaults.method) {\n config.method = this.defaults.method.toLowerCase();\n } else {\n config.method = 'get';\n }\n\n // Hook up interceptors middleware\n var chain = [dispatchRequest, undefined];\n var promise = Promise.resolve(config);\n\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n chain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n chain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n while (chain.length) {\n promise = promise.then(chain.shift(), chain.shift());\n }\n\n return promise;\n};\n\nAxios.prototype.getUri = function getUri(config) {\n config = mergeConfig(this.defaults, config);\n return buildURL(config.url, config.params, config.paramsSerializer).replace(/^\\?/, '');\n};\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(utils.merge(config || {}, {\n method: method,\n url: url\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, data, config) {\n return this.request(utils.merge(config || {}, {\n method: method,\n url: url,\n data: data\n }));\n };\n});\n\nmodule.exports = Axios;\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction InterceptorManager() {\n this.handlers = [];\n}\n\n/**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\nInterceptorManager.prototype.use = function use(fulfilled, rejected) {\n this.handlers.push({\n fulfilled: fulfilled,\n rejected: rejected\n });\n return this.handlers.length - 1;\n};\n\n/**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n */\nInterceptorManager.prototype.eject = function eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n};\n\n/**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n */\nInterceptorManager.prototype.forEach = function forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n};\n\nmodule.exports = InterceptorManager;\n","'use strict';\n\nvar isAbsoluteURL = require('../helpers/isAbsoluteURL');\nvar combineURLs = require('../helpers/combineURLs');\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n * @returns {string} The combined full path\n */\nmodule.exports = function buildFullPath(baseURL, requestedURL) {\n if (baseURL && !isAbsoluteURL(requestedURL)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n};\n","'use strict';\n\nvar enhanceError = require('./enhanceError');\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The created error.\n */\nmodule.exports = function createError(message, config, code, request, response) {\n var error = new Error(message);\n return enhanceError(error, config, code, request, response);\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar transformData = require('./transformData');\nvar isCancel = require('../cancel/isCancel');\nvar defaults = require('../defaults');\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n * @returns {Promise} The Promise to be fulfilled\n */\nmodule.exports = function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n // Ensure headers exist\n config.headers = config.headers || {};\n\n // Transform request data\n config.data = transformData(\n config.data,\n config.headers,\n config.transformRequest\n );\n\n // Flatten headers\n config.headers = utils.merge(\n config.headers.common || {},\n config.headers[config.method] || {},\n config.headers\n );\n\n utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n function cleanHeaderConfig(method) {\n delete config.headers[method];\n }\n );\n\n var adapter = config.adapter || defaults.adapter;\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData(\n response.data,\n response.headers,\n config.transformResponse\n );\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData(\n reason.response.data,\n reason.response.headers,\n config.transformResponse\n );\n }\n }\n\n return Promise.reject(reason);\n });\n};\n","'use strict';\n\n/**\n * Update an Error with the specified config, error code, and response.\n *\n * @param {Error} error The error to update.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The error.\n */\nmodule.exports = function enhanceError(error, config, code, request, response) {\n error.config = config;\n if (code) {\n error.code = code;\n }\n\n error.request = request;\n error.response = response;\n error.isAxiosError = true;\n\n error.toJSON = function() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: this.config,\n code: this.code\n };\n };\n return error;\n};\n","'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n * @returns {Object} New object resulting from merging config2 to config1\n */\nmodule.exports = function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n var config = {};\n\n var valueFromConfig2Keys = ['url', 'method', 'params', 'data'];\n var mergeDeepPropertiesKeys = ['headers', 'auth', 'proxy'];\n var defaultToConfig2Keys = [\n 'baseURL', 'url', 'transformRequest', 'transformResponse', 'paramsSerializer',\n 'timeout', 'withCredentials', 'adapter', 'responseType', 'xsrfCookieName',\n 'xsrfHeaderName', 'onUploadProgress', 'onDownloadProgress',\n 'maxContentLength', 'validateStatus', 'maxRedirects', 'httpAgent',\n 'httpsAgent', 'cancelToken', 'socketPath'\n ];\n\n utils.forEach(valueFromConfig2Keys, function valueFromConfig2(prop) {\n if (typeof config2[prop] !== 'undefined') {\n config[prop] = config2[prop];\n }\n });\n\n utils.forEach(mergeDeepPropertiesKeys, function mergeDeepProperties(prop) {\n if (utils.isObject(config2[prop])) {\n config[prop] = utils.deepMerge(config1[prop], config2[prop]);\n } else if (typeof config2[prop] !== 'undefined') {\n config[prop] = config2[prop];\n } else if (utils.isObject(config1[prop])) {\n config[prop] = utils.deepMerge(config1[prop]);\n } else if (typeof config1[prop] !== 'undefined') {\n config[prop] = config1[prop];\n }\n });\n\n utils.forEach(defaultToConfig2Keys, function defaultToConfig2(prop) {\n if (typeof config2[prop] !== 'undefined') {\n config[prop] = config2[prop];\n } else if (typeof config1[prop] !== 'undefined') {\n config[prop] = config1[prop];\n }\n });\n\n var axiosKeys = valueFromConfig2Keys\n .concat(mergeDeepPropertiesKeys)\n .concat(defaultToConfig2Keys);\n\n var otherKeys = Object\n .keys(config2)\n .filter(function filterAxiosKeys(key) {\n return axiosKeys.indexOf(key) === -1;\n });\n\n utils.forEach(otherKeys, function otherKeysDefaultToConfig2(prop) {\n if (typeof config2[prop] !== 'undefined') {\n config[prop] = config2[prop];\n } else if (typeof config1[prop] !== 'undefined') {\n config[prop] = config1[prop];\n }\n });\n\n return config;\n};\n","'use strict';\n\nvar createError = require('./createError');\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n */\nmodule.exports = function settle(resolve, reject, response) {\n var validateStatus = response.config.validateStatus;\n if (!validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(createError(\n 'Request failed with status code ' + response.status,\n response.config,\n null,\n response.request,\n response\n ));\n }\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Object|String} data The data to be transformed\n * @param {Array} headers The headers for the request or response\n * @param {Array|Function} fns A single function or Array of functions\n * @returns {*} The resulting transformed data\n */\nmodule.exports = function transformData(data, headers, fns) {\n /*eslint no-param-reassign:0*/\n utils.forEach(fns, function transform(fn) {\n data = fn(data, headers);\n });\n\n return data;\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar normalizeHeaderName = require('./helpers/normalizeHeaderName');\n\nvar DEFAULT_CONTENT_TYPE = {\n 'Content-Type': 'application/x-www-form-urlencoded'\n};\n\nfunction setContentTypeIfUnset(headers, value) {\n if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) {\n headers['Content-Type'] = value;\n }\n}\n\nfunction getDefaultAdapter() {\n var adapter;\n if (typeof XMLHttpRequest !== 'undefined') {\n // For browsers use XHR adapter\n adapter = require('./adapters/xhr');\n } else if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') {\n // For node use HTTP adapter\n adapter = require('./adapters/http');\n }\n return adapter;\n}\n\nvar defaults = {\n adapter: getDefaultAdapter(),\n\n transformRequest: [function transformRequest(data, headers) {\n normalizeHeaderName(headers, 'Accept');\n normalizeHeaderName(headers, 'Content-Type');\n if (utils.isFormData(data) ||\n utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8');\n return data.toString();\n }\n if (utils.isObject(data)) {\n setContentTypeIfUnset(headers, 'application/json;charset=utf-8');\n return JSON.stringify(data);\n }\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n /*eslint no-param-reassign:0*/\n if (typeof data === 'string') {\n try {\n data = JSON.parse(data);\n } catch (e) { /* Ignore */ }\n }\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n }\n};\n\ndefaults.headers = {\n common: {\n 'Accept': 'application/json, text/plain, */*'\n }\n};\n\nutils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {\n defaults.headers[method] = {};\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE);\n});\n\nmodule.exports = defaults;\n","'use strict';\n\nmodule.exports = function bind(fn, thisArg) {\n return function wrap() {\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n return fn.apply(thisArg, args);\n };\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%40/gi, '@').\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @returns {string} The formatted url\n */\nmodule.exports = function buildURL(url, params, paramsSerializer) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n\n var serializedParams;\n if (paramsSerializer) {\n serializedParams = paramsSerializer(params);\n } else if (utils.isURLSearchParams(params)) {\n serializedParams = params.toString();\n } else {\n var parts = [];\n\n utils.forEach(params, function serialize(val, key) {\n if (val === null || typeof val === 'undefined') {\n return;\n }\n\n if (utils.isArray(val)) {\n key = key + '[]';\n } else {\n val = [val];\n }\n\n utils.forEach(val, function parseValue(v) {\n if (utils.isDate(v)) {\n v = v.toISOString();\n } else if (utils.isObject(v)) {\n v = JSON.stringify(v);\n }\n parts.push(encode(key) + '=' + encode(v));\n });\n });\n\n serializedParams = parts.join('&');\n }\n\n if (serializedParams) {\n var hashmarkIndex = url.indexOf('#');\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n};\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n * @returns {string} The combined URL\n */\nmodule.exports = function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/+$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs support document.cookie\n (function standardBrowserEnv() {\n return {\n write: function write(name, value, expires, path, domain, secure) {\n var cookie = [];\n cookie.push(name + '=' + encodeURIComponent(value));\n\n if (utils.isNumber(expires)) {\n cookie.push('expires=' + new Date(expires).toGMTString());\n }\n\n if (utils.isString(path)) {\n cookie.push('path=' + path);\n }\n\n if (utils.isString(domain)) {\n cookie.push('domain=' + domain);\n }\n\n if (secure === true) {\n cookie.push('secure');\n }\n\n document.cookie = cookie.join('; ');\n },\n\n read: function read(name) {\n var match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove: function remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n };\n })() :\n\n // Non standard browser env (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return {\n write: function write() {},\n read: function read() { return null; },\n remove: function remove() {}\n };\n })()\n);\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nmodule.exports = function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d\\+\\-\\.]*:)?\\/\\//i.test(url);\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar isValidXss = require('./isValidXss');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs have full support of the APIs needed to test\n // whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n var msie = /(msie|trident)/i.test(navigator.userAgent);\n var urlParsingNode = document.createElement('a');\n var originURL;\n\n /**\n * Parse a URL to discover it's components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n var href = url;\n\n if (isValidXss(url)) {\n throw new Error('URL contains XSS injection attempt');\n }\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n var parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })()\n);\n","'use strict';\n\nmodule.exports = function isValidXss(requestURL) {\n var xssRegex = /(\\b)(on\\w+)=|javascript|(<\\s*)(\\/*)script/gi;\n return xssRegex.test(requestURL);\n};\n\n","'use strict';\n\nvar utils = require('../utils');\n\nmodule.exports = function normalizeHeaderName(headers, normalizedName) {\n utils.forEach(headers, function processHeader(value, name) {\n if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) {\n headers[normalizedName] = value;\n delete headers[name];\n }\n });\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\n// Headers whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nvar ignoreDuplicateOf = [\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n];\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} headers Headers needing to be parsed\n * @returns {Object} Headers parsed into an object\n */\nmodule.exports = function parseHeaders(headers) {\n var parsed = {};\n var key;\n var val;\n var i;\n\n if (!headers) { return parsed; }\n\n utils.forEach(headers.split('\\n'), function parser(line) {\n i = line.indexOf(':');\n key = utils.trim(line.substr(0, i)).toLowerCase();\n val = utils.trim(line.substr(i + 1));\n\n if (key) {\n if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) {\n return;\n }\n if (key === 'set-cookie') {\n parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]);\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n }\n });\n\n return parsed;\n};\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n * @returns {Function}\n */\nmodule.exports = function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n};\n","'use strict';\n\nvar bind = require('./helpers/bind');\n\n/*global toString:true*/\n\n// utils is a library of generic helper functions non-specific to axios\n\nvar toString = Object.prototype.toString;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Array, otherwise false\n */\nfunction isArray(val) {\n return toString.call(val) === '[object Array]';\n}\n\n/**\n * Determine if a value is undefined\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nfunction isUndefined(val) {\n return typeof val === 'undefined';\n}\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && typeof val.constructor.isBuffer === 'function' && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nfunction isArrayBuffer(val) {\n return toString.call(val) === '[object ArrayBuffer]';\n}\n\n/**\n * Determine if a value is a FormData\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nfunction isFormData(val) {\n return (typeof FormData !== 'undefined') && (val instanceof FormData);\n}\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n var result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (val.buffer instanceof ArrayBuffer);\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a String, otherwise false\n */\nfunction isString(val) {\n return typeof val === 'string';\n}\n\n/**\n * Determine if a value is a Number\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Number, otherwise false\n */\nfunction isNumber(val) {\n return typeof val === 'number';\n}\n\n/**\n * Determine if a value is an Object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Object, otherwise false\n */\nfunction isObject(val) {\n return val !== null && typeof val === 'object';\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Date, otherwise false\n */\nfunction isDate(val) {\n return toString.call(val) === '[object Date]';\n}\n\n/**\n * Determine if a value is a File\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nfunction isFile(val) {\n return toString.call(val) === '[object File]';\n}\n\n/**\n * Determine if a value is a Blob\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nfunction isBlob(val) {\n return toString.call(val) === '[object Blob]';\n}\n\n/**\n * Determine if a value is a Function\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nfunction isFunction(val) {\n return toString.call(val) === '[object Function]';\n}\n\n/**\n * Determine if a value is a Stream\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nfunction isStream(val) {\n return isObject(val) && isFunction(val.pipe);\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nfunction isURLSearchParams(val) {\n return typeof URLSearchParams !== 'undefined' && val instanceof URLSearchParams;\n}\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n * @returns {String} The String freed of excess whitespace\n */\nfunction trim(str) {\n return str.replace(/^\\s*/, '').replace(/\\s*$/, '');\n}\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n */\nfunction isStandardBrowserEnv() {\n if (typeof navigator !== 'undefined' && (navigator.product === 'ReactNative' ||\n navigator.product === 'NativeScript' ||\n navigator.product === 'NS')) {\n return false;\n }\n return (\n typeof window !== 'undefined' &&\n typeof document !== 'undefined'\n );\n}\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n */\nfunction forEach(obj, fn) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (var i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n fn.call(null, obj[key], key, obj);\n }\n }\n }\n}\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n var result = {};\n function assignValue(val, key) {\n if (typeof result[key] === 'object' && typeof val === 'object') {\n result[key] = merge(result[key], val);\n } else {\n result[key] = val;\n }\n }\n\n for (var i = 0, l = arguments.length; i < l; i++) {\n forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Function equal to merge with the difference being that no reference\n * to original objects is kept.\n *\n * @see merge\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\nfunction deepMerge(/* obj1, obj2, obj3, ... */) {\n var result = {};\n function assignValue(val, key) {\n if (typeof result[key] === 'object' && typeof val === 'object') {\n result[key] = deepMerge(result[key], val);\n } else if (typeof val === 'object') {\n result[key] = deepMerge({}, val);\n } else {\n result[key] = val;\n }\n }\n\n for (var i = 0, l = arguments.length; i < l; i++) {\n forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n * @return {Object} The resulting value of object a\n */\nfunction extend(a, b, thisArg) {\n forEach(b, function assignValue(val, key) {\n if (thisArg && typeof val === 'function') {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n });\n return a;\n}\n\nmodule.exports = {\n isArray: isArray,\n isArrayBuffer: isArrayBuffer,\n isBuffer: isBuffer,\n isFormData: isFormData,\n isArrayBufferView: isArrayBufferView,\n isString: isString,\n isNumber: isNumber,\n isObject: isObject,\n isUndefined: isUndefined,\n isDate: isDate,\n isFile: isFile,\n isBlob: isBlob,\n isFunction: isFunction,\n isStream: isStream,\n isURLSearchParams: isURLSearchParams,\n isStandardBrowserEnv: isStandardBrowserEnv,\n forEach: forEach,\n merge: merge,\n deepMerge: deepMerge,\n extend: extend,\n trim: trim\n};\n","/*!\n * Bootstrap v4.4.1 (https://getbootstrap.com/)\n * Copyright 2011-2019 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('jquery'), require('popper.js')) :\n typeof define === 'function' && define.amd ? define(['exports', 'jquery', 'popper.js'], factory) :\n (global = global || self, factory(global.bootstrap = {}, global.jQuery, global.Popper));\n}(this, (function (exports, $, Popper) { 'use strict';\n\n $ = $ && $.hasOwnProperty('default') ? $['default'] : $;\n Popper = Popper && Popper.hasOwnProperty('default') ? Popper['default'] : Popper;\n\n function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n }\n\n function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n }\n\n function ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n }\n\n function _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n }\n\n function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n }\n\n /**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.4.1): util.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n /**\n * ------------------------------------------------------------------------\n * Private TransitionEnd Helpers\n * ------------------------------------------------------------------------\n */\n\n var TRANSITION_END = 'transitionend';\n var MAX_UID = 1000000;\n var MILLISECONDS_MULTIPLIER = 1000; // Shoutout AngusCroll (https://goo.gl/pxwQGp)\n\n function toType(obj) {\n return {}.toString.call(obj).match(/\\s([a-z]+)/i)[1].toLowerCase();\n }\n\n function getSpecialTransitionEndEvent() {\n return {\n bindType: TRANSITION_END,\n delegateType: TRANSITION_END,\n handle: function handle(event) {\n if ($(event.target).is(this)) {\n return event.handleObj.handler.apply(this, arguments); // eslint-disable-line prefer-rest-params\n }\n\n return undefined; // eslint-disable-line no-undefined\n }\n };\n }\n\n function transitionEndEmulator(duration) {\n var _this = this;\n\n var called = false;\n $(this).one(Util.TRANSITION_END, function () {\n called = true;\n });\n setTimeout(function () {\n if (!called) {\n Util.triggerTransitionEnd(_this);\n }\n }, duration);\n return this;\n }\n\n function setTransitionEndSupport() {\n $.fn.emulateTransitionEnd = transitionEndEmulator;\n $.event.special[Util.TRANSITION_END] = getSpecialTransitionEndEvent();\n }\n /**\n * --------------------------------------------------------------------------\n * Public Util Api\n * --------------------------------------------------------------------------\n */\n\n\n var Util = {\n TRANSITION_END: 'bsTransitionEnd',\n getUID: function getUID(prefix) {\n do {\n // eslint-disable-next-line no-bitwise\n prefix += ~~(Math.random() * MAX_UID); // \"~~\" acts like a faster Math.floor() here\n } while (document.getElementById(prefix));\n\n return prefix;\n },\n getSelectorFromElement: function getSelectorFromElement(element) {\n var selector = element.getAttribute('data-target');\n\n if (!selector || selector === '#') {\n var hrefAttr = element.getAttribute('href');\n selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.trim() : '';\n }\n\n try {\n return document.querySelector(selector) ? selector : null;\n } catch (err) {\n return null;\n }\n },\n getTransitionDurationFromElement: function getTransitionDurationFromElement(element) {\n if (!element) {\n return 0;\n } // Get transition-duration of the element\n\n\n var transitionDuration = $(element).css('transition-duration');\n var transitionDelay = $(element).css('transition-delay');\n var floatTransitionDuration = parseFloat(transitionDuration);\n var floatTransitionDelay = parseFloat(transitionDelay); // Return 0 if element or transition duration is not found\n\n if (!floatTransitionDuration && !floatTransitionDelay) {\n return 0;\n } // If multiple durations are defined, take the first\n\n\n transitionDuration = transitionDuration.split(',')[0];\n transitionDelay = transitionDelay.split(',')[0];\n return (parseFloat(transitionDuration) + parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER;\n },\n reflow: function reflow(element) {\n return element.offsetHeight;\n },\n triggerTransitionEnd: function triggerTransitionEnd(element) {\n $(element).trigger(TRANSITION_END);\n },\n // TODO: Remove in v5\n supportsTransitionEnd: function supportsTransitionEnd() {\n return Boolean(TRANSITION_END);\n },\n isElement: function isElement(obj) {\n return (obj[0] || obj).nodeType;\n },\n typeCheckConfig: function typeCheckConfig(componentName, config, configTypes) {\n for (var property in configTypes) {\n if (Object.prototype.hasOwnProperty.call(configTypes, property)) {\n var expectedTypes = configTypes[property];\n var value = config[property];\n var valueType = value && Util.isElement(value) ? 'element' : toType(value);\n\n if (!new RegExp(expectedTypes).test(valueType)) {\n throw new Error(componentName.toUpperCase() + \": \" + (\"Option \\\"\" + property + \"\\\" provided type \\\"\" + valueType + \"\\\" \") + (\"but expected type \\\"\" + expectedTypes + \"\\\".\"));\n }\n }\n }\n },\n findShadowRoot: function findShadowRoot(element) {\n if (!document.documentElement.attachShadow) {\n return null;\n } // Can find the shadow root otherwise it'll return the document\n\n\n if (typeof element.getRootNode === 'function') {\n var root = element.getRootNode();\n return root instanceof ShadowRoot ? root : null;\n }\n\n if (element instanceof ShadowRoot) {\n return element;\n } // when we don't find a shadow root\n\n\n if (!element.parentNode) {\n return null;\n }\n\n return Util.findShadowRoot(element.parentNode);\n },\n jQueryDetection: function jQueryDetection() {\n if (typeof $ === 'undefined') {\n throw new TypeError('Bootstrap\\'s JavaScript requires jQuery. jQuery must be included before Bootstrap\\'s JavaScript.');\n }\n\n var version = $.fn.jquery.split(' ')[0].split('.');\n var minMajor = 1;\n var ltMajor = 2;\n var minMinor = 9;\n var minPatch = 1;\n var maxMajor = 4;\n\n if (version[0] < ltMajor && version[1] < minMinor || version[0] === minMajor && version[1] === minMinor && version[2] < minPatch || version[0] >= maxMajor) {\n throw new Error('Bootstrap\\'s JavaScript requires at least jQuery v1.9.1 but less than v4.0.0');\n }\n }\n };\n Util.jQueryDetection();\n setTransitionEndSupport();\n\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n var NAME = 'alert';\n var VERSION = '4.4.1';\n var DATA_KEY = 'bs.alert';\n var EVENT_KEY = \".\" + DATA_KEY;\n var DATA_API_KEY = '.data-api';\n var JQUERY_NO_CONFLICT = $.fn[NAME];\n var Selector = {\n DISMISS: '[data-dismiss=\"alert\"]'\n };\n var Event = {\n CLOSE: \"close\" + EVENT_KEY,\n CLOSED: \"closed\" + EVENT_KEY,\n CLICK_DATA_API: \"click\" + EVENT_KEY + DATA_API_KEY\n };\n var ClassName = {\n ALERT: 'alert',\n FADE: 'fade',\n SHOW: 'show'\n };\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n var Alert =\n /*#__PURE__*/\n function () {\n function Alert(element) {\n this._element = element;\n } // Getters\n\n\n var _proto = Alert.prototype;\n\n // Public\n _proto.close = function close(element) {\n var rootElement = this._element;\n\n if (element) {\n rootElement = this._getRootElement(element);\n }\n\n var customEvent = this._triggerCloseEvent(rootElement);\n\n if (customEvent.isDefaultPrevented()) {\n return;\n }\n\n this._removeElement(rootElement);\n };\n\n _proto.dispose = function dispose() {\n $.removeData(this._element, DATA_KEY);\n this._element = null;\n } // Private\n ;\n\n _proto._getRootElement = function _getRootElement(element) {\n var selector = Util.getSelectorFromElement(element);\n var parent = false;\n\n if (selector) {\n parent = document.querySelector(selector);\n }\n\n if (!parent) {\n parent = $(element).closest(\".\" + ClassName.ALERT)[0];\n }\n\n return parent;\n };\n\n _proto._triggerCloseEvent = function _triggerCloseEvent(element) {\n var closeEvent = $.Event(Event.CLOSE);\n $(element).trigger(closeEvent);\n return closeEvent;\n };\n\n _proto._removeElement = function _removeElement(element) {\n var _this = this;\n\n $(element).removeClass(ClassName.SHOW);\n\n if (!$(element).hasClass(ClassName.FADE)) {\n this._destroyElement(element);\n\n return;\n }\n\n var transitionDuration = Util.getTransitionDurationFromElement(element);\n $(element).one(Util.TRANSITION_END, function (event) {\n return _this._destroyElement(element, event);\n }).emulateTransitionEnd(transitionDuration);\n };\n\n _proto._destroyElement = function _destroyElement(element) {\n $(element).detach().trigger(Event.CLOSED).remove();\n } // Static\n ;\n\n Alert._jQueryInterface = function _jQueryInterface(config) {\n return this.each(function () {\n var $element = $(this);\n var data = $element.data(DATA_KEY);\n\n if (!data) {\n data = new Alert(this);\n $element.data(DATA_KEY, data);\n }\n\n if (config === 'close') {\n data[config](this);\n }\n });\n };\n\n Alert._handleDismiss = function _handleDismiss(alertInstance) {\n return function (event) {\n if (event) {\n event.preventDefault();\n }\n\n alertInstance.close(this);\n };\n };\n\n _createClass(Alert, null, [{\n key: \"VERSION\",\n get: function get() {\n return VERSION;\n }\n }]);\n\n return Alert;\n }();\n /**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n\n $(document).on(Event.CLICK_DATA_API, Selector.DISMISS, Alert._handleDismiss(new Alert()));\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n $.fn[NAME] = Alert._jQueryInterface;\n $.fn[NAME].Constructor = Alert;\n\n $.fn[NAME].noConflict = function () {\n $.fn[NAME] = JQUERY_NO_CONFLICT;\n return Alert._jQueryInterface;\n };\n\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n var NAME$1 = 'button';\n var VERSION$1 = '4.4.1';\n var DATA_KEY$1 = 'bs.button';\n var EVENT_KEY$1 = \".\" + DATA_KEY$1;\n var DATA_API_KEY$1 = '.data-api';\n var JQUERY_NO_CONFLICT$1 = $.fn[NAME$1];\n var ClassName$1 = {\n ACTIVE: 'active',\n BUTTON: 'btn',\n FOCUS: 'focus'\n };\n var Selector$1 = {\n DATA_TOGGLE_CARROT: '[data-toggle^=\"button\"]',\n DATA_TOGGLES: '[data-toggle=\"buttons\"]',\n DATA_TOGGLE: '[data-toggle=\"button\"]',\n DATA_TOGGLES_BUTTONS: '[data-toggle=\"buttons\"] .btn',\n INPUT: 'input:not([type=\"hidden\"])',\n ACTIVE: '.active',\n BUTTON: '.btn'\n };\n var Event$1 = {\n CLICK_DATA_API: \"click\" + EVENT_KEY$1 + DATA_API_KEY$1,\n FOCUS_BLUR_DATA_API: \"focus\" + EVENT_KEY$1 + DATA_API_KEY$1 + \" \" + (\"blur\" + EVENT_KEY$1 + DATA_API_KEY$1),\n LOAD_DATA_API: \"load\" + EVENT_KEY$1 + DATA_API_KEY$1\n };\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n var Button =\n /*#__PURE__*/\n function () {\n function Button(element) {\n this._element = element;\n } // Getters\n\n\n var _proto = Button.prototype;\n\n // Public\n _proto.toggle = function toggle() {\n var triggerChangeEvent = true;\n var addAriaPressed = true;\n var rootElement = $(this._element).closest(Selector$1.DATA_TOGGLES)[0];\n\n if (rootElement) {\n var input = this._element.querySelector(Selector$1.INPUT);\n\n if (input) {\n if (input.type === 'radio') {\n if (input.checked && this._element.classList.contains(ClassName$1.ACTIVE)) {\n triggerChangeEvent = false;\n } else {\n var activeElement = rootElement.querySelector(Selector$1.ACTIVE);\n\n if (activeElement) {\n $(activeElement).removeClass(ClassName$1.ACTIVE);\n }\n }\n } else if (input.type === 'checkbox') {\n if (this._element.tagName === 'LABEL' && input.checked === this._element.classList.contains(ClassName$1.ACTIVE)) {\n triggerChangeEvent = false;\n }\n } else {\n // if it's not a radio button or checkbox don't add a pointless/invalid checked property to the input\n triggerChangeEvent = false;\n }\n\n if (triggerChangeEvent) {\n input.checked = !this._element.classList.contains(ClassName$1.ACTIVE);\n $(input).trigger('change');\n }\n\n input.focus();\n addAriaPressed = false;\n }\n }\n\n if (!(this._element.hasAttribute('disabled') || this._element.classList.contains('disabled'))) {\n if (addAriaPressed) {\n this._element.setAttribute('aria-pressed', !this._element.classList.contains(ClassName$1.ACTIVE));\n }\n\n if (triggerChangeEvent) {\n $(this._element).toggleClass(ClassName$1.ACTIVE);\n }\n }\n };\n\n _proto.dispose = function dispose() {\n $.removeData(this._element, DATA_KEY$1);\n this._element = null;\n } // Static\n ;\n\n Button._jQueryInterface = function _jQueryInterface(config) {\n return this.each(function () {\n var data = $(this).data(DATA_KEY$1);\n\n if (!data) {\n data = new Button(this);\n $(this).data(DATA_KEY$1, data);\n }\n\n if (config === 'toggle') {\n data[config]();\n }\n });\n };\n\n _createClass(Button, null, [{\n key: \"VERSION\",\n get: function get() {\n return VERSION$1;\n }\n }]);\n\n return Button;\n }();\n /**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n\n $(document).on(Event$1.CLICK_DATA_API, Selector$1.DATA_TOGGLE_CARROT, function (event) {\n var button = event.target;\n\n if (!$(button).hasClass(ClassName$1.BUTTON)) {\n button = $(button).closest(Selector$1.BUTTON)[0];\n }\n\n if (!button || button.hasAttribute('disabled') || button.classList.contains('disabled')) {\n event.preventDefault(); // work around Firefox bug #1540995\n } else {\n var inputBtn = button.querySelector(Selector$1.INPUT);\n\n if (inputBtn && (inputBtn.hasAttribute('disabled') || inputBtn.classList.contains('disabled'))) {\n event.preventDefault(); // work around Firefox bug #1540995\n\n return;\n }\n\n Button._jQueryInterface.call($(button), 'toggle');\n }\n }).on(Event$1.FOCUS_BLUR_DATA_API, Selector$1.DATA_TOGGLE_CARROT, function (event) {\n var button = $(event.target).closest(Selector$1.BUTTON)[0];\n $(button).toggleClass(ClassName$1.FOCUS, /^focus(in)?$/.test(event.type));\n });\n $(window).on(Event$1.LOAD_DATA_API, function () {\n // ensure correct active class is set to match the controls' actual values/states\n // find all checkboxes/readio buttons inside data-toggle groups\n var buttons = [].slice.call(document.querySelectorAll(Selector$1.DATA_TOGGLES_BUTTONS));\n\n for (var i = 0, len = buttons.length; i < len; i++) {\n var button = buttons[i];\n var input = button.querySelector(Selector$1.INPUT);\n\n if (input.checked || input.hasAttribute('checked')) {\n button.classList.add(ClassName$1.ACTIVE);\n } else {\n button.classList.remove(ClassName$1.ACTIVE);\n }\n } // find all button toggles\n\n\n buttons = [].slice.call(document.querySelectorAll(Selector$1.DATA_TOGGLE));\n\n for (var _i = 0, _len = buttons.length; _i < _len; _i++) {\n var _button = buttons[_i];\n\n if (_button.getAttribute('aria-pressed') === 'true') {\n _button.classList.add(ClassName$1.ACTIVE);\n } else {\n _button.classList.remove(ClassName$1.ACTIVE);\n }\n }\n });\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n $.fn[NAME$1] = Button._jQueryInterface;\n $.fn[NAME$1].Constructor = Button;\n\n $.fn[NAME$1].noConflict = function () {\n $.fn[NAME$1] = JQUERY_NO_CONFLICT$1;\n return Button._jQueryInterface;\n };\n\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n var NAME$2 = 'carousel';\n var VERSION$2 = '4.4.1';\n var DATA_KEY$2 = 'bs.carousel';\n var EVENT_KEY$2 = \".\" + DATA_KEY$2;\n var DATA_API_KEY$2 = '.data-api';\n var JQUERY_NO_CONFLICT$2 = $.fn[NAME$2];\n var ARROW_LEFT_KEYCODE = 37; // KeyboardEvent.which value for left arrow key\n\n var ARROW_RIGHT_KEYCODE = 39; // KeyboardEvent.which value for right arrow key\n\n var TOUCHEVENT_COMPAT_WAIT = 500; // Time for mouse compat events to fire after touch\n\n var SWIPE_THRESHOLD = 40;\n var Default = {\n interval: 5000,\n keyboard: true,\n slide: false,\n pause: 'hover',\n wrap: true,\n touch: true\n };\n var DefaultType = {\n interval: '(number|boolean)',\n keyboard: 'boolean',\n slide: '(boolean|string)',\n pause: '(string|boolean)',\n wrap: 'boolean',\n touch: 'boolean'\n };\n var Direction = {\n NEXT: 'next',\n PREV: 'prev',\n LEFT: 'left',\n RIGHT: 'right'\n };\n var Event$2 = {\n SLIDE: \"slide\" + EVENT_KEY$2,\n SLID: \"slid\" + EVENT_KEY$2,\n KEYDOWN: \"keydown\" + EVENT_KEY$2,\n MOUSEENTER: \"mouseenter\" + EVENT_KEY$2,\n MOUSELEAVE: \"mouseleave\" + EVENT_KEY$2,\n TOUCHSTART: \"touchstart\" + EVENT_KEY$2,\n TOUCHMOVE: \"touchmove\" + EVENT_KEY$2,\n TOUCHEND: \"touchend\" + EVENT_KEY$2,\n POINTERDOWN: \"pointerdown\" + EVENT_KEY$2,\n POINTERUP: \"pointerup\" + EVENT_KEY$2,\n DRAG_START: \"dragstart\" + EVENT_KEY$2,\n LOAD_DATA_API: \"load\" + EVENT_KEY$2 + DATA_API_KEY$2,\n CLICK_DATA_API: \"click\" + EVENT_KEY$2 + DATA_API_KEY$2\n };\n var ClassName$2 = {\n CAROUSEL: 'carousel',\n ACTIVE: 'active',\n SLIDE: 'slide',\n RIGHT: 'carousel-item-right',\n LEFT: 'carousel-item-left',\n NEXT: 'carousel-item-next',\n PREV: 'carousel-item-prev',\n ITEM: 'carousel-item',\n POINTER_EVENT: 'pointer-event'\n };\n var Selector$2 = {\n ACTIVE: '.active',\n ACTIVE_ITEM: '.active.carousel-item',\n ITEM: '.carousel-item',\n ITEM_IMG: '.carousel-item img',\n NEXT_PREV: '.carousel-item-next, .carousel-item-prev',\n INDICATORS: '.carousel-indicators',\n DATA_SLIDE: '[data-slide], [data-slide-to]',\n DATA_RIDE: '[data-ride=\"carousel\"]'\n };\n var PointerType = {\n TOUCH: 'touch',\n PEN: 'pen'\n };\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n var Carousel =\n /*#__PURE__*/\n function () {\n function Carousel(element, config) {\n this._items = null;\n this._interval = null;\n this._activeElement = null;\n this._isPaused = false;\n this._isSliding = false;\n this.touchTimeout = null;\n this.touchStartX = 0;\n this.touchDeltaX = 0;\n this._config = this._getConfig(config);\n this._element = element;\n this._indicatorsElement = this._element.querySelector(Selector$2.INDICATORS);\n this._touchSupported = 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0;\n this._pointerEvent = Boolean(window.PointerEvent || window.MSPointerEvent);\n\n this._addEventListeners();\n } // Getters\n\n\n var _proto = Carousel.prototype;\n\n // Public\n _proto.next = function next() {\n if (!this._isSliding) {\n this._slide(Direction.NEXT);\n }\n };\n\n _proto.nextWhenVisible = function nextWhenVisible() {\n // Don't call next when the page isn't visible\n // or the carousel or its parent isn't visible\n if (!document.hidden && $(this._element).is(':visible') && $(this._element).css('visibility') !== 'hidden') {\n this.next();\n }\n };\n\n _proto.prev = function prev() {\n if (!this._isSliding) {\n this._slide(Direction.PREV);\n }\n };\n\n _proto.pause = function pause(event) {\n if (!event) {\n this._isPaused = true;\n }\n\n if (this._element.querySelector(Selector$2.NEXT_PREV)) {\n Util.triggerTransitionEnd(this._element);\n this.cycle(true);\n }\n\n clearInterval(this._interval);\n this._interval = null;\n };\n\n _proto.cycle = function cycle(event) {\n if (!event) {\n this._isPaused = false;\n }\n\n if (this._interval) {\n clearInterval(this._interval);\n this._interval = null;\n }\n\n if (this._config.interval && !this._isPaused) {\n this._interval = setInterval((document.visibilityState ? this.nextWhenVisible : this.next).bind(this), this._config.interval);\n }\n };\n\n _proto.to = function to(index) {\n var _this = this;\n\n this._activeElement = this._element.querySelector(Selector$2.ACTIVE_ITEM);\n\n var activeIndex = this._getItemIndex(this._activeElement);\n\n if (index > this._items.length - 1 || index < 0) {\n return;\n }\n\n if (this._isSliding) {\n $(this._element).one(Event$2.SLID, function () {\n return _this.to(index);\n });\n return;\n }\n\n if (activeIndex === index) {\n this.pause();\n this.cycle();\n return;\n }\n\n var direction = index > activeIndex ? Direction.NEXT : Direction.PREV;\n\n this._slide(direction, this._items[index]);\n };\n\n _proto.dispose = function dispose() {\n $(this._element).off(EVENT_KEY$2);\n $.removeData(this._element, DATA_KEY$2);\n this._items = null;\n this._config = null;\n this._element = null;\n this._interval = null;\n this._isPaused = null;\n this._isSliding = null;\n this._activeElement = null;\n this._indicatorsElement = null;\n } // Private\n ;\n\n _proto._getConfig = function _getConfig(config) {\n config = _objectSpread2({}, Default, {}, config);\n Util.typeCheckConfig(NAME$2, config, DefaultType);\n return config;\n };\n\n _proto._handleSwipe = function _handleSwipe() {\n var absDeltax = Math.abs(this.touchDeltaX);\n\n if (absDeltax <= SWIPE_THRESHOLD) {\n return;\n }\n\n var direction = absDeltax / this.touchDeltaX;\n this.touchDeltaX = 0; // swipe left\n\n if (direction > 0) {\n this.prev();\n } // swipe right\n\n\n if (direction < 0) {\n this.next();\n }\n };\n\n _proto._addEventListeners = function _addEventListeners() {\n var _this2 = this;\n\n if (this._config.keyboard) {\n $(this._element).on(Event$2.KEYDOWN, function (event) {\n return _this2._keydown(event);\n });\n }\n\n if (this._config.pause === 'hover') {\n $(this._element).on(Event$2.MOUSEENTER, function (event) {\n return _this2.pause(event);\n }).on(Event$2.MOUSELEAVE, function (event) {\n return _this2.cycle(event);\n });\n }\n\n if (this._config.touch) {\n this._addTouchEventListeners();\n }\n };\n\n _proto._addTouchEventListeners = function _addTouchEventListeners() {\n var _this3 = this;\n\n if (!this._touchSupported) {\n return;\n }\n\n var start = function start(event) {\n if (_this3._pointerEvent && PointerType[event.originalEvent.pointerType.toUpperCase()]) {\n _this3.touchStartX = event.originalEvent.clientX;\n } else if (!_this3._pointerEvent) {\n _this3.touchStartX = event.originalEvent.touches[0].clientX;\n }\n };\n\n var move = function move(event) {\n // ensure swiping with one touch and not pinching\n if (event.originalEvent.touches && event.originalEvent.touches.length > 1) {\n _this3.touchDeltaX = 0;\n } else {\n _this3.touchDeltaX = event.originalEvent.touches[0].clientX - _this3.touchStartX;\n }\n };\n\n var end = function end(event) {\n if (_this3._pointerEvent && PointerType[event.originalEvent.pointerType.toUpperCase()]) {\n _this3.touchDeltaX = event.originalEvent.clientX - _this3.touchStartX;\n }\n\n _this3._handleSwipe();\n\n if (_this3._config.pause === 'hover') {\n // If it's a touch-enabled device, mouseenter/leave are fired as\n // part of the mouse compatibility events on first tap - the carousel\n // would stop cycling until user tapped out of it;\n // here, we listen for touchend, explicitly pause the carousel\n // (as if it's the second time we tap on it, mouseenter compat event\n // is NOT fired) and after a timeout (to allow for mouse compatibility\n // events to fire) we explicitly restart cycling\n _this3.pause();\n\n if (_this3.touchTimeout) {\n clearTimeout(_this3.touchTimeout);\n }\n\n _this3.touchTimeout = setTimeout(function (event) {\n return _this3.cycle(event);\n }, TOUCHEVENT_COMPAT_WAIT + _this3._config.interval);\n }\n };\n\n $(this._element.querySelectorAll(Selector$2.ITEM_IMG)).on(Event$2.DRAG_START, function (e) {\n return e.preventDefault();\n });\n\n if (this._pointerEvent) {\n $(this._element).on(Event$2.POINTERDOWN, function (event) {\n return start(event);\n });\n $(this._element).on(Event$2.POINTERUP, function (event) {\n return end(event);\n });\n\n this._element.classList.add(ClassName$2.POINTER_EVENT);\n } else {\n $(this._element).on(Event$2.TOUCHSTART, function (event) {\n return start(event);\n });\n $(this._element).on(Event$2.TOUCHMOVE, function (event) {\n return move(event);\n });\n $(this._element).on(Event$2.TOUCHEND, function (event) {\n return end(event);\n });\n }\n };\n\n _proto._keydown = function _keydown(event) {\n if (/input|textarea/i.test(event.target.tagName)) {\n return;\n }\n\n switch (event.which) {\n case ARROW_LEFT_KEYCODE:\n event.preventDefault();\n this.prev();\n break;\n\n case ARROW_RIGHT_KEYCODE:\n event.preventDefault();\n this.next();\n break;\n }\n };\n\n _proto._getItemIndex = function _getItemIndex(element) {\n this._items = element && element.parentNode ? [].slice.call(element.parentNode.querySelectorAll(Selector$2.ITEM)) : [];\n return this._items.indexOf(element);\n };\n\n _proto._getItemByDirection = function _getItemByDirection(direction, activeElement) {\n var isNextDirection = direction === Direction.NEXT;\n var isPrevDirection = direction === Direction.PREV;\n\n var activeIndex = this._getItemIndex(activeElement);\n\n var lastItemIndex = this._items.length - 1;\n var isGoingToWrap = isPrevDirection && activeIndex === 0 || isNextDirection && activeIndex === lastItemIndex;\n\n if (isGoingToWrap && !this._config.wrap) {\n return activeElement;\n }\n\n var delta = direction === Direction.PREV ? -1 : 1;\n var itemIndex = (activeIndex + delta) % this._items.length;\n return itemIndex === -1 ? this._items[this._items.length - 1] : this._items[itemIndex];\n };\n\n _proto._triggerSlideEvent = function _triggerSlideEvent(relatedTarget, eventDirectionName) {\n var targetIndex = this._getItemIndex(relatedTarget);\n\n var fromIndex = this._getItemIndex(this._element.querySelector(Selector$2.ACTIVE_ITEM));\n\n var slideEvent = $.Event(Event$2.SLIDE, {\n relatedTarget: relatedTarget,\n direction: eventDirectionName,\n from: fromIndex,\n to: targetIndex\n });\n $(this._element).trigger(slideEvent);\n return slideEvent;\n };\n\n _proto._setActiveIndicatorElement = function _setActiveIndicatorElement(element) {\n if (this._indicatorsElement) {\n var indicators = [].slice.call(this._indicatorsElement.querySelectorAll(Selector$2.ACTIVE));\n $(indicators).removeClass(ClassName$2.ACTIVE);\n\n var nextIndicator = this._indicatorsElement.children[this._getItemIndex(element)];\n\n if (nextIndicator) {\n $(nextIndicator).addClass(ClassName$2.ACTIVE);\n }\n }\n };\n\n _proto._slide = function _slide(direction, element) {\n var _this4 = this;\n\n var activeElement = this._element.querySelector(Selector$2.ACTIVE_ITEM);\n\n var activeElementIndex = this._getItemIndex(activeElement);\n\n var nextElement = element || activeElement && this._getItemByDirection(direction, activeElement);\n\n var nextElementIndex = this._getItemIndex(nextElement);\n\n var isCycling = Boolean(this._interval);\n var directionalClassName;\n var orderClassName;\n var eventDirectionName;\n\n if (direction === Direction.NEXT) {\n directionalClassName = ClassName$2.LEFT;\n orderClassName = ClassName$2.NEXT;\n eventDirectionName = Direction.LEFT;\n } else {\n directionalClassName = ClassName$2.RIGHT;\n orderClassName = ClassName$2.PREV;\n eventDirectionName = Direction.RIGHT;\n }\n\n if (nextElement && $(nextElement).hasClass(ClassName$2.ACTIVE)) {\n this._isSliding = false;\n return;\n }\n\n var slideEvent = this._triggerSlideEvent(nextElement, eventDirectionName);\n\n if (slideEvent.isDefaultPrevented()) {\n return;\n }\n\n if (!activeElement || !nextElement) {\n // Some weirdness is happening, so we bail\n return;\n }\n\n this._isSliding = true;\n\n if (isCycling) {\n this.pause();\n }\n\n this._setActiveIndicatorElement(nextElement);\n\n var slidEvent = $.Event(Event$2.SLID, {\n relatedTarget: nextElement,\n direction: eventDirectionName,\n from: activeElementIndex,\n to: nextElementIndex\n });\n\n if ($(this._element).hasClass(ClassName$2.SLIDE)) {\n $(nextElement).addClass(orderClassName);\n Util.reflow(nextElement);\n $(activeElement).addClass(directionalClassName);\n $(nextElement).addClass(directionalClassName);\n var nextElementInterval = parseInt(nextElement.getAttribute('data-interval'), 10);\n\n if (nextElementInterval) {\n this._config.defaultInterval = this._config.defaultInterval || this._config.interval;\n this._config.interval = nextElementInterval;\n } else {\n this._config.interval = this._config.defaultInterval || this._config.interval;\n }\n\n var transitionDuration = Util.getTransitionDurationFromElement(activeElement);\n $(activeElement).one(Util.TRANSITION_END, function () {\n $(nextElement).removeClass(directionalClassName + \" \" + orderClassName).addClass(ClassName$2.ACTIVE);\n $(activeElement).removeClass(ClassName$2.ACTIVE + \" \" + orderClassName + \" \" + directionalClassName);\n _this4._isSliding = false;\n setTimeout(function () {\n return $(_this4._element).trigger(slidEvent);\n }, 0);\n }).emulateTransitionEnd(transitionDuration);\n } else {\n $(activeElement).removeClass(ClassName$2.ACTIVE);\n $(nextElement).addClass(ClassName$2.ACTIVE);\n this._isSliding = false;\n $(this._element).trigger(slidEvent);\n }\n\n if (isCycling) {\n this.cycle();\n }\n } // Static\n ;\n\n Carousel._jQueryInterface = function _jQueryInterface(config) {\n return this.each(function () {\n var data = $(this).data(DATA_KEY$2);\n\n var _config = _objectSpread2({}, Default, {}, $(this).data());\n\n if (typeof config === 'object') {\n _config = _objectSpread2({}, _config, {}, config);\n }\n\n var action = typeof config === 'string' ? config : _config.slide;\n\n if (!data) {\n data = new Carousel(this, _config);\n $(this).data(DATA_KEY$2, data);\n }\n\n if (typeof config === 'number') {\n data.to(config);\n } else if (typeof action === 'string') {\n if (typeof data[action] === 'undefined') {\n throw new TypeError(\"No method named \\\"\" + action + \"\\\"\");\n }\n\n data[action]();\n } else if (_config.interval && _config.ride) {\n data.pause();\n data.cycle();\n }\n });\n };\n\n Carousel._dataApiClickHandler = function _dataApiClickHandler(event) {\n var selector = Util.getSelectorFromElement(this);\n\n if (!selector) {\n return;\n }\n\n var target = $(selector)[0];\n\n if (!target || !$(target).hasClass(ClassName$2.CAROUSEL)) {\n return;\n }\n\n var config = _objectSpread2({}, $(target).data(), {}, $(this).data());\n\n var slideIndex = this.getAttribute('data-slide-to');\n\n if (slideIndex) {\n config.interval = false;\n }\n\n Carousel._jQueryInterface.call($(target), config);\n\n if (slideIndex) {\n $(target).data(DATA_KEY$2).to(slideIndex);\n }\n\n event.preventDefault();\n };\n\n _createClass(Carousel, null, [{\n key: \"VERSION\",\n get: function get() {\n return VERSION$2;\n }\n }, {\n key: \"Default\",\n get: function get() {\n return Default;\n }\n }]);\n\n return Carousel;\n }();\n /**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n\n $(document).on(Event$2.CLICK_DATA_API, Selector$2.DATA_SLIDE, Carousel._dataApiClickHandler);\n $(window).on(Event$2.LOAD_DATA_API, function () {\n var carousels = [].slice.call(document.querySelectorAll(Selector$2.DATA_RIDE));\n\n for (var i = 0, len = carousels.length; i < len; i++) {\n var $carousel = $(carousels[i]);\n\n Carousel._jQueryInterface.call($carousel, $carousel.data());\n }\n });\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n $.fn[NAME$2] = Carousel._jQueryInterface;\n $.fn[NAME$2].Constructor = Carousel;\n\n $.fn[NAME$2].noConflict = function () {\n $.fn[NAME$2] = JQUERY_NO_CONFLICT$2;\n return Carousel._jQueryInterface;\n };\n\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n var NAME$3 = 'collapse';\n var VERSION$3 = '4.4.1';\n var DATA_KEY$3 = 'bs.collapse';\n var EVENT_KEY$3 = \".\" + DATA_KEY$3;\n var DATA_API_KEY$3 = '.data-api';\n var JQUERY_NO_CONFLICT$3 = $.fn[NAME$3];\n var Default$1 = {\n toggle: true,\n parent: ''\n };\n var DefaultType$1 = {\n toggle: 'boolean',\n parent: '(string|element)'\n };\n var Event$3 = {\n SHOW: \"show\" + EVENT_KEY$3,\n SHOWN: \"shown\" + EVENT_KEY$3,\n HIDE: \"hide\" + EVENT_KEY$3,\n HIDDEN: \"hidden\" + EVENT_KEY$3,\n CLICK_DATA_API: \"click\" + EVENT_KEY$3 + DATA_API_KEY$3\n };\n var ClassName$3 = {\n SHOW: 'show',\n COLLAPSE: 'collapse',\n COLLAPSING: 'collapsing',\n COLLAPSED: 'collapsed'\n };\n var Dimension = {\n WIDTH: 'width',\n HEIGHT: 'height'\n };\n var Selector$3 = {\n ACTIVES: '.show, .collapsing',\n DATA_TOGGLE: '[data-toggle=\"collapse\"]'\n };\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n var Collapse =\n /*#__PURE__*/\n function () {\n function Collapse(element, config) {\n this._isTransitioning = false;\n this._element = element;\n this._config = this._getConfig(config);\n this._triggerArray = [].slice.call(document.querySelectorAll(\"[data-toggle=\\\"collapse\\\"][href=\\\"#\" + element.id + \"\\\"],\" + (\"[data-toggle=\\\"collapse\\\"][data-target=\\\"#\" + element.id + \"\\\"]\")));\n var toggleList = [].slice.call(document.querySelectorAll(Selector$3.DATA_TOGGLE));\n\n for (var i = 0, len = toggleList.length; i < len; i++) {\n var elem = toggleList[i];\n var selector = Util.getSelectorFromElement(elem);\n var filterElement = [].slice.call(document.querySelectorAll(selector)).filter(function (foundElem) {\n return foundElem === element;\n });\n\n if (selector !== null && filterElement.length > 0) {\n this._selector = selector;\n\n this._triggerArray.push(elem);\n }\n }\n\n this._parent = this._config.parent ? this._getParent() : null;\n\n if (!this._config.parent) {\n this._addAriaAndCollapsedClass(this._element, this._triggerArray);\n }\n\n if (this._config.toggle) {\n this.toggle();\n }\n } // Getters\n\n\n var _proto = Collapse.prototype;\n\n // Public\n _proto.toggle = function toggle() {\n if ($(this._element).hasClass(ClassName$3.SHOW)) {\n this.hide();\n } else {\n this.show();\n }\n };\n\n _proto.show = function show() {\n var _this = this;\n\n if (this._isTransitioning || $(this._element).hasClass(ClassName$3.SHOW)) {\n return;\n }\n\n var actives;\n var activesData;\n\n if (this._parent) {\n actives = [].slice.call(this._parent.querySelectorAll(Selector$3.ACTIVES)).filter(function (elem) {\n if (typeof _this._config.parent === 'string') {\n return elem.getAttribute('data-parent') === _this._config.parent;\n }\n\n return elem.classList.contains(ClassName$3.COLLAPSE);\n });\n\n if (actives.length === 0) {\n actives = null;\n }\n }\n\n if (actives) {\n activesData = $(actives).not(this._selector).data(DATA_KEY$3);\n\n if (activesData && activesData._isTransitioning) {\n return;\n }\n }\n\n var startEvent = $.Event(Event$3.SHOW);\n $(this._element).trigger(startEvent);\n\n if (startEvent.isDefaultPrevented()) {\n return;\n }\n\n if (actives) {\n Collapse._jQueryInterface.call($(actives).not(this._selector), 'hide');\n\n if (!activesData) {\n $(actives).data(DATA_KEY$3, null);\n }\n }\n\n var dimension = this._getDimension();\n\n $(this._element).removeClass(ClassName$3.COLLAPSE).addClass(ClassName$3.COLLAPSING);\n this._element.style[dimension] = 0;\n\n if (this._triggerArray.length) {\n $(this._triggerArray).removeClass(ClassName$3.COLLAPSED).attr('aria-expanded', true);\n }\n\n this.setTransitioning(true);\n\n var complete = function complete() {\n $(_this._element).removeClass(ClassName$3.COLLAPSING).addClass(ClassName$3.COLLAPSE).addClass(ClassName$3.SHOW);\n _this._element.style[dimension] = '';\n\n _this.setTransitioning(false);\n\n $(_this._element).trigger(Event$3.SHOWN);\n };\n\n var capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1);\n var scrollSize = \"scroll\" + capitalizedDimension;\n var transitionDuration = Util.getTransitionDurationFromElement(this._element);\n $(this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);\n this._element.style[dimension] = this._element[scrollSize] + \"px\";\n };\n\n _proto.hide = function hide() {\n var _this2 = this;\n\n if (this._isTransitioning || !$(this._element).hasClass(ClassName$3.SHOW)) {\n return;\n }\n\n var startEvent = $.Event(Event$3.HIDE);\n $(this._element).trigger(startEvent);\n\n if (startEvent.isDefaultPrevented()) {\n return;\n }\n\n var dimension = this._getDimension();\n\n this._element.style[dimension] = this._element.getBoundingClientRect()[dimension] + \"px\";\n Util.reflow(this._element);\n $(this._element).addClass(ClassName$3.COLLAPSING).removeClass(ClassName$3.COLLAPSE).removeClass(ClassName$3.SHOW);\n var triggerArrayLength = this._triggerArray.length;\n\n if (triggerArrayLength > 0) {\n for (var i = 0; i < triggerArrayLength; i++) {\n var trigger = this._triggerArray[i];\n var selector = Util.getSelectorFromElement(trigger);\n\n if (selector !== null) {\n var $elem = $([].slice.call(document.querySelectorAll(selector)));\n\n if (!$elem.hasClass(ClassName$3.SHOW)) {\n $(trigger).addClass(ClassName$3.COLLAPSED).attr('aria-expanded', false);\n }\n }\n }\n }\n\n this.setTransitioning(true);\n\n var complete = function complete() {\n _this2.setTransitioning(false);\n\n $(_this2._element).removeClass(ClassName$3.COLLAPSING).addClass(ClassName$3.COLLAPSE).trigger(Event$3.HIDDEN);\n };\n\n this._element.style[dimension] = '';\n var transitionDuration = Util.getTransitionDurationFromElement(this._element);\n $(this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);\n };\n\n _proto.setTransitioning = function setTransitioning(isTransitioning) {\n this._isTransitioning = isTransitioning;\n };\n\n _proto.dispose = function dispose() {\n $.removeData(this._element, DATA_KEY$3);\n this._config = null;\n this._parent = null;\n this._element = null;\n this._triggerArray = null;\n this._isTransitioning = null;\n } // Private\n ;\n\n _proto._getConfig = function _getConfig(config) {\n config = _objectSpread2({}, Default$1, {}, config);\n config.toggle = Boolean(config.toggle); // Coerce string values\n\n Util.typeCheckConfig(NAME$3, config, DefaultType$1);\n return config;\n };\n\n _proto._getDimension = function _getDimension() {\n var hasWidth = $(this._element).hasClass(Dimension.WIDTH);\n return hasWidth ? Dimension.WIDTH : Dimension.HEIGHT;\n };\n\n _proto._getParent = function _getParent() {\n var _this3 = this;\n\n var parent;\n\n if (Util.isElement(this._config.parent)) {\n parent = this._config.parent; // It's a jQuery object\n\n if (typeof this._config.parent.jquery !== 'undefined') {\n parent = this._config.parent[0];\n }\n } else {\n parent = document.querySelector(this._config.parent);\n }\n\n var selector = \"[data-toggle=\\\"collapse\\\"][data-parent=\\\"\" + this._config.parent + \"\\\"]\";\n var children = [].slice.call(parent.querySelectorAll(selector));\n $(children).each(function (i, element) {\n _this3._addAriaAndCollapsedClass(Collapse._getTargetFromElement(element), [element]);\n });\n return parent;\n };\n\n _proto._addAriaAndCollapsedClass = function _addAriaAndCollapsedClass(element, triggerArray) {\n var isOpen = $(element).hasClass(ClassName$3.SHOW);\n\n if (triggerArray.length) {\n $(triggerArray).toggleClass(ClassName$3.COLLAPSED, !isOpen).attr('aria-expanded', isOpen);\n }\n } // Static\n ;\n\n Collapse._getTargetFromElement = function _getTargetFromElement(element) {\n var selector = Util.getSelectorFromElement(element);\n return selector ? document.querySelector(selector) : null;\n };\n\n Collapse._jQueryInterface = function _jQueryInterface(config) {\n return this.each(function () {\n var $this = $(this);\n var data = $this.data(DATA_KEY$3);\n\n var _config = _objectSpread2({}, Default$1, {}, $this.data(), {}, typeof config === 'object' && config ? config : {});\n\n if (!data && _config.toggle && /show|hide/.test(config)) {\n _config.toggle = false;\n }\n\n if (!data) {\n data = new Collapse(this, _config);\n $this.data(DATA_KEY$3, data);\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n }\n\n data[config]();\n }\n });\n };\n\n _createClass(Collapse, null, [{\n key: \"VERSION\",\n get: function get() {\n return VERSION$3;\n }\n }, {\n key: \"Default\",\n get: function get() {\n return Default$1;\n }\n }]);\n\n return Collapse;\n }();\n /**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n\n $(document).on(Event$3.CLICK_DATA_API, Selector$3.DATA_TOGGLE, function (event) {\n // preventDefault only for
    elements (which change the URL) not inside the collapsible element\n if (event.currentTarget.tagName === 'A') {\n event.preventDefault();\n }\n\n var $trigger = $(this);\n var selector = Util.getSelectorFromElement(this);\n var selectors = [].slice.call(document.querySelectorAll(selector));\n $(selectors).each(function () {\n var $target = $(this);\n var data = $target.data(DATA_KEY$3);\n var config = data ? 'toggle' : $trigger.data();\n\n Collapse._jQueryInterface.call($target, config);\n });\n });\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n $.fn[NAME$3] = Collapse._jQueryInterface;\n $.fn[NAME$3].Constructor = Collapse;\n\n $.fn[NAME$3].noConflict = function () {\n $.fn[NAME$3] = JQUERY_NO_CONFLICT$3;\n return Collapse._jQueryInterface;\n };\n\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n var NAME$4 = 'dropdown';\n var VERSION$4 = '4.4.1';\n var DATA_KEY$4 = 'bs.dropdown';\n var EVENT_KEY$4 = \".\" + DATA_KEY$4;\n var DATA_API_KEY$4 = '.data-api';\n var JQUERY_NO_CONFLICT$4 = $.fn[NAME$4];\n var ESCAPE_KEYCODE = 27; // KeyboardEvent.which value for Escape (Esc) key\n\n var SPACE_KEYCODE = 32; // KeyboardEvent.which value for space key\n\n var TAB_KEYCODE = 9; // KeyboardEvent.which value for tab key\n\n var ARROW_UP_KEYCODE = 38; // KeyboardEvent.which value for up arrow key\n\n var ARROW_DOWN_KEYCODE = 40; // KeyboardEvent.which value for down arrow key\n\n var RIGHT_MOUSE_BUTTON_WHICH = 3; // MouseEvent.which value for the right button (assuming a right-handed mouse)\n\n var REGEXP_KEYDOWN = new RegExp(ARROW_UP_KEYCODE + \"|\" + ARROW_DOWN_KEYCODE + \"|\" + ESCAPE_KEYCODE);\n var Event$4 = {\n HIDE: \"hide\" + EVENT_KEY$4,\n HIDDEN: \"hidden\" + EVENT_KEY$4,\n SHOW: \"show\" + EVENT_KEY$4,\n SHOWN: \"shown\" + EVENT_KEY$4,\n CLICK: \"click\" + EVENT_KEY$4,\n CLICK_DATA_API: \"click\" + EVENT_KEY$4 + DATA_API_KEY$4,\n KEYDOWN_DATA_API: \"keydown\" + EVENT_KEY$4 + DATA_API_KEY$4,\n KEYUP_DATA_API: \"keyup\" + EVENT_KEY$4 + DATA_API_KEY$4\n };\n var ClassName$4 = {\n DISABLED: 'disabled',\n SHOW: 'show',\n DROPUP: 'dropup',\n DROPRIGHT: 'dropright',\n DROPLEFT: 'dropleft',\n MENURIGHT: 'dropdown-menu-right',\n MENULEFT: 'dropdown-menu-left',\n POSITION_STATIC: 'position-static'\n };\n var Selector$4 = {\n DATA_TOGGLE: '[data-toggle=\"dropdown\"]',\n FORM_CHILD: '.dropdown form',\n MENU: '.dropdown-menu',\n NAVBAR_NAV: '.navbar-nav',\n VISIBLE_ITEMS: '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)'\n };\n var AttachmentMap = {\n TOP: 'top-start',\n TOPEND: 'top-end',\n BOTTOM: 'bottom-start',\n BOTTOMEND: 'bottom-end',\n RIGHT: 'right-start',\n RIGHTEND: 'right-end',\n LEFT: 'left-start',\n LEFTEND: 'left-end'\n };\n var Default$2 = {\n offset: 0,\n flip: true,\n boundary: 'scrollParent',\n reference: 'toggle',\n display: 'dynamic',\n popperConfig: null\n };\n var DefaultType$2 = {\n offset: '(number|string|function)',\n flip: 'boolean',\n boundary: '(string|element)',\n reference: '(string|element)',\n display: 'string',\n popperConfig: '(null|object)'\n };\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n var Dropdown =\n /*#__PURE__*/\n function () {\n function Dropdown(element, config) {\n this._element = element;\n this._popper = null;\n this._config = this._getConfig(config);\n this._menu = this._getMenuElement();\n this._inNavbar = this._detectNavbar();\n\n this._addEventListeners();\n } // Getters\n\n\n var _proto = Dropdown.prototype;\n\n // Public\n _proto.toggle = function toggle() {\n if (this._element.disabled || $(this._element).hasClass(ClassName$4.DISABLED)) {\n return;\n }\n\n var isActive = $(this._menu).hasClass(ClassName$4.SHOW);\n\n Dropdown._clearMenus();\n\n if (isActive) {\n return;\n }\n\n this.show(true);\n };\n\n _proto.show = function show(usePopper) {\n if (usePopper === void 0) {\n usePopper = false;\n }\n\n if (this._element.disabled || $(this._element).hasClass(ClassName$4.DISABLED) || $(this._menu).hasClass(ClassName$4.SHOW)) {\n return;\n }\n\n var relatedTarget = {\n relatedTarget: this._element\n };\n var showEvent = $.Event(Event$4.SHOW, relatedTarget);\n\n var parent = Dropdown._getParentFromElement(this._element);\n\n $(parent).trigger(showEvent);\n\n if (showEvent.isDefaultPrevented()) {\n return;\n } // Disable totally Popper.js for Dropdown in Navbar\n\n\n if (!this._inNavbar && usePopper) {\n /**\n * Check for Popper dependency\n * Popper - https://popper.js.org\n */\n if (typeof Popper === 'undefined') {\n throw new TypeError('Bootstrap\\'s dropdowns require Popper.js (https://popper.js.org/)');\n }\n\n var referenceElement = this._element;\n\n if (this._config.reference === 'parent') {\n referenceElement = parent;\n } else if (Util.isElement(this._config.reference)) {\n referenceElement = this._config.reference; // Check if it's jQuery element\n\n if (typeof this._config.reference.jquery !== 'undefined') {\n referenceElement = this._config.reference[0];\n }\n } // If boundary is not `scrollParent`, then set position to `static`\n // to allow the menu to \"escape\" the scroll parent's boundaries\n // https://github.com/twbs/bootstrap/issues/24251\n\n\n if (this._config.boundary !== 'scrollParent') {\n $(parent).addClass(ClassName$4.POSITION_STATIC);\n }\n\n this._popper = new Popper(referenceElement, this._menu, this._getPopperConfig());\n } // If this is a touch-enabled device we add extra\n // empty mouseover listeners to the body's immediate children;\n // only needed because of broken event delegation on iOS\n // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n\n\n if ('ontouchstart' in document.documentElement && $(parent).closest(Selector$4.NAVBAR_NAV).length === 0) {\n $(document.body).children().on('mouseover', null, $.noop);\n }\n\n this._element.focus();\n\n this._element.setAttribute('aria-expanded', true);\n\n $(this._menu).toggleClass(ClassName$4.SHOW);\n $(parent).toggleClass(ClassName$4.SHOW).trigger($.Event(Event$4.SHOWN, relatedTarget));\n };\n\n _proto.hide = function hide() {\n if (this._element.disabled || $(this._element).hasClass(ClassName$4.DISABLED) || !$(this._menu).hasClass(ClassName$4.SHOW)) {\n return;\n }\n\n var relatedTarget = {\n relatedTarget: this._element\n };\n var hideEvent = $.Event(Event$4.HIDE, relatedTarget);\n\n var parent = Dropdown._getParentFromElement(this._element);\n\n $(parent).trigger(hideEvent);\n\n if (hideEvent.isDefaultPrevented()) {\n return;\n }\n\n if (this._popper) {\n this._popper.destroy();\n }\n\n $(this._menu).toggleClass(ClassName$4.SHOW);\n $(parent).toggleClass(ClassName$4.SHOW).trigger($.Event(Event$4.HIDDEN, relatedTarget));\n };\n\n _proto.dispose = function dispose() {\n $.removeData(this._element, DATA_KEY$4);\n $(this._element).off(EVENT_KEY$4);\n this._element = null;\n this._menu = null;\n\n if (this._popper !== null) {\n this._popper.destroy();\n\n this._popper = null;\n }\n };\n\n _proto.update = function update() {\n this._inNavbar = this._detectNavbar();\n\n if (this._popper !== null) {\n this._popper.scheduleUpdate();\n }\n } // Private\n ;\n\n _proto._addEventListeners = function _addEventListeners() {\n var _this = this;\n\n $(this._element).on(Event$4.CLICK, function (event) {\n event.preventDefault();\n event.stopPropagation();\n\n _this.toggle();\n });\n };\n\n _proto._getConfig = function _getConfig(config) {\n config = _objectSpread2({}, this.constructor.Default, {}, $(this._element).data(), {}, config);\n Util.typeCheckConfig(NAME$4, config, this.constructor.DefaultType);\n return config;\n };\n\n _proto._getMenuElement = function _getMenuElement() {\n if (!this._menu) {\n var parent = Dropdown._getParentFromElement(this._element);\n\n if (parent) {\n this._menu = parent.querySelector(Selector$4.MENU);\n }\n }\n\n return this._menu;\n };\n\n _proto._getPlacement = function _getPlacement() {\n var $parentDropdown = $(this._element.parentNode);\n var placement = AttachmentMap.BOTTOM; // Handle dropup\n\n if ($parentDropdown.hasClass(ClassName$4.DROPUP)) {\n placement = AttachmentMap.TOP;\n\n if ($(this._menu).hasClass(ClassName$4.MENURIGHT)) {\n placement = AttachmentMap.TOPEND;\n }\n } else if ($parentDropdown.hasClass(ClassName$4.DROPRIGHT)) {\n placement = AttachmentMap.RIGHT;\n } else if ($parentDropdown.hasClass(ClassName$4.DROPLEFT)) {\n placement = AttachmentMap.LEFT;\n } else if ($(this._menu).hasClass(ClassName$4.MENURIGHT)) {\n placement = AttachmentMap.BOTTOMEND;\n }\n\n return placement;\n };\n\n _proto._detectNavbar = function _detectNavbar() {\n return $(this._element).closest('.navbar').length > 0;\n };\n\n _proto._getOffset = function _getOffset() {\n var _this2 = this;\n\n var offset = {};\n\n if (typeof this._config.offset === 'function') {\n offset.fn = function (data) {\n data.offsets = _objectSpread2({}, data.offsets, {}, _this2._config.offset(data.offsets, _this2._element) || {});\n return data;\n };\n } else {\n offset.offset = this._config.offset;\n }\n\n return offset;\n };\n\n _proto._getPopperConfig = function _getPopperConfig() {\n var popperConfig = {\n placement: this._getPlacement(),\n modifiers: {\n offset: this._getOffset(),\n flip: {\n enabled: this._config.flip\n },\n preventOverflow: {\n boundariesElement: this._config.boundary\n }\n }\n }; // Disable Popper.js if we have a static display\n\n if (this._config.display === 'static') {\n popperConfig.modifiers.applyStyle = {\n enabled: false\n };\n }\n\n return _objectSpread2({}, popperConfig, {}, this._config.popperConfig);\n } // Static\n ;\n\n Dropdown._jQueryInterface = function _jQueryInterface(config) {\n return this.each(function () {\n var data = $(this).data(DATA_KEY$4);\n\n var _config = typeof config === 'object' ? config : null;\n\n if (!data) {\n data = new Dropdown(this, _config);\n $(this).data(DATA_KEY$4, data);\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n }\n\n data[config]();\n }\n });\n };\n\n Dropdown._clearMenus = function _clearMenus(event) {\n if (event && (event.which === RIGHT_MOUSE_BUTTON_WHICH || event.type === 'keyup' && event.which !== TAB_KEYCODE)) {\n return;\n }\n\n var toggles = [].slice.call(document.querySelectorAll(Selector$4.DATA_TOGGLE));\n\n for (var i = 0, len = toggles.length; i < len; i++) {\n var parent = Dropdown._getParentFromElement(toggles[i]);\n\n var context = $(toggles[i]).data(DATA_KEY$4);\n var relatedTarget = {\n relatedTarget: toggles[i]\n };\n\n if (event && event.type === 'click') {\n relatedTarget.clickEvent = event;\n }\n\n if (!context) {\n continue;\n }\n\n var dropdownMenu = context._menu;\n\n if (!$(parent).hasClass(ClassName$4.SHOW)) {\n continue;\n }\n\n if (event && (event.type === 'click' && /input|textarea/i.test(event.target.tagName) || event.type === 'keyup' && event.which === TAB_KEYCODE) && $.contains(parent, event.target)) {\n continue;\n }\n\n var hideEvent = $.Event(Event$4.HIDE, relatedTarget);\n $(parent).trigger(hideEvent);\n\n if (hideEvent.isDefaultPrevented()) {\n continue;\n } // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n\n\n if ('ontouchstart' in document.documentElement) {\n $(document.body).children().off('mouseover', null, $.noop);\n }\n\n toggles[i].setAttribute('aria-expanded', 'false');\n\n if (context._popper) {\n context._popper.destroy();\n }\n\n $(dropdownMenu).removeClass(ClassName$4.SHOW);\n $(parent).removeClass(ClassName$4.SHOW).trigger($.Event(Event$4.HIDDEN, relatedTarget));\n }\n };\n\n Dropdown._getParentFromElement = function _getParentFromElement(element) {\n var parent;\n var selector = Util.getSelectorFromElement(element);\n\n if (selector) {\n parent = document.querySelector(selector);\n }\n\n return parent || element.parentNode;\n } // eslint-disable-next-line complexity\n ;\n\n Dropdown._dataApiKeydownHandler = function _dataApiKeydownHandler(event) {\n // If not input/textarea:\n // - And not a key in REGEXP_KEYDOWN => not a dropdown command\n // If input/textarea:\n // - If space key => not a dropdown command\n // - If key is other than escape\n // - If key is not up or down => not a dropdown command\n // - If trigger inside the menu => not a dropdown command\n if (/input|textarea/i.test(event.target.tagName) ? event.which === SPACE_KEYCODE || event.which !== ESCAPE_KEYCODE && (event.which !== ARROW_DOWN_KEYCODE && event.which !== ARROW_UP_KEYCODE || $(event.target).closest(Selector$4.MENU).length) : !REGEXP_KEYDOWN.test(event.which)) {\n return;\n }\n\n event.preventDefault();\n event.stopPropagation();\n\n if (this.disabled || $(this).hasClass(ClassName$4.DISABLED)) {\n return;\n }\n\n var parent = Dropdown._getParentFromElement(this);\n\n var isActive = $(parent).hasClass(ClassName$4.SHOW);\n\n if (!isActive && event.which === ESCAPE_KEYCODE) {\n return;\n }\n\n if (!isActive || isActive && (event.which === ESCAPE_KEYCODE || event.which === SPACE_KEYCODE)) {\n if (event.which === ESCAPE_KEYCODE) {\n var toggle = parent.querySelector(Selector$4.DATA_TOGGLE);\n $(toggle).trigger('focus');\n }\n\n $(this).trigger('click');\n return;\n }\n\n var items = [].slice.call(parent.querySelectorAll(Selector$4.VISIBLE_ITEMS)).filter(function (item) {\n return $(item).is(':visible');\n });\n\n if (items.length === 0) {\n return;\n }\n\n var index = items.indexOf(event.target);\n\n if (event.which === ARROW_UP_KEYCODE && index > 0) {\n // Up\n index--;\n }\n\n if (event.which === ARROW_DOWN_KEYCODE && index < items.length - 1) {\n // Down\n index++;\n }\n\n if (index < 0) {\n index = 0;\n }\n\n items[index].focus();\n };\n\n _createClass(Dropdown, null, [{\n key: \"VERSION\",\n get: function get() {\n return VERSION$4;\n }\n }, {\n key: \"Default\",\n get: function get() {\n return Default$2;\n }\n }, {\n key: \"DefaultType\",\n get: function get() {\n return DefaultType$2;\n }\n }]);\n\n return Dropdown;\n }();\n /**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n\n $(document).on(Event$4.KEYDOWN_DATA_API, Selector$4.DATA_TOGGLE, Dropdown._dataApiKeydownHandler).on(Event$4.KEYDOWN_DATA_API, Selector$4.MENU, Dropdown._dataApiKeydownHandler).on(Event$4.CLICK_DATA_API + \" \" + Event$4.KEYUP_DATA_API, Dropdown._clearMenus).on(Event$4.CLICK_DATA_API, Selector$4.DATA_TOGGLE, function (event) {\n event.preventDefault();\n event.stopPropagation();\n\n Dropdown._jQueryInterface.call($(this), 'toggle');\n }).on(Event$4.CLICK_DATA_API, Selector$4.FORM_CHILD, function (e) {\n e.stopPropagation();\n });\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n $.fn[NAME$4] = Dropdown._jQueryInterface;\n $.fn[NAME$4].Constructor = Dropdown;\n\n $.fn[NAME$4].noConflict = function () {\n $.fn[NAME$4] = JQUERY_NO_CONFLICT$4;\n return Dropdown._jQueryInterface;\n };\n\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n var NAME$5 = 'modal';\n var VERSION$5 = '4.4.1';\n var DATA_KEY$5 = 'bs.modal';\n var EVENT_KEY$5 = \".\" + DATA_KEY$5;\n var DATA_API_KEY$5 = '.data-api';\n var JQUERY_NO_CONFLICT$5 = $.fn[NAME$5];\n var ESCAPE_KEYCODE$1 = 27; // KeyboardEvent.which value for Escape (Esc) key\n\n var Default$3 = {\n backdrop: true,\n keyboard: true,\n focus: true,\n show: true\n };\n var DefaultType$3 = {\n backdrop: '(boolean|string)',\n keyboard: 'boolean',\n focus: 'boolean',\n show: 'boolean'\n };\n var Event$5 = {\n HIDE: \"hide\" + EVENT_KEY$5,\n HIDE_PREVENTED: \"hidePrevented\" + EVENT_KEY$5,\n HIDDEN: \"hidden\" + EVENT_KEY$5,\n SHOW: \"show\" + EVENT_KEY$5,\n SHOWN: \"shown\" + EVENT_KEY$5,\n FOCUSIN: \"focusin\" + EVENT_KEY$5,\n RESIZE: \"resize\" + EVENT_KEY$5,\n CLICK_DISMISS: \"click.dismiss\" + EVENT_KEY$5,\n KEYDOWN_DISMISS: \"keydown.dismiss\" + EVENT_KEY$5,\n MOUSEUP_DISMISS: \"mouseup.dismiss\" + EVENT_KEY$5,\n MOUSEDOWN_DISMISS: \"mousedown.dismiss\" + EVENT_KEY$5,\n CLICK_DATA_API: \"click\" + EVENT_KEY$5 + DATA_API_KEY$5\n };\n var ClassName$5 = {\n SCROLLABLE: 'modal-dialog-scrollable',\n SCROLLBAR_MEASURER: 'modal-scrollbar-measure',\n BACKDROP: 'modal-backdrop',\n OPEN: 'modal-open',\n FADE: 'fade',\n SHOW: 'show',\n STATIC: 'modal-static'\n };\n var Selector$5 = {\n DIALOG: '.modal-dialog',\n MODAL_BODY: '.modal-body',\n DATA_TOGGLE: '[data-toggle=\"modal\"]',\n DATA_DISMISS: '[data-dismiss=\"modal\"]',\n FIXED_CONTENT: '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top',\n STICKY_CONTENT: '.sticky-top'\n };\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n var Modal =\n /*#__PURE__*/\n function () {\n function Modal(element, config) {\n this._config = this._getConfig(config);\n this._element = element;\n this._dialog = element.querySelector(Selector$5.DIALOG);\n this._backdrop = null;\n this._isShown = false;\n this._isBodyOverflowing = false;\n this._ignoreBackdropClick = false;\n this._isTransitioning = false;\n this._scrollbarWidth = 0;\n } // Getters\n\n\n var _proto = Modal.prototype;\n\n // Public\n _proto.toggle = function toggle(relatedTarget) {\n return this._isShown ? this.hide() : this.show(relatedTarget);\n };\n\n _proto.show = function show(relatedTarget) {\n var _this = this;\n\n if (this._isShown || this._isTransitioning) {\n return;\n }\n\n if ($(this._element).hasClass(ClassName$5.FADE)) {\n this._isTransitioning = true;\n }\n\n var showEvent = $.Event(Event$5.SHOW, {\n relatedTarget: relatedTarget\n });\n $(this._element).trigger(showEvent);\n\n if (this._isShown || showEvent.isDefaultPrevented()) {\n return;\n }\n\n this._isShown = true;\n\n this._checkScrollbar();\n\n this._setScrollbar();\n\n this._adjustDialog();\n\n this._setEscapeEvent();\n\n this._setResizeEvent();\n\n $(this._element).on(Event$5.CLICK_DISMISS, Selector$5.DATA_DISMISS, function (event) {\n return _this.hide(event);\n });\n $(this._dialog).on(Event$5.MOUSEDOWN_DISMISS, function () {\n $(_this._element).one(Event$5.MOUSEUP_DISMISS, function (event) {\n if ($(event.target).is(_this._element)) {\n _this._ignoreBackdropClick = true;\n }\n });\n });\n\n this._showBackdrop(function () {\n return _this._showElement(relatedTarget);\n });\n };\n\n _proto.hide = function hide(event) {\n var _this2 = this;\n\n if (event) {\n event.preventDefault();\n }\n\n if (!this._isShown || this._isTransitioning) {\n return;\n }\n\n var hideEvent = $.Event(Event$5.HIDE);\n $(this._element).trigger(hideEvent);\n\n if (!this._isShown || hideEvent.isDefaultPrevented()) {\n return;\n }\n\n this._isShown = false;\n var transition = $(this._element).hasClass(ClassName$5.FADE);\n\n if (transition) {\n this._isTransitioning = true;\n }\n\n this._setEscapeEvent();\n\n this._setResizeEvent();\n\n $(document).off(Event$5.FOCUSIN);\n $(this._element).removeClass(ClassName$5.SHOW);\n $(this._element).off(Event$5.CLICK_DISMISS);\n $(this._dialog).off(Event$5.MOUSEDOWN_DISMISS);\n\n if (transition) {\n var transitionDuration = Util.getTransitionDurationFromElement(this._element);\n $(this._element).one(Util.TRANSITION_END, function (event) {\n return _this2._hideModal(event);\n }).emulateTransitionEnd(transitionDuration);\n } else {\n this._hideModal();\n }\n };\n\n _proto.dispose = function dispose() {\n [window, this._element, this._dialog].forEach(function (htmlElement) {\n return $(htmlElement).off(EVENT_KEY$5);\n });\n /**\n * `document` has 2 events `Event.FOCUSIN` and `Event.CLICK_DATA_API`\n * Do not move `document` in `htmlElements` array\n * It will remove `Event.CLICK_DATA_API` event that should remain\n */\n\n $(document).off(Event$5.FOCUSIN);\n $.removeData(this._element, DATA_KEY$5);\n this._config = null;\n this._element = null;\n this._dialog = null;\n this._backdrop = null;\n this._isShown = null;\n this._isBodyOverflowing = null;\n this._ignoreBackdropClick = null;\n this._isTransitioning = null;\n this._scrollbarWidth = null;\n };\n\n _proto.handleUpdate = function handleUpdate() {\n this._adjustDialog();\n } // Private\n ;\n\n _proto._getConfig = function _getConfig(config) {\n config = _objectSpread2({}, Default$3, {}, config);\n Util.typeCheckConfig(NAME$5, config, DefaultType$3);\n return config;\n };\n\n _proto._triggerBackdropTransition = function _triggerBackdropTransition() {\n var _this3 = this;\n\n if (this._config.backdrop === 'static') {\n var hideEventPrevented = $.Event(Event$5.HIDE_PREVENTED);\n $(this._element).trigger(hideEventPrevented);\n\n if (hideEventPrevented.defaultPrevented) {\n return;\n }\n\n this._element.classList.add(ClassName$5.STATIC);\n\n var modalTransitionDuration = Util.getTransitionDurationFromElement(this._element);\n $(this._element).one(Util.TRANSITION_END, function () {\n _this3._element.classList.remove(ClassName$5.STATIC);\n }).emulateTransitionEnd(modalTransitionDuration);\n\n this._element.focus();\n } else {\n this.hide();\n }\n };\n\n _proto._showElement = function _showElement(relatedTarget) {\n var _this4 = this;\n\n var transition = $(this._element).hasClass(ClassName$5.FADE);\n var modalBody = this._dialog ? this._dialog.querySelector(Selector$5.MODAL_BODY) : null;\n\n if (!this._element.parentNode || this._element.parentNode.nodeType !== Node.ELEMENT_NODE) {\n // Don't move modal's DOM position\n document.body.appendChild(this._element);\n }\n\n this._element.style.display = 'block';\n\n this._element.removeAttribute('aria-hidden');\n\n this._element.setAttribute('aria-modal', true);\n\n if ($(this._dialog).hasClass(ClassName$5.SCROLLABLE) && modalBody) {\n modalBody.scrollTop = 0;\n } else {\n this._element.scrollTop = 0;\n }\n\n if (transition) {\n Util.reflow(this._element);\n }\n\n $(this._element).addClass(ClassName$5.SHOW);\n\n if (this._config.focus) {\n this._enforceFocus();\n }\n\n var shownEvent = $.Event(Event$5.SHOWN, {\n relatedTarget: relatedTarget\n });\n\n var transitionComplete = function transitionComplete() {\n if (_this4._config.focus) {\n _this4._element.focus();\n }\n\n _this4._isTransitioning = false;\n $(_this4._element).trigger(shownEvent);\n };\n\n if (transition) {\n var transitionDuration = Util.getTransitionDurationFromElement(this._dialog);\n $(this._dialog).one(Util.TRANSITION_END, transitionComplete).emulateTransitionEnd(transitionDuration);\n } else {\n transitionComplete();\n }\n };\n\n _proto._enforceFocus = function _enforceFocus() {\n var _this5 = this;\n\n $(document).off(Event$5.FOCUSIN) // Guard against infinite focus loop\n .on(Event$5.FOCUSIN, function (event) {\n if (document !== event.target && _this5._element !== event.target && $(_this5._element).has(event.target).length === 0) {\n _this5._element.focus();\n }\n });\n };\n\n _proto._setEscapeEvent = function _setEscapeEvent() {\n var _this6 = this;\n\n if (this._isShown && this._config.keyboard) {\n $(this._element).on(Event$5.KEYDOWN_DISMISS, function (event) {\n if (event.which === ESCAPE_KEYCODE$1) {\n _this6._triggerBackdropTransition();\n }\n });\n } else if (!this._isShown) {\n $(this._element).off(Event$5.KEYDOWN_DISMISS);\n }\n };\n\n _proto._setResizeEvent = function _setResizeEvent() {\n var _this7 = this;\n\n if (this._isShown) {\n $(window).on(Event$5.RESIZE, function (event) {\n return _this7.handleUpdate(event);\n });\n } else {\n $(window).off(Event$5.RESIZE);\n }\n };\n\n _proto._hideModal = function _hideModal() {\n var _this8 = this;\n\n this._element.style.display = 'none';\n\n this._element.setAttribute('aria-hidden', true);\n\n this._element.removeAttribute('aria-modal');\n\n this._isTransitioning = false;\n\n this._showBackdrop(function () {\n $(document.body).removeClass(ClassName$5.OPEN);\n\n _this8._resetAdjustments();\n\n _this8._resetScrollbar();\n\n $(_this8._element).trigger(Event$5.HIDDEN);\n });\n };\n\n _proto._removeBackdrop = function _removeBackdrop() {\n if (this._backdrop) {\n $(this._backdrop).remove();\n this._backdrop = null;\n }\n };\n\n _proto._showBackdrop = function _showBackdrop(callback) {\n var _this9 = this;\n\n var animate = $(this._element).hasClass(ClassName$5.FADE) ? ClassName$5.FADE : '';\n\n if (this._isShown && this._config.backdrop) {\n this._backdrop = document.createElement('div');\n this._backdrop.className = ClassName$5.BACKDROP;\n\n if (animate) {\n this._backdrop.classList.add(animate);\n }\n\n $(this._backdrop).appendTo(document.body);\n $(this._element).on(Event$5.CLICK_DISMISS, function (event) {\n if (_this9._ignoreBackdropClick) {\n _this9._ignoreBackdropClick = false;\n return;\n }\n\n if (event.target !== event.currentTarget) {\n return;\n }\n\n _this9._triggerBackdropTransition();\n });\n\n if (animate) {\n Util.reflow(this._backdrop);\n }\n\n $(this._backdrop).addClass(ClassName$5.SHOW);\n\n if (!callback) {\n return;\n }\n\n if (!animate) {\n callback();\n return;\n }\n\n var backdropTransitionDuration = Util.getTransitionDurationFromElement(this._backdrop);\n $(this._backdrop).one(Util.TRANSITION_END, callback).emulateTransitionEnd(backdropTransitionDuration);\n } else if (!this._isShown && this._backdrop) {\n $(this._backdrop).removeClass(ClassName$5.SHOW);\n\n var callbackRemove = function callbackRemove() {\n _this9._removeBackdrop();\n\n if (callback) {\n callback();\n }\n };\n\n if ($(this._element).hasClass(ClassName$5.FADE)) {\n var _backdropTransitionDuration = Util.getTransitionDurationFromElement(this._backdrop);\n\n $(this._backdrop).one(Util.TRANSITION_END, callbackRemove).emulateTransitionEnd(_backdropTransitionDuration);\n } else {\n callbackRemove();\n }\n } else if (callback) {\n callback();\n }\n } // ----------------------------------------------------------------------\n // the following methods are used to handle overflowing modals\n // todo (fat): these should probably be refactored out of modal.js\n // ----------------------------------------------------------------------\n ;\n\n _proto._adjustDialog = function _adjustDialog() {\n var isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;\n\n if (!this._isBodyOverflowing && isModalOverflowing) {\n this._element.style.paddingLeft = this._scrollbarWidth + \"px\";\n }\n\n if (this._isBodyOverflowing && !isModalOverflowing) {\n this._element.style.paddingRight = this._scrollbarWidth + \"px\";\n }\n };\n\n _proto._resetAdjustments = function _resetAdjustments() {\n this._element.style.paddingLeft = '';\n this._element.style.paddingRight = '';\n };\n\n _proto._checkScrollbar = function _checkScrollbar() {\n var rect = document.body.getBoundingClientRect();\n this._isBodyOverflowing = rect.left + rect.right < window.innerWidth;\n this._scrollbarWidth = this._getScrollbarWidth();\n };\n\n _proto._setScrollbar = function _setScrollbar() {\n var _this10 = this;\n\n if (this._isBodyOverflowing) {\n // Note: DOMNode.style.paddingRight returns the actual value or '' if not set\n // while $(DOMNode).css('padding-right') returns the calculated value or 0 if not set\n var fixedContent = [].slice.call(document.querySelectorAll(Selector$5.FIXED_CONTENT));\n var stickyContent = [].slice.call(document.querySelectorAll(Selector$5.STICKY_CONTENT)); // Adjust fixed content padding\n\n $(fixedContent).each(function (index, element) {\n var actualPadding = element.style.paddingRight;\n var calculatedPadding = $(element).css('padding-right');\n $(element).data('padding-right', actualPadding).css('padding-right', parseFloat(calculatedPadding) + _this10._scrollbarWidth + \"px\");\n }); // Adjust sticky content margin\n\n $(stickyContent).each(function (index, element) {\n var actualMargin = element.style.marginRight;\n var calculatedMargin = $(element).css('margin-right');\n $(element).data('margin-right', actualMargin).css('margin-right', parseFloat(calculatedMargin) - _this10._scrollbarWidth + \"px\");\n }); // Adjust body padding\n\n var actualPadding = document.body.style.paddingRight;\n var calculatedPadding = $(document.body).css('padding-right');\n $(document.body).data('padding-right', actualPadding).css('padding-right', parseFloat(calculatedPadding) + this._scrollbarWidth + \"px\");\n }\n\n $(document.body).addClass(ClassName$5.OPEN);\n };\n\n _proto._resetScrollbar = function _resetScrollbar() {\n // Restore fixed content padding\n var fixedContent = [].slice.call(document.querySelectorAll(Selector$5.FIXED_CONTENT));\n $(fixedContent).each(function (index, element) {\n var padding = $(element).data('padding-right');\n $(element).removeData('padding-right');\n element.style.paddingRight = padding ? padding : '';\n }); // Restore sticky content\n\n var elements = [].slice.call(document.querySelectorAll(\"\" + Selector$5.STICKY_CONTENT));\n $(elements).each(function (index, element) {\n var margin = $(element).data('margin-right');\n\n if (typeof margin !== 'undefined') {\n $(element).css('margin-right', margin).removeData('margin-right');\n }\n }); // Restore body padding\n\n var padding = $(document.body).data('padding-right');\n $(document.body).removeData('padding-right');\n document.body.style.paddingRight = padding ? padding : '';\n };\n\n _proto._getScrollbarWidth = function _getScrollbarWidth() {\n // thx d.walsh\n var scrollDiv = document.createElement('div');\n scrollDiv.className = ClassName$5.SCROLLBAR_MEASURER;\n document.body.appendChild(scrollDiv);\n var scrollbarWidth = scrollDiv.getBoundingClientRect().width - scrollDiv.clientWidth;\n document.body.removeChild(scrollDiv);\n return scrollbarWidth;\n } // Static\n ;\n\n Modal._jQueryInterface = function _jQueryInterface(config, relatedTarget) {\n return this.each(function () {\n var data = $(this).data(DATA_KEY$5);\n\n var _config = _objectSpread2({}, Default$3, {}, $(this).data(), {}, typeof config === 'object' && config ? config : {});\n\n if (!data) {\n data = new Modal(this, _config);\n $(this).data(DATA_KEY$5, data);\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n }\n\n data[config](relatedTarget);\n } else if (_config.show) {\n data.show(relatedTarget);\n }\n });\n };\n\n _createClass(Modal, null, [{\n key: \"VERSION\",\n get: function get() {\n return VERSION$5;\n }\n }, {\n key: \"Default\",\n get: function get() {\n return Default$3;\n }\n }]);\n\n return Modal;\n }();\n /**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\n\n $(document).on(Event$5.CLICK_DATA_API, Selector$5.DATA_TOGGLE, function (event) {\n var _this11 = this;\n\n var target;\n var selector = Util.getSelectorFromElement(this);\n\n if (selector) {\n target = document.querySelector(selector);\n }\n\n var config = $(target).data(DATA_KEY$5) ? 'toggle' : _objectSpread2({}, $(target).data(), {}, $(this).data());\n\n if (this.tagName === 'A' || this.tagName === 'AREA') {\n event.preventDefault();\n }\n\n var $target = $(target).one(Event$5.SHOW, function (showEvent) {\n if (showEvent.isDefaultPrevented()) {\n // Only register focus restorer if modal will actually get shown\n return;\n }\n\n $target.one(Event$5.HIDDEN, function () {\n if ($(_this11).is(':visible')) {\n _this11.focus();\n }\n });\n });\n\n Modal._jQueryInterface.call($(target), config, this);\n });\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n $.fn[NAME$5] = Modal._jQueryInterface;\n $.fn[NAME$5].Constructor = Modal;\n\n $.fn[NAME$5].noConflict = function () {\n $.fn[NAME$5] = JQUERY_NO_CONFLICT$5;\n return Modal._jQueryInterface;\n };\n\n /**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.4.1): tools/sanitizer.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n var uriAttrs = ['background', 'cite', 'href', 'itemtype', 'longdesc', 'poster', 'src', 'xlink:href'];\n var ARIA_ATTRIBUTE_PATTERN = /^aria-[\\w-]*$/i;\n var DefaultWhitelist = {\n // Global attributes allowed on any supplied element below.\n '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],\n a: ['target', 'href', 'title', 'rel'],\n area: [],\n b: [],\n br: [],\n col: [],\n code: [],\n div: [],\n em: [],\n hr: [],\n h1: [],\n h2: [],\n h3: [],\n h4: [],\n h5: [],\n h6: [],\n i: [],\n img: ['src', 'alt', 'title', 'width', 'height'],\n li: [],\n ol: [],\n p: [],\n pre: [],\n s: [],\n small: [],\n span: [],\n sub: [],\n sup: [],\n strong: [],\n u: [],\n ul: []\n };\n /**\n * A pattern that recognizes a commonly useful subset of URLs that are safe.\n *\n * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts\n */\n\n var SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file):|[^&:/?#]*(?:[/?#]|$))/gi;\n /**\n * A pattern that matches safe data URLs. Only matches image, video and audio types.\n *\n * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts\n */\n\n var DATA_URL_PATTERN = /^data:(?:image\\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\\/(?:mpeg|mp4|ogg|webm)|audio\\/(?:mp3|oga|ogg|opus));base64,[a-z0-9+/]+=*$/i;\n\n function allowedAttribute(attr, allowedAttributeList) {\n var attrName = attr.nodeName.toLowerCase();\n\n if (allowedAttributeList.indexOf(attrName) !== -1) {\n if (uriAttrs.indexOf(attrName) !== -1) {\n return Boolean(attr.nodeValue.match(SAFE_URL_PATTERN) || attr.nodeValue.match(DATA_URL_PATTERN));\n }\n\n return true;\n }\n\n var regExp = allowedAttributeList.filter(function (attrRegex) {\n return attrRegex instanceof RegExp;\n }); // Check if a regular expression validates the attribute.\n\n for (var i = 0, l = regExp.length; i < l; i++) {\n if (attrName.match(regExp[i])) {\n return true;\n }\n }\n\n return false;\n }\n\n function sanitizeHtml(unsafeHtml, whiteList, sanitizeFn) {\n if (unsafeHtml.length === 0) {\n return unsafeHtml;\n }\n\n if (sanitizeFn && typeof sanitizeFn === 'function') {\n return sanitizeFn(unsafeHtml);\n }\n\n var domParser = new window.DOMParser();\n var createdDocument = domParser.parseFromString(unsafeHtml, 'text/html');\n var whitelistKeys = Object.keys(whiteList);\n var elements = [].slice.call(createdDocument.body.querySelectorAll('*'));\n\n var _loop = function _loop(i, len) {\n var el = elements[i];\n var elName = el.nodeName.toLowerCase();\n\n if (whitelistKeys.indexOf(el.nodeName.toLowerCase()) === -1) {\n el.parentNode.removeChild(el);\n return \"continue\";\n }\n\n var attributeList = [].slice.call(el.attributes);\n var whitelistedAttributes = [].concat(whiteList['*'] || [], whiteList[elName] || []);\n attributeList.forEach(function (attr) {\n if (!allowedAttribute(attr, whitelistedAttributes)) {\n el.removeAttribute(attr.nodeName);\n }\n });\n };\n\n for (var i = 0, len = elements.length; i < len; i++) {\n var _ret = _loop(i);\n\n if (_ret === \"continue\") continue;\n }\n\n return createdDocument.body.innerHTML;\n }\n\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n var NAME$6 = 'tooltip';\n var VERSION$6 = '4.4.1';\n var DATA_KEY$6 = 'bs.tooltip';\n var EVENT_KEY$6 = \".\" + DATA_KEY$6;\n var JQUERY_NO_CONFLICT$6 = $.fn[NAME$6];\n var CLASS_PREFIX = 'bs-tooltip';\n var BSCLS_PREFIX_REGEX = new RegExp(\"(^|\\\\s)\" + CLASS_PREFIX + \"\\\\S+\", 'g');\n var DISALLOWED_ATTRIBUTES = ['sanitize', 'whiteList', 'sanitizeFn'];\n var DefaultType$4 = {\n animation: 'boolean',\n template: 'string',\n title: '(string|element|function)',\n trigger: 'string',\n delay: '(number|object)',\n html: 'boolean',\n selector: '(string|boolean)',\n placement: '(string|function)',\n offset: '(number|string|function)',\n container: '(string|element|boolean)',\n fallbackPlacement: '(string|array)',\n boundary: '(string|element)',\n sanitize: 'boolean',\n sanitizeFn: '(null|function)',\n whiteList: 'object',\n popperConfig: '(null|object)'\n };\n var AttachmentMap$1 = {\n AUTO: 'auto',\n TOP: 'top',\n RIGHT: 'right',\n BOTTOM: 'bottom',\n LEFT: 'left'\n };\n var Default$4 = {\n animation: true,\n template: '
    ' + '
    ' + '
    ',\n trigger: 'hover focus',\n title: '',\n delay: 0,\n html: false,\n selector: false,\n placement: 'top',\n offset: 0,\n container: false,\n fallbackPlacement: 'flip',\n boundary: 'scrollParent',\n sanitize: true,\n sanitizeFn: null,\n whiteList: DefaultWhitelist,\n popperConfig: null\n };\n var HoverState = {\n SHOW: 'show',\n OUT: 'out'\n };\n var Event$6 = {\n HIDE: \"hide\" + EVENT_KEY$6,\n HIDDEN: \"hidden\" + EVENT_KEY$6,\n SHOW: \"show\" + EVENT_KEY$6,\n SHOWN: \"shown\" + EVENT_KEY$6,\n INSERTED: \"inserted\" + EVENT_KEY$6,\n CLICK: \"click\" + EVENT_KEY$6,\n FOCUSIN: \"focusin\" + EVENT_KEY$6,\n FOCUSOUT: \"focusout\" + EVENT_KEY$6,\n MOUSEENTER: \"mouseenter\" + EVENT_KEY$6,\n MOUSELEAVE: \"mouseleave\" + EVENT_KEY$6\n };\n var ClassName$6 = {\n FADE: 'fade',\n SHOW: 'show'\n };\n var Selector$6 = {\n TOOLTIP: '.tooltip',\n TOOLTIP_INNER: '.tooltip-inner',\n ARROW: '.arrow'\n };\n var Trigger = {\n HOVER: 'hover',\n FOCUS: 'focus',\n CLICK: 'click',\n MANUAL: 'manual'\n };\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n var Tooltip =\n /*#__PURE__*/\n function () {\n function Tooltip(element, config) {\n if (typeof Popper === 'undefined') {\n throw new TypeError('Bootstrap\\'s tooltips require Popper.js (https://popper.js.org/)');\n } // private\n\n\n this._isEnabled = true;\n this._timeout = 0;\n this._hoverState = '';\n this._activeTrigger = {};\n this._popper = null; // Protected\n\n this.element = element;\n this.config = this._getConfig(config);\n this.tip = null;\n\n this._setListeners();\n } // Getters\n\n\n var _proto = Tooltip.prototype;\n\n // Public\n _proto.enable = function enable() {\n this._isEnabled = true;\n };\n\n _proto.disable = function disable() {\n this._isEnabled = false;\n };\n\n _proto.toggleEnabled = function toggleEnabled() {\n this._isEnabled = !this._isEnabled;\n };\n\n _proto.toggle = function toggle(event) {\n if (!this._isEnabled) {\n return;\n }\n\n if (event) {\n var dataKey = this.constructor.DATA_KEY;\n var context = $(event.currentTarget).data(dataKey);\n\n if (!context) {\n context = new this.constructor(event.currentTarget, this._getDelegateConfig());\n $(event.currentTarget).data(dataKey, context);\n }\n\n context._activeTrigger.click = !context._activeTrigger.click;\n\n if (context._isWithActiveTrigger()) {\n context._enter(null, context);\n } else {\n context._leave(null, context);\n }\n } else {\n if ($(this.getTipElement()).hasClass(ClassName$6.SHOW)) {\n this._leave(null, this);\n\n return;\n }\n\n this._enter(null, this);\n }\n };\n\n _proto.dispose = function dispose() {\n clearTimeout(this._timeout);\n $.removeData(this.element, this.constructor.DATA_KEY);\n $(this.element).off(this.constructor.EVENT_KEY);\n $(this.element).closest('.modal').off('hide.bs.modal', this._hideModalHandler);\n\n if (this.tip) {\n $(this.tip).remove();\n }\n\n this._isEnabled = null;\n this._timeout = null;\n this._hoverState = null;\n this._activeTrigger = null;\n\n if (this._popper) {\n this._popper.destroy();\n }\n\n this._popper = null;\n this.element = null;\n this.config = null;\n this.tip = null;\n };\n\n _proto.show = function show() {\n var _this = this;\n\n if ($(this.element).css('display') === 'none') {\n throw new Error('Please use show on visible elements');\n }\n\n var showEvent = $.Event(this.constructor.Event.SHOW);\n\n if (this.isWithContent() && this._isEnabled) {\n $(this.element).trigger(showEvent);\n var shadowRoot = Util.findShadowRoot(this.element);\n var isInTheDom = $.contains(shadowRoot !== null ? shadowRoot : this.element.ownerDocument.documentElement, this.element);\n\n if (showEvent.isDefaultPrevented() || !isInTheDom) {\n return;\n }\n\n var tip = this.getTipElement();\n var tipId = Util.getUID(this.constructor.NAME);\n tip.setAttribute('id', tipId);\n this.element.setAttribute('aria-describedby', tipId);\n this.setContent();\n\n if (this.config.animation) {\n $(tip).addClass(ClassName$6.FADE);\n }\n\n var placement = typeof this.config.placement === 'function' ? this.config.placement.call(this, tip, this.element) : this.config.placement;\n\n var attachment = this._getAttachment(placement);\n\n this.addAttachmentClass(attachment);\n\n var container = this._getContainer();\n\n $(tip).data(this.constructor.DATA_KEY, this);\n\n if (!$.contains(this.element.ownerDocument.documentElement, this.tip)) {\n $(tip).appendTo(container);\n }\n\n $(this.element).trigger(this.constructor.Event.INSERTED);\n this._popper = new Popper(this.element, tip, this._getPopperConfig(attachment));\n $(tip).addClass(ClassName$6.SHOW); // If this is a touch-enabled device we add extra\n // empty mouseover listeners to the body's immediate children;\n // only needed because of broken event delegation on iOS\n // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n\n if ('ontouchstart' in document.documentElement) {\n $(document.body).children().on('mouseover', null, $.noop);\n }\n\n var complete = function complete() {\n if (_this.config.animation) {\n _this._fixTransition();\n }\n\n var prevHoverState = _this._hoverState;\n _this._hoverState = null;\n $(_this.element).trigger(_this.constructor.Event.SHOWN);\n\n if (prevHoverState === HoverState.OUT) {\n _this._leave(null, _this);\n }\n };\n\n if ($(this.tip).hasClass(ClassName$6.FADE)) {\n var transitionDuration = Util.getTransitionDurationFromElement(this.tip);\n $(this.tip).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);\n } else {\n complete();\n }\n }\n };\n\n _proto.hide = function hide(callback) {\n var _this2 = this;\n\n var tip = this.getTipElement();\n var hideEvent = $.Event(this.constructor.Event.HIDE);\n\n var complete = function complete() {\n if (_this2._hoverState !== HoverState.SHOW && tip.parentNode) {\n tip.parentNode.removeChild(tip);\n }\n\n _this2._cleanTipClass();\n\n _this2.element.removeAttribute('aria-describedby');\n\n $(_this2.element).trigger(_this2.constructor.Event.HIDDEN);\n\n if (_this2._popper !== null) {\n _this2._popper.destroy();\n }\n\n if (callback) {\n callback();\n }\n };\n\n $(this.element).trigger(hideEvent);\n\n if (hideEvent.isDefaultPrevented()) {\n return;\n }\n\n $(tip).removeClass(ClassName$6.SHOW); // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n\n if ('ontouchstart' in document.documentElement) {\n $(document.body).children().off('mouseover', null, $.noop);\n }\n\n this._activeTrigger[Trigger.CLICK] = false;\n this._activeTrigger[Trigger.FOCUS] = false;\n this._activeTrigger[Trigger.HOVER] = false;\n\n if ($(this.tip).hasClass(ClassName$6.FADE)) {\n var transitionDuration = Util.getTransitionDurationFromElement(tip);\n $(tip).one(Util.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration);\n } else {\n complete();\n }\n\n this._hoverState = '';\n };\n\n _proto.update = function update() {\n if (this._popper !== null) {\n this._popper.scheduleUpdate();\n }\n } // Protected\n ;\n\n _proto.isWithContent = function isWithContent() {\n return Boolean(this.getTitle());\n };\n\n _proto.addAttachmentClass = function addAttachmentClass(attachment) {\n $(this.getTipElement()).addClass(CLASS_PREFIX + \"-\" + attachment);\n };\n\n _proto.getTipElement = function getTipElement() {\n this.tip = this.tip || $(this.config.template)[0];\n return this.tip;\n };\n\n _proto.setContent = function setContent() {\n var tip = this.getTipElement();\n this.setElementContent($(tip.querySelectorAll(Selector$6.TOOLTIP_INNER)), this.getTitle());\n $(tip).removeClass(ClassName$6.FADE + \" \" + ClassName$6.SHOW);\n };\n\n _proto.setElementContent = function setElementContent($element, content) {\n if (typeof content === 'object' && (content.nodeType || content.jquery)) {\n // Content is a DOM node or a jQuery\n if (this.config.html) {\n if (!$(content).parent().is($element)) {\n $element.empty().append(content);\n }\n } else {\n $element.text($(content).text());\n }\n\n return;\n }\n\n if (this.config.html) {\n if (this.config.sanitize) {\n content = sanitizeHtml(content, this.config.whiteList, this.config.sanitizeFn);\n }\n\n $element.html(content);\n } else {\n $element.text(content);\n }\n };\n\n _proto.getTitle = function getTitle() {\n var title = this.element.getAttribute('data-original-title');\n\n if (!title) {\n title = typeof this.config.title === 'function' ? this.config.title.call(this.element) : this.config.title;\n }\n\n return title;\n } // Private\n ;\n\n _proto._getPopperConfig = function _getPopperConfig(attachment) {\n var _this3 = this;\n\n var defaultBsConfig = {\n placement: attachment,\n modifiers: {\n offset: this._getOffset(),\n flip: {\n behavior: this.config.fallbackPlacement\n },\n arrow: {\n element: Selector$6.ARROW\n },\n preventOverflow: {\n boundariesElement: this.config.boundary\n }\n },\n onCreate: function onCreate(data) {\n if (data.originalPlacement !== data.placement) {\n _this3._handlePopperPlacementChange(data);\n }\n },\n onUpdate: function onUpdate(data) {\n return _this3._handlePopperPlacementChange(data);\n }\n };\n return _objectSpread2({}, defaultBsConfig, {}, this.config.popperConfig);\n };\n\n _proto._getOffset = function _getOffset() {\n var _this4 = this;\n\n var offset = {};\n\n if (typeof this.config.offset === 'function') {\n offset.fn = function (data) {\n data.offsets = _objectSpread2({}, data.offsets, {}, _this4.config.offset(data.offsets, _this4.element) || {});\n return data;\n };\n } else {\n offset.offset = this.config.offset;\n }\n\n return offset;\n };\n\n _proto._getContainer = function _getContainer() {\n if (this.config.container === false) {\n return document.body;\n }\n\n if (Util.isElement(this.config.container)) {\n return $(this.config.container);\n }\n\n return $(document).find(this.config.container);\n };\n\n _proto._getAttachment = function _getAttachment(placement) {\n return AttachmentMap$1[placement.toUpperCase()];\n };\n\n _proto._setListeners = function _setListeners() {\n var _this5 = this;\n\n var triggers = this.config.trigger.split(' ');\n triggers.forEach(function (trigger) {\n if (trigger === 'click') {\n $(_this5.element).on(_this5.constructor.Event.CLICK, _this5.config.selector, function (event) {\n return _this5.toggle(event);\n });\n } else if (trigger !== Trigger.MANUAL) {\n var eventIn = trigger === Trigger.HOVER ? _this5.constructor.Event.MOUSEENTER : _this5.constructor.Event.FOCUSIN;\n var eventOut = trigger === Trigger.HOVER ? _this5.constructor.Event.MOUSELEAVE : _this5.constructor.Event.FOCUSOUT;\n $(_this5.element).on(eventIn, _this5.config.selector, function (event) {\n return _this5._enter(event);\n }).on(eventOut, _this5.config.selector, function (event) {\n return _this5._leave(event);\n });\n }\n });\n\n this._hideModalHandler = function () {\n if (_this5.element) {\n _this5.hide();\n }\n };\n\n $(this.element).closest('.modal').on('hide.bs.modal', this._hideModalHandler);\n\n if (this.config.selector) {\n this.config = _objectSpread2({}, this.config, {\n trigger: 'manual',\n selector: ''\n });\n } else {\n this._fixTitle();\n }\n };\n\n _proto._fixTitle = function _fixTitle() {\n var titleType = typeof this.element.getAttribute('data-original-title');\n\n if (this.element.getAttribute('title') || titleType !== 'string') {\n this.element.setAttribute('data-original-title', this.element.getAttribute('title') || '');\n this.element.setAttribute('title', '');\n }\n };\n\n _proto._enter = function _enter(event, context) {\n var dataKey = this.constructor.DATA_KEY;\n context = context || $(event.currentTarget).data(dataKey);\n\n if (!context) {\n context = new this.constructor(event.currentTarget, this._getDelegateConfig());\n $(event.currentTarget).data(dataKey, context);\n }\n\n if (event) {\n context._activeTrigger[event.type === 'focusin' ? Trigger.FOCUS : Trigger.HOVER] = true;\n }\n\n if ($(context.getTipElement()).hasClass(ClassName$6.SHOW) || context._hoverState === HoverState.SHOW) {\n context._hoverState = HoverState.SHOW;\n return;\n }\n\n clearTimeout(context._timeout);\n context._hoverState = HoverState.SHOW;\n\n if (!context.config.delay || !context.config.delay.show) {\n context.show();\n return;\n }\n\n context._timeout = setTimeout(function () {\n if (context._hoverState === HoverState.SHOW) {\n context.show();\n }\n }, context.config.delay.show);\n };\n\n _proto._leave = function _leave(event, context) {\n var dataKey = this.constructor.DATA_KEY;\n context = context || $(event.currentTarget).data(dataKey);\n\n if (!context) {\n context = new this.constructor(event.currentTarget, this._getDelegateConfig());\n $(event.currentTarget).data(dataKey, context);\n }\n\n if (event) {\n context._activeTrigger[event.type === 'focusout' ? Trigger.FOCUS : Trigger.HOVER] = false;\n }\n\n if (context._isWithActiveTrigger()) {\n return;\n }\n\n clearTimeout(context._timeout);\n context._hoverState = HoverState.OUT;\n\n if (!context.config.delay || !context.config.delay.hide) {\n context.hide();\n return;\n }\n\n context._timeout = setTimeout(function () {\n if (context._hoverState === HoverState.OUT) {\n context.hide();\n }\n }, context.config.delay.hide);\n };\n\n _proto._isWithActiveTrigger = function _isWithActiveTrigger() {\n for (var trigger in this._activeTrigger) {\n if (this._activeTrigger[trigger]) {\n return true;\n }\n }\n\n return false;\n };\n\n _proto._getConfig = function _getConfig(config) {\n var dataAttributes = $(this.element).data();\n Object.keys(dataAttributes).forEach(function (dataAttr) {\n if (DISALLOWED_ATTRIBUTES.indexOf(dataAttr) !== -1) {\n delete dataAttributes[dataAttr];\n }\n });\n config = _objectSpread2({}, this.constructor.Default, {}, dataAttributes, {}, typeof config === 'object' && config ? config : {});\n\n if (typeof config.delay === 'number') {\n config.delay = {\n show: config.delay,\n hide: config.delay\n };\n }\n\n if (typeof config.title === 'number') {\n config.title = config.title.toString();\n }\n\n if (typeof config.content === 'number') {\n config.content = config.content.toString();\n }\n\n Util.typeCheckConfig(NAME$6, config, this.constructor.DefaultType);\n\n if (config.sanitize) {\n config.template = sanitizeHtml(config.template, config.whiteList, config.sanitizeFn);\n }\n\n return config;\n };\n\n _proto._getDelegateConfig = function _getDelegateConfig() {\n var config = {};\n\n if (this.config) {\n for (var key in this.config) {\n if (this.constructor.Default[key] !== this.config[key]) {\n config[key] = this.config[key];\n }\n }\n }\n\n return config;\n };\n\n _proto._cleanTipClass = function _cleanTipClass() {\n var $tip = $(this.getTipElement());\n var tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX);\n\n if (tabClass !== null && tabClass.length) {\n $tip.removeClass(tabClass.join(''));\n }\n };\n\n _proto._handlePopperPlacementChange = function _handlePopperPlacementChange(popperData) {\n var popperInstance = popperData.instance;\n this.tip = popperInstance.popper;\n\n this._cleanTipClass();\n\n this.addAttachmentClass(this._getAttachment(popperData.placement));\n };\n\n _proto._fixTransition = function _fixTransition() {\n var tip = this.getTipElement();\n var initConfigAnimation = this.config.animation;\n\n if (tip.getAttribute('x-placement') !== null) {\n return;\n }\n\n $(tip).removeClass(ClassName$6.FADE);\n this.config.animation = false;\n this.hide();\n this.show();\n this.config.animation = initConfigAnimation;\n } // Static\n ;\n\n Tooltip._jQueryInterface = function _jQueryInterface(config) {\n return this.each(function () {\n var data = $(this).data(DATA_KEY$6);\n\n var _config = typeof config === 'object' && config;\n\n if (!data && /dispose|hide/.test(config)) {\n return;\n }\n\n if (!data) {\n data = new Tooltip(this, _config);\n $(this).data(DATA_KEY$6, data);\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n }\n\n data[config]();\n }\n });\n };\n\n _createClass(Tooltip, null, [{\n key: \"VERSION\",\n get: function get() {\n return VERSION$6;\n }\n }, {\n key: \"Default\",\n get: function get() {\n return Default$4;\n }\n }, {\n key: \"NAME\",\n get: function get() {\n return NAME$6;\n }\n }, {\n key: \"DATA_KEY\",\n get: function get() {\n return DATA_KEY$6;\n }\n }, {\n key: \"Event\",\n get: function get() {\n return Event$6;\n }\n }, {\n key: \"EVENT_KEY\",\n get: function get() {\n return EVENT_KEY$6;\n }\n }, {\n key: \"DefaultType\",\n get: function get() {\n return DefaultType$4;\n }\n }]);\n\n return Tooltip;\n }();\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n\n $.fn[NAME$6] = Tooltip._jQueryInterface;\n $.fn[NAME$6].Constructor = Tooltip;\n\n $.fn[NAME$6].noConflict = function () {\n $.fn[NAME$6] = JQUERY_NO_CONFLICT$6;\n return Tooltip._jQueryInterface;\n };\n\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n var NAME$7 = 'popover';\n var VERSION$7 = '4.4.1';\n var DATA_KEY$7 = 'bs.popover';\n var EVENT_KEY$7 = \".\" + DATA_KEY$7;\n var JQUERY_NO_CONFLICT$7 = $.fn[NAME$7];\n var CLASS_PREFIX$1 = 'bs-popover';\n var BSCLS_PREFIX_REGEX$1 = new RegExp(\"(^|\\\\s)\" + CLASS_PREFIX$1 + \"\\\\S+\", 'g');\n\n var Default$5 = _objectSpread2({}, Tooltip.Default, {\n placement: 'right',\n trigger: 'click',\n content: '',\n template: '
    ' + '
    ' + '

    ' + '
    '\n });\n\n var DefaultType$5 = _objectSpread2({}, Tooltip.DefaultType, {\n content: '(string|element|function)'\n });\n\n var ClassName$7 = {\n FADE: 'fade',\n SHOW: 'show'\n };\n var Selector$7 = {\n TITLE: '.popover-header',\n CONTENT: '.popover-body'\n };\n var Event$7 = {\n HIDE: \"hide\" + EVENT_KEY$7,\n HIDDEN: \"hidden\" + EVENT_KEY$7,\n SHOW: \"show\" + EVENT_KEY$7,\n SHOWN: \"shown\" + EVENT_KEY$7,\n INSERTED: \"inserted\" + EVENT_KEY$7,\n CLICK: \"click\" + EVENT_KEY$7,\n FOCUSIN: \"focusin\" + EVENT_KEY$7,\n FOCUSOUT: \"focusout\" + EVENT_KEY$7,\n MOUSEENTER: \"mouseenter\" + EVENT_KEY$7,\n MOUSELEAVE: \"mouseleave\" + EVENT_KEY$7\n };\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n var Popover =\n /*#__PURE__*/\n function (_Tooltip) {\n _inheritsLoose(Popover, _Tooltip);\n\n function Popover() {\n return _Tooltip.apply(this, arguments) || this;\n }\n\n var _proto = Popover.prototype;\n\n // Overrides\n _proto.isWithContent = function isWithContent() {\n return this.getTitle() || this._getContent();\n };\n\n _proto.addAttachmentClass = function addAttachmentClass(attachment) {\n $(this.getTipElement()).addClass(CLASS_PREFIX$1 + \"-\" + attachment);\n };\n\n _proto.getTipElement = function getTipElement() {\n this.tip = this.tip || $(this.config.template)[0];\n return this.tip;\n };\n\n _proto.setContent = function setContent() {\n var $tip = $(this.getTipElement()); // We use append for html objects to maintain js events\n\n this.setElementContent($tip.find(Selector$7.TITLE), this.getTitle());\n\n var content = this._getContent();\n\n if (typeof content === 'function') {\n content = content.call(this.element);\n }\n\n this.setElementContent($tip.find(Selector$7.CONTENT), content);\n $tip.removeClass(ClassName$7.FADE + \" \" + ClassName$7.SHOW);\n } // Private\n ;\n\n _proto._getContent = function _getContent() {\n return this.element.getAttribute('data-content') || this.config.content;\n };\n\n _proto._cleanTipClass = function _cleanTipClass() {\n var $tip = $(this.getTipElement());\n var tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX$1);\n\n if (tabClass !== null && tabClass.length > 0) {\n $tip.removeClass(tabClass.join(''));\n }\n } // Static\n ;\n\n Popover._jQueryInterface = function _jQueryInterface(config) {\n return this.each(function () {\n var data = $(this).data(DATA_KEY$7);\n\n var _config = typeof config === 'object' ? config : null;\n\n if (!data && /dispose|hide/.test(config)) {\n return;\n }\n\n if (!data) {\n data = new Popover(this, _config);\n $(this).data(DATA_KEY$7, data);\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(\"No method named \\\"\" + config + \"\\\"\");\n }\n\n data[config]();\n }\n });\n };\n\n _createClass(Popover, null, [{\n key: \"VERSION\",\n // Getters\n get: function get() {\n return VERSION$7;\n }\n }, {\n key: \"Default\",\n get: function get() {\n return Default$5;\n }\n }, {\n key: \"NAME\",\n get: function get() {\n return NAME$7;\n }\n }, {\n key: \"DATA_KEY\",\n get: function get() {\n return DATA_KEY$7;\n }\n }, {\n key: \"Event\",\n get: function get() {\n return Event$7;\n }\n }, {\n key: \"EVENT_KEY\",\n get: function get() {\n return EVENT_KEY$7;\n }\n }, {\n key: \"DefaultType\",\n get: function get() {\n return DefaultType$5;\n }\n }]);\n\n return Popover;\n }(Tooltip);\n /**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\n\n $.fn[NAME$7] = Popover._jQueryInterface;\n $.fn[NAME$7].Constructor = Popover;\n\n $.fn[NAME$7].noConflict = function () {\n $.fn[NAME$7] = JQUERY_NO_CONFLICT$7;\n return Popover._jQueryInterface;\n };\n\n /**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\n var NAME$8 = 'scrollspy';\n var VERSION$8 = '4.4.1';\n var DATA_KEY$8 = 'bs.scrollspy';\n var EVENT_KEY$8 = \".\" + DATA_KEY$8;\n var DATA_API_KEY$6 = '.data-api';\n var JQUERY_NO_CONFLICT$8 = $.fn[NAME$8];\n var Default$6 = {\n offset: 10,\n method: 'auto',\n target: ''\n };\n var DefaultType$6 = {\n offset: 'number',\n method: 'string',\n target: '(string|element)'\n };\n var Event$8 = {\n ACTIVATE: \"activate\" + EVENT_KEY$8,\n SCROLL: \"scroll\" + EVENT_KEY$8,\n LOAD_DATA_API: \"load\" + EVENT_KEY$8 + DATA_API_KEY$6\n };\n var ClassName$8 = {\n DROPDOWN_ITEM: 'dropdown-item',\n DROPDOWN_MENU: 'dropdown-menu',\n ACTIVE: 'active'\n };\n var Selector$8 = {\n DATA_SPY: '[data-spy=\"scroll\"]',\n ACTIVE: '.active',\n NAV_LIST_GROUP: '.nav, .list-group',\n NAV_LINKS: '.nav-link',\n NAV_ITEMS: '.nav-item',\n LIST_ITEMS: '.list-group-item',\n DROPDOWN: '.dropdown',\n DROPDOWN_ITEMS: '.dropdown-item',\n DROPDOWN_TOGGLE: '.dropdown-toggle'\n };\n var OffsetMethod = {\n OFFSET: 'offset',\n POSITION: 'position'\n };\n /**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\n var ScrollSpy =\n /*#__PURE__*/\n function () {\n function ScrollSpy(element, config) {\n var _this = this;\n\n this._element = element;\n this._scrollElement = element.tagName === 'BODY' ? window : element;\n this._config = this._getConfig(config);\n this._selector = this._config.target + \" \" + Selector$8.NAV_LINKS + \",\" + (this._config.target + \" \" + Selector$8.LIST_ITEMS + \",\") + (this._config.target + \" \" + Selector$8.DROPDOWN_ITEMS);\n this._offsets = [];\n this._targets = [];\n this._activeTarget = null;\n this._scrollHeight = 0;\n $(this._scrollElement).on(Event$8.SCROLL, function (event) {\n return _this._process(event);\n });\n this.refresh();\n\n this._process();\n } // Getters\n\n\n var _proto = ScrollSpy.prototype;\n\n // Public\n _proto.refresh = function refresh() {\n var _this2 = this;\n\n var autoMethod = this._scrollElement === this._scrollElement.window ? OffsetMethod.OFFSET : OffsetMethod.POSITION;\n var offsetMethod = this._config.method === 'auto' ? autoMethod : this._config.method;\n var offsetBase = offsetMethod === OffsetMethod.POSITION ? this._getScrollTop() : 0;\n this._offsets = [];\n this._targets = [];\n this._scrollHeight = this._getScrollHeight();\n var targets = [].slice.call(document.querySelectorAll(this._selector));\n targets.map(function (element) {\n var target;\n var targetSelector = Util.getSelectorFromElement(element);\n\n if (targetSelector) {\n target = document.querySelector(targetSelector);\n }\n\n if (target) {\n var targetBCR = target.getBoundingClientRect();\n\n if (targetBCR.width || targetBCR.height) {\n // TODO (fat): remove sketch reliance on jQuery position/offset\n return [$(target)[offsetMethod]().top + offsetBase, targetSelector];\n }\n }\n\n return null;\n }).filter(function (item) {\n return item;\n }).sort(function (a, b) {\n return a[0] - b[0];\n }).forEach(function (item) {\n _this2._offsets.push(item[0]);\n\n _this2._targets.push(item[1]);\n });\n };\n\n _proto.dispose = function dispose() {\n $.removeData(this._element, DATA_KEY$8);\n $(this._scrollElement).off(EVENT_KEY$8);\n this._element = null;\n this._scrollElement = null;\n this._config = null;\n this._selector = null;\n this._offsets = null;\n this._targets = null;\n this._activeTarget = null;\n this._scrollHeight = null;\n } // Private\n ;\n\n _proto._getConfig = function _getConfig(config) {\n config = _objectSpread2({}, Default$6, {}, typeof config === 'object' && config ? config : {});\n\n if (typeof config.target !== 'string') {\n var id = $(config.target).attr('id');\n\n if (!id) {\n id = Util.getUID(NAME$8);\n $(config.target).attr('id', id);\n }\n\n config.target = \"#\" + id;\n }\n\n Util.typeCheckConfig(NAME$8, config, DefaultType$6);\n return config;\n };\n\n _proto._getScrollTop = function _getScrollTop() {\n return this._scrollElement === window ? this._scrollElement.pageYOffset : this._scrollElement.scrollTop;\n };\n\n _proto._getScrollHeight = function _getScrollHeight() {\n return this._scrollElement.scrollHeight || Math.max(document.body.scrollHeight, document.documentElement.scrollHeight);\n };\n\n _proto._getOffsetHeight = function _getOffsetHeight() {\n return this._scrollElement === window ? window.innerHeight : this._scrollElement.getBoundingClientRect().height;\n };\n\n _proto._process = function _process() {\n var scrollTop = this._getScrollTop() + this._config.offset;\n\n var scrollHeight = this._getScrollHeight();\n\n var maxScroll = this._config.offset + scrollHeight - this._getOffsetHeight();\n\n if (this._scrollHeight !== scrollHeight) {\n this.refresh();\n }\n\n if (scrollTop >= maxScroll) {\n var target = this._targets[this._targets.length - 1];\n\n if (this._activeTarget !== target) {\n this._activate(target);\n }\n\n return;\n }\n\n if (this._activeTarget && scrollTop < this._offsets[0] && this._offsets[0] > 0) {\n this._activeTarget = null;\n\n this._clear();\n\n return;\n }\n\n var offsetLength = this._offsets.length;\n\n for (var i = offsetLength; i--;) {\n var isActiveTarget = this._activeTarget !== this._targets[i] && scrollTop >= this._offsets[i] && (typeof this._offsets[i + 1] === 'undefined' || scrollTop < this._offsets[i + 1]);\n\n if (isActiveTarget) {\n this._activate(this._targets[i]);\n }\n }\n };\n\n _proto._activate = function _activate(target) {\n this._activeTarget = target;\n\n this._clear();\n\n var queries = this._selector.split(',').map(function (selector) {\n return selector + \"[data-target=\\\"\" + target + \"\\\"],\" + selector + \"[href=\\\"\" + target + \"\\\"]\";\n });\n\n var $link = $([].slice.call(document.querySelectorAll(queries.join(','))));\n\n if ($link.hasClass(ClassName$8.DROPDOWN_ITEM)) {\n $link.closest(Selector$8.DROPDOWN).find(Selector$8.DROPDOWN_TOGGLE).addClass(ClassName$8.ACTIVE);\n $link.addClass(ClassName$8.ACTIVE);\n } else {\n // Set triggered link as active\n $link.addClass(ClassName$8.ACTIVE); // Set triggered links parents as active\n // With both
      and
  • or other required elements.\n\tthead: [ 1, \"
    \", \"
    \" ],\n\tcol: [ 2, \"\", \"
    \" ],\n\ttr: [ 2, \"\", \"
    \" ],\n\ttd: [ 3, \"\", \"
    \" ],\n\n\t_default: [ 0, \"\", \"\" ]\n};\n\nwrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\nwrapMap.th = wrapMap.td;\n\n// Support: IE <=9 only\nif ( !support.option ) {\n\twrapMap.optgroup = wrapMap.option = [ 1, \"\" ];\n}\n\n\nfunction getAll( context, tag ) {\n\n\t// Support: IE <=9 - 11 only\n\t// Use typeof to avoid zero-argument method invocation on host objects (#15151)\n\tvar ret;\n\n\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\tret = context.getElementsByTagName( tag || \"*\" );\n\n\t} else if ( typeof context.querySelectorAll !== \"undefined\" ) {\n\t\tret = context.querySelectorAll( tag || \"*\" );\n\n\t} else {\n\t\tret = [];\n\t}\n\n\tif ( tag === undefined || tag && nodeName( context, tag ) ) {\n\t\treturn jQuery.merge( [ context ], ret );\n\t}\n\n\treturn ret;\n}\n\n\n// Mark scripts as having already been evaluated\nfunction setGlobalEval( elems, refElements ) {\n\tvar i = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\tdataPriv.set(\n\t\t\telems[ i ],\n\t\t\t\"globalEval\",\n\t\t\t!refElements || dataPriv.get( refElements[ i ], \"globalEval\" )\n\t\t);\n\t}\n}\n\n\nvar rhtml = /<|&#?\\w+;/;\n\nfunction buildFragment( elems, context, scripts, selection, ignored ) {\n\tvar elem, tmp, tag, wrap, attached, j,\n\t\tfragment = context.createDocumentFragment(),\n\t\tnodes = [],\n\t\ti = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\telem = elems[ i ];\n\n\t\tif ( elem || elem === 0 ) {\n\n\t\t\t// Add nodes directly\n\t\t\tif ( toType( elem ) === \"object\" ) {\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );\n\n\t\t\t// Convert non-html into a text node\n\t\t\t} else if ( !rhtml.test( elem ) ) {\n\t\t\t\tnodes.push( context.createTextNode( elem ) );\n\n\t\t\t// Convert html into DOM nodes\n\t\t\t} else {\n\t\t\t\ttmp = tmp || fragment.appendChild( context.createElement( \"div\" ) );\n\n\t\t\t\t// Deserialize a standard representation\n\t\t\t\ttag = ( rtagName.exec( elem ) || [ \"\", \"\" ] )[ 1 ].toLowerCase();\n\t\t\t\twrap = wrapMap[ tag ] || wrapMap._default;\n\t\t\t\ttmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ];\n\n\t\t\t\t// Descend through wrappers to the right content\n\t\t\t\tj = wrap[ 0 ];\n\t\t\t\twhile ( j-- ) {\n\t\t\t\t\ttmp = tmp.lastChild;\n\t\t\t\t}\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, tmp.childNodes );\n\n\t\t\t\t// Remember the top-level container\n\t\t\t\ttmp = fragment.firstChild;\n\n\t\t\t\t// Ensure the created nodes are orphaned (#12392)\n\t\t\t\ttmp.textContent = \"\";\n\t\t\t}\n\t\t}\n\t}\n\n\t// Remove wrapper from fragment\n\tfragment.textContent = \"\";\n\n\ti = 0;\n\twhile ( ( elem = nodes[ i++ ] ) ) {\n\n\t\t// Skip elements already in the context collection (trac-4087)\n\t\tif ( selection && jQuery.inArray( elem, selection ) > -1 ) {\n\t\t\tif ( ignored ) {\n\t\t\t\tignored.push( elem );\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\tattached = isAttached( elem );\n\n\t\t// Append to fragment\n\t\ttmp = getAll( fragment.appendChild( elem ), \"script\" );\n\n\t\t// Preserve script evaluation history\n\t\tif ( attached ) {\n\t\t\tsetGlobalEval( tmp );\n\t\t}\n\n\t\t// Capture executables\n\t\tif ( scripts ) {\n\t\t\tj = 0;\n\t\t\twhile ( ( elem = tmp[ j++ ] ) ) {\n\t\t\t\tif ( rscriptType.test( elem.type || \"\" ) ) {\n\t\t\t\t\tscripts.push( elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn fragment;\n}\n\n\nvar rtypenamespace = /^([^.]*)(?:\\.(.+)|)/;\n\nfunction returnTrue() {\n\treturn true;\n}\n\nfunction returnFalse() {\n\treturn false;\n}\n\n// Support: IE <=9 - 11+\n// focus() and blur() are asynchronous, except when they are no-op.\n// So expect focus to be synchronous when the element is already active,\n// and blur to be synchronous when the element is not already active.\n// (focus and blur are always synchronous in other supported browsers,\n// this just defines when we can count on it).\nfunction expectSync( elem, type ) {\n\treturn ( elem === safeActiveElement() ) === ( type === \"focus\" );\n}\n\n// Support: IE <=9 only\n// Accessing document.activeElement can throw unexpectedly\n// https://bugs.jquery.com/ticket/13393\nfunction safeActiveElement() {\n\ttry {\n\t\treturn document.activeElement;\n\t} catch ( err ) { }\n}\n\nfunction on( elem, types, selector, data, fn, one ) {\n\tvar origFn, type;\n\n\t// Types can be a map of types/handlers\n\tif ( typeof types === \"object\" ) {\n\n\t\t// ( types-Object, selector, data )\n\t\tif ( typeof selector !== \"string\" ) {\n\n\t\t\t// ( types-Object, data )\n\t\t\tdata = data || selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tfor ( type in types ) {\n\t\t\ton( elem, type, selector, data, types[ type ], one );\n\t\t}\n\t\treturn elem;\n\t}\n\n\tif ( data == null && fn == null ) {\n\n\t\t// ( types, fn )\n\t\tfn = selector;\n\t\tdata = selector = undefined;\n\t} else if ( fn == null ) {\n\t\tif ( typeof selector === \"string\" ) {\n\n\t\t\t// ( types, selector, fn )\n\t\t\tfn = data;\n\t\t\tdata = undefined;\n\t\t} else {\n\n\t\t\t// ( types, data, fn )\n\t\t\tfn = data;\n\t\t\tdata = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t}\n\tif ( fn === false ) {\n\t\tfn = returnFalse;\n\t} else if ( !fn ) {\n\t\treturn elem;\n\t}\n\n\tif ( one === 1 ) {\n\t\torigFn = fn;\n\t\tfn = function( event ) {\n\n\t\t\t// Can use an empty set, since event contains the info\n\t\t\tjQuery().off( event );\n\t\t\treturn origFn.apply( this, arguments );\n\t\t};\n\n\t\t// Use same guid so caller can remove using origFn\n\t\tfn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );\n\t}\n\treturn elem.each( function() {\n\t\tjQuery.event.add( this, types, fn, data, selector );\n\t} );\n}\n\n/*\n * Helper functions for managing events -- not part of the public interface.\n * Props to Dean Edwards' addEvent library for many of the ideas.\n */\njQuery.event = {\n\n\tglobal: {},\n\n\tadd: function( elem, types, handler, data, selector ) {\n\n\t\tvar handleObjIn, eventHandle, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.get( elem );\n\n\t\t// Only attach events to objects that accept data\n\t\tif ( !acceptData( elem ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Caller can pass in an object of custom data in lieu of the handler\n\t\tif ( handler.handler ) {\n\t\t\thandleObjIn = handler;\n\t\t\thandler = handleObjIn.handler;\n\t\t\tselector = handleObjIn.selector;\n\t\t}\n\n\t\t// Ensure that invalid selectors throw exceptions at attach time\n\t\t// Evaluate against documentElement in case elem is a non-element node (e.g., document)\n\t\tif ( selector ) {\n\t\t\tjQuery.find.matchesSelector( documentElement, selector );\n\t\t}\n\n\t\t// Make sure that the handler has a unique ID, used to find/remove it later\n\t\tif ( !handler.guid ) {\n\t\t\thandler.guid = jQuery.guid++;\n\t\t}\n\n\t\t// Init the element's event structure and main handler, if this is the first\n\t\tif ( !( events = elemData.events ) ) {\n\t\t\tevents = elemData.events = Object.create( null );\n\t\t}\n\t\tif ( !( eventHandle = elemData.handle ) ) {\n\t\t\teventHandle = elemData.handle = function( e ) {\n\n\t\t\t\t// Discard the second event of a jQuery.event.trigger() and\n\t\t\t\t// when an event is called after a page has unloaded\n\t\t\t\treturn typeof jQuery !== \"undefined\" && jQuery.event.triggered !== e.type ?\n\t\t\t\t\tjQuery.event.dispatch.apply( elem, arguments ) : undefined;\n\t\t\t};\n\t\t}\n\n\t\t// Handle multiple events separated by a space\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// There *must* be a type, no attaching namespace-only handlers\n\t\t\tif ( !type ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// If event changes its type, use the special event handlers for the changed type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// If selector defined, determine special event api type, otherwise given type\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\n\t\t\t// Update special based on newly reset type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// handleObj is passed to all event handlers\n\t\t\thandleObj = jQuery.extend( {\n\t\t\t\ttype: type,\n\t\t\t\torigType: origType,\n\t\t\t\tdata: data,\n\t\t\t\thandler: handler,\n\t\t\t\tguid: handler.guid,\n\t\t\t\tselector: selector,\n\t\t\t\tneedsContext: selector && jQuery.expr.match.needsContext.test( selector ),\n\t\t\t\tnamespace: namespaces.join( \".\" )\n\t\t\t}, handleObjIn );\n\n\t\t\t// Init the event handler queue if we're the first\n\t\t\tif ( !( handlers = events[ type ] ) ) {\n\t\t\t\thandlers = events[ type ] = [];\n\t\t\t\thandlers.delegateCount = 0;\n\n\t\t\t\t// Only use addEventListener if the special events handler returns false\n\t\t\t\tif ( !special.setup ||\n\t\t\t\t\tspecial.setup.call( elem, data, namespaces, eventHandle ) === false ) {\n\n\t\t\t\t\tif ( elem.addEventListener ) {\n\t\t\t\t\t\telem.addEventListener( type, eventHandle );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( special.add ) {\n\t\t\t\tspecial.add.call( elem, handleObj );\n\n\t\t\t\tif ( !handleObj.handler.guid ) {\n\t\t\t\t\thandleObj.handler.guid = handler.guid;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add to the element's handler list, delegates in front\n\t\t\tif ( selector ) {\n\t\t\t\thandlers.splice( handlers.delegateCount++, 0, handleObj );\n\t\t\t} else {\n\t\t\t\thandlers.push( handleObj );\n\t\t\t}\n\n\t\t\t// Keep track of which events have ever been used, for event optimization\n\t\t\tjQuery.event.global[ type ] = true;\n\t\t}\n\n\t},\n\n\t// Detach an event or set of events from an element\n\tremove: function( elem, types, handler, selector, mappedTypes ) {\n\n\t\tvar j, origCount, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.hasData( elem ) && dataPriv.get( elem );\n\n\t\tif ( !elemData || !( events = elemData.events ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Once for each type.namespace in types; type may be omitted\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// Unbind all events (on this namespace, if provided) for the element\n\t\t\tif ( !type ) {\n\t\t\t\tfor ( type in events ) {\n\t\t\t\t\tjQuery.event.remove( elem, type + types[ t ], handler, selector, true );\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\t\t\thandlers = events[ type ] || [];\n\t\t\ttmp = tmp[ 2 ] &&\n\t\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" );\n\n\t\t\t// Remove matching events\n\t\t\torigCount = j = handlers.length;\n\t\t\twhile ( j-- ) {\n\t\t\t\thandleObj = handlers[ j ];\n\n\t\t\t\tif ( ( mappedTypes || origType === handleObj.origType ) &&\n\t\t\t\t\t( !handler || handler.guid === handleObj.guid ) &&\n\t\t\t\t\t( !tmp || tmp.test( handleObj.namespace ) ) &&\n\t\t\t\t\t( !selector || selector === handleObj.selector ||\n\t\t\t\t\t\tselector === \"**\" && handleObj.selector ) ) {\n\t\t\t\t\thandlers.splice( j, 1 );\n\n\t\t\t\t\tif ( handleObj.selector ) {\n\t\t\t\t\t\thandlers.delegateCount--;\n\t\t\t\t\t}\n\t\t\t\t\tif ( special.remove ) {\n\t\t\t\t\t\tspecial.remove.call( elem, handleObj );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Remove generic event handler if we removed something and no more handlers exist\n\t\t\t// (avoids potential for endless recursion during removal of special event handlers)\n\t\t\tif ( origCount && !handlers.length ) {\n\t\t\t\tif ( !special.teardown ||\n\t\t\t\t\tspecial.teardown.call( elem, namespaces, elemData.handle ) === false ) {\n\n\t\t\t\t\tjQuery.removeEvent( elem, type, elemData.handle );\n\t\t\t\t}\n\n\t\t\t\tdelete events[ type ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove data and the expando if it's no longer used\n\t\tif ( jQuery.isEmptyObject( events ) ) {\n\t\t\tdataPriv.remove( elem, \"handle events\" );\n\t\t}\n\t},\n\n\tdispatch: function( nativeEvent ) {\n\n\t\tvar i, j, ret, matched, handleObj, handlerQueue,\n\t\t\targs = new Array( arguments.length ),\n\n\t\t\t// Make a writable jQuery.Event from the native event object\n\t\t\tevent = jQuery.event.fix( nativeEvent ),\n\n\t\t\thandlers = (\n\t\t\t\tdataPriv.get( this, \"events\" ) || Object.create( null )\n\t\t\t)[ event.type ] || [],\n\t\t\tspecial = jQuery.event.special[ event.type ] || {};\n\n\t\t// Use the fix-ed jQuery.Event rather than the (read-only) native event\n\t\targs[ 0 ] = event;\n\n\t\tfor ( i = 1; i < arguments.length; i++ ) {\n\t\t\targs[ i ] = arguments[ i ];\n\t\t}\n\n\t\tevent.delegateTarget = this;\n\n\t\t// Call the preDispatch hook for the mapped type, and let it bail if desired\n\t\tif ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine handlers\n\t\thandlerQueue = jQuery.event.handlers.call( this, event, handlers );\n\n\t\t// Run delegates first; they may want to stop propagation beneath us\n\t\ti = 0;\n\t\twhile ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tevent.currentTarget = matched.elem;\n\n\t\t\tj = 0;\n\t\t\twhile ( ( handleObj = matched.handlers[ j++ ] ) &&\n\t\t\t\t!event.isImmediatePropagationStopped() ) {\n\n\t\t\t\t// If the event is namespaced, then each handler is only invoked if it is\n\t\t\t\t// specially universal or its namespaces are a superset of the event's.\n\t\t\t\tif ( !event.rnamespace || handleObj.namespace === false ||\n\t\t\t\t\tevent.rnamespace.test( handleObj.namespace ) ) {\n\n\t\t\t\t\tevent.handleObj = handleObj;\n\t\t\t\t\tevent.data = handleObj.data;\n\n\t\t\t\t\tret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle ||\n\t\t\t\t\t\thandleObj.handler ).apply( matched.elem, args );\n\n\t\t\t\t\tif ( ret !== undefined ) {\n\t\t\t\t\t\tif ( ( event.result = ret ) === false ) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Call the postDispatch hook for the mapped type\n\t\tif ( special.postDispatch ) {\n\t\t\tspecial.postDispatch.call( this, event );\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\thandlers: function( event, handlers ) {\n\t\tvar i, handleObj, sel, matchedHandlers, matchedSelectors,\n\t\t\thandlerQueue = [],\n\t\t\tdelegateCount = handlers.delegateCount,\n\t\t\tcur = event.target;\n\n\t\t// Find delegate handlers\n\t\tif ( delegateCount &&\n\n\t\t\t// Support: IE <=9\n\t\t\t// Black-hole SVG instance trees (trac-13180)\n\t\t\tcur.nodeType &&\n\n\t\t\t// Support: Firefox <=42\n\t\t\t// Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861)\n\t\t\t// https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click\n\t\t\t// Support: IE 11 only\n\t\t\t// ...but not arrow key \"clicks\" of radio inputs, which can have `button` -1 (gh-2343)\n\t\t\t!( event.type === \"click\" && event.button >= 1 ) ) {\n\n\t\t\tfor ( ; cur !== this; cur = cur.parentNode || this ) {\n\n\t\t\t\t// Don't check non-elements (#13208)\n\t\t\t\t// Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)\n\t\t\t\tif ( cur.nodeType === 1 && !( event.type === \"click\" && cur.disabled === true ) ) {\n\t\t\t\t\tmatchedHandlers = [];\n\t\t\t\t\tmatchedSelectors = {};\n\t\t\t\t\tfor ( i = 0; i < delegateCount; i++ ) {\n\t\t\t\t\t\thandleObj = handlers[ i ];\n\n\t\t\t\t\t\t// Don't conflict with Object.prototype properties (#13203)\n\t\t\t\t\t\tsel = handleObj.selector + \" \";\n\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] === undefined ) {\n\t\t\t\t\t\t\tmatchedSelectors[ sel ] = handleObj.needsContext ?\n\t\t\t\t\t\t\t\tjQuery( sel, this ).index( cur ) > -1 :\n\t\t\t\t\t\t\t\tjQuery.find( sel, this, null, [ cur ] ).length;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] ) {\n\t\t\t\t\t\t\tmatchedHandlers.push( handleObj );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( matchedHandlers.length ) {\n\t\t\t\t\t\thandlerQueue.push( { elem: cur, handlers: matchedHandlers } );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Add the remaining (directly-bound) handlers\n\t\tcur = this;\n\t\tif ( delegateCount < handlers.length ) {\n\t\t\thandlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } );\n\t\t}\n\n\t\treturn handlerQueue;\n\t},\n\n\taddProp: function( name, hook ) {\n\t\tObject.defineProperty( jQuery.Event.prototype, name, {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\n\t\t\tget: isFunction( hook ) ?\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\treturn hook( this.originalEvent );\n\t\t\t\t\t}\n\t\t\t\t} :\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\treturn this.originalEvent[ name ];\n\t\t\t\t\t}\n\t\t\t\t},\n\n\t\t\tset: function( value ) {\n\t\t\t\tObject.defineProperty( this, name, {\n\t\t\t\t\tenumerable: true,\n\t\t\t\t\tconfigurable: true,\n\t\t\t\t\twritable: true,\n\t\t\t\t\tvalue: value\n\t\t\t\t} );\n\t\t\t}\n\t\t} );\n\t},\n\n\tfix: function( originalEvent ) {\n\t\treturn originalEvent[ jQuery.expando ] ?\n\t\t\toriginalEvent :\n\t\t\tnew jQuery.Event( originalEvent );\n\t},\n\n\tspecial: {\n\t\tload: {\n\n\t\t\t// Prevent triggered image.load events from bubbling to window.load\n\t\t\tnoBubble: true\n\t\t},\n\t\tclick: {\n\n\t\t\t// Utilize native event to ensure correct state for checkable inputs\n\t\t\tsetup: function( data ) {\n\n\t\t\t\t// For mutual compressibility with _default, replace `this` access with a local var.\n\t\t\t\t// `|| data` is dead code meant only to preserve the variable through minification.\n\t\t\t\tvar el = this || data;\n\n\t\t\t\t// Claim the first handler\n\t\t\t\tif ( rcheckableType.test( el.type ) &&\n\t\t\t\t\tel.click && nodeName( el, \"input\" ) ) {\n\n\t\t\t\t\t// dataPriv.set( el, \"click\", ... )\n\t\t\t\t\tleverageNative( el, \"click\", returnTrue );\n\t\t\t\t}\n\n\t\t\t\t// Return false to allow normal processing in the caller\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\ttrigger: function( data ) {\n\n\t\t\t\t// For mutual compressibility with _default, replace `this` access with a local var.\n\t\t\t\t// `|| data` is dead code meant only to preserve the variable through minification.\n\t\t\t\tvar el = this || data;\n\n\t\t\t\t// Force setup before triggering a click\n\t\t\t\tif ( rcheckableType.test( el.type ) &&\n\t\t\t\t\tel.click && nodeName( el, \"input\" ) ) {\n\n\t\t\t\t\tleverageNative( el, \"click\" );\n\t\t\t\t}\n\n\t\t\t\t// Return non-false to allow normal event-path propagation\n\t\t\t\treturn true;\n\t\t\t},\n\n\t\t\t// For cross-browser consistency, suppress native .click() on links\n\t\t\t// Also prevent it if we're currently inside a leveraged native-event stack\n\t\t\t_default: function( event ) {\n\t\t\t\tvar target = event.target;\n\t\t\t\treturn rcheckableType.test( target.type ) &&\n\t\t\t\t\ttarget.click && nodeName( target, \"input\" ) &&\n\t\t\t\t\tdataPriv.get( target, \"click\" ) ||\n\t\t\t\t\tnodeName( target, \"a\" );\n\t\t\t}\n\t\t},\n\n\t\tbeforeunload: {\n\t\t\tpostDispatch: function( event ) {\n\n\t\t\t\t// Support: Firefox 20+\n\t\t\t\t// Firefox doesn't alert if the returnValue field is not set.\n\t\t\t\tif ( event.result !== undefined && event.originalEvent ) {\n\t\t\t\t\tevent.originalEvent.returnValue = event.result;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Ensure the presence of an event listener that handles manually-triggered\n// synthetic events by interrupting progress until reinvoked in response to\n// *native* events that it fires directly, ensuring that state changes have\n// already occurred before other listeners are invoked.\nfunction leverageNative( el, type, expectSync ) {\n\n\t// Missing expectSync indicates a trigger call, which must force setup through jQuery.event.add\n\tif ( !expectSync ) {\n\t\tif ( dataPriv.get( el, type ) === undefined ) {\n\t\t\tjQuery.event.add( el, type, returnTrue );\n\t\t}\n\t\treturn;\n\t}\n\n\t// Register the controller as a special universal handler for all event namespaces\n\tdataPriv.set( el, type, false );\n\tjQuery.event.add( el, type, {\n\t\tnamespace: false,\n\t\thandler: function( event ) {\n\t\t\tvar notAsync, result,\n\t\t\t\tsaved = dataPriv.get( this, type );\n\n\t\t\tif ( ( event.isTrigger & 1 ) && this[ type ] ) {\n\n\t\t\t\t// Interrupt processing of the outer synthetic .trigger()ed event\n\t\t\t\t// Saved data should be false in such cases, but might be a leftover capture object\n\t\t\t\t// from an async native handler (gh-4350)\n\t\t\t\tif ( !saved.length ) {\n\n\t\t\t\t\t// Store arguments for use when handling the inner native event\n\t\t\t\t\t// There will always be at least one argument (an event object), so this array\n\t\t\t\t\t// will not be confused with a leftover capture object.\n\t\t\t\t\tsaved = slice.call( arguments );\n\t\t\t\t\tdataPriv.set( this, type, saved );\n\n\t\t\t\t\t// Trigger the native event and capture its result\n\t\t\t\t\t// Support: IE <=9 - 11+\n\t\t\t\t\t// focus() and blur() are asynchronous\n\t\t\t\t\tnotAsync = expectSync( this, type );\n\t\t\t\t\tthis[ type ]();\n\t\t\t\t\tresult = dataPriv.get( this, type );\n\t\t\t\t\tif ( saved !== result || notAsync ) {\n\t\t\t\t\t\tdataPriv.set( this, type, false );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresult = {};\n\t\t\t\t\t}\n\t\t\t\t\tif ( saved !== result ) {\n\n\t\t\t\t\t\t// Cancel the outer synthetic event\n\t\t\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t\t\t\tevent.preventDefault();\n\n\t\t\t\t\t\t// Support: Chrome 86+\n\t\t\t\t\t\t// In Chrome, if an element having a focusout handler is blurred by\n\t\t\t\t\t\t// clicking outside of it, it invokes the handler synchronously. If\n\t\t\t\t\t\t// that handler calls `.remove()` on the element, the data is cleared,\n\t\t\t\t\t\t// leaving `result` undefined. We need to guard against this.\n\t\t\t\t\t\treturn result && result.value;\n\t\t\t\t\t}\n\n\t\t\t\t// If this is an inner synthetic event for an event with a bubbling surrogate\n\t\t\t\t// (focus or blur), assume that the surrogate already propagated from triggering the\n\t\t\t\t// native event and prevent that from happening again here.\n\t\t\t\t// This technically gets the ordering wrong w.r.t. to `.trigger()` (in which the\n\t\t\t\t// bubbling surrogate propagates *after* the non-bubbling base), but that seems\n\t\t\t\t// less bad than duplication.\n\t\t\t\t} else if ( ( jQuery.event.special[ type ] || {} ).delegateType ) {\n\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t}\n\n\t\t\t// If this is a native event triggered above, everything is now in order\n\t\t\t// Fire an inner synthetic event with the original arguments\n\t\t\t} else if ( saved.length ) {\n\n\t\t\t\t// ...and capture the result\n\t\t\t\tdataPriv.set( this, type, {\n\t\t\t\t\tvalue: jQuery.event.trigger(\n\n\t\t\t\t\t\t// Support: IE <=9 - 11+\n\t\t\t\t\t\t// Extend with the prototype to reset the above stopImmediatePropagation()\n\t\t\t\t\t\tjQuery.extend( saved[ 0 ], jQuery.Event.prototype ),\n\t\t\t\t\t\tsaved.slice( 1 ),\n\t\t\t\t\t\tthis\n\t\t\t\t\t)\n\t\t\t\t} );\n\n\t\t\t\t// Abort handling of the native event\n\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t}\n\t\t}\n\t} );\n}\n\njQuery.removeEvent = function( elem, type, handle ) {\n\n\t// This \"if\" is needed for plain objects\n\tif ( elem.removeEventListener ) {\n\t\telem.removeEventListener( type, handle );\n\t}\n};\n\njQuery.Event = function( src, props ) {\n\n\t// Allow instantiation without the 'new' keyword\n\tif ( !( this instanceof jQuery.Event ) ) {\n\t\treturn new jQuery.Event( src, props );\n\t}\n\n\t// Event object\n\tif ( src && src.type ) {\n\t\tthis.originalEvent = src;\n\t\tthis.type = src.type;\n\n\t\t// Events bubbling up the document may have been marked as prevented\n\t\t// by a handler lower down the tree; reflect the correct value.\n\t\tthis.isDefaultPrevented = src.defaultPrevented ||\n\t\t\t\tsrc.defaultPrevented === undefined &&\n\n\t\t\t\t// Support: Android <=2.3 only\n\t\t\t\tsrc.returnValue === false ?\n\t\t\treturnTrue :\n\t\t\treturnFalse;\n\n\t\t// Create target properties\n\t\t// Support: Safari <=6 - 7 only\n\t\t// Target should not be a text node (#504, #13143)\n\t\tthis.target = ( src.target && src.target.nodeType === 3 ) ?\n\t\t\tsrc.target.parentNode :\n\t\t\tsrc.target;\n\n\t\tthis.currentTarget = src.currentTarget;\n\t\tthis.relatedTarget = src.relatedTarget;\n\n\t// Event type\n\t} else {\n\t\tthis.type = src;\n\t}\n\n\t// Put explicitly provided properties onto the event object\n\tif ( props ) {\n\t\tjQuery.extend( this, props );\n\t}\n\n\t// Create a timestamp if incoming event doesn't have one\n\tthis.timeStamp = src && src.timeStamp || Date.now();\n\n\t// Mark it as fixed\n\tthis[ jQuery.expando ] = true;\n};\n\n// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\n// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\njQuery.Event.prototype = {\n\tconstructor: jQuery.Event,\n\tisDefaultPrevented: returnFalse,\n\tisPropagationStopped: returnFalse,\n\tisImmediatePropagationStopped: returnFalse,\n\tisSimulated: false,\n\n\tpreventDefault: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isDefaultPrevented = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.preventDefault();\n\t\t}\n\t},\n\tstopPropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isPropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopPropagation();\n\t\t}\n\t},\n\tstopImmediatePropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isImmediatePropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopImmediatePropagation();\n\t\t}\n\n\t\tthis.stopPropagation();\n\t}\n};\n\n// Includes all common event props including KeyEvent and MouseEvent specific props\njQuery.each( {\n\taltKey: true,\n\tbubbles: true,\n\tcancelable: true,\n\tchangedTouches: true,\n\tctrlKey: true,\n\tdetail: true,\n\teventPhase: true,\n\tmetaKey: true,\n\tpageX: true,\n\tpageY: true,\n\tshiftKey: true,\n\tview: true,\n\t\"char\": true,\n\tcode: true,\n\tcharCode: true,\n\tkey: true,\n\tkeyCode: true,\n\tbutton: true,\n\tbuttons: true,\n\tclientX: true,\n\tclientY: true,\n\toffsetX: true,\n\toffsetY: true,\n\tpointerId: true,\n\tpointerType: true,\n\tscreenX: true,\n\tscreenY: true,\n\ttargetTouches: true,\n\ttoElement: true,\n\ttouches: true,\n\twhich: true\n}, jQuery.event.addProp );\n\njQuery.each( { focus: \"focusin\", blur: \"focusout\" }, function( type, delegateType ) {\n\tjQuery.event.special[ type ] = {\n\n\t\t// Utilize native event if possible so blur/focus sequence is correct\n\t\tsetup: function() {\n\n\t\t\t// Claim the first handler\n\t\t\t// dataPriv.set( this, \"focus\", ... )\n\t\t\t// dataPriv.set( this, \"blur\", ... )\n\t\t\tleverageNative( this, type, expectSync );\n\n\t\t\t// Return false to allow normal processing in the caller\n\t\t\treturn false;\n\t\t},\n\t\ttrigger: function() {\n\n\t\t\t// Force setup before trigger\n\t\t\tleverageNative( this, type );\n\n\t\t\t// Return non-false to allow normal event-path propagation\n\t\t\treturn true;\n\t\t},\n\n\t\t// Suppress native focus or blur as it's already being fired\n\t\t// in leverageNative.\n\t\t_default: function() {\n\t\t\treturn true;\n\t\t},\n\n\t\tdelegateType: delegateType\n\t};\n} );\n\n// Create mouseenter/leave events using mouseover/out and event-time checks\n// so that event delegation works in jQuery.\n// Do the same for pointerenter/pointerleave and pointerover/pointerout\n//\n// Support: Safari 7 only\n// Safari sends mouseenter too often; see:\n// https://bugs.chromium.org/p/chromium/issues/detail?id=470258\n// for the description of the bug (it existed in older Chrome versions as well).\njQuery.each( {\n\tmouseenter: \"mouseover\",\n\tmouseleave: \"mouseout\",\n\tpointerenter: \"pointerover\",\n\tpointerleave: \"pointerout\"\n}, function( orig, fix ) {\n\tjQuery.event.special[ orig ] = {\n\t\tdelegateType: fix,\n\t\tbindType: fix,\n\n\t\thandle: function( event ) {\n\t\t\tvar ret,\n\t\t\t\ttarget = this,\n\t\t\t\trelated = event.relatedTarget,\n\t\t\t\thandleObj = event.handleObj;\n\n\t\t\t// For mouseenter/leave call the handler if related is outside the target.\n\t\t\t// NB: No relatedTarget if the mouse left/entered the browser window\n\t\t\tif ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) {\n\t\t\t\tevent.type = handleObj.origType;\n\t\t\t\tret = handleObj.handler.apply( this, arguments );\n\t\t\t\tevent.type = fix;\n\t\t\t}\n\t\t\treturn ret;\n\t\t}\n\t};\n} );\n\njQuery.fn.extend( {\n\n\ton: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn );\n\t},\n\tone: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn, 1 );\n\t},\n\toff: function( types, selector, fn ) {\n\t\tvar handleObj, type;\n\t\tif ( types && types.preventDefault && types.handleObj ) {\n\n\t\t\t// ( event ) dispatched jQuery.Event\n\t\t\thandleObj = types.handleObj;\n\t\t\tjQuery( types.delegateTarget ).off(\n\t\t\t\thandleObj.namespace ?\n\t\t\t\t\thandleObj.origType + \".\" + handleObj.namespace :\n\t\t\t\t\thandleObj.origType,\n\t\t\t\thandleObj.selector,\n\t\t\t\thandleObj.handler\n\t\t\t);\n\t\t\treturn this;\n\t\t}\n\t\tif ( typeof types === \"object\" ) {\n\n\t\t\t// ( types-object [, selector] )\n\t\t\tfor ( type in types ) {\n\t\t\t\tthis.off( type, selector, types[ type ] );\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t\tif ( selector === false || typeof selector === \"function\" ) {\n\n\t\t\t// ( types [, fn] )\n\t\t\tfn = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tif ( fn === false ) {\n\t\t\tfn = returnFalse;\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.remove( this, types, fn, selector );\n\t\t} );\n\t}\n} );\n\n\nvar\n\n\t// Support: IE <=10 - 11, Edge 12 - 13 only\n\t// In IE/Edge using regex groups here causes severe slowdowns.\n\t// See https://connect.microsoft.com/IE/feedback/details/1736512/\n\trnoInnerhtml = /\\s*$/g;\n\n// Prefer a tbody over its parent table for containing new rows\nfunction manipulationTarget( elem, content ) {\n\tif ( nodeName( elem, \"table\" ) &&\n\t\tnodeName( content.nodeType !== 11 ? content : content.firstChild, \"tr\" ) ) {\n\n\t\treturn jQuery( elem ).children( \"tbody\" )[ 0 ] || elem;\n\t}\n\n\treturn elem;\n}\n\n// Replace/restore the type attribute of script elements for safe DOM manipulation\nfunction disableScript( elem ) {\n\telem.type = ( elem.getAttribute( \"type\" ) !== null ) + \"/\" + elem.type;\n\treturn elem;\n}\nfunction restoreScript( elem ) {\n\tif ( ( elem.type || \"\" ).slice( 0, 5 ) === \"true/\" ) {\n\t\telem.type = elem.type.slice( 5 );\n\t} else {\n\t\telem.removeAttribute( \"type\" );\n\t}\n\n\treturn elem;\n}\n\nfunction cloneCopyEvent( src, dest ) {\n\tvar i, l, type, pdataOld, udataOld, udataCur, events;\n\n\tif ( dest.nodeType !== 1 ) {\n\t\treturn;\n\t}\n\n\t// 1. Copy private data: events, handlers, etc.\n\tif ( dataPriv.hasData( src ) ) {\n\t\tpdataOld = dataPriv.get( src );\n\t\tevents = pdataOld.events;\n\n\t\tif ( events ) {\n\t\t\tdataPriv.remove( dest, \"handle events\" );\n\n\t\t\tfor ( type in events ) {\n\t\t\t\tfor ( i = 0, l = events[ type ].length; i < l; i++ ) {\n\t\t\t\t\tjQuery.event.add( dest, type, events[ type ][ i ] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// 2. Copy user data\n\tif ( dataUser.hasData( src ) ) {\n\t\tudataOld = dataUser.access( src );\n\t\tudataCur = jQuery.extend( {}, udataOld );\n\n\t\tdataUser.set( dest, udataCur );\n\t}\n}\n\n// Fix IE bugs, see support tests\nfunction fixInput( src, dest ) {\n\tvar nodeName = dest.nodeName.toLowerCase();\n\n\t// Fails to persist the checked state of a cloned checkbox or radio button.\n\tif ( nodeName === \"input\" && rcheckableType.test( src.type ) ) {\n\t\tdest.checked = src.checked;\n\n\t// Fails to return the selected option to the default selected state when cloning options\n\t} else if ( nodeName === \"input\" || nodeName === \"textarea\" ) {\n\t\tdest.defaultValue = src.defaultValue;\n\t}\n}\n\nfunction domManip( collection, args, callback, ignored ) {\n\n\t// Flatten any nested arrays\n\targs = flat( args );\n\n\tvar fragment, first, scripts, hasScripts, node, doc,\n\t\ti = 0,\n\t\tl = collection.length,\n\t\tiNoClone = l - 1,\n\t\tvalue = args[ 0 ],\n\t\tvalueIsFunction = isFunction( value );\n\n\t// We can't cloneNode fragments that contain checked, in WebKit\n\tif ( valueIsFunction ||\n\t\t\t( l > 1 && typeof value === \"string\" &&\n\t\t\t\t!support.checkClone && rchecked.test( value ) ) ) {\n\t\treturn collection.each( function( index ) {\n\t\t\tvar self = collection.eq( index );\n\t\t\tif ( valueIsFunction ) {\n\t\t\t\targs[ 0 ] = value.call( this, index, self.html() );\n\t\t\t}\n\t\t\tdomManip( self, args, callback, ignored );\n\t\t} );\n\t}\n\n\tif ( l ) {\n\t\tfragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored );\n\t\tfirst = fragment.firstChild;\n\n\t\tif ( fragment.childNodes.length === 1 ) {\n\t\t\tfragment = first;\n\t\t}\n\n\t\t// Require either new content or an interest in ignored elements to invoke the callback\n\t\tif ( first || ignored ) {\n\t\t\tscripts = jQuery.map( getAll( fragment, \"script\" ), disableScript );\n\t\t\thasScripts = scripts.length;\n\n\t\t\t// Use the original fragment for the last item\n\t\t\t// instead of the first because it can end up\n\t\t\t// being emptied incorrectly in certain situations (#8070).\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tnode = fragment;\n\n\t\t\t\tif ( i !== iNoClone ) {\n\t\t\t\t\tnode = jQuery.clone( node, true, true );\n\n\t\t\t\t\t// Keep references to cloned scripts for later restoration\n\t\t\t\t\tif ( hasScripts ) {\n\n\t\t\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\t\t\tjQuery.merge( scripts, getAll( node, \"script\" ) );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tcallback.call( collection[ i ], node, i );\n\t\t\t}\n\n\t\t\tif ( hasScripts ) {\n\t\t\t\tdoc = scripts[ scripts.length - 1 ].ownerDocument;\n\n\t\t\t\t// Reenable scripts\n\t\t\t\tjQuery.map( scripts, restoreScript );\n\n\t\t\t\t// Evaluate executable scripts on first document insertion\n\t\t\t\tfor ( i = 0; i < hasScripts; i++ ) {\n\t\t\t\t\tnode = scripts[ i ];\n\t\t\t\t\tif ( rscriptType.test( node.type || \"\" ) &&\n\t\t\t\t\t\t!dataPriv.access( node, \"globalEval\" ) &&\n\t\t\t\t\t\tjQuery.contains( doc, node ) ) {\n\n\t\t\t\t\t\tif ( node.src && ( node.type || \"\" ).toLowerCase() !== \"module\" ) {\n\n\t\t\t\t\t\t\t// Optional AJAX dependency, but won't run scripts if not present\n\t\t\t\t\t\t\tif ( jQuery._evalUrl && !node.noModule ) {\n\t\t\t\t\t\t\t\tjQuery._evalUrl( node.src, {\n\t\t\t\t\t\t\t\t\tnonce: node.nonce || node.getAttribute( \"nonce\" )\n\t\t\t\t\t\t\t\t}, doc );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tDOMEval( node.textContent.replace( rcleanScript, \"\" ), node, doc );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn collection;\n}\n\nfunction remove( elem, selector, keepData ) {\n\tvar node,\n\t\tnodes = selector ? jQuery.filter( selector, elem ) : elem,\n\t\ti = 0;\n\n\tfor ( ; ( node = nodes[ i ] ) != null; i++ ) {\n\t\tif ( !keepData && node.nodeType === 1 ) {\n\t\t\tjQuery.cleanData( getAll( node ) );\n\t\t}\n\n\t\tif ( node.parentNode ) {\n\t\t\tif ( keepData && isAttached( node ) ) {\n\t\t\t\tsetGlobalEval( getAll( node, \"script\" ) );\n\t\t\t}\n\t\t\tnode.parentNode.removeChild( node );\n\t\t}\n\t}\n\n\treturn elem;\n}\n\njQuery.extend( {\n\thtmlPrefilter: function( html ) {\n\t\treturn html;\n\t},\n\n\tclone: function( elem, dataAndEvents, deepDataAndEvents ) {\n\t\tvar i, l, srcElements, destElements,\n\t\t\tclone = elem.cloneNode( true ),\n\t\t\tinPage = isAttached( elem );\n\n\t\t// Fix IE cloning issues\n\t\tif ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&\n\t\t\t\t!jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// We eschew Sizzle here for performance reasons: https://jsperf.com/getall-vs-sizzle/2\n\t\t\tdestElements = getAll( clone );\n\t\t\tsrcElements = getAll( elem );\n\n\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\tfixInput( srcElements[ i ], destElements[ i ] );\n\t\t\t}\n\t\t}\n\n\t\t// Copy the events from the original to the clone\n\t\tif ( dataAndEvents ) {\n\t\t\tif ( deepDataAndEvents ) {\n\t\t\t\tsrcElements = srcElements || getAll( elem );\n\t\t\t\tdestElements = destElements || getAll( clone );\n\n\t\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\t\tcloneCopyEvent( srcElements[ i ], destElements[ i ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcloneCopyEvent( elem, clone );\n\t\t\t}\n\t\t}\n\n\t\t// Preserve script evaluation history\n\t\tdestElements = getAll( clone, \"script\" );\n\t\tif ( destElements.length > 0 ) {\n\t\t\tsetGlobalEval( destElements, !inPage && getAll( elem, \"script\" ) );\n\t\t}\n\n\t\t// Return the cloned set\n\t\treturn clone;\n\t},\n\n\tcleanData: function( elems ) {\n\t\tvar data, elem, type,\n\t\t\tspecial = jQuery.event.special,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = elems[ i ] ) !== undefined; i++ ) {\n\t\t\tif ( acceptData( elem ) ) {\n\t\t\t\tif ( ( data = elem[ dataPriv.expando ] ) ) {\n\t\t\t\t\tif ( data.events ) {\n\t\t\t\t\t\tfor ( type in data.events ) {\n\t\t\t\t\t\t\tif ( special[ type ] ) {\n\t\t\t\t\t\t\t\tjQuery.event.remove( elem, type );\n\n\t\t\t\t\t\t\t// This is a shortcut to avoid jQuery.event.remove's overhead\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tjQuery.removeEvent( elem, type, data.handle );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataPriv.expando ] = undefined;\n\t\t\t\t}\n\t\t\t\tif ( elem[ dataUser.expando ] ) {\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataUser.expando ] = undefined;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n} );\n\njQuery.fn.extend( {\n\tdetach: function( selector ) {\n\t\treturn remove( this, selector, true );\n\t},\n\n\tremove: function( selector ) {\n\t\treturn remove( this, selector );\n\t},\n\n\ttext: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\treturn value === undefined ?\n\t\t\t\tjQuery.text( this ) :\n\t\t\t\tthis.empty().each( function() {\n\t\t\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\t\t\tthis.textContent = value;\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t}, null, value, arguments.length );\n\t},\n\n\tappend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.appendChild( elem );\n\t\t\t}\n\t\t} );\n\t},\n\n\tprepend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.insertBefore( elem, target.firstChild );\n\t\t\t}\n\t\t} );\n\t},\n\n\tbefore: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this );\n\t\t\t}\n\t\t} );\n\t},\n\n\tafter: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this.nextSibling );\n\t\t\t}\n\t\t} );\n\t},\n\n\tempty: function() {\n\t\tvar elem,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = this[ i ] ) != null; i++ ) {\n\t\t\tif ( elem.nodeType === 1 ) {\n\n\t\t\t\t// Prevent memory leaks\n\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\n\t\t\t\t// Remove any remaining nodes\n\t\t\t\telem.textContent = \"\";\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tclone: function( dataAndEvents, deepDataAndEvents ) {\n\t\tdataAndEvents = dataAndEvents == null ? false : dataAndEvents;\n\t\tdeepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;\n\n\t\treturn this.map( function() {\n\t\t\treturn jQuery.clone( this, dataAndEvents, deepDataAndEvents );\n\t\t} );\n\t},\n\n\thtml: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\tvar elem = this[ 0 ] || {},\n\t\t\t\ti = 0,\n\t\t\t\tl = this.length;\n\n\t\t\tif ( value === undefined && elem.nodeType === 1 ) {\n\t\t\t\treturn elem.innerHTML;\n\t\t\t}\n\n\t\t\t// See if we can take a shortcut and just use innerHTML\n\t\t\tif ( typeof value === \"string\" && !rnoInnerhtml.test( value ) &&\n\t\t\t\t!wrapMap[ ( rtagName.exec( value ) || [ \"\", \"\" ] )[ 1 ].toLowerCase() ] ) {\n\n\t\t\t\tvalue = jQuery.htmlPrefilter( value );\n\n\t\t\t\ttry {\n\t\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\t\telem = this[ i ] || {};\n\n\t\t\t\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\t\t\t\t\t\t\telem.innerHTML = value;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\telem = 0;\n\n\t\t\t\t// If using innerHTML throws an exception, use the fallback method\n\t\t\t\t} catch ( e ) {}\n\t\t\t}\n\n\t\t\tif ( elem ) {\n\t\t\t\tthis.empty().append( value );\n\t\t\t}\n\t\t}, null, value, arguments.length );\n\t},\n\n\treplaceWith: function() {\n\t\tvar ignored = [];\n\n\t\t// Make the changes, replacing each non-ignored context element with the new content\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tvar parent = this.parentNode;\n\n\t\t\tif ( jQuery.inArray( this, ignored ) < 0 ) {\n\t\t\t\tjQuery.cleanData( getAll( this ) );\n\t\t\t\tif ( parent ) {\n\t\t\t\t\tparent.replaceChild( elem, this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Force callback invocation\n\t\t}, ignored );\n\t}\n} );\n\njQuery.each( {\n\tappendTo: \"append\",\n\tprependTo: \"prepend\",\n\tinsertBefore: \"before\",\n\tinsertAfter: \"after\",\n\treplaceAll: \"replaceWith\"\n}, function( name, original ) {\n\tjQuery.fn[ name ] = function( selector ) {\n\t\tvar elems,\n\t\t\tret = [],\n\t\t\tinsert = jQuery( selector ),\n\t\t\tlast = insert.length - 1,\n\t\t\ti = 0;\n\n\t\tfor ( ; i <= last; i++ ) {\n\t\t\telems = i === last ? this : this.clone( true );\n\t\t\tjQuery( insert[ i ] )[ original ]( elems );\n\n\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t// .get() because push.apply(_, arraylike) throws on ancient WebKit\n\t\t\tpush.apply( ret, elems.get() );\n\t\t}\n\n\t\treturn this.pushStack( ret );\n\t};\n} );\nvar rnumnonpx = new RegExp( \"^(\" + pnum + \")(?!px)[a-z%]+$\", \"i\" );\n\nvar getStyles = function( elem ) {\n\n\t\t// Support: IE <=11 only, Firefox <=30 (#15098, #14150)\n\t\t// IE throws on elements created in popups\n\t\t// FF meanwhile throws on frame elements through \"defaultView.getComputedStyle\"\n\t\tvar view = elem.ownerDocument.defaultView;\n\n\t\tif ( !view || !view.opener ) {\n\t\t\tview = window;\n\t\t}\n\n\t\treturn view.getComputedStyle( elem );\n\t};\n\nvar swap = function( elem, options, callback ) {\n\tvar ret, name,\n\t\told = {};\n\n\t// Remember the old values, and insert the new ones\n\tfor ( name in options ) {\n\t\told[ name ] = elem.style[ name ];\n\t\telem.style[ name ] = options[ name ];\n\t}\n\n\tret = callback.call( elem );\n\n\t// Revert the old values\n\tfor ( name in options ) {\n\t\telem.style[ name ] = old[ name ];\n\t}\n\n\treturn ret;\n};\n\n\nvar rboxStyle = new RegExp( cssExpand.join( \"|\" ), \"i\" );\n\n\n\n( function() {\n\n\t// Executing both pixelPosition & boxSizingReliable tests require only one layout\n\t// so they're executed at the same time to save the second computation.\n\tfunction computeStyleTests() {\n\n\t\t// This is a singleton, we need to execute it only once\n\t\tif ( !div ) {\n\t\t\treturn;\n\t\t}\n\n\t\tcontainer.style.cssText = \"position:absolute;left:-11111px;width:60px;\" +\n\t\t\t\"margin-top:1px;padding:0;border:0\";\n\t\tdiv.style.cssText =\n\t\t\t\"position:relative;display:block;box-sizing:border-box;overflow:scroll;\" +\n\t\t\t\"margin:auto;border:1px;padding:1px;\" +\n\t\t\t\"width:60%;top:1%\";\n\t\tdocumentElement.appendChild( container ).appendChild( div );\n\n\t\tvar divStyle = window.getComputedStyle( div );\n\t\tpixelPositionVal = divStyle.top !== \"1%\";\n\n\t\t// Support: Android 4.0 - 4.3 only, Firefox <=3 - 44\n\t\treliableMarginLeftVal = roundPixelMeasures( divStyle.marginLeft ) === 12;\n\n\t\t// Support: Android 4.0 - 4.3 only, Safari <=9.1 - 10.1, iOS <=7.0 - 9.3\n\t\t// Some styles come back with percentage values, even though they shouldn't\n\t\tdiv.style.right = \"60%\";\n\t\tpixelBoxStylesVal = roundPixelMeasures( divStyle.right ) === 36;\n\n\t\t// Support: IE 9 - 11 only\n\t\t// Detect misreporting of content dimensions for box-sizing:border-box elements\n\t\tboxSizingReliableVal = roundPixelMeasures( divStyle.width ) === 36;\n\n\t\t// Support: IE 9 only\n\t\t// Detect overflow:scroll screwiness (gh-3699)\n\t\t// Support: Chrome <=64\n\t\t// Don't get tricked when zoom affects offsetWidth (gh-4029)\n\t\tdiv.style.position = \"absolute\";\n\t\tscrollboxSizeVal = roundPixelMeasures( div.offsetWidth / 3 ) === 12;\n\n\t\tdocumentElement.removeChild( container );\n\n\t\t// Nullify the div so it wouldn't be stored in the memory and\n\t\t// it will also be a sign that checks already performed\n\t\tdiv = null;\n\t}\n\n\tfunction roundPixelMeasures( measure ) {\n\t\treturn Math.round( parseFloat( measure ) );\n\t}\n\n\tvar pixelPositionVal, boxSizingReliableVal, scrollboxSizeVal, pixelBoxStylesVal,\n\t\treliableTrDimensionsVal, reliableMarginLeftVal,\n\t\tcontainer = document.createElement( \"div\" ),\n\t\tdiv = document.createElement( \"div\" );\n\n\t// Finish early in limited (non-browser) environments\n\tif ( !div.style ) {\n\t\treturn;\n\t}\n\n\t// Support: IE <=9 - 11 only\n\t// Style of cloned element affects source element cloned (#8908)\n\tdiv.style.backgroundClip = \"content-box\";\n\tdiv.cloneNode( true ).style.backgroundClip = \"\";\n\tsupport.clearCloneStyle = div.style.backgroundClip === \"content-box\";\n\n\tjQuery.extend( support, {\n\t\tboxSizingReliable: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn boxSizingReliableVal;\n\t\t},\n\t\tpixelBoxStyles: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelBoxStylesVal;\n\t\t},\n\t\tpixelPosition: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelPositionVal;\n\t\t},\n\t\treliableMarginLeft: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn reliableMarginLeftVal;\n\t\t},\n\t\tscrollboxSize: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn scrollboxSizeVal;\n\t\t},\n\n\t\t// Support: IE 9 - 11+, Edge 15 - 18+\n\t\t// IE/Edge misreport `getComputedStyle` of table rows with width/height\n\t\t// set in CSS while `offset*` properties report correct values.\n\t\t// Behavior in IE 9 is more subtle than in newer versions & it passes\n\t\t// some versions of this test; make sure not to make it pass there!\n\t\t//\n\t\t// Support: Firefox 70+\n\t\t// Only Firefox includes border widths\n\t\t// in computed dimensions. (gh-4529)\n\t\treliableTrDimensions: function() {\n\t\t\tvar table, tr, trChild, trStyle;\n\t\t\tif ( reliableTrDimensionsVal == null ) {\n\t\t\t\ttable = document.createElement( \"table\" );\n\t\t\t\ttr = document.createElement( \"tr\" );\n\t\t\t\ttrChild = document.createElement( \"div\" );\n\n\t\t\t\ttable.style.cssText = \"position:absolute;left:-11111px;border-collapse:separate\";\n\t\t\t\ttr.style.cssText = \"border:1px solid\";\n\n\t\t\t\t// Support: Chrome 86+\n\t\t\t\t// Height set through cssText does not get applied.\n\t\t\t\t// Computed height then comes back as 0.\n\t\t\t\ttr.style.height = \"1px\";\n\t\t\t\ttrChild.style.height = \"9px\";\n\n\t\t\t\t// Support: Android 8 Chrome 86+\n\t\t\t\t// In our bodyBackground.html iframe,\n\t\t\t\t// display for all div elements is set to \"inline\",\n\t\t\t\t// which causes a problem only in Android 8 Chrome 86.\n\t\t\t\t// Ensuring the div is display: block\n\t\t\t\t// gets around this issue.\n\t\t\t\ttrChild.style.display = \"block\";\n\n\t\t\t\tdocumentElement\n\t\t\t\t\t.appendChild( table )\n\t\t\t\t\t.appendChild( tr )\n\t\t\t\t\t.appendChild( trChild );\n\n\t\t\t\ttrStyle = window.getComputedStyle( tr );\n\t\t\t\treliableTrDimensionsVal = ( parseInt( trStyle.height, 10 ) +\n\t\t\t\t\tparseInt( trStyle.borderTopWidth, 10 ) +\n\t\t\t\t\tparseInt( trStyle.borderBottomWidth, 10 ) ) === tr.offsetHeight;\n\n\t\t\t\tdocumentElement.removeChild( table );\n\t\t\t}\n\t\t\treturn reliableTrDimensionsVal;\n\t\t}\n\t} );\n} )();\n\n\nfunction curCSS( elem, name, computed ) {\n\tvar width, minWidth, maxWidth, ret,\n\n\t\t// Support: Firefox 51+\n\t\t// Retrieving style before computed somehow\n\t\t// fixes an issue with getting wrong values\n\t\t// on detached elements\n\t\tstyle = elem.style;\n\n\tcomputed = computed || getStyles( elem );\n\n\t// getPropertyValue is needed for:\n\t// .css('filter') (IE 9 only, #12537)\n\t// .css('--customProperty) (#3144)\n\tif ( computed ) {\n\t\tret = computed.getPropertyValue( name ) || computed[ name ];\n\n\t\tif ( ret === \"\" && !isAttached( elem ) ) {\n\t\t\tret = jQuery.style( elem, name );\n\t\t}\n\n\t\t// A tribute to the \"awesome hack by Dean Edwards\"\n\t\t// Android Browser returns percentage for some values,\n\t\t// but width seems to be reliably pixels.\n\t\t// This is against the CSSOM draft spec:\n\t\t// https://drafts.csswg.org/cssom/#resolved-values\n\t\tif ( !support.pixelBoxStyles() && rnumnonpx.test( ret ) && rboxStyle.test( name ) ) {\n\n\t\t\t// Remember the original values\n\t\t\twidth = style.width;\n\t\t\tminWidth = style.minWidth;\n\t\t\tmaxWidth = style.maxWidth;\n\n\t\t\t// Put in the new values to get a computed value out\n\t\t\tstyle.minWidth = style.maxWidth = style.width = ret;\n\t\t\tret = computed.width;\n\n\t\t\t// Revert the changed values\n\t\t\tstyle.width = width;\n\t\t\tstyle.minWidth = minWidth;\n\t\t\tstyle.maxWidth = maxWidth;\n\t\t}\n\t}\n\n\treturn ret !== undefined ?\n\n\t\t// Support: IE <=9 - 11 only\n\t\t// IE returns zIndex value as an integer.\n\t\tret + \"\" :\n\t\tret;\n}\n\n\nfunction addGetHookIf( conditionFn, hookFn ) {\n\n\t// Define the hook, we'll check on the first run if it's really needed.\n\treturn {\n\t\tget: function() {\n\t\t\tif ( conditionFn() ) {\n\n\t\t\t\t// Hook not needed (or it's not possible to use it due\n\t\t\t\t// to missing dependency), remove it.\n\t\t\t\tdelete this.get;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Hook needed; redefine it so that the support test is not executed again.\n\t\t\treturn ( this.get = hookFn ).apply( this, arguments );\n\t\t}\n\t};\n}\n\n\nvar cssPrefixes = [ \"Webkit\", \"Moz\", \"ms\" ],\n\temptyStyle = document.createElement( \"div\" ).style,\n\tvendorProps = {};\n\n// Return a vendor-prefixed property or undefined\nfunction vendorPropName( name ) {\n\n\t// Check for vendor prefixed names\n\tvar capName = name[ 0 ].toUpperCase() + name.slice( 1 ),\n\t\ti = cssPrefixes.length;\n\n\twhile ( i-- ) {\n\t\tname = cssPrefixes[ i ] + capName;\n\t\tif ( name in emptyStyle ) {\n\t\t\treturn name;\n\t\t}\n\t}\n}\n\n// Return a potentially-mapped jQuery.cssProps or vendor prefixed property\nfunction finalPropName( name ) {\n\tvar final = jQuery.cssProps[ name ] || vendorProps[ name ];\n\n\tif ( final ) {\n\t\treturn final;\n\t}\n\tif ( name in emptyStyle ) {\n\t\treturn name;\n\t}\n\treturn vendorProps[ name ] = vendorPropName( name ) || name;\n}\n\n\nvar\n\n\t// Swappable if display is none or starts with table\n\t// except \"table\", \"table-cell\", or \"table-caption\"\n\t// See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display\n\trdisplayswap = /^(none|table(?!-c[ea]).+)/,\n\trcustomProp = /^--/,\n\tcssShow = { position: \"absolute\", visibility: \"hidden\", display: \"block\" },\n\tcssNormalTransform = {\n\t\tletterSpacing: \"0\",\n\t\tfontWeight: \"400\"\n\t};\n\nfunction setPositiveNumber( _elem, value, subtract ) {\n\n\t// Any relative (+/-) values have already been\n\t// normalized at this point\n\tvar matches = rcssNum.exec( value );\n\treturn matches ?\n\n\t\t// Guard against undefined \"subtract\", e.g., when used as in cssHooks\n\t\tMath.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || \"px\" ) :\n\t\tvalue;\n}\n\nfunction boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computedVal ) {\n\tvar i = dimension === \"width\" ? 1 : 0,\n\t\textra = 0,\n\t\tdelta = 0;\n\n\t// Adjustment may not be necessary\n\tif ( box === ( isBorderBox ? \"border\" : \"content\" ) ) {\n\t\treturn 0;\n\t}\n\n\tfor ( ; i < 4; i += 2 ) {\n\n\t\t// Both box models exclude margin\n\t\tif ( box === \"margin\" ) {\n\t\t\tdelta += jQuery.css( elem, box + cssExpand[ i ], true, styles );\n\t\t}\n\n\t\t// If we get here with a content-box, we're seeking \"padding\" or \"border\" or \"margin\"\n\t\tif ( !isBorderBox ) {\n\n\t\t\t// Add padding\n\t\t\tdelta += jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\n\t\t\t// For \"border\" or \"margin\", add border\n\t\t\tif ( box !== \"padding\" ) {\n\t\t\t\tdelta += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\n\t\t\t// But still keep track of it otherwise\n\t\t\t} else {\n\t\t\t\textra += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\n\t\t// If we get here with a border-box (content + padding + border), we're seeking \"content\" or\n\t\t// \"padding\" or \"margin\"\n\t\t} else {\n\n\t\t\t// For \"content\", subtract padding\n\t\t\tif ( box === \"content\" ) {\n\t\t\t\tdelta -= jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\t\t\t}\n\n\t\t\t// For \"content\" or \"padding\", subtract border\n\t\t\tif ( box !== \"margin\" ) {\n\t\t\t\tdelta -= jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Account for positive content-box scroll gutter when requested by providing computedVal\n\tif ( !isBorderBox && computedVal >= 0 ) {\n\n\t\t// offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border\n\t\t// Assuming integer scroll gutter, subtract the rest and round down\n\t\tdelta += Math.max( 0, Math.ceil(\n\t\t\telem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\n\t\t\tcomputedVal -\n\t\t\tdelta -\n\t\t\textra -\n\t\t\t0.5\n\n\t\t// If offsetWidth/offsetHeight is unknown, then we can't determine content-box scroll gutter\n\t\t// Use an explicit zero to avoid NaN (gh-3964)\n\t\t) ) || 0;\n\t}\n\n\treturn delta;\n}\n\nfunction getWidthOrHeight( elem, dimension, extra ) {\n\n\t// Start with computed style\n\tvar styles = getStyles( elem ),\n\n\t\t// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-4322).\n\t\t// Fake content-box until we know it's needed to know the true value.\n\t\tboxSizingNeeded = !support.boxSizingReliable() || extra,\n\t\tisBorderBox = boxSizingNeeded &&\n\t\t\tjQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\tvalueIsBorderBox = isBorderBox,\n\n\t\tval = curCSS( elem, dimension, styles ),\n\t\toffsetProp = \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 );\n\n\t// Support: Firefox <=54\n\t// Return a confounding non-pixel value or feign ignorance, as appropriate.\n\tif ( rnumnonpx.test( val ) ) {\n\t\tif ( !extra ) {\n\t\t\treturn val;\n\t\t}\n\t\tval = \"auto\";\n\t}\n\n\n\t// Support: IE 9 - 11 only\n\t// Use offsetWidth/offsetHeight for when box sizing is unreliable.\n\t// In those cases, the computed value can be trusted to be border-box.\n\tif ( ( !support.boxSizingReliable() && isBorderBox ||\n\n\t\t// Support: IE 10 - 11+, Edge 15 - 18+\n\t\t// IE/Edge misreport `getComputedStyle` of table rows with width/height\n\t\t// set in CSS while `offset*` properties report correct values.\n\t\t// Interestingly, in some cases IE 9 doesn't suffer from this issue.\n\t\t!support.reliableTrDimensions() && nodeName( elem, \"tr\" ) ||\n\n\t\t// Fall back to offsetWidth/offsetHeight when value is \"auto\"\n\t\t// This happens for inline elements with no explicit setting (gh-3571)\n\t\tval === \"auto\" ||\n\n\t\t// Support: Android <=4.1 - 4.3 only\n\t\t// Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602)\n\t\t!parseFloat( val ) && jQuery.css( elem, \"display\", false, styles ) === \"inline\" ) &&\n\n\t\t// Make sure the element is visible & connected\n\t\telem.getClientRects().length ) {\n\n\t\tisBorderBox = jQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\";\n\n\t\t// Where available, offsetWidth/offsetHeight approximate border box dimensions.\n\t\t// Where not available (e.g., SVG), assume unreliable box-sizing and interpret the\n\t\t// retrieved value as a content box dimension.\n\t\tvalueIsBorderBox = offsetProp in elem;\n\t\tif ( valueIsBorderBox ) {\n\t\t\tval = elem[ offsetProp ];\n\t\t}\n\t}\n\n\t// Normalize \"\" and auto\n\tval = parseFloat( val ) || 0;\n\n\t// Adjust for the element's box model\n\treturn ( val +\n\t\tboxModelAdjustment(\n\t\t\telem,\n\t\t\tdimension,\n\t\t\textra || ( isBorderBox ? \"border\" : \"content\" ),\n\t\t\tvalueIsBorderBox,\n\t\t\tstyles,\n\n\t\t\t// Provide the current computed size to request scroll gutter calculation (gh-3589)\n\t\t\tval\n\t\t)\n\t) + \"px\";\n}\n\njQuery.extend( {\n\n\t// Add in style property hooks for overriding the default\n\t// behavior of getting and setting a style property\n\tcssHooks: {\n\t\topacity: {\n\t\t\tget: function( elem, computed ) {\n\t\t\t\tif ( computed ) {\n\n\t\t\t\t\t// We should always get a number back from opacity\n\t\t\t\t\tvar ret = curCSS( elem, \"opacity\" );\n\t\t\t\t\treturn ret === \"\" ? \"1\" : ret;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t// Don't automatically add \"px\" to these possibly-unitless properties\n\tcssNumber: {\n\t\t\"animationIterationCount\": true,\n\t\t\"columnCount\": true,\n\t\t\"fillOpacity\": true,\n\t\t\"flexGrow\": true,\n\t\t\"flexShrink\": true,\n\t\t\"fontWeight\": true,\n\t\t\"gridArea\": true,\n\t\t\"gridColumn\": true,\n\t\t\"gridColumnEnd\": true,\n\t\t\"gridColumnStart\": true,\n\t\t\"gridRow\": true,\n\t\t\"gridRowEnd\": true,\n\t\t\"gridRowStart\": true,\n\t\t\"lineHeight\": true,\n\t\t\"opacity\": true,\n\t\t\"order\": true,\n\t\t\"orphans\": true,\n\t\t\"widows\": true,\n\t\t\"zIndex\": true,\n\t\t\"zoom\": true\n\t},\n\n\t// Add in properties whose names you wish to fix before\n\t// setting or getting the value\n\tcssProps: {},\n\n\t// Get and set the style property on a DOM Node\n\tstyle: function( elem, name, value, extra ) {\n\n\t\t// Don't set styles on text and comment nodes\n\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Make sure that we're working with the right name\n\t\tvar ret, type, hooks,\n\t\t\torigName = camelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name ),\n\t\t\tstyle = elem.style;\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to query the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Gets hook for the prefixed version, then unprefixed version\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// Check if we're setting a value\n\t\tif ( value !== undefined ) {\n\t\t\ttype = typeof value;\n\n\t\t\t// Convert \"+=\" or \"-=\" to relative numbers (#7345)\n\t\t\tif ( type === \"string\" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) {\n\t\t\t\tvalue = adjustCSS( elem, name, ret );\n\n\t\t\t\t// Fixes bug #9237\n\t\t\t\ttype = \"number\";\n\t\t\t}\n\n\t\t\t// Make sure that null and NaN values aren't set (#7116)\n\t\t\tif ( value == null || value !== value ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If a number was passed in, add the unit (except for certain CSS properties)\n\t\t\t// The isCustomProp check can be removed in jQuery 4.0 when we only auto-append\n\t\t\t// \"px\" to a few hardcoded values.\n\t\t\tif ( type === \"number\" && !isCustomProp ) {\n\t\t\t\tvalue += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? \"\" : \"px\" );\n\t\t\t}\n\n\t\t\t// background-* props affect original clone's values\n\t\t\tif ( !support.clearCloneStyle && value === \"\" && name.indexOf( \"background\" ) === 0 ) {\n\t\t\t\tstyle[ name ] = \"inherit\";\n\t\t\t}\n\n\t\t\t// If a hook was provided, use that value, otherwise just set the specified value\n\t\t\tif ( !hooks || !( \"set\" in hooks ) ||\n\t\t\t\t( value = hooks.set( elem, value, extra ) ) !== undefined ) {\n\n\t\t\t\tif ( isCustomProp ) {\n\t\t\t\t\tstyle.setProperty( name, value );\n\t\t\t\t} else {\n\t\t\t\t\tstyle[ name ] = value;\n\t\t\t\t}\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// If a hook was provided get the non-computed value from there\n\t\t\tif ( hooks && \"get\" in hooks &&\n\t\t\t\t( ret = hooks.get( elem, false, extra ) ) !== undefined ) {\n\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\t// Otherwise just get the value from the style object\n\t\t\treturn style[ name ];\n\t\t}\n\t},\n\n\tcss: function( elem, name, extra, styles ) {\n\t\tvar val, num, hooks,\n\t\t\torigName = camelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name );\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to modify the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Try prefixed name followed by the unprefixed name\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// If a hook was provided get the computed value from there\n\t\tif ( hooks && \"get\" in hooks ) {\n\t\t\tval = hooks.get( elem, true, extra );\n\t\t}\n\n\t\t// Otherwise, if a way to get the computed value exists, use that\n\t\tif ( val === undefined ) {\n\t\t\tval = curCSS( elem, name, styles );\n\t\t}\n\n\t\t// Convert \"normal\" to computed value\n\t\tif ( val === \"normal\" && name in cssNormalTransform ) {\n\t\t\tval = cssNormalTransform[ name ];\n\t\t}\n\n\t\t// Make numeric if forced or a qualifier was provided and val looks numeric\n\t\tif ( extra === \"\" || extra ) {\n\t\t\tnum = parseFloat( val );\n\t\t\treturn extra === true || isFinite( num ) ? num || 0 : val;\n\t\t}\n\n\t\treturn val;\n\t}\n} );\n\njQuery.each( [ \"height\", \"width\" ], function( _i, dimension ) {\n\tjQuery.cssHooks[ dimension ] = {\n\t\tget: function( elem, computed, extra ) {\n\t\t\tif ( computed ) {\n\n\t\t\t\t// Certain elements can have dimension info if we invisibly show them\n\t\t\t\t// but it must have a current display style that would benefit\n\t\t\t\treturn rdisplayswap.test( jQuery.css( elem, \"display\" ) ) &&\n\n\t\t\t\t\t// Support: Safari 8+\n\t\t\t\t\t// Table columns in Safari have non-zero offsetWidth & zero\n\t\t\t\t\t// getBoundingClientRect().width unless display is changed.\n\t\t\t\t\t// Support: IE <=11 only\n\t\t\t\t\t// Running getBoundingClientRect on a disconnected node\n\t\t\t\t\t// in IE throws an error.\n\t\t\t\t\t( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ?\n\t\t\t\t\tswap( elem, cssShow, function() {\n\t\t\t\t\t\treturn getWidthOrHeight( elem, dimension, extra );\n\t\t\t\t\t} ) :\n\t\t\t\t\tgetWidthOrHeight( elem, dimension, extra );\n\t\t\t}\n\t\t},\n\n\t\tset: function( elem, value, extra ) {\n\t\t\tvar matches,\n\t\t\t\tstyles = getStyles( elem ),\n\n\t\t\t\t// Only read styles.position if the test has a chance to fail\n\t\t\t\t// to avoid forcing a reflow.\n\t\t\t\tscrollboxSizeBuggy = !support.scrollboxSize() &&\n\t\t\t\t\tstyles.position === \"absolute\",\n\n\t\t\t\t// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-3991)\n\t\t\t\tboxSizingNeeded = scrollboxSizeBuggy || extra,\n\t\t\t\tisBorderBox = boxSizingNeeded &&\n\t\t\t\t\tjQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\t\t\tsubtract = extra ?\n\t\t\t\t\tboxModelAdjustment(\n\t\t\t\t\t\telem,\n\t\t\t\t\t\tdimension,\n\t\t\t\t\t\textra,\n\t\t\t\t\t\tisBorderBox,\n\t\t\t\t\t\tstyles\n\t\t\t\t\t) :\n\t\t\t\t\t0;\n\n\t\t\t// Account for unreliable border-box dimensions by comparing offset* to computed and\n\t\t\t// faking a content-box to get border and padding (gh-3699)\n\t\t\tif ( isBorderBox && scrollboxSizeBuggy ) {\n\t\t\t\tsubtract -= Math.ceil(\n\t\t\t\t\telem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\n\t\t\t\t\tparseFloat( styles[ dimension ] ) -\n\t\t\t\t\tboxModelAdjustment( elem, dimension, \"border\", false, styles ) -\n\t\t\t\t\t0.5\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// Convert to pixels if value adjustment is needed\n\t\t\tif ( subtract && ( matches = rcssNum.exec( value ) ) &&\n\t\t\t\t( matches[ 3 ] || \"px\" ) !== \"px\" ) {\n\n\t\t\t\telem.style[ dimension ] = value;\n\t\t\t\tvalue = jQuery.css( elem, dimension );\n\t\t\t}\n\n\t\t\treturn setPositiveNumber( elem, value, subtract );\n\t\t}\n\t};\n} );\n\njQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft,\n\tfunction( elem, computed ) {\n\t\tif ( computed ) {\n\t\t\treturn ( parseFloat( curCSS( elem, \"marginLeft\" ) ) ||\n\t\t\t\telem.getBoundingClientRect().left -\n\t\t\t\t\tswap( elem, { marginLeft: 0 }, function() {\n\t\t\t\t\t\treturn elem.getBoundingClientRect().left;\n\t\t\t\t\t} )\n\t\t\t) + \"px\";\n\t\t}\n\t}\n);\n\n// These hooks are used by animate to expand properties\njQuery.each( {\n\tmargin: \"\",\n\tpadding: \"\",\n\tborder: \"Width\"\n}, function( prefix, suffix ) {\n\tjQuery.cssHooks[ prefix + suffix ] = {\n\t\texpand: function( value ) {\n\t\t\tvar i = 0,\n\t\t\t\texpanded = {},\n\n\t\t\t\t// Assumes a single number if not a string\n\t\t\t\tparts = typeof value === \"string\" ? value.split( \" \" ) : [ value ];\n\n\t\t\tfor ( ; i < 4; i++ ) {\n\t\t\t\texpanded[ prefix + cssExpand[ i ] + suffix ] =\n\t\t\t\t\tparts[ i ] || parts[ i - 2 ] || parts[ 0 ];\n\t\t\t}\n\n\t\t\treturn expanded;\n\t\t}\n\t};\n\n\tif ( prefix !== \"margin\" ) {\n\t\tjQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;\n\t}\n} );\n\njQuery.fn.extend( {\n\tcss: function( name, value ) {\n\t\treturn access( this, function( elem, name, value ) {\n\t\t\tvar styles, len,\n\t\t\t\tmap = {},\n\t\t\t\ti = 0;\n\n\t\t\tif ( Array.isArray( name ) ) {\n\t\t\t\tstyles = getStyles( elem );\n\t\t\t\tlen = name.length;\n\n\t\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\t\tmap[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );\n\t\t\t\t}\n\n\t\t\t\treturn map;\n\t\t\t}\n\n\t\t\treturn value !== undefined ?\n\t\t\t\tjQuery.style( elem, name, value ) :\n\t\t\t\tjQuery.css( elem, name );\n\t\t}, name, value, arguments.length > 1 );\n\t}\n} );\n\n\nfunction Tween( elem, options, prop, end, easing ) {\n\treturn new Tween.prototype.init( elem, options, prop, end, easing );\n}\njQuery.Tween = Tween;\n\nTween.prototype = {\n\tconstructor: Tween,\n\tinit: function( elem, options, prop, end, easing, unit ) {\n\t\tthis.elem = elem;\n\t\tthis.prop = prop;\n\t\tthis.easing = easing || jQuery.easing._default;\n\t\tthis.options = options;\n\t\tthis.start = this.now = this.cur();\n\t\tthis.end = end;\n\t\tthis.unit = unit || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" );\n\t},\n\tcur: function() {\n\t\tvar hooks = Tween.propHooks[ this.prop ];\n\n\t\treturn hooks && hooks.get ?\n\t\t\thooks.get( this ) :\n\t\t\tTween.propHooks._default.get( this );\n\t},\n\trun: function( percent ) {\n\t\tvar eased,\n\t\t\thooks = Tween.propHooks[ this.prop ];\n\n\t\tif ( this.options.duration ) {\n\t\t\tthis.pos = eased = jQuery.easing[ this.easing ](\n\t\t\t\tpercent, this.options.duration * percent, 0, 1, this.options.duration\n\t\t\t);\n\t\t} else {\n\t\t\tthis.pos = eased = percent;\n\t\t}\n\t\tthis.now = ( this.end - this.start ) * eased + this.start;\n\n\t\tif ( this.options.step ) {\n\t\t\tthis.options.step.call( this.elem, this.now, this );\n\t\t}\n\n\t\tif ( hooks && hooks.set ) {\n\t\t\thooks.set( this );\n\t\t} else {\n\t\t\tTween.propHooks._default.set( this );\n\t\t}\n\t\treturn this;\n\t}\n};\n\nTween.prototype.init.prototype = Tween.prototype;\n\nTween.propHooks = {\n\t_default: {\n\t\tget: function( tween ) {\n\t\t\tvar result;\n\n\t\t\t// Use a property on the element directly when it is not a DOM element,\n\t\t\t// or when there is no matching style property that exists.\n\t\t\tif ( tween.elem.nodeType !== 1 ||\n\t\t\t\ttween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) {\n\t\t\t\treturn tween.elem[ tween.prop ];\n\t\t\t}\n\n\t\t\t// Passing an empty string as a 3rd parameter to .css will automatically\n\t\t\t// attempt a parseFloat and fallback to a string if the parse fails.\n\t\t\t// Simple values such as \"10px\" are parsed to Float;\n\t\t\t// complex values such as \"rotate(1rad)\" are returned as-is.\n\t\t\tresult = jQuery.css( tween.elem, tween.prop, \"\" );\n\n\t\t\t// Empty strings, null, undefined and \"auto\" are converted to 0.\n\t\t\treturn !result || result === \"auto\" ? 0 : result;\n\t\t},\n\t\tset: function( tween ) {\n\n\t\t\t// Use step hook for back compat.\n\t\t\t// Use cssHook if its there.\n\t\t\t// Use .style if available and use plain properties where available.\n\t\t\tif ( jQuery.fx.step[ tween.prop ] ) {\n\t\t\t\tjQuery.fx.step[ tween.prop ]( tween );\n\t\t\t} else if ( tween.elem.nodeType === 1 && (\n\t\t\t\tjQuery.cssHooks[ tween.prop ] ||\n\t\t\t\t\ttween.elem.style[ finalPropName( tween.prop ) ] != null ) ) {\n\t\t\t\tjQuery.style( tween.elem, tween.prop, tween.now + tween.unit );\n\t\t\t} else {\n\t\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Support: IE <=9 only\n// Panic based approach to setting things on disconnected nodes\nTween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {\n\tset: function( tween ) {\n\t\tif ( tween.elem.nodeType && tween.elem.parentNode ) {\n\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t}\n\t}\n};\n\njQuery.easing = {\n\tlinear: function( p ) {\n\t\treturn p;\n\t},\n\tswing: function( p ) {\n\t\treturn 0.5 - Math.cos( p * Math.PI ) / 2;\n\t},\n\t_default: \"swing\"\n};\n\njQuery.fx = Tween.prototype.init;\n\n// Back compat <1.8 extension point\njQuery.fx.step = {};\n\n\n\n\nvar\n\tfxNow, inProgress,\n\trfxtypes = /^(?:toggle|show|hide)$/,\n\trrun = /queueHooks$/;\n\nfunction schedule() {\n\tif ( inProgress ) {\n\t\tif ( document.hidden === false && window.requestAnimationFrame ) {\n\t\t\twindow.requestAnimationFrame( schedule );\n\t\t} else {\n\t\t\twindow.setTimeout( schedule, jQuery.fx.interval );\n\t\t}\n\n\t\tjQuery.fx.tick();\n\t}\n}\n\n// Animations created synchronously will run synchronously\nfunction createFxNow() {\n\twindow.setTimeout( function() {\n\t\tfxNow = undefined;\n\t} );\n\treturn ( fxNow = Date.now() );\n}\n\n// Generate parameters to create a standard animation\nfunction genFx( type, includeWidth ) {\n\tvar which,\n\t\ti = 0,\n\t\tattrs = { height: type };\n\n\t// If we include width, step value is 1 to do all cssExpand values,\n\t// otherwise step value is 2 to skip over Left and Right\n\tincludeWidth = includeWidth ? 1 : 0;\n\tfor ( ; i < 4; i += 2 - includeWidth ) {\n\t\twhich = cssExpand[ i ];\n\t\tattrs[ \"margin\" + which ] = attrs[ \"padding\" + which ] = type;\n\t}\n\n\tif ( includeWidth ) {\n\t\tattrs.opacity = attrs.width = type;\n\t}\n\n\treturn attrs;\n}\n\nfunction createTween( value, prop, animation ) {\n\tvar tween,\n\t\tcollection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ \"*\" ] ),\n\t\tindex = 0,\n\t\tlength = collection.length;\n\tfor ( ; index < length; index++ ) {\n\t\tif ( ( tween = collection[ index ].call( animation, prop, value ) ) ) {\n\n\t\t\t// We're done with this property\n\t\t\treturn tween;\n\t\t}\n\t}\n}\n\nfunction defaultPrefilter( elem, props, opts ) {\n\tvar prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display,\n\t\tisBox = \"width\" in props || \"height\" in props,\n\t\tanim = this,\n\t\torig = {},\n\t\tstyle = elem.style,\n\t\thidden = elem.nodeType && isHiddenWithinTree( elem ),\n\t\tdataShow = dataPriv.get( elem, \"fxshow\" );\n\n\t// Queue-skipping animations hijack the fx hooks\n\tif ( !opts.queue ) {\n\t\thooks = jQuery._queueHooks( elem, \"fx\" );\n\t\tif ( hooks.unqueued == null ) {\n\t\t\thooks.unqueued = 0;\n\t\t\toldfire = hooks.empty.fire;\n\t\t\thooks.empty.fire = function() {\n\t\t\t\tif ( !hooks.unqueued ) {\n\t\t\t\t\toldfire();\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t\thooks.unqueued++;\n\n\t\tanim.always( function() {\n\n\t\t\t// Ensure the complete handler is called before this completes\n\t\t\tanim.always( function() {\n\t\t\t\thooks.unqueued--;\n\t\t\t\tif ( !jQuery.queue( elem, \"fx\" ).length ) {\n\t\t\t\t\thooks.empty.fire();\n\t\t\t\t}\n\t\t\t} );\n\t\t} );\n\t}\n\n\t// Detect show/hide animations\n\tfor ( prop in props ) {\n\t\tvalue = props[ prop ];\n\t\tif ( rfxtypes.test( value ) ) {\n\t\t\tdelete props[ prop ];\n\t\t\ttoggle = toggle || value === \"toggle\";\n\t\t\tif ( value === ( hidden ? \"hide\" : \"show\" ) ) {\n\n\t\t\t\t// Pretend to be hidden if this is a \"show\" and\n\t\t\t\t// there is still data from a stopped show/hide\n\t\t\t\tif ( value === \"show\" && dataShow && dataShow[ prop ] !== undefined ) {\n\t\t\t\t\thidden = true;\n\n\t\t\t\t// Ignore all other no-op show/hide data\n\t\t\t\t} else {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t\torig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );\n\t\t}\n\t}\n\n\t// Bail out if this is a no-op like .hide().hide()\n\tpropTween = !jQuery.isEmptyObject( props );\n\tif ( !propTween && jQuery.isEmptyObject( orig ) ) {\n\t\treturn;\n\t}\n\n\t// Restrict \"overflow\" and \"display\" styles during box animations\n\tif ( isBox && elem.nodeType === 1 ) {\n\n\t\t// Support: IE <=9 - 11, Edge 12 - 15\n\t\t// Record all 3 overflow attributes because IE does not infer the shorthand\n\t\t// from identically-valued overflowX and overflowY and Edge just mirrors\n\t\t// the overflowX value there.\n\t\topts.overflow = [ style.overflow, style.overflowX, style.overflowY ];\n\n\t\t// Identify a display type, preferring old show/hide data over the CSS cascade\n\t\trestoreDisplay = dataShow && dataShow.display;\n\t\tif ( restoreDisplay == null ) {\n\t\t\trestoreDisplay = dataPriv.get( elem, \"display\" );\n\t\t}\n\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\tif ( display === \"none\" ) {\n\t\t\tif ( restoreDisplay ) {\n\t\t\t\tdisplay = restoreDisplay;\n\t\t\t} else {\n\n\t\t\t\t// Get nonempty value(s) by temporarily forcing visibility\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t\trestoreDisplay = elem.style.display || restoreDisplay;\n\t\t\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\t\t\tshowHide( [ elem ] );\n\t\t\t}\n\t\t}\n\n\t\t// Animate inline elements as inline-block\n\t\tif ( display === \"inline\" || display === \"inline-block\" && restoreDisplay != null ) {\n\t\t\tif ( jQuery.css( elem, \"float\" ) === \"none\" ) {\n\n\t\t\t\t// Restore the original display value at the end of pure show/hide animations\n\t\t\t\tif ( !propTween ) {\n\t\t\t\t\tanim.done( function() {\n\t\t\t\t\t\tstyle.display = restoreDisplay;\n\t\t\t\t\t} );\n\t\t\t\t\tif ( restoreDisplay == null ) {\n\t\t\t\t\t\tdisplay = style.display;\n\t\t\t\t\t\trestoreDisplay = display === \"none\" ? \"\" : display;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tstyle.display = \"inline-block\";\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( opts.overflow ) {\n\t\tstyle.overflow = \"hidden\";\n\t\tanim.always( function() {\n\t\t\tstyle.overflow = opts.overflow[ 0 ];\n\t\t\tstyle.overflowX = opts.overflow[ 1 ];\n\t\t\tstyle.overflowY = opts.overflow[ 2 ];\n\t\t} );\n\t}\n\n\t// Implement show/hide animations\n\tpropTween = false;\n\tfor ( prop in orig ) {\n\n\t\t// General show/hide setup for this element animation\n\t\tif ( !propTween ) {\n\t\t\tif ( dataShow ) {\n\t\t\t\tif ( \"hidden\" in dataShow ) {\n\t\t\t\t\thidden = dataShow.hidden;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tdataShow = dataPriv.access( elem, \"fxshow\", { display: restoreDisplay } );\n\t\t\t}\n\n\t\t\t// Store hidden/visible for toggle so `.stop().toggle()` \"reverses\"\n\t\t\tif ( toggle ) {\n\t\t\t\tdataShow.hidden = !hidden;\n\t\t\t}\n\n\t\t\t// Show elements before animating them\n\t\t\tif ( hidden ) {\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t}\n\n\t\t\t/* eslint-disable no-loop-func */\n\n\t\t\tanim.done( function() {\n\n\t\t\t\t/* eslint-enable no-loop-func */\n\n\t\t\t\t// The final step of a \"hide\" animation is actually hiding the element\n\t\t\t\tif ( !hidden ) {\n\t\t\t\t\tshowHide( [ elem ] );\n\t\t\t\t}\n\t\t\t\tdataPriv.remove( elem, \"fxshow\" );\n\t\t\t\tfor ( prop in orig ) {\n\t\t\t\t\tjQuery.style( elem, prop, orig[ prop ] );\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\t// Per-property setup\n\t\tpropTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );\n\t\tif ( !( prop in dataShow ) ) {\n\t\t\tdataShow[ prop ] = propTween.start;\n\t\t\tif ( hidden ) {\n\t\t\t\tpropTween.end = propTween.start;\n\t\t\t\tpropTween.start = 0;\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction propFilter( props, specialEasing ) {\n\tvar index, name, easing, value, hooks;\n\n\t// camelCase, specialEasing and expand cssHook pass\n\tfor ( index in props ) {\n\t\tname = camelCase( index );\n\t\teasing = specialEasing[ name ];\n\t\tvalue = props[ index ];\n\t\tif ( Array.isArray( value ) ) {\n\t\t\teasing = value[ 1 ];\n\t\t\tvalue = props[ index ] = value[ 0 ];\n\t\t}\n\n\t\tif ( index !== name ) {\n\t\t\tprops[ name ] = value;\n\t\t\tdelete props[ index ];\n\t\t}\n\n\t\thooks = jQuery.cssHooks[ name ];\n\t\tif ( hooks && \"expand\" in hooks ) {\n\t\t\tvalue = hooks.expand( value );\n\t\t\tdelete props[ name ];\n\n\t\t\t// Not quite $.extend, this won't overwrite existing keys.\n\t\t\t// Reusing 'index' because we have the correct \"name\"\n\t\t\tfor ( index in value ) {\n\t\t\t\tif ( !( index in props ) ) {\n\t\t\t\t\tprops[ index ] = value[ index ];\n\t\t\t\t\tspecialEasing[ index ] = easing;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tspecialEasing[ name ] = easing;\n\t\t}\n\t}\n}\n\nfunction Animation( elem, properties, options ) {\n\tvar result,\n\t\tstopped,\n\t\tindex = 0,\n\t\tlength = Animation.prefilters.length,\n\t\tdeferred = jQuery.Deferred().always( function() {\n\n\t\t\t// Don't match elem in the :animated selector\n\t\t\tdelete tick.elem;\n\t\t} ),\n\t\ttick = function() {\n\t\t\tif ( stopped ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tvar currentTime = fxNow || createFxNow(),\n\t\t\t\tremaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),\n\n\t\t\t\t// Support: Android 2.3 only\n\t\t\t\t// Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497)\n\t\t\t\ttemp = remaining / animation.duration || 0,\n\t\t\t\tpercent = 1 - temp,\n\t\t\t\tindex = 0,\n\t\t\t\tlength = animation.tweens.length;\n\n\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\tanimation.tweens[ index ].run( percent );\n\t\t\t}\n\n\t\t\tdeferred.notifyWith( elem, [ animation, percent, remaining ] );\n\n\t\t\t// If there's more to do, yield\n\t\t\tif ( percent < 1 && length ) {\n\t\t\t\treturn remaining;\n\t\t\t}\n\n\t\t\t// If this was an empty animation, synthesize a final progress notification\n\t\t\tif ( !length ) {\n\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t}\n\n\t\t\t// Resolve the animation and report its conclusion\n\t\t\tdeferred.resolveWith( elem, [ animation ] );\n\t\t\treturn false;\n\t\t},\n\t\tanimation = deferred.promise( {\n\t\t\telem: elem,\n\t\t\tprops: jQuery.extend( {}, properties ),\n\t\t\topts: jQuery.extend( true, {\n\t\t\t\tspecialEasing: {},\n\t\t\t\teasing: jQuery.easing._default\n\t\t\t}, options ),\n\t\t\toriginalProperties: properties,\n\t\t\toriginalOptions: options,\n\t\t\tstartTime: fxNow || createFxNow(),\n\t\t\tduration: options.duration,\n\t\t\ttweens: [],\n\t\t\tcreateTween: function( prop, end ) {\n\t\t\t\tvar tween = jQuery.Tween( elem, animation.opts, prop, end,\n\t\t\t\t\tanimation.opts.specialEasing[ prop ] || animation.opts.easing );\n\t\t\t\tanimation.tweens.push( tween );\n\t\t\t\treturn tween;\n\t\t\t},\n\t\t\tstop: function( gotoEnd ) {\n\t\t\t\tvar index = 0,\n\n\t\t\t\t\t// If we are going to the end, we want to run all the tweens\n\t\t\t\t\t// otherwise we skip this part\n\t\t\t\t\tlength = gotoEnd ? animation.tweens.length : 0;\n\t\t\t\tif ( stopped ) {\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t\tstopped = true;\n\t\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\t\tanimation.tweens[ index ].run( 1 );\n\t\t\t\t}\n\n\t\t\t\t// Resolve when we played the last frame; otherwise, reject\n\t\t\t\tif ( gotoEnd ) {\n\t\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t\t\tdeferred.resolveWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t} else {\n\t\t\t\t\tdeferred.rejectWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t}\n\t\t} ),\n\t\tprops = animation.props;\n\n\tpropFilter( props, animation.opts.specialEasing );\n\n\tfor ( ; index < length; index++ ) {\n\t\tresult = Animation.prefilters[ index ].call( animation, elem, props, animation.opts );\n\t\tif ( result ) {\n\t\t\tif ( isFunction( result.stop ) ) {\n\t\t\t\tjQuery._queueHooks( animation.elem, animation.opts.queue ).stop =\n\t\t\t\t\tresult.stop.bind( result );\n\t\t\t}\n\t\t\treturn result;\n\t\t}\n\t}\n\n\tjQuery.map( props, createTween, animation );\n\n\tif ( isFunction( animation.opts.start ) ) {\n\t\tanimation.opts.start.call( elem, animation );\n\t}\n\n\t// Attach callbacks from options\n\tanimation\n\t\t.progress( animation.opts.progress )\n\t\t.done( animation.opts.done, animation.opts.complete )\n\t\t.fail( animation.opts.fail )\n\t\t.always( animation.opts.always );\n\n\tjQuery.fx.timer(\n\t\tjQuery.extend( tick, {\n\t\t\telem: elem,\n\t\t\tanim: animation,\n\t\t\tqueue: animation.opts.queue\n\t\t} )\n\t);\n\n\treturn animation;\n}\n\njQuery.Animation = jQuery.extend( Animation, {\n\n\ttweeners: {\n\t\t\"*\": [ function( prop, value ) {\n\t\t\tvar tween = this.createTween( prop, value );\n\t\t\tadjustCSS( tween.elem, prop, rcssNum.exec( value ), tween );\n\t\t\treturn tween;\n\t\t} ]\n\t},\n\n\ttweener: function( props, callback ) {\n\t\tif ( isFunction( props ) ) {\n\t\t\tcallback = props;\n\t\t\tprops = [ \"*\" ];\n\t\t} else {\n\t\t\tprops = props.match( rnothtmlwhite );\n\t\t}\n\n\t\tvar prop,\n\t\t\tindex = 0,\n\t\t\tlength = props.length;\n\n\t\tfor ( ; index < length; index++ ) {\n\t\t\tprop = props[ index ];\n\t\t\tAnimation.tweeners[ prop ] = Animation.tweeners[ prop ] || [];\n\t\t\tAnimation.tweeners[ prop ].unshift( callback );\n\t\t}\n\t},\n\n\tprefilters: [ defaultPrefilter ],\n\n\tprefilter: function( callback, prepend ) {\n\t\tif ( prepend ) {\n\t\t\tAnimation.prefilters.unshift( callback );\n\t\t} else {\n\t\t\tAnimation.prefilters.push( callback );\n\t\t}\n\t}\n} );\n\njQuery.speed = function( speed, easing, fn ) {\n\tvar opt = speed && typeof speed === \"object\" ? jQuery.extend( {}, speed ) : {\n\t\tcomplete: fn || !fn && easing ||\n\t\t\tisFunction( speed ) && speed,\n\t\tduration: speed,\n\t\teasing: fn && easing || easing && !isFunction( easing ) && easing\n\t};\n\n\t// Go to the end state if fx are off\n\tif ( jQuery.fx.off ) {\n\t\topt.duration = 0;\n\n\t} else {\n\t\tif ( typeof opt.duration !== \"number\" ) {\n\t\t\tif ( opt.duration in jQuery.fx.speeds ) {\n\t\t\t\topt.duration = jQuery.fx.speeds[ opt.duration ];\n\n\t\t\t} else {\n\t\t\t\topt.duration = jQuery.fx.speeds._default;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Normalize opt.queue - true/undefined/null -> \"fx\"\n\tif ( opt.queue == null || opt.queue === true ) {\n\t\topt.queue = \"fx\";\n\t}\n\n\t// Queueing\n\topt.old = opt.complete;\n\n\topt.complete = function() {\n\t\tif ( isFunction( opt.old ) ) {\n\t\t\topt.old.call( this );\n\t\t}\n\n\t\tif ( opt.queue ) {\n\t\t\tjQuery.dequeue( this, opt.queue );\n\t\t}\n\t};\n\n\treturn opt;\n};\n\njQuery.fn.extend( {\n\tfadeTo: function( speed, to, easing, callback ) {\n\n\t\t// Show any hidden elements after setting opacity to 0\n\t\treturn this.filter( isHiddenWithinTree ).css( \"opacity\", 0 ).show()\n\n\t\t\t// Animate to the value specified\n\t\t\t.end().animate( { opacity: to }, speed, easing, callback );\n\t},\n\tanimate: function( prop, speed, easing, callback ) {\n\t\tvar empty = jQuery.isEmptyObject( prop ),\n\t\t\toptall = jQuery.speed( speed, easing, callback ),\n\t\t\tdoAnimation = function() {\n\n\t\t\t\t// Operate on a copy of prop so per-property easing won't be lost\n\t\t\t\tvar anim = Animation( this, jQuery.extend( {}, prop ), optall );\n\n\t\t\t\t// Empty animations, or finishing resolves immediately\n\t\t\t\tif ( empty || dataPriv.get( this, \"finish\" ) ) {\n\t\t\t\t\tanim.stop( true );\n\t\t\t\t}\n\t\t\t};\n\n\t\tdoAnimation.finish = doAnimation;\n\n\t\treturn empty || optall.queue === false ?\n\t\t\tthis.each( doAnimation ) :\n\t\t\tthis.queue( optall.queue, doAnimation );\n\t},\n\tstop: function( type, clearQueue, gotoEnd ) {\n\t\tvar stopQueue = function( hooks ) {\n\t\t\tvar stop = hooks.stop;\n\t\t\tdelete hooks.stop;\n\t\t\tstop( gotoEnd );\n\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tgotoEnd = clearQueue;\n\t\t\tclearQueue = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\tif ( clearQueue ) {\n\t\t\tthis.queue( type || \"fx\", [] );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar dequeue = true,\n\t\t\t\tindex = type != null && type + \"queueHooks\",\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tdata = dataPriv.get( this );\n\n\t\t\tif ( index ) {\n\t\t\t\tif ( data[ index ] && data[ index ].stop ) {\n\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( index in data ) {\n\t\t\t\t\tif ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {\n\t\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this &&\n\t\t\t\t\t( type == null || timers[ index ].queue === type ) ) {\n\n\t\t\t\t\ttimers[ index ].anim.stop( gotoEnd );\n\t\t\t\t\tdequeue = false;\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Start the next in the queue if the last step wasn't forced.\n\t\t\t// Timers currently will call their complete callbacks, which\n\t\t\t// will dequeue but only if they were gotoEnd.\n\t\t\tif ( dequeue || !gotoEnd ) {\n\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t}\n\t\t} );\n\t},\n\tfinish: function( type ) {\n\t\tif ( type !== false ) {\n\t\t\ttype = type || \"fx\";\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tvar index,\n\t\t\t\tdata = dataPriv.get( this ),\n\t\t\t\tqueue = data[ type + \"queue\" ],\n\t\t\t\thooks = data[ type + \"queueHooks\" ],\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tlength = queue ? queue.length : 0;\n\n\t\t\t// Enable finishing flag on private data\n\t\t\tdata.finish = true;\n\n\t\t\t// Empty the queue first\n\t\t\tjQuery.queue( this, type, [] );\n\n\t\t\tif ( hooks && hooks.stop ) {\n\t\t\t\thooks.stop.call( this, true );\n\t\t\t}\n\n\t\t\t// Look for any active animations, and finish them\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this && timers[ index ].queue === type ) {\n\t\t\t\t\ttimers[ index ].anim.stop( true );\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Look for any animations in the old queue and finish them\n\t\t\tfor ( index = 0; index < length; index++ ) {\n\t\t\t\tif ( queue[ index ] && queue[ index ].finish ) {\n\t\t\t\t\tqueue[ index ].finish.call( this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Turn off finishing flag\n\t\t\tdelete data.finish;\n\t\t} );\n\t}\n} );\n\njQuery.each( [ \"toggle\", \"show\", \"hide\" ], function( _i, name ) {\n\tvar cssFn = jQuery.fn[ name ];\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn speed == null || typeof speed === \"boolean\" ?\n\t\t\tcssFn.apply( this, arguments ) :\n\t\t\tthis.animate( genFx( name, true ), speed, easing, callback );\n\t};\n} );\n\n// Generate shortcuts for custom animations\njQuery.each( {\n\tslideDown: genFx( \"show\" ),\n\tslideUp: genFx( \"hide\" ),\n\tslideToggle: genFx( \"toggle\" ),\n\tfadeIn: { opacity: \"show\" },\n\tfadeOut: { opacity: \"hide\" },\n\tfadeToggle: { opacity: \"toggle\" }\n}, function( name, props ) {\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn this.animate( props, speed, easing, callback );\n\t};\n} );\n\njQuery.timers = [];\njQuery.fx.tick = function() {\n\tvar timer,\n\t\ti = 0,\n\t\ttimers = jQuery.timers;\n\n\tfxNow = Date.now();\n\n\tfor ( ; i < timers.length; i++ ) {\n\t\ttimer = timers[ i ];\n\n\t\t// Run the timer and safely remove it when done (allowing for external removal)\n\t\tif ( !timer() && timers[ i ] === timer ) {\n\t\t\ttimers.splice( i--, 1 );\n\t\t}\n\t}\n\n\tif ( !timers.length ) {\n\t\tjQuery.fx.stop();\n\t}\n\tfxNow = undefined;\n};\n\njQuery.fx.timer = function( timer ) {\n\tjQuery.timers.push( timer );\n\tjQuery.fx.start();\n};\n\njQuery.fx.interval = 13;\njQuery.fx.start = function() {\n\tif ( inProgress ) {\n\t\treturn;\n\t}\n\n\tinProgress = true;\n\tschedule();\n};\n\njQuery.fx.stop = function() {\n\tinProgress = null;\n};\n\njQuery.fx.speeds = {\n\tslow: 600,\n\tfast: 200,\n\n\t// Default speed\n\t_default: 400\n};\n\n\n// Based off of the plugin by Clint Helfers, with permission.\n// https://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/\njQuery.fn.delay = function( time, type ) {\n\ttime = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;\n\ttype = type || \"fx\";\n\n\treturn this.queue( type, function( next, hooks ) {\n\t\tvar timeout = window.setTimeout( next, time );\n\t\thooks.stop = function() {\n\t\t\twindow.clearTimeout( timeout );\n\t\t};\n\t} );\n};\n\n\n( function() {\n\tvar input = document.createElement( \"input\" ),\n\t\tselect = document.createElement( \"select\" ),\n\t\topt = select.appendChild( document.createElement( \"option\" ) );\n\n\tinput.type = \"checkbox\";\n\n\t// Support: Android <=4.3 only\n\t// Default value for a checkbox should be \"on\"\n\tsupport.checkOn = input.value !== \"\";\n\n\t// Support: IE <=11 only\n\t// Must access selectedIndex to make default options select\n\tsupport.optSelected = opt.selected;\n\n\t// Support: IE <=11 only\n\t// An input loses its value after becoming a radio\n\tinput = document.createElement( \"input\" );\n\tinput.value = \"t\";\n\tinput.type = \"radio\";\n\tsupport.radioValue = input.value === \"t\";\n} )();\n\n\nvar boolHook,\n\tattrHandle = jQuery.expr.attrHandle;\n\njQuery.fn.extend( {\n\tattr: function( name, value ) {\n\t\treturn access( this, jQuery.attr, name, value, arguments.length > 1 );\n\t},\n\n\tremoveAttr: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.removeAttr( this, name );\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tattr: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set attributes on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Fallback to prop when attributes are not supported\n\t\tif ( typeof elem.getAttribute === \"undefined\" ) {\n\t\t\treturn jQuery.prop( elem, name, value );\n\t\t}\n\n\t\t// Attribute hooks are determined by the lowercase version\n\t\t// Grab necessary hook if one is defined\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\t\t\thooks = jQuery.attrHooks[ name.toLowerCase() ] ||\n\t\t\t\t( jQuery.expr.match.bool.test( name ) ? boolHook : undefined );\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( value === null ) {\n\t\t\t\tjQuery.removeAttr( elem, name );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\telem.setAttribute( name, value + \"\" );\n\t\t\treturn value;\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\tret = jQuery.find.attr( elem, name );\n\n\t\t// Non-existent attributes return null, we normalize to undefined\n\t\treturn ret == null ? undefined : ret;\n\t},\n\n\tattrHooks: {\n\t\ttype: {\n\t\t\tset: function( elem, value ) {\n\t\t\t\tif ( !support.radioValue && value === \"radio\" &&\n\t\t\t\t\tnodeName( elem, \"input\" ) ) {\n\t\t\t\t\tvar val = elem.value;\n\t\t\t\t\telem.setAttribute( \"type\", value );\n\t\t\t\t\tif ( val ) {\n\t\t\t\t\t\telem.value = val;\n\t\t\t\t\t}\n\t\t\t\t\treturn value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\tremoveAttr: function( elem, value ) {\n\t\tvar name,\n\t\t\ti = 0,\n\n\t\t\t// Attribute names can contain non-HTML whitespace characters\n\t\t\t// https://html.spec.whatwg.org/multipage/syntax.html#attributes-2\n\t\t\tattrNames = value && value.match( rnothtmlwhite );\n\n\t\tif ( attrNames && elem.nodeType === 1 ) {\n\t\t\twhile ( ( name = attrNames[ i++ ] ) ) {\n\t\t\t\telem.removeAttribute( name );\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Hooks for boolean attributes\nboolHook = {\n\tset: function( elem, value, name ) {\n\t\tif ( value === false ) {\n\n\t\t\t// Remove boolean attributes when set to false\n\t\t\tjQuery.removeAttr( elem, name );\n\t\t} else {\n\t\t\telem.setAttribute( name, name );\n\t\t}\n\t\treturn name;\n\t}\n};\n\njQuery.each( jQuery.expr.match.bool.source.match( /\\w+/g ), function( _i, name ) {\n\tvar getter = attrHandle[ name ] || jQuery.find.attr;\n\n\tattrHandle[ name ] = function( elem, name, isXML ) {\n\t\tvar ret, handle,\n\t\t\tlowercaseName = name.toLowerCase();\n\n\t\tif ( !isXML ) {\n\n\t\t\t// Avoid an infinite loop by temporarily removing this function from the getter\n\t\t\thandle = attrHandle[ lowercaseName ];\n\t\t\tattrHandle[ lowercaseName ] = ret;\n\t\t\tret = getter( elem, name, isXML ) != null ?\n\t\t\t\tlowercaseName :\n\t\t\t\tnull;\n\t\t\tattrHandle[ lowercaseName ] = handle;\n\t\t}\n\t\treturn ret;\n\t};\n} );\n\n\n\n\nvar rfocusable = /^(?:input|select|textarea|button)$/i,\n\trclickable = /^(?:a|area)$/i;\n\njQuery.fn.extend( {\n\tprop: function( name, value ) {\n\t\treturn access( this, jQuery.prop, name, value, arguments.length > 1 );\n\t},\n\n\tremoveProp: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tdelete this[ jQuery.propFix[ name ] || name ];\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tprop: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set properties on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// Fix name and attach hooks\n\t\t\tname = jQuery.propFix[ name ] || name;\n\t\t\thooks = jQuery.propHooks[ name ];\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\treturn ( elem[ name ] = value );\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\treturn elem[ name ];\n\t},\n\n\tpropHooks: {\n\t\ttabIndex: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\t// Support: IE <=9 - 11 only\n\t\t\t\t// elem.tabIndex doesn't always return the\n\t\t\t\t// correct value when it hasn't been explicitly set\n\t\t\t\t// https://web.archive.org/web/20141116233347/http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/\n\t\t\t\t// Use proper attribute retrieval(#12072)\n\t\t\t\tvar tabindex = jQuery.find.attr( elem, \"tabindex\" );\n\n\t\t\t\tif ( tabindex ) {\n\t\t\t\t\treturn parseInt( tabindex, 10 );\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\trfocusable.test( elem.nodeName ) ||\n\t\t\t\t\trclickable.test( elem.nodeName ) &&\n\t\t\t\t\telem.href\n\t\t\t\t) {\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t},\n\n\tpropFix: {\n\t\t\"for\": \"htmlFor\",\n\t\t\"class\": \"className\"\n\t}\n} );\n\n// Support: IE <=11 only\n// Accessing the selectedIndex property\n// forces the browser to respect setting selected\n// on the option\n// The getter ensures a default option is selected\n// when in an optgroup\n// eslint rule \"no-unused-expressions\" is disabled for this code\n// since it considers such accessions noop\nif ( !support.optSelected ) {\n\tjQuery.propHooks.selected = {\n\t\tget: function( elem ) {\n\n\t\t\t/* eslint no-unused-expressions: \"off\" */\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent && parent.parentNode ) {\n\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t}\n\t\t\treturn null;\n\t\t},\n\t\tset: function( elem ) {\n\n\t\t\t/* eslint no-unused-expressions: \"off\" */\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent ) {\n\t\t\t\tparent.selectedIndex;\n\n\t\t\t\tif ( parent.parentNode ) {\n\t\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\njQuery.each( [\n\t\"tabIndex\",\n\t\"readOnly\",\n\t\"maxLength\",\n\t\"cellSpacing\",\n\t\"cellPadding\",\n\t\"rowSpan\",\n\t\"colSpan\",\n\t\"useMap\",\n\t\"frameBorder\",\n\t\"contentEditable\"\n], function() {\n\tjQuery.propFix[ this.toLowerCase() ] = this;\n} );\n\n\n\n\n\t// Strip and collapse whitespace according to HTML spec\n\t// https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace\n\tfunction stripAndCollapse( value ) {\n\t\tvar tokens = value.match( rnothtmlwhite ) || [];\n\t\treturn tokens.join( \" \" );\n\t}\n\n\nfunction getClass( elem ) {\n\treturn elem.getAttribute && elem.getAttribute( \"class\" ) || \"\";\n}\n\nfunction classesToArray( value ) {\n\tif ( Array.isArray( value ) ) {\n\t\treturn value;\n\t}\n\tif ( typeof value === \"string\" ) {\n\t\treturn value.match( rnothtmlwhite ) || [];\n\t}\n\treturn [];\n}\n\njQuery.fn.extend( {\n\taddClass: function( value ) {\n\t\tvar classes, elem, cur, curValue, clazz, j, finalValue,\n\t\t\ti = 0;\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).addClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tclasses = classesToArray( value );\n\n\t\tif ( classes.length ) {\n\t\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\t\tcurValue = getClass( elem );\n\t\t\t\tcur = elem.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\twhile ( ( clazz = classes[ j++ ] ) ) {\n\t\t\t\t\t\tif ( cur.indexOf( \" \" + clazz + \" \" ) < 0 ) {\n\t\t\t\t\t\t\tcur += clazz + \" \";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\telem.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tremoveClass: function( value ) {\n\t\tvar classes, elem, cur, curValue, clazz, j, finalValue,\n\t\t\ti = 0;\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).removeClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tif ( !arguments.length ) {\n\t\t\treturn this.attr( \"class\", \"\" );\n\t\t}\n\n\t\tclasses = classesToArray( value );\n\n\t\tif ( classes.length ) {\n\t\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\t\tcurValue = getClass( elem );\n\n\t\t\t\t// This expression is here for better compressibility (see addClass)\n\t\t\t\tcur = elem.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\twhile ( ( clazz = classes[ j++ ] ) ) {\n\n\t\t\t\t\t\t// Remove *all* instances\n\t\t\t\t\t\twhile ( cur.indexOf( \" \" + clazz + \" \" ) > -1 ) {\n\t\t\t\t\t\t\tcur = cur.replace( \" \" + clazz + \" \", \" \" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\telem.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\ttoggleClass: function( value, stateVal ) {\n\t\tvar type = typeof value,\n\t\t\tisValidValue = type === \"string\" || Array.isArray( value );\n\n\t\tif ( typeof stateVal === \"boolean\" && isValidValue ) {\n\t\t\treturn stateVal ? this.addClass( value ) : this.removeClass( value );\n\t\t}\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).toggleClass(\n\t\t\t\t\tvalue.call( this, i, getClass( this ), stateVal ),\n\t\t\t\t\tstateVal\n\t\t\t\t);\n\t\t\t} );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar className, i, self, classNames;\n\n\t\t\tif ( isValidValue ) {\n\n\t\t\t\t// Toggle individual class names\n\t\t\t\ti = 0;\n\t\t\t\tself = jQuery( this );\n\t\t\t\tclassNames = classesToArray( value );\n\n\t\t\t\twhile ( ( className = classNames[ i++ ] ) ) {\n\n\t\t\t\t\t// Check each className given, space separated list\n\t\t\t\t\tif ( self.hasClass( className ) ) {\n\t\t\t\t\t\tself.removeClass( className );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tself.addClass( className );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t// Toggle whole class name\n\t\t\t} else if ( value === undefined || type === \"boolean\" ) {\n\t\t\t\tclassName = getClass( this );\n\t\t\t\tif ( className ) {\n\n\t\t\t\t\t// Store className if set\n\t\t\t\t\tdataPriv.set( this, \"__className__\", className );\n\t\t\t\t}\n\n\t\t\t\t// If the element has a class name or if we're passed `false`,\n\t\t\t\t// then remove the whole classname (if there was one, the above saved it).\n\t\t\t\t// Otherwise bring back whatever was previously saved (if anything),\n\t\t\t\t// falling back to the empty string if nothing was stored.\n\t\t\t\tif ( this.setAttribute ) {\n\t\t\t\t\tthis.setAttribute( \"class\",\n\t\t\t\t\t\tclassName || value === false ?\n\t\t\t\t\t\t\t\"\" :\n\t\t\t\t\t\t\tdataPriv.get( this, \"__className__\" ) || \"\"\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\thasClass: function( selector ) {\n\t\tvar className, elem,\n\t\t\ti = 0;\n\n\t\tclassName = \" \" + selector + \" \";\n\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\tif ( elem.nodeType === 1 &&\n\t\t\t\t( \" \" + stripAndCollapse( getClass( elem ) ) + \" \" ).indexOf( className ) > -1 ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n} );\n\n\n\n\nvar rreturn = /\\r/g;\n\njQuery.fn.extend( {\n\tval: function( value ) {\n\t\tvar hooks, ret, valueIsFunction,\n\t\t\telem = this[ 0 ];\n\n\t\tif ( !arguments.length ) {\n\t\t\tif ( elem ) {\n\t\t\t\thooks = jQuery.valHooks[ elem.type ] ||\n\t\t\t\t\tjQuery.valHooks[ elem.nodeName.toLowerCase() ];\n\n\t\t\t\tif ( hooks &&\n\t\t\t\t\t\"get\" in hooks &&\n\t\t\t\t\t( ret = hooks.get( elem, \"value\" ) ) !== undefined\n\t\t\t\t) {\n\t\t\t\t\treturn ret;\n\t\t\t\t}\n\n\t\t\t\tret = elem.value;\n\n\t\t\t\t// Handle most common string cases\n\t\t\t\tif ( typeof ret === \"string\" ) {\n\t\t\t\t\treturn ret.replace( rreturn, \"\" );\n\t\t\t\t}\n\n\t\t\t\t// Handle cases where value is null/undef or number\n\t\t\t\treturn ret == null ? \"\" : ret;\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tvalueIsFunction = isFunction( value );\n\n\t\treturn this.each( function( i ) {\n\t\t\tvar val;\n\n\t\t\tif ( this.nodeType !== 1 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( valueIsFunction ) {\n\t\t\t\tval = value.call( this, i, jQuery( this ).val() );\n\t\t\t} else {\n\t\t\t\tval = value;\n\t\t\t}\n\n\t\t\t// Treat null/undefined as \"\"; convert numbers to string\n\t\t\tif ( val == null ) {\n\t\t\t\tval = \"\";\n\n\t\t\t} else if ( typeof val === \"number\" ) {\n\t\t\t\tval += \"\";\n\n\t\t\t} else if ( Array.isArray( val ) ) {\n\t\t\t\tval = jQuery.map( val, function( value ) {\n\t\t\t\t\treturn value == null ? \"\" : value + \"\";\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\thooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];\n\n\t\t\t// If set returns undefined, fall back to normal setting\n\t\t\tif ( !hooks || !( \"set\" in hooks ) || hooks.set( this, val, \"value\" ) === undefined ) {\n\t\t\t\tthis.value = val;\n\t\t\t}\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tvalHooks: {\n\t\toption: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\tvar val = jQuery.find.attr( elem, \"value\" );\n\t\t\t\treturn val != null ?\n\t\t\t\t\tval :\n\n\t\t\t\t\t// Support: IE <=10 - 11 only\n\t\t\t\t\t// option.text throws exceptions (#14686, #14858)\n\t\t\t\t\t// Strip and collapse whitespace\n\t\t\t\t\t// https://html.spec.whatwg.org/#strip-and-collapse-whitespace\n\t\t\t\t\tstripAndCollapse( jQuery.text( elem ) );\n\t\t\t}\n\t\t},\n\t\tselect: {\n\t\t\tget: function( elem ) {\n\t\t\t\tvar value, option, i,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tindex = elem.selectedIndex,\n\t\t\t\t\tone = elem.type === \"select-one\",\n\t\t\t\t\tvalues = one ? null : [],\n\t\t\t\t\tmax = one ? index + 1 : options.length;\n\n\t\t\t\tif ( index < 0 ) {\n\t\t\t\t\ti = max;\n\n\t\t\t\t} else {\n\t\t\t\t\ti = one ? index : 0;\n\t\t\t\t}\n\n\t\t\t\t// Loop through all the selected options\n\t\t\t\tfor ( ; i < max; i++ ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t// IE8-9 doesn't update selected after form reset (#2551)\n\t\t\t\t\tif ( ( option.selected || i === index ) &&\n\n\t\t\t\t\t\t\t// Don't return options that are disabled or in a disabled optgroup\n\t\t\t\t\t\t\t!option.disabled &&\n\t\t\t\t\t\t\t( !option.parentNode.disabled ||\n\t\t\t\t\t\t\t\t!nodeName( option.parentNode, \"optgroup\" ) ) ) {\n\n\t\t\t\t\t\t// Get the specific value for the option\n\t\t\t\t\t\tvalue = jQuery( option ).val();\n\n\t\t\t\t\t\t// We don't need an array for one selects\n\t\t\t\t\t\tif ( one ) {\n\t\t\t\t\t\t\treturn value;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Multi-Selects return an array\n\t\t\t\t\t\tvalues.push( value );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn values;\n\t\t\t},\n\n\t\t\tset: function( elem, value ) {\n\t\t\t\tvar optionSet, option,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tvalues = jQuery.makeArray( value ),\n\t\t\t\t\ti = options.length;\n\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t/* eslint-disable no-cond-assign */\n\n\t\t\t\t\tif ( option.selected =\n\t\t\t\t\t\tjQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1\n\t\t\t\t\t) {\n\t\t\t\t\t\toptionSet = true;\n\t\t\t\t\t}\n\n\t\t\t\t\t/* eslint-enable no-cond-assign */\n\t\t\t\t}\n\n\t\t\t\t// Force browsers to behave consistently when non-matching value is set\n\t\t\t\tif ( !optionSet ) {\n\t\t\t\t\telem.selectedIndex = -1;\n\t\t\t\t}\n\t\t\t\treturn values;\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Radios and checkboxes getter/setter\njQuery.each( [ \"radio\", \"checkbox\" ], function() {\n\tjQuery.valHooks[ this ] = {\n\t\tset: function( elem, value ) {\n\t\t\tif ( Array.isArray( value ) ) {\n\t\t\t\treturn ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 );\n\t\t\t}\n\t\t}\n\t};\n\tif ( !support.checkOn ) {\n\t\tjQuery.valHooks[ this ].get = function( elem ) {\n\t\t\treturn elem.getAttribute( \"value\" ) === null ? \"on\" : elem.value;\n\t\t};\n\t}\n} );\n\n\n\n\n// Return jQuery for attributes-only inclusion\n\n\nsupport.focusin = \"onfocusin\" in window;\n\n\nvar rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,\n\tstopPropagationCallback = function( e ) {\n\t\te.stopPropagation();\n\t};\n\njQuery.extend( jQuery.event, {\n\n\ttrigger: function( event, data, elem, onlyHandlers ) {\n\n\t\tvar i, cur, tmp, bubbleType, ontype, handle, special, lastElement,\n\t\t\teventPath = [ elem || document ],\n\t\t\ttype = hasOwn.call( event, \"type\" ) ? event.type : event,\n\t\t\tnamespaces = hasOwn.call( event, \"namespace\" ) ? event.namespace.split( \".\" ) : [];\n\n\t\tcur = lastElement = tmp = elem = elem || document;\n\n\t\t// Don't do events on text and comment nodes\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// focus/blur morphs to focusin/out; ensure we're not firing them right now\n\t\tif ( rfocusMorph.test( type + jQuery.event.triggered ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( type.indexOf( \".\" ) > -1 ) {\n\n\t\t\t// Namespaced trigger; create a regexp to match event type in handle()\n\t\t\tnamespaces = type.split( \".\" );\n\t\t\ttype = namespaces.shift();\n\t\t\tnamespaces.sort();\n\t\t}\n\t\tontype = type.indexOf( \":\" ) < 0 && \"on\" + type;\n\n\t\t// Caller can pass in a jQuery.Event object, Object, or just an event type string\n\t\tevent = event[ jQuery.expando ] ?\n\t\t\tevent :\n\t\t\tnew jQuery.Event( type, typeof event === \"object\" && event );\n\n\t\t// Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)\n\t\tevent.isTrigger = onlyHandlers ? 2 : 3;\n\t\tevent.namespace = namespaces.join( \".\" );\n\t\tevent.rnamespace = event.namespace ?\n\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" ) :\n\t\t\tnull;\n\n\t\t// Clean up the event in case it is being reused\n\t\tevent.result = undefined;\n\t\tif ( !event.target ) {\n\t\t\tevent.target = elem;\n\t\t}\n\n\t\t// Clone any incoming data and prepend the event, creating the handler arg list\n\t\tdata = data == null ?\n\t\t\t[ event ] :\n\t\t\tjQuery.makeArray( data, [ event ] );\n\n\t\t// Allow special events to draw outside the lines\n\t\tspecial = jQuery.event.special[ type ] || {};\n\t\tif ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine event propagation path in advance, per W3C events spec (#9951)\n\t\t// Bubble up to document, then to window; watch for a global ownerDocument var (#9724)\n\t\tif ( !onlyHandlers && !special.noBubble && !isWindow( elem ) ) {\n\n\t\t\tbubbleType = special.delegateType || type;\n\t\t\tif ( !rfocusMorph.test( bubbleType + type ) ) {\n\t\t\t\tcur = cur.parentNode;\n\t\t\t}\n\t\t\tfor ( ; cur; cur = cur.parentNode ) {\n\t\t\t\teventPath.push( cur );\n\t\t\t\ttmp = cur;\n\t\t\t}\n\n\t\t\t// Only add window if we got to document (e.g., not plain obj or detached DOM)\n\t\t\tif ( tmp === ( elem.ownerDocument || document ) ) {\n\t\t\t\teventPath.push( tmp.defaultView || tmp.parentWindow || window );\n\t\t\t}\n\t\t}\n\n\t\t// Fire handlers on the event path\n\t\ti = 0;\n\t\twhile ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tlastElement = cur;\n\t\t\tevent.type = i > 1 ?\n\t\t\t\tbubbleType :\n\t\t\t\tspecial.bindType || type;\n\n\t\t\t// jQuery handler\n\t\t\thandle = ( dataPriv.get( cur, \"events\" ) || Object.create( null ) )[ event.type ] &&\n\t\t\t\tdataPriv.get( cur, \"handle\" );\n\t\t\tif ( handle ) {\n\t\t\t\thandle.apply( cur, data );\n\t\t\t}\n\n\t\t\t// Native handler\n\t\t\thandle = ontype && cur[ ontype ];\n\t\t\tif ( handle && handle.apply && acceptData( cur ) ) {\n\t\t\t\tevent.result = handle.apply( cur, data );\n\t\t\t\tif ( event.result === false ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tevent.type = type;\n\n\t\t// If nobody prevented the default action, do it now\n\t\tif ( !onlyHandlers && !event.isDefaultPrevented() ) {\n\n\t\t\tif ( ( !special._default ||\n\t\t\t\tspecial._default.apply( eventPath.pop(), data ) === false ) &&\n\t\t\t\tacceptData( elem ) ) {\n\n\t\t\t\t// Call a native DOM method on the target with the same name as the event.\n\t\t\t\t// Don't do default actions on window, that's where global variables be (#6170)\n\t\t\t\tif ( ontype && isFunction( elem[ type ] ) && !isWindow( elem ) ) {\n\n\t\t\t\t\t// Don't re-trigger an onFOO event when we call its FOO() method\n\t\t\t\t\ttmp = elem[ ontype ];\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = null;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prevent re-triggering of the same event, since we already bubbled it above\n\t\t\t\t\tjQuery.event.triggered = type;\n\n\t\t\t\t\tif ( event.isPropagationStopped() ) {\n\t\t\t\t\t\tlastElement.addEventListener( type, stopPropagationCallback );\n\t\t\t\t\t}\n\n\t\t\t\t\telem[ type ]();\n\n\t\t\t\t\tif ( event.isPropagationStopped() ) {\n\t\t\t\t\t\tlastElement.removeEventListener( type, stopPropagationCallback );\n\t\t\t\t\t}\n\n\t\t\t\t\tjQuery.event.triggered = undefined;\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = tmp;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\t// Piggyback on a donor event to simulate a different one\n\t// Used only for `focus(in | out)` events\n\tsimulate: function( type, elem, event ) {\n\t\tvar e = jQuery.extend(\n\t\t\tnew jQuery.Event(),\n\t\t\tevent,\n\t\t\t{\n\t\t\t\ttype: type,\n\t\t\t\tisSimulated: true\n\t\t\t}\n\t\t);\n\n\t\tjQuery.event.trigger( e, null, elem );\n\t}\n\n} );\n\njQuery.fn.extend( {\n\n\ttrigger: function( type, data ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.trigger( type, data, this );\n\t\t} );\n\t},\n\ttriggerHandler: function( type, data ) {\n\t\tvar elem = this[ 0 ];\n\t\tif ( elem ) {\n\t\t\treturn jQuery.event.trigger( type, data, elem, true );\n\t\t}\n\t}\n} );\n\n\n// Support: Firefox <=44\n// Firefox doesn't have focus(in | out) events\n// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787\n//\n// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1\n// focus(in | out) events fire after focus & blur events,\n// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order\n// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857\nif ( !support.focusin ) {\n\tjQuery.each( { focus: \"focusin\", blur: \"focusout\" }, function( orig, fix ) {\n\n\t\t// Attach a single capturing handler on the document while someone wants focusin/focusout\n\t\tvar handler = function( event ) {\n\t\t\tjQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) );\n\t\t};\n\n\t\tjQuery.event.special[ fix ] = {\n\t\t\tsetup: function() {\n\n\t\t\t\t// Handle: regular nodes (via `this.ownerDocument`), window\n\t\t\t\t// (via `this.document`) & document (via `this`).\n\t\t\t\tvar doc = this.ownerDocument || this.document || this,\n\t\t\t\t\tattaches = dataPriv.access( doc, fix );\n\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tdoc.addEventListener( orig, handler, true );\n\t\t\t\t}\n\t\t\t\tdataPriv.access( doc, fix, ( attaches || 0 ) + 1 );\n\t\t\t},\n\t\t\tteardown: function() {\n\t\t\t\tvar doc = this.ownerDocument || this.document || this,\n\t\t\t\t\tattaches = dataPriv.access( doc, fix ) - 1;\n\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tdoc.removeEventListener( orig, handler, true );\n\t\t\t\t\tdataPriv.remove( doc, fix );\n\n\t\t\t\t} else {\n\t\t\t\t\tdataPriv.access( doc, fix, attaches );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t} );\n}\nvar location = window.location;\n\nvar nonce = { guid: Date.now() };\n\nvar rquery = ( /\\?/ );\n\n\n\n// Cross-browser xml parsing\njQuery.parseXML = function( data ) {\n\tvar xml, parserErrorElem;\n\tif ( !data || typeof data !== \"string\" ) {\n\t\treturn null;\n\t}\n\n\t// Support: IE 9 - 11 only\n\t// IE throws on parseFromString with invalid input.\n\ttry {\n\t\txml = ( new window.DOMParser() ).parseFromString( data, \"text/xml\" );\n\t} catch ( e ) {}\n\n\tparserErrorElem = xml && xml.getElementsByTagName( \"parsererror\" )[ 0 ];\n\tif ( !xml || parserErrorElem ) {\n\t\tjQuery.error( \"Invalid XML: \" + (\n\t\t\tparserErrorElem ?\n\t\t\t\tjQuery.map( parserErrorElem.childNodes, function( el ) {\n\t\t\t\t\treturn el.textContent;\n\t\t\t\t} ).join( \"\\n\" ) :\n\t\t\t\tdata\n\t\t) );\n\t}\n\treturn xml;\n};\n\n\nvar\n\trbracket = /\\[\\]$/,\n\trCRLF = /\\r?\\n/g,\n\trsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,\n\trsubmittable = /^(?:input|select|textarea|keygen)/i;\n\nfunction buildParams( prefix, obj, traditional, add ) {\n\tvar name;\n\n\tif ( Array.isArray( obj ) ) {\n\n\t\t// Serialize array item.\n\t\tjQuery.each( obj, function( i, v ) {\n\t\t\tif ( traditional || rbracket.test( prefix ) ) {\n\n\t\t\t\t// Treat each array item as a scalar.\n\t\t\t\tadd( prefix, v );\n\n\t\t\t} else {\n\n\t\t\t\t// Item is non-scalar (array or object), encode its numeric index.\n\t\t\t\tbuildParams(\n\t\t\t\t\tprefix + \"[\" + ( typeof v === \"object\" && v != null ? i : \"\" ) + \"]\",\n\t\t\t\t\tv,\n\t\t\t\t\ttraditional,\n\t\t\t\t\tadd\n\t\t\t\t);\n\t\t\t}\n\t\t} );\n\n\t} else if ( !traditional && toType( obj ) === \"object\" ) {\n\n\t\t// Serialize object item.\n\t\tfor ( name in obj ) {\n\t\t\tbuildParams( prefix + \"[\" + name + \"]\", obj[ name ], traditional, add );\n\t\t}\n\n\t} else {\n\n\t\t// Serialize scalar item.\n\t\tadd( prefix, obj );\n\t}\n}\n\n// Serialize an array of form elements or a set of\n// key/values into a query string\njQuery.param = function( a, traditional ) {\n\tvar prefix,\n\t\ts = [],\n\t\tadd = function( key, valueOrFunction ) {\n\n\t\t\t// If value is a function, invoke it and use its return value\n\t\t\tvar value = isFunction( valueOrFunction ) ?\n\t\t\t\tvalueOrFunction() :\n\t\t\t\tvalueOrFunction;\n\n\t\t\ts[ s.length ] = encodeURIComponent( key ) + \"=\" +\n\t\t\t\tencodeURIComponent( value == null ? \"\" : value );\n\t\t};\n\n\tif ( a == null ) {\n\t\treturn \"\";\n\t}\n\n\t// If an array was passed in, assume that it is an array of form elements.\n\tif ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {\n\n\t\t// Serialize the form elements\n\t\tjQuery.each( a, function() {\n\t\t\tadd( this.name, this.value );\n\t\t} );\n\n\t} else {\n\n\t\t// If traditional, encode the \"old\" way (the way 1.3.2 or older\n\t\t// did it), otherwise encode params recursively.\n\t\tfor ( prefix in a ) {\n\t\t\tbuildParams( prefix, a[ prefix ], traditional, add );\n\t\t}\n\t}\n\n\t// Return the resulting serialization\n\treturn s.join( \"&\" );\n};\n\njQuery.fn.extend( {\n\tserialize: function() {\n\t\treturn jQuery.param( this.serializeArray() );\n\t},\n\tserializeArray: function() {\n\t\treturn this.map( function() {\n\n\t\t\t// Can add propHook for \"elements\" to filter or add form elements\n\t\t\tvar elements = jQuery.prop( this, \"elements\" );\n\t\t\treturn elements ? jQuery.makeArray( elements ) : this;\n\t\t} ).filter( function() {\n\t\t\tvar type = this.type;\n\n\t\t\t// Use .is( \":disabled\" ) so that fieldset[disabled] works\n\t\t\treturn this.name && !jQuery( this ).is( \":disabled\" ) &&\n\t\t\t\trsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&\n\t\t\t\t( this.checked || !rcheckableType.test( type ) );\n\t\t} ).map( function( _i, elem ) {\n\t\t\tvar val = jQuery( this ).val();\n\n\t\t\tif ( val == null ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tif ( Array.isArray( val ) ) {\n\t\t\t\treturn jQuery.map( val, function( val ) {\n\t\t\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t} ).get();\n\t}\n} );\n\n\nvar\n\tr20 = /%20/g,\n\trhash = /#.*$/,\n\trantiCache = /([?&])_=[^&]*/,\n\trheaders = /^(.*?):[ \\t]*([^\\r\\n]*)$/mg,\n\n\t// #7653, #8125, #8152: local protocol detection\n\trlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,\n\trnoContent = /^(?:GET|HEAD)$/,\n\trprotocol = /^\\/\\//,\n\n\t/* Prefilters\n\t * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)\n\t * 2) These are called:\n\t * - BEFORE asking for a transport\n\t * - AFTER param serialization (s.data is a string if s.processData is true)\n\t * 3) key is the dataType\n\t * 4) the catchall symbol \"*\" can be used\n\t * 5) execution will start with transport dataType and THEN continue down to \"*\" if needed\n\t */\n\tprefilters = {},\n\n\t/* Transports bindings\n\t * 1) key is the dataType\n\t * 2) the catchall symbol \"*\" can be used\n\t * 3) selection will start with transport dataType and THEN go to \"*\" if needed\n\t */\n\ttransports = {},\n\n\t// Avoid comment-prolog char sequence (#10098); must appease lint and evade compression\n\tallTypes = \"*/\".concat( \"*\" ),\n\n\t// Anchor tag for parsing the document origin\n\toriginAnchor = document.createElement( \"a\" );\n\noriginAnchor.href = location.href;\n\n// Base \"constructor\" for jQuery.ajaxPrefilter and jQuery.ajaxTransport\nfunction addToPrefiltersOrTransports( structure ) {\n\n\t// dataTypeExpression is optional and defaults to \"*\"\n\treturn function( dataTypeExpression, func ) {\n\n\t\tif ( typeof dataTypeExpression !== \"string\" ) {\n\t\t\tfunc = dataTypeExpression;\n\t\t\tdataTypeExpression = \"*\";\n\t\t}\n\n\t\tvar dataType,\n\t\t\ti = 0,\n\t\t\tdataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || [];\n\n\t\tif ( isFunction( func ) ) {\n\n\t\t\t// For each dataType in the dataTypeExpression\n\t\t\twhile ( ( dataType = dataTypes[ i++ ] ) ) {\n\n\t\t\t\t// Prepend if requested\n\t\t\t\tif ( dataType[ 0 ] === \"+\" ) {\n\t\t\t\t\tdataType = dataType.slice( 1 ) || \"*\";\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func );\n\n\t\t\t\t// Otherwise append\n\t\t\t\t} else {\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).push( func );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\n// Base inspection function for prefilters and transports\nfunction inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) {\n\n\tvar inspected = {},\n\t\tseekingTransport = ( structure === transports );\n\n\tfunction inspect( dataType ) {\n\t\tvar selected;\n\t\tinspected[ dataType ] = true;\n\t\tjQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) {\n\t\t\tvar dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR );\n\t\t\tif ( typeof dataTypeOrTransport === \"string\" &&\n\t\t\t\t!seekingTransport && !inspected[ dataTypeOrTransport ] ) {\n\n\t\t\t\toptions.dataTypes.unshift( dataTypeOrTransport );\n\t\t\t\tinspect( dataTypeOrTransport );\n\t\t\t\treturn false;\n\t\t\t} else if ( seekingTransport ) {\n\t\t\t\treturn !( selected = dataTypeOrTransport );\n\t\t\t}\n\t\t} );\n\t\treturn selected;\n\t}\n\n\treturn inspect( options.dataTypes[ 0 ] ) || !inspected[ \"*\" ] && inspect( \"*\" );\n}\n\n// A special extend for ajax options\n// that takes \"flat\" options (not to be deep extended)\n// Fixes #9887\nfunction ajaxExtend( target, src ) {\n\tvar key, deep,\n\t\tflatOptions = jQuery.ajaxSettings.flatOptions || {};\n\n\tfor ( key in src ) {\n\t\tif ( src[ key ] !== undefined ) {\n\t\t\t( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ];\n\t\t}\n\t}\n\tif ( deep ) {\n\t\tjQuery.extend( true, target, deep );\n\t}\n\n\treturn target;\n}\n\n/* Handles responses to an ajax request:\n * - finds the right dataType (mediates between content-type and expected dataType)\n * - returns the corresponding response\n */\nfunction ajaxHandleResponses( s, jqXHR, responses ) {\n\n\tvar ct, type, finalDataType, firstDataType,\n\t\tcontents = s.contents,\n\t\tdataTypes = s.dataTypes;\n\n\t// Remove auto dataType and get content-type in the process\n\twhile ( dataTypes[ 0 ] === \"*\" ) {\n\t\tdataTypes.shift();\n\t\tif ( ct === undefined ) {\n\t\t\tct = s.mimeType || jqXHR.getResponseHeader( \"Content-Type\" );\n\t\t}\n\t}\n\n\t// Check if we're dealing with a known content-type\n\tif ( ct ) {\n\t\tfor ( type in contents ) {\n\t\t\tif ( contents[ type ] && contents[ type ].test( ct ) ) {\n\t\t\t\tdataTypes.unshift( type );\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Check to see if we have a response for the expected dataType\n\tif ( dataTypes[ 0 ] in responses ) {\n\t\tfinalDataType = dataTypes[ 0 ];\n\t} else {\n\n\t\t// Try convertible dataTypes\n\t\tfor ( type in responses ) {\n\t\t\tif ( !dataTypes[ 0 ] || s.converters[ type + \" \" + dataTypes[ 0 ] ] ) {\n\t\t\t\tfinalDataType = type;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( !firstDataType ) {\n\t\t\t\tfirstDataType = type;\n\t\t\t}\n\t\t}\n\n\t\t// Or just use first one\n\t\tfinalDataType = finalDataType || firstDataType;\n\t}\n\n\t// If we found a dataType\n\t// We add the dataType to the list if needed\n\t// and return the corresponding response\n\tif ( finalDataType ) {\n\t\tif ( finalDataType !== dataTypes[ 0 ] ) {\n\t\t\tdataTypes.unshift( finalDataType );\n\t\t}\n\t\treturn responses[ finalDataType ];\n\t}\n}\n\n/* Chain conversions given the request and the original response\n * Also sets the responseXXX fields on the jqXHR instance\n */\nfunction ajaxConvert( s, response, jqXHR, isSuccess ) {\n\tvar conv2, current, conv, tmp, prev,\n\t\tconverters = {},\n\n\t\t// Work with a copy of dataTypes in case we need to modify it for conversion\n\t\tdataTypes = s.dataTypes.slice();\n\n\t// Create converters map with lowercased keys\n\tif ( dataTypes[ 1 ] ) {\n\t\tfor ( conv in s.converters ) {\n\t\t\tconverters[ conv.toLowerCase() ] = s.converters[ conv ];\n\t\t}\n\t}\n\n\tcurrent = dataTypes.shift();\n\n\t// Convert to each sequential dataType\n\twhile ( current ) {\n\n\t\tif ( s.responseFields[ current ] ) {\n\t\t\tjqXHR[ s.responseFields[ current ] ] = response;\n\t\t}\n\n\t\t// Apply the dataFilter if provided\n\t\tif ( !prev && isSuccess && s.dataFilter ) {\n\t\t\tresponse = s.dataFilter( response, s.dataType );\n\t\t}\n\n\t\tprev = current;\n\t\tcurrent = dataTypes.shift();\n\n\t\tif ( current ) {\n\n\t\t\t// There's only work to do if current dataType is non-auto\n\t\t\tif ( current === \"*\" ) {\n\n\t\t\t\tcurrent = prev;\n\n\t\t\t// Convert response if prev dataType is non-auto and differs from current\n\t\t\t} else if ( prev !== \"*\" && prev !== current ) {\n\n\t\t\t\t// Seek a direct converter\n\t\t\t\tconv = converters[ prev + \" \" + current ] || converters[ \"* \" + current ];\n\n\t\t\t\t// If none found, seek a pair\n\t\t\t\tif ( !conv ) {\n\t\t\t\t\tfor ( conv2 in converters ) {\n\n\t\t\t\t\t\t// If conv2 outputs current\n\t\t\t\t\t\ttmp = conv2.split( \" \" );\n\t\t\t\t\t\tif ( tmp[ 1 ] === current ) {\n\n\t\t\t\t\t\t\t// If prev can be converted to accepted input\n\t\t\t\t\t\t\tconv = converters[ prev + \" \" + tmp[ 0 ] ] ||\n\t\t\t\t\t\t\t\tconverters[ \"* \" + tmp[ 0 ] ];\n\t\t\t\t\t\t\tif ( conv ) {\n\n\t\t\t\t\t\t\t\t// Condense equivalence converters\n\t\t\t\t\t\t\t\tif ( conv === true ) {\n\t\t\t\t\t\t\t\t\tconv = converters[ conv2 ];\n\n\t\t\t\t\t\t\t\t// Otherwise, insert the intermediate dataType\n\t\t\t\t\t\t\t\t} else if ( converters[ conv2 ] !== true ) {\n\t\t\t\t\t\t\t\t\tcurrent = tmp[ 0 ];\n\t\t\t\t\t\t\t\t\tdataTypes.unshift( tmp[ 1 ] );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Apply converter (if not an equivalence)\n\t\t\t\tif ( conv !== true ) {\n\n\t\t\t\t\t// Unless errors are allowed to bubble, catch and return them\n\t\t\t\t\tif ( conv && s.throws ) {\n\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t\t} catch ( e ) {\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tstate: \"parsererror\",\n\t\t\t\t\t\t\t\terror: conv ? e : \"No conversion from \" + prev + \" to \" + current\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn { state: \"success\", data: response };\n}\n\njQuery.extend( {\n\n\t// Counter for holding the number of active queries\n\tactive: 0,\n\n\t// Last-Modified header cache for next request\n\tlastModified: {},\n\tetag: {},\n\n\tajaxSettings: {\n\t\turl: location.href,\n\t\ttype: \"GET\",\n\t\tisLocal: rlocalProtocol.test( location.protocol ),\n\t\tglobal: true,\n\t\tprocessData: true,\n\t\tasync: true,\n\t\tcontentType: \"application/x-www-form-urlencoded; charset=UTF-8\",\n\n\t\t/*\n\t\ttimeout: 0,\n\t\tdata: null,\n\t\tdataType: null,\n\t\tusername: null,\n\t\tpassword: null,\n\t\tcache: null,\n\t\tthrows: false,\n\t\ttraditional: false,\n\t\theaders: {},\n\t\t*/\n\n\t\taccepts: {\n\t\t\t\"*\": allTypes,\n\t\t\ttext: \"text/plain\",\n\t\t\thtml: \"text/html\",\n\t\t\txml: \"application/xml, text/xml\",\n\t\t\tjson: \"application/json, text/javascript\"\n\t\t},\n\n\t\tcontents: {\n\t\t\txml: /\\bxml\\b/,\n\t\t\thtml: /\\bhtml/,\n\t\t\tjson: /\\bjson\\b/\n\t\t},\n\n\t\tresponseFields: {\n\t\t\txml: \"responseXML\",\n\t\t\ttext: \"responseText\",\n\t\t\tjson: \"responseJSON\"\n\t\t},\n\n\t\t// Data converters\n\t\t// Keys separate source (or catchall \"*\") and destination types with a single space\n\t\tconverters: {\n\n\t\t\t// Convert anything to text\n\t\t\t\"* text\": String,\n\n\t\t\t// Text to html (true = no transformation)\n\t\t\t\"text html\": true,\n\n\t\t\t// Evaluate text as a json expression\n\t\t\t\"text json\": JSON.parse,\n\n\t\t\t// Parse text as xml\n\t\t\t\"text xml\": jQuery.parseXML\n\t\t},\n\n\t\t// For options that shouldn't be deep extended:\n\t\t// you can add your own custom options here if\n\t\t// and when you create one that shouldn't be\n\t\t// deep extended (see ajaxExtend)\n\t\tflatOptions: {\n\t\t\turl: true,\n\t\t\tcontext: true\n\t\t}\n\t},\n\n\t// Creates a full fledged settings object into target\n\t// with both ajaxSettings and settings fields.\n\t// If target is omitted, writes into ajaxSettings.\n\tajaxSetup: function( target, settings ) {\n\t\treturn settings ?\n\n\t\t\t// Building a settings object\n\t\t\tajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) :\n\n\t\t\t// Extending ajaxSettings\n\t\t\tajaxExtend( jQuery.ajaxSettings, target );\n\t},\n\n\tajaxPrefilter: addToPrefiltersOrTransports( prefilters ),\n\tajaxTransport: addToPrefiltersOrTransports( transports ),\n\n\t// Main method\n\tajax: function( url, options ) {\n\n\t\t// If url is an object, simulate pre-1.5 signature\n\t\tif ( typeof url === \"object\" ) {\n\t\t\toptions = url;\n\t\t\turl = undefined;\n\t\t}\n\n\t\t// Force options to be an object\n\t\toptions = options || {};\n\n\t\tvar transport,\n\n\t\t\t// URL without anti-cache param\n\t\t\tcacheURL,\n\n\t\t\t// Response headers\n\t\t\tresponseHeadersString,\n\t\t\tresponseHeaders,\n\n\t\t\t// timeout handle\n\t\t\ttimeoutTimer,\n\n\t\t\t// Url cleanup var\n\t\t\turlAnchor,\n\n\t\t\t// Request state (becomes false upon send and true upon completion)\n\t\t\tcompleted,\n\n\t\t\t// To know if global events are to be dispatched\n\t\t\tfireGlobals,\n\n\t\t\t// Loop variable\n\t\t\ti,\n\n\t\t\t// uncached part of the url\n\t\t\tuncached,\n\n\t\t\t// Create the final options object\n\t\t\ts = jQuery.ajaxSetup( {}, options ),\n\n\t\t\t// Callbacks context\n\t\t\tcallbackContext = s.context || s,\n\n\t\t\t// Context for global events is callbackContext if it is a DOM node or jQuery collection\n\t\t\tglobalEventContext = s.context &&\n\t\t\t\t( callbackContext.nodeType || callbackContext.jquery ) ?\n\t\t\t\tjQuery( callbackContext ) :\n\t\t\t\tjQuery.event,\n\n\t\t\t// Deferreds\n\t\t\tdeferred = jQuery.Deferred(),\n\t\t\tcompleteDeferred = jQuery.Callbacks( \"once memory\" ),\n\n\t\t\t// Status-dependent callbacks\n\t\t\tstatusCode = s.statusCode || {},\n\n\t\t\t// Headers (they are sent all at once)\n\t\t\trequestHeaders = {},\n\t\t\trequestHeadersNames = {},\n\n\t\t\t// Default abort message\n\t\t\tstrAbort = \"canceled\",\n\n\t\t\t// Fake xhr\n\t\t\tjqXHR = {\n\t\t\t\treadyState: 0,\n\n\t\t\t\t// Builds headers hashtable if needed\n\t\t\t\tgetResponseHeader: function( key ) {\n\t\t\t\t\tvar match;\n\t\t\t\t\tif ( completed ) {\n\t\t\t\t\t\tif ( !responseHeaders ) {\n\t\t\t\t\t\t\tresponseHeaders = {};\n\t\t\t\t\t\t\twhile ( ( match = rheaders.exec( responseHeadersString ) ) ) {\n\t\t\t\t\t\t\t\tresponseHeaders[ match[ 1 ].toLowerCase() + \" \" ] =\n\t\t\t\t\t\t\t\t\t( responseHeaders[ match[ 1 ].toLowerCase() + \" \" ] || [] )\n\t\t\t\t\t\t\t\t\t\t.concat( match[ 2 ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmatch = responseHeaders[ key.toLowerCase() + \" \" ];\n\t\t\t\t\t}\n\t\t\t\t\treturn match == null ? null : match.join( \", \" );\n\t\t\t\t},\n\n\t\t\t\t// Raw string\n\t\t\t\tgetAllResponseHeaders: function() {\n\t\t\t\t\treturn completed ? responseHeadersString : null;\n\t\t\t\t},\n\n\t\t\t\t// Caches the header\n\t\t\t\tsetRequestHeader: function( name, value ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\tname = requestHeadersNames[ name.toLowerCase() ] =\n\t\t\t\t\t\t\trequestHeadersNames[ name.toLowerCase() ] || name;\n\t\t\t\t\t\trequestHeaders[ name ] = value;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Overrides response content-type header\n\t\t\t\toverrideMimeType: function( type ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\ts.mimeType = type;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Status-dependent callbacks\n\t\t\t\tstatusCode: function( map ) {\n\t\t\t\t\tvar code;\n\t\t\t\t\tif ( map ) {\n\t\t\t\t\t\tif ( completed ) {\n\n\t\t\t\t\t\t\t// Execute the appropriate callbacks\n\t\t\t\t\t\t\tjqXHR.always( map[ jqXHR.status ] );\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Lazy-add the new callbacks in a way that preserves old ones\n\t\t\t\t\t\t\tfor ( code in map ) {\n\t\t\t\t\t\t\t\tstatusCode[ code ] = [ statusCode[ code ], map[ code ] ];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Cancel the request\n\t\t\t\tabort: function( statusText ) {\n\t\t\t\t\tvar finalText = statusText || strAbort;\n\t\t\t\t\tif ( transport ) {\n\t\t\t\t\t\ttransport.abort( finalText );\n\t\t\t\t\t}\n\t\t\t\t\tdone( 0, finalText );\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t};\n\n\t\t// Attach deferreds\n\t\tdeferred.promise( jqXHR );\n\n\t\t// Add protocol if not provided (prefilters might expect it)\n\t\t// Handle falsy url in the settings object (#10093: consistency with old signature)\n\t\t// We also use the url parameter if available\n\t\ts.url = ( ( url || s.url || location.href ) + \"\" )\n\t\t\t.replace( rprotocol, location.protocol + \"//\" );\n\n\t\t// Alias method option to type as per ticket #12004\n\t\ts.type = options.method || options.type || s.method || s.type;\n\n\t\t// Extract dataTypes list\n\t\ts.dataTypes = ( s.dataType || \"*\" ).toLowerCase().match( rnothtmlwhite ) || [ \"\" ];\n\n\t\t// A cross-domain request is in order when the origin doesn't match the current origin.\n\t\tif ( s.crossDomain == null ) {\n\t\t\turlAnchor = document.createElement( \"a\" );\n\n\t\t\t// Support: IE <=8 - 11, Edge 12 - 15\n\t\t\t// IE throws exception on accessing the href property if url is malformed,\n\t\t\t// e.g. http://example.com:80x/\n\t\t\ttry {\n\t\t\t\turlAnchor.href = s.url;\n\n\t\t\t\t// Support: IE <=8 - 11 only\n\t\t\t\t// Anchor's host property isn't correctly set when s.url is relative\n\t\t\t\turlAnchor.href = urlAnchor.href;\n\t\t\t\ts.crossDomain = originAnchor.protocol + \"//\" + originAnchor.host !==\n\t\t\t\t\turlAnchor.protocol + \"//\" + urlAnchor.host;\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// If there is an error parsing the URL, assume it is crossDomain,\n\t\t\t\t// it can be rejected by the transport if it is invalid\n\t\t\t\ts.crossDomain = true;\n\t\t\t}\n\t\t}\n\n\t\t// Convert data if not already a string\n\t\tif ( s.data && s.processData && typeof s.data !== \"string\" ) {\n\t\t\ts.data = jQuery.param( s.data, s.traditional );\n\t\t}\n\n\t\t// Apply prefilters\n\t\tinspectPrefiltersOrTransports( prefilters, s, options, jqXHR );\n\n\t\t// If request was aborted inside a prefilter, stop there\n\t\tif ( completed ) {\n\t\t\treturn jqXHR;\n\t\t}\n\n\t\t// We can fire global events as of now if asked to\n\t\t// Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118)\n\t\tfireGlobals = jQuery.event && s.global;\n\n\t\t// Watch for a new set of requests\n\t\tif ( fireGlobals && jQuery.active++ === 0 ) {\n\t\t\tjQuery.event.trigger( \"ajaxStart\" );\n\t\t}\n\n\t\t// Uppercase the type\n\t\ts.type = s.type.toUpperCase();\n\n\t\t// Determine if request has content\n\t\ts.hasContent = !rnoContent.test( s.type );\n\n\t\t// Save the URL in case we're toying with the If-Modified-Since\n\t\t// and/or If-None-Match header later on\n\t\t// Remove hash to simplify url manipulation\n\t\tcacheURL = s.url.replace( rhash, \"\" );\n\n\t\t// More options handling for requests with no content\n\t\tif ( !s.hasContent ) {\n\n\t\t\t// Remember the hash so we can put it back\n\t\t\tuncached = s.url.slice( cacheURL.length );\n\n\t\t\t// If data is available and should be processed, append data to url\n\t\t\tif ( s.data && ( s.processData || typeof s.data === \"string\" ) ) {\n\t\t\t\tcacheURL += ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + s.data;\n\n\t\t\t\t// #9682: remove data so that it's not used in an eventual retry\n\t\t\t\tdelete s.data;\n\t\t\t}\n\n\t\t\t// Add or update anti-cache param if needed\n\t\t\tif ( s.cache === false ) {\n\t\t\t\tcacheURL = cacheURL.replace( rantiCache, \"$1\" );\n\t\t\t\tuncached = ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + \"_=\" + ( nonce.guid++ ) +\n\t\t\t\t\tuncached;\n\t\t\t}\n\n\t\t\t// Put hash and anti-cache on the URL that will be requested (gh-1732)\n\t\t\ts.url = cacheURL + uncached;\n\n\t\t// Change '%20' to '+' if this is encoded form body content (gh-2658)\n\t\t} else if ( s.data && s.processData &&\n\t\t\t( s.contentType || \"\" ).indexOf( \"application/x-www-form-urlencoded\" ) === 0 ) {\n\t\t\ts.data = s.data.replace( r20, \"+\" );\n\t\t}\n\n\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\tif ( s.ifModified ) {\n\t\t\tif ( jQuery.lastModified[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-Modified-Since\", jQuery.lastModified[ cacheURL ] );\n\t\t\t}\n\t\t\tif ( jQuery.etag[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-None-Match\", jQuery.etag[ cacheURL ] );\n\t\t\t}\n\t\t}\n\n\t\t// Set the correct header, if data is being sent\n\t\tif ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {\n\t\t\tjqXHR.setRequestHeader( \"Content-Type\", s.contentType );\n\t\t}\n\n\t\t// Set the Accepts header for the server, depending on the dataType\n\t\tjqXHR.setRequestHeader(\n\t\t\t\"Accept\",\n\t\t\ts.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ?\n\t\t\t\ts.accepts[ s.dataTypes[ 0 ] ] +\n\t\t\t\t\t( s.dataTypes[ 0 ] !== \"*\" ? \", \" + allTypes + \"; q=0.01\" : \"\" ) :\n\t\t\t\ts.accepts[ \"*\" ]\n\t\t);\n\n\t\t// Check for headers option\n\t\tfor ( i in s.headers ) {\n\t\t\tjqXHR.setRequestHeader( i, s.headers[ i ] );\n\t\t}\n\n\t\t// Allow custom headers/mimetypes and early abort\n\t\tif ( s.beforeSend &&\n\t\t\t( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) {\n\n\t\t\t// Abort if not done already and return\n\t\t\treturn jqXHR.abort();\n\t\t}\n\n\t\t// Aborting is no longer a cancellation\n\t\tstrAbort = \"abort\";\n\n\t\t// Install callbacks on deferreds\n\t\tcompleteDeferred.add( s.complete );\n\t\tjqXHR.done( s.success );\n\t\tjqXHR.fail( s.error );\n\n\t\t// Get transport\n\t\ttransport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );\n\n\t\t// If no transport, we auto-abort\n\t\tif ( !transport ) {\n\t\t\tdone( -1, \"No Transport\" );\n\t\t} else {\n\t\t\tjqXHR.readyState = 1;\n\n\t\t\t// Send global event\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxSend\", [ jqXHR, s ] );\n\t\t\t}\n\n\t\t\t// If request was aborted inside ajaxSend, stop there\n\t\t\tif ( completed ) {\n\t\t\t\treturn jqXHR;\n\t\t\t}\n\n\t\t\t// Timeout\n\t\t\tif ( s.async && s.timeout > 0 ) {\n\t\t\t\ttimeoutTimer = window.setTimeout( function() {\n\t\t\t\t\tjqXHR.abort( \"timeout\" );\n\t\t\t\t}, s.timeout );\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tcompleted = false;\n\t\t\t\ttransport.send( requestHeaders, done );\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// Rethrow post-completion exceptions\n\t\t\t\tif ( completed ) {\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\n\t\t\t\t// Propagate others as results\n\t\t\t\tdone( -1, e );\n\t\t\t}\n\t\t}\n\n\t\t// Callback for when everything is done\n\t\tfunction done( status, nativeStatusText, responses, headers ) {\n\t\t\tvar isSuccess, success, error, response, modified,\n\t\t\t\tstatusText = nativeStatusText;\n\n\t\t\t// Ignore repeat invocations\n\t\t\tif ( completed ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tcompleted = true;\n\n\t\t\t// Clear timeout if it exists\n\t\t\tif ( timeoutTimer ) {\n\t\t\t\twindow.clearTimeout( timeoutTimer );\n\t\t\t}\n\n\t\t\t// Dereference transport for early garbage collection\n\t\t\t// (no matter how long the jqXHR object will be used)\n\t\t\ttransport = undefined;\n\n\t\t\t// Cache response headers\n\t\t\tresponseHeadersString = headers || \"\";\n\n\t\t\t// Set readyState\n\t\t\tjqXHR.readyState = status > 0 ? 4 : 0;\n\n\t\t\t// Determine if successful\n\t\t\tisSuccess = status >= 200 && status < 300 || status === 304;\n\n\t\t\t// Get response data\n\t\t\tif ( responses ) {\n\t\t\t\tresponse = ajaxHandleResponses( s, jqXHR, responses );\n\t\t\t}\n\n\t\t\t// Use a noop converter for missing script but not if jsonp\n\t\t\tif ( !isSuccess &&\n\t\t\t\tjQuery.inArray( \"script\", s.dataTypes ) > -1 &&\n\t\t\t\tjQuery.inArray( \"json\", s.dataTypes ) < 0 ) {\n\t\t\t\ts.converters[ \"text script\" ] = function() {};\n\t\t\t}\n\n\t\t\t// Convert no matter what (that way responseXXX fields are always set)\n\t\t\tresponse = ajaxConvert( s, response, jqXHR, isSuccess );\n\n\t\t\t// If successful, handle type chaining\n\t\t\tif ( isSuccess ) {\n\n\t\t\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\t\t\tif ( s.ifModified ) {\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"Last-Modified\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.lastModified[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"etag\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.etag[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// if no content\n\t\t\t\tif ( status === 204 || s.type === \"HEAD\" ) {\n\t\t\t\t\tstatusText = \"nocontent\";\n\n\t\t\t\t// if not modified\n\t\t\t\t} else if ( status === 304 ) {\n\t\t\t\t\tstatusText = \"notmodified\";\n\n\t\t\t\t// If we have data, let's convert it\n\t\t\t\t} else {\n\t\t\t\t\tstatusText = response.state;\n\t\t\t\t\tsuccess = response.data;\n\t\t\t\t\terror = response.error;\n\t\t\t\t\tisSuccess = !error;\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\t// Extract error from statusText and normalize for non-aborts\n\t\t\t\terror = statusText;\n\t\t\t\tif ( status || !statusText ) {\n\t\t\t\t\tstatusText = \"error\";\n\t\t\t\t\tif ( status < 0 ) {\n\t\t\t\t\t\tstatus = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set data for the fake xhr object\n\t\t\tjqXHR.status = status;\n\t\t\tjqXHR.statusText = ( nativeStatusText || statusText ) + \"\";\n\n\t\t\t// Success/Error\n\t\t\tif ( isSuccess ) {\n\t\t\t\tdeferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );\n\t\t\t} else {\n\t\t\t\tdeferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );\n\t\t\t}\n\n\t\t\t// Status-dependent callbacks\n\t\t\tjqXHR.statusCode( statusCode );\n\t\t\tstatusCode = undefined;\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( isSuccess ? \"ajaxSuccess\" : \"ajaxError\",\n\t\t\t\t\t[ jqXHR, s, isSuccess ? success : error ] );\n\t\t\t}\n\n\t\t\t// Complete\n\t\t\tcompleteDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxComplete\", [ jqXHR, s ] );\n\n\t\t\t\t// Handle the global AJAX counter\n\t\t\t\tif ( !( --jQuery.active ) ) {\n\t\t\t\t\tjQuery.event.trigger( \"ajaxStop\" );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn jqXHR;\n\t},\n\n\tgetJSON: function( url, data, callback ) {\n\t\treturn jQuery.get( url, data, callback, \"json\" );\n\t},\n\n\tgetScript: function( url, callback ) {\n\t\treturn jQuery.get( url, undefined, callback, \"script\" );\n\t}\n} );\n\njQuery.each( [ \"get\", \"post\" ], function( _i, method ) {\n\tjQuery[ method ] = function( url, data, callback, type ) {\n\n\t\t// Shift arguments if data argument was omitted\n\t\tif ( isFunction( data ) ) {\n\t\t\ttype = type || callback;\n\t\t\tcallback = data;\n\t\t\tdata = undefined;\n\t\t}\n\n\t\t// The url can be an options object (which then must have .url)\n\t\treturn jQuery.ajax( jQuery.extend( {\n\t\t\turl: url,\n\t\t\ttype: method,\n\t\t\tdataType: type,\n\t\t\tdata: data,\n\t\t\tsuccess: callback\n\t\t}, jQuery.isPlainObject( url ) && url ) );\n\t};\n} );\n\njQuery.ajaxPrefilter( function( s ) {\n\tvar i;\n\tfor ( i in s.headers ) {\n\t\tif ( i.toLowerCase() === \"content-type\" ) {\n\t\t\ts.contentType = s.headers[ i ] || \"\";\n\t\t}\n\t}\n} );\n\n\njQuery._evalUrl = function( url, options, doc ) {\n\treturn jQuery.ajax( {\n\t\turl: url,\n\n\t\t// Make this explicit, since user can override this through ajaxSetup (#11264)\n\t\ttype: \"GET\",\n\t\tdataType: \"script\",\n\t\tcache: true,\n\t\tasync: false,\n\t\tglobal: false,\n\n\t\t// Only evaluate the response if it is successful (gh-4126)\n\t\t// dataFilter is not invoked for failure responses, so using it instead\n\t\t// of the default converter is kludgy but it works.\n\t\tconverters: {\n\t\t\t\"text script\": function() {}\n\t\t},\n\t\tdataFilter: function( response ) {\n\t\t\tjQuery.globalEval( response, options, doc );\n\t\t}\n\t} );\n};\n\n\njQuery.fn.extend( {\n\twrapAll: function( html ) {\n\t\tvar wrap;\n\n\t\tif ( this[ 0 ] ) {\n\t\t\tif ( isFunction( html ) ) {\n\t\t\t\thtml = html.call( this[ 0 ] );\n\t\t\t}\n\n\t\t\t// The elements to wrap the target around\n\t\t\twrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true );\n\n\t\t\tif ( this[ 0 ].parentNode ) {\n\t\t\t\twrap.insertBefore( this[ 0 ] );\n\t\t\t}\n\n\t\t\twrap.map( function() {\n\t\t\t\tvar elem = this;\n\n\t\t\t\twhile ( elem.firstElementChild ) {\n\t\t\t\t\telem = elem.firstElementChild;\n\t\t\t\t}\n\n\t\t\t\treturn elem;\n\t\t\t} ).append( this );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\twrapInner: function( html ) {\n\t\tif ( isFunction( html ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).wrapInner( html.call( this, i ) );\n\t\t\t} );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar self = jQuery( this ),\n\t\t\t\tcontents = self.contents();\n\n\t\t\tif ( contents.length ) {\n\t\t\t\tcontents.wrapAll( html );\n\n\t\t\t} else {\n\t\t\t\tself.append( html );\n\t\t\t}\n\t\t} );\n\t},\n\n\twrap: function( html ) {\n\t\tvar htmlIsFunction = isFunction( html );\n\n\t\treturn this.each( function( i ) {\n\t\t\tjQuery( this ).wrapAll( htmlIsFunction ? html.call( this, i ) : html );\n\t\t} );\n\t},\n\n\tunwrap: function( selector ) {\n\t\tthis.parent( selector ).not( \"body\" ).each( function() {\n\t\t\tjQuery( this ).replaceWith( this.childNodes );\n\t\t} );\n\t\treturn this;\n\t}\n} );\n\n\njQuery.expr.pseudos.hidden = function( elem ) {\n\treturn !jQuery.expr.pseudos.visible( elem );\n};\njQuery.expr.pseudos.visible = function( elem ) {\n\treturn !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length );\n};\n\n\n\n\njQuery.ajaxSettings.xhr = function() {\n\ttry {\n\t\treturn new window.XMLHttpRequest();\n\t} catch ( e ) {}\n};\n\nvar xhrSuccessStatus = {\n\n\t\t// File protocol always yields status code 0, assume 200\n\t\t0: 200,\n\n\t\t// Support: IE <=9 only\n\t\t// #1450: sometimes IE returns 1223 when it should be 204\n\t\t1223: 204\n\t},\n\txhrSupported = jQuery.ajaxSettings.xhr();\n\nsupport.cors = !!xhrSupported && ( \"withCredentials\" in xhrSupported );\nsupport.ajax = xhrSupported = !!xhrSupported;\n\njQuery.ajaxTransport( function( options ) {\n\tvar callback, errorCallback;\n\n\t// Cross domain only allowed if supported through XMLHttpRequest\n\tif ( support.cors || xhrSupported && !options.crossDomain ) {\n\t\treturn {\n\t\t\tsend: function( headers, complete ) {\n\t\t\t\tvar i,\n\t\t\t\t\txhr = options.xhr();\n\n\t\t\t\txhr.open(\n\t\t\t\t\toptions.type,\n\t\t\t\t\toptions.url,\n\t\t\t\t\toptions.async,\n\t\t\t\t\toptions.username,\n\t\t\t\t\toptions.password\n\t\t\t\t);\n\n\t\t\t\t// Apply custom fields if provided\n\t\t\t\tif ( options.xhrFields ) {\n\t\t\t\t\tfor ( i in options.xhrFields ) {\n\t\t\t\t\t\txhr[ i ] = options.xhrFields[ i ];\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Override mime type if needed\n\t\t\t\tif ( options.mimeType && xhr.overrideMimeType ) {\n\t\t\t\t\txhr.overrideMimeType( options.mimeType );\n\t\t\t\t}\n\n\t\t\t\t// X-Requested-With header\n\t\t\t\t// For cross-domain requests, seeing as conditions for a preflight are\n\t\t\t\t// akin to a jigsaw puzzle, we simply never set it to be sure.\n\t\t\t\t// (it can always be set on a per-request basis or even using ajaxSetup)\n\t\t\t\t// For same-domain requests, won't change header if already provided.\n\t\t\t\tif ( !options.crossDomain && !headers[ \"X-Requested-With\" ] ) {\n\t\t\t\t\theaders[ \"X-Requested-With\" ] = \"XMLHttpRequest\";\n\t\t\t\t}\n\n\t\t\t\t// Set headers\n\t\t\t\tfor ( i in headers ) {\n\t\t\t\t\txhr.setRequestHeader( i, headers[ i ] );\n\t\t\t\t}\n\n\t\t\t\t// Callback\n\t\t\t\tcallback = function( type ) {\n\t\t\t\t\treturn function() {\n\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\tcallback = errorCallback = xhr.onload =\n\t\t\t\t\t\t\t\txhr.onerror = xhr.onabort = xhr.ontimeout =\n\t\t\t\t\t\t\t\t\txhr.onreadystatechange = null;\n\n\t\t\t\t\t\t\tif ( type === \"abort\" ) {\n\t\t\t\t\t\t\t\txhr.abort();\n\t\t\t\t\t\t\t} else if ( type === \"error\" ) {\n\n\t\t\t\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t\t\t\t// On a manual native abort, IE9 throws\n\t\t\t\t\t\t\t\t// errors on any property access that is not readyState\n\t\t\t\t\t\t\t\tif ( typeof xhr.status !== \"number\" ) {\n\t\t\t\t\t\t\t\t\tcomplete( 0, \"error\" );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tcomplete(\n\n\t\t\t\t\t\t\t\t\t\t// File: protocol always yields status 0; see #8605, #14207\n\t\t\t\t\t\t\t\t\t\txhr.status,\n\t\t\t\t\t\t\t\t\t\txhr.statusText\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcomplete(\n\t\t\t\t\t\t\t\t\txhrSuccessStatus[ xhr.status ] || xhr.status,\n\t\t\t\t\t\t\t\t\txhr.statusText,\n\n\t\t\t\t\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t\t\t\t\t// IE9 has no XHR2 but throws on binary (trac-11426)\n\t\t\t\t\t\t\t\t\t// For XHR2 non-text, let the caller handle it (gh-2498)\n\t\t\t\t\t\t\t\t\t( xhr.responseType || \"text\" ) !== \"text\" ||\n\t\t\t\t\t\t\t\t\ttypeof xhr.responseText !== \"string\" ?\n\t\t\t\t\t\t\t\t\t\t{ binary: xhr.response } :\n\t\t\t\t\t\t\t\t\t\t{ text: xhr.responseText },\n\t\t\t\t\t\t\t\t\txhr.getAllResponseHeaders()\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t};\n\n\t\t\t\t// Listen to events\n\t\t\t\txhr.onload = callback();\n\t\t\t\terrorCallback = xhr.onerror = xhr.ontimeout = callback( \"error\" );\n\n\t\t\t\t// Support: IE 9 only\n\t\t\t\t// Use onreadystatechange to replace onabort\n\t\t\t\t// to handle uncaught aborts\n\t\t\t\tif ( xhr.onabort !== undefined ) {\n\t\t\t\t\txhr.onabort = errorCallback;\n\t\t\t\t} else {\n\t\t\t\t\txhr.onreadystatechange = function() {\n\n\t\t\t\t\t\t// Check readyState before timeout as it changes\n\t\t\t\t\t\tif ( xhr.readyState === 4 ) {\n\n\t\t\t\t\t\t\t// Allow onerror to be called first,\n\t\t\t\t\t\t\t// but that will not handle a native abort\n\t\t\t\t\t\t\t// Also, save errorCallback to a variable\n\t\t\t\t\t\t\t// as xhr.onerror cannot be accessed\n\t\t\t\t\t\t\twindow.setTimeout( function() {\n\t\t\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\t\t\terrorCallback();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\t// Create the abort callback\n\t\t\t\tcallback = callback( \"abort\" );\n\n\t\t\t\ttry {\n\n\t\t\t\t\t// Do send the request (this may raise an exception)\n\t\t\t\t\txhr.send( options.hasContent && options.data || null );\n\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t// #14683: Only rethrow if this hasn't been notified as an error yet\n\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\tthrow e;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tabort: function() {\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tcallback();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n} );\n\n\n\n\n// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432)\njQuery.ajaxPrefilter( function( s ) {\n\tif ( s.crossDomain ) {\n\t\ts.contents.script = false;\n\t}\n} );\n\n// Install script dataType\njQuery.ajaxSetup( {\n\taccepts: {\n\t\tscript: \"text/javascript, application/javascript, \" +\n\t\t\t\"application/ecmascript, application/x-ecmascript\"\n\t},\n\tcontents: {\n\t\tscript: /\\b(?:java|ecma)script\\b/\n\t},\n\tconverters: {\n\t\t\"text script\": function( text ) {\n\t\t\tjQuery.globalEval( text );\n\t\t\treturn text;\n\t\t}\n\t}\n} );\n\n// Handle cache's special case and crossDomain\njQuery.ajaxPrefilter( \"script\", function( s ) {\n\tif ( s.cache === undefined ) {\n\t\ts.cache = false;\n\t}\n\tif ( s.crossDomain ) {\n\t\ts.type = \"GET\";\n\t}\n} );\n\n// Bind script tag hack transport\njQuery.ajaxTransport( \"script\", function( s ) {\n\n\t// This transport only deals with cross domain or forced-by-attrs requests\n\tif ( s.crossDomain || s.scriptAttrs ) {\n\t\tvar script, callback;\n\t\treturn {\n\t\t\tsend: function( _, complete ) {\n\t\t\t\tscript = jQuery( \"