Merge branch 'current' into next

This commit is contained in:
Jesse Hills 2022-02-17 07:35:48 +13:00
commit 18c93e51cf
No known key found for this signature in database
GPG Key ID: BEAAE804EFD8E83A
6 changed files with 795 additions and 5 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 120 KiB

279
changelog/2022.2.0.rst Normal file
View File

@ -0,0 +1,279 @@
ESPHome 2022.2.0 - 16th February 2022
=====================================
.. seo::
:description: Changelog for ESPHome 2022.2.0.
:image: /_static/changelog-2022.2.0.png
:author: Jesse Hills
:author_twitter: @jesserockz
.. imgtable::
:columns: 4
Lock Core, components/lock/index, folder-open.svg
Generic Output Lock, components/lock/output, upload.svg
Template Lock, components/lock/template, description.svg
QR Code, components/display/index, qr-code.svg
Touchscreen Core, components/touchscreen/index, folder-open.svg
EKTF2232, components/touchscreen/ektf2232, ektf2232.svg
Lilygo T5 4.7", components/touchscreen/lilygo_t5_47, lilygo_t5_47_touch.png
MLX90393, components/sensor/mlx90393, mlx90393.jpg
Wake-on-LAN Button, components/button/wake_on_lan, power_settings.svg
Generic Output Button, components/button/output, upload.svg
Xiaomi MHOC303, components/sensor/xiaomi_ble, xiaomi_mijia_logo.jpg
RadonEye BLE, components/sensor/radon_eye_ble, radon_eye_logo.png
Modbus Select, components/select/modbus_controller, modbus.png
MAX9611, components/sensor/max9611, max9611.jpg
Inkplate 6 Plus, components/display/inkplate6, inkplate6.jpg
Home Assistant Addon Repo
-------------------------
In a future Supervisor version, the `ESPHome Home Assistant addon repository <https://github.com/esphome/home-assistant-addon>`__
will be added by default to new Home Assistant installations.
We have decided that we will deprecate the ESPHome addon inside the
`Community Addons <https://github.com/hassio-addons/repository>`__
and everyone should move to the ESPHome repo. It is safe to delete the
ESPHome addon as your configuration YAML files are stored in the Home
Assistant configuration folder.
You can add the repository here:
.. raw:: html
<a href="https://my.home-assistant.io/redirect/supervisor_add_addon_repository/?repository_url=https%3A%2F%2Fgithub.com%2Fesphome%2Fhome-assistant-addon"
target="_blank">
<img src="https://my.home-assistant.io/badges/supervisor_add_addon_repository.svg"
alt="Open your Home Assistant instance and show the add add-on repository dialog with a specific repository URL pre-filled." />
</a>
And then install the latest ESPHome addon here:
.. raw:: html
<a href="https://my.home-assistant.io/redirect/supervisor_addon/?addon=5c53de3b_esphome" target="_blank">
<img src="https://my.home-assistant.io/badges/supervisor_addon.svg"
alt="Open your Home Assistant instance and show the dashboard of a Supervisor add-on." />
</a>
ESP8266 recommended framework bump
----------------------------------
The recommended (and therefore default) version of Arduino for ESP8266 devices
has been bumped to 3.0.2 from 2.7.4. This brings many underlying changes to the
ESP8266 SDK. The 3.0.2 release has been out since July 2021 but ESPHome just
did not bump the default until now.
FastLED
-------
Due to the Arduino bump, the FastLED library suffers issues when running on ESP8266
on Arduino 3+. Because of this there is now a restriction on the ``fastled_clockless``
and ``fastled_spi`` components to only allow using them if you change the arduino version
back to 2.7.4 or lower. This will be in place until the library can update and fix the
issues. See the :doc:`documentation </components/light/fastled>` for information on how
to continue using the lights.
Improv serial Wi-Fi scan
------------------------
Improv serial has been updated to be able to start a Wi-Fi scan and send the results
back to the improv client so the user can select the network SSID instead of having to type it in.
Tuya Multi multi-datapoint
--------------------------
Some work was done on the tuya component to support devices that send all of their
datapoints in a single message. This allows for more devices to be supported and should
not cause issues with existing devices but please create an issue if it does.
Debug Sensors Breaking change
-----------------------------
The sub-sensors of the ``debug`` have been moved to their respective component platforms.
Please see the :doc:`documentation </components/debug>` page for the new way to configure them.
Full list of changes
--------------------
New Features
^^^^^^^^^^^^
- Add initial_run to regular lambda light effect :esphomepr:`3059` by :ghuser:`jesserockz` (new-feature)
- Support simple transparent pngs for display :esphomepr:`3035` by :ghuser:`jesserockz` (new-feature)
- Add restore_mode to fan component :esphomepr:`3051` by :ghuser:`joshuaspence` (new-feature)
- slow_pwm: allow to restart a cycle on state change :esphomepr:`3004` by :ghuser:`Chupaka` (new-feature)
- Command retain option for MQTT component :esphomepr:`3078` by :ghuser:`VitaliyKurokhtin` (new-feature)
- Esp32cam full control :esphomepr:`3090` by :ghuser:`dav-id-org` (new-feature)
- Configurable HTTP redirect following :esphomepr:`3100` by :ghuser:`guillempages` (new-feature)
- Add IPv6 for esp-idf framework :esphomepr:`2953` by :ghuser:`HeMan` (new-feature)
- Improv_serial scan and send wifi networks list :esphomepr:`3116` by :ghuser:`jesserockz` (new-feature)
- Inkplate 6 PLUS :esphomepr:`3013` by :ghuser:`jesserockz` (new-feature)
New Components
^^^^^^^^^^^^^^
- Add ektf2232 touchscreen support :esphomepr:`3027` by :ghuser:`jesserockz` (new-integration)
- Wake-on-LAN button :esphomepr:`3030` by :ghuser:`willwill2will54` (new-integration)
- Implement output button :esphomepr:`3109` by :ghuser:`oxan` (new-integration)
- Create base touchscreen component and refactor ektf2232 :esphomepr:`3083` by :ghuser:`jesserockz` (new-integration)
- Add qr code support for displays :esphomepr:`2952` by :ghuser:`wjtje` (new-integration)
- Add Xiaomi MHOC303 sensor e-ink clock :esphomepr:`3115` by :ghuser:`drug123` (new-integration)
- Add new Lock core component :esphomepr:`2958` by :ghuser:`kbickar` (new-integration)
- Added RadonEye RD200 Component :esphomepr:`3119` by :ghuser:`jeffeb3` (new-integration)
- MLX90393 three-axis magnetometer :esphomepr:`2770` by :ghuser:`functionpointer` (new-integration)
- Add Lilygo t5 4.7 Touchscreen :esphomepr:`3084` by :ghuser:`jesserockz` (new-integration)
- Add Select for modbus :esphomepr:`3032` by :ghuser:`stegm` (new-integration)
- Add max9611 High Side Current Shunt ADC :esphomepr:`2705` by :ghuser:`mckaymatthew` (new-integration)
Breaking Changes
^^^^^^^^^^^^^^^^
- [TCS34725] remove duplicated endian conversion :esphomepr:`3037` by :ghuser:`martgras` (breaking-change)
- TSL2591 automatic gain control :esphomepr:`3071` by :ghuser:`Azimath` (breaking-change)
- [debug] Refactor debug sensors to use the normal sensor model. :esphomepr:`3162` by :ghuser:`mknjc` (breaking-change)
- Allow framework version validator to be maximum version :esphomepr:`3197` by :ghuser:`jesserockz` (breaking-change)
Notable Changes
^^^^^^^^^^^^^^^
- ESP8266 Set recommended framework to 3.0.2 :esphomepr:`2606` by :ghuser:`OttoWinter` (notable-change)
- Handle Tuya multi-datapoint messages :esphomepr:`3159` by :ghuser:`ssieb` (notable-change)
Beta Changes
^^^^^^^^^^^^
- Enable mDNS during OTA safe mode :esphomepr:`3146` by :ghuser:`OttoWinter`
- Try fix canbus config validation :esphomepr:`3173` by :ghuser:`jesserockz`
- Bump aioesphomeapi from 10.8.1 to 10.8.2 :esphomepr:`3182` by :ghuser:`dependabot[bot]`
- Clamp rotary_encoder restored value to min and max :esphomepr:`3184` by :ghuser:`jesserockz`
- Make generating combined binary output verbose :esphomepr:`3127` by :ghuser:`OttoWinter`
- Allow framework version validator to be maximum version :esphomepr:`3197` by :ghuser:`jesserockz` (breaking-change)
- Fix strlcpy() uses to make long SSIDs and passwords work :esphomepr:`3199` by :ghuser:`mmakaay`
- Update HA addon token :esphomepr:`3200` by :ghuser:`jesserockz`
All changes
^^^^^^^^^^^
- Bump pytest-asyncio from 0.16.0 to 0.17.0 :esphomepr:`3047` by :ghuser:`dependabot[bot]`
- Fix argument order in gitpod config file :esphomepr:`3058` by :ghuser:`oxan`
- Bump pytest-asyncio from 0.17.0 to 0.17.2 :esphomepr:`3064` by :ghuser:`dependabot[bot]`
- Fix calibration parameter for bme680 humidity calculation :esphomepr:`3069` by :ghuser:`cwitting`
- Bump improv library version :esphomepr:`3072` by :ghuser:`jesserockz`
- API: Expect a name for connections :esphomepr:`2533` by :ghuser:`OttoWinter`
- AM43: autoload "sensor" to avoid compile errors :esphomepr:`3077` by :ghuser:`buxtronix`
- Add initial_run to regular lambda light effect :esphomepr:`3059` by :ghuser:`jesserockz` (new-feature)
- Support simple transparent pngs for display :esphomepr:`3035` by :ghuser:`jesserockz` (new-feature)
- Bump aioesphomeapi from 10.6.0 to 10.8.0 :esphomepr:`3081` by :ghuser:`dependabot[bot]`
- Add ektf2232 touchscreen support :esphomepr:`3027` by :ghuser:`jesserockz` (new-integration)
- Implement IPv6 sockets for lwIP :esphomepr:`3015` by :ghuser:`HeMan`
- Allow multiple configs for cd74hc4067 :esphomepr:`3085` by :ghuser:`jesserockz`
- Wake-on-LAN button :esphomepr:`3030` by :ghuser:`willwill2will54` (new-integration)
- Add restore_mode to fan component :esphomepr:`3051` by :ghuser:`joshuaspence` (new-feature)
- slow_pwm: allow to restart a cycle on state change :esphomepr:`3004` by :ghuser:`Chupaka` (new-feature)
- Enable readability-const-return-type check :esphomepr:`3099` by :ghuser:`oxan`
- Enable readability-qualified-auto check :esphomepr:`3095` by :ghuser:`oxan`
- Enable readability-redundant-member-init check :esphomepr:`3097` by :ghuser:`oxan`
- Enable readability-named-parameter check :esphomepr:`3098` by :ghuser:`oxan`
- Enable readability-redundant-access-specifiers check :esphomepr:`3096` by :ghuser:`oxan`
- Command retain option for MQTT component :esphomepr:`3078` by :ghuser:`VitaliyKurokhtin` (new-feature)
- Refactor fan platform to resemble climate/cover platforms :esphomepr:`2848` by :ghuser:`oxan`
- Rename WEBSERVER_PORT define to USE_WEBSERVER_PORT :esphomepr:`3102` by :ghuser:`oxan`
- Fix path to extra_scripts in platformio.ini :esphomepr:`3093` by :ghuser:`oxan`
- Generate ARDUINO_VERSION_CODE in Python code :esphomepr:`3101` by :ghuser:`oxan`
- Add cv.require_esphome_version helper :esphomepr:`3103` by :ghuser:`oxan`
- Bump aioesphomeapi from 10.8.0 to 10.8.1 :esphomepr:`3110` by :ghuser:`dependabot[bot]`
- Remove unused polling_component_schema from modbus number :esphomepr:`3108` by :ghuser:`martgras`
- Force braces around multi-line statements :esphomepr:`3094` by :ghuser:`oxan`
- Make CallbackManager invocable :esphomepr:`3089` by :ghuser:`oxan`
- Implement output button :esphomepr:`3109` by :ghuser:`oxan` (new-integration)
- Add increment_day function to ESPTime :esphomepr:`2955` by :ghuser:`RebbePod`
- [TCS34725] remove duplicated endian conversion :esphomepr:`3037` by :ghuser:`martgras` (breaking-change)
- Perform merges when substituting dict keys :esphomepr:`3062` by :ghuser:`joshuaspence`
- Esp32cam full control :esphomepr:`3090` by :ghuser:`dav-id-org` (new-feature)
- Fix config merging with null :esphomepr:`3113` by :ghuser:`joshuaspence`
- Configurable HTTP redirect following :esphomepr:`3100` by :ghuser:`guillempages` (new-feature)
- Add IPv6 for esp-idf framework :esphomepr:`2953` by :ghuser:`HeMan` (new-feature)
- Add support for additional colors on GROW R503 :esphomepr:`3087` by :ghuser:`Zebble`
- Add Heap Sensors - free/max block/fragmentation :esphomepr:`1578` by :ghuser:`micronen`
- Create base touchscreen component and refactor ektf2232 :esphomepr:`3083` by :ghuser:`jesserockz` (new-integration)
- Add qr code support for displays :esphomepr:`2952` by :ghuser:`wjtje` (new-integration)
- ESP8266 Set recommended framework to 3.0.2 :esphomepr:`2606` by :ghuser:`OttoWinter` (notable-change)
- TSL2591 automatic gain control :esphomepr:`3071` by :ghuser:`Azimath` (breaking-change)
- set adc width to 13 bits for esp32-s2 :esphomepr:`3117` by :ghuser:`martgras`
- Fix lint for TSL2591 :esphomepr:`3118` by :ghuser:`OttoWinter`
- Add Xiaomi MHOC303 sensor e-ink clock :esphomepr:`3115` by :ghuser:`drug123` (new-integration)
- Logically group and document helper functions :esphomepr:`3112` by :ghuser:`oxan`
- Add support for Waveshare 7.5in-bv2 :esphomepr:`3121` by :ghuser:`Eriner`
- Bump docker dependencies :esphomepr:`3131` by :ghuser:`OttoWinter`
- Bump pytest-mock from 3.6.1 to 3.7.0 :esphomepr:`3128` by :ghuser:`dependabot[bot]`
- Improv_serial scan and send wifi networks list :esphomepr:`3116` by :ghuser:`jesserockz` (new-feature)
- Disable platformio ldf for build :esphomepr:`3130` by :ghuser:`OttoWinter`
- Bump esp-idf framework version from 4.3.0 to 4.3.2 :esphomepr:`3120` by :ghuser:`OttoWinter`
- Bump pre-commit flake8 from 3.8.4 to 4.0.1 :esphomepr:`3149` by :ghuser:`OttoWinter`
- Bump black from 21.12b0 to 22.1.0 :esphomepr:`3147` by :ghuser:`dependabot[bot]`
- Fix ESP32C3 toolchain requires stdarg import in helpers :esphomepr:`3151` by :ghuser:`OttoWinter`
- Add new Lock core component :esphomepr:`2958` by :ghuser:`kbickar` (new-integration)
- Add device class support to Switch :esphomepr:`3012` by :ghuser:`frenck`
- Handle Tuya multi-datapoint messages :esphomepr:`3159` by :ghuser:`ssieb` (notable-change)
- Bump improv library to 1.2.1 :esphomepr:`3160` by :ghuser:`jesserockz`
- Fix copy_file_if_changed src permissions copied too :esphomepr:`3161` by :ghuser:`OttoWinter`
- [debug] Refactor debug sensors to use the normal sensor model. :esphomepr:`3162` by :ghuser:`mknjc` (breaking-change)
- Added RadonEye RD200 Component :esphomepr:`3119` by :ghuser:`jeffeb3` (new-integration)
- Text sensor schema generator similar to sensor :esphomepr:`3172` by :ghuser:`jesserockz`
- wifi_info, reduce polling interval :esphomepr:`3165` by :ghuser:`jbergler`
- MLX90393 three-axis magnetometer :esphomepr:`2770` by :ghuser:`functionpointer` (new-integration)
- Enable mDNS during OTA safe mode :esphomepr:`3146` by :ghuser:`OttoWinter`
- Dont warn on nonnull comparisons :esphomepr:`3123` by :ghuser:`jesserockz`
- Add require response option for BLE binary output :esphomepr:`3091` by :ghuser:`AshtonKem`
- Add Lilygo t5 4.7 Touchscreen :esphomepr:`3084` by :ghuser:`jesserockz` (new-integration)
- Add Select for modbus :esphomepr:`3032` by :ghuser:`stegm` (new-integration)
- Add max9611 High Side Current Shunt ADC :esphomepr:`2705` by :ghuser:`mckaymatthew` (new-integration)
- Inkplate 6 PLUS :esphomepr:`3013` by :ghuser:`jesserockz` (new-feature)
- Implement MQTT discovery object_id generator :esphomepr:`3114` by :ghuser:`akomelj`
- Fix files CI after merging :esphomepr:`3175` by :ghuser:`jesserockz`
- Try fix canbus config validation :esphomepr:`3173` by :ghuser:`jesserockz`
- Bump pytest from 6.2.5 to 7.0.0 :esphomepr:`3163` by :ghuser:`dependabot[bot]`
- Bump pytest-asyncio from 0.17.2 to 0.18.0 :esphomepr:`3168` by :ghuser:`dependabot[bot]`
- Allow to set manufacturer data for BLEAdvertising :esphomepr:`3179` by :ghuser:`ashald`
- Change most references from hassio to ha-addon :esphomepr:`3178` by :ghuser:`jesserockz`
- Bump aioesphomeapi from 10.8.1 to 10.8.2 :esphomepr:`3182` by :ghuser:`dependabot[bot]`
- Clamp rotary_encoder restored value to min and max :esphomepr:`3184` by :ghuser:`jesserockz`
- Make generating combined binary output verbose :esphomepr:`3127` by :ghuser:`OttoWinter`
- Allow framework version validator to be maximum version :esphomepr:`3197` by :ghuser:`jesserockz` (breaking-change)
- Fix strlcpy() uses to make long SSIDs and passwords work :esphomepr:`3199` by :ghuser:`mmakaay`
- Update HA addon token :esphomepr:`3200` by :ghuser:`jesserockz`
Past Changelogs
---------------
- :doc:`2022.1.0`
- :doc:`2021.12.0`
- :doc:`2021.11.0`
- :doc:`2021.10.0`
- :doc:`2021.9.0`
- :doc:`2021.8.0`
- :doc:`v1.20.0`
- :doc:`v1.19.0`
- :doc:`v1.18.0`
- :doc:`v1.17.0`
- :doc:`v1.16.0`
- :doc:`v1.15.0`
- :doc:`v1.14.0`
- :doc:`v1.13.0`
- :doc:`v1.12.0`
- :doc:`v1.11.0`
- :doc:`v1.10.0`
- :doc:`v1.9.0`
- :doc:`v1.8.0`
- :doc:`v1.7.0`

View File

@ -2,7 +2,7 @@ Changelog
=========
.. redirect::
:url: /changelog/2022.1.0.html
:url: /changelog/2022.2.0.html
.. toctree::
:glob:

11
conf.py
View File

@ -81,7 +81,16 @@ language = "en"
# List of patterns, relative to source directory, that match files and
# directories to ignore when looking for source files.
# This patterns also effect to html_static_path and html_extra_path
exclude_patterns = ["_build", "Thumbs.db", ".DS_Store", 'env', 'venv', 'ENV', '.venv', '.env']
exclude_patterns = [
"_build",
"Thumbs.db",
".DS_Store",
"env",
"venv",
"ENV",
".venv",
".env",
]
# The reST default role (used for this markup: `text`) to use for all documents.
# default_role = 'cpp:any'

View File

@ -68,6 +68,7 @@ Contributors
- `Andy Allsopp (@arallsopp) <https://github.com/arallsopp>`__
- `arantius (@arantius) <https://github.com/arantius>`__
- `arunderwood (@arunderwood) <https://github.com/arunderwood>`__
- `Borys Pierov (@ashald) <https://github.com/ashald>`__
- `Ash McKenzie (@ashmckenzie) <https://github.com/ashmckenzie>`__
- `Ashton Kemerling (@AshtonKem) <https://github.com/AshtonKem>`__
- `Pavel Pletenev (@ASMfreaK) <https://github.com/ASMfreaK>`__
@ -88,6 +89,7 @@ Contributors
- `bazuchan (@bazuchan) <https://github.com/bazuchan>`__
- `Viktr (@BbIKTOP) <https://github.com/BbIKTOP>`__
- `J. Nick Koston (@bdraco) <https://github.com/bdraco>`__
- `Benno Pütz (@bennop) <https://github.com/bennop>`__
- `Ben Suffolk (@bensuffolk) <https://github.com/bensuffolk>`__
- `Arturo Casal (@berfenger) <https://github.com/berfenger>`__
- `Ivan Bessarabov (@bessarabov) <https://github.com/bessarabov>`__
@ -314,10 +316,10 @@ Contributors
- `Arjan Filius (@iafilius) <https://github.com/iafilius>`__
- `Adrián Panella (@ianchi) <https://github.com/ianchi>`__
- `Ian Leeder (@ianleeder) <https://github.com/ianleeder>`__
- `Jan Pobořil (@iBobik) <https://github.com/iBobik>`__
- `igg (@igg) <https://github.com/igg>`__
- `Petko Bordjukov (@ignisf) <https://github.com/ignisf>`__
- `ikatkov (@ikatkov) <https://github.com/ikatkov>`__
- `Michael (@imeekle) <https://github.com/imeekle>`__
- `imgbot[bot] (@imgbot[bot]) <https://github.com/imgbot[bot]>`__
- `Lorenzo Ortiz (@Infinitte) <https://github.com/Infinitte>`__
- `irtimaled (@irtimaled) <https://github.com/irtimaled>`__
@ -586,6 +588,7 @@ Contributors
- `probonopd (@probonopd) <https://github.com/probonopd>`__
- `Peter Stuifzand (@pstuifzand) <https://github.com/pstuifzand>`__
- `Peter Tatrai (@ptatrai) <https://github.com/ptatrai>`__
- `Patrick Toal (@ptoal) <https://github.com/ptoal>`__
- `Leandro Puerari (@puerari) <https://github.com/puerari>`__
- `puuu (@puuu) <https://github.com/puuu>`__
- `Qc (@qc24) <https://github.com/qc24>`__
@ -783,7 +786,6 @@ Contributors
- `Pavel (@yekm) <https://github.com/yekm>`__
- `Atsuko Ito (@yottatsa) <https://github.com/yottatsa>`__
- `Nico B (@youknow0) <https://github.com/youknow0>`__
- `YuanL.Lee (@yuanl) <https://github.com/yuanl>`__
- `Yuval Aboulafia (@yuvalabou) <https://github.com/yuvalabou>`__
- `zaluthar (@zaluthar) <https://github.com/zaluthar>`__
- `david reid (@zathras777) <https://github.com/zathras777>`__
@ -792,4 +794,4 @@ Contributors
- `San (@zhujunsan) <https://github.com/zhujunsan>`__
- `Christian Zufferey (@zuzu59) <https://github.com/zuzu59>`__
*This page was last updated February 9, 2022.*
*This page was last updated February 16, 2022.*

500
images/qr-code.svg Normal file
View File

@ -0,0 +1,500 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
width="464px" height="464px" viewBox="0 0 464 464" enable-background="new 0 0 464 464" xml:space="preserve">
<rect x="0" y="0" width="464" height="464" fill="rgb(255,255,255)" /><g transform="translate(32,32)"><g transform="translate(128,0) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(144,0) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(176,0) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(224,0) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(240,0) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(256,0) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(144,16) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(160,16) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(176,16) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(192,16) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(256,16) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(144,32) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(176,32) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(224,32) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(240,32) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(256,32) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(128,48) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(256,48) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(128,64) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(224,64) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(240,64) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(256,64) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(128,80) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(144,80) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(160,80) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(176,80) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(192,80) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(128,96) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(160,96) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(192,96) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(224,96) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(256,96) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(128,112) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(160,112) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(176,112) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(208,112) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(0,128) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(64,128) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(96,128) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(112,128) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(128,128) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(176,128) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(208,128) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(240,128) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(272,128) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(288,128) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(304,128) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(320,128) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(336,128) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(384,128) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(0,144) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(16,144) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(32,144) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(48,144) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(64,144) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(80,144) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(112,144) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(144,144) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(160,144) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(192,144) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(208,144) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(224,144) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(240,144) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(272,144) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(320,144) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(336,144) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(368,144) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(0,160) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(16,160) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(48,160) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(80,160) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(96,160) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(112,160) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(240,160) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(272,160) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(304,160) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(336,160) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(352,160) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(0,176) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(64,176) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(80,176) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(112,176) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(176,176) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(224,176) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(240,176) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(288,176) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(304,176) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(352,176) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(368,176) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(0,192) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(48,192) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(96,192) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(112,192) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(128,192) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(144,192) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(176,192) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(208,192) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(224,192) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(272,192) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(288,192) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(304,192) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(336,192) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(352,192) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(368,192) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(384,192) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(0,208) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(32,208) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(48,208) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(80,208) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(112,208) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(128,208) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(144,208) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(192,208) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(240,208) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(256,208) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(272,208) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(320,208) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(368,208) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(32,224) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(48,224) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(96,224) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(112,224) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(144,224) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(160,224) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(176,224) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(192,224) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(208,224) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(224,224) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(240,224) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(272,224) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(304,224) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(320,224) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(336,224) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(352,224) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(32,240) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(48,240) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(64,240) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(128,240) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(160,240) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(176,240) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(208,240) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(240,240) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(272,240) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(304,240) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(320,240) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(352,240) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(368,240) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(0,256) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(16,256) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(48,256) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(64,256) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(80,256) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(96,256) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(112,256) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(128,256) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(144,256) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(192,256) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(208,256) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(240,256) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(256,256) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(272,256) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(288,256) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(304,256) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(320,256) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(336,256) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(352,256) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(128,272) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(144,272) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(160,272) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(208,272) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(224,272) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(256,272) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(320,272) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(128,288) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(256,288) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(288,288) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(320,288) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(144,304) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(192,304) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(224,304) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(256,304) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(320,304) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(336,304) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(352,304) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(368,304) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(384,304) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(128,320) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(176,320) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(208,320) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(224,320) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(256,320) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(272,320) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(288,320) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(304,320) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(320,320) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(336,320) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(352,320) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(384,320) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(192,336) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(240,336) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(256,336) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(272,336) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(288,336) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(304,336) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(352,336) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(368,336) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(384,336) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(144,352) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(176,352) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(192,352) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(208,352) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(224,352) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(272,352) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(288,352) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(336,352) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(368,352) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(144,368) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(160,368) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(176,368) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(208,368) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(240,368) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(272,368) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(288,368) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(304,368) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(320,368) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(336,368) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(352,368) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(368,368) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(128,384) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(144,384) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(192,384) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(208,384) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(240,384) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(288,384) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(352,384) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(368,384) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(384,384) scale(0.16,0.16)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(0,0) scale(1.12, 1.12)"><g transform="" style="fill: rgb(0, 0, 0);">
<g>
<rect x="15" y="15" style="fill:none;" width="70" height="70"/>
<path d="M85,0H15H0v15v70v15h15h70h15V85V15V0H85z M85,85H15V15h70V85z"/>
</g>
</g></g><g transform="translate(288,0) scale(1.12, 1.12)"><g transform="" style="fill: rgb(0, 0, 0);">
<g>
<rect x="15" y="15" style="fill:none;" width="70" height="70"/>
<path d="M85,0H15H0v15v70v15h15h70h15V85V15V0H85z M85,85H15V15h70V85z"/>
</g>
</g></g><g transform="translate(0,288) scale(1.12, 1.12)"><g transform="" style="fill: rgb(0, 0, 0);">
<g>
<rect x="15" y="15" style="fill:none;" width="70" height="70"/>
<path d="M85,0H15H0v15v70v15h15h70h15V85V15V0H85z M85,85H15V15h70V85z"/>
</g>
</g></g><g transform="translate(32,32) scale(0.48, 0.48)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(320,32) scale(0.48, 0.48)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g><g transform="translate(32,320) scale(0.48, 0.48)"><g transform="" style="fill: rgb(0, 0, 0);">
<rect width="100" height="100"/>
</g></g></g></svg>

After

Width:  |  Height:  |  Size: 33 KiB