{"version":3,"file":"poodll_bmrmediaskin.min.js","sources":["../src/poodll_bmrmediaskin.js"],"sourcesContent":["/* jshint ignore:start */\ndefine(['jquery',  'core/log', 'filter_poodll/utils_amd', 'filter_poodll/dlg_devicesettings', 'filter_poodll/anim_progress_bar', 'filter_poodll/upskin_bar'],\n    function ($, log, utils, settings, anim_progress_bar, upskin_bar) {\n\n    \"use strict\"; // jshint ;_;\n\n    log.debug('PoodLL BMR Skin: initialising');\n\n\n    return {\n\n        instanceprops: null,\n        pmr: null,\n        uploaded: false,\n        devsettings: null,\n\n        //for making multiple instances\n        clone: function () {\n            return $.extend(true, {}, this);\n        },\n\n        init: function (ip, pmr) {\n            this.instanceprops = ip;\n            this.pmr = pmr;\n            this.devsettings = settings.clone();\n            this.devsettings.init(pmr, ip);\n        },\n\n\n        fetch_instanceprops: function () {\n            return this.instanceprops;\n        },\n\n\n        onUploadSuccess: function (controlbarid) {\n            $('#' + controlbarid + ' > .poodll_save-recording').hide();\n            // $('#' + controlbarid  + '_messages').hide();\n            $('#' + controlbarid + ' > .poodll_savedsuccessfully').show();\n        },\n\n        onUploadFailure: function (controlbarid) {\n            return;\n        },\n\n        fetch_status_bar: function (skin) {\n            // var status = '<div class=\"poodll_status_' + skin + '\" width=\"320\" height=\"50\">00:00:00</div>';\n            var status = '<div class=\"poodll_status_' + skin + '\">00:00:00</div>';\n            return status;\n        },\n\n        fetch_preview_audio: function (skin) {\n            var preview = '<audio class=\"poodll_preview_' + skin + ' hide\" controls playsinline=\"playsinline\" muted></audio>';\n            return preview;\n        },\n        fetch_preview_video: function (skin) {\n            var preview = '<video class=\"poodll_preview_' + skin + '\" playsinline=\"playsinline\" muted></video>';\n            return preview;\n        },\n        fetch_resource_audio: function (skin) {\n            var resourceplayer = '';\n            return resourceplayer;\n        },\n        fetch_resource_video: function (skin) {\n            var resourceplayer = '';\n            return resourceplayer;\n        },\n\n        fetch_uploader_skin: function (controlbarid, element) {\n            var ip = this.fetch_instanceprops(controlbarid);\n            var upskin = upskin_bar.clone();\n            upskin.init(ip.config, element, ip.controlbar.bmr_progresscanvas, ip.controlbar.status);\n            return upskin;\n        },\n\n        onMediaError: function (e) {\n            console.error('media error', e);\n        },\n\n        onMediaSuccess_video: function (controlbarid) {\n\n            var ip = this.fetch_instanceprops(controlbarid);\n            //clear messages\n            ip.uploader.Output('');\n            this.set_visual_mode('recordmode', controlbarid);\n            //timer and status bar\n            ip.timer.reset();\n            ip.timer.start();\n            this.update_status(controlbarid);\n        },\n\n        onMediaSuccess_audio: function (controlbarid) {\n\n\n            var ip = this.fetch_instanceprops(controlbarid);\n            //clear messages\n            ip.uploader.Output('');\n            ip.controlbar.preview.attr('src', null);\n            this.set_visual_mode('recordmode', controlbarid);\n\n            //timer and status bar\n            ip.timer.reset();\n            ip.timer.start();\n            this.update_status(controlbarid);\n        },\n\n        handle_timer_update: function (controlbarid) {\n            var ip = this.fetch_instanceprops(controlbarid);\n            ip.controlbar.status.html(ip.timer.fetch_display_time());\n            if (ip.timer.seconds == 0 && ip.timer.initseconds > 0) {\n                ip.controlbar.stopbutton.click();\n            }\n        },\n\n        update_status: function (controlbarid) {\n            var ip = this.fetch_instanceprops(controlbarid);\n            ip.controlbar.status.html(ip.timer.fetch_display_time());\n        },\n\n        //set visuals for different states (ie recording or playing)\n        set_visual_mode: function (mode, controlbarid) {\n            var self = this;\n            var ip = this.fetch_instanceprops(controlbarid);\n            this.visualmode = mode;\n\n            switch (mode) {\n\n                case 'recordmode':\n\n                    self.disable_button(ip.controlbar.startbutton);\n                    self.show_element(ip.controlbar.startbutton);\n\n                    self.hide_element(ip.controlbar.bmr_progresscanvas);\n\n                    self.enable_button(ip.controlbar.pausebutton);\n                    self.show_element(ip.controlbar.pausebutton);\n\n                    self.disable_button(ip.controlbar.playbutton);\n                    self.hide_element(ip.controlbar.resumebutton);\n                    self.enable_button(ip.controlbar.stopbutton);\n                    self.focus_button(ip.controlbar.stopbutton);\n\n                    //disable save button\n                    self.disable_button(ip.controlbar.savebutton);\n\n                    ip.controlbar.preview.addClass('poodll_recording');\n                    ip.controlbar.status.addClass('poodll_recording');\n\n                    if (ip.config.mediatype == 'audio') {\n                        self.hide_element(ip.controlbar.preview);\n                    }\n                    break;\n\n                case 'previewmode':\n\n                    self.disable_button(ip.controlbar.stopbutton);\n                    self.enable_button(ip.controlbar.playbutton);\n                    self.focus_button(ip.controlbar.playbutton);\n                    self.disable_button(ip.controlbar.pausebutton);\n                    self.enable_button(ip.controlbar.savebutton);\n\n                    //reset timer button\n                    ip.controlbar.status.html(ip.timer.fetch_display_time(ip.timer.finalSeconds));\n\n\n                    //If stop has been pressed there is no \"resuming\"\n                    self.show_element(ip.controlbar.startbutton);\n\n                    self.disable_button(ip.controlbar.resumebutton);\n                    self.hide_element(ip.controlbar.resumebutton);\n                    self.hide_element(ip.controlbar.bmr_progresscanvas);\n\n                    if (!self.uploaded) {\n                        self.enable_button(ip.controlbar.startbutton);\n                        self.enable_button(ip.controlbar.savebutton);\n                    }\n\n                    self.show_element(ip.controlbar.pausebutton);\n\n                    ip.controlbar.preview.removeClass('poodll_recording');\n                    ip.controlbar.status.removeClass('poodll_recording');\n\n\n                    if (ip.config.mediatype == 'audio') {\n                        self.show_element(ip.controlbar.preview);\n                    }\n                    // ip.controlbar.status.addClass('hide');\n                    //ip.controlbar.bmr_progresscanvas.removeClass('hide');\n                    self.enable_button(ip.controlbar.playbutton);\n\n                    break;\n\n                case 'playmode':\n                    ip.controlbar.status.html('00:00:00');\n                    self.disable_button(ip.controlbar.playbutton);\n                    self.enable_button(ip.controlbar.stopbutton);\n                    self.focus_button(ip.controlbar.stopbutton);\n                    self.disable_button(ip.controlbar.startbutton);\n                    self.disable_button(ip.controlbar.resumebutton);\n                    self.disable_button(ip.controlbar.playbutton);\n                    self.show_element(ip.controlbar.bmr_progresscanvas);\n\n                    //If play has been pressed there is no \"resuming\"\n                    self.show_element(ip.controlbar.startbutton);\n                    self.hide_element(ip.controlbar.resumebutton);\n\n                    break;\n\n\n                case 'pausedmode':\n\n                    self.disable_button(ip.controlbar.pausebutton);\n                    self.hide_element(ip.controlbar.startbutton);\n                    self.show_element(ip.controlbar.resumebutton);\n                    self.enable_button(ip.controlbar.resumebutton);\n                    self.focus_button(ip.controlbar.resumebutton);\n                    self.enable_button(ip.controlbar.savebutton);\n\n                    ip.controlbar.preview.removeClass('poodll_recording');\n                    ip.controlbar.status.removeClass('poodll_recording');\n                    break;\n\n                case 'uploadmode':\n                    self.disable_button(ip.controlbar.savebutton);\n                    self.disable_button(ip.controlbar.startbutton);\n                    self.show_element(ip.controlbar.bmr_progresscanvas);\n                    break;\n            }\n\n        },\n\n        //insert the control bar and return it to be reused\n        insert_controlbar_video: function (element, controlbarid, preview, resource) {\n            var controlbar = this.prepare_controlbar(element, controlbarid, preview, resource, 'video');\n            return controlbar;\n        },\n\n        //insert the control bar and return it to be reused\n        insert_controlbar_audio: function (element, controlbarid, preview, resource) {\n            var controlbar = this.prepare_controlbar(element, controlbarid, preview, resource, 'audio');\n            return controlbar;\n        },\n\n        //insert the control bar and return it to be reused\n        prepare_controlbar: function (element, controlbarid, preview, resource, mediatype) {\n            var ip = this.fetch_instanceprops(controlbarid);\n            var skin_style = ip.config.media_skin_style;\n\n            var size_class = 'poodll_mediarecorder_size_auto';\n            switch (ip.config.size) {\n                case 'small':\n                    size_class = 'poodll_mediarecorder_size_small';\n                    break;\n                case 'big':\n                    size_class = 'poodll_mediarecorder_size_big';\n                    break;\n                case 'auto':\n                    size_class = 'poodll_mediarecorder_size_auto';\n            }\n\n            var ss = this.pmr.fetch_strings();\n            var hideshowupload = ip.showupload ? '' : 'hide';\n            var record_icon = mediatype == 'video' ? 'fa-video-camera' : 'fa-microphone';\n            var recorder_class = mediatype == 'video' ? 'poodll_mediarecorder_video' : 'poodll_mediarecorder_audio';\n\n            var controls = '<div class=\"poodll_mediarecorderholder_bmr poodll_videorecorderholder_bmr '\n                + recorder_class + ' ' + size_class + '\" id=\"holder_' + controlbarid + '\">';\n\n            controls += '<div class=\"poodll_mediarecorderbox_bmr\" id=\"' + controlbarid + '\">';\n            controls += '<audio style=\"display: none !important;\" class=\"poodll-alert-recording\" id=\"' + controlbarid + '\"><source src=\"https://poodll.com/wp-content/themes/Poodll-Theme/images/ding.mp3\" type=\"audio/mpeg\"></audio>';\n            controls += '<div class=\"style-holder ' + skin_style + '\">';\n            controls += '<div class=\"poodll_statusholder_bmr\" >';\n            controls += '<canvas class=\"bmr_range\"></canvas>';\n            var status = this.fetch_status_bar('bmr');\n            controls += status;\n            controls += '</div>';\n\n            controls += preview,\n                controls += '<div class=\"settingsicon\" id=\"settingsicon_' + controlbarid + '\"><button type=\"button\" class=\"btn btn-info btn-lg\" data-toggle=\"modal\" data-target=\"#myModal\" aria-label=\"' + ss['recui_settings'] + '\"><i class=\"fa fa-cogs\" aria-hidden=\"true\"></i></button></div>';\n            controls += '<button type=\"button\" class=\"poodll_mediarecorder_button_bmr poodll_start-recording_bmr\" aria-label=\"' + ss['recui_record'] + '\"  tabindex=\"0\"><i class=\"fa ' + record_icon + '\" aria-hidden=\"true\"></i></button>';\n            controls += ' <button type=\"button\" class=\"poodll_mediarecorder_button_bmr poodll_resume-recording_bmr bmr_disabled hide\" aria-label=\"' + ss['recui_resume'] + '\"  tabindex=\"0\" disabled><i class=\"fa ' + record_icon + '\" aria-hidden=\"true\"></i></button>';\n            controls += '<button type=\"button\" class=\"poodll_mediarecorder_button_bmr poodll_stop-recording_bmr bmr_disabled\" aria-label=\"' + ss['recui_stop'] + '\"  tabindex=\"0\" disabled><i class=\"fa fa-stop\" aria-hidden=\"true\"></i></button>';\n            controls += '<button type=\"button\" class=\"poodll_mediarecorder_button_bmr poodll_pause-recording_bmr bmr_disabled\" aria-label=\"' + ss['recui_pause'] + '\"  tabindex=\"0\" disabled><i class=\"fa fa-pause\" aria-hidden=\"true\"></i></button>';\n            controls += ' <button type=\"button\" class=\"poodll_mediarecorder_button_bmr poodll_play-recording_bmr bmr_disabled\" aria-label=\"' + ss['recui_play'] + '\"  tabindex=\"0\" disabled><i class=\"fa fa-play\" aria-hidden=\"true\"></i></button>';\n            controls += '<button type=\"button\" class=\"poodll_save-recording_bmr ' + hideshowupload + '\" aria-label=\"' + ss['recui_upload'] + '\"  tabindex=\"0\" disabled>' + ss['recui_save'] + '</button>';\n            controls += '</div>';\n            controls += this.devsettings.fetch_dialogue_box();\n            controls += ip.downloaddialog.fetch_dialogue_box();\n            controls += ip.errordialog.fetch_dialogue_box();\n            controls += '</div>';\n            controls += '</div>';\n            $(element).prepend(controls);\n            var controlbar = {\n                poodll_recording_alert: $('#' + controlbarid + ' .poodll-alert-recording'),\n                bmr_progresscanvas: $('#' + controlbarid + ' .bmr_range'),\n                settingsdialog: $('#' + controlbarid + ' .poodll_dialogue_box_settings'),\n                downloaddialog: $('#' + controlbarid + ' .poodll_dialogue_box_download'),\n                errorsdialog: $('#' + controlbarid + ' .poodll_dialogue_box_errors'),\n                settingsicon: $('#' + controlbarid + ' .settingsicon'),\n                status: $('#' + controlbarid + ' .poodll_status_bmr'),\n                preview: $('#' + controlbarid + ' .poodll_preview_bmr'),\n                startbutton: $('#' + controlbarid + ' .poodll_start-recording_bmr'),\n                stopbutton: $('#' + controlbarid + ' .poodll_stop-recording_bmr'),\n                pausebutton: $('#' + controlbarid + ' .poodll_pause-recording_bmr'),\n                resumebutton: $('#' + controlbarid + ' .poodll_resume-recording_bmr'),\n                playbutton: $('#' + controlbarid + ' .poodll_play-recording_bmr'),\n                savebutton: $('#' + controlbarid + ' .poodll_save-recording_bmr')\n            };\n\n\n            //settings and error and download dialogs\n            //settings is on 'this' because it is shown from skkn events, but errors are from pmr stuff\n            ip.downloaddialog.set_dialogue_box(controlbar.downloaddialog);\n            ip.errordialog.set_dialogue_box(controlbar.errorsdialog);\n            this.devsettings.set_dialogue_box(controlbar.settingsdialog);\n            return controlbar;\n\n        }, //end of fetch_control_bar_bmr\n\n\n        register_controlbar_events_video: function (onMediaSuccess, controlbarid) {\n            return this.register_controlbar_events_audio(onMediaSuccess, controlbarid);\n        },\n\n        register_controlbar_events_audio: function (onMediaSuccess, controlbarid) {\n            var self = this;\n            var pmr = this.pmr;\n            var ip = this.fetch_instanceprops(controlbarid);\n\n            //Open the settings dialog\n            ip.controlbar.settingsicon.click(function () {\n                if (!self.uploaded) {\n                    self.devsettings.open();\n                } else {\n                    ip.downloaddialog.open();\n                }\n            });\n\n            //init progress bar\n            var hprogress = anim_progress_bar.clone();\n            hprogress.init(ip.controlbar.bmr_progresscanvas);\n\n\n            ip.controlbar.startbutton.click(function () {\n\n                //Play alert sound\n                //ip.controlbar.poodll_recording_alert.get(0).play();\n\n                //start recording\n                pmr.do_start_audio(ip, onMediaSuccess);\n\n            });\n\n            ip.controlbar.stopbutton.click(function () {\n                //stop the audio\n                pmr.do_stop_audio(ip);\n\n                var preview = ip.controlbar.preview;\n                if (preview && preview.get(0)) {\n                    preview.get(0).pause();\n                }\n\n                //timer and status bar\n                ip.timer.stop();\n                self.update_status(controlbarid);\n\n                //do visuals\n                self.set_visual_mode('previewmode', controlbarid);\n\n            });\n\n            ip.controlbar.pausebutton.click(function () {\n\n                pmr.do_pause_audio(ip);\n\n                //timer and status bar\n                ip.timer.pause();\n                self.update_status(controlbarid);\n                //do visuals\n                self.set_visual_mode('pausedmode', controlbarid);\n            });\n\n            ip.controlbar.resumebutton.click(function () {\n\n                pmr.do_resume_audio(ip);\n\n                //timer and status bar\n                ip.timer.resume();\n                self.update_status(controlbarid);\n                //do visuals\n                self.set_visual_mode('recordmode', controlbarid);\n            });\n\n            ip.controlbar.preview.on('timeupdate', function () {\n                if (self.visualmode != 'playmode') {\n                    return;\n                }\n                var currentTime = this.currentTime;\n                ip.controlbar.status.html(ip.timer.fetch_display_time(currentTime));\n            });\n\n            ip.controlbar.playbutton.click(function () {\n\n                var preview = ip.controlbar.preview.get(0);\n                pmr.do_play_audio(ip, preview);\n\n                //do visuals\n                self.set_visual_mode('playmode', controlbarid);\n\n                //start animation\n                hprogress.clear();\n                hprogress.fetchCurrent = function () {\n                    var ct = ip.controlbar.preview.prop('currentTime');\n                    var duration = ip.controlbar.preview.prop('duration');\n                    if (!isFinite(duration)) {\n                        duration = ip.timer.finalseconds;\n                    }\n                    return ct / duration;\n                };\n                hprogress.start();\n\n            });\n\n            ip.controlbar.savebutton.click(function () {\n\n                if (ip.blobs && ip.blobs.length > 0) {\n                    self.set_visual_mode('uploadmode', controlbarid);\n                    pmr.do_save_audio(ip);\n                    self.uploaded = true;\n                } else {\n                    ip.uploader.Output(M.util.get_string('recui_nothingtosaveerror', 'filter_poodll'));\n                }//end of if self.blobs\t\t\n                //probably not necessary  ... but getting odd ajax errors occasionally\n                return false;\n            });//end of save recording\n\n            window.onbeforeunload = function () {\n                self.enable_button(ip.controlbar.startbutton);\n                var preview = ip.controlbar.preview;\n                if (preview && preview.get(0)) {\n                    preview.get(0).pause();\n                    preview.get(0).controls = false;\n                }\n            };\n\n        }, //end of register_control_bar_events_bmr\n\n        show_element: function (element) {\n            $(element).removeClass('hide');\n            $(element).show();\n        },\n        hide_element: function (element) {\n            $(element).addClass('hide');\n            $(element).hide();\n        },\n        enable_button: function (button) {\n            $(button).attr('disabled', false);\n            $(button).removeClass('bmr_disabled');\n        },\n        disable_button: function (button) {\n            $(button).attr('disabled', true);\n            $(button).addClass('bmr_disabled');\n        },\n        focus_button: function (button) {\n            $(button).focus();\n        },\n\n    };//end of returned object\n\n\n});//total end"],"names":["define","$","log","utils","settings","anim_progress_bar","upskin_bar","debug","instanceprops","pmr","uploaded","devsettings","clone","extend","this","init","ip","fetch_instanceprops","onUploadSuccess","controlbarid","hide","show","onUploadFailure","fetch_status_bar","skin","fetch_preview_audio","fetch_preview_video","fetch_resource_audio","fetch_resource_video","fetch_uploader_skin","element","upskin","config","controlbar","bmr_progresscanvas","status","onMediaError","e","console","error","onMediaSuccess_video","uploader","Output","set_visual_mode","timer","reset","start","update_status","onMediaSuccess_audio","preview","attr","handle_timer_update","html","fetch_display_time","seconds","initseconds","stopbutton","click","mode","visualmode","disable_button","startbutton","show_element","hide_element","enable_button","pausebutton","playbutton","resumebutton","focus_button","savebutton","addClass","mediatype","finalSeconds","removeClass","insert_controlbar_video","resource","prepare_controlbar","insert_controlbar_audio","skin_style","media_skin_style","size_class","size","ss","fetch_strings","hideshowupload","showupload","record_icon","controls","fetch_dialogue_box","downloaddialog","errordialog","prepend","poodll_recording_alert","settingsdialog","errorsdialog","settingsicon","set_dialogue_box","register_controlbar_events_video","onMediaSuccess","register_controlbar_events_audio","self","open","hprogress","do_start_audio","do_stop_audio","get","pause","stop","do_pause_audio","do_resume_audio","resume","on","currentTime","do_play_audio","clear","fetchCurrent","ct","prop","duration","isFinite","finalseconds","blobs","length","do_save_audio","M","util","get_string","window","onbeforeunload","button","focus"],"mappings":"AACAA,2CAAO,CAAC,SAAW,WAAY,0BAA2B,mCAAoC,kCAAmC,6BAC7H,SAAUC,EAAGC,IAAKC,MAAOC,SAAUC,kBAAmBC,mBAItDJ,IAAIK,MAAM,iCAGH,CAEHC,cAAe,KACfC,IAAK,KACLC,UAAU,EACVC,YAAa,KAGbC,MAAO,kBACIX,EAAEY,QAAO,EAAM,GAAIC,OAG9BC,KAAM,SAAUC,GAAIP,UACXD,cAAgBQ,QAChBP,IAAMA,SACNE,YAAcP,SAASQ,aACvBD,YAAYI,KAAKN,IAAKO,KAI/BC,oBAAqB,kBACVH,KAAKN,eAIhBU,gBAAiB,SAAUC,cACvBlB,EAAE,IAAMkB,aAAe,6BAA6BC,OAEpDnB,EAAE,IAAMkB,aAAe,gCAAgCE,QAG3DC,gBAAiB,SAAUH,gBAI3BI,iBAAkB,SAAUC,YAEX,6BAA+BA,KAAO,oBAIvDC,oBAAqB,SAAUD,YACb,gCAAkCA,KAAO,4DAG3DE,oBAAqB,SAAUF,YACb,gCAAkCA,KAAO,8CAG3DG,qBAAsB,SAAUH,YACP,IAGzBI,qBAAsB,SAAUJ,YACP,IAIzBK,oBAAqB,SAAUV,aAAcW,aACrCd,GAAKF,KAAKG,oBAAoBE,cAC9BY,OAASzB,WAAWM,eACxBmB,OAAOhB,KAAKC,GAAGgB,OAAQF,QAASd,GAAGiB,WAAWC,mBAAoBlB,GAAGiB,WAAWE,QACzEJ,QAGXK,aAAc,SAAUC,GACpBC,QAAQC,MAAM,cAAeF,IAGjCG,qBAAsB,SAAUrB,kBAExBH,GAAKF,KAAKG,oBAAoBE,cAElCH,GAAGyB,SAASC,OAAO,SACdC,gBAAgB,aAAcxB,cAEnCH,GAAG4B,MAAMC,QACT7B,GAAG4B,MAAME,aACJC,cAAc5B,eAGvB6B,qBAAsB,SAAU7B,kBAGxBH,GAAKF,KAAKG,oBAAoBE,cAElCH,GAAGyB,SAASC,OAAO,IACnB1B,GAAGiB,WAAWgB,QAAQC,KAAK,MAAO,WAC7BP,gBAAgB,aAAcxB,cAGnCH,GAAG4B,MAAMC,QACT7B,GAAG4B,MAAME,aACJC,cAAc5B,eAGvBgC,oBAAqB,SAAUhC,kBACvBH,GAAKF,KAAKG,oBAAoBE,cAClCH,GAAGiB,WAAWE,OAAOiB,KAAKpC,GAAG4B,MAAMS,sBACX,GAApBrC,GAAG4B,MAAMU,SAAgBtC,GAAG4B,MAAMW,YAAc,GAChDvC,GAAGiB,WAAWuB,WAAWC,SAIjCV,cAAe,SAAU5B,kBACjBH,GAAKF,KAAKG,oBAAoBE,cAClCH,GAAGiB,WAAWE,OAAOiB,KAAKpC,GAAG4B,MAAMS,uBAIvCV,gBAAiB,SAAUe,KAAMvC,kBAEzBH,GAAKF,KAAKG,oBAAoBE,0BAC7BwC,WAAaD,KAEVA,UAEC,aANE5C,KAQE8C,eAAe5C,GAAGiB,WAAW4B,aAR/B/C,KASEgD,aAAa9C,GAAGiB,WAAW4B,aAT7B/C,KAWEiD,aAAa/C,GAAGiB,WAAWC,oBAX7BpB,KAaEkD,cAAchD,GAAGiB,WAAWgC,aAb9BnD,KAcEgD,aAAa9C,GAAGiB,WAAWgC,aAd7BnD,KAgBE8C,eAAe5C,GAAGiB,WAAWiC,YAhB/BpD,KAiBEiD,aAAa/C,GAAGiB,WAAWkC,cAjB7BrD,KAkBEkD,cAAchD,GAAGiB,WAAWuB,YAlB9B1C,KAmBEsD,aAAapD,GAAGiB,WAAWuB,YAnB7B1C,KAsBE8C,eAAe5C,GAAGiB,WAAWoC,YAElCrD,GAAGiB,WAAWgB,QAAQqB,SAAS,oBAC/BtD,GAAGiB,WAAWE,OAAOmC,SAAS,oBAEH,SAAvBtD,GAAGgB,OAAOuC,WA3BXzD,KA4BMiD,aAAa/C,GAAGiB,WAAWgB,mBAInC,cAhCEnC,KAkCE8C,eAAe5C,GAAGiB,WAAWuB,YAlC/B1C,KAmCEkD,cAAchD,GAAGiB,WAAWiC,YAnC9BpD,KAoCEsD,aAAapD,GAAGiB,WAAWiC,YApC7BpD,KAqCE8C,eAAe5C,GAAGiB,WAAWgC,aArC/BnD,KAsCEkD,cAAchD,GAAGiB,WAAWoC,YAGjCrD,GAAGiB,WAAWE,OAAOiB,KAAKpC,GAAG4B,MAAMS,mBAAmBrC,GAAG4B,MAAM4B,eAzC5D1D,KA6CEgD,aAAa9C,GAAGiB,WAAW4B,aA7C7B/C,KA+CE8C,eAAe5C,GAAGiB,WAAWkC,cA/C/BrD,KAgDEiD,aAAa/C,GAAGiB,WAAWkC,cAhD7BrD,KAiDEiD,aAAa/C,GAAGiB,WAAWC,oBAjD7BpB,KAmDOJ,WAnDPI,KAoDMkD,cAAchD,GAAGiB,WAAW4B,aApDlC/C,KAqDMkD,cAAchD,GAAGiB,WAAWoC,aArDlCvD,KAwDEgD,aAAa9C,GAAGiB,WAAWgC,aAEhCjD,GAAGiB,WAAWgB,QAAQwB,YAAY,oBAClCzD,GAAGiB,WAAWE,OAAOsC,YAAY,oBAGN,SAAvBzD,GAAGgB,OAAOuC,WA9DXzD,KA+DMgD,aAAa9C,GAAGiB,WAAWgB,SA/DjCnC,KAmEEkD,cAAchD,GAAGiB,WAAWiC,sBAIhC,WACDlD,GAAGiB,WAAWE,OAAOiB,KAAK,YAxEvBtC,KAyEE8C,eAAe5C,GAAGiB,WAAWiC,YAzE/BpD,KA0EEkD,cAAchD,GAAGiB,WAAWuB,YA1E9B1C,KA2EEsD,aAAapD,GAAGiB,WAAWuB,YA3E7B1C,KA4EE8C,eAAe5C,GAAGiB,WAAW4B,aA5E/B/C,KA6EE8C,eAAe5C,GAAGiB,WAAWkC,cA7E/BrD,KA8EE8C,eAAe5C,GAAGiB,WAAWiC,YA9E/BpD,KA+EEgD,aAAa9C,GAAGiB,WAAWC,oBA/E7BpB,KAkFEgD,aAAa9C,GAAGiB,WAAW4B,aAlF7B/C,KAmFEiD,aAAa/C,GAAGiB,WAAWkC,wBAK/B,aAxFErD,KA0FE8C,eAAe5C,GAAGiB,WAAWgC,aA1F/BnD,KA2FEiD,aAAa/C,GAAGiB,WAAW4B,aA3F7B/C,KA4FEgD,aAAa9C,GAAGiB,WAAWkC,cA5F7BrD,KA6FEkD,cAAchD,GAAGiB,WAAWkC,cA7F9BrD,KA8FEsD,aAAapD,GAAGiB,WAAWkC,cA9F7BrD,KA+FEkD,cAAchD,GAAGiB,WAAWoC,YAEjCrD,GAAGiB,WAAWgB,QAAQwB,YAAY,oBAClCzD,GAAGiB,WAAWE,OAAOsC,YAAY,8BAGhC,aArGE3D,KAsGE8C,eAAe5C,GAAGiB,WAAWoC,YAtG/BvD,KAuGE8C,eAAe5C,GAAGiB,WAAW4B,aAvG/B/C,KAwGEgD,aAAa9C,GAAGiB,WAAWC,sBAO5CwC,wBAAyB,SAAU5C,QAASX,aAAc8B,QAAS0B,iBAC9C7D,KAAK8D,mBAAmB9C,QAASX,aAAc8B,QAAS0B,SAAU,UAKvFE,wBAAyB,SAAU/C,QAASX,aAAc8B,QAAS0B,iBAC9C7D,KAAK8D,mBAAmB9C,QAASX,aAAc8B,QAAS0B,SAAU,UAKvFC,mBAAoB,SAAU9C,QAASX,aAAc8B,QAAS0B,SAAUJ,eAChEvD,GAAKF,KAAKG,oBAAoBE,cAC9B2D,WAAa9D,GAAGgB,OAAO+C,iBAEvBC,WAAa,wCACThE,GAAGgB,OAAOiD,UACT,QACDD,WAAa,4CAEZ,MACDA,WAAa,0CAEZ,OACDA,WAAa,qCAGjBE,GAAKpE,KAAKL,IAAI0E,gBACdC,eAAiBpE,GAAGqE,WAAa,GAAK,OACtCC,YAA2B,SAAbf,UAAuB,kBAAoB,gBAGzDgB,SAAW,8EAFmB,SAAbhB,UAAuB,6BAA+B,8BAGpD,IAAMS,WAAa,gBAAkB7D,aAAe,KAE3EoE,UAAY,gDAAkDpE,aAAe,KAC7EoE,UAAY,+EAAiFpE,aAAe,+GAC5GoE,UAAY,4BAA8BT,WAAa,KACvDS,UAAY,yCACZA,UAAY,sCAEZA,UADazE,KAAKS,iBAAiB,OAEnCgE,UAAY,SAEZA,UAAYtC,QACRsC,UAAY,8CAAgDpE,aAAe,8GAAgH+D,GAAE,eAAqB,iEACtNK,UAAY,wGAA0GL,GAAE,aAAmB,gCAAkCI,YAAc,qCAC3LC,UAAY,4HAA8HL,GAAE,aAAmB,yCAA2CI,YAAc,qCACxNC,UAAY,oHAAsHL,GAAE,WAAiB,kFACrJK,UAAY,qHAAuHL,GAAE,YAAkB,mFACvJK,UAAY,qHAAuHL,GAAE,WAAiB,kFACtJK,UAAY,0DAA4DH,eAAiB,iBAAmBF,GAAE,aAAmB,4BAA8BA,GAAE,WAAiB,YAClLK,UAAY,SACZA,UAAYzE,KAAKH,YAAY6E,qBAC7BD,UAAYvE,GAAGyE,eAAeD,qBAC9BD,UAAYvE,GAAG0E,YAAYF,qBAC3BD,UAAY,SACZA,UAAY,SACZtF,EAAE6B,SAAS6D,QAAQJ,cACftD,WAAa,CACb2D,uBAAwB3F,EAAE,IAAMkB,aAAe,4BAC/Ce,mBAAoBjC,EAAE,IAAMkB,aAAe,eAC3C0E,eAAgB5F,EAAE,IAAMkB,aAAe,kCACvCsE,eAAgBxF,EAAE,IAAMkB,aAAe,kCACvC2E,aAAc7F,EAAE,IAAMkB,aAAe,gCACrC4E,aAAc9F,EAAE,IAAMkB,aAAe,kBACrCgB,OAAQlC,EAAE,IAAMkB,aAAe,uBAC/B8B,QAAShD,EAAE,IAAMkB,aAAe,wBAChC0C,YAAa5D,EAAE,IAAMkB,aAAe,gCACpCqC,WAAYvD,EAAE,IAAMkB,aAAe,+BACnC8C,YAAahE,EAAE,IAAMkB,aAAe,gCACpCgD,aAAclE,EAAE,IAAMkB,aAAe,iCACrC+C,WAAYjE,EAAE,IAAMkB,aAAe,+BACnCkD,WAAYpE,EAAE,IAAMkB,aAAe,uCAMvCH,GAAGyE,eAAeO,iBAAiB/D,WAAWwD,gBAC9CzE,GAAG0E,YAAYM,iBAAiB/D,WAAW6D,mBACtCnF,YAAYqF,iBAAiB/D,WAAW4D,gBACtC5D,YAKXgE,iCAAkC,SAAUC,eAAgB/E,qBACjDL,KAAKqF,iCAAiCD,eAAgB/E,eAGjEgF,iCAAkC,SAAUD,eAAgB/E,kBACpDiF,KAAOtF,KACPL,IAAMK,KAAKL,IACXO,GAAKF,KAAKG,oBAAoBE,cAGlCH,GAAGiB,WAAW8D,aAAatC,OAAM,WACxB2C,KAAK1F,SAGNM,GAAGyE,eAAeY,OAFlBD,KAAKzF,YAAY0F,cAOrBC,UAAYjG,kBAAkBO,QAClC0F,UAAUvF,KAAKC,GAAGiB,WAAWC,oBAG7BlB,GAAGiB,WAAW4B,YAAYJ,OAAM,WAM5BhD,IAAI8F,eAAevF,GAAIkF,mBAI3BlF,GAAGiB,WAAWuB,WAAWC,OAAM,WAE3BhD,IAAI+F,cAAcxF,QAEdiC,QAAUjC,GAAGiB,WAAWgB,QACxBA,SAAWA,QAAQwD,IAAI,IACvBxD,QAAQwD,IAAI,GAAGC,QAInB1F,GAAG4B,MAAM+D,OACTP,KAAKrD,cAAc5B,cAGnBiF,KAAKzD,gBAAgB,cAAexB,iBAIxCH,GAAGiB,WAAWgC,YAAYR,OAAM,WAE5BhD,IAAImG,eAAe5F,IAGnBA,GAAG4B,MAAM8D,QACTN,KAAKrD,cAAc5B,cAEnBiF,KAAKzD,gBAAgB,aAAcxB,iBAGvCH,GAAGiB,WAAWkC,aAAaV,OAAM,WAE7BhD,IAAIoG,gBAAgB7F,IAGpBA,GAAG4B,MAAMkE,SACTV,KAAKrD,cAAc5B,cAEnBiF,KAAKzD,gBAAgB,aAAcxB,iBAGvCH,GAAGiB,WAAWgB,QAAQ8D,GAAG,cAAc,cACZ,YAAnBX,KAAKzC,gBAGLqD,YAAclG,KAAKkG,YACvBhG,GAAGiB,WAAWE,OAAOiB,KAAKpC,GAAG4B,MAAMS,mBAAmB2D,kBAG1DhG,GAAGiB,WAAWiC,WAAWT,OAAM,eAEvBR,QAAUjC,GAAGiB,WAAWgB,QAAQwD,IAAI,GACxChG,IAAIwG,cAAcjG,GAAIiC,SAGtBmD,KAAKzD,gBAAgB,WAAYxB,cAGjCmF,UAAUY,QACVZ,UAAUa,aAAe,eACjBC,GAAKpG,GAAGiB,WAAWgB,QAAQoE,KAAK,eAChCC,SAAWtG,GAAGiB,WAAWgB,QAAQoE,KAAK,mBACrCE,SAASD,YACVA,SAAWtG,GAAG4B,MAAM4E,cAEjBJ,GAAKE,UAEhBhB,UAAUxD,WAId9B,GAAGiB,WAAWoC,WAAWZ,OAAM,kBAEvBzC,GAAGyG,OAASzG,GAAGyG,MAAMC,OAAS,GAC9BtB,KAAKzD,gBAAgB,aAAcxB,cACnCV,IAAIkH,cAAc3G,IAClBoF,KAAK1F,UAAW,GAEhBM,GAAGyB,SAASC,OAAOkF,EAAEC,KAAKC,WAAW,2BAA4B,mBAG9D,KAGXC,OAAOC,eAAiB,WACpB5B,KAAKpC,cAAchD,GAAGiB,WAAW4B,iBAC7BZ,QAAUjC,GAAGiB,WAAWgB,QACxBA,SAAWA,QAAQwD,IAAI,KACvBxD,QAAQwD,IAAI,GAAGC,QACfzD,QAAQwD,IAAI,GAAGlB,UAAW,KAMtCzB,aAAc,SAAUhC,SACpB7B,EAAE6B,SAAS2C,YAAY,QACvBxE,EAAE6B,SAAST,QAEf0C,aAAc,SAAUjC,SACpB7B,EAAE6B,SAASwC,SAAS,QACpBrE,EAAE6B,SAASV,QAEf4C,cAAe,SAAUiE,QACrBhI,EAAEgI,QAAQ/E,KAAK,YAAY,GAC3BjD,EAAEgI,QAAQxD,YAAY,iBAE1Bb,eAAgB,SAAUqE,QACtBhI,EAAEgI,QAAQ/E,KAAK,YAAY,GAC3BjD,EAAEgI,QAAQ3D,SAAS,iBAEvBF,aAAc,SAAU6D,QACpBhI,EAAEgI,QAAQC"}