{"version":3,"file":"poodll_onetwothreemediaskin.min.js","sources":["../src/poodll_onetwothreemediaskin.js"],"sourcesContent":["define(['jquery',  'core/log', 'filter_poodll/utils_amd', 'filter_poodll/anim_progress_bar',\r\n    'filter_poodll/speech_poodll', 'filter_poodll/dlg_devicesettings', 'filter_poodll/upskin_bar'],\r\n    function ($,  log, utils, anim_progress_bar, browserrecognition, settings, upskin_bar) {\r\n    /* jshint ignore:start */\r\n\r\n    \"use strict\"; // jshint ;_;\r\n\r\n    log.debug('PoodLL One Two Three Skin: initialising');\r\n\r\n    return {\r\n\r\n        instanceprops: null,\r\n        pmr: null,\r\n        stage: 'none',\r\n        uploaded: false,\r\n        devsettings: null,\r\n\r\n        //for making multiple instances\r\n        clone: function () {\r\n            return $.extend(true, {}, this);\r\n        },\r\n\r\n        init: function (ip, pmr) {\r\n            this.instanceprops = ip;\r\n            this.pmr = pmr;\r\n            this.devsettings = settings.clone();\r\n            this.devsettings.init(pmr, ip);\r\n        },\r\n\r\n\r\n        fetch_instanceprops: function () {\r\n            return this.instanceprops;\r\n        },\r\n\r\n\r\n        onUploadSuccess: function (controlbarid) {\r\n            $('#' + controlbarid + ' > .poodll_save-recording').hide();\r\n            $('#' + controlbarid + ' > .poodll_savedsuccessfully').show();\r\n        },\r\n\r\n        onUploadFailure: function (controlbarid) {\r\n            return;\r\n        },\r\n\r\n        fetch_status_bar: function (skin) {\r\n            var status = '<div class=\"poodll_status_' + skin + '\" height=\"50\">00:00:00</div>';\r\n            return status;\r\n        },\r\n\r\n        fetch_preview_audio: function (skin) {\r\n            var preview = '<audio class=\"audio_preview_123 poodll_preview_' + skin + '\" style=\"display: none;\" width=\"100%\" height=\"100%\" controls playsinline=\"playsinline\" muted></audio>';\r\n            return preview;\r\n        },\r\n        fetch_preview_video: function (skin) {\r\n            var preview = '<video class=\"video_preview_123 poodll_preview_' + skin + '\" width=\"100%\" height=\"300px\" playsinline=\"playsinline\" muted></video>';\r\n            return preview;\r\n        },\r\n        fetch_resource_audio: function (skin) {\r\n            var resourceplayer = '<audio class=\"poodll_resourceplayer_' + skin + '\" style=\"display: none;\" playsinline=\"playsinline\"></audio>';\r\n            return resourceplayer;\r\n        },\r\n        fetch_resource_video: function (skin) {\r\n            var resourceplayer = '<video class=\"poodll_resourceplayer_' + skin + '\" style=\"display: none;\" playsinline=\"playsinline\"></video>';\r\n            return resourceplayer;\r\n        },\r\n        fetch_uploader_skin: function (controlbarid, element) {\r\n            var ip = this.fetch_instanceprops(controlbarid);\r\n            var upskin = upskin_bar.clone();\r\n            upskin.init(ip.config, element, ip.controlbar.progresscanvas, ip.controlbar.timer);\r\n            return upskin;\r\n        },\r\n\r\n\r\n        onMediaError: function (e) {\r\n            console.error('media error', e);\r\n        },\r\n\r\n        onMediaSuccess_video: function (controlbarid) {\r\n            var ip = this.fetch_instanceprops(controlbarid);\r\n\r\n            //clear messages\r\n            ip.uploader.Output('');\r\n\r\n            this.set_visual_mode('recordmode', controlbarid);\r\n            //timer and status bar\r\n            ip.timer.reset();\r\n            ip.timer.start();\r\n            this.update_status(controlbarid);\r\n\r\n            //set recording stage\r\n            this.stage = \"recorded\";\r\n        },\r\n\r\n        onMediaSuccess_audio: function (controlbarid) {\r\n            var ip = this.fetch_instanceprops(controlbarid);\r\n\r\n            //clear messages\r\n            ip.uploader.Output('');\r\n\r\n            this.set_visual_mode('recordmode', controlbarid);\r\n            //timer and status bar\r\n            ip.timer.reset();\r\n            ip.timer.start();\r\n            this.update_status(controlbarid);\r\n            ip.controlbar.preview.attr('src', null);\r\n\r\n            //set recording stage\r\n            this.stage = \"recorded\";\r\n\r\n        },\r\n\r\n        handle_timer_update: function (controlbarid) {\r\n            var ip = this.fetch_instanceprops(controlbarid);\r\n            ip.controlbar.status.html(ip.timer.fetch_display_time());\r\n            if (ip.timer.seconds == 0 && ip.timer.initseconds > 0) {\r\n                ip.controlbar.stoprecbutton.click();\r\n            }\r\n        },\r\n\r\n        update_status: function (controlbarid) {\r\n            var ip = this.fetch_instanceprops(controlbarid);\r\n            ip.controlbar.status.html(ip.timer.fetch_display_time());\r\n        },\r\n\r\n        //set visuals for different states (ie recording or playing)\r\n        set_visual_mode: function (mode, controlbarid) {\r\n            var self = this;\r\n            var ip = this.fetch_instanceprops(controlbarid);\r\n\r\n            switch (mode) {\r\n\r\n                case 'recordmode':\r\n                    ip.controlbar.progress.hide();\r\n                    ip.controlbar.preview.addClass('poodll_recording');\r\n                    ip.controlbar.status.addClass('poodll_recording');\r\n                    if (ip.config.mediatype == 'audio') {\r\n                        ip.controlbar.preview.addClass('hide');\r\n                    }\r\n                    ip.controlbar.status.removeClass('hide');\r\n                    self.disable_button(this);\r\n                    self.disable_button(ip.controlbar.playbutton);\r\n                    ip.controlbar.playbutton.show();\r\n                    self.disable_button(ip.controlbar.stopbutton);\r\n                    ip.controlbar.stopbutton.hide();\r\n                    self.disable_button(ip.controlbar.savebutton);\r\n                    ip.controlbar.savebutton.show();\r\n                    self.enable_button(ip.controlbar.stoprecbutton);\r\n                    ip.controlbar.stoprecbutton.show();\r\n                    self.focus_button(ip.controlbar.stoprecbutton);\r\n                    ip.controlbar.startbutton.hide();\r\n                    self.disable_button(ip.controlbar.settingsicon);\r\n\r\n\r\n                    break;\r\n\r\n                case 'previewmode':\r\n                    ip.controlbar.playbutton.hide();\r\n                    self.enable_button(ip.controlbar.stopbutton);\r\n                    ip.controlbar.stopbutton.show();\r\n                    self.focus_button(ip.controlbar.stopbutton);\r\n                    self.disable_button(ip.controlbar.startbutton);\r\n                    ip.controlbar.startbutton.show();\r\n                    self.disable_button(ip.controlbar.resumebutton);\r\n                    ip.controlbar.resumebutton.hide();\r\n                    self.disable_button(ip.controlbar.playbutton);\r\n                    ip.controlbar.preview.removeClass('poodll_recording');\r\n                    ip.controlbar.status.removeClass('poodll_recording');\r\n                    if (ip.config.mediatype == 'audio') {\r\n                        ip.controlbar.preview.removeClass('hide');\r\n                    } else {\r\n                        ip.controlbar.status.removeClass('hide');\r\n                    }\r\n\r\n                    ip.controlbar.status.addClass('hide');\r\n                    if (ip.controlbar.progresscanvas.hasClass(\"hide\")) {\r\n                        ip.controlbar.progresscanvas.removeClass('hide');\r\n                        ip.controlbar.progresscanvas.show();\r\n                    }\r\n\r\n                    if (!$(this).hasClass('played')) {\r\n                        $(this).addClass('played');\r\n                        ip.controlbar.steptwo.empty();\r\n                        ip.controlbar.steptwo.append('<i class=\"fa fa-check\" aria-hidden=\"true\"></i>').hide().fadeIn(1000);\r\n                    }\r\n                    self.enable_button(ip.controlbar.settingsicon);\r\n\r\n\r\n                    break;\r\n\r\n                case 'pausedmode':\r\n\r\n                    self.enable_button(ip.controlbar.startbutton);\r\n                    ip.controlbar.startbutton.show();\r\n                    self.focus_button(ip.controlbar.startbutton);\r\n                    self.enable_button(ip.controlbar.playbutton);\r\n                    ip.controlbar.playbutton.show();\r\n                    self.disable_button(ip.controlbar.savebutton);\r\n                    ip.controlbar.savebutton.show();\r\n                    ip.controlbar.preview.removeClass('poodll_recording');\r\n                    ip.controlbar.status.removeClass('poodll_recording');\r\n                    ip.controlbar.stoprecbutton.hide();\r\n\r\n\r\n                    ip.controlbar.timer.html('00:00:00');\r\n\r\n                    ip.controlbar.status.addClass('hide');\r\n                    ip.controlbar.progress.show();\r\n\r\n                    ip.controlbar.stepone.empty();\r\n                    ip.controlbar.stepone.append('<i class=\"fa fa-check\" aria-hidden=\"true\"></i>').hide().fadeIn(1000);\r\n\r\n                    self.disable_button(ip.controlbar.stoprecbutton);\r\n                    self.enable_button(ip.controlbar.settingsicon);\r\n\r\n                    break;\r\n\r\n\r\n                case 'stopplayingmode':\r\n                    if (!self.uploaded) {\r\n                        self.enable_button(ip.controlbar.savebutton);\r\n                        self.enable_button(ip.controlbar.startbutton);\r\n                    }\r\n\r\n                    if (!ip.controlbar.progresscanvas.hasClass('hide')) {\r\n                        ip.controlbar.timer.html('00:00:00');\r\n                        ip.controlbar.progresscanvas.addClass('hide');\r\n                        ip.controlbar.progresscanvas.hide();\r\n                    }\r\n                    ip.controlbar.stopbutton.hide();\r\n                    ip.controlbar.playbutton.show();\r\n                    ip.controlbar.startbutton.show();\r\n                    self.enable_button(ip.controlbar.playbutton);\r\n                    self.focus_button(ip.controlbar.playbutton);\r\n                    self.disable_button(ip.controlbar.stopbutton);\r\n                    self.enable_button(ip.controlbar.settingsicon);\r\n                    break;\r\n\r\n                case 'uploadmode':\r\n\r\n                    self.disable_button(ip.controlbar.startbutton);\r\n                    ip.controlbar.progresscanvas.removeClass('hide');\r\n                    ip.controlbar.progresscanvas.show();\r\n\r\n                    break;\r\n\r\n                case 'savemode':\r\n\r\n                    self.disable_button(ip.controlbar.savebutton);\r\n                    ip.controlbar.stepthree.empty();\r\n                    ip.controlbar.stepthree.append('<i class=\"fa fa-check\" aria-hidden=\"true\"></i>').hide().fadeIn(1000);\r\n                    break;\r\n            }\r\n\r\n        },\r\n\r\n        //insert the control bar and return it to be reused\r\n        insert_controlbar_video: function (element, controlbarid, preview, resource) {\r\n            var controlbar = this.prepare_controlbar(element, controlbarid, preview, resource, 'video');\r\n            return controlbar;\r\n        },\r\n        //insert the control bar and return it to be reused\r\n        insert_controlbar_audio: function (element, controlbarid, preview, resource) {\r\n            var controlbar = this.prepare_controlbar(element, controlbarid, preview, resource, 'audio');\r\n            return controlbar;\r\n        },\r\n\r\n        //insert the control bar and return it to be reused\r\n        prepare_controlbar: function (element, controlbarid, preview, resource, mediatype) {\r\n            var ip = this.fetch_instanceprops(controlbarid);\r\n            var skin_style = ip.config.media_skin_style;\r\n            var recorder_class = mediatype == 'video' ? 'poodll_mediarecorder_video' : 'poodll_mediarecorder_audio';\r\n\r\n            var size_class = 'poodll_mediarecorder_size_auto';\r\n            switch (ip.config.size) {\r\n                case 'small':\r\n                    size_class = 'poodll_mediarecorder_size_small';\r\n                    break;\r\n                case 'big':\r\n                    size_class = 'poodll_mediarecorder_size_big';\r\n                    break;\r\n                case 'auto':\r\n                    size_class = 'poodll_mediarecorder_size_auto';\r\n            }\r\n            var ss = this.pmr.fetch_strings();\r\n            var controls = '<div class=\"one-two-three-main-wrapper poodll_mediarecorderholder_onetwothree ' + recorder_class + ' ' + size_class + '\" id=\"holder_' + controlbarid + '\">';\r\n\r\n            controls += '<div class=\"modal-box poodll_mediarecorderbox_onetwothree one-two-three-wrap\" id=\"' + controlbarid + '\">';\r\n            controls += '<div class=\"style-holder ' + skin_style + '\">';\r\n            var status = this.fetch_status_bar('onetwothree');\r\n            controls += status;\r\n            controls += '<div class=\"hp_slide\" id=\"slide_' + controlbarid + '\">';\r\n            controls += '<div class=\"hp_timer\"></div><canvas class=\"hp_range\"></canvas></div>';\r\n            controls += preview;\r\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>';\r\n            if(mediatype == 'video'){var recicon='video-camera';}else{recicon='microphone';}\r\n            controls += '<button type=\"button\" class=\"poodll_mediarecorder_button_onetwothree poodll_start-recording_onetwothree\" aria-label=\"' + ss['recui_record'] + '\"  tabindex=\"0\"><i class=\"fa fa-'+ recicon +'\" aria-hidden=\"true\"></i></button> ';\r\n            controls += '<button type=\"button\" class=\"poodll_mediarecorder_button_onetwothree poodll_stop-recording_onetwothree pmr_disabled\" aria-label=\"' + ss['recui_stop'] + '\"  tabindex=\"0\" style=\"display: none;\" disabled><i class=\"fa fa-stop\" aria-hidden=\"true\"></i></button>';\r\n            controls += '<button type=\"button\" class=\"poodll_mediarecorder_button_onetwothree poodll_pause-recording_onetwothree pmr_disabled\" aria-label=\"' + ss['recui_pause'] + '\"  tabindex=\"0\" style=\"display: none;\" disabled><i class=\"fa fa-pause\" aria-hidden=\"true\"></i></button>';\r\n            controls += ' <button type=\"button\" class=\"poodll_mediarecorder_button_onetwothree poodll_resume-recording_onetwothree pmr_disabled\" aria-label=\"' + ss['recui_resume'] + '\"  tabindex=\"0\" style=\"display: none;\" disabled><i class=\"fa fa-'+ recicon +'\" aria-hidden=\"true\"></i></button>';\r\n            controls += '<button type=\"button\" class=\"poodll_mediarecorder_button_onetwothree poodll_play-recording_onetwothree pmr_disabled\" aria-label=\"' + ss['recui_play'] + '\"  tabindex=\"0\" disabled><i class=\"fa fa-play\" aria-hidden=\"true\"></i></button> ';\r\n            controls += '<button type=\"button\" class=\"poodll_mediarecorder_button_onetwothree poodll_stop-playing_onetwothree pmr_disabled\" aria-label=\"' + ss['recui_stop'] + '\"  tabindex=\"0\" style=\"display: none;\" disabled><i class=\"fa fa-stop\" aria-hidden=\"true\"></i></button>';\r\n            controls += '<button type=\"button\" class=\"poodll_mediarecorder_button_onetwothree poodll_save-recording_onetwothree pmr_disabled\" aria-label=\"' + ss['recui_upload'] + '\"  tabindex=\"0\" disabled><i class=\"fa fa-upload\" aria-hidden=\"true\"></i></button>';\r\n            controls += '<div style=\"clear:both;\">';\r\n            controls += '<div class=\"task-helper\">';\r\n            controls += '<p class=\"step-1\">' + ss['recui_record'] + '</p>';\r\n            controls += '<p class=\"step-2\">' + ss['recui_play'] + '</p>';\r\n            controls += '<p class=\"step-3\">' + ss['recui_save'] + '</p>';\r\n            controls += '</div>';\r\n            controls += '</div>';\r\n            controls += '</div>';\r\n            controls += this.devsettings.fetch_dialogue_box();\r\n            controls += ip.downloaddialog.fetch_dialogue_box();\r\n            controls += ip.errordialog.fetch_dialogue_box();\r\n            controls += '</div>';\r\n\r\n            $(element).prepend(controls);\r\n\r\n            var controlbar = {\r\n                settingsdialog: $('#' + controlbarid + ' .poodll_dialogue_box_settings'),\r\n                downloaddialog: $('#' + controlbarid + ' .poodll_dialogue_box_download'),\r\n                errorsdialog: $('#' + controlbarid + ' .poodll_dialogue_box_errors'),\r\n                settingsicon: $('#' + controlbarid + ' .settingsicon'),\r\n                stepone: $('#' + controlbarid + ' .step-1'),\r\n                steptwo: $('#' + controlbarid + ' .step-2'),\r\n                stepthree: $('#' + controlbarid + ' .step-3'),\r\n                progresscanvas: $('#' + controlbarid + ' .hp_range'),\r\n                progress: $('#' + controlbarid + ' .hp_slide'),\r\n                timer: $('#' + controlbarid + ' .hp_timer'),\r\n                status: $('#' + controlbarid + ' .poodll_status_onetwothree'),\r\n                preview: $('#' + controlbarid + ' .poodll_preview_onetwothree'),\r\n                startbutton: $('#' + controlbarid + ' .poodll_start-recording_onetwothree'),\r\n                stoprecbutton: $('#' + controlbarid + ' .poodll_stop-recording_onetwothree'),\r\n                stopbutton: $('#' + controlbarid + ' .poodll_stop-playing_onetwothree'),\r\n                pausebutton: $('#' + controlbarid + ' .poodll_pause-recording_onetwothree'),\r\n                resumebutton: $('#' + controlbarid + ' .poodll_resume-recording_onetwothree'),\r\n                playbutton: $('#' + controlbarid + ' .poodll_play-recording_onetwothree'),\r\n                savebutton: $('#' + controlbarid + ' .poodll_save-recording_onetwothree')\r\n            };\r\n\r\n            //settings and error and download dialogs\r\n            //settings is on 'this' because it is shown from skkn events, but errors are from pmr stuff\r\n            ip.downloaddialog.set_dialogue_box(controlbar.downloaddialog);\r\n            ip.errordialog.set_dialogue_box(controlbar.errorsdialog);\r\n            this.devsettings.set_dialogue_box(controlbar.settingsdialog);\r\n\r\n            return controlbar;\r\n        }, //end of fetch_control_bar_onetwothree\r\n\r\n\r\n        register_controlbar_events_video: function (onMediaSuccess, controlbarid) {\r\n            return this.register_controlbar_events_audio(onMediaSuccess, controlbarid);\r\n        },\r\n\r\n        register_controlbar_events_audio: function (onMediaSuccess, controlbarid) {\r\n            var self = this;\r\n            var pmr = this.pmr;\r\n            var stage = this.stage;\r\n            var ip = this.fetch_instanceprops(controlbarid);\r\n\r\n            //init linear progress\r\n            var hprogress = anim_progress_bar.clone();\r\n            hprogress.init(ip.controlbar.progresscanvas);\r\n\r\n            ip.controlbar.settingsicon.click(function () {\r\n                if (!self.uploaded) {\r\n                    self.devsettings.open();\r\n                } else {\r\n                    ip.downloaddialog.open();\r\n                }\r\n            });\r\n\r\n            ip.controlbar.startbutton.click(function () {\r\n                pmr.do_start_audio(ip, onMediaSuccess);\r\n            });\r\n\r\n            ip.controlbar.stoprecbutton.click(function () {\r\n                pmr.do_stop_audio(ip);\r\n                self.set_visual_mode('pausedmode', controlbarid);\r\n                //timer and status bar\r\n                ip.timer.stop();\r\n                ip.timer.reset();\r\n                self.update_status(controlbarid);\r\n            });\r\n\r\n\r\n            ip.controlbar.stopbutton.click(function () {\r\n                self.set_visual_mode('stopplayingmode', controlbarid);\r\n                //stop playing\r\n                var preview = ip.controlbar.preview.get(0);\r\n                pmr.do_stopplay_audio(ip, preview);\r\n                hprogress.stop();\r\n            });\r\n\r\n            ip.controlbar.playbutton.click(function () {\r\n\r\n                var preview = ip.controlbar.preview.get(0);\r\n                pmr.do_play_audio(ip, preview);\r\n\r\n                ip.controlbar.preview.on('timeupdate', function () {\r\n                    var currentTime = this.currentTime;\r\n                    ip.controlbar.timer.html(ip.timer.fetch_display_time(currentTime));\r\n                });\r\n\r\n\r\n                //do visuals\r\n                self.set_visual_mode('previewmode', controlbarid);\r\n\r\n                //set recording stage\r\n                stage = \"played\";\r\n\r\n                //start animation\r\n                hprogress.clear();\r\n                hprogress.fetchCurrent = function () {\r\n                    var ct = ip.controlbar.preview.prop('currentTime');\r\n                    var duration = ip.controlbar.preview.prop('duration');\r\n                    if (!isFinite(duration)) {\r\n                        duration = ip.timer.finalseconds;\r\n                    }\r\n                    return ct / duration;\r\n                };\r\n                hprogress.start();\r\n\r\n            });\r\n\r\n            ip.controlbar.savebutton.click(function () {\r\n                self.set_visual_mode('savemode', controlbarid);\r\n                log.debug('save');\r\n                if (ip.blobs && ip.blobs.length > 0) {\r\n                    pmr.do_save_audio(ip);\r\n                    self.uploaded = true;\r\n                    self.set_visual_mode('uploadmode', controlbarid);\r\n                    //set recording stage\r\n                    stage = \"saved\";\r\n                } else {\r\n                    ip.uploader.Output(M.util.get_string('recui_nothingtosaveerror', 'filter_poodll'));\r\n                }//end of if self.blobs\r\n                //probably not necessary  ... but getting odd ajax errors occasionally\r\n                return false;\r\n            });//end of save recording\r\n\r\n            window.onbeforeunload = function () {\r\n                self.enable_button(ip.controlbar.startbutton);\r\n                var preview = ip.controlbar.preview;\r\n                if (preview && preview.get(0)) {\r\n                    preview.get(0).pause();\r\n                }\r\n            };\r\n\r\n        }, //end of register_control_bar_events_onetwothree\r\n\r\n        focus_button: function (button) {\r\n            $(button).focus();\r\n        },\r\n        enable_button: function (button) {\r\n            $(button).attr('disabled', false);\r\n            $(button).removeClass('pmr_disabled');\r\n        },\r\n        disable_button: function (button) {\r\n            $(button).attr('disabled', true);\r\n            $(button).addClass('pmr_disabled');\r\n        },\r\n\r\n    };//end of returned object\r\n\r\n});//total end\r\n\r\n"],"names":["define","$","log","utils","anim_progress_bar","browserrecognition","settings","upskin_bar","debug","instanceprops","pmr","stage","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","progresscanvas","timer","onMediaError","e","console","error","onMediaSuccess_video","uploader","Output","set_visual_mode","reset","start","update_status","onMediaSuccess_audio","preview","attr","handle_timer_update","status","html","fetch_display_time","seconds","initseconds","stoprecbutton","click","mode","progress","addClass","mediatype","removeClass","disable_button","playbutton","stopbutton","savebutton","enable_button","focus_button","startbutton","settingsicon","resumebutton","hasClass","steptwo","empty","append","fadeIn","stepone","stepthree","insert_controlbar_video","resource","prepare_controlbar","insert_controlbar_audio","skin_style","media_skin_style","recorder_class","size_class","size","ss","fetch_strings","controls","recicon","fetch_dialogue_box","downloaddialog","errordialog","prepend","settingsdialog","errorsdialog","pausebutton","set_dialogue_box","register_controlbar_events_video","onMediaSuccess","register_controlbar_events_audio","self","hprogress","open","do_start_audio","do_stop_audio","stop","get","do_stopplay_audio","do_play_audio","on","currentTime","clear","fetchCurrent","ct","prop","duration","isFinite","finalseconds","blobs","length","do_save_audio","M","util","get_string","window","onbeforeunload","pause","button","focus"],"mappings":"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"}