Commit 804483e8 authored by Richard's avatar Richard Committed by Richard

[erp5_notebook]: update iodide and pyodide, add python libraries

parent 0e7e5551
"""
Cycler
======
Cycling through combinations of values, producing dictionaries.
You can add cyclers::
from cycler import cycler
cc = (cycler(color=list('rgb')) +
cycler(linestyle=['-', '--', '-.']))
for d in cc:
print(d)
Results in::
{'color': 'r', 'linestyle': '-'}
{'color': 'g', 'linestyle': '--'}
{'color': 'b', 'linestyle': '-.'}
You can multiply cyclers::
from cycler import cycler
cc = (cycler(color=list('rgb')) *
cycler(linestyle=['-', '--', '-.']))
for d in cc:
print(d)
Results in::
{'color': 'r', 'linestyle': '-'}
{'color': 'r', 'linestyle': '--'}
{'color': 'r', 'linestyle': '-.'}
{'color': 'g', 'linestyle': '-'}
{'color': 'g', 'linestyle': '--'}
{'color': 'g', 'linestyle': '-.'}
{'color': 'b', 'linestyle': '-'}
{'color': 'b', 'linestyle': '--'}
{'color': 'b', 'linestyle': '-.'}
"""
from __future__ import (absolute_import, division, print_function,
unicode_literals)
import six
from itertools import product, cycle
from six.moves import zip, reduce
from operator import mul, add
import copy
__version__ = '0.10.0'
def _process_keys(left, right):
"""
Helper function to compose cycler keys
Parameters
----------
left, right : iterable of dictionaries or None
The cyclers to be composed
Returns
-------
keys : set
The keys in the composition of the two cyclers
"""
l_peek = next(iter(left)) if left is not None else {}
r_peek = next(iter(right)) if right is not None else {}
l_key = set(l_peek.keys())
r_key = set(r_peek.keys())
if l_key & r_key:
raise ValueError("Can not compose overlapping cycles")
return l_key | r_key
class Cycler(object):
"""
Composable cycles
This class has compositions methods:
``+``
for 'inner' products (zip)
``+=``
in-place ``+``
``*``
for outer products (itertools.product) and integer multiplication
``*=``
in-place ``*``
and supports basic slicing via ``[]``
Parameters
----------
left : Cycler or None
The 'left' cycler
right : Cycler or None
The 'right' cycler
op : func or None
Function which composes the 'left' and 'right' cyclers.
"""
def __call__(self):
return cycle(self)
def __init__(self, left, right=None, op=None):
"""Semi-private init
Do not use this directly, use `cycler` function instead.
"""
if isinstance(left, Cycler):
self._left = Cycler(left._left, left._right, left._op)
elif left is not None:
# Need to copy the dictionary or else that will be a residual
# mutable that could lead to strange errors
self._left = [copy.copy(v) for v in left]
else:
self._left = None
if isinstance(right, Cycler):
self._right = Cycler(right._left, right._right, right._op)
elif right is not None:
# Need to copy the dictionary or else that will be a residual
# mutable that could lead to strange errors
self._right = [copy.copy(v) for v in right]
else:
self._right = None
self._keys = _process_keys(self._left, self._right)
self._op = op
@property
def keys(self):
"""
The keys this Cycler knows about
"""
return set(self._keys)
def change_key(self, old, new):
"""
Change a key in this cycler to a new name.
Modification is performed in-place.
Does nothing if the old key is the same as the new key.
Raises a ValueError if the new key is already a key.
Raises a KeyError if the old key isn't a key.
"""
if old == new:
return
if new in self._keys:
raise ValueError("Can't replace %s with %s, %s is already a key" %
(old, new, new))
if old not in self._keys:
raise KeyError("Can't replace %s with %s, %s is not a key" %
(old, new, old))
self._keys.remove(old)
self._keys.add(new)
if self._right is not None and old in self._right.keys:
self._right.change_key(old, new)
# self._left should always be non-None
# if self._keys is non-empty.
elif isinstance(self._left, Cycler):
self._left.change_key(old, new)
else:
# It should be completely safe at this point to
# assume that the old key can be found in each
# iteration.
self._left = [{new: entry[old]} for entry in self._left]
def _compose(self):
"""
Compose the 'left' and 'right' components of this cycle
with the proper operation (zip or product as of now)
"""
for a, b in self._op(self._left, self._right):
out = dict()
out.update(a)
out.update(b)
yield out
@classmethod
def _from_iter(cls, label, itr):
"""
Class method to create 'base' Cycler objects
that do not have a 'right' or 'op' and for which
the 'left' object is not another Cycler.
Parameters
----------
label : str
The property key.
itr : iterable
Finite length iterable of the property values.
Returns
-------
cycler : Cycler
New 'base' `Cycler`
"""
ret = cls(None)
ret._left = list({label: v} for v in itr)
ret._keys = set([label])
return ret
def __getitem__(self, key):
# TODO : maybe add numpy style fancy slicing
if isinstance(key, slice):
trans = self.by_key()
return reduce(add, (_cycler(k, v[key])
for k, v in six.iteritems(trans)))
else:
raise ValueError("Can only use slices with Cycler.__getitem__")
def __iter__(self):
if self._right is None:
return iter(dict(l) for l in self._left)
return self._compose()
def __add__(self, other):
"""
Pair-wise combine two equal length cycles (zip)
Parameters
----------
other : Cycler
The second Cycler
"""
if len(self) != len(other):
raise ValueError("Can only add equal length cycles, "
"not {0} and {1}".format(len(self), len(other)))
return Cycler(self, other, zip)
def __mul__(self, other):
"""
Outer product of two cycles (`itertools.product`) or integer
multiplication.
Parameters
----------
other : Cycler or int
The second Cycler or integer
"""
if isinstance(other, Cycler):
return Cycler(self, other, product)
elif isinstance(other, int):
trans = self.by_key()
return reduce(add, (_cycler(k, v*other)
for k, v in six.iteritems(trans)))
else:
return NotImplemented
def __rmul__(self, other):
return self * other
def __len__(self):
op_dict = {zip: min, product: mul}
if self._right is None:
return len(self._left)
l_len = len(self._left)
r_len = len(self._right)
return op_dict[self._op](l_len, r_len)
def __iadd__(self, other):
"""
In-place pair-wise combine two equal length cycles (zip)
Parameters
----------
other : Cycler
The second Cycler
"""
if not isinstance(other, Cycler):
raise TypeError("Cannot += with a non-Cycler object")
# True shallow copy of self is fine since this is in-place
old_self = copy.copy(self)
self._keys = _process_keys(old_self, other)
self._left = old_self
self._op = zip
self._right = Cycler(other._left, other._right, other._op)
return self
def __imul__(self, other):
"""
In-place outer product of two cycles (`itertools.product`)
Parameters
----------
other : Cycler
The second Cycler
"""
if not isinstance(other, Cycler):
raise TypeError("Cannot *= with a non-Cycler object")
# True shallow copy of self is fine since this is in-place
old_self = copy.copy(self)
self._keys = _process_keys(old_self, other)
self._left = old_self
self._op = product
self._right = Cycler(other._left, other._right, other._op)
return self
def __eq__(self, other):
"""
Check equality
"""
if len(self) != len(other):
return False
if self.keys ^ other.keys:
return False
return all(a == b for a, b in zip(self, other))
def __repr__(self):
op_map = {zip: '+', product: '*'}
if self._right is None:
lab = self.keys.pop()
itr = list(v[lab] for v in self)
return "cycler({lab!r}, {itr!r})".format(lab=lab, itr=itr)
else:
op = op_map.get(self._op, '?')
msg = "({left!r} {op} {right!r})"
return msg.format(left=self._left, op=op, right=self._right)
def _repr_html_(self):
# an table showing the value of each key through a full cycle
output = "<table>"
sorted_keys = sorted(self.keys, key=repr)
for key in sorted_keys:
output += "<th>{key!r}</th>".format(key=key)
for d in iter(self):
output += "<tr>"
for k in sorted_keys:
output += "<td>{val!r}</td>".format(val=d[k])
output += "</tr>"
output += "</table>"
return output
def by_key(self):
"""Values by key
This returns the transposed values of the cycler. Iterating
over a `Cycler` yields dicts with a single value for each key,
this method returns a `dict` of `list` which are the values
for the given key.
The returned value can be used to create an equivalent `Cycler`
using only `+`.
Returns
-------
transpose : dict
dict of lists of the values for each key.
"""
# TODO : sort out if this is a bottle neck, if there is a better way
# and if we care.
keys = self.keys
# change this to dict comprehension when drop 2.6
out = dict((k, list()) for k in keys)
for d in self:
for k in keys:
out[k].append(d[k])
return out
# for back compatibility
_transpose = by_key
def simplify(self):
"""Simplify the Cycler
Returned as a composition using only sums (no multiplications)
Returns
-------
simple : Cycler
An equivalent cycler using only summation"""
# TODO: sort out if it is worth the effort to make sure this is
# balanced. Currently it is is
# (((a + b) + c) + d) vs
# ((a + b) + (c + d))
# I would believe that there is some performance implications
trans = self.by_key()
return reduce(add, (_cycler(k, v) for k, v in six.iteritems(trans)))
def concat(self, other):
"""Concatenate this cycler and an other.
The keys must match exactly.
This returns a single Cycler which is equivalent to
`itertools.chain(self, other)`
Examples
--------
>>> num = cycler('a', range(3))
>>> let = cycler('a', 'abc')
>>> num.concat(let)
cycler('a', [0, 1, 2, 'a', 'b', 'c'])
Parameters
----------
other : `Cycler`
The `Cycler` to concatenate to this one.
Returns
-------
ret : `Cycler`
The concatenated `Cycler`
"""
return concat(self, other)
def concat(left, right):
"""Concatenate two cyclers.
The keys must match exactly.
This returns a single Cycler which is equivalent to
`itertools.chain(left, right)`
Examples
--------
>>> num = cycler('a', range(3))
>>> let = cycler('a', 'abc')
>>> num.concat(let)
cycler('a', [0, 1, 2, 'a', 'b', 'c'])
Parameters
----------
left, right : `Cycler`
The two `Cycler` instances to concatenate
Returns
-------
ret : `Cycler`
The concatenated `Cycler`
"""
if left.keys != right.keys:
msg = '\n\t'.join(["Keys do not match:",
"Intersection: {both!r}",
"Disjoint: {just_one!r}"]).format(
both=left.keys & right.keys,
just_one=left.keys ^ right.keys)
raise ValueError(msg)
_l = left.by_key()
_r = right.by_key()
return reduce(add, (_cycler(k, _l[k] + _r[k]) for k in left.keys))
def cycler(*args, **kwargs):
"""
Create a new `Cycler` object from a single positional argument,
a pair of positional arguments, or the combination of keyword arguments.
cycler(arg)
cycler(label1=itr1[, label2=iter2[, ...]])
cycler(label, itr)
Form 1 simply copies a given `Cycler` object.
Form 2 composes a `Cycler` as an inner product of the
pairs of keyword arguments. In other words, all of the
iterables are cycled simultaneously, as if through zip().
Form 3 creates a `Cycler` from a label and an iterable.
This is useful for when the label cannot be a keyword argument
(e.g., an integer or a name that has a space in it).
Parameters
----------
arg : Cycler
Copy constructor for Cycler (does a shallow copy of iterables).
label : name
The property key. In the 2-arg form of the function,
the label can be any hashable object. In the keyword argument
form of the function, it must be a valid python identifier.
itr : iterable
Finite length iterable of the property values.
Can be a single-property `Cycler` that would
be like a key change, but as a shallow copy.
Returns
-------
cycler : Cycler
New `Cycler` for the given property
"""
if args and kwargs:
raise TypeError("cyl() can only accept positional OR keyword "
"arguments -- not both.")
if len(args) == 1:
if not isinstance(args[0], Cycler):
raise TypeError("If only one positional argument given, it must "
" be a Cycler instance.")
return Cycler(args[0])
elif len(args) == 2:
return _cycler(*args)
elif len(args) > 2:
raise TypeError("Only a single Cycler can be accepted as the lone "
"positional argument. Use keyword arguments instead.")
if kwargs:
return reduce(add, (_cycler(k, v) for k, v in six.iteritems(kwargs)))
raise TypeError("Must have at least a positional OR keyword arguments")
def _cycler(label, itr):
"""
Create a new `Cycler` object from a property name and
iterable of values.
Parameters
----------
label : hashable
The property key.
itr : iterable
Finite length iterable of the property values.
Returns
-------
cycler : Cycler
New `Cycler` for the given property
"""
if isinstance(itr, Cycler):
keys = itr.keys
if len(keys) != 1:
msg = "Can not create Cycler from a multi-property Cycler"
raise ValueError(msg)
lab = keys.pop()
# Doesn't need to be a new list because
# _from_iter() will be creating that new list anyway.
itr = (v[lab] for v in itr)
return Cycler._from_iter(label, itr)
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="File" module="OFS.Image"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>__name__</string> </key>
<value> <string>cycler.data</string> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>application/octet-stream</string> </value>
</item>
<item>
<key> <string>precondition</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
var Module = typeof pyodide !== 'undefined' ? pyodide : {};
if (!Module.expectedDataFileDownloads) {
Module.expectedDataFileDownloads = 0;
Module.finishedDataFileDownloads = 0;
}
Module.expectedDataFileDownloads++;
(function() {
var loadPackage = function(metadata) {
var PACKAGE_PATH;
if (typeof window === 'object') {
PACKAGE_PATH = window['encodeURIComponent'](window.location.pathname.toString().substring(0, window.location.pathname.toString().lastIndexOf('/')) + '/');
} else if (typeof location !== 'undefined') {
// worker
PACKAGE_PATH = encodeURIComponent(location.pathname.toString().substring(0, location.pathname.toString().lastIndexOf('/')) + '/');
} else {
throw 'using preloaded data can only be done on a web page or in a web worker';
}
var PACKAGE_NAME = '/home/nexedir/pyodide/packages/cycler/build/cycler.data';
var REMOTE_PACKAGE_BASE = 'cycler.data';
if (typeof Module['locateFilePackage'] === 'function' && !Module['locateFile']) {
Module['locateFile'] = Module['locateFilePackage'];
err('warning: you defined Module.locateFilePackage, that has been renamed to Module.locateFile (using your locateFilePackage for now)');
}
var REMOTE_PACKAGE_NAME = Module['locateFile'] ? Module['locateFile'](REMOTE_PACKAGE_BASE, '') : REMOTE_PACKAGE_BASE;
var REMOTE_PACKAGE_SIZE = metadata.remote_package_size;
var PACKAGE_UUID = metadata.package_uuid;
function fetchRemotePackage(packageName, packageSize, callback, errback) {
var xhr = new XMLHttpRequest();
xhr.open('GET', packageName, true);
xhr.responseType = 'arraybuffer';
xhr.onprogress = function(event) {
var url = packageName;
var size = packageSize;
if (event.total) size = event.total;
if (event.loaded) {
if (!xhr.addedTotal) {
xhr.addedTotal = true;
if (!Module.dataFileDownloads) Module.dataFileDownloads = {};
Module.dataFileDownloads[url] = {
loaded: event.loaded,
total: size
};
} else {
Module.dataFileDownloads[url].loaded = event.loaded;
}
var total = 0;
var loaded = 0;
var num = 0;
for (var download in Module.dataFileDownloads) {
var data = Module.dataFileDownloads[download];
total += data.total;
loaded += data.loaded;
num++;
}
total = Math.ceil(total * Module.expectedDataFileDownloads/num);
if (Module['setStatus']) Module['setStatus']('Downloading data... (' + loaded + '/' + total + ')');
} else if (!Module.dataFileDownloads) {
if (Module['setStatus']) Module['setStatus']('Downloading data...');
}
};
xhr.onerror = function(event) {
throw new Error("NetworkError for: " + packageName);
}
xhr.onload = function(event) {
if (xhr.status == 200 || xhr.status == 304 || xhr.status == 206 || (xhr.status == 0 && xhr.response)) { // file URLs can return 0
var packageData = xhr.response;
callback(packageData);
} else {
throw new Error(xhr.statusText + " : " + xhr.responseURL);
}
};
xhr.send(null);
};
function handleError(error) {
console.error('package error:', error);
};
var fetchedCallback = null;
var fetched = Module['getPreloadedPackage'] ? Module['getPreloadedPackage'](REMOTE_PACKAGE_NAME, REMOTE_PACKAGE_SIZE) : null;
if (!fetched) fetchRemotePackage(REMOTE_PACKAGE_NAME, REMOTE_PACKAGE_SIZE, function(data) {
if (fetchedCallback) {
fetchedCallback(data);
fetchedCallback = null;
} else {
fetched = data;
}
}, handleError);
function runWithFS() {
function assert(check, msg) {
if (!check) throw msg + new Error().stack;
}
Module['FS_createPath']('/', 'lib', true, true);
Module['FS_createPath']('/lib', 'python3.6', true, true);
Module['FS_createPath']('/lib/python3.6', 'site-packages', true, true);
function DataRequest(start, end, audio) {
this.start = start;
this.end = end;
this.audio = audio;
}
DataRequest.prototype = {
requests: {},
open: function(mode, name) {
this.name = name;
this.requests[name] = this;
Module['addRunDependency']('fp ' + this.name);
},
send: function() {},
onload: function() {
var byteArray = this.byteArray.subarray(this.start, this.end);
this.finish(byteArray);
},
finish: function(byteArray) {
var that = this;
Module['FS_createPreloadedFile'](this.name, null, byteArray, true, true, function() {
Module['removeRunDependency']('fp ' + that.name);
}, function() {
if (that.audio) {
Module['removeRunDependency']('fp ' + that.name); // workaround for chromium bug 124926 (still no audio with this, but at least we don't hang)
} else {
err('Preloading file ' + that.name + ' failed');
}
}, false, true); // canOwn this data in the filesystem, it is a slide into the heap that will never change
this.requests[this.name] = null;
}
};
var files = metadata.files;
for (var i = 0; i < files.length; ++i) {
new DataRequest(files[i].start, files[i].end, files[i].audio).open('GET', files[i].filename);
}
function processPackageData(arrayBuffer) {
Module.finishedDataFileDownloads++;
assert(arrayBuffer, 'Loading data file failed.');
assert(arrayBuffer instanceof ArrayBuffer, 'bad input to processPackageData');
var byteArray = new Uint8Array(arrayBuffer);
var curr;
// copy the entire loaded file into a spot in the heap. Files will refer to slices in that. They cannot be freed though
// (we may be allocating before malloc is ready, during startup).
if (Module['SPLIT_MEMORY']) err('warning: you should run the file packager with --no-heap-copy when SPLIT_MEMORY is used, otherwise copying into the heap may fail due to the splitting');
var ptr = Module['getMemory'](byteArray.length);
Module['HEAPU8'].set(byteArray, ptr);
DataRequest.prototype.byteArray = Module['HEAPU8'].subarray(ptr, ptr+byteArray.length);
var files = metadata.files;
for (var i = 0; i < files.length; ++i) {
DataRequest.prototype.requests[files[i].filename].onload();
}
Module['removeRunDependency']('datafile_/home/nexedir/pyodide/packages/cycler/build/cycler.data');
};
Module['addRunDependency']('datafile_/home/nexedir/pyodide/packages/cycler/build/cycler.data');
if (!Module.preloadResults) Module.preloadResults = {};
Module.preloadResults[PACKAGE_NAME] = {fromCache: false};
if (fetched) {
processPackageData(fetched);
fetched = null;
} else {
fetchedCallback = processPackageData;
}
}
if (Module['calledRun']) {
runWithFS();
} else {
if (!Module['preRun']) Module['preRun'] = [];
Module["preRun"].push(runWithFS); // FS is not initialized yet, wait for it
}
}
loadPackage({"files": [{"start": 0, "audio": 0, "end": 15959, "filename": "/lib/python3.6/site-packages/cycler.py"}], "remote_package_size": 15959, "package_uuid": "38a6c2b4-93b4-46e7-b3cd-78359b1ffe72"});
})();
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="File" module="OFS.Image"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>__name__</string> </key>
<value> <string>cycler.js</string> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>application/javascript</string> </value>
</item>
<item>
<key> <string>precondition</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
This source diff could not be displayed because it is too large. You can view the blob instead.
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="File" module="OFS.Image"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>__name__</string> </key>
<value> <string>dateutil.data</string> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>application/octet-stream</string> </value>
</item>
<item>
<key> <string>precondition</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
var Module = typeof pyodide !== 'undefined' ? pyodide : {};
if (!Module.expectedDataFileDownloads) {
Module.expectedDataFileDownloads = 0;
Module.finishedDataFileDownloads = 0;
}
Module.expectedDataFileDownloads++;
(function() {
var loadPackage = function(metadata) {
var PACKAGE_PATH;
if (typeof window === 'object') {
PACKAGE_PATH = window['encodeURIComponent'](window.location.pathname.toString().substring(0, window.location.pathname.toString().lastIndexOf('/')) + '/');
} else if (typeof location !== 'undefined') {
// worker
PACKAGE_PATH = encodeURIComponent(location.pathname.toString().substring(0, location.pathname.toString().lastIndexOf('/')) + '/');
} else {
throw 'using preloaded data can only be done on a web page or in a web worker';
}
var PACKAGE_NAME = 'build/dateutil.data';
var REMOTE_PACKAGE_BASE = 'dateutil.data';
if (typeof Module['locateFilePackage'] === 'function' && !Module['locateFile']) {
Module['locateFile'] = Module['locateFilePackage'];
Module.printErr('warning: you defined Module.locateFilePackage, that has been renamed to Module.locateFile (using your locateFilePackage for now)');
}
var REMOTE_PACKAGE_NAME = typeof Module['locateFile'] === 'function' ?
Module['locateFile'](REMOTE_PACKAGE_BASE) :
((Module['filePackagePrefixURL'] || '') + REMOTE_PACKAGE_BASE);
var REMOTE_PACKAGE_SIZE = metadata.remote_package_size;
var PACKAGE_UUID = metadata.package_uuid;
function fetchRemotePackage(packageName, packageSize, callback, errback) {
var xhr = new XMLHttpRequest();
xhr.open('GET', packageName, true);
xhr.responseType = 'arraybuffer';
xhr.onprogress = function(event) {
var url = packageName;
var size = packageSize;
if (event.total) size = event.total;
if (event.loaded) {
if (!xhr.addedTotal) {
xhr.addedTotal = true;
if (!Module.dataFileDownloads) Module.dataFileDownloads = {};
Module.dataFileDownloads[url] = {
loaded: event.loaded,
total: size
};
} else {
Module.dataFileDownloads[url].loaded = event.loaded;
}
var total = 0;
var loaded = 0;
var num = 0;
for (var download in Module.dataFileDownloads) {
var data = Module.dataFileDownloads[download];
total += data.total;
loaded += data.loaded;
num++;
}
total = Math.ceil(total * Module.expectedDataFileDownloads/num);
if (Module['setStatus']) Module['setStatus']('Downloading data... (' + loaded + '/' + total + ')');
} else if (!Module.dataFileDownloads) {
if (Module['setStatus']) Module['setStatus']('Downloading data...');
}
};
xhr.onerror = function(event) {
throw new Error("NetworkError for: " + packageName);
}
xhr.onload = function(event) {
if (xhr.status == 200 || xhr.status == 304 || xhr.status == 206 || (xhr.status == 0 && xhr.response)) { // file URLs can return 0
var packageData = xhr.response;
callback(packageData);
} else {
throw new Error(xhr.statusText + " : " + xhr.responseURL);
}
};
xhr.send(null);
};
function handleError(error) {
console.error('package error:', error);
};
var fetchedCallback = null;
var fetched = Module['getPreloadedPackage'] ? Module['getPreloadedPackage'](REMOTE_PACKAGE_NAME, REMOTE_PACKAGE_SIZE) : null;
if (!fetched) fetchRemotePackage(REMOTE_PACKAGE_NAME, REMOTE_PACKAGE_SIZE, function(data) {
if (fetchedCallback) {
fetchedCallback(data);
fetchedCallback = null;
} else {
fetched = data;
}
}, handleError);
function runWithFS() {
function assert(check, msg) {
if (!check) throw msg + new Error().stack;
}
Module['FS_createPath']('/', 'lib', true, true);
Module['FS_createPath']('/lib', 'python3.6', true, true);
Module['FS_createPath']('/lib/python3.6', 'site-packages', true, true);
Module['FS_createPath']('/lib/python3.6/site-packages', 'dateutil', true, true);
Module['FS_createPath']('/lib/python3.6/site-packages/dateutil', 'zoneinfo', true, true);
Module['FS_createPath']('/lib/python3.6/site-packages/dateutil', 'tz', true, true);
Module['FS_createPath']('/lib/python3.6/site-packages/dateutil', 'parser', true, true);
function DataRequest(start, end, crunched, audio) {
this.start = start;
this.end = end;
this.crunched = crunched;
this.audio = audio;
}
DataRequest.prototype = {
requests: {},
open: function(mode, name) {
this.name = name;
this.requests[name] = this;
Module['addRunDependency']('fp ' + this.name);
},
send: function() {},
onload: function() {
var byteArray = this.byteArray.subarray(this.start, this.end);
this.finish(byteArray);
},
finish: function(byteArray) {
var that = this;
Module['FS_createDataFile'](this.name, null, byteArray, true, true, true); // canOwn this data in the filesystem, it is a slide into the heap that will never change
Module['removeRunDependency']('fp ' + that.name);
this.requests[this.name] = null;
}
};
var files = metadata.files;
for (var i = 0; i < files.length; ++i) {
new DataRequest(files[i].start, files[i].end, files[i].crunched, files[i].audio).open('GET', files[i].filename);
}
function processPackageData(arrayBuffer) {
Module.finishedDataFileDownloads++;
assert(arrayBuffer, 'Loading data file failed.');
assert(arrayBuffer instanceof ArrayBuffer, 'bad input to processPackageData');
var byteArray = new Uint8Array(arrayBuffer);
var curr;
// copy the entire loaded file into a spot in the heap. Files will refer to slices in that. They cannot be freed though
// (we may be allocating before malloc is ready, during startup).
if (Module['SPLIT_MEMORY']) Module.printErr('warning: you should run the file packager with --no-heap-copy when SPLIT_MEMORY is used, otherwise copying into the heap may fail due to the splitting');
var ptr = Module['getMemory'](byteArray.length);
Module['HEAPU8'].set(byteArray, ptr);
DataRequest.prototype.byteArray = Module['HEAPU8'].subarray(ptr, ptr+byteArray.length);
var files = metadata.files;
for (var i = 0; i < files.length; ++i) {
DataRequest.prototype.requests[files[i].filename].onload();
}
Module['removeRunDependency']('datafile_build/dateutil.data');
};
Module['addRunDependency']('datafile_build/dateutil.data');
if (!Module.preloadResults) Module.preloadResults = {};
Module.preloadResults[PACKAGE_NAME] = {fromCache: false};
if (fetched) {
processPackageData(fetched);
fetched = null;
} else {
fetchedCallback = processPackageData;
}
}
if (Module['calledRun']) {
runWithFS();
} else {
if (!Module['preRun']) Module['preRun'] = [];
Module["preRun"].push(runWithFS); // FS is not initialized yet, wait for it
}
}
loadPackage({"files": [{"audio": 0, "start": 0, "crunched": 0, "end": 116, "filename": "/lib/python3.6/site-packages/dateutil/_version.py"}, {"audio": 0, "start": 116, "crunched": 0, "end": 64983, "filename": "/lib/python3.6/site-packages/dateutil/rrule.py"}, {"audio": 0, "start": 64983, "crunched": 0, "end": 89476, "filename": "/lib/python3.6/site-packages/dateutil/relativedelta.py"}, {"audio": 0, "start": 89476, "crunched": 0, "end": 91317, "filename": "/lib/python3.6/site-packages/dateutil/utils.py"}, {"audio": 0, "start": 91317, "crunched": 0, "end": 91376, "filename": "/lib/python3.6/site-packages/dateutil/tzwin.py"}, {"audio": 0, "start": 91376, "crunched": 0, "end": 92308, "filename": "/lib/python3.6/site-packages/dateutil/_common.py"}, {"audio": 0, "start": 92308, "crunched": 0, "end": 94992, "filename": "/lib/python3.6/site-packages/dateutil/easter.py"}, {"audio": 0, "start": 94992, "crunched": 0, "end": 95214, "filename": "/lib/python3.6/site-packages/dateutil/__init__.py"}, {"audio": 0, "start": 95214, "crunched": 0, "end": 96933, "filename": "/lib/python3.6/site-packages/dateutil/zoneinfo/rebuild.py"}, {"audio": 0, "start": 96933, "crunched": 0, "end": 236013, "filename": "/lib/python3.6/site-packages/dateutil/zoneinfo/dateutil-zoneinfo.tar.gz"}, {"audio": 0, "start": 236013, "crunched": 0, "end": 241902, "filename": "/lib/python3.6/site-packages/dateutil/zoneinfo/__init__.py"}, {"audio": 0, "start": 241902, "crunched": 0, "end": 253220, "filename": "/lib/python3.6/site-packages/dateutil/tz/win.py"}, {"audio": 0, "start": 253220, "crunched": 0, "end": 309600, "filename": "/lib/python3.6/site-packages/dateutil/tz/tz.py"}, {"audio": 0, "start": 309600, "crunched": 0, "end": 311034, "filename": "/lib/python3.6/site-packages/dateutil/tz/_factories.py"}, {"audio": 0, "start": 311034, "crunched": 0, "end": 323926, "filename": "/lib/python3.6/site-packages/dateutil/tz/_common.py"}, {"audio": 0, "start": 323926, "crunched": 0, "end": 324429, "filename": "/lib/python3.6/site-packages/dateutil/tz/__init__.py"}, {"audio": 0, "start": 324429, "crunched": 0, "end": 380187, "filename": "/lib/python3.6/site-packages/dateutil/parser/_parser.py"}, {"audio": 0, "start": 380187, "crunched": 0, "end": 393032, "filename": "/lib/python3.6/site-packages/dateutil/parser/isoparser.py"}, {"audio": 0, "start": 393032, "crunched": 0, "end": 394759, "filename": "/lib/python3.6/site-packages/dateutil/parser/__init__.py"}], "remote_package_size": 394759, "package_uuid": "315da47b-6ab5-4ee1-9c56-1c74dbf3d986"});
})();
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="File" module="OFS.Image"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>__name__</string> </key>
<value> <string>dateutil.js</string> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>application/javascript</string> </value>
</item>
<item>
<key> <string>precondition</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="Folder" module="OFS.Folder"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_objects</string> </key>
<value>
<tuple/>
</value>
</item>
<item>
<key> <string>id</string> </key>
<value> <string>iodide.master.fonts</string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="File" module="OFS.Image"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>__name__</string> </key>
<value> <string>opensans.ttf</string> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>application/octet-stream</string> </value>
</item>
<item>
<key> <string>precondition</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="File" module="OFS.Image"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>__name__</string> </key>
<value> <string>opensans.woff</string> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>application/font-woff</string> </value>
</item>
<item>
<key> <string>precondition</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="File" module="OFS.Image"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>__name__</string> </key>
<value> <string>opensans.woff2</string> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>application/octet-stream</string> </value>
</item>
<item>
<key> <string>precondition</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="File" module="OFS.Image"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>__name__</string> </key>
<value> <string>opensansbold.ttf</string> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>application/octet-stream</string> </value>
</item>
<item>
<key> <string>precondition</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="File" module="OFS.Image"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>__name__</string> </key>
<value> <string>opensansbold.woff</string> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>application/font-woff</string> </value>
</item>
<item>
<key> <string>precondition</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="File" module="OFS.Image"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>__name__</string> </key>
<value> <string>opensansbold.woff2</string> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>application/octet-stream</string> </value>
</item>
<item>
<key> <string>precondition</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="File" module="OFS.Image"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>__name__</string> </key>
<value> <string>opensansextrabold.woff2</string> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>application/octet-stream</string> </value>
</item>
<item>
<key> <string>precondition</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="File" module="OFS.Image"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>__name__</string> </key>
<value> <string>opensansitalic.woff2</string> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>application/octet-stream</string> </value>
</item>
<item>
<key> <string>precondition</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="File" module="OFS.Image"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>__name__</string> </key>
<value> <string>kiwisolver.data</string> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>application/octet-stream</string> </value>
</item>
<item>
<key> <string>precondition</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
var Module = typeof pyodide !== 'undefined' ? pyodide : {};
if (!Module.expectedDataFileDownloads) {
Module.expectedDataFileDownloads = 0;
Module.finishedDataFileDownloads = 0;
}
Module.expectedDataFileDownloads++;
(function() {
var loadPackage = function(metadata) {
var PACKAGE_PATH;
if (typeof window === 'object') {
PACKAGE_PATH = window['encodeURIComponent'](window.location.pathname.toString().substring(0, window.location.pathname.toString().lastIndexOf('/')) + '/');
} else if (typeof location !== 'undefined') {
// worker
PACKAGE_PATH = encodeURIComponent(location.pathname.toString().substring(0, location.pathname.toString().lastIndexOf('/')) + '/');
} else {
throw 'using preloaded data can only be done on a web page or in a web worker';
}
var PACKAGE_NAME = '/home/nexedir/pyodide/packages/kiwisolver/build/kiwisolver.data';
var REMOTE_PACKAGE_BASE = 'kiwisolver.data';
if (typeof Module['locateFilePackage'] === 'function' && !Module['locateFile']) {
Module['locateFile'] = Module['locateFilePackage'];
err('warning: you defined Module.locateFilePackage, that has been renamed to Module.locateFile (using your locateFilePackage for now)');
}
var REMOTE_PACKAGE_NAME = Module['locateFile'] ? Module['locateFile'](REMOTE_PACKAGE_BASE, '') : REMOTE_PACKAGE_BASE;
var REMOTE_PACKAGE_SIZE = metadata.remote_package_size;
var PACKAGE_UUID = metadata.package_uuid;
function fetchRemotePackage(packageName, packageSize, callback, errback) {
var xhr = new XMLHttpRequest();
xhr.open('GET', packageName, true);
xhr.responseType = 'arraybuffer';
xhr.onprogress = function(event) {
var url = packageName;
var size = packageSize;
if (event.total) size = event.total;
if (event.loaded) {
if (!xhr.addedTotal) {
xhr.addedTotal = true;
if (!Module.dataFileDownloads) Module.dataFileDownloads = {};
Module.dataFileDownloads[url] = {
loaded: event.loaded,
total: size
};
} else {
Module.dataFileDownloads[url].loaded = event.loaded;
}
var total = 0;
var loaded = 0;
var num = 0;
for (var download in Module.dataFileDownloads) {
var data = Module.dataFileDownloads[download];
total += data.total;
loaded += data.loaded;
num++;
}
total = Math.ceil(total * Module.expectedDataFileDownloads/num);
if (Module['setStatus']) Module['setStatus']('Downloading data... (' + loaded + '/' + total + ')');
} else if (!Module.dataFileDownloads) {
if (Module['setStatus']) Module['setStatus']('Downloading data...');
}
};
xhr.onerror = function(event) {
throw new Error("NetworkError for: " + packageName);
}
xhr.onload = function(event) {
if (xhr.status == 200 || xhr.status == 304 || xhr.status == 206 || (xhr.status == 0 && xhr.response)) { // file URLs can return 0
var packageData = xhr.response;
callback(packageData);
} else {
throw new Error(xhr.statusText + " : " + xhr.responseURL);
}
};
xhr.send(null);
};
function handleError(error) {
console.error('package error:', error);
};
var fetchedCallback = null;
var fetched = Module['getPreloadedPackage'] ? Module['getPreloadedPackage'](REMOTE_PACKAGE_NAME, REMOTE_PACKAGE_SIZE) : null;
if (!fetched) fetchRemotePackage(REMOTE_PACKAGE_NAME, REMOTE_PACKAGE_SIZE, function(data) {
if (fetchedCallback) {
fetchedCallback(data);
fetchedCallback = null;
} else {
fetched = data;
}
}, handleError);
function runWithFS() {
function assert(check, msg) {
if (!check) throw msg + new Error().stack;
}
Module['FS_createPath']('/', 'lib', true, true);
Module['FS_createPath']('/lib', 'python3.6', true, true);
Module['FS_createPath']('/lib/python3.6', 'site-packages', true, true);
function DataRequest(start, end, audio) {
this.start = start;
this.end = end;
this.audio = audio;
}
DataRequest.prototype = {
requests: {},
open: function(mode, name) {
this.name = name;
this.requests[name] = this;
Module['addRunDependency']('fp ' + this.name);
},
send: function() {},
onload: function() {
var byteArray = this.byteArray.subarray(this.start, this.end);
this.finish(byteArray);
},
finish: function(byteArray) {
var that = this;
Module['FS_createPreloadedFile'](this.name, null, byteArray, true, true, function() {
Module['removeRunDependency']('fp ' + that.name);
}, function() {
if (that.audio) {
Module['removeRunDependency']('fp ' + that.name); // workaround for chromium bug 124926 (still no audio with this, but at least we don't hang)
} else {
err('Preloading file ' + that.name + ' failed');
}
}, false, true); // canOwn this data in the filesystem, it is a slide into the heap that will never change
this.requests[this.name] = null;
}
};
var files = metadata.files;
for (var i = 0; i < files.length; ++i) {
new DataRequest(files[i].start, files[i].end, files[i].audio).open('GET', files[i].filename);
}
function processPackageData(arrayBuffer) {
Module.finishedDataFileDownloads++;
assert(arrayBuffer, 'Loading data file failed.');
assert(arrayBuffer instanceof ArrayBuffer, 'bad input to processPackageData');
var byteArray = new Uint8Array(arrayBuffer);
var curr;
// copy the entire loaded file into a spot in the heap. Files will refer to slices in that. They cannot be freed though
// (we may be allocating before malloc is ready, during startup).
if (Module['SPLIT_MEMORY']) err('warning: you should run the file packager with --no-heap-copy when SPLIT_MEMORY is used, otherwise copying into the heap may fail due to the splitting');
var ptr = Module['getMemory'](byteArray.length);
Module['HEAPU8'].set(byteArray, ptr);
DataRequest.prototype.byteArray = Module['HEAPU8'].subarray(ptr, ptr+byteArray.length);
var files = metadata.files;
for (var i = 0; i < files.length; ++i) {
DataRequest.prototype.requests[files[i].filename].onload();
}
Module['removeRunDependency']('datafile_/home/nexedir/pyodide/packages/kiwisolver/build/kiwisolver.data');
};
Module['addRunDependency']('datafile_/home/nexedir/pyodide/packages/kiwisolver/build/kiwisolver.data');
if (!Module.preloadResults) Module.preloadResults = {};
Module.preloadResults[PACKAGE_NAME] = {fromCache: false};
if (fetched) {
processPackageData(fetched);
fetched = null;
} else {
fetchedCallback = processPackageData;
}
}
if (Module['calledRun']) {
runWithFS();
} else {
if (!Module['preRun']) Module['preRun'] = [];
Module["preRun"].push(runWithFS); // FS is not initialized yet, wait for it
}
}
loadPackage({"files": [{"start": 0, "audio": 0, "end": 144087, "filename": "/lib/python3.6/site-packages/kiwisolver.so"}], "remote_package_size": 144087, "package_uuid": "72925eb5-5e3f-4498-a2c1-1dadecf8c0f2"});
})();
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="File" module="OFS.Image"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>__name__</string> </key>
<value> <string>kiwisolver.js</string> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>application/javascript</string> </value>
</item>
<item>
<key> <string>precondition</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
This source diff could not be displayed because it is too large. You can view the blob instead.
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="File" module="OFS.Image"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>__name__</string> </key>
<value> <string>matplotlib.data</string> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>application/octet-stream</string> </value>
</item>
<item>
<key> <string>precondition</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
var Module = typeof pyodide !== 'undefined' ? pyodide : {};
if (!Module.expectedDataFileDownloads) {
Module.expectedDataFileDownloads = 0;
Module.finishedDataFileDownloads = 0;
}
Module.expectedDataFileDownloads++;
(function() {
var loadPackage = function(metadata) {
var PACKAGE_PATH;
if (typeof window === 'object') {
PACKAGE_PATH = window['encodeURIComponent'](window.location.pathname.toString().substring(0, window.location.pathname.toString().lastIndexOf('/')) + '/');
} else if (typeof location !== 'undefined') {
// worker
PACKAGE_PATH = encodeURIComponent(location.pathname.toString().substring(0, location.pathname.toString().lastIndexOf('/')) + '/');
} else {
throw 'using preloaded data can only be done on a web page or in a web worker';
}
var PACKAGE_NAME = '/home/nexedir/pyodide/packages/matplotlib/build/matplotlib.data';
var REMOTE_PACKAGE_BASE = 'matplotlib.data';
if (typeof Module['locateFilePackage'] === 'function' && !Module['locateFile']) {
Module['locateFile'] = Module['locateFilePackage'];
err('warning: you defined Module.locateFilePackage, that has been renamed to Module.locateFile (using your locateFilePackage for now)');
}
var REMOTE_PACKAGE_NAME = Module['locateFile'] ? Module['locateFile'](REMOTE_PACKAGE_BASE, '') : REMOTE_PACKAGE_BASE;
var REMOTE_PACKAGE_SIZE = metadata.remote_package_size;
var PACKAGE_UUID = metadata.package_uuid;
function fetchRemotePackage(packageName, packageSize, callback, errback) {
var xhr = new XMLHttpRequest();
xhr.open('GET', packageName, true);
xhr.responseType = 'arraybuffer';
xhr.onprogress = function(event) {
var url = packageName;
var size = packageSize;
if (event.total) size = event.total;
if (event.loaded) {
if (!xhr.addedTotal) {
xhr.addedTotal = true;
if (!Module.dataFileDownloads) Module.dataFileDownloads = {};
Module.dataFileDownloads[url] = {
loaded: event.loaded,
total: size
};
} else {
Module.dataFileDownloads[url].loaded = event.loaded;
}
var total = 0;
var loaded = 0;
var num = 0;
for (var download in Module.dataFileDownloads) {
var data = Module.dataFileDownloads[download];
total += data.total;
loaded += data.loaded;
num++;
}
total = Math.ceil(total * Module.expectedDataFileDownloads/num);
if (Module['setStatus']) Module['setStatus']('Downloading data... (' + loaded + '/' + total + ')');
} else if (!Module.dataFileDownloads) {
if (Module['setStatus']) Module['setStatus']('Downloading data...');
}
};
xhr.onerror = function(event) {
throw new Error("NetworkError for: " + packageName);
}
xhr.onload = function(event) {
if (xhr.status == 200 || xhr.status == 304 || xhr.status == 206 || (xhr.status == 0 && xhr.response)) { // file URLs can return 0
var packageData = xhr.response;
callback(packageData);
} else {
throw new Error(xhr.statusText + " : " + xhr.responseURL);
}
};
xhr.send(null);
};
function handleError(error) {
console.error('package error:', error);
};
var fetchedCallback = null;
var fetched = Module['getPreloadedPackage'] ? Module['getPreloadedPackage'](REMOTE_PACKAGE_NAME, REMOTE_PACKAGE_SIZE) : null;
if (!fetched) fetchRemotePackage(REMOTE_PACKAGE_NAME, REMOTE_PACKAGE_SIZE, function(data) {
if (fetchedCallback) {
fetchedCallback(data);
fetchedCallback = null;
} else {
fetched = data;
}
}, handleError);
function runWithFS() {
function assert(check, msg) {
if (!check) throw msg + new Error().stack;
}
Module['FS_createPath']('/', 'lib', true, true);
Module['FS_createPath']('/lib', 'python3.6', true, true);
Module['FS_createPath']('/lib/python3.6', 'site-packages', true, true);
Module['FS_createPath']('/lib/python3.6/site-packages', 'mpl_toolkits', true, true);
Module['FS_createPath']('/lib/python3.6/site-packages/mpl_toolkits', 'axes_grid', true, true);
Module['FS_createPath']('/lib/python3.6/site-packages/mpl_toolkits', 'mplot3d', true, true);
Module['FS_createPath']('/lib/python3.6/site-packages/mpl_toolkits', 'axes_grid1', true, true);
Module['FS_createPath']('/lib/python3.6/site-packages/mpl_toolkits', 'axisartist', true, true);
Module['FS_createPath']('/lib/python3.6/site-packages', 'matplotlib', true, true);
Module['FS_createPath']('/lib/python3.6/site-packages/matplotlib', 'axes', true, true);
Module['FS_createPath']('/lib/python3.6/site-packages/matplotlib', 'projections', true, true);
Module['FS_createPath']('/lib/python3.6/site-packages/matplotlib', 'backends', true, true);
Module['FS_createPath']('/lib/python3.6/site-packages/matplotlib', 'sphinxext', true, true);
Module['FS_createPath']('/lib/python3.6/site-packages/matplotlib', 'compat', true, true);
Module['FS_createPath']('/lib/python3.6/site-packages/matplotlib', 'style', true, true);
Module['FS_createPath']('/lib/python3.6/site-packages/matplotlib', 'tri', true, true);
Module['FS_createPath']('/lib/python3.6/site-packages/matplotlib', 'cbook', true, true);
Module['FS_createPath']('/lib/python3.6/site-packages/matplotlib', 'testing', true, true);
Module['FS_createPath']('/lib/python3.6/site-packages/matplotlib/testing', 'jpl_units', true, true);
Module['FS_createPath']('/lib/python3.6/site-packages/matplotlib/testing', '_nose', true, true);
Module['FS_createPath']('/lib/python3.6/site-packages/matplotlib/testing/_nose', 'plugins', true, true);
Module['FS_createPath']('/lib/python3.6/site-packages/matplotlib', 'mpl-data', true, true);
Module['FS_createPath']('/lib/python3.6/site-packages/matplotlib/mpl-data', 'stylelib', true, true);
Module['FS_createPath']('/lib/python3.6/site-packages/matplotlib/mpl-data', 'sample_data', true, true);
Module['FS_createPath']('/lib/python3.6/site-packages/matplotlib/mpl-data/sample_data', 'axes_grid', true, true);
Module['FS_createPath']('/lib/python3.6/site-packages/matplotlib/mpl-data', 'images', true, true);
Module['FS_createPath']('/lib/python3.6/site-packages/matplotlib/mpl-data', 'fonts', true, true);
Module['FS_createPath']('/lib/python3.6/site-packages/matplotlib/mpl-data/fonts', 'afm', true, true);
Module['FS_createPath']('/lib/python3.6/site-packages/matplotlib/mpl-data/fonts', 'pdfcorefonts', true, true);
Module['FS_createPath']('/lib/python3.6/site-packages/matplotlib/mpl-data/fonts', 'ttf', true, true);
function DataRequest(start, end, audio) {
this.start = start;
this.end = end;
this.audio = audio;
}
DataRequest.prototype = {
requests: {},
open: function(mode, name) {
this.name = name;
this.requests[name] = this;
Module['addRunDependency']('fp ' + this.name);
},
send: function() {},
onload: function() {
var byteArray = this.byteArray.subarray(this.start, this.end);
this.finish(byteArray);
},
finish: function(byteArray) {
var that = this;
Module['FS_createPreloadedFile'](this.name, null, byteArray, true, true, function() {
Module['removeRunDependency']('fp ' + that.name);
}, function() {
if (that.audio) {
Module['removeRunDependency']('fp ' + that.name); // workaround for chromium bug 124926 (still no audio with this, but at least we don't hang)
} else {
err('Preloading file ' + that.name + ' failed');
}
}, false, true); // canOwn this data in the filesystem, it is a slide into the heap that will never change
this.requests[this.name] = null;
}
};
var files = metadata.files;
for (var i = 0; i < files.length; ++i) {
new DataRequest(files[i].start, files[i].end, files[i].audio).open('GET', files[i].filename);
}
function processPackageData(arrayBuffer) {
Module.finishedDataFileDownloads++;
assert(arrayBuffer, 'Loading data file failed.');
assert(arrayBuffer instanceof ArrayBuffer, 'bad input to processPackageData');
var byteArray = new Uint8Array(arrayBuffer);
var curr;
// copy the entire loaded file into a spot in the heap. Files will refer to slices in that. They cannot be freed though
// (we may be allocating before malloc is ready, during startup).
if (Module['SPLIT_MEMORY']) err('warning: you should run the file packager with --no-heap-copy when SPLIT_MEMORY is used, otherwise copying into the heap may fail due to the splitting');
var ptr = Module['getMemory'](byteArray.length);
Module['HEAPU8'].set(byteArray, ptr);
DataRequest.prototype.byteArray = Module['HEAPU8'].subarray(ptr, ptr+byteArray.length);
var files = metadata.files;
for (var i = 0; i < files.length; ++i) {
DataRequest.prototype.requests[files[i].filename].onload();
}
Module['removeRunDependency']('datafile_/home/nexedir/pyodide/packages/matplotlib/build/matplotlib.data');
};
Module['addRunDependency']('datafile_/home/nexedir/pyodide/packages/matplotlib/build/matplotlib.data');
if (!Module.preloadResults) Module.preloadResults = {};
Module.preloadResults[PACKAGE_NAME] = {fromCache: false};
if (fetched) {
processPackageData(fetched);
fetched = null;
} else {
fetchedCallback = processPackageData;
}
}
if (Module['calledRun']) {
runWithFS();
} else {
if (!Module['preRun']) Module['preRun'] = [];
Module["preRun"].push(runWithFS); // FS is not initialized yet, wait for it
}
}
loadPackage({"files": [{"start": 0, "audio": 0, "end": 90, "filename": "/lib/python3.6/site-packages/pylab.py"}, {"start": 90, "audio": 0, "end": 211, "filename": "/lib/python3.6/site-packages/mpl_toolkits/__init__.py"}, {"start": 211, "audio": 0, "end": 537, "filename": "/lib/python3.6/site-packages/mpl_toolkits/axes_grid/inset_locator.py"}, {"start": 537, "audio": 0, "end": 695, "filename": "/lib/python3.6/site-packages/mpl_toolkits/axes_grid/clip_path.py"}, {"start": 695, "audio": 0, "end": 856, "filename": "/lib/python3.6/site-packages/mpl_toolkits/axes_grid/angle_helper.py"}, {"start": 856, "audio": 0, "end": 1018, "filename": "/lib/python3.6/site-packages/mpl_toolkits/axes_grid/floating_axes.py"}, {"start": 1018, "audio": 0, "end": 1176, "filename": "/lib/python3.6/site-packages/mpl_toolkits/axes_grid/axislines.py"}, {"start": 1176, "audio": 0, "end": 1563, "filename": "/lib/python3.6/site-packages/mpl_toolkits/axes_grid/axes_rgb.py"}, {"start": 1563, "audio": 0, "end": 2225, "filename": "/lib/python3.6/site-packages/mpl_toolkits/axes_grid/__init__.py"}, {"start": 2225, "audio": 0, "end": 2626, "filename": "/lib/python3.6/site-packages/mpl_toolkits/axes_grid/anchored_artists.py"}, {"start": 2626, "audio": 0, "end": 2797, "filename": "/lib/python3.6/site-packages/mpl_toolkits/axes_grid/colorbar.py"}, {"start": 2797, "audio": 0, "end": 3739, "filename": "/lib/python3.6/site-packages/mpl_toolkits/axes_grid/axes_grid.py"}, {"start": 3739, "audio": 0, "end": 3899, "filename": "/lib/python3.6/site-packages/mpl_toolkits/axes_grid/grid_finder.py"}, {"start": 3899, "audio": 0, "end": 4059, "filename": "/lib/python3.6/site-packages/mpl_toolkits/axes_grid/axis_artist.py"}, {"start": 4059, "audio": 0, "end": 4616, "filename": "/lib/python3.6/site-packages/mpl_toolkits/axes_grid/parasite_axes.py"}, {"start": 4616, "audio": 0, "end": 4788, "filename": "/lib/python3.6/site-packages/mpl_toolkits/axes_grid/grid_helper_curvelinear.py"}, {"start": 4788, "audio": 0, "end": 4946, "filename": "/lib/python3.6/site-packages/mpl_toolkits/axes_grid/axes_size.py"}, {"start": 4946, "audio": 0, "end": 5109, "filename": "/lib/python3.6/site-packages/mpl_toolkits/axes_grid/axisline_style.py"}, {"start": 5109, "audio": 0, "end": 5466, "filename": "/lib/python3.6/site-packages/mpl_toolkits/axes_grid/axes_divider.py"}, {"start": 5466, "audio": 0, "end": 110897, "filename": "/lib/python3.6/site-packages/mpl_toolkits/mplot3d/axes3d.py"}, {"start": 110897, "audio": 0, "end": 111046, "filename": "/lib/python3.6/site-packages/mpl_toolkits/mplot3d/__init__.py"}, {"start": 111046, "audio": 0, "end": 115806, "filename": "/lib/python3.6/site-packages/mpl_toolkits/mplot3d/proj3d.py"}, {"start": 115806, "audio": 0, "end": 140500, "filename": "/lib/python3.6/site-packages/mpl_toolkits/mplot3d/art3d.py"}, {"start": 140500, "audio": 0, "end": 159204, "filename": "/lib/python3.6/site-packages/mpl_toolkits/mplot3d/axis3d.py"}, {"start": 159204, "audio": 0, "end": 177918, "filename": "/lib/python3.6/site-packages/mpl_toolkits/axes_grid1/inset_locator.py"}, {"start": 177918, "audio": 0, "end": 182821, "filename": "/lib/python3.6/site-packages/mpl_toolkits/axes_grid1/mpl_axes.py"}, {"start": 182821, "audio": 0, "end": 189794, "filename": "/lib/python3.6/site-packages/mpl_toolkits/axes_grid1/axes_rgb.py"}, {"start": 189794, "audio": 0, "end": 190188, "filename": "/lib/python3.6/site-packages/mpl_toolkits/axes_grid1/__init__.py"}, {"start": 190188, "audio": 0, "end": 203402, "filename": "/lib/python3.6/site-packages/mpl_toolkits/axes_grid1/anchored_artists.py"}, {"start": 203402, "audio": 0, "end": 231231, "filename": "/lib/python3.6/site-packages/mpl_toolkits/axes_grid1/colorbar.py"}, {"start": 231231, "audio": 0, "end": 258929, "filename": "/lib/python3.6/site-packages/mpl_toolkits/axes_grid1/axes_grid.py"}, {"start": 258929, "audio": 0, "end": 274360, "filename": "/lib/python3.6/site-packages/mpl_toolkits/axes_grid1/parasite_axes.py"}, {"start": 274360, "audio": 0, "end": 283393, "filename": "/lib/python3.6/site-packages/mpl_toolkits/axes_grid1/axes_size.py"}, {"start": 283393, "audio": 0, "end": 314832, "filename": "/lib/python3.6/site-packages/mpl_toolkits/axes_grid1/axes_divider.py"}, {"start": 314832, "audio": 0, "end": 318922, "filename": "/lib/python3.6/site-packages/mpl_toolkits/axisartist/clip_path.py"}, {"start": 318922, "audio": 0, "end": 331962, "filename": "/lib/python3.6/site-packages/mpl_toolkits/axisartist/angle_helper.py"}, {"start": 331962, "audio": 0, "end": 349459, "filename": "/lib/python3.6/site-packages/mpl_toolkits/axisartist/floating_axes.py"}, {"start": 349459, "audio": 0, "end": 374215, "filename": "/lib/python3.6/site-packages/mpl_toolkits/axisartist/axislines.py"}, {"start": 374215, "audio": 0, "end": 374504, "filename": "/lib/python3.6/site-packages/mpl_toolkits/axisartist/axes_rgb.py"}, {"start": 374504, "audio": 0, "end": 375374, "filename": "/lib/python3.6/site-packages/mpl_toolkits/axisartist/__init__.py"}, {"start": 375374, "audio": 0, "end": 376316, "filename": "/lib/python3.6/site-packages/mpl_toolkits/axisartist/axes_grid.py"}, {"start": 376316, "audio": 0, "end": 388179, "filename": "/lib/python3.6/site-packages/mpl_toolkits/axisartist/grid_finder.py"}, {"start": 388179, "audio": 0, "end": 436773, "filename": "/lib/python3.6/site-packages/mpl_toolkits/axisartist/axis_artist.py"}, {"start": 436773, "audio": 0, "end": 437330, "filename": "/lib/python3.6/site-packages/mpl_toolkits/axisartist/parasite_axes.py"}, {"start": 437330, "audio": 0, "end": 453239, "filename": "/lib/python3.6/site-packages/mpl_toolkits/axisartist/grid_helper_curvelinear.py"}, {"start": 453239, "audio": 0, "end": 458524, "filename": "/lib/python3.6/site-packages/mpl_toolkits/axisartist/axisline_style.py"}, {"start": 458524, "audio": 0, "end": 458885, "filename": "/lib/python3.6/site-packages/mpl_toolkits/axisartist/axes_divider.py"}, {"start": 458885, "audio": 0, "end": 465685, "filename": "/lib/python3.6/site-packages/matplotlib/fontconfig_pattern.py"}, {"start": 465685, "audio": 0, "end": 469680, "filename": "/lib/python3.6/site-packages/matplotlib/docstring.py"}, {"start": 469680, "audio": 0, "end": 484026, "filename": "/lib/python3.6/site-packages/matplotlib/patheffects.py"}, {"start": 484026, "audio": 0, "end": 488225, "filename": "/lib/python3.6/site-packages/matplotlib/stackplot.py"}, {"start": 488225, "audio": 0, "end": 501352, "filename": "/lib/python3.6/site-packages/matplotlib/backend_managers.py"}, {"start": 501352, "audio": 0, "end": 507900, "filename": "/lib/python3.6/site-packages/matplotlib/category.py"}, {"start": 507900, "audio": 0, "end": 513461, "filename": "/lib/python3.6/site-packages/matplotlib/container.py"}, {"start": 513461, "audio": 0, "end": 599707, "filename": "/lib/python3.6/site-packages/matplotlib/ticker.py"}, {"start": 599707, "audio": 0, "end": 600178, "filename": "/lib/python3.6/site-packages/matplotlib/_version.py"}, {"start": 600178, "audio": 0, "end": 631488, "filename": "/lib/python3.6/site-packages/matplotlib/markers.py"}, {"start": 631488, "audio": 0, "end": 635144, "filename": "/lib/python3.6/site-packages/matplotlib/_pylab_helpers.py"}, {"start": 635144, "audio": 0, "end": 653267, "filename": "/lib/python3.6/site-packages/matplotlib/gridspec.py"}, {"start": 653267, "audio": 0, "end": 926899, "filename": "/lib/python3.6/site-packages/matplotlib/_contour.so"}, {"start": 926899, "audio": 0, "end": 999970, "filename": "/lib/python3.6/site-packages/matplotlib/colors.py"}, {"start": 999970, "audio": 0, "end": 1055111, "filename": "/lib/python3.6/site-packages/matplotlib/image.py"}, {"start": 1055111, "audio": 0, "end": 1373141, "filename": "/lib/python3.6/site-packages/matplotlib/_tri.so"}, {"start": 1373141, "audio": 0, "end": 1431008, "filename": "/lib/python3.6/site-packages/matplotlib/rcsetup.py"}, {"start": 1431008, "audio": 0, "end": 1498463, "filename": "/lib/python3.6/site-packages/matplotlib/contour.py"}, {"start": 1498463, "audio": 0, "end": 1510936, "filename": "/lib/python3.6/site-packages/matplotlib/type1font.py"}, {"start": 1510936, "audio": 0, "end": 1573353, "filename": "/lib/python3.6/site-packages/matplotlib/_cm_listed.py"}, {"start": 1573353, "audio": 0, "end": 1594496, "filename": "/lib/python3.6/site-packages/matplotlib/spines.py"}, {"start": 1594496, "audio": 0, "end": 1728988, "filename": "/lib/python3.6/site-packages/matplotlib/pyplot.py"}, {"start": 1728988, "audio": 0, "end": 1882107, "filename": "/lib/python3.6/site-packages/matplotlib/patches.py"}, {"start": 1882107, "audio": 0, "end": 1983554, "filename": "/lib/python3.6/site-packages/matplotlib/transforms.py"}, {"start": 1983554, "audio": 0, "end": 2009236, "filename": "/lib/python3.6/site-packages/matplotlib/legend_handler.py"}, {"start": 2009236, "audio": 0, "end": 2057766, "filename": "/lib/python3.6/site-packages/matplotlib/font_manager.py"}, {"start": 2057766, "audio": 0, "end": 2180255, "filename": "/lib/python3.6/site-packages/matplotlib/mathtext.py"}, {"start": 2180255, "audio": 0, "end": 2244785, "filename": "/lib/python3.6/site-packages/matplotlib/__init__.py"}, {"start": 2244785, "audio": 0, "end": 2263170, "filename": "/lib/python3.6/site-packages/matplotlib/texmanager.py"}, {"start": 2263170, "audio": 0, "end": 2329773, "filename": "/lib/python3.6/site-packages/matplotlib/_cm.py"}, {"start": 2329773, "audio": 0, "end": 2419278, "filename": "/lib/python3.6/site-packages/matplotlib/_mathtext_data.py"}, {"start": 2419278, "audio": 0, "end": 2509382, "filename": "/lib/python3.6/site-packages/matplotlib/axis.py"}, {"start": 2509382, "audio": 0, "end": 2634301, "filename": "/lib/python3.6/site-packages/matplotlib/mlab.py"}, {"start": 2634301, "audio": 0, "end": 2650499, "filename": "/lib/python3.6/site-packages/matplotlib/afm.py"}, {"start": 2650499, "audio": 0, "end": 2656656, "filename": "/lib/python3.6/site-packages/matplotlib/_animation_data.py"}, {"start": 2656656, "audio": 0, "end": 2669562, "filename": "/lib/python3.6/site-packages/matplotlib/tight_layout.py"}, {"start": 2669562, "audio": 0, "end": 2972349, "filename": "/lib/python3.6/site-packages/matplotlib/ttconv.so"}, {"start": 2972349, "audio": 0, "end": 3039775, "filename": "/lib/python3.6/site-packages/matplotlib/animation.py"}, {"start": 3039775, "audio": 0, "end": 3074671, "filename": "/lib/python3.6/site-packages/matplotlib/_color_data.py"}, {"start": 3074671, "audio": 0, "end": 3164982, "filename": "/lib/python3.6/site-packages/matplotlib/figure.py"}, {"start": 3164982, "audio": 0, "end": 3217776, "filename": "/lib/python3.6/site-packages/matplotlib/colorbar.py"}, {"start": 3217776, "audio": 0, "end": 3332005, "filename": "/lib/python3.6/site-packages/matplotlib/backend_bases.py"}, {"start": 3332005, "audio": 0, "end": 3354091, "filename": "/lib/python3.6/site-packages/matplotlib/streamplot.py"}, {"start": 3354091, "audio": 0, "end": 3409629, "filename": "/lib/python3.6/site-packages/matplotlib/offsetbox.py"}, {"start": 3409629, "audio": 0, "end": 3426304, "filename": "/lib/python3.6/site-packages/matplotlib/textpath.py"}, {"start": 3426304, "audio": 0, "end": 3436793, "filename": "/lib/python3.6/site-packages/matplotlib/pylab.py"}, {"start": 3436793, "audio": 0, "end": 3443546, "filename": "/lib/python3.6/site-packages/matplotlib/units.py"}, {"start": 3443546, "audio": 0, "end": 3455204, "filename": "/lib/python3.6/site-packages/matplotlib/blocking_input.py"}, {"start": 3455204, "audio": 0, "end": 3516713, "filename": "/lib/python3.6/site-packages/matplotlib/dates.py"}, {"start": 3516713, "audio": 0, "end": 3554072, "filename": "/lib/python3.6/site-packages/matplotlib/fontList.json"}, {"start": 3554072, "audio": 0, "end": 3569527, "filename": "/lib/python3.6/site-packages/matplotlib/bezier.py"}, {"start": 3569527, "audio": 0, "end": 3576667, "filename": "/lib/python3.6/site-packages/matplotlib/hatch.py"}, {"start": 3576667, "audio": 0, "end": 3656732, "filename": "/lib/python3.6/site-packages/matplotlib/text.py"}, {"start": 3656732, "audio": 0, "end": 3724898, "filename": "/lib/python3.6/site-packages/matplotlib/collections.py"}, {"start": 3724898, "audio": 0, "end": 3758542, "filename": "/lib/python3.6/site-packages/matplotlib/backend_tools.py"}, {"start": 3758542, "audio": 0, "end": 3811233, "filename": "/lib/python3.6/site-packages/matplotlib/legend.py"}, {"start": 3811233, "audio": 0, "end": 3848799, "filename": "/lib/python3.6/site-packages/matplotlib/path.py"}, {"start": 3848799, "audio": 0, "end": 3942491, "filename": "/lib/python3.6/site-packages/matplotlib/widgets.py"}, {"start": 3942491, "audio": 0, "end": 3980697, "filename": "/lib/python3.6/site-packages/matplotlib/dviread.py"}, {"start": 3980697, "audio": 0, "end": 3983282, "filename": "/lib/python3.6/site-packages/matplotlib/tight_bbox.py"}, {"start": 3983282, "audio": 0, "end": 4244146, "filename": "/lib/python3.6/site-packages/matplotlib/_png.so"}, {"start": 4244146, "audio": 0, "end": 4775803, "filename": "/lib/python3.6/site-packages/matplotlib/_image.so"}, {"start": 4775803, "audio": 0, "end": 4800377, "filename": "/lib/python3.6/site-packages/matplotlib/_layoutbox.py"}, {"start": 4800377, "audio": 0, "end": 4813031, "filename": "/lib/python3.6/site-packages/matplotlib/cm.py"}, {"start": 4813031, "audio": 0, "end": 4859114, "filename": "/lib/python3.6/site-packages/matplotlib/quiver.py"}, {"start": 4859114, "audio": 0, "end": 4878404, "filename": "/lib/python3.6/site-packages/matplotlib/scale.py"}, {"start": 4878404, "audio": 0, "end": 4906790, "filename": "/lib/python3.6/site-packages/matplotlib/_constrained_layout.py"}, {"start": 4906790, "audio": 0, "end": 5196733, "filename": "/lib/python3.6/site-packages/matplotlib/ft2font.so"}, {"start": 5196733, "audio": 0, "end": 5585409, "filename": "/lib/python3.6/site-packages/matplotlib/_path.so"}, {"start": 5585409, "audio": 0, "end": 5607576, "filename": "/lib/python3.6/site-packages/matplotlib/table.py"}, {"start": 5607576, "audio": 0, "end": 6245213, "filename": "/lib/python3.6/site-packages/matplotlib/_qhull.so"}, {"start": 6245213, "audio": 0, "end": 6295878, "filename": "/lib/python3.6/site-packages/matplotlib/lines.py"}, {"start": 6295878, "audio": 0, "end": 6334702, "filename": "/lib/python3.6/site-packages/matplotlib/sankey.py"}, {"start": 6334702, "audio": 0, "end": 6381382, "filename": "/lib/python3.6/site-packages/matplotlib/artist.py"}, {"start": 6381382, "audio": 0, "end": 6391717, "filename": "/lib/python3.6/site-packages/matplotlib/axes/_subplots.py"}, {"start": 6391717, "audio": 0, "end": 6391873, "filename": "/lib/python3.6/site-packages/matplotlib/axes/__init__.py"}, {"start": 6391873, "audio": 0, "end": 6693215, "filename": "/lib/python3.6/site-packages/matplotlib/axes/_axes.py"}, {"start": 6693215, "audio": 0, "end": 6842011, "filename": "/lib/python3.6/site-packages/matplotlib/axes/_base.py"}, {"start": 6842011, "audio": 0, "end": 6845163, "filename": "/lib/python3.6/site-packages/matplotlib/projections/__init__.py"}, {"start": 6845163, "audio": 0, "end": 6900261, "filename": "/lib/python3.6/site-packages/matplotlib/projections/polar.py"}, {"start": 6900261, "audio": 0, "end": 6919293, "filename": "/lib/python3.6/site-packages/matplotlib/projections/geo.py"}, {"start": 6919293, "audio": 0, "end": 6925153, "filename": "/lib/python3.6/site-packages/matplotlib/backends/backend_mixed.py"}, {"start": 6925153, "audio": 0, "end": 6994677, "filename": "/lib/python3.6/site-packages/matplotlib/backends/backend_wx.py"}, {"start": 6994677, "audio": 0, "end": 7012687, "filename": "/lib/python3.6/site-packages/matplotlib/backends/backend_cairo.py"}, {"start": 7012687, "audio": 0, "end": 7013185, "filename": "/lib/python3.6/site-packages/matplotlib/backends/backend_qt4.py"}, {"start": 7013185, "audio": 0, "end": 7014519, "filename": "/lib/python3.6/site-packages/matplotlib/backends/tkagg.py"}, {"start": 7014519, "audio": 0, "end": 7076445, "filename": "/lib/python3.6/site-packages/matplotlib/backends/backend_ps.py"}, {"start": 7076445, "audio": 0, "end": 7079741, "filename": "/lib/python3.6/site-packages/matplotlib/backends/backend_gtk3agg.py"}, {"start": 7079741, "audio": 0, "end": 7120880, "filename": "/lib/python3.6/site-packages/matplotlib/backends/backend_qt5.py"}, {"start": 7120880, "audio": 0, "end": 7130409, "filename": "/lib/python3.6/site-packages/matplotlib/backends/backend_template.py"}, {"start": 7130409, "audio": 0, "end": 7132967, "filename": "/lib/python3.6/site-packages/matplotlib/backends/backend_gtkcairo.py"}, {"start": 7132967, "audio": 0, "end": 7153999, "filename": "/lib/python3.6/site-packages/matplotlib/backends/backend_agg.py"}, {"start": 7153999, "audio": 0, "end": 7162838, "filename": "/lib/python3.6/site-packages/matplotlib/backends/backend_nbagg.py"}, {"start": 7162838, "audio": 0, "end": 7164578, "filename": "/lib/python3.6/site-packages/matplotlib/backends/backend_gtk3cairo.py"}, {"start": 7164578, "audio": 0, "end": 7167864, "filename": "/lib/python3.6/site-packages/matplotlib/backends/__init__.py"}, {"start": 7167864, "audio": 0, "end": 7168662, "filename": "/lib/python3.6/site-packages/matplotlib/backends/windowing.py"}, {"start": 7168662, "audio": 0, "end": 7207984, "filename": "/lib/python3.6/site-packages/matplotlib/backends/_backend_tk.py"}, {"start": 7207984, "audio": 0, "end": 7305760, "filename": "/lib/python3.6/site-packages/matplotlib/backends/backend_pdf.py"}, {"start": 7305760, "audio": 0, "end": 7351263, "filename": "/lib/python3.6/site-packages/matplotlib/backends/backend_svg.py"}, {"start": 7351263, "audio": 0, "end": 7355589, "filename": "/lib/python3.6/site-packages/matplotlib/backends/backend_wxagg.py"}, {"start": 7355589, "audio": 0, "end": 7357554, "filename": "/lib/python3.6/site-packages/matplotlib/backends/backend_wxcairo.py"}, {"start": 7357554, "audio": 0, "end": 7358936, "filename": "/lib/python3.6/site-packages/matplotlib/backends/backend_tkcairo.py"}, {"start": 7358936, "audio": 0, "end": 7376175, "filename": "/lib/python3.6/site-packages/matplotlib/backends/wasm_backend.py"}, {"start": 7376175, "audio": 0, "end": 7603329, "filename": "/lib/python3.6/site-packages/matplotlib/backends/_tkagg.so"}, {"start": 7603329, "audio": 0, "end": 7603661, "filename": "/lib/python3.6/site-packages/matplotlib/backends/backend_qt4agg.py"}, {"start": 7603661, "audio": 0, "end": 7609412, "filename": "/lib/python3.6/site-packages/matplotlib/backends/wx_compat.py"}, {"start": 7609412, "audio": 0, "end": 7612769, "filename": "/lib/python3.6/site-packages/matplotlib/backends/backend_qt5agg.py"}, {"start": 7612769, "audio": 0, "end": 7613726, "filename": "/lib/python3.6/site-packages/matplotlib/backends/backend_tkagg.py"}, {"start": 7613726, "audio": 0, "end": 7650845, "filename": "/lib/python3.6/site-packages/matplotlib/backends/backend_pgf.py"}, {"start": 7650845, "audio": 0, "end": 7662410, "filename": "/lib/python3.6/site-packages/matplotlib/backends/backend_webagg.py"}, {"start": 7662410, "audio": 0, "end": 7669231, "filename": "/lib/python3.6/site-packages/matplotlib/backends/backend_macosx.py"}, {"start": 7669231, "audio": 0, "end": 7671169, "filename": "/lib/python3.6/site-packages/matplotlib/backends/backend_qt5cairo.py"}, {"start": 7671169, "audio": 0, "end": 7671294, "filename": "/lib/python3.6/site-packages/matplotlib/backends/backend_qt4cairo.py"}, {"start": 7671294, "audio": 0, "end": 7672323, "filename": "/lib/python3.6/site-packages/matplotlib/backends/_gtk3_compat.py"}, {"start": 7672323, "audio": 0, "end": 7690281, "filename": "/lib/python3.6/site-packages/matplotlib/backends/backend_webagg_core.py"}, {"start": 7690281, "audio": 0, "end": 7693634, "filename": "/lib/python3.6/site-packages/matplotlib/backends/backend_gtkagg.py"}, {"start": 7693634, "audio": 0, "end": 7709427, "filename": "/lib/python3.6/site-packages/matplotlib/backends/backend_gdk.py"}, {"start": 7709427, "audio": 0, "end": 7741139, "filename": "/lib/python3.6/site-packages/matplotlib/backends/backend_gtk3.py"}, {"start": 7741139, "audio": 0, "end": 8307871, "filename": "/lib/python3.6/site-packages/matplotlib/backends/_backend_agg.so"}, {"start": 8307871, "audio": 0, "end": 8344115, "filename": "/lib/python3.6/site-packages/matplotlib/backends/backend_gtk.py"}, {"start": 8344115, "audio": 0, "end": 8352046, "filename": "/lib/python3.6/site-packages/matplotlib/backends/qt_compat.py"}, {"start": 8352046, "audio": 0, "end": 8354286, "filename": "/lib/python3.6/site-packages/matplotlib/sphinxext/only_directives.py"}, {"start": 8354286, "audio": 0, "end": 8354395, "filename": "/lib/python3.6/site-packages/matplotlib/sphinxext/__init__.py"}, {"start": 8354395, "audio": 0, "end": 8358217, "filename": "/lib/python3.6/site-packages/matplotlib/sphinxext/mathmpl.py"}, {"start": 8358217, "audio": 0, "end": 8386645, "filename": "/lib/python3.6/site-packages/matplotlib/sphinxext/plot_directive.py"}, {"start": 8386645, "audio": 0, "end": 8386645, "filename": "/lib/python3.6/site-packages/matplotlib/compat/__init__.py"}, {"start": 8386645, "audio": 0, "end": 8388462, "filename": "/lib/python3.6/site-packages/matplotlib/compat/subprocess.py"}, {"start": 8388462, "audio": 0, "end": 8388569, "filename": "/lib/python3.6/site-packages/matplotlib/style/__init__.py"}, {"start": 8388569, "audio": 0, "end": 8396613, "filename": "/lib/python3.6/site-packages/matplotlib/style/core.py"}, {"start": 8396613, "audio": 0, "end": 8399656, "filename": "/lib/python3.6/site-packages/matplotlib/tri/triplot.py"}, {"start": 8399656, "audio": 0, "end": 8405385, "filename": "/lib/python3.6/site-packages/matplotlib/tri/tripcolor.py"}, {"start": 8405385, "audio": 0, "end": 8405762, "filename": "/lib/python3.6/site-packages/matplotlib/tri/__init__.py"}, {"start": 8405762, "audio": 0, "end": 8415402, "filename": "/lib/python3.6/site-packages/matplotlib/tri/tricontour.py"}, {"start": 8415402, "audio": 0, "end": 8423619, "filename": "/lib/python3.6/site-packages/matplotlib/tri/triangulation.py"}, {"start": 8423619, "audio": 0, "end": 8436247, "filename": "/lib/python3.6/site-packages/matplotlib/tri/tritools.py"}, {"start": 8436247, "audio": 0, "end": 8502090, "filename": "/lib/python3.6/site-packages/matplotlib/tri/triinterpolate.py"}, {"start": 8502090, "audio": 0, "end": 8516356, "filename": "/lib/python3.6/site-packages/matplotlib/tri/trirefine.py"}, {"start": 8516356, "audio": 0, "end": 8519982, "filename": "/lib/python3.6/site-packages/matplotlib/tri/trifinder.py"}, {"start": 8519982, "audio": 0, "end": 8607483, "filename": "/lib/python3.6/site-packages/matplotlib/cbook/__init__.py"}, {"start": 8607483, "audio": 0, "end": 8612701, "filename": "/lib/python3.6/site-packages/matplotlib/cbook/_backports.py"}, {"start": 8612701, "audio": 0, "end": 8619769, "filename": "/lib/python3.6/site-packages/matplotlib/cbook/deprecation.py"}, {"start": 8619769, "audio": 0, "end": 8622991, "filename": "/lib/python3.6/site-packages/matplotlib/testing/conftest.py"}, {"start": 8622991, "audio": 0, "end": 8623682, "filename": "/lib/python3.6/site-packages/matplotlib/testing/noseclasses.py"}, {"start": 8623682, "audio": 0, "end": 8628549, "filename": "/lib/python3.6/site-packages/matplotlib/testing/disable_internet.py"}, {"start": 8628549, "audio": 0, "end": 8630326, "filename": "/lib/python3.6/site-packages/matplotlib/testing/__init__.py"}, {"start": 8630326, "audio": 0, "end": 8648234, "filename": "/lib/python3.6/site-packages/matplotlib/testing/compare.py"}, {"start": 8648234, "audio": 0, "end": 8648372, "filename": "/lib/python3.6/site-packages/matplotlib/testing/exceptions.py"}, {"start": 8648372, "audio": 0, "end": 8669691, "filename": "/lib/python3.6/site-packages/matplotlib/testing/decorators.py"}, {"start": 8669691, "audio": 0, "end": 8674615, "filename": "/lib/python3.6/site-packages/matplotlib/testing/determinism.py"}, {"start": 8674615, "audio": 0, "end": 8680152, "filename": "/lib/python3.6/site-packages/matplotlib/testing/jpl_units/UnitDblConverter.py"}, {"start": 8680152, "audio": 0, "end": 8686870, "filename": "/lib/python3.6/site-packages/matplotlib/testing/jpl_units/Duration.py"}, {"start": 8686870, "audio": 0, "end": 8692362, "filename": "/lib/python3.6/site-packages/matplotlib/testing/jpl_units/EpochConverter.py"}, {"start": 8692362, "audio": 0, "end": 8695565, "filename": "/lib/python3.6/site-packages/matplotlib/testing/jpl_units/__init__.py"}, {"start": 8695565, "audio": 0, "end": 8704973, "filename": "/lib/python3.6/site-packages/matplotlib/testing/jpl_units/UnitDbl.py"}, {"start": 8704973, "audio": 0, "end": 8710266, "filename": "/lib/python3.6/site-packages/matplotlib/testing/jpl_units/StrConverter.py"}, {"start": 8710266, "audio": 0, "end": 8717517, "filename": "/lib/python3.6/site-packages/matplotlib/testing/jpl_units/Epoch.py"}, {"start": 8717517, "audio": 0, "end": 8719038, "filename": "/lib/python3.6/site-packages/matplotlib/testing/jpl_units/UnitDblFormatter.py"}, {"start": 8719038, "audio": 0, "end": 8721357, "filename": "/lib/python3.6/site-packages/matplotlib/testing/_nose/__init__.py"}, {"start": 8721357, "audio": 0, "end": 8721608, "filename": "/lib/python3.6/site-packages/matplotlib/testing/_nose/exceptions.py"}, {"start": 8721608, "audio": 0, "end": 8722810, "filename": "/lib/python3.6/site-packages/matplotlib/testing/_nose/decorators.py"}, {"start": 8722810, "audio": 0, "end": 8723588, "filename": "/lib/python3.6/site-packages/matplotlib/testing/_nose/plugins/performgc.py"}, {"start": 8723588, "audio": 0, "end": 8723588, "filename": "/lib/python3.6/site-packages/matplotlib/testing/_nose/plugins/__init__.py"}, {"start": 8723588, "audio": 0, "end": 8725579, "filename": "/lib/python3.6/site-packages/matplotlib/testing/_nose/plugins/knownfailure.py"}, {"start": 8725579, "audio": 0, "end": 8758635, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/matplotlibrc"}, {"start": 8758635, "audio": 0, "end": 8758777, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/stylelib/seaborn-deep.mplstyle"}, {"start": 8758777, "audio": 0, "end": 8759170, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/stylelib/seaborn-paper.mplstyle"}, {"start": 8759170, "audio": 0, "end": 8784839, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/stylelib/classic.mplstyle"}, {"start": 8784839, "audio": 0, "end": 8785796, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/stylelib/ggplot.mplstyle"}, {"start": 8785796, "audio": 0, "end": 8786508, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/stylelib/bmh.mplstyle"}, {"start": 8786508, "audio": 0, "end": 8786651, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/stylelib/seaborn-muted.mplstyle"}, {"start": 8786651, "audio": 0, "end": 8787177, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/stylelib/grayscale.mplstyle"}, {"start": 8787177, "audio": 0, "end": 8787367, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/stylelib/tableau-colorblind10.mplstyle"}, {"start": 8787367, "audio": 0, "end": 8788622, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/stylelib/Solarize_Light2.mplstyle"}, {"start": 8788622, "audio": 0, "end": 8789099, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/stylelib/dark_background.mplstyle"}, {"start": 8789099, "audio": 0, "end": 8790229, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/stylelib/seaborn.mplstyle"}, {"start": 8790229, "audio": 0, "end": 8790894, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/stylelib/seaborn-ticks.mplstyle"}, {"start": 8790894, "audio": 0, "end": 8791558, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/stylelib/seaborn-whitegrid.mplstyle"}, {"start": 8791558, "audio": 0, "end": 8791702, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/stylelib/seaborn-bright.mplstyle"}, {"start": 8791702, "audio": 0, "end": 8792369, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/stylelib/seaborn-dark.mplstyle"}, {"start": 8792369, "audio": 0, "end": 8793201, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/stylelib/fivethirtyeight.mplstyle"}, {"start": 8793201, "audio": 0, "end": 8793349, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/stylelib/seaborn-colorblind.mplstyle"}, {"start": 8793349, "audio": 0, "end": 8793491, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/stylelib/seaborn-dark-palette.mplstyle"}, {"start": 8793491, "audio": 0, "end": 8794161, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/stylelib/seaborn-darkgrid.mplstyle"}, {"start": 8794161, "audio": 0, "end": 8794449, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/stylelib/fast.mplstyle"}, {"start": 8794449, "audio": 0, "end": 8794593, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/stylelib/seaborn-pastel.mplstyle"}, {"start": 8794593, "audio": 0, "end": 8794975, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/stylelib/seaborn-notebook.mplstyle"}, {"start": 8794975, "audio": 0, "end": 8820589, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/stylelib/_classic_test.mplstyle"}, {"start": 8820589, "audio": 0, "end": 8820992, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/stylelib/seaborn-talk.mplstyle"}, {"start": 8820992, "audio": 0, "end": 8821395, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/stylelib/seaborn-poster.mplstyle"}, {"start": 8821395, "audio": 0, "end": 8822060, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/stylelib/seaborn-white.mplstyle"}, {"start": 8822060, "audio": 0, "end": 8928288, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/sample_data/None_vs_nearest-pdf.png"}, {"start": 8928288, "audio": 0, "end": 8961829, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/sample_data/logo2.png"}, {"start": 8961829, "audio": 0, "end": 8961957, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/sample_data/README.txt"}, {"start": 8961957, "audio": 0, "end": 8964143, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/sample_data/embedding_in_wx3.xrc"}, {"start": 8964143, "audio": 0, "end": 9272456, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/sample_data/ada.png"}, {"start": 9272456, "audio": 0, "end": 9273115, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/sample_data/demodata.csv"}, {"start": 9273115, "audio": 0, "end": 9447176, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/sample_data/jacksboro_fault_dem.npz"}, {"start": 9447176, "audio": 0, "end": 9703335, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/sample_data/ct.raw.gz"}, {"start": 9703335, "audio": 0, "end": 9726180, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/sample_data/goog.npz"}, {"start": 9726180, "audio": 0, "end": 9833683, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/sample_data/aapl.npz"}, {"start": 9833683, "audio": 0, "end": 9839364, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/sample_data/percent_bachelors_degrees_women_usa.csv"}, {"start": 9839364, "audio": 0, "end": 9872593, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/sample_data/s1045.ima.gz"}, {"start": 9872593, "audio": 0, "end": 9920593, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/sample_data/membrane.dat"}, {"start": 9920593, "audio": 0, "end": 10548873, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/sample_data/grace_hopper.png"}, {"start": 10548873, "audio": 0, "end": 10574473, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/sample_data/eeg.dat"}, {"start": 10574473, "audio": 0, "end": 10635779, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/sample_data/grace_hopper.jpg"}, {"start": 10635779, "audio": 0, "end": 10635911, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/sample_data/data_x_x2_x3.csv"}, {"start": 10635911, "audio": 0, "end": 10639122, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/sample_data/msft.csv"}, {"start": 10639122, "audio": 0, "end": 10652756, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/sample_data/Minduka_Present_Blue_Pack.png"}, {"start": 10652756, "audio": 0, "end": 10654636, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/sample_data/axes_grid/bivariate_normal.npy"}, {"start": 10654636, "audio": 0, "end": 10655435, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/images/back_large.gif"}, {"start": 10655435, "audio": 0, "end": 10678287, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/images/matplotlib.pdf"}, {"start": 10678287, "audio": 0, "end": 10678768, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/images/move.png"}, {"start": 10678768, "audio": 0, "end": 10680224, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/images/zoom_to_rect_large.gif"}, {"start": 10680224, "audio": 0, "end": 10681010, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/images/forward_large.gif"}, {"start": 10681010, "audio": 0, "end": 10681468, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/images/filesave.png"}, {"start": 10681468, "audio": 0, "end": 10683182, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/images/subplots.pdf"}, {"start": 10683182, "audio": 0, "end": 10684750, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/images/qt4_editor_options.pdf"}, {"start": 10684750, "audio": 0, "end": 10685130, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/images/back.png"}, {"start": 10685130, "audio": 0, "end": 10747217, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/images/matplotlib.svg"}, {"start": 10747217, "audio": 0, "end": 10747883, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/images/home.gif"}, {"start": 10747883, "audio": 0, "end": 10749774, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/images/home.svg"}, {"start": 10749774, "audio": 0, "end": 10751272, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/images/filesave_large.gif"}, {"start": 10751272, "audio": 0, "end": 10751934, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/images/subplots_large.png"}, {"start": 10751934, "audio": 0, "end": 10753564, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/images/forward.pdf"}, {"start": 10753564, "audio": 0, "end": 10754831, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/images/hand.gif"}, {"start": 10754831, "audio": 0, "end": 10755551, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/images/filesave_large.png"}, {"start": 10755551, "audio": 0, "end": 10756170, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/images/qt4_editor_options_large.png"}, {"start": 10756170, "audio": 0, "end": 10756861, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/images/subplots.gif"}, {"start": 10756861, "audio": 0, "end": 10758211, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/images/subplots_large.gif"}, {"start": 10758211, "audio": 0, "end": 10759190, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/images/hand.png"}, {"start": 10759190, "audio": 0, "end": 10760799, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/images/zoom_to_rect.pdf"}, {"start": 10760799, "audio": 0, "end": 10762043, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/images/qt4_editor_options.svg"}, {"start": 10762043, "audio": 0, "end": 10763666, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/images/back.pdf"}, {"start": 10763666, "audio": 0, "end": 10764362, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/images/zoom_to_rect.gif"}, {"start": 10764362, "audio": 0, "end": 10765313, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/images/move_large.gif"}, {"start": 10765313, "audio": 0, "end": 10767050, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/images/home.pdf"}, {"start": 10767050, "audio": 0, "end": 10768562, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/images/back.svg"}, {"start": 10768562, "audio": 0, "end": 10770429, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/images/move.pdf"}, {"start": 10770429, "audio": 0, "end": 10771851, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/images/home_large.gif"}, {"start": 10771851, "audio": 0, "end": 10772618, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/images/move_large.png"}, {"start": 10772618, "audio": 0, "end": 10774748, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/images/subplots.svg"}, {"start": 10774748, "audio": 0, "end": 10775471, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/images/filesave.gif"}, {"start": 10775471, "audio": 0, "end": 10775851, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/images/qt4_editor_options.png"}, {"start": 10775851, "audio": 0, "end": 10776530, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/images/move.gif"}, {"start": 10776530, "audio": 0, "end": 10779618, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/images/matplotlib_large.png"}, {"start": 10779618, "audio": 0, "end": 10781647, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/images/filesave.svg"}, {"start": 10781647, "audio": 0, "end": 10782177, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/images/zoom_to_rect.png"}, {"start": 10782177, "audio": 0, "end": 10783193, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/images/zoom_to_rect_large.png"}, {"start": 10783193, "audio": 0, "end": 10783661, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/images/home.png"}, {"start": 10783661, "audio": 0, "end": 10784281, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/images/back_large.png"}, {"start": 10784281, "audio": 0, "end": 10788453, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/images/hand.pdf"}, {"start": 10788453, "audio": 0, "end": 10790194, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/images/matplotlib.ppm"}, {"start": 10790194, "audio": 0, "end": 10791725, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/images/forward.svg"}, {"start": 10791725, "audio": 0, "end": 10792318, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/images/forward_large.png"}, {"start": 10792318, "audio": 0, "end": 10792908, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/images/forward.gif"}, {"start": 10792908, "audio": 0, "end": 10797796, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/images/hand.svg"}, {"start": 10797796, "audio": 0, "end": 10799275, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/images/zoom_to_rect.svg"}, {"start": 10799275, "audio": 0, "end": 10800065, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/images/home_large.png"}, {"start": 10800065, "audio": 0, "end": 10801799, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/images/filesave.pdf"}, {"start": 10801799, "audio": 0, "end": 10802772, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/images/hand_large.gif"}, {"start": 10802772, "audio": 0, "end": 10803129, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/images/forward.png"}, {"start": 10803129, "audio": 0, "end": 10804412, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/images/matplotlib.png"}, {"start": 10804412, "audio": 0, "end": 10805020, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/images/back.gif"}, {"start": 10805020, "audio": 0, "end": 10807529, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/images/move.svg"}, {"start": 10807529, "audio": 0, "end": 10807974, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/images/subplots.png"}, {"start": 10807974, "audio": 0, "end": 10829865, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/fonts/afm/putri8a.afm"}, {"start": 10829865, "audio": 0, "end": 10838160, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/fonts/afm/cmsy10.afm"}, {"start": 10838160, "audio": 0, "end": 10850230, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/fonts/afm/cmex10.afm"}, {"start": 10850230, "audio": 0, "end": 10856731, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/fonts/afm/cmtt10.afm"}, {"start": 10856731, "audio": 0, "end": 10874608, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/fonts/afm/phvro8an.afm"}, {"start": 10874608, "audio": 0, "end": 10890418, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/fonts/afm/pplbi8a.afm"}, {"start": 10890418, "audio": 0, "end": 10905840, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/fonts/afm/pcrbo8a.afm"}, {"start": 10905840, "audio": 0, "end": 10923621, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/fonts/afm/phvr8an.afm"}, {"start": 10923621, "audio": 0, "end": 10933265, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/fonts/afm/psyr.afm"}, {"start": 10933265, "audio": 0, "end": 10951333, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/fonts/afm/ptmri8a.afm"}, {"start": 10951333, "audio": 0, "end": 10968588, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/fonts/afm/pagdo8a.afm"}, {"start": 10968588, "audio": 0, "end": 10990736, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/fonts/afm/putr8a.afm"}, {"start": 10990736, "audio": 0, "end": 11012667, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/fonts/afm/putbi8a.afm"}, {"start": 11012667, "audio": 0, "end": 11029753, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/fonts/afm/phvb8an.afm"}, {"start": 11029753, "audio": 0, "end": 11046936, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/fonts/afm/pagd8a.afm"}, {"start": 11046936, "audio": 0, "end": 11062275, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/fonts/afm/pcrr8a.afm"}, {"start": 11062275, "audio": 0, "end": 11079505, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/fonts/afm/phvbo8a.afm"}, {"start": 11079505, "audio": 0, "end": 11096660, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/fonts/afm/phvb8a.afm"}, {"start": 11096660, "audio": 0, "end": 11112412, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/fonts/afm/pplr8a.afm"}, {"start": 11112412, "audio": 0, "end": 11129332, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/fonts/afm/pncri8a.afm"}, {"start": 11129332, "audio": 0, "end": 11139748, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/fonts/afm/cmmi10.afm"}, {"start": 11139748, "audio": 0, "end": 11154929, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/fonts/afm/pbkli8a.afm"}, {"start": 11154929, "audio": 0, "end": 11170281, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/fonts/afm/pcrb8a.afm"}, {"start": 11170281, "audio": 0, "end": 11185908, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/fonts/afm/phvl8a.afm"}, {"start": 11185908, "audio": 0, "end": 11201186, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/fonts/afm/pbkdi8a.afm"}, {"start": 11201186, "audio": 0, "end": 11222718, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/fonts/afm/putb8a.afm"}, {"start": 11222718, "audio": 0, "end": 11240637, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/fonts/afm/phvro8a.afm"}, {"start": 11240637, "audio": 0, "end": 11250738, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/fonts/afm/cmr10.afm"}, {"start": 11250738, "audio": 0, "end": 11268721, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/fonts/afm/ptmb8a.afm"}, {"start": 11268721, "audio": 0, "end": 11283721, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/fonts/afm/pbkl8a.afm"}, {"start": 11283721, "audio": 0, "end": 11301791, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/fonts/afm/ptmbi8a.afm"}, {"start": 11301791, "audio": 0, "end": 11318041, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/fonts/afm/pzcmi8a.afm"}, {"start": 11318041, "audio": 0, "end": 11335282, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/fonts/afm/pagk8a.afm"}, {"start": 11335282, "audio": 0, "end": 11351947, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/fonts/afm/pncr8a.afm"}, {"start": 11351947, "audio": 0, "end": 11369889, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/fonts/afm/ptmr8a.afm"}, {"start": 11369889, "audio": 0, "end": 11387084, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/fonts/afm/phvbo8an.afm"}, {"start": 11387084, "audio": 0, "end": 11402527, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/fonts/afm/pcrro8a.afm"}, {"start": 11402527, "audio": 0, "end": 11420366, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/fonts/afm/phvr8a.afm"}, {"start": 11420366, "audio": 0, "end": 11437712, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/fonts/afm/pagko8a.afm"}, {"start": 11437712, "audio": 0, "end": 11452869, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/fonts/afm/pbkd8a.afm"}, {"start": 11452869, "audio": 0, "end": 11462336, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/fonts/afm/pzdr.afm"}, {"start": 11462336, "audio": 0, "end": 11478364, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/fonts/afm/pncb8a.afm"}, {"start": 11478364, "audio": 0, "end": 11494097, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/fonts/afm/pplri8a.afm"}, {"start": 11494097, "audio": 0, "end": 11509759, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/fonts/afm/pplb8a.afm"}, {"start": 11509759, "audio": 0, "end": 11525488, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/fonts/afm/phvlo8a.afm"}, {"start": 11525488, "audio": 0, "end": 11542984, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/fonts/afm/pncbi8a.afm"}, {"start": 11542984, "audio": 0, "end": 11558425, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/fonts/pdfcorefonts/Courier-Oblique.afm"}, {"start": 11558425, "audio": 0, "end": 11573824, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/fonts/pdfcorefonts/Courier-BoldOblique.afm"}, {"start": 11573824, "audio": 0, "end": 11648116, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/fonts/pdfcorefonts/Helvetica.afm"}, {"start": 11648116, "audio": 0, "end": 11707758, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/fonts/pdfcorefonts/Times-BoldItalic.afm"}, {"start": 11707758, "audio": 0, "end": 11782150, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/fonts/pdfcorefonts/Helvetica-Oblique.afm"}, {"start": 11782150, "audio": 0, "end": 11797485, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/fonts/pdfcorefonts/Courier.afm"}, {"start": 11797485, "audio": 0, "end": 11807225, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/fonts/pdfcorefonts/Symbol.afm"}, {"start": 11807225, "audio": 0, "end": 11816752, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/fonts/pdfcorefonts/ZapfDingbats.afm"}, {"start": 11816752, "audio": 0, "end": 11883080, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/fonts/pdfcorefonts/Times-Italic.afm"}, {"start": 11883080, "audio": 0, "end": 11952445, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/fonts/pdfcorefonts/Helvetica-BoldOblique.afm"}, {"start": 11952445, "audio": 0, "end": 12012905, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/fonts/pdfcorefonts/Times-Roman.afm"}, {"start": 12012905, "audio": 0, "end": 12082174, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/fonts/pdfcorefonts/Helvetica-Bold.afm"}, {"start": 12082174, "audio": 0, "end": 12146425, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/fonts/pdfcorefonts/Times-Bold.afm"}, {"start": 12146425, "audio": 0, "end": 12161758, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/fonts/pdfcorefonts/Courier-Bold.afm"}, {"start": 12161758, "audio": 0, "end": 12162586, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/fonts/pdfcorefonts/readme.txt"}, {"start": 12162586, "audio": 0, "end": 12494122, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/fonts/ttf/DejaVuSansMono-Bold.ttf"}, {"start": 12494122, "audio": 0, "end": 12510094, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/fonts/ttf/STIXSizFourSymReg.ttf"}, {"start": 12510094, "audio": 0, "end": 12535806, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/fonts/ttf/DejaVuSansDisplay.ttf"}, {"start": 12535806, "audio": 0, "end": 13177526, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/fonts/ttf/DejaVuSans-BoldOblique.ttf"}, {"start": 13177526, "audio": 0, "end": 13428998, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/fonts/ttf/DejaVuSansMono-Oblique.ttf"}, {"start": 13428998, "audio": 0, "end": 13604038, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/fonts/ttf/STIXGeneralItalic.ttf"}, {"start": 13604038, "audio": 0, "end": 13616594, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/fonts/ttf/STIXSizOneSymBol.ttf"}, {"start": 13616594, "audio": 0, "end": 13632298, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/fonts/ttf/STIXSizTwoSymReg.ttf"}, {"start": 13632298, "audio": 0, "end": 13661694, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/fonts/ttf/cmsy10.ttf"}, {"start": 13661694, "audio": 0, "end": 13720802, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/fonts/ttf/STIXNonUni.ttf"}, {"start": 13720802, "audio": 0, "end": 13958162, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/fonts/ttf/STIXGeneralBol.ttf"}, {"start": 13958162, "audio": 0, "end": 14592002, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/fonts/ttf/DejaVuSans-Oblique.ttf"}, {"start": 14592002, "audio": 0, "end": 14932242, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/fonts/ttf/DejaVuSansMono.ttf"}, {"start": 14932242, "audio": 0, "end": 14953334, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/fonts/ttf/cmex10.ttf"}, {"start": 14953334, "audio": 0, "end": 14979014, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/fonts/ttf/cmb10.ttf"}, {"start": 14979014, "audio": 0, "end": 15324626, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/fonts/ttf/DejaVuSerif-Italic.ttf"}, {"start": 15324626, "audio": 0, "end": 16028754, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/fonts/ttf/DejaVuSans-Bold.ttf"}, {"start": 16028754, "audio": 0, "end": 16281870, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/fonts/ttf/DejaVuSansMono-BoldOblique.ttf"}, {"start": 16281870, "audio": 0, "end": 16328622, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/fonts/ttf/STIXNonUniIta.ttf"}, {"start": 16328622, "audio": 0, "end": 16340850, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/fonts/ttf/STIXSizFourSymBol.ttf"}, {"start": 16340850, "audio": 0, "end": 16355150, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/fonts/ttf/DejaVuSerifDisplay.ttf"}, {"start": 16355150, "audio": 0, "end": 16375526, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/fonts/ttf/cmss10.ttf"}, {"start": 16375526, "audio": 0, "end": 16416798, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/fonts/ttf/STIXNonUniBolIta.ttf"}, {"start": 16416798, "audio": 0, "end": 16444934, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/fonts/ttf/cmtt10.ttf"}, {"start": 16444934, "audio": 0, "end": 16450409, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/fonts/ttf/LICENSE_STIX"}, {"start": 16450409, "audio": 0, "end": 16462601, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/fonts/ttf/STIXSizThreeSymBol.ttf"}, {"start": 16462601, "audio": 0, "end": 16495161, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/fonts/ttf/cmmi10.ttf"}, {"start": 16495161, "audio": 0, "end": 16521509, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/fonts/ttf/cmr10.ttf"}, {"start": 16521509, "audio": 0, "end": 16552021, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/fonts/ttf/STIXNonUniBol.ttf"}, {"start": 16552021, "audio": 0, "end": 17308093, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/fonts/ttf/DejaVuSans.ttf"}, {"start": 17308093, "audio": 0, "end": 17756321, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/fonts/ttf/STIXGeneral.ttf"}, {"start": 17756321, "audio": 0, "end": 18103385, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/fonts/ttf/DejaVuSerif-BoldItalic.ttf"}, {"start": 18103385, "audio": 0, "end": 18284537, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/fonts/ttf/STIXGeneralBolIta.ttf"}, {"start": 18284537, "audio": 0, "end": 18664277, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/fonts/ttf/DejaVuSerif.ttf"}, {"start": 18664277, "audio": 0, "end": 18677933, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/fonts/ttf/STIXSizFiveSymReg.ttf"}, {"start": 18677933, "audio": 0, "end": 18697693, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/fonts/ttf/STIXSizOneSymReg.ttf"}, {"start": 18697693, "audio": 0, "end": 19053385, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/fonts/ttf/DejaVuSerif-Bold.ttf"}, {"start": 19053385, "audio": 0, "end": 19065501, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/fonts/ttf/STIXSizTwoSymBol.ttf"}, {"start": 19065501, "audio": 0, "end": 19081337, "filename": "/lib/python3.6/site-packages/matplotlib/mpl-data/fonts/ttf/STIXSizThreeSymReg.ttf"}], "remote_package_size": 19081337, "package_uuid": "d2375a9e-eb7b-4d86-97a7-855ffd199ec0"});
})();
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="File" module="OFS.Image"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>__name__</string> </key>
<value> <string>matplotlib.js</string> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>application/javascript</string> </value>
</item>
<item>
<key> <string>precondition</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
This source diff could not be displayed because it is too large. You can view the blob instead.
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="File" module="OFS.Image"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>__name__</string> </key>
<value> <string>numpy.data</string> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>application/octet-stream</string> </value>
</item>
<item>
<key> <string>precondition</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
var Module = typeof pyodide !== 'undefined' ? pyodide : {};
if (!Module.expectedDataFileDownloads) {
Module.expectedDataFileDownloads = 0;
Module.finishedDataFileDownloads = 0;
}
Module.expectedDataFileDownloads++;
(function() {
var loadPackage = function(metadata) {
var PACKAGE_PATH;
if (typeof window === 'object') {
PACKAGE_PATH = window['encodeURIComponent'](window.location.pathname.toString().substring(0, window.location.pathname.toString().lastIndexOf('/')) + '/');
} else if (typeof location !== 'undefined') {
// worker
PACKAGE_PATH = encodeURIComponent(location.pathname.toString().substring(0, location.pathname.toString().lastIndexOf('/')) + '/');
} else {
throw 'using preloaded data can only be done on a web page or in a web worker';
}
var PACKAGE_NAME = '/home/nexedir/pyodide/packages/numpy/build/numpy.data';
var REMOTE_PACKAGE_BASE = 'numpy.data';
if (typeof Module['locateFilePackage'] === 'function' && !Module['locateFile']) {
Module['locateFile'] = Module['locateFilePackage'];
err('warning: you defined Module.locateFilePackage, that has been renamed to Module.locateFile (using your locateFilePackage for now)');
}
var REMOTE_PACKAGE_NAME = Module['locateFile'] ? Module['locateFile'](REMOTE_PACKAGE_BASE, '') : REMOTE_PACKAGE_BASE;
var REMOTE_PACKAGE_SIZE = metadata.remote_package_size;
var PACKAGE_UUID = metadata.package_uuid;
function fetchRemotePackage(packageName, packageSize, callback, errback) {
var xhr = new XMLHttpRequest();
xhr.open('GET', packageName, true);
xhr.responseType = 'arraybuffer';
xhr.onprogress = function(event) {
var url = packageName;
var size = packageSize;
if (event.total) size = event.total;
if (event.loaded) {
if (!xhr.addedTotal) {
xhr.addedTotal = true;
if (!Module.dataFileDownloads) Module.dataFileDownloads = {};
Module.dataFileDownloads[url] = {
loaded: event.loaded,
total: size
};
} else {
Module.dataFileDownloads[url].loaded = event.loaded;
}
var total = 0;
var loaded = 0;
var num = 0;
for (var download in Module.dataFileDownloads) {
var data = Module.dataFileDownloads[download];
total += data.total;
loaded += data.loaded;
num++;
}
total = Math.ceil(total * Module.expectedDataFileDownloads/num);
if (Module['setStatus']) Module['setStatus']('Downloading data... (' + loaded + '/' + total + ')');
} else if (!Module.dataFileDownloads) {
if (Module['setStatus']) Module['setStatus']('Downloading data...');
}
};
xhr.onerror = function(event) {
throw new Error("NetworkError for: " + packageName);
}
xhr.onload = function(event) {
if (xhr.status == 200 || xhr.status == 304 || xhr.status == 206 || (xhr.status == 0 && xhr.response)) { // file URLs can return 0
var packageData = xhr.response;
callback(packageData);
} else {
throw new Error(xhr.statusText + " : " + xhr.responseURL);
}
};
xhr.send(null);
};
function handleError(error) {
console.error('package error:', error);
};
var fetchedCallback = null;
var fetched = Module['getPreloadedPackage'] ? Module['getPreloadedPackage'](REMOTE_PACKAGE_NAME, REMOTE_PACKAGE_SIZE) : null;
if (!fetched) fetchRemotePackage(REMOTE_PACKAGE_NAME, REMOTE_PACKAGE_SIZE, function(data) {
if (fetchedCallback) {
fetchedCallback(data);
fetchedCallback = null;
} else {
fetched = data;
}
}, handleError);
function runWithFS() {
function assert(check, msg) {
if (!check) throw msg + new Error().stack;
}
Module['FS_createPath']('/', 'lib', true, true);
Module['FS_createPath']('/lib', 'python3.6', true, true);
Module['FS_createPath']('/lib/python3.6', 'site-packages', true, true);
Module['FS_createPath']('/lib/python3.6/site-packages', 'numpy', true, true);
Module['FS_createPath']('/lib/python3.6/site-packages/numpy', 'f2py', true, true);
Module['FS_createPath']('/lib/python3.6/site-packages/numpy', 'polynomial', true, true);
Module['FS_createPath']('/lib/python3.6/site-packages/numpy', 'ma', true, true);
Module['FS_createPath']('/lib/python3.6/site-packages/numpy', 'compat', true, true);
Module['FS_createPath']('/lib/python3.6/site-packages/numpy', 'linalg', true, true);
Module['FS_createPath']('/lib/python3.6/site-packages/numpy', 'testing', true, true);
Module['FS_createPath']('/lib/python3.6/site-packages/numpy/testing', 'nose_tools', true, true);
Module['FS_createPath']('/lib/python3.6/site-packages/numpy', 'matrixlib', true, true);
Module['FS_createPath']('/lib/python3.6/site-packages/numpy', 'lib', true, true);
Module['FS_createPath']('/lib/python3.6/site-packages/numpy', 'fft', true, true);
Module['FS_createPath']('/lib/python3.6/site-packages/numpy', 'core', true, true);
Module['FS_createPath']('/lib/python3.6/site-packages/numpy', 'random', true, true);
Module['FS_createPath']('/lib/python3.6/site-packages/numpy', 'doc', true, true);
Module['FS_createPath']('/lib/python3.6/site-packages/numpy', 'distutils', true, true);
Module['FS_createPath']('/lib/python3.6/site-packages/numpy/distutils', 'command', true, true);
Module['FS_createPath']('/lib/python3.6/site-packages/numpy/distutils', 'fcompiler', true, true);
function DataRequest(start, end, audio) {
this.start = start;
this.end = end;
this.audio = audio;
}
DataRequest.prototype = {
requests: {},
open: function(mode, name) {
this.name = name;
this.requests[name] = this;
Module['addRunDependency']('fp ' + this.name);
},
send: function() {},
onload: function() {
var byteArray = this.byteArray.subarray(this.start, this.end);
this.finish(byteArray);
},
finish: function(byteArray) {
var that = this;
Module['FS_createPreloadedFile'](this.name, null, byteArray, true, true, function() {
Module['removeRunDependency']('fp ' + that.name);
}, function() {
if (that.audio) {
Module['removeRunDependency']('fp ' + that.name); // workaround for chromium bug 124926 (still no audio with this, but at least we don't hang)
} else {
err('Preloading file ' + that.name + ' failed');
}
}, false, true); // canOwn this data in the filesystem, it is a slide into the heap that will never change
this.requests[this.name] = null;
}
};
var files = metadata.files;
for (var i = 0; i < files.length; ++i) {
new DataRequest(files[i].start, files[i].end, files[i].audio).open('GET', files[i].filename);
}
function processPackageData(arrayBuffer) {
Module.finishedDataFileDownloads++;
assert(arrayBuffer, 'Loading data file failed.');
assert(arrayBuffer instanceof ArrayBuffer, 'bad input to processPackageData');
var byteArray = new Uint8Array(arrayBuffer);
var curr;
// copy the entire loaded file into a spot in the heap. Files will refer to slices in that. They cannot be freed though
// (we may be allocating before malloc is ready, during startup).
if (Module['SPLIT_MEMORY']) err('warning: you should run the file packager with --no-heap-copy when SPLIT_MEMORY is used, otherwise copying into the heap may fail due to the splitting');
var ptr = Module['getMemory'](byteArray.length);
Module['HEAPU8'].set(byteArray, ptr);
DataRequest.prototype.byteArray = Module['HEAPU8'].subarray(ptr, ptr+byteArray.length);
var files = metadata.files;
for (var i = 0; i < files.length; ++i) {
DataRequest.prototype.requests[files[i].filename].onload();
}
Module['removeRunDependency']('datafile_/home/nexedir/pyodide/packages/numpy/build/numpy.data');
};
Module['addRunDependency']('datafile_/home/nexedir/pyodide/packages/numpy/build/numpy.data');
if (!Module.preloadResults) Module.preloadResults = {};
Module.preloadResults[PACKAGE_NAME] = {fromCache: false};
if (fetched) {
processPackageData(fetched);
fetched = null;
} else {
fetchedCallback = processPackageData;
}
}
if (Module['calledRun']) {
runWithFS();
} else {
if (!Module['preRun']) Module['preRun'] = [];
Module["preRun"].push(runWithFS); // FS is not initialized yet, wait for it
}
}
loadPackage({"files": [{"start": 0, "audio": 0, "end": 331, "filename": "/lib/python3.6/site-packages/numpy/_distributor_init.py"}, {"start": 331, "audio": 0, "end": 15061, "filename": "/lib/python3.6/site-packages/numpy/ctypeslib.py"}, {"start": 15061, "audio": 0, "end": 16361, "filename": "/lib/python3.6/site-packages/numpy/__config__.py"}, {"start": 16361, "audio": 0, "end": 17918, "filename": "/lib/python3.6/site-packages/numpy/conftest.py"}, {"start": 17918, "audio": 0, "end": 24169, "filename": "/lib/python3.6/site-packages/numpy/__init__.py"}, {"start": 24169, "audio": 0, "end": 24463, "filename": "/lib/python3.6/site-packages/numpy/version.py"}, {"start": 24463, "audio": 0, "end": 34272, "filename": "/lib/python3.6/site-packages/numpy/matlib.py"}, {"start": 34272, "audio": 0, "end": 36136, "filename": "/lib/python3.6/site-packages/numpy/dual.py"}, {"start": 36136, "audio": 0, "end": 49370, "filename": "/lib/python3.6/site-packages/numpy/_import_tools.py"}, {"start": 49370, "audio": 0, "end": 50290, "filename": "/lib/python3.6/site-packages/numpy/setup.py"}, {"start": 50290, "audio": 0, "end": 52149, "filename": "/lib/python3.6/site-packages/numpy/_globals.py"}, {"start": 52149, "audio": 0, "end": 286896, "filename": "/lib/python3.6/site-packages/numpy/add_newdocs.py"}, {"start": 286896, "audio": 0, "end": 288923, "filename": "/lib/python3.6/site-packages/numpy/f2py/__init__.py"}, {"start": 288923, "audio": 0, "end": 292575, "filename": "/lib/python3.6/site-packages/numpy/f2py/use_rules.py"}, {"start": 292575, "audio": 0, "end": 294098, "filename": "/lib/python3.6/site-packages/numpy/f2py/f2py_testing.py"}, {"start": 294098, "audio": 0, "end": 316454, "filename": "/lib/python3.6/site-packages/numpy/f2py/cb_rules.py"}, {"start": 316454, "audio": 0, "end": 321749, "filename": "/lib/python3.6/site-packages/numpy/f2py/diagnose.py"}, {"start": 321749, "audio": 0, "end": 325674, "filename": "/lib/python3.6/site-packages/numpy/f2py/setup.py"}, {"start": 325674, "audio": 0, "end": 370787, "filename": "/lib/python3.6/site-packages/numpy/f2py/cfuncs.py"}, {"start": 370787, "audio": 0, "end": 370923, "filename": "/lib/python3.6/site-packages/numpy/f2py/info.py"}, {"start": 370923, "audio": 0, "end": 380147, "filename": "/lib/python3.6/site-packages/numpy/f2py/func2subr.py"}, {"start": 380147, "audio": 0, "end": 403055, "filename": "/lib/python3.6/site-packages/numpy/f2py/f2py2e.py"}, {"start": 403055, "audio": 0, "end": 424881, "filename": "/lib/python3.6/site-packages/numpy/f2py/auxfuncs.py"}, {"start": 424881, "audio": 0, "end": 456420, "filename": "/lib/python3.6/site-packages/numpy/f2py/capi_maps.py"}, {"start": 456420, "audio": 0, "end": 514945, "filename": "/lib/python3.6/site-packages/numpy/f2py/rules.py"}, {"start": 514945, "audio": 0, "end": 643349, "filename": "/lib/python3.6/site-packages/numpy/f2py/crackfortran.py"}, {"start": 643349, "audio": 0, "end": 648379, "filename": "/lib/python3.6/site-packages/numpy/f2py/common_rules.py"}, {"start": 648379, "audio": 0, "end": 649118, "filename": "/lib/python3.6/site-packages/numpy/f2py/__main__.py"}, {"start": 649118, "audio": 0, "end": 649372, "filename": "/lib/python3.6/site-packages/numpy/f2py/__version__.py"}, {"start": 649372, "audio": 0, "end": 659222, "filename": "/lib/python3.6/site-packages/numpy/f2py/f90mod_rules.py"}, {"start": 659222, "audio": 0, "end": 716626, "filename": "/lib/python3.6/site-packages/numpy/polynomial/legendre.py"}, {"start": 716626, "audio": 0, "end": 774522, "filename": "/lib/python3.6/site-packages/numpy/polynomial/hermite.py"}, {"start": 774522, "audio": 0, "end": 830831, "filename": "/lib/python3.6/site-packages/numpy/polynomial/laguerre.py"}, {"start": 830831, "audio": 0, "end": 888917, "filename": "/lib/python3.6/site-packages/numpy/polynomial/hermite_e.py"}, {"start": 888917, "audio": 0, "end": 890057, "filename": "/lib/python3.6/site-packages/numpy/polynomial/__init__.py"}, {"start": 890057, "audio": 0, "end": 920149, "filename": "/lib/python3.6/site-packages/numpy/polynomial/_polybase.py"}, {"start": 920149, "audio": 0, "end": 920534, "filename": "/lib/python3.6/site-packages/numpy/polynomial/setup.py"}, {"start": 920534, "audio": 0, "end": 973342, "filename": "/lib/python3.6/site-packages/numpy/polynomial/polynomial.py"}, {"start": 973342, "audio": 0, "end": 1040311, "filename": "/lib/python3.6/site-packages/numpy/polynomial/chebyshev.py"}, {"start": 1040311, "audio": 0, "end": 1051840, "filename": "/lib/python3.6/site-packages/numpy/polynomial/polyutils.py"}, {"start": 1051840, "audio": 0, "end": 1053316, "filename": "/lib/python3.6/site-packages/numpy/ma/__init__.py"}, {"start": 1053316, "audio": 0, "end": 1058233, "filename": "/lib/python3.6/site-packages/numpy/ma/bench.py"}, {"start": 1058233, "audio": 0, "end": 1068617, "filename": "/lib/python3.6/site-packages/numpy/ma/testutils.py"}, {"start": 1068617, "audio": 0, "end": 1068997, "filename": "/lib/python3.6/site-packages/numpy/ma/version.py"}, {"start": 1068997, "audio": 0, "end": 1096432, "filename": "/lib/python3.6/site-packages/numpy/ma/mrecords.py"}, {"start": 1096432, "audio": 0, "end": 1112018, "filename": "/lib/python3.6/site-packages/numpy/ma/timer_comparison.py"}, {"start": 1112018, "audio": 0, "end": 1167981, "filename": "/lib/python3.6/site-packages/numpy/ma/extras.py"}, {"start": 1167981, "audio": 0, "end": 1168410, "filename": "/lib/python3.6/site-packages/numpy/ma/setup.py"}, {"start": 1168410, "audio": 0, "end": 1424253, "filename": "/lib/python3.6/site-packages/numpy/ma/core.py"}, {"start": 1424253, "audio": 0, "end": 1427890, "filename": "/lib/python3.6/site-packages/numpy/compat/py3k.py"}, {"start": 1427890, "audio": 0, "end": 1428388, "filename": "/lib/python3.6/site-packages/numpy/compat/__init__.py"}, {"start": 1428388, "audio": 0, "end": 1428759, "filename": "/lib/python3.6/site-packages/numpy/compat/setup.py"}, {"start": 1428759, "audio": 0, "end": 1436313, "filename": "/lib/python3.6/site-packages/numpy/compat/_inspect.py"}, {"start": 1436313, "audio": 0, "end": 1438645, "filename": "/lib/python3.6/site-packages/numpy/linalg/__init__.py"}, {"start": 1438645, "audio": 0, "end": 1519082, "filename": "/lib/python3.6/site-packages/numpy/linalg/linalg.py"}, {"start": 1519082, "audio": 0, "end": 1520960, "filename": "/lib/python3.6/site-packages/numpy/linalg/setup.py"}, {"start": 1520960, "audio": 0, "end": 1522158, "filename": "/lib/python3.6/site-packages/numpy/linalg/info.py"}, {"start": 1522158, "audio": 0, "end": 2892108, "filename": "/lib/python3.6/site-packages/numpy/linalg/lapack_lite.so"}, {"start": 2892108, "audio": 0, "end": 4354731, "filename": "/lib/python3.6/site-packages/numpy/linalg/_umath_linalg.so"}, {"start": 4354731, "audio": 0, "end": 4355020, "filename": "/lib/python3.6/site-packages/numpy/testing/nosetester.py"}, {"start": 4355020, "audio": 0, "end": 4357725, "filename": "/lib/python3.6/site-packages/numpy/testing/print_coercion_tables.py"}, {"start": 4357725, "audio": 0, "end": 4357855, "filename": "/lib/python3.6/site-packages/numpy/testing/noseclasses.py"}, {"start": 4357855, "audio": 0, "end": 4358330, "filename": "/lib/python3.6/site-packages/numpy/testing/__init__.py"}, {"start": 4358330, "audio": 0, "end": 4359256, "filename": "/lib/python3.6/site-packages/numpy/testing/utils.py"}, {"start": 4359256, "audio": 0, "end": 4359384, "filename": "/lib/python3.6/site-packages/numpy/testing/decorators.py"}, {"start": 4359384, "audio": 0, "end": 4360061, "filename": "/lib/python3.6/site-packages/numpy/testing/setup.py"}, {"start": 4360061, "audio": 0, "end": 4380623, "filename": "/lib/python3.6/site-packages/numpy/testing/nose_tools/nosetester.py"}, {"start": 4380623, "audio": 0, "end": 4395222, "filename": "/lib/python3.6/site-packages/numpy/testing/nose_tools/noseclasses.py"}, {"start": 4395222, "audio": 0, "end": 4395222, "filename": "/lib/python3.6/site-packages/numpy/testing/nose_tools/__init__.py"}, {"start": 4395222, "audio": 0, "end": 4470656, "filename": "/lib/python3.6/site-packages/numpy/testing/nose_tools/utils.py"}, {"start": 4470656, "audio": 0, "end": 4479247, "filename": "/lib/python3.6/site-packages/numpy/testing/nose_tools/decorators.py"}, {"start": 4479247, "audio": 0, "end": 4497533, "filename": "/lib/python3.6/site-packages/numpy/testing/nose_tools/parameterized.py"}, {"start": 4497533, "audio": 0, "end": 4530506, "filename": "/lib/python3.6/site-packages/numpy/matrixlib/defmatrix.py"}, {"start": 4530506, "audio": 0, "end": 4530796, "filename": "/lib/python3.6/site-packages/numpy/matrixlib/__init__.py"}, {"start": 4530796, "audio": 0, "end": 4531244, "filename": "/lib/python3.6/site-packages/numpy/matrixlib/setup.py"}, {"start": 4531244, "audio": 0, "end": 4545329, "filename": "/lib/python3.6/site-packages/numpy/lib/scimath.py"}, {"start": 4545329, "audio": 0, "end": 4574485, "filename": "/lib/python3.6/site-packages/numpy/lib/format.py"}, {"start": 4574485, "audio": 0, "end": 4599796, "filename": "/lib/python3.6/site-packages/numpy/lib/_datasource.py"}, {"start": 4599796, "audio": 0, "end": 4604663, "filename": "/lib/python3.6/site-packages/numpy/lib/_version.py"}, {"start": 4604663, "audio": 0, "end": 4633331, "filename": "/lib/python3.6/site-packages/numpy/lib/shape_base.py"}, {"start": 4633331, "audio": 0, "end": 4659148, "filename": "/lib/python3.6/site-packages/numpy/lib/twodim_base.py"}, {"start": 4659148, "audio": 0, "end": 4698822, "filename": "/lib/python3.6/site-packages/numpy/lib/recfunctions.py"}, {"start": 4698822, "audio": 0, "end": 4700123, "filename": "/lib/python3.6/site-packages/numpy/lib/__init__.py"}, {"start": 4700123, "audio": 0, "end": 4724618, "filename": "/lib/python3.6/site-packages/numpy/lib/financial.py"}, {"start": 4724618, "audio": 0, "end": 4757234, "filename": "/lib/python3.6/site-packages/numpy/lib/_iotools.py"}, {"start": 4757234, "audio": 0, "end": 4793574, "filename": "/lib/python3.6/site-packages/numpy/lib/utils.py"}, {"start": 4793574, "audio": 0, "end": 4876746, "filename": "/lib/python3.6/site-packages/numpy/lib/npyio.py"}, {"start": 4876746, "audio": 0, "end": 4903426, "filename": "/lib/python3.6/site-packages/numpy/lib/index_tricks.py"}, {"start": 4903426, "audio": 0, "end": 4910617, "filename": "/lib/python3.6/site-packages/numpy/lib/arrayterator.py"}, {"start": 4910617, "audio": 0, "end": 4961471, "filename": "/lib/python3.6/site-packages/numpy/lib/nanfunctions.py"}, {"start": 4961471, "audio": 0, "end": 4982038, "filename": "/lib/python3.6/site-packages/numpy/lib/arraysetops.py"}, {"start": 4982038, "audio": 0, "end": 5033895, "filename": "/lib/python3.6/site-packages/numpy/lib/arraypad.py"}, {"start": 5033895, "audio": 0, "end": 5034274, "filename": "/lib/python3.6/site-packages/numpy/lib/setup.py"}, {"start": 5034274, "audio": 0, "end": 5072846, "filename": "/lib/python3.6/site-packages/numpy/lib/polynomial.py"}, {"start": 5072846, "audio": 0, "end": 5080130, "filename": "/lib/python3.6/site-packages/numpy/lib/mixins.py"}, {"start": 5080130, "audio": 0, "end": 5086746, "filename": "/lib/python3.6/site-packages/numpy/lib/info.py"}, {"start": 5086746, "audio": 0, "end": 5094563, "filename": "/lib/python3.6/site-packages/numpy/lib/user_array.py"}, {"start": 5094563, "audio": 0, "end": 5264595, "filename": "/lib/python3.6/site-packages/numpy/lib/function_base.py"}, {"start": 5264595, "audio": 0, "end": 5273380, "filename": "/lib/python3.6/site-packages/numpy/lib/stride_tricks.py"}, {"start": 5273380, "audio": 0, "end": 5279094, "filename": "/lib/python3.6/site-packages/numpy/lib/ufunclike.py"}, {"start": 5279094, "audio": 0, "end": 5295594, "filename": "/lib/python3.6/site-packages/numpy/lib/type_check.py"}, {"start": 5295594, "audio": 0, "end": 5341653, "filename": "/lib/python3.6/site-packages/numpy/fft/fftpack.py"}, {"start": 5341653, "audio": 0, "end": 5341911, "filename": "/lib/python3.6/site-packages/numpy/fft/__init__.py"}, {"start": 5341911, "audio": 0, "end": 5379678, "filename": "/lib/python3.6/site-packages/numpy/fft/fftpack_lite.so"}, {"start": 5379678, "audio": 0, "end": 5380228, "filename": "/lib/python3.6/site-packages/numpy/fft/setup.py"}, {"start": 5380228, "audio": 0, "end": 5387463, "filename": "/lib/python3.6/site-packages/numpy/fft/info.py"}, {"start": 5387463, "audio": 0, "end": 5397055, "filename": "/lib/python3.6/site-packages/numpy/fft/helper.py"}, {"start": 5397055, "audio": 0, "end": 5413008, "filename": "/lib/python3.6/site-packages/numpy/core/setup_common.py"}, {"start": 5413008, "audio": 0, "end": 5442110, "filename": "/lib/python3.6/site-packages/numpy/core/numerictypes.py"}, {"start": 5442110, "audio": 0, "end": 5460926, "filename": "/lib/python3.6/site-packages/numpy/core/shape_base.py"}, {"start": 5460926, "audio": 0, "end": 5472358, "filename": "/lib/python3.6/site-packages/numpy/core/memmap.py"}, {"start": 5472358, "audio": 0, "end": 5513050, "filename": "/lib/python3.6/site-packages/numpy/core/einsumfunc.py"}, {"start": 5513050, "audio": 0, "end": 5516094, "filename": "/lib/python3.6/site-packages/numpy/core/__init__.py"}, {"start": 5516094, "audio": 0, "end": 5534516, "filename": "/lib/python3.6/site-packages/numpy/core/getlimits.py"}, {"start": 5534516, "audio": 0, "end": 5546748, "filename": "/lib/python3.6/site-packages/numpy/core/umath_tests.so"}, {"start": 5546748, "audio": 0, "end": 5547161, "filename": "/lib/python3.6/site-packages/numpy/core/cversions.py"}, {"start": 5547161, "audio": 0, "end": 5604426, "filename": "/lib/python3.6/site-packages/numpy/core/arrayprint.py"}, {"start": 5604426, "audio": 0, "end": 5615215, "filename": "/lib/python3.6/site-packages/numpy/core/machar.py"}, {"start": 5615215, "audio": 0, "end": 5622721, "filename": "/lib/python3.6/site-packages/numpy/core/generate_numpy_api.py"}, {"start": 5622721, "audio": 0, "end": 7444814, "filename": "/lib/python3.6/site-packages/numpy/core/multiarray.so"}, {"start": 7444814, "audio": 0, "end": 7449518, "filename": "/lib/python3.6/site-packages/numpy/core/_methods.py"}, {"start": 7449518, "audio": 0, "end": 7490995, "filename": "/lib/python3.6/site-packages/numpy/core/setup.py"}, {"start": 7490995, "audio": 0, "end": 7547836, "filename": "/lib/python3.6/site-packages/numpy/core/test_rational.so"}, {"start": 7547836, "audio": 0, "end": 7548520, "filename": "/lib/python3.6/site-packages/numpy/core/_dummy.so"}, {"start": 7548520, "audio": 0, "end": 7649157, "filename": "/lib/python3.6/site-packages/numpy/core/fromnumeric.py"}, {"start": 7649157, "audio": 0, "end": 7716526, "filename": "/lib/python3.6/site-packages/numpy/core/defchararray.py"}, {"start": 7716526, "audio": 0, "end": 7721218, "filename": "/lib/python3.6/site-packages/numpy/core/info.py"}, {"start": 7721218, "audio": 0, "end": 7725606, "filename": "/lib/python3.6/site-packages/numpy/core/struct_ufunc_test.so"}, {"start": 7725606, "audio": 0, "end": 7755699, "filename": "/lib/python3.6/site-packages/numpy/core/records.py"}, {"start": 7755699, "audio": 0, "end": 7869232, "filename": "/lib/python3.6/site-packages/numpy/core/multiarray_tests.so"}, {"start": 7869232, "audio": 0, "end": 7881572, "filename": "/lib/python3.6/site-packages/numpy/core/function_base.py"}, {"start": 7881572, "audio": 0, "end": 7967303, "filename": "/lib/python3.6/site-packages/numpy/core/numeric.py"}, {"start": 7967303, "audio": 0, "end": 7970985, "filename": "/lib/python3.6/site-packages/numpy/core/operand_flag_tests.so"}, {"start": 7970985, "audio": 0, "end": 7992801, "filename": "/lib/python3.6/site-packages/numpy/core/_internal.py"}, {"start": 7992801, "audio": 0, "end": 8757415, "filename": "/lib/python3.6/site-packages/numpy/core/umath.so"}, {"start": 8757415, "audio": 0, "end": 8762896, "filename": "/lib/python3.6/site-packages/numpy/random/__init__.py"}, {"start": 8762896, "audio": 0, "end": 9972220, "filename": "/lib/python3.6/site-packages/numpy/random/mtrand.so"}, {"start": 9972220, "audio": 0, "end": 9974532, "filename": "/lib/python3.6/site-packages/numpy/random/setup.py"}, {"start": 9974532, "audio": 0, "end": 9979731, "filename": "/lib/python3.6/site-packages/numpy/random/info.py"}, {"start": 9979731, "audio": 0, "end": 9988613, "filename": "/lib/python3.6/site-packages/numpy/doc/constants.py"}, {"start": 9988613, "audio": 0, "end": 9989187, "filename": "/lib/python3.6/site-packages/numpy/doc/__init__.py"}, {"start": 9989187, "audio": 0, "end": 9995381, "filename": "/lib/python3.6/site-packages/numpy/doc/misc.py"}, {"start": 9995381, "audio": 0, "end": 10023941, "filename": "/lib/python3.6/site-packages/numpy/doc/subclassing.py"}, {"start": 10023941, "audio": 0, "end": 10048384, "filename": "/lib/python3.6/site-packages/numpy/doc/structured_arrays.py"}, {"start": 10048384, "audio": 0, "end": 10053949, "filename": "/lib/python3.6/site-packages/numpy/doc/broadcasting.py"}, {"start": 10053949, "audio": 0, "end": 10061867, "filename": "/lib/python3.6/site-packages/numpy/doc/basics.py"}, {"start": 10061867, "audio": 0, "end": 10067294, "filename": "/lib/python3.6/site-packages/numpy/doc/ufuncs.py"}, {"start": 10067294, "audio": 0, "end": 10082963, "filename": "/lib/python3.6/site-packages/numpy/doc/indexing.py"}, {"start": 10082963, "audio": 0, "end": 10088309, "filename": "/lib/python3.6/site-packages/numpy/doc/byteswapping.py"}, {"start": 10088309, "audio": 0, "end": 10097978, "filename": "/lib/python3.6/site-packages/numpy/doc/internals.py"}, {"start": 10097978, "audio": 0, "end": 10103479, "filename": "/lib/python3.6/site-packages/numpy/doc/creation.py"}, {"start": 10103479, "audio": 0, "end": 10115850, "filename": "/lib/python3.6/site-packages/numpy/doc/glossary.py"}, {"start": 10115850, "audio": 0, "end": 10117150, "filename": "/lib/python3.6/site-packages/numpy/distutils/__config__.py"}, {"start": 10117150, "audio": 0, "end": 10122306, "filename": "/lib/python3.6/site-packages/numpy/distutils/unixccompiler.py"}, {"start": 10122306, "audio": 0, "end": 10124564, "filename": "/lib/python3.6/site-packages/numpy/distutils/msvc9compiler.py"}, {"start": 10124564, "audio": 0, "end": 10126555, "filename": "/lib/python3.6/site-packages/numpy/distutils/msvccompiler.py"}, {"start": 10126555, "audio": 0, "end": 10130846, "filename": "/lib/python3.6/site-packages/numpy/distutils/intelccompiler.py"}, {"start": 10130846, "audio": 0, "end": 10131064, "filename": "/lib/python3.6/site-packages/numpy/distutils/compat.py"}, {"start": 10131064, "audio": 0, "end": 10156265, "filename": "/lib/python3.6/site-packages/numpy/distutils/mingw32ccompiler.py"}, {"start": 10156265, "audio": 0, "end": 10165974, "filename": "/lib/python3.6/site-packages/numpy/distutils/conv_template.py"}, {"start": 10165974, "audio": 0, "end": 10173804, "filename": "/lib/python3.6/site-packages/numpy/distutils/from_template.py"}, {"start": 10173804, "audio": 0, "end": 10187047, "filename": "/lib/python3.6/site-packages/numpy/distutils/npy_pkg_config.py"}, {"start": 10187047, "audio": 0, "end": 10269326, "filename": "/lib/python3.6/site-packages/numpy/distutils/misc_util.py"}, {"start": 10269326, "audio": 0, "end": 10270414, "filename": "/lib/python3.6/site-packages/numpy/distutils/__init__.py"}, {"start": 10270414, "audio": 0, "end": 10273159, "filename": "/lib/python3.6/site-packages/numpy/distutils/log.py"}, {"start": 10273159, "audio": 0, "end": 10276671, "filename": "/lib/python3.6/site-packages/numpy/distutils/lib2def.py"}, {"start": 10276671, "audio": 0, "end": 10285334, "filename": "/lib/python3.6/site-packages/numpy/distutils/exec_command.py"}, {"start": 10285334, "audio": 0, "end": 10313881, "filename": "/lib/python3.6/site-packages/numpy/distutils/ccompiler.py"}, {"start": 10313881, "audio": 0, "end": 10336896, "filename": "/lib/python3.6/site-packages/numpy/distutils/cpuinfo.py"}, {"start": 10336896, "audio": 0, "end": 10337507, "filename": "/lib/python3.6/site-packages/numpy/distutils/setup.py"}, {"start": 10337507, "audio": 0, "end": 10337664, "filename": "/lib/python3.6/site-packages/numpy/distutils/info.py"}, {"start": 10337664, "audio": 0, "end": 10338443, "filename": "/lib/python3.6/site-packages/numpy/distutils/pathccompiler.py"}, {"start": 10338443, "audio": 0, "end": 10339143, "filename": "/lib/python3.6/site-packages/numpy/distutils/numpy_distribution.py"}, {"start": 10339143, "audio": 0, "end": 10342110, "filename": "/lib/python3.6/site-packages/numpy/distutils/extension.py"}, {"start": 10342110, "audio": 0, "end": 10350293, "filename": "/lib/python3.6/site-packages/numpy/distutils/core.py"}, {"start": 10350293, "audio": 0, "end": 10352346, "filename": "/lib/python3.6/site-packages/numpy/distutils/line_endings.py"}, {"start": 10352346, "audio": 0, "end": 10354692, "filename": "/lib/python3.6/site-packages/numpy/distutils/environment.py"}, {"start": 10354692, "audio": 0, "end": 10444193, "filename": "/lib/python3.6/site-packages/numpy/distutils/system_info.py"}, {"start": 10444193, "audio": 0, "end": 10444344, "filename": "/lib/python3.6/site-packages/numpy/distutils/__version__.py"}, {"start": 10444344, "audio": 0, "end": 10445258, "filename": "/lib/python3.6/site-packages/numpy/distutils/command/install_data.py"}, {"start": 10445258, "audio": 0, "end": 10446033, "filename": "/lib/python3.6/site-packages/numpy/distutils/command/bdist_rpm.py"}, {"start": 10446033, "audio": 0, "end": 10449160, "filename": "/lib/python3.6/site-packages/numpy/distutils/command/install.py"}, {"start": 10449160, "audio": 0, "end": 10474424, "filename": "/lib/python3.6/site-packages/numpy/distutils/command/build_ext.py"}, {"start": 10474424, "audio": 0, "end": 10475522, "filename": "/lib/python3.6/site-packages/numpy/distutils/command/__init__.py"}, {"start": 10475522, "audio": 0, "end": 10477253, "filename": "/lib/python3.6/site-packages/numpy/distutils/command/build_scripts.py"}, {"start": 10477253, "audio": 0, "end": 10481632, "filename": "/lib/python3.6/site-packages/numpy/distutils/command/config_compiler.py"}, {"start": 10481632, "audio": 0, "end": 10483680, "filename": "/lib/python3.6/site-packages/numpy/distutils/command/autodist.py"}, {"start": 10483680, "audio": 0, "end": 10484665, "filename": "/lib/python3.6/site-packages/numpy/distutils/command/install_headers.py"}, {"start": 10484665, "audio": 0, "end": 10498054, "filename": "/lib/python3.6/site-packages/numpy/distutils/command/build_clib.py"}, {"start": 10498054, "audio": 0, "end": 10499672, "filename": "/lib/python3.6/site-packages/numpy/distutils/command/build.py"}, {"start": 10499672, "audio": 0, "end": 10500471, "filename": "/lib/python3.6/site-packages/numpy/distutils/command/sdist.py"}, {"start": 10500471, "audio": 0, "end": 10501681, "filename": "/lib/python3.6/site-packages/numpy/distutils/command/build_py.py"}, {"start": 10501681, "audio": 0, "end": 10519691, "filename": "/lib/python3.6/site-packages/numpy/distutils/command/config.py"}, {"start": 10519691, "audio": 0, "end": 10520678, "filename": "/lib/python3.6/site-packages/numpy/distutils/command/egg_info.py"}, {"start": 10520678, "audio": 0, "end": 10551624, "filename": "/lib/python3.6/site-packages/numpy/distutils/command/build_src.py"}, {"start": 10551624, "audio": 0, "end": 10552939, "filename": "/lib/python3.6/site-packages/numpy/distutils/command/install_clib.py"}, {"start": 10552939, "audio": 0, "end": 10553580, "filename": "/lib/python3.6/site-packages/numpy/distutils/command/develop.py"}, {"start": 10553580, "audio": 0, "end": 10554973, "filename": "/lib/python3.6/site-packages/numpy/distutils/fcompiler/lahey.py"}, {"start": 10554973, "audio": 0, "end": 10594320, "filename": "/lib/python3.6/site-packages/numpy/distutils/fcompiler/__init__.py"}, {"start": 10594320, "audio": 0, "end": 10598429, "filename": "/lib/python3.6/site-packages/numpy/distutils/fcompiler/compaq.py"}, {"start": 10598429, "audio": 0, "end": 10600162, "filename": "/lib/python3.6/site-packages/numpy/distutils/fcompiler/vast.py"}, {"start": 10600162, "audio": 0, "end": 10602770, "filename": "/lib/python3.6/site-packages/numpy/distutils/fcompiler/nag.py"}, {"start": 10602770, "audio": 0, "end": 10604166, "filename": "/lib/python3.6/site-packages/numpy/distutils/fcompiler/g95.py"}, {"start": 10604166, "audio": 0, "end": 10610939, "filename": "/lib/python3.6/site-packages/numpy/distutils/fcompiler/intel.py"}, {"start": 10610939, "audio": 0, "end": 10612719, "filename": "/lib/python3.6/site-packages/numpy/distutils/fcompiler/mips.py"}, {"start": 10612719, "audio": 0, "end": 10614364, "filename": "/lib/python3.6/site-packages/numpy/distutils/fcompiler/sun.py"}, {"start": 10614364, "audio": 0, "end": 10615491, "filename": "/lib/python3.6/site-packages/numpy/distutils/fcompiler/pathf95.py"}, {"start": 10615491, "audio": 0, "end": 10618926, "filename": "/lib/python3.6/site-packages/numpy/distutils/fcompiler/ibm.py"}, {"start": 10618926, "audio": 0, "end": 10623139, "filename": "/lib/python3.6/site-packages/numpy/distutils/fcompiler/pg.py"}, {"start": 10623139, "audio": 0, "end": 10628706, "filename": "/lib/python3.6/site-packages/numpy/distutils/fcompiler/absoft.py"}, {"start": 10628706, "audio": 0, "end": 10629530, "filename": "/lib/python3.6/site-packages/numpy/distutils/fcompiler/none.py"}, {"start": 10629530, "audio": 0, "end": 10630949, "filename": "/lib/python3.6/site-packages/numpy/distutils/fcompiler/hpux.py"}, {"start": 10630949, "audio": 0, "end": 10650712, "filename": "/lib/python3.6/site-packages/numpy/distutils/fcompiler/gnu.py"}], "remote_package_size": 10650712, "package_uuid": "c8ad1e84-2526-4f30-84e3-2a075d42dead"});
})();
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="File" module="OFS.Image"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>__name__</string> </key>
<value> <string>numpy.js</string> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>application/javascript</string> </value>
</item>
<item>
<key> <string>precondition</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
This source diff could not be displayed because it is too large. You can view the blob instead.
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="File" module="OFS.Image"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>__name__</string> </key>
<value> <string>pandas.data</string> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>application/octet-stream</string> </value>
</item>
<item>
<key> <string>precondition</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
This source diff could not be displayed because it is too large. You can view the blob instead.
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="File" module="OFS.Image"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>__name__</string> </key>
<value> <string>pandas.js</string> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>application/javascript</string> </value>
</item>
<item>
<key> <string>precondition</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
......@@ -6,6 +6,12 @@
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>_Cacheable__manager_id</string> </key>
<value>
<none/>
</value>
</item>
<item>
<key> <string>__name__</string> </key>
<value> <string>pyodide.asm.data</string> </value>
......
"""
A library of helper utilities for connecting Python to the browser environment.
"""
from js import XMLHttpRequest
import ast
import io
def open_url(url):
"""
Fetches a given *url* and returns a io.StringIO to access its contents.
"""
req = XMLHttpRequest.new()
req.open('GET', url, False)
req.send(None)
return io.StringIO(req.response)
def eval_code(code, ns):
"""
Runs a string of code, the last part of which may be an expression.
"""
mod = ast.parse(code)
if isinstance(mod.body[-1], ast.Expr):
expr = ast.Expression(mod.body[-1].value)
del mod.body[-1]
else:
expr = None
if len(mod.body):
exec(compile(mod, '<exec>', mode='exec'), ns, ns)
if expr is not None:
return eval(compile(expr, '<eval>', mode='eval'), ns, ns)
else:
return None
__all__ = ['open_url', 'eval_code']
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="File" module="OFS.Image"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>__name__</string> </key>
<value> <string>pyodide.py</string> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>application/octet-stream</string> </value>
</item>
<item>
<key> <string>precondition</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
This source diff could not be displayed because it is too large. You can view the blob instead.
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="File" module="OFS.Image"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>__name__</string> </key>
<value> <string>pyparsing.data</string> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>application/octet-stream</string> </value>
</item>
<item>
<key> <string>precondition</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
var Module = typeof pyodide !== 'undefined' ? pyodide : {};
if (!Module.expectedDataFileDownloads) {
Module.expectedDataFileDownloads = 0;
Module.finishedDataFileDownloads = 0;
}
Module.expectedDataFileDownloads++;
(function() {
var loadPackage = function(metadata) {
var PACKAGE_PATH;
if (typeof window === 'object') {
PACKAGE_PATH = window['encodeURIComponent'](window.location.pathname.toString().substring(0, window.location.pathname.toString().lastIndexOf('/')) + '/');
} else if (typeof location !== 'undefined') {
// worker
PACKAGE_PATH = encodeURIComponent(location.pathname.toString().substring(0, location.pathname.toString().lastIndexOf('/')) + '/');
} else {
throw 'using preloaded data can only be done on a web page or in a web worker';
}
var PACKAGE_NAME = '/home/nexedir/pyodide/packages/pyparsing/build/pyparsing.data';
var REMOTE_PACKAGE_BASE = 'pyparsing.data';
if (typeof Module['locateFilePackage'] === 'function' && !Module['locateFile']) {
Module['locateFile'] = Module['locateFilePackage'];
err('warning: you defined Module.locateFilePackage, that has been renamed to Module.locateFile (using your locateFilePackage for now)');
}
var REMOTE_PACKAGE_NAME = Module['locateFile'] ? Module['locateFile'](REMOTE_PACKAGE_BASE, '') : REMOTE_PACKAGE_BASE;
var REMOTE_PACKAGE_SIZE = metadata.remote_package_size;
var PACKAGE_UUID = metadata.package_uuid;
function fetchRemotePackage(packageName, packageSize, callback, errback) {
var xhr = new XMLHttpRequest();
xhr.open('GET', packageName, true);
xhr.responseType = 'arraybuffer';
xhr.onprogress = function(event) {
var url = packageName;
var size = packageSize;
if (event.total) size = event.total;
if (event.loaded) {
if (!xhr.addedTotal) {
xhr.addedTotal = true;
if (!Module.dataFileDownloads) Module.dataFileDownloads = {};
Module.dataFileDownloads[url] = {
loaded: event.loaded,
total: size
};
} else {
Module.dataFileDownloads[url].loaded = event.loaded;
}
var total = 0;
var loaded = 0;
var num = 0;
for (var download in Module.dataFileDownloads) {
var data = Module.dataFileDownloads[download];
total += data.total;
loaded += data.loaded;
num++;
}
total = Math.ceil(total * Module.expectedDataFileDownloads/num);
if (Module['setStatus']) Module['setStatus']('Downloading data... (' + loaded + '/' + total + ')');
} else if (!Module.dataFileDownloads) {
if (Module['setStatus']) Module['setStatus']('Downloading data...');
}
};
xhr.onerror = function(event) {
throw new Error("NetworkError for: " + packageName);
}
xhr.onload = function(event) {
if (xhr.status == 200 || xhr.status == 304 || xhr.status == 206 || (xhr.status == 0 && xhr.response)) { // file URLs can return 0
var packageData = xhr.response;
callback(packageData);
} else {
throw new Error(xhr.statusText + " : " + xhr.responseURL);
}
};
xhr.send(null);
};
function handleError(error) {
console.error('package error:', error);
};
var fetchedCallback = null;
var fetched = Module['getPreloadedPackage'] ? Module['getPreloadedPackage'](REMOTE_PACKAGE_NAME, REMOTE_PACKAGE_SIZE) : null;
if (!fetched) fetchRemotePackage(REMOTE_PACKAGE_NAME, REMOTE_PACKAGE_SIZE, function(data) {
if (fetchedCallback) {
fetchedCallback(data);
fetchedCallback = null;
} else {
fetched = data;
}
}, handleError);
function runWithFS() {
function assert(check, msg) {
if (!check) throw msg + new Error().stack;
}
Module['FS_createPath']('/', 'lib', true, true);
Module['FS_createPath']('/lib', 'python3.6', true, true);
Module['FS_createPath']('/lib/python3.6', 'site-packages', true, true);
function DataRequest(start, end, audio) {
this.start = start;
this.end = end;
this.audio = audio;
}
DataRequest.prototype = {
requests: {},
open: function(mode, name) {
this.name = name;
this.requests[name] = this;
Module['addRunDependency']('fp ' + this.name);
},
send: function() {},
onload: function() {
var byteArray = this.byteArray.subarray(this.start, this.end);
this.finish(byteArray);
},
finish: function(byteArray) {
var that = this;
Module['FS_createPreloadedFile'](this.name, null, byteArray, true, true, function() {
Module['removeRunDependency']('fp ' + that.name);
}, function() {
if (that.audio) {
Module['removeRunDependency']('fp ' + that.name); // workaround for chromium bug 124926 (still no audio with this, but at least we don't hang)
} else {
err('Preloading file ' + that.name + ' failed');
}
}, false, true); // canOwn this data in the filesystem, it is a slide into the heap that will never change
this.requests[this.name] = null;
}
};
var files = metadata.files;
for (var i = 0; i < files.length; ++i) {
new DataRequest(files[i].start, files[i].end, files[i].audio).open('GET', files[i].filename);
}
function processPackageData(arrayBuffer) {
Module.finishedDataFileDownloads++;
assert(arrayBuffer, 'Loading data file failed.');
assert(arrayBuffer instanceof ArrayBuffer, 'bad input to processPackageData');
var byteArray = new Uint8Array(arrayBuffer);
var curr;
// copy the entire loaded file into a spot in the heap. Files will refer to slices in that. They cannot be freed though
// (we may be allocating before malloc is ready, during startup).
if (Module['SPLIT_MEMORY']) err('warning: you should run the file packager with --no-heap-copy when SPLIT_MEMORY is used, otherwise copying into the heap may fail due to the splitting');
var ptr = Module['getMemory'](byteArray.length);
Module['HEAPU8'].set(byteArray, ptr);
DataRequest.prototype.byteArray = Module['HEAPU8'].subarray(ptr, ptr+byteArray.length);
var files = metadata.files;
for (var i = 0; i < files.length; ++i) {
DataRequest.prototype.requests[files[i].filename].onload();
}
Module['removeRunDependency']('datafile_/home/nexedir/pyodide/packages/pyparsing/build/pyparsing.data');
};
Module['addRunDependency']('datafile_/home/nexedir/pyodide/packages/pyparsing/build/pyparsing.data');
if (!Module.preloadResults) Module.preloadResults = {};
Module.preloadResults[PACKAGE_NAME] = {fromCache: false};
if (fetched) {
processPackageData(fetched);
fetched = null;
} else {
fetchedCallback = processPackageData;
}
}
if (Module['calledRun']) {
runWithFS();
} else {
if (!Module['preRun']) Module['preRun'] = [];
Module["preRun"].push(runWithFS); // FS is not initialized yet, wait for it
}
}
loadPackage({"files": [{"start": 0, "audio": 0, "end": 231121, "filename": "/lib/python3.6/site-packages/pyparsing.py"}], "remote_package_size": 231121, "package_uuid": "be9ba37d-b262-4633-9926-9d99b902ca2a"});
})();
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="File" module="OFS.Image"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>__name__</string> </key>
<value> <string>pyparsing.js</string> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>application/javascript</string> </value>
</item>
<item>
<key> <string>precondition</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
This source diff could not be displayed because it is too large. You can view the blob instead.
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="File" module="OFS.Image"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>__name__</string> </key>
<value> <string>python-dateutil.data</string> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>application/octet-stream</string> </value>
</item>
<item>
<key> <string>precondition</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
var Module = typeof pyodide !== 'undefined' ? pyodide : {};
if (!Module.expectedDataFileDownloads) {
Module.expectedDataFileDownloads = 0;
Module.finishedDataFileDownloads = 0;
}
Module.expectedDataFileDownloads++;
(function() {
var loadPackage = function(metadata) {
var PACKAGE_PATH;
if (typeof window === 'object') {
PACKAGE_PATH = window['encodeURIComponent'](window.location.pathname.toString().substring(0, window.location.pathname.toString().lastIndexOf('/')) + '/');
} else if (typeof location !== 'undefined') {
// worker
PACKAGE_PATH = encodeURIComponent(location.pathname.toString().substring(0, location.pathname.toString().lastIndexOf('/')) + '/');
} else {
throw 'using preloaded data can only be done on a web page or in a web worker';
}
var PACKAGE_NAME = '/home/nexedir/pyodide/packages/python-dateutil/build/python-dateutil.data';
var REMOTE_PACKAGE_BASE = 'python-dateutil.data';
if (typeof Module['locateFilePackage'] === 'function' && !Module['locateFile']) {
Module['locateFile'] = Module['locateFilePackage'];
err('warning: you defined Module.locateFilePackage, that has been renamed to Module.locateFile (using your locateFilePackage for now)');
}
var REMOTE_PACKAGE_NAME = Module['locateFile'] ? Module['locateFile'](REMOTE_PACKAGE_BASE, '') : REMOTE_PACKAGE_BASE;
var REMOTE_PACKAGE_SIZE = metadata.remote_package_size;
var PACKAGE_UUID = metadata.package_uuid;
function fetchRemotePackage(packageName, packageSize, callback, errback) {
var xhr = new XMLHttpRequest();
xhr.open('GET', packageName, true);
xhr.responseType = 'arraybuffer';
xhr.onprogress = function(event) {
var url = packageName;
var size = packageSize;
if (event.total) size = event.total;
if (event.loaded) {
if (!xhr.addedTotal) {
xhr.addedTotal = true;
if (!Module.dataFileDownloads) Module.dataFileDownloads = {};
Module.dataFileDownloads[url] = {
loaded: event.loaded,
total: size
};
} else {
Module.dataFileDownloads[url].loaded = event.loaded;
}
var total = 0;
var loaded = 0;
var num = 0;
for (var download in Module.dataFileDownloads) {
var data = Module.dataFileDownloads[download];
total += data.total;
loaded += data.loaded;
num++;
}
total = Math.ceil(total * Module.expectedDataFileDownloads/num);
if (Module['setStatus']) Module['setStatus']('Downloading data... (' + loaded + '/' + total + ')');
} else if (!Module.dataFileDownloads) {
if (Module['setStatus']) Module['setStatus']('Downloading data...');
}
};
xhr.onerror = function(event) {
throw new Error("NetworkError for: " + packageName);
}
xhr.onload = function(event) {
if (xhr.status == 200 || xhr.status == 304 || xhr.status == 206 || (xhr.status == 0 && xhr.response)) { // file URLs can return 0
var packageData = xhr.response;
callback(packageData);
} else {
throw new Error(xhr.statusText + " : " + xhr.responseURL);
}
};
xhr.send(null);
};
function handleError(error) {
console.error('package error:', error);
};
var fetchedCallback = null;
var fetched = Module['getPreloadedPackage'] ? Module['getPreloadedPackage'](REMOTE_PACKAGE_NAME, REMOTE_PACKAGE_SIZE) : null;
if (!fetched) fetchRemotePackage(REMOTE_PACKAGE_NAME, REMOTE_PACKAGE_SIZE, function(data) {
if (fetchedCallback) {
fetchedCallback(data);
fetchedCallback = null;
} else {
fetched = data;
}
}, handleError);
function runWithFS() {
function assert(check, msg) {
if (!check) throw msg + new Error().stack;
}
Module['FS_createPath']('/', 'lib', true, true);
Module['FS_createPath']('/lib', 'python3.6', true, true);
Module['FS_createPath']('/lib/python3.6', 'site-packages', true, true);
Module['FS_createPath']('/lib/python3.6/site-packages', 'dateutil', true, true);
Module['FS_createPath']('/lib/python3.6/site-packages/dateutil', 'tz', true, true);
Module['FS_createPath']('/lib/python3.6/site-packages/dateutil', 'parser', true, true);
Module['FS_createPath']('/lib/python3.6/site-packages/dateutil', 'zoneinfo', true, true);
function DataRequest(start, end, audio) {
this.start = start;
this.end = end;
this.audio = audio;
}
DataRequest.prototype = {
requests: {},
open: function(mode, name) {
this.name = name;
this.requests[name] = this;
Module['addRunDependency']('fp ' + this.name);
},
send: function() {},
onload: function() {
var byteArray = this.byteArray.subarray(this.start, this.end);
this.finish(byteArray);
},
finish: function(byteArray) {
var that = this;
Module['FS_createPreloadedFile'](this.name, null, byteArray, true, true, function() {
Module['removeRunDependency']('fp ' + that.name);
}, function() {
if (that.audio) {
Module['removeRunDependency']('fp ' + that.name); // workaround for chromium bug 124926 (still no audio with this, but at least we don't hang)
} else {
err('Preloading file ' + that.name + ' failed');
}
}, false, true); // canOwn this data in the filesystem, it is a slide into the heap that will never change
this.requests[this.name] = null;
}
};
var files = metadata.files;
for (var i = 0; i < files.length; ++i) {
new DataRequest(files[i].start, files[i].end, files[i].audio).open('GET', files[i].filename);
}
function processPackageData(arrayBuffer) {
Module.finishedDataFileDownloads++;
assert(arrayBuffer, 'Loading data file failed.');
assert(arrayBuffer instanceof ArrayBuffer, 'bad input to processPackageData');
var byteArray = new Uint8Array(arrayBuffer);
var curr;
// copy the entire loaded file into a spot in the heap. Files will refer to slices in that. They cannot be freed though
// (we may be allocating before malloc is ready, during startup).
if (Module['SPLIT_MEMORY']) err('warning: you should run the file packager with --no-heap-copy when SPLIT_MEMORY is used, otherwise copying into the heap may fail due to the splitting');
var ptr = Module['getMemory'](byteArray.length);
Module['HEAPU8'].set(byteArray, ptr);
DataRequest.prototype.byteArray = Module['HEAPU8'].subarray(ptr, ptr+byteArray.length);
var files = metadata.files;
for (var i = 0; i < files.length; ++i) {
DataRequest.prototype.requests[files[i].filename].onload();
}
Module['removeRunDependency']('datafile_/home/nexedir/pyodide/packages/python-dateutil/build/python-dateutil.data');
};
Module['addRunDependency']('datafile_/home/nexedir/pyodide/packages/python-dateutil/build/python-dateutil.data');
if (!Module.preloadResults) Module.preloadResults = {};
Module.preloadResults[PACKAGE_NAME] = {fromCache: false};
if (fetched) {
processPackageData(fetched);
fetched = null;
} else {
fetchedCallback = processPackageData;
}
}
if (Module['calledRun']) {
runWithFS();
} else {
if (!Module['preRun']) Module['preRun'] = [];
Module["preRun"].push(runWithFS); // FS is not initialized yet, wait for it
}
}
loadPackage({"files": [{"start": 0, "audio": 0, "end": 116, "filename": "/lib/python3.6/site-packages/dateutil/_version.py"}, {"start": 116, "audio": 0, "end": 338, "filename": "/lib/python3.6/site-packages/dateutil/__init__.py"}, {"start": 338, "audio": 0, "end": 1270, "filename": "/lib/python3.6/site-packages/dateutil/_common.py"}, {"start": 1270, "audio": 0, "end": 3111, "filename": "/lib/python3.6/site-packages/dateutil/utils.py"}, {"start": 3111, "audio": 0, "end": 5795, "filename": "/lib/python3.6/site-packages/dateutil/easter.py"}, {"start": 5795, "audio": 0, "end": 5854, "filename": "/lib/python3.6/site-packages/dateutil/tzwin.py"}, {"start": 5854, "audio": 0, "end": 70721, "filename": "/lib/python3.6/site-packages/dateutil/rrule.py"}, {"start": 70721, "audio": 0, "end": 95214, "filename": "/lib/python3.6/site-packages/dateutil/relativedelta.py"}, {"start": 95214, "audio": 0, "end": 106532, "filename": "/lib/python3.6/site-packages/dateutil/tz/win.py"}, {"start": 106532, "audio": 0, "end": 162912, "filename": "/lib/python3.6/site-packages/dateutil/tz/tz.py"}, {"start": 162912, "audio": 0, "end": 164346, "filename": "/lib/python3.6/site-packages/dateutil/tz/_factories.py"}, {"start": 164346, "audio": 0, "end": 164849, "filename": "/lib/python3.6/site-packages/dateutil/tz/__init__.py"}, {"start": 164849, "audio": 0, "end": 177741, "filename": "/lib/python3.6/site-packages/dateutil/tz/_common.py"}, {"start": 177741, "audio": 0, "end": 233499, "filename": "/lib/python3.6/site-packages/dateutil/parser/_parser.py"}, {"start": 233499, "audio": 0, "end": 235226, "filename": "/lib/python3.6/site-packages/dateutil/parser/__init__.py"}, {"start": 235226, "audio": 0, "end": 248071, "filename": "/lib/python3.6/site-packages/dateutil/parser/isoparser.py"}, {"start": 248071, "audio": 0, "end": 387151, "filename": "/lib/python3.6/site-packages/dateutil/zoneinfo/dateutil-zoneinfo.tar.gz"}, {"start": 387151, "audio": 0, "end": 393040, "filename": "/lib/python3.6/site-packages/dateutil/zoneinfo/__init__.py"}, {"start": 393040, "audio": 0, "end": 394759, "filename": "/lib/python3.6/site-packages/dateutil/zoneinfo/rebuild.py"}], "remote_package_size": 394759, "package_uuid": "614b64f0-c002-400b-a8f6-3463a8dfc734"});
})();
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="File" module="OFS.Image"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>__name__</string> </key>
<value> <string>python-dateutil.js</string> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>application/javascript</string> </value>
</item>
<item>
<key> <string>precondition</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Python - iodide</title>
<link rel="stylesheet" type="text/css" href="https://iodide.io/dist/iodide.pyodide-20180623.css">
</head>
<body>
<script id="jsmd" type="text/jsmd">
%% meta
{
"title": "Python",
"languages": {
"js": {
"pluginType": "language",
"languageId": "js",
"displayName": "Javascript",
"codeMirrorMode": "javascript",
"module": "window",
"evaluator": "eval",
"keybinding": "j",
"url": ""
},
"py": {
"languageId": "py",
"displayName": "python",
"codeMirrorMode": "python",
"keybinding": "p",
"url": "https://iodide.io/pyodide-demo/pyodide.js",
"module": "pyodide",
"evaluator": "runPython",
"pluginType": "language"
}
},
"lastExport": "2018-05-04T17:13:00.489Z"
}
%% md
# Pyodide 🐍
Pyodide adds support for Python in an Iodide notebook, running inside your browser.
**This is early days. Everything here is subject to change.**
(A major shortcoming is that `print` from Python currently prints to the Javascript debugger console, rather than to the notebook cell, so some of these examples are more contrived than they need to be.)
**Also to note: If you have any issues, try disabling any ad or tracking blockers for this site.**
First, let's use a plugin cell to load the Python interpreter and tell Iodide about the new cell type.
%% plugin
{
"languageId": "py",
"displayName": "python",
"codeMirrorMode": "python",
"keybinding": "p",
"url": "https://iodide.io/pyodide-demo/pyodide.js",
"module": "pyodide",
"evaluator": "runPython",
"pluginType": "language"
}
%% md
## Make a Python cell. Import stuff and use it.
Most of the standard library (at least the parts that make sense) are here and available to use.
%% code {"language":"py"}
# python
import sys
sys.version
%% md
## Basic data types
The basic data types (None, bool, ints, floats, lists, and dicts) are converted from Python to Javascript when they are output and displayed using the standard mechanisms in Iodide.
%% code {"language":"py"}
[0, 1, 32.0, 'foo', {'a': 10, 'b': '20'}, b'bytes']
%% md
## Sharing objects between Python and Javascript
The Python and Javascript sides can pass objects back and forth.
So, you can set a value in Javascript code:
%% js
// javascript
secret = "Wklv#lv#olnh#pdjlf$"
%% md
...and use it from Python by using `from js import ...`:
%% code {"language":"py"}
# python
from js import secret
decoded = ''.join(chr(ord(x) - 3) for x in secret)
%% md
...and then get it back from Javascript using `pyodide.pyimport`:
%% js
// javascript
var decoded = pyodide.pyimport("decoded")
decoded
%% md
## Custom data types
Non-basic data types, such as class instances, functions, File objects etc., can also be passed between Python and Javascript.
### Using Python objects from Javascript
For example, say we had the following Python function that we wanted to call from Javascript:
%% code {"language":"py"}
# python
def square(x):
return x * x
%% md
Since calling conventions are a bit different in Python than in Javascript, all Python callables take two arguments when called from Javascript: the positional arguments as an array, and the keyword arguments as an object.
%% js
// javascript
var square = pyodide.pyimport("square")
square(2.5)
%% md
This is equivalent to the following Python syntax:
%% code {"language":"py"}
# python
square(2.5)
%% md
You can also get the attributes of objects in a similar way. Say we had an instance of the following Python custom class:
%% code {"language":"py"}
# python
class Foo:
def __init__(self, val):
self.val = val
foo = Foo(42)
foo
%% md
We can get the value of its `val` property as so:
%% js
// javascript
var foo = pyodide.pyimport("foo")
foo.val
%% md
### Using Javascript objects from Python
Likewise, you can use Javascript objects from Python.
%% js
// javascript
function square(x) {
return x*x;
}
%% md
To call this function from Python...
%% code {"language":"py"}
from js import square
square(4)
%% md
## Exceptions
Python exceptions are converted to Javascript exceptions, and they include tracebacks.
%% code {"language":"py"}
x = 5 / 0
%% md
## World DOMination
By using `from js import document`, you can easily access the Web API from Python.
For example, get the title of the document:
%% code {"language":"py"}
# python
from js import document
document.title
%% md
You can set it, too:
%% code {"language":"py"}
# python
document.title = 'My mind is blown'
%% md
We can set up a special `div` element from a markdown cell, and then manipulate it from Python.
<div id="targetDiv">This is a div we'll target from Python</div>
%% code {"language":"py"}
# python
# Turn the div red
document.getElementById("targetDiv").setAttribute("style", "background-color: red")
%% md
## Numpy
You bet, [Numpy](http://numpy.org) works.
To save on download times, isn't loaded by default. We need to manually use
the `pyodide.loadPackage` function from a Javascript cell.
%% js
pyodide.loadPackage('numpy')
%% md
Now that the Numpy package has been loaded (i.e. transferred to your local browser), we can import it:
%% code {"language":"py"}
import numpy as np
%% md
Let's make a simple array of zeros. When it's displayed, it's using the same output code that Iodide uses for Javascript.
(On a technical level, it's important to note that Pyodide doesn't need to copy the whole array over to the Javascript side to do this: it's only accessing the parts of the array it needs to make the display.)
%% code {"language":"py"}
np.zeros((16, 16))
%% md
### Estimating pi
Here's a fun example where we can estimate pi by generating a bunch of random (x, y) points and calculating the ratio of them that fall within the unit circle.
%% code {"language":"py"}
from numpy import random
points = (random.rand(1000, 2) * 2.0) - 1.0
%% code {"language":"py"}
x = points[:, 0]
y = points[:, 1]
inside_circle = (x*x + y*y) < 1.0
pi = (float(np.sum(inside_circle)) / float(len(points))) * 4.0
pi
%% md
## Coming soon..
A couple things that already work that will be coming to this example notebook soon...
- Pandas support
- Plotting using D3 from Python
%% js
</script>
<div id='page'></div>
<script src='https://iodide.io/dist/iodide.pyodide-20180623.js'></script>
</body>
</html>
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="File" module="OFS.Image"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>__name__</string> </key>
<value> <string>python.html</string> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>text/html</string> </value>
</item>
<item>
<key> <string>precondition</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
This source diff could not be displayed because it is too large. You can view the blob instead.
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="File" module="OFS.Image"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>__name__</string> </key>
<value> <string>pytz.data</string> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>application/octet-stream</string> </value>
</item>
<item>
<key> <string>precondition</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
var Module = typeof pyodide !== 'undefined' ? pyodide : {};
if (!Module.expectedDataFileDownloads) {
Module.expectedDataFileDownloads = 0;
Module.finishedDataFileDownloads = 0;
}
Module.expectedDataFileDownloads++;
(function() {
var loadPackage = function(metadata) {
var PACKAGE_PATH;
if (typeof window === 'object') {
PACKAGE_PATH = window['encodeURIComponent'](window.location.pathname.toString().substring(0, window.location.pathname.toString().lastIndexOf('/')) + '/');
} else if (typeof location !== 'undefined') {
// worker
PACKAGE_PATH = encodeURIComponent(location.pathname.toString().substring(0, location.pathname.toString().lastIndexOf('/')) + '/');
} else {
throw 'using preloaded data can only be done on a web page or in a web worker';
}
var PACKAGE_NAME = '/home/nexedir/pyodide/packages/pytz/build/pytz.data';
var REMOTE_PACKAGE_BASE = 'pytz.data';
if (typeof Module['locateFilePackage'] === 'function' && !Module['locateFile']) {
Module['locateFile'] = Module['locateFilePackage'];
err('warning: you defined Module.locateFilePackage, that has been renamed to Module.locateFile (using your locateFilePackage for now)');
}
var REMOTE_PACKAGE_NAME = Module['locateFile'] ? Module['locateFile'](REMOTE_PACKAGE_BASE, '') : REMOTE_PACKAGE_BASE;
var REMOTE_PACKAGE_SIZE = metadata.remote_package_size;
var PACKAGE_UUID = metadata.package_uuid;
function fetchRemotePackage(packageName, packageSize, callback, errback) {
var xhr = new XMLHttpRequest();
xhr.open('GET', packageName, true);
xhr.responseType = 'arraybuffer';
xhr.onprogress = function(event) {
var url = packageName;
var size = packageSize;
if (event.total) size = event.total;
if (event.loaded) {
if (!xhr.addedTotal) {
xhr.addedTotal = true;
if (!Module.dataFileDownloads) Module.dataFileDownloads = {};
Module.dataFileDownloads[url] = {
loaded: event.loaded,
total: size
};
} else {
Module.dataFileDownloads[url].loaded = event.loaded;
}
var total = 0;
var loaded = 0;
var num = 0;
for (var download in Module.dataFileDownloads) {
var data = Module.dataFileDownloads[download];
total += data.total;
loaded += data.loaded;
num++;
}
total = Math.ceil(total * Module.expectedDataFileDownloads/num);
if (Module['setStatus']) Module['setStatus']('Downloading data... (' + loaded + '/' + total + ')');
} else if (!Module.dataFileDownloads) {
if (Module['setStatus']) Module['setStatus']('Downloading data...');
}
};
xhr.onerror = function(event) {
throw new Error("NetworkError for: " + packageName);
}
xhr.onload = function(event) {
if (xhr.status == 200 || xhr.status == 304 || xhr.status == 206 || (xhr.status == 0 && xhr.response)) { // file URLs can return 0
var packageData = xhr.response;
callback(packageData);
} else {
throw new Error(xhr.statusText + " : " + xhr.responseURL);
}
};
xhr.send(null);
};
function handleError(error) {
console.error('package error:', error);
};
var fetchedCallback = null;
var fetched = Module['getPreloadedPackage'] ? Module['getPreloadedPackage'](REMOTE_PACKAGE_NAME, REMOTE_PACKAGE_SIZE) : null;
if (!fetched) fetchRemotePackage(REMOTE_PACKAGE_NAME, REMOTE_PACKAGE_SIZE, function(data) {
if (fetchedCallback) {
fetchedCallback(data);
fetchedCallback = null;
} else {
fetched = data;
}
}, handleError);
function runWithFS() {
function assert(check, msg) {
if (!check) throw msg + new Error().stack;
}
Module['FS_createPath']('/', 'lib', true, true);
Module['FS_createPath']('/lib', 'python3.6', true, true);
Module['FS_createPath']('/lib/python3.6', 'site-packages', true, true);
Module['FS_createPath']('/lib/python3.6/site-packages', 'pytz', true, true);
Module['FS_createPath']('/lib/python3.6/site-packages/pytz', 'zoneinfo', true, true);
Module['FS_createPath']('/lib/python3.6/site-packages/pytz/zoneinfo', 'Canada', true, true);
Module['FS_createPath']('/lib/python3.6/site-packages/pytz/zoneinfo', 'Chile', true, true);
Module['FS_createPath']('/lib/python3.6/site-packages/pytz/zoneinfo', 'Antarctica', true, true);
Module['FS_createPath']('/lib/python3.6/site-packages/pytz/zoneinfo', 'Australia', true, true);
Module['FS_createPath']('/lib/python3.6/site-packages/pytz/zoneinfo', 'Asia', true, true);
Module['FS_createPath']('/lib/python3.6/site-packages/pytz/zoneinfo', 'Atlantic', true, true);
Module['FS_createPath']('/lib/python3.6/site-packages/pytz/zoneinfo', 'Brazil', true, true);
Module['FS_createPath']('/lib/python3.6/site-packages/pytz/zoneinfo', 'Arctic', true, true);
Module['FS_createPath']('/lib/python3.6/site-packages/pytz/zoneinfo', 'Pacific', true, true);
Module['FS_createPath']('/lib/python3.6/site-packages/pytz/zoneinfo', 'Etc', true, true);
Module['FS_createPath']('/lib/python3.6/site-packages/pytz/zoneinfo', 'US', true, true);
Module['FS_createPath']('/lib/python3.6/site-packages/pytz/zoneinfo', 'Africa', true, true);
Module['FS_createPath']('/lib/python3.6/site-packages/pytz/zoneinfo', 'Europe', true, true);
Module['FS_createPath']('/lib/python3.6/site-packages/pytz/zoneinfo', 'America', true, true);
Module['FS_createPath']('/lib/python3.6/site-packages/pytz/zoneinfo/America', 'North_Dakota', true, true);
Module['FS_createPath']('/lib/python3.6/site-packages/pytz/zoneinfo/America', 'Kentucky', true, true);
Module['FS_createPath']('/lib/python3.6/site-packages/pytz/zoneinfo/America', 'Indiana', true, true);
Module['FS_createPath']('/lib/python3.6/site-packages/pytz/zoneinfo/America', 'Argentina', true, true);
Module['FS_createPath']('/lib/python3.6/site-packages/pytz/zoneinfo', 'Indian', true, true);
Module['FS_createPath']('/lib/python3.6/site-packages/pytz/zoneinfo', 'Mexico', true, true);
function DataRequest(start, end, audio) {
this.start = start;
this.end = end;
this.audio = audio;
}
DataRequest.prototype = {
requests: {},
open: function(mode, name) {
this.name = name;
this.requests[name] = this;
Module['addRunDependency']('fp ' + this.name);
},
send: function() {},
onload: function() {
var byteArray = this.byteArray.subarray(this.start, this.end);
this.finish(byteArray);
},
finish: function(byteArray) {
var that = this;
Module['FS_createPreloadedFile'](this.name, null, byteArray, true, true, function() {
Module['removeRunDependency']('fp ' + that.name);
}, function() {
if (that.audio) {
Module['removeRunDependency']('fp ' + that.name); // workaround for chromium bug 124926 (still no audio with this, but at least we don't hang)
} else {
err('Preloading file ' + that.name + ' failed');
}
}, false, true); // canOwn this data in the filesystem, it is a slide into the heap that will never change
this.requests[this.name] = null;
}
};
var files = metadata.files;
for (var i = 0; i < files.length; ++i) {
new DataRequest(files[i].start, files[i].end, files[i].audio).open('GET', files[i].filename);
}
function processPackageData(arrayBuffer) {
Module.finishedDataFileDownloads++;
assert(arrayBuffer, 'Loading data file failed.');
assert(arrayBuffer instanceof ArrayBuffer, 'bad input to processPackageData');
var byteArray = new Uint8Array(arrayBuffer);
var curr;
// copy the entire loaded file into a spot in the heap. Files will refer to slices in that. They cannot be freed though
// (we may be allocating before malloc is ready, during startup).
if (Module['SPLIT_MEMORY']) err('warning: you should run the file packager with --no-heap-copy when SPLIT_MEMORY is used, otherwise copying into the heap may fail due to the splitting');
var ptr = Module['getMemory'](byteArray.length);
Module['HEAPU8'].set(byteArray, ptr);
DataRequest.prototype.byteArray = Module['HEAPU8'].subarray(ptr, ptr+byteArray.length);
var files = metadata.files;
for (var i = 0; i < files.length; ++i) {
DataRequest.prototype.requests[files[i].filename].onload();
}
Module['removeRunDependency']('datafile_/home/nexedir/pyodide/packages/pytz/build/pytz.data');
};
Module['addRunDependency']('datafile_/home/nexedir/pyodide/packages/pytz/build/pytz.data');
if (!Module.preloadResults) Module.preloadResults = {};
Module.preloadResults[PACKAGE_NAME] = {fromCache: false};
if (fetched) {
processPackageData(fetched);
fetched = null;
} else {
fetchedCallback = processPackageData;
}
}
if (Module['calledRun']) {
runWithFS();
} else {
if (!Module['preRun']) Module['preRun'] = [];
Module["preRun"].push(runWithFS); // FS is not initialized yet, wait for it
}
}
loadPackage({"files": [{"start": 0, "audio": 0, "end": 4745, "filename": "/lib/python3.6/site-packages/pytz/tzfile.py"}, {"start": 4745, "audio": 0, "end": 38901, "filename": "/lib/python3.6/site-packages/pytz/__init__.py"}, {"start": 38901, "audio": 0, "end": 58173, "filename": "/lib/python3.6/site-packages/pytz/tzinfo.py"}, {"start": 58173, "audio": 0, "end": 59502, "filename": "/lib/python3.6/site-packages/pytz/exceptions.py"}, {"start": 59502, "audio": 0, "end": 63280, "filename": "/lib/python3.6/site-packages/pytz/reference.py"}, {"start": 63280, "audio": 0, "end": 68774, "filename": "/lib/python3.6/site-packages/pytz/lazy.py"}, {"start": 68774, "audio": 0, "end": 72319, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/posixrules"}, {"start": 72319, "audio": 0, "end": 72446, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/MST"}, {"start": 72446, "audio": 0, "end": 72573, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/GMT-0"}, {"start": 72573, "audio": 0, "end": 72891, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Japan"}, {"start": 72891, "audio": 0, "end": 73018, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/EST"}, {"start": 73018, "audio": 0, "end": 75723, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Poland"}, {"start": 75723, "audio": 0, "end": 79410, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/GB-Eire"}, {"start": 79410, "audio": 0, "end": 81286, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/EET"}, {"start": 81286, "audio": 0, "end": 83452, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Turkey"}, {"start": 83452, "audio": 0, "end": 83579, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/GMT0"}, {"start": 83579, "audio": 0, "end": 83706, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Greenwich"}, {"start": 83706, "audio": 0, "end": 86000, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/CST6CDT"}, {"start": 86000, "audio": 0, "end": 88294, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/EST5EDT"}, {"start": 88294, "audio": 0, "end": 88422, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/HST"}, {"start": 88422, "audio": 0, "end": 92109, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/GB"}, {"start": 92109, "audio": 0, "end": 93827, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Iran"}, {"start": 93827, "audio": 0, "end": 95929, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/CET"}, {"start": 95929, "audio": 0, "end": 96436, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Jamaica"}, {"start": 96436, "audio": 0, "end": 98309, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/WET"}, {"start": 98309, "audio": 0, "end": 100574, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Israel"}, {"start": 100574, "audio": 0, "end": 103027, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Navajo"}, {"start": 103027, "audio": 0, "end": 105487, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/NZ"}, {"start": 105487, "audio": 0, "end": 123268, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/zone1970.tab"}, {"start": 123268, "audio": 0, "end": 125370, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/MET"}, {"start": 125370, "audio": 0, "end": 125629, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Kwajalein"}, {"start": 125629, "audio": 0, "end": 126043, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/PRC"}, {"start": 126043, "audio": 0, "end": 126170, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/UCT"}, {"start": 126170, "audio": 0, "end": 127359, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Hongkong"}, {"start": 127359, "audio": 0, "end": 127486, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/GMT+0"}, {"start": 127486, "audio": 0, "end": 128674, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Iceland"}, {"start": 128674, "audio": 0, "end": 130968, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/MST7MDT"}, {"start": 130968, "audio": 0, "end": 131095, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/UTC"}, {"start": 131095, "audio": 0, "end": 131750, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Libya"}, {"start": 131750, "audio": 0, "end": 135293, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Eire"}, {"start": 135293, "audio": 0, "end": 135441, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Factory"}, {"start": 135441, "audio": 0, "end": 135568, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/GMT"}, {"start": 135568, "audio": 0, "end": 140013, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/iso3166.tab"}, {"start": 140013, "audio": 0, "end": 140544, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/ROK"}, {"start": 140544, "audio": 0, "end": 142088, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/W-SU"}, {"start": 142088, "audio": 0, "end": 145557, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Portugal"}, {"start": 145557, "audio": 0, "end": 252196, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/tzdata.zi"}, {"start": 252196, "audio": 0, "end": 252323, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Universal"}, {"start": 252323, "audio": 0, "end": 254519, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/leapseconds"}, {"start": 254519, "audio": 0, "end": 273684, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/zone.tab"}, {"start": 273684, "audio": 0, "end": 274108, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Singapore"}, {"start": 274108, "audio": 0, "end": 274898, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/ROC"}, {"start": 274898, "audio": 0, "end": 276870, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Egypt"}, {"start": 276870, "audio": 0, "end": 276997, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Zulu"}, {"start": 276997, "audio": 0, "end": 279084, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/NZ-CHAT"}, {"start": 279084, "audio": 0, "end": 281378, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/PST8PDT"}, {"start": 281378, "audio": 0, "end": 283815, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Cuba"}, {"start": 283815, "audio": 0, "end": 284809, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Canada/Saskatchewan"}, {"start": 284809, "audio": 0, "end": 288247, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Canada/Atlantic"}, {"start": 288247, "audio": 0, "end": 290340, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Canada/Yukon"}, {"start": 290340, "audio": 0, "end": 293241, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Canada/Pacific"}, {"start": 293241, "audio": 0, "end": 296905, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Canada/Newfoundland"}, {"start": 296905, "audio": 0, "end": 299307, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Canada/Mountain"}, {"start": 299307, "audio": 0, "end": 302198, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Canada/Central"}, {"start": 302198, "audio": 0, "end": 305701, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Canada/Eastern"}, {"start": 305701, "audio": 0, "end": 308239, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Chile/Continental"}, {"start": 308239, "audio": 0, "end": 310481, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Chile/EasterIsland"}, {"start": 310481, "audio": 0, "end": 311657, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Antarctica/Troll"}, {"start": 311657, "audio": 0, "end": 314117, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Antarctica/McMurdo"}, {"start": 314117, "audio": 0, "end": 314428, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Antarctica/Davis"}, {"start": 314428, "audio": 0, "end": 315971, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Antarctica/Macquarie"}, {"start": 315971, "audio": 0, "end": 318431, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Antarctica/South_Pole"}, {"start": 318431, "audio": 0, "end": 318617, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Antarctica/Rothera"}, {"start": 318617, "audio": 0, "end": 318928, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Antarctica/Casey"}, {"start": 318928, "audio": 0, "end": 319144, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Antarctica/DumontDUrville"}, {"start": 319144, "audio": 0, "end": 319331, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Antarctica/Vostok"}, {"start": 319331, "audio": 0, "end": 319518, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Antarctica/Syowa"}, {"start": 319518, "audio": 0, "end": 319743, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Antarctica/Mawson"}, {"start": 319743, "audio": 0, "end": 321175, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Antarctica/Palmer"}, {"start": 321175, "audio": 0, "end": 321697, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Australia/Lindeman"}, {"start": 321697, "audio": 0, "end": 323935, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Australia/Adelaide"}, {"start": 323935, "audio": 0, "end": 326209, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Australia/Broken_Hill"}, {"start": 326209, "audio": 0, "end": 326688, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Australia/West"}, {"start": 326688, "audio": 0, "end": 328911, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Australia/Victoria"}, {"start": 328911, "audio": 0, "end": 330800, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Australia/LHI"}, {"start": 330800, "audio": 0, "end": 333038, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Australia/South"}, {"start": 333038, "audio": 0, "end": 335261, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Australia/ACT"}, {"start": 335261, "audio": 0, "end": 337484, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Australia/Melbourne"}, {"start": 337484, "audio": 0, "end": 337936, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Australia/Brisbane"}, {"start": 337936, "audio": 0, "end": 338439, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Australia/Eucla"}, {"start": 338439, "audio": 0, "end": 338762, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Australia/Darwin"}, {"start": 338762, "audio": 0, "end": 340985, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Australia/Canberra"}, {"start": 340985, "audio": 0, "end": 341308, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Australia/North"}, {"start": 341308, "audio": 0, "end": 343531, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Australia/Sydney"}, {"start": 343531, "audio": 0, "end": 345866, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Australia/Tasmania"}, {"start": 345866, "audio": 0, "end": 346318, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Australia/Queensland"}, {"start": 346318, "audio": 0, "end": 346797, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Australia/Perth"}, {"start": 346797, "audio": 0, "end": 349020, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Australia/NSW"}, {"start": 349020, "audio": 0, "end": 351294, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Australia/Yancowinna"}, {"start": 351294, "audio": 0, "end": 353183, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Australia/Lord_Howe"}, {"start": 353183, "audio": 0, "end": 355518, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Australia/Hobart"}, {"start": 355518, "audio": 0, "end": 357741, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Australia/Currie"}, {"start": 357741, "audio": 0, "end": 358758, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Aqtau"}, {"start": 358758, "audio": 0, "end": 359803, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Bishkek"}, {"start": 359803, "audio": 0, "end": 359990, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Riyadh"}, {"start": 359990, "audio": 0, "end": 360228, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Katmandu"}, {"start": 360228, "audio": 0, "end": 361275, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Qyzylorda"}, {"start": 361275, "audio": 0, "end": 361500, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Bahrain"}, {"start": 361500, "audio": 0, "end": 362781, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Yekaterinburg"}, {"start": 362781, "audio": 0, "end": 365104, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Hebron"}, {"start": 365104, "audio": 0, "end": 365416, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Kolkata"}, {"start": 365416, "audio": 0, "end": 366455, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Oral"}, {"start": 366455, "audio": 0, "end": 367710, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Barnaul"}, {"start": 367710, "audio": 0, "end": 367939, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Thimbu"}, {"start": 367939, "audio": 0, "end": 368328, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Saigon"}, {"start": 368328, "audio": 0, "end": 369375, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Aqtobe"}, {"start": 369375, "audio": 0, "end": 369628, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Dili"}, {"start": 369628, "audio": 0, "end": 370872, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Srednekolymsk"}, {"start": 370872, "audio": 0, "end": 372115, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Yakutsk"}, {"start": 372115, "audio": 0, "end": 373036, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Ulan_Bator"}, {"start": 373036, "audio": 0, "end": 373450, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Chungking"}, {"start": 373450, "audio": 0, "end": 374639, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Hong_Kong"}, {"start": 374639, "audio": 0, "end": 374877, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Kathmandu"}, {"start": 374877, "audio": 0, "end": 376153, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Irkutsk"}, {"start": 376153, "audio": 0, "end": 377350, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Novokuznetsk"}, {"start": 377350, "audio": 0, "end": 379392, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Famagusta"}, {"start": 379392, "audio": 0, "end": 379579, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Urumqi"}, {"start": 379579, "audio": 0, "end": 381844, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Tel_Aviv"}, {"start": 381844, "audio": 0, "end": 383134, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Ust-Nera"}, {"start": 383134, "audio": 0, "end": 383504, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Dhaka"}, {"start": 383504, "audio": 0, "end": 384025, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Kuching"}, {"start": 384025, "audio": 0, "end": 385336, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Khandyga"}, {"start": 385336, "audio": 0, "end": 385648, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Calcutta"}, {"start": 385648, "audio": 0, "end": 387366, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Tehran"}, {"start": 387366, "audio": 0, "end": 387780, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Shanghai"}, {"start": 387780, "audio": 0, "end": 388031, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Jayapura"}, {"start": 388031, "audio": 0, "end": 389062, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Almaty"}, {"start": 389062, "audio": 0, "end": 389291, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Brunei"}, {"start": 389291, "audio": 0, "end": 389511, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Vientiane"}, {"start": 389511, "audio": 0, "end": 390755, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Vladivostok"}, {"start": 390755, "audio": 0, "end": 390942, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Aden"}, {"start": 390942, "audio": 0, "end": 391334, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Jakarta"}, {"start": 391334, "audio": 0, "end": 391729, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Pontianak"}, {"start": 391729, "audio": 0, "end": 392754, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Atyrau"}, {"start": 392754, "audio": 0, "end": 393745, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Choibalsan"}, {"start": 393745, "audio": 0, "end": 393965, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Bangkok"}, {"start": 393965, "audio": 0, "end": 396285, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Damascus"}, {"start": 396285, "audio": 0, "end": 396652, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Manila"}, {"start": 396652, "audio": 0, "end": 397069, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Karachi"}, {"start": 397069, "audio": 0, "end": 398282, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Yerevan"}, {"start": 398282, "audio": 0, "end": 398502, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Phnom_Penh"}, {"start": 398502, "audio": 0, "end": 400668, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Istanbul"}, {"start": 400668, "audio": 0, "end": 401092, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Kuala_Lumpur"}, {"start": 401092, "audio": 0, "end": 402350, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Magadan"}, {"start": 402350, "audio": 0, "end": 402763, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Colombo"}, {"start": 402763, "audio": 0, "end": 403684, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Ulaanbaatar"}, {"start": 403684, "audio": 0, "end": 403871, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Kashgar"}, {"start": 403871, "audio": 0, "end": 404260, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Ho_Chi_Minh"}, {"start": 404260, "audio": 0, "end": 404489, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Kabul"}, {"start": 404489, "audio": 0, "end": 405124, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Tashkent"}, {"start": 405124, "audio": 0, "end": 405745, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Dushanbe"}, {"start": 405745, "audio": 0, "end": 406276, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Seoul"}, {"start": 406276, "audio": 0, "end": 406548, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Pyongyang"}, {"start": 406548, "audio": 0, "end": 406773, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Qatar"}, {"start": 406773, "audio": 0, "end": 407424, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Ashkhabad"}, {"start": 407424, "audio": 0, "end": 407712, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Ujung_Pandang"}, {"start": 407712, "audio": 0, "end": 408792, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Tbilisi"}, {"start": 408792, "audio": 0, "end": 409443, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Ashgabat"}, {"start": 409443, "audio": 0, "end": 410686, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Krasnoyarsk"}, {"start": 410686, "audio": 0, "end": 412563, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Amman"}, {"start": 412563, "audio": 0, "end": 413832, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Baku"}, {"start": 413832, "audio": 0, "end": 414603, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Macao"}, {"start": 414603, "audio": 0, "end": 416619, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Nicosia"}, {"start": 416619, "audio": 0, "end": 417623, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Baghdad"}, {"start": 417623, "audio": 0, "end": 419798, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Beirut"}, {"start": 419798, "audio": 0, "end": 422093, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Gaza"}, {"start": 422093, "audio": 0, "end": 422280, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Muscat"}, {"start": 422280, "audio": 0, "end": 422899, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Samarkand"}, {"start": 422899, "audio": 0, "end": 423670, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Macau"}, {"start": 423670, "audio": 0, "end": 423967, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Rangoon"}, {"start": 423967, "audio": 0, "end": 424381, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Harbin"}, {"start": 424381, "audio": 0, "end": 424805, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Singapore"}, {"start": 424805, "audio": 0, "end": 427070, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Jerusalem"}, {"start": 427070, "audio": 0, "end": 428325, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Tomsk"}, {"start": 428325, "audio": 0, "end": 429246, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Hovd"}, {"start": 429246, "audio": 0, "end": 430480, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Sakhalin"}, {"start": 430480, "audio": 0, "end": 430894, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Chongqing"}, {"start": 430894, "audio": 0, "end": 431264, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Dacca"}, {"start": 431264, "audio": 0, "end": 431451, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Dubai"}, {"start": 431451, "audio": 0, "end": 432673, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Anadyr"}, {"start": 432673, "audio": 0, "end": 433930, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Chita"}, {"start": 433930, "audio": 0, "end": 434159, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Thimphu"}, {"start": 434159, "audio": 0, "end": 435414, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Novosibirsk"}, {"start": 435414, "audio": 0, "end": 436612, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Kamchatka"}, {"start": 436612, "audio": 0, "end": 436799, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Kuwait"}, {"start": 436799, "audio": 0, "end": 437117, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Tokyo"}, {"start": 437117, "audio": 0, "end": 438360, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Omsk"}, {"start": 438360, "audio": 0, "end": 438657, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Yangon"}, {"start": 438657, "audio": 0, "end": 438945, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Makassar"}, {"start": 438945, "audio": 0, "end": 439735, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Asia/Taipei"}, {"start": 439735, "audio": 0, "end": 443228, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Atlantic/Azores"}, {"start": 443228, "audio": 0, "end": 445139, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Atlantic/Canary"}, {"start": 445139, "audio": 0, "end": 446968, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Atlantic/Faeroe"}, {"start": 446968, "audio": 0, "end": 447252, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Atlantic/Cape_Verde"}, {"start": 447252, "audio": 0, "end": 449256, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Atlantic/Bermuda"}, {"start": 449256, "audio": 0, "end": 451507, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Atlantic/Jan_Mayen"}, {"start": 451507, "audio": 0, "end": 452695, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Atlantic/Reykjavik"}, {"start": 452695, "audio": 0, "end": 454524, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Atlantic/Faroe"}, {"start": 454524, "audio": 0, "end": 454705, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Atlantic/South_Georgia"}, {"start": 454705, "audio": 0, "end": 458189, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Atlantic/Madeira"}, {"start": 458189, "audio": 0, "end": 458359, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Atlantic/St_Helena"}, {"start": 458359, "audio": 0, "end": 459610, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Atlantic/Stanley"}, {"start": 459610, "audio": 0, "end": 460240, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Brazil/West"}, {"start": 460240, "audio": 0, "end": 460982, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Brazil/DeNoronha"}, {"start": 460982, "audio": 0, "end": 462998, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Brazil/East"}, {"start": 462998, "audio": 0, "end": 463660, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Brazil/Acre"}, {"start": 463660, "audio": 0, "end": 465911, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Arctic/Longyearbyen"}, {"start": 465911, "audio": 0, "end": 466179, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Galapagos"}, {"start": 466179, "audio": 0, "end": 468421, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Easter"}, {"start": 468421, "audio": 0, "end": 468617, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Pago_Pago"}, {"start": 468617, "audio": 0, "end": 468842, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Saipan"}, {"start": 468842, "audio": 0, "end": 469037, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Marquesas"}, {"start": 469037, "audio": 0, "end": 469365, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Noumea"}, {"start": 469365, "audio": 0, "end": 469647, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Nauru"}, {"start": 469647, "audio": 0, "end": 469868, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Fakaofo"}, {"start": 469868, "audio": 0, "end": 470261, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Tongatapu"}, {"start": 470261, "audio": 0, "end": 470443, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Palau"}, {"start": 470443, "audio": 0, "end": 470706, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Kiritimati"}, {"start": 470706, "audio": 0, "end": 470957, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Kosrae"}, {"start": 470957, "audio": 0, "end": 471559, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Rarotonga"}, {"start": 471559, "audio": 0, "end": 471742, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Yap"}, {"start": 471742, "audio": 0, "end": 471925, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Wallis"}, {"start": 471925, "audio": 0, "end": 472108, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Truk"}, {"start": 472108, "audio": 0, "end": 473242, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Apia"}, {"start": 473242, "audio": 0, "end": 474346, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Fiji"}, {"start": 474346, "audio": 0, "end": 474605, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Kwajalein"}, {"start": 474605, "audio": 0, "end": 474801, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Samoa"}, {"start": 474801, "audio": 0, "end": 474984, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Pohnpei"}, {"start": 474984, "audio": 0, "end": 475209, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Guam"}, {"start": 475209, "audio": 0, "end": 475532, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Norfolk"}, {"start": 475532, "audio": 0, "end": 475715, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Wake"}, {"start": 475715, "audio": 0, "end": 478175, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Auckland"}, {"start": 478175, "audio": 0, "end": 480262, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Chatham"}, {"start": 480262, "audio": 0, "end": 480468, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Port_Moresby"}, {"start": 480468, "audio": 0, "end": 480654, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Gambier"}, {"start": 480654, "audio": 0, "end": 480930, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Honolulu"}, {"start": 480930, "audio": 0, "end": 481206, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Johnston"}, {"start": 481206, "audio": 0, "end": 481402, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Midway"}, {"start": 481402, "audio": 0, "end": 481894, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Efate"}, {"start": 481894, "audio": 0, "end": 482190, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Bougainville"}, {"start": 482190, "audio": 0, "end": 482449, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Enderbury"}, {"start": 482449, "audio": 0, "end": 482632, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Chuuk"}, {"start": 482632, "audio": 0, "end": 482853, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Majuro"}, {"start": 482853, "audio": 0, "end": 483040, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Tahiti"}, {"start": 483040, "audio": 0, "end": 483223, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Tarawa"}, {"start": 483223, "audio": 0, "end": 483411, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Guadalcanal"}, {"start": 483411, "audio": 0, "end": 483677, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Niue"}, {"start": 483677, "audio": 0, "end": 483860, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Funafuti"}, {"start": 483860, "audio": 0, "end": 484043, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Ponape"}, {"start": 484043, "audio": 0, "end": 484266, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Pacific/Pitcairn"}, {"start": 484266, "audio": 0, "end": 484414, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Etc/GMT+2"}, {"start": 484414, "audio": 0, "end": 484541, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Etc/GMT-0"}, {"start": 484541, "audio": 0, "end": 484690, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Etc/GMT+12"}, {"start": 484690, "audio": 0, "end": 484839, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Etc/GMT-2"}, {"start": 484839, "audio": 0, "end": 484987, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Etc/GMT+3"}, {"start": 484987, "audio": 0, "end": 485114, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Etc/GMT0"}, {"start": 485114, "audio": 0, "end": 485241, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Etc/Greenwich"}, {"start": 485241, "audio": 0, "end": 485390, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Etc/GMT-7"}, {"start": 485390, "audio": 0, "end": 485540, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Etc/GMT-11"}, {"start": 485540, "audio": 0, "end": 485690, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Etc/GMT-12"}, {"start": 485690, "audio": 0, "end": 485839, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Etc/GMT-1"}, {"start": 485839, "audio": 0, "end": 485989, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Etc/GMT-14"}, {"start": 485989, "audio": 0, "end": 486138, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Etc/GMT-4"}, {"start": 486138, "audio": 0, "end": 486265, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Etc/UCT"}, {"start": 486265, "audio": 0, "end": 486413, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Etc/GMT+5"}, {"start": 486413, "audio": 0, "end": 486563, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Etc/GMT-10"}, {"start": 486563, "audio": 0, "end": 486712, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Etc/GMT-3"}, {"start": 486712, "audio": 0, "end": 486839, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Etc/GMT+0"}, {"start": 486839, "audio": 0, "end": 486989, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Etc/GMT-13"}, {"start": 486989, "audio": 0, "end": 487137, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Etc/GMT+8"}, {"start": 487137, "audio": 0, "end": 487286, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Etc/GMT-5"}, {"start": 487286, "audio": 0, "end": 487435, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Etc/GMT+11"}, {"start": 487435, "audio": 0, "end": 487562, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Etc/UTC"}, {"start": 487562, "audio": 0, "end": 487711, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Etc/GMT+10"}, {"start": 487711, "audio": 0, "end": 487838, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Etc/GMT"}, {"start": 487838, "audio": 0, "end": 487986, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Etc/GMT+7"}, {"start": 487986, "audio": 0, "end": 488134, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Etc/GMT+6"}, {"start": 488134, "audio": 0, "end": 488282, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Etc/GMT+1"}, {"start": 488282, "audio": 0, "end": 488409, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Etc/Universal"}, {"start": 488409, "audio": 0, "end": 488558, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Etc/GMT-8"}, {"start": 488558, "audio": 0, "end": 488706, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Etc/GMT+9"}, {"start": 488706, "audio": 0, "end": 488855, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Etc/GMT-6"}, {"start": 488855, "audio": 0, "end": 489004, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Etc/GMT-9"}, {"start": 489004, "audio": 0, "end": 489131, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Etc/Zulu"}, {"start": 489131, "audio": 0, "end": 489279, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Etc/GMT+4"}, {"start": 489279, "audio": 0, "end": 489632, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/US/Arizona"}, {"start": 489632, "audio": 0, "end": 492012, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/US/Alaska"}, {"start": 492012, "audio": 0, "end": 492208, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/US/Samoa"}, {"start": 492208, "audio": 0, "end": 494396, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/US/Michigan"}, {"start": 494396, "audio": 0, "end": 496071, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/US/East-Indiana"}, {"start": 496071, "audio": 0, "end": 498916, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/US/Pacific"}, {"start": 498916, "audio": 0, "end": 501281, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/US/Aleutian"}, {"start": 501281, "audio": 0, "end": 501557, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/US/Hawaii"}, {"start": 501557, "audio": 0, "end": 503994, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/US/Indiana-Starke"}, {"start": 503994, "audio": 0, "end": 506447, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/US/Mountain"}, {"start": 506447, "audio": 0, "end": 510032, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/US/Central"}, {"start": 510032, "audio": 0, "end": 513577, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/US/Eastern"}, {"start": 513577, "audio": 0, "end": 513747, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Lome"}, {"start": 513747, "audio": 0, "end": 513918, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Kinshasa"}, {"start": 513918, "audio": 0, "end": 514088, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Conakry"}, {"start": 514088, "audio": 0, "end": 514373, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Kampala"}, {"start": 514373, "audio": 0, "end": 514581, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Bissau"}, {"start": 514581, "audio": 0, "end": 514866, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Addis_Ababa"}, {"start": 514866, "audio": 0, "end": 516509, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Casablanca"}, {"start": 516509, "audio": 0, "end": 516780, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Johannesburg"}, {"start": 516780, "audio": 0, "end": 516951, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Lusaka"}, {"start": 516951, "audio": 0, "end": 517122, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Bangui"}, {"start": 517122, "audio": 0, "end": 517393, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Maseru"}, {"start": 517393, "audio": 0, "end": 517563, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Timbuktu"}, {"start": 517563, "audio": 0, "end": 517734, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Harare"}, {"start": 517734, "audio": 0, "end": 517905, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Gaborone"}, {"start": 517905, "audio": 0, "end": 518190, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Dar_es_Salaam"}, {"start": 518190, "audio": 0, "end": 518475, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Djibouti"}, {"start": 518475, "audio": 0, "end": 519505, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Windhoek"}, {"start": 519505, "audio": 0, "end": 520160, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Tripoli"}, {"start": 520160, "audio": 0, "end": 520920, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Algiers"}, {"start": 520920, "audio": 0, "end": 521090, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Abidjan"}, {"start": 521090, "audio": 0, "end": 521803, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Khartoum"}, {"start": 521803, "audio": 0, "end": 522074, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Mbabane"}, {"start": 522074, "audio": 0, "end": 522245, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Libreville"}, {"start": 522245, "audio": 0, "end": 522415, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Banjul"}, {"start": 522415, "audio": 0, "end": 522700, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Asmera"}, {"start": 522700, "audio": 0, "end": 522871, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Bujumbura"}, {"start": 522871, "audio": 0, "end": 523041, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Freetown"}, {"start": 523041, "audio": 0, "end": 523212, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Douala"}, {"start": 523212, "audio": 0, "end": 523383, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Lubumbashi"}, {"start": 523383, "audio": 0, "end": 524856, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Africa/El_Aaiun"}, {"start": 524856, "audio": 0, "end": 525698, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Accra"}, {"start": 525698, "audio": 0, "end": 527670, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Cairo"}, {"start": 527670, "audio": 0, "end": 527841, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Maputo"}, {"start": 527841, "audio": 0, "end": 528074, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Monrovia"}, {"start": 528074, "audio": 0, "end": 528244, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Bamako"}, {"start": 528244, "audio": 0, "end": 528415, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Niamey"}, {"start": 528415, "audio": 0, "end": 528586, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Porto-Novo"}, {"start": 528586, "audio": 0, "end": 528756, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Nouakchott"}, {"start": 528756, "audio": 0, "end": 528981, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Ndjamena"}, {"start": 528981, "audio": 0, "end": 529152, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Malabo"}, {"start": 529152, "audio": 0, "end": 529323, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Brazzaville"}, {"start": 529323, "audio": 0, "end": 529493, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Dakar"}, {"start": 529493, "audio": 0, "end": 529664, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Kigali"}, {"start": 529664, "audio": 0, "end": 529898, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Sao_Tome"}, {"start": 529898, "audio": 0, "end": 530069, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Luanda"}, {"start": 530069, "audio": 0, "end": 530752, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Juba"}, {"start": 530752, "audio": 0, "end": 531037, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Asmara"}, {"start": 531037, "audio": 0, "end": 531207, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Ouagadougou"}, {"start": 531207, "audio": 0, "end": 531378, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Blantyre"}, {"start": 531378, "audio": 0, "end": 531549, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Lagos"}, {"start": 531549, "audio": 0, "end": 531834, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Mogadishu"}, {"start": 531834, "audio": 0, "end": 532544, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Tunis"}, {"start": 532544, "audio": 0, "end": 534603, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Ceuta"}, {"start": 534603, "audio": 0, "end": 534888, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Africa/Nairobi"}, {"start": 534888, "audio": 0, "end": 536169, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Ulyanovsk"}, {"start": 536169, "audio": 0, "end": 538874, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Warsaw"}, {"start": 538874, "audio": 0, "end": 541095, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Bucharest"}, {"start": 541095, "audio": 0, "end": 542585, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Simferopol"}, {"start": 542585, "audio": 0, "end": 545222, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Madrid"}, {"start": 545222, "audio": 0, "end": 547337, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Zaporozhye"}, {"start": 547337, "audio": 0, "end": 549255, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Zurich"}, {"start": 549255, "audio": 0, "end": 552942, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Belfast"}, {"start": 552942, "audio": 0, "end": 555179, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Vienna"}, {"start": 555179, "audio": 0, "end": 557451, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Prague"}, {"start": 557451, "audio": 0, "end": 561138, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Europe/London"}, {"start": 561138, "audio": 0, "end": 564091, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Monaco"}, {"start": 564091, "audio": 0, "end": 566363, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Bratislava"}, {"start": 566363, "audio": 0, "end": 567560, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Saratov"}, {"start": 567560, "audio": 0, "end": 571247, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Isle_of_Man"}, {"start": 571247, "audio": 0, "end": 573204, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Belgrade"}, {"start": 573204, "audio": 0, "end": 575113, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Helsinki"}, {"start": 575113, "audio": 0, "end": 577312, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Vilnius"}, {"start": 577312, "audio": 0, "end": 579269, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Skopje"}, {"start": 579269, "audio": 0, "end": 581504, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Riga"}, {"start": 581504, "audio": 0, "end": 584196, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Rome"}, {"start": 584196, "audio": 0, "end": 586105, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Mariehamn"}, {"start": 586105, "audio": 0, "end": 588510, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Budapest"}, {"start": 588510, "audio": 0, "end": 592197, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Jersey"}, {"start": 592197, "audio": 0, "end": 594327, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Sofia"}, {"start": 594327, "audio": 0, "end": 596578, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Oslo"}, {"start": 596578, "audio": 0, "end": 598744, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Istanbul"}, {"start": 598744, "audio": 0, "end": 600701, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Ljubljana"}, {"start": 600701, "audio": 0, "end": 602888, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Tallinn"}, {"start": 602888, "audio": 0, "end": 605048, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Copenhagen"}, {"start": 605048, "audio": 0, "end": 607677, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Malta"}, {"start": 607677, "audio": 0, "end": 608930, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Samara"}, {"start": 608930, "audio": 0, "end": 611622, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Europe/San_Marino"}, {"start": 611622, "audio": 0, "end": 614592, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Brussels"}, {"start": 614592, "audio": 0, "end": 616695, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Uzhgorod"}, {"start": 616695, "audio": 0, "end": 618613, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Vaduz"}, {"start": 618613, "audio": 0, "end": 621562, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Amsterdam"}, {"start": 621562, "audio": 0, "end": 622729, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Volgograd"}, {"start": 622729, "audio": 0, "end": 625174, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Tiraspol"}, {"start": 625174, "audio": 0, "end": 627619, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Chisinau"}, {"start": 627619, "audio": 0, "end": 629717, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Tirane"}, {"start": 629717, "audio": 0, "end": 633186, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Lisbon"}, {"start": 633186, "audio": 0, "end": 634704, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Kaliningrad"}, {"start": 634704, "audio": 0, "end": 638391, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Guernsey"}, {"start": 638391, "audio": 0, "end": 641452, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Gibraltar"}, {"start": 641452, "audio": 0, "end": 644426, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Luxembourg"}, {"start": 644426, "audio": 0, "end": 645970, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Moscow"}, {"start": 645970, "audio": 0, "end": 647986, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Nicosia"}, {"start": 647986, "audio": 0, "end": 650678, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Vatican"}, {"start": 650678, "audio": 0, "end": 652596, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Busingen"}, {"start": 652596, "audio": 0, "end": 654553, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Sarajevo"}, {"start": 654553, "audio": 0, "end": 656650, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Kiev"}, {"start": 656650, "audio": 0, "end": 658985, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Berlin"}, {"start": 658985, "audio": 0, "end": 660903, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Stockholm"}, {"start": 660903, "audio": 0, "end": 663174, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Athens"}, {"start": 663174, "audio": 0, "end": 664371, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Astrakhan"}, {"start": 664371, "audio": 0, "end": 667342, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Paris"}, {"start": 667342, "audio": 0, "end": 669299, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Zagreb"}, {"start": 669299, "audio": 0, "end": 672842, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Dublin"}, {"start": 672842, "audio": 0, "end": 674593, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Andorra"}, {"start": 674593, "audio": 0, "end": 676550, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Podgorica"}, {"start": 676550, "audio": 0, "end": 677717, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Kirov"}, {"start": 677717, "audio": 0, "end": 679087, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Europe/Minsk"}, {"start": 679087, "audio": 0, "end": 679353, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/America/Guyana"}, {"start": 679353, "audio": 0, "end": 681451, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/America/Cambridge_Bay"}, {"start": 681451, "audio": 0, "end": 682907, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/America/Merida"}, {"start": 682907, "audio": 0, "end": 683539, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/America/Santarem"}, {"start": 683539, "audio": 0, "end": 683845, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/America/Guatemala"}, {"start": 683845, "audio": 0, "end": 684116, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/America/Bogota"}, {"start": 684116, "audio": 0, "end": 684286, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/America/Port_of_Spain"}, {"start": 684286, "audio": 0, "end": 686216, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/America/Resolute"}, {"start": 686216, "audio": 0, "end": 687891, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/America/Fort_Wayne"}, {"start": 687891, "audio": 0, "end": 689984, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/America/Whitehorse"}, {"start": 689984, "audio": 0, "end": 691093, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/America/Rosario"}, {"start": 691093, "audio": 0, "end": 691364, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/America/Guayaquil"}, {"start": 691364, "audio": 0, "end": 694583, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/America/Goose_Bay"}, {"start": 694583, "audio": 0, "end": 698247, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/America/St_Johns"}, {"start": 698247, "audio": 0, "end": 699241, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/America/Regina"}, {"start": 699241, "audio": 0, "end": 701372, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/America/Rainy_River"}, {"start": 701372, "audio": 0, "end": 701661, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/America/Caracas"}, {"start": 701661, "audio": 0, "end": 701873, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/America/Kralendijk"}, {"start": 701873, "audio": 0, "end": 703981, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/America/Pangnirtung"}, {"start": 703981, "audio": 0, "end": 705545, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/America/Montevideo"}, {"start": 705545, "audio": 0, "end": 707895, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/America/Sitka"}, {"start": 707895, "audio": 0, "end": 709825, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/America/Scoresbysund"}, {"start": 709825, "audio": 0, "end": 710595, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/America/Maceio"}, {"start": 710595, "audio": 0, "end": 712183, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/America/Bahia_Banderas"}, {"start": 712183, "audio": 0, "end": 712674, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/America/Santo_Domingo"}, {"start": 712674, "audio": 0, "end": 714957, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/America/Menominee"}, {"start": 714957, "audio": 0, "end": 715127, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/America/St_Lucia"}, {"start": 715127, "audio": 0, "end": 715360, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/America/Creston"}, {"start": 715360, "audio": 0, "end": 715867, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/America/Jamaica"}, {"start": 715867, "audio": 0, "end": 716208, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/America/Costa_Rica"}, {"start": 716208, "audio": 0, "end": 717904, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/America/Miquelon"}, {"start": 717904, "audio": 0, "end": 720260, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/America/Tijuana"}, {"start": 720260, "audio": 0, "end": 720510, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/America/El_Salvador"}, {"start": 720510, "audio": 0, "end": 722963, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/America/Shiprock"}, {"start": 722963, "audio": 0, "end": 723705, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/America/Fortaleza"}, {"start": 723705, "audio": 0, "end": 723875, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/America/Tortola"}, {"start": 723875, "audio": 0, "end": 724153, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/America/Tegucigalpa"}, {"start": 724153, "audio": 0, "end": 724755, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/America/Porto_Velho"}, {"start": 724755, "audio": 0, "end": 727646, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/America/Winnipeg"}, {"start": 727646, "audio": 0, "end": 727816, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/America/Virgin"}, {"start": 727816, "audio": 0, "end": 728478, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/America/Rio_Branco"}, {"start": 728478, "audio": 0, "end": 728932, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/America/Hermosillo"}, {"start": 728932, "audio": 0, "end": 731369, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/America/Havana"}, {"start": 731369, "audio": 0, "end": 732419, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/America/Bahia"}, {"start": 732419, "audio": 0, "end": 734407, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/America/Cuiaba"}, {"start": 734407, "audio": 0, "end": 734619, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/America/Lower_Princes"}, {"start": 734619, "audio": 0, "end": 736868, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/America/Fort_Nelson"}, {"start": 736868, "audio": 0, "end": 737092, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/America/Cayenne"}, {"start": 737092, "audio": 0, "end": 738656, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/America/Mazatlan"}, {"start": 738656, "audio": 0, "end": 741819, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/America/Moncton"}, {"start": 741819, "audio": 0, "end": 743341, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/America/Ojinaga"}, {"start": 743341, "audio": 0, "end": 745706, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/America/Atka"}, {"start": 745706, "audio": 0, "end": 745876, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/America/Anguilla"}, {"start": 745876, "audio": 0, "end": 747969, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/America/Dawson"}, {"start": 747969, "audio": 0, "end": 749078, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/America/Catamarca"}, {"start": 749078, "audio": 0, "end": 751362, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/America/Nassau"}, {"start": 751362, "audio": 0, "end": 753273, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/America/Punta_Arenas"}, {"start": 753273, "audio": 0, "end": 755676, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/America/Boise"}, {"start": 755676, "audio": 0, "end": 756107, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/America/Lima"}, {"start": 756107, "audio": 0, "end": 756849, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/America/Recife"}, {"start": 756849, "audio": 0, "end": 758267, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/America/Metlakatla"}, {"start": 758267, "audio": 0, "end": 761770, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/America/Toronto"}, {"start": 761770, "audio": 0, "end": 765355, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/America/Chicago"}, {"start": 765355, "audio": 0, "end": 767543, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/America/Detroit"}, {"start": 767543, "audio": 0, "end": 768624, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/America/Jujuy"}, {"start": 768624, "audio": 0, "end": 768794, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/America/St_Kitts"}, {"start": 768794, "audio": 0, "end": 769456, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/America/Porto_Acre"}, {"start": 769456, "audio": 0, "end": 771893, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/America/Knox_IN"}, {"start": 771893, "audio": 0, "end": 774269, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/America/Nome"}, {"start": 774269, "audio": 0, "end": 774526, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/America/La_Paz"}, {"start": 774526, "audio": 0, "end": 774822, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/America/Paramaribo"}, {"start": 774822, "audio": 0, "end": 774992, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/America/Montserrat"}, {"start": 774992, "audio": 0, "end": 775299, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/America/Blanc-Sablon"}, {"start": 775299, "audio": 0, "end": 775762, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/America/Managua"}, {"start": 775762, "audio": 0, "end": 775965, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/America/Panama"}, {"start": 775965, "audio": 0, "end": 776623, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/America/Boa_Vista"}, {"start": 776623, "audio": 0, "end": 778639, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/America/Sao_Paulo"}, {"start": 778639, "audio": 0, "end": 778809, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/America/St_Vincent"}, {"start": 778809, "audio": 0, "end": 779153, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/America/Barbados"}, {"start": 779153, "audio": 0, "end": 781934, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/America/Louisville"}, {"start": 781934, "audio": 0, "end": 783043, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/America/Cordoba"}, {"start": 783043, "audio": 0, "end": 785357, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/America/Yakutat"}, {"start": 785357, "audio": 0, "end": 787032, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/America/Indianapolis"}, {"start": 787032, "audio": 0, "end": 787634, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/America/Belem"}, {"start": 787634, "audio": 0, "end": 788264, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/America/Manaus"}, {"start": 788264, "audio": 0, "end": 788617, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/America/Phoenix"}, {"start": 788617, "audio": 0, "end": 790694, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/America/Asuncion"}, {"start": 790694, "audio": 0, "end": 791510, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/America/Cancun"}, {"start": 791510, "audio": 0, "end": 794948, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/America/Halifax"}, {"start": 794948, "audio": 0, "end": 795118, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/America/Marigot"}, {"start": 795118, "audio": 0, "end": 796640, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/America/Chihuahua"}, {"start": 796640, "audio": 0, "end": 797699, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/America/Dawson_Creek"}, {"start": 797699, "audio": 0, "end": 799910, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/America/Thunder_Bay"}, {"start": 799910, "audio": 0, "end": 801438, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/America/Thule"}, {"start": 801438, "audio": 0, "end": 802547, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/America/Mendoza"}, {"start": 802547, "audio": 0, "end": 804527, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/America/Yellowknife"}, {"start": 804527, "audio": 0, "end": 805239, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/America/Danmarkshavn"}, {"start": 805239, "audio": 0, "end": 805409, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/America/Guadeloupe"}, {"start": 805409, "audio": 0, "end": 805983, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/America/Swift_Current"}, {"start": 805983, "audio": 0, "end": 806195, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/America/Curacao"}, {"start": 806195, "audio": 0, "end": 808401, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/America/Glace_Bay"}, {"start": 808401, "audio": 0, "end": 808604, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/America/Cayman"}, {"start": 808604, "audio": 0, "end": 809582, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/America/Belize"}, {"start": 809582, "audio": 0, "end": 811512, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/America/Rankin_Inlet"}, {"start": 811512, "audio": 0, "end": 813892, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/America/Anchorage"}, {"start": 813892, "audio": 0, "end": 814062, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/America/Dominica"}, {"start": 814062, "audio": 0, "end": 814232, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/America/Grenada"}, {"start": 814232, "audio": 0, "end": 816588, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/America/Santa_Isabel"}, {"start": 816588, "audio": 0, "end": 817697, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/America/Buenos_Aires"}, {"start": 817697, "audio": 0, "end": 818439, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/America/Noronha"}, {"start": 818439, "audio": 0, "end": 818696, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/America/Martinique"}, {"start": 818696, "audio": 0, "end": 821061, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/America/Adak"}, {"start": 821061, "audio": 0, "end": 823192, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/America/Nipigon"}, {"start": 823192, "audio": 0, "end": 824608, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/America/Monterrey"}, {"start": 824608, "audio": 0, "end": 824820, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/America/Aruba"}, {"start": 824820, "audio": 0, "end": 826836, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/America/Campo_Grande"}, {"start": 826836, "audio": 0, "end": 829737, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/America/Vancouver"}, {"start": 829737, "audio": 0, "end": 831355, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/America/Mexico_City"}, {"start": 831355, "audio": 0, "end": 833401, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/America/Iqaluit"}, {"start": 833401, "audio": 0, "end": 835757, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/America/Ensenada"}, {"start": 835757, "audio": 0, "end": 839302, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/America/New_York"}, {"start": 839302, "audio": 0, "end": 839472, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/America/St_Thomas"}, {"start": 839472, "audio": 0, "end": 839727, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/America/Puerto_Rico"}, {"start": 839727, "audio": 0, "end": 843230, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/America/Montreal"}, {"start": 843230, "audio": 0, "end": 845158, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/America/Inuvik"}, {"start": 845158, "audio": 0, "end": 848003, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/America/Los_Angeles"}, {"start": 848003, "audio": 0, "end": 850456, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/America/Denver"}, {"start": 850456, "audio": 0, "end": 852337, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/America/Grand_Turk"}, {"start": 852337, "audio": 0, "end": 852507, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/America/St_Barthelemy"}, {"start": 852507, "audio": 0, "end": 854399, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/America/Godthab"}, {"start": 854399, "audio": 0, "end": 855854, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/America/Port-au-Prince"}, {"start": 855854, "audio": 0, "end": 857270, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/America/Matamoros"}, {"start": 857270, "audio": 0, "end": 857440, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/America/Antigua"}, {"start": 857440, "audio": 0, "end": 858350, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/America/Araguaina"}, {"start": 858350, "audio": 0, "end": 860752, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/America/Edmonton"}, {"start": 860752, "audio": 0, "end": 861097, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/America/Coral_Harbour"}, {"start": 861097, "audio": 0, "end": 861787, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/America/Eirunepe"}, {"start": 861787, "audio": 0, "end": 864325, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/America/Santiago"}, {"start": 864325, "audio": 0, "end": 864670, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/America/Atikokan"}, {"start": 864670, "audio": 0, "end": 867032, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/America/Juneau"}, {"start": 867032, "audio": 0, "end": 869421, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/America/North_Dakota/New_Salem"}, {"start": 869421, "audio": 0, "end": 871810, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/America/North_Dakota/Center"}, {"start": 871810, "audio": 0, "end": 874199, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/America/North_Dakota/Beulah"}, {"start": 874199, "audio": 0, "end": 876980, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/America/Kentucky/Louisville"}, {"start": 876980, "audio": 0, "end": 879341, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/America/Kentucky/Monticello"}, {"start": 879341, "audio": 0, "end": 881128, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/America/Indiana/Winamac"}, {"start": 881128, "audio": 0, "end": 882831, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/America/Indiana/Vincennes"}, {"start": 882831, "audio": 0, "end": 885268, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/America/Indiana/Knox"}, {"start": 885268, "audio": 0, "end": 886999, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/America/Indiana/Marengo"}, {"start": 886999, "audio": 0, "end": 888912, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/America/Indiana/Petersburg"}, {"start": 888912, "audio": 0, "end": 890587, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/America/Indiana/Indianapolis"}, {"start": 890587, "audio": 0, "end": 892010, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/America/Indiana/Vevay"}, {"start": 892010, "audio": 0, "end": 893745, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/America/Indiana/Tell_City"}, {"start": 893745, "audio": 0, "end": 894854, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/America/Argentina/Rio_Gallegos"}, {"start": 894854, "audio": 0, "end": 895935, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/America/Argentina/Salta"}, {"start": 895935, "audio": 0, "end": 897044, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/America/Argentina/Catamarca"}, {"start": 897044, "audio": 0, "end": 898181, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/America/Argentina/Tucuman"}, {"start": 898181, "audio": 0, "end": 899262, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/America/Argentina/Jujuy"}, {"start": 899262, "audio": 0, "end": 900371, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/America/Argentina/Cordoba"}, {"start": 900371, "audio": 0, "end": 901480, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/America/Argentina/Mendoza"}, {"start": 901480, "audio": 0, "end": 902589, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/America/Argentina/Buenos_Aires"}, {"start": 902589, "audio": 0, "end": 903712, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/America/Argentina/La_Rioja"}, {"start": 903712, "audio": 0, "end": 904821, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/America/Argentina/Ushuaia"}, {"start": 904821, "audio": 0, "end": 905930, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/America/Argentina/ComodRivadavia"}, {"start": 905930, "audio": 0, "end": 907069, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/America/Argentina/San_Luis"}, {"start": 907069, "audio": 0, "end": 908192, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/America/Argentina/San_Juan"}, {"start": 908192, "audio": 0, "end": 908379, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Indian/Reunion"}, {"start": 908379, "audio": 0, "end": 908604, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Indian/Chagos"}, {"start": 908604, "audio": 0, "end": 908889, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Indian/Comoro"}, {"start": 908889, "audio": 0, "end": 909080, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Indian/Cocos"}, {"start": 909080, "audio": 0, "end": 909267, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Indian/Kerguelen"}, {"start": 909267, "audio": 0, "end": 909534, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Indian/Mauritius"}, {"start": 909534, "audio": 0, "end": 909819, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Indian/Antananarivo"}, {"start": 909819, "audio": 0, "end": 910001, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Indian/Christmas"}, {"start": 910001, "audio": 0, "end": 910221, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Indian/Maldives"}, {"start": 910221, "audio": 0, "end": 910506, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Indian/Mayotte"}, {"start": 910506, "audio": 0, "end": 910693, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Indian/Mahe"}, {"start": 910693, "audio": 0, "end": 912311, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Mexico/General"}, {"start": 912311, "audio": 0, "end": 913875, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Mexico/BajaSur"}, {"start": 913875, "audio": 0, "end": 916231, "filename": "/lib/python3.6/site-packages/pytz/zoneinfo/Mexico/BajaNorte"}], "remote_package_size": 916231, "package_uuid": "7717fbf7-6cb4-4010-b33f-f9c602dd97d1"});
})();
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="File" module="OFS.Image"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>__name__</string> </key>
<value> <string>pytz.js</string> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>application/javascript</string> </value>
</item>
<item>
<key> <string>precondition</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
This source diff could not be displayed because it is too large. You can view the blob instead.
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="File" module="OFS.Image"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>__name__</string> </key>
<value> <string>xlrd.data</string> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>application/octet-stream</string> </value>
</item>
<item>
<key> <string>precondition</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
var Module = typeof pyodide !== 'undefined' ? pyodide : {};
if (!Module.expectedDataFileDownloads) {
Module.expectedDataFileDownloads = 0;
Module.finishedDataFileDownloads = 0;
}
Module.expectedDataFileDownloads++;
(function() {
var loadPackage = function(metadata) {
var PACKAGE_PATH;
if (typeof window === 'object') {
PACKAGE_PATH = window['encodeURIComponent'](window.location.pathname.toString().substring(0, window.location.pathname.toString().lastIndexOf('/')) + '/');
} else if (typeof location !== 'undefined') {
// worker
PACKAGE_PATH = encodeURIComponent(location.pathname.toString().substring(0, location.pathname.toString().lastIndexOf('/')) + '/');
} else {
throw 'using preloaded data can only be done on a web page or in a web worker';
}
var PACKAGE_NAME = '/home/nexedir/pyodide/packages/xlrd/build/xlrd.data';
var REMOTE_PACKAGE_BASE = 'xlrd.data';
if (typeof Module['locateFilePackage'] === 'function' && !Module['locateFile']) {
Module['locateFile'] = Module['locateFilePackage'];
err('warning: you defined Module.locateFilePackage, that has been renamed to Module.locateFile (using your locateFilePackage for now)');
}
var REMOTE_PACKAGE_NAME = Module['locateFile'] ? Module['locateFile'](REMOTE_PACKAGE_BASE, '') : REMOTE_PACKAGE_BASE;
var REMOTE_PACKAGE_SIZE = metadata.remote_package_size;
var PACKAGE_UUID = metadata.package_uuid;
function fetchRemotePackage(packageName, packageSize, callback, errback) {
var xhr = new XMLHttpRequest();
xhr.open('GET', packageName, true);
xhr.responseType = 'arraybuffer';
xhr.onprogress = function(event) {
var url = packageName;
var size = packageSize;
if (event.total) size = event.total;
if (event.loaded) {
if (!xhr.addedTotal) {
xhr.addedTotal = true;
if (!Module.dataFileDownloads) Module.dataFileDownloads = {};
Module.dataFileDownloads[url] = {
loaded: event.loaded,
total: size
};
} else {
Module.dataFileDownloads[url].loaded = event.loaded;
}
var total = 0;
var loaded = 0;
var num = 0;
for (var download in Module.dataFileDownloads) {
var data = Module.dataFileDownloads[download];
total += data.total;
loaded += data.loaded;
num++;
}
total = Math.ceil(total * Module.expectedDataFileDownloads/num);
if (Module['setStatus']) Module['setStatus']('Downloading data... (' + loaded + '/' + total + ')');
} else if (!Module.dataFileDownloads) {
if (Module['setStatus']) Module['setStatus']('Downloading data...');
}
};
xhr.onerror = function(event) {
throw new Error("NetworkError for: " + packageName);
}
xhr.onload = function(event) {
if (xhr.status == 200 || xhr.status == 304 || xhr.status == 206 || (xhr.status == 0 && xhr.response)) { // file URLs can return 0
var packageData = xhr.response;
callback(packageData);
} else {
throw new Error(xhr.statusText + " : " + xhr.responseURL);
}
};
xhr.send(null);
};
function handleError(error) {
console.error('package error:', error);
};
var fetchedCallback = null;
var fetched = Module['getPreloadedPackage'] ? Module['getPreloadedPackage'](REMOTE_PACKAGE_NAME, REMOTE_PACKAGE_SIZE) : null;
if (!fetched) fetchRemotePackage(REMOTE_PACKAGE_NAME, REMOTE_PACKAGE_SIZE, function(data) {
if (fetchedCallback) {
fetchedCallback(data);
fetchedCallback = null;
} else {
fetched = data;
}
}, handleError);
function runWithFS() {
function assert(check, msg) {
if (!check) throw msg + new Error().stack;
}
Module['FS_createPath']('/', 'lib', true, true);
Module['FS_createPath']('/lib', 'python3.6', true, true);
Module['FS_createPath']('/lib/python3.6', 'site-packages', true, true);
Module['FS_createPath']('/lib/python3.6/site-packages', 'xlrd', true, true);
Module['FS_createPath']('/lib/python3.6/site-packages/xlrd', 'examples', true, true);
function DataRequest(start, end, audio) {
this.start = start;
this.end = end;
this.audio = audio;
}
DataRequest.prototype = {
requests: {},
open: function(mode, name) {
this.name = name;
this.requests[name] = this;
Module['addRunDependency']('fp ' + this.name);
},
send: function() {},
onload: function() {
var byteArray = this.byteArray.subarray(this.start, this.end);
this.finish(byteArray);
},
finish: function(byteArray) {
var that = this;
Module['FS_createPreloadedFile'](this.name, null, byteArray, true, true, function() {
Module['removeRunDependency']('fp ' + that.name);
}, function() {
if (that.audio) {
Module['removeRunDependency']('fp ' + that.name); // workaround for chromium bug 124926 (still no audio with this, but at least we don't hang)
} else {
err('Preloading file ' + that.name + ' failed');
}
}, false, true); // canOwn this data in the filesystem, it is a slide into the heap that will never change
this.requests[this.name] = null;
}
};
var files = metadata.files;
for (var i = 0; i < files.length; ++i) {
new DataRequest(files[i].start, files[i].end, files[i].audio).open('GET', files[i].filename);
}
function processPackageData(arrayBuffer) {
Module.finishedDataFileDownloads++;
assert(arrayBuffer, 'Loading data file failed.');
assert(arrayBuffer instanceof ArrayBuffer, 'bad input to processPackageData');
var byteArray = new Uint8Array(arrayBuffer);
var curr;
// copy the entire loaded file into a spot in the heap. Files will refer to slices in that. They cannot be freed though
// (we may be allocating before malloc is ready, during startup).
if (Module['SPLIT_MEMORY']) err('warning: you should run the file packager with --no-heap-copy when SPLIT_MEMORY is used, otherwise copying into the heap may fail due to the splitting');
var ptr = Module['getMemory'](byteArray.length);
Module['HEAPU8'].set(byteArray, ptr);
DataRequest.prototype.byteArray = Module['HEAPU8'].subarray(ptr, ptr+byteArray.length);
var files = metadata.files;
for (var i = 0; i < files.length; ++i) {
DataRequest.prototype.requests[files[i].filename].onload();
}
Module['removeRunDependency']('datafile_/home/nexedir/pyodide/packages/xlrd/build/xlrd.data');
};
Module['addRunDependency']('datafile_/home/nexedir/pyodide/packages/xlrd/build/xlrd.data');
if (!Module.preloadResults) Module.preloadResults = {};
Module.preloadResults[PACKAGE_NAME] = {fromCache: false};
if (fetched) {
processPackageData(fetched);
fetched = null;
} else {
fetchedCallback = processPackageData;
}
}
if (Module['calledRun']) {
runWithFS();
} else {
if (!Module['preRun']) Module['preRun'] = [];
Module["preRun"].push(runWithFS); // FS is not initialized yet, wait for it
}
}
loadPackage({"files": [{"start": 0, "audio": 0, "end": 1756, "filename": "/lib/python3.6/site-packages/xlrd/timemachine.py"}, {"start": 1756, "audio": 0, "end": 9698, "filename": "/lib/python3.6/site-packages/xlrd/xldate.py"}, {"start": 9698, "audio": 0, "end": 30673, "filename": "/lib/python3.6/site-packages/xlrd/compdoc.py"}, {"start": 30673, "audio": 0, "end": 87640, "filename": "/lib/python3.6/site-packages/xlrd/book.py"}, {"start": 87640, "audio": 0, "end": 93987, "filename": "/lib/python3.6/site-packages/xlrd/__init__.py"}, {"start": 93987, "audio": 0, "end": 188670, "filename": "/lib/python3.6/site-packages/xlrd/formula.py"}, {"start": 188670, "audio": 0, "end": 205350, "filename": "/lib/python3.6/site-packages/xlrd/biffh.py"}, {"start": 205350, "audio": 0, "end": 239529, "filename": "/lib/python3.6/site-packages/xlrd/xlsx.py"}, {"start": 239529, "audio": 0, "end": 239551, "filename": "/lib/python3.6/site-packages/xlrd/info.py"}, {"start": 239551, "audio": 0, "end": 345729, "filename": "/lib/python3.6/site-packages/xlrd/sheet.py"}, {"start": 345729, "audio": 0, "end": 390814, "filename": "/lib/python3.6/site-packages/xlrd/formatting.py"}, {"start": 390814, "audio": 0, "end": 397946, "filename": "/lib/python3.6/site-packages/xlrd/examples/xlrdnameAPIdemo.py"}, {"start": 397946, "audio": 0, "end": 420474, "filename": "/lib/python3.6/site-packages/xlrd/examples/namesdemo.xls"}], "remote_package_size": 420474, "package_uuid": "fee1cb8e-27fc-40c5-b7ba-c0fde67e1aad"});
})();
<?xml version="1.0"?>
<ZopeData>
<record id="1" aka="AAAAAAAAAAE=">
<pickle>
<global name="File" module="OFS.Image"/>
</pickle>
<pickle>
<dictionary>
<item>
<key> <string>__name__</string> </key>
<value> <string>xlrd.js</string> </value>
</item>
<item>
<key> <string>content_type</string> </key>
<value> <string>application/javascript</string> </value>
</item>
<item>
<key> <string>precondition</string> </key>
<value> <string></string> </value>
</item>
<item>
<key> <string>title</string> </key>
<value> <string></string> </value>
</item>
</dictionary>
</pickle>
</record>
</ZopeData>
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment