text:
// <copyright file="FirefoxProfileManager.cs" company="WebDriver Committers">
// Licensed to the Software Freedom Conservancy (SFC) under one
// or more contributor license agreements. See the NOTICE file
// distributed with this work for additional information
// regarding copyright ownership. The SFC licenses this file
// to you under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
// </copyright>

using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.IO;
using OpenQA.Selenium.Firefox.Internal;

namespace OpenQA.Selenium.Firefox
{
    /// <summary>
    /// Allows the user to enumerate and access existing named Firefox profiles.
    /// </summary>
    public class FirefoxProfileManager
    {
        private Dictionary<string, string> profiles = new Dictionary<string, string>();

        /// <summary>
        /// Initializes a new instance of the <see cref="FirefoxProfileManager"/> class.
        /// </summary>
        public FirefoxProfileManager()
        {
            string appDataDirectory = GetApplicationDataDirectory();
            this.ReadProfiles(appDataDirectory);
        }

        /// <summary>
        /// Gets a <see cref="ReadOnlyCollection{T}"/> containing <see cref="FirefoxProfile">FirefoxProfiles</see>
        /// representing the existing named profiles for Firefox.
        /// </summary>
        public ReadOnlyCollection<string> ExistingProfiles
        {
            get
            {
                List<string> profileList = new List<string>(this.profiles.Keys);
                return profileList.AsReadOnly();
            }
        }

        /// <summary>
        /// Gets a <see cref="FirefoxProfile"/> with a given name.
        /// </summary>
        /// <param name="profileName">The name of the profile to get.</param>
        /// <returns>A <see cref="FirefoxProfile"/> with a given name.
        /// Returns <see langword="null"/> if no profile with the given name exists.</returns>
        public FirefoxProfile GetProfile(string profileName)
        {
            FirefoxProfile profile = null;
            if (!string.IsNullOrEmpty(profileName))
            {
                if (this.profiles.ContainsKey(profileName))
                {
                    profile = new FirefoxProfile(this.profiles[profileName]);
                }
            }

            return profile;
        }

        private static string GetApplicationDataDirectory()
        {
            string appDataDirectory = string.Empty;
            switch (Environment.OSVersion.Platform)
            {
                case PlatformID.Unix:
                    appDataDirectory = Path.Combine(".mozilla", "firefox");
                    break;

                case PlatformID.MacOSX:
                    appDataDirectory = Path.Combine("Library", Path.Combine("Application Support", "Firefox"));
                    break;

                default:
                    appDataDirectory = Path.Combine("Mozilla", "Firefox");
                    break;
            }

            return Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), appDataDirectory);
        }

        private void ReadProfiles(string appDataDirectory)
        {
            string profilesIniFile = Path.Combine(appDataDirectory, "profiles.ini");
            if (File.Exists(profilesIniFile))
            {
                IniFileReader reader = new IniFileReader(profilesIniFile);
                ReadOnlyCollection<string> sectionNames = reader.SectionNames;
                foreach (string sectionName in sectionNames)
                {
                    if (sectionName.StartsWith("profile", StringComparison.OrdinalIgnoreCase))
                    {
                        string name = reader.GetValue(sectionName, "name");
                        bool isRelative = reader.GetValue(sectionName, "isrelative") == "1";
                        string profilePath = reader.GetValue(sectionName, "path");
                        string fullPath = string.Empty;
                        if (isRelative)
                        {
                            fullPath = Path.Combine(appDataDirectory, profilePath);
                        }
                        else
                        {
                            fullPath = profilePath;
                        }

                        this.profiles.Add(name, fullPath);
                    }
                }
            }
        }
    }
}

repository: SeleniumHQ/selenium

repo_name: SeleniumHQ/selenium

branch_name: refs/heads/trunk

gha_language: Java


text:
using System;
using UnityEngine;
using System.IO;
using System.Collections;
using System.Collections.Generic;
using System.Text;
using TimerUtils;
using UnityEngine.Networking;

public partial class WWWFileDownloader
{
    private Uri baseUri;
    private int maxTaskCount;

    public virtual Uri BaseUri
    {
        get { return this.baseUri; }
        set
        {
            if (value == null)
                throw new NotSupportedException(string.Format("Invalid uri:{0}", value == null ? "null" : value.OriginalString));

            this.baseUri = value;
        }
    }
    //存储的位置,是Persist+Dir组成，由/结尾
    public string SavedDir;

    public virtual int MaxTaskCount
    {
        get { return this.maxTaskCount; }
        set { this.maxTaskCount = Mathf.Max(value > 0 ? value : SystemInfo.processorCount * 2, 1); }
    }

    public WWWFileDownloader() : this(null, "")
    {
    }

    //存储的位置,是Persist+Dir组成，由/结尾
    public WWWFileDownloader(Uri baseUri, string savedDir)
    {
        this.BaseUri = baseUri;
        this.maxTaskCount = SystemInfo.processorCount * 2;
        this.SavedDir = savedDir;
    }

    protected virtual string GetAbsoluteUri(string relativePath)
    {
        string path = this.BaseUri.AbsoluteUri;
        if (this.BaseUri.Scheme.Equals("jar") && !path.StartsWith("jar:file://"))
            path = path.Replace("jar:file:", "jar:file://");

        if (path.EndsWith("/"))
            return path + relativePath;
        return path + "/" + relativePath;
    }

    /// <summary>
    /// 允许传入progress用于添加回调函数
    /// </summary>
    /// <param name="bundles"></param>
    /// <param name="progress"></param>
    /// <returns></returns>
    public DownloaderProgress StartDownloadFile(List<DownloadFileInfo> bundles, DownloaderProgress progress = null)
    {
        if (progress == null) progress = new DownloaderProgress();
        //TaskManager.Instance.CreateTask(IDownloadAllFiles(bundles, progress));
        return progress;
    }
    /// <summary>
    /// 允许传入progress用于添加回调函数
    /// </summary>
    /// <param name="bundles"></param>
    /// <param name="progress"></param>
    /// <returns></returns>
    /*public DownloaderProgress StartDownloadFile(List<DownloadFileInfo> bundles, MonoBehaviour followedTarget
        , FollowTargetMode followMode = FollowTargetMode.TargetDisactiveDoNothing, DownloaderProgress progress = null)
    {
        if (progress == null) progress = new DownloaderProgress();
        GameTaskManager.Instance.CreateTask(IDownloadAllFiles(bundles, progress), followedTarget, followMode);
        return progress;
    }

    public DownloaderProgress StartHttpGetText(string fileName, DownloaderProgress progress = null)
    {
        if (progress == null) progress = new DownloaderProgress();
        GameTaskManager.Instance.CreateTask(IHTTPGetFile(fileName, progress));
        return progress;
    }
    public DownloaderProgress StartHttpGetText(string fileName, MonoBehaviour followedTarget
        , FollowTargetMode followMode = FollowTargetMode.TargetDisactiveDoNothing, DownloaderProgress progress = null)
    {
        if (progress == null) progress = new DownloaderProgress();
        GameTaskManager.Instance.CreateTask(IHTTPGetFile(fileName, progress), followedTarget, followMode);
        return progress;
    }

    public DownloaderProgress StartHttpGetRaw(string fileName, DownloaderProgress progress = null)
    {
        if (progress == null) progress = new DownloaderProgress();
        GameTaskManager.Instance.CreateTask(IHTTPGetFile(fileName, progress));
        return progress;
    }
    public DownloaderProgress StartHttpGetRaw(string fileName, MonoBehaviour followedTarget
        , FollowTargetMode followMode = FollowTargetMode.TargetDisactiveDoNothing, DownloaderProgress progress = null)
    {
        if (progress == null) progress = new DownloaderProgress();
        GameTaskManager.Instance.CreateTask(IHTTPGetFile(fileName, progress), followedTarget, followMode);
        return progress;
    }*/

    protected virtual IEnumerator IHTTPGetFile(string relativePath, DownloaderProgress outProgress, bool isSaveResult = false)
    {
        outProgress.UpdateProgress();
        byte[] data;
        string path = this.GetAbsoluteUri(relativePath);

        using (UnityWebRequest www = new UnityWebRequest(path))
        {
            www.downloadHandler = new DownloadHandlerBuffer();
            www.SendWebRequest();
            while (!www.isDone)
            {
                if (www.downloadProgress >= 0)
                {
                    if (outProgress.TotalSize <= 0)
                    {
                        outProgress.InitCompletedSize((long)(www.downloadedBytes / www.downloadProgress), (long)www.downloadedBytes);
                    }
                    outProgress.RealCompletedSize = (long)www.downloadedBytes;
                    outProgress.UpdateProgress();
                }
                yield return null;
            }

            if (!string.IsNullOrEmpty(www.error))
            {
                outProgress.SetException(www.error, eWWWErrorType.DownloadNetError);
                yield break;
            }

            data = www.downloadHandler.data;
        }
        outProgress.SetRaw(data);
    }

    static int resDownloadGcCounter = 0;
    /// <summary>
    /// 每下载20个文件后gc一次
    /// </summary>
    readonly int resDownloadGcTriggerNum = 20;
    protected IEnumerator IDownloadAllFiles(List<DownloadFileInfo> files, DownloaderProgress outprogress)
    {
        long totalSize = 0;
        long downloadedSize = 0;
        List<DownloadFileInfo> list = new List<DownloadFileInfo>();
        for (int i = 0; i < files.Count; i++)
        {
            var info = files[i];
            totalSize += info.FileSize;

            if (UnityPersistFileHelper.IsPersistAssetFileExist(SavedDir, info.FileName))
            {
                downloadedSize += info.FileSize;
                continue;
            }

            list.Add(info);
        }

        outprogress.InitCompletedSize(totalSize, downloadedSize);

        List<KeyValuePair<DownloadFileInfo, UnityWebRequest>> tasks = new List<KeyValuePair<DownloadFileInfo, UnityWebRequest>>();
        for (int i = 0; i < list.Count; i++)
        {
            var bundleInfo = list[i];

            UnityWebRequest www;
            //我们的Bundle是基于Hash命名的，无需在意Cache
            www = new UnityWebRequest(GetAbsoluteUri(bundleInfo.FileName));
            www.downloadHandler = new DownloadHandlerBuffer();

            www.SendWebRequest();
            tasks.Add(new KeyValuePair<DownloadFileInfo, UnityWebRequest>(bundleInfo, www));

            while (tasks.Count >= this.MaxTaskCount || (i == list.Count - 1 && tasks.Count > 0))
            {
                //判断暂停
                while (outprogress.IsPause)
                {
                    yield return new WaitForSeconds(0.1f);//WaitingForSecondConst.RWaitMS100;
                }

                if (outprogress.IsStop)
                {
                    yield break;
                }

                long tmpSize = 0;
                for (int j = tasks.Count - 1; j >= 0; j--)
                {
                    var task = tasks[j];
                    var _bundleInfo = task.Key;
                    UnityWebRequest _www = task.Value;

                    if (!_www.isDone)
                    {
                        tmpSize += Math.Max(0, (long)(_www.downloadProgress * _bundleInfo.FileSize));

                        continue;
                    }

                    tasks.RemoveAt(j);
                    downloadedSize += _bundleInfo.FileSize;
                    if (!string.IsNullOrEmpty(_www.error))
                    {
                        outprogress.SetException((_www.error), eWWWErrorType.DownloadNetError);

                        CommonLog.Error("Downloads File '{0}' failure from the address '{1}'.Reason:{2}", _bundleInfo.FileName, GetAbsoluteUri(_bundleInfo.FileName), _www.error);
                        yield break;
                    }

                    try
                    {
                        {
                            string fileName = _bundleInfo.FileName;
                            string tempName = new Guid().ToString() + ".download";

                            var pathRoot = UnityPersistFileHelper.GetPersistAssetFilePath(SavedDir, "");
                            //删了旧文件
                            FileUtils.DeleteFile(pathRoot + fileName);
                            //写到临时文件
                            FileUtils.WriteAllBytes(pathRoot + tempName, _www.downloadHandler.data);
                            //写完改名字
                            FileUtils.RenameFile(pathRoot, tempName, fileName);
                        }
                        if (resDownloadGcCounter++ >= resDownloadGcTriggerNum)
                        {
                            resDownloadGcCounter = 0;
                            GC.Collect();
                        }
                    }
                    catch (Exception e)
                    {
                        outprogress.SetException(e, eWWWErrorType.WriteFileError);
                        CommonLog.Error("Downloads File '{0}' failure from the address '{1}'.Reason:{2}", _bundleInfo.FileName, GetAbsoluteUri(_bundleInfo.FileName), e);
                        yield break;
                    }
                    finally
                    {
                        // 卸载资源
                        if (_www != null)
                        {
                            _www.Dispose();
                            _www = null;
                        }
                    }
                }

                outprogress.RealCompletedSize = downloadedSize + tmpSize;
                outprogress.UpdateProgress();

                yield return new WaitForSeconds(0.1f);//WaitingForSecondConst.RWaitMS100;
            }
        }
        outprogress.SetRaw(null);
    }
}

license: MIT

license_type: permissive

branch_name: refs/heads/master

extension: cs


text:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE eagle SYSTEM "eagle.dtd">
<eagle version="7.2.0">
<drawing>
<settings>
<setting alwaysvectorfont="no"/>
<setting verticaltext="up"/>
</settings>
<grid distance="0.025" unitdist="inch" unit="inch" style="lines" multiple="1" display="yes" altdistance="0.000000123031" altunitdist="inch" altunit="inch"/>
<layers>
<layer number="1" name="Top" color="4" fill="1" visible="yes" active="yes"/>
<layer number="2" name="Route2" color="1" fill="3" visible="no" active="no"/>
<layer number="3" name="Route3" color="4" fill="3" visible="no" active="no"/>
<layer number="14" name="Route14" color="1" fill="6" visible="no" active="no"/>
<layer number="15" name="Route15" color="4" fill="6" visible="no" active="no"/>
<layer number="16" name="Bottom" color="1" fill="1" visible="yes" active="yes"/>
<layer number="17" name="Pads" color="2" fill="1" visible="yes" active="yes"/>
<layer number="18" name="Vias" color="2" fill="1" visible="yes" active="yes"/>
<layer number="19" name="Unrouted" color="6" fill="1" visible="yes" active="yes"/>
<layer number="20" name="Dimension" color="15" fill="1" visible="yes" active="yes"/>
<layer number="21" name="tPlace" color="7" fill="1" visible="yes" active="yes"/>
<layer number="22" name="bPlace" color="7" fill="1" visible="yes" active="yes"/>
<layer number="23" name="tOrigins" color="15" fill="1" visible="yes" active="yes"/>
<layer number="24" name="bOrigins" color="15" fill="1" visible="yes" active="yes"/>
<layer number="25" name="tNames" color="7" fill="1" visible="yes" active="yes"/>
<layer number="26" name="bNames" color="7" fill="1" visible="yes" active="yes"/>
<layer number="27" name="tValues" color="7" fill="1" visible="yes" active="yes"/>
<layer number="28" name="bValues" color="7" fill="1" visible="yes" active="yes"/>
<layer number="29" name="tStop" color="7" fill="3" visible="yes" active="yes"/>
<layer number="30" name="bStop" color="7" fill="6" visible="yes" active="yes"/>
<layer number="31" name="tCream" color="7" fill="4" visible="yes" active="yes"/>
<layer number="32" name="bCream" color="7" fill="5" visible="yes" active="yes"/>
<layer number="33" name="tFinish" color="6" fill="3" visible="yes" active="yes"/>
<layer number="34" name="bFinish" color="6" fill="6" visible="yes" active="yes"/>
<layer number="35" name="tGlue" color="7" fill="4" visible="yes" active="yes"/>
<layer number="36" name="bGlue" color="7" fill="5" visible="yes" active="yes"/>
<layer number="37" name="tTest" color="7" fill="1" visible="yes" active="yes"/>
<layer number="38" name="bTest" color="7" fill="1" visible="yes" active="yes"/>
<layer number="39" name="tKeepout" color="4" fill="11" visible="yes" active="yes"/>
<layer number="40" name="bKeepout" color="1" fill="11" visible="yes" active="yes"/>
<layer number="41" name="tRestrict" color="4" fill="10" visible="yes" active="yes"/>
<layer number="42" name="bRestrict" color="1" fill="10" visible="yes" active="yes"/>
<layer number="43" name="vRestrict" color="2" fill="10" visible="yes" active="yes"/>
<layer number="44" name="Drills" color="7" fill="1" visible="yes" active="yes"/>
<layer number="45" name="Holes" color="7" fill="1" visible="yes" active="yes"/>
<layer number="46" name="Milling" color="3" fill="1" visible="yes" active="yes"/>
<layer number="47" name="Measures" color="7" fill="1" visible="yes" active="yes"/>
<layer number="48" name="Document" color="7" fill="1" visible="yes" active="yes"/>
<layer number="49" name="Reference" color="7" fill="1" visible="yes" active="yes"/>
<layer number="50" name="dxf" color="7" fill="1" visible="no" active="no"/>
<layer number="51" name="tDocu" color="7" fill="1" visible="yes" active="yes"/>
<layer number="53" name="tGND_GNDA" color="7" fill="1" visible="no" active="no"/>
<layer number="54" name="bGND_GNDA" color="7" fill="1" visible="no" active="no"/>
<layer number="56" name="wert" color="7" fill="1" visible="no" active="no"/>
<layer number="57" name="tCAD" color="7" fill="1" visible="no" active="no"/>
<layer number="90" name="Modules" color="5" fill="1" visible="no" active="no"/>
<layer number="91" name="Nets" color="2" fill="1" visible="no" active="no"/>
<layer number="92" name="Busses" color="1" fill="1" visible="no" active="no"/>
<layer number="93" name="Pins" color="2" fill="1" visible="no" active="no"/>
<layer number="94" name="Symbols" color="4" fill="1" visible="no" active="no"/>
<layer number="95" name="Names" color="7" fill="1" visible="no" active="no"/>
<layer number="96" name="Values" color="7" fill="1" visible="no" active="no"/>
<layer number="97" name="Info" color="7" fill="1" visible="no" active="no"/>
<layer number="98" name="Guide" color="6" fill="1" visible="no" active="no"/>
<layer number="99" name="SpiceOrder" color="5" fill="1" visible="no" active="no"/>
<layer number="118" name="Rect_Pads" color="7" fill="1" visible="no" active="no"/>
<layer number="153" name="FabDoc1" color="6" fill="1" visible="no" active="no"/>
<layer number="154" name="FabDoc2" color="2" fill="1" visible="no" active="no"/>
<layer number="155" name="FabDoc3" color="7" fill="15" visible="no" active="no"/>
</layers>
<board>
<plain>
<wire x1="0" y1="3" x2="3" y2="0" width="0" layer="20" curve="90"/>
<wire x1="3" y1="0" x2="43" y2="0" width="0" layer="20"/>
<wire x1="47" y1="0" x2="62" y2="0" width="0" layer="20"/>
<wire x1="62" y1="0" x2="65" y2="3" width="0" layer="20" curve="90"/>
<wire x1="65" y1="3" x2="65" y2="53" width="0" layer="20"/>
<wire x1="65" y1="53" x2="62" y2="56" width="0" layer="20" curve="90"/>
<wire x1="62" y1="56" x2="3" y2="56" width="0" layer="20"/>
<wire x1="3" y1="56" x2="0" y2="53" width="0" layer="20" curve="90"/>
<wire x1="0" y1="53" x2="0" y2="37.5" width="0" layer="20"/>
<wire x1="0" y1="37.5" x2="1" y2="36.5" width="0" layer="20" curve="90"/>
<wire x1="1" y1="36.5" x2="4" y2="36.5" width="0" layer="20"/>
<wire x1="4" y1="36.5" x2="5" y2="35.5" width="0" layer="20" curve="-90"/>
<wire x1="5" y1="35.5" x2="5" y2="20.5" width="0" layer="20"/>
<wire x1="5" y1="20.5" x2="4" y2="19.5" width="0" layer="20" curve="-90"/>
<wire x1="4" y1="19.5" x2="1" y2="19.5" width="0" layer="20"/>
<wire x1="1" y1="19.5" x2="0" y2="18.5" width="0" layer="20" curve="90"/>
<wire x1="0" y1="18.5" x2="0" y2="3" width="0" layer="20"/>
<hole x="3.5" y="3.5" drill="2.8"/>
<hole x="3.5" y="52.5" drill="2.8"/>
<hole x="61.5" y="52.5" drill="2.8"/>
<hole x="61.5" y="3.5" drill="2.8"/>
<circle x="3.5" y="52.5" radius="1.55" width="3.1" layer="41"/>
<circle x="61.5" y="52.5" radius="1.55" width="3.1" layer="41"/>
<circle x="61.5" y="3.5" radius="1.55" width="3.1" layer="41"/>
<circle x="3.5" y="3.5" radius="1.55" width="3.1" layer="41"/>
<circle x="3.5" y="3.5" radius="1.55" width="3.1" layer="42"/>
<circle x="3.5" y="52.5" radius="1.55" width="3.1" layer="42"/>
<circle x="61.5" y="3.5" radius="1.55" width="3.1" layer="42"/>
<circle x="61.5" y="52.5" radius="1.55" width="3.1" layer="42"/>
<wire x1="44" y1="19" x2="44" y2="1" width="0" layer="20"/>
<wire x1="46" y1="19" x2="46" y2="1" width="0" layer="20"/>
<wire x1="45" y1="20" x2="46" y2="19" width="0" layer="20" curve="-90"/>
<wire x1="45" y1="20" x2="44" y2="19" width="0" layer="20" curve="90"/>
<wire x1="44" y1="1" x2="43" y2="0" width="0" layer="20" curve="-90"/>
<wire x1="46" y1="1" x2="47" y2="0" width="0" layer="20" curve="90"/>
<wire x1="14.605" y1="48.26" x2="54.61" y2="48.26" width="0.4064" layer="21" style="shortdash"/>
<wire x1="54.61" y1="48.26" x2="54.61" y2="20.32" width="0.4064" layer="21" style="shortdash"/>
<wire x1="54.61" y1="20.32" x2="14.605" y2="20.32" width="0.4064" layer="21" style="shortdash"/>
<wire x1="14.605" y1="20.32" x2="14.605" y2="48.26" width="0.4064" layer="21" style="shortdash"/>
<rectangle x1="30.7975" y1="20.2565" x2="30.9245" y2="20.3835" layer="21"/>
<rectangle x1="30.7975" y1="20.3835" x2="30.9245" y2="20.5105" layer="21"/>
<rectangle x1="30.7975" y1="20.5105" x2="31.0515" y2="20.6375" layer="21"/>
<rectangle x1="30.6705" y1="20.6375" x2="31.1785" y2="20.7645" layer="21"/>
<rectangle x1="30.6705" y1="20.7645" x2="31.1785" y2="20.8915" layer="21"/>
<rectangle x1="30.6705" y1="20.8915" x2="31.1785" y2="21.0185" layer="21"/>
<rectangle x1="30.6705" y1="21.0185" x2="31.1785" y2="21.1455" layer="21"/>
<rectangle x1="30.6705" y1="21.1455" x2="31.1785" y2="21.2725" layer="21"/>
<rectangle x1="30.6705" y1="21.2725" x2="31.1785" y2="21.3995" layer="21"/>
<rectangle x1="30.6705" y1="21.3995" x2="31.1785" y2="21.5265" layer="21"/>
<rectangle x1="30.6705" y1="21.5265" x2="31.1785" y2="21.6535" layer="21"/>
<rectangle x1="30.6705" y1="21.6535" x2="31.1785" y2="21.7805" layer="21"/>
<rectangle x1="30.5435" y1="21.7805" x2="31.1785" y2="21.9075" layer="21"/>
<rectangle x1="30.5435" y1="21.9075" x2="31.3055" y2="22.0345" layer="21"/>
<rectangle x1="30.5435" y1="22.0345" x2="31.3055" y2="22.1615" layer="21"/>
<rectangle x1="30.5435" y1="22.1615" x2="31.3055" y2="22.2885" layer="21"/>
<rectangle x1="30.5435" y1="22.2885" x2="31.3055" y2="22.4155" layer="21"/>
<rectangle x1="30.5435" y1="22.4155" x2="31.3055" y2="22.5425" layer="21"/>
<rectangle x1="30.4165" y1="22.5425" x2="31.3055" y2="22.6695" layer="21"/>
<rectangle x1="30.4165" y1="22.6695" x2="31.3055" y2="22.7965" layer="21"/>
<rectangle x1="30.4165" y1="22.7965" x2="30.9245" y2="22.9235" layer="21"/>
<rectangle x1="31.0515" y1="22.7965" x2="31.3055" y2="22.9235" layer="21"/>
<rectangle x1="39.9415" y1="22.7965" x2="40.0685" y2="22.9235" layer="21"/>
<rectangle x1="30.4165" y1="22.9235" x2="30.9245" y2="23.0505" layer="21"/>
<rectangle x1="31.1785" y1="22.9235" x2="31.4325" y2="23.0505" layer="21"/>
<rectangle x1="39.9415" y1="22.9235" x2="40.0685" y2="23.0505" layer="21"/>
<rectangle x1="30.2895" y1="23.0505" x2="30.9245" y2="23.1775" layer="21"/>
<rectangle x1="31.1785" y1="23.0505" x2="31.4325" y2="23.1775" layer="21"/>
<rectangle x1="39.9415" y1="23.0505" x2="40.1955" y2="23.1775" layer="21"/>
<rectangle x1="30.2895" y1="23.1775" x2="30.9245" y2="23.3045" layer="21"/>
<rectangle x1="31.1785" y1="23.1775" x2="31.4325" y2="23.3045" layer="21"/>
<rectangle x1="39.8145" y1="23.1775" x2="40.1955" y2="23.3045" layer="21"/>
<rectangle x1="30.2895" y1="23.3045" x2="30.9245" y2="23.4315" layer="21"/>
<rectangle x1="31.1785" y1="23.3045" x2="31.4325" y2="23.4315" layer="21"/>
<rectangle x1="39.8145" y1="23.3045" x2="40.1955" y2="23.4315" layer="21"/>
<rectangle x1="30.1625" y1="23.4315" x2="30.7975" y2="23.5585" layer="21"/>
<rectangle x1="31.3055" y1="23.4315" x2="31.4325" y2="23.5585" layer="21"/>
<rectangle x1="39.6875" y1="23.4315" x2="40.3225" y2="23.5585" layer="21"/>
<rectangle x1="30.1625" y1="23.5585" x2="30.7975" y2="23.6855" layer="21"/>
<rectangle x1="31.3055" y1="23.5585" x2="31.5595" y2="23.6855" layer="21"/>
<rectangle x1="39.6875" y1="23.5585" x2="40.3225" y2="23.6855" layer="21"/>
<rectangle x1="30.1625" y1="23.6855" x2="30.7975" y2="23.8125" layer="21"/>
<rectangle x1="31.3055" y1="23.6855" x2="31.5595" y2="23.8125" layer="21"/>
<rectangle x1="39.5605" y1="23.6855" x2="40.3225" y2="23.8125" layer="21"/>
<rectangle x1="30.1625" y1="23.8125" x2="30.7975" y2="23.9395" layer="21"/>
<rectangle x1="31.4325" y1="23.8125" x2="31.5595" y2="23.9395" layer="21"/>
<rectangle x1="39.5605" y1="23.8125" x2="40.4495" y2="23.9395" layer="21"/>
<rectangle x1="30.0355" y1="23.9395" x2="30.6705" y2="24.0665" layer="21"/>
<rectangle x1="31.4325" y1="23.9395" x2="31.5595" y2="24.0665" layer="21"/>
<rectangle x1="39.5605" y1="23.9395" x2="40.4495" y2="24.0665" layer="21"/>
<rectangle x1="30.0355" y1="24.0665" x2="30.6705" y2="24.1935" layer="21"/>
<rectangle x1="31.4325" y1="24.0665" x2="31.6865" y2="24.1935" layer="21"/>
<rectangle x1="39.4335" y1="24.0665" x2="40.4495" y2="24.1935" layer="21"/>
<rectangle x1="29.9085" y1="24.1935" x2="30.6705" y2="24.3205" layer="21"/>
<rectangle x1="31.5595" y1="24.1935" x2="31.6865" y2="24.3205" layer="21"/>
<rectangle x1="39.4335" y1="24.1935" x2="40.3225" y2="24.3205" layer="21"/>
<rectangle x1="29.9085" y1="24.3205" x2="30.5435" y2="24.4475" layer="21"/>
<rectangle x1="31.5595" y1="24.3205" x2="31.6865" y2="24.4475" layer="21"/>
<rectangle x1="39.3065" y1="24.3205" x2="40.3225" y2="24.4475" layer="21"/>
<rectangle x1="29.9085" y1="24.4475" x2="30.5435" y2="24.5745" layer="21"/>
<rectangle x1="31.5595" y1="24.4475" x2="31.8135" y2="24.5745" layer="21"/>
<rectangle x1="39.3065" y1="24.4475" x2="40.1955" y2="24.5745" layer="21"/>
<rectangle x1="29.7815" y1="24.5745" x2="30.5435" y2="24.7015" layer="21"/>
<rectangle x1="31.6865" y1="24.5745" x2="31.8135" y2="24.7015" layer="21"/>
<rectangle x1="39.1795" y1="24.5745" x2="40.1955" y2="24.7015" layer="21"/>
<rectangle x1="29.7815" y1="24.7015" x2="30.4165" y2="24.8285" layer="21"/>
<rectangle x1="31.6865" y1="24.7015" x2="31.8135" y2="24.8285" layer="21"/>
<rectangle x1="39.0525" y1="24.7015" x2="40.0685" y2="24.8285" layer="21"/>
<rectangle x1="29.6545" y1="24.8285" x2="30.4165" y2="24.9555" layer="21"/>
<rectangle x1="31.8135" y1="24.8285" x2="31.9405" y2="24.9555" layer="21"/>
<rectangle x1="39.0525" y1="24.8285" x2="40.0685" y2="24.9555" layer="21"/>
<rectangle x1="29.6545" y1="24.9555" x2="30.4165" y2="25.0825" layer="21"/>
<rectangle x1="31.8135" y1="24.9555" x2="31.9405" y2="25.0825" layer="21"/>
<rectangle x1="38.9255" y1="24.9555" x2="39.9415" y2="25.0825" layer="21"/>
<rectangle x1="29.6545" y1="25.0825" x2="30.2895" y2="25.2095" layer="21"/>
<rectangle x1="31.8135" y1="25.0825" x2="32.0675" y2="25.2095" layer="21"/>
<rectangle x1="38.9255" y1="25.0825" x2="39.9415" y2="25.2095" layer="21"/>
<rectangle x1="29.5275" y1="25.2095" x2="30.2895" y2="25.3365" layer="21"/>
<rectangle x1="31.9405" y1="25.2095" x2="32.0675" y2="25.3365" layer="21"/>
<rectangle x1="38.7985" y1="25.2095" x2="39.8145" y2="25.3365" layer="21"/>
<rectangle x1="29.5275" y1="25.3365" x2="30.1625" y2="25.4635" layer="21"/>
<rectangle x1="31.9405" y1="25.3365" x2="32.0675" y2="25.4635" layer="21"/>
<rectangle x1="38.6715" y1="25.3365" x2="39.8145" y2="25.4635" layer="21"/>
<rectangle x1="29.4005" y1="25.4635" x2="30.1625" y2="25.5905" layer="21"/>
<rectangle x1="32.0675" y1="25.4635" x2="32.1945" y2="25.5905" layer="21"/>
<rectangle x1="38.6715" y1="25.4635" x2="39.6875" y2="25.5905" layer="21"/>
<rectangle x1="29.2735" y1="25.5905" x2="30.1625" y2="25.7175" layer="21"/>
<rectangle x1="32.0675" y1="25.5905" x2="32.1945" y2="25.7175" layer="21"/>
<rectangle x1="38.5445" y1="25.5905" x2="39.6875" y2="25.7175" layer="21"/>
<rectangle x1="29.2735" y1="25.7175" x2="30.0355" y2="25.8445" layer="21"/>
<rectangle x1="32.1945" y1="25.7175" x2="32.3215" y2="25.8445" layer="21"/>
<rectangle x1="38.4175" y1="25.7175" x2="39.5605" y2="25.8445" layer="21"/>
<rectangle x1="29.1465" y1="25.8445" x2="30.0355" y2="25.9715" layer="21"/>
<rectangle x1="32.1945" y1="25.8445" x2="32.3215" y2="25.9715" layer="21"/>
<rectangle x1="38.4175" y1="25.8445" x2="39.5605" y2="25.9715" layer="21"/>
<rectangle x1="29.1465" y1="25.9715" x2="29.9085" y2="26.0985" layer="21"/>
<rectangle x1="32.3215" y1="25.9715" x2="32.4485" y2="26.0985" layer="21"/>
<rectangle x1="38.2905" y1="25.9715" x2="39.4335" y2="26.0985" layer="21"/>
<rectangle x1="29.0195" y1="26.0985" x2="29.9085" y2="26.2255" layer="21"/>
<rectangle x1="32.3215" y1="26.0985" x2="32.5755" y2="26.2255" layer="21"/>
<rectangle x1="38.1635" y1="26.0985" x2="39.3065" y2="26.2255" layer="21"/>
<rectangle x1="29.0195" y1="26.2255" x2="29.7815" y2="26.3525" layer="21"/>
<rectangle x1="32.4485" y1="26.2255" x2="32.5755" y2="26.3525" layer="21"/>
<rectangle x1="38.1635" y1="26.2255" x2="39.3065" y2="26.3525" layer="21"/>
<rectangle x1="28.8925" y1="26.3525" x2="29.7815" y2="26.4795" layer="21"/>
<rectangle x1="32.4485" y1="26.3525" x2="32.7025" y2="26.4795" layer="21"/>
<rectangle x1="38.0365" y1="26.3525" x2="39.1795" y2="26.4795" layer="21"/>
<rectangle x1="23.1775" y1="26.4795" x2="23.4315" y2="26.6065" layer="21"/>
<rectangle x1="28.7655" y1="26.4795" x2="29.6545" y2="26.6065" layer="21"/>
<rectangle x1="32.5755" y1="26.4795" x2="32.7025" y2="26.6065" layer="21"/>
<rectangle x1="37.9095" y1="26.4795" x2="39.1795" y2="26.6065" layer="21"/>
<rectangle x1="23.1775" y1="26.6065" x2="23.5585" y2="26.7335" layer="21"/>
<rectangle x1="28.7655" y1="26.6065" x2="29.5275" y2="26.7335" layer="21"/>
<rectangle x1="32.5755" y1="26.6065" x2="32.8295" y2="26.7335" layer="21"/>
<rectangle x1="37.7825" y1="26.6065" x2="39.0525" y2="26.7335" layer="21"/>
<rectangle x1="23.3045" y1="26.7335" x2="23.6855" y2="26.8605" layer="21"/>
<rectangle x1="28.6385" y1="26.7335" x2="29.5275" y2="26.8605" layer="21"/>
<rectangle x1="32.7025" y1="26.7335" x2="32.9565" y2="26.8605" layer="21"/>
<rectangle x1="37.6555" y1="26.7335" x2="38.9255" y2="26.8605" layer="21"/>
<rectangle x1="23.4315" y1="26.8605" x2="23.8125" y2="26.9875" layer="21"/>
<rectangle x1="28.5115" y1="26.8605" x2="29.4005" y2="26.9875" layer="21"/>
<rectangle x1="32.8295" y1="26.8605" x2="32.9565" y2="26.9875" layer="21"/>
<rectangle x1="37.5285" y1="26.8605" x2="38.7985" y2="26.9875" layer="21"/>
<rectangle x1="23.5585" y1="26.9875" x2="23.9395" y2="27.1145" layer="21"/>
<rectangle x1="28.3845" y1="26.9875" x2="29.4005" y2="27.1145" layer="21"/>
<rectangle x1="32.8295" y1="26.9875" x2="33.0835" y2="27.1145" layer="21"/>
<rectangle x1="37.5285" y1="26.9875" x2="38.7985" y2="27.1145" layer="21"/>
<rectangle x1="23.5585" y1="27.1145" x2="24.0665" y2="27.2415" layer="21"/>
<rectangle x1="28.3845" y1="27.1145" x2="29.2735" y2="27.2415" layer="21"/>
<rectangle x1="32.9565" y1="27.1145" x2="33.2105" y2="27.2415" layer="21"/>
<rectangle x1="37.4015" y1="27.1145" x2="38.6715" y2="27.2415" layer="21"/>
<rectangle x1="23.6855" y1="27.2415" x2="24.0665" y2="27.3685" layer="21"/>
<rectangle x1="28.2575" y1="27.2415" x2="29.1465" y2="27.3685" layer="21"/>
<rectangle x1="33.0835" y1="27.2415" x2="33.3375" y2="27.3685" layer="21"/>
<rectangle x1="37.2745" y1="27.2415" x2="38.5445" y2="27.3685" layer="21"/>
<rectangle x1="23.8125" y1="27.3685" x2="24.1935" y2="27.4955" layer="21"/>
<rectangle x1="28.1305" y1="27.3685" x2="29.1465" y2="27.4955" layer="21"/>
<rectangle x1="33.2105" y1="27.3685" x2="33.3375" y2="27.4955" layer="21"/>
<rectangle x1="37.1475" y1="27.3685" x2="38.4175" y2="27.4955" layer="21"/>
<rectangle x1="23.9395" y1="27.4955" x2="24.4475" y2="27.6225" layer="21"/>
<rectangle x1="28.0035" y1="27.4955" x2="29.0195" y2="27.6225" layer="21"/>
<rectangle x1="33.2105" y1="27.4955" x2="33.4645" y2="27.6225" layer="21"/>
<rectangle x1="37.0205" y1="27.4955" x2="38.2905" y2="27.6225" layer="21"/>
<rectangle x1="24.0665" y1="27.6225" x2="24.5745" y2="27.7495" layer="21"/>
<rectangle x1="27.8765" y1="27.6225" x2="28.8925" y2="27.7495" layer="21"/>
<rectangle x1="33.3375" y1="27.6225" x2="33.5915" y2="27.7495" layer="21"/>
<rectangle x1="36.8935" y1="27.6225" x2="38.2905" y2="27.7495" layer="21"/>
<rectangle x1="24.1935" y1="27.7495" x2="24.7015" y2="27.8765" layer="21"/>
<rectangle x1="27.7495" y1="27.7495" x2="28.7655" y2="27.8765" layer="21"/>
<rectangle x1="33.4645" y1="27.7495" x2="33.7185" y2="27.8765" layer="21"/>
<rectangle x1="36.6395" y1="27.7495" x2="38.1635" y2="27.8765" layer="21"/>
<rectangle x1="24.1935" y1="27.8765" x2="24.8285" y2="28.0035" layer="21"/>
<rectangle x1="27.6225" y1="27.8765" x2="28.7655" y2="28.0035" layer="21"/>
<rectangle x1="33.5915" y1="27.8765" x2="33.8455" y2="28.0035" layer="21"/>
<rectangle x1="36.5125" y1="27.8765" x2="38.0365" y2="28.0035" layer="21"/>
<rectangle x1="24.3205" y1="28.0035" x2="24.9555" y2="28.1305" layer="21"/>
<rectangle x1="27.4955" y1="28.0035" x2="28.6385" y2="28.1305" layer="21"/>
<rectangle x1="33.5915" y1="28.0035" x2="33.9725" y2="28.1305" layer="21"/>
<rectangle x1="36.3855" y1="28.0035" x2="37.9095" y2="28.1305" layer="21"/>
<rectangle x1="24.4475" y1="28.1305" x2="25.0825" y2="28.2575" layer="21"/>
<rectangle x1="27.3685" y1="28.1305" x2="28.5115" y2="28.2575" layer="21"/>
<rectangle x1="33.7185" y1="28.1305" x2="34.0995" y2="28.2575" layer="21"/>
<rectangle x1="36.2585" y1="28.1305" x2="37.7825" y2="28.2575" layer="21"/>
<rectangle x1="24.5745" y1="28.2575" x2="25.3365" y2="28.3845" layer="21"/>
<rectangle x1="27.2415" y1="28.2575" x2="28.3845" y2="28.3845" layer="21"/>
<rectangle x1="33.8455" y1="28.2575" x2="34.2265" y2="28.3845" layer="21"/>
<rectangle x1="36.1315" y1="28.2575" x2="37.6555" y2="28.3845" layer="21"/>
<rectangle x1="24.7015" y1="28.3845" x2="25.4635" y2="28.5115" layer="21"/>
<rectangle x1="27.1145" y1="28.3845" x2="28.2575" y2="28.5115" layer="21"/>
<rectangle x1="33.9725" y1="28.3845" x2="34.3535" y2="28.5115" layer="21"/>
<rectangle x1="35.8775" y1="28.3845" x2="37.5285" y2="28.5115" layer="21"/>
<rectangle x1="24.8285" y1="28.5115" x2="25.7175" y2="28.6385" layer="21"/>
<rectangle x1="26.9875" y1="28.5115" x2="28.1305" y2="28.6385" layer="21"/>
<rectangle x1="34.0995" y1="28.5115" x2="34.6075" y2="28.6385" layer="21"/>
<rectangle x1="35.7505" y1="28.5115" x2="37.4015" y2="28.6385" layer="21"/>
<rectangle x1="25.0825" y1="28.6385" x2="25.8445" y2="28.7655" layer="21"/>
<rectangle x1="26.8605" y1="28.6385" x2="28.0035" y2="28.7655" layer="21"/>
<rectangle x1="34.2265" y1="28.6385" x2="34.7345" y2="28.7655" layer="21"/>
<rectangle x1="35.4965" y1="28.6385" x2="37.2745" y2="28.7655" layer="21"/>
<rectangle x1="25.2095" y1="28.7655" x2="26.0985" y2="28.8925" layer="21"/>
<rectangle x1="26.6065" y1="28.7655" x2="27.8765" y2="28.8925" layer="21"/>
<rectangle x1="34.3535" y1="28.7655" x2="34.8615" y2="28.8925" layer="21"/>
<rectangle x1="35.3695" y1="28.7655" x2="37.1475" y2="28.8925" layer="21"/>
<rectangle x1="43.7515" y1="28.7655" x2="44.0055" y2="28.8925" layer="21"/>
<rectangle x1="17.3355" y1="28.8925" x2="17.9705" y2="29.0195" layer="21"/>
<rectangle x1="25.3365" y1="28.8925" x2="26.3525" y2="29.0195" layer="21"/>
<rectangle x1="26.4795" y1="28.8925" x2="27.7495" y2="29.0195" layer="21"/>
<rectangle x1="34.4805" y1="28.8925" x2="36.8935" y2="29.0195" layer="21"/>
<rectangle x1="43.6245" y1="28.8925" x2="44.1325" y2="29.0195" layer="21"/>
<rectangle x1="17.5895" y1="29.0195" x2="18.0975" y2="29.1465" layer="21"/>
<rectangle x1="25.4635" y1="29.0195" x2="27.6225" y2="29.1465" layer="21"/>
<rectangle x1="34.6075" y1="29.0195" x2="36.7665" y2="29.1465" layer="21"/>
<rectangle x1="43.3705" y1="29.0195" x2="44.3865" y2="29.1465" layer="21"/>
<rectangle x1="17.7165" y1="29.1465" x2="18.3515" y2="29.2735" layer="21"/>
<rectangle x1="25.5905" y1="29.1465" x2="27.4955" y2="29.2735" layer="21"/>
<rectangle x1="34.6075" y1="29.1465" x2="36.6395" y2="29.2735" layer="21"/>
<rectangle x1="43.2435" y1="29.1465" x2="44.5135" y2="29.2735" layer="21"/>
<rectangle x1="17.8435" y1="29.2735" x2="18.6055" y2="29.4005" layer="21"/>
<rectangle x1="25.8445" y1="29.2735" x2="27.3685" y2="29.4005" layer="21"/>
<rectangle x1="34.3535" y1="29.2735" x2="36.5125" y2="29.4005" layer="21"/>
<rectangle x1="42.9895" y1="29.2735" x2="44.5135" y2="29.4005" layer="21"/>
<rectangle x1="17.9705" y1="29.4005" x2="18.8595" y2="29.5275" layer="21"/>
<rectangle x1="25.7175" y1="29.4005" x2="27.3685" y2="29.5275" layer="21"/>
<rectangle x1="34.0995" y1="29.4005" x2="36.2585" y2="29.5275" layer="21"/>
<rectangle x1="42.7355" y1="29.4005" x2="44.2595" y2="29.5275" layer="21"/>
<rectangle x1="18.2245" y1="29.5275" x2="19.1135" y2="29.6545" layer="21"/>
<rectangle x1="25.3365" y1="29.5275" x2="27.7495" y2="29.6545" layer="21"/>
<rectangle x1="33.7185" y1="29.5275" x2="36.1315" y2="29.6545" layer="21"/>
<rectangle x1="42.4815" y1="29.5275" x2="44.1325" y2="29.6545" layer="21"/>
<rectangle x1="18.3515" y1="29.6545" x2="19.3675" y2="29.7815" layer="21"/>
<rectangle x1="25.0825" y1="29.6545" x2="28.1305" y2="29.7815" layer="21"/>
<rectangle x1="33.3375" y1="29.6545" x2="36.5125" y2="29.7815" layer="21"/>
<rectangle x1="42.2275" y1="29.6545" x2="44.0055" y2="29.7815" layer="21"/>
<rectangle x1="18.6055" y1="29.7815" x2="19.7485" y2="29.9085" layer="21"/>
<rectangle x1="24.8285" y1="29.7815" x2="28.5115" y2="29.9085" layer="21"/>
<rectangle x1="32.9565" y1="29.7815" x2="36.7665" y2="29.9085" layer="21"/>
<rectangle x1="41.8465" y1="29.7815" x2="43.7515" y2="29.9085" layer="21"/>
<rectangle x1="18.7325" y1="29.9085" x2="20.1295" y2="30.0355" layer="21"/>
<rectangle x1="24.4475" y1="29.9085" x2="26.4795" y2="30.0355" layer="21"/>
<rectangle x1="26.8605" y1="29.9085" x2="29.1465" y2="30.0355" layer="21"/>
<rectangle x1="32.3215" y1="29.9085" x2="35.4965" y2="30.0355" layer="21"/>
<rectangle x1="35.8775" y1="29.9085" x2="37.1475" y2="30.0355" layer="21"/>
<rectangle x1="41.4655" y1="29.9085" x2="43.6245" y2="30.0355" layer="21"/>
<rectangle x1="18.9865" y1="30.0355" x2="20.5105" y2="30.1625" layer="21"/>
<rectangle x1="23.9395" y1="30.0355" x2="26.2255" y2="30.1625" layer="21"/>
<rectangle x1="27.1145" y1="30.0355" x2="30.2895" y2="30.1625" layer="21"/>
<rectangle x1="31.0515" y1="30.0355" x2="35.2425" y2="30.1625" layer="21"/>
<rectangle x1="36.1315" y1="30.0355" x2="37.6555" y2="30.1625" layer="21"/>
<rectangle x1="41.0845" y1="30.0355" x2="43.3705" y2="30.1625" layer="21"/>
<rectangle x1="19.2405" y1="30.1625" x2="21.2725" y2="30.2895" layer="21"/>
<rectangle x1="23.1775" y1="30.1625" x2="25.9715" y2="30.2895" layer="21"/>
<rectangle x1="27.3685" y1="30.1625" x2="34.9885" y2="30.2895" layer="21"/>
<rectangle x1="36.2585" y1="30.1625" x2="38.4175" y2="30.2895" layer="21"/>
<rectangle x1="40.3225" y1="30.1625" x2="43.1165" y2="30.2895" layer="21"/>
<rectangle x1="19.4945" y1="30.2895" x2="25.7175" y2="30.4165" layer="21"/>
<rectangle x1="27.6225" y1="30.2895" x2="34.7345" y2="30.4165" layer="21"/>
<rectangle x1="36.5125" y1="30.2895" x2="42.8625" y2="30.4165" layer="21"/>
<rectangle x1="19.7485" y1="30.4165" x2="25.4635" y2="30.5435" layer="21"/>
<rectangle x1="27.8765" y1="30.4165" x2="34.3535" y2="30.5435" layer="21"/>
<rectangle x1="36.8935" y1="30.4165" x2="42.6085" y2="30.5435" layer="21"/>
<rectangle x1="20.1295" y1="30.5435" x2="25.0825" y2="30.6705" layer="21"/>
<rectangle x1="28.2575" y1="30.5435" x2="34.0995" y2="30.6705" layer="21"/>
<rectangle x1="37.1475" y1="30.5435" x2="42.2275" y2="30.6705" layer="21"/>
<rectangle x1="20.3835" y1="30.6705" x2="24.7015" y2="30.7975" layer="21"/>
<rectangle x1="28.5115" y1="30.6705" x2="33.7185" y2="30.7975" layer="21"/>
<rectangle x1="37.5285" y1="30.6705" x2="41.8465" y2="30.7975" layer="21"/>
<rectangle x1="20.3835" y1="30.7975" x2="24.3205" y2="30.9245" layer="21"/>
<rectangle x1="28.3845" y1="30.7975" x2="33.2105" y2="30.9245" layer="21"/>
<rectangle x1="37.4015" y1="30.7975" x2="41.3385" y2="30.9245" layer="21"/>
<rectangle x1="20.1295" y1="30.9245" x2="24.3205" y2="31.0515" layer="21"/>
<rectangle x1="28.1305" y1="30.9245" x2="33.2105" y2="31.0515" layer="21"/>
<rectangle x1="37.2745" y1="30.9245" x2="41.4655" y2="31.0515" layer="21"/>
<rectangle x1="20.0025" y1="31.0515" x2="22.0345" y2="31.1785" layer="21"/>
<rectangle x1="23.1775" y1="31.0515" x2="24.4475" y2="31.1785" layer="21"/>
<rectangle x1="28.0035" y1="31.0515" x2="30.9245" y2="31.1785" layer="21"/>
<rectangle x1="31.4325" y1="31.0515" x2="33.4645" y2="31.1785" layer="21"/>
<rectangle x1="37.1475" y1="31.0515" x2="39.1795" y2="31.1785" layer="21"/>
<rectangle x1="40.3225" y1="31.0515" x2="41.5925" y2="31.1785" layer="21"/>
<rectangle x1="19.8755" y1="31.1785" x2="21.5265" y2="31.3055" layer="21"/>
<rectangle x1="23.6855" y1="31.1785" x2="24.5745" y2="31.3055" layer="21"/>
<rectangle x1="27.8765" y1="31.1785" x2="30.0355" y2="31.3055" layer="21"/>
<rectangle x1="32.1945" y1="31.1785" x2="33.5915" y2="31.3055" layer="21"/>
<rectangle x1="36.8935" y1="31.1785" x2="38.6715" y2="31.3055" layer="21"/>
<rectangle x1="40.8305" y1="31.1785" x2="41.7195" y2="31.3055" layer="21"/>
<rectangle x1="19.7485" y1="31.3055" x2="21.1455" y2="31.4325" layer="21"/>
<rectangle x1="24.0665" y1="31.3055" x2="24.8285" y2="31.4325" layer="21"/>
<rectangle x1="27.7495" y1="31.3055" x2="29.6545" y2="31.4325" layer="21"/>
<rectangle x1="32.5755" y1="31.3055" x2="33.7185" y2="31.4325" layer="21"/>
<rectangle x1="36.7665" y1="31.3055" x2="38.2905" y2="31.4325" layer="21"/>
<rectangle x1="41.0845" y1="31.3055" x2="41.8465" y2="31.4325" layer="21"/>
<rectangle x1="19.6215" y1="31.4325" x2="20.8915" y2="31.5595" layer="21"/>
<rectangle x1="24.3205" y1="31.4325" x2="24.9555" y2="31.5595" layer="21"/>
<rectangle x1="27.6225" y1="31.4325" x2="29.4005" y2="31.5595" layer="21"/>
<rectangle x1="32.9565" y1="31.4325" x2="33.8455" y2="31.5595" layer="21"/>
<rectangle x1="36.6395" y1="31.4325" x2="38.0365" y2="31.5595" layer="21"/>
<rectangle x1="41.4655" y1="31.4325" x2="41.9735" y2="31.5595" layer="21"/>
<rectangle x1="19.4945" y1="31.5595" x2="20.7645" y2="31.6865" layer="21"/>
<rectangle x1="24.4475" y1="31.5595" x2="24.9555" y2="31.6865" layer="21"/>
<rectangle x1="27.4955" y1="31.5595" x2="29.1465" y2="31.6865" layer="21"/>
<rectangle x1="33.2105" y1="31.5595" x2="33.9725" y2="31.6865" layer="21"/>
<rectangle x1="36.5125" y1="31.5595" x2="37.7825" y2="31.6865" layer="21"/>
<rectangle x1="41.5925" y1="31.5595" x2="42.1005" y2="31.6865" layer="21"/>
<rectangle x1="19.3675" y1="31.6865" x2="20.5105" y2="31.8135" layer="21"/>
<rectangle x1="24.7015" y1="31.6865" x2="25.0825" y2="31.8135" layer="21"/>
<rectangle x1="27.3685" y1="31.6865" x2="28.8925" y2="31.8135" layer="21"/>
<rectangle x1="33.4645" y1="31.6865" x2="34.0995" y2="31.8135" layer="21"/>
<rectangle x1="36.5125" y1="31.6865" x2="37.6555" y2="31.8135" layer="21"/>
<rectangle x1="41.8465" y1="31.6865" x2="42.2275" y2="31.8135" layer="21"/>
<rectangle x1="19.2405" y1="31.8135" x2="20.3835" y2="31.9405" layer="21"/>
<rectangle x1="24.8285" y1="31.8135" x2="25.2095" y2="31.9405" layer="21"/>
<rectangle x1="27.2415" y1="31.8135" x2="28.7655" y2="31.9405" layer="21"/>
<rectangle x1="33.5915" y1="31.8135" x2="34.2265" y2="31.9405" layer="21"/>
<rectangle x1="36.3855" y1="31.8135" x2="37.5285" y2="31.9405" layer="21"/>
<rectangle x1="41.9735" y1="31.8135" x2="42.3545" y2="31.9405" layer="21"/>
<rectangle x1="19.1135" y1="31.9405" x2="20.2565" y2="32.0675" layer="21"/>
<rectangle x1="24.9555" y1="31.9405" x2="25.3365" y2="32.0675" layer="21"/>
<rectangle x1="27.1145" y1="31.9405" x2="28.5115" y2="32.0675" layer="21"/>
<rectangle x1="33.7185" y1="31.9405" x2="34.3535" y2="32.0675" layer="21"/>
<rectangle x1="36.2585" y1="31.9405" x2="37.2745" y2="32.0675" layer="21"/>
<rectangle x1="42.1005" y1="31.9405" x2="42.4815" y2="32.0675" layer="21"/>
<rectangle x1="19.1135" y1="32.0675" x2="20.1295" y2="32.1945" layer="21"/>
<rectangle x1="25.0825" y1="32.0675" x2="25.4635" y2="32.1945" layer="21"/>
<rectangle x1="26.9875" y1="32.0675" x2="28.3845" y2="32.1945" layer="21"/>
<rectangle x1="33.9725" y1="32.0675" x2="34.4805" y2="32.1945" layer="21"/>
<rectangle x1="36.1315" y1="32.0675" x2="37.1475" y2="32.1945" layer="21"/>
<rectangle x1="42.2275" y1="32.0675" x2="42.4815" y2="32.1945" layer="21"/>
<rectangle x1="18.9865" y1="32.1945" x2="20.0025" y2="32.3215" layer="21"/>
<rectangle x1="25.2095" y1="32.1945" x2="25.4635" y2="32.3215" layer="21"/>
<rectangle x1="26.9875" y1="32.1945" x2="28.2575" y2="32.3215" layer="21"/>
<rectangle x1="34.0995" y1="32.1945" x2="34.4805" y2="32.3215" layer="21"/>
<rectangle x1="36.1315" y1="32.1945" x2="37.0205" y2="32.3215" layer="21"/>
<rectangle x1="42.3545" y1="32.1945" x2="42.6085" y2="32.3215" layer="21"/>
<rectangle x1="18.8595" y1="32.3215" x2="19.8755" y2="32.4485" layer="21"/>
<rectangle x1="25.3365" y1="32.3215" x2="25.5905" y2="32.4485" layer="21"/>
<rectangle x1="26.8605" y1="32.3215" x2="28.1305" y2="32.4485" layer="21"/>
<rectangle x1="34.2265" y1="32.3215" x2="34.6075" y2="32.4485" layer="21"/>
<rectangle x1="36.0045" y1="32.3215" x2="36.8935" y2="32.4485" layer="21"/>
<rectangle x1="42.4815" y1="32.3215" x2="42.7355" y2="32.4485" layer="21"/>
<rectangle x1="18.8595" y1="32.4485" x2="19.7485" y2="32.5755" layer="21"/>
<rectangle x1="25.4635" y1="32.4485" x2="25.7175" y2="32.5755" layer="21"/>
<rectangle x1="26.7335" y1="32.4485" x2="28.0035" y2="32.5755" layer="21"/>
<rectangle x1="34.3535" y1="32.4485" x2="34.7345" y2="32.5755" layer="21"/>
<rectangle x1="35.8775" y1="32.4485" x2="36.8935" y2="32.5755" layer="21"/>
<rectangle x1="42.6085" y1="32.4485" x2="42.7355" y2="32.5755" layer="21"/>
<rectangle x1="18.7325" y1="32.5755" x2="19.6215" y2="32.7025" layer="21"/>
<rectangle x1="25.5905" y1="32.5755" x2="25.7175" y2="32.7025" layer="21"/>
<rectangle x1="26.7335" y1="32.5755" x2="27.8765" y2="32.7025" layer="21"/>
<rectangle x1="34.4805" y1="32.5755" x2="34.7345" y2="32.7025" layer="21"/>
<rectangle x1="35.8775" y1="32.5755" x2="36.7665" y2="32.7025" layer="21"/>
<rectangle x1="42.6085" y1="32.5755" x2="42.8625" y2="32.7025" layer="21"/>
<rectangle x1="18.7325" y1="32.7025" x2="19.4945" y2="32.8295" layer="21"/>
<rectangle x1="25.5905" y1="32.7025" x2="25.8445" y2="32.8295" layer="21"/>
<rectangle x1="26.6065" y1="32.7025" x2="27.7495" y2="32.8295" layer="21"/>
<rectangle x1="34.4805" y1="32.7025" x2="34.8615" y2="32.8295" layer="21"/>
<rectangle x1="35.7505" y1="32.7025" x2="36.6395" y2="32.8295" layer="21"/>
<rectangle x1="42.7355" y1="32.7025" x2="42.9895" y2="32.8295" layer="21"/>
<rectangle x1="18.6055" y1="32.8295" x2="19.4945" y2="32.9565" layer="21"/>
<rectangle x1="25.7175" y1="32.8295" x2="25.8445" y2="32.9565" layer="21"/>
<rectangle x1="26.4795" y1="32.8295" x2="27.6225" y2="32.9565" layer="21"/>
<rectangle x1="34.6075" y1="32.8295" x2="34.9885" y2="32.9565" layer="21"/>
<rectangle x1="35.7505" y1="32.8295" x2="36.5125" y2="32.9565" layer="21"/>
<rectangle x1="42.8625" y1="32.8295" x2="42.9895" y2="32.9565" layer="21"/>
<rectangle x1="18.6055" y1="32.9565" x2="19.3675" y2="33.0835" layer="21"/>
<rectangle x1="25.8445" y1="32.9565" x2="25.9715" y2="33.0835" layer="21"/>
<rectangle x1="26.4795" y1="32.9565" x2="27.6225" y2="33.0835" layer="21"/>
<rectangle x1="34.7345" y1="32.9565" x2="34.9885" y2="33.0835" layer="21"/>
<rectangle x1="35.6235" y1="32.9565" x2="36.5125" y2="33.0835" layer="21"/>
<rectangle x1="42.8625" y1="32.9565" x2="43.1165" y2="33.0835" layer="21"/>
<rectangle x1="18.4785" y1="33.0835" x2="19.3675" y2="33.2105" layer="21"/>
<rectangle x1="25.8445" y1="33.0835" x2="26.0985" y2="33.2105" layer="21"/>
<rectangle x1="26.3525" y1="33.0835" x2="27.4955" y2="33.2105" layer="21"/>
<rectangle x1="34.7345" y1="33.0835" x2="35.1155" y2="33.2105" layer="21"/>
<rectangle x1="35.6235" y1="33.0835" x2="36.3855" y2="33.2105" layer="21"/>
<rectangle x1="42.9895" y1="33.0835" x2="43.1165" y2="33.2105" layer="21"/>
<rectangle x1="18.4785" y1="33.2105" x2="19.2405" y2="33.3375" layer="21"/>
<rectangle x1="25.9715" y1="33.2105" x2="26.0985" y2="33.3375" layer="21"/>
<rectangle x1="26.3525" y1="33.2105" x2="27.3685" y2="33.3375" layer="21"/>
<rectangle x1="34.8615" y1="33.2105" x2="35.1155" y2="33.3375" layer="21"/>
<rectangle x1="35.6235" y1="33.2105" x2="36.3855" y2="33.3375" layer="21"/>
<rectangle x1="42.9895" y1="33.2105" x2="43.2435" y2="33.3375" layer="21"/>
<rectangle x1="18.3515" y1="33.3375" x2="19.1135" y2="33.4645" layer="21"/>
<rectangle x1="25.9715" y1="33.3375" x2="26.0985" y2="33.4645" layer="21"/>
<rectangle x1="26.2255" y1="33.3375" x2="27.3685" y2="33.4645" layer="21"/>
<rectangle x1="34.9885" y1="33.3375" x2="35.2425" y2="33.4645" layer="21"/>
<rectangle x1="35.4965" y1="33.3375" x2="36.2585" y2="33.4645" layer="21"/>
<rectangle x1="43.1165" y1="33.3375" x2="43.2435" y2="33.4645" layer="21"/>
<rectangle x1="18.3515" y1="33.4645" x2="19.1135" y2="33.5915" layer="21"/>
<rectangle x1="25.9715" y1="33.4645" x2="27.2415" y2="33.5915" layer="21"/>
<rectangle x1="34.9885" y1="33.4645" x2="35.2425" y2="33.5915" layer="21"/>
<rectangle x1="35.4965" y1="33.4645" x2="36.2585" y2="33.5915" layer="21"/>
<rectangle x1="43.1165" y1="33.4645" x2="43.3705" y2="33.5915" layer="21"/>
<rectangle x1="18.3515" y1="33.5915" x2="18.9865" y2="33.7185" layer="21"/>
<rectangle x1="26.0985" y1="33.5915" x2="27.1145" y2="33.7185" layer="21"/>
<rectangle x1="35.1155" y1="33.5915" x2="36.1315" y2="33.7185" layer="21"/>
<rectangle x1="43.2435" y1="33.5915" x2="43.3705" y2="33.7185" layer="21"/>
<rectangle x1="18.2245" y1="33.7185" x2="18.9865" y2="33.8455" layer="21"/>
<rectangle x1="26.0985" y1="33.7185" x2="27.1145" y2="33.8455" layer="21"/>
<rectangle x1="35.1155" y1="33.7185" x2="36.1315" y2="33.8455" layer="21"/>
<rectangle x1="43.2435" y1="33.7185" x2="43.3705" y2="33.8455" layer="21"/>
<rectangle x1="18.2245" y1="33.8455" x2="18.9865" y2="33.9725" layer="21"/>
<rectangle x1="26.0985" y1="33.8455" x2="26.9875" y2="33.9725" layer="21"/>
<rectangle x1="35.2425" y1="33.8455" x2="36.0045" y2="33.9725" layer="21"/>
<rectangle x1="43.2435" y1="33.8455" x2="43.4975" y2="33.9725" layer="21"/>
<rectangle x1="18.2245" y1="33.9725" x2="18.8595" y2="34.0995" layer="21"/>
<rectangle x1="25.9715" y1="33.9725" x2="26.9875" y2="34.0995" layer="21"/>
<rectangle x1="35.2425" y1="33.9725" x2="36.0045" y2="34.0995" layer="21"/>
<rectangle x1="43.2435" y1="33.9725" x2="43.4975" y2="34.0995" layer="21"/>
<rectangle x1="18.2245" y1="34.0995" x2="18.8595" y2="34.2265" layer="21"/>
<rectangle x1="25.9715" y1="34.0995" x2="26.8605" y2="34.2265" layer="21"/>
<rectangle x1="35.2425" y1="34.0995" x2="36.0045" y2="34.2265" layer="21"/>
<rectangle x1="43.3705" y1="34.0995" x2="43.4975" y2="34.2265" layer="21"/>
<rectangle x1="18.0975" y1="34.2265" x2="18.7325" y2="34.3535" layer="21"/>
<rectangle x1="25.9715" y1="34.2265" x2="26.8605" y2="34.3535" layer="21"/>
<rectangle x1="35.3695" y1="34.2265" x2="35.8775" y2="34.3535" layer="21"/>
<rectangle x1="43.3705" y1="34.2265" x2="43.6245" y2="34.3535" layer="21"/>
<rectangle x1="18.0975" y1="34.3535" x2="18.7325" y2="34.4805" layer="21"/>
<rectangle x1="25.8445" y1="34.3535" x2="26.8605" y2="34.4805" layer="21"/>
<rectangle x1="35.3695" y1="34.3535" x2="35.8775" y2="34.4805" layer="21"/>
<rectangle x1="43.3705" y1="34.3535" x2="43.6245" y2="34.4805" layer="21"/>
<rectangle x1="18.0975" y1="34.4805" x2="18.7325" y2="34.6075" layer="21"/>
<rectangle x1="25.8445" y1="34.4805" x2="26.7335" y2="34.6075" layer="21"/>
<rectangle x1="35.3695" y1="34.4805" x2="35.8775" y2="34.6075" layer="21"/>
<rectangle x1="43.3705" y1="34.4805" x2="43.6245" y2="34.6075" layer="21"/>
<rectangle x1="18.0975" y1="34.6075" x2="18.7325" y2="34.7345" layer="21"/>
<rectangle x1="25.8445" y1="34.6075" x2="26.7335" y2="34.7345" layer="21"/>
<rectangle x1="35.4965" y1="34.6075" x2="35.7505" y2="34.7345" layer="21"/>
<rectangle x1="43.4975" y1="34.6075" x2="43.7515" y2="34.7345" layer="21"/>
<rectangle x1="18.0975" y1="34.7345" x2="18.6055" y2="34.8615" layer="21"/>
<rectangle x1="25.7175" y1="34.7345" x2="26.6065" y2="34.8615" layer="21"/>
<rectangle x1="35.4965" y1="34.7345" x2="35.8775" y2="34.8615" layer="21"/>
<rectangle x1="43.4975" y1="34.7345" x2="43.7515" y2="34.8615" layer="21"/>
<rectangle x1="17.9705" y1="34.8615" x2="18.6055" y2="34.9885" layer="21"/>
<rectangle x1="25.7175" y1="34.8615" x2="26.6065" y2="34.9885" layer="21"/>
<rectangle x1="35.4965" y1="34.8615" x2="35.8775" y2="34.9885" layer="21"/>
<rectangle x1="43.4975" y1="34.8615" x2="43.7515" y2="34.9885" layer="21"/>
<rectangle x1="17.9705" y1="34.9885" x2="18.6055" y2="35.1155" layer="21"/>
<rectangle x1="25.7175" y1="34.9885" x2="26.6065" y2="35.1155" layer="21"/>
<rectangle x1="35.4965" y1="34.9885" x2="35.8775" y2="35.1155" layer="21"/>
<rectangle x1="43.4975" y1="34.9885" x2="43.7515" y2="35.1155" layer="21"/>
<rectangle x1="17.9705" y1="35.1155" x2="18.6055" y2="35.2425" layer="21"/>
<rectangle x1="25.7175" y1="35.1155" x2="26.4795" y2="35.2425" layer="21"/>
<rectangle x1="35.6235" y1="35.1155" x2="35.8775" y2="35.2425" layer="21"/>
<rectangle x1="43.4975" y1="35.1155" x2="43.8785" y2="35.2425" layer="21"/>
<rectangle x1="17.9705" y1="35.2425" x2="18.4785" y2="35.3695" layer="21"/>
<rectangle x1="25.7175" y1="35.2425" x2="26.4795" y2="35.3695" layer="21"/>
<rectangle x1="35.6235" y1="35.2425" x2="36.0045" y2="35.3695" layer="21"/>
<rectangle x1="43.4975" y1="35.2425" x2="43.8785" y2="35.3695" layer="21"/>
<rectangle x1="17.9705" y1="35.3695" x2="18.4785" y2="35.4965" layer="21"/>
<rectangle x1="25.5905" y1="35.3695" x2="26.4795" y2="35.4965" layer="21"/>
<rectangle x1="35.6235" y1="35.3695" x2="36.0045" y2="35.4965" layer="21"/>
<rectangle x1="43.4975" y1="35.3695" x2="43.8785" y2="35.4965" layer="21"/>
<rectangle x1="17.9705" y1="35.4965" x2="18.4785" y2="35.6235" layer="21"/>
<rectangle x1="25.5905" y1="35.4965" x2="26.4795" y2="35.6235" layer="21"/>
<rectangle x1="35.6235" y1="35.4965" x2="36.0045" y2="35.6235" layer="21"/>
<rectangle x1="43.4975" y1="35.4965" x2="43.8785" y2="35.6235" layer="21"/>
<rectangle x1="17.9705" y1="35.6235" x2="18.4785" y2="35.7505" layer="21"/>
<rectangle x1="25.5905" y1="35.6235" x2="26.3525" y2="35.7505" layer="21"/>
<rectangle x1="35.6235" y1="35.6235" x2="36.0045" y2="35.7505" layer="21"/>
<rectangle x1="43.4975" y1="35.6235" x2="43.8785" y2="35.7505" layer="21"/>
<rectangle x1="17.9705" y1="35.7505" x2="18.4785" y2="35.8775" layer="21"/>
<rectangle x1="25.5905" y1="35.7505" x2="26.3525" y2="35.8775" layer="21"/>
<rectangle x1="35.6235" y1="35.7505" x2="36.1315" y2="35.8775" layer="21"/>
<rectangle x1="43.4975" y1="35.7505" x2="43.8785" y2="35.8775" layer="21"/>
<rectangle x1="17.9705" y1="35.8775" x2="18.4785" y2="36.0045" layer="21"/>
<rectangle x1="25.5905" y1="35.8775" x2="26.3525" y2="36.0045" layer="21"/>
<rectangle x1="35.6235" y1="35.8775" x2="36.1315" y2="36.0045" layer="21"/>
<rectangle x1="43.4975" y1="35.8775" x2="43.8785" y2="36.0045" layer="21"/>
<rectangle x1="17.9705" y1="36.0045" x2="18.4785" y2="36.1315" layer="21"/>
<rectangle x1="25.5905" y1="36.0045" x2="26.3525" y2="36.1315" layer="21"/>
<rectangle x1="35.6235" y1="36.0045" x2="36.1315" y2="36.1315" layer="21"/>
<rectangle x1="43.4975" y1="36.0045" x2="44.0055" y2="36.1315" layer="21"/>
<rectangle x1="17.9705" y1="36.1315" x2="18.4785" y2="36.2585" layer="21"/>
<rectangle x1="25.5905" y1="36.1315" x2="26.2255" y2="36.2585" layer="21"/>
<rectangle x1="35.7505" y1="36.1315" x2="36.1315" y2="36.2585" layer="21"/>
<rectangle x1="43.4975" y1="36.1315" x2="44.0055" y2="36.2585" layer="21"/>
<rectangle x1="17.9705" y1="36.2585" x2="18.4785" y2="36.3855" layer="21"/>
<rectangle x1="25.5905" y1="36.2585" x2="26.2255" y2="36.3855" layer="21"/>
<rectangle x1="35.7505" y1="36.2585" x2="36.1315" y2="36.3855" layer="21"/>
<rectangle x1="43.4975" y1="36.2585" x2="44.0055" y2="36.3855" layer="21"/>
<rectangle x1="17.9705" y1="36.3855" x2="18.3515" y2="36.5125" layer="21"/>
<rectangle x1="25.5905" y1="36.3855" x2="26.2255" y2="36.5125" layer="21"/>
<rectangle x1="35.7505" y1="36.3855" x2="36.2585" y2="36.5125" layer="21"/>
<rectangle x1="43.4975" y1="36.3855" x2="44.0055" y2="36.5125" layer="21"/>
<rectangle x1="18.0975" y1="36.5125" x2="18.3515" y2="36.6395" layer="21"/>
<rectangle x1="25.5905" y1="36.5125" x2="26.2255" y2="36.6395" layer="21"/>
<rectangle x1="35.7505" y1="36.5125" x2="36.2585" y2="36.6395" layer="21"/>
<rectangle x1="43.4975" y1="36.5125" x2="44.0055" y2="36.6395" layer="21"/>
<rectangle x1="18.0975" y1="36.6395" x2="18.3515" y2="36.7665" layer="21"/>
<rectangle x1="25.5905" y1="36.6395" x2="26.2255" y2="36.7665" layer="21"/>
<rectangle x1="35.7505" y1="36.6395" x2="36.2585" y2="36.7665" layer="21"/>
<rectangle x1="43.4975" y1="36.6395" x2="44.0055" y2="36.7665" layer="21"/>
<rectangle x1="18.0975" y1="36.7665" x2="18.4785" y2="36.8935" layer="21"/>
<rectangle x1="25.5905" y1="36.7665" x2="26.2255" y2="36.8935" layer="21"/>
<rectangle x1="35.7505" y1="36.7665" x2="36.2585" y2="36.8935" layer="21"/>
<rectangle x1="43.3705" y1="36.7665" x2="44.0055" y2="36.8935" layer="21"/>
<rectangle x1="18.0975" y1="36.8935" x2="18.4785" y2="37.0205" layer="21"/>
<rectangle x1="25.5905" y1="36.8935" x2="26.2255" y2="37.0205" layer="21"/>
<rectangle x1="35.7505" y1="36.8935" x2="36.2585" y2="37.0205" layer="21"/>
<rectangle x1="43.3705" y1="36.8935" x2="43.8785" y2="37.0205" layer="21"/>
<rectangle x1="18.0975" y1="37.0205" x2="18.4785" y2="37.1475" layer="21"/>
<rectangle x1="25.5905" y1="37.0205" x2="26.2255" y2="37.1475" layer="21"/>
<rectangle x1="35.7505" y1="37.0205" x2="36.2585" y2="37.1475" layer="21"/>
<rectangle x1="43.3705" y1="37.0205" x2="43.8785" y2="37.1475" layer="21"/>
<rectangle x1="18.0975" y1="37.1475" x2="18.4785" y2="37.2745" layer="21"/>
<rectangle x1="25.5905" y1="37.1475" x2="26.0985" y2="37.2745" layer="21"/>
<rectangle x1="35.7505" y1="37.1475" x2="36.2585" y2="37.2745" layer="21"/>
<rectangle x1="43.3705" y1="37.1475" x2="43.8785" y2="37.2745" layer="21"/>
<rectangle x1="18.2245" y1="37.2745" x2="18.4785" y2="37.4015" layer="21"/>
<rectangle x1="25.5905" y1="37.2745" x2="26.0985" y2="37.4015" layer="21"/>
<rectangle x1="35.6235" y1="37.2745" x2="36.2585" y2="37.4015" layer="21"/>
<rectangle x1="43.3705" y1="37.2745" x2="43.8785" y2="37.4015" layer="21"/>
<rectangle x1="18.2245" y1="37.4015" x2="18.4785" y2="37.5285" layer="21"/>
<rectangle x1="25.5905" y1="37.4015" x2="26.0985" y2="37.5285" layer="21"/>
<rectangle x1="35.6235" y1="37.4015" x2="36.2585" y2="37.5285" layer="21"/>
<rectangle x1="43.2435" y1="37.4015" x2="43.8785" y2="37.5285" layer="21"/>
<rectangle x1="18.2245" y1="37.5285" x2="18.4785" y2="37.6555" layer="21"/>
<rectangle x1="25.5905" y1="37.5285" x2="26.0985" y2="37.6555" layer="21"/>
<rectangle x1="35.6235" y1="37.5285" x2="36.2585" y2="37.6555" layer="21"/>
<rectangle x1="43.2435" y1="37.5285" x2="43.8785" y2="37.6555" layer="21"/>
<rectangle x1="18.2245" y1="37.6555" x2="18.4785" y2="37.7825" layer="21"/>
<rectangle x1="25.5905" y1="37.6555" x2="26.0985" y2="37.7825" layer="21"/>
<rectangle x1="35.6235" y1="37.6555" x2="36.2585" y2="37.7825" layer="21"/>
<rectangle x1="43.2435" y1="37.6555" x2="43.8785" y2="37.7825" layer="21"/>
<rectangle x1="18.3515" y1="37.7825" x2="18.4785" y2="37.9095" layer="21"/>
<rectangle x1="25.5905" y1="37.7825" x2="26.0985" y2="37.9095" layer="21"/>
<rectangle x1="35.6235" y1="37.7825" x2="36.2585" y2="37.9095" layer="21"/>
<rectangle x1="43.2435" y1="37.7825" x2="43.7515" y2="37.9095" layer="21"/>
<rectangle x1="18.3515" y1="37.9095" x2="18.6055" y2="38.0365" layer="21"/>
<rectangle x1="25.7175" y1="37.9095" x2="26.0985" y2="38.0365" layer="21"/>
<rectangle x1="35.6235" y1="37.9095" x2="36.2585" y2="38.0365" layer="21"/>
<rectangle x1="43.1165" y1="37.9095" x2="43.7515" y2="38.0365" layer="21"/>
<rectangle x1="18.3515" y1="38.0365" x2="18.6055" y2="38.1635" layer="21"/>
<rectangle x1="25.7175" y1="38.0365" x2="26.0985" y2="38.1635" layer="21"/>
<rectangle x1="35.6235" y1="38.0365" x2="36.2585" y2="38.1635" layer="21"/>
<rectangle x1="43.1165" y1="38.0365" x2="43.7515" y2="38.1635" layer="21"/>
<rectangle x1="18.4785" y1="38.1635" x2="18.6055" y2="38.2905" layer="21"/>
<rectangle x1="25.7175" y1="38.1635" x2="26.0985" y2="38.2905" layer="21"/>
<rectangle x1="35.4965" y1="38.1635" x2="36.2585" y2="38.2905" layer="21"/>
<rectangle x1="42.9895" y1="38.1635" x2="43.7515" y2="38.2905" layer="21"/>
<rectangle x1="18.4785" y1="38.2905" x2="18.6055" y2="38.4175" layer="21"/>
<rectangle x1="25.7175" y1="38.2905" x2="26.2255" y2="38.4175" layer="21"/>
<rectangle x1="35.4965" y1="38.2905" x2="36.2585" y2="38.4175" layer="21"/>
<rectangle x1="42.9895" y1="38.2905" x2="43.6245" y2="38.4175" layer="21"/>
<rectangle x1="18.4785" y1="38.4175" x2="18.7325" y2="38.5445" layer="21"/>
<rectangle x1="25.7175" y1="38.4175" x2="26.2255" y2="38.5445" layer="21"/>
<rectangle x1="35.4965" y1="38.4175" x2="36.2585" y2="38.5445" layer="21"/>
<rectangle x1="42.9895" y1="38.4175" x2="43.6245" y2="38.5445" layer="21"/>
<rectangle x1="18.6055" y1="38.5445" x2="18.7325" y2="38.6715" layer="21"/>
<rectangle x1="25.7175" y1="38.5445" x2="26.2255" y2="38.6715" layer="21"/>
<rectangle x1="35.4965" y1="38.5445" x2="36.2585" y2="38.6715" layer="21"/>
<rectangle x1="42.8625" y1="38.5445" x2="43.6245" y2="38.6715" layer="21"/>
<rectangle x1="18.6055" y1="38.6715" x2="18.8595" y2="38.7985" layer="21"/>
<rectangle x1="25.7175" y1="38.6715" x2="26.2255" y2="38.7985" layer="21"/>
<rectangle x1="35.4965" y1="38.6715" x2="36.2585" y2="38.7985" layer="21"/>
<rectangle x1="42.8625" y1="38.6715" x2="43.4975" y2="38.7985" layer="21"/>
<rectangle x1="18.7325" y1="38.7985" x2="18.8595" y2="38.9255" layer="21"/>
<rectangle x1="25.5905" y1="38.7985" x2="26.2255" y2="38.9255" layer="21"/>
<rectangle x1="35.3695" y1="38.7985" x2="36.1315" y2="38.9255" layer="21"/>
<rectangle x1="42.7355" y1="38.7985" x2="43.4975" y2="38.9255" layer="21"/>
<rectangle x1="18.7325" y1="38.9255" x2="18.8595" y2="39.0525" layer="21"/>
<rectangle x1="25.5905" y1="38.9255" x2="26.2255" y2="39.0525" layer="21"/>
<rectangle x1="35.3695" y1="38.9255" x2="36.1315" y2="39.0525" layer="21"/>
<rectangle x1="42.7355" y1="38.9255" x2="43.4975" y2="39.0525" layer="21"/>
<rectangle x1="25.4635" y1="39.0525" x2="26.2255" y2="39.1795" layer="21"/>
<rectangle x1="35.3695" y1="39.0525" x2="36.1315" y2="39.1795" layer="21"/>
<rectangle x1="42.6085" y1="39.0525" x2="43.3705" y2="39.1795" layer="21"/>
<rectangle x1="25.4635" y1="39.1795" x2="26.3525" y2="39.3065" layer="21"/>
<rectangle x1="35.2425" y1="39.1795" x2="36.1315" y2="39.3065" layer="21"/>
<rectangle x1="42.4815" y1="39.1795" x2="43.3705" y2="39.3065" layer="21"/>
<rectangle x1="18.9865" y1="39.3065" x2="19.1135" y2="39.4335" layer="21"/>
<rectangle x1="25.3365" y1="39.3065" x2="26.3525" y2="39.4335" layer="21"/>
<rectangle x1="35.2425" y1="39.3065" x2="36.2585" y2="39.4335" layer="21"/>
<rectangle x1="42.4815" y1="39.3065" x2="43.2435" y2="39.4335" layer="21"/>
<rectangle x1="18.9865" y1="39.4335" x2="19.2405" y2="39.5605" layer="21"/>
<rectangle x1="25.2095" y1="39.4335" x2="26.3525" y2="39.5605" layer="21"/>
<rectangle x1="35.2425" y1="39.4335" x2="36.0045" y2="39.5605" layer="21"/>
<rectangle x1="36.1315" y1="39.4335" x2="36.2585" y2="39.5605" layer="21"/>
<rectangle x1="42.3545" y1="39.4335" x2="43.2435" y2="39.5605" layer="21"/>
<rectangle x1="19.1135" y1="39.5605" x2="19.2405" y2="39.6875" layer="21"/>
<rectangle x1="25.2095" y1="39.5605" x2="26.3525" y2="39.6875" layer="21"/>
<rectangle x1="35.1155" y1="39.5605" x2="36.0045" y2="39.6875" layer="21"/>
<rectangle x1="36.1315" y1="39.5605" x2="36.3855" y2="39.6875" layer="21"/>
<rectangle x1="42.2275" y1="39.5605" x2="43.1165" y2="39.6875" layer="21"/>
<rectangle x1="19.1135" y1="39.6875" x2="19.3675" y2="39.8145" layer="21"/>
<rectangle x1="25.0825" y1="39.6875" x2="25.9715" y2="39.8145" layer="21"/>
<rectangle x1="26.0985" y1="39.6875" x2="26.47

repository: Jelby/Hatalogico

path: /Prototype Files/Eagle/Hatalogico.brd

repo_name: Jelby/Hatalogico

extension: brd