diff --git a/addon-sdk/source/app-extension/bootstrap.js b/addon-sdk/source/app-extension/bootstrap.js
index e31c75f84c4f..49d0f97373e7 100644
--- a/addon-sdk/source/app-extension/bootstrap.js
+++ b/addon-sdk/source/app-extension/bootstrap.js
@@ -50,7 +50,15 @@ function setResourceSubstitution(domain, uri) {
function readURI(uri) {
let ioservice = Cc['@mozilla.org/network/io-service;1'].
getService(Ci.nsIIOService);
- let channel = ioservice.newChannel(uri, 'UTF-8', null);
+
+ let channel = ioservice.newChannel2(uri,
+ 'UTF-8',
+ null,
+ null, // aLoadingNode
+ systemPrincipal,
+ null, // aTriggeringPrincipal
+ Ci.nsILoadInfo.SEC_NORMAL,
+ Ci.nsIContentPolicy.TYPE_OTHER);
let stream = channel.open();
let cstream = Cc['@mozilla.org/intl/converter-input-stream;1'].
diff --git a/addon-sdk/source/lib/sdk/io/data.js b/addon-sdk/source/lib/sdk/io/data.js
index fcb8b5cfa578..57e80f2ce77f 100644
--- a/addon-sdk/source/lib/sdk/io/data.js
+++ b/addon-sdk/source/lib/sdk/io/data.js
@@ -15,6 +15,7 @@ const IOService = Cc["@mozilla.org/network/io-service;1"].
const { deprecateFunction } = require('../util/deprecate');
const { NetUtil } = Cu.import("resource://gre/modules/NetUtil.jsm");
+const { Services } = Cu.import("resource://gre/modules/Services.jsm");
const FaviconService = Cc["@mozilla.org/browser/favicon-service;1"].
getService(Ci.nsIFaviconService);
@@ -51,7 +52,14 @@ exports.getFaviconURIForLocation = getFaviconURIForLocation;
* @returns {String}
*/
function getChromeURIContent(chromeURI) {
- let channel = IOService.newChannel(chromeURI, null, null);
+ let channel = IOService.newChannel2(chromeURI,
+ null,
+ null,
+ null, // aLoadingNode
+ Services.scriptSecurityManager.getSystemPrincipal(),
+ null, // aTriggeringPrincipal
+ Ci.nsILoadInfo.SEC_NORMAL,
+ Ci.nsIContentPolicy.TYPE_OTHER);
let input = channel.open();
let stream = Cc["@mozilla.org/binaryinputstream;1"].
createInstance(Ci.nsIBinaryInputStream);
diff --git a/addon-sdk/source/lib/sdk/net/url.js b/addon-sdk/source/lib/sdk/net/url.js
index 9ee6f47909b7..84f19c6d5f47 100644
--- a/addon-sdk/source/lib/sdk/net/url.js
+++ b/addon-sdk/source/lib/sdk/net/url.js
@@ -8,11 +8,13 @@ module.metadata = {
"stability": "experimental"
};
-const { Cu, components } = require("chrome");
+const { Ci, Cu, components } = require("chrome");
+
const { defer } = require("../core/promise");
const { merge } = require("../util/object");
const { NetUtil } = Cu.import("resource://gre/modules/NetUtil.jsm", {});
+const { Services } = Cu.import("resource://gre/modules/Services.jsm", {});
/**
* Reads a URI and returns a promise.
@@ -33,12 +35,19 @@ function readURI(uri, options) {
options = options || {};
let charset = options.charset || 'UTF-8';
- let channel = NetUtil.newChannel(uri, charset, null);
+ let channel = NetUtil.newChannel2(uri,
+ charset,
+ null,
+ null, // aLoadingNode
+ Services.scriptSecurityManager.getSystemPrincipal(),
+ null, // aTriggeringPrincipal
+ Ci.nsILoadInfo.SEC_NORMAL,
+ Ci.nsIContentPolicy.TYPE_OTHER);
let { promise, resolve, reject } = defer();
try {
- NetUtil.asyncFetch(channel, function (stream, result) {
+ NetUtil.asyncFetch2(channel, function (stream, result) {
if (components.isSuccessCode(result)) {
let count = stream.available();
let data = NetUtil.readInputStreamToString(stream, count, { charset : charset });
@@ -74,7 +83,14 @@ exports.readURI = readURI;
function readURISync(uri, charset) {
charset = typeof charset === "string" ? charset : "UTF-8";
- let channel = NetUtil.newChannel(uri, charset, null);
+ let channel = NetUtil.newChannel2(uri,
+ charset,
+ null,
+ null, // aLoadingNode
+ Services.scriptSecurityManager.getSystemPrincipal(),
+ null, // aTriggeringPrincipal
+ Ci.nsILoadInfo.SEC_NORMAL,
+ Ci.nsIContentPolicy.TYPE_OTHER);
let stream = channel.open();
let count = stream.available();
diff --git a/addon-sdk/source/lib/sdk/test/tmp-file.js b/addon-sdk/source/lib/sdk/test/tmp-file.js
index 634d2f1bf317..a055c661bf5d 100644
--- a/addon-sdk/source/lib/sdk/test/tmp-file.js
+++ b/addon-sdk/source/lib/sdk/test/tmp-file.js
@@ -3,7 +3,7 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
"use strict";
-const { Cc, Ci } = require("chrome");
+const { Cc, Ci, Cu } = require("chrome");
const system = require("sdk/system");
const file = require("sdk/io/file");
@@ -12,6 +12,8 @@ const unload = require("sdk/system/unload");
// Retrieve the path to the OS temporary directory:
const tmpDir = require("sdk/system").pathFor("TmpD");
+const { Services } = Cu.import("resource://gre/modules/Services.jsm");
+
// List of all tmp file created
let files = [];
@@ -33,7 +35,14 @@ unload.when(function () {
// `uri` and returns content string. Read in binary mode.
function readBinaryURI(uri) {
let ioservice = Cc["@mozilla.org/network/io-service;1"].getService(Ci.nsIIOService);
- let channel = ioservice.newChannel(uri, "UTF-8", null);
+ let channel = ioservice.newChannel2(uri,
+ "UTF-8",
+ null,
+ null, // aLoadingNode
+ Services.scriptSecurityManager.getSystemPrincipal(),
+ null, // aTriggeringPrincipal
+ Ci.nsILoadInfo.SEC_NORMAL,
+ Ci.nsIContentPolicy.TYPE_OTHER);
let stream = Cc["@mozilla.org/binaryinputstream;1"].
createInstance(Ci.nsIBinaryInputStream);
stream.setInputStream(channel.open());
diff --git a/addon-sdk/source/lib/sdk/url.js b/addon-sdk/source/lib/sdk/url.js
index 9cbc3a0cd725..7bcf00e549d4 100644
--- a/addon-sdk/source/lib/sdk/url.js
+++ b/addon-sdk/source/lib/sdk/url.js
@@ -7,7 +7,7 @@ module.metadata = {
"stability": "experimental"
};
-const { Cc, Ci, Cr } = require("chrome");
+const { Cc, Ci, Cr, Cu } = require("chrome");
const { Class } = require("./core/heritage");
const base64 = require("./base64");
@@ -23,6 +23,8 @@ var resProt = ios.getProtocolHandler("resource")
var URLParser = Cc["@mozilla.org/network/url-parser;1?auth=no"]
.getService(Ci.nsIURLParser);
+const { Services } = Cu.import("resource://gre/modules/Services.jsm");
+
function newURI(uriStr, base) {
try {
let baseURI = base ? ios.newURI(base, null, null) : null;
@@ -64,7 +66,12 @@ let toFilename = exports.toFilename = function toFilename(url) {
if (uri.scheme == "resource")
uri = newURI(resolveResourceURI(uri));
if (uri.scheme == "chrome") {
- var channel = ios.newChannelFromURI(uri);
+ var channel = ios.newChannelFromURI2(uri,
+ null, // aLoadingNode
+ Services.scriptSecurityManager.getSystemPrincipal(),
+ null, // aTriggeringPrincipal
+ Ci.nsILoadInfo.SEC_NORMAL,
+ Ci.nsIContentPolicy.TYPE_OTHER);
try {
channel = channel.QueryInterface(Ci.nsIFileChannel);
return channel.file.path;
diff --git a/addon-sdk/source/lib/toolkit/loader.js b/addon-sdk/source/lib/toolkit/loader.js
index 049aa8d230f2..70a89b1c46f4 100644
--- a/addon-sdk/source/lib/toolkit/loader.js
+++ b/addon-sdk/source/lib/toolkit/loader.js
@@ -172,7 +172,14 @@ function serializeStack(frames) {
exports.serializeStack = serializeStack;
function readURI(uri) {
- let stream = NetUtil.newChannel(uri, 'UTF-8', null).open();
+ let stream = NetUtil.newChannel2(uri,
+ 'UTF-8',
+ null,
+ null, // aLoadingNode
+ systemPrincipal,
+ null, // aTriggeringPrincipal
+ Ci.nsILoadInfo.SEC_NORMAL,
+ Ci.nsIContentPolicy.TYPE_OTHER).open();
let count = stream.available();
let data = NetUtil.readInputStreamToString(stream, count, {
charset: 'UTF-8'
diff --git a/addon-sdk/source/test/addons/l10n-properties/app-extension/bootstrap.js b/addon-sdk/source/test/addons/l10n-properties/app-extension/bootstrap.js
index 6bb014a13970..7ed453f031ee 100644
--- a/addon-sdk/source/test/addons/l10n-properties/app-extension/bootstrap.js
+++ b/addon-sdk/source/test/addons/l10n-properties/app-extension/bootstrap.js
@@ -26,6 +26,7 @@ const appInfo = Cc["@mozilla.org/xre/app-info;1"].
const vc = Cc["@mozilla.org/xpcom/version-comparator;1"].
getService(Ci.nsIVersionComparator);
+const { Services } = Cu.import("resource://gre/modules/Services.jsm");
const REASON = [ 'unknown', 'startup', 'shutdown', 'enable', 'disable',
'install', 'uninstall', 'upgrade', 'downgrade' ];
@@ -42,7 +43,14 @@ let nukeTimer = null;
function readURI(uri) {
let ioservice = Cc['@mozilla.org/network/io-service;1'].
getService(Ci.nsIIOService);
- let channel = ioservice.newChannel(uri, 'UTF-8', null);
+ let channel = ioservice.newChannel2(uri,
+ 'UTF-8',
+ null,
+ null, // aLoadingNode
+ Services.scriptSecurityManager.getSystemPrincipal(),
+ null, // aTriggeringPrincipal
+ Ci.nsILoadInfo.SEC_NORMAL,
+ Ci.nsIContentPolicy.TYPE_OTHER);
let stream = channel.open();
let cstream = Cc['@mozilla.org/intl/converter-input-stream;1'].
diff --git a/addon-sdk/source/test/addons/simple-prefs-regression/app-extension/bootstrap.js b/addon-sdk/source/test/addons/simple-prefs-regression/app-extension/bootstrap.js
index 6bb014a13970..7ed453f031ee 100644
--- a/addon-sdk/source/test/addons/simple-prefs-regression/app-extension/bootstrap.js
+++ b/addon-sdk/source/test/addons/simple-prefs-regression/app-extension/bootstrap.js
@@ -26,6 +26,7 @@ const appInfo = Cc["@mozilla.org/xre/app-info;1"].
const vc = Cc["@mozilla.org/xpcom/version-comparator;1"].
getService(Ci.nsIVersionComparator);
+const { Services } = Cu.import("resource://gre/modules/Services.jsm");
const REASON = [ 'unknown', 'startup', 'shutdown', 'enable', 'disable',
'install', 'uninstall', 'upgrade', 'downgrade' ];
@@ -42,7 +43,14 @@ let nukeTimer = null;
function readURI(uri) {
let ioservice = Cc['@mozilla.org/network/io-service;1'].
getService(Ci.nsIIOService);
- let channel = ioservice.newChannel(uri, 'UTF-8', null);
+ let channel = ioservice.newChannel2(uri,
+ 'UTF-8',
+ null,
+ null, // aLoadingNode
+ Services.scriptSecurityManager.getSystemPrincipal(),
+ null, // aTriggeringPrincipal
+ Ci.nsILoadInfo.SEC_NORMAL,
+ Ci.nsIContentPolicy.TYPE_OTHER);
let stream = channel.open();
let cstream = Cc['@mozilla.org/intl/converter-input-stream;1'].
diff --git a/addon-sdk/source/test/test-private-browsing.js b/addon-sdk/source/test/test-private-browsing.js
index c1d192605145..0e5754ef87b4 100644
--- a/addon-sdk/source/test/test-private-browsing.js
+++ b/addon-sdk/source/test/test-private-browsing.js
@@ -66,7 +66,14 @@ exports.testIsPrivateBrowsingFalseDefault = function(assert) {
};
exports.testNSIPrivateBrowsingChannel = function(assert) {
- let channel = Services.io.newChannel("about:blank", null, null);
+ let channel = Services.io.newChannel2("about:blank",
+ null,
+ null,
+ null, // aLoadingNode
+ Services.scriptSecurityManager.getSystemPrincipal(),
+ null, // aTriggeringPrincipal
+ Ci.nsILoadInfo.SEC_NORMAL,
+ Ci.nsIContentPolicy.TYPE_OTHER);
channel.QueryInterface(Ci.nsIPrivateBrowsingChannel);
assert.equal(isPrivate(channel), false, 'isPrivate detects non-private channels');
channel.setPrivate(true);
diff --git a/addon-sdk/source/test/test-xpcom.js b/addon-sdk/source/test/test-xpcom.js
index 17c7f1cd3781..38e42a4283c9 100644
--- a/addon-sdk/source/test/test-xpcom.js
+++ b/addon-sdk/source/test/test-xpcom.js
@@ -132,10 +132,15 @@ function testRegister(assert, text) {
var ios = Cc["@mozilla.org/network/io-service;1"].
getService(Ci.nsIIOService);
- var channel = ios.newChannel(
+ var channel = ios.newChannel2(
"data:text/plain;charset=utf-8," + text,
null,
- null
+ null,
+ null, // aLoadingNode
+ Services.scriptSecurityManager.getSystemPrincipal(),
+ null, // aTriggeringPrincipal
+ Ci.nsILoadInfo.SEC_NORMAL,
+ Ci.nsIContentPolicy.TYPE_OTHER
);
channel.originalURI = aURI;
@@ -162,7 +167,12 @@ function testRegister(assert, text) {
);
var aboutURI = ios.newURI("about:boop", null, null);
- var channel = ios.newChannelFromURI(aboutURI);
+ var channel = ios.newChannelFromURI2(aboutURI,
+ null, // aLoadingNode
+ Services.scriptSecurityManager.getSystemPrincipal(),
+ null, // aTriggeringPrincipal
+ Ci.nsILoadInfo.SEC_NORMAL,
+ Ci.nsIContentPolicy.TYPE_OTHER);
var iStream = channel.open();
var siStream = Cc['@mozilla.org/scriptableinputstream;1']
.createInstance(Ci.nsIScriptableInputStream);
diff --git a/b2g/config/dolphin/sources.xml b/b2g/config/dolphin/sources.xml
index a6a898ff452d..85eb0d4fc0fd 100644
--- a/b2g/config/dolphin/sources.xml
+++ b/b2g/config/dolphin/sources.xml
@@ -15,7 +15,7 @@
-
+
@@ -116,10 +116,10 @@
-
+
-
+
diff --git a/b2g/config/emulator-ics/sources.xml b/b2g/config/emulator-ics/sources.xml
index e9efaa2d0f81..614d379cd3c1 100644
--- a/b2g/config/emulator-ics/sources.xml
+++ b/b2g/config/emulator-ics/sources.xml
@@ -19,7 +19,7 @@
-
+
diff --git a/b2g/config/emulator-jb/sources.xml b/b2g/config/emulator-jb/sources.xml
index 113e1ce03a18..b3222e173a39 100644
--- a/b2g/config/emulator-jb/sources.xml
+++ b/b2g/config/emulator-jb/sources.xml
@@ -17,7 +17,7 @@
-
+
@@ -118,10 +118,10 @@
-
+
-
+
diff --git a/b2g/config/emulator-kk/sources.xml b/b2g/config/emulator-kk/sources.xml
index a8ab6ca8e9b7..1c0a91f94305 100644
--- a/b2g/config/emulator-kk/sources.xml
+++ b/b2g/config/emulator-kk/sources.xml
@@ -15,7 +15,7 @@
-
+
@@ -116,10 +116,10 @@
-
+
-
+
@@ -130,9 +130,9 @@
-
+
-
+
diff --git a/b2g/config/emulator/sources.xml b/b2g/config/emulator/sources.xml
index e9efaa2d0f81..614d379cd3c1 100644
--- a/b2g/config/emulator/sources.xml
+++ b/b2g/config/emulator/sources.xml
@@ -19,7 +19,7 @@
-
+
diff --git a/b2g/config/flame-kk/sources.xml b/b2g/config/flame-kk/sources.xml
index 362354ee3442..a596005808d1 100644
--- a/b2g/config/flame-kk/sources.xml
+++ b/b2g/config/flame-kk/sources.xml
@@ -15,7 +15,7 @@
-
+
@@ -111,9 +111,9 @@
-
+
-
+
diff --git a/b2g/config/flame/sources.xml b/b2g/config/flame/sources.xml
index bf2a145ee857..6580ceb85654 100644
--- a/b2g/config/flame/sources.xml
+++ b/b2g/config/flame/sources.xml
@@ -17,7 +17,7 @@
-
+
diff --git a/b2g/config/gaia.json b/b2g/config/gaia.json
index ff7dcdf1b2d1..cf56aaaae702 100644
--- a/b2g/config/gaia.json
+++ b/b2g/config/gaia.json
@@ -1,9 +1,9 @@
{
"git": {
- "git_revision": "cba2f0bf49b882e0044c3cc583de8fcf83d2ffa4",
+ "git_revision": "2535321f1bd55e68fd52291b193693a8995f8e62",
"remote": "https://git.mozilla.org/releases/gaia.git",
"branch": ""
},
- "revision": "23474274d441d400d43cdec6eaef41ff23443d80",
+ "revision": "885e5176711ceb1401648c571a1a9290325582e7",
"repo_path": "integration/gaia-central"
}
diff --git a/b2g/config/hamachi/sources.xml b/b2g/config/hamachi/sources.xml
index e2c8c5601bb8..336a07b86e9d 100644
--- a/b2g/config/hamachi/sources.xml
+++ b/b2g/config/hamachi/sources.xml
@@ -17,7 +17,7 @@
-
+
diff --git a/b2g/config/helix/sources.xml b/b2g/config/helix/sources.xml
index 97326eeebf7e..dcd9fcc1db4b 100644
--- a/b2g/config/helix/sources.xml
+++ b/b2g/config/helix/sources.xml
@@ -15,7 +15,7 @@
-
+
diff --git a/b2g/config/nexus-4/sources.xml b/b2g/config/nexus-4/sources.xml
index 45973d8ab854..ea5656317402 100644
--- a/b2g/config/nexus-4/sources.xml
+++ b/b2g/config/nexus-4/sources.xml
@@ -17,7 +17,7 @@
-
+
@@ -118,10 +118,10 @@
-
+
-
+
diff --git a/b2g/config/wasabi/sources.xml b/b2g/config/wasabi/sources.xml
index 5740f927786b..cdaf68da438b 100644
--- a/b2g/config/wasabi/sources.xml
+++ b/b2g/config/wasabi/sources.xml
@@ -17,7 +17,7 @@
-
+
diff --git a/browser/app/profile/firefox.js b/browser/app/profile/firefox.js
index a39795297dca..f6395019d68d 100644
--- a/browser/app/profile/firefox.js
+++ b/browser/app/profile/firefox.js
@@ -1182,6 +1182,12 @@ pref("browser.tabs.remote.desktopbehavior", true);
// This will require a restart.
pref("security.sandbox.windows.log", false);
+// Controls whether the Windows NPAPI plugin process is sandboxed by default.
+// To get a different setting for a particular plugin replace "default", with
+// the plugin's nice file name, see: nsPluginTag::GetNiceFileName.
+pref("dom.ipc.plugins.sandbox.default", false);
+pref("dom.ipc.plugins.sandbox.flash", false);
+
#if defined(MOZ_CONTENT_SANDBOX)
// This controls whether the Windows content process sandbox is using a more
// strict sandboxing policy. This will require a restart.
@@ -1803,7 +1809,14 @@ pref("dom.ipc.cpow.timeout", 500);
// Enable e10s hang monitoring (slow script checking and plugin hang
// detection).
pref("dom.ipc.processHangMonitor", true);
+
+#ifdef DEBUG
+// Don't report hangs in DEBUG builds. They're too slow and often a
+// debugger is attached.
+pref("dom.ipc.reportProcessHangs", false);
+#else
pref("dom.ipc.reportProcessHangs", true);
+#endif
// Disable reader mode by default.
pref("reader.parse-on-load.enabled", false);
diff --git a/browser/base/content/test/general/test_contextmenu.html b/browser/base/content/test/general/test_contextmenu.html
index fe121736378b..5af25c22acd9 100644
--- a/browser/base/content/test/general/test_contextmenu.html
+++ b/browser/base/content/test/general/test_contextmenu.html
@@ -653,7 +653,7 @@ function runTest(testNum) {
"context-cut", false,
"context-copy", false,
"context-paste", null, // ignore clipboard state
- "context-delete", false,
+ "context-delete", true,
"---", null,
"context-selectall", true,
"---", null,
diff --git a/browser/components/privatebrowsing/content/aboutPrivateBrowsing.js b/browser/components/privatebrowsing/content/aboutPrivateBrowsing.js
index 3da766b71586..eecb9e9556d8 100644
--- a/browser/components/privatebrowsing/content/aboutPrivateBrowsing.js
+++ b/browser/components/privatebrowsing/content/aboutPrivateBrowsing.js
@@ -9,7 +9,7 @@ Cu.import("resource://gre/modules/PrivateBrowsingUtils.jsm");
var stringBundle = Cc["@mozilla.org/intl/stringbundle;1"].getService(Ci.nsIStringBundleService)
.createBundle("chrome://browser/locale/aboutPrivateBrowsing.properties");
-if (!PrivateBrowsingUtils.isWindowPrivate(window)) {
+if (!PrivateBrowsingUtils.isContentWindowPrivate(window)) {
document.title = stringBundle.GetStringFromName("title.normal");
setFavIcon("chrome://global/skin/icons/question-16.png");
} else {
@@ -34,7 +34,7 @@ function setFavIcon(url) {
}
document.addEventListener("DOMContentLoaded", function () {
- if (!PrivateBrowsingUtils.isWindowPrivate(window)) {
+ if (!PrivateBrowsingUtils.isContentWindowPrivate(window)) {
document.body.setAttribute("class", "normal");
}
diff --git a/browser/devtools/styleinspector/test/browser_ruleview_colorpicker-and-image-tooltip_01.js b/browser/devtools/styleinspector/test/browser_ruleview_colorpicker-and-image-tooltip_01.js
index 0d28704a934b..0d30f024663b 100644
--- a/browser/devtools/styleinspector/test/browser_ruleview_colorpicker-and-image-tooltip_01.js
+++ b/browser/devtools/styleinspector/test/browser_ruleview_colorpicker-and-image-tooltip_01.js
@@ -23,7 +23,7 @@ add_task(function*() {
let {toolbox, inspector, view} = yield openRuleView();
let value = getRuleViewProperty(view, "body", "background").valueSpan;
- let swatch = value.querySelector(".ruleview-colorswatch");
+ let swatch = value.querySelectorAll(".ruleview-colorswatch")[1];
let url = value.querySelector(".theme-link");
yield testImageTooltipAfterColorChange(swatch, url, view);
});
diff --git a/browser/devtools/styleinspector/test/browser_ruleview_pseudo-element_01.js b/browser/devtools/styleinspector/test/browser_ruleview_pseudo-element_01.js
index 64ae322ff19a..6050f76f10a3 100644
--- a/browser/devtools/styleinspector/test/browser_ruleview_pseudo-element_01.js
+++ b/browser/devtools/styleinspector/test/browser_ruleview_pseudo-element_01.js
@@ -167,7 +167,7 @@ function* testParagraph(inspector, view) {
is
(
convertTextPropsToString(elementFirstLineRule.textProps),
- "background: none repeat scroll 0% 0% blue",
+ "background: blue none repeat scroll 0% 0%",
"Paragraph first-line properties are correct"
);
@@ -191,7 +191,7 @@ function* testParagraph(inspector, view) {
is
(
convertTextPropsToString(elementSelectionRule.textProps),
- "color: white; background: none repeat scroll 0% 0% black",
+ "color: white; background: black none repeat scroll 0% 0%",
"Paragraph first-letter properties are correct"
);
}
@@ -244,4 +244,4 @@ function assertGutters(view) {
is (gutters[2].textContent, "Inherited from body", "Gutter heading is correct");
return gutters;
-}
\ No newline at end of file
+}
diff --git a/browser/devtools/styleinspector/test/browser_ruleview_refresh-on-attribute-change_02.js b/browser/devtools/styleinspector/test/browser_ruleview_refresh-on-attribute-change_02.js
index 1b9c1311ea4a..26017aac438b 100644
--- a/browser/devtools/styleinspector/test/browser_ruleview_refresh-on-attribute-change_02.js
+++ b/browser/devtools/styleinspector/test/browser_ruleview_refresh-on-attribute-change_02.js
@@ -96,14 +96,14 @@ function* testPropertyChange5(inspector, ruleView, testElement) {
function* testPropertyChange6(inspector, ruleView, testElement) {
info("Add an entirely new property again");
- yield changeElementStyle(testElement, "background: url(\"chrome://branding/content/about-logo.png\") repeat scroll 0% 0% red", inspector);
+ yield changeElementStyle(testElement, "background: red url(\"chrome://branding/content/about-logo.png\") repeat scroll 0% 0%", inspector);
let rule = ruleView._elementStyle.rules[0];
is(rule.editor.element.querySelectorAll(".ruleview-property").length, 5, "Added a property");
validateTextProp(rule.textProps[4], true, "background",
- "url(\"chrome://branding/content/about-logo.png\") repeat scroll 0% 0% red",
+ "red url(\"chrome://branding/content/about-logo.png\") repeat scroll 0% 0%",
"shortcut property correctly set",
- "url(\"chrome://branding/content/about-logo.png\") repeat scroll 0% 0% #F00");
+ "#F00 url(\"chrome://branding/content/about-logo.png\") repeat scroll 0% 0%");
}
function* changeElementStyle(testElement, style, inspector) {
diff --git a/build/clang-plugin/clang-plugin.cpp b/build/clang-plugin/clang-plugin.cpp
index c6e1e7ec1e05..455d3e2d06f7 100644
--- a/build/clang-plugin/clang-plugin.cpp
+++ b/build/clang-plugin/clang-plugin.cpp
@@ -74,12 +74,18 @@ private:
virtual void run(const MatchFinder::MatchResult &Result);
};
+ class NoAddRefReleaseOnReturnChecker : public MatchFinder::MatchCallback {
+ public:
+ virtual void run(const MatchFinder::MatchResult &Result);
+ };
+
ScopeChecker stackClassChecker;
ScopeChecker globalClassChecker;
NonHeapClassChecker nonheapClassChecker;
ArithmeticArgChecker arithmeticArgChecker;
TrivialCtorDtorChecker trivialCtorDtorChecker;
NaNExprChecker nanExprChecker;
+ NoAddRefReleaseOnReturnChecker noAddRefReleaseOnReturnChecker;
MatchFinder astMatcher;
};
@@ -389,6 +395,12 @@ AST_MATCHER(CXXRecordDecl, hasTrivialCtorDtor) {
return MozChecker::hasCustomAnnotation(&Node, "moz_trivial_ctor_dtor");
}
+/// This matcher will match any function declaration that is marked to prohibit
+/// calling AddRef or Release on its return value.
+AST_MATCHER(FunctionDecl, hasNoAddRefReleaseOnReturnAttr) {
+ return MozChecker::hasCustomAnnotation(&Node, "moz_no_addref_release_on_return");
+}
+
/// This matcher will match all arithmetic binary operators.
AST_MATCHER(BinaryOperator, binaryArithmeticOperator) {
BinaryOperatorKind opcode = Node.getOpcode();
@@ -458,6 +470,17 @@ AST_MATCHER(BinaryOperator, isInSkScalarDotH) {
return llvm::sys::path::rbegin(FileName)->equals("SkScalar.h");
}
+/// This matcher will match all accesses to AddRef or Release methods.
+AST_MATCHER(MemberExpr, isAddRefOrRelease) {
+ ValueDecl *Member = Node.getMemberDecl();
+ CXXMethodDecl *Method = dyn_cast(Member);
+ if (Method) {
+ std::string Name = Method->getNameAsString();
+ return Name == "AddRef" || Name == "Release";
+ }
+ return false;
+}
+
}
}
@@ -548,6 +571,12 @@ DiagnosticsMatcher::DiagnosticsMatcher()
unless(anyOf(isInSystemHeader(), isInSkScalarDotH()))
)).bind("node"),
&nanExprChecker);
+
+ astMatcher.addMatcher(callExpr(callee(functionDecl(hasNoAddRefReleaseOnReturnAttr()).bind("func")),
+ hasParent(memberExpr(isAddRefOrRelease(),
+ hasParent(callExpr())).bind("member")
+ )).bind("node"),
+ &noAddRefReleaseOnReturnChecker);
}
void DiagnosticsMatcher::ScopeChecker::run(
@@ -733,6 +762,19 @@ void DiagnosticsMatcher::NaNExprChecker::run(
}
}
+void DiagnosticsMatcher::NoAddRefReleaseOnReturnChecker::run(
+ const MatchFinder::MatchResult &Result) {
+ DiagnosticsEngine &Diag = Result.Context->getDiagnostics();
+ unsigned errorID = Diag.getDiagnosticIDs()->getCustomDiagID(
+ DiagnosticIDs::Error, "%1 cannot be called on the return value of %0");
+ const Stmt *node = Result.Nodes.getNodeAs("node");
+ const FunctionDecl *func = Result.Nodes.getNodeAs("func");
+ const MemberExpr *member = Result.Nodes.getNodeAs("member");
+ const CXXMethodDecl *method = dyn_cast(member->getMemberDecl());
+
+ Diag.Report(node->getLocStart(), errorID) << func << method;
+}
+
class MozCheckAction : public PluginASTAction {
public:
ASTConsumerPtr CreateASTConsumer(CompilerInstance &CI, StringRef fileName) override {
diff --git a/build/clang-plugin/tests/Makefile.in b/build/clang-plugin/tests/Makefile.in
index 7d67f8be67fe..47393978c728 100644
--- a/build/clang-plugin/tests/Makefile.in
+++ b/build/clang-plugin/tests/Makefile.in
@@ -3,9 +3,9 @@
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
# Build without any warning flags, and with clang verify flag for a
-# syntax-only build (no codegen).
-OS_CFLAGS := $(filter-out -W%,$(OS_CFLAGS)) -fsyntax-only -Xclang -verify
-OS_CXXFLAGS := $(filter-out -W%,$(OS_CXXFLAGS)) -fsyntax-only -Xclang -verify
+# syntax-only build (no codegen), without a limit on the number of errors.
+OS_CFLAGS := $(filter-out -W%,$(OS_CFLAGS)) -fsyntax-only -Xclang -verify -ferror-limit=0
+OS_CXXFLAGS := $(filter-out -W%,$(OS_CXXFLAGS)) -fsyntax-only -Xclang -verify -ferror-limit=0
include $(topsrcdir)/config/rules.mk
diff --git a/build/clang-plugin/tests/TestNoAddRefReleaseOnReturn.cpp b/build/clang-plugin/tests/TestNoAddRefReleaseOnReturn.cpp
new file mode 100644
index 000000000000..8283a72583ee
--- /dev/null
+++ b/build/clang-plugin/tests/TestNoAddRefReleaseOnReturn.cpp
@@ -0,0 +1,65 @@
+#define MOZ_NO_ADDREF_RELEASE_ON_RETURN __attribute__((annotate("moz_no_addref_release_on_return")))
+
+struct Test {
+ void AddRef();
+ void Release();
+ void foo();
+};
+
+struct S {
+ Test* f() MOZ_NO_ADDREF_RELEASE_ON_RETURN;
+ Test& g() MOZ_NO_ADDREF_RELEASE_ON_RETURN;
+ Test h() MOZ_NO_ADDREF_RELEASE_ON_RETURN;
+};
+
+template
+struct X {
+ T* f() MOZ_NO_ADDREF_RELEASE_ON_RETURN;
+ T& g() MOZ_NO_ADDREF_RELEASE_ON_RETURN;
+ T h() MOZ_NO_ADDREF_RELEASE_ON_RETURN;
+};
+
+template
+struct SP {
+ T* operator->() MOZ_NO_ADDREF_RELEASE_ON_RETURN;
+};
+
+Test* f() MOZ_NO_ADDREF_RELEASE_ON_RETURN;
+Test& g() MOZ_NO_ADDREF_RELEASE_ON_RETURN;
+Test h() MOZ_NO_ADDREF_RELEASE_ON_RETURN;
+
+void test() {
+ S s;
+ s.f()->AddRef(); // expected-error{{'AddRef' cannot be called on the return value of 'f'}}
+ s.f()->Release(); // expected-error{{'Release' cannot be called on the return value of 'f'}}
+ s.f()->foo();
+ s.g().AddRef(); // expected-error{{'AddRef' cannot be called on the return value of 'g'}}
+ s.g().Release(); // expected-error{{'Release' cannot be called on the return value of 'g'}}
+ s.g().foo();
+ s.h().AddRef(); // expected-error{{'AddRef' cannot be called on the return value of 'h'}}
+ s.h().Release(); // expected-error{{'Release' cannot be called on the return value of 'h'}}
+ s.h().foo();
+ X x;
+ x.f()->AddRef(); // expected-error{{'AddRef' cannot be called on the return value of 'f'}}
+ x.f()->Release(); // expected-error{{'Release' cannot be called on the return value of 'f'}}
+ x.f()->foo();
+ x.g().AddRef(); // expected-error{{'AddRef' cannot be called on the return value of 'g'}}
+ x.g().Release(); // expected-error{{'Release' cannot be called on the return value of 'g'}}
+ x.g().foo();
+ x.h().AddRef(); // expected-error{{'AddRef' cannot be called on the return value of 'h'}}
+ x.h().Release(); // expected-error{{'Release' cannot be called on the return value of 'h'}}
+ x.h().foo();
+ SP sp;
+ sp->AddRef(); // expected-error{{'AddRef' cannot be called on the return value of 'operator->'}}
+ sp->Release(); // expected-error{{'Release' cannot be called on the return value of 'operator->'}}
+ sp->foo();
+ f()->AddRef(); // expected-error{{'AddRef' cannot be called on the return value of 'f'}}
+ f()->Release(); // expected-error{{'Release' cannot be called on the return value of 'f'}}
+ f()->foo();
+ g().AddRef(); // expected-error{{'AddRef' cannot be called on the return value of 'g'}}
+ g().Release(); // expected-error{{'Release' cannot be called on the return value of 'g'}}
+ g().foo();
+ h().AddRef(); // expected-error{{'AddRef' cannot be called on the return value of 'h'}}
+ h().Release(); // expected-error{{'Release' cannot be called on the return value of 'h'}}
+ h().foo();
+}
diff --git a/build/clang-plugin/tests/moz.build b/build/clang-plugin/tests/moz.build
index 0d7f35b6a6d3..2b5bf2a277a4 100644
--- a/build/clang-plugin/tests/moz.build
+++ b/build/clang-plugin/tests/moz.build
@@ -11,6 +11,7 @@ SOURCES += [
'TestMustOverride.cpp',
'TestNANTestingExpr.cpp',
'TestNANTestingExprC.c',
+ 'TestNoAddRefReleaseOnReturn.cpp',
'TestNoArithmeticExprInArgument.cpp',
'TestNonHeapClass.cpp',
'TestStackClass.cpp',
diff --git a/configure.in b/configure.in
index 4a2d2498de2f..467000059be3 100644
--- a/configure.in
+++ b/configure.in
@@ -3595,7 +3595,7 @@ MOZ_ARG_WITH_BOOL(system-nss,
_USE_SYSTEM_NSS=1 )
if test -n "$_USE_SYSTEM_NSS"; then
- AM_PATH_NSS(3.17.3, [MOZ_NATIVE_NSS=1], [AC_MSG_ERROR([you don't have NSS installed or your version is too old])])
+ AM_PATH_NSS(3.17.4, [MOZ_NATIVE_NSS=1], [AC_MSG_ERROR([you don't have NSS installed or your version is too old])])
fi
if test -n "$MOZ_NATIVE_NSS"; then
diff --git a/docshell/base/TimelineMarker.h b/docshell/base/TimelineMarker.h
index 522e7ecaf0dd..11cfe76d71d2 100644
--- a/docshell/base/TimelineMarker.h
+++ b/docshell/base/TimelineMarker.h
@@ -75,8 +75,8 @@ public:
JSObject* GetStack()
{
- if (mStackTrace) {
- return mStackTrace->get();
+ if (mStackTrace.initialized()) {
+ return mStackTrace;
}
return nullptr;
}
@@ -89,7 +89,7 @@ protected:
if (ctx) {
JS::RootedObject stack(ctx);
if (JS::CaptureCurrentStack(ctx, &stack)) {
- mStackTrace.emplace(ctx, stack.get());
+ mStackTrace.init(ctx, stack.get());
} else {
JS_ClearPendingException(ctx);
}
@@ -107,7 +107,7 @@ private:
// in this case changing nsDocShell to participate in cycle
// collection was deemed too invasive, and the markers are only held
// here temporarily to boot.
- mozilla::Maybe> mStackTrace;
+ JS::PersistentRooted mStackTrace;
};
#endif /* TimelineMarker_h__ */
diff --git a/docshell/base/nsDocShell.cpp b/docshell/base/nsDocShell.cpp
index 5ae9f9c30278..c2cf7426e591 100644
--- a/docshell/base/nsDocShell.cpp
+++ b/docshell/base/nsDocShell.cpp
@@ -8216,14 +8216,6 @@ nsDocShell::RestorePresentation(nsISHEntry *aSHEntry, bool *aRestoring)
SetHistoryEntry(&mLSHE, aSHEntry);
- // Add the request to our load group. We do this before swapping out
- // the content viewers so that consumers of STATE_START can access
- // the old document. We only deal with the toplevel load at this time --
- // to be consistent with normal document loading, subframes cannot start
- // loading until after data arrives, which is after STATE_START completes.
-
- BeginRestore(viewer, true);
-
// Post an event that will remove the request after we've returned
// to the event loop. This mimics the way it is called by nsIChannel
// implementations.
@@ -8245,10 +8237,40 @@ nsDocShell::RestorePresentation(nsISHEntry *aSHEntry, bool *aRestoring)
return rv;
}
+namespace {
+class MOZ_STACK_CLASS PresentationEventForgetter
+{
+public:
+ explicit PresentationEventForgetter(
+ nsRevocableEventPtr& aRestorePresentationEvent)
+ : mRestorePresentationEvent(aRestorePresentationEvent)
+ , mEvent(aRestorePresentationEvent.get())
+ {
+ }
+
+ ~PresentationEventForgetter()
+ {
+ Forget();
+ }
+
+ void Forget()
+ {
+ if (mRestorePresentationEvent.get() == mEvent) {
+ mRestorePresentationEvent.Forget();
+ mEvent = nullptr;
+ }
+ }
+private:
+ nsRevocableEventPtr& mRestorePresentationEvent;
+ nsRefPtr mEvent;
+};
+}
+
nsresult
nsDocShell::RestoreFromHistory()
{
- mRestorePresentationEvent.Forget();
+ MOZ_ASSERT(mRestorePresentationEvent.IsPending());
+ PresentationEventForgetter forgetter(mRestorePresentationEvent);
// This section of code follows the same ordering as CreateContentViewer.
if (!mLSHE)
@@ -8302,6 +8324,24 @@ nsDocShell::RestoreFromHistory()
if (mLSHE != origLSHE)
return NS_OK;
+ // Add the request to our load group. We do this before swapping out
+ // the content viewers so that consumers of STATE_START can access
+ // the old document. We only deal with the toplevel load at this time --
+ // to be consistent with normal document loading, subframes cannot start
+ // loading until after data arrives, which is after STATE_START completes.
+
+ nsRefPtr currentPresentationRestoration =
+ mRestorePresentationEvent.get();
+ Stop();
+ // Make sure we're still restoring the same presentation.
+ // If we aren't, docshell is in process doing another load already.
+ NS_ENSURE_STATE(currentPresentationRestoration ==
+ mRestorePresentationEvent.get());
+ BeginRestore(viewer, true);
+ NS_ENSURE_STATE(currentPresentationRestoration ==
+ mRestorePresentationEvent.get());
+ forgetter.Forget();
+
// Set mFiredUnloadEvent = false so that the unload handler for the
// *new* document will fire.
mFiredUnloadEvent = false;
diff --git a/docshell/base/nsDocShell.h b/docshell/base/nsDocShell.h
index b3f1c219a8e5..86e7c1bb1fde 100644
--- a/docshell/base/nsDocShell.h
+++ b/docshell/base/nsDocShell.h
@@ -693,6 +693,7 @@ protected:
*/
void MaybeInitTiming();
+public:
// Event type dispatched by RestorePresentation
class RestorePresentationEvent : public nsRunnable {
public:
@@ -702,6 +703,7 @@ protected:
private:
nsRefPtr mDocShell;
};
+protected:
bool JustStartedNetworkLoad();
diff --git a/docshell/test/mochitest.ini b/docshell/test/mochitest.ini
index 8a86a27fa4c6..3668c58caf79 100644
--- a/docshell/test/mochitest.ini
+++ b/docshell/test/mochitest.ini
@@ -105,3 +105,5 @@ support-files = file_framedhistoryframes.html
[test_pushState_after_document_open.html]
[test_windowedhistoryframes.html]
skip-if = (buildapp == 'b2g' && toolkit != 'gonk') #Bug 931116, b2g desktop specific, initial triage
+[test_bug1121701.html]
+skip-if = (buildapp == 'b2g' || buildapp == 'mulet')
diff --git a/docshell/test/test_bug1121701.html b/docshell/test/test_bug1121701.html
new file mode 100644
index 000000000000..8beb2d8d06ef
--- /dev/null
+++ b/docshell/test/test_bug1121701.html
@@ -0,0 +1,71 @@
+
+
+
+
+
+ Test for Bug 1121701
+
+
+
+
+
+Mozilla Bug 1121701
+
+
+
+
+
+
+
+
diff --git a/dom/apps/PermissionsTable.jsm b/dom/apps/PermissionsTable.jsm
index e56039295775..47b2e2d8b6e1 100644
--- a/dom/apps/PermissionsTable.jsm
+++ b/dom/apps/PermissionsTable.jsm
@@ -509,6 +509,7 @@ this.PermissionsTable = { geolocation: {
},
"tv": {
app: DENY_ACTION,
+ trusted: DENY_ACTION,
privileged: DENY_ACTION,
certified: ALLOW_ACTION
},
diff --git a/dom/base/Console.cpp b/dom/base/Console.cpp
index 0ca30f4491c0..8e32ce44b558 100644
--- a/dom/base/Console.cpp
+++ b/dom/base/Console.cpp
@@ -1268,7 +1268,7 @@ Console::ProcessCallData(ConsoleCallData* aData)
innerID.AppendInt(aData->mInnerIDNumber);
}
- if (NS_FAILED(mStorage->RecordPendingEvent(innerID, outerID, eventValue))) {
+ if (NS_FAILED(mStorage->RecordEvent(innerID, outerID, eventValue))) {
NS_WARNING("Failed to record a console event.");
}
}
diff --git a/dom/base/ConsoleAPIStorage.js b/dom/base/ConsoleAPIStorage.js
index ebd7889bceec..e3a982fa9347 100644
--- a/dom/base/ConsoleAPIStorage.js
+++ b/dom/base/ConsoleAPIStorage.js
@@ -11,18 +11,12 @@ let Cc = Components.classes;
Cu.import("resource://gre/modules/XPCOMUtils.jsm");
Cu.import("resource://gre/modules/Services.jsm");
-// The console API events have to be scheduled when stored using
-// |recordPendingEvent|.
-const CALL_DELAY = 15 // milliseconds
-
// This constant tells how many messages to process in a single timer execution.
const MESSAGES_IN_INTERVAL = 1500
const STORAGE_MAX_EVENTS = 200;
var _consoleStorage = new Map();
-var _consolePendingStorage = new Map();
-var _timer;
const CONSOLEAPISTORAGE_CID = Components.ID('{96cf7855-dfa9-4c6d-8276-f9705b4890f2}');
@@ -141,51 +135,6 @@ ConsoleAPIStorageService.prototype = {
Services.obs.notifyObservers(aEvent, "console-storage-cache-event", aId);
},
- /**
- * Similar to recordEvent, but these events are scheduled and stored any
- * CALL_DELAY millisecs.
- */
- recordPendingEvent: function CS_recordPendingEvent(aId, aOuterId, aEvent)
- {
- if (!_consolePendingStorage.has(aId)) {
- _consolePendingStorage.set(aId, []);
- }
-
- let storage = _consolePendingStorage.get(aId);
- storage.push({ outerId: aOuterId, event: aEvent });
-
- if (!_timer) {
- _timer = Cc["@mozilla.org/timer;1"].createInstance(Ci.nsITimer);
- }
-
- let self = this;
- _timer.initWithCallback(function() { self.flushPendingEvents(); },
- CALL_DELAY, Ci.nsITimer.TYPE_REPEATING_SLACK);
- },
-
- /**
- * Processes the pending event queue.
- */
- flushPendingEvents: function CS_flushPendingEvents()
- {
- for (let [id, objs] of _consolePendingStorage) {
- for (let i = 0; i < objs.length && i < MESSAGES_IN_INTERVAL; ++i) {
- this.recordEvent(id, objs[i].outerId, objs[i].event);
- }
-
- if (objs.length <= MESSAGES_IN_INTERVAL) {
- _consolePendingStorage.delete(id);
- } else {
- _consolePendingStorage.set(id, objs.splice(MESSAGES_IN_INTERVAL));
- }
- }
-
- if (_timer && _consolePendingStorage.size == 0) {
- _timer.cancel();
- _timer = null;
- }
- },
-
/**
* Clear storage data for the given window.
*
diff --git a/dom/base/FragmentOrElement.cpp b/dom/base/FragmentOrElement.cpp
index 06162b0e3aeb..de0734441086 100644
--- a/dom/base/FragmentOrElement.cpp
+++ b/dom/base/FragmentOrElement.cpp
@@ -2553,7 +2553,7 @@ IsVoidTag(nsIAtom* aTag)
static const nsIAtom* voidElements[] = {
nsGkAtoms::area, nsGkAtoms::base, nsGkAtoms::basefont,
nsGkAtoms::bgsound, nsGkAtoms::br, nsGkAtoms::col,
- nsGkAtoms::command, nsGkAtoms::embed, nsGkAtoms::frame,
+ nsGkAtoms::embed, nsGkAtoms::frame,
nsGkAtoms::hr, nsGkAtoms::img, nsGkAtoms::input,
nsGkAtoms::keygen, nsGkAtoms::link, nsGkAtoms::meta,
nsGkAtoms::param, nsGkAtoms::source, nsGkAtoms::track,
diff --git a/dom/base/nsDocumentEncoder.cpp b/dom/base/nsDocumentEncoder.cpp
index 04b94be09847..f3d83af6dcef 100644
--- a/dom/base/nsDocumentEncoder.cpp
+++ b/dom/base/nsDocumentEncoder.cpp
@@ -47,9 +47,6 @@
#include "nsStringBuffer.h"
#include "mozilla/dom/Element.h"
#include "mozilla/dom/ShadowRoot.h"
-#include "nsIEditor.h"
-#include "nsIHTMLEditor.h"
-#include "nsIDocShell.h"
#include "mozilla/dom/EncodingUtils.h"
#include "nsComputedDOMStyle.h"
@@ -324,34 +321,19 @@ nsDocumentEncoder::IncludeInContext(nsINode *aNode)
static
bool
IsInvisibleBreak(nsINode *aNode) {
- // xxxehsan: we should probably figure out a way to determine
- // if a BR node is visible without using the editor.
- Element* elt = aNode->AsElement();
- if (!elt->IsHTML(nsGkAtoms::br) ||
- !aNode->IsEditable()) {
+ if (!aNode->IsElement() || !aNode->IsEditable()) {
+ return false;
+ }
+ nsIFrame* frame = aNode->AsElement()->GetPrimaryFrame();
+ if (!frame || frame->GetType() != nsGkAtoms::brFrame) {
return false;
}
- // Grab the editor associated with the document
- nsIDocument *doc = aNode->GetComposedDoc();
- if (doc) {
- nsPIDOMWindow *window = doc->GetWindow();
- if (window) {
- nsIDocShell *docShell = window->GetDocShell();
- if (docShell) {
- nsCOMPtr editor;
- docShell->GetEditor(getter_AddRefs(editor));
- nsCOMPtr htmlEditor = do_QueryInterface(editor);
- if (htmlEditor) {
- bool isVisible = false;
- nsCOMPtr domNode = do_QueryInterface(aNode);
- htmlEditor->BreakIsVisible(domNode, &isVisible);
- return !isVisible;
- }
- }
- }
- }
- return false;
+ // If the BRFrame has caused a visible line break, it should have a next
+ // sibling, or otherwise no siblings and a non-zero height.
+ bool visible = frame->GetNextSibling() ||
+ (!frame->GetPrevSibling() && frame->GetRect().Height() != 0);
+ return !visible;
}
nsresult
diff --git a/dom/base/nsIConsoleAPIStorage.idl b/dom/base/nsIConsoleAPIStorage.idl
index 262ae76b498b..6ee218af23bb 100644
--- a/dom/base/nsIConsoleAPIStorage.idl
+++ b/dom/base/nsIConsoleAPIStorage.idl
@@ -5,7 +5,7 @@
#include "nsISupports.idl"
-[scriptable, uuid(cce39123-585e-411b-9edd-2513f7cf7e47)]
+[scriptable, uuid(9e32a7b6-c4d1-4d9a-87b9-1ef6b75c27a9)]
interface nsIConsoleAPIStorage : nsISupports
{
/**
@@ -35,22 +35,6 @@ interface nsIConsoleAPIStorage : nsISupports
*/
void recordEvent(in DOMString aId, in DOMString aOuterId, in jsval aEvent);
- /**
- * Similar to recordEvent() but these events will be collected
- * and dispatched with a timer in order to avoid flooding the devtools
- * webconsole.
- *
- * @param string aId
- * The ID of the inner window for which the event occurred or "jsm" for
- * messages logged from JavaScript modules..
- * @param string aOuterId
- * This ID is used as 3rd parameters for the console-api-log-event
- * notification.
- * @param object aEvent
- * A JavaScript object you want to store.
- */
- void recordPendingEvent(in DOMString aId, in DOMString aOuterId, in jsval aEvent);
-
/**
* Clear storage data for the given window.
*
diff --git a/dom/base/nsPlainTextSerializer.h b/dom/base/nsPlainTextSerializer.h
index 5688fed5d99c..479272a76ad0 100644
--- a/dom/base/nsPlainTextSerializer.h
+++ b/dom/base/nsPlainTextSerializer.h
@@ -32,7 +32,7 @@ class Element;
} // namespace dom
} // namespace mozilla
-class nsPlainTextSerializer : public nsIContentSerializer
+class nsPlainTextSerializer MOZ_FINAL : public nsIContentSerializer
{
public:
nsPlainTextSerializer();
@@ -67,8 +67,8 @@ public:
NS_IMETHOD AppendDocumentStart(nsIDocument *aDocument,
nsAString& aStr) MOZ_OVERRIDE;
-protected:
- virtual ~nsPlainTextSerializer();
+private:
+ ~nsPlainTextSerializer();
nsresult GetAttributeValue(nsIAtom* aName, nsString& aValueRet);
void AddToLine(const char16_t* aStringToAdd, int32_t aLength);
@@ -114,10 +114,9 @@ protected:
bool ShouldReplaceContainerWithPlaceholder(nsIAtom* aTag);
-private:
bool IsElementPreformatted(mozilla::dom::Element* aElement);
-protected:
+private:
nsString mCurrentLine;
uint32_t mHeadLevel;
bool mAtFirstColumn;
diff --git a/dom/base/nsTreeSanitizer.cpp b/dom/base/nsTreeSanitizer.cpp
index ede76e9f654c..88f038da0990 100644
--- a/dom/base/nsTreeSanitizer.cpp
+++ b/dom/base/nsTreeSanitizer.cpp
@@ -53,7 +53,6 @@ nsIAtom** const kElementsHTML[] = {
&nsGkAtoms::code,
&nsGkAtoms::col,
&nsGkAtoms::colgroup,
- &nsGkAtoms::command,
&nsGkAtoms::datalist,
&nsGkAtoms::dd,
&nsGkAtoms::del,
diff --git a/dom/base/test/test_XHR_timeout.html b/dom/base/test/test_XHR_timeout.html
index ed47db0a32ee..14422d9f4aba 100644
--- a/dom/base/test/test_XHR_timeout.html
+++ b/dom/base/test/test_XHR_timeout.html
@@ -48,7 +48,7 @@ https://bugzilla.mozilla.org/show_bug.cgi?id=525816
(function() {
SimpleTest.waitForExplicitFinish();
SimpleTest.requestLongerTimeout(TestRequests.length);
- SimpleTest.requestFlakyTimeout("untriaged");
+ SimpleTest.requestFlakyTimeout("This is testing XHR timeouts.");
var msg = "This test will take approximately " + (TestRequests.length * 10)
msg += " seconds to complete, at most.";
document.getElementById("content").firstChild.nodeValue = msg;
diff --git a/dom/events/DOMEventTargetHelper.cpp b/dom/events/DOMEventTargetHelper.cpp
index 0b8efa355842..0d64c2f1a0ce 100644
--- a/dom/events/DOMEventTargetHelper.cpp
+++ b/dom/events/DOMEventTargetHelper.cpp
@@ -99,7 +99,8 @@ DOMEventTargetHelper::BindToOwner(nsPIDOMWindow* aOwner)
void
DOMEventTargetHelper::BindToOwner(nsIGlobalObject* aOwner)
{
- if (mParentObject) {
+ nsCOMPtr parentObject = do_QueryReferent(mParentObject);
+ if (parentObject) {
if (mOwnerWindow) {
static_cast(mOwnerWindow)->RemoveEventTargetObject(this);
mOwnerWindow = nullptr;
@@ -108,7 +109,8 @@ DOMEventTargetHelper::BindToOwner(nsIGlobalObject* aOwner)
mHasOrHasHadOwnerWindow = false;
}
if (aOwner) {
- mParentObject = aOwner;
+ mParentObject = do_GetWeakReference(aOwner);
+ MOZ_ASSERT(mParentObject, "All nsIGlobalObjects must support nsISupportsWeakReference");
// Let's cache the result of this QI for fast access and off main thread usage
mOwnerWindow = nsCOMPtr(do_QueryInterface(aOwner)).get();
if (mOwnerWindow) {
@@ -131,9 +133,10 @@ DOMEventTargetHelper::BindToOwner(DOMEventTargetHelper* aOther)
if (aOther) {
mHasOrHasHadOwnerWindow = aOther->HasOrHasHadOwner();
if (aOther->GetParentObject()) {
- mParentObject = aOther->GetParentObject();
+ mParentObject = do_GetWeakReference(aOther->GetParentObject());
+ MOZ_ASSERT(mParentObject, "All nsIGlobalObjects must support nsISupportsWeakReference");
// Let's cache the result of this QI for fast access and off main thread usage
- mOwnerWindow = nsCOMPtr(do_QueryInterface(mParentObject)).get();
+ mOwnerWindow = nsCOMPtr(do_QueryInterface(aOther->GetParentObject())).get();
if (mOwnerWindow) {
MOZ_ASSERT(mOwnerWindow->IsInnerWindow());
mHasOrHasHadOwnerWindow = true;
diff --git a/dom/events/DOMEventTargetHelper.h b/dom/events/DOMEventTargetHelper.h
index 15277cae175a..7e92c0c2ef7d 100644
--- a/dom/events/DOMEventTargetHelper.h
+++ b/dom/events/DOMEventTargetHelper.h
@@ -12,6 +12,7 @@
#include "nsPIDOMWindow.h"
#include "nsIScriptGlobalObject.h"
#include "nsIScriptContext.h"
+#include "nsIWeakReferenceUtils.h"
#include "MainThreadUtils.h"
#include "mozilla/Attributes.h"
#include "mozilla/EventListenerManager.h"
@@ -138,7 +139,10 @@ public:
void BindToOwner(nsPIDOMWindow* aOwner);
void BindToOwner(DOMEventTargetHelper* aOther);
virtual void DisconnectFromOwner();
- nsIGlobalObject* GetParentObject() const { return mParentObject; }
+ nsIGlobalObject* GetParentObject() const {
+ nsCOMPtr parentObject = do_QueryReferent(mParentObject);
+ return parentObject;
+ }
bool HasOrHasHadOwner() { return mHasOrHasHadOwnerWindow; }
virtual void EventListenerAdded(nsIAtom* aType) MOZ_OVERRIDE;
@@ -164,10 +168,11 @@ protected:
virtual void LastRelease() {}
private:
// Inner window or sandbox.
- nsIGlobalObject* mParentObject;
+ nsWeakPtr mParentObject;
// mParentObject pre QI-ed and cached (inner window)
// (it is needed for off main thread access)
- nsPIDOMWindow* mOwnerWindow;
+ // It is obtained in BindToOwner and reset in DisconnectFromOwner.
+ nsPIDOMWindow* MOZ_NON_OWNING_REF mOwnerWindow;
bool mHasOrHasHadOwnerWindow;
};
diff --git a/dom/events/Event.cpp b/dom/events/Event.cpp
index c4d140225d10..eedf5a69fb4b 100644
--- a/dom/events/Event.cpp
+++ b/dom/events/Event.cpp
@@ -362,6 +362,20 @@ Event::GetOriginalTarget(nsIDOMEventTarget** aOriginalTarget)
return NS_OK;
}
+EventTarget*
+Event::GetComposedTarget() const
+{
+ EventTarget* et = GetOriginalTarget();
+ nsCOMPtr content = do_QueryInterface(et);
+ if (!content) {
+ return et;
+ }
+ nsIContent* nonChrome = content->FindFirstNonChromeOnlyAccessContent();
+ return nonChrome ?
+ static_cast(nonChrome) :
+ static_cast(content->GetComposedDoc());
+}
+
NS_IMETHODIMP_(void)
Event::SetTrusted(bool aTrusted)
{
diff --git a/dom/events/Event.h b/dom/events/Event.h
index b0b7a0232f25..a1cb30bcf6c0 100644
--- a/dom/events/Event.h
+++ b/dom/events/Event.h
@@ -205,6 +205,7 @@ public:
EventTarget* GetOriginalTarget() const;
EventTarget* GetExplicitOriginalTarget() const;
+ EventTarget* GetComposedTarget() const;
bool GetPreventDefault() const;
diff --git a/dom/events/test/mochitest.ini b/dom/events/test/mochitest.ini
index 3f95187153dc..f2195f91c2d7 100644
--- a/dom/events/test/mochitest.ini
+++ b/dom/events/test/mochitest.ini
@@ -138,6 +138,7 @@ skip-if = toolkit == "gonk" || e10s
support-files = bug1017086_inner.html
[test_bug1017086_enable.html]
support-files = bug1017086_inner.html
+[test_bug1079236.html]
[test_clickevent_on_input.html]
skip-if = toolkit == 'android' #CRASH_DUMP, RANDOM
[test_continuous_wheel_events.html]
diff --git a/dom/events/test/test_bug1079236.html b/dom/events/test/test_bug1079236.html
new file mode 100644
index 000000000000..7957823e604a
--- /dev/null
+++ b/dom/events/test/test_bug1079236.html
@@ -0,0 +1,60 @@
+
+
+
+
+
+ Test for Bug 1079236
+
+
+
+
+
+
+Mozilla Bug 1079236
+
+
+
+
+
+
+
+
diff --git a/dom/geolocation/moz.build b/dom/geolocation/moz.build
index b05857bd0ce6..ba34983a4c20 100644
--- a/dom/geolocation/moz.build
+++ b/dom/geolocation/moz.build
@@ -10,9 +10,12 @@ EXPORTS += [
'nsGeoPositionIPCSerialiser.h',
]
+SOURCES += [
+ 'nsGeolocation.cpp',
+]
+
UNIFIED_SOURCES += [
'nsGeoGridFuzzer.cpp',
- 'nsGeolocation.cpp',
'nsGeolocationSettings.cpp',
'nsGeoPosition.cpp',
]
@@ -45,4 +48,7 @@ elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'cocoa':
LOCAL_INCLUDES += [
'/dom/system/mac',
]
-
+elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'windows':
+ LOCAL_INCLUDES += [
+ '/dom/system/windows',
+ ]
diff --git a/dom/geolocation/nsGeolocation.cpp b/dom/geolocation/nsGeolocation.cpp
index efb12caa3a9e..15206e805220 100644
--- a/dom/geolocation/nsGeolocation.cpp
+++ b/dom/geolocation/nsGeolocation.cpp
@@ -49,6 +49,10 @@ class nsIPrincipal;
#include "CoreLocationLocationProvider.h"
#endif
+#ifdef XP_WIN
+#include "WindowsLocationProvider.h"
+#endif
+
// Some limit to the number of get or watch geolocation requests
// that a window can make.
#define MAX_GEO_REQUESTS_PER_WINDOW 1500
@@ -810,6 +814,12 @@ nsresult nsGeolocationService::Init()
}
#endif
+#ifdef XP_WIN
+ if (Preferences::GetBool("geo.provider.ms-windows-location", false)) {
+ mProvider = new WindowsLocationProvider();
+ }
+#endif
+
if (Preferences::GetBool("geo.provider.use_mls", false)) {
mProvider = do_CreateInstance("@mozilla.org/geolocation/mls-provider;1");
}
diff --git a/dom/html/HTMLAnchorElement.cpp b/dom/html/HTMLAnchorElement.cpp
index 0672b45aeaa6..139ad2e8dfc4 100644
--- a/dom/html/HTMLAnchorElement.cpp
+++ b/dom/html/HTMLAnchorElement.cpp
@@ -193,6 +193,18 @@ HTMLAnchorElement::UnbindFromTree(bool aDeep, bool aNullParent)
nsGenericHTMLElement::UnbindFromTree(aDeep, aNullParent);
}
+static bool
+IsNodeInEditableRegion(nsINode* aNode)
+{
+ while (aNode) {
+ if (aNode->IsEditable()) {
+ return true;
+ }
+ aNode = aNode->GetParent();
+ }
+ return false;
+}
+
bool
HTMLAnchorElement::IsHTMLFocusable(bool aWithMouse,
bool *aIsFocusable, int32_t *aTabIndex)
@@ -214,7 +226,9 @@ HTMLAnchorElement::IsHTMLFocusable(bool aWithMouse,
}
}
- if (IsEditable()) {
+ // Links that are in an editable region should never be focusable, even if
+ // they are in a contenteditable="false" region.
+ if (IsNodeInEditableRegion(this)) {
if (aTabIndex) {
*aTabIndex = -1;
}
diff --git a/dom/html/nsTextEditorState.cpp b/dom/html/nsTextEditorState.cpp
index 5f4a3c8f06ec..92f748c46b83 100644
--- a/dom/html/nsTextEditorState.cpp
+++ b/dom/html/nsTextEditorState.cpp
@@ -979,7 +979,6 @@ nsTextEditorState::nsTextEditorState(nsITextControlElement* aOwningElement)
: mTextCtrlElement(aOwningElement),
mRestoringSelection(nullptr),
mBoundFrame(nullptr),
- mTextListener(nullptr),
mEverInited(false),
mEditorInitialized(false),
mInitializing(false),
@@ -1012,7 +1011,7 @@ nsTextEditorState::Clear()
// for us.
DestroyEditor();
}
- NS_IF_RELEASE(mTextListener);
+ mTextListener = nullptr;
}
void nsTextEditorState::Unlink()
@@ -1125,8 +1124,8 @@ nsTextEditorState::BindToFrame(nsTextControlFrame* aFrame)
// Create a SelectionController
mSelCon = new nsTextInputSelectionImpl(frameSel, shell, rootNode);
+ MOZ_ASSERT(!mTextListener, "Should not overwrite the object");
mTextListener = new nsTextInputListener(mTextCtrlElement);
- NS_ADDREF(mTextListener);
mTextListener->SetFrame(mBoundFrame);
mSelCon->SetDisplaySelection(nsISelectionController::SELECTION_ON);
@@ -1647,7 +1646,6 @@ nsTextEditorState::UnbindFromFrame(nsTextControlFrame* aFrame)
TrustedEventsAtSystemGroupBubble());
}
- NS_RELEASE(mTextListener);
mTextListener = nullptr;
}
diff --git a/dom/html/nsTextEditorState.h b/dom/html/nsTextEditorState.h
index ab1d37171dce..bf43a7831ca7 100644
--- a/dom/html/nsTextEditorState.h
+++ b/dom/html/nsTextEditorState.h
@@ -276,7 +276,7 @@ private:
nsCOMPtr mRootNode;
nsCOMPtr mPlaceholderDiv;
nsTextControlFrame* mBoundFrame;
- nsTextInputListener* mTextListener;
+ nsRefPtr mTextListener;
nsAutoPtr mValue;
nsRefPtr mMutationObserver;
mutable nsString mCachedValue; // Caches non-hard-wrapped value on a multiline control.
diff --git a/dom/inputmethod/forms.js b/dom/inputmethod/forms.js
index 089c9ba1e077..e8346324087c 100644
--- a/dom/inputmethod/forms.js
+++ b/dom/inputmethod/forms.js
@@ -355,7 +355,7 @@ let FormAssistant = {
},
handleEvent: function fa_handleEvent(evt) {
- let target = evt.target;
+ let target = evt.composedTarget;
let range = null;
switch (evt.type) {
diff --git a/dom/interfaces/base/nsIDOMWindowUtils.idl b/dom/interfaces/base/nsIDOMWindowUtils.idl
index 241d1e7b5c12..11c86b480567 100644
--- a/dom/interfaces/base/nsIDOMWindowUtils.idl
+++ b/dom/interfaces/base/nsIDOMWindowUtils.idl
@@ -664,8 +664,8 @@ interface nsIDOMWindowUtils : nsISupports {
* drag - msg1-n:TOUCH_CONTACT (moving), msgn+1:TOUCH_REMOVE
* hover drag - msg1-n:TOUCH_HOVER (moving), msgn+1:TOUCH_REMOVE
*
- * Widget support: Windows 8.0+, Winrt/Win32. Other widgets will
- * throw.
+ * Widget support: Windows 8.0+, Winrt/Win32. Gonk supports CONTACT, REMOVE,
+ * and CANCEL but no HOVER. Other widgets will throw.
*
* @param aPointerId The touch point id to create or update.
* @param aTouchState one or more of the touch states listed above
diff --git a/dom/ipc/PBrowser.ipdl b/dom/ipc/PBrowser.ipdl
index 9edd374ba779..5da05d2a2fb9 100644
--- a/dom/ipc/PBrowser.ipdl
+++ b/dom/ipc/PBrowser.ipdl
@@ -132,7 +132,7 @@ parent:
nsString aName,
nsString aFeatures,
nsString aBaseURI)
- returns (bool windowOpened, FrameScriptInfo[] frameScripts);
+ returns (bool windowOpened, FrameScriptInfo[] frameScripts, nsCString urlToLoad);
sync SyncMessage(nsString aMessage, ClonedMessageData aData,
CpowEntry[] aCpows, Principal aPrincipal)
diff --git a/dom/ipc/ProcessHangMonitor.cpp b/dom/ipc/ProcessHangMonitor.cpp
index 75a5df9d3cc7..ca3a6de15601 100644
--- a/dom/ipc/ProcessHangMonitor.cpp
+++ b/dom/ipc/ProcessHangMonitor.cpp
@@ -25,6 +25,11 @@
#include "base/task.h"
#include "base/thread.h"
+#ifdef XP_WIN
+// For IsDebuggerPresent()
+#include
+#endif
+
using namespace mozilla;
using namespace mozilla::dom;
@@ -527,6 +532,14 @@ HangMonitorParent::RecvHangEvidence(const HangData& aHangData)
return true;
}
+#ifdef XP_WIN
+ // Don't report hangs if we're debugging the process. You can comment this
+ // line out for testing purposes.
+ if (IsDebuggerPresent()) {
+ return true;
+ }
+#endif
+
mHangMonitor->InitiateCPOWTimeout();
MonitorAutoLock lock(mMonitor);
diff --git a/dom/ipc/TabChild.cpp b/dom/ipc/TabChild.cpp
index 069007b5c570..6fc26e3eff86 100644
--- a/dom/ipc/TabChild.cpp
+++ b/dom/ipc/TabChild.cpp
@@ -1520,6 +1520,7 @@ TabChild::ProvideWindowCommon(nsIDOMWindow* aOpener,
nsString name(aName);
nsAutoCString features(aFeatures);
nsTArray frameScripts;
+ nsCString urlToLoad;
if (aIframeMoz) {
newChild->SendBrowserFrameOpenWindow(this, url, name,
@@ -1559,7 +1560,8 @@ TabChild::ProvideWindowCommon(nsIDOMWindow* aOpener,
name, NS_ConvertUTF8toUTF16(features),
NS_ConvertUTF8toUTF16(baseURIString),
aWindowIsNew,
- &frameScripts)) {
+ &frameScripts,
+ &urlToLoad)) {
return NS_ERROR_NOT_AVAILABLE;
}
}
@@ -1592,6 +1594,10 @@ TabChild::ProvideWindowCommon(nsIDOMWindow* aOpener,
}
}
+ if (!urlToLoad.IsEmpty()) {
+ newChild->RecvLoadURL(urlToLoad);
+ }
+
nsCOMPtr win = do_GetInterface(newChild->WebNavigation());
win.forget(aReturn);
return NS_OK;
@@ -3567,6 +3573,7 @@ NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION_INHERITED(TabChildGlobal)
NS_INTERFACE_MAP_ENTRY(nsIContentFrameMessageManager)
NS_INTERFACE_MAP_ENTRY(nsIScriptObjectPrincipal)
NS_INTERFACE_MAP_ENTRY(nsIGlobalObject)
+ NS_INTERFACE_MAP_ENTRY(nsISupportsWeakReference)
NS_DOM_INTERFACE_MAP_ENTRY_CLASSINFO(ContentFrameMessageManager)
NS_INTERFACE_MAP_END_INHERITING(DOMEventTargetHelper)
diff --git a/dom/ipc/TabChild.h b/dom/ipc/TabChild.h
index 8a3eaf206a88..4c703f5778fe 100644
--- a/dom/ipc/TabChild.h
+++ b/dom/ipc/TabChild.h
@@ -65,7 +65,8 @@ class TabChildBase;
class TabChildGlobal : public DOMEventTargetHelper,
public nsIContentFrameMessageManager,
public nsIScriptObjectPrincipal,
- public nsIGlobalObject
+ public nsIGlobalObject,
+ public nsSupportsWeakReference
{
public:
explicit TabChildGlobal(TabChildBase* aTabChild);
diff --git a/dom/ipc/TabParent.cpp b/dom/ipc/TabParent.cpp
index 1e1cbbd74379..def22ab56c43 100644
--- a/dom/ipc/TabParent.cpp
+++ b/dom/ipc/TabParent.cpp
@@ -273,7 +273,7 @@ TabParent::TabParent(nsIContentParent* aManager,
, mChromeFlags(aChromeFlags)
, mInitedByParent(false)
, mTabId(aTabId)
- , mSkipLoad(false)
+ , mCreatingWindow(false)
{
MOZ_ASSERT(aManager);
}
@@ -454,17 +454,21 @@ TabParent::RecvEvent(const RemoteDOMEvent& aEvent)
struct MOZ_STACK_CLASS TabParent::AutoUseNewTab MOZ_FINAL
{
public:
- AutoUseNewTab(TabParent* aNewTab, bool* aWindowIsNew)
- : mNewTab(aNewTab), mWindowIsNew(aWindowIsNew)
+ AutoUseNewTab(TabParent* aNewTab, bool* aWindowIsNew, nsCString* aURLToLoad)
+ : mNewTab(aNewTab), mWindowIsNew(aWindowIsNew), mURLToLoad(aURLToLoad)
{
MOZ_ASSERT(!TabParent::sNextTabParent);
+ MOZ_ASSERT(!aNewTab->mCreatingWindow);
+
TabParent::sNextTabParent = aNewTab;
- aNewTab->mSkipLoad = true;
+ aNewTab->mCreatingWindow = true;
+ aNewTab->mDelayedURL.Truncate();
}
~AutoUseNewTab()
{
- mNewTab->mSkipLoad = false;
+ mNewTab->mCreatingWindow = false;
+ *mURLToLoad = mNewTab->mDelayedURL;
if (TabParent::sNextTabParent) {
MOZ_ASSERT(TabParent::sNextTabParent == mNewTab);
@@ -476,6 +480,7 @@ public:
private:
TabParent* mNewTab;
bool* mWindowIsNew;
+ nsCString* mURLToLoad;
};
bool
@@ -489,7 +494,8 @@ TabParent::RecvCreateWindow(PBrowserParent* aNewTab,
const nsString& aFeatures,
const nsString& aBaseURI,
bool* aWindowIsNew,
- InfallibleTArray* aFrameScripts)
+ InfallibleTArray* aFrameScripts,
+ nsCString* aURLToLoad)
{
// We always expect to open a new window here. If we don't, it's an error.
*aWindowIsNew = true;
@@ -530,7 +536,7 @@ TabParent::RecvCreateWindow(PBrowserParent* aNewTab,
params->SetReferrer(aBaseURI);
params->SetIsPrivate(isPrivate);
- AutoUseNewTab aunt(newTab, aWindowIsNew);
+ AutoUseNewTab aunt(newTab, aWindowIsNew, aURLToLoad);
nsCOMPtr frameLoaderOwner;
mBrowserDOMWindow->OpenURIInFrame(nullptr, params,
@@ -564,7 +570,7 @@ TabParent::RecvCreateWindow(PBrowserParent* aNewTab,
nsCOMPtr window;
- AutoUseNewTab aunt(newTab, aWindowIsNew);
+ AutoUseNewTab aunt(newTab, aWindowIsNew, aURLToLoad);
rv = pwwatch->OpenWindow2(parent, finalURIString.get(),
NS_ConvertUTF16toUTF8(aName).get(),
@@ -601,7 +607,7 @@ bool
TabParent::SendLoadRemoteScript(const nsString& aURL,
const bool& aRunInGlobalScope)
{
- if (mSkipLoad) {
+ if (mCreatingWindow) {
mDelayedFrameScripts.AppendElement(FrameScriptInfo(aURL, aRunInGlobalScope));
return true;
}
@@ -615,11 +621,6 @@ TabParent::LoadURL(nsIURI* aURI)
{
MOZ_ASSERT(aURI);
- if (mSkipLoad) {
- // Don't send the message if the child wants to load its own URL.
- return;
- }
-
if (mIsDestroyed) {
return;
}
@@ -627,6 +628,13 @@ TabParent::LoadURL(nsIURI* aURI)
nsCString spec;
aURI->GetSpec(spec);
+ if (mCreatingWindow) {
+ // Don't send the message if the child wants to load its own URL.
+ MOZ_ASSERT(mDelayedURL.IsEmpty());
+ mDelayedURL = spec;
+ return;
+ }
+
if (!mShown) {
NS_WARNING(nsPrintfCString("TabParent::LoadURL(%s) called before "
"Show(). Ignoring LoadURL.\n",
diff --git a/dom/ipc/TabParent.h b/dom/ipc/TabParent.h
index f6908b99bd18..b516291dbe41 100644
--- a/dom/ipc/TabParent.h
+++ b/dom/ipc/TabParent.h
@@ -144,7 +144,8 @@ public:
const nsString& aFeatures,
const nsString& aBaseURI,
bool* aWindowIsNew,
- InfallibleTArray* aFrameScripts) MOZ_OVERRIDE;
+ InfallibleTArray* aFrameScripts,
+ nsCString* aURLToLoad) MOZ_OVERRIDE;
virtual bool RecvSyncMessage(const nsString& aMessage,
const ClonedMessageData& aData,
InfallibleTArray&& aCpows,
@@ -489,14 +490,23 @@ private:
static TabParent* sNextTabParent;
// When loading a new tab or window via window.open, the child is
- // responsible for loading the URL it wants into the new
- // TabChild. Simultaneously, though, the parent sends a LoadURL message to
- // every new PBrowser (usually for about:blank). This message usually
- // arrives after the child has started to load the URL it wants, and
- // overrides it. To prevent this, we set mSkipLoad to true when creating the
- // new tab. This flag prevents the unwanted LoadURL message from being sent
- // by the parent.
- bool mSkipLoad;
+ // responsible for loading the URL it wants into the new TabChild. When the
+ // parent receives the CreateWindow message, though, it sends a LoadURL
+ // message, usually for about:blank. It's important for the about:blank load
+ // to get processed because the Firefox frontend expects every new window to
+ // immediately start loading something (see bug 1123090). However, we want
+ // the child to process the LoadURL message before it returns from
+ // ProvideWindow so that the URL sent from the parent doesn't override the
+ // child's URL. This is not possible using our IPC mechanisms. To solve the
+ // problem, we skip sending the LoadURL message in the parent and instead
+ // return the URL as a result from CreateWindow. The child simulates
+ // receiving a LoadURL message before returning from ProvideWindow.
+ //
+ // The mCreatingWindow flag is set while dispatching CreateWindow. During
+ // that time, any LoadURL calls are skipped and the URL is stored in
+ // mSkippedURL.
+ bool mCreatingWindow;
+ nsCString mDelayedURL;
// When loading a new tab or window via window.open, we want to ensure that
// frame scripts for that tab are loaded before any scripts start to run in
diff --git a/dom/ipc/preload.js b/dom/ipc/preload.js
index 742bb2502166..a897c3f5edea 100644
--- a/dom/ipc/preload.js
+++ b/dom/ipc/preload.js
@@ -74,14 +74,9 @@ const BrowserElementIsPreloaded = true;
Cc["@mozilla.org/toolkit/app-startup;1"].getService(Ci["nsIAppStartup"]);
Cc["@mozilla.org/uriloader;1"].getService(Ci["nsIURILoader"]);
Cc["@mozilla.org/cspcontext;1"].createInstance(Ci["nsIContentSecurityPolicy"]);
+ Cc["@mozilla.org/settingsManager;1"].createInstance(Ci["nsISupports"]);
/* Applications Specific Helper */
- try {
- // May throw if we don't have the settings permission
- navigator.mozSettings;
- } catch(e) {
- }
-
try {
if (Services.prefs.getBoolPref("dom.sysmsg.enabled")) {
Cc["@mozilla.org/system-message-manager;1"].getService(Ci["nsIDOMNavigatorSystemMessages"]);
diff --git a/dom/media/webaudio/OscillatorNode.cpp b/dom/media/webaudio/OscillatorNode.cpp
index 9a39efc25f42..fe4ef4bef931 100644
--- a/dom/media/webaudio/OscillatorNode.cpp
+++ b/dom/media/webaudio/OscillatorNode.cpp
@@ -258,8 +258,8 @@ public:
}
// Bilinear interpolation between adjacent samples in each table.
float floorPhase = floorf(mPhase);
- uint32_t j1 = floorPhase;
- j1 &= indexMask;
+ int j1Signed = static_cast(floorPhase);
+ uint32_t j1 = j1Signed & indexMask;
uint32_t j2 = j1 + 1;
j2 &= indexMask;
diff --git a/dom/media/webaudio/test/mochitest.ini b/dom/media/webaudio/test/mochitest.ini
index 83b47d29d1aa..be8856b47933 100644
--- a/dom/media/webaudio/test/mochitest.ini
+++ b/dom/media/webaudio/test/mochitest.ini
@@ -127,7 +127,6 @@ skip-if = (toolkit == 'gonk' && !debug) || android_version == '10' # Android: bu
[test_oscillatorNode.html]
[test_oscillatorNode2.html]
[test_oscillatorNodeNegativeFrequency.html]
-skip-if = (toolkit == 'gonk') || (toolkit == 'android')
[test_oscillatorNodePassThrough.html]
[test_oscillatorNodeStart.html]
[test_oscillatorTypeChange.html]
diff --git a/dom/plugins/ipc/PluginModuleParent.cpp b/dom/plugins/ipc/PluginModuleParent.cpp
index 98acf02d893b..0f8d7511a7cb 100755
--- a/dom/plugins/ipc/PluginModuleParent.cpp
+++ b/dom/plugins/ipc/PluginModuleParent.cpp
@@ -391,11 +391,21 @@ PluginModuleChromeParent::LoadModule(const char* aFilePath, uint32_t aPluginId,
{
PLUGIN_LOG_DEBUG_FUNCTION;
+ bool enableSandbox = false;
+#if defined(XP_WIN) && defined(MOZ_SANDBOX)
+ nsAutoCString sandboxPref("dom.ipc.plugins.sandbox.");
+ sandboxPref.Append(aPluginTag->GetNiceFileName());
+ if (NS_FAILED(Preferences::GetBool(sandboxPref.get(), &enableSandbox))) {
+ enableSandbox = Preferences::GetBool("dom.ipc.plugins.sandbox.default");
+ }
+#endif
+
nsAutoPtr parent(new PluginModuleChromeParent(aFilePath, aPluginId));
UniquePtr onLaunchedRunnable(new LaunchedTask(parent));
parent->mSubprocess->SetCallRunnableImmediately(!parent->mIsStartingAsync);
TimeStamp launchStart = TimeStamp::Now();
- bool launched = parent->mSubprocess->Launch(Move(onLaunchedRunnable));
+ bool launched = parent->mSubprocess->Launch(Move(onLaunchedRunnable),
+ enableSandbox);
if (!launched) {
// We never reached open
parent->mShutdown = true;
diff --git a/dom/plugins/ipc/PluginProcessChild.cpp b/dom/plugins/ipc/PluginProcessChild.cpp
index 3dc2610cd6ea..8075e695d982 100644
--- a/dom/plugins/ipc/PluginProcessChild.cpp
+++ b/dom/plugins/ipc/PluginProcessChild.cpp
@@ -12,6 +12,7 @@
#include "base/command_line.h"
#include "base/string_util.h"
#include "chrome/common/chrome_switches.h"
+#include "nsDebugImpl.h"
#if defined(XP_MACOSX)
#include "nsCocoaFeatures.h"
@@ -23,6 +24,10 @@ extern "C" CGError CGSSetDebugOptions(int options);
#ifdef XP_WIN
#include
bool ShouldProtectPluginCurrentDirectory(char16ptr_t pluginFilePath);
+#if defined(MOZ_SANDBOX)
+#define TARGET_SANDBOX_EXPORTS
+#include "mozilla/sandboxTarget.h"
+#endif
#endif
using mozilla::ipc::IOThreadChild;
@@ -49,6 +54,8 @@ namespace plugins {
bool
PluginProcessChild::Init()
{
+ nsDebugImpl::SetMultiprocessMode("NPAPI");
+
#if defined(XP_MACOSX)
// Remove the trigger for "dyld interposing" that we added in
// GeckoChildProcessHost::PerformAsyncLaunchInternal(), in the host
@@ -117,6 +124,13 @@ PluginProcessChild::Init()
}
pluginFilename = WideToUTF8(values[0]);
+
+#if defined(MOZ_SANDBOX)
+ // This is probably the earliest we would want to start the sandbox.
+ // As we attempt to tighten the sandbox, we may need to consider moving this
+ // to later in the plugin initialization.
+ mozilla::SandboxTarget::Instance()->StartSandbox();
+#endif
#else
# error Sorry
#endif
diff --git a/dom/plugins/ipc/PluginProcessParent.cpp b/dom/plugins/ipc/PluginProcessParent.cpp
index 66c2d3463844..c02c80ace568 100644
--- a/dom/plugins/ipc/PluginProcessParent.cpp
+++ b/dom/plugins/ipc/PluginProcessParent.cpp
@@ -43,8 +43,18 @@ PluginProcessParent::~PluginProcessParent()
}
bool
-PluginProcessParent::Launch(mozilla::UniquePtr aLaunchCompleteTask)
+PluginProcessParent::Launch(mozilla::UniquePtr aLaunchCompleteTask,
+ bool aEnableSandbox)
{
+#if defined(XP_WIN) && defined(MOZ_SANDBOX)
+ mEnableNPAPISandbox = aEnableSandbox;
+#else
+ if (aEnableSandbox) {
+ MOZ_ASSERT(false,
+ "Can't enable an NPAPI process sandbox for platform/build.");
+ }
+#endif
+
ProcessArchitecture currentArchitecture = base::GetCurrentProcessArchitecture();
uint32_t containerArchitectures = GetSupportedArchitecturesForProcessType(GeckoProcessType_Plugin);
diff --git a/dom/plugins/ipc/PluginProcessParent.h b/dom/plugins/ipc/PluginProcessParent.h
index 7ba631128822..003d7fc65720 100644
--- a/dom/plugins/ipc/PluginProcessParent.h
+++ b/dom/plugins/ipc/PluginProcessParent.h
@@ -50,8 +50,11 @@ public:
*
* @param aLaunchCompleteTask Task that is executed on the main
* thread once the asynchonous launch has completed.
+ * @param aEnableSandbox Enables a process sandbox if one is available for
+ * this platform/build. Will assert if true passed and one is not available.
*/
- bool Launch(UniquePtr aLaunchCompleteTask = UniquePtr());
+ bool Launch(UniquePtr aLaunchCompleteTask = UniquePtr(),
+ bool aEnableSandbox = false);
void Delete();
diff --git a/dom/system/gonk/NetworkManager.js b/dom/system/gonk/NetworkManager.js
index 6274e95e9dd3..c26d162ce33b 100644
--- a/dom/system/gonk/NetworkManager.js
+++ b/dom/system/gonk/NetworkManager.js
@@ -344,14 +344,16 @@ NetworkManager.prototype = {
gNetworkService.removeHostRoutes(network.name);
this.setHostRoutes(network);
}
+
+ // Remove pre-created default route and let setAndConfigureActive()
+ // to set default route only on preferred network
+ gNetworkService.removeDefaultRoute(network);
+
// Dun type is a special case where we add the default route to a
// secondary table.
if (network.type == Ci.nsINetworkInterface.NETWORK_TYPE_MOBILE_DUN) {
this.setSecondaryDefaultRoute(network);
}
- // Remove pre-created default route and let setAndConfigureActive()
- // to set default route only on preferred network
- gNetworkService.removeDefaultRoute(network);
this._addSubnetRoutes(network);
this.setAndConfigureActive();
diff --git a/dom/system/gonk/NetworkUtils.cpp b/dom/system/gonk/NetworkUtils.cpp
index 4dab9a1de9de..64ced69ed1de 100644
--- a/dom/system/gonk/NetworkUtils.cpp
+++ b/dom/system/gonk/NetworkUtils.cpp
@@ -1185,6 +1185,57 @@ void NetworkUtils::setDefaultNetwork(CommandChain* aChain,
doCommand(command, aChain, aCallback);
}
+void NetworkUtils::addRouteToSecondaryTable(CommandChain* aChain,
+ CommandCallback aCallback,
+ NetworkResultOptions& aResult) {
+
+ char command[MAX_COMMAND_SIZE];
+
+ if (SDK_VERSION >= 20) {
+ snprintf(command, MAX_COMMAND_SIZE - 1,
+ "network route add %d %s %s/%s %s",
+ GET_FIELD(mNetId),
+ GET_CHAR(mIfname),
+ GET_CHAR(mIp),
+ GET_CHAR(mPrefix),
+ GET_CHAR(mGateway));
+ } else {
+ snprintf(command, MAX_COMMAND_SIZE - 1,
+ "interface route add %s secondary %s %s %s",
+ GET_CHAR(mIfname),
+ GET_CHAR(mIp),
+ GET_CHAR(mPrefix),
+ GET_CHAR(mGateway));
+ }
+
+ doCommand(command, aChain, aCallback);
+}
+
+void NetworkUtils::removeRouteFromSecondaryTable(CommandChain* aChain,
+ CommandCallback aCallback,
+ NetworkResultOptions& aResult) {
+ char command[MAX_COMMAND_SIZE];
+
+ if (SDK_VERSION >= 20) {
+ snprintf(command, MAX_COMMAND_SIZE - 1,
+ "network route remove %d %s %s/%s %s",
+ GET_FIELD(mNetId),
+ GET_CHAR(mIfname),
+ GET_CHAR(mIp),
+ GET_CHAR(mPrefix),
+ GET_CHAR(mGateway));
+ } else {
+ snprintf(command, MAX_COMMAND_SIZE - 1,
+ "interface route remove %s secondary %s %s %s",
+ GET_CHAR(mIfname),
+ GET_CHAR(mIp),
+ GET_CHAR(mPrefix),
+ GET_CHAR(mGateway));
+ }
+
+ doCommand(command, aChain, aCallback);
+}
+
void NetworkUtils::setIpv6Enabled(CommandChain* aChain,
CommandCallback aCallback,
NetworkResultOptions& aResult,
@@ -2119,30 +2170,40 @@ CommandResult NetworkUtils::removeNetworkRouteLegacy(NetworkParams& aOptions)
CommandResult NetworkUtils::addSecondaryRoute(NetworkParams& aOptions)
{
- char command[MAX_COMMAND_SIZE];
- snprintf(command, MAX_COMMAND_SIZE - 1,
- "interface route add %s secondary %s %s %s",
- GET_CHAR(mIfname),
- GET_CHAR(mIp),
- GET_CHAR(mPrefix),
- GET_CHAR(mGateway));
+ static CommandFunc COMMAND_CHAIN[] = {
+ addRouteToSecondaryTable,
+ defaultAsyncSuccessHandler
+ };
- doCommand(command, nullptr, nullptr);
- return SUCCESS;
+ if (SDK_VERSION >= 20) {
+ NetIdManager::NetIdInfo netIdInfo;
+ if (!mNetIdManager.lookup(aOptions.mIfname, &netIdInfo)) {
+ return -1;
+ }
+ aOptions.mNetId = netIdInfo.mNetId;
+ }
+
+ runChain(aOptions, COMMAND_CHAIN, defaultAsyncFailureHandler);
+ return CommandResult::Pending();
}
CommandResult NetworkUtils::removeSecondaryRoute(NetworkParams& aOptions)
{
- char command[MAX_COMMAND_SIZE];
- snprintf(command, MAX_COMMAND_SIZE - 1,
- "interface route remove %s secondary %s %s %s",
- GET_CHAR(mIfname),
- GET_CHAR(mIp),
- GET_CHAR(mPrefix),
- GET_CHAR(mGateway));
+ static CommandFunc COMMAND_CHAIN[] = {
+ removeRouteFromSecondaryTable,
+ defaultAsyncSuccessHandler
+ };
- doCommand(command, nullptr, nullptr);
- return SUCCESS;
+ if (SDK_VERSION >= 20) {
+ NetIdManager::NetIdInfo netIdInfo;
+ if (!mNetIdManager.lookup(aOptions.mIfname, &netIdInfo)) {
+ return -1;
+ }
+ aOptions.mNetId = netIdInfo.mNetId;
+ }
+
+ runChain(aOptions, COMMAND_CHAIN, defaultAsyncFailureHandler);
+ return CommandResult::Pending();
}
CommandResult NetworkUtils::setNetworkInterfaceAlarm(NetworkParams& aOptions)
diff --git a/dom/system/gonk/NetworkUtils.h b/dom/system/gonk/NetworkUtils.h
index cb63bc7dc583..7e88231522d1 100644
--- a/dom/system/gonk/NetworkUtils.h
+++ b/dom/system/gonk/NetworkUtils.h
@@ -392,6 +392,8 @@ private:
static void enableIpv6(PARAMS);
static void disableIpv6(PARAMS);
static void setIpv6Enabled(PARAMS, bool aEnabled);
+ static void addRouteToSecondaryTable(PARAMS);
+ static void removeRouteFromSecondaryTable(PARAMS);
static void defaultAsyncSuccessHandler(PARAMS);
#undef PARAMS
diff --git a/dom/system/windows/WindowsLocationProvider.cpp b/dom/system/windows/WindowsLocationProvider.cpp
new file mode 100644
index 000000000000..041837302f6e
--- /dev/null
+++ b/dom/system/windows/WindowsLocationProvider.cpp
@@ -0,0 +1,198 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+#include "WindowsLocationProvider.h"
+#include "nsGeoPosition.h"
+#include "nsIDOMGeoPositionError.h"
+#include "prtime.h"
+
+#include
+
+namespace mozilla {
+namespace dom {
+
+class LocationEvent MOZ_FINAL : public ILocationEvents
+{
+public:
+ LocationEvent(nsIGeolocationUpdate* aCallback)
+ : mCallback(aCallback), mCount(0) {
+ }
+
+ // IUnknown interface
+ STDMETHODIMP_(ULONG) AddRef() MOZ_OVERRIDE;
+ STDMETHODIMP_(ULONG) Release() MOZ_OVERRIDE;
+ STDMETHODIMP QueryInterface(REFIID iid, void** ppv) MOZ_OVERRIDE;
+
+ // ILocationEvents interface
+ STDMETHODIMP OnStatusChanged(REFIID aReportType,
+ LOCATION_REPORT_STATUS aStatus) MOZ_OVERRIDE;
+ STDMETHODIMP OnLocationChanged(REFIID aReportType,
+ ILocationReport *aReport) MOZ_OVERRIDE;
+
+private:
+ nsCOMPtr mCallback;
+ ULONG mCount;
+};
+
+STDMETHODIMP_(ULONG)
+LocationEvent::AddRef()
+{
+ return InterlockedIncrement(&mCount);
+}
+
+STDMETHODIMP_(ULONG)
+LocationEvent::Release()
+{
+ ULONG count = InterlockedDecrement(&mCount);
+ if (!count) {
+ delete this;
+ return 0;
+ }
+ return count;
+}
+
+STDMETHODIMP
+LocationEvent::QueryInterface(REFIID iid, void** ppv)
+{
+ if (iid == IID_IUnknown) {
+ *ppv = static_cast(this);
+ } else if (iid == IID_ILocationEvents) {
+ *ppv = static_cast(this);
+ } else {
+ return E_NOINTERFACE;
+ }
+ AddRef();
+ return S_OK;
+}
+
+
+STDMETHODIMP
+LocationEvent::OnStatusChanged(REFIID aReportType,
+ LOCATION_REPORT_STATUS aStatus)
+{
+ if (aReportType != IID_ILatLongReport) {
+ return S_OK;
+ }
+
+ uint16_t err;
+ switch (aStatus) {
+ case REPORT_ACCESS_DENIED:
+ err = nsIDOMGeoPositionError::PERMISSION_DENIED;
+ break;
+ case REPORT_ERROR:
+ err = nsIDOMGeoPositionError::POSITION_UNAVAILABLE;
+ break;
+ default:
+ return S_OK;
+ }
+
+ mCallback->NotifyError(err);
+ return S_OK;
+}
+
+STDMETHODIMP
+LocationEvent::OnLocationChanged(REFIID aReportType,
+ ILocationReport *aReport)
+{
+ if (aReportType != IID_ILatLongReport) {
+ return S_OK;
+ }
+
+ nsRefPtr latLongReport;
+ if (FAILED(aReport->QueryInterface(IID_ILatLongReport,
+ getter_AddRefs(latLongReport)))) {
+ return E_FAIL;
+ }
+
+ DOUBLE latitude = 0.0;
+ latLongReport->GetLatitude(&latitude);
+
+ DOUBLE longitude = 0.0;
+ latLongReport->GetLongitude(&longitude);
+
+ DOUBLE alt = 0.0;
+ latLongReport->GetAltitude(&alt);
+
+ DOUBLE herror = 0.0;
+ latLongReport->GetErrorRadius(&herror);
+
+ DOUBLE verror = 0.0;
+ latLongReport->GetAltitudeError(&verror);
+
+ nsRefPtr position =
+ new nsGeoPosition(latitude, longitude, alt, herror, verror, 0.0, 0.0,
+ PR_Now());
+ mCallback->Update(position);
+
+ return S_OK;
+}
+
+NS_IMPL_ISUPPORTS(WindowsLocationProvider, nsIGeolocationProvider)
+
+WindowsLocationProvider::WindowsLocationProvider()
+{
+}
+
+NS_IMETHODIMP
+WindowsLocationProvider::Startup()
+{
+ nsRefPtr location;
+ if (FAILED(::CoCreateInstance(CLSID_Location, nullptr, CLSCTX_INPROC_SERVER,
+ IID_ILocation,
+ getter_AddRefs(location)))) {
+ return NS_ERROR_FAILURE;
+ }
+
+ IID reportTypes[] = { IID_ILatLongReport };
+ if (FAILED(location->RequestPermissions(nullptr, reportTypes, 1, FALSE))) {
+ return NS_ERROR_FAILURE;
+ }
+
+ mLocation = location;
+ return NS_OK;
+}
+
+NS_IMETHODIMP
+WindowsLocationProvider::Watch(nsIGeolocationUpdate* aCallback)
+{
+ nsRefPtr event = new LocationEvent(aCallback);
+ if (FAILED(mLocation->RegisterForReport(event, IID_ILatLongReport, 0))) {
+ return NS_ERROR_FAILURE;
+ }
+ return NS_OK;
+}
+
+NS_IMETHODIMP
+WindowsLocationProvider::Shutdown()
+{
+ if (mLocation) {
+ mLocation->UnregisterForReport(IID_ILatLongReport);
+ mLocation = nullptr;
+ }
+
+ return NS_OK;
+}
+
+NS_IMETHODIMP
+WindowsLocationProvider::SetHighAccuracy(bool enable)
+{
+ if (!mLocation) {
+ return NS_ERROR_FAILURE;
+ }
+
+ LOCATION_DESIRED_ACCURACY desiredAccuracy;
+ if (enable) {
+ desiredAccuracy = LOCATION_DESIRED_ACCURACY_HIGH;
+ } else {
+ desiredAccuracy = LOCATION_DESIRED_ACCURACY_DEFAULT;
+ }
+ if (FAILED(mLocation->SetDesiredAccuracy(IID_ILatLongReport,
+ desiredAccuracy))) {
+ return NS_ERROR_FAILURE;
+ }
+ return NS_OK;
+}
+
+} // namespace dom
+} // namespace mozilla
diff --git a/dom/system/windows/WindowsLocationProvider.h b/dom/system/windows/WindowsLocationProvider.h
new file mode 100644
index 000000000000..3a9a9c85be7f
--- /dev/null
+++ b/dom/system/windows/WindowsLocationProvider.h
@@ -0,0 +1,31 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+#ifndef mozilla_dom_WindowsLocationProvider_h__
+#define mozilla_dom_WindowsLocationProvider_h__
+
+#include "nsAutoPtr.h"
+#include "nsIGeolocationProvider.h"
+
+#include
+
+namespace mozilla {
+namespace dom {
+
+class WindowsLocationProvider MOZ_FINAL : public nsIGeolocationProvider
+{
+public:
+ NS_DECL_ISUPPORTS
+ NS_DECL_NSIGEOLOCATIONPROVIDER
+
+ WindowsLocationProvider();
+
+private:
+ nsRefPtr mLocation;
+};
+
+} // namespace dom
+} // namespace mozilla
+
+#endif // mozilla_dom_WindowsLocationProvider_h__
diff --git a/dom/system/windows/moz.build b/dom/system/windows/moz.build
index 005959aa3fc4..178cd7a82667 100644
--- a/dom/system/windows/moz.build
+++ b/dom/system/windows/moz.build
@@ -6,6 +6,7 @@
SOURCES += [
'nsHapticFeedback.cpp',
+ 'WindowsLocationProvider.cpp'
]
FAIL_ON_WARNINGS = True
diff --git a/dom/telephony/gonk/DialNumberUtils.jsm b/dom/telephony/gonk/DialNumberUtils.jsm
new file mode 100644
index 000000000000..7fd15163da9f
--- /dev/null
+++ b/dom/telephony/gonk/DialNumberUtils.jsm
@@ -0,0 +1,128 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this file,
+ * You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+"use strict";
+
+this.EXPORTED_SYMBOLS = ["DialNumberUtils"];
+
+const {classes: Cc, interfaces: Ci, utils: Cu, results: Cr} = Components;
+
+Cu.import("resource://gre/modules/systemlibs.js");
+
+const DEFAULT_EMERGENCY_NUMBERS = ["112", "911"];
+
+const MMI_MATCH_GROUP_FULL_MMI = 1;
+const MMI_MATCH_GROUP_PROCEDURE = 2;
+const MMI_MATCH_GROUP_SERVICE_CODE = 3;
+const MMI_MATCH_GROUP_SIA = 4;
+const MMI_MATCH_GROUP_SIB = 5;
+const MMI_MATCH_GROUP_SIC = 6;
+const MMI_MATCH_GROUP_PWD_CONFIRM = 7;
+const MMI_MATCH_GROUP_DIALING_NUMBER = 8;
+
+this.DialNumberUtils = {
+ /**
+ * Check a given number against the list of emergency numbers provided by the
+ * RIL.
+ */
+ isEmergency: function(aNumber) {
+ // Check ril provided numbers first.
+ let numbers = libcutils.property_get("ril.ecclist") ||
+ libcutils.property_get("ro.ril.ecclist");
+ if (numbers) {
+ numbers = numbers.split(",");
+ } else {
+ // No ecclist system property, so use our own list.
+ numbers = DEFAULT_EMERGENCY_NUMBERS;
+ }
+ return numbers.indexOf(aNumber) != -1;
+ },
+
+ _mmiRegExp: (function() {
+ // Procedure, which could be *, #, *#, **, ##
+ let procedure = "(\\*[*#]?|##?)";
+
+ // Service code, which is a 2 or 3 digits that uniquely specifies the
+ // Supplementary Service associated with the MMI code.
+ let serviceCode = "(\\d{2,3})";
+
+ // Supplementary Information SIA, SIB and SIC.
+ // Where a particular service request does not require any SI, "*SI" is
+ // not entered. The use of SIA, SIB and SIC is optional and shall be
+ // entered in any of the following formats:
+ // - *SIA*SIB*SIC#
+ // - *SIA*SIB#
+ // - *SIA**SIC#
+ // - *SIA#
+ // - **SIB*SIC#
+ // - ***SIC#
+ //
+ // Also catch the additional NEW_PASSWORD for the case of a password
+ // registration procedure. Ex:
+ // - * 03 * ZZ * OLD_PASSWORD * NEW_PASSWORD * NEW_PASSWORD #
+ // - ** 03 * ZZ * OLD_PASSWORD * NEW_PASSWORD * NEW_PASSWORD #
+ // - * 03 ** OLD_PASSWORD * NEW_PASSWORD * NEW_PASSWORD #
+ // - ** 03 ** OLD_PASSWORD * NEW_PASSWORD * NEW_PASSWORD #
+ let si = "\\*([^*#]*)";
+ let allSi = "";
+ for (let i = 0; i < 4; ++i) {
+ allSi = "(?:" + si + allSi + ")?";
+ }
+
+ let fullmmi = "(" + procedure + serviceCode + allSi + "#)";
+
+ // Dial string after the #.
+ let optionalDialString = "([^#]+)?";
+
+ return new RegExp("^" + fullmmi + optionalDialString + "$");
+ })(),
+
+ _isPoundString: function(aString) {
+ return aString && aString[aString.length - 1] === "#";
+ },
+
+ _isShortString: function(aString) {
+ if (!aString || this.isEmergency(aString) || aString.length > 2 ||
+ (aString.length == 2 && aString[0] === "1")) {
+ return false;
+ }
+ return true;
+ },
+
+ /**
+ * Check parse the given string as an MMI code.
+ *
+ * An MMI code should be:
+ * - Activation (*SC*SI#).
+ * - Deactivation (#SC*SI#).
+ * - Interrogation (*#SC*SI#).
+ * - Registration (**SC*SI#).
+ * - Erasure (##SC*SI#).
+ * where SC = Service Code (2 or 3 digits) and SI = Supplementary Info
+ * (variable length).
+ */
+ parseMMI: function(aString) {
+ let matches = this._mmiRegExp.exec(aString);
+ if (matches) {
+ return {
+ fullMMI: matches[MMI_MATCH_GROUP_FULL_MMI],
+ procedure: matches[MMI_MATCH_GROUP_PROCEDURE],
+ serviceCode: matches[MMI_MATCH_GROUP_SERVICE_CODE],
+ sia: matches[MMI_MATCH_GROUP_SIA],
+ sib: matches[MMI_MATCH_GROUP_SIB],
+ sic: matches[MMI_MATCH_GROUP_SIC],
+ pwd: matches[MMI_MATCH_GROUP_PWD_CONFIRM],
+ dialNumber: matches[MMI_MATCH_GROUP_DIALING_NUMBER]
+ };
+ }
+
+ if (this._isPoundString(aString) || this._isShortString(aString)) {
+ return {
+ fullMMI: aString
+ };
+ }
+
+ return null;
+ }
+};
diff --git a/dom/telephony/gonk/TelephonyService.js b/dom/telephony/gonk/TelephonyService.js
index 1e62af845a92..acc46231f024 100644
--- a/dom/telephony/gonk/TelephonyService.js
+++ b/dom/telephony/gonk/TelephonyService.js
@@ -10,7 +10,6 @@ const {classes: Cc, interfaces: Ci, utils: Cu, results: Cr} = Components;
Cu.import("resource://gre/modules/XPCOMUtils.jsm");
Cu.import("resource://gre/modules/Services.jsm");
Cu.import("resource://gre/modules/Promise.jsm");
-Cu.import("resource://gre/modules/systemlibs.js");
XPCOMUtils.defineLazyGetter(this, "RIL", function () {
let obj = {};
@@ -48,20 +47,9 @@ const DIAL_ERROR_INVALID_STATE_ERROR = "InvalidStateError";
const DIAL_ERROR_OTHER_CONNECTION_IN_USE = "OtherConnectionInUse";
const DIAL_ERROR_BAD_NUMBER = RIL.GECKO_CALL_ERROR_BAD_NUMBER;
-const DEFAULT_EMERGENCY_NUMBERS = ["112", "911"];
const TONES_GAP_DURATION = 70;
-// MMI match groups
-const MMI_MATCH_GROUP_FULL_MMI = 1;
-const MMI_MATCH_GROUP_PROCEDURE = 2;
-const MMI_MATCH_GROUP_SERVICE_CODE = 3;
-const MMI_MATCH_GROUP_SIA = 4;
-const MMI_MATCH_GROUP_SIB = 5;
-const MMI_MATCH_GROUP_SIC = 6;
-const MMI_MATCH_GROUP_PWD_CONFIRM = 7;
-const MMI_MATCH_GROUP_DIALING_NUMBER = 8;
-
let DEBUG;
function debug(s) {
dump("TelephonyService: " + s + "\n");
@@ -93,6 +81,12 @@ XPCOMUtils.defineLazyGetter(this, "gPhoneNumberUtils", function() {
return ns.PhoneNumberUtils;
});
+XPCOMUtils.defineLazyGetter(this, "gDialNumberUtils", function() {
+ let ns = {};
+ Cu.import("resource://gre/modules/DialNumberUtils.jsm", ns);
+ return ns.DialNumberUtils;
+});
+
function MobileCallForwardingOptions(aOptions) {
for (let key in aOptions) {
this[key] = aOptions[key];
@@ -160,8 +154,6 @@ function TelephonyService() {
this._numClients = gRadioInterfaceLayer.numRadioInterfaces;
this._listeners = [];
- this._mmiRegExp = null;
-
this._isDialing = false;
this._cachedDialRequest = null;
this._currentCalls = {};
@@ -343,26 +335,6 @@ TelephonyService.prototype = {
});
},
- /**
- * Check a given number against the list of emergency numbers provided by the
- * RIL.
- *
- * @param aNumber
- * The number to look up.
- */
- _isEmergencyNumber: function(aNumber) {
- // Check ril provided numbers first.
- let numbers = libcutils.property_get("ril.ecclist") ||
- libcutils.property_get("ro.ril.ecclist");
- if (numbers) {
- numbers = numbers.split(",");
- } else {
- // No ecclist system property, so use our own list.
- numbers = DEFAULT_EMERGENCY_NUMBERS;
- }
- return numbers.indexOf(aNumber) != -1;
- },
-
/**
* Checks whether to temporarily suppress caller id for the call.
*
@@ -553,7 +525,7 @@ TelephonyService.prototype = {
isDialEmergency: aIsDialEmergency }, aCallback);
}
} else {
- let mmi = this._parseMMI(aNumber);
+ let mmi = gDialNumberUtils.parseMMI(aNumber);
if (!mmi) {
this._dialCall(aClientId,
{ number: aNumber,
@@ -602,7 +574,7 @@ TelephonyService.prototype = {
return;
}
- aOptions.isEmergency = this._isEmergencyNumber(aOptions.number);
+ aOptions.isEmergency = gDialNumberUtils.isEmergency(aOptions.number);
if (aOptions.isEmergency) {
// Automatically select a proper clientId for emergency call.
aClientId = gRadioInterfaceLayer.getClientIdForEmergencyCall() ;
@@ -750,138 +722,6 @@ TelephonyService.prototype = {
});
},
- /**
- * Build the regex to parse MMI string. TS.22.030
- *
- * The resulting groups after matching will be:
- * 1 = full MMI string that might be used as a USSD request.
- * 2 = MMI procedure.
- * 3 = Service code.
- * 4 = SIA.
- * 5 = SIB.
- * 6 = SIC.
- * 7 = Password registration.
- * 8 = Dialing number.
- */
- _buildMMIRegExp: function() {
- // The general structure of the codes is as follows:
- // - Activation (*SC*SI#).
- // - Deactivation (#SC*SI#).
- // - Interrogation (*#SC*SI#).
- // - Registration (**SC*SI#).
- // - Erasure (##SC*SI#).
- //
- // where SC = Service Code (2 or 3 digits) and SI = Supplementary Info
- // (variable length).
-
- // Procedure, which could be *, #, *#, **, ##
- let procedure = "(\\*[*#]?|##?)";
-
- // Service code, which is a 2 or 3 digits that uniquely specifies the
- // Supplementary Service associated with the MMI code.
- let serviceCode = "(\\d{2,3})";
-
- // Supplementary Information SIA, SIB and SIC. SIA may comprise e.g. a PIN
- // code or Directory Number, SIB may be used to specify the tele or bearer
- // service and SIC to specify the value of the "No Reply Condition Timer".
- // Where a particular service request does not require any SI, "*SI" is
- // not entered. The use of SIA, SIB and SIC is optional and shall be
- // entered in any of the following formats:
- // - *SIA*SIB*SIC#
- // - *SIA*SIB#
- // - *SIA**SIC#
- // - *SIA#
- // - **SIB*SIC#
- // - ***SIC#
- //
- // Also catch the additional NEW_PASSWORD for the case of a password
- // registration procedure. Ex:
- // - * 03 * ZZ * OLD_PASSWORD * NEW_PASSWORD * NEW_PASSWORD #
- // - ** 03 * ZZ * OLD_PASSWORD * NEW_PASSWORD * NEW_PASSWORD #
- // - * 03 ** OLD_PASSWORD * NEW_PASSWORD * NEW_PASSWORD #
- // - ** 03 ** OLD_PASSWORD * NEW_PASSWORD * NEW_PASSWORD #
- let si = "\\*([^*#]*)";
- let allSi = "";
- for (let i = 0; i < 4; ++i) {
- allSi = "(?:" + si + allSi + ")?";
- }
-
- let fullmmi = "(" + procedure + serviceCode + allSi + "#)";
-
- // Dial string after the #.
- let optionalDialString = "([^#]+)?";
-
- return new RegExp("^" + fullmmi + optionalDialString + "$");
- },
-
- /**
- * Provide the regex to parse MMI string.
- */
- _getMMIRegExp: function() {
- if (!this._mmiRegExp) {
- this._mmiRegExp = this._buildMMIRegExp();
- }
-
- return this._mmiRegExp;
- },
-
- /**
- * Helper to parse # string. TS.22.030 Figure 3.5.3.2.
- */
- _isPoundString: function(aMmiString) {
- return (aMmiString.charAt(aMmiString.length - 1) === "#");
- },
-
- /**
- * Helper to parse short string. TS.22.030 Figure 3.5.3.2.
- */
- _isShortString: function(aMmiString) {
- if (aMmiString.length > 2) {
- return false;
- }
-
- // Input string is
- // - emergency number or
- // - 2 digits starting with a "1"
- if (this._isEmergencyNumber(aMmiString) ||
- (aMmiString.length == 2) && (aMmiString.charAt(0) === '1')) {
- return false;
- }
-
- return true;
- },
-
- /**
- * Helper to parse MMI/USSD string. TS.22.030 Figure 3.5.3.2.
- */
- _parseMMI: function(aMmiString) {
- if (!aMmiString) {
- return null;
- }
-
- let matches = this._getMMIRegExp().exec(aMmiString);
- if (matches) {
- return {
- fullMMI: matches[MMI_MATCH_GROUP_FULL_MMI],
- procedure: matches[MMI_MATCH_GROUP_PROCEDURE],
- serviceCode: matches[MMI_MATCH_GROUP_SERVICE_CODE],
- sia: matches[MMI_MATCH_GROUP_SIA],
- sib: matches[MMI_MATCH_GROUP_SIB],
- sic: matches[MMI_MATCH_GROUP_SIC],
- pwd: matches[MMI_MATCH_GROUP_PWD_CONFIRM],
- dialNumber: matches[MMI_MATCH_GROUP_DIALING_NUMBER]
- };
- }
-
- if (this._isPoundString(aMmiString) || this._isShortString(aMmiString)) {
- return {
- fullMMI: aMmiString
- };
- }
-
- return null;
- },
-
_serviceCodeToKeyString: function(aServiceCode) {
switch (aServiceCode) {
case RIL.MMI_SC_CFU:
@@ -1178,7 +1018,7 @@ TelephonyService.prototype = {
aCall.clientId = aClientId;
aCall.state = nsITelephonyService.CALL_STATE_DISCONNECTED;
- aCall.isEmergency = this._isEmergencyNumber(aCall.number);
+ aCall.isEmergency = gDialNumberUtils.isEmergency(aCall.number);
let duration = ("started" in aCall && typeof aCall.started == "number") ?
new Date().getTime() - aCall.started : 0;
@@ -1273,12 +1113,12 @@ TelephonyService.prototype = {
call.state = aCall.state;
call.number = aCall.number;
call.isConference = aCall.isConference;
- call.isEmergency = this._isEmergencyNumber(aCall.number);
+ call.isEmergency = gDialNumberUtils.isEmergency(aCall.number);
call.isSwitchable = pick(aCall.isSwitchable, call.isSwitchable);
call.isMergeable = pick(aCall.isMergeable, call.isMergeable);
} else {
call = aCall;
- call.isEmergency = pick(aCall.isEmergency, this._isEmergencyNumber(aCall.number));
+ call.isEmergency = pick(aCall.isEmergency, gDialNumberUtils.isEmergency(aCall.number));
call.isSwitchable = pick(aCall.isSwitchable, true);
call.isMergeable = pick(aCall.isMergeable, true);
call.name = pick(aCall.name, "");
diff --git a/dom/telephony/moz.build b/dom/telephony/moz.build
index e2dbba00f6cb..f21b695446ac 100644
--- a/dom/telephony/moz.build
+++ b/dom/telephony/moz.build
@@ -66,6 +66,9 @@ if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'gonk' and CONFIG['MOZ_B2G_RIL']:
'gonk/TelephonyService.js',
'gonk/TelephonyService.manifest',
]
+ EXTRA_JS_MODULES += [
+ 'gonk/DialNumberUtils.jsm'
+ ]
FAIL_ON_WARNINGS = True
include('/ipc/chromium/chromium-config.mozbuild')
diff --git a/dom/telephony/test/xpcshell/test_parseMMI.js b/dom/telephony/test/xpcshell/test_parseMMI.js
index 9ed9d08fa4a8..ca02a65d459a 100644
--- a/dom/telephony/test/xpcshell/test_parseMMI.js
+++ b/dom/telephony/test/xpcshell/test_parseMMI.js
@@ -4,15 +4,14 @@
subscriptLoader.loadSubScript("resource://gre/modules/ril_consts.js", this);
let NS = {};
-subscriptLoader.loadSubScript("resource://gre/components/TelephonyService.js",
- NS);
+subscriptLoader.loadSubScript("resource://gre/modules/DialNumberUtils.jsm", NS);
function run_test() {
run_next_test();
}
function parseMMI(mmiString) {
- return NS.TelephonyService.prototype._parseMMI(mmiString);
+ return NS.DialNumberUtils.parseMMI(mmiString);
}
add_test(function test_parseMMI_empty() {
diff --git a/dom/tests/browser/browser_ConsoleAPITests.js b/dom/tests/browser/browser_ConsoleAPITests.js
index 288d002f0195..17ebebc8a92e 100644
--- a/dom/tests/browser/browser_ConsoleAPITests.js
+++ b/dom/tests/browser/browser_ConsoleAPITests.js
@@ -5,7 +5,7 @@
const TEST_URI = "http://example.com/browser/dom/tests/browser/test-console-api.html";
-var gWindow, gLevel, gArgs, gTestDriver, gStyle;
+var gWindow, gLevel, gArgs, gStyle;
function test() {
waitForExplicitFinish();
@@ -15,7 +15,7 @@ function test() {
var browser = gBrowser.selectedBrowser;
registerCleanupFunction(function () {
- gWindow = gLevel = gArgs = gTestDriver = null;
+ gWindow = gLevel = gArgs = null;
gBrowser.removeTab(tab);
});
@@ -26,8 +26,7 @@ function test() {
executeSoon(function test_executeSoon() {
gWindow = browser.contentWindow;
consoleAPISanityTest();
- gTestDriver = observeConsoleTest();
- gTestDriver.next();
+ observeConsoleTest();
});
}, false);
@@ -74,8 +73,6 @@ function testConsoleData(aMessageObject) {
}
}
}
-
- gTestDriver.next();
}
function testLocationData(aMessageObject) {
@@ -215,127 +212,100 @@ function observeConsoleTest() {
let win = XPCNativeWrapper.unwrap(gWindow);
expect("log", "arg");
win.console.log("arg");
- yield undefined;
expect("info", "arg", "extra arg");
win.console.info("arg", "extra arg");
- yield undefined;
expect("warn", "Lesson 1: PI is approximately equal to 3");
win.console.warn("Lesson %d: %s is approximately equal to %1.0f",
1,
"PI",
3.14159);
- yield undefined;
expect("warn", "Lesson 1: PI is approximately equal to 3.14");
win.console.warn("Lesson %d: %s is approximately equal to %1.2f",
1,
"PI",
3.14159);
- yield undefined;
expect("warn", "Lesson 1: PI is approximately equal to 3.141590");
win.console.warn("Lesson %d: %s is approximately equal to %f",
1,
"PI",
3.14159);
- yield undefined;
expect("warn", "Lesson 1: PI is approximately equal to 3.1415900");
win.console.warn("Lesson %d: %s is approximately equal to %0.7f",
1,
"PI",
3.14159);
- yield undefined;
expect("log", "%d, %s, %l");
win.console.log("%d, %s, %l");
- yield undefined;
expect("log", "%a %b %g");
win.console.log("%a %b %g");
- yield undefined;
expect("log", "%a %b %g", "a", "b");
win.console.log("%a %b %g", "a", "b");
- yield undefined;
expect("log", "2, a, %l", 3);
win.console.log("%d, %s, %l", 2, "a", 3);
- yield undefined;
// Bug #692550 handle null and undefined.
expect("log", "null, undefined");
win.console.log("%s, %s", null, undefined);
- yield undefined;
// Bug #696288 handle object as first argument.
let obj = { a: 1 };
expect("log", obj, "a");
win.console.log(obj, "a");
- yield undefined;
expect("dir", win.toString());
win.console.dir(win);
- yield undefined;
expect("error", "arg");
win.console.error("arg");
- yield undefined;
expect("exception", "arg");
win.console.exception("arg");
- yield undefined;
expect("log", "foobar");
gStyle = ["color:red;foobar;;"];
win.console.log("%cfoobar", gStyle[0]);
- yield undefined;
let obj4 = { d: 4 };
expect("warn", "foobar", obj4, "test", "bazbazstr", "last");
gStyle = [null, null, null, "color:blue;", "color:red"];
win.console.warn("foobar%Otest%cbazbaz%s%clast", obj4, gStyle[3], "str", gStyle[4]);
- yield undefined;
let obj3 = { c: 3 };
expect("info", "foobar", "bazbaz", obj3, "%comg", "color:yellow");
gStyle = [null, "color:pink;"];
win.console.info("foobar%cbazbaz", gStyle[1], obj3, "%comg", "color:yellow");
- yield undefined;
gStyle = null;
let obj2 = { b: 2 };
expect("log", "omg ", obj, " foo ", 4, obj2);
win.console.log("omg %o foo %o", obj, 4, obj2);
- yield undefined;
expect("assert", "message");
win.console.assert(false, "message");
- yield undefined;
expect("count", { label: "label a", count: 1 })
win.console.count("label a");
- yield undefined;
expect("count", { label: "label b", count: 1 })
win.console.count("label b");
- yield undefined;
expect("count", { label: "label a", count: 2 })
win.console.count("label a");
- yield undefined;
expect("count", { label: "label b", count: 2 })
win.console.count("label b");
- yield undefined;
startTraceTest();
- yield undefined;
-
startLocationTest();
- yield undefined;
}
function consoleAPISanityTest() {
diff --git a/dom/webidl/Event.webidl b/dom/webidl/Event.webidl
index 8d1c14bddcce..188045654e10 100644
--- a/dom/webidl/Event.webidl
+++ b/dom/webidl/Event.webidl
@@ -56,6 +56,7 @@ partial interface Event {
readonly attribute EventTarget? originalTarget;
readonly attribute EventTarget? explicitOriginalTarget;
+ [ChromeOnly] readonly attribute EventTarget? composedTarget;
[ChromeOnly] readonly attribute boolean multipleActionsPrevented;
[ChromeOnly] readonly attribute boolean isSynthesized;
diff --git a/dom/workers/WorkerPrivate.cpp b/dom/workers/WorkerPrivate.cpp
index 08b4e01408a6..f4c6bac57d54 100644
--- a/dom/workers/WorkerPrivate.cpp
+++ b/dom/workers/WorkerPrivate.cpp
@@ -1729,6 +1729,14 @@ private:
bool mIsOffline;
};
+#ifdef DEBUG
+static bool
+StartsWithExplicit(nsACString& s)
+{
+ return StringBeginsWith(s, NS_LITERAL_CSTRING("explicit/"));
+}
+#endif
+
class WorkerJSRuntimeStats : public JS::RuntimeStats
{
const nsACString& mRtPath;
@@ -1761,6 +1769,9 @@ public:
xpc::ZoneStatsExtras* extras = new xpc::ZoneStatsExtras;
extras->pathPrefix = mRtPath;
extras->pathPrefix += nsPrintfCString("zone(0x%p)/", (void *)aZone);
+
+ MOZ_ASSERT(StartsWithExplicit(extras->pathPrefix));
+
aZoneStats->extra = extras;
}
@@ -1787,6 +1798,9 @@ public:
// This should never be used when reporting with workers (hence the "?!").
extras->domPathPrefix.AssignLiteral("explicit/workers/?!/");
+ MOZ_ASSERT(StartsWithExplicit(extras->jsPathPrefix));
+ MOZ_ASSERT(StartsWithExplicit(extras->domPathPrefix));
+
extras->location = nullptr;
aCompartmentStats->extra = extras;
@@ -2081,15 +2095,14 @@ public:
AssertIsOnMainThread();
// Assumes that WorkerJSRuntimeStats will hold a reference to |path|, and
- // not a copy, as TryToMapAddon() may later modify if.
+ // not a copy, as TryToMapAddon() may later modify it.
nsCString path;
WorkerJSRuntimeStats rtStats(path);
{
MutexAutoLock lock(mMutex);
- if (!mWorkerPrivate ||
- !mWorkerPrivate->BlockAndCollectRuntimeStats(&rtStats, aAnonymize)) {
+ if (!mWorkerPrivate) {
// Returning NS_OK here will effectively report 0 memory.
return NS_OK;
}
@@ -2113,6 +2126,11 @@ public:
path.AppendPrintf(", 0x%p)/", static_cast(mWorkerPrivate));
TryToMapAddon(path);
+
+ if (!mWorkerPrivate->BlockAndCollectRuntimeStats(&rtStats, aAnonymize)) {
+ // Returning NS_OK here will effectively report 0 memory.
+ return NS_OK;
+ }
}
return xpc::ReportJSRuntimeExplicitTreeStats(rtStats, path,
@@ -3502,7 +3520,7 @@ WorkerPrivateParent::SetBaseURI(nsIURI* aBaseURI)
if (NS_SUCCEEDED(aBaseURI->GetRef(temp)) && !temp.IsEmpty()) {
nsCOMPtr converter =
do_GetService(NS_ITEXTTOSUBURI_CONTRACTID);
- if (converter) {
+ if (converter && nsContentUtils::EncodeDecodeURLHash()) {
nsCString charset;
nsAutoString unicodeRef;
if (NS_SUCCEEDED(aBaseURI->GetOriginCharset(charset)) &&
diff --git a/dom/workers/WorkerScope.cpp b/dom/workers/WorkerScope.cpp
index c2eb0b76be85..06f50d7b3d80 100644
--- a/dom/workers/WorkerScope.cpp
+++ b/dom/workers/WorkerScope.cpp
@@ -95,6 +95,7 @@ NS_IMPL_RELEASE_INHERITED(WorkerGlobalScope, DOMEventTargetHelper)
NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(WorkerGlobalScope)
NS_INTERFACE_MAP_ENTRY(nsIGlobalObject)
+ NS_INTERFACE_MAP_ENTRY(nsISupportsWeakReference)
NS_INTERFACE_MAP_END_INHERITING(DOMEventTargetHelper)
JSObject*
diff --git a/dom/workers/WorkerScope.h b/dom/workers/WorkerScope.h
index 786d6b92eb34..84f6066f6d49 100644
--- a/dom/workers/WorkerScope.h
+++ b/dom/workers/WorkerScope.h
@@ -10,6 +10,7 @@
#include "mozilla/DOMEventTargetHelper.h"
#include "mozilla/dom/Headers.h"
#include "mozilla/dom/RequestBinding.h"
+#include "nsWeakReference.h"
namespace mozilla {
namespace dom {
@@ -37,7 +38,8 @@ class WorkerNavigator;
class Performance;
class WorkerGlobalScope : public DOMEventTargetHelper,
- public nsIGlobalObject
+ public nsIGlobalObject,
+ public nsSupportsWeakReference
{
typedef mozilla::dom::indexedDB::IDBFactory IDBFactory;
diff --git a/editor/libeditor/nsEditor.cpp b/editor/libeditor/nsEditor.cpp
index 4bc6cb9c4cf1..4aeda8b14799 100644
--- a/editor/libeditor/nsEditor.cpp
+++ b/editor/libeditor/nsEditor.cpp
@@ -1133,6 +1133,12 @@ nsEditor::CanCopy(bool *aCanCut)
return NS_ERROR_NOT_IMPLEMENTED;
}
+NS_IMETHODIMP
+nsEditor::CanDelete(bool *aCanDelete)
+{
+ return NS_ERROR_NOT_IMPLEMENTED;
+}
+
NS_IMETHODIMP
nsEditor::Paste(int32_t aSelectionType)
{
diff --git a/editor/libeditor/nsEditorCommands.cpp b/editor/libeditor/nsEditorCommands.cpp
index a9576ab6c0ad..dd7f87af1818 100644
--- a/editor/libeditor/nsEditorCommands.cpp
+++ b/editor/libeditor/nsEditorCommands.cpp
@@ -590,7 +590,7 @@ nsDeleteCommand::IsCommandEnabled(const char *aCommandName,
NS_ENSURE_SUCCESS(rv, rv);
if (!nsCRT::strcmp("cmd_delete", aCommandName) && *outCmdEnabled) {
- rv = editor->CanCut(outCmdEnabled);
+ rv = editor->CanDelete(outCmdEnabled);
NS_ENSURE_SUCCESS(rv, rv);
}
diff --git a/editor/libeditor/nsHTMLEditor.cpp b/editor/libeditor/nsHTMLEditor.cpp
index ea1e6d9f6227..8069fdafcfe3 100644
--- a/editor/libeditor/nsHTMLEditor.cpp
+++ b/editor/libeditor/nsHTMLEditor.cpp
@@ -969,7 +969,6 @@ nsHTMLEditor::IsVisBreak(nsINode* aNode)
return true;
}
-
bool
nsHTMLEditor::IsVisBreak(nsIDOMNode* aNode)
{
@@ -978,17 +977,6 @@ nsHTMLEditor::IsVisBreak(nsIDOMNode* aNode)
return IsVisBreak(node);
}
-NS_IMETHODIMP
-nsHTMLEditor::BreakIsVisible(nsIDOMNode *aNode, bool *aIsVisible)
-{
- NS_ENSURE_ARG_POINTER(aNode && aIsVisible);
-
- *aIsVisible = IsVisBreak(aNode);
-
- return NS_OK;
-}
-
-
NS_IMETHODIMP
nsHTMLEditor::GetIsDocumentEditable(bool *aIsDocumentEditable)
{
diff --git a/editor/libeditor/nsPlaintextEditor.cpp b/editor/libeditor/nsPlaintextEditor.cpp
index 08c053c2e6fe..ae4906af49ff 100644
--- a/editor/libeditor/nsPlaintextEditor.cpp
+++ b/editor/libeditor/nsPlaintextEditor.cpp
@@ -1153,14 +1153,15 @@ nsPlaintextEditor::Redo(uint32_t aCount)
}
bool
-nsPlaintextEditor::CanCutOrCopy()
+nsPlaintextEditor::CanCutOrCopy(PasswordFieldAllowed aPasswordFieldAllowed)
{
nsRefPtr selection = GetSelection();
if (!selection) {
return false;
}
- if (IsPasswordEditor())
+ if (aPasswordFieldAllowed == ePasswordFieldNotAllowed &&
+ IsPasswordEditor())
return false;
return !selection->Collapsed();
@@ -1198,7 +1199,7 @@ NS_IMETHODIMP nsPlaintextEditor::Cut()
NS_IMETHODIMP nsPlaintextEditor::CanCut(bool *aCanCut)
{
NS_ENSURE_ARG_POINTER(aCanCut);
- *aCanCut = IsModifiable() && CanCutOrCopy();
+ *aCanCut = IsModifiable() && CanCutOrCopy(ePasswordFieldNotAllowed);
return NS_OK;
}
@@ -1211,7 +1212,14 @@ NS_IMETHODIMP nsPlaintextEditor::Copy()
NS_IMETHODIMP nsPlaintextEditor::CanCopy(bool *aCanCopy)
{
NS_ENSURE_ARG_POINTER(aCanCopy);
- *aCanCopy = CanCutOrCopy();
+ *aCanCopy = CanCutOrCopy(ePasswordFieldNotAllowed);
+ return NS_OK;
+}
+
+NS_IMETHODIMP nsPlaintextEditor::CanDelete(bool *aCanDelete)
+{
+ NS_ENSURE_ARG_POINTER(aCanDelete);
+ *aCanDelete = IsModifiable() && CanCutOrCopy(ePasswordFieldAllowed);
return NS_OK;
}
diff --git a/editor/libeditor/nsPlaintextEditor.h b/editor/libeditor/nsPlaintextEditor.h
index 89de1deb2db9..3f900e6ba78c 100644
--- a/editor/libeditor/nsPlaintextEditor.h
+++ b/editor/libeditor/nsPlaintextEditor.h
@@ -96,6 +96,7 @@ public:
NS_IMETHOD CanCut(bool *aCanCut) MOZ_OVERRIDE;
NS_IMETHOD Copy() MOZ_OVERRIDE;
NS_IMETHOD CanCopy(bool *aCanCopy) MOZ_OVERRIDE;
+ NS_IMETHOD CanDelete(bool *aCanDelete) MOZ_OVERRIDE;
NS_IMETHOD Paste(int32_t aSelectionType) MOZ_OVERRIDE;
NS_IMETHOD CanPaste(int32_t aSelectionType, bool *aCanPaste) MOZ_OVERRIDE;
NS_IMETHOD PasteTransferable(nsITransferable *aTransferable) MOZ_OVERRIDE;
@@ -203,7 +204,11 @@ protected:
/* small utility routine to test the eEditorReadonly bit */
bool IsModifiable();
- bool CanCutOrCopy();
+ enum PasswordFieldAllowed {
+ ePasswordFieldAllowed,
+ ePasswordFieldNotAllowed
+ };
+ bool CanCutOrCopy(PasswordFieldAllowed aPasswordFieldAllowed);
bool FireClipboardEvent(int32_t aType, int32_t aSelectionType);
bool UpdateMetaCharset(nsIDOMDocument* aDocument,
diff --git a/editor/libeditor/nsTextEditRules.cpp b/editor/libeditor/nsTextEditRules.cpp
index ec317be0de99..2da4bc29c68d 100644
--- a/editor/libeditor/nsTextEditRules.cpp
+++ b/editor/libeditor/nsTextEditRules.cpp
@@ -1198,7 +1198,9 @@ nsTextEditRules::TruncateInsertionIfNeeded(Selection* aSelection,
if (!aSelection || !aInString || !aOutString) {return NS_ERROR_NULL_POINTER;}
nsresult res = NS_OK;
- *aOutString = *aInString;
+ if (!aOutString->Assign(*aInString, mozilla::fallible_t())) {
+ return NS_ERROR_OUT_OF_MEMORY;
+ }
if (aTruncated) {
*aTruncated = false;
}
@@ -1233,6 +1235,8 @@ nsTextEditRules::TruncateInsertionIfNeeded(Selection* aSelection,
const int32_t resultingDocLength = docLength - selectionLength - oldCompStrLength;
if (resultingDocLength >= aMaxLength)
{
+ // This call is guaranteed to reduce the capacity of the string, so it
+ // cannot cause an OOM.
aOutString->Truncate();
if (aTruncated) {
*aTruncated = true;
@@ -1253,6 +1257,8 @@ nsTextEditRules::TruncateInsertionIfNeeded(Selection* aSelection,
}
// XXX What should we do if we're removing IVS and its preceding
// character won't be removed?
+ // This call is guaranteed to reduce the capacity of the string, so it
+ // cannot cause an OOM.
aOutString->Truncate(newLength);
if (aTruncated) {
*aTruncated = true;
diff --git a/editor/libeditor/tests/test_bug1067255.html b/editor/libeditor/tests/test_bug1067255.html
index c91dbb3e8cbd..5840404ab8a3 100644
--- a/editor/libeditor/tests/test_bug1067255.html
+++ b/editor/libeditor/tests/test_bug1067255.html
@@ -34,12 +34,14 @@ https://bugzilla.mozilla.org/show_bug.cgi?id=1067255
ok(editor1.canCopy(), "can copy, text");
ok(editor1.canCut(), "can cut, text");
+ ok(editor1.canDelete(), "can delete, text");
password.focus();
password.select();
ok(!editor2.canCopy(), "can copy, password");
ok(!editor2.canCut(), "can cut, password");
+ ok(editor1.canDelete(), "can delete, password");
SimpleTest.finish();
}
diff --git a/editor/nsIEditor.idl b/editor/nsIEditor.idl
index 250a2b18584c..79a36614a918 100644
--- a/editor/nsIEditor.idl
+++ b/editor/nsIEditor.idl
@@ -21,8 +21,7 @@ interface nsIEditActionListener;
interface nsIInlineSpellChecker;
interface nsITransferable;
-[scriptable, uuid(a1ddae68-35d0-11e4-9329-cb55463f21c9)]
-
+[scriptable, uuid(094be624-f0bf-400f-89e2-6a84baab9474)]
interface nsIEditor : nsISupports
{
%{C++
@@ -305,18 +304,22 @@ interface nsIEditor : nsISupports
* collapsed selection.
*/
boolean canCut();
-
+
/** copy the currently selected text, putting it into the OS clipboard
* What if no text is selected?
* What about mixed selections?
* What are the clipboard formats?
*/
void copy();
-
+
/** Can we copy? True if we have a non-collapsed selection.
*/
boolean canCopy();
-
+
+ /** Can we delete? True if we have a non-collapsed selection.
+ */
+ boolean canDelete();
+
/** paste the text in the OS clipboard at the cursor position, replacing
* the selected text (if any)
*/
diff --git a/editor/nsIHTMLEditor.idl b/editor/nsIHTMLEditor.idl
index 6347f13c59db..d49ec4157a14 100644
--- a/editor/nsIHTMLEditor.idl
+++ b/editor/nsIHTMLEditor.idl
@@ -22,8 +22,7 @@ class Element;
[ptr] native Element (mozilla::dom::Element);
-[scriptable, uuid(393a364f-e8e2-48a1-a271-a0067b6bac9b)]
-
+[scriptable, uuid(87ee993e-985f-4a43-a974-0d9512da2fb0)]
interface nsIHTMLEditor : nsISupports
{
%{C++
@@ -551,11 +550,6 @@ interface nsIHTMLEditor : nsISupports
*/
attribute boolean returnInParagraphCreatesNewParagraph;
- /**
- * Checks whether a BR node is visible to the user.
- */
- boolean breakIsVisible(in nsIDOMNode aNode);
-
/**
* Get an active editor's editing host in DOM window. If this editor isn't
* active in the DOM window, this returns NULL.
diff --git a/extensions/pref/autoconfig/src/nsJSConfigTriggers.cpp b/extensions/pref/autoconfig/src/nsJSConfigTriggers.cpp
index 7979ef0f99ae..ac691c345221 100644
--- a/extensions/pref/autoconfig/src/nsJSConfigTriggers.cpp
+++ b/extensions/pref/autoconfig/src/nsJSConfigTriggers.cpp
@@ -24,14 +24,14 @@ using mozilla::AutoSafeJSContext;
//*****************************************************************************
-static mozilla::Maybe > autoconfigSb;
+static JS::PersistentRooted autoconfigSb;
nsresult CentralizedAdminPrefManagerInit()
{
nsresult rv;
// If the sandbox is already created, no need to create it again.
- if (autoconfigSb)
+ if (autoconfigSb.initialized())
return NS_OK;
// Grab XPConnect.
@@ -53,14 +53,14 @@ nsresult CentralizedAdminPrefManagerInit()
// Unwrap, store and root the sandbox.
NS_ENSURE_STATE(sandbox->GetJSObject());
- autoconfigSb.emplace(cx, js::UncheckedUnwrap(sandbox->GetJSObject()));
+ autoconfigSb.init(cx, js::UncheckedUnwrap(sandbox->GetJSObject()));
return NS_OK;
}
nsresult CentralizedAdminPrefManagerFinish()
{
- if (autoconfigSb) {
+ if (autoconfigSb.initialized()) {
AutoSafeJSContext cx;
autoconfigSb.reset();
JS_MaybeGC(cx);
@@ -103,12 +103,12 @@ nsresult EvaluateAdminConfigScript(const char *js_buffer, size_t length,
}
AutoSafeJSContext cx;
- JSAutoCompartment ac(cx, *autoconfigSb);
+ JSAutoCompartment ac(cx, autoconfigSb);
nsAutoCString script(js_buffer, length);
JS::RootedValue v(cx);
rv = xpc->EvalInSandboxObject(NS_ConvertASCIItoUTF16(script), filename, cx,
- *autoconfigSb, &v);
+ autoconfigSb, &v);
NS_ENSURE_SUCCESS(rv, rv);
return NS_OK;
diff --git a/gfx/layers/ImageContainer.cpp b/gfx/layers/ImageContainer.cpp
index cf57987199a1..3b4e9b5620d2 100644
--- a/gfx/layers/ImageContainer.cpp
+++ b/gfx/layers/ImageContainer.cpp
@@ -35,7 +35,6 @@
#include "gfxD2DSurface.h"
#include "gfxWindowsPlatform.h"
#include
-#include "d3d10/ImageLayerD3D10.h"
#include "D3D9SurfaceImage.h"
#endif
diff --git a/gfx/layers/client/CanvasClient.cpp b/gfx/layers/client/CanvasClient.cpp
index a01da3feb9ea..6c6a3cb5d14b 100644
--- a/gfx/layers/client/CanvasClient.cpp
+++ b/gfx/layers/client/CanvasClient.cpp
@@ -403,5 +403,20 @@ CanvasClientSharedSurface::Update(gfx::IntSize aSize, ClientCanvasLayer* aLayer)
forwarder->UseTexture(this, mFrontTex);
}
+void
+CanvasClientSharedSurface::ClearSurfaces()
+{
+ if (mFrontTex && (mFront || mPrevFront)) {
+ // Force a synchronous destruction so that the TextureHost does not
+ // outlive the SharedSurface. This won't be needed once TextureClient/Host
+ // and SharedSurface are merged.
+ mFrontTex->ForceRemove(true /* sync */);
+ mFrontTex = nullptr;
+ }
+ // It is important to destroy the SharedSurface *after* the TextureClient.
+ mFront = nullptr;
+ mPrevFront = nullptr;
+}
+
}
}
diff --git a/gfx/layers/client/CanvasClient.h b/gfx/layers/client/CanvasClient.h
index a0a49ed5c72c..70f38c24d3c3 100644
--- a/gfx/layers/client/CanvasClient.h
+++ b/gfx/layers/client/CanvasClient.h
@@ -119,25 +119,30 @@ private:
RefPtr mFrontTex;
+ void ClearSurfaces();
+
public:
CanvasClientSharedSurface(CompositableForwarder* aLayerForwarder,
TextureFlags aFlags);
+ ~CanvasClientSharedSurface()
+ {
+ ClearSurfaces();
+ }
+
virtual TextureInfo GetTextureInfo() const MOZ_OVERRIDE {
return TextureInfo(CompositableType::IMAGE);
}
virtual void Clear() MOZ_OVERRIDE {
- mFront = nullptr;
- mPrevFront = nullptr;
- mFrontTex = nullptr;
+ ClearSurfaces();
}
virtual void Update(gfx::IntSize aSize,
ClientCanvasLayer* aLayer) MOZ_OVERRIDE;
virtual void OnDetach() MOZ_OVERRIDE {
- CanvasClientSharedSurface::Clear();
+ ClearSurfaces();
}
};
diff --git a/gfx/layers/client/TextureClient.cpp b/gfx/layers/client/TextureClient.cpp
index 341284f9fbc9..7ab4ff74aed9 100644
--- a/gfx/layers/client/TextureClient.cpp
+++ b/gfx/layers/client/TextureClient.cpp
@@ -503,10 +503,10 @@ TextureClient::KeepUntilFullDeallocation(KeepAlive* aKeep)
mActor->mKeep = aKeep;
}
-void TextureClient::ForceRemove()
+void TextureClient::ForceRemove(bool sync)
{
if (mValid && mActor) {
- if (GetFlags() & TextureFlags::DEALLOCATE_CLIENT) {
+ if (sync || GetFlags() & TextureFlags::DEALLOCATE_CLIENT) {
MOZ_PERFORMANCE_WARNING("gfx", "TextureClient/Host pair requires synchronous deallocation");
if (mActor->IPCOpen()) {
mActor->SendClearTextureHostSync();
diff --git a/gfx/layers/client/TextureClient.h b/gfx/layers/client/TextureClient.h
index 760e5006fee1..e52d9ad07540 100644
--- a/gfx/layers/client/TextureClient.h
+++ b/gfx/layers/client/TextureClient.h
@@ -426,8 +426,10 @@ public:
* If the texture flags contain TextureFlags::DEALLOCATE_CLIENT, the destruction
* will be synchronously coordinated with the compositor side, otherwise it
* will be done asynchronously.
+ * If sync is true, the destruction will be synchronous regardless of the
+ * texture's flags (bad for performance, use with care).
*/
- void ForceRemove();
+ void ForceRemove(bool sync = false);
virtual void SetReleaseFenceHandle(FenceHandle aReleaseFenceHandle)
{
diff --git a/gfx/layers/d3d10/CanvasLayerD3D10.cpp b/gfx/layers/d3d10/CanvasLayerD3D10.cpp
deleted file mode 100644
index 52b62cd40869..000000000000
--- a/gfx/layers/d3d10/CanvasLayerD3D10.cpp
+++ /dev/null
@@ -1,241 +0,0 @@
-/* -*- Mode: C++; tab-width: 20; indent-tabs-mode: nil; c-basic-offset: 2 -*-
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-#include "CanvasLayerD3D10.h"
-
-#include "../d3d9/Nv3DVUtils.h"
-#include "gfxWindowsSurface.h"
-#include "gfxWindowsPlatform.h"
-#include "SharedSurfaceANGLE.h"
-#include "SharedSurfaceGL.h"
-#include "gfxContext.h"
-#include "GLContext.h"
-#include "gfxPrefs.h"
-
-namespace mozilla {
-namespace layers {
-
-using namespace mozilla::gl;
-using namespace mozilla::gfx;
-
-CanvasLayerD3D10::CanvasLayerD3D10(LayerManagerD3D10 *aManager)
- : CanvasLayer(aManager, nullptr)
- , LayerD3D10(aManager)
- , mDataIsPremultiplied(true)
- , mOriginPos(gl::OriginPos::TopLeft)
- , mHasAlpha(true)
-{
- mImplData = static_cast(this);
-}
-
-CanvasLayerD3D10::~CanvasLayerD3D10()
-{
-}
-
-void
-CanvasLayerD3D10::Initialize(const Data& aData)
-{
- NS_ASSERTION(mSurface == nullptr, "BasicCanvasLayer::Initialize called twice!");
-
- if (aData.mGLContext) {
- mGLContext = aData.mGLContext;
- NS_ASSERTION(mGLContext->IsOffscreen(), "Canvas GLContext must be offscreen.");
- mDataIsPremultiplied = aData.mIsGLAlphaPremult;
- mOriginPos = gl::OriginPos::TopLeft;
-
- GLScreenBuffer* screen = mGLContext->Screen();
-
- UniquePtr factory = nullptr;
- if (!gfxPrefs::WebGLForceLayersReadback()) {
- if (mGLContext->IsANGLE()) {
- factory = SurfaceFactory_ANGLEShareHandle::Create(mGLContext,
- screen->mCaps);
- }
- }
-
- if (factory) {
- screen->Morph(Move(factory));
- }
- } else if (aData.mDrawTarget) {
- mDrawTarget = aData.mDrawTarget;
- void *texture = mDrawTarget->GetNativeSurface(NativeSurfaceType::D3D10_TEXTURE);
-
- if (texture) {
- mTexture = static_cast(texture);
-
- NS_ASSERTION(!aData.mGLContext,
- "CanvasLayer can't have both DrawTarget and WebGLContext/Surface");
-
- mBounds.SetRect(0, 0, aData.mSize.width, aData.mSize.height);
- device()->CreateShaderResourceView(mTexture, nullptr, getter_AddRefs(mSRView));
- return;
- }
-
- // XXX we should store mDrawTarget and use it directly in UpdateSurface,
- // bypassing Thebes
- mSurface = mDrawTarget->Snapshot();
- } else {
- MOZ_CRASH("CanvasLayer created without mSurface, mDrawTarget or mGLContext?");
- }
-
- mBounds.SetRect(0, 0, aData.mSize.width, aData.mSize.height);
- mIsD2DTexture = false;
-
- // Create a texture in case we need to readback.
- CD3D10_TEXTURE2D_DESC desc(DXGI_FORMAT_B8G8R8A8_UNORM, mBounds.width, mBounds.height, 1, 1);
- desc.Usage = D3D10_USAGE_DYNAMIC;
- desc.CPUAccessFlags = D3D10_CPU_ACCESS_WRITE;
-
- HRESULT hr = device()->CreateTexture2D(&desc, nullptr, getter_AddRefs(mTexture));
- if (FAILED(hr)) {
- NS_WARNING("Failed to create texture for CanvasLayer!");
- return;
- }
-
- device()->CreateShaderResourceView(mTexture, nullptr, getter_AddRefs(mUploadSRView));
-}
-
-void
-CanvasLayerD3D10::UpdateSurface()
-{
- if (!IsDirty())
- return;
- Painted();
-
- if (mDrawTarget) {
- mDrawTarget->Flush();
- } else if (mIsD2DTexture) {
- return;
- }
-
- if (!mTexture) {
- return;
- }
-
- SharedSurface* surf = nullptr;
- if (mGLContext) {
- auto screen = mGLContext->Screen();
- MOZ_ASSERT(screen);
-
- surf = screen->Front()->Surf();
- if (!surf)
- return;
- surf->WaitSync();
-
- if (surf->mType == SharedSurfaceType::EGLSurfaceANGLE) {
- SharedSurface_ANGLEShareHandle* shareSurf = SharedSurface_ANGLEShareHandle::Cast(surf);
- HANDLE shareHandle = shareSurf->GetShareHandle();
-
- HRESULT hr = device()->OpenSharedResource(shareHandle,
- __uuidof(ID3D10Texture2D),
- getter_AddRefs(mTexture));
- if (FAILED(hr))
- return;
-
- hr = device()->CreateShaderResourceView(mTexture,
- nullptr,
- getter_AddRefs(mSRView));
- if (FAILED(hr))
- return;
-
- return;
- }
- }
-
- D3D10_MAPPED_TEXTURE2D map;
- HRESULT hr = mTexture->Map(0, D3D10_MAP_WRITE_DISCARD, 0, &map);
-
- if (FAILED(hr)) {
- gfxWarning() << "Failed to lock CanvasLayer texture.";
- return;
- }
-
- RefPtr destTarget =
- Factory::CreateDrawTargetForD3D10Texture(mTexture,
- SurfaceFormat::R8G8B8A8);
-
- if (!destTarget) {
- gfxWarning() << "Invalid D3D10 texture target R8G8B8A8";
- return;
- }
-
- if (surf) {
- if (!ReadbackSharedSurface(surf, destTarget)) {
- gfxWarning() << "Failed to readback into texture.";
- }
- } else if (mSurface) {
- Rect r(Point(0, 0), ToRect(mBounds).Size());
- destTarget->DrawSurface(mSurface, r, r, DrawSurfaceOptions(),
- DrawOptions(1.0F, CompositionOp::OP_SOURCE));
- }
-
- mTexture->Unmap(0);
- mSRView = mUploadSRView;
-}
-
-Layer*
-CanvasLayerD3D10::GetLayer()
-{
- return this;
-}
-
-void
-CanvasLayerD3D10::RenderLayer()
-{
- FirePreTransactionCallback();
- UpdateSurface();
- FireDidTransactionCallback();
-
- if (!mTexture)
- return;
-
- nsIntRect visibleRect = mVisibleRegion.GetBounds();
-
- SetEffectTransformAndOpacity();
-
- uint8_t shaderFlags = 0;
- shaderFlags |= LoadMaskTexture();
- shaderFlags |= mDataIsPremultiplied
- ? SHADER_PREMUL : SHADER_NON_PREMUL | SHADER_RGBA;
- shaderFlags |= mHasAlpha ? SHADER_RGBA : SHADER_RGB;
- shaderFlags |= mFilter == GraphicsFilter::FILTER_NEAREST
- ? SHADER_POINT : SHADER_LINEAR;
- ID3D10EffectTechnique* technique = SelectShader(shaderFlags);
-
- if (mSRView) {
- effect()->GetVariableByName("tRGB")->AsShaderResource()->SetResource(mSRView);
- }
-
- effect()->GetVariableByName("vLayerQuad")->AsVector()->SetFloatVector(
- ShaderConstantRectD3D10(
- (float)mBounds.x,
- (float)mBounds.y,
- (float)mBounds.width,
- (float)mBounds.height)
- );
-
- const bool needsYFlip = (mOriginPos == gl::OriginPos::BottomLeft);
-
- if (needsYFlip) {
- effect()->GetVariableByName("vTextureCoords")->AsVector()->SetFloatVector(
- ShaderConstantRectD3D10(
- 0,
- 1.0f,
- 1.0f,
- -1.0f)
- );
- }
-
- technique->GetPassByIndex(0)->Apply(0);
- device()->Draw(4, 0);
-
- if (needsYFlip) {
- effect()->GetVariableByName("vTextureCoords")->AsVector()->
- SetFloatVector(ShaderConstantRectD3D10(0, 0, 1.0f, 1.0f));
- }
-}
-
-} /* namespace layers */
-} /* namespace mozilla */
diff --git a/gfx/layers/d3d10/CanvasLayerD3D10.h b/gfx/layers/d3d10/CanvasLayerD3D10.h
deleted file mode 100644
index 34733f0d37b9..000000000000
--- a/gfx/layers/d3d10/CanvasLayerD3D10.h
+++ /dev/null
@@ -1,73 +0,0 @@
-/* -*- Mode: C++; tab-width: 20; indent-tabs-mode: nil; c-basic-offset: 2 -*-
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-#ifndef GFX_CANVASLAYERD3D10_H
-#define GFX_CANVASLAYERD3D10_H
-
-#include "GLContextTypes.h"
-#include "LayerManagerD3D10.h"
-#include "mozilla/Preferences.h"
-
-namespace mozilla {
-
-namespace gl {
-class GLContext;
-}
-
-namespace layers {
-
-class CanvasLayerD3D10 : public CanvasLayer,
- public LayerD3D10
-{
-public:
- CanvasLayerD3D10(LayerManagerD3D10 *aManager);
- ~CanvasLayerD3D10();
-
- // CanvasLayer implementation
- virtual void Initialize(const Data& aData);
-
- // LayerD3D10 implementation
- virtual Layer* GetLayer();
- virtual void RenderLayer();
-
-private:
- typedef mozilla::gl::GLContext GLContext;
-
- void UpdateSurface();
-
- RefPtr mSurface;
- mozilla::RefPtr mDrawTarget;
- nsRefPtr mGLContext;
- nsRefPtr mTexture;
- nsRefPtr mUploadSRView;
- nsRefPtr mSRView;
-
- bool mDataIsPremultiplied;
- gl::OriginPos mOriginPos;
- bool mIsD2DTexture;
- bool mHasAlpha;
-
- nsAutoArrayPtr mCachedTempBlob;
- uint32_t mCachedTempBlob_Size;
-
- uint8_t* GetTempBlob(const uint32_t aSize)
- {
- if (!mCachedTempBlob || aSize != mCachedTempBlob_Size) {
- mCachedTempBlob = new uint8_t[aSize];
- mCachedTempBlob_Size = aSize;
- }
-
- return mCachedTempBlob;
- }
-
- void DiscardTempBlob()
- {
- mCachedTempBlob = nullptr;
- }
-};
-
-} /* layers */
-} /* mozilla */
-#endif /* GFX_CANVASLAYERD3D10_H */
diff --git a/gfx/layers/d3d10/ColorLayerD3D10.cpp b/gfx/layers/d3d10/ColorLayerD3D10.cpp
deleted file mode 100644
index 0b06c9079d2d..000000000000
--- a/gfx/layers/d3d10/ColorLayerD3D10.cpp
+++ /dev/null
@@ -1,60 +0,0 @@
-/* -*- Mode: C++; tab-width: 20; indent-tabs-mode: nil; c-basic-offset: 4 -*-
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-#include "ColorLayerD3D10.h"
-
-#include "../d3d9/Nv3DVUtils.h"
-
-namespace mozilla {
-namespace layers {
-
-ColorLayerD3D10::ColorLayerD3D10(LayerManagerD3D10 *aManager)
- : ColorLayer(aManager, nullptr)
- , LayerD3D10(aManager)
-{
- mImplData = static_cast(this);
-}
-
-Layer*
-ColorLayerD3D10::GetLayer()
-{
- return this;
-}
-
-void
-ColorLayerD3D10::RenderLayer()
-{
- float color[4];
- // output color is premultiplied, so we need to adjust all channels.
- // mColor is not premultiplied.
- float opacity = GetEffectiveOpacity() * mColor.a;
- color[0] = (float)(mColor.r * opacity);
- color[1] = (float)(mColor.g * opacity);
- color[2] = (float)(mColor.b * opacity);
- color[3] = opacity;
-
- const gfx::Matrix4x4& transform = GetEffectiveTransform();
- void* raw = &const_cast(transform)._11;
- effect()->GetVariableByName("mLayerTransform")->SetRawValue(raw, 0, 64);
- effect()->GetVariableByName("fLayerColor")->AsVector()->SetFloatVector(color);
-
- ID3D10EffectTechnique *technique = SelectShader(SHADER_SOLID | LoadMaskTexture());
-
- nsIntRect bounds = GetBounds();
-
- effect()->GetVariableByName("vLayerQuad")->AsVector()->SetFloatVector(
- ShaderConstantRectD3D10(
- (float)bounds.x,
- (float)bounds.y,
- (float)bounds.width,
- (float)bounds.height)
- );
-
- technique->GetPassByIndex(0)->Apply(0);
- device()->Draw(4, 0);
-}
-
-} /* layers */
-} /* mozilla */
diff --git a/gfx/layers/d3d10/ColorLayerD3D10.h b/gfx/layers/d3d10/ColorLayerD3D10.h
deleted file mode 100644
index cdd085912ecd..000000000000
--- a/gfx/layers/d3d10/ColorLayerD3D10.h
+++ /dev/null
@@ -1,27 +0,0 @@
-/* -*- Mode: C++; tab-width: 20; indent-tabs-mode: nil; c-basic-offset: 4 -*-
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-#ifndef GFX_COLORLAYERD3D10_H
-#define GFX_COLORLAYERD3D10_H
-
-#include "LayerManagerD3D10.h"
-
-namespace mozilla {
-namespace layers {
-
-class ColorLayerD3D10 : public ColorLayer,
- public LayerD3D10
-{
-public:
- ColorLayerD3D10(LayerManagerD3D10 *aManager);
-
- /* LayerD3D10 implementation */
- virtual Layer* GetLayer();
- virtual void RenderLayer();
-};
-
-} /* layers */
-} /* mozilla */
-#endif /* GFX_PAINTEDLAYERD3D10_H */
diff --git a/gfx/layers/d3d10/ContainerLayerD3D10.cpp b/gfx/layers/d3d10/ContainerLayerD3D10.cpp
deleted file mode 100644
index 116ae2f264b6..000000000000
--- a/gfx/layers/d3d10/ContainerLayerD3D10.cpp
+++ /dev/null
@@ -1,268 +0,0 @@
-/* -*- Mode: C++; tab-width: 20; indent-tabs-mode: nil; c-basic-offset: 2 -*-
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-#include "ContainerLayerD3D10.h"
-
-#include "PaintedLayerD3D10.h"
-#include "ReadbackProcessor.h"
-
-using namespace mozilla::gfx;
-
-namespace mozilla {
-namespace layers {
-
-ContainerLayerD3D10::ContainerLayerD3D10(LayerManagerD3D10 *aManager)
- : ContainerLayer(aManager, nullptr)
- , LayerD3D10(aManager)
-{
- mImplData = static_cast(this);
-}
-
-ContainerLayerD3D10::~ContainerLayerD3D10()
-{
- while (mFirstChild) {
- RemoveChild(mFirstChild);
- }
-}
-
-Layer*
-ContainerLayerD3D10::GetLayer()
-{
- return this;
-}
-
-LayerD3D10*
-ContainerLayerD3D10::GetFirstChildD3D10()
-{
- if (!mFirstChild) {
- return nullptr;
- }
- return static_cast(mFirstChild->ImplData());
-}
-
-void
-ContainerLayerD3D10::RenderLayer()
-{
- float renderTargetOffset[] = { 0, 0 };
-
- nsIntRect visibleRect = mVisibleRegion.GetBounds();
- float opacity = GetEffectiveOpacity();
- bool useIntermediate = UseIntermediateSurface();
-
- nsRefPtr previousRTView;
- nsRefPtr renderTexture;
- nsRefPtr rtView;
- float previousRenderTargetOffset[2];
- nsIntSize previousViewportSize;
-
- gfx3DMatrix oldViewMatrix;
-
- if (useIntermediate) {
- device()->OMGetRenderTargets(1, getter_AddRefs(previousRTView), nullptr);
-
- D3D10_TEXTURE2D_DESC desc;
- memset(&desc, 0, sizeof(D3D10_TEXTURE2D_DESC));
- desc.ArraySize = 1;
- desc.MipLevels = 1;
- desc.Width = visibleRect.width;
- desc.Height = visibleRect.height;
- desc.BindFlags = D3D10_BIND_RENDER_TARGET | D3D10_BIND_SHADER_RESOURCE;
- desc.SampleDesc.Count = 1;
- desc.Format = DXGI_FORMAT_B8G8R8A8_UNORM;
- HRESULT hr;
- hr = device()->CreateTexture2D(&desc, nullptr, getter_AddRefs(renderTexture));
-
- if (FAILED(hr)) {
- LayerManagerD3D10::ReportFailure(NS_LITERAL_CSTRING("Failed to create new texture for ContainerLayerD3D10!"),
- hr);
- return;
- }
-
- hr = device()->CreateRenderTargetView(renderTexture, nullptr, getter_AddRefs(rtView));
- NS_ASSERTION(SUCCEEDED(hr), "Failed to create render target view for ContainerLayerD3D10!");
-
- effect()->GetVariableByName("vRenderTargetOffset")->
- GetRawValue(previousRenderTargetOffset, 0, 8);
-
- previousViewportSize = mD3DManager->GetViewport();
-
- if (mVisibleRegion.GetNumRects() != 1 || !(GetContentFlags() & CONTENT_OPAQUE)) {
- Matrix4x4 transform3D = GetEffectiveTransform();
- Matrix transform;
- // If we have an opaque ancestor layer, then we can be sure that
- // all the pixels we draw into are either opaque already or will be
- // covered by something opaque. Otherwise copying up the background is
- // not safe.
- if (mSupportsComponentAlphaChildren) {
- bool is2d = transform3D.Is2D(&transform);
- NS_ASSERTION(is2d, "Transform should be 2d when mSupportsComponentAlphaChildren.");
-
- // Copy background up from below. This applies any 2D transform that is
- // applied to use relative to our parent, and compensates for the offset
- // that was applied on our parent's rendering.
- D3D10_BOX srcBox;
- srcBox.left = std::max(visibleRect.x + int32_t(transform._31) - int32_t(previousRenderTargetOffset[0]), 0);
- srcBox.top = std::max(visibleRect.y + int32_t(transform._32) - int32_t(previousRenderTargetOffset[1]), 0);
- srcBox.right = std::min(srcBox.left + visibleRect.width, previousViewportSize.width);
- srcBox.bottom = std::min(srcBox.top + visibleRect.height, previousViewportSize.height);
- srcBox.back = 1;
- srcBox.front = 0;
-
- nsRefPtr srcResource;
- previousRTView->GetResource(getter_AddRefs(srcResource));
-
- device()->CopySubresourceRegion(renderTexture, 0,
- 0, 0, 0,
- srcResource, 0,
- &srcBox);
- } else {
- float black[] = { 0, 0, 0, 0};
- device()->ClearRenderTargetView(rtView, black);
- }
- }
-
- ID3D10RenderTargetView *rtViewPtr = rtView;
- device()->OMSetRenderTargets(1, &rtViewPtr, nullptr);
-
- renderTargetOffset[0] = (float)visibleRect.x;
- renderTargetOffset[1] = (float)visibleRect.y;
- effect()->GetVariableByName("vRenderTargetOffset")->
- SetRawValue(renderTargetOffset, 0, 8);
-
- mD3DManager->SetViewport(nsIntSize(visibleRect.Size()));
- }
-
- D3D10_RECT oldD3D10Scissor;
- UINT numRects = 1;
- device()->RSGetScissorRects(&numRects, &oldD3D10Scissor);
- // Convert scissor to an nsIntRect. D3D10_RECT's are exclusive
- // on the bottom and right values.
- nsIntRect oldScissor(oldD3D10Scissor.left,
- oldD3D10Scissor.top,
- oldD3D10Scissor.right - oldD3D10Scissor.left,
- oldD3D10Scissor.bottom - oldD3D10Scissor.top);
-
- nsAutoTArray children;
- SortChildrenBy3DZOrder(children);
-
- /*
- * Render this container's contents.
- */
- for (uint32_t i = 0; i < children.Length(); i++) {
- LayerD3D10* layerToRender = static_cast(children.ElementAt(i)->ImplData());
-
- if (layerToRender->GetLayer()->GetEffectiveVisibleRegion().IsEmpty()) {
- continue;
- }
-
- nsIntRect scissorRect =
- RenderTargetPixel::ToUntyped(layerToRender->GetLayer()->CalculateScissorRect(RenderTargetPixel::FromUntyped(oldScissor)));
- if (scissorRect.IsEmpty()) {
- continue;
- }
-
- D3D10_RECT d3drect;
- d3drect.left = scissorRect.x;
- d3drect.top = scissorRect.y;
- d3drect.right = scissorRect.x + scissorRect.width;
- d3drect.bottom = scissorRect.y + scissorRect.height;
- device()->RSSetScissorRects(1, &d3drect);
-
- layerToRender->RenderLayer();
- }
-
- device()->RSSetScissorRects(1, &oldD3D10Scissor);
-
- if (useIntermediate) {
- mD3DManager->SetViewport(previousViewportSize);
- ID3D10RenderTargetView *rtView = previousRTView;
- device()->OMSetRenderTargets(1, &rtView, nullptr);
- effect()->GetVariableByName("vRenderTargetOffset")->
- SetRawValue(previousRenderTargetOffset, 0, 8);
-
- SetEffectTransformAndOpacity();
-
- ID3D10EffectTechnique *technique;
- if (LoadMaskTexture()) {
- if (GetTransform().CanDraw2D()) {
- technique = SelectShader(SHADER_RGBA | SHADER_PREMUL | SHADER_MASK);
- } else {
- technique = SelectShader(SHADER_RGBA | SHADER_PREMUL | SHADER_MASK_3D);
- }
- } else {
- technique = SelectShader(SHADER_RGBA | SHADER_PREMUL | SHADER_NO_MASK);
- }
-
- effect()->GetVariableByName("vLayerQuad")->AsVector()->SetFloatVector(
- ShaderConstantRectD3D10(
- (float)visibleRect.x,
- (float)visibleRect.y,
- (float)visibleRect.width,
- (float)visibleRect.height)
- );
-
- technique->GetPassByIndex(0)->Apply(0);
-
- ID3D10ShaderResourceView *view;
- device()->CreateShaderResourceView(renderTexture, nullptr, &view);
- device()->PSSetShaderResources(0, 1, &view);
- device()->Draw(4, 0);
- view->Release();
- }
-}
-
-void
-ContainerLayerD3D10::LayerManagerDestroyed()
-{
- while (mFirstChild) {
- GetFirstChildD3D10()->LayerManagerDestroyed();
- RemoveChild(mFirstChild);
- }
-}
-
-void
-ContainerLayerD3D10::Validate()
-{
- nsIntRect visibleRect = mVisibleRegion.GetBounds();
-
- mSupportsComponentAlphaChildren = false;
-
- if (UseIntermediateSurface()) {
- Matrix4x4 transform3D = GetEffectiveTransform();
- Matrix transform;
-
- if (mVisibleRegion.GetNumRects() == 1 && (GetContentFlags() & CONTENT_OPAQUE)) {
- // don't need a background, we're going to paint all opaque stuff
- mSupportsComponentAlphaChildren = true;
- } else {
- if (HasOpaqueAncestorLayer(this) &&
- transform3D.Is2D(&transform) && !ThebesMatrix(transform).HasNonIntegerTranslation() &&
- GetParent()->GetEffectiveVisibleRegion().GetBounds().Contains(visibleRect))
- {
- // In this case we can copy up the background. See RenderLayer.
- mSupportsComponentAlphaChildren = true;
- }
- }
- } else {
- mSupportsComponentAlphaChildren = (GetContentFlags() & CONTENT_OPAQUE) ||
- (mParent && mParent->SupportsComponentAlphaChildren());
- }
-
- ReadbackProcessor readback;
- readback.BuildUpdates(this);
-
- Layer *layer = GetFirstChild();
- while (layer) {
- if (layer->GetType() == TYPE_PAINTED) {
- static_cast(layer)->Validate(&readback);
- } else {
- static_cast(layer->ImplData())->Validate();
- }
- layer = layer->GetNextSibling();
- }
-}
-
-} /* layers */
-} /* mozilla */
diff --git a/gfx/layers/d3d10/ContainerLayerD3D10.h b/gfx/layers/d3d10/ContainerLayerD3D10.h
deleted file mode 100644
index 572d01cd35e7..000000000000
--- a/gfx/layers/d3d10/ContainerLayerD3D10.h
+++ /dev/null
@@ -1,42 +0,0 @@
-/* -*- Mode: C++; tab-width: 20; indent-tabs-mode: nil; c-basic-offset: 2 -*-
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-#ifndef GFX_CONTAINERLAYERD3D10_H
-#define GFX_CONTAINERLAYERD3D10_H
-
-#include "LayerManagerD3D10.h"
-
-namespace mozilla {
-namespace layers {
-
-class ContainerLayerD3D10 : public ContainerLayer,
- public LayerD3D10
-{
-public:
- ContainerLayerD3D10(LayerManagerD3D10 *aManager);
- ~ContainerLayerD3D10();
-
- nsIntRect GetVisibleRect() { return mVisibleRegion.GetBounds(); }
-
- /* LayerD3D10 implementation */
- virtual Layer* GetLayer();
-
- virtual LayerD3D10* GetFirstChildD3D10();
-
- virtual void RenderLayer();
- virtual void Validate();
-
- virtual void LayerManagerDestroyed();
-
- virtual void ComputeEffectiveTransforms(const gfx::Matrix4x4& aTransformToSurface)
- {
- DefaultComputeEffectiveTransforms(aTransformToSurface);
- }
-};
-
-} /* layers */
-} /* mozilla */
-
-#endif /* GFX_CONTAINERLAYERD3D10_H */
diff --git a/gfx/layers/d3d10/ImageLayerD3D10.cpp b/gfx/layers/d3d10/ImageLayerD3D10.cpp
deleted file mode 100644
index 805ba49bba94..000000000000
--- a/gfx/layers/d3d10/ImageLayerD3D10.cpp
+++ /dev/null
@@ -1,400 +0,0 @@
-/* -*- Mode: C++; tab-width: 20; indent-tabs-mode: nil; c-basic-offset: 2 -*-
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-#include "ImageLayerD3D10.h"
-#include "gfxD2DSurface.h"
-#include "gfxWindowsSurface.h"
-#include "yuv_convert.h"
-#include "../d3d9/Nv3DVUtils.h"
-#include "D3D9SurfaceImage.h"
-#include "mozilla/gfx/Point.h"
-#include "gfx2DGlue.h"
-
-#include "gfxWindowsPlatform.h"
-
-namespace mozilla {
-namespace layers {
-
-using namespace mozilla::gfx;
-
-static already_AddRefed
-DataToTexture(ID3D10Device *aDevice,
- unsigned char *data,
- int stride,
- const IntSize &aSize)
-{
- D3D10_SUBRESOURCE_DATA srdata;
-
- CD3D10_TEXTURE2D_DESC desc(DXGI_FORMAT_B8G8R8A8_UNORM,
- aSize.width,
- aSize.height,
- 1, 1);
- desc.Usage = D3D10_USAGE_IMMUTABLE;
-
- srdata.pSysMem = data;
- srdata.SysMemPitch = stride;
-
- nsRefPtr texture;
- HRESULT hr = aDevice->CreateTexture2D(&desc, &srdata, getter_AddRefs(texture));
-
- if (FAILED(hr)) {
- LayerManagerD3D10::ReportFailure(NS_LITERAL_CSTRING("Failed to create texture for data"),
- hr);
- }
-
- return texture.forget();
-}
-
-static already_AddRefed
-SurfaceToTexture(ID3D10Device *aDevice,
- SourceSurface *aSurface,
- const IntSize &aSize)
-{
- if (!aSurface) {
- return nullptr;
- }
-
- void *nativeSurf =
- aSurface->GetNativeSurface(NativeSurfaceType::D3D10_TEXTURE);
- if (nativeSurf) {
- nsRefPtr texture =
- static_cast(nativeSurf);
- ID3D10Device *dev;
- texture->GetDevice(&dev);
- if (dev == aDevice) {
- return texture.forget();
- }
- }
- RefPtr dataSurface = aSurface->GetDataSurface();
- if (!dataSurface) {
- return nullptr;
- }
- DataSourceSurface::MappedSurface map;
- if (!dataSurface->Map(DataSourceSurface::MapType::READ, &map)) {
- return nullptr;
- }
- nsRefPtr texture =
- DataToTexture(aDevice, map.mData, map.mStride, aSize);
- dataSurface->Unmap();
- return texture.forget();
-}
-
-Layer*
-ImageLayerD3D10::GetLayer()
-{
- return this;
-}
-
-/**
- * Returns a shader resource view for an image.
- * Returns nullptr if unsuccessful.
- * If successful, aHasAlpha will be true iff the resulting texture
- * has an alpha component.
- */
-ID3D10ShaderResourceView*
-ImageLayerD3D10::GetImageSRView(Image* aImage, bool& aHasAlpha, IDXGIKeyedMutex **aMutex)
-{
- NS_ASSERTION(aImage, "Null image.");
-
- if (aImage->GetFormat() == ImageFormat::CAIRO_SURFACE) {
- CairoImage *cairoImage =
- static_cast(aImage);
-
- RefPtr surf = cairoImage->GetAsSourceSurface();
- if (!surf) {
- return nullptr;
- }
-
- if (!aImage->GetBackendData(mozilla::layers::LayersBackend::LAYERS_D3D10)) {
- nsAutoPtr dat(new TextureD3D10BackendData());
- dat->mTexture = SurfaceToTexture(device(), surf, cairoImage->GetSize());
-
- if (dat->mTexture) {
- device()->CreateShaderResourceView(dat->mTexture, nullptr, getter_AddRefs(dat->mSRView));
- aImage->SetBackendData(mozilla::layers::LayersBackend::LAYERS_D3D10, dat.forget());
- }
- }
-
- aHasAlpha = surf->GetFormat() == SurfaceFormat::B8G8R8A8;
- } else if (aImage->GetFormat() == ImageFormat::D3D9_RGB32_TEXTURE) {
- if (!aImage->GetBackendData(mozilla::layers::LayersBackend::LAYERS_D3D10)) {
- // Use resource sharing to open the D3D9 texture as a D3D10 texture,
- HRESULT hr;
- D3D9SurfaceImage* d3dImage = reinterpret_cast(aImage);
- nsRefPtr texture;
- hr = device()->OpenSharedResource(d3dImage->GetShareHandle(),
- IID_ID3D10Texture2D,
- (void**)getter_AddRefs(texture));
- NS_ENSURE_TRUE(SUCCEEDED(hr), nullptr);
-
- nsAutoPtr dat(new TextureD3D10BackendData());
- dat->mTexture = texture;
-
- hr = device()->CreateShaderResourceView(dat->mTexture, nullptr, getter_AddRefs(dat->mSRView));
- NS_ENSURE_TRUE(SUCCEEDED(hr) && dat->mSRView, nullptr);
-
- aImage->SetBackendData(mozilla::layers::LayersBackend::LAYERS_D3D10, dat.forget());
- }
- aHasAlpha = false;
- } else {
- NS_WARNING("Incorrect image type.");
- return nullptr;
- }
-
- TextureD3D10BackendData *data =
- static_cast(aImage->GetBackendData(mozilla::layers::LayersBackend::LAYERS_D3D10));
-
- if (!data) {
- return nullptr;
- }
-
- if (aMutex &&
- SUCCEEDED(data->mTexture->QueryInterface(IID_IDXGIKeyedMutex, (void**)aMutex))) {
- if (FAILED((*aMutex)->AcquireSync(0, 0))) {
- NS_WARNING("Failed to acquire sync on keyed mutex, plugin forgot to release?");
- return nullptr;
- }
- }
-
- nsRefPtr dev;
- data->mTexture->GetDevice(getter_AddRefs(dev));
- if (dev != device()) {
- return nullptr;
- }
-
- return data->mSRView;
-}
-
-void
-ImageLayerD3D10::RenderLayer()
-{
- ImageContainer *container = GetContainer();
- if (!container) {
- return;
- }
-
- AutoLockImage autoLock(container);
-
- Image *image = autoLock.GetImage();
- if (!image) {
- return;
- }
-
- IntSize size = image->GetSize();
-
- SetEffectTransformAndOpacity();
-
- ID3D10EffectTechnique *technique;
- nsRefPtr keyedMutex;
-
- if (image->GetFormat() == ImageFormat::CAIRO_SURFACE ||
- image->GetFormat() == ImageFormat::D3D9_RGB32_TEXTURE) {
- NS_ASSERTION(image->GetFormat() != ImageFormat::CAIRO_SURFACE ||
- !static_cast(image)->mSourceSurface ||
- static_cast(image)->mSourceSurface->GetFormat() != SurfaceFormat::A8,
- "Image layer has alpha image");
- bool hasAlpha = false;
-
- nsRefPtr srView = GetImageSRView(image, hasAlpha, getter_AddRefs(keyedMutex));
- if (!srView) {
- return;
- }
-
- uint8_t shaderFlags = SHADER_PREMUL;
- shaderFlags |= LoadMaskTexture();
- shaderFlags |= hasAlpha
- ? SHADER_RGBA : SHADER_RGB;
- shaderFlags |= mFilter == GraphicsFilter::FILTER_NEAREST
- ? SHADER_POINT : SHADER_LINEAR;
- technique = SelectShader(shaderFlags);
-
-
- effect()->GetVariableByName("tRGB")->AsShaderResource()->SetResource(srView);
-
- effect()->GetVariableByName("vLayerQuad")->AsVector()->SetFloatVector(
- ShaderConstantRectD3D10(
- (float)0,
- (float)0,
- (float)size.width,
- (float)size.height)
- );
- } else if (image->GetFormat() == ImageFormat::PLANAR_YCBCR) {
- PlanarYCbCrImage *yuvImage =
- static_cast(image);
-
- if (!yuvImage->IsValid()) {
- return;
- }
-
- if (!yuvImage->GetBackendData(mozilla::layers::LayersBackend::LAYERS_D3D10)) {
- AllocateTexturesYCbCr(yuvImage);
- }
-
- PlanarYCbCrD3D10BackendData *data =
- static_cast(yuvImage->GetBackendData(mozilla::layers::LayersBackend::LAYERS_D3D10));
-
- if (!data) {
- return;
- }
-
- nsRefPtr dev;
- data->mYTexture->GetDevice(getter_AddRefs(dev));
- if (dev != device()) {
- return;
- }
-
- // TODO: At some point we should try to deal with mFilter here, you don't
- // really want to use point filtering in the case of NEAREST, since that
- // would also use point filtering for Chroma upsampling. Where most likely
- // the user would only want point filtering for final RGB image upsampling.
-
- technique = SelectShader(SHADER_YCBCR | LoadMaskTexture());
-
- effect()->GetVariableByName("tY")->AsShaderResource()->SetResource(data->mYView);
- effect()->GetVariableByName("tCb")->AsShaderResource()->SetResource(data->mCbView);
- effect()->GetVariableByName("tCr")->AsShaderResource()->SetResource(data->mCrView);
-
- /*
- * Send 3d control data and metadata to NV3DVUtils
- */
- if (GetNv3DVUtils()) {
- Nv_Stereo_Mode mode;
- switch (yuvImage->GetData()->mStereoMode) {
- case StereoMode::LEFT_RIGHT:
- mode = NV_STEREO_MODE_LEFT_RIGHT;
- break;
- case StereoMode::RIGHT_LEFT:
- mode = NV_STEREO_MODE_RIGHT_LEFT;
- break;
- case StereoMode::BOTTOM_TOP:
- mode = NV_STEREO_MODE_BOTTOM_TOP;
- break;
- case StereoMode::TOP_BOTTOM:
- mode = NV_STEREO_MODE_TOP_BOTTOM;
- break;
- case StereoMode::MONO:
- mode = NV_STEREO_MODE_MONO;
- break;
- }
-
- // Send control data even in mono case so driver knows to leave stereo mode.
- GetNv3DVUtils()->SendNv3DVControl(mode, true, FIREFOX_3DV_APP_HANDLE);
-
- if (yuvImage->GetData()->mStereoMode != StereoMode::MONO) {
- // Dst resource is optional
- GetNv3DVUtils()->SendNv3DVMetaData((unsigned int)yuvImage->GetData()->mYSize.width,
- (unsigned int)yuvImage->GetData()->mYSize.height, (HANDLE)(data->mYTexture), (HANDLE)(nullptr));
- }
- }
-
- effect()->GetVariableByName("vLayerQuad")->AsVector()->SetFloatVector(
- ShaderConstantRectD3D10(
- (float)0,
- (float)0,
- (float)size.width,
- (float)size.height)
- );
-
- effect()->GetVariableByName("vTextureCoords")->AsVector()->SetFloatVector(
- ShaderConstantRectD3D10(
- (float)yuvImage->GetData()->mPicX / yuvImage->GetData()->mYSize.width,
- (float)yuvImage->GetData()->mPicY / yuvImage->GetData()->mYSize.height,
- (float)yuvImage->GetData()->mPicSize.width / yuvImage->GetData()->mYSize.width,
- (float)yuvImage->GetData()->mPicSize.height / yuvImage->GetData()->mYSize.height)
- );
- } else {
- MOZ_CRASH("unexpected image format");
- }
-
- bool resetTexCoords = image->GetFormat() == ImageFormat::PLANAR_YCBCR;
- image = nullptr;
- autoLock.Unlock();
-
- technique->GetPassByIndex(0)->Apply(0);
- device()->Draw(4, 0);
-
- if (keyedMutex) {
- keyedMutex->ReleaseSync(0);
- }
-
- if (resetTexCoords) {
- effect()->GetVariableByName("vTextureCoords")->AsVector()->
- SetFloatVector(ShaderConstantRectD3D10(0, 0, 1.0f, 1.0f));
- }
-
- GetContainer()->NotifyPaintedImage(image);
-}
-
-void ImageLayerD3D10::AllocateTexturesYCbCr(PlanarYCbCrImage *aImage)
-{
- nsAutoPtr backendData(
- new PlanarYCbCrD3D10BackendData);
-
- const PlanarYCbCrData *data = aImage->GetData();
-
- D3D10_SUBRESOURCE_DATA dataY;
- D3D10_SUBRESOURCE_DATA dataCb;
- D3D10_SUBRESOURCE_DATA dataCr;
- CD3D10_TEXTURE2D_DESC descY(DXGI_FORMAT_A8_UNORM,
- data->mYSize.width,
- data->mYSize.height, 1, 1);
- CD3D10_TEXTURE2D_DESC descCbCr(DXGI_FORMAT_A8_UNORM,
- data->mCbCrSize.width,
- data->mCbCrSize.height, 1, 1);
-
- descY.Usage = descCbCr.Usage = D3D10_USAGE_IMMUTABLE;
-
- dataY.pSysMem = data->mYChannel;
- dataY.SysMemPitch = data->mYStride;
- dataCb.pSysMem = data->mCbChannel;
- dataCb.SysMemPitch = data->mCbCrStride;
- dataCr.pSysMem = data->mCrChannel;
- dataCr.SysMemPitch = data->mCbCrStride;
-
- HRESULT hr = device()->CreateTexture2D(&descY, &dataY, getter_AddRefs(backendData->mYTexture));
- if (!FAILED(hr)) {
- hr = device()->CreateTexture2D(&descCbCr, &dataCb, getter_AddRefs(backendData->mCbTexture));
- }
- if (!FAILED(hr)) {
- hr = device()->CreateTexture2D(&descCbCr, &dataCr, getter_AddRefs(backendData->mCrTexture));
- }
- if (FAILED(hr)) {
- LayerManagerD3D10::ReportFailure(NS_LITERAL_CSTRING("PlanarYCbCrImageD3D10::AllocateTextures(): Failed to create texture"),
- hr);
- return;
- }
- device()->CreateShaderResourceView(backendData->mYTexture, nullptr, getter_AddRefs(backendData->mYView));
- device()->CreateShaderResourceView(backendData->mCbTexture, nullptr, getter_AddRefs(backendData->mCbView));
- device()->CreateShaderResourceView(backendData->mCrTexture, nullptr, getter_AddRefs(backendData->mCrView));
-
- aImage->SetBackendData(mozilla::layers::LayersBackend::LAYERS_D3D10, backendData.forget());
-}
-
-already_AddRefed
-ImageLayerD3D10::GetAsTexture(gfx::IntSize* aSize)
-{
- if (!GetContainer()) {
- return nullptr;
- }
-
- AutoLockImage autoLock(GetContainer());
-
- Image *image = autoLock.GetImage();
- if (!image) {
- return nullptr;
- }
-
- if (image->GetFormat() != ImageFormat::CAIRO_SURFACE) {
- return nullptr;
- }
-
- *aSize = image->GetSize();
- bool dontCare;
- nsRefPtr result = GetImageSRView(image, dontCare);
- return result.forget();
-}
-
-} /* layers */
-} /* mozilla */
diff --git a/gfx/layers/d3d10/ImageLayerD3D10.h b/gfx/layers/d3d10/ImageLayerD3D10.h
deleted file mode 100644
index e9371f5c1197..000000000000
--- a/gfx/layers/d3d10/ImageLayerD3D10.h
+++ /dev/null
@@ -1,60 +0,0 @@
-/* -*- Mode: C++; tab-width: 20; indent-tabs-mode: nil; c-basic-offset: 4 -*-
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-#ifndef GFX_IMAGELAYERD3D10_H
-#define GFX_IMAGELAYERD3D10_H
-
-#include "LayerManagerD3D10.h"
-#include "ImageLayers.h"
-#include "ImageContainer.h"
-#include "yuv_convert.h"
-
-namespace mozilla {
-namespace layers {
-
-class ImageLayerD3D10 : public ImageLayer,
- public LayerD3D10
-{
-public:
- ImageLayerD3D10(LayerManagerD3D10 *aManager)
- : ImageLayer(aManager, nullptr)
- , LayerD3D10(aManager)
- {
- mImplData = static_cast(this);
- }
-
- // LayerD3D10 Implementation
- virtual Layer* GetLayer();
-
- virtual void RenderLayer();
-
- void AllocateTexturesYCbCr(PlanarYCbCrImage *aImage);
-
- virtual already_AddRefed GetAsTexture(gfx::IntSize* aSize);
-
-private:
- ID3D10ShaderResourceView* GetImageSRView(Image* aImage, bool& aHasAlpha,
- IDXGIKeyedMutex **aMutex = nullptr);
-};
-
-struct PlanarYCbCrD3D10BackendData : public ImageBackendData
-{
- nsRefPtr mYTexture;
- nsRefPtr mCrTexture;
- nsRefPtr mCbTexture;
- nsRefPtr mYView;
- nsRefPtr mCbView;
- nsRefPtr mCrView;
-};
-
-struct TextureD3D10BackendData : public ImageBackendData
-{
- nsRefPtr mTexture;
- nsRefPtr mSRView;
-};
-
-} /* layers */
-} /* mozilla */
-#endif /* GFX_IMAGELAYERD3D10_H */
diff --git a/gfx/layers/d3d10/LayerManagerD3D10.cpp b/gfx/layers/d3d10/LayerManagerD3D10.cpp
deleted file mode 100644
index 781fa7656d2a..000000000000
--- a/gfx/layers/d3d10/LayerManagerD3D10.cpp
+++ /dev/null
@@ -1,888 +0,0 @@
-/* -*- Mode: C++; tab-width: 20; indent-tabs-mode: nil; c-basic-offset: 2 -*-
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-#include
-
-#include "LayerManagerD3D10.h"
-#include "LayerManagerD3D10Effect.h"
-#include "gfxWindowsPlatform.h"
-#include "gfx2DGlue.h"
-#include "gfxD2DSurface.h"
-#include "gfxFailure.h"
-#include "cairo-win32.h"
-#include "dxgi.h"
-
-#include "ContainerLayerD3D10.h"
-#include "PaintedLayerD3D10.h"
-#include "ColorLayerD3D10.h"
-#include "CanvasLayerD3D10.h"
-#include "ReadbackLayerD3D10.h"
-#include "ImageLayerD3D10.h"
-#include "mozilla/layers/PLayerChild.h"
-#include "mozilla/WidgetUtils.h"
-
-#include "../d3d9/Nv3DVUtils.h"
-
-#include "gfxCrashReporterUtils.h"
-#include "nsWindowsHelpers.h"
-#ifdef MOZ_METRO
-#include "DXGI1_2.h"
-#endif
-
-namespace mozilla {
-namespace layers {
-
-using namespace std;
-using namespace mozilla::gfx;
-
-struct Vertex
-{
- float position[2];
-};
-
-// {592BF306-0EED-4F76-9D03-A0846450F472}
-static const GUID sDeviceAttachments =
-{ 0x592bf306, 0xeed, 0x4f76, { 0x9d, 0x3, 0xa0, 0x84, 0x64, 0x50, 0xf4, 0x72 } };
-// {716AEDB1-C9C3-4B4D-8332-6F65D44AF6A8}
-static const GUID sLayerManagerCount =
-{ 0x716aedb1, 0xc9c3, 0x4b4d, { 0x83, 0x32, 0x6f, 0x65, 0xd4, 0x4a, 0xf6, 0xa8 } };
-
-LayerManagerD3D10::LayerManagerD3D10(nsIWidget *aWidget)
- : mWidget(aWidget)
- , mDisableSequenceForNextFrame(false)
-{
-}
-
-struct DeviceAttachments
-{
- nsRefPtr mEffect;
- nsRefPtr mInputLayout;
- nsRefPtr mVertexBuffer;
- nsRefPtr mReadbackManager;
-};
-
-LayerManagerD3D10::~LayerManagerD3D10()
-{
- if (mDevice) {
- int referenceCount = 0;
- UINT size = sizeof(referenceCount);
- HRESULT hr = mDevice->GetPrivateData(sLayerManagerCount, &size, &referenceCount);
- NS_ASSERTION(SUCCEEDED(hr), "Reference count not found on device.");
- referenceCount--;
- mDevice->SetPrivateData(sLayerManagerCount, sizeof(referenceCount), &referenceCount);
-
- if (!referenceCount) {
- DeviceAttachments *attachments;
- size = sizeof(attachments);
- mDevice->GetPrivateData(sDeviceAttachments, &size, &attachments);
- // No LayerManagers left for this device. Clear out interfaces stored which
- // hold a reference to the device.
- mDevice->SetPrivateData(sDeviceAttachments, 0, nullptr);
-
- delete attachments;
- }
- }
-
- Destroy();
-}
-
-static inline void
-SetHRESULT(HRESULT* aHresultPtr, HRESULT aHresult)
-{
- if (aHresultPtr) {
- *aHresultPtr = aHresult;
- }
-}
-
-bool
-LayerManagerD3D10::Initialize(bool force, HRESULT* aHresultPtr)
-{
- ScopedGfxFeatureReporter reporter("D3D10 Layers", force);
-
- HRESULT hr = E_UNEXPECTED;
-
- /* Create an Nv3DVUtils instance */
- if (!mNv3DVUtils) {
- mNv3DVUtils = new Nv3DVUtils();
- if (!mNv3DVUtils) {
- NS_WARNING("Could not create a new instance of Nv3DVUtils.\n");
- }
- }
-
- /* Initialize the Nv3DVUtils object */
- if (mNv3DVUtils) {
- mNv3DVUtils->Initialize();
- }
-
- mDevice = gfxWindowsPlatform::GetPlatform()->GetD3D10Device();
- if (!mDevice) {
- SetHRESULT(aHresultPtr, hr);
- return false;
- }
-
- /*
- * Do some post device creation setup
- */
- if (mNv3DVUtils) {
- IUnknown* devUnknown = nullptr;
- if (mDevice) {
- mDevice->QueryInterface(IID_IUnknown, (void **)&devUnknown);
- }
- mNv3DVUtils->SetDeviceInfo(devUnknown);
- }
-
- int referenceCount = 0;
- UINT size = sizeof(referenceCount);
- // If this isn't there yet it'll fail, count will remain 0, which is correct.
- mDevice->GetPrivateData(sLayerManagerCount, &size, &referenceCount);
- referenceCount++;
- mDevice->SetPrivateData(sLayerManagerCount, sizeof(referenceCount), &referenceCount);
-
- DeviceAttachments *attachments;
- size = sizeof(DeviceAttachments*);
- if (FAILED(mDevice->GetPrivateData(sDeviceAttachments, &size, &attachments))) {
- attachments = new DeviceAttachments;
- mDevice->SetPrivateData(sDeviceAttachments, sizeof(attachments), &attachments);
-
- SetLastError(0);
- decltype(D3D10CreateEffectFromMemory)* createEffect =
- (decltype(D3D10CreateEffectFromMemory)*)
- GetProcAddress(LoadLibraryA("d3d10_1.dll"), "D3D10CreateEffectFromMemory");
- if (!createEffect) {
- SetHRESULT(aHresultPtr, HRESULT_FROM_WIN32(GetLastError()));
- return false;
- }
-
- hr = createEffect((void*)g_main,
- sizeof(g_main),
- D3D10_EFFECT_SINGLE_THREADED,
- mDevice,
- nullptr,
- getter_AddRefs(mEffect));
-
- if (FAILED(hr)) {
- SetHRESULT(aHresultPtr, hr);
- return false;
- }
-
- attachments->mEffect = mEffect;
-
- D3D10_INPUT_ELEMENT_DESC layout[] =
- {
- { "POSITION", 0, DXGI_FORMAT_R32G32_FLOAT, 0, 0, D3D10_INPUT_PER_VERTEX_DATA, 0 },
- };
- D3D10_PASS_DESC passDesc;
- mEffect->GetTechniqueByName("RenderRGBLayerPremul")->GetPassByIndex(0)->
- GetDesc(&passDesc);
-
- hr = mDevice->CreateInputLayout(layout,
- sizeof(layout) / sizeof(D3D10_INPUT_ELEMENT_DESC),
- passDesc.pIAInputSignature,
- passDesc.IAInputSignatureSize,
- getter_AddRefs(mInputLayout));
-
- if (FAILED(hr)) {
- SetHRESULT(aHresultPtr, hr);
- return false;
- }
-
- attachments->mInputLayout = mInputLayout;
-
- Vertex vertices[] = { {{0.0, 0.0}}, {{1.0, 0.0}}, {{0.0, 1.0}}, {{1.0, 1.0}} };
- CD3D10_BUFFER_DESC bufferDesc(sizeof(vertices), D3D10_BIND_VERTEX_BUFFER);
- D3D10_SUBRESOURCE_DATA data;
- data.pSysMem = (void*)vertices;
-
- hr = mDevice->CreateBuffer(&bufferDesc, &data, getter_AddRefs(mVertexBuffer));
-
- if (FAILED(hr)) {
- SetHRESULT(aHresultPtr, hr);
- return false;
- }
-
- attachments->mVertexBuffer = mVertexBuffer;
- } else {
- mEffect = attachments->mEffect;
- mVertexBuffer = attachments->mVertexBuffer;
- mInputLayout = attachments->mInputLayout;
- }
-
- nsRefPtr dxgiDevice;
- nsRefPtr dxgiAdapter;
-
- mDevice->QueryInterface(dxgiDevice.StartAssignment());
- dxgiDevice->GetAdapter(getter_AddRefs(dxgiAdapter));
-
-#ifdef MOZ_METRO
- if (IsRunningInWindowsMetro()) {
- nsRefPtr dxgiFactory;
- dxgiAdapter->GetParent(IID_PPV_ARGS(dxgiFactory.StartAssignment()));
-
- nsIntRect rect;
- mWidget->GetClientBounds(rect);
-
- DXGI_SWAP_CHAIN_DESC1 swapDesc = { 0 };
- // Automatically detect the width and the height from the winrt CoreWindow
- swapDesc.Width = rect.width;
- swapDesc.Height = rect.height;
- // This is the most common swapchain format
- swapDesc.Format = DXGI_FORMAT_B8G8R8A8_UNORM;
- swapDesc.Stereo = false;
- // Don't use multi-sampling
- swapDesc.SampleDesc.Count = 1;
- swapDesc.SampleDesc.Quality = 0;
- swapDesc.BufferUsage = DXGI_USAGE_RENDER_TARGET_OUTPUT;
- // Use double buffering to enable flip
- swapDesc.BufferCount = 2;
- swapDesc.Scaling = DXGI_SCALING_NONE;
- // All Metro style apps must use this SwapEffect
- swapDesc.SwapEffect = DXGI_SWAP_EFFECT_FLIP_SEQUENTIAL;
- swapDesc.Flags = 0;
-
- /**
- * Create a swap chain, this swap chain will contain the backbuffer for
- * the window we draw to. The front buffer is the full screen front
- * buffer.
- */
- nsRefPtr swapChain1;
- hr = dxgiFactory->CreateSwapChainForCoreWindow(
- dxgiDevice, (IUnknown *)mWidget->GetNativeData(NS_NATIVE_ICOREWINDOW),
- &swapDesc, nullptr, getter_AddRefs(swapChain1));
- if (FAILED(hr)) {
- SetHRESULT(aHresultPtr, hr);
- return false;
- }
- mSwapChain = swapChain1;
- } else
-#endif
- {
- nsRefPtr dxgiFactory;
- dxgiAdapter->GetParent(IID_PPV_ARGS(dxgiFactory.StartAssignment()));
-
- DXGI_SWAP_CHAIN_DESC swapDesc;
- ::ZeroMemory(&swapDesc, sizeof(swapDesc));
- swapDesc.BufferDesc.Width = 0;
- swapDesc.BufferDesc.Height = 0;
- swapDesc.BufferDesc.Format = DXGI_FORMAT_B8G8R8A8_UNORM;
- swapDesc.BufferDesc.RefreshRate.Numerator = 60;
- swapDesc.BufferDesc.RefreshRate.Denominator = 1;
- swapDesc.SampleDesc.Count = 1;
- swapDesc.SampleDesc.Quality = 0;
- swapDesc.BufferUsage = DXGI_USAGE_RENDER_TARGET_OUTPUT;
- swapDesc.BufferCount = 1;
- swapDesc.OutputWindow = (HWND)mWidget->GetNativeData(NS_NATIVE_WINDOW);
- swapDesc.Windowed = TRUE;
- // We don't really need this flag, however it seems on some NVidia hardware
- // smaller area windows do not present properly without this flag. This flag
- // should have no negative consequences by itself. See bug 613790. This flag
- // is broken on optimus devices. As a temporary solution we don't set it
- // there, the only way of reliably detecting we're on optimus is looking for
- // the DLL. See Bug 623807.
- if (gfxWindowsPlatform::IsOptimus()) {
- swapDesc.Flags = 0;
- } else {
- swapDesc.Flags = DXGI_SWAP_CHAIN_FLAG_GDI_COMPATIBLE;
- }
-
- /**
- * Create a swap chain, this swap chain will contain the backbuffer for
- * the window we draw to. The front buffer is the full screen front
- * buffer.
- */
- hr = dxgiFactory->CreateSwapChain(dxgiDevice, &swapDesc, getter_AddRefs(mSwapChain));
- if (FAILED(hr)) {
- return false;
- }
-
- // We need this because we don't want DXGI to respond to Alt+Enter.
- dxgiFactory->MakeWindowAssociation(swapDesc.OutputWindow, DXGI_MWA_NO_WINDOW_CHANGES);
- }
-
- reporter.SetSuccessful();
- return true;
-}
-
-void
-LayerManagerD3D10::Destroy()
-{
- if (!IsDestroyed()) {
- if (mRoot) {
- static_cast(mRoot->ImplData())->LayerManagerDestroyed();
- }
- // XXX need to be careful here about surface destruction
- // racing with share-to-chrome message
- }
- LayerManager::Destroy();
-}
-
-void
-LayerManagerD3D10::SetRoot(Layer *aRoot)
-{
- mRoot = aRoot;
-}
-
-void
-LayerManagerD3D10::BeginTransaction()
-{
- mInTransaction = true;
-
-#ifdef MOZ_LAYERS_HAVE_LOG
- MOZ_LAYERS_LOG(("[----- BeginTransaction"));
- Log();
-#endif
-}
-
-void
-LayerManagerD3D10::BeginTransactionWithTarget(gfxContext* aTarget)
-{
- mInTransaction = true;
- mTarget = aTarget;
-}
-
-bool
-LayerManagerD3D10::EndEmptyTransaction(EndTransactionFlags aFlags)
-{
- mInTransaction = false;
-
- if (!mRoot)
- return false;
-
- EndTransaction(nullptr, nullptr, aFlags);
- return true;
-}
-
-void
-LayerManagerD3D10::EndTransaction(DrawPaintedLayerCallback aCallback,
- void* aCallbackData,
- EndTransactionFlags aFlags)
-{
- mInTransaction = false;
-
- if (mRoot && !(aFlags & END_NO_IMMEDIATE_REDRAW)) {
- mCurrentCallbackInfo.Callback = aCallback;
- mCurrentCallbackInfo.CallbackData = aCallbackData;
-
- if (aFlags & END_NO_COMPOSITE) {
- // Apply pending tree updates before recomputing effective
- // properties.
- mRoot->ApplyPendingUpdatesToSubtree();
- }
-
- // The results of our drawing always go directly into a pixel buffer,
- // so we don't need to pass any global transform here.
- mRoot->ComputeEffectiveTransforms(Matrix4x4());
-
-#ifdef MOZ_LAYERS_HAVE_LOG
- MOZ_LAYERS_LOG((" ----- (beginning paint)"));
- Log();
-#endif
-
- Render(aFlags);
- mCurrentCallbackInfo.Callback = nullptr;
- mCurrentCallbackInfo.CallbackData = nullptr;
- }
-
-#ifdef MOZ_LAYERS_HAVE_LOG
- Log();
- MOZ_LAYERS_LOG(("]----- EndTransaction"));
-#endif
-
- mTarget = nullptr;
-}
-
-already_AddRefed
-LayerManagerD3D10::CreatePaintedLayer()
-{
- nsRefPtr layer = new PaintedLayerD3D10(this);
- return layer.forget();
-}
-
-already_AddRefed
-LayerManagerD3D10::CreateContainerLayer()
-{
- nsRefPtr layer = new ContainerLayerD3D10(this);
- return layer.forget();
-}
-
-already_AddRefed
-LayerManagerD3D10::CreateImageLayer()
-{
- nsRefPtr layer = new ImageLayerD3D10(this);
- return layer.forget();
-}
-
-already_AddRefed
-LayerManagerD3D10::CreateColorLayer()
-{
- nsRefPtr layer = new ColorLayerD3D10(this);
- return layer.forget();
-}
-
-already_AddRefed
-LayerManagerD3D10::CreateCanvasLayer()
-{
- nsRefPtr layer = new CanvasLayerD3D10(this);
- return layer.forget();
-}
-
-already_AddRefed
-LayerManagerD3D10::CreateReadbackLayer()
-{
- nsRefPtr layer = new ReadbackLayerD3D10(this);
- return layer.forget();
-}
-
-TemporaryRef
-LayerManagerD3D10::CreateOptimalDrawTarget(const IntSize &aSize,
- SurfaceFormat aFormat)
-{
- if ((aFormat != SurfaceFormat::B8G8R8X8 &&
- aFormat != SurfaceFormat::B8G8R8A8)) {
- return LayerManager::CreateOptimalDrawTarget(aSize, aFormat);
- }
-
- nsRefPtr texture;
-
- CD3D10_TEXTURE2D_DESC desc(DXGI_FORMAT_B8G8R8A8_UNORM, aSize.width, aSize.height, 1, 1);
- desc.BindFlags = D3D10_BIND_RENDER_TARGET | D3D10_BIND_SHADER_RESOURCE;
- desc.MiscFlags = D3D10_RESOURCE_MISC_GDI_COMPATIBLE;
-
- HRESULT hr = device()->CreateTexture2D(&desc, nullptr, getter_AddRefs(texture));
-
- if (FAILED(hr)) {
- NS_WARNING("Failed to create new texture for CreateOptimalDrawTarget!");
- return LayerManager::CreateOptimalDrawTarget(aSize, aFormat);
- }
-
- RefPtr dt =
- Factory::CreateDrawTargetForD3D10Texture(texture, aFormat);
-
- if (!dt) {
- return LayerManager::CreateOptimalDrawTarget(aSize, aFormat);
- }
-
- return dt;
-}
-
-
-TemporaryRef
-LayerManagerD3D10::CreateOptimalMaskDrawTarget(const IntSize &aSize)
-{
- return CreateOptimalDrawTarget(aSize, SurfaceFormat::B8G8R8A8);
-}
-
-
-TemporaryRef
-LayerManagerD3D10::CreateDrawTarget(const IntSize &aSize,
- SurfaceFormat aFormat)
-{
- if ((aFormat != SurfaceFormat::B8G8R8A8 &&
- aFormat != SurfaceFormat::B8G8R8X8) ||
- gfxPlatform::GetPlatform()->GetPreferredCanvasBackend() != BackendType::DIRECT2D) {
- return LayerManager::CreateDrawTarget(aSize, aFormat);
- }
-
- nsRefPtr texture;
-
- CD3D10_TEXTURE2D_DESC desc(DXGI_FORMAT_B8G8R8A8_UNORM, aSize.width, aSize.height, 1, 1);
- desc.BindFlags = D3D10_BIND_RENDER_TARGET | D3D10_BIND_SHADER_RESOURCE;
-
- HRESULT hr = device()->CreateTexture2D(&desc, nullptr, getter_AddRefs(texture));
-
- if (FAILED(hr)) {
- NS_WARNING("Failed to create new texture for CreateOptimalDrawTarget!");
- return LayerManager::CreateDrawTarget(aSize, aFormat);
- }
-
- RefPtr surface =
- Factory::CreateDrawTargetForD3D10Texture(texture, aFormat);
-
- if (!surface) {
- return LayerManager::CreateDrawTarget(aSize, aFormat);
- }
-
- return surface;
-}
-
-ReadbackManagerD3D10*
-LayerManagerD3D10::readbackManager()
-{
- EnsureReadbackManager();
- return mReadbackManager;
-}
-
-void
-LayerManagerD3D10::SetViewport(const nsIntSize &aViewport)
-{
- mViewport = aViewport;
-
- D3D10_VIEWPORT viewport;
- viewport.MaxDepth = 1.0f;
- viewport.MinDepth = 0;
- viewport.Width = aViewport.width;
- viewport.Height = aViewport.height;
- viewport.TopLeftX = 0;
- viewport.TopLeftY = 0;
-
- mDevice->RSSetViewports(1, &viewport);
-
- gfx3DMatrix projection;
- /*
- * Matrix to transform to viewport space ( <-1.0, 1.0> topleft,
- * <1.0, -1.0> bottomright)
- */
- projection._11 = 2.0f / aViewport.width;
- projection._22 = -2.0f / aViewport.height;
- projection._33 = 0.0f;
- projection._41 = -1.0f;
- projection._42 = 1.0f;
- projection._44 = 1.0f;
-
- HRESULT hr = mEffect->GetVariableByName("mProjection")->
- SetRawValue(&projection._11, 0, 64);
-
- if (FAILED(hr)) {
- NS_WARNING("Failed to set projection matrix.");
- }
-}
-
-void
-LayerManagerD3D10::SetupInputAssembler()
-{
- mDevice->IASetInputLayout(mInputLayout);
-
- UINT stride = sizeof(Vertex);
- UINT offset = 0;
- ID3D10Buffer *buffer = mVertexBuffer;
- mDevice->IASetVertexBuffers(0, 1, &buffer, &stride, &offset);
- mDevice->IASetPrimitiveTopology(D3D10_PRIMITIVE_TOPOLOGY_TRIANGLESTRIP);
-}
-
-void
-LayerManagerD3D10::SetupPipeline()
-{
- VerifyBufferSize();
- UpdateRenderTarget();
-
- nsIntRect rect;
- mWidget->GetClientBounds(rect);
-
- HRESULT hr;
-
- hr = mEffect->GetVariableByName("vTextureCoords")->AsVector()->
- SetFloatVector(ShaderConstantRectD3D10(0, 0, 1.0f, 1.0f));
-
- if (FAILED(hr)) {
- NS_WARNING("Failed to set Texture Coordinates.");
- return;
- }
-
- ID3D10RenderTargetView *view = mRTView;
- mDevice->OMSetRenderTargets(1, &view, nullptr);
-
- SetupInputAssembler();
-
- SetViewport(nsIntSize(rect.width, rect.height));
-}
-
-void
-LayerManagerD3D10::UpdateRenderTarget()
-{
- if (mRTView || !mSwapChain) {
- return;
- }
-
- HRESULT hr;
-
- nsRefPtr backBuf;
- hr = mSwapChain->GetBuffer(0, __uuidof(ID3D10Texture2D), (void**)backBuf.StartAssignment());
- if (FAILED(hr)) {
- return;
- }
- mDevice->CreateRenderTargetView(backBuf, nullptr, getter_AddRefs(mRTView));
-}
-
-void
-LayerManagerD3D10::VerifyBufferSize()
-{
- nsIntRect rect;
- mWidget->GetClientBounds(rect);
-
- if (mSwapChain) {
- DXGI_SWAP_CHAIN_DESC swapDesc;
- mSwapChain->GetDesc(&swapDesc);
-
- if (swapDesc.BufferDesc.Width == rect.width &&
- swapDesc.BufferDesc.Height == rect.height) {
- return;
- }
-
- mRTView = nullptr;
- if (IsRunningInWindowsMetro()) {
- mSwapChain->ResizeBuffers(2, rect.width, rect.height,
- DXGI_FORMAT_B8G8R8A8_UNORM,
- 0);
- mDisableSequenceForNextFrame = true;
- } else if (gfxWindowsPlatform::IsOptimus()) {
- mSwapChain->ResizeBuffers(1, rect.width, rect.height,
- DXGI_FORMAT_B8G8R8A8_UNORM,
- 0);
- } else {
- mSwapChain->ResizeBuffers(1, rect.width, rect.height,
- DXGI_FORMAT_B8G8R8A8_UNORM,
- DXGI_SWAP_CHAIN_FLAG_GDI_COMPATIBLE);
- }
- }
-}
-
-void
-LayerManagerD3D10::EnsureReadbackManager()
-{
- if (mReadbackManager) {
- return;
- }
-
- DeviceAttachments *attachments;
- UINT size = sizeof(DeviceAttachments*);
- if (FAILED(mDevice->GetPrivateData(sDeviceAttachments, &size, &attachments))) {
- // Strange! This shouldn't happen ... return a readback manager for this
- // layer manager only.
- mReadbackManager = new ReadbackManagerD3D10();
- gfx::LogFailure(NS_LITERAL_CSTRING("Couldn't get device attachments for device."));
- return;
- }
-
- if (attachments->mReadbackManager) {
- mReadbackManager = attachments->mReadbackManager;
- return;
- }
-
- mReadbackManager = new ReadbackManagerD3D10();
- attachments->mReadbackManager = mReadbackManager;
-}
-
-void
-LayerManagerD3D10::Render(EndTransactionFlags aFlags)
-{
- static_cast(mRoot->ImplData())->Validate();
-
- if (aFlags & END_NO_COMPOSITE) {
- return;
- }
-
- SetupPipeline();
-
- float black[] = { 0, 0, 0, 0 };
- device()->ClearRenderTargetView(mRTView, black);
-
- nsIntRect rect;
- mWidget->GetClientBounds(rect);
-
- const nsIntRect *clipRect = mRoot->GetClipRect();
- D3D10_RECT r;
- if (clipRect) {
- r.left = (LONG)clipRect->x;
- r.top = (LONG)clipRect->y;
- r.right = (LONG)(clipRect->x + clipRect->width);
- r.bottom = (LONG)(clipRect->y + clipRect->height);
- } else {
- r.left = r.top = 0;
- r.right = rect.width;
- r.bottom = rect.height;
- }
- device()->RSSetScissorRects(1, &r);
-
- static_cast(mRoot->ImplData())->RenderLayer();
-
- if (!mRegionToClear.IsEmpty()) {
- float color[4] = { 0.0f, 0.0f, 0.0f, 0.0f };
- gfx::Matrix4x4 transform;
- effect()->GetVariableByName("mLayerTransform")->SetRawValue(&transform, 0, 64);
- effect()->GetVariableByName("fLayerColor")->AsVector()->SetFloatVector(color);
-
- ID3D10EffectTechnique *technique = effect()->GetTechniqueByName("RenderClearLayer");
-
- nsIntRegionRectIterator iter(mRegionToClear);
- const nsIntRect *r;
- while ((r = iter.Next())) {
- effect()->GetVariableByName("vLayerQuad")->AsVector()->SetFloatVector(
- ShaderConstantRectD3D10(
- (float)r->x,
- (float)r->y,
- (float)r->width,
- (float)r->height)
- );
-
- technique->GetPassByIndex(0)->Apply(0);
- device()->Draw(4, 0);
- }
- }
-
- // See bug 630197 - we have some reasons to believe if an earlier call
- // returned an error, the upcoming present call may raise an exception.
- // This will check if any of the calls done recently has returned an error
- // and bails on composition. On the -next- frame we will then abandon
- // hardware acceleration from gfxWindowsPlatform::VerifyD2DDevice.
- // This might not be the 'optimal' solution but it will help us assert
- // whether our thoughts of the causes of the issues are correct.
- if (FAILED(mDevice->GetDeviceRemovedReason())) {
- return;
- }
-
- if (mTarget) {
- PaintToTarget();
- } else {
- mSwapChain->Present(0, mDisableSequenceForNextFrame ? DXGI_PRESENT_DO_NOT_SEQUENCE : 0);
- mDisableSequenceForNextFrame = false;
- }
- RecordFrame();
- PostPresent();
-}
-
-void
-LayerManagerD3D10::PaintToTarget()
-{
- nsRefPtr backBuf;
-
- mSwapChain->GetBuffer(0, __uuidof(ID3D10Texture2D), (void**)backBuf.StartAssignment());
-
- D3D10_TEXTURE2D_DESC bbDesc;
- backBuf->GetDesc(&bbDesc);
-
- CD3D10_TEXTURE2D_DESC softDesc(bbDesc.Format, bbDesc.Width, bbDesc.Height);
- softDesc.MipLevels = 1;
- softDesc.CPUAccessFlags = D3D10_CPU_ACCESS_READ;
- softDesc.Usage = D3D10_USAGE_STAGING;
- softDesc.BindFlags = 0;
-
- nsRefPtr readTexture;
-
- HRESULT hr = device()->CreateTexture2D(&softDesc, nullptr, getter_AddRefs(readTexture));
- if (FAILED(hr)) {
- ReportFailure(NS_LITERAL_CSTRING("LayerManagerD3D10::PaintToTarget(): Failed to create texture"),
- hr);
- return;
- }
-
- device()->CopyResource(readTexture, backBuf);
-
- D3D10_MAPPED_TEXTURE2D map;
- readTexture->Map(0, D3D10_MAP_READ, 0, &map);
-
- nsRefPtr tmpSurface =
- new gfxImageSurface((unsigned char*)map.pData,
- gfxIntSize(bbDesc.Width, bbDesc.Height),
- map.RowPitch,
- gfxImageFormat::ARGB32);
-
- mTarget->SetSource(tmpSurface);
- mTarget->SetOperator(gfxContext::OPERATOR_OVER);
- mTarget->Paint();
-
- readTexture->Unmap(0);
-}
-
-void
-LayerManagerD3D10::ReportFailure(const nsACString &aMsg, HRESULT aCode)
-{
- // We could choose to abort here when hr == E_OUTOFMEMORY.
- nsCString msg;
- msg.Append(aMsg);
- msg.AppendLiteral(" Error code: ");
- msg.AppendInt(uint32_t(aCode));
- NS_WARNING(msg.BeginReading());
-
- gfx::LogFailure(msg);
-}
-
-LayerD3D10::LayerD3D10(LayerManagerD3D10 *aManager)
- : mD3DManager(aManager)
-{
-}
-
-ID3D10EffectTechnique*
-LayerD3D10::SelectShader(uint8_t aFlags)
-{
- switch (aFlags) {
- case (SHADER_RGBA | SHADER_NON_PREMUL | SHADER_LINEAR | SHADER_MASK):
- return effect()->GetTechniqueByName("RenderRGBALayerNonPremulMask");
- case (SHADER_RGBA | SHADER_NON_PREMUL | SHADER_LINEAR | SHADER_NO_MASK):
- return effect()->GetTechniqueByName("RenderRGBALayerNonPremul");
- case (SHADER_RGBA | SHADER_NON_PREMUL | SHADER_POINT | SHADER_NO_MASK):
- return effect()->GetTechniqueByName("RenderRGBALayerNonPremulPoint");
- case (SHADER_RGBA | SHADER_NON_PREMUL | SHADER_POINT | SHADER_MASK):
- return effect()->GetTechniqueByName("RenderRGBALayerNonPremulPointMask");
- case (SHADER_RGBA | SHADER_PREMUL | SHADER_LINEAR | SHADER_MASK_3D):
- return effect()->GetTechniqueByName("RenderRGBALayerPremulMask3D");
- case (SHADER_RGBA | SHADER_PREMUL | SHADER_LINEAR | SHADER_MASK):
- return effect()->GetTechniqueByName("RenderRGBALayerPremulMask");
- case (SHADER_RGBA | SHADER_PREMUL | SHADER_LINEAR | SHADER_NO_MASK):
- return effect()->GetTechniqueByName("RenderRGBALayerPremul");
- case (SHADER_RGBA | SHADER_PREMUL | SHADER_POINT | SHADER_MASK):
- return effect()->GetTechniqueByName("RenderRGBALayerPremulPointMask");
- case (SHADER_RGBA | SHADER_PREMUL | SHADER_POINT | SHADER_NO_MASK):
- return effect()->GetTechniqueByName("RenderRGBALayerPremulPoint");
- case (SHADER_RGB | SHADER_PREMUL | SHADER_POINT | SHADER_MASK):
- return effect()->GetTechniqueByName("RenderRGBLayerPremulPointMask");
- case (SHADER_RGB | SHADER_PREMUL | SHADER_POINT | SHADER_NO_MASK):
- return effect()->GetTechniqueByName("RenderRGBLayerPremulPoint");
- case (SHADER_RGB | SHADER_PREMUL | SHADER_LINEAR | SHADER_MASK):
- return effect()->GetTechniqueByName("RenderRGBLayerPremulMask");
- case (SHADER_RGB | SHADER_PREMUL | SHADER_LINEAR | SHADER_NO_MASK):
- return effect()->GetTechniqueByName("RenderRGBLayerPremul");
- case (SHADER_SOLID | SHADER_MASK):
- return effect()->GetTechniqueByName("RenderSolidColorLayerMask");
- case (SHADER_SOLID | SHADER_NO_MASK):
- return effect()->GetTechniqueByName("RenderSolidColorLayer");
- case (SHADER_COMPONENT_ALPHA | SHADER_MASK):
- return effect()->GetTechniqueByName("RenderComponentAlphaLayerMask");
- case (SHADER_COMPONENT_ALPHA | SHADER_NO_MASK):
- return effect()->GetTechniqueByName("RenderComponentAlphaLayer");
- case (SHADER_YCBCR | SHADER_MASK):
- return effect()->GetTechniqueByName("RenderYCbCrLayerMask");
- case (SHADER_YCBCR | SHADER_NO_MASK):
- return effect()->GetTechniqueByName("RenderYCbCrLayer");
- default:
- NS_ERROR("Invalid shader.");
- return nullptr;
- }
-}
-
-uint8_t
-LayerD3D10::LoadMaskTexture()
-{
- if (Layer* maskLayer = GetLayer()->GetMaskLayer()) {
- IntSize size;
- nsRefPtr maskSRV =
- static_cast(maskLayer->ImplData())->GetAsTexture(&size);
-
- if (!maskSRV) {
- return SHADER_NO_MASK;
- }
-
- Matrix maskTransform;
- Matrix4x4 effectiveTransform = maskLayer->GetEffectiveTransform();
- bool maskIs2D = effectiveTransform.CanDraw2D(&maskTransform);
- NS_ASSERTION(maskIs2D, "How did we end up with a 3D transform here?!");
- Rect bounds = Rect(Point(), Size(size));
- bounds = maskTransform.TransformBounds(bounds);
-
- effect()->GetVariableByName("vMaskQuad")->AsVector()->SetFloatVector(
- ShaderConstantRectD3D10(
- (float)bounds.x,
- (float)bounds.y,
- (float)bounds.width,
- (float)bounds.height)
- );
-
- effect()->GetVariableByName("tMask")->AsShaderResource()->SetResource(maskSRV);
- return SHADER_MASK;
- }
-
- return SHADER_NO_MASK;
-}
-
-}
-}
diff --git a/gfx/layers/d3d10/LayerManagerD3D10.fx b/gfx/layers/d3d10/LayerManagerD3D10.fx
deleted file mode 100644
index e051a4c60384..000000000000
--- a/gfx/layers/d3d10/LayerManagerD3D10.fx
+++ /dev/null
@@ -1,605 +0,0 @@
-typedef float4 rect;
-cbuffer PerLayer {
- rect vTextureCoords;
- rect vLayerQuad;
- rect vMaskQuad;
- float fLayerOpacity;
- float4x4 mLayerTransform;
-}
-
-cbuffer PerOccasionalLayer {
- float4 vRenderTargetOffset;
- float4 fLayerColor;
-}
-
-cbuffer PerLayerManager {
- float4x4 mProjection;
-}
-
-BlendState Premul
-{
- AlphaToCoverageEnable = FALSE;
- BlendEnable[0] = TRUE;
- SrcBlend = One;
- DestBlend = Inv_Src_Alpha;
- BlendOp = Add;
- SrcBlendAlpha = One;
- DestBlendAlpha = Inv_Src_Alpha;
- BlendOpAlpha = Add;
- RenderTargetWriteMask[0] = 0x0F; // All
-};
-
-BlendState NonPremul
-{
- AlphaToCoverageEnable = FALSE;
- BlendEnable[0] = TRUE;
- SrcBlend = Src_Alpha;
- DestBlend = Inv_Src_Alpha;
- BlendOp = Add;
- SrcBlendAlpha = One;
- DestBlendAlpha = Inv_Src_Alpha;
- BlendOpAlpha = Add;
- RenderTargetWriteMask[0] = 0x0F; // All
-};
-
-BlendState NoBlendDual
-{
- AlphaToCoverageEnable = FALSE;
- BlendEnable[0] = FALSE;
- BlendEnable[1] = FALSE;
- RenderTargetWriteMask[0] = 0x0F; // All
- RenderTargetWriteMask[1] = 0x0F; // All
-};
-
-BlendState ComponentAlphaBlend
-{
- AlphaToCoverageEnable = FALSE;
- BlendEnable[0] = TRUE;
- SrcBlend = One;
- DestBlend = Inv_Src1_Color;
- BlendOp = Add;
- SrcBlendAlpha = One;
- DestBlendAlpha = Inv_Src_Alpha;
- BlendOpAlpha = Add;
- RenderTargetWriteMask[0] = 0x0F; // All
-};
-
-RasterizerState LayerRast
-{
- ScissorEnable = True;
- CullMode = None;
-};
-
-Texture2D tRGB;
-Texture2D tY;
-Texture2D tCb;
-Texture2D tCr;
-Texture2D tRGBWhite;
-Texture2D tMask;
-
-SamplerState LayerTextureSamplerLinear
-{
- Filter = MIN_MAG_MIP_LINEAR;
- AddressU = Clamp;
- AddressV = Clamp;
-};
-
-SamplerState LayerTextureSamplerPoint
-{
- Filter = MIN_MAG_MIP_POINT;
- AddressU = Clamp;
- AddressV = Clamp;
-};
-
-struct VS_INPUT {
- float2 vPosition : POSITION;
-};
-
-struct VS_OUTPUT {
- float4 vPosition : SV_Position;
- float2 vTexCoords : TEXCOORD0;
-};
-
-struct VS_MASK_OUTPUT {
- float4 vPosition : SV_Position;
- float2 vTexCoords : TEXCOORD0;
- float2 vMaskCoords : TEXCOORD1;
-};
-
-struct VS_MASK_3D_OUTPUT {
- float4 vPosition : SV_Position;
- float2 vTexCoords : TEXCOORD0;
- float3 vMaskCoords : TEXCOORD1;
-};
-
-struct PS_OUTPUT {
- float4 vSrc;
- float4 vAlpha;
-};
-
-struct PS_DUAL_OUTPUT {
- float4 vOutput1 : SV_Target0;
- float4 vOutput2 : SV_Target1;
-};
-
-float2 TexCoords(const float2 aPosition)
-{
- float2 result;
- const float2 size = vTextureCoords.zw;
- result.x = vTextureCoords.x + aPosition.x * size.x;
- result.y = vTextureCoords.y + aPosition.y * size.y;
-
- return result;
-}
-
-float4 TransformedPostion(float2 aInPosition)
-{
- // the current vertex's position on the quad
- float4 position = float4(0, 0, 0, 1);
-
- // We use 4 component floats to uniquely describe a rectangle, by the structure
- // of x, y, width, height. This allows us to easily generate the 4 corners
- // of any rectangle from the 4 corners of the 0,0-1,1 quad that we use as the
- // stream source for our LayerQuad vertex shader. We do this by doing:
- // Xout = x + Xin * width
- // Yout = y + Yin * height
- float2 size = vLayerQuad.zw;
- position.x = vLayerQuad.x + aInPosition.x * size.x;
- position.y = vLayerQuad.y + aInPosition.y * size.y;
-
- position = mul(mLayerTransform, position);
-
- return position;
-}
-
-float4 VertexPosition(float4 aTransformedPosition)
-{
- float4 result;
- result.w = aTransformedPosition.w;
- result.xyz = aTransformedPosition.xyz / aTransformedPosition.w;
- result -= vRenderTargetOffset;
- result.xyz *= result.w;
-
- result = mul(mProjection, result);
-
- return result;
-}
-
-VS_OUTPUT LayerQuadVS(const VS_INPUT aVertex)
-{
- VS_OUTPUT outp;
- float4 position = TransformedPostion(aVertex.vPosition);
-
- outp.vPosition = VertexPosition(position);
- outp.vTexCoords = TexCoords(aVertex.vPosition.xy);
-
- return outp;
-}
-
-VS_MASK_OUTPUT LayerQuadMaskVS(const VS_INPUT aVertex)
-{
- VS_MASK_OUTPUT outp;
- float4 position = TransformedPostion(aVertex.vPosition);
-
- outp.vPosition = VertexPosition(position);
-
- // calculate the position on the mask texture
- outp.vMaskCoords.x = (position.x - vMaskQuad.x) / vMaskQuad.z;
- outp.vMaskCoords.y = (position.y - vMaskQuad.y) / vMaskQuad.w;
-
- outp.vTexCoords = TexCoords(aVertex.vPosition.xy);
-
- return outp;
-}
-
-VS_MASK_3D_OUTPUT LayerQuadMask3DVS(const VS_INPUT aVertex)
-{
- VS_MASK_3D_OUTPUT outp;
- float4 position = TransformedPostion(aVertex.vPosition);
-
- outp.vPosition = VertexPosition(position);
-
- // calculate the position on the mask texture
- position.xyz /= position.w;
- outp.vMaskCoords.x = (position.x - vMaskQuad.x) / vMaskQuad.z;
- outp.vMaskCoords.y = (position.y - vMaskQuad.y) / vMaskQuad.w;
- // We use the w coord to do non-perspective correct interpolation:
- // the quad might be transformed in 3D, in which case it will have some
- // perspective. The graphics card will do perspective-correct interpolation
- // of the texture, but our mask is already transformed and so we require
- // linear interpolation. Therefore, we must correct the interpolation
- // ourselves, we do this by multiplying all coords by w here, and dividing by
- // w in the pixel shader (post-interpolation), we pass w in outp.vMaskCoords.z.
- // See http://en.wikipedia.org/wiki/Texture_mapping#Perspective_correctness
- outp.vMaskCoords.z = 1;
- outp.vMaskCoords *= position.w;
-
- outp.vTexCoords = TexCoords(aVertex.vPosition.xy);
-
- return outp;
-}
-
-float4 RGBAShaderMask(const VS_MASK_OUTPUT aVertex, uniform sampler aSampler) : SV_Target
-{
- float2 maskCoords = aVertex.vMaskCoords;
- float mask = tMask.Sample(LayerTextureSamplerLinear, maskCoords).a;
- return tRGB.Sample(aSampler, aVertex.vTexCoords) * fLayerOpacity * mask;
-}
-
-float4 RGBAShaderLinearMask3D(const VS_MASK_3D_OUTPUT aVertex) : SV_Target
-{
- float2 maskCoords = aVertex.vMaskCoords.xy / aVertex.vMaskCoords.z;
- float mask = tMask.Sample(LayerTextureSamplerLinear, maskCoords).a;
- return tRGB.Sample(LayerTextureSamplerLinear, aVertex.vTexCoords) * fLayerOpacity * mask;
-}
-
-float4 RGBShaderMask(const VS_MASK_OUTPUT aVertex, uniform sampler aSampler) : SV_Target
-{
- float4 result;
- result = tRGB.Sample(aSampler, aVertex.vTexCoords) * fLayerOpacity;
- result.a = fLayerOpacity;
-
- float2 maskCoords = aVertex.vMaskCoords;
- float mask = tMask.Sample(LayerTextureSamplerLinear, maskCoords).a;
- return result * mask;
-}
-
-/* From Rec601:
-[R] [1.1643835616438356, 0.0, 1.5960267857142858] [ Y - 16]
-[G] = [1.1643835616438358, -0.3917622900949137, -0.8129676472377708] x [Cb - 128]
-[B] [1.1643835616438356, 2.017232142857143, 8.862867620416422e-17] [Cr - 128]
-
-For [0,1] instead of [0,255], and to 5 places:
-[R] [1.16438, 0.00000, 1.59603] [ Y - 0.06275]
-[G] = [1.16438, -0.39176, -0.81297] x [Cb - 0.50196]
-[B] [1.16438, 2.01723, 0.00000] [Cr - 0.50196]
-*/
-
-float4 CalculateYCbCrColor(const float2 aTexCoords)
-{
- float4 yuv;
- float4 color;
-
- yuv.r = tCr.Sample(LayerTextureSamplerLinear, aTexCoords).a - 0.50196;
- yuv.g = tY.Sample(LayerTextureSamplerLinear, aTexCoords).a - 0.06275;
- yuv.b = tCb.Sample(LayerTextureSamplerLinear, aTexCoords).a - 0.50196;
-
- color.r = yuv.g * 1.16438 + yuv.r * 1.59603;
- color.g = yuv.g * 1.16438 - 0.81297 * yuv.r - 0.39176 * yuv.b;
- color.b = yuv.g * 1.16438 + yuv.b * 2.01723;
- color.a = 1.0f;
-
- return color;
-}
-
-float4 YCbCrShaderMask(const VS_MASK_OUTPUT aVertex) : SV_Target
-{
- float2 maskCoords = aVertex.vMaskCoords;
- float mask = tMask.Sample(LayerTextureSamplerLinear, maskCoords).a;
-
- return CalculateYCbCrColor(aVertex.vTexCoords) * fLayerOpacity * mask;
-}
-
-PS_OUTPUT ComponentAlphaShaderMask(const VS_MASK_OUTPUT aVertex) : SV_Target
-{
- PS_OUTPUT result;
-
- result.vSrc = tRGB.Sample(LayerTextureSamplerLinear, aVertex.vTexCoords);
- result.vAlpha = 1.0 - tRGBWhite.Sample(LayerTextureSamplerLinear, aVertex.vTexCoords) + result.vSrc;
- result.vSrc.a = result.vAlpha.g;
-
- float2 maskCoords = aVertex.vMaskCoords;
- float mask = tMask.Sample(LayerTextureSamplerLinear, maskCoords).a;
- result.vSrc *= fLayerOpacity * mask;
- result.vAlpha *= fLayerOpacity * mask;
-
- return result;
-}
-
-float4 SolidColorShaderMask(const VS_MASK_OUTPUT aVertex) : SV_Target
-{
- float2 maskCoords = aVertex.vMaskCoords;
- float mask = tMask.Sample(LayerTextureSamplerLinear, maskCoords).a;
- return fLayerColor * mask;
-}
-
-/*
- * Un-masked versions
- *************************************************************
- */
-float4 RGBAShader(const VS_OUTPUT aVertex, uniform sampler aSampler) : SV_Target
-{
- return tRGB.Sample(aSampler, aVertex.vTexCoords) * fLayerOpacity;
-}
-
-float4 RGBShader(const VS_OUTPUT aVertex, uniform sampler aSampler) : SV_Target
-{
- float4 result;
- result = tRGB.Sample(aSampler, aVertex.vTexCoords) * fLayerOpacity;
- result.a = fLayerOpacity;
- return result;
-}
-
-float4 YCbCrShader(const VS_OUTPUT aVertex) : SV_Target
-{
- return CalculateYCbCrColor(aVertex.vTexCoords) * fLayerOpacity;
-}
-
-PS_OUTPUT ComponentAlphaShader(const VS_OUTPUT aVertex) : SV_Target
-{
- PS_OUTPUT result;
-
- result.vSrc = tRGB.Sample(LayerTextureSamplerLinear, aVertex.vTexCoords);
- result.vAlpha = 1.0 - tRGBWhite.Sample(LayerTextureSamplerLinear, aVertex.vTexCoords) + result.vSrc;
- result.vSrc.a = result.vAlpha.g;
- result.vSrc *= fLayerOpacity;
- result.vAlpha *= fLayerOpacity;
- return result;
-}
-
-float4 SolidColorShader(const VS_OUTPUT aVertex) : SV_Target
-{
- return fLayerColor;
-}
-
-PS_DUAL_OUTPUT AlphaExtractionPrepareShader(const VS_OUTPUT aVertex)
-{
- PS_DUAL_OUTPUT result;
- result.vOutput1 = float4(0, 0, 0, 1);
- result.vOutput2 = float4(1, 1, 1, 1);
- return result;
-}
-
-technique10 RenderRGBLayerPremul
-{
- pass P0
- {
- SetRasterizerState( LayerRast );
- SetBlendState( Premul, float4( 0.0f, 0.0f, 0.0f, 0.0f ), 0xFFFFFFFF );
- SetVertexShader( CompileShader( vs_4_0_level_9_3, LayerQuadVS() ) );
- SetGeometryShader( NULL );
- SetPixelShader( CompileShader( ps_4_0_level_9_3, RGBShader(LayerTextureSamplerLinear) ) );
- }
-}
-
-technique10 RenderRGBLayerPremulPoint
-{
- pass P0
- {
- SetRasterizerState( LayerRast );
- SetBlendState( Premul, float4( 0.0f, 0.0f, 0.0f, 0.0f ), 0xFFFFFFFF );
- SetVertexShader( CompileShader( vs_4_0_level_9_3, LayerQuadVS() ) );
- SetGeometryShader( NULL );
- SetPixelShader( CompileShader( ps_4_0_level_9_3, RGBShader(LayerTextureSamplerPoint) ) );
- }
-}
-
-technique10 RenderRGBALayerPremul
-{
- pass P0
- {
- SetRasterizerState( LayerRast );
- SetBlendState( Premul, float4( 0.0f, 0.0f, 0.0f, 0.0f ), 0xFFFFFFFF );
- SetVertexShader( CompileShader( vs_4_0_level_9_3, LayerQuadVS() ) );
- SetGeometryShader( NULL );
- SetPixelShader( CompileShader( ps_4_0_level_9_3, RGBAShader(LayerTextureSamplerLinear) ) );
- }
-}
-
-technique10 RenderRGBALayerNonPremul
-{
- pass P0
- {
- SetRasterizerState( LayerRast );
- SetBlendState( NonPremul, float4( 0.0f, 0.0f, 0.0f, 0.0f ), 0xFFFFFFFF );
- SetVertexShader( CompileShader( vs_4_0_level_9_3, LayerQuadVS() ) );
- SetGeometryShader( NULL );
- SetPixelShader( CompileShader( ps_4_0_level_9_3, RGBAShader(LayerTextureSamplerLinear) ) );
- }
-}
-
-technique10 RenderRGBALayerPremulPoint
-{
- pass P0
- {
- SetRasterizerState( LayerRast );
- SetBlendState( Premul, float4( 0.0f, 0.0f, 0.0f, 0.0f ), 0xFFFFFFFF );
- SetVertexShader( CompileShader( vs_4_0_level_9_3, LayerQuadVS() ) );
- SetGeometryShader( NULL );
- SetPixelShader( CompileShader( ps_4_0_level_9_3, RGBAShader(LayerTextureSamplerPoint) ) );
- }
-}
-
-technique10 RenderRGBALayerNonPremulPoint
-{
- pass P0
- {
- SetRasterizerState( LayerRast );
- SetBlendState( NonPremul, float4( 0.0f, 0.0f, 0.0f, 0.0f ), 0xFFFFFFFF );
- SetVertexShader( CompileShader( vs_4_0_level_9_3, LayerQuadVS() ) );
- SetGeometryShader( NULL );
- SetPixelShader( CompileShader( ps_4_0_level_9_3, RGBAShader(LayerTextureSamplerPoint) ) );
- }
-}
-
-technique10 RenderYCbCrLayer
-{
- pass P0
- {
- SetRasterizerState( LayerRast );
- SetBlendState( Premul, float4( 0.0f, 0.0f, 0.0f, 0.0f ), 0xFFFFFFFF );
- SetVertexShader( CompileShader( vs_4_0_level_9_3, LayerQuadVS() ) );
- SetGeometryShader( NULL );
- SetPixelShader( CompileShader( ps_4_0_level_9_3, YCbCrShader() ) );
- }
-}
-
-technique10 RenderComponentAlphaLayer
-{
- Pass P0
- {
- SetRasterizerState( LayerRast );
- SetBlendState( ComponentAlphaBlend, float4( 0.0f, 0.0f, 0.0f, 0.0f ), 0xFFFFFFFF );
- SetVertexShader( CompileShader( vs_4_0_level_9_3, LayerQuadVS() ) );
- SetGeometryShader( NULL );
- SetPixelShader( CompileShader( ps_4_0_level_9_3, ComponentAlphaShader() ) );
- }
-
-}
-
-technique10 RenderSolidColorLayer
-{
- pass P0
- {
- SetRasterizerState( LayerRast );
- SetBlendState( Premul, float4( 0.0f, 0.0f, 0.0f, 0.0f ), 0xFFFFFFFF );
- SetVertexShader( CompileShader( vs_4_0_level_9_3, LayerQuadVS() ) );
- SetGeometryShader( NULL );
- SetPixelShader( CompileShader( ps_4_0_level_9_3, SolidColorShader() ) );
- }
-}
-
-technique10 RenderClearLayer
-{
- pass P0
- {
- SetRasterizerState( LayerRast );
- SetBlendState( NoBlendDual, float4( 0.0f, 0.0f, 0.0f, 0.0f ), 0xFFFFFFFF );
- SetVertexShader( CompileShader( vs_4_0_level_9_3, LayerQuadVS() ) );
- SetGeometryShader( NULL );
- SetPixelShader( CompileShader( ps_4_0_level_9_3, SolidColorShader() ) );
- }
-}
-
-technique10 PrepareAlphaExtractionTextures
-{
- pass P0
- {
- SetRasterizerState( LayerRast );
- SetBlendState( NoBlendDual, float4( 0.0f, 0.0f, 0.0f, 0.0f ), 0xFFFFFFFF );
- SetVertexShader( CompileShader( vs_4_0_level_9_3, LayerQuadVS() ) );
- SetGeometryShader( NULL );
- SetPixelShader( CompileShader( ps_4_0_level_9_3, AlphaExtractionPrepareShader() ) );
- }
-}
-
-technique10 RenderRGBLayerPremulMask
-{
- pass P0
- {
- SetRasterizerState( LayerRast );
- SetBlendState( Premul, float4( 0.0f, 0.0f, 0.0f, 0.0f ), 0xFFFFFFFF );
- SetVertexShader( CompileShader( vs_4_0_level_9_3, LayerQuadMaskVS() ) );
- SetGeometryShader( NULL );
- SetPixelShader( CompileShader( ps_4_0_level_9_3, RGBShaderMask(LayerTextureSamplerLinear) ) );
- }
-}
-
-technique10 RenderRGBLayerPremulPointMask
-{
- pass P0
- {
- SetRasterizerState( LayerRast );
- SetBlendState( Premul, float4( 0.0f, 0.0f, 0.0f, 0.0f ), 0xFFFFFFFF );
- SetVertexShader( CompileShader( vs_4_0_level_9_3, LayerQuadMaskVS() ) );
- SetGeometryShader( NULL );
- SetPixelShader( CompileShader( ps_4_0_level_9_3, RGBShaderMask(LayerTextureSamplerPoint) ) );
- }
-}
-
-technique10 RenderRGBALayerPremulMask
-{
- pass P0
- {
- SetRasterizerState( LayerRast );
- SetBlendState( Premul, float4( 0.0f, 0.0f, 0.0f, 0.0f ), 0xFFFFFFFF );
- SetVertexShader( CompileShader( vs_4_0_level_9_3, LayerQuadMaskVS() ) );
- SetGeometryShader( NULL );
- SetPixelShader( CompileShader( ps_4_0_level_9_3, RGBAShaderMask(LayerTextureSamplerLinear) ) );
- }
-}
-
-technique10 RenderRGBALayerPremulMask3D
-{
- pass P0
- {
- SetRasterizerState( LayerRast );
- SetBlendState( Premul, float4( 0.0f, 0.0f, 0.0f, 0.0f ), 0xFFFFFFFF );
- SetVertexShader( CompileShader( vs_4_0_level_9_3, LayerQuadMask3DVS() ) );
- SetGeometryShader( NULL );
- SetPixelShader( CompileShader( ps_4_0_level_9_3, RGBAShaderLinearMask3D() ) );
- }
-}
-
-technique10 RenderRGBALayerNonPremulMask
-{
- pass P0
- {
- SetRasterizerState( LayerRast );
- SetBlendState( NonPremul, float4( 0.0f, 0.0f, 0.0f, 0.0f ), 0xFFFFFFFF );
- SetVertexShader( CompileShader( vs_4_0_level_9_3, LayerQuadMaskVS() ) );
- SetGeometryShader( NULL );
- SetPixelShader( CompileShader( ps_4_0_level_9_3, RGBAShaderMask(LayerTextureSamplerLinear) ) );
- }
-}
-
-technique10 RenderRGBALayerPremulPointMask
-{
- pass P0
- {
- SetRasterizerState( LayerRast );
- SetBlendState( Premul, float4( 0.0f, 0.0f, 0.0f, 0.0f ), 0xFFFFFFFF );
- SetVertexShader( CompileShader( vs_4_0_level_9_3, LayerQuadMaskVS() ) );
- SetGeometryShader( NULL );
- SetPixelShader( CompileShader( ps_4_0_level_9_3, RGBAShaderMask(LayerTextureSamplerPoint) ) );
- }
-}
-
-technique10 RenderRGBALayerNonPremulPointMask
-{
- pass P0
- {
- SetRasterizerState( LayerRast );
- SetBlendState( NonPremul, float4( 0.0f, 0.0f, 0.0f, 0.0f ), 0xFFFFFFFF );
- SetVertexShader( CompileShader( vs_4_0_level_9_3, LayerQuadMaskVS() ) );
- SetGeometryShader( NULL );
- SetPixelShader( CompileShader( ps_4_0_level_9_3, RGBAShaderMask(LayerTextureSamplerPoint) ) );
- }
-}
-
-technique10 RenderYCbCrLayerMask
-{
- pass P0
- {
- SetRasterizerState( LayerRast );
- SetBlendState( Premul, float4( 0.0f, 0.0f, 0.0f, 0.0f ), 0xFFFFFFFF );
- SetVertexShader( CompileShader( vs_4_0_level_9_3, LayerQuadMaskVS() ) );
- SetGeometryShader( NULL );
- SetPixelShader( CompileShader( ps_4_0_level_9_3, YCbCrShaderMask() ) );
- }
-}
-
-technique10 RenderComponentAlphaLayerMask
-{
- Pass P0
- {
- SetRasterizerState( LayerRast );
- SetBlendState( ComponentAlphaBlend, float4( 0.0f, 0.0f, 0.0f, 0.0f ), 0xFFFFFFFF );
- SetVertexShader( CompileShader( vs_4_0_level_9_3, LayerQuadMaskVS() ) );
- SetGeometryShader( NULL );
- SetPixelShader( CompileShader( ps_4_0_level_9_3, ComponentAlphaShaderMask() ) );
- }
-}
-
-technique10 RenderSolidColorLayerMask
-{
- pass P0
- {
- SetRasterizerState( LayerRast );
- SetBlendState( Premul, float4( 0.0f, 0.0f, 0.0f, 0.0f ), 0xFFFFFFFF );
- SetVertexShader( CompileShader( vs_4_0_level_9_3, LayerQuadMaskVS() ) );
- SetGeometryShader( NULL );
- SetPixelShader( CompileShader( ps_4_0_level_9_3, SolidColorShaderMask() ) );
- }
-}
-
diff --git a/gfx/layers/d3d10/LayerManagerD3D10.h b/gfx/layers/d3d10/LayerManagerD3D10.h
deleted file mode 100644
index e7b27118c796..000000000000
--- a/gfx/layers/d3d10/LayerManagerD3D10.h
+++ /dev/null
@@ -1,288 +0,0 @@
-/* -*- Mode: C++; tab-width: 20; indent-tabs-mode: nil; c-basic-offset: 2 -*-
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-#ifndef GFX_LAYERMANAGERD3D10_H
-#define GFX_LAYERMANAGERD3D10_H
-
-#include "Layers.h"
-
-#include
-#include
-
-#include "gfxContext.h"
-#include "mozilla/gfx/UserData.h"
-#include "nsIWidget.h"
-
-#include "ReadbackManagerD3D10.h"
-
-namespace mozilla {
-namespace layers {
-
-class DummyRoot;
-class Nv3DVUtils;
-
-/**
- * This structure is used to pass rectangles to our shader constant. We can use
- * this for passing rectangular areas to SetVertexShaderConstant. In the format
- * of a 4 component float(x,y,width,height). Our vertex shader can then use
- * this to construct rectangular positions from the 0,0-1,1 quad that we source
- * it with.
- */
-struct ShaderConstantRectD3D10
-{
- float mX, mY, mWidth, mHeight;
- ShaderConstantRectD3D10(float aX, float aY, float aWidth, float aHeight)
- : mX(aX), mY(aY), mWidth(aWidth), mHeight(aHeight)
- { }
-
- // For easy passing to SetVertexShaderConstantF.
- operator float* () { return &mX; }
-};
-
-/*
- * This is the LayerManager used for Direct3D 10. For now this will
- * render on the main thread.
- *
- * For the time being, LayerManagerD3D10 forwards layers
- * transactions.
- */
-class LayerManagerD3D10 : public LayerManager {
- typedef mozilla::gfx::DrawTarget DrawTarget;
- typedef mozilla::gfx::IntSize IntSize;
- typedef mozilla::gfx::SurfaceFormat SurfaceFormat;
-
-public:
- LayerManagerD3D10(nsIWidget *aWidget);
- virtual ~LayerManagerD3D10();
-
- /*
- * Initializes the layer manager, this is when the layer manager will
- * actually access the device and attempt to create the swap chain used
- * to draw to the window. If this method fails the device cannot be used.
- * This function is not threadsafe.
- *
- * return True is initialization was succesful, false when it was not.
- */
- bool Initialize(bool force = false, HRESULT* aHresultPtr = nullptr);
-
- /*
- * LayerManager implementation.
- */
- virtual void Destroy();
-
- virtual void SetRoot(Layer *aLayer);
-
- virtual void BeginTransaction();
-
- virtual void BeginTransactionWithTarget(gfxContext* aTarget);
-
- virtual bool EndEmptyTransaction(EndTransactionFlags aFlags = END_DEFAULT);
-
- struct CallbackInfo {
- DrawPaintedLayerCallback Callback;
- void *CallbackData;
- };
-
- virtual void EndTransaction(DrawPaintedLayerCallback aCallback,
- void* aCallbackData,
- EndTransactionFlags aFlags = END_DEFAULT);
-
- const CallbackInfo &GetCallbackInfo() { return mCurrentCallbackInfo; }
-
- // D3D10 guarantees textures can be at least this size
- enum {
- MAX_TEXTURE_SIZE = 8192
- };
- virtual bool CanUseCanvasLayerForSize(const gfx::IntSize &aSize)
- {
- return aSize <= gfx::IntSize(MAX_TEXTURE_SIZE, MAX_TEXTURE_SIZE);
- }
-
- virtual int32_t GetMaxTextureSize() const
- {
- return MAX_TEXTURE_SIZE;
- }
-
- virtual already_AddRefed CreatePaintedLayer();
- virtual already_AddRefed CreateContainerLayer();
- virtual already_AddRefed CreateImageLayer();
- virtual already_AddRefed CreateColorLayer();
- virtual already_AddRefed CreateCanvasLayer();
- virtual already_AddRefed CreateReadbackLayer();
-
- virtual TemporaryRef
- CreateOptimalDrawTarget(const IntSize &aSize,
- SurfaceFormat aSurfaceFormat);
-
- virtual TemporaryRef
- CreateOptimalMaskDrawTarget(const IntSize &aSize);
-
- virtual TemporaryRef
- CreateDrawTarget(const gfx::IntSize &aSize,
- mozilla::gfx::SurfaceFormat aFormat);
-
- virtual LayersBackend GetBackendType() { return LayersBackend::LAYERS_D3D10; }
- virtual void GetBackendName(nsAString& name) { name.AssignLiteral("Direct3D 10"); }
-
- virtual const char* Name() const { return "D3D10"; }
-
- // Public helpers
-
- ID3D10Device1 *device() const { return mDevice; }
-
- ID3D10Effect *effect() const { return mEffect; }
- IDXGISwapChain *SwapChain() const
- {
- return mSwapChain;
- }
- ReadbackManagerD3D10 *readbackManager();
-
- void SetupInputAssembler();
- void SetViewport(const nsIntSize &aViewport);
- const nsIntSize &GetViewport() { return mViewport; }
-
- /**
- * Return pointer to the Nv3DVUtils instance
- */
- Nv3DVUtils *GetNv3DVUtils() { return mNv3DVUtils; }
-
- static void ReportFailure(const nsACString &aMsg, HRESULT aCode);
-
-private:
- void SetupPipeline();
- void UpdateRenderTarget();
- void VerifyBufferSize();
- void EnsureReadbackManager();
-
- void Render(EndTransactionFlags aFlags);
-
- nsRefPtr mDevice;
-
- nsRefPtr mEffect;
- nsRefPtr mInputLayout;
- nsRefPtr mVertexBuffer;
- nsRefPtr mReadbackManager;
-
- nsRefPtr mRTView;
-
- nsRefPtr mSwapChain;
-
- nsIWidget *mWidget;
-
- bool mDisableSequenceForNextFrame;
-
- CallbackInfo mCurrentCallbackInfo;
-
- nsIntSize mViewport;
-
- /* Nv3DVUtils instance */
- nsAutoPtr mNv3DVUtils;
-
- /*
- * Context target, nullptr when drawing directly to our swap chain.
- */
- nsRefPtr mTarget;
-
- /*
- * Copies the content of our backbuffer to the set transaction target.
- */
- void PaintToTarget();
-};
-
-/*
- * General information and tree management for OGL layers.
- */
-class LayerD3D10
-{
-public:
- LayerD3D10(LayerManagerD3D10 *aManager);
-
- virtual LayerD3D10 *GetFirstChildD3D10() { return nullptr; }
-
- void SetFirstChild(LayerD3D10 *aParent);
-
- virtual Layer* GetLayer() = 0;
-
- /**
- * This will render a child layer to whatever render target is currently
- * active.
- */
- virtual void RenderLayer() = 0;
- virtual void Validate() {}
-
- ID3D10Device1 *device() const { return mD3DManager->device(); }
- ID3D10Effect *effect() const { return mD3DManager->effect(); }
-
- /* Called by the layer manager when it's destroyed */
- virtual void LayerManagerDestroyed() {}
-
- /**
- * Return pointer to the Nv3DVUtils instance. Calls equivalent method in LayerManager.
- */
- Nv3DVUtils *GetNv3DVUtils() { return mD3DManager->GetNv3DVUtils(); }
-
- /*
- * Returns a shader resource view of a texture containing the contents of this
- * layer. Will try to return an existing texture if possible, or a temporary
- * one if not. It is the callee's responsibility to release the shader
- * resource view. Will return null if a texture could not be constructed.
- * The texture will not be transformed, i.e., it will be in the same coord
- * space as this.
- * Any layer that can be used as a mask layer should override this method.
- * If aSize is non-null, it will contain the size of the texture.
- */
- virtual already_AddRefed GetAsTexture(gfx::IntSize* aSize)
- {
- return nullptr;
- }
-
- void SetEffectTransformAndOpacity()
- {
- Layer* layer = GetLayer();
- const gfx::Matrix4x4& transform = layer->GetEffectiveTransform();
- void* raw = &const_cast(transform)._11;
- effect()->GetVariableByName("mLayerTransform")->SetRawValue(raw, 0, 64);
- effect()->GetVariableByName("fLayerOpacity")->AsScalar()->SetFloat(layer->GetEffectiveOpacity());
- }
-
-protected:
- /*
- * Finds a texture for this layer's mask layer (if it has one) and sets it
- * as an input to the shaders.
- * Returns SHADER_MASK if a texture is loaded, SHADER_NO_MASK if there was no
- * mask layer, or a texture for the mask layer could not be loaded.
- */
- uint8_t LoadMaskTexture();
-
- /**
- * Select a shader technique using a combination of the following flags.
- * Not all combinations of flags are supported, and might cause an error,
- * check the fx file to see which shaders exist. In particular, aFlags should
- * include any combination of the 0x20 bit = 0 flags OR one of the 0x20 bit = 1
- * flags. Mask flags can be used in either case.
- */
- ID3D10EffectTechnique* SelectShader(uint8_t aFlags);
- const static uint8_t SHADER_NO_MASK = 0;
- const static uint8_t SHADER_MASK = 0x1;
- const static uint8_t SHADER_MASK_3D = 0x2;
- // 0x20 bit = 0
- const static uint8_t SHADER_RGB = 0;
- const static uint8_t SHADER_RGBA = 0x4;
- const static uint8_t SHADER_NON_PREMUL = 0;
- const static uint8_t SHADER_PREMUL = 0x8;
- const static uint8_t SHADER_LINEAR = 0;
- const static uint8_t SHADER_POINT = 0x10;
- // 0x20 bit = 1
- const static uint8_t SHADER_YCBCR = 0x20;
- const static uint8_t SHADER_COMPONENT_ALPHA = 0x24;
- const static uint8_t SHADER_SOLID = 0x28;
-
- LayerManagerD3D10 *mD3DManager;
-};
-
-} /* layers */
-} /* mozilla */
-
-#endif /* GFX_LAYERMANAGERD3D9_H */
diff --git a/gfx/layers/d3d10/LayerManagerD3D10Effect.h b/gfx/layers/d3d10/LayerManagerD3D10Effect.h
deleted file mode 100644
index fa8de1cb7ad8..000000000000
--- a/gfx/layers/d3d10/LayerManagerD3D10Effect.h
+++ /dev/null
@@ -1,17658 +0,0 @@
-#if 0
-//
-// FX Version: fx_4_0
-// Child effect (requires effect pool): false
-//
-// 3 local buffer(s)
-//
-cbuffer PerLayer
-{
- float4 vTextureCoords; // Offset: 0, size: 16
- float4 vLayerQuad; // Offset: 16, size: 16
- float4 vMaskQuad; // Offset: 32, size: 16
- float fLayerOpacity; // Offset: 48, size: 4
- float4x4 mLayerTransform; // Offset: 64, size: 64
-}
-
-cbuffer PerOccasionalLayer
-{
- float4 vRenderTargetOffset; // Offset: 0, size: 16
- float4 fLayerColor; // Offset: 16, size: 16
-}
-
-cbuffer PerLayerManager
-{
- float4x4 mProjection; // Offset: 0, size: 64
-}
-
-//
-// 13 local object(s)
-//
-BlendState Premul
-{
- AlphaToCoverageEnable = bool(FALSE /* 0 */);
- BlendEnable[0] = bool(TRUE /* 1 */);
- SrcBlend[0] = uint(ONE /* 2 */);
- DestBlend[0] = uint(INV_SRC_ALPHA /* 6 */);
- BlendOp[0] = uint(ADD /* 1 */);
- SrcBlendAlpha[0] = uint(ONE /* 2 */);
- DestBlendAlpha[0] = uint(INV_SRC_ALPHA /* 6 */);
- BlendOpAlpha[0] = uint(ADD /* 1 */);
- RenderTargetWriteMask[0] = byte(0x0f);
-};
-BlendState NonPremul
-{
- AlphaToCoverageEnable = bool(FALSE /* 0 */);
- BlendEnable[0] = bool(TRUE /* 1 */);
- SrcBlend[0] = uint(SRC_ALPHA /* 5 */);
- DestBlend[0] = uint(INV_SRC_ALPHA /* 6 */);
- BlendOp[0] = uint(ADD /* 1 */);
- SrcBlendAlpha[0] = uint(ONE /* 2 */);
- DestBlendAlpha[0] = uint(INV_SRC_ALPHA /* 6 */);
- BlendOpAlpha[0] = uint(ADD /* 1 */);
- RenderTargetWriteMask[0] = byte(0x0f);
-};
-BlendState NoBlendDual
-{
- AlphaToCoverageEnable = bool(FALSE /* 0 */);
- BlendEnable[0] = bool(FALSE /* 0 */);
- BlendEnable[1] = bool(FALSE /* 0 */);
- RenderTargetWriteMask[0] = byte(0x0f);
- RenderTargetWriteMask[1] = byte(0x0f);
-};
-BlendState ComponentAlphaBlend
-{
- AlphaToCoverageEnable = bool(FALSE /* 0 */);
- BlendEnable[0] = bool(TRUE /* 1 */);
- SrcBlend[0] = uint(ONE /* 2 */);
- DestBlend[0] = uint(INV_SRC1_COLOR /* 17 */);
- BlendOp[0] = uint(ADD /* 1 */);
- SrcBlendAlpha[0] = uint(ONE /* 2 */);
- DestBlendAlpha[0] = uint(INV_SRC_ALPHA /* 6 */);
- BlendOpAlpha[0] = uint(ADD /* 1 */);
- RenderTargetWriteMask[0] = byte(0x0f);
-};
-RasterizerState LayerRast
-{
- ScissorEnable = bool(TRUE /* 1 */);
- CullMode = uint(NONE /* 1 */);
-};
-Texture2D tRGB;
-Texture2D tY;
-Texture2D tCb;
-Texture2D tCr;
-Texture2D tRGBWhite;
-Texture2D tMask;
-SamplerState LayerTextureSamplerLinear
-{
- Filter = uint(MIN_MAG_MIP_LINEAR /* 21 */);
- AddressU = uint(CLAMP /* 3 */);
- AddressV = uint(CLAMP /* 3 */);
-};
-SamplerState LayerTextureSamplerPoint
-{
- Filter = uint(MIN_MAG_MIP_POINT /* 0 */);
- AddressU = uint(CLAMP /* 3 */);
- AddressV = uint(CLAMP /* 3 */);
-};
-
-//
-// 21 technique(s)
-//
-technique10 RenderRGBLayerPremul
-{
- pass P0
- {
- RasterizerState = LayerRast;
- AB_BlendFactor = float4(0, 0, 0, 0);
- AB_SampleMask = uint(0xffffffff);
- BlendState = Premul;
- VertexShader = asm {
- //
- // Generated by Microsoft (R) HLSL Shader Compiler 6.3.9600.16384
- //
- //
- // Buffer Definitions:
- //
- // cbuffer PerLayer
- // {
- //
- // float4 vTextureCoords; // Offset: 0 Size: 16
- // float4 vLayerQuad; // Offset: 16 Size: 16
- // float4 vMaskQuad; // Offset: 32 Size: 16 [unused]
- // float fLayerOpacity; // Offset: 48 Size: 4 [unused]
- // float4x4 mLayerTransform; // Offset: 64 Size: 64
- //
- // }
- //
- // cbuffer PerOccasionalLayer
- // {
- //
- // float4 vRenderTargetOffset; // Offset: 0 Size: 16
- // float4 fLayerColor; // Offset: 16 Size: 16 [unused]
- //
- // }
- //
- // cbuffer PerLayerManager
- // {
- //
- // float4x4 mProjection; // Offset: 0 Size: 64
- //
- // }
- //
- //
- // Resource Bindings:
- //
- // Name Type Format Dim Slot Elements
- // ------------------------------ ---------- ------- ----------- ---- --------
- // PerLayer cbuffer NA NA 0 1
- // PerOccasionalLayer cbuffer NA NA 1 1
- // PerLayerManager cbuffer NA NA 2 1
- //
- //
- //
- // Input signature:
- //
- // Name Index Mask Register SysValue Format Used
- // -------------------- ----- ------ -------- -------- ------- ------
- // POSITION 0 xy 0 NONE float xy
- //
- //
- // Output signature:
- //
- // Name Index Mask Register SysValue Format Used
- // -------------------- ----- ------ -------- -------- ------- ------
- // SV_Position 0 xyzw 0 POS float xyzw
- // TEXCOORD 0 xy 1 NONE float xy
- //
- //
- // Constant buffer to DX9 shader constant mappings:
- //
- // Target Reg Buffer Start Reg # of Regs Data Conversion
- // ---------- ------- --------- --------- ----------------------
- // c1 cb0 0 2 ( FLT, FLT, FLT, FLT)
- // c3 cb0 4 2 ( FLT, FLT, FLT, FLT)
- // c5 cb0 7 1 ( FLT, FLT, FLT, FLT)
- // c6 cb1 0 1 ( FLT, FLT, FLT, FLT)
- // c7 cb2 0 4 ( FLT, FLT, FLT, FLT)
- //
- //
- // Runtime generated constant mappings:
- //
- // Target Reg Constant Description
- // ---------- --------------------------------------------------
- // c0 Vertex Shader position offset
- //
- //
- // Level9 shader bytecode:
- //
- vs_2_x
- dcl_texcoord v0
- mad oT0.xy, v0, c1.zwzw, c1
- mad r0.xy, v0, c2.zwzw, c2
- mul r1, r0.y, c4
- mad r0, c3, r0.x, r1
- add r0, r0, c5
- rcp r1.x, r0.w
- mul r0.xyz, r0, r1.x
- add r0, r0, -c6
- mul r0.xyz, r0.w, r0
- mul r1, r0.y, c8
- mad r1, c7, r0.x, r1
- mad r1, c9, r0.z, r1
- mad r0, c10, r0.w, r1
- mad oPos.xy, r0.w, c0, r0
- mov oPos.zw, r0
-
- // approximately 15 instruction slots used
- vs_4_0
- dcl_constantbuffer cb0[8], immediateIndexed
- dcl_constantbuffer cb1[1], immediateIndexed
- dcl_constantbuffer cb2[4], immediateIndexed
- dcl_input v0.xy
- dcl_output_siv o0.xyzw, position
- dcl_output o1.xy
- dcl_temps 2
- mad r0.xy, v0.xyxx, cb0[1].zwzz, cb0[1].xyxx
- mul r1.xyzw, r0.yyyy, cb0[5].xyzw
- mad r0.xyzw, cb0[4].xyzw, r0.xxxx, r1.xyzw
- add r0.xyzw, r0.xyzw, cb0[7].xyzw
- div r0.xyz, r0.xyzx, r0.wwww
- add r0.xyzw, r0.xyzw, -cb1[0].xyzw
- mul r0.xyz, r0.wwww, r0.xyzx
- mul r1.xyzw, r0.yyyy, cb2[1].xyzw
- mad r1.xyzw, cb2[0].xyzw, r0.xxxx, r1.xyzw
- mad r1.xyzw, cb2[2].xyzw, r0.zzzz, r1.xyzw
- mad o0.xyzw, cb2[3].xyzw, r0.wwww, r1.xyzw
- mad o1.xy, v0.xyxx, cb0[0].zwzz, cb0[0].xyxx
- ret
- // Approximately 13 instruction slots used
-
- };
- GeometryShader = NULL;
- PixelShader = asm {
- //
- // Generated by Microsoft (R) HLSL Shader Compiler 6.3.9600.16384
- //
- //
- // Buffer Definitions:
- //
- // cbuffer PerLayer
- // {
- //
- // float4 vTextureCoords; // Offset: 0 Size: 16 [unused]
- // float4 vLayerQuad; // Offset: 16 Size: 16 [unused]
- // float4 vMaskQuad; // Offset: 32 Size: 16 [unused]
- // float fLayerOpacity; // Offset: 48 Size: 4
- // float4x4 mLayerTransform; // Offset: 64 Size: 64 [unused]
- //
- // }
- //
- //
- // Resource Bindings:
- //
- // Name Type Format Dim Slot Elements
- // ------------------------------ ---------- ------- ----------- ---- --------
- // LayerTextureSamplerLinear sampler NA NA 0 1
- // tRGB texture float4 2d 0 1
- // PerLayer cbuffer NA NA 0 1
- //
- //
- //
- // Input signature:
- //
- // Name Index Mask Register SysValue Format Used
- // -------------------- ----- ------ -------- -------- ------- ------
- // SV_Position 0 xyzw 0 POS float
- // TEXCOORD 0 xy 1 NONE float xy
- //
- //
- // Output signature:
- //
- // Name Index Mask Register SysValue Format Used
- // -------------------- ----- ------ -------- -------- ------- ------
- // SV_Target 0 xyzw 0 TARGET float xyzw
- //
- //
- // Constant buffer to DX9 shader constant mappings:
- //
- // Target Reg Buffer Start Reg # of Regs Data Conversion
- // ---------- ------- --------- --------- ----------------------
- // c0 cb0 3 1 ( FLT, FLT, FLT, FLT)
- //
- //
- // Sampler/Resource to DX9 shader sampler mappings:
- //
- // Target Sampler Source Sampler Source Resource
- // -------------- --------------- ----------------
- // s0 s0 t0
- //
- //
- // Level9 shader bytecode:
- //
- ps_2_x
- dcl t0.xy
- dcl_2d s0
- texld r0, t0, s0
- mul r0.xyz, r0, c0.x
- mov r0.w, c0.x
- mov oC0, r0
-
- // approximately 4 instruction slots used (1 texture, 3 arithmetic)
- ps_4_0
- dcl_constantbuffer cb0[4], immediateIndexed
- dcl_sampler s0, mode_default
- dcl_resource_texture2d (float,float,float,float) t0
- dcl_input_ps linear v1.xy
- dcl_output o0.xyzw
- dcl_temps 1
- sample r0.xyzw, v1.xyxx, t0.xyzw, s0
- mul o0.xyz, r0.xyzx, cb0[3].xxxx
- mov o0.w, cb0[3].x
- ret
- // Approximately 4 instruction slots used
-
- };
- }
-
-}
-
-technique10 RenderRGBLayerPremulPoint
-{
- pass P0
- {
- RasterizerState = LayerRast;
- AB_BlendFactor = float4(0, 0, 0, 0);
- AB_SampleMask = uint(0xffffffff);
- BlendState = Premul;
- VertexShader = asm {
- //
- // Generated by Microsoft (R) HLSL Shader Compiler 6.3.9600.16384
- //
- //
- // Buffer Definitions:
- //
- // cbuffer PerLayer
- // {
- //
- // float4 vTextureCoords; // Offset: 0 Size: 16
- // float4 vLayerQuad; // Offset: 16 Size: 16
- // float4 vMaskQuad; // Offset: 32 Size: 16 [unused]
- // float fLayerOpacity; // Offset: 48 Size: 4 [unused]
- // float4x4 mLayerTransform; // Offset: 64 Size: 64
- //
- // }
- //
- // cbuffer PerOccasionalLayer
- // {
- //
- // float4 vRenderTargetOffset; // Offset: 0 Size: 16
- // float4 fLayerColor; // Offset: 16 Size: 16 [unused]
- //
- // }
- //
- // cbuffer PerLayerManager
- // {
- //
- // float4x4 mProjection; // Offset: 0 Size: 64
- //
- // }
- //
- //
- // Resource Bindings:
- //
- // Name Type Format Dim Slot Elements
- // ------------------------------ ---------- ------- ----------- ---- --------
- // PerLayer cbuffer NA NA 0 1
- // PerOccasionalLayer cbuffer NA NA 1 1
- // PerLayerManager cbuffer NA NA 2 1
- //
- //
- //
- // Input signature:
- //
- // Name Index Mask Register SysValue Format Used
- // -------------------- ----- ------ -------- -------- ------- ------
- // POSITION 0 xy 0 NONE float xy
- //
- //
- // Output signature:
- //
- // Name Index Mask Register SysValue Format Used
- // -------------------- ----- ------ -------- -------- ------- ------
- // SV_Position 0 xyzw 0 POS float xyzw
- // TEXCOORD 0 xy 1 NONE float xy
- //
- //
- // Constant buffer to DX9 shader constant mappings:
- //
- // Target Reg Buffer Start Reg # of Regs Data Conversion
- // ---------- ------- --------- --------- ----------------------
- // c1 cb0 0 2 ( FLT, FLT, FLT, FLT)
- // c3 cb0 4 2 ( FLT, FLT, FLT, FLT)
- // c5 cb0 7 1 ( FLT, FLT, FLT, FLT)
- // c6 cb1 0 1 ( FLT, FLT, FLT, FLT)
- // c7 cb2 0 4 ( FLT, FLT, FLT, FLT)
- //
- //
- // Runtime generated constant mappings:
- //
- // Target Reg Constant Description
- // ---------- --------------------------------------------------
- // c0 Vertex Shader position offset
- //
- //
- // Level9 shader bytecode:
- //
- vs_2_x
- dcl_texcoord v0
- mad oT0.xy, v0, c1.zwzw, c1
- mad r0.xy, v0, c2.zwzw, c2
- mul r1, r0.y, c4
- mad r0, c3, r0.x, r1
- add r0, r0, c5
- rcp r1.x, r0.w
- mul r0.xyz, r0, r1.x
- add r0, r0, -c6
- mul r0.xyz, r0.w, r0
- mul r1, r0.y, c8
- mad r1, c7, r0.x, r1
- mad r1, c9, r0.z, r1
- mad r0, c10, r0.w, r1
- mad oPos.xy, r0.w, c0, r0
- mov oPos.zw, r0
-
- // approximately 15 instruction slots used
- vs_4_0
- dcl_constantbuffer cb0[8], immediateIndexed
- dcl_constantbuffer cb1[1], immediateIndexed
- dcl_constantbuffer cb2[4], immediateIndexed
- dcl_input v0.xy
- dcl_output_siv o0.xyzw, position
- dcl_output o1.xy
- dcl_temps 2
- mad r0.xy, v0.xyxx, cb0[1].zwzz, cb0[1].xyxx
- mul r1.xyzw, r0.yyyy, cb0[5].xyzw
- mad r0.xyzw, cb0[4].xyzw, r0.xxxx, r1.xyzw
- add r0.xyzw, r0.xyzw, cb0[7].xyzw
- div r0.xyz, r0.xyzx, r0.wwww
- add r0.xyzw, r0.xyzw, -cb1[0].xyzw
- mul r0.xyz, r0.wwww, r0.xyzx
- mul r1.xyzw, r0.yyyy, cb2[1].xyzw
- mad r1.xyzw, cb2[0].xyzw, r0.xxxx, r1.xyzw
- mad r1.xyzw, cb2[2].xyzw, r0.zzzz, r1.xyzw
- mad o0.xyzw, cb2[3].xyzw, r0.wwww, r1.xyzw
- mad o1.xy, v0.xyxx, cb0[0].zwzz, cb0[0].xyxx
- ret
- // Approximately 13 instruction slots used
-
- };
- GeometryShader = NULL;
- PixelShader = asm {
- //
- // Generated by Microsoft (R) HLSL Shader Compiler 6.3.9600.16384
- //
- //
- // Buffer Definitions:
- //
- // cbuffer PerLayer
- // {
- //
- // float4 vTextureCoords; // Offset: 0 Size: 16 [unused]
- // float4 vLayerQuad; // Offset: 16 Size: 16 [unused]
- // float4 vMaskQuad; // Offset: 32 Size: 16 [unused]
- // float fLayerOpacity; // Offset: 48 Size: 4
- // float4x4 mLayerTransform; // Offset: 64 Size: 64 [unused]
- //
- // }
- //
- //
- // Resource Bindings:
- //
- // Name Type Format Dim Slot Elements
- // ------------------------------ ---------- ------- ----------- ---- --------
- // LayerTextureSamplerPoint sampler NA NA 0 1
- // tRGB texture float4 2d 0 1
- // PerLayer cbuffer NA NA 0 1
- //
- //
- //
- // Input signature:
- //
- // Name Index Mask Register SysValue Format Used
- // -------------------- ----- ------ -------- -------- ------- ------
- // SV_Position 0 xyzw 0 POS float
- // TEXCOORD 0 xy 1 NONE float xy
- //
- //
- // Output signature:
- //
- // Name Index Mask Register SysValue Format Used
- // -------------------- ----- ------ -------- -------- ------- ------
- // SV_Target 0 xyzw 0 TARGET float xyzw
- //
- //
- // Constant buffer to DX9 shader constant mappings:
- //
- // Target Reg Buffer Start Reg # of Regs Data Conversion
- // ---------- ------- --------- --------- ----------------------
- // c0 cb0 3 1 ( FLT, FLT, FLT, FLT)
- //
- //
- // Sampler/Resource to DX9 shader sampler mappings:
- //
- // Target Sampler Source Sampler Source Resource
- // -------------- --------------- ----------------
- // s0 s0 t0
- //
- //
- // Level9 shader bytecode:
- //
- ps_2_x
- dcl t0.xy
- dcl_2d s0
- texld r0, t0, s0
- mul r0.xyz, r0, c0.x
- mov r0.w, c0.x
- mov oC0, r0
-
- // approximately 4 instruction slots used (1 texture, 3 arithmetic)
- ps_4_0
- dcl_constantbuffer cb0[4], immediateIndexed
- dcl_sampler s0, mode_default
- dcl_resource_texture2d (float,float,float,float) t0
- dcl_input_ps linear v1.xy
- dcl_output o0.xyzw
- dcl_temps 1
- sample r0.xyzw, v1.xyxx, t0.xyzw, s0
- mul o0.xyz, r0.xyzx, cb0[3].xxxx
- mov o0.w, cb0[3].x
- ret
- // Approximately 4 instruction slots used
-
- };
- }
-
-}
-
-technique10 RenderRGBALayerPremul
-{
- pass P0
- {
- RasterizerState = LayerRast;
- AB_BlendFactor = float4(0, 0, 0, 0);
- AB_SampleMask = uint(0xffffffff);
- BlendState = Premul;
- VertexShader = asm {
- //
- // Generated by Microsoft (R) HLSL Shader Compiler 6.3.9600.16384
- //
- //
- // Buffer Definitions:
- //
- // cbuffer PerLayer
- // {
- //
- // float4 vTextureCoords; // Offset: 0 Size: 16
- // float4 vLayerQuad; // Offset: 16 Size: 16
- // float4 vMaskQuad; // Offset: 32 Size: 16 [unused]
- // float fLayerOpacity; // Offset: 48 Size: 4 [unused]
- // float4x4 mLayerTransform; // Offset: 64 Size: 64
- //
- // }
- //
- // cbuffer PerOccasionalLayer
- // {
- //
- // float4 vRenderTargetOffset; // Offset: 0 Size: 16
- // float4 fLayerColor; // Offset: 16 Size: 16 [unused]
- //
- // }
- //
- // cbuffer PerLayerManager
- // {
- //
- // float4x4 mProjection; // Offset: 0 Size: 64
- //
- // }
- //
- //
- // Resource Bindings:
- //
- // Name Type Format Dim Slot Elements
- // ------------------------------ ---------- ------- ----------- ---- --------
- // PerLayer cbuffer NA NA 0 1
- // PerOccasionalLayer cbuffer NA NA 1 1
- // PerLayerManager cbuffer NA NA 2 1
- //
- //
- //
- // Input signature:
- //
- // Name Index Mask Register SysValue Format Used
- // -------------------- ----- ------ -------- -------- ------- ------
- // POSITION 0 xy 0 NONE float xy
- //
- //
- // Output signature:
- //
- // Name Index Mask Register SysValue Format Used
- // -------------------- ----- ------ -------- -------- ------- ------
- // SV_Position 0 xyzw 0 POS float xyzw
- // TEXCOORD 0 xy 1 NONE float xy
- //
- //
- // Constant buffer to DX9 shader constant mappings:
- //
- // Target Reg Buffer Start Reg # of Regs Data Conversion
- // ---------- ------- --------- --------- ----------------------
- // c1 cb0 0 2 ( FLT, FLT, FLT, FLT)
- // c3 cb0 4 2 ( FLT, FLT, FLT, FLT)
- // c5 cb0 7 1 ( FLT, FLT, FLT, FLT)
- // c6 cb1 0 1 ( FLT, FLT, FLT, FLT)
- // c7 cb2 0 4 ( FLT, FLT, FLT, FLT)
- //
- //
- // Runtime generated constant mappings:
- //
- // Target Reg Constant Description
- // ---------- --------------------------------------------------
- // c0 Vertex Shader position offset
- //
- //
- // Level9 shader bytecode:
- //
- vs_2_x
- dcl_texcoord v0
- mad oT0.xy, v0, c1.zwzw, c1
- mad r0.xy, v0, c2.zwzw, c2
- mul r1, r0.y, c4
- mad r0, c3, r0.x, r1
- add r0, r0, c5
- rcp r1.x, r0.w
- mul r0.xyz, r0, r1.x
- add r0, r0, -c6
- mul r0.xyz, r0.w, r0
- mul r1, r0.y, c8
- mad r1, c7, r0.x, r1
- mad r1, c9, r0.z, r1
- mad r0, c10, r0.w, r1
- mad oPos.xy, r0.w, c0, r0
- mov oPos.zw, r0
-
- // approximately 15 instruction slots used
- vs_4_0
- dcl_constantbuffer cb0[8], immediateIndexed
- dcl_constantbuffer cb1[1], immediateIndexed
- dcl_constantbuffer cb2[4], immediateIndexed
- dcl_input v0.xy
- dcl_output_siv o0.xyzw, position
- dcl_output o1.xy
- dcl_temps 2
- mad r0.xy, v0.xyxx, cb0[1].zwzz, cb0[1].xyxx
- mul r1.xyzw, r0.yyyy, cb0[5].xyzw
- mad r0.xyzw, cb0[4].xyzw, r0.xxxx, r1.xyzw
- add r0.xyzw, r0.xyzw, cb0[7].xyzw
- div r0.xyz, r0.xyzx, r0.wwww
- add r0.xyzw, r0.xyzw, -cb1[0].xyzw
- mul r0.xyz, r0.wwww, r0.xyzx
- mul r1.xyzw, r0.yyyy, cb2[1].xyzw
- mad r1.xyzw, cb2[0].xyzw, r0.xxxx, r1.xyzw
- mad r1.xyzw, cb2[2].xyzw, r0.zzzz, r1.xyzw
- mad o0.xyzw, cb2[3].xyzw, r0.wwww, r1.xyzw
- mad o1.xy, v0.xyxx, cb0[0].zwzz, cb0[0].xyxx
- ret
- // Approximately 13 instruction slots used
-
- };
- GeometryShader = NULL;
- PixelShader = asm {
- //
- // Generated by Microsoft (R) HLSL Shader Compiler 6.3.9600.16384
- //
- //
- // Buffer Definitions:
- //
- // cbuffer PerLayer
- // {
- //
- // float4 vTextureCoords; // Offset: 0 Size: 16 [unused]
- // float4 vLayerQuad; // Offset: 16 Size: 16 [unused]
- // float4 vMaskQuad; // Offset: 32 Size: 16 [unused]
- // float fLayerOpacity; // Offset: 48 Size: 4
- // float4x4 mLayerTransform; // Offset: 64 Size: 64 [unused]
- //
- // }
- //
- //
- // Resource Bindings:
- //
- // Name Type Format Dim Slot Elements
- // ------------------------------ ---------- ------- ----------- ---- --------
- // LayerTextureSamplerLinear sampler NA NA 0 1
- // tRGB texture float4 2d 0 1
- // PerLayer cbuffer NA NA 0 1
- //
- //
- //
- // Input signature:
- //
- // Name Index Mask Register SysValue Format Used
- // -------------------- ----- ------ -------- -------- ------- ------
- // SV_Position 0 xyzw 0 POS float
- // TEXCOORD 0 xy 1 NONE float xy
- //
- //
- // Output signature:
- //
- // Name Index Mask Register SysValue Format Used
- // -------------------- ----- ------ -------- -------- ------- ------
- // SV_Target 0 xyzw 0 TARGET float xyzw
- //
- //
- // Constant buffer to DX9 shader constant mappings:
- //
- // Target Reg Buffer Start Reg # of Regs Data Conversion
- // ---------- ------- --------- --------- ----------------------
- // c0 cb0 3 1 ( FLT, FLT, FLT, FLT)
- //
- //
- // Sampler/Resource to DX9 shader sampler mappings:
- //
- // Target Sampler Source Sampler Source Resource
- // -------------- --------------- ----------------
- // s0 s0 t0
- //
- //
- // Level9 shader bytecode:
- //
- ps_2_x
- dcl t0.xy
- dcl_2d s0
- texld r0, t0, s0
- mul r0, r0, c0.x
- mov oC0, r0
-
- // approximately 3 instruction slots used (1 texture, 2 arithmetic)
- ps_4_0
- dcl_constantbuffer cb0[4], immediateIndexed
- dcl_sampler s0, mode_default
- dcl_resource_texture2d (float,float,float,float) t0
- dcl_input_ps linear v1.xy
- dcl_output o0.xyzw
- dcl_temps 1
- sample r0.xyzw, v1.xyxx, t0.xyzw, s0
- mul o0.xyzw, r0.xyzw, cb0[3].xxxx
- ret
- // Approximately 3 instruction slots used
-
- };
- }
-
-}
-
-technique10 RenderRGBALayerNonPremul
-{
- pass P0
- {
- RasterizerState = LayerRast;
- AB_BlendFactor = float4(0, 0, 0, 0);
- AB_SampleMask = uint(0xffffffff);
- BlendState = NonPremul;
- VertexShader = asm {
- //
- // Generated by Microsoft (R) HLSL Shader Compiler 6.3.9600.16384
- //
- //
- // Buffer Definitions:
- //
- // cbuffer PerLayer
- // {
- //
- // float4 vTextureCoords; // Offset: 0 Size: 16
- // float4 vLayerQuad; // Offset: 16 Size: 16
- // float4 vMaskQuad; // Offset: 32 Size: 16 [unused]
- // float fLayerOpacity; // Offset: 48 Size: 4 [unused]
- // float4x4 mLayerTransform; // Offset: 64 Size: 64
- //
- // }
- //
- // cbuffer PerOccasionalLayer
- // {
- //
- // float4 vRenderTargetOffset; // Offset: 0 Size: 16
- // float4 fLayerColor; // Offset: 16 Size: 16 [unused]
- //
- // }
- //
- // cbuffer PerLayerManager
- // {
- //
- // float4x4 mProjection; // Offset: 0 Size: 64
- //
- // }
- //
- //
- // Resource Bindings:
- //
- // Name Type Format Dim Slot Elements
- // ------------------------------ ---------- ------- ----------- ---- --------
- // PerLayer cbuffer NA NA 0 1
- // PerOccasionalLayer cbuffer NA NA 1 1
- // PerLayerManager cbuffer NA NA 2 1
- //
- //
- //
- // Input signature:
- //
- // Name Index Mask Register SysValue Format Used
- // -------------------- ----- ------ -------- -------- ------- ------
- // POSITION 0 xy 0 NONE float xy
- //
- //
- // Output signature:
- //
- // Name Index Mask Register SysValue Format Used
- // -------------------- ----- ------ -------- -------- ------- ------
- // SV_Position 0 xyzw 0 POS float xyzw
- // TEXCOORD 0 xy 1 NONE float xy
- //
- //
- // Constant buffer to DX9 shader constant mappings:
- //
- // Target Reg Buffer Start Reg # of Regs Data Conversion
- // ---------- ------- --------- --------- ----------------------
- // c1 cb0 0 2 ( FLT, FLT, FLT, FLT)
- // c3 cb0 4 2 ( FLT, FLT, FLT, FLT)
- // c5 cb0 7 1 ( FLT, FLT, FLT, FLT)
- // c6 cb1 0 1 ( FLT, FLT, FLT, FLT)
- // c7 cb2 0 4 ( FLT, FLT, FLT, FLT)
- //
- //
- // Runtime generated constant mappings:
- //
- // Target Reg Constant Description
- // ---------- --------------------------------------------------
- // c0 Vertex Shader position offset
- //
- //
- // Level9 shader bytecode:
- //
- vs_2_x
- dcl_texcoord v0
- mad oT0.xy, v0, c1.zwzw, c1
- mad r0.xy, v0, c2.zwzw, c2
- mul r1, r0.y, c4
- mad r0, c3, r0.x, r1
- add r0, r0, c5
- rcp r1.x, r0.w
- mul r0.xyz, r0, r1.x
- add r0, r0, -c6
- mul r0.xyz, r0.w, r0
- mul r1, r0.y, c8
- mad r1, c7, r0.x, r1
- mad r1, c9, r0.z, r1
- mad r0, c10, r0.w, r1
- mad oPos.xy, r0.w, c0, r0
- mov oPos.zw, r0
-
- // approximately 15 instruction slots used
- vs_4_0
- dcl_constantbuffer cb0[8], immediateIndexed
- dcl_constantbuffer cb1[1], immediateIndexed
- dcl_constantbuffer cb2[4], immediateIndexed
- dcl_input v0.xy
- dcl_output_siv o0.xyzw, position
- dcl_output o1.xy
- dcl_temps 2
- mad r0.xy, v0.xyxx, cb0[1].zwzz, cb0[1].xyxx
- mul r1.xyzw, r0.yyyy, cb0[5].xyzw
- mad r0.xyzw, cb0[4].xyzw, r0.xxxx, r1.xyzw
- add r0.xyzw, r0.xyzw, cb0[7].xyzw
- div r0.xyz, r0.xyzx, r0.wwww
- add r0.xyzw, r0.xyzw, -cb1[0].xyzw
- mul r0.xyz, r0.wwww, r0.xyzx
- mul r1.xyzw, r0.yyyy, cb2[1].xyzw
- mad r1.xyzw, cb2[0].xyzw, r0.xxxx, r1.xyzw
- mad r1.xyzw, cb2[2].xyzw, r0.zzzz, r1.xyzw
- mad o0.xyzw, cb2[3].xyzw, r0.wwww, r1.xyzw
- mad o1.xy, v0.xyxx, cb0[0].zwzz, cb0[0].xyxx
- ret
- // Approximately 13 instruction slots used
-
- };
- GeometryShader = NULL;
- PixelShader = asm {
- //
- // Generated by Microsoft (R) HLSL Shader Compiler 6.3.9600.16384
- //
- //
- // Buffer Definitions:
- //
- // cbuffer PerLayer
- // {
- //
- // float4 vTextureCoords; // Offset: 0 Size: 16 [unused]
- // float4 vLayerQuad; // Offset: 16 Size: 16 [unused]
- // float4 vMaskQuad; // Offset: 32 Size: 16 [unused]
- // float fLayerOpacity; // Offset: 48 Size: 4
- // float4x4 mLayerTransform; // Offset: 64 Size: 64 [unused]
- //
- // }
- //
- //
- // Resource Bindings:
- //
- // Name Type Format Dim Slot Elements
- // ------------------------------ ---------- ------- ----------- ---- --------
- // LayerTextureSamplerLinear sampler NA NA 0 1
- // tRGB texture float4 2d 0 1
- // PerLayer cbuffer NA NA 0 1
- //
- //
- //
- // Input signature:
- //
- // Name Index Mask Register SysValue Format Used
- // -------------------- ----- ------ -------- -------- ------- ------
- // SV_Position 0 xyzw 0 POS float
- // TEXCOORD 0 xy 1 NONE float xy
- //
- //
- // Output signature:
- //
- // Name Index Mask Register SysValue Format Used
- // -------------------- ----- ------ -------- -------- ------- ------
- // SV_Target 0 xyzw 0 TARGET float xyzw
- //
- //
- // Constant buffer to DX9 shader constant mappings:
- //
- // Target Reg Buffer Start Reg # of Regs Data Conversion
- // ---------- ------- --------- --------- ----------------------
- // c0 cb0 3 1 ( FLT, FLT, FLT, FLT)
- //
- //
- // Sampler/Resource to DX9 shader sampler mappings:
- //
- // Target Sampler Source Sampler Source Resource
- // -------------- --------------- ----------------
- // s0 s0 t0
- //
- //
- // Level9 shader bytecode:
- //
- ps_2_x
- dcl t0.xy
- dcl_2d s0
- texld r0, t0, s0
- mul r0, r0, c0.x
- mov oC0, r0
-
- // approximately 3 instruction slots used (1 texture, 2 arithmetic)
- ps_4_0
- dcl_constantbuffer cb0[4], immediateIndexed
- dcl_sampler s0, mode_default
- dcl_resource_texture2d (float,float,float,float) t0
- dcl_input_ps linear v1.xy
- dcl_output o0.xyzw
- dcl_temps 1
- sample r0.xyzw, v1.xyxx, t0.xyzw, s0
- mul o0.xyzw, r0.xyzw, cb0[3].xxxx
- ret
- // Approximately 3 instruction slots used
-
- };
- }
-
-}
-
-technique10 RenderRGBALayerPremulPoint
-{
- pass P0
- {
- RasterizerState = LayerRast;
- AB_BlendFactor = float4(0, 0, 0, 0);
- AB_SampleMask = uint(0xffffffff);
- BlendState = Premul;
- VertexShader = asm {
- //
- // Generated by Microsoft (R) HLSL Shader Compiler 6.3.9600.16384
- //
- //
- // Buffer Definitions:
- //
- // cbuffer PerLayer
- // {
- //
- // float4 vTextureCoords; // Offset: 0 Size: 16
- // float4 vLayerQuad; // Offset: 16 Size: 16
- // float4 vMaskQuad; // Offset: 32 Size: 16 [unused]
- // float fLayerOpacity; // Offset: 48 Size: 4 [unused]
- // float4x4 mLayerTransform; // Offset: 64 Size: 64
- //
- // }
- //
- // cbuffer PerOccasionalLayer
- // {
- //
- // float4 vRenderTargetOffset; // Offset: 0 Size: 16
- // float4 fLayerColor; // Offset: 16 Size: 16 [unused]
- //
- // }
- //
- // cbuffer PerLayerManager
- // {
- //
- // float4x4 mProjection; // Offset: 0 Size: 64
- //
- // }
- //
- //
- // Resource Bindings:
- //
- // Name Type Format Dim Slot Elements
- // ------------------------------ ---------- ------- ----------- ---- --------
- // PerLayer cbuffer NA NA 0 1
- // PerOccasionalLayer cbuffer NA NA 1 1
- // PerLayerManager cbuffer NA NA 2 1
- //
- //
- //
- // Input signature:
- //
- // Name Index Mask Register SysValue Format Used
- // -------------------- ----- ------ -------- -------- ------- ------
- // POSITION 0 xy 0 NONE float xy
- //
- //
- // Output signature:
- //
- // Name Index Mask Register SysValue Format Used
- // -------------------- ----- ------ -------- -------- ------- ------
- // SV_Position 0 xyzw 0 POS float xyzw
- // TEXCOORD 0 xy 1 NONE float xy
- //
- //
- // Constant buffer to DX9 shader constant mappings:
- //
- // Target Reg Buffer Start Reg # of Regs Data Conversion
- // ---------- ------- --------- --------- ----------------------
- // c1 cb0 0 2 ( FLT, FLT, FLT, FLT)
- // c3 cb0 4 2 ( FLT, FLT, FLT, FLT)
- // c5 cb0 7 1 ( FLT, FLT, FLT, FLT)
- // c6 cb1 0 1 ( FLT, FLT, FLT, FLT)
- // c7 cb2 0 4 ( FLT, FLT, FLT, FLT)
- //
- //
- // Runtime generated constant mappings:
- //
- // Target Reg Constant Description
- // ---------- --------------------------------------------------
- // c0 Vertex Shader position offset
- //
- //
- // Level9 shader bytecode:
- //
- vs_2_x
- dcl_texcoord v0
- mad oT0.xy, v0, c1.zwzw, c1
- mad r0.xy, v0, c2.zwzw, c2
- mul r1, r0.y, c4
- mad r0, c3, r0.x, r1
- add r0, r0, c5
- rcp r1.x, r0.w
- mul r0.xyz, r0, r1.x
- add r0, r0, -c6
- mul r0.xyz, r0.w, r0
- mul r1, r0.y, c8
- mad r1, c7, r0.x, r1
- mad r1, c9, r0.z, r1
- mad r0, c10, r0.w, r1
- mad oPos.xy, r0.w, c0, r0
- mov oPos.zw, r0
-
- // approximately 15 instruction slots used
- vs_4_0
- dcl_constantbuffer cb0[8], immediateIndexed
- dcl_constantbuffer cb1[1], immediateIndexed
- dcl_constantbuffer cb2[4], immediateIndexed
- dcl_input v0.xy
- dcl_output_siv o0.xyzw, position
- dcl_output o1.xy
- dcl_temps 2
- mad r0.xy, v0.xyxx, cb0[1].zwzz, cb0[1].xyxx
- mul r1.xyzw, r0.yyyy, cb0[5].xyzw
- mad r0.xyzw, cb0[4].xyzw, r0.xxxx, r1.xyzw
- add r0.xyzw, r0.xyzw, cb0[7].xyzw
- div r0.xyz, r0.xyzx, r0.wwww
- add r0.xyzw, r0.xyzw, -cb1[0].xyzw
- mul r0.xyz, r0.wwww, r0.xyzx
- mul r1.xyzw, r0.yyyy, cb2[1].xyzw
- mad r1.xyzw, cb2[0].xyzw, r0.xxxx, r1.xyzw
- mad r1.xyzw, cb2[2].xyzw, r0.zzzz, r1.xyzw
- mad o0.xyzw, cb2[3].xyzw, r0.wwww, r1.xyzw
- mad o1.xy, v0.xyxx, cb0[0].zwzz, cb0[0].xyxx
- ret
- // Approximately 13 instruction slots used
-
- };
- GeometryShader = NULL;
- PixelShader = asm {
- //
- // Generated by Microsoft (R) HLSL Shader Compiler 6.3.9600.16384
- //
- //
- // Buffer Definitions:
- //
- // cbuffer PerLayer
- // {
- //
- // float4 vTextureCoords; // Offset: 0 Size: 16 [unused]
- // float4 vLayerQuad; // Offset: 16 Size: 16 [unused]
- // float4 vMaskQuad; // Offset: 32 Size: 16 [unused]
- // float fLayerOpacity; // Offset: 48 Size: 4
- // float4x4 mLayerTransform; // Offset: 64 Size: 64 [unused]
- //
- // }
- //
- //
- // Resource Bindings:
- //
- // Name Type Format Dim Slot Elements
- // ------------------------------ ---------- ------- ----------- ---- --------
- // LayerTextureSamplerPoint sampler NA NA 0 1
- // tRGB texture float4 2d 0 1
- // PerLayer cbuffer NA NA 0 1
- //
- //
- //
- // Input signature:
- //
- // Name Index Mask Register SysValue Format Used
- // -------------------- ----- ------ -------- -------- ------- ------
- // SV_Position 0 xyzw 0 POS float
- // TEXCOORD 0 xy 1 NONE float xy
- //
- //
- // Output signature:
- //
- // Name Index Mask Register SysValue Format Used
- // -------------------- ----- ------ -------- -------- ------- ------
- // SV_Target 0 xyzw 0 TARGET float xyzw
- //
- //
- // Constant buffer to DX9 shader constant mappings:
- //
- // Target Reg Buffer Start Reg # of Regs Data Conversion
- // ---------- ------- --------- --------- ----------------------
- // c0 cb0 3 1 ( FLT, FLT, FLT, FLT)
- //
- //
- // Sampler/Resource to DX9 shader sampler mappings:
- //
- // Target Sampler Source Sampler Source Resource
- // -------------- --------------- ----------------
- // s0 s0 t0
- //
- //
- // Level9 shader bytecode:
- //
- ps_2_x
- dcl t0.xy
- dcl_2d s0
- texld r0, t0, s0
- mul r0, r0, c0.x
- mov oC0, r0
-
- // approximately 3 instruction slots used (1 texture, 2 arithmetic)
- ps_4_0
- dcl_constantbuffer cb0[4], immediateIndexed
- dcl_sampler s0, mode_default
- dcl_resource_texture2d (float,float,float,float) t0
- dcl_input_ps linear v1.xy
- dcl_output o0.xyzw
- dcl_temps 1
- sample r0.xyzw, v1.xyxx, t0.xyzw, s0
- mul o0.xyzw, r0.xyzw, cb0[3].xxxx
- ret
- // Approximately 3 instruction slots used
-
- };
- }
-
-}
-
-technique10 RenderRGBALayerNonPremulPoint
-{
- pass P0
- {
- RasterizerState = LayerRast;
- AB_BlendFactor = float4(0, 0, 0, 0);
- AB_SampleMask = uint(0xffffffff);
- BlendState = NonPremul;
- VertexShader = asm {
- //
- // Generated by Microsoft (R) HLSL Shader Compiler 6.3.9600.16384
- //
- //
- // Buffer Definitions:
- //
- // cbuffer PerLayer
- // {
- //
- // float4 vTextureCoords; // Offset: 0 Size: 16
- // float4 vLayerQuad; // Offset: 16 Size: 16
- // float4 vMaskQuad; // Offset: 32 Size: 16 [unused]
- // float fLayerOpacity; // Offset: 48 Size: 4 [unused]
- // float4x4 mLayerTransform; // Offset: 64 Size: 64
- //
- // }
- //
- // cbuffer PerOccasionalLayer
- // {
- //
- // float4 vRenderTargetOffset; // Offset: 0 Size: 16
- // float4 fLayerColor; // Offset: 16 Size: 16 [unused]
- //
- // }
- //
- // cbuffer PerLayerManager
- // {
- //
- // float4x4 mProjection; // Offset: 0 Size: 64
- //
- // }
- //
- //
- // Resource Bindings:
- //
- // Name Type Format Dim Slot Elements
- // ------------------------------ ---------- ------- ----------- ---- --------
- // PerLayer cbuffer NA NA 0 1
- // PerOccasionalLayer cbuffer NA NA 1 1
- // PerLayerManager cbuffer NA NA 2 1
- //
- //
- //
- // Input signature:
- //
- // Name Index Mask Register SysValue Format Used
- // -------------------- ----- ------ -------- -------- ------- ------
- // POSITION 0 xy 0 NONE float xy
- //
- //
- // Output signature:
- //
- // Name Index Mask Register SysValue Format Used
- // -------------------- ----- ------ -------- -------- ------- ------
- // SV_Position 0 xyzw 0 POS float xyzw
- // TEXCOORD 0 xy 1 NONE float xy
- //
- //
- // Constant buffer to DX9 shader constant mappings:
- //
- // Target Reg Buffer Start Reg # of Regs Data Conversion
- // ---------- ------- --------- --------- ----------------------
- // c1 cb0 0 2 ( FLT, FLT, FLT, FLT)
- // c3 cb0 4 2 ( FLT, FLT, FLT, FLT)
- // c5 cb0 7 1 ( FLT, FLT, FLT, FLT)
- // c6 cb1 0 1 ( FLT, FLT, FLT, FLT)
- // c7 cb2 0 4 ( FLT, FLT, FLT, FLT)
- //
- //
- // Runtime generated constant mappings:
- //
- // Target Reg Constant Description
- // ---------- --------------------------------------------------
- // c0 Vertex Shader position offset
- //
- //
- // Level9 shader bytecode:
- //
- vs_2_x
- dcl_texcoord v0
- mad oT0.xy, v0, c1.zwzw, c1
- mad r0.xy, v0, c2.zwzw, c2
- mul r1, r0.y, c4
- mad r0, c3, r0.x, r1
- add r0, r0, c5
- rcp r1.x, r0.w
- mul r0.xyz, r0, r1.x
- add r0, r0, -c6
- mul r0.xyz, r0.w, r0
- mul r1, r0.y, c8
- mad r1, c7, r0.x, r1
- mad r1, c9, r0.z, r1
- mad r0, c10, r0.w, r1
- mad oPos.xy, r0.w, c0, r0
- mov oPos.zw, r0
-
- // approximately 15 instruction slots used
- vs_4_0
- dcl_constantbuffer cb0[8], immediateIndexed
- dcl_constantbuffer cb1[1], immediateIndexed
- dcl_constantbuffer cb2[4], immediateIndexed
- dcl_input v0.xy
- dcl_output_siv o0.xyzw, position
- dcl_output o1.xy
- dcl_temps 2
- mad r0.xy, v0.xyxx, cb0[1].zwzz, cb0[1].xyxx
- mul r1.xyzw, r0.yyyy, cb0[5].xyzw
- mad r0.xyzw, cb0[4].xyzw, r0.xxxx, r1.xyzw
- add r0.xyzw, r0.xyzw, cb0[7].xyzw
- div r0.xyz, r0.xyzx, r0.wwww
- add r0.xyzw, r0.xyzw, -cb1[0].xyzw
- mul r0.xyz, r0.wwww, r0.xyzx
- mul r1.xyzw, r0.yyyy, cb2[1].xyzw
- mad r1.xyzw, cb2[0].xyzw, r0.xxxx, r1.xyzw
- mad r1.xyzw, cb2[2].xyzw, r0.zzzz, r1.xyzw
- mad o0.xyzw, cb2[3].xyzw, r0.wwww, r1.xyzw
- mad o1.xy, v0.xyxx, cb0[0].zwzz, cb0[0].xyxx
- ret
- // Approximately 13 instruction slots used
-
- };
- GeometryShader = NULL;
- PixelShader = asm {
- //
- // Generated by Microsoft (R) HLSL Shader Compiler 6.3.9600.16384
- //
- //
- // Buffer Definitions:
- //
- // cbuffer PerLayer
- // {
- //
- // float4 vTextureCoords; // Offset: 0 Size: 16 [unused]
- // float4 vLayerQuad; // Offset: 16 Size: 16 [unused]
- // float4 vMaskQuad; // Offset: 32 Size: 16 [unused]
- // float fLayerOpacity; // Offset: 48 Size: 4
- // float4x4 mLayerTransform; // Offset: 64 Size: 64 [unused]
- //
- // }
- //
- //
- // Resource Bindings:
- //
- // Name Type Format Dim Slot Elements
- // ------------------------------ ---------- ------- ----------- ---- --------
- // LayerTextureSamplerPoint sampler NA NA 0 1
- // tRGB texture float4 2d 0 1
- // PerLayer cbuffer NA NA 0 1
- //
- //
- //
- // Input signature:
- //
- // Name Index Mask Register SysValue Format Used
- // -------------------- ----- ------ -------- -------- ------- ------
- // SV_Position 0 xyzw 0 POS float
- // TEXCOORD 0 xy 1 NONE float xy
- //
- //
- // Output signature:
- //
- // Name Index Mask Register SysValue Format Used
- // -------------------- ----- ------ -------- -------- ------- ------
- // SV_Target 0 xyzw 0 TARGET float xyzw
- //
- //
- // Constant buffer to DX9 shader constant mappings:
- //
- // Target Reg Buffer Start Reg # of Regs Data Conversion
- // ---------- ------- --------- --------- ----------------------
- // c0 cb0 3 1 ( FLT, FLT, FLT, FLT)
- //
- //
- // Sampler/Resource to DX9 shader sampler mappings:
- //
- // Target Sampler Source Sampler Source Resource
- // -------------- --------------- ----------------
- // s0 s0 t0
- //
- //
- // Level9 shader bytecode:
- //
- ps_2_x
- dcl t0.xy
- dcl_2d s0
- texld r0, t0, s0
- mul r0, r0, c0.x
- mov oC0, r0
-
- // approximately 3 instruction slots used (1 texture, 2 arithmetic)
- ps_4_0
- dcl_constantbuffer cb0[4], immediateIndexed
- dcl_sampler s0, mode_default
- dcl_resource_texture2d (float,float,float,float) t0
- dcl_input_ps linear v1.xy
- dcl_output o0.xyzw
- dcl_temps 1
- sample r0.xyzw, v1.xyxx, t0.xyzw, s0
- mul o0.xyzw, r0.xyzw, cb0[3].xxxx
- ret
- // Approximately 3 instruction slots used
-
- };
- }
-
-}
-
-technique10 RenderYCbCrLayer
-{
- pass P0
- {
- RasterizerState = LayerRast;
- AB_BlendFactor = float4(0, 0, 0, 0);
- AB_SampleMask = uint(0xffffffff);
- BlendState = Premul;
- VertexShader = asm {
- //
- // Generated by Microsoft (R) HLSL Shader Compiler 6.3.9600.16384
- //
- //
- // Buffer Definitions:
- //
- // cbuffer PerLayer
- // {
- //
- // float4 vTextureCoords; // Offset: 0 Size: 16
- // float4 vLayerQuad; // Offset: 16 Size: 16
- // float4 vMaskQuad; // Offset: 32 Size: 16 [unused]
- // float fLayerOpacity; // Offset: 48 Size: 4 [unused]
- // float4x4 mLayerTransform; // Offset: 64 Size: 64
- //
- // }
- //
- // cbuffer PerOccasionalLayer
- // {
- //
- // float4 vRenderTargetOffset; // Offset: 0 Size: 16
- // float4 fLayerColor; // Offset: 16 Size: 16 [unused]
- //
- // }
- //
- // cbuffer PerLayerManager
- // {
- //
- // float4x4 mProjection; // Offset: 0 Size: 64
- //
- // }
- //
- //
- // Resource Bindings:
- //
- // Name Type Format Dim Slot Elements
- // ------------------------------ ---------- ------- ----------- ---- --------
- // PerLayer cbuffer NA NA 0 1
- // PerOccasionalLayer cbuffer NA NA 1 1
- // PerLayerManager cbuffer NA NA 2 1
- //
- //
- //
- // Input signature:
- //
- // Name Index Mask Register SysValue Format Used
- // -------------------- ----- ------ -------- -------- ------- ------
- // POSITION 0 xy 0 NONE float xy
- //
- //
- // Output signature:
- //
- // Name Index Mask Register SysValue Format Used
- // -------------------- ----- ------ -------- -------- ------- ------
- // SV_Position 0 xyzw 0 POS float xyzw
- // TEXCOORD 0 xy 1 NONE float xy
- //
- //
- // Constant buffer to DX9 shader constant mappings:
- //
- // Target Reg Buffer Start Reg # of Regs Data Conversion
- // ---------- ------- --------- --------- ----------------------
- // c1 cb0 0 2 ( FLT, FLT, FLT, FLT)
- // c3 cb0 4 2 ( FLT, FLT, FLT, FLT)
- // c5 cb0 7 1 ( FLT, FLT, FLT, FLT)
- // c6 cb1 0 1 ( FLT, FLT, FLT, FLT)
- // c7 cb2 0 4 ( FLT, FLT, FLT, FLT)
- //
- //
- // Runtime generated constant mappings:
- //
- // Target Reg Constant Description
- // ---------- --------------------------------------------------
- // c0 Vertex Shader position offset
- //
- //
- // Level9 shader bytecode:
- //
- vs_2_x
- dcl_texcoord v0
- mad oT0.xy, v0, c1.zwzw, c1
- mad r0.xy, v0, c2.zwzw, c2
- mul r1, r0.y, c4
- mad r0, c3, r0.x, r1
- add r0, r0, c5
- rcp r1.x, r0.w
- mul r0.xyz, r0, r1.x
- add r0, r0, -c6
- mul r0.xyz, r0.w, r0
- mul r1, r0.y, c8
- mad r1, c7, r0.x, r1
- mad r1, c9, r0.z, r1
- mad r0, c10, r0.w, r1
- mad oPos.xy, r0.w, c0, r0
- mov oPos.zw, r0
-
- // approximately 15 instruction slots used
- vs_4_0
- dcl_constantbuffer cb0[8], immediateIndexed
- dcl_constantbuffer cb1[1], immediateIndexed
- dcl_constantbuffer cb2[4], immediateIndexed
- dcl_input v0.xy
- dcl_output_siv o0.xyzw, position
- dcl_output o1.xy
- dcl_temps 2
- mad r0.xy, v0.xyxx, cb0[1].zwzz, cb0[1].xyxx
- mul r1.xyzw, r0.yyyy, cb0[5].xyzw
- mad r0.xyzw, cb0[4].xyzw, r0.xxxx, r1.xyzw
- add r0.xyzw, r0.xyzw, cb0[7].xyzw
- div r0.xyz, r0.xyzx, r0.wwww
- add r0.xyzw, r0.xyzw, -cb1[0].xyzw
- mul r0.xyz, r0.wwww, r0.xyzx
- mul r1.xyzw, r0.yyyy, cb2[1].xyzw
- mad r1.xyzw, cb2[0].xyzw, r0.xxxx, r1.xyzw
- mad r1.xyzw, cb2[2].xyzw, r0.zzzz, r1.xyzw
- mad o0.xyzw, cb2[3].xyzw, r0.wwww, r1.xyzw
- mad o1.xy, v0.xyxx, cb0[0].zwzz, cb0[0].xyxx
- ret
- // Approximately 13 instruction slots used
-
- };
- GeometryShader = NULL;
- PixelShader = asm {
- //
- // Generated by Microsoft (R) HLSL Shader Compiler 6.3.9600.16384
- //
- //
- // Buffer Definitions:
- //
- // cbuffer PerLayer
- // {
- //
- // float4 vTextureCoords; // Offset: 0 Size: 16 [unused]
- // float4 vLayerQuad; // Offset: 16 Size: 16 [unused]
- // float4 vMaskQuad; // Offset: 32 Size: 16 [unused]
- // float fLayerOpacity; // Offset: 48 Size: 4
- // float4x4 mLayerTransform; // Offset: 64 Size: 64 [unused]
- //
- // }
- //
- //
- // Resource Bindings:
- //
- // Name Type Format Dim Slot Elements
- // ------------------------------ ---------- ------- ----------- ---- --------
- // LayerTextureSamplerLinear sampler NA NA 0 1
- // tY texture float4 2d 0 1
- // tCb texture float4 2d 1 1
- // tCr texture float4 2d 2 1
- // PerLayer cbuffer NA NA 0 1
- //
- //
- //
- // Input signature:
- //
- // Name Index Mask Register SysValue Format Used
- // -------------------- ----- ------ -------- -------- ------- ------
- // SV_Position 0 xyzw 0 POS float
- // TEXCOORD 0 xy 1 NONE float xy
- //
- //
- // Output signature:
- //
- // Name Index Mask Register SysValue Format Used
- // -------------------- ----- ------ -------- -------- ------- ------
- // SV_Target 0 xyzw 0 TARGET float xyzw
- //
- //
- // Constant buffer to DX9 shader constant mappings:
- //
- // Target Reg Buffer Start Reg # of Regs Data Conversion
- // ---------- ------- --------- --------- ----------------------
- // c0 cb0 3 1 ( FLT, FLT, FLT, FLT)
- //
- //
- // Sampler/Resource to DX9 shader sampler mappings:
- //
- // Target Sampler Source Sampler Source Resource
- // -------------- --------------- ----------------
- // s0 s0 t0
- // s1 s0 t1
- // s2 s0 t2
- //
- //
- // Level9 shader bytecode:
- //
- ps_2_x
- def c1, -0.50195998, -0.0627499968, 1.59603, 0.812969983
- def c2, 1.16437995, 2.01723003, 0.391759992, 1
- dcl t0.xy
- dcl_2d s0
- dcl_2d s1
- dcl_2d s2
- texld r0, t0, s0
- texld r1, t0, s2
- add r0.x, r1.w, c1.x
- mul r0.xy, r0.x, c1.zwzw
- add r0.z, r0.w, c1.y
- mad r0.y, r0.z, c2.x, -r0.y
- mad r1.x, r0.z, c2.x, r0.x
- texld r2, t0, s1
- add r0.x, r2.w, c1.x
- mad r1.y, r0.x, -c2.z, r0.y
- mul r0.x, r0.x, c2.y
- mad r1.z, r0.z, c2.x, r0.x
- mov r1.w, c2.w
- mul r0, r1, c0.x
- mov oC0, r0
-
- // approximately 15 instruction slots used (3 texture, 12 arithmetic)
- ps_4_0
- dcl_constantbuffer cb0[4], immediateIndexed
- dcl_sampler s0, mode_default
- dcl_resource_texture2d (float,float,float,float) t0
- dcl_resource_texture2d (float,float,float,float) t1
- dcl_resource_texture2d (float,float,float,float) t2
- dcl_input_ps linear v1.xy
- dcl_output o0.xyzw
- dcl_temps 3
- sample r0.xyzw, v1.xyxx, t2.xyzw, s0
- add r0.x, r0.w, l(-0.501960)
- mul r0.xy, r0.xxxx, l(1.596030, 0.812970, 0.000000, 0.000000)
- sample r1.xyzw, v1.xyxx, t0.xyzw, s0
- add r0.z, r1.w, l(-0.062750)
- mad r0.y, r0.z, l(1.164380), -r0.y
- mad r1.x, r0.z, l(1.164380), r0.x
- sample r2.xyzw, v1.xyxx, t1.xyzw, s0
- add r0.x, r2.w, l(-0.501960)
- mad r1.y, -r0.x, l(0.391760), r0.y
- mul r0.x, r0.x, l(2.017230)
- mad r1.z, r0.z, l(1.164380), r0.x
- mov r1.w, l(1.000000)
- mul o0.xyzw, r1.xyzw, cb0[3].xxxx
- ret
- // Approximately 15 instruction slots used
-
- };
- }
-
-}
-
-technique10 RenderComponentAlphaLayer
-{
- pass P0
- {
- RasterizerState = LayerRast;
- AB_BlendFactor = float4(0, 0, 0, 0);
- AB_SampleMask = uint(0xffffffff);
- BlendState = ComponentAlphaBlend;
- VertexShader = asm {
- //
- // Generated by Microsoft (R) HLSL Shader Compiler 6.3.9600.16384
- //
- //
- // Buffer Definitions:
- //
- // cbuffer PerLayer
- // {
- //
- // float4 vTextureCoords; // Offset: 0 Size: 16
- // float4 vLayerQuad; // Offset: 16 Size: 16
- // float4 vMaskQuad; // Offset: 32 Size: 16 [unused]
- // float fLayerOpacity; // Offset: 48 Size: 4 [unused]
- // float4x4 mLayerTransform; // Offset: 64 Size: 64
- //
- // }
- //
- // cbuffer PerOccasionalLayer
- // {
- //
- // float4 vRenderTargetOffset; // Offset: 0 Size: 16
- // float4 fLayerColor; // Offset: 16 Size: 16 [unused]
- //
- // }
- //
- // cbuffer PerLayerManager
- // {
- //
- // float4x4 mProjection; // Offset: 0 Size: 64
- //
- // }
- //
- //
- // Resource Bindings:
- //
- // Name Type Format Dim Slot Elements
- // ------------------------------ ---------- ------- ----------- ---- --------
- // PerLayer cbuffer NA NA 0 1
- // PerOccasionalLayer cbuffer NA NA 1 1
- // PerLayerManager cbuffer NA NA 2 1
- //
- //
- //
- // Input signature:
- //
- // Name Index Mask Register SysValue Format Used
- // -------------------- ----- ------ -------- -------- ------- ------
- // POSITION 0 xy 0 NONE float xy
- //
- //
- // Output signature:
- //
- // Name Index Mask Register SysValue Format Used
- // -------------------- ----- ------ -------- -------- ------- ------
- // SV_Position 0 xyzw 0 POS float xyzw
- // TEXCOORD 0 xy 1 NONE float xy
- //
- //
- // Constant buffer to DX9 shader constant mappings:
- //
- // Target Reg Buffer Start Reg # of Regs Data Conversion
- // ---------- ------- --------- --------- ----------------------
- // c1 cb0 0 2 ( FLT, FLT, FLT, FLT)
- // c3 cb0 4 2 ( FLT, FLT, FLT, FLT)
- // c5 cb0 7 1 ( FLT, FLT, FLT, FLT)
- // c6 cb1 0 1 ( FLT, FLT, FLT, FLT)
- // c7 cb2 0 4 ( FLT, FLT, FLT, FLT)
- //
- //
- // Runtime generated constant mappings:
- //
- // Target Reg Constant Description
- // ---------- --------------------------------------------------
- // c0 Vertex Shader position offset
- //
- //
- // Level9 shader bytecode:
- //
- vs_2_x
- dcl_texcoord v0
- mad oT0.xy, v0, c1.zwzw, c1
- mad r0.xy, v0, c2.zwzw, c2
- mul r1, r0.y, c4
- mad r0, c3, r0.x, r1
- add r0, r0, c5
- rcp r1.x, r0.w
- mul r0.xyz, r0, r1.x
- add r0, r0, -c6
- mul r0.xyz, r0.w, r0
- mul r1, r0.y, c8
- mad r1, c7, r0.x, r1
- mad r1, c9, r0.z, r1
- mad r0, c10, r0.w, r1
- mad oPos.xy, r0.w, c0, r0
- mov oPos.zw, r0
-
- // approximately 15 instruction slots used
- vs_4_0
- dcl_constantbuffer cb0[8], immediateIndexed
- dcl_constantbuffer cb1[1], immediateIndexed
- dcl_constantbuffer cb2[4], immediateIndexed
- dcl_input v0.xy
- dcl_output_siv o0.xyzw, position
- dcl_output o1.xy
- dcl_temps 2
- mad r0.xy, v0.xyxx, cb0[1].zwzz, cb0[1].xyxx
- mul r1.xyzw, r0.yyyy, cb0[5].xyzw
- mad r0.xyzw, cb0[4].xyzw, r0.xxxx, r1.xyzw
- add r0.xyzw, r0.xyzw, cb0[7].xyzw
- div r0.xyz, r0.xyzx, r0.wwww
- add r0.xyzw, r0.xyzw, -cb1[0].xyzw
- mul r0.xyz, r0.wwww, r0.xyzx
- mul r1.xyzw, r0.yyyy, cb2[1].xyzw
- mad r1.xyzw, cb2[0].xyzw, r0.xxxx, r1.xyzw
- mad r1.xyzw, cb2[2].xyzw, r0.zzzz, r1.xyzw
- mad o0.xyzw, cb2[3].xyzw, r0.wwww, r1.xyzw
- mad o1.xy, v0.xyxx, cb0[0].zwzz, cb0[0].xyxx
- ret
- // Approximately 13 instruction slots used
-
- };
- GeometryShader = NULL;
- PixelShader = asm {
- //
- // Generated by Microsoft (R) HLSL Shader Compiler 6.3.9600.16384
- //
- //
- // Buffer Definitions:
- //
- // cbuffer PerLayer
- // {
- //
- // float4 vTextureCoords; // Offset: 0 Size: 16 [unused]
- // float4 vLayerQuad; // Offset: 16 Size: 16 [unused]
- // float4 vMaskQuad; // Offset: 32 Size: 16 [unused]
- // float fLayerOpacity; // Offset: 48 Size: 4
- // float4x4 mLayerTransform; // Offset: 64 Size: 64 [unused]
- //
- // }
- //
- //
- // Resource Bindings:
- //
- // Name Type Format Dim Slot Elements
- // ------------------------------ ---------- ------- ----------- ---- --------
- // LayerTextureSamplerLinear sampler NA NA 0 1
- // tRGB texture float4 2d 0 1
- // tRGBWhite texture float4 2d 1 1
- // PerLayer cbuffer NA NA 0 1
- //
- //
- //
- // Input signature:
- //
- // Name Index Mask Register SysValue Format Used
- // -------------------- ----- ------ -------- -------- ------- ------
- // SV_Position 0 xyzw 0 POS float
- // TEXCOORD 0 xy 1 NONE float xy
- //
- //
- // Output signature:
- //
- // Name Index Mask Register SysValue Format Used
- // -------------------- ----- ------ -------- -------- ------- ------
- // SV_Target 0 xyzw 0 TARGET float xyzw
- // SV_Target 1 xyzw 1 TARGET float xyzw
- //
- //
- // Constant buffer to DX9 shader constant mappings:
- //
- // Target Reg Buffer Start Reg # of Regs Data Conversion
- // ---------- ------- --------- --------- ----------------------
- // c0 cb0 3 1 ( FLT, FLT, FLT, FLT)
- //
- //
- // Sampler/Resource to DX9 shader sampler mappings:
- //
- // Target Sampler Source Sampler Source Resource
- // -------------- --------------- ----------------
- // s0 s0 t0
- // s1 s0 t1
- //
- //
- // Level9 shader bytecode:
- //
- ps_2_x
- def c1, 1, 0, 0, 0
- dcl t0.xy
- dcl_2d s0
- dcl_2d s1
- texld r0, t0, s0
- texld r1, t0, s1
- add r1, r0, -r1
- add r1, r1, c1.x
- mov r0.w, r1.y
- mul r1, r1, c0.x
- mov oC1, r1
- mul r0, r0, c0.x
- mov oC0, r0
-
- // approximately 9 instruction slots used (2 texture, 7 arithmetic)
- ps_4_0
- dcl_constantbuffer cb0[4], immediateIndexed
- dcl_sampler s0, mode_default
- dcl_resource_texture2d (float,float,float,float) t0
- dcl_resource_texture2d (float,float,float,float) t1
- dcl_input_ps linear v1.xy
- dcl_output o0.xyzw
- dcl_output o1.xyzw
- dcl_temps 2
- sample r0.xyzw, v1.xyxx, t1.xyzw, s0
- sample r1.xyzw, v1.xyxx, t0.xyzw, s0
- add r0.xyzw, -r0.xyzw, r1.xyzw
- add r0.xyzw, r0.xyzw, l(1.000000, 1.000000, 1.000000, 1.000000)
- mov r1.w, r0.y
- mul o1.xyzw, r0.xyzw, cb0[3].xxxx
- mul o0.xyzw, r1.xyzw, cb0[3].xxxx
- ret
- // Approximately 8 instruction slots used
-
- };
- }
-
-}
-
-technique10 RenderSolidColorLayer
-{
- pass P0
- {
- RasterizerState = LayerRast;
- AB_BlendFactor = float4(0, 0, 0, 0);
- AB_SampleMask = uint(0xffffffff);
- BlendState = Premul;
- VertexShader = asm {
- //
- // Generated by Microsoft (R) HLSL Shader Compiler 6.3.9600.16384
- //
- //
- // Buffer Definitions:
- //
- // cbuffer PerLayer
- // {
- //
- // float4 vTextureCoords; // Offset: 0 Size: 16
- // float4 vLayerQuad; // Offset: 16 Size: 16
- // float4 vMaskQuad; // Offset: 32 Size: 16 [unused]
- // float fLayerOpacity; // Offset: 48 Size: 4 [unused]
- // float4x4 mLayerTransform; // Offset: 64 Size: 64
- //
- // }
- //
- // cbuffer PerOccasionalLayer
- // {
- //
- // float4 vRenderTargetOffset; // Offset: 0 Size: 16
- // float4 fLayerColor; // Offset: 16 Size: 16 [unused]
- //
- // }
- //
- // cbuffer PerLayerManager
- // {
- //
- // float4x4 mProjection; // Offset: 0 Size: 64
- //
- // }
- //
- //
- // Resource Bindings:
- //
- // Name Type Format Dim Slot Elements
- // ------------------------------ ---------- ------- ----------- ---- --------
- // PerLayer cbuffer NA NA 0 1
- // PerOccasionalLayer cbuffer NA NA 1 1
- // PerLayerManager cbuffer NA NA 2 1
- //
- //
- //
- // Input signature:
- //
- // Name Index Mask Register SysValue Format Used
- // -------------------- ----- ------ -------- -------- ------- ------
- // POSITION 0 xy 0 NONE float xy
- //
- //
- // Output signature:
- //
- // Name Index Mask Register SysValue Format Used
- // -------------------- ----- ------ -------- -------- ------- ------
- // SV_Position 0 xyzw 0 POS float xyzw
- // TEXCOORD 0 xy 1 NONE float xy
- //
- //
- // Constant buffer to DX9 shader constant mappings:
- //
- // Target Reg Buffer Start Reg # of Regs Data Conversion
- // ---------- ------- --------- --------- ----------------------
- // c1 cb0 0 2 ( FLT, FLT, FLT, FLT)
- // c3 cb0 4 2 ( FLT, FLT, FLT, FLT)
- // c5 cb0 7 1 ( FLT, FLT, FLT, FLT)
- // c6 cb1 0 1 ( FLT, FLT, FLT, FLT)
- // c7 cb2 0 4 ( FLT, FLT, FLT, FLT)
- //
- //
- // Runtime generated constant mappings:
- //
- // Target Reg Constant Description
- // ---------- --------------------------------------------------
- // c0 Vertex Shader position offset
- //
- //
- // Level9 shader bytecode:
- //
- vs_2_x
- dcl_texcoord v0
- mad oT0.xy, v0, c1.zwzw, c1
- mad r0.xy, v0, c2.zwzw, c2
- mul r1, r0.y, c4
- mad r0, c3, r0.x, r1
- add r0, r0, c5
- rcp r1.x, r0.w
- mul r0.xyz, r0, r1.x
- add r0, r0, -c6
- mul r0.xyz, r0.w, r0
- mul r1, r0.y, c8
- mad r1, c7, r0.x, r1
- mad r1, c9, r0.z, r1
- mad r0, c10, r0.w, r1
- mad oPos.xy, r0.w, c0, r0
- mov oPos.zw, r0
-
- // approximately 15 instruction slots used
- vs_4_0
- dcl_constantbuffer cb0[8], immediateIndexed
- dcl_constantbuffer cb1[1], immediateIndexed
- dcl_constantbuffer cb2[4], immediateIndexed
- dcl_input v0.xy
- dcl_output_siv o0.xyzw, position
- dcl_output o1.xy
- dcl_temps 2
- mad r0.xy, v0.xyxx, cb0[1].zwzz, cb0[1].xyxx
- mul r1.xyzw, r0.yyyy, cb0[5].xyzw
- mad r0.xyzw, cb0[4].xyzw, r0.xxxx, r1.xyzw
- add r0.xyzw, r0.xyzw, cb0[7].xyzw
- div r0.xyz, r0.xyzx, r0.wwww
- add r0.xyzw, r0.xyzw, -cb1[0].xyzw
- mul r0.xyz, r0.wwww, r0.xyzx
- mul r1.xyzw, r0.yyyy, cb2[1].xyzw
- mad r1.xyzw, cb2[0].xyzw, r0.xxxx, r1.xyzw
- mad r1.xyzw, cb2[2].xyzw, r0.zzzz, r1.xyzw
- mad o0.xyzw, cb2[3].xyzw, r0.wwww, r1.xyzw
- mad o1.xy, v0.xyxx, cb0[0].zwzz, cb0[0].xyxx
- ret
- // Approximately 13 instruction slots used
-
- };
- GeometryShader = NULL;
- PixelShader = asm {
- //
- // Generated by Microsoft (R) HLSL Shader Compiler 6.3.9600.16384
- //
- //
- // Buffer Definitions:
- //
- // cbuffer PerOccasionalLayer
- // {
- //
- // float4 vRenderTargetOffset; // Offset: 0 Size: 16 [unused]
- // float4 fLayerColor; // Offset: 16 Size: 16
- //
- // }
- //
- //
- // Resource Bindings:
- //
- // Name Type Format Dim Slot Elements
- // ------------------------------ ---------- ------- ----------- ---- --------
- // PerOccasionalLayer cbuffer NA NA 0 1
- //
- //
- //
- // Input signature:
- //
- // Name Index Mask Register SysValue Format Used
- // -------------------- ----- ------ -------- -------- ------- ------
- // SV_Position 0 xyzw 0 POS float
- // TEXCOORD 0 xy 1 NONE float
- //
- //
- // Output signature:
- //
- // Name Index Mask Register SysValue Format Used
- // -------------------- ----- ------ -------- -------- ------- ------
- // SV_Target 0 xyzw 0 TARGET float xyzw
- //
- //
- // Constant buffer to DX9 shader constant mappings:
- //
- // Target Reg Buffer Start Reg # of Regs Data Conversion
- // ---------- ------- --------- --------- ----------------------
- // c0 cb0 1 1 ( FLT, FLT, FLT, FLT)
- //
- //
- // Level9 shader bytecode:
- //
- ps_2_x
- mov oC0, c0
-
- // approximately 1 instruction slot used
- ps_4_0
- dcl_constantbuffer cb0[2], immediateIndexed
- dcl_output o0.xyzw
- mov o0.xyzw, cb0[1].xyzw
- ret
- // Approximately 2 instruction slots used
-
- };
- }
-
-}
-
-technique10 RenderClearLayer
-{
- pass P0
- {
- RasterizerState = LayerRast;
- AB_BlendFactor = float4(0, 0, 0, 0);
- AB_SampleMask = uint(0xffffffff);
- BlendState = NoBlendDual;
- VertexShader = asm {
- //
- // Generated by Microsoft (R) HLSL Shader Compiler 6.3.9600.16384
- //
- //
- // Buffer Definitions:
- //
- // cbuffer PerLayer
- // {
- //
- // float4 vTextureCoords; // Offset: 0 Size: 16
- // float4 vLayerQuad; // Offset: 16 Size: 16
- // float4 vMaskQuad; // Offset: 32 Size: 16 [unused]
- // float fLayerOpacity; // Offset: 48 Size: 4 [unused]
- // float4x4 mLayerTransform; // Offset: 64 Size: 64
- //
- // }
- //
- // cbuffer PerOccasionalLayer
- // {
- //
- // float4 vRenderTargetOffset; // Offset: 0 Size: 16
- // float4 fLayerColor; // Offset: 16 Size: 16 [unused]
- //
- // }
- //
- // cbuffer PerLayerManager
- // {
- //
- // float4x4 mProjection; // Offset: 0 Size: 64
- //
- // }
- //
- //
- // Resource Bindings:
- //
- // Name Type Format Dim Slot Elements
- // ------------------------------ ---------- ------- ----------- ---- --------
- // PerLayer cbuffer NA NA 0 1
- // PerOccasionalLayer cbuffer NA NA 1 1
- // PerLayerManager cbuffer NA NA 2 1
- //
- //
- //
- // Input signature:
- //
- // Name Index Mask Register SysValue Format Used
- // -------------------- ----- ------ -------- -------- ------- ------
- // POSITION 0 xy 0 NONE float xy
- //
- //
- // Output signature:
- //
- // Name Index Mask Register SysValue Format Used
- // -------------------- ----- ------ -------- -------- ------- ------
- // SV_Position 0 xyzw 0 POS float xyzw
- // TEXCOORD 0 xy 1 NONE float xy
- //
- //
- // Constant buffer to DX9 shader constant mappings:
- //
- // Target Reg Buffer Start Reg # of Regs Data Conversion
- // ---------- ------- --------- --------- ----------------------
- // c1 cb0 0 2 ( FLT, FLT, FLT, FLT)
- // c3 cb0 4 2 ( FLT, FLT, FLT, FLT)
- // c5 cb0 7 1 ( FLT, FLT, FLT, FLT)
- // c6 cb1 0 1 ( FLT, FLT, FLT, FLT)
- // c7 cb2 0 4 ( FLT, FLT, FLT, FLT)
- //
- //
- // Runtime generated constant mappings:
- //
- // Target Reg Constant Description
- // ---------- --------------------------------------------------
- // c0 Vertex Shader position offset
- //
- //
- // Level9 shader bytecode:
- //
- vs_2_x
- dcl_texcoord v0
- mad oT0.xy, v0, c1.zwzw, c1
- mad r0.xy, v0, c2.zwzw, c2
- mul r1, r0.y, c4
- mad r0, c3, r0.x, r1
- add r0, r0, c5
- rcp r1.x, r0.w
- mul r0.xyz, r0, r1.x
- add r0, r0, -c6
- mul r0.xyz, r0.w, r0
- mul r1, r0.y, c8
- mad r1, c7, r0.x, r1
- mad r1, c9, r0.z, r1
- mad r0, c10, r0.w, r1
- mad oPos.xy, r0.w, c0, r0
- mov oPos.zw, r0
-
- // approximately 15 instruction slots used
- vs_4_0
- dcl_constantbuffer cb0[8], immediateIndexed
- dcl_constantbuffer cb1[1], immediateIndexed
- dcl_constantbuffer cb2[4], immediateIndexed
- dcl_input v0.xy
- dcl_output_siv o0.xyzw, position
- dcl_output o1.xy
- dcl_temps 2
- mad r0.xy, v0.xyxx, cb0[1].zwzz, cb0[1].xyxx
- mul r1.xyzw, r0.yyyy, cb0[5].xyzw
- mad r0.xyzw, cb0[4].xyzw, r0.xxxx, r1.xyzw
- add r0.xyzw, r0.xyzw, cb0[7].xyzw
- div r0.xyz, r0.xyzx, r0.wwww
- add r0.xyzw, r0.xyzw, -cb1[0].xyzw
- mul r0.xyz, r0.wwww, r0.xyzx
- mul r1.xyzw, r0.yyyy, cb2[1].xyzw
- mad r1.xyzw, cb2[0].xyzw, r0.xxxx, r1.xyzw
- mad r1.xyzw, cb2[2].xyzw, r0.zzzz, r1.xyzw
- mad o0.xyzw, cb2[3].xyzw, r0.wwww, r1.xyzw
- mad o1.xy, v0.xyxx, cb0[0].zwzz, cb0[0].xyxx
- ret
- // Approximately 13 instruction slots used
-
- };
- GeometryShader = NULL;
- PixelShader = asm {
- //
- // Generated by Microsoft (R) HLSL Shader Compiler 6.3.9600.16384
- //
- //
- // Buffer Definitions:
- //
- // cbuffer PerOccasionalLayer
- // {
- //
- // float4 vRenderTargetOffset; // Offset: 0 Size: 16 [unused]
- // float4 fLayerColor; // Offset: 16 Size: 16
- //
- // }
- //
- //
- // Resource Bindings:
- //
- // Name Type Format Dim Slot Elements
- // ------------------------------ ---------- ------- ----------- ---- --------
- // PerOccasionalLayer cbuffer NA NA 0 1
- //
- //
- //
- // Input signature:
- //
- // Name Index Mask Register SysValue Format Used
- // -------------------- ----- ------ -------- -------- ------- ------
- // SV_Position 0 xyzw 0 POS float
- // TEXCOORD 0 xy 1 NONE float
- //
- //
- // Output signature:
- //
- // Name Index Mask Register SysValue Format Used
- // -------------------- ----- ------ -------- -------- ------- ------
- // SV_Target 0 xyzw 0 TARGET float xyzw
- //
- //
- // Constant buffer to DX9 shader constant mappings:
- //
- // Target Reg Buffer Start Reg # of Regs Data Conversion
- // ---------- ------- --------- --------- ----------------------
- // c0 cb0 1 1 ( FLT, FLT, FLT, FLT)
- //
- //
- // Level9 shader bytecode:
- //
- ps_2_x
- mov oC0, c0
-
- // approximately 1 instruction slot used
- ps_4_0
- dcl_constantbuffer cb0[2], immediateIndexed
- dcl_output o0.xyzw
- mov o0.xyzw, cb0[1].xyzw
- ret
- // Approximately 2 instruction slots used
-
- };
- }
-
-}
-
-technique10 PrepareAlphaExtractionTextures
-{
- pass P0
- {
- RasterizerState = LayerRast;
- AB_BlendFactor = float4(0, 0, 0, 0);
- AB_SampleMask = uint(0xffffffff);
- BlendState = NoBlendDual;
- VertexShader = asm {
- //
- // Generated by Microsoft (R) HLSL Shader Compiler 6.3.9600.16384
- //
- //
- // Buffer Definitions:
- //
- // cbuffer PerLayer
- // {
- //
- // float4 vTextureCoords; // Offset: 0 Size: 16
- // float4 vLayerQuad; // Offset: 16 Size: 16
- // float4 vMaskQuad; // Offset: 32 Size: 16 [unused]
- // float fLayerOpacity; // Offset: 48 Size: 4 [unused]
- // float4x4 mLayerTransform; // Offset: 64 Size: 64
- //
- // }
- //
- // cbuffer PerOccasionalLayer
- // {
- //
- // float4 vRenderTargetOffset; // Offset: 0 Size: 16
- // float4 fLayerColor; // Offset: 16 Size: 16 [unused]
- //
- // }
- //
- // cbuffer PerLayerManager
- // {
- //
- // float4x4 mProjection; // Offset: 0 Size: 64
- //
- // }
- //
- //
- // Resource Bindings:
- //
- // Name Type Format Dim Slot Elements
- // ------------------------------ ---------- ------- ----------- ---- --------
- // PerLayer cbuffer NA NA 0 1
- // PerOccasionalLayer cbuffer NA NA 1 1
- // PerLayerManager cbuffer NA NA 2 1
- //
- //
- //
- // Input signature:
- //
- // Name Index Mask Register SysValue Format Used
- // -------------------- ----- ------ -------- -------- ------- ------
- // POSITION 0 xy 0 NONE float xy
- //
- //
- // Output signature:
- //
- // Name Index Mask Register SysValue Format Used
- // -------------------- ----- ------ -------- -------- ------- ------
- // SV_Position 0 xyzw 0 POS float xyzw
- // TEXCOORD 0 xy 1 NONE float xy
- //
- //
- // Constant buffer to DX9 shader constant mappings:
- //
- // Target Reg Buffer Start Reg # of Regs Data Conversion
- // ---------- ------- --------- --------- ----------------------
- // c1 cb0 0 2 ( FLT, FLT, FLT, FLT)
- // c3 cb0 4 2 ( FLT, FLT, FLT, FLT)
- // c5 cb0 7 1 ( FLT, FLT, FLT, FLT)
- // c6 cb1 0 1 ( FLT, FLT, FLT, FLT)
- // c7 cb2 0 4 ( FLT, FLT, FLT, FLT)
- //
- //
- // Runtime generated constant mappings:
- //
- // Target Reg Constant Description
- // ---------- --------------------------------------------------
- // c0 Vertex Shader position offset
- //
- //
- // Level9 shader bytecode:
- //
- vs_2_x
- dcl_texcoord v0
- mad oT0.xy, v0, c1.zwzw, c1
- mad r0.xy, v0, c2.zwzw, c2
- mul r1, r0.y, c4
- mad r0, c3, r0.x, r1
- add r0, r0, c5
- rcp r1.x, r0.w
- mul r0.xyz, r0, r1.x
- add r0, r0, -c6
- mul r0.xyz, r0.w, r0
- mul r1, r0.y, c8
- mad r1, c7, r0.x, r1
- mad r1, c9, r0.z, r1
- mad r0, c10, r0.w, r1
- mad oPos.xy, r0.w, c0, r0
- mov oPos.zw, r0
-
- // approximately 15 instruction slots used
- vs_4_0
- dcl_constantbuffer cb0[8], immediateIndexed
- dcl_constantbuffer cb1[1], immediateIndexed
- dcl_constantbuffer cb2[4], immediateIndexed
- dcl_input v0.xy
- dcl_output_siv o0.xyzw, position
- dcl_output o1.xy
- dcl_temps 2
- mad r0.xy, v0.xyxx, cb0[1].zwzz, cb0[1].xyxx
- mul r1.xyzw, r0.yyyy, cb0[5].xyzw
- mad r0.xyzw, cb0[4].xyzw, r0.xxxx, r1.xyzw
- add r0.xyzw, r0.xyzw, cb0[7].xyzw
- div r0.xyz, r0.xyzx, r0.wwww
- add r0.xyzw, r0.xyzw, -cb1[0].xyzw
- mul r0.xyz, r0.wwww, r0.xyzx
- mul r1.xyzw, r0.yyyy, cb2[1].xyzw
- mad r1.xyzw, cb2[0].xyzw, r0.xxxx, r1.xyzw
- mad r1.xyzw, cb2[2].xyzw, r0.zzzz, r1.xyzw
- mad o0.xyzw, cb2[3].xyzw, r0.wwww, r1.xyzw
- mad o1.xy, v0.xyxx, cb0[0].zwzz, cb0[0].xyxx
- ret
- // Approximately 13 instruction slots used
-
- };
- GeometryShader = NULL;
- PixelShader = asm {
- //
- // Generated by Microsoft (R) HLSL Shader Compiler 6.3.9600.16384
- //
- //
- //
- // Input signature:
- //
- // Name Index Mask Register SysValue Format Used
- // -------------------- ----- ------ -------- -------- ------- ------
- // SV_Position 0 xyzw 0 POS float
- // TEXCOORD 0 xy 1 NONE float
- //
- //
- // Output signature:
- //
- // Name Index Mask Register SysValue Format Used
- // -------------------- ----- ------ -------- -------- ------- ------
- // SV_Target 0 xyzw 0 TARGET float xyzw
- // SV_Target 1 xyzw 1 TARGET float xyzw
- //
- //
- // Level9 shader bytecode:
- //
- ps_2_x
- def c0, 0, 0, 0, 1
- mov oC0, c0
- mov r0, c0.w
- mov oC1, r0
-
- // approximately 3 instruction slots used
- ps_4_0
- dcl_output o0.xyzw
- dcl_output o1.xyzw
- mov o0.xyzw, l(0,0,0,1.000000)
- mov o1.xyzw, l(1.000000,1.000000,1.000000,1.000000)
- ret
- // Approximately 3 instruction slots used
-
- };
- }
-
-}
-
-technique10 RenderRGBLayerPremulMask
-{
- pass P0
- {
- RasterizerState = LayerRast;
- AB_BlendFactor = float4(0, 0, 0, 0);
- AB_SampleMask = uint(0xffffffff);
- BlendState = Premul;
- VertexShader = asm {
- //
- // Generated by Microsoft (R) HLSL Shader Compiler 6.3.9600.16384
- //
- //
- // Buffer Definitions:
- //
- // cbuffer PerLayer
- // {
- //
- // float4 vTextureCoords; // Offset: 0 Size: 16
- // float4 vLayerQuad; // Offset: 16 Size: 16
- // float4 vMaskQuad; // Offset: 32 Size: 16
- // float fLayerOpacity; // Offset: 48 Size: 4 [unused]
- // float4x4 mLayerTransform; // Offset: 64 Size: 64
- //
- // }
- //
- // cbuffer PerOccasionalLayer
- // {
- //
- // float4 vRenderTargetOffset; // Offset: 0 Size: 16
- // float4 fLayerColor; // Offset: 16 Size: 16 [unused]
- //
- // }
- //
- // cbuffer PerLayerManager
- // {
- //
- // float4x4 mProjection; // Offset: 0 Size: 64
- //
- // }
- //
- //
- // Resource Bindings:
- //
- // Name Type Format Dim Slot Elements
- // ------------------------------ ---------- ------- ----------- ---- --------
- // PerLayer cbuffer NA NA 0 1
- // PerOccasionalLayer cbuffer NA NA 1 1
- // PerLayerManager cbuffer NA NA 2 1
- //
- //
- //
- // Input signature:
- //
- // Name Index Mask Register SysValue Format Used
- // -------------------- ----- ------ -------- -------- ------- ------
- // POSITION 0 xy 0 NONE float xy
- //
- //
- // Output signature:
- //
- // Name Index Mask Register SysValue Format Used
- // -------------------- ----- ------ -------- -------- ------- ------
- // SV_Position 0 xyzw 0 POS float xyzw
- // TEXCOORD 0 xy 1 NONE float xy
- // TEXCOORD 1 zw 1 NONE float zw
- //
- //
- // Constant buffer to DX9 shader constant mappings:
- //
- // Target Reg Buffer Start Reg # of Regs Data Conversion
- // ---------- ------- --------- --------- ----------------------
- // c1 cb0 0 3 ( FLT, FLT, FLT, FLT)
- // c4 cb0 4 2 ( FLT, FLT, FLT, FLT)
- // c6 cb0 7 1 ( FLT, FLT, FLT, FLT)
- // c7 cb1 0 1 ( FLT, FLT, FLT, FLT)
- // c8 cb2 0 4 ( FLT, FLT, FLT, FLT)
- //
- //
- // Runtime generated constant mappings:
- //
- // Target Reg Constant Description
- // ---------- --------------------------------------------------
- // c0 Vertex Shader position offset
- //
- //
- // Level9 shader bytecode:
- //
- vs_2_x
- dcl_texcoord v0
- rcp r0.x, c3.z
- mad r0.yz, v0.xxyw, c2.xzww, c2.xxyw
- mul r1, r0.z, c5
- mad r1, c4, r0.y, r1
- add r1, r1, c6
- add r0.yz, r1.xxyw, -c3.xxyw
- mul oT0.w, r0.x, r0.y
- rcp r0.x, c3.w
- mul oT0.z, r0.x, r0.z
- mad oT0.xy, v0, c1.zwzw, c1
- rcp r0.x, r1.w
- mul r1.xyz, r0.x, r1
- add r0, r1, -c7
- mul r0.xyz, r0.w, r0
- mul r1, r0.y, c9
- mad r1, c8, r0.x, r1
- mad r1, c10, r0.z, r1
- mad r0, c11, r0.w, r1
- mad oPos.xy, r0.w, c0, r0
- mov oPos.zw, r0
-
- // approximately 20 instruction slots used
- vs_4_0
- dcl_constantbuffer cb0[8], immediateIndexed
- dcl_constantbuffer cb1[1], immediateIndexed
- dcl_constantbuffer cb2[4], immediateIndexed
- dcl_input v0.xy
- dcl_output_siv o0.xyzw, position
- dcl_output o1.xy
- dcl_output o1.zw
- dcl_temps 2
- mad r0.xy, v0.xyxx, cb0[1].zwzz, cb0[1].xyxx
- mul r1.xyzw, r0.yyyy, cb0[5].xyzw
- mad r0.xyzw, cb0[4].xyzw, r0.xxxx, r1.xyzw
- add r0.xyzw, r0.xyzw, cb0[7].xyzw
- div r1.xyz, r0.xyzx, r0.wwww
- mov r1.w, r0.w
- add r0.xy, r0.xyxx, -cb0[2].xyxx
- div o1.zw, r0.xxxy, cb0[2].zzzw
- add r0.xyzw, r1.xyzw, -cb1[0].xyzw
- mul r0.xyz, r0.wwww, r0.xyzx
- mul r1.xyzw, r0.yyyy, cb2[1].xyzw
- mad r1.xyzw, cb2[0].xyzw, r0.xxxx, r1.xyzw
- mad r1.xyzw, cb2[2].xyzw, r0.zzzz, r1.xyzw
- mad o0.xyzw, cb2[3].xyzw, r0.wwww, r1.xyzw
- mad o1.xy, v0.xyxx, cb0[0].zwzz, cb0[0].xyxx
- ret
- // Approximately 16 instruction slots used
-
- };
- GeometryShader = NULL;
- PixelShader = asm {
- //
- // Generated by Microsoft (R) HLSL Shader Compiler 6.3.9600.16384
- //
- //
- // Buffer Definitions:
- //
- // cbuffer PerLayer
- // {
- //
- // float4 vTextureCoords; // Offset: 0 Size: 16 [unused]
- // float4 vLayerQuad; // Offset: 16 Size: 16 [unused]
- // float4 vMaskQuad; // Offset: 32 Size: 16 [unused]
- // float fLayerOpacity; // Offset: 48 Size: 4
- // float4x4 mLayerTransform; // Offset: 64 Size: 64 [unused]
- //
- // }
- //
- //
- // Resource Bindings:
- //
- // Name Type Format Dim Slot Elements
- // ------------------------------ ---------- ------- ----------- ---- --------
- // LayerTextureSamplerLinear sampler NA NA 0 1
- // tRGB texture float4 2d 0 1
- // tMask texture float4 2d 1 1
- // PerLayer cbuffer NA NA 0 1
- //
- //
- //
- // Input signature:
- //
- // Name Index Mask Register SysValue Format Used
- // -------------------- ----- ------ -------- -------- ------- ------
- // SV_Position 0 xyzw 0 POS float
- // TEXCOORD 0 xy 1 NONE float xy
- // TEXCOORD 1 zw 1 NONE float zw
- //
- //
- // Output signature:
- //
- // Name Index Mask Register SysValue Format Used
- // -------------------- ----- ------ -------- -------- ------- ------
- // SV_Target 0 xyzw 0 TARGET float xyzw
- //
- //
- // Constant buffer to DX9 shader constant mappings:
- //
- // Target Reg Buffer Start Reg # of Regs Data Conversion
- // ---------- ------- --------- --------- ----------------------
- // c0 cb0 3 1 ( FLT, FLT, FLT, FLT)
- //
- //
- // Sampler/Resource to DX9 shader sampler mappings:
- //
- // Target Sampler Source Sampler Source Resource
- // -------------- --------------- ----------------
- // s0 s0 t0
- // s1 s0 t1
- //
- //
- // Level9 shader bytecode:
- //
- ps_2_x
- dcl t0
- dcl_2d s0
- dcl_2d s1
- mov r0.xy, t0.wzzw
- texld r1, t0, s0
- texld r0, r0, s1
- mul r1.xyz, r1, c0.x
- mov r1.w, c0.x
- mul r0, r0.w, r1
- mov oC0, r0
-
- // approximately 7 instruction slots used (2 texture, 5 arithmetic)
- ps_4_0
- dcl_constantbuffer cb0[4], immediateIndexed
- dcl_sampler s0, mode_default
- dcl_resource_texture2d (float,float,float,float) t0
- dcl_resource_texture2d (float,float,float,float) t1
- dcl_input_ps linear v1.xy
- dcl_input_ps linear v1.zw
- dcl_output o0.xyzw
- dcl_temps 2
- sample r0.xyzw, v1.xyxx, t0.xyzw, s0
- mul r0.xyz, r0.xyzx, cb0[3].xxxx
- sample r1.xyzw, v1.zwzz, t1.xyzw, s0
- mov r0.w, cb0[3].x
- mul o0.xyzw, r0.xyzw, r1.wwww
- ret
- // Approximately 6 instruction slots used
-
- };
- }
-
-}
-
-technique10 RenderRGBLayerPremulPointMask
-{
- pass P0
- {
- RasterizerState = LayerRast;
- AB_BlendFactor = float4(0, 0, 0, 0);
- AB_SampleMask = uint(0xffffffff);
- BlendState = Premul;
- VertexShader = asm {
- //
- // Generated by Microsoft (R) HLSL Shader Compiler 6.3.9600.16384
- //
- //
- // Buffer Definitions:
- //
- // cbuffer PerLayer
- // {
- //
- // float4 vTextureCoords; // Offset: 0 Size: 16
- // float4 vLayerQuad; // Offset: 16 Size: 16
- // float4 vMaskQuad; // Offset: 32 Size: 16
- // float fLayerOpacity; // Offset: 48 Size: 4 [unused]
- // float4x4 mLayerTransform; // Offset: 64 Size: 64
- //
- // }
- //
- // cbuffer PerOccasionalLayer
- // {
- //
- // float4 vRenderTargetOffset; // Offset: 0 Size: 16
- // float4 fLayerColor; // Offset: 16 Size: 16 [unused]
- //
- // }
- //
- // cbuffer PerLayerManager
- // {
- //
- // float4x4 mProjection; // Offset: 0 Size: 64
- //
- // }
- //
- //
- // Resource Bindings:
- //
- // Name Type Format Dim Slot Elements
- // ------------------------------ ---------- ------- ----------- ---- --------
- // PerLayer cbuffer NA NA 0 1
- // PerOccasionalLayer cbuffer NA NA 1 1
- // PerLayerManager cbuffer NA NA 2 1
- //
- //
- //
- // Input signature:
- //
- // Name Index Mask Register SysValue Format Used
- // -------------------- ----- ------ -------- -------- ------- ------
- // POSITION 0 xy 0 NONE float xy
- //
- //
- // Output signature:
- //
- // Name Index Mask Register SysValue Format Used
- // -------------------- ----- ------ -------- -------- ------- ------
- // SV_Position 0 xyzw 0 POS float xyzw
- // TEXCOORD 0 xy 1 NONE float xy
- // TEXCOORD 1 zw 1 NONE float zw
- //
- //
- // Constant buffer to DX9 shader constant mappings:
- //
- // Target Reg Buffer Start Reg # of Regs Data Conversion
- // ---------- ------- --------- --------- ----------------------
- // c1 cb0 0 3 ( FLT, FLT, FLT, FLT)
- // c4 cb0 4 2 ( FLT, FLT, FLT, FLT)
- // c6 cb0 7 1 ( FLT, FLT, FLT, FLT)
- // c7 cb1 0 1 ( FLT, FLT, FLT, FLT)
- // c8 cb2 0 4 ( FLT, FLT, FLT, FLT)
- //
- //
- // Runtime generated constant mappings:
- //
- // Target Reg Constant Description
- // ---------- --------------------------------------------------
- // c0 Vertex Shader position offset
- //
- //
- // Level9 shader bytecode:
- //
- vs_2_x
- dcl_texcoord v0
- rcp r0.x, c3.z
- mad r0.yz, v0.xxyw, c2.xzww, c2.xxyw
- mul r1, r0.z, c5
- mad r1, c4, r0.y, r1
- add r1, r1, c6
- add r0.yz, r1.xxyw, -c3.xxyw
- mul oT0.w, r0.x, r0.y
- rcp r0.x, c3.w
- mul oT0.z, r0.x, r0.z
- mad oT0.xy, v0, c1.zwzw, c1
- rcp r0.x, r1.w
- mul r1.xyz, r0.x, r1
- add r0, r1, -c7
- mul r0.xyz, r0.w, r0
- mul r1, r0.y, c9
- mad r1, c8, r0.x, r1
- mad r1, c10, r0.z, r1
- mad r0, c11, r0.w, r1
- mad oPos.xy, r0.w, c0, r0
- mov oPos.zw, r0
-
- // approximately 20 instruction slots used
- vs_4_0
- dcl_constantbuffer cb0[8], immediateIndexed
- dcl_constantbuffer cb1[1], immediateIndexed
- dcl_constantbuffer cb2[4], immediateIndexed
- dcl_input v0.xy
- dcl_output_siv o0.xyzw, position
- dcl_output o1.xy
- dcl_output o1.zw
- dcl_temps 2
- mad r0.xy, v0.xyxx, cb0[1].zwzz, cb0[1].xyxx
- mul r1.xyzw, r0.yyyy, cb0[5].xyzw
- mad r0.xyzw, cb0[4].xyzw, r0.xxxx, r1.xyzw
- add r0.xyzw, r0.xyzw, cb0[7].xyzw
- div r1.xyz, r0.xyzx, r0.wwww
- mov r1.w, r0.w
- add r0.xy, r0.xyxx, -cb0[2].xyxx
- div o1.zw, r0.xxxy, cb0[2].zzzw
- add r0.xyzw, r1.xyzw, -cb1[0].xyzw
- mul r0.xyz, r0.wwww, r0.xyzx
- mul r1.xyzw, r0.yyyy, cb2[1].xyzw
- mad r1.xyzw, cb2[0].xyzw, r0.xxxx, r1.xyzw
- mad r1.xyzw, cb2[2].xyzw, r0.zzzz, r1.xyzw
- mad o0.xyzw, cb2[3].xyzw, r0.wwww, r1.xyzw
- mad o1.xy, v0.xyxx, cb0[0].zwzz, cb0[0].xyxx
- ret
- // Approximately 16 instruction slots used
-
- };
- GeometryShader = NULL;
- PixelShader = asm {
- //
- // Generated by Microsoft (R) HLSL Shader Compiler 6.3.9600.16384
- //
- //
- // Buffer Definitions:
- //
- // cbuffer PerLayer
- // {
- //
- // float4 vTextureCoords; // Offset: 0 Size: 16 [unused]
- // float4 vLayerQuad; // Offset: 16 Size: 16 [unused]
- // float4 vMaskQuad; // Offset: 32 Size: 16 [unused]
- // float fLayerOpacity; // Offset: 48 Size: 4
- // float4x4 mLayerTransform; // Offset: 64 Size: 64 [unused]
- //
- // }
- //
- //
- // Resource Bindings:
- //
- // Name Type Format Dim Slot Elements
- // ------------------------------ ---------- ------- ----------- ---- --------
- // LayerTextureSamplerLinear sampler NA NA 0 1
- // LayerTextureSamplerPoint sampler NA NA 1 1
- // tRGB texture float4 2d 0 1
- // tMask texture float4 2d 1 1
- // PerLayer cbuffer NA NA 0 1
- //
- //
- //
- // Input signature:
- //
- // Name Index Mask Register SysValue Format Used
- // -------------------- ----- ------ -------- -------- ------- ------
- // SV_Position 0 xyzw 0 POS float
- // TEXCOORD 0 xy 1 NONE float xy
- // TEXCOORD 1 zw 1 NONE float zw
- //
- //
- // Output signature:
- //
- // Name Index Mask Register SysValue Format Used
- // -------------------- ----- ------ -------- -------- ------- ------
- // SV_Target 0 xyzw 0 TARGET float xyzw
- //
- //
- // Constant buffer to DX9 shader constant mappings:
- //
- // Target Reg Buffer Start Reg # of Regs Data Conversion
- // ---------- ------- --------- --------- ----------------------
- // c0 cb0 3 1 ( FLT, FLT, FLT, FLT)
- //
- //
- // Sampler/Resource to DX9 shader sampler mappings:
- //
- // Target Sampler Source Sampler Source Resource
- // -------------- --------------- ----------------
- // s0 s0 t1
- // s1 s1 t0
- //
- //
- // Level9 shader bytecode:
- //
- ps_2_x
- dcl t0
- dcl_2d s0
- dcl_2d s1
- mov r0.xy, t0.wzzw
- texld r1, t0, s1
- texld r0, r0, s0
- mul r1.xyz, r1, c0.x
- mov r1.w, c0.x
- mul r0, r0.w, r1
- mov oC0, r0
-
- // approximately 7 instruction slots used (2 texture, 5 arithmetic)
- ps_4_0
- dcl_constantbuffer cb0[4], immediateIndexed
- dcl_sampler s0, mode_default
- dcl_sampler s1, mode_default
- dcl_resource_texture2d (float,float,float,float) t0
- dcl_resource_texture2d (float,float,float,float) t1
- dcl_input_ps linear v1.xy
- dcl_input_ps linear v1.zw
- dcl_output o0.xyzw
- dcl_temps 2
- sample r0.xyzw, v1.xyxx, t0.xyzw, s1
- mul r0.xyz, r0.xyzx, cb0[3].xxxx
- sample r1.xyzw, v1.zwzz, t1.xyzw, s0
- mov r0.w, cb0[3].x
- mul o0.xyzw, r0.xyzw, r1.wwww
- ret
- // Approximately 6 instruction slots used
-
- };
- }
-
-}
-
-technique10 RenderRGBALayerPremulMask
-{
- pass P0
- {
- RasterizerState = LayerRast;
- AB_BlendFactor = float4(0, 0, 0, 0);
- AB_SampleMask = uint(0xffffffff);
- BlendState = Premul;
- VertexShader = asm {
- //
- // Generated by Microsoft (R) HLSL Shader Compiler 6.3.9600.16384
- //
- //
- // Buffer Definitions:
- //
- // cbuffer PerLayer
- // {
- //
- // float4 vTextureCoords; // Offset: 0 Size: 16
- // float4 vLayerQuad; // Offset: 16 Size: 16
- // float4 vMaskQuad; // Offset: 32 Size: 16
- // float fLayerOpacity; // Offset: 48 Size: 4 [unused]
- // float4x4 mLayerTransform; // Offset: 64 Size: 64
- //
- // }
- //
- // cbuffer PerOccasionalLayer
- // {
- //
- // float4 vRenderTargetOffset; // Offset: 0 Size: 16
- // float4 fLayerColor; // Offset: 16 Size: 16 [unused]
- //
- // }
- //
- // cbuffer PerLayerManager
- // {
- //
- // float4x4 mProjection; // Offset: 0 Size: 64
- //
- // }
- //
- //
- // Resource Bindings:
- //
- // Name Type Format Dim Slot Elements
- // ------------------------------ ---------- ------- ----------- ---- --------
- // PerLayer cbuffer NA NA 0 1
- // PerOccasionalLayer cbuffer NA NA 1 1
- // PerLayerManager cbuffer NA NA 2 1
- //
- //
- //
- // Input signature:
- //
- // Name Index Mask Register SysValue Format Used
- // -------------------- ----- ------ -------- -------- ------- ------
- // POSITION 0 xy 0 NONE float xy
- //
- //
- // Output signature:
- //
- // Name Index Mask Register SysValue Format Used
- // -------------------- ----- ------ -------- -------- ------- ------
- // SV_Position 0 xyzw 0 POS float xyzw
- // TEXCOORD 0 xy 1 NONE float xy
- // TEXCOORD 1 zw 1 NONE float zw
- //
- //
- // Constant buffer to DX9 shader constant mappings:
- //
- // Target Reg Buffer Start Reg # of Regs Data Conversion
- // ---------- ------- --------- --------- ----------------------
- // c1 cb0 0 3 ( FLT, FLT, FLT, FLT)
- // c4 cb0 4 2 ( FLT, FLT, FLT, FLT)
- // c6 cb0 7 1 ( FLT, FLT, FLT, FLT)
- // c7 cb1 0 1 ( FLT, FLT, FLT, FLT)
- // c8 cb2 0 4 ( FLT, FLT, FLT, FLT)
- //
- //
- // Runtime generated constant mappings:
- //
- // Target Reg Constant Description
- // ---------- --------------------------------------------------
- // c0 Vertex Shader position offset
- //
- //
- // Level9 shader bytecode:
- //
- vs_2_x
- dcl_texcoord v0
- rcp r0.x, c3.z
- mad r0.yz, v0.xxyw, c2.xzww, c2.xxyw
- mul r1, r0.z, c5
- mad r1, c4, r0.y, r1
- add r1, r1, c6
- add r0.yz, r1.xxyw, -c3.xxyw
- mul oT0.w, r0.x, r0.y
- rcp r0.x, c3.w
- mul oT0.z, r0.x, r0.z
- mad oT0.xy, v0, c1.zwzw, c1
- rcp r0.x, r1.w
- mul r1.xyz, r0.x, r1
- add r0, r1, -c7
- mul r0.xyz, r0.w, r0
- mul r1, r0.y, c9
- mad r1, c8, r0.x, r1
- mad r1, c10, r0.z, r1
- mad r0, c11, r0.w, r1
- mad oPos.xy, r0.w, c0, r0
- mov oPos.zw, r0
-
- // approximately 20 instruction slots used
- vs_4_0
- dcl_constantbuffer cb0[8], immediateIndexed
- dcl_constantbuffer cb1[1], immediateIndexed
- dcl_constantbuffer cb2[4], immediateIndexed
- dcl_input v0.xy
- dcl_output_siv o0.xyzw, position
- dcl_output o1.xy
- dcl_output o1.zw
- dcl_temps 2
- mad r0.xy, v0.xyxx, cb0[1].zwzz, cb0[1].xyxx
- mul r1.xyzw, r0.yyyy, cb0[5].xyzw
- mad r0.xyzw, cb0[4].xyzw, r0.xxxx, r1.xyzw
- add r0.xyzw, r0.xyzw, cb0[7].xyzw
- div r1.xyz, r0.xyzx, r0.wwww
- mov r1.w, r0.w
- add r0.xy, r0.xyxx, -cb0[2].xyxx
- div o1.zw, r0.xxxy, cb0[2].zzzw
- add r0.xyzw, r1.xyzw, -cb1[0].xyzw
- mul r0.xyz, r0.wwww, r0.xyzx
- mul r1.xyzw, r0.yyyy, cb2[1].xyzw
- mad r1.xyzw, cb2[0].xyzw, r0.xxxx, r1.xyzw
- mad r1.xyzw, cb2[2].xyzw, r0.zzzz, r1.xyzw
- mad o0.xyzw, cb2[3].xyzw, r0.wwww, r1.xyzw
- mad o1.xy, v0.xyxx, cb0[0].zwzz, cb0[0].xyxx
- ret
- // Approximately 16 instruction slots used
-
- };
- GeometryShader = NULL;
- PixelShader = asm {
- //
- // Generated by Microsoft (R) HLSL Shader Compiler 6.3.9600.16384
- //
- //
- // Buffer Definitions:
- //
- // cbuffer PerLayer
- // {
- //
- // float4 vTextureCoords; // Offset: 0 Size: 16 [unused]
- // float4 vLayerQuad; // Offset: 16 Size: 16 [unused]
- // float4 vMaskQuad; // Offset: 32 Size: 16 [unused]
- // float fLayerOpacity; // Offset: 48 Size: 4
- // float4x4 mLayerTransform; // Offset: 64 Size: 64 [unused]
- //
- // }
- //
- //
- // Resource Bindings:
- //
- // Name Type Format Dim Slot Elements
- // ------------------------------ ---------- ------- ----------- ---- --------
- // LayerTextureSamplerLinear sampler NA NA 0 1
- // tRGB texture float4 2d 0 1
- // tMask texture float4 2d 1 1
- // PerLayer cbuffer NA NA 0 1
- //
- //
- //
- // Input signature:
- //
- // Name Index Mask Register SysValue Format Used
- // -------------------- ----- ------ -------- -------- ------- ------
- // SV_Position 0 xyzw 0 POS float
- // TEXCOORD 0 xy 1 NONE float xy
- // TEXCOORD 1 zw 1 NONE float zw
- //
- //
- // Output signature:
- //
- // Name Index Mask Register SysValue Format Used
- // -------------------- ----- ------ -------- -------- ------- ------
- // SV_Target 0 xyzw 0 TARGET float xyzw
- //
- //
- // Constant buffer to DX9 shader constant mappings:
- //
- // Target Reg Buffer Start Reg # of Regs Data Conversion
- // ---------- ------- --------- --------- ----------------------
- // c0 cb0 3 1 ( FLT, FLT, FLT, FLT)
- //
- //
- // Sampler/Resource to DX9 shader sampler mappings:
- //
- // Target Sampler Source Sampler Source Resource
- // -------------- --------------- ----------------
- // s0 s0 t0
- // s1 s0 t1
- //
- //
- // Level9 shader bytecode:
- //
- ps_2_x
- dcl t0
- dcl_2d s0
- dcl_2d s1
- mov r0.xy, t0.wzzw
- texld r1, t0, s0
- texld r0, r0, s1
- mul r1, r1, c0.x
- mul r0, r0.w, r1
- mov oC0, r0
-
- // approximately 6 instruction slots used (2 texture, 4 arithmetic)
- ps_4_0
- dcl_constantbuffer cb0[4], immediateIndexed
- dcl_sampler s0, mode_default
- dcl_resource_texture2d (float,float,float,float) t0
- dcl_resource_texture2d (float,float,float,float) t1
- dcl_input_ps linear v1.xy
- dcl_input_ps linear v1.zw
- dcl_output o0.xyzw
- dcl_temps 2
- sample r0.xyzw, v1.xyxx, t0.xyzw, s0
- mul r0.xyzw, r0.xyzw, cb0[3].xxxx
- sample r1.xyzw, v1.zwzz, t1.xyzw, s0
- mul o0.xyzw, r0.xyzw, r1.wwww
- ret
- // Approximately 5 instruction slots used
-
- };
- }
-
-}
-
-technique10 RenderRGBALayerPremulMask3D
-{
- pass P0
- {
- RasterizerState = LayerRast;
- AB_BlendFactor = float4(0, 0, 0, 0);
- AB_SampleMask = uint(0xffffffff);
- BlendState = Premul;
- VertexShader = asm {
- //
- // Generated by Microsoft (R) HLSL Shader Compiler 6.3.9600.16384
- //
- //
- // Buffer Definitions:
- //
- // cbuffer PerLayer
- // {
- //
- // float4 vTextureCoords; // Offset: 0 Size: 16
- // float4 vLayerQuad; // Offset: 16 Size: 16
- // float4 vMaskQuad; // Offset: 32 Size: 16
- // float fLayerOpacity; // Offset: 48 Size: 4 [unused]
- // float4x4 mLayerTransform; // Offset: 64 Size: 64
- //
- // }
- //
- // cbuffer PerOccasionalLayer
- // {
- //
- // float4 vRenderTargetOffset; // Offset: 0 Size: 16
- // float4 fLayerColor; // Offset: 16 Size: 16 [unused]
- //
- // }
- //
- // cbuffer PerLayerManager
- // {
- //
- // float4x4 mProjection; // Offset: 0 Size: 64
- //
- // }
- //
- //
- // Resource Bindings:
- //
- // Name Type Format Dim Slot Elements
- // ------------------------------ ---------- ------- ----------- ---- --------
- // PerLayer cbuffer NA NA 0 1
- // PerOccasionalLayer cbuffer NA NA 1 1
- // PerLayerManager cbuffer NA NA 2 1
- //
- //
- //
- // Input signature:
- //
- // Name Index Mask Register SysValue Format Used
- // -------------------- ----- ------ -------- -------- ------- ------
- // POSITION 0 xy 0 NONE float xy
- //
- //
- // Output signature:
- //
- // Name Index Mask Register SysValue Format Used
- // -------------------- ----- ------ -------- -------- ------- ------
- // SV_Position 0 xyzw 0 POS float xyzw
- // TEXCOORD 0 xy 1 NONE float xy
- // TEXCOORD 1 xyz 2 NONE float xyz
- //
- //
- // Constant buffer to DX9 shader constant mappings:
- //
- // Target Reg Buffer Start Reg # of Regs Data Conversion
- // ---------- ------- --------- --------- ----------------------
- // c1 cb0 0 3 ( FLT, FLT, FLT, FLT)
- // c4 cb0 4 2 ( FLT, FLT, FLT, FLT)
- // c6 cb0 7 1 ( FLT, FLT, FLT, FLT)
- // c7 cb1 0 1 ( FLT, FLT, FLT, FLT)
- // c8 cb2 0 4 ( FLT, FLT, FLT, FLT)
- //
- //
- // Runtime generated constant mappings:
- //
- // Target Reg Constant Description
- // ---------- --------------------------------------------------
- // c0 Vertex Shader position offset
- //
- //
- // Level9 shader bytecode:
- //
- vs_2_x
- def c12, 1, 0, 0, 0
- dcl_texcoord v0
- mov r0.z, c12.x
- rcp r0.w, c3.z
- mad r1.xy, v0, c2.zwzw, c2
- mul r2, r1.y, c5
- mad r1, c4, r1.x, r2
- add r1, r1, c6
- rcp r2.x, r1.w
- mad r2.yz, r1.xxyw, r2.x, -c3.xxyw
- mul r1.xyz, r1, r2.x
- mul r0.x, r0.w, r2.y
- rcp r0.w, c3.w
- mul r0.y, r0.w, r2.z
- mul oT1.xyz, r0, r1.w
- add r0, r1, -c7
- mad oT0.xy, v0, c1.zwzw, c1
- mul r0.xyz, r0.w, r0
- mul r1, r0.y, c9
- mad r1, c8, r0.x, r1
- mad r1, c10, r0.z, r1
- mad r0, c11, r0.w, r1
- mad oPos.xy, r0.w, c0, r0
- mov oPos.zw, r0
-
- // approximately 22 instruction slots used
- vs_4_0
- dcl_constantbuffer cb0[8], immediateIndexed
- dcl_constantbuffer cb1[1], immediateIndexed
- dcl_constantbuffer cb2[4], immediateIndexed
- dcl_input v0.xy
- dcl_output_siv o0.xyzw, position
- dcl_output o1.xy
- dcl_output o2.xyz
- dcl_temps 3
- mad r0.xy, v0.xyxx, cb0[1].zwzz, cb0[1].xyxx
- mul r1.xyzw, r0.yyyy, cb0[5].xyzw
- mad r0.xyzw, cb0[4].xyzw, r0.xxxx, r1.xyzw
- add r0.xyzw, r0.xyzw, cb0[7].xyzw
- div r0.xyz, r0.xyzx, r0.wwww
- add r1.xyzw, r0.xyzw, -cb1[0].xyzw
- add r0.xy, r0.xyxx, -cb0[2].xyxx
- div r0.xy, r0.xyxx, cb0[2].zwzz
- mul r1.xyz, r1.wwww, r1.xyzx
- mul r2.xyzw, r1.yyyy, cb2[1].xyzw
- mad r2.xyzw, cb2[0].xyzw, r1.xxxx, r2.xyzw
- mad r2.xyzw, cb2[2].xyzw, r1.zzzz, r2.xyzw
- mad o0.xyzw, cb2[3].xyzw, r1.wwww, r2.xyzw
- mad o1.xy, v0.xyxx, cb0[0].zwzz, cb0[0].xyxx
- mov r0.z, l(1.000000)
- mul o2.xyz, r0.wwww, r0.xyzx
- ret
- // Approximately 17 instruction slots used
-
- };
- GeometryShader = NULL;
- PixelShader = asm {
- //
- // Generated by Microsoft (R) HLSL Shader Compiler 6.3.9600.16384
- //
- //
- // Buffer Definitions:
- //
- // cbuffer PerLayer
- // {
- //
- // float4 vTextureCoords; // Offset: 0 Size: 16 [unused]
- // float4 vLayerQuad; // Offset: 16 Size: 16 [unused]
- // float4 vMaskQuad; // Offset: 32 Size: 16 [unused]
- // float fLayerOpacity; // Offset: 48 Size: 4
- // float4x4 mLayerTransform; // Offset: 64 Size: 64 [unused]
- //
- // }
- //
- //
- // Resource Bindings:
- //
- // Name Type Format Dim Slot Elements
- // ------------------------------ ---------- ------- ----------- ---- --------
- // LayerTextureSamplerLinear sampler NA NA 0 1
- // tRGB texture float4 2d 0 1
- // tMask texture float4 2d 1 1
- // PerLayer cbuffer NA NA 0 1
- //
- //
- //
- // Input signature:
- //
- // Name Index Mask Register SysValue Format Used
- // -------------------- ----- ------ -------- -------- ------- ------
- // SV_Position 0 xyzw 0 POS float
- // TEXCOORD 0 xy 1 NONE float xy
- // TEXCOORD 1 xyz 2 NONE float xyz
- //
- //
- // Output signature:
- //
- // Name Index Mask Register SysValue Format Used
- // -------------------- ----- ------ -------- -------- ------- ------
- // SV_Target 0 xyzw 0 TARGET float xyzw
- //
- //
- // Constant buffer to DX9 shader constant mappings:
- //
- // Target Reg Buffer Start Reg # of Regs Data Conversion
- // ---------- ------- --------- --------- ----------------------
- // c0 cb0 3 1 ( FLT, FLT, FLT, FLT)
- //
- //
- // Sampler/Resource to DX9 shader sampler mappings:
- //
- // Target Sampler Source Sampler Source Resource
- // -------------- --------------- ----------------
- // s0 s0 t0
- // s1 s0 t1
- //
- //
- // Level9 shader bytecode:
- //
- ps_2_x
- dcl t0.xy
- dcl t1.xyz
- dcl_2d s0
- dcl_2d s1
- rcp r0.w, t1.z
- mul r0.xy, r0.w, t1
- texld r1, t0, s0
- texld r0, r0, s1
- mul r1, r1, c0.x
- mul r0, r0.w, r1
- mov oC0, r0
-
- // approximately 7 instruction slots used (2 texture, 5 arithmetic)
- ps_4_0
- dcl_constantbuffer cb0[4], immediateIndexed
- dcl_sampler s0, mode_default
- dcl_resource_texture2d (float,float,float,float) t0
- dcl_resource_texture2d (float,float,float,float) t1
- dcl_input_ps linear v1.xy
- dcl_input_ps linear v2.xyz
- dcl_output o0.xyzw
- dcl_temps 2
- div r0.xy, v2.xyxx, v2.zzzz
- sample r0.xyzw, r0.xyxx, t1.xyzw, s0
- sample r1.xyzw, v1.xyxx, t0.xyzw, s0
- mul r1.xyzw, r1.xyzw, cb0[3].xxxx
- mul o0.xyzw, r0.wwww, r1.xyzw
- ret
- // Approximately 6 instruction slots used
-
- };
- }
-
-}
-
-technique10 RenderRGBALayerNonPremulMask
-{
- pass P0
- {
- RasterizerState = LayerRast;
- AB_BlendFactor = float4(0, 0, 0, 0);
- AB_SampleMask = uint(0xffffffff);
- BlendState = NonPremul;
- VertexShader = asm {
- //
- // Generated by Microsoft (R) HLSL Shader Compiler 6.3.9600.16384
- //
- //
- // Buffer Definitions:
- //
- // cbuffer PerLayer
- // {
- //
- // float4 vTextureCoords; // Offset: 0 Size: 16
- // float4 vLayerQuad; // Offset: 16 Size: 16
- // float4 vMaskQuad; // Offset: 32 Size: 16
- // float fLayerOpacity; // Offset: 48 Size: 4 [unused]
- // float4x4 mLayerTransform; // Offset: 64 Size: 64
- //
- // }
- //
- // cbuffer PerOccasionalLayer
- // {
- //
- // float4 vRenderTargetOffset; // Offset: 0 Size: 16
- // float4 fLayerColor; // Offset: 16 Size: 16 [unused]
- //
- // }
- //
- // cbuffer PerLayerManager
- // {
- //
- // float4x4 mProjection; // Offset: 0 Size: 64
- //
- // }
- //
- //
- // Resource Bindings:
- //
- // Name Type Format Dim Slot Elements
- // ------------------------------ ---------- ------- ----------- ---- --------
- // PerLayer cbuffer NA NA 0 1
- // PerOccasionalLayer cbuffer NA NA 1 1
- // PerLayerManager cbuffer NA NA 2 1
- //
- //
- //
- // Input signature:
- //
- // Name Index Mask Register SysValue Format Used
- // -------------------- ----- ------ -------- -------- ------- ------
- // POSITION 0 xy 0 NONE float xy
- //
- //
- // Output signature:
- //
- // Name Index Mask Register SysValue Format Used
- // -------------------- ----- ------ -------- -------- ------- ------
- // SV_Position 0 xyzw 0 POS float xyzw
- // TEXCOORD 0 xy 1 NONE float xy
- // TEXCOORD 1 zw 1 NONE float zw
- //
- //
- // Constant buffer to DX9 shader constant mappings:
- //
- // Target Reg Buffer Start Reg # of Regs Data Conversion
- // ---------- ------- --------- --------- ----------------------
- // c1 cb0 0 3 ( FLT, FLT, FLT, FLT)
- // c4 cb0 4 2 ( FLT, FLT, FLT, FLT)
- // c6 cb0 7 1 ( FLT, FLT, FLT, FLT)
- // c7 cb1 0 1 ( FLT, FLT, FLT, FLT)
- // c8 cb2 0 4 ( FLT, FLT, FLT, FLT)
- //
- //
- // Runtime generated constant mappings:
- //
- // Target Reg Constant Description
- // ---------- --------------------------------------------------
- // c0 Vertex Shader position offset
- //
- //
- // Level9 shader bytecode:
- //
- vs_2_x
- dcl_texcoord v0
- rcp r0.x, c3.z
- mad r0.yz, v0.xxyw, c2.xzww, c2.xxyw
- mul r1, r0.z, c5
- mad r1, c4, r0.y, r1
- add r1, r1, c6
- add r0.yz, r1.xxyw, -c3.xxyw
- mul oT0.w, r0.x, r0.y
- rcp r0.x, c3.w
- mul oT0.z, r0.x, r0.z
- mad oT0.xy, v0, c1.zwzw, c1
- rcp r0.x, r1.w
- mul r1.xyz, r0.x, r1
- add r0, r1, -c7
- mul r0.xyz, r0.w, r0
- mul r1, r0.y, c9
- mad r1, c8, r0.x, r1
- mad r1, c10, r0.z, r1
- mad r0, c11, r0.w, r1
- mad oPos.xy, r0.w, c0, r0
- mov oPos.zw, r0
-
- // approximately 20 instruction slots used
- vs_4_0
- dcl_constantbuffer cb0[8], immediateIndexed
- dcl_constantbuffer cb1[1], immediateIndexed
- dcl_constantbuffer cb2[4], immediateIndexed
- dcl_input v0.xy
- dcl_output_siv o0.xyzw, position
- dcl_output o1.xy
- dcl_output o1.zw
- dcl_temps 2
- mad r0.xy, v0.xyxx, cb0[1].zwzz, cb0[1].xyxx
- mul r1.xyzw, r0.yyyy, cb0[5].xyzw
- mad r0.xyzw, cb0[4].xyzw, r0.xxxx, r1.xyzw
- add r0.xyzw, r0.xyzw, cb0[7].xyzw
- div r1.xyz, r0.xyzx, r0.wwww
- mov r1.w, r0.w
- add r0.xy, r0.xyxx, -cb0[2].xyxx
- div o1.zw, r0.xxxy, cb0[2].zzzw
- add r0.xyzw, r1.xyzw, -cb1[0].xyzw
- mul r0.xyz, r0.wwww, r0.xyzx
- mul r1.xyzw, r0.yyyy, cb2[1].xyzw
- mad r1.xyzw, cb2[0].xyzw, r0.xxxx, r1.xyzw
- mad r1.xyzw, cb2[2].xyzw, r0.zzzz, r1.xyzw
- mad o0.xyzw, cb2[3].xyzw, r0.wwww, r1.xyzw
- mad o1.xy, v0.xyxx, cb0[0].zwzz, cb0[0].xyxx
- ret
- // Approximately 16 instruction slots used
-
- };
- GeometryShader = NULL;
- PixelShader = asm {
- //
- // Generated by Microsoft (R) HLSL Shader Compiler 6.3.9600.16384
- //
- //
- // Buffer Definitions:
- //
- // cbuffer PerLayer
- // {
- //
- // float4 vTextureCoords; // Offset: 0 Size: 16 [unused]
- // float4 vLayerQuad; // Offset: 16 Size: 16 [unused]
- // float4 vMaskQuad; // Offset: 32 Size: 16 [unused]
- // float fLayerOpacity; // Offset: 48 Size: 4
- // float4x4 mLayerTransform; // Offset: 64 Size: 64 [unused]
- //
- // }
- //
- //
- // Resource Bindings:
- //
- // Name Type Format Dim Slot Elements
- // ------------------------------ ---------- ------- ----------- ---- --------
- // LayerTextureSamplerLinear sampler NA NA 0 1
- // tRGB texture float4 2d 0 1
- // tMask texture float4 2d 1 1
- // PerLayer cbuffer NA NA 0 1
- //
- //
- //
- // Input signature:
- //
- // Name Index Mask Register SysValue Format Used
- // -------------------- ----- ------ -------- -------- ------- ------
- // SV_Position 0 xyzw 0 POS float
- // TEXCOORD 0 xy 1 NONE float xy
- // TEXCOORD 1 zw 1 NONE float zw
- //
- //
- // Output signature:
- //
- // Name Index Mask Register SysValue Format Used
- // -------------------- ----- ------ -------- -------- ------- ------
- // SV_Target 0 xyzw 0 TARGET float xyzw
- //
- //
- // Constant buffer to DX9 shader constant mappings:
- //
- // Target Reg Buffer Start Reg # of Regs Data Conversion
- // ---------- ------- --------- --------- ----------------------
- // c0 cb0 3 1 ( FLT, FLT, FLT, FLT)
- //
- //
- // Sampler/Resource to DX9 shader sampler mappings:
- //
- // Target Sampler Source Sampler Source Resource
- // -------------- --------------- ----------------
- // s0 s0 t0
- // s1 s0 t1
- //
- //
- // Level9 shader bytecode:
- //
- ps_2_x
- dcl t0
- dcl_2d s0
- dcl_2d s1
- mov r0.xy, t0.wzzw
- texld r1, t0, s0
- texld r0, r0, s1
- mul r1, r1, c0.x
- mul r0, r0.w, r1
- mov oC0, r0
-
- // approximately 6 instruction slots used (2 texture, 4 arithmetic)
- ps_4_0
- dcl_constantbuffer cb0[4], immediateIndexed
- dcl_sampler s0, mode_default
- dcl_resource_texture2d (float,float,float,float) t0
- dcl_resource_texture2d (float,float,float,float) t1
- dcl_input_ps linear v1.xy
- dcl_input_ps linear v1.zw
- dcl_output o0.xyzw
- dcl_temps 2
- sample r0.xyzw, v1.xyxx, t0.xyzw, s0
- mul r0.xyzw, r0.xyzw, cb0[3].xxxx
- sample r1.xyzw, v1.zwzz, t1.xyzw, s0
- mul o0.xyzw, r0.xyzw, r1.wwww
- ret
- // Approximately 5 instruction slots used
-
- };
- }
-
-}
-
-technique10 RenderRGBALayerPremulPointMask
-{
- pass P0
- {
- RasterizerState = LayerRast;
- AB_BlendFactor = float4(0, 0, 0, 0);
- AB_SampleMask = uint(0xffffffff);
- BlendState = Premul;
- VertexShader = asm {
- //
- // Generated by Microsoft (R) HLSL Shader Compiler 6.3.9600.16384
- //
- //
- // Buffer Definitions:
- //
- // cbuffer PerLayer
- // {
- //
- // float4 vTextureCoords; // Offset: 0 Size: 16
- // float4 vLayerQuad; // Offset: 16 Size: 16
- // float4 vMaskQuad; // Offset: 32 Size: 16
- // float fLayerOpacity; // Offset: 48 Size: 4 [unused]
- // float4x4 mLayerTransform; // Offset: 64 Size: 64
- //
- // }
- //
- // cbuffer PerOccasionalLayer
- // {
- //
- // float4 vRenderTargetOffset; // Offset: 0 Size: 16
- // float4 fLayerColor; // Offset: 16 Size: 16 [unused]
- //
- // }
- //
- // cbuffer PerLayerManager
- // {
- //
- // float4x4 mProjection; // Offset: 0 Size: 64
- //
- // }
- //
- //
- // Resource Bindings:
- //
- // Name Type Format Dim Slot Elements
- // ------------------------------ ---------- ------- ----------- ---- --------
- // PerLayer cbuffer NA NA 0 1
- // PerOccasionalLayer cbuffer NA NA 1 1
- // PerLayerManager cbuffer NA NA 2 1
- //
- //
- //
- // Input signature:
- //
- // Name Index Mask Register SysValue Format Used
- // -------------------- ----- ------ -------- -------- ------- ------
- // POSITION 0 xy 0 NONE float xy
- //
- //
- // Output signature:
- //
- // Name Index Mask Register SysValue Format Used
- // -------------------- ----- ------ -------- -------- ------- ------
- // SV_Position 0 xyzw 0 POS float xyzw
- // TEXCOORD 0 xy 1 NONE float xy
- // TEXCOORD 1 zw 1 NONE float zw
- //
- //
- // Constant buffer to DX9 shader constant mappings:
- //
- // Target Reg Buffer Start Reg # of Regs Data Conversion
- // ---------- ------- --------- --------- ----------------------
- // c1 cb0 0 3 ( FLT, FLT, FLT, FLT)
- // c4 cb0 4 2 ( FLT, FLT, FLT, FLT)
- // c6 cb0 7 1 ( FLT, FLT, FLT, FLT)
- // c7 cb1 0 1 ( FLT, FLT, FLT, FLT)
- // c8 cb2 0 4 ( FLT, FLT, FLT, FLT)
- //
- //
- // Runtime generated constant mappings:
- //
- // Target Reg Constant Description
- // ---------- --------------------------------------------------
- // c0 Vertex Shader position offset
- //
- //
- // Level9 shader bytecode:
- //
- vs_2_x
- dcl_texcoord v0
- rcp r0.x, c3.z
- mad r0.yz, v0.xxyw, c2.xzww, c2.xxyw
- mul r1, r0.z, c5
- mad r1, c4, r0.y, r1
- add r1, r1, c6
- add r0.yz, r1.xxyw, -c3.xxyw
- mul oT0.w, r0.x, r0.y
- rcp r0.x, c3.w
- mul oT0.z, r0.x, r0.z
- mad oT0.xy, v0, c1.zwzw, c1
- rcp r0.x, r1.w
- mul r1.xyz, r0.x, r1
- add r0, r1, -c7
- mul r0.xyz, r0.w, r0
- mul r1, r0.y, c9
- mad r1, c8, r0.x, r1
- mad r1, c10, r0.z, r1
- mad r0, c11, r0.w, r1
- mad oPos.xy, r0.w, c0, r0
- mov oPos.zw, r0
-
- // approximately 20 instruction slots used
- vs_4_0
- dcl_constantbuffer cb0[8], immediateIndexed
- dcl_constantbuffer cb1[1], immediateIndexed
- dcl_constantbuffer cb2[4], immediateIndexed
- dcl_input v0.xy
- dcl_output_siv o0.xyzw, position
- dcl_output o1.xy
- dcl_output o1.zw
- dcl_temps 2
- mad r0.xy, v0.xyxx, cb0[1].zwzz, cb0[1].xyxx
- mul r1.xyzw, r0.yyyy, cb0[5].xyzw
- mad r0.xyzw, cb0[4].xyzw, r0.xxxx, r1.xyzw
- add r0.xyzw, r0.xyzw, cb0[7].xyzw
- div r1.xyz, r0.xyzx, r0.wwww
- mov r1.w, r0.w
- add r0.xy, r0.xyxx, -cb0[2].xyxx
- div o1.zw, r0.xxxy, cb0[2].zzzw
- add r0.xyzw, r1.xyzw, -cb1[0].xyzw
- mul r0.xyz, r0.wwww, r0.xyzx
- mul r1.xyzw, r0.yyyy, cb2[1].xyzw
- mad r1.xyzw, cb2[0].xyzw, r0.xxxx, r1.xyzw
- mad r1.xyzw, cb2[2].xyzw, r0.zzzz, r1.xyzw
- mad o0.xyzw, cb2[3].xyzw, r0.wwww, r1.xyzw
- mad o1.xy, v0.xyxx, cb0[0].zwzz, cb0[0].xyxx
- ret
- // Approximately 16 instruction slots used
-
- };
- GeometryShader = NULL;
- PixelShader = asm {
- //
- // Generated by Microsoft (R) HLSL Shader Compiler 6.3.9600.16384
- //
- //
- // Buffer Definitions:
- //
- // cbuffer PerLayer
- // {
- //
- // float4 vTextureCoords; // Offset: 0 Size: 16 [unused]
- // float4 vLayerQuad; // Offset: 16 Size: 16 [unused]
- // float4 vMaskQuad; // Offset: 32 Size: 16 [unused]
- // float fLayerOpacity; // Offset: 48 Size: 4
- // float4x4 mLayerTransform; // Offset: 64 Size: 64 [unused]
- //
- // }
- //
- //
- // Resource Bindings:
- //
- // Name Type Format Dim Slot Elements
- // ------------------------------ ---------- ------- ----------- ---- --------
- // LayerTextureSamplerLinear sampler NA NA 0 1
- // LayerTextureSamplerPoint sampler NA NA 1 1
- // tRGB texture float4 2d 0 1
- // tMask texture float4 2d 1 1
- // PerLayer cbuffer NA NA 0 1
- //
- //
- //
- // Input signature:
- //
- // Name Index Mask Register SysValue Format Used
- // -------------------- ----- ------ -------- -------- ------- ------
- // SV_Position 0 xyzw 0 POS float
- // TEXCOORD 0 xy 1 NONE float xy
- // TEXCOORD 1 zw 1 NONE float zw
- //
- //
- // Output signature:
- //
- // Name Index Mask Register SysValue Format Used
- // -------------------- ----- ------ -------- -------- ------- ------
- // SV_Target 0 xyzw 0 TARGET float xyzw
- //
- //
- // Constant buffer to DX9 shader constant mappings:
- //
- // Target Reg Buffer Start Reg # of Regs Data Conversion
- // ---------- ------- --------- --------- ----------------------
- // c0 cb0 3 1 ( FLT, FLT, FLT, FLT)
- //
- //
- // Sampler/Resource to DX9 shader sampler mappings:
- //
- // Target Sampler Source Sampler Source Resource
- // -------------- --------------- ----------------
- // s0 s0 t1
- // s1 s1 t0
- //
- //
- // Level9 shader bytecode:
- //
- ps_2_x
- dcl t0
- dcl_2d s0
- dcl_2d s1
- mov r0.xy, t0.wzzw
- texld r1, t0, s1
- texld r0, r0, s0
- mul r1, r1, c0.x
- mul r0, r0.w, r1
- mov oC0, r0
-
- // approximately 6 instruction slots used (2 texture, 4 arithmetic)
- ps_4_0
- dcl_constantbuffer cb0[4], immediateIndexed
- dcl_sampler s0, mode_default
- dcl_sampler s1, mode_default
- dcl_resource_texture2d (float,float,float,float) t0
- dcl_resource_texture2d (float,float,float,float) t1
- dcl_input_ps linear v1.xy
- dcl_input_ps linear v1.zw
- dcl_output o0.xyzw
- dcl_temps 2
- sample r0.xyzw, v1.xyxx, t0.xyzw, s1
- mul r0.xyzw, r0.xyzw, cb0[3].xxxx
- sample r1.xyzw, v1.zwzz, t1.xyzw, s0
- mul o0.xyzw, r0.xyzw, r1.wwww
- ret
- // Approximately 5 instruction slots used
-
- };
- }
-
-}
-
-technique10 RenderRGBALayerNonPremulPointMask
-{
- pass P0
- {
- RasterizerState = LayerRast;
- AB_BlendFactor = float4(0, 0, 0, 0);
- AB_SampleMask = uint(0xffffffff);
- BlendState = NonPremul;
- VertexShader = asm {
- //
- // Generated by Microsoft (R) HLSL Shader Compiler 6.3.9600.16384
- //
- //
- // Buffer Definitions:
- //
- // cbuffer PerLayer
- // {
- //
- // float4 vTextureCoords; // Offset: 0 Size: 16
- // float4 vLayerQuad; // Offset: 16 Size: 16
- // float4 vMaskQuad; // Offset: 32 Size: 16
- // float fLayerOpacity; // Offset: 48 Size: 4 [unused]
- // float4x4 mLayerTransform; // Offset: 64 Size: 64
- //
- // }
- //
- // cbuffer PerOccasionalLayer
- // {
- //
- // float4 vRenderTargetOffset; // Offset: 0 Size: 16
- // float4 fLayerColor; // Offset: 16 Size: 16 [unused]
- //
- // }
- //
- // cbuffer PerLayerManager
- // {
- //
- // float4x4 mProjection; // Offset: 0 Size: 64
- //
- // }
- //
- //
- // Resource Bindings:
- //
- // Name Type Format Dim Slot Elements
- // ------------------------------ ---------- ------- ----------- ---- --------
- // PerLayer cbuffer NA NA 0 1
- // PerOccasionalLayer cbuffer NA NA 1 1
- // PerLayerManager cbuffer NA NA 2 1
- //
- //
- //
- // Input signature:
- //
- // Name Index Mask Register SysValue Format Used
- // -------------------- ----- ------ -------- -------- ------- ------
- // POSITION 0 xy 0 NONE float xy
- //
- //
- // Output signature:
- //
- // Name Index Mask Register SysValue Format Used
- // -------------------- ----- ------ -------- -------- ------- ------
- // SV_Position 0 xyzw 0 POS float xyzw
- // TEXCOORD 0 xy 1 NONE float xy
- // TEXCOORD 1 zw 1 NONE float zw
- //
- //
- // Constant buffer to DX9 shader constant mappings:
- //
- // Target Reg Buffer Start Reg # of Regs Data Conversion
- // ---------- ------- --------- --------- ----------------------
- // c1 cb0 0 3 ( FLT, FLT, FLT, FLT)
- // c4 cb0 4 2 ( FLT, FLT, FLT, FLT)
- // c6 cb0 7 1 ( FLT, FLT, FLT, FLT)
- // c7 cb1 0 1 ( FLT, FLT, FLT, FLT)
- // c8 cb2 0 4 ( FLT, FLT, FLT, FLT)
- //
- //
- // Runtime generated constant mappings:
- //
- // Target Reg Constant Description
- // ---------- --------------------------------------------------
- // c0 Vertex Shader position offset
- //
- //
- // Level9 shader bytecode:
- //
- vs_2_x
- dcl_texcoord v0
- rcp r0.x, c3.z
- mad r0.yz, v0.xxyw, c2.xzww, c2.xxyw
- mul r1, r0.z, c5
- mad r1, c4, r0.y, r1
- add r1, r1, c6
- add r0.yz, r1.xxyw, -c3.xxyw
- mul oT0.w, r0.x, r0.y
- rcp r0.x, c3.w
- mul oT0.z, r0.x, r0.z
- mad oT0.xy, v0, c1.zwzw, c1
- rcp r0.x, r1.w
- mul r1.xyz, r0.x, r1
- add r0, r1, -c7
- mul r0.xyz, r0.w, r0
- mul r1, r0.y, c9
- mad r1, c8, r0.x, r1
- mad r1, c10, r0.z, r1
- mad r0, c11, r0.w, r1
- mad oPos.xy, r0.w, c0, r0
- mov oPos.zw, r0
-
- // approximately 20 instruction slots used
- vs_4_0
- dcl_constantbuffer cb0[8], immediateIndexed
- dcl_constantbuffer cb1[1], immediateIndexed
- dcl_constantbuffer cb2[4], immediateIndexed
- dcl_input v0.xy
- dcl_output_siv o0.xyzw, position
- dcl_output o1.xy
- dcl_output o1.zw
- dcl_temps 2
- mad r0.xy, v0.xyxx, cb0[1].zwzz, cb0[1].xyxx
- mul r1.xyzw, r0.yyyy, cb0[5].xyzw
- mad r0.xyzw, cb0[4].xyzw, r0.xxxx, r1.xyzw
- add r0.xyzw, r0.xyzw, cb0[7].xyzw
- div r1.xyz, r0.xyzx, r0.wwww
- mov r1.w, r0.w
- add r0.xy, r0.xyxx, -cb0[2].xyxx
- div o1.zw, r0.xxxy, cb0[2].zzzw
- add r0.xyzw, r1.xyzw, -cb1[0].xyzw
- mul r0.xyz, r0.wwww, r0.xyzx
- mul r1.xyzw, r0.yyyy, cb2[1].xyzw
- mad r1.xyzw, cb2[0].xyzw, r0.xxxx, r1.xyzw
- mad r1.xyzw, cb2[2].xyzw, r0.zzzz, r1.xyzw
- mad o0.xyzw, cb2[3].xyzw, r0.wwww, r1.xyzw
- mad o1.xy, v0.xyxx, cb0[0].zwzz, cb0[0].xyxx
- ret
- // Approximately 16 instruction slots used
-
- };
- GeometryShader = NULL;
- PixelShader = asm {
- //
- // Generated by Microsoft (R) HLSL Shader Compiler 6.3.9600.16384
- //
- //
- // Buffer Definitions:
- //
- // cbuffer PerLayer
- // {
- //
- // float4 vTextureCoords; // Offset: 0 Size: 16 [unused]
- // float4 vLayerQuad; // Offset: 16 Size: 16 [unused]
- // float4 vMaskQuad; // Offset: 32 Size: 16 [unused]
- // float fLayerOpacity; // Offset: 48 Size: 4
- // float4x4 mLayerTransform; // Offset: 64 Size: 64 [unused]
- //
- // }
- //
- //
- // Resource Bindings:
- //
- // Name Type Format Dim Slot Elements
- // ------------------------------ ---------- ------- ----------- ---- --------
- // LayerTextureSamplerLinear sampler NA NA 0 1
- // LayerTextureSamplerPoint sampler NA NA 1 1
- // tRGB texture float4 2d 0 1
- // tMask texture float4 2d 1 1
- // PerLayer cbuffer NA NA 0 1
- //
- //
- //
- // Input signature:
- //
- // Name Index Mask Register SysValue Format Used
- // -------------------- ----- ------ -------- -------- ------- ------
- // SV_Position 0 xyzw 0 POS float
- // TEXCOORD 0 xy 1 NONE float xy
- // TEXCOORD 1 zw 1 NONE float zw
- //
- //
- // Output signature:
- //
- // Name Index Mask Register SysValue Format Used
- // -------------------- ----- ------ -------- -------- ------- ------
- // SV_Target 0 xyzw 0 TARGET float xyzw
- //
- //
- // Constant buffer to DX9 shader constant mappings:
- //
- // Target Reg Buffer Start Reg # of Regs Data Conversion
- // ---------- ------- --------- --------- ----------------------
- // c0 cb0 3 1 ( FLT, FLT, FLT, FLT)
- //
- //
- // Sampler/Resource to DX9 shader sampler mappings:
- //
- // Target Sampler Source Sampler Source Resource
- // -------------- --------------- ----------------
- // s0 s0 t1
- // s1 s1 t0
- //
- //
- // Level9 shader bytecode:
- //
- ps_2_x
- dcl t0
- dcl_2d s0
- dcl_2d s1
- mov r0.xy, t0.wzzw
- texld r1, t0, s1
- texld r0, r0, s0
- mul r1, r1, c0.x
- mul r0, r0.w, r1
- mov oC0, r0
-
- // approximately 6 instruction slots used (2 texture, 4 arithmetic)
- ps_4_0
- dcl_constantbuffer cb0[4], immediateIndexed
- dcl_sampler s0, mode_default
- dcl_sampler s1, mode_default
- dcl_resource_texture2d (float,float,float,float) t0
- dcl_resource_texture2d (float,float,float,float) t1
- dcl_input_ps linear v1.xy
- dcl_input_ps linear v1.zw
- dcl_output o0.xyzw
- dcl_temps 2
- sample r0.xyzw, v1.xyxx, t0.xyzw, s1
- mul r0.xyzw, r0.xyzw, cb0[3].xxxx
- sample r1.xyzw, v1.zwzz, t1.xyzw, s0
- mul o0.xyzw, r0.xyzw, r1.wwww
- ret
- // Approximately 5 instruction slots used
-
- };
- }
-
-}
-
-technique10 RenderYCbCrLayerMask
-{
- pass P0
- {
- RasterizerState = LayerRast;
- AB_BlendFactor = float4(0, 0, 0, 0);
- AB_SampleMask = uint(0xffffffff);
- BlendState = Premul;
- VertexShader = asm {
- //
- // Generated by Microsoft (R) HLSL Shader Compiler 6.3.9600.16384
- //
- //
- // Buffer Definitions:
- //
- // cbuffer PerLayer
- // {
- //
- // float4 vTextureCoords; // Offset: 0 Size: 16
- // float4 vLayerQuad; // Offset: 16 Size: 16
- // float4 vMaskQuad; // Offset: 32 Size: 16
- // float fLayerOpacity; // Offset: 48 Size: 4 [unused]
- // float4x4 mLayerTransform; // Offset: 64 Size: 64
- //
- // }
- //
- // cbuffer PerOccasionalLayer
- // {
- //
- // float4 vRenderTargetOffset; // Offset: 0 Size: 16
- // float4 fLayerColor; // Offset: 16 Size: 16 [unused]
- //
- // }
- //
- // cbuffer PerLayerManager
- // {
- //
- // float4x4 mProjection; // Offset: 0 Size: 64
- //
- // }
- //
- //
- // Resource Bindings:
- //
- // Name Type Format Dim Slot Elements
- // ------------------------------ ---------- ------- ----------- ---- --------
- // PerLayer cbuffer NA NA 0 1
- // PerOccasionalLayer cbuffer NA NA 1 1
- // PerLayerManager cbuffer NA NA 2 1
- //
- //
- //
- // Input signature:
- //
- // Name Index Mask Register SysValue Format Used
- // -------------------- ----- ------ -------- -------- ------- ------
- // POSITION 0 xy 0 NONE float xy
- //
- //
- // Output signature:
- //
- // Name Index Mask Register SysValue Format Used
- // -------------------- ----- ------ -------- -------- ------- ------
- // SV_Position 0 xyzw 0 POS float xyzw
- // TEXCOORD 0 xy 1 NONE float xy
- // TEXCOORD 1 zw 1 NONE float zw
- //
- //
- // Constant buffer to DX9 shader constant mappings:
- //
- // Target Reg Buffer Start Reg # of Regs Data Conversion
- // ---------- ------- --------- --------- ----------------------
- // c1 cb0 0 3 ( FLT, FLT, FLT, FLT)
- // c4 cb0 4 2 ( FLT, FLT, FLT, FLT)
- // c6 cb0 7 1 ( FLT, FLT, FLT, FLT)
- // c7 cb1 0 1 ( FLT, FLT, FLT, FLT)
- // c8 cb2 0 4 ( FLT, FLT, FLT, FLT)
- //
- //
- // Runtime generated constant mappings:
- //
- // Target Reg Constant Description
- // ---------- --------------------------------------------------
- // c0 Vertex Shader position offset
- //
- //
- // Level9 shader bytecode:
- //
- vs_2_x
- dcl_texcoord v0
- rcp r0.x, c3.z
- mad r0.yz, v0.xxyw, c2.xzww, c2.xxyw
- mul r1, r0.z, c5
- mad r1, c4, r0.y, r1
- add r1, r1, c6
- add r0.yz, r1.xxyw, -c3.xxyw
- mul oT0.w, r0.x, r0.y
- rcp r0.x, c3.w
- mul oT0.z, r0.x, r0.z
- mad oT0.xy, v0, c1.zwzw, c1
- rcp r0.x, r1.w
- mul r1.xyz, r0.x, r1
- add r0, r1, -c7
- mul r0.xyz, r0.w, r0
- mul r1, r0.y, c9
- mad r1, c8, r0.x, r1
- mad r1, c10, r0.z, r1
- mad r0, c11, r0.w, r1
- mad oPos.xy, r0.w, c0, r0
- mov oPos.zw, r0
-
- // approximately 20 instruction slots used
- vs_4_0
- dcl_constantbuffer cb0[8], immediateIndexed
- dcl_constantbuffer cb1[1], immediateIndexed
- dcl_constantbuffer cb2[4], immediateIndexed
- dcl_input v0.xy
- dcl_output_siv o0.xyzw, position
- dcl_output o1.xy
- dcl_output o1.zw
- dcl_temps 2
- mad r0.xy, v0.xyxx, cb0[1].zwzz, cb0[1].xyxx
- mul r1.xyzw, r0.yyyy, cb0[5].xyzw
- mad r0.xyzw, cb0[4].xyzw, r0.xxxx, r1.xyzw
- add r0.xyzw, r0.xyzw, cb0[7].xyzw
- div r1.xyz, r0.xyzx, r0.wwww
- mov r1.w, r0.w
- add r0.xy, r0.xyxx, -cb0[2].xyxx
- div o1.zw, r0.xxxy, cb0[2].zzzw
- add r0.xyzw, r1.xyzw, -cb1[0].xyzw
- mul r0.xyz, r0.wwww, r0.xyzx
- mul r1.xyzw, r0.yyyy, cb2[1].xyzw
- mad r1.xyzw, cb2[0].xyzw, r0.xxxx, r1.xyzw
- mad r1.xyzw, cb2[2].xyzw, r0.zzzz, r1.xyzw
- mad o0.xyzw, cb2[3].xyzw, r0.wwww, r1.xyzw
- mad o1.xy, v0.xyxx, cb0[0].zwzz, cb0[0].xyxx
- ret
- // Approximately 16 instruction slots used
-
- };
- GeometryShader = NULL;
- PixelShader = asm {
- //
- // Generated by Microsoft (R) HLSL Shader Compiler 6.3.9600.16384
- //
- //
- // Buffer Definitions:
- //
- // cbuffer PerLayer
- // {
- //
- // float4 vTextureCoords; // Offset: 0 Size: 16 [unused]
- // float4 vLayerQuad; // Offset: 16 Size: 16 [unused]
- // float4 vMaskQuad; // Offset: 32 Size: 16 [unused]
- // float fLayerOpacity; // Offset: 48 Size: 4
- // float4x4 mLayerTransform; // Offset: 64 Size: 64 [unused]
- //
- // }
- //
- //
- // Resource Bindings:
- //
- // Name Type Format Dim Slot Elements
- // ------------------------------ ---------- ------- ----------- ---- --------
- // LayerTextureSamplerLinear sampler NA NA 0 1
- // tY texture float4 2d 0 1
- // tCb texture float4 2d 1 1
- // tCr texture float4 2d 2 1
- // tMask texture float4 2d 3 1
- // PerLayer cbuffer NA NA 0 1
- //
- //
- //
- // Input signature:
- //
- // Name Index Mask Register SysValue Format Used
- // -------------------- ----- ------ -------- -------- ------- ------
- // SV_Position 0 xyzw 0 POS float
- // TEXCOORD 0 xy 1 NONE float xy
- // TEXCOORD 1 zw 1 NONE float zw
- //
- //
- // Output signature:
- //
- // Name Index Mask Register SysValue Format Used
- // -------------------- ----- ------ -------- -------- ------- ------
- // SV_Target 0 xyzw 0 TARGET float xyzw
- //
- //
- // Constant buffer to DX9 shader constant mappings:
- //
- // Target Reg Buffer Start Reg # of Regs Data Conversion
- // ---------- ------- --------- --------- ----------------------
- // c0 cb0 3 1 ( FLT, FLT, FLT, FLT)
- //
- //
- // Sampler/Resource to DX9 shader sampler mappings:
- //
- // Target Sampler Source Sampler Source Resource
- // -------------- --------------- ----------------
- // s0 s0 t0
- // s1 s0 t1
- // s2 s0 t2
- // s3 s0 t3
- //
- //
- // Level9 shader bytecode:
- //
- ps_2_x
- def c1, -0.50195998, -0.0627499968, 1.59603, 0.812969983
- def c2, 1.16437995, 2.01723003, 0.391759992, 1
- dcl t0
- dcl_2d s0
- dcl_2d s1
- dcl_2d s2
- dcl_2d s3
- texld r0, t0, s0
- texld r1, t0, s2
- add r0.x, r1.w, c1.x
- mul r0.xy, r0.x, c1.zwzw
- add r0.z, r0.w, c1.y
- mad r0.y, r0.z, c2.x, -r0.y
- mad r1.x, r0.z, c2.x, r0.x
- mov r2.xy, t0.wzzw
- texld r3, t0, s1
- texld r2, r2, s3
- add r0.x, r3.w, c1.x
- mad r1.y, r0.x, -c2.z, r0.y
- mul r0.x, r0.x, c2.y
- mad r1.z, r0.z, c2.x, r0.x
- mov r1.w, c2.w
- mul r0, r1, c0.x
- mul r0, r2.w, r0
- mov oC0, r0
-
- // approximately 18 instruction slots used (4 texture, 14 arithmetic)
- ps_4_0
- dcl_constantbuffer cb0[4], immediateIndexed
- dcl_sampler s0, mode_default
- dcl_resource_texture2d (float,float,float,float) t0
- dcl_resource_texture2d (float,float,float,float) t1
- dcl_resource_texture2d (float,float,float,float) t2
- dcl_resource_texture2d (float,float,float,float) t3
- dcl_input_ps linear v1.xy
- dcl_input_ps linear v1.zw
- dcl_output o0.xyzw
- dcl_temps 3
- sample r0.xyzw, v1.xyxx, t2.xyzw, s0
- add r0.x, r0.w, l(-0.501960)
- mul r0.xy, r0.xxxx, l(1.596030, 0.812970, 0.000000, 0.000000)
- sample r1.xyzw, v1.xyxx, t0.xyzw, s0
- add r0.z, r1.w, l(-0.062750)
- mad r0.y, r0.z, l(1.164380), -r0.y
- mad r1.x, r0.z, l(1.164380), r0.x
- sample r2.xyzw, v1.xyxx, t1.xyzw, s0
- add r0.x, r2.w, l(-0.501960)
- mad r1.y, -r0.x, l(0.391760), r0.y
- mul r0.x, r0.x, l(2.017230)
- mad r1.z, r0.z, l(1.164380), r0.x
- mov r1.w, l(1.000000)
- mul r0.xyzw, r1.xyzw, cb0[3].xxxx
- sample r1.xyzw, v1.zwzz, t3.xyzw, s0
- mul o0.xyzw, r0.xyzw, r1.wwww
- ret
- // Approximately 17 instruction slots used
-
- };
- }
-
-}
-
-technique10 RenderComponentAlphaLayerMask
-{
- pass P0
- {
- RasterizerState = LayerRast;
- AB_BlendFactor = float4(0, 0, 0, 0);
- AB_SampleMask = uint(0xffffffff);
- BlendState = ComponentAlphaBlend;
- VertexShader = asm {
- //
- // Generated by Microsoft (R) HLSL Shader Compiler 6.3.9600.16384
- //
- //
- // Buffer Definitions:
- //
- // cbuffer PerLayer
- // {
- //
- // float4 vTextureCoords; // Offset: 0 Size: 16
- // float4 vLayerQuad; // Offset: 16 Size: 16
- // float4 vMaskQuad; // Offset: 32 Size: 16
- // float fLayerOpacity; // Offset: 48 Size: 4 [unused]
- // float4x4 mLayerTransform; // Offset: 64 Size: 64
- //
- // }
- //
- // cbuffer PerOccasionalLayer
- // {
- //
- // float4 vRenderTargetOffset; // Offset: 0 Size: 16
- // float4 fLayerColor; // Offset: 16 Size: 16 [unused]
- //
- // }
- //
- // cbuffer PerLayerManager
- // {
- //
- // float4x4 mProjection; // Offset: 0 Size: 64
- //
- // }
- //
- //
- // Resource Bindings:
- //
- // Name Type Format Dim Slot Elements
- // ------------------------------ ---------- ------- ----------- ---- --------
- // PerLayer cbuffer NA NA 0 1
- // PerOccasionalLayer cbuffer NA NA 1 1
- // PerLayerManager cbuffer NA NA 2 1
- //
- //
- //
- // Input signature:
- //
- // Name Index Mask Register SysValue Format Used
- // -------------------- ----- ------ -------- -------- ------- ------
- // POSITION 0 xy 0 NONE float xy
- //
- //
- // Output signature:
- //
- // Name Index Mask Register SysValue Format Used
- // -------------------- ----- ------ -------- -------- ------- ------
- // SV_Position 0 xyzw 0 POS float xyzw
- // TEXCOORD 0 xy 1 NONE float xy
- // TEXCOORD 1 zw 1 NONE float zw
- //
- //
- // Constant buffer to DX9 shader constant mappings:
- //
- // Target Reg Buffer Start Reg # of Regs Data Conversion
- // ---------- ------- --------- --------- ----------------------
- // c1 cb0 0 3 ( FLT, FLT, FLT, FLT)
- // c4 cb0 4 2 ( FLT, FLT, FLT, FLT)
- // c6 cb0 7 1 ( FLT, FLT, FLT, FLT)
- // c7 cb1 0 1 ( FLT, FLT, FLT, FLT)
- // c8 cb2 0 4 ( FLT, FLT, FLT, FLT)
- //
- //
- // Runtime generated constant mappings:
- //
- // Target Reg Constant Description
- // ---------- --------------------------------------------------
- // c0 Vertex Shader position offset
- //
- //
- // Level9 shader bytecode:
- //
- vs_2_x
- dcl_texcoord v0
- rcp r0.x, c3.z
- mad r0.yz, v0.xxyw, c2.xzww, c2.xxyw
- mul r1, r0.z, c5
- mad r1, c4, r0.y, r1
- add r1, r1, c6
- add r0.yz, r1.xxyw, -c3.xxyw
- mul oT0.w, r0.x, r0.y
- rcp r0.x, c3.w
- mul oT0.z, r0.x, r0.z
- mad oT0.xy, v0, c1.zwzw, c1
- rcp r0.x, r1.w
- mul r1.xyz, r0.x, r1
- add r0, r1, -c7
- mul r0.xyz, r0.w, r0
- mul r1, r0.y, c9
- mad r1, c8, r0.x, r1
- mad r1, c10, r0.z, r1
- mad r0, c11, r0.w, r1
- mad oPos.xy, r0.w, c0, r0
- mov oPos.zw, r0
-
- // approximately 20 instruction slots used
- vs_4_0
- dcl_constantbuffer cb0[8], immediateIndexed
- dcl_constantbuffer cb1[1], immediateIndexed
- dcl_constantbuffer cb2[4], immediateIndexed
- dcl_input v0.xy
- dcl_output_siv o0.xyzw, position
- dcl_output o1.xy
- dcl_output o1.zw
- dcl_temps 2
- mad r0.xy, v0.xyxx, cb0[1].zwzz, cb0[1].xyxx
- mul r1.xyzw, r0.yyyy, cb0[5].xyzw
- mad r0.xyzw, cb0[4].xyzw, r0.xxxx, r1.xyzw
- add r0.xyzw, r0.xyzw, cb0[7].xyzw
- div r1.xyz, r0.xyzx, r0.wwww
- mov r1.w, r0.w
- add r0.xy, r0.xyxx, -cb0[2].xyxx
- div o1.zw, r0.xxxy, cb0[2].zzzw
- add r0.xyzw, r1.xyzw, -cb1[0].xyzw
- mul r0.xyz, r0.wwww, r0.xyzx
- mul r1.xyzw, r0.yyyy, cb2[1].xyzw
- mad r1.xyzw, cb2[0].xyzw, r0.xxxx, r1.xyzw
- mad r1.xyzw, cb2[2].xyzw, r0.zzzz, r1.xyzw
- mad o0.xyzw, cb2[3].xyzw, r0.wwww, r1.xyzw
- mad o1.xy, v0.xyxx, cb0[0].zwzz, cb0[0].xyxx
- ret
- // Approximately 16 instruction slots used
-
- };
- GeometryShader = NULL;
- PixelShader = asm {
- //
- // Generated by Microsoft (R) HLSL Shader Compiler 6.3.9600.16384
- //
- //
- // Buffer Definitions:
- //
- // cbuffer PerLayer
- // {
- //
- // float4 vTextureCoords; // Offset: 0 Size: 16 [unused]
- // float4 vLayerQuad; // Offset: 16 Size: 16 [unused]
- // float4 vMaskQuad; // Offset: 32 Size: 16 [unused]
- // float fLayerOpacity; // Offset: 48 Size: 4
- // float4x4 mLayerTransform; // Offset: 64 Size: 64 [unused]
- //
- // }
- //
- //
- // Resource Bindings:
- //
- // Name Type Format Dim Slot Elements
- // ------------------------------ ---------- ------- ----------- ---- --------
- // LayerTextureSamplerLinear sampler NA NA 0 1
- // tRGB texture float4 2d 0 1
- // tRGBWhite texture float4 2d 1 1
- // tMask texture float4 2d 2 1
- // PerLayer cbuffer NA NA 0 1
- //
- //
- //
- // Input signature:
- //
- // Name Index Mask Register SysValue Format Used
- // -------------------- ----- ------ -------- -------- ------- ------
- // SV_Position 0 xyzw 0 POS float
- // TEXCOORD 0 xy 1 NONE float xy
- // TEXCOORD 1 zw 1 NONE float zw
- //
- //
- // Output signature:
- //
- // Name Index Mask Register SysValue Format Used
- // -------------------- ----- ------ -------- -------- ------- ------
- // SV_Target 0 xyzw 0 TARGET float xyzw
- // SV_Target 1 xyzw 1 TARGET float xyzw
- //
- //
- // Constant buffer to DX9 shader constant mappings:
- //
- // Target Reg Buffer Start Reg # of Regs Data Conversion
- // ---------- ------- --------- --------- ----------------------
- // c0 cb0 3 1 ( FLT, FLT, FLT, FLT)
- //
- //
- // Sampler/Resource to DX9 shader sampler mappings:
- //
- // Target Sampler Source Sampler Source Resource
- // -------------- --------------- ----------------
- // s0 s0 t0
- // s1 s0 t1
- // s2 s0 t2
- //
- //
- // Level9 shader bytecode:
- //
- ps_2_x
- def c1, 1, 0, 0, 0
- dcl t0
- dcl_2d s0
- dcl_2d s1
- dcl_2d s2
- mov r0.xy, t0.wzzw
- texld r0, r0, s2
- mul r0.x, r0.w, c0.x
- texld r1, t0, s0
- texld r2, t0, s1
- add r2, r1, -r2
- add r2, r2, c1.x
- mov r1.w, r2.y
- mul r2, r0.x, r2
- mul r0, r0.x, r1
- mov oC0, r0
- mov oC1, r2
-
- // approximately 12 instruction slots used (3 texture, 9 arithmetic)
- ps_4_0
- dcl_constantbuffer cb0[4], immediateIndexed
- dcl_sampler s0, mode_default
- dcl_resource_texture2d (float,float,float,float) t0
- dcl_resource_texture2d (float,float,float,float) t1
- dcl_resource_texture2d (float,float,float,float) t2
- dcl_input_ps linear v1.xy
- dcl_input_ps linear v1.zw
- dcl_output o0.xyzw
- dcl_output o1.xyzw
- dcl_temps 3
- sample r0.xyzw, v1.xyxx, t1.xyzw, s0
- sample r1.xyzw, v1.xyxx, t0.xyzw, s0
- add r0.xyzw, -r0.xyzw, r1.xyzw
- add r0.xyzw, r0.xyzw, l(1.000000, 1.000000, 1.000000, 1.000000)
- mov r1.w, r0.y
- sample r2.xyzw, v1.zwzz, t2.xyzw, s0
- mul r2.x, r2.w, cb0[3].x
- mul o0.xyzw, r1.xyzw, r2.xxxx
- mul o1.xyzw, r0.xyzw, r2.xxxx
- ret
- // Approximately 10 instruction slots used
-
- };
- }
-
-}
-
-technique10 RenderSolidColorLayerMask
-{
- pass P0
- {
- RasterizerState = LayerRast;
- AB_BlendFactor = float4(0, 0, 0, 0);
- AB_SampleMask = uint(0xffffffff);
- BlendState = Premul;
- VertexShader = asm {
- //
- // Generated by Microsoft (R) HLSL Shader Compiler 6.3.9600.16384
- //
- //
- // Buffer Definitions:
- //
- // cbuffer PerLayer
- // {
- //
- // float4 vTextureCoords; // Offset: 0 Size: 16
- // float4 vLayerQuad; // Offset: 16 Size: 16
- // float4 vMaskQuad; // Offset: 32 Size: 16
- // float fLayerOpacity; // Offset: 48 Size: 4 [unused]
- // float4x4 mLayerTransform; // Offset: 64 Size: 64
- //
- // }
- //
- // cbuffer PerOccasionalLayer
- // {
- //
- // float4 vRenderTargetOffset; // Offset: 0 Size: 16
- // float4 fLayerColor; // Offset: 16 Size: 16 [unused]
- //
- // }
- //
- // cbuffer PerLayerManager
- // {
- //
- // float4x4 mProjection; // Offset: 0 Size: 64
- //
- // }
- //
- //
- // Resource Bindings:
- //
- // Name Type Format Dim Slot Elements
- // ------------------------------ ---------- ------- ----------- ---- --------
- // PerLayer cbuffer NA NA 0 1
- // PerOccasionalLayer cbuffer NA NA 1 1
- // PerLayerManager cbuffer NA NA 2 1
- //
- //
- //
- // Input signature:
- //
- // Name Index Mask Register SysValue Format Used
- // -------------------- ----- ------ -------- -------- ------- ------
- // POSITION 0 xy 0 NONE float xy
- //
- //
- // Output signature:
- //
- // Name Index Mask Register SysValue Format Used
- // -------------------- ----- ------ -------- -------- ------- ------
- // SV_Position 0 xyzw 0 POS float xyzw
- // TEXCOORD 0 xy 1 NONE float xy
- // TEXCOORD 1 zw 1 NONE float zw
- //
- //
- // Constant buffer to DX9 shader constant mappings:
- //
- // Target Reg Buffer Start Reg # of Regs Data Conversion
- // ---------- ------- --------- --------- ----------------------
- // c1 cb0 0 3 ( FLT, FLT, FLT, FLT)
- // c4 cb0 4 2 ( FLT, FLT, FLT, FLT)
- // c6 cb0 7 1 ( FLT, FLT, FLT, FLT)
- // c7 cb1 0 1 ( FLT, FLT, FLT, FLT)
- // c8 cb2 0 4 ( FLT, FLT, FLT, FLT)
- //
- //
- // Runtime generated constant mappings:
- //
- // Target Reg Constant Description
- // ---------- --------------------------------------------------
- // c0 Vertex Shader position offset
- //
- //
- // Level9 shader bytecode:
- //
- vs_2_x
- dcl_texcoord v0
- rcp r0.x, c3.z
- mad r0.yz, v0.xxyw, c2.xzww, c2.xxyw
- mul r1, r0.z, c5
- mad r1, c4, r0.y, r1
- add r1, r1, c6
- add r0.yz, r1.xxyw, -c3.xxyw
- mul oT0.w, r0.x, r0.y
- rcp r0.x, c3.w
- mul oT0.z, r0.x, r0.z
- mad oT0.xy, v0, c1.zwzw, c1
- rcp r0.x, r1.w
- mul r1.xyz, r0.x, r1
- add r0, r1, -c7
- mul r0.xyz, r0.w, r0
- mul r1, r0.y, c9
- mad r1, c8, r0.x, r1
- mad r1, c10, r0.z, r1
- mad r0, c11, r0.w, r1
- mad oPos.xy, r0.w, c0, r0
- mov oPos.zw, r0
-
- // approximately 20 instruction slots used
- vs_4_0
- dcl_constantbuffer cb0[8], immediateIndexed
- dcl_constantbuffer cb1[1], immediateIndexed
- dcl_constantbuffer cb2[4], immediateIndexed
- dcl_input v0.xy
- dcl_output_siv o0.xyzw, position
- dcl_output o1.xy
- dcl_output o1.zw
- dcl_temps 2
- mad r0.xy, v0.xyxx, cb0[1].zwzz, cb0[1].xyxx
- mul r1.xyzw, r0.yyyy, cb0[5].xyzw
- mad r0.xyzw, cb0[4].xyzw, r0.xxxx, r1.xyzw
- add r0.xyzw, r0.xyzw, cb0[7].xyzw
- div r1.xyz, r0.xyzx, r0.wwww
- mov r1.w, r0.w
- add r0.xy, r0.xyxx, -cb0[2].xyxx
- div o1.zw, r0.xxxy, cb0[2].zzzw
- add r0.xyzw, r1.xyzw, -cb1[0].xyzw
- mul r0.xyz, r0.wwww, r0.xyzx
- mul r1.xyzw, r0.yyyy, cb2[1].xyzw
- mad r1.xyzw, cb2[0].xyzw, r0.xxxx, r1.xyzw
- mad r1.xyzw, cb2[2].xyzw, r0.zzzz, r1.xyzw
- mad o0.xyzw, cb2[3].xyzw, r0.wwww, r1.xyzw
- mad o1.xy, v0.xyxx, cb0[0].zwzz, cb0[0].xyxx
- ret
- // Approximately 16 instruction slots used
-
- };
- GeometryShader = NULL;
- PixelShader = asm {
- //
- // Generated by Microsoft (R) HLSL Shader Compiler 6.3.9600.16384
- //
- //
- // Buffer Definitions:
- //
- // cbuffer PerOccasionalLayer
- // {
- //
- // float4 vRenderTargetOffset; // Offset: 0 Size: 16 [unused]
- // float4 fLayerColor; // Offset: 16 Size: 16
- //
- // }
- //
- //
- // Resource Bindings:
- //
- // Name Type Format Dim Slot Elements
- // ------------------------------ ---------- ------- ----------- ---- --------
- // LayerTextureSamplerLinear sampler NA NA 0 1
- // tMask texture float4 2d 0 1
- // PerOccasionalLayer cbuffer NA NA 0 1
- //
- //
- //
- // Input signature:
- //
- // Name Index Mask Register SysValue Format Used
- // -------------------- ----- ------ -------- -------- ------- ------
- // SV_Position 0 xyzw 0 POS float
- // TEXCOORD 0 xy 1 NONE float
- // TEXCOORD 1 zw 1 NONE float zw
- //
- //
- // Output signature:
- //
- // Name Index Mask Register SysValue Format Used
- // -------------------- ----- ------ -------- -------- ------- ------
- // SV_Target 0 xyzw 0 TARGET float xyzw
- //
- //
- // Constant buffer to DX9 shader constant mappings:
- //
- // Target Reg Buffer Start Reg # of Regs Data Conversion
- // ---------- ------- --------- --------- ----------------------
- // c0 cb0 1 1 ( FLT, FLT, FLT, FLT)
- //
- //
- // Sampler/Resource to DX9 shader sampler mappings:
- //
- // Target Sampler Source Sampler Source Resource
- // -------------- --------------- ----------------
- // s0 s0 t0
- //
- //
- // Level9 shader bytecode:
- //
- ps_2_x
- dcl t0
- dcl_2d s0
- mov r0.xy, t0.wzzw
- texld r0, r0, s0
- mul r0, r0.w, c0
- mov oC0, r0
-
- // approximately 4 instruction slots used (1 texture, 3 arithmetic)
- ps_4_0
- dcl_constantbuffer cb0[2], immediateIndexed
- dcl_sampler s0, mode_default
- dcl_resource_texture2d (float,float,float,float) t0
- dcl_input_ps linear v1.zw
- dcl_output o0.xyzw
- dcl_temps 1
- sample r0.xyzw, v1.zwzz, t0.xyzw, s0
- mul o0.xyzw, r0.wwww, cb0[1].xyzw
- ret
- // Approximately 3 instruction slots used
-
- };
- }
-
-}
-
-#endif
-
-const BYTE g_main[] =
-{
- 68, 88, 66, 67, 173, 229,
- 104, 135, 246, 30, 133, 190,
- 80, 1, 18, 239, 172, 11,
- 34, 194, 1, 0, 0, 0,
- 107, 43, 1, 0, 1, 0,
- 0, 0, 36, 0, 0, 0,
- 70, 88, 49, 48, 63, 43,
- 1, 0, 1, 16, 255, 254,
- 3, 0, 0, 0, 8, 0,
- 0, 0, 13, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 21, 0, 0, 0, 3, 27,
- 1, 0, 0, 0, 0, 0,
- 6, 0, 0, 0, 0, 0,
- 0, 0, 4, 0, 0, 0,
- 1, 0, 0, 0, 2, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 42, 0,
- 0, 0, 42, 0, 0, 0,
- 0, 0, 0, 0, 80, 101,
- 114, 76, 97, 121, 101, 114,
- 0, 102, 108, 111, 97, 116,
- 52, 0, 13, 0, 0, 0,
- 1, 0, 0, 0, 0, 0,
- 0, 0, 16, 0, 0, 0,
- 16, 0, 0, 0, 16, 0,
- 0, 0, 10, 33, 0, 0,
- 118, 84, 101, 120, 116, 117,
- 114, 101, 67, 111, 111, 114,
- 100, 115, 0, 118, 76, 97,
- 121, 101, 114, 81, 117, 97,
- 100, 0, 118, 77, 97, 115,
- 107, 81, 117, 97, 100, 0,
- 102, 108, 111, 97, 116, 0,
- 84, 0, 0, 0, 1, 0,
- 0, 0, 0, 0, 0, 0,
- 4, 0, 0, 0, 16, 0,
- 0, 0, 4, 0, 0, 0,
- 9, 9, 0, 0, 102, 76,
- 97, 121, 101, 114, 79, 112,
- 97, 99, 105, 116, 121, 0,
- 102, 108, 111, 97, 116, 52,
- 120, 52, 0, 132, 0, 0,
- 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 64, 0, 0,
- 0, 64, 0, 0, 0, 64,
- 0, 0, 0, 11, 100, 0,
- 0, 109, 76, 97, 121, 101,
- 114, 84, 114, 97, 110, 115,
- 102, 111, 114, 109, 0, 80,
- 101, 114, 79, 99, 99, 97,
- 115, 105, 111, 110, 97, 108,
- 76, 97, 121, 101, 114, 0,
- 118, 82, 101, 110, 100, 101,
- 114, 84, 97, 114, 103, 101,
- 116, 79, 102, 102, 115, 101,
- 116, 0, 102, 76, 97, 121,
- 101, 114, 67, 111, 108, 111,
- 114, 0, 80, 101, 114, 76,
- 97, 121, 101, 114, 77, 97,
- 110, 97, 103, 101, 114, 0,
- 109, 80, 114, 111, 106, 101,
- 99, 116, 105, 111, 110, 0,
- 66, 108, 101, 110, 100, 83,
- 116, 97, 116, 101, 0, 8,
- 1, 0, 0, 2, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 2,
- 0, 0, 0, 80, 114, 101,
- 109, 117, 108, 0, 1, 0,
- 0, 0, 2, 0, 0, 0,
- 0, 0, 0, 0, 1, 0,
- 0, 0, 2, 0, 0, 0,
- 1, 0, 0, 0, 1, 0,
- 0, 0, 2, 0, 0, 0,
- 2, 0, 0, 0, 1, 0,
- 0, 0, 2, 0, 0, 0,
- 6, 0, 0, 0, 1, 0,
- 0, 0, 2, 0, 0, 0,
- 1, 0, 0, 0, 1, 0,
- 0, 0, 2, 0, 0, 0,
- 2, 0, 0, 0, 1, 0,
- 0, 0, 2, 0, 0, 0,
- 6, 0, 0, 0, 1, 0,
- 0, 0, 2, 0, 0, 0,
- 1, 0, 0, 0, 1, 0,
- 0, 0, 3, 0, 0, 0,
- 15, 0, 0, 0, 78, 111,
- 110, 80, 114, 101, 109, 117,
- 108, 0, 1, 0, 0, 0,
- 2, 0, 0, 0, 0, 0,
- 0, 0, 1, 0, 0, 0,
- 2, 0, 0, 0, 1, 0,
- 0, 0, 1, 0, 0, 0,
- 2, 0, 0, 0, 5, 0,
- 0, 0, 1, 0, 0, 0,
- 2, 0, 0, 0, 6, 0,
- 0, 0, 1, 0, 0, 0,
- 2, 0, 0, 0, 1, 0,
- 0, 0, 1, 0, 0, 0,
- 2, 0, 0, 0, 2, 0,
- 0, 0, 1, 0, 0, 0,
- 2, 0, 0, 0, 6, 0,
- 0, 0, 1, 0, 0, 0,
- 2, 0, 0, 0, 1, 0,
- 0, 0, 1, 0, 0, 0,
- 3, 0, 0, 0, 15, 0,
- 0, 0, 78, 111, 66, 108,
- 101, 110, 100, 68, 117, 97,
- 108, 0, 1, 0, 0, 0,
- 2, 0, 0, 0, 0, 0,
- 0, 0, 1, 0, 0, 0,
- 2, 0, 0, 0, 0, 0,
- 0, 0, 1, 0, 0, 0,
- 2, 0, 0, 0, 0, 0,
- 0, 0, 1, 0, 0, 0,
- 3, 0, 0, 0, 15, 0,
- 0, 0, 1, 0, 0, 0,
- 3, 0, 0, 0, 15, 0,
- 0, 0, 67, 111, 109, 112,
- 111, 110, 101, 110, 116, 65,
- 108, 112, 104, 97, 66, 108,
- 101, 110, 100, 0, 1, 0,
- 0, 0, 2, 0, 0, 0,
- 0, 0, 0, 0, 1, 0,
- 0, 0, 2, 0, 0, 0,
- 1, 0, 0, 0, 1, 0,
- 0, 0, 2, 0, 0, 0,
- 2, 0, 0, 0, 1, 0,
- 0, 0, 2, 0, 0, 0,
- 17, 0, 0, 0, 1, 0,
- 0, 0, 2, 0, 0, 0,
- 1, 0, 0, 0, 1, 0,
- 0, 0, 2, 0, 0, 0,
- 2, 0, 0, 0, 1, 0,
- 0, 0, 2, 0, 0, 0,
- 6, 0, 0, 0, 1, 0,
- 0, 0, 2, 0, 0, 0,
- 1, 0, 0, 0, 1, 0,
- 0, 0, 3, 0, 0, 0,
- 15, 0, 0, 0, 82, 97,
- 115, 116, 101, 114, 105, 122,
- 101, 114, 83, 116, 97, 116,
- 101, 0, 224, 2, 0, 0,
- 2, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 4, 0, 0, 0,
- 76, 97, 121, 101, 114, 82,
- 97, 115, 116, 0, 1, 0,
- 0, 0, 2, 0, 0, 0,
- 1, 0, 0, 0, 1, 0,
- 0, 0, 2, 0, 0, 0,
- 1, 0, 0, 0, 84, 101,
- 120, 116, 117, 114, 101, 50,
- 68, 0, 46, 3, 0, 0,
- 2, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 12, 0, 0, 0,
- 116, 82, 71, 66, 0, 116,
- 89, 0, 116, 67, 98, 0,
- 116, 67, 114, 0, 116, 82,
- 71, 66, 87, 104, 105, 116,
- 101, 0, 116, 77, 97, 115,
- 107, 0, 83, 97, 109, 112,
- 108, 101, 114, 83, 116, 97,
- 116, 101, 0, 116, 3, 0,
- 0, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 21, 0, 0,
- 0, 76, 97, 121, 101, 114,
- 84, 101, 120, 116, 117, 114,
- 101, 83, 97, 109, 112, 108,
- 101, 114, 76, 105, 110, 101,
- 97, 114, 0, 1, 0, 0,
- 0, 2, 0, 0, 0, 21,
- 0, 0, 0, 1, 0, 0,
- 0, 2, 0, 0, 0, 3,
- 0, 0, 0, 1, 0, 0,
- 0, 2, 0, 0, 0, 3,
- 0, 0, 0, 76, 97, 121,
- 101, 114, 84, 101, 120, 116,
- 117, 114, 101, 83, 97, 109,
- 112, 108, 101, 114, 80, 111,
- 105, 110, 116, 0, 1, 0,
- 0, 0, 2, 0, 0, 0,
- 0, 0, 0, 0, 1, 0,
- 0, 0, 2, 0, 0, 0,
- 3, 0, 0, 0, 1, 0,
- 0, 0, 2, 0, 0, 0,
- 3, 0, 0, 0, 82, 101,
- 110, 100, 101, 114, 82, 71,
- 66, 76, 97, 121, 101, 114,
- 80, 114, 101, 109, 117, 108,
- 0, 80, 48, 0, 4, 0,
- 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 1, 0,
- 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 0, 0,
- 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 1, 0,
- 0, 0, 3, 0, 0, 0,
- 255, 255, 255, 255, 136, 7,
- 0, 0, 68, 88, 66, 67,
- 134, 58, 181, 81, 234, 180,
- 23, 54, 140, 98, 159, 162,
- 74, 150, 11, 172, 1, 0,
- 0, 0, 136, 7, 0, 0,
- 6, 0, 0, 0, 56, 0,
- 0, 0, 188, 1, 0, 0,
- 228, 3, 0, 0, 96, 4,
- 0, 0, 252, 6, 0, 0,
- 48, 7, 0, 0, 65, 111,
- 110, 57, 124, 1, 0, 0,
- 124, 1, 0, 0, 0, 2,
- 254, 255, 24, 1, 0, 0,
- 100, 0, 0, 0, 5, 0,
- 36, 0, 0, 0, 96, 0,
- 0, 0, 96, 0, 0, 0,
- 36, 0, 1, 0, 96, 0,
- 0, 0, 0, 0, 2, 0,
- 1, 0, 0, 0, 0, 0,
- 0, 0, 4, 0, 2, 0,
- 3, 0, 0, 0, 0, 0,
- 0, 0, 7, 0, 1, 0,
- 5, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 1, 0,
- 6, 0, 0, 0, 0, 0,
- 2, 0, 0, 0, 4, 0,
- 7, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 2,
- 254, 255, 31, 0, 0, 2,
- 5, 0, 0, 128, 0, 0,
- 15, 144, 4, 0, 0, 4,
- 0, 0, 3, 224, 0, 0,
- 228, 144, 1, 0, 238, 160,
- 1, 0, 228, 160, 4, 0,
- 0, 4, 0, 0, 3, 128,
- 0, 0, 228, 144, 2, 0,
- 238, 160, 2, 0, 228, 160,
- 5, 0, 0, 3, 1, 0,
- 15, 128, 0, 0, 85, 128,
- 4, 0, 228, 160, 4, 0,
- 0, 4, 0, 0, 15, 128,
- 3, 0, 228, 160, 0, 0,
- 0, 128, 1, 0, 228, 128,
- 2, 0, 0, 3, 0, 0,
- 15, 128, 0, 0, 228, 128,
- 5, 0, 228, 160, 6, 0,
- 0, 2, 1, 0, 1, 128,
- 0, 0, 255, 128, 5, 0,
- 0, 3, 0, 0, 7, 128,
- 0, 0, 228, 128, 1, 0,
- 0, 128, 2, 0, 0, 3,
- 0, 0, 15, 128, 0, 0,
- 228, 128, 6, 0, 228, 161,
- 5, 0, 0, 3, 0, 0,
- 7, 128, 0, 0, 255, 128,
- 0, 0, 228, 128, 5, 0,
- 0, 3, 1, 0, 15, 128,
- 0, 0, 85, 128, 8, 0,
- 228, 160, 4, 0, 0, 4,
- 1, 0, 15, 128, 7, 0,
- 228, 160, 0, 0, 0, 128,
- 1, 0, 228, 128, 4, 0,
- 0, 4, 1, 0, 15, 128,
- 9, 0, 228, 160, 0, 0,
- 170, 128, 1, 0, 228, 128,
- 4, 0, 0, 4, 0, 0,
- 15, 128, 10, 0, 228, 160,
- 0, 0, 255, 128, 1, 0,
- 228, 128, 4, 0, 0, 4,
- 0, 0, 3, 192, 0, 0,
- 255, 128, 0, 0, 228, 160,
- 0, 0, 228, 128, 1, 0,
- 0, 2, 0, 0, 12, 192,
- 0, 0, 228, 128, 255, 255,
- 0, 0, 83, 72, 68, 82,
- 32, 2, 0, 0, 64, 0,
- 1, 0, 136, 0, 0, 0,
- 89, 0, 0, 4, 70, 142,
- 32, 0, 0, 0, 0, 0,
- 8, 0, 0, 0, 89, 0,
- 0, 4, 70, 142, 32, 0,
- 1, 0, 0, 0, 1, 0,
- 0, 0, 89, 0, 0, 4,
- 70, 142, 32, 0, 2, 0,
- 0, 0, 4, 0, 0, 0,
- 95, 0, 0, 3, 50, 16,
- 16, 0, 0, 0, 0, 0,
- 103, 0, 0, 4, 242, 32,
- 16, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 101, 0,
- 0, 3, 50, 32, 16, 0,
- 1, 0, 0, 0, 104, 0,
- 0, 2, 2, 0, 0, 0,
- 50, 0, 0, 11, 50, 0,
- 16, 0, 0, 0, 0, 0,
- 70, 16, 16, 0, 0, 0,
- 0, 0, 230, 138, 32, 0,
- 0, 0, 0, 0, 1, 0,
- 0, 0, 70, 128, 32, 0,
- 0, 0, 0, 0, 1, 0,
- 0, 0, 56, 0, 0, 8,
- 242, 0, 16, 0, 1, 0,
- 0, 0, 86, 5, 16, 0,
- 0, 0, 0, 0, 70, 142,
- 32, 0, 0, 0, 0, 0,
- 5, 0, 0, 0, 50, 0,
- 0, 10, 242, 0, 16, 0,
- 0, 0, 0, 0, 70, 142,
- 32, 0, 0, 0, 0, 0,
- 4, 0, 0, 0, 6, 0,
- 16, 0, 0, 0, 0, 0,
- 70, 14, 16, 0, 1, 0,
- 0, 0, 0, 0, 0, 8,
- 242, 0, 16, 0, 0, 0,
- 0, 0, 70, 14, 16, 0,
- 0, 0, 0, 0, 70, 142,
- 32, 0, 0, 0, 0, 0,
- 7, 0, 0, 0, 14, 0,
- 0, 7, 114, 0, 16, 0,
- 0, 0, 0, 0, 70, 2,
- 16, 0, 0, 0, 0, 0,
- 246, 15, 16, 0, 0, 0,
- 0, 0, 0, 0, 0, 9,
- 242, 0, 16, 0, 0, 0,
- 0, 0, 70, 14, 16, 0,
- 0, 0, 0, 0, 70, 142,
- 32, 128, 65, 0, 0, 0,
- 1, 0, 0, 0, 0, 0,
- 0, 0, 56, 0, 0, 7,
- 114, 0, 16, 0, 0, 0,
- 0, 0, 246, 15, 16, 0,
- 0, 0, 0, 0, 70, 2,
- 16, 0, 0, 0, 0, 0,
- 56, 0, 0, 8, 242, 0,
- 16, 0, 1, 0, 0, 0,
- 86, 5, 16, 0, 0, 0,
- 0, 0, 70, 142, 32, 0,
- 2, 0, 0, 0, 1, 0,
- 0, 0, 50, 0, 0, 10,
- 242, 0, 16, 0, 1, 0,
- 0, 0, 70, 142, 32, 0,
- 2, 0, 0, 0, 0, 0,
- 0, 0, 6, 0, 16, 0,
- 0, 0, 0, 0, 70, 14,
- 16, 0, 1, 0, 0, 0,
- 50, 0, 0, 10, 242, 0,
- 16, 0, 1, 0, 0, 0,
- 70, 142, 32, 0, 2, 0,
- 0, 0, 2, 0, 0, 0,
- 166, 10, 16, 0, 0, 0,
- 0, 0, 70, 14, 16, 0,
- 1, 0, 0, 0, 50, 0,
- 0, 10, 242, 32, 16, 0,
- 0, 0, 0, 0, 70, 142,
- 32, 0, 2, 0, 0, 0,
- 3, 0, 0, 0, 246, 15,
- 16, 0, 0, 0, 0, 0,
- 70, 14, 16, 0, 1, 0,
- 0, 0, 50, 0, 0, 11,
- 50, 32, 16, 0, 1, 0,
- 0, 0, 70, 16, 16, 0,
- 0, 0, 0, 0, 230, 138,
- 32, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 70, 128,
- 32, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 62, 0,
- 0, 1, 83, 84, 65, 84,
- 116, 0, 0, 0, 13, 0,
- 0, 0, 2, 0, 0, 0,
- 0, 0, 0, 0, 3, 0,
- 0, 0, 12, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 82, 68, 69, 70, 148, 2,
- 0, 0, 3, 0, 0, 0,
- 168, 0, 0, 0, 3, 0,
- 0, 0, 28, 0, 0, 0,
- 0, 4, 254, 255, 0, 1,
- 0, 0, 96, 2, 0, 0,
- 124, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 0, 0,
- 0, 0, 133, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 0,
- 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 152, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 2, 0, 0, 0, 1, 0,
- 0, 0, 0, 0, 0, 0,
- 80, 101, 114, 76, 97, 121,
- 101, 114, 0, 80, 101, 114,
- 79, 99, 99, 97, 115, 105,
- 111, 110, 97, 108, 76, 97,
- 121, 101, 114, 0, 80, 101,
- 114, 76, 97, 121, 101, 114,
- 77, 97, 110, 97, 103, 101,
- 114, 0, 124, 0, 0, 0,
- 5, 0, 0, 0, 240, 0,
- 0, 0, 128, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 133, 0, 0, 0,
- 2, 0, 0, 0, 220, 1,
- 0, 0, 32, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 152, 0, 0, 0,
- 1, 0, 0, 0, 60, 2,
- 0, 0, 64, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 104, 1, 0, 0,
- 0, 0, 0, 0, 16, 0,
- 0, 0, 2, 0, 0, 0,
- 120, 1, 0, 0, 0, 0,
- 0, 0, 136, 1, 0, 0,
- 16, 0, 0, 0, 16, 0,
- 0, 0, 2, 0, 0, 0,
- 120, 1, 0, 0, 0, 0,
- 0, 0, 147, 1, 0, 0,
- 32, 0, 0, 0, 16, 0,
- 0, 0, 0, 0, 0, 0,
- 120, 1, 0, 0, 0, 0,
- 0, 0, 157, 1, 0, 0,
- 48, 0, 0, 0, 4, 0,
- 0, 0, 0, 0, 0, 0,
- 172, 1, 0, 0, 0, 0,
- 0, 0, 188, 1, 0, 0,
- 64, 0, 0, 0, 64, 0,
- 0, 0, 2, 0, 0, 0,
- 204, 1, 0, 0, 0, 0,
- 0, 0, 118, 84, 101, 120,
- 116, 117, 114, 101, 67, 111,
- 111, 114, 100, 115, 0, 171,
- 1, 0, 3, 0, 1, 0,
- 4, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 118, 76,
- 97, 121, 101, 114, 81, 117,
- 97, 100, 0, 118, 77, 97,
- 115, 107, 81, 117, 97, 100,
- 0, 102, 76, 97, 121, 101,
- 114, 79, 112, 97, 99, 105,
- 116, 121, 0, 171, 0, 0,
- 3, 0, 1, 0, 1, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 109, 76, 97, 121,
- 101, 114, 84, 114, 97, 110,
- 115, 102, 111, 114, 109, 0,
- 3, 0, 3, 0, 4, 0,
- 4, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 12, 2,
- 0, 0, 0, 0, 0, 0,
- 16, 0, 0, 0, 2, 0,
- 0, 0, 32, 2, 0, 0,
- 0, 0, 0, 0, 48, 2,
- 0, 0, 16, 0, 0, 0,
- 16, 0, 0, 0, 0, 0,
- 0, 0, 32, 2, 0, 0,
- 0, 0, 0, 0, 118, 82,
- 101, 110, 100, 101, 114, 84,
- 97, 114, 103, 101, 116, 79,
- 102, 102, 115, 101, 116, 0,
- 1, 0, 3, 0, 1, 0,
- 4, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 102, 76,
- 97, 121, 101, 114, 67, 111,
- 108, 111, 114, 0, 84, 2,
- 0, 0, 0, 0, 0, 0,
- 64, 0, 0, 0, 2, 0,
- 0, 0, 204, 1, 0, 0,
- 0, 0, 0, 0, 109, 80,
- 114, 111, 106, 101, 99, 116,
- 105, 111, 110, 0, 77, 105,
- 99, 114, 111, 115, 111, 102,
- 116, 32, 40, 82, 41, 32,
- 72, 76, 83, 76, 32, 83,
- 104, 97, 100, 101, 114, 32,
- 67, 111, 109, 112, 105, 108,
- 101, 114, 32, 54, 46, 51,
- 46, 57, 54, 48, 48, 46,
- 49, 54, 51, 56, 52, 0,
- 171, 171, 73, 83, 71, 78,
- 44, 0, 0, 0, 1, 0,
- 0, 0, 8, 0, 0, 0,
- 32, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 3, 0, 0, 0, 0, 0,
- 0, 0, 3, 3, 0, 0,
- 80, 79, 83, 73, 84, 73,
- 79, 78, 0, 171, 171, 171,
- 79, 83, 71, 78, 80, 0,
- 0, 0, 2, 0, 0, 0,
- 8, 0, 0, 0, 56, 0,
- 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 3, 0,
- 0, 0, 0, 0, 0, 0,
- 15, 0, 0, 0, 68, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 3, 0,
- 0, 0, 1, 0, 0, 0,
- 3, 12, 0, 0, 83, 86,
- 95, 80, 111, 115, 105, 116,
- 105, 111, 110, 0, 84, 69,
- 88, 67, 79, 79, 82, 68,
- 0, 171, 171, 171, 96, 4,
- 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 2, 0,
- 0, 0, 0, 0, 0, 0,
- 116, 4, 0, 0, 68, 88,
- 66, 67, 139, 125, 209, 68,
- 164, 105, 119, 76, 10, 245,
- 168, 227, 98, 190, 98, 86,
- 1, 0, 0, 0, 116, 4,
- 0, 0, 6, 0, 0, 0,
- 56, 0, 0, 0, 204, 0,
- 0, 0, 136, 1, 0, 0,
- 4, 2, 0, 0, 232, 3,
- 0, 0, 64, 4, 0, 0,
- 65, 111, 110, 57, 140, 0,
- 0, 0, 140, 0, 0, 0,
- 0, 2, 255, 255, 88, 0,
- 0, 0, 52, 0, 0, 0,
- 1, 0, 40, 0, 0, 0,
- 52, 0, 0, 0, 52, 0,
- 1, 0, 36, 0, 0, 0,
- 52, 0, 0, 0, 0, 0,
- 0, 0, 3, 0, 1, 0,
- 0, 0, 0, 0, 0, 0,
- 1, 2, 255, 255, 31, 0,
- 0, 2, 0, 0, 0, 128,
- 0, 0, 3, 176, 31, 0,
- 0, 2, 0, 0, 0, 144,
- 0, 8, 15, 160, 66, 0,
- 0, 3, 0, 0, 15, 128,
- 0, 0, 228, 176, 0, 8,
- 228, 160, 5, 0, 0, 3,
- 0, 0, 7, 128, 0, 0,
- 228, 128, 0, 0, 0, 160,
- 1, 0, 0, 2, 0, 0,
- 8, 128, 0, 0, 0, 160,
- 1, 0, 0, 2, 0, 8,
- 15, 128, 0, 0, 228, 128,
- 255, 255, 0, 0, 83, 72,
- 68, 82, 180, 0, 0, 0,
- 64, 0, 0, 0, 45, 0,
- 0, 0, 89, 0, 0, 4,
- 70, 142, 32, 0, 0, 0,
- 0, 0, 4, 0, 0, 0,
- 90, 0, 0, 3, 0, 96,
- 16, 0, 0, 0, 0, 0,
- 88, 24, 0, 4, 0, 112,
- 16, 0, 0, 0, 0, 0,
- 85, 85, 0, 0, 98, 16,
- 0, 3, 50, 16, 16, 0,
- 1, 0, 0, 0, 101, 0,
- 0, 3, 242, 32, 16, 0,
- 0, 0, 0, 0, 104, 0,
- 0, 2, 1, 0, 0, 0,
- 69, 0, 0, 9, 242, 0,
- 16, 0, 0, 0, 0, 0,
- 70, 16, 16, 0, 1, 0,
- 0, 0, 70, 126, 16, 0,
- 0, 0, 0, 0, 0, 96,
- 16, 0, 0, 0, 0, 0,
- 56, 0, 0, 8, 114, 32,
- 16, 0, 0, 0, 0, 0,
- 70, 2, 16, 0, 0, 0,
- 0, 0, 6, 128, 32, 0,
- 0, 0, 0, 0, 3, 0,
- 0, 0, 54, 0, 0, 6,
- 130, 32, 16, 0, 0, 0,
- 0, 0, 10, 128, 32, 0,
- 0, 0, 0, 0, 3, 0,
- 0, 0, 62, 0, 0, 1,
- 83, 84, 65, 84, 116, 0,
- 0, 0, 4, 0, 0, 0,
- 1, 0, 0, 0, 0, 0,
- 0, 0, 2, 0, 0, 0,
- 1, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 82, 68,
- 69, 70, 220, 1, 0, 0,
- 1, 0, 0, 0, 164, 0,
- 0, 0, 3, 0, 0, 0,
- 28, 0, 0, 0, 0, 4,
- 255, 255, 0, 1, 0, 0,
- 168, 1, 0, 0, 124, 0,
- 0, 0, 3, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 0,
- 0, 0, 0, 0, 0, 0,
- 150, 0, 0, 0, 2, 0,
- 0, 0, 5, 0, 0, 0,
- 4, 0, 0, 0, 255, 255,
- 255, 255, 0, 0, 0, 0,
- 1, 0, 0, 0, 12, 0,
- 0, 0, 155, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 76, 97,
- 121, 101, 114, 84, 101, 120,
- 116, 117, 114, 101, 83, 97,
- 109, 112, 108, 101, 114, 76,
- 105, 110, 101, 97, 114, 0,
- 116, 82, 71, 66, 0, 80,
- 101, 114, 76, 97, 121, 101,
- 114, 0, 155, 0, 0, 0,
- 5, 0, 0, 0, 188, 0,
- 0, 0, 128, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 52, 1, 0, 0,
- 0, 0, 0, 0, 16, 0,
- 0, 0, 0, 0, 0, 0,
- 68, 1, 0, 0, 0, 0,
- 0, 0, 84, 1, 0, 0,
- 16, 0, 0, 0, 16, 0,
- 0, 0, 0, 0, 0, 0,
- 68, 1, 0, 0, 0, 0,
- 0, 0, 95, 1, 0, 0,
- 32, 0, 0, 0, 16, 0,
- 0, 0, 0, 0, 0, 0,
- 68, 1, 0, 0, 0, 0,
- 0, 0, 105, 1, 0, 0,
- 48, 0, 0, 0, 4, 0,
- 0, 0, 2, 0, 0, 0,
- 120, 1, 0, 0, 0, 0,
- 0, 0, 136, 1, 0, 0,
- 64, 0, 0, 0, 64, 0,
- 0, 0, 0, 0, 0, 0,
- 152, 1, 0, 0, 0, 0,
- 0, 0, 118, 84, 101, 120,
- 116, 117, 114, 101, 67, 111,
- 111, 114, 100, 115, 0, 171,
- 1, 0, 3, 0, 1, 0,
- 4, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 118, 76,
- 97, 121, 101, 114, 81, 117,
- 97, 100, 0, 118, 77, 97,
- 115, 107, 81, 117, 97, 100,
- 0, 102, 76, 97, 121, 101,
- 114, 79, 112, 97, 99, 105,
- 116, 121, 0, 171, 0, 0,
- 3, 0, 1, 0, 1, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 109, 76, 97, 121,
- 101, 114, 84, 114, 97, 110,
- 115, 102, 111, 114, 109, 0,
- 3, 0, 3, 0, 4, 0,
- 4, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 77, 105,
- 99, 114, 111, 115, 111, 102,
- 116, 32, 40, 82, 41, 32,
- 72, 76, 83, 76, 32, 83,
- 104, 97, 100, 101, 114, 32,
- 67, 111, 109, 112, 105, 108,
- 101, 114, 32, 54, 46, 51,
- 46, 57, 54, 48, 48, 46,
- 49, 54, 51, 56, 52, 0,
- 171, 171, 73, 83, 71, 78,
- 80, 0, 0, 0, 2, 0,
- 0, 0, 8, 0, 0, 0,
- 56, 0, 0, 0, 0, 0,
- 0, 0, 1, 0, 0, 0,
- 3, 0, 0, 0, 0, 0,
- 0, 0, 15, 0, 0, 0,
- 68, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 3, 0, 0, 0, 1, 0,
- 0, 0, 3, 3, 0, 0,
- 83, 86, 95, 80, 111, 115,
- 105, 116, 105, 111, 110, 0,
- 84, 69, 88, 67, 79, 79,
- 82, 68, 0, 171, 171, 171,
- 79, 83, 71, 78, 44, 0,
- 0, 0, 1, 0, 0, 0,
- 8, 0, 0, 0, 32, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 3, 0,
- 0, 0, 0, 0, 0, 0,
- 15, 0, 0, 0, 83, 86,
- 95, 84, 97, 114, 103, 101,
- 116, 0, 171, 171, 0, 12,
- 0, 0, 0, 0, 0, 0,
- 82, 101, 110, 100, 101, 114,
- 82, 71, 66, 76, 97, 121,
- 101, 114, 80, 114, 101, 109,
- 117, 108, 80, 111, 105, 110,
- 116, 0, 4, 0, 0, 0,
- 1, 0, 0, 0, 0, 0,
- 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 1, 0,
- 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 0, 0,
- 0, 0, 1, 0, 0, 0,
- 3, 0, 0, 0, 255, 255,
- 255, 255, 136, 7, 0, 0,
- 68, 88, 66, 67, 134, 58,
- 181, 81, 234, 180, 23, 54,
- 140, 98, 159, 162, 74, 150,
- 11, 172, 1, 0, 0, 0,
- 136, 7, 0, 0, 6, 0,
- 0, 0, 56, 0, 0, 0,
- 188, 1, 0, 0, 228, 3,
- 0, 0, 96, 4, 0, 0,
- 252, 6, 0, 0, 48, 7,
- 0, 0, 65, 111, 110, 57,
- 124, 1, 0, 0, 124, 1,
- 0, 0, 0, 2, 254, 255,
- 24, 1, 0, 0, 100, 0,
- 0, 0, 5, 0, 36, 0,
- 0, 0, 96, 0, 0, 0,
- 96, 0, 0, 0, 36, 0,
- 1, 0, 96, 0, 0, 0,
- 0, 0, 2, 0, 1, 0,
- 0, 0, 0, 0, 0, 0,
- 4, 0, 2, 0, 3, 0,
- 0, 0, 0, 0, 0, 0,
- 7, 0, 1, 0, 5, 0,
- 0, 0, 0, 0, 1, 0,
- 0, 0, 1, 0, 6, 0,
- 0, 0, 0, 0, 2, 0,
- 0, 0, 4, 0, 7, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 2, 254, 255,
- 31, 0, 0, 2, 5, 0,
- 0, 128, 0, 0, 15, 144,
- 4, 0, 0, 4, 0, 0,
- 3, 224, 0, 0, 228, 144,
- 1, 0, 238, 160, 1, 0,
- 228, 160, 4, 0, 0, 4,
- 0, 0, 3, 128, 0, 0,
- 228, 144, 2, 0, 238, 160,
- 2, 0, 228, 160, 5, 0,
- 0, 3, 1, 0, 15, 128,
- 0, 0, 85, 128, 4, 0,
- 228, 160, 4, 0, 0, 4,
- 0, 0, 15, 128, 3, 0,
- 228, 160, 0, 0, 0, 128,
- 1, 0, 228, 128, 2, 0,
- 0, 3, 0, 0, 15, 128,
- 0, 0, 228, 128, 5, 0,
- 228, 160, 6, 0, 0, 2,
- 1, 0, 1, 128, 0, 0,
- 255, 128, 5, 0, 0, 3,
- 0, 0, 7, 128, 0, 0,
- 228, 128, 1, 0, 0, 128,
- 2, 0, 0, 3, 0, 0,
- 15, 128, 0, 0, 228, 128,
- 6, 0, 228, 161, 5, 0,
- 0, 3, 0, 0, 7, 128,
- 0, 0, 255, 128, 0, 0,
- 228, 128, 5, 0, 0, 3,
- 1, 0, 15, 128, 0, 0,
- 85, 128, 8, 0, 228, 160,
- 4, 0, 0, 4, 1, 0,
- 15, 128, 7, 0, 228, 160,
- 0, 0, 0, 128, 1, 0,
- 228, 128, 4, 0, 0, 4,
- 1, 0, 15, 128, 9, 0,
- 228, 160, 0, 0, 170, 128,
- 1, 0, 228, 128, 4, 0,
- 0, 4, 0, 0, 15, 128,
- 10, 0, 228, 160, 0, 0,
- 255, 128, 1, 0, 228, 128,
- 4, 0, 0, 4, 0, 0,
- 3, 192, 0, 0, 255, 128,
- 0, 0, 228, 160, 0, 0,
- 228, 128, 1, 0, 0, 2,
- 0, 0, 12, 192, 0, 0,
- 228, 128, 255, 255, 0, 0,
- 83, 72, 68, 82, 32, 2,
- 0, 0, 64, 0, 1, 0,
- 136, 0, 0, 0, 89, 0,
- 0, 4, 70, 142, 32, 0,
- 0, 0, 0, 0, 8, 0,
- 0, 0, 89, 0, 0, 4,
- 70, 142, 32, 0, 1, 0,
- 0, 0, 1, 0, 0, 0,
- 89, 0, 0, 4, 70, 142,
- 32, 0, 2, 0, 0, 0,
- 4, 0, 0, 0, 95, 0,
- 0, 3, 50, 16, 16, 0,
- 0, 0, 0, 0, 103, 0,
- 0, 4, 242, 32, 16, 0,
- 0, 0, 0, 0, 1, 0,
- 0, 0, 101, 0, 0, 3,
- 50, 32, 16, 0, 1, 0,
- 0, 0, 104, 0, 0, 2,
- 2, 0, 0, 0, 50, 0,
- 0, 11, 50, 0, 16, 0,
- 0, 0, 0, 0, 70, 16,
- 16, 0, 0, 0, 0, 0,
- 230, 138, 32, 0, 0, 0,
- 0, 0, 1, 0, 0, 0,
- 70, 128, 32, 0, 0, 0,
- 0, 0, 1, 0, 0, 0,
- 56, 0, 0, 8, 242, 0,
- 16, 0, 1, 0, 0, 0,
- 86, 5, 16, 0, 0, 0,
- 0, 0, 70, 142, 32, 0,
- 0, 0, 0, 0, 5, 0,
- 0, 0, 50, 0, 0, 10,
- 242, 0, 16, 0, 0, 0,
- 0, 0, 70, 142, 32, 0,
- 0, 0, 0, 0, 4, 0,
- 0, 0, 6, 0, 16, 0,
- 0, 0, 0, 0, 70, 14,
- 16, 0, 1, 0, 0, 0,
- 0, 0, 0, 8, 242, 0,
- 16, 0, 0, 0, 0, 0,
- 70, 14, 16, 0, 0, 0,
- 0, 0, 70, 142, 32, 0,
- 0, 0, 0, 0, 7, 0,
- 0, 0, 14, 0, 0, 7,
- 114, 0, 16, 0, 0, 0,
- 0, 0, 70, 2, 16, 0,
- 0, 0, 0, 0, 246, 15,
- 16, 0, 0, 0, 0, 0,
- 0, 0, 0, 9, 242, 0,
- 16, 0, 0, 0, 0, 0,
- 70, 14, 16, 0, 0, 0,
- 0, 0, 70, 142, 32, 128,
- 65, 0, 0, 0, 1, 0,
- 0, 0, 0, 0, 0, 0,
- 56, 0, 0, 7, 114, 0,
- 16, 0, 0, 0, 0, 0,
- 246, 15, 16, 0, 0, 0,
- 0, 0, 70, 2, 16, 0,
- 0, 0, 0, 0, 56, 0,
- 0, 8, 242, 0, 16, 0,
- 1, 0, 0, 0, 86, 5,
- 16, 0, 0, 0, 0, 0,
- 70, 142, 32, 0, 2, 0,
- 0, 0, 1, 0, 0, 0,
- 50, 0, 0, 10, 242, 0,
- 16, 0, 1, 0, 0, 0,
- 70, 142, 32, 0, 2, 0,
- 0, 0, 0, 0, 0, 0,
- 6, 0, 16, 0, 0, 0,
- 0, 0, 70, 14, 16, 0,
- 1, 0, 0, 0, 50, 0,
- 0, 10, 242, 0, 16, 0,
- 1, 0, 0, 0, 70, 142,
- 32, 0, 2, 0, 0, 0,
- 2, 0, 0, 0, 166, 10,
- 16, 0, 0, 0, 0, 0,
- 70, 14, 16, 0, 1, 0,
- 0, 0, 50, 0, 0, 10,
- 242, 32, 16, 0, 0, 0,
- 0, 0, 70, 142, 32, 0,
- 2, 0, 0, 0, 3, 0,
- 0, 0, 246, 15, 16, 0,
- 0, 0, 0, 0, 70, 14,
- 16, 0, 1, 0, 0, 0,
- 50, 0, 0, 11, 50, 32,
- 16, 0, 1, 0, 0, 0,
- 70, 16, 16, 0, 0, 0,
- 0, 0, 230, 138, 32, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 70, 128, 32, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 62, 0, 0, 1,
- 83, 84, 65, 84, 116, 0,
- 0, 0, 13, 0, 0, 0,
- 2, 0, 0, 0, 0, 0,
- 0, 0, 3, 0, 0, 0,
- 12, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 82, 68,
- 69, 70, 148, 2, 0, 0,
- 3, 0, 0, 0, 168, 0,
- 0, 0, 3, 0, 0, 0,
- 28, 0, 0, 0, 0, 4,
- 254, 255, 0, 1, 0, 0,
- 96, 2, 0, 0, 124, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 0,
- 0, 0, 0, 0, 0, 0,
- 133, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 0, 0, 0,
- 1, 0, 0, 0, 0, 0,
- 0, 0, 152, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 2, 0,
- 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 80, 101,
- 114, 76, 97, 121, 101, 114,
- 0, 80, 101, 114, 79, 99,
- 99, 97, 115, 105, 111, 110,
- 97, 108, 76, 97, 121, 101,
- 114, 0, 80, 101, 114, 76,
- 97, 121, 101, 114, 77, 97,
- 110, 97, 103, 101, 114, 0,
- 124, 0, 0, 0, 5, 0,
- 0, 0, 240, 0, 0, 0,
- 128, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 133, 0, 0, 0, 2, 0,
- 0, 0, 220, 1, 0, 0,
- 32, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 152, 0, 0, 0, 1, 0,
- 0, 0, 60, 2, 0, 0,
- 64, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 104, 1, 0, 0, 0, 0,
- 0, 0, 16, 0, 0, 0,
- 2, 0, 0, 0, 120, 1,
- 0, 0, 0, 0, 0, 0,
- 136, 1, 0, 0, 16, 0,
- 0, 0, 16, 0, 0, 0,
- 2, 0, 0, 0, 120, 1,
- 0, 0, 0, 0, 0, 0,
- 147, 1, 0, 0, 32, 0,
- 0, 0, 16, 0, 0, 0,
- 0, 0, 0, 0, 120, 1,
- 0, 0, 0, 0, 0, 0,
- 157, 1, 0, 0, 48, 0,
- 0, 0, 4, 0, 0, 0,
- 0, 0, 0, 0, 172, 1,
- 0, 0, 0, 0, 0, 0,
- 188, 1, 0, 0, 64, 0,
- 0, 0, 64, 0, 0, 0,
- 2, 0, 0, 0, 204, 1,
- 0, 0, 0, 0, 0, 0,
- 118, 84, 101, 120, 116, 117,
- 114, 101, 67, 111, 111, 114,
- 100, 115, 0, 171, 1, 0,
- 3, 0, 1, 0, 4, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 118, 76, 97, 121,
- 101, 114, 81, 117, 97, 100,
- 0, 118, 77, 97, 115, 107,
- 81, 117, 97, 100, 0, 102,
- 76, 97, 121, 101, 114, 79,
- 112, 97, 99, 105, 116, 121,
- 0, 171, 0, 0, 3, 0,
- 1, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 109, 76, 97, 121, 101, 114,
- 84, 114, 97, 110, 115, 102,
- 111, 114, 109, 0, 3, 0,
- 3, 0, 4, 0, 4, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 12, 2, 0, 0,
- 0, 0, 0, 0, 16, 0,
- 0, 0, 2, 0, 0, 0,
- 32, 2, 0, 0, 0, 0,
- 0, 0, 48, 2, 0, 0,
- 16, 0, 0, 0, 16, 0,
- 0, 0, 0, 0, 0, 0,
- 32, 2, 0, 0, 0, 0,
- 0, 0, 118, 82, 101, 110,
- 100, 101, 114, 84, 97, 114,
- 103, 101, 116, 79, 102, 102,
- 115, 101, 116, 0, 1, 0,
- 3, 0, 1, 0, 4, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 102, 76, 97, 121,
- 101, 114, 67, 111, 108, 111,
- 114, 0, 84, 2, 0, 0,
- 0, 0, 0, 0, 64, 0,
- 0, 0, 2, 0, 0, 0,
- 204, 1, 0, 0, 0, 0,
- 0, 0, 109, 80, 114, 111,
- 106, 101, 99, 116, 105, 111,
- 110, 0, 77, 105, 99, 114,
- 111, 115, 111, 102, 116, 32,
- 40, 82, 41, 32, 72, 76,
- 83, 76, 32, 83, 104, 97,
- 100, 101, 114, 32, 67, 111,
- 109, 112, 105, 108, 101, 114,
- 32, 54, 46, 51, 46, 57,
- 54, 48, 48, 46, 49, 54,
- 51, 56, 52, 0, 171, 171,
- 73, 83, 71, 78, 44, 0,
- 0, 0, 1, 0, 0, 0,
- 8, 0, 0, 0, 32, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 3, 0,
- 0, 0, 0, 0, 0, 0,
- 3, 3, 0, 0, 80, 79,
- 83, 73, 84, 73, 79, 78,
- 0, 171, 171, 171, 79, 83,
- 71, 78, 80, 0, 0, 0,
- 2, 0, 0, 0, 8, 0,
- 0, 0, 56, 0, 0, 0,
- 0, 0, 0, 0, 1, 0,
- 0, 0, 3, 0, 0, 0,
- 0, 0, 0, 0, 15, 0,
- 0, 0, 68, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 3, 0, 0, 0,
- 1, 0, 0, 0, 3, 12,
- 0, 0, 83, 86, 95, 80,
- 111, 115, 105, 116, 105, 111,
- 110, 0, 84, 69, 88, 67,
- 79, 79, 82, 68, 0, 171,
- 171, 171, 202, 16, 0, 0,
- 0, 0, 0, 0, 1, 0,
- 0, 0, 2, 0, 0, 0,
- 0, 0, 0, 0, 116, 4,
- 0, 0, 68, 88, 66, 67,
- 168, 126, 222, 160, 23, 76,
- 232, 98, 152, 133, 227, 163,
- 37, 248, 175, 170, 1, 0,
- 0, 0, 116, 4, 0, 0,
- 6, 0, 0, 0, 56, 0,
- 0, 0, 204, 0, 0, 0,
- 136, 1, 0, 0, 4, 2,
- 0, 0, 232, 3, 0, 0,
- 64, 4, 0, 0, 65, 111,
- 110, 57, 140, 0, 0, 0,
- 140, 0, 0, 0, 0, 2,
- 255, 255, 88, 0, 0, 0,
- 52, 0, 0, 0, 1, 0,
- 40, 0, 0, 0, 52, 0,
- 0, 0, 52, 0, 1, 0,
- 36, 0, 0, 0, 52, 0,
- 0, 0, 0, 0, 0, 0,
- 3, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 1, 2,
- 255, 255, 31, 0, 0, 2,
- 0, 0, 0, 128, 0, 0,
- 3, 176, 31, 0, 0, 2,
- 0, 0, 0, 144, 0, 8,
- 15, 160, 66, 0, 0, 3,
- 0, 0, 15, 128, 0, 0,
- 228, 176, 0, 8, 228, 160,
- 5, 0, 0, 3, 0, 0,
- 7, 128, 0, 0, 228, 128,
- 0, 0, 0, 160, 1, 0,
- 0, 2, 0, 0, 8, 128,
- 0, 0, 0, 160, 1, 0,
- 0, 2, 0, 8, 15, 128,
- 0, 0, 228, 128, 255, 255,
- 0, 0, 83, 72, 68, 82,
- 180, 0, 0, 0, 64, 0,
- 0, 0, 45, 0, 0, 0,
- 89, 0, 0, 4, 70, 142,
- 32, 0, 0, 0, 0, 0,
- 4, 0, 0, 0, 90, 0,
- 0, 3, 0, 96, 16, 0,
- 0, 0, 0, 0, 88, 24,
- 0, 4, 0, 112, 16, 0,
- 0, 0, 0, 0, 85, 85,
- 0, 0, 98, 16, 0, 3,
- 50, 16, 16, 0, 1, 0,
- 0, 0, 101, 0, 0, 3,
- 242, 32, 16, 0, 0, 0,
- 0, 0, 104, 0, 0, 2,
- 1, 0, 0, 0, 69, 0,
- 0, 9, 242, 0, 16, 0,
- 0, 0, 0, 0, 70, 16,
- 16, 0, 1, 0, 0, 0,
- 70, 126, 16, 0, 0, 0,
- 0, 0, 0, 96, 16, 0,
- 0, 0, 0, 0, 56, 0,
- 0, 8, 114, 32, 16, 0,
- 0, 0, 0, 0, 70, 2,
- 16, 0, 0, 0, 0, 0,
- 6, 128, 32, 0, 0, 0,
- 0, 0, 3, 0, 0, 0,
- 54, 0, 0, 6, 130, 32,
- 16, 0, 0, 0, 0, 0,
- 10, 128, 32, 0, 0, 0,
- 0, 0, 3, 0, 0, 0,
- 62, 0, 0, 1, 83, 84,
- 65, 84, 116, 0, 0, 0,
- 4, 0, 0, 0, 1, 0,
- 0, 0, 0, 0, 0, 0,
- 2, 0, 0, 0, 1, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 82, 68, 69, 70,
- 220, 1, 0, 0, 1, 0,
- 0, 0, 164, 0, 0, 0,
- 3, 0, 0, 0, 28, 0,
- 0, 0, 0, 4, 255, 255,
- 0, 1, 0, 0, 168, 1,
- 0, 0, 124, 0, 0, 0,
- 3, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 149, 0,
- 0, 0, 2, 0, 0, 0,
- 5, 0, 0, 0, 4, 0,
- 0, 0, 255, 255, 255, 255,
- 0, 0, 0, 0, 1, 0,
- 0, 0, 12, 0, 0, 0,
- 154, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 0, 0,
- 0, 0, 76, 97, 121, 101,
- 114, 84, 101, 120, 116, 117,
- 114, 101, 83, 97, 109, 112,
- 108, 101, 114, 80, 111, 105,
- 110, 116, 0, 116, 82, 71,
- 66, 0, 80, 101, 114, 76,
- 97, 121, 101, 114, 0, 171,
- 154, 0, 0, 0, 5, 0,
- 0, 0, 188, 0, 0, 0,
- 128, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 52, 1, 0, 0, 0, 0,
- 0, 0, 16, 0, 0, 0,
- 0, 0, 0, 0, 68, 1,
- 0, 0, 0, 0, 0, 0,
- 84, 1, 0, 0, 16, 0,
- 0, 0, 16, 0, 0, 0,
- 0, 0, 0, 0, 68, 1,
- 0, 0, 0, 0, 0, 0,
- 95, 1, 0, 0, 32, 0,
- 0, 0, 16, 0, 0, 0,
- 0, 0, 0, 0, 68, 1,
- 0, 0, 0, 0, 0, 0,
- 105, 1, 0, 0, 48, 0,
- 0, 0, 4, 0, 0, 0,
- 2, 0, 0, 0, 120, 1,
- 0, 0, 0, 0, 0, 0,
- 136, 1, 0, 0, 64, 0,
- 0, 0, 64, 0, 0, 0,
- 0, 0, 0, 0, 152, 1,
- 0, 0, 0, 0, 0, 0,
- 118, 84, 101, 120, 116, 117,
- 114, 101, 67, 111, 111, 114,
- 100, 115, 0, 171, 1, 0,
- 3, 0, 1, 0, 4, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 118, 76, 97, 121,
- 101, 114, 81, 117, 97, 100,
- 0, 118, 77, 97, 115, 107,
- 81, 117, 97, 100, 0, 102,
- 76, 97, 121, 101, 114, 79,
- 112, 97, 99, 105, 116, 121,
- 0, 171, 0, 0, 3, 0,
- 1, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 109, 76, 97, 121, 101, 114,
- 84, 114, 97, 110, 115, 102,
- 111, 114, 109, 0, 3, 0,
- 3, 0, 4, 0, 4, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 77, 105, 99, 114,
- 111, 115, 111, 102, 116, 32,
- 40, 82, 41, 32, 72, 76,
- 83, 76, 32, 83, 104, 97,
- 100, 101, 114, 32, 67, 111,
- 109, 112, 105, 108, 101, 114,
- 32, 54, 46, 51, 46, 57,
- 54, 48, 48, 46, 49, 54,
- 51, 56, 52, 0, 171, 171,
- 73, 83, 71, 78, 80, 0,
- 0, 0, 2, 0, 0, 0,
- 8, 0, 0, 0, 56, 0,
- 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 3, 0,
- 0, 0, 0, 0, 0, 0,
- 15, 0, 0, 0, 68, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 3, 0,
- 0, 0, 1, 0, 0, 0,
- 3, 3, 0, 0, 83, 86,
- 95, 80, 111, 115, 105, 116,
- 105, 111, 110, 0, 84, 69,
- 88, 67, 79, 79, 82, 68,
- 0, 171, 171, 171, 79, 83,
- 71, 78, 44, 0, 0, 0,
- 1, 0, 0, 0, 8, 0,
- 0, 0, 32, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 3, 0, 0, 0,
- 0, 0, 0, 0, 15, 0,
- 0, 0, 83, 86, 95, 84,
- 97, 114, 103, 101, 116, 0,
- 171, 171, 106, 24, 0, 0,
- 0, 0, 0, 0, 82, 101,
- 110, 100, 101, 114, 82, 71,
- 66, 65, 76, 97, 121, 101,
- 114, 80, 114, 101, 109, 117,
- 108, 0, 4, 0, 0, 0,
- 1, 0, 0, 0, 0, 0,
- 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 1, 0,
- 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 0, 0,
- 0, 0, 1, 0, 0, 0,
- 3, 0, 0, 0, 255, 255,
- 255, 255, 136, 7, 0, 0,
- 68, 88, 66, 67, 134, 58,
- 181, 81, 234, 180, 23, 54,
- 140, 98, 159, 162, 74, 150,
- 11, 172, 1, 0, 0, 0,
- 136, 7, 0, 0, 6, 0,
- 0, 0, 56, 0, 0, 0,
- 188, 1, 0, 0, 228, 3,
- 0, 0, 96, 4, 0, 0,
- 252, 6, 0, 0, 48, 7,
- 0, 0, 65, 111, 110, 57,
- 124, 1, 0, 0, 124, 1,
- 0, 0, 0, 2, 254, 255,
- 24, 1, 0, 0, 100, 0,
- 0, 0, 5, 0, 36, 0,
- 0, 0, 96, 0, 0, 0,
- 96, 0, 0, 0, 36, 0,
- 1, 0, 96, 0, 0, 0,
- 0, 0, 2, 0, 1, 0,
- 0, 0, 0, 0, 0, 0,
- 4, 0, 2, 0, 3, 0,
- 0, 0, 0, 0, 0, 0,
- 7, 0, 1, 0, 5, 0,
- 0, 0, 0, 0, 1, 0,
- 0, 0, 1, 0, 6, 0,
- 0, 0, 0, 0, 2, 0,
- 0, 0, 4, 0, 7, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 2, 254, 255,
- 31, 0, 0, 2, 5, 0,
- 0, 128, 0, 0, 15, 144,
- 4, 0, 0, 4, 0, 0,
- 3, 224, 0, 0, 228, 144,
- 1, 0, 238, 160, 1, 0,
- 228, 160, 4, 0, 0, 4,
- 0, 0, 3, 128, 0, 0,
- 228, 144, 2, 0, 238, 160,
- 2, 0, 228, 160, 5, 0,
- 0, 3, 1, 0, 15, 128,
- 0, 0, 85, 128, 4, 0,
- 228, 160, 4, 0, 0, 4,
- 0, 0, 15, 128, 3, 0,
- 228, 160, 0, 0, 0, 128,
- 1, 0, 228, 128, 2, 0,
- 0, 3, 0, 0, 15, 128,
- 0, 0, 228, 128, 5, 0,
- 228, 160, 6, 0, 0, 2,
- 1, 0, 1, 128, 0, 0,
- 255, 128, 5, 0, 0, 3,
- 0, 0, 7, 128, 0, 0,
- 228, 128, 1, 0, 0, 128,
- 2, 0, 0, 3, 0, 0,
- 15, 128, 0, 0, 228, 128,
- 6, 0, 228, 161, 5, 0,
- 0, 3, 0, 0, 7, 128,
- 0, 0, 255, 128, 0, 0,
- 228, 128, 5, 0, 0, 3,
- 1, 0, 15, 128, 0, 0,
- 85, 128, 8, 0, 228, 160,
- 4, 0, 0, 4, 1, 0,
- 15, 128, 7, 0, 228, 160,
- 0, 0, 0, 128, 1, 0,
- 228, 128, 4, 0, 0, 4,
- 1, 0, 15, 128, 9, 0,
- 228, 160, 0, 0, 170, 128,
- 1, 0, 228, 128, 4, 0,
- 0, 4, 0, 0, 15, 128,
- 10, 0, 228, 160, 0, 0,
- 255, 128, 1, 0, 228, 128,
- 4, 0, 0, 4, 0, 0,
- 3, 192, 0, 0, 255, 128,
- 0, 0, 228, 160, 0, 0,
- 228, 128, 1, 0, 0, 2,
- 0, 0, 12, 192, 0, 0,
- 228, 128, 255, 255, 0, 0,
- 83, 72, 68, 82, 32, 2,
- 0, 0, 64, 0, 1, 0,
- 136, 0, 0, 0, 89, 0,
- 0, 4, 70, 142, 32, 0,
- 0, 0, 0, 0, 8, 0,
- 0, 0, 89, 0, 0, 4,
- 70, 142, 32, 0, 1, 0,
- 0, 0, 1, 0, 0, 0,
- 89, 0, 0, 4, 70, 142,
- 32, 0, 2, 0, 0, 0,
- 4, 0, 0, 0, 95, 0,
- 0, 3, 50, 16, 16, 0,
- 0, 0, 0, 0, 103, 0,
- 0, 4, 242, 32, 16, 0,
- 0, 0, 0, 0, 1, 0,
- 0, 0, 101, 0, 0, 3,
- 50, 32, 16, 0, 1, 0,
- 0, 0, 104, 0, 0, 2,
- 2, 0, 0, 0, 50, 0,
- 0, 11, 50, 0, 16, 0,
- 0, 0, 0, 0, 70, 16,
- 16, 0, 0, 0, 0, 0,
- 230, 138, 32, 0, 0, 0,
- 0, 0, 1, 0, 0, 0,
- 70, 128, 32, 0, 0, 0,
- 0, 0, 1, 0, 0, 0,
- 56, 0, 0, 8, 242, 0,
- 16, 0, 1, 0, 0, 0,
- 86, 5, 16, 0, 0, 0,
- 0, 0, 70, 142, 32, 0,
- 0, 0, 0, 0, 5, 0,
- 0, 0, 50, 0, 0, 10,
- 242, 0, 16, 0, 0, 0,
- 0, 0, 70, 142, 32, 0,
- 0, 0, 0, 0, 4, 0,
- 0, 0, 6, 0, 16, 0,
- 0, 0, 0, 0, 70, 14,
- 16, 0, 1, 0, 0, 0,
- 0, 0, 0, 8, 242, 0,
- 16, 0, 0, 0, 0, 0,
- 70, 14, 16, 0, 0, 0,
- 0, 0, 70, 142, 32, 0,
- 0, 0, 0, 0, 7, 0,
- 0, 0, 14, 0, 0, 7,
- 114, 0, 16, 0, 0, 0,
- 0, 0, 70, 2, 16, 0,
- 0, 0, 0, 0, 246, 15,
- 16, 0, 0, 0, 0, 0,
- 0, 0, 0, 9, 242, 0,
- 16, 0, 0, 0, 0, 0,
- 70, 14, 16, 0, 0, 0,
- 0, 0, 70, 142, 32, 128,
- 65, 0, 0, 0, 1, 0,
- 0, 0, 0, 0, 0, 0,
- 56, 0, 0, 7, 114, 0,
- 16, 0, 0, 0, 0, 0,
- 246, 15, 16, 0, 0, 0,
- 0, 0, 70, 2, 16, 0,
- 0, 0, 0, 0, 56, 0,
- 0, 8, 242, 0, 16, 0,
- 1, 0, 0, 0, 86, 5,
- 16, 0, 0, 0, 0, 0,
- 70, 142, 32, 0, 2, 0,
- 0, 0, 1, 0, 0, 0,
- 50, 0, 0, 10, 242, 0,
- 16, 0, 1, 0, 0, 0,
- 70, 142, 32, 0, 2, 0,
- 0, 0, 0, 0, 0, 0,
- 6, 0, 16, 0, 0, 0,
- 0, 0, 70, 14, 16, 0,
- 1, 0, 0, 0, 50, 0,
- 0, 10, 242, 0, 16, 0,
- 1, 0, 0, 0, 70, 142,
- 32, 0, 2, 0, 0, 0,
- 2, 0, 0, 0, 166, 10,
- 16, 0, 0, 0, 0, 0,
- 70, 14, 16, 0, 1, 0,
- 0, 0, 50, 0, 0, 10,
- 242, 32, 16, 0, 0, 0,
- 0, 0, 70, 142, 32, 0,
- 2, 0, 0, 0, 3, 0,
- 0, 0, 246, 15, 16, 0,
- 0, 0, 0, 0, 70, 14,
- 16, 0, 1, 0, 0, 0,
- 50, 0, 0, 11, 50, 32,
- 16, 0, 1, 0, 0, 0,
- 70, 16, 16, 0, 0, 0,
- 0, 0, 230, 138, 32, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 70, 128, 32, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 62, 0, 0, 1,
- 83, 84, 65, 84, 116, 0,
- 0, 0, 13, 0, 0, 0,
- 2, 0, 0, 0, 0, 0,
- 0, 0, 3, 0, 0, 0,
- 12, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 82, 68,
- 69, 70, 148, 2, 0, 0,
- 3, 0, 0, 0, 168, 0,
- 0, 0, 3, 0, 0, 0,
- 28, 0, 0, 0, 0, 4,
- 254, 255, 0, 1, 0, 0,
- 96, 2, 0, 0, 124, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 0,
- 0, 0, 0, 0, 0, 0,
- 133, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 0, 0, 0,
- 1, 0, 0, 0, 0, 0,
- 0, 0, 152, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 2, 0,
- 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 80, 101,
- 114, 76, 97, 121, 101, 114,
- 0, 80, 101, 114, 79, 99,
- 99, 97, 115, 105, 111, 110,
- 97, 108, 76, 97, 121, 101,
- 114, 0, 80, 101, 114, 76,
- 97, 121, 101, 114, 77, 97,
- 110, 97, 103, 101, 114, 0,
- 124, 0, 0, 0, 5, 0,
- 0, 0, 240, 0, 0, 0,
- 128, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 133, 0, 0, 0, 2, 0,
- 0, 0, 220, 1, 0, 0,
- 32, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 152, 0, 0, 0, 1, 0,
- 0, 0, 60, 2, 0, 0,
- 64, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 104, 1, 0, 0, 0, 0,
- 0, 0, 16, 0, 0, 0,
- 2, 0, 0, 0, 120, 1,
- 0, 0, 0, 0, 0, 0,
- 136, 1, 0, 0, 16, 0,
- 0, 0, 16, 0, 0, 0,
- 2, 0, 0, 0, 120, 1,
- 0, 0, 0, 0, 0, 0,
- 147, 1, 0, 0, 32, 0,
- 0, 0, 16, 0, 0, 0,
- 0, 0, 0, 0, 120, 1,
- 0, 0, 0, 0, 0, 0,
- 157, 1, 0, 0, 48, 0,
- 0, 0, 4, 0, 0, 0,
- 0, 0, 0, 0, 172, 1,
- 0, 0, 0, 0, 0, 0,
- 188, 1, 0, 0, 64, 0,
- 0, 0, 64, 0, 0, 0,
- 2, 0, 0, 0, 204, 1,
- 0, 0, 0, 0, 0, 0,
- 118, 84, 101, 120, 116, 117,
- 114, 101, 67, 111, 111, 114,
- 100, 115, 0, 171, 1, 0,
- 3, 0, 1, 0, 4, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 118, 76, 97, 121,
- 101, 114, 81, 117, 97, 100,
- 0, 118, 77, 97, 115, 107,
- 81, 117, 97, 100, 0, 102,
- 76, 97, 121, 101, 114, 79,
- 112, 97, 99, 105, 116, 121,
- 0, 171, 0, 0, 3, 0,
- 1, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 109, 76, 97, 121, 101, 114,
- 84, 114, 97, 110, 115, 102,
- 111, 114, 109, 0, 3, 0,
- 3, 0, 4, 0, 4, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 12, 2, 0, 0,
- 0, 0, 0, 0, 16, 0,
- 0, 0, 2, 0, 0, 0,
- 32, 2, 0, 0, 0, 0,
- 0, 0, 48, 2, 0, 0,
- 16, 0, 0, 0, 16, 0,
- 0, 0, 0, 0, 0, 0,
- 32, 2, 0, 0, 0, 0,
- 0, 0, 118, 82, 101, 110,
- 100, 101, 114, 84, 97, 114,
- 103, 101, 116, 79, 102, 102,
- 115, 101, 116, 0, 1, 0,
- 3, 0, 1, 0, 4, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 102, 76, 97, 121,
- 101, 114, 67, 111, 108, 111,
- 114, 0, 84, 2, 0, 0,
- 0, 0, 0, 0, 64, 0,
- 0, 0, 2, 0, 0, 0,
- 204, 1, 0, 0, 0, 0,
- 0, 0, 109, 80, 114, 111,
- 106, 101, 99, 116, 105, 111,
- 110, 0, 77, 105, 99, 114,
- 111, 115, 111, 102, 116, 32,
- 40, 82, 41, 32, 72, 76,
- 83, 76, 32, 83, 104, 97,
- 100, 101, 114, 32, 67, 111,
- 109, 112, 105, 108, 101, 114,
- 32, 54, 46, 51, 46, 57,
- 54, 48, 48, 46, 49, 54,
- 51, 56, 52, 0, 171, 171,
- 73, 83, 71, 78, 44, 0,
- 0, 0, 1, 0, 0, 0,
- 8, 0, 0, 0, 32, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 3, 0,
- 0, 0, 0, 0, 0, 0,
- 3, 3, 0, 0, 80, 79,
- 83, 73, 84, 73, 79, 78,
- 0, 171, 171, 171, 79, 83,
- 71, 78, 80, 0, 0, 0,
- 2, 0, 0, 0, 8, 0,
- 0, 0, 56, 0, 0, 0,
- 0, 0, 0, 0, 1, 0,
- 0, 0, 3, 0, 0, 0,
- 0, 0, 0, 0, 15, 0,
- 0, 0, 68, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 3, 0, 0, 0,
- 1, 0, 0, 0, 3, 12,
- 0, 0, 83, 86, 95, 80,
- 111, 115, 105, 116, 105, 111,
- 110, 0, 84, 69, 88, 67,
- 79, 79, 82, 68, 0, 171,
- 171, 171, 48, 29, 0, 0,
- 0, 0, 0, 0, 1, 0,
- 0, 0, 2, 0, 0, 0,
- 0, 0, 0, 0, 80, 4,
- 0, 0, 68, 88, 66, 67,
- 197, 240, 201, 103, 219, 157,
- 229, 76, 76, 196, 241, 175,
- 193, 131, 135, 238, 1, 0,
- 0, 0, 80, 4, 0, 0,
- 6, 0, 0, 0, 56, 0,
- 0, 0, 192, 0, 0, 0,
- 100, 1, 0, 0, 224, 1,
- 0, 0, 196, 3, 0, 0,
- 28, 4, 0, 0, 65, 111,
- 110, 57, 128, 0, 0, 0,
- 128, 0, 0, 0, 0, 2,
- 255, 255, 76, 0, 0, 0,
- 52, 0, 0, 0, 1, 0,
- 40, 0, 0, 0, 52, 0,
- 0, 0, 52, 0, 1, 0,
- 36, 0, 0, 0, 52, 0,
- 0, 0, 0, 0, 0, 0,
- 3, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 1, 2,
- 255, 255, 31, 0, 0, 2,
- 0, 0, 0, 128, 0, 0,
- 3, 176, 31, 0, 0, 2,
- 0, 0, 0, 144, 0, 8,
- 15, 160, 66, 0, 0, 3,
- 0, 0, 15, 128, 0, 0,
- 228, 176, 0, 8, 228, 160,
- 5, 0, 0, 3, 0, 0,
- 15, 128, 0, 0, 228, 128,
- 0, 0, 0, 160, 1, 0,
- 0, 2, 0, 8, 15, 128,
- 0, 0, 228, 128, 255, 255,
- 0, 0, 83, 72, 68, 82,
- 156, 0, 0, 0, 64, 0,
- 0, 0, 39, 0, 0, 0,
- 89, 0, 0, 4, 70, 142,
- 32, 0, 0, 0, 0, 0,
- 4, 0, 0, 0, 90, 0,
- 0, 3, 0, 96, 16, 0,
- 0, 0, 0, 0, 88, 24,
- 0, 4, 0, 112, 16, 0,
- 0, 0, 0, 0, 85, 85,
- 0, 0, 98, 16, 0, 3,
- 50, 16, 16, 0, 1, 0,
- 0, 0, 101, 0, 0, 3,
- 242, 32, 16, 0, 0, 0,
- 0, 0, 104, 0, 0, 2,
- 1, 0, 0, 0, 69, 0,
- 0, 9, 242, 0, 16, 0,
- 0, 0, 0, 0, 70, 16,
- 16, 0, 1, 0, 0, 0,
- 70, 126, 16, 0, 0, 0,
- 0, 0, 0, 96, 16, 0,
- 0, 0, 0, 0, 56, 0,
- 0, 8, 242, 32, 16, 0,
- 0, 0, 0, 0, 70, 14,
- 16, 0, 0, 0, 0, 0,
- 6, 128, 32, 0, 0, 0,
- 0, 0, 3, 0, 0, 0,
- 62, 0, 0, 1, 83, 84,
- 65, 84, 116, 0, 0, 0,
- 3, 0, 0, 0, 1, 0,
- 0, 0, 0, 0, 0, 0,
- 2, 0, 0, 0, 1, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 82, 68, 69, 70,
- 220, 1, 0, 0, 1, 0,
- 0, 0, 164, 0, 0, 0,
- 3, 0, 0, 0, 28, 0,
- 0, 0, 0, 4, 255, 255,
- 0, 1, 0, 0, 168, 1,
- 0, 0, 124, 0, 0, 0,
- 3, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 150, 0,
- 0, 0, 2, 0, 0, 0,
- 5, 0, 0, 0, 4, 0,
- 0, 0, 255, 255, 255, 255,
- 0, 0, 0, 0, 1, 0,
- 0, 0, 12, 0, 0, 0,
- 155, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 0, 0,
- 0, 0, 76, 97, 121, 101,
- 114, 84, 101, 120, 116, 117,
- 114, 101, 83, 97, 109, 112,
- 108, 101, 114, 76, 105, 110,
- 101, 97, 114, 0, 116, 82,
- 71, 66, 0, 80, 101, 114,
- 76, 97, 121, 101, 114, 0,
- 155, 0, 0, 0, 5, 0,
- 0, 0, 188, 0, 0, 0,
- 128, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 52, 1, 0, 0, 0, 0,
- 0, 0, 16, 0, 0, 0,
- 0, 0, 0, 0, 68, 1,
- 0, 0, 0, 0, 0, 0,
- 84, 1, 0, 0, 16, 0,
- 0, 0, 16, 0, 0, 0,
- 0, 0, 0, 0, 68, 1,
- 0, 0, 0, 0, 0, 0,
- 95, 1, 0, 0, 32, 0,
- 0, 0, 16, 0, 0, 0,
- 0, 0, 0, 0, 68, 1,
- 0, 0, 0, 0, 0, 0,
- 105, 1, 0, 0, 48, 0,
- 0, 0, 4, 0, 0, 0,
- 2, 0, 0, 0, 120, 1,
- 0, 0, 0, 0, 0, 0,
- 136, 1, 0, 0, 64, 0,
- 0, 0, 64, 0, 0, 0,
- 0, 0, 0, 0, 152, 1,
- 0, 0, 0, 0, 0, 0,
- 118, 84, 101, 120, 116, 117,
- 114, 101, 67, 111, 111, 114,
- 100, 115, 0, 171, 1, 0,
- 3, 0, 1, 0, 4, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 118, 76, 97, 121,
- 101, 114, 81, 117, 97, 100,
- 0, 118, 77, 97, 115, 107,
- 81, 117, 97, 100, 0, 102,
- 76, 97, 121, 101, 114, 79,
- 112, 97, 99, 105, 116, 121,
- 0, 171, 0, 0, 3, 0,
- 1, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 109, 76, 97, 121, 101, 114,
- 84, 114, 97, 110, 115, 102,
- 111, 114, 109, 0, 3, 0,
- 3, 0, 4, 0, 4, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 77, 105, 99, 114,
- 111, 115, 111, 102, 116, 32,
- 40, 82, 41, 32, 72, 76,
- 83, 76, 32, 83, 104, 97,
- 100, 101, 114, 32, 67, 111,
- 109, 112, 105, 108, 101, 114,
- 32, 54, 46, 51, 46, 57,
- 54, 48, 48, 46, 49, 54,
- 51, 56, 52, 0, 171, 171,
- 73, 83, 71, 78, 80, 0,
- 0, 0, 2, 0, 0, 0,
- 8, 0, 0, 0, 56, 0,
- 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 3, 0,
- 0, 0, 0, 0, 0, 0,
- 15, 0, 0, 0, 68, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 3, 0,
- 0, 0, 1, 0, 0, 0,
- 3, 3, 0, 0, 83, 86,
- 95, 80, 111, 115, 105, 116,
- 105, 111, 110, 0, 84, 69,
- 88, 67, 79, 79, 82, 68,
- 0, 171, 171, 171, 79, 83,
- 71, 78, 44, 0, 0, 0,
- 1, 0, 0, 0, 8, 0,
- 0, 0, 32, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 3, 0, 0, 0,
- 0, 0, 0, 0, 15, 0,
- 0, 0, 83, 86, 95, 84,
- 97, 114, 103, 101, 116, 0,
- 171, 171, 208, 36, 0, 0,
- 0, 0, 0, 0, 82, 101,
- 110, 100, 101, 114, 82, 71,
- 66, 65, 76, 97, 121, 101,
- 114, 78, 111, 110, 80, 114,
- 101, 109, 117, 108, 0, 4,
- 0, 0, 0, 1, 0, 0,
- 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0,
- 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 3, 0, 0,
- 0, 255, 255, 255, 255, 136,
- 7, 0, 0, 68, 88, 66,
- 67, 134, 58, 181, 81, 234,
- 180, 23, 54, 140, 98, 159,
- 162, 74, 150, 11, 172, 1,
- 0, 0, 0, 136, 7, 0,
- 0, 6, 0, 0, 0, 56,
- 0, 0, 0, 188, 1, 0,
- 0, 228, 3, 0, 0, 96,
- 4, 0, 0, 252, 6, 0,
- 0, 48, 7, 0, 0, 65,
- 111, 110, 57, 124, 1, 0,
- 0, 124, 1, 0, 0, 0,
- 2, 254, 255, 24, 1, 0,
- 0, 100, 0, 0, 0, 5,
- 0, 36, 0, 0, 0, 96,
- 0, 0, 0, 96, 0, 0,
- 0, 36, 0, 1, 0, 96,
- 0, 0, 0, 0, 0, 2,
- 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 4, 0, 2,
- 0, 3, 0, 0, 0, 0,
- 0, 0, 0, 7, 0, 1,
- 0, 5, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 1,
- 0, 6, 0, 0, 0, 0,
- 0, 2, 0, 0, 0, 4,
- 0, 7, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1,
- 2, 254, 255, 31, 0, 0,
- 2, 5, 0, 0, 128, 0,
- 0, 15, 144, 4, 0, 0,
- 4, 0, 0, 3, 224, 0,
- 0, 228, 144, 1, 0, 238,
- 160, 1, 0, 228, 160, 4,
- 0, 0, 4, 0, 0, 3,
- 128, 0, 0, 228, 144, 2,
- 0, 238, 160, 2, 0, 228,
- 160, 5, 0, 0, 3, 1,
- 0, 15, 128, 0, 0, 85,
- 128, 4, 0, 228, 160, 4,
- 0, 0, 4, 0, 0, 15,
- 128, 3, 0, 228, 160, 0,
- 0, 0, 128, 1, 0, 228,
- 128, 2, 0, 0, 3, 0,
- 0, 15, 128, 0, 0, 228,
- 128, 5, 0, 228, 160, 6,
- 0, 0, 2, 1, 0, 1,
- 128, 0, 0, 255, 128, 5,
- 0, 0, 3, 0, 0, 7,
- 128, 0, 0, 228, 128, 1,
- 0, 0, 128, 2, 0, 0,
- 3, 0, 0, 15, 128, 0,
- 0, 228, 128, 6, 0, 228,
- 161, 5, 0, 0, 3, 0,
- 0, 7, 128, 0, 0, 255,
- 128, 0, 0, 228, 128, 5,
- 0, 0, 3, 1, 0, 15,
- 128, 0, 0, 85, 128, 8,
- 0, 228, 160, 4, 0, 0,
- 4, 1, 0, 15, 128, 7,
- 0, 228, 160, 0, 0, 0,
- 128, 1, 0, 228, 128, 4,
- 0, 0, 4, 1, 0, 15,
- 128, 9, 0, 228, 160, 0,
- 0, 170, 128, 1, 0, 228,
- 128, 4, 0, 0, 4, 0,
- 0, 15, 128, 10, 0, 228,
- 160, 0, 0, 255, 128, 1,
- 0, 228, 128, 4, 0, 0,
- 4, 0, 0, 3, 192, 0,
- 0, 255, 128, 0, 0, 228,
- 160, 0, 0, 228, 128, 1,
- 0, 0, 2, 0, 0, 12,
- 192, 0, 0, 228, 128, 255,
- 255, 0, 0, 83, 72, 68,
- 82, 32, 2, 0, 0, 64,
- 0, 1, 0, 136, 0, 0,
- 0, 89, 0, 0, 4, 70,
- 142, 32, 0, 0, 0, 0,
- 0, 8, 0, 0, 0, 89,
- 0, 0, 4, 70, 142, 32,
- 0, 1, 0, 0, 0, 1,
- 0, 0, 0, 89, 0, 0,
- 4, 70, 142, 32, 0, 2,
- 0, 0, 0, 4, 0, 0,
- 0, 95, 0, 0, 3, 50,
- 16, 16, 0, 0, 0, 0,
- 0, 103, 0, 0, 4, 242,
- 32, 16, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 101,
- 0, 0, 3, 50, 32, 16,
- 0, 1, 0, 0, 0, 104,
- 0, 0, 2, 2, 0, 0,
- 0, 50, 0, 0, 11, 50,
- 0, 16, 0, 0, 0, 0,
- 0, 70, 16, 16, 0, 0,
- 0, 0, 0, 230, 138, 32,
- 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 70, 128, 32,
- 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 56, 0, 0,
- 8, 242, 0, 16, 0, 1,
- 0, 0, 0, 86, 5, 16,
- 0, 0, 0, 0, 0, 70,
- 142, 32, 0, 0, 0, 0,
- 0, 5, 0, 0, 0, 50,
- 0, 0, 10, 242, 0, 16,
- 0, 0, 0, 0, 0, 70,
- 142, 32, 0, 0, 0, 0,
- 0, 4, 0, 0, 0, 6,
- 0, 16, 0, 0, 0, 0,
- 0, 70, 14, 16, 0, 1,
- 0, 0, 0, 0, 0, 0,
- 8, 242, 0, 16, 0, 0,
- 0, 0, 0, 70, 14, 16,
- 0, 0, 0, 0, 0, 70,
- 142, 32, 0, 0, 0, 0,
- 0, 7, 0, 0, 0, 14,
- 0, 0, 7, 114, 0, 16,
- 0, 0, 0, 0, 0, 70,
- 2, 16, 0, 0, 0, 0,
- 0, 246, 15, 16, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 9, 242, 0, 16, 0, 0,
- 0, 0, 0, 70, 14, 16,
- 0, 0, 0, 0, 0, 70,
- 142, 32, 128, 65, 0, 0,
- 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 56, 0, 0,
- 7, 114, 0, 16, 0, 0,
- 0, 0, 0, 246, 15, 16,
- 0, 0, 0, 0, 0, 70,
- 2, 16, 0, 0, 0, 0,
- 0, 56, 0, 0, 8, 242,
- 0, 16, 0, 1, 0, 0,
- 0, 86, 5, 16, 0, 0,
- 0, 0, 0, 70, 142, 32,
- 0, 2, 0, 0, 0, 1,
- 0, 0, 0, 50, 0, 0,
- 10, 242, 0, 16, 0, 1,
- 0, 0, 0, 70, 142, 32,
- 0, 2, 0, 0, 0, 0,
- 0, 0, 0, 6, 0, 16,
- 0, 0, 0, 0, 0, 70,
- 14, 16, 0, 1, 0, 0,
- 0, 50, 0, 0, 10, 242,
- 0, 16, 0, 1, 0, 0,
- 0, 70, 142, 32, 0, 2,
- 0, 0, 0, 2, 0, 0,
- 0, 166, 10, 16, 0, 0,
- 0, 0, 0, 70, 14, 16,
- 0, 1, 0, 0, 0, 50,
- 0, 0, 10, 242, 32, 16,
- 0, 0, 0, 0, 0, 70,
- 142, 32, 0, 2, 0, 0,
- 0, 3, 0, 0, 0, 246,
- 15, 16, 0, 0, 0, 0,
- 0, 70, 14, 16, 0, 1,
- 0, 0, 0, 50, 0, 0,
- 11, 50, 32, 16, 0, 1,
- 0, 0, 0, 70, 16, 16,
- 0, 0, 0, 0, 0, 230,
- 138, 32, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 70,
- 128, 32, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 62,
- 0, 0, 1, 83, 84, 65,
- 84, 116, 0, 0, 0, 13,
- 0, 0, 0, 2, 0, 0,
- 0, 0, 0, 0, 0, 3,
- 0, 0, 0, 12, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 82, 68, 69, 70, 148,
- 2, 0, 0, 3, 0, 0,
- 0, 168, 0, 0, 0, 3,
- 0, 0, 0, 28, 0, 0,
- 0, 0, 4, 254, 255, 0,
- 1, 0, 0, 96, 2, 0,
- 0, 124, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 133, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 1, 0, 0,
- 0, 0, 0, 0, 0, 152,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 2, 0, 0, 0, 1,
- 0, 0, 0, 0, 0, 0,
- 0, 80, 101, 114, 76, 97,
- 121, 101, 114, 0, 80, 101,
- 114, 79, 99, 99, 97, 115,
- 105, 111, 110, 97, 108, 76,
- 97, 121, 101, 114, 0, 80,
- 101, 114, 76, 97, 121, 101,
- 114, 77, 97, 110, 97, 103,
- 101, 114, 0, 124, 0, 0,
- 0, 5, 0, 0, 0, 240,
- 0, 0, 0, 128, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 133, 0, 0,
- 0, 2, 0, 0, 0, 220,
- 1, 0, 0, 32, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 152, 0, 0,
- 0, 1, 0, 0, 0, 60,
- 2, 0, 0, 64, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 104, 1, 0,
- 0, 0, 0, 0, 0, 16,
- 0, 0, 0, 2, 0, 0,
- 0, 120, 1, 0, 0, 0,
- 0, 0, 0, 136, 1, 0,
- 0, 16, 0, 0, 0, 16,
- 0, 0, 0, 2, 0, 0,
- 0, 120, 1, 0, 0, 0,
- 0, 0, 0, 147, 1, 0,
- 0, 32, 0, 0, 0, 16,
- 0, 0, 0, 0, 0, 0,
- 0, 120, 1, 0, 0, 0,
- 0, 0, 0, 157, 1, 0,
- 0, 48, 0, 0, 0, 4,
- 0, 0, 0, 0, 0, 0,
- 0, 172, 1, 0, 0, 0,
- 0, 0, 0, 188, 1, 0,
- 0, 64, 0, 0, 0, 64,
- 0, 0, 0, 2, 0, 0,
- 0, 204, 1, 0, 0, 0,
- 0, 0, 0, 118, 84, 101,
- 120, 116, 117, 114, 101, 67,
- 111, 111, 114, 100, 115, 0,
- 171, 1, 0, 3, 0, 1,
- 0, 4, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 118,
- 76, 97, 121, 101, 114, 81,
- 117, 97, 100, 0, 118, 77,
- 97, 115, 107, 81, 117, 97,
- 100, 0, 102, 76, 97, 121,
- 101, 114, 79, 112, 97, 99,
- 105, 116, 121, 0, 171, 0,
- 0, 3, 0, 1, 0, 1,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 109, 76, 97,
- 121, 101, 114, 84, 114, 97,
- 110, 115, 102, 111, 114, 109,
- 0, 3, 0, 3, 0, 4,
- 0, 4, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 12,
- 2, 0, 0, 0, 0, 0,
- 0, 16, 0, 0, 0, 2,
- 0, 0, 0, 32, 2, 0,
- 0, 0, 0, 0, 0, 48,
- 2, 0, 0, 16, 0, 0,
- 0, 16, 0, 0, 0, 0,
- 0, 0, 0, 32, 2, 0,
- 0, 0, 0, 0, 0, 118,
- 82, 101, 110, 100, 101, 114,
- 84, 97, 114, 103, 101, 116,
- 79, 102, 102, 115, 101, 116,
- 0, 1, 0, 3, 0, 1,
- 0, 4, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 102,
- 76, 97, 121, 101, 114, 67,
- 111, 108, 111, 114, 0, 84,
- 2, 0, 0, 0, 0, 0,
- 0, 64, 0, 0, 0, 2,
- 0, 0, 0, 204, 1, 0,
- 0, 0, 0, 0, 0, 109,
- 80, 114, 111, 106, 101, 99,
- 116, 105, 111, 110, 0, 77,
- 105, 99, 114, 111, 115, 111,
- 102, 116, 32, 40, 82, 41,
- 32, 72, 76, 83, 76, 32,
- 83, 104, 97, 100, 101, 114,
- 32, 67, 111, 109, 112, 105,
- 108, 101, 114, 32, 54, 46,
- 51, 46, 57, 54, 48, 48,
- 46, 49, 54, 51, 56, 52,
- 0, 171, 171, 73, 83, 71,
- 78, 44, 0, 0, 0, 1,
- 0, 0, 0, 8, 0, 0,
- 0, 32, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 3, 0, 0, 0, 0,
- 0, 0, 0, 3, 3, 0,
- 0, 80, 79, 83, 73, 84,
- 73, 79, 78, 0, 171, 171,
- 171, 79, 83, 71, 78, 80,
- 0, 0, 0, 2, 0, 0,
- 0, 8, 0, 0, 0, 56,
- 0, 0, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 3,
- 0, 0, 0, 0, 0, 0,
- 0, 15, 0, 0, 0, 68,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 3,
- 0, 0, 0, 1, 0, 0,
- 0, 3, 12, 0, 0, 83,
- 86, 95, 80, 111, 115, 105,
- 116, 105, 111, 110, 0, 84,
- 69, 88, 67, 79, 79, 82,
- 68, 0, 171, 171, 171, 117,
- 41, 0, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 2,
- 0, 0, 0, 0, 0, 0,
- 0, 80, 4, 0, 0, 68,
- 88, 66, 67, 197, 240, 201,
- 103, 219, 157, 229, 76, 76,
- 196, 241, 175, 193, 131, 135,
- 238, 1, 0, 0, 0, 80,
- 4, 0, 0, 6, 0, 0,
- 0, 56, 0, 0, 0, 192,
- 0, 0, 0, 100, 1, 0,
- 0, 224, 1, 0, 0, 196,
- 3, 0, 0, 28, 4, 0,
- 0, 65, 111, 110, 57, 128,
- 0, 0, 0, 128, 0, 0,
- 0, 0, 2, 255, 255, 76,
- 0, 0, 0, 52, 0, 0,
- 0, 1, 0, 40, 0, 0,
- 0, 52, 0, 0, 0, 52,
- 0, 1, 0, 36, 0, 0,
- 0, 52, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 1,
- 0, 0, 0, 0, 0, 0,
- 0, 1, 2, 255, 255, 31,
- 0, 0, 2, 0, 0, 0,
- 128, 0, 0, 3, 176, 31,
- 0, 0, 2, 0, 0, 0,
- 144, 0, 8, 15, 160, 66,
- 0, 0, 3, 0, 0, 15,
- 128, 0, 0, 228, 176, 0,
- 8, 228, 160, 5, 0, 0,
- 3, 0, 0, 15, 128, 0,
- 0, 228, 128, 0, 0, 0,
- 160, 1, 0, 0, 2, 0,
- 8, 15, 128, 0, 0, 228,
- 128, 255, 255, 0, 0, 83,
- 72, 68, 82, 156, 0, 0,
- 0, 64, 0, 0, 0, 39,
- 0, 0, 0, 89, 0, 0,
- 4, 70, 142, 32, 0, 0,
- 0, 0, 0, 4, 0, 0,
- 0, 90, 0, 0, 3, 0,
- 96, 16, 0, 0, 0, 0,
- 0, 88, 24, 0, 4, 0,
- 112, 16, 0, 0, 0, 0,
- 0, 85, 85, 0, 0, 98,
- 16, 0, 3, 50, 16, 16,
- 0, 1, 0, 0, 0, 101,
- 0, 0, 3, 242, 32, 16,
- 0, 0, 0, 0, 0, 104,
- 0, 0, 2, 1, 0, 0,
- 0, 69, 0, 0, 9, 242,
- 0, 16, 0, 0, 0, 0,
- 0, 70, 16, 16, 0, 1,
- 0, 0, 0, 70, 126, 16,
- 0, 0, 0, 0, 0, 0,
- 96, 16, 0, 0, 0, 0,
- 0, 56, 0, 0, 8, 242,
- 32, 16, 0, 0, 0, 0,
- 0, 70, 14, 16, 0, 0,
- 0, 0, 0, 6, 128, 32,
- 0, 0, 0, 0, 0, 3,
- 0, 0, 0, 62, 0, 0,
- 1, 83, 84, 65, 84, 116,
- 0, 0, 0, 3, 0, 0,
- 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 2, 0, 0,
- 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 82,
- 68, 69, 70, 220, 1, 0,
- 0, 1, 0, 0, 0, 164,
- 0, 0, 0, 3, 0, 0,
- 0, 28, 0, 0, 0, 0,
- 4, 255, 255, 0, 1, 0,
- 0, 168, 1, 0, 0, 124,
- 0, 0, 0, 3, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 0, 0, 0,
- 0, 150, 0, 0, 0, 2,
- 0, 0, 0, 5, 0, 0,
- 0, 4, 0, 0, 0, 255,
- 255, 255, 255, 0, 0, 0,
- 0, 1, 0, 0, 0, 12,
- 0, 0, 0, 155, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0,
- 0, 0, 0, 0, 0, 76,
- 97, 121, 101, 114, 84, 101,
- 120, 116, 117, 114, 101, 83,
- 97, 109, 112, 108, 101, 114,
- 76, 105, 110, 101, 97, 114,
- 0, 116, 82, 71, 66, 0,
- 80, 101, 114, 76, 97, 121,
- 101, 114, 0, 155, 0, 0,
- 0, 5, 0, 0, 0, 188,
- 0, 0, 0, 128, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 52, 1, 0,
- 0, 0, 0, 0, 0, 16,
- 0, 0, 0, 0, 0, 0,
- 0, 68, 1, 0, 0, 0,
- 0, 0, 0, 84, 1, 0,
- 0, 16, 0, 0, 0, 16,
- 0, 0, 0, 0, 0, 0,
- 0, 68, 1, 0, 0, 0,
- 0, 0, 0, 95, 1, 0,
- 0, 32, 0, 0, 0, 16,
- 0, 0, 0, 0, 0, 0,
- 0, 68, 1, 0, 0, 0,
- 0, 0, 0, 105, 1, 0,
- 0, 48, 0, 0, 0, 4,
- 0, 0, 0, 2, 0, 0,
- 0, 120, 1, 0, 0, 0,
- 0, 0, 0, 136, 1, 0,
- 0, 64, 0, 0, 0, 64,
- 0, 0, 0, 0, 0, 0,
- 0, 152, 1, 0, 0, 0,
- 0, 0, 0, 118, 84, 101,
- 120, 116, 117, 114, 101, 67,
- 111, 111, 114, 100, 115, 0,
- 171, 1, 0, 3, 0, 1,
- 0, 4, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 118,
- 76, 97, 121, 101, 114, 81,
- 117, 97, 100, 0, 118, 77,
- 97, 115, 107, 81, 117, 97,
- 100, 0, 102, 76, 97, 121,
- 101, 114, 79, 112, 97, 99,
- 105, 116, 121, 0, 171, 0,
- 0, 3, 0, 1, 0, 1,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 109, 76, 97,
- 121, 101, 114, 84, 114, 97,
- 110, 115, 102, 111, 114, 109,
- 0, 3, 0, 3, 0, 4,
- 0, 4, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 77,
- 105, 99, 114, 111, 115, 111,
- 102, 116, 32, 40, 82, 41,
- 32, 72, 76, 83, 76, 32,
- 83, 104, 97, 100, 101, 114,
- 32, 67, 111, 109, 112, 105,
- 108, 101, 114, 32, 54, 46,
- 51, 46, 57, 54, 48, 48,
- 46, 49, 54, 51, 56, 52,
- 0, 171, 171, 73, 83, 71,
- 78, 80, 0, 0, 0, 2,
- 0, 0, 0, 8, 0, 0,
- 0, 56, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0,
- 0, 3, 0, 0, 0, 0,
- 0, 0, 0, 15, 0, 0,
- 0, 68, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 3, 0, 0, 0, 1,
- 0, 0, 0, 3, 3, 0,
- 0, 83, 86, 95, 80, 111,
- 115, 105, 116, 105, 111, 110,
- 0, 84, 69, 88, 67, 79,
- 79, 82, 68, 0, 171, 171,
- 171, 79, 83, 71, 78, 44,
- 0, 0, 0, 1, 0, 0,
- 0, 8, 0, 0, 0, 32,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 3,
- 0, 0, 0, 0, 0, 0,
- 0, 15, 0, 0, 0, 83,
- 86, 95, 84, 97, 114, 103,
- 101, 116, 0, 171, 171, 21,
- 49, 0, 0, 0, 0, 0,
- 0, 82, 101, 110, 100, 101,
- 114, 82, 71, 66, 65, 76,
- 97, 121, 101, 114, 80, 114,
- 101, 109, 117, 108, 80, 111,
- 105, 110, 116, 0, 4, 0,
- 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 1, 0,
- 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 0, 0,
- 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 1, 0,
- 0, 0, 3, 0, 0, 0,
- 255, 255, 255, 255, 136, 7,
- 0, 0, 68, 88, 66, 67,
- 134, 58, 181, 81, 234, 180,
- 23, 54, 140, 98, 159, 162,
- 74, 150, 11, 172, 1, 0,
- 0, 0, 136, 7, 0, 0,
- 6, 0, 0, 0, 56, 0,
- 0, 0, 188, 1, 0, 0,
- 228, 3, 0, 0, 96, 4,
- 0, 0, 252, 6, 0, 0,
- 48, 7, 0, 0, 65, 111,
- 110, 57, 124, 1, 0, 0,
- 124, 1, 0, 0, 0, 2,
- 254, 255, 24, 1, 0, 0,
- 100, 0, 0, 0, 5, 0,
- 36, 0, 0, 0, 96, 0,
- 0, 0, 96, 0, 0, 0,
- 36, 0, 1, 0, 96, 0,
- 0, 0, 0, 0, 2, 0,
- 1, 0, 0, 0, 0, 0,
- 0, 0, 4, 0, 2, 0,
- 3, 0, 0, 0, 0, 0,
- 0, 0, 7, 0, 1, 0,
- 5, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 1, 0,
- 6, 0, 0, 0, 0, 0,
- 2, 0, 0, 0, 4, 0,
- 7, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 2,
- 254, 255, 31, 0, 0, 2,
- 5, 0, 0, 128, 0, 0,
- 15, 144, 4, 0, 0, 4,
- 0, 0, 3, 224, 0, 0,
- 228, 144, 1, 0, 238, 160,
- 1, 0, 228, 160, 4, 0,
- 0, 4, 0, 0, 3, 128,
- 0, 0, 228, 144, 2, 0,
- 238, 160, 2, 0, 228, 160,
- 5, 0, 0, 3, 1, 0,
- 15, 128, 0, 0, 85, 128,
- 4, 0, 228, 160, 4, 0,
- 0, 4, 0, 0, 15, 128,
- 3, 0, 228, 160, 0, 0,
- 0, 128, 1, 0, 228, 128,
- 2, 0, 0, 3, 0, 0,
- 15, 128, 0, 0, 228, 128,
- 5, 0, 228, 160, 6, 0,
- 0, 2, 1, 0, 1, 128,
- 0, 0, 255, 128, 5, 0,
- 0, 3, 0, 0, 7, 128,
- 0, 0, 228, 128, 1, 0,
- 0, 128, 2, 0, 0, 3,
- 0, 0, 15, 128, 0, 0,
- 228, 128, 6, 0, 228, 161,
- 5, 0, 0, 3, 0, 0,
- 7, 128, 0, 0, 255, 128,
- 0, 0, 228, 128, 5, 0,
- 0, 3, 1, 0, 15, 128,
- 0, 0, 85, 128, 8, 0,
- 228, 160, 4, 0, 0, 4,
- 1, 0, 15, 128, 7, 0,
- 228, 160, 0, 0, 0, 128,
- 1, 0, 228, 128, 4, 0,
- 0, 4, 1, 0, 15, 128,
- 9, 0, 228, 160, 0, 0,
- 170, 128, 1, 0, 228, 128,
- 4, 0, 0, 4, 0, 0,
- 15, 128, 10, 0, 228, 160,
- 0, 0, 255, 128, 1, 0,
- 228, 128, 4, 0, 0, 4,
- 0, 0, 3, 192, 0, 0,
- 255, 128, 0, 0, 228, 160,
- 0, 0, 228, 128, 1, 0,
- 0, 2, 0, 0, 12, 192,
- 0, 0, 228, 128, 255, 255,
- 0, 0, 83, 72, 68, 82,
- 32, 2, 0, 0, 64, 0,
- 1, 0, 136, 0, 0, 0,
- 89, 0, 0, 4, 70, 142,
- 32, 0, 0, 0, 0, 0,
- 8, 0, 0, 0, 89, 0,
- 0, 4, 70, 142, 32, 0,
- 1, 0, 0, 0, 1, 0,
- 0, 0, 89, 0, 0, 4,
- 70, 142, 32, 0, 2, 0,
- 0, 0, 4, 0, 0, 0,
- 95, 0, 0, 3, 50, 16,
- 16, 0, 0, 0, 0, 0,
- 103, 0, 0, 4, 242, 32,
- 16, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 101, 0,
- 0, 3, 50, 32, 16, 0,
- 1, 0, 0, 0, 104, 0,
- 0, 2, 2, 0, 0, 0,
- 50, 0, 0, 11, 50, 0,
- 16, 0, 0, 0, 0, 0,
- 70, 16, 16, 0, 0, 0,
- 0, 0, 230, 138, 32, 0,
- 0, 0, 0, 0, 1, 0,
- 0, 0, 70, 128, 32, 0,
- 0, 0, 0, 0, 1, 0,
- 0, 0, 56, 0, 0, 8,
- 242, 0, 16, 0, 1, 0,
- 0, 0, 86, 5, 16, 0,
- 0, 0, 0, 0, 70, 142,
- 32, 0, 0, 0, 0, 0,
- 5, 0, 0, 0, 50, 0,
- 0, 10, 242, 0, 16, 0,
- 0, 0, 0, 0, 70, 142,
- 32, 0, 0, 0, 0, 0,
- 4, 0, 0, 0, 6, 0,
- 16, 0, 0, 0, 0, 0,
- 70, 14, 16, 0, 1, 0,
- 0, 0, 0, 0, 0, 8,
- 242, 0, 16, 0, 0, 0,
- 0, 0, 70, 14, 16, 0,
- 0, 0, 0, 0, 70, 142,
- 32, 0, 0, 0, 0, 0,
- 7, 0, 0, 0, 14, 0,
- 0, 7, 114, 0, 16, 0,
- 0, 0, 0, 0, 70, 2,
- 16, 0, 0, 0, 0, 0,
- 246, 15, 16, 0, 0, 0,
- 0, 0, 0, 0, 0, 9,
- 242, 0, 16, 0, 0, 0,
- 0, 0, 70, 14, 16, 0,
- 0, 0, 0, 0, 70, 142,
- 32, 128, 65, 0, 0, 0,
- 1, 0, 0, 0, 0, 0,
- 0, 0, 56, 0, 0, 7,
- 114, 0, 16, 0, 0, 0,
- 0, 0, 246, 15, 16, 0,
- 0, 0, 0, 0, 70, 2,
- 16, 0, 0, 0, 0, 0,
- 56, 0, 0, 8, 242, 0,
- 16, 0, 1, 0, 0, 0,
- 86, 5, 16, 0, 0, 0,
- 0, 0, 70, 142, 32, 0,
- 2, 0, 0, 0, 1, 0,
- 0, 0, 50, 0, 0, 10,
- 242, 0, 16, 0, 1, 0,
- 0, 0, 70, 142, 32, 0,
- 2, 0, 0, 0, 0, 0,
- 0, 0, 6, 0, 16, 0,
- 0, 0, 0, 0, 70, 14,
- 16, 0, 1, 0, 0, 0,
- 50, 0, 0, 10, 242, 0,
- 16, 0, 1, 0, 0, 0,
- 70, 142, 32, 0, 2, 0,
- 0, 0, 2, 0, 0, 0,
- 166, 10, 16, 0, 0, 0,
- 0, 0, 70, 14, 16, 0,
- 1, 0, 0, 0, 50, 0,
- 0, 10, 242, 32, 16, 0,
- 0, 0, 0, 0, 70, 142,
- 32, 0, 2, 0, 0, 0,
- 3, 0, 0, 0, 246, 15,
- 16, 0, 0, 0, 0, 0,
- 70, 14, 16, 0, 1, 0,
- 0, 0, 50, 0, 0, 11,
- 50, 32, 16, 0, 1, 0,
- 0, 0, 70, 16, 16, 0,
- 0, 0, 0, 0, 230, 138,
- 32, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 70, 128,
- 32, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 62, 0,
- 0, 1, 83, 84, 65, 84,
- 116, 0, 0, 0, 13, 0,
- 0, 0, 2, 0, 0, 0,
- 0, 0, 0, 0, 3, 0,
- 0, 0, 12, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 82, 68, 69, 70, 148, 2,
- 0, 0, 3, 0, 0, 0,
- 168, 0, 0, 0, 3, 0,
- 0, 0, 28, 0, 0, 0,
- 0, 4, 254, 255, 0, 1,
- 0, 0, 96, 2, 0, 0,
- 124, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 0, 0,
- 0, 0, 133, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 0,
- 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 152, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 2, 0, 0, 0, 1, 0,
- 0, 0, 0, 0, 0, 0,
- 80, 101, 114, 76, 97, 121,
- 101, 114, 0, 80, 101, 114,
- 79, 99, 99, 97, 115, 105,
- 111, 110, 97, 108, 76, 97,
- 121, 101, 114, 0, 80, 101,
- 114, 76, 97, 121, 101, 114,
- 77, 97, 110, 97, 103, 101,
- 114, 0, 124, 0, 0, 0,
- 5, 0, 0, 0, 240, 0,
- 0, 0, 128, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 133, 0, 0, 0,
- 2, 0, 0, 0, 220, 1,
- 0, 0, 32, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 152, 0, 0, 0,
- 1, 0, 0, 0, 60, 2,
- 0, 0, 64, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 104, 1, 0, 0,
- 0, 0, 0, 0, 16, 0,
- 0, 0, 2, 0, 0, 0,
- 120, 1, 0, 0, 0, 0,
- 0, 0, 136, 1, 0, 0,
- 16, 0, 0, 0, 16, 0,
- 0, 0, 2, 0, 0, 0,
- 120, 1, 0, 0, 0, 0,
- 0, 0, 147, 1, 0, 0,
- 32, 0, 0, 0, 16, 0,
- 0, 0, 0, 0, 0, 0,
- 120, 1, 0, 0, 0, 0,
- 0, 0, 157, 1, 0, 0,
- 48, 0, 0, 0, 4, 0,
- 0, 0, 0, 0, 0, 0,
- 172, 1, 0, 0, 0, 0,
- 0, 0, 188, 1, 0, 0,
- 64, 0, 0, 0, 64, 0,
- 0, 0, 2, 0, 0, 0,
- 204, 1, 0, 0, 0, 0,
- 0, 0, 118, 84, 101, 120,
- 116, 117, 114, 101, 67, 111,
- 111, 114, 100, 115, 0, 171,
- 1, 0, 3, 0, 1, 0,
- 4, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 118, 76,
- 97, 121, 101, 114, 81, 117,
- 97, 100, 0, 118, 77, 97,
- 115, 107, 81, 117, 97, 100,
- 0, 102, 76, 97, 121, 101,
- 114, 79, 112, 97, 99, 105,
- 116, 121, 0, 171, 0, 0,
- 3, 0, 1, 0, 1, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 109, 76, 97, 121,
- 101, 114, 84, 114, 97, 110,
- 115, 102, 111, 114, 109, 0,
- 3, 0, 3, 0, 4, 0,
- 4, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 12, 2,
- 0, 0, 0, 0, 0, 0,
- 16, 0, 0, 0, 2, 0,
- 0, 0, 32, 2, 0, 0,
- 0, 0, 0, 0, 48, 2,
- 0, 0, 16, 0, 0, 0,
- 16, 0, 0, 0, 0, 0,
- 0, 0, 32, 2, 0, 0,
- 0, 0, 0, 0, 118, 82,
- 101, 110, 100, 101, 114, 84,
- 97, 114, 103, 101, 116, 79,
- 102, 102, 115, 101, 116, 0,
- 1, 0, 3, 0, 1, 0,
- 4, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 102, 76,
- 97, 121, 101, 114, 67, 111,
- 108, 111, 114, 0, 84, 2,
- 0, 0, 0, 0, 0, 0,
- 64, 0, 0, 0, 2, 0,
- 0, 0, 204, 1, 0, 0,
- 0, 0, 0, 0, 109, 80,
- 114, 111, 106, 101, 99, 116,
- 105, 111, 110, 0, 77, 105,
- 99, 114, 111, 115, 111, 102,
- 116, 32, 40, 82, 41, 32,
- 72, 76, 83, 76, 32, 83,
- 104, 97, 100, 101, 114, 32,
- 67, 111, 109, 112, 105, 108,
- 101, 114, 32, 54, 46, 51,
- 46, 57, 54, 48, 48, 46,
- 49, 54, 51, 56, 52, 0,
- 171, 171, 73, 83, 71, 78,
- 44, 0, 0, 0, 1, 0,
- 0, 0, 8, 0, 0, 0,
- 32, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 3, 0, 0, 0, 0, 0,
- 0, 0, 3, 3, 0, 0,
- 80, 79, 83, 73, 84, 73,
- 79, 78, 0, 171, 171, 171,
- 79, 83, 71, 78, 80, 0,
- 0, 0, 2, 0, 0, 0,
- 8, 0, 0, 0, 56, 0,
- 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 3, 0,
- 0, 0, 0, 0, 0, 0,
- 15, 0, 0, 0, 68, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 3, 0,
- 0, 0, 1, 0, 0, 0,
- 3, 12, 0, 0, 83, 86,
- 95, 80, 111, 115, 105, 116,
- 105, 111, 110, 0, 84, 69,
- 88, 67, 79, 79, 82, 68,
- 0, 171, 171, 171, 188, 53,
- 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 2, 0,
- 0, 0, 0, 0, 0, 0,
- 80, 4, 0, 0, 68, 88,
- 66, 67, 151, 150, 8, 20,
- 71, 31, 33, 136, 86, 87,
- 200, 101, 153, 133, 218, 4,
- 1, 0, 0, 0, 80, 4,
- 0, 0, 6, 0, 0, 0,
- 56, 0, 0, 0, 192, 0,
- 0, 0, 100, 1, 0, 0,
- 224, 1, 0, 0, 196, 3,
- 0, 0, 28, 4, 0, 0,
- 65, 111, 110, 57, 128, 0,
- 0, 0, 128, 0, 0, 0,
- 0, 2, 255, 255, 76, 0,
- 0, 0, 52, 0, 0, 0,
- 1, 0, 40, 0, 0, 0,
- 52, 0, 0, 0, 52, 0,
- 1, 0, 36, 0, 0, 0,
- 52, 0, 0, 0, 0, 0,
- 0, 0, 3, 0, 1, 0,
- 0, 0, 0, 0, 0, 0,
- 1, 2, 255, 255, 31, 0,
- 0, 2, 0, 0, 0, 128,
- 0, 0, 3, 176, 31, 0,
- 0, 2, 0, 0, 0, 144,
- 0, 8, 15, 160, 66, 0,
- 0, 3, 0, 0, 15, 128,
- 0, 0, 228, 176, 0, 8,
- 228, 160, 5, 0, 0, 3,
- 0, 0, 15, 128, 0, 0,
- 228, 128, 0, 0, 0, 160,
- 1, 0, 0, 2, 0, 8,
- 15, 128, 0, 0, 228, 128,
- 255, 255, 0, 0, 83, 72,
- 68, 82, 156, 0, 0, 0,
- 64, 0, 0, 0, 39, 0,
- 0, 0, 89, 0, 0, 4,
- 70, 142, 32, 0, 0, 0,
- 0, 0, 4, 0, 0, 0,
- 90, 0, 0, 3, 0, 96,
- 16, 0, 0, 0, 0, 0,
- 88, 24, 0, 4, 0, 112,
- 16, 0, 0, 0, 0, 0,
- 85, 85, 0, 0, 98, 16,
- 0, 3, 50, 16, 16, 0,
- 1, 0, 0, 0, 101, 0,
- 0, 3, 242, 32, 16, 0,
- 0, 0, 0, 0, 104, 0,
- 0, 2, 1, 0, 0, 0,
- 69, 0, 0, 9, 242, 0,
- 16, 0, 0, 0, 0, 0,
- 70, 16, 16, 0, 1, 0,
- 0, 0, 70, 126, 16, 0,
- 0, 0, 0, 0, 0, 96,
- 16, 0, 0, 0, 0, 0,
- 56, 0, 0, 8, 242, 32,
- 16, 0, 0, 0, 0, 0,
- 70, 14, 16, 0, 0, 0,
- 0, 0, 6, 128, 32, 0,
- 0, 0, 0, 0, 3, 0,
- 0, 0, 62, 0, 0, 1,
- 83, 84, 65, 84, 116, 0,
- 0, 0, 3, 0, 0, 0,
- 1, 0, 0, 0, 0, 0,
- 0, 0, 2, 0, 0, 0,
- 1, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 82, 68,
- 69, 70, 220, 1, 0, 0,
- 1, 0, 0, 0, 164, 0,
- 0, 0, 3, 0, 0, 0,
- 28, 0, 0, 0, 0, 4,
- 255, 255, 0, 1, 0, 0,
- 168, 1, 0, 0, 124, 0,
- 0, 0, 3, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 0,
- 0, 0, 0, 0, 0, 0,
- 149, 0, 0, 0, 2, 0,
- 0, 0, 5, 0, 0, 0,
- 4, 0, 0, 0, 255, 255,
- 255, 255, 0, 0, 0, 0,
- 1, 0, 0, 0, 12, 0,
- 0, 0, 154, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 76, 97,
- 121, 101, 114, 84, 101, 120,
- 116, 117, 114, 101, 83, 97,
- 109, 112, 108, 101, 114, 80,
- 111, 105, 110, 116, 0, 116,
- 82, 71, 66, 0, 80, 101,
- 114, 76, 97, 121, 101, 114,
- 0, 171, 154, 0, 0, 0,
- 5, 0, 0, 0, 188, 0,
- 0, 0, 128, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 52, 1, 0, 0,
- 0, 0, 0, 0, 16, 0,
- 0, 0, 0, 0, 0, 0,
- 68, 1, 0, 0, 0, 0,
- 0, 0, 84, 1, 0, 0,
- 16, 0, 0, 0, 16, 0,
- 0, 0, 0, 0, 0, 0,
- 68, 1, 0, 0, 0, 0,
- 0, 0, 95, 1, 0, 0,
- 32, 0, 0, 0, 16, 0,
- 0, 0, 0, 0, 0, 0,
- 68, 1, 0, 0, 0, 0,
- 0, 0, 105, 1, 0, 0,
- 48, 0, 0, 0, 4, 0,
- 0, 0, 2, 0, 0, 0,
- 120, 1, 0, 0, 0, 0,
- 0, 0, 136, 1, 0, 0,
- 64, 0, 0, 0, 64, 0,
- 0, 0, 0, 0, 0, 0,
- 152, 1, 0, 0, 0, 0,
- 0, 0, 118, 84, 101, 120,
- 116, 117, 114, 101, 67, 111,
- 111, 114, 100, 115, 0, 171,
- 1, 0, 3, 0, 1, 0,
- 4, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 118, 76,
- 97, 121, 101, 114, 81, 117,
- 97, 100, 0, 118, 77, 97,
- 115, 107, 81, 117, 97, 100,
- 0, 102, 76, 97, 121, 101,
- 114, 79, 112, 97, 99, 105,
- 116, 121, 0, 171, 0, 0,
- 3, 0, 1, 0, 1, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 109, 76, 97, 121,
- 101, 114, 84, 114, 97, 110,
- 115, 102, 111, 114, 109, 0,
- 3, 0, 3, 0, 4, 0,
- 4, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 77, 105,
- 99, 114, 111, 115, 111, 102,
- 116, 32, 40, 82, 41, 32,
- 72, 76, 83, 76, 32, 83,
- 104, 97, 100, 101, 114, 32,
- 67, 111, 109, 112, 105, 108,
- 101, 114, 32, 54, 46, 51,
- 46, 57, 54, 48, 48, 46,
- 49, 54, 51, 56, 52, 0,
- 171, 171, 73, 83, 71, 78,
- 80, 0, 0, 0, 2, 0,
- 0, 0, 8, 0, 0, 0,
- 56, 0, 0, 0, 0, 0,
- 0, 0, 1, 0, 0, 0,
- 3, 0, 0, 0, 0, 0,
- 0, 0, 15, 0, 0, 0,
- 68, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 3, 0, 0, 0, 1, 0,
- 0, 0, 3, 3, 0, 0,
- 83, 86, 95, 80, 111, 115,
- 105, 116, 105, 111, 110, 0,
- 84, 69, 88, 67, 79, 79,
- 82, 68, 0, 171, 171, 171,
- 79, 83, 71, 78, 44, 0,
- 0, 0, 1, 0, 0, 0,
- 8, 0, 0, 0, 32, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 3, 0,
- 0, 0, 0, 0, 0, 0,
- 15, 0, 0, 0, 83, 86,
- 95, 84, 97, 114, 103, 101,
- 116, 0, 171, 171, 92, 61,
- 0, 0, 0, 0, 0, 0,
- 82, 101, 110, 100, 101, 114,
- 82, 71, 66, 65, 76, 97,
- 121, 101, 114, 78, 111, 110,
- 80, 114, 101, 109, 117, 108,
- 80, 111, 105, 110, 116, 0,
- 4, 0, 0, 0, 1, 0,
- 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 0, 0,
- 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 1, 0,
- 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 3, 0,
- 0, 0, 255, 255, 255, 255,
- 136, 7, 0, 0, 68, 88,
- 66, 67, 134, 58, 181, 81,
- 234, 180, 23, 54, 140, 98,
- 159, 162, 74, 150, 11, 172,
- 1, 0, 0, 0, 136, 7,
- 0, 0, 6, 0, 0, 0,
- 56, 0, 0, 0, 188, 1,
- 0, 0, 228, 3, 0, 0,
- 96, 4, 0, 0, 252, 6,
- 0, 0, 48, 7, 0, 0,
- 65, 111, 110, 57, 124, 1,
- 0, 0, 124, 1, 0, 0,
- 0, 2, 254, 255, 24, 1,
- 0, 0, 100, 0, 0, 0,
- 5, 0, 36, 0, 0, 0,
- 96, 0, 0, 0, 96, 0,
- 0, 0, 36, 0, 1, 0,
- 96, 0, 0, 0, 0, 0,
- 2, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 4, 0,
- 2, 0, 3, 0, 0, 0,
- 0, 0, 0, 0, 7, 0,
- 1, 0, 5, 0, 0, 0,
- 0, 0, 1, 0, 0, 0,
- 1, 0, 6, 0, 0, 0,
- 0, 0, 2, 0, 0, 0,
- 4, 0, 7, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 1, 2, 254, 255, 31, 0,
- 0, 2, 5, 0, 0, 128,
- 0, 0, 15, 144, 4, 0,
- 0, 4, 0, 0, 3, 224,
- 0, 0, 228, 144, 1, 0,
- 238, 160, 1, 0, 228, 160,
- 4, 0, 0, 4, 0, 0,
- 3, 128, 0, 0, 228, 144,
- 2, 0, 238, 160, 2, 0,
- 228, 160, 5, 0, 0, 3,
- 1, 0, 15, 128, 0, 0,
- 85, 128, 4, 0, 228, 160,
- 4, 0, 0, 4, 0, 0,
- 15, 128, 3, 0, 228, 160,
- 0, 0, 0, 128, 1, 0,
- 228, 128, 2, 0, 0, 3,
- 0, 0, 15, 128, 0, 0,
- 228, 128, 5, 0, 228, 160,
- 6, 0, 0, 2, 1, 0,
- 1, 128, 0, 0, 255, 128,
- 5, 0, 0, 3, 0, 0,
- 7, 128, 0, 0, 228, 128,
- 1, 0, 0, 128, 2, 0,
- 0, 3, 0, 0, 15, 128,
- 0, 0, 228, 128, 6, 0,
- 228, 161, 5, 0, 0, 3,
- 0, 0, 7, 128, 0, 0,
- 255, 128, 0, 0, 228, 128,
- 5, 0, 0, 3, 1, 0,
- 15, 128, 0, 0, 85, 128,
- 8, 0, 228, 160, 4, 0,
- 0, 4, 1, 0, 15, 128,
- 7, 0, 228, 160, 0, 0,
- 0, 128, 1, 0, 228, 128,
- 4, 0, 0, 4, 1, 0,
- 15, 128, 9, 0, 228, 160,
- 0, 0, 170, 128, 1, 0,
- 228, 128, 4, 0, 0, 4,
- 0, 0, 15, 128, 10, 0,
- 228, 160, 0, 0, 255, 128,
- 1, 0, 228, 128, 4, 0,
- 0, 4, 0, 0, 3, 192,
- 0, 0, 255, 128, 0, 0,
- 228, 160, 0, 0, 228, 128,
- 1, 0, 0, 2, 0, 0,
- 12, 192, 0, 0, 228, 128,
- 255, 255, 0, 0, 83, 72,
- 68, 82, 32, 2, 0, 0,
- 64, 0, 1, 0, 136, 0,
- 0, 0, 89, 0, 0, 4,
- 70, 142, 32, 0, 0, 0,
- 0, 0, 8, 0, 0, 0,
- 89, 0, 0, 4, 70, 142,
- 32, 0, 1, 0, 0, 0,
- 1, 0, 0, 0, 89, 0,
- 0, 4, 70, 142, 32, 0,
- 2, 0, 0, 0, 4, 0,
- 0, 0, 95, 0, 0, 3,
- 50, 16, 16, 0, 0, 0,
- 0, 0, 103, 0, 0, 4,
- 242, 32, 16, 0, 0, 0,
- 0, 0, 1, 0, 0, 0,
- 101, 0, 0, 3, 50, 32,
- 16, 0, 1, 0, 0, 0,
- 104, 0, 0, 2, 2, 0,
- 0, 0, 50, 0, 0, 11,
- 50, 0, 16, 0, 0, 0,
- 0, 0, 70, 16, 16, 0,
- 0, 0, 0, 0, 230, 138,
- 32, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 70, 128,
- 32, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 56, 0,
- 0, 8, 242, 0, 16, 0,
- 1, 0, 0, 0, 86, 5,
- 16, 0, 0, 0, 0, 0,
- 70, 142, 32, 0, 0, 0,
- 0, 0, 5, 0, 0, 0,
- 50, 0, 0, 10, 242, 0,
- 16, 0, 0, 0, 0, 0,
- 70, 142, 32, 0, 0, 0,
- 0, 0, 4, 0, 0, 0,
- 6, 0, 16, 0, 0, 0,
- 0, 0, 70, 14, 16, 0,
- 1, 0, 0, 0, 0, 0,
- 0, 8, 242, 0, 16, 0,
- 0, 0, 0, 0, 70, 14,
- 16, 0, 0, 0, 0, 0,
- 70, 142, 32, 0, 0, 0,
- 0, 0, 7, 0, 0, 0,
- 14, 0, 0, 7, 114, 0,
- 16, 0, 0, 0, 0, 0,
- 70, 2, 16, 0, 0, 0,
- 0, 0, 246, 15, 16, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 9, 242, 0, 16, 0,
- 0, 0, 0, 0, 70, 14,
- 16, 0, 0, 0, 0, 0,
- 70, 142, 32, 128, 65, 0,
- 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 56, 0,
- 0, 7, 114, 0, 16, 0,
- 0, 0, 0, 0, 246, 15,
- 16, 0, 0, 0, 0, 0,
- 70, 2, 16, 0, 0, 0,
- 0, 0, 56, 0, 0, 8,
- 242, 0, 16, 0, 1, 0,
- 0, 0, 86, 5, 16, 0,
- 0, 0, 0, 0, 70, 142,
- 32, 0, 2, 0, 0, 0,
- 1, 0, 0, 0, 50, 0,
- 0, 10, 242, 0, 16, 0,
- 1, 0, 0, 0, 70, 142,
- 32, 0, 2, 0, 0, 0,
- 0, 0, 0, 0, 6, 0,
- 16, 0, 0, 0, 0, 0,
- 70, 14, 16, 0, 1, 0,
- 0, 0, 50, 0, 0, 10,
- 242, 0, 16, 0, 1, 0,
- 0, 0, 70, 142, 32, 0,
- 2, 0, 0, 0, 2, 0,
- 0, 0, 166, 10, 16, 0,
- 0, 0, 0, 0, 70, 14,
- 16, 0, 1, 0, 0, 0,
- 50, 0, 0, 10, 242, 32,
- 16, 0, 0, 0, 0, 0,
- 70, 142, 32, 0, 2, 0,
- 0, 0, 3, 0, 0, 0,
- 246, 15, 16, 0, 0, 0,
- 0, 0, 70, 14, 16, 0,
- 1, 0, 0, 0, 50, 0,
- 0, 11, 50, 32, 16, 0,
- 1, 0, 0, 0, 70, 16,
- 16, 0, 0, 0, 0, 0,
- 230, 138, 32, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 70, 128, 32, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 62, 0, 0, 1, 83, 84,
- 65, 84, 116, 0, 0, 0,
- 13, 0, 0, 0, 2, 0,
- 0, 0, 0, 0, 0, 0,
- 3, 0, 0, 0, 12, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 82, 68, 69, 70,
- 148, 2, 0, 0, 3, 0,
- 0, 0, 168, 0, 0, 0,
- 3, 0, 0, 0, 28, 0,
- 0, 0, 0, 4, 254, 255,
- 0, 1, 0, 0, 96, 2,
- 0, 0, 124, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 133, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 1, 0,
- 0, 0, 0, 0, 0, 0,
- 152, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 2, 0, 0, 0,
- 1, 0, 0, 0, 0, 0,
- 0, 0, 80, 101, 114, 76,
- 97, 121, 101, 114, 0, 80,
- 101, 114, 79, 99, 99, 97,
- 115, 105, 111, 110, 97, 108,
- 76, 97, 121, 101, 114, 0,
- 80, 101, 114, 76, 97, 121,
- 101, 114, 77, 97, 110, 97,
- 103, 101, 114, 0, 124, 0,
- 0, 0, 5, 0, 0, 0,
- 240, 0, 0, 0, 128, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 133, 0,
- 0, 0, 2, 0, 0, 0,
- 220, 1, 0, 0, 32, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 152, 0,
- 0, 0, 1, 0, 0, 0,
- 60, 2, 0, 0, 64, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 104, 1,
- 0, 0, 0, 0, 0, 0,
- 16, 0, 0, 0, 2, 0,
- 0, 0, 120, 1, 0, 0,
- 0, 0, 0, 0, 136, 1,
- 0, 0, 16, 0, 0, 0,
- 16, 0, 0, 0, 2, 0,
- 0, 0, 120, 1, 0, 0,
- 0, 0, 0, 0, 147, 1,
- 0, 0, 32, 0, 0, 0,
- 16, 0, 0, 0, 0, 0,
- 0, 0, 120, 1, 0, 0,
- 0, 0, 0, 0, 157, 1,
- 0, 0, 48, 0, 0, 0,
- 4, 0, 0, 0, 0, 0,
- 0, 0, 172, 1, 0, 0,
- 0, 0, 0, 0, 188, 1,
- 0, 0, 64, 0, 0, 0,
- 64, 0, 0, 0, 2, 0,
- 0, 0, 204, 1, 0, 0,
- 0, 0, 0, 0, 118, 84,
- 101, 120, 116, 117, 114, 101,
- 67, 111, 111, 114, 100, 115,
- 0, 171, 1, 0, 3, 0,
- 1, 0, 4, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 118, 76, 97, 121, 101, 114,
- 81, 117, 97, 100, 0, 118,
- 77, 97, 115, 107, 81, 117,
- 97, 100, 0, 102, 76, 97,
- 121, 101, 114, 79, 112, 97,
- 99, 105, 116, 121, 0, 171,
- 0, 0, 3, 0, 1, 0,
- 1, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 109, 76,
- 97, 121, 101, 114, 84, 114,
- 97, 110, 115, 102, 111, 114,
- 109, 0, 3, 0, 3, 0,
- 4, 0, 4, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 12, 2, 0, 0, 0, 0,
- 0, 0, 16, 0, 0, 0,
- 2, 0, 0, 0, 32, 2,
- 0, 0, 0, 0, 0, 0,
- 48, 2, 0, 0, 16, 0,
- 0, 0, 16, 0, 0, 0,
- 0, 0, 0, 0, 32, 2,
- 0, 0, 0, 0, 0, 0,
- 118, 82, 101, 110, 100, 101,
- 114, 84, 97, 114, 103, 101,
- 116, 79, 102, 102, 115, 101,
- 116, 0, 1, 0, 3, 0,
- 1, 0, 4, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 102, 76, 97, 121, 101, 114,
- 67, 111, 108, 111, 114, 0,
- 84, 2, 0, 0, 0, 0,
- 0, 0, 64, 0, 0, 0,
- 2, 0, 0, 0, 204, 1,
- 0, 0, 0, 0, 0, 0,
- 109, 80, 114, 111, 106, 101,
- 99, 116, 105, 111, 110, 0,
- 77, 105, 99, 114, 111, 115,
- 111, 102, 116, 32, 40, 82,
- 41, 32, 72, 76, 83, 76,
- 32, 83, 104, 97, 100, 101,
- 114, 32, 67, 111, 109, 112,
- 105, 108, 101, 114, 32, 54,
- 46, 51, 46, 57, 54, 48,
- 48, 46, 49, 54, 51, 56,
- 52, 0, 171, 171, 73, 83,
- 71, 78, 44, 0, 0, 0,
- 1, 0, 0, 0, 8, 0,
- 0, 0, 32, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 3, 0, 0, 0,
- 0, 0, 0, 0, 3, 3,
- 0, 0, 80, 79, 83, 73,
- 84, 73, 79, 78, 0, 171,
- 171, 171, 79, 83, 71, 78,
- 80, 0, 0, 0, 2, 0,
- 0, 0, 8, 0, 0, 0,
- 56, 0, 0, 0, 0, 0,
- 0, 0, 1, 0, 0, 0,
- 3, 0, 0, 0, 0, 0,
- 0, 0, 15, 0, 0, 0,
- 68, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 3, 0, 0, 0, 1, 0,
- 0, 0, 3, 12, 0, 0,
- 83, 86, 95, 80, 111, 115,
- 105, 116, 105, 111, 110, 0,
- 84, 69, 88, 67, 79, 79,
- 82, 68, 0, 171, 171, 171,
- 6, 66, 0, 0, 0, 0,
- 0, 0, 1, 0, 0, 0,
- 2, 0, 0, 0, 0, 0,
- 0, 0, 80, 4, 0, 0,
- 68, 88, 66, 67, 151, 150,
- 8, 20, 71, 31, 33, 136,
- 86, 87, 200, 101, 153, 133,
- 218, 4, 1, 0, 0, 0,
- 80, 4, 0, 0, 6, 0,
- 0, 0, 56, 0, 0, 0,
- 192, 0, 0, 0, 100, 1,
- 0, 0, 224, 1, 0, 0,
- 196, 3, 0, 0, 28, 4,
- 0, 0, 65, 111, 110, 57,
- 128, 0, 0, 0, 128, 0,
- 0, 0, 0, 2, 255, 255,
- 76, 0, 0, 0, 52, 0,
- 0, 0, 1, 0, 40, 0,
- 0, 0, 52, 0, 0, 0,
- 52, 0, 1, 0, 36, 0,
- 0, 0, 52, 0, 0, 0,
- 0, 0, 0, 0, 3, 0,
- 1, 0, 0, 0, 0, 0,
- 0, 0, 1, 2, 255, 255,
- 31, 0, 0, 2, 0, 0,
- 0, 128, 0, 0, 3, 176,
- 31, 0, 0, 2, 0, 0,
- 0, 144, 0, 8, 15, 160,
- 66, 0, 0, 3, 0, 0,
- 15, 128, 0, 0, 228, 176,
- 0, 8, 228, 160, 5, 0,
- 0, 3, 0, 0, 15, 128,
- 0, 0, 228, 128, 0, 0,
- 0, 160, 1, 0, 0, 2,
- 0, 8, 15, 128, 0, 0,
- 228, 128, 255, 255, 0, 0,
- 83, 72, 68, 82, 156, 0,
- 0, 0, 64, 0, 0, 0,
- 39, 0, 0, 0, 89, 0,
- 0, 4, 70, 142, 32, 0,
- 0, 0, 0, 0, 4, 0,
- 0, 0, 90, 0, 0, 3,
- 0, 96, 16, 0, 0, 0,
- 0, 0, 88, 24, 0, 4,
- 0, 112, 16, 0, 0, 0,
- 0, 0, 85, 85, 0, 0,
- 98, 16, 0, 3, 50, 16,
- 16, 0, 1, 0, 0, 0,
- 101, 0, 0, 3, 242, 32,
- 16, 0, 0, 0, 0, 0,
- 104, 0, 0, 2, 1, 0,
- 0, 0, 69, 0, 0, 9,
- 242, 0, 16, 0, 0, 0,
- 0, 0, 70, 16, 16, 0,
- 1, 0, 0, 0, 70, 126,
- 16, 0, 0, 0, 0, 0,
- 0, 96, 16, 0, 0, 0,
- 0, 0, 56, 0, 0, 8,
- 242, 32, 16, 0, 0, 0,
- 0, 0, 70, 14, 16, 0,
- 0, 0, 0, 0, 6, 128,
- 32, 0, 0, 0, 0, 0,
- 3, 0, 0, 0, 62, 0,
- 0, 1, 83, 84, 65, 84,
- 116, 0, 0, 0, 3, 0,
- 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 2, 0,
- 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 82, 68, 69, 70, 220, 1,
- 0, 0, 1, 0, 0, 0,
- 164, 0, 0, 0, 3, 0,
- 0, 0, 28, 0, 0, 0,
- 0, 4, 255, 255, 0, 1,
- 0, 0, 168, 1, 0, 0,
- 124, 0, 0, 0, 3, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 0, 0,
- 0, 0, 149, 0, 0, 0,
- 2, 0, 0, 0, 5, 0,
- 0, 0, 4, 0, 0, 0,
- 255, 255, 255, 255, 0, 0,
- 0, 0, 1, 0, 0, 0,
- 12, 0, 0, 0, 154, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 0,
- 0, 0, 0, 0, 0, 0,
- 76, 97, 121, 101, 114, 84,
- 101, 120, 116, 117, 114, 101,
- 83, 97, 109, 112, 108, 101,
- 114, 80, 111, 105, 110, 116,
- 0, 116, 82, 71, 66, 0,
- 80, 101, 114, 76, 97, 121,
- 101, 114, 0, 171, 154, 0,
- 0, 0, 5, 0, 0, 0,
- 188, 0, 0, 0, 128, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 52, 1,
- 0, 0, 0, 0, 0, 0,
- 16, 0, 0, 0, 0, 0,
- 0, 0, 68, 1, 0, 0,
- 0, 0, 0, 0, 84, 1,
- 0, 0, 16, 0, 0, 0,
- 16, 0, 0, 0, 0, 0,
- 0, 0, 68, 1, 0, 0,
- 0, 0, 0, 0, 95, 1,
- 0, 0, 32, 0, 0, 0,
- 16, 0, 0, 0, 0, 0,
- 0, 0, 68, 1, 0, 0,
- 0, 0, 0, 0, 105, 1,
- 0, 0, 48, 0, 0, 0,
- 4, 0, 0, 0, 2, 0,
- 0, 0, 120, 1, 0, 0,
- 0, 0, 0, 0, 136, 1,
- 0, 0, 64, 0, 0, 0,
- 64, 0, 0, 0, 0, 0,
- 0, 0, 152, 1, 0, 0,
- 0, 0, 0, 0, 118, 84,
- 101, 120, 116, 117, 114, 101,
- 67, 111, 111, 114, 100, 115,
- 0, 171, 1, 0, 3, 0,
- 1, 0, 4, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 118, 76, 97, 121, 101, 114,
- 81, 117, 97, 100, 0, 118,
- 77, 97, 115, 107, 81, 117,
- 97, 100, 0, 102, 76, 97,
- 121, 101, 114, 79, 112, 97,
- 99, 105, 116, 121, 0, 171,
- 0, 0, 3, 0, 1, 0,
- 1, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 109, 76,
- 97, 121, 101, 114, 84, 114,
- 97, 110, 115, 102, 111, 114,
- 109, 0, 3, 0, 3, 0,
- 4, 0, 4, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 77, 105, 99, 114, 111, 115,
- 111, 102, 116, 32, 40, 82,
- 41, 32, 72, 76, 83, 76,
- 32, 83, 104, 97, 100, 101,
- 114, 32, 67, 111, 109, 112,
- 105, 108, 101, 114, 32, 54,
- 46, 51, 46, 57, 54, 48,
- 48, 46, 49, 54, 51, 56,
- 52, 0, 171, 171, 73, 83,
- 71, 78, 80, 0, 0, 0,
- 2, 0, 0, 0, 8, 0,
- 0, 0, 56, 0, 0, 0,
- 0, 0, 0, 0, 1, 0,
- 0, 0, 3, 0, 0, 0,
- 0, 0, 0, 0, 15, 0,
- 0, 0, 68, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 3, 0, 0, 0,
- 1, 0, 0, 0, 3, 3,
- 0, 0, 83, 86, 95, 80,
- 111, 115, 105, 116, 105, 111,
- 110, 0, 84, 69, 88, 67,
- 79, 79, 82, 68, 0, 171,
- 171, 171, 79, 83, 71, 78,
- 44, 0, 0, 0, 1, 0,
- 0, 0, 8, 0, 0, 0,
- 32, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 3, 0, 0, 0, 0, 0,
- 0, 0, 15, 0, 0, 0,
- 83, 86, 95, 84, 97, 114,
- 103, 101, 116, 0, 171, 171,
- 166, 73, 0, 0, 0, 0,
- 0, 0, 82, 101, 110, 100,
- 101, 114, 89, 67, 98, 67,
- 114, 76, 97, 121, 101, 114,
- 0, 4, 0, 0, 0, 1,
- 0, 0, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0,
- 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 3,
- 0, 0, 0, 255, 255, 255,
- 255, 136, 7, 0, 0, 68,
- 88, 66, 67, 134, 58, 181,
- 81, 234, 180, 23, 54, 140,
- 98, 159, 162, 74, 150, 11,
- 172, 1, 0, 0, 0, 136,
- 7, 0, 0, 6, 0, 0,
- 0, 56, 0, 0, 0, 188,
- 1, 0, 0, 228, 3, 0,
- 0, 96, 4, 0, 0, 252,
- 6, 0, 0, 48, 7, 0,
- 0, 65, 111, 110, 57, 124,
- 1, 0, 0, 124, 1, 0,
- 0, 0, 2, 254, 255, 24,
- 1, 0, 0, 100, 0, 0,
- 0, 5, 0, 36, 0, 0,
- 0, 96, 0, 0, 0, 96,
- 0, 0, 0, 36, 0, 1,
- 0, 96, 0, 0, 0, 0,
- 0, 2, 0, 1, 0, 0,
- 0, 0, 0, 0, 0, 4,
- 0, 2, 0, 3, 0, 0,
- 0, 0, 0, 0, 0, 7,
- 0, 1, 0, 5, 0, 0,
- 0, 0, 0, 1, 0, 0,
- 0, 1, 0, 6, 0, 0,
- 0, 0, 0, 2, 0, 0,
- 0, 4, 0, 7, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 1, 2, 254, 255, 31,
- 0, 0, 2, 5, 0, 0,
- 128, 0, 0, 15, 144, 4,
- 0, 0, 4, 0, 0, 3,
- 224, 0, 0, 228, 144, 1,
- 0, 238, 160, 1, 0, 228,
- 160, 4, 0, 0, 4, 0,
- 0, 3, 128, 0, 0, 228,
- 144, 2, 0, 238, 160, 2,
- 0, 228, 160, 5, 0, 0,
- 3, 1, 0, 15, 128, 0,
- 0, 85, 128, 4, 0, 228,
- 160, 4, 0, 0, 4, 0,
- 0, 15, 128, 3, 0, 228,
- 160, 0, 0, 0, 128, 1,
- 0, 228, 128, 2, 0, 0,
- 3, 0, 0, 15, 128, 0,
- 0, 228, 128, 5, 0, 228,
- 160, 6, 0, 0, 2, 1,
- 0, 1, 128, 0, 0, 255,
- 128, 5, 0, 0, 3, 0,
- 0, 7, 128, 0, 0, 228,
- 128, 1, 0, 0, 128, 2,
- 0, 0, 3, 0, 0, 15,
- 128, 0, 0, 228, 128, 6,
- 0, 228, 161, 5, 0, 0,
- 3, 0, 0, 7, 128, 0,
- 0, 255, 128, 0, 0, 228,
- 128, 5, 0, 0, 3, 1,
- 0, 15, 128, 0, 0, 85,
- 128, 8, 0, 228, 160, 4,
- 0, 0, 4, 1, 0, 15,
- 128, 7, 0, 228, 160, 0,
- 0, 0, 128, 1, 0, 228,
- 128, 4, 0, 0, 4, 1,
- 0, 15, 128, 9, 0, 228,
- 160, 0, 0, 170, 128, 1,
- 0, 228, 128, 4, 0, 0,
- 4, 0, 0, 15, 128, 10,
- 0, 228, 160, 0, 0, 255,
- 128, 1, 0, 228, 128, 4,
- 0, 0, 4, 0, 0, 3,
- 192, 0, 0, 255, 128, 0,
- 0, 228, 160, 0, 0, 228,
- 128, 1, 0, 0, 2, 0,
- 0, 12, 192, 0, 0, 228,
- 128, 255, 255, 0, 0, 83,
- 72, 68, 82, 32, 2, 0,
- 0, 64, 0, 1, 0, 136,
- 0, 0, 0, 89, 0, 0,
- 4, 70, 142, 32, 0, 0,
- 0, 0, 0, 8, 0, 0,
- 0, 89, 0, 0, 4, 70,
- 142, 32, 0, 1, 0, 0,
- 0, 1, 0, 0, 0, 89,
- 0, 0, 4, 70, 142, 32,
- 0, 2, 0, 0, 0, 4,
- 0, 0, 0, 95, 0, 0,
- 3, 50, 16, 16, 0, 0,
- 0, 0, 0, 103, 0, 0,
- 4, 242, 32, 16, 0, 0,
- 0, 0, 0, 1, 0, 0,
- 0, 101, 0, 0, 3, 50,
- 32, 16, 0, 1, 0, 0,
- 0, 104, 0, 0, 2, 2,
- 0, 0, 0, 50, 0, 0,
- 11, 50, 0, 16, 0, 0,
- 0, 0, 0, 70, 16, 16,
- 0, 0, 0, 0, 0, 230,
- 138, 32, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 70,
- 128, 32, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 56,
- 0, 0, 8, 242, 0, 16,
- 0, 1, 0, 0, 0, 86,
- 5, 16, 0, 0, 0, 0,
- 0, 70, 142, 32, 0, 0,
- 0, 0, 0, 5, 0, 0,
- 0, 50, 0, 0, 10, 242,
- 0, 16, 0, 0, 0, 0,
- 0, 70, 142, 32, 0, 0,
- 0, 0, 0, 4, 0, 0,
- 0, 6, 0, 16, 0, 0,
- 0, 0, 0, 70, 14, 16,
- 0, 1, 0, 0, 0, 0,
- 0, 0, 8, 242, 0, 16,
- 0, 0, 0, 0, 0, 70,
- 14, 16, 0, 0, 0, 0,
- 0, 70, 142, 32, 0, 0,
- 0, 0, 0, 7, 0, 0,
- 0, 14, 0, 0, 7, 114,
- 0, 16, 0, 0, 0, 0,
- 0, 70, 2, 16, 0, 0,
- 0, 0, 0, 246, 15, 16,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 9, 242, 0, 16,
- 0, 0, 0, 0, 0, 70,
- 14, 16, 0, 0, 0, 0,
- 0, 70, 142, 32, 128, 65,
- 0, 0, 0, 1, 0, 0,
- 0, 0, 0, 0, 0, 56,
- 0, 0, 7, 114, 0, 16,
- 0, 0, 0, 0, 0, 246,
- 15, 16, 0, 0, 0, 0,
- 0, 70, 2, 16, 0, 0,
- 0, 0, 0, 56, 0, 0,
- 8, 242, 0, 16, 0, 1,
- 0, 0, 0, 86, 5, 16,
- 0, 0, 0, 0, 0, 70,
- 142, 32, 0, 2, 0, 0,
- 0, 1, 0, 0, 0, 50,
- 0, 0, 10, 242, 0, 16,
- 0, 1, 0, 0, 0, 70,
- 142, 32, 0, 2, 0, 0,
- 0, 0, 0, 0, 0, 6,
- 0, 16, 0, 0, 0, 0,
- 0, 70, 14, 16, 0, 1,
- 0, 0, 0, 50, 0, 0,
- 10, 242, 0, 16, 0, 1,
- 0, 0, 0, 70, 142, 32,
- 0, 2, 0, 0, 0, 2,
- 0, 0, 0, 166, 10, 16,
- 0, 0, 0, 0, 0, 70,
- 14, 16, 0, 1, 0, 0,
- 0, 50, 0, 0, 10, 242,
- 32, 16, 0, 0, 0, 0,
- 0, 70, 142, 32, 0, 2,
- 0, 0, 0, 3, 0, 0,
- 0, 246, 15, 16, 0, 0,
- 0, 0, 0, 70, 14, 16,
- 0, 1, 0, 0, 0, 50,
- 0, 0, 11, 50, 32, 16,
- 0, 1, 0, 0, 0, 70,
- 16, 16, 0, 0, 0, 0,
- 0, 230, 138, 32, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 70, 128, 32, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 62, 0, 0, 1, 83,
- 84, 65, 84, 116, 0, 0,
- 0, 13, 0, 0, 0, 2,
- 0, 0, 0, 0, 0, 0,
- 0, 3, 0, 0, 0, 12,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 82, 68, 69,
- 70, 148, 2, 0, 0, 3,
- 0, 0, 0, 168, 0, 0,
- 0, 3, 0, 0, 0, 28,
- 0, 0, 0, 0, 4, 254,
- 255, 0, 1, 0, 0, 96,
- 2, 0, 0, 124, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0,
- 0, 0, 0, 0, 0, 133,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 1,
- 0, 0, 0, 0, 0, 0,
- 0, 152, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 2, 0, 0,
- 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 80, 101, 114,
- 76, 97, 121, 101, 114, 0,
- 80, 101, 114, 79, 99, 99,
- 97, 115, 105, 111, 110, 97,
- 108, 76, 97, 121, 101, 114,
- 0, 80, 101, 114, 76, 97,
- 121, 101, 114, 77, 97, 110,
- 97, 103, 101, 114, 0, 124,
- 0, 0, 0, 5, 0, 0,
- 0, 240, 0, 0, 0, 128,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 133,
- 0, 0, 0, 2, 0, 0,
- 0, 220, 1, 0, 0, 32,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 152,
- 0, 0, 0, 1, 0, 0,
- 0, 60, 2, 0, 0, 64,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 104,
- 1, 0, 0, 0, 0, 0,
- 0, 16, 0, 0, 0, 2,
- 0, 0, 0, 120, 1, 0,
- 0, 0, 0, 0, 0, 136,
- 1, 0, 0, 16, 0, 0,
- 0, 16, 0, 0, 0, 2,
- 0, 0, 0, 120, 1, 0,
- 0, 0, 0, 0, 0, 147,
- 1, 0, 0, 32, 0, 0,
- 0, 16, 0, 0, 0, 0,
- 0, 0, 0, 120, 1, 0,
- 0, 0, 0, 0, 0, 157,
- 1, 0, 0, 48, 0, 0,
- 0, 4, 0, 0, 0, 0,
- 0, 0, 0, 172, 1, 0,
- 0, 0, 0, 0, 0, 188,
- 1, 0, 0, 64, 0, 0,
- 0, 64, 0, 0, 0, 2,
- 0, 0, 0, 204, 1, 0,
- 0, 0, 0, 0, 0, 118,
- 84, 101, 120, 116, 117, 114,
- 101, 67, 111, 111, 114, 100,
- 115, 0, 171, 1, 0, 3,
- 0, 1, 0, 4, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 118, 76, 97, 121, 101,
- 114, 81, 117, 97, 100, 0,
- 118, 77, 97, 115, 107, 81,
- 117, 97, 100, 0, 102, 76,
- 97, 121, 101, 114, 79, 112,
- 97, 99, 105, 116, 121, 0,
- 171, 0, 0, 3, 0, 1,
- 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 109,
- 76, 97, 121, 101, 114, 84,
- 114, 97, 110, 115, 102, 111,
- 114, 109, 0, 3, 0, 3,
- 0, 4, 0, 4, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 12, 2, 0, 0, 0,
- 0, 0, 0, 16, 0, 0,
- 0, 2, 0, 0, 0, 32,
- 2, 0, 0, 0, 0, 0,
- 0, 48, 2, 0, 0, 16,
- 0, 0, 0, 16, 0, 0,
- 0, 0, 0, 0, 0, 32,
- 2, 0, 0, 0, 0, 0,
- 0, 118, 82, 101, 110, 100,
- 101, 114, 84, 97, 114, 103,
- 101, 116, 79, 102, 102, 115,
- 101, 116, 0, 1, 0, 3,
- 0, 1, 0, 4, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 102, 76, 97, 121, 101,
- 114, 67, 111, 108, 111, 114,
- 0, 84, 2, 0, 0, 0,
- 0, 0, 0, 64, 0, 0,
- 0, 2, 0, 0, 0, 204,
- 1, 0, 0, 0, 0, 0,
- 0, 109, 80, 114, 111, 106,
- 101, 99, 116, 105, 111, 110,
- 0, 77, 105, 99, 114, 111,
- 115, 111, 102, 116, 32, 40,
- 82, 41, 32, 72, 76, 83,
- 76, 32, 83, 104, 97, 100,
- 101, 114, 32, 67, 111, 109,
- 112, 105, 108, 101, 114, 32,
- 54, 46, 51, 46, 57, 54,
- 48, 48, 46, 49, 54, 51,
- 56, 52, 0, 171, 171, 73,
- 83, 71, 78, 44, 0, 0,
- 0, 1, 0, 0, 0, 8,
- 0, 0, 0, 32, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0,
- 0, 0, 0, 0, 0, 3,
- 3, 0, 0, 80, 79, 83,
- 73, 84, 73, 79, 78, 0,
- 171, 171, 171, 79, 83, 71,
- 78, 80, 0, 0, 0, 2,
- 0, 0, 0, 8, 0, 0,
- 0, 56, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0,
- 0, 3, 0, 0, 0, 0,
- 0, 0, 0, 15, 0, 0,
- 0, 68, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 3, 0, 0, 0, 1,
- 0, 0, 0, 3, 12, 0,
- 0, 83, 86, 95, 80, 111,
- 115, 105, 116, 105, 111, 110,
- 0, 84, 69, 88, 67, 79,
- 79, 82, 68, 0, 171, 171,
- 171, 67, 78, 0, 0, 0,
- 0, 0, 0, 1, 0, 0,
- 0, 2, 0, 0, 0, 0,
- 0, 0, 0, 96, 7, 0,
- 0, 68, 88, 66, 67, 1,
- 118, 228, 119, 234, 238, 25,
- 215, 211, 69, 59, 5, 242,
- 177, 6, 183, 1, 0, 0,
- 0, 96, 7, 0, 0, 6,
- 0, 0, 0, 56, 0, 0,
- 0, 220, 1, 0, 0, 44,
- 4, 0, 0, 168, 4, 0,
- 0, 212, 6, 0, 0, 44,
- 7, 0, 0, 65, 111, 110,
- 57, 156, 1, 0, 0, 156,
- 1, 0, 0, 0, 2, 255,
- 255, 96, 1, 0, 0, 60,
- 0, 0, 0, 1, 0, 48,
- 0, 0, 0, 60, 0, 0,
- 0, 60, 0, 3, 0, 36,
- 0, 0, 0, 60, 0, 0,
- 0, 0, 0, 1, 0, 1,
- 0, 2, 0, 2, 0, 0,
- 0, 3, 0, 1, 0, 0,
- 0, 0, 0, 0, 0, 1,
- 2, 255, 255, 81, 0, 0,
- 5, 1, 0, 15, 160, 115,
- 128, 0, 191, 18, 131, 128,
- 189, 182, 74, 204, 63, 205,
- 30, 80, 63, 81, 0, 0,
- 5, 2, 0, 15, 160, 103,
- 10, 149, 63, 76, 26, 1,
- 64, 196, 148, 200, 62, 0,
- 0, 128, 63, 31, 0, 0,
- 2, 0, 0, 0, 128, 0,
- 0, 3, 176, 31, 0, 0,
- 2, 0, 0, 0, 144, 0,
- 8, 15, 160, 31, 0, 0,
- 2, 0, 0, 0, 144, 1,
- 8, 15, 160, 31, 0, 0,
- 2, 0, 0, 0, 144, 2,
- 8, 15, 160, 66, 0, 0,
- 3, 0, 0, 15, 128, 0,
- 0, 228, 176, 0, 8, 228,
- 160, 66, 0, 0, 3, 1,
- 0, 15, 128, 0, 0, 228,
- 176, 2, 8, 228, 160, 2,
- 0, 0, 3, 0, 0, 1,
- 128, 1, 0, 255, 128, 1,
- 0, 0, 160, 5, 0, 0,
- 3, 0, 0, 3, 128, 0,
- 0, 0, 128, 1, 0, 238,
- 160, 2, 0, 0, 3, 0,
- 0, 4, 128, 0, 0, 255,
- 128, 1, 0, 85, 160, 4,
- 0, 0, 4, 0, 0, 2,
- 128, 0, 0, 170, 128, 2,
- 0, 0, 160, 0, 0, 85,
- 129, 4, 0, 0, 4, 1,
- 0, 1, 128, 0, 0, 170,
- 128, 2, 0, 0, 160, 0,
- 0, 0, 128, 66, 0, 0,
- 3, 2, 0, 15, 128, 0,
- 0, 228, 176, 1, 8, 228,
- 160, 2, 0, 0, 3, 0,
- 0, 1, 128, 2, 0, 255,
- 128, 1, 0, 0, 160, 4,
- 0, 0, 4, 1, 0, 2,
- 128, 0, 0, 0, 128, 2,
- 0, 170, 161, 0, 0, 85,
- 128, 5, 0, 0, 3, 0,
- 0, 1, 128, 0, 0, 0,
- 128, 2, 0, 85, 160, 4,
- 0, 0, 4, 1, 0, 4,
- 128, 0, 0, 170, 128, 2,
- 0, 0, 160, 0, 0, 0,
- 128, 1, 0, 0, 2, 1,
- 0, 8, 128, 2, 0, 255,
- 160, 5, 0, 0, 3, 0,
- 0, 15, 128, 1, 0, 228,
- 128, 0, 0, 0, 160, 1,
- 0, 0, 2, 0, 8, 15,
- 128, 0, 0, 228, 128, 255,
- 255, 0, 0, 83, 72, 68,
- 82, 72, 2, 0, 0, 64,
- 0, 0, 0, 146, 0, 0,
- 0, 89, 0, 0, 4, 70,
- 142, 32, 0, 0, 0, 0,
- 0, 4, 0, 0, 0, 90,
- 0, 0, 3, 0, 96, 16,
- 0, 0, 0, 0, 0, 88,
- 24, 0, 4, 0, 112, 16,
- 0, 0, 0, 0, 0, 85,
- 85, 0, 0, 88, 24, 0,
- 4, 0, 112, 16, 0, 1,
- 0, 0, 0, 85, 85, 0,
- 0, 88, 24, 0, 4, 0,
- 112, 16, 0, 2, 0, 0,
- 0, 85, 85, 0, 0, 98,
- 16, 0, 3, 50, 16, 16,
- 0, 1, 0, 0, 0, 101,
- 0, 0, 3, 242, 32, 16,
- 0, 0, 0, 0, 0, 104,
- 0, 0, 2, 3, 0, 0,
- 0, 69, 0, 0, 9, 242,
- 0, 16, 0, 0, 0, 0,
- 0, 70, 16, 16, 0, 1,
- 0, 0, 0, 70, 126, 16,
- 0, 2, 0, 0, 0, 0,
- 96, 16, 0, 0, 0, 0,
- 0, 0, 0, 0, 7, 18,
- 0, 16, 0, 0, 0, 0,
- 0, 58, 0, 16, 0, 0,
- 0, 0, 0, 1, 64, 0,
- 0, 115, 128, 0, 191, 56,
- 0, 0, 10, 50, 0, 16,
- 0, 0, 0, 0, 0, 6,
- 0, 16, 0, 0, 0, 0,
- 0, 2, 64, 0, 0, 182,
- 74, 204, 63, 205, 30, 80,
- 63, 0, 0, 0, 0, 0,
- 0, 0, 0, 69, 0, 0,
- 9, 242, 0, 16, 0, 1,
- 0, 0, 0, 70, 16, 16,
- 0, 1, 0, 0, 0, 70,
- 126, 16, 0, 0, 0, 0,
- 0, 0, 96, 16, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 7, 66, 0, 16, 0, 0,
- 0, 0, 0, 58, 0, 16,
- 0, 1, 0, 0, 0, 1,
- 64, 0, 0, 18, 131, 128,
- 189, 50, 0, 0, 10, 34,
- 0, 16, 0, 0, 0, 0,
- 0, 42, 0, 16, 0, 0,
- 0, 0, 0, 1, 64, 0,
- 0, 103, 10, 149, 63, 26,
- 0, 16, 128, 65, 0, 0,
- 0, 0, 0, 0, 0, 50,
- 0, 0, 9, 18, 0, 16,
- 0, 1, 0, 0, 0, 42,
- 0, 16, 0, 0, 0, 0,
- 0, 1, 64, 0, 0, 103,
- 10, 149, 63, 10, 0, 16,
- 0, 0, 0, 0, 0, 69,
- 0, 0, 9, 242, 0, 16,
- 0, 2, 0, 0, 0, 70,
- 16, 16, 0, 1, 0, 0,
- 0, 70, 126, 16, 0, 1,
- 0, 0, 0, 0, 96, 16,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 7, 18, 0, 16,
- 0, 0, 0, 0, 0, 58,
- 0, 16, 0, 2, 0, 0,
- 0, 1, 64, 0, 0, 115,
- 128, 0, 191, 50, 0, 0,
- 10, 34, 0, 16, 0, 1,
- 0, 0, 0, 10, 0, 16,
- 128, 65, 0, 0, 0, 0,
- 0, 0, 0, 1, 64, 0,
- 0, 196, 148, 200, 62, 26,
- 0, 16, 0, 0, 0, 0,
- 0, 56, 0, 0, 7, 18,
- 0, 16, 0, 0, 0, 0,
- 0, 10, 0, 16, 0, 0,
- 0, 0, 0, 1, 64, 0,
- 0, 76, 26, 1, 64, 50,
- 0, 0, 9, 66, 0, 16,
- 0, 1, 0, 0, 0, 42,
- 0, 16, 0, 0, 0, 0,
- 0, 1, 64, 0, 0, 103,
- 10, 149, 63, 10, 0, 16,
- 0, 0, 0, 0, 0, 54,
- 0, 0, 5, 130, 0, 16,
- 0, 1, 0, 0, 0, 1,
- 64, 0, 0, 0, 0, 128,
- 63, 56, 0, 0, 8, 242,
- 32, 16, 0, 0, 0, 0,
- 0, 70, 14, 16, 0, 1,
- 0, 0, 0, 6, 128, 32,
- 0, 0, 0, 0, 0, 3,
- 0, 0, 0, 62, 0, 0,
- 1, 83, 84, 65, 84, 116,
- 0, 0, 0, 15, 0, 0,
- 0, 3, 0, 0, 0, 0,
- 0, 0, 0, 2, 0, 0,
- 0, 10, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 3,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 82,
- 68, 69, 70, 36, 2, 0,
- 0, 1, 0, 0, 0, 236,
- 0, 0, 0, 5, 0, 0,
- 0, 28, 0, 0, 0, 0,
- 4, 255, 255, 0, 1, 0,
- 0, 240, 1, 0, 0, 188,
- 0, 0, 0, 3, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 0, 0, 0,
- 0, 214, 0, 0, 0, 2,
- 0, 0, 0, 5, 0, 0,
- 0, 4, 0, 0, 0, 255,
- 255, 255, 255, 0, 0, 0,
- 0, 1, 0, 0, 0, 12,
- 0, 0, 0, 217, 0, 0,
- 0, 2, 0, 0, 0, 5,
- 0, 0, 0, 4, 0, 0,
- 0, 255, 255, 255, 255, 1,
- 0, 0, 0, 1, 0, 0,
- 0, 12, 0, 0, 0, 221,
- 0, 0, 0, 2, 0, 0,
- 0, 5, 0, 0, 0, 4,
- 0, 0, 0, 255, 255, 255,
- 255, 2, 0, 0, 0, 1,
- 0, 0, 0, 12, 0, 0,
- 0, 225, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 76, 97, 121,
- 101, 114, 84, 101, 120, 116,
- 117, 114, 101, 83, 97, 109,
- 112, 108, 101, 114, 76, 105,
- 110, 101, 97, 114, 0, 116,
- 89, 0, 116, 67, 98, 0,
- 116, 67, 114, 0, 80, 101,
- 114, 76, 97, 121, 101, 114,
- 0, 171, 171, 225, 0, 0,
- 0, 5, 0, 0, 0, 4,
- 1, 0, 0, 128, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 124, 1, 0,
- 0, 0, 0, 0, 0, 16,
- 0, 0, 0, 0, 0, 0,
- 0, 140, 1, 0, 0, 0,
- 0, 0, 0, 156, 1, 0,
- 0, 16, 0, 0, 0, 16,
- 0, 0, 0, 0, 0, 0,
- 0, 140, 1, 0, 0, 0,
- 0, 0, 0, 167, 1, 0,
- 0, 32, 0, 0, 0, 16,
- 0, 0, 0, 0, 0, 0,
- 0, 140, 1, 0, 0, 0,
- 0, 0, 0, 177, 1, 0,
- 0, 48, 0, 0, 0, 4,
- 0, 0, 0, 2, 0, 0,
- 0, 192, 1, 0, 0, 0,
- 0, 0, 0, 208, 1, 0,
- 0, 64, 0, 0, 0, 64,
- 0, 0, 0, 0, 0, 0,
- 0, 224, 1, 0, 0, 0,
- 0, 0, 0, 118, 84, 101,
- 120, 116, 117, 114, 101, 67,
- 111, 111, 114, 100, 115, 0,
- 171, 1, 0, 3, 0, 1,
- 0, 4, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 118,
- 76, 97, 121, 101, 114, 81,
- 117, 97, 100, 0, 118, 77,
- 97, 115, 107, 81, 117, 97,
- 100, 0, 102, 76, 97, 121,
- 101, 114, 79, 112, 97, 99,
- 105, 116, 121, 0, 171, 0,
- 0, 3, 0, 1, 0, 1,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 109, 76, 97,
- 121, 101, 114, 84, 114, 97,
- 110, 115, 102, 111, 114, 109,
- 0, 3, 0, 3, 0, 4,
- 0, 4, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 77,
- 105, 99, 114, 111, 115, 111,
- 102, 116, 32, 40, 82, 41,
- 32, 72, 76, 83, 76, 32,
- 83, 104, 97, 100, 101, 114,
- 32, 67, 111, 109, 112, 105,
- 108, 101, 114, 32, 54, 46,
- 51, 46, 57, 54, 48, 48,
- 46, 49, 54, 51, 56, 52,
- 0, 171, 171, 73, 83, 71,
- 78, 80, 0, 0, 0, 2,
- 0, 0, 0, 8, 0, 0,
- 0, 56, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0,
- 0, 3, 0, 0, 0, 0,
- 0, 0, 0, 15, 0, 0,
- 0, 68, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 3, 0, 0, 0, 1,
- 0, 0, 0, 3, 3, 0,
- 0, 83, 86, 95, 80, 111,
- 115, 105, 116, 105, 111, 110,
- 0, 84, 69, 88, 67, 79,
- 79, 82, 68, 0, 171, 171,
- 171, 79, 83, 71, 78, 44,
- 0, 0, 0, 1, 0, 0,
- 0, 8, 0, 0, 0, 32,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 3,
- 0, 0, 0, 0, 0, 0,
- 0, 15, 0, 0, 0, 83,
- 86, 95, 84, 97, 114, 103,
- 101, 116, 0, 171, 171, 227,
- 85, 0, 0, 0, 0, 0,
- 0, 82, 101, 110, 100, 101,
- 114, 67, 111, 109, 112, 111,
- 110, 101, 110, 116, 65, 108,
- 112, 104, 97, 76, 97, 121,
- 101, 114, 0, 4, 0, 0,
- 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0,
- 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0,
- 0, 3, 0, 0, 0, 255,
- 255, 255, 255, 136, 7, 0,
- 0, 68, 88, 66, 67, 134,
- 58, 181, 81, 234, 180, 23,
- 54, 140, 98, 159, 162, 74,
- 150, 11, 172, 1, 0, 0,
- 0, 136, 7, 0, 0, 6,
- 0, 0, 0, 56, 0, 0,
- 0, 188, 1, 0, 0, 228,
- 3, 0, 0, 96, 4, 0,
- 0, 252, 6, 0, 0, 48,
- 7, 0, 0, 65, 111, 110,
- 57, 124, 1, 0, 0, 124,
- 1, 0, 0, 0, 2, 254,
- 255, 24, 1, 0, 0, 100,
- 0, 0, 0, 5, 0, 36,
- 0, 0, 0, 96, 0, 0,
- 0, 96, 0, 0, 0, 36,
- 0, 1, 0, 96, 0, 0,
- 0, 0, 0, 2, 0, 1,
- 0, 0, 0, 0, 0, 0,
- 0, 4, 0, 2, 0, 3,
- 0, 0, 0, 0, 0, 0,
- 0, 7, 0, 1, 0, 5,
- 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 1, 0, 6,
- 0, 0, 0, 0, 0, 2,
- 0, 0, 0, 4, 0, 7,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1, 2, 254,
- 255, 31, 0, 0, 2, 5,
- 0, 0, 128, 0, 0, 15,
- 144, 4, 0, 0, 4, 0,
- 0, 3, 224, 0, 0, 228,
- 144, 1, 0, 238, 160, 1,
- 0, 228, 160, 4, 0, 0,
- 4, 0, 0, 3, 128, 0,
- 0, 228, 144, 2, 0, 238,
- 160, 2, 0, 228, 160, 5,
- 0, 0, 3, 1, 0, 15,
- 128, 0, 0, 85, 128, 4,
- 0, 228, 160, 4, 0, 0,
- 4, 0, 0, 15, 128, 3,
- 0, 228, 160, 0, 0, 0,
- 128, 1, 0, 228, 128, 2,
- 0, 0, 3, 0, 0, 15,
- 128, 0, 0, 228, 128, 5,
- 0, 228, 160, 6, 0, 0,
- 2, 1, 0, 1, 128, 0,
- 0, 255, 128, 5, 0, 0,
- 3, 0, 0, 7, 128, 0,
- 0, 228, 128, 1, 0, 0,
- 128, 2, 0, 0, 3, 0,
- 0, 15, 128, 0, 0, 228,
- 128, 6, 0, 228, 161, 5,
- 0, 0, 3, 0, 0, 7,
- 128, 0, 0, 255, 128, 0,
- 0, 228, 128, 5, 0, 0,
- 3, 1, 0, 15, 128, 0,
- 0, 85, 128, 8, 0, 228,
- 160, 4, 0, 0, 4, 1,
- 0, 15, 128, 7, 0, 228,
- 160, 0, 0, 0, 128, 1,
- 0, 228, 128, 4, 0, 0,
- 4, 1, 0, 15, 128, 9,
- 0, 228, 160, 0, 0, 170,
- 128, 1, 0, 228, 128, 4,
- 0, 0, 4, 0, 0, 15,
- 128, 10, 0, 228, 160, 0,
- 0, 255, 128, 1, 0, 228,
- 128, 4, 0, 0, 4, 0,
- 0, 3, 192, 0, 0, 255,
- 128, 0, 0, 228, 160, 0,
- 0, 228, 128, 1, 0, 0,
- 2, 0, 0, 12, 192, 0,
- 0, 228, 128, 255, 255, 0,
- 0, 83, 72, 68, 82, 32,
- 2, 0, 0, 64, 0, 1,
- 0, 136, 0, 0, 0, 89,
- 0, 0, 4, 70, 142, 32,
- 0, 0, 0, 0, 0, 8,
- 0, 0, 0, 89, 0, 0,
- 4, 70, 142, 32, 0, 1,
- 0, 0, 0, 1, 0, 0,
- 0, 89, 0, 0, 4, 70,
- 142, 32, 0, 2, 0, 0,
- 0, 4, 0, 0, 0, 95,
- 0, 0, 3, 50, 16, 16,
- 0, 0, 0, 0, 0, 103,
- 0, 0, 4, 242, 32, 16,
- 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 101, 0, 0,
- 3, 50, 32, 16, 0, 1,
- 0, 0, 0, 104, 0, 0,
- 2, 2, 0, 0, 0, 50,
- 0, 0, 11, 50, 0, 16,
- 0, 0, 0, 0, 0, 70,
- 16, 16, 0, 0, 0, 0,
- 0, 230, 138, 32, 0, 0,
- 0, 0, 0, 1, 0, 0,
- 0, 70, 128, 32, 0, 0,
- 0, 0, 0, 1, 0, 0,
- 0, 56, 0, 0, 8, 242,
- 0, 16, 0, 1, 0, 0,
- 0, 86, 5, 16, 0, 0,
- 0, 0, 0, 70, 142, 32,
- 0, 0, 0, 0, 0, 5,
- 0, 0, 0, 50, 0, 0,
- 10, 242, 0, 16, 0, 0,
- 0, 0, 0, 70, 142, 32,
- 0, 0, 0, 0, 0, 4,
- 0, 0, 0, 6, 0, 16,
- 0, 0, 0, 0, 0, 70,
- 14, 16, 0, 1, 0, 0,
- 0, 0, 0, 0, 8, 242,
- 0, 16, 0, 0, 0, 0,
- 0, 70, 14, 16, 0, 0,
- 0, 0, 0, 70, 142, 32,
- 0, 0, 0, 0, 0, 7,
- 0, 0, 0, 14, 0, 0,
- 7, 114, 0, 16, 0, 0,
- 0, 0, 0, 70, 2, 16,
- 0, 0, 0, 0, 0, 246,
- 15, 16, 0, 0, 0, 0,
- 0, 0, 0, 0, 9, 242,
- 0, 16, 0, 0, 0, 0,
- 0, 70, 14, 16, 0, 0,
- 0, 0, 0, 70, 142, 32,
- 128, 65, 0, 0, 0, 1,
- 0, 0, 0, 0, 0, 0,
- 0, 56, 0, 0, 7, 114,
- 0, 16, 0, 0, 0, 0,
- 0, 246, 15, 16, 0, 0,
- 0, 0, 0, 70, 2, 16,
- 0, 0, 0, 0, 0, 56,
- 0, 0, 8, 242, 0, 16,
- 0, 1, 0, 0, 0, 86,
- 5, 16, 0, 0, 0, 0,
- 0, 70, 142, 32, 0, 2,
- 0, 0, 0, 1, 0, 0,
- 0, 50, 0, 0, 10, 242,
- 0, 16, 0, 1, 0, 0,
- 0, 70, 142, 32, 0, 2,
- 0, 0, 0, 0, 0, 0,
- 0, 6, 0, 16, 0, 0,
- 0, 0, 0, 70, 14, 16,
- 0, 1, 0, 0, 0, 50,
- 0, 0, 10, 242, 0, 16,
- 0, 1, 0, 0, 0, 70,
- 142, 32, 0, 2, 0, 0,
- 0, 2, 0, 0, 0, 166,
- 10, 16, 0, 0, 0, 0,
- 0, 70, 14, 16, 0, 1,
- 0, 0, 0, 50, 0, 0,
- 10, 242, 32, 16, 0, 0,
- 0, 0, 0, 70, 142, 32,
- 0, 2, 0, 0, 0, 3,
- 0, 0, 0, 246, 15, 16,
- 0, 0, 0, 0, 0, 70,
- 14, 16, 0, 1, 0, 0,
- 0, 50, 0, 0, 11, 50,
- 32, 16, 0, 1, 0, 0,
- 0, 70, 16, 16, 0, 0,
- 0, 0, 0, 230, 138, 32,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 70, 128, 32,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 62, 0, 0,
- 1, 83, 84, 65, 84, 116,
- 0, 0, 0, 13, 0, 0,
- 0, 2, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0,
- 0, 12, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 82,
- 68, 69, 70, 148, 2, 0,
- 0, 3, 0, 0, 0, 168,
- 0, 0, 0, 3, 0, 0,
- 0, 28, 0, 0, 0, 0,
- 4, 254, 255, 0, 1, 0,
- 0, 96, 2, 0, 0, 124,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 0, 0, 0,
- 0, 133, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0,
- 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 152, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 2,
- 0, 0, 0, 1, 0, 0,
- 0, 0, 0, 0, 0, 80,
- 101, 114, 76, 97, 121, 101,
- 114, 0, 80, 101, 114, 79,
- 99, 99, 97, 115, 105, 111,
- 110, 97, 108, 76, 97, 121,
- 101, 114, 0, 80, 101, 114,
- 76, 97, 121, 101, 114, 77,
- 97, 110, 97, 103, 101, 114,
- 0, 124, 0, 0, 0, 5,
- 0, 0, 0, 240, 0, 0,
- 0, 128, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 133, 0, 0, 0, 2,
- 0, 0, 0, 220, 1, 0,
- 0, 32, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 152, 0, 0, 0, 1,
- 0, 0, 0, 60, 2, 0,
- 0, 64, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 104, 1, 0, 0, 0,
- 0, 0, 0, 16, 0, 0,
- 0, 2, 0, 0, 0, 120,
- 1, 0, 0, 0, 0, 0,
- 0, 136, 1, 0, 0, 16,
- 0, 0, 0, 16, 0, 0,
- 0, 2, 0, 0, 0, 120,
- 1, 0, 0, 0, 0, 0,
- 0, 147, 1, 0, 0, 32,
- 0, 0, 0, 16, 0, 0,
- 0, 0, 0, 0, 0, 120,
- 1, 0, 0, 0, 0, 0,
- 0, 157, 1, 0, 0, 48,
- 0, 0, 0, 4, 0, 0,
- 0, 0, 0, 0, 0, 172,
- 1, 0, 0, 0, 0, 0,
- 0, 188, 1, 0, 0, 64,
- 0, 0, 0, 64, 0, 0,
- 0, 2, 0, 0, 0, 204,
- 1, 0, 0, 0, 0, 0,
- 0, 118, 84, 101, 120, 116,
- 117, 114, 101, 67, 111, 111,
- 114, 100, 115, 0, 171, 1,
- 0, 3, 0, 1, 0, 4,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 118, 76, 97,
- 121, 101, 114, 81, 117, 97,
- 100, 0, 118, 77, 97, 115,
- 107, 81, 117, 97, 100, 0,
- 102, 76, 97, 121, 101, 114,
- 79, 112, 97, 99, 105, 116,
- 121, 0, 171, 0, 0, 3,
- 0, 1, 0, 1, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 109, 76, 97, 121, 101,
- 114, 84, 114, 97, 110, 115,
- 102, 111, 114, 109, 0, 3,
- 0, 3, 0, 4, 0, 4,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 12, 2, 0,
- 0, 0, 0, 0, 0, 16,
- 0, 0, 0, 2, 0, 0,
- 0, 32, 2, 0, 0, 0,
- 0, 0, 0, 48, 2, 0,
- 0, 16, 0, 0, 0, 16,
- 0, 0, 0, 0, 0, 0,
- 0, 32, 2, 0, 0, 0,
- 0, 0, 0, 118, 82, 101,
- 110, 100, 101, 114, 84, 97,
- 114, 103, 101, 116, 79, 102,
- 102, 115, 101, 116, 0, 1,
- 0, 3, 0, 1, 0, 4,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 102, 76, 97,
- 121, 101, 114, 67, 111, 108,
- 111, 114, 0, 84, 2, 0,
- 0, 0, 0, 0, 0, 64,
- 0, 0, 0, 2, 0, 0,
- 0, 204, 1, 0, 0, 0,
- 0, 0, 0, 109, 80, 114,
- 111, 106, 101, 99, 116, 105,
- 111, 110, 0, 77, 105, 99,
- 114, 111, 115, 111, 102, 116,
- 32, 40, 82, 41, 32, 72,
- 76, 83, 76, 32, 83, 104,
- 97, 100, 101, 114, 32, 67,
- 111, 109, 112, 105, 108, 101,
- 114, 32, 54, 46, 51, 46,
- 57, 54, 48, 48, 46, 49,
- 54, 51, 56, 52, 0, 171,
- 171, 73, 83, 71, 78, 44,
- 0, 0, 0, 1, 0, 0,
- 0, 8, 0, 0, 0, 32,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 3,
- 0, 0, 0, 0, 0, 0,
- 0, 3, 3, 0, 0, 80,
- 79, 83, 73, 84, 73, 79,
- 78, 0, 171, 171, 171, 79,
- 83, 71, 78, 80, 0, 0,
- 0, 2, 0, 0, 0, 8,
- 0, 0, 0, 56, 0, 0,
- 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 3, 0, 0,
- 0, 0, 0, 0, 0, 15,
- 0, 0, 0, 68, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0,
- 0, 1, 0, 0, 0, 3,
- 12, 0, 0, 83, 86, 95,
- 80, 111, 115, 105, 116, 105,
- 111, 110, 0, 84, 69, 88,
- 67, 79, 79, 82, 68, 0,
- 171, 171, 171, 153, 93, 0,
- 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 2, 0, 0,
- 0, 0, 0, 0, 0, 208,
- 5, 0, 0, 68, 88, 66,
- 67, 221, 34, 215, 183, 71,
- 137, 39, 113, 128, 157, 241,
- 55, 153, 55, 174, 108, 1,
- 0, 0, 0, 208, 5, 0,
- 0, 6, 0, 0, 0, 56,
- 0, 0, 0, 64, 1, 0,
- 0, 160, 2, 0, 0, 28,
- 3, 0, 0, 44, 5, 0,
- 0, 132, 5, 0, 0, 65,
- 111, 110, 57, 0, 1, 0,
- 0, 0, 1, 0, 0, 0,
- 2, 255, 255, 200, 0, 0,
- 0, 56, 0, 0, 0, 1,
- 0, 44, 0, 0, 0, 56,
- 0, 0, 0, 56, 0, 2,
- 0, 36, 0, 0, 0, 56,
- 0, 0, 0, 0, 0, 1,
- 0, 1, 0, 0, 0, 3,
- 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 1, 2, 255,
- 255, 81, 0, 0, 5, 1,
- 0, 15, 160, 0, 0, 128,
- 63, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 31, 0, 0, 2, 0,
- 0, 0, 128, 0, 0, 3,
- 176, 31, 0, 0, 2, 0,
- 0, 0, 144, 0, 8, 15,
- 160, 31, 0, 0, 2, 0,
- 0, 0, 144, 1, 8, 15,
- 160, 66, 0, 0, 3, 0,
- 0, 15, 128, 0, 0, 228,
- 176, 0, 8, 228, 160, 66,
- 0, 0, 3, 1, 0, 15,
- 128, 0, 0, 228, 176, 1,
- 8, 228, 160, 2, 0, 0,
- 3, 1, 0, 15, 128, 0,
- 0, 228, 128, 1, 0, 228,
- 129, 2, 0, 0, 3, 1,
- 0, 15, 128, 1, 0, 228,
- 128, 1, 0, 0, 160, 1,
- 0, 0, 2, 0, 0, 8,
- 128, 1, 0, 85, 128, 5,
- 0, 0, 3, 1, 0, 15,
- 128, 1, 0, 228, 128, 0,
- 0, 0, 160, 1, 0, 0,
- 2, 1, 8, 15, 128, 1,
- 0, 228, 128, 5, 0, 0,
- 3, 0, 0, 15, 128, 0,
- 0, 228, 128, 0, 0, 0,
- 160, 1, 0, 0, 2, 0,
- 8, 15, 128, 0, 0, 228,
- 128, 255, 255, 0, 0, 83,
- 72, 68, 82, 88, 1, 0,
- 0, 64, 0, 0, 0, 86,
- 0, 0, 0, 89, 0, 0,
- 4, 70, 142, 32, 0, 0,
- 0, 0, 0, 4, 0, 0,
- 0, 90, 0, 0, 3, 0,
- 96, 16, 0, 0, 0, 0,
- 0, 88, 24, 0, 4, 0,
- 112, 16, 0, 0, 0, 0,
- 0, 85, 85, 0, 0, 88,
- 24, 0, 4, 0, 112, 16,
- 0, 1, 0, 0, 0, 85,
- 85, 0, 0, 98, 16, 0,
- 3, 50, 16, 16, 0, 1,
- 0, 0, 0, 101, 0, 0,
- 3, 242, 32, 16, 0, 0,
- 0, 0, 0, 101, 0, 0,
- 3, 242, 32, 16, 0, 1,
- 0, 0, 0, 104, 0, 0,
- 2, 2, 0, 0, 0, 69,
- 0, 0, 9, 242, 0, 16,
- 0, 0, 0, 0, 0, 70,
- 16, 16, 0, 1, 0, 0,
- 0, 70, 126, 16, 0, 1,
- 0, 0, 0, 0, 96, 16,
- 0, 0, 0, 0, 0, 69,
- 0, 0, 9, 242, 0, 16,
- 0, 1, 0, 0, 0, 70,
- 16, 16, 0, 1, 0, 0,
- 0, 70, 126, 16, 0, 0,
- 0, 0, 0, 0, 96, 16,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 8, 242, 0, 16,
- 0, 0, 0, 0, 0, 70,
- 14, 16, 128, 65, 0, 0,
- 0, 0, 0, 0, 0, 70,
- 14, 16, 0, 1, 0, 0,
- 0, 0, 0, 0, 10, 242,
- 0, 16, 0, 0, 0, 0,
- 0, 70, 14, 16, 0, 0,
- 0, 0, 0, 2, 64, 0,
- 0, 0, 0, 128, 63, 0,
- 0, 128, 63, 0, 0, 128,
- 63, 0, 0, 128, 63, 54,
- 0, 0, 5, 130, 0, 16,
- 0, 1, 0, 0, 0, 26,
- 0, 16, 0, 0, 0, 0,
- 0, 56, 0, 0, 8, 242,
- 32, 16, 0, 1, 0, 0,
- 0, 70, 14, 16, 0, 0,
- 0, 0, 0, 6, 128, 32,
- 0, 0, 0, 0, 0, 3,
- 0, 0, 0, 56, 0, 0,
- 8, 242, 32, 16, 0, 0,
- 0, 0, 0, 70, 14, 16,
- 0, 1, 0, 0, 0, 6,
- 128, 32, 0, 0, 0, 0,
- 0, 3, 0, 0, 0, 62,
- 0, 0, 1, 83, 84, 65,
- 84, 116, 0, 0, 0, 8,
- 0, 0, 0, 2, 0, 0,
- 0, 0, 0, 0, 0, 3,
- 0, 0, 0, 4, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 82, 68, 69, 70, 8,
- 2, 0, 0, 1, 0, 0,
- 0, 208, 0, 0, 0, 4,
- 0, 0, 0, 28, 0, 0,
- 0, 0, 4, 255, 255, 0,
- 1, 0, 0, 212, 1, 0,
- 0, 156, 0, 0, 0, 3,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 182, 0, 0,
- 0, 2, 0, 0, 0, 5,
- 0, 0, 0, 4, 0, 0,
- 0, 255, 255, 255, 255, 0,
- 0, 0, 0, 1, 0, 0,
- 0, 12, 0, 0, 0, 187,
- 0, 0, 0, 2, 0, 0,
- 0, 5, 0, 0, 0, 4,
- 0, 0, 0, 255, 255, 255,
- 255, 1, 0, 0, 0, 1,
- 0, 0, 0, 12, 0, 0,
- 0, 197, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 76, 97, 121,
- 101, 114, 84, 101, 120, 116,
- 117, 114, 101, 83, 97, 109,
- 112, 108, 101, 114, 76, 105,
- 110, 101, 97, 114, 0, 116,
- 82, 71, 66, 0, 116, 82,
- 71, 66, 87, 104, 105, 116,
- 101, 0, 80, 101, 114, 76,
- 97, 121, 101, 114, 0, 171,
- 171, 197, 0, 0, 0, 5,
- 0, 0, 0, 232, 0, 0,
- 0, 128, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 96, 1, 0, 0, 0,
- 0, 0, 0, 16, 0, 0,
- 0, 0, 0, 0, 0, 112,
- 1, 0, 0, 0, 0, 0,
- 0, 128, 1, 0, 0, 16,
- 0, 0, 0, 16, 0, 0,
- 0, 0, 0, 0, 0, 112,
- 1, 0, 0, 0, 0, 0,
- 0, 139, 1, 0, 0, 32,
- 0, 0, 0, 16, 0, 0,
- 0, 0, 0, 0, 0, 112,
- 1, 0, 0, 0, 0, 0,
- 0, 149, 1, 0, 0, 48,
- 0, 0, 0, 4, 0, 0,
- 0, 2, 0, 0, 0, 164,
- 1, 0, 0, 0, 0, 0,
- 0, 180, 1, 0, 0, 64,
- 0, 0, 0, 64, 0, 0,
- 0, 0, 0, 0, 0, 196,
- 1, 0, 0, 0, 0, 0,
- 0, 118, 84, 101, 120, 116,
- 117, 114, 101, 67, 111, 111,
- 114, 100, 115, 0, 171, 1,
- 0, 3, 0, 1, 0, 4,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 118, 76, 97,
- 121, 101, 114, 81, 117, 97,
- 100, 0, 118, 77, 97, 115,
- 107, 81, 117, 97, 100, 0,
- 102, 76, 97, 121, 101, 114,
- 79, 112, 97, 99, 105, 116,
- 121, 0, 171, 0, 0, 3,
- 0, 1, 0, 1, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 109, 76, 97, 121, 101,
- 114, 84, 114, 97, 110, 115,
- 102, 111, 114, 109, 0, 3,
- 0, 3, 0, 4, 0, 4,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 77, 105, 99,
- 114, 111, 115, 111, 102, 116,
- 32, 40, 82, 41, 32, 72,
- 76, 83, 76, 32, 83, 104,
- 97, 100, 101, 114, 32, 67,
- 111, 109, 112, 105, 108, 101,
- 114, 32, 54, 46, 51, 46,
- 57, 54, 48, 48, 46, 49,
- 54, 51, 56, 52, 0, 171,
- 171, 73, 83, 71, 78, 80,
- 0, 0, 0, 2, 0, 0,
- 0, 8, 0, 0, 0, 56,
- 0, 0, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 3,
- 0, 0, 0, 0, 0, 0,
- 0, 15, 0, 0, 0, 68,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 3,
- 0, 0, 0, 1, 0, 0,
- 0, 3, 3, 0, 0, 83,
- 86, 95, 80, 111, 115, 105,
- 116, 105, 111, 110, 0, 84,
- 69, 88, 67, 79, 79, 82,
- 68, 0, 171, 171, 171, 79,
- 83, 71, 78, 68, 0, 0,
- 0, 2, 0, 0, 0, 8,
- 0, 0, 0, 56, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0,
- 0, 0, 0, 0, 0, 15,
- 0, 0, 0, 56, 0, 0,
- 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0,
- 0, 1, 0, 0, 0, 15,
- 0, 0, 0, 83, 86, 95,
- 84, 97, 114, 103, 101, 116,
- 0, 171, 171, 57, 101, 0,
- 0, 0, 0, 0, 0, 82,
- 101, 110, 100, 101, 114, 83,
- 111, 108, 105, 100, 67, 111,
- 108, 111, 114, 76, 97, 121,
- 101, 114, 0, 4, 0, 0,
- 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0,
- 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0,
- 0, 3, 0, 0, 0, 255,
- 255, 255, 255, 136, 7, 0,
- 0, 68, 88, 66, 67, 134,
- 58, 181, 81, 234, 180, 23,
- 54, 140, 98, 159, 162, 74,
- 150, 11, 172, 1, 0, 0,
- 0, 136, 7, 0, 0, 6,
- 0, 0, 0, 56, 0, 0,
- 0, 188, 1, 0, 0, 228,
- 3, 0, 0, 96, 4, 0,
- 0, 252, 6, 0, 0, 48,
- 7, 0, 0, 65, 111, 110,
- 57, 124, 1, 0, 0, 124,
- 1, 0, 0, 0, 2, 254,
- 255, 24, 1, 0, 0, 100,
- 0, 0, 0, 5, 0, 36,
- 0, 0, 0, 96, 0, 0,
- 0, 96, 0, 0, 0, 36,
- 0, 1, 0, 96, 0, 0,
- 0, 0, 0, 2, 0, 1,
- 0, 0, 0, 0, 0, 0,
- 0, 4, 0, 2, 0, 3,
- 0, 0, 0, 0, 0, 0,
- 0, 7, 0, 1, 0, 5,
- 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 1, 0, 6,
- 0, 0, 0, 0, 0, 2,
- 0, 0, 0, 4, 0, 7,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1, 2, 254,
- 255, 31, 0, 0, 2, 5,
- 0, 0, 128, 0, 0, 15,
- 144, 4, 0, 0, 4, 0,
- 0, 3, 224, 0, 0, 228,
- 144, 1, 0, 238, 160, 1,
- 0, 228, 160, 4, 0, 0,
- 4, 0, 0, 3, 128, 0,
- 0, 228, 144, 2, 0, 238,
- 160, 2, 0, 228, 160, 5,
- 0, 0, 3, 1, 0, 15,
- 128, 0, 0, 85, 128, 4,
- 0, 228, 160, 4, 0, 0,
- 4, 0, 0, 15, 128, 3,
- 0, 228, 160, 0, 0, 0,
- 128, 1, 0, 228, 128, 2,
- 0, 0, 3, 0, 0, 15,
- 128, 0, 0, 228, 128, 5,
- 0, 228, 160, 6, 0, 0,
- 2, 1, 0, 1, 128, 0,
- 0, 255, 128, 5, 0, 0,
- 3, 0, 0, 7, 128, 0,
- 0, 228, 128, 1, 0, 0,
- 128, 2, 0, 0, 3, 0,
- 0, 15, 128, 0, 0, 228,
- 128, 6, 0, 228, 161, 5,
- 0, 0, 3, 0, 0, 7,
- 128, 0, 0, 255, 128, 0,
- 0, 228, 128, 5, 0, 0,
- 3, 1, 0, 15, 128, 0,
- 0, 85, 128, 8, 0, 228,
- 160, 4, 0, 0, 4, 1,
- 0, 15, 128, 7, 0, 228,
- 160, 0, 0, 0, 128, 1,
- 0, 228, 128, 4, 0, 0,
- 4, 1, 0, 15, 128, 9,
- 0, 228, 160, 0, 0, 170,
- 128, 1, 0, 228, 128, 4,
- 0, 0, 4, 0, 0, 15,
- 128, 10, 0, 228, 160, 0,
- 0, 255, 128, 1, 0, 228,
- 128, 4, 0, 0, 4, 0,
- 0, 3, 192, 0, 0, 255,
- 128, 0, 0, 228, 160, 0,
- 0, 228, 128, 1, 0, 0,
- 2, 0, 0, 12, 192, 0,
- 0, 228, 128, 255, 255, 0,
- 0, 83, 72, 68, 82, 32,
- 2, 0, 0, 64, 0, 1,
- 0, 136, 0, 0, 0, 89,
- 0, 0, 4, 70, 142, 32,
- 0, 0, 0, 0, 0, 8,
- 0, 0, 0, 89, 0, 0,
- 4, 70, 142, 32, 0, 1,
- 0, 0, 0, 1, 0, 0,
- 0, 89, 0, 0, 4, 70,
- 142, 32, 0, 2, 0, 0,
- 0, 4, 0, 0, 0, 95,
- 0, 0, 3, 50, 16, 16,
- 0, 0, 0, 0, 0, 103,
- 0, 0, 4, 242, 32, 16,
- 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 101, 0, 0,
- 3, 50, 32, 16, 0, 1,
- 0, 0, 0, 104, 0, 0,
- 2, 2, 0, 0, 0, 50,
- 0, 0, 11, 50, 0, 16,
- 0, 0, 0, 0, 0, 70,
- 16, 16, 0, 0, 0, 0,
- 0, 230, 138, 32, 0, 0,
- 0, 0, 0, 1, 0, 0,
- 0, 70, 128, 32, 0, 0,
- 0, 0, 0, 1, 0, 0,
- 0, 56, 0, 0, 8, 242,
- 0, 16, 0, 1, 0, 0,
- 0, 86, 5, 16, 0, 0,
- 0, 0, 0, 70, 142, 32,
- 0, 0, 0, 0, 0, 5,
- 0, 0, 0, 50, 0, 0,
- 10, 242, 0, 16, 0, 0,
- 0, 0, 0, 70, 142, 32,
- 0, 0, 0, 0, 0, 4,
- 0, 0, 0, 6, 0, 16,
- 0, 0, 0, 0, 0, 70,
- 14, 16, 0, 1, 0, 0,
- 0, 0, 0, 0, 8, 242,
- 0, 16, 0, 0, 0, 0,
- 0, 70, 14, 16, 0, 0,
- 0, 0, 0, 70, 142, 32,
- 0, 0, 0, 0, 0, 7,
- 0, 0, 0, 14, 0, 0,
- 7, 114, 0, 16, 0, 0,
- 0, 0, 0, 70, 2, 16,
- 0, 0, 0, 0, 0, 246,
- 15, 16, 0, 0, 0, 0,
- 0, 0, 0, 0, 9, 242,
- 0, 16, 0, 0, 0, 0,
- 0, 70, 14, 16, 0, 0,
- 0, 0, 0, 70, 142, 32,
- 128, 65, 0, 0, 0, 1,
- 0, 0, 0, 0, 0, 0,
- 0, 56, 0, 0, 7, 114,
- 0, 16, 0, 0, 0, 0,
- 0, 246, 15, 16, 0, 0,
- 0, 0, 0, 70, 2, 16,
- 0, 0, 0, 0, 0, 56,
- 0, 0, 8, 242, 0, 16,
- 0, 1, 0, 0, 0, 86,
- 5, 16, 0, 0, 0, 0,
- 0, 70, 142, 32, 0, 2,
- 0, 0, 0, 1, 0, 0,
- 0, 50, 0, 0, 10, 242,
- 0, 16, 0, 1, 0, 0,
- 0, 70, 142, 32, 0, 2,
- 0, 0, 0, 0, 0, 0,
- 0, 6, 0, 16, 0, 0,
- 0, 0, 0, 70, 14, 16,
- 0, 1, 0, 0, 0, 50,
- 0, 0, 10, 242, 0, 16,
- 0, 1, 0, 0, 0, 70,
- 142, 32, 0, 2, 0, 0,
- 0, 2, 0, 0, 0, 166,
- 10, 16, 0, 0, 0, 0,
- 0, 70, 14, 16, 0, 1,
- 0, 0, 0, 50, 0, 0,
- 10, 242, 32, 16, 0, 0,
- 0, 0, 0, 70, 142, 32,
- 0, 2, 0, 0, 0, 3,
- 0, 0, 0, 246, 15, 16,
- 0, 0, 0, 0, 0, 70,
- 14, 16, 0, 1, 0, 0,
- 0, 50, 0, 0, 11, 50,
- 32, 16, 0, 1, 0, 0,
- 0, 70, 16, 16, 0, 0,
- 0, 0, 0, 230, 138, 32,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 70, 128, 32,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 62, 0, 0,
- 1, 83, 84, 65, 84, 116,
- 0, 0, 0, 13, 0, 0,
- 0, 2, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0,
- 0, 12, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 82,
- 68, 69, 70, 148, 2, 0,
- 0, 3, 0, 0, 0, 168,
- 0, 0, 0, 3, 0, 0,
- 0, 28, 0, 0, 0, 0,
- 4, 254, 255, 0, 1, 0,
- 0, 96, 2, 0, 0, 124,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 0, 0, 0,
- 0, 133, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0,
- 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 152, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 2,
- 0, 0, 0, 1, 0, 0,
- 0, 0, 0, 0, 0, 80,
- 101, 114, 76, 97, 121, 101,
- 114, 0, 80, 101, 114, 79,
- 99, 99, 97, 115, 105, 111,
- 110, 97, 108, 76, 97, 121,
- 101, 114, 0, 80, 101, 114,
- 76, 97, 121, 101, 114, 77,
- 97, 110, 97, 103, 101, 114,
- 0, 124, 0, 0, 0, 5,
- 0, 0, 0, 240, 0, 0,
- 0, 128, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 133, 0, 0, 0, 2,
- 0, 0, 0, 220, 1, 0,
- 0, 32, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 152, 0, 0, 0, 1,
- 0, 0, 0, 60, 2, 0,
- 0, 64, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 104, 1, 0, 0, 0,
- 0, 0, 0, 16, 0, 0,
- 0, 2, 0, 0, 0, 120,
- 1, 0, 0, 0, 0, 0,
- 0, 136, 1, 0, 0, 16,
- 0, 0, 0, 16, 0, 0,
- 0, 2, 0, 0, 0, 120,
- 1, 0, 0, 0, 0, 0,
- 0, 147, 1, 0, 0, 32,
- 0, 0, 0, 16, 0, 0,
- 0, 0, 0, 0, 0, 120,
- 1, 0, 0, 0, 0, 0,
- 0, 157, 1, 0, 0, 48,
- 0, 0, 0, 4, 0, 0,
- 0, 0, 0, 0, 0, 172,
- 1, 0, 0, 0, 0, 0,
- 0, 188, 1, 0, 0, 64,
- 0, 0, 0, 64, 0, 0,
- 0, 2, 0, 0, 0, 204,
- 1, 0, 0, 0, 0, 0,
- 0, 118, 84, 101, 120, 116,
- 117, 114, 101, 67, 111, 111,
- 114, 100, 115, 0, 171, 1,
- 0, 3, 0, 1, 0, 4,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 118, 76, 97,
- 121, 101, 114, 81, 117, 97,
- 100, 0, 118, 77, 97, 115,
- 107, 81, 117, 97, 100, 0,
- 102, 76, 97, 121, 101, 114,
- 79, 112, 97, 99, 105, 116,
- 121, 0, 171, 0, 0, 3,
- 0, 1, 0, 1, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 109, 76, 97, 121, 101,
- 114, 84, 114, 97, 110, 115,
- 102, 111, 114, 109, 0, 3,
- 0, 3, 0, 4, 0, 4,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 12, 2, 0,
- 0, 0, 0, 0, 0, 16,
- 0, 0, 0, 2, 0, 0,
- 0, 32, 2, 0, 0, 0,
- 0, 0, 0, 48, 2, 0,
- 0, 16, 0, 0, 0, 16,
- 0, 0, 0, 0, 0, 0,
- 0, 32, 2, 0, 0, 0,
- 0, 0, 0, 118, 82, 101,
- 110, 100, 101, 114, 84, 97,
- 114, 103, 101, 116, 79, 102,
- 102, 115, 101, 116, 0, 1,
- 0, 3, 0, 1, 0, 4,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 102, 76, 97,
- 121, 101, 114, 67, 111, 108,
- 111, 114, 0, 84, 2, 0,
- 0, 0, 0, 0, 0, 64,
- 0, 0, 0, 2, 0, 0,
- 0, 204, 1, 0, 0, 0,
- 0, 0, 0, 109, 80, 114,
- 111, 106, 101, 99, 116, 105,
- 111, 110, 0, 77, 105, 99,
- 114, 111, 115, 111, 102, 116,
- 32, 40, 82, 41, 32, 72,
- 76, 83, 76, 32, 83, 104,
- 97, 100, 101, 114, 32, 67,
- 111, 109, 112, 105, 108, 101,
- 114, 32, 54, 46, 51, 46,
- 57, 54, 48, 48, 46, 49,
- 54, 51, 56, 52, 0, 171,
- 171, 73, 83, 71, 78, 44,
- 0, 0, 0, 1, 0, 0,
- 0, 8, 0, 0, 0, 32,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 3,
- 0, 0, 0, 0, 0, 0,
- 0, 3, 3, 0, 0, 80,
- 79, 83, 73, 84, 73, 79,
- 78, 0, 171, 171, 171, 79,
- 83, 71, 78, 80, 0, 0,
- 0, 2, 0, 0, 0, 8,
- 0, 0, 0, 56, 0, 0,
- 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 3, 0, 0,
- 0, 0, 0, 0, 0, 15,
- 0, 0, 0, 68, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0,
- 0, 1, 0, 0, 0, 3,
- 12, 0, 0, 83, 86, 95,
- 80, 111, 115, 105, 116, 105,
- 111, 110, 0, 84, 69, 88,
- 67, 79, 79, 82, 68, 0,
- 171, 171, 171, 91, 107, 0,
- 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 2, 0, 0,
- 0, 0, 0, 0, 0, 216,
- 2, 0, 0, 68, 88, 66,
- 67, 127, 205, 139, 78, 240,
- 148, 72, 80, 60, 232, 29,
- 175, 91, 153, 47, 16, 1,
- 0, 0, 0, 216, 2, 0,
- 0, 6, 0, 0, 0, 56,
- 0, 0, 0, 132, 0, 0,
- 0, 204, 0, 0, 0, 72,
- 1, 0, 0, 76, 2, 0,
- 0, 164, 2, 0, 0, 65,
- 111, 110, 57, 68, 0, 0,
- 0, 68, 0, 0, 0, 0,
- 2, 255, 255, 20, 0, 0,
- 0, 48, 0, 0, 0, 1,
- 0, 36, 0, 0, 0, 48,
- 0, 0, 0, 48, 0, 0,
- 0, 36, 0, 0, 0, 48,
- 0, 0, 0, 1, 0, 1,
- 0, 0, 0, 0, 0, 0,
- 0, 1, 2, 255, 255, 1,
- 0, 0, 2, 0, 8, 15,
- 128, 0, 0, 228, 160, 255,
- 255, 0, 0, 83, 72, 68,
- 82, 64, 0, 0, 0, 64,
- 0, 0, 0, 16, 0, 0,
- 0, 89, 0, 0, 4, 70,
- 142, 32, 0, 0, 0, 0,
- 0, 2, 0, 0, 0, 101,
- 0, 0, 3, 242, 32, 16,
- 0, 0, 0, 0, 0, 54,
- 0, 0, 6, 242, 32, 16,
- 0, 0, 0, 0, 0, 70,
- 142, 32, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 62,
- 0, 0, 1, 83, 84, 65,
- 84, 116, 0, 0, 0, 2,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 82, 68, 69, 70, 252,
- 0, 0, 0, 1, 0, 0,
- 0, 80, 0, 0, 0, 1,
- 0, 0, 0, 28, 0, 0,
- 0, 0, 4, 255, 255, 0,
- 1, 0, 0, 200, 0, 0,
- 0, 60, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 80, 101, 114,
- 79, 99, 99, 97, 115, 105,
- 111, 110, 97, 108, 76, 97,
- 121, 101, 114, 0, 171, 60,
- 0, 0, 0, 2, 0, 0,
- 0, 104, 0, 0, 0, 32,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 152,
- 0, 0, 0, 0, 0, 0,
- 0, 16, 0, 0, 0, 0,
- 0, 0, 0, 172, 0, 0,
- 0, 0, 0, 0, 0, 188,
- 0, 0, 0, 16, 0, 0,
- 0, 16, 0, 0, 0, 2,
- 0, 0, 0, 172, 0, 0,
- 0, 0, 0, 0, 0, 118,
- 82, 101, 110, 100, 101, 114,
- 84, 97, 114, 103, 101, 116,
- 79, 102, 102, 115, 101, 116,
- 0, 1, 0, 3, 0, 1,
- 0, 4, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 102,
- 76, 97, 121, 101, 114, 67,
- 111, 108, 111, 114, 0, 77,
- 105, 99, 114, 111, 115, 111,
- 102, 116, 32, 40, 82, 41,
- 32, 72, 76, 83, 76, 32,
- 83, 104, 97, 100, 101, 114,
- 32, 67, 111, 109, 112, 105,
- 108, 101, 114, 32, 54, 46,
- 51, 46, 57, 54, 48, 48,
- 46, 49, 54, 51, 56, 52,
- 0, 171, 171, 73, 83, 71,
- 78, 80, 0, 0, 0, 2,
- 0, 0, 0, 8, 0, 0,
- 0, 56, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0,
- 0, 3, 0, 0, 0, 0,
- 0, 0, 0, 15, 0, 0,
- 0, 68, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 3, 0, 0, 0, 1,
- 0, 0, 0, 3, 0, 0,
- 0, 83, 86, 95, 80, 111,
- 115, 105, 116, 105, 111, 110,
- 0, 84, 69, 88, 67, 79,
- 79, 82, 68, 0, 171, 171,
- 171, 79, 83, 71, 78, 44,
- 0, 0, 0, 1, 0, 0,
- 0, 8, 0, 0, 0, 32,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 3,
- 0, 0, 0, 0, 0, 0,
- 0, 15, 0, 0, 0, 83,
- 86, 95, 84, 97, 114, 103,
- 101, 116, 0, 171, 171, 251,
- 114, 0, 0, 0, 0, 0,
- 0, 82, 101, 110, 100, 101,
- 114, 67, 108, 101, 97, 114,
- 76, 97, 121, 101, 114, 0,
- 4, 0, 0, 0, 1, 0,
- 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 0, 0,
- 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 1, 0,
- 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 3, 0,
- 0, 0, 255, 255, 255, 255,
- 136, 7, 0, 0, 68, 88,
- 66, 67, 134, 58, 181, 81,
- 234, 180, 23, 54, 140, 98,
- 159, 162, 74, 150, 11, 172,
- 1, 0, 0, 0, 136, 7,
- 0, 0, 6, 0, 0, 0,
- 56, 0, 0, 0, 188, 1,
- 0, 0, 228, 3, 0, 0,
- 96, 4, 0, 0, 252, 6,
- 0, 0, 48, 7, 0, 0,
- 65, 111, 110, 57, 124, 1,
- 0, 0, 124, 1, 0, 0,
- 0, 2, 254, 255, 24, 1,
- 0, 0, 100, 0, 0, 0,
- 5, 0, 36, 0, 0, 0,
- 96, 0, 0, 0, 96, 0,
- 0, 0, 36, 0, 1, 0,
- 96, 0, 0, 0, 0, 0,
- 2, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 4, 0,
- 2, 0, 3, 0, 0, 0,
- 0, 0, 0, 0, 7, 0,
- 1, 0, 5, 0, 0, 0,
- 0, 0, 1, 0, 0, 0,
- 1, 0, 6, 0, 0, 0,
- 0, 0, 2, 0, 0, 0,
- 4, 0, 7, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 1, 2, 254, 255, 31, 0,
- 0, 2, 5, 0, 0, 128,
- 0, 0, 15, 144, 4, 0,
- 0, 4, 0, 0, 3, 224,
- 0, 0, 228, 144, 1, 0,
- 238, 160, 1, 0, 228, 160,
- 4, 0, 0, 4, 0, 0,
- 3, 128, 0, 0, 228, 144,
- 2, 0, 238, 160, 2, 0,
- 228, 160, 5, 0, 0, 3,
- 1, 0, 15, 128, 0, 0,
- 85, 128, 4, 0, 228, 160,
- 4, 0, 0, 4, 0, 0,
- 15, 128, 3, 0, 228, 160,
- 0, 0, 0, 128, 1, 0,
- 228, 128, 2, 0, 0, 3,
- 0, 0, 15, 128, 0, 0,
- 228, 128, 5, 0, 228, 160,
- 6, 0, 0, 2, 1, 0,
- 1, 128, 0, 0, 255, 128,
- 5, 0, 0, 3, 0, 0,
- 7, 128, 0, 0, 228, 128,
- 1, 0, 0, 128, 2, 0,
- 0, 3, 0, 0, 15, 128,
- 0, 0, 228, 128, 6, 0,
- 228, 161, 5, 0, 0, 3,
- 0, 0, 7, 128, 0, 0,
- 255, 128, 0, 0, 228, 128,
- 5, 0, 0, 3, 1, 0,
- 15, 128, 0, 0, 85, 128,
- 8, 0, 228, 160, 4, 0,
- 0, 4, 1, 0, 15, 128,
- 7, 0, 228, 160, 0, 0,
- 0, 128, 1, 0, 228, 128,
- 4, 0, 0, 4, 1, 0,
- 15, 128, 9, 0, 228, 160,
- 0, 0, 170, 128, 1, 0,
- 228, 128, 4, 0, 0, 4,
- 0, 0, 15, 128, 10, 0,
- 228, 160, 0, 0, 255, 128,
- 1, 0, 228, 128, 4, 0,
- 0, 4, 0, 0, 3, 192,
- 0, 0, 255, 128, 0, 0,
- 228, 160, 0, 0, 228, 128,
- 1, 0, 0, 2, 0, 0,
- 12, 192, 0, 0, 228, 128,
- 255, 255, 0, 0, 83, 72,
- 68, 82, 32, 2, 0, 0,
- 64, 0, 1, 0, 136, 0,
- 0, 0, 89, 0, 0, 4,
- 70, 142, 32, 0, 0, 0,
- 0, 0, 8, 0, 0, 0,
- 89, 0, 0, 4, 70, 142,
- 32, 0, 1, 0, 0, 0,
- 1, 0, 0, 0, 89, 0,
- 0, 4, 70, 142, 32, 0,
- 2, 0, 0, 0, 4, 0,
- 0, 0, 95, 0, 0, 3,
- 50, 16, 16, 0, 0, 0,
- 0, 0, 103, 0, 0, 4,
- 242, 32, 16, 0, 0, 0,
- 0, 0, 1, 0, 0, 0,
- 101, 0, 0, 3, 50, 32,
- 16, 0, 1, 0, 0, 0,
- 104, 0, 0, 2, 2, 0,
- 0, 0, 50, 0, 0, 11,
- 50, 0, 16, 0, 0, 0,
- 0, 0, 70, 16, 16, 0,
- 0, 0, 0, 0, 230, 138,
- 32, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 70, 128,
- 32, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 56, 0,
- 0, 8, 242, 0, 16, 0,
- 1, 0, 0, 0, 86, 5,
- 16, 0, 0, 0, 0, 0,
- 70, 142, 32, 0, 0, 0,
- 0, 0, 5, 0, 0, 0,
- 50, 0, 0, 10, 242, 0,
- 16, 0, 0, 0, 0, 0,
- 70, 142, 32, 0, 0, 0,
- 0, 0, 4, 0, 0, 0,
- 6, 0, 16, 0, 0, 0,
- 0, 0, 70, 14, 16, 0,
- 1, 0, 0, 0, 0, 0,
- 0, 8, 242, 0, 16, 0,
- 0, 0, 0, 0, 70, 14,
- 16, 0, 0, 0, 0, 0,
- 70, 142, 32, 0, 0, 0,
- 0, 0, 7, 0, 0, 0,
- 14, 0, 0, 7, 114, 0,
- 16, 0, 0, 0, 0, 0,
- 70, 2, 16, 0, 0, 0,
- 0, 0, 246, 15, 16, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 9, 242, 0, 16, 0,
- 0, 0, 0, 0, 70, 14,
- 16, 0, 0, 0, 0, 0,
- 70, 142, 32, 128, 65, 0,
- 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 56, 0,
- 0, 7, 114, 0, 16, 0,
- 0, 0, 0, 0, 246, 15,
- 16, 0, 0, 0, 0, 0,
- 70, 2, 16, 0, 0, 0,
- 0, 0, 56, 0, 0, 8,
- 242, 0, 16, 0, 1, 0,
- 0, 0, 86, 5, 16, 0,
- 0, 0, 0, 0, 70, 142,
- 32, 0, 2, 0, 0, 0,
- 1, 0, 0, 0, 50, 0,
- 0, 10, 242, 0, 16, 0,
- 1, 0, 0, 0, 70, 142,
- 32, 0, 2, 0, 0, 0,
- 0, 0, 0, 0, 6, 0,
- 16, 0, 0, 0, 0, 0,
- 70, 14, 16, 0, 1, 0,
- 0, 0, 50, 0, 0, 10,
- 242, 0, 16, 0, 1, 0,
- 0, 0, 70, 142, 32, 0,
- 2, 0, 0, 0, 2, 0,
- 0, 0, 166, 10, 16, 0,
- 0, 0, 0, 0, 70, 14,
- 16, 0, 1, 0, 0, 0,
- 50, 0, 0, 10, 242, 32,
- 16, 0, 0, 0, 0, 0,
- 70, 142, 32, 0, 2, 0,
- 0, 0, 3, 0, 0, 0,
- 246, 15, 16, 0, 0, 0,
- 0, 0, 70, 14, 16, 0,
- 1, 0, 0, 0, 50, 0,
- 0, 11, 50, 32, 16, 0,
- 1, 0, 0, 0, 70, 16,
- 16, 0, 0, 0, 0, 0,
- 230, 138, 32, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 70, 128, 32, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 62, 0, 0, 1, 83, 84,
- 65, 84, 116, 0, 0, 0,
- 13, 0, 0, 0, 2, 0,
- 0, 0, 0, 0, 0, 0,
- 3, 0, 0, 0, 12, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 82, 68, 69, 70,
- 148, 2, 0, 0, 3, 0,
- 0, 0, 168, 0, 0, 0,
- 3, 0, 0, 0, 28, 0,
- 0, 0, 0, 4, 254, 255,
- 0, 1, 0, 0, 96, 2,
- 0, 0, 124, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 133, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 1, 0,
- 0, 0, 0, 0, 0, 0,
- 152, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 2, 0, 0, 0,
- 1, 0, 0, 0, 0, 0,
- 0, 0, 80, 101, 114, 76,
- 97, 121, 101, 114, 0, 80,
- 101, 114, 79, 99, 99, 97,
- 115, 105, 111, 110, 97, 108,
- 76, 97, 121, 101, 114, 0,
- 80, 101, 114, 76, 97, 121,
- 101, 114, 77, 97, 110, 97,
- 103, 101, 114, 0, 124, 0,
- 0, 0, 5, 0, 0, 0,
- 240, 0, 0, 0, 128, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 133, 0,
- 0, 0, 2, 0, 0, 0,
- 220, 1, 0, 0, 32, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 152, 0,
- 0, 0, 1, 0, 0, 0,
- 60, 2, 0, 0, 64, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 104, 1,
- 0, 0, 0, 0, 0, 0,
- 16, 0, 0, 0, 2, 0,
- 0, 0, 120, 1, 0, 0,
- 0, 0, 0, 0, 136, 1,
- 0, 0, 16, 0, 0, 0,
- 16, 0, 0, 0, 2, 0,
- 0, 0, 120, 1, 0, 0,
- 0, 0, 0, 0, 147, 1,
- 0, 0, 32, 0, 0, 0,
- 16, 0, 0, 0, 0, 0,
- 0, 0, 120, 1, 0, 0,
- 0, 0, 0, 0, 157, 1,
- 0, 0, 48, 0, 0, 0,
- 4, 0, 0, 0, 0, 0,
- 0, 0, 172, 1, 0, 0,
- 0, 0, 0, 0, 188, 1,
- 0, 0, 64, 0, 0, 0,
- 64, 0, 0, 0, 2, 0,
- 0, 0, 204, 1, 0, 0,
- 0, 0, 0, 0, 118, 84,
- 101, 120, 116, 117, 114, 101,
- 67, 111, 111, 114, 100, 115,
- 0, 171, 1, 0, 3, 0,
- 1, 0, 4, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 118, 76, 97, 121, 101, 114,
- 81, 117, 97, 100, 0, 118,
- 77, 97, 115, 107, 81, 117,
- 97, 100, 0, 102, 76, 97,
- 121, 101, 114, 79, 112, 97,
- 99, 105, 116, 121, 0, 171,
- 0, 0, 3, 0, 1, 0,
- 1, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 109, 76,
- 97, 121, 101, 114, 84, 114,
- 97, 110, 115, 102, 111, 114,
- 109, 0, 3, 0, 3, 0,
- 4, 0, 4, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 12, 2, 0, 0, 0, 0,
- 0, 0, 16, 0, 0, 0,
- 2, 0, 0, 0, 32, 2,
- 0, 0, 0, 0, 0, 0,
- 48, 2, 0, 0, 16, 0,
- 0, 0, 16, 0, 0, 0,
- 0, 0, 0, 0, 32, 2,
- 0, 0, 0, 0, 0, 0,
- 118, 82, 101, 110, 100, 101,
- 114, 84, 97, 114, 103, 101,
- 116, 79, 102, 102, 115, 101,
- 116, 0, 1, 0, 3, 0,
- 1, 0, 4, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 102, 76, 97, 121, 101, 114,
- 67, 111, 108, 111, 114, 0,
- 84, 2, 0, 0, 0, 0,
- 0, 0, 64, 0, 0, 0,
- 2, 0, 0, 0, 204, 1,
- 0, 0, 0, 0, 0, 0,
- 109, 80, 114, 111, 106, 101,
- 99, 116, 105, 111, 110, 0,
- 77, 105, 99, 114, 111, 115,
- 111, 102, 116, 32, 40, 82,
- 41, 32, 72, 76, 83, 76,
- 32, 83, 104, 97, 100, 101,
- 114, 32, 67, 111, 109, 112,
- 105, 108, 101, 114, 32, 54,
- 46, 51, 46, 57, 54, 48,
- 48, 46, 49, 54, 51, 56,
- 52, 0, 171, 171, 73, 83,
- 71, 78, 44, 0, 0, 0,
- 1, 0, 0, 0, 8, 0,
- 0, 0, 32, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 3, 0, 0, 0,
- 0, 0, 0, 0, 3, 3,
- 0, 0, 80, 79, 83, 73,
- 84, 73, 79, 78, 0, 171,
- 171, 171, 79, 83, 71, 78,
- 80, 0, 0, 0, 2, 0,
- 0, 0, 8, 0, 0, 0,
- 56, 0, 0, 0, 0, 0,
- 0, 0, 1, 0, 0, 0,
- 3, 0, 0, 0, 0, 0,
- 0, 0, 15, 0, 0, 0,
- 68, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 3, 0, 0, 0, 1, 0,
- 0, 0, 3, 12, 0, 0,
- 83, 86, 95, 80, 111, 115,
- 105, 116, 105, 111, 110, 0,
- 84, 69, 88, 67, 79, 79,
- 82, 68, 0, 171, 171, 171,
- 32, 118, 0, 0, 0, 0,
- 0, 0, 1, 0, 0, 0,
- 2, 0, 0, 0, 0, 0,
- 0, 0, 216, 2, 0, 0,
- 68, 88, 66, 67, 127, 205,
- 139, 78, 240, 148, 72, 80,
- 60, 232, 29, 175, 91, 153,
- 47, 16, 1, 0, 0, 0,
- 216, 2, 0, 0, 6, 0,
- 0, 0, 56, 0, 0, 0,
- 132, 0, 0, 0, 204, 0,
- 0, 0, 72, 1, 0, 0,
- 76, 2, 0, 0, 164, 2,
- 0, 0, 65, 111, 110, 57,
- 68, 0, 0, 0, 68, 0,
- 0, 0, 0, 2, 255, 255,
- 20, 0, 0, 0, 48, 0,
- 0, 0, 1, 0, 36, 0,
- 0, 0, 48, 0, 0, 0,
- 48, 0, 0, 0, 36, 0,
- 0, 0, 48, 0, 0, 0,
- 1, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 1, 2,
- 255, 255, 1, 0, 0, 2,
- 0, 8, 15, 128, 0, 0,
- 228, 160, 255, 255, 0, 0,
- 83, 72, 68, 82, 64, 0,
- 0, 0, 64, 0, 0, 0,
- 16, 0, 0, 0, 89, 0,
- 0, 4, 70, 142, 32, 0,
- 0, 0, 0, 0, 2, 0,
- 0, 0, 101, 0, 0, 3,
- 242, 32, 16, 0, 0, 0,
- 0, 0, 54, 0, 0, 6,
- 242, 32, 16, 0, 0, 0,
- 0, 0, 70, 142, 32, 0,
- 0, 0, 0, 0, 1, 0,
- 0, 0, 62, 0, 0, 1,
- 83, 84, 65, 84, 116, 0,
- 0, 0, 2, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 82, 68,
- 69, 70, 252, 0, 0, 0,
- 1, 0, 0, 0, 80, 0,
- 0, 0, 1, 0, 0, 0,
- 28, 0, 0, 0, 0, 4,
- 255, 255, 0, 1, 0, 0,
- 200, 0, 0, 0, 60, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 0,
- 0, 0, 0, 0, 0, 0,
- 80, 101, 114, 79, 99, 99,
- 97, 115, 105, 111, 110, 97,
- 108, 76, 97, 121, 101, 114,
- 0, 171, 60, 0, 0, 0,
- 2, 0, 0, 0, 104, 0,
- 0, 0, 32, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 152, 0, 0, 0,
- 0, 0, 0, 0, 16, 0,
- 0, 0, 0, 0, 0, 0,
- 172, 0, 0, 0, 0, 0,
- 0, 0, 188, 0, 0, 0,
- 16, 0, 0, 0, 16, 0,
- 0, 0, 2, 0, 0, 0,
- 172, 0, 0, 0, 0, 0,
- 0, 0, 118, 82, 101, 110,
- 100, 101, 114, 84, 97, 114,
- 103, 101, 116, 79, 102, 102,
- 115, 101, 116, 0, 1, 0,
- 3, 0, 1, 0, 4, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 102, 76, 97, 121,
- 101, 114, 67, 111, 108, 111,
- 114, 0, 77, 105, 99, 114,
- 111, 115, 111, 102, 116, 32,
- 40, 82, 41, 32, 72, 76,
- 83, 76, 32, 83, 104, 97,
- 100, 101, 114, 32, 67, 111,
- 109, 112, 105, 108, 101, 114,
- 32, 54, 46, 51, 46, 57,
- 54, 48, 48, 46, 49, 54,
- 51, 56, 52, 0, 171, 171,
- 73, 83, 71, 78, 80, 0,
- 0, 0, 2, 0, 0, 0,
- 8, 0, 0, 0, 56, 0,
- 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 3, 0,
- 0, 0, 0, 0, 0, 0,
- 15, 0, 0, 0, 68, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 3, 0,
- 0, 0, 1, 0, 0, 0,
- 3, 0, 0, 0, 83, 86,
- 95, 80, 111, 115, 105, 116,
- 105, 111, 110, 0, 84, 69,
- 88, 67, 79, 79, 82, 68,
- 0, 171, 171, 171, 79, 83,
- 71, 78, 44, 0, 0, 0,
- 1, 0, 0, 0, 8, 0,
- 0, 0, 32, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 3, 0, 0, 0,
- 0, 0, 0, 0, 15, 0,
- 0, 0, 83, 86, 95, 84,
- 97, 114, 103, 101, 116, 0,
- 171, 171, 192, 125, 0, 0,
- 0, 0, 0, 0, 80, 114,
- 101, 112, 97, 114, 101, 65,
- 108, 112, 104, 97, 69, 120,
- 116, 114, 97, 99, 116, 105,
- 111, 110, 84, 101, 120, 116,
- 117, 114, 101, 115, 0, 4,
- 0, 0, 0, 1, 0, 0,
- 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0,
- 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 3, 0, 0,
- 0, 255, 255, 255, 255, 136,
- 7, 0, 0, 68, 88, 66,
- 67, 134, 58, 181, 81, 234,
- 180, 23, 54, 140, 98, 159,
- 162, 74, 150, 11, 172, 1,
- 0, 0, 0, 136, 7, 0,
- 0, 6, 0, 0, 0, 56,
- 0, 0, 0, 188, 1, 0,
- 0, 228, 3, 0, 0, 96,
- 4, 0, 0, 252, 6, 0,
- 0, 48, 7, 0, 0, 65,
- 111, 110, 57, 124, 1, 0,
- 0, 124, 1, 0, 0, 0,
- 2, 254, 255, 24, 1, 0,
- 0, 100, 0, 0, 0, 5,
- 0, 36, 0, 0, 0, 96,
- 0, 0, 0, 96, 0, 0,
- 0, 36, 0, 1, 0, 96,
- 0, 0, 0, 0, 0, 2,
- 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 4, 0, 2,
- 0, 3, 0, 0, 0, 0,
- 0, 0, 0, 7, 0, 1,
- 0, 5, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 1,
- 0, 6, 0, 0, 0, 0,
- 0, 2, 0, 0, 0, 4,
- 0, 7, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1,
- 2, 254, 255, 31, 0, 0,
- 2, 5, 0, 0, 128, 0,
- 0, 15, 144, 4, 0, 0,
- 4, 0, 0, 3, 224, 0,
- 0, 228, 144, 1, 0, 238,
- 160, 1, 0, 228, 160, 4,
- 0, 0, 4, 0, 0, 3,
- 128, 0, 0, 228, 144, 2,
- 0, 238, 160, 2, 0, 228,
- 160, 5, 0, 0, 3, 1,
- 0, 15, 128, 0, 0, 85,
- 128, 4, 0, 228, 160, 4,
- 0, 0, 4, 0, 0, 15,
- 128, 3, 0, 228, 160, 0,
- 0, 0, 128, 1, 0, 228,
- 128, 2, 0, 0, 3, 0,
- 0, 15, 128, 0, 0, 228,
- 128, 5, 0, 228, 160, 6,
- 0, 0, 2, 1, 0, 1,
- 128, 0, 0, 255, 128, 5,
- 0, 0, 3, 0, 0, 7,
- 128, 0, 0, 228, 128, 1,
- 0, 0, 128, 2, 0, 0,
- 3, 0, 0, 15, 128, 0,
- 0, 228, 128, 6, 0, 228,
- 161, 5, 0, 0, 3, 0,
- 0, 7, 128, 0, 0, 255,
- 128, 0, 0, 228, 128, 5,
- 0, 0, 3, 1, 0, 15,
- 128, 0, 0, 85, 128, 8,
- 0, 228, 160, 4, 0, 0,
- 4, 1, 0, 15, 128, 7,
- 0, 228, 160, 0, 0, 0,
- 128, 1, 0, 228, 128, 4,
- 0, 0, 4, 1, 0, 15,
- 128, 9, 0, 228, 160, 0,
- 0, 170, 128, 1, 0, 228,
- 128, 4, 0, 0, 4, 0,
- 0, 15, 128, 10, 0, 228,
- 160, 0, 0, 255, 128, 1,
- 0, 228, 128, 4, 0, 0,
- 4, 0, 0, 3, 192, 0,
- 0, 255, 128, 0, 0, 228,
- 160, 0, 0, 228, 128, 1,
- 0, 0, 2, 0, 0, 12,
- 192, 0, 0, 228, 128, 255,
- 255, 0, 0, 83, 72, 68,
- 82, 32, 2, 0, 0, 64,
- 0, 1, 0, 136, 0, 0,
- 0, 89, 0, 0, 4, 70,
- 142, 32, 0, 0, 0, 0,
- 0, 8, 0, 0, 0, 89,
- 0, 0, 4, 70, 142, 32,
- 0, 1, 0, 0, 0, 1,
- 0, 0, 0, 89, 0, 0,
- 4, 70, 142, 32, 0, 2,
- 0, 0, 0, 4, 0, 0,
- 0, 95, 0, 0, 3, 50,
- 16, 16, 0, 0, 0, 0,
- 0, 103, 0, 0, 4, 242,
- 32, 16, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 101,
- 0, 0, 3, 50, 32, 16,
- 0, 1, 0, 0, 0, 104,
- 0, 0, 2, 2, 0, 0,
- 0, 50, 0, 0, 11, 50,
- 0, 16, 0, 0, 0, 0,
- 0, 70, 16, 16, 0, 0,
- 0, 0, 0, 230, 138, 32,
- 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 70, 128, 32,
- 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 56, 0, 0,
- 8, 242, 0, 16, 0, 1,
- 0, 0, 0, 86, 5, 16,
- 0, 0, 0, 0, 0, 70,
- 142, 32, 0, 0, 0, 0,
- 0, 5, 0, 0, 0, 50,
- 0, 0, 10, 242, 0, 16,
- 0, 0, 0, 0, 0, 70,
- 142, 32, 0, 0, 0, 0,
- 0, 4, 0, 0, 0, 6,
- 0, 16, 0, 0, 0, 0,
- 0, 70, 14, 16, 0, 1,
- 0, 0, 0, 0, 0, 0,
- 8, 242, 0, 16, 0, 0,
- 0, 0, 0, 70, 14, 16,
- 0, 0, 0, 0, 0, 70,
- 142, 32, 0, 0, 0, 0,
- 0, 7, 0, 0, 0, 14,
- 0, 0, 7, 114, 0, 16,
- 0, 0, 0, 0, 0, 70,
- 2, 16, 0, 0, 0, 0,
- 0, 246, 15, 16, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 9, 242, 0, 16, 0, 0,
- 0, 0, 0, 70, 14, 16,
- 0, 0, 0, 0, 0, 70,
- 142, 32, 128, 65, 0, 0,
- 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 56, 0, 0,
- 7, 114, 0, 16, 0, 0,
- 0, 0, 0, 246, 15, 16,
- 0, 0, 0, 0, 0, 70,
- 2, 16, 0, 0, 0, 0,
- 0, 56, 0, 0, 8, 242,
- 0, 16, 0, 1, 0, 0,
- 0, 86, 5, 16, 0, 0,
- 0, 0, 0, 70, 142, 32,
- 0, 2, 0, 0, 0, 1,
- 0, 0, 0, 50, 0, 0,
- 10, 242, 0, 16, 0, 1,
- 0, 0, 0, 70, 142, 32,
- 0, 2, 0, 0, 0, 0,
- 0, 0, 0, 6, 0, 16,
- 0, 0, 0, 0, 0, 70,
- 14, 16, 0, 1, 0, 0,
- 0, 50, 0, 0, 10, 242,
- 0, 16, 0, 1, 0, 0,
- 0, 70, 142, 32, 0, 2,
- 0, 0, 0, 2, 0, 0,
- 0, 166, 10, 16, 0, 0,
- 0, 0, 0, 70, 14, 16,
- 0, 1, 0, 0, 0, 50,
- 0, 0, 10, 242, 32, 16,
- 0, 0, 0, 0, 0, 70,
- 142, 32, 0, 2, 0, 0,
- 0, 3, 0, 0, 0, 246,
- 15, 16, 0, 0, 0, 0,
- 0, 70, 14, 16, 0, 1,
- 0, 0, 0, 50, 0, 0,
- 11, 50, 32, 16, 0, 1,
- 0, 0, 0, 70, 16, 16,
- 0, 0, 0, 0, 0, 230,
- 138, 32, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 70,
- 128, 32, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 62,
- 0, 0, 1, 83, 84, 65,
- 84, 116, 0, 0, 0, 13,
- 0, 0, 0, 2, 0, 0,
- 0, 0, 0, 0, 0, 3,
- 0, 0, 0, 12, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 82, 68, 69, 70, 148,
- 2, 0, 0, 3, 0, 0,
- 0, 168, 0, 0, 0, 3,
- 0, 0, 0, 28, 0, 0,
- 0, 0, 4, 254, 255, 0,
- 1, 0, 0, 96, 2, 0,
- 0, 124, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 133, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 1, 0, 0,
- 0, 0, 0, 0, 0, 152,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 2, 0, 0, 0, 1,
- 0, 0, 0, 0, 0, 0,
- 0, 80, 101, 114, 76, 97,
- 121, 101, 114, 0, 80, 101,
- 114, 79, 99, 99, 97, 115,
- 105, 111, 110, 97, 108, 76,
- 97, 121, 101, 114, 0, 80,
- 101, 114, 76, 97, 121, 101,
- 114, 77, 97, 110, 97, 103,
- 101, 114, 0, 124, 0, 0,
- 0, 5, 0, 0, 0, 240,
- 0, 0, 0, 128, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 133, 0, 0,
- 0, 2, 0, 0, 0, 220,
- 1, 0, 0, 32, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 152, 0, 0,
- 0, 1, 0, 0, 0, 60,
- 2, 0, 0, 64, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 104, 1, 0,
- 0, 0, 0, 0, 0, 16,
- 0, 0, 0, 2, 0, 0,
- 0, 120, 1, 0, 0, 0,
- 0, 0, 0, 136, 1, 0,
- 0, 16, 0, 0, 0, 16,
- 0, 0, 0, 2, 0, 0,
- 0, 120, 1, 0, 0, 0,
- 0, 0, 0, 147, 1, 0,
- 0, 32, 0, 0, 0, 16,
- 0, 0, 0, 0, 0, 0,
- 0, 120, 1, 0, 0, 0,
- 0, 0, 0, 157, 1, 0,
- 0, 48, 0, 0, 0, 4,
- 0, 0, 0, 0, 0, 0,
- 0, 172, 1, 0, 0, 0,
- 0, 0, 0, 188, 1, 0,
- 0, 64, 0, 0, 0, 64,
- 0, 0, 0, 2, 0, 0,
- 0, 204, 1, 0, 0, 0,
- 0, 0, 0, 118, 84, 101,
- 120, 116, 117, 114, 101, 67,
- 111, 111, 114, 100, 115, 0,
- 171, 1, 0, 3, 0, 1,
- 0, 4, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 118,
- 76, 97, 121, 101, 114, 81,
- 117, 97, 100, 0, 118, 77,
- 97, 115, 107, 81, 117, 97,
- 100, 0, 102, 76, 97, 121,
- 101, 114, 79, 112, 97, 99,
- 105, 116, 121, 0, 171, 0,
- 0, 3, 0, 1, 0, 1,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 109, 76, 97,
- 121, 101, 114, 84, 114, 97,
- 110, 115, 102, 111, 114, 109,
- 0, 3, 0, 3, 0, 4,
- 0, 4, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 12,
- 2, 0, 0, 0, 0, 0,
- 0, 16, 0, 0, 0, 2,
- 0, 0, 0, 32, 2, 0,
- 0, 0, 0, 0, 0, 48,
- 2, 0, 0, 16, 0, 0,
- 0, 16, 0, 0, 0, 0,
- 0, 0, 0, 32, 2, 0,
- 0, 0, 0, 0, 0, 118,
- 82, 101, 110, 100, 101, 114,
- 84, 97, 114, 103, 101, 116,
- 79, 102, 102, 115, 101, 116,
- 0, 1, 0, 3, 0, 1,
- 0, 4, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 102,
- 76, 97, 121, 101, 114, 67,
- 111, 108, 111, 114, 0, 84,
- 2, 0, 0, 0, 0, 0,
- 0, 64, 0, 0, 0, 2,
- 0, 0, 0, 204, 1, 0,
- 0, 0, 0, 0, 0, 109,
- 80, 114, 111, 106, 101, 99,
- 116, 105, 111, 110, 0, 77,
- 105, 99, 114, 111, 115, 111,
- 102, 116, 32, 40, 82, 41,
- 32, 72, 76, 83, 76, 32,
- 83, 104, 97, 100, 101, 114,
- 32, 67, 111, 109, 112, 105,
- 108, 101, 114, 32, 54, 46,
- 51, 46, 57, 54, 48, 48,
- 46, 49, 54, 51, 56, 52,
- 0, 171, 171, 73, 83, 71,
- 78, 44, 0, 0, 0, 1,
- 0, 0, 0, 8, 0, 0,
- 0, 32, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 3, 0, 0, 0, 0,
- 0, 0, 0, 3, 3, 0,
- 0, 80, 79, 83, 73, 84,
- 73, 79, 78, 0, 171, 171,
- 171, 79, 83, 71, 78, 80,
- 0, 0, 0, 2, 0, 0,
- 0, 8, 0, 0, 0, 56,
- 0, 0, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 3,
- 0, 0, 0, 0, 0, 0,
- 0, 15, 0, 0, 0, 68,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 3,
- 0, 0, 0, 1, 0, 0,
- 0, 3, 12, 0, 0, 83,
- 86, 95, 80, 111, 115, 105,
- 116, 105, 111, 110, 0, 84,
- 69, 88, 67, 79, 79, 82,
- 68, 0, 171, 171, 171, 243,
- 128, 0, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 2,
- 0, 0, 0, 0, 0, 0,
- 0, 140, 2, 0, 0, 68,
- 88, 66, 67, 242, 13, 26,
- 125, 185, 83, 251, 62, 147,
- 219, 54, 247, 94, 94, 245,
- 124, 1, 0, 0, 0, 140,
- 2, 0, 0, 6, 0, 0,
- 0, 56, 0, 0, 0, 168,
- 0, 0, 0, 20, 1, 0,
- 0, 144, 1, 0, 0, 232,
- 1, 0, 0, 64, 2, 0,
- 0, 65, 111, 110, 57, 104,
- 0, 0, 0, 104, 0, 0,
- 0, 0, 2, 255, 255, 68,
- 0, 0, 0, 36, 0, 0,
- 0, 0, 0, 36, 0, 0,
- 0, 36, 0, 0, 0, 36,
- 0, 0, 0, 36, 0, 0,
- 0, 36, 0, 1, 2, 255,
- 255, 81, 0, 0, 5, 0,
- 0, 15, 160, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 128,
- 63, 1, 0, 0, 2, 0,
- 8, 15, 128, 0, 0, 228,
- 160, 1, 0, 0, 2, 0,
- 0, 15, 128, 0, 0, 255,
- 160, 1, 0, 0, 2, 1,
- 8, 15, 128, 0, 0, 228,
- 128, 255, 255, 0, 0, 83,
- 72, 68, 82, 100, 0, 0,
- 0, 64, 0, 0, 0, 25,
- 0, 0, 0, 101, 0, 0,
- 3, 242, 32, 16, 0, 0,
- 0, 0, 0, 101, 0, 0,
- 3, 242, 32, 16, 0, 1,
- 0, 0, 0, 54, 0, 0,
- 8, 242, 32, 16, 0, 0,
- 0, 0, 0, 2, 64, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 128, 63, 54,
- 0, 0, 8, 242, 32, 16,
- 0, 1, 0, 0, 0, 2,
- 64, 0, 0, 0, 0, 128,
- 63, 0, 0, 128, 63, 0,
- 0, 128, 63, 0, 0, 128,
- 63, 62, 0, 0, 1, 83,
- 84, 65, 84, 116, 0, 0,
- 0, 3, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 2, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 2,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 82, 68, 69,
- 70, 80, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 28,
- 0, 0, 0, 0, 4, 255,
- 255, 0, 1, 0, 0, 28,
- 0, 0, 0, 77, 105, 99,
- 114, 111, 115, 111, 102, 116,
- 32, 40, 82, 41, 32, 72,
- 76, 83, 76, 32, 83, 104,
- 97, 100, 101, 114, 32, 67,
- 111, 109, 112, 105, 108, 101,
- 114, 32, 54, 46, 51, 46,
- 57, 54, 48, 48, 46, 49,
- 54, 51, 56, 52, 0, 171,
- 171, 73, 83, 71, 78, 80,
- 0, 0, 0, 2, 0, 0,
- 0, 8, 0, 0, 0, 56,
- 0, 0, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 3,
- 0, 0, 0, 0, 0, 0,
- 0, 15, 0, 0, 0, 68,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 3,
- 0, 0, 0, 1, 0, 0,
- 0, 3, 0, 0, 0, 83,
- 86, 95, 80, 111, 115, 105,
- 116, 105, 111, 110, 0, 84,
- 69, 88, 67, 79, 79, 82,
- 68, 0, 171, 171, 171, 79,
- 83, 71, 78, 68, 0, 0,
- 0, 2, 0, 0, 0, 8,
- 0, 0, 0, 56, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0,
- 0, 0, 0, 0, 0, 15,
- 0, 0, 0, 56, 0, 0,
- 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0,
- 0, 1, 0, 0, 0, 15,
- 0, 0, 0, 83, 86, 95,
- 84, 97, 114, 103, 101, 116,
- 0, 171, 171, 147, 136, 0,
- 0, 0, 0, 0, 0, 82,
- 101, 110, 100, 101, 114, 82,
- 71, 66, 76, 97, 121, 101,
- 114, 80, 114, 101, 109, 117,
- 108, 77, 97, 115, 107, 0,
- 4, 0, 0, 0, 1, 0,
- 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 0, 0,
- 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 1, 0,
- 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 3, 0,
- 0, 0, 255, 255, 255, 255,
- 76, 8, 0, 0, 68, 88,
- 66, 67, 190, 117, 181, 57,
- 187, 108, 178, 85, 11, 114,
- 197, 104, 54, 155, 141, 115,
- 1, 0, 0, 0, 76, 8,
- 0, 0, 6, 0, 0, 0,
- 56, 0, 0, 0, 4, 2,
- 0, 0, 144, 4, 0, 0,
- 12, 5, 0, 0, 168, 7,
- 0, 0, 220, 7, 0, 0,
- 65, 111, 110, 57, 196, 1,
- 0, 0, 196, 1, 0, 0,
- 0, 2, 254, 255, 96, 1,
- 0, 0, 100, 0, 0, 0,
- 5, 0, 36, 0, 0, 0,
- 96, 0, 0, 0, 96, 0,
- 0, 0, 36, 0, 1, 0,
- 96, 0, 0, 0, 0, 0,
- 3, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 4, 0,
- 2, 0, 4, 0, 0, 0,
- 0, 0, 0, 0, 7, 0,
- 1, 0, 6, 0, 0, 0,
- 0, 0, 1, 0, 0, 0,
- 1, 0, 7, 0, 0, 0,
- 0, 0, 2, 0, 0, 0,
- 4, 0, 8, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 1, 2, 254, 255, 31, 0,
- 0, 2, 5, 0, 0, 128,
- 0, 0, 15, 144, 6, 0,
- 0, 2, 0, 0, 1, 128,
- 3, 0, 170, 160, 4, 0,
- 0, 4, 0, 0, 6, 128,
- 0, 0, 208, 144, 2, 0,
- 248, 160, 2, 0, 208, 160,
- 5, 0, 0, 3, 1, 0,
- 15, 128, 0, 0, 170, 128,
- 5, 0, 228, 160, 4, 0,
- 0, 4, 1, 0, 15, 128,
- 4, 0, 228, 160, 0, 0,
- 85, 128, 1, 0, 228, 128,
- 2, 0, 0, 3, 1, 0,
- 15, 128, 1, 0, 228, 128,
- 6, 0, 228, 160, 2, 0,
- 0, 3, 0, 0, 6, 128,
- 1, 0, 208, 128, 3, 0,
- 208, 161, 5, 0, 0, 3,
- 0, 0, 8, 224, 0, 0,
- 0, 128, 0, 0, 85, 128,
- 6, 0, 0, 2, 0, 0,
- 1, 128, 3, 0, 255, 160,
- 5, 0, 0, 3, 0, 0,
- 4, 224, 0, 0, 0, 128,
- 0, 0, 170, 128, 4, 0,
- 0, 4, 0, 0, 3, 224,
- 0, 0, 228, 144, 1, 0,
- 238, 160, 1, 0, 228, 160,
- 6, 0, 0, 2, 0, 0,
- 1, 128, 1, 0, 255, 128,
- 5, 0, 0, 3, 1, 0,
- 7, 128, 0, 0, 0, 128,
- 1, 0, 228, 128, 2, 0,
- 0, 3, 0, 0, 15, 128,
- 1, 0, 228, 128, 7, 0,
- 228, 161, 5, 0, 0, 3,
- 0, 0, 7, 128, 0, 0,
- 255, 128, 0, 0, 228, 128,
- 5, 0, 0, 3, 1, 0,
- 15, 128, 0, 0, 85, 128,
- 9, 0, 228, 160, 4, 0,
- 0, 4, 1, 0, 15, 128,
- 8, 0, 228, 160, 0, 0,
- 0, 128, 1, 0, 228, 128,
- 4, 0, 0, 4, 1, 0,
- 15, 128, 10, 0, 228, 160,
- 0, 0, 170, 128, 1, 0,
- 228, 128, 4, 0, 0, 4,
- 0, 0, 15, 128, 11, 0,
- 228, 160, 0, 0, 255, 128,
- 1, 0, 228, 128, 4, 0,
- 0, 4, 0, 0, 3, 192,
- 0, 0, 255, 128, 0, 0,
- 228, 160, 0, 0, 228, 128,
- 1, 0, 0, 2, 0, 0,
- 12, 192, 0, 0, 228, 128,
- 255, 255, 0, 0, 83, 72,
- 68, 82, 132, 2, 0, 0,
- 64, 0, 1, 0, 161, 0,
- 0, 0, 89, 0, 0, 4,
- 70, 142, 32, 0, 0, 0,
- 0, 0, 8, 0, 0, 0,
- 89, 0, 0, 4, 70, 142,
- 32, 0, 1, 0, 0, 0,
- 1, 0, 0, 0, 89, 0,
- 0, 4, 70, 142, 32, 0,
- 2, 0, 0, 0, 4, 0,
- 0, 0, 95, 0, 0, 3,
- 50, 16, 16, 0, 0, 0,
- 0, 0, 103, 0, 0, 4,
- 242, 32, 16, 0, 0, 0,
- 0, 0, 1, 0, 0, 0,
- 101, 0, 0, 3, 50, 32,
- 16, 0, 1, 0, 0, 0,
- 101, 0, 0, 3, 194, 32,
- 16, 0, 1, 0, 0, 0,
- 104, 0, 0, 2, 2, 0,
- 0, 0, 50, 0, 0, 11,
- 50, 0, 16, 0, 0, 0,
- 0, 0, 70, 16, 16, 0,
- 0, 0, 0, 0, 230, 138,
- 32, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 70, 128,
- 32, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 56, 0,
- 0, 8, 242, 0, 16, 0,
- 1, 0, 0, 0, 86, 5,
- 16, 0, 0, 0, 0, 0,
- 70, 142, 32, 0, 0, 0,
- 0, 0, 5, 0, 0, 0,
- 50, 0, 0, 10, 242, 0,
- 16, 0, 0, 0, 0, 0,
- 70, 142, 32, 0, 0, 0,
- 0, 0, 4, 0, 0, 0,
- 6, 0, 16, 0, 0, 0,
- 0, 0, 70, 14, 16, 0,
- 1, 0, 0, 0, 0, 0,
- 0, 8, 242, 0, 16, 0,
- 0, 0, 0, 0, 70, 14,
- 16, 0, 0, 0, 0, 0,
- 70, 142, 32, 0, 0, 0,
- 0, 0, 7, 0, 0, 0,
- 14, 0, 0, 7, 114, 0,
- 16, 0, 1, 0, 0, 0,
- 70, 2, 16, 0, 0, 0,
- 0, 0, 246, 15, 16, 0,
- 0, 0, 0, 0, 54, 0,
- 0, 5, 130, 0, 16, 0,
- 1, 0, 0, 0, 58, 0,
- 16, 0, 0, 0, 0, 0,
- 0, 0, 0, 9, 50, 0,
- 16, 0, 0, 0, 0, 0,
- 70, 0, 16, 0, 0, 0,
- 0, 0, 70, 128, 32, 128,
- 65, 0, 0, 0, 0, 0,
- 0, 0, 2, 0, 0, 0,
- 14, 0, 0, 8, 194, 32,
- 16, 0, 1, 0, 0, 0,
- 6, 4, 16, 0, 0, 0,
- 0, 0, 166, 142, 32, 0,
- 0, 0, 0, 0, 2, 0,
- 0, 0, 0, 0, 0, 9,
- 242, 0, 16, 0, 0, 0,
- 0, 0, 70, 14, 16, 0,
- 1, 0, 0, 0, 70, 142,
- 32, 128, 65, 0, 0, 0,
- 1, 0, 0, 0, 0, 0,
- 0, 0, 56, 0, 0, 7,
- 114, 0, 16, 0, 0, 0,
- 0, 0, 246, 15, 16, 0,
- 0, 0, 0, 0, 70, 2,
- 16, 0, 0, 0, 0, 0,
- 56, 0, 0, 8, 242, 0,
- 16, 0, 1, 0, 0, 0,
- 86, 5, 16, 0, 0, 0,
- 0, 0, 70, 142, 32, 0,
- 2, 0, 0, 0, 1, 0,
- 0, 0, 50, 0, 0, 10,
- 242, 0, 16, 0, 1, 0,
- 0, 0, 70, 142, 32, 0,
- 2, 0, 0, 0, 0, 0,
- 0, 0, 6, 0, 16, 0,
- 0, 0, 0, 0, 70, 14,
- 16, 0, 1, 0, 0, 0,
- 50, 0, 0, 10, 242, 0,
- 16, 0, 1, 0, 0, 0,
- 70, 142, 32, 0, 2, 0,
- 0, 0, 2, 0, 0, 0,
- 166, 10, 16, 0, 0, 0,
- 0, 0, 70, 14, 16, 0,
- 1, 0, 0, 0, 50, 0,
- 0, 10, 242, 32, 16, 0,
- 0, 0, 0, 0, 70, 142,
- 32, 0, 2, 0, 0, 0,
- 3, 0, 0, 0, 246, 15,
- 16, 0, 0, 0, 0, 0,
- 70, 14, 16, 0, 1, 0,
- 0, 0, 50, 0, 0, 11,
- 50, 32, 16, 0, 1, 0,
- 0, 0, 70, 16, 16, 0,
- 0, 0, 0, 0, 230, 138,
- 32, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 70, 128,
- 32, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 62, 0,
- 0, 1, 83, 84, 65, 84,
- 116, 0, 0, 0, 16, 0,
- 0, 0, 2, 0, 0, 0,
- 0, 0, 0, 0, 4, 0,
- 0, 0, 14, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 82, 68, 69, 70, 148, 2,
- 0, 0, 3, 0, 0, 0,
- 168, 0, 0, 0, 3, 0,
- 0, 0, 28, 0, 0, 0,
- 0, 4, 254, 255, 0, 1,
- 0, 0, 96, 2, 0, 0,
- 124, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 0, 0,
- 0, 0, 133, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 0,
- 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 152, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 2, 0, 0, 0, 1, 0,
- 0, 0, 0, 0, 0, 0,
- 80, 101, 114, 76, 97, 121,
- 101, 114, 0, 80, 101, 114,
- 79, 99, 99, 97, 115, 105,
- 111, 110, 97, 108, 76, 97,
- 121, 101, 114, 0, 80, 101,
- 114, 76, 97, 121, 101, 114,
- 77, 97, 110, 97, 103, 101,
- 114, 0, 124, 0, 0, 0,
- 5, 0, 0, 0, 240, 0,
- 0, 0, 128, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 133, 0, 0, 0,
- 2, 0, 0, 0, 220, 1,
- 0, 0, 32, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 152, 0, 0, 0,
- 1, 0, 0, 0, 60, 2,
- 0, 0, 64, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 104, 1, 0, 0,
- 0, 0, 0, 0, 16, 0,
- 0, 0, 2, 0, 0, 0,
- 120, 1, 0, 0, 0, 0,
- 0, 0, 136, 1, 0, 0,
- 16, 0, 0, 0, 16, 0,
- 0, 0, 2, 0, 0, 0,
- 120, 1, 0, 0, 0, 0,
- 0, 0, 147, 1, 0, 0,
- 32, 0, 0, 0, 16, 0,
- 0, 0, 2, 0, 0, 0,
- 120, 1, 0, 0, 0, 0,
- 0, 0, 157, 1, 0, 0,
- 48, 0, 0, 0, 4, 0,
- 0, 0, 0, 0, 0, 0,
- 172, 1, 0, 0, 0, 0,
- 0, 0, 188, 1, 0, 0,
- 64, 0, 0, 0, 64, 0,
- 0, 0, 2, 0, 0, 0,
- 204, 1, 0, 0, 0, 0,
- 0, 0, 118, 84, 101, 120,
- 116, 117, 114, 101, 67, 111,
- 111, 114, 100, 115, 0, 171,
- 1, 0, 3, 0, 1, 0,
- 4, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 118, 76,
- 97, 121, 101, 114, 81, 117,
- 97, 100, 0, 118, 77, 97,
- 115, 107, 81, 117, 97, 100,
- 0, 102, 76, 97, 121, 101,
- 114, 79, 112, 97, 99, 105,
- 116, 121, 0, 171, 0, 0,
- 3, 0, 1, 0, 1, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 109, 76, 97, 121,
- 101, 114, 84, 114, 97, 110,
- 115, 102, 111, 114, 109, 0,
- 3, 0, 3, 0, 4, 0,
- 4, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 12, 2,
- 0, 0, 0, 0, 0, 0,
- 16, 0, 0, 0, 2, 0,
- 0, 0, 32, 2, 0, 0,
- 0, 0, 0, 0, 48, 2,
- 0, 0, 16, 0, 0, 0,
- 16, 0, 0, 0, 0, 0,
- 0, 0, 32, 2, 0, 0,
- 0, 0, 0, 0, 118, 82,
- 101, 110, 100, 101, 114, 84,
- 97, 114, 103, 101, 116, 79,
- 102, 102, 115, 101, 116, 0,
- 1, 0, 3, 0, 1, 0,
- 4, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 102, 76,
- 97, 121, 101, 114, 67, 111,
- 108, 111, 114, 0, 84, 2,
- 0, 0, 0, 0, 0, 0,
- 64, 0, 0, 0, 2, 0,
- 0, 0, 204, 1, 0, 0,
- 0, 0, 0, 0, 109, 80,
- 114, 111, 106, 101, 99, 116,
- 105, 111, 110, 0, 77, 105,
- 99, 114, 111, 115, 111, 102,
- 116, 32, 40, 82, 41, 32,
- 72, 76, 83, 76, 32, 83,
- 104, 97, 100, 101, 114, 32,
- 67, 111, 109, 112, 105, 108,
- 101, 114, 32, 54, 46, 51,
- 46, 57, 54, 48, 48, 46,
- 49, 54, 51, 56, 52, 0,
- 171, 171, 73, 83, 71, 78,
- 44, 0, 0, 0, 1, 0,
- 0, 0, 8, 0, 0, 0,
- 32, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 3, 0, 0, 0, 0, 0,
- 0, 0, 3, 3, 0, 0,
- 80, 79, 83, 73, 84, 73,
- 79, 78, 0, 171, 171, 171,
- 79, 83, 71, 78, 104, 0,
- 0, 0, 3, 0, 0, 0,
- 8, 0, 0, 0, 80, 0,
- 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 3, 0,
- 0, 0, 0, 0, 0, 0,
- 15, 0, 0, 0, 92, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 3, 0,
- 0, 0, 1, 0, 0, 0,
- 3, 12, 0, 0, 92, 0,
- 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 3, 0,
- 0, 0, 1, 0, 0, 0,
- 12, 3, 0, 0, 83, 86,
- 95, 80, 111, 115, 105, 116,
- 105, 111, 110, 0, 84, 69,
- 88, 67, 79, 79, 82, 68,
- 0, 171, 171, 171, 116, 139,
- 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 2, 0,
- 0, 0, 0, 0, 0, 0,
- 76, 5, 0, 0, 68, 88,
- 66, 67, 130, 78, 41, 193,
- 98, 190, 236, 116, 206, 211,
- 190, 246, 52, 93, 124, 137,
- 1, 0, 0, 0, 76, 5,
- 0, 0, 6, 0, 0, 0,
- 56, 0, 0, 0, 8, 1,
- 0, 0, 32, 2, 0, 0,
- 156, 2, 0, 0, 168, 4,
- 0, 0, 24, 5, 0, 0,
- 65, 111, 110, 57, 200, 0,
- 0, 0, 200, 0, 0, 0,
- 0, 2, 255, 255, 144, 0,
- 0, 0, 56, 0, 0, 0,
- 1, 0, 44, 0, 0, 0,
- 56, 0, 0, 0, 56, 0,
- 2, 0, 36, 0, 0, 0,
- 56, 0, 0, 0, 0, 0,
- 1, 0, 1, 0, 0, 0,
- 3, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 1, 2,
- 255, 255, 31, 0, 0, 2,
- 0, 0, 0, 128, 0, 0,
- 15, 176, 31, 0, 0, 2,
- 0, 0, 0, 144, 0, 8,
- 15, 160, 31, 0, 0, 2,
- 0, 0, 0, 144, 1, 8,
- 15, 160, 1, 0, 0, 2,
- 0, 0, 3, 128, 0, 0,
- 235, 176, 66, 0, 0, 3,
- 1, 0, 15, 128, 0, 0,
- 228, 176, 0, 8, 228, 160,
- 66, 0, 0, 3, 0, 0,
- 15, 128, 0, 0, 228, 128,
- 1, 8, 228, 160, 5, 0,
- 0, 3, 1, 0, 7, 128,
- 1, 0, 228, 128, 0, 0,
- 0, 160, 1, 0, 0, 2,
- 1, 0, 8, 128, 0, 0,
- 0, 160, 5, 0, 0, 3,
- 0, 0, 15, 128, 0, 0,
- 255, 128, 1, 0, 228, 128,
- 1, 0, 0, 2, 0, 8,
- 15, 128, 0, 0, 228, 128,
- 255, 255, 0, 0, 83, 72,
- 68, 82, 16, 1, 0, 0,
- 64, 0, 0, 0, 68, 0,
- 0, 0, 89, 0, 0, 4,
- 70, 142, 32, 0, 0, 0,
- 0, 0, 4, 0, 0, 0,
- 90, 0, 0, 3, 0, 96,
- 16, 0, 0, 0, 0, 0,
- 88, 24, 0, 4, 0, 112,
- 16, 0, 0, 0, 0, 0,
- 85, 85, 0, 0, 88, 24,
- 0, 4, 0, 112, 16, 0,
- 1, 0, 0, 0, 85, 85,
- 0, 0, 98, 16, 0, 3,
- 50, 16, 16, 0, 1, 0,
- 0, 0, 98, 16, 0, 3,
- 194, 16, 16, 0, 1, 0,
- 0, 0, 101, 0, 0, 3,
- 242, 32, 16, 0, 0, 0,
- 0, 0, 104, 0, 0, 2,
- 2, 0, 0, 0, 69, 0,
- 0, 9, 242, 0, 16, 0,
- 0, 0, 0, 0, 70, 16,
- 16, 0, 1, 0, 0, 0,
- 70, 126, 16, 0, 0, 0,
- 0, 0, 0, 96, 16, 0,
- 0, 0, 0, 0, 56, 0,
- 0, 8, 114, 0, 16, 0,
- 0, 0, 0, 0, 70, 2,
- 16, 0, 0, 0, 0, 0,
- 6, 128, 32, 0, 0, 0,
- 0, 0, 3, 0, 0, 0,
- 69, 0, 0, 9, 242, 0,
- 16, 0, 1, 0, 0, 0,
- 230, 26, 16, 0, 1, 0,
- 0, 0, 70, 126, 16, 0,
- 1, 0, 0, 0, 0, 96,
- 16, 0, 0, 0, 0, 0,
- 54, 0, 0, 6, 130, 0,
- 16, 0, 0, 0, 0, 0,
- 10, 128, 32, 0, 0, 0,
- 0, 0, 3, 0, 0, 0,
- 56, 0, 0, 7, 242, 32,
- 16, 0, 0, 0, 0, 0,
- 70, 14, 16, 0, 0, 0,
- 0, 0, 246, 15, 16, 0,
- 1, 0, 0, 0, 62, 0,
- 0, 1, 83, 84, 65, 84,
- 116, 0, 0, 0, 6, 0,
- 0, 0, 2, 0, 0, 0,
- 0, 0, 0, 0, 3, 0,
- 0, 0, 2, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 2, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 82, 68, 69, 70, 4, 2,
- 0, 0, 1, 0, 0, 0,
- 204, 0, 0, 0, 4, 0,
- 0, 0, 28, 0, 0, 0,
- 0, 4, 255, 255, 0, 1,
- 0, 0, 208, 1, 0, 0,
- 156, 0, 0, 0, 3, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 0, 0,
- 0, 0, 182, 0, 0, 0,
- 2, 0, 0, 0, 5, 0,
- 0, 0, 4, 0, 0, 0,
- 255, 255, 255, 255, 0, 0,
- 0, 0, 1, 0, 0, 0,
- 12, 0, 0, 0, 187, 0,
- 0, 0, 2, 0, 0, 0,
- 5, 0, 0, 0, 4, 0,
- 0, 0, 255, 255, 255, 255,
- 1, 0, 0, 0, 1, 0,
- 0, 0, 12, 0, 0, 0,
- 193, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 0, 0,
- 0, 0, 76, 97, 121, 101,
- 114, 84, 101, 120, 116, 117,
- 114, 101, 83, 97, 109, 112,
- 108, 101, 114, 76, 105, 110,
- 101, 97, 114, 0, 116, 82,
- 71, 66, 0, 116, 77, 97,
- 115, 107, 0, 80, 101, 114,
- 76, 97, 121, 101, 114, 0,
- 171, 171, 193, 0, 0, 0,
- 5, 0, 0, 0, 228, 0,
- 0, 0, 128, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 92, 1, 0, 0,
- 0, 0, 0, 0, 16, 0,
- 0, 0, 0, 0, 0, 0,
- 108, 1, 0, 0, 0, 0,
- 0, 0, 124, 1, 0, 0,
- 16, 0, 0, 0, 16, 0,
- 0, 0, 0, 0, 0, 0,
- 108, 1, 0, 0, 0, 0,
- 0, 0, 135, 1, 0, 0,
- 32, 0, 0, 0, 16, 0,
- 0, 0, 0, 0, 0, 0,
- 108, 1, 0, 0, 0, 0,
- 0, 0, 145, 1, 0, 0,
- 48, 0, 0, 0, 4, 0,
- 0, 0, 2, 0, 0, 0,
- 160, 1, 0, 0, 0, 0,
- 0, 0, 176, 1, 0, 0,
- 64, 0, 0, 0, 64, 0,
- 0, 0, 0, 0, 0, 0,
- 192, 1, 0, 0, 0, 0,
- 0, 0, 118, 84, 101, 120,
- 116, 117, 114, 101, 67, 111,
- 111, 114, 100, 115, 0, 171,
- 1, 0, 3, 0, 1, 0,
- 4, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 118, 76,
- 97, 121, 101, 114, 81, 117,
- 97, 100, 0, 118, 77, 97,
- 115, 107, 81, 117, 97, 100,
- 0, 102, 76, 97, 121, 101,
- 114, 79, 112, 97, 99, 105,
- 116, 121, 0, 171, 0, 0,
- 3, 0, 1, 0, 1, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 109, 76, 97, 121,
- 101, 114, 84, 114, 97, 110,
- 115, 102, 111, 114, 109, 0,
- 3, 0, 3, 0, 4, 0,
- 4, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 77, 105,
- 99, 114, 111, 115, 111, 102,
- 116, 32, 40, 82, 41, 32,
- 72, 76, 83, 76, 32, 83,
- 104, 97, 100, 101, 114, 32,
- 67, 111, 109, 112, 105, 108,
- 101, 114, 32, 54, 46, 51,
- 46, 57, 54, 48, 48, 46,
- 49, 54, 51, 56, 52, 0,
- 171, 171, 73, 83, 71, 78,
- 104, 0, 0, 0, 3, 0,
- 0, 0, 8, 0, 0, 0,
- 80, 0, 0, 0, 0, 0,
- 0, 0, 1, 0, 0, 0,
- 3, 0, 0, 0, 0, 0,
- 0, 0, 15, 0, 0, 0,
- 92, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 3, 0, 0, 0, 1, 0,
- 0, 0, 3, 3, 0, 0,
- 92, 0, 0, 0, 1, 0,
- 0, 0, 0, 0, 0, 0,
- 3, 0, 0, 0, 1, 0,
- 0, 0, 12, 12, 0, 0,
- 83, 86, 95, 80, 111, 115,
- 105, 116, 105, 111, 110, 0,
- 84, 69, 88, 67, 79, 79,
- 82, 68, 0, 171, 171, 171,
- 79, 83, 71, 78, 44, 0,
- 0, 0, 1, 0, 0, 0,
- 8, 0, 0, 0, 32, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 3, 0,
- 0, 0, 0, 0, 0, 0,
- 15, 0, 0, 0, 83, 86,
- 95, 84, 97, 114, 103, 101,
- 116, 0, 171, 171, 216, 147,
- 0, 0, 0, 0, 0, 0,
- 82, 101, 110, 100, 101, 114,
- 82, 71, 66, 76, 97, 121,
- 101, 114, 80, 114, 101, 109,
- 117, 108, 80, 111, 105, 110,
- 116, 77, 97, 115, 107, 0,
- 4, 0, 0, 0, 1, 0,
- 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 0, 0,
- 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 1, 0,
- 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 3, 0,
- 0, 0, 255, 255, 255, 255,
- 76, 8, 0, 0, 68, 88,
- 66, 67, 190, 117, 181, 57,
- 187, 108, 178, 85, 11, 114,
- 197, 104, 54, 155, 141, 115,
- 1, 0, 0, 0, 76, 8,
- 0, 0, 6, 0, 0, 0,
- 56, 0, 0, 0, 4, 2,
- 0, 0, 144, 4, 0, 0,
- 12, 5, 0, 0, 168, 7,
- 0, 0, 220, 7, 0, 0,
- 65, 111, 110, 57, 196, 1,
- 0, 0, 196, 1, 0, 0,
- 0, 2, 254, 255, 96, 1,
- 0, 0, 100, 0, 0, 0,
- 5, 0, 36, 0, 0, 0,
- 96, 0, 0, 0, 96, 0,
- 0, 0, 36, 0, 1, 0,
- 96, 0, 0, 0, 0, 0,
- 3, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 4, 0,
- 2, 0, 4, 0, 0, 0,
- 0, 0, 0, 0, 7, 0,
- 1, 0, 6, 0, 0, 0,
- 0, 0, 1, 0, 0, 0,
- 1, 0, 7, 0, 0, 0,
- 0, 0, 2, 0, 0, 0,
- 4, 0, 8, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 1, 2, 254, 255, 31, 0,
- 0, 2, 5, 0, 0, 128,
- 0, 0, 15, 144, 6, 0,
- 0, 2, 0, 0, 1, 128,
- 3, 0, 170, 160, 4, 0,
- 0, 4, 0, 0, 6, 128,
- 0, 0, 208, 144, 2, 0,
- 248, 160, 2, 0, 208, 160,
- 5, 0, 0, 3, 1, 0,
- 15, 128, 0, 0, 170, 128,
- 5, 0, 228, 160, 4, 0,
- 0, 4, 1, 0, 15, 128,
- 4, 0, 228, 160, 0, 0,
- 85, 128, 1, 0, 228, 128,
- 2, 0, 0, 3, 1, 0,
- 15, 128, 1, 0, 228, 128,
- 6, 0, 228, 160, 2, 0,
- 0, 3, 0, 0, 6, 128,
- 1, 0, 208, 128, 3, 0,
- 208, 161, 5, 0, 0, 3,
- 0, 0, 8, 224, 0, 0,
- 0, 128, 0, 0, 85, 128,
- 6, 0, 0, 2, 0, 0,
- 1, 128, 3, 0, 255, 160,
- 5, 0, 0, 3, 0, 0,
- 4, 224, 0, 0, 0, 128,
- 0, 0, 170, 128, 4, 0,
- 0, 4, 0, 0, 3, 224,
- 0, 0, 228, 144, 1, 0,
- 238, 160, 1, 0, 228, 160,
- 6, 0, 0, 2, 0, 0,
- 1, 128, 1, 0, 255, 128,
- 5, 0, 0, 3, 1, 0,
- 7, 128, 0, 0, 0, 128,
- 1, 0, 228, 128, 2, 0,
- 0, 3, 0, 0, 15, 128,
- 1, 0, 228, 128, 7, 0,
- 228, 161, 5, 0, 0, 3,
- 0, 0, 7, 128, 0, 0,
- 255, 128, 0, 0, 228, 128,
- 5, 0, 0, 3, 1, 0,
- 15, 128, 0, 0, 85, 128,
- 9, 0, 228, 160, 4, 0,
- 0, 4, 1, 0, 15, 128,
- 8, 0, 228, 160, 0, 0,
- 0, 128, 1, 0, 228, 128,
- 4, 0, 0, 4, 1, 0,
- 15, 128, 10, 0, 228, 160,
- 0, 0, 170, 128, 1, 0,
- 228, 128, 4, 0, 0, 4,
- 0, 0, 15, 128, 11, 0,
- 228, 160, 0, 0, 255, 128,
- 1, 0, 228, 128, 4, 0,
- 0, 4, 0, 0, 3, 192,
- 0, 0, 255, 128, 0, 0,
- 228, 160, 0, 0, 228, 128,
- 1, 0, 0, 2, 0, 0,
- 12, 192, 0, 0, 228, 128,
- 255, 255, 0, 0, 83, 72,
- 68, 82, 132, 2, 0, 0,
- 64, 0, 1, 0, 161, 0,
- 0, 0, 89, 0, 0, 4,
- 70, 142, 32, 0, 0, 0,
- 0, 0, 8, 0, 0, 0,
- 89, 0, 0, 4, 70, 142,
- 32, 0, 1, 0, 0, 0,
- 1, 0, 0, 0, 89, 0,
- 0, 4, 70, 142, 32, 0,
- 2, 0, 0, 0, 4, 0,
- 0, 0, 95, 0, 0, 3,
- 50, 16, 16, 0, 0, 0,
- 0, 0, 103, 0, 0, 4,
- 242, 32, 16, 0, 0, 0,
- 0, 0, 1, 0, 0, 0,
- 101, 0, 0, 3, 50, 32,
- 16, 0, 1, 0, 0, 0,
- 101, 0, 0, 3, 194, 32,
- 16, 0, 1, 0, 0, 0,
- 104, 0, 0, 2, 2, 0,
- 0, 0, 50, 0, 0, 11,
- 50, 0, 16, 0, 0, 0,
- 0, 0, 70, 16, 16, 0,
- 0, 0, 0, 0, 230, 138,
- 32, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 70, 128,
- 32, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 56, 0,
- 0, 8, 242, 0, 16, 0,
- 1, 0, 0, 0, 86, 5,
- 16, 0, 0, 0, 0, 0,
- 70, 142, 32, 0, 0, 0,
- 0, 0, 5, 0, 0, 0,
- 50, 0, 0, 10, 242, 0,
- 16, 0, 0, 0, 0, 0,
- 70, 142, 32, 0, 0, 0,
- 0, 0, 4, 0, 0, 0,
- 6, 0, 16, 0, 0, 0,
- 0, 0, 70, 14, 16, 0,
- 1, 0, 0, 0, 0, 0,
- 0, 8, 242, 0, 16, 0,
- 0, 0, 0, 0, 70, 14,
- 16, 0, 0, 0, 0, 0,
- 70, 142, 32, 0, 0, 0,
- 0, 0, 7, 0, 0, 0,
- 14, 0, 0, 7, 114, 0,
- 16, 0, 1, 0, 0, 0,
- 70, 2, 16, 0, 0, 0,
- 0, 0, 246, 15, 16, 0,
- 0, 0, 0, 0, 54, 0,
- 0, 5, 130, 0, 16, 0,
- 1, 0, 0, 0, 58, 0,
- 16, 0, 0, 0, 0, 0,
- 0, 0, 0, 9, 50, 0,
- 16, 0, 0, 0, 0, 0,
- 70, 0, 16, 0, 0, 0,
- 0, 0, 70, 128, 32, 128,
- 65, 0, 0, 0, 0, 0,
- 0, 0, 2, 0, 0, 0,
- 14, 0, 0, 8, 194, 32,
- 16, 0, 1, 0, 0, 0,
- 6, 4, 16, 0, 0, 0,
- 0, 0, 166, 142, 32, 0,
- 0, 0, 0, 0, 2, 0,
- 0, 0, 0, 0, 0, 9,
- 242, 0, 16, 0, 0, 0,
- 0, 0, 70, 14, 16, 0,
- 1, 0, 0, 0, 70, 142,
- 32, 128, 65, 0, 0, 0,
- 1, 0, 0, 0, 0, 0,
- 0, 0, 56, 0, 0, 7,
- 114, 0, 16, 0, 0, 0,
- 0, 0, 246, 15, 16, 0,
- 0, 0, 0, 0, 70, 2,
- 16, 0, 0, 0, 0, 0,
- 56, 0, 0, 8, 242, 0,
- 16, 0, 1, 0, 0, 0,
- 86, 5, 16, 0, 0, 0,
- 0, 0, 70, 142, 32, 0,
- 2, 0, 0, 0, 1, 0,
- 0, 0, 50, 0, 0, 10,
- 242, 0, 16, 0, 1, 0,
- 0, 0, 70, 142, 32, 0,
- 2, 0, 0, 0, 0, 0,
- 0, 0, 6, 0, 16, 0,
- 0, 0, 0, 0, 70, 14,
- 16, 0, 1, 0, 0, 0,
- 50, 0, 0, 10, 242, 0,
- 16, 0, 1, 0, 0, 0,
- 70, 142, 32, 0, 2, 0,
- 0, 0, 2, 0, 0, 0,
- 166, 10, 16, 0, 0, 0,
- 0, 0, 70, 14, 16, 0,
- 1, 0, 0, 0, 50, 0,
- 0, 10, 242, 32, 16, 0,
- 0, 0, 0, 0, 70, 142,
- 32, 0, 2, 0, 0, 0,
- 3, 0, 0, 0, 246, 15,
- 16, 0, 0, 0, 0, 0,
- 70, 14, 16, 0, 1, 0,
- 0, 0, 50, 0, 0, 11,
- 50, 32, 16, 0, 1, 0,
- 0, 0, 70, 16, 16, 0,
- 0, 0, 0, 0, 230, 138,
- 32, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 70, 128,
- 32, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 62, 0,
- 0, 1, 83, 84, 65, 84,
- 116, 0, 0, 0, 16, 0,
- 0, 0, 2, 0, 0, 0,
- 0, 0, 0, 0, 4, 0,
- 0, 0, 14, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 82, 68, 69, 70, 148, 2,
- 0, 0, 3, 0, 0, 0,
- 168, 0, 0, 0, 3, 0,
- 0, 0, 28, 0, 0, 0,
- 0, 4, 254, 255, 0, 1,
- 0, 0, 96, 2, 0, 0,
- 124, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 0, 0,
- 0, 0, 133, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 0,
- 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 152, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 2, 0, 0, 0, 1, 0,
- 0, 0, 0, 0, 0, 0,
- 80, 101, 114, 76, 97, 121,
- 101, 114, 0, 80, 101, 114,
- 79, 99, 99, 97, 115, 105,
- 111, 110, 97, 108, 76, 97,
- 121, 101, 114, 0, 80, 101,
- 114, 76, 97, 121, 101, 114,
- 77, 97, 110, 97, 103, 101,
- 114, 0, 124, 0, 0, 0,
- 5, 0, 0, 0, 240, 0,
- 0, 0, 128, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 133, 0, 0, 0,
- 2, 0, 0, 0, 220, 1,
- 0, 0, 32, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 152, 0, 0, 0,
- 1, 0, 0, 0, 60, 2,
- 0, 0, 64, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 104, 1, 0, 0,
- 0, 0, 0, 0, 16, 0,
- 0, 0, 2, 0, 0, 0,
- 120, 1, 0, 0, 0, 0,
- 0, 0, 136, 1, 0, 0,
- 16, 0, 0, 0, 16, 0,
- 0, 0, 2, 0, 0, 0,
- 120, 1, 0, 0, 0, 0,
- 0, 0, 147, 1, 0, 0,
- 32, 0, 0, 0, 16, 0,
- 0, 0, 2, 0, 0, 0,
- 120, 1, 0, 0, 0, 0,
- 0, 0, 157, 1, 0, 0,
- 48, 0, 0, 0, 4, 0,
- 0, 0, 0, 0, 0, 0,
- 172, 1, 0, 0, 0, 0,
- 0, 0, 188, 1, 0, 0,
- 64, 0, 0, 0, 64, 0,
- 0, 0, 2, 0, 0, 0,
- 204, 1, 0, 0, 0, 0,
- 0, 0, 118, 84, 101, 120,
- 116, 117, 114, 101, 67, 111,
- 111, 114, 100, 115, 0, 171,
- 1, 0, 3, 0, 1, 0,
- 4, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 118, 76,
- 97, 121, 101, 114, 81, 117,
- 97, 100, 0, 118, 77, 97,
- 115, 107, 81, 117, 97, 100,
- 0, 102, 76, 97, 121, 101,
- 114, 79, 112, 97, 99, 105,
- 116, 121, 0, 171, 0, 0,
- 3, 0, 1, 0, 1, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 109, 76, 97, 121,
- 101, 114, 84, 114, 97, 110,
- 115, 102, 111, 114, 109, 0,
- 3, 0, 3, 0, 4, 0,
- 4, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 12, 2,
- 0, 0, 0, 0, 0, 0,
- 16, 0, 0, 0, 2, 0,
- 0, 0, 32, 2, 0, 0,
- 0, 0, 0, 0, 48, 2,
- 0, 0, 16, 0, 0, 0,
- 16, 0, 0, 0, 0, 0,
- 0, 0, 32, 2, 0, 0,
- 0, 0, 0, 0, 118, 82,
- 101, 110, 100, 101, 114, 84,
- 97, 114, 103, 101, 116, 79,
- 102, 102, 115, 101, 116, 0,
- 1, 0, 3, 0, 1, 0,
- 4, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 102, 76,
- 97, 121, 101, 114, 67, 111,
- 108, 111, 114, 0, 84, 2,
- 0, 0, 0, 0, 0, 0,
- 64, 0, 0, 0, 2, 0,
- 0, 0, 204, 1, 0, 0,
- 0, 0, 0, 0, 109, 80,
- 114, 111, 106, 101, 99, 116,
- 105, 111, 110, 0, 77, 105,
- 99, 114, 111, 115, 111, 102,
- 116, 32, 40, 82, 41, 32,
- 72, 76, 83, 76, 32, 83,
- 104, 97, 100, 101, 114, 32,
- 67, 111, 109, 112, 105, 108,
- 101, 114, 32, 54, 46, 51,
- 46, 57, 54, 48, 48, 46,
- 49, 54, 51, 56, 52, 0,
- 171, 171, 73, 83, 71, 78,
- 44, 0, 0, 0, 1, 0,
- 0, 0, 8, 0, 0, 0,
- 32, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 3, 0, 0, 0, 0, 0,
- 0, 0, 3, 3, 0, 0,
- 80, 79, 83, 73, 84, 73,
- 79, 78, 0, 171, 171, 171,
- 79, 83, 71, 78, 104, 0,
- 0, 0, 3, 0, 0, 0,
- 8, 0, 0, 0, 80, 0,
- 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 3, 0,
- 0, 0, 0, 0, 0, 0,
- 15, 0, 0, 0, 92, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 3, 0,
- 0, 0, 1, 0, 0, 0,
- 3, 12, 0, 0, 92, 0,
- 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 3, 0,
- 0, 0, 1, 0, 0, 0,
- 12, 3, 0, 0, 83, 86,
- 95, 80, 111, 115, 105, 116,
- 105, 111, 110, 0, 84, 69,
- 88, 67, 79, 79, 82, 68,
- 0, 171, 171, 171, 126, 153,
- 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 2, 0,
- 0, 0, 0, 0, 0, 0,
- 144, 5, 0, 0, 68, 88,
- 66, 67, 113, 140, 186, 29,
- 121, 124, 246, 156, 156, 129,
- 164, 254, 156, 2, 223, 127,
- 1, 0, 0, 0, 144, 5,
- 0, 0, 6, 0, 0, 0,
- 56, 0, 0, 0, 8, 1,
- 0, 0, 44, 2, 0, 0,
- 168, 2, 0, 0, 236, 4,
- 0, 0, 92, 5, 0, 0,
- 65, 111, 110, 57, 200, 0,
- 0, 0, 200, 0, 0, 0,
- 0, 2, 255, 255, 144, 0,
- 0, 0, 56, 0, 0, 0,
- 1, 0, 44, 0, 0, 0,
- 56, 0, 0, 0, 56, 0,
- 2, 0, 36, 0, 0, 0,
- 56, 0, 1, 0, 0, 0,
- 0, 1, 1, 0, 0, 0,
- 3, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 1, 2,
- 255, 255, 31, 0, 0, 2,
- 0, 0, 0, 128, 0, 0,
- 15, 176, 31, 0, 0, 2,
- 0, 0, 0, 144, 0, 8,
- 15, 160, 31, 0, 0, 2,
- 0, 0, 0, 144, 1, 8,
- 15, 160, 1, 0, 0, 2,
- 0, 0, 3, 128, 0, 0,
- 235, 176, 66, 0, 0, 3,
- 1, 0, 15, 128, 0, 0,
- 228, 176, 1, 8, 228, 160,
- 66, 0, 0, 3, 0, 0,
- 15, 128, 0, 0, 228, 128,
- 0, 8, 228, 160, 5, 0,
- 0, 3, 1, 0, 7, 128,
- 1, 0, 228, 128, 0, 0,
- 0, 160, 1, 0, 0, 2,
- 1, 0, 8, 128, 0, 0,
- 0, 160, 5, 0, 0, 3,
- 0, 0, 15, 128, 0, 0,
- 255, 128, 1, 0, 228, 128,
- 1, 0, 0, 2, 0, 8,
- 15, 128, 0, 0, 228, 128,
- 255, 255, 0, 0, 83, 72,
- 68, 82, 28, 1, 0, 0,
- 64, 0, 0, 0, 71, 0,
- 0, 0, 89, 0, 0, 4,
- 70, 142, 32, 0, 0, 0,
- 0, 0, 4, 0, 0, 0,
- 90, 0, 0, 3, 0, 96,
- 16, 0, 0, 0, 0, 0,
- 90, 0, 0, 3, 0, 96,
- 16, 0, 1, 0, 0, 0,
- 88, 24, 0, 4, 0, 112,
- 16, 0, 0, 0, 0, 0,
- 85, 85, 0, 0, 88, 24,
- 0, 4, 0, 112, 16, 0,
- 1, 0, 0, 0, 85, 85,
- 0, 0, 98, 16, 0, 3,
- 50, 16, 16, 0, 1, 0,
- 0, 0, 98, 16, 0, 3,
- 194, 16, 16, 0, 1, 0,
- 0, 0, 101, 0, 0, 3,
- 242, 32, 16, 0, 0, 0,
- 0, 0, 104, 0, 0, 2,
- 2, 0, 0, 0, 69, 0,
- 0, 9, 242, 0, 16, 0,
- 0, 0, 0, 0, 70, 16,
- 16, 0, 1, 0, 0, 0,
- 70, 126, 16, 0, 0, 0,
- 0, 0, 0, 96, 16, 0,
- 1, 0, 0, 0, 56, 0,
- 0, 8, 114, 0, 16, 0,
- 0, 0, 0, 0, 70, 2,
- 16, 0, 0, 0, 0, 0,
- 6, 128, 32, 0, 0, 0,
- 0, 0, 3, 0, 0, 0,
- 69, 0, 0, 9, 242, 0,
- 16, 0, 1, 0, 0, 0,
- 230, 26, 16, 0, 1, 0,
- 0, 0, 70, 126, 16, 0,
- 1, 0, 0, 0, 0, 96,
- 16, 0, 0, 0, 0, 0,
- 54, 0, 0, 6, 130, 0,
- 16, 0, 0, 0, 0, 0,
- 10, 128, 32, 0, 0, 0,
- 0, 0, 3, 0, 0, 0,
- 56, 0, 0, 7, 242, 32,
- 16, 0, 0, 0, 0, 0,
- 70, 14, 16, 0, 0, 0,
- 0, 0, 246, 15, 16, 0,
- 1, 0, 0, 0, 62, 0,
- 0, 1, 83, 84, 65, 84,
- 116, 0, 0, 0, 6, 0,
- 0, 0, 2, 0, 0, 0,
- 0, 0, 0, 0, 3, 0,
- 0, 0, 2, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 2, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 82, 68, 69, 70, 60, 2,
- 0, 0, 1, 0, 0, 0,
- 4, 1, 0, 0, 5, 0,
- 0, 0, 28, 0, 0, 0,
- 0, 4, 255, 255, 0, 1,
- 0, 0, 8, 2, 0, 0,
- 188, 0, 0, 0, 3, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 0, 0,
- 0, 0, 214, 0, 0, 0,
- 3, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 0,
- 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 239, 0,
- 0, 0, 2, 0, 0, 0,
- 5, 0, 0, 0, 4, 0,
- 0, 0, 255, 255, 255, 255,
- 0, 0, 0, 0, 1, 0,
- 0, 0, 12, 0, 0, 0,
- 244, 0, 0, 0, 2, 0,
- 0, 0, 5, 0, 0, 0,
- 4, 0, 0, 0, 255, 255,
- 255, 255, 1, 0, 0, 0,
- 1, 0, 0, 0, 12, 0,
- 0, 0, 250, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 76, 97,
- 121, 101, 114, 84, 101, 120,
- 116, 117, 114, 101, 83, 97,
- 109, 112, 108, 101, 114, 76,
- 105, 110, 101, 97, 114, 0,
- 76, 97, 121, 101, 114, 84,
- 101, 120, 116, 117, 114, 101,
- 83, 97, 109, 112, 108, 101,
- 114, 80, 111, 105, 110, 116,
- 0, 116, 82, 71, 66, 0,
- 116, 77, 97, 115, 107, 0,
- 80, 101, 114, 76, 97, 121,
- 101, 114, 0, 171, 250, 0,
- 0, 0, 5, 0, 0, 0,
- 28, 1, 0, 0, 128, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 148, 1,
- 0, 0, 0, 0, 0, 0,
- 16, 0, 0, 0, 0, 0,
- 0, 0, 164, 1, 0, 0,
- 0, 0, 0, 0, 180, 1,
- 0, 0, 16, 0, 0, 0,
- 16, 0, 0, 0, 0, 0,
- 0, 0, 164, 1, 0, 0,
- 0, 0, 0, 0, 191, 1,
- 0, 0, 32, 0, 0, 0,
- 16, 0, 0, 0, 0, 0,
- 0, 0, 164, 1, 0, 0,
- 0, 0, 0, 0, 201, 1,
- 0, 0, 48, 0, 0, 0,
- 4, 0, 0, 0, 2, 0,
- 0, 0, 216, 1, 0, 0,
- 0, 0, 0, 0, 232, 1,
- 0, 0, 64, 0, 0, 0,
- 64, 0, 0, 0, 0, 0,
- 0, 0, 248, 1, 0, 0,
- 0, 0, 0, 0, 118, 84,
- 101, 120, 116, 117, 114, 101,
- 67, 111, 111, 114, 100, 115,
- 0, 171, 1, 0, 3, 0,
- 1, 0, 4, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 118, 76, 97, 121, 101, 114,
- 81, 117, 97, 100, 0, 118,
- 77, 97, 115, 107, 81, 117,
- 97, 100, 0, 102, 76, 97,
- 121, 101, 114, 79, 112, 97,
- 99, 105, 116, 121, 0, 171,
- 0, 0, 3, 0, 1, 0,
- 1, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 109, 76,
- 97, 121, 101, 114, 84, 114,
- 97, 110, 115, 102, 111, 114,
- 109, 0, 3, 0, 3, 0,
- 4, 0, 4, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 77, 105, 99, 114, 111, 115,
- 111, 102, 116, 32, 40, 82,
- 41, 32, 72, 76, 83, 76,
- 32, 83, 104, 97, 100, 101,
- 114, 32, 67, 111, 109, 112,
- 105, 108, 101, 114, 32, 54,
- 46, 51, 46, 57, 54, 48,
- 48, 46, 49, 54, 51, 56,
- 52, 0, 171, 171, 73, 83,
- 71, 78, 104, 0, 0, 0,
- 3, 0, 0, 0, 8, 0,
- 0, 0, 80, 0, 0, 0,
- 0, 0, 0, 0, 1, 0,
- 0, 0, 3, 0, 0, 0,
- 0, 0, 0, 0, 15, 0,
- 0, 0, 92, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 3, 0, 0, 0,
- 1, 0, 0, 0, 3, 3,
- 0, 0, 92, 0, 0, 0,
- 1, 0, 0, 0, 0, 0,
- 0, 0, 3, 0, 0, 0,
- 1, 0, 0, 0, 12, 12,
- 0, 0, 83, 86, 95, 80,
- 111, 115, 105, 116, 105, 111,
- 110, 0, 84, 69, 88, 67,
- 79, 79, 82, 68, 0, 171,
- 171, 171, 79, 83, 71, 78,
- 44, 0, 0, 0, 1, 0,
- 0, 0, 8, 0, 0, 0,
- 32, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 3, 0, 0, 0, 0, 0,
- 0, 0, 15, 0, 0, 0,
- 83, 86, 95, 84, 97, 114,
- 103, 101, 116, 0, 171, 171,
- 226, 161, 0, 0, 0, 0,
- 0, 0, 82, 101, 110, 100,
- 101, 114, 82, 71, 66, 65,
- 76, 97, 121, 101, 114, 80,
- 114, 101, 109, 117, 108, 77,
- 97, 115, 107, 0, 4, 0,
- 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 1, 0,
- 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 0, 0,
- 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 1, 0,
- 0, 0, 3, 0, 0, 0,
- 255, 255, 255, 255, 76, 8,
- 0, 0, 68, 88, 66, 67,
- 190, 117, 181, 57, 187, 108,
- 178, 85, 11, 114, 197, 104,
- 54, 155, 141, 115, 1, 0,
- 0, 0, 76, 8, 0, 0,
- 6, 0, 0, 0, 56, 0,
- 0, 0, 4, 2, 0, 0,
- 144, 4, 0, 0, 12, 5,
- 0, 0, 168, 7, 0, 0,
- 220, 7, 0, 0, 65, 111,
- 110, 57, 196, 1, 0, 0,
- 196, 1, 0, 0, 0, 2,
- 254, 255, 96, 1, 0, 0,
- 100, 0, 0, 0, 5, 0,
- 36, 0, 0, 0, 96, 0,
- 0, 0, 96, 0, 0, 0,
- 36, 0, 1, 0, 96, 0,
- 0, 0, 0, 0, 3, 0,
- 1, 0, 0, 0, 0, 0,
- 0, 0, 4, 0, 2, 0,
- 4, 0, 0, 0, 0, 0,
- 0, 0, 7, 0, 1, 0,
- 6, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 1, 0,
- 7, 0, 0, 0, 0, 0,
- 2, 0, 0, 0, 4, 0,
- 8, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 2,
- 254, 255, 31, 0, 0, 2,
- 5, 0, 0, 128, 0, 0,
- 15, 144, 6, 0, 0, 2,
- 0, 0, 1, 128, 3, 0,
- 170, 160, 4, 0, 0, 4,
- 0, 0, 6, 128, 0, 0,
- 208, 144, 2, 0, 248, 160,
- 2, 0, 208, 160, 5, 0,
- 0, 3, 1, 0, 15, 128,
- 0, 0, 170, 128, 5, 0,
- 228, 160, 4, 0, 0, 4,
- 1, 0, 15, 128, 4, 0,
- 228, 160, 0, 0, 85, 128,
- 1, 0, 228, 128, 2, 0,
- 0, 3, 1, 0, 15, 128,
- 1, 0, 228, 128, 6, 0,
- 228, 160, 2, 0, 0, 3,
- 0, 0, 6, 128, 1, 0,
- 208, 128, 3, 0, 208, 161,
- 5, 0, 0, 3, 0, 0,
- 8, 224, 0, 0, 0, 128,
- 0, 0, 85, 128, 6, 0,
- 0, 2, 0, 0, 1, 128,
- 3, 0, 255, 160, 5, 0,
- 0, 3, 0, 0, 4, 224,
- 0, 0, 0, 128, 0, 0,
- 170, 128, 4, 0, 0, 4,
- 0, 0, 3, 224, 0, 0,
- 228, 144, 1, 0, 238, 160,
- 1, 0, 228, 160, 6, 0,
- 0, 2, 0, 0, 1, 128,
- 1, 0, 255, 128, 5, 0,
- 0, 3, 1, 0, 7, 128,
- 0, 0, 0, 128, 1, 0,
- 228, 128, 2, 0, 0, 3,
- 0, 0, 15, 128, 1, 0,
- 228, 128, 7, 0, 228, 161,
- 5, 0, 0, 3, 0, 0,
- 7, 128, 0, 0, 255, 128,
- 0, 0, 228, 128, 5, 0,
- 0, 3, 1, 0, 15, 128,
- 0, 0, 85, 128, 9, 0,
- 228, 160, 4, 0, 0, 4,
- 1, 0, 15, 128, 8, 0,
- 228, 160, 0, 0, 0, 128,
- 1, 0, 228, 128, 4, 0,
- 0, 4, 1, 0, 15, 128,
- 10, 0, 228, 160, 0, 0,
- 170, 128, 1, 0, 228, 128,
- 4, 0, 0, 4, 0, 0,
- 15, 128, 11, 0, 228, 160,
- 0, 0, 255, 128, 1, 0,
- 228, 128, 4, 0, 0, 4,
- 0, 0, 3, 192, 0, 0,
- 255, 128, 0, 0, 228, 160,
- 0, 0, 228, 128, 1, 0,
- 0, 2, 0, 0, 12, 192,
- 0, 0, 228, 128, 255, 255,
- 0, 0, 83, 72, 68, 82,
- 132, 2, 0, 0, 64, 0,
- 1, 0, 161, 0, 0, 0,
- 89, 0, 0, 4, 70, 142,
- 32, 0, 0, 0, 0, 0,
- 8, 0, 0, 0, 89, 0,
- 0, 4, 70, 142, 32, 0,
- 1, 0, 0, 0, 1, 0,
- 0, 0, 89, 0, 0, 4,
- 70, 142, 32, 0, 2, 0,
- 0, 0, 4, 0, 0, 0,
- 95, 0, 0, 3, 50, 16,
- 16, 0, 0, 0, 0, 0,
- 103, 0, 0, 4, 242, 32,
- 16, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 101, 0,
- 0, 3, 50, 32, 16, 0,
- 1, 0, 0, 0, 101, 0,
- 0, 3, 194, 32, 16, 0,
- 1, 0, 0, 0, 104, 0,
- 0, 2, 2, 0, 0, 0,
- 50, 0, 0, 11, 50, 0,
- 16, 0, 0, 0, 0, 0,
- 70, 16, 16, 0, 0, 0,
- 0, 0, 230, 138, 32, 0,
- 0, 0, 0, 0, 1, 0,
- 0, 0, 70, 128, 32, 0,
- 0, 0, 0, 0, 1, 0,
- 0, 0, 56, 0, 0, 8,
- 242, 0, 16, 0, 1, 0,
- 0, 0, 86, 5, 16, 0,
- 0, 0, 0, 0, 70, 142,
- 32, 0, 0, 0, 0, 0,
- 5, 0, 0, 0, 50, 0,
- 0, 10, 242, 0, 16, 0,
- 0, 0, 0, 0, 70, 142,
- 32, 0, 0, 0, 0, 0,
- 4, 0, 0, 0, 6, 0,
- 16, 0, 0, 0, 0, 0,
- 70, 14, 16, 0, 1, 0,
- 0, 0, 0, 0, 0, 8,
- 242, 0, 16, 0, 0, 0,
- 0, 0, 70, 14, 16, 0,
- 0, 0, 0, 0, 70, 142,
- 32, 0, 0, 0, 0, 0,
- 7, 0, 0, 0, 14, 0,
- 0, 7, 114, 0, 16, 0,
- 1, 0, 0, 0, 70, 2,
- 16, 0, 0, 0, 0, 0,
- 246, 15, 16, 0, 0, 0,
- 0, 0, 54, 0, 0, 5,
- 130, 0, 16, 0, 1, 0,
- 0, 0, 58, 0, 16, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 9, 50, 0, 16, 0,
- 0, 0, 0, 0, 70, 0,
- 16, 0, 0, 0, 0, 0,
- 70, 128, 32, 128, 65, 0,
- 0, 0, 0, 0, 0, 0,
- 2, 0, 0, 0, 14, 0,
- 0, 8, 194, 32, 16, 0,
- 1, 0, 0, 0, 6, 4,
- 16, 0, 0, 0, 0, 0,
- 166, 142, 32, 0, 0, 0,
- 0, 0, 2, 0, 0, 0,
- 0, 0, 0, 9, 242, 0,
- 16, 0, 0, 0, 0, 0,
- 70, 14, 16, 0, 1, 0,
- 0, 0, 70, 142, 32, 128,
- 65, 0, 0, 0, 1, 0,
- 0, 0, 0, 0, 0, 0,
- 56, 0, 0, 7, 114, 0,
- 16, 0, 0, 0, 0, 0,
- 246, 15, 16, 0, 0, 0,
- 0, 0, 70, 2, 16, 0,
- 0, 0, 0, 0, 56, 0,
- 0, 8, 242, 0, 16, 0,
- 1, 0, 0, 0, 86, 5,
- 16, 0, 0, 0, 0, 0,
- 70, 142, 32, 0, 2, 0,
- 0, 0, 1, 0, 0, 0,
- 50, 0, 0, 10, 242, 0,
- 16, 0, 1, 0, 0, 0,
- 70, 142, 32, 0, 2, 0,
- 0, 0, 0, 0, 0, 0,
- 6, 0, 16, 0, 0, 0,
- 0, 0, 70, 14, 16, 0,
- 1, 0, 0, 0, 50, 0,
- 0, 10, 242, 0, 16, 0,
- 1, 0, 0, 0, 70, 142,
- 32, 0, 2, 0, 0, 0,
- 2, 0, 0, 0, 166, 10,
- 16, 0, 0, 0, 0, 0,
- 70, 14, 16, 0, 1, 0,
- 0, 0, 50, 0, 0, 10,
- 242, 32, 16, 0, 0, 0,
- 0, 0, 70, 142, 32, 0,
- 2, 0, 0, 0, 3, 0,
- 0, 0, 246, 15, 16, 0,
- 0, 0, 0, 0, 70, 14,
- 16, 0, 1, 0, 0, 0,
- 50, 0, 0, 11, 50, 32,
- 16, 0, 1, 0, 0, 0,
- 70, 16, 16, 0, 0, 0,
- 0, 0, 230, 138, 32, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 70, 128, 32, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 62, 0, 0, 1,
- 83, 84, 65, 84, 116, 0,
- 0, 0, 16, 0, 0, 0,
- 2, 0, 0, 0, 0, 0,
- 0, 0, 4, 0, 0, 0,
- 14, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 82, 68,
- 69, 70, 148, 2, 0, 0,
- 3, 0, 0, 0, 168, 0,
- 0, 0, 3, 0, 0, 0,
- 28, 0, 0, 0, 0, 4,
- 254, 255, 0, 1, 0, 0,
- 96, 2, 0, 0, 124, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 0,
- 0, 0, 0, 0, 0, 0,
- 133, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 0, 0, 0,
- 1, 0, 0, 0, 0, 0,
- 0, 0, 152, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 2, 0,
- 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 80, 101,
- 114, 76, 97, 121, 101, 114,
- 0, 80, 101, 114, 79, 99,
- 99, 97, 115, 105, 111, 110,
- 97, 108, 76, 97, 121, 101,
- 114, 0, 80, 101, 114, 76,
- 97, 121, 101, 114, 77, 97,
- 110, 97, 103, 101, 114, 0,
- 124, 0, 0, 0, 5, 0,
- 0, 0, 240, 0, 0, 0,
- 128, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 133, 0, 0, 0, 2, 0,
- 0, 0, 220, 1, 0, 0,
- 32, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 152, 0, 0, 0, 1, 0,
- 0, 0, 60, 2, 0, 0,
- 64, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 104, 1, 0, 0, 0, 0,
- 0, 0, 16, 0, 0, 0,
- 2, 0, 0, 0, 120, 1,
- 0, 0, 0, 0, 0, 0,
- 136, 1, 0, 0, 16, 0,
- 0, 0, 16, 0, 0, 0,
- 2, 0, 0, 0, 120, 1,
- 0, 0, 0, 0, 0, 0,
- 147, 1, 0, 0, 32, 0,
- 0, 0, 16, 0, 0, 0,
- 2, 0, 0, 0, 120, 1,
- 0, 0, 0, 0, 0, 0,
- 157, 1, 0, 0, 48, 0,
- 0, 0, 4, 0, 0, 0,
- 0, 0, 0, 0, 172, 1,
- 0, 0, 0, 0, 0, 0,
- 188, 1, 0, 0, 64, 0,
- 0, 0, 64, 0, 0, 0,
- 2, 0, 0, 0, 204, 1,
- 0, 0, 0, 0, 0, 0,
- 118, 84, 101, 120, 116, 117,
- 114, 101, 67, 111, 111, 114,
- 100, 115, 0, 171, 1, 0,
- 3, 0, 1, 0, 4, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 118, 76, 97, 121,
- 101, 114, 81, 117, 97, 100,
- 0, 118, 77, 97, 115, 107,
- 81, 117, 97, 100, 0, 102,
- 76, 97, 121, 101, 114, 79,
- 112, 97, 99, 105, 116, 121,
- 0, 171, 0, 0, 3, 0,
- 1, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 109, 76, 97, 121, 101, 114,
- 84, 114, 97, 110, 115, 102,
- 111, 114, 109, 0, 3, 0,
- 3, 0, 4, 0, 4, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 12, 2, 0, 0,
- 0, 0, 0, 0, 16, 0,
- 0, 0, 2, 0, 0, 0,
- 32, 2, 0, 0, 0, 0,
- 0, 0, 48, 2, 0, 0,
- 16, 0, 0, 0, 16, 0,
- 0, 0, 0, 0, 0, 0,
- 32, 2, 0, 0, 0, 0,
- 0, 0, 118, 82, 101, 110,
- 100, 101, 114, 84, 97, 114,
- 103, 101, 116, 79, 102, 102,
- 115, 101, 116, 0, 1, 0,
- 3, 0, 1, 0, 4, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 102, 76, 97, 121,
- 101, 114, 67, 111, 108, 111,
- 114, 0, 84, 2, 0, 0,
- 0, 0, 0, 0, 64, 0,
- 0, 0, 2, 0, 0, 0,
- 204, 1, 0, 0, 0, 0,
- 0, 0, 109, 80, 114, 111,
- 106, 101, 99, 116, 105, 111,
- 110, 0, 77, 105, 99, 114,
- 111, 115, 111, 102, 116, 32,
- 40, 82, 41, 32, 72, 76,
- 83, 76, 32, 83, 104, 97,
- 100, 101, 114, 32, 67, 111,
- 109, 112, 105, 108, 101, 114,
- 32, 54, 46, 51, 46, 57,
- 54, 48, 48, 46, 49, 54,
- 51, 56, 52, 0, 171, 171,
- 73, 83, 71, 78, 44, 0,
- 0, 0, 1, 0, 0, 0,
- 8, 0, 0, 0, 32, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 3, 0,
- 0, 0, 0, 0, 0, 0,
- 3, 3, 0, 0, 80, 79,
- 83, 73, 84, 73, 79, 78,
- 0, 171, 171, 171, 79, 83,
- 71, 78, 104, 0, 0, 0,
- 3, 0, 0, 0, 8, 0,
- 0, 0, 80, 0, 0, 0,
- 0, 0, 0, 0, 1, 0,
- 0, 0, 3, 0, 0, 0,
- 0, 0, 0, 0, 15, 0,
- 0, 0, 92, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 3, 0, 0, 0,
- 1, 0, 0, 0, 3, 12,
- 0, 0, 92, 0, 0, 0,
- 1, 0, 0, 0, 0, 0,
- 0, 0, 3, 0, 0, 0,
- 1, 0, 0, 0, 12, 3,
- 0, 0, 83, 86, 95, 80,
- 111, 115, 105, 116, 105, 111,
- 110, 0, 84, 69, 88, 67,
- 79, 79, 82, 68, 0, 171,
- 171, 171, 200, 167, 0, 0,
- 0, 0, 0, 0, 1, 0,
- 0, 0, 2, 0, 0, 0,
- 0, 0, 0, 0, 40, 5,
- 0, 0, 68, 88, 66, 67,
- 134, 242, 22, 210, 198, 226,
- 208, 239, 25, 201, 212, 19,
- 217, 12, 67, 204, 1, 0,
- 0, 0, 40, 5, 0, 0,
- 6, 0, 0, 0, 56, 0,
- 0, 0, 252, 0, 0, 0,
- 252, 1, 0, 0, 120, 2,
- 0, 0, 132, 4, 0, 0,
- 244, 4, 0, 0, 65, 111,
- 110, 57, 188, 0, 0, 0,
- 188, 0, 0, 0, 0, 2,
- 255, 255, 132, 0, 0, 0,
- 56, 0, 0, 0, 1, 0,
- 44, 0, 0, 0, 56, 0,
- 0, 0, 56, 0, 2, 0,
- 36, 0, 0, 0, 56, 0,
- 0, 0, 0, 0, 1, 0,
- 1, 0, 0, 0, 3, 0,
- 1, 0, 0, 0, 0, 0,
- 0, 0, 1, 2, 255, 255,
- 31, 0, 0, 2, 0, 0,
- 0, 128, 0, 0, 15, 176,
- 31, 0, 0, 2, 0, 0,
- 0, 144, 0, 8, 15, 160,
- 31, 0, 0, 2, 0, 0,
- 0, 144, 1, 8, 15, 160,
- 1, 0, 0, 2, 0, 0,
- 3, 128, 0, 0, 235, 176,
- 66, 0, 0, 3, 1, 0,
- 15, 128, 0, 0, 228, 176,
- 0, 8, 228, 160, 66, 0,
- 0, 3, 0, 0, 15, 128,
- 0, 0, 228, 128, 1, 8,
- 228, 160, 5, 0, 0, 3,
- 1, 0, 15, 128, 1, 0,
- 228, 128, 0, 0, 0, 160,
- 5, 0, 0, 3, 0, 0,
- 15, 128, 0, 0, 255, 128,
- 1, 0, 228, 128, 1, 0,
- 0, 2, 0, 8, 15, 128,
- 0, 0, 228, 128, 255, 255,
- 0, 0, 83, 72, 68, 82,
- 248, 0, 0, 0, 64, 0,
- 0, 0, 62, 0, 0, 0,
- 89, 0, 0, 4, 70, 142,
- 32, 0, 0, 0, 0, 0,
- 4, 0, 0, 0, 90, 0,
- 0, 3, 0, 96, 16, 0,
- 0, 0, 0, 0, 88, 24,
- 0, 4, 0, 112, 16, 0,
- 0, 0, 0, 0, 85, 85,
- 0, 0, 88, 24, 0, 4,
- 0, 112, 16, 0, 1, 0,
- 0, 0, 85, 85, 0, 0,
- 98, 16, 0, 3, 50, 16,
- 16, 0, 1, 0, 0, 0,
- 98, 16, 0, 3, 194, 16,
- 16, 0, 1, 0, 0, 0,
- 101, 0, 0, 3, 242, 32,
- 16, 0, 0, 0, 0, 0,
- 104, 0, 0, 2, 2, 0,
- 0, 0, 69, 0, 0, 9,
- 242, 0, 16, 0, 0, 0,
- 0, 0, 70, 16, 16, 0,
- 1, 0, 0, 0, 70, 126,
- 16, 0, 0, 0, 0, 0,
- 0, 96, 16, 0, 0, 0,
- 0, 0, 56, 0, 0, 8,
- 242, 0, 16, 0, 0, 0,
- 0, 0, 70, 14, 16, 0,
- 0, 0, 0, 0, 6, 128,
- 32, 0, 0, 0, 0, 0,
- 3, 0, 0, 0, 69, 0,
- 0, 9, 242, 0, 16, 0,
- 1, 0, 0, 0, 230, 26,
- 16, 0, 1, 0, 0, 0,
- 70, 126, 16, 0, 1, 0,
- 0, 0, 0, 96, 16, 0,
- 0, 0, 0, 0, 56, 0,
- 0, 7, 242, 32, 16, 0,
- 0, 0, 0, 0, 70, 14,
- 16, 0, 0, 0, 0, 0,
- 246, 15, 16, 0, 1, 0,
- 0, 0, 62, 0, 0, 1,
- 83, 84, 65, 84, 116, 0,
- 0, 0, 5, 0, 0, 0,
- 2, 0, 0, 0, 0, 0,
- 0, 0, 3, 0, 0, 0,
- 2, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 2, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 82, 68,
- 69, 70, 4, 2, 0, 0,
- 1, 0, 0, 0, 204, 0,
- 0, 0, 4, 0, 0, 0,
- 28, 0, 0, 0, 0, 4,
- 255, 255, 0, 1, 0, 0,
- 208, 1, 0, 0, 156, 0,
- 0, 0, 3, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 0,
- 0, 0, 0, 0, 0, 0,
- 182, 0, 0, 0, 2, 0,
- 0, 0, 5, 0, 0, 0,
- 4, 0, 0, 0, 255, 255,
- 255, 255, 0, 0, 0, 0,
- 1, 0, 0, 0, 12, 0,
- 0, 0, 187, 0, 0, 0,
- 2, 0, 0, 0, 5, 0,
- 0, 0, 4, 0, 0, 0,
- 255, 255, 255, 255, 1, 0,
- 0, 0, 1, 0, 0, 0,
- 12, 0, 0, 0, 193, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 0,
- 0, 0, 0, 0, 0, 0,
- 76, 97, 121, 101, 114, 84,
- 101, 120, 116, 117, 114, 101,
- 83, 97, 109, 112, 108, 101,
- 114, 76, 105, 110, 101, 97,
- 114, 0, 116, 82, 71, 66,
- 0, 116, 77, 97, 115, 107,
- 0, 80, 101, 114, 76, 97,
- 121, 101, 114, 0, 171, 171,
- 193, 0, 0, 0, 5, 0,
- 0, 0, 228, 0, 0, 0,
- 128, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 92, 1, 0, 0, 0, 0,
- 0, 0, 16, 0, 0, 0,
- 0, 0, 0, 0, 108, 1,
- 0, 0, 0, 0, 0, 0,
- 124, 1, 0, 0, 16, 0,
- 0, 0, 16, 0, 0, 0,
- 0, 0, 0, 0, 108, 1,
- 0, 0, 0, 0, 0, 0,
- 135, 1, 0, 0, 32, 0,
- 0, 0, 16, 0, 0, 0,
- 0, 0, 0, 0, 108, 1,
- 0, 0, 0, 0, 0, 0,
- 145, 1, 0, 0, 48, 0,
- 0, 0, 4, 0, 0, 0,
- 2, 0, 0, 0, 160, 1,
- 0, 0, 0, 0, 0, 0,
- 176, 1, 0, 0, 64, 0,
- 0, 0, 64, 0, 0, 0,
- 0, 0, 0, 0, 192, 1,
- 0, 0, 0, 0, 0, 0,
- 118, 84, 101, 120, 116, 117,
- 114, 101, 67, 111, 111, 114,
- 100, 115, 0, 171, 1, 0,
- 3, 0, 1, 0, 4, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 118, 76, 97, 121,
- 101, 114, 81, 117, 97, 100,
- 0, 118, 77, 97, 115, 107,
- 81, 117, 97, 100, 0, 102,
- 76, 97, 121, 101, 114, 79,
- 112, 97, 99, 105, 116, 121,
- 0, 171, 0, 0, 3, 0,
- 1, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 109, 76, 97, 121, 101, 114,
- 84, 114, 97, 110, 115, 102,
- 111, 114, 109, 0, 3, 0,
- 3, 0, 4, 0, 4, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 77, 105, 99, 114,
- 111, 115, 111, 102, 116, 32,
- 40, 82, 41, 32, 72, 76,
- 83, 76, 32, 83, 104, 97,
- 100, 101, 114, 32, 67, 111,
- 109, 112, 105, 108, 101, 114,
- 32, 54, 46, 51, 46, 57,
- 54, 48, 48, 46, 49, 54,
- 51, 56, 52, 0, 171, 171,
- 73, 83, 71, 78, 104, 0,
- 0, 0, 3, 0, 0, 0,
- 8, 0, 0, 0, 80, 0,
- 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 3, 0,
- 0, 0, 0, 0, 0, 0,
- 15, 0, 0, 0, 92, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 3, 0,
- 0, 0, 1, 0, 0, 0,
- 3, 3, 0, 0, 92, 0,
- 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 3, 0,
- 0, 0, 1, 0, 0, 0,
- 12, 12, 0, 0, 83, 86,
- 95, 80, 111, 115, 105, 116,
- 105, 111, 110, 0, 84, 69,
- 88, 67, 79, 79, 82, 68,
- 0, 171, 171, 171, 79, 83,
- 71, 78, 44, 0, 0, 0,
- 1, 0, 0, 0, 8, 0,
- 0, 0, 32, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 3, 0, 0, 0,
- 0, 0, 0, 0, 15, 0,
- 0, 0, 83, 86, 95, 84,
- 97, 114, 103, 101, 116, 0,
- 171, 171, 44, 176, 0, 0,
- 0, 0, 0, 0, 82, 101,
- 110, 100, 101, 114, 82, 71,
- 66, 65, 76, 97, 121, 101,
- 114, 80, 114, 101, 109, 117,
- 108, 77, 97, 115, 107, 51,
- 68, 0, 4, 0, 0, 0,
- 1, 0, 0, 0, 0, 0,
- 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 1, 0,
- 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 0, 0,
- 0, 0, 1, 0, 0, 0,
- 3, 0, 0, 0, 255, 255,
- 255, 255, 160, 8, 0, 0,
- 68, 88, 66, 67, 34, 121,
- 201, 137, 199, 29, 125, 49,
- 68, 233, 221, 121, 196, 122,
- 136, 83, 1, 0, 0, 0,
- 160, 8, 0, 0, 6, 0,
- 0, 0, 56, 0, 0, 0,
- 60, 2, 0, 0, 228, 4,
- 0, 0, 96, 5, 0, 0,
- 252, 7, 0, 0, 48, 8,
- 0, 0, 65, 111, 110, 57,
- 252, 1, 0, 0, 252, 1,
- 0, 0, 0, 2, 254, 255,
- 152, 1, 0, 0, 100, 0,
- 0, 0, 5, 0, 36, 0,
- 0, 0, 96, 0, 0, 0,
- 96, 0, 0, 0, 36, 0,
- 1, 0, 96, 0, 0, 0,
- 0, 0, 3, 0, 1, 0,
- 0, 0, 0, 0, 0, 0,
- 4, 0, 2, 0, 4, 0,
- 0, 0, 0, 0, 0, 0,
- 7, 0, 1, 0, 6, 0,
- 0, 0, 0, 0, 1, 0,
- 0, 0, 1, 0, 7, 0,
- 0, 0, 0, 0, 2, 0,
- 0, 0, 4, 0, 8, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 2, 254, 255,
- 81, 0, 0, 5, 12, 0,
- 15, 160, 0, 0, 128, 63,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 31, 0, 0, 2, 5, 0,
- 0, 128, 0, 0, 15, 144,
- 1, 0, 0, 2, 0, 0,
- 4, 128, 12, 0, 0, 160,
- 6, 0, 0, 2, 0, 0,
- 8, 128, 3, 0, 170, 160,
- 4, 0, 0, 4, 1, 0,
- 3, 128, 0, 0, 228, 144,
- 2, 0, 238, 160, 2, 0,
- 228, 160, 5, 0, 0, 3,
- 2, 0, 15, 128, 1, 0,
- 85, 128, 5, 0, 228, 160,
- 4, 0, 0, 4, 1, 0,
- 15, 128, 4, 0, 228, 160,
- 1, 0, 0, 128, 2, 0,
- 228, 128, 2, 0, 0, 3,
- 1, 0, 15, 128, 1, 0,
- 228, 128, 6, 0, 228, 160,
- 6, 0, 0, 2, 2, 0,
- 1, 128, 1, 0, 255, 128,
- 4, 0, 0, 4, 2, 0,
- 6, 128, 1, 0, 208, 128,
- 2, 0, 0, 128, 3, 0,
- 208, 161, 5, 0, 0, 3,
- 1, 0, 7, 128, 1, 0,
- 228, 128, 2, 0, 0, 128,
- 5, 0, 0, 3, 0, 0,
- 1, 128, 0, 0, 255, 128,
- 2, 0, 85, 128, 6, 0,
- 0, 2, 0, 0, 8, 128,
- 3, 0, 255, 160, 5, 0,
- 0, 3, 0, 0, 2, 128,
- 0, 0, 255, 128, 2, 0,
- 170, 128, 5, 0, 0, 3,
- 1, 0, 7, 224, 0, 0,
- 228, 128, 1, 0, 255, 128,
- 2, 0, 0, 3, 0, 0,
- 15, 128, 1, 0, 228, 128,
- 7, 0, 228, 161, 4, 0,
- 0, 4, 0, 0, 3, 224,
- 0, 0, 228, 144, 1, 0,
- 238, 160, 1, 0, 228, 160,
- 5, 0, 0, 3, 0, 0,
- 7, 128, 0, 0, 255, 128,
- 0, 0, 228, 128, 5, 0,
- 0, 3, 1, 0, 15, 128,
- 0, 0, 85, 128, 9, 0,
- 228, 160, 4, 0, 0, 4,
- 1, 0, 15, 128, 8, 0,
- 228, 160, 0, 0, 0, 128,
- 1, 0, 228, 128, 4, 0,
- 0, 4, 1, 0, 15, 128,
- 10, 0, 228, 160, 0, 0,
- 170, 128, 1, 0, 228, 128,
- 4, 0, 0, 4, 0, 0,
- 15, 128, 11, 0, 228, 160,
- 0, 0, 255, 128, 1, 0,
- 228, 128, 4, 0, 0, 4,
- 0, 0, 3, 192, 0, 0,
- 255, 128, 0, 0, 228, 160,
- 0, 0, 228, 128, 1, 0,
- 0, 2, 0, 0, 12, 192,
- 0, 0, 228, 128, 255, 255,
- 0, 0, 83, 72, 68, 82,
- 160, 2, 0, 0, 64, 0,
- 1, 0, 168, 0, 0, 0,
- 89, 0, 0, 4, 70, 142,
- 32, 0, 0, 0, 0, 0,
- 8, 0, 0, 0, 89, 0,
- 0, 4, 70, 142, 32, 0,
- 1, 0, 0, 0, 1, 0,
- 0, 0, 89, 0, 0, 4,
- 70, 142, 32, 0, 2, 0,
- 0, 0, 4, 0, 0, 0,
- 95, 0, 0, 3, 50, 16,
- 16, 0, 0, 0, 0, 0,
- 103, 0, 0, 4, 242, 32,
- 16, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 101, 0,
- 0, 3, 50, 32, 16, 0,
- 1, 0, 0, 0, 101, 0,
- 0, 3, 114, 32, 16, 0,
- 2, 0, 0, 0, 104, 0,
- 0, 2, 3, 0, 0, 0,
- 50, 0, 0, 11, 50, 0,
- 16, 0, 0, 0, 0, 0,
- 70, 16, 16, 0, 0, 0,
- 0, 0, 230, 138, 32, 0,
- 0, 0, 0, 0, 1, 0,
- 0, 0, 70, 128, 32, 0,
- 0, 0, 0, 0, 1, 0,
- 0, 0, 56, 0, 0, 8,
- 242, 0, 16, 0, 1, 0,
- 0, 0, 86, 5, 16, 0,
- 0, 0, 0, 0, 70, 142,
- 32, 0, 0, 0, 0, 0,
- 5, 0, 0, 0, 50, 0,
- 0, 10, 242, 0, 16, 0,
- 0, 0, 0, 0, 70, 142,
- 32, 0, 0, 0, 0, 0,
- 4, 0, 0, 0, 6, 0,
- 16, 0, 0, 0, 0, 0,
- 70, 14, 16, 0, 1, 0,
- 0, 0, 0, 0, 0, 8,
- 242, 0, 16, 0, 0, 0,
- 0, 0, 70, 14, 16, 0,
- 0, 0, 0, 0, 70, 142,
- 32, 0, 0, 0, 0, 0,
- 7, 0, 0, 0, 14, 0,
- 0, 7, 114, 0, 16, 0,
- 0, 0, 0, 0, 70, 2,
- 16, 0, 0, 0, 0, 0,
- 246, 15, 16, 0, 0, 0,
- 0, 0, 0, 0, 0, 9,
- 242, 0, 16, 0, 1, 0,
- 0, 0, 70, 14, 16, 0,
- 0, 0, 0, 0, 70, 142,
- 32, 128, 65, 0, 0, 0,
- 1, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 9,
- 50, 0, 16, 0, 0, 0,
- 0, 0, 70, 0, 16, 0,
- 0, 0, 0, 0, 70, 128,
- 32, 128, 65, 0, 0, 0,
- 0, 0, 0, 0, 2, 0,
- 0, 0, 14, 0, 0, 8,
- 50, 0, 16, 0, 0, 0,
- 0, 0, 70, 0, 16, 0,
- 0, 0, 0, 0, 230, 138,
- 32, 0, 0, 0, 0, 0,
- 2, 0, 0, 0, 56, 0,
- 0, 7, 114, 0, 16, 0,
- 1, 0, 0, 0, 246, 15,
- 16, 0, 1, 0, 0, 0,
- 70, 2, 16, 0, 1, 0,
- 0, 0, 56, 0, 0, 8,
- 242, 0, 16, 0, 2, 0,
- 0, 0, 86, 5, 16, 0,
- 1, 0, 0, 0, 70, 142,
- 32, 0, 2, 0, 0, 0,
- 1, 0, 0, 0, 50, 0,
- 0, 10, 242, 0, 16, 0,
- 2, 0, 0, 0, 70, 142,
- 32, 0, 2, 0, 0, 0,
- 0, 0, 0, 0, 6, 0,
- 16, 0, 1, 0, 0, 0,
- 70, 14, 16, 0, 2, 0,
- 0, 0, 50, 0, 0, 10,
- 242, 0, 16, 0, 2, 0,
- 0, 0, 70, 142, 32, 0,
- 2, 0, 0, 0, 2, 0,
- 0, 0, 166, 10, 16, 0,
- 1, 0, 0, 0, 70, 14,
- 16, 0, 2, 0, 0, 0,
- 50, 0, 0, 10, 242, 32,
- 16, 0, 0, 0, 0, 0,
- 70, 142, 32, 0, 2, 0,
- 0, 0, 3, 0, 0, 0,
- 246, 15, 16, 0, 1, 0,
- 0, 0, 70, 14, 16, 0,
- 2, 0, 0, 0, 50, 0,
- 0, 11, 50, 32, 16, 0,
- 1, 0, 0, 0, 70, 16,
- 16, 0, 0, 0, 0, 0,
- 230, 138, 32, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 70, 128, 32, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 54, 0, 0, 5, 66, 0,
- 16, 0, 0, 0, 0, 0,
- 1, 64, 0, 0, 0, 0,
- 128, 63, 56, 0, 0, 7,
- 114, 32, 16, 0, 2, 0,
- 0, 0, 246, 15, 16, 0,
- 0, 0, 0, 0, 70, 2,
- 16, 0, 0, 0, 0, 0,
- 62, 0, 0, 1, 83, 84,
- 65, 84, 116, 0, 0, 0,
- 17, 0, 0, 0, 3, 0,
- 0, 0, 0, 0, 0, 0,
- 4, 0, 0, 0, 15, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 82, 68, 69, 70,
- 148, 2, 0, 0, 3, 0,
- 0, 0, 168, 0, 0, 0,
- 3, 0, 0, 0, 28, 0,
- 0, 0, 0, 4, 254, 255,
- 0, 1, 0, 0, 96, 2,
- 0, 0, 124, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 133, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 1, 0,
- 0, 0, 0, 0, 0, 0,
- 152, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 2, 0, 0, 0,
- 1, 0, 0, 0, 0, 0,
- 0, 0, 80, 101, 114, 76,
- 97, 121, 101, 114, 0, 80,
- 101, 114, 79, 99, 99, 97,
- 115, 105, 111, 110, 97, 108,
- 76, 97, 121, 101, 114, 0,
- 80, 101, 114, 76, 97, 121,
- 101, 114, 77, 97, 110, 97,
- 103, 101, 114, 0, 124, 0,
- 0, 0, 5, 0, 0, 0,
- 240, 0, 0, 0, 128, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 133, 0,
- 0, 0, 2, 0, 0, 0,
- 220, 1, 0, 0, 32, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 152, 0,
- 0, 0, 1, 0, 0, 0,
- 60, 2, 0, 0, 64, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 104, 1,
- 0, 0, 0, 0, 0, 0,
- 16, 0, 0, 0, 2, 0,
- 0, 0, 120, 1, 0, 0,
- 0, 0, 0, 0, 136, 1,
- 0, 0, 16, 0, 0, 0,
- 16, 0, 0, 0, 2, 0,
- 0, 0, 120, 1, 0, 0,
- 0, 0, 0, 0, 147, 1,
- 0, 0, 32, 0, 0, 0,
- 16, 0, 0, 0, 2, 0,
- 0, 0, 120, 1, 0, 0,
- 0, 0, 0, 0, 157, 1,
- 0, 0, 48, 0, 0, 0,
- 4, 0, 0, 0, 0, 0,
- 0, 0, 172, 1, 0, 0,
- 0, 0, 0, 0, 188, 1,
- 0, 0, 64, 0, 0, 0,
- 64, 0, 0, 0, 2, 0,
- 0, 0, 204, 1, 0, 0,
- 0, 0, 0, 0, 118, 84,
- 101, 120, 116, 117, 114, 101,
- 67, 111, 111, 114, 100, 115,
- 0, 171, 1, 0, 3, 0,
- 1, 0, 4, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 118, 76, 97, 121, 101, 114,
- 81, 117, 97, 100, 0, 118,
- 77, 97, 115, 107, 81, 117,
- 97, 100, 0, 102, 76, 97,
- 121, 101, 114, 79, 112, 97,
- 99, 105, 116, 121, 0, 171,
- 0, 0, 3, 0, 1, 0,
- 1, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 109, 76,
- 97, 121, 101, 114, 84, 114,
- 97, 110, 115, 102, 111, 114,
- 109, 0, 3, 0, 3, 0,
- 4, 0, 4, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 12, 2, 0, 0, 0, 0,
- 0, 0, 16, 0, 0, 0,
- 2, 0, 0, 0, 32, 2,
- 0, 0, 0, 0, 0, 0,
- 48, 2, 0, 0, 16, 0,
- 0, 0, 16, 0, 0, 0,
- 0, 0, 0, 0, 32, 2,
- 0, 0, 0, 0, 0, 0,
- 118, 82, 101, 110, 100, 101,
- 114, 84, 97, 114, 103, 101,
- 116, 79, 102, 102, 115, 101,
- 116, 0, 1, 0, 3, 0,
- 1, 0, 4, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 102, 76, 97, 121, 101, 114,
- 67, 111, 108, 111, 114, 0,
- 84, 2, 0, 0, 0, 0,
- 0, 0, 64, 0, 0, 0,
- 2, 0, 0, 0, 204, 1,
- 0, 0, 0, 0, 0, 0,
- 109, 80, 114, 111, 106, 101,
- 99, 116, 105, 111, 110, 0,
- 77, 105, 99, 114, 111, 115,
- 111, 102, 116, 32, 40, 82,
- 41, 32, 72, 76, 83, 76,
- 32, 83, 104, 97, 100, 101,
- 114, 32, 67, 111, 109, 112,
- 105, 108, 101, 114, 32, 54,
- 46, 51, 46, 57, 54, 48,
- 48, 46, 49, 54, 51, 56,
- 52, 0, 171, 171, 73, 83,
- 71, 78, 44, 0, 0, 0,
- 1, 0, 0, 0, 8, 0,
- 0, 0, 32, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 3, 0, 0, 0,
- 0, 0, 0, 0, 3, 3,
- 0, 0, 80, 79, 83, 73,
- 84, 73, 79, 78, 0, 171,
- 171, 171, 79, 83, 71, 78,
- 104, 0, 0, 0, 3, 0,
- 0, 0, 8, 0, 0, 0,
- 80, 0, 0, 0, 0, 0,
- 0, 0, 1, 0, 0, 0,
- 3, 0, 0, 0, 0, 0,
- 0, 0, 15, 0, 0, 0,
- 92, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 3, 0, 0, 0, 1, 0,
- 0, 0, 3, 12, 0, 0,
- 92, 0, 0, 0, 1, 0,
- 0, 0, 0, 0, 0, 0,
- 3, 0, 0, 0, 2, 0,
- 0, 0, 7, 8, 0, 0,
- 83, 86, 95, 80, 111, 115,
- 105, 116, 105, 111, 110, 0,
- 84, 69, 88, 67, 79, 79,
- 82, 68, 0, 171, 171, 171,
- 172, 181, 0, 0, 0, 0,
- 0, 0, 1, 0, 0, 0,
- 2, 0, 0, 0, 0, 0,
- 0, 0, 96, 5, 0, 0,
- 68, 88, 66, 67, 241, 142,
- 205, 228, 253, 156, 187, 52,
- 46, 187, 89, 206, 15, 61,
- 26, 195, 1, 0, 0, 0,
- 96, 5, 0, 0, 6, 0,
- 0, 0, 56, 0, 0, 0,
- 24, 1, 0, 0, 52, 2,
- 0, 0, 176, 2, 0, 0,
- 188, 4, 0, 0, 44, 5,
- 0, 0, 65, 111, 110, 57,
- 216, 0, 0, 0, 216, 0,
- 0, 0, 0, 2, 255, 255,
- 160, 0, 0, 0, 56, 0,
- 0, 0, 1, 0, 44, 0,
- 0, 0, 56, 0, 0, 0,
- 56, 0, 2, 0, 36, 0,
- 0, 0, 56, 0, 0, 0,
- 0, 0, 1, 0, 1, 0,
- 0, 0, 3, 0, 1, 0,
- 0, 0, 0, 0, 0, 0,
- 1, 2, 255, 255, 31, 0,
- 0, 2, 0, 0, 0, 128,
- 0, 0, 3, 176, 31, 0,
- 0, 2, 0, 0, 0, 128,
- 1, 0, 7, 176, 31, 0,
- 0, 2, 0, 0, 0, 144,
- 0, 8, 15, 160, 31, 0,
- 0, 2, 0, 0, 0, 144,
- 1, 8, 15, 160, 6, 0,
- 0, 2, 0, 0, 8, 128,
- 1, 0, 170, 176, 5, 0,
- 0, 3, 0, 0, 3, 128,
- 0, 0, 255, 128, 1, 0,
- 228, 176, 66, 0, 0, 3,
- 1, 0, 15, 128, 0, 0,
- 228, 176, 0, 8, 228, 160,
- 66, 0, 0, 3, 0, 0,
- 15, 128, 0, 0, 228, 128,
- 1, 8, 228, 160, 5, 0,
- 0, 3, 1, 0, 15, 128,
- 1, 0, 228, 128, 0, 0,
- 0, 160, 5, 0, 0, 3,
- 0, 0, 15, 128, 0, 0,
- 255, 128, 1, 0, 228, 128,
- 1, 0, 0, 2, 0, 8,
- 15, 128, 0, 0, 228, 128,
- 255, 255, 0, 0, 83, 72,
- 68, 82, 20, 1, 0, 0,
- 64, 0, 0, 0, 69, 0,
- 0, 0, 89, 0, 0, 4,
- 70, 142, 32, 0, 0, 0,
- 0, 0, 4, 0, 0, 0,
- 90, 0, 0, 3, 0, 96,
- 16, 0, 0, 0, 0, 0,
- 88, 24, 0, 4, 0, 112,
- 16, 0, 0, 0, 0, 0,
- 85, 85, 0, 0, 88, 24,
- 0, 4, 0, 112, 16, 0,
- 1, 0, 0, 0, 85, 85,
- 0, 0, 98, 16, 0, 3,
- 50, 16, 16, 0, 1, 0,
- 0, 0, 98, 16, 0, 3,
- 114, 16, 16, 0, 2, 0,
- 0, 0, 101, 0, 0, 3,
- 242, 32, 16, 0, 0, 0,
- 0, 0, 104, 0, 0, 2,
- 2, 0, 0, 0, 14, 0,
- 0, 7, 50, 0, 16, 0,
- 0, 0, 0, 0, 70, 16,
- 16, 0, 2, 0, 0, 0,
- 166, 26, 16, 0, 2, 0,
- 0, 0, 69, 0, 0, 9,
- 242, 0, 16, 0, 0, 0,
- 0, 0, 70, 0, 16, 0,
- 0, 0, 0, 0, 70, 126,
- 16, 0, 1, 0, 0, 0,
- 0, 96, 16, 0, 0, 0,
- 0, 0, 69, 0, 0, 9,
- 242, 0, 16, 0, 1, 0,
- 0, 0, 70, 16, 16, 0,
- 1, 0, 0, 0, 70, 126,
- 16, 0, 0, 0, 0, 0,
- 0, 96, 16, 0, 0, 0,
- 0, 0, 56, 0, 0, 8,
- 242, 0, 16, 0, 1, 0,
- 0, 0, 70, 14, 16, 0,
- 1, 0, 0, 0, 6, 128,
- 32, 0, 0, 0, 0, 0,
- 3, 0, 0, 0, 56, 0,
- 0, 7, 242, 32, 16, 0,
- 0, 0, 0, 0, 246, 15,
- 16, 0, 0, 0, 0, 0,
- 70, 14, 16, 0, 1, 0,
- 0, 0, 62, 0, 0, 1,
- 83, 84, 65, 84, 116, 0,
- 0, 0, 6, 0, 0, 0,
- 2, 0, 0, 0, 0, 0,
- 0, 0, 3, 0, 0, 0,
- 3, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 2, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 82, 68,
- 69, 70, 4, 2, 0, 0,
- 1, 0, 0, 0, 204, 0,
- 0, 0, 4, 0, 0, 0,
- 28, 0, 0, 0, 0, 4,
- 255, 255, 0, 1, 0, 0,
- 208, 1, 0, 0, 156, 0,
- 0, 0, 3, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 0,
- 0, 0, 0, 0, 0, 0,
- 182, 0, 0, 0, 2, 0,
- 0, 0, 5, 0, 0, 0,
- 4, 0, 0, 0, 255, 255,
- 255, 255, 0, 0, 0, 0,
- 1, 0, 0, 0, 12, 0,
- 0, 0, 187, 0, 0, 0,
- 2, 0, 0, 0, 5, 0,
- 0, 0, 4, 0, 0, 0,
- 255, 255, 255, 255, 1, 0,
- 0, 0, 1, 0, 0, 0,
- 12, 0, 0, 0, 193, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 0,
- 0, 0, 0, 0, 0, 0,
- 76, 97, 121, 101, 114, 84,
- 101, 120, 116, 117, 114, 101,
- 83, 97, 109, 112, 108, 101,
- 114, 76, 105, 110, 101, 97,
- 114, 0, 116, 82, 71, 66,
- 0, 116, 77, 97, 115, 107,
- 0, 80, 101, 114, 76, 97,
- 121, 101, 114, 0, 171, 171,
- 193, 0, 0, 0, 5, 0,
- 0, 0, 228, 0, 0, 0,
- 128, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 92, 1, 0, 0, 0, 0,
- 0, 0, 16, 0, 0, 0,
- 0, 0, 0, 0, 108, 1,
- 0, 0, 0, 0, 0, 0,
- 124, 1, 0, 0, 16, 0,
- 0, 0, 16, 0, 0, 0,
- 0, 0, 0, 0, 108, 1,
- 0, 0, 0, 0, 0, 0,
- 135, 1, 0, 0, 32, 0,
- 0, 0, 16, 0, 0, 0,
- 0, 0, 0, 0, 108, 1,
- 0, 0, 0, 0, 0, 0,
- 145, 1, 0, 0, 48, 0,
- 0, 0, 4, 0, 0, 0,
- 2, 0, 0, 0, 160, 1,
- 0, 0, 0, 0, 0, 0,
- 176, 1, 0, 0, 64, 0,
- 0, 0, 64, 0, 0, 0,
- 0, 0, 0, 0, 192, 1,
- 0, 0, 0, 0, 0, 0,
- 118, 84, 101, 120, 116, 117,
- 114, 101, 67, 111, 111, 114,
- 100, 115, 0, 171, 1, 0,
- 3, 0, 1, 0, 4, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 118, 76, 97, 121,
- 101, 114, 81, 117, 97, 100,
- 0, 118, 77, 97, 115, 107,
- 81, 117, 97, 100, 0, 102,
- 76, 97, 121, 101, 114, 79,
- 112, 97, 99, 105, 116, 121,
- 0, 171, 0, 0, 3, 0,
- 1, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 109, 76, 97, 121, 101, 114,
- 84, 114, 97, 110, 115, 102,
- 111, 114, 109, 0, 3, 0,
- 3, 0, 4, 0, 4, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 77, 105, 99, 114,
- 111, 115, 111, 102, 116, 32,
- 40, 82, 41, 32, 72, 76,
- 83, 76, 32, 83, 104, 97,
- 100, 101, 114, 32, 67, 111,
- 109, 112, 105, 108, 101, 114,
- 32, 54, 46, 51, 46, 57,
- 54, 48, 48, 46, 49, 54,
- 51, 56, 52, 0, 171, 171,
- 73, 83, 71, 78, 104, 0,
- 0, 0, 3, 0, 0, 0,
- 8, 0, 0, 0, 80, 0,
- 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 3, 0,
- 0, 0, 0, 0, 0, 0,
- 15, 0, 0, 0, 92, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 3, 0,
- 0, 0, 1, 0, 0, 0,
- 3, 3, 0, 0, 92, 0,
- 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 3, 0,
- 0, 0, 2, 0, 0, 0,
- 7, 7, 0, 0, 83, 86,
- 95, 80, 111, 115, 105, 116,
- 105, 111, 110, 0, 84, 69,
- 88, 67, 79, 79, 82, 68,
- 0, 171, 171, 171, 79, 83,
- 71, 78, 44, 0, 0, 0,
- 1, 0, 0, 0, 8, 0,
- 0, 0, 32, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 3, 0, 0, 0,
- 0, 0, 0, 0, 15, 0,
- 0, 0, 83, 86, 95, 84,
- 97, 114, 103, 101, 116, 0,
- 171, 171, 100, 190, 0, 0,
- 0, 0, 0, 0, 82, 101,
- 110, 100, 101, 114, 82, 71,
- 66, 65, 76, 97, 121, 101,
- 114, 78, 111, 110, 80, 114,
- 101, 109, 117, 108, 77, 97,
- 115, 107, 0, 4, 0, 0,
- 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0,
- 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0,
- 0, 3, 0, 0, 0, 255,
- 255, 255, 255, 76, 8, 0,
- 0, 68, 88, 66, 67, 190,
- 117, 181, 57, 187, 108, 178,
- 85, 11, 114, 197, 104, 54,
- 155, 141, 115, 1, 0, 0,
- 0, 76, 8, 0, 0, 6,
- 0, 0, 0, 56, 0, 0,
- 0, 4, 2, 0, 0, 144,
- 4, 0, 0, 12, 5, 0,
- 0, 168, 7, 0, 0, 220,
- 7, 0, 0, 65, 111, 110,
- 57, 196, 1, 0, 0, 196,
- 1, 0, 0, 0, 2, 254,
- 255, 96, 1, 0, 0, 100,
- 0, 0, 0, 5, 0, 36,
- 0, 0, 0, 96, 0, 0,
- 0, 96, 0, 0, 0, 36,
- 0, 1, 0, 96, 0, 0,
- 0, 0, 0, 3, 0, 1,
- 0, 0, 0, 0, 0, 0,
- 0, 4, 0, 2, 0, 4,
- 0, 0, 0, 0, 0, 0,
- 0, 7, 0, 1, 0, 6,
- 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 1, 0, 7,
- 0, 0, 0, 0, 0, 2,
- 0, 0, 0, 4, 0, 8,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1, 2, 254,
- 255, 31, 0, 0, 2, 5,
- 0, 0, 128, 0, 0, 15,
- 144, 6, 0, 0, 2, 0,
- 0, 1, 128, 3, 0, 170,
- 160, 4, 0, 0, 4, 0,
- 0, 6, 128, 0, 0, 208,
- 144, 2, 0, 248, 160, 2,
- 0, 208, 160, 5, 0, 0,
- 3, 1, 0, 15, 128, 0,
- 0, 170, 128, 5, 0, 228,
- 160, 4, 0, 0, 4, 1,
- 0, 15, 128, 4, 0, 228,
- 160, 0, 0, 85, 128, 1,
- 0, 228, 128, 2, 0, 0,
- 3, 1, 0, 15, 128, 1,
- 0, 228, 128, 6, 0, 228,
- 160, 2, 0, 0, 3, 0,
- 0, 6, 128, 1, 0, 208,
- 128, 3, 0, 208, 161, 5,
- 0, 0, 3, 0, 0, 8,
- 224, 0, 0, 0, 128, 0,
- 0, 85, 128, 6, 0, 0,
- 2, 0, 0, 1, 128, 3,
- 0, 255, 160, 5, 0, 0,
- 3, 0, 0, 4, 224, 0,
- 0, 0, 128, 0, 0, 170,
- 128, 4, 0, 0, 4, 0,
- 0, 3, 224, 0, 0, 228,
- 144, 1, 0, 238, 160, 1,
- 0, 228, 160, 6, 0, 0,
- 2, 0, 0, 1, 128, 1,
- 0, 255, 128, 5, 0, 0,
- 3, 1, 0, 7, 128, 0,
- 0, 0, 128, 1, 0, 228,
- 128, 2, 0, 0, 3, 0,
- 0, 15, 128, 1, 0, 228,
- 128, 7, 0, 228, 161, 5,
- 0, 0, 3, 0, 0, 7,
- 128, 0, 0, 255, 128, 0,
- 0, 228, 128, 5, 0, 0,
- 3, 1, 0, 15, 128, 0,
- 0, 85, 128, 9, 0, 228,
- 160, 4, 0, 0, 4, 1,
- 0, 15, 128, 8, 0, 228,
- 160, 0, 0, 0, 128, 1,
- 0, 228, 128, 4, 0, 0,
- 4, 1, 0, 15, 128, 10,
- 0, 228, 160, 0, 0, 170,
- 128, 1, 0, 228, 128, 4,
- 0, 0, 4, 0, 0, 15,
- 128, 11, 0, 228, 160, 0,
- 0, 255, 128, 1, 0, 228,
- 128, 4, 0, 0, 4, 0,
- 0, 3, 192, 0, 0, 255,
- 128, 0, 0, 228, 160, 0,
- 0, 228, 128, 1, 0, 0,
- 2, 0, 0, 12, 192, 0,
- 0, 228, 128, 255, 255, 0,
- 0, 83, 72, 68, 82, 132,
- 2, 0, 0, 64, 0, 1,
- 0, 161, 0, 0, 0, 89,
- 0, 0, 4, 70, 142, 32,
- 0, 0, 0, 0, 0, 8,
- 0, 0, 0, 89, 0, 0,
- 4, 70, 142, 32, 0, 1,
- 0, 0, 0, 1, 0, 0,
- 0, 89, 0, 0, 4, 70,
- 142, 32, 0, 2, 0, 0,
- 0, 4, 0, 0, 0, 95,
- 0, 0, 3, 50, 16, 16,
- 0, 0, 0, 0, 0, 103,
- 0, 0, 4, 242, 32, 16,
- 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 101, 0, 0,
- 3, 50, 32, 16, 0, 1,
- 0, 0, 0, 101, 0, 0,
- 3, 194, 32, 16, 0, 1,
- 0, 0, 0, 104, 0, 0,
- 2, 2, 0, 0, 0, 50,
- 0, 0, 11, 50, 0, 16,
- 0, 0, 0, 0, 0, 70,
- 16, 16, 0, 0, 0, 0,
- 0, 230, 138, 32, 0, 0,
- 0, 0, 0, 1, 0, 0,
- 0, 70, 128, 32, 0, 0,
- 0, 0, 0, 1, 0, 0,
- 0, 56, 0, 0, 8, 242,
- 0, 16, 0, 1, 0, 0,
- 0, 86, 5, 16, 0, 0,
- 0, 0, 0, 70, 142, 32,
- 0, 0, 0, 0, 0, 5,
- 0, 0, 0, 50, 0, 0,
- 10, 242, 0, 16, 0, 0,
- 0, 0, 0, 70, 142, 32,
- 0, 0, 0, 0, 0, 4,
- 0, 0, 0, 6, 0, 16,
- 0, 0, 0, 0, 0, 70,
- 14, 16, 0, 1, 0, 0,
- 0, 0, 0, 0, 8, 242,
- 0, 16, 0, 0, 0, 0,
- 0, 70, 14, 16, 0, 0,
- 0, 0, 0, 70, 142, 32,
- 0, 0, 0, 0, 0, 7,
- 0, 0, 0, 14, 0, 0,
- 7, 114, 0, 16, 0, 1,
- 0, 0, 0, 70, 2, 16,
- 0, 0, 0, 0, 0, 246,
- 15, 16, 0, 0, 0, 0,
- 0, 54, 0, 0, 5, 130,
- 0, 16, 0, 1, 0, 0,
- 0, 58, 0, 16, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 9, 50, 0, 16, 0, 0,
- 0, 0, 0, 70, 0, 16,
- 0, 0, 0, 0, 0, 70,
- 128, 32, 128, 65, 0, 0,
- 0, 0, 0, 0, 0, 2,
- 0, 0, 0, 14, 0, 0,
- 8, 194, 32, 16, 0, 1,
- 0, 0, 0, 6, 4, 16,
- 0, 0, 0, 0, 0, 166,
- 142, 32, 0, 0, 0, 0,
- 0, 2, 0, 0, 0, 0,
- 0, 0, 9, 242, 0, 16,
- 0, 0, 0, 0, 0, 70,
- 14, 16, 0, 1, 0, 0,
- 0, 70, 142, 32, 128, 65,
- 0, 0, 0, 1, 0, 0,
- 0, 0, 0, 0, 0, 56,
- 0, 0, 7, 114, 0, 16,
- 0, 0, 0, 0, 0, 246,
- 15, 16, 0, 0, 0, 0,
- 0, 70, 2, 16, 0, 0,
- 0, 0, 0, 56, 0, 0,
- 8, 242, 0, 16, 0, 1,
- 0, 0, 0, 86, 5, 16,
- 0, 0, 0, 0, 0, 70,
- 142, 32, 0, 2, 0, 0,
- 0, 1, 0, 0, 0, 50,
- 0, 0, 10, 242, 0, 16,
- 0, 1, 0, 0, 0, 70,
- 142, 32, 0, 2, 0, 0,
- 0, 0, 0, 0, 0, 6,
- 0, 16, 0, 0, 0, 0,
- 0, 70, 14, 16, 0, 1,
- 0, 0, 0, 50, 0, 0,
- 10, 242, 0, 16, 0, 1,
- 0, 0, 0, 70, 142, 32,
- 0, 2, 0, 0, 0, 2,
- 0, 0, 0, 166, 10, 16,
- 0, 0, 0, 0, 0, 70,
- 14, 16, 0, 1, 0, 0,
- 0, 50, 0, 0, 10, 242,
- 32, 16, 0, 0, 0, 0,
- 0, 70, 142, 32, 0, 2,
- 0, 0, 0, 3, 0, 0,
- 0, 246, 15, 16, 0, 0,
- 0, 0, 0, 70, 14, 16,
- 0, 1, 0, 0, 0, 50,
- 0, 0, 11, 50, 32, 16,
- 0, 1, 0, 0, 0, 70,
- 16, 16, 0, 0, 0, 0,
- 0, 230, 138, 32, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 70, 128, 32, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 62, 0, 0, 1, 83,
- 84, 65, 84, 116, 0, 0,
- 0, 16, 0, 0, 0, 2,
- 0, 0, 0, 0, 0, 0,
- 0, 4, 0, 0, 0, 14,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 82, 68, 69,
- 70, 148, 2, 0, 0, 3,
- 0, 0, 0, 168, 0, 0,
- 0, 3, 0, 0, 0, 28,
- 0, 0, 0, 0, 4, 254,
- 255, 0, 1, 0, 0, 96,
- 2, 0, 0, 124, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0,
- 0, 0, 0, 0, 0, 133,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 1,
- 0, 0, 0, 0, 0, 0,
- 0, 152, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 2, 0, 0,
- 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 80, 101, 114,
- 76, 97, 121, 101, 114, 0,
- 80, 101, 114, 79, 99, 99,
- 97, 115, 105, 111, 110, 97,
- 108, 76, 97, 121, 101, 114,
- 0, 80, 101, 114, 76, 97,
- 121, 101, 114, 77, 97, 110,
- 97, 103, 101, 114, 0, 124,
- 0, 0, 0, 5, 0, 0,
- 0, 240, 0, 0, 0, 128,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 133,
- 0, 0, 0, 2, 0, 0,
- 0, 220, 1, 0, 0, 32,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 152,
- 0, 0, 0, 1, 0, 0,
- 0, 60, 2, 0, 0, 64,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 104,
- 1, 0, 0, 0, 0, 0,
- 0, 16, 0, 0, 0, 2,
- 0, 0, 0, 120, 1, 0,
- 0, 0, 0, 0, 0, 136,
- 1, 0, 0, 16, 0, 0,
- 0, 16, 0, 0, 0, 2,
- 0, 0, 0, 120, 1, 0,
- 0, 0, 0, 0, 0, 147,
- 1, 0, 0, 32, 0, 0,
- 0, 16, 0, 0, 0, 2,
- 0, 0, 0, 120, 1, 0,
- 0, 0, 0, 0, 0, 157,
- 1, 0, 0, 48, 0, 0,
- 0, 4, 0, 0, 0, 0,
- 0, 0, 0, 172, 1, 0,
- 0, 0, 0, 0, 0, 188,
- 1, 0, 0, 64, 0, 0,
- 0, 64, 0, 0, 0, 2,
- 0, 0, 0, 204, 1, 0,
- 0, 0, 0, 0, 0, 118,
- 84, 101, 120, 116, 117, 114,
- 101, 67, 111, 111, 114, 100,
- 115, 0, 171, 1, 0, 3,
- 0, 1, 0, 4, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 118, 76, 97, 121, 101,
- 114, 81, 117, 97, 100, 0,
- 118, 77, 97, 115, 107, 81,
- 117, 97, 100, 0, 102, 76,
- 97, 121, 101, 114, 79, 112,
- 97, 99, 105, 116, 121, 0,
- 171, 0, 0, 3, 0, 1,
- 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 109,
- 76, 97, 121, 101, 114, 84,
- 114, 97, 110, 115, 102, 111,
- 114, 109, 0, 3, 0, 3,
- 0, 4, 0, 4, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 12, 2, 0, 0, 0,
- 0, 0, 0, 16, 0, 0,
- 0, 2, 0, 0, 0, 32,
- 2, 0, 0, 0, 0, 0,
- 0, 48, 2, 0, 0, 16,
- 0, 0, 0, 16, 0, 0,
- 0, 0, 0, 0, 0, 32,
- 2, 0, 0, 0, 0, 0,
- 0, 118, 82, 101, 110, 100,
- 101, 114, 84, 97, 114, 103,
- 101, 116, 79, 102, 102, 115,
- 101, 116, 0, 1, 0, 3,
- 0, 1, 0, 4, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 102, 76, 97, 121, 101,
- 114, 67, 111, 108, 111, 114,
- 0, 84, 2, 0, 0, 0,
- 0, 0, 0, 64, 0, 0,
- 0, 2, 0, 0, 0, 204,
- 1, 0, 0, 0, 0, 0,
- 0, 109, 80, 114, 111, 106,
- 101, 99, 116, 105, 111, 110,
- 0, 77, 105, 99, 114, 111,
- 115, 111, 102, 116, 32, 40,
- 82, 41, 32, 72, 76, 83,
- 76, 32, 83, 104, 97, 100,
- 101, 114, 32, 67, 111, 109,
- 112, 105, 108, 101, 114, 32,
- 54, 46, 51, 46, 57, 54,
- 48, 48, 46, 49, 54, 51,
- 56, 52, 0, 171, 171, 73,
- 83, 71, 78, 44, 0, 0,
- 0, 1, 0, 0, 0, 8,
- 0, 0, 0, 32, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0,
- 0, 0, 0, 0, 0, 3,
- 3, 0, 0, 80, 79, 83,
- 73, 84, 73, 79, 78, 0,
- 171, 171, 171, 79, 83, 71,
- 78, 104, 0, 0, 0, 3,
- 0, 0, 0, 8, 0, 0,
- 0, 80, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0,
- 0, 3, 0, 0, 0, 0,
- 0, 0, 0, 15, 0, 0,
- 0, 92, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 3, 0, 0, 0, 1,
- 0, 0, 0, 3, 12, 0,
- 0, 92, 0, 0, 0, 1,
- 0, 0, 0, 0, 0, 0,
- 0, 3, 0, 0, 0, 1,
- 0, 0, 0, 12, 3, 0,
- 0, 83, 86, 95, 80, 111,
- 115, 105, 116, 105, 111, 110,
- 0, 84, 69, 88, 67, 79,
- 79, 82, 68, 0, 171, 171,
- 171, 29, 196, 0, 0, 0,
- 0, 0, 0, 1, 0, 0,
- 0, 2, 0, 0, 0, 0,
- 0, 0, 0, 40, 5, 0,
- 0, 68, 88, 66, 67, 134,
- 242, 22, 210, 198, 226, 208,
- 239, 25, 201, 212, 19, 217,
- 12, 67, 204, 1, 0, 0,
- 0, 40, 5, 0, 0, 6,
- 0, 0, 0, 56, 0, 0,
- 0, 252, 0, 0, 0, 252,
- 1, 0, 0, 120, 2, 0,
- 0, 132, 4, 0, 0, 244,
- 4, 0, 0, 65, 111, 110,
- 57, 188, 0, 0, 0, 188,
- 0, 0, 0, 0, 2, 255,
- 255, 132, 0, 0, 0, 56,
- 0, 0, 0, 1, 0, 44,
- 0, 0, 0, 56, 0, 0,
- 0, 56, 0, 2, 0, 36,
- 0, 0, 0, 56, 0, 0,
- 0, 0, 0, 1, 0, 1,
- 0, 0, 0, 3, 0, 1,
- 0, 0, 0, 0, 0, 0,
- 0, 1, 2, 255, 255, 31,
- 0, 0, 2, 0, 0, 0,
- 128, 0, 0, 15, 176, 31,
- 0, 0, 2, 0, 0, 0,
- 144, 0, 8, 15, 160, 31,
- 0, 0, 2, 0, 0, 0,
- 144, 1, 8, 15, 160, 1,
- 0, 0, 2, 0, 0, 3,
- 128, 0, 0, 235, 176, 66,
- 0, 0, 3, 1, 0, 15,
- 128, 0, 0, 228, 176, 0,
- 8, 228, 160, 66, 0, 0,
- 3, 0, 0, 15, 128, 0,
- 0, 228, 128, 1, 8, 228,
- 160, 5, 0, 0, 3, 1,
- 0, 15, 128, 1, 0, 228,
- 128, 0, 0, 0, 160, 5,
- 0, 0, 3, 0, 0, 15,
- 128, 0, 0, 255, 128, 1,
- 0, 228, 128, 1, 0, 0,
- 2, 0, 8, 15, 128, 0,
- 0, 228, 128, 255, 255, 0,
- 0, 83, 72, 68, 82, 248,
- 0, 0, 0, 64, 0, 0,
- 0, 62, 0, 0, 0, 89,
- 0, 0, 4, 70, 142, 32,
- 0, 0, 0, 0, 0, 4,
- 0, 0, 0, 90, 0, 0,
- 3, 0, 96, 16, 0, 0,
- 0, 0, 0, 88, 24, 0,
- 4, 0, 112, 16, 0, 0,
- 0, 0, 0, 85, 85, 0,
- 0, 88, 24, 0, 4, 0,
- 112, 16, 0, 1, 0, 0,
- 0, 85, 85, 0, 0, 98,
- 16, 0, 3, 50, 16, 16,
- 0, 1, 0, 0, 0, 98,
- 16, 0, 3, 194, 16, 16,
- 0, 1, 0, 0, 0, 101,
- 0, 0, 3, 242, 32, 16,
- 0, 0, 0, 0, 0, 104,
- 0, 0, 2, 2, 0, 0,
- 0, 69, 0, 0, 9, 242,
- 0, 16, 0, 0, 0, 0,
- 0, 70, 16, 16, 0, 1,
- 0, 0, 0, 70, 126, 16,
- 0, 0, 0, 0, 0, 0,
- 96, 16, 0, 0, 0, 0,
- 0, 56, 0, 0, 8, 242,
- 0, 16, 0, 0, 0, 0,
- 0, 70, 14, 16, 0, 0,
- 0, 0, 0, 6, 128, 32,
- 0, 0, 0, 0, 0, 3,
- 0, 0, 0, 69, 0, 0,
- 9, 242, 0, 16, 0, 1,
- 0, 0, 0, 230, 26, 16,
- 0, 1, 0, 0, 0, 70,
- 126, 16, 0, 1, 0, 0,
- 0, 0, 96, 16, 0, 0,
- 0, 0, 0, 56, 0, 0,
- 7, 242, 32, 16, 0, 0,
- 0, 0, 0, 70, 14, 16,
- 0, 0, 0, 0, 0, 246,
- 15, 16, 0, 1, 0, 0,
- 0, 62, 0, 0, 1, 83,
- 84, 65, 84, 116, 0, 0,
- 0, 5, 0, 0, 0, 2,
- 0, 0, 0, 0, 0, 0,
- 0, 3, 0, 0, 0, 2,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 2, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 82, 68, 69,
- 70, 4, 2, 0, 0, 1,
- 0, 0, 0, 204, 0, 0,
- 0, 4, 0, 0, 0, 28,
- 0, 0, 0, 0, 4, 255,
- 255, 0, 1, 0, 0, 208,
- 1, 0, 0, 156, 0, 0,
- 0, 3, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0,
- 0, 0, 0, 0, 0, 182,
- 0, 0, 0, 2, 0, 0,
- 0, 5, 0, 0, 0, 4,
- 0, 0, 0, 255, 255, 255,
- 255, 0, 0, 0, 0, 1,
- 0, 0, 0, 12, 0, 0,
- 0, 187, 0, 0, 0, 2,
- 0, 0, 0, 5, 0, 0,
- 0, 4, 0, 0, 0, 255,
- 255, 255, 255, 1, 0, 0,
- 0, 1, 0, 0, 0, 12,
- 0, 0, 0, 193, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0,
- 0, 0, 0, 0, 0, 76,
- 97, 121, 101, 114, 84, 101,
- 120, 116, 117, 114, 101, 83,
- 97, 109, 112, 108, 101, 114,
- 76, 105, 110, 101, 97, 114,
- 0, 116, 82, 71, 66, 0,
- 116, 77, 97, 115, 107, 0,
- 80, 101, 114, 76, 97, 121,
- 101, 114, 0, 171, 171, 193,
- 0, 0, 0, 5, 0, 0,
- 0, 228, 0, 0, 0, 128,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 92,
- 1, 0, 0, 0, 0, 0,
- 0, 16, 0, 0, 0, 0,
- 0, 0, 0, 108, 1, 0,
- 0, 0, 0, 0, 0, 124,
- 1, 0, 0, 16, 0, 0,
- 0, 16, 0, 0, 0, 0,
- 0, 0, 0, 108, 1, 0,
- 0, 0, 0, 0, 0, 135,
- 1, 0, 0, 32, 0, 0,
- 0, 16, 0, 0, 0, 0,
- 0, 0, 0, 108, 1, 0,
- 0, 0, 0, 0, 0, 145,
- 1, 0, 0, 48, 0, 0,
- 0, 4, 0, 0, 0, 2,
- 0, 0, 0, 160, 1, 0,
- 0, 0, 0, 0, 0, 176,
- 1, 0, 0, 64, 0, 0,
- 0, 64, 0, 0, 0, 0,
- 0, 0, 0, 192, 1, 0,
- 0, 0, 0, 0, 0, 118,
- 84, 101, 120, 116, 117, 114,
- 101, 67, 111, 111, 114, 100,
- 115, 0, 171, 1, 0, 3,
- 0, 1, 0, 4, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 118, 76, 97, 121, 101,
- 114, 81, 117, 97, 100, 0,
- 118, 77, 97, 115, 107, 81,
- 117, 97, 100, 0, 102, 76,
- 97, 121, 101, 114, 79, 112,
- 97, 99, 105, 116, 121, 0,
- 171, 0, 0, 3, 0, 1,
- 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 109,
- 76, 97, 121, 101, 114, 84,
- 114, 97, 110, 115, 102, 111,
- 114, 109, 0, 3, 0, 3,
- 0, 4, 0, 4, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 77, 105, 99, 114, 111,
- 115, 111, 102, 116, 32, 40,
- 82, 41, 32, 72, 76, 83,
- 76, 32, 83, 104, 97, 100,
- 101, 114, 32, 67, 111, 109,
- 112, 105, 108, 101, 114, 32,
- 54, 46, 51, 46, 57, 54,
- 48, 48, 46, 49, 54, 51,
- 56, 52, 0, 171, 171, 73,
- 83, 71, 78, 104, 0, 0,
- 0, 3, 0, 0, 0, 8,
- 0, 0, 0, 80, 0, 0,
- 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 3, 0, 0,
- 0, 0, 0, 0, 0, 15,
- 0, 0, 0, 92, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0,
- 0, 1, 0, 0, 0, 3,
- 3, 0, 0, 92, 0, 0,
- 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0,
- 0, 1, 0, 0, 0, 12,
- 12, 0, 0, 83, 86, 95,
- 80, 111, 115, 105, 116, 105,
- 111, 110, 0, 84, 69, 88,
- 67, 79, 79, 82, 68, 0,
- 171, 171, 171, 79, 83, 71,
- 78, 44, 0, 0, 0, 1,
- 0, 0, 0, 8, 0, 0,
- 0, 32, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 3, 0, 0, 0, 0,
- 0, 0, 0, 15, 0, 0,
- 0, 83, 86, 95, 84, 97,
- 114, 103, 101, 116, 0, 171,
- 171, 129, 204, 0, 0, 0,
- 0, 0, 0, 82, 101, 110,
- 100, 101, 114, 82, 71, 66,
- 65, 76, 97, 121, 101, 114,
- 80, 114, 101, 109, 117, 108,
- 80, 111, 105, 110, 116, 77,
- 97, 115, 107, 0, 4, 0,
- 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 1, 0,
- 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 0, 0,
- 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 1, 0,
- 0, 0, 3, 0, 0, 0,
- 255, 255, 255, 255, 76, 8,
- 0, 0, 68, 88, 66, 67,
- 190, 117, 181, 57, 187, 108,
- 178, 85, 11, 114, 197, 104,
- 54, 155, 141, 115, 1, 0,
- 0, 0, 76, 8, 0, 0,
- 6, 0, 0, 0, 56, 0,
- 0, 0, 4, 2, 0, 0,
- 144, 4, 0, 0, 12, 5,
- 0, 0, 168, 7, 0, 0,
- 220, 7, 0, 0, 65, 111,
- 110, 57, 196, 1, 0, 0,
- 196, 1, 0, 0, 0, 2,
- 254, 255, 96, 1, 0, 0,
- 100, 0, 0, 0, 5, 0,
- 36, 0, 0, 0, 96, 0,
- 0, 0, 96, 0, 0, 0,
- 36, 0, 1, 0, 96, 0,
- 0, 0, 0, 0, 3, 0,
- 1, 0, 0, 0, 0, 0,
- 0, 0, 4, 0, 2, 0,
- 4, 0, 0, 0, 0, 0,
- 0, 0, 7, 0, 1, 0,
- 6, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 1, 0,
- 7, 0, 0, 0, 0, 0,
- 2, 0, 0, 0, 4, 0,
- 8, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 2,
- 254, 255, 31, 0, 0, 2,
- 5, 0, 0, 128, 0, 0,
- 15, 144, 6, 0, 0, 2,
- 0, 0, 1, 128, 3, 0,
- 170, 160, 4, 0, 0, 4,
- 0, 0, 6, 128, 0, 0,
- 208, 144, 2, 0, 248, 160,
- 2, 0, 208, 160, 5, 0,
- 0, 3, 1, 0, 15, 128,
- 0, 0, 170, 128, 5, 0,
- 228, 160, 4, 0, 0, 4,
- 1, 0, 15, 128, 4, 0,
- 228, 160, 0, 0, 85, 128,
- 1, 0, 228, 128, 2, 0,
- 0, 3, 1, 0, 15, 128,
- 1, 0, 228, 128, 6, 0,
- 228, 160, 2, 0, 0, 3,
- 0, 0, 6, 128, 1, 0,
- 208, 128, 3, 0, 208, 161,
- 5, 0, 0, 3, 0, 0,
- 8, 224, 0, 0, 0, 128,
- 0, 0, 85, 128, 6, 0,
- 0, 2, 0, 0, 1, 128,
- 3, 0, 255, 160, 5, 0,
- 0, 3, 0, 0, 4, 224,
- 0, 0, 0, 128, 0, 0,
- 170, 128, 4, 0, 0, 4,
- 0, 0, 3, 224, 0, 0,
- 228, 144, 1, 0, 238, 160,
- 1, 0, 228, 160, 6, 0,
- 0, 2, 0, 0, 1, 128,
- 1, 0, 255, 128, 5, 0,
- 0, 3, 1, 0, 7, 128,
- 0, 0, 0, 128, 1, 0,
- 228, 128, 2, 0, 0, 3,
- 0, 0, 15, 128, 1, 0,
- 228, 128, 7, 0, 228, 161,
- 5, 0, 0, 3, 0, 0,
- 7, 128, 0, 0, 255, 128,
- 0, 0, 228, 128, 5, 0,
- 0, 3, 1, 0, 15, 128,
- 0, 0, 85, 128, 9, 0,
- 228, 160, 4, 0, 0, 4,
- 1, 0, 15, 128, 8, 0,
- 228, 160, 0, 0, 0, 128,
- 1, 0, 228, 128, 4, 0,
- 0, 4, 1, 0, 15, 128,
- 10, 0, 228, 160, 0, 0,
- 170, 128, 1, 0, 228, 128,
- 4, 0, 0, 4, 0, 0,
- 15, 128, 11, 0, 228, 160,
- 0, 0, 255, 128, 1, 0,
- 228, 128, 4, 0, 0, 4,
- 0, 0, 3, 192, 0, 0,
- 255, 128, 0, 0, 228, 160,
- 0, 0, 228, 128, 1, 0,
- 0, 2, 0, 0, 12, 192,
- 0, 0, 228, 128, 255, 255,
- 0, 0, 83, 72, 68, 82,
- 132, 2, 0, 0, 64, 0,
- 1, 0, 161, 0, 0, 0,
- 89, 0, 0, 4, 70, 142,
- 32, 0, 0, 0, 0, 0,
- 8, 0, 0, 0, 89, 0,
- 0, 4, 70, 142, 32, 0,
- 1, 0, 0, 0, 1, 0,
- 0, 0, 89, 0, 0, 4,
- 70, 142, 32, 0, 2, 0,
- 0, 0, 4, 0, 0, 0,
- 95, 0, 0, 3, 50, 16,
- 16, 0, 0, 0, 0, 0,
- 103, 0, 0, 4, 242, 32,
- 16, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 101, 0,
- 0, 3, 50, 32, 16, 0,
- 1, 0, 0, 0, 101, 0,
- 0, 3, 194, 32, 16, 0,
- 1, 0, 0, 0, 104, 0,
- 0, 2, 2, 0, 0, 0,
- 50, 0, 0, 11, 50, 0,
- 16, 0, 0, 0, 0, 0,
- 70, 16, 16, 0, 0, 0,
- 0, 0, 230, 138, 32, 0,
- 0, 0, 0, 0, 1, 0,
- 0, 0, 70, 128, 32, 0,
- 0, 0, 0, 0, 1, 0,
- 0, 0, 56, 0, 0, 8,
- 242, 0, 16, 0, 1, 0,
- 0, 0, 86, 5, 16, 0,
- 0, 0, 0, 0, 70, 142,
- 32, 0, 0, 0, 0, 0,
- 5, 0, 0, 0, 50, 0,
- 0, 10, 242, 0, 16, 0,
- 0, 0, 0, 0, 70, 142,
- 32, 0, 0, 0, 0, 0,
- 4, 0, 0, 0, 6, 0,
- 16, 0, 0, 0, 0, 0,
- 70, 14, 16, 0, 1, 0,
- 0, 0, 0, 0, 0, 8,
- 242, 0, 16, 0, 0, 0,
- 0, 0, 70, 14, 16, 0,
- 0, 0, 0, 0, 70, 142,
- 32, 0, 0, 0, 0, 0,
- 7, 0, 0, 0, 14, 0,
- 0, 7, 114, 0, 16, 0,
- 1, 0, 0, 0, 70, 2,
- 16, 0, 0, 0, 0, 0,
- 246, 15, 16, 0, 0, 0,
- 0, 0, 54, 0, 0, 5,
- 130, 0, 16, 0, 1, 0,
- 0, 0, 58, 0, 16, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 9, 50, 0, 16, 0,
- 0, 0, 0, 0, 70, 0,
- 16, 0, 0, 0, 0, 0,
- 70, 128, 32, 128, 65, 0,
- 0, 0, 0, 0, 0, 0,
- 2, 0, 0, 0, 14, 0,
- 0, 8, 194, 32, 16, 0,
- 1, 0, 0, 0, 6, 4,
- 16, 0, 0, 0, 0, 0,
- 166, 142, 32, 0, 0, 0,
- 0, 0, 2, 0, 0, 0,
- 0, 0, 0, 9, 242, 0,
- 16, 0, 0, 0, 0, 0,
- 70, 14, 16, 0, 1, 0,
- 0, 0, 70, 142, 32, 128,
- 65, 0, 0, 0, 1, 0,
- 0, 0, 0, 0, 0, 0,
- 56, 0, 0, 7, 114, 0,
- 16, 0, 0, 0, 0, 0,
- 246, 15, 16, 0, 0, 0,
- 0, 0, 70, 2, 16, 0,
- 0, 0, 0, 0, 56, 0,
- 0, 8, 242, 0, 16, 0,
- 1, 0, 0, 0, 86, 5,
- 16, 0, 0, 0, 0, 0,
- 70, 142, 32, 0, 2, 0,
- 0, 0, 1, 0, 0, 0,
- 50, 0, 0, 10, 242, 0,
- 16, 0, 1, 0, 0, 0,
- 70, 142, 32, 0, 2, 0,
- 0, 0, 0, 0, 0, 0,
- 6, 0, 16, 0, 0, 0,
- 0, 0, 70, 14, 16, 0,
- 1, 0, 0, 0, 50, 0,
- 0, 10, 242, 0, 16, 0,
- 1, 0, 0, 0, 70, 142,
- 32, 0, 2, 0, 0, 0,
- 2, 0, 0, 0, 166, 10,
- 16, 0, 0, 0, 0, 0,
- 70, 14, 16, 0, 1, 0,
- 0, 0, 50, 0, 0, 10,
- 242, 32, 16, 0, 0, 0,
- 0, 0, 70, 142, 32, 0,
- 2, 0, 0, 0, 3, 0,
- 0, 0, 246, 15, 16, 0,
- 0, 0, 0, 0, 70, 14,
- 16, 0, 1, 0, 0, 0,
- 50, 0, 0, 11, 50, 32,
- 16, 0, 1, 0, 0, 0,
- 70, 16, 16, 0, 0, 0,
- 0, 0, 230, 138, 32, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 70, 128, 32, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 62, 0, 0, 1,
- 83, 84, 65, 84, 116, 0,
- 0, 0, 16, 0, 0, 0,
- 2, 0, 0, 0, 0, 0,
- 0, 0, 4, 0, 0, 0,
- 14, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 82, 68,
- 69, 70, 148, 2, 0, 0,
- 3, 0, 0, 0, 168, 0,
- 0, 0, 3, 0, 0, 0,
- 28, 0, 0, 0, 0, 4,
- 254, 255, 0, 1, 0, 0,
- 96, 2, 0, 0, 124, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 0,
- 0, 0, 0, 0, 0, 0,
- 133, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 0, 0, 0,
- 1, 0, 0, 0, 0, 0,
- 0, 0, 152, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 2, 0,
- 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 80, 101,
- 114, 76, 97, 121, 101, 114,
- 0, 80, 101, 114, 79, 99,
- 99, 97, 115, 105, 111, 110,
- 97, 108, 76, 97, 121, 101,
- 114, 0, 80, 101, 114, 76,
- 97, 121, 101, 114, 77, 97,
- 110, 97, 103, 101, 114, 0,
- 124, 0, 0, 0, 5, 0,
- 0, 0, 240, 0, 0, 0,
- 128, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 133, 0, 0, 0, 2, 0,
- 0, 0, 220, 1, 0, 0,
- 32, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 152, 0, 0, 0, 1, 0,
- 0, 0, 60, 2, 0, 0,
- 64, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 104, 1, 0, 0, 0, 0,
- 0, 0, 16, 0, 0, 0,
- 2, 0, 0, 0, 120, 1,
- 0, 0, 0, 0, 0, 0,
- 136, 1, 0, 0, 16, 0,
- 0, 0, 16, 0, 0, 0,
- 2, 0, 0, 0, 120, 1,
- 0, 0, 0, 0, 0, 0,
- 147, 1, 0, 0, 32, 0,
- 0, 0, 16, 0, 0, 0,
- 2, 0, 0, 0, 120, 1,
- 0, 0, 0, 0, 0, 0,
- 157, 1, 0, 0, 48, 0,
- 0, 0, 4, 0, 0, 0,
- 0, 0, 0, 0, 172, 1,
- 0, 0, 0, 0, 0, 0,
- 188, 1, 0, 0, 64, 0,
- 0, 0, 64, 0, 0, 0,
- 2, 0, 0, 0, 204, 1,
- 0, 0, 0, 0, 0, 0,
- 118, 84, 101, 120, 116, 117,
- 114, 101, 67, 111, 111, 114,
- 100, 115, 0, 171, 1, 0,
- 3, 0, 1, 0, 4, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 118, 76, 97, 121,
- 101, 114, 81, 117, 97, 100,
- 0, 118, 77, 97, 115, 107,
- 81, 117, 97, 100, 0, 102,
- 76, 97, 121, 101, 114, 79,
- 112, 97, 99, 105, 116, 121,
- 0, 171, 0, 0, 3, 0,
- 1, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 109, 76, 97, 121, 101, 114,
- 84, 114, 97, 110, 115, 102,
- 111, 114, 109, 0, 3, 0,
- 3, 0, 4, 0, 4, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 12, 2, 0, 0,
- 0, 0, 0, 0, 16, 0,
- 0, 0, 2, 0, 0, 0,
- 32, 2, 0, 0, 0, 0,
- 0, 0, 48, 2, 0, 0,
- 16, 0, 0, 0, 16, 0,
- 0, 0, 0, 0, 0, 0,
- 32, 2, 0, 0, 0, 0,
- 0, 0, 118, 82, 101, 110,
- 100, 101, 114, 84, 97, 114,
- 103, 101, 116, 79, 102, 102,
- 115, 101, 116, 0, 1, 0,
- 3, 0, 1, 0, 4, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 102, 76, 97, 121,
- 101, 114, 67, 111, 108, 111,
- 114, 0, 84, 2, 0, 0,
- 0, 0, 0, 0, 64, 0,
- 0, 0, 2, 0, 0, 0,
- 204, 1, 0, 0, 0, 0,
- 0, 0, 109, 80, 114, 111,
- 106, 101, 99, 116, 105, 111,
- 110, 0, 77, 105, 99, 114,
- 111, 115, 111, 102, 116, 32,
- 40, 82, 41, 32, 72, 76,
- 83, 76, 32, 83, 104, 97,
- 100, 101, 114, 32, 67, 111,
- 109, 112, 105, 108, 101, 114,
- 32, 54, 46, 51, 46, 57,
- 54, 48, 48, 46, 49, 54,
- 51, 56, 52, 0, 171, 171,
- 73, 83, 71, 78, 44, 0,
- 0, 0, 1, 0, 0, 0,
- 8, 0, 0, 0, 32, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 3, 0,
- 0, 0, 0, 0, 0, 0,
- 3, 3, 0, 0, 80, 79,
- 83, 73, 84, 73, 79, 78,
- 0, 171, 171, 171, 79, 83,
- 71, 78, 104, 0, 0, 0,
- 3, 0, 0, 0, 8, 0,
- 0, 0, 80, 0, 0, 0,
- 0, 0, 0, 0, 1, 0,
- 0, 0, 3, 0, 0, 0,
- 0, 0, 0, 0, 15, 0,
- 0, 0, 92, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 3, 0, 0, 0,
- 1, 0, 0, 0, 3, 12,
- 0, 0, 92, 0, 0, 0,
- 1, 0, 0, 0, 0, 0,
- 0, 0, 3, 0, 0, 0,
- 1, 0, 0, 0, 12, 3,
- 0, 0, 83, 86, 95, 80,
- 111, 115, 105, 116, 105, 111,
- 110, 0, 84, 69, 88, 67,
- 79, 79, 82, 68, 0, 171,
- 171, 171, 4, 210, 0, 0,
- 0, 0, 0, 0, 1, 0,
- 0, 0, 2, 0, 0, 0,
- 0, 0, 0, 0, 108, 5,
- 0, 0, 68, 88, 66, 67,
- 186, 119, 163, 245, 195, 113,
- 37, 97, 142, 174, 157, 244,
- 160, 5, 164, 176, 1, 0,
- 0, 0, 108, 5, 0, 0,
- 6, 0, 0, 0, 56, 0,
- 0, 0, 252, 0, 0, 0,
- 8, 2, 0, 0, 132, 2,
- 0, 0, 200, 4, 0, 0,
- 56, 5, 0, 0, 65, 111,
- 110, 57, 188, 0, 0, 0,
- 188, 0, 0, 0, 0, 2,
- 255, 255, 132, 0, 0, 0,
- 56, 0, 0, 0, 1, 0,
- 44, 0, 0, 0, 56, 0,
- 0, 0, 56, 0, 2, 0,
- 36, 0, 0, 0, 56, 0,
- 1, 0, 0, 0, 0, 1,
- 1, 0, 0, 0, 3, 0,
- 1, 0, 0, 0, 0, 0,
- 0, 0, 1, 2, 255, 255,
- 31, 0, 0, 2, 0, 0,
- 0, 128, 0, 0, 15, 176,
- 31, 0, 0, 2, 0, 0,
- 0, 144, 0, 8, 15, 160,
- 31, 0, 0, 2, 0, 0,
- 0, 144, 1, 8, 15, 160,
- 1, 0, 0, 2, 0, 0,
- 3, 128, 0, 0, 235, 176,
- 66, 0, 0, 3, 1, 0,
- 15, 128, 0, 0, 228, 176,
- 1, 8, 228, 160, 66, 0,
- 0, 3, 0, 0, 15, 128,
- 0, 0, 228, 128, 0, 8,
- 228, 160, 5, 0, 0, 3,
- 1, 0, 15, 128, 1, 0,
- 228, 128, 0, 0, 0, 160,
- 5, 0, 0, 3, 0, 0,
- 15, 128, 0, 0, 255, 128,
- 1, 0, 228, 128, 1, 0,
- 0, 2, 0, 8, 15, 128,
- 0, 0, 228, 128, 255, 255,
- 0, 0, 83, 72, 68, 82,
- 4, 1, 0, 0, 64, 0,
- 0, 0, 65, 0, 0, 0,
- 89, 0, 0, 4, 70, 142,
- 32, 0, 0, 0, 0, 0,
- 4, 0, 0, 0, 90, 0,
- 0, 3, 0, 96, 16, 0,
- 0, 0, 0, 0, 90, 0,
- 0, 3, 0, 96, 16, 0,
- 1, 0, 0, 0, 88, 24,
- 0, 4, 0, 112, 16, 0,
- 0, 0, 0, 0, 85, 85,
- 0, 0, 88, 24, 0, 4,
- 0, 112, 16, 0, 1, 0,
- 0, 0, 85, 85, 0, 0,
- 98, 16, 0, 3, 50, 16,
- 16, 0, 1, 0, 0, 0,
- 98, 16, 0, 3, 194, 16,
- 16, 0, 1, 0, 0, 0,
- 101, 0, 0, 3, 242, 32,
- 16, 0, 0, 0, 0, 0,
- 104, 0, 0, 2, 2, 0,
- 0, 0, 69, 0, 0, 9,
- 242, 0, 16, 0, 0, 0,
- 0, 0, 70, 16, 16, 0,
- 1, 0, 0, 0, 70, 126,
- 16, 0, 0, 0, 0, 0,
- 0, 96, 16, 0, 1, 0,
- 0, 0, 56, 0, 0, 8,
- 242, 0, 16, 0, 0, 0,
- 0, 0, 70, 14, 16, 0,
- 0, 0, 0, 0, 6, 128,
- 32, 0, 0, 0, 0, 0,
- 3, 0, 0, 0, 69, 0,
- 0, 9, 242, 0, 16, 0,
- 1, 0, 0, 0, 230, 26,
- 16, 0, 1, 0, 0, 0,
- 70, 126, 16, 0, 1, 0,
- 0, 0, 0, 96, 16, 0,
- 0, 0, 0, 0, 56, 0,
- 0, 7, 242, 32, 16, 0,
- 0, 0, 0, 0, 70, 14,
- 16, 0, 0, 0, 0, 0,
- 246, 15, 16, 0, 1, 0,
- 0, 0, 62, 0, 0, 1,
- 83, 84, 65, 84, 116, 0,
- 0, 0, 5, 0, 0, 0,
- 2, 0, 0, 0, 0, 0,
- 0, 0, 3, 0, 0, 0,
- 2, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 2, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 82, 68,
- 69, 70, 60, 2, 0, 0,
- 1, 0, 0, 0, 4, 1,
- 0, 0, 5, 0, 0, 0,
- 28, 0, 0, 0, 0, 4,
- 255, 255, 0, 1, 0, 0,
- 8, 2, 0, 0, 188, 0,
- 0, 0, 3, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 0,
- 0, 0, 0, 0, 0, 0,
- 214, 0, 0, 0, 3, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 0, 0, 0,
- 1, 0, 0, 0, 0, 0,
- 0, 0, 239, 0, 0, 0,
- 2, 0, 0, 0, 5, 0,
- 0, 0, 4, 0, 0, 0,
- 255, 255, 255, 255, 0, 0,
- 0, 0, 1, 0, 0, 0,
- 12, 0, 0, 0, 244, 0,
- 0, 0, 2, 0, 0, 0,
- 5, 0, 0, 0, 4, 0,
- 0, 0, 255, 255, 255, 255,
- 1, 0, 0, 0, 1, 0,
- 0, 0, 12, 0, 0, 0,
- 250, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 0, 0,
- 0, 0, 76, 97, 121, 101,
- 114, 84, 101, 120, 116, 117,
- 114, 101, 83, 97, 109, 112,
- 108, 101, 114, 76, 105, 110,
- 101, 97, 114, 0, 76, 97,
- 121, 101, 114, 84, 101, 120,
- 116, 117, 114, 101, 83, 97,
- 109, 112, 108, 101, 114, 80,
- 111, 105, 110, 116, 0, 116,
- 82, 71, 66, 0, 116, 77,
- 97, 115, 107, 0, 80, 101,
- 114, 76, 97, 121, 101, 114,
- 0, 171, 250, 0, 0, 0,
- 5, 0, 0, 0, 28, 1,
- 0, 0, 128, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 148, 1, 0, 0,
- 0, 0, 0, 0, 16, 0,
- 0, 0, 0, 0, 0, 0,
- 164, 1, 0, 0, 0, 0,
- 0, 0, 180, 1, 0, 0,
- 16, 0, 0, 0, 16, 0,
- 0, 0, 0, 0, 0, 0,
- 164, 1, 0, 0, 0, 0,
- 0, 0, 191, 1, 0, 0,
- 32, 0, 0, 0, 16, 0,
- 0, 0, 0, 0, 0, 0,
- 164, 1, 0, 0, 0, 0,
- 0, 0, 201, 1, 0, 0,
- 48, 0, 0, 0, 4, 0,
- 0, 0, 2, 0, 0, 0,
- 216, 1, 0, 0, 0, 0,
- 0, 0, 232, 1, 0, 0,
- 64, 0, 0, 0, 64, 0,
- 0, 0, 0, 0, 0, 0,
- 248, 1, 0, 0, 0, 0,
- 0, 0, 118, 84, 101, 120,
- 116, 117, 114, 101, 67, 111,
- 111, 114, 100, 115, 0, 171,
- 1, 0, 3, 0, 1, 0,
- 4, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 118, 76,
- 97, 121, 101, 114, 81, 117,
- 97, 100, 0, 118, 77, 97,
- 115, 107, 81, 117, 97, 100,
- 0, 102, 76, 97, 121, 101,
- 114, 79, 112, 97, 99, 105,
- 116, 121, 0, 171, 0, 0,
- 3, 0, 1, 0, 1, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 109, 76, 97, 121,
- 101, 114, 84, 114, 97, 110,
- 115, 102, 111, 114, 109, 0,
- 3, 0, 3, 0, 4, 0,
- 4, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 77, 105,
- 99, 114, 111, 115, 111, 102,
- 116, 32, 40, 82, 41, 32,
- 72, 76, 83, 76, 32, 83,
- 104, 97, 100, 101, 114, 32,
- 67, 111, 109, 112, 105, 108,
- 101, 114, 32, 54, 46, 51,
- 46, 57, 54, 48, 48, 46,
- 49, 54, 51, 56, 52, 0,
- 171, 171, 73, 83, 71, 78,
- 104, 0, 0, 0, 3, 0,
- 0, 0, 8, 0, 0, 0,
- 80, 0, 0, 0, 0, 0,
- 0, 0, 1, 0, 0, 0,
- 3, 0, 0, 0, 0, 0,
- 0, 0, 15, 0, 0, 0,
- 92, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 3, 0, 0, 0, 1, 0,
- 0, 0, 3, 3, 0, 0,
- 92, 0, 0, 0, 1, 0,
- 0, 0, 0, 0, 0, 0,
- 3, 0, 0, 0, 1, 0,
- 0, 0, 12, 12, 0, 0,
- 83, 86, 95, 80, 111, 115,
- 105, 116, 105, 111, 110, 0,
- 84, 69, 88, 67, 79, 79,
- 82, 68, 0, 171, 171, 171,
- 79, 83, 71, 78, 44, 0,
- 0, 0, 1, 0, 0, 0,
- 8, 0, 0, 0, 32, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 3, 0,
- 0, 0, 0, 0, 0, 0,
- 15, 0, 0, 0, 83, 86,
- 95, 84, 97, 114, 103, 101,
- 116, 0, 171, 171, 104, 218,
- 0, 0, 0, 0, 0, 0,
- 82, 101, 110, 100, 101, 114,
- 82, 71, 66, 65, 76, 97,
- 121, 101, 114, 78, 111, 110,
- 80, 114, 101, 109, 117, 108,
- 80, 111, 105, 110, 116, 77,
- 97, 115, 107, 0, 4, 0,
- 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 1, 0,
- 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 0, 0,
- 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 1, 0,
- 0, 0, 3, 0, 0, 0,
- 255, 255, 255, 255, 76, 8,
- 0, 0, 68, 88, 66, 67,
- 190, 117, 181, 57, 187, 108,
- 178, 85, 11, 114, 197, 104,
- 54, 155, 141, 115, 1, 0,
- 0, 0, 76, 8, 0, 0,
- 6, 0, 0, 0, 56, 0,
- 0, 0, 4, 2, 0, 0,
- 144, 4, 0, 0, 12, 5,
- 0, 0, 168, 7, 0, 0,
- 220, 7, 0, 0, 65, 111,
- 110, 57, 196, 1, 0, 0,
- 196, 1, 0, 0, 0, 2,
- 254, 255, 96, 1, 0, 0,
- 100, 0, 0, 0, 5, 0,
- 36, 0, 0, 0, 96, 0,
- 0, 0, 96, 0, 0, 0,
- 36, 0, 1, 0, 96, 0,
- 0, 0, 0, 0, 3, 0,
- 1, 0, 0, 0, 0, 0,
- 0, 0, 4, 0, 2, 0,
- 4, 0, 0, 0, 0, 0,
- 0, 0, 7, 0, 1, 0,
- 6, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 1, 0,
- 7, 0, 0, 0, 0, 0,
- 2, 0, 0, 0, 4, 0,
- 8, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 2,
- 254, 255, 31, 0, 0, 2,
- 5, 0, 0, 128, 0, 0,
- 15, 144, 6, 0, 0, 2,
- 0, 0, 1, 128, 3, 0,
- 170, 160, 4, 0, 0, 4,
- 0, 0, 6, 128, 0, 0,
- 208, 144, 2, 0, 248, 160,
- 2, 0, 208, 160, 5, 0,
- 0, 3, 1, 0, 15, 128,
- 0, 0, 170, 128, 5, 0,
- 228, 160, 4, 0, 0, 4,
- 1, 0, 15, 128, 4, 0,
- 228, 160, 0, 0, 85, 128,
- 1, 0, 228, 128, 2, 0,
- 0, 3, 1, 0, 15, 128,
- 1, 0, 228, 128, 6, 0,
- 228, 160, 2, 0, 0, 3,
- 0, 0, 6, 128, 1, 0,
- 208, 128, 3, 0, 208, 161,
- 5, 0, 0, 3, 0, 0,
- 8, 224, 0, 0, 0, 128,
- 0, 0, 85, 128, 6, 0,
- 0, 2, 0, 0, 1, 128,
- 3, 0, 255, 160, 5, 0,
- 0, 3, 0, 0, 4, 224,
- 0, 0, 0, 128, 0, 0,
- 170, 128, 4, 0, 0, 4,
- 0, 0, 3, 224, 0, 0,
- 228, 144, 1, 0, 238, 160,
- 1, 0, 228, 160, 6, 0,
- 0, 2, 0, 0, 1, 128,
- 1, 0, 255, 128, 5, 0,
- 0, 3, 1, 0, 7, 128,
- 0, 0, 0, 128, 1, 0,
- 228, 128, 2, 0, 0, 3,
- 0, 0, 15, 128, 1, 0,
- 228, 128, 7, 0, 228, 161,
- 5, 0, 0, 3, 0, 0,
- 7, 128, 0, 0, 255, 128,
- 0, 0, 228, 128, 5, 0,
- 0, 3, 1, 0, 15, 128,
- 0, 0, 85, 128, 9, 0,
- 228, 160, 4, 0, 0, 4,
- 1, 0, 15, 128, 8, 0,
- 228, 160, 0, 0, 0, 128,
- 1, 0, 228, 128, 4, 0,
- 0, 4, 1, 0, 15, 128,
- 10, 0, 228, 160, 0, 0,
- 170, 128, 1, 0, 228, 128,
- 4, 0, 0, 4, 0, 0,
- 15, 128, 11, 0, 228, 160,
- 0, 0, 255, 128, 1, 0,
- 228, 128, 4, 0, 0, 4,
- 0, 0, 3, 192, 0, 0,
- 255, 128, 0, 0, 228, 160,
- 0, 0, 228, 128, 1, 0,
- 0, 2, 0, 0, 12, 192,
- 0, 0, 228, 128, 255, 255,
- 0, 0, 83, 72, 68, 82,
- 132, 2, 0, 0, 64, 0,
- 1, 0, 161, 0, 0, 0,
- 89, 0, 0, 4, 70, 142,
- 32, 0, 0, 0, 0, 0,
- 8, 0, 0, 0, 89, 0,
- 0, 4, 70, 142, 32, 0,
- 1, 0, 0, 0, 1, 0,
- 0, 0, 89, 0, 0, 4,
- 70, 142, 32, 0, 2, 0,
- 0, 0, 4, 0, 0, 0,
- 95, 0, 0, 3, 50, 16,
- 16, 0, 0, 0, 0, 0,
- 103, 0, 0, 4, 242, 32,
- 16, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 101, 0,
- 0, 3, 50, 32, 16, 0,
- 1, 0, 0, 0, 101, 0,
- 0, 3, 194, 32, 16, 0,
- 1, 0, 0, 0, 104, 0,
- 0, 2, 2, 0, 0, 0,
- 50, 0, 0, 11, 50, 0,
- 16, 0, 0, 0, 0, 0,
- 70, 16, 16, 0, 0, 0,
- 0, 0, 230, 138, 32, 0,
- 0, 0, 0, 0, 1, 0,
- 0, 0, 70, 128, 32, 0,
- 0, 0, 0, 0, 1, 0,
- 0, 0, 56, 0, 0, 8,
- 242, 0, 16, 0, 1, 0,
- 0, 0, 86, 5, 16, 0,
- 0, 0, 0, 0, 70, 142,
- 32, 0, 0, 0, 0, 0,
- 5, 0, 0, 0, 50, 0,
- 0, 10, 242, 0, 16, 0,
- 0, 0, 0, 0, 70, 142,
- 32, 0, 0, 0, 0, 0,
- 4, 0, 0, 0, 6, 0,
- 16, 0, 0, 0, 0, 0,
- 70, 14, 16, 0, 1, 0,
- 0, 0, 0, 0, 0, 8,
- 242, 0, 16, 0, 0, 0,
- 0, 0, 70, 14, 16, 0,
- 0, 0, 0, 0, 70, 142,
- 32, 0, 0, 0, 0, 0,
- 7, 0, 0, 0, 14, 0,
- 0, 7, 114, 0, 16, 0,
- 1, 0, 0, 0, 70, 2,
- 16, 0, 0, 0, 0, 0,
- 246, 15, 16, 0, 0, 0,
- 0, 0, 54, 0, 0, 5,
- 130, 0, 16, 0, 1, 0,
- 0, 0, 58, 0, 16, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 9, 50, 0, 16, 0,
- 0, 0, 0, 0, 70, 0,
- 16, 0, 0, 0, 0, 0,
- 70, 128, 32, 128, 65, 0,
- 0, 0, 0, 0, 0, 0,
- 2, 0, 0, 0, 14, 0,
- 0, 8, 194, 32, 16, 0,
- 1, 0, 0, 0, 6, 4,
- 16, 0, 0, 0, 0, 0,
- 166, 142, 32, 0, 0, 0,
- 0, 0, 2, 0, 0, 0,
- 0, 0, 0, 9, 242, 0,
- 16, 0, 0, 0, 0, 0,
- 70, 14, 16, 0, 1, 0,
- 0, 0, 70, 142, 32, 128,
- 65, 0, 0, 0, 1, 0,
- 0, 0, 0, 0, 0, 0,
- 56, 0, 0, 7, 114, 0,
- 16, 0, 0, 0, 0, 0,
- 246, 15, 16, 0, 0, 0,
- 0, 0, 70, 2, 16, 0,
- 0, 0, 0, 0, 56, 0,
- 0, 8, 242, 0, 16, 0,
- 1, 0, 0, 0, 86, 5,
- 16, 0, 0, 0, 0, 0,
- 70, 142, 32, 0, 2, 0,
- 0, 0, 1, 0, 0, 0,
- 50, 0, 0, 10, 242, 0,
- 16, 0, 1, 0, 0, 0,
- 70, 142, 32, 0, 2, 0,
- 0, 0, 0, 0, 0, 0,
- 6, 0, 16, 0, 0, 0,
- 0, 0, 70, 14, 16, 0,
- 1, 0, 0, 0, 50, 0,
- 0, 10, 242, 0, 16, 0,
- 1, 0, 0, 0, 70, 142,
- 32, 0, 2, 0, 0, 0,
- 2, 0, 0, 0, 166, 10,
- 16, 0, 0, 0, 0, 0,
- 70, 14, 16, 0, 1, 0,
- 0, 0, 50, 0, 0, 10,
- 242, 32, 16, 0, 0, 0,
- 0, 0, 70, 142, 32, 0,
- 2, 0, 0, 0, 3, 0,
- 0, 0, 246, 15, 16, 0,
- 0, 0, 0, 0, 70, 14,
- 16, 0, 1, 0, 0, 0,
- 50, 0, 0, 11, 50, 32,
- 16, 0, 1, 0, 0, 0,
- 70, 16, 16, 0, 0, 0,
- 0, 0, 230, 138, 32, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 70, 128, 32, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 62, 0, 0, 1,
- 83, 84, 65, 84, 116, 0,
- 0, 0, 16, 0, 0, 0,
- 2, 0, 0, 0, 0, 0,
- 0, 0, 4, 0, 0, 0,
- 14, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 82, 68,
- 69, 70, 148, 2, 0, 0,
- 3, 0, 0, 0, 168, 0,
- 0, 0, 3, 0, 0, 0,
- 28, 0, 0, 0, 0, 4,
- 254, 255, 0, 1, 0, 0,
- 96, 2, 0, 0, 124, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 0,
- 0, 0, 0, 0, 0, 0,
- 133, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 0, 0, 0,
- 1, 0, 0, 0, 0, 0,
- 0, 0, 152, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 2, 0,
- 0, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 80, 101,
- 114, 76, 97, 121, 101, 114,
- 0, 80, 101, 114, 79, 99,
- 99, 97, 115, 105, 111, 110,
- 97, 108, 76, 97, 121, 101,
- 114, 0, 80, 101, 114, 76,
- 97, 121, 101, 114, 77, 97,
- 110, 97, 103, 101, 114, 0,
- 124, 0, 0, 0, 5, 0,
- 0, 0, 240, 0, 0, 0,
- 128, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 133, 0, 0, 0, 2, 0,
- 0, 0, 220, 1, 0, 0,
- 32, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 152, 0, 0, 0, 1, 0,
- 0, 0, 60, 2, 0, 0,
- 64, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 104, 1, 0, 0, 0, 0,
- 0, 0, 16, 0, 0, 0,
- 2, 0, 0, 0, 120, 1,
- 0, 0, 0, 0, 0, 0,
- 136, 1, 0, 0, 16, 0,
- 0, 0, 16, 0, 0, 0,
- 2, 0, 0, 0, 120, 1,
- 0, 0, 0, 0, 0, 0,
- 147, 1, 0, 0, 32, 0,
- 0, 0, 16, 0, 0, 0,
- 2, 0, 0, 0, 120, 1,
- 0, 0, 0, 0, 0, 0,
- 157, 1, 0, 0, 48, 0,
- 0, 0, 4, 0, 0, 0,
- 0, 0, 0, 0, 172, 1,
- 0, 0, 0, 0, 0, 0,
- 188, 1, 0, 0, 64, 0,
- 0, 0, 64, 0, 0, 0,
- 2, 0, 0, 0, 204, 1,
- 0, 0, 0, 0, 0, 0,
- 118, 84, 101, 120, 116, 117,
- 114, 101, 67, 111, 111, 114,
- 100, 115, 0, 171, 1, 0,
- 3, 0, 1, 0, 4, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 118, 76, 97, 121,
- 101, 114, 81, 117, 97, 100,
- 0, 118, 77, 97, 115, 107,
- 81, 117, 97, 100, 0, 102,
- 76, 97, 121, 101, 114, 79,
- 112, 97, 99, 105, 116, 121,
- 0, 171, 0, 0, 3, 0,
- 1, 0, 1, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 109, 76, 97, 121, 101, 114,
- 84, 114, 97, 110, 115, 102,
- 111, 114, 109, 0, 3, 0,
- 3, 0, 4, 0, 4, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 12, 2, 0, 0,
- 0, 0, 0, 0, 16, 0,
- 0, 0, 2, 0, 0, 0,
- 32, 2, 0, 0, 0, 0,
- 0, 0, 48, 2, 0, 0,
- 16, 0, 0, 0, 16, 0,
- 0, 0, 0, 0, 0, 0,
- 32, 2, 0, 0, 0, 0,
- 0, 0, 118, 82, 101, 110,
- 100, 101, 114, 84, 97, 114,
- 103, 101, 116, 79, 102, 102,
- 115, 101, 116, 0, 1, 0,
- 3, 0, 1, 0, 4, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 102, 76, 97, 121,
- 101, 114, 67, 111, 108, 111,
- 114, 0, 84, 2, 0, 0,
- 0, 0, 0, 0, 64, 0,
- 0, 0, 2, 0, 0, 0,
- 204, 1, 0, 0, 0, 0,
- 0, 0, 109, 80, 114, 111,
- 106, 101, 99, 116, 105, 111,
- 110, 0, 77, 105, 99, 114,
- 111, 115, 111, 102, 116, 32,
- 40, 82, 41, 32, 72, 76,
- 83, 76, 32, 83, 104, 97,
- 100, 101, 114, 32, 67, 111,
- 109, 112, 105, 108, 101, 114,
- 32, 54, 46, 51, 46, 57,
- 54, 48, 48, 46, 49, 54,
- 51, 56, 52, 0, 171, 171,
- 73, 83, 71, 78, 44, 0,
- 0, 0, 1, 0, 0, 0,
- 8, 0, 0, 0, 32, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 3, 0,
- 0, 0, 0, 0, 0, 0,
- 3, 3, 0, 0, 80, 79,
- 83, 73, 84, 73, 79, 78,
- 0, 171, 171, 171, 79, 83,
- 71, 78, 104, 0, 0, 0,
- 3, 0, 0, 0, 8, 0,
- 0, 0, 80, 0, 0, 0,
- 0, 0, 0, 0, 1, 0,
- 0, 0, 3, 0, 0, 0,
- 0, 0, 0, 0, 15, 0,
- 0, 0, 92, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 3, 0, 0, 0,
- 1, 0, 0, 0, 3, 12,
- 0, 0, 92, 0, 0, 0,
- 1, 0, 0, 0, 0, 0,
- 0, 0, 3, 0, 0, 0,
- 1, 0, 0, 0, 12, 3,
- 0, 0, 83, 86, 95, 80,
- 111, 115, 105, 116, 105, 111,
- 110, 0, 84, 69, 88, 67,
- 79, 79, 82, 68, 0, 171,
- 171, 171, 50, 224, 0, 0,
- 0, 0, 0, 0, 1, 0,
- 0, 0, 2, 0, 0, 0,
- 0, 0, 0, 0, 108, 5,
- 0, 0, 68, 88, 66, 67,
- 186, 119, 163, 245, 195, 113,
- 37, 97, 142, 174, 157, 244,
- 160, 5, 164, 176, 1, 0,
- 0, 0, 108, 5, 0, 0,
- 6, 0, 0, 0, 56, 0,
- 0, 0, 252, 0, 0, 0,
- 8, 2, 0, 0, 132, 2,
- 0, 0, 200, 4, 0, 0,
- 56, 5, 0, 0, 65, 111,
- 110, 57, 188, 0, 0, 0,
- 188, 0, 0, 0, 0, 2,
- 255, 255, 132, 0, 0, 0,
- 56, 0, 0, 0, 1, 0,
- 44, 0, 0, 0, 56, 0,
- 0, 0, 56, 0, 2, 0,
- 36, 0, 0, 0, 56, 0,
- 1, 0, 0, 0, 0, 1,
- 1, 0, 0, 0, 3, 0,
- 1, 0, 0, 0, 0, 0,
- 0, 0, 1, 2, 255, 255,
- 31, 0, 0, 2, 0, 0,
- 0, 128, 0, 0, 15, 176,
- 31, 0, 0, 2, 0, 0,
- 0, 144, 0, 8, 15, 160,
- 31, 0, 0, 2, 0, 0,
- 0, 144, 1, 8, 15, 160,
- 1, 0, 0, 2, 0, 0,
- 3, 128, 0, 0, 235, 176,
- 66, 0, 0, 3, 1, 0,
- 15, 128, 0, 0, 228, 176,
- 1, 8, 228, 160, 66, 0,
- 0, 3, 0, 0, 15, 128,
- 0, 0, 228, 128, 0, 8,
- 228, 160, 5, 0, 0, 3,
- 1, 0, 15, 128, 1, 0,
- 228, 128, 0, 0, 0, 160,
- 5, 0, 0, 3, 0, 0,
- 15, 128, 0, 0, 255, 128,
- 1, 0, 228, 128, 1, 0,
- 0, 2, 0, 8, 15, 128,
- 0, 0, 228, 128, 255, 255,
- 0, 0, 83, 72, 68, 82,
- 4, 1, 0, 0, 64, 0,
- 0, 0, 65, 0, 0, 0,
- 89, 0, 0, 4, 70, 142,
- 32, 0, 0, 0, 0, 0,
- 4, 0, 0, 0, 90, 0,
- 0, 3, 0, 96, 16, 0,
- 0, 0, 0, 0, 90, 0,
- 0, 3, 0, 96, 16, 0,
- 1, 0, 0, 0, 88, 24,
- 0, 4, 0, 112, 16, 0,
- 0, 0, 0, 0, 85, 85,
- 0, 0, 88, 24, 0, 4,
- 0, 112, 16, 0, 1, 0,
- 0, 0, 85, 85, 0, 0,
- 98, 16, 0, 3, 50, 16,
- 16, 0, 1, 0, 0, 0,
- 98, 16, 0, 3, 194, 16,
- 16, 0, 1, 0, 0, 0,
- 101, 0, 0, 3, 242, 32,
- 16, 0, 0, 0, 0, 0,
- 104, 0, 0, 2, 2, 0,
- 0, 0, 69, 0, 0, 9,
- 242, 0, 16, 0, 0, 0,
- 0, 0, 70, 16, 16, 0,
- 1, 0, 0, 0, 70, 126,
- 16, 0, 0, 0, 0, 0,
- 0, 96, 16, 0, 1, 0,
- 0, 0, 56, 0, 0, 8,
- 242, 0, 16, 0, 0, 0,
- 0, 0, 70, 14, 16, 0,
- 0, 0, 0, 0, 6, 128,
- 32, 0, 0, 0, 0, 0,
- 3, 0, 0, 0, 69, 0,
- 0, 9, 242, 0, 16, 0,
- 1, 0, 0, 0, 230, 26,
- 16, 0, 1, 0, 0, 0,
- 70, 126, 16, 0, 1, 0,
- 0, 0, 0, 96, 16, 0,
- 0, 0, 0, 0, 56, 0,
- 0, 7, 242, 32, 16, 0,
- 0, 0, 0, 0, 70, 14,
- 16, 0, 0, 0, 0, 0,
- 246, 15, 16, 0, 1, 0,
- 0, 0, 62, 0, 0, 1,
- 83, 84, 65, 84, 116, 0,
- 0, 0, 5, 0, 0, 0,
- 2, 0, 0, 0, 0, 0,
- 0, 0, 3, 0, 0, 0,
- 2, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 2, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 82, 68,
- 69, 70, 60, 2, 0, 0,
- 1, 0, 0, 0, 4, 1,
- 0, 0, 5, 0, 0, 0,
- 28, 0, 0, 0, 0, 4,
- 255, 255, 0, 1, 0, 0,
- 8, 2, 0, 0, 188, 0,
- 0, 0, 3, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1, 0,
- 0, 0, 0, 0, 0, 0,
- 214, 0, 0, 0, 3, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 1, 0, 0, 0,
- 1, 0, 0, 0, 0, 0,
- 0, 0, 239, 0, 0, 0,
- 2, 0, 0, 0, 5, 0,
- 0, 0, 4, 0, 0, 0,
- 255, 255, 255, 255, 0, 0,
- 0, 0, 1, 0, 0, 0,
- 12, 0, 0, 0, 244, 0,
- 0, 0, 2, 0, 0, 0,
- 5, 0, 0, 0, 4, 0,
- 0, 0, 255, 255, 255, 255,
- 1, 0, 0, 0, 1, 0,
- 0, 0, 12, 0, 0, 0,
- 250, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 1, 0, 0, 0, 0, 0,
- 0, 0, 76, 97, 121, 101,
- 114, 84, 101, 120, 116, 117,
- 114, 101, 83, 97, 109, 112,
- 108, 101, 114, 76, 105, 110,
- 101, 97, 114, 0, 76, 97,
- 121, 101, 114, 84, 101, 120,
- 116, 117, 114, 101, 83, 97,
- 109, 112, 108, 101, 114, 80,
- 111, 105, 110, 116, 0, 116,
- 82, 71, 66, 0, 116, 77,
- 97, 115, 107, 0, 80, 101,
- 114, 76, 97, 121, 101, 114,
- 0, 171, 250, 0, 0, 0,
- 5, 0, 0, 0, 28, 1,
- 0, 0, 128, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 148, 1, 0, 0,
- 0, 0, 0, 0, 16, 0,
- 0, 0, 0, 0, 0, 0,
- 164, 1, 0, 0, 0, 0,
- 0, 0, 180, 1, 0, 0,
- 16, 0, 0, 0, 16, 0,
- 0, 0, 0, 0, 0, 0,
- 164, 1, 0, 0, 0, 0,
- 0, 0, 191, 1, 0, 0,
- 32, 0, 0, 0, 16, 0,
- 0, 0, 0, 0, 0, 0,
- 164, 1, 0, 0, 0, 0,
- 0, 0, 201, 1, 0, 0,
- 48, 0, 0, 0, 4, 0,
- 0, 0, 2, 0, 0, 0,
- 216, 1, 0, 0, 0, 0,
- 0, 0, 232, 1, 0, 0,
- 64, 0, 0, 0, 64, 0,
- 0, 0, 0, 0, 0, 0,
- 248, 1, 0, 0, 0, 0,
- 0, 0, 118, 84, 101, 120,
- 116, 117, 114, 101, 67, 111,
- 111, 114, 100, 115, 0, 171,
- 1, 0, 3, 0, 1, 0,
- 4, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 118, 76,
- 97, 121, 101, 114, 81, 117,
- 97, 100, 0, 118, 77, 97,
- 115, 107, 81, 117, 97, 100,
- 0, 102, 76, 97, 121, 101,
- 114, 79, 112, 97, 99, 105,
- 116, 121, 0, 171, 0, 0,
- 3, 0, 1, 0, 1, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 109, 76, 97, 121,
- 101, 114, 84, 114, 97, 110,
- 115, 102, 111, 114, 109, 0,
- 3, 0, 3, 0, 4, 0,
- 4, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 77, 105,
- 99, 114, 111, 115, 111, 102,
- 116, 32, 40, 82, 41, 32,
- 72, 76, 83, 76, 32, 83,
- 104, 97, 100, 101, 114, 32,
- 67, 111, 109, 112, 105, 108,
- 101, 114, 32, 54, 46, 51,
- 46, 57, 54, 48, 48, 46,
- 49, 54, 51, 56, 52, 0,
- 171, 171, 73, 83, 71, 78,
- 104, 0, 0, 0, 3, 0,
- 0, 0, 8, 0, 0, 0,
- 80, 0, 0, 0, 0, 0,
- 0, 0, 1, 0, 0, 0,
- 3, 0, 0, 0, 0, 0,
- 0, 0, 15, 0, 0, 0,
- 92, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 3, 0, 0, 0, 1, 0,
- 0, 0, 3, 3, 0, 0,
- 92, 0, 0, 0, 1, 0,
- 0, 0, 0, 0, 0, 0,
- 3, 0, 0, 0, 1, 0,
- 0, 0, 12, 12, 0, 0,
- 83, 86, 95, 80, 111, 115,
- 105, 116, 105, 111, 110, 0,
- 84, 69, 88, 67, 79, 79,
- 82, 68, 0, 171, 171, 171,
- 79, 83, 71, 78, 44, 0,
- 0, 0, 1, 0, 0, 0,
- 8, 0, 0, 0, 32, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 3, 0,
- 0, 0, 0, 0, 0, 0,
- 15, 0, 0, 0, 83, 86,
- 95, 84, 97, 114, 103, 101,
- 116, 0, 171, 171, 150, 232,
- 0, 0, 0, 0, 0, 0,
- 82, 101, 110, 100, 101, 114,
- 89, 67, 98, 67, 114, 76,
- 97, 121, 101, 114, 77, 97,
- 115, 107, 0, 4, 0, 0,
- 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0,
- 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0,
- 0, 3, 0, 0, 0, 255,
- 255, 255, 255, 76, 8, 0,
- 0, 68, 88, 66, 67, 190,
- 117, 181, 57, 187, 108, 178,
- 85, 11, 114, 197, 104, 54,
- 155, 141, 115, 1, 0, 0,
- 0, 76, 8, 0, 0, 6,
- 0, 0, 0, 56, 0, 0,
- 0, 4, 2, 0, 0, 144,
- 4, 0, 0, 12, 5, 0,
- 0, 168, 7, 0, 0, 220,
- 7, 0, 0, 65, 111, 110,
- 57, 196, 1, 0, 0, 196,
- 1, 0, 0, 0, 2, 254,
- 255, 96, 1, 0, 0, 100,
- 0, 0, 0, 5, 0, 36,
- 0, 0, 0, 96, 0, 0,
- 0, 96, 0, 0, 0, 36,
- 0, 1, 0, 96, 0, 0,
- 0, 0, 0, 3, 0, 1,
- 0, 0, 0, 0, 0, 0,
- 0, 4, 0, 2, 0, 4,
- 0, 0, 0, 0, 0, 0,
- 0, 7, 0, 1, 0, 6,
- 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 1, 0, 7,
- 0, 0, 0, 0, 0, 2,
- 0, 0, 0, 4, 0, 8,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1, 2, 254,
- 255, 31, 0, 0, 2, 5,
- 0, 0, 128, 0, 0, 15,
- 144, 6, 0, 0, 2, 0,
- 0, 1, 128, 3, 0, 170,
- 160, 4, 0, 0, 4, 0,
- 0, 6, 128, 0, 0, 208,
- 144, 2, 0, 248, 160, 2,
- 0, 208, 160, 5, 0, 0,
- 3, 1, 0, 15, 128, 0,
- 0, 170, 128, 5, 0, 228,
- 160, 4, 0, 0, 4, 1,
- 0, 15, 128, 4, 0, 228,
- 160, 0, 0, 85, 128, 1,
- 0, 228, 128, 2, 0, 0,
- 3, 1, 0, 15, 128, 1,
- 0, 228, 128, 6, 0, 228,
- 160, 2, 0, 0, 3, 0,
- 0, 6, 128, 1, 0, 208,
- 128, 3, 0, 208, 161, 5,
- 0, 0, 3, 0, 0, 8,
- 224, 0, 0, 0, 128, 0,
- 0, 85, 128, 6, 0, 0,
- 2, 0, 0, 1, 128, 3,
- 0, 255, 160, 5, 0, 0,
- 3, 0, 0, 4, 224, 0,
- 0, 0, 128, 0, 0, 170,
- 128, 4, 0, 0, 4, 0,
- 0, 3, 224, 0, 0, 228,
- 144, 1, 0, 238, 160, 1,
- 0, 228, 160, 6, 0, 0,
- 2, 0, 0, 1, 128, 1,
- 0, 255, 128, 5, 0, 0,
- 3, 1, 0, 7, 128, 0,
- 0, 0, 128, 1, 0, 228,
- 128, 2, 0, 0, 3, 0,
- 0, 15, 128, 1, 0, 228,
- 128, 7, 0, 228, 161, 5,
- 0, 0, 3, 0, 0, 7,
- 128, 0, 0, 255, 128, 0,
- 0, 228, 128, 5, 0, 0,
- 3, 1, 0, 15, 128, 0,
- 0, 85, 128, 9, 0, 228,
- 160, 4, 0, 0, 4, 1,
- 0, 15, 128, 8, 0, 228,
- 160, 0, 0, 0, 128, 1,
- 0, 228, 128, 4, 0, 0,
- 4, 1, 0, 15, 128, 10,
- 0, 228, 160, 0, 0, 170,
- 128, 1, 0, 228, 128, 4,
- 0, 0, 4, 0, 0, 15,
- 128, 11, 0, 228, 160, 0,
- 0, 255, 128, 1, 0, 228,
- 128, 4, 0, 0, 4, 0,
- 0, 3, 192, 0, 0, 255,
- 128, 0, 0, 228, 160, 0,
- 0, 228, 128, 1, 0, 0,
- 2, 0, 0, 12, 192, 0,
- 0, 228, 128, 255, 255, 0,
- 0, 83, 72, 68, 82, 132,
- 2, 0, 0, 64, 0, 1,
- 0, 161, 0, 0, 0, 89,
- 0, 0, 4, 70, 142, 32,
- 0, 0, 0, 0, 0, 8,
- 0, 0, 0, 89, 0, 0,
- 4, 70, 142, 32, 0, 1,
- 0, 0, 0, 1, 0, 0,
- 0, 89, 0, 0, 4, 70,
- 142, 32, 0, 2, 0, 0,
- 0, 4, 0, 0, 0, 95,
- 0, 0, 3, 50, 16, 16,
- 0, 0, 0, 0, 0, 103,
- 0, 0, 4, 242, 32, 16,
- 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 101, 0, 0,
- 3, 50, 32, 16, 0, 1,
- 0, 0, 0, 101, 0, 0,
- 3, 194, 32, 16, 0, 1,
- 0, 0, 0, 104, 0, 0,
- 2, 2, 0, 0, 0, 50,
- 0, 0, 11, 50, 0, 16,
- 0, 0, 0, 0, 0, 70,
- 16, 16, 0, 0, 0, 0,
- 0, 230, 138, 32, 0, 0,
- 0, 0, 0, 1, 0, 0,
- 0, 70, 128, 32, 0, 0,
- 0, 0, 0, 1, 0, 0,
- 0, 56, 0, 0, 8, 242,
- 0, 16, 0, 1, 0, 0,
- 0, 86, 5, 16, 0, 0,
- 0, 0, 0, 70, 142, 32,
- 0, 0, 0, 0, 0, 5,
- 0, 0, 0, 50, 0, 0,
- 10, 242, 0, 16, 0, 0,
- 0, 0, 0, 70, 142, 32,
- 0, 0, 0, 0, 0, 4,
- 0, 0, 0, 6, 0, 16,
- 0, 0, 0, 0, 0, 70,
- 14, 16, 0, 1, 0, 0,
- 0, 0, 0, 0, 8, 242,
- 0, 16, 0, 0, 0, 0,
- 0, 70, 14, 16, 0, 0,
- 0, 0, 0, 70, 142, 32,
- 0, 0, 0, 0, 0, 7,
- 0, 0, 0, 14, 0, 0,
- 7, 114, 0, 16, 0, 1,
- 0, 0, 0, 70, 2, 16,
- 0, 0, 0, 0, 0, 246,
- 15, 16, 0, 0, 0, 0,
- 0, 54, 0, 0, 5, 130,
- 0, 16, 0, 1, 0, 0,
- 0, 58, 0, 16, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 9, 50, 0, 16, 0, 0,
- 0, 0, 0, 70, 0, 16,
- 0, 0, 0, 0, 0, 70,
- 128, 32, 128, 65, 0, 0,
- 0, 0, 0, 0, 0, 2,
- 0, 0, 0, 14, 0, 0,
- 8, 194, 32, 16, 0, 1,
- 0, 0, 0, 6, 4, 16,
- 0, 0, 0, 0, 0, 166,
- 142, 32, 0, 0, 0, 0,
- 0, 2, 0, 0, 0, 0,
- 0, 0, 9, 242, 0, 16,
- 0, 0, 0, 0, 0, 70,
- 14, 16, 0, 1, 0, 0,
- 0, 70, 142, 32, 128, 65,
- 0, 0, 0, 1, 0, 0,
- 0, 0, 0, 0, 0, 56,
- 0, 0, 7, 114, 0, 16,
- 0, 0, 0, 0, 0, 246,
- 15, 16, 0, 0, 0, 0,
- 0, 70, 2, 16, 0, 0,
- 0, 0, 0, 56, 0, 0,
- 8, 242, 0, 16, 0, 1,
- 0, 0, 0, 86, 5, 16,
- 0, 0, 0, 0, 0, 70,
- 142, 32, 0, 2, 0, 0,
- 0, 1, 0, 0, 0, 50,
- 0, 0, 10, 242, 0, 16,
- 0, 1, 0, 0, 0, 70,
- 142, 32, 0, 2, 0, 0,
- 0, 0, 0, 0, 0, 6,
- 0, 16, 0, 0, 0, 0,
- 0, 70, 14, 16, 0, 1,
- 0, 0, 0, 50, 0, 0,
- 10, 242, 0, 16, 0, 1,
- 0, 0, 0, 70, 142, 32,
- 0, 2, 0, 0, 0, 2,
- 0, 0, 0, 166, 10, 16,
- 0, 0, 0, 0, 0, 70,
- 14, 16, 0, 1, 0, 0,
- 0, 50, 0, 0, 10, 242,
- 32, 16, 0, 0, 0, 0,
- 0, 70, 142, 32, 0, 2,
- 0, 0, 0, 3, 0, 0,
- 0, 246, 15, 16, 0, 0,
- 0, 0, 0, 70, 14, 16,
- 0, 1, 0, 0, 0, 50,
- 0, 0, 11, 50, 32, 16,
- 0, 1, 0, 0, 0, 70,
- 16, 16, 0, 0, 0, 0,
- 0, 230, 138, 32, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 70, 128, 32, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 62, 0, 0, 1, 83,
- 84, 65, 84, 116, 0, 0,
- 0, 16, 0, 0, 0, 2,
- 0, 0, 0, 0, 0, 0,
- 0, 4, 0, 0, 0, 14,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 82, 68, 69,
- 70, 148, 2, 0, 0, 3,
- 0, 0, 0, 168, 0, 0,
- 0, 3, 0, 0, 0, 28,
- 0, 0, 0, 0, 4, 254,
- 255, 0, 1, 0, 0, 96,
- 2, 0, 0, 124, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0,
- 0, 0, 0, 0, 0, 133,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 1,
- 0, 0, 0, 0, 0, 0,
- 0, 152, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 2, 0, 0,
- 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 80, 101, 114,
- 76, 97, 121, 101, 114, 0,
- 80, 101, 114, 79, 99, 99,
- 97, 115, 105, 111, 110, 97,
- 108, 76, 97, 121, 101, 114,
- 0, 80, 101, 114, 76, 97,
- 121, 101, 114, 77, 97, 110,
- 97, 103, 101, 114, 0, 124,
- 0, 0, 0, 5, 0, 0,
- 0, 240, 0, 0, 0, 128,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 133,
- 0, 0, 0, 2, 0, 0,
- 0, 220, 1, 0, 0, 32,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 152,
- 0, 0, 0, 1, 0, 0,
- 0, 60, 2, 0, 0, 64,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 104,
- 1, 0, 0, 0, 0, 0,
- 0, 16, 0, 0, 0, 2,
- 0, 0, 0, 120, 1, 0,
- 0, 0, 0, 0, 0, 136,
- 1, 0, 0, 16, 0, 0,
- 0, 16, 0, 0, 0, 2,
- 0, 0, 0, 120, 1, 0,
- 0, 0, 0, 0, 0, 147,
- 1, 0, 0, 32, 0, 0,
- 0, 16, 0, 0, 0, 2,
- 0, 0, 0, 120, 1, 0,
- 0, 0, 0, 0, 0, 157,
- 1, 0, 0, 48, 0, 0,
- 0, 4, 0, 0, 0, 0,
- 0, 0, 0, 172, 1, 0,
- 0, 0, 0, 0, 0, 188,
- 1, 0, 0, 64, 0, 0,
- 0, 64, 0, 0, 0, 2,
- 0, 0, 0, 204, 1, 0,
- 0, 0, 0, 0, 0, 118,
- 84, 101, 120, 116, 117, 114,
- 101, 67, 111, 111, 114, 100,
- 115, 0, 171, 1, 0, 3,
- 0, 1, 0, 4, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 118, 76, 97, 121, 101,
- 114, 81, 117, 97, 100, 0,
- 118, 77, 97, 115, 107, 81,
- 117, 97, 100, 0, 102, 76,
- 97, 121, 101, 114, 79, 112,
- 97, 99, 105, 116, 121, 0,
- 171, 0, 0, 3, 0, 1,
- 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 109,
- 76, 97, 121, 101, 114, 84,
- 114, 97, 110, 115, 102, 111,
- 114, 109, 0, 3, 0, 3,
- 0, 4, 0, 4, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 12, 2, 0, 0, 0,
- 0, 0, 0, 16, 0, 0,
- 0, 2, 0, 0, 0, 32,
- 2, 0, 0, 0, 0, 0,
- 0, 48, 2, 0, 0, 16,
- 0, 0, 0, 16, 0, 0,
- 0, 0, 0, 0, 0, 32,
- 2, 0, 0, 0, 0, 0,
- 0, 118, 82, 101, 110, 100,
- 101, 114, 84, 97, 114, 103,
- 101, 116, 79, 102, 102, 115,
- 101, 116, 0, 1, 0, 3,
- 0, 1, 0, 4, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 102, 76, 97, 121, 101,
- 114, 67, 111, 108, 111, 114,
- 0, 84, 2, 0, 0, 0,
- 0, 0, 0, 64, 0, 0,
- 0, 2, 0, 0, 0, 204,
- 1, 0, 0, 0, 0, 0,
- 0, 109, 80, 114, 111, 106,
- 101, 99, 116, 105, 111, 110,
- 0, 77, 105, 99, 114, 111,
- 115, 111, 102, 116, 32, 40,
- 82, 41, 32, 72, 76, 83,
- 76, 32, 83, 104, 97, 100,
- 101, 114, 32, 67, 111, 109,
- 112, 105, 108, 101, 114, 32,
- 54, 46, 51, 46, 57, 54,
- 48, 48, 46, 49, 54, 51,
- 56, 52, 0, 171, 171, 73,
- 83, 71, 78, 44, 0, 0,
- 0, 1, 0, 0, 0, 8,
- 0, 0, 0, 32, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0,
- 0, 0, 0, 0, 0, 3,
- 3, 0, 0, 80, 79, 83,
- 73, 84, 73, 79, 78, 0,
- 171, 171, 171, 79, 83, 71,
- 78, 104, 0, 0, 0, 3,
- 0, 0, 0, 8, 0, 0,
- 0, 80, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0,
- 0, 3, 0, 0, 0, 0,
- 0, 0, 0, 15, 0, 0,
- 0, 92, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 3, 0, 0, 0, 1,
- 0, 0, 0, 3, 12, 0,
- 0, 92, 0, 0, 0, 1,
- 0, 0, 0, 0, 0, 0,
- 0, 3, 0, 0, 0, 1,
- 0, 0, 0, 12, 3, 0,
- 0, 83, 86, 95, 80, 111,
- 115, 105, 116, 105, 111, 110,
- 0, 84, 69, 88, 67, 79,
- 79, 82, 68, 0, 171, 171,
- 171, 83, 238, 0, 0, 0,
- 0, 0, 0, 1, 0, 0,
- 0, 2, 0, 0, 0, 0,
- 0, 0, 0, 52, 8, 0,
- 0, 68, 88, 66, 67, 1,
- 74, 129, 243, 237, 178, 75,
- 1, 68, 217, 73, 188, 217,
- 60, 1, 254, 1, 0, 0,
- 0, 52, 8, 0, 0, 6,
- 0, 0, 0, 56, 0, 0,
- 0, 24, 2, 0, 0, 196,
- 4, 0, 0, 64, 5, 0,
- 0, 144, 7, 0, 0, 0,
- 8, 0, 0, 65, 111, 110,
- 57, 216, 1, 0, 0, 216,
- 1, 0, 0, 0, 2, 255,
- 255, 152, 1, 0, 0, 64,
- 0, 0, 0, 1, 0, 52,
- 0, 0, 0, 64, 0, 0,
- 0, 64, 0, 4, 0, 36,
- 0, 0, 0, 64, 0, 0,
- 0, 0, 0, 1, 0, 1,
- 0, 2, 0, 2, 0, 3,
- 0, 3, 0, 0, 0, 3,
- 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 1, 2, 255,
- 255, 81, 0, 0, 5, 1,
- 0, 15, 160, 115, 128, 0,
- 191, 18, 131, 128, 189, 182,
- 74, 204, 63, 205, 30, 80,
- 63, 81, 0, 0, 5, 2,
- 0, 15, 160, 103, 10, 149,
- 63, 76, 26, 1, 64, 196,
- 148, 200, 62, 0, 0, 128,
- 63, 31, 0, 0, 2, 0,
- 0, 0, 128, 0, 0, 15,
- 176, 31, 0, 0, 2, 0,
- 0, 0, 144, 0, 8, 15,
- 160, 31, 0, 0, 2, 0,
- 0, 0, 144, 1, 8, 15,
- 160, 31, 0, 0, 2, 0,
- 0, 0, 144, 2, 8, 15,
- 160, 31, 0, 0, 2, 0,
- 0, 0, 144, 3, 8, 15,
- 160, 66, 0, 0, 3, 0,
- 0, 15, 128, 0, 0, 228,
- 176, 0, 8, 228, 160, 66,
- 0, 0, 3, 1, 0, 15,
- 128, 0, 0, 228, 176, 2,
- 8, 228, 160, 2, 0, 0,
- 3, 0, 0, 1, 128, 1,
- 0, 255, 128, 1, 0, 0,
- 160, 5, 0, 0, 3, 0,
- 0, 3, 128, 0, 0, 0,
- 128, 1, 0, 238, 160, 2,
- 0, 0, 3, 0, 0, 4,
- 128, 0, 0, 255, 128, 1,
- 0, 85, 160, 4, 0, 0,
- 4, 0, 0, 2, 128, 0,
- 0, 170, 128, 2, 0, 0,
- 160, 0, 0, 85, 129, 4,
- 0, 0, 4, 1, 0, 1,
- 128, 0, 0, 170, 128, 2,
- 0, 0, 160, 0, 0, 0,
- 128, 1, 0, 0, 2, 2,
- 0, 3, 128, 0, 0, 235,
- 176, 66, 0, 0, 3, 3,
- 0, 15, 128, 0, 0, 228,
- 176, 1, 8, 228, 160, 66,
- 0, 0, 3, 2, 0, 15,
- 128, 2, 0, 228, 128, 3,
- 8, 228, 160, 2, 0, 0,
- 3, 0, 0, 1, 128, 3,
- 0, 255, 128, 1, 0, 0,
- 160, 4, 0, 0, 4, 1,
- 0, 2, 128, 0, 0, 0,
- 128, 2, 0, 170, 161, 0,
- 0, 85, 128, 5, 0, 0,
- 3, 0, 0, 1, 128, 0,
- 0, 0, 128, 2, 0, 85,
- 160, 4, 0, 0, 4, 1,
- 0, 4, 128, 0, 0, 170,
- 128, 2, 0, 0, 160, 0,
- 0, 0, 128, 1, 0, 0,
- 2, 1, 0, 8, 128, 2,
- 0, 255, 160, 5, 0, 0,
- 3, 0, 0, 15, 128, 1,
- 0, 228, 128, 0, 0, 0,
- 160, 5, 0, 0, 3, 0,
- 0, 15, 128, 2, 0, 255,
- 128, 0, 0, 228, 128, 1,
- 0, 0, 2, 0, 8, 15,
- 128, 0, 0, 228, 128, 255,
- 255, 0, 0, 83, 72, 68,
- 82, 164, 2, 0, 0, 64,
- 0, 0, 0, 169, 0, 0,
- 0, 89, 0, 0, 4, 70,
- 142, 32, 0, 0, 0, 0,
- 0, 4, 0, 0, 0, 90,
- 0, 0, 3, 0, 96, 16,
- 0, 0, 0, 0, 0, 88,
- 24, 0, 4, 0, 112, 16,
- 0, 0, 0, 0, 0, 85,
- 85, 0, 0, 88, 24, 0,
- 4, 0, 112, 16, 0, 1,
- 0, 0, 0, 85, 85, 0,
- 0, 88, 24, 0, 4, 0,
- 112, 16, 0, 2, 0, 0,
- 0, 85, 85, 0, 0, 88,
- 24, 0, 4, 0, 112, 16,
- 0, 3, 0, 0, 0, 85,
- 85, 0, 0, 98, 16, 0,
- 3, 50, 16, 16, 0, 1,
- 0, 0, 0, 98, 16, 0,
- 3, 194, 16, 16, 0, 1,
- 0, 0, 0, 101, 0, 0,
- 3, 242, 32, 16, 0, 0,
- 0, 0, 0, 104, 0, 0,
- 2, 3, 0, 0, 0, 69,
- 0, 0, 9, 242, 0, 16,
- 0, 0, 0, 0, 0, 70,
- 16, 16, 0, 1, 0, 0,
- 0, 70, 126, 16, 0, 2,
- 0, 0, 0, 0, 96, 16,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 7, 18, 0, 16,
- 0, 0, 0, 0, 0, 58,
- 0, 16, 0, 0, 0, 0,
- 0, 1, 64, 0, 0, 115,
- 128, 0, 191, 56, 0, 0,
- 10, 50, 0, 16, 0, 0,
- 0, 0, 0, 6, 0, 16,
- 0, 0, 0, 0, 0, 2,
- 64, 0, 0, 182, 74, 204,
- 63, 205, 30, 80, 63, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 69, 0, 0, 9, 242,
- 0, 16, 0, 1, 0, 0,
- 0, 70, 16, 16, 0, 1,
- 0, 0, 0, 70, 126, 16,
- 0, 0, 0, 0, 0, 0,
- 96, 16, 0, 0, 0, 0,
- 0, 0, 0, 0, 7, 66,
- 0, 16, 0, 0, 0, 0,
- 0, 58, 0, 16, 0, 1,
- 0, 0, 0, 1, 64, 0,
- 0, 18, 131, 128, 189, 50,
- 0, 0, 10, 34, 0, 16,
- 0, 0, 0, 0, 0, 42,
- 0, 16, 0, 0, 0, 0,
- 0, 1, 64, 0, 0, 103,
- 10, 149, 63, 26, 0, 16,
- 128, 65, 0, 0, 0, 0,
- 0, 0, 0, 50, 0, 0,
- 9, 18, 0, 16, 0, 1,
- 0, 0, 0, 42, 0, 16,
- 0, 0, 0, 0, 0, 1,
- 64, 0, 0, 103, 10, 149,
- 63, 10, 0, 16, 0, 0,
- 0, 0, 0, 69, 0, 0,
- 9, 242, 0, 16, 0, 2,
- 0, 0, 0, 70, 16, 16,
- 0, 1, 0, 0, 0, 70,
- 126, 16, 0, 1, 0, 0,
- 0, 0, 96, 16, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 7, 18, 0, 16, 0, 0,
- 0, 0, 0, 58, 0, 16,
- 0, 2, 0, 0, 0, 1,
- 64, 0, 0, 115, 128, 0,
- 191, 50, 0, 0, 10, 34,
- 0, 16, 0, 1, 0, 0,
- 0, 10, 0, 16, 128, 65,
- 0, 0, 0, 0, 0, 0,
- 0, 1, 64, 0, 0, 196,
- 148, 200, 62, 26, 0, 16,
- 0, 0, 0, 0, 0, 56,
- 0, 0, 7, 18, 0, 16,
- 0, 0, 0, 0, 0, 10,
- 0, 16, 0, 0, 0, 0,
- 0, 1, 64, 0, 0, 76,
- 26, 1, 64, 50, 0, 0,
- 9, 66, 0, 16, 0, 1,
- 0, 0, 0, 42, 0, 16,
- 0, 0, 0, 0, 0, 1,
- 64, 0, 0, 103, 10, 149,
- 63, 10, 0, 16, 0, 0,
- 0, 0, 0, 54, 0, 0,
- 5, 130, 0, 16, 0, 1,
- 0, 0, 0, 1, 64, 0,
- 0, 0, 0, 128, 63, 56,
- 0, 0, 8, 242, 0, 16,
- 0, 0, 0, 0, 0, 70,
- 14, 16, 0, 1, 0, 0,
- 0, 6, 128, 32, 0, 0,
- 0, 0, 0, 3, 0, 0,
- 0, 69, 0, 0, 9, 242,
- 0, 16, 0, 1, 0, 0,
- 0, 230, 26, 16, 0, 1,
- 0, 0, 0, 70, 126, 16,
- 0, 3, 0, 0, 0, 0,
- 96, 16, 0, 0, 0, 0,
- 0, 56, 0, 0, 7, 242,
- 32, 16, 0, 0, 0, 0,
- 0, 70, 14, 16, 0, 0,
- 0, 0, 0, 246, 15, 16,
- 0, 1, 0, 0, 0, 62,
- 0, 0, 1, 83, 84, 65,
- 84, 116, 0, 0, 0, 17,
- 0, 0, 0, 3, 0, 0,
- 0, 0, 0, 0, 0, 3,
- 0, 0, 0, 11, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 4, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 82, 68, 69, 70, 72,
- 2, 0, 0, 1, 0, 0,
- 0, 16, 1, 0, 0, 6,
- 0, 0, 0, 28, 0, 0,
- 0, 0, 4, 255, 255, 0,
- 1, 0, 0, 20, 2, 0,
- 0, 220, 0, 0, 0, 3,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 246, 0, 0,
- 0, 2, 0, 0, 0, 5,
- 0, 0, 0, 4, 0, 0,
- 0, 255, 255, 255, 255, 0,
- 0, 0, 0, 1, 0, 0,
- 0, 12, 0, 0, 0, 249,
- 0, 0, 0, 2, 0, 0,
- 0, 5, 0, 0, 0, 4,
- 0, 0, 0, 255, 255, 255,
- 255, 1, 0, 0, 0, 1,
- 0, 0, 0, 12, 0, 0,
- 0, 253, 0, 0, 0, 2,
- 0, 0, 0, 5, 0, 0,
- 0, 4, 0, 0, 0, 255,
- 255, 255, 255, 2, 0, 0,
- 0, 1, 0, 0, 0, 12,
- 0, 0, 0, 1, 1, 0,
- 0, 2, 0, 0, 0, 5,
- 0, 0, 0, 4, 0, 0,
- 0, 255, 255, 255, 255, 3,
- 0, 0, 0, 1, 0, 0,
- 0, 12, 0, 0, 0, 7,
- 1, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 0, 0, 0,
- 0, 76, 97, 121, 101, 114,
- 84, 101, 120, 116, 117, 114,
- 101, 83, 97, 109, 112, 108,
- 101, 114, 76, 105, 110, 101,
- 97, 114, 0, 116, 89, 0,
- 116, 67, 98, 0, 116, 67,
- 114, 0, 116, 77, 97, 115,
- 107, 0, 80, 101, 114, 76,
- 97, 121, 101, 114, 0, 7,
- 1, 0, 0, 5, 0, 0,
- 0, 40, 1, 0, 0, 128,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 160,
- 1, 0, 0, 0, 0, 0,
- 0, 16, 0, 0, 0, 0,
- 0, 0, 0, 176, 1, 0,
- 0, 0, 0, 0, 0, 192,
- 1, 0, 0, 16, 0, 0,
- 0, 16, 0, 0, 0, 0,
- 0, 0, 0, 176, 1, 0,
- 0, 0, 0, 0, 0, 203,
- 1, 0, 0, 32, 0, 0,
- 0, 16, 0, 0, 0, 0,
- 0, 0, 0, 176, 1, 0,
- 0, 0, 0, 0, 0, 213,
- 1, 0, 0, 48, 0, 0,
- 0, 4, 0, 0, 0, 2,
- 0, 0, 0, 228, 1, 0,
- 0, 0, 0, 0, 0, 244,
- 1, 0, 0, 64, 0, 0,
- 0, 64, 0, 0, 0, 0,
- 0, 0, 0, 4, 2, 0,
- 0, 0, 0, 0, 0, 118,
- 84, 101, 120, 116, 117, 114,
- 101, 67, 111, 111, 114, 100,
- 115, 0, 171, 1, 0, 3,
- 0, 1, 0, 4, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 118, 76, 97, 121, 101,
- 114, 81, 117, 97, 100, 0,
- 118, 77, 97, 115, 107, 81,
- 117, 97, 100, 0, 102, 76,
- 97, 121, 101, 114, 79, 112,
- 97, 99, 105, 116, 121, 0,
- 171, 0, 0, 3, 0, 1,
- 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 109,
- 76, 97, 121, 101, 114, 84,
- 114, 97, 110, 115, 102, 111,
- 114, 109, 0, 3, 0, 3,
- 0, 4, 0, 4, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 77, 105, 99, 114, 111,
- 115, 111, 102, 116, 32, 40,
- 82, 41, 32, 72, 76, 83,
- 76, 32, 83, 104, 97, 100,
- 101, 114, 32, 67, 111, 109,
- 112, 105, 108, 101, 114, 32,
- 54, 46, 51, 46, 57, 54,
- 48, 48, 46, 49, 54, 51,
- 56, 52, 0, 171, 171, 73,
- 83, 71, 78, 104, 0, 0,
- 0, 3, 0, 0, 0, 8,
- 0, 0, 0, 80, 0, 0,
- 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 3, 0, 0,
- 0, 0, 0, 0, 0, 15,
- 0, 0, 0, 92, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0,
- 0, 1, 0, 0, 0, 3,
- 3, 0, 0, 92, 0, 0,
- 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0,
- 0, 1, 0, 0, 0, 12,
- 12, 0, 0, 83, 86, 95,
- 80, 111, 115, 105, 116, 105,
- 111, 110, 0, 84, 69, 88,
- 67, 79, 79, 82, 68, 0,
- 171, 171, 171, 79, 83, 71,
- 78, 44, 0, 0, 0, 1,
- 0, 0, 0, 8, 0, 0,
- 0, 32, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 3, 0, 0, 0, 0,
- 0, 0, 0, 15, 0, 0,
- 0, 83, 86, 95, 84, 97,
- 114, 103, 101, 116, 0, 171,
- 171, 183, 246, 0, 0, 0,
- 0, 0, 0, 82, 101, 110,
- 100, 101, 114, 67, 111, 109,
- 112, 111, 110, 101, 110, 116,
- 65, 108, 112, 104, 97, 76,
- 97, 121, 101, 114, 77, 97,
- 115, 107, 0, 4, 0, 0,
- 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0,
- 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0,
- 0, 3, 0, 0, 0, 255,
- 255, 255, 255, 76, 8, 0,
- 0, 68, 88, 66, 67, 190,
- 117, 181, 57, 187, 108, 178,
- 85, 11, 114, 197, 104, 54,
- 155, 141, 115, 1, 0, 0,
- 0, 76, 8, 0, 0, 6,
- 0, 0, 0, 56, 0, 0,
- 0, 4, 2, 0, 0, 144,
- 4, 0, 0, 12, 5, 0,
- 0, 168, 7, 0, 0, 220,
- 7, 0, 0, 65, 111, 110,
- 57, 196, 1, 0, 0, 196,
- 1, 0, 0, 0, 2, 254,
- 255, 96, 1, 0, 0, 100,
- 0, 0, 0, 5, 0, 36,
- 0, 0, 0, 96, 0, 0,
- 0, 96, 0, 0, 0, 36,
- 0, 1, 0, 96, 0, 0,
- 0, 0, 0, 3, 0, 1,
- 0, 0, 0, 0, 0, 0,
- 0, 4, 0, 2, 0, 4,
- 0, 0, 0, 0, 0, 0,
- 0, 7, 0, 1, 0, 6,
- 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 1, 0, 7,
- 0, 0, 0, 0, 0, 2,
- 0, 0, 0, 4, 0, 8,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1, 2, 254,
- 255, 31, 0, 0, 2, 5,
- 0, 0, 128, 0, 0, 15,
- 144, 6, 0, 0, 2, 0,
- 0, 1, 128, 3, 0, 170,
- 160, 4, 0, 0, 4, 0,
- 0, 6, 128, 0, 0, 208,
- 144, 2, 0, 248, 160, 2,
- 0, 208, 160, 5, 0, 0,
- 3, 1, 0, 15, 128, 0,
- 0, 170, 128, 5, 0, 228,
- 160, 4, 0, 0, 4, 1,
- 0, 15, 128, 4, 0, 228,
- 160, 0, 0, 85, 128, 1,
- 0, 228, 128, 2, 0, 0,
- 3, 1, 0, 15, 128, 1,
- 0, 228, 128, 6, 0, 228,
- 160, 2, 0, 0, 3, 0,
- 0, 6, 128, 1, 0, 208,
- 128, 3, 0, 208, 161, 5,
- 0, 0, 3, 0, 0, 8,
- 224, 0, 0, 0, 128, 0,
- 0, 85, 128, 6, 0, 0,
- 2, 0, 0, 1, 128, 3,
- 0, 255, 160, 5, 0, 0,
- 3, 0, 0, 4, 224, 0,
- 0, 0, 128, 0, 0, 170,
- 128, 4, 0, 0, 4, 0,
- 0, 3, 224, 0, 0, 228,
- 144, 1, 0, 238, 160, 1,
- 0, 228, 160, 6, 0, 0,
- 2, 0, 0, 1, 128, 1,
- 0, 255, 128, 5, 0, 0,
- 3, 1, 0, 7, 128, 0,
- 0, 0, 128, 1, 0, 228,
- 128, 2, 0, 0, 3, 0,
- 0, 15, 128, 1, 0, 228,
- 128, 7, 0, 228, 161, 5,
- 0, 0, 3, 0, 0, 7,
- 128, 0, 0, 255, 128, 0,
- 0, 228, 128, 5, 0, 0,
- 3, 1, 0, 15, 128, 0,
- 0, 85, 128, 9, 0, 228,
- 160, 4, 0, 0, 4, 1,
- 0, 15, 128, 8, 0, 228,
- 160, 0, 0, 0, 128, 1,
- 0, 228, 128, 4, 0, 0,
- 4, 1, 0, 15, 128, 10,
- 0, 228, 160, 0, 0, 170,
- 128, 1, 0, 228, 128, 4,
- 0, 0, 4, 0, 0, 15,
- 128, 11, 0, 228, 160, 0,
- 0, 255, 128, 1, 0, 228,
- 128, 4, 0, 0, 4, 0,
- 0, 3, 192, 0, 0, 255,
- 128, 0, 0, 228, 160, 0,
- 0, 228, 128, 1, 0, 0,
- 2, 0, 0, 12, 192, 0,
- 0, 228, 128, 255, 255, 0,
- 0, 83, 72, 68, 82, 132,
- 2, 0, 0, 64, 0, 1,
- 0, 161, 0, 0, 0, 89,
- 0, 0, 4, 70, 142, 32,
- 0, 0, 0, 0, 0, 8,
- 0, 0, 0, 89, 0, 0,
- 4, 70, 142, 32, 0, 1,
- 0, 0, 0, 1, 0, 0,
- 0, 89, 0, 0, 4, 70,
- 142, 32, 0, 2, 0, 0,
- 0, 4, 0, 0, 0, 95,
- 0, 0, 3, 50, 16, 16,
- 0, 0, 0, 0, 0, 103,
- 0, 0, 4, 242, 32, 16,
- 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 101, 0, 0,
- 3, 50, 32, 16, 0, 1,
- 0, 0, 0, 101, 0, 0,
- 3, 194, 32, 16, 0, 1,
- 0, 0, 0, 104, 0, 0,
- 2, 2, 0, 0, 0, 50,
- 0, 0, 11, 50, 0, 16,
- 0, 0, 0, 0, 0, 70,
- 16, 16, 0, 0, 0, 0,
- 0, 230, 138, 32, 0, 0,
- 0, 0, 0, 1, 0, 0,
- 0, 70, 128, 32, 0, 0,
- 0, 0, 0, 1, 0, 0,
- 0, 56, 0, 0, 8, 242,
- 0, 16, 0, 1, 0, 0,
- 0, 86, 5, 16, 0, 0,
- 0, 0, 0, 70, 142, 32,
- 0, 0, 0, 0, 0, 5,
- 0, 0, 0, 50, 0, 0,
- 10, 242, 0, 16, 0, 0,
- 0, 0, 0, 70, 142, 32,
- 0, 0, 0, 0, 0, 4,
- 0, 0, 0, 6, 0, 16,
- 0, 0, 0, 0, 0, 70,
- 14, 16, 0, 1, 0, 0,
- 0, 0, 0, 0, 8, 242,
- 0, 16, 0, 0, 0, 0,
- 0, 70, 14, 16, 0, 0,
- 0, 0, 0, 70, 142, 32,
- 0, 0, 0, 0, 0, 7,
- 0, 0, 0, 14, 0, 0,
- 7, 114, 0, 16, 0, 1,
- 0, 0, 0, 70, 2, 16,
- 0, 0, 0, 0, 0, 246,
- 15, 16, 0, 0, 0, 0,
- 0, 54, 0, 0, 5, 130,
- 0, 16, 0, 1, 0, 0,
- 0, 58, 0, 16, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 9, 50, 0, 16, 0, 0,
- 0, 0, 0, 70, 0, 16,
- 0, 0, 0, 0, 0, 70,
- 128, 32, 128, 65, 0, 0,
- 0, 0, 0, 0, 0, 2,
- 0, 0, 0, 14, 0, 0,
- 8, 194, 32, 16, 0, 1,
- 0, 0, 0, 6, 4, 16,
- 0, 0, 0, 0, 0, 166,
- 142, 32, 0, 0, 0, 0,
- 0, 2, 0, 0, 0, 0,
- 0, 0, 9, 242, 0, 16,
- 0, 0, 0, 0, 0, 70,
- 14, 16, 0, 1, 0, 0,
- 0, 70, 142, 32, 128, 65,
- 0, 0, 0, 1, 0, 0,
- 0, 0, 0, 0, 0, 56,
- 0, 0, 7, 114, 0, 16,
- 0, 0, 0, 0, 0, 246,
- 15, 16, 0, 0, 0, 0,
- 0, 70, 2, 16, 0, 0,
- 0, 0, 0, 56, 0, 0,
- 8, 242, 0, 16, 0, 1,
- 0, 0, 0, 86, 5, 16,
- 0, 0, 0, 0, 0, 70,
- 142, 32, 0, 2, 0, 0,
- 0, 1, 0, 0, 0, 50,
- 0, 0, 10, 242, 0, 16,
- 0, 1, 0, 0, 0, 70,
- 142, 32, 0, 2, 0, 0,
- 0, 0, 0, 0, 0, 6,
- 0, 16, 0, 0, 0, 0,
- 0, 70, 14, 16, 0, 1,
- 0, 0, 0, 50, 0, 0,
- 10, 242, 0, 16, 0, 1,
- 0, 0, 0, 70, 142, 32,
- 0, 2, 0, 0, 0, 2,
- 0, 0, 0, 166, 10, 16,
- 0, 0, 0, 0, 0, 70,
- 14, 16, 0, 1, 0, 0,
- 0, 50, 0, 0, 10, 242,
- 32, 16, 0, 0, 0, 0,
- 0, 70, 142, 32, 0, 2,
- 0, 0, 0, 3, 0, 0,
- 0, 246, 15, 16, 0, 0,
- 0, 0, 0, 70, 14, 16,
- 0, 1, 0, 0, 0, 50,
- 0, 0, 11, 50, 32, 16,
- 0, 1, 0, 0, 0, 70,
- 16, 16, 0, 0, 0, 0,
- 0, 230, 138, 32, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 70, 128, 32, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 62, 0, 0, 1, 83,
- 84, 65, 84, 116, 0, 0,
- 0, 16, 0, 0, 0, 2,
- 0, 0, 0, 0, 0, 0,
- 0, 4, 0, 0, 0, 14,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 82, 68, 69,
- 70, 148, 2, 0, 0, 3,
- 0, 0, 0, 168, 0, 0,
- 0, 3, 0, 0, 0, 28,
- 0, 0, 0, 0, 4, 254,
- 255, 0, 1, 0, 0, 96,
- 2, 0, 0, 124, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0,
- 0, 0, 0, 0, 0, 133,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 1,
- 0, 0, 0, 0, 0, 0,
- 0, 152, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 2, 0, 0,
- 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 80, 101, 114,
- 76, 97, 121, 101, 114, 0,
- 80, 101, 114, 79, 99, 99,
- 97, 115, 105, 111, 110, 97,
- 108, 76, 97, 121, 101, 114,
- 0, 80, 101, 114, 76, 97,
- 121, 101, 114, 77, 97, 110,
- 97, 103, 101, 114, 0, 124,
- 0, 0, 0, 5, 0, 0,
- 0, 240, 0, 0, 0, 128,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 133,
- 0, 0, 0, 2, 0, 0,
- 0, 220, 1, 0, 0, 32,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 152,
- 0, 0, 0, 1, 0, 0,
- 0, 60, 2, 0, 0, 64,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 104,
- 1, 0, 0, 0, 0, 0,
- 0, 16, 0, 0, 0, 2,
- 0, 0, 0, 120, 1, 0,
- 0, 0, 0, 0, 0, 136,
- 1, 0, 0, 16, 0, 0,
- 0, 16, 0, 0, 0, 2,
- 0, 0, 0, 120, 1, 0,
- 0, 0, 0, 0, 0, 147,
- 1, 0, 0, 32, 0, 0,
- 0, 16, 0, 0, 0, 2,
- 0, 0, 0, 120, 1, 0,
- 0, 0, 0, 0, 0, 157,
- 1, 0, 0, 48, 0, 0,
- 0, 4, 0, 0, 0, 0,
- 0, 0, 0, 172, 1, 0,
- 0, 0, 0, 0, 0, 188,
- 1, 0, 0, 64, 0, 0,
- 0, 64, 0, 0, 0, 2,
- 0, 0, 0, 204, 1, 0,
- 0, 0, 0, 0, 0, 118,
- 84, 101, 120, 116, 117, 114,
- 101, 67, 111, 111, 114, 100,
- 115, 0, 171, 1, 0, 3,
- 0, 1, 0, 4, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 118, 76, 97, 121, 101,
- 114, 81, 117, 97, 100, 0,
- 118, 77, 97, 115, 107, 81,
- 117, 97, 100, 0, 102, 76,
- 97, 121, 101, 114, 79, 112,
- 97, 99, 105, 116, 121, 0,
- 171, 0, 0, 3, 0, 1,
- 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 109,
- 76, 97, 121, 101, 114, 84,
- 114, 97, 110, 115, 102, 111,
- 114, 109, 0, 3, 0, 3,
- 0, 4, 0, 4, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 12, 2, 0, 0, 0,
- 0, 0, 0, 16, 0, 0,
- 0, 2, 0, 0, 0, 32,
- 2, 0, 0, 0, 0, 0,
- 0, 48, 2, 0, 0, 16,
- 0, 0, 0, 16, 0, 0,
- 0, 0, 0, 0, 0, 32,
- 2, 0, 0, 0, 0, 0,
- 0, 118, 82, 101, 110, 100,
- 101, 114, 84, 97, 114, 103,
- 101, 116, 79, 102, 102, 115,
- 101, 116, 0, 1, 0, 3,
- 0, 1, 0, 4, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 102, 76, 97, 121, 101,
- 114, 67, 111, 108, 111, 114,
- 0, 84, 2, 0, 0, 0,
- 0, 0, 0, 64, 0, 0,
- 0, 2, 0, 0, 0, 204,
- 1, 0, 0, 0, 0, 0,
- 0, 109, 80, 114, 111, 106,
- 101, 99, 116, 105, 111, 110,
- 0, 77, 105, 99, 114, 111,
- 115, 111, 102, 116, 32, 40,
- 82, 41, 32, 72, 76, 83,
- 76, 32, 83, 104, 97, 100,
- 101, 114, 32, 67, 111, 109,
- 112, 105, 108, 101, 114, 32,
- 54, 46, 51, 46, 57, 54,
- 48, 48, 46, 49, 54, 51,
- 56, 52, 0, 171, 171, 73,
- 83, 71, 78, 44, 0, 0,
- 0, 1, 0, 0, 0, 8,
- 0, 0, 0, 32, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0,
- 0, 0, 0, 0, 0, 3,
- 3, 0, 0, 80, 79, 83,
- 73, 84, 73, 79, 78, 0,
- 171, 171, 171, 79, 83, 71,
- 78, 104, 0, 0, 0, 3,
- 0, 0, 0, 8, 0, 0,
- 0, 80, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0,
- 0, 3, 0, 0, 0, 0,
- 0, 0, 0, 15, 0, 0,
- 0, 92, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 3, 0, 0, 0, 1,
- 0, 0, 0, 3, 12, 0,
- 0, 92, 0, 0, 0, 1,
- 0, 0, 0, 0, 0, 0,
- 0, 3, 0, 0, 0, 1,
- 0, 0, 0, 12, 3, 0,
- 0, 83, 86, 95, 80, 111,
- 115, 105, 116, 105, 111, 110,
- 0, 84, 69, 88, 67, 79,
- 79, 82, 68, 0, 171, 171,
- 171, 69, 255, 0, 0, 0,
- 0, 0, 0, 1, 0, 0,
- 0, 2, 0, 0, 0, 0,
- 0, 0, 0, 160, 6, 0,
- 0, 68, 88, 66, 67, 178,
- 167, 73, 233, 167, 120, 251,
- 206, 98, 157, 244, 246, 26,
- 126, 89, 155, 1, 0, 0,
- 0, 160, 6, 0, 0, 6,
- 0, 0, 0, 56, 0, 0,
- 0, 124, 1, 0, 0, 52,
- 3, 0, 0, 176, 3, 0,
- 0, 228, 5, 0, 0, 84,
- 6, 0, 0, 65, 111, 110,
- 57, 60, 1, 0, 0, 60,
- 1, 0, 0, 0, 2, 255,
- 255, 0, 1, 0, 0, 60,
- 0, 0, 0, 1, 0, 48,
- 0, 0, 0, 60, 0, 0,
- 0, 60, 0, 3, 0, 36,
- 0, 0, 0, 60, 0, 0,
- 0, 0, 0, 1, 0, 1,
- 0, 2, 0, 2, 0, 0,
- 0, 3, 0, 1, 0, 0,
- 0, 0, 0, 0, 0, 1,
- 2, 255, 255, 81, 0, 0,
- 5, 1, 0, 15, 160, 0,
- 0, 128, 63, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 31, 0, 0,
- 2, 0, 0, 0, 128, 0,
- 0, 15, 176, 31, 0, 0,
- 2, 0, 0, 0, 144, 0,
- 8, 15, 160, 31, 0, 0,
- 2, 0, 0, 0, 144, 1,
- 8, 15, 160, 31, 0, 0,
- 2, 0, 0, 0, 144, 2,
- 8, 15, 160, 1, 0, 0,
- 2, 0, 0, 3, 128, 0,
- 0, 235, 176, 66, 0, 0,
- 3, 0, 0, 15, 128, 0,
- 0, 228, 128, 2, 8, 228,
- 160, 5, 0, 0, 3, 0,
- 0, 1, 128, 0, 0, 255,
- 128, 0, 0, 0, 160, 66,
- 0, 0, 3, 1, 0, 15,
- 128, 0, 0, 228, 176, 0,
- 8, 228, 160, 66, 0, 0,
- 3, 2, 0, 15, 128, 0,
- 0, 228, 176, 1, 8, 228,
- 160, 2, 0, 0, 3, 2,
- 0, 15, 128, 1, 0, 228,
- 128, 2, 0, 228, 129, 2,
- 0, 0, 3, 2, 0, 15,
- 128, 2, 0, 228, 128, 1,
- 0, 0, 160, 1, 0, 0,
- 2, 1, 0, 8, 128, 2,
- 0, 85, 128, 5, 0, 0,
- 3, 2, 0, 15, 128, 0,
- 0, 0, 128, 2, 0, 228,
- 128, 5, 0, 0, 3, 0,
- 0, 15, 128, 0, 0, 0,
- 128, 1, 0, 228, 128, 1,
- 0, 0, 2, 0, 8, 15,
- 128, 0, 0, 228, 128, 1,
- 0, 0, 2, 1, 8, 15,
- 128, 2, 0, 228, 128, 255,
- 255, 0, 0, 83, 72, 68,
- 82, 176, 1, 0, 0, 64,
- 0, 0, 0, 108, 0, 0,
- 0, 89, 0, 0, 4, 70,
- 142, 32, 0, 0, 0, 0,
- 0, 4, 0, 0, 0, 90,
- 0, 0, 3, 0, 96, 16,
- 0, 0, 0, 0, 0, 88,
- 24, 0, 4, 0, 112, 16,
- 0, 0, 0, 0, 0, 85,
- 85, 0, 0, 88, 24, 0,
- 4, 0, 112, 16, 0, 1,
- 0, 0, 0, 85, 85, 0,
- 0, 88, 24, 0, 4, 0,
- 112, 16, 0, 2, 0, 0,
- 0, 85, 85, 0, 0, 98,
- 16, 0, 3, 50, 16, 16,
- 0, 1, 0, 0, 0, 98,
- 16, 0, 3, 194, 16, 16,
- 0, 1, 0, 0, 0, 101,
- 0, 0, 3, 242, 32, 16,
- 0, 0, 0, 0, 0, 101,
- 0, 0, 3, 242, 32, 16,
- 0, 1, 0, 0, 0, 104,
- 0, 0, 2, 3, 0, 0,
- 0, 69, 0, 0, 9, 242,
- 0, 16, 0, 0, 0, 0,
- 0, 70, 16, 16, 0, 1,
- 0, 0, 0, 70, 126, 16,
- 0, 1, 0, 0, 0, 0,
- 96, 16, 0, 0, 0, 0,
- 0, 69, 0, 0, 9, 242,
- 0, 16, 0, 1, 0, 0,
- 0, 70, 16, 16, 0, 1,
- 0, 0, 0, 70, 126, 16,
- 0, 0, 0, 0, 0, 0,
- 96, 16, 0, 0, 0, 0,
- 0, 0, 0, 0, 8, 242,
- 0, 16, 0, 0, 0, 0,
- 0, 70, 14, 16, 128, 65,
- 0, 0, 0, 0, 0, 0,
- 0, 70, 14, 16, 0, 1,
- 0, 0, 0, 0, 0, 0,
- 10, 242, 0, 16, 0, 0,
- 0, 0, 0, 70, 14, 16,
- 0, 0, 0, 0, 0, 2,
- 64, 0, 0, 0, 0, 128,
- 63, 0, 0, 128, 63, 0,
- 0, 128, 63, 0, 0, 128,
- 63, 54, 0, 0, 5, 130,
- 0, 16, 0, 1, 0, 0,
- 0, 26, 0, 16, 0, 0,
- 0, 0, 0, 69, 0, 0,
- 9, 242, 0, 16, 0, 2,
- 0, 0, 0, 230, 26, 16,
- 0, 1, 0, 0, 0, 70,
- 126, 16, 0, 2, 0, 0,
- 0, 0, 96, 16, 0, 0,
- 0, 0, 0, 56, 0, 0,
- 8, 18, 0, 16, 0, 2,
- 0, 0, 0, 58, 0, 16,
- 0, 2, 0, 0, 0, 10,
- 128, 32, 0, 0, 0, 0,
- 0, 3, 0, 0, 0, 56,
- 0, 0, 7, 242, 32, 16,
- 0, 0, 0, 0, 0, 70,
- 14, 16, 0, 1, 0, 0,
- 0, 6, 0, 16, 0, 2,
- 0, 0, 0, 56, 0, 0,
- 7, 242, 32, 16, 0, 1,
- 0, 0, 0, 70, 14, 16,
- 0, 0, 0, 0, 0, 6,
- 0, 16, 0, 2, 0, 0,
- 0, 62, 0, 0, 1, 83,
- 84, 65, 84, 116, 0, 0,
- 0, 10, 0, 0, 0, 3,
- 0, 0, 0, 0, 0, 0,
- 0, 4, 0, 0, 0, 5,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 82, 68, 69,
- 70, 44, 2, 0, 0, 1,
- 0, 0, 0, 244, 0, 0,
- 0, 5, 0, 0, 0, 28,
- 0, 0, 0, 0, 4, 255,
- 255, 0, 1, 0, 0, 248,
- 1, 0, 0, 188, 0, 0,
- 0, 3, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0,
- 0, 0, 0, 0, 0, 214,
- 0, 0, 0, 2, 0, 0,
- 0, 5, 0, 0, 0, 4,
- 0, 0, 0, 255, 255, 255,
- 255, 0, 0, 0, 0, 1,
- 0, 0, 0, 12, 0, 0,
- 0, 219, 0, 0, 0, 2,
- 0, 0, 0, 5, 0, 0,
- 0, 4, 0, 0, 0, 255,
- 255, 255, 255, 1, 0, 0,
- 0, 1, 0, 0, 0, 12,
- 0, 0, 0, 229, 0, 0,
- 0, 2, 0, 0, 0, 5,
- 0, 0, 0, 4, 0, 0,
- 0, 255, 255, 255, 255, 2,
- 0, 0, 0, 1, 0, 0,
- 0, 12, 0, 0, 0, 235,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 0, 0, 0,
- 0, 76, 97, 121, 101, 114,
- 84, 101, 120, 116, 117, 114,
- 101, 83, 97, 109, 112, 108,
- 101, 114, 76, 105, 110, 101,
- 97, 114, 0, 116, 82, 71,
- 66, 0, 116, 82, 71, 66,
- 87, 104, 105, 116, 101, 0,
- 116, 77, 97, 115, 107, 0,
- 80, 101, 114, 76, 97, 121,
- 101, 114, 0, 235, 0, 0,
- 0, 5, 0, 0, 0, 12,
- 1, 0, 0, 128, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 132, 1, 0,
- 0, 0, 0, 0, 0, 16,
- 0, 0, 0, 0, 0, 0,
- 0, 148, 1, 0, 0, 0,
- 0, 0, 0, 164, 1, 0,
- 0, 16, 0, 0, 0, 16,
- 0, 0, 0, 0, 0, 0,
- 0, 148, 1, 0, 0, 0,
- 0, 0, 0, 175, 1, 0,
- 0, 32, 0, 0, 0, 16,
- 0, 0, 0, 0, 0, 0,
- 0, 148, 1, 0, 0, 0,
- 0, 0, 0, 185, 1, 0,
- 0, 48, 0, 0, 0, 4,
- 0, 0, 0, 2, 0, 0,
- 0, 200, 1, 0, 0, 0,
- 0, 0, 0, 216, 1, 0,
- 0, 64, 0, 0, 0, 64,
- 0, 0, 0, 0, 0, 0,
- 0, 232, 1, 0, 0, 0,
- 0, 0, 0, 118, 84, 101,
- 120, 116, 117, 114, 101, 67,
- 111, 111, 114, 100, 115, 0,
- 171, 1, 0, 3, 0, 1,
- 0, 4, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 118,
- 76, 97, 121, 101, 114, 81,
- 117, 97, 100, 0, 118, 77,
- 97, 115, 107, 81, 117, 97,
- 100, 0, 102, 76, 97, 121,
- 101, 114, 79, 112, 97, 99,
- 105, 116, 121, 0, 171, 0,
- 0, 3, 0, 1, 0, 1,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 109, 76, 97,
- 121, 101, 114, 84, 114, 97,
- 110, 115, 102, 111, 114, 109,
- 0, 3, 0, 3, 0, 4,
- 0, 4, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 77,
- 105, 99, 114, 111, 115, 111,
- 102, 116, 32, 40, 82, 41,
- 32, 72, 76, 83, 76, 32,
- 83, 104, 97, 100, 101, 114,
- 32, 67, 111, 109, 112, 105,
- 108, 101, 114, 32, 54, 46,
- 51, 46, 57, 54, 48, 48,
- 46, 49, 54, 51, 56, 52,
- 0, 171, 171, 73, 83, 71,
- 78, 104, 0, 0, 0, 3,
- 0, 0, 0, 8, 0, 0,
- 0, 80, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0,
- 0, 3, 0, 0, 0, 0,
- 0, 0, 0, 15, 0, 0,
- 0, 92, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 3, 0, 0, 0, 1,
- 0, 0, 0, 3, 3, 0,
- 0, 92, 0, 0, 0, 1,
- 0, 0, 0, 0, 0, 0,
- 0, 3, 0, 0, 0, 1,
- 0, 0, 0, 12, 12, 0,
- 0, 83, 86, 95, 80, 111,
- 115, 105, 116, 105, 111, 110,
- 0, 84, 69, 88, 67, 79,
- 79, 82, 68, 0, 171, 171,
- 171, 79, 83, 71, 78, 68,
- 0, 0, 0, 2, 0, 0,
- 0, 8, 0, 0, 0, 56,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 3,
- 0, 0, 0, 0, 0, 0,
- 0, 15, 0, 0, 0, 56,
- 0, 0, 0, 1, 0, 0,
- 0, 0, 0, 0, 0, 3,
- 0, 0, 0, 1, 0, 0,
- 0, 15, 0, 0, 0, 83,
- 86, 95, 84, 97, 114, 103,
- 101, 116, 0, 171, 171, 169,
- 7, 1, 0, 0, 0, 0,
- 0, 82, 101, 110, 100, 101,
- 114, 83, 111, 108, 105, 100,
- 67, 111, 108, 111, 114, 76,
- 97, 121, 101, 114, 77, 97,
- 115, 107, 0, 4, 0, 0,
- 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0,
- 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0,
- 0, 3, 0, 0, 0, 255,
- 255, 255, 255, 76, 8, 0,
- 0, 68, 88, 66, 67, 190,
- 117, 181, 57, 187, 108, 178,
- 85, 11, 114, 197, 104, 54,
- 155, 141, 115, 1, 0, 0,
- 0, 76, 8, 0, 0, 6,
- 0, 0, 0, 56, 0, 0,
- 0, 4, 2, 0, 0, 144,
- 4, 0, 0, 12, 5, 0,
- 0, 168, 7, 0, 0, 220,
- 7, 0, 0, 65, 111, 110,
- 57, 196, 1, 0, 0, 196,
- 1, 0, 0, 0, 2, 254,
- 255, 96, 1, 0, 0, 100,
- 0, 0, 0, 5, 0, 36,
- 0, 0, 0, 96, 0, 0,
- 0, 96, 0, 0, 0, 36,
- 0, 1, 0, 96, 0, 0,
- 0, 0, 0, 3, 0, 1,
- 0, 0, 0, 0, 0, 0,
- 0, 4, 0, 2, 0, 4,
- 0, 0, 0, 0, 0, 0,
- 0, 7, 0, 1, 0, 6,
- 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 1, 0, 7,
- 0, 0, 0, 0, 0, 2,
- 0, 0, 0, 4, 0, 8,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1, 2, 254,
- 255, 31, 0, 0, 2, 5,
- 0, 0, 128, 0, 0, 15,
- 144, 6, 0, 0, 2, 0,
- 0, 1, 128, 3, 0, 170,
- 160, 4, 0, 0, 4, 0,
- 0, 6, 128, 0, 0, 208,
- 144, 2, 0, 248, 160, 2,
- 0, 208, 160, 5, 0, 0,
- 3, 1, 0, 15, 128, 0,
- 0, 170, 128, 5, 0, 228,
- 160, 4, 0, 0, 4, 1,
- 0, 15, 128, 4, 0, 228,
- 160, 0, 0, 85, 128, 1,
- 0, 228, 128, 2, 0, 0,
- 3, 1, 0, 15, 128, 1,
- 0, 228, 128, 6, 0, 228,
- 160, 2, 0, 0, 3, 0,
- 0, 6, 128, 1, 0, 208,
- 128, 3, 0, 208, 161, 5,
- 0, 0, 3, 0, 0, 8,
- 224, 0, 0, 0, 128, 0,
- 0, 85, 128, 6, 0, 0,
- 2, 0, 0, 1, 128, 3,
- 0, 255, 160, 5, 0, 0,
- 3, 0, 0, 4, 224, 0,
- 0, 0, 128, 0, 0, 170,
- 128, 4, 0, 0, 4, 0,
- 0, 3, 224, 0, 0, 228,
- 144, 1, 0, 238, 160, 1,
- 0, 228, 160, 6, 0, 0,
- 2, 0, 0, 1, 128, 1,
- 0, 255, 128, 5, 0, 0,
- 3, 1, 0, 7, 128, 0,
- 0, 0, 128, 1, 0, 228,
- 128, 2, 0, 0, 3, 0,
- 0, 15, 128, 1, 0, 228,
- 128, 7, 0, 228, 161, 5,
- 0, 0, 3, 0, 0, 7,
- 128, 0, 0, 255, 128, 0,
- 0, 228, 128, 5, 0, 0,
- 3, 1, 0, 15, 128, 0,
- 0, 85, 128, 9, 0, 228,
- 160, 4, 0, 0, 4, 1,
- 0, 15, 128, 8, 0, 228,
- 160, 0, 0, 0, 128, 1,
- 0, 228, 128, 4, 0, 0,
- 4, 1, 0, 15, 128, 10,
- 0, 228, 160, 0, 0, 170,
- 128, 1, 0, 228, 128, 4,
- 0, 0, 4, 0, 0, 15,
- 128, 11, 0, 228, 160, 0,
- 0, 255, 128, 1, 0, 228,
- 128, 4, 0, 0, 4, 0,
- 0, 3, 192, 0, 0, 255,
- 128, 0, 0, 228, 160, 0,
- 0, 228, 128, 1, 0, 0,
- 2, 0, 0, 12, 192, 0,
- 0, 228, 128, 255, 255, 0,
- 0, 83, 72, 68, 82, 132,
- 2, 0, 0, 64, 0, 1,
- 0, 161, 0, 0, 0, 89,
- 0, 0, 4, 70, 142, 32,
- 0, 0, 0, 0, 0, 8,
- 0, 0, 0, 89, 0, 0,
- 4, 70, 142, 32, 0, 1,
- 0, 0, 0, 1, 0, 0,
- 0, 89, 0, 0, 4, 70,
- 142, 32, 0, 2, 0, 0,
- 0, 4, 0, 0, 0, 95,
- 0, 0, 3, 50, 16, 16,
- 0, 0, 0, 0, 0, 103,
- 0, 0, 4, 242, 32, 16,
- 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 101, 0, 0,
- 3, 50, 32, 16, 0, 1,
- 0, 0, 0, 101, 0, 0,
- 3, 194, 32, 16, 0, 1,
- 0, 0, 0, 104, 0, 0,
- 2, 2, 0, 0, 0, 50,
- 0, 0, 11, 50, 0, 16,
- 0, 0, 0, 0, 0, 70,
- 16, 16, 0, 0, 0, 0,
- 0, 230, 138, 32, 0, 0,
- 0, 0, 0, 1, 0, 0,
- 0, 70, 128, 32, 0, 0,
- 0, 0, 0, 1, 0, 0,
- 0, 56, 0, 0, 8, 242,
- 0, 16, 0, 1, 0, 0,
- 0, 86, 5, 16, 0, 0,
- 0, 0, 0, 70, 142, 32,
- 0, 0, 0, 0, 0, 5,
- 0, 0, 0, 50, 0, 0,
- 10, 242, 0, 16, 0, 0,
- 0, 0, 0, 70, 142, 32,
- 0, 0, 0, 0, 0, 4,
- 0, 0, 0, 6, 0, 16,
- 0, 0, 0, 0, 0, 70,
- 14, 16, 0, 1, 0, 0,
- 0, 0, 0, 0, 8, 242,
- 0, 16, 0, 0, 0, 0,
- 0, 70, 14, 16, 0, 0,
- 0, 0, 0, 70, 142, 32,
- 0, 0, 0, 0, 0, 7,
- 0, 0, 0, 14, 0, 0,
- 7, 114, 0, 16, 0, 1,
- 0, 0, 0, 70, 2, 16,
- 0, 0, 0, 0, 0, 246,
- 15, 16, 0, 0, 0, 0,
- 0, 54, 0, 0, 5, 130,
- 0, 16, 0, 1, 0, 0,
- 0, 58, 0, 16, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 9, 50, 0, 16, 0, 0,
- 0, 0, 0, 70, 0, 16,
- 0, 0, 0, 0, 0, 70,
- 128, 32, 128, 65, 0, 0,
- 0, 0, 0, 0, 0, 2,
- 0, 0, 0, 14, 0, 0,
- 8, 194, 32, 16, 0, 1,
- 0, 0, 0, 6, 4, 16,
- 0, 0, 0, 0, 0, 166,
- 142, 32, 0, 0, 0, 0,
- 0, 2, 0, 0, 0, 0,
- 0, 0, 9, 242, 0, 16,
- 0, 0, 0, 0, 0, 70,
- 14, 16, 0, 1, 0, 0,
- 0, 70, 142, 32, 128, 65,
- 0, 0, 0, 1, 0, 0,
- 0, 0, 0, 0, 0, 56,
- 0, 0, 7, 114, 0, 16,
- 0, 0, 0, 0, 0, 246,
- 15, 16, 0, 0, 0, 0,
- 0, 70, 2, 16, 0, 0,
- 0, 0, 0, 56, 0, 0,
- 8, 242, 0, 16, 0, 1,
- 0, 0, 0, 86, 5, 16,
- 0, 0, 0, 0, 0, 70,
- 142, 32, 0, 2, 0, 0,
- 0, 1, 0, 0, 0, 50,
- 0, 0, 10, 242, 0, 16,
- 0, 1, 0, 0, 0, 70,
- 142, 32, 0, 2, 0, 0,
- 0, 0, 0, 0, 0, 6,
- 0, 16, 0, 0, 0, 0,
- 0, 70, 14, 16, 0, 1,
- 0, 0, 0, 50, 0, 0,
- 10, 242, 0, 16, 0, 1,
- 0, 0, 0, 70, 142, 32,
- 0, 2, 0, 0, 0, 2,
- 0, 0, 0, 166, 10, 16,
- 0, 0, 0, 0, 0, 70,
- 14, 16, 0, 1, 0, 0,
- 0, 50, 0, 0, 10, 242,
- 32, 16, 0, 0, 0, 0,
- 0, 70, 142, 32, 0, 2,
- 0, 0, 0, 3, 0, 0,
- 0, 246, 15, 16, 0, 0,
- 0, 0, 0, 70, 14, 16,
- 0, 1, 0, 0, 0, 50,
- 0, 0, 11, 50, 32, 16,
- 0, 1, 0, 0, 0, 70,
- 16, 16, 0, 0, 0, 0,
- 0, 230, 138, 32, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 70, 128, 32, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 62, 0, 0, 1, 83,
- 84, 65, 84, 116, 0, 0,
- 0, 16, 0, 0, 0, 2,
- 0, 0, 0, 0, 0, 0,
- 0, 4, 0, 0, 0, 14,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 82, 68, 69,
- 70, 148, 2, 0, 0, 3,
- 0, 0, 0, 168, 0, 0,
- 0, 3, 0, 0, 0, 28,
- 0, 0, 0, 0, 4, 254,
- 255, 0, 1, 0, 0, 96,
- 2, 0, 0, 124, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0,
- 0, 0, 0, 0, 0, 133,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 1,
- 0, 0, 0, 0, 0, 0,
- 0, 152, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 2, 0, 0,
- 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 80, 101, 114,
- 76, 97, 121, 101, 114, 0,
- 80, 101, 114, 79, 99, 99,
- 97, 115, 105, 111, 110, 97,
- 108, 76, 97, 121, 101, 114,
- 0, 80, 101, 114, 76, 97,
- 121, 101, 114, 77, 97, 110,
- 97, 103, 101, 114, 0, 124,
- 0, 0, 0, 5, 0, 0,
- 0, 240, 0, 0, 0, 128,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 133,
- 0, 0, 0, 2, 0, 0,
- 0, 220, 1, 0, 0, 32,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 152,
- 0, 0, 0, 1, 0, 0,
- 0, 60, 2, 0, 0, 64,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 104,
- 1, 0, 0, 0, 0, 0,
- 0, 16, 0, 0, 0, 2,
- 0, 0, 0, 120, 1, 0,
- 0, 0, 0, 0, 0, 136,
- 1, 0, 0, 16, 0, 0,
- 0, 16, 0, 0, 0, 2,
- 0, 0, 0, 120, 1, 0,
- 0, 0, 0, 0, 0, 147,
- 1, 0, 0, 32, 0, 0,
- 0, 16, 0, 0, 0, 2,
- 0, 0, 0, 120, 1, 0,
- 0, 0, 0, 0, 0, 157,
- 1, 0, 0, 48, 0, 0,
- 0, 4, 0, 0, 0, 0,
- 0, 0, 0, 172, 1, 0,
- 0, 0, 0, 0, 0, 188,
- 1, 0, 0, 64, 0, 0,
- 0, 64, 0, 0, 0, 2,
- 0, 0, 0, 204, 1, 0,
- 0, 0, 0, 0, 0, 118,
- 84, 101, 120, 116, 117, 114,
- 101, 67, 111, 111, 114, 100,
- 115, 0, 171, 1, 0, 3,
- 0, 1, 0, 4, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 118, 76, 97, 121, 101,
- 114, 81, 117, 97, 100, 0,
- 118, 77, 97, 115, 107, 81,
- 117, 97, 100, 0, 102, 76,
- 97, 121, 101, 114, 79, 112,
- 97, 99, 105, 116, 121, 0,
- 171, 0, 0, 3, 0, 1,
- 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 109,
- 76, 97, 121, 101, 114, 84,
- 114, 97, 110, 115, 102, 111,
- 114, 109, 0, 3, 0, 3,
- 0, 4, 0, 4, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 12, 2, 0, 0, 0,
- 0, 0, 0, 16, 0, 0,
- 0, 2, 0, 0, 0, 32,
- 2, 0, 0, 0, 0, 0,
- 0, 48, 2, 0, 0, 16,
- 0, 0, 0, 16, 0, 0,
- 0, 0, 0, 0, 0, 32,
- 2, 0, 0, 0, 0, 0,
- 0, 118, 82, 101, 110, 100,
- 101, 114, 84, 97, 114, 103,
- 101, 116, 79, 102, 102, 115,
- 101, 116, 0, 1, 0, 3,
- 0, 1, 0, 4, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 102, 76, 97, 121, 101,
- 114, 67, 111, 108, 111, 114,
- 0, 84, 2, 0, 0, 0,
- 0, 0, 0, 64, 0, 0,
- 0, 2, 0, 0, 0, 204,
- 1, 0, 0, 0, 0, 0,
- 0, 109, 80, 114, 111, 106,
- 101, 99, 116, 105, 111, 110,
- 0, 77, 105, 99, 114, 111,
- 115, 111, 102, 116, 32, 40,
- 82, 41, 32, 72, 76, 83,
- 76, 32, 83, 104, 97, 100,
- 101, 114, 32, 67, 111, 109,
- 112, 105, 108, 101, 114, 32,
- 54, 46, 51, 46, 57, 54,
- 48, 48, 46, 49, 54, 51,
- 56, 52, 0, 171, 171, 73,
- 83, 71, 78, 44, 0, 0,
- 0, 1, 0, 0, 0, 8,
- 0, 0, 0, 32, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 3, 0, 0,
- 0, 0, 0, 0, 0, 3,
- 3, 0, 0, 80, 79, 83,
- 73, 84, 73, 79, 78, 0,
- 171, 171, 171, 79, 83, 71,
- 78, 104, 0, 0, 0, 3,
- 0, 0, 0, 8, 0, 0,
- 0, 80, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0,
- 0, 3, 0, 0, 0, 0,
- 0, 0, 0, 15, 0, 0,
- 0, 92, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 3, 0, 0, 0, 1,
- 0, 0, 0, 3, 12, 0,
- 0, 92, 0, 0, 0, 1,
- 0, 0, 0, 0, 0, 0,
- 0, 3, 0, 0, 0, 1,
- 0, 0, 0, 12, 3, 0,
- 0, 83, 86, 95, 80, 111,
- 115, 105, 116, 105, 111, 110,
- 0, 84, 69, 88, 67, 79,
- 79, 82, 68, 0, 171, 171,
- 171, 159, 14, 1, 0, 0,
- 0, 0, 0, 1, 0, 0,
- 0, 2, 0, 0, 0, 0,
- 0, 0, 0, 244, 3, 0,
- 0, 68, 88, 66, 67, 238,
- 234, 249, 25, 8, 157, 205,
- 248, 243, 67, 9, 213, 110,
- 126, 232, 189, 1, 0, 0,
- 0, 244, 3, 0, 0, 6,
- 0, 0, 0, 56, 0, 0,
- 0, 204, 0, 0, 0, 112,
- 1, 0, 0, 236, 1, 0,
- 0, 80, 3, 0, 0, 192,
- 3, 0, 0, 65, 111, 110,
- 57, 140, 0, 0, 0, 140,
- 0, 0, 0, 0, 2, 255,
- 255, 88, 0, 0, 0, 52,
- 0, 0, 0, 1, 0, 40,
- 0, 0, 0, 52, 0, 0,
- 0, 52, 0, 1, 0, 36,
- 0, 0, 0, 52, 0, 0,
- 0, 0, 0, 0, 0, 1,
- 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 1, 2, 255,
- 255, 31, 0, 0, 2, 0,
- 0, 0, 128, 0, 0, 15,
- 176, 31, 0, 0, 2, 0,
- 0, 0, 144, 0, 8, 15,
- 160, 1, 0, 0, 2, 0,
- 0, 3, 128, 0, 0, 235,
- 176, 66, 0, 0, 3, 0,
- 0, 15, 128, 0, 0, 228,
- 128, 0, 8, 228, 160, 5,
- 0, 0, 3, 0, 0, 15,
- 128, 0, 0, 255, 128, 0,
- 0, 228, 160, 1, 0, 0,
- 2, 0, 8, 15, 128, 0,
- 0, 228, 128, 255, 255, 0,
- 0, 83, 72, 68, 82, 156,
- 0, 0, 0, 64, 0, 0,
- 0, 39, 0, 0, 0, 89,
- 0, 0, 4, 70, 142, 32,
- 0, 0, 0, 0, 0, 2,
- 0, 0, 0, 90, 0, 0,
- 3, 0, 96, 16, 0, 0,
- 0, 0, 0, 88, 24, 0,
- 4, 0, 112, 16, 0, 0,
- 0, 0, 0, 85, 85, 0,
- 0, 98, 16, 0, 3, 194,
- 16, 16, 0, 1, 0, 0,
- 0, 101, 0, 0, 3, 242,
- 32, 16, 0, 0, 0, 0,
- 0, 104, 0, 0, 2, 1,
- 0, 0, 0, 69, 0, 0,
- 9, 242, 0, 16, 0, 0,
- 0, 0, 0, 230, 26, 16,
- 0, 1, 0, 0, 0, 70,
- 126, 16, 0, 0, 0, 0,
- 0, 0, 96, 16, 0, 0,
- 0, 0, 0, 56, 0, 0,
- 8, 242, 32, 16, 0, 0,
- 0, 0, 0, 246, 15, 16,
- 0, 0, 0, 0, 0, 70,
- 142, 32, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 62,
- 0, 0, 1, 83, 84, 65,
- 84, 116, 0, 0, 0, 3,
- 0, 0, 0, 1, 0, 0,
- 0, 0, 0, 0, 0, 2,
- 0, 0, 0, 1, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 82, 68, 69, 70, 92,
- 1, 0, 0, 1, 0, 0,
- 0, 176, 0, 0, 0, 3,
- 0, 0, 0, 28, 0, 0,
- 0, 0, 4, 255, 255, 0,
- 1, 0, 0, 40, 1, 0,
- 0, 124, 0, 0, 0, 3,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 150, 0, 0,
- 0, 2, 0, 0, 0, 5,
- 0, 0, 0, 4, 0, 0,
- 0, 255, 255, 255, 255, 0,
- 0, 0, 0, 1, 0, 0,
- 0, 12, 0, 0, 0, 156,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 0, 0, 0,
- 0, 76, 97, 121, 101, 114,
- 84, 101, 120, 116, 117, 114,
- 101, 83, 97, 109, 112, 108,
- 101, 114, 76, 105, 110, 101,
- 97, 114, 0, 116, 77, 97,
- 115, 107, 0, 80, 101, 114,
- 79, 99, 99, 97, 115, 105,
- 111, 110, 97, 108, 76, 97,
- 121, 101, 114, 0, 171, 156,
- 0, 0, 0, 2, 0, 0,
- 0, 200, 0, 0, 0, 32,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 248,
- 0, 0, 0, 0, 0, 0,
- 0, 16, 0, 0, 0, 0,
- 0, 0, 0, 12, 1, 0,
- 0, 0, 0, 0, 0, 28,
- 1, 0, 0, 16, 0, 0,
- 0, 16, 0, 0, 0, 2,
- 0, 0, 0, 12, 1, 0,
- 0, 0, 0, 0, 0, 118,
- 82, 101, 110, 100, 101, 114,
- 84, 97, 114, 103, 101, 116,
- 79, 102, 102, 115, 101, 116,
- 0, 1, 0, 3, 0, 1,
- 0, 4, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 102,
- 76, 97, 121, 101, 114, 67,
- 111, 108, 111, 114, 0, 77,
- 105, 99, 114, 111, 115, 111,
- 102, 116, 32, 40, 82, 41,
- 32, 72, 76, 83, 76, 32,
- 83, 104, 97, 100, 101, 114,
- 32, 67, 111, 109, 112, 105,
- 108, 101, 114, 32, 54, 46,
- 51, 46, 57, 54, 48, 48,
- 46, 49, 54, 51, 56, 52,
- 0, 171, 171, 73, 83, 71,
- 78, 104, 0, 0, 0, 3,
- 0, 0, 0, 8, 0, 0,
- 0, 80, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0,
- 0, 3, 0, 0, 0, 0,
- 0, 0, 0, 15, 0, 0,
- 0, 92, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 3, 0, 0, 0, 1,
- 0, 0, 0, 3, 0, 0,
- 0, 92, 0, 0, 0, 1,
- 0, 0, 0, 0, 0, 0,
- 0, 3, 0, 0, 0, 1,
- 0, 0, 0, 12, 12, 0,
- 0, 83, 86, 95, 80, 111,
- 115, 105, 116, 105, 111, 110,
- 0, 84, 69, 88, 67, 79,
- 79, 82, 68, 0, 171, 171,
- 171, 79, 83, 71, 78, 44,
- 0, 0, 0, 1, 0, 0,
- 0, 8, 0, 0, 0, 32,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 3,
- 0, 0, 0, 0, 0, 0,
- 0, 15, 0, 0, 0, 83,
- 86, 95, 84, 97, 114, 103,
- 101, 116, 0, 171, 171, 3,
- 23, 1, 0, 0, 0, 0,
- 0, 4, 0, 0, 0, 128,
- 0, 0, 0, 0, 0, 0,
- 0, 5, 0, 0, 0, 255,
- 255, 255, 255, 0, 0, 0,
- 0, 48, 0, 0, 0, 20,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 63,
- 0, 0, 0, 20, 0, 0,
- 0, 0, 0, 0, 0, 16,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 74, 0, 0,
- 0, 20, 0, 0, 0, 0,
- 0, 0, 0, 32, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 118, 0, 0, 0, 90,
- 0, 0, 0, 0, 0, 0,
- 0, 48, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 169,
- 0, 0, 0, 141, 0, 0,
- 0, 0, 0, 0, 0, 64,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 185, 0, 0,
- 0, 32, 0, 0, 0, 0,
- 0, 0, 0, 2, 0, 0,
- 0, 255, 255, 255, 255, 0,
- 0, 0, 0, 204, 0, 0,
- 0, 20, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 224, 0, 0, 0, 20,
- 0, 0, 0, 0, 0, 0,
- 0, 16, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 236,
- 0, 0, 0, 64, 0, 0,
- 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 255, 255, 255,
- 255, 0, 0, 0, 0, 252,
- 0, 0, 0, 141, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 47, 1, 0,
- 0, 19, 1, 0, 0, 0,
- 0, 0, 0, 255, 255, 255,
- 255, 9, 0, 0, 0, 36,
- 0, 0, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 54,
- 1, 0, 0, 37, 0, 0,
- 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 66, 1, 0,
- 0, 38, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0,
- 0, 78, 1, 0, 0, 39,
- 0, 0, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 90,
- 1, 0, 0, 40, 0, 0,
- 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 102, 1, 0,
- 0, 41, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0,
- 0, 114, 1, 0, 0, 42,
- 0, 0, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 126,
- 1, 0, 0, 43, 0, 0,
- 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 138, 1, 0,
- 0, 44, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0,
- 0, 150, 1, 0, 0, 0,
- 0, 0, 0, 162, 1, 0,
- 0, 19, 1, 0, 0, 0,
- 0, 0, 0, 255, 255, 255,
- 255, 9, 0, 0, 0, 36,
- 0, 0, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 172,
- 1, 0, 0, 37, 0, 0,
- 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 184, 1, 0,
- 0, 38, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0,
- 0, 196, 1, 0, 0, 39,
- 0, 0, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 208,
- 1, 0, 0, 40, 0, 0,
- 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 220, 1, 0,
- 0, 41, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0,
- 0, 232, 1, 0, 0, 42,
- 0, 0, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 244,
- 1, 0, 0, 43, 0, 0,
- 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 0, 2, 0,
- 0, 44, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0,
- 0, 12, 2, 0, 0, 0,
- 0, 0, 0, 24, 2, 0,
- 0, 19, 1, 0, 0, 0,
- 0, 0, 0, 255, 255, 255,
- 255, 5, 0, 0, 0, 36,
- 0, 0, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 36,
- 2, 0, 0, 37, 0, 0,
- 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 48, 2, 0,
- 0, 37, 0, 0, 0, 1,
- 0, 0, 0, 1, 0, 0,
- 0, 60, 2, 0, 0, 44,
- 0, 0, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 72,
- 2, 0, 0, 44, 0, 0,
- 0, 1, 0, 0, 0, 1,
- 0, 0, 0, 84, 2, 0,
- 0, 0, 0, 0, 0, 96,
- 2, 0, 0, 19, 1, 0,
- 0, 0, 0, 0, 0, 255,
- 255, 255, 255, 9, 0, 0,
- 0, 36, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0,
- 0, 116, 2, 0, 0, 37,
- 0, 0, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 128,
- 2, 0, 0, 38, 0, 0,
- 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 140, 2, 0,
- 0, 39, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0,
- 0, 152, 2, 0, 0, 40,
- 0, 0, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 164,
- 2, 0, 0, 41, 0, 0,
- 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 176, 2, 0,
- 0, 42, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0,
- 0, 188, 2, 0, 0, 43,
- 0, 0, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 200,
- 2, 0, 0, 44, 0, 0,
- 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 212, 2, 0,
- 0, 0, 0, 0, 0, 12,
- 3, 0, 0, 240, 2, 0,
- 0, 0, 0, 0, 0, 255,
- 255, 255, 255, 2, 0, 0,
- 0, 19, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0,
- 0, 22, 3, 0, 0, 13,
- 0, 0, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 34,
- 3, 0, 0, 0, 0, 0,
- 0, 84, 3, 0, 0, 56,
- 3, 0, 0, 0, 0, 0,
- 0, 255, 255, 255, 255, 0,
- 0, 0, 0, 89, 3, 0,
- 0, 56, 3, 0, 0, 0,
- 0, 0, 0, 255, 255, 255,
- 255, 0, 0, 0, 0, 92,
- 3, 0, 0, 56, 3, 0,
- 0, 0, 0, 0, 0, 255,
- 255, 255, 255, 0, 0, 0,
- 0, 96, 3, 0, 0, 56,
- 3, 0, 0, 0, 0, 0,
- 0, 255, 255, 255, 255, 0,
- 0, 0, 0, 100, 3, 0,
- 0, 56, 3, 0, 0, 0,
- 0, 0, 0, 255, 255, 255,
- 255, 0, 0, 0, 0, 110,
- 3, 0, 0, 56, 3, 0,
- 0, 0, 0, 0, 0, 255,
- 255, 255, 255, 0, 0, 0,
- 0, 157, 3, 0, 0, 129,
- 3, 0, 0, 0, 0, 0,
- 0, 255, 255, 255, 255, 3,
- 0, 0, 0, 45, 0, 0,
- 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 183, 3, 0,
- 0, 46, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0,
- 0, 195, 3, 0, 0, 47,
- 0, 0, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 207,
- 3, 0, 0, 0, 0, 0,
- 0, 219, 3, 0, 0, 129,
- 3, 0, 0, 0, 0, 0,
- 0, 255, 255, 255, 255, 3,
- 0, 0, 0, 45, 0, 0,
- 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 244, 3, 0,
- 0, 46, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0,
- 0, 0, 4, 0, 0, 47,
- 0, 0, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 12,
- 4, 0, 0, 0, 0, 0,
- 0, 24, 4, 0, 0, 1,
- 0, 0, 0, 0, 0, 0,
- 0, 45, 4, 0, 0, 7,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 2, 0, 0,
- 0, 12, 3, 0, 0, 10,
- 0, 0, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 48,
- 4, 0, 0, 11, 0, 0,
- 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 84, 4, 0,
- 0, 2, 0, 0, 0, 0,
- 0, 0, 0, 2, 0, 0,
- 0, 47, 1, 0, 0, 6,
- 0, 0, 0, 0, 0, 0,
- 0, 7, 0, 0, 0, 236,
- 11, 0, 0, 8, 0, 0,
- 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 244, 11, 0,
- 0, 7, 0, 0, 0, 0,
- 0, 0, 0, 7, 0, 0,
- 0, 120, 16, 0, 0, 128,
- 16, 0, 0, 1, 0, 0,
- 0, 0, 0, 0, 0, 45,
- 4, 0, 0, 7, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 2, 0, 0, 0, 12,
- 3, 0, 0, 10, 0, 0,
- 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 154, 16, 0,
- 0, 11, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0,
- 0, 190, 16, 0, 0, 2,
- 0, 0, 0, 0, 0, 0,
- 0, 2, 0, 0, 0, 47,
- 1, 0, 0, 6, 0, 0,
- 0, 0, 0, 0, 0, 7,
- 0, 0, 0, 86, 24, 0,
- 0, 8, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0,
- 0, 94, 24, 0, 0, 7,
- 0, 0, 0, 0, 0, 0,
- 0, 7, 0, 0, 0, 226,
- 28, 0, 0, 234, 28, 0,
- 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 45, 4, 0,
- 0, 7, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 2,
- 0, 0, 0, 12, 3, 0,
- 0, 10, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0,
- 0, 0, 29, 0, 0, 11,
- 0, 0, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 36,
- 29, 0, 0, 2, 0, 0,
- 0, 0, 0, 0, 0, 2,
- 0, 0, 0, 47, 1, 0,
- 0, 6, 0, 0, 0, 0,
- 0, 0, 0, 7, 0, 0,
- 0, 188, 36, 0, 0, 8,
- 0, 0, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 196,
- 36, 0, 0, 7, 0, 0,
- 0, 0, 0, 0, 0, 7,
- 0, 0, 0, 36, 41, 0,
- 0, 44, 41, 0, 0, 1,
- 0, 0, 0, 0, 0, 0,
- 0, 45, 4, 0, 0, 7,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 2, 0, 0,
- 0, 12, 3, 0, 0, 10,
- 0, 0, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 69,
- 41, 0, 0, 11, 0, 0,
- 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 105, 41, 0,
- 0, 2, 0, 0, 0, 0,
- 0, 0, 0, 2, 0, 0,
- 0, 162, 1, 0, 0, 6,
- 0, 0, 0, 0, 0, 0,
- 0, 7, 0, 0, 0, 1,
- 49, 0, 0, 8, 0, 0,
- 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 9, 49, 0,
- 0, 7, 0, 0, 0, 0,
- 0, 0, 0, 7, 0, 0,
- 0, 105, 53, 0, 0, 113,
- 53, 0, 0, 1, 0, 0,
- 0, 0, 0, 0, 0, 45,
- 4, 0, 0, 7, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 2, 0, 0, 0, 12,
- 3, 0, 0, 10, 0, 0,
- 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 140, 53, 0,
- 0, 11, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0,
- 0, 176, 53, 0, 0, 2,
- 0, 0, 0, 0, 0, 0,
- 0, 2, 0, 0, 0, 47,
- 1, 0, 0, 6, 0, 0,
- 0, 0, 0, 0, 0, 7,
- 0, 0, 0, 72, 61, 0,
- 0, 8, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0,
- 0, 80, 61, 0, 0, 7,
- 0, 0, 0, 0, 0, 0,
- 0, 7, 0, 0, 0, 176,
- 65, 0, 0, 184, 65, 0,
- 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 45, 4, 0,
- 0, 7, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 2,
- 0, 0, 0, 12, 3, 0,
- 0, 10, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0,
- 0, 214, 65, 0, 0, 11,
- 0, 0, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 250,
- 65, 0, 0, 2, 0, 0,
- 0, 0, 0, 0, 0, 2,
- 0, 0, 0, 162, 1, 0,
- 0, 6, 0, 0, 0, 0,
- 0, 0, 0, 7, 0, 0,
- 0, 146, 73, 0, 0, 8,
- 0, 0, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 154,
- 73, 0, 0, 7, 0, 0,
- 0, 0, 0, 0, 0, 7,
- 0, 0, 0, 250, 77, 0,
- 0, 2, 78, 0, 0, 1,
- 0, 0, 0, 0, 0, 0,
- 0, 45, 4, 0, 0, 7,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 2, 0, 0,
- 0, 12, 3, 0, 0, 10,
- 0, 0, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 19,
- 78, 0, 0, 11, 0, 0,
- 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 55, 78, 0,
- 0, 2, 0, 0, 0, 0,
- 0, 0, 0, 2, 0, 0,
- 0, 47, 1, 0, 0, 6,
- 0, 0, 0, 0, 0, 0,
- 0, 7, 0, 0, 0, 207,
- 85, 0, 0, 8, 0, 0,
- 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 215, 85, 0,
- 0, 7, 0, 0, 0, 0,
- 0, 0, 0, 7, 0, 0,
- 0, 71, 93, 0, 0, 79,
- 93, 0, 0, 1, 0, 0,
- 0, 0, 0, 0, 0, 45,
- 4, 0, 0, 7, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 2, 0, 0, 0, 12,
- 3, 0, 0, 10, 0, 0,
- 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 105, 93, 0,
- 0, 11, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0,
- 0, 141, 93, 0, 0, 2,
- 0, 0, 0, 0, 0, 0,
- 0, 2, 0, 0, 0, 96,
- 2, 0, 0, 6, 0, 0,
- 0, 0, 0, 0, 0, 7,
- 0, 0, 0, 37, 101, 0,
- 0, 8, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0,
- 0, 45, 101, 0, 0, 7,
- 0, 0, 0, 0, 0, 0,
- 0, 7, 0, 0, 0, 13,
- 107, 0, 0, 21, 107, 0,
- 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 45, 4, 0,
- 0, 7, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 2,
- 0, 0, 0, 12, 3, 0,
- 0, 10, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0,
- 0, 43, 107, 0, 0, 11,
- 0, 0, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 79,
- 107, 0, 0, 2, 0, 0,
- 0, 0, 0, 0, 0, 2,
- 0, 0, 0, 47, 1, 0,
- 0, 6, 0, 0, 0, 0,
- 0, 0, 0, 7, 0, 0,
- 0, 231, 114, 0, 0, 8,
- 0, 0, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 239,
- 114, 0, 0, 7, 0, 0,
- 0, 0, 0, 0, 0, 7,
- 0, 0, 0, 215, 117, 0,
- 0, 223, 117, 0, 0, 1,
- 0, 0, 0, 0, 0, 0,
- 0, 45, 4, 0, 0, 7,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 2, 0, 0,
- 0, 12, 3, 0, 0, 10,
- 0, 0, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 240,
- 117, 0, 0, 11, 0, 0,
- 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 20, 118, 0,
- 0, 2, 0, 0, 0, 0,
- 0, 0, 0, 2, 0, 0,
- 0, 24, 2, 0, 0, 6,
- 0, 0, 0, 0, 0, 0,
- 0, 7, 0, 0, 0, 172,
- 125, 0, 0, 8, 0, 0,
- 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 180, 125, 0,
- 0, 7, 0, 0, 0, 0,
- 0, 0, 0, 7, 0, 0,
- 0, 156, 128, 0, 0, 164,
- 128, 0, 0, 1, 0, 0,
- 0, 0, 0, 0, 0, 45,
- 4, 0, 0, 7, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 2, 0, 0, 0, 12,
- 3, 0, 0, 10, 0, 0,
- 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 195, 128, 0,
- 0, 11, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0,
- 0, 231, 128, 0, 0, 2,
- 0, 0, 0, 0, 0, 0,
- 0, 2, 0, 0, 0, 24,
- 2, 0, 0, 6, 0, 0,
- 0, 0, 0, 0, 0, 7,
- 0, 0, 0, 127, 136, 0,
- 0, 8, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0,
- 0, 135, 136, 0, 0, 7,
- 0, 0, 0, 0, 0, 0,
- 0, 7, 0, 0, 0, 35,
- 139, 0, 0, 43, 139, 0,
- 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 45, 4, 0,
- 0, 7, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 2,
- 0, 0, 0, 12, 3, 0,
- 0, 10, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0,
- 0, 68, 139, 0, 0, 11,
- 0, 0, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 104,
- 139, 0, 0, 2, 0, 0,
- 0, 0, 0, 0, 0, 2,
- 0, 0, 0, 47, 1, 0,
- 0, 6, 0, 0, 0, 0,
- 0, 0, 0, 7, 0, 0,
- 0, 196, 147, 0, 0, 8,
- 0, 0, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 204,
- 147, 0, 0, 7, 0, 0,
- 0, 0, 0, 0, 0, 7,
- 0, 0, 0, 40, 153, 0,
- 0, 48, 153, 0, 0, 1,
- 0, 0, 0, 0, 0, 0,
- 0, 45, 4, 0, 0, 7,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 2, 0, 0,
- 0, 12, 3, 0, 0, 10,
- 0, 0, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 78,
- 153, 0, 0, 11, 0, 0,
- 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 114, 153, 0,
- 0, 2, 0, 0, 0, 0,
- 0, 0, 0, 2, 0, 0,
- 0, 47, 1, 0, 0, 6,
- 0, 0, 0, 0, 0, 0,
- 0, 7, 0, 0, 0, 206,
- 161, 0, 0, 8, 0, 0,
- 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 214, 161, 0,
- 0, 7, 0, 0, 0, 0,
- 0, 0, 0, 7, 0, 0,
- 0, 118, 167, 0, 0, 126,
- 167, 0, 0, 1, 0, 0,
- 0, 0, 0, 0, 0, 45,
- 4, 0, 0, 7, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 2, 0, 0, 0, 12,
- 3, 0, 0, 10, 0, 0,
- 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 152, 167, 0,
- 0, 11, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0,
- 0, 188, 167, 0, 0, 2,
- 0, 0, 0, 0, 0, 0,
- 0, 2, 0, 0, 0, 47,
- 1, 0, 0, 6, 0, 0,
- 0, 0, 0, 0, 0, 7,
- 0, 0, 0, 24, 176, 0,
- 0, 8, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0,
- 0, 32, 176, 0, 0, 7,
- 0, 0, 0, 0, 0, 0,
- 0, 7, 0, 0, 0, 88,
- 181, 0, 0, 96, 181, 0,
- 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 45, 4, 0,
- 0, 7, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 2,
- 0, 0, 0, 12, 3, 0,
- 0, 10, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0,
- 0, 124, 181, 0, 0, 11,
- 0, 0, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 160,
- 181, 0, 0, 2, 0, 0,
- 0, 0, 0, 0, 0, 2,
- 0, 0, 0, 47, 1, 0,
- 0, 6, 0, 0, 0, 0,
- 0, 0, 0, 7, 0, 0,
- 0, 80, 190, 0, 0, 8,
- 0, 0, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 88,
- 190, 0, 0, 7, 0, 0,
- 0, 0, 0, 0, 0, 7,
- 0, 0, 0, 200, 195, 0,
- 0, 208, 195, 0, 0, 1,
- 0, 0, 0, 0, 0, 0,
- 0, 45, 4, 0, 0, 7,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 2, 0, 0,
- 0, 12, 3, 0, 0, 10,
- 0, 0, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 237,
- 195, 0, 0, 11, 0, 0,
- 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 17, 196, 0,
- 0, 2, 0, 0, 0, 0,
- 0, 0, 0, 2, 0, 0,
- 0, 162, 1, 0, 0, 6,
- 0, 0, 0, 0, 0, 0,
- 0, 7, 0, 0, 0, 109,
- 204, 0, 0, 8, 0, 0,
- 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 117, 204, 0,
- 0, 7, 0, 0, 0, 0,
- 0, 0, 0, 7, 0, 0,
- 0, 173, 209, 0, 0, 181,
- 209, 0, 0, 1, 0, 0,
- 0, 0, 0, 0, 0, 45,
- 4, 0, 0, 7, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 2, 0, 0, 0, 12,
- 3, 0, 0, 10, 0, 0,
- 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 212, 209, 0,
- 0, 11, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0,
- 0, 248, 209, 0, 0, 2,
- 0, 0, 0, 0, 0, 0,
- 0, 2, 0, 0, 0, 47,
- 1, 0, 0, 6, 0, 0,
- 0, 0, 0, 0, 0, 7,
- 0, 0, 0, 84, 218, 0,
- 0, 8, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0,
- 0, 92, 218, 0, 0, 7,
- 0, 0, 0, 0, 0, 0,
- 0, 7, 0, 0, 0, 216,
- 223, 0, 0, 224, 223, 0,
- 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 45, 4, 0,
- 0, 7, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 2,
- 0, 0, 0, 12, 3, 0,
- 0, 10, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0,
- 0, 2, 224, 0, 0, 11,
- 0, 0, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 38,
- 224, 0, 0, 2, 0, 0,
- 0, 0, 0, 0, 0, 2,
- 0, 0, 0, 162, 1, 0,
- 0, 6, 0, 0, 0, 0,
- 0, 0, 0, 7, 0, 0,
- 0, 130, 232, 0, 0, 8,
- 0, 0, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 138,
- 232, 0, 0, 7, 0, 0,
- 0, 0, 0, 0, 0, 7,
- 0, 0, 0, 6, 238, 0,
- 0, 14, 238, 0, 0, 1,
- 0, 0, 0, 0, 0, 0,
- 0, 45, 4, 0, 0, 7,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 2, 0, 0,
- 0, 12, 3, 0, 0, 10,
- 0, 0, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 35,
- 238, 0, 0, 11, 0, 0,
- 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 71, 238, 0,
- 0, 2, 0, 0, 0, 0,
- 0, 0, 0, 2, 0, 0,
- 0, 47, 1, 0, 0, 6,
- 0, 0, 0, 0, 0, 0,
- 0, 7, 0, 0, 0, 163,
- 246, 0, 0, 8, 0, 0,
- 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 171, 246, 0,
- 0, 7, 0, 0, 0, 0,
- 0, 0, 0, 7, 0, 0,
- 0, 239, 254, 0, 0, 247,
- 254, 0, 0, 1, 0, 0,
- 0, 0, 0, 0, 0, 45,
- 4, 0, 0, 7, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 2, 0, 0, 0, 12,
- 3, 0, 0, 10, 0, 0,
- 0, 0, 0, 0, 0, 1,
- 0, 0, 0, 21, 255, 0,
- 0, 11, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0,
- 0, 57, 255, 0, 0, 2,
- 0, 0, 0, 0, 0, 0,
- 0, 2, 0, 0, 0, 96,
- 2, 0, 0, 6, 0, 0,
- 0, 0, 0, 0, 0, 7,
- 0, 0, 0, 149, 7, 1,
- 0, 8, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0,
- 0, 157, 7, 1, 0, 7,
- 0, 0, 0, 0, 0, 0,
- 0, 7, 0, 0, 0, 77,
- 14, 1, 0, 85, 14, 1,
- 0, 1, 0, 0, 0, 0,
- 0, 0, 0, 45, 4, 0,
- 0, 7, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 2,
- 0, 0, 0, 12, 3, 0,
- 0, 10, 0, 0, 0, 0,
- 0, 0, 0, 1, 0, 0,
- 0, 111, 14, 1, 0, 11,
- 0, 0, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 147,
- 14, 1, 0, 2, 0, 0,
- 0, 0, 0, 0, 0, 2,
- 0, 0, 0, 47, 1, 0,
- 0, 6, 0, 0, 0, 0,
- 0, 0, 0, 7, 0, 0,
- 0, 239, 22, 1, 0, 8,
- 0, 0, 0, 0, 0, 0,
- 0, 1, 0, 0, 0, 247,
- 22, 1, 0, 7, 0, 0,
- 0, 0, 0, 0, 0, 7,
- 0, 0, 0, 251, 26, 1,
- 0
-};
diff --git a/gfx/layers/d3d10/PaintedLayerD3D10.cpp b/gfx/layers/d3d10/PaintedLayerD3D10.cpp
deleted file mode 100644
index 887b79ada9f6..000000000000
--- a/gfx/layers/d3d10/PaintedLayerD3D10.cpp
+++ /dev/null
@@ -1,478 +0,0 @@
-/* -*- Mode: C++; tab-width: 20; indent-tabs-mode: nil; c-basic-offset: 2 -*-
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-#include "mozilla/layers/PLayerTransaction.h"
-
-// This must occur *after* layers/PLayerTransaction.h to avoid
-// typedefs conflicts.
-#include "mozilla/ArrayUtils.h"
-
-#include "PaintedLayerD3D10.h"
-#include "gfxPlatform.h"
-
-#include "gfxWindowsPlatform.h"
-#ifdef CAIRO_HAS_D2D_SURFACE
-#include "gfxD2DSurface.h"
-#endif
-
-#include "../d3d9/Nv3DVUtils.h"
-#include "gfxTeeSurface.h"
-#include "gfxUtils.h"
-#include "ReadbackLayer.h"
-#include "ReadbackProcessor.h"
-
-#include "mozilla/Preferences.h"
-#include "mozilla/gfx/2D.h"
-
-namespace mozilla {
-namespace layers {
-
-using namespace mozilla::gfx;
-
-PaintedLayerD3D10::PaintedLayerD3D10(LayerManagerD3D10 *aManager)
- : PaintedLayer(aManager, nullptr)
- , LayerD3D10(aManager)
- , mCurrentSurfaceMode(SurfaceMode::SURFACE_OPAQUE)
-{
- mImplData = static_cast(this);
-}
-
-PaintedLayerD3D10::~PaintedLayerD3D10()
-{
-}
-
-void
-PaintedLayerD3D10::InvalidateRegion(const nsIntRegion &aRegion)
-{
- mInvalidRegion.Or(mInvalidRegion, aRegion);
- mInvalidRegion.SimplifyOutward(20);
- mValidRegion.Sub(mValidRegion, mInvalidRegion);
-}
-
-void PaintedLayerD3D10::CopyRegion(ID3D10Texture2D* aSrc, const nsIntPoint &aSrcOffset,
- ID3D10Texture2D* aDest, const nsIntPoint &aDestOffset,
- const nsIntRegion &aCopyRegion, nsIntRegion* aValidRegion)
-{
- nsIntRegion retainedRegion;
- nsIntRegionRectIterator iter(aCopyRegion);
- const nsIntRect *r;
- while ((r = iter.Next())) {
- // Calculate the retained rectangle's position on the old and the new
- // surface.
- D3D10_BOX box;
- box.left = r->x - aSrcOffset.x;
- box.top = r->y - aSrcOffset.y;
- box.right = box.left + r->width;
- box.bottom = box.top + r->height;
- box.back = 1;
- box.front = 0;
-
- device()->CopySubresourceRegion(aDest, 0,
- r->x - aDestOffset.x,
- r->y - aDestOffset.y,
- 0,
- aSrc, 0,
- &box);
-
- retainedRegion.Or(retainedRegion, *r);
- }
-
- // Areas which were valid and were retained are still valid
- aValidRegion->And(*aValidRegion, retainedRegion);
-}
-
-void
-PaintedLayerD3D10::RenderLayer()
-{
- if (!mTexture) {
- return;
- }
-
- SetEffectTransformAndOpacity();
-
- ID3D10EffectTechnique *technique;
- switch (mCurrentSurfaceMode) {
- case SurfaceMode::SURFACE_COMPONENT_ALPHA:
- technique = SelectShader(SHADER_COMPONENT_ALPHA | LoadMaskTexture());
- break;
- case SurfaceMode::SURFACE_OPAQUE:
- technique = SelectShader(SHADER_RGB | SHADER_PREMUL | LoadMaskTexture());
- break;
- case SurfaceMode::SURFACE_SINGLE_CHANNEL_ALPHA:
- technique = SelectShader(SHADER_RGBA | SHADER_PREMUL | LoadMaskTexture());
- break;
- default:
- NS_ERROR("Unknown mode");
- return;
- }
-
- nsIntRegionRectIterator iter(mVisibleRegion);
-
- const nsIntRect *iterRect;
- if (mSRView) {
- effect()->GetVariableByName("tRGB")->AsShaderResource()->SetResource(mSRView);
- }
- if (mSRViewOnWhite) {
- effect()->GetVariableByName("tRGBWhite")->AsShaderResource()->SetResource(mSRViewOnWhite);
- }
-
- while ((iterRect = iter.Next())) {
- effect()->GetVariableByName("vLayerQuad")->AsVector()->SetFloatVector(
- ShaderConstantRectD3D10(
- (float)iterRect->x,
- (float)iterRect->y,
- (float)iterRect->width,
- (float)iterRect->height)
- );
-
- effect()->GetVariableByName("vTextureCoords")->AsVector()->SetFloatVector(
- ShaderConstantRectD3D10(
- (float)(iterRect->x - mTextureRect.x) / (float)mTextureRect.width,
- (float)(iterRect->y - mTextureRect.y) / (float)mTextureRect.height,
- (float)iterRect->width / (float)mTextureRect.width,
- (float)iterRect->height / (float)mTextureRect.height)
- );
-
- technique->GetPassByIndex(0)->Apply(0);
- device()->Draw(4, 0);
- }
-
- // Set back to default.
- effect()->GetVariableByName("vTextureCoords")->AsVector()->
- SetFloatVector(ShaderConstantRectD3D10(0, 0, 1.0f, 1.0f));
-}
-
-void
-PaintedLayerD3D10::Validate(ReadbackProcessor *aReadback)
-{
- if (mVisibleRegion.IsEmpty()) {
- return;
- }
-
- if (FAILED(gfxWindowsPlatform::GetPlatform()->GetD3D10Device()->GetDeviceRemovedReason())) {
- // Device removed, this will be discovered on the next rendering pass.
- // Do no validate.
- return;
- }
-
- nsIntRect newTextureRect = mVisibleRegion.GetBounds();
-
- SurfaceMode mode = GetSurfaceMode();
- if (mode == SurfaceMode::SURFACE_COMPONENT_ALPHA &&
- (!mParent || !mParent->SupportsComponentAlphaChildren())) {
- mode = SurfaceMode::SURFACE_SINGLE_CHANNEL_ALPHA;
- }
- // If we have a transform that requires resampling of our texture, then
- // we need to make sure we don't sample pixels that haven't been drawn.
- // We clamp sample coordinates to the texture rect, but when the visible region
- // doesn't fill the entire texture rect we need to make sure we draw all the
- // pixels in the texture rect anyway in case they get sampled.
- nsIntRegion neededRegion = mVisibleRegion;
- if (!neededRegion.GetBounds().IsEqualInterior(newTextureRect) ||
- neededRegion.GetNumRects() > 1) {
- if (MayResample()) {
- neededRegion = newTextureRect;
- if (mode == SurfaceMode::SURFACE_OPAQUE) {
- // We're going to paint outside the visible region, but layout hasn't
- // promised that it will paint opaquely there, so we'll have to
- // treat this layer as transparent.
- mode = SurfaceMode::SURFACE_SINGLE_CHANNEL_ALPHA;
- }
- }
- }
- mCurrentSurfaceMode = mode;
-
- VerifyContentType(mode);
-
- nsTArray readbackUpdates;
- nsIntRegion readbackRegion;
- if (aReadback && UsedForReadback()) {
- aReadback->GetPaintedLayerUpdates(this, &readbackUpdates, &readbackRegion);
- }
-
- if (mTexture) {
- if (!mTextureRect.IsEqualInterior(newTextureRect)) {
- nsRefPtr oldTexture = mTexture;
- mTexture = nullptr;
- nsRefPtr oldTextureOnWhite = mTextureOnWhite;
- mTextureOnWhite = nullptr;
-
- nsIntRegion retainRegion = mTextureRect;
- // Old visible region will become the region that is covered by both the
- // old and the new visible region.
- retainRegion.And(retainRegion, mVisibleRegion);
- // No point in retaining parts which were not valid.
- retainRegion.And(retainRegion, mValidRegion);
-
- CreateNewTextures(gfx::IntSize(newTextureRect.width, newTextureRect.height), mode);
-
- nsIntRect largeRect = retainRegion.GetLargestRectangle();
-
- // If we had no hardware texture before, or have no retained area larger than
- // the retention threshold, we're not retaining and are done here.
- // If our texture creation failed this can mean a device reset is pending
- // and we should silently ignore the failure. In the future when device
- // failures are properly handled we should test for the type of failure
- // and gracefully handle different failures. See bug 569081.
- if (!oldTexture || !mTexture) {
- mValidRegion.SetEmpty();
- } else {
- CopyRegion(oldTexture, mTextureRect.TopLeft(),
- mTexture, newTextureRect.TopLeft(),
- retainRegion, &mValidRegion);
- if (oldTextureOnWhite) {
- CopyRegion(oldTextureOnWhite, mTextureRect.TopLeft(),
- mTextureOnWhite, newTextureRect.TopLeft(),
- retainRegion, &mValidRegion);
- }
- }
- }
- }
- mTextureRect = newTextureRect;
-
- if (!mTexture || (mode == SurfaceMode::SURFACE_COMPONENT_ALPHA && !mTextureOnWhite)) {
- CreateNewTextures(gfx::IntSize(newTextureRect.width, newTextureRect.height), mode);
- mValidRegion.SetEmpty();
- }
-
- nsIntRegion drawRegion;
- drawRegion.Sub(neededRegion, mValidRegion);
-
- if (!drawRegion.IsEmpty()) {
- LayerManagerD3D10::CallbackInfo cbInfo = mD3DManager->GetCallbackInfo();
- if (!cbInfo.Callback) {
- NS_ERROR("D3D10 should never need to update PaintedLayers in an empty transaction");
- return;
- }
-
- DrawRegion(drawRegion, mode);
-
- if (readbackUpdates.Length() > 0) {
- CD3D10_TEXTURE2D_DESC desc(DXGI_FORMAT_B8G8R8A8_UNORM,
- newTextureRect.width, newTextureRect.height,
- 1, 1, 0, D3D10_USAGE_STAGING,
- D3D10_CPU_ACCESS_READ);
-
- nsRefPtr readbackTexture;
- HRESULT hr = device()->CreateTexture2D(&desc, nullptr, getter_AddRefs(readbackTexture));
- if (FAILED(hr)) {
- LayerManagerD3D10::ReportFailure(NS_LITERAL_CSTRING("PaintedLayerD3D10::Validate(): Failed to create texture"),
- hr);
- return;
- }
-
- device()->CopyResource(readbackTexture, mTexture);
-
- for (uint32_t i = 0; i < readbackUpdates.Length(); i++) {
- mD3DManager->readbackManager()->PostTask(readbackTexture,
- &readbackUpdates[i],
- gfxPoint(newTextureRect.x, newTextureRect.y));
- }
- }
-
- mValidRegion = neededRegion;
- }
-}
-
-void
-PaintedLayerD3D10::LayerManagerDestroyed()
-{
- mD3DManager = nullptr;
-}
-
-Layer*
-PaintedLayerD3D10::GetLayer()
-{
- return this;
-}
-
-void
-PaintedLayerD3D10::VerifyContentType(SurfaceMode aMode)
-{
- if (mDrawTarget) {
- SurfaceFormat format = aMode != SurfaceMode::SURFACE_SINGLE_CHANNEL_ALPHA ?
- SurfaceFormat::B8G8R8X8 : SurfaceFormat::B8G8R8A8;
-
- if (format != mDrawTarget->GetFormat()) {
- mDrawTarget = Factory::CreateDrawTargetForD3D10Texture(mTexture, format);
-
- if (!mDrawTarget) {
- gfxWarning() << "Failed to create drawtarget for PaintedLayerD3D10.";
- return;
- }
-
- mValidRegion.SetEmpty();
- }
- }
-
- if (aMode != SurfaceMode::SURFACE_COMPONENT_ALPHA && mTextureOnWhite) {
- // If we've transitioned away from component alpha, we can delete those resources.
- mSRViewOnWhite = nullptr;
- mTextureOnWhite = nullptr;
- mValidRegion.SetEmpty();
- }
-}
-
-void
-PaintedLayerD3D10::FillTexturesBlackWhite(const nsIntRegion& aRegion, const nsIntPoint& aOffset)
-{
- if (mTexture && mTextureOnWhite) {
- // It would be more optimal to draw the actual geometry, but more code
- // and probably not worth the win here as this will often be a single
- // rect.
- nsRefPtr oldRT;
- device()->OMGetRenderTargets(1, getter_AddRefs(oldRT), nullptr);
-
- nsRefPtr viewBlack;
- nsRefPtr viewWhite;
- device()->CreateRenderTargetView(mTexture, nullptr, getter_AddRefs(viewBlack));
- device()->CreateRenderTargetView(mTextureOnWhite, nullptr, getter_AddRefs(viewWhite));
-
- D3D10_RECT oldScissor;
- UINT numRects = 1;
- device()->RSGetScissorRects(&numRects, &oldScissor);
-
- D3D10_TEXTURE2D_DESC desc;
- mTexture->GetDesc(&desc);
-
- D3D10_RECT scissor = { 0, 0, desc.Width, desc.Height };
- device()->RSSetScissorRects(1, &scissor);
-
- mD3DManager->SetupInputAssembler();
- nsIntSize oldVP = mD3DManager->GetViewport();
-
- mD3DManager->SetViewport(nsIntSize(desc.Width, desc.Height));
-
- ID3D10RenderTargetView *views[2] = { viewBlack, viewWhite };
- device()->OMSetRenderTargets(2, views, nullptr);
-
- gfx3DMatrix transform;
- transform.Translate(Point3D(-aOffset.x, -aOffset.y, 0));
- void* raw = &const_cast(transform)._11;
- effect()->GetVariableByName("mLayerTransform")->SetRawValue(raw, 0, 64);
-
- ID3D10EffectTechnique *technique =
- effect()->GetTechniqueByName("PrepareAlphaExtractionTextures");
-
- nsIntRegionRectIterator iter(aRegion);
-
- const nsIntRect *iterRect;
- while ((iterRect = iter.Next())) {
- effect()->GetVariableByName("vLayerQuad")->AsVector()->SetFloatVector(
- ShaderConstantRectD3D10(
- (float)iterRect->x,
- (float)iterRect->y,
- (float)iterRect->width,
- (float)iterRect->height)
- );
-
- technique->GetPassByIndex(0)->Apply(0);
- device()->Draw(4, 0);
- }
-
- views[0] = oldRT;
- device()->OMSetRenderTargets(1, views, nullptr);
- mD3DManager->SetViewport(oldVP);
- device()->RSSetScissorRects(1, &oldScissor);
- }
-}
-
-void
-PaintedLayerD3D10::DrawRegion(nsIntRegion &aRegion, SurfaceMode aMode)
-{
- nsIntRect visibleRect = mVisibleRegion.GetBounds();
-
- if (!mDrawTarget) {
- return;
- }
-
- aRegion.SimplifyOutwardByArea(100 * 100);
-
- if (aMode == SurfaceMode::SURFACE_COMPONENT_ALPHA) {
- FillTexturesBlackWhite(aRegion, visibleRect.TopLeft());
- }
-
- nsRefPtr context = new gfxContext(mDrawTarget);
-
- context->SetMatrix(
- context->CurrentMatrix().Translate(-visibleRect.x, -visibleRect.y));
- if (aMode == SurfaceMode::SURFACE_SINGLE_CHANNEL_ALPHA) {
- nsIntRegionRectIterator iter(aRegion);
- const nsIntRect *iterRect;
- while ((iterRect = iter.Next())) {
- mDrawTarget->ClearRect(Rect(iterRect->x, iterRect->y, iterRect->width, iterRect->height));
- }
- }
-
- mDrawTarget->SetPermitSubpixelAA(!(mContentFlags & CONTENT_COMPONENT_ALPHA));
-
- LayerManagerD3D10::CallbackInfo cbInfo = mD3DManager->GetCallbackInfo();
- cbInfo.Callback(this, context, aRegion, DrawRegionClip::DRAW, nsIntRegion(), cbInfo.CallbackData);
-}
-
-void
-PaintedLayerD3D10::CreateNewTextures(const gfx::IntSize &aSize, SurfaceMode aMode)
-{
- if (aSize.width == 0 || aSize.height == 0) {
- // Nothing to do.
- return;
- }
-
- CD3D10_TEXTURE2D_DESC desc(DXGI_FORMAT_B8G8R8A8_UNORM, aSize.width, aSize.height, 1, 1);
- desc.BindFlags = D3D10_BIND_RENDER_TARGET | D3D10_BIND_SHADER_RESOURCE;
- desc.MiscFlags = D3D10_RESOURCE_MISC_GDI_COMPATIBLE;
- HRESULT hr;
-
- if (!mTexture) {
- hr = device()->CreateTexture2D(&desc, nullptr, getter_AddRefs(mTexture));
-
- if (FAILED(hr)) {
- NS_WARNING("Failed to create new texture for PaintedLayerD3D10!");
- return;
- }
-
- hr = device()->CreateShaderResourceView(mTexture, nullptr, getter_AddRefs(mSRView));
-
- if (FAILED(hr)) {
- NS_WARNING("Failed to create shader resource view for PaintedLayerD3D10.");
- }
-
- mDrawTarget = nullptr;
- }
-
- if (aMode == SurfaceMode::SURFACE_COMPONENT_ALPHA && !mTextureOnWhite) {
- hr = device()->CreateTexture2D(&desc, nullptr, getter_AddRefs(mTextureOnWhite));
-
- if (FAILED(hr)) {
- NS_WARNING("Failed to create new texture for PaintedLayerD3D10!");
- return;
- }
-
- hr = device()->CreateShaderResourceView(mTextureOnWhite, nullptr, getter_AddRefs(mSRViewOnWhite));
-
- if (FAILED(hr)) {
- NS_WARNING("Failed to create shader resource view for PaintedLayerD3D10.");
- }
-
- mDrawTarget = nullptr;
- }
-
- if (!mDrawTarget) {
- if (aMode == SurfaceMode::SURFACE_COMPONENT_ALPHA) {
- mDrawTarget = Factory::CreateDualDrawTargetForD3D10Textures(mTexture, mTextureOnWhite, SurfaceFormat::B8G8R8X8);
- } else {
- mDrawTarget = Factory::CreateDrawTargetForD3D10Texture(mTexture, aMode != SurfaceMode::SURFACE_SINGLE_CHANNEL_ALPHA ?
- SurfaceFormat::B8G8R8X8 : SurfaceFormat::B8G8R8A8);
- }
-
- if (!mDrawTarget) {
- gfxWarning() << "Failed to create DrawTarget for PaintedLayerD3D10.";
- return;
- }
- }
-}
-
-} /* namespace layers */
-} /* namespace mozilla */
diff --git a/gfx/layers/d3d10/PaintedLayerD3D10.h b/gfx/layers/d3d10/PaintedLayerD3D10.h
deleted file mode 100644
index c6d502d377b8..000000000000
--- a/gfx/layers/d3d10/PaintedLayerD3D10.h
+++ /dev/null
@@ -1,73 +0,0 @@
-/* -*- Mode: C++; tab-width: 20; indent-tabs-mode: nil; c-basic-offset: 2 -*-
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-#ifndef GFX_PAINTEDLAYERD3D10_H
-#define GFX_PAINTEDLAYERD3D10_H
-
-#include "LayerManagerD3D10.h"
-
-namespace mozilla {
-namespace layers {
-
-class PaintedLayerD3D10 : public PaintedLayer,
- public LayerD3D10
-{
-public:
- PaintedLayerD3D10(LayerManagerD3D10 *aManager);
- virtual ~PaintedLayerD3D10();
-
- void Validate(ReadbackProcessor *aReadback);
-
- /* PaintedLayer implementation */
- void InvalidateRegion(const nsIntRegion& aRegion);
-
- /* LayerD3D10 implementation */
- virtual Layer* GetLayer();
- virtual void RenderLayer();
- virtual void Validate() { Validate(nullptr); }
- virtual void LayerManagerDestroyed();
-
-private:
- /* Texture with our surface data */
- nsRefPtr mTexture;
-
- /* Shader resource view for our texture */
- nsRefPtr mSRView;
-
- /* Texture for render-on-whitew when doing component alpha */
- nsRefPtr mTextureOnWhite;
-
- /* Shader resource view for our render-on-white texture */
- nsRefPtr mSRViewOnWhite;
-
- /* Area of layer currently stored in texture(s) */
- nsIntRect mTextureRect;
-
- /* Last surface mode set in Validate() */
- SurfaceMode mCurrentSurfaceMode;
-
- /* Checks if our D2D surface has the right content type */
- void VerifyContentType(SurfaceMode aMode);
-
- mozilla::RefPtr mDrawTarget;
-
- /* Have a region of our layer drawn */
- void DrawRegion(nsIntRegion &aRegion, SurfaceMode aMode);
-
- /* Create a new texture */
- void CreateNewTextures(const gfx::IntSize &aSize, SurfaceMode aMode);
-
- // Fill textures with opaque black and white in the specified region.
- void FillTexturesBlackWhite(const nsIntRegion& aRegion, const nsIntPoint& aOffset);
-
- /* Copy a texture region */
- void CopyRegion(ID3D10Texture2D* aSrc, const nsIntPoint &aSrcOffset,
- ID3D10Texture2D* aDest, const nsIntPoint &aDestOffset,
- const nsIntRegion &aCopyRegion, nsIntRegion* aValidRegion);
-};
-
-} /* layers */
-} /* mozilla */
-#endif /* GFX_PAINTEDLAYERD3D10_H */
diff --git a/gfx/layers/d3d10/ReadbackLayerD3D10.h b/gfx/layers/d3d10/ReadbackLayerD3D10.h
deleted file mode 100644
index a731304b02e2..000000000000
--- a/gfx/layers/d3d10/ReadbackLayerD3D10.h
+++ /dev/null
@@ -1,33 +0,0 @@
-/* -*- Mode: C++; tab-width: 20; indent-tabs-mode: nil; c-basic-offset: 2 -*-
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-#ifndef GFX_READBACKLAYERD3D10_H
-#define GFX_READBACKLAYERD3D10_H
-
-#include "LayerManagerD3D10.h"
-#include "ReadbackLayer.h"
-
-namespace mozilla {
-namespace layers {
-
-class ReadbackLayerD3D10 :
- public ReadbackLayer,
- public LayerD3D10
-{
-public:
- ReadbackLayerD3D10(LayerManagerD3D10 *aManager)
- : ReadbackLayer(aManager, nullptr),
- LayerD3D10(aManager)
- {
- mImplData = static_cast(this);
- }
-
- virtual Layer* GetLayer() { return this; }
- virtual void RenderLayer() {}
-};
-
-} /* layers */
-} /* mozilla */
-#endif /* GFX_READBACKLAYERD3D10_H */
diff --git a/gfx/layers/d3d10/ReadbackManagerD3D10.cpp b/gfx/layers/d3d10/ReadbackManagerD3D10.cpp
deleted file mode 100644
index 650087615adc..000000000000
--- a/gfx/layers/d3d10/ReadbackManagerD3D10.cpp
+++ /dev/null
@@ -1,225 +0,0 @@
-/* -*- Mode: C++; tab-width: 20; indent-tabs-mode: nil; c-basic-offset: 4 -*-
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-#include "ReadbackManagerD3D10.h"
-#include "ReadbackProcessor.h"
-#include "ReadbackLayer.h"
-
-#include "nsIThread.h"
-#include "nsThreadUtils.h"
-#include "gfxImageSurface.h"
-#include "gfxContext.h"
-
-namespace mozilla {
-namespace layers {
-
-// Structure that contains the information required to execute a readback task,
-// the only member accessed off the main thread here is mReadbackTexture. Since
-// mLayer may be released only on the main thread this object should always be
-// destroyed on the main thread!
-struct ReadbackTask {
- // The texture that we copied the contents of the paintedlayer to.
- nsRefPtr mReadbackTexture;
- // This exists purely to keep the ReadbackLayer alive for the lifetime of
- // mUpdate. Note that this addref and release should occur -solely- on the
- // main thread.
- nsRefPtr mLayer;
- ReadbackProcessor::Update mUpdate;
- // The origin in PaintedLayer coordinates of mReadbackTexture.
- gfxPoint mOrigin;
- // mLayer->GetBackgroundOffset() when the task is created. We have
- // to save this in the ReadbackTask because it might change before
- // the update is delivered to the readback sink.
- nsIntPoint mBackgroundOffset;
-};
-
-// This class is created and dispatched from the Readback thread but it must be
-// destroyed by the main thread.
-class ReadbackResultWriter MOZ_FINAL : public nsIRunnable
-{
- ~ReadbackResultWriter() {}
- NS_DECL_THREADSAFE_ISUPPORTS
-public:
- ReadbackResultWriter(ReadbackTask *aTask) : mTask(aTask) {}
-
- NS_IMETHODIMP Run()
- {
- ReadbackProcessor::Update *update = &mTask->mUpdate;
-
- if (!update->mLayer->GetSink()) {
- // This can happen when a plugin is destroyed.
- return NS_OK;
- }
-
- nsIntPoint offset = mTask->mBackgroundOffset;
-
- D3D10_TEXTURE2D_DESC desc;
- mTask->mReadbackTexture->GetDesc(&desc);
-
- D3D10_MAPPED_TEXTURE2D mappedTex;
- // We know this map will immediately succeed, as we've already mapped this
- // copied data on our task thread.
- HRESULT hr = mTask->mReadbackTexture->Map(0, D3D10_MAP_READ, 0, &mappedTex);
-
- if (FAILED(hr)) {
- // If this fails we're never going to get our PaintedLayer content.
- update->mLayer->GetSink()->SetUnknown(update->mSequenceCounter);
- return NS_OK;
- }
-
- nsRefPtr sourceSurface =
- new gfxImageSurface((unsigned char*)mappedTex.pData,
- gfxIntSize(desc.Width, desc.Height),
- mappedTex.RowPitch,
- gfxImageFormat::RGB24);
-
- nsRefPtr ctx =
- update->mLayer->GetSink()->BeginUpdate(update->mUpdateRect + offset,
- update->mSequenceCounter);
-
- if (ctx) {
- ctx->SetMatrix(
- ctx->CurrentMatrix().Translate(offset.x, offset.y));
- ctx->SetSource(sourceSurface, gfxPoint(mTask->mOrigin.x,
- mTask->mOrigin.y));
- ctx->Paint();
-
- update->mLayer->GetSink()->EndUpdate(ctx, update->mUpdateRect + offset);
- }
-
- mTask->mReadbackTexture->Unmap(0);
-
- return NS_OK;
- }
-
-private:
- nsAutoPtr mTask;
-};
-
-NS_IMPL_ISUPPORTS(ReadbackResultWriter, nsIRunnable)
-
-DWORD WINAPI StartTaskThread(void *aManager)
-{
- static_cast(aManager)->ProcessTasks();
-
- return 0;
-}
-
-ReadbackManagerD3D10::ReadbackManagerD3D10()
- : mRefCnt(0)
-{
- ::InitializeCriticalSection(&mTaskMutex);
- mShutdownEvent = ::CreateEventA(nullptr, FALSE, FALSE, nullptr);
- mTaskSemaphore = ::CreateSemaphoreA(nullptr, 0, 1000000, nullptr);
- mTaskThread = ::CreateThread(nullptr, 0, StartTaskThread, this, 0, 0);
-}
-
-ReadbackManagerD3D10::~ReadbackManagerD3D10()
-{
- ::SetEvent(mShutdownEvent);
-
- // This shouldn't take longer than 5 seconds, if it does we're going to choose
- // to leak the thread and its synchronisation in favor of crashing or freezing
- DWORD result = ::WaitForSingleObject(mTaskThread, 5000);
- if (result != WAIT_TIMEOUT) {
- ::DeleteCriticalSection(&mTaskMutex);
- ::CloseHandle(mShutdownEvent);
- ::CloseHandle(mTaskSemaphore);
- ::CloseHandle(mTaskThread);
- } else {
- NS_RUNTIMEABORT("ReadbackManager: Task thread did not shutdown in 5 seconds.");
- }
-}
-
-void
-ReadbackManagerD3D10::PostTask(ID3D10Texture2D *aTexture, void *aUpdate, const gfxPoint &aOrigin)
-{
- ReadbackTask *task = new ReadbackTask;
- task->mReadbackTexture = aTexture;
- task->mUpdate = *static_cast(aUpdate);
- task->mOrigin = aOrigin;
- task->mLayer = task->mUpdate.mLayer;
- task->mBackgroundOffset = task->mLayer->GetBackgroundLayerOffset();
-
- ::EnterCriticalSection(&mTaskMutex);
- mPendingReadbackTasks.AppendElement(task);
- ::LeaveCriticalSection(&mTaskMutex);
-
- ::ReleaseSemaphore(mTaskSemaphore, 1, nullptr);
-}
-
-HRESULT
-ReadbackManagerD3D10::QueryInterface(REFIID riid, void **ppvObject)
-{
- if (!ppvObject) {
- return E_POINTER;
- }
-
- if (riid == IID_IUnknown) {
- *ppvObject = this;
- } else {
- return E_NOINTERFACE;
- }
-
- return S_OK;
-}
-
-ULONG
-ReadbackManagerD3D10::AddRef()
-{
- NS_ASSERTION(NS_IsMainThread(),
- "ReadbackManagerD3D10 should only be refcounted on main thread.");
- return ++mRefCnt;
-}
-
-ULONG
-ReadbackManagerD3D10::Release()
-{
- NS_ASSERTION(NS_IsMainThread(),
- "ReadbackManagerD3D10 should only be refcounted on main thread.");
- ULONG newRefCnt = --mRefCnt;
- if (!newRefCnt) {
- mRefCnt++;
- delete this;
- }
- return newRefCnt;
-}
-
-void
-ReadbackManagerD3D10::ProcessTasks()
-{
- HANDLE handles[] = { mTaskSemaphore, mShutdownEvent };
-
- while (true) {
- DWORD result = ::WaitForMultipleObjects(2, handles, FALSE, INFINITE);
- if (result != WAIT_OBJECT_0) {
- return;
- }
-
- ::EnterCriticalSection(&mTaskMutex);
- if (mPendingReadbackTasks.Length() == 0) {
- NS_RUNTIMEABORT("Trying to read from an empty array, bad bad bad");
- }
- ReadbackTask *nextReadbackTask = mPendingReadbackTasks[0].forget();
- mPendingReadbackTasks.RemoveElementAt(0);
- ::LeaveCriticalSection(&mTaskMutex);
-
- // We want to block here until the texture contents are available, the
- // easiest thing is to simply map and unmap.
- D3D10_MAPPED_TEXTURE2D mappedTex;
- nextReadbackTask->mReadbackTexture->Map(0, D3D10_MAP_READ, 0, &mappedTex);
- nextReadbackTask->mReadbackTexture->Unmap(0);
-
- // We can only send the update to the sink on the main thread, so post an
- // event there to do so. Ownership of the task is passed from
- // mPendingReadbackTasks to ReadbackResultWriter here.
- nsCOMPtr thread = do_GetMainThread();
- thread->Dispatch(new ReadbackResultWriter(nextReadbackTask),
- nsIEventTarget::DISPATCH_NORMAL);
- }
-}
-
-}
-}
diff --git a/gfx/layers/d3d10/ReadbackManagerD3D10.h b/gfx/layers/d3d10/ReadbackManagerD3D10.h
deleted file mode 100644
index 5aa5113746f3..000000000000
--- a/gfx/layers/d3d10/ReadbackManagerD3D10.h
+++ /dev/null
@@ -1,75 +0,0 @@
-/* -*- Mode: C++; tab-width: 20; indent-tabs-mode: nil; c-basic-offset: 4 -*-
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-#ifndef GFX_READBACKMANAGERD3D10_H
-#define GFX_READBACKMANAGERD3D10_H
-
-#include
-#include
-
-#include "nsTArray.h"
-#include "nsAutoPtr.h"
-#include "gfxPoint.h"
-
-namespace mozilla {
-namespace layers {
-
-DWORD WINAPI StartTaskThread(void *aManager);
-
-struct ReadbackTask;
-
-class ReadbackManagerD3D10 MOZ_FINAL : public IUnknown
-{
-public:
- ReadbackManagerD3D10();
- ~ReadbackManagerD3D10();
-
- /**
- * Tell the readback manager to post a readback task.
- *
- * @param aTexture D3D10_USAGE_STAGING texture that will contain the data that
- * was readback.
- * @param aUpdate ReadbackProcessor::Update object. This is a void pointer
- * since we cannot forward declare a nested class, and do not
- * export ReadbackProcessor.h
- * @param aOrigin Origin of the aTexture surface in the PaintedLayer
- * coordinate system.
- */
- void PostTask(ID3D10Texture2D *aTexture, void *aUpdate, const gfxPoint &aOrigin);
-
- virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid,
- void **ppvObject);
- virtual ULONG STDMETHODCALLTYPE AddRef(void);
- virtual ULONG STDMETHODCALLTYPE Release(void);
-
-private:
- friend DWORD WINAPI StartTaskThread(void *aManager);
-
- void ProcessTasks();
-
- // The invariant maintained by |mTaskSemaphore| is that the readback thread
- // will awaken from WaitForMultipleObjects() at least once per readback
- // task enqueued by the main thread. Since the readback thread processes
- // exactly one task per wakeup (with one exception), no tasks are lost. The
- // exception is when the readback thread is shut down, which orphans the
- // remaining tasks, on purpose.
- HANDLE mTaskSemaphore;
- // Event signaled when the task thread should shutdown
- HANDLE mShutdownEvent;
- // Handle to the task thread
- HANDLE mTaskThread;
-
- // FiFo list of readback tasks that are to be executed. Access is synchronized
- // by mTaskMutex.
- CRITICAL_SECTION mTaskMutex;
- nsTArray> mPendingReadbackTasks;
-
- ULONG mRefCnt;
-};
-
-}
-}
-
-#endif /* GFX_READBACKMANAGERD3D10_H */
diff --git a/gfx/layers/d3d10/genshaders.sh b/gfx/layers/d3d10/genshaders.sh
deleted file mode 100644
index 6cd82bcb87bf..000000000000
--- a/gfx/layers/d3d10/genshaders.sh
+++ /dev/null
@@ -1,5 +0,0 @@
-# This Source Code Form is subject to the terms of the Mozilla Public
-# License, v. 2.0. If a copy of the MPL was not distributed with this
-# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
-fxc LayerManagerD3D10.fx -nologo -FhLayerManagerD3D10Effect.h -Tfx_4_0
diff --git a/gfx/layers/d3d9/CanvasLayerD3D9.cpp b/gfx/layers/d3d9/CanvasLayerD3D9.cpp
deleted file mode 100644
index f8ce2e67df18..000000000000
--- a/gfx/layers/d3d9/CanvasLayerD3D9.cpp
+++ /dev/null
@@ -1,215 +0,0 @@
-/* -*- Mode: C++; tab-width: 20; indent-tabs-mode: nil; c-basic-offset: 2 -*-
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-
-#include "mozilla/layers/PLayerTransaction.h"
-
-#include "gfxWindowsSurface.h"
-#include "gfxWindowsPlatform.h"
-#include "SharedSurface.h"
-#include "SharedSurfaceGL.h"
-#include "GLContext.h"
-#include "CanvasLayerD3D9.h"
-
-using namespace mozilla::gfx;
-using namespace mozilla::gl;
-
-namespace mozilla {
-namespace layers {
-
-CanvasLayerD3D9::CanvasLayerD3D9(LayerManagerD3D9 *aManager)
- : CanvasLayer(aManager, nullptr)
- , LayerD3D9(aManager)
- , mDataIsPremultiplied(true)
- , mOriginPos(gl::OriginPos::TopLeft)
- , mHasAlpha(true)
-{
- mImplData = static_cast(this);
- aManager->deviceManager()->mLayersWithResources.AppendElement(this);
-}
-
-CanvasLayerD3D9::~CanvasLayerD3D9()
-{
- if (mD3DManager) {
- mD3DManager->deviceManager()->mLayersWithResources.RemoveElement(this);
- }
-}
-
-void
-CanvasLayerD3D9::Initialize(const Data& aData)
-{
- NS_ASSERTION(mDrawTarget == nullptr, "BasicCanvasLayer::Initialize called twice!");
-
- if (aData.mDrawTarget) {
- mDrawTarget = aData.mDrawTarget;
- } else if (aData.mGLContext) {
- mGLContext = aData.mGLContext;
- NS_ASSERTION(mGLContext->IsOffscreen(), "Canvas GLContext must be offscreen.");
- mDataIsPremultiplied = aData.mIsGLAlphaPremult;
- mOriginPos = gl::OriginPos::BottomLeft;
- } else {
- NS_ERROR("CanvasLayer created without mGLContext or mDrawTarget?");
- }
-
- mBounds.SetRect(0, 0, aData.mSize.width, aData.mSize.height);
-
- CreateTexture();
-}
-
-void
-CanvasLayerD3D9::UpdateSurface()
-{
- if (!IsDirty() && mTexture)
- return;
- Painted();
-
- if (!mTexture) {
- CreateTexture();
-
- if (!mTexture) {
- NS_WARNING("CanvasLayerD3D9::Updated called but no texture present and creation failed!");
- return;
- }
- }
-
- // WebGL reads entire surface.
- LockTextureRectD3D9 textureLock(mTexture);
- if (!textureLock.HasLock()) {
- NS_WARNING("Failed to lock CanvasLayer texture.");
- return;
- }
-
- D3DLOCKED_RECT rect = textureLock.GetLockRect();
- IntSize boundsSize(mBounds.width, mBounds.height);
- RefPtr rectDt = Factory::CreateDrawTargetForData(BackendType::CAIRO,
- (uint8_t*)rect.pBits,
- boundsSize,
- rect.Pitch,
- SurfaceFormat::B8G8R8A8);
-
- if (mGLContext) {
- auto screen = mGLContext->Screen();
- MOZ_ASSERT(screen);
-
- SharedSurface* surf = screen->Front()->Surf();
- if (!surf)
- return;
- surf->WaitSync();
-
- if (!ReadbackSharedSurface(surf, rectDt)) {
- NS_WARNING("Failed to readback into texture.");
- }
- } else {
- RefPtr surface = mDrawTarget->Snapshot();
-
- Rect drawRect(0, 0, surface->GetSize().width, surface->GetSize().height);
- rectDt->DrawSurface(surface, drawRect, drawRect,
- DrawSurfaceOptions(), DrawOptions(1.0F, CompositionOp::OP_SOURCE));
-
- rectDt->Flush();
- }
-}
-
-Layer*
-CanvasLayerD3D9::GetLayer()
-{
- return this;
-}
-
-void
-CanvasLayerD3D9::RenderLayer()
-{
- FirePreTransactionCallback();
- UpdateSurface();
- if (mD3DManager->CompositingDisabled()) {
- return;
- }
- FireDidTransactionCallback();
-
- if (!mTexture)
- return;
-
- /*
- * We flip the Y axis here, note we can only do this because we are in
- * CULL_NONE mode!
- */
- ShaderConstantRect quad(0, 0, mBounds.width, mBounds.height);
-
- const bool needsYFlip = (mOriginPos == gl::OriginPos::BottomLeft);
- if (needsYFlip) {
- quad.mHeight = (float)-mBounds.height;
- quad.mY = (float)mBounds.height;
- }
-
- device()->SetVertexShaderConstantF(CBvLayerQuad, quad, 1);
-
- SetShaderTransformAndOpacity();
-
- if (mHasAlpha) {
- mD3DManager->SetShaderMode(DeviceManagerD3D9::RGBALAYER, GetMaskLayer());
- } else {
- mD3DManager->SetShaderMode(DeviceManagerD3D9::RGBLAYER, GetMaskLayer());
- }
-
- if (mFilter == GraphicsFilter::FILTER_NEAREST) {
- device()->SetSamplerState(0, D3DSAMP_MAGFILTER, D3DTEXF_POINT);
- device()->SetSamplerState(0, D3DSAMP_MINFILTER, D3DTEXF_POINT);
- }
- if (!mDataIsPremultiplied) {
- device()->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_SRCALPHA);
- device()->SetRenderState(D3DRS_SEPARATEALPHABLENDENABLE, TRUE);
- }
- device()->SetTexture(0, mTexture);
- device()->DrawPrimitive(D3DPT_TRIANGLESTRIP, 0, 2);
- if (!mDataIsPremultiplied) {
- device()->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_ONE);
- device()->SetRenderState(D3DRS_SEPARATEALPHABLENDENABLE, FALSE);
- }
- if (mFilter == GraphicsFilter::FILTER_NEAREST) {
- device()->SetSamplerState(0, D3DSAMP_MAGFILTER, D3DTEXF_LINEAR);
- device()->SetSamplerState(0, D3DSAMP_MINFILTER, D3DTEXF_LINEAR);
- }
-}
-
-void
-CanvasLayerD3D9::CleanResources()
-{
- if (mD3DManager->deviceManager()->HasDynamicTextures()) {
- // In this case we have a texture in POOL_DEFAULT
- mTexture = nullptr;
- }
-}
-
-void
-CanvasLayerD3D9::LayerManagerDestroyed()
-{
- mD3DManager->deviceManager()->mLayersWithResources.RemoveElement(this);
- mD3DManager = nullptr;
-}
-
-void
-CanvasLayerD3D9::CreateTexture()
-{
- HRESULT hr;
- if (mD3DManager->deviceManager()->HasDynamicTextures()) {
- hr = device()->CreateTexture(mBounds.width, mBounds.height, 1, D3DUSAGE_DYNAMIC,
- D3DFMT_A8R8G8B8, D3DPOOL_DEFAULT,
- getter_AddRefs(mTexture), nullptr);
- } else {
- // D3DPOOL_MANAGED is fine here since we require Dynamic Textures for D3D9Ex
- // devices.
- hr = device()->CreateTexture(mBounds.width, mBounds.height, 1, 0,
- D3DFMT_A8R8G8B8, D3DPOOL_MANAGED,
- getter_AddRefs(mTexture), nullptr);
- }
- if (FAILED(hr)) {
- mD3DManager->ReportFailure(NS_LITERAL_CSTRING("CanvasLayerD3D9::CreateTexture() failed"),
- hr);
- return;
- }
-}
-
-} /* namespace layers */
-} /* namespace mozilla */
diff --git a/gfx/layers/d3d9/CanvasLayerD3D9.h b/gfx/layers/d3d9/CanvasLayerD3D9.h
deleted file mode 100644
index 3a4234ea0437..000000000000
--- a/gfx/layers/d3d9/CanvasLayerD3D9.h
+++ /dev/null
@@ -1,69 +0,0 @@
-/* -*- Mode: C++; tab-width: 20; indent-tabs-mode: nil; c-basic-offset: 2 -*-
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-#ifndef GFX_CANVASLAYERD3D9_H
-#define GFX_CANVASLAYERD3D9_H
-
-#include "GLContextTypes.h"
-#include "LayerManagerD3D9.h"
-
-namespace mozilla {
-namespace layers {
-
-
-class CanvasLayerD3D9 :
- public CanvasLayer,
- public LayerD3D9
-{
-public:
- CanvasLayerD3D9(LayerManagerD3D9 *aManager);
- ~CanvasLayerD3D9();
-
- // CanvasLayer implementation
- virtual void Initialize(const Data& aData);
-
- // LayerD3D9 implementation
- virtual Layer* GetLayer();
- virtual void RenderLayer();
- virtual void CleanResources();
- virtual void LayerManagerDestroyed();
-
- void CreateTexture();
-
-protected:
- typedef mozilla::gl::GLContext GLContext;
-
- void UpdateSurface();
-
- nsRefPtr mGLContext;
- nsRefPtr mTexture;
- RefPtr mDrawTarget;
-
- bool mDataIsPremultiplied;
- gl::OriginPos mOriginPos;
- bool mHasAlpha;
-
- nsAutoArrayPtr mCachedTempBlob;
- uint32_t mCachedTempBlob_Size;
-
- uint8_t* GetTempBlob(const uint32_t aSize)
- {
- if (!mCachedTempBlob || aSize != mCachedTempBlob_Size) {
- mCachedTempBlob = new uint8_t[aSize];
- mCachedTempBlob_Size = aSize;
- }
-
- return mCachedTempBlob;
- }
-
- void DiscardTempBlob()
- {
- mCachedTempBlob = nullptr;
- }
-};
-
-} /* layers */
-} /* mozilla */
-#endif /* GFX_CANVASLAYERD3D9_H */
diff --git a/gfx/layers/d3d9/ColorLayerD3D9.cpp b/gfx/layers/d3d9/ColorLayerD3D9.cpp
deleted file mode 100644
index 3f287fed7f89..000000000000
--- a/gfx/layers/d3d9/ColorLayerD3D9.cpp
+++ /dev/null
@@ -1,64 +0,0 @@
-/* -*- Mode: C++; tab-width: 20; indent-tabs-mode: nil; c-basic-offset: 4 -*-
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-#include "ColorLayerD3D9.h"
-
-namespace mozilla {
-namespace layers {
-
-Layer*
-ColorLayerD3D9::GetLayer()
-{
- return this;
-}
-
-static void
-RenderColorLayerD3D9(ColorLayer* aLayer, LayerManagerD3D9 *aManager)
-{
- // XXX we might be able to improve performance by using
- // IDirect3DDevice9::Clear
- if (aManager->CompositingDisabled()) {
- return;
- }
-
- nsIntRect bounds = aLayer->GetBounds();
-
- aManager->device()->SetVertexShaderConstantF(
- CBvLayerQuad,
- ShaderConstantRect(bounds.x,
- bounds.y,
- bounds.width,
- bounds.height),
- 1);
-
- const gfx::Matrix4x4& transform = aLayer->GetEffectiveTransform();
- aManager->device()->SetVertexShaderConstantF(CBmLayerTransform, &transform._11, 4);
-
- gfxRGBA layerColor(aLayer->GetColor());
- float color[4];
- float opacity = aLayer->GetEffectiveOpacity() * layerColor.a;
- // output color is premultiplied, so we need to adjust all channels.
- // mColor is not premultiplied.
- color[0] = (float)(layerColor.r * opacity);
- color[1] = (float)(layerColor.g * opacity);
- color[2] = (float)(layerColor.b * opacity);
- color[3] = (float)(opacity);
-
- aManager->device()->SetPixelShaderConstantF(CBvColor, color, 1);
-
- aManager->SetShaderMode(DeviceManagerD3D9::SOLIDCOLORLAYER,
- aLayer->GetMaskLayer());
-
- aManager->device()->DrawPrimitive(D3DPT_TRIANGLESTRIP, 0, 2);
-}
-
-void
-ColorLayerD3D9::RenderLayer()
-{
- return RenderColorLayerD3D9(this, mD3DManager);
-}
-
-} /* layers */
-} /* mozilla */
diff --git a/gfx/layers/d3d9/ColorLayerD3D9.h b/gfx/layers/d3d9/ColorLayerD3D9.h
deleted file mode 100644
index 80b7cf69c6e0..000000000000
--- a/gfx/layers/d3d9/ColorLayerD3D9.h
+++ /dev/null
@@ -1,34 +0,0 @@
-/* -*- Mode: C++; tab-width: 20; indent-tabs-mode: nil; c-basic-offset: 4 -*-
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-#ifndef GFX_COLORLAYERD3D9_H
-#define GFX_COLORLAYERD3D9_H
-
-#include "LayerManagerD3D9.h"
-
-namespace mozilla {
-namespace layers {
-
-class ColorLayerD3D9 : public ColorLayer,
- public LayerD3D9
-{
-public:
- ColorLayerD3D9(LayerManagerD3D9 *aManager)
- : ColorLayer(aManager, nullptr)
- , LayerD3D9(aManager)
- {
- mImplData = static_cast(this);
- }
-
- // LayerD3D9 Implementation
- virtual Layer* GetLayer();
-
- virtual void RenderLayer();
-};
-
-} /* layers */
-} /* mozilla */
-
-#endif /* GFX_COLORLAYERD3D9_H */
diff --git a/gfx/layers/d3d9/ContainerLayerD3D9.cpp b/gfx/layers/d3d9/ContainerLayerD3D9.cpp
deleted file mode 100644
index a9e486ce9718..000000000000
--- a/gfx/layers/d3d9/ContainerLayerD3D9.cpp
+++ /dev/null
@@ -1,218 +0,0 @@
-/* -*- Mode: C++; tab-width: 20; indent-tabs-mode: nil; c-basic-offset: 4 -*-
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-#include "ContainerLayerD3D9.h"
-
-#include "PaintedLayerD3D9.h"
-#include "ReadbackProcessor.h"
-
-using namespace mozilla::gfx;
-
-namespace mozilla {
-namespace layers {
-
-ContainerLayerD3D9::ContainerLayerD3D9(LayerManagerD3D9 *aManager)
- : ContainerLayer(aManager, nullptr)
- , LayerD3D9(aManager)
-{
- mImplData = static_cast(this);
-}
-
-ContainerLayerD3D9::~ContainerLayerD3D9()
-{
- while (mFirstChild) {
- RemoveChild(mFirstChild);
- }
-}
-
-Layer*
-ContainerLayerD3D9::GetLayer()
-{
- return this;
-}
-
-LayerD3D9*
-ContainerLayerD3D9::GetFirstChildD3D9()
-{
- if (!mFirstChild) {
- return nullptr;
- }
- return static_cast(mFirstChild->ImplData());
-}
-
-void
-ContainerLayerD3D9::RenderLayer()
-{
- nsRefPtr previousRenderTarget;
- nsRefPtr renderTexture;
- float previousRenderTargetOffset[4];
- float renderTargetOffset[] = { 0, 0, 0, 0 };
- float oldViewMatrix[4][4];
-
- RECT containerD3D9ClipRect;
- device()->GetScissorRect(&containerD3D9ClipRect);
- // Convert scissor to an nsIntRect. RECT's are exclusive on the bottom and
- // right values.
- nsIntRect oldScissor(containerD3D9ClipRect.left,
- containerD3D9ClipRect.top,
- containerD3D9ClipRect.right - containerD3D9ClipRect.left,
- containerD3D9ClipRect.bottom - containerD3D9ClipRect.top);
-
- ReadbackProcessor readback;
- readback.BuildUpdates(this);
-
- nsIntRect visibleRect = GetEffectiveVisibleRegion().GetBounds();
- bool useIntermediate = UseIntermediateSurface();
-
- mSupportsComponentAlphaChildren = false;
- if (useIntermediate) {
- nsRefPtr renderSurface;
- if (!mD3DManager->CompositingDisabled()) {
- device()->GetRenderTarget(0, getter_AddRefs(previousRenderTarget));
- HRESULT hr = device()->CreateTexture(visibleRect.width, visibleRect.height, 1,
- D3DUSAGE_RENDERTARGET, D3DFMT_A8R8G8B8,
- D3DPOOL_DEFAULT, getter_AddRefs(renderTexture),
- nullptr);
- if (FAILED(hr)) {
- ReportFailure(NS_LITERAL_CSTRING("ContainerLayerD3D9::ContainerRender(): Failed to create texture"),
- hr);
- return;
- }
-
- nsRefPtr renderSurface;
- renderTexture->GetSurfaceLevel(0, getter_AddRefs(renderSurface));
- device()->SetRenderTarget(0, renderSurface);
- }
-
- if (mVisibleRegion.GetNumRects() == 1 &&
- (GetContentFlags() & CONTENT_OPAQUE)) {
- // don't need a background, we're going to paint all opaque stuff
- mSupportsComponentAlphaChildren = true;
- } else {
- Matrix4x4 transform3D = GetEffectiveTransform();
- Matrix transform;
- // If we have an opaque ancestor layer, then we can be sure that
- // all the pixels we draw into are either opaque already or will be
- // covered by something opaque. Otherwise copying up the background is
- // not safe.
- HRESULT hr = E_FAIL;
- if (HasOpaqueAncestorLayer(this) &&
- transform3D.Is2D(&transform) && !ThebesMatrix(transform).HasNonIntegerTranslation()) {
- // Copy background up from below
- RECT dest = { 0, 0, visibleRect.width, visibleRect.height };
- RECT src = dest;
- ::OffsetRect(&src,
- visibleRect.x + int32_t(transform._31),
- visibleRect.y + int32_t(transform._32));
- if (!mD3DManager->CompositingDisabled()) {
- hr = device()->
- StretchRect(previousRenderTarget, &src, renderSurface, &dest, D3DTEXF_NONE);
- }
- }
- if (hr == S_OK) {
- mSupportsComponentAlphaChildren = true;
- } else if (!mD3DManager->CompositingDisabled()) {
- device()->
- Clear(0, 0, D3DCLEAR_TARGET, D3DCOLOR_RGBA(0, 0, 0, 0), 0, 0);
- }
- }
-
- device()->
- GetVertexShaderConstantF(CBvRenderTargetOffset, previousRenderTargetOffset, 1);
- renderTargetOffset[0] = (float)visibleRect.x;
- renderTargetOffset[1] = (float)visibleRect.y;
- device()->
- SetVertexShaderConstantF(CBvRenderTargetOffset, renderTargetOffset, 1);
-
- gfx3DMatrix viewMatrix;
- /*
- * Matrix to transform to viewport space ( <-1.0, 1.0> topleft,
- * <1.0, -1.0> bottomright)
- */
- viewMatrix._11 = 2.0f / visibleRect.width;
- viewMatrix._22 = -2.0f / visibleRect.height;
- viewMatrix._41 = -1.0f;
- viewMatrix._42 = 1.0f;
-
- device()->
- GetVertexShaderConstantF(CBmProjection, &oldViewMatrix[0][0], 4);
- device()->
- SetVertexShaderConstantF(CBmProjection, &viewMatrix._11, 4);
- } else {
- mSupportsComponentAlphaChildren =
- (GetContentFlags() & CONTENT_OPAQUE) ||
- (mParent &&
- mParent->SupportsComponentAlphaChildren());
- }
-
- nsAutoTArray children;
- SortChildrenBy3DZOrder(children);
-
- /*
- * Render this container's contents.
- */
- for (uint32_t i = 0; i < children.Length(); i++) {
- LayerD3D9* layerToRender = static_cast(children.ElementAt(i)->ImplData());
-
- if (layerToRender->GetLayer()->GetEffectiveVisibleRegion().IsEmpty()) {
- continue;
- }
-
- nsIntRect scissorRect =
- RenderTargetPixel::ToUntyped(layerToRender->GetLayer()->CalculateScissorRect(RenderTargetPixel::FromUntyped(oldScissor)));
- if (scissorRect.IsEmpty()) {
- continue;
- }
-
- RECT d3drect;
- d3drect.left = scissorRect.x;
- d3drect.top = scissorRect.y;
- d3drect.right = scissorRect.x + scissorRect.width;
- d3drect.bottom = scissorRect.y + scissorRect.height;
- device()->SetScissorRect(&d3drect);
-
- if (layerToRender->GetLayer()->GetType() == TYPE_PAINTED) {
- static_cast(layerToRender)->RenderPaintedLayer(&readback);
- } else {
- layerToRender->RenderLayer();
- }
- }
-
- if (useIntermediate && !mD3DManager->CompositingDisabled()) {
- device()->SetRenderTarget(0, previousRenderTarget);
- device()->SetVertexShaderConstantF(CBvRenderTargetOffset, previousRenderTargetOffset, 1);
- device()->SetVertexShaderConstantF(CBmProjection, &oldViewMatrix[0][0], 4);
-
- device()->SetVertexShaderConstantF(CBvLayerQuad,
- ShaderConstantRect(visibleRect.x,
- visibleRect.y,
- visibleRect.width,
- visibleRect.height),
- 1);
-
- SetShaderTransformAndOpacity();
- mD3DManager->SetShaderMode(DeviceManagerD3D9::RGBALAYER,
- GetMaskLayer(),
- GetTransform().CanDraw2D());
-
- device()->SetTexture(0, renderTexture);
- device()->SetScissorRect(&containerD3D9ClipRect);
- device()->DrawPrimitive(D3DPT_TRIANGLESTRIP, 0, 2);
- } else {
- device()->SetScissorRect(&containerD3D9ClipRect);
- }
-}
-
-void
-ContainerLayerD3D9::LayerManagerDestroyed()
-{
- while (mFirstChild) {
- GetFirstChildD3D9()->LayerManagerDestroyed();
- RemoveChild(mFirstChild);
- }
-}
-
-} /* layers */
-} /* mozilla */
diff --git a/gfx/layers/d3d9/ContainerLayerD3D9.h b/gfx/layers/d3d9/ContainerLayerD3D9.h
deleted file mode 100644
index bd8519f6c952..000000000000
--- a/gfx/layers/d3d9/ContainerLayerD3D9.h
+++ /dev/null
@@ -1,44 +0,0 @@
-/* -*- Mode: C++; tab-width: 20; indent-tabs-mode: nil; c-basic-offset: 4 -*-
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-#ifndef GFX_CONTAINERLAYERD3D9_H
-#define GFX_CONTAINERLAYERD3D9_H
-
-#include "Layers.h"
-#include "LayerManagerD3D9.h"
-
-namespace mozilla {
-namespace layers {
-
-class ContainerLayerD3D9 : public ContainerLayer,
- public LayerD3D9
-{
-public:
- ContainerLayerD3D9(LayerManagerD3D9 *aManager);
- ~ContainerLayerD3D9();
-
- nsIntRect GetVisibleRect() { return mVisibleRegion.GetBounds(); }
-
- /* LayerD3D9 implementation */
- Layer* GetLayer();
-
- LayerD3D9* GetFirstChildD3D9();
-
- bool IsEmpty();
-
- void RenderLayer();
-
- virtual void LayerManagerDestroyed();
-
- virtual void ComputeEffectiveTransforms(const gfx::Matrix4x4& aTransformToSurface)
- {
- DefaultComputeEffectiveTransforms(aTransformToSurface);
- }
-};
-
-} /* layers */
-} /* mozilla */
-
-#endif /* GFX_CONTAINERLAYERD3D9_H */
diff --git a/gfx/layers/d3d9/DeviceManagerD3D9.cpp b/gfx/layers/d3d9/DeviceManagerD3D9.cpp
index d7de95f70938..2581c8eb691a 100644
--- a/gfx/layers/d3d9/DeviceManagerD3D9.cpp
+++ b/gfx/layers/d3d9/DeviceManagerD3D9.cpp
@@ -5,7 +5,6 @@
#include "DeviceManagerD3D9.h"
#include "LayerManagerD3D9Shaders.h"
-#include "PaintedLayerD3D9.h"
#include "nsIServiceManager.h"
#include "nsIConsoleService.h"
#include "nsPrintfCString.h"
@@ -557,42 +556,6 @@ DeviceManagerD3D9::CreateSwapChain(HWND hWnd)
return swapChain.forget();
}
-/*
- * Finds a texture for the mask layer and sets it as an
- * input to the shaders.
- * Returns true if a texture is loaded, false if
- * a texture for the mask layer could not be loaded.
- */
-bool
-LoadMaskTexture(Layer* aMask, IDirect3DDevice9* aDevice,
- uint32_t aMaskTexRegister)
-{
- IntSize size;
- nsRefPtr texture =
- static_cast(aMask->ImplData())->GetAsTexture(&size);
-
- if (!texture) {
- return false;
- }
-
- Matrix maskTransform;
- Matrix4x4 effectiveTransform = aMask->GetEffectiveTransform();
- bool maskIs2D = effectiveTransform.CanDraw2D(&maskTransform);
- NS_ASSERTION(maskIs2D, "How did we end up with a 3D transform here?!");
- Rect bounds = Rect(Point(), Size(size));
- bounds = maskTransform.TransformBounds(bounds);
-
- aDevice->SetVertexShaderConstantF(DeviceManagerD3D9::sMaskQuadRegister,
- ShaderConstantRect((float)bounds.x,
- (float)bounds.y,
- (float)bounds.width,
- (float)bounds.height),
- 1);
-
- aDevice->SetTexture(aMaskTexRegister, texture);
- return true;
-}
-
uint32_t
DeviceManagerD3D9::SetShaderMode(ShaderMode aMode, MaskType aMaskType)
{
@@ -667,25 +630,6 @@ DeviceManagerD3D9::SetShaderMode(ShaderMode aMode, MaskType aMaskType)
return maskTexRegister;
}
-void
-DeviceManagerD3D9::SetShaderMode(ShaderMode aMode, Layer* aMask, bool aIs2D)
-{
- MaskType maskType = MaskType::MaskNone;
- if (aMask) {
- maskType = aIs2D ? MaskType::Mask2d : MaskType::Mask3d;
- }
- uint32_t maskTexRegister = SetShaderMode(aMode, maskType);
- if (aMask) {
- // register allocations are taken from LayerManagerD3D9Shaders.h after
- // the shaders are compiled (genshaders.sh)
- if (!LoadMaskTexture(aMask, mDevice, maskTexRegister)) {
- // if we can't load the mask, fall back to unmasked rendering
- NS_WARNING("Could not load texture for mask layer.");
- SetShaderMode(aMode, MaskType::MaskNone);
- }
- }
-}
-
void
DeviceManagerD3D9::DestroyDevice()
{
@@ -718,10 +662,6 @@ DeviceManagerD3D9::VerifyReadyForRendering()
return DeviceOK;
}
- // We need to release all texture resources and swap chains before resetting.
- for (unsigned int i = 0; i < mLayersWithResources.Length(); i++) {
- mLayersWithResources[i]->CleanResources();
- }
ReleaseTextureResources();
for (unsigned int i = 0; i < mSwapChains.Length(); i++) {
mSwapChains[i]->Reset();
diff --git a/gfx/layers/d3d9/DeviceManagerD3D9.h b/gfx/layers/d3d9/DeviceManagerD3D9.h
index d841fe6338b8..835ecf70aea0 100644
--- a/gfx/layers/d3d9/DeviceManagerD3D9.h
+++ b/gfx/layers/d3d9/DeviceManagerD3D9.h
@@ -171,7 +171,6 @@ public:
SOLIDCOLORLAYER
};
- void SetShaderMode(ShaderMode aMode, Layer* aMask, bool aIs2D);
// returns the register to be used for the mask texture, if appropriate
uint32_t SetShaderMode(ShaderMode aMode, MaskType aMaskType);
@@ -187,12 +186,6 @@ public:
uint32_t GetDeviceResetCount() { return mDeviceResetCount; }
- /**
- * We keep a list of all layers here that may have hardware resource allocated
- * so we can clean their resources on reset.
- */
- nsTArray mLayersWithResources;
-
int32_t GetMaxTextureSize() { return mMaxTextureSize; }
// Removes aHost from our list of texture hosts if it is the head.
diff --git a/gfx/layers/d3d9/ImageLayerD3D9.cpp b/gfx/layers/d3d9/ImageLayerD3D9.cpp
deleted file mode 100644
index b4b705046cb4..000000000000
--- a/gfx/layers/d3d9/ImageLayerD3D9.cpp
+++ /dev/null
@@ -1,561 +0,0 @@
-/* -*- Mode: C++; tab-width: 20; indent-tabs-mode: nil; c-basic-offset: 2 -*-
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-#include "mozilla/gfx/2D.h"
-#include "mozilla/gfx/Point.h"
-#include "mozilla/RefPtr.h"
-#include "mozilla/layers/PLayerTransaction.h"
-#include "gfxSharedImageSurface.h"
-
-#include "ImageLayerD3D9.h"
-#include "PaintedLayerD3D9.h"
-#include "gfxPlatform.h"
-#include "gfx2DGlue.h"
-#include "yuv_convert.h"
-#include "nsIServiceManager.h"
-#include "nsIConsoleService.h"
-#include "Nv3DVUtils.h"
-#include "D3D9SurfaceImage.h"
-
-namespace mozilla {
-namespace layers {
-
-using namespace mozilla::gfx;
-
-static inline _D3DFORMAT
-D3dFormatForSurfaceFormat(SurfaceFormat aFormat)
-{
- if (aFormat == SurfaceFormat::A8) {
- return D3DFMT_A8;
- }
-
- return D3DFMT_A8R8G8B8;
-}
-
-static already_AddRefed
-DataToTexture(IDirect3DDevice9 *aDevice,
- unsigned char *aData,
- int aStride,
- const IntSize &aSize,
- _D3DFORMAT aFormat)
-{
- nsRefPtr texture;
- nsRefPtr deviceEx;
- aDevice->QueryInterface(IID_IDirect3DDevice9Ex,
- (void**)getter_AddRefs(deviceEx));
-
- nsRefPtr surface;
- D3DLOCKED_RECT lockedRect;
- if (deviceEx) {
- // D3D9Ex doesn't support managed textures. We could use dynamic textures
- // here but since Images are immutable that probably isn't such a great
- // idea.
- if (FAILED(aDevice->
- CreateTexture(aSize.width, aSize.height,
- 1, 0, aFormat, D3DPOOL_DEFAULT,
- getter_AddRefs(texture), nullptr)))
- {
- return nullptr;
- }
-
- nsRefPtr tmpTexture;
- if (FAILED(aDevice->
- CreateTexture(aSize.width, aSize.height,
- 1, 0, aFormat, D3DPOOL_SYSTEMMEM,
- getter_AddRefs(tmpTexture), nullptr)))
- {
- return nullptr;
- }
-
- tmpTexture->GetSurfaceLevel(0, getter_AddRefs(surface));
- surface->LockRect(&lockedRect, nullptr, 0);
- NS_ASSERTION(lockedRect.pBits, "Could not lock surface");
- } else {
- if (FAILED(aDevice->
- CreateTexture(aSize.width, aSize.height,
- 1, 0, aFormat, D3DPOOL_MANAGED,
- getter_AddRefs(texture), nullptr)))
- {
- return nullptr;
- }
-
- /* lock the entire texture */
- texture->LockRect(0, &lockedRect, nullptr, 0);
- }
-
- uint32_t width = aSize.width;
- if (aFormat == D3DFMT_A8R8G8B8) {
- width *= 4;
- }
- for (int y = 0; y < aSize.height; y++) {
- memcpy((char*)lockedRect.pBits + lockedRect.Pitch * y,
- aData + aStride * y,
- width);
- }
-
- if (deviceEx) {
- surface->UnlockRect();
- nsRefPtr dstSurface;
- texture->GetSurfaceLevel(0, getter_AddRefs(dstSurface));
- aDevice->UpdateSurface(surface, nullptr, dstSurface, nullptr);
- } else {
- texture->UnlockRect(0);
- }
-
- return texture.forget();
-}
-
-static already_AddRefed
-OpenSharedTexture(const D3DSURFACE_DESC& aDesc,
- HANDLE aShareHandle,
- IDirect3DDevice9 *aDevice)
-{
- MOZ_ASSERT(aDesc.Format == D3DFMT_X8R8G8B8);
-
- // Open the frame from DXVA's device in our device using the resource
- // sharing handle.
- nsRefPtr sharedTexture;
- HRESULT hr = aDevice->CreateTexture(aDesc.Width,
- aDesc.Height,
- 1,
- D3DUSAGE_RENDERTARGET,
- D3DFMT_X8R8G8B8,
- D3DPOOL_DEFAULT,
- getter_AddRefs(sharedTexture),
- &aShareHandle);
- if (FAILED(hr)) {
- NS_WARNING("Failed to open shared texture on our device");
- }
- return sharedTexture.forget();
-}
-
-static already_AddRefed
-SurfaceToTexture(IDirect3DDevice9 *aDevice,
- SourceSurface *aSurface,
- const IntSize &aSize)
-{
- RefPtr dataSurface = aSurface->GetDataSurface();
- if (!dataSurface) {
- return nullptr;
- }
- DataSourceSurface::MappedSurface map;
- if (!dataSurface->Map(DataSourceSurface::MapType::READ, &map)) {
- return nullptr;
- }
- nsRefPtr texture =
- DataToTexture(aDevice, map.mData, map.mStride, aSize,
- D3dFormatForSurfaceFormat(dataSurface->GetFormat()));
- dataSurface->Unmap();
- return texture.forget();
-}
-
-static void AllocateTexturesYCbCr(PlanarYCbCrImage *aImage,
- IDirect3DDevice9 *aDevice,
- LayerManagerD3D9 *aManager)
-{
- nsAutoPtr backendData(
- new PlanarYCbCrD3D9BackendData);
-
- const PlanarYCbCrData *data = aImage->GetData();
-
- D3DLOCKED_RECT lockrectY;
- D3DLOCKED_RECT lockrectCb;
- D3DLOCKED_RECT lockrectCr;
- uint8_t* src;
- uint8_t* dest;
-
- nsRefPtr tmpSurfaceY;
- nsRefPtr tmpSurfaceCb;
- nsRefPtr