Changes On Branch 0fc9d3e42058e2aa
Not logged in

Changes In Branch uploaderClient Excluding Merge-Ins

This is equivalent to a diff from 6240d4658d to 0fc9d3e420

2016-12-18
21:53
Initial work on the package uploader client. Not yet fully working nor tested. check-in: 43aac90409 user: mistachkin tags: trunk
21:50
More work on supporting the package uploader client. Use the new OpenPGP 'keys' file (i.e. 'keys.asc', the one with potentially more than one Package Signing Key). Closed-Leaf check-in: 0fc9d3e420 user: mistachkin tags: uploaderClient
20:56
Make the 'getCommonContainingDirectory' procedure work correctly for all corner cases. More cleanup. check-in: 2a6ac9473f user: mistachkin tags: uploaderClient
2016-12-17
08:33
More work in progress on the uploader client. check-in: 2b5c357209 user: mistachkin tags: uploaderClient
05:31
Add stub file for the package uploader tool. check-in: 6240d4658d user: mistachkin tags: trunk
05:07
Initial work on the package uploader client. Add procedures to permit programmatically signing package files. check-in: 9f66ed055c user: mistachkin tags: trunk

Modified client/1.0/neutral/pkgd.eagle from [6a1409dce3] to [7904abfa85].

24
25
26
27
28
29
30
31

32
33
34

35
36
37

38
39
40
41
42
43
44
24
25
26
27
28
29
30

31
32
33

34
35
36

37
38
39
40
41
42
43
44







-
+


-
+


-
+







  # NOTE: This procedure sets up the default values for all URN configuration
  #       parameters used by the package downloader client.  If the force
  #       argument is non-zero, any existing values will be overwritten and
  #       set back to their default values.
  #
  proc setupDownloadServerVars { force } {
    #
    # NOTE: The URN, relative to the base URI, where the Package Signing Key
    # NOTE: The URN, relative to the base URI, where the Package Signing Keys
    #       may be downloaded.
    #
    variable openPgpKeyUrn; # DEFAULT: pkg_key
    variable openPgpKeyUrn; # DEFAULT: pkg_keys

    if {$force || ![info exists openPgpKeyUrn]} then {
      set openPgpKeyUrn pkg_key
      set openPgpKeyUrn pkg_keys
    }

    #
    # NOTE: The URN, relative to the base URI, where a login request may
    #       be sent.
    #
    variable loginUrn; # DEFAULT: pkgd_login
109
110
111
112
113
114
115
116

117
118
119
120
121
122
123
109
110
111
112
113
114
115

116
117
118
119
120
121
122
123







-
+







    variable baseUri; # DEFAULT: https://urn.to/r

    if {$force || ![info exists baseUri]} then {
      set baseUri https://urn.to/r
    }

    #
    # NOTE: The URI where the Package Signing Key may be downloaded.  This
    # NOTE: The URI where the Package Signing Keys may be downloaded.  This
    #       should return a payload containing the OpenPGP key data.
    #
    variable openPgpKeyUri; # DEFAULT: ${baseUri}/${openPgpKeyUrn}

    if {$force || ![info exists openPgpKeyUri]} then {
      set openPgpKeyUri {${baseUri}/${openPgpKeyUrn}}
    }
268
269
270
271
272
273
274
275

276
277
278
279
280
281
282
283
284
285
268
269
270
271
272
273
274

275



276
277
278
279
280
281
282







-
+
-
-
-







  #
  # <public>
  proc useServerId { {serverId ""} } {
    variable downloadUrn
    variable loginUrn
    variable logoutUrn

    if {[string length $serverId] > 0 && \
    verifyServerId $serverId
        ![regexp -nocase -- {^[A-Z][0-9A-Z]*$} $serverId]} then {
      error "server Id must be alphanumeric and start with a letter"
    }

    if {[string length $serverId] > 0} then {
      #
      # NOTE: Set the URN variables to values that should cause the
      #       specified server Id to be used (assume the server Id
      #       itself is valid and active).
      #
299
300
301
302
303
304
305
306

307
308
309
310
311
312
313
314
315
316
296
297
298
299
300
301
302

303



304
305
306
307
308
309
310







-
+
-
-
-







  #       downloader client so that a specific version will be used.  The
  #       versionId argument must consist only of hexadecimal characters.
  #
  # <public>
  proc useVersionId { {versionId ""} } {
    variable branchName

    if {[string length $versionId] > 0 && \
    verifyVersionId $versionId
        ![regexp -nocase -- {^[0-9A-F]*$} $versionId]} then {
      error "version Id must be hexadecimal"
    }

    if {[string length $versionId] > 0} then {
      #
      # NOTE: Set the variables to values that should cause the specified
      #       version Id to be used (assume the version Id itself is valid
      #       and active).
      #
466
467
468
469
470
471
472
473

474
475
476
477
478
479
480
481

482
483
484
485
486
487
488
460
461
462
463
464
465
466

467
468
469
470
471
472
473
474

475
476
477
478
479
480
481
482







-
+







-
+







set dir $pkgd(savedDir); unset -nocomplain pkgd
    }]]

    return ""
  }

  #
  # NOTE: This procedure attempts to download the Package Signing Key from
  # NOTE: This procedure attempts to download the Package Signing Keys from
  #       the remote server and save it to a local file.  This procedure may
  #       raise script errors.  The fileName argument is the name of the file
  #       where the downloaded data should be written.  This procedure is only
  #       intended to be used from the "pkgr_setup.eagle" tool script and may
  #       go away in later versions of this package.
  #
  # <internal>
  proc downloadAndSaveOpenPgpKeyFile { fileName } {
  proc downloadAndSaveOpenPgpKeysFile { fileName } {
    variable baseUri
    variable openPgpKeyUri
    variable openPgpKeyUrn

    #
    # NOTE: First, build the final URI to download from the remote package
    #       repository.
724
725
726
727
728
729
730

731
732
733
734
735
736
737
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732







+







  #       must be one of the literal strings "8.4", "8.5", or "8.6" when the
  #       language is "tcl" -OR- the literal string "1.0" when the language
  #       is either "eagle" or "client".  The varName argument is the name
  #       of a scalar variable in the context of the immediate caller that
  #       will receive a boolean value indicating if the specified language
  #       is actually a reference to the package downloader client itself.
  #
  # <internal>
  proc verifyLanguageAndVersion { language version varName } {
    if {[string length $varName] > 0} then {
      upvar 1 $varName isClient
    }

    set isClient false

793
794
795
796
797
798
799


























800
801
802
803
804
805
806
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827







+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+







          }
        }
      }
    }

    return ""
  }

  #
  # NOTE: This procedure verifies that the specified value is indeed a valid
  #       server identifier.  The serverId argument is the value to verify.
  #       This procedure may raise script errors.
  #
  # <internal>
  proc verifyServerId { serverId } {
    if {[string length $serverId] > 0 && \
        ![regexp -nocase -- {^[A-Z][0-9A-Z]*$} $serverId]} then {
      error "server Id must be alphanumeric and start with a letter"
    }
  }

  #
  # NOTE: This procedure verifies that the specified value is indeed a valid
  #       version identifier.  The versionId argument is the value to verify.
  #       This procedure may raise script errors.
  #
  # <internal>
  proc verifyVersionId { versionId } {
    if {[string length $versionId] > 0 && \
        ![regexp -nocase -- {^[0-9A-F]*$} $versionId]} then {
      error "version Id must be hexadecimal"
    }
  }

  #
  # NOTE: This procedure verifies the platform specified by the caller.  The
  #       platform argument must be an empty string -OR- one of the literal
  #       strings "neutral", "win32-arm", "win32-x86", "win64-arm64",
  #       "win64-ia64", or "win64-x64".  An empty string means that the
  #       associated entity does not require a specific platform.  The

Modified client/1.0/neutral/pkgd.eagle.asc from [9df36a56d2] to [0b9c499ec7].

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17













18
1
2
3
4













5
6
7
8
9
10
11
12
13
14
15
16
17
18




-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2
Comment: Eagle Package Repository

iQIcBAABCAAGBQJYKp17AAoJEFAslq9JXcLZafMQAJorN+Jl3+Ah4o3BwYoqujuL
YcWc+0n5teE9wA4cWcr9/xsyOQnoRK91I2GDjuYRCB1ej+wYZET1ZKoxEh8MlW9O
Q/R7H7EGSY7Lk17T9VsiXNVKY71vOOQ7cUA5i/jVDux3MjfGU84qWmftKhG9Tnhu
HkatMB0BRj9EPYDaN8aI3NNW1jt9TTltuueRujnuuTtlPKZepgzO2aUxrQ1XUWSD
EMdm9B4+6BqpS3MX8TP6C89+Yi2IrB2o2pLA93I69EYsRenPWqIxtaJZfO21mngR
sA/w1le28eLt3178E/Bh+Kf5Tf/IDvVhEq63mtq9OrTQSFZDvjqoJDUsWEgAhSLy
GYDY72RR09+kuAMaTr7ZV61ojUMLcYar87jTXeZoq5scV6D8BKJlLA0lMo8EyZs2
lcEUkaJc2lenV90DUQjS5uKFZvH7S2xyyjU29vvYxUy0HAAWLnpnSkamPFOVKzez
uFW0WDGa/nWNsXmQW4XujSVu4t1seUvwe58hLTXD5H1HdX2wNFvfIXJOy0/Q4URe
WooFFnGzqtS41Bwx+bqGne+OCAr4wA6Hmm3RcWubbBILCvTVN1DpCm7e86Up7MR6
mGdLBFmfQf4tsf2jG6jntmIw/e6OOSvEylMlRxgs4jmRJXyx9Xe8CgTorzBYN51s
Qyb0zUQ5fBfHgGjJa+Ny
=3eS3
iQIcBAABCAAGBQJYVwQaAAoJEFAslq9JXcLZK+wQAKjgT9tBrs6sBaQ5rRQNLno8
LOsplou1I0H4thp/4DDUF5JFj+LM8hn9D1cMWE4SZpbuUk9jn817LGMlIYmSAPic
DHA9Wr5BWaR0bOOpf/oajD9XPOSyZvdrH3N6Kvg3JUCThMvdxilnLDytXN1Je6ZM
tmeMOShb4horYPZQTt1X1kU2SBAraB48JPMSfqQo+DeRhtG4vX70u23t4EXcXdda
kFJeaYKogGJb5Kf6pgumE0hXtr/sVHqp0b4wlSTmiB8KZ2xMTkknVZaSd6TvFsWD
jbAAYUMTrUZ7TteYHASVDMX2Ol22z4iPJBB+wA+/CUjrM8GrgP5jv3JCZKQlTX9v
63nFF1Kb897frxJu0xT+immv7R40JO9fGNvEJXk9YlFfpHIpwntys39WKEah2jqj
uNbJhxSZgHGdVxfN7bHimZDs4K2jjiby0PEcwfk0y9tbLMFLS0b9k+8D/ZNp7yVw
b6GA83ARJ7M7iI0gHZRYxn477kEcq4joGWsRQwnLGtvsgUm+pnQP8EwUE/YHHhKB
QHr8NdCYui0c073hrbnJJufy1NA+QtG0KizHyeJrWRhsv0bdakvDxX0u33QYgk9k
4ezdLmKFaUeb50YD293Fy3FWLeWWlUemk9VZxkGsD+oqSqAHNYSR8y1a2VMkUbpX
xHQPZAJrEX6OHrpclGGR
=s04K
-----END PGP SIGNATURE-----

Modified client/1.0/neutral/pkgd.eagle.harpy from [a7a7bcae74] to [35470332d1].

17
18
19
20
21
22
23
24

25
26
27

28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66




































67
68
17
18
19
20
21
22
23

24
25
26

27
28
29
30




































31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68







-
+


-
+



-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+


    THE ASSOCIATED SOFTWARE MAY NOT WORK PROPERLY IF THIS FILE IS ALTERED.
-->
<Certificate xmlns="https://eagle.to/2011/harpy"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <Protocol>None</Protocol>
  <Vendor>Mistachkin Systems</Vendor>
  <Id>8f2147b5-a488-47ee-a91c-74169b43dc10</Id>
  <Id>dbc97ff5-c604-478d-97c3-68df449b2d43</Id>
  <HashAlgorithm>SHA512</HashAlgorithm>
  <EntityType>Script</EntityType>
  <TimeStamp>2016-11-15T05:29:42.7643484Z</TimeStamp>
  <TimeStamp>2016-12-18T21:45:25.7333984Z</TimeStamp>
  <Duration>-1.00:00:00</Duration>
  <Key>0x9559f6017247e3e2</Key>
  <Signature>
    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
  </Signature>
</Certificate>

Modified client/1.0/neutral/pkgd.eagle.harpy.asc from [782f665a11] to [5e0a44de88].

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17













18
1
2
3
4













5
6
7
8
9
10
11
12
13
14
15
16
17
18




-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2
Comment: Eagle Package Repository

iQIcBAABCAAGBQJYKp1+AAoJEFAslq9JXcLZQeUP/1bSzd/kFlm82bMhTNwmqF46
EYp9BUoU8YWHEGby8j1nfuUKzpxr3gn6b3Bf/pl6O0d4I4WqysSIo3D63O/GgnQv
Q8idoTz5He9S+gTEXVBENwxLgcP/Jq4w5JX7mNWa3hg/qy5iZZtoGH7qZCuykOHT
rSYhdNJRD3b2WgyHFXa4VYy8DrIwvMrjjO1vb38cu9ri2dBJwOJ9jKyRiMycI1Si
PbmheN0lUZK1uo8ISmPUfvP0oYp8fIeYcWFGx32TEY9k04zc6zT37pFiqJLH1MMY
PNII1lnbiDts1jduFC99kBmO73jW40kYrMKAzvWldNXaxoyDNZ4m6p3v+eq+oRU6
IUTHlKvNr8WQFi9pL19VA3A0sghL2cIk3jUdmWBv79ZYAk8yfRjKZLJPJg7KSLkC
qEdK9CtskyvGuNWHO3xk1dafzRo/DG+smYI893iBUxOHI51TG5W4g9Qoa3a/ACoH
+giIwJU09DXedXvAZ5k/UgJp5mqLJIEEQ5qAFzll4AGQJd92e3uHttL+Q/wZXrOk
IfJsSs4dPFlBm8ki2h6JvlnYfh2F8na5e7Pogt3sGekXw11n5Fx8aVS1BhY/ucmD
TUd+Nwbn0WpAUZ4LQ6rz8LYyVFTaG50YQG+ACLZHt2EmLh3YZTOE+dwIgj4bQw8k
1zjvTjQX6T9tLJ48z5uV
=hOTE
iQIcBAABCAAGBQJYVwQcAAoJEFAslq9JXcLZRLsQAJNwTMFLDt35d8OcqwMrsWcz
BtiqKZLYl8dRdDMZbYUcs4CCfcBjmaxXrkwPWyOzvERQFv7Xk4OJ9PtCGmx2H60z
xvYt+MajdLEdTzFoBzL4/vFxeutVqDrj/ACF7wQH1QLFc7u0mF9aeidGG6pcLJvM
pCfq/FzZ1CRO2frRX6om1DpBJ5fgQ/W13gVZMRnjla8OPrzpZPXYnUjln3/hWQCQ
F6riOKw9o5zPlhxlSLdyb3XbwgHnZnN5b+QYTOzDIgOdnnV7zNTM4Po1/FU8FUKp
S11+mEeY/O+2483LnUftpR6JPUpmwciaY+AAirOeGUyAmtiNTL2h6lZCM9EWlmCs
jf0dcB1levN0/az80Ozn7D5JaKrmye+PdC/n0+ttt6TdXFlSijWZHBffS3r389DY
NulqWsUW6DAftgPKGZ8yVbOamcFrD55AobE05LW2fp76ZEOzvHJkPieFqYx/ExfU
aOVxcz27x4Ho/k/6axo+NW8+uNAycdCRMFVKaURPGDhPw4gpGP7/s6pqje7aRcUl
Llb9MC972WzOwMCalCvaA2GuoAgkpqKJ8tjsg8XDE0d5/Ddz3KcNDIuS+6M+dJTi
bjiFgi+MCGxvgamTdt9hdZ6ACsABDacbYeOGcDb/bpVG6xrhgNg5Lx9VpBeU26Gc
OTXZ5f/51OqMp9IvcNli
=lH1E
-----END PGP SIGNATURE-----

Modified client/1.0/neutral/pkgr.eagle from [46ce6d2906] to [2df5f1ebc0].

110
111
112
113
114
115
116

117
118
119
120
121
122
123
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124







+







  }

  #
  # NOTE: This procedure returns a string argument value, which may contain
  #       spaces, for use with the [exec] command.  The value argument is
  #       the string value to format as an [exec] argument.
  #
  # <internal>
  proc formatExecArgument { value } {
    if {[isEagle]} then {
      return [appendArgs \" $value \"]
    } else {
      return $value
    }
  }
350
351
352
353
354
355
356
357

358
359
360
361
362
363
364
351
352
353
354
355
356
357

358
359
360
361
362
363
364
365







-
+







      if {[catch {
        eval exec -success Success $openPgpInstalledCommand
      } result]} then {
        error "cannot use OpenPGP: may not be installed and/or configured"
      }
    } else {
      if {[catch {
        eval exec [subst $openPgpInstalledCommand]
        eval exec $openPgpInstalledCommand
      } result]} then {
        error "cannot use OpenPGP: may not be installed and/or configured"
      }
    }

    if {![info exists result] || \
        ![regexp -- $openPgpInstalledPattern $result]} then {

Modified client/1.0/neutral/pkgr.eagle.asc from [4f9aea824a] to [683837788b].

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17













18
1
2
3
4













5
6
7
8
9
10
11
12
13
14
15
16
17
18




-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2
Comment: Eagle Package Repository

iQIcBAABCAAGBQJYVMeqAAoJEFAslq9JXcLZ7TMP/i1uqLXgToUaI4sFV8hoxPWQ
buaSI3nfNLJvv8jVJAfe7VolYJw9v0FHpeDTcVToVUDlcGy8W561stkgYn96f4tZ
C7jLGhqtv5IpESjXDm/1bf8QoJrLShx74W68/o1ae4uhlpPYxZg5vcSYFNS09h+r
BGNNza0rZS/4elml92cbsfc/h3Qn2A9chu34eiF0TC4zhCknrmU4LKD3yhlqpJWT
cDIGyKUecW+mSXJGltmmJL+IgO+tNwA72q91sJ3ZIsaEFdYMENZkwva9l7LxoK3j
tqJqknv6a8H1V9PKN9c+qUROq0c5+biwhgldfg1JTLD5ah1YcrZNB9idUen/ftf+
QTQnx3nYPLl7fnMiM6S6svWZjSdZ98Fnpu4Jr1F3Im4DSp6wQcILYruGah9ac49Z
XB/yFpiit7ZhoTH1IVNYYQMdqbf/Wb6WBO5q4CxA000C6ANrk2Cm7Xh5wFlTafg3
VsEzRNhOLfu8dO2CaOzTIfRo4QhwDJl9yDauei4sPo0J2FmbPTyMBnBwz/X14Gcv
st5sFAIsryfSx2c3rDpnj8aFHcQLi0DuB8QCR0p4aSKVb2lenmZfcA85PZYD662v
2x/41sP//rajbEz3YjJlnoK19acDwJSU6uFuvLEqklnd7TDFHl1YtnVVD6wvfSxV
F67DBCIaQLgfEMK45lzv
=waFs
iQIcBAABCAAGBQJYVwQeAAoJEFAslq9JXcLZeqkQAJTeEFiD45QEPzD2PrVAfoVG
EddgG1kirgYvAkLVJrH+gw0ebzCt0CmOnlPutr+saIDNu3IyozC8Hcui37I3FBqc
YwTZzXtoZ9VvRdFTJ118abyv9zQVAgB89WL6xOt6AhnlkNS5FAexi8eKNMppLTg2
r7XkZlhI+vMKdJSE/UZsTy3PQ301Z31S4IxPDyLA6BfcL1dVuEKpgOosyNXdvtiZ
1In/f3aAze9Ech6gET8g2UAGCYIP/Sjxv87ehvCvwyrKXTPrtvL9PGnRfJUv4EDn
wOiNGS9Ki2vqUkVEay/6IIuRfwAVXw1Ln8RZmFJmp9g3aqqy7Y6NdyX57Jk14OdV
of19ykiFd9ZF/RMBwfP77gvELqeEm3JlB0OBeCgnaWnlQGZcs/jSqqmCQFe/oJ1V
8ySLyWos8IfvM20uK4STuutXF13GIBg4lcW5Er5AqjNIKlsNGfp0kwDAR3McKgcf
x7tVqPvDA8gEftgj/ry9s6cft2352WR3QGbSTUKefOs+utaGZZMMgWt7LsUe54zN
ee4kCeouGXjnu/lTnXazm6BKIgq9CxMYIPU/wP8s/He3sdGOsNVtnR3xb2TLbMLt
fIKPrTpumO8QiMXWFGD7pfdOnCZJ32vmCjKBcxgB/QdQzK35k/3EGgn44+hvX4E1
OBBi97xC4x4HplQZsjud
=HUUN
-----END PGP SIGNATURE-----

Modified client/1.0/neutral/pkgr.eagle.harpy from [c814762109] to [c59a944dab].

17
18
19
20
21
22
23
24

25
26
27

28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66




































67
68
17
18
19
20
21
22
23

24
25
26

27
28
29
30




































31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68







-
+


-
+



-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+


    THE ASSOCIATED SOFTWARE MAY NOT WORK PROPERLY IF THIS FILE IS ALTERED.
-->
<Certificate xmlns="https://eagle.to/2011/harpy"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <Protocol>None</Protocol>
  <Vendor>Mistachkin Systems</Vendor>
  <Id>b26eb0c0-d25c-485f-9228-064fdd1f781a</Id>
  <Id>ae81f124-a07b-4d2b-93fe-7df620076a90</Id>
  <HashAlgorithm>SHA512</HashAlgorithm>
  <EntityType>Script</EntityType>
  <TimeStamp>2016-12-17T05:04:57.1298828Z</TimeStamp>
  <TimeStamp>2016-12-18T21:45:50.7265625Z</TimeStamp>
  <Duration>-1.00:00:00</Duration>
  <Key>0x9559f6017247e3e2</Key>
  <Signature>
    TqFhoRdMHUuXtGLpJVAqJT/hWptIddJcmdl1IyIrVBZe8yeIajJDqQJ6UMHcikI7tUGKafZHufn1
    sk+/2BLnK9s0ECDzB6nlK8TxjtJzdg0VempN3hAeFJJOH6AbEmI+n7tQ+hhd/byASi7/KTorv3R9
    FBPAY0EGX5dBjKe7btRhMCtSwYAAxaLnFXRrpO5NAomMFP1MWiPLK8ausgLnwd42mauCo5ppY+Qf
    39q9CKmpYCsSEG9gy8pYXieU4d9ZuYovkUh1UpcMnkg9GiC2Eyi/yw0r8UJMHzlO+olB5xIug6xm
    tZSLkNyywh5EIqe/P0wnGVw427Y/wOOH2BoGXY5Y2+xl502J47yo/spc52HLvbzOWxI8tMRaFhqB
    5g4+9/PglFmQCT8i5EQNrZ3BgG8d6IlWjyQSOMwkH5oNFS7ObMXUWmOMwB8BND8ni90vy9qzYm7h
    mgvuL0hKqSX3URsNbyqMHhTDQ4f+2t6wMdQQTIP28VtQzQq72q78PtE377BRV/6dxsurhzBiURlH
    CtBmASpjj3hT58Qe4Gn1HX9FiFMv4au27brwSo2ZuYNLdISPZmSBtSbMfEEGHJWiKh3cfhTNT0Tx
    VElW13BlhOmrWh+cyy2R6wt+CwlmUH8xZSxXiMV7iQDRg6hyDVW3VDso7Whk9uvI3FANJb6P4c+Y
    QOUGA7aQBTzx6s0Q+HsavVW1EZCRlKisSQBLVBN/hskWFYiZokovaW+M6FCUUOps8RNarIGNJewV
    NNs7DqEcwZoHnVyGH4zLxvYp22A7LKurYPDzeCFgEmeerwbcOoAGoKFpcb3gg3id63on88/Vb+a3
    ElhNgjicnCIbmKxpLDh7Hyn0rx0FJ6IBntlp5hWcJzT0ThBtLseEBYG5brLwtyoi12/C2jX+yeNG
    iOHQp1bmlPqy04st2qXdlnVU0sjed4BjMAYppDu5Xj2AiaK8dHnlK8bRekHT+G5iLKcg1Ks6i4RN
    YH/cSSj7bHF9DqclmUt3lIr8S5fxfPp9b3gP1uYFX9Y7ncGo0xYPpZfPvhFCdm2mBFoztvvJs9Tq
    oSmPo7Gw8+buGNw4LGoxdK4fSMHl13Mx3ktW3qP6JJATvnNq+xKW5sIFFC7CT2PS+OafNZl3019Z
    U9zY7OEet6KXdNCFSOWvUyk+doPjNJmR1yhsXwvVXexH2Bz78Y7D9SV8i+b4eBu8OrbFlToqPYm1
    p4eTxQJeGlq1uNQJlkk+x+iukCcHojibIGFcsWsg11YOMLxoEoF3SyNHWzmKONp3aCPWz3Dl2wox
    k9rynZ492F7ZjPbSYvNJoXEKcbS9pg07dOcnGo7fkhEAWsr+08Q2u0JMcsCiaVO5NAmtcfzgNuWH
    jCFZ/fU8ejm4Ir9nAW/7wgh1BMhxd3OWnPAY3wqfm00RHxH1HqRPV8SxhCX190DIyeqA107I8L6Z
    QCYNmtDFBcV6FWJLga1YQCmwamfV0jJ9mATA5sydlR72WVE/jdtmhFLSxtGu0M8Wec7F6LJd0qbe
    L8YXp4ckNMwykaUyv9wIJzX/W37GhSZiw9m91P/JjXb3nsigmfo2x7iXPa5BsL8vXz6wkUK+/YGR
    DsyU/78jU4OJ/HMZJYdmEOKNJ24vN1FrLe0ELS8jurTBFCCGx3qYsGRxtYS5f9qwfrWr3pvYURqI
    5tn4RU28k8TrO5zi1iPrYkWaA7+nk4EkAfQhub1+Ar7ntWtTUTXMT1U0TPvpI3XHOc9sNtJvVk4h
    QWtFCzmoeVuisWO3Wa5nGCQJioMrkn3UkFtvy07uMc1GbkvsMpqw+qy2fNsU980jJE9YC96EJcpm
    R4EWYe+eYS3YevPIdWxtI7cfk0j5/yxgVgggqkr5XfrcWI7I7N6i1WgbHK/gOSpqrMZJspsCJyf8
    rF/1tbmayy/2nlXdvevMjod6BXPfL64z8EgdgsaH3+W6K7EX+dHVKyx++rnmp2uu69MmVIzJ9ovG
    iy1N+oBstuYgc4M0Kj0HqtKUkgUev1+L2Np63yAELG6AhlxTqLbqo7k6/+VYhSvN/aVjnFP31B4C
    nnPJnUSl3uq/mgF/d4Qk4gYl15KRyHR8ccgCOtZOvn6tZRUIk+JgORd5cRRdUWerlbVDblxAiiSu
    +BTquO7XKb+5p0IM67ZYoo8MI4t5XlPhyb20cTQy4FSuzCtwuuJD1fPX61z0DEIvb7tBwlr+5cpu
    BFAGwZMID0/Fg98UAmW873DFa4Ry5+1XjXrnYr5YJGU6JZnkgmE/F/qYr2ns3FKaMw8LoY8bn6jh
    Ss9v77s+tc1X89UgHuX7oLG8blm4b63WyXauYbQO9x6hRGWxaccb4H7cbCfhI8SaGeIfIOwmnJOz
    3UnUfAShRfBXML8ixsu9t37PzSZEVhHq7UrnlYyaHk88gUTYqPoAw5Y9F1uOC4whWhENE02Sv8Uf
    wJ3O8vVRhWObfOFyRw3waqmcp830fRJUoESbU4+XvlqiB6jKuB7i8SfbeR6mWpM5qKaUPmaKhUIT
    IWw5yxy8fsPEOuwz/9txNAO2BQe2a7Hn8DXGcZDdrQen0ZZGms1LLeiggp0jQ6WvjEP9mFgJ4DZ7
    N+jrh4KUqEzBnOI2RtVBjSoCpGPfYCmGrwWR7/mGh5WSL4QgJrL6HuAxUm60xpl2Ow+5iKLDYBqN
    cQCuKgfzKuojaeSAYKCCkISFfSHzp5ZsZqEJSUEYn+h88CcHPR+VTi5s8dkFvQUhdp5j88c=
    ACLTe+vwsdTB5KGman4gRcDFGv3PBxSMBc1tJyw7yjFvH1BJ+KStQPYfWNPf3QBvsx3F8+2h5CTe
    zTGqH3d3kwYlcGlaArVZtp8twTuHLCqZn+zYVQsFkAIStbz4B/L4PTKtLMNIwT2144QBTuNfSWcp
    kB3wEC+AhX6MsQyMFqH2bbetewt7oT1veZq5JwZHOycMbNS/FucbfiYDLCjAwtj9mX0GdfcPlvbR
    vZ9+v7Kr5rwn2GdBOWIM/E5SzyBfxJDlaz61ZbNJo8Ljl9EI33VxW2fIlqvFWyoYpfQt3mw/jdIe
    3XPSI9Az7mf6Gn0MZnjK5ZBC6is1TF8k/XNwyr4YxGGsYkkbx5F7U26MuV88z+vuybR2X60YnSHU
    6yFZdlhOxv6Sn3SzveCziAyJWB+QpSQoNPDnGUwHgMzJozPvS+3EXlceLspkSaUExyYX8s/B5rmE
    kaENhcaKiBL/q3RtiuAMVg+cFQ+Ttu751oCguvzl78B2b9aH39vLRZEJdwUEo+eRwqK5daFruFXD
    lNplxD2Js0FKHJOUP9TJnvvPwLx+AlEF95YyQq3wAwYwik73Hf8p7IQGtWZ990vCugznbLgohzp3
    TgflnLDMvfUVTqnYpKKBdmmjI4wPmwLFUQE/KNld9dEKMSYaC1Uq44hGfVkmTLRKFdyCYo36PpW5
    gqPR4C5bdNCQl5l6pDg7+X0EoBbo4SFqkZCiGFnzw+2RsJl44g8js9v2BgE+JK6NdYkltEgrQ8AP
    PIQb3qwLJrL/LE4JocQ1y3oaSUX/B8/oARG/lHxeJ2mX643+XfjWZc9wl2+d+JueA+GQS2h0Fvqq
    S4MwG0mVC2ac55n0hBPQ0eC28wGX7khLKZ7leNQOYEcc7Gjc4E5AWEJzvWI5Zbe9R99B2AUWsbQQ
    c4l/RGzHT7k6q8tVwL1xuCVeH0MT8tmFrzmN2WinYoRLC5Wi/P95Hk3F5EuYDgz+AsfTho9dwVb/
    z8HNL9USMNcxd/wxtShvF1CxrED6xnpXf3nD0lrvZqaWIvb8Cro83fcSJapP63TEG71joPDbsEfu
    a5CoCzEl4bEwRWVm1vwdaQ+qGica/Lvn18DYyqm+imQjsJrHTG0DCoXG0cHbXH+jDXC64EnkHIUd
    DHHmElm8bcyH7X/hpOneZ7iZAohgvRDWN3IQyX763N4PPvg/ji91RNOvpnmPH1SSV3+nKef9LyJ8
    nVw+DALH1hENSfuSVhglnYbjZbZVtDB7fvyE+NZL+BTNJN/oH2OzV5D1GSoWEMy/CKK3hieD1/gs
    8ryzZnRwM60y0dkd56nTTMq0hmQl87j71WHUvEjbplwVm5gqtuHH3JutfI/bZJhjXMsYcZv6Iw+o
    6AfOnv/qMdFLdFZ2U+2xP54aJ3vlEZkHP9OwUzAl39DNLNXkW9tMnJ/N3a35JhMg8NGdczT3JQTE
    TNqeRsOt6UyX99CFgekwcLCpYjaoeWFE4UFsAMDj/D3YH0AIxRXHvH0E65a0ARLyIhuPH2xizG7o
    jIQraa/LlGq7C4szaDN+MGerQKvezqsesM9Vv+kC/5/KVK7NeuP0iiqVTECZ1Jo0N+vqukL5DcET
    9oHIJXKQ77ul1pngnWWriqJBWah6jKbaq1XzQmTXRxwO3/dsivToD3Lfwgqp9MpndAD6L5oL1m+k
    qTfhA0+eVVDnnB4HnTGmYHBj6Et1i1+HEUMHueRwwAw8ILIiewEqPuSZam+7Mxcs9gzSNyv1bjaC
    JMfAmYTFxeRaAx6G/mWOevGR4+JijuPc6avq/hg3kph88W1p94xe8TH9kgoKuAfmXgtY415LmNHU
    7BUrYvLLWTVnSGOIsva9lEXnYx0UqW0Bh29npyrFKRQy/knpckwu4C5lBvauS4bBre4493rL/BKI
    RkPW6WXWW3EMeVT2Dtg2Qxz6MqhydLCBLOZfdw7l2OOoD0J6dbF68kOgJX/SbGt967MDLuAROi15
    WxnzcA2nJ56emo/MqpCIrv5ZsGhK5MmVg8dL5rtxY/3+TUQXsGq1mcfNcuLDoJ/WnXI5qbqbgx3v
    0EFw4SROqMLRUJz4mp9LYduHuectjU4v+ks+ZP9AVAkXND7WP12KnQWDxCc2JgYS7boS8gwmYx6W
    ZWziB7LjKqhPK+MARxJIG8quagr3/5mBcHxlkpWCXG2q2i1AdDvpUXjYEv0MXSRiaT1Tb4BA3YAt
    aDhpJBa02q6hl0W/u45a7qomP47Zsurs6Db4uzjVFv6UODWqYe5WRa8To04CKnrRIesBtj8PQTrv
    RAVUDdoZZvlkLbe3hAudk6MEydtISu9OlULKvR7bn/4mQkPPwuBMsxgqcbff+cKJGrUQV2KyDHkS
    53p5KaQtBLlLVouEgjRT8QvXlmC4w+9CBAmymn0IBqqU/ibi7Uz+Vmm66TUusU3c7FG1Gy1TO/kG
    jvFDjX+XVeZ6lga78JAAKXOeoTgDDaaR8y83MmILP5vNyBRTCLXHF5u/Xb8iYmSHwO7rAcEoRiZC
    XBEQBCgL3AKtIlVxmUc46N0hFLyS0v/ul7uaaUY5aBU/M+cxV8LbWfE5lOqaS3IJYp4F/KLfpDcS
    HUV/r1UrmbveNKXkYIBAzLrVKukAb9p834LpynhOj0uvaecEIQXzQQljc04Dxl/aq5AoX/ElU2Ge
    0qCOP1RHDNfkCbou5yqHdeQyCJf3SiZDR+MauK8BUg0FxC13vqvCXvEtDw7UbPYEtdn8A18=
  </Signature>
</Certificate>

Modified client/1.0/neutral/pkgr.eagle.harpy.asc from [e6c0f2e243] to [3037ce66b5].

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17













18
1
2
3
4













5
6
7
8
9
10
11
12
13
14
15
16
17
18




-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2
Comment: Eagle Package Repository

iQIcBAABCAAGBQJYVMetAAoJEFAslq9JXcLZE/8QAJY8LtO8YUPPhTY+RPAPw7vZ
R5W/eCOJ1Qy185xjLVYeb6V0ULxEAgY7iNw4mAkF7dZl1oQ56Xhao4L2sH4+nsMx
q/BU0Y/Bk0StpHpRvw10bWl/iVo4W2qK07gXepgL9zpI5pl/lJerSJA3LHd6RD8T
Au/2dw6d/N4ozkc3BTZf4PVZCKfLzVdQ1hEbpDTVlWd0fDS9sEywdML/OKgMzvbG
YfJrTwjF8sf3urJDbBolFxV430mdbIbLPyvkUCCiOjC3oJi0766B2Xsz+95fY16y
fMa8T96R2atRPCOolDN5jdIvCkP3VRKlts6OoNZ7nojiS0SsDsREgt5cEFWieXYg
JFf0Ln5wqjAWxRLl/MlZw2qoN4VQKD9OyS/m/lncNQ4udP4/AIeuQIIeJ0e/pjuQ
7jiYm9ZCyBcFT7ncU1gZjp9zQar4hWY1oF79RfiwAhno8Rz1CwAFNGKaJ7nenx+7
/orx8qcDMFZnPh0fsLQJ2f+Z7TTFmLDuYvA8tDHZRWF4RO//+HYec2KZYIay1ZHI
6RiaNzwjNKI2RF9yJUS+6tGhhu1ck2MR5IXuQ9QFLXqke15qwkpMdKUTxu8N2K/L
FToN9rn9WfC6O1TeUGZkYr7q9hgZ7hBCn0iiLikrgafxuSVQ5eQCRyLD+04vn3nX
cXMvYolWIL6QiREGHpsW
=zSis
iQIcBAABCAAGBQJYVwQgAAoJEFAslq9JXcLZbsgQALatwV8267QDzHrDHW+18vu1
gcmYc2ufKElQ/TC3eO+tClrLq57lSs7Q96ervPsK/zhpqFaGs6iNQjOk+zxguP2N
TNAmTiH7mTEnodg+8EAgxzpc/Oysgd/PFjeXduK+cyjCwqxTtkv3WDYyT+HtAEYQ
KK4JMM2eMTYb015CCceRj9stkd74aexQcKK7QzXOf7PmxxqRhyxw+ukP/XNkrIGA
iq7jSAV6ml8Z+ASkGIm4l4cMQ3yQMABB8xgda2svhvvmrAmPm0pEutserZFA9k9s
QF1QdEgzMb8STmj3zFiFBRUX/J9HRBaf7F9Bbn8WJzqjia1rzrpb6D6XNZBGt0ww
Qm6X0Zh6qL89Wlz6oQimg6kXOMpd84IN3f7mECGBY+Av+/byeZXzDBfeqJ+a54F/
mev4tWdQtfnro0BGN5z/3nz13LVCgt9mp8o/UKn92FUL4738jIUAIpXAstMIihJZ
uMzr4fF+9kSgweWuD25folUy5mFxE2ZJJES/dVFuxY6hFv8RRqrLHppGOVw9EQoi
baJNWQhyFxBYCxj58cAPdmOp2Vk2teU/ePu94nwAauPto+2scAsYOwQDFL6I+V/G
TzOoq2Cc4JrhV6PS5e21Vj3fJms51rF6ZfFXrntxWHhU3wyyRrTqSH5AR2HIynbc
8H/k8gJ8I+WOp0v8UarK
=kXjW
-----END PGP SIGNATURE-----

Modified client/1.0/neutral/pkgr_setup.eagle from [90601fa7f5] to [b302bbac09].

84
85
86
87
88
89
90
91

92
93

94
95
96
97
98
99
100
84
85
86
87
88
89
90

91
92

93
94
95
96
97
98
99
100







-
+

-
+







  #
  # NOTE: Verify that the number of command line arguments meets the basic
  #       requirements of this tool.
  #
  if {![info exists ::argv] || [llength $::argv] == 0} then {
    set localFileName [file join \
        [::PackageRepository::getFileTempDirectory] [appendArgs \
        pkg_key_ [::PackageRepository::getUniqueSuffix] .asc]]
        pkg_keys_ [::PackageRepository::getUniqueSuffix] .asc]]

    ::PackageDownloader::downloadAndSaveOpenPgpKeyFile \
    ::PackageDownloader::downloadAndSaveOpenPgpKeysFile \
        $localFileName

    ::PackageRepository::probeForOpenPgpInstallation
    ::PackageRepository::openPgpMustBeInstalled

    set imported [::PackageRepository::importOpenPgpKeyFile \
        $localFileName result]

Modified client/1.0/neutral/pkgr_setup.eagle.asc from [8cfd7ee50f] to [8c9ffed5db].

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17













18
1
2
3
4













5
6
7
8
9
10
11
12
13
14
15
16
17
18




-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2
Comment: Eagle Package Repository

iQIcBAABCAAGBQJYVMvkAAoJEFAslq9JXcLZBTYQAMbgrFtbS2DDkME29HTfR1ub
QK4NdfPVkmtG24ZbjFpilyYj7C9wh1zu3u+FmS4ObgEPdeEXXCn0tYq6cbdEiyBa
pwDdiCrbag6rBnXut+ewK3gKptrU4FeUBvn/mGSeGZplJ5koZRUqVX1E7KGnMJc+
lP3yfvunI3DdTWV+xchwxN5QfBFWAw0wz0BpX7mfnaaX3DvKhoqjS/jOYkDpjnZh
Fw7edBFFQNS6RnRGm3AuVzr6FyE4PRocSFig0n7iKkPfOwa16hRVpVsSYWGMVRAD
hB/qIJX219TnNo+Fupu/E/rE3d0E+i5fgqCH/T83EEflvz7CUtwUWbbJmAckwHhf
b4toGNIeC6JNcHiGdFnINvkcuTVf4jPQItvmVQ/HzYX85H152JGWK5ZrE7gb437a
3wYli/eE78qYDTqfsP8G2tTlUH9dCZGDjimEgLeI+HNxQPK0r4qecTr/HuWOopW6
bGb+RasUcagGfqv5BqbGIuDsCaCDTBnA6X/0OxoZ6HVOPbJ/jzpv0+DJcXY92VCe
DYjIcqE/iSF5QTb/2+qFdx1KJSlBw96Hffy5VNkfZ4v9xgDV1jq8KbxRsa0O26EZ
EbLXgu4Vh3vaso4KJql7Qc2dnd113VjpZzIeYYkk/KFZzz1mYrW0z+cS6HsayBv7
ZVvYBoy/FnkORVY2cJtk
=By2Y
iQIcBAABCAAGBQJYVwQkAAoJEFAslq9JXcLZ8FkQALcWLME/4yLQKjbqozOotXnK
lgdORXYhBtJbLWHOrOsJiq1FGnv9pb6Ay7Lfalyi8k4X8H3Dmc6UYDRu0XMZlzLc
DiU2QPTGN7RycmYCiLtC4oXu3xKEa1WPmvg5qwHzVDA0CmeMmSFe15PaYqV1W5e1
qWiyqKgchhJhIyKgnQPCZTK6vkYnGkUc5fpIzgoZUw5O3H6yTmPmnTk3Rtc48GQy
WrYG4v/0Mgu598pjIBgJwvXUpzlWnQ948S069WoHLlpqkafBaElSnBdUOJqC3sWA
1wVAmnKZ56QhSbQhkOdpluJL7lAI2mrcjmSb2OvRFgmEupWI8VJjN0sjIT3PqsUt
Q+EhHaNNlegt7MDLFWuzeKtN/EUNaDCaB5DkfXPTP9Jks9TFFCgN3l0MEFNN+AdH
kLl27v+zL9vtDmzaobr7X2NSqB6g9pZzBgibjYKAru0gbG8bmoC/0KvFOqwScNab
EwPOcMpCpbRrfmRLQ5xUyr0+MDMhzNes2Cqy/ijDv6IfmSNDqd9Zb5mdf8ukSFo0
P38ZA4xdXG1vODg2keG7tAT2IsfDsd+/0YsRrLJ2x+2TKTAPN9ih+DobwzZgNiPI
Vb2Lyndlwj7eooU4ttR1sdF4x5WIa9NjtXeJHU2lSsPZIZg70C8kp5w0SsxU64Pd
Y/s5DZ892OPwlqOkL3Mt
=xkCM
-----END PGP SIGNATURE-----

Modified client/1.0/neutral/pkgr_setup.eagle.harpy from [e1fa8a613e] to [fc0e7983b0].

17
18
19
20
21
22
23
24

25
26
27

28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66




































67
68
17
18
19
20
21
22
23

24
25
26

27
28
29
30




































31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68







-
+


-
+



-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+


    THE ASSOCIATED SOFTWARE MAY NOT WORK PROPERLY IF THIS FILE IS ALTERED.
-->
<Certificate xmlns="https://eagle.to/2011/harpy"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <Protocol>None</Protocol>
  <Vendor>Mistachkin Systems</Vendor>
  <Id>06ca970a-0ab3-40d1-b1ea-31f8b59438fa</Id>
  <Id>d43ae28c-48b4-4102-82c9-b56ff36bcb3e</Id>
  <HashAlgorithm>SHA512</HashAlgorithm>
  <EntityType>Script</EntityType>
  <TimeStamp>2016-12-17T05:23:19.9599609Z</TimeStamp>
  <TimeStamp>2016-12-18T21:46:15.3085937Z</TimeStamp>
  <Duration>-1.00:00:00</Duration>
  <Key>0x9559f6017247e3e2</Key>
  <Signature>
    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
  </Signature>
</Certificate>

Modified client/1.0/neutral/pkgr_setup.eagle.harpy.asc from [0d986c32c6] to [f3e319dd34].

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17













18
1
2
3
4













5
6
7
8
9
10
11
12
13
14
15
16
17
18




-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2
Comment: Eagle Package Repository

iQIcBAABCAAGBQJYVMvmAAoJEFAslq9JXcLZB4UP/jleaXUYBIjifW+6xg6YgoeW
Z5vHUPm7JSGXwXsSJo6dXkaaz02N1eqP2vtn1bNXbYIKf62o+SRXeu41ftOLGR9H
/Ate4RPgryM5S12LyZjb/B8P3uuTFQ+ld/54SnJ+O6RvStWWKD9qOLIZrnixRhKk
JPJwFBrFfdWY9LvrKeS+uZwWbuw9TQhAehnvULeYN9R0KBpdWHVqv2dZK9Pjiy6d
mUujtl+eK0zsb5NuqYT2x56KxzKIUmJmqXtKVkK/9VIZhYZD9NKIA67Fmcacgs9Y
VMS8yYGrDO/yS62A77Nh6GaMn1DtvMebS2ovbAiQCGZUUzw46ZdzBoDtxxNh8ZLb
m1KQLGoDHu5RdRm4k7LI8vs5EL/NJAJRpG2TaDjBXlpMfTVcI+PkrOSQolBx8f9U
eeOV30CcLQX3s7HZ4Mh+MVZfsNWGSytsuxPoOWqnTDdcws4TIdRRZC6mIFIHzJEZ
iQ0Iqspvs8ViycCkPwuVc5nuES3vqB/8thEveKu2YCQBdSqAA3GE8JWN6X8YizMC
7V5MuNRySmEGhRwM5J/bMeXasZVDQp2EGT3VQUmR5W0sAbDdVEETfdI1HEMXQbWA
QC5VRCxUoljFqfTV1bu5R2/jZf5xXrfXcWUi2CSWM2gHonypJgdrPzvXLxOtKCTN
2sP22uyHVr00CaWek92p
=uqMI
iQIcBAABCAAGBQJYVwQmAAoJEFAslq9JXcLZktMP/36AvVKxP3B43/8+QiF0vH0N
Y7Gdf7Wde99fML+4uyYm6FXBqXqukfZt/37q0M6Zlr+wWDOZAZLKsD0iI6daMMGv
3GKwTTnS4RNKF1do/ZMQxIrMK6ejFHlDRDo5IDohQ/v3/a1tUfuWIuGQ7O9Uel3A
h/Qia0OKAqXiRBZutY0g/ejLpqemV2yntDRR2IObKkXoKHCLykeFyvLvwsIbTwqU
UZrirgdZGIVT0snHpoMdUNd3UV8qz+XTUekiRd+So6gLVtNfT1bddfVr6+fIILUr
Zq/iKpZS0v1zPfmgGdhs1wgKFUa+H5P2pCN6S5x6ZiXT44g7nTTVb7pSJf64smYU
7egl51qhqeuyj6aZliN/HlphD364SqZoCECY9Ki4HO/hjbiyZu+wk4TJZu2W7cN0
cLtC1SVk6i9bM0yU2Ainzvkhtc6KefK9Kk093F4WVpcjC7QFxMEfXT77ssp5uSSv
17BrN/AJpQUnd9tZXDRzq4kWIho4k258CNgg+s0rqE8121NS8saR1fyxR14YApgA
Bub9fSZgfssHFj5TNQ8L/YjTq9ctAL/2tlmLw5XrOdKJFH9X0iX0w3yTexLMyJ7p
dOtReMaIu0HPaXrOxwtlNs4VHHyOoEEdQQPvyPCOo6He+YBeNXi7SMqGzPvQqYAr
clq/FpD41noImaC230Bc
=Z6jS
-----END PGP SIGNATURE-----

Modified client/1.0/neutral/pkgr_upload.eagle from [de331db2a1] to [4e70a976f9].

33
34
35
36
37
38
39













































































































































































































































































































































































40
41
42
43
44
45
46
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411







+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+







  [file tail [info nameofexecutable]]\
  [file tail [info script]] \[apiKey\] \[name\] \[version\] \[language\]\
  \[fileName1\] ... \[fileNameN\]"

    exit 1
  }

  #
  # NOTE: This procedure sets up the default values for all configuration
  #       parameters used by the package uploader client.  The script
  #       argument is the fully qualified path and file name for the script
  #       being evaluated.
  #
  proc setupUploadVars { script } {
    #
    # NOTE: What is the fully qualified path to the directory containing the
    #       checkout for the package client?
    #
    variable checkoutDirectory

    if {![info exists checkoutDirectory]} then {
      set checkoutDirectory [file dirname $script]
    }

    #
    # NOTE: The command to use when attempting to stage package files using
    #       Fossil.
    #
    variable fossilAddCommand; # DEFAULT fossil add {${fileName}}

    if {![info exists fossilAddCommand]} then {
      set fossilAddCommand {fossil add {${fileName}}}
    }

    #
    # NOTE: The command to use when attempting to commit package files using
    #       Fossil.
    #
    variable fossilCommitCommand; # DEFAULT fossil commit ...

    if {![info exists fossilCommitCommand]} then {
      set fossilCommitCommand {fossil commit -m {${comment}}\
          --branch {${branch}} --user anonymous --chdir \
          {${checkoutDirectory}} --no-prompt}
    }

    #
    # NOTE: The regular expression pattern used when attempting to verify
    #       that Fossil committed a set of files.
    #
    variable fossilCommitPattern; # DEFAULT: {^New_Version: ([0-9a-f]{40})$}

    if {![info exists fossilCommitPattern]} then {
      set fossilCommitPattern {^New_Version: ([0-9a-f]{40})$}
    }
  }

  #
  # NOTE: This procedure returns a string value, formatted for use within a
  #       script block being processed by the [string map] command.  The
  #       value argument is the string value to format.  No return value is
  #       reserved to indicate an error.  This procedure may not raise any
  #       script errors.
  #
  proc formatStringMapValue { value } {
    if {[string length $value] == 0} then {
      return \"\"
    }

    set list [list $value]

    if {$value eq $list} then {
      return $value
    } else {
      return $list
    }
  }

  #
  # NOTE: This procedure counts the common path components for two paths.  The
  #       count is returned, zero if there are no common path components.  The
  #       path1 and path2 arguments are the paths to compare.  This procedure
  #       may not raise script errors.
  #
  proc countCommonPathParts { path1 path2 } {
    set parts1 [file split $path1]
    set length1 [llength $parts1]

    set parts2 [file split $path2]
    set length2 [llength $parts2]

    set length [expr {min($length1, $length2)}]

    for {set index 0} {$index < $length} {incr index} {
      set part1 [lindex $parts1 $index]
      set part2 [lindex $parts2 $index]

      if {$part1 ne $part2} then {
        return $index
      }
    }

    return $length
  }

  #
  # NOTE: This procedure processes a list of (fully?) qualified file names and
  #       tries to determine their common containing directory, if any.  The
  #       fileNames argument is the list of (fully?) qualified file names to
  #       process.  This procedure may not raise script errors.  If there is
  #       no common containing directory, an empty string is returned.
  #
  proc getCommonContainingDirectory { fileNames } {
    set length [llength $fileNames]

    if {$length == 0} then {
      return ""
    }

    set oldFileName [lindex $fileNames 0]

    if {$length == 1} then {
      return [file dirname $oldFileName]
    }

    set minimumCount 0

    for {set index 1} {$index < $length} {incr index} {
      set newFileName [lindex $fileNames $index]
      set newCount [countCommonPathParts $oldFileName $newFileName]

      if {$newCount == 0} then {
        return ""
      }

      if {$minimumCount == 0 || $newCount < $minimumCount} then {
        set oldFileName $newFileName
        set minimumCount $newCount
      }
    }

    if {$minimumCount == 0} then {
      return ""
    }

    incr minimumCount -1

    return [eval file join [lrange [file split $oldFileName] 0 $minimumCount]]
  }

  #
  # NOTE: This procedure attempts to process a list of (fully?) qualified file
  #       names and return the corresponding list of relative file names.  The
  #       fileNames argument is the list of (fully?) qualified file names to
  #       process.  The maximumLevels argument is the maximum path depth that
  #       is allowed for all file names.  This procedure may raise script
  #       errors.
  #
  proc getRelativeFileNames { fileNames maximumLevels } {
    set directory [getCommonContainingDirectory $fileNames]
    set directoryParts [file split $directory]
    set fileNameIndex [expr {[llength $directoryParts] - 1}]

    if {$fileNameIndex < 0} then {
      error [appendArgs \
          "invalid containing directory \"" $directory \
          "\": cannot go up one level"]
    }

    set relativeFileNames [list]

    foreach fileName $fileNames {
      set fileNameParts [lrange \
          [file split $fileName] $fileNameIndex end]

      if {$maximumLevels > 0 && \
          [llength $fileNameParts] > $maximumLevels} then {
        error [appendArgs \
            "depth for file name \"" $fileName \
            "\" exceeds maximum (" $maximumLevels )]
      }

      set relativeFileName [eval file join $fileNameParts]

      if {[string length $relativeFileName] == 0 || \
          [file pathtype $relativeFileName] ne "relative"} then {
        error [appendArgs \
            "bad file name \"" $relativeFileName "\", not relative"]
      }

      lappend relativeFileNames $relativeFileName
    }

    return $relativeFileNames
  }

  #
  # NOTE: This procedure attempts to create a script chunk that appends the
  #       specified list of file names to a list variable.  The fileNames
  #       argument is the list of (fully?) qualified file names to append to
  #       the list variable.  The maximumLevels argument is the maximum path
  #       depth that is allowed for all file names.  This procedure may raise
  #       script errors.
  #
  proc getScriptChunkForFileNames { fileNames maximumLevels } {
    set result ""
    set relativeFileNames [getRelativeFileNames $fileNames $maximumLevels]

    foreach relativeFileName $relativeFileNames {
      if {[string length $result] > 0} then {
        append result \n
      }

      append result {  lappend fileNames [file join }
      append result [file split $relativeFileName]
      append result \]
    }

    return $result
  }

  #
  # NOTE: This procedure creates and returns a script block designed for use
  #       with the package repository server in order to download and provide
  #       a package consisting of a set of files.  The serverId argument is
  #       the identifier for the specific server to use, if any.  The
  #       versionId argument is the identifier for the specific version to use,
  #       if any.  The language argument must be the literal string "eagle" or
  #       the literal string "tcl".  The version argument must be one of the
  #       literal strings "8.4", "8.5", or "8.6" when the language is "tcl"
  #       -OR- the literal string "1.0" when the language is "eagle".  The
  #       platform argument must be an empty string -OR- one of the literal
  #       strings "neutral", "win32-arm", "win32-x86", "win64-arm64",
  #       "win64-ia64", or "win64-x64".  The fileNames argument is the list of
  #       (fully?) qualified file names to be downloaded when the associated
  #       package is being provided.  The options argument is reserved for
  #       future use, it should be an empty list.
  #
  # <public>
  proc createRepositoryScript {
          serverId versionId language version platform fileNames options } {
    ::PackageDownloader::verifyServerId $serverId
    ::PackageDownloader::verifyVersionId $versionId
    ::PackageDownloader::verifyLanguageAndVersion $language $version isClient

    set prologue ""

    if {[string length $serverId] > 0} then {
      append prologue "  ::PackageDownloader::useServerId " $serverId \n
    }

    if {[string length $versionId] > 0} then {
      append prologue "  ::PackageDownloader::useVersionId " $versionId \n
    }

    append prologue "  "

    return [string trim [string map [list \r\n \n \
        %language% [formatStringMapValue $language] \
        %version% [formatStringMapValue $version] \
        %platform% [formatStringMapValue $platform] \
        %prologue% $prologue %ns% ::PackageDownloader \
        %backslash% \\  %fileNames% \
        [getScriptChunkForFileNames $fileNames 2]] {
apply [list [list] {
  package require Eagle.Package.Downloader

%prologue%%ns%::resetCookieAndLoginSimple

  set fileNames [list]

%fileNames%

  set options [list %backslash%
      -persistent false -usePgp true -useAutoPath true]

  %ns%::downloadFiles %language% %version% %platform% $fileNames $options
  %ns%::logoutAndResetCookie
}]
    }]]
  }

  #
  # NOTE: This procedure attempts to stage the specified package files using
  #       Fossil.  The fileNames argument is a list of (fully?) qualified
  #       local file names to stage.
  #
  # <public>
  proc stagePackageFiles { language version platform fileNames } {
    variable checkoutDirectory
    variable fossilAddCommand

    set relativeFileNames [getRelativeFileNames $fileNames]
    set savedPwd [pwd]; cd $checkoutDirectory

    foreach fileName $fileNames relativeFileName $relativeFileNames {
      file mkdir [file join \
          $language $version $platform [file dirname $relativeFileName]]

      file copy $fileName $relativeFileName
      set fileName $relativeFileName

      if {[isEagle]} then {
        set fileName [::PackageRepository::formatExecArgument $fileName]

        if {[catch {
          eval exec -success Success [subst $fossilAddCommand]
        } error]} then {
          cd $savedPwd

          error [appendArgs \
              "failed to stage file \"" $fileName "\": " $error]
        }
      } else {
        if {[catch {
          eval exec [subst $fossilAddCommand]
        } error]} then {
          cd $savedPwd

          error [appendArgs \
              "failed to stage file \"" $fileName "\": " $error]
        }
      }
    }

    cd $savedPwd
  }

  #
  # NOTE: This procedure attempts to commit the staged package files to the
  #       remote package file repository using Fossil.  The varName argument
  #       is the name of a scalar variable in the context of the immediate
  #       caller that will receive the resulting Fossil check-in identifier.
  #
  # <public>
  proc commitPackageFiles { varName } {
    variable checkoutDirectory
    variable fossilCommitCommand
    variable fossilCommitPattern

    set branch ""; # TODO: Figure out a good branch.
    set comment ""; # TODO: Figure out a good comment.

    if {[isEagle]} then {
      if {[catch {
        eval exec -nocarriagereturns -stdout output -stderr error \
            [subst $fossilCommitCommand]
      } result] == 0} then {
        set result [appendArgs $output $error]
      } else {
        return false
      }
    } else {
      if {[catch {
        eval exec [subst $fossilCommitCommand]
      } result]} then {
        return false
      }
    }

    if {[string length $varName] > 0} then {
      upvar 1 $varName checkin
    }

    if {![info exists result] || \
        ![regexp -line -- $fossilCommitPattern $result dummy checkin]} then {
      return false
    }

    return true
  }

  #
  # NOTE: Figure out the fully qualified path to the current script file.
  #       If necessary, add it to the auto-path for the interpreter.  The
  #       necessary supporting packages (i.e. the Package Repository and
  #       other support packages) that are assumed to exist in the same
  #       directory as the current script file.
  #
63
64
65
66
67
68
69

70

71
72


























73
74
75
76
77
78
79
428
429
430
431
432
433
434
435

436
437

438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470







+
-
+

-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+







  #       package.
  #
  namespace eval ::PackageRepository {
    variable verboseUriDownload true
  }

  #
  # NOTE: This package requires both the package repository and downloader
  # NOTE: Load the Package Repository Client package now.
  #       client packages.
  #
  package require Eagle.Package.Repository
  package require Eagle.Package.Downloader

  #
  # NOTE: This package requires that support for namespaces, which is an
  #       optional feature of Eagle, must be enabled.
  #
  if {[isEagle] && ![namespace enable]} then {
    error "namespaces must be enabled for this package"
  }

  #
  # NOTE: Attempt to read optional settings file now.  This may override
  #       one or more of the variable setup in the next step.
  #
  ::PackageRepository::maybeReadSettingsFile [info script]

  #
  # NOTE: Setup the variables, within this namespace, used by this script.
  #
  setupUploadVars [info script]

  #
  # NOTE: Provide the package to the interpreter.
  #
  package provide Eagle.Package.Uploader \
    [expr {[isEagle] ? [info engine PatchLevel] : "1.0"}]

  #
  # NOTE: Verify that the number of command line arguments meets the basic
  #       requirements of this tool.
  #
  if {[info exists ::argv] && [llength $::argv] >= 5} then {
    #

Modified client/1.0/neutral/pkgr_upload.eagle.asc from [60f01e4cc7] to [535ecba6c3].

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17













18
1
2
3
4













5
6
7
8
9
10
11
12
13
14
15
16
17
18




-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2
Comment: Eagle Package Repository

iQIcBAABCAAGBQJYVM2HAAoJEFAslq9JXcLZqDQP/0EuHa77yyYqMTY5LnOfFZ0t
vDquGO1Qk4vOw3m3lQKejssZqQLS46qe0+xfdDg81/vIU5w81Z1FI8V51m5EgHd4
g9O9GOGgLR/ZRaEkEY12nzvyk4kBYQ6OmQshVVD0cSb+72SNh5Olry8DnoG8bRn0
LGB43ir2+6Mhu02o7WGdI7HlST51/WHMkIkvpbRqxFa8W2E0YahngZJA0icTnpHN
ZY+iosWtPk9gigW0GWAjJLQBbwVYjnfd0hX5W5AcQ6ZU/6m1vBNGJTMk8+cuFnPr
TvzohUMJdO38ITtFr/s/pIq7ELyP25ayTMDdWKARKHKRoLQAXuWvwmXNXrF71VSE
fBPQrY47AGE4PBpG+yVqlv1hqDu+sPhRzNl2XcXTRVOZ1mRhQnfc2ebQkSKETU+O
vzspwLmFrOJ8gsYTidSgw8WCXaywjssISNtSm0AcklwjgOeO2e6Vc1erY1h9HctS
kTB63CuH5V4OuxBUkjFXqmhBuqYUZG+W6Soha99hIw9Jj8j12yfOF97N7ldm7XVO
NoQweZJXYrV4At9ZiXXhMsZ8RgolQtms29kFXeZ879rq4P8QlCmIN+NDJZHbI2k8
TyVayOg1Q8LcLIi51o/kQ7ldzSd/xZf6kJzPZdUDpKqJBZHUH0aF8C1f/VhebacI
c+gJibewxrSrqMjIE6B+
=MPwB
iQIcBAABCAAGBQJYVwQtAAoJEFAslq9JXcLZnJwQALBsQx/cyFnhirxuzPy2FRKV
PzEcn31GlctKucSzMEM6OPebLica8JpZ8F2G+EEaks4LAYEfS3L7nXsSzO5K1FkB
o6UCvho/IHvbP8Qealte7xydpAH9voxLuoZgoQvtIl4pnNy2zv+YYXX4vwiKdvkl
PttvyIlVZNhNUIKEivizmkZkN9Oj+uPqawn3FFSuUqg45jEB+h2Wc6mi0T6Hr85B
kCc56a+/w6IvMQXP/cIlY6/0Ki4ExSE4MYxJ/YuvdEDXokcTSgvuMXdhter1U8TG
X4cVHatGfjNvHPt7cjax+mRvi/md7f9xKOeI/mjDIdfqMzAMhXrP78lEO+uHqxgx
p1ugiPJYmljjiWzu/qX/onqkL95CfGIZlY4GNyd4E8nUwY/VWW0yXQwrcJdY/oic
ehfVJuenaeUUfXVDNux8meT/FnngGLoEQK9SM6HYKDlc1IUS6Oj0d68pd2hQNItC
CdJ+co8dPL1fhxGTcQUEkgTUNAbq3PmMG8J+NQQmz7MPSD/2c4d1EN5A1ZlK/l90
GZT79FrCJholqkCcy7cJxBSRSuaw2MIc1Gsxipv74/936OSJbuG7l5fmzgcR6Ek1
DlckRcQXsHoB5XjfjxXV/MEQpvaUvkCuSvK/yvwxtUcjAr8ve2axMhdrB/pPdlt3
wVmzw6hrTus7pNmJsCdv
=Hylz
-----END PGP SIGNATURE-----

Modified client/1.0/neutral/pkgr_upload.eagle.harpy from [1d2925f0b5] to [08d06ff8a9].

17
18
19
20
21
22
23
24

25
26
27

28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66




































67
68
17
18
19
20
21
22
23

24
25
26

27
28
29
30




































31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68







-
+


-
+



-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+


    THE ASSOCIATED SOFTWARE MAY NOT WORK PROPERLY IF THIS FILE IS ALTERED.
-->
<Certificate xmlns="https://eagle.to/2011/harpy"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <Protocol>None</Protocol>
  <Vendor>Mistachkin Systems</Vendor>
  <Id>410ca3b4-8e95-44e4-a931-03b0cc7e1281</Id>
  <Id>8a427ea5-5e28-484c-8fc6-75d2516fe10b</Id>
  <HashAlgorithm>SHA512</HashAlgorithm>
  <EntityType>Script</EntityType>
  <TimeStamp>2016-12-17T05:30:22.5644531Z</TimeStamp>
  <TimeStamp>2016-12-18T21:46:38.2734375Z</TimeStamp>
  <Duration>-1.00:00:00</Duration>
  <Key>0x9559f6017247e3e2</Key>
  <Signature>
    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
  </Signature>
</Certificate>

Modified client/1.0/neutral/pkgr_upload.eagle.harpy.asc from [f19af08e58] to [75bba8197e].

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17













18
1
2
3
4













5
6
7
8
9
10
11
12
13
14
15
16
17
18




-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2
Comment: Eagle Package Repository

iQIcBAABCAAGBQJYVM2KAAoJEFAslq9JXcLZiNsQAJqKASG3YGn6w7BJRAonKw0y
jmxVC9wCeFwarD46I0E93XQmNNA6mkonRwT5CvDuUd4G+sH7i5fyM2BIVy0XFO26
OutiouvupFBiQU2ObsZbGYKrsfN/EpA2/axWAldg4WYDH7dC+3pNd95yp61dDfBg
bJ6sidNHnUokLzJQ5PaFSYrgaf9/toEZZfOeCmF+4r0frIf4anERuwA4R+RmeeX4
3ZZbnbb2GwNortF/DEy5DyRO/sz7eyBIBACdp/IacSvHy0UIFD8vIIA71DFrYiMg
pmf0JyFjwXFF98VLwmatpb3OvtuwEoN+0vaCZ/BRAY4FpTykDUuvKGAYn26k0lVU
xaKtt9jDBii1VnO3ZgoBjnAYu4dfd35F+EOi7P5uT6SsPS+GjfbZrQrimyDO++Cd
8rGGw3FEKFVaV40mrT1dlIdpo64fsQmLTwYc+SM/fiQbtbKZb9y+Rqo0UO9cuWCP
l+dZyw8vRRelRxpsZNYuImLk27HRrBr38JelANfFuO7Lm4WiC6DdzEiL3Sf9BtEN
xkapDjBz7VhUJ97m0KoC+ODemckv3tlZD+9deowRdYmdjGKtn8GqbNhNfoF0vUGN
g4zj+UvQ1NblfPLVBEF4WcZFiHqAuRTw/WDBraZXhwbMi51JjVWfOo2WK13tODl8
KGic5Aea3InSHNGZU4rj
=MPMG
iQIcBAABCAAGBQJYVwQvAAoJEFAslq9JXcLZe+oP/Rp4FbANSsPE8W02UsaCmK9c
DQm7+Gx0I8CpgCi/BXW99yotqJu4ymJ3XcrUkovJ5OtwqmyOUg4s5Q91K4lohSTk
Oqf5b+Vn7qQkzkf7ZH9H6DgBI1jRQfpHmpHxLMbQzKD3Empdq0YQgEjDtE1V2FId
QTjidrwJQm44SS1TsLUBWUp6l1tbqR2dAz5wfw8vTwUWVFepxywK0E/xPISRVXNX
1O9HBIZ0xuQoJhNo/1ARKXAa0nDybC4oH/PhuwsaTUsJER83GuEzs52/ProejlGm
gRstZmtzGd4eOabGzlnQGFI4ql/FLDvCKIwO0qRKx2z4YJYl1EgrCSCeaGf25upb
kSMEKByPZUBFiLhh6HgzTswyZk32hcc5O66rrQe/qnA4PBhputXeaPB7UIDAmJlB
z7UigHmnvIKVX3ZS+gzr0FncBLn1BrTMaBlOM403wXexKTG6p2EXOR4EWnLzYytK
K9pm0x1HPd3sYKjUWZrNlHzR2pAeAFSVpYSdP/FkIn6kqSepLuxen1JX5EXp0z4Z
bNqQMVFFQ3fVdF0u91LefMuPrZ1fE1qp6cFJ+MTXlMUxQiPj7VVkRyqJi7dve0ka
x/GIBn/8QhDsf/I9p+ZwhtLn/hxjlo/X0EX5Pb5D+7aEzqkQbKJ+aSCS5QkCEtVX
DpCHEnVVybZlM0TSvV6m
=y+0H
-----END PGP SIGNATURE-----