{ }} />\n*/\n\n(0, _preact.render)(app, document.getElementById('container'));","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.play = exports.pause = exports.seek = exports.load_epoch = exports.load_sequence = exports.list_sequences = exports.list_epochs = exports.list_checkpoints = exports.set_fullscreen = exports.send_command = exports.set_param = exports.get_params = undefined;\n\nvar _socket = require('../socket');\n\nvar _socket2 = _interopRequireDefault(_socket);\n\nvar _types = require('../types');\n\nvar _types2 = _interopRequireDefault(_types);\n\nvar _player = require('./player');\n\nvar player = _interopRequireWildcard(_player);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar get_params = exports.get_params = function get_params() {\n _socket2.default.live.get_params();\n return { type: _types2.default.player.get_params };\n};\n\nvar set_param = exports.set_param = function set_param(key, value) {\n console.log('set param', key, value);\n _socket2.default.live.set_param(key, value);\n return { type: _types2.default.player.set_param, key: key, value: value };\n};\n\nvar send_command = exports.send_command = function send_command(cmd, payload) {\n _socket2.default.live.send_command(cmd, payload);\n return { type: _types2.default.player.send_command };\n};\n\nvar set_fullscreen = exports.set_fullscreen = function set_fullscreen(value) {\n return { type: _types2.default.player.set_fullscreen, value: value };\n};\n\nvar list_checkpoints = exports.list_checkpoints = function list_checkpoints(module) {\n _socket2.default.live.list_checkpoints(module);\n return { type: _types2.default.player.loading_checkpoints };\n};\n\nvar list_epochs = exports.list_epochs = function list_epochs(module, checkpoint) {\n _socket2.default.live.list_epochs(module, checkpoint);\n return { type: _types2.default.player.loading_epochs };\n};\n\nvar list_sequences = exports.list_sequences = function list_sequences(module) {\n _socket2.default.live.list_sequences(module);\n return { type: _types2.default.player.loading_sequences };\n};\n\nvar load_sequence = exports.load_sequence = function load_sequence(sequence_name) {\n _socket2.default.live.load_sequence(sequence_name);\n return { type: _types2.default.player.loading_sequence, sequence_name: sequence_name };\n};\n\nvar load_epoch = exports.load_epoch = function load_epoch(checkpoint_name, epoch) {\n _socket2.default.live.load_epoch(checkpoint_name, epoch);\n return { type: _types2.default.player.loading_checkpoint, checkpoint_name: checkpoint_name, epoch: epoch };\n};\n\nvar seek = exports.seek = function seek(frame) {\n _socket2.default.live.seek(frame);\n return { type: _types2.default.player.seeking };\n};\n\nvar pause = exports.pause = function pause(frame) {\n _socket2.default.live.pause(pause);\n player.toggleFPS(false);\n return { type: _types2.default.player.pausing };\n};\n\nvar play = exports.play = function play(frame) {\n _socket2.default.live.play();\n player.toggleFPS(true);\n return { type: _types2.default.player.playing };\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _moment = require('moment/min/moment.min');\n\nvar _moment2 = _interopRequireDefault(_moment);\n\nvar _fileSaver = require('file-saver');\n\nvar _fileSaver2 = _interopRequireDefault(_fileSaver);\n\nvar _types = require('../types');\n\nvar _types2 = _interopRequireDefault(_types);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar liveInitialState = {\n loading: false,\n error: null,\n opt: {\n hue: 0, saturation: 0, luminosity: 0,\n sequence_playing: true, sequence_step: 1,\n recurse_roll: 0, rotate: 0, scale: 0, process_frac: 0.5,\n view_mode: 'b',\n encoding_stored_mix_n: 0\n },\n all_checkpoints: [],\n checkpoints: [],\n epochs: ['latest'],\n sequences: [],\n fps: 0,\n playing: false,\n last_message: '',\n fullscreen: false,\n frame: { i: 0, sequence_i: 0, sequence_len: '1' }\n};\n\nvar liveReducer = function liveReducer() {\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : liveInitialState;\n var action = arguments[1];\n\n // console.log(action)\n var results = void 0;\n switch (action.type) {\n case _types2.default.socket.load_params:\n console.log(action.opt);\n if (!action.opt || !Object.keys(action.opt).length) {\n return state;\n }\n return _extends({}, state, {\n loading: false,\n error: null,\n opt: action.opt\n });\n\n case _types2.default.player.set_param:\n return _extends({}, state, {\n opt: _extends({}, state.opt, _defineProperty({}, action.key, action.value))\n });\n\n case _types2.default.player.set_fullscreen:\n return _extends({}, state, {\n fullscreen: action.value\n });\n\n case _types2.default.socket.list_checkpoints:\n return _extends({}, state, {\n checkpoints: action.checkpoints,\n epochs: []\n });\n\n case _types2.default.socket.list_all_checkpoints:\n return _extends({}, state, {\n all_checkpoints: action.all_checkpoints,\n epochs: []\n });\n\n case _types2.default.socket.list_epochs:\n console.log(action);\n if (action.epochs === \"not found\") return _extends({}, state, { epochs: [] });\n return _extends({}, state, {\n epochs: (action.epochs || []).map(function (a) {\n return [a == 'latest' ? Infinity : a, a];\n }).sort(function (a, b) {\n return a[0] - b[0];\n }).map(function (a) {\n return a[1];\n })\n });\n\n case _types2.default.socket.list_sequences:\n return _extends({}, state, {\n sequences: action.sequences\n });\n\n case _types2.default.player.loading_sequence:\n return _extends({}, state, {\n opt: _extends({}, state.opt, {\n sequence_name: action.sequence_name\n })\n });\n\n case _types2.default.player.loading_checkpoint:\n return _extends({}, state, {\n opt: _extends({}, state.opt, {\n checkpoint_name: action.checkpoint_name,\n epoch: action.epoch\n })\n });\n\n case _types2.default.player.set_fps:\n return _extends({}, state, {\n fps: action.fps\n });\n\n case _types2.default.system.stdout:\n if (action.data.processor === 'gpu') {\n // receive parameter updates from the app\n if (action.data.data.indexOf('set_opt') !== -1) {\n var new_opt = action.data.data.trim().split('\\n').reduce(function (a, b) {\n if (b.indexOf('set_opt') === 0) {\n var terms = b.split(' ');\n var key = terms[1];\n var value = parseFloat(terms[2]);\n if (isNaN(value)) {\n value = terms[2];\n }\n a[key] = value;\n }\n return a;\n }, {});\n return _extends({}, state, {\n opt: _extends({}, state.opt, new_opt)\n });\n }\n return _extends({}, state, {\n last_message: action.data.data\n });\n }\n return state;\n\n case _types2.default.player.current_frame:\n return action.meta ? _extends({}, state, {\n frame: action.meta\n }) : state;\n\n case _types2.default.player.pausing:\n return _extends({}, state, {\n playing: false\n });\n\n case _types2.default.player.playing:\n return _extends({}, state, {\n playing: true\n });\n\n case _types2.default.player.start_recording:\n return _extends({}, state, {\n opt: _extends({}, state.opt, {\n recording: true\n })\n });\n case _types2.default.player.add_record_frame:\n return _extends({}, state, {\n opt: _extends({}, state.opt, {\n recordFrames: (state.opt.recordFrames || 0) + 1\n })\n });\n case _types2.default.player.save_frame:\n _fileSaver2.default.saveAs(action.blob, state.opt.checkpoint_name + \"_\" + state.opt.sequence + \"_\" + (0, _moment2.default)().format(\"YYYYMMDD_HHmm\") + \".png\");\n return state;\n\n case _types2.default.player.saving_video:\n return _extends({}, state, {\n opt: _extends({}, state.opt, {\n savingVideo: true\n })\n });\n case _types2.default.player.save_video:\n _fileSaver2.default.saveAs(action.blob, state.opt.checkpoint_name + \"_\" + state.opt.sequence + \"_\" + (0, _moment2.default)().format(\"YYYYMMDD_HHmm\") + \".webm\");\n return _extends({}, state, {\n opt: _extends({}, state.opt, {\n recording: false,\n savingVideo: false,\n recordFrames: 0\n })\n });\n\n default:\n return state;\n }\n};\n\nexports.default = liveReducer;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.startSynthesizing = startSynthesizing;\nexports.stopSynthesizing = stopSynthesizing;\nexports.startRecording = startRecording;\nexports.stopRecording = stopRecording;\nexports.saveFrame = saveFrame;\nexports.onFrame = onFrame;\nexports.toggleFPS = toggleFPS;\nexports.startWatchingFPS = startWatchingFPS;\nexports.stopWatchingFPS = stopWatchingFPS;\n\nvar _store = require('../store');\n\nvar _whammy = require('./whammy');\n\nvar _whammy2 = _interopRequireDefault(_whammy);\n\nvar _types = require('../types');\n\nvar _types2 = _interopRequireDefault(_types);\n\nvar _pix2wav = require('../audio/pix2wav');\n\nvar pix2wav = _interopRequireWildcard(_pix2wav);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar fps = 0;\nvar recording = false,\n saving = false,\n synthesizing = false;\nvar videoWriter = void 0;\n\nfunction startSynthesizing() {\n synthesizing = true;\n}\nfunction stopSynthesizing() {\n synthesizing = false;\n}\n\nfunction startRecording() {\n videoWriter = new _whammy2.default.Video(25, 0.95);\n recording = true;\n _store.store.dispatch({\n type: _types2.default.player.start_recording\n });\n}\n\nfunction stopRecording() {\n if (!recording) return;\n recording = false;\n _store.store.dispatch({\n type: _types2.default.player.saving_video\n });\n videoWriter.compile(false, function (blob) {\n // console.log(blob)\n _store.store.dispatch({\n type: _types2.default.player.save_video,\n blob: blob\n });\n });\n}\n\nfunction saveFrame() {\n saving = true;\n}\n\nfunction onFrame(data) {\n _store.store.dispatch({\n type: _types2.default.player.current_frame,\n meta: data.meta\n });\n var blob = new Blob([data.frame], { type: 'image/jpg' });\n var url = URL.createObjectURL(blob);\n var img = new Image();\n var canvas = document.querySelector('.player canvas');\n if (!canvas) return console.error('no canvas for frame');\n img.onload = function () {\n img.onload = null;\n URL.revokeObjectURL(url);\n var ctx = canvas.getContext('2d-lodpi');\n ctx.drawImage(img, 0, 0, canvas.width, canvas.height);\n if (synthesizing) {\n var imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);\n pix2wav.play({ imageData: imageData });\n }\n if (recording) {\n console.log('record frame');\n videoWriter.add(canvas);\n _store.store.dispatch({\n type: _types2.default.player.add_record_frame\n });\n }\n if (saving) {\n saving = false;\n canvas.toBlob(function (blob) {\n _store.store.dispatch({\n type: _types2.default.player.save_frame,\n blob: blob\n });\n });\n }\n fps += 1;\n };\n img.src = url;\n}\n\nvar previousValue = void 0,\n currentValue = void 0;\nfunction toggleFPS(state) {\n currentValue = typeof state !== 'undefined' ? state : _store.store.getState().live.playing;\n if (previousValue !== currentValue) {\n if (currentValue) {\n startWatchingFPS();\n } else {\n stopWatchingFPS();\n }\n }\n previousValue = currentValue;\n}\n\nvar fpsInterval = void 0;\n\nfunction startWatchingFPS() {\n clearInterval(fpsInterval);\n fpsInterval = setInterval(function () {\n _store.store.dispatch({\n type: _types2.default.player.set_fps,\n fps: fps\n });\n fps = 0;\n }, 1000);\n}\nfunction stopWatchingFPS() {\n clearInterval(fpsInterval);\n}","\"use strict\";\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nmodule.exports = function () {\n // in this case, frames has a very specific meaning, which will be\n // detailed once i finish writing the code\n\n function toWebM(frames, outputAsArray) {\n var info = checkFrames(frames);\n\n //max duration by cluster in milliseconds\n var CLUSTER_MAX_DURATION = 30000;\n\n var EBML = [{\n \"id\": 0x1a45dfa3, // EBML\n \"data\": [{\n \"data\": 1,\n \"id\": 0x4286 // EBMLVersion\n }, {\n \"data\": 1,\n \"id\": 0x42f7 // EBMLReadVersion\n }, {\n \"data\": 4,\n \"id\": 0x42f2 // EBMLMaxIDLength\n }, {\n \"data\": 8,\n \"id\": 0x42f3 // EBMLMaxSizeLength\n }, {\n \"data\": \"webm\",\n \"id\": 0x4282 // DocType\n }, {\n \"data\": 2,\n \"id\": 0x4287 // DocTypeVersion\n }, {\n \"data\": 2,\n \"id\": 0x4285 // DocTypeReadVersion\n }]\n }, {\n \"id\": 0x18538067, // Segment\n \"data\": [{\n \"id\": 0x1549a966, // Info\n \"data\": [{\n \"data\": 1e6, //do things in millisecs (num of nanosecs for duration scale)\n \"id\": 0x2ad7b1 // TimecodeScale\n }, {\n \"data\": \"whammy\",\n \"id\": 0x4d80 // MuxingApp\n }, {\n \"data\": \"whammy\",\n \"id\": 0x5741 // WritingApp\n }, {\n \"data\": doubleToString(info.duration),\n \"id\": 0x4489 // Duration\n }]\n }, {\n \"id\": 0x1654ae6b, // Tracks\n \"data\": [{\n \"id\": 0xae, // TrackEntry\n \"data\": [{\n \"data\": 1,\n \"id\": 0xd7 // TrackNumber\n }, {\n \"data\": 1,\n \"id\": 0x73c5 // TrackUID\n }, {\n \"data\": 0,\n \"id\": 0x9c // FlagLacing\n }, {\n \"data\": \"und\",\n \"id\": 0x22b59c // Language\n }, {\n \"data\": \"V_VP8\",\n \"id\": 0x86 // CodecID\n }, {\n \"data\": \"VP8\",\n \"id\": 0x258688 // CodecName\n }, {\n \"data\": 1,\n \"id\": 0x83 // TrackType\n }, {\n \"id\": 0xe0, // Video\n \"data\": [{\n \"data\": info.width,\n \"id\": 0xb0 // PixelWidth\n }, {\n \"data\": info.height,\n \"id\": 0xba // PixelHeight\n }]\n }]\n }]\n }, {\n \"id\": 0x1c53bb6b, // Cues\n \"data\": [\n //cue insertion point\n ]\n\n //cluster insertion point\n }]\n }];\n\n var segment = EBML[1];\n var cues = segment.data[2];\n\n //Generate clusters (max duration)\n var frameNumber = 0;\n var clusterTimecode = 0;\n while (frameNumber < frames.length) {\n\n var cuePoint = {\n \"id\": 0xbb, // CuePoint\n \"data\": [{\n \"data\": Math.round(clusterTimecode),\n \"id\": 0xb3 // CueTime\n }, {\n \"id\": 0xb7, // CueTrackPositions\n \"data\": [{\n \"data\": 1,\n \"id\": 0xf7 // CueTrack\n }, {\n \"data\": 0, // to be filled in when we know it\n \"size\": 8,\n \"id\": 0xf1 // CueClusterPosition\n }]\n }]\n };\n\n cues.data.push(cuePoint);\n\n var clusterFrames = [];\n var clusterDuration = 0;\n do {\n clusterFrames.push(frames[frameNumber]);\n clusterDuration += frames[frameNumber].duration;\n frameNumber++;\n } while (frameNumber < frames.length && clusterDuration < CLUSTER_MAX_DURATION);\n\n var clusterCounter = 0;\n var cluster = {\n \"id\": 0x1f43b675, // Cluster\n \"data\": [{\n \"data\": Math.round(clusterTimecode),\n \"id\": 0xe7 // Timecode\n }].concat(clusterFrames.map(function (webp) {\n var block = makeSimpleBlock({\n discardable: 0,\n frame: webp.data.slice(4),\n invisible: 0,\n keyframe: 1,\n lacing: 0,\n trackNum: 1,\n timecode: Math.round(clusterCounter)\n });\n clusterCounter += webp.duration;\n return {\n data: block,\n id: 0xa3\n };\n }))\n\n //Add cluster to segment\n };segment.data.push(cluster);\n clusterTimecode += clusterDuration;\n }\n\n //First pass to compute cluster positions\n var position = 0;\n for (var i = 0; i < segment.data.length; i++) {\n if (i >= 3) {\n cues.data[i - 3].data[1].data[1].data = position;\n }\n var data = generateEBML([segment.data[i]], outputAsArray);\n position += data.size || data.byteLength || data.length;\n if (i != 2) {\n // not cues\n //Save results to avoid having to encode everything twice\n segment.data[i] = data;\n }\n }\n\n return generateEBML(EBML, outputAsArray);\n }\n\n // sums the lengths of all the frames and gets the duration, woo\n\n function checkFrames(frames) {\n var width = frames[0].width,\n height = frames[0].height,\n duration = frames[0].duration;\n for (var i = 1; i < frames.length; i++) {\n if (frames[i].width != width) throw \"Frame \" + (i + 1) + \" has a different width\";\n if (frames[i].height != height) throw \"Frame \" + (i + 1) + \" has a different height\";\n if (frames[i].duration < 0 || frames[i].duration > 0x7fff) throw \"Frame \" + (i + 1) + \" has a weird duration (must be between 0 and 32767)\";\n duration += frames[i].duration;\n }\n return {\n duration: duration,\n width: width,\n height: height\n };\n }\n\n function numToBuffer(num) {\n var parts = [];\n while (num > 0) {\n parts.push(num & 0xff);\n num = num >> 8;\n }\n return new Uint8Array(parts.reverse());\n }\n\n function numToFixedBuffer(num, size) {\n var parts = new Uint8Array(size);\n for (var i = size - 1; i >= 0; i--) {\n parts[i] = num & 0xff;\n num = num >> 8;\n }\n return parts;\n }\n\n function strToBuffer(str) {\n // return new Blob([str]);\n\n var arr = new Uint8Array(str.length);\n for (var i = 0; i < str.length; i++) {\n arr[i] = str.charCodeAt(i);\n }\n return arr;\n // this is slower\n // return new Uint8Array(str.split('').map(function(e){\n // return e.charCodeAt(0)\n // }))\n }\n\n //sorry this is ugly, and sort of hard to understand exactly why this was done\n // at all really, but the reason is that there's some code below that i dont really\n // feel like understanding, and this is easier than using my brain.\n\n function bitsToBuffer(bits) {\n var data = [];\n var pad = bits.length % 8 ? new Array(1 + 8 - bits.length % 8).join('0') : '';\n bits = pad + bits;\n for (var i = 0; i < bits.length; i += 8) {\n data.push(parseInt(bits.substr(i, 8), 2));\n }\n return new Uint8Array(data);\n }\n\n function generateEBML(json, outputAsArray) {\n var ebml = [];\n for (var i = 0; i < json.length; i++) {\n if (!('id' in json[i])) {\n //already encoded blob or byteArray\n ebml.push(json[i]);\n continue;\n }\n\n var data = json[i].data;\n if ((typeof data === \"undefined\" ? \"undefined\" : _typeof(data)) == 'object') data = generateEBML(data, outputAsArray);\n if (typeof data == 'number') data = 'size' in json[i] ? numToFixedBuffer(data, json[i].size) : bitsToBuffer(data.toString(2));\n if (typeof data == 'string') data = strToBuffer(data);\n\n if (data.length) {\n var z = z;\n }\n\n var len = data.size || data.byteLength || data.length;\n var zeroes = Math.ceil(Math.ceil(Math.log(len) / Math.log(2)) / 8);\n var size_str = len.toString(2);\n var padded = new Array(zeroes * 7 + 7 + 1 - size_str.length).join('0') + size_str;\n var size = new Array(zeroes).join('0') + '1' + padded;\n\n //i actually dont quite understand what went on up there, so I'm not really\n //going to fix this, i'm probably just going to write some hacky thing which\n //converts that string into a buffer-esque thing\n\n ebml.push(numToBuffer(json[i].id));\n ebml.push(bitsToBuffer(size));\n ebml.push(data);\n }\n\n //output as blob or byteArray\n if (outputAsArray) {\n //convert ebml to an array\n var buffer = toFlatArray(ebml);\n return new Uint8Array(buffer);\n } else {\n return new Blob(ebml, { type: \"video/webm\" });\n }\n }\n\n function toFlatArray(arr, outBuffer) {\n if (outBuffer == null) {\n outBuffer = [];\n }\n for (var i = 0; i < arr.length; i++) {\n if (_typeof(arr[i]) == 'object') {\n //an array\n toFlatArray(arr[i], outBuffer);\n } else {\n //a simple element\n outBuffer.push(arr[i]);\n }\n }\n return outBuffer;\n }\n\n //OKAY, so the following two functions are the string-based old stuff, the reason they're\n //still sort of in here, is that they're actually faster than the new blob stuff because\n //getAsFile isn't widely implemented, or at least, it doesn't work in chrome, which is the\n // only browser which supports get as webp\n\n //Converting between a string of 0010101001's and binary back and forth is probably inefficient\n //TODO: get rid of this function\n function toBinStr_old(bits) {\n var data = '';\n var pad = bits.length % 8 ? new Array(1 + 8 - bits.length % 8).join('0') : '';\n bits = pad + bits;\n for (var i = 0; i < bits.length; i += 8) {\n data += String.fromCharCode(parseInt(bits.substr(i, 8), 2));\n }\n return data;\n }\n\n function generateEBML_old(json) {\n var ebml = '';\n for (var i = 0; i < json.length; i++) {\n var data = json[i].data;\n if ((typeof data === \"undefined\" ? \"undefined\" : _typeof(data)) == 'object') data = generateEBML_old(data);\n if (typeof data == 'number') data = toBinStr_old(data.toString(2));\n\n var len = data.length;\n var zeroes = Math.ceil(Math.ceil(Math.log(len) / Math.log(2)) / 8);\n var size_str = len.toString(2);\n var padded = new Array(zeroes * 7 + 7 + 1 - size_str.length).join('0') + size_str;\n var size = new Array(zeroes).join('0') + '1' + padded;\n\n ebml += toBinStr_old(json[i].id.toString(2)) + toBinStr_old(size) + data;\n }\n return ebml;\n }\n\n //woot, a function that's actually written for this project!\n //this parses some json markup and makes it into that binary magic\n //which can then get shoved into the matroska comtainer (peaceably)\n\n function makeSimpleBlock(data) {\n var flags = 0;\n if (data.keyframe) flags |= 128;\n if (data.invisible) flags |= 8;\n if (data.lacing) flags |= data.lacing << 1;\n if (data.discardable) flags |= 1;\n if (data.trackNum > 127) {\n throw \"TrackNumber > 127 not supported\";\n }\n var out = [data.trackNum | 0x80, data.timecode >> 8, data.timecode & 0xff, flags].map(function (e) {\n return String.fromCharCode(e);\n }).join('') + data.frame;\n\n return out;\n }\n\n // here's something else taken verbatim from weppy, awesome rite?\n\n function parseWebP(riff) {\n var VP8 = riff.RIFF[0].WEBP[0];\n\n var frame_start = VP8.indexOf('\\x9d\\x01\\x2a'); //A VP8 keyframe starts with the 0x9d012a header\n for (var i = 0, c = []; i < 4; i++) {\n c[i] = VP8.charCodeAt(frame_start + 3 + i);\n }var width, horizontal_scale, height, vertical_scale, tmp;\n\n //the code below is literally copied verbatim from the bitstream spec\n tmp = c[1] << 8 | c[0];\n width = tmp & 0x3FFF;\n horizontal_scale = tmp >> 14;\n tmp = c[3] << 8 | c[2];\n height = tmp & 0x3FFF;\n vertical_scale = tmp >> 14;\n return {\n width: width,\n height: height,\n data: VP8,\n riff: riff\n };\n }\n\n // i think i'm going off on a riff by pretending this is some known\n // idiom which i'm making a casual and brilliant pun about, but since\n // i can't find anything on google which conforms to this idiomatic\n // usage, I'm assuming this is just a consequence of some psychotic\n // break which makes me make up puns. well, enough riff-raff (aha a\n // rescue of sorts), this function was ripped wholesale from weppy\n\n function parseRIFF(string) {\n var offset = 0;\n var chunks = {};\n\n while (offset < string.length) {\n var id = string.substr(offset, 4);\n chunks[id] = chunks[id] || [];\n if (id == 'RIFF' || id == 'LIST') {\n var len = parseInt(string.substr(offset + 4, 4).split('').map(function (i) {\n var unpadded = i.charCodeAt(0).toString(2);\n return new Array(8 - unpadded.length + 1).join('0') + unpadded;\n }).join(''), 2);\n var data = string.substr(offset + 4 + 4, len);\n offset += 4 + 4 + len;\n chunks[id].push(parseRIFF(data));\n } else if (id == 'WEBP') {\n // Use (offset + 8) to skip past \"VP8 \"/\"VP8L\"/\"VP8X\" field after \"WEBP\"\n chunks[id].push(string.substr(offset + 8));\n offset = string.length;\n } else {\n // Unknown chunk type; push entire payload\n chunks[id].push(string.substr(offset + 4));\n offset = string.length;\n }\n }\n return chunks;\n }\n\n // here's a little utility function that acts as a utility for other functions\n // basically, the only purpose is for encoding \"Duration\", which is encoded as\n // a double (considerably more difficult to encode than an integer)\n function doubleToString(num) {\n return [].slice.call(new Uint8Array(new Float64Array([num]) //create a float64 array\n .buffer) //extract the array buffer\n , 0) // convert the Uint8Array into a regular array\n .map(function (e) {\n //since it's a regular array, we can now use map\n return String.fromCharCode(e); // encode all the bytes individually\n }).reverse() //correct the byte endianness (assume it's little endian for now)\n .join(''); // join the bytes in holy matrimony as a string\n }\n\n function WhammyVideo(speed, quality) {\n // a more abstract-ish API\n this.frames = [];\n this.duration = 1000 / speed;\n this.quality = quality || 0.8;\n }\n\n WhammyVideo.prototype.add = function (frame, duration) {\n if (typeof duration != 'undefined' && this.duration) throw \"you can't pass a duration if the fps is set\";\n if (typeof duration == 'undefined' && !this.duration) throw \"if you don't have the fps set, you need to have durations here.\";\n if (frame.canvas) {\n //CanvasRenderingContext2D\n frame = frame.canvas;\n }\n if (frame.toDataURL) {\n // frame = frame.toDataURL('image/webp', this.quality);\n // quickly store image data so we don't block cpu. encode in compile method.\n frame = frame.getContext('2d-lodpi').getImageData(0, 0, frame.width, frame.height);\n } else if (typeof frame != \"string\") {\n throw \"frame must be a a HTMLCanvasElement, a CanvasRenderingContext2D or a DataURI formatted string\";\n }\n if (typeof frame === \"string\" && !/^data:image\\/webp;base64,/ig.test(frame)) {\n throw \"Input must be formatted properly as a base64 encoded DataURI of type image/webp\";\n }\n this.frames.push({\n image: frame,\n duration: duration || this.duration\n });\n };\n\n // deferred webp encoding. Draws image data to canvas, then encodes as dataUrl\n WhammyVideo.prototype.encodeFrames = function (callback) {\n\n if (this.frames[0].image instanceof ImageData) {\n\n var frames = this.frames;\n var tmpCanvas = document.createElement('canvas');\n var tmpContext = tmpCanvas.getContext('2d-lodpi');\n tmpCanvas.width = this.frames[0].image.width;\n tmpCanvas.height = this.frames[0].image.height;\n\n var encodeFrame = function (index) {\n console.log('encodeFrame', index);\n var frame = frames[index];\n tmpContext.putImageData(frame.image, 0, 0);\n frame.image = tmpCanvas.toDataURL('image/webp', this.quality);\n if (index < frames.length - 1) {\n setTimeout(function () {\n encodeFrame(index + 1);\n }, 1);\n } else {\n callback();\n }\n }.bind(this);\n\n encodeFrame(0);\n } else {\n callback();\n }\n };\n\n WhammyVideo.prototype.compile = function (outputAsArray, callback) {\n\n this.encodeFrames(function () {\n var width = 0;\n var height = 0;\n var webm = new toWebM(this.frames.map(function (frame) {\n var webp = parseWebP(parseRIFF(atob(frame.image.slice(23))));\n webp.duration = frame.duration;\n if (!webp || !webp.width || !webp.height) return null;\n if (!width) width = webp.width;else if (width !== webp.width) return null;\n if (!height) height = webp.height;else if (height !== webp.height) return null;\n return webp;\n }).filter(function (frame) {\n return !!frame;\n }), outputAsArray);\n callback(webm);\n }.bind(this));\n };\n\n return {\n Video: WhammyVideo,\n fromImageArray: function fromImageArray(images, fps, outputAsArray) {\n return toWebM(images.map(function (image) {\n var webp = parseWebP(parseRIFF(atob(image.slice(23))));\n webp.duration = 1000 / fps;\n return webp;\n }), outputAsArray);\n },\n toWebM: toWebM\n // expose methods of madness\n };\n}();","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.load_encodings = exports.load_results = exports.load_directories = undefined;\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _v = require('uuid/v1');\n\nvar _v2 = _interopRequireDefault(_v);\n\nvar _socket = require('../../socket');\n\nvar _socket2 = _interopRequireDefault(_socket);\n\nvar _types = require('../../types');\n\nvar _types2 = _interopRequireDefault(_types);\n\nvar _dataset = require('../../dataset/dataset.loader');\n\nvar datasetLoader = _interopRequireWildcard(_dataset);\n\nvar _actions = require('../../actions');\n\nvar _actions2 = _interopRequireDefault(_actions);\n\nvar _util = require('../../util');\n\nvar _util2 = _interopRequireDefault(_util);\n\nvar _biggan = require('./biggan.module');\n\nvar _biggan2 = _interopRequireDefault(_biggan);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar load_directories = exports.load_directories = function load_directories(id) {\n return function (dispatch) {\n var module = _biggan2.default.name;\n _util2.default.allProgress([datasetLoader.load(module), _actions2.default.socket.list_directory({ module: module, dir: 'sequences' }), _actions2.default.socket.list_directory({ module: module, dir: 'datasets' }), _actions2.default.socket.list_directory({ module: module, dir: 'checkpoints' })], function (percent, i, n) {\n console.log('biggan load progress', i, n);\n dispatch({\n type: _types2.default.app.load_progress,\n progress: { i: i, n: n },\n data: { module: 'biggan' }\n });\n }).then(function (res) {\n var _res = _slicedToArray(res, 4),\n datasetApiReport = _res[0],\n sequences = _res[1],\n datasets = _res[2],\n checkpoints = _res[3]; //, datasets, results, output, datasetUsage, lossReport] = res\n\n\n var folderLookup = datasetApiReport.folderLookup,\n fileLookup = datasetApiReport.fileLookup,\n datasetLookup = datasetApiReport.datasetLookup,\n folders = datasetApiReport.folders,\n files = datasetApiReport.files,\n unsortedFolder = datasetApiReport.unsortedFolder,\n resultsFolder = datasetApiReport.resultsFolder;\n // console.log(datasetUsage)\n\n var sequenceDirectories = sequences.filter(function (s) {\n return s.dir;\n });\n // console.log(sequenceDirectories)\n sequenceDirectories.forEach(function (dir) {\n var dataset = datasetLoader.getDataset(module, datasetLookup, dir.name);\n dataset.isBuilt = true;\n // console.log(dir.name, dataset)\n });\n\n datasets.filter(function (s) {\n return s.dir;\n }).forEach(function (dir) {\n var dataset = datasetLoader.getDataset(module, datasetLookup, dir.name);\n dataset.hasDataset = true;\n });\n\n var checkpointDirectories = checkpoints.filter(function (s) {\n return s.dir;\n });\n checkpointDirectories.forEach(function (dir) {\n var dataset = datasetLoader.getDataset(module, datasetLookup, dir.name);\n dataset.hasCheckpoints = true;\n dataset.checkpoints = [dir];\n });\n\n // console.log(res)\n\n // flatDatasets.forEach(file => {\n // file.uuid = uuidv1()\n // fileLookup[file.uuid] = file\n // const name = file.name.split('.')[0]\n // const dataset = datasetLoader.getDataset(module, datasetLookup, name, unsortedFolder, file.date)\n // file.persisted = false\n // dataset.input.push(file.uuid)\n // })\n\n // // exp:coccokit_3-frame_sizes:8,2-n_rnn:2-dataset:coccokit_3\n // const checkpoints = results.filter(s => s.dir).map(s => {\n // const checkpoint = s.name\n // .split('-')\n // .map(s => s.split(':'))\n // .filter(b => b.length && b[1])\n // .reduce((a,b) => (a[b[0]] = b[1]) && a, {})\n // checkpoint.name = checkpoint.name || checkpoint.dataset || checkpoint.exp\n // checkpoint.date = s.date\n // checkpoint.dir = s\n // checkpoint.persisted = false\n // const dataset = datasetLoader.getDataset(module, datasetLookup, checkpoint.name, unsortedFolder, checkpoint.date)\n // const loss = lossReport[checkpoint.name]\n // if (loss) {\n // dataset.epoch = checkpoint.epoch = loss.length\n // checkpoint.training_loss = loss\n // }\n // dataset.checkpoints.push(checkpoint)\n // return checkpoint\n // })\n\n // output.map(file => {\n // file.uuid = uuidv1()\n // fileLookup[file.uuid] = file\n // const pair = file.name.split('.')[0].split('-')\n // const dataset = datasetLoader.getDataset(module, datasetLookup, pair[0], unsortedFolder, file.date)\n // file.persisted = false\n // file.epoch = parseInt(file.epoch || pair[1].replace(/^\\D+/, '')) || 0\n // dataset.epoch = Math.max(file.epoch, dataset.epoch || 0)\n // // here check if the file exists in dataset, if so just check that it's persisted\n // const found = dataset.output.some(file_id => {\n // // if (f.name === \n // if (fileLookup[file_id].name === file.name) {\n // fileLookup[file_id].persisted = true\n // return true\n // }\n // return false\n // })\n // if (! found) {\n // dataset.output.push(file.uuid)\n // }\n // })\n\n dispatch({\n type: _types2.default.dataset.load,\n data: {\n module: module,\n folderLookup: folderLookup,\n fileLookup: fileLookup,\n datasetLookup: datasetLookup,\n folders: folders, files: files,\n sequences: sequenceDirectories,\n datasets: datasets,\n checkpoints: checkpointDirectories,\n resultsFolder: resultsFolder\n }\n });\n if (id) {\n console.log('folder id', id);\n dispatch({\n type: _types2.default.dataset.set_folder,\n data: {\n folder_id: id,\n module: module\n }\n });\n }\n }).catch(function (e) {\n console.error(e);\n });\n if (id) {\n console.log('folder id', id);\n dispatch({\n type: _types2.default.dataset.set_folder,\n data: {\n folder_id: id,\n module: module\n }\n });\n }\n };\n};\n\nvar load_results = exports.load_results = function load_results(id) {\n return function (dispatch) {\n var module = _biggan2.default.name;\n _util2.default.allProgress([_actions2.default.folder.index({\n module: module,\n name: 'results'\n }), _actions2.default.file.index({\n module: module,\n datatype: 'video',\n generated: 1,\n limit: 250\n })], function (percent, i, n) {\n console.log('biggan load progress', i, n);\n dispatch({\n type: _types2.default.app.load_progress,\n progress: { i: i, n: n },\n data: { module: 'biggan' }\n });\n }).then(function (res) {\n var _res2 = _slicedToArray(res, 2),\n folders = _res2[0],\n files = _res2[1]; //, datasets, results, output, datasetUsage, lossReport] = res\n // console.log(files, results, renders)\n\n\n dispatch({\n type: _types2.default.biggan.load_results,\n results: {\n resultsFolder: folders[0],\n files: files\n }\n });\n });\n };\n};\n\nvar load_encodings = exports.load_encodings = function load_encodings() {\n return function (dispatch) {\n var module = _biggan2.default.name;\n _util2.default.allProgress([_actions2.default.folder.index({ module: module }), _actions2.default.file.index({\n module: module,\n datatype: 'image',\n generated: 1\n })], function (percent, i, n) {\n // loading function\n }).then(function (res) {\n var _res3 = _slicedToArray(res, 2),\n folders = _res3[0],\n files = _res3[1];\n\n var folder_name_lookup = {};\n var encodings = {};\n folders.forEach(function (folder) {\n folder_name_lookup[folder.id] = folder.name;\n encodings[folder.name] = [];\n });\n files.forEach(function (file) {\n var folder_name = folder_name_lookup[file.folder_id];\n encodings[folder_name].push(file);\n });\n folders.forEach(function (folder) {\n if (!encodings[folder.name].length) {\n delete encodings[folder.name];\n }\n });\n dispatch({\n type: _types2.default.biggan.load_encodings,\n encodings: encodings\n });\n });\n };\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar bigganModule = {\n name: 'biggan',\n displayName: 'BigGAN',\n datatype: 'image'\n};\n\nexports.default = bigganModule;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _types = require('../../types');\n\nvar _types2 = _interopRequireDefault(_types);\n\nvar _dataset = require('../../dataset/dataset.reducer');\n\nvar _dataset2 = _interopRequireDefault(_dataset);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar bigganInitialState = {\n loading: true,\n progress: { i: 0, n: 0 },\n error: null,\n folder_id: 0,\n data: null,\n results: null,\n encodings: null,\n checkpoint: {\n name: '',\n sequenceCount: 0,\n datasetCount: 0\n }\n};\n\nvar bigganReducer = function bigganReducer() {\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : bigganInitialState;\n var action = arguments[1];\n\n if (action.data && action.data.module === 'biggan') {\n state = (0, _dataset2.default)(state, action);\n }\n\n switch (action.type) {\n case _types2.default.biggan.load_results:\n return _extends({}, state, {\n results: action.results\n });\n case _types2.default.biggan.load_encodings:\n return _extends({}, state, {\n encodings: action.encodings\n });\n case _types2.default.file.destroy:\n console.log('file destroy', state.results);\n return _extends({}, state, {\n results: _extends({}, state.results, {\n files: state.results.files.filter(function (f) {\n return f.id !== action.data.id;\n })\n })\n });\n default:\n return state;\n }\n};\n\nexports.default = bigganReducer;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.live_task = exports.invert_task = undefined;\n\nvar _v = require('uuid/v1');\n\nvar _v2 = _interopRequireDefault(_v);\n\nvar _socket = require('../../socket');\n\nvar _socket2 = _interopRequireDefault(_socket);\n\nvar _types = require('../../types');\n\nvar _types2 = _interopRequireDefault(_types);\n\nvar _actions = require('../../actions');\n\nvar _actions2 = _interopRequireDefault(_actions);\n\nvar _biggan = require('./biggan.module');\n\nvar _biggan2 = _interopRequireDefault(_biggan);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar invert_task = exports.invert_task = function invert_task(folder_id) {\n return function (dispatch) {\n var task = {\n module: _biggan2.default.name,\n activity: 'invert',\n opt: {\n folder_id: folder_id\n }\n };\n console.log(task);\n return _actions2.default.queue.add_task(task);\n };\n};\n\nvar live_task = exports.live_task = function live_task(opt) {\n return function (dispatch) {\n var task = {\n module: _biggan2.default.name,\n activity: 'live',\n dataset: 'biggan',\n opt: opt\n };\n console.log('add live task');\n return _actions2.default.queue.add_task(task);\n };\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _preact = require('preact');\n\nvar _reactRouterDom = require('react-router-dom');\n\nvar _actions = require('../../actions');\n\nvar _actions2 = _interopRequireDefault(_actions);\n\nvar _util = require('../../util');\n\nvar _util2 = _interopRequireDefault(_util);\n\nvar _biggan = require('./views/biggan.new');\n\nvar _biggan2 = _interopRequireDefault(_biggan);\n\nvar _biggan3 = require('./views/biggan.show');\n\nvar _biggan4 = _interopRequireDefault(_biggan3);\n\nvar _biggan5 = require('./views/biggan.results');\n\nvar _biggan6 = _interopRequireDefault(_biggan5);\n\nvar _biggan7 = require('./views/biggan.live');\n\nvar _biggan8 = _interopRequireDefault(_biggan7);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar router = function () {\n function router() {\n _classCallCheck(this, router);\n }\n\n _createClass(router, [{\n key: 'componentWillMount',\n value: function componentWillMount() {\n _actions2.default.system.changeTool('biggan');\n document.body.style.backgroundImage = 'linear-gradient(' + (_util2.default.randint(40) + 40) + 'deg, #dfe, #def)';\n }\n }, {\n key: 'componentWillReceiveProps',\n value: function componentWillReceiveProps() {\n _actions2.default.system.changeTool('biggan');\n document.body.style.backgroundImage = 'linear-gradient(' + (_util2.default.randint(40) + 40) + 'deg, #dfe, #def)';\n }\n }, {\n key: 'render',\n value: function render() {\n return (0, _preact.h)(\n 'section',\n null,\n (0, _preact.h)(_reactRouterDom.Route, { exact: true, path: '/biggan/new/', component: _biggan2.default }),\n (0, _preact.h)(_reactRouterDom.Route, { exact: true, path: '/biggan/datasets/', component: _biggan4.default }),\n (0, _preact.h)(_reactRouterDom.Route, { exact: true, path: '/biggan/datasets/:id/', component: _biggan4.default }),\n (0, _preact.h)(_reactRouterDom.Route, { exact: true, path: '/biggan/results/', component: _biggan6.default }),\n (0, _preact.h)(_reactRouterDom.Route, { exact: true, path: '/biggan/live/', component: _biggan8.default })\n );\n }\n }]);\n\n return router;\n}();\n\nfunction links() {\n return [{ url: '/biggan/new/', name: 'folders' }, { url: '/biggan/datasets/', name: 'datasets' }, { url: '/biggan/results/', name: 'results' }, { url: '/biggan/live/', name: 'live' }];\n}\n\nexports.default = {\n name: 'biggan',\n router: router, links: links\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _preact = require('preact');\n\nvar _redux = require('redux');\n\nvar _reactRedux = require('react-redux');\n\nvar _common = require('../../../common/');\n\nvar _actions = require('../../../actions');\n\nvar _actions2 = _interopRequireDefault(_actions);\n\nvar _biggan = require('../biggan.tasks');\n\nvar bigganTasks = _interopRequireWildcard(_biggan);\n\nvar _biggan2 = require('../biggan.actions');\n\nvar bigganActions = _interopRequireWildcard(_biggan2);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar ALL_CATEGORIES = 'categories/biggan_all.json';\n\nvar BigGANCategoryList = function (_Component) {\n _inherits(BigGANCategoryList, _Component);\n\n function BigGANCategoryList(props) {\n _classCallCheck(this, BigGANCategoryList);\n\n var _this = _possibleConstructorReturn(this, (BigGANCategoryList.__proto__ || Object.getPrototypeOf(BigGANCategoryList)).call(this, props));\n\n _this.state = {\n loading: true,\n error: false,\n categories: {},\n q: \"\",\n fn: \"\"\n };\n\n _this.loadCategories(ALL_CATEGORIES);\n return _this;\n }\n\n _createClass(BigGANCategoryList, [{\n key: 'loadCategories',\n value: function loadCategories(fn) {\n var _this2 = this;\n\n this.setState({ loading: true, fn: fn });\n console.log(\"fetching\", fn);\n _actions2.default.socket.read_file({ module: \"biggan\", fn: fn }).then(function (_ref) {\n var name = _ref.name,\n buf = _ref.buf;\n\n console.log(\"fetched\", fn);\n var categoryJSON = String.fromCharCode.apply(null, new Uint8Array(buf));\n var categories = JSON.parse(categoryJSON);\n _this2.setState({\n categories: categories,\n loading: false\n });\n }).catch(function () {\n _this2.setState({ error: true });\n });\n }\n }, {\n key: 'setCategory',\n value: function setCategory(index) {\n _actions2.default.live.send_command('setCategory', String(index));\n }\n }, {\n key: 'updateQuery',\n value: function updateQuery(q) {\n var _this3 = this;\n\n this.setState({ q: q }, function () {\n _this3.categoryRef.scrollTo(0, 0);\n });\n }\n }, {\n key: 'render',\n value: function render() {\n var _this4 = this;\n\n var _state = this.state,\n loading = _state.loading,\n q = _state.q;\n\n if (loading) {\n return (0, _preact.h)(\n 'div',\n { className: 'categories' },\n (0, _preact.h)(_common.Loading, null)\n );\n }\n return (0, _preact.h)(\n 'div',\n null,\n (0, _preact.h)(\n 'div',\n { className: 'search_form' },\n (0, _preact.h)('div', { 'class': 'button' }),\n (0, _preact.h)('input', {\n type: 'text',\n className: 'categorySearch',\n value: q,\n onInput: function onInput(e) {\n return _this4.updateQuery(e.target.value);\n }\n })\n ),\n (0, _preact.h)(\n 'div',\n { className: 'categories', ref: function ref(_ref2) {\n return _this4.categoryRef = _ref2;\n } },\n this.renderGroup(\"inanimate\"),\n this.renderGroup(\"animate\")\n )\n );\n }\n }, {\n key: 'renderGroup',\n value: function renderGroup(groupName) {\n var _this5 = this;\n\n var _state2 = this.state,\n categories = _state2.categories,\n q = _state2.q;\n\n var qRegExp = new RegExp(q || \".*\");\n var group = categories[groupName];\n // console.log(group)\n var groups = Object.keys(group).map(function (key) {\n var category = group[key];\n var categoryGroup = Object.keys(category).map(function (categoryName) {\n if (!categoryName.match(qRegExp)) {\n return null;\n }\n return (0, _preact.h)(\n 'a',\n { key: categoryName, onClick: function onClick() {\n return _this5.setCategory(category[categoryName]);\n } },\n categoryName\n );\n }).filter(function (g) {\n return !!g;\n });\n return !categoryGroup.length ? null : (0, _preact.h)(\n 'div',\n { key: key },\n (0, _preact.h)(\n 'h3',\n null,\n key\n ),\n categoryGroup\n );\n }).filter(function (g) {\n return !!g;\n });\n if (!groups.length) {\n return null;\n }\n return (0, _preact.h)(\n 'div',\n null,\n groupName === \"animate\" ? (0, _preact.h)(\n 'h2',\n null,\n groupName\n ) : null,\n groups\n );\n }\n }]);\n\n return BigGANCategoryList;\n}(_preact.Component);\n\nvar mapStateToProps = function mapStateToProps(state) {\n return {\n opt: state.live.opt,\n biggan: state.module.biggan\n };\n};\n\nvar mapDispatchToProps = function mapDispatchToProps(dispatch, ownProps) {\n return {\n actions: {}\n };\n};\n\nexports.default = (0, _reactRedux.connect)(mapStateToProps, mapDispatchToProps)(BigGANCategoryList);","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _preact = require('preact');\n\nvar _redux = require('redux');\n\nvar _reactRedux = require('react-redux');\n\nvar _common = require('../../../common/');\n\nvar _actions = require('../../../actions');\n\nvar _actions2 = _interopRequireDefault(_actions);\n\nvar _biggan = require('../biggan.tasks');\n\nvar bigganTasks = _interopRequireWildcard(_biggan);\n\nvar _biggan2 = require('../biggan.actions');\n\nvar bigganActions = _interopRequireWildcard(_biggan2);\n\nvar _format = require('../../../util/format');\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar BigGANEncodingList = function (_Component) {\n _inherits(BigGANEncodingList, _Component);\n\n function BigGANEncodingList() {\n var _ref;\n\n var _temp, _this, _ret;\n\n _classCallCheck(this, BigGANEncodingList);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = BigGANEncodingList.__proto__ || Object.getPrototypeOf(BigGANEncodingList)).call.apply(_ref, [this].concat(args))), _this), _this.state = {\n file_id: 0\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n _createClass(BigGANEncodingList, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n if (!this.props.biggan.encodings) {\n this.props.actions.biggan.load_encodings();\n }\n }\n }, {\n key: 'render',\n value: function render() {\n var _this2 = this;\n\n var file_id = this.state.file_id;\n var _props = this.props,\n opt = _props.opt,\n frame = _props.frame;\n var encodings = this.props.biggan.encodings;\n\n if (!encodings) {\n return (0, _preact.h)(\n 'div',\n null,\n 'Loading encodings...'\n );\n }\n return (0, _preact.h)(\n 'div',\n null,\n (0, _preact.h)(\n 'div',\n { className: 'spacer' },\n frame.i ? (0, _preact.h)(\n 'div',\n { className: 'param frame_counter' },\n (0, _preact.h)(\n 'span',\n null,\n 'Frame #',\n frame.i\n ),\n (0, _preact.h)(\n 'var',\n null,\n (0, _format.frameTimestamp)(frame.i)\n )\n ) : (0, _preact.h)(\n 'div',\n { className: 'param frame_counter' },\n (0, _preact.h)('span', null)\n )\n ),\n (0, _preact.h)(\n _common.Group,\n { title: \"Stored image\" },\n (0, _preact.h)(_common.Slider, { live: true,\n name: 'encoding_stored_speed',\n title: \"Load speed\",\n min: 1, max: 250, type: 'int'\n }),\n (0, _preact.h)(_common.Slider, { live: true,\n name: 'encoding_stored_n',\n title: \"Image mix\",\n min: 0, max: 1, type: 'float'\n })\n ),\n (0, _preact.h)(\n _common.Group,\n { title: \"Latent to Image Transition\" },\n (0, _preact.h)(\n _common.Button,\n {\n title: \"Toggle\",\n onClick: function onClick() {\n return file_id && _actions2.default.live.send_command('switch', 'encoding_stored_mix');\n }\n },\n file_id ? opt.encoding_stored_mix_n < 0.5 ? \"To Image\" : \"Back to Latent\" : \"Not loaded\"\n ),\n (0, _preact.h)(_common.Slider, { live: true,\n name: 'encoding_stored_mix_speed',\n title: \"Transition speed\",\n min: 1, max: 250, type: 'int'\n }),\n (0, _preact.h)(_common.Slider, { live: true,\n name: 'encoding_stored_mix_n',\n title: \"Transition mix\",\n min: 0, max: 1, type: 'float'\n })\n ),\n (0, _preact.h)(\n 'div',\n { className: 'categories encodings', ref: function ref(_ref2) {\n return _this2.categoryRef = _ref2;\n } },\n Object.keys(encodings).sort().map(function (name) {\n return (0, _preact.h)(\n 'div',\n { key: name },\n (0, _preact.h)(\n 'h3',\n null,\n name\n ),\n encodings[name].map(function (file) {\n return (0, _preact.h)('img', {\n key: file.id,\n src: file.url,\n onClick: function onClick() {\n _actions2.default.live.send_command('setEncoding', JSON.stringify({\n id: file.id\n }));\n _this2.setState({ file_id: file.id });\n }\n });\n })\n );\n })\n )\n );\n }\n }]);\n\n return BigGANEncodingList;\n}(_preact.Component);\n\nvar mapStateToProps = function mapStateToProps(state) {\n return {\n last_message: state.live.last_message,\n opt: state.live.opt,\n frame: state.live.frame,\n biggan: state.module.biggan\n };\n};\n\nvar mapDispatchToProps = function mapDispatchToProps(dispatch, ownProps) {\n return {\n actions: {\n biggan: (0, _redux.bindActionCreators)(bigganActions, dispatch),\n tasks: (0, _redux.bindActionCreators)(bigganTasks, dispatch)\n }\n };\n};\n\nexports.default = (0, _reactRedux.connect)(mapStateToProps, mapDispatchToProps)(BigGANEncodingList);","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _preact = require('preact');\n\nvar _redux = require('redux');\n\nvar _reactRedux = require('react-redux');\n\nvar _common = require('../../../common/');\n\nvar _player = require('../../../live/player');\n\nvar _live = require('../../../live/live.actions');\n\nvar liveActions = _interopRequireWildcard(_live);\n\nvar _queue = require('../../../queue/queue.actions');\n\nvar queueActions = _interopRequireWildcard(_queue);\n\nvar _biggan = require('../biggan.tasks');\n\nvar bigganTasks = _interopRequireWildcard(_biggan);\n\nvar _biggan2 = require('../biggan.actions');\n\nvar bigganActions = _interopRequireWildcard(_biggan2);\n\nvar _bigganCategoryList = require('./biggan.categoryList.js');\n\nvar _bigganCategoryList2 = _interopRequireDefault(_bigganCategoryList);\n\nvar _bigganEncodingList = require('./biggan.encodingList.js');\n\nvar _bigganEncodingList2 = _interopRequireDefault(_bigganEncodingList);\n\nvar _util = require('../../../util');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar BigGANLive = function (_Component) {\n _inherits(BigGANLive, _Component);\n\n function BigGANLive(props) {\n _classCallCheck(this, BigGANLive);\n\n var _this = _possibleConstructorReturn(this, (BigGANLive.__proto__ || Object.getPrototypeOf(BigGANLive)).call(this));\n\n props.actions.live.get_params();\n return _this;\n }\n\n _createClass(BigGANLive, [{\n key: 'start',\n value: function start() {\n // console.log(this.props.opt)\n console.log('starting up!');\n this.props.actions.tasks.live_task({\n // folder_id: this.props.biggan.data.resultsFolder.id,\n });\n }\n }, {\n key: 'interrupt',\n value: function interrupt() {\n this.props.actions.queue.stop_task('gpu');\n }\n }, {\n key: 'render',\n value: function render() {\n var _props = this.props,\n biggan = _props.biggan,\n actions = _props.actions,\n last_message = _props.last_message;\n // console.log(actions)\n // if (biggan.loading) {\n // return \n // }\n\n return (0, _preact.h)(\n 'div',\n { className: 'app live biggan centered' },\n (0, _preact.h)(\n 'div',\n { className: 'row' },\n (0, _preact.h)(\n 'div',\n { className: 'column' },\n (0, _preact.h)(_common.Player, { width: 512, height: 512, square: true, fullscreen: this.props.fullscreen })\n ),\n (0, _preact.h)(\n 'div',\n { className: 'params column audioParams' },\n (0, _preact.h)(\n 'div',\n { className: 'spacer' },\n last_message\n ),\n (0, _preact.h)(\n _common.Group,\n { title: 'Player' },\n this.renderRestartButton()\n ),\n (0, _preact.h)(\n _common.Group,\n { title: \"Latent\" },\n (0, _preact.h)(\n _common.Button,\n {\n title: \"Shuffle\",\n onClick: function onClick() {\n return actions.live.send_command('switch', 'latent');\n }\n },\n \"Latent\"\n ),\n (0, _preact.h)(_common.Slider, { live: true,\n name: 'latent_speed',\n title: \"Update Speed\",\n min: 1, max: 250, type: 'int'\n }),\n (0, _preact.h)(_common.Slider, { live: true,\n name: 'truncation',\n title: \"Truncation\",\n min: 0.0001, max: 4, type: 'float'\n })\n ),\n (0, _preact.h)(\n _common.Group,\n { title: \"Label\" },\n (0, _preact.h)(_common.Slider, { live: true,\n name: 'num_classes',\n title: \"Classes to mix\",\n min: 1, max: 10, type: 'int'\n }),\n (0, _preact.h)(\n _common.Button,\n {\n title: \"Shuffle\",\n onClick: function onClick() {\n return actions.live.send_command('switch', 'label');\n }\n },\n \"Label\"\n ),\n (0, _preact.h)(_common.Slider, { live: true,\n name: 'label_speed',\n title: \"Mix Speed\",\n min: 1, max: 250, type: 'int'\n })\n ),\n (0, _preact.h)(\n _common.Group,\n { title: \"Orbit\" },\n (0, _preact.h)(_common.Slider, { live: true,\n name: 'orbit_speed',\n title: \"Orbit speed\",\n min: -250, max: 250, type: 'int'\n }),\n (0, _preact.h)(_common.Slider, { live: true,\n name: 'orbit_radius',\n title: \"Radius\",\n min: 0, max: 1.0, type: 'float'\n }),\n (0, _preact.h)(\n _common.Button,\n {\n title: \"Shuffle\",\n onClick: function onClick() {\n return actions.live.send_command('switch', 'orbit_noise');\n }\n },\n \"Spin\"\n ),\n (0, _preact.h)(_common.Slider, { live: true,\n name: 'orbit_noise_speed',\n title: \"Shuffle Speed\",\n min: 1, max: 250, type: 'int'\n })\n ),\n (0, _preact.h)(\n _common.Group,\n { title: \"Saturation\" },\n (0, _preact.h)(_common.Slider, { live: true,\n name: 'saturation',\n title: \"Amount\",\n min: 0, max: 4, type: 'float'\n }),\n (0, _preact.h)(_common.Slider, { live: true,\n name: 'saturation_mix_n',\n title: \"Saturation mix\",\n min: 0, max: 1, type: 'float'\n })\n ),\n (0, _preact.h)(\n _common.Group,\n { title: \"Scaling\" },\n (0, _preact.h)(_common.Slider, { live: true,\n name: 'zoom',\n title: \"Zoom\",\n min: -4.0, max: 4.0, type: 'float'\n }),\n (0, _preact.h)(_common.Slider, { live: true,\n name: 'Horizontal',\n title: \"Horizontal\",\n min: -2.0, max: 2.0, type: 'float'\n }),\n (0, _preact.h)(_common.Slider, { live: true,\n name: 'Vertical',\n title: \"Vertical\",\n min: -2.0, max: 2.0, type: 'float'\n }),\n (0, _preact.h)(_common.Slider, { live: true,\n name: 'luminance',\n title: \"Brightness\",\n min: -2.0, max: 2, type: 'float'\n })\n )\n ),\n (0, _preact.h)(\n 'div',\n { className: 'params column' },\n (0, _preact.h)(_bigganCategoryList2.default, null)\n ),\n (0, _preact.h)(\n 'div',\n { className: 'params column' },\n (0, _preact.h)(_bigganEncodingList2.default, null)\n )\n )\n );\n }\n }, {\n key: 'renderRestartButton',\n value: function renderRestartButton() {\n var _this2 = this;\n\n // console.log(this.props.runner.gpu)\n var i18n = this.props.i18n;\n\n if (this.props.runner.gpu.status === 'IDLE') {\n return (0, _preact.h)(\n _common.Button,\n {\n title: i18n.gpu.idle,\n onClick: function onClick() {\n return _this2.start();\n }\n },\n i18n.gpu.start\n );\n }\n if (this.props.runner.gpu.task.module !== 'biggan') {\n return (0, _preact.h)(\n _common.Button,\n {\n title: i18n.gpu.busy,\n onClick: function onClick() {\n return _this2.interrupt();\n }\n },\n i18n.gpu.interrupt\n );\n }\n // if (! this.props.opt.processing) {\n // return (\n // \n // \n // \n //
\n // )\n // }\n return (0, _preact.h)(\n 'div',\n null,\n (0, _preact.h)(\n _common.Button,\n {\n title: i18n.gpu.busy,\n onClick: function onClick() {\n return _this2.interrupt();\n }\n },\n i18n.gpu.stop\n )\n );\n }\n }]);\n\n return BigGANLive;\n}(_preact.Component);\n\nvar mapStateToProps = function mapStateToProps(state) {\n return {\n fullscreen: state.live.fullscreen,\n opt: state.live.opt,\n last_message: state.live.last_message,\n runner: state.system.runner,\n i18n: state.system.i18n.strings,\n biggan: state.module.biggan\n };\n};\n\nvar mapDispatchToProps = function mapDispatchToProps(dispatch, ownProps) {\n return {\n actions: {\n live: (0, _redux.bindActionCreators)(liveActions, dispatch),\n queue: (0, _redux.bindActionCreators)(queueActions, dispatch),\n biggan: (0, _redux.bindActionCreators)(bigganActions, dispatch),\n tasks: (0, _redux.bindActionCreators)(bigganTasks, dispatch)\n }\n };\n};\n\nexports.default = (0, _reactRedux.connect)(mapStateToProps, mapDispatchToProps)(BigGANLive);","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _preact = require('preact');\n\nvar _redux = require('redux');\n\nvar _reactRedux = require('react-redux');\n\nvar _reactRouterDom = require('react-router-dom');\n\nvar _util = require('../../../util');\n\nvar _util2 = _interopRequireDefault(_util);\n\nvar _common = require('../../../common');\n\nvar _biggan = require('../biggan.actions');\n\nvar bigganActions = _interopRequireWildcard(_biggan);\n\nvar _biggan2 = require('../biggan.module');\n\nvar _biggan3 = _interopRequireDefault(_biggan2);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction BigGANNew(props) {\n return (0, _preact.h)(_common.Views.New, {\n db: props.biggan,\n path: '/biggan/datasets/',\n actions: props.actions,\n module: _biggan3.default,\n history: props.history\n });\n}\n\nvar mapStateToProps = function mapStateToProps(state) {\n return {\n biggan: state.module.biggan\n };\n};\n\nvar mapDispatchToProps = function mapDispatchToProps(dispatch, ownProps) {\n return {\n actions: (0, _redux.bindActionCreators)(bigganActions, dispatch)\n };\n};\n\nexports.default = (0, _reactRedux.connect)(mapStateToProps, mapDispatchToProps)(BigGANNew);","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _preact = require('preact');\n\nvar _redux = require('redux');\n\nvar _reactRouterDom = require('react-router-dom');\n\nvar _reactRedux = require('react-redux');\n\nvar _util = require('../../../util');\n\nvar _util2 = _interopRequireDefault(_util);\n\nvar _actions = require('../../../actions');\n\nvar _actions2 = _interopRequireDefault(_actions);\n\nvar _biggan = require('../biggan.actions');\n\nvar bigganActions = _interopRequireWildcard(_biggan);\n\nvar _biggan2 = require('../biggan.tasks');\n\nvar bigganTasks = _interopRequireWildcard(_biggan2);\n\nvar _loading = require('../../../common/loading.component');\n\nvar _loading2 = _interopRequireDefault(_loading);\n\nvar _fileList = require('../../../common/fileList.component');\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar yes_count = 0;\n\nvar BigGANResults = function (_Component) {\n _inherits(BigGANResults, _Component);\n\n function BigGANResults(props) {\n _classCallCheck(this, BigGANResults);\n\n var _this = _possibleConstructorReturn(this, (BigGANResults.__proto__ || Object.getPrototypeOf(BigGANResults)).call(this));\n\n if (!props.biggan.results) props.actions.load_results();\n return _this;\n }\n\n _createClass(BigGANResults, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n yes_count = 0;\n }\n }, {\n key: 'render',\n value: function render() {\n if (!this.props.biggan.results) return (0, _preact.h)(_loading2.default, { progress: this.props.biggan.progress });\n\n var _props$biggan$results = this.props.biggan.results,\n resultsFolder = _props$biggan$results.resultsFolder,\n results = _props$biggan$results.results,\n renders = _props$biggan$results.renders,\n files = _props$biggan$results.files;\n // console.log(resultsFolder, results)\n\n return (0, _preact.h)(\n 'div',\n { className: 'app biggan' },\n (0, _preact.h)(\n 'div',\n { className: 'heading row middle' },\n (0, _preact.h)(\n 'h1',\n null,\n 'BigGAN Results'\n )\n ),\n (0, _preact.h)(\n 'div',\n { 'class': 'rows params renders' },\n (0, _preact.h)(_fileList.FileList, {\n linkFiles: true,\n files: files,\n orderBy: 'date desc',\n fields: 'name date size delete',\n onDelete: function onDelete(file) {\n var yes = void 0;\n if (yes_count < 3) {\n yes = confirm('Are you sure you want to delete this file?');\n } else {\n yes = true;\n }\n if (yes) {\n yes_count += 1;\n console.log('delete: confirmed');\n _actions2.default.file.destroy(file);\n }\n }\n })\n )\n );\n }\n }, {\n key: 'handlePick',\n value: function handlePick(file) {\n // this.props.audioPlayer.play(file)\n }\n }]);\n\n return BigGANResults;\n}(_preact.Component);\n\nvar mapStateToProps = function mapStateToProps(state) {\n return {\n biggan: state.module.biggan\n };\n};\n\nvar mapDispatchToProps = function mapDispatchToProps(dispatch, ownProps) {\n return {\n actions: (0, _redux.bindActionCreators)(bigganActions, dispatch),\n remote: (0, _redux.bindActionCreators)(bigganTasks, dispatch)\n // audioPlayer: bindActionCreators(audioPlayerActions, dispatch),\n };\n};\n\nexports.default = (0, _reactRedux.connect)(mapStateToProps, mapDispatchToProps)(BigGANResults);","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _preact = require('preact');\n\nvar _redux = require('redux');\n\nvar _reactRedux = require('react-redux');\n\nvar _util = require('../../../util');\n\nvar _util2 = _interopRequireDefault(_util);\n\nvar _biggan = require('../biggan.actions');\n\nvar bigganActions = _interopRequireWildcard(_biggan);\n\nvar _biggan2 = require('../biggan.tasks');\n\nvar bigganTasks = _interopRequireWildcard(_biggan2);\n\nvar _common = require('../../../common');\n\nvar _dataset = require('../../../dataset/dataset.form');\n\nvar _dataset2 = _interopRequireDefault(_dataset);\n\nvar _dataset3 = require('../../../dataset/dataset.new');\n\nvar _dataset4 = _interopRequireDefault(_dataset3);\n\nvar _upload = require('../../../dataset/upload.status');\n\nvar _upload2 = _interopRequireDefault(_upload);\n\nvar _dataset5 = require('../../../dataset/dataset.component');\n\nvar _dataset6 = _interopRequireDefault(_dataset5);\n\nvar _biggan3 = require('../biggan.module');\n\nvar _biggan4 = _interopRequireDefault(_biggan3);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar BigGANShow = function (_Component) {\n _inherits(BigGANShow, _Component);\n\n function BigGANShow(props) {\n _classCallCheck(this, BigGANShow);\n\n var _this = _possibleConstructorReturn(this, (BigGANShow.__proto__ || Object.getPrototypeOf(BigGANShow)).call(this, props));\n\n _this.datasetActions = _this.datasetActions.bind(_this);\n return _this;\n }\n\n _createClass(BigGANShow, [{\n key: 'componentWillMount',\n value: function componentWillMount() {\n var id = this.props.match.params.id || localStorage.getItem('biggan.last_id');\n console.log('load dataset:', id);\n var _props = this.props,\n match = _props.match,\n biggan = _props.biggan,\n actions = _props.actions;\n\n if (id === 'new') return;\n if (id) {\n if (parseInt(id)) localStorage.setItem('biggan.last_id', id);\n if (!biggan.folder || biggan.folder.id !== id) {\n actions.load_directories(id);\n }\n } else {\n this.props.history.push('/biggan/new/');\n }\n }\n }, {\n key: 'render',\n value: function render() {\n var _props2 = this.props,\n biggan = _props2.biggan,\n match = _props2.match,\n history = _props2.history,\n actions = _props2.actions,\n tasks = _props2.tasks;\n\n var _ref = biggan.data || {},\n folderLookup = _ref.folderLookup;\n\n var folder = (folderLookup || {})[biggan.folder_id] || {};\n\n return (0, _preact.h)(\n 'div',\n { className: 'app biggan' },\n (0, _preact.h)(\n 'div',\n { 'class': 'heading' },\n (0, _preact.h)(\n 'div',\n { 'class': 'spaced' },\n (0, _preact.h)(\n 'h1',\n null,\n folder ? folder.name : (0, _preact.h)(_common.Loading, null)\n ),\n (0, _preact.h)(_upload2.default, null),\n (0, _preact.h)(\n 'button',\n { onClick: function onClick() {\n return tasks.invert_task(folder.id);\n } },\n 'Run inversion task'\n )\n )\n ),\n (0, _preact.h)(\n 'div',\n { className: 'row' },\n folder && folder.name && folder.name !== 'unsorted' && (0, _preact.h)(_dataset2.default, {\n title: 'Add Files',\n module: _biggan4.default,\n folder: folder,\n canUpload: true, canAddURL: true\n }),\n (0, _preact.h)(\n 'div',\n null,\n (0, _preact.h)(_upload2.default, null),\n (0, _preact.h)(_common.CurrentTask, null)\n )\n ),\n (0, _preact.h)(_dataset6.default, {\n loading: biggan.loading,\n progress: biggan.progress,\n id: biggan.folder_id,\n module: _biggan4.default,\n data: biggan.data,\n folder: folder,\n history: history,\n onPickFile: function onPickFile(file, e) {\n e.preventDefault();\n e.stopPropagation();\n console.log('picked a file', file);\n },\n datasetActions: this.datasetActions\n })\n );\n }\n }, {\n key: 'datasetActions',\n value: function datasetActions(dataset) {\n var isFetching = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var isProcessing = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n var _props3 = this.props,\n biggan = _props3.biggan,\n remote = _props3.remote;\n\n var input = biggan.data.fileLookup[dataset.input[0]];\n if (!input) return null;\n if (input.name && input.name.match(/(gif|jpe?g|png)$/i)) return null;\n return (0, _preact.h)(\n 'div',\n null,\n (0, _preact.h)('div', { 'class': 'actions' }),\n dataset.isBuilt ? (0, _preact.h)(\n 'div',\n { 'class': 'subtext' },\n 'fetched ',\n (0, _preact.h)(\n 'span',\n { 'class': 'link', onClick: function onClick() {\n return remote.clear_cache_task(dataset);\n } },\n 'rm'\n )\n ) : isFetching ? (0, _preact.h)(\n 'div',\n { 'class': 'subtext' },\n 'fetching'\n ) : (0, _preact.h)(\n 'div',\n { 'class': 'subtext' },\n (0, _preact.h)(\n 'span',\n { 'class': 'link', onClick: function onClick() {\n return remote.fetch_task(input.url, input.id, dataset.name);\n } },\n 'fetch'\n )\n )\n );\n }\n }]);\n\n return BigGANShow;\n}(_preact.Component);\n\nvar mapStateToProps = function mapStateToProps(state) {\n return {\n biggan: state.module.biggan\n };\n};\n\nvar mapDispatchToProps = function mapDispatchToProps(dispatch, ownProps) {\n return {\n actions: (0, _redux.bindActionCreators)(bigganActions, dispatch),\n tasks: (0, _redux.bindActionCreators)(bigganTasks, dispatch),\n remote: (0, _redux.bindActionCreators)(bigganTasks, dispatch)\n };\n};\n\nexports.default = (0, _reactRedux.connect)(mapStateToProps, mapDispatchToProps)(BigGANShow);","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _biggan = require('./biggan');\n\nvar _biggan2 = _interopRequireDefault(_biggan);\n\nvar _morph = require('./morph');\n\nvar _morph2 = _interopRequireDefault(_morph);\n\nvar _pix2pix = require('./pix2pix');\n\nvar _pix2pix2 = _interopRequireDefault(_pix2pix);\n\nvar _pix2pixhd = require('./pix2pixhd');\n\nvar _pix2pixhd2 = _interopRequireDefault(_pix2pixhd);\n\nvar _pix2wav = require('./pix2wav');\n\nvar _pix2wav2 = _interopRequireDefault(_pix2wav);\n\nvar _samplernn = require('./samplernn');\n\nvar _samplernn2 = _interopRequireDefault(_samplernn);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = {\n biggan: _biggan2.default, morph: _morph2.default, pix2pix: _pix2pix2.default, pix2pixhd: _pix2pixhd2.default, pix2wav: _pix2wav2.default, samplernn: _samplernn2.default\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.moduleReducer = undefined;\n\nvar _redux = require('redux');\n\nvar _biggan = require('./biggan/biggan.reducer');\n\nvar _biggan2 = _interopRequireDefault(_biggan);\n\nvar _morph = require('./morph/morph.reducer');\n\nvar _morph2 = _interopRequireDefault(_morph);\n\nvar _pix2pix = require('./pix2pix/pix2pix.reducer');\n\nvar _pix2pix2 = _interopRequireDefault(_pix2pix);\n\nvar _pix2pixhd = require('./pix2pixhd/pix2pixhd.reducer');\n\nvar _pix2pixhd2 = _interopRequireDefault(_pix2pixhd);\n\nvar _pix2wav = require('./pix2wav/pix2wav.reducer');\n\nvar _pix2wav2 = _interopRequireDefault(_pix2wav);\n\nvar _samplernn = require('./samplernn/samplernn.reducer');\n\nvar _samplernn2 = _interopRequireDefault(_samplernn);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar moduleReducer = exports.moduleReducer = (0, _redux.combineReducers)({\n biggan: _biggan2.default,\n morph: _morph2.default,\n pix2pix: _pix2pix2.default,\n pix2pixhd: _pix2pixhd2.default,\n pix2wav: _pix2wav2.default,\n samplernn: _samplernn2.default\n});","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _preact = require('preact');\n\nvar _reactRouterDom = require('react-router-dom');\n\nvar _actions = require('../../actions');\n\nvar _actions2 = _interopRequireDefault(_actions);\n\nvar _util = require('../../util');\n\nvar _util2 = _interopRequireDefault(_util);\n\nvar _morph = require('./views/morph.app');\n\nvar _morph2 = _interopRequireDefault(_morph);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar router = function () {\n function router() {\n _classCallCheck(this, router);\n }\n\n _createClass(router, [{\n key: 'componentWillMount',\n value: function componentWillMount() {\n _actions2.default.system.changeTool('morph');\n document.body.style.backgroundImage = 'linear-gradient(' + (_util2.default.randint(40) + 40) + 'deg, #def, #dfe)';\n }\n }, {\n key: 'componentWillReceiveProps',\n value: function componentWillReceiveProps() {\n _actions2.default.system.changeTool('morph');\n document.body.style.backgroundImage = 'linear-gradient(' + (_util2.default.randint(40) + 40) + 'deg, #def, #dfe)';\n }\n }, {\n key: 'render',\n value: function render() {\n return (0, _preact.h)(\n 'section',\n null,\n (0, _preact.h)(_reactRouterDom.Route, { exact: true, path: '/morph/app/', component: _morph2.default })\n );\n }\n }]);\n\n return router;\n}();\n\nfunction links() {\n return [{ url: '/morph/app/', name: 'morph' }];\n}\n\nexports.default = {\n name: 'morph',\n router: router, links: links\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.load_data = undefined;\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _v = require('uuid/v1');\n\nvar _v2 = _interopRequireDefault(_v);\n\nvar _socket = require('../../socket');\n\nvar _socket2 = _interopRequireDefault(_socket);\n\nvar _types = require('../../types');\n\nvar _types2 = _interopRequireDefault(_types);\n\nvar _dataset = require('../../dataset/dataset.loader');\n\nvar datasetLoader = _interopRequireWildcard(_dataset);\n\nvar _actions = require('../../actions');\n\nvar _actions2 = _interopRequireDefault(_actions);\n\nvar _util = require('../../util');\n\nvar _util2 = _interopRequireDefault(_util);\n\nvar _morph = require('./morph.module');\n\nvar _morph2 = _interopRequireDefault(_morph);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar load_data = exports.load_data = function load_data(id) {\n return function (dispatch) {\n var module = _morph2.default.name;\n _util2.default.allProgress([datasetLoader.load(module), _actions2.default.socket.list_sequences({ module: 'pix2pixhd', dir: 'sequences' }), _actions2.default.socket.list_directory({ module: module, dir: 'renders' })], function (percent, i, n) {\n console.log('morph load progress', i, n);\n dispatch({\n type: _types2.default.app.load_progress,\n progress: { i: i, n: n },\n data: { module: 'morph' }\n });\n }).then(function (res) {\n var _res = _slicedToArray(res, 3),\n datasetApiReport = _res[0],\n sequences = _res[1],\n renders = _res[2];\n\n var folderLookup = datasetApiReport.folderLookup,\n fileLookup = datasetApiReport.fileLookup,\n datasetLookup = datasetApiReport.datasetLookup,\n folders = datasetApiReport.folders,\n files = datasetApiReport.files,\n unsortedFolder = datasetApiReport.unsortedFolder,\n resultsFolder = datasetApiReport.resultsFolder;\n\n\n dispatch({\n type: _types2.default.morph.load,\n data: datasetApiReport,\n app: {\n resultsFolder: resultsFolder,\n files: files,\n sequences: sequences,\n renders: renders\n }\n });\n });\n };\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar morphModule = {\n name: 'morph',\n displayName: 'Morph',\n datatype: 'video'\n};\n\nexports.default = morphModule;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _types = require('../../types');\n\nvar _types2 = _interopRequireDefault(_types);\n\nvar _dataset = require('../../dataset/dataset.reducer');\n\nvar _dataset2 = _interopRequireDefault(_dataset);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar morphInitialState = {\n loading: true,\n progress: { i: 0, n: 0 },\n error: null,\n folder_id: 0,\n data: null,\n app: null\n};\n\nvar morphReducer = function morphReducer() {\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : morphInitialState;\n var action = arguments[1];\n\n if (action.data && action.data.module === 'morph') {\n state = (0, _dataset2.default)(state, action);\n }\n\n switch (action.type) {\n case _types2.default.morph.load:\n console.log('morph load', action.app);\n return _extends({}, state, {\n app: action.app,\n loading: false,\n data: action.data\n });\n case _types2.default.file.create:\n console.log(action);\n if (action.data.module !== 'morph') return state;\n return _extends({}, state, {\n app: state.app && _extends({}, state.app, {\n files: [action.data].concat(state.app.files)\n })\n });\n default:\n return state;\n }\n};\n\nexports.default = morphReducer;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.morph_task = undefined;\n\nvar _v = require('uuid/v1');\n\nvar _v2 = _interopRequireDefault(_v);\n\nvar _socket = require('../../socket');\n\nvar _socket2 = _interopRequireDefault(_socket);\n\nvar _types = require('../../types');\n\nvar _types2 = _interopRequireDefault(_types);\n\nvar _actions = require('../../actions');\n\nvar _actions2 = _interopRequireDefault(_actions);\n\nvar _morph = require('./morph.module');\n\nvar _morph2 = _interopRequireDefault(_morph);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar morph_task = exports.morph_task = function morph_task(state, folder) {\n return function (dispatch) {\n if (state.a === 'PLACEHOLDER' || state.b === 'PLACEHOLDER') return;\n var task = {\n module: _morph2.default.name,\n activity: 'morph',\n dataset: state.a,\n folder_id: folder.id,\n opt: state\n };\n return _actions2.default.queue.add_task(task);\n };\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _preact = require('preact');\n\nvar _redux = require('redux');\n\nvar _reactRouterDom = require('react-router-dom');\n\nvar _reactRedux = require('react-redux');\n\nvar _util = require('../../../util');\n\nvar _util2 = _interopRequireDefault(_util);\n\nvar _actions = require('../../../actions');\n\nvar _actions2 = _interopRequireDefault(_actions);\n\nvar _morph = require('../morph.actions');\n\nvar morphActions = _interopRequireWildcard(_morph);\n\nvar _morph2 = require('../morph.tasks');\n\nvar morphTasks = _interopRequireWildcard(_morph2);\n\nvar _loading = require('../../../common/loading.component');\n\nvar _loading2 = _interopRequireDefault(_loading);\n\nvar _common = require('../../../common');\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar yes_count = 0;\n\nvar MorphResults = function (_Component) {\n _inherits(MorphResults, _Component);\n\n function MorphResults(props) {\n _classCallCheck(this, MorphResults);\n\n var _this = _possibleConstructorReturn(this, (MorphResults.__proto__ || Object.getPrototypeOf(MorphResults)).call(this));\n\n _this.state = {\n dataset_module: 'pix2pixhd',\n a: \"PLACEHOLDER\",\n b: \"PLACEHOLDER\",\n a_offset: 0,\n a_duration: 1,\n a_pos: 0,\n b_offset: 0,\n b_duration: 1,\n b_pos: 0,\n steps: 16,\n dilate: 2,\n frames: 32,\n padding: 3,\n smooth: true,\n mode: 'mix'\n };\n if (!props.morph.data) props.actions.load_data();\n return _this;\n }\n\n _createClass(MorphResults, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n yes_count = 0;\n }\n }, {\n key: 'render',\n value: function render() {\n var _this2 = this;\n\n if (!this.props.morph.app) return (0, _preact.h)(_loading2.default, { progress: this.props.morph.progress });\n\n var _props$morph$app = this.props.morph.app,\n resultsFolder = _props$morph$app.resultsFolder,\n sequences = _props$morph$app.sequences,\n renders = _props$morph$app.renders,\n files = _props$morph$app.files;\n\n var sequence_options = sequences.map(function (sequence) {\n return [sequence.name.split(\"_\").slice(0, 3).join(\" \") + \"~ (\" + sequence.count + \")\", sequence.name];\n });\n var sequenceLookup = sequences.reduce(function (a, b) {\n return a[b.name] = b, a;\n }, {});\n\n var totalLength = this.state.frames / 25;\n var lengthWarning = void 0;\n if (this.state.steps / this.state.dilate > 64 && this.state.mode === 'mix') {\n lengthWarning = (0, _preact.h)(\n 'span',\n null,\n (0, _preact.h)('br', null),\n 'warning, this will take a while'\n );\n }\n\n return (0, _preact.h)(\n 'div',\n { className: 'app morph' },\n (0, _preact.h)(\n 'div',\n { className: 'heading row middle' },\n (0, _preact.h)(\n 'h1',\n null,\n 'Morph'\n )\n ),\n (0, _preact.h)(\n 'div',\n { className: 'rows params renders' },\n (0, _preact.h)(\n 'div',\n { className: 'column' },\n (0, _preact.h)(\n _common.Group,\n { title: 'From' },\n (0, _preact.h)(_common.Select, {\n title: 'Starting sequence',\n placeholder: 'Please choose a video',\n value: this.state.a,\n options: sequence_options,\n onChange: function onChange(name, key) {\n return _this2.setState({ a: key, a_duration: sequenceLookup[key].count, a_pos: 0, a_offset: 0 });\n }\n }),\n (0, _preact.h)(_common.Slider, {\n title: 'Offset',\n value: this.state.a_pos,\n min: 0, max: 1, step: 0.01,\n onChange: function onChange(key) {\n return _this2.setState({ a_pos: key, a_offset: Math.floor(key * (_this2.state.a_duration - _this2.state.frames)) });\n }\n })\n ),\n (0, _preact.h)(\n _common.Group,\n { title: 'To' },\n (0, _preact.h)(_common.Select, {\n title: 'Ending sequence',\n placeholder: 'Please choose a video',\n value: this.state.b,\n options: sequence_options,\n onChange: function onChange(name, key) {\n return _this2.setState({ b: key, b_duration: sequenceLookup[key].count, b_pos: 0, b_offset: 0 });\n }\n }),\n (0, _preact.h)(_common.Slider, {\n title: 'Offset',\n value: this.state.b_pos,\n min: 0, max: 1, step: 0.01,\n onChange: function onChange(key) {\n return _this2.setState({ b_pos: key, b_offset: Math.floor(key * (_this2.state.b_duration - _this2.state.frames)) });\n }\n })\n ),\n (0, _preact.h)(\n _common.Group,\n { title: 'Morph Settings' },\n (0, _preact.h)(_common.Select, {\n title: \"Mode\",\n value: this.state.mode,\n options: ['mix', 'average', 'mix_images'],\n onChange: function onChange(name, key) {\n return _this2.setState({ mode: key });\n }\n }),\n (0, _preact.h)(_common.Slider, {\n type: 'list',\n title: 'Steps',\n value: this.state.steps,\n options: [2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096],\n onChange: function onChange(key) {\n return _this2.setState({ steps: key, frames: key * _this2.state.dilate });\n }\n }),\n (0, _preact.h)(_common.Slider, {\n type: 'list',\n title: 'Dilate',\n value: this.state.dilate,\n options: [1, 2, 4, 8, 16, 32],\n onChange: function onChange(key) {\n return _this2.setState({ dilate: key, frames: _this2.state.steps * key });\n }\n }),\n (0, _preact.h)(_common.Checkbox, {\n title: 'Smooth',\n value: this.state.smooth,\n onToggle: function onToggle(key) {\n return _this2.setState({ smooth: key });\n }\n }),\n (0, _preact.h)(_common.Slider, {\n type: 'int',\n title: 'Padding (in seconds)',\n value: this.state.padding,\n min: 0, max: 30, step: 1,\n onChange: function onChange(key) {\n return _this2.setState({ padding: key });\n }\n }),\n (0, _preact.h)(_common.Button, {\n title: 'Run task',\n value: 'Morph!',\n onClick: function onClick() {\n return _this2.props.remote.morph_task(_this2.state, resultsFolder);\n }\n }),\n (0, _preact.h)('br', null),\n (0, _preact.h)(\n _common.Param,\n { title: 'Total length' },\n totalLength.toFixed(1) + \" seconds\"\n ),\n (0, _preact.h)(\n _common.Param,\n { title: 'Total frames' },\n this.state.frames + \" frames\"\n ),\n lengthWarning,\n (0, _preact.h)('br', null),\n (0, _preact.h)(_common.CurrentTask, null)\n )\n ),\n (0, _preact.h)(\n 'h3',\n null,\n 'morphed videos'\n ),\n (0, _preact.h)(_common.FileList, {\n linkFiles: true,\n files: files,\n orderBy: 'date desc',\n fields: 'name datetime size delete',\n onDelete: function onDelete(file) {\n var yes = void 0;\n if (yes_count < 3) {\n yes = confirm('Are you sure you want to delete this file?');\n } else {\n yes = true;\n }\n if (yes) {\n yes_count += 1;\n console.log('delete: confirmed');\n _actions2.default.file.destroy(file);\n }\n }\n }),\n (0, _preact.h)('br', null),\n (0, _preact.h)(\n 'h3',\n null,\n 'renders on server'\n ),\n (0, _preact.h)(_common.FileList, {\n files: renders,\n orderBy: 'date desc',\n fields: 'name datetime time size',\n onClick: function onClick(file, e) {\n e.preventDefault();\n e.stopPropagation();\n console.log('picked a result', file);\n _this2.handlePick(file);\n }\n })\n )\n );\n }\n }, {\n key: 'handlePick',\n value: function handlePick(file) {\n // this.props.audioPlayer.play(file)\n }\n }]);\n\n return MorphResults;\n}(_preact.Component);\n\nvar mapStateToProps = function mapStateToProps(state) {\n return {\n morph: state.module.morph\n };\n};\n\nvar mapDispatchToProps = function mapDispatchToProps(dispatch, ownProps) {\n return {\n actions: (0, _redux.bindActionCreators)(morphActions, dispatch),\n remote: (0, _redux.bindActionCreators)(morphTasks, dispatch)\n // audioPlayer: bindActionCreators(audioPlayerActions, dispatch),\n };\n};\n\nexports.default = (0, _reactRedux.connect)(mapStateToProps, mapDispatchToProps)(MorphResults);","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _preact = require('preact');\n\nvar _reactRouterDom = require('react-router-dom');\n\nvar _actions = require('../../actions');\n\nvar _actions2 = _interopRequireDefault(_actions);\n\nvar _util = require('../../util');\n\nvar _util2 = _interopRequireDefault(_util);\n\nvar _pix2pix = require('./views/pix2pix.new');\n\nvar _pix2pix2 = _interopRequireDefault(_pix2pix);\n\nvar _pix2pix3 = require('./views/pix2pix.show');\n\nvar _pix2pix4 = _interopRequireDefault(_pix2pix3);\n\nvar _pix2pix5 = require('./views/pix2pix.live');\n\nvar _pix2pix6 = _interopRequireDefault(_pix2pix5);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar router = function () {\n function router() {\n _classCallCheck(this, router);\n }\n\n _createClass(router, [{\n key: 'componentWillMount',\n value: function componentWillMount() {\n _actions2.default.system.changeTool('pix2pix');\n document.body.style.backgroundImage = 'linear-gradient(' + (_util2.default.randint(40) + 40) + 'deg, #fde, #ffe)';\n }\n }, {\n key: 'componentWillReceiveProps',\n value: function componentWillReceiveProps() {\n _actions2.default.system.changeTool('pix2pix');\n document.body.style.backgroundImage = 'linear-gradient(' + (_util2.default.randint(40) + 40) + 'deg, #fde, #ffe)';\n }\n }, {\n key: 'render',\n value: function render() {\n return (0, _preact.h)(\n 'section',\n null,\n (0, _preact.h)(_reactRouterDom.Route, { exact: true, path: '/pix2pix/new/', component: _pix2pix2.default }),\n (0, _preact.h)(_reactRouterDom.Route, { exact: true, path: '/pix2pix/sequences/', component: _pix2pix4.default }),\n (0, _preact.h)(_reactRouterDom.Route, { exact: true, path: '/pix2pix/sequences/:id/', component: _pix2pix4.default }),\n (0, _preact.h)(_reactRouterDom.Route, { exact: true, path: '/pix2pix/live/', component: _pix2pix6.default })\n );\n }\n }]);\n\n return router;\n}();\n\nfunction links() {\n return [{ url: '/pix2pix/new/', name: 'new' }, { url: '/pix2pix/sequences/', name: 'sequences' }, { url: '/pix2pix/live/', name: 'live' }];\n}\n\nexports.default = {\n name: 'pix2pix',\n router: router, links: links\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.load_directories = undefined;\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _v = require('uuid/v1');\n\nvar _v2 = _interopRequireDefault(_v);\n\nvar _socket = require('../../socket');\n\nvar _socket2 = _interopRequireDefault(_socket);\n\nvar _types = require('../../types');\n\nvar _types2 = _interopRequireDefault(_types);\n\nvar _dataset = require('../../dataset/dataset.loader');\n\nvar datasetLoader = _interopRequireWildcard(_dataset);\n\nvar _actions = require('../../actions');\n\nvar _actions2 = _interopRequireDefault(_actions);\n\nvar _util = require('../../util');\n\nvar _util2 = _interopRequireDefault(_util);\n\nvar _pix2pix = require('./pix2pix.module');\n\nvar _pix2pix2 = _interopRequireDefault(_pix2pix);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar load_directories = exports.load_directories = function load_directories(id) {\n return function (dispatch) {\n var module = _pix2pix2.default.name;\n _util2.default.allProgress([datasetLoader.load(module), _actions2.default.socket.list_directory({ module: module, dir: 'sequences/pix2pix/' }), _actions2.default.socket.list_directory({ module: module, dir: 'datasets/pix2pix/' }), _actions2.default.socket.list_directory({ module: module, dir: 'checkpoints/pix2pix/' })], function (percent, i, n) {\n console.log('pix2pix load progress', i, n);\n dispatch({ type: _types2.default.app.load_progress, progress: { i: i, n: n } });\n }).then(function (res) {\n var _res = _slicedToArray(res, 4),\n datasetApiReport = _res[0],\n sequences = _res[1],\n datasets = _res[2],\n checkpoints = _res[3]; //, datasets, results, output, datasetUsage, lossReport] = res\n\n\n var folderLookup = datasetApiReport.folderLookup,\n fileLookup = datasetApiReport.fileLookup,\n datasetLookup = datasetApiReport.datasetLookup,\n folders = datasetApiReport.folders,\n files = datasetApiReport.files,\n unsortedFolder = datasetApiReport.unsortedFolder;\n // console.log(datasetUsage)\n\n var sequenceDirectories = sequences.filter(function (s) {\n return s.dir;\n });\n // console.log(sequenceDirectories)\n sequenceDirectories.forEach(function (dir) {\n var dataset = datasetLoader.getDataset(module, datasetLookup, dir.name);\n dataset.isBuilt = true;\n // console.log(dir.name, dataset)\n });\n\n datasets.filter(function (s) {\n return s.dir;\n }).forEach(function (dir) {\n var dataset = datasetLoader.getDataset(module, datasetLookup, dir.name);\n dataset.hasDataset = true;\n });\n\n var checkpointDirectories = checkpoints.filter(function (s) {\n return s.dir;\n });\n checkpointDirectories.forEach(function (dir) {\n var dataset = datasetLoader.getDataset(module, datasetLookup, dir.name);\n dataset.hasCheckpoints = true;\n dataset.checkpoints = [dir];\n });\n\n // console.log(res)\n\n // flatDatasets.forEach(file => {\n // file.uuid = uuidv1()\n // fileLookup[file.uuid] = file\n // const name = file.name.split('.')[0]\n // const dataset = datasetLoader.getDataset(module, datasetLookup, name, unsortedFolder, file.date)\n // file.persisted = false\n // dataset.input.push(file.uuid)\n // })\n\n // // exp:coccokit_3-frame_sizes:8,2-n_rnn:2-dataset:coccokit_3\n // const checkpoints = results.filter(s => s.dir).map(s => {\n // const checkpoint = s.name\n // .split('-')\n // .map(s => s.split(':'))\n // .filter(b => b.length && b[1])\n // .reduce((a,b) => (a[b[0]] = b[1]) && a, {})\n // checkpoint.name = checkpoint.name || checkpoint.dataset || checkpoint.exp\n // checkpoint.date = s.date\n // checkpoint.dir = s\n // checkpoint.persisted = false\n // const dataset = datasetLoader.getDataset(module, datasetLookup, checkpoint.name, unsortedFolder, checkpoint.date)\n // const loss = lossReport[checkpoint.name]\n // if (loss) {\n // dataset.epoch = checkpoint.epoch = loss.length\n // checkpoint.training_loss = loss\n // }\n // dataset.checkpoints.push(checkpoint)\n // return checkpoint\n // })\n\n // output.map(file => {\n // file.uuid = uuidv1()\n // fileLookup[file.uuid] = file\n // const pair = file.name.split('.')[0].split('-')\n // const dataset = datasetLoader.getDataset(module, datasetLookup, pair[0], unsortedFolder, file.date)\n // file.persisted = false\n // file.epoch = parseInt(file.epoch || pair[1].replace(/^\\D+/, '')) || 0\n // dataset.epoch = Math.max(file.epoch, dataset.epoch || 0)\n // // here check if the file exists in dataset, if so just check that it's persisted\n // const found = dataset.output.some(file_id => {\n // // if (f.name === \n // if (fileLookup[file_id].name === file.name) {\n // fileLookup[file_id].persisted = true\n // return true\n // }\n // return false\n // })\n // if (! found) {\n // dataset.output.push(file.uuid)\n // }\n // })\n\n dispatch({\n type: _types2.default.dataset.load,\n data: {\n module: module,\n folderLookup: folderLookup,\n fileLookup: fileLookup,\n datasetLookup: datasetLookup,\n folders: folders, files: files,\n sequences: sequenceDirectories,\n datasets: datasets,\n checkpoints: checkpointDirectories\n }\n });\n }).catch(function (e) {\n console.error(e);\n });\n if (id) {\n console.log('folder id', id);\n dispatch({\n type: _types2.default.dataset.set_folder,\n data: {\n folder_id: id,\n module: module\n }\n });\n }\n };\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar pix2pixModule = {\n name: 'pix2pix',\n displayName: 'Pix2Pix',\n datatype: 'video'\n};\n\nexports.default = pix2pixModule;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _types = require('../../types');\n\nvar _types2 = _interopRequireDefault(_types);\n\nvar _dataset = require('../../dataset/dataset.reducer');\n\nvar _dataset2 = _interopRequireDefault(_dataset);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar pix2pixInitialState = {\n loading: true,\n progress: { i: 0, n: 0 },\n error: null,\n folder_id: 0,\n data: null\n};\n\nvar pix2pixReducer = function pix2pixReducer() {\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : pix2pixInitialState;\n var action = arguments[1];\n\n if (action.data && action.data.module === 'pix2pix') {\n state = (0, _dataset2.default)(state, action);\n }\n\n switch (action.type) {\n default:\n return state;\n }\n};\n\nexports.default = pix2pixReducer;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.train_task = exports.live_task = exports.fetch_task = undefined;\n\nvar _v = require('uuid/v1');\n\nvar _v2 = _interopRequireDefault(_v);\n\nvar _socket = require('../../socket');\n\nvar _socket2 = _interopRequireDefault(_socket);\n\nvar _types = require('../../types');\n\nvar _types2 = _interopRequireDefault(_types);\n\nvar _actions = require('../../actions');\n\nvar _actions2 = _interopRequireDefault(_actions);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar fetch_task = exports.fetch_task = function fetch_task(url, file_id, dataset) {\n return function (dispatch) {\n if (!url) return console.log('input file inaccessible (no url)');\n var task = {\n module: 'pix2pix',\n activity: 'fetch',\n dataset: dataset,\n opt: {\n url: url,\n file_id: file_id,\n dataset: dataset\n }\n };\n return _actions2.default.queue.add_task(task);\n };\n};\n\nvar live_task = exports.live_task = function live_task(sequence, checkpoint) {\n return function (dispatch) {\n var task = {\n module: 'pix2pix',\n activity: 'live',\n dataset: sequence,\n checkpoint: checkpoint,\n opt: {\n poll_delay: 0.09\n }\n };\n console.log(task);\n console.log('add live task');\n return _actions2.default.queue.add_task(task);\n };\n};\n\nvar train_task = exports.train_task = function train_task(dataset, folder_id) {\n var epochs = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;\n return function (dispatch) {\n var task = {\n module: 'pix2pix',\n activity: 'train',\n dataset: dataset.name,\n epoch: 0,\n epochs: epochs,\n opt: {\n folder_id: folder_id,\n load_size: 264 // switch to 256 for pix2wav\n }\n };\n console.log(task);\n return _actions2.default.queue.add_task(task);\n };\n};\n// export const log_task = (dataset) => dispatch => {\n// const task = {\n// module: 'samplernn',\n// activity: 'log',\n// dataset: dataset.name,\n// }\n// return actions.queue.add_task(task)\n// }\n// export const clear_cache_task = (dataset) => dispatch => {\n// const task = {\n// module: 'samplernn',\n// activity: 'clear_cache',\n// dataset: dataset.name,\n// }\n// return actions.queue.add_task(task)\n// }","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _preact = require('preact');\n\nvar _redux = require('redux');\n\nvar _reactRedux = require('react-redux');\n\nvar _common = require('../../../common/');\n\nvar _player = require('../../../live/player');\n\nvar _live = require('../../../live/live.actions');\n\nvar liveActions = _interopRequireWildcard(_live);\n\nvar _queue = require('../../../queue/queue.actions');\n\nvar queueActions = _interopRequireWildcard(_queue);\n\nvar _pix2pix = require('../pix2pix.tasks');\n\nvar pix2pixTasks = _interopRequireWildcard(_pix2pix);\n\nvar _pix2pix2 = require('../pix2pix.actions');\n\nvar pix2pixActions = _interopRequireWildcard(_pix2pix2);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Pix2PixLive = function (_Component) {\n _inherits(Pix2PixLive, _Component);\n\n function Pix2PixLive(props) {\n _classCallCheck(this, Pix2PixLive);\n\n // if (! props.pix2pix || ! props.pix2pix.data) {\n var _this = _possibleConstructorReturn(this, (Pix2PixLive.__proto__ || Object.getPrototypeOf(Pix2PixLive)).call(this));\n\n props.actions.pix2pix.load_directories();\n // }\n props.actions.live.get_params();\n // props.actions.live.list_checkpoints('pix2pix')\n // props.actions.live.list_sequences('pix2pix')\n _this.changeCheckpoint = _this.changeCheckpoint.bind(_this);\n _this.changeEpoch = _this.changeEpoch.bind(_this);\n _this.changeSequence = _this.changeSequence.bind(_this);\n _this.seek = _this.seek.bind(_this);\n _this.togglePlaying = _this.togglePlaying.bind(_this);\n _this.toggleRecording = _this.toggleRecording.bind(_this);\n return _this;\n }\n\n _createClass(Pix2PixLive, [{\n key: 'componentWillUpdate',\n value: function componentWillUpdate(nextProps) {\n if (nextProps.opt.checkpoint_name && nextProps.opt.checkpoint_name !== this.props.opt.checkpoint_name) {\n this.props.actions.live.list_epochs('pix2pix', nextProps.opt.checkpoint_name);\n }\n }\n }, {\n key: 'changeCheckpoint',\n value: function changeCheckpoint(field, checkpoint_name) {\n this.props.actions.live.load_epoch(checkpoint_name, 'latest');\n }\n }, {\n key: 'changeEpoch',\n value: function changeEpoch(field, epoch_name) {\n this.props.actions.live.load_epoch(this.props.opt.checkpoint_name, epoch_name);\n }\n }, {\n key: 'changeSequence',\n value: function changeSequence(field, sequence) {\n console.log('load sequence', sequence);\n this.props.actions.live.load_sequence(sequence);\n }\n }, {\n key: 'seek',\n value: function seek(percentage) {\n var frame = Math.floor(percentage * (parseInt(this.props.frame.sequence_len) || 1) + 1);\n console.log(\"seek to frame\", percentage, frame);\n this.props.actions.live.seek(frame);\n }\n }, {\n key: 'start',\n value: function start() {\n // console.log(this.props)\n var sequence = this.props.pix2pix.data.sequences[0].name;\n var checkpoint = this.props.pix2pix.data.checkpoints[0].name;\n console.log('starting up!', sequence, checkpoint);\n this.props.actions.tasks.live_task(sequence, checkpoint);\n }\n }, {\n key: 'interrupt',\n value: function interrupt() {\n this.props.actions.queue.stop_task('gpu');\n }\n }, {\n key: 'togglePlaying',\n value: function togglePlaying() {\n if (this.props.opt.processing) {\n this.props.actions.live.pause();\n } else {\n this.props.actions.live.play();\n }\n }\n }, {\n key: 'toggleRecording',\n value: function toggleRecording() {\n if (this.props.opt.recording) {\n (0, _player.stopRecording)();\n this.props.actions.live.pause();\n } else {\n (0, _player.startRecording)();\n }\n }\n }, {\n key: 'render',\n value: function render() {\n // console.log(this.props)\n if (this.props.pix2pix.loading) {\n return (0, _preact.h)(_common.Loading, null);\n }\n return (0, _preact.h)(\n 'div',\n { className: 'app centered' },\n (0, _preact.h)(_common.Player, { width: 424, height: 256 }),\n (0, _preact.h)(\n 'div',\n { className: 'params row' },\n (0, _preact.h)(\n 'div',\n { className: 'column' },\n (0, _preact.h)(\n _common.ParamGroup,\n {\n title: 'Playback',\n noToggle: true\n },\n (0, _preact.h)(_common.Select, {\n name: 'send_image',\n title: 'view mode',\n options: ['a', 'b', 'sequence', 'recursive'],\n onChange: this.props.actions.live.set_param\n }),\n (0, _preact.h)(_common.Select, {\n name: 'sequence_name',\n title: 'sequence',\n options: this.props.pix2pix.data.sequences.map(function (file) {\n return file.name;\n }),\n onChange: this.changeSequence\n }),\n (0, _preact.h)(_common.Select, {\n name: 'checkpoint_name',\n title: 'checkpoint',\n options: this.props.pix2pix.data.checkpoints.map(function (file) {\n return file.name;\n }),\n onChange: this.changeCheckpoint\n }),\n (0, _preact.h)(_common.Select, {\n name: 'epoch',\n title: 'epoch',\n options: this.props.epochs,\n onChange: this.changeEpoch\n }),\n (0, _preact.h)(_common.Slider, {\n name: 'position',\n min: 0.0, max: 1.0, type: 'float',\n value: (this.props.frame.sequence_i || 0) / (this.props.frame.sequence_len || 1),\n onChange: this.seek\n }),\n (0, _preact.h)(_common.Slider, { live: true,\n name: 'frame_delay',\n min: 0.05, max: 2.0, type: 'float'\n }),\n this.renderRestartButton(),\n (0, _preact.h)(\n _common.Button,\n {\n title: this.props.opt.savingVideo ? 'Saving video...' : this.props.opt.recording ? 'Recording (' + timeInSeconds(this.props.opt.recordFrames / 25) + ')' : 'Record video',\n onClick: this.toggleRecording\n },\n this.props.opt.savingVideo ? 'Saving' : this.props.opt.recording ? 'Recording' : 'Record'\n ),\n (0, _preact.h)(\n _common.Button,\n {\n title: 'Save frame',\n onClick: _player.saveFrame\n },\n 'Save'\n ),\n (0, _preact.h)(_common.ParamGroup, {\n title: 'Render on server',\n name: 'store_b',\n onToggle: function onToggle(value) {\n // now storing frames on server...\n }\n }),\n (0, _preact.h)(\n 'p',\n { className: 'last_message' },\n this.props.last_message\n )\n )\n ),\n (0, _preact.h)(\n 'div',\n { className: 'column' },\n (0, _preact.h)(\n _common.ParamGroup,\n {\n title: 'Transition',\n name: 'transition'\n },\n (0, _preact.h)(_common.Slider, { live: true,\n name: 'transition_period',\n min: 10, max: 5000, type: 'int'\n }),\n (0, _preact.h)(_common.Slider, { live: true,\n name: 'transition_min',\n min: 0.001, max: 0.2, type: 'float'\n }),\n (0, _preact.h)(_common.Slider, { live: true,\n name: 'transition_max',\n min: 0.1, max: 1.0, type: 'float'\n })\n ),\n (0, _preact.h)(\n _common.ParamGroup,\n {\n title: 'Recursion',\n name: 'recursive'\n },\n (0, _preact.h)(_common.Slider, { live: true,\n name: 'recursive_frac',\n min: 0.0, max: 0.5, type: 'float'\n }),\n (0, _preact.h)(_common.Slider, { live: true,\n name: 'recurse_roll',\n min: -64, max: 64, type: 'int'\n }),\n (0, _preact.h)(_common.Slider, { live: true,\n name: 'recurse_roll_axis',\n min: 0, max: 1, type: 'int'\n })\n ),\n (0, _preact.h)(\n _common.ParamGroup,\n {\n title: 'Sequence',\n name: 'sequence'\n },\n (0, _preact.h)(_common.Slider, { live: true,\n name: 'sequence_frac',\n min: 0.0, max: 0.5, type: 'float'\n }),\n (0, _preact.h)(_common.Slider, { live: true,\n name: 'process_frac',\n min: 0, max: 1, type: 'float'\n })\n )\n ),\n (0, _preact.h)(\n 'div',\n { className: 'column' },\n (0, _preact.h)(\n _common.ParamGroup,\n {\n title: 'Clahe',\n name: 'clahe'\n },\n (0, _preact.h)(_common.Slider, { live: true,\n name: 'clip_limit',\n min: 1.0, max: 4.0, type: 'float'\n })\n ),\n (0, _preact.h)(\n _common.ParamGroup,\n {\n title: 'Posterize',\n name: 'posterize'\n },\n (0, _preact.h)(_common.Slider, { live: true,\n name: 'spatial_window',\n min: 2, max: 128, type: 'int'\n }),\n (0, _preact.h)(_common.Slider, { live: true,\n name: 'color_window',\n min: 2, max: 128, type: 'int'\n })\n ),\n (0, _preact.h)(\n _common.ParamGroup,\n {\n title: 'Blur',\n name: 'blur'\n },\n (0, _preact.h)(_common.Slider, { live: true,\n name: 'blur_radius',\n min: 3, max: 7, type: 'odd'\n }),\n (0, _preact.h)(_common.Slider, { live: true,\n name: 'blur_sigma',\n min: 0, max: 2, type: 'float'\n })\n ),\n (0, _preact.h)(\n _common.ParamGroup,\n {\n title: 'Canny Edge Detection',\n name: 'canny'\n },\n (0, _preact.h)(_common.Slider, { live: true,\n name: 'canny_lo',\n min: 10, max: 200, type: 'int'\n }),\n (0, _preact.h)(_common.Slider, { live: true,\n name: 'canny_hi',\n min: 10, max: 200, type: 'int'\n })\n )\n )\n )\n );\n }\n }, {\n key: 'renderRestartButton',\n value: function renderRestartButton() {\n var _this2 = this;\n\n if (this.props.runner.gpu.status === 'IDLE') {\n return (0, _preact.h)(\n _common.Button,\n {\n title: 'GPU Idle',\n onClick: function onClick() {\n return _this2.start();\n }\n },\n 'Start'\n );\n }\n if (this.props.runner.gpu.task.module !== 'pix2pix') {\n return (0, _preact.h)(\n _common.Button,\n {\n title: 'GPU Busy',\n onClick: function onClick() {\n return _this2.interrupt();\n }\n },\n 'Interrupt'\n );\n }\n if (!this.props.opt.processing) {\n return (0, _preact.h)(\n 'div',\n null,\n (0, _preact.h)(\n _common.Button,\n {\n title: 'Not processing',\n onClick: this.togglePlaying\n },\n 'Restart'\n ),\n (0, _preact.h)(\n _common.Button,\n {\n title: 'GPU Busy',\n onClick: function onClick() {\n return _this2.interrupt();\n }\n },\n 'Interrupt'\n )\n );\n }\n return (0, _preact.h)(\n 'div',\n null,\n (0, _preact.h)(\n _common.Button,\n {\n title: 'Processing',\n onClick: this.togglePlaying\n },\n 'Stop'\n ),\n (0, _preact.h)(\n _common.Button,\n {\n title: 'GPU Busy',\n onClick: function onClick() {\n return _this2.interrupt();\n }\n },\n 'Interrupt'\n )\n );\n }\n }]);\n\n return Pix2PixLive;\n}(_preact.Component);\n\nfunction timeInSeconds(n) {\n return n.toFixed(1) + ' s.';\n}\nvar mapStateToProps = function mapStateToProps(state) {\n return {\n last_message: state.live.last_message,\n opt: state.live.opt,\n frame: state.live.frame,\n checkpoints: state.live.checkpoints,\n epochs: state.live.epochs,\n sequences: state.live.sequences,\n runner: state.system.runner,\n pix2pix: state.module.pix2pix\n };\n};\n\nvar mapDispatchToProps = function mapDispatchToProps(dispatch, ownProps) {\n return {\n actions: {\n live: (0, _redux.bindActionCreators)(liveActions, dispatch),\n queue: (0, _redux.bindActionCreators)(queueActions, dispatch),\n pix2pix: (0, _redux.bindActionCreators)(pix2pixActions, dispatch),\n tasks: (0, _redux.bindActionCreators)(pix2pixTasks, dispatch), s: s\n }\n };\n};\n\nexports.default = (0, _reactRedux.connect)(mapStateToProps, mapDispatchToProps)(Pix2PixLive);","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _preact = require('preact');\n\nvar _redux = require('redux');\n\nvar _reactRedux = require('react-redux');\n\nvar _reactRouterDom = require('react-router-dom');\n\nvar _util = require('../../../util');\n\nvar _util2 = _interopRequireDefault(_util);\n\nvar _common = require('../../../common');\n\nvar _pix2pix = require('../pix2pix.actions');\n\nvar pix2pixActions = _interopRequireWildcard(_pix2pix);\n\nvar _pix2pix2 = require('../pix2pix.module');\n\nvar _pix2pix3 = _interopRequireDefault(_pix2pix2);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction Pix2PixNew(props) {\n return (0, _preact.h)(_common.Views.New, {\n db: props.pix2pix,\n path: '/pix2pix/sequences/',\n actions: props.actions,\n module: _pix2pix3.default,\n history: props.history\n });\n}\n\nvar mapStateToProps = function mapStateToProps(state) {\n return {\n pix2pix: state.module.pix2pix\n };\n};\n\nvar mapDispatchToProps = function mapDispatchToProps(dispatch, ownProps) {\n return {\n actions: (0, _redux.bindActionCreators)(pix2pixActions, dispatch)\n };\n};\n\nexports.default = (0, _reactRedux.connect)(mapStateToProps, mapDispatchToProps)(Pix2PixNew);","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _preact = require('preact');\n\nvar _redux = require('redux');\n\nvar _reactRedux = require('react-redux');\n\nvar _util = require('../../../util');\n\nvar _util2 = _interopRequireDefault(_util);\n\nvar _pix2pix = require('../pix2pix.actions');\n\nvar pix2pixActions = _interopRequireWildcard(_pix2pix);\n\nvar _pix2pix2 = require('../pix2pix.tasks');\n\nvar pix2pixTasks = _interopRequireWildcard(_pix2pix2);\n\nvar _common = require('../../../common');\n\nvar _dataset = require('../../../dataset/dataset.form');\n\nvar _dataset2 = _interopRequireDefault(_dataset);\n\nvar _dataset3 = require('../../../dataset/dataset.new');\n\nvar _dataset4 = _interopRequireDefault(_dataset3);\n\nvar _upload = require('../../../dataset/upload.status');\n\nvar _upload2 = _interopRequireDefault(_upload);\n\nvar _dataset5 = require('../../../dataset/dataset.component');\n\nvar _dataset6 = _interopRequireDefault(_dataset5);\n\nvar _pix2pix3 = require('../pix2pix.module');\n\nvar _pix2pix4 = _interopRequireDefault(_pix2pix3);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Pix2pixShow = function (_Component) {\n _inherits(Pix2pixShow, _Component);\n\n function Pix2pixShow(props) {\n _classCallCheck(this, Pix2pixShow);\n\n var _this = _possibleConstructorReturn(this, (Pix2pixShow.__proto__ || Object.getPrototypeOf(Pix2pixShow)).call(this, props));\n\n _this.datasetActions = _this.datasetActions.bind(_this);\n return _this;\n }\n\n _createClass(Pix2pixShow, [{\n key: 'componentWillMount',\n value: function componentWillMount() {\n var id = this.props.match.params.id || localStorage.getItem('pix2pix.last_id');\n console.log('load dataset:', id);\n var _props = this.props,\n match = _props.match,\n pix2pix = _props.pix2pix,\n actions = _props.actions;\n\n if (id === 'new') return;\n if (id) {\n if (parseInt(id)) localStorage.setItem('pix2pix.last_id', id);\n if (!pix2pix.folder || pix2pix.folder.id !== id) {\n actions.load_directories(id);\n }\n } else {\n this.props.history.push('/pix2pix/new/');\n }\n }\n }, {\n key: 'render',\n value: function render() {\n var _props2 = this.props,\n pix2pix = _props2.pix2pix,\n match = _props2.match,\n history = _props2.history;\n\n var _ref = pix2pix.data || {},\n folderLookup = _ref.folderLookup;\n\n var folder = (folderLookup || {})[pix2pix.folder_id] || {};\n\n return (0, _preact.h)(\n 'div',\n { className: 'app pix2pix' },\n (0, _preact.h)(\n 'div',\n { className: 'heading' },\n (0, _preact.h)(\n 'div',\n { className: 'spaced' },\n (0, _preact.h)(\n 'h1',\n null,\n folder ? folder.name : (0, _preact.h)(_common.Loading, null)\n ),\n (0, _preact.h)(_upload2.default, null)\n )\n ),\n (0, _preact.h)(\n 'div',\n { className: 'row' },\n folder && folder.name && folder.name !== 'unsorted' && (0, _preact.h)(_dataset2.default, {\n title: 'Add Files',\n module: _pix2pix4.default,\n folder: folder,\n canUpload: true, canAddURL: true\n }),\n (0, _preact.h)(\n 'div',\n null,\n (0, _preact.h)(_upload2.default, null),\n (0, _preact.h)(_common.CurrentTask, null)\n )\n ),\n (0, _preact.h)(_dataset6.default, {\n loading: pix2pix.loading,\n progress: pix2pix.progress,\n id: pix2pix.folder_id,\n module: _pix2pix4.default,\n data: pix2pix.data,\n folder: folder,\n history: history,\n onPickFile: function onPickFile(file, e) {\n e.preventDefault();\n e.stopPropagation();\n console.log('picked a file', file);\n },\n datasetActions: this.datasetActions\n })\n );\n }\n }, {\n key: 'datasetActions',\n value: function datasetActions(dataset) {\n var isFetching = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var isProcessing = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n var _props3 = this.props,\n pix2pix = _props3.pix2pix,\n remote = _props3.remote;\n\n var input = pix2pix.data.fileLookup[dataset.input[0]];\n if (!input) return null;\n if (input.name && input.name.match(/(gif|jpe?g|png)$/i)) return null;\n console.log(dataset);\n return (0, _preact.h)(\n 'div',\n null,\n (0, _preact.h)(\n 'div',\n { className: 'actions' },\n (0, _preact.h)(\n 'span',\n { className: 'link', onClick: function onClick() {\n return remote.train_task(dataset, pix2pix.folder_id, 1);\n } },\n 'train'\n ),\n (0, _preact.h)(\n 'span',\n { className: 'link', onClick: function onClick() {\n return remote.train_task(dataset, pix2pix.folder_id, 5);\n } },\n '5x'\n ),\n (0, _preact.h)(\n 'span',\n { className: 'link', onClick: function onClick() {\n return remote.train_task(dataset, pix2pix.folder_id, 10);\n } },\n '10x'\n ),\n (0, _preact.h)(\n 'span',\n { className: 'link', onClick: function onClick() {\n return remote.train_task(dataset, pix2pix.folder_id, 20);\n } },\n '20x'\n ),\n (0, _preact.h)(\n 'span',\n { className: 'link', onClick: function onClick() {\n return remote.train_task(dataset, pix2pix.folder_id, 50);\n } },\n '50x'\n )\n ),\n dataset.isBuilt ? (0, _preact.h)(\n 'div',\n { className: 'subtext' },\n 'fetched ',\n (0, _preact.h)(\n 'span',\n { className: 'link', onClick: function onClick() {\n return remote.clear_cache_task(dataset);\n } },\n 'rm'\n )\n ) : isFetching ? (0, _preact.h)(\n 'div',\n { className: 'subtext' },\n 'fetching'\n ) : (0, _preact.h)(\n 'div',\n { className: 'subtext' },\n (0, _preact.h)(\n 'span',\n { className: 'link', onClick: function onClick() {\n return remote.fetch_task(input.url, input.id, dataset.name);\n } },\n 'fetch'\n )\n )\n );\n }\n }]);\n\n return Pix2pixShow;\n}(_preact.Component);\n\nvar mapStateToProps = function mapStateToProps(state) {\n return {\n pix2pix: state.module.pix2pix\n };\n};\n\nvar mapDispatchToProps = function mapDispatchToProps(dispatch, ownProps) {\n return {\n actions: (0, _redux.bindActionCreators)(pix2pixActions, dispatch),\n remote: (0, _redux.bindActionCreators)(pix2pixTasks, dispatch)\n };\n};\n\nexports.default = (0, _reactRedux.connect)(mapStateToProps, mapDispatchToProps)(Pix2pixShow);","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _preact = require('preact');\n\nvar _reactRouterDom = require('react-router-dom');\n\nvar _actions = require('../../actions');\n\nvar _actions2 = _interopRequireDefault(_actions);\n\nvar _util = require('../../util');\n\nvar _util2 = _interopRequireDefault(_util);\n\nvar _pix2pixhd = require('./views/pix2pixhd.new');\n\nvar _pix2pixhd2 = _interopRequireDefault(_pix2pixhd);\n\nvar _pix2pixhd3 = require('./views/pix2pixhd.show');\n\nvar _pix2pixhd4 = _interopRequireDefault(_pix2pixhd3);\n\nvar _pix2pixhd5 = require('./views/pix2pixhd.results');\n\nvar _pix2pixhd6 = _interopRequireDefault(_pix2pixhd5);\n\nvar _pix2pixhd7 = require('./views/pix2pixhd.uprez');\n\nvar _pix2pixhd8 = _interopRequireDefault(_pix2pixhd7);\n\nvar _pix2pixhd9 = require('./views/pix2pixhd.train');\n\nvar _pix2pixhd10 = _interopRequireDefault(_pix2pixhd9);\n\nvar _pix2pixhd11 = require('./views/pix2pixhd.live');\n\nvar _pix2pixhd12 = _interopRequireDefault(_pix2pixhd11);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar router = function () {\n function router() {\n _classCallCheck(this, router);\n }\n\n _createClass(router, [{\n key: 'componentWillMount',\n value: function componentWillMount() {\n _actions2.default.system.changeTool('pix2pixhd');\n document.body.style.backgroundImage = 'linear-gradient(' + (_util2.default.randint(40) + 40) + 'deg, #def, #dfe)';\n }\n }, {\n key: 'componentWillReceiveProps',\n value: function componentWillReceiveProps() {\n _actions2.default.system.changeTool('pix2pixhd');\n document.body.style.backgroundImage = 'linear-gradient(' + (_util2.default.randint(40) + 40) + 'deg, #def, #dfe)';\n }\n }, {\n key: 'render',\n value: function render() {\n return (0, _preact.h)(\n 'section',\n null,\n (0, _preact.h)(_reactRouterDom.Route, { exact: true, path: '/pix2pixhd/new/', component: _pix2pixhd2.default }),\n (0, _preact.h)(_reactRouterDom.Route, { exact: true, path: '/pix2pixhd/sequences/', component: _pix2pixhd4.default }),\n (0, _preact.h)(_reactRouterDom.Route, { exact: true, path: '/pix2pixhd/sequences/:id/', component: _pix2pixhd4.default }),\n (0, _preact.h)(_reactRouterDom.Route, { exact: true, path: '/pix2pixhd/train/', component: _pix2pixhd10.default }),\n (0, _preact.h)(_reactRouterDom.Route, { exact: true, path: '/pix2pixhd/results/', component: _pix2pixhd6.default }),\n (0, _preact.h)(_reactRouterDom.Route, { exact: true, path: '/pix2pixhd/uprez/', component: _pix2pixhd8.default }),\n (0, _preact.h)(_reactRouterDom.Route, { exact: true, path: '/pix2pixhd/live/', component: _pix2pixhd12.default })\n );\n }\n }]);\n\n return router;\n}();\n\nfunction links() {\n return [{ url: '/pix2pixhd/new/', name: 'folders' }, { url: '/pix2pixhd/sequences/', name: 'sequences' }, { url: '/pix2pixhd/train/', name: 'checkpoints' }, { url: '/pix2pixhd/results/', name: 'results' }, { url: '/pix2pixhd/uprez/', name: 'uprez' }, { url: '/pix2pixhd/live/', name: 'live' }];\n}\n\nexports.default = {\n name: 'pix2pixhd',\n router: router, links: links\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.count_dataset = exports.list_epochs = exports.load_uprez = exports.load_results = exports.load_directories = undefined;\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _v = require('uuid/v1');\n\nvar _v2 = _interopRequireDefault(_v);\n\nvar _socket = require('../../socket');\n\nvar _socket2 = _interopRequireDefault(_socket);\n\nvar _types = require('../../types');\n\nvar _types2 = _interopRequireDefault(_types);\n\nvar _dataset = require('../../dataset/dataset.loader');\n\nvar datasetLoader = _interopRequireWildcard(_dataset);\n\nvar _actions = require('../../actions');\n\nvar _actions2 = _interopRequireDefault(_actions);\n\nvar _util = require('../../util');\n\nvar _util2 = _interopRequireDefault(_util);\n\nvar _pix2pixhd = require('./pix2pixhd.module');\n\nvar _pix2pixhd2 = _interopRequireDefault(_pix2pixhd);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar load_directories = exports.load_directories = function load_directories(id) {\n return function (dispatch) {\n var module = _pix2pixhd2.default.name;\n _util2.default.allProgress([datasetLoader.load(module), _actions2.default.socket.list_directory({ module: module, dir: 'sequences' }), _actions2.default.socket.list_directory({ module: module, dir: 'datasets' }), _actions2.default.socket.list_directory({ module: module, dir: 'checkpoints' })], function (percent, i, n) {\n console.log('pix2pixhd load progress', i, n);\n dispatch({\n type: _types2.default.app.load_progress,\n progress: { i: i, n: n },\n data: { module: 'pix2pixhd' }\n });\n }).then(function (res) {\n var _res = _slicedToArray(res, 4),\n datasetApiReport = _res[0],\n sequences = _res[1],\n datasets = _res[2],\n checkpoints = _res[3]; //, datasets, results, output, datasetUsage, lossReport] = res\n\n\n var folderLookup = datasetApiReport.folderLookup,\n fileLookup = datasetApiReport.fileLookup,\n datasetLookup = datasetApiReport.datasetLookup,\n folders = datasetApiReport.folders,\n files = datasetApiReport.files,\n unsortedFolder = datasetApiReport.unsortedFolder,\n resultsFolder = datasetApiReport.resultsFolder;\n // console.log(datasetUsage)\n\n var sequenceDirectories = sequences.filter(function (s) {\n return s.dir;\n });\n // console.log(sequenceDirectories)\n sequenceDirectories.forEach(function (dir) {\n var dataset = datasetLoader.getDataset(module, datasetLookup, dir.name);\n dataset.isBuilt = true;\n // console.log(dir.name, dataset)\n });\n\n datasets.filter(function (s) {\n return s.dir;\n }).forEach(function (dir) {\n var dataset = datasetLoader.getDataset(module, datasetLookup, dir.name);\n dataset.hasDataset = true;\n });\n\n var checkpointDirectories = checkpoints.filter(function (s) {\n return s.dir;\n });\n checkpointDirectories.forEach(function (dir) {\n var dataset = datasetLoader.getDataset(module, datasetLookup, dir.name);\n dataset.hasCheckpoints = true;\n dataset.checkpoints = [dir];\n });\n\n // console.log(res)\n\n // flatDatasets.forEach(file => {\n // file.uuid = uuidv1()\n // fileLookup[file.uuid] = file\n // const name = file.name.split('.')[0]\n // const dataset = datasetLoader.getDataset(module, datasetLookup, name, unsortedFolder, file.date)\n // file.persisted = false\n // dataset.input.push(file.uuid)\n // })\n\n // // exp:coccokit_3-frame_sizes:8,2-n_rnn:2-dataset:coccokit_3\n // const checkpoints = results.filter(s => s.dir).map(s => {\n // const checkpoint = s.name\n // .split('-')\n // .map(s => s.split(':'))\n // .filter(b => b.length && b[1])\n // .reduce((a,b) => (a[b[0]] = b[1]) && a, {})\n // checkpoint.name = checkpoint.name || checkpoint.dataset || checkpoint.exp\n // checkpoint.date = s.date\n // checkpoint.dir = s\n // checkpoint.persisted = false\n // const dataset = datasetLoader.getDataset(module, datasetLookup, checkpoint.name, unsortedFolder, checkpoint.date)\n // const loss = lossReport[checkpoint.name]\n // if (loss) {\n // dataset.epoch = checkpoint.epoch = loss.length\n // checkpoint.training_loss = loss\n // }\n // dataset.checkpoints.push(checkpoint)\n // return checkpoint\n // })\n\n // output.map(file => {\n // file.uuid = uuidv1()\n // fileLookup[file.uuid] = file\n // const pair = file.name.split('.')[0].split('-')\n // const dataset = datasetLoader.getDataset(module, datasetLookup, pair[0], unsortedFolder, file.date)\n // file.persisted = false\n // file.epoch = parseInt(file.epoch || pair[1].replace(/^\\D+/, '')) || 0\n // dataset.epoch = Math.max(file.epoch, dataset.epoch || 0)\n // // here check if the file exists in dataset, if so just check that it's persisted\n // const found = dataset.output.some(file_id => {\n // // if (f.name === \n // if (fileLookup[file_id].name === file.name) {\n // fileLookup[file_id].persisted = true\n // return true\n // }\n // return false\n // })\n // if (! found) {\n // dataset.output.push(file.uuid)\n // }\n // })\n\n dispatch({\n type: _types2.default.dataset.load,\n data: {\n module: module,\n folderLookup: folderLookup,\n fileLookup: fileLookup,\n datasetLookup: datasetLookup,\n folders: folders, files: files,\n sequences: sequenceDirectories,\n datasets: datasets,\n checkpoints: checkpointDirectories,\n resultsFolder: resultsFolder\n }\n });\n if (id) {\n console.log('folder id', id);\n dispatch({\n type: _types2.default.dataset.set_folder,\n data: {\n folder_id: id,\n module: module\n }\n });\n }\n }).catch(function (e) {\n console.error(e);\n });\n if (id) {\n console.log('folder id', id);\n dispatch({\n type: _types2.default.dataset.set_folder,\n data: {\n folder_id: id,\n module: module\n }\n });\n }\n };\n};\n\nvar load_results = exports.load_results = function load_results(id) {\n return function (dispatch) {\n var module = _pix2pixhd2.default.name;\n _util2.default.allProgress([_actions2.default.folder.index({ module: module, name: 'results' }), _actions2.default.file.index({ module: module, generated: 1, limit: 250 }), _actions2.default.socket.list_directory({ module: module, dir: 'renders' }), _actions2.default.socket.list_sequences({ module: module, dir: 'results' })], function (percent, i, n) {\n console.log('pix2pixhd load progress', i, n);\n dispatch({\n type: _types2.default.app.load_progress,\n progress: { i: i, n: n },\n data: { module: 'pix2pixhd' }\n });\n }).then(function (res) {\n var _res2 = _slicedToArray(res, 4),\n folders = _res2[0],\n files = _res2[1],\n renders = _res2[2],\n results = _res2[3]; //, datasets, results, output, datasetUsage, lossReport] = res\n // console.log(files, results, renders)\n\n\n dispatch({\n type: _types2.default.pix2pixhd.load_results,\n results: {\n resultsFolder: folders[0],\n files: files,\n renders: renders,\n results: results\n }\n });\n });\n };\n};\n\nvar load_uprez = exports.load_uprez = function load_uprez(id) {\n return function (dispatch) {\n var module = _pix2pixhd2.default.name;\n _util2.default.allProgress([_actions2.default.folder.index({ module: module, name: 'results' }), _actions2.default.socket.list_sequences({ module: module, dir: 'results' }), _actions2.default.file.index({ module: module, activity: 'uprez' })], function (percent, i, n) {\n console.log('pix2pixhd load progress', i, n);\n dispatch({\n type: _types2.default.app.load_progress,\n progress: { i: i, n: n },\n data: { module: 'pix2pixhd' }\n });\n }).then(function (res) {\n var _res3 = _slicedToArray(res, 3),\n folders = _res3[0],\n results = _res3[1],\n files = _res3[2]; //, datasets, results, output, datasetUsage, lossReport] = res\n // console.log(files, results, renders)\n\n\n dispatch({\n type: _types2.default.pix2pixhd.load_uprez,\n uprez: {\n resultsFolder: folders[0],\n results: results,\n files: files\n }\n });\n });\n };\n};\n\nvar G_NET_REGEXP = new RegExp('_net_G.pth$');\n\nvar list_epochs = exports.list_epochs = function list_epochs(checkpoint_name) {\n return function (dispatch) {\n var module = _pix2pixhd2.default.name;\n _actions2.default.socket.list_directory({ module: module, dir: 'checkpoints/' + checkpoint_name }).then(function (files) {\n // console.log(files)\n var epochs = files.map(function (f) {\n if (!f.name.match(G_NET_REGEXP)) return null;\n return f.name.replace(G_NET_REGEXP, '');\n }).filter(function (f) {\n return !!f;\n });\n // console.log(epochs)\n dispatch({\n type: _types2.default.dataset.list_epochs,\n data: {\n epochs: epochs,\n module: module\n }\n });\n });\n };\n};\n\nvar count_dataset = exports.count_dataset = function count_dataset(dataset) {\n return function (dispatch) {\n var module = _pix2pixhd2.default.name;\n _util2.default.allProgress([_actions2.default.socket.list_directory({ module: module, dir: 'sequences/' + dataset + '/' }), _actions2.default.socket.count_directory({ module: module, dir: 'datasets/' + dataset + '/train_A/' })], function (percent, i, n) {\n console.log('pix2pixhd load progress', i, n);\n // dispatch({\n // type: types.app.load_progress,\n // progress: { i, n },\n // data: { module: 'pix2pixhd' },\n // })\n }).then(function (res) {\n var _res4 = _slicedToArray(res, 2),\n sequence = _res4[0],\n datasetCount = _res4[1]; //, datasets, results, output, datasetUsage, lossReport] = res\n\n\n var sequenceCount = sequence.length;\n console.log(sequenceCount, datasetCount);\n dispatch({\n type: _types2.default.pix2pixhd.load_dataset_count,\n data: {\n name: dataset,\n sequence: sequence,\n sequenceCount: sequenceCount,\n datasetCount: datasetCount\n }\n });\n });\n };\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar pix2pixhdModule = {\n name: 'pix2pixhd',\n displayName: 'Pix2PixHD',\n datatype: 'video'\n};\n\nexports.default = pix2pixhdModule;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _types = require('../../types');\n\nvar _types2 = _interopRequireDefault(_types);\n\nvar _dataset = require('../../dataset/dataset.reducer');\n\nvar _dataset2 = _interopRequireDefault(_dataset);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar pix2pixhdInitialState = {\n loading: true,\n progress: { i: 0, n: 0 },\n error: null,\n folder_id: 0,\n data: null,\n results: null,\n checkpoint: {\n name: '',\n sequenceCount: 0,\n datasetCount: 0\n }\n};\n\nvar pix2pixhdReducer = function pix2pixhdReducer() {\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : pix2pixhdInitialState;\n var action = arguments[1];\n\n if (action.data && action.data.module === 'pix2pixhd') {\n state = (0, _dataset2.default)(state, action);\n }\n\n switch (action.type) {\n case _types2.default.pix2pixhd.load_results:\n return _extends({}, state, {\n results: action.results\n });\n case _types2.default.pix2pixhd.load_uprez:\n return _extends({}, state, {\n uprez: action.uprez\n });\n case _types2.default.pix2pixhd.load_dataset_count:\n return _extends({}, state, {\n checkpoint: action.data\n });\n case _types2.default.file.destroy:\n console.log('file destroy', state.results);\n return _extends({}, state, {\n results: _extends({}, state.results, {\n files: state.results.files.filter(function (f) {\n return f.id !== action.data.id;\n })\n })\n });\n default:\n return state;\n }\n};\n\nexports.default = pix2pixhdReducer;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.uprez_task = exports.splice_task = exports.augment_task = exports.live_task = exports.train_task = exports.fetch_task = undefined;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _v = require('uuid/v1');\n\nvar _v2 = _interopRequireDefault(_v);\n\nvar _socket = require('../../socket');\n\nvar _socket2 = _interopRequireDefault(_socket);\n\nvar _types = require('../../types');\n\nvar _types2 = _interopRequireDefault(_types);\n\nvar _actions = require('../../actions');\n\nvar _actions2 = _interopRequireDefault(_actions);\n\nvar _pix2pixhd = require('./pix2pixhd.module');\n\nvar _pix2pixhd2 = _interopRequireDefault(_pix2pixhd);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar fetch_task = exports.fetch_task = function fetch_task(url, file_id, dataset) {\n return function (dispatch) {\n if (!url) return console.log('input file inaccessible (no url)');\n var task = {\n module: _pix2pixhd2.default.name,\n activity: 'fetch',\n dataset: dataset,\n opt: {\n url: url,\n file_id: file_id,\n dataset: dataset\n }\n };\n return _actions2.default.queue.add_task(task);\n };\n};\n\nvar train_task = exports.train_task = function train_task(dataset, folder_id) {\n var epochs = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;\n return function (dispatch) {\n dataset = dataset.name || dataset;\n if (dataset === 'PLACEHOLDER') return;\n var task = {\n module: _pix2pixhd2.default.name,\n activity: 'train',\n dataset: dataset,\n epoch: 0,\n epochs: epochs,\n opt: {\n folder_id: folder_id\n }\n };\n if (!task.dataset) {\n console.error(\"train task: no dataset specified\");\n return;\n }\n console.log(task);\n return _actions2.default.queue.add_task(task);\n };\n};\n\nvar live_task = exports.live_task = function live_task(sequence, checkpoint, opt) {\n return function (dispatch) {\n var task = {\n module: _pix2pixhd2.default.name,\n activity: 'live',\n dataset: sequence,\n checkpoint: checkpoint,\n opt: _extends({}, opt, {\n poll_delay: 0.01\n })\n };\n console.log(task);\n console.log('add live task');\n return _actions2.default.queue.add_task(task);\n };\n};\n\nvar augment_task = exports.augment_task = function augment_task(dataset, opt) {\n return function (dispatch) {\n if (dataset === 'PLACEHOLDER') return;\n var task = {\n module: _pix2pixhd2.default.name,\n activity: 'augment',\n dataset: dataset,\n folder_id: opt.folder_id,\n opt: _extends({}, opt)\n };\n console.log(task);\n console.log('add augment task');\n return _actions2.default.queue.add_task(task);\n };\n};\n\nvar splice_task = exports.splice_task = function splice_task(opt) {\n return function (dispatch) {\n var task = {\n module: _pix2pixhd2.default.name,\n activity: 'splice',\n dataset: opt.title,\n folder_id: opt.folder_id,\n epochs: 1,\n opt: _extends({}, opt)\n };\n console.log(task);\n console.log('add splice task');\n return _actions2.default.queue.add_task(task);\n };\n};\n\nvar uprez_task = exports.uprez_task = function uprez_task(opt) {\n return function (dispatch) {\n var task = {\n module: _pix2pixhd2.default.name,\n activity: 'uprez',\n dataset: opt.dataset,\n folder_id: opt.folder_id,\n opt: _extends({}, opt)\n };\n console.log(task);\n console.log('add uprez task');\n return _actions2.default.queue.add_task(task);\n };\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _preact = require('preact');\n\nvar _redux = require('redux');\n\nvar _reactRedux = require('react-redux');\n\nvar _common = require('../../../common/');\n\nvar _player = require('../../../live/player');\n\nvar _live = require('../../../live/live.actions');\n\nvar liveActions = _interopRequireWildcard(_live);\n\nvar _queue = require('../../../queue/queue.actions');\n\nvar queueActions = _interopRequireWildcard(_queue);\n\nvar _pix2pixhd = require('../pix2pixhd.tasks');\n\nvar pix2pixhdTasks = _interopRequireWildcard(_pix2pixhd);\n\nvar _pix2pixhd2 = require('../pix2pixhd.actions');\n\nvar pix2pixhdActions = _interopRequireWildcard(_pix2pixhd2);\n\nvar _i18n = require('../../../i18n');\n\nvar _i18n2 = _interopRequireDefault(_i18n);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Pix2PixHDLive = function (_Component) {\n _inherits(Pix2PixHDLive, _Component);\n\n function Pix2PixHDLive(props) {\n _classCallCheck(this, Pix2PixHDLive);\n\n // if (! props.pix2pixhd || ! props.pix2pixhd.data) {\n var _this = _possibleConstructorReturn(this, (Pix2PixHDLive.__proto__ || Object.getPrototypeOf(Pix2PixHDLive)).call(this));\n\n props.actions.pix2pixhd.load_directories();\n // }\n props.actions.live.get_params();\n // props.actions.live.list_checkpoints('pix2pixhd')\n // props.actions.live.list_sequences('pix2pixhd')\n _this.changeCheckpoint = _this.changeCheckpoint.bind(_this);\n _this.changeEpoch = _this.changeEpoch.bind(_this);\n _this.changeSequence = _this.changeSequence.bind(_this);\n _this.seek = _this.seek.bind(_this);\n _this.togglePlaying = _this.togglePlaying.bind(_this);\n _this.toggleRecording = _this.toggleRecording.bind(_this);\n _this.handleKeydown = _this.handleKeydown.bind(_this);\n return _this;\n }\n\n _createClass(Pix2PixHDLive, [{\n key: 'componentWillMount',\n value: function componentWillMount() {\n document.addEventListener('keydown', this.handleKeydown);\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n document.removeEventListener('keydown', this.handleKeydown);\n }\n }, {\n key: 'componentWillUpdate',\n value: function componentWillUpdate(nextProps) {\n if (nextProps.opt.checkpoint_name && nextProps.opt.checkpoint_name !== this.props.opt.checkpoint_name) {\n console.log('listing epochs');\n this.props.actions.live.list_epochs('pix2pixhd', nextProps.opt.checkpoint_name);\n }\n }\n }, {\n key: 'handleKeydown',\n value: function handleKeydown(e) {\n console.log(e.keyCode);\n if (e.altKey || e.ctrlKey || e.metaKey) return;\n switch (e.keyCode) {\n case 27:\n // esc\n e.preventDefault();\n this.props.actions.live.set_fullscreen(!this.props.fullscreen);\n break;\n default:\n break;\n }\n }\n }, {\n key: 'changeCheckpoint',\n value: function changeCheckpoint(field, checkpoint_name) {\n this.props.actions.live.load_epoch(checkpoint_name, 'latest');\n }\n }, {\n key: 'changeEpoch',\n value: function changeEpoch(field, epoch_name) {\n this.props.actions.live.load_epoch(this.props.opt.checkpoint_name, epoch_name);\n }\n }, {\n key: 'changeSequence',\n value: function changeSequence(field, sequence) {\n console.log('load sequence', sequence);\n this.props.actions.live.load_sequence(sequence);\n }\n }, {\n key: 'seek',\n value: function seek(percentage) {\n var frame = Math.floor(percentage * (parseInt(this.props.frame.sequence_len) || 1) + 1);\n console.log(\"seek to frame\", percentage, frame);\n this.props.actions.live.seek(frame);\n }\n }, {\n key: 'start',\n value: function start() {\n console.log(this.props.opt);\n var sequence = this.props.opt.sequence_name || this.props.pix2pixhd.data.sequences[0].name;\n var checkpoint = this.props.opt.checkpoint_name || this.props.pix2pixhd.data.checkpoints[0].name;\n console.log('starting up!', sequence, checkpoint);\n this.props.actions.tasks.live_task(sequence, checkpoint, {\n folder_id: this.props.pix2pixhd.data.resultsFolder.id\n });\n }\n }, {\n key: 'interrupt',\n value: function interrupt() {\n this.props.actions.queue.stop_task('gpu');\n }\n }, {\n key: 'togglePlaying',\n value: function togglePlaying() {\n if (this.props.opt.processing) {\n this.props.actions.live.pause();\n } else {\n this.props.actions.live.play();\n }\n }\n }, {\n key: 'toggleRecording',\n value: function toggleRecording() {\n if (this.props.opt.recording) {\n (0, _player.stopRecording)();\n this.props.actions.live.pause();\n } else {\n (0, _player.startRecording)();\n }\n }\n }, {\n key: 'render',\n value: function render() {\n // console.log(this.props)\n var _props = this.props,\n pix2pixhd = _props.pix2pixhd,\n i18n = _props.i18n;\n\n if (pix2pixhd.loading) {\n return (0, _preact.h)(_common.Loading, { progress: pix2pixhd.progress });\n }\n var _pix2pixhd$data = pix2pixhd.data,\n folderLookup = _pix2pixhd$data.folderLookup,\n datasetLookup = _pix2pixhd$data.datasetLookup,\n sequences = _pix2pixhd$data.sequences;\n\n\n var sequenceLookup = sequences.reduce(function (a, b) {\n a[b.name] = true;\n return a;\n }, {});\n\n var sequenceGroups = Object.keys(folderLookup).map(function (id) {\n var folder = folderLookup[id];\n if (folder.name === 'results') return;\n var datasets = folder.datasets.map(function (name) {\n var sequence = sequenceLookup[name];\n if (sequence) {\n return name;\n }\n return null;\n }).filter(function (n) {\n return !!n;\n });\n return {\n name: folder.name,\n options: datasets.sort()\n };\n }).filter(function (n) {\n return !!n && !!n.options.length;\n }).sort(function (a, b) {\n return a.name.localeCompare(b.name);\n });\n\n var checkpointGroups = Object.keys(folderLookup).map(function (id) {\n var folder = folderLookup[id];\n if (folder.name === 'results') return;\n var datasets = folder.datasets.map(function (name) {\n var dataset = datasetLookup[name];\n if (dataset.checkpoints.length) {\n return name;\n }\n return null;\n }).filter(function (n) {\n return !!n;\n });\n return {\n name: folder.name,\n options: datasets.sort()\n };\n }).filter(function (n) {\n return !!n && !!n.options.length;\n }).sort(function (a, b) {\n return a.name.localeCompare(b.name);\n });\n\n return (0, _preact.h)(\n 'div',\n { className: 'app live centered' },\n (0, _preact.h)(_common.Player, { width: 424, height: 256, fullscreen: this.props.fullscreen }),\n (0, _preact.h)(\n 'div',\n { className: 'params row' },\n (0, _preact.h)(\n 'div',\n { className: 'column' },\n (0, _preact.h)(\n _common.ParamGroup,\n {\n title: i18n.pix2pixhd.live.network.title,\n noToggle: true\n },\n (0, _preact.h)(_common.Select, { live: true,\n name: 'send_image',\n title: i18n.pix2pixhd.live.network.view_mode,\n options: ['a', 'b', 'sequence', 'recursive'],\n onChange: this.props.actions.live.set_param\n }),\n (0, _preact.h)(_common.SelectGroup, { live: true,\n name: 'sequence_name',\n title: i18n.pix2pixhd.live.network.sequence,\n options: sequenceGroups,\n onChange: this.changeSequence\n }),\n (0, _preact.h)(_common.SelectGroup, { live: true,\n name: 'checkpoint_name',\n title: i18n.pix2pixhd.live.network.checkpoint,\n options: checkpointGroups,\n onChange: this.changeCheckpoint\n }),\n (0, _preact.h)(_common.Select, { live: true,\n name: 'epoch',\n title: i18n.pix2pixhd.live.network.epoch,\n options: this.props.epochs,\n onChange: this.changeEpoch\n })\n ),\n (0, _preact.h)(\n 'div',\n null,\n (0, _preact.h)(\n _common.ParamGroup,\n {\n title: i18n.pix2pixhd.live.playback.title,\n name: 'sequence_playing'\n },\n (0, _preact.h)(_common.Slider, {\n name: i18n.pix2pixhd.live.playback.position,\n min: 0.0, max: 1.0, type: 'float',\n value: (this.props.frame.sequence_i || 0) / (this.props.frame.sequence_len || 1),\n onChange: this.seek\n }),\n (0, _preact.h)(_common.Slider, { live: true,\n title: i18n.pix2pixhd.live.playback.playback_rate,\n name: 'sequence_step',\n min: -4.0, max: 4.0, type: 'float'\n }),\n (0, _preact.h)(_common.Slider, { live: true,\n title: i18n.pix2pixhd.live.playback.skip_frames,\n name: 'sequence_skip',\n min: 0, max: 1000, type: 'int'\n }),\n (0, _preact.h)(_common.Slider, { live: true,\n title: i18n.pix2pixhd.live.playback.fade_sequence,\n name: 'fade_sequence',\n min: 0, max: 4.0, type: 'float'\n }),\n (0, _preact.h)(_common.Slider, { live: true,\n title: i18n.pix2pixhd.live.playback.frame_delay,\n name: 'frame_delay',\n min: 0.0, max: 2.0, type: 'float'\n })\n )\n ),\n (0, _preact.h)(\n _common.Group,\n null,\n this.renderRestartButton(),\n this.renderLiveButtons(),\n this.renderRecordButton(),\n (0, _preact.h)(\n 'p',\n { 'class': 'last_message' },\n this.props.last_message\n )\n )\n ),\n (0, _preact.h)(\n 'div',\n { className: 'column' },\n (0, _preact.h)(\n _common.ParamGroup,\n {\n title: i18n.pix2pixhd.live.transition.title,\n name: 'transition'\n },\n (0, _preact.h)(_common.Slider, { live: true,\n name: 'transition_period',\n title: i18n.pix2pixhd.live.transition.period,\n min: 10, max: 5000, type: 'int'\n }),\n (0, _preact.h)(_common.Slider, { live: true,\n name: 'transition_min',\n title: i18n.pix2pixhd.live.transition.min,\n min: 0.001, max: 0.2, type: 'float'\n }),\n (0, _preact.h)(_common.Slider, { live: true,\n name: 'transition_max',\n title: i18n.pix2pixhd.live.transition.max,\n min: 0.1, max: 1.0, type: 'float'\n })\n ),\n (0, _preact.h)(\n _common.ParamGroup,\n {\n title: i18n.pix2pixhd.live.recursion.title,\n name: 'recursive'\n },\n (0, _preact.h)(_common.Slider, { live: true,\n title: i18n.pix2pixhd.live.recursion.frac,\n name: 'recursive_frac',\n min: 0.0, max: 0.5, type: 'float'\n }),\n (0, _preact.h)(_common.Slider, { live: true,\n title: i18n.pix2pixhd.live.recursion.roll,\n name: 'recurse_roll',\n min: -64, max: 64, type: 'int'\n }),\n (0, _preact.h)(_common.Slider, { live: true,\n title: i18n.pix2pixhd.live.recursion.axis,\n name: 'recurse_roll_axis',\n min: 0, max: 1, type: 'int'\n })\n ),\n (0, _preact.h)(\n _common.ParamGroup,\n {\n title: i18n.pix2pixhd.live.sequence.title,\n name: 'sequence'\n },\n (0, _preact.h)(_common.Slider, { live: true,\n title: i18n.pix2pixhd.live.sequence.frac,\n name: 'sequence_frac',\n min: 0.0, max: 1.0, type: 'float'\n }),\n (0, _preact.h)(_common.Slider, { live: true,\n title: i18n.pix2pixhd.live.sequence.process_frac,\n name: 'process_frac',\n min: 0, max: 1, type: 'float'\n })\n ),\n (0, _preact.h)(\n _common.ParamGroup,\n {\n title: i18n.pix2pixhd.live.transform.title,\n name: 'transform'\n },\n (0, _preact.h)(_common.Slider, { live: true,\n title: i18n.pix2pixhd.live.transform.rotate,\n name: 'rotate',\n min: -1, max: 1, type: 'float'\n }),\n (0, _preact.h)(_common.Slider, { live: true,\n title: i18n.pix2pixhd.live.transform.scale,\n name: 'scale',\n min: 0.9, max: 1.1, type: 'float'\n })\n )\n ),\n (0, _preact.h)(\n 'div',\n { className: 'column' },\n (0, _preact.h)(\n _common.ParamGroup,\n {\n title: i18n.pix2pixhd.live.clahe.title,\n name: 'clahe'\n },\n (0, _preact.h)(_common.Slider, { live: true,\n title: i18n.pix2pixhd.live.clahe.clip_limit,\n name: 'clip_limit',\n min: 1.0, max: 4.0, type: 'float'\n })\n ),\n (0, _preact.h)(\n _common.ParamGroup,\n {\n title: i18n.pix2pixhd.live.posterize.title,\n name: 'posterize'\n },\n (0, _preact.h)(_common.Slider, { live: true,\n title: i18n.pix2pixhd.live.posterize.spatial_window,\n name: 'spatial_window',\n min: 2, max: 128, type: 'int'\n }),\n (0, _preact.h)(_common.Slider, { live: true,\n title: i18n.pix2pixhd.live.posterize.color_window,\n name: 'color_window',\n min: 2, max: 128, type: 'int'\n })\n ),\n (0, _preact.h)(\n _common.ParamGroup,\n {\n title: i18n.pix2pixhd.live.blur.title,\n name: 'blur'\n },\n (0, _preact.h)(_common.Slider, { live: true,\n title: i18n.pix2pixhd.live.blur.radius,\n name: 'blur_radius',\n min: 3, max: 7, type: 'odd'\n }),\n (0, _preact.h)(_common.Slider, { live: true,\n title: i18n.pix2pixhd.live.blur.sigma,\n name: 'blur_sigma',\n min: 0, max: 2, type: 'float'\n })\n ),\n (0, _preact.h)(\n _common.ParamGroup,\n {\n title: i18n.pix2pixhd.live.canny.title,\n name: 'canny'\n },\n (0, _preact.h)(_common.Slider, { live: true,\n title: i18n.pix2pixhd.live.canny.lo,\n name: 'canny_lo',\n min: 10, max: 200, type: 'int'\n }),\n (0, _preact.h)(_common.Slider, { live: true,\n title: i18n.pix2pixhd.live.canny.hi,\n name: 'canny_hi',\n min: 10, max: 200, type: 'int'\n })\n ),\n (0, _preact.h)(\n _common.ParamGroup,\n {\n title: i18n.pix2pixhd.live.hsl.title,\n name: 'hsl'\n },\n (0, _preact.h)(_common.Slider, { live: true,\n title: i18n.pix2pixhd.live.hsl.hue,\n name: 'hue',\n min: -127, max: 127, type: 'int'\n }),\n (0, _preact.h)(_common.Slider, { live: true,\n title: i18n.pix2pixhd.live.hsl.saturation,\n name: 'saturation',\n min: -255, max: 255, type: 'int'\n }),\n (0, _preact.h)(_common.Slider, { live: true,\n title: i18n.pix2pixhd.live.hsl.luminosity,\n name: 'luminosity',\n min: -255, max: 255, type: 'int'\n })\n )\n )\n )\n );\n }\n }, {\n key: 'renderRestartButton',\n value: function renderRestartButton() {\n var _this2 = this;\n\n // console.log(this.props.runner.gpu)\n var i18n = this.props.i18n;\n\n if (this.props.runner.gpu.status === 'IDLE') {\n return (0, _preact.h)(\n _common.Button,\n {\n title: i18n.gpu.idle,\n onClick: function onClick() {\n return _this2.start();\n }\n },\n i18n.gpu.start\n );\n }\n if (this.props.runner.gpu.task.module !== 'pix2pixhd') {\n return (0, _preact.h)(\n _common.Button,\n {\n title: i18n.gpu.busy,\n onClick: function onClick() {\n return _this2.interrupt();\n }\n },\n i18n.gpu.interrupt\n );\n }\n if (!this.props.opt.processing) {\n return (0, _preact.h)(\n 'div',\n null,\n (0, _preact.h)(\n _common.Button,\n {\n title: i18n.gpu.not_processing,\n onClick: this.togglePlaying\n },\n i18n.gpu.restart\n ),\n (0, _preact.h)(\n _common.Button,\n {\n title: i18n.gpu.busy,\n onClick: function onClick() {\n return _this2.interrupt();\n }\n },\n i18n.gpu.interrupt\n )\n );\n }\n return (0, _preact.h)(\n 'div',\n null,\n (0, _preact.h)(\n _common.Button,\n {\n title: i18n.gpu.processing,\n onClick: this.togglePlaying\n },\n i18n.gpu.stop\n ),\n (0, _preact.h)(\n _common.Button,\n {\n title: i18n.gpu.busy,\n onClick: function onClick() {\n return _this2.interrupt();\n }\n },\n i18n.gpu.interrupt\n )\n );\n }\n }, {\n key: 'renderRecordButton',\n value: function renderRecordButton() {\n return null;\n // return (\n // \n // )\n }\n }, {\n key: 'renderLiveButtons',\n value: function renderLiveButtons() {\n var _this3 = this;\n\n var i18n = this.props.i18n;\n\n return (0, _preact.h)(\n 'div',\n null,\n (0, _preact.h)(\n _common.Button,\n {\n title: i18n.pix2pixhd.live.record.save_frame,\n onClick: _player.saveFrame\n },\n i18n.pix2pixhd.live.record.save\n ),\n (0, _preact.h)(\n _common.ParamGroup,\n {\n title: i18n.pix2pixhd.live.record.record_video,\n name: 'store_b',\n noDim: true,\n onToggle: function onToggle(value) {\n // now storing frames on server...\n }\n },\n (0, _preact.h)(_common.TextInput, {\n title: i18n.pix2pixhd.live.record.video_name,\n name: 'final_tag',\n value: this.props.opt.final_tag,\n onSave: function onSave(value) {\n _this3.props.actions.live.set_param('final_tag', value);\n }\n })\n )\n );\n }\n }]);\n\n return Pix2PixHDLive;\n}(_preact.Component);\n\nfunction timeInSeconds(n) {\n return n.toFixed(1) + ' s.';\n}\nvar mapStateToProps = function mapStateToProps(state) {\n return {\n last_message: state.live.last_message,\n fullscreen: state.live.fullscreen,\n opt: state.live.opt,\n frame: state.live.frame,\n checkpoints: state.live.checkpoints,\n epochs: state.live.epochs,\n sequences: state.live.sequences,\n runner: state.system.runner,\n i18n: state.system.i18n.strings,\n pix2pixhd: state.module.pix2pixhd\n };\n};\n\nvar mapDispatchToProps = function mapDispatchToProps(dispatch, ownProps) {\n return {\n actions: {\n live: (0, _redux.bindActionCreators)(liveActions, dispatch),\n queue: (0, _redux.bindActionCreators)(queueActions, dispatch),\n pix2pixhd: (0, _redux.bindActionCreators)(pix2pixhdActions, dispatch),\n tasks: (0, _redux.bindActionCreators)(pix2pixhdTasks, dispatch)\n }\n };\n};\n\nexports.default = (0, _reactRedux.connect)(mapStateToProps, mapDispatchToProps)(Pix2PixHDLive);","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _preact = require('preact');\n\nvar _redux = require('redux');\n\nvar _reactRedux = require('react-redux');\n\nvar _reactRouterDom = require('react-router-dom');\n\nvar _util = require('../../../util');\n\nvar _util2 = _interopRequireDefault(_util);\n\nvar _common = require('../../../common');\n\nvar _pix2pixhd = require('../pix2pixhd.actions');\n\nvar pix2pixhdActions = _interopRequireWildcard(_pix2pixhd);\n\nvar _pix2pixhd2 = require('../pix2pixhd.module');\n\nvar _pix2pixhd3 = _interopRequireDefault(_pix2pixhd2);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction Pix2PixHDNew(props) {\n return (0, _preact.h)(_common.Views.New, {\n db: props.pix2pixhd,\n path: '/pix2pixhd/sequences/',\n actions: props.actions,\n module: _pix2pixhd3.default,\n history: props.history\n });\n}\n\nvar mapStateToProps = function mapStateToProps(state) {\n return {\n pix2pixhd: state.module.pix2pixhd\n };\n};\n\nvar mapDispatchToProps = function mapDispatchToProps(dispatch, ownProps) {\n return {\n actions: (0, _redux.bindActionCreators)(pix2pixhdActions, dispatch)\n };\n};\n\nexports.default = (0, _reactRedux.connect)(mapStateToProps, mapDispatchToProps)(Pix2PixHDNew);","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _preact = require('preact');\n\nvar _redux = require('redux');\n\nvar _reactRouterDom = require('react-router-dom');\n\nvar _reactRedux = require('react-redux');\n\nvar _util = require('../../../util');\n\nvar _util2 = _interopRequireDefault(_util);\n\nvar _actions = require('../../../actions');\n\nvar _actions2 = _interopRequireDefault(_actions);\n\nvar _pix2pixhd = require('../pix2pixhd.actions');\n\nvar pix2pixhdActions = _interopRequireWildcard(_pix2pixhd);\n\nvar _pix2pixhd2 = require('../pix2pixhd.tasks');\n\nvar pix2pixhdTasks = _interopRequireWildcard(_pix2pixhd2);\n\nvar _loading = require('../../../common/loading.component');\n\nvar _loading2 = _interopRequireDefault(_loading);\n\nvar _fileList = require('../../../common/fileList.component');\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar yes_count = 0;\n\nvar Pix2pixHDResults = function (_Component) {\n _inherits(Pix2pixHDResults, _Component);\n\n function Pix2pixHDResults(props) {\n _classCallCheck(this, Pix2pixHDResults);\n\n var _this = _possibleConstructorReturn(this, (Pix2pixHDResults.__proto__ || Object.getPrototypeOf(Pix2pixHDResults)).call(this));\n\n if (!props.pix2pixhd.results) props.actions.load_results();\n return _this;\n }\n\n _createClass(Pix2pixHDResults, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n yes_count = 0;\n }\n }, {\n key: 'render',\n value: function render() {\n var _this2 = this;\n\n if (!this.props.pix2pixhd.results) return (0, _preact.h)(_loading2.default, { progress: this.props.pix2pixhd.progress });\n\n var _props$pix2pixhd$resu = this.props.pix2pixhd.results,\n resultsFolder = _props$pix2pixhd$resu.resultsFolder,\n results = _props$pix2pixhd$resu.results,\n renders = _props$pix2pixhd$resu.renders,\n files = _props$pix2pixhd$resu.files;\n // console.log(resultsFolder, results)\n\n return (0, _preact.h)(\n 'div',\n { className: 'app pix2pixhd' },\n (0, _preact.h)(\n 'div',\n { className: 'heading row middle' },\n (0, _preact.h)(\n 'h1',\n null,\n 'Pix2PixHD Results'\n )\n ),\n (0, _preact.h)(\n 'div',\n { 'class': 'rows params renders' },\n (0, _preact.h)(_fileList.FileList, {\n linkFiles: true,\n files: files,\n orderBy: 'date desc',\n fields: 'name date size delete',\n onDelete: function onDelete(file) {\n var yes = void 0;\n if (yes_count < 3) {\n yes = confirm('Are you sure you want to delete this file?');\n } else {\n yes = true;\n }\n if (yes) {\n yes_count += 1;\n console.log('delete: confirmed');\n _actions2.default.file.destroy(file);\n }\n }\n }),\n (0, _preact.h)('br', null),\n (0, _preact.h)(\n 'h3',\n null,\n 'renders on server'\n ),\n (0, _preact.h)(_fileList.FileList, {\n files: renders,\n orderBy: 'date desc',\n fields: 'name date size',\n onClick: function onClick(file, e) {\n e.preventDefault();\n e.stopPropagation();\n console.log('picked a result', file);\n _this2.handlePick(file);\n }\n }),\n (0, _preact.h)('br', null),\n (0, _preact.h)(\n 'h3',\n null,\n 'folders on server'\n ),\n (0, _preact.h)(_fileList.FileList, {\n files: results,\n orderBy: 'date desc',\n fields: 'name date count',\n onClick: function onClick(file, e) {\n e.preventDefault();\n e.stopPropagation();\n console.log('picked a result', file);\n _this2.handlePick(file);\n }\n })\n )\n );\n }\n }, {\n key: 'handlePick',\n value: function handlePick(file) {\n // this.props.audioPlayer.play(file)\n }\n }]);\n\n return Pix2pixHDResults;\n}(_preact.Component);\n\nvar mapStateToProps = function mapStateToProps(state) {\n return {\n pix2pixhd: state.module.pix2pixhd\n };\n};\n\nvar mapDispatchToProps = function mapDispatchToProps(dispatch, ownProps) {\n return {\n actions: (0, _redux.bindActionCreators)(pix2pixhdActions, dispatch),\n remote: (0, _redux.bindActionCreators)(pix2pixhdTasks, dispatch)\n // audioPlayer: bindActionCreators(audioPlayerActions, dispatch),\n };\n};\n\nexports.default = (0, _reactRedux.connect)(mapStateToProps, mapDispatchToProps)(Pix2pixHDResults);","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _preact = require('preact');\n\nvar _redux = require('redux');\n\nvar _reactRedux = require('react-redux');\n\nvar _util = require('../../../util');\n\nvar _util2 = _interopRequireDefault(_util);\n\nvar _pix2pixhd = require('../pix2pixhd.actions');\n\nvar pix2pixhdActions = _interopRequireWildcard(_pix2pixhd);\n\nvar _pix2pixhd2 = require('../pix2pixhd.tasks');\n\nvar pix2pixhdTasks = _interopRequireWildcard(_pix2pixhd2);\n\nvar _common = require('../../../common');\n\nvar _dataset = require('../../../dataset/dataset.form');\n\nvar _dataset2 = _interopRequireDefault(_dataset);\n\nvar _dataset3 = require('../../../dataset/dataset.new');\n\nvar _dataset4 = _interopRequireDefault(_dataset3);\n\nvar _upload = require('../../../dataset/upload.status');\n\nvar _upload2 = _interopRequireDefault(_upload);\n\nvar _dataset5 = require('../../../dataset/dataset.component');\n\nvar _dataset6 = _interopRequireDefault(_dataset5);\n\nvar _pix2pixhd3 = require('../pix2pixhd.module');\n\nvar _pix2pixhd4 = _interopRequireDefault(_pix2pixhd3);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Pix2PixHDShow = function (_Component) {\n _inherits(Pix2PixHDShow, _Component);\n\n function Pix2PixHDShow(props) {\n _classCallCheck(this, Pix2PixHDShow);\n\n var _this = _possibleConstructorReturn(this, (Pix2PixHDShow.__proto__ || Object.getPrototypeOf(Pix2PixHDShow)).call(this, props));\n\n _this.datasetActions = _this.datasetActions.bind(_this);\n return _this;\n }\n\n _createClass(Pix2PixHDShow, [{\n key: 'componentWillMount',\n value: function componentWillMount() {\n var id = this.props.match.params.id || localStorage.getItem('pix2pixhd.last_id');\n console.log('load dataset:', id);\n var _props = this.props,\n match = _props.match,\n pix2pixhd = _props.pix2pixhd,\n actions = _props.actions;\n\n if (id === 'new') return;\n if (id) {\n if (parseInt(id)) localStorage.setItem('pix2pixhd.last_id', id);\n if (!pix2pixhd.folder || pix2pixhd.folder.id !== id) {\n actions.load_directories(id);\n }\n } else {\n this.props.history.push('/pix2pixhd/new/');\n }\n }\n }, {\n key: 'render',\n value: function render() {\n var _props2 = this.props,\n pix2pixhd = _props2.pix2pixhd,\n match = _props2.match,\n history = _props2.history;\n\n var _ref = pix2pixhd.data || {},\n folderLookup = _ref.folderLookup;\n\n var folder = (folderLookup || {})[pix2pixhd.folder_id] || {};\n\n return (0, _preact.h)(\n 'div',\n { className: 'app pix2pixhd' },\n (0, _preact.h)(\n 'div',\n { 'class': 'heading' },\n (0, _preact.h)(\n 'div',\n { 'class': 'spaced' },\n (0, _preact.h)(\n 'h1',\n null,\n folder ? folder.name : (0, _preact.h)(_common.Loading, null)\n ),\n (0, _preact.h)(_upload2.default, null)\n )\n ),\n (0, _preact.h)(\n 'div',\n { className: 'row' },\n folder && folder.name && folder.name !== 'unsorted' && (0, _preact.h)(_dataset2.default, {\n title: 'Add Files',\n module: _pix2pixhd4.default,\n folder: folder,\n canUpload: true, canAddURL: true\n }),\n (0, _preact.h)(\n 'div',\n null,\n (0, _preact.h)(_upload2.default, null),\n (0, _preact.h)(_common.CurrentTask, null)\n )\n ),\n (0, _preact.h)(_dataset6.default, {\n loading: pix2pixhd.loading,\n progress: pix2pixhd.progress,\n id: pix2pixhd.folder_id,\n module: _pix2pixhd4.default,\n data: pix2pixhd.data,\n folder: folder,\n history: history,\n onPickFile: function onPickFile(file, e) {\n e.preventDefault();\n e.stopPropagation();\n console.log('picked a file', file);\n },\n datasetActions: this.datasetActions\n })\n );\n }\n }, {\n key: 'datasetActions',\n value: function datasetActions(dataset) {\n var isFetching = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var isProcessing = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n var _props3 = this.props,\n pix2pixhd = _props3.pix2pixhd,\n remote = _props3.remote;\n\n var input = pix2pixhd.data.fileLookup[dataset.input[0]];\n if (!input) return null;\n if (input.name && input.name.match(/(gif|jpe?g|png)$/i)) return null;\n return (0, _preact.h)(\n 'div',\n null,\n (0, _preact.h)(\n 'div',\n { 'class': 'actions' },\n (0, _preact.h)(\n 'span',\n { 'class': 'link', onClick: function onClick() {\n return remote.train_task(dataset, pix2pixhd.folder_id, 1);\n } },\n 'train'\n ),\n (0, _preact.h)(\n 'span',\n { 'class': 'link', onClick: function onClick() {\n return remote.train_task(dataset, pix2pixhd.folder_id, 5);\n } },\n '5x'\n ),\n (0, _preact.h)(\n 'span',\n { 'class': 'link', onClick: function onClick() {\n return remote.train_task(dataset, pix2pixhd.folder_id, 10);\n } },\n '10x'\n ),\n (0, _preact.h)(\n 'span',\n { 'class': 'link', onClick: function onClick() {\n return remote.train_task(dataset, pix2pixhd.folder_id, 20);\n } },\n '20x'\n ),\n (0, _preact.h)(\n 'span',\n { 'class': 'link', onClick: function onClick() {\n return remote.train_task(dataset, pix2pixhd.folder_id, 50);\n } },\n '50x'\n )\n ),\n dataset.isBuilt ? (0, _preact.h)(\n 'div',\n { 'class': 'subtext' },\n 'fetched ',\n (0, _preact.h)(\n 'span',\n { 'class': 'link', onClick: function onClick() {\n return remote.clear_cache_task(dataset);\n } },\n 'rm'\n )\n ) : isFetching ? (0, _preact.h)(\n 'div',\n { 'class': 'subtext' },\n 'fetching'\n ) : (0, _preact.h)(\n 'div',\n { 'class': 'subtext' },\n (0, _preact.h)(\n 'span',\n { 'class': 'link', onClick: function onClick() {\n return remote.fetch_task(input.url, input.id, dataset.name);\n } },\n 'fetch'\n )\n )\n );\n }\n }]);\n\n return Pix2PixHDShow;\n}(_preact.Component);\n\nvar mapStateToProps = function mapStateToProps(state) {\n return {\n pix2pixhd: state.module.pix2pixhd\n };\n};\n\nvar mapDispatchToProps = function mapDispatchToProps(dispatch, ownProps) {\n return {\n actions: (0, _redux.bindActionCreators)(pix2pixhdActions, dispatch),\n remote: (0, _redux.bindActionCreators)(pix2pixhdTasks, dispatch)\n };\n};\n\nexports.default = (0, _reactRedux.connect)(mapStateToProps, mapDispatchToProps)(Pix2PixHDShow);","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _preact = require('preact');\n\nvar _redux = require('redux');\n\nvar _reactRedux = require('react-redux');\n\nvar _util = require('../../../util');\n\nvar _util2 = _interopRequireDefault(_util);\n\nvar _pix2pixhd = require('../pix2pixhd.actions');\n\nvar pix2pixhdActions = _interopRequireWildcard(_pix2pixhd);\n\nvar _pix2pixhd2 = require('../pix2pixhd.tasks');\n\nvar pix2pixhdTasks = _interopRequireWildcard(_pix2pixhd2);\n\nvar _common = require('../../../common');\n\nvar _dataset = require('../../../dataset/dataset.form');\n\nvar _dataset2 = _interopRequireDefault(_dataset);\n\nvar _dataset3 = require('../../../dataset/dataset.new');\n\nvar _dataset4 = _interopRequireDefault(_dataset3);\n\nvar _upload = require('../../../dataset/upload.status');\n\nvar _upload2 = _interopRequireDefault(_upload);\n\nvar _dataset5 = require('../../../dataset/dataset.component');\n\nvar _dataset6 = _interopRequireDefault(_dataset5);\n\nvar _sequence = require('./sequence.editor');\n\nvar _sequence2 = _interopRequireDefault(_sequence);\n\nvar _pix2pixhd3 = require('../pix2pixhd.module');\n\nvar _pix2pixhd4 = _interopRequireDefault(_pix2pixhd3);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Pix2PixHDTrain = function (_Component) {\n _inherits(Pix2PixHDTrain, _Component);\n\n function Pix2PixHDTrain(props) {\n _classCallCheck(this, Pix2PixHDTrain);\n\n var _this = _possibleConstructorReturn(this, (Pix2PixHDTrain.__proto__ || Object.getPrototypeOf(Pix2PixHDTrain)).call(this, props));\n\n _this.state = {\n dataset: 'PLACEHOLDER',\n epoch: 'latest',\n augment_name: '',\n augment_take: 100,\n augment_make: 20,\n processed: false\n };\n\n _this.handleChange = _this.handleChange.bind(_this);\n return _this;\n }\n\n _createClass(Pix2PixHDTrain, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n var id = this.props.match.params.id || localStorage.getItem('pix2pixhd.last_id');\n var dataset = localStorage.getItem('pix2pixhd.last_dataset');\n console.log('load dataset:', id, dataset);\n var _props = this.props,\n match = _props.match,\n pix2pixhd = _props.pix2pixhd,\n actions = _props.actions;\n\n if (id === 'new') return;\n if (id) {\n if (parseInt(id)) localStorage.setItem('pix2pixhd.last_id', id);\n if (!pix2pixhd.folder || pix2pixhd.folder.id !== id) {\n actions.load_directories(id);\n }\n } else {\n this.props.history.push('/pix2pixhd/new/');\n }\n if (dataset) {\n this.setState({ dataset: dataset });\n }\n }\n }, {\n key: 'componentDidUpdate',\n value: function componentDidUpdate(prevProps, prevState) {\n var _this2 = this;\n\n if (!prevProps.pix2pixhd.data && this.props.pix2pixhd.data || prevProps.pix2pixhd.data && prevState.dataset !== this.state.dataset) {\n var dataset = this.props.pix2pixhd.data.datasetLookup[this.state.dataset];\n if (dataset) {\n var processed = dataset.input.map(function (f) {\n return _this2.props.pix2pixhd.data.fileLookup[f];\n }).reduce(function (a, b) {\n console.log(b);\n return b.processed || a;\n }, false);\n console.log(dataset.input, processed);\n dataset.processed = processed;\n this.setState({ processed: processed });\n }\n }\n if (prevState.dataset !== this.state.dataset) {\n localStorage.setItem('pix2pixhd.last_dataset', this.state.dataset);\n this.setState({\n epoch: 'latest'\n });\n this.props.actions.list_epochs(this.state.dataset);\n this.props.actions.count_dataset(this.state.dataset);\n }\n }\n }, {\n key: 'handleChange',\n value: function handleChange(name, value) {\n console.log('name', name, 'value', value);\n this.setState(_defineProperty({}, name, value));\n }\n }, {\n key: 'interrupt',\n value: function interrupt() {\n this.props.actions.queue.stop_task('gpu');\n }\n }, {\n key: 'render',\n value: function render() {\n var _this3 = this;\n\n if (this.props.pix2pixhd.loading) {\n return (0, _preact.h)(_common.Loading, { progress: this.props.pix2pixhd.progress });\n }\n var _props2 = this.props,\n pix2pixhd = _props2.pix2pixhd,\n match = _props2.match,\n history = _props2.history;\n\n var _ref = pix2pixhd.data || {},\n folderLookup = _ref.folderLookup,\n datasetLookup = _ref.datasetLookup;\n\n var folder = (folderLookup || {})[pix2pixhd.folder_id] || {};\n var checkpoint = pix2pixhd.checkpoint;\n // console.log(pix2pixhd)\n\n var sequenceGroups = Object.keys(folderLookup).map(function (id) {\n var folder = _this3.props.pix2pixhd.data.folderLookup[id];\n if (folder.name === 'results') return;\n var datasets = folder.datasets.map(function (name) {\n var dataset = datasetLookup[name];\n // console.log(folder)\n if (dataset.isBuilt) {\n // && dataset.checkpoints.length\n return name;\n }\n return null;\n }).filter(function (n) {\n return !!n;\n });\n return {\n name: folder.name,\n options: datasets.sort()\n };\n }).filter(function (n) {\n return !!n && !!n.options.length;\n }).sort(function (a, b) {\n return a.name.localeCompare(b.name);\n });\n\n var epochs = this.props.pix2pixhd.epochs;\n if (!epochs || !epochs.length) epochs = [\"latest\"];\n // console.log('state', this.props.pix2pixhd.data.epochs)\n // console.log(this.state.dataset, this.state.epoch)\n // console.log(queue)\n return (0, _preact.h)(\n 'div',\n { className: 'app pix2pixhd' },\n (0, _preact.h)(\n 'div',\n { className: 'heading' },\n (0, _preact.h)(\n 'h1',\n null,\n 'pix2pixhd training'\n )\n ),\n (0, _preact.h)(\n 'div',\n { className: 'columns' },\n (0, _preact.h)(\n 'div',\n { className: 'column' },\n (0, _preact.h)(\n _common.Group,\n { title: 'Sequence' },\n (0, _preact.h)(_common.SelectGroup, {\n name: 'dataset',\n title: 'Sequence name',\n options: sequenceGroups,\n onChange: this.handleChange,\n placeholder: 'Pick a dataset',\n value: this.state.dataset\n }),\n (0, _preact.h)(_common.Select, {\n title: 'Epoch',\n name: 'epoch',\n options: epochs,\n onChange: this.handleChange,\n value: this.state.epoch\n })\n )\n )\n ),\n checkpoint && checkpoint.sequence && checkpoint.sequence.length ? this.renderEditor() : checkpoint && (0, _preact.h)(\n 'div',\n null,\n 'Sequence empty, augmentation impossible'\n )\n );\n }\n }, {\n key: 'renderEditor',\n value: function renderEditor() {\n var _this4 = this;\n\n var _props3 = this.props,\n pix2pixhd = _props3.pix2pixhd,\n queue = _props3.queue,\n remote = _props3.remote;\n var _state = this.state,\n dataset = _state.dataset,\n processed = _state.processed;\n var checkpoint = pix2pixhd.checkpoint,\n folder_id = pix2pixhd.folder_id;\n\n\n var currentDataset = this.props.pix2pixhd.data.datasetLookup[this.state.dataset];\n if (currentDataset && currentDataset.folder_id) {\n folder_id = currentDataset.folder_id || folder_id;\n console.log(\"dataset folder id\", folder_id);\n // const processed = currentDataset.input\n // .map(f => this.props.pix2pixhd.data.fileLookup[f])\n // .reduce((a, b) => {\n // console.log(b)\n // return b.processed || a\n // }, false)\n // console.log(\"is processed?\", processed)\n }\n console.log(currentDataset);\n console.log(\"so folder id is..\", folder_id);\n\n return (0, _preact.h)(\n 'div',\n null,\n (0, _preact.h)(\n _common.Group,\n { title: 'Sequence Editor' },\n (0, _preact.h)(_sequence2.default, {\n folder_id: folder_id,\n module: _pix2pixhd4.default,\n checkpoint: checkpoint,\n processed: processed\n })\n ),\n (0, _preact.h)(\n 'div',\n { className: 'columns' },\n (0, _preact.h)(\n 'div',\n { className: 'column' },\n (0, _preact.h)(\n _common.Group,\n { title: 'Augmentation Grid' },\n (0, _preact.h)(_common.AugmentationGrid, {\n checkpoint: checkpoint,\n take: [1, 2, 3, 4, 5, 10, 15, 20, 25, 50, 75, 100, 200, 300, 400, 500, 1000],\n make: [1, 2, 3, 4, 5, 10, 15, 20, 25, 50, 75, 100, 200],\n onAugment: function onAugment(augment_take, augment_make) {\n remote.augment_task(dataset, _extends({}, _this4.state, {\n augment_take: augment_take,\n augment_make: augment_make\n }));\n },\n onTrain: function onTrain() {\n remote.train_task(dataset, folder_id, 1);\n setTimeout(function () {\n // auto-generate epoch demo\n remote.augment_task(dataset, _extends({}, _this4.state, {\n augment_take: 10,\n augment_make: 149,\n no_symlinks: true,\n mov: true,\n folder_id: pix2pixhd.data.resultsFolder.id\n }));\n }, 250);\n }\n })\n ),\n (0, _preact.h)(\n _common.Group,\n { title: 'Augment' },\n (0, _preact.h)(_common.NumberInput, {\n name: 'augment_take',\n title: 'Pick N random frames',\n value: this.state.augment_take,\n onChange: this.handleChange,\n type: 'int',\n min: '1',\n max: '1000'\n }),\n (0, _preact.h)(_common.NumberInput, {\n name: 'augment_make',\n title: 'Generate N recursively',\n value: this.state.augment_make,\n onChange: this.handleChange,\n type: 'int',\n min: '1',\n max: '1000'\n }),\n (0, _preact.h)(_common.Button, {\n title: 'Augment dataset',\n value: 'Augment',\n onClick: function onClick() {\n return _this4.props.remote.augment_task(dataset, _this4.state);\n }\n }),\n (0, _preact.h)(_common.Button, {\n title: 'Make a movie without augmenting',\n value: 'Generate',\n onClick: function onClick() {\n _this4.props.remote.augment_task(dataset, _extends({}, _this4.state, {\n no_symlinks: true,\n mov: true,\n folder_id: pix2pixhd.data.resultsFolder.id\n }));\n }\n })\n ),\n (0, _preact.h)(\n _common.Group,\n { title: 'Status' },\n (0, _preact.h)(_common.Button, {\n title: 'GPU',\n value: this.props.runner.gpu.status === 'IDLE' ? \"Idle\" : \"Interrupt\",\n onClick: function onClick() {\n return _this4.interrupt();\n }\n }),\n (0, _preact.h)(_common.CurrentTask, null)\n )\n ),\n (0, _preact.h)(\n 'div',\n { className: 'column' },\n (0, _preact.h)(\n _common.Group,\n { title: 'Upcoming Tasks' },\n (0, _preact.h)(_common.TaskList, { tasks: queue.queue.map(function (id) {\n return queue.tasks[id];\n }), sort: 'date asc' })\n )\n )\n )\n );\n }\n }]);\n\n return Pix2PixHDTrain;\n}(_preact.Component);\n\nvar mapStateToProps = function mapStateToProps(state) {\n return {\n pix2pixhd: state.module.pix2pixhd,\n runner: state.system.runner,\n queue: state.queue\n };\n};\n\nvar mapDispatchToProps = function mapDispatchToProps(dispatch, ownProps) {\n return {\n actions: (0, _redux.bindActionCreators)(pix2pixhdActions, dispatch),\n remote: (0, _redux.bindActionCreators)(pix2pixhdTasks, dispatch)\n };\n};\n\nexports.default = (0, _reactRedux.connect)(mapStateToProps, mapDispatchToProps)(Pix2PixHDTrain);","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _preact = require('preact');\n\nvar _redux = require('redux');\n\nvar _reactRouterDom = require('react-router-dom');\n\nvar _reactRedux = require('react-redux');\n\nvar _util = require('../../../util');\n\nvar _util2 = _interopRequireDefault(_util);\n\nvar _actions = require('../../../actions');\n\nvar _actions2 = _interopRequireDefault(_actions);\n\nvar _pix2pixhd = require('../pix2pixhd.actions');\n\nvar pix2pixhdActions = _interopRequireWildcard(_pix2pixhd);\n\nvar _pix2pixhd2 = require('../pix2pixhd.tasks');\n\nvar pix2pixhdTasks = _interopRequireWildcard(_pix2pixhd2);\n\nvar _loading = require('../../../common/loading.component');\n\nvar _loading2 = _interopRequireDefault(_loading);\n\nvar _fileList = require('../../../common/fileList.component');\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar yes_count = 0;\n\nvar Pix2pixHDUprez = function (_Component) {\n _inherits(Pix2pixHDUprez, _Component);\n\n function Pix2pixHDUprez(props) {\n _classCallCheck(this, Pix2pixHDUprez);\n\n var _this = _possibleConstructorReturn(this, (Pix2pixHDUprez.__proto__ || Object.getPrototypeOf(Pix2pixHDUprez)).call(this));\n\n if (!props.pix2pixhd.uprez) props.actions.load_uprez();\n return _this;\n }\n\n _createClass(Pix2pixHDUprez, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n yes_count = 0;\n }\n }, {\n key: 'render',\n value: function render() {\n var _this2 = this;\n\n if (!this.props.pix2pixhd.uprez) return (0, _preact.h)(_loading2.default, { progress: this.props.pix2pixhd.progress });\n\n var _props$pix2pixhd$upre = this.props.pix2pixhd.uprez,\n resultsFolder = _props$pix2pixhd$upre.resultsFolder,\n results = _props$pix2pixhd$upre.results,\n renders = _props$pix2pixhd$upre.renders,\n files = _props$pix2pixhd$upre.files;\n // console.log(resultsFolder, results)\n\n return (0, _preact.h)(\n 'div',\n { className: 'app pix2pixhd' },\n (0, _preact.h)(\n 'div',\n { className: 'heading row middle' },\n (0, _preact.h)(\n 'h1',\n null,\n 'Pix2PixHD Uprez'\n )\n ),\n (0, _preact.h)(\n 'div',\n { 'class': 'rows params renders' },\n (0, _preact.h)(\n 'h3',\n null,\n 'folders on server'\n ),\n (0, _preact.h)(_fileList.FileList, {\n files: results,\n orderBy: 'date desc',\n fields: 'name date count',\n onClick: function onClick(file, e) {\n e.preventDefault();\n e.stopPropagation();\n console.log('picked a result', file);\n _this2.handlePick(file);\n },\n options: function options(file) {\n console.log(file);\n // create uprez task\n return (0, _preact.h)(\n 'div',\n null,\n ' ~ ',\n (0, _preact.h)(\n 'a',\n { href: '#', onClick: function onClick() {\n return _this2.handleUprez(file, { end: 250 });\n } },\n 'Uprez 10 seconds'\n ),\n ' ~ ',\n (0, _preact.h)(\n 'a',\n { href: '#', onClick: function onClick() {\n return _this2.handleUprez(file, { end: 1500 });\n } },\n 'Uprez 1 minute'\n ),\n ' ~ ',\n (0, _preact.h)(\n 'a',\n { href: '#', onClick: function onClick() {\n return _this2.handleUprez(file);\n } },\n 'Uprez whole thing'\n )\n );\n }\n }),\n (0, _preact.h)('br', null),\n (0, _preact.h)(\n 'h3',\n null,\n 'uprezzed videos'\n ),\n (0, _preact.h)(_fileList.FileList, {\n linkFiles: true,\n files: files,\n orderBy: 'date desc',\n fields: 'name date size delete',\n onDelete: function onDelete(file) {\n var yes = void 0;\n if (yes_count < 3) {\n yes = confirm('Are you sure you want to delete this file?');\n } else {\n yes = true;\n }\n if (yes) {\n yes_count += 1;\n console.log('delete: confirmed');\n _actions2.default.file.destroy(file);\n }\n }\n })\n )\n );\n }\n }, {\n key: 'handlePick',\n value: function handlePick(file) {\n // this.props.audioPlayer.play(file)\n }\n }, {\n key: 'handleUprez',\n value: function handleUprez(file, opt) {\n console.log(file);\n this.props.remote.uprez_task(_extends({\n is_result: true,\n dataset: file.name,\n folder_id: 1\n }, opt));\n }\n }]);\n\n return Pix2pixHDUprez;\n}(_preact.Component);\n\nvar mapStateToProps = function mapStateToProps(state) {\n return {\n pix2pixhd: state.module.pix2pixhd\n };\n};\n\nvar mapDispatchToProps = function mapDispatchToProps(dispatch, ownProps) {\n return {\n actions: (0, _redux.bindActionCreators)(pix2pixhdActions, dispatch),\n remote: (0, _redux.bindActionCreators)(pix2pixhdTasks, dispatch)\n // audioPlayer: bindActionCreators(audioPlayerActions, dispatch),\n };\n};\n\nexports.default = (0, _reactRedux.connect)(mapStateToProps, mapDispatchToProps)(Pix2pixHDUprez);","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _preact = require('preact');\n\nvar _redux = require('redux');\n\nvar _reactRedux = require('react-redux');\n\nvar _reactRouterDom = require('react-router-dom');\n\nvar _moment = require('moment/min/moment.min');\n\nvar _moment2 = _interopRequireDefault(_moment);\n\nvar _util = require('../../../util');\n\nvar _util2 = _interopRequireDefault(_util);\n\nvar _common = require('../../../common');\n\nvar _pix2pixhd = require('../pix2pixhd.tasks');\n\nvar pix2pixhdTasks = _interopRequireWildcard(_pix2pixhd);\n\nvar _actions = require('../../../actions');\n\nvar _actions2 = _interopRequireDefault(_actions);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar initialState = {\n dir: '/',\n cursor: null,\n selection: null,\n title: null\n};\n\nvar SequenceEditor = function (_Component) {\n _inherits(SequenceEditor, _Component);\n\n function SequenceEditor() {\n _classCallCheck(this, SequenceEditor);\n\n var _this = _possibleConstructorReturn(this, (SequenceEditor.__proto__ || Object.getPrototypeOf(SequenceEditor)).call(this));\n\n _this.state = _extends({}, initialState);\n\n _this.handleCursor = _this.handleCursor.bind(_this);\n _this.handleSelect = _this.handleSelect.bind(_this);\n return _this;\n }\n\n _createClass(SequenceEditor, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n var checkpoint = this.props.checkpoint;\n\n if (checkpoint) {\n this.reset();\n }\n }\n }, {\n key: 'componentDidUpdate',\n value: function componentDidUpdate(prevProps) {\n var checkpoint = this.props.checkpoint;\n\n if (checkpoint !== prevProps.checkpoint) {\n this.reset();\n }\n }\n }, {\n key: 'reset',\n value: function reset() {\n var checkpoint = this.props.checkpoint;\n\n if (!(checkpoint && checkpoint.sequence)) return;\n // console.log(checkpoint)\n this.setState(_extends({}, initialState, {\n title: checkpoint.name + '_' + (0, _moment2.default)().format(\"YYYYMMDD\")\n }));\n }\n }, {\n key: 'handleCursor',\n value: function handleCursor(cursor) {\n this.setState({ cursor: cursor });\n }\n }, {\n key: 'handleSelect',\n value: function handleSelect(selection) {\n this.setState({ selection: selection });\n }\n }, {\n key: 'render',\n value: function render() {\n var _this2 = this;\n\n var _props = this.props,\n app = _props.app,\n pix2pixhd = _props.pix2pixhd,\n remote = _props.remote,\n checkpoint = _props.checkpoint,\n folder_id = _props.folder_id,\n processed = _props.processed;\n var _state = this.state,\n cursor = _state.cursor,\n selection = _state.selection,\n title = _state.title;\n\n var path = \"sequences/\" + checkpoint.name;\n // console.log(checkpoint, pix2pixhd)\n return (0, _preact.h)(\n 'div',\n { className: 'sequenceEditor row' },\n selection ? (0, _preact.h)(\n 'div',\n { className: 'form' },\n (0, _preact.h)(\n _common.Param,\n { title: 'Selection length' },\n selection.end.i - selection.start.i,\n ' frames'\n ),\n (0, _preact.h)(\n _common.Param,\n { title: 'Duration' },\n _util2.default.frameTimestamp(selection.end.i - selection.start.i)\n ),\n (0, _preact.h)(\n _common.Group,\n { title: 'New dataset' },\n (0, _preact.h)(_common.TextInput, {\n title: 'Title dataset',\n value: title,\n onInput: function onInput(title) {\n return _this2.setState({ title: title.replace(/ /g, '_').replace(/\\/\\./g, '').toLowerCase() });\n }\n }),\n (0, _preact.h)(\n _common.Button,\n {\n title: 'Create a new dataset?',\n onClick: function onClick() {\n return remote.splice_task({ title: title, sequence: checkpoint.name, selection: selection, folder_id: folder_id });\n }\n },\n 'Create'\n )\n )\n ) : (0, _preact.h)(\n 'div',\n { className: 'form' },\n (0, _preact.h)(\n _common.Group,\n { title: 'New dataset' },\n 'Please select some frames'\n )\n ),\n (0, _preact.h)(\n 'div',\n { className: 'rows' },\n (0, _preact.h)(\n 'div',\n { className: 'row' },\n (0, _preact.h)(Frame, { label: 'Cursor', path: path, frame: cursor }),\n selection && selection.start && (0, _preact.h)(Frame, { label: 'Selection Start', path: path, frame: selection.start }),\n selection && selection.end && (0, _preact.h)(Frame, { label: 'Selection End', path: path, frame: selection.end })\n ),\n (0, _preact.h)(_common.Timeline, {\n sequence: checkpoint.sequence,\n onCursor: this.handleCursor,\n onSelect: this.handleSelect\n })\n )\n );\n }\n }]);\n\n return SequenceEditor;\n}(_preact.Component);\n\nfunction Frame(_ref) {\n var label = _ref.label,\n path = _ref.path,\n frame = _ref.frame;\n\n if (!frame) return (0, _preact.h)('div', { 'class': 'frame' });\n return (0, _preact.h)(\n 'div',\n { 'class': 'frame' },\n (0, _preact.h)(_common.FileViewer, { thumbnail: 140, path: path, file: frame.frame }),\n (0, _preact.h)(\n 'div',\n { 'class': 'spaced' },\n (0, _preact.h)(\n 'span',\n null,\n label\n ),\n (0, _preact.h)(\n 'span',\n null,\n '#',\n frame.i,\n ' ',\n _util2.default.frameTimestamp(frame.i)\n )\n )\n );\n}\n\nvar mapStateToProps = function mapStateToProps(state) {\n return {\n app: state.system.app,\n pix2pixhd: state.module.pix2pixhd\n };\n};\n\nvar mapDispatchToProps = function mapDispatchToProps(dispatch, ownProps) {\n return {\n remote: (0, _redux.bindActionCreators)(pix2pixhdTasks, dispatch)\n };\n};\n\nexports.default = (0, _reactRedux.connect)(mapStateToProps, mapDispatchToProps)(SequenceEditor);","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _preact = require('preact');\n\nvar _reactRouterDom = require('react-router-dom');\n\nvar _actions = require('../../actions');\n\nvar _actions2 = _interopRequireDefault(_actions);\n\nvar _util = require('../../util');\n\nvar _util2 = _interopRequireDefault(_util);\n\nvar _pix2wav = require('./views/pix2wav.new');\n\nvar _pix2wav2 = _interopRequireDefault(_pix2wav);\n\nvar _pix2wav3 = require('./views/pix2wav.show');\n\nvar _pix2wav4 = _interopRequireDefault(_pix2wav3);\n\nvar _pix2wav5 = require('./views/pix2wav.live');\n\nvar _pix2wav6 = _interopRequireDefault(_pix2wav5);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar router = function () {\n function router() {\n _classCallCheck(this, router);\n }\n\n _createClass(router, [{\n key: 'componentWillMount',\n value: function componentWillMount() {\n _actions2.default.system.changeTool('pix2wav');\n document.body.style.backgroundImage = 'linear-gradient(' + (_util2.default.randint(40) + 40) + 'deg, #bdf, #def)';\n }\n }, {\n key: 'componentWillReceiveProps',\n value: function componentWillReceiveProps() {\n _actions2.default.system.changeTool('pix2wav');\n document.body.style.backgroundImage = 'linear-gradient(' + (_util2.default.randint(40) + 40) + 'deg, #bdf, #def)';\n }\n }, {\n key: 'render',\n value: function render() {\n return (0, _preact.h)(\n 'section',\n null,\n (0, _preact.h)(_reactRouterDom.Route, { exact: true, path: '/pix2wav/new/', component: _pix2wav2.default }),\n (0, _preact.h)(_reactRouterDom.Route, { exact: true, path: '/pix2wav/datasets/', component: _pix2wav4.default }),\n (0, _preact.h)(_reactRouterDom.Route, { exact: true, path: '/pix2wav/datasets/:id/', component: _pix2wav4.default }),\n (0, _preact.h)(_reactRouterDom.Route, { exact: true, path: '/pix2wav/live/', component: _pix2wav6.default })\n );\n }\n }]);\n\n return router;\n}();\n\nfunction links() {\n return [{ url: '/pix2wav/new/', name: 'new' }, { url: '/pix2wav/datasets/', name: 'datasets' }, { url: '/pix2wav/live/', name: 'live' }];\n}\n\nexports.default = {\n name: 'pix2wav',\n router: router, links: links\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.load_directories = undefined;\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _v = require('uuid/v1');\n\nvar _v2 = _interopRequireDefault(_v);\n\nvar _socket = require('../../socket');\n\nvar _socket2 = _interopRequireDefault(_socket);\n\nvar _types = require('../../types');\n\nvar _types2 = _interopRequireDefault(_types);\n\nvar _dataset = require('../../dataset/dataset.loader');\n\nvar datasetLoader = _interopRequireWildcard(_dataset);\n\nvar _actions = require('../../actions');\n\nvar _actions2 = _interopRequireDefault(_actions);\n\nvar _util = require('../../util');\n\nvar _util2 = _interopRequireDefault(_util);\n\nvar _pix2wav = require('./pix2wav.module');\n\nvar _pix2wav2 = _interopRequireDefault(_pix2wav);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar load_directories = exports.load_directories = function load_directories(id) {\n return function (dispatch) {\n var module = _pix2wav2.default.name;\n _util2.default.allProgress([datasetLoader.load(module), _actions2.default.socket.list_directory({ module: 'pix2pix', dir: 'sequences/pix2wav/' }), _actions2.default.socket.list_directory({ module: 'pix2pix', dir: 'datasets/pix2wav/' }), _actions2.default.socket.list_directory({ module: 'pix2pix', dir: 'checkpoints/pix2wav/' }), _actions2.default.socket.list_directory({ module: 'pix2pix', dir: 'checkpoints/pix2pix/' })], function (percent, i, n) {\n console.log('progress', i, n);\n dispatch({ type: _types2.default.app.load_progress, progress: { i: i, n: n } });\n }).then(function (res) {\n var _res = _slicedToArray(res, 5),\n datasetApiReport = _res[0],\n sequences = _res[1],\n datasets = _res[2],\n checkpoints = _res[3],\n pix2pixCheckpoints = _res[4];\n\n var folderLookup = datasetApiReport.folderLookup,\n fileLookup = datasetApiReport.fileLookup,\n datasetLookup = datasetApiReport.datasetLookup,\n folders = datasetApiReport.folders,\n files = datasetApiReport.files,\n unsortedFolder = datasetApiReport.unsortedFolder;\n\n\n var sequenceDirectories = sequences.filter(function (s) {\n return s.dir;\n });\n sequenceDirectories.forEach(function (dir) {\n var dataset = datasetLoader.getDataset(module, datasetLookup, dir.name);\n dataset.isBuilt = true;\n });\n\n datasets.filter(function (s) {\n return s.dir;\n }).forEach(function (dir) {\n var dataset = datasetLoader.getDataset(module, datasetLookup, dir.name);\n dataset.hasDataset = true;\n });\n\n var checkpointDirectories = checkpoints.filter(function (s) {\n return s.dir;\n });\n checkpointDirectories.forEach(function (dir) {\n var dataset = datasetLoader.getDataset(module, datasetLookup, dir.name);\n dataset.hasCheckpoints = true;\n dir.module = 'pix2wav';\n });\n\n var pix2pixCheckpointDirectories = pix2pixCheckpoints.filter(function (s) {\n return s.dir;\n });\n pix2pixCheckpointDirectories.forEach(function (dir) {\n var dataset = datasetLoader.getDataset(module, datasetLookup, dir.name);\n dataset.hasCheckpoints = true;\n dir.module = 'pix2pix';\n });\n\n console.log(res);\n console.log(checkpointDirectories);\n console.log(pix2pixCheckpointDirectories);\n\n dispatch({\n type: _types2.default.dataset.load,\n data: {\n module: module,\n folderLookup: folderLookup,\n fileLookup: fileLookup,\n datasetLookup: datasetLookup,\n folders: folders, files: files,\n sequences: sequenceDirectories,\n datasets: datasets,\n checkpoints: checkpointDirectories.concat(pix2pixCheckpointDirectories)\n }\n });\n }).catch(function (e) {\n console.error(e);\n });\n if (id) {\n console.log('folder id', id);\n dispatch({\n type: _types2.default.dataset.set_folder,\n data: {\n folder_id: id,\n module: module\n }\n });\n }\n };\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar pix2wavModule = {\n name: 'pix2wav',\n displayName: 'Pix2Wav',\n datatype: 'spectrogram'\n};\n\nexports.default = pix2wavModule;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _types = require('../../types');\n\nvar _types2 = _interopRequireDefault(_types);\n\nvar _dataset = require('../../dataset/dataset.reducer');\n\nvar _dataset2 = _interopRequireDefault(_dataset);\n\nvar _util = require('../../util');\n\nvar _util2 = _interopRequireDefault(_util);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar pix2wavInitialState = {\n loading: true,\n progress: { i: 0, n: 0 },\n status: '',\n error: null,\n folder_id: 0,\n data: null\n};\n\nvar pix2wavReducer = function pix2wavReducer() {\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : pix2wavInitialState;\n var action = arguments[1];\n\n if (action.data && action.data.module === 'pix2wav') {\n state = (0, _dataset2.default)(state, action);\n }\n\n switch (action.type) {\n case _types2.default.wav2pix.load:\n return _extends({}, state, {\n status: 'Loaded buffer'\n });\n case _types2.default.wav2pix.progress:\n return _extends({}, state, {\n status: 'Rendering frame ' + action.count\n });\n case _types2.default.wav2pix.finish:\n return _extends({}, state, {\n status: action.message || 'Render complete'\n });\n case _types2.default.wav2pix.zip:\n return _extends({}, state, {\n status: 'Built zip file ' + _util2.default.hush_size(state.size)[1]\n });\n case _types2.default.wav2pix.uploading:\n return _extends({}, state, {\n status: 'Uploading zip file'\n });\n default:\n return state;\n }\n};\n\nexports.default = pix2wavReducer;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.live_task = undefined;\n\nvar _v = require('uuid/v1');\n\nvar _v2 = _interopRequireDefault(_v);\n\nvar _socket = require('../../socket');\n\nvar _socket2 = _interopRequireDefault(_socket);\n\nvar _types = require('../../types');\n\nvar _types2 = _interopRequireDefault(_types);\n\nvar _actions = require('../../actions');\n\nvar _actions2 = _interopRequireDefault(_actions);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar live_task = exports.live_task = function live_task(sequence, checkpoint) {\n return function (dispatch) {\n var task = {\n module: 'pix2wav',\n activity: 'live',\n dataset: sequence,\n checkpoint: checkpoint,\n opt: {\n poll_delay: 0.2\n }\n };\n console.log(task);\n console.log('add live task');\n return _actions2.default.queue.add_task(task);\n };\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _preact = require('preact');\n\nvar _redux = require('redux');\n\nvar _reactRedux = require('react-redux');\n\nvar _common = require('../../../common/');\n\nvar _player = require('../../../live/player');\n\nvar playerActions = _interopRequireWildcard(_player);\n\nvar _live = require('../../../live/live.actions');\n\nvar liveActions = _interopRequireWildcard(_live);\n\nvar _queue = require('../../../queue/queue.actions');\n\nvar queueActions = _interopRequireWildcard(_queue);\n\nvar _pix2wav = require('../pix2wav.tasks');\n\nvar pix2wavTasks = _interopRequireWildcard(_pix2wav);\n\nvar _pix2wav2 = require('../pix2wav.actions');\n\nvar pix2wavActions = _interopRequireWildcard(_pix2wav2);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Pix2WavLive = function (_Component) {\n _inherits(Pix2WavLive, _Component);\n\n function Pix2WavLive(props) {\n _classCallCheck(this, Pix2WavLive);\n\n var _this = _possibleConstructorReturn(this, (Pix2WavLive.__proto__ || Object.getPrototypeOf(Pix2WavLive)).call(this));\n\n props.actions.pix2wav.load_directories();\n props.actions.live.get_params();\n _this.changeCheckpoint = _this.changeCheckpoint.bind(_this);\n _this.changeEpoch = _this.changeEpoch.bind(_this);\n _this.changeSequence = _this.changeSequence.bind(_this);\n _this.seek = _this.seek.bind(_this);\n _this.togglePlaying = _this.togglePlaying.bind(_this);\n _this.toggleRecording = _this.toggleRecording.bind(_this);\n return _this;\n }\n\n _createClass(Pix2WavLive, [{\n key: 'componentWillUpdate',\n value: function componentWillUpdate(nextProps) {\n if (nextProps.opt.checkpoint_name && nextProps.opt.checkpoint_name !== this.props.opt.checkpoint_name) {\n console.log('fetch checkpoint', nextProps.opt.checkpoint_name);\n this.props.actions.live.list_epochs('pix2wav', nextProps.opt.checkpoint_name);\n }\n }\n }, {\n key: 'changeCheckpoint',\n value: function changeCheckpoint(field, checkpoint_name) {\n this.props.actions.live.load_epoch(checkpoint_name, 'latest');\n }\n }, {\n key: 'changeEpoch',\n value: function changeEpoch(field, epoch_name) {\n this.props.actions.live.load_epoch(this.props.opt.checkpoint_name, epoch_name);\n }\n }, {\n key: 'changeSequence',\n value: function changeSequence(field, sequence) {\n console.log('got sequence', sequence);\n this.props.actions.live.load_sequence(sequence);\n }\n }, {\n key: 'seek',\n value: function seek(percentage) {\n var frame = Math.floor(percentage * (parseInt(this.props.frame.sequence_len) || 1) + 1);\n this.props.actions.live.seek(frame);\n }\n }, {\n key: 'start',\n value: function start() {\n // console.log(this.props)\n console.log(this.props.pix2wav.data);\n var sequence = this.props.pix2wav.data.sequences[0].name || '';\n var checkpoint = this.props.pix2wav.data.checkpoints[0].name || '';\n console.log('starting up!', sequence, checkpoint);\n this.props.actions.tasks.live_task(sequence, checkpoint);\n }\n }, {\n key: 'interrupt',\n value: function interrupt() {\n this.props.actions.queue.stop_task('gpu');\n }\n }, {\n key: 'exit',\n value: function exit() {\n this.props.actions.queue.stop_task('gpu', { sigkill: true });\n }\n }, {\n key: 'togglePlaying',\n value: function togglePlaying() {\n if (this.props.opt.processing) {\n this.props.actions.live.pause();\n } else {\n this.props.actions.live.play();\n }\n }\n }, {\n key: 'toggleRecording',\n value: function toggleRecording() {\n if (this.props.opt.recording) {\n (0, _player.stopRecording)();\n this.props.actions.live.pause();\n } else {\n (0, _player.startRecording)();\n }\n }\n }, {\n key: 'render',\n value: function render() {\n // console.log(this.props)\n if (this.props.pix2wav.loading) {\n return (0, _preact.h)(_common.Loading, null);\n }\n // console.log('sequence', this.props.opt)\n return (0, _preact.h)(\n 'div',\n { className: 'app pix2wav centered' },\n (0, _preact.h)(\n 'div',\n { className: 'row' },\n (0, _preact.h)(\n 'div',\n { className: 'column' },\n (0, _preact.h)(_common.Player, { width: 256, height: 256 })\n ),\n (0, _preact.h)(\n 'div',\n { className: 'params column audioParams' },\n (0, _preact.h)(\n _common.Group,\n { title: 'Audio playback' },\n (0, _preact.h)(\n _common.Button,\n { title: 'Start playback',\n onClick: function onClick() {\n return playerActions.startSynthesizing();\n }\n },\n 'Start'\n ),\n (0, _preact.h)(\n _common.Button,\n { title: 'Stop playback',\n onClick: function onClick() {\n return playerActions.stopSynthesizing();\n }\n },\n 'Stop'\n )\n )\n )\n ),\n (0, _preact.h)(\n 'div',\n { className: 'params row' },\n (0, _preact.h)(\n 'div',\n { className: 'column' },\n (0, _preact.h)(\n _common.ParamGroup,\n {\n title: 'Playback',\n noToggle: true\n },\n (0, _preact.h)(_common.Select, {\n name: 'send_image',\n title: 'view mode',\n options: ['a', 'b', 'sequence', 'recursive'],\n onChange: this.props.actions.live.set_param\n }),\n (0, _preact.h)(_common.Select, {\n name: 'sequence_name',\n title: 'sequence',\n options: this.props.pix2wav.data.sequences,\n onChange: this.changeSequence\n }),\n (0, _preact.h)(_common.Select, {\n name: 'output_format',\n title: 'format',\n options: ['JPEG', 'PNG']\n }),\n (0, _preact.h)(_common.Select, {\n name: 'checkpoint_name',\n title: 'checkpoint',\n options: this.props.pix2wav.data.checkpoints,\n onChange: this.changeCheckpoint\n }),\n (0, _preact.h)(_common.Select, {\n name: 'epoch',\n title: 'epoch',\n options: this.props.epochs,\n onChange: this.changeEpoch\n }),\n (0, _preact.h)(_common.Slider, { live: true,\n name: 'position',\n min: 0.0, max: 1.0, type: 'float',\n value: (this.props.frame.sequence_i || 0) / (this.props.frame.sequence_len || 1),\n onChange: this.seek\n }),\n this.renderRestartButton(),\n (0, _preact.h)(\n _common.Button,\n {\n title: this.props.opt.savingVideo ? 'Saving video...' : this.props.opt.recording ? 'Recording (' + timeInSeconds(this.props.opt.recordFrames) + ')' : 'Record video',\n onClick: this.toggleRecording\n },\n this.props.opt.savingVideo ? 'Saving' : this.props.opt.recording ? 'Recording' : 'Record'\n ),\n (0, _preact.h)(\n _common.Button,\n {\n title: 'Save frame',\n onClick: _player.saveFrame\n },\n 'Save'\n ),\n (0, _preact.h)(\n 'p',\n { 'class': 'last_message' },\n this.props.last_message\n )\n )\n ),\n (0, _preact.h)(\n 'div',\n { className: 'column' },\n (0, _preact.h)(\n _common.ParamGroup,\n {\n title: 'Transition',\n name: 'transition'\n },\n (0, _preact.h)(_common.Slider, { live: true,\n name: 'transition_period',\n min: 10, max: 5000, type: 'int'\n }),\n (0, _preact.h)(_common.Slider, { live: true,\n name: 'transition_min',\n min: 0.001, max: 0.2, type: 'float'\n }),\n (0, _preact.h)(_common.Slider, { live: true,\n name: 'transition_max',\n min: 0.1, max: 1.0, type: 'float'\n })\n ),\n (0, _preact.h)(\n _common.ParamGroup,\n {\n title: 'Recursion',\n name: 'recursive'\n },\n (0, _preact.h)(_common.Slider, { live: true,\n name: 'recursive_frac',\n min: 0.0, max: 0.5, type: 'float'\n }),\n (0, _preact.h)(_common.Slider, { live: true,\n name: 'recurse_roll',\n min: -64, max: 64, type: 'int'\n }),\n (0, _preact.h)(_common.Slider, { live: true,\n name: 'recurse_roll_axis',\n min: 0, max: 1, type: 'int'\n })\n ),\n (0, _preact.h)(\n _common.ParamGroup,\n {\n title: 'Sequence',\n name: 'sequence'\n },\n (0, _preact.h)(_common.Slider, { live: true,\n name: 'sequence_frac',\n min: 0.0, max: 1, type: 'float'\n }),\n (0, _preact.h)(_common.Slider, { live: true,\n name: 'process_frac',\n min: 0, max: 1, type: 'float'\n })\n )\n ),\n (0, _preact.h)(\n 'div',\n { className: 'column' },\n (0, _preact.h)(\n _common.ParamGroup,\n {\n title: 'Clahe',\n name: 'clahe'\n },\n (0, _preact.h)(_common.Slider, { live: true,\n name: 'clip_limit',\n min: 1.0, max: 4.0, type: 'float'\n })\n ),\n (0, _preact.h)(\n _common.ParamGroup,\n {\n title: 'Posterize',\n name: 'posterize'\n },\n (0, _preact.h)(_common.Slider, { live: true,\n name: 'spatial_window',\n min: 2, max: 128, type: 'int'\n }),\n (0, _preact.h)(_common.Slider, { live: true,\n name: 'color_window',\n min: 2, max: 128, type: 'int'\n })\n ),\n (0, _preact.h)(\n _common.ParamGroup,\n {\n title: 'Blur',\n name: 'blur'\n },\n (0, _preact.h)(_common.Slider, { live: true,\n name: 'blur_radius',\n min: 3, max: 7, type: 'odd'\n }),\n (0, _preact.h)(_common.Slider, { live: true,\n name: 'blur_sigma',\n min: 0, max: 2, type: 'float'\n })\n ),\n (0, _preact.h)(\n _common.ParamGroup,\n {\n title: 'Canny Edge Detection',\n name: 'canny'\n },\n (0, _preact.h)(_common.Slider, { live: true,\n name: 'canny_lo',\n min: 10, max: 200, type: 'int'\n }),\n (0, _preact.h)(_common.Slider, { live: true,\n name: 'canny_hi',\n min: 10, max: 200, type: 'int'\n })\n )\n )\n )\n );\n }\n }, {\n key: 'renderRestartButton',\n value: function renderRestartButton() {\n var _this2 = this;\n\n if (this.props.runner.gpu.status === 'IDLE') {\n return (0, _preact.h)(\n _common.Button,\n {\n title: 'GPU Idle',\n onClick: function onClick() {\n return _this2.start();\n }\n },\n 'Start'\n );\n }\n if (this.props.runner.gpu.task.module !== 'pix2pix' && this.props.runner.gpu.task.module !== 'pix2wav') {\n return (0, _preact.h)(\n _common.Button,\n {\n title: 'GPU Busy',\n onClick: function onClick() {\n return _this2.interrupt();\n }\n },\n 'Interrupt'\n );\n }\n if (!this.props.opt.processing) {\n return (0, _preact.h)(\n 'div',\n null,\n (0, _preact.h)(\n _common.Button,\n {\n title: 'Not processing',\n onClick: this.togglePlaying\n },\n 'Restart'\n ),\n (0, _preact.h)(\n _common.Button,\n {\n title: 'GPU Busy',\n onClick: function onClick() {\n return _this2.interrupt();\n }\n },\n 'Interrupt'\n ),\n (0, _preact.h)(\n _common.Button,\n {\n title: 'Last resort',\n onClick: function onClick() {\n return _this2.exit();\n }\n },\n 'Exit'\n )\n );\n }\n return (0, _preact.h)(\n 'div',\n null,\n (0, _preact.h)(\n _common.Button,\n {\n title: 'Processing',\n onClick: this.togglePlaying\n },\n 'Pause'\n ),\n (0, _preact.h)(\n _common.Button,\n {\n title: 'GPU Busy',\n onClick: function onClick() {\n return _this2.interrupt();\n }\n },\n 'Interrupt'\n ),\n (0, _preact.h)(\n _common.Button,\n {\n title: 'Last resort',\n onClick: function onClick() {\n return _this2.exit();\n }\n },\n 'Exit'\n )\n );\n }\n }]);\n\n return Pix2WavLive;\n}(_preact.Component);\n\nfunction timeInSeconds(n) {\n return (n / 10).toFixed(1) + ' s.';\n}\nvar mapStateToProps = function mapStateToProps(state) {\n return {\n last_message: state.live.last_message,\n opt: state.live.opt,\n frame: state.live.frame,\n checkpoints: state.live.checkpoints,\n epochs: state.live.epochs,\n sequences: state.live.sequences,\n runner: state.system.runner,\n pix2wav: state.module.pix2wav\n };\n};\n\nvar mapDispatchToProps = function mapDispatchToProps(dispatch, ownProps) {\n return {\n actions: {\n live: (0, _redux.bindActionCreators)(liveActions, dispatch),\n queue: (0, _redux.bindActionCreators)(queueActions, dispatch),\n pix2wav: (0, _redux.bindActionCreators)(pix2wavActions, dispatch),\n tasks: (0, _redux.bindActionCreators)(pix2wavTasks, dispatch), s: s\n }\n };\n};\n\nexports.default = (0, _reactRedux.connect)(mapStateToProps, mapDispatchToProps)(Pix2WavLive);","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = Pix2WavNew;\n\nvar _preact = require('preact');\n\nvar _dataset = require('../../../dataset/dataset.new');\n\nvar _dataset2 = _interopRequireDefault(_dataset);\n\nvar _pix2wav = require('../pix2wav.module');\n\nvar _pix2wav2 = _interopRequireDefault(_pix2wav);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction Pix2WavNew(_ref) {\n var history = _ref.history;\n\n return (0, _preact.h)(\n 'div',\n { 'class': 'app pix2wav' },\n (0, _preact.h)(_dataset2.default, { module: _pix2wav2.default, history: history })\n );\n}","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _preact = require('preact');\n\nvar _redux = require('redux');\n\nvar _reactRedux = require('react-redux');\n\nvar _util = require('../../../util');\n\nvar _util2 = _interopRequireDefault(_util);\n\nvar _pix2wav = require('../pix2wav.actions');\n\nvar pix2wavActions = _interopRequireWildcard(_pix2wav);\n\nvar _pix2wav2 = require('../pix2wav.tasks');\n\nvar pix2wavTasks = _interopRequireWildcard(_pix2wav2);\n\nvar _loading = require('../../../common/loading.component');\n\nvar _loading2 = _interopRequireDefault(_loading);\n\nvar _dataset = require('../../../dataset/dataset.form');\n\nvar _dataset2 = _interopRequireDefault(_dataset);\n\nvar _dataset3 = require('../../../dataset/dataset.new');\n\nvar _dataset4 = _interopRequireDefault(_dataset3);\n\nvar _upload = require('../../../dataset/upload.status');\n\nvar _upload2 = _interopRequireDefault(_upload);\n\nvar _fileList = require('../../../common/fileList.component');\n\nvar _spectrogram = require('./spectrogram.upload');\n\nvar _spectrogram2 = _interopRequireDefault(_spectrogram);\n\nvar _dataset5 = require('../../../dataset/dataset.component');\n\nvar _dataset6 = _interopRequireDefault(_dataset5);\n\nvar _pix2wav3 = require('../pix2wav.module');\n\nvar _pix2wav4 = _interopRequireDefault(_pix2wav3);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Pix2wavShow = function (_Component) {\n _inherits(Pix2wavShow, _Component);\n\n function Pix2wavShow(props) {\n _classCallCheck(this, Pix2wavShow);\n\n var _this = _possibleConstructorReturn(this, (Pix2wavShow.__proto__ || Object.getPrototypeOf(Pix2wavShow)).call(this, props));\n\n _this.datasetActions = _this.datasetActions.bind(_this);\n return _this;\n }\n\n _createClass(Pix2wavShow, [{\n key: 'componentWillMount',\n value: function componentWillMount() {\n var id = this.props.match.params.id || localStorage.getItem('pix2wav.last_id');\n console.log('load dataset:', id);\n var _props = this.props,\n match = _props.match,\n pix2wav = _props.pix2wav,\n actions = _props.actions;\n\n if (id === 'new') return;\n if (id) {\n if (parseInt(id)) localStorage.setItem('pix2wav.last_id', id);\n if (!pix2wav.folder || pix2wav.folder.id !== id) {\n actions.load_directories(id);\n }\n } else {\n this.props.history.push('/pix2wav/new/');\n }\n }\n }, {\n key: 'render',\n value: function render() {\n var _props2 = this.props,\n pix2wav = _props2.pix2wav,\n match = _props2.match,\n history = _props2.history;\n\n var _ref = pix2wav.data || {},\n folderLookup = _ref.folderLookup;\n\n var folder = (folderLookup || {})[pix2wav.folder_id] || {};\n\n return (0, _preact.h)(\n 'div',\n { className: 'app pix2wav' },\n (0, _preact.h)(\n 'div',\n { 'class': 'heading' },\n (0, _preact.h)(\n 'div',\n { 'class': 'spaced' },\n (0, _preact.h)(\n 'h1',\n null,\n folder ? folder.name : (0, _preact.h)(_loading2.default, null)\n ),\n (0, _preact.h)(_upload2.default, null)\n )\n ),\n (0, _preact.h)(_spectrogram2.default, {\n loading: pix2wav.loading,\n progress: pix2wav.progress,\n id: pix2wav.folder_id,\n module: _pix2wav4.default,\n data: pix2wav.data,\n folder: folder\n }),\n (0, _preact.h)(_dataset6.default, {\n loading: pix2wav.loading,\n progress: pix2wav.progress,\n id: pix2wav.folder_id,\n module: _pix2wav4.default,\n data: pix2wav.data,\n folder: folder,\n history: history,\n onPickFile: function onPickFile(file, e) {\n e.preventDefault();\n e.stopPropagation();\n console.log('picked a file', file);\n },\n datasetActions: this.datasetActions\n })\n );\n }\n }, {\n key: 'datasetActions',\n value: function datasetActions(dataset) {\n var isFetching = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var isProcessing = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n var _props3 = this.props,\n pix2wav = _props3.pix2wav,\n remote = _props3.remote;\n\n var input = pix2wav.data.fileLookup[dataset.input[0]];\n if (!input) return null;\n if (input.name && input.name.match(/(gif|jpe?g|png)$/i)) return null;\n return (0, _preact.h)(\n 'div',\n null,\n (0, _preact.h)(\n 'div',\n { 'class': 'actions' },\n (0, _preact.h)(\n 'span',\n { 'class': 'link', onClick: function onClick() {\n return remote.train_task(dataset, pix2wav.folder_id, 1);\n } },\n 'train'\n ),\n (0, _preact.h)(\n 'span',\n { 'class': 'link', onClick: function onClick() {\n return remote.train_task(dataset, pix2wav.folder_id, 2);\n } },\n '2x'\n ),\n (0, _preact.h)(\n 'span',\n { 'class': 'link', onClick: function onClick() {\n return remote.train_task(dataset, pix2wav.folder_id, 4);\n } },\n '4x'\n ),\n (0, _preact.h)(\n 'span',\n { 'class': 'link', onClick: function onClick() {\n return remote.train_task(dataset, pix2wav.folder_id, 6);\n } },\n '6x'\n ),\n (0, _preact.h)(\n 'span',\n { 'class': 'link', onClick: function onClick() {\n return remote.train_task(dataset, pix2wav.folder_id, 18);\n } },\n '18x'\n )\n ),\n dataset.isBuilt ? (0, _preact.h)(\n 'div',\n { 'class': 'subtext' },\n 'fetched ',\n (0, _preact.h)(\n 'span',\n { 'class': 'link', onClick: function onClick() {\n return remote.clear_cache_task(dataset);\n } },\n 'rm'\n )\n ) : isFetching ? (0, _preact.h)(\n 'div',\n { 'class': 'subtext' },\n 'fetching'\n ) : (0, _preact.h)(\n 'div',\n { 'class': 'subtext' },\n (0, _preact.h)(\n 'span',\n { 'class': 'link', onClick: function onClick() {\n return remote.fetch_task(input.url, input.id, dataset.name);\n } },\n 'fetch'\n )\n )\n );\n }\n }]);\n\n return Pix2wavShow;\n}(_preact.Component);\n\nvar mapStateToProps = function mapStateToProps(state) {\n return {\n pix2wav: state.module.pix2wav\n };\n};\n\nvar mapDispatchToProps = function mapDispatchToProps(dispatch, ownProps) {\n return {\n actions: (0, _redux.bindActionCreators)(pix2wavActions, dispatch),\n remote: (0, _redux.bindActionCreators)(pix2wavTasks, dispatch)\n };\n};\n\nexports.default = (0, _reactRedux.connect)(mapStateToProps, mapDispatchToProps)(Pix2wavShow);","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _preact = require('preact');\n\nvar _redux = require('redux');\n\nvar _reactRedux = require('react-redux');\n\nvar _moment = require('moment/min/moment.min');\n\nvar _moment2 = _interopRequireDefault(_moment);\n\nvar _util = require('../../../util');\n\nvar _util2 = _interopRequireDefault(_util);\n\nvar _pix2wav = require('../pix2wav.actions');\n\nvar pix2wavActions = _interopRequireWildcard(_pix2wav);\n\nvar _pix2wav2 = require('../pix2wav.tasks');\n\nvar pix2wavTasks = _interopRequireWildcard(_pix2wav2);\n\nvar _common = require('../../../common');\n\nvar _dataset = require('../../../dataset/dataset.actions');\n\nvar datasetActions = _interopRequireWildcard(_dataset);\n\nvar _wav2pix = require('../../../audio/wav2pix');\n\nvar wav2pixActions = _interopRequireWildcard(_wav2pix);\n\nvar _pix2wav3 = require('../../../audio/pix2wav');\n\nvar pix2wavPlayer = _interopRequireWildcard(_pix2wav3);\n\nvar _pix2wav4 = require('../pix2wav.module');\n\nvar _pix2wav5 = _interopRequireDefault(_pix2wav4);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar date_stamp = function date_stamp() {\n return (0, _moment2.default)().format(\"_YYYYMMDD_HHmm\");\n};\n\nvar SpectrogramUpload = function (_Component) {\n _inherits(SpectrogramUpload, _Component);\n\n function SpectrogramUpload(props) {\n _classCallCheck(this, SpectrogramUpload);\n\n var _this = _possibleConstructorReturn(this, (SpectrogramUpload.__proto__ || Object.getPrototypeOf(SpectrogramUpload)).call(this, props));\n\n _this.state = {\n file: null,\n pcm: null,\n name: \"\",\n datasetName: \"\",\n frames: [],\n frame_start: 0,\n max: 1000,\n preview_count: 8 * 4,\n frame_step: wav2pixActions.FRAME_STEP\n };\n var audioElement = document.createElement('audio');\n audioElement.addEventListener('loadedmetadata', function () {\n var duration = audioElement.duration;\n var total_frame_count = Math.floor((duration * 44100 - wav2pixActions.FRAME_LENGTH) / _this.state.frame_step);\n _this.setState({\n duration: duration,\n max: Math.min(_this.state.max, total_frame_count, 1000)\n });\n });\n _this.audioElement = audioElement;\n return _this;\n }\n\n _createClass(SpectrogramUpload, [{\n key: 'pickFile',\n value: function pickFile(file) {\n var _this2 = this;\n\n var name = file.name.split('.')[0].replace(/\\s+/g, '_').replace(/-/g, '_').replace(/_+/g, '_');\n this.setState({\n file: file,\n name: name + date_stamp(),\n datasetName: name,\n pcm: ''\n }, function () {\n _this2.rebuildFrames();\n });\n this.audioElement.src = URL.createObjectURL(file);\n }\n }, {\n key: 'rebuildFrames',\n value: function rebuildFrames() {\n var _this3 = this;\n\n var _state = this.state,\n file = _state.file,\n pcm = _state.pcm,\n frame_step = _state.frame_step,\n frame_start = _state.frame_start,\n preview_count = _state.preview_count;\n\n this.props.wav2pix.renderFrames(pcm || file, { frame_start: frame_start, frame_step: frame_step, max: preview_count }).then(function (data) {\n console.log('got frames', data.frames.length);\n _this3.setState(_extends({}, _this3.state, {\n frames: data.frames,\n pcm: data.pcm\n }));\n });\n }\n }, {\n key: 'buildZip',\n value: function buildZip() {\n var _this4 = this;\n\n var _state2 = this.state,\n pcm = _state2.pcm,\n file = _state2.file,\n max = _state2.max,\n frame_step = _state2.frame_step,\n frame_start = _state2.frame_start;\n\n this.props.wav2pix.buildZip(this.state.name, pcm || file, { frame_start: frame_start, frame_step: frame_step, max: max }).then(function (_ref) {\n var zip = _ref.zip,\n filename = _ref.filename,\n count = _ref.count;\n\n _this4.props.datasetActions.uploadFile(_this4.props.module, _this4.props.folder, zip, filename, { count: count, max: max, frame_step: frame_step, frame_size: wav2pixActions.FRAME_LENGTH / 44100 });\n });\n }\n }, {\n key: 'playFrame',\n value: function playFrame(i) {\n var _this5 = this;\n\n return function () {\n var frame = _this5.state.frames[i];\n pix2wavPlayer.play(frame);\n };\n }\n }, {\n key: 'render',\n value: function render() {\n var _this6 = this;\n\n // loading={pix2wav.loading}\n // progress={pix2wav.progress}\n // id={pix2wav.folder_id}\n // module={pix2wavModule}\n // data={pix2wav.data}\n // folder={folder}\n var _state3 = this.state,\n file = _state3.file,\n frames = _state3.frames,\n preview_count = _state3.preview_count;\n\n var canvases = [];\n for (var i = 0, _len = preview_count; i < _len; i++) {\n canvases.push((0, _preact.h)('canvas', { key: i, onClick: this.playFrame(i) }));\n }\n return (0, _preact.h)(\n 'div',\n { className: 'row' },\n (0, _preact.h)(\n 'div',\n { className: 'col spectrogramBuilder' },\n (0, _preact.h)(\n _common.Group,\n { title: 'Spectrogram Builder' },\n (0, _preact.h)(\n 'p',\n null,\n \"Convert your sounds into spectrograms. \",\n \"Sound files can be WAV, MP3, AIFF, or FLAC. \"\n ),\n (0, _preact.h)(_common.FileUpload, {\n title: 'Choose a sound file',\n accept: 'audio/*',\n onUpload: function onUpload(file) {\n return _this6.pickFile(file);\n }\n }),\n file && this.renderMetadata(file)\n )\n ),\n (0, _preact.h)(\n 'div',\n { ref: function ref(c) {\n _this6.canvases = c;\n }, className: 'thumbs', id: 'pix2wav_canvases' },\n canvases\n )\n );\n }\n }, {\n key: 'renderMetadata',\n value: function renderMetadata(file) {\n var _this7 = this;\n\n var _state4 = this.state,\n duration = _state4.duration,\n preview_count = _state4.preview_count;\n\n var size = _util2.default.hush_size(file.size);\n var total_frame_count = Math.floor((duration * 44100 - wav2pixActions.FRAME_LENGTH) / this.state.frame_step);\n var frame_size = Math.round(wav2pixActions.FRAME_LENGTH / 44100 * 1000) + ' ms.';\n var frame_step = Math.round(this.state.frame_step / 44100 * 1000) + ' ms.';\n return (0, _preact.h)(\n 'div',\n { className: 'fileMetadata' },\n (0, _preact.h)(\n _common.Group,\n { title: 'Metadata' },\n (0, _preact.h)(\n _common.Param,\n { title: 'Name' },\n file.name\n ),\n (0, _preact.h)(\n _common.Param,\n { title: 'Type' },\n file.type\n ),\n (0, _preact.h)(\n _common.Param,\n { title: 'Size' },\n (0, _preact.h)(\n 'span',\n { className: size[0] },\n size[1]\n )\n ),\n (0, _preact.h)(\n _common.Param,\n { title: 'Date' },\n (0, _moment2.default)(file.lastModifiedDate).format(\"YYYY-MM-DD h:mm a\")\n ),\n (0, _preact.h)(\n _common.Param,\n { title: 'Duration' },\n Math.floor(duration) + ' s.'\n ),\n (0, _preact.h)('br', null),\n (0, _preact.h)(\n _common.Param,\n { title: 'Frames' },\n total_frame_count\n ),\n (0, _preact.h)(\n _common.Param,\n { title: 'Frame Size' },\n frame_size\n ),\n (0, _preact.h)(\n _common.Param,\n { title: 'Frame Step' },\n frame_step\n ),\n (0, _preact.h)(\n _common.Param,\n { title: 'FFT Size' },\n wav2pixActions.spectrum.fft_size\n ),\n (0, _preact.h)('br', null),\n (0, _preact.h)(\n _common.Param,\n { title: 'Status' },\n this.props.pix2wav.status\n ),\n (0, _preact.h)('br', null)\n ),\n (0, _preact.h)(\n _common.Group,\n { title: 'Data settings' },\n (0, _preact.h)(_common.TextInput, {\n title: 'Dataset name',\n onChange: function onChange(e) {\n return _this7.setState({ name: e.target.value });\n },\n value: this.state.name\n }),\n (0, _preact.h)(_common.Slider, {\n name: 'Starting Frame',\n min: 0, max: 1, type: 'float',\n value: this.state.frame_start,\n defaultValue: 0,\n onChange: function onChange(frame_start) {\n _this7.setState({\n frame_start: frame_start\n }, function () {\n _this7.rebuildFrames();\n });\n }\n }),\n (0, _preact.h)(_common.Slider, {\n name: 'No. Frames',\n min: 10, max: Math.min(total_frame_count, 1000), type: 'int',\n value: this.state.max,\n defaultValue: Math.min(total_frame_count, 300),\n onChange: function onChange(max) {\n return _this7.setState({ max: max });\n }\n }),\n (0, _preact.h)(_common.Slider, {\n name: 'Frame step',\n min: 10, max: 20000, type: 'int',\n value: this.state.frame_step,\n defaultValue: wav2pixActions.FRAME_STEP,\n onChange: function onChange(frame_step) {\n var total_frame_count = Math.floor((duration * 44100 - wav2pixActions.FRAME_LENGTH) / frame_step);\n _this7.setState({\n name: _this7.state.datasetName + '_step_' + frame_step + date_stamp(),\n frame_step: frame_step,\n max: Math.min(_this7.state.max, total_frame_count)\n }, function () {\n _this7.rebuildFrames();\n });\n }\n }),\n (0, _preact.h)(\n _common.Button,\n {\n onClick: function onClick() {\n return _this7.buildZip();\n }\n },\n 'Upload Frames'\n )\n ),\n (0, _preact.h)(_common.Progress, null)\n );\n }\n }, {\n key: 'componentDidUpdate',\n value: function componentDidUpdate() {\n var _this8 = this;\n\n (this.state.frames || []).map(function (frame, i) {\n var canvas = _this8.canvases.children[i];\n var ctx = canvas.getContext('2d-lodpi');\n canvas.width = frame.canvas.width;\n canvas.height = frame.canvas.height;\n ctx.drawImage(frame.canvas, 0, 0);\n });\n }\n }]);\n\n return SpectrogramUpload;\n}(_preact.Component);\n\nvar mapStateToProps = function mapStateToProps(state) {\n return {\n pix2wav: state.module.pix2wav,\n upload: state.upload\n };\n};\n\nvar mapDispatchToProps = function mapDispatchToProps(dispatch, ownProps) {\n return {\n datasetActions: (0, _redux.bindActionCreators)(datasetActions, dispatch),\n actions: (0, _redux.bindActionCreators)(pix2wavActions, dispatch),\n remote: (0, _redux.bindActionCreators)(pix2wavTasks, dispatch),\n wav2pix: (0, _redux.bindActionCreators)(wav2pixActions, dispatch)\n };\n};\n\nexports.default = (0, _reactRedux.connect)(mapStateToProps, mapDispatchToProps)(SpectrogramUpload);","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _preact = require('preact');\n\nvar _reactRouterDom = require('react-router-dom');\n\nvar _actions = require('../../actions');\n\nvar _actions2 = _interopRequireDefault(_actions);\n\nvar _util = require('../../util');\n\nvar _util2 = _interopRequireDefault(_util);\n\nvar _samplernn = require('./views/samplernn.new');\n\nvar _samplernn2 = _interopRequireDefault(_samplernn);\n\nvar _samplernn3 = require('./views/samplernn.show');\n\nvar _samplernn4 = _interopRequireDefault(_samplernn3);\n\nvar _samplernn5 = require('./views/samplernn.import');\n\nvar _samplernn6 = _interopRequireDefault(_samplernn5);\n\nvar _samplernn7 = require('./views/samplernn.results');\n\nvar _samplernn8 = _interopRequireDefault(_samplernn7);\n\nvar _samplernn9 = require('./views/samplernn.graph');\n\nvar _samplernn10 = _interopRequireDefault(_samplernn9);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar router = function () {\n function router() {\n _classCallCheck(this, router);\n }\n\n _createClass(router, [{\n key: 'componentWillMount',\n value: function componentWillMount() {\n _actions2.default.system.changeTool('samplernn');\n document.body.style.backgroundImage = 'linear-gradient(' + (_util2.default.randint(40) + 40) + 'deg, #eef, #fef)';\n }\n }, {\n key: 'componentWillReceiveProps',\n value: function componentWillReceiveProps() {\n _actions2.default.system.changeTool('samplernn');\n document.body.style.backgroundImage = 'linear-gradient(' + (_util2.default.randint(40) + 40) + 'deg, #eef, #fef)';\n }\n }, {\n key: 'render',\n value: function render() {\n return (0, _preact.h)(\n 'section',\n null,\n (0, _preact.h)(_reactRouterDom.Route, { exact: true, path: '/samplernn/new', component: _samplernn2.default }),\n (0, _preact.h)(_reactRouterDom.Route, { exact: true, path: '/samplernn/datasets', component: _samplernn4.default }),\n (0, _preact.h)(_reactRouterDom.Route, { exact: true, path: '/samplernn/datasets/:id', component: _samplernn4.default }),\n (0, _preact.h)(_reactRouterDom.Route, { exact: true, path: '/samplernn/import', component: _samplernn6.default }),\n (0, _preact.h)(_reactRouterDom.Route, { exact: true, path: '/samplernn/results', component: _samplernn8.default }),\n (0, _preact.h)(_reactRouterDom.Route, { exact: true, path: '/samplernn/graph', component: _samplernn10.default })\n );\n }\n }]);\n\n return router;\n}();\n\nfunction links() {\n return [{ url: '/samplernn/new/', name: 'new' }, { url: '/samplernn/datasets/', name: 'datasets' }, { url: '/samplernn/graph/', name: 'graph' }, { url: '/samplernn/results/', name: 'results' }];\n}\n\nexports.default = {\n name: 'samplernn',\n router: router, links: links\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.import_files = exports.load_loss = exports.load_graph = exports.load_directories = undefined;\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _v = require('uuid/v1');\n\nvar _v2 = _interopRequireDefault(_v);\n\nvar _socket = require('../../socket');\n\nvar _socket2 = _interopRequireDefault(_socket);\n\nvar _types = require('../../types');\n\nvar _types2 = _interopRequireDefault(_types);\n\nvar _dataset = require('../../dataset/dataset.loader');\n\nvar datasetLoader = _interopRequireWildcard(_dataset);\n\nvar _actions = require('../../actions');\n\nvar _actions2 = _interopRequireDefault(_actions);\n\nvar _util = require('../../util');\n\nvar _util2 = _interopRequireDefault(_util);\n\nvar _samplernn = require('./samplernn.module');\n\nvar _samplernn2 = _interopRequireDefault(_samplernn);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _toArray(arr) { return Array.isArray(arr) ? arr : Array.from(arr); }\n\nvar load_directories = exports.load_directories = function load_directories(id) {\n return function (dispatch) {\n var module = _samplernn2.default.name;\n _util2.default.allProgress([datasetLoader.load(module), _actions2.default.socket.list_directory({ module: module, dir: 'datasets' }), _actions2.default.socket.list_directory({ module: module, dir: 'results' }), _actions2.default.socket.list_directory({ module: module, dir: 'output' }), _actions2.default.socket.disk_usage({ module: module, dir: 'datasets' }), load_loss()(dispatch)], function (percent, i, n) {\n dispatch({\n type: _types2.default.app.load_progress,\n progress: { i: i, n: n },\n data: { module: 'samplernn' }\n });\n }).then(function (res) {\n // console.log(res)\n var _res = _slicedToArray(res, 6),\n datasetApiReport = _res[0],\n datasets = _res[1],\n results = _res[2],\n output = _res[3],\n datasetUsage = _res[4],\n lossReport = _res[5];\n\n var folderLookup = datasetApiReport.folderLookup,\n fileLookup = datasetApiReport.fileLookup,\n datasetLookup = datasetApiReport.datasetLookup,\n folders = datasetApiReport.folders,\n files = datasetApiReport.files,\n unsortedFolder = datasetApiReport.unsortedFolder;\n\n console.log(datasetUsage);\n\n // also show the various flat audio files we have, in the input area..\n var flatDatasets = datasets.filter(function (s) {\n return s.name.match(/(wav|aiff?|flac|mp3)$/) && !s.dir;\n });\n var builtDatasets = datasets.filter(function (s) {\n return s.dir;\n });\n builtDatasets.forEach(function (dir) {\n var dataset = datasetLoader.getDataset(module, datasetLookup, dir.name, unsortedFolder, dir.date);\n dataset.isBuilt = true;\n });\n\n flatDatasets.forEach(function (file) {\n file.uuid = (0, _v2.default)();\n fileLookup[file.uuid] = file;\n var name = file.name.split('.')[0];\n var dataset = datasetLoader.getDataset(module, datasetLookup, name, unsortedFolder, file.date);\n file.persisted = false;\n dataset.input.push(file.uuid);\n });\n\n // exp:coccokit_3-frame_sizes:8,2-n_rnn:2-dataset:coccokit_3\n var checkpoints = results.filter(function (s) {\n return s.dir;\n }).map(function (s) {\n var checkpoint = s.name.split('-').map(function (s) {\n return s.split(':');\n }).filter(function (b) {\n return b.length && b[1];\n }).reduce(function (a, b) {\n return (a[b[0]] = b[1]) && a;\n }, {});\n checkpoint.name = checkpoint.name || checkpoint.dataset || checkpoint.exp;\n if (!checkpoint.name) return;\n checkpoint.date = s.date;\n checkpoint.dir = s;\n checkpoint.persisted = false;\n var dataset = datasetLoader.getDataset(module, datasetLookup, checkpoint.name, unsortedFolder, checkpoint.date);\n var loss = lossReport[checkpoint.name];\n if (loss) {\n dataset.epoch = checkpoint.epoch = loss.length;\n checkpoint.training_loss = loss;\n }\n dataset.checkpoints.push(checkpoint);\n return checkpoint;\n }).filter(function (c) {\n return !!c;\n });\n\n output.map(function (file) {\n file.uuid = (0, _v2.default)();\n fileLookup[file.uuid] = file;\n var pair = file.name.split('.')[0].split('-');\n var dataset = datasetLoader.getDataset(module, datasetLookup, pair[0], unsortedFolder, file.date);\n file.persisted = false;\n file.epoch = parseInt(file.epoch || pair[1].replace(/^\\D+/, '')) || 0;\n dataset.epoch = Math.max(file.epoch, dataset.epoch || 0);\n // here check if the file exists in dataset, if so just check that it's persisted\n var found = dataset.output.some(function (file_id) {\n // if (f.name === \n if (fileLookup[file_id].name === file.name) {\n fileLookup[file_id].persisted = true;\n return true;\n }\n return false;\n });\n if (!found) {\n dataset.output.push(file.uuid);\n }\n });\n\n dispatch({\n type: _types2.default.dataset.load,\n data: {\n module: module,\n folderLookup: folderLookup,\n fileLookup: fileLookup,\n datasetLookup: datasetLookup,\n folders: folders, files: files,\n checkpoints: checkpoints,\n output: output\n }\n });\n }).catch(function (e) {\n console.error(e);\n });\n if (id) {\n dispatch({\n type: _types2.default.dataset.set_folder,\n data: {\n folder_id: id,\n module: module\n }\n });\n }\n };\n};\n\nvar load_graph = exports.load_graph = function load_graph() {\n return function (dispatch) {\n var module = _samplernn2.default.name;\n _util2.default.allProgress([load_loss()(dispatch), _actions2.default.socket.list_directory({ module: module, dir: 'results' })], function (percent, i, n) {\n dispatch({\n type: _types2.default.app.load_progress,\n progress: { i: i, n: n },\n data: { module: 'samplernn' }\n });\n }).then(function (res) {\n var _res2 = _slicedToArray(res, 2),\n lossReport = _res2[0],\n results = _res2[1];\n\n dispatch({\n type: _types2.default.samplernn.load_graph,\n lossReport: lossReport,\n results: results\n });\n });\n };\n};\n\nvar load_loss = exports.load_loss = function load_loss() {\n return function (dispatch) {\n return _actions2.default.socket.run_script({ module: 'samplernn', activity: 'report' }).then(function (report) {\n var lossReport = {};\n report.stdout.split('\\n\\n').filter(function (a) {\n return !!a;\n }).forEach(function (data) {\n var _data$split = data.split('\\n'),\n _data$split2 = _toArray(_data$split),\n name = _data$split2[0],\n lines = _data$split2.slice(1);\n\n lossReport[name] = lines.map(function (s) {\n return s.split('\\t').reduce(function (a, s) {\n var b = s.split(': ');\n a[b[0]] = b[1];\n return a;\n }, {});\n });\n // console.log(data, name, lossReport[name])\n });\n dispatch({\n type: _types2.default.samplernn.load_loss,\n lossReport: lossReport\n });\n return lossReport;\n });\n };\n};\n\nvar import_files = exports.import_files = function import_files(state, datasetLookup, fileLookup) {\n return function (dispatch) {\n var selected = state.selected,\n folder_id = state.folder_id,\n url_base = state.url_base,\n import_action = state.import_action;\n\n var names = Object.keys(selected).filter(function (k) {\n return selected[k];\n });\n var promises = void 0;\n switch (import_action) {\n case 'Hotlink':\n // in this case, create a new file for each file we see.\n promises = names.reduce(function (a, name) {\n return datasetLookup[name].output.map(function (id) {\n return fileLookup[id];\n }).map(function (file) {\n var partz = file.name.split('.');\n var ext = partz.pop();\n return _actions2.default.file.create({\n folder_id: folder_id,\n name: file.name,\n url: url_base + file.name,\n mime: 'audio/' + ext,\n epoch: file.epoch,\n size: file.size,\n module: 'samplernn',\n dataset: name,\n activity: 'train',\n datatype: 'audio',\n generated: true,\n created_at: new Date(file.date),\n updated_at: new Date(file.date)\n });\n }).concat(a);\n }, []);\n break;\n case 'Upload':\n promises = names.reduce(function (a, name) {\n return datasetLookup[name].input.map(function (id) {\n return fileLookup[id];\n }).map(function (file) {\n if (file.persisted) return null;\n var partz = file.name.split('.');\n var ext = partz.pop();\n if (ext === 'wav' || ext === 'flac') return;\n console.log(file);\n return _actions2.default.socket.upload_file({\n folder_id: folder_id,\n module: 'samplernn',\n activity: 'train',\n path: 'datasets',\n filename: file.name,\n generated: false,\n processed: false,\n datatype: 'audio',\n ttl: 60000\n });\n }).concat(a);\n }, []).filter(function (a) {\n return !!a;\n });\n break;\n default:\n break;\n }\n console.log(promises);\n return Promise.all(promises).then(function (data) {\n console.log(data);\n window.location.href = '/samplernn/datasets/' + folder_id + '/';\n }).catch(function (e) {\n console.error(e);\n });\n };\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar samplernnModule = {\n name: 'samplernn',\n displayName: 'SampleRNN',\n datatype: 'audio'\n};\n\nexports.default = samplernnModule;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _types = require('../../types');\n\nvar _types2 = _interopRequireDefault(_types);\n\nvar _dataset = require('../../dataset/dataset.reducer');\n\nvar _dataset2 = _interopRequireDefault(_dataset);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar samplernnInitialState = {\n loading: true,\n progress: { i: 0, n: 0 },\n error: null,\n folders: [],\n folder_id: 0,\n data: null,\n lossReport: null,\n results: null\n};\n\nvar samplernnReducer = function samplernnReducer() {\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : samplernnInitialState;\n var action = arguments[1];\n\n if (action.data && action.data.module === 'samplernn') {\n return (0, _dataset2.default)(state, action);\n }\n\n switch (action.type) {\n case _types2.default.samplernn.load_loss:\n return _extends({}, state, {\n lossReport: action.lossReport\n });\n case _types2.default.samplernn.load_graph:\n return _extends({}, state, {\n lossReport: action.lossReport,\n results: action.results\n });\n default:\n return state;\n }\n};\n\nexports.default = samplernnReducer;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.clear_cache_task = exports.log_task = exports.fetch_task = exports.generate_task = exports.train_task = undefined;\n\nvar _v = require('uuid/v1');\n\nvar _v2 = _interopRequireDefault(_v);\n\nvar _socket = require('../../socket');\n\nvar _socket2 = _interopRequireDefault(_socket);\n\nvar _types = require('../../types');\n\nvar _types2 = _interopRequireDefault(_types);\n\nvar _actions = require('../../actions');\n\nvar _actions2 = _interopRequireDefault(_actions);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar train_task = exports.train_task = function train_task(dataset, folder_id) {\n var epochs = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;\n return function (dispatch) {\n var task = {\n module: 'samplernn',\n activity: 'train',\n dataset: dataset.name,\n epoch: dataset.checkpoints.length ? dataset.checkpoints[0].epoch || 0 : 0,\n epochs: epochs,\n folder_id: folder_id,\n opt: {\n sample_length: 44100 * 5,\n n_samples: 6,\n keep_old_checkpoints: false\n }\n };\n console.log(task);\n return _actions2.default.queue.add_task(task);\n };\n};\nvar generate_task = exports.generate_task = function generate_task(dataset, folder_id) {\n var sample_length = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 5;\n var n_samples = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 6;\n var epoch = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 0;\n return function (dispatch) {\n var task = {\n module: 'samplernn',\n activity: 'generate',\n dataset: dataset.name,\n epoch: epoch || dataset.checkpoints.length && dataset.checkpoints[0].epoch || 0,\n folder_id: folder_id,\n opt: {\n sample_length: Math.round(44100 * sample_length),\n n_samples: n_samples\n }\n };\n console.log(task);\n return _actions2.default.queue.add_task(task);\n };\n};\nvar fetch_task = exports.fetch_task = function fetch_task(url, folder_id, file_id, dataset) {\n return function (dispatch) {\n if (!url) return console.log('input file inaccessible (no url)');\n var task = {\n module: 'samplernn',\n activity: 'fetch',\n dataset: dataset,\n folder_id: folder_id,\n opt: {\n url: url,\n file_id: file_id,\n dataset: dataset\n }\n };\n return _actions2.default.queue.add_task(task);\n };\n};\nvar log_task = exports.log_task = function log_task(dataset) {\n return function (dispatch) {\n var task = {\n module: 'samplernn',\n activity: 'log',\n dataset: dataset.name\n };\n return _actions2.default.queue.add_task(task);\n };\n};\nvar clear_cache_task = exports.clear_cache_task = function clear_cache_task(dataset) {\n return function (dispatch) {\n var task = {\n module: 'samplernn',\n activity: 'clear_cache',\n dataset: dataset.name\n };\n return _actions2.default.queue.add_task(task);\n };\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _preact = require('preact');\n\nvar _redux = require('redux');\n\nvar _reactRedux = require('react-redux');\n\nvar _util = require('../../../util');\n\nvar _util2 = _interopRequireDefault(_util);\n\nvar _samplernn = require('../samplernn.actions');\n\nvar samplernnActions = _interopRequireWildcard(_samplernn);\n\nvar _group = require('../../../common/group.component');\n\nvar _group2 = _interopRequireDefault(_group);\n\nvar _slider = require('../../../common/slider.component');\n\nvar _slider2 = _interopRequireDefault(_slider);\n\nvar _select = require('../../../common/select.component');\n\nvar _select2 = _interopRequireDefault(_select);\n\nvar _button = require('../../../common/button.component');\n\nvar _button2 = _interopRequireDefault(_button);\n\nvar _fileList = require('../../../common/fileList.component');\n\nvar _textInput = require('../../../common/textInput.component');\n\nvar _textInput2 = _interopRequireDefault(_textInput);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar lerp = _util2.default.lerp,\n norm = _util2.default.norm,\n randint = _util2.default.randint,\n randrange = _util2.default.randrange;\n\nvar SampleRNNGraph = function (_Component) {\n _inherits(SampleRNNGraph, _Component);\n\n function SampleRNNGraph(props) {\n _classCallCheck(this, SampleRNNGraph);\n\n var _this = _possibleConstructorReturn(this, (SampleRNNGraph.__proto__ || Object.getPrototypeOf(SampleRNNGraph)).call(this));\n\n props.actions.load_graph();\n return _this;\n }\n\n _createClass(SampleRNNGraph, [{\n key: 'render',\n value: function render() {\n var _this2 = this;\n\n this.refs = {};\n return (0, _preact.h)(\n 'div',\n { className: 'app lossGraph' },\n (0, _preact.h)(\n 'div',\n { className: 'heading' },\n (0, _preact.h)(\n 'h3',\n null,\n 'SampleRNN Loss Graph'\n ),\n (0, _preact.h)('canvas', { ref: function ref(_ref) {\n return _this2.refs['canvas'] = _ref;\n } })\n )\n );\n }\n }, {\n key: 'componentDidUpdate',\n value: function componentDidUpdate() {\n var _props$samplernn = this.props.samplernn,\n lossReport = _props$samplernn.lossReport,\n results = _props$samplernn.results;\n\n if (!lossReport || !results) return;\n var canvas = this.refs.canvas;\n canvas.width = window.innerWidth;\n canvas.height = window.innerHeight;\n canvas.style.width = canvas.width + 'px';\n canvas.style.height = canvas.height + 'px';\n\n var ctx = canvas.getContext('2d');\n var w = canvas.width;\n var h = canvas.height;\n ctx.clearRect(0, 0, w, h);\n\n var resultsByDate = results.map(function (file) {\n if (!file.name.match(/^exp:/)) return null;\n var dataset = file.name.split(\"-\")[3].split(\":\")[1];\n return [+new Date(file.date), dataset];\n }).filter(function (a) {\n return !!a;\n }).sort(function (a, b) {\n return a[0] - a[1];\n });\n\n var keys = Object.keys(lossReport).filter(function (k) {\n return !!lossReport[k].length;\n });\n var scaleMax = 0;\n var scaleMin = Infinity;\n var epochsMax = 0;\n keys.forEach(function (key) {\n var loss = lossReport[key];\n epochsMax = Math.max(loss.length, epochsMax);\n loss.forEach(function (a) {\n var v = parseFloat(a.training_loss);\n if (!v) return;\n scaleMax = Math.max(v, scaleMax);\n scaleMin = Math.min(v, scaleMin);\n });\n });\n // scaleMax *= 10\n // console.log(scaleMax, scaleMin, epochsMax)\n\n scaleMax = 3;\n scaleMin = 0;\n var margin = 0;\n var wmin = 0;\n var wmax = w / 2;\n var hmin = 0;\n var hmax = h / 2;\n var epochsScaleFactor = 1; // 3/2\n\n ctx.save();\n var X = void 0,\n Y = void 0;\n for (var ii = 0; ii < epochsMax; ii++) {\n X = lerp(ii / (epochsMax / epochsScaleFactor) * epochsScaleFactor, wmin, wmax);\n ctx.strokeStyle = 'rgba(0,0,0,0.3)';\n ctx.beginPath(0, 0);\n ctx.moveTo(X, 0);\n ctx.lineTo(X, h);\n ctx.lineWidth = 0.5;\n // ctx.stroke()\n if ((ii + 1) % 6 === 0) {\n ctx.lineWidth = 0.5;\n ctx.stroke();\n var fontSize = 12;\n ctx.font = 'italic ' + fontSize + 'px \"Georgia\"';\n ctx.fillStyle = 'rgba(0,12,28,0.6)';\n ctx.fillText(ii / 5 * 6, X + 8, h - (fontSize + 4));\n }\n }\n for (var ii = scaleMin; ii < scaleMax; ii += 1) {\n Y = lerp(ii / scaleMax, hmin, hmax);\n // ctx.strokeStyle = 'rgba(255,255,255,1.0)'\n ctx.beginPath(0, 0);\n ctx.moveTo(0, h - Y);\n ctx.lineTo(w, h - Y);\n ctx.lineWidth = 1;\n // ctx.stroke() \n // if ( (ii % 1) < 0.1) {\n // ctx.strokeStyle = 'rgba(255,255,255,1.0)'\n ctx.lineWidth = 2;\n ctx.setLineDash([4, 4]);\n ctx.stroke();\n ctx.stroke();\n ctx.stroke();\n ctx.setLineDash([1, 1]);\n var _fontSize = 12;\n ctx.font = 'italic ' + _fontSize + 'px \"Georgia\"';\n ctx.fillStyle = 'rgba(0,12,28,0.6)';\n ctx.fillText(ii.toFixed(1), w - 50, h - Y + _fontSize + 10);\n // }\n }\n ctx.lineWidth = 1;\n ctx.restore();\n\n var min_date = resultsByDate[0][0];\n var max_date = resultsByDate[resultsByDate.length - 1][0];\n resultsByDate.forEach(function (pair) {\n var date = pair[0];\n var key = pair[1];\n var loss = lossReport[key];\n if (!key || !loss || !loss.length) return;\n var vf = parseFloat(loss[loss.length - 1].training_loss) || 0;\n var vg = parseFloat(loss[0].training_loss) || 5;\n // console.log(vf)\n var vv = 1 - norm(vf, scaleMin, scaleMax / 2);\n ctx.lineWidth = (1 - norm(vf, scaleMin, scaleMax)) * 4;\n // ctx.lineWidth = norm(date, min_date, max_date) * 3\n // console.log(date, min_date, max_date)\n ctx.strokeStyle = 'rgba(' + [randrange(30, 190), randrange(30, 150), randrange(60, 120)].join(',') + ',' + 0.8 + ')';\n var begun = false;\n loss.forEach(function (a, i) {\n var v = parseFloat(a.training_loss);\n if (!v) return;\n var x = lerp(i / (epochsMax / epochsScaleFactor) * epochsScaleFactor, wmin, wmax);\n var y = lerp(norm(v, scaleMin, scaleMax), hmax, hmin);\n if (!begun) {\n begun = true;\n ctx.beginPath(0, 0);\n ctx.moveTo(x, y);\n } else {\n ctx.lineTo(x, y);\n // ctx.stroke()\n }\n });\n ctx.stroke();\n var i = loss.length - 1;\n var v = parseFloat(loss[i].training_loss);\n var x = lerp(i / (epochsMax / epochsScaleFactor) * epochsScaleFactor, wmin, wmax);\n var y = lerp(norm(v, scaleMin, scaleMax), hmax, hmin);\n var fontSize = 9;\n ctx.font = 'italic ' + fontSize + 'px \"Georgia\"';\n ctx.fillStyle = 'rgba(0,12,28,0.6)';\n ctx.fillText(key, x + 4, y + fontSize / 2);\n });\n }\n }]);\n\n return SampleRNNGraph;\n}(_preact.Component);\n\nvar mapStateToProps = function mapStateToProps(state) {\n return {\n samplernn: state.module.samplernn\n };\n};\n\nvar mapDispatchToProps = function mapDispatchToProps(dispatch, ownProps) {\n return {\n actions: (0, _redux.bindActionCreators)(samplernnActions, dispatch)\n };\n};\n\nexports.default = (0, _reactRedux.connect)(mapStateToProps, mapDispatchToProps)(SampleRNNGraph);","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _preact = require('preact');\n\nvar _redux = require('redux');\n\nvar _reactRedux = require('react-redux');\n\nvar _util = require('../../../util');\n\nvar _util2 = _interopRequireDefault(_util);\n\nvar _samplernn = require('../samplernn.actions');\n\nvar samplernnActions = _interopRequireWildcard(_samplernn);\n\nvar _select = require('../../../common/select.component');\n\nvar _select2 = _interopRequireDefault(_select);\n\nvar _textInput = require('../../../common/textInput.component');\n\nvar _textInput2 = _interopRequireDefault(_textInput);\n\nvar _button = require('../../../common/button.component');\n\nvar _button2 = _interopRequireDefault(_button);\n\nvar _dataset = require('../../../dataset/dataset.component');\n\nvar _dataset2 = _interopRequireDefault(_dataset);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar samplernnModule = {\n name: 'samplernn',\n datatype: 'audio'\n};\n\nvar SampleRNNImport = function (_Component) {\n _inherits(SampleRNNImport, _Component);\n\n function SampleRNNImport() {\n _classCallCheck(this, SampleRNNImport);\n\n var _this = _possibleConstructorReturn(this, (SampleRNNImport.__proto__ || Object.getPrototypeOf(SampleRNNImport)).call(this));\n\n _this.state = {\n folder_id: 1,\n import_action: 'Hotlink',\n url_base: 'https://s3.amazonaws.com/i.asdf.us/bucky/data/4279/',\n selected: {}\n };\n return _this;\n }\n\n _createClass(SampleRNNImport, [{\n key: 'componentWillMount',\n value: function componentWillMount() {\n var id = this.props.match.params.id || localStorage.getItem('samplernn.last_id');\n console.log('load dataset:', id);\n var _props = this.props,\n match = _props.match,\n samplernn = _props.samplernn,\n samplernnActions = _props.samplernnActions;\n\n if (id === 'new') return;\n if (id) {\n if (parseInt(id)) localStorage.setItem('samplernn.last_id', id);\n if (!samplernn.folder || samplernn.folder.id !== id) {\n this.props.actions.load_directories(id);\n }\n }\n }\n }, {\n key: 'render',\n value: function render() {\n var _this2 = this;\n\n var samplernn = this.props.samplernn;\n\n var datasets = [],\n folder = void 0;\n if (this.props.samplernn.data) {\n datasets = (this.props.samplernn.data.folders || []).map(function (folder) {\n return [folder.name, folder.id];\n });\n folder = this.props.samplernn.data.folderLookup.unsorted;\n }\n return (0, _preact.h)(\n 'div',\n { className: 'app top' },\n (0, _preact.h)(\n 'div',\n { 'class': 'heading' },\n (0, _preact.h)(\n 'h1',\n null,\n 'Import'\n )\n ),\n (0, _preact.h)(\n 'div',\n { 'class': 'params form row datasets' },\n (0, _preact.h)(\n 'div',\n { 'class': 'row dataset' },\n (0, _preact.h)('div', { 'class': 'col' }),\n (0, _preact.h)('div', { 'class': 'col' }),\n (0, _preact.h)('div', { 'class': 'col' }),\n (0, _preact.h)(\n 'div',\n { 'class': 'col' },\n (0, _preact.h)(\n 'h2',\n null,\n 'Import to dataset'\n ),\n (0, _preact.h)(_select2.default, {\n title: 'Destination dataset',\n options: datasets,\n name: 'folder_id',\n opt: this.state,\n onChange: function onChange(name, value) {\n return _this2.setState({ folder_id: value });\n }\n }),\n (0, _preact.h)(_select2.default, {\n title: 'Import action',\n options: ['Hotlink', 'Upload'],\n name: 'import_action',\n opt: this.state,\n onChange: function onChange(name, value) {\n return _this2.setState({ import_action: value });\n }\n }),\n (0, _preact.h)(_textInput2.default, {\n title: 'Remote URL base',\n value: this.state.url_base,\n placeholder: 'http://',\n onSave: function onSave(value) {\n return _this2.setState({ url_base: value });\n }\n }),\n (0, _preact.h)(\n _button2.default,\n {\n title: '',\n onClick: function onClick() {\n return _this2.doImport();\n }\n },\n 'Import'\n )\n )\n )\n ),\n (0, _preact.h)(_dataset2.default, {\n loading: samplernn.loading,\n progress: samplernn.progress,\n module: samplernnModule,\n data: samplernn.data,\n id: 'unsorted',\n folder: folder,\n history: this.props.history,\n onPickDataset: function onPickDataset(dataset) {\n return _this2.toggle(dataset.name, _this2.state.selected[name]);\n },\n beforeRow: function beforeRow(dataset) {\n return _this2.beforeRow(dataset);\n },\n afterRow: function afterRow(dataset) {\n return _this2.afterRow(dataset);\n }\n })\n );\n }\n }, {\n key: 'toggle',\n value: function toggle(name) {\n this.setState(_extends({}, this.state, {\n selected: _extends({}, this.state.selected, _defineProperty({}, name, !this.state.selected[name]))\n }));\n }\n }, {\n key: 'beforeRow',\n value: function beforeRow(dataset) {\n // console.log(dataset)\n }\n }, {\n key: 'afterRow',\n value: function afterRow(dataset) {\n var name = dataset.name;\n return (0, _preact.h)(\n 'div',\n null,\n (0, _preact.h)('input', {\n type: 'checkbox',\n value: name,\n checked: !!this.state.selected[name]\n })\n );\n }\n }, {\n key: 'doImport',\n value: function doImport() {\n var samplernn = this.props.samplernn;\n\n console.log(this.state);\n this.props.actions.import_files(this.state, samplernn.data.datasetLookup, samplernn.data.fileLookup);\n }\n }]);\n\n return SampleRNNImport;\n}(_preact.Component);\n\nvar mapStateToProps = function mapStateToProps(state) {\n return {\n samplernn: state.module.samplernn,\n runner: state.system.runner,\n task: state.task\n };\n};\n\nvar mapDispatchToProps = function mapDispatchToProps(dispatch, ownProps) {\n return {\n actions: (0, _redux.bindActionCreators)(samplernnActions, dispatch)\n };\n};\n\nexports.default = (0, _reactRedux.connect)(mapStateToProps, mapDispatchToProps)(SampleRNNImport);","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _preact = require('preact');\n\nvar _redux = require('redux');\n\nvar _reactRedux = require('react-redux');\n\nvar _reactRouterDom = require('react-router-dom');\n\nvar _util = require('../../../util');\n\nvar _util2 = _interopRequireDefault(_util);\n\nvar _common = require('../../../common');\n\nvar _samplernn = require('../samplernn.actions');\n\nvar samplernnActions = _interopRequireWildcard(_samplernn);\n\nvar _samplernn2 = require('../samplernn.module');\n\nvar _samplernn3 = _interopRequireDefault(_samplernn2);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction SampleRNNNew(props) {\n return (0, _preact.h)(_common.Views.New, {\n db: props.samplernn,\n path: '/samplernn/datasets/',\n actions: props.actions,\n module: _samplernn3.default,\n history: props.history\n });\n}\n\nvar mapStateToProps = function mapStateToProps(state) {\n return {\n samplernn: state.module.samplernn\n };\n};\n\nvar mapDispatchToProps = function mapDispatchToProps(dispatch, ownProps) {\n return {\n actions: (0, _redux.bindActionCreators)(samplernnActions, dispatch)\n };\n};\n\nexports.default = (0, _reactRedux.connect)(mapStateToProps, mapDispatchToProps)(SampleRNNNew);","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _preact = require('preact');\n\nvar _redux = require('redux');\n\nvar _reactRouterDom = require('react-router-dom');\n\nvar _reactRedux = require('react-redux');\n\nvar _util = require('../../../util');\n\nvar _util2 = _interopRequireDefault(_util);\n\nvar _samplernn = require('../samplernn.actions');\n\nvar samplernnActions = _interopRequireWildcard(_samplernn);\n\nvar _audioPlayer = require('../../../common/audioPlayer/audioPlayer.actions');\n\nvar audioPlayerActions = _interopRequireWildcard(_audioPlayer);\n\nvar _loading = require('../../../common/loading.component');\n\nvar _loading2 = _interopRequireDefault(_loading);\n\nvar _fileList = require('../../../common/fileList.component');\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar SampleRNNResults = function (_Component) {\n _inherits(SampleRNNResults, _Component);\n\n function SampleRNNResults(props) {\n _classCallCheck(this, SampleRNNResults);\n\n var _this = _possibleConstructorReturn(this, (SampleRNNResults.__proto__ || Object.getPrototypeOf(SampleRNNResults)).call(this));\n\n if (!props.samplernn.data) props.actions.load_directories();\n return _this;\n }\n\n _createClass(SampleRNNResults, [{\n key: 'render',\n value: function render() {\n var _this2 = this;\n\n if (this.props.samplernn.loading) return (0, _preact.h)(_loading2.default, { progress: this.props.samplernn.progress });\n var _props$samplernn$data = this.props.samplernn.data,\n folderLookup = _props$samplernn$data.folderLookup,\n fileLookup = _props$samplernn$data.fileLookup,\n datasetLookup = _props$samplernn$data.datasetLookup;\n // const { folderLookup } = samplernn\n\n var renders = Object.keys(folderLookup).sort(_util2.default.sort.stringSort.asc).map(function (key) {\n var folder = folderLookup[key];\n\n var _util$sort$orderByFn = _util2.default.sort.orderByFn('epoch desc'),\n mapFn = _util$sort$orderByFn.mapFn,\n sortFn = _util$sort$orderByFn.sortFn;\n\n var datasetPairs = folder.datasets.map(function (name) {\n return datasetLookup[name];\n }).map(mapFn).sort(sortFn);\n var bestRenders = datasetPairs.map(function (pair) {\n return pair[1];\n }).filter(function (dataset) {\n return dataset.output.length;\n }).map(function (dataset) {\n var output = dataset.output;\n\n return output.map(function (id) {\n return fileLookup[id];\n }).map(mapFn).sort(sortFn)[0][1];\n });\n // console.log(bestRenders.map(r => r.epoch))\n var path = folder.name === 'unsorted' ? \"/samplernn/import/\" : \"/samplernn/datasets/\" + folder.id + \"/\";\n return (0, _preact.h)(\n 'div',\n { className: 'col bestRenders' },\n (0, _preact.h)(\n 'h3',\n null,\n (0, _preact.h)(\n _reactRouterDom.Link,\n { to: path },\n folder.name\n )\n ),\n (0, _preact.h)(_fileList.FileList, {\n linkFiles: true,\n files: bestRenders,\n orderBy: 'date desc',\n fields: 'name date epoch size',\n onClick: function onClick(file, e) {\n e.preventDefault();\n e.stopPropagation();\n console.log('picked a file', file);\n _this2.handlePick(file);\n }\n })\n );\n });\n\n return (0, _preact.h)(\n 'div',\n { className: 'app samplernn' },\n (0, _preact.h)(\n 'div',\n { className: 'heading row middle' },\n (0, _preact.h)(\n 'h1',\n null,\n 'SampleRNN Results'\n )\n ),\n (0, _preact.h)(\n 'div',\n { 'class': 'rows params renders' },\n renders\n )\n );\n }\n }, {\n key: 'handlePick',\n value: function handlePick(file) {\n this.props.audioPlayer.play(file);\n }\n }]);\n\n return SampleRNNResults;\n}(_preact.Component);\n\nvar mapStateToProps = function mapStateToProps(state) {\n return {\n samplernn: state.module.samplernn\n };\n};\n\nvar mapDispatchToProps = function mapDispatchToProps(dispatch, ownProps) {\n return {\n actions: (0, _redux.bindActionCreators)(samplernnActions, dispatch),\n audioPlayer: (0, _redux.bindActionCreators)(audioPlayerActions, dispatch)\n };\n};\n\nexports.default = (0, _reactRedux.connect)(mapStateToProps, mapDispatchToProps)(SampleRNNResults);","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _preact = require('preact');\n\nvar _redux = require('redux');\n\nvar _reactRedux = require('react-redux');\n\nvar _util = require('../../../util');\n\nvar _util2 = _interopRequireDefault(_util);\n\nvar _samplernn = require('../samplernn.actions');\n\nvar samplernnActions = _interopRequireWildcard(_samplernn);\n\nvar _samplernn2 = require('../samplernn.tasks');\n\nvar samplernnTasks = _interopRequireWildcard(_samplernn2);\n\nvar _audioPlayer = require('../../../common/audioPlayer/audioPlayer.actions');\n\nvar audioPlayerActions = _interopRequireWildcard(_audioPlayer);\n\nvar _common = require('../../../common');\n\nvar _dataset = require('../../../dataset/dataset.form');\n\nvar _dataset2 = _interopRequireDefault(_dataset);\n\nvar _upload = require('../../../dataset/upload.status');\n\nvar _upload2 = _interopRequireDefault(_upload);\n\nvar _dataset3 = require('../../../dataset/dataset.component');\n\nvar _dataset4 = _interopRequireDefault(_dataset3);\n\nvar _samplernn3 = require('../samplernn.module');\n\nvar _samplernn4 = _interopRequireDefault(_samplernn3);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar SampleRNNShow = function (_Component) {\n _inherits(SampleRNNShow, _Component);\n\n function SampleRNNShow(props) {\n _classCallCheck(this, SampleRNNShow);\n\n var _this = _possibleConstructorReturn(this, (SampleRNNShow.__proto__ || Object.getPrototypeOf(SampleRNNShow)).call(this, props));\n\n _this.datasetActions = _this.datasetActions.bind(_this);\n return _this;\n }\n\n _createClass(SampleRNNShow, [{\n key: 'componentWillMount',\n value: function componentWillMount() {\n var id = this.props.match.params.id || localStorage.getItem('samplernn.last_id');\n console.log('load dataset:', id);\n var _props = this.props,\n match = _props.match,\n samplernn = _props.samplernn,\n actions = _props.actions;\n\n if (id === 'new') return;\n if (id) {\n if (parseInt(id)) localStorage.setItem('samplernn.last_id', id);\n if (!samplernn.folder || samplernn.folder.id !== id) {\n // console.log('looooooooooad', id)\n actions.load_directories(id);\n }\n } else {\n this.props.history.push('/samplernn/new/');\n }\n }\n }, {\n key: 'render',\n value: function render() {\n var _this2 = this;\n\n var _props2 = this.props,\n samplernn = _props2.samplernn,\n runner = _props2.runner,\n match = _props2.match,\n history = _props2.history;\n\n var _ref = samplernn.data || {},\n folderLookup = _ref.folderLookup;\n // console.log(runner)\n\n\n var folder = (folderLookup || {})[samplernn.folder_id] || {};\n return (0, _preact.h)(\n 'div',\n { className: 'app samplernn' },\n (0, _preact.h)(\n 'div',\n { className: 'heading' },\n (0, _preact.h)(\n 'h1',\n null,\n folder ? folder.name : (0, _preact.h)(_common.Loading, null)\n )\n ),\n (0, _preact.h)(\n 'div',\n { className: 'row' },\n folder && folder.name && folder.name !== 'unsorted' && (0, _preact.h)(_dataset2.default, {\n title: 'Add Files',\n module: _samplernn4.default,\n folder: folder,\n canUpload: true, canAddURL: true\n }),\n (0, _preact.h)(\n 'div',\n null,\n (0, _preact.h)(_upload2.default, null),\n (0, _preact.h)(_common.CurrentTask, { processor: 'gpu' })\n )\n ),\n (0, _preact.h)(_dataset4.default, {\n loading: samplernn.loading,\n progress: samplernn.progress,\n id: samplernn.folder_id,\n module: _samplernn4.default,\n data: samplernn.data,\n folder: folder,\n history: history,\n onPickFile: function onPickFile(file, e) {\n e.preventDefault();\n e.stopPropagation();\n // console.log('picked a file', file)\n _this2.handlePick(file);\n },\n datasetActions: this.datasetActions\n })\n );\n }\n }, {\n key: 'datasetActions',\n value: function datasetActions(dataset) {\n var isFetching = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var isProcessing = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n var _props3 = this.props,\n samplernn = _props3.samplernn,\n remote = _props3.remote;\n\n var input = samplernn.data.fileLookup[dataset.input[0]];\n if (!input) return null;\n if (input.name && input.name.match(/(gif|jpe?g|png)$/i)) return null;\n return (0, _preact.h)(\n 'div',\n null,\n (0, _preact.h)(\n 'div',\n { 'class': 'actions' },\n (0, _preact.h)(\n 'span',\n { 'class': 'link', onClick: function onClick() {\n return remote.train_task(dataset, samplernn.folder_id, 1);\n } },\n 'train'\n ),\n (0, _preact.h)(\n 'span',\n { 'class': 'link', onClick: function onClick() {\n return remote.train_task(dataset, samplernn.folder_id, 2);\n } },\n '2x'\n ),\n (0, _preact.h)(\n 'span',\n { 'class': 'link', onClick: function onClick() {\n return remote.train_task(dataset, samplernn.folder_id, 4);\n } },\n '4x'\n ),\n (0, _preact.h)(\n 'span',\n { 'class': 'link', onClick: function onClick() {\n return remote.train_task(dataset, samplernn.folder_id, 6);\n } },\n '6x'\n ),\n (0, _preact.h)(\n 'span',\n { 'class': 'link', onClick: function onClick() {\n return remote.train_task(dataset, samplernn.folder_id, 18);\n } },\n '18x'\n )\n ),\n (0, _preact.h)(\n 'div',\n { 'class': 'actions' },\n (0, _preact.h)(\n 'span',\n { 'class': 'link', onClick: function onClick() {\n return remote.generate_task(dataset, samplernn.folder_id, 5, 12);\n } },\n 'generate'\n ),\n (0, _preact.h)(\n 'span',\n { 'class': 'link', onClick: function onClick() {\n return remote.generate_task(dataset, samplernn.folder_id, 0.5, 120);\n } },\n '/2'\n ),\n (0, _preact.h)(\n 'span',\n { 'class': 'link', onClick: function onClick() {\n return remote.generate_task(dataset, samplernn.folder_id, 0.25, 240);\n } },\n '/4'\n ),\n (0, _preact.h)(\n 'span',\n { 'class': 'link', onClick: function onClick() {\n return remote.generate_task(dataset, samplernn.folder_id, 0.125, 480);\n } },\n '/8'\n ),\n (0, _preact.h)(\n 'span',\n { 'class': 'link', onClick: function onClick() {\n return remote.generate_task(dataset, samplernn.folder_id, 0.0625, 960);\n } },\n '/16'\n )\n ),\n (0, _preact.h)(\n 'div',\n { 'class': 'actions' },\n (0, _preact.h)(\n 'span',\n { 'class': 'link', onClick: function onClick() {\n return remote.generate_task(dataset, samplernn.folder_id, 2, 30);\n } },\n '2s'\n ),\n (0, _preact.h)(\n 'span',\n { 'class': 'link', onClick: function onClick() {\n return remote.generate_task(dataset, samplernn.folder_id, 10, 6);\n } },\n '10s'\n ),\n (0, _preact.h)(\n 'span',\n { 'class': 'link', onClick: function onClick() {\n return remote.generate_task(dataset, samplernn.folder_id, 15, 4);\n } },\n '15s'\n ),\n (0, _preact.h)(\n 'span',\n { 'class': 'link', onClick: function onClick() {\n return remote.generate_task(dataset, samplernn.folder_id, 30, 2);\n } },\n '30s'\n ),\n (0, _preact.h)(\n 'span',\n { 'class': 'link', onClick: function onClick() {\n return remote.generate_task(dataset, samplernn.folder_id, 60, 1);\n } },\n '1m'\n )\n ),\n dataset.isBuilt ? (0, _preact.h)(\n 'div',\n { 'class': 'subtext' },\n 'fetched ',\n (0, _preact.h)(\n 'span',\n { 'class': 'link', onClick: function onClick() {\n return remote.clear_cache_task(dataset);\n } },\n 'x'\n )\n ) : isFetching ? (0, _preact.h)(\n 'div',\n { 'class': 'subtext' },\n 'fetching'\n ) : (0, _preact.h)(\n 'div',\n { 'class': 'subtext' },\n (0, _preact.h)(\n 'span',\n { 'class': 'link', onClick: function onClick() {\n return remote.fetch_task(input.url, samplernn.folder_id, input.id, dataset.name);\n } },\n 'fetch'\n )\n )\n );\n }\n }, {\n key: 'handlePick',\n value: function handlePick(file) {\n // console.log(file)\n this.props.audioPlayer.play(file);\n }\n }]);\n\n return SampleRNNShow;\n}(_preact.Component);\n\nvar mapStateToProps = function mapStateToProps(state) {\n return {\n samplernn: state.module.samplernn,\n runner: state.system.runner\n };\n};\n\nvar mapDispatchToProps = function mapDispatchToProps(dispatch, ownProps) {\n return {\n actions: (0, _redux.bindActionCreators)(samplernnActions, dispatch),\n remote: (0, _redux.bindActionCreators)(samplernnTasks, dispatch),\n audioPlayer: (0, _redux.bindActionCreators)(audioPlayerActions, dispatch)\n };\n};\n\nexports.default = (0, _reactRedux.connect)(mapStateToProps, mapDispatchToProps)(SampleRNNShow);","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.stop_queue = exports.start_queue = exports.add_task = exports.stop_task = exports.start_task = undefined;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _socket = require('../socket');\n\nvar _socket2 = _interopRequireDefault(_socket);\n\nvar _types = require('../types');\n\nvar _types2 = _interopRequireDefault(_types);\n\nvar _actions = require('../actions');\n\nvar _actions2 = _interopRequireDefault(_actions);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar start_task = exports.start_task = function start_task(task) {\n var opt = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n _socket2.default.task.start_task(task, opt);\n return _extends({ type: _types2.default.task.starting_task, task: task }, opt);\n};\n\nvar stop_task = exports.stop_task = function stop_task(task) {\n var opt = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n _socket2.default.task.stop_task(task, opt);\n return _extends({ type: _types2.default.task.stopping_task, task: task }, opt);\n};\n\nvar add_task = exports.add_task = function add_task(new_task) {\n return function (dispatch) {\n _actions2.default.task.create(new_task).then(function (task) {\n _socket2.default.task.add_task(task);\n });\n };\n};\n\nvar start_queue = exports.start_queue = function start_queue(task) {\n var opt = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n _socket2.default.task.start_queue(task, opt);\n return _extends({ type: _types2.default.task.starting_queue, task: task }, opt);\n};\n\nvar stop_queue = exports.stop_queue = function stop_queue(task) {\n var opt = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n _socket2.default.task.stop_queue(task, opt);\n return _extends({ type: _types2.default.task.stopping_queue, task: task }, opt);\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _types = require('../types');\n\nvar _types2 = _interopRequireDefault(_types);\n\nvar _util = require('../util');\n\nvar _util2 = _interopRequireDefault(_util);\n\nvar _moment = require('moment/min/moment.min');\n\nvar _moment2 = _interopRequireDefault(_moment);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar queueInitialState = {\n loading: false,\n error: null,\n tasks: {},\n queue: [],\n completed: []\n};\n\nvar dateSort = _util2.default.sort.orderByFn('updated_at desc');\nvar prioritySort = _util2.default.sort.orderByFn('priority asc');\n\nvar queueReducer = function queueReducer() {\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : queueInitialState;\n var action = arguments[1];\n\n switch (action.type) {\n case _types2.default.task.index:\n return _extends({}, state, {\n tasks: action.data.reduce(function (a, b) {\n return a[b.id] = b, a;\n }, {}),\n queue: action.data.filter(function (a) {\n return !a.completed;\n }).map(dateSort.mapFn).sort(dateSort.sortFn).map(function (pair) {\n return pair[1].id;\n }),\n completed: action.data.filter(function (a) {\n return a.completed;\n }).map(prioritySort.mapFn).sort(prioritySort.sortFn).map(function (pair) {\n return pair[1].id;\n })\n });\n case _types2.default.task.create:\n console.log(action.data);\n return _extends({}, state, {\n tasks: _extends({}, state.tasks, _defineProperty({}, action.data.id, action.data)),\n queue: state.queue.concat([action.data.id])\n });\n case _types2.default.task.update:\n return _extends({}, state, {\n tasks: _extends({}, state.tasks, _defineProperty({}, action.data.id, action.data))\n });\n case _types2.default.task.destroy:\n var _state$tasks = state.tasks,\n deletedTask = _state$tasks[action.data.id],\n taskLookup = _objectWithoutProperties(_state$tasks, [action.data.id]);\n\n return _extends({}, state, {\n queue: state.queue.filter(function (id) {\n return id !== deletedTask.id;\n }),\n completed: state.completed.filter(function (id) {\n return id !== deletedTask.id;\n }),\n tasks: taskLookup\n });\n case _types2.default.task.task_finish:\n return _extends({}, state, {\n queue: state.queue.filter(function (a) {\n return a !== action.task.id;\n }),\n completed: [action.task.id].concat(state.completed)\n });\n default:\n return state;\n }\n};\n\nexports.default = queueReducer;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _store = require('../store');\n\nvar _types = require('../types');\n\nvar _types2 = _interopRequireDefault(_types);\n\nvar _socket = require('./socket.connection');\n\nvar _socket2 = require('./socket.actions');\n\nvar actions = _interopRequireWildcard(_socket2);\n\nvar _socket3 = require('./socket.system');\n\nvar system = _interopRequireWildcard(_socket3);\n\nvar _socket4 = require('./socket.live');\n\nvar live = _interopRequireWildcard(_socket4);\n\nvar _socket5 = require('./socket.task');\n\nvar task = _interopRequireWildcard(_socket5);\n\nvar _socket6 = require('./socket.api');\n\nvar api = _interopRequireWildcard(_socket6);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = {\n socket: _socket.socket,\n actions: actions,\n system: system,\n live: live,\n task: task,\n api: api\n};\n\n\n_socket.socket.on('status', function (data) {\n console.log('got status', data.key, data.value);\n _store.store.dispatch(_extends({ type: _types2.default.socket.status }, data));\n switch (data.key) {\n case 'processing':\n _store.store.dispatch(_extends({\n type: 'SET_PARAM'\n }, data));\n break;\n default:\n break;\n }\n});","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.syscall_async = exports.thumbnail = exports.read_file = exports.upload_file = exports.run_script = exports.list_sequences = exports.count_directory = exports.list_directory = exports.disk_usage = exports.run_system_command = undefined;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _v = require('uuid/v1');\n\nvar _v2 = _interopRequireDefault(_v);\n\nvar _socket = require('./socket.connection');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar run_system_command = exports.run_system_command = function run_system_command(opt) {\n return syscall_async('run_system_command', opt);\n};\nvar disk_usage = exports.disk_usage = function disk_usage(opt) {\n return syscall_async('run_system_command', _extends({ cmd: 'du' }, opt));\n};\nvar list_directory = exports.list_directory = function list_directory(opt) {\n return syscall_async('list_directory', opt).then(function (res) {\n return res.files;\n });\n};\nvar count_directory = exports.count_directory = function count_directory(opt) {\n return syscall_async('count_directory', opt).then(function (res) {\n return res.count;\n });\n};\nvar list_sequences = exports.list_sequences = function list_sequences(opt) {\n return syscall_async('list_sequences', opt).then(function (res) {\n return res.sequences;\n });\n};\nvar run_script = exports.run_script = function run_script(opt) {\n return syscall_async('run_script', opt);\n};\nvar upload_file = exports.upload_file = function upload_file(opt) {\n return syscall_async('upload_file', opt);\n};\nvar read_file = exports.read_file = function read_file(opt) {\n return syscall_async('read_file', opt).then(function (res) {\n return res.file;\n });\n};\nvar thumbnail = exports.thumbnail = function thumbnail(opt) {\n return syscall_async('thumbnail', opt).then(function (res) {\n return res.file;\n });\n};\n\nvar syscall_async = exports.syscall_async = function syscall_async(tag, payload) {\n var ttl = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 10000;\n\n ttl = payload.ttl || ttl;\n return new Promise(function (resolve, reject) {\n var uuid = (0, _v2.default)();\n var timeout = setTimeout(function () {\n _socket.socket.off('system_res', cb);\n reject('timeout');\n }, ttl);\n var cb = function cb(data) {\n if (!data.uuid) return;\n if (data.uuid === uuid) {\n clearTimeout(timeout);\n _socket.socket.off('system_res', cb);\n resolve(data);\n }\n };\n _socket.socket.emit('system', { cmd: tag, payload: payload, uuid: uuid });\n _socket.socket.on('system_res', cb);\n });\n};","'use strict';\n\nvar _store = require('../store');\n\nvar _types = require('../types');\n\nvar _types2 = _interopRequireDefault(_types);\n\nvar _socket = require('./socket.connection');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n_socket.socket.on('api_res', function (data) {\n // console.log('system response', data)\n data = parse(data);\n var type = _types2.default[data.datatype];\n console.log('api_res', data.type, data.datatype);\n if (!type) return console.error('socket:api_res bad datatype', data.datatype);\n switch (data.type) {\n case 'create':\n return (0, _store.dispatch)({\n type: type.create,\n source: 'socket',\n data: data.data\n });\n case 'update':\n return (0, _store.dispatch)({\n type: type.update,\n source: 'socket',\n data: data.data\n });\n case 'destroy':\n return (0, _store.dispatch)({\n type: type.destroy,\n source: 'socket',\n data: data.data\n });\n default:\n break;\n }\n});\n\nfunction parse(s) {\n if (typeof s === 'string') {\n try {\n var d = JSON.parse(s);\n return d;\n } catch (e) {\n console.error('not valid json');\n return s;\n }\n }\n return s;\n}","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.socket = undefined;\n\nvar _store = require('../store');\n\nvar _types = require('../types');\n\nvar _types2 = _interopRequireDefault(_types);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar socket = exports.socket = io.connect('/client');\n\n// SOCKET ACTIONS\n\nsocket.on('connect', function () {\n return _store.store.dispatch({ type: _types2.default.socket.connect });\n});\nsocket.on('connect_error', function (error) {\n return _store.store.dispatch({ type: _types2.default.socket.connect_error, error: error });\n});\nsocket.on('reconnect', function (attempt) {\n return _store.store.dispatch({ type: _types2.default.socket.reconnect, attempt: attempt });\n});\nsocket.on('reconnecting', function () {\n return _store.store.dispatch({ type: _types2.default.socket.reconnecting });\n});\nsocket.on('reconnect_error', function (error) {\n return _store.store.dispatch({ type: _types2.default.socket.reconnect_error, error: error });\n});\nsocket.on('reconnect_failed', function (error) {\n return _store.store.dispatch({ type: _types2.default.socket.reconnect_failed, error: error });\n});\nsocket.on('disconnect', function () {\n return _store.store.dispatch({ type: _types2.default.socket.disconnect });\n});\nsocket.on('error', function (error) {\n return _store.store.dispatch({ type: _types2.default.socket.error, error: error });\n});","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.send_command = send_command;\nexports.list_checkpoints = list_checkpoints;\nexports.list_all_checkpoints = list_all_checkpoints;\nexports.list_epochs = list_epochs;\nexports.list_sequences = list_sequences;\nexports.load_epoch = load_epoch;\nexports.load_sequence = load_sequence;\nexports.seek = seek;\nexports.pause = pause;\nexports.play = play;\nexports.get_params = get_params;\nexports.set_param = set_param;\n\nvar _store = require('../store');\n\nvar _types = require('../types');\n\nvar _types2 = _interopRequireDefault(_types);\n\nvar _player = require('../live/player');\n\nvar player = _interopRequireWildcard(_player);\n\nvar _socket = require('./socket.connection');\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n_socket.socket.on('res', function (data) {\n // console.log('socket:', data.cmd)\n switch (data.cmd) {\n case 'get_last_frame':\n if (data.res !== 'working') {\n _socket.socket.emit('cmd', {\n cmd: 'get_last_frame'\n });\n }\n break;\n case 'get_params':\n data.res && (0, _store.dispatch)({\n type: _types2.default.socket.load_params,\n opt: data.res\n });\n data.res && player.toggleFPS(data.res.processing);\n break;\n case 'list_checkpoints':\n (0, _store.dispatch)({\n type: _types2.default.socket.list_checkpoints,\n checkpoints: data.res\n });\n break;\n case 'list_all_checkpoints':\n (0, _store.dispatch)({\n type: _types2.default.socket.list_all_checkpoints,\n checkpoints: data.res\n });\n break;\n case 'list_epochs':\n (0, _store.dispatch)({\n type: _types2.default.socket.list_epochs,\n epochs: data.res\n });\n break;\n case 'list_sequences':\n (0, _store.dispatch)({\n type: _types2.default.socket.list_sequences,\n sequences: data.res\n });\n break;\n default:\n break;\n }\n // console.log(data)\n});\n\n_socket.socket.on('frame', player.onFrame);\n\nfunction send_command(cmd, payload) {\n _socket.socket.emit('cmd', {\n cmd: cmd, payload: payload\n });\n}\nfunction list_checkpoints(module) {\n _socket.socket.emit('cmd', {\n cmd: 'list_checkpoints',\n payload: module\n });\n}\nfunction list_all_checkpoints(module) {\n _socket.socket.emit('cmd', {\n cmd: 'list_all_checkpoints',\n payload: module\n });\n}\nfunction list_epochs(module, checkpoint_name) {\n _socket.socket.emit('cmd', {\n cmd: 'list_epochs',\n payload: module === 'pix2pix' || module === 'pix2wav' ? module + '/' + checkpoint_name : checkpoint_name\n });\n}\nfunction list_sequences(module) {\n _socket.socket.emit('cmd', {\n cmd: 'list_sequences',\n payload: module\n });\n}\nfunction load_epoch(checkpoint_name, epoch) {\n console.log(\">> SWITCH CHECKPOINT\", checkpoint_name, epoch);\n _socket.socket.emit('cmd', {\n cmd: 'load_epoch',\n payload: checkpoint_name + ':' + epoch\n });\n}\nfunction load_sequence(sequence) {\n _socket.socket.emit('cmd', {\n cmd: 'load_sequence',\n payload: sequence\n });\n}\nfunction seek(frame) {\n _socket.socket.emit('cmd', {\n cmd: 'seek',\n payload: frame\n });\n}\nfunction pause(frame) {\n _socket.socket.emit('cmd', {\n cmd: 'pause'\n });\n}\nfunction play(frame) {\n _socket.socket.emit('cmd', {\n cmd: 'play'\n });\n}\nfunction get_params() {\n _socket.socket.emit('cmd', {\n cmd: 'get_params'\n });\n}\nfunction set_param(key, value) {\n _socket.socket.emit('cmd', {\n cmd: 'set_param',\n payload: {\n 'key': key,\n 'value': value\n }\n });\n}","'use strict';\n\nvar _store = require('../store');\n\nvar _types = require('../types');\n\nvar _types2 = _interopRequireDefault(_types);\n\nvar _socket = require('./socket.connection');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n_socket.socket.on('system_res', function (data) {\n // console.log('system response', data)\n switch (data.type) {\n case 'relay_connected':\n return (0, _store.dispatch)({\n type: _types2.default.system.relay_connected\n });\n case 'relay_disconnected':\n return (0, _store.dispatch)({\n type: _types2.default.system.relay_disconnected\n });\n case 'rpc_connected':\n return (0, _store.dispatch)({\n type: _types2.default.system.rpc_connected,\n runner: data.runner\n });\n case 'rpc_disconnected':\n return (0, _store.dispatch)({\n type: _types2.default.system.rpc_disconnected\n });\n case 'relay_status':\n return (0, _store.dispatch)({\n type: data.rpc_connected ? _types2.default.system.rpc_connected : _types2.default.system.rpc_disconnected,\n runner: data.runner\n });\n case 'site':\n return (0, _store.dispatch)({\n type: _types2.default.system.load_site,\n site: data.site\n });\n default:\n break;\n }\n});","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.stop_queue = exports.start_queue = exports.stop_task = exports.start_task = exports.remove_task = exports.add_task = undefined;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nexports.emit = emit;\n\nvar _store = require('../store');\n\nvar _types = require('../types');\n\nvar _types2 = _interopRequireDefault(_types);\n\nvar _socket = require('./socket.connection');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar finishTimeout = void 0;\n\n_socket.socket.on('task_res', function (raw_data) {\n // does not like the nested task object for some reason..\n var data = void 0;\n try {\n if (typeof raw_data === 'string') {\n data = JSON.parse(raw_data);\n if (typeof data === 'string') {\n data = JSON.parse(data);\n }\n } else {\n data = raw_data;\n }\n } catch (e) {\n console.warn('problem with json', e);\n return;\n }\n if (data.task) {\n (0, _store.dispatch)({ type: _types2.default.task.update, data: data.task });\n }\n // console.log('task', data.type)\n switch (data.type) {\n case 'start':\n // return dispatch({ type: types.system.rpc_connected, runner: data.runner })\n break;\n case 'stop':\n break;\n // begin and finish calls often arrive out of order, if the old task was preempted\n case 'task_begin':\n (0, _store.dispatch)({ type: _types2.default.task.task_begin, task: data.task });\n break;\n case 'task_finish':\n (0, _store.dispatch)({ type: _types2.default.task.task_finish, task: data.task });\n break;\n case 'kill':\n break;\n case 'stdout':\n return (0, _store.dispatch)({ type: _types2.default.system.stdout, data: data });\n break;\n case 'stderr':\n return (0, _store.dispatch)({ type: _types2.default.system.stderr, data: data });\n break;\n case 'add':\n break;\n case 'remove':\n break;\n case 'start_queue':\n break;\n case 'stop_queue':\n break;\n case 'list':\n break;\n case 'set_priority':\n break;\n case 'progress':\n (0, _store.dispatch)({ type: _types2.default.task.progress, task: data.task });\n break;\n case 'epoch':\n (0, _store.dispatch)({ type: _types2.default.task.epoch, task: data.task });\n break;\n case 'task_error':\n return console.log('task error', data);\n default:\n console.log(data);\n return console.log('no such task command', data.type);\n }\n});\n\nfunction emit(type) {\n var task = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var opt = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n _socket.socket.emit('task', _extends({ type: type, task: task }, opt));\n}\n\nvar add_task = exports.add_task = function add_task(task) {\n var opt = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return emit('add', task, opt);\n};\nvar remove_task = exports.remove_task = function remove_task(task) {\n var opt = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return emit('remove', task, opt);\n};\nvar start_task = exports.start_task = function start_task(task) {\n var opt = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return emit('start', task, opt);\n};\nvar stop_task = exports.stop_task = function stop_task(task) {\n var opt = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return emit('stop', task, opt);\n};\nvar start_queue = exports.start_queue = function start_queue() {\n var opt = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n return emit('start_queue', {}, opt);\n};\nvar stop_queue = exports.stop_queue = function stop_queue() {\n var opt = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n return emit('stop_queue', {}, opt);\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.dispatch = exports.store = exports.history = undefined;\n\nvar _redux = require('redux');\n\nvar _reactRouterRedux = require('react-router-redux');\n\nvar _reduxThunk = require('redux-thunk');\n\nvar _reduxThunk2 = _interopRequireDefault(_reduxThunk);\n\nvar _createBrowserHistory = require('history/createBrowserHistory');\n\nvar _createBrowserHistory2 = _interopRequireDefault(_createBrowserHistory);\n\nvar _auth = require('./auth/auth.reducer');\n\nvar _auth2 = _interopRequireDefault(_auth);\n\nvar _live = require('./live/live.reducer');\n\nvar _live2 = _interopRequireDefault(_live);\n\nvar _queue = require('./queue/queue.reducer');\n\nvar _queue2 = _interopRequireDefault(_queue);\n\nvar _system = require('./system/system.reducer');\n\nvar _system2 = _interopRequireDefault(_system);\n\nvar _upload = require('./dataset/upload.reducer');\n\nvar _upload2 = _interopRequireDefault(_upload);\n\nvar _dashboard = require('./dashboard/dashboard.reducer');\n\nvar _dashboard2 = _interopRequireDefault(_dashboard);\n\nvar _audioPlayer = require('./common/audioPlayer/audioPlayer.reducer');\n\nvar _audioPlayer2 = _interopRequireDefault(_audioPlayer);\n\nvar _module = require('./modules/module.reducer');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// import navReducer from './nav.reducer'\nvar appReducer = (0, _redux.combineReducers)({\n router: _reactRouterRedux.routerReducer,\n auth: _auth2.default,\n live: _live2.default,\n queue: _queue2.default,\n system: _system2.default,\n upload: _upload2.default,\n dashboard: _dashboard2.default,\n audioPlayer: _audioPlayer2.default,\n module: _module.moduleReducer\n});\n\nvar history = exports.history = (0, _createBrowserHistory2.default)();\nvar store = exports.store = (0, _redux.createStore)(appReducer, (0, _redux.compose)((0, _redux.applyMiddleware)(\n// createLogger(),\n_reduxThunk2.default, (0, _reactRouterRedux.routerMiddleware)(history))));\n\nvar dispatch = exports.dispatch = store.dispatch;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.enqueue_test_task = exports.changeLanguage = exports.changeTool = exports.countDirectory = exports.listDirectory = exports.run = undefined;\n\nvar _socket = require('../socket');\n\nvar _socket2 = _interopRequireDefault(_socket);\n\nvar _types = require('../types');\n\nvar _types2 = _interopRequireDefault(_types);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// import actions from '../actions'\n\nvar run = exports.run = function run(cmd) {\n return function (dispatch) {\n dispatch({ type: _types2.default.system.running_command, cmd: cmd });\n _socket2.default.actions.run_system_command({ cmd: cmd }).then(function (data) {\n dispatch({\n type: _types2.default.system.command_output,\n data: data\n });\n });\n };\n};\n\nvar listDirectory = exports.listDirectory = function listDirectory(opt) {\n return function (dispatch) {\n dispatch({ type: _types2.default.system.listing_directory, opt: opt });\n _socket2.default.actions.list_directory(opt).then(function (data) {\n dispatch({\n type: _types2.default.system.list_directory,\n data: data\n });\n });\n };\n};\n\nvar countDirectory = exports.countDirectory = function countDirectory(opt) {\n return function (dispatch) {\n dispatch({ type: _types2.default.system.counting_directory, opt: opt });\n _socket2.default.actions.count_directory(opt).then(function (data) {\n dispatch({\n type: _types2.default.system.count_directory,\n data: data\n });\n });\n };\n};\n\nvar changeTool = exports.changeTool = function changeTool(tool) {\n localStorage.setItem('system.last_tool', tool);\n return { type: _types2.default.app.change_tool, tool: tool };\n};\n\nvar changeLanguage = exports.changeLanguage = function changeLanguage(language) {\n localStorage.setItem('cortex.i18n.language', language);\n return { type: _types2.default.system.change_language, language: language };\n};\n\nvar enqueue_test_task = exports.enqueue_test_task = function enqueue_test_task(dataset) {\n return function (dispatch) {\n var task = {\n module: 'test',\n activity: 'cpu',\n dataset: dataset\n // return actions.queue.add_task(task)\n };\n };\n};\n\nwindow.addEventListener('keyDown', function (e) {\n if (e.altKey) {\n switch (e.keyCode) {\n case 192:\n // tilde - switch tool\n break;\n case 49:\n // 1\n break;\n case 50:\n // 2\n break;\n case 51:\n // 3\n break;\n case 52:\n // 4\n break;\n case 53:\n // 5\n break;\n case 54:\n // 6\n break;\n case 55:\n // 7\n break;\n case 56:\n // 8\n break;\n case 57:\n // 9\n break;\n case 48:\n // 0\n break;\n }\n }\n});","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _preact = require('preact');\n\nvar _redux = require('redux');\n\nvar _reactRedux = require('react-redux');\n\nvar _group = require('../common/group.component');\n\nvar _group2 = _interopRequireDefault(_group);\n\nvar _param = require('../common/param.component');\n\nvar _param2 = _interopRequireDefault(_param);\n\nvar _system = require('./system.actions');\n\nvar systemActions = _interopRequireWildcard(_system);\n\nvar _live = require('../live/live.actions');\n\nvar liveActions = _interopRequireWildcard(_live);\n\nvar _queue = require('../queue/queue.actions');\n\nvar queueActions = _interopRequireWildcard(_queue);\n\nvar _auth = require('../auth/auth.actions');\n\nvar authActions = _interopRequireWildcard(_auth);\n\nvar _i18n = require('../i18n');\n\nvar i18n = _interopRequireWildcard(_i18n);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar cpu_test_task = {\n activity: 'cpu',\n module: 'test',\n dataset: 'test',\n epochs: 1,\n opt: {}\n};\nvar gpu_test_task = {\n activity: 'gpu',\n module: 'test',\n dataset: 'test',\n epochs: 1,\n opt: {}\n};\nvar live_test_task = {\n activity: 'live',\n module: 'test',\n dataset: 'test',\n epochs: 1,\n opt: {}\n};\nvar wait_test_task = {\n activity: 'wait',\n module: 'test',\n dataset: 'test',\n epochs: 1,\n opt: {}\n};\nvar fruits = [\"apple\", \"pear\", \"orange\", \"strawberry\"];\nfunction choice(a) {\n return a[Math.floor(Math.random() * a.length)];\n}\n\nvar System = function (_Component) {\n _inherits(System, _Component);\n\n function System(props) {\n _classCallCheck(this, System);\n\n return _possibleConstructorReturn(this, (System.__proto__ || Object.getPrototypeOf(System)).call(this));\n }\n\n _createClass(System, [{\n key: 'componentDidUpdate',\n value: function componentDidUpdate() {\n if (this._screen.scrollHeight > this._screen.scrollTop - this._screen.offsetHeight + 100) {\n this._screen.scrollTop = this._screen.scrollHeight;\n }\n }\n }, {\n key: 'render',\n value: function render() {\n var _props = this.props,\n site = _props.site,\n server = _props.server,\n relay = _props.relay,\n runner = _props.runner,\n rpc = _props.rpc,\n actions = _props.actions,\n user = _props.user;\n\n return (0, _preact.h)(\n 'div',\n { className: 'app system' },\n (0, _preact.h)(\n 'div',\n { className: 'heading' },\n (0, _preact.h)(\n 'h1',\n null,\n site.name,\n ' system'\n )\n ),\n (0, _preact.h)(\n 'div',\n { className: 'row params' },\n (0, _preact.h)(\n 'div',\n { className: 'column' },\n (0, _preact.h)(\n _group2.default,\n { title: 'Status' },\n (0, _preact.h)(\n _param2.default,\n { title: 'Server' },\n server.status\n ),\n server.error && (0, _preact.h)(\n _param2.default,\n { title: 'Server error' },\n server.error.message\n ),\n (0, _preact.h)(\n _param2.default,\n { title: 'Relay' },\n relay.status\n ),\n (0, _preact.h)(\n _param2.default,\n { title: 'RPC' },\n rpc.status\n ),\n (0, _preact.h)(\n _param2.default,\n { title: 'CPU' },\n this.renderStatus(runner.cpu)\n ),\n (0, _preact.h)(\n _param2.default,\n { title: 'GPU' },\n this.renderStatus(runner.gpu)\n )\n ),\n (0, _preact.h)(\n _group2.default,\n { title: 'Diagnostics' },\n (0, _preact.h)(\n _param2.default,\n { title: 'Check GPU' },\n (0, _preact.h)(\n 'button',\n { onClick: function onClick() {\n return actions.system.run('nvidia-smi');\n } },\n 'nvidia-smi'\n )\n ),\n (0, _preact.h)(\n _param2.default,\n { title: 'List processes' },\n (0, _preact.h)(\n 'button',\n { onClick: function onClick() {\n return actions.system.run('ps');\n } },\n 'ps'\n )\n ),\n (0, _preact.h)(\n _param2.default,\n { title: 'List users' },\n (0, _preact.h)(\n 'button',\n { onClick: function onClick() {\n return actions.system.run('w');\n } },\n 'w'\n )\n ),\n (0, _preact.h)(\n _param2.default,\n { title: 'Disk free space' },\n (0, _preact.h)(\n 'button',\n { onClick: function onClick() {\n return actions.system.run('df');\n } },\n 'df'\n )\n )\n ),\n (0, _preact.h)(\n _group2.default,\n { title: 'Tasks' },\n (0, _preact.h)(\n _param2.default,\n { title: 'Kill task' },\n (0, _preact.h)(\n 'button',\n { onClick: function onClick() {\n return actions.queue.stop_task('cpu');\n } },\n 'CPU'\n ),\n (0, _preact.h)(\n 'button',\n { onClick: function onClick() {\n return actions.queue.stop_task('gpu');\n } },\n 'GPU'\n )\n ),\n (0, _preact.h)(\n _param2.default,\n { title: 'Queue' },\n (0, _preact.h)(\n 'button',\n { onClick: function onClick() {\n return actions.queue.start_queue();\n } },\n 'Start'\n ),\n (0, _preact.h)(\n 'button',\n { onClick: function onClick() {\n return actions.queue.stop_queue();\n } },\n 'Stop'\n )\n )\n ),\n (0, _preact.h)(\n _group2.default,\n { title: 'Auth' },\n (0, _preact.h)(\n _param2.default,\n { title: 'Logged in as ' + user.username },\n (0, _preact.h)(\n 'button',\n { onClick: function onClick() {\n return actions.auth.logout();\n } },\n 'Logout'\n )\n )\n ),\n (0, _preact.h)(\n _group2.default,\n { title: 'Test' },\n (0, _preact.h)(\n _param2.default,\n { title: 'CPU Test Task' },\n (0, _preact.h)(\n 'button',\n { onClick: function onClick() {\n return actions.queue.start_task(cpu_test_task, { preempt: true, watch: true });\n } },\n 'Start'\n ),\n (0, _preact.h)(\n 'button',\n { onClick: function onClick() {\n return actions.queue.stop_task(runner.cpu.task);\n } },\n 'Stop'\n )\n ),\n (0, _preact.h)(\n _param2.default,\n { title: 'GPU Test Task' },\n (0, _preact.h)(\n 'button',\n { onClick: function onClick() {\n return actions.queue.start_task(gpu_test_task, { preempt: true, watch: true });\n } },\n 'Start'\n ),\n (0, _preact.h)(\n 'button',\n { onClick: function onClick() {\n return actions.queue.stop_task(runner.gpu.task);\n } },\n 'Stop'\n )\n ),\n (0, _preact.h)(\n _param2.default,\n { title: 'Live Test Task' },\n (0, _preact.h)(\n 'button',\n { onClick: function onClick() {\n return actions.queue.start_task(live_test_task, { preempt: true, watch: true });\n } },\n 'Start'\n ),\n (0, _preact.h)(\n 'button',\n { onClick: function onClick() {\n return actions.queue.stop_task(runner.cpu.task);\n } },\n 'Stop'\n )\n ),\n (0, _preact.h)(\n _param2.default,\n { title: 'Test Live RPC' },\n (0, _preact.h)(\n 'button',\n { onClick: function onClick() {\n return actions.live.get_params();\n } },\n 'Get'\n ),\n (0, _preact.h)(\n 'button',\n { onClick: function onClick() {\n return actions.live.set_param('fruit', choice(fruits));\n } },\n 'Set'\n )\n ),\n (0, _preact.h)(\n _param2.default,\n { title: 'Queue Tests' },\n (0, _preact.h)(\n 'button',\n { onClick: function onClick() {\n return actions.system.enqueue_test_task(choice(fruits));\n } },\n '+Add test task'\n )\n ),\n (0, _preact.h)(\n _param2.default,\n { title: '' },\n (0, _preact.h)(\n 'button',\n { onClick: function onClick() {\n return actions.queue.start_task(wait_test_task, { preempt: true, watch: true });\n } },\n 'Wait and Buzz'\n )\n )\n ),\n (0, _preact.h)(\n _group2.default,\n { title: 'Internationalization' },\n (0, _preact.h)(\n _param2.default,\n { title: 'Language' },\n i18n.languages.map(function (language) {\n return (0, _preact.h)(\n 'button',\n { onClick: function onClick() {\n return actions.system.changeLanguage(language);\n } },\n language\n );\n })\n )\n )\n ),\n this.renderCommandOutput()\n )\n );\n }\n }, {\n key: 'renderStatus',\n value: function renderStatus(processor) {\n if (!processor) {\n return 'unknown';\n }\n if (processor.status === 'IDLE') {\n return 'idle';\n }\n var task = processor.task;\n return task.activity + ' ' + task.module;\n }\n }, {\n key: 'renderCommandOutput',\n value: function renderCommandOutput() {\n var _this2 = this;\n\n var _props2 = this.props,\n cmd = _props2.cmd,\n stdout = _props2.stdout,\n stderr = _props2.stderr;\n\n var output = void 0;\n if (cmd.loading) {\n output = 'Loading: ' + cmd.name;\n } else if (cmd.loaded) {\n if (cmd.error) {\n output = 'Error: ' + cmd.name + '\\n\\n' + JSON.stringify(cmd.error, null, 2);\n } else {\n output = cmd.stdout;\n if (cmd.stderr) {\n output += '\\n\\n_________________________________\\n\\n';\n output += cmd.stderr;\n }\n }\n } else {\n output = stdout;\n if (stderr.length) {\n output += '\\n\\n_________________________________\\n\\n';\n output += stderr;\n }\n }\n return (0, _preact.h)(\n 'div',\n null,\n (0, _preact.h)(\n 'div',\n { ref: function ref(_ref) {\n return _this2._screen = _ref;\n }, className: 'screen' },\n output\n )\n );\n }\n }]);\n\n return System;\n}(_preact.Component);\n\nvar mapStateToProps = function mapStateToProps(state) {\n return _extends({\n user: state.auth.user\n }, state.system, state.live);\n};\n\nvar mapDispatchToProps = function mapDispatchToProps(dispatch, ownProps) {\n return {\n actions: {\n auth: (0, _redux.bindActionCreators)(authActions, dispatch),\n system: (0, _redux.bindActionCreators)(systemActions, dispatch),\n queue: (0, _redux.bindActionCreators)(queueActions, dispatch),\n live: (0, _redux.bindActionCreators)(liveActions, dispatch)\n }\n };\n};\n\nexports.default = (0, _reactRedux.connect)(mapStateToProps, mapDispatchToProps)(System);","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _types = require('../types');\n\nvar _types2 = _interopRequireDefault(_types);\n\nvar _moment = require('moment/min/moment.min');\n\nvar _moment2 = _interopRequireDefault(_moment);\n\nvar _i18n = require('../i18n');\n\nvar i18n = _interopRequireWildcard(_i18n);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nvar FileSaver = require('file-saver');\n\nvar initialLanguage = localStorage.getItem('cortex.i18n.language') || process.env.I18N_LANGUAGE || 'en';\n\nvar systemInitialState = {\n loading: false,\n error: null,\n\n site: {\n name: 'loading'\n },\n env: {\n env: process.env.NODE_ENV,\n production: process.env.NODE_ENV === 'production',\n development: process.env.NODE_ENV !== 'production'\n },\n i18n: {\n language: initialLanguage,\n strings: i18n.strings(initialLanguage)\n },\n app: {\n tool: localStorage.getItem('system.last_tool') || 'pix2pixhd'\n },\n server: {\n connected: false,\n status: \"disconnected\",\n error: null\n },\n relay: {\n connected: false,\n status: \"unknown\",\n error: null\n },\n rpc: {\n connected: false,\n status: \"disconnected\",\n error: null\n },\n cmd: {\n loading: false,\n loaded: false,\n name: null,\n error: null,\n stdout: \"\",\n stderr: \"\"\n },\n runner: {\n cpu: { status: 'IDLE', task: {} },\n gpu: { status: 'IDLE', task: {} }\n },\n stdout: \"\",\n stderr: \"\"\n};\n\nvar modules = ['pix2pix', 'pix2pixhd', 'pix2wav', 'samplernn', 'morph'].reduce(function (a, b) {\n return a[b] = b, a;\n}, {});\n\nvar systemReducer = function systemReducer() {\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : systemInitialState;\n var action = arguments[1];\n\n // console.log(action.type)\n var processor = null;\n switch (action.type) {\n case _types2.default.socket.connect:\n case _types2.default.socket.reconnecting:\n return _extends({}, state, {\n server: {\n status: 'connected',\n connected: true,\n error: null\n }\n });\n case _types2.default.socket.reconnect:\n return _extends({}, state, {\n server: {\n status: 'reconnecting (attempt ' + action.attempt + ')',\n connected: false,\n error: null\n }\n });\n case _types2.default.socket.connect_error:\n case _types2.default.socket.reconnect_error:\n case _types2.default.socket.disconnect:\n case _types2.default.socket.reconnect_failed:\n return _extends({}, state, {\n server: {\n status: 'disconnected',\n connected: false,\n error: action.error || null\n }\n });\n case _types2.default.socket.error:\n return _extends({}, state, {\n server: _extends({}, state.socket, {\n error: action.error\n })\n });\n case _types2.default.system.relay_connected:\n return _extends({}, state, {\n relay: {\n status: 'connected',\n connected: true,\n error: null\n }\n });\n case _types2.default.system.relay_disconnected:\n return _extends({}, state, {\n relay: {\n status: 'disconnected',\n connected: false,\n error: null\n },\n rpc: {\n status: 'disconnected',\n connected: false,\n error: null\n }\n });\n case _types2.default.system.rpc_connected:\n return _extends({}, state, {\n rpc: {\n status: 'connected',\n connected: true,\n error: null\n },\n runner: action.runner\n });\n case _types2.default.system.rpc_disconnected:\n return _extends({}, state, {\n rpc: {\n status: 'disconnected',\n connected: false,\n error: null\n },\n runner: action.runner || state.runner\n });\n case _types2.default.system.load_site:\n document.querySelector('title').innerHTML = action.site.name + '.cortex';\n var tool = state.app.tool;\n var path = window.location.pathname.split('/')[1];\n if (path in modules) {\n tool = path;\n }\n return _extends({}, state, {\n site: action.site,\n app: _extends({}, state.app, {\n tool: tool\n })\n });\n case _types2.default.system.running_command:\n return _extends({}, state, {\n cmd: {\n loading: true,\n loaded: false,\n name: action.cmd,\n error: null,\n stdout: null,\n stderr: null\n }\n });\n case _types2.default.system.command_output:\n return _extends({}, state, {\n cmd: {\n loading: false,\n loaded: true,\n name: action.data.cmd,\n error: action.data.error,\n stdout: action.data.stdout,\n stderr: action.data.stderr\n }\n });\n case _types2.default.task.task_begin:\n console.log('task begin', action.task, action.task.processor);\n return _extends({}, state, {\n runner: _extends({}, state.runner, _defineProperty({}, action.task.processor, { status: 'RUNNING', task: action.task })),\n cmd: _extends({}, state.cmd, {\n loaded: false,\n stdout: \"\",\n stderr: \"\"\n }),\n stdout: \"\",\n stderr: \"\"\n });\n case _types2.default.task.task_finish:\n if (action.task.processor === 'cpu' || state.runner.cpu.task && state.runner.cpu.task.uuid === action.task.uuid) {\n processor = 'cpu';\n } else if (action.task.processor === 'gpu' || state.runner.gpu.task && state.runner.gpu.task.uuid === action.task.uuid) {\n processor = 'gpu';\n } else {\n processor = null;\n }\n console.log('task finish', action);\n return _extends({}, state, {\n rpc: {\n connected: false,\n status: \"disconnected\",\n error: null\n },\n runner: processor ? _extends({}, state.runner, _defineProperty({}, processor, { status: 'IDLE', task: {} })) : state.runner\n });\n case _types2.default.app.change_tool:\n return _extends({}, state, {\n app: _extends({}, state.app, {\n tool: action.tool\n })\n });\n case _types2.default.system.stdout:\n if (action.data.processor && state.runner[action.data.processor]) {\n return _extends({}, state, {\n runner: _extends({}, state.runner, _defineProperty({}, action.data.processor, _extends({}, state.runner[action.data.processor], {\n last_message: action.data.data\n }))),\n stdout: state.stdout + action.data.data\n });\n }\n return _extends({}, state, {\n stdout: state.stdout + action.data.data\n });\n case _types2.default.system.stderr:\n return _extends({}, state, {\n last_message: action.data.data,\n stderr: state.stderr + action.data.data\n });\n case _types2.default.system.change_language:\n return _extends({}, state, {\n i18n: {\n language: action.language,\n strings: i18n.strings(action.language)\n }\n });\n\n default:\n return state;\n }\n};\n\nexports.default = systemReducer;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _crud = require('./api/crud.types');\n\nexports.default = {\n\tsystem: {\n\t\tload_site: 'SYSTEM_LOAD_SITE',\n\t\trunning_command: 'SYSTEM_RUNNING_COMMAND',\n\t\tcommand_output: 'SYSTEM_COMMAND_OUTPUT',\n\t\trelay_connected: 'SYSTEM_RELAY_CONNECTED',\n\t\trelay_disconnected: 'SYSTEM_RELAY_DISCONNECTED',\n\t\trpc_connected: 'SYSTEM_RPC_CONNECTED',\n\t\trpc_disconnected: 'SYSTEM_RPC_DISCONNECTED',\n\t\tlist_directory: 'SYSTEM_LIST_DIRECTORY',\n\t\tlisting_directory: 'SYSTEM_LISTING_DIRECTORY',\n\t\tcount_directory: 'SYSTEM_COUNT_DIRECTORY',\n\t\tcounting_directory: 'SYSTEM_COUNTING_DIRECTORY',\n\t\tstdout: 'SYSTEM_STDOUT',\n\t\tstderr: 'SYSTEM_STDERR',\n\t\tchange_language: 'SYSTEM_CHANGE_LANGUAGE'\n\t},\n\tapp: {\n\t\tchange_tool: \"APP_CHANGE_TOOL\",\n\t\tload_progress: \"APP_LOAD_PROGRESS\"\n\t},\n\tfolder: (0, _crud.crud_type)('folder', []),\n\tfile: (0, _crud.crud_type)('file', []),\n\ttask: (0, _crud.crud_type)('task', ['starting_task', 'stopping_task', 'task_begin', 'task_finish', 'start_queue', 'stop_queue', 'starting_queue', 'stopping_queue', 'progress', 'epoch']),\n\tauth: (0, _crud.crud_type)('auth', ['set_token', 'set_error', 'set_current_user', 'logout_user', 'loading', 'initialized', 'set_return_to']),\n\tsocket: {\n\t\tconnect: 'SOCKET_CONNECT',\n\t\tconnect_error: 'SOCKET_CONNECT_ERROR',\n\t\treconnect: 'SOCKET_RECONNECT',\n\t\treconnecting: 'SOCKET_RECONNECTING',\n\t\treconnect_error: 'SOCKET_RECONNECT_ERROR',\n\t\treconnect_failed: 'SOCKET_RECONNECT_FAILED',\n\t\tdisconnect: 'SOCKET_DISCONNECT',\n\t\terror: 'SOCKET_ERROR',\n\t\tstatus: 'SOCKET_STATUS',\n\n\t\tload_params: 'SOCKET_LOAD_PARAMS',\n\t\tlist_checkpoints: 'SOCKET_LIST_CHECKPOINTS',\n\t\tlist_sequences: 'SOCKET_LIST_SEQUENCES',\n\t\tlist_epochs: 'SOCKET_LIST_EPOCHS'\n\t},\n\tplayer: {\n\t\tget_params: 'GET_PARAMS',\n\t\tset_param: 'SET_PARAM',\n\t\tsend_command: 'SEND_COMMAND',\n\n\t\tloading_checkpoints: 'LOADING_CHECKPOINTS',\n\t\tloading_checkpoint: 'LOADING_CHECKPOINT',\n\t\tlist_checkpoints: 'LIST_CHECKPOINTS',\n\n\t\tloading_sequences: 'LOADING_SEQUENCES',\n\t\tloading_sequence: 'LOADING_SEQUENCE',\n\t\tload_sequence: 'LOAD_SEQUENCE',\n\n\t\tloading_epochs: 'LOADING_EPOCHS',\n\t\tload_epoch: 'LOAD_EPOCH',\n\n\t\tset_fps: 'SET_FPS',\n\t\tseeking: 'SEEKING',\n\t\tpausing: 'PAUSING',\n\t\tplaying: 'PLAYING',\n\t\tcurrent_frame: 'CURRENT_FRAME',\n\t\tstart_recording: 'START_RECORDING',\n\t\tadd_record_frame: 'ADD_RECORD_FRAME',\n\t\tsave_frame: 'SAVE_FRAME',\n\t\tsaving_video: 'SAVING_VIDEO',\n\t\tsave_video: 'SAVE_VIDEO',\n\n\t\tset_fullscreen: 'SET_FULLSCREEN'\n\t},\n\taudioPlayer: {\n\t\tplay: 'AUDIO_PLAY',\n\t\tpause: 'AUDIO_PAUSE',\n\t\tresume: 'AUDIO_RESUME',\n\t\tenqueue: 'AUDIO_ENQUEUE'\n\t},\n\tdataset: {\n\t\tload: 'DATASET_LOAD',\n\t\tset_folder: 'DATASET_SET_FOLDER',\n\t\tupload_files: 'DATASET_UPLOAD_FILES',\n\t\tfile_progress: 'DATASET_FILE_PROGRESS',\n\t\tfile_uploaded: 'DATASET_FILE_UPLOADED',\n\t\tfetch_url: 'DATASET_FETCH_URL',\n\t\tfetch_progress: 'DATASET_FETCH_PROGRESS',\n\t\tlist_epochs: 'DATASET_LIST_EPOCHS'\n\t},\n\tsamplernn: {\n\t\tinit: 'SAMPLERNN_INIT',\n\t\tset_folder: 'SAMPLERNN_SET_FOLDER',\n\t\tload_loss: 'SAMPLERNN_LOAD_LOSS',\n\t\tload_graph: 'SAMPLERNN_LOAD_GRAPH'\n\t\t// queue and train\n\t\t// update checkpoint settings\n\t\t// reset checkpoint settings\n\t\t// queue new checkpoint\n\t},\n\tbiggan: (0, _crud.with_type)('biggan', ['init', 'set_folder', 'load_results', 'load_encodings']),\n\tpix2pix: (0, _crud.with_type)('pix2pix', ['init', 'set_folder']),\n\tpix2pixhd: (0, _crud.with_type)('pix2pixhd', ['init', 'set_folder', 'load_results', 'load_dataset_count', 'load_uprez']),\n\tpix2wav: (0, _crud.with_type)('pix2wav', ['init', 'set_folder']),\n\twav2pix: (0, _crud.with_type)('wav2pix', ['load', 'progress', 'finish', 'zip', 'uploading']),\n\tdashboard: (0, _crud.with_type)('dashboard', ['load']),\n\tmorph: (0, _crud.with_type)('morph', ['load'])\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.frameTimestamp = frameTimestamp;\nexports.timeInSeconds = timeInSeconds;\nexports.gerund = gerund;\nexports.commatize = commatize;\nexports.carbon_date = carbon_date;\nexports.carbon_time = carbon_time;\nexports.hush_views = hush_views;\nexports.hush_threads = hush_threads;\nexports.hush_size = hush_size;\nexports.hush_null = hush_null;\nexports.get_age = get_age;\nexports.courtesy_s = courtesy_s;\nexports.pad = pad;\nvar FRAME_RATE = 25;\nfunction frameTimestamp() {\n var n = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n\n n /= FRAME_RATE;\n var s = pad((n % 60).toFixed(1));\n n = Math.floor(n / 60);\n if (n > 60) {\n return Math.floor(n / 60) + ':' + pad(n % 60) + ':' + s;\n }\n return n % 60 + ':' + s;\n}\nfunction timeInSeconds(n) {\n return (n / 10).toFixed(1) + ' s.';\n}\nfunction gerund(s) {\n return s.replace(/e?$/, 'ing');\n}\nfunction commatize(n, radix) {\n radix = radix || 1024;\n var nums = [],\n i,\n counter = 0,\n r = Math.floor;\n if (n > radix) {\n n /= radix;\n nums.unshift(r(n * 10 % 10));\n nums.unshift(\".\");\n }\n do {\n i = n % 10;\n n = r(n / 10);\n if (n && !(++counter % 3)) {\n i = ' ' + r(i);\n }\n nums.unshift(r(i));\n } while (n);\n return nums.join(\"\");\n}\nfunction carbon_date(date, no_bold) {\n var span = (+new Date() - new Date(date)) / 1000,\n color;\n if (!no_bold && span < 86400) // modified today\n {\n color = \"new\";\n } else if (span < 604800) // modifed this week\n {\n color = \"recent\";\n } else if (span < 1209600) // modifed 2 weeks ago\n {\n color = \"med\";\n } else if (span < 3024000) // modifed 5 weeks ago\n {\n color = \"old\";\n } else if (span < 12315200) // modifed 6 months ago\n {\n color = \"older\";\n } else {\n color = \"quiet\";\n }\n return color;\n}\nfunction carbon_time(date, no_bold) {\n var span = (+new Date() - new Date(date)) / 1000,\n color;\n if (!no_bold && span < 3600) // modified this hour\n {\n color = \"new\";\n } else if (span < 3 * 3600) // modifed last 3 hours\n {\n color = \"recent\";\n } else if (span < 12 * 3600) // modifed last 12 hours\n {\n color = \"med\";\n } else if (span < 24 * 3600) // modifed last day\n {\n color = \"old\";\n } else if (span < 48 * 3600) // modifed last two days\n {\n color = \"older\";\n } else {\n color = \"quiet\";\n }\n return color;\n}\nfunction hush_views(n, bias, no_bold) {\n var txt = commatize(n, 1000);\n bias = bias || 1;\n n = n || 0;\n if (n < 30) {\n return [\"quiet\", n + \" v.\"];\n }\n if (n < 200) {\n return [\"quiet\", txt + \" v.\"];\n } else if (n < 500) {\n return [\"quiet\", txt + \" v.\"];\n } else if (n < 1000) {\n return [\"old\", txt + \" v.\"];\n } else if (n < 5000) {\n return [\"med\", txt + \" kv.\"];\n } else if (no_bold || n < 10000) {\n return [\"recent\", txt + \" kv.\"];\n } else {\n return [\"new\", txt + \" kv.\"];\n }\n}\nfunction hush_threads(n, bias, no_bold) {\n var txt = commatize(n, 1000);\n bias = bias || 1;\n n = n || 0;\n if (n < 10) {\n return [\"quiet\", n + \" t.\"];\n } else if (n < 25) {\n return [\"old\", txt + \" t.\"];\n } else if (n < 50) {\n return [\"med\", txt + \" t.\"];\n } else if (no_bold || n < 100) {\n return [\"recent\", txt + \" t.\"];\n } else {\n return [\"new\", txt + \" t.\"];\n }\n}\nfunction hush_size(n, bias, no_bold) {\n var txt = commatize(Math.round(n / 1024));\n bias = 1 || bias;\n n = n || 0;\n if (!n) {\n return ['', ''];\n }\n if (n < 1000) {\n return [\"quiet\", n + \" b.\"];\n }\n if (n < 1000000) {\n return [\"quiet\", txt + \" kb.\"];\n }\n if (n < 20000000 / bias) {\n return [\"quiet\", txt + \" mb.\"];\n }\n if (n < 50000000 / bias) {\n return [\"old\", txt + \" mb.\"];\n }\n if (n < 80000000 / bias) {\n return [\"med\", txt + \" mb.\"];\n }\n if (no_bold || n < 170000000 / bias) {\n return [\"recent\", txt + \" mb.\"];\n }\n return [\"new\", txt + \" mb.\"];\n}\nfunction hush_null(n, unit, no_bold) {\n var s = unit ? n + \" \" + unit + \".\" : n;\n if (n < 3) {\n return [\"quiet\", s];\n } else if (n < 6) {\n return [\"older\", s];\n } else if (n < 10) {\n return [\"old\", s];\n } else if (n < 16) {\n return [\"med\", s];\n } else if (no_bold || n < 21) {\n return [\"recent\", s];\n } else {\n return [\"new\", s];\n }\n}\nfunction get_age(t) {\n var age = Math.abs(+Date.now() - new Date(t)) / 1000;\n var r = Math.floor;\n var m;\n if (age < 5) {\n return \"now\";\n }\n if (age < 60) {\n return r(age) + \"s\";\n }\n age /= 60;\n if (age < 60) {\n return r(age) + \"m\";\n }\n m = r(age % 60);\n age /= 60;\n if (m > 0 && age < 2) {\n return r(age) + \"h\" + m + \"m\";\n }\n if (age < 24) {\n return r(age) + \"h\";\n }\n age /= 24;\n if (age < 7) {\n return r(age) + \"d\";\n }\n age /= 7;\n if (age < 12) {\n return r(age) + \"w\";\n }\n age /= 4;\n if (age < 12) {\n return r(age) + \"m\";\n }\n age /= 12;\n return r(age) + \"y\";\n}\nfunction courtesy_s(n, s) {\n return n == 1 ? \"\" : s || \"s\";\n}\nfunction pad(n, r) {\n return n < 10 ? '0' + n : n;\n}","'use strict';\n\n/**\n * HiDPI Canvas Polyfill (1.0.10)\n *\n * Author: Jonathan D. Johnson (http://jondavidjohn.com)\n * Homepage: https://github.com/jondavidjohn/hidpi-canvas-polyfill\n * Issue Tracker: https://github.com/jondavidjohn/hidpi-canvas-polyfill/issues\n * License: Apache-2.0\n*/\n(function (prototype) {\n\n var pixelRatio = function () {\n var canvas = window.document.createElement('canvas'),\n context = canvas.getContext('2d'),\n backingStore = context.backingStorePixelRatio || context.webkitBackingStorePixelRatio || context.mozBackingStorePixelRatio || context.msBackingStorePixelRatio || context.oBackingStorePixelRatio || context.backingStorePixelRatio || 1;\n\n return (window.devicePixelRatio || 1) / backingStore;\n }(),\n forEach = function forEach(obj, func) {\n for (var p in obj) {\n if (obj.hasOwnProperty(p)) {\n func(obj[p], p);\n }\n }\n },\n ratioArgs = {\n 'fillRect': 'all',\n 'clearRect': 'all',\n 'strokeRect': 'all',\n 'moveTo': 'all',\n 'lineTo': 'all',\n 'arc': [0, 1, 2],\n 'arcTo': 'all',\n 'bezierCurveTo': 'all',\n 'isPointinPath': 'all',\n 'isPointinStroke': 'all',\n 'quadraticCurveTo': 'all',\n 'rect': 'all',\n 'translate': 'all',\n 'createRadialGradient': 'all',\n 'createLinearGradient': 'all'\n };\n\n if (pixelRatio === 1) return;\n\n forEach(ratioArgs, function (value, key) {\n prototype[key] = function (_super) {\n return function () {\n var i,\n len,\n args = Array.prototype.slice.call(arguments);\n\n if (value === 'all') {\n args = args.map(function (a) {\n return a * pixelRatio;\n });\n } else if (Array.isArray(value)) {\n for (i = 0, len = value.length; i < len; i++) {\n args[value[i]] *= pixelRatio;\n }\n }\n\n return _super.apply(this, args);\n };\n }(prototype[key]);\n });\n\n // Stroke lineWidth adjustment\n prototype.stroke = function (_super) {\n return function () {\n this.lineWidth *= pixelRatio;\n _super.apply(this, arguments);\n this.lineWidth /= pixelRatio;\n };\n }(prototype.stroke);\n\n // Text\n //\n prototype.fillText = function (_super) {\n return function () {\n var args = Array.prototype.slice.call(arguments);\n\n args[1] *= pixelRatio; // x\n args[2] *= pixelRatio; // y\n\n this.font = this.font.replace(/(\\d+)(px|em|rem|pt)/g, function (w, m, u) {\n return m * pixelRatio + u;\n });\n\n _super.apply(this, args);\n\n this.font = this.font.replace(/(\\d+)(px|em|rem|pt)/g, function (w, m, u) {\n return m / pixelRatio + u;\n });\n };\n }(prototype.fillText);\n\n prototype.strokeText = function (_super) {\n return function () {\n var args = Array.prototype.slice.call(arguments);\n\n args[1] *= pixelRatio; // x\n args[2] *= pixelRatio; // y\n\n this.font = this.font.replace(/(\\d+)(px|em|rem|pt)/g, function (w, m, u) {\n return m * pixelRatio + u;\n });\n\n _super.apply(this, args);\n\n this.font = this.font.replace(/(\\d+)(px|em|rem|pt)/g, function (w, m, u) {\n return m / pixelRatio + u;\n });\n };\n }(prototype.strokeText);\n})(window.CanvasRenderingContext2D.prototype);\n;(function (prototype) {\n prototype.getContext = function (_super) {\n return function (type) {\n var backingStore, ratio, context;\n\n if (type == '2d-lodpi') {\n context = _super.call(this, '2d');\n } else if (type === '2d') {\n context = _super.call(this, '2d');\n\n backingStore = context.backingStorePixelRatio || context.webkitBackingStorePixelRatio || context.mozBackingStorePixelRatio || context.msBackingStorePixelRatio || context.oBackingStorePixelRatio || context.backingStorePixelRatio || 1;\n\n ratio = (window.devicePixelRatio || 1) / backingStore;\n\n if (ratio > 1) {\n this.style.height = this.height + 'px';\n this.style.width = this.width + 'px';\n this.width *= ratio;\n this.height *= ratio;\n }\n } else {\n context = _super.call(this, type);\n }\n\n return context;\n };\n }(prototype.getContext);\n})(window.HTMLCanvasElement.prototype);","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _sort = require('./sort');\n\nvar sort = _interopRequireWildcard(_sort);\n\nvar _format = require('./format');\n\nvar format = _interopRequireWildcard(_format);\n\nvar _math = require('./math');\n\nvar maths = _interopRequireWildcard(_math);\n\nrequire('./hidpi-canvas');\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\nvar is_iphone = !!(navigator.userAgent.match(/iPhone/i) || navigator.userAgent.match(/iPod/i));\nvar is_ipad = !!navigator.userAgent.match(/iPad/i);\nvar is_android = !!navigator.userAgent.match(/Android/i);\nvar is_mobile = is_iphone || is_ipad || is_android;\nvar is_desktop = !is_mobile;\n\nvar htmlClassList = document.body.parentNode.classList;\nhtmlClassList.add(is_desktop ? 'desktop' : 'mobile');\nhtmlClassList.remove('loading');\n\n// window.debug = false\n\nvar allProgress = function allProgress(promises, progress_cb) {\n var d = 0;\n progress_cb(0, 0, promises.length);\n promises.forEach(function (p) {\n p.then(function (s) {\n d += 1;\n progress_cb(Math.floor(d * 100 / promises.length), d, promises.length);\n return s;\n });\n });\n return Promise.all(promises);\n};\n\ndocument.body.style.backgroundImage = 'linear-gradient(' + (maths.randint(40) + 40) + 'deg, #fde, #ffe)';\n\nvar fieldSet = function fieldSet(defaultFields) {\n return function (fields) {\n if (fields) {\n if (fields instanceof Set) {\n return fields;\n }\n return new Set(fields.split(' '));\n }\n return defaultFields;\n };\n};\n\nexports.default = _extends({}, maths, format, {\n sort: sort,\n allProgress: allProgress, fieldSet: fieldSet,\n is_iphone: is_iphone, is_ipad: is_ipad, is_android: is_android, is_mobile: is_mobile, is_desktop: is_desktop\n});","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.gaussian = gaussian;\nvar mod = exports.mod = function mod(n, m) {\n return n - m * Math.floor(n / m);\n};\nvar clamp = exports.clamp = function clamp(n, a, b) {\n return n < a ? a : n < b ? n : b;\n};\nvar norm = exports.norm = function norm(n, a, b) {\n return (n - a) / (b - a);\n};\nvar lerp = exports.lerp = function lerp(n, a, b) {\n return (b - a) * n + a;\n};\nvar mix = exports.mix = function mix(n, a, b) {\n return a * (1 - n) + b * n;\n};\nvar randint = exports.randint = function randint(n) {\n return Math.floor(Math.random() * n);\n};\nvar randrange = exports.randrange = function randrange(a, b) {\n return Math.random() * (b - a) + a;\n};\nvar randsign = exports.randsign = function randsign() {\n return Math.random() >= 0.5 ? -1 : 1;\n};\nvar choice = exports.choice = function choice(a) {\n return a[Math.floor(Math.random() * a.length)];\n};\nvar angle = exports.angle = function angle(x0, y0, x1, y1) {\n return Math.atan2(y1 - y0, x1 - x0);\n};\nvar dist = exports.dist = function dist(x0, y0, x1, y1) {\n return Math.sqrt(Math.pow(x1 - x0, 2) + Math.pow(y1 - y0, 2));\n};\nvar xor = exports.xor = function xor(a, b) {\n a = !!a;b = !!b;return (a || b) && !(a && b);\n};\nvar quantize = exports.quantize = function quantize(a, b) {\n return Math.floor(a / b) * b;\n};\nvar shuffle = exports.shuffle = function shuffle(a) {\n for (var i = a.length; i > 0; i--) {\n var r = randint(i);\n var swap = a[i - 1];\n a[i - 1] = a[r];\n a[r] = swap;\n }\n return a;\n};\n// returns a gaussian random function with the given mean and stdev.\nfunction gaussian(mean, stdev) {\n var y2 = void 0;\n var use_last = false;\n return function () {\n var y1 = void 0;\n if (use_last) {\n y1 = y2;\n use_last = false;\n } else {\n var x1 = void 0,\n x2 = void 0,\n w = void 0;\n do {\n x1 = 2.0 * Math.random() - 1.0;\n x2 = 2.0 * Math.random() - 1.0;\n w = x1 * x1 + x2 * x2;\n } while (w >= 1.0);\n w = Math.sqrt(-2.0 * Math.log(w) / w);\n y1 = x1 * w;\n y2 = x2 * w;\n use_last = true;\n }\n\n var retval = mean + stdev * y1;\n if (retval > 0) return retval;\n return -retval;\n };\n}","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar numericSort = exports.numericSort = {\n asc: function asc(a, b) {\n return a[0] - b[0];\n },\n desc: function desc(a, b) {\n return b[0] - a[0];\n }\n};\nvar stringSort = exports.stringSort = {\n asc: function asc(a, b) {\n return a[0].localeCompare(b[0]);\n },\n desc: function desc(a, b) {\n return b[0].localeCompare(a[0]);\n }\n};\nvar orderByFn = exports.orderByFn = function orderByFn() {\n var s = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'name asc';\n\n var _s$split = s.split(' '),\n _s$split2 = _slicedToArray(_s$split, 2),\n _s$split2$ = _s$split2[0],\n field = _s$split2$ === undefined ? 'name' : _s$split2$,\n _s$split2$2 = _s$split2[1],\n direction = _s$split2$2 === undefined ? 'asc' : _s$split2$2;\n\n var mapFn = void 0,\n sortFn = void 0;\n switch (field) {\n case 'epoch':\n mapFn = function mapFn(a) {\n return [parseInt(a.epoch || a.epochs) || 0, a];\n };\n sortFn = numericSort[direction];\n break;\n case 'size':\n mapFn = function mapFn(a) {\n return [parseInt(a.size) || 0, a];\n };\n sortFn = numericSort[direction];\n break;\n case 'date':\n mapFn = function mapFn(a) {\n return [+new Date(a.date || a.created_at), a];\n };\n sortFn = numericSort[direction];\n break;\n case 'updated_at':\n mapFn = function mapFn(a) {\n return [+new Date(a.updated_at), a];\n };\n sortFn = numericSort[direction];\n break;\n case 'priority':\n mapFn = function mapFn(a) {\n return [parseInt(a.priority) || parseInt(a.id) || 1000, a];\n };\n sortFn = numericSort[direction];\n case 'name':\n default:\n mapFn = function mapFn(a) {\n return [a.name || \"\", a];\n };\n sortFn = stringSort[direction];\n break;\n }\n return { mapFn: mapFn, sortFn: sortFn };\n};","(function (global, factory) {\n if (typeof define === 'function' && define.amd) {\n define(['exports', 'module'], factory);\n } else if (typeof exports !== 'undefined' && typeof module !== 'undefined') {\n factory(exports, module);\n } else {\n var mod = {\n exports: {}\n };\n factory(mod.exports, mod);\n global.fetchJsonp = mod.exports;\n }\n})(this, function (exports, module) {\n 'use strict';\n\n var defaultOptions = {\n timeout: 5000,\n jsonpCallback: 'callback',\n jsonpCallbackFunction: null\n };\n\n function generateCallbackFunction() {\n return 'jsonp_' + Date.now() + '_' + Math.ceil(Math.random() * 100000);\n }\n\n function clearFunction(functionName) {\n // IE8 throws an exception when you try to delete a property on window\n // http://stackoverflow.com/a/1824228/751089\n try {\n delete window[functionName];\n } catch (e) {\n window[functionName] = undefined;\n }\n }\n\n function removeScript(scriptId) {\n var script = document.getElementById(scriptId);\n if (script) {\n document.getElementsByTagName('head')[0].removeChild(script);\n }\n }\n\n function fetchJsonp(_url) {\n var options = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];\n\n // to avoid param reassign\n var url = _url;\n var timeout = options.timeout || defaultOptions.timeout;\n var jsonpCallback = options.jsonpCallback || defaultOptions.jsonpCallback;\n\n var timeoutId = undefined;\n\n return new Promise(function (resolve, reject) {\n var callbackFunction = options.jsonpCallbackFunction || generateCallbackFunction();\n var scriptId = jsonpCallback + '_' + callbackFunction;\n\n window[callbackFunction] = function (response) {\n resolve({\n ok: true,\n // keep consistent with fetch API\n json: function json() {\n return Promise.resolve(response);\n }\n });\n\n if (timeoutId) clearTimeout(timeoutId);\n\n removeScript(scriptId);\n\n clearFunction(callbackFunction);\n };\n\n // Check if the user set their own params, and if not add a ? to start a list of params\n url += url.indexOf('?') === -1 ? '?' : '&';\n\n var jsonpScript = document.createElement('script');\n jsonpScript.setAttribute('src', '' + url + jsonpCallback + '=' + callbackFunction);\n if (options.charset) {\n jsonpScript.setAttribute('charset', options.charset);\n }\n jsonpScript.id = scriptId;\n document.getElementsByTagName('head')[0].appendChild(jsonpScript);\n\n timeoutId = setTimeout(function () {\n reject(new Error('JSONP request to ' + _url + ' timed out'));\n\n clearFunction(callbackFunction);\n removeScript(scriptId);\n window[callbackFunction] = function () {\n clearFunction(callbackFunction);\n };\n }, timeout);\n\n // Caught if got 404/500\n jsonpScript.onerror = function () {\n reject(new Error('JSONP request to ' + _url + ' failed'));\n\n clearFunction(callbackFunction);\n removeScript(scriptId);\n if (timeoutId) clearTimeout(timeoutId);\n };\n });\n }\n\n // export as global function\n /*\n let local;\n if (typeof global !== 'undefined') {\n local = global;\n } else if (typeof self !== 'undefined') {\n local = self;\n } else {\n try {\n local = Function('return this')();\n } catch (e) {\n throw new Error('polyfill failed because global object is unavailable in this environment');\n }\n }\n local.fetchJsonp = fetchJsonp;\n */\n\n module.exports = fetchJsonp;\n});","'use strict';\n\nfunction FFT(size) {\n this.size = size | 0;\n if (this.size <= 1 || (this.size & (this.size - 1)) !== 0)\n throw new Error('FFT size must be a power of two and bigger than 1');\n\n this._csize = size << 1;\n\n // NOTE: Use of `var` is intentional for old V8 versions\n var table = new Array(this.size * 2);\n for (var i = 0; i < table.length; i += 2) {\n const angle = Math.PI * i / this.size;\n table[i] = Math.cos(angle);\n table[i + 1] = -Math.sin(angle);\n }\n this.table = table;\n\n // Find size's power of two\n var power = 0;\n for (var t = 1; this.size > t; t <<= 1)\n power++;\n\n // Calculate initial step's width:\n // * If we are full radix-4 - it is 2x smaller to give inital len=8\n // * Otherwise it is the same as `power` to give len=4\n this._width = power % 2 === 0 ? power - 1 : power;\n\n // Pre-compute bit-reversal patterns\n this._bitrev = new Array(1 << this._width);\n for (var j = 0; j < this._bitrev.length; j++) {\n this._bitrev[j] = 0;\n for (var shift = 0; shift < this._width; shift += 2) {\n var revShift = this._width - shift - 2;\n this._bitrev[j] |= ((j >>> shift) & 3) << revShift;\n }\n }\n\n this._out = null;\n this._data = null;\n this._inv = 0;\n}\nmodule.exports = FFT;\n\nFFT.prototype.fromComplexArray = function fromComplexArray(complex, storage) {\n var res = storage || new Array(complex.length >>> 1);\n for (var i = 0; i < complex.length; i += 2)\n res[i >>> 1] = complex[i];\n return res;\n};\n\nFFT.prototype.createComplexArray = function createComplexArray() {\n const res = new Array(this._csize);\n for (var i = 0; i < res.length; i++)\n res[i] = 0;\n return res;\n};\n\nFFT.prototype.toComplexArray = function toComplexArray(input, storage) {\n var res = storage || this.createComplexArray();\n for (var i = 0; i < res.length; i += 2) {\n res[i] = input[i >>> 1];\n res[i + 1] = 0;\n }\n return res;\n};\n\nFFT.prototype.completeSpectrum = function completeSpectrum(spectrum) {\n var size = this._csize;\n var half = size >>> 1;\n for (var i = 2; i < half; i += 2) {\n spectrum[size - i] = spectrum[i];\n spectrum[size - i + 1] = -spectrum[i + 1];\n }\n};\n\nFFT.prototype.transform = function transform(out, data) {\n if (out === data)\n throw new Error('Input and output buffers must be different');\n\n this._out = out;\n this._data = data;\n this._inv = 0;\n this._transform4();\n this._out = null;\n this._data = null;\n};\n\nFFT.prototype.realTransform = function realTransform(out, data) {\n if (out === data)\n throw new Error('Input and output buffers must be different');\n\n this._out = out;\n this._data = data;\n this._inv = 0;\n this._realTransform4();\n this._out = null;\n this._data = null;\n};\n\nFFT.prototype.inverseTransform = function inverseTransform(out, data) {\n if (out === data)\n throw new Error('Input and output buffers must be different');\n\n this._out = out;\n this._data = data;\n this._inv = 1;\n this._transform4();\n for (var i = 0; i < out.length; i++)\n out[i] /= this.size;\n this._out = null;\n this._data = null;\n};\n\n// radix-4 implementation\n//\n// NOTE: Uses of `var` are intentional for older V8 version that do not\n// support both `let compound assignments` and `const phi`\nFFT.prototype._transform4 = function _transform4() {\n var out = this._out;\n var size = this._csize;\n\n // Initial step (permute and transform)\n var width = this._width;\n var step = 1 << width;\n var len = (size / step) << 1;\n\n var outOff;\n var t;\n var bitrev = this._bitrev;\n if (len === 4) {\n for (outOff = 0, t = 0; outOff < size; outOff += len, t++) {\n const off = bitrev[t];\n this._singleTransform2(outOff, off, step);\n }\n } else {\n // len === 8\n for (outOff = 0, t = 0; outOff < size; outOff += len, t++) {\n const off = bitrev[t];\n this._singleTransform4(outOff, off, step);\n }\n }\n\n // Loop through steps in decreasing order\n var inv = this._inv ? -1 : 1;\n var table = this.table;\n for (step >>= 2; step >= 2; step >>= 2) {\n len = (size / step) << 1;\n var quarterLen = len >>> 2;\n\n // Loop through offsets in the data\n for (outOff = 0; outOff < size; outOff += len) {\n // Full case\n var limit = outOff + quarterLen;\n for (var i = outOff, k = 0; i < limit; i += 2, k += step) {\n const A = i;\n const B = A + quarterLen;\n const C = B + quarterLen;\n const D = C + quarterLen;\n\n // Original values\n const Ar = out[A];\n const Ai = out[A + 1];\n const Br = out[B];\n const Bi = out[B + 1];\n const Cr = out[C];\n const Ci = out[C + 1];\n const Dr = out[D];\n const Di = out[D + 1];\n\n // Middle values\n const MAr = Ar;\n const MAi = Ai;\n\n const tableBr = table[k];\n const tableBi = inv * table[k + 1];\n const MBr = Br * tableBr - Bi * tableBi;\n const MBi = Br * tableBi + Bi * tableBr;\n\n const tableCr = table[2 * k];\n const tableCi = inv * table[2 * k + 1];\n const MCr = Cr * tableCr - Ci * tableCi;\n const MCi = Cr * tableCi + Ci * tableCr;\n\n const tableDr = table[3 * k];\n const tableDi = inv * table[3 * k + 1];\n const MDr = Dr * tableDr - Di * tableDi;\n const MDi = Dr * tableDi + Di * tableDr;\n\n // Pre-Final values\n const T0r = MAr + MCr;\n const T0i = MAi + MCi;\n const T1r = MAr - MCr;\n const T1i = MAi - MCi;\n const T2r = MBr + MDr;\n const T2i = MBi + MDi;\n const T3r = inv * (MBr - MDr);\n const T3i = inv * (MBi - MDi);\n\n // Final values\n const FAr = T0r + T2r;\n const FAi = T0i + T2i;\n\n const FCr = T0r - T2r;\n const FCi = T0i - T2i;\n\n const FBr = T1r + T3i;\n const FBi = T1i - T3r;\n\n const FDr = T1r - T3i;\n const FDi = T1i + T3r;\n\n out[A] = FAr;\n out[A + 1] = FAi;\n out[B] = FBr;\n out[B + 1] = FBi;\n out[C] = FCr;\n out[C + 1] = FCi;\n out[D] = FDr;\n out[D + 1] = FDi;\n }\n }\n }\n};\n\n// radix-2 implementation\n//\n// NOTE: Only called for len=4\nFFT.prototype._singleTransform2 = function _singleTransform2(outOff, off,\n step) {\n const out = this._out;\n const data = this._data;\n\n const evenR = data[off];\n const evenI = data[off + 1];\n const oddR = data[off + step];\n const oddI = data[off + step + 1];\n\n const leftR = evenR + oddR;\n const leftI = evenI + oddI;\n const rightR = evenR - oddR;\n const rightI = evenI - oddI;\n\n out[outOff] = leftR;\n out[outOff + 1] = leftI;\n out[outOff + 2] = rightR;\n out[outOff + 3] = rightI;\n};\n\n// radix-4\n//\n// NOTE: Only called for len=8\nFFT.prototype._singleTransform4 = function _singleTransform4(outOff, off,\n step) {\n const out = this._out;\n const data = this._data;\n const inv = this._inv ? -1 : 1;\n const step2 = step * 2;\n const step3 = step * 3;\n\n // Original values\n const Ar = data[off];\n const Ai = data[off + 1];\n const Br = data[off + step];\n const Bi = data[off + step + 1];\n const Cr = data[off + step2];\n const Ci = data[off + step2 + 1];\n const Dr = data[off + step3];\n const Di = data[off + step3 + 1];\n\n // Pre-Final values\n const T0r = Ar + Cr;\n const T0i = Ai + Ci;\n const T1r = Ar - Cr;\n const T1i = Ai - Ci;\n const T2r = Br + Dr;\n const T2i = Bi + Di;\n const T3r = inv * (Br - Dr);\n const T3i = inv * (Bi - Di);\n\n // Final values\n const FAr = T0r + T2r;\n const FAi = T0i + T2i;\n\n const FBr = T1r + T3i;\n const FBi = T1i - T3r;\n\n const FCr = T0r - T2r;\n const FCi = T0i - T2i;\n\n const FDr = T1r - T3i;\n const FDi = T1i + T3r;\n\n out[outOff] = FAr;\n out[outOff + 1] = FAi;\n out[outOff + 2] = FBr;\n out[outOff + 3] = FBi;\n out[outOff + 4] = FCr;\n out[outOff + 5] = FCi;\n out[outOff + 6] = FDr;\n out[outOff + 7] = FDi;\n};\n\n// Real input radix-4 implementation\nFFT.prototype._realTransform4 = function _realTransform4() {\n var out = this._out;\n var size = this._csize;\n\n // Initial step (permute and transform)\n var width = this._width;\n var step = 1 << width;\n var len = (size / step) << 1;\n\n var outOff;\n var t;\n var bitrev = this._bitrev;\n if (len === 4) {\n for (outOff = 0, t = 0; outOff < size; outOff += len, t++) {\n const off = bitrev[t];\n this._singleRealTransform2(outOff, off >>> 1, step >>> 1);\n }\n } else {\n // len === 8\n for (outOff = 0, t = 0; outOff < size; outOff += len, t++) {\n const off = bitrev[t];\n this._singleRealTransform4(outOff, off >>> 1, step >>> 1);\n }\n }\n\n // Loop through steps in decreasing order\n var inv = this._inv ? -1 : 1;\n var table = this.table;\n for (step >>= 2; step >= 2; step >>= 2) {\n len = (size / step) << 1;\n var halfLen = len >>> 1;\n var quarterLen = halfLen >>> 1;\n var hquarterLen = quarterLen >>> 1;\n\n // Loop through offsets in the data\n for (outOff = 0; outOff < size; outOff += len) {\n for (var i = 0, k = 0; i <= hquarterLen; i += 2, k += step) {\n var A = outOff + i;\n var B = A + quarterLen;\n var C = B + quarterLen;\n var D = C + quarterLen;\n\n // Original values\n var Ar = out[A];\n var Ai = out[A + 1];\n var Br = out[B];\n var Bi = out[B + 1];\n var Cr = out[C];\n var Ci = out[C + 1];\n var Dr = out[D];\n var Di = out[D + 1];\n\n // Middle values\n var MAr = Ar;\n var MAi = Ai;\n\n var tableBr = table[k];\n var tableBi = inv * table[k + 1];\n var MBr = Br * tableBr - Bi * tableBi;\n var MBi = Br * tableBi + Bi * tableBr;\n\n var tableCr = table[2 * k];\n var tableCi = inv * table[2 * k + 1];\n var MCr = Cr * tableCr - Ci * tableCi;\n var MCi = Cr * tableCi + Ci * tableCr;\n\n var tableDr = table[3 * k];\n var tableDi = inv * table[3 * k + 1];\n var MDr = Dr * tableDr - Di * tableDi;\n var MDi = Dr * tableDi + Di * tableDr;\n\n // Pre-Final values\n var T0r = MAr + MCr;\n var T0i = MAi + MCi;\n var T1r = MAr - MCr;\n var T1i = MAi - MCi;\n var T2r = MBr + MDr;\n var T2i = MBi + MDi;\n var T3r = inv * (MBr - MDr);\n var T3i = inv * (MBi - MDi);\n\n // Final values\n var FAr = T0r + T2r;\n var FAi = T0i + T2i;\n\n var FBr = T1r + T3i;\n var FBi = T1i - T3r;\n\n out[A] = FAr;\n out[A + 1] = FAi;\n out[B] = FBr;\n out[B + 1] = FBi;\n\n // Output final middle point\n if (i === 0) {\n var FCr = T0r - T2r;\n var FCi = T0i - T2i;\n out[C] = FCr;\n out[C + 1] = FCi;\n continue;\n }\n\n // Do not overwrite ourselves\n if (i === hquarterLen)\n continue;\n\n // In the flipped case:\n // MAi = -MAi\n // MBr=-MBi, MBi=-MBr\n // MCr=-MCr\n // MDr=MDi, MDi=MDr\n var ST0r = T1r;\n var ST0i = -T1i;\n var ST1r = T0r;\n var ST1i = -T0i;\n var ST2r = -inv * T3i;\n var ST2i = -inv * T3r;\n var ST3r = -inv * T2i;\n var ST3i = -inv * T2r;\n\n var SFAr = ST0r + ST2r;\n var SFAi = ST0i + ST2i;\n\n var SFBr = ST1r + ST3i;\n var SFBi = ST1i - ST3r;\n\n var SA = outOff + quarterLen - i;\n var SB = outOff + halfLen - i;\n\n out[SA] = SFAr;\n out[SA + 1] = SFAi;\n out[SB] = SFBr;\n out[SB + 1] = SFBi;\n }\n }\n }\n};\n\n// radix-2 implementation\n//\n// NOTE: Only called for len=4\nFFT.prototype._singleRealTransform2 = function _singleRealTransform2(outOff,\n off,\n step) {\n const out = this._out;\n const data = this._data;\n\n const evenR = data[off];\n const oddR = data[off + step];\n\n const leftR = evenR + oddR;\n const rightR = evenR - oddR;\n\n out[outOff] = leftR;\n out[outOff + 1] = 0;\n out[outOff + 2] = rightR;\n out[outOff + 3] = 0;\n};\n\n// radix-4\n//\n// NOTE: Only called for len=8\nFFT.prototype._singleRealTransform4 = function _singleRealTransform4(outOff,\n off,\n step) {\n const out = this._out;\n const data = this._data;\n const inv = this._inv ? -1 : 1;\n const step2 = step * 2;\n const step3 = step * 3;\n\n // Original values\n const Ar = data[off];\n const Br = data[off + step];\n const Cr = data[off + step2];\n const Dr = data[off + step3];\n\n // Pre-Final values\n const T0r = Ar + Cr;\n const T1r = Ar - Cr;\n const T2r = Br + Dr;\n const T3r = inv * (Br - Dr);\n\n // Final values\n const FAr = T0r + T2r;\n\n const FBr = T1r;\n const FBi = -T3r;\n\n const FCr = T0r - T2r;\n\n const FDr = T1r;\n const FDi = T3r;\n\n out[outOff] = FAr;\n out[outOff + 1] = 0;\n out[outOff + 2] = FBr;\n out[outOff + 3] = FBi;\n out[outOff + 4] = FCr;\n out[outOff + 5] = 0;\n out[outOff + 6] = FDr;\n out[outOff + 7] = FDi;\n};\n","/* FileSaver.js\n * A saveAs() FileSaver implementation.\n * 1.3.2\n * 2016-06-16 18:25:19\n *\n * By Eli Grey, http://eligrey.com\n * License: MIT\n * See https://github.com/eligrey/FileSaver.js/blob/master/LICENSE.md\n */\n\n/*global self */\n/*jslint bitwise: true, indent: 4, laxbreak: true, laxcomma: true, smarttabs: true, plusplus: true */\n\n/*! @source http://purl.eligrey.com/github/FileSaver.js/blob/master/FileSaver.js */\n\nvar saveAs = saveAs || (function(view) {\n\t\"use strict\";\n\t// IE <10 is explicitly unsupported\n\tif (typeof view === \"undefined\" || typeof navigator !== \"undefined\" && /MSIE [1-9]\\./.test(navigator.userAgent)) {\n\t\treturn;\n\t}\n\tvar\n\t\t doc = view.document\n\t\t // only get URL when necessary in case Blob.js hasn't overridden it yet\n\t\t, get_URL = function() {\n\t\t\treturn view.URL || view.webkitURL || view;\n\t\t}\n\t\t, save_link = doc.createElementNS(\"http://www.w3.org/1999/xhtml\", \"a\")\n\t\t, can_use_save_link = \"download\" in save_link\n\t\t, click = function(node) {\n\t\t\tvar event = new MouseEvent(\"click\");\n\t\t\tnode.dispatchEvent(event);\n\t\t}\n\t\t, is_safari = /constructor/i.test(view.HTMLElement) || view.safari\n\t\t, is_chrome_ios =/CriOS\\/[\\d]+/.test(navigator.userAgent)\n\t\t, throw_outside = function(ex) {\n\t\t\t(view.setImmediate || view.setTimeout)(function() {\n\t\t\t\tthrow ex;\n\t\t\t}, 0);\n\t\t}\n\t\t, force_saveable_type = \"application/octet-stream\"\n\t\t// the Blob API is fundamentally broken as there is no \"downloadfinished\" event to subscribe to\n\t\t, arbitrary_revoke_timeout = 1000 * 40 // in ms\n\t\t, revoke = function(file) {\n\t\t\tvar revoker = function() {\n\t\t\t\tif (typeof file === \"string\") { // file is an object URL\n\t\t\t\t\tget_URL().revokeObjectURL(file);\n\t\t\t\t} else { // file is a File\n\t\t\t\t\tfile.remove();\n\t\t\t\t}\n\t\t\t};\n\t\t\tsetTimeout(revoker, arbitrary_revoke_timeout);\n\t\t}\n\t\t, dispatch = function(filesaver, event_types, event) {\n\t\t\tevent_types = [].concat(event_types);\n\t\t\tvar i = event_types.length;\n\t\t\twhile (i--) {\n\t\t\t\tvar listener = filesaver[\"on\" + event_types[i]];\n\t\t\t\tif (typeof listener === \"function\") {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tlistener.call(filesaver, event || filesaver);\n\t\t\t\t\t} catch (ex) {\n\t\t\t\t\t\tthrow_outside(ex);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t, auto_bom = function(blob) {\n\t\t\t// prepend BOM for UTF-8 XML and text/* types (including HTML)\n\t\t\t// note: your browser will automatically convert UTF-16 U+FEFF to EF BB BF\n\t\t\tif (/^\\s*(?:text\\/\\S*|application\\/xml|\\S*\\/\\S*\\+xml)\\s*;.*charset\\s*=\\s*utf-8/i.test(blob.type)) {\n\t\t\t\treturn new Blob([String.fromCharCode(0xFEFF), blob], {type: blob.type});\n\t\t\t}\n\t\t\treturn blob;\n\t\t}\n\t\t, FileSaver = function(blob, name, no_auto_bom) {\n\t\t\tif (!no_auto_bom) {\n\t\t\t\tblob = auto_bom(blob);\n\t\t\t}\n\t\t\t// First try a.download, then web filesystem, then object URLs\n\t\t\tvar\n\t\t\t\t filesaver = this\n\t\t\t\t, type = blob.type\n\t\t\t\t, force = type === force_saveable_type\n\t\t\t\t, object_url\n\t\t\t\t, dispatch_all = function() {\n\t\t\t\t\tdispatch(filesaver, \"writestart progress write writeend\".split(\" \"));\n\t\t\t\t}\n\t\t\t\t// on any filesys errors revert to saving with object URLs\n\t\t\t\t, fs_error = function() {\n\t\t\t\t\tif ((is_chrome_ios || (force && is_safari)) && view.FileReader) {\n\t\t\t\t\t\t// Safari doesn't allow downloading of blob urls\n\t\t\t\t\t\tvar reader = new FileReader();\n\t\t\t\t\t\treader.onloadend = function() {\n\t\t\t\t\t\t\tvar url = is_chrome_ios ? reader.result : reader.result.replace(/^data:[^;]*;/, 'data:attachment/file;');\n\t\t\t\t\t\t\tvar popup = view.open(url, '_blank');\n\t\t\t\t\t\t\tif(!popup) view.location.href = url;\n\t\t\t\t\t\t\turl=undefined; // release reference before dispatching\n\t\t\t\t\t\t\tfilesaver.readyState = filesaver.DONE;\n\t\t\t\t\t\t\tdispatch_all();\n\t\t\t\t\t\t};\n\t\t\t\t\t\treader.readAsDataURL(blob);\n\t\t\t\t\t\tfilesaver.readyState = filesaver.INIT;\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\t// don't create more object URLs than needed\n\t\t\t\t\tif (!object_url) {\n\t\t\t\t\t\tobject_url = get_URL().createObjectURL(blob);\n\t\t\t\t\t}\n\t\t\t\t\tif (force) {\n\t\t\t\t\t\tview.location.href = object_url;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar opened = view.open(object_url, \"_blank\");\n\t\t\t\t\t\tif (!opened) {\n\t\t\t\t\t\t\t// Apple does not allow window.open, see https://developer.apple.com/library/safari/documentation/Tools/Conceptual/SafariExtensionGuide/WorkingwithWindowsandTabs/WorkingwithWindowsandTabs.html\n\t\t\t\t\t\t\tview.location.href = object_url;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tfilesaver.readyState = filesaver.DONE;\n\t\t\t\t\tdispatch_all();\n\t\t\t\t\trevoke(object_url);\n\t\t\t\t}\n\t\t\t;\n\t\t\tfilesaver.readyState = filesaver.INIT;\n\n\t\t\tif (can_use_save_link) {\n\t\t\t\tobject_url = get_URL().createObjectURL(blob);\n\t\t\t\tsetTimeout(function() {\n\t\t\t\t\tsave_link.href = object_url;\n\t\t\t\t\tsave_link.download = name;\n\t\t\t\t\tclick(save_link);\n\t\t\t\t\tdispatch_all();\n\t\t\t\t\trevoke(object_url);\n\t\t\t\t\tfilesaver.readyState = filesaver.DONE;\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfs_error();\n\t\t}\n\t\t, FS_proto = FileSaver.prototype\n\t\t, saveAs = function(blob, name, no_auto_bom) {\n\t\t\treturn new FileSaver(blob, name || blob.name || \"download\", no_auto_bom);\n\t\t}\n\t;\n\t// IE 10+ (native saveAs)\n\tif (typeof navigator !== \"undefined\" && navigator.msSaveOrOpenBlob) {\n\t\treturn function(blob, name, no_auto_bom) {\n\t\t\tname = name || blob.name || \"download\";\n\n\t\t\tif (!no_auto_bom) {\n\t\t\t\tblob = auto_bom(blob);\n\t\t\t}\n\t\t\treturn navigator.msSaveOrOpenBlob(blob, name);\n\t\t};\n\t}\n\n\tFS_proto.abort = function(){};\n\tFS_proto.readyState = FS_proto.INIT = 0;\n\tFS_proto.WRITING = 1;\n\tFS_proto.DONE = 2;\n\n\tFS_proto.error =\n\tFS_proto.onwritestart =\n\tFS_proto.onprogress =\n\tFS_proto.onwrite =\n\tFS_proto.onabort =\n\tFS_proto.onerror =\n\tFS_proto.onwriteend =\n\t\tnull;\n\n\treturn saveAs;\n}(\n\t typeof self !== \"undefined\" && self\n\t|| typeof window !== \"undefined\" && window\n\t|| this.content\n));\n// `self` is undefined in Firefox for Android content script context\n// while `this` is nsIContentFrameMessageManager\n// with an attribute `content` that corresponds to the window\n\nif (typeof module !== \"undefined\" && module.exports) {\n module.exports.saveAs = saveAs;\n} else if ((typeof define !== \"undefined\" && define !== null) && (define.amd !== null)) {\n define(\"FileSaver.js\", function() {\n return saveAs;\n });\n}\n","'use strict';\n\nexports.__esModule = true;\nvar canUseDOM = exports.canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\n\nvar addEventListener = exports.addEventListener = function addEventListener(node, event, listener) {\n return node.addEventListener ? node.addEventListener(event, listener, false) : node.attachEvent('on' + event, listener);\n};\n\nvar removeEventListener = exports.removeEventListener = function removeEventListener(node, event, listener) {\n return node.removeEventListener ? node.removeEventListener(event, listener, false) : node.detachEvent('on' + event, listener);\n};\n\nvar getConfirmation = exports.getConfirmation = function getConfirmation(message, callback) {\n return callback(window.confirm(message));\n}; // eslint-disable-line no-alert\n\n/**\n * Returns true if the HTML5 history API is supported. Taken from Modernizr.\n *\n * https://github.com/Modernizr/Modernizr/blob/master/LICENSE\n * https://github.com/Modernizr/Modernizr/blob/master/feature-detects/history.js\n * changed to avoid false negatives for Windows Phones: https://github.com/reactjs/react-router/issues/586\n */\nvar supportsHistory = exports.supportsHistory = function supportsHistory() {\n var ua = window.navigator.userAgent;\n\n if ((ua.indexOf('Android 2.') !== -1 || ua.indexOf('Android 4.0') !== -1) && ua.indexOf('Mobile Safari') !== -1 && ua.indexOf('Chrome') === -1 && ua.indexOf('Windows Phone') === -1) return false;\n\n return window.history && 'pushState' in window.history;\n};\n\n/**\n * Returns true if browser fires popstate on hash change.\n * IE10 and IE11 do not.\n */\nvar supportsPopStateOnHashChange = exports.supportsPopStateOnHashChange = function supportsPopStateOnHashChange() {\n return window.navigator.userAgent.indexOf('Trident') === -1;\n};\n\n/**\n * Returns false if using go(n) with hash history causes a full page reload.\n */\nvar supportsGoWithoutReloadUsingHash = exports.supportsGoWithoutReloadUsingHash = function supportsGoWithoutReloadUsingHash() {\n return window.navigator.userAgent.indexOf('Firefox') === -1;\n};\n\n/**\n * Returns true if a given popstate event is an extraneous WebKit event.\n * Accounts for the fact that Chrome on iOS fires real popstate events\n * containing undefined state when pressing the back button.\n */\nvar isExtraneousPopstateEvent = exports.isExtraneousPopstateEvent = function isExtraneousPopstateEvent(event) {\n return event.state === undefined && navigator.userAgent.indexOf('CriOS') === -1;\n};","'use strict';\n\nexports.__esModule = true;\nexports.locationsAreEqual = exports.createLocation = undefined;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _resolvePathname = require('resolve-pathname');\n\nvar _resolvePathname2 = _interopRequireDefault(_resolvePathname);\n\nvar _valueEqual = require('value-equal');\n\nvar _valueEqual2 = _interopRequireDefault(_valueEqual);\n\nvar _PathUtils = require('./PathUtils');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar createLocation = exports.createLocation = function createLocation(path, state, key, currentLocation) {\n var location = void 0;\n if (typeof path === 'string') {\n // Two-arg form: push(path, state)\n location = (0, _PathUtils.parsePath)(path);\n location.state = state;\n } else {\n // One-arg form: push(location)\n location = _extends({}, path);\n\n if (location.pathname === undefined) location.pathname = '';\n\n if (location.search) {\n if (location.search.charAt(0) !== '?') location.search = '?' + location.search;\n } else {\n location.search = '';\n }\n\n if (location.hash) {\n if (location.hash.charAt(0) !== '#') location.hash = '#' + location.hash;\n } else {\n location.hash = '';\n }\n\n if (state !== undefined && location.state === undefined) location.state = state;\n }\n\n try {\n location.pathname = decodeURI(location.pathname);\n } catch (e) {\n if (e instanceof URIError) {\n throw new URIError('Pathname \"' + location.pathname + '\" could not be decoded. ' + 'This is likely caused by an invalid percent-encoding.');\n } else {\n throw e;\n }\n }\n\n if (key) location.key = key;\n\n if (currentLocation) {\n // Resolve incomplete/relative pathname relative to current location.\n if (!location.pathname) {\n location.pathname = currentLocation.pathname;\n } else if (location.pathname.charAt(0) !== '/') {\n location.pathname = (0, _resolvePathname2.default)(location.pathname, currentLocation.pathname);\n }\n } else {\n // When there is no prior location and pathname is empty, set it to /\n if (!location.pathname) {\n location.pathname = '/';\n }\n }\n\n return location;\n};\n\nvar locationsAreEqual = exports.locationsAreEqual = function locationsAreEqual(a, b) {\n return a.pathname === b.pathname && a.search === b.search && a.hash === b.hash && a.key === b.key && (0, _valueEqual2.default)(a.state, b.state);\n};","'use strict';\n\nexports.__esModule = true;\nvar addLeadingSlash = exports.addLeadingSlash = function addLeadingSlash(path) {\n return path.charAt(0) === '/' ? path : '/' + path;\n};\n\nvar stripLeadingSlash = exports.stripLeadingSlash = function stripLeadingSlash(path) {\n return path.charAt(0) === '/' ? path.substr(1) : path;\n};\n\nvar hasBasename = exports.hasBasename = function hasBasename(path, prefix) {\n return new RegExp('^' + prefix + '(\\\\/|\\\\?|#|$)', 'i').test(path);\n};\n\nvar stripBasename = exports.stripBasename = function stripBasename(path, prefix) {\n return hasBasename(path, prefix) ? path.substr(prefix.length) : path;\n};\n\nvar stripTrailingSlash = exports.stripTrailingSlash = function stripTrailingSlash(path) {\n return path.charAt(path.length - 1) === '/' ? path.slice(0, -1) : path;\n};\n\nvar parsePath = exports.parsePath = function parsePath(path) {\n var pathname = path || '/';\n var search = '';\n var hash = '';\n\n var hashIndex = pathname.indexOf('#');\n if (hashIndex !== -1) {\n hash = pathname.substr(hashIndex);\n pathname = pathname.substr(0, hashIndex);\n }\n\n var searchIndex = pathname.indexOf('?');\n if (searchIndex !== -1) {\n search = pathname.substr(searchIndex);\n pathname = pathname.substr(0, searchIndex);\n }\n\n return {\n pathname: pathname,\n search: search === '?' ? '' : search,\n hash: hash === '#' ? '' : hash\n };\n};\n\nvar createPath = exports.createPath = function createPath(location) {\n var pathname = location.pathname,\n search = location.search,\n hash = location.hash;\n\n\n var path = pathname || '/';\n\n if (search && search !== '?') path += search.charAt(0) === '?' ? search : '?' + search;\n\n if (hash && hash !== '#') path += hash.charAt(0) === '#' ? hash : '#' + hash;\n\n return path;\n};","'use strict';\n\nexports.__esModule = true;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _warning = require('warning');\n\nvar _warning2 = _interopRequireDefault(_warning);\n\nvar _invariant = require('invariant');\n\nvar _invariant2 = _interopRequireDefault(_invariant);\n\nvar _LocationUtils = require('./LocationUtils');\n\nvar _PathUtils = require('./PathUtils');\n\nvar _createTransitionManager = require('./createTransitionManager');\n\nvar _createTransitionManager2 = _interopRequireDefault(_createTransitionManager);\n\nvar _DOMUtils = require('./DOMUtils');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar PopStateEvent = 'popstate';\nvar HashChangeEvent = 'hashchange';\n\nvar getHistoryState = function getHistoryState() {\n try {\n return window.history.state || {};\n } catch (e) {\n // IE 11 sometimes throws when accessing window.history.state\n // See https://github.com/ReactTraining/history/pull/289\n return {};\n }\n};\n\n/**\n * Creates a history object that uses the HTML5 history API including\n * pushState, replaceState, and the popstate event.\n */\nvar createBrowserHistory = function createBrowserHistory() {\n var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n (0, _invariant2.default)(_DOMUtils.canUseDOM, 'Browser history needs a DOM');\n\n var globalHistory = window.history;\n var canUseHistory = (0, _DOMUtils.supportsHistory)();\n var needsHashChangeListener = !(0, _DOMUtils.supportsPopStateOnHashChange)();\n\n var _props$forceRefresh = props.forceRefresh,\n forceRefresh = _props$forceRefresh === undefined ? false : _props$forceRefresh,\n _props$getUserConfirm = props.getUserConfirmation,\n getUserConfirmation = _props$getUserConfirm === undefined ? _DOMUtils.getConfirmation : _props$getUserConfirm,\n _props$keyLength = props.keyLength,\n keyLength = _props$keyLength === undefined ? 6 : _props$keyLength;\n\n var basename = props.basename ? (0, _PathUtils.stripTrailingSlash)((0, _PathUtils.addLeadingSlash)(props.basename)) : '';\n\n var getDOMLocation = function getDOMLocation(historyState) {\n var _ref = historyState || {},\n key = _ref.key,\n state = _ref.state;\n\n var _window$location = window.location,\n pathname = _window$location.pathname,\n search = _window$location.search,\n hash = _window$location.hash;\n\n\n var path = pathname + search + hash;\n\n (0, _warning2.default)(!basename || (0, _PathUtils.hasBasename)(path, basename), 'You are attempting to use a basename on a page whose URL path does not begin ' + 'with the basename. Expected path \"' + path + '\" to begin with \"' + basename + '\".');\n\n if (basename) path = (0, _PathUtils.stripBasename)(path, basename);\n\n return (0, _LocationUtils.createLocation)(path, state, key);\n };\n\n var createKey = function createKey() {\n return Math.random().toString(36).substr(2, keyLength);\n };\n\n var transitionManager = (0, _createTransitionManager2.default)();\n\n var setState = function setState(nextState) {\n _extends(history, nextState);\n\n history.length = globalHistory.length;\n\n transitionManager.notifyListeners(history.location, history.action);\n };\n\n var handlePopState = function handlePopState(event) {\n // Ignore extraneous popstate events in WebKit.\n if ((0, _DOMUtils.isExtraneousPopstateEvent)(event)) return;\n\n handlePop(getDOMLocation(event.state));\n };\n\n var handleHashChange = function handleHashChange() {\n handlePop(getDOMLocation(getHistoryState()));\n };\n\n var forceNextPop = false;\n\n var handlePop = function handlePop(location) {\n if (forceNextPop) {\n forceNextPop = false;\n setState();\n } else {\n var action = 'POP';\n\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({ action: action, location: location });\n } else {\n revertPop(location);\n }\n });\n }\n };\n\n var revertPop = function revertPop(fromLocation) {\n var toLocation = history.location;\n\n // TODO: We could probably make this more reliable by\n // keeping a list of keys we've seen in sessionStorage.\n // Instead, we just default to 0 for keys we don't know.\n\n var toIndex = allKeys.indexOf(toLocation.key);\n\n if (toIndex === -1) toIndex = 0;\n\n var fromIndex = allKeys.indexOf(fromLocation.key);\n\n if (fromIndex === -1) fromIndex = 0;\n\n var delta = toIndex - fromIndex;\n\n if (delta) {\n forceNextPop = true;\n go(delta);\n }\n };\n\n var initialLocation = getDOMLocation(getHistoryState());\n var allKeys = [initialLocation.key];\n\n // Public interface\n\n var createHref = function createHref(location) {\n return basename + (0, _PathUtils.createPath)(location);\n };\n\n var push = function push(path, state) {\n (0, _warning2.default)(!((typeof path === 'undefined' ? 'undefined' : _typeof(path)) === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to push when the 1st ' + 'argument is a location-like object that already has state; it is ignored');\n\n var action = 'PUSH';\n var location = (0, _LocationUtils.createLocation)(path, state, createKey(), history.location);\n\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n\n var href = createHref(location);\n var key = location.key,\n state = location.state;\n\n\n if (canUseHistory) {\n globalHistory.pushState({ key: key, state: state }, null, href);\n\n if (forceRefresh) {\n window.location.href = href;\n } else {\n var prevIndex = allKeys.indexOf(history.location.key);\n var nextKeys = allKeys.slice(0, prevIndex === -1 ? 0 : prevIndex + 1);\n\n nextKeys.push(location.key);\n allKeys = nextKeys;\n\n setState({ action: action, location: location });\n }\n } else {\n (0, _warning2.default)(state === undefined, 'Browser history cannot push state in browsers that do not support HTML5 history');\n\n window.location.href = href;\n }\n });\n };\n\n var replace = function replace(path, state) {\n (0, _warning2.default)(!((typeof path === 'undefined' ? 'undefined' : _typeof(path)) === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to replace when the 1st ' + 'argument is a location-like object that already has state; it is ignored');\n\n var action = 'REPLACE';\n var location = (0, _LocationUtils.createLocation)(path, state, createKey(), history.location);\n\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n\n var href = createHref(location);\n var key = location.key,\n state = location.state;\n\n\n if (canUseHistory) {\n globalHistory.replaceState({ key: key, state: state }, null, href);\n\n if (forceRefresh) {\n window.location.replace(href);\n } else {\n var prevIndex = allKeys.indexOf(history.location.key);\n\n if (prevIndex !== -1) allKeys[prevIndex] = location.key;\n\n setState({ action: action, location: location });\n }\n } else {\n (0, _warning2.default)(state === undefined, 'Browser history cannot replace state in browsers that do not support HTML5 history');\n\n window.location.replace(href);\n }\n });\n };\n\n var go = function go(n) {\n globalHistory.go(n);\n };\n\n var goBack = function goBack() {\n return go(-1);\n };\n\n var goForward = function goForward() {\n return go(1);\n };\n\n var listenerCount = 0;\n\n var checkDOMListeners = function checkDOMListeners(delta) {\n listenerCount += delta;\n\n if (listenerCount === 1) {\n (0, _DOMUtils.addEventListener)(window, PopStateEvent, handlePopState);\n\n if (needsHashChangeListener) (0, _DOMUtils.addEventListener)(window, HashChangeEvent, handleHashChange);\n } else if (listenerCount === 0) {\n (0, _DOMUtils.removeEventListener)(window, PopStateEvent, handlePopState);\n\n if (needsHashChangeListener) (0, _DOMUtils.removeEventListener)(window, HashChangeEvent, handleHashChange);\n }\n };\n\n var isBlocked = false;\n\n var block = function block() {\n var prompt = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n var unblock = transitionManager.setPrompt(prompt);\n\n if (!isBlocked) {\n checkDOMListeners(1);\n isBlocked = true;\n }\n\n return function () {\n if (isBlocked) {\n isBlocked = false;\n checkDOMListeners(-1);\n }\n\n return unblock();\n };\n };\n\n var listen = function listen(listener) {\n var unlisten = transitionManager.appendListener(listener);\n checkDOMListeners(1);\n\n return function () {\n checkDOMListeners(-1);\n unlisten();\n };\n };\n\n var history = {\n length: globalHistory.length,\n action: 'POP',\n location: initialLocation,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n block: block,\n listen: listen\n };\n\n return history;\n};\n\nexports.default = createBrowserHistory;","'use strict';\n\nexports.__esModule = true;\n\nvar _warning = require('warning');\n\nvar _warning2 = _interopRequireDefault(_warning);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar createTransitionManager = function createTransitionManager() {\n var prompt = null;\n\n var setPrompt = function setPrompt(nextPrompt) {\n (0, _warning2.default)(prompt == null, 'A history supports only one prompt at a time');\n\n prompt = nextPrompt;\n\n return function () {\n if (prompt === nextPrompt) prompt = null;\n };\n };\n\n var confirmTransitionTo = function confirmTransitionTo(location, action, getUserConfirmation, callback) {\n // TODO: If another transition starts while we're still confirming\n // the previous one, we may end up in a weird state. Figure out the\n // best way to handle this.\n if (prompt != null) {\n var result = typeof prompt === 'function' ? prompt(location, action) : prompt;\n\n if (typeof result === 'string') {\n if (typeof getUserConfirmation === 'function') {\n getUserConfirmation(result, callback);\n } else {\n (0, _warning2.default)(false, 'A history needs a getUserConfirmation function in order to use a prompt message');\n\n callback(true);\n }\n } else {\n // Return false from a transition hook to cancel the transition.\n callback(result !== false);\n }\n } else {\n callback(true);\n }\n };\n\n var listeners = [];\n\n var appendListener = function appendListener(fn) {\n var isActive = true;\n\n var listener = function listener() {\n if (isActive) fn.apply(undefined, arguments);\n };\n\n listeners.push(listener);\n\n return function () {\n isActive = false;\n listeners = listeners.filter(function (item) {\n return item !== listener;\n });\n };\n };\n\n var notifyListeners = function notifyListeners() {\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n listeners.forEach(function (listener) {\n return listener.apply(undefined, args);\n });\n };\n\n return {\n setPrompt: setPrompt,\n confirmTransitionTo: confirmTransitionTo,\n appendListener: appendListener,\n notifyListeners: notifyListeners\n };\n};\n\nexports.default = createTransitionManager;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar invariant = function(condition, format, a, b, c, d, e, f) {\n if (process.env.NODE_ENV !== 'production') {\n if (format === undefined) {\n throw new Error('invariant requires an error message argument');\n }\n }\n\n if (!condition) {\n var error;\n if (format === undefined) {\n error = new Error(\n 'Minified exception occurred; use the non-minified dev environment ' +\n 'for the full error message and additional helpful warnings.'\n );\n } else {\n var args = [a, b, c, d, e, f];\n var argIndex = 0;\n error = new Error(\n format.replace(/%s/g, function() { return args[argIndex++]; })\n );\n error.name = 'Invariant Violation';\n }\n\n error.framesToPop = 1; // we don't care about invariant's own frame\n throw error;\n }\n};\n\nmodule.exports = invariant;\n","'use strict';\nvar utils = require('./utils');\nvar support = require('./support');\n// private property\nvar _keyStr = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\n\n\n// public method for encoding\nexports.encode = function(input) {\n var output = [];\n var chr1, chr2, chr3, enc1, enc2, enc3, enc4;\n var i = 0, len = input.length, remainingBytes = len;\n\n var isArray = utils.getTypeOf(input) !== \"string\";\n while (i < input.length) {\n remainingBytes = len - i;\n\n if (!isArray) {\n chr1 = input.charCodeAt(i++);\n chr2 = i < len ? input.charCodeAt(i++) : 0;\n chr3 = i < len ? input.charCodeAt(i++) : 0;\n } else {\n chr1 = input[i++];\n chr2 = i < len ? input[i++] : 0;\n chr3 = i < len ? input[i++] : 0;\n }\n\n enc1 = chr1 >> 2;\n enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);\n enc3 = remainingBytes > 1 ? (((chr2 & 15) << 2) | (chr3 >> 6)) : 64;\n enc4 = remainingBytes > 2 ? (chr3 & 63) : 64;\n\n output.push(_keyStr.charAt(enc1) + _keyStr.charAt(enc2) + _keyStr.charAt(enc3) + _keyStr.charAt(enc4));\n\n }\n\n return output.join(\"\");\n};\n\n// public method for decoding\nexports.decode = function(input) {\n var chr1, chr2, chr3;\n var enc1, enc2, enc3, enc4;\n var i = 0, resultIndex = 0;\n\n var dataUrlPrefix = \"data:\";\n\n if (input.substr(0, dataUrlPrefix.length) === dataUrlPrefix) {\n // This is a common error: people give a data url\n // (data:image/png;base64,iVBOR...) with a {base64: true} and\n // wonders why things don't work.\n // We can detect that the string input looks like a data url but we\n // *can't* be sure it is one: removing everything up to the comma would\n // be too dangerous.\n throw new Error(\"Invalid base64 input, it looks like a data url.\");\n }\n\n input = input.replace(/[^A-Za-z0-9\\+\\/\\=]/g, \"\");\n\n var totalLength = input.length * 3 / 4;\n if(input.charAt(input.length - 1) === _keyStr.charAt(64)) {\n totalLength--;\n }\n if(input.charAt(input.length - 2) === _keyStr.charAt(64)) {\n totalLength--;\n }\n if (totalLength % 1 !== 0) {\n // totalLength is not an integer, the length does not match a valid\n // base64 content. That can happen if:\n // - the input is not a base64 content\n // - the input is *almost* a base64 content, with a extra chars at the\n // beginning or at the end\n // - the input uses a base64 variant (base64url for example)\n throw new Error(\"Invalid base64 input, bad content length.\");\n }\n var output;\n if (support.uint8array) {\n output = new Uint8Array(totalLength|0);\n } else {\n output = new Array(totalLength|0);\n }\n\n while (i < input.length) {\n\n enc1 = _keyStr.indexOf(input.charAt(i++));\n enc2 = _keyStr.indexOf(input.charAt(i++));\n enc3 = _keyStr.indexOf(input.charAt(i++));\n enc4 = _keyStr.indexOf(input.charAt(i++));\n\n chr1 = (enc1 << 2) | (enc2 >> 4);\n chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);\n chr3 = ((enc3 & 3) << 6) | enc4;\n\n output[resultIndex++] = chr1;\n\n if (enc3 !== 64) {\n output[resultIndex++] = chr2;\n }\n if (enc4 !== 64) {\n output[resultIndex++] = chr3;\n }\n\n }\n\n return output;\n};\n","'use strict';\n\nvar external = require(\"./external\");\nvar DataWorker = require('./stream/DataWorker');\nvar DataLengthProbe = require('./stream/DataLengthProbe');\nvar Crc32Probe = require('./stream/Crc32Probe');\nvar DataLengthProbe = require('./stream/DataLengthProbe');\n\n/**\n * Represent a compressed object, with everything needed to decompress it.\n * @constructor\n * @param {number} compressedSize the size of the data compressed.\n * @param {number} uncompressedSize the size of the data after decompression.\n * @param {number} crc32 the crc32 of the decompressed file.\n * @param {object} compression the type of compression, see lib/compressions.js.\n * @param {String|ArrayBuffer|Uint8Array|Buffer} data the compressed data.\n */\nfunction CompressedObject(compressedSize, uncompressedSize, crc32, compression, data) {\n this.compressedSize = compressedSize;\n this.uncompressedSize = uncompressedSize;\n this.crc32 = crc32;\n this.compression = compression;\n this.compressedContent = data;\n}\n\nCompressedObject.prototype = {\n /**\n * Create a worker to get the uncompressed content.\n * @return {GenericWorker} the worker.\n */\n getContentWorker : function () {\n var worker = new DataWorker(external.Promise.resolve(this.compressedContent))\n .pipe(this.compression.uncompressWorker())\n .pipe(new DataLengthProbe(\"data_length\"));\n\n var that = this;\n worker.on(\"end\", function () {\n if(this.streamInfo['data_length'] !== that.uncompressedSize) {\n throw new Error(\"Bug : uncompressed data size mismatch\");\n }\n });\n return worker;\n },\n /**\n * Create a worker to get the compressed content.\n * @return {GenericWorker} the worker.\n */\n getCompressedWorker : function () {\n return new DataWorker(external.Promise.resolve(this.compressedContent))\n .withStreamInfo(\"compressedSize\", this.compressedSize)\n .withStreamInfo(\"uncompressedSize\", this.uncompressedSize)\n .withStreamInfo(\"crc32\", this.crc32)\n .withStreamInfo(\"compression\", this.compression)\n ;\n }\n};\n\n/**\n * Chain the given worker with other workers to compress the content with the\n * given compresion.\n * @param {GenericWorker} uncompressedWorker the worker to pipe.\n * @param {Object} compression the compression object.\n * @param {Object} compressionOptions the options to use when compressing.\n * @return {GenericWorker} the new worker compressing the content.\n */\nCompressedObject.createWorkerFrom = function (uncompressedWorker, compression, compressionOptions) {\n return uncompressedWorker\n .pipe(new Crc32Probe())\n .pipe(new DataLengthProbe(\"uncompressedSize\"))\n .pipe(compression.compressWorker(compressionOptions))\n .pipe(new DataLengthProbe(\"compressedSize\"))\n .withStreamInfo(\"compression\", compression);\n};\n\nmodule.exports = CompressedObject;\n","'use strict';\n\nvar GenericWorker = require(\"./stream/GenericWorker\");\n\nexports.STORE = {\n magic: \"\\x00\\x00\",\n compressWorker : function (compressionOptions) {\n return new GenericWorker(\"STORE compression\");\n },\n uncompressWorker : function () {\n return new GenericWorker(\"STORE decompression\");\n }\n};\nexports.DEFLATE = require('./flate');\n","'use strict';\n\nvar utils = require('./utils');\n\n/**\n * The following functions come from pako, from pako/lib/zlib/crc32.js\n * released under the MIT license, see pako https://github.com/nodeca/pako/\n */\n\n// Use ordinary array, since untyped makes no boost here\nfunction makeTable() {\n var c, table = [];\n\n for(var n =0; n < 256; n++){\n c = n;\n for(var k =0; k < 8; k++){\n c = ((c&1) ? (0xEDB88320 ^ (c >>> 1)) : (c >>> 1));\n }\n table[n] = c;\n }\n\n return table;\n}\n\n// Create table on load. Just 255 signed longs. Not a problem.\nvar crcTable = makeTable();\n\n\nfunction crc32(crc, buf, len, pos) {\n var t = crcTable, end = pos + len;\n\n crc = crc ^ (-1);\n\n for (var i = pos; i < end; i++ ) {\n crc = (crc >>> 8) ^ t[(crc ^ buf[i]) & 0xFF];\n }\n\n return (crc ^ (-1)); // >>> 0;\n}\n\n// That's all for the pako functions.\n\n/**\n * Compute the crc32 of a string.\n * This is almost the same as the function crc32, but for strings. Using the\n * same function for the two use cases leads to horrible performances.\n * @param {Number} crc the starting value of the crc.\n * @param {String} str the string to use.\n * @param {Number} len the length of the string.\n * @param {Number} pos the starting position for the crc32 computation.\n * @return {Number} the computed crc32.\n */\nfunction crc32str(crc, str, len, pos) {\n var t = crcTable, end = pos + len;\n\n crc = crc ^ (-1);\n\n for (var i = pos; i < end; i++ ) {\n crc = (crc >>> 8) ^ t[(crc ^ str.charCodeAt(i)) & 0xFF];\n }\n\n return (crc ^ (-1)); // >>> 0;\n}\n\nmodule.exports = function crc32wrapper(input, crc) {\n if (typeof input === \"undefined\" || !input.length) {\n return 0;\n }\n\n var isArray = utils.getTypeOf(input) !== \"string\";\n\n if(isArray) {\n return crc32(crc|0, input, input.length, 0);\n } else {\n return crc32str(crc|0, input, input.length, 0);\n }\n};\n","'use strict';\nexports.base64 = false;\nexports.binary = false;\nexports.dir = false;\nexports.createFolders = true;\nexports.date = null;\nexports.compression = null;\nexports.compressionOptions = null;\nexports.comment = null;\nexports.unixPermissions = null;\nexports.dosPermissions = null;\n","/* global Promise */\n'use strict';\n\n// load the global object first:\n// - it should be better integrated in the system (unhandledRejection in node)\n// - the environment may have a custom Promise implementation (see zone.js)\nvar ES6Promise = null;\nif (typeof Promise !== \"undefined\") {\n ES6Promise = Promise;\n} else {\n ES6Promise = require(\"lie\");\n}\n\n/**\n * Let the user use/change some implementations.\n */\nmodule.exports = {\n Promise: ES6Promise\n};\n","'use strict';\nvar USE_TYPEDARRAY = (typeof Uint8Array !== 'undefined') && (typeof Uint16Array !== 'undefined') && (typeof Uint32Array !== 'undefined');\n\nvar pako = require(\"pako\");\nvar utils = require(\"./utils\");\nvar GenericWorker = require(\"./stream/GenericWorker\");\n\nvar ARRAY_TYPE = USE_TYPEDARRAY ? \"uint8array\" : \"array\";\n\nexports.magic = \"\\x08\\x00\";\n\n/**\n * Create a worker that uses pako to inflate/deflate.\n * @constructor\n * @param {String} action the name of the pako function to call : either \"Deflate\" or \"Inflate\".\n * @param {Object} options the options to use when (de)compressing.\n */\nfunction FlateWorker(action, options) {\n GenericWorker.call(this, \"FlateWorker/\" + action);\n\n this._pako = null;\n this._pakoAction = action;\n this._pakoOptions = options;\n // the `meta` object from the last chunk received\n // this allow this worker to pass around metadata\n this.meta = {};\n}\n\nutils.inherits(FlateWorker, GenericWorker);\n\n/**\n * @see GenericWorker.processChunk\n */\nFlateWorker.prototype.processChunk = function (chunk) {\n this.meta = chunk.meta;\n if (this._pako === null) {\n this._createPako();\n }\n this._pako.push(utils.transformTo(ARRAY_TYPE, chunk.data), false);\n};\n\n/**\n * @see GenericWorker.flush\n */\nFlateWorker.prototype.flush = function () {\n GenericWorker.prototype.flush.call(this);\n if (this._pako === null) {\n this._createPako();\n }\n this._pako.push([], true);\n};\n/**\n * @see GenericWorker.cleanUp\n */\nFlateWorker.prototype.cleanUp = function () {\n GenericWorker.prototype.cleanUp.call(this);\n this._pako = null;\n};\n\n/**\n * Create the _pako object.\n * TODO: lazy-loading this object isn't the best solution but it's the\n * quickest. The best solution is to lazy-load the worker list. See also the\n * issue #446.\n */\nFlateWorker.prototype._createPako = function () {\n this._pako = new pako[this._pakoAction]({\n raw: true,\n level: this._pakoOptions.level || -1 // default compression\n });\n var self = this;\n this._pako.onData = function(data) {\n self.push({\n data : data,\n meta : self.meta\n });\n };\n};\n\nexports.compressWorker = function (compressionOptions) {\n return new FlateWorker(\"Deflate\", compressionOptions);\n};\nexports.uncompressWorker = function () {\n return new FlateWorker(\"Inflate\", {});\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar GenericWorker = require('../stream/GenericWorker');\nvar utf8 = require('../utf8');\nvar crc32 = require('../crc32');\nvar signature = require('../signature');\n\n/**\n * Transform an integer into a string in hexadecimal.\n * @private\n * @param {number} dec the number to convert.\n * @param {number} bytes the number of bytes to generate.\n * @returns {string} the result.\n */\nvar decToHex = function(dec, bytes) {\n var hex = \"\", i;\n for (i = 0; i < bytes; i++) {\n hex += String.fromCharCode(dec & 0xff);\n dec = dec >>> 8;\n }\n return hex;\n};\n\n/**\n * Generate the UNIX part of the external file attributes.\n * @param {Object} unixPermissions the unix permissions or null.\n * @param {Boolean} isDir true if the entry is a directory, false otherwise.\n * @return {Number} a 32 bit integer.\n *\n * adapted from http://unix.stackexchange.com/questions/14705/the-zip-formats-external-file-attribute :\n *\n * TTTTsstrwxrwxrwx0000000000ADVSHR\n * ^^^^____________________________ file type, see zipinfo.c (UNX_*)\n * ^^^_________________________ setuid, setgid, sticky\n * ^^^^^^^^^________________ permissions\n * ^^^^^^^^^^______ not used ?\n * ^^^^^^ DOS attribute bits : Archive, Directory, Volume label, System file, Hidden, Read only\n */\nvar generateUnixExternalFileAttr = function (unixPermissions, isDir) {\n\n var result = unixPermissions;\n if (!unixPermissions) {\n // I can't use octal values in strict mode, hence the hexa.\n // 040775 => 0x41fd\n // 0100664 => 0x81b4\n result = isDir ? 0x41fd : 0x81b4;\n }\n return (result & 0xFFFF) << 16;\n};\n\n/**\n * Generate the DOS part of the external file attributes.\n * @param {Object} dosPermissions the dos permissions or null.\n * @param {Boolean} isDir true if the entry is a directory, false otherwise.\n * @return {Number} a 32 bit integer.\n *\n * Bit 0 Read-Only\n * Bit 1 Hidden\n * Bit 2 System\n * Bit 3 Volume Label\n * Bit 4 Directory\n * Bit 5 Archive\n */\nvar generateDosExternalFileAttr = function (dosPermissions, isDir) {\n\n // the dir flag is already set for compatibility\n return (dosPermissions || 0) & 0x3F;\n};\n\n/**\n * Generate the various parts used in the construction of the final zip file.\n * @param {Object} streamInfo the hash with informations about the compressed file.\n * @param {Boolean} streamedContent is the content streamed ?\n * @param {Boolean} streamingEnded is the stream finished ?\n * @param {number} offset the current offset from the start of the zip file.\n * @param {String} platform let's pretend we are this platform (change platform dependents fields)\n * @param {Function} encodeFileName the function to encode the file name / comment.\n * @return {Object} the zip parts.\n */\nvar generateZipParts = function(streamInfo, streamedContent, streamingEnded, offset, platform, encodeFileName) {\n var file = streamInfo['file'],\n compression = streamInfo['compression'],\n useCustomEncoding = encodeFileName !== utf8.utf8encode,\n encodedFileName = utils.transformTo(\"string\", encodeFileName(file.name)),\n utfEncodedFileName = utils.transformTo(\"string\", utf8.utf8encode(file.name)),\n comment = file.comment,\n encodedComment = utils.transformTo(\"string\", encodeFileName(comment)),\n utfEncodedComment = utils.transformTo(\"string\", utf8.utf8encode(comment)),\n useUTF8ForFileName = utfEncodedFileName.length !== file.name.length,\n useUTF8ForComment = utfEncodedComment.length !== comment.length,\n dosTime,\n dosDate,\n extraFields = \"\",\n unicodePathExtraField = \"\",\n unicodeCommentExtraField = \"\",\n dir = file.dir,\n date = file.date;\n\n\n var dataInfo = {\n crc32 : 0,\n compressedSize : 0,\n uncompressedSize : 0\n };\n\n // if the content is streamed, the sizes/crc32 are only available AFTER\n // the end of the stream.\n if (!streamedContent || streamingEnded) {\n dataInfo.crc32 = streamInfo['crc32'];\n dataInfo.compressedSize = streamInfo['compressedSize'];\n dataInfo.uncompressedSize = streamInfo['uncompressedSize'];\n }\n\n var bitflag = 0;\n if (streamedContent) {\n // Bit 3: the sizes/crc32 are set to zero in the local header.\n // The correct values are put in the data descriptor immediately\n // following the compressed data.\n bitflag |= 0x0008;\n }\n if (!useCustomEncoding && (useUTF8ForFileName || useUTF8ForComment)) {\n // Bit 11: Language encoding flag (EFS).\n bitflag |= 0x0800;\n }\n\n\n var extFileAttr = 0;\n var versionMadeBy = 0;\n if (dir) {\n // dos or unix, we set the dos dir flag\n extFileAttr |= 0x00010;\n }\n if(platform === \"UNIX\") {\n versionMadeBy = 0x031E; // UNIX, version 3.0\n extFileAttr |= generateUnixExternalFileAttr(file.unixPermissions, dir);\n } else { // DOS or other, fallback to DOS\n versionMadeBy = 0x0014; // DOS, version 2.0\n extFileAttr |= generateDosExternalFileAttr(file.dosPermissions, dir);\n }\n\n // date\n // @see http://www.delorie.com/djgpp/doc/rbinter/it/52/13.html\n // @see http://www.delorie.com/djgpp/doc/rbinter/it/65/16.html\n // @see http://www.delorie.com/djgpp/doc/rbinter/it/66/16.html\n\n dosTime = date.getUTCHours();\n dosTime = dosTime << 6;\n dosTime = dosTime | date.getUTCMinutes();\n dosTime = dosTime << 5;\n dosTime = dosTime | date.getUTCSeconds() / 2;\n\n dosDate = date.getUTCFullYear() - 1980;\n dosDate = dosDate << 4;\n dosDate = dosDate | (date.getUTCMonth() + 1);\n dosDate = dosDate << 5;\n dosDate = dosDate | date.getUTCDate();\n\n if (useUTF8ForFileName) {\n // set the unicode path extra field. unzip needs at least one extra\n // field to correctly handle unicode path, so using the path is as good\n // as any other information. This could improve the situation with\n // other archive managers too.\n // This field is usually used without the utf8 flag, with a non\n // unicode path in the header (winrar, winzip). This helps (a bit)\n // with the messy Windows' default compressed folders feature but\n // breaks on p7zip which doesn't seek the unicode path extra field.\n // So for now, UTF-8 everywhere !\n unicodePathExtraField =\n // Version\n decToHex(1, 1) +\n // NameCRC32\n decToHex(crc32(encodedFileName), 4) +\n // UnicodeName\n utfEncodedFileName;\n\n extraFields +=\n // Info-ZIP Unicode Path Extra Field\n \"\\x75\\x70\" +\n // size\n decToHex(unicodePathExtraField.length, 2) +\n // content\n unicodePathExtraField;\n }\n\n if(useUTF8ForComment) {\n\n unicodeCommentExtraField =\n // Version\n decToHex(1, 1) +\n // CommentCRC32\n decToHex(crc32(encodedComment), 4) +\n // UnicodeName\n utfEncodedComment;\n\n extraFields +=\n // Info-ZIP Unicode Path Extra Field\n \"\\x75\\x63\" +\n // size\n decToHex(unicodeCommentExtraField.length, 2) +\n // content\n unicodeCommentExtraField;\n }\n\n var header = \"\";\n\n // version needed to extract\n header += \"\\x0A\\x00\";\n // general purpose bit flag\n header += decToHex(bitflag, 2);\n // compression method\n header += compression.magic;\n // last mod file time\n header += decToHex(dosTime, 2);\n // last mod file date\n header += decToHex(dosDate, 2);\n // crc-32\n header += decToHex(dataInfo.crc32, 4);\n // compressed size\n header += decToHex(dataInfo.compressedSize, 4);\n // uncompressed size\n header += decToHex(dataInfo.uncompressedSize, 4);\n // file name length\n header += decToHex(encodedFileName.length, 2);\n // extra field length\n header += decToHex(extraFields.length, 2);\n\n\n var fileRecord = signature.LOCAL_FILE_HEADER + header + encodedFileName + extraFields;\n\n var dirRecord = signature.CENTRAL_FILE_HEADER +\n // version made by (00: DOS)\n decToHex(versionMadeBy, 2) +\n // file header (common to file and central directory)\n header +\n // file comment length\n decToHex(encodedComment.length, 2) +\n // disk number start\n \"\\x00\\x00\" +\n // internal file attributes TODO\n \"\\x00\\x00\" +\n // external file attributes\n decToHex(extFileAttr, 4) +\n // relative offset of local header\n decToHex(offset, 4) +\n // file name\n encodedFileName +\n // extra field\n extraFields +\n // file comment\n encodedComment;\n\n return {\n fileRecord: fileRecord,\n dirRecord: dirRecord\n };\n};\n\n/**\n * Generate the EOCD record.\n * @param {Number} entriesCount the number of entries in the zip file.\n * @param {Number} centralDirLength the length (in bytes) of the central dir.\n * @param {Number} localDirLength the length (in bytes) of the local dir.\n * @param {String} comment the zip file comment as a binary string.\n * @param {Function} encodeFileName the function to encode the comment.\n * @return {String} the EOCD record.\n */\nvar generateCentralDirectoryEnd = function (entriesCount, centralDirLength, localDirLength, comment, encodeFileName) {\n var dirEnd = \"\";\n var encodedComment = utils.transformTo(\"string\", encodeFileName(comment));\n\n // end of central dir signature\n dirEnd = signature.CENTRAL_DIRECTORY_END +\n // number of this disk\n \"\\x00\\x00\" +\n // number of the disk with the start of the central directory\n \"\\x00\\x00\" +\n // total number of entries in the central directory on this disk\n decToHex(entriesCount, 2) +\n // total number of entries in the central directory\n decToHex(entriesCount, 2) +\n // size of the central directory 4 bytes\n decToHex(centralDirLength, 4) +\n // offset of start of central directory with respect to the starting disk number\n decToHex(localDirLength, 4) +\n // .ZIP file comment length\n decToHex(encodedComment.length, 2) +\n // .ZIP file comment\n encodedComment;\n\n return dirEnd;\n};\n\n/**\n * Generate data descriptors for a file entry.\n * @param {Object} streamInfo the hash generated by a worker, containing informations\n * on the file entry.\n * @return {String} the data descriptors.\n */\nvar generateDataDescriptors = function (streamInfo) {\n var descriptor = \"\";\n descriptor = signature.DATA_DESCRIPTOR +\n // crc-32 4 bytes\n decToHex(streamInfo['crc32'], 4) +\n // compressed size 4 bytes\n decToHex(streamInfo['compressedSize'], 4) +\n // uncompressed size 4 bytes\n decToHex(streamInfo['uncompressedSize'], 4);\n\n return descriptor;\n};\n\n\n/**\n * A worker to concatenate other workers to create a zip file.\n * @param {Boolean} streamFiles `true` to stream the content of the files,\n * `false` to accumulate it.\n * @param {String} comment the comment to use.\n * @param {String} platform the platform to use, \"UNIX\" or \"DOS\".\n * @param {Function} encodeFileName the function to encode file names and comments.\n */\nfunction ZipFileWorker(streamFiles, comment, platform, encodeFileName) {\n GenericWorker.call(this, \"ZipFileWorker\");\n // The number of bytes written so far. This doesn't count accumulated chunks.\n this.bytesWritten = 0;\n // The comment of the zip file\n this.zipComment = comment;\n // The platform \"generating\" the zip file.\n this.zipPlatform = platform;\n // the function to encode file names and comments.\n this.encodeFileName = encodeFileName;\n // Should we stream the content of the files ?\n this.streamFiles = streamFiles;\n // If `streamFiles` is false, we will need to accumulate the content of the\n // files to calculate sizes / crc32 (and write them *before* the content).\n // This boolean indicates if we are accumulating chunks (it will change a lot\n // during the lifetime of this worker).\n this.accumulate = false;\n // The buffer receiving chunks when accumulating content.\n this.contentBuffer = [];\n // The list of generated directory records.\n this.dirRecords = [];\n // The offset (in bytes) from the beginning of the zip file for the current source.\n this.currentSourceOffset = 0;\n // The total number of entries in this zip file.\n this.entriesCount = 0;\n // the name of the file currently being added, null when handling the end of the zip file.\n // Used for the emited metadata.\n this.currentFile = null;\n\n\n\n this._sources = [];\n}\nutils.inherits(ZipFileWorker, GenericWorker);\n\n/**\n * @see GenericWorker.push\n */\nZipFileWorker.prototype.push = function (chunk) {\n\n var currentFilePercent = chunk.meta.percent || 0;\n var entriesCount = this.entriesCount;\n var remainingFiles = this._sources.length;\n\n if(this.accumulate) {\n this.contentBuffer.push(chunk);\n } else {\n this.bytesWritten += chunk.data.length;\n\n GenericWorker.prototype.push.call(this, {\n data : chunk.data,\n meta : {\n currentFile : this.currentFile,\n percent : entriesCount ? (currentFilePercent + 100 * (entriesCount - remainingFiles - 1)) / entriesCount : 100\n }\n });\n }\n};\n\n/**\n * The worker started a new source (an other worker).\n * @param {Object} streamInfo the streamInfo object from the new source.\n */\nZipFileWorker.prototype.openedSource = function (streamInfo) {\n this.currentSourceOffset = this.bytesWritten;\n this.currentFile = streamInfo['file'].name;\n\n var streamedContent = this.streamFiles && !streamInfo['file'].dir;\n\n // don't stream folders (because they don't have any content)\n if(streamedContent) {\n var record = generateZipParts(streamInfo, streamedContent, false, this.currentSourceOffset, this.zipPlatform, this.encodeFileName);\n this.push({\n data : record.fileRecord,\n meta : {percent:0}\n });\n } else {\n // we need to wait for the whole file before pushing anything\n this.accumulate = true;\n }\n};\n\n/**\n * The worker finished a source (an other worker).\n * @param {Object} streamInfo the streamInfo object from the finished source.\n */\nZipFileWorker.prototype.closedSource = function (streamInfo) {\n this.accumulate = false;\n var streamedContent = this.streamFiles && !streamInfo['file'].dir;\n var record = generateZipParts(streamInfo, streamedContent, true, this.currentSourceOffset, this.zipPlatform, this.encodeFileName);\n\n this.dirRecords.push(record.dirRecord);\n if(streamedContent) {\n // after the streamed file, we put data descriptors\n this.push({\n data : generateDataDescriptors(streamInfo),\n meta : {percent:100}\n });\n } else {\n // the content wasn't streamed, we need to push everything now\n // first the file record, then the content\n this.push({\n data : record.fileRecord,\n meta : {percent:0}\n });\n while(this.contentBuffer.length) {\n this.push(this.contentBuffer.shift());\n }\n }\n this.currentFile = null;\n};\n\n/**\n * @see GenericWorker.flush\n */\nZipFileWorker.prototype.flush = function () {\n\n var localDirLength = this.bytesWritten;\n for(var i = 0; i < this.dirRecords.length; i++) {\n this.push({\n data : this.dirRecords[i],\n meta : {percent:100}\n });\n }\n var centralDirLength = this.bytesWritten - localDirLength;\n\n var dirEnd = generateCentralDirectoryEnd(this.dirRecords.length, centralDirLength, localDirLength, this.zipComment, this.encodeFileName);\n\n this.push({\n data : dirEnd,\n meta : {percent:100}\n });\n};\n\n/**\n * Prepare the next source to be read.\n */\nZipFileWorker.prototype.prepareNextSource = function () {\n this.previous = this._sources.shift();\n this.openedSource(this.previous.streamInfo);\n if (this.isPaused) {\n this.previous.pause();\n } else {\n this.previous.resume();\n }\n};\n\n/**\n * @see GenericWorker.registerPrevious\n */\nZipFileWorker.prototype.registerPrevious = function (previous) {\n this._sources.push(previous);\n var self = this;\n\n previous.on('data', function (chunk) {\n self.processChunk(chunk);\n });\n previous.on('end', function () {\n self.closedSource(self.previous.streamInfo);\n if(self._sources.length) {\n self.prepareNextSource();\n } else {\n self.end();\n }\n });\n previous.on('error', function (e) {\n self.error(e);\n });\n return this;\n};\n\n/**\n * @see GenericWorker.resume\n */\nZipFileWorker.prototype.resume = function () {\n if(!GenericWorker.prototype.resume.call(this)) {\n return false;\n }\n\n if (!this.previous && this._sources.length) {\n this.prepareNextSource();\n return true;\n }\n if (!this.previous && !this._sources.length && !this.generatedError) {\n this.end();\n return true;\n }\n};\n\n/**\n * @see GenericWorker.error\n */\nZipFileWorker.prototype.error = function (e) {\n var sources = this._sources;\n if(!GenericWorker.prototype.error.call(this, e)) {\n return false;\n }\n for(var i = 0; i < sources.length; i++) {\n try {\n sources[i].error(e);\n } catch(e) {\n // the `error` exploded, nothing to do\n }\n }\n return true;\n};\n\n/**\n * @see GenericWorker.lock\n */\nZipFileWorker.prototype.lock = function () {\n GenericWorker.prototype.lock.call(this);\n var sources = this._sources;\n for(var i = 0; i < sources.length; i++) {\n sources[i].lock();\n }\n};\n\nmodule.exports = ZipFileWorker;\n","'use strict';\n\nvar compressions = require('../compressions');\nvar ZipFileWorker = require('./ZipFileWorker');\n\n/**\n * Find the compression to use.\n * @param {String} fileCompression the compression defined at the file level, if any.\n * @param {String} zipCompression the compression defined at the load() level.\n * @return {Object} the compression object to use.\n */\nvar getCompression = function (fileCompression, zipCompression) {\n\n var compressionName = fileCompression || zipCompression;\n var compression = compressions[compressionName];\n if (!compression) {\n throw new Error(compressionName + \" is not a valid compression method !\");\n }\n return compression;\n};\n\n/**\n * Create a worker to generate a zip file.\n * @param {JSZip} zip the JSZip instance at the right root level.\n * @param {Object} options to generate the zip file.\n * @param {String} comment the comment to use.\n */\nexports.generateWorker = function (zip, options, comment) {\n\n var zipFileWorker = new ZipFileWorker(options.streamFiles, comment, options.platform, options.encodeFileName);\n var entriesCount = 0;\n try {\n\n zip.forEach(function (relativePath, file) {\n entriesCount++;\n var compression = getCompression(file.options.compression, options.compression);\n var compressionOptions = file.options.compressionOptions || options.compressionOptions || {};\n var dir = file.dir, date = file.date;\n\n file._compressWorker(compression, compressionOptions)\n .withStreamInfo(\"file\", {\n name : relativePath,\n dir : dir,\n date : date,\n comment : file.comment || \"\",\n unixPermissions : file.unixPermissions,\n dosPermissions : file.dosPermissions\n })\n .pipe(zipFileWorker);\n });\n zipFileWorker.entriesCount = entriesCount;\n } catch (e) {\n zipFileWorker.error(e);\n }\n\n return zipFileWorker;\n};\n","'use strict';\n\n/**\n * Representation a of zip file in js\n * @constructor\n */\nfunction JSZip() {\n // if this constructor is used without `new`, it adds `new` before itself:\n if(!(this instanceof JSZip)) {\n return new JSZip();\n }\n\n if(arguments.length) {\n throw new Error(\"The constructor with parameters has been removed in JSZip 3.0, please check the upgrade guide.\");\n }\n\n // object containing the files :\n // {\n // \"folder/\" : {...},\n // \"folder/data.txt\" : {...}\n // }\n this.files = {};\n\n this.comment = null;\n\n // Where we are in the hierarchy\n this.root = \"\";\n this.clone = function() {\n var newObj = new JSZip();\n for (var i in this) {\n if (typeof this[i] !== \"function\") {\n newObj[i] = this[i];\n }\n }\n return newObj;\n };\n}\nJSZip.prototype = require('./object');\nJSZip.prototype.loadAsync = require('./load');\nJSZip.support = require('./support');\nJSZip.defaults = require('./defaults');\n\n// TODO find a better way to handle this version,\n// a require('package.json').version doesn't work with webpack, see #327\nJSZip.version = \"3.1.5\";\n\nJSZip.loadAsync = function (content, options) {\n return new JSZip().loadAsync(content, options);\n};\n\nJSZip.external = require(\"./external\");\nmodule.exports = JSZip;\n","'use strict';\nvar utils = require('./utils');\nvar external = require(\"./external\");\nvar utf8 = require('./utf8');\nvar utils = require('./utils');\nvar ZipEntries = require('./zipEntries');\nvar Crc32Probe = require('./stream/Crc32Probe');\nvar nodejsUtils = require(\"./nodejsUtils\");\n\n/**\n * Check the CRC32 of an entry.\n * @param {ZipEntry} zipEntry the zip entry to check.\n * @return {Promise} the result.\n */\nfunction checkEntryCRC32(zipEntry) {\n return new external.Promise(function (resolve, reject) {\n var worker = zipEntry.decompressed.getContentWorker().pipe(new Crc32Probe());\n worker.on(\"error\", function (e) {\n reject(e);\n })\n .on(\"end\", function () {\n if (worker.streamInfo.crc32 !== zipEntry.decompressed.crc32) {\n reject(new Error(\"Corrupted zip : CRC32 mismatch\"));\n } else {\n resolve();\n }\n })\n .resume();\n });\n}\n\nmodule.exports = function(data, options) {\n var zip = this;\n options = utils.extend(options || {}, {\n base64: false,\n checkCRC32: false,\n optimizedBinaryString: false,\n createFolders: false,\n decodeFileName: utf8.utf8decode\n });\n\n if (nodejsUtils.isNode && nodejsUtils.isStream(data)) {\n return external.Promise.reject(new Error(\"JSZip can't accept a stream when loading a zip file.\"));\n }\n\n return utils.prepareContent(\"the loaded zip file\", data, true, options.optimizedBinaryString, options.base64)\n .then(function(data) {\n var zipEntries = new ZipEntries(options);\n zipEntries.load(data);\n return zipEntries;\n }).then(function checkCRC32(zipEntries) {\n var promises = [external.Promise.resolve(zipEntries)];\n var files = zipEntries.files;\n if (options.checkCRC32) {\n for (var i = 0; i < files.length; i++) {\n promises.push(checkEntryCRC32(files[i]));\n }\n }\n return external.Promise.all(promises);\n }).then(function addFiles(results) {\n var zipEntries = results.shift();\n var files = zipEntries.files;\n for (var i = 0; i < files.length; i++) {\n var input = files[i];\n zip.file(input.fileNameStr, input.decompressed, {\n binary: true,\n optimizedBinaryString: true,\n date: input.date,\n dir: input.dir,\n comment : input.fileCommentStr.length ? input.fileCommentStr : null,\n unixPermissions : input.unixPermissions,\n dosPermissions : input.dosPermissions,\n createFolders: options.createFolders\n });\n }\n if (zipEntries.zipComment.length) {\n zip.comment = zipEntries.zipComment;\n }\n\n return zip;\n });\n};\n","\"use strict\";\n\nvar utils = require('../utils');\nvar GenericWorker = require('../stream/GenericWorker');\n\n/**\n * A worker that use a nodejs stream as source.\n * @constructor\n * @param {String} filename the name of the file entry for this stream.\n * @param {Readable} stream the nodejs stream.\n */\nfunction NodejsStreamInputAdapter(filename, stream) {\n GenericWorker.call(this, \"Nodejs stream input adapter for \" + filename);\n this._upstreamEnded = false;\n this._bindStream(stream);\n}\n\nutils.inherits(NodejsStreamInputAdapter, GenericWorker);\n\n/**\n * Prepare the stream and bind the callbacks on it.\n * Do this ASAP on node 0.10 ! A lazy binding doesn't always work.\n * @param {Stream} stream the nodejs stream to use.\n */\nNodejsStreamInputAdapter.prototype._bindStream = function (stream) {\n var self = this;\n this._stream = stream;\n stream.pause();\n stream\n .on(\"data\", function (chunk) {\n self.push({\n data: chunk,\n meta : {\n percent : 0\n }\n });\n })\n .on(\"error\", function (e) {\n if(self.isPaused) {\n this.generatedError = e;\n } else {\n self.error(e);\n }\n })\n .on(\"end\", function () {\n if(self.isPaused) {\n self._upstreamEnded = true;\n } else {\n self.end();\n }\n });\n};\nNodejsStreamInputAdapter.prototype.pause = function () {\n if(!GenericWorker.prototype.pause.call(this)) {\n return false;\n }\n this._stream.pause();\n return true;\n};\nNodejsStreamInputAdapter.prototype.resume = function () {\n if(!GenericWorker.prototype.resume.call(this)) {\n return false;\n }\n\n if(this._upstreamEnded) {\n this.end();\n } else {\n this._stream.resume();\n }\n\n return true;\n};\n\nmodule.exports = NodejsStreamInputAdapter;\n","'use strict';\n\nvar Readable = require('readable-stream').Readable;\n\nvar utils = require('../utils');\nutils.inherits(NodejsStreamOutputAdapter, Readable);\n\n/**\n* A nodejs stream using a worker as source.\n* @see the SourceWrapper in http://nodejs.org/api/stream.html\n* @constructor\n* @param {StreamHelper} helper the helper wrapping the worker\n* @param {Object} options the nodejs stream options\n* @param {Function} updateCb the update callback.\n*/\nfunction NodejsStreamOutputAdapter(helper, options, updateCb) {\n Readable.call(this, options);\n this._helper = helper;\n\n var self = this;\n helper.on(\"data\", function (data, meta) {\n if (!self.push(data)) {\n self._helper.pause();\n }\n if(updateCb) {\n updateCb(meta);\n }\n })\n .on(\"error\", function(e) {\n self.emit('error', e);\n })\n .on(\"end\", function () {\n self.push(null);\n });\n}\n\n\nNodejsStreamOutputAdapter.prototype._read = function() {\n this._helper.resume();\n};\n\nmodule.exports = NodejsStreamOutputAdapter;\n","'use strict';\n\nmodule.exports = {\n /**\n * True if this is running in Nodejs, will be undefined in a browser.\n * In a browser, browserify won't include this file and the whole module\n * will be resolved an empty object.\n */\n isNode : typeof Buffer !== \"undefined\",\n /**\n * Create a new nodejs Buffer from an existing content.\n * @param {Object} data the data to pass to the constructor.\n * @param {String} encoding the encoding to use.\n * @return {Buffer} a new Buffer.\n */\n newBufferFrom: function(data, encoding) {\n // XXX We can't use `Buffer.from` which comes from `Uint8Array.from`\n // in nodejs v4 (< v.4.5). It's not the expected implementation (and\n // has a different signature).\n // see https://github.com/nodejs/node/issues/8053\n // A condition on nodejs' version won't solve the issue as we don't\n // control the Buffer polyfills that may or may not be used.\n return new Buffer(data, encoding);\n },\n /**\n * Create a new nodejs Buffer with the specified size.\n * @param {Integer} size the size of the buffer.\n * @return {Buffer} a new Buffer.\n */\n allocBuffer: function (size) {\n if (Buffer.alloc) {\n return Buffer.alloc(size);\n } else {\n return new Buffer(size);\n }\n },\n /**\n * Find out if an object is a Buffer.\n * @param {Object} b the object to test.\n * @return {Boolean} true if the object is a Buffer, false otherwise.\n */\n isBuffer : function(b){\n return Buffer.isBuffer(b);\n },\n\n isStream : function (obj) {\n return obj &&\n typeof obj.on === \"function\" &&\n typeof obj.pause === \"function\" &&\n typeof obj.resume === \"function\";\n }\n};\n","'use strict';\nvar utf8 = require('./utf8');\nvar utils = require('./utils');\nvar GenericWorker = require('./stream/GenericWorker');\nvar StreamHelper = require('./stream/StreamHelper');\nvar defaults = require('./defaults');\nvar CompressedObject = require('./compressedObject');\nvar ZipObject = require('./zipObject');\nvar generate = require(\"./generate\");\nvar nodejsUtils = require(\"./nodejsUtils\");\nvar NodejsStreamInputAdapter = require(\"./nodejs/NodejsStreamInputAdapter\");\n\n\n/**\n * Add a file in the current folder.\n * @private\n * @param {string} name the name of the file\n * @param {String|ArrayBuffer|Uint8Array|Buffer} data the data of the file\n * @param {Object} originalOptions the options of the file\n * @return {Object} the new file.\n */\nvar fileAdd = function(name, data, originalOptions) {\n // be sure sub folders exist\n var dataType = utils.getTypeOf(data),\n parent;\n\n\n /*\n * Correct options.\n */\n\n var o = utils.extend(originalOptions || {}, defaults);\n o.date = o.date || new Date();\n if (o.compression !== null) {\n o.compression = o.compression.toUpperCase();\n }\n\n if (typeof o.unixPermissions === \"string\") {\n o.unixPermissions = parseInt(o.unixPermissions, 8);\n }\n\n // UNX_IFDIR 0040000 see zipinfo.c\n if (o.unixPermissions && (o.unixPermissions & 0x4000)) {\n o.dir = true;\n }\n // Bit 4 Directory\n if (o.dosPermissions && (o.dosPermissions & 0x0010)) {\n o.dir = true;\n }\n\n if (o.dir) {\n name = forceTrailingSlash(name);\n }\n if (o.createFolders && (parent = parentFolder(name))) {\n folderAdd.call(this, parent, true);\n }\n\n var isUnicodeString = dataType === \"string\" && o.binary === false && o.base64 === false;\n if (!originalOptions || typeof originalOptions.binary === \"undefined\") {\n o.binary = !isUnicodeString;\n }\n\n\n var isCompressedEmpty = (data instanceof CompressedObject) && data.uncompressedSize === 0;\n\n if (isCompressedEmpty || o.dir || !data || data.length === 0) {\n o.base64 = false;\n o.binary = true;\n data = \"\";\n o.compression = \"STORE\";\n dataType = \"string\";\n }\n\n /*\n * Convert content to fit.\n */\n\n var zipObjectContent = null;\n if (data instanceof CompressedObject || data instanceof GenericWorker) {\n zipObjectContent = data;\n } else if (nodejsUtils.isNode && nodejsUtils.isStream(data)) {\n zipObjectContent = new NodejsStreamInputAdapter(name, data);\n } else {\n zipObjectContent = utils.prepareContent(name, data, o.binary, o.optimizedBinaryString, o.base64);\n }\n\n var object = new ZipObject(name, zipObjectContent, o);\n this.files[name] = object;\n /*\n TODO: we can't throw an exception because we have async promises\n (we can have a promise of a Date() for example) but returning a\n promise is useless because file(name, data) returns the JSZip\n object for chaining. Should we break that to allow the user\n to catch the error ?\n\n return external.Promise.resolve(zipObjectContent)\n .then(function () {\n return object;\n });\n */\n};\n\n/**\n * Find the parent folder of the path.\n * @private\n * @param {string} path the path to use\n * @return {string} the parent folder, or \"\"\n */\nvar parentFolder = function (path) {\n if (path.slice(-1) === '/') {\n path = path.substring(0, path.length - 1);\n }\n var lastSlash = path.lastIndexOf('/');\n return (lastSlash > 0) ? path.substring(0, lastSlash) : \"\";\n};\n\n/**\n * Returns the path with a slash at the end.\n * @private\n * @param {String} path the path to check.\n * @return {String} the path with a trailing slash.\n */\nvar forceTrailingSlash = function(path) {\n // Check the name ends with a /\n if (path.slice(-1) !== \"/\") {\n path += \"/\"; // IE doesn't like substr(-1)\n }\n return path;\n};\n\n/**\n * Add a (sub) folder in the current folder.\n * @private\n * @param {string} name the folder's name\n * @param {boolean=} [createFolders] If true, automatically create sub\n * folders. Defaults to false.\n * @return {Object} the new folder.\n */\nvar folderAdd = function(name, createFolders) {\n createFolders = (typeof createFolders !== 'undefined') ? createFolders : defaults.createFolders;\n\n name = forceTrailingSlash(name);\n\n // Does this folder already exist?\n if (!this.files[name]) {\n fileAdd.call(this, name, null, {\n dir: true,\n createFolders: createFolders\n });\n }\n return this.files[name];\n};\n\n/**\n* Cross-window, cross-Node-context regular expression detection\n* @param {Object} object Anything\n* @return {Boolean} true if the object is a regular expression,\n* false otherwise\n*/\nfunction isRegExp(object) {\n return Object.prototype.toString.call(object) === \"[object RegExp]\";\n}\n\n// return the actual prototype of JSZip\nvar out = {\n /**\n * @see loadAsync\n */\n load: function() {\n throw new Error(\"This method has been removed in JSZip 3.0, please check the upgrade guide.\");\n },\n\n\n /**\n * Call a callback function for each entry at this folder level.\n * @param {Function} cb the callback function:\n * function (relativePath, file) {...}\n * It takes 2 arguments : the relative path and the file.\n */\n forEach: function(cb) {\n var filename, relativePath, file;\n for (filename in this.files) {\n if (!this.files.hasOwnProperty(filename)) {\n continue;\n }\n file = this.files[filename];\n relativePath = filename.slice(this.root.length, filename.length);\n if (relativePath && filename.slice(0, this.root.length) === this.root) { // the file is in the current root\n cb(relativePath, file); // TODO reverse the parameters ? need to be clean AND consistent with the filter search fn...\n }\n }\n },\n\n /**\n * Filter nested files/folders with the specified function.\n * @param {Function} search the predicate to use :\n * function (relativePath, file) {...}\n * It takes 2 arguments : the relative path and the file.\n * @return {Array} An array of matching elements.\n */\n filter: function(search) {\n var result = [];\n this.forEach(function (relativePath, entry) {\n if (search(relativePath, entry)) { // the file matches the function\n result.push(entry);\n }\n\n });\n return result;\n },\n\n /**\n * Add a file to the zip file, or search a file.\n * @param {string|RegExp} name The name of the file to add (if data is defined),\n * the name of the file to find (if no data) or a regex to match files.\n * @param {String|ArrayBuffer|Uint8Array|Buffer} data The file data, either raw or base64 encoded\n * @param {Object} o File options\n * @return {JSZip|Object|Array} this JSZip object (when adding a file),\n * a file (when searching by string) or an array of files (when searching by regex).\n */\n file: function(name, data, o) {\n if (arguments.length === 1) {\n if (isRegExp(name)) {\n var regexp = name;\n return this.filter(function(relativePath, file) {\n return !file.dir && regexp.test(relativePath);\n });\n }\n else { // text\n var obj = this.files[this.root + name];\n if (obj && !obj.dir) {\n return obj;\n } else {\n return null;\n }\n }\n }\n else { // more than one argument : we have data !\n name = this.root + name;\n fileAdd.call(this, name, data, o);\n }\n return this;\n },\n\n /**\n * Add a directory to the zip file, or search.\n * @param {String|RegExp} arg The name of the directory to add, or a regex to search folders.\n * @return {JSZip} an object with the new directory as the root, or an array containing matching folders.\n */\n folder: function(arg) {\n if (!arg) {\n return this;\n }\n\n if (isRegExp(arg)) {\n return this.filter(function(relativePath, file) {\n return file.dir && arg.test(relativePath);\n });\n }\n\n // else, name is a new folder\n var name = this.root + arg;\n var newFolder = folderAdd.call(this, name);\n\n // Allow chaining by returning a new object with this folder as the root\n var ret = this.clone();\n ret.root = newFolder.name;\n return ret;\n },\n\n /**\n * Delete a file, or a directory and all sub-files, from the zip\n * @param {string} name the name of the file to delete\n * @return {JSZip} this JSZip object\n */\n remove: function(name) {\n name = this.root + name;\n var file = this.files[name];\n if (!file) {\n // Look for any folders\n if (name.slice(-1) !== \"/\") {\n name += \"/\";\n }\n file = this.files[name];\n }\n\n if (file && !file.dir) {\n // file\n delete this.files[name];\n } else {\n // maybe a folder, delete recursively\n var kids = this.filter(function(relativePath, file) {\n return file.name.slice(0, name.length) === name;\n });\n for (var i = 0; i < kids.length; i++) {\n delete this.files[kids[i].name];\n }\n }\n\n return this;\n },\n\n /**\n * Generate the complete zip file\n * @param {Object} options the options to generate the zip file :\n * - compression, \"STORE\" by default.\n * - type, \"base64\" by default. Values are : string, base64, uint8array, arraybuffer, blob.\n * @return {String|Uint8Array|ArrayBuffer|Buffer|Blob} the zip file\n */\n generate: function(options) {\n throw new Error(\"This method has been removed in JSZip 3.0, please check the upgrade guide.\");\n },\n\n /**\n * Generate the complete zip file as an internal stream.\n * @param {Object} options the options to generate the zip file :\n * - compression, \"STORE\" by default.\n * - type, \"base64\" by default. Values are : string, base64, uint8array, arraybuffer, blob.\n * @return {StreamHelper} the streamed zip file.\n */\n generateInternalStream: function(options) {\n var worker, opts = {};\n try {\n opts = utils.extend(options || {}, {\n streamFiles: false,\n compression: \"STORE\",\n compressionOptions : null,\n type: \"\",\n platform: \"DOS\",\n comment: null,\n mimeType: 'application/zip',\n encodeFileName: utf8.utf8encode\n });\n\n opts.type = opts.type.toLowerCase();\n opts.compression = opts.compression.toUpperCase();\n\n // \"binarystring\" is prefered but the internals use \"string\".\n if(opts.type === \"binarystring\") {\n opts.type = \"string\";\n }\n\n if (!opts.type) {\n throw new Error(\"No output type specified.\");\n }\n\n utils.checkSupport(opts.type);\n\n // accept nodejs `process.platform`\n if(\n opts.platform === 'darwin' ||\n opts.platform === 'freebsd' ||\n opts.platform === 'linux' ||\n opts.platform === 'sunos'\n ) {\n opts.platform = \"UNIX\";\n }\n if (opts.platform === 'win32') {\n opts.platform = \"DOS\";\n }\n\n var comment = opts.comment || this.comment || \"\";\n worker = generate.generateWorker(this, opts, comment);\n } catch (e) {\n worker = new GenericWorker(\"error\");\n worker.error(e);\n }\n return new StreamHelper(worker, opts.type || \"string\", opts.mimeType);\n },\n /**\n * Generate the complete zip file asynchronously.\n * @see generateInternalStream\n */\n generateAsync: function(options, onUpdate) {\n return this.generateInternalStream(options).accumulate(onUpdate);\n },\n /**\n * Generate the complete zip file asynchronously.\n * @see generateInternalStream\n */\n generateNodeStream: function(options, onUpdate) {\n options = options || {};\n if (!options.type) {\n options.type = \"nodebuffer\";\n }\n return this.generateInternalStream(options).toNodejsStream(onUpdate);\n }\n};\nmodule.exports = out;\n","/*\n * This file is used by module bundlers (browserify/webpack/etc) when\n * including a stream implementation. We use \"readable-stream\" to get a\n * consistent behavior between nodejs versions but bundlers often have a shim\n * for \"stream\". Using this shim greatly improve the compatibility and greatly\n * reduce the final size of the bundle (only one stream implementation, not\n * two).\n */\nmodule.exports = require(\"stream\");\n","'use strict';\nvar DataReader = require('./DataReader');\nvar utils = require('../utils');\n\nfunction ArrayReader(data) {\n DataReader.call(this, data);\n\tfor(var i = 0; i < this.data.length; i++) {\n\t\tdata[i] = data[i] & 0xFF;\n\t}\n}\nutils.inherits(ArrayReader, DataReader);\n/**\n * @see DataReader.byteAt\n */\nArrayReader.prototype.byteAt = function(i) {\n return this.data[this.zero + i];\n};\n/**\n * @see DataReader.lastIndexOfSignature\n */\nArrayReader.prototype.lastIndexOfSignature = function(sig) {\n var sig0 = sig.charCodeAt(0),\n sig1 = sig.charCodeAt(1),\n sig2 = sig.charCodeAt(2),\n sig3 = sig.charCodeAt(3);\n for (var i = this.length - 4; i >= 0; --i) {\n if (this.data[i] === sig0 && this.data[i + 1] === sig1 && this.data[i + 2] === sig2 && this.data[i + 3] === sig3) {\n return i - this.zero;\n }\n }\n\n return -1;\n};\n/**\n * @see DataReader.readAndCheckSignature\n */\nArrayReader.prototype.readAndCheckSignature = function (sig) {\n var sig0 = sig.charCodeAt(0),\n sig1 = sig.charCodeAt(1),\n sig2 = sig.charCodeAt(2),\n sig3 = sig.charCodeAt(3),\n data = this.readData(4);\n return sig0 === data[0] && sig1 === data[1] && sig2 === data[2] && sig3 === data[3];\n};\n/**\n * @see DataReader.readData\n */\nArrayReader.prototype.readData = function(size) {\n this.checkOffset(size);\n if(size === 0) {\n return [];\n }\n var result = this.data.slice(this.zero + this.index, this.zero + this.index + size);\n this.index += size;\n return result;\n};\nmodule.exports = ArrayReader;\n","'use strict';\nvar utils = require('../utils');\n\nfunction DataReader(data) {\n this.data = data; // type : see implementation\n this.length = data.length;\n this.index = 0;\n this.zero = 0;\n}\nDataReader.prototype = {\n /**\n * Check that the offset will not go too far.\n * @param {string} offset the additional offset to check.\n * @throws {Error} an Error if the offset is out of bounds.\n */\n checkOffset: function(offset) {\n this.checkIndex(this.index + offset);\n },\n /**\n * Check that the specified index will not be too far.\n * @param {string} newIndex the index to check.\n * @throws {Error} an Error if the index is out of bounds.\n */\n checkIndex: function(newIndex) {\n if (this.length < this.zero + newIndex || newIndex < 0) {\n throw new Error(\"End of data reached (data length = \" + this.length + \", asked index = \" + (newIndex) + \"). Corrupted zip ?\");\n }\n },\n /**\n * Change the index.\n * @param {number} newIndex The new index.\n * @throws {Error} if the new index is out of the data.\n */\n setIndex: function(newIndex) {\n this.checkIndex(newIndex);\n this.index = newIndex;\n },\n /**\n * Skip the next n bytes.\n * @param {number} n the number of bytes to skip.\n * @throws {Error} if the new index is out of the data.\n */\n skip: function(n) {\n this.setIndex(this.index + n);\n },\n /**\n * Get the byte at the specified index.\n * @param {number} i the index to use.\n * @return {number} a byte.\n */\n byteAt: function(i) {\n // see implementations\n },\n /**\n * Get the next number with a given byte size.\n * @param {number} size the number of bytes to read.\n * @return {number} the corresponding number.\n */\n readInt: function(size) {\n var result = 0,\n i;\n this.checkOffset(size);\n for (i = this.index + size - 1; i >= this.index; i--) {\n result = (result << 8) + this.byteAt(i);\n }\n this.index += size;\n return result;\n },\n /**\n * Get the next string with a given byte size.\n * @param {number} size the number of bytes to read.\n * @return {string} the corresponding string.\n */\n readString: function(size) {\n return utils.transformTo(\"string\", this.readData(size));\n },\n /**\n * Get raw data without conversion, bytes.\n * @param {number} size the number of bytes to read.\n * @return {Object} the raw data, implementation specific.\n */\n readData: function(size) {\n // see implementations\n },\n /**\n * Find the last occurence of a zip signature (4 bytes).\n * @param {string} sig the signature to find.\n * @return {number} the index of the last occurence, -1 if not found.\n */\n lastIndexOfSignature: function(sig) {\n // see implementations\n },\n /**\n * Read the signature (4 bytes) at the current position and compare it with sig.\n * @param {string} sig the expected signature\n * @return {boolean} true if the signature matches, false otherwise.\n */\n readAndCheckSignature: function(sig) {\n // see implementations\n },\n /**\n * Get the next date.\n * @return {Date} the date.\n */\n readDate: function() {\n var dostime = this.readInt(4);\n return new Date(Date.UTC(\n ((dostime >> 25) & 0x7f) + 1980, // year\n ((dostime >> 21) & 0x0f) - 1, // month\n (dostime >> 16) & 0x1f, // day\n (dostime >> 11) & 0x1f, // hour\n (dostime >> 5) & 0x3f, // minute\n (dostime & 0x1f) << 1)); // second\n }\n};\nmodule.exports = DataReader;\n","'use strict';\nvar Uint8ArrayReader = require('./Uint8ArrayReader');\nvar utils = require('../utils');\n\nfunction NodeBufferReader(data) {\n Uint8ArrayReader.call(this, data);\n}\nutils.inherits(NodeBufferReader, Uint8ArrayReader);\n\n/**\n * @see DataReader.readData\n */\nNodeBufferReader.prototype.readData = function(size) {\n this.checkOffset(size);\n var result = this.data.slice(this.zero + this.index, this.zero + this.index + size);\n this.index += size;\n return result;\n};\nmodule.exports = NodeBufferReader;\n","'use strict';\nvar DataReader = require('./DataReader');\nvar utils = require('../utils');\n\nfunction StringReader(data) {\n DataReader.call(this, data);\n}\nutils.inherits(StringReader, DataReader);\n/**\n * @see DataReader.byteAt\n */\nStringReader.prototype.byteAt = function(i) {\n return this.data.charCodeAt(this.zero + i);\n};\n/**\n * @see DataReader.lastIndexOfSignature\n */\nStringReader.prototype.lastIndexOfSignature = function(sig) {\n return this.data.lastIndexOf(sig) - this.zero;\n};\n/**\n * @see DataReader.readAndCheckSignature\n */\nStringReader.prototype.readAndCheckSignature = function (sig) {\n var data = this.readData(4);\n return sig === data;\n};\n/**\n * @see DataReader.readData\n */\nStringReader.prototype.readData = function(size) {\n this.checkOffset(size);\n // this will work because the constructor applied the \"& 0xff\" mask.\n var result = this.data.slice(this.zero + this.index, this.zero + this.index + size);\n this.index += size;\n return result;\n};\nmodule.exports = StringReader;\n","'use strict';\nvar ArrayReader = require('./ArrayReader');\nvar utils = require('../utils');\n\nfunction Uint8ArrayReader(data) {\n ArrayReader.call(this, data);\n}\nutils.inherits(Uint8ArrayReader, ArrayReader);\n/**\n * @see DataReader.readData\n */\nUint8ArrayReader.prototype.readData = function(size) {\n this.checkOffset(size);\n if(size === 0) {\n // in IE10, when using subarray(idx, idx), we get the array [0x00] instead of [].\n return new Uint8Array(0);\n }\n var result = this.data.subarray(this.zero + this.index, this.zero + this.index + size);\n this.index += size;\n return result;\n};\nmodule.exports = Uint8ArrayReader;\n","'use strict';\n\nvar utils = require('../utils');\nvar support = require('../support');\nvar ArrayReader = require('./ArrayReader');\nvar StringReader = require('./StringReader');\nvar NodeBufferReader = require('./NodeBufferReader');\nvar Uint8ArrayReader = require('./Uint8ArrayReader');\n\n/**\n * Create a reader adapted to the data.\n * @param {String|ArrayBuffer|Uint8Array|Buffer} data the data to read.\n * @return {DataReader} the data reader.\n */\nmodule.exports = function (data) {\n var type = utils.getTypeOf(data);\n utils.checkSupport(type);\n if (type === \"string\" && !support.uint8array) {\n return new StringReader(data);\n }\n if (type === \"nodebuffer\") {\n return new NodeBufferReader(data);\n }\n if (support.uint8array) {\n return new Uint8ArrayReader(utils.transformTo(\"uint8array\", data));\n }\n return new ArrayReader(utils.transformTo(\"array\", data));\n};\n","'use strict';\nexports.LOCAL_FILE_HEADER = \"PK\\x03\\x04\";\nexports.CENTRAL_FILE_HEADER = \"PK\\x01\\x02\";\nexports.CENTRAL_DIRECTORY_END = \"PK\\x05\\x06\";\nexports.ZIP64_CENTRAL_DIRECTORY_LOCATOR = \"PK\\x06\\x07\";\nexports.ZIP64_CENTRAL_DIRECTORY_END = \"PK\\x06\\x06\";\nexports.DATA_DESCRIPTOR = \"PK\\x07\\x08\";\n","'use strict';\n\nvar GenericWorker = require('./GenericWorker');\nvar utils = require('../utils');\n\n/**\n * A worker which convert chunks to a specified type.\n * @constructor\n * @param {String} destType the destination type.\n */\nfunction ConvertWorker(destType) {\n GenericWorker.call(this, \"ConvertWorker to \" + destType);\n this.destType = destType;\n}\nutils.inherits(ConvertWorker, GenericWorker);\n\n/**\n * @see GenericWorker.processChunk\n */\nConvertWorker.prototype.processChunk = function (chunk) {\n this.push({\n data : utils.transformTo(this.destType, chunk.data),\n meta : chunk.meta\n });\n};\nmodule.exports = ConvertWorker;\n","'use strict';\n\nvar GenericWorker = require('./GenericWorker');\nvar crc32 = require('../crc32');\nvar utils = require('../utils');\n\n/**\n * A worker which calculate the crc32 of the data flowing through.\n * @constructor\n */\nfunction Crc32Probe() {\n GenericWorker.call(this, \"Crc32Probe\");\n this.withStreamInfo(\"crc32\", 0);\n}\nutils.inherits(Crc32Probe, GenericWorker);\n\n/**\n * @see GenericWorker.processChunk\n */\nCrc32Probe.prototype.processChunk = function (chunk) {\n this.streamInfo.crc32 = crc32(chunk.data, this.streamInfo.crc32 || 0);\n this.push(chunk);\n};\nmodule.exports = Crc32Probe;\n","'use strict';\n\nvar utils = require('../utils');\nvar GenericWorker = require('./GenericWorker');\n\n/**\n * A worker which calculate the total length of the data flowing through.\n * @constructor\n * @param {String} propName the name used to expose the length\n */\nfunction DataLengthProbe(propName) {\n GenericWorker.call(this, \"DataLengthProbe for \" + propName);\n this.propName = propName;\n this.withStreamInfo(propName, 0);\n}\nutils.inherits(DataLengthProbe, GenericWorker);\n\n/**\n * @see GenericWorker.processChunk\n */\nDataLengthProbe.prototype.processChunk = function (chunk) {\n if(chunk) {\n var length = this.streamInfo[this.propName] || 0;\n this.streamInfo[this.propName] = length + chunk.data.length;\n }\n GenericWorker.prototype.processChunk.call(this, chunk);\n};\nmodule.exports = DataLengthProbe;\n\n","'use strict';\n\nvar utils = require('../utils');\nvar GenericWorker = require('./GenericWorker');\n\n// the size of the generated chunks\n// TODO expose this as a public variable\nvar DEFAULT_BLOCK_SIZE = 16 * 1024;\n\n/**\n * A worker that reads a content and emits chunks.\n * @constructor\n * @param {Promise} dataP the promise of the data to split\n */\nfunction DataWorker(dataP) {\n GenericWorker.call(this, \"DataWorker\");\n var self = this;\n this.dataIsReady = false;\n this.index = 0;\n this.max = 0;\n this.data = null;\n this.type = \"\";\n\n this._tickScheduled = false;\n\n dataP.then(function (data) {\n self.dataIsReady = true;\n self.data = data;\n self.max = data && data.length || 0;\n self.type = utils.getTypeOf(data);\n if(!self.isPaused) {\n self._tickAndRepeat();\n }\n }, function (e) {\n self.error(e);\n });\n}\n\nutils.inherits(DataWorker, GenericWorker);\n\n/**\n * @see GenericWorker.cleanUp\n */\nDataWorker.prototype.cleanUp = function () {\n GenericWorker.prototype.cleanUp.call(this);\n this.data = null;\n};\n\n/**\n * @see GenericWorker.resume\n */\nDataWorker.prototype.resume = function () {\n if(!GenericWorker.prototype.resume.call(this)) {\n return false;\n }\n\n if (!this._tickScheduled && this.dataIsReady) {\n this._tickScheduled = true;\n utils.delay(this._tickAndRepeat, [], this);\n }\n return true;\n};\n\n/**\n * Trigger a tick a schedule an other call to this function.\n */\nDataWorker.prototype._tickAndRepeat = function() {\n this._tickScheduled = false;\n if(this.isPaused || this.isFinished) {\n return;\n }\n this._tick();\n if(!this.isFinished) {\n utils.delay(this._tickAndRepeat, [], this);\n this._tickScheduled = true;\n }\n};\n\n/**\n * Read and push a chunk.\n */\nDataWorker.prototype._tick = function() {\n\n if(this.isPaused || this.isFinished) {\n return false;\n }\n\n var size = DEFAULT_BLOCK_SIZE;\n var data = null, nextIndex = Math.min(this.max, this.index + size);\n if (this.index >= this.max) {\n // EOF\n return this.end();\n } else {\n switch(this.type) {\n case \"string\":\n data = this.data.substring(this.index, nextIndex);\n break;\n case \"uint8array\":\n data = this.data.subarray(this.index, nextIndex);\n break;\n case \"array\":\n case \"nodebuffer\":\n data = this.data.slice(this.index, nextIndex);\n break;\n }\n this.index = nextIndex;\n return this.push({\n data : data,\n meta : {\n percent : this.max ? this.index / this.max * 100 : 0\n }\n });\n }\n};\n\nmodule.exports = DataWorker;\n","'use strict';\n\n/**\n * A worker that does nothing but passing chunks to the next one. This is like\n * a nodejs stream but with some differences. On the good side :\n * - it works on IE 6-9 without any issue / polyfill\n * - it weights less than the full dependencies bundled with browserify\n * - it forwards errors (no need to declare an error handler EVERYWHERE)\n *\n * A chunk is an object with 2 attributes : `meta` and `data`. The former is an\n * object containing anything (`percent` for example), see each worker for more\n * details. The latter is the real data (String, Uint8Array, etc).\n *\n * @constructor\n * @param {String} name the name of the stream (mainly used for debugging purposes)\n */\nfunction GenericWorker(name) {\n // the name of the worker\n this.name = name || \"default\";\n // an object containing metadata about the workers chain\n this.streamInfo = {};\n // an error which happened when the worker was paused\n this.generatedError = null;\n // an object containing metadata to be merged by this worker into the general metadata\n this.extraStreamInfo = {};\n // true if the stream is paused (and should not do anything), false otherwise\n this.isPaused = true;\n // true if the stream is finished (and should not do anything), false otherwise\n this.isFinished = false;\n // true if the stream is locked to prevent further structure updates (pipe), false otherwise\n this.isLocked = false;\n // the event listeners\n this._listeners = {\n 'data':[],\n 'end':[],\n 'error':[]\n };\n // the previous worker, if any\n this.previous = null;\n}\n\nGenericWorker.prototype = {\n /**\n * Push a chunk to the next workers.\n * @param {Object} chunk the chunk to push\n */\n push : function (chunk) {\n this.emit(\"data\", chunk);\n },\n /**\n * End the stream.\n * @return {Boolean} true if this call ended the worker, false otherwise.\n */\n end : function () {\n if (this.isFinished) {\n return false;\n }\n\n this.flush();\n try {\n this.emit(\"end\");\n this.cleanUp();\n this.isFinished = true;\n } catch (e) {\n this.emit(\"error\", e);\n }\n return true;\n },\n /**\n * End the stream with an error.\n * @param {Error} e the error which caused the premature end.\n * @return {Boolean} true if this call ended the worker with an error, false otherwise.\n */\n error : function (e) {\n if (this.isFinished) {\n return false;\n }\n\n if(this.isPaused) {\n this.generatedError = e;\n } else {\n this.isFinished = true;\n\n this.emit(\"error\", e);\n\n // in the workers chain exploded in the middle of the chain,\n // the error event will go downward but we also need to notify\n // workers upward that there has been an error.\n if(this.previous) {\n this.previous.error(e);\n }\n\n this.cleanUp();\n }\n return true;\n },\n /**\n * Add a callback on an event.\n * @param {String} name the name of the event (data, end, error)\n * @param {Function} listener the function to call when the event is triggered\n * @return {GenericWorker} the current object for chainability\n */\n on : function (name, listener) {\n this._listeners[name].push(listener);\n return this;\n },\n /**\n * Clean any references when a worker is ending.\n */\n cleanUp : function () {\n this.streamInfo = this.generatedError = this.extraStreamInfo = null;\n this._listeners = [];\n },\n /**\n * Trigger an event. This will call registered callback with the provided arg.\n * @param {String} name the name of the event (data, end, error)\n * @param {Object} arg the argument to call the callback with.\n */\n emit : function (name, arg) {\n if (this._listeners[name]) {\n for(var i = 0; i < this._listeners[name].length; i++) {\n this._listeners[name][i].call(this, arg);\n }\n }\n },\n /**\n * Chain a worker with an other.\n * @param {Worker} next the worker receiving events from the current one.\n * @return {worker} the next worker for chainability\n */\n pipe : function (next) {\n return next.registerPrevious(this);\n },\n /**\n * Same as `pipe` in the other direction.\n * Using an API with `pipe(next)` is very easy.\n * Implementing the API with the point of view of the next one registering\n * a source is easier, see the ZipFileWorker.\n * @param {Worker} previous the previous worker, sending events to this one\n * @return {Worker} the current worker for chainability\n */\n registerPrevious : function (previous) {\n if (this.isLocked) {\n throw new Error(\"The stream '\" + this + \"' has already been used.\");\n }\n\n // sharing the streamInfo...\n this.streamInfo = previous.streamInfo;\n // ... and adding our own bits\n this.mergeStreamInfo();\n this.previous = previous;\n var self = this;\n previous.on('data', function (chunk) {\n self.processChunk(chunk);\n });\n previous.on('end', function () {\n self.end();\n });\n previous.on('error', function (e) {\n self.error(e);\n });\n return this;\n },\n /**\n * Pause the stream so it doesn't send events anymore.\n * @return {Boolean} true if this call paused the worker, false otherwise.\n */\n pause : function () {\n if(this.isPaused || this.isFinished) {\n return false;\n }\n this.isPaused = true;\n\n if(this.previous) {\n this.previous.pause();\n }\n return true;\n },\n /**\n * Resume a paused stream.\n * @return {Boolean} true if this call resumed the worker, false otherwise.\n */\n resume : function () {\n if(!this.isPaused || this.isFinished) {\n return false;\n }\n this.isPaused = false;\n\n // if true, the worker tried to resume but failed\n var withError = false;\n if(this.generatedError) {\n this.error(this.generatedError);\n withError = true;\n }\n if(this.previous) {\n this.previous.resume();\n }\n\n return !withError;\n },\n /**\n * Flush any remaining bytes as the stream is ending.\n */\n flush : function () {},\n /**\n * Process a chunk. This is usually the method overridden.\n * @param {Object} chunk the chunk to process.\n */\n processChunk : function(chunk) {\n this.push(chunk);\n },\n /**\n * Add a key/value to be added in the workers chain streamInfo once activated.\n * @param {String} key the key to use\n * @param {Object} value the associated value\n * @return {Worker} the current worker for chainability\n */\n withStreamInfo : function (key, value) {\n this.extraStreamInfo[key] = value;\n this.mergeStreamInfo();\n return this;\n },\n /**\n * Merge this worker's streamInfo into the chain's streamInfo.\n */\n mergeStreamInfo : function () {\n for(var key in this.extraStreamInfo) {\n if (!this.extraStreamInfo.hasOwnProperty(key)) {\n continue;\n }\n this.streamInfo[key] = this.extraStreamInfo[key];\n }\n },\n\n /**\n * Lock the stream to prevent further updates on the workers chain.\n * After calling this method, all calls to pipe will fail.\n */\n lock: function () {\n if (this.isLocked) {\n throw new Error(\"The stream '\" + this + \"' has already been used.\");\n }\n this.isLocked = true;\n if (this.previous) {\n this.previous.lock();\n }\n },\n\n /**\n *\n * Pretty print the workers chain.\n */\n toString : function () {\n var me = \"Worker \" + this.name;\n if (this.previous) {\n return this.previous + \" -> \" + me;\n } else {\n return me;\n }\n }\n};\n\nmodule.exports = GenericWorker;\n","'use strict';\n\nvar utils = require('../utils');\nvar ConvertWorker = require('./ConvertWorker');\nvar GenericWorker = require('./GenericWorker');\nvar base64 = require('../base64');\nvar support = require(\"../support\");\nvar external = require(\"../external\");\n\nvar NodejsStreamOutputAdapter = null;\nif (support.nodestream) {\n try {\n NodejsStreamOutputAdapter = require('../nodejs/NodejsStreamOutputAdapter');\n } catch(e) {}\n}\n\n/**\n * Apply the final transformation of the data. If the user wants a Blob for\n * example, it's easier to work with an U8intArray and finally do the\n * ArrayBuffer/Blob conversion.\n * @param {String} type the name of the final type\n * @param {String|Uint8Array|Buffer} content the content to transform\n * @param {String} mimeType the mime type of the content, if applicable.\n * @return {String|Uint8Array|ArrayBuffer|Buffer|Blob} the content in the right format.\n */\nfunction transformZipOutput(type, content, mimeType) {\n switch(type) {\n case \"blob\" :\n return utils.newBlob(utils.transformTo(\"arraybuffer\", content), mimeType);\n case \"base64\" :\n return base64.encode(content);\n default :\n return utils.transformTo(type, content);\n }\n}\n\n/**\n * Concatenate an array of data of the given type.\n * @param {String} type the type of the data in the given array.\n * @param {Array} dataArray the array containing the data chunks to concatenate\n * @return {String|Uint8Array|Buffer} the concatenated data\n * @throws Error if the asked type is unsupported\n */\nfunction concat (type, dataArray) {\n var i, index = 0, res = null, totalLength = 0;\n for(i = 0; i < dataArray.length; i++) {\n totalLength += dataArray[i].length;\n }\n switch(type) {\n case \"string\":\n return dataArray.join(\"\");\n case \"array\":\n return Array.prototype.concat.apply([], dataArray);\n case \"uint8array\":\n res = new Uint8Array(totalLength);\n for(i = 0; i < dataArray.length; i++) {\n res.set(dataArray[i], index);\n index += dataArray[i].length;\n }\n return res;\n case \"nodebuffer\":\n return Buffer.concat(dataArray);\n default:\n throw new Error(\"concat : unsupported type '\" + type + \"'\");\n }\n}\n\n/**\n * Listen a StreamHelper, accumulate its content and concatenate it into a\n * complete block.\n * @param {StreamHelper} helper the helper to use.\n * @param {Function} updateCallback a callback called on each update. Called\n * with one arg :\n * - the metadata linked to the update received.\n * @return Promise the promise for the accumulation.\n */\nfunction accumulate(helper, updateCallback) {\n return new external.Promise(function (resolve, reject){\n var dataArray = [];\n var chunkType = helper._internalType,\n resultType = helper._outputType,\n mimeType = helper._mimeType;\n helper\n .on('data', function (data, meta) {\n dataArray.push(data);\n if(updateCallback) {\n updateCallback(meta);\n }\n })\n .on('error', function(err) {\n dataArray = [];\n reject(err);\n })\n .on('end', function (){\n try {\n var result = transformZipOutput(resultType, concat(chunkType, dataArray), mimeType);\n resolve(result);\n } catch (e) {\n reject(e);\n }\n dataArray = [];\n })\n .resume();\n });\n}\n\n/**\n * An helper to easily use workers outside of JSZip.\n * @constructor\n * @param {Worker} worker the worker to wrap\n * @param {String} outputType the type of data expected by the use\n * @param {String} mimeType the mime type of the content, if applicable.\n */\nfunction StreamHelper(worker, outputType, mimeType) {\n var internalType = outputType;\n switch(outputType) {\n case \"blob\":\n case \"arraybuffer\":\n internalType = \"uint8array\";\n break;\n case \"base64\":\n internalType = \"string\";\n break;\n }\n\n try {\n // the type used internally\n this._internalType = internalType;\n // the type used to output results\n this._outputType = outputType;\n // the mime type\n this._mimeType = mimeType;\n utils.checkSupport(internalType);\n this._worker = worker.pipe(new ConvertWorker(internalType));\n // the last workers can be rewired without issues but we need to\n // prevent any updates on previous workers.\n worker.lock();\n } catch(e) {\n this._worker = new GenericWorker(\"error\");\n this._worker.error(e);\n }\n}\n\nStreamHelper.prototype = {\n /**\n * Listen a StreamHelper, accumulate its content and concatenate it into a\n * complete block.\n * @param {Function} updateCb the update callback.\n * @return Promise the promise for the accumulation.\n */\n accumulate : function (updateCb) {\n return accumulate(this, updateCb);\n },\n /**\n * Add a listener on an event triggered on a stream.\n * @param {String} evt the name of the event\n * @param {Function} fn the listener\n * @return {StreamHelper} the current helper.\n */\n on : function (evt, fn) {\n var self = this;\n\n if(evt === \"data\") {\n this._worker.on(evt, function (chunk) {\n fn.call(self, chunk.data, chunk.meta);\n });\n } else {\n this._worker.on(evt, function () {\n utils.delay(fn, arguments, self);\n });\n }\n return this;\n },\n /**\n * Resume the flow of chunks.\n * @return {StreamHelper} the current helper.\n */\n resume : function () {\n utils.delay(this._worker.resume, [], this._worker);\n return this;\n },\n /**\n * Pause the flow of chunks.\n * @return {StreamHelper} the current helper.\n */\n pause : function () {\n this._worker.pause();\n return this;\n },\n /**\n * Return a nodejs stream for this helper.\n * @param {Function} updateCb the update callback.\n * @return {NodejsStreamOutputAdapter} the nodejs stream.\n */\n toNodejsStream : function (updateCb) {\n utils.checkSupport(\"nodestream\");\n if (this._outputType !== \"nodebuffer\") {\n // an object stream containing blob/arraybuffer/uint8array/string\n // is strange and I don't know if it would be useful.\n // I you find this comment and have a good usecase, please open a\n // bug report !\n throw new Error(this._outputType + \" is not supported by this method\");\n }\n\n return new NodejsStreamOutputAdapter(this, {\n objectMode : this._outputType !== \"nodebuffer\"\n }, updateCb);\n }\n};\n\n\nmodule.exports = StreamHelper;\n","'use strict';\n\nexports.base64 = true;\nexports.array = true;\nexports.string = true;\nexports.arraybuffer = typeof ArrayBuffer !== \"undefined\" && typeof Uint8Array !== \"undefined\";\nexports.nodebuffer = typeof Buffer !== \"undefined\";\n// contains true if JSZip can read/generate Uint8Array, false otherwise.\nexports.uint8array = typeof Uint8Array !== \"undefined\";\n\nif (typeof ArrayBuffer === \"undefined\") {\n exports.blob = false;\n}\nelse {\n var buffer = new ArrayBuffer(0);\n try {\n exports.blob = new Blob([buffer], {\n type: \"application/zip\"\n }).size === 0;\n }\n catch (e) {\n try {\n var Builder = self.BlobBuilder || self.WebKitBlobBuilder || self.MozBlobBuilder || self.MSBlobBuilder;\n var builder = new Builder();\n builder.append(buffer);\n exports.blob = builder.getBlob('application/zip').size === 0;\n }\n catch (e) {\n exports.blob = false;\n }\n }\n}\n\ntry {\n exports.nodestream = !!require('readable-stream').Readable;\n} catch(e) {\n exports.nodestream = false;\n}\n","'use strict';\n\nvar utils = require('./utils');\nvar support = require('./support');\nvar nodejsUtils = require('./nodejsUtils');\nvar GenericWorker = require('./stream/GenericWorker');\n\n/**\n * The following functions come from pako, from pako/lib/utils/strings\n * released under the MIT license, see pako https://github.com/nodeca/pako/\n */\n\n// Table with utf8 lengths (calculated by first byte of sequence)\n// Note, that 5 & 6-byte values and some 4-byte values can not be represented in JS,\n// because max possible codepoint is 0x10ffff\nvar _utf8len = new Array(256);\nfor (var i=0; i<256; i++) {\n _utf8len[i] = (i >= 252 ? 6 : i >= 248 ? 5 : i >= 240 ? 4 : i >= 224 ? 3 : i >= 192 ? 2 : 1);\n}\n_utf8len[254]=_utf8len[254]=1; // Invalid sequence start\n\n// convert string to array (typed, when possible)\nvar string2buf = function (str) {\n var buf, c, c2, m_pos, i, str_len = str.length, buf_len = 0;\n\n // count binary size\n for (m_pos = 0; m_pos < str_len; m_pos++) {\n c = str.charCodeAt(m_pos);\n if ((c & 0xfc00) === 0xd800 && (m_pos+1 < str_len)) {\n c2 = str.charCodeAt(m_pos+1);\n if ((c2 & 0xfc00) === 0xdc00) {\n c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00);\n m_pos++;\n }\n }\n buf_len += c < 0x80 ? 1 : c < 0x800 ? 2 : c < 0x10000 ? 3 : 4;\n }\n\n // allocate buffer\n if (support.uint8array) {\n buf = new Uint8Array(buf_len);\n } else {\n buf = new Array(buf_len);\n }\n\n // convert\n for (i=0, m_pos = 0; i < buf_len; m_pos++) {\n c = str.charCodeAt(m_pos);\n if ((c & 0xfc00) === 0xd800 && (m_pos+1 < str_len)) {\n c2 = str.charCodeAt(m_pos+1);\n if ((c2 & 0xfc00) === 0xdc00) {\n c = 0x10000 + ((c - 0xd800) << 10) + (c2 - 0xdc00);\n m_pos++;\n }\n }\n if (c < 0x80) {\n /* one byte */\n buf[i++] = c;\n } else if (c < 0x800) {\n /* two bytes */\n buf[i++] = 0xC0 | (c >>> 6);\n buf[i++] = 0x80 | (c & 0x3f);\n } else if (c < 0x10000) {\n /* three bytes */\n buf[i++] = 0xE0 | (c >>> 12);\n buf[i++] = 0x80 | (c >>> 6 & 0x3f);\n buf[i++] = 0x80 | (c & 0x3f);\n } else {\n /* four bytes */\n buf[i++] = 0xf0 | (c >>> 18);\n buf[i++] = 0x80 | (c >>> 12 & 0x3f);\n buf[i++] = 0x80 | (c >>> 6 & 0x3f);\n buf[i++] = 0x80 | (c & 0x3f);\n }\n }\n\n return buf;\n};\n\n// Calculate max possible position in utf8 buffer,\n// that will not break sequence. If that's not possible\n// - (very small limits) return max size as is.\n//\n// buf[] - utf8 bytes array\n// max - length limit (mandatory);\nvar utf8border = function(buf, max) {\n var pos;\n\n max = max || buf.length;\n if (max > buf.length) { max = buf.length; }\n\n // go back from last position, until start of sequence found\n pos = max-1;\n while (pos >= 0 && (buf[pos] & 0xC0) === 0x80) { pos--; }\n\n // Fuckup - very small and broken sequence,\n // return max, because we should return something anyway.\n if (pos < 0) { return max; }\n\n // If we came to start of buffer - that means vuffer is too small,\n // return max too.\n if (pos === 0) { return max; }\n\n return (pos + _utf8len[buf[pos]] > max) ? pos : max;\n};\n\n// convert array to string\nvar buf2string = function (buf) {\n var str, i, out, c, c_len;\n var len = buf.length;\n\n // Reserve max possible length (2 words per char)\n // NB: by unknown reasons, Array is significantly faster for\n // String.fromCharCode.apply than Uint16Array.\n var utf16buf = new Array(len*2);\n\n for (out=0, i=0; i 4) { utf16buf[out++] = 0xfffd; i += c_len-1; continue; }\n\n // apply mask on first byte\n c &= c_len === 2 ? 0x1f : c_len === 3 ? 0x0f : 0x07;\n // join the rest\n while (c_len > 1 && i < len) {\n c = (c << 6) | (buf[i++] & 0x3f);\n c_len--;\n }\n\n // terminated by end of string?\n if (c_len > 1) { utf16buf[out++] = 0xfffd; continue; }\n\n if (c < 0x10000) {\n utf16buf[out++] = c;\n } else {\n c -= 0x10000;\n utf16buf[out++] = 0xd800 | ((c >> 10) & 0x3ff);\n utf16buf[out++] = 0xdc00 | (c & 0x3ff);\n }\n }\n\n // shrinkBuf(utf16buf, out)\n if (utf16buf.length !== out) {\n if(utf16buf.subarray) {\n utf16buf = utf16buf.subarray(0, out);\n } else {\n utf16buf.length = out;\n }\n }\n\n // return String.fromCharCode.apply(null, utf16buf);\n return utils.applyFromCharCode(utf16buf);\n};\n\n\n// That's all for the pako functions.\n\n\n/**\n * Transform a javascript string into an array (typed if possible) of bytes,\n * UTF-8 encoded.\n * @param {String} str the string to encode\n * @return {Array|Uint8Array|Buffer} the UTF-8 encoded string.\n */\nexports.utf8encode = function utf8encode(str) {\n if (support.nodebuffer) {\n return nodejsUtils.newBufferFrom(str, \"utf-8\");\n }\n\n return string2buf(str);\n};\n\n\n/**\n * Transform a bytes array (or a representation) representing an UTF-8 encoded\n * string into a javascript string.\n * @param {Array|Uint8Array|Buffer} buf the data de decode\n * @return {String} the decoded string.\n */\nexports.utf8decode = function utf8decode(buf) {\n if (support.nodebuffer) {\n return utils.transformTo(\"nodebuffer\", buf).toString(\"utf-8\");\n }\n\n buf = utils.transformTo(support.uint8array ? \"uint8array\" : \"array\", buf);\n\n return buf2string(buf);\n};\n\n/**\n * A worker to decode utf8 encoded binary chunks into string chunks.\n * @constructor\n */\nfunction Utf8DecodeWorker() {\n GenericWorker.call(this, \"utf-8 decode\");\n // the last bytes if a chunk didn't end with a complete codepoint.\n this.leftOver = null;\n}\nutils.inherits(Utf8DecodeWorker, GenericWorker);\n\n/**\n * @see GenericWorker.processChunk\n */\nUtf8DecodeWorker.prototype.processChunk = function (chunk) {\n\n var data = utils.transformTo(support.uint8array ? \"uint8array\" : \"array\", chunk.data);\n\n // 1st step, re-use what's left of the previous chunk\n if (this.leftOver && this.leftOver.length) {\n if(support.uint8array) {\n var previousData = data;\n data = new Uint8Array(previousData.length + this.leftOver.length);\n data.set(this.leftOver, 0);\n data.set(previousData, this.leftOver.length);\n } else {\n data = this.leftOver.concat(data);\n }\n this.leftOver = null;\n }\n\n var nextBoundary = utf8border(data);\n var usableData = data;\n if (nextBoundary !== data.length) {\n if (support.uint8array) {\n usableData = data.subarray(0, nextBoundary);\n this.leftOver = data.subarray(nextBoundary, data.length);\n } else {\n usableData = data.slice(0, nextBoundary);\n this.leftOver = data.slice(nextBoundary, data.length);\n }\n }\n\n this.push({\n data : exports.utf8decode(usableData),\n meta : chunk.meta\n });\n};\n\n/**\n * @see GenericWorker.flush\n */\nUtf8DecodeWorker.prototype.flush = function () {\n if(this.leftOver && this.leftOver.length) {\n this.push({\n data : exports.utf8decode(this.leftOver),\n meta : {}\n });\n this.leftOver = null;\n }\n};\nexports.Utf8DecodeWorker = Utf8DecodeWorker;\n\n/**\n * A worker to endcode string chunks into utf8 encoded binary chunks.\n * @constructor\n */\nfunction Utf8EncodeWorker() {\n GenericWorker.call(this, \"utf-8 encode\");\n}\nutils.inherits(Utf8EncodeWorker, GenericWorker);\n\n/**\n * @see GenericWorker.processChunk\n */\nUtf8EncodeWorker.prototype.processChunk = function (chunk) {\n this.push({\n data : exports.utf8encode(chunk.data),\n meta : chunk.meta\n });\n};\nexports.Utf8EncodeWorker = Utf8EncodeWorker;\n","'use strict';\n\nvar support = require('./support');\nvar base64 = require('./base64');\nvar nodejsUtils = require('./nodejsUtils');\nvar setImmediate = require('core-js/library/fn/set-immediate');\nvar external = require(\"./external\");\n\n\n/**\n * Convert a string that pass as a \"binary string\": it should represent a byte\n * array but may have > 255 char codes. Be sure to take only the first byte\n * and returns the byte array.\n * @param {String} str the string to transform.\n * @return {Array|Uint8Array} the string in a binary format.\n */\nfunction string2binary(str) {\n var result = null;\n if (support.uint8array) {\n result = new Uint8Array(str.length);\n } else {\n result = new Array(str.length);\n }\n return stringToArrayLike(str, result);\n}\n\n/**\n * Create a new blob with the given content and the given type.\n * @param {String|ArrayBuffer} part the content to put in the blob. DO NOT use\n * an Uint8Array because the stock browser of android 4 won't accept it (it\n * will be silently converted to a string, \"[object Uint8Array]\").\n *\n * Use only ONE part to build the blob to avoid a memory leak in IE11 / Edge:\n * when a large amount of Array is used to create the Blob, the amount of\n * memory consumed is nearly 100 times the original data amount.\n *\n * @param {String} type the mime type of the blob.\n * @return {Blob} the created blob.\n */\nexports.newBlob = function(part, type) {\n exports.checkSupport(\"blob\");\n\n try {\n // Blob constructor\n return new Blob([part], {\n type: type\n });\n }\n catch (e) {\n\n try {\n // deprecated, browser only, old way\n var Builder = self.BlobBuilder || self.WebKitBlobBuilder || self.MozBlobBuilder || self.MSBlobBuilder;\n var builder = new Builder();\n builder.append(part);\n return builder.getBlob(type);\n }\n catch (e) {\n\n // well, fuck ?!\n throw new Error(\"Bug : can't construct the Blob.\");\n }\n }\n\n\n};\n/**\n * The identity function.\n * @param {Object} input the input.\n * @return {Object} the same input.\n */\nfunction identity(input) {\n return input;\n}\n\n/**\n * Fill in an array with a string.\n * @param {String} str the string to use.\n * @param {Array|ArrayBuffer|Uint8Array|Buffer} array the array to fill in (will be mutated).\n * @return {Array|ArrayBuffer|Uint8Array|Buffer} the updated array.\n */\nfunction stringToArrayLike(str, array) {\n for (var i = 0; i < str.length; ++i) {\n array[i] = str.charCodeAt(i) & 0xFF;\n }\n return array;\n}\n\n/**\n * An helper for the function arrayLikeToString.\n * This contains static informations and functions that\n * can be optimized by the browser JIT compiler.\n */\nvar arrayToStringHelper = {\n /**\n * Transform an array of int into a string, chunk by chunk.\n * See the performances notes on arrayLikeToString.\n * @param {Array|ArrayBuffer|Uint8Array|Buffer} array the array to transform.\n * @param {String} type the type of the array.\n * @param {Integer} chunk the chunk size.\n * @return {String} the resulting string.\n * @throws Error if the chunk is too big for the stack.\n */\n stringifyByChunk: function(array, type, chunk) {\n var result = [], k = 0, len = array.length;\n // shortcut\n if (len <= chunk) {\n return String.fromCharCode.apply(null, array);\n }\n while (k < len) {\n if (type === \"array\" || type === \"nodebuffer\") {\n result.push(String.fromCharCode.apply(null, array.slice(k, Math.min(k + chunk, len))));\n }\n else {\n result.push(String.fromCharCode.apply(null, array.subarray(k, Math.min(k + chunk, len))));\n }\n k += chunk;\n }\n return result.join(\"\");\n },\n /**\n * Call String.fromCharCode on every item in the array.\n * This is the naive implementation, which generate A LOT of intermediate string.\n * This should be used when everything else fail.\n * @param {Array|ArrayBuffer|Uint8Array|Buffer} array the array to transform.\n * @return {String} the result.\n */\n stringifyByChar: function(array){\n var resultStr = \"\";\n for(var i = 0; i < array.length; i++) {\n resultStr += String.fromCharCode(array[i]);\n }\n return resultStr;\n },\n applyCanBeUsed : {\n /**\n * true if the browser accepts to use String.fromCharCode on Uint8Array\n */\n uint8array : (function () {\n try {\n return support.uint8array && String.fromCharCode.apply(null, new Uint8Array(1)).length === 1;\n } catch (e) {\n return false;\n }\n })(),\n /**\n * true if the browser accepts to use String.fromCharCode on nodejs Buffer.\n */\n nodebuffer : (function () {\n try {\n return support.nodebuffer && String.fromCharCode.apply(null, nodejsUtils.allocBuffer(1)).length === 1;\n } catch (e) {\n return false;\n }\n })()\n }\n};\n\n/**\n * Transform an array-like object to a string.\n * @param {Array|ArrayBuffer|Uint8Array|Buffer} array the array to transform.\n * @return {String} the result.\n */\nfunction arrayLikeToString(array) {\n // Performances notes :\n // --------------------\n // String.fromCharCode.apply(null, array) is the fastest, see\n // see http://jsperf.com/converting-a-uint8array-to-a-string/2\n // but the stack is limited (and we can get huge arrays !).\n //\n // result += String.fromCharCode(array[i]); generate too many strings !\n //\n // This code is inspired by http://jsperf.com/arraybuffer-to-string-apply-performance/2\n // TODO : we now have workers that split the work. Do we still need that ?\n var chunk = 65536,\n type = exports.getTypeOf(array),\n canUseApply = true;\n if (type === \"uint8array\") {\n canUseApply = arrayToStringHelper.applyCanBeUsed.uint8array;\n } else if (type === \"nodebuffer\") {\n canUseApply = arrayToStringHelper.applyCanBeUsed.nodebuffer;\n }\n\n if (canUseApply) {\n while (chunk > 1) {\n try {\n return arrayToStringHelper.stringifyByChunk(array, type, chunk);\n } catch (e) {\n chunk = Math.floor(chunk / 2);\n }\n }\n }\n\n // no apply or chunk error : slow and painful algorithm\n // default browser on android 4.*\n return arrayToStringHelper.stringifyByChar(array);\n}\n\nexports.applyFromCharCode = arrayLikeToString;\n\n\n/**\n * Copy the data from an array-like to an other array-like.\n * @param {Array|ArrayBuffer|Uint8Array|Buffer} arrayFrom the origin array.\n * @param {Array|ArrayBuffer|Uint8Array|Buffer} arrayTo the destination array which will be mutated.\n * @return {Array|ArrayBuffer|Uint8Array|Buffer} the updated destination array.\n */\nfunction arrayLikeToArrayLike(arrayFrom, arrayTo) {\n for (var i = 0; i < arrayFrom.length; i++) {\n arrayTo[i] = arrayFrom[i];\n }\n return arrayTo;\n}\n\n// a matrix containing functions to transform everything into everything.\nvar transform = {};\n\n// string to ?\ntransform[\"string\"] = {\n \"string\": identity,\n \"array\": function(input) {\n return stringToArrayLike(input, new Array(input.length));\n },\n \"arraybuffer\": function(input) {\n return transform[\"string\"][\"uint8array\"](input).buffer;\n },\n \"uint8array\": function(input) {\n return stringToArrayLike(input, new Uint8Array(input.length));\n },\n \"nodebuffer\": function(input) {\n return stringToArrayLike(input, nodejsUtils.allocBuffer(input.length));\n }\n};\n\n// array to ?\ntransform[\"array\"] = {\n \"string\": arrayLikeToString,\n \"array\": identity,\n \"arraybuffer\": function(input) {\n return (new Uint8Array(input)).buffer;\n },\n \"uint8array\": function(input) {\n return new Uint8Array(input);\n },\n \"nodebuffer\": function(input) {\n return nodejsUtils.newBufferFrom(input);\n }\n};\n\n// arraybuffer to ?\ntransform[\"arraybuffer\"] = {\n \"string\": function(input) {\n return arrayLikeToString(new Uint8Array(input));\n },\n \"array\": function(input) {\n return arrayLikeToArrayLike(new Uint8Array(input), new Array(input.byteLength));\n },\n \"arraybuffer\": identity,\n \"uint8array\": function(input) {\n return new Uint8Array(input);\n },\n \"nodebuffer\": function(input) {\n return nodejsUtils.newBufferFrom(new Uint8Array(input));\n }\n};\n\n// uint8array to ?\ntransform[\"uint8array\"] = {\n \"string\": arrayLikeToString,\n \"array\": function(input) {\n return arrayLikeToArrayLike(input, new Array(input.length));\n },\n \"arraybuffer\": function(input) {\n return input.buffer;\n },\n \"uint8array\": identity,\n \"nodebuffer\": function(input) {\n return nodejsUtils.newBufferFrom(input);\n }\n};\n\n// nodebuffer to ?\ntransform[\"nodebuffer\"] = {\n \"string\": arrayLikeToString,\n \"array\": function(input) {\n return arrayLikeToArrayLike(input, new Array(input.length));\n },\n \"arraybuffer\": function(input) {\n return transform[\"nodebuffer\"][\"uint8array\"](input).buffer;\n },\n \"uint8array\": function(input) {\n return arrayLikeToArrayLike(input, new Uint8Array(input.length));\n },\n \"nodebuffer\": identity\n};\n\n/**\n * Transform an input into any type.\n * The supported output type are : string, array, uint8array, arraybuffer, nodebuffer.\n * If no output type is specified, the unmodified input will be returned.\n * @param {String} outputType the output type.\n * @param {String|Array|ArrayBuffer|Uint8Array|Buffer} input the input to convert.\n * @throws {Error} an Error if the browser doesn't support the requested output type.\n */\nexports.transformTo = function(outputType, input) {\n if (!input) {\n // undefined, null, etc\n // an empty string won't harm.\n input = \"\";\n }\n if (!outputType) {\n return input;\n }\n exports.checkSupport(outputType);\n var inputType = exports.getTypeOf(input);\n var result = transform[inputType][outputType](input);\n return result;\n};\n\n/**\n * Return the type of the input.\n * The type will be in a format valid for JSZip.utils.transformTo : string, array, uint8array, arraybuffer.\n * @param {Object} input the input to identify.\n * @return {String} the (lowercase) type of the input.\n */\nexports.getTypeOf = function(input) {\n if (typeof input === \"string\") {\n return \"string\";\n }\n if (Object.prototype.toString.call(input) === \"[object Array]\") {\n return \"array\";\n }\n if (support.nodebuffer && nodejsUtils.isBuffer(input)) {\n return \"nodebuffer\";\n }\n if (support.uint8array && input instanceof Uint8Array) {\n return \"uint8array\";\n }\n if (support.arraybuffer && input instanceof ArrayBuffer) {\n return \"arraybuffer\";\n }\n};\n\n/**\n * Throw an exception if the type is not supported.\n * @param {String} type the type to check.\n * @throws {Error} an Error if the browser doesn't support the requested type.\n */\nexports.checkSupport = function(type) {\n var supported = support[type.toLowerCase()];\n if (!supported) {\n throw new Error(type + \" is not supported by this platform\");\n }\n};\n\nexports.MAX_VALUE_16BITS = 65535;\nexports.MAX_VALUE_32BITS = -1; // well, \"\\xFF\\xFF\\xFF\\xFF\\xFF\\xFF\\xFF\\xFF\" is parsed as -1\n\n/**\n * Prettify a string read as binary.\n * @param {string} str the string to prettify.\n * @return {string} a pretty string.\n */\nexports.pretty = function(str) {\n var res = '',\n code, i;\n for (i = 0; i < (str || \"\").length; i++) {\n code = str.charCodeAt(i);\n res += '\\\\x' + (code < 16 ? \"0\" : \"\") + code.toString(16).toUpperCase();\n }\n return res;\n};\n\n/**\n * Defer the call of a function.\n * @param {Function} callback the function to call asynchronously.\n * @param {Array} args the arguments to give to the callback.\n */\nexports.delay = function(callback, args, self) {\n setImmediate(function () {\n callback.apply(self || null, args || []);\n });\n};\n\n/**\n * Extends a prototype with an other, without calling a constructor with\n * side effects. Inspired by nodejs' `utils.inherits`\n * @param {Function} ctor the constructor to augment\n * @param {Function} superCtor the parent constructor to use\n */\nexports.inherits = function (ctor, superCtor) {\n var Obj = function() {};\n Obj.prototype = superCtor.prototype;\n ctor.prototype = new Obj();\n};\n\n/**\n * Merge the objects passed as parameters into a new one.\n * @private\n * @param {...Object} var_args All objects to merge.\n * @return {Object} a new object with the data of the others.\n */\nexports.extend = function() {\n var result = {}, i, attr;\n for (i = 0; i < arguments.length; i++) { // arguments is not enumerable in some browsers\n for (attr in arguments[i]) {\n if (arguments[i].hasOwnProperty(attr) && typeof result[attr] === \"undefined\") {\n result[attr] = arguments[i][attr];\n }\n }\n }\n return result;\n};\n\n/**\n * Transform arbitrary content into a Promise.\n * @param {String} name a name for the content being processed.\n * @param {Object} inputData the content to process.\n * @param {Boolean} isBinary true if the content is not an unicode string\n * @param {Boolean} isOptimizedBinaryString true if the string content only has one byte per character.\n * @param {Boolean} isBase64 true if the string content is encoded with base64.\n * @return {Promise} a promise in a format usable by JSZip.\n */\nexports.prepareContent = function(name, inputData, isBinary, isOptimizedBinaryString, isBase64) {\n\n // if inputData is already a promise, this flatten it.\n var promise = external.Promise.resolve(inputData).then(function(data) {\n \n \n var isBlob = support.blob && (data instanceof Blob || ['[object File]', '[object Blob]'].indexOf(Object.prototype.toString.call(data)) !== -1);\n\n if (isBlob && typeof FileReader !== \"undefined\") {\n return new external.Promise(function (resolve, reject) {\n var reader = new FileReader();\n\n reader.onload = function(e) {\n resolve(e.target.result);\n };\n reader.onerror = function(e) {\n reject(e.target.error);\n };\n reader.readAsArrayBuffer(data);\n });\n } else {\n return data;\n }\n });\n\n return promise.then(function(data) {\n var dataType = exports.getTypeOf(data);\n\n if (!dataType) {\n return external.Promise.reject(\n new Error(\"Can't read the data of '\" + name + \"'. Is it \" +\n \"in a supported JavaScript type (String, Blob, ArrayBuffer, etc) ?\")\n );\n }\n // special case : it's way easier to work with Uint8Array than with ArrayBuffer\n if (dataType === \"arraybuffer\") {\n data = exports.transformTo(\"uint8array\", data);\n } else if (dataType === \"string\") {\n if (isBase64) {\n data = base64.decode(data);\n }\n else if (isBinary) {\n // optimizedBinaryString === true means that the file has already been filtered with a 0xFF mask\n if (isOptimizedBinaryString !== true) {\n // this is a string, not in a base64 format.\n // Be sure that this is a correct \"binary string\"\n data = string2binary(data);\n }\n }\n }\n return data;\n });\n};\n","'use strict';\nvar readerFor = require('./reader/readerFor');\nvar utils = require('./utils');\nvar sig = require('./signature');\nvar ZipEntry = require('./zipEntry');\nvar utf8 = require('./utf8');\nvar support = require('./support');\n// class ZipEntries {{{\n/**\n * All the entries in the zip file.\n * @constructor\n * @param {Object} loadOptions Options for loading the stream.\n */\nfunction ZipEntries(loadOptions) {\n this.files = [];\n this.loadOptions = loadOptions;\n}\nZipEntries.prototype = {\n /**\n * Check that the reader is on the specified signature.\n * @param {string} expectedSignature the expected signature.\n * @throws {Error} if it is an other signature.\n */\n checkSignature: function(expectedSignature) {\n if (!this.reader.readAndCheckSignature(expectedSignature)) {\n this.reader.index -= 4;\n var signature = this.reader.readString(4);\n throw new Error(\"Corrupted zip or bug: unexpected signature \" + \"(\" + utils.pretty(signature) + \", expected \" + utils.pretty(expectedSignature) + \")\");\n }\n },\n /**\n * Check if the given signature is at the given index.\n * @param {number} askedIndex the index to check.\n * @param {string} expectedSignature the signature to expect.\n * @return {boolean} true if the signature is here, false otherwise.\n */\n isSignature: function(askedIndex, expectedSignature) {\n var currentIndex = this.reader.index;\n this.reader.setIndex(askedIndex);\n var signature = this.reader.readString(4);\n var result = signature === expectedSignature;\n this.reader.setIndex(currentIndex);\n return result;\n },\n /**\n * Read the end of the central directory.\n */\n readBlockEndOfCentral: function() {\n this.diskNumber = this.reader.readInt(2);\n this.diskWithCentralDirStart = this.reader.readInt(2);\n this.centralDirRecordsOnThisDisk = this.reader.readInt(2);\n this.centralDirRecords = this.reader.readInt(2);\n this.centralDirSize = this.reader.readInt(4);\n this.centralDirOffset = this.reader.readInt(4);\n\n this.zipCommentLength = this.reader.readInt(2);\n // warning : the encoding depends of the system locale\n // On a linux machine with LANG=en_US.utf8, this field is utf8 encoded.\n // On a windows machine, this field is encoded with the localized windows code page.\n var zipComment = this.reader.readData(this.zipCommentLength);\n var decodeParamType = support.uint8array ? \"uint8array\" : \"array\";\n // To get consistent behavior with the generation part, we will assume that\n // this is utf8 encoded unless specified otherwise.\n var decodeContent = utils.transformTo(decodeParamType, zipComment);\n this.zipComment = this.loadOptions.decodeFileName(decodeContent);\n },\n /**\n * Read the end of the Zip 64 central directory.\n * Not merged with the method readEndOfCentral :\n * The end of central can coexist with its Zip64 brother,\n * I don't want to read the wrong number of bytes !\n */\n readBlockZip64EndOfCentral: function() {\n this.zip64EndOfCentralSize = this.reader.readInt(8);\n this.reader.skip(4);\n // this.versionMadeBy = this.reader.readString(2);\n // this.versionNeeded = this.reader.readInt(2);\n this.diskNumber = this.reader.readInt(4);\n this.diskWithCentralDirStart = this.reader.readInt(4);\n this.centralDirRecordsOnThisDisk = this.reader.readInt(8);\n this.centralDirRecords = this.reader.readInt(8);\n this.centralDirSize = this.reader.readInt(8);\n this.centralDirOffset = this.reader.readInt(8);\n\n this.zip64ExtensibleData = {};\n var extraDataSize = this.zip64EndOfCentralSize - 44,\n index = 0,\n extraFieldId,\n extraFieldLength,\n extraFieldValue;\n while (index < extraDataSize) {\n extraFieldId = this.reader.readInt(2);\n extraFieldLength = this.reader.readInt(4);\n extraFieldValue = this.reader.readData(extraFieldLength);\n this.zip64ExtensibleData[extraFieldId] = {\n id: extraFieldId,\n length: extraFieldLength,\n value: extraFieldValue\n };\n }\n },\n /**\n * Read the end of the Zip 64 central directory locator.\n */\n readBlockZip64EndOfCentralLocator: function() {\n this.diskWithZip64CentralDirStart = this.reader.readInt(4);\n this.relativeOffsetEndOfZip64CentralDir = this.reader.readInt(8);\n this.disksCount = this.reader.readInt(4);\n if (this.disksCount > 1) {\n throw new Error(\"Multi-volumes zip are not supported\");\n }\n },\n /**\n * Read the local files, based on the offset read in the central part.\n */\n readLocalFiles: function() {\n var i, file;\n for (i = 0; i < this.files.length; i++) {\n file = this.files[i];\n this.reader.setIndex(file.localHeaderOffset);\n this.checkSignature(sig.LOCAL_FILE_HEADER);\n file.readLocalPart(this.reader);\n file.handleUTF8();\n file.processAttributes();\n }\n },\n /**\n * Read the central directory.\n */\n readCentralDir: function() {\n var file;\n\n this.reader.setIndex(this.centralDirOffset);\n while (this.reader.readAndCheckSignature(sig.CENTRAL_FILE_HEADER)) {\n file = new ZipEntry({\n zip64: this.zip64\n }, this.loadOptions);\n file.readCentralPart(this.reader);\n this.files.push(file);\n }\n\n if (this.centralDirRecords !== this.files.length) {\n if (this.centralDirRecords !== 0 && this.files.length === 0) {\n // We expected some records but couldn't find ANY.\n // This is really suspicious, as if something went wrong.\n throw new Error(\"Corrupted zip or bug: expected \" + this.centralDirRecords + \" records in central dir, got \" + this.files.length);\n } else {\n // We found some records but not all.\n // Something is wrong but we got something for the user: no error here.\n // console.warn(\"expected\", this.centralDirRecords, \"records in central dir, got\", this.files.length);\n }\n }\n },\n /**\n * Read the end of central directory.\n */\n readEndOfCentral: function() {\n var offset = this.reader.lastIndexOfSignature(sig.CENTRAL_DIRECTORY_END);\n if (offset < 0) {\n // Check if the content is a truncated zip or complete garbage.\n // A \"LOCAL_FILE_HEADER\" is not required at the beginning (auto\n // extractible zip for example) but it can give a good hint.\n // If an ajax request was used without responseType, we will also\n // get unreadable data.\n var isGarbage = !this.isSignature(0, sig.LOCAL_FILE_HEADER);\n\n if (isGarbage) {\n throw new Error(\"Can't find end of central directory : is this a zip file ? \" +\n \"If it is, see https://stuk.github.io/jszip/documentation/howto/read_zip.html\");\n } else {\n throw new Error(\"Corrupted zip: can't find end of central directory\");\n }\n\n }\n this.reader.setIndex(offset);\n var endOfCentralDirOffset = offset;\n this.checkSignature(sig.CENTRAL_DIRECTORY_END);\n this.readBlockEndOfCentral();\n\n\n /* extract from the zip spec :\n 4) If one of the fields in the end of central directory\n record is too small to hold required data, the field\n should be set to -1 (0xFFFF or 0xFFFFFFFF) and the\n ZIP64 format record should be created.\n 5) The end of central directory record and the\n Zip64 end of central directory locator record must\n reside on the same disk when splitting or spanning\n an archive.\n */\n if (this.diskNumber === utils.MAX_VALUE_16BITS || this.diskWithCentralDirStart === utils.MAX_VALUE_16BITS || this.centralDirRecordsOnThisDisk === utils.MAX_VALUE_16BITS || this.centralDirRecords === utils.MAX_VALUE_16BITS || this.centralDirSize === utils.MAX_VALUE_32BITS || this.centralDirOffset === utils.MAX_VALUE_32BITS) {\n this.zip64 = true;\n\n /*\n Warning : the zip64 extension is supported, but ONLY if the 64bits integer read from\n the zip file can fit into a 32bits integer. This cannot be solved : JavaScript represents\n all numbers as 64-bit double precision IEEE 754 floating point numbers.\n So, we have 53bits for integers and bitwise operations treat everything as 32bits.\n see https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Operators/Bitwise_Operators\n and http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-262.pdf section 8.5\n */\n\n // should look for a zip64 EOCD locator\n offset = this.reader.lastIndexOfSignature(sig.ZIP64_CENTRAL_DIRECTORY_LOCATOR);\n if (offset < 0) {\n throw new Error(\"Corrupted zip: can't find the ZIP64 end of central directory locator\");\n }\n this.reader.setIndex(offset);\n this.checkSignature(sig.ZIP64_CENTRAL_DIRECTORY_LOCATOR);\n this.readBlockZip64EndOfCentralLocator();\n\n // now the zip64 EOCD record\n if (!this.isSignature(this.relativeOffsetEndOfZip64CentralDir, sig.ZIP64_CENTRAL_DIRECTORY_END)) {\n // console.warn(\"ZIP64 end of central directory not where expected.\");\n this.relativeOffsetEndOfZip64CentralDir = this.reader.lastIndexOfSignature(sig.ZIP64_CENTRAL_DIRECTORY_END);\n if (this.relativeOffsetEndOfZip64CentralDir < 0) {\n throw new Error(\"Corrupted zip: can't find the ZIP64 end of central directory\");\n }\n }\n this.reader.setIndex(this.relativeOffsetEndOfZip64CentralDir);\n this.checkSignature(sig.ZIP64_CENTRAL_DIRECTORY_END);\n this.readBlockZip64EndOfCentral();\n }\n\n var expectedEndOfCentralDirOffset = this.centralDirOffset + this.centralDirSize;\n if (this.zip64) {\n expectedEndOfCentralDirOffset += 20; // end of central dir 64 locator\n expectedEndOfCentralDirOffset += 12 /* should not include the leading 12 bytes */ + this.zip64EndOfCentralSize;\n }\n\n var extraBytes = endOfCentralDirOffset - expectedEndOfCentralDirOffset;\n\n if (extraBytes > 0) {\n // console.warn(extraBytes, \"extra bytes at beginning or within zipfile\");\n if (this.isSignature(endOfCentralDirOffset, sig.CENTRAL_FILE_HEADER)) {\n // The offsets seem wrong, but we have something at the specified offset.\n // So… we keep it.\n } else {\n // the offset is wrong, update the \"zero\" of the reader\n // this happens if data has been prepended (crx files for example)\n this.reader.zero = extraBytes;\n }\n } else if (extraBytes < 0) {\n throw new Error(\"Corrupted zip: missing \" + Math.abs(extraBytes) + \" bytes.\");\n }\n },\n prepareReader: function(data) {\n this.reader = readerFor(data);\n },\n /**\n * Read a zip file and create ZipEntries.\n * @param {String|ArrayBuffer|Uint8Array|Buffer} data the binary string representing a zip file.\n */\n load: function(data) {\n this.prepareReader(data);\n this.readEndOfCentral();\n this.readCentralDir();\n this.readLocalFiles();\n }\n};\n// }}} end of ZipEntries\nmodule.exports = ZipEntries;\n","'use strict';\nvar readerFor = require('./reader/readerFor');\nvar utils = require('./utils');\nvar CompressedObject = require('./compressedObject');\nvar crc32fn = require('./crc32');\nvar utf8 = require('./utf8');\nvar compressions = require('./compressions');\nvar support = require('./support');\n\nvar MADE_BY_DOS = 0x00;\nvar MADE_BY_UNIX = 0x03;\n\n/**\n * Find a compression registered in JSZip.\n * @param {string} compressionMethod the method magic to find.\n * @return {Object|null} the JSZip compression object, null if none found.\n */\nvar findCompression = function(compressionMethod) {\n for (var method in compressions) {\n if (!compressions.hasOwnProperty(method)) {\n continue;\n }\n if (compressions[method].magic === compressionMethod) {\n return compressions[method];\n }\n }\n return null;\n};\n\n// class ZipEntry {{{\n/**\n * An entry in the zip file.\n * @constructor\n * @param {Object} options Options of the current file.\n * @param {Object} loadOptions Options for loading the stream.\n */\nfunction ZipEntry(options, loadOptions) {\n this.options = options;\n this.loadOptions = loadOptions;\n}\nZipEntry.prototype = {\n /**\n * say if the file is encrypted.\n * @return {boolean} true if the file is encrypted, false otherwise.\n */\n isEncrypted: function() {\n // bit 1 is set\n return (this.bitFlag & 0x0001) === 0x0001;\n },\n /**\n * say if the file has utf-8 filename/comment.\n * @return {boolean} true if the filename/comment is in utf-8, false otherwise.\n */\n useUTF8: function() {\n // bit 11 is set\n return (this.bitFlag & 0x0800) === 0x0800;\n },\n /**\n * Read the local part of a zip file and add the info in this object.\n * @param {DataReader} reader the reader to use.\n */\n readLocalPart: function(reader) {\n var compression, localExtraFieldsLength;\n\n // we already know everything from the central dir !\n // If the central dir data are false, we are doomed.\n // On the bright side, the local part is scary : zip64, data descriptors, both, etc.\n // The less data we get here, the more reliable this should be.\n // Let's skip the whole header and dash to the data !\n reader.skip(22);\n // in some zip created on windows, the filename stored in the central dir contains \\ instead of /.\n // Strangely, the filename here is OK.\n // I would love to treat these zip files as corrupted (see http://www.info-zip.org/FAQ.html#backslashes\n // or APPNOTE#4.4.17.1, \"All slashes MUST be forward slashes '/'\") but there are a lot of bad zip generators...\n // Search \"unzip mismatching \"local\" filename continuing with \"central\" filename version\" on\n // the internet.\n //\n // I think I see the logic here : the central directory is used to display\n // content and the local directory is used to extract the files. Mixing / and \\\n // may be used to display \\ to windows users and use / when extracting the files.\n // Unfortunately, this lead also to some issues : http://seclists.org/fulldisclosure/2009/Sep/394\n this.fileNameLength = reader.readInt(2);\n localExtraFieldsLength = reader.readInt(2); // can't be sure this will be the same as the central dir\n // the fileName is stored as binary data, the handleUTF8 method will take care of the encoding.\n this.fileName = reader.readData(this.fileNameLength);\n reader.skip(localExtraFieldsLength);\n\n if (this.compressedSize === -1 || this.uncompressedSize === -1) {\n throw new Error(\"Bug or corrupted zip : didn't get enough informations from the central directory \" + \"(compressedSize === -1 || uncompressedSize === -1)\");\n }\n\n compression = findCompression(this.compressionMethod);\n if (compression === null) { // no compression found\n throw new Error(\"Corrupted zip : compression \" + utils.pretty(this.compressionMethod) + \" unknown (inner file : \" + utils.transformTo(\"string\", this.fileName) + \")\");\n }\n this.decompressed = new CompressedObject(this.compressedSize, this.uncompressedSize, this.crc32, compression, reader.readData(this.compressedSize));\n },\n\n /**\n * Read the central part of a zip file and add the info in this object.\n * @param {DataReader} reader the reader to use.\n */\n readCentralPart: function(reader) {\n this.versionMadeBy = reader.readInt(2);\n reader.skip(2);\n // this.versionNeeded = reader.readInt(2);\n this.bitFlag = reader.readInt(2);\n this.compressionMethod = reader.readString(2);\n this.date = reader.readDate();\n this.crc32 = reader.readInt(4);\n this.compressedSize = reader.readInt(4);\n this.uncompressedSize = reader.readInt(4);\n var fileNameLength = reader.readInt(2);\n this.extraFieldsLength = reader.readInt(2);\n this.fileCommentLength = reader.readInt(2);\n this.diskNumberStart = reader.readInt(2);\n this.internalFileAttributes = reader.readInt(2);\n this.externalFileAttributes = reader.readInt(4);\n this.localHeaderOffset = reader.readInt(4);\n\n if (this.isEncrypted()) {\n throw new Error(\"Encrypted zip are not supported\");\n }\n\n // will be read in the local part, see the comments there\n reader.skip(fileNameLength);\n this.readExtraFields(reader);\n this.parseZIP64ExtraField(reader);\n this.fileComment = reader.readData(this.fileCommentLength);\n },\n\n /**\n * Parse the external file attributes and get the unix/dos permissions.\n */\n processAttributes: function () {\n this.unixPermissions = null;\n this.dosPermissions = null;\n var madeBy = this.versionMadeBy >> 8;\n\n // Check if we have the DOS directory flag set.\n // We look for it in the DOS and UNIX permissions\n // but some unknown platform could set it as a compatibility flag.\n this.dir = this.externalFileAttributes & 0x0010 ? true : false;\n\n if(madeBy === MADE_BY_DOS) {\n // first 6 bits (0 to 5)\n this.dosPermissions = this.externalFileAttributes & 0x3F;\n }\n\n if(madeBy === MADE_BY_UNIX) {\n this.unixPermissions = (this.externalFileAttributes >> 16) & 0xFFFF;\n // the octal permissions are in (this.unixPermissions & 0x01FF).toString(8);\n }\n\n // fail safe : if the name ends with a / it probably means a folder\n if (!this.dir && this.fileNameStr.slice(-1) === '/') {\n this.dir = true;\n }\n },\n\n /**\n * Parse the ZIP64 extra field and merge the info in the current ZipEntry.\n * @param {DataReader} reader the reader to use.\n */\n parseZIP64ExtraField: function(reader) {\n\n if (!this.extraFields[0x0001]) {\n return;\n }\n\n // should be something, preparing the extra reader\n var extraReader = readerFor(this.extraFields[0x0001].value);\n\n // I really hope that these 64bits integer can fit in 32 bits integer, because js\n // won't let us have more.\n if (this.uncompressedSize === utils.MAX_VALUE_32BITS) {\n this.uncompressedSize = extraReader.readInt(8);\n }\n if (this.compressedSize === utils.MAX_VALUE_32BITS) {\n this.compressedSize = extraReader.readInt(8);\n }\n if (this.localHeaderOffset === utils.MAX_VALUE_32BITS) {\n this.localHeaderOffset = extraReader.readInt(8);\n }\n if (this.diskNumberStart === utils.MAX_VALUE_32BITS) {\n this.diskNumberStart = extraReader.readInt(4);\n }\n },\n /**\n * Read the central part of a zip file and add the info in this object.\n * @param {DataReader} reader the reader to use.\n */\n readExtraFields: function(reader) {\n var end = reader.index + this.extraFieldsLength,\n extraFieldId,\n extraFieldLength,\n extraFieldValue;\n\n if (!this.extraFields) {\n this.extraFields = {};\n }\n\n while (reader.index < end) {\n extraFieldId = reader.readInt(2);\n extraFieldLength = reader.readInt(2);\n extraFieldValue = reader.readData(extraFieldLength);\n\n this.extraFields[extraFieldId] = {\n id: extraFieldId,\n length: extraFieldLength,\n value: extraFieldValue\n };\n }\n },\n /**\n * Apply an UTF8 transformation if needed.\n */\n handleUTF8: function() {\n var decodeParamType = support.uint8array ? \"uint8array\" : \"array\";\n if (this.useUTF8()) {\n this.fileNameStr = utf8.utf8decode(this.fileName);\n this.fileCommentStr = utf8.utf8decode(this.fileComment);\n } else {\n var upath = this.findExtraFieldUnicodePath();\n if (upath !== null) {\n this.fileNameStr = upath;\n } else {\n // ASCII text or unsupported code page\n var fileNameByteArray = utils.transformTo(decodeParamType, this.fileName);\n this.fileNameStr = this.loadOptions.decodeFileName(fileNameByteArray);\n }\n\n var ucomment = this.findExtraFieldUnicodeComment();\n if (ucomment !== null) {\n this.fileCommentStr = ucomment;\n } else {\n // ASCII text or unsupported code page\n var commentByteArray = utils.transformTo(decodeParamType, this.fileComment);\n this.fileCommentStr = this.loadOptions.decodeFileName(commentByteArray);\n }\n }\n },\n\n /**\n * Find the unicode path declared in the extra field, if any.\n * @return {String} the unicode path, null otherwise.\n */\n findExtraFieldUnicodePath: function() {\n var upathField = this.extraFields[0x7075];\n if (upathField) {\n var extraReader = readerFor(upathField.value);\n\n // wrong version\n if (extraReader.readInt(1) !== 1) {\n return null;\n }\n\n // the crc of the filename changed, this field is out of date.\n if (crc32fn(this.fileName) !== extraReader.readInt(4)) {\n return null;\n }\n\n return utf8.utf8decode(extraReader.readData(upathField.length - 5));\n }\n return null;\n },\n\n /**\n * Find the unicode comment declared in the extra field, if any.\n * @return {String} the unicode comment, null otherwise.\n */\n findExtraFieldUnicodeComment: function() {\n var ucommentField = this.extraFields[0x6375];\n if (ucommentField) {\n var extraReader = readerFor(ucommentField.value);\n\n // wrong version\n if (extraReader.readInt(1) !== 1) {\n return null;\n }\n\n // the crc of the comment changed, this field is out of date.\n if (crc32fn(this.fileComment) !== extraReader.readInt(4)) {\n return null;\n }\n\n return utf8.utf8decode(extraReader.readData(ucommentField.length - 5));\n }\n return null;\n }\n};\nmodule.exports = ZipEntry;\n","'use strict';\n\nvar StreamHelper = require('./stream/StreamHelper');\nvar DataWorker = require('./stream/DataWorker');\nvar utf8 = require('./utf8');\nvar CompressedObject = require('./compressedObject');\nvar GenericWorker = require('./stream/GenericWorker');\n\n/**\n * A simple object representing a file in the zip file.\n * @constructor\n * @param {string} name the name of the file\n * @param {String|ArrayBuffer|Uint8Array|Buffer} data the data\n * @param {Object} options the options of the file\n */\nvar ZipObject = function(name, data, options) {\n this.name = name;\n this.dir = options.dir;\n this.date = options.date;\n this.comment = options.comment;\n this.unixPermissions = options.unixPermissions;\n this.dosPermissions = options.dosPermissions;\n\n this._data = data;\n this._dataBinary = options.binary;\n // keep only the compression\n this.options = {\n compression : options.compression,\n compressionOptions : options.compressionOptions\n };\n};\n\nZipObject.prototype = {\n /**\n * Create an internal stream for the content of this object.\n * @param {String} type the type of each chunk.\n * @return StreamHelper the stream.\n */\n internalStream: function (type) {\n var result = null, outputType = \"string\";\n try {\n if (!type) {\n throw new Error(\"No output type specified.\");\n }\n outputType = type.toLowerCase();\n var askUnicodeString = outputType === \"string\" || outputType === \"text\";\n if (outputType === \"binarystring\" || outputType === \"text\") {\n outputType = \"string\";\n }\n result = this._decompressWorker();\n\n var isUnicodeString = !this._dataBinary;\n\n if (isUnicodeString && !askUnicodeString) {\n result = result.pipe(new utf8.Utf8EncodeWorker());\n }\n if (!isUnicodeString && askUnicodeString) {\n result = result.pipe(new utf8.Utf8DecodeWorker());\n }\n } catch (e) {\n result = new GenericWorker(\"error\");\n result.error(e);\n }\n\n return new StreamHelper(result, outputType, \"\");\n },\n\n /**\n * Prepare the content in the asked type.\n * @param {String} type the type of the result.\n * @param {Function} onUpdate a function to call on each internal update.\n * @return Promise the promise of the result.\n */\n async: function (type, onUpdate) {\n return this.internalStream(type).accumulate(onUpdate);\n },\n\n /**\n * Prepare the content as a nodejs stream.\n * @param {String} type the type of each chunk.\n * @param {Function} onUpdate a function to call on each internal update.\n * @return Stream the stream.\n */\n nodeStream: function (type, onUpdate) {\n return this.internalStream(type || \"nodebuffer\").toNodejsStream(onUpdate);\n },\n\n /**\n * Return a worker for the compressed content.\n * @private\n * @param {Object} compression the compression object to use.\n * @param {Object} compressionOptions the options to use when compressing.\n * @return Worker the worker.\n */\n _compressWorker: function (compression, compressionOptions) {\n if (\n this._data instanceof CompressedObject &&\n this._data.compression.magic === compression.magic\n ) {\n return this._data.getCompressedWorker();\n } else {\n var result = this._decompressWorker();\n if(!this._dataBinary) {\n result = result.pipe(new utf8.Utf8EncodeWorker());\n }\n return CompressedObject.createWorkerFrom(result, compression, compressionOptions);\n }\n },\n /**\n * Return a worker for the decompressed content.\n * @private\n * @return Worker the worker.\n */\n _decompressWorker : function () {\n if (this._data instanceof CompressedObject) {\n return this._data.getContentWorker();\n } else if (this._data instanceof GenericWorker) {\n return this._data;\n } else {\n return new DataWorker(this._data);\n }\n }\n};\n\nvar removedMethods = [\"asText\", \"asBinary\", \"asNodeBuffer\", \"asUint8Array\", \"asArrayBuffer\"];\nvar removedFn = function () {\n throw new Error(\"This method has been removed in JSZip 3.0, please check the upgrade guide.\");\n};\n\nfor(var i = 0; i < removedMethods.length; i++) {\n ZipObject.prototype[removedMethods[i]] = removedFn;\n}\nmodule.exports = ZipObject;\n","require('../modules/web.immediate');\nmodule.exports = require('../modules/_core').setImmediate;","module.exports = function(it){\n if(typeof it != 'function')throw TypeError(it + ' is not a function!');\n return it;\n};","var isObject = require('./_is-object');\nmodule.exports = function(it){\n if(!isObject(it))throw TypeError(it + ' is not an object!');\n return it;\n};","var toString = {}.toString;\n\nmodule.exports = function(it){\n return toString.call(it).slice(8, -1);\n};","var core = module.exports = {version: '2.3.0'};\nif(typeof __e == 'number')__e = core; // eslint-disable-line no-undef","// optional / simple context binding\nvar aFunction = require('./_a-function');\nmodule.exports = function(fn, that, length){\n aFunction(fn);\n if(that === undefined)return fn;\n switch(length){\n case 1: return function(a){\n return fn.call(that, a);\n };\n case 2: return function(a, b){\n return fn.call(that, a, b);\n };\n case 3: return function(a, b, c){\n return fn.call(that, a, b, c);\n };\n }\n return function(/* ...args */){\n return fn.apply(that, arguments);\n };\n};","// Thank's IE8 for his funny defineProperty\nmodule.exports = !require('./_fails')(function(){\n return Object.defineProperty({}, 'a', {get: function(){ return 7; }}).a != 7;\n});","var isObject = require('./_is-object')\n , document = require('./_global').document\n // in old IE typeof document.createElement is 'object'\n , is = isObject(document) && isObject(document.createElement);\nmodule.exports = function(it){\n return is ? document.createElement(it) : {};\n};","var global = require('./_global')\n , core = require('./_core')\n , ctx = require('./_ctx')\n , hide = require('./_hide')\n , PROTOTYPE = 'prototype';\n\nvar $export = function(type, name, source){\n var IS_FORCED = type & $export.F\n , IS_GLOBAL = type & $export.G\n , IS_STATIC = type & $export.S\n , IS_PROTO = type & $export.P\n , IS_BIND = type & $export.B\n , IS_WRAP = type & $export.W\n , exports = IS_GLOBAL ? core : core[name] || (core[name] = {})\n , expProto = exports[PROTOTYPE]\n , target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE]\n , key, own, out;\n if(IS_GLOBAL)source = name;\n for(key in source){\n // contains in native\n own = !IS_FORCED && target && target[key] !== undefined;\n if(own && key in exports)continue;\n // export native or passed\n out = own ? target[key] : source[key];\n // prevent global pollution for namespaces\n exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key]\n // bind timers to global for call from export context\n : IS_BIND && own ? ctx(out, global)\n // wrap global constructors for prevent change them in library\n : IS_WRAP && target[key] == out ? (function(C){\n var F = function(a, b, c){\n if(this instanceof C){\n switch(arguments.length){\n case 0: return new C;\n case 1: return new C(a);\n case 2: return new C(a, b);\n } return new C(a, b, c);\n } return C.apply(this, arguments);\n };\n F[PROTOTYPE] = C[PROTOTYPE];\n return F;\n // make static versions for prototype methods\n })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n // export proto methods to core.%CONSTRUCTOR%.methods.%NAME%\n if(IS_PROTO){\n (exports.virtual || (exports.virtual = {}))[key] = out;\n // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME%\n if(type & $export.R && expProto && !expProto[key])hide(expProto, key, out);\n }\n }\n};\n// type bitmap\n$export.F = 1; // forced\n$export.G = 2; // global\n$export.S = 4; // static\n$export.P = 8; // proto\n$export.B = 16; // bind\n$export.W = 32; // wrap\n$export.U = 64; // safe\n$export.R = 128; // real proto method for `library` \nmodule.exports = $export;","module.exports = function(exec){\n try {\n return !!exec();\n } catch(e){\n return true;\n }\n};","// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n ? window : typeof self != 'undefined' && self.Math == Math ? self : Function('return this')();\nif(typeof __g == 'number')__g = global; // eslint-disable-line no-undef","var dP = require('./_object-dp')\n , createDesc = require('./_property-desc');\nmodule.exports = require('./_descriptors') ? function(object, key, value){\n return dP.f(object, key, createDesc(1, value));\n} : function(object, key, value){\n object[key] = value;\n return object;\n};","module.exports = require('./_global').document && document.documentElement;","module.exports = !require('./_descriptors') && !require('./_fails')(function(){\r\n return Object.defineProperty(require('./_dom-create')('div'), 'a', {get: function(){ return 7; }}).a != 7;\r\n});","// fast apply, http://jsperf.lnkit.com/fast-apply/5\nmodule.exports = function(fn, args, that){\n var un = that === undefined;\n switch(args.length){\n case 0: return un ? fn()\n : fn.call(that);\n case 1: return un ? fn(args[0])\n : fn.call(that, args[0]);\n case 2: return un ? fn(args[0], args[1])\n : fn.call(that, args[0], args[1]);\n case 3: return un ? fn(args[0], args[1], args[2])\n : fn.call(that, args[0], args[1], args[2]);\n case 4: return un ? fn(args[0], args[1], args[2], args[3])\n : fn.call(that, args[0], args[1], args[2], args[3]);\n } return fn.apply(that, args);\n};","module.exports = function(it){\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};","var anObject = require('./_an-object')\n , IE8_DOM_DEFINE = require('./_ie8-dom-define')\n , toPrimitive = require('./_to-primitive')\n , dP = Object.defineProperty;\n\nexports.f = require('./_descriptors') ? Object.defineProperty : function defineProperty(O, P, Attributes){\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if(IE8_DOM_DEFINE)try {\n return dP(O, P, Attributes);\n } catch(e){ /* empty */ }\n if('get' in Attributes || 'set' in Attributes)throw TypeError('Accessors not supported!');\n if('value' in Attributes)O[P] = Attributes.value;\n return O;\n};","module.exports = function(bitmap, value){\n return {\n enumerable : !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable : !(bitmap & 4),\n value : value\n };\n};","var ctx = require('./_ctx')\n , invoke = require('./_invoke')\n , html = require('./_html')\n , cel = require('./_dom-create')\n , global = require('./_global')\n , process = global.process\n , setTask = global.setImmediate\n , clearTask = global.clearImmediate\n , MessageChannel = global.MessageChannel\n , counter = 0\n , queue = {}\n , ONREADYSTATECHANGE = 'onreadystatechange'\n , defer, channel, port;\nvar run = function(){\n var id = +this;\n if(queue.hasOwnProperty(id)){\n var fn = queue[id];\n delete queue[id];\n fn();\n }\n};\nvar listener = function(event){\n run.call(event.data);\n};\n// Node.js 0.9+ & IE10+ has setImmediate, otherwise:\nif(!setTask || !clearTask){\n setTask = function setImmediate(fn){\n var args = [], i = 1;\n while(arguments.length > i)args.push(arguments[i++]);\n queue[++counter] = function(){\n invoke(typeof fn == 'function' ? fn : Function(fn), args);\n };\n defer(counter);\n return counter;\n };\n clearTask = function clearImmediate(id){\n delete queue[id];\n };\n // Node.js 0.8-\n if(require('./_cof')(process) == 'process'){\n defer = function(id){\n process.nextTick(ctx(run, id, 1));\n };\n // Browsers with MessageChannel, includes WebWorkers\n } else if(MessageChannel){\n channel = new MessageChannel;\n port = channel.port2;\n channel.port1.onmessage = listener;\n defer = ctx(port.postMessage, port, 1);\n // Browsers with postMessage, skip WebWorkers\n // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'\n } else if(global.addEventListener && typeof postMessage == 'function' && !global.importScripts){\n defer = function(id){\n global.postMessage(id + '', '*');\n };\n global.addEventListener('message', listener, false);\n // IE8-\n } else if(ONREADYSTATECHANGE in cel('script')){\n defer = function(id){\n html.appendChild(cel('script'))[ONREADYSTATECHANGE] = function(){\n html.removeChild(this);\n run.call(id);\n };\n };\n // Rest old browsers\n } else {\n defer = function(id){\n setTimeout(ctx(run, id, 1), 0);\n };\n }\n}\nmodule.exports = {\n set: setTask,\n clear: clearTask\n};","// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = require('./_is-object');\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function(it, S){\n if(!isObject(it))return it;\n var fn, val;\n if(S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it)))return val;\n if(typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it)))return val;\n if(!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it)))return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};","var $export = require('./_export')\n , $task = require('./_task');\n$export($export.G + $export.B, {\n setImmediate: $task.set,\n clearImmediate: $task.clear\n});","'use strict';\nvar Mutation = global.MutationObserver || global.WebKitMutationObserver;\n\nvar scheduleDrain;\n\n{\n if (Mutation) {\n var called = 0;\n var observer = new Mutation(nextTick);\n var element = global.document.createTextNode('');\n observer.observe(element, {\n characterData: true\n });\n scheduleDrain = function () {\n element.data = (called = ++called % 2);\n };\n } else if (!global.setImmediate && typeof global.MessageChannel !== 'undefined') {\n var channel = new global.MessageChannel();\n channel.port1.onmessage = nextTick;\n scheduleDrain = function () {\n channel.port2.postMessage(0);\n };\n } else if ('document' in global && 'onreadystatechange' in global.document.createElement('script')) {\n scheduleDrain = function () {\n\n // Create a