@amydin/filterous
Version:
Instagram-like photo manipulation library for Node.js and Javascript on browser
222 lines (196 loc) • 333 kB
JavaScript
(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.filterous = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){
'use strict';
var util = require('./util');
/**
* Filter Effects
*
* @param {Object} pixels - canvas imageData
* @param {Number} adj - adjustment level for the effect
* @param {Function} callback - callback to return after obtaining the new imageData
* @returns {Function} - callback with a new imageData
*/
// No adjustment
module.exports.grayscale = function (pixels) {
var d = pixels.data;
for (var i = 0; i < d.length; i += 4) {
var r = d[i],
g = d[i + 1],
b = d[i + 2];
var avg = 0.2126 * r + 0.7152 * g + 0.0722 * b;
d[i] = d[i + 1] = d[i + 2] = avg;
}
return pixels;
};
// Adj is 0 (unchanged) to 1 (sepia)
module.exports.sepia = function (pixels, adj) {
var d = pixels.data;
for (var i = 0; i < d.length; i += 4) {
var r = d[i],
g = d[i + 1],
b = d[i + 2];
d[i] = r * (1 - 0.607 * adj) + g * .769 * adj + b * .189 * adj;
d[i + 1] = r * .349 * adj + g * (1 - 0.314 * adj) + b * .168 * adj;
d[i + 2] = r * .272 * adj + g * .534 * adj + b * (1 - 0.869 * adj);
}
return pixels;
};
// No adjustment
module.exports.invert = function (pixels, adj) {
var d = pixels.data;
for (var i = 0; i < d.length; i += 4) {
d[i] = 255 - d[i];
d[i + 1] = 255 - d[i + 1];
d[i + 2] = 255 - d[i + 2];
}
return pixels;
};
/* adj should be -1 (darker) to 1 (lighter). 0 is unchanged. */
module.exports.brightness = function (pixels, adj) {
var d = pixels.data;
adj = adj > 1 ? 1 : adj;
adj = adj < -1 ? -1 : adj;
adj = ~~(255 * adj);
for (var i = 0; i < d.length; i += 4) {
d[i] += adj;
d[i + 1] += adj;
d[i + 2] += adj;
}
return pixels;
};
// Better result (slow) - adj should be < 1 (desaturated) to 1 (unchanged) and < 1
module.exports.hueSaturation = function (pixels, adj) {
var d = pixels.data;
for (var i = 0; i < d.length; i += 4) {
var hsv = util.RGBtoHSV(d[i], d[i + 1], d[i + 2]);
hsv[1] *= adj;
var rgb = util.HSVtoRGB(hsv[0], hsv[1], hsv[2]);
d[i] = rgb[0];
d[i + 1] = rgb[1];
d[i + 2] = rgb[2];
}
return pixels;
};
// perceived saturation (faster) - adj should be -1 (desaturated) to positive number. 0 is unchanged
module.exports.saturation = function (pixels, adj) {
var d = pixels.data;
adj = adj < -1 ? -1 : adj;
for (var i = 0; i < d.length; i += 4) {
var r = d[i],
g = d[i + 1],
b = d[i + 2];
var gray = 0.2989 * r + 0.5870 * g + 0.1140 * b; //weights from CCIR 601 spec
d[i] = -gray * adj + d[i] * (1 + adj);
d[i + 1] = -gray * adj + d[i + 1] * (1 + adj);
d[i + 2] = -gray * adj + d[i + 2] * (1 + adj);
}
return pixels;
};
// Contrast - the adj value should be -1 to 1
module.exports.contrast = function (pixels, adj) {
adj *= 255;
var d = pixels.data;
var factor = 259 * (adj + 255) / (255 * (259 - adj));
for (var i = 0; i < d.length; i += 4) {
d[i] = factor * (d[i] - 128) + 128;
d[i + 1] = factor * (d[i + 1] - 128) + 128;
d[i + 2] = factor * (d[i + 2] - 128) + 128;
}
return pixels;
};
// ColorFilter - add a slight color overlay. rgbColor is an array of [r, g, b, adj]
module.exports.colorFilter = function (pixels, rgbColor) {
var d = pixels.data;
var adj = rgbColor[3];
for (var i = 0; i < d.length; i += 4) {
d[i] -= (d[i] - rgbColor[0]) * adj;
d[i + 1] -= (d[i + 1] - rgbColor[1]) * adj;
d[i + 2] -= (d[i + 2] - rgbColor[2]) * adj;
}
return pixels;
};
// RGB Adjust
module.exports.rgbAdjust = function (pixels, rgbAdj) {
var d = pixels.data;
for (var i = 0; i < d.length; i += 4) {
d[i] *= rgbAdj[0]; //R
d[i + 1] *= rgbAdj[1]; //G
d[i + 2] *= rgbAdj[2]; //B
}
return pixels;
};
// Convolute - weights are 3x3 matrix
module.exports.convolute = function (pixels, weights) {
var side = Math.round(Math.sqrt(weights.length));
var halfSide = ~~(side / 2);
var d = pixels.data;
var sw = pixels.width;
var sh = pixels.height;
var w = sw;
var h = sh;
for (var y = 0; y < h; y++) {
for (var x = 0; x < w; x++) {
var sy = y;
var sx = x;
var dstOff = (y * w + x) * 4;
var r = 0,
g = 0,
b = 0;
for (var cy = 0; cy < side; cy++) {
for (var cx = 0; cx < side; cx++) {
var scy = sy + cy - halfSide;
var scx = sx + cx - halfSide;
if (scy >= 0 && scy < sh && scx >= 0 && scx < sw) {
var srcOff = (scy * sw + scx) * 4;
var wt = weights[cy * side + cx];
r += d[srcOff] * wt;
g += d[srcOff + 1] * wt;
b += d[srcOff + 2] * wt;
}
}
}
d[dstOff] = r;
d[dstOff + 1] = g;
d[dstOff + 2] = b;
}
}
return pixels;
};
/**
* References
* https://en.wikipedia.org/wiki/HSL_and_HSV
* Grayscale https://en.wikipedia.org/wiki/Grayscale
* Sepia https://software.intel.com/sites/default/files/article/346220/sepiafilter-intelcilkplus.pdf
* Brightness https://www.html5rocks.com/en/tutorials/canvas/imagefilters/
* Hue Saturation hhttps://gist.github.com/mjackson/5311256
* Persceived saturation with RGB https://stackoverflow.com/questions/13806483/increase-or-decrease-color-saturation/34183839#34183839
* Contrast http://www.dfstudios.co.uk/articles/programming/image-programming-algorithms/image-processing-algorithms-part-5-contrast-adjustment/
*/
},{"./util":4}],2:[function(require,module,exports){
(function (Buffer){
'use strict';
var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
var filters = require('./filters');
var instaFilters = require('./instaFilters');
var fs = require('fs');
var Canvas = require('canvas');
//module.exports.Filterous = Filterous;
module.exports.importImage = function (imageBuffer, options) {
var filterous = new Filterous(imageBuffer, options);
return filterous.importImage(imageBuffer, options);
};
/**
* Filterous Class
*
* @class
* @param {Buffer} imageBuffer
*/
var Filterous = function () {
function Filterous(image, options) {
_classCallCheck(this, Filterous);
this.options = options || { format: 'jpeg' };
this.scale = this.options.scale ? this.options.scale : 1;
this.w = 300;
this.h = 300;
this.vignette = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAyAAAAJYCAMAAACtqHJCAAAACXBIWXMAAAsTAAALEwEAmpwYAAA5+mlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxMzIgNzkuMTU5Mjg0LCAyMDE2LzA0LzE5LTEzOjEzOjQwICAgICAgICAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIKICAgICAgICAgICAgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIgogICAgICAgICAgICB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIKICAgICAgICAgICAgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIKICAgICAgICAgICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmV4aWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvIj4KICAgICAgICAgPHhtcDpDcmVhdG9yVG9vbD5BZG9iZSBQaG90b3Nob3AgQ0MgMjAxNS41IChNYWNpbnRvc2gpPC94bXA6Q3JlYXRvclRvb2w+CiAgICAgICAgIDx4bXA6Q3JlYXRlRGF0ZT4yMDE3LTAxLTE2VDEzOjAyOjU5LTA4OjAwPC94bXA6Q3JlYXRlRGF0ZT4KICAgICAgICAgPHhtcDpNb2RpZnlEYXRlPjIwMTctMDEtMjlUMTg6NDY6MTYtMDg6MDA8L3htcDpNb2RpZnlEYXRlPgogICAgICAgICA8eG1wOk1ldGFkYXRhRGF0ZT4yMDE3LTAxLTI5VDE4OjQ2OjE2LTA4OjAwPC94bXA6TWV0YWRhdGFEYXRlPgogICAgICAgICA8ZGM6Zm9ybWF0PmltYWdlL3BuZzwvZGM6Zm9ybWF0PgogICAgICAgICA8cGhvdG9zaG9wOkNvbG9yTW9kZT4zPC9waG90b3Nob3A6Q29sb3JNb2RlPgogICAgICAgICA8eG1wTU06SW5zdGFuY2VJRD54bXAuaWlkOjZjZjg0NDM2LWY0YmUtNDlkYS05YTNiLWQ1N2NiM2IzNGZjYzwveG1wTU06SW5zdGFuY2VJRD4KICAgICAgICAgPHhtcE1NOkRvY3VtZW50SUQ+YWRvYmU6ZG9jaWQ6cGhvdG9zaG9wOmE5YTM0ZTJkLTI3MjQtMTE3YS1hYTY1LWQwZTNmNTAyYWRjMDwveG1wTU06RG9jdW1lbnRJRD4KICAgICAgICAgPHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD54bXAuZGlkOjE1MjM2NjQ0LTI4OWUtNGE3Ny04OWIwLTI0YzRiODQ1YWFlNTwveG1wTU06T3JpZ2luYWxEb2N1bWVudElEPgogICAgICAgICA8eG1wTU06SGlzdG9yeT4KICAgICAgICAgICAgPHJkZjpTZXE+CiAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6YWN0aW9uPmNyZWF0ZWQ8L3N0RXZ0OmFjdGlvbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0Omluc3RhbmNlSUQ+eG1wLmlpZDoxNTIzNjY0NC0yODllLTRhNzctODliMC0yNGM0Yjg0NWFhZTU8L3N0RXZ0Omluc3RhbmNlSUQ+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDp3aGVuPjIwMTctMDEtMTZUMTM6MDI6NTktMDg6MDA8L3N0RXZ0OndoZW4+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDpzb2Z0d2FyZUFnZW50PkFkb2JlIFBob3Rvc2hvcCBDQyAyMDE1LjUgKE1hY2ludG9zaCk8L3N0RXZ0OnNvZnR3YXJlQWdlbnQ+CiAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICAgICA8cmRmOmxpIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmFjdGlvbj5zYXZlZDwvc3RFdnQ6YWN0aW9uPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6aW5zdGFuY2VJRD54bXAuaWlkOjZjZjg0NDM2LWY0YmUtNDlkYS05YTNiLWQ1N2NiM2IzNGZjYzwvc3RFdnQ6aW5zdGFuY2VJRD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OndoZW4+MjAxNy0wMS0yOVQxODo0NjoxNi0wODowMDwvc3RFdnQ6d2hlbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OnNvZnR3YXJlQWdlbnQ+QWRvYmUgUGhvdG9zaG9wIENDIDIwMTUuNSAoTWFjaW50b3NoKTwvc3RFdnQ6c29mdHdhcmVBZ2VudD4KICAgICAgICAgICAgICAgICAgPHN0RXZ0OmNoYW5nZWQ+Lzwvc3RFdnQ6Y2hhbmdlZD4KICAgICAgICAgICAgICAgPC9yZGY6bGk+CiAgICAgICAgICAgIDwvcmRmOlNlcT4KICAgICAgICAgPC94bXBNTTpIaXN0b3J5PgogICAgICAgICA8dGlmZjpPcmllbnRhdGlvbj4xPC90aWZmOk9yaWVudGF0aW9uPgogICAgICAgICA8dGlmZjpYUmVzb2x1dGlvbj43MjAwMDAvMTAwMDA8L3RpZmY6WFJlc29sdXRpb24+CiAgICAgICAgIDx0aWZmOllSZXNvbHV0aW9uPjcyMDAwMC8xMDAwMDwvdGlmZjpZUmVzb2x1dGlvbj4KICAgICAgICAgPHRpZmY6UmVzb2x1dGlvblVuaXQ+MjwvdGlmZjpSZXNvbHV0aW9uVW5pdD4KICAgICAgICAgPGV4aWY6Q29sb3JTcGFjZT42NTUzNTwvZXhpZjpDb2xvclNwYWNlPgogICAgICAgICA8ZXhpZjpQaXhlbFhEaW1lbnNpb24+ODAwPC9leGlmOlBpeGVsWERpbWVuc2lvbj4KICAgICAgICAgPGV4aWY6UGl4ZWxZRGltZW5zaW9uPjYwMDwvZXhpZjpQaXhlbFlEaW1lbnNpb24+CiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICA8L3JkZjpSREY+CjwveDp4bXBtZXRhPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIAo8P3hwYWNrZXQgZW5kPSJ3Ij8+dy/82gAAACBjSFJNAAB6JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAABm1BMVEUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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