PageSourceSearch

https://irbit-mz.ru/assets/actiontext-28c61f5197c204db043317a8f8826a87ab31495b741f854d307ca36122deefce.js

js irbit-mz.ru collected 2026-10-06 21:16:03 UTC 30,457 bytes, 880 lines download raw bytes

1var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
2
3var activestorage = {exports: {}};
4
5(function (module, exports) {
6(function(global, factory) {
7  factory(exports) ;
8})(commonjsGlobal, (function(exports) {
9  var sparkMd5 = {
10    exports: {}
11  };
12  (function(module, exports) {
13    (function(factory) {
14      {
15        module.exports = factory();
16      }
17    })((function(undefined$1) {
18      var hex_chr = [ "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f" ];
19      function md5cycle(x, k) {
20        var a = x[0], b = x[1], c = x[2], d = x[3];
21        a += (b & c | ~b & d) + k[0] - 680876936 | 0;
22        a = (a << 7 | a >>> 25) + b | 0;
23        d += (a & b | ~a & c) + k[1] - 389564586 | 0;
24        d = (d << 12 | d >>> 20) + a | 0;
25        c += (d & a | ~d & b) + k[2] + 606105819 | 0;
26        c = (c << 17 | c >>> 15) + d | 0;
27        b += (c & d | ~c & a) + k[3] - 1044525330 | 0;
28        b = (b << 22 | b >>> 10) + c | 0;
29        a += (b & c | ~b & d) + k[4] - 176418897 | 0;
30        a = (a << 7 | a >>> 25) + b | 0;
31        d += (a & b | ~a & c) + k[5] + 1200080426 | 0;
32        d = (d << 12 | d >>> 20) + a | 0;
33        c += (d & a | ~d & b) + k[6] - 1473231341 | 0;
34        c = (c << 17 | c >>> 15) + d | 0;
35        b += (c & d | ~c & a) + k[7] - 45705983 | 0;
36        b = (b << 22 | b >>> 10) + c | 0;
37        a += (b & c | ~b & d) + k[8] + 1770035416 | 0;
38        a = (a << 7 | a >>> 25) + b | 0;
39        d += (a & b | ~a & c) + k[9] - 1958414417 | 0;
40        d = (d << 12 | d >>> 20) + a | 0;
41        c += (d & a | ~d & b) + k[10] - 42063 | 0;
42        c = (c << 17 | c >>> 15) + d | 0;
43        b += (c & d | ~c & a) + k[11] - 1990404162 | 0;
44        b = (b << 22 | b >>> 10) + c | 0;
45        a += (b & c | ~b & d) + k[12] + 1804603682 | 0;
46        a = (a << 7 | a >>> 25) + b | 0;
47        d += (a & b | ~a & c) + k[13] - 40341101 | 0;
48        d = (d << 12 | d >>> 20) + a | 0;
49        c += (d & a | ~d & b) + k[14] - 1502002290 | 0;
50        c = (c << 17 | c >>> 15) + d | 0;
51        b += (c & d | ~c & a) + k[15] + 1236535329 | 0;
52        b = (b << 22 | b >>> 10) + c | 0;
53        a += (b & d | c & ~d) + k[1] - 165796510 | 0;
54        a = (a << 5 | a >>> 27) + b | 0;
55        d += (a & c | b & ~c) + k[6] - 1069501632 | 0;
56        d = (d << 9 | d >>> 23) + a | 0;
57        c += (d & b | a & ~b) + k[11] + 643717713 | 0;
58        c = (c << 14 | c >>> 18) + d | 0;
59        b += (c & a | d & ~a) + k[0] - 373897302 | 0;
60        b = (b << 20 | b >>> 12) + c | 0;
61        a += (b & d | c & ~d) + k[5] - 701558691 | 0;
62        a = (a << 5 | a >>> 27) + b | 0;
63        d += (a & c | b & ~c) + k[10] + 38016083 | 0;
64        d = (d << 9 | d >>> 23) + a | 0;
65        c += (d & b | a & ~b) + k[15] - 660478335 | 0;
66        c = (c << 14 | c >>> 18) + d | 0;
67        b += (c & a | d & ~a) + k[4] - 405537848 | 0;
68        b = (b << 20 | b >>> 12) + c | 0;
69        a += (b & d | c & ~d) + k[9] + 568446438 | 0;
70        a = (a << 5 | a >>> 27) + b | 0;
71        d += (a & c | b & ~c) + k[14] - 1019803690 | 0;
72        d = (d << 9 | d >>> 23) + a | 0;
73        c += (d & b | a & ~b) + k[3] - 187363961 | 0;
74        c = (c << 14 | c >>> 18) + d | 0;
75        b += (c & a | d & ~a) + k[8] + 1163531501 | 0;
76        b = (b << 20 | b >>> 12) + c | 0;
77        a += (b & d | c & ~d) + k[13] - 1444681467 | 0;
78        a = (a << 5 | a >>> 27) + b | 0;
79        d += (a & c | b & ~c) + k[2] - 51403784 | 0;
80        d = (d << 9 | d >>> 23) + a | 0;
81        c += (d & b | a & ~b) + k[7] + 1735328473 | 0;
82        c = (c << 14 | c >>> 18) + d | 0;
83        b += (c & a | d & ~a) + k[12] - 1926607734 | 0;
84        b = (b << 20 | b >>> 12) + c | 0;
85        a += (b ^ c ^ d) + k[5] - 378558 | 0;
86        a = (a << 4 | a >>> 28) + b | 0;
87        d += (a ^ b ^ c) + k[8] - 2022574463 | 0;
88        d = (d << 11 | d >>> 21) + a | 0;
89        c += (d ^ a ^ b) + k[11] + 1839030562 | 0;
90        c = (c << 16 | c >>> 16) + d | 0;
91        b += (c ^ d ^ a) + k[14] - 35309556 | 0;
92        b = (b << 23 | b >>> 9) + c | 0;
93        a += (b ^ c ^ d) + k[1] - 1530992060 | 0;
94        a = (a << 4 | a >>> 28) + b | 0;
95        d += (a ^ b ^ c) + k[4] + 1272893353 | 0;
96        d = (d << 11 | d >>> 21) + a | 0;
97        c += (d ^ a ^ b) + k[7] - 155497632 | 0;
98        c = (c << 16 | c >>> 16) + d | 0;
99        b += (c ^ d ^ a) + k[10] - 1094730640 | 0;
100        b = (b << 23 | b >>> 9) + c | 0;
101        a += (b ^ c ^ d) + k[13] + 681279174 | 0;
102        a = (a << 4 | a >>> 28) + b | 0;
103        d += (a ^ b ^ c) + k[0] - 358537222 | 0;
104        d = (d << 11 | d >>> 21) + a | 0;
105        c += (d ^ a ^ b) + k[3] - 722521979 | 0;
106        c = (c << 16 | c >>> 16) + d | 0;
107        b += (c ^ d ^ a) + k[6] + 76029189 | 0;
108        b = (b << 23 | b >>> 9) + c | 0;
109        a += (b ^ c ^ d) + k[9] - 640364487 | 0;
110        a = (a << 4 | a >>> 28) + b | 0;
111        d += (a ^ b ^ c) + k[12] - 421815835 | 0;
112        d = (d << 11 | d >>> 21) + a | 0;
113        c += (d ^ a ^ b) + k[15] + 530742520 | 0;
114        c = (c << 16 | c >>> 16) + d | 0;
115        b += (c ^ d ^ a) + k[2] - 995338651 | 0;
116        b = (b << 23 | b >>> 9) + c | 0;
117        a += (c ^ (b | ~d)) + k[0] - 198630844 | 0;
118        a = (a << 6 | a >>> 26) + b | 0;
119        d += (b ^ (a | ~c)) + k[7] + 1126891415 | 0;
120        d = (d << 10 | d >>> 22) + a | 0;
121        c += (a ^ (d | ~b)) + k[14] - 1416354905 | 0;
122        c = (c << 15 | c >>> 17) + d | 0;
123        b += (d ^ (c | ~a)) + k[5] - 57434055 | 0;
124        b = (b << 21 | b >>> 11) + c | 0;
125        a += (c ^ (b | ~d)) + k[12] + 1700485571 | 0;
126        a = (a << 6 | a >>> 26) + b | 0;
127        d += (b ^ (a | ~c)) + k[3] - 1894986606 | 0;
128        d = (d << 10 | d >>> 22) + a | 0;
129        c += (a ^ (d | ~b)) + k[10] - 1051523 | 0;
130        c = (c << 15 | c >>> 17) + d | 0;
131        b += (d ^ (c | ~a)) + k[1] - 2054922799 | 0;
132        b = (b << 21 | b >>> 11) + c | 0;
133        a += (c ^ (b | ~d)) + k[8] + 1873313359 | 0;
134        a = (a << 6 | a >>> 26) + b | 0;
135        d += (b ^ (a | ~c)) + k[15] - 30611744 | 0;
136        d = (d << 10 | d >>> 22) + a | 0;
137        c += (a ^ (d | ~b)) + k[6] - 1560198380 | 0;
138        c = (c << 15 | c >>> 17) + d | 0;
139        b += (d ^ (c | ~a)) + k[13] + 1309151649 | 0;
140        b = (b << 21 | b >>> 11) + c | 0;
141        a += (c ^ (b | ~d)) + k[4] - 145523070 | 0;
142        a = (a << 6 | a >>> 26) + b | 0;
vendor: 10,289 bytes, lines 143-428
143        d += (b ^ (a | ~c)) + k[11] - 1120210379 | 0;
144        d = (d << 10 | d >>> 22) + a | 0;
145        c += (a ^ (d | ~b)) + k[2] + 718787259 | 0;
146        c = (c << 15 | c >>> 17) + d | 0;
147        b += (d ^ (c | ~a)) + k[9] - 343485551 | 0;
148        b = (b << 21 | b >>> 11) + c | 0;
149        x[0] = a + x[0] | 0;
150        x[1] = b + x[1] | 0;
151        x[2] = c + x[2] | 0;
152        x[3] = d + x[3] | 0;
153      }
154      function md5blk(s) {
155        var md5blks = [], i;
156        for (i = 0; i < 64; i += 4) {
157          md5blks[i >> 2] = s.charCodeAt(i) + (s.charCodeAt(i + 1) << 8) + (s.charCodeAt(i + 2) << 16) + (s.charCodeAt(i + 3) << 24);
158        }
159        return md5blks;
160      }
161      function md5blk_array(a) {
162        var md5blks = [], i;
163        for (i = 0; i < 64; i += 4) {
164          md5blks[i >> 2] = a[i] + (a[i + 1] << 8) + (a[i + 2] << 16) + (a[i + 3] << 24);
165        }
166        return md5blks;
167      }
168      function md51(s) {
169        var n = s.length, state = [ 1732584193, -271733879, -1732584194, 271733878 ], i, length, tail, tmp, lo, hi;
170        for (i = 64; i <= n; i += 64) {
171          md5cycle(state, md5blk(s.substring(i - 64, i)));
172        }
173        s = s.substring(i - 64);
174        length = s.length;
175        tail = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ];
176        for (i = 0; i < length; i += 1) {
177          tail[i >> 2] |= s.charCodeAt(i) << (i % 4 << 3);
178        }
179        tail[i >> 2] |= 128 << (i % 4 << 3);
180        if (i > 55) {
181          md5cycle(state, tail);
182          for (i = 0; i < 16; i += 1) {
183            tail[i] = 0;
184          }
185        }
186        tmp = n * 8;
187        tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/);
188        lo = parseInt(tmp[2], 16);
189        hi = parseInt(tmp[1], 16) || 0;
190        tail[14] = lo;
191        tail[15] = hi;
192        md5cycle(state, tail);
193        return state;
194      }
195      function md51_array(a) {
196        var n = a.length, state = [ 1732584193, -271733879, -1732584194, 271733878 ], i, length, tail, tmp, lo, hi;
197        for (i = 64; i <= n; i += 64) {
198          md5cycle(state, md5blk_array(a.subarray(i - 64, i)));
199        }
200        a = i - 64 < n ? a.subarray(i - 64) : new Uint8Array(0);
201        length = a.length;
202        tail = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ];
203        for (i = 0; i < length; i += 1) {
204          tail[i >> 2] |= a[i] << (i % 4 << 3);
205        }
206        tail[i >> 2] |= 128 << (i % 4 << 3);
207        if (i > 55) {
208          md5cycle(state, tail);
209          for (i = 0; i < 16; i += 1) {
210            tail[i] = 0;
211          }
212        }
213        tmp = n * 8;
214        tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/);
215        lo = parseInt(tmp[2], 16);
216        hi = parseInt(tmp[1], 16) || 0;
217        tail[14] = lo;
218        tail[15] = hi;
219        md5cycle(state, tail);
220        return state;
221      }
222      function rhex(n) {
223        var s = "", j;
224        for (j = 0; j < 4; j += 1) {
225          s += hex_chr[n >> j * 8 + 4 & 15] + hex_chr[n >> j * 8 & 15];
226        }
227        return s;
228      }
229      function hex(x) {
230        var i;
231        for (i = 0; i < x.length; i += 1) {
232          x[i] = rhex(x[i]);
233        }
234        return x.join("");
235      }
236      if (hex(md51("hello")) !== "5d41402abc4b2a76b9719d911017c592") ;
237      if (typeof ArrayBuffer !== "undefined" && !ArrayBuffer.prototype.slice) {
238        (function() {
239          function clamp(val, length) {
240            val = val | 0 || 0;
241            if (val < 0) {
242              return Math.max(val + length, 0);
243            }
244            return Math.min(val, length);
245          }
246          ArrayBuffer.prototype.slice = function(from, to) {
247            var length = this.byteLength, begin = clamp(from, length), end = length, num, target, targetArray, sourceArray;
248            if (to !== undefined$1) {
249              end = clamp(to, length);
250            }
251            if (begin > end) {
252              return new ArrayBuffer(0);
253            }
254            num = end - begin;
255            target = new ArrayBuffer(num);
256            targetArray = new Uint8Array(target);
257            sourceArray = new Uint8Array(this, begin, num);
258            targetArray.set(sourceArray);
259            return target;
260          };
261        })();
262      }
263      function toUtf8(str) {
264        if (/[\u0080-\uFFFF]/.test(str)) {
265          str = unescape(encodeURIComponent(str));
266        }
267        return str;
268      }
269      function utf8Str2ArrayBuffer(str, returnUInt8Array) {
270        var length = str.length, buff = new ArrayBuffer(length), arr = new Uint8Array(buff), i;
271        for (i = 0; i < length; i += 1) {
272          arr[i] = str.charCodeAt(i);
273        }
274        return returnUInt8Array ? arr : buff;
275      }
276      function arrayBuffer2Utf8Str(buff) {
277        return String.fromCharCode.apply(null, new Uint8Array(buff));
278      }
279      function concatenateArrayBuffers(first, second, returnUInt8Array) {
280        var result = new Uint8Array(first.byteLength + second.byteLength);
281        result.set(new Uint8Array(first));
282        result.set(new Uint8Array(second), first.byteLength);
283        return returnUInt8Array ? result : result.buffer;
284      }
285      function hexToBinaryString(hex) {
286        var bytes = [], length = hex.length, x;
287        for (x = 0; x < length - 1; x += 2) {
288          bytes.push(parseInt(hex.substr(x, 2), 16));
289        }
290        return String.fromCharCode.apply(String, bytes);
291      }
292      function SparkMD5() {
293        this.reset();
294      }
295      SparkMD5.prototype.append = function(str) {
296        this.appendBinary(toUtf8(str));
297        return this;
298      };
299      SparkMD5.prototype.appendBinary = function(contents) {
300        this._buff += contents;
301        this._length += contents.length;
302        var length = this._buff.length, i;
303        for (i = 64; i <= length; i += 64) {
304          md5cycle(this._hash, md5blk(this._buff.substring(i - 64, i)));
305        }
306        this._buff = this._buff.substring(i - 64);
307        return this;
308      };
309      SparkMD5.prototype.end = function(raw) {
310        var buff = this._buff, length = buff.length, i, tail = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], ret;
311        for (i = 0; i < length; i += 1) {
312          tail[i >> 2] |= buff.charCodeAt(i) << (i % 4 << 3);
313        }
314        this._finish(tail, length);
315        ret = hex(this._hash);
316        if (raw) {
317          ret = hexToBinaryString(ret);
318        }
319        this.reset();
320        return ret;
321      };
322      SparkMD5.prototype.reset = function() {
323        this._buff = "";
324        this._length = 0;
325        this._hash = [ 1732584193, -271733879, -1732584194, 271733878 ];
326        return this;
327      };
328      SparkMD5.prototype.getState = function() {
329        return {
330          buff: this._buff,
331          length: this._length,
332          hash: this._hash.slice()
333        };
334      };
335      SparkMD5.prototype.setState = function(state) {
336        this._buff = state.buff;
337        this._length = state.length;
338        this._hash = state.hash;
339        return this;
340      };
341      SparkMD5.prototype.destroy = function() {
342        delete this._hash;
343        delete this._buff;
344        delete this._length;
345      };
346      SparkMD5.prototype._finish = function(tail, length) {
347        var i = length, tmp, lo, hi;
348        tail[i >> 2] |= 128 << (i % 4 << 3);
349        if (i > 55) {
350          md5cycle(this._hash, tail);
351          for (i = 0; i < 16; i += 1) {
352            tail[i] = 0;
353          }
354        }
355        tmp = this._length * 8;
356        tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/);
357        lo = parseInt(tmp[2], 16);
358        hi = parseInt(tmp[1], 16) || 0;
359        tail[14] = lo;
360        tail[15] = hi;
361        md5cycle(this._hash, tail);
362      };
363      SparkMD5.hash = function(str, raw) {
364        return SparkMD5.hashBinary(toUtf8(str), raw);
365      };
366      SparkMD5.hashBinary = function(content, raw) {
367        var hash = md51(content), ret = hex(hash);
368        return raw ? hexToBinaryString(ret) : ret;
369      };
370      SparkMD5.ArrayBuffer = function() {
371        this.reset();
372      };
373      SparkMD5.ArrayBuffer.prototype.append = function(arr) {
374        var buff = concatenateArrayBuffers(this._buff.buffer, arr, true), length = buff.length, i;
375        this._length += arr.byteLength;
376        for (i = 64; i <= length; i += 64) {
377          md5cycle(this._hash, md5blk_array(buff.subarray(i - 64, i)));
378        }
379        this._buff = i - 64 < length ? new Uint8Array(buff.buffer.slice(i - 64)) : new Uint8Array(0);
380        return this;
381      };
382      SparkMD5.ArrayBuffer.prototype.end = function(raw) {
383        var buff = this._buff, length = buff.length, tail = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], i, ret;
384        for (i = 0; i < length; i += 1) {
385          tail[i >> 2] |= buff[i] << (i % 4 << 3);
386        }
387        this._finish(tail, length);
388        ret = hex(this._hash);
389        if (raw) {
390          ret = hexToBinaryString(ret);
391        }
392        this.reset();
393        return ret;
394      };
395      SparkMD5.ArrayBuffer.prototype.reset = function() {
396        this._buff = new Uint8Array(0);
397        this._length = 0;
398        this._hash = [ 1732584193, -271733879, -1732584194, 271733878 ];
399        return this;
400      };
401      SparkMD5.ArrayBuffer.prototype.getState = function() {
402        var state = SparkMD5.prototype.getState.call(this);
403        state.buff = arrayBuffer2Utf8Str(state.buff);
404        return state;
405      };
406      SparkMD5.ArrayBuffer.prototype.setState = function(state) {
407        state.buff = utf8Str2ArrayBuffer(state.buff, true);
408        return SparkMD5.prototype.setState.call(this, state);
409      };
410      SparkMD5.ArrayBuffer.prototype.destroy = SparkMD5.prototype.destroy;
411      SparkMD5.ArrayBuffer.prototype._finish = SparkMD5.prototype._finish;
412      SparkMD5.ArrayBuffer.hash = function(arr, raw) {
413        var hash = md51_array(new Uint8Array(arr)), ret = hex(hash);
414        return raw ? hexToBinaryString(ret) : ret;
415      };
416      return SparkMD5;
417    }));
418  })(sparkMd5);
419  var SparkMD5 = sparkMd5.exports;
420  const fileSlice = File.prototype.slice || File.prototype.mozSlice || File.prototype.webkitSlice;
421  class FileChecksum {
422    static create(file, callback) {
423      const instance = new FileChecksum(file);
424      instance.create(callback);
425    }
426    constructor(file) {
427      this.file = file;
428      this.chunkSize = 2097152;
429      this.chunkCount = Math.ceil(this.file.size / this.chunkSize);
430      this.chunkIndex = 0;
431    }
432    create(callback) {
433      this.callback = callback;
434      this.md5Buffer = new SparkMD5.ArrayBuffer;
435      this.fileReader = new FileReader;
436      this.fileReader.addEventListener("load", (event => this.fileReaderDidLoad(event)));
437      this.fileReader.addEventListener("error", (event => this.fileReaderDidError(event)));
438      this.readNextChunk();
439    }
440    fileReaderDidLoad(event) {
441      this.md5Buffer.append(event.target.result);
442      if (!this.readNextChunk()) {
443        const binaryDigest = this.md5Buffer.end(true);
444        const base64digest = btoa(binaryDigest);
445        this.callback(null, base64digest);
446      }
447    }
448    fileReaderDidError(event) {
449      this.callback(`Error reading ${this.file.name}`);
450    }
451    readNextChunk() {
452      if (this.chunkIndex < this.chunkCount || this.chunkIndex == 0 && this.chunkCount == 0) {
453        const start = this.chunkIndex * this.chunkSize;
454        const end = Math.min(start + this.chunkSize, this.file.size);
455        const bytes = fileSlice.call(this.file, start, end);
456        this.fileReader.readAsArrayBuffer(bytes);
457        this.chunkIndex++;
458        return true;
459      } else {
460        return false;
461      }
462    }
463  }
464  function getMetaValue(name) {
465    const element = findElement(document.head, `meta[name="${name}"]`);
466    if (element) {
467      return element.getAttribute("content");
468    }
469  }
470  function findElements(root, selector) {
471    if (typeof root == "string") {
472      selector = root;
473      root = document;
474    }
475    const elements = root.querySelectorAll(selector);
476    return toArray(elements);
477  }
478  function findElement(root, selector) {
479    if (typeof root == "string") {
480      selector = root;
481      root = document;
482    }
483    return root.querySelector(selector);
484  }
485  function dispatchEvent(element, type, eventInit = {}) {
486    const {disabled: disabled} = element;
487    const {bubbles: bubbles, cancelable: cancelable, detail: detail} = eventInit;
488    const event = document.createEvent("Event");
489    event.initEvent(type, bubbles || true, cancelable || true);
490    event.detail = detail || {};
491    try {
492      element.disabled = false;
493      element.dispatchEvent(event);
494    } finally {
495      element.disabled = disabled;
496    }
497    return event;
498  }
499  function toArray(value) {
500    if (Array.isArray(value)) {
501      return value;
502    } else if (Array.from) {
503      return Array.from(value);
504    } else {
505      return [].slice.call(value);
506    }
507  }
508  class BlobRecord {
509    constructor(file, checksum, url) {
510      this.file = file;
511      this.attributes = {
512        filename: file.name,
513        content_type: file.type || "application/octet-stream",
514        byte_size: file.size,
515        checksum: checksum
516      };
517      this.xhr = new XMLHttpRequest;
518      this.xhr.open("POST", url, true);
519      this.xhr.responseType = "json";
520      this.xhr.setRequestHeader("Content-Type", "application/json");
521      this.xhr.setRequestHeader("Accept", "application/json");
522      this.xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest");
523      const csrfToken = getMetaValue("csrf-token");
524      if (csrfToken != undefined) {
525        this.xhr.setRequestHeader("X-CSRF-Token", csrfToken);
526      }
527      this.xhr.addEventListener("load", (event => this.requestDidLoad(event)));
528      this.xhr.addEventListener("error", (event => this.requestDidError(event)));
529    }
530    get status() {
531      return this.xhr.status;
532    }
533    get response() {
534      const {responseType: responseType, response: response} = this.xhr;
535      if (responseType == "json") {
536        return response;
537      } else {
538        return JSON.parse(response);
539      }
540    }
541    create(callback) {
542      this.callback = callback;
543      this.xhr.send(JSON.stringify({
544        blob: this.attributes
545      }));
546    }
547    requestDidLoad(event) {
548      if (this.status >= 200 && this.status < 300) {
549        const {response: response} = this;
550        const {direct_upload: direct_upload} = response;
551        delete response.direct_upload;
552        this.attributes = response;
553        this.directUploadData = direct_upload;
554        this.callback(null, this.toJSON());
555      } else {
556        this.requestDidError(event);
557      }
558    }
559    requestDidError(event) {
560      this.callback(`Error creating Blob for "${this.file.name}". Status: ${this.status}`);
561    }
562    toJSON() {
563      const result = {};
564      for (const key in this.attributes) {
565        result[key] = this.attributes[key];
566      }
567      return result;
568    }
569  }
570  class BlobUpload {
571    constructor(blob) {
572      this.blob = blob;
573      this.file = blob.file;
574      const {url: url, headers: headers} = blob.directUploadData;
575      this.xhr = new XMLHttpRequest;
576      this.xhr.open("PUT", url, true);
577      this.xhr.responseType = "text";
578      for (const key in headers) {
579        this.xhr.setRequestHeader(key, headers[key]);
580      }
581      this.xhr.addEventListener("load", (event => this.requestDidLoad(event)));
582      this.xhr.addEventListener("error", (event => this.requestDidError(event)));
583    }
584    create(callback) {
585      this.callback = callback;
586      this.xhr.send(this.file.slice());
587    }
588    requestDidLoad(event) {
589      const {status: status, response: response} = this.xhr;
590      if (status >= 200 && status < 300) {
591        this.callback(null, response);
592      } else {
593        this.requestDidError(event);
594      }
595    }
596    requestDidError(event) {
597      this.callback(`Error storing "${this.file.name}". Status: ${this.xhr.status}`);
598    }
599  }
600  let id = 0;
601  class DirectUpload {
602    constructor(file, url, delegate) {
603      this.id = ++id;
604      this.file = file;
605      this.url = url;
606      this.delegate = delegate;
607    }
608    create(callback) {
609      FileChecksum.create(this.file, ((error, checksum) => {
610        if (error) {
611          callback(error);
612          return;
613        }
614        const blob = new BlobRecord(this.file, checksum, this.url);
615        notify(this.delegate, "directUploadWillCreateBlobWithXHR", blob.xhr);
616        blob.create((error => {
617          if (error) {
618            callback(error);
619          } else {
620            const upload = new BlobUpload(blob);
621            notify(this.delegate, "directUploadWillStoreFileWithXHR", upload.xhr);
622            upload.create((error => {
623              if (error) {
624                callback(error);
625              } else {
626                callback(null, blob.toJSON());
627              }
628            }));
629          }
630        }));
631      }));
632    }
633  }
634  function notify(object, methodName, ...messages) {
635    if (object && typeof object[methodName] == "function") {
636      return object[methodName](...messages);
637    }
638  }
639  class DirectUploadController {
640    constructor(input, file) {
641      this.input = input;
642      this.file = file;
643      this.directUpload = new DirectUpload(this.file, this.url, this);
644      this.dispatch("initialize");
645    }
646    start(callback) {
647      const hiddenInput = document.createElement("input");
648      hiddenInput.type = "hidden";
649      hiddenInput.name = this.input.name;
650      this.input.insertAdjacentElement("beforebegin", hiddenInput);
651      this.dispatch("start");
652      this.directUpload.create(((error, attributes) => {
653        if (error) {
654          hiddenInput.parentNode.removeChild(hiddenInput);
655          this.dispatchError(error);
656        } else {
657          hiddenInput.value = attributes.signed_id;
658        }
659        this.dispatch("end");
660        callback(error);
661      }));
662    }
663    uploadRequestDidProgress(event) {
664      const progress = event.loaded / event.total * 100;
665      if (progress) {
666        this.dispatch("progress", {
667          progress: progress
668        });
669      }
670    }
671    get url() {
672      return this.input.getAttribute("data-direct-upload-url");
673    }
674    dispatch(name, detail = {}) {
675      detail.file = this.file;
676      detail.id = this.directUpload.id;
677      return dispatchEvent(this.input, `direct-upload:${name}`, {
678        detail: detail
679      });
680    }
681    dispatchError(error) {
682      const event = this.dispatch("error", {
683        error: error
684      });
685      if (!event.defaultPrevented) {
686        alert(error);
687      }
688    }
689    directUploadWillCreateBlobWithXHR(xhr) {
690      this.dispatch("before-blob-request", {
691        xhr: xhr
692      });
693    }
694    directUploadWillStoreFileWithXHR(xhr) {
695      this.dispatch("before-storage-request", {
696        xhr: xhr
697      });
698      xhr.upload.addEventListener("progress", (event => this.uploadRequestDidProgress(event)));
699    }
700  }
701  const inputSelector = "input[type=file][data-direct-upload-url]:not([disabled])";
702  class DirectUploadsController {
703    constructor(form) {
704      this.form = form;
705      this.inputs = findElements(form, inputSelector).filter((input => input.files.length));
706    }
707    start(callback) {
708      const controllers = this.createDirectUploadControllers();
709      const startNextController = () => {
710        const controller = controllers.shift();
711        if (controller) {
712          controller.start((error => {
713            if (error) {
714              callback(error);
715              this.dispatch("end");
716            } else {
717              startNextController();
718            }
719          }));
720        } else {
721          callback();
722          this.dispatch("end");
723        }
724      };
725      this.dispatch("start");
726      startNextController();
727    }
728    createDirectUploadControllers() {
729      const controllers = [];
730      this.inputs.forEach((input => {
731        toArray(input.files).forEach((file => {
732          const controller = new DirectUploadController(input, file);
733          controllers.push(controller);
734        }));
735      }));
736      return controllers;
737    }
738    dispatch(name, detail = {}) {
739      return dispatchEvent(this.form, `direct-uploads:${name}`, {
740        detail: detail
741      });
742    }
743  }
744  const processingAttribute = "data-direct-uploads-processing";
745  const submitButtonsByForm = new WeakMap;
746  let started = false;
747  function start() {
748    if (!started) {
749      started = true;
750      document.addEventListener("click", didClick, true);
751      document.addEventListener("submit", didSubmitForm, true);
752      document.addEventListener("ajax:before", didSubmitRemoteElement);
753    }
754  }
755  function didClick(event) {
756    const {target: target} = event;
757    if ((target.tagName == "INPUT" || target.tagName == "BUTTON") && target.type == "submit" && target.form) {
758      submitButtonsByForm.set(target.form, target);
759    }
760  }
761  function didSubmitForm(event) {
762    handleFormSubmissionEvent(event);
763  }
764  function didSubmitRemoteElement(event) {
765    if (event.target.tagName == "FORM") {
766      handleFormSubmissionEvent(event);
767    }
768  }
769  function handleFormSubmissionEvent(event) {
770    const form = event.target;
771    if (form.hasAttribute(processingAttribute)) {
772      event.preventDefault();
773      return;
774    }
775    const controller = new DirectUploadsController(form);
776    const {inputs: inputs} = controller;
777    if (inputs.length) {
778      event.preventDefault();
779      form.setAttribute(processingAttribute, "");
780      inputs.forEach(disable);
781      controller.start((error => {
782        form.removeAttribute(processingAttribute);
783        if (error) {
784          inputs.forEach(enable);
785        } else {
786          submitForm(form);
787        }
788      }));
789    }
790  }
791  function submitForm(form) {
792    let button = submitButtonsByForm.get(form) || findElement(form, "input[type=submit], button[type=submit]");
793    if (button) {
794      const {disabled: disabled} = button;
795      button.disabled = false;
796      button.focus();
797      button.click();
798      button.disabled = disabled;
799    } else {
800      button = document.createElement("input");
801      button.type = "submit";
802      button.style.display = "none";
803      form.appendChild(button);
804      button.click();
805      form.removeChild(button);
806    }
807    submitButtonsByForm.delete(form);
808  }
809  function disable(input) {
810    input.disabled = true;
811  }
812  function enable(input) {
813    input.disabled = false;
814  }
815  function autostart() {
816    if (window.ActiveStorage) {
817      start();
818    }
819  }
820  setTimeout(autostart, 1);
821  exports.DirectUpload = DirectUpload;
822  exports.start = start;
823  Object.defineProperty(exports, "__esModule", {
824    value: true
825  });
826}));
827}(activestorage, activestorage.exports));
828
829class AttachmentUpload {
830  constructor(attachment, element) {
831    this.attachment = attachment;
832    this.element = element;
833    this.directUpload = new activestorage.exports.DirectUpload(attachment.file, this.directUploadUrl, this);
834  }
835
836  start() {
837    this.directUpload.create(this.directUploadDidComplete.bind(this));
838  }
839
840  directUploadWillStoreFileWithXHR(xhr) {
841    xhr.upload.addEventListener("progress", event => {
842      const progress = event.loaded / event.total * 100;
843      this.attachment.setUploadProgress(progress);
844    });
845  }
846
847  directUploadDidComplete(error, attributes) {
848    if (error) {
849      throw new Error(`Direct upload failed: ${error}`)
850    }
851
852    this.attachment.setAttributes({
853      sgid: attributes.attachable_sgid,
854      url: this.createBlobUrl(attributes.signed_id, attributes.filename)
855    });
856  }
857
858  createBlobUrl(signedId, filename) {
859    return this.blobUrlTemplate
860      .replace(":signed_id", signedId)
861      .replace(":filename", encodeURIComponent(filename))
862  }
863
864  get directUploadUrl() {
865    return this.element.dataset.directUploadUrl
866  }
867
868  get blobUrlTemplate() {
869    return this.element.dataset.blobUrlTemplate
870  }
871}
872
873addEventListener("trix-attachment-add", event => {
874  const { attachment, target } = event;
875
876  if (attachment.file) {
877    const upload = new AttachmentUpload(attachment, target);
878    upload.start();
879  }
880});

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.