Click here to Skip to main content
Click here to Skip to main content
Articles » Multimedia » GDI+ » General » Downloads
 
Add your own
alternative version

Image Processing Lab in C#

, 13 Mar 2007 GPL3
A tool and library for image processing
iplab_demo.zip
iplab_demo
AForge.dll
AForge.Imaging.chm
AForge.Imaging.dll
AForge.Math.dll
DockingToolbar.dll
iplab.exe
SourceGrid2.dll
SourceLibrary.dll
WeifenLuo.WinFormsUI.dll
iplab_src.zip
iplab_src
icons
about.gif
clone.gif
convolution.gif
copy.gif
cut.gif
disk.gif
fit_to_size.gif
folder_out.gif
fourier.gif
grayscale.gif
histogram_window.gif
levels.gif
morphology.gif
paste.gif
pie-chart.gif
resize.gif
rotate.gif
threshold.gif
view_1_1.gif
zoom_in.gif
zoom_out.gif
iplab
App.ico
banner.gif
column-chart.ico
Controls
Filters Forms
line-chart.ico
References
AForge.dll
AForge.Imaging.dll
AForge.Math.dll
DockingToolbar.dll
SourceGrid2.dll
SourceLibrary.dll
WeifenLuo.WinFormsUI.dll
Resources
arrow.bmp
harrow.cur
hmove.cur
Tools
<?xml version="1.0" encoding="utf-8"?>
<root>
  <!-- 
            Microsoft ResX Schema 
        
            Version 1.3
                
            The primary goals of this format is to allow a simple XML format 
            that is mostly human readable. The generation and parsing of the 
            various data types are done through the TypeConverter classes 
            associated with the data types.
        
            Example:
        
                ... ado.net/XML headers & schema ...
                <resheader name="resmimetype">text/microsoft-resx</resheader>
                <resheader name="version">1.3</resheader>
                <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
                <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
                <data name="Name1">this is my long string</data>
                <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
                <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
                    [base64 mime encoded serialized .NET Framework object]
                </data>
                <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
                    [base64 mime encoded string representing a byte array form of the .NET Framework object]
                </data>
        
            There are any number of "resheader" rows that contain simple 
            name/value pairs.
            
            Each data row contains a name, and value. The row also contains a 
            type or mimetype. Type corresponds to a .NET class that support 
            text/value conversion through the TypeConverter architecture. 
            Classes that don't support this are serialized and stored with the 
            mimetype set.
                     
            The mimetype is used for serialized objects, and tells the 
            ResXResourceReader how to depersist the object. This is currently not 
            extensible. For a given mimetype the value must be set accordingly:
        
            Note - application/x-microsoft.net.object.binary.base64 is the format 
                   that the ResXResourceWriter will generate, however the reader can 
                   read any of the formats listed below.
        
            mimetype: application/x-microsoft.net.object.binary.base64
            value   : The object must be serialized with 
                    : System.Serialization.Formatters.Binary.BinaryFormatter
                    : and then encoded with base64 encoding.
        
            mimetype: application/x-microsoft.net.object.soap.base64
            value   : The object must be serialized with 
                    : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
                    : and then encoded with base64 encoding.
            mimetype: application/x-microsoft.net.object.bytearray.base64
            value   : The object must be serialized into a byte array 
                    : using a System.ComponentModel.TypeConverter
                    : and then encoded with base64 encoding.
        -->
  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
    <xsd:element name="root" msdata:IsDataSet="true">
      <xsd:complexType>
        <xsd:choice maxOccurs="unbounded">
          <xsd:element name="data">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
              </xsd:sequence>
              <xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="resheader">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
              </xsd:sequence>
              <xsd:attribute name="name" type="xsd:string" use="required" />
            </xsd:complexType>
          </xsd:element>
        </xsd:choice>
      </xsd:complexType>
    </xsd:element>
  </xsd:schema>
  <resheader name="resmimetype">
    <value>text/microsoft-resx</value>
  </resheader>
  <resheader name="version">
    <value>1.3</value>
  </resheader>
  <resheader name="reader">
    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </resheader>
  <resheader name="writer">
    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </resheader>
  <data name="$this.SnapToGrid" type="System.Boolean, mscorlib, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
    <value>False</value>
  </data>
  <data name="$this.Name">
    <value>ImageStatisticsWindow</value>
  </data>
  <data name="$this.Icon" type="System.Drawing.Icon, System.Drawing, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" mimetype="application/x-microsoft.net.object.bytearray.base64">
    <value>
        AAABAAgAEBAAAAEACABoBQAAhgAAABAQAAABACAAaAQAAO4FAAAYGAAAAQAIAMgGAABWCgAAGBgAAAEA
        IACICQAAHhEAACAgAAABAAgAqAgAAKYaAAAgIAAAAQAgAKgQAABOIwAAMDAAAAEACACoDgAA9jMAADAw
        AAABACAAqCUAAJ5CAAAoAAAAEAAAACAAAAABAAgAAAAAAEABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//
        /wDkbyAAK8xiALCjoAAAnAsAnXBUAP7RtwCB4akA6adsAEykMQBjzXYAxtvIAAq+NgChWSIAx1UAAIWm
        hgDu3OQAyoJCALHEfwBQplgAyri4AMSXggCVw6AAoYqMABebJACuejQAKb1GAErddgDdy8UA3oUwANVu
        CgD+5fQAALIkAK59XQDewLAAxq6kABWrMwCouJ8A3NbaAIDWlwCxlJIAm9OoAJRtYwDATg4A077KAKyq
        rwDBYQoAAMInAOvJsQDpeSsA3Z9vAMvGwQD+8/MA5s3WAB3ERwBPn0wA9OfqALmcmgDh3OQA79HdAKeZ
        lQDEvMEA8eHbALqjowDDp50AqZCNANrCxADm29wA9/D4ANRqAgDRbxIA4NLSAOWscgD/8PsAr52aAOzm
        7ADWyckA/Pj5APrt8AD74O8A9OLiAAW5NAD35/MA79raAKqJjwD75ukA5+DhANPDwwC1mJYAq5WQAOnX
        3wDh1tYAu5+fAO3e3wDv5OgA2dLYAPfl5QCwmZUA7eHkAKaUkAD68PQA0sbJAP/7+wDIu7sA+evsAPLf
        3wClkYsAs56cAOHY2gDr2eMA/vb2ANnLywDWxcUArZqYAP7y+ADc09YAqpeTALOhnwD26uoAsKCcAPHc
        3ADYx8cA1cHFALeenAD/9/oA+/HxALSVkwD45ugAqZOOAK2XkgD68PgA4NriAKydmgDZyckAppKOAPvy
        9QD15uYAr6GfAP/y+gD25uoA9eTlAO/c5gDn294A39LUAKeSkACqk5AAqZWRAKuUkgCtm5YArZ2YALGd
        mwD/+fsA9N/fAOHW2ADf1tYA1MXFAPPg4ADs2OIA4tnZAKeRjQDXyMgA//r6APvx9AD35uYA9uTkAPTh
        4QDx29sAppGMAKeUkQCqmJQArZiTAK2clwCtnpoAsqGeALGjnwD38PcA9ubmAPPf3wCmkY0Ap5KNAKiT
        jgCqlJAAqZeTANjLywDYyckA18nJALGemwCynpwAyri5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAQquCWpK2gbSgs2uoh2QAAGyEX15IsaS6pWGhmad/AABiDyI7mo2mnGp5WFR5
        WQAAch1JLwY+cGi5oRV6hikAAJejsD8fJE9NUZ1xebJZAAC7fndMMRJFuIk5ZoyAOgAAS0Rcn2AeQy2O
        Iw4WQRgAALw0nmN0BxpSEAIzCUYrAACuMDggEWU3FxsKLlODQAAAdgELBSYDEywyCCF7VnwAAIVtWwwN
        FG5HvVAqJTxdAACKAZhzj4t9J4hpNigZVQAABAEBTldnoptvNZBKHLUAAD2veK2WrJW3qnWpk5SRAAAA
        AAAAAAAAAAAAAAAAAAD//wAAgAEAAIABAACAAQAAgAEAAIABAACAAQAAgAEAAIABAACAAQAAgAEAAIAB
        AACAAQAAgAEAAIABAAD//wAAKAAAABAAAAAgAAAAAQAgAAAAAABABAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAqpGN96+ZlPqul5L2rJWQ86uTj/Crk4/tqpKN6qiQi+aoj4vkpo6K4KaOiN6mjYjapYyHzaSJ
        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
        /DvM/MX9xeWrx28+mAAAxHEBAQEBzufjw3Ud0uu1kmaPphFcmAAABMSB7jExwcHBpKSkpKRISEgAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8AgAf/AIAAAQCAAAEAgAABAIAAAQCAAAEAgAABAIAA
        AQCAAAEAgAABAIAAAQCAAAEAgAABAIAAAQCAAAEAgAABAIAAAQCAAAEAgAABAIAAAQCAAAEAgAA/AP//
        /wAoAAAAGAAAADAAAAABACAAAAAAAGAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAJhycqCkgIDXnHl5y5hxcb6SbGyyk2trpZNtbZiTa2uMkmxsf5Vr
        a3OUampmlmpqWpVnZ02Ua2tAlWdnNJNkZCecaGgajmxsDqVrawUAAAAAAAAAAAAAAAAAAAAAAAAAAJRx
        cbL76ur/9ubm//bm5v/04+P/8eDg/8y7u//o09P/4MrK/9vFxf/Zv7//vaSk/86wsP/GqKj/waGh/76c
        nP+riYn/tY6O/rCJifu4iYnzs4KC56RubnQAAAAAAAAAAJNwcLD05+j/1crP/9nMz//x4OD/8d/f/9DA
        wP/x4eH/797e//Dd3f/z4OD/0MHB//Le3v/u3Nz/79vb//Hd3f/Qvr7/8dzc/+/Z2f/v2tr/48nJ/5Ri
        YoYAAAAAAAAAAJR1d63dvav/uFoM/5uBd//d1Nr/9ubn/9HCwv/x4OD/7t7e/+7c3P/w3t7/z76+//Dd
        3f/s2dn/7NjY/+7a2v/Nu7v/7dbW/+nT0//r1NT/38bG/5JhYYYAAAAAAAAAAJJ2eKntw6b/3YAh/8df
        Af+4cT3/08XG/8/Hyv/z4+X/8+Pk//Hg4P/z4uL/0cLC//Hf3//v29v/7dra//Db2//Pvr7/79ra/+vV
        1f/r1tb/4cfH/5JkZIYAAAAAAAAAAJV2dqbTycz/0MnP/9u+pv/ll0b/wVUA/51mQP+WhoD/v7W2/9zN
        zf/dzs7/wLOz/97Ozv/ezc3/4M7O/+HPz//EtLT/48/P/+HNzf/jz8//2sHB/5NjY4YAAAAAAAAAAJF1
        daT26ur/9Ojo//Po6//z6u3/+NGv/9Z1Ff+8UAD/sKyz//Hi4v/t3d3/zb+//+va2v/n1tb/5tTU/+jV
        1f/IuLj/5dLS/+LOzv/hzs7/1sDA/5NmZoYAAAAAAAAAAJN3d6D05+f/8ufn//Ll5f/y5ub/9e30/8+p
        if/ZeRz/xKKP//br7f/z5OT/1MbG//Li4v/w39//797e//Lf3//RwsL/79zc/+7Z2f/u2tr/4srK/5Jl
        ZYYAAAAAAAAAAJF4eJ3y5ub/9Ojo//Pn5//z5+f/9unp/9bR2P/ztnn/wm4l/+fg6P/15+j/1cfH//Pk
        5P/v39//8N/f//Tj4//VxcX/8d7e/+zZ2f/u29v/4svL/5JoaIYAAAAAAAAAAJF6epr06Oj/9+zs//br
        6//37Oz/9+zs/9jQ0//z1b//3YMo/8itof/67vD/2MzM//fo6P/z5OT/8+Tm/8y+w/+hmqD/6Nzg//Tj
        5v/s3N3/4crL/5VoaIYAAAAAAAAAAJR/f5ff19f/49ra/+Pa2v/i2tr/49ra/8e+v//j3uX/66tp/7tq
        KP/e1+D/uaWu/8y6v//i1df/2svK/8tkA/+oSAH/rWo5/7uMcf+lfGb/oJGR/4xlZYYAAAAAAAAAAJKB
        gZPp3uH/4dLZ/97S1f/t5OT/7uTk/8/Hx//t5Of/78+3/9x1G/+mn4n/E64w/06PSv/aw9X/0oxY/9p8
        G//Ni1L/5JND/89oA//ceRT/o2pG/4RjZYoAAAAAAAAAAJWChJDS18z/N6hA/5mmk//y4uj//vT0/9vT
        0//57/D/+fD2//CoY/8vt0n/Ntxv/wKyIv86pkD/zmIA/+25mf/Z0tz/9ery//Dg4P/dqID/0769/5dt
        bYoAAAAAAAAAAJaEh46u2LX/I9hh/wCdCP+ItIP//Of0/+HW2f/98vP///D5/03Qev8duUH/uKii/8Ta
        vf8gvUf/EbMv/3mlff+fkZP/59bX//Hh4v/x4uX/5tPU/5NsbIoAAAAAAAAAAJOGhor66vD/5+7l/2TM
        eP8ApQj/M6Y0/7y5tv//5fT/bNaN/xLCSf/KoUv/rWY9/81uI//cgy3/atqT/xTEQP8ini7/0bXA//bk
        5P/x4eH/59PT/5NqaooAAAAAAAAAAJOHh4fm39//9Ozv///t9/+22L3/ErEv/wCfCP83oEL/Dbw6/57G
        o//1yKz/vlAA/8NcAP/Ls6r/9Nrn/3LOjv8OvTn/ca51/+LI0P/ezs//1cPD/5Rra4oAAAAAAAAAAJKI
        iITa1dX/5+Li/+ji4//v5On/9urv/1O/av8k1V3/S6JP/+3a5f/s3Nn/34cr/7N4Sf/i3eL/8OTk///j
        7f98zJT/B7kw/5OyjP/33+X/6dbW/5NubooAAAAAAAAAAJKJiYHv6+v///v7//z4+P/99/f///j6/+jb
        4f+14b3/6+Lj//309f/68vT/3Nfd//jy9//36+v/9Ojo//bo6P/nzdb/aNOI/wewJ/+Vnov/07zB/5dv
        cIoAAAAAAAAAAJOMjH3t6en//fr6//v4+P/69/f//fj4/+Da2v//9vj/+/P0//fv7//48fH/3NPT//jt
        7f/06en/8+fn//Tn5//azc7//+fw/zvBWf8FqBv/kJaD/41paooAAAAAAAAAAJCMjHvs6ur//v39//z5
        +f/7+Pj//fn5/+Db2//89vb/+fLy//ny8v/68vL/3dbW//nw8P/37Oz/9urq//fs7P/bz8///+nu/6zc
        tP8o0lz/oqqV/5dvcYoAAAAAAAAAAJSOjnjy8PD//////////////////////+Le3v/69fX/8+3t//Dn
        5//t4+P/0cnJ/+XX1//e0dH/2svL/9jHx//DsLD/0bu8/9O2uv/UsLj/yKeq/5dwcIsAAAAAAAAAAJqX
        l2CdmprMmpSUxJSOjryRioq0kIeHrJKHh6SRgoKckoGBlJOBgYySgYGEk319fJF9fXSRe3tslXl5ZJR2
        dlyUeHhUknJyTJZ0dESWdHQ8lnJyNJN1dRoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        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
        bpqWb2+Olm1tgpRvb3aXb29pl21tXZdsbFCYbm5ElmxsOJZubiyTaWkfk2trE4p0dAm8WFgDAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACTb2/g6tjY/+rX1//lz8//4MrK/9vE
        xP/Vvb3/0rq6/7Kbm//Jra3/wqWl/76goP+6mZn/s5OT/7COjv+if3//poGB/6J5ef+dcnL+mGxs+5Rp
        afafb2/soW9v4KFubtSibm7IoW1tu6Nra6+hbW2ipGxslqhycn0AAAAAAAAAAJJtbd3q2dn/8uDg//Lh
        4f/y4eH/8eDg//Hg4P/14uL/xLa2//Ti4v/x39//8uDg//Lg4P/x39//9ePj/8u6uv/v3t7/8uDg//Lf
        3//x4OD/8d7e//Da2v/GsrL/4crK/+DGxv/av7//1re3/9Cysv/Mqqr/lmJi6QAAAAAAAAAAknBw2ezZ
        2f/h1dj/xrzA/8/Bwv/s2tr/797e//Hh4f/DtLT/8ODg/+7c3P/t29v/7dvb/+3a2v/w3d3/x7a2/+vY
        2P/t2Nj/7NfX/+vX1//r1tb/79jY/8e1tf/o09P/69bW/+vV1f/s1NT/69bW/+vU1P+TYmLpAAAAAAAA
        AACUcXHX5djb/7p/Vv+tYCj/m46M/8q/wv/15OT/8+Li/8W3t//w39//7t3d/+7c3P/u3Nz/7tvb//De
        3v/Kubn/6dfX/+zZ2f/s2Nj/7NjY/+vX1//u2dn/yLW1/+nS0v/r1NT/6tPT/+nS0v/q0dH/6NLS/5Ni
        YukAAAAAAAAAAJJ0ddPgysT/13QR/9Z1Fv+oSAH/q4l2/9rS2f/y4+b/yLq6//Pi4v/w39//8N/f/+7d
        3f/u3d3/8d/f/8m8vP/r2Nj/7tra/+3a2v/s2dn/7NjY/+7a2v/Htrb/6NPT/+rV1f/q1NT/6tPT/+nS
        0v/q09P/k2Fh6QAAAAAAAAAAlHV10Ove5P/lqnj/1oEy/+WSPv/IWwD/tFwa/8KlnP+zrrT/6dzd/+bV
        1v/x4eL/8uHh//Lh4f/z4uL/zL29/+va2v/v3d3/7t3d/+/b2//t2tr/8Nzc/8q4uP/q1dX/7djY/+rW
        1v/q1NT/69TU/+rU1P+TYmLpAAAAAAAAAACUdXXMxba2/83Eyf/PyM//1b2v/++3ff/egiT/vk4A/6JW
        IP+PdWn/koyP/7etrv/bzc3/28zM/97Pz/+7r6//28vL/9/Pz//gz8//4c/P/+HPz//l0tL/wbGx/+DN
        zf/k0ND/48/P/+XPz//l0dH/5tDQ/5NlZekAAAAAAAAAAJJ2dsrj09P/7+Hh/+ze3//q3eD/6eDk//jd
        yf/ysWz/yWEB/8xhAP+kTg//op2i/93Pz//h09P/49TU/7+xsf/czMz/387O/93MzP/cy8v/3crK/9vL
        y/+5qan/1sTE/9nGxv/XxMT/1sPD/9fDw//VwsL/lGVl6QAAAAAAAAAAknh4xeXV1f/16Oj/8+bm//Pm
        5//z5eb/8ubp//Xt9f/Xk1L/6JlG/7dJAP+spqv/9+rq//Lj4//05OT/z8HB/+3d3f/y4OD/8uDg//Df
        3//x3t7/8uDg/8u7u//s2dn/79vb/+/b2//t2dn/7tnZ/+3W1v+TZWXpAAAAAAAAAACSeHjE5dbW//bo
        6P/z5ub/8+bm//Lm5v/y5eX/9enr/8rFzP/in13/4Ys2/8GLZv/p4eX/8+Pj//Pk5P/Pw8P/7Nzc/+/f
        3//v39//797e/+7d3f/x39//y7u7/+rY2P/s2dn/7NjY/+zX1//r19f/6tfX/5NmZukAAAAAAAAAAJJ7
        e7/j1NT/9erq//Pn5//z5+f/8+fn//Pn5//36en/y8TG/+7Tw//0r2f/vlgA/9TL0v/16Oj/9OXl/9HE
        xP/s3t7/8eDg/+/f3//v39//8N7e//Lh4f/Nvr7/7Nra/+7a2v/s2dn/7NjY/+vY2P/s19f/k2Vl6QAA
        AAAAAAAAlHx8vuHW1v/37Oz/9Ojo//To6P/06Oj/8+jo//bq6v/NwsL/9e70/+20ev/bgSf/vItt/+rh
        5P/16Oj/0MXF/+7e3v/w4eH/8ODg/+/h4f/y4eL/49bZ/7mtrv/i0dL/8d/f/+/b2//u2tr/79vb/+7Z
        2f+TaGjpAAAAAAAAAACSfX244tXV//jv7//27Oz/9u3t//br6//26+v/+u/v/8/Fxf/47e//8NO+//Ot
        ZP+6VQH/1M/X//vu7v/Vycn/7uDg//bn5//z5OT/8+Tl/+HW2/+2h2v/jG5h/6SgqP/Zz9X/7N7i/+bX
        2v/YyMr/3cvM/5VqaukAAAAAAAAAAJWBgbjOw8P/39bW/+DX1//f1tb/3tXV/93U1P/f1tb/u7Oz/97V
        1v/e2eD/6q92/9Z2GP+yhm3/3tPX/7Siqf+3pKz/v7O0/9vOzv/f1Nn/y5t0/9d3Ff+7TgD/rkgA/7Bg
        Jv+3e1X/nnJY/5VrU/+dlZj/hmJi6QAAAAAAAAAAk4GBstDExP/m3t//2c7P/9rS0//n3t7/5Nvb/+bd
        3f/AuLj/5dvb/+Xb3f/myLP/8ale/7VRBP/EuMT/LZ85/xyaIf+Riob/yrvB/+zi6f/AZBT/4484/8Je
        Bv/giC//13gW/8dfAP/TchH/zGAA/6N1XP9/XmHuAAAAAAAAAACSgYGx5dna/+HU2P+xs6n/x7vB/+Xc
        3f/78vL//PHx/9LJyf/37+//+Ozt//bx9v/1uX//3WUL/1OmTv884XT/I8VN/wqdEP+Wr5f/03tJ/9Bm
        AP/Zijz/yMTO/+3g4f/v1MX/7MSn/9mGM//IZAP/up6T/5Fpau8AAAAAAAAAAJWEhKvj0Nf/KbI+/wCs
        GP9joGD/wq+8//7y9P/78vL/0MjI//fu7v/17e3/9+7x///Sv/+Mt1z/JdFn/y/IXf9GwmT/Ero7/way
        J/9YiAr/33gh/+rV1f/Lv8L/7t7e//Lh5P/v4OX/8OPp/+nb4f/x4uT/k2tr7wAAAAAAAAAAk4ODq+fU
        2/8y1WX/Nths/wChBv87oTn/1szN//jp7//Wzs//9+7u//ju7///7/b/q964/yLNYf8bwEf/iIdm///p
        +/+pzqH/I8RU/xK+Qf8esjn/h56F/5WCiv/Ftrn/7Nzc//Hg4P/u3t7/797e//De3v+Ta2vvAAAAAAAA
        AACVhoal4NTW/+Tw5P+X16T/Hbc6/wCnFv8AnQf/i7iH/8e1wP/88fT///P4/8fky/8jy1z/E75F/6uY
        Nf+xThD/w8TP/81gEP/RdhP/VsVp/xi/R/8KsST/BJ4P/5yUkf/by83/8uDg/+7d3f/u3Nz/8d7e/5Jq
        au8AAAAAAAAAAJOFhaTd1NT///n8///3/f//9/r/bM+B/wavI/8Aogj/JZon/7e0sP+1wLb/Ksxi/xa+
        Qf+T0Jv//76F/8RbAP+rVRb/024G/9qNQ///7/7/lNmi/z/me/8dv0P/RppK/9q+yv/35uf/8uHh//Hf
        3//y4eH/k2xs7wAAAAAAAAAAlYmJn83Hx//p5eX/5uHh/+fg4f/04+z/stG3/yC1QP8Eqxv/AZ0I/xCm
        IP8UuTj/Uqha/+7c6f/hwaf/x2AD/7xSAP/AZBH/sqmo/9rQ0v/gzNL/jMKX/yXGU/8Tujn/dat2/8y1
        vf/Wx8f/08TE/9TFxf+UbW3vAAAAAAAAAACTioqexsDA/+Le3v/h3t7/5N/f/+bh4f/s4eb/9Ofu/27G
        gf8hxk//MtJk/yOgKv/QvMj/8Ojq/+vg3//ijTT/028K/62BZv/b1Nf/8OTk//Hj5P/84+v/s9G4/x/H
        VP8Msyz/l7KP/+rT2f/14+P/8uLi/5NsbO8AAAAAAAAAAJWKipnZ09P///z8//z4+P/8+fn//Pf3//34
        +P//+fr/5tTd/5ffq/9Dx2f/rMCp//bq7f/58fH/+vP2/9rKwf/cvar/6ubo//fs7f/06Oj/9Obm//bo
        6P/cx83/p9mz/xjBSP8LriT/pK6a/97Jzv/v3t7/lG5u7wAAAAAAAAAAko2Nl9bR0f///f3/+/f3//v3
        9//69vb/+vX1//34+P/Y0tP///X5///2/f//9fj/+fHx//ju7v/58PD/2tLU//Do6v/27e3/9erq//Pn
        5//z5ub/9ejo/9PHx//94+v/iNae/xW8P/8Mphv/hYJ7/8Oytv+RbW3vAAAAAAAAAACUjIyT1dHR///9
        /f/7+fn/+/j4//v39//69vb//fj4/9fV1f/59PT/+PLy//jx8f/38PD/9+/v//nx8f/a0tL/8OXl//bq
        6v/06en/8+jo//Pn5//16Oj/1MjI//Hh4v//5vD/XcZ0/xGzLv8FphX/qKGc/4dkZe8AAAAAAAAAAJSQ
        kJDU0dH///7+//z6+v/8+fn/+/j4//v39//9+fn/2dbW//n09P/69PT/+PLy//jw8P/37+//+fDw/9vV
        1f/u5eX/9urq//Tp6f/06Oj/8+fn//Xp6f/TyMj/7+Hh//nk6P+u1K7/NeJz/w68Of+kp5j/kmxt7wAA
        AAAAAAAAko+PjdPR0f////////39//38/P/++/v//fv7///9/f/b19f//Pb2//z39//79vb//PX1//rz
        8//99PT/3tfX//Tq6v/78vL/+e/v//ru7v/57e3/++/v/9fMzP/16Oj/+err///q7/+63b3/vM62//Xg
        5v+Wb2/vAAAAAAAAAACWkpKK09HR///////6+Pj/9/Pz//Hv7//t6en/6+fn/8zGxv/h2tr/3tbW/9rQ
        0P/VzMz/0sbG/9DDw/++sLD/wrOz/8Ozs//Ar6//vKmp/7mjo/+3oKD/qZKS/66UlP+rkZH/qoyM/6iH
        iv+mhIb/on9//5l0dPAAAAAAAAAAAJmXl4CUk5PskY6O45CLi9uRiorUkYqKzJGJicSTiYm8lImJtZOG
        hqyUhYWlk4SEnZSCgpWSgoKNlYCAhpSCgn6VgYF1ln19bpV/f2aUfHxemH19VpR6ek+VfHxHk3d3P5l2
        djeSenowlXR0J5xych+TdHQYlmhoEQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////+AAf//gAAAAYAAAAGAAAABgAAAAYAA
        AAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAA
        AAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAABgAAAAYAAA///////KAAAADAAAABgAAAAAQAIAAAA
        AACACgAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A2HwgACXRZwCkoKgAa4AIAPbCjgB4bWoAB6kaAIy3
        XADP4M8AqkUAAMGLZgBHlUQAh9edAP/SvwC0kDIAW8t3AOeaSwDTuLgAmIGBACC5QgCxZS4A7tzpAMtj
        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
        AAAAAwAAwAAAAAADAADAAAAAAAMAAMAAAAAAAwAAwAAAAAADAADAAAAAAAMAAMAAAAAAAwAAwAAAAAAD
        AADAAAAAAAMAAMAAAAAAAwAAwAAAAAADAADAAAAAAAMAAMAAAAAAAwAAwAAAAAADAADAAAAAAAMAAMAA
        AAAAAwAAwAAAAAADAADAAAAAAAMAAMAAAAAAAwAAwAAAAAADAADAAAAAAAMAAMAAAAAAAwAAwAAAAAAD
        AADAAAAAAAMAAMAAAAAAAwAAwAAAAAADAADAAAAAAAMAAMAAAAAAAwAAwAAAAAADAADAAAf///8AAP//
        /////wAA////////AAAoAAAAMAAAAGAAAAABACAAAAAAAIAlAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACYc3PAl3Bwy5Vvb8CVb2+zlXFxp5dwcJuWb2+Ol3Fxgpdv
        b3aYcHBpmHJyXZZwcFGZb29El25uOZpwcCuXb28gmnJyFI1xcQl9iIgEhQAAAgAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACVcXHo2MPD/9vExP/Vvr7/0bi4/8yy
        sv/Gra3/wqen/76iov+5nJz/tZeX/7GQkP+hgID/qIaG/6N/f/+eenr/mnR0/pdvb/yYb2/1mHFx65xz
        c+CfcnLVoHNzyKBzc7yfcnKwoHJyo59xcZihcnKKoHJyf6FwcHOjcHBlom9vWqFzc02jb29Bo29vNaNr
        ayildXUcoXFxEZVXVwmfc3MF/wAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACUcXHg5dHR//De
        3v/w3d3/8N3d//De3v/v3t7/8N7e//Df3//w39//8eDg/+7d3f+/sLD/9eLi//Lg4P/z4eH/8uDg/+/d
        3f/u2dn/6NXV/+TR0f/izMz/xa+v/8aurv/UuLj/zbKy/8msrP/EpaX/wKCg/7ybm/+3lJT/s4+P/62G
        hv+geXn/pn5+/6F2dv+ecXH/mmtr/ZlqaviVZmbxkGho6JxoaN2hamrSo2xsnAAAAAAAAAAAAAAAAAAA
        AACVcHDf5NHR/+/d3f/v3d3/793d/+/d3f/v3d3/793d/+7c3P/u3Nz/79vb/+zZ2f+8rq7/8N7e/+3b
        2//t2tr/7dra/+3a2v/u29v/7tra/+3a2v/v3Nz/0cDA/9bFxf/v29v/7tra/+3a2v/u2dn/7tra/+7Z
        2f/t2dn/7tnZ/+fT0/+/r6//8dvb/+3Y2P/t19f/7NfX/+zT0//o0dH/5MvL/+HHx//Orq7/lmRkzAAA
        AAAAAAAAAAAAAAAAAACUc3Pe5NHR//Df3//s29v/3MzM/9fIyP/h0dH/797e/+7c3P/u3Nz/7tzc/+va
        2v++r6//8d/f/+7b2//u29v/7dvb/+3b2//t2tr/7dra/+3a2v/v29v/0b+//9XFxf/t2dn/7NjY/+zX
        1//r19f/69bW/+vW1v/r1tb/7NbW/+TOzv+9q6v/7dfX/+rT0//p0tL/6dLS/+nR0f/q0tL/6NHR/+rT
        0//Zu7v/lWNjzAAAAAAAAAAAAAAAAAAAAACWcnLV4s7P/+3d3f/MwcP/vbS4/7iusf/Dtbb/1cbG//Df
        3//u3d3/7t3d/+zb2/+9sLD/8d/f/+7c3P/u3Nz/7tzc/+7b2//t29v/7dvb/+3a2v/v3Nz/0sHB/9bE
        xP/t2tr/7NjY/+zY2P/s2Nj/7NfX/+vX1//r1tb/7NfX/+XPz/++rKz/7dbW/+rU1P/q09P/6dPT/+nS
        0v/p0dH/6dHR/+nS0v/YvLz/lWVlzAAAAAAAAAAAAAAAAAAAAACVc3PV49DR/9nN0P+4d0r/sFcV/6ty
        Uf+XkZT/vbCx/+jY2P/w39//8N7e/+/e3v+9r6//8eDg/+7d3f/u3d3/7tzc/+7c3P/u3Nz/7tzc/+7b
        2//v3d3/08PD/9TExP/v3Nz/7dnZ/+zZ2f/s2Nj/7NjY/+zX1//r19f/7NbW/+XR0f+/ra3/7djY/+rU
        1P/q1NT/6tPT/+nT0//p0tL/6dHR/+vT0//Zvb3/lWRkzAAAAAAAAAAAAAAAAAAAAACWdnbT5NPV/8+a
        dP/NZgH/0XAR/7lOAP+eYj//n5aZ/8q+wf/s3N3/8eHh/+/f3/+9sLD/8eHh/+/e3v/v3t7/793d/+7d
        3f/u3d3/7tzc/+7c3P/w3t7/1MPD/9XGxv/u29v/7dra/+3Z2f/t2dn/7NnZ/+zY2P/s2Nj/7djY/+XQ
        0P+/r6//7tfX/+vV1f/q1NT/6tTU/+rT0//p09P/6dLS/+rS0v/Zvb3/lWZmzAAAAAAAAAAAAAAAAAAA
        AACUdXXM39DT/92mev/jkkD/7KVc/8FZAP+7UgD/s1IG/76Pdv/JwcT/18vN/+7e3v/As7P/8+Pj//Dg
        4P/w39//8N7e/+/e3v/v3d3/7t3d/+7d3f/w3d3/1MTE/9fFxf/u3Nz/7dvb/+3a2v/t2tr/7dnZ/+zZ
        2f/s2Nj/7dnZ/+bR0f/Arq7/7tjY/+vW1v/r1dX/6tTU/+rU1P/q09P/6dPT/+rU1P/Zvr7/lWVlzAAA
        AAAAAAAAAAAAAAAAAACUd3fM4NDQ//Pl5v/dml7/0HQd/9eEOP/lmEf/z20M/75SAP+0VxT/vZeF/8e/
        xP+upKX/7N3d/+HS0v/j09P/797e//Dg4P/v3t7/797e/+/d3f/w3t7/1MXF/9bGxv/w3d3/7tvb/+3b
        2//t2tr/7dra/+3Z2f/s2dn/7djY/+bT0//Ar6//7dra/+vW1v/r1tb/69XV/+rU1P/q1NT/6tPT/+rV
        1f/Zvr7/lWVlzAAAAAAAAAAAAAAAAAAAAACVeXnJ2MbG/+ja2//n3eD/6eHn/+rWzP/zxZr/9bNw/96J
        Mf/KZQL/uEwA/7NcIf+XeWz/o56i/62kp//Btbb/0MLC/+/e3v/y4uL/8uDg//Hg4P/z4uL/18jI/9nJ
        yf/y4eH/8N7e//De3v/v3d3/793d/+/c3P/v3Nz/7tvb/+fU1P/DsrL/8Nvb/+zZ2f/s19f/7NjY/+3W
        1v/r1dX/69XV/+3W1v/bv7//lWdnzAAAAAAAAAAAAAAAAAAAAACWeXnEwbGx/8a6uv/Furr/xLi5/8S5
        uv/Bubz/1L6v//TCkf/up13/130e/8VcAP+0SgD/n00W/49SLP94bWr/lI2N/66iov/Et7f/xbe3/8W3
        t//Iu7v/saam/7WoqP/LvLz/zby8/8y+vv/Ovr7/z7+//9C/v//QwMD/0sHB/829vf+rnp7/1sXF/9XD
        w//Ww8P/1sPD/9fExP/ZxMT/2MTE/9nFxf/OtLT/lWdnzAAAAAAAAAAAAAAAAAAAAACVeHjE383N//bo
        6P/15ub/9efn//Xn5//05eb/8+Xn//Hm6v/12sn/98GK/+iZS//BWQD/zmsL/8NYAP+mViD/o52g/82/
        v//x4uL/7t7e/+3e3v/t3d3/0sTE/9LExP/r2tr/59fX/+fW1v/m1dX/5dTU/+PT0//k0dH/4tHR/9zJ
        yf+5qan/4s/P/9/MzP/ey8v/3srK/9zJyf/cyMj/28fH/9zIyP/NtLT/lWhozAAAAAAAAAAAAAAAAAAA
        AACUenq/2srK//Tn5//y5eX/8uXl//Lk5P/y5OT/8uTk//Lk5f/y5ef/8ubp//XZw//PbQr/9LZ3/9N0
        Fv+vTAT/npqg/9vMzP/y4+P/8OLi//Dg4P/y4uL/18rK/9nKyv/x4eH/8N/f//Df3//v3t7/797e/+/d
        3f/v3Nz/7t3d/+fV1f/Ds7P/8dzc/+3a2v/t2dn/7djY/+zY2P/s19f/7NbW/+zY2P/bwMD/lWhozAAA
        AAAAAAAAAAAAAAAAAACWe3u62cnJ//Tn5//y5eX/8uXl//Ll5f/y5eX/8uXl//Ll5f/y5eX/8uTl//Ho
        7P/Gl3H/13se/8lmCv/AVgD/spKC/+DU1v/z5OT/8eLi//Dh4f/x4+P/2MrK/9fJyf/y4OD/79/f/+/e
        3v/v3t7/793d/+7d3f/u3Nz/79vb/+jW1v/CtLT/8N3d/+3Z2f/s2Nj/7NjY/+zX1//r19f/69bW/+3X
        1//awcH/lWpqzAAAAAAAAAAAAAAAAAAAAACWfHy62srK//Xo6P/z5ub/8+bm//Pm5v/z5ub/8+bm//Pm
        5v/z5ub/8uXl//Pm5v/CvMD/6LiQ//i7fv/ZgCf/vGcn/9DJzv/w4+P/8eLi//Hi4v/z4uL/2svL/9fJ
        yf/y4eH/8N/f/+/f3//v3t7/797e/+/d3f/u3d3/793d/+jV1f/Ds7P/79zc/+3a2v/t2dn/7NjY/+zY
        2P/s19f/69bW/+zY2P/bwMD/lWlpzAAAAAAAAAAAAAAAAAAAAACWfHy018fH//Xp6f/z5+f/8+fn//Pn
        5//z5+f/8+fn//Pm5v/z5ub/9Obm//Tm5v/Durr/9Obm/+ifU//wrWr/v1MA/8epnP/h1tf/8+Xl//Hj
        4//y4+P/2czM/9jKyv/y4+P/8ODg//Dg4P/v39//797e/+/e3v/v3d3/797e/+fX1//DtbX/797e/+3a
        2v/t2tr/7NnZ/+zY2P/s2Nj/69fX/+zY2P/bwsL/lGlpzAAAAAAAAAAAAAAAAAAAAACVfX2x18fH//bq
        6v/06Oj/9Ojo//To6P/06Oj/8+fn//Pn5//z5+f/8+fn//Tn5//CuLn/9Ovu/+e1if/3u33/1Xca/7lp
        L//OyM3/8+Xl//Hj4//y5OT/287O/9jLy//x4uL/8OHh//Dg4P/w4OD/79/f/+/e3v/w39//8d/f/+nY
        2P/Ftrb/8t/f/+3c3P/t2tr/7dnZ/+zZ2f/s2Nj/7NfX/+zZ2f/bwsL/lGtrzAAAAAAAAAAAAAAAAAAA
        AACVgICx18jI//br6//06en/9Onp//Tp6f/06Oj/9Ojo//To6P/06Oj/9ejo//Xo6P/Dubn/9enq//Hj
        4v/qo1r/7KZd/7xQAP/GrKT/4dbX//Tm5v/y5ub/2s3N/9jMzP/z4+P/8OHh//Dh4f/w4OD/8ODg/+/f
        3//v39//28zM/8m8vP+rnp7/3s7O//Dd3f/t3Nz/7dra/+3Z2f/t2tr/7dnZ/+7Z2f/bw8P/lWpqzAAA
        AAAAAAAAAAAAAAAAAACVf3+p1cbG//js7P/16ur/9Orq//Tq6v/06en/9Onp//Tp6f/06en/9Onp//Xp
        6f/Furr/9urq//Tq7v/otYf/97x+/9FwEf+4bTb/z8bL//Pm5v/05ub/28/P/9rOzv/05ub/8uPj//Lh
        4f/w4eH/8ODg//Li4v/Xy83/vrGy/6iZmv+Ef4H/uq6v/9fHyP/x39//79zc/+/d3f/o1NT/3MrK/+DO
        zv/cw8P/lWtrzAAAAAAAAAAAAAAAAAAAAACXgYGo1cfH//nv7//37e3/9+zs//fs7P/37Oz/9+zs//fs
        7P/27Oz/9uvr//js7P/Gvb3/+Ozs//br7P/z5N//7qpk/+ecUP+6TAD/xa+p/+TZ2v/36ur/29DQ/8zA
        wP/f0tL/5djY//Lk5P/z4+P/8uPj//Hk5v+/kXT/uk0A/7ZJAP+YVSv/mnRf/6WRjP/LwMT/0sfK/8e7
        v/+5rbD/tqqs/8Gysv+/qqr/lWlpzAAAAAAAAAAAAAAAAAAAAACVgoKowba2/9jQ0P/Yz8//2M/P/9jQ
        0P/Yz8//1s3N/9bNzf/Wzc3/2M/P/9jOzv+upaX/2M/P/9jOzv/Y0dT/2qh5//i7ff/Nagj/smk5/7Ww
        tP/bzs7/rqGl/6KTmP+uoKT/saen/8G2tv/Yy8v/18rK/9bP1v/GZgv/4pE9/9BxEf+ySQD/u1EA/7ZJ
        AP+yTAH/tGAm/6ZnQP+iXi7/ml01/4p+ff+djY7/hWBgzAAAAAAAAAAAAAAAAAAAAACWhISfwbS0/97V
        1f/d1dX/3dXV/9jQ0P/f1tb/4NfX/+DX1//g19f/4NfX/9/X1/+0rKz/4djY/+DW1v/g1tf/4dHL//Gv
        bP/jk0H/t0oA/7akov/JuMH/Wp1a/xmVHv9Olkr/n4+W/7Ckpf/azs7/5Nrd/9Kunf/HYAD/7Kdi/9V4
        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
        4//qs3//wVsC/8JcAP+yTAD/ymkU/7KHX//Gv8T/3tLT/93Q0f/dz9D/hMGS/zHGWv8mwFD/Hbo//zew
        R/+5qKz/yru8/9fIyP/Wx8f/1MXF/9TGxv/LuLj/lm5u1QAAAAAAAAAAAAAAAAAAAACYjIyDr6io/8PA
        wP/DwMD/xMDA/8fDw//JxcX/ysbG/8zHyP/SyMz/zszK/2DGdf8StTL/FrAx/ynDU/8etz7/AJ8I/1ik
        X/+7rrT/29PU/9rT1f/Vr5H/2H0f/+qiV//GXwD/q1si/6uorf/Rx8j/4dXV/+HV1f/j1tf/6dXZ/83Z
        yv8zz2j/J8FS/xa1N/9Fqk7/xrG3/9zMzf/n19f/59fX/+jX1//axsb/lnBw1QAAAAAAAAAAAAAAAAAA
        AACVjY1+xr+////8/P/9+vr//fj4//34+P/9+Pj//fj4//339//89/f//fb3///4//+ixqf/JsFP/1Pu
        iP8zz2X/EaUf/8q5wv/h19j/+fHx//jw8P/27u//24g4/9+JMf/CVgD/upyL/9LJy//26ur/9enp//Tn
        5//z5ub/9OXm//Lf4v+jxan/K8xg/yS+S/8Rsi3/Y7Bl/8+5wP/p2Nn/8t/f//Df3//hy8v/lW9v1QAA
        AAAAAAAAAAAAAAAAAACVjY17xL6+///6+v/79vb/+/b2//r29v/69vb/+vX1//r19f/69PT/+fT0//v1
        9v/Uyc3/uOPB/zbLYv8mukr/jraP/9rQ0v/48PD/+O7u//bt7f/47u//5Nzd/9O4ov/dz8v/6uLl//br
        6//16en/8+fn//Pm5v/z5ub/8+bm/+ze3//Rv8P/rOC4/yPHVv8gukX/C64k/3mvdv/Hs7n/38/P/+3c
        3P/izs7/lW9v1QAAAAAAAAAAAAAAAAAAAACVj497xL+////7+//79/f/+/f3//v39//79vb/+vb2//r2
        9v/69fX/+vX1//z39//Nycn///X4///0+f/56/D/+e/y//rz8//48PD/9+7u//bu7v/37+//5Nzd/93U
        1f/47e7/9uvr//Tp6f/06Oj/8+fn//Pn5//z5ub/8uXl/+vg4P/NwMH//eXr/47Yov8hw1D/Hbc9/wqr
        H/94mXL/o5SY/8i6u//PvLz/l3Fx1QAAAAAAAAAAAAAAAAAAAACVj490wru7///8/P/7+Pj/+/j4//v4
        +P/79/f/+/f3//v29v/69vb/+vX1//v29v/Oysr/+vPz//ry8//58/P/+fHx//jw8P/37+//9+/v//fu
        7v/37u7/5Nzc/9zU1P/37e3/9erq//Tp6f/06Oj/9Ojo//Pn5//z5ub/8uXl/+vf3//MwMD/9Obm//zk
        6f9z0o7/IcBN/xWvLP8Bnwn/Z4Vf/6STmP+6qan/kWxs1QAAAAAAAAAAAAAAAAAAAACWj49ywLu7///9
        /f/8+fn//Pn5//v4+P/7+Pj/+/f3//v39//79vb/+vb2//v4+P/Qy8v/+PPz//n09P/58vL/+PHx//jx
        8f/38PD/9+/v//fu7v/37u7/5dzc/9vU1P/37e3/9erq//Tp6f/06en/9Ojo//Pn5//z5ub/8uXl/+3f
        3//MwMD/8+Xl//Pi4//84+n/UsZv/xGuKv8btDn/AKUN/4eefP+xn6L/hmZm1QAAAAAAAAAAAAAAAAAA
        AACXkpJxwb29///+/v/8+vr//Pn5//z5+f/8+fn/+/j4//v39//79/f/+vb2//339//QzMz/+PPz//nz
        8//58vL/+PLy//jx8f/48PD/9+/v//fu7v/37+//5t7e/9zS0v/37e3/9erq//Tq6v/06en/9Ojo//Pn
        5//z5ub/9Ofn/+zf3//MwMD/8+Xl//Hi4v/45Of/msyc/y/PY/9J43//Gro//1KcTv+3oqb/jmtr1QAA
        AAAAAAAAAAAAAAAAAACYkpJpvbq6///////9+/v//Pr6//z6+v/8+fn//Pn5//v4+P/79/f/+/f3//z5
        +f/QzMz/+PPz//nz8//58/P/+PLy//jx8f/48PD/9/Dw//fv7//47+//5t7e/9rS0v/37e3/9evr//Xq
        6v/06en/9Ojo//Pn5//z5+f/9Ofn/+zf3//NwcH/8+Xl//Hi4v/z4+T/493W/zPLYv8z1mn/GLU4/6as
        mv/FsrT/mHJy1QAAAAAAAAAAAAAAAAAAAACWlJRovbq6///////9+/v//fv7//36+v/8+vr//Pn5//z4
        +P/7+Pj/+/f3//z4+P/Rzc3/+PPz//n19f/58/P/+fLy//jx8f/48fH/9/Dw//fv7//47+//59/f/9zU
        1P/37u7/9evr//bq6v/06en/9ejo//Pp6f/06Oj/9efn/+3h4f/OwsL/9ebm//Ll5f/z5OT/9uTm/+3g
        3v+41LT/0MnD/+zZ3P/l0dH/lnFx1QAAAAAAAAAAAAAAAAAAAACWk5Novry8/////////v7///7+///9
        /f/+/Pz///39///8/P/++/v//vr6///8/P/T0ND//Pj4//34+P/99/f//fb2//z39//99vb/+/b2//z1
        9f/99fX/6+Tk/9/Y2P/89PT/+vLy//rw8P/47u7/9uzs//To6P/w5OT/7uHh/+XY2P/Hurr/59fX/+DQ
        0P/dysr/2sbG/9fCw//Yv8H/0rq7/862tv/DqKj/mHNz1QAAAAAAAAAAAAAAAAAAAACYlZVftLKy//Dv
        7//p6Oj/5OLi/+He3v/d29v/2tbW/9XR0f/Szc3/z8nJ/83Gxv+2ra3/xLq6/8G3t/+9s7P/uq+v/7eq
        qv+zpqb/sKKi/6ydnf+pmZn/pJKS/5+Njf+gi4v/nIeH/5qCgv6YgoL9mICA+ZV+fvSXe3vunX9/556A
        gOCfgIDZnn9/0Z59fcqffX3BoHx8uZ58fLGge3uqn3t7oqF6epugenqTo3p6dwAAAAAAAAAAAAAAAAAA
        AACYmJhSl5WV1JSSksyUj4/FlY+PvJWPj7SUjo6slo2NpZWMjJ2Vjo6VlYyMjpaMjIaVi4t+lYqKdpeJ
        iW6WiopmmIaGX5aIiFeYiIhQl4WFSJiEhD+ZhoY3k4SEMJl+fiiXf38glH5+GJaJiRGLcXELe4KCBrFO
        TgOCiYkCAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////////AAD///////8AAMAD/////wAAwAAAAD//
        AADAAAAAAAMAAMAAAAAAAwAAwAAAAAADAADAAAAAAAMAAMAAAAAAAwAAwAAAAAADAADAAAAAAAMAAMAA
        AAAAAwAAwAAAAAADAADAAAAAAAMAAMAAAAAAAwAAwAAAAAADAADAAAAAAAMAAMAAAAAAAwAAwAAAAAAD
        AADAAAAAAAMAAMAAAAAAAwAAwAAAAAADAADAAAAAAAMAAMAAAAAAAwAAwAAAAAADAADAAAAAAAMAAMAA
        AAAAAwAAwAAAAAADAADAAAAAAAMAAMAAAAAAAwAAwAAAAAADAADAAAAAAAMAAMAAAAAAAwAAwAAAAAAD
        AADAAAAAAAMAAMAAAAAAAwAAwAAAAAADAADAAAAAAAMAAMAAAAAAAwAAwAAAAAADAADAAAAAAAMAAMAA
        AAAAAwAAwAAAAAADAADAAAAAAAMAAMAAAAAAAwAAwAAH////AAD///////8AAP///////wAA
</value>
  </data>
</root>

By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.

If a file you wish to view isn't highlighted, and is a text file (not binary), please let us know and we'll add colourisation support for it.

License

This article, along with any associated source code and files, is licensed under The GNU General Public License (GPLv3)

Share

About the Author

Andrew Kirillov
Software Developer (Senior) Cisco Systems
United Kingdom United Kingdom
Started software development at about 15 years old and it seems like now it lasts most part of my life. Fortunately did not spend too much time with Z80 and BK0010 and switched to 8086 and further. Similar with programming languages – luckily managed to get away from BASIC and Pascal to things like Assembler, C, C++ and then C#. Apart from daily programming for food, do it also for hobby, where mostly enjoy areas like Computer Vision, Robotics and AI. This led to some open source stuff like AForge.NET.
 
Going out of computers I am just a man loving his family, enjoying traveling, a bit of books, a bit of movies and a mixture of everything else. Always wanted to learn playing guitar, but it seems like 6 strings are much harder than few dozens of keyboard’s keys. Will keep progressing ...

| Advertise | Privacy | Terms of Use | Mobile
Web02 | 2.8.141223.1 | Last Updated 13 Mar 2007
Article Copyright 2005 by Andrew Kirillov
Everything else Copyright © CodeProject, 1999-2014
Layout: fixed | fluid