From samuel.guimaraes at eldorado.org.br Wed Sep 16 15:06:09 2015 Content-Type: multipart/mixed; boundary="===============0172380364680940660==" MIME-Version: 1.0 From: Samuel Henrique De Oliveira Guimaraes To: kimchi-devel at ovirt.org Subject: Re: [Kimchi-devel] [PATCH 5/7] [WOK] Adding new-ui libraries after merge conflict Date: Wed, 16 Sep 2015 19:05:58 +0000 Message-ID: In-Reply-To: 55F99431.5020608@linux.vnet.ibm.com --===============0172380364680940660== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable -----Original Message----- From: kimchi-devel-bounces(a)ovirt.org [mailto:kimchi-devel-bounces(a)ovirt= .org] On Behalf Of Aline Manera Sent: quarta-feira, 16 de setembro de 2015 13:09 To: sguimaraes943(a)gmail.com; Kimchi Devel Subject: Re: [Kimchi-devel] [PATCH 5/7] [WOK] Adding new-ui libraries after= merge conflict On 15/09/2015 16:56, sguimaraes943(a)gmail.com wrote: > From: samhenri > > > Adding new-ui libraries again after merge conflict. > > Signed-off-by: samhenri > > --- > ui/libs/bootstrap.js | 2345 ++++ > ui/libs/jquery-ui.js | 16617 ++++++++++++++++++++++= +++++++ > ui/libs/modernizr.js | 1406 +++ Is this file imported from somewhere? From which project? TL;DR; - jQuery-UI was already in Kimchi, Bootstrap is necessary for t= he new-ui widgets and modernizr is used to detect browser features. They ar= e all in this structure because that's the way Gulp and Bower manages them. Some background: These files are ready for "production", I create and = edit the CSS & JS files in a separate project managed by these automation t= ools running in NodeJS (https://nodejs.org/en/): Yeoman - http://yeoman.io/ - Html5 webapp generator that scaffolds eve= rything that is necessary to build the new-ui. This webapp generator includes the following tools: a) Bower - http://bower.io/ - A package manager for web apps b) Libsass - http://sass-lang.com/ - http://sass-lang.com/libsas= s - A CSS pre-processor c) Gulp JS - http://gulpjs.com/ - A workflow automation tool tha= t is responsible for running a development static webserver and run tasks l= ike compiling sources from imported libraries, testing, minifying and expor= ting assets. This generated webapp that I used as "canvas" to write the widgets and= mockups calls Bower commands to manage common libraries such as: *jQuery (was already manually included in Kimchi) *jQuery UI (same as above) *jQuery UI i18n plugin (same as above) *Twitter Bootstrap (Sass version) - https://github.com/twbs/boot= strap-sass - Requires libsass to build *Modernizr - https://modernizr.com/ - (MIT License) A JS library= that detects all the supported features in a browser and wraps a css class= in the tag. This is much better than do a simple browser version ch= eck that can lead to false or incorrect user agent strings. *Es5-shim - https://github.com/es-shims/es5-shim - Library that = contain EcmaScript5 methods (Chrome and Firefox don't need this, Safari doe= s) *Json2 - JSON encoders/decoders for old browsers (Chrome and Fir= efox don't need this, Safari does) *Base64 - https://github.com/mathiasbynens/base64 - JS Base64 en= coder/decoder *Chai Assertion Library - http://chaijs.com/ (dev dependency) *Mocha js - https://mochajs.org/ - (dev dependency) *FontAwesome - http://fontawesome.io - (Imported just the Sass f= iles since we are handling font files in a different way) As a best practice in front-end development, we use Bower do manage th= e external/vendor libraries like the ones listed above. In the main mockup = folder there's a json file that handles all the dependencies and their corr= ect versions: { "name": "wok", "private": true, "dependencies": { "modernizr": "~2.8.1", "bootstrap-sass-official": "~3.3.5", "bootstrap-select-sass": "~1.6.3", "compass-mixins": "~1.0.2", "es5-shim": "~4.1.10", "json2": "*", "base64": "~0.3.0", "jquery": "~1.11.3", "jquery-ui": "~1.11.4", "jquery-i18n": "~1.1.1", "font-awesome": "~4.4.0" }, "overrides": { "bootstrap-sass-official": { "main": [ "assets/stylesheets/_bootstrap.scss", "assets/javascripts/bootstrap.js" ] } }, "devDependencies": { "chai": "~3.2.0", "mocha": "~2.2.5" } } Note that chai and mocha are dev-dependencies that are required by Gul= p so they were not included in the compiled/exported assets. Bower creates = a non-versioned folder called bower_components and store all the libraries = original sources and assets in there (it basically does a git clone). Then I use Gulp.JS to act as a development webserver that runs all the= front-end tasks that I have programmed or that have been included by Yeoma= n generator such as JavaScript validation, Sass compilation, CSS and JS min= ification. When this server is running, it points directly to the original = sources in bower_components so I can make changes on the fly instead of hav= ing to stop server / recompile sources / start server again. Once I'm done = developing these assets, I run a task to "build" and optimize these files a= nd export them to Kimchi/Wok project. The sass files references the original Bootstrap source inside bower_c= omponents folder. Once I compile our sass files, Gulp automatically merges = the referenced files with them. The same goes for jQuery-UI theme and font-= awesome (which I programmatically removed the *.ttf and *.svg files). > ui/libs/themes/base/bootstrap.custom.css | 8502 +++++++++++++++ > ui/libs/themes/base/jquery-ui.custom.css | 203 + > ui/libs/vendor.js | 5523 ++++++++++ > ui/pages/browserconfig.xml | 12 + > ui/pages/manifest.json | 41 + The same I asked before. It is better to group the files according to its project due license issues. Example: ui/libs/bootstrap/ =3D> to hold all the bootstrap files ui/libs/jquery-ui/ = =3D> to hold all the jquery-ui files TL; DR; bowersconfig.xml and manifest.json are necessary for Android d= rawer and Windows 8/10 tiles; vendor.js is es5-shim, json2 and base64 minif= ied in one single file by Gulp. Bootstrap.custom.css is where I'm putting t= he CSS files that I'm removing form css/themes-default and converting/adapt= ing to Bootstrap markup/widgets - this is the new-ui main CSS. I kept sepa= rated from css folder because this file has to be loaded after the other cs= s files (due to how css cascading works). As I was explaining, Gulp merges the referenced libraries assets, so t= he original Bootstrap files are combined with whichever file that has refer= enced them. This is something that we can change but I don't think it is a = good idea to keep the original Bootstrap CSS in one folder and then load ou= r custom CSS over it because it already includes classes with the same rule= s and some of them with the same properties and values from Bootstrap, i.e.= including Bootstrap original css is code duplication. For now I've included bootstrap.custom.css in ui/libs/theme/base/ fold= er while I still need some old files from ui/css/ for reference and compati= bility with screens that I haven't worked yet. Once I remove the unused CSS= files in theme-default I'm planning to put bootstrap.custom.css there. For the JS files: Bootstrap source has a single JS file for each compo= nent / widget. Using bower and gulp we can reference only the components th= at we have used and compile a minified version. For now I'm importing the = full package but I think we won't need all of them. vendors.js is basically es5-shim, json2 and base64 minified in one fil= e. I'll send another patch removing typeahead.js and bag.js that were also = included but we don't need them anymore. The whole idea of using Bower and Gulp is to optimize, minify and put = all the files ready to production in one single place. We also need to update the COPYING file according to those changes. All bower packages must have a License file but since they have differ= ent format, I would have to manually copy them in the same folder or append= in the minified version. As we have discussed in other mails / chat, It would be nice to includ= e this workflow and reference these dependencies (node, gulp, bower) in the= repository so in the future we separate UI code and development from produ= ction environment. In other words, if we want to update a JS file, it would= be required to pass the validation tests by JSlint task in Gulp; If we hav= e to fix a CSS issue, it would have to be done in the Sass file, then compi= led and then minified. This would ensure code quality and that the UI depen= dencies are always using the correct versions. So, should I change the folder structure and copy the license files or= keep this way and once I complete the new-ui integration add the ui source= s as well as the dependencies? > 8 files changed, 34649 insertions(+) > create mode 100644 ui/libs/bootstrap.js > create mode 100644 ui/libs/jquery-ui.js > create mode 100644 ui/libs/modernizr.js > create mode 100755 ui/libs/themes/base/bootstrap.custom.css > create mode 100644 ui/libs/themes/base/jquery-ui.custom.css > create mode 100644 ui/libs/vendor.js > create mode 100644 ui/pages/browserconfig.xml > create mode 100644 ui/pages/manifest.json > > _______________________________________________ Kimchi-devel mailing list Kimchi-devel(a)ovirt.org http://lists.ovirt.org/mailman/listinfo/kimchi-devel --===============0172380364680940660== Content-Type: text/html MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="attachment.html" PGh0bWw+CjxoZWFkPgo8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRl eHQvaHRtbDsgY2hhcnNldD11cy1hc2NpaSI+CjxtZXRhIG5hbWU9IkdlbmVyYXRvciIgY29udGVu dD0iTWljcm9zb2Z0IEV4Y2hhbmdlIFNlcnZlciI+CjwhLS0gY29udmVydGVkIGZyb20gcnRmIC0t Pgo8c3R5bGU+PCEtLSAuRW1haWxRdW90ZSB7IG1hcmdpbi1sZWZ0OiAxcHQ7IHBhZGRpbmctbGVm dDogNHB0OyBib3JkZXItbGVmdDogIzgwMDAwMCAycHggc29saWQ7IH0gLS0+PC9zdHlsZT4KPC9o ZWFkPgo8Ym9keT4KPGZvbnQgZmFjZT0iQ2FsaWJyaSIgc2l6ZT0iMiI+PHNwYW4gc3R5bGU9ImZv bnQtc2l6ZToxMXB0OyI+CjxkaXY+Jm5ic3A7PC9kaXY+CjxkaXY+Jm5ic3A7PC9kaXY+CjxkaXY+ LS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS08YnI+CgpGcm9tOiBraW1jaGktZGV2ZWwtYm91bmNl c0BvdmlydC5vcmcgWzxhIGhyZWY9Im1haWx0bzpraW1jaGktZGV2ZWwtYm91bmNlc0BvdmlydC5v cmciPm1haWx0bzpraW1jaGktZGV2ZWwtYm91bmNlc0BvdmlydC5vcmc8L2E+XSBPbiBCZWhhbGYg T2YgQWxpbmUgTWFuZXJhPGJyPgoKU2VudDogcXVhcnRhLWZlaXJhLCAxNiBkZSBzZXRlbWJybyBk ZSAyMDE1IDEzOjA5PGJyPgoKVG86IHNndWltYXJhZXM5NDNAZ21haWwuY29tOyBLaW1jaGkgRGV2 ZWwgJmx0O2tpbWNoaS1kZXZlbEBvdmlydC5vcmcmZ3Q7PGJyPgoKU3ViamVjdDogUmU6IFtLaW1j aGktZGV2ZWxdIFtQQVRDSCA1LzddIFtXT0tdIEFkZGluZyBuZXctdWkgbGlicmFyaWVzIGFmdGVy IG1lcmdlIGNvbmZsaWN0PC9kaXY+CjxkaXY+Jm5ic3A7PC9kaXY+CjxkaXY+Jm5ic3A7PC9kaXY+ CjxkaXY+Jm5ic3A7PC9kaXY+CjxkaXY+T24gMTUvMDkvMjAxNSAxNjo1NiwgPGEgaHJlZj0ibWFp bHRvOnNndWltYXJhZXM5NDNAZ21haWwuY29tIj5zZ3VpbWFyYWVzOTQzQGdtYWlsLmNvbTwvYT4g d3JvdGU6PC9kaXY+CjxkaXY+Jmd0OyBGcm9tOiBzYW1oZW5yaSAmbHQ7PGEgaHJlZj0ibWFpbHRv OnNhbXVlbC5ndWltYXJhZXNAZWxkb3JhZG8ub3JnLmJyIj5zYW11ZWwuZ3VpbWFyYWVzQGVsZG9y YWRvLm9yZy5icjwvYT4mZ3Q7PC9kaXY+CjxkaXY+Jmd0OzwvZGl2Pgo8ZGl2PiZndDsgQWRkaW5n IG5ldy11aSBsaWJyYXJpZXMgYWdhaW4gYWZ0ZXIgbWVyZ2UgY29uZmxpY3QuPC9kaXY+CjxkaXY+ Jmd0OzwvZGl2Pgo8ZGl2PiZndDsgU2lnbmVkLW9mZi1ieTogc2FtaGVucmkgJmx0OzxhIGhyZWY9 Im1haWx0bzpzYW11ZWwuZ3VpbWFyYWVzQGVsZG9yYWRvLm9yZy5iciI+c2FtdWVsLmd1aW1hcmFl c0BlbGRvcmFkby5vcmcuYnI8L2E+Jmd0OzwvZGl2Pgo8ZGl2PiZndDsgLS0tPC9kaXY+CjxkaXY+ Jmd0OyZuYnNwOyZuYnNwOyB1aS9saWJzL2Jvb3RzdHJhcC5qcyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyB8Jm5ic3A7IDIzNDUg JiM0MzsmIzQzOyYjNDM7JiM0Mzs8L2Rpdj4KPGRpdj4mZ3Q7Jm5ic3A7Jm5ic3A7IHVpL2xpYnMv anF1ZXJ5LXVpLmpzJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7IHwgMTY2MTcgJiM0MzsmIzQzOyYjNDM7JiM0MzsmIzQzOyYjNDM7 JiM0MzsmIzQzOyYjNDM7JiM0MzsmIzQzOyYjNDM7JiM0MzsmIzQzOyYjNDM7JiM0MzsmIzQzOyYj NDM7JiM0MzsmIzQzOyYjNDM7JiM0MzsmIzQzOyYjNDM7JiM0MzsmIzQzOyYjNDM7JiM0MzsmIzQz OzwvZGl2Pgo8ZGl2PiZuYnNwOzwvZGl2Pgo8ZGl2PiZndDsmbmJzcDsmbmJzcDsgdWkvbGlicy9t b2Rlcm5penIuanMmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsgfCZuYnNwOyAxNDA2ICYjNDM7JiM0MzsmIzQzOzwvZGl2Pgo8ZGl2 PiZuYnNwOzwvZGl2Pgo8ZGl2PklzIHRoaXMgZmlsZSBpbXBvcnRlZCBmcm9tIHNvbWV3aGVyZT8g RnJvbSB3aGljaCBwcm9qZWN0PzwvZGl2Pgo8ZGl2PiZuYnNwOzwvZGl2Pgo8ZGl2IHN0eWxlPSJw YWRkaW5nLWxlZnQ6MzUuNHB0OyI+PGZvbnQgY29sb3I9IiMxRjRFNzkiPlRMO0RSOyAtIGpRdWVy eS1VSSB3YXMgYWxyZWFkeSBpbiBLaW1jaGksIEJvb3RzdHJhcCBpcyBuZWNlc3NhcnkgZm9yIHRo ZSBuZXctdWkgd2lkZ2V0cyBhbmQgbW9kZXJuaXpyIGlzIHVzZWQgdG8gZGV0ZWN0IGJyb3dzZXIg ZmVhdHVyZXMuIFRoZXkgYXJlIGFsbCBpbiB0aGlzIHN0cnVjdHVyZSBiZWNhdXNlIHRoYXQncyB0 aGUgd2F5IEd1bHAgYW5kCkJvd2VyIG1hbmFnZXMgdGhlbS48L2ZvbnQ+PC9kaXY+CjxkaXYgc3R5 bGU9InBhZGRpbmctbGVmdDozNS40cHQ7Ij48Zm9udCBjb2xvcj0iIzFGNEU3OSI+Jm5ic3A7PC9m b250PjwvZGl2Pgo8ZGl2IHN0eWxlPSJwYWRkaW5nLWxlZnQ6MzUuNHB0OyI+PGZvbnQgY29sb3I9 IiMxRjRFNzkiPlNvbWUgYmFja2dyb3VuZDogVGhlc2UgZmlsZXMgYXJlIHJlYWR5IGZvciAmIzgy MjA7cHJvZHVjdGlvbiYjODIyMTssIEkgY3JlYXRlIGFuZCBlZGl0IHRoZSBDU1MgJmFtcDsgSlMg ZmlsZXMgaW4gYSBzZXBhcmF0ZSBwcm9qZWN0IG1hbmFnZWQgYnkgdGhlc2UgYXV0b21hdGlvbiB0 b29scyBydW5uaW5nIGluIE5vZGVKUyAoPGEgaHJlZj0iaHR0cHM6Ly9ub2RlanMub3JnL2VuLyI+ PHU+aHR0cHM6Ly9ub2RlanMub3JnL2VuLzwvdT48L2E+KTo8L2ZvbnQ+PC9kaXY+CjxkaXYgc3R5 bGU9InBhZGRpbmctbGVmdDozNS40cHQ7Ij48Zm9udCBjb2xvcj0iIzFGNEU3OSI+Jm5ic3A7PC9m b250PjwvZGl2Pgo8ZGl2IHN0eWxlPSJwYWRkaW5nLWxlZnQ6MzUuNHB0OyI+PGZvbnQgY29sb3I9 IiMxRjRFNzkiPlllb21hbiAtIDxhIGhyZWY9Imh0dHA6Ly95ZW9tYW4uaW8vIj48dT5odHRwOi8v eWVvbWFuLmlvLzwvdT48L2E+IC0gSHRtbDUgd2ViYXBwIGdlbmVyYXRvciB0aGF0IHNjYWZmb2xk cyBldmVyeXRoaW5nIHRoYXQgaXMgbmVjZXNzYXJ5IHRvIGJ1aWxkIHRoZSBuZXctdWkuPC9mb250 PjwvZGl2Pgo8ZGl2IHN0eWxlPSJwYWRkaW5nLWxlZnQ6MzUuNHB0OyI+PGZvbnQgY29sb3I9IiMx RjRFNzkiPlRoaXMgd2ViYXBwIGdlbmVyYXRvciBpbmNsdWRlcyB0aGUgZm9sbG93aW5nIHRvb2xz OjwvZm9udD48L2Rpdj4KPGRpdiBzdHlsZT0icGFkZGluZy1sZWZ0OjM1LjRwdDsiPjxmb250IGNv bG9yPSIjMUY0RTc5Ij4mbmJzcDs8L2ZvbnQ+PC9kaXY+CjxkaXYgc3R5bGU9InBhZGRpbmctbGVm dDo3MC44cHQ7Ij48Zm9udCBjb2xvcj0iIzFGNEU3OSI+YSkgQm93ZXIgLSA8YSBocmVmPSJodHRw Oi8vYm93ZXIuaW8vIj48dT5odHRwOi8vYm93ZXIuaW8vPC91PjwvYT4gLSBBIHBhY2thZ2UgbWFu YWdlciBmb3Igd2ViIGFwcHM8L2ZvbnQ+PC9kaXY+CjxkaXYgc3R5bGU9InBhZGRpbmctbGVmdDo3 MC44cHQ7Ij48Zm9udCBjb2xvcj0iIzFGNEU3OSI+YikgTGlic2FzcyAtIDxhIGhyZWY9Imh0dHA6 Ly9zYXNzLWxhbmcuY29tLyI+PHU+aHR0cDovL3Nhc3MtbGFuZy5jb20vPC91PjwvYT4gLSA8YSBo cmVmPSJodHRwOi8vc2Fzcy1sYW5nLmNvbS9saWJzYXNzIj48dT5odHRwOi8vc2Fzcy1sYW5nLmNv bS9saWJzYXNzPC91PjwvYT4gLSBBIENTUyBwcmUtcHJvY2Vzc29yPC9mb250PjwvZGl2Pgo8ZGl2 IHN0eWxlPSJwYWRkaW5nLWxlZnQ6NzAuOHB0OyI+PGZvbnQgY29sb3I9IiMxRjRFNzkiPmMpIEd1 bHAgSlMgLSA8YSBocmVmPSJodHRwOi8vZ3VscGpzLmNvbS8iPjx1Pmh0dHA6Ly9ndWxwanMuY29t LzwvdT48L2E+IC0gQSB3b3JrZmxvdyBhdXRvbWF0aW9uIHRvb2wgdGhhdCBpcyByZXNwb25zaWJs ZSBmb3IgcnVubmluZyBhIGRldmVsb3BtZW50IHN0YXRpYyB3ZWJzZXJ2ZXIgYW5kIHJ1biB0YXNr cyBsaWtlIGNvbXBpbGluZyBzb3VyY2VzCmZyb20gaW1wb3J0ZWQgbGlicmFyaWVzLCB0ZXN0aW5n LCBtaW5pZnlpbmcgYW5kIGV4cG9ydGluZyBhc3NldHMuPC9mb250PjwvZGl2Pgo8ZGl2IHN0eWxl PSJwYWRkaW5nLWxlZnQ6MzUuNHB0OyI+PGZvbnQgY29sb3I9IiMxRjRFNzkiPiZuYnNwOzwvZm9u dD48L2Rpdj4KPGRpdiBzdHlsZT0icGFkZGluZy1sZWZ0OjM1LjRwdDsiPjxmb250IGNvbG9yPSIj MUY0RTc5Ij5UaGlzIGdlbmVyYXRlZCB3ZWJhcHAgdGhhdCBJIHVzZWQgYXMgJnF1b3Q7Y2FudmFz JnF1b3Q7IHRvIHdyaXRlIHRoZSB3aWRnZXRzIGFuZCBtb2NrdXBzIGNhbGxzIEJvd2VyIGNvbW1h bmRzIHRvIG1hbmFnZSBjb21tb24gbGlicmFyaWVzIHN1Y2ggYXM6PC9mb250PjwvZGl2Pgo8ZGl2 IHN0eWxlPSJwYWRkaW5nLWxlZnQ6MzUuNHB0OyI+PGZvbnQgY29sb3I9IiMxRjRFNzkiPiZuYnNw OzwvZm9udD48L2Rpdj4KPGRpdiBzdHlsZT0icGFkZGluZy1sZWZ0OjcwLjhwdDsiPjxmb250IGNv bG9yPSIjMUY0RTc5Ij4qalF1ZXJ5ICh3YXMgYWxyZWFkeSBtYW51YWxseSBpbmNsdWRlZCBpbiBL aW1jaGkpPC9mb250PjwvZGl2Pgo8ZGl2IHN0eWxlPSJwYWRkaW5nLWxlZnQ6NzAuOHB0OyI+PGZv bnQgY29sb3I9IiMxRjRFNzkiPipqUXVlcnkgVUkgKHNhbWUgYXMgYWJvdmUpPC9mb250PjwvZGl2 Pgo8ZGl2IHN0eWxlPSJwYWRkaW5nLWxlZnQ6NzAuOHB0OyI+PGZvbnQgY29sb3I9IiMxRjRFNzki PipqUXVlcnkgVUkgaTE4biBwbHVnaW4gKHNhbWUgYXMgYWJvdmUpPC9mb250PjwvZGl2Pgo8ZGl2 IHN0eWxlPSJwYWRkaW5nLWxlZnQ6NzAuOHB0OyI+PGZvbnQgY29sb3I9IiMxRjRFNzkiPipUd2l0 dGVyIEJvb3RzdHJhcCAoU2FzcyB2ZXJzaW9uKSAtIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNv bS90d2JzL2Jvb3RzdHJhcC1zYXNzIj48dT5odHRwczovL2dpdGh1Yi5jb20vdHdicy9ib290c3Ry YXAtc2FzczwvdT48L2E+IC0gUmVxdWlyZXMgbGlic2FzcyB0byBidWlsZDwvZm9udD48L2Rpdj4K PGRpdiBzdHlsZT0icGFkZGluZy1sZWZ0OjcwLjhwdDsiPjxmb250IGNvbG9yPSIjMUY0RTc5Ij4q TW9kZXJuaXpyIC0gPGEgaHJlZj0iaHR0cHM6Ly9tb2Rlcm5penIuY29tLyI+PHU+aHR0cHM6Ly9t b2Rlcm5penIuY29tLzwvdT48L2E+IC0gKE1JVCBMaWNlbnNlKSBBIEpTIGxpYnJhcnkgdGhhdCBk ZXRlY3RzIGFsbCB0aGUgc3VwcG9ydGVkIGZlYXR1cmVzIGluIGEgYnJvd3NlciBhbmQgd3JhcHMg YSBjc3MgY2xhc3MgaW4gdGhlICZsdDtodG1sJmd0OyB0YWcuClRoaXMgaXMgbXVjaCBiZXR0ZXIg dGhhbiBkbyBhIHNpbXBsZSBicm93c2VyIHZlcnNpb24gY2hlY2sgdGhhdCBjYW4gbGVhZCB0byBm YWxzZSBvciBpbmNvcnJlY3QgdXNlciBhZ2VudCBzdHJpbmdzLjwvZm9udD48L2Rpdj4KPGRpdiBz dHlsZT0icGFkZGluZy1sZWZ0OjcwLjhwdDsiPjxmb250IGNvbG9yPSIjMUY0RTc5Ij4qRXM1LXNo aW0gLSA8YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vZXMtc2hpbXMvZXM1LXNoaW0iPjx1Pmh0 dHBzOi8vZ2l0aHViLmNvbS9lcy1zaGltcy9lczUtc2hpbTwvdT48L2E+IC0gTGlicmFyeSB0aGF0 IGNvbnRhaW4gRWNtYVNjcmlwdDUgbWV0aG9kcyAoQ2hyb21lIGFuZCBGaXJlZm94IGRvbid0IG5l ZWQgdGhpcywgU2FmYXJpIGRvZXMpPC9mb250PjwvZGl2Pgo8ZGl2IHN0eWxlPSJwYWRkaW5nLWxl ZnQ6NzAuOHB0OyI+PGZvbnQgY29sb3I9IiMxRjRFNzkiPipKc29uMiAtIEpTT04gZW5jb2RlcnMv ZGVjb2RlcnMgZm9yIG9sZCBicm93c2VycyAoQ2hyb21lIGFuZCBGaXJlZm94IGRvbid0IG5lZWQg dGhpcywgU2FmYXJpIGRvZXMpPC9mb250PjwvZGl2Pgo8ZGl2IHN0eWxlPSJwYWRkaW5nLWxlZnQ6 NzAuOHB0OyI+PGZvbnQgY29sb3I9IiMxRjRFNzkiPipCYXNlNjQgLSA8YSBocmVmPSJodHRwczov L2dpdGh1Yi5jb20vbWF0aGlhc2J5bmVucy9iYXNlNjQiPjx1Pmh0dHBzOi8vZ2l0aHViLmNvbS9t YXRoaWFzYnluZW5zL2Jhc2U2NDwvdT48L2E+IC0gSlMgQmFzZTY0IGVuY29kZXIvZGVjb2Rlcjwv Zm9udD48L2Rpdj4KPGRpdiBzdHlsZT0icGFkZGluZy1sZWZ0OjcwLjhwdDsiPjxmb250IGNvbG9y PSIjMUY0RTc5Ij4qQ2hhaSBBc3NlcnRpb24gTGlicmFyeSAtIDxhIGhyZWY9Imh0dHA6Ly9jaGFp anMuY29tLyI+PHU+aHR0cDovL2NoYWlqcy5jb20vPC91PjwvYT4gKGRldiBkZXBlbmRlbmN5KTwv Zm9udD48L2Rpdj4KPGRpdiBzdHlsZT0icGFkZGluZy1sZWZ0OjcwLjhwdDsiPjxmb250IGNvbG9y PSIjMUY0RTc5Ij4qTW9jaGEganMgLSA8YSBocmVmPSJodHRwczovL21vY2hhanMub3JnLyI+PHU+ aHR0cHM6Ly9tb2NoYWpzLm9yZy88L3U+PC9hPiAtIChkZXYgZGVwZW5kZW5jeSk8L2ZvbnQ+PC9k aXY+CjxkaXYgc3R5bGU9InBhZGRpbmctbGVmdDo3MC44cHQ7Ij48Zm9udCBjb2xvcj0iIzFGNEU3 OSI+KkZvbnRBd2Vzb21lIC0gPGEgaHJlZj0iaHR0cDovL2ZvbnRhd2Vzb21lLmlvIj48dT5odHRw Oi8vZm9udGF3ZXNvbWUuaW88L3U+PC9hPiAtIChJbXBvcnRlZCBqdXN0IHRoZSBTYXNzIGZpbGVz IHNpbmNlIHdlIGFyZSBoYW5kbGluZyBmb250IGZpbGVzIGluIGEgZGlmZmVyZW50IHdheSk8L2Zv bnQ+PC9kaXY+CjxkaXYgc3R5bGU9InBhZGRpbmctbGVmdDozNS40cHQ7Ij48Zm9udCBjb2xvcj0i IzFGNEU3OSI+Jm5ic3A7PC9mb250PjwvZGl2Pgo8ZGl2IHN0eWxlPSJwYWRkaW5nLWxlZnQ6MzUu NHB0OyI+PGZvbnQgY29sb3I9IiMxRjRFNzkiPkFzIGEgYmVzdCBwcmFjdGljZSBpbiBmcm9udC1l bmQgZGV2ZWxvcG1lbnQsIHdlIHVzZSBCb3dlciBkbyBtYW5hZ2UgdGhlIGV4dGVybmFsL3ZlbmRv ciBsaWJyYXJpZXMgbGlrZSB0aGUgb25lcyBsaXN0ZWQgYWJvdmUuIEluIHRoZSBtYWluIG1vY2t1 cCBmb2xkZXIgdGhlcmUncyBhIGpzb24gZmlsZSB0aGF0IGhhbmRsZXMgYWxsIHRoZSBkZXBlbmRl bmNpZXMKYW5kIHRoZWlyIGNvcnJlY3QgdmVyc2lvbnM6PC9mb250PjwvZGl2Pgo8ZGl2IHN0eWxl PSJwYWRkaW5nLWxlZnQ6MzUuNHB0OyI+PGZvbnQgY29sb3I9IiMxRjRFNzkiPiZuYnNwOzwvZm9u dD48L2Rpdj4KPGRpdiBzdHlsZT0icGFkZGluZy1sZWZ0OjM1LjRwdDsiPjxmb250IGZhY2U9IkNv dXJpZXIgTmV3IiBjb2xvcj0iIzFGNEU3OSI+ezwvZm9udD48L2Rpdj4KPGRpdiBzdHlsZT0icGFk ZGluZy1sZWZ0OjM1LjRwdDsiPjxmb250IGZhY2U9IkNvdXJpZXIgTmV3IiBjb2xvcj0iIzFGNEU3 OSI+Jm5ic3A7ICZxdW90O25hbWUmcXVvdDs6ICZxdW90O3dvayZxdW90Oyw8L2ZvbnQ+PC9kaXY+ CjxkaXYgc3R5bGU9InBhZGRpbmctbGVmdDozNS40cHQ7Ij48Zm9udCBmYWNlPSJDb3VyaWVyIE5l dyIgY29sb3I9IiMxRjRFNzkiPiZuYnNwOyAmcXVvdDtwcml2YXRlJnF1b3Q7OiB0cnVlLDwvZm9u dD48L2Rpdj4KPGRpdiBzdHlsZT0icGFkZGluZy1sZWZ0OjM1LjRwdDsiPjxmb250IGZhY2U9IkNv dXJpZXIgTmV3IiBjb2xvcj0iIzFGNEU3OSI+Jm5ic3A7ICZxdW90O2RlcGVuZGVuY2llcyZxdW90 OzogezwvZm9udD48L2Rpdj4KPGRpdiBzdHlsZT0icGFkZGluZy1sZWZ0OjM1LjRwdDsiPjxmb250 IGZhY2U9IkNvdXJpZXIgTmV3IiBjb2xvcj0iIzFGNEU3OSI+Jm5ic3A7Jm5ic3A7Jm5ic3A7ICZx dW90O21vZGVybml6ciZxdW90OzogJnF1b3Q7fjIuOC4xJnF1b3Q7LDwvZm9udD48L2Rpdj4KPGRp diBzdHlsZT0icGFkZGluZy1sZWZ0OjM1LjRwdDsiPjxmb250IGZhY2U9IkNvdXJpZXIgTmV3IiBj b2xvcj0iIzFGNEU3OSI+Jm5ic3A7Jm5ic3A7Jm5ic3A7ICZxdW90O2Jvb3RzdHJhcC1zYXNzLW9m ZmljaWFsJnF1b3Q7OiAmcXVvdDt+My4zLjUmcXVvdDssPC9mb250PjwvZGl2Pgo8ZGl2IHN0eWxl PSJwYWRkaW5nLWxlZnQ6MzUuNHB0OyI+PGZvbnQgZmFjZT0iQ291cmllciBOZXciIGNvbG9yPSIj MUY0RTc5Ij4mbmJzcDsmbmJzcDsmbmJzcDsgJnF1b3Q7Ym9vdHN0cmFwLXNlbGVjdC1zYXNzJnF1 b3Q7OiAmcXVvdDt+MS42LjMmcXVvdDssPC9mb250PjwvZGl2Pgo8ZGl2IHN0eWxlPSJwYWRkaW5n LWxlZnQ6MzUuNHB0OyI+PGZvbnQgZmFjZT0iQ291cmllciBOZXciIGNvbG9yPSIjMUY0RTc5Ij4m bmJzcDsmbmJzcDsmbmJzcDsgJnF1b3Q7Y29tcGFzcy1taXhpbnMmcXVvdDs6ICZxdW90O34xLjAu MiZxdW90Oyw8L2ZvbnQ+PC9kaXY+CjxkaXYgc3R5bGU9InBhZGRpbmctbGVmdDozNS40cHQ7Ij48 Zm9udCBmYWNlPSJDb3VyaWVyIE5ldyIgY29sb3I9IiMxRjRFNzkiPiZuYnNwOyZuYnNwOyZuYnNw OyAmcXVvdDtlczUtc2hpbSZxdW90OzogJnF1b3Q7fjQuMS4xMCZxdW90Oyw8L2ZvbnQ+PC9kaXY+ CjxkaXYgc3R5bGU9InBhZGRpbmctbGVmdDozNS40cHQ7Ij48Zm9udCBmYWNlPSJDb3VyaWVyIE5l dyIgY29sb3I9IiMxRjRFNzkiPiZuYnNwOyZuYnNwOyZuYnNwOyAmcXVvdDtqc29uMiZxdW90Ozog JnF1b3Q7KiZxdW90Oyw8L2ZvbnQ+PC9kaXY+CjxkaXYgc3R5bGU9InBhZGRpbmctbGVmdDozNS40 cHQ7Ij48Zm9udCBmYWNlPSJDb3VyaWVyIE5ldyIgY29sb3I9IiMxRjRFNzkiPiZuYnNwOyZuYnNw OyZuYnNwOyAmcXVvdDtiYXNlNjQmcXVvdDs6ICZxdW90O34wLjMuMCZxdW90Oyw8L2ZvbnQ+PC9k aXY+CjxkaXYgc3R5bGU9InBhZGRpbmctbGVmdDozNS40cHQ7Ij48Zm9udCBmYWNlPSJDb3VyaWVy IE5ldyIgY29sb3I9IiMxRjRFNzkiPiZuYnNwOyZuYnNwOyZuYnNwOyAmcXVvdDtqcXVlcnkmcXVv dDs6ICZxdW90O34xLjExLjMmcXVvdDssPC9mb250PjwvZGl2Pgo8ZGl2IHN0eWxlPSJwYWRkaW5n LWxlZnQ6MzUuNHB0OyI+PGZvbnQgZmFjZT0iQ291cmllciBOZXciIGNvbG9yPSIjMUY0RTc5Ij4m bmJzcDsmbmJzcDsmbmJzcDsgJnF1b3Q7anF1ZXJ5LXVpJnF1b3Q7OiAmcXVvdDt+MS4xMS40JnF1 b3Q7LDwvZm9udD48L2Rpdj4KPGRpdiBzdHlsZT0icGFkZGluZy1sZWZ0OjM1LjRwdDsiPjxmb250 IGZhY2U9IkNvdXJpZXIgTmV3IiBjb2xvcj0iIzFGNEU3OSI+Jm5ic3A7Jm5ic3A7Jm5ic3A7ICZx dW90O2pxdWVyeS1pMThuJnF1b3Q7OiAmcXVvdDt+MS4xLjEmcXVvdDssPC9mb250PjwvZGl2Pgo8 ZGl2IHN0eWxlPSJwYWRkaW5nLWxlZnQ6MzUuNHB0OyI+PGZvbnQgZmFjZT0iQ291cmllciBOZXci IGNvbG9yPSIjMUY0RTc5Ij4mbmJzcDsmbmJzcDsmbmJzcDsgJnF1b3Q7Zm9udC1hd2Vzb21lJnF1 b3Q7OiAmcXVvdDt+NC40LjAmcXVvdDs8L2ZvbnQ+PC9kaXY+CjxkaXYgc3R5bGU9InBhZGRpbmct bGVmdDozNS40cHQ7Ij48Zm9udCBmYWNlPSJDb3VyaWVyIE5ldyIgY29sb3I9IiMxRjRFNzkiPiZu YnNwOyB9LDwvZm9udD48L2Rpdj4KPGRpdiBzdHlsZT0icGFkZGluZy1sZWZ0OjM1LjRwdDsiPjxm b250IGZhY2U9IkNvdXJpZXIgTmV3IiBjb2xvcj0iIzFGNEU3OSI+Jm5ic3A7ICZxdW90O292ZXJy aWRlcyZxdW90OzogezwvZm9udD48L2Rpdj4KPGRpdiBzdHlsZT0icGFkZGluZy1sZWZ0OjM1LjRw dDsiPjxmb250IGZhY2U9IkNvdXJpZXIgTmV3IiBjb2xvcj0iIzFGNEU3OSI+Jm5ic3A7Jm5ic3A7 Jm5ic3A7ICZxdW90O2Jvb3RzdHJhcC1zYXNzLW9mZmljaWFsJnF1b3Q7OiB7PC9mb250PjwvZGl2 Pgo8ZGl2IHN0eWxlPSJwYWRkaW5nLWxlZnQ6MzUuNHB0OyI+PGZvbnQgZmFjZT0iQ291cmllciBO ZXciIGNvbG9yPSIjMUY0RTc5Ij4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgJnF1b3Q7 bWFpbiZxdW90OzogWzwvZm9udD48L2Rpdj4KPGRpdiBzdHlsZT0icGFkZGluZy1sZWZ0OjM1LjRw dDsiPjxmb250IGZhY2U9IkNvdXJpZXIgTmV3IiBjb2xvcj0iIzFGNEU3OSI+Jm5ic3A7Jm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7ICZxdW90O2Fzc2V0cy9zdHlsZXNoZWV0cy9f Ym9vdHN0cmFwLnNjc3MmcXVvdDssPC9mb250PjwvZGl2Pgo8ZGl2IHN0eWxlPSJwYWRkaW5nLWxl ZnQ6MzUuNHB0OyI+PGZvbnQgZmFjZT0iQ291cmllciBOZXciIGNvbG9yPSIjMUY0RTc5Ij4mbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgJnF1b3Q7YXNzZXRzL2phdmFz Y3JpcHRzL2Jvb3RzdHJhcC5qcyZxdW90OzwvZm9udD48L2Rpdj4KPGRpdiBzdHlsZT0icGFkZGlu Zy1sZWZ0OjM1LjRwdDsiPjxmb250IGZhY2U9IkNvdXJpZXIgTmV3IiBjb2xvcj0iIzFGNEU3OSI+ Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IF08L2ZvbnQ+PC9kaXY+CjxkaXYgc3R5bGU9 InBhZGRpbmctbGVmdDozNS40cHQ7Ij48Zm9udCBmYWNlPSJDb3VyaWVyIE5ldyIgY29sb3I9IiMx RjRFNzkiPiZuYnNwOyZuYnNwOyZuYnNwOyB9PC9mb250PjwvZGl2Pgo8ZGl2IHN0eWxlPSJwYWRk aW5nLWxlZnQ6MzUuNHB0OyI+PGZvbnQgZmFjZT0iQ291cmllciBOZXciIGNvbG9yPSIjMUY0RTc5 Ij4mbmJzcDsgfSw8L2ZvbnQ+PC9kaXY+CjxkaXYgc3R5bGU9InBhZGRpbmctbGVmdDozNS40cHQ7 Ij48Zm9udCBmYWNlPSJDb3VyaWVyIE5ldyIgY29sb3I9IiMxRjRFNzkiPiZuYnNwOyAmcXVvdDtk ZXZEZXBlbmRlbmNpZXMmcXVvdDs6IHs8L2ZvbnQ+PC9kaXY+CjxkaXYgc3R5bGU9InBhZGRpbmct bGVmdDozNS40cHQ7Ij48Zm9udCBmYWNlPSJDb3VyaWVyIE5ldyIgY29sb3I9IiMxRjRFNzkiPiZu YnNwOyZuYnNwOyZuYnNwOyAmcXVvdDtjaGFpJnF1b3Q7OiAmcXVvdDt+My4yLjAmcXVvdDssPC9m b250PjwvZGl2Pgo8ZGl2IHN0eWxlPSJwYWRkaW5nLWxlZnQ6MzUuNHB0OyI+PGZvbnQgZmFjZT0i Q291cmllciBOZXciIGNvbG9yPSIjMUY0RTc5Ij4mbmJzcDsmbmJzcDsmbmJzcDsgJnF1b3Q7bW9j aGEmcXVvdDs6ICZxdW90O34yLjIuNSZxdW90OzwvZm9udD48L2Rpdj4KPGRpdiBzdHlsZT0icGFk ZGluZy1sZWZ0OjM1LjRwdDsiPjxmb250IGZhY2U9IkNvdXJpZXIgTmV3IiBjb2xvcj0iIzFGNEU3 OSI+Jm5ic3A7IH08L2ZvbnQ+PC9kaXY+CjxkaXYgc3R5bGU9InBhZGRpbmctbGVmdDozNS40cHQ7 Ij48Zm9udCBmYWNlPSJDb3VyaWVyIE5ldyIgY29sb3I9IiMxRjRFNzkiPn08L2ZvbnQ+PC9kaXY+ CjxkaXYgc3R5bGU9InBhZGRpbmctbGVmdDozNS40cHQ7Ij48Zm9udCBjb2xvcj0iIzFGNEU3OSI+ Jm5ic3A7PC9mb250PjwvZGl2Pgo8ZGl2IHN0eWxlPSJwYWRkaW5nLWxlZnQ6MzUuNHB0OyI+PGZv bnQgY29sb3I9IiMxRjRFNzkiPk5vdGUgdGhhdCBjaGFpIGFuZCBtb2NoYSBhcmUgZGV2LWRlcGVu ZGVuY2llcyB0aGF0IGFyZSByZXF1aXJlZCBieSBHdWxwIHNvIHRoZXkgd2VyZSBub3QgaW5jbHVk ZWQgaW4gdGhlIGNvbXBpbGVkL2V4cG9ydGVkIGFzc2V0cy4gQm93ZXIgY3JlYXRlcyBhIG5vbi12 ZXJzaW9uZWQgZm9sZGVyIGNhbGxlZCBib3dlcl9jb21wb25lbnRzIGFuZCBzdG9yZQphbGwgdGhl IGxpYnJhcmllcyBvcmlnaW5hbCBzb3VyY2VzIGFuZCBhc3NldHMgaW4gdGhlcmUgKGl0IGJhc2lj YWxseSBkb2VzIGEgZ2l0IGNsb25lKS48L2ZvbnQ+PC9kaXY+CjxkaXYgc3R5bGU9InBhZGRpbmct bGVmdDozNS40cHQ7Ij48Zm9udCBjb2xvcj0iIzFGNEU3OSI+Jm5ic3A7PC9mb250PjwvZGl2Pgo8 ZGl2IHN0eWxlPSJwYWRkaW5nLWxlZnQ6MzUuNHB0OyI+PGZvbnQgY29sb3I9IiMxRjRFNzkiPlRo ZW4gSSB1c2UgR3VscC5KUyB0byBhY3QgYXMgYSBkZXZlbG9wbWVudCB3ZWJzZXJ2ZXIgdGhhdCBy dW5zIGFsbCB0aGUgZnJvbnQtZW5kIHRhc2tzIHRoYXQgSSBoYXZlIHByb2dyYW1tZWQgb3IgdGhh dCBoYXZlIGJlZW4gaW5jbHVkZWQgYnkgWWVvbWFuIGdlbmVyYXRvciBzdWNoIGFzIEphdmFTY3Jp cHQgdmFsaWRhdGlvbiwgU2FzcyBjb21waWxhdGlvbiwKQ1NTIGFuZCBKUyBtaW5pZmljYXRpb24u IFdoZW4gdGhpcyBzZXJ2ZXIgaXMgcnVubmluZywgaXQgcG9pbnRzIGRpcmVjdGx5IHRvIHRoZSBv cmlnaW5hbCBzb3VyY2VzIGluIGJvd2VyX2NvbXBvbmVudHMgc28gSSBjYW4gbWFrZSBjaGFuZ2Vz IG9uIHRoZSBmbHkgaW5zdGVhZCBvZiBoYXZpbmcgdG8gc3RvcCBzZXJ2ZXIgLyByZWNvbXBpbGUg c291cmNlcyAvIHN0YXJ0IHNlcnZlciBhZ2Fpbi4gT25jZSBJJ20gZG9uZSBkZXZlbG9waW5nIHRo ZXNlIGFzc2V0cywKSSBydW4gYSB0YXNrIHRvICZxdW90O2J1aWxkJnF1b3Q7IGFuZCBvcHRpbWl6 ZSB0aGVzZSBmaWxlcyBhbmQgZXhwb3J0IHRoZW0gdG8gS2ltY2hpL1dvayBwcm9qZWN0LjwvZm9u dD48L2Rpdj4KPGRpdiBzdHlsZT0icGFkZGluZy1sZWZ0OjM1LjRwdDsiPjxmb250IGNvbG9yPSIj MUY0RTc5Ij4mbmJzcDs8L2ZvbnQ+PC9kaXY+CjxkaXYgc3R5bGU9InBhZGRpbmctbGVmdDozNS40 cHQ7Ij48Zm9udCBjb2xvcj0iIzFGNEU3OSI+VGhlIHNhc3MgZmlsZXMgcmVmZXJlbmNlcyB0aGUg b3JpZ2luYWwgQm9vdHN0cmFwIHNvdXJjZSBpbnNpZGUgYm93ZXJfY29tcG9uZW50cyBmb2xkZXIu IE9uY2UgSSBjb21waWxlIG91ciBzYXNzIGZpbGVzLCBHdWxwIGF1dG9tYXRpY2FsbHkgbWVyZ2Vz IHRoZSByZWZlcmVuY2VkIGZpbGVzIHdpdGggdGhlbS4gVGhlIHNhbWUgZ29lcyBmb3IgalF1ZXJ5 LVVJCnRoZW1lIGFuZCBmb250LWF3ZXNvbWUgKHdoaWNoIEkgcHJvZ3JhbW1hdGljYWxseSByZW1v dmVkIHRoZSAqLnR0ZiBhbmQgKi5zdmcgZmlsZXMpLjwvZm9udD48L2Rpdj4KPGRpdj4mbmJzcDs8 L2Rpdj4KPGRpdj4mZ3Q7Jm5ic3A7Jm5ic3A7IHVpL2xpYnMvdGhlbWVzL2Jhc2UvYm9vdHN0cmFw LmN1c3RvbS5jc3MgfCZuYnNwOyA4NTAyICYjNDM7JiM0MzsmIzQzOyYjNDM7JiM0MzsmIzQzOyYj NDM7JiM0MzsmIzQzOyYjNDM7JiM0MzsmIzQzOyYjNDM7JiM0MzsmIzQzOzwvZGl2Pgo8ZGl2PiZn dDsmbmJzcDsmbmJzcDsgdWkvbGlicy90aGVtZXMvYmFzZS9qcXVlcnktdWkuY3VzdG9tLmNzcyB8 Jm5ic3A7Jm5ic3A7IDIwMyAmIzQzOzwvZGl2Pgo8ZGl2PiZuYnNwOzwvZGl2Pgo8ZGl2PiZndDsm bmJzcDsmbmJzcDsgdWkvbGlicy92ZW5kb3IuanMmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgfCZu YnNwOyA1NTIzICYjNDM7JiM0MzsmIzQzOyYjNDM7JiM0MzsmIzQzOyYjNDM7JiM0MzsmIzQzOyYj NDM7PC9kaXY+CjxkaXY+Jmd0OyZuYnNwOyZuYnNwOyB1aS9wYWdlcy9icm93c2VyY29uZmlnLnht bCZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyB8Jm5ic3A7Jm5ic3A7Jm5ic3A7IDEyICYjNDM7 PC9kaXY+CjxkaXY+Jmd0OyZuYnNwOyZuYnNwOyB1aS9wYWdlcy9tYW5pZmVzdC5qc29uJm5ic3A7 Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5i c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IHwmbmJzcDsmbmJz cDsmbmJzcDsgNDEgJiM0Mzs8L2Rpdj4KPGRpdj4mbmJzcDs8L2Rpdj4KPGRpdj5UaGUgc2FtZSBJ IGFza2VkIGJlZm9yZS48L2Rpdj4KPGRpdj4mbmJzcDs8L2Rpdj4KPGRpdj5JdCBpcyBiZXR0ZXIg dG8gZ3JvdXAgdGhlIGZpbGVzIGFjY29yZGluZyB0byBpdHMgcHJvamVjdCBkdWUgbGljZW5zZSBp c3N1ZXMuPC9kaXY+CjxkaXY+Jm5ic3A7PC9kaXY+CjxkaXY+RXhhbXBsZTo8L2Rpdj4KPGRpdj4m bmJzcDs8L2Rpdj4KPGRpdj51aS9saWJzL2Jvb3RzdHJhcC8gPSZndDsgdG8gaG9sZCBhbGwgdGhl IGJvb3RzdHJhcCBmaWxlcyB1aS9saWJzL2pxdWVyeS11aS8mbmJzcDsgPSZndDsgdG8gaG9sZCBh bGwgdGhlIGpxdWVyeS11aSBmaWxlczwvZGl2Pgo8ZGl2PiZuYnNwOzwvZGl2Pgo8ZGl2IHN0eWxl PSJwYWRkaW5nLWxlZnQ6MzUuNHB0OyI+PGZvbnQgY29sb3I9IiMxRjRFNzkiPlRMOyBEUjsgYm93 ZXJzY29uZmlnLnhtbCBhbmQgbWFuaWZlc3QuanNvbiBhcmUgbmVjZXNzYXJ5IGZvciBBbmRyb2lk IGRyYXdlciBhbmQgV2luZG93cyA4LzEwIHRpbGVzOyB2ZW5kb3IuanMgaXMgZXM1LXNoaW0sIGpz b24yIGFuZCBiYXNlNjQgbWluaWZpZWQgaW4gb25lIHNpbmdsZSBmaWxlIGJ5IEd1bHAuIEJvb3Rz dHJhcC5jdXN0b20uY3NzIGlzCndoZXJlIEknbSBwdXR0aW5nIHRoZSBDU1MgZmlsZXMgdGhhdCBJ J20gcmVtb3ZpbmcgZm9ybSBjc3MvdGhlbWVzLWRlZmF1bHQgYW5kIGNvbnZlcnRpbmcvYWRhcHRp bmcgdG8gQm9vdHN0cmFwIG1hcmt1cC93aWRnZXRzICYjODIxMTsgdGhpcyBpcyZuYnNwOyB0aGUg bmV3LXVpIG1haW4gQ1NTLiBJIGtlcHQgc2VwYXJhdGVkIGZyb20gY3NzIGZvbGRlciBiZWNhdXNl IHRoaXMgZmlsZSBoYXMgdG8gYmUgbG9hZGVkIGFmdGVyIHRoZSBvdGhlciBjc3MgZmlsZXMgKGR1 ZQp0byBob3cgY3NzIGNhc2NhZGluZyB3b3JrcykuPC9mb250PjwvZGl2Pgo8ZGl2IHN0eWxlPSJw YWRkaW5nLWxlZnQ6MzUuNHB0OyI+PGZvbnQgY29sb3I9IiMxRjRFNzkiPiZuYnNwOzwvZm9udD48 L2Rpdj4KPGRpdiBzdHlsZT0icGFkZGluZy1sZWZ0OjM1LjRwdDsiPjxmb250IGNvbG9yPSIjMUY0 RTc5Ij5BcyBJIHdhcyBleHBsYWluaW5nLCBHdWxwIG1lcmdlcyB0aGUgcmVmZXJlbmNlZCBsaWJy YXJpZXMgYXNzZXRzLCBzbyB0aGUgb3JpZ2luYWwgQm9vdHN0cmFwIGZpbGVzIGFyZSBjb21iaW5l ZCB3aXRoIHdoaWNoZXZlciBmaWxlIHRoYXQgaGFzIHJlZmVyZW5jZWQgdGhlbS4gVGhpcyBpcyBz b21ldGhpbmcgdGhhdCB3ZSBjYW4gY2hhbmdlIGJ1dCBJIGRvbid0CnRoaW5rIGl0IGlzIGEgZ29v ZCBpZGVhIHRvIGtlZXAgdGhlIG9yaWdpbmFsIEJvb3RzdHJhcCBDU1MgaW4gb25lIGZvbGRlciBh bmQgdGhlbiBsb2FkIG91ciBjdXN0b20gQ1NTIG92ZXIgaXQgYmVjYXVzZSBpdCBhbHJlYWR5IGlu Y2x1ZGVzIGNsYXNzZXMgd2l0aCB0aGUgc2FtZSBydWxlcyBhbmQgc29tZSBvZiB0aGVtIHdpdGgg dGhlIHNhbWUgcHJvcGVydGllcyBhbmQgdmFsdWVzIGZyb20gQm9vdHN0cmFwLCBpLmUuIGluY2x1 ZGluZyBCb290c3RyYXAKb3JpZ2luYWwgY3NzIGlzIGNvZGUgZHVwbGljYXRpb24uPC9mb250Pjwv ZGl2Pgo8ZGl2IHN0eWxlPSJwYWRkaW5nLWxlZnQ6MzUuNHB0OyI+PGZvbnQgY29sb3I9IiMxRjRF NzkiPiZuYnNwOzwvZm9udD48L2Rpdj4KPGRpdiBzdHlsZT0icGFkZGluZy1sZWZ0OjM1LjRwdDsi Pjxmb250IGNvbG9yPSIjMUY0RTc5Ij5Gb3Igbm93IEkndmUgaW5jbHVkZWQgYm9vdHN0cmFwLmN1 c3RvbS5jc3MgaW4gdWkvbGlicy90aGVtZS9iYXNlLyBmb2xkZXIgd2hpbGUgSSBzdGlsbCBuZWVk IHNvbWUgb2xkIGZpbGVzIGZyb20gdWkvY3NzLyBmb3IgcmVmZXJlbmNlIGFuZCBjb21wYXRpYmls aXR5IHdpdGggc2NyZWVucyB0aGF0IEkgaGF2ZW4mIzgyMTc7dCB3b3JrZWQgeWV0LiBPbmNlIEkg cmVtb3ZlCnRoZSB1bnVzZWQgQ1NTIGZpbGVzIGluIHRoZW1lLWRlZmF1bHQgSSdtIHBsYW5uaW5n IHRvIHB1dCBib290c3RyYXAuY3VzdG9tLmNzcyB0aGVyZS48L2ZvbnQ+PC9kaXY+CjxkaXYgc3R5 bGU9InBhZGRpbmctbGVmdDozNS40cHQ7Ij48Zm9udCBjb2xvcj0iIzFGNEU3OSI+Jm5ic3A7PC9m b250PjwvZGl2Pgo8ZGl2IHN0eWxlPSJwYWRkaW5nLWxlZnQ6MzUuNHB0OyI+PGZvbnQgY29sb3I9 IiMxRjRFNzkiPkZvciB0aGUgSlMgZmlsZXM6IEJvb3RzdHJhcCBzb3VyY2UgaGFzIGEgc2luZ2xl IEpTIGZpbGUgZm9yIGVhY2ggY29tcG9uZW50IC8gd2lkZ2V0LiBVc2luZyBib3dlciBhbmQgZ3Vs cCB3ZSBjYW4gcmVmZXJlbmNlIG9ubHkgdGhlIGNvbXBvbmVudHMgdGhhdCB3ZSBoYXZlIHVzZWQg YW5kIGNvbXBpbGUgYSBtaW5pZmllZCB2ZXJzaW9uLiAgRm9yIG5vdwpJJ20gaW1wb3J0aW5nIHRo ZSBmdWxsIHBhY2thZ2UgYnV0IEkgdGhpbmsgd2Ugd29uJ3QgbmVlZCBhbGwgb2YgdGhlbS48L2Zv bnQ+PC9kaXY+CjxkaXYgc3R5bGU9InBhZGRpbmctbGVmdDozNS40cHQ7Ij48Zm9udCBjb2xvcj0i IzFGNEU3OSI+Jm5ic3A7PC9mb250PjwvZGl2Pgo8ZGl2IHN0eWxlPSJwYWRkaW5nLWxlZnQ6MzUu NHB0OyI+PGZvbnQgY29sb3I9IiMxRjRFNzkiPnZlbmRvcnMuanMgaXMgYmFzaWNhbGx5IGVzNS1z aGltLCBqc29uMiBhbmQgYmFzZTY0IG1pbmlmaWVkIGluIG9uZSBmaWxlLiBJJ2xsIHNlbmQgYW5v dGhlciBwYXRjaCByZW1vdmluZyB0eXBlYWhlYWQuanMgYW5kIGJhZy5qcyB0aGF0IHdlcmUgYWxz byBpbmNsdWRlZCBidXQgd2UgZG9uJ3QgbmVlZCB0aGVtIGFueW1vcmUuIDwvZm9udD48L2Rpdj4K PGRpdiBzdHlsZT0icGFkZGluZy1sZWZ0OjM1LjRwdDsiPjxmb250IGNvbG9yPSIjMUY0RTc5Ij4m bmJzcDs8L2ZvbnQ+PC9kaXY+CjxkaXYgc3R5bGU9InBhZGRpbmctbGVmdDozNS40cHQ7Ij48Zm9u dCBjb2xvcj0iIzFGNEU3OSI+VGhlIHdob2xlIGlkZWEgb2YgdXNpbmcgQm93ZXIgYW5kIEd1bHAg aXMgdG8gb3B0aW1pemUsIG1pbmlmeSBhbmQgcHV0IGFsbCB0aGUgZmlsZXMgcmVhZHkgdG8gcHJv ZHVjdGlvbiBpbiBvbmUgc2luZ2xlIHBsYWNlLjwvZm9udD48L2Rpdj4KPGRpdiBzdHlsZT0icGFk ZGluZy1sZWZ0OjM1LjRwdDsiPjxmb250IGNvbG9yPSIjMUY0RTc5Ij4mbmJzcDs8L2ZvbnQ+PC9k aXY+CjxkaXY+V2UgYWxzbyBuZWVkIHRvIHVwZGF0ZSB0aGUgQ09QWUlORyBmaWxlIGFjY29yZGlu ZyB0byB0aG9zZSBjaGFuZ2VzLjwvZGl2Pgo8ZGl2IHN0eWxlPSJwYWRkaW5nLWxlZnQ6MzUuNHB0 OyI+PGZvbnQgY29sb3I9IiMxRjRFNzkiPiZuYnNwOzwvZm9udD48L2Rpdj4KPGRpdiBzdHlsZT0i cGFkZGluZy1sZWZ0OjM1LjRwdDsiPjxmb250IGNvbG9yPSIjMUY0RTc5Ij5BbGwgYm93ZXIgcGFj a2FnZXMgbXVzdCBoYXZlIGEgTGljZW5zZSBmaWxlIGJ1dCBzaW5jZSB0aGV5IGhhdmUgZGlmZmVy ZW50IGZvcm1hdCwgSSB3b3VsZCBoYXZlIHRvIG1hbnVhbGx5IGNvcHkgdGhlbSBpbiB0aGUgc2Ft ZSBmb2xkZXIgb3IgYXBwZW5kIGluIHRoZSBtaW5pZmllZCB2ZXJzaW9uLjwvZm9udD48L2Rpdj4K PGRpdiBzdHlsZT0icGFkZGluZy1sZWZ0OjM1LjRwdDsiPjxmb250IGNvbG9yPSIjMUY0RTc5Ij4m bmJzcDs8L2ZvbnQ+PC9kaXY+CjxkaXYgc3R5bGU9InBhZGRpbmctbGVmdDozNS40cHQ7Ij48Zm9u dCBjb2xvcj0iIzFGNEU3OSI+QXMgd2UgaGF2ZSBkaXNjdXNzZWQgaW4gb3RoZXIgbWFpbHMgLyBj aGF0LCBJdCB3b3VsZCBiZSBuaWNlIHRvIGluY2x1ZGUgdGhpcyB3b3JrZmxvdyBhbmQgcmVmZXJl bmNlIHRoZXNlIGRlcGVuZGVuY2llcyAobm9kZSwgZ3VscCwgYm93ZXIpIGluIHRoZSByZXBvc2l0 b3J5IHNvIGluIHRoZSBmdXR1cmUgd2Ugc2VwYXJhdGUgVUkgY29kZSBhbmQgZGV2ZWxvcG1lbnQK ZnJvbSBwcm9kdWN0aW9uIGVudmlyb25tZW50LiBJbiBvdGhlciB3b3JkcywgaWYgd2Ugd2FudCB0 byB1cGRhdGUgYSBKUyBmaWxlLCBpdCB3b3VsZCBiZSByZXF1aXJlZCB0byBwYXNzIHRoZSB2YWxp ZGF0aW9uIHRlc3RzIGJ5IEpTbGludCB0YXNrIGluIEd1bHA7IElmIHdlIGhhdmUgdG8gZml4IGEg Q1NTIGlzc3VlLCBpdCB3b3VsZCBoYXZlIHRvIGJlIGRvbmUgaW4gdGhlIFNhc3MgZmlsZSwgdGhl biBjb21waWxlZCBhbmQgdGhlbiBtaW5pZmllZC4KVGhpcyB3b3VsZCBlbnN1cmUgY29kZSBxdWFs aXR5IGFuZCB0aGF0IHRoZSBVSSBkZXBlbmRlbmNpZXMgYXJlIGFsd2F5cyB1c2luZyB0aGUgY29y cmVjdCB2ZXJzaW9ucy48L2ZvbnQ+PC9kaXY+CjxkaXYgc3R5bGU9InBhZGRpbmctbGVmdDozNS40 cHQ7Ij48Zm9udCBjb2xvcj0iIzFGNEU3OSI+Jm5ic3A7PC9mb250PjwvZGl2Pgo8ZGl2IHN0eWxl PSJwYWRkaW5nLWxlZnQ6MzUuNHB0OyI+PGZvbnQgY29sb3I9IiMxRjRFNzkiPlNvLCBzaG91bGQg SSBjaGFuZ2UgdGhlIGZvbGRlciBzdHJ1Y3R1cmUgYW5kIGNvcHkgdGhlIGxpY2Vuc2UgZmlsZXMg b3Iga2VlcCB0aGlzIHdheSBhbmQgb25jZSBJIGNvbXBsZXRlIHRoZSBuZXctdWkgaW50ZWdyYXRp b24gYWRkIHRoZSB1aSBzb3VyY2VzIGFzIHdlbGwgYXMgdGhlIGRlcGVuZGVuY2llcz88L2ZvbnQ+ PC9kaXY+CjxkaXY+Jm5ic3A7PC9kaXY+CjxkaXY+Jmd0OyZuYnNwOyZuYnNwOyA4IGZpbGVzIGNo YW5nZWQsIDM0NjQ5IGluc2VydGlvbnMoJiM0MzspPC9kaXY+CjxkaXY+Jmd0OyZuYnNwOyZuYnNw OyBjcmVhdGUgbW9kZSAxMDA2NDQgdWkvbGlicy9ib290c3RyYXAuanM8L2Rpdj4KPGRpdj4mZ3Q7 Jm5ic3A7Jm5ic3A7IGNyZWF0ZSBtb2RlIDEwMDY0NCB1aS9saWJzL2pxdWVyeS11aS5qczwvZGl2 Pgo8ZGl2PiZndDsmbmJzcDsmbmJzcDsgY3JlYXRlIG1vZGUgMTAwNjQ0IHVpL2xpYnMvbW9kZXJu aXpyLmpzPC9kaXY+CjxkaXY+Jmd0OyZuYnNwOyZuYnNwOyBjcmVhdGUgbW9kZSAxMDA3NTUgdWkv bGlicy90aGVtZXMvYmFzZS9ib290c3RyYXAuY3VzdG9tLmNzczwvZGl2Pgo8ZGl2PiZndDsmbmJz cDsmbmJzcDsgY3JlYXRlIG1vZGUgMTAwNjQ0IHVpL2xpYnMvdGhlbWVzL2Jhc2UvanF1ZXJ5LXVp LmN1c3RvbS5jc3M8L2Rpdj4KPGRpdj4mZ3Q7Jm5ic3A7Jm5ic3A7IGNyZWF0ZSBtb2RlIDEwMDY0 NCB1aS9saWJzL3ZlbmRvci5qczwvZGl2Pgo8ZGl2PiZndDsmbmJzcDsmbmJzcDsgY3JlYXRlIG1v ZGUgMTAwNjQ0IHVpL3BhZ2VzL2Jyb3dzZXJjb25maWcueG1sPC9kaXY+CjxkaXY+Jmd0OyZuYnNw OyZuYnNwOyBjcmVhdGUgbW9kZSAxMDA2NDQgdWkvcGFnZXMvbWFuaWZlc3QuanNvbjwvZGl2Pgo8 ZGl2PiZndDs8L2Rpdj4KPGRpdj4mZ3Q7PC9kaXY+CjxkaXY+Jm5ic3A7PC9kaXY+CjxkaXY+X19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX188L2Rpdj4KPGRpdj5L aW1jaGktZGV2ZWwgbWFpbGluZyBsaXN0PC9kaXY+CjxkaXY+PGEgaHJlZj0ibWFpbHRvOktpbWNo aS1kZXZlbEBvdmlydC5vcmciPktpbWNoaS1kZXZlbEBvdmlydC5vcmc8L2E+PC9kaXY+CjxkaXY+ PGEgaHJlZj0iaHR0cDovL2xpc3RzLm92aXJ0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2tpbWNoaS1k ZXZlbCI+aHR0cDovL2xpc3RzLm92aXJ0Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2tpbWNoaS1kZXZl bDwvYT48L2Rpdj4KPGRpdj4mbmJzcDs8L2Rpdj4KPC9zcGFuPjwvZm9udD4KPC9ib2R5Pgo8L2h0 bWw+Cg== --===============0172380364680940660==--