<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>4193</bug_id>
          
          <creation_ts>2005-07-29 00:31:01 -0700</creation_ts>
          <short_desc>Add pixel-based regression tests for svg</short_desc>
          <delta_ts>2005-08-08 01:51:06 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>SVG</component>
          <version>420+</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P4</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Seidel (no email)">eric</reporter>
          <assigned_to name="Ben La Monica">ben.lamonica</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>15389</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2005-07-29 00:31:01 -0700</bug_when>
    <thetext>Add pixel-based regression tests for svg

Now that svg2png has made it into CVS, it&apos;s time to add a set of pixel based regression tests for SVG.

KDE already has their own version of such:
http://websvn.kde.org/trunk/tests/ksvgtests/

as well as:
http://websvn.kde.org/trunk/kdenonbeta/ksvg2/scripts/

The OpenClipart library might make a great starting point (or some of the files in such, rather):
http://www.openclipart.org/

I&apos;m hoping those with QA tendencies will go to town on this one.  The script could be modeled after 
kde&apos;s regressiontest.sh, or webkit-tests, or a combination thereof.

I&apos;m also happy to patch svg2png to behave like DumpRenderTree does and take file names on stdin as 
necessary.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>15757</commentid>
    <comment_count>1</comment_count>
      <attachid>3213</attachid>
    <who name="Ben La Monica">ben.lamonica</who>
    <bug_when>2005-08-03 00:13:07 -0700</bug_when>
    <thetext>Created attachment 3213
Added diff support to svg2png

Here is the initial diff support for svg2png. This we, we can use Core Image,
and we don&apos;t have to have ImageMagick installed.

Please look over the memory usage. I&apos;m not sure if I deallocate everything
properly (still new to Obj-C)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>15758</commentid>
    <comment_count>2</comment_count>
      <attachid>3213</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2005-08-03 00:23:07 -0700</bug_when>
    <thetext>Comment on attachment 3213
Added diff support to svg2png

Some thoughts: 
pojo: a positive integer is an integer &gt; 0... your log message is sorta
redundant

you still have tabs, choose &quot;re-indent&quot; from the format menu

and I&apos;m still not comfortable with --diff not workign for multiple files...
although that could be a &quot;first step&quot; if necessary</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>15759</commentid>
    <comment_count>3</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2005-08-03 00:31:30 -0700</bug_when>
    <thetext>The memory looked fine (from my cursory overview).  I would suggest that you make --diff work like --
output, have it be an &quot;explicitDiffPath&quot;, and have --diff-suffix set a special suffix which is appended to the 
file name (like &quot;pngPath&quot;) works currently.  If --diff-suffix is set, then you can use assume you are to 
dump diffs and do so with the appropriate suffix, one per file passed.  The reason why we want to design 
for multiple files, is that the eventual plan is to work like DumpRenderTree and read multiple files from 
stdin.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>15797</commentid>
    <comment_count>4</comment_count>
      <attachid>3217</attachid>
    <who name="Ben La Monica">ben.lamonica</who>
    <bug_when>2005-08-03 17:16:33 -0700</bug_when>
    <thetext>Created attachment 3217
multiple svgs can be tested now

Can now test multple svgs at once using the --test method.

ie:

svg2png --test -reference hisc-appl-konqueror.svg

Will create hisc-appl-konqueror.png in the same directory, and will compare it
against hisc-appl-konqueror-reference.png.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>15834</commentid>
    <comment_count>5</comment_count>
      <attachid>3219</attachid>
    <who name="Ben La Monica">ben.lamonica</who>
    <bug_when>2005-08-03 22:22:01 -0700</bug_when>
    <thetext>Created attachment 3219
Fixed several bugs, removed tabs, cleaned up code, fixed help</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>15999</commentid>
    <comment_count>6</comment_count>
      <attachid>3236</attachid>
    <who name="Ben La Monica">ben.lamonica</who>
    <bug_when>2005-08-05 23:55:20 -0700</bug_when>
    <thetext>Created attachment 3236
Tentative final patch for svg2png

Here is the tentative final patch for svg2png.

* Separated the functions out into a separate file for inclusion into other
apps.
* Added an Animated GIF showing the two images side by side (still needs a
little work to get it to loop)
* Finally got the diff to read out of the image in memory instead of loading it
from file again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>16006</commentid>
    <comment_count>7</comment_count>
      <attachid>3236</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2005-08-06 00:57:26 -0700</bug_when>
    <thetext>Comment on attachment 3236
Tentative final patch for svg2png

We&apos;ve discussed several issues over IRC (including spacing, function breakout,
copyright) which will need to be fixe before review:+</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>16013</commentid>
    <comment_count>8</comment_count>
      <attachid>3238</attachid>
    <who name="Ben La Monica">ben.lamonica</who>
    <bug_when>2005-08-06 02:41:10 -0700</bug_when>
    <thetext>Created attachment 3238
Fixed the issues that were discussed in IRC

* Save the file inside of main now instead of in the individual functions
* Clarified some of the logic
* Improved some of the variable names to make code more readable
* removed the NSLog functions, replaced with printf</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>16020</commentid>
    <comment_count>9</comment_count>
      <attachid>3238</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2005-08-06 10:42:49 -0700</bug_when>
    <thetext>Comment on attachment 3238
Fixed the issues that were discussed in IRC

This is great. We&apos;ll eventually want to use this for WebKit outside SVG to.

But the framework search path that uses ../../../../WebKitBuild is incorrect.
That hardcodes the particular directory structure you are using and won&apos;t work
with people who have a different build results path.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>16024</commentid>
    <comment_count>10</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2005-08-06 11:09:49 -0700</bug_when>
    <thetext>I plan to prepare a patch to DumpRenderTree to add this same functionality once this lands.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>16027</commentid>
    <comment_count>11</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2005-08-06 11:30:45 -0700</bug_when>
    <thetext>A few more corrections ben, since this is going through one more round of fixes:

#1 there are still some areas where spacing is not in line with the webkit guidlines.  There is always a 
space after a comma.  As an example:
saveAnimatedGIFToFile(svgBitmap,referenceBitmap,animatedGIFPath);
should have spaces.

#2 I think you didn&apos;t quite understand mjs&apos; comment about inline-data.  The arguments:
int maxWidth, int maxHeight
are still carrying inline data, even if you &quot;parse it out&quot; into bools in the lines:
if (maxWidth &gt; 0)
    isMaxWidthSpecified = YES;

I still don&apos;t understand why you don&apos;t just make maxWidth=500 by default (in main())?  There are only 
two behaviors.  1.  specify a maxWidth,height.  2.  dont&apos; specify one, and it defaults to 500,500.  There 
is no way to have the png grow without bounds, or?  By specifying 0?  You could consider making all 4 
values isMaxWidthSpecified, isMaxHeightSpecified, maxWidth, maxHeight globals... then you wouldnt&apos; 
have to pass them into your function call.  Again, I&apos;m not sure you need isMaxHeightSpecified, etc. 
unless your desire is to support unbounded growth.

#3 why?
-                printf(&quot;Unrecognized option %@\n&quot;, argString);
+                printf(&quot;Unrecognized option %s\n&quot;, [argString cString]);
does %@ not work?  either way, you should be using UTF8String instead of cString (deprecated).  Or you 
can just use &quot;arg&quot; directly, since that&apos;s already the char * version of the string.

#4 personally I think that
+            NSString *animatedGIFPath = [[svgPNGPath stringByDeletingPathExtension]
+                stringByAppendingPathExtension:@&quot;gif&quot;];
should use the -diff filename instead.

#5 to answer darin&apos;s concern, just open up the target inspector, and remove the &quot;frameworks search 
path&quot; variable there.  Xcode added that for you when you added WebCore+SVG.  Removing it will cause 
things to work correctly on all systems.

#6 is this still valid?
+ * TODO: Get the images to loop forever with a 1 sec delay.
I know that&apos;s possible with CG.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>16097</commentid>
    <comment_count>12</comment_count>
      <attachid>3260</attachid>
    <who name="Ben La Monica">ben.lamonica</who>
    <bug_when>2005-08-07 02:50:51 -0700</bug_when>
    <thetext>Created attachment 3260
Fixed changes, added output-dir and baseline-dir

Fixed the items we discussed in the above comment.
Added an output-dir option to allow the output images to be put in a separate
directory
Added a baseline-dir option to allow the baseline images to be in a separate
directory
Fixed the animated gif.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>16098</commentid>
    <comment_count>13</comment_count>
      <attachid>3260</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2005-08-07 03:03:50 -0700</bug_when>
    <thetext>Comment on attachment 3260
Fixed changes, added output-dir and baseline-dir

Ben messaged me on IRC to say there was &quot;something wrong with this patch and to
not approve until he had fixed it in the morning&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>16116</commentid>
    <comment_count>14</comment_count>
      <attachid>3260</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2005-08-07 10:02:55 -0700</bug_when>
    <thetext>Comment on attachment 3260
Fixed changes, added output-dir and baseline-dir

Looks fine, r=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>16127</commentid>
    <comment_count>15</comment_count>
      <attachid>3264</attachid>
    <who name="Ben La Monica">ben.lamonica</who>
    <bug_when>2005-08-07 13:48:44 -0700</bug_when>
    <thetext>Created attachment 3264
Fixed small issues

Reordered some CFReleases, fixed some comments, and fixed the xcode project
file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>16130</commentid>
    <comment_count>16</comment_count>
      <attachid>3265</attachid>
    <who name="Ben La Monica">ben.lamonica</who>
    <bug_when>2005-08-07 13:58:09 -0700</bug_when>
    <thetext>Created attachment 3265
cvs diff patch

This patch is from the cvs diff. I can&apos;t add the two files that are necessary
because they aren&apos;t in cvs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>16131</commentid>
    <comment_count>17</comment_count>
      <attachid>3266</attachid>
    <who name="Ben La Monica">ben.lamonica</who>
    <bug_when>2005-08-07 13:59:04 -0700</bug_when>
    <thetext>Created attachment 3266
ImageDiff.h</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>16132</commentid>
    <comment_count>18</comment_count>
      <attachid>3267</attachid>
    <who name="Ben La Monica">ben.lamonica</who>
    <bug_when>2005-08-07 13:59:54 -0700</bug_when>
    <thetext>Created attachment 3267
ImageDiff.m</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>16140</commentid>
    <comment_count>19</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2005-08-07 14:22:42 -0700</bug_when>
    <thetext>So the Tool is in.... but this bug really isn&apos;t complete w/o a way to run the tool over the svg test suite.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>3213</attachid>
            <date>2005-08-03 00:13:07 -0700</date>
            <delta_ts>2005-08-03 17:16:33 -0700</delta_ts>
            <desc>Added diff support to svg2png</desc>
            <filename>svg2png.m.diff</filename>
            <type>text/plain</type>
            <size>8628</size>
            <attacher name="Ben La Monica">ben.lamonica</attacher>
            
              <data encoding="base64">SW5kZXg6IHN2ZzJwbmcubQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvV2ViS2l0VG9v
bHMvc3ZnMnBuZy9zdmcycG5nLm0sdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMQpkaWZmIC11IC1y
MS4xIHN2ZzJwbmcubQotLS0gc3ZnMnBuZy5tCTI5IEp1bCAyMDA1IDA1OjI2OjA3IC0wMDAwCTEu
MQorKysgc3ZnMnBuZy5tCTMgQXVnIDIwMDUgMDc6MTA6NTEgLTAwMDAKQEAgLTI1LDYgKzI1LDkg
QEAKIAogI2ltcG9ydCA8V2ViQ29yZStTVkcvRHJhd0RvY3VtZW50UHJpdmF0ZS5oPgogI2ltcG9y
dCA8V2ViQ29yZStTVkcvRHJhd1ZpZXcuaD4KKyNpbXBvcnQgPFF1YXJ0ekNvcmUvQ0lGaWx0ZXIu
aD4KKyNpbXBvcnQgPFF1YXJ0ekNvcmUvQ0lJbWFnZS5oPgorI2ltcG9ydCA8UXVhcnR6Q29yZS9D
SUNvbnRleHQuaD4KIAogZXh0ZXJuIGNvbnN0IGRvdWJsZSBzdmcycG5nVmVyc2lvbk51bWJlcjsK
IGV4dGVybiBjb25zdCB1bnNpZ25lZCBjaGFyIHN2ZzJwbmdWZXJzaW9uU3RyaW5nW107CkBAIC0z
MywxNSArMzYsMTggQEAKIHsKICAgICBwcmludGYoIlVzYWdlOiAlcyBbb3B0aW9uc10gZmlsZVtz
XVxuIiwgbmFtZSk7CiAgICAgcHJpbnRmKCJPcHRpb25zOlxuIik7Ci0gICAgcHJpbnRmKCIgIC0t
dmVyc2lvblx0XHRcdFByaW50cyBmdWxsIHZlcnNpb24gKCUuMWYpIGluZm9ybWF0aW9uIGFuZCBl
eGl0cy5cbiIsIHN2ZzJwbmdWZXJzaW9uTnVtYmVyKTsKLSAgICBwcmludGYoIiAgLS1vdXRwdXQg
PG91dHB1dGZpbGU+IGR1bXAgYSBwbmcgY29weSBvZiBhIHNpbmdsZSBzdmcgaW5wdXQgZmlsZSB0
byB0aGUgbmFtZWQgcGF0aFxuIik7Ci0gICAgcHJpbnRmKCIgIC0tc3VmZml4IDxzdWZmaXg+IGFw
cGVuZCA8c3VmZml4PiB0byBlYWNoIG91dHB1dCBmaWxlIGUuZy4gPGlucHV0bmFtZT48c3VmZml4
Pi5wbmdcbiIpOworICAgIHByaW50ZigiICAtLXZlcnNpb25cdFx0UHJpbnRzIGZ1bGwgdmVyc2lv
biAoJS4xZikgaW5mb3JtYXRpb24gYW5kIGV4aXRzLlxuIiwgc3ZnMnBuZ1ZlcnNpb25OdW1iZXIp
OworICAgIHByaW50ZigiICAtLXdpZHRoIDxpbnQ+XHRcdHNldHMgdGhlIHdpZHRoIG9mIHRoZSBv
dXRwdXQgcG5nXG4iKTsKKyAgICBwcmludGYoIiAgLS1oZWlnaHQgPGludD5cdHNldHMgdGhlIGhl
aWdodCBvZiB0aGUgb3V0cHV0IHBuZ1xuIik7CisgICAgcHJpbnRmKCIgIC0tZGlmZiA8ZmlsZW5h
bWU+LnBuZ1x0cGVyZm9ybXMgYSBkaWZmZXJlbmNlIGJsZW5kIG9uIHRoZSBvdXRwdXQgcG5nIHdp
dGggdGhlIHJlbmRlcmVkIHN2Z1xuIik7CisgICAgcHJpbnRmKCIgIC0tb3V0cHV0IDxvdXRwdXRm
aWxlPlx0ZHVtcCBhIHBuZyBjb3B5IG9mIGEgc2luZ2xlIHN2ZyBpbnB1dCBmaWxlIHRvIHRoZSBu
YW1lZCBwYXRoXG4iKTsKKyAgICBwcmludGYoIiAgLS1zdWZmaXggPHN1ZmZpeD5cdGFwcGVuZCA8
c3VmZml4PiB0byBlYWNoIG91dHB1dCBmaWxlIGUuZy4gPGlucHV0bmFtZT48c3VmZml4Pi5wbmdc
biIpOwogICAgIHByaW50ZigiV2hlbiAtLW91dHB1dCBpcyBub3Qgc3BlY2lmaWVkLCBvdXRwdXQg
ZmlsZXMgYXJlIGNyZWF0ZWQgaW4gdGhlIHNhbWUgZGlyZWN0b3J5XG4iKTsKLSAgICBwcmludGYo
ImFzIHRoZSBvcmlnaW5hbCBzb3VyY2UgZmlsZXMgZS5nLiA8c291cmNlIGRpcmVjdG9yeT4vPGZp
bGVuYW1lPjxzdWZmaXg+LnBuZyIpOworICAgIHByaW50ZigiYXMgdGhlIG9yaWdpbmFsIHNvdXJj
ZSBmaWxlcyBlLmcuIDxzb3VyY2UgZGlyZWN0b3J5Pi88ZmlsZW5hbWU+PHN1ZmZpeD4ucG5nXG5c
biIpOwogICAgIGV4aXQoMSk7CiB9OwogCi12b2lkIG91dHB1dFBORyhOU1N0cmluZyAqc3ZnUGF0
aCwgTlNTdHJpbmcgKnBuZ1BhdGgpCitOU0JpdG1hcEltYWdlUmVwICpvdXRwdXRQTkcoTlNTdHJp
bmcgKnN2Z1BhdGgsIE5TU3RyaW5nICpwbmdQYXRoLCBpbnQgd2lkdGgsIGludCBoZWlnaHQpCiB7
CiAgICAgLy8gbG9hZCB0aGUgZ2l2ZW4gZG9jdW1lbnQKICAgICBEcmF3RG9jdW1lbnQgKmRvY3Vt
ZW50ID0gW1tEcmF3RG9jdW1lbnQgYWxsb2NdIGluaXRXaXRoQ29udGVudHNPZkZpbGU6c3ZnUGF0
aF07CkBAIC01MSwxMiArNTcsMTggQEAKICAgICBbdmlldyBzZXREb2N1bWVudDpkb2N1bWVudF07
CiAgICAgW3ZpZXcgc2l6ZVRvRml0Vmlld0JveF07CiAgICAgCi0gICAgLy8gTXkgbWF4aW11bSA1
MDB4NTAwIHNpemUgaGFjazoKKyAgICAvLyBEZWZhdWx0IHRoZSBzaXplIHRvIDUwMHg1MDAgaWYg
bm90IHNwZWNpZmllZAogICAgIE5TU2l6ZSBib3VuZHNTaXplID0gW3ZpZXcgYm91bmRzXS5zaXpl
OwotICAgIGlmIChib3VuZHNTaXplLndpZHRoID4gNTAwKQorICAgIGlmICh3aWR0aCA8PSAwKQog
ICAgICAgICBib3VuZHNTaXplLndpZHRoID0gNTAwOwotICAgIGlmIChib3VuZHNTaXplLmhlaWdo
dCA+IDUwMCkKKyAgICBlbHNlCisgICAgCWJvdW5kc1NpemUud2lkdGggPSB3aWR0aDsKKworICAg
IGlmIChoZWlnaHQgPD0gMCkKICAgICAgICAgYm91bmRzU2l6ZS5oZWlnaHQgPSA1MDA7CisgICAg
ZWxzZQorICAgIAlib3VuZHNTaXplLmhlaWdodCA9IGhlaWdodDsKKyAgICAJCiAgICAgW3ZpZXcg
c2V0RnJhbWVTaXplOmJvdW5kc1NpemVdOwogICAgIAogICAgIC8vIHRlbGwgdGhhdCB2aWV3IHRv
IHJlbmRlcgpAQCAtNjUsMTAgKzc3LDY0IEBACiAgICAgCiAgICAgLy8gb3V0cHV0IHRoZSByZXN1
bHRpbmcgaW1hZ2UKICAgICBOU0RhdGEgKnBuZ0RhdGEgPSBbaW1hZ2VSZXAgcmVwcmVzZW50YXRp
b25Vc2luZ1R5cGU6TlNQTkdGaWxlVHlwZSBwcm9wZXJ0aWVzOm5pbF07Ci0gICAgW3BuZ0RhdGEg
d3JpdGVUb0ZpbGU6c3ZnUGF0aCBhdG9taWNhbGx5OllFU107CisgICAgW3BuZ0RhdGEgd3JpdGVU
b0ZpbGU6cG5nUGF0aCBhdG9taWNhbGx5OllFU107CiAgICAgCiAgICAgW3ZpZXcgcmVsZWFzZV07
IC8vIHNob3VsZCBiZSBzaW5nbGV0b24uCiAgICAgW2RvY3VtZW50IHJlbGVhc2VdOworICAgIAor
ICAgIHJldHVybiBpbWFnZVJlcDsKK30KKworLy9Ucm95IFN0ZXZlbnMncyBncmVhdCBwb3N0IGFi
b3V0IGNvbnZlcnRpbmcgYSBDSUltYWdlIHRvIGEgTlNCaXRtYXBJbWFnZVJlcCAKKy8vaHR0cDov
L3d3dy5jb2NvYWJ1aWxkZXIuY29tL2FyY2hpdmUvbWVzc2FnZS9jb2NvYS8yMDA1LzUvMTgvMTM2
MzExCitmbG9hdCBvdXRwdXREaWZmKE5TQml0bWFwSW1hZ2VSZXAgKmRpZmZCaXRtYXAsIE5TU3Ry
aW5nICp0ZXN0LCBOU1N0cmluZyAqZGlmZkNvbXBhcmVQYXRoLCBOU1N0cmluZyAqZGlmZk91dHB1
dFBhdGgpCit7CisgICAgLy8gY3JlYXRlIGEgbmV3IGdyYXBoaWNzIGNvbnRleHQgdG8gZHJhdyBv
dXIgQ0lJbWFnZSBvbgorICAgIE5TR3JhcGhpY3NDb250ZXh0ICpuc0NvbnRleHQgPSBbTlNHcmFw
aGljc0NvbnRleHQgZ3JhcGhpY3NDb250ZXh0V2l0aEJpdG1hcEltYWdlUmVwOmRpZmZCaXRtYXBd
OworICAgIENJSW1hZ2UgKnJlZmVyZW5jZUltYWdlID0gW0NJSW1hZ2UgaW1hZ2VXaXRoQ29udGVu
dHNPZlVSTDpbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOmRpZmZDb21wYXJlUGF0aF1dOworICAgIENJ
SW1hZ2UgKnRlc3RJbWFnZSA9IFtDSUltYWdlIGltYWdlV2l0aENvbnRlbnRzT2ZVUkw6W05TVVJM
IGZpbGVVUkxXaXRoUGF0aDp0ZXN0XV07CisgICAgQ0lJbWFnZSAqZGlmZkltYWdlID0gbmlsOwor
ICAgIENJRmlsdGVyICpkaWZmQmxlbmQgPSBbQ0lGaWx0ZXIgZmlsdGVyV2l0aE5hbWU6QCJDSURp
ZmZlcmVuY2VCbGVuZE1vZGUiXTsKKyAgICAKKyAgICAvLyBnZW5lcmF0ZSB0aGUgZGlmZiBpbWFn
ZQorICAgIFtkaWZmQmxlbmQgc2V0VmFsdWU6cmVmZXJlbmNlSW1hZ2UgZm9yS2V5OkAiaW5wdXRJ
bWFnZSJdOworICAgIFtkaWZmQmxlbmQgc2V0VmFsdWU6dGVzdEltYWdlIGZvcktleTpAImlucHV0
QmFja2dyb3VuZEltYWdlIl07CisgICAgZGlmZkltYWdlID0gW2RpZmZCbGVuZCB2YWx1ZUZvcktl
eTpAIm91dHB1dEltYWdlIl07CisKKyAgICAvLyBwcmVwYXJlIHRvIGRyYXcgdGhlIGltYWdlLCBz
YXZlIGN1cnJlbnQgc3RhdGUKKyAgICBbTlNHcmFwaGljc0NvbnRleHQgc2F2ZUdyYXBoaWNzU3Rh
dGVdOworICAgIFtOU0dyYXBoaWNzQ29udGV4dCBzZXRDdXJyZW50Q29udGV4dDogbnNDb250ZXh0
XTsKKworICAgIC8vIGRyYXcgdGhlIGRpZmZlcmVuY2UgaW1hZ2UKKyAgICBbW25zQ29udGV4dCBD
SUNvbnRleHRdIGRyYXdJbWFnZTpkaWZmSW1hZ2UgYXRQb2ludDpDR1BvaW50WmVybyBmcm9tUmVj
dDpbZGlmZkltYWdlIGV4dGVudF1dOworCisgICAgLy8gcmVzdG9yZSB0aGUgcHJldmlvdXMgY29u
dGV4dCBhbmQgc3RhdGUKKyAgICBbTlNHcmFwaGljc0NvbnRleHQgcmVzdG9yZUdyYXBoaWNzU3Rh
dGVdOworICAgIAorICAgIC8vIGdldCB0aGUgcmF3IGRhdGEgZnJvbSB0aGUgYml0bWFwCisgICAg
TlNEYXRhICpwbmdEYXRhID0gW2RpZmZCaXRtYXAgcmVwcmVzZW50YXRpb25Vc2luZ1R5cGU6TlNQ
TkdGaWxlVHlwZSBwcm9wZXJ0aWVzOm5pbF07CisKKyAgICBpZiAoZGlmZk91dHB1dFBhdGgpCisg
ICAgCVtwbmdEYXRhIHdyaXRlVG9GaWxlOmRpZmZPdXRwdXRQYXRoIGF0b21pY2FsbHk6WUVTXTsK
KworICAgIC8vIGNoZWNrIGZvciBub24tYmxhY2sgcGl4ZWxzLiBOb24tYmxhY2sgcGl4ZWxzIG1l
YW4gZGlmZmVyZW5jZXMgZnJvbSB0aGUgcmVmZXJlbmNlIGltYWdlCisgICAgaW50IGRpZmZlcmVu
Y2VzID0gMDsKKyAgICBpbnQgdG90YWxQaXhlbHMgPSBbZGlmZkJpdG1hcCBwaXhlbHNXaWRlXSAq
IFtkaWZmQml0bWFwIHBpeGVsc0hpZ2hdOworICAgIE5TQ29sb3IgKmNvbG9yID0gbmlsOworICAg
IGZsb2F0IHJlZCA9IDAuMDsKKyAgICBmbG9hdCBibHVlID0gMC4wOworICAgIGZsb2F0IGdyZWVu
ID0gMC4wOworICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgW2RpZmZCaXRtYXAgcGl4
ZWxzV2lkZV07IGkrKykgeworICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBqID0gMDsgaiA8IFtk
aWZmQml0bWFwIHBpeGVsc0hpZ2hdOyBqKyspIHsKKyAgICAgICAgICAgIGNvbG9yID0gW2RpZmZC
aXRtYXAgY29sb3JBdFg6aSB5OmpdOworICAgICAgICAgICAgW2NvbG9yIGdldFJlZDomcmVkIGdy
ZWVuOiZncmVlbiBibHVlOiZibHVlIGFscGhhOk5VTExdOworICAgICAgICAgICAgCisgICAgICAg
ICAgICBpZiAocmVkICE9IDAgfHwgYmx1ZSAhPSAwIHx8IGdyZWVuICE9IDApCisgICAgICAgICAg
ICAgICAgZGlmZmVyZW5jZXMrKzsKKyAgICAJfQorICAgIH0KKworICAgIHJldHVybiAoKGRpZmZl
cmVuY2VzICogMTAwLjApIC8gdG90YWxQaXhlbHMpOwogfQogCiBpbnQgbWFpbiAoaW50IGFyZ2Ms
IGNvbnN0IGNoYXIgKmFyZ3ZbXSkKQEAgLTc5LDYgKzE0NSw5IEBACiAgICAgY29uc3QgY2hhciAq
bmFtZSA9IFtbW05TU3RyaW5nIHN0cmluZ1dpdGhVVEY4U3RyaW5nOmFyZ3ZbMF1dIGxhc3RQYXRo
Q29tcG9uZW50XSBVVEY4U3RyaW5nXTsKICAgICBOU1N0cmluZyAqZXhwbGljaXRPdXRwdXRQYXRo
ID0gbmlsOwogICAgIE5TU3RyaW5nICpvdXRwdXRTdWZmaXggPSBuaWw7CisgICAgTlNTdHJpbmcg
KmRpZmZQYXRoID0gbmlsOworICAgIGludCB3aWR0aCA9IDA7CisgICAgaW50IGhlaWdodCA9IDA7
CiAgICAgCiAgICAgZm9yKGludCB4ID0gMTsgeCA8IGFyZ2M7IHgrKykgewogICAgICAgICBjb25z
dCBjaGFyICphcmcgPSBhcmd2W3hdOwpAQCAtMTA4LDYgKzE3Nyw0MSBAQAogICAgICAgICAgICAg
ICAgICAgICBOU0xvZyhAIi0tc3VmZml4IHJlcXVpcmVzIGFuIGFyZ3VtZW50LiIpOwogICAgICAg
ICAgICAgICAgICAgICB1c2FnZShuYW1lKTsKICAgICAgICAgICAgICAgICB9CisgICAgCQl9IGVs
c2UgaWYgKFthcmdTdHJpbmcgaXNFcXVhbFRvU3RyaW5nOkAiLS13aWR0aCJdKSB7CisgICAgCQkJ
aWYgKHggKyAxIDwgYXJnYykgeworICAgIAkJCQl3aWR0aCA9IFtbTlNTdHJpbmcgc3RyaW5nV2l0
aFVURjhTdHJpbmc6YXJndlt4KzFdXSBpbnRWYWx1ZV07CisgICAgCQkJCWlmICh3aWR0aCA8PSAw
KSB7CisgICAgCQkJCQlOU0xvZyhAIi0td2lkdGggbXVzdCBiZSBhIHBvc2l0aXZlIGludGVnZXIg
PiAwIik7CisgICAgCQkJCQl1c2FnZShuYW1lKTsKKyAgICAJCQkJfQorICAgIAkJCQl4Kys7IC8v
IHNraXAgdG8gdGhlIG5leHQgYXJnCisgICAgCQkJfSBlbHNlIHsKKyAgICAJCQkJTlNMb2coQCIt
LXdpZHRoIHJlcXVpcmVzIGEgcG9zaXRpdmUgaW50ZWdlciBhcmd1bWVudC4iKTsKKyAgICAJCQkJ
dXNhZ2UobmFtZSk7CisgICAgCQkJfQorICAgIAkJfSBlbHNlIGlmIChbYXJnU3RyaW5nIGlzRXF1
YWxUb1N0cmluZzpAIi0taGVpZ2h0Il0pIHsKKyAgICAJCQlpZiAoeCArIDEgPCBhcmdjKSB7Cisg
ICAgCQkJCWhlaWdodCA9IFtbTlNTdHJpbmcgc3RyaW5nV2l0aFVURjhTdHJpbmc6YXJndlt4KzFd
XSBpbnRWYWx1ZV07CisgICAgCQkJCWlmIChoZWlnaHQgPD0gMCkgeworICAgIAkJCQkJTlNMb2co
QCItLWhlaWdodCBtdXN0IGJlIGEgcG9zaXRpdmUgaW50ZWdlciA+IDAiKTsKKyAgICAJCQkJCXVz
YWdlKG5hbWUpOworICAgIAkJCQl9CisgICAgCQkJCXgrKzsgLy8gc2tpcCB0byB0aGUgbmV4dCBh
cmcKKyAgICAJCQl9IGVsc2UgeworICAgIAkJCQlOU0xvZyhAIi0taGVpZ2h0IHJlcXVpcmVzIGEg
cG9zaXRpdmUgaW50ZWdlciBhcmd1bWVudC4iKTsKKyAgICAJCQkJdXNhZ2UobmFtZSk7CisgICAg
CQkJfQorICAgIAkJfSBlbHNlIGlmIChbYXJnU3RyaW5nIGlzRXF1YWxUb1N0cmluZzpAIi0tZGlm
ZiJdKSB7CisgICAgCQkJaWYoeCArIDEgPCBhcmdjKSB7CisgICAgCQkJCWRpZmZQYXRoID0gW05T
U3RyaW5nIHN0cmluZ1dpdGhVVEY4U3RyaW5nOmFyZ3ZbeCsxXV07CisgICAgICAgICAgICAgICAg
ICAgIGlmICghW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRo
OltkaWZmUGF0aCBzdHJpbmdCeVN0YW5kYXJkaXppbmdQYXRoXV0pIHsKKyAgICAJCQkJCXByaW50
ZigiVGhlIERJRkYgcG5nIGRvZXMgbm90IGV4aXN0IGF0IHBhdGg6ICVzXG4iLCBhcmd2W3grMV0p
OworICAgIAkJCQl9CisgICAgCQkJCXgrKzsgLy8gc2tpcCB0byB0aGUgbmV4dCBhcmcKKyAgICAJ
CQl9IGVsc2UgeworICAgIAkJCQlOU0xvZyhAIi0tZGlmZiByZXF1aXJlcyB0aGUgcGF0aCB0byBh
IFBORyBmaWxlIHRoYXQgeW91IHdhbnQgdG8gY29tcGFyZS4iKTsKKyAgICAJCQkJdXNhZ2UobmFt
ZSk7CisgICAgCQkJfQogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBwcmlu
dGYoIlVucmVjb2duaXplZCBvcHRpb24gJUBcbiIsIGFyZ1N0cmluZyk7CiAgICAgICAgICAgICAg
ICAgdXNhZ2UobmFtZSk7CkBAIC0xMzEsOSArMjM1LDEzIEBACiAgICAgICAgIHVzYWdlKG5hbWUp
OwogICAgIH0KICAgICAKKyAgICAKICAgICBOU1N0cmluZyAqc3ZnUGF0aCA9IG5pbDsKICAgICBm
b3JlYWNoYXJyYXkoc3ZnUGF0aCwgc3ZncykgeworICAgICAgICBOU1N0cmluZyAqZGlmZkltYWdl
UGF0aCA9IG5pbDsKKyAgICAgICAgTlNCaXRtYXBJbWFnZVJlcCAqc3ZnID0gbmlsOwogICAgICAg
ICBOU1N0cmluZyAqcG5nUGF0aCA9IG5pbDsKKyAgICAgICAgCiAgICAgICAgIGlmIChleHBsaWNp
dE91dHB1dFBhdGgpCiAgICAgICAgICAgICBwbmdQYXRoID0gZXhwbGljaXRPdXRwdXRQYXRoOwog
ICAgICAgICBlbHNlIHsKQEAgLTE0Miw3ICsyNTAsMjEgQEAKICAgICAgICAgICAgICAgICBwbmdQ
YXRoID0gW3BuZ1BhdGggc3RyaW5nQnlBcHBlbmRpbmdTdHJpbmc6b3V0cHV0U3VmZml4XTsKICAg
ICAgICAgICAgIHBuZ1BhdGggPSBbcG5nUGF0aCBzdHJpbmdCeUFwcGVuZGluZ1BhdGhFeHRlbnNp
b246QCJwbmciXTsKICAgICAgICAgfQotICAgICAgICBvdXRwdXRQTkcoc3ZnUGF0aCwgcG5nUGF0
aCk7CisgICAgICAgIAorICAgICAgICAvLyBnZW5lcmF0ZSB0aGUgU1ZHLCBzYXZlIHRoZSBiaXRt
YXAgZGF0YSBmb3IgdGhlIGRpZmYKKyAgICAgICAgc3ZnID0gb3V0cHV0UE5HKHN2Z1BhdGgsIHBu
Z1BhdGgsIHdpZHRoLCBoZWlnaHQpOworICAgIAkKKyAgICAJaWYoZGlmZlBhdGgpIHsKKyAgICAJ
CWRpZmZJbWFnZVBhdGggPSBbcG5nUGF0aCBzdHJpbmdCeURlbGV0aW5nUGF0aEV4dGVuc2lvbl07
CisgICAgCQlkaWZmSW1hZ2VQYXRoID0gW2RpZmZJbWFnZVBhdGggc3RyaW5nQnlBcHBlbmRpbmdT
dHJpbmc6QCItZGlmZiJdOworICAgIAkJZGlmZkltYWdlUGF0aCA9IFtkaWZmSW1hZ2VQYXRoIHN0
cmluZ0J5QXBwZW5kaW5nUGF0aEV4dGVuc2lvbjpAInBuZyJdOworCisgICAgICAgICAgICBmbG9h
dCBwZXJjZW50YWdlID0gb3V0cHV0RGlmZihzdmcscG5nUGF0aCxkaWZmUGF0aCxkaWZmSW1hZ2VQ
YXRoKTsKKyAgICAgICAgICAgIHByaW50ZigiVGVzdGluZyAnJXMnIGFnYWluc3QgJyVzJ1xuIiwg
W3N2Z1BhdGggY1N0cmluZ10sIFtkaWZmUGF0aCBjU3RyaW5nXSk7CisgICAgCQlwcmludGYoIiUz
LjNmJSVcdCVzXG4iLHBlcmNlbnRhZ2UsKHBlcmNlbnRhZ2U+MT8iRmFpbGVkLiI6IlBhc3NlZC4i
KSk7CisgICAgCX0KKyAgICAgICAgCisgICAgICAgIFtzdmcgcmVsZWFzZV07CiAgICAgfQogICAg
IAogICAgIFtwb29sIGRyYWluXTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>3217</attachid>
            <date>2005-08-03 17:16:33 -0700</date>
            <delta_ts>2005-08-03 22:22:01 -0700</delta_ts>
            <desc>multiple svgs can be tested now</desc>
            <filename>svg2png.m.diff</filename>
            <type>text/plain</type>
            <size>10155</size>
            <attacher name="Ben La Monica">ben.lamonica</attacher>
            
              <data encoding="base64">SW5kZXg6IHN2ZzJwbmcubQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvV2ViS2l0VG9v
bHMvc3ZnMnBuZy9zdmcycG5nLm0sdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMQpkaWZmIC11IC1y
MS4xIHN2ZzJwbmcubQotLS0gc3ZnMnBuZy5tCTI5IEp1bCAyMDA1IDA1OjI2OjA3IC0wMDAwCTEu
MQorKysgc3ZnMnBuZy5tCTQgQXVnIDIwMDUgMDA6MTI6MDEgLTAwMDAKQEAgLTE2LDggKzE2LDgg
QEAKICAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBD
T01QVVRFUiwgSU5DLiBPUgogICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCiAgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQogICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCiAgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKICAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIApA
QCAtMjUsNiArMjUsOSBAQAogCiAjaW1wb3J0IDxXZWJDb3JlK1NWRy9EcmF3RG9jdW1lbnRQcml2
YXRlLmg+CiAjaW1wb3J0IDxXZWJDb3JlK1NWRy9EcmF3Vmlldy5oPgorI2ltcG9ydCA8UXVhcnR6
Q29yZS9DSUZpbHRlci5oPgorI2ltcG9ydCA8UXVhcnR6Q29yZS9DSUltYWdlLmg+CisjaW1wb3J0
IDxRdWFydHpDb3JlL0NJQ29udGV4dC5oPgogCiBleHRlcm4gY29uc3QgZG91YmxlIHN2ZzJwbmdW
ZXJzaW9uTnVtYmVyOwogZXh0ZXJuIGNvbnN0IHVuc2lnbmVkIGNoYXIgc3ZnMnBuZ1ZlcnNpb25T
dHJpbmdbXTsKQEAgLTMzLDE1ICszNiwxOCBAQAogewogICAgIHByaW50ZigiVXNhZ2U6ICVzIFtv
cHRpb25zXSBmaWxlW3NdXG4iLCBuYW1lKTsKICAgICBwcmludGYoIk9wdGlvbnM6XG4iKTsKLSAg
ICBwcmludGYoIiAgLS12ZXJzaW9uXHRcdFx0UHJpbnRzIGZ1bGwgdmVyc2lvbiAoJS4xZikgaW5m
b3JtYXRpb24gYW5kIGV4aXRzLlxuIiwgc3ZnMnBuZ1ZlcnNpb25OdW1iZXIpOwotICAgIHByaW50
ZigiICAtLW91dHB1dCA8b3V0cHV0ZmlsZT4gZHVtcCBhIHBuZyBjb3B5IG9mIGEgc2luZ2xlIHN2
ZyBpbnB1dCBmaWxlIHRvIHRoZSBuYW1lZCBwYXRoXG4iKTsKLSAgICBwcmludGYoIiAgLS1zdWZm
aXggPHN1ZmZpeD4gYXBwZW5kIDxzdWZmaXg+IHRvIGVhY2ggb3V0cHV0IGZpbGUgZS5nLiA8aW5w
dXRuYW1lPjxzdWZmaXg+LnBuZ1xuIik7Ci0gICAgcHJpbnRmKCJXaGVuIC0tb3V0cHV0IGlzIG5v
dCBzcGVjaWZpZWQsIG91dHB1dCBmaWxlcyBhcmUgY3JlYXRlZCBpbiB0aGUgc2FtZSBkaXJlY3Rv
cnlcbiIpOwotICAgIHByaW50ZigiYXMgdGhlIG9yaWdpbmFsIHNvdXJjZSBmaWxlcyBlLmcuIDxz
b3VyY2UgZGlyZWN0b3J5Pi88ZmlsZW5hbWU+PHN1ZmZpeD4ucG5nIik7CisgICAgcHJpbnRmKCIg
IC0tdmVyc2lvblx0XHRQcmludHMgZnVsbCB2ZXJzaW9uICglLjFmKSBpbmZvcm1hdGlvbiBhbmQg
ZXhpdHMuXG4iLCBzdmcycG5nVmVyc2lvbk51bWJlcik7CisgICAgcHJpbnRmKCIgIC0tbWF4d2lk
dGggPGludD5cdFx0c2V0cyB0aGUgd2lkdGggb2YgdGhlIG91dHB1dCBwbmdcbiIpOworICAgIHBy
aW50ZigiICAtLW1heGhlaWdodCA8aW50Plx0c2V0cyB0aGUgaGVpZ2h0IG9mIHRoZSBvdXRwdXQg
cG5nXG4iKTsKKyAgICBwcmludGYoIiAgLS10ZXN0IDxzdWZmaXg+XHR0aGUgc3VmZml4IG9uIHRo
ZSByZWZlcmVuY2UgdmVyc2lvbiBvZiBhIHBpY3R1cmVcbiIpOworICAgIHByaW50ZigiICAtLW91
dHB1dCA8b3V0cHV0ZmlsZT5cdGR1bXAgYSBwbmcgY29weSBvZiBhIHNpbmdsZSBzdmcgaW5wdXQg
ZmlsZSB0byB0aGUgbmFtZWQgcGF0aFxuIik7CisgICAgcHJpbnRmKCIgIC0tc3VmZml4IDxzdWZm
aXg+XHRhcHBlbmQgPHN1ZmZpeD4gdG8gZWFjaCBvdXRwdXQgZmlsZSBlLmcuIDxpbnB1dG5hbWU+
PHN1ZmZpeD4ucG5nXG4iKTsKKyAgICBwcmludGYoIlx0V2hlbiAtLW91dHB1dCBpcyBub3Qgc3Bl
Y2lmaWVkLCBvdXRwdXQgZmlsZXMgYXJlIGNyZWF0ZWQgaW4gdGhlIHNhbWUgZGlyZWN0b3J5XG4i
KTsKKyAgICBwcmludGYoImFzIHRoZSBvcmlnaW5hbCBzb3VyY2UgZmlsZXMgZS5nLiA8c291cmNl
IGRpcmVjdG9yeT4vPGZpbGVuYW1lPjxzdWZmaXg+LnBuZ1xuIik7CiAgICAgZXhpdCgxKTsKIH07
CiAKLXZvaWQgb3V0cHV0UE5HKE5TU3RyaW5nICpzdmdQYXRoLCBOU1N0cmluZyAqcG5nUGF0aCkK
K05TQml0bWFwSW1hZ2VSZXAgKm91dHB1dFBORyhOU1N0cmluZyAqc3ZnUGF0aCwgTlNTdHJpbmcg
KnBuZ1BhdGgsIGludCB3aWR0aCwgaW50IGhlaWdodCkKIHsKICAgICAvLyBsb2FkIHRoZSBnaXZl
biBkb2N1bWVudAogICAgIERyYXdEb2N1bWVudCAqZG9jdW1lbnQgPSBbW0RyYXdEb2N1bWVudCBh
bGxvY10gaW5pdFdpdGhDb250ZW50c09mRmlsZTpzdmdQYXRoXTsKQEAgLTUxLDEyICs1NywyNCBA
QAogICAgIFt2aWV3IHNldERvY3VtZW50OmRvY3VtZW50XTsKICAgICBbdmlldyBzaXplVG9GaXRW
aWV3Qm94XTsKICAgICAKLSAgICAvLyBNeSBtYXhpbXVtIDUwMHg1MDAgc2l6ZSBoYWNrOgorICAg
IC8vIExpbWl0IHRoZSBtYXhpbXVtIHNpemUsIGFuZCBkZWZhdWx0IHRoZSBzaXplIHRvIDUwMHg1
MDAgaWYgbm90IHNwZWNpZmllZAogICAgIE5TU2l6ZSBib3VuZHNTaXplID0gW3ZpZXcgYm91bmRz
XS5zaXplOwotICAgIGlmIChib3VuZHNTaXplLndpZHRoID4gNTAwKQorICAgIGlmIChib3VuZHNT
aXplLndpZHRoID4gd2lkdGgpIHsKKyAgICAgICAgLy8gcmVzaXplIHRoZSBoZWlnaHQgc28gdGhh
dCB0aGUgYXNwZWN0IHJhdGlvIHJlbWFpbnMgdGhlIHNhbWUKKyAgICAgICAgYm91bmRzU2l6ZS5o
ZWlnaHQgPSAoYm91bmRzU2l6ZS5oZWlnaHQgLyBib3VuZHNTaXplLndpZHRoKSAqIHdpZHRoOwor
ICAgICAgICBib3VuZHNTaXplLndpZHRoID0gd2lkdGg7CisgICAgfQorICAgIGVsc2UgaWYgKGJv
dW5kc1NpemUud2lkdGggPD0gMCkKICAgICAgICAgYm91bmRzU2l6ZS53aWR0aCA9IDUwMDsKLSAg
ICBpZiAoYm91bmRzU2l6ZS5oZWlnaHQgPiA1MDApCisgICAgICAgIAorICAgIGlmIChib3VuZHNT
aXplLmhlaWdodCA+IGhlaWdodCkgeworICAgICAgICAvLyByZXNpemUgdGhlIHdpZHRoIHNvIHRo
YXQgdGhlIGFzcGVjdCByYXRpbyByZWFtaW5zIHRoZSBzYW1lCisgICAgICAgIGJvdW5kc1NpemUu
d2lkdGggPSAoYm91bmRzU2l6ZS53aWR0aCAvIGJvdW5kc1NpemUuaGVpZ2h0KSAqIGhlaWdodDsK
KyAgICAgICAgYm91bmRzU2l6ZS5oZWlnaHQgPSBoZWlnaHQ7CisgICAgfQorICAgIGVsc2UgaWYg
KGJvdW5kc1NpemUuaGVpZ2h0IDw9IDApCiAgICAgICAgIGJvdW5kc1NpemUuaGVpZ2h0ID0gNTAw
OworICAgIAogICAgIFt2aWV3IHNldEZyYW1lU2l6ZTpib3VuZHNTaXplXTsKICAgICAKICAgICAv
LyB0ZWxsIHRoYXQgdmlldyB0byByZW5kZXIKQEAgLTY1LDEwICs4Myw2NCBAQAogICAgIAogICAg
IC8vIG91dHB1dCB0aGUgcmVzdWx0aW5nIGltYWdlCiAgICAgTlNEYXRhICpwbmdEYXRhID0gW2lt
YWdlUmVwIHJlcHJlc2VudGF0aW9uVXNpbmdUeXBlOk5TUE5HRmlsZVR5cGUgcHJvcGVydGllczpu
aWxdOwotICAgIFtwbmdEYXRhIHdyaXRlVG9GaWxlOnN2Z1BhdGggYXRvbWljYWxseTpZRVNdOwor
ICAgIFtwbmdEYXRhIHdyaXRlVG9GaWxlOnBuZ1BhdGggYXRvbWljYWxseTpZRVNdOwogICAgIAog
ICAgIFt2aWV3IHJlbGVhc2VdOyAvLyBzaG91bGQgYmUgc2luZ2xldG9uLgogICAgIFtkb2N1bWVu
dCByZWxlYXNlXTsKKyAgICAKKyAgICByZXR1cm4gaW1hZ2VSZXA7Cit9CisKKy8vVHJveSBTdGV2
ZW5zJ3MgZ3JlYXQgcG9zdCBhYm91dCBjb252ZXJ0aW5nIGEgQ0lJbWFnZSB0byBhIE5TQml0bWFw
SW1hZ2VSZXAgCisvL2h0dHA6Ly93d3cuY29jb2FidWlsZGVyLmNvbS9hcmNoaXZlL21lc3NhZ2Uv
Y29jb2EvMjAwNS81LzE4LzEzNjMxMQorZmxvYXQgb3V0cHV0RGlmZihOU0JpdG1hcEltYWdlUmVw
ICpkaWZmQml0bWFwLCBOU1N0cmluZyAqdGVzdCwgTlNTdHJpbmcgKmRpZmZDb21wYXJlUGF0aCwg
TlNTdHJpbmcgKmRpZmZPdXRwdXRQYXRoKQoreworICAgIC8vIGNyZWF0ZSBhIG5ldyBncmFwaGlj
cyBjb250ZXh0IHRvIGRyYXcgb3VyIENJSW1hZ2Ugb24KKyAgICBOU0dyYXBoaWNzQ29udGV4dCAq
bnNDb250ZXh0ID0gW05TR3JhcGhpY3NDb250ZXh0IGdyYXBoaWNzQ29udGV4dFdpdGhCaXRtYXBJ
bWFnZVJlcDpkaWZmQml0bWFwXTsKKyAgICBDSUltYWdlICpyZWZlcmVuY2VJbWFnZSA9IFtDSUlt
YWdlIGltYWdlV2l0aENvbnRlbnRzT2ZVUkw6W05TVVJMIGZpbGVVUkxXaXRoUGF0aDpkaWZmQ29t
cGFyZVBhdGhdXTsKKyAgICBDSUltYWdlICp0ZXN0SW1hZ2UgPSBbQ0lJbWFnZSBpbWFnZVdpdGhD
b250ZW50c09mVVJMOltOU1VSTCBmaWxlVVJMV2l0aFBhdGg6dGVzdF1dOworICAgIENJSW1hZ2Ug
KmRpZmZJbWFnZSA9IG5pbDsKKyAgICBDSUZpbHRlciAqZGlmZkJsZW5kID0gW0NJRmlsdGVyIGZp
bHRlcldpdGhOYW1lOkAiQ0lEaWZmZXJlbmNlQmxlbmRNb2RlIl07CisgICAgCisgICAgLy8gZ2Vu
ZXJhdGUgdGhlIGRpZmYgaW1hZ2UKKyAgICBbZGlmZkJsZW5kIHNldFZhbHVlOnJlZmVyZW5jZUlt
YWdlIGZvcktleTpAImlucHV0SW1hZ2UiXTsKKyAgICBbZGlmZkJsZW5kIHNldFZhbHVlOnRlc3RJ
bWFnZSBmb3JLZXk6QCJpbnB1dEJhY2tncm91bmRJbWFnZSJdOworICAgIGRpZmZJbWFnZSA9IFtk
aWZmQmxlbmQgdmFsdWVGb3JLZXk6QCJvdXRwdXRJbWFnZSJdOworICAgIAorICAgIC8vIHByZXBh
cmUgdG8gZHJhdyB0aGUgaW1hZ2UsIHNhdmUgY3VycmVudCBzdGF0ZQorICAgIFtOU0dyYXBoaWNz
Q29udGV4dCBzYXZlR3JhcGhpY3NTdGF0ZV07CisgICAgW05TR3JhcGhpY3NDb250ZXh0IHNldEN1
cnJlbnRDb250ZXh0OiBuc0NvbnRleHRdOworICAgIAorICAgIC8vIGRyYXcgdGhlIGRpZmZlcmVu
Y2UgaW1hZ2UKKyAgICBbW25zQ29udGV4dCBDSUNvbnRleHRdIGRyYXdJbWFnZTpkaWZmSW1hZ2Ug
YXRQb2ludDpDR1BvaW50WmVybyBmcm9tUmVjdDpbZGlmZkltYWdlIGV4dGVudF1dOworICAgIAor
ICAgIC8vIHJlc3RvcmUgdGhlIHByZXZpb3VzIGNvbnRleHQgYW5kIHN0YXRlCisgICAgW05TR3Jh
cGhpY3NDb250ZXh0IHJlc3RvcmVHcmFwaGljc1N0YXRlXTsKKyAgICAKKyAgICAvLyBnZXQgdGhl
IHJhdyBkYXRhIGZyb20gdGhlIGJpdG1hcAorICAgIE5TRGF0YSAqcG5nRGF0YSA9IFtkaWZmQml0
bWFwIHJlcHJlc2VudGF0aW9uVXNpbmdUeXBlOk5TUE5HRmlsZVR5cGUgcHJvcGVydGllczpuaWxd
OworICAgIAorICAgIGlmIChkaWZmT3V0cHV0UGF0aCkKKyAgICAgICAgW3BuZ0RhdGEgd3JpdGVU
b0ZpbGU6ZGlmZk91dHB1dFBhdGggYXRvbWljYWxseTpZRVNdOworICAgIAorICAgIC8vIGNoZWNr
IGZvciBub24tYmxhY2sgcGl4ZWxzLiBOb24tYmxhY2sgcGl4ZWxzIG1lYW4gZGlmZmVyZW5jZXMg
ZnJvbSB0aGUgcmVmZXJlbmNlIGltYWdlCisgICAgaW50IGRpZmZlcmVuY2VzID0gMDsKKyAgICBp
bnQgdG90YWxQaXhlbHMgPSBbZGlmZkJpdG1hcCBwaXhlbHNXaWRlXSAqIFtkaWZmQml0bWFwIHBp
eGVsc0hpZ2hdOworICAgIE5TQ29sb3IgKmNvbG9yID0gbmlsOworICAgIGZsb2F0IHJlZCA9IDAu
MDsKKyAgICBmbG9hdCBibHVlID0gMC4wOworICAgIGZsb2F0IGdyZWVuID0gMC4wOworICAgIGZv
ciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgW2RpZmZCaXRtYXAgcGl4ZWxzV2lkZV07IGkrKykg
eworICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBqID0gMDsgaiA8IFtkaWZmQml0bWFwIHBpeGVs
c0hpZ2hdOyBqKyspIHsKKyAgICAgICAgICAgIGNvbG9yID0gW2RpZmZCaXRtYXAgY29sb3JBdFg6
aSB5OmpdOworICAgICAgICAgICAgW2NvbG9yIGdldFJlZDomcmVkIGdyZWVuOiZncmVlbiBibHVl
OiZibHVlIGFscGhhOk5VTExdOworICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAocmVkICE9
IDAgfHwgYmx1ZSAhPSAwIHx8IGdyZWVuICE9IDApCisgICAgICAgICAgICAgICAgZGlmZmVyZW5j
ZXMrKzsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICByZXR1cm4gKChkaWZmZXJlbmNlcyAq
IDEwMC4wKSAvIHRvdGFsUGl4ZWxzKTsKIH0KIAogaW50IG1haW4gKGludCBhcmdjLCBjb25zdCBj
aGFyICphcmd2W10pCkBAIC03OSw2ICsxNTEsOSBAQAogICAgIGNvbnN0IGNoYXIgKm5hbWUgPSBb
W1tOU1N0cmluZyBzdHJpbmdXaXRoVVRGOFN0cmluZzphcmd2WzBdXSBsYXN0UGF0aENvbXBvbmVu
dF0gVVRGOFN0cmluZ107CiAgICAgTlNTdHJpbmcgKmV4cGxpY2l0T3V0cHV0UGF0aCA9IG5pbDsK
ICAgICBOU1N0cmluZyAqb3V0cHV0U3VmZml4ID0gbmlsOworICAgIE5TU3RyaW5nICp0ZXN0U3Vm
Zml4ID0gbmlsOworICAgIGludCB3aWR0aCA9IDA7CisgICAgaW50IGhlaWdodCA9IDA7CiAgICAg
CiAgICAgZm9yKGludCB4ID0gMTsgeCA8IGFyZ2M7IHgrKykgewogICAgICAgICBjb25zdCBjaGFy
ICphcmcgPSBhcmd2W3hdOwpAQCAtMTA4LDYgKzE4MywzOCBAQAogICAgICAgICAgICAgICAgICAg
ICBOU0xvZyhAIi0tc3VmZml4IHJlcXVpcmVzIGFuIGFyZ3VtZW50LiIpOwogICAgICAgICAgICAg
ICAgICAgICB1c2FnZShuYW1lKTsKICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVs
c2UgaWYgKFthcmdTdHJpbmcgaXNFcXVhbFRvU3RyaW5nOkAiLS1tYXh3aWR0aCJdKSB7CisgICAg
ICAgICAgICAgICAgaWYgKHggKyAxIDwgYXJnYykgeworICAgICAgICAgICAgICAgICAgICB3aWR0
aCA9IFtbTlNTdHJpbmcgc3RyaW5nV2l0aFVURjhTdHJpbmc6YXJndlt4KzFdXSBpbnRWYWx1ZV07
CisgICAgICAgICAgICAgICAgICAgIGlmICh3aWR0aCA8PSAwKSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICBOU0xvZyhAIi0td2lkdGggbXVzdCBiZSBhbiBpbnRlZ2VyID4gMCIpOworICAgICAg
ICAgICAgICAgICAgICAgICAgdXNhZ2UobmFtZSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICAgICAgeCsrOyAvLyBza2lwIHRvIHRoZSBuZXh0IGFyZworICAgICAgICAg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIE5TTG9nKEAiLS13aWR0aCByZXF1
aXJlcyBhbiBpbnRlZ2VyIGFyZ3VtZW50LiIpOworICAgICAgICAgICAgICAgICAgICB1c2FnZShu
YW1lKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UgaWYgKFthcmdTdHJp
bmcgaXNFcXVhbFRvU3RyaW5nOkAiLS1tYXhoZWlnaHQiXSkgeworICAgICAgICAgICAgICAgIGlm
ICh4ICsgMSA8IGFyZ2MpIHsKKyAgICAgICAgICAgICAgICAgICAgaGVpZ2h0ID0gW1tOU1N0cmlu
ZyBzdHJpbmdXaXRoVVRGOFN0cmluZzphcmd2W3grMV1dIGludFZhbHVlXTsKKyAgICAgICAgICAg
ICAgICAgICAgaWYgKGhlaWdodCA8PSAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBOU0xv
ZyhAIi0taGVpZ2h0IG11c3QgYmUgYW4gaW50ZWdlciA+IDAiKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHVzYWdlKG5hbWUpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgICAgIHgrKzsgLy8gc2tpcCB0byB0aGUgbmV4dCBhcmcKKyAgICAgICAgICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgICAgICAgICBOU0xvZyhAIi0taGVpZ2h0IHJlcXVpcmVzIGFuIGlu
dGVnZXIgPiAwIik7CisgICAgICAgICAgICAgICAgICAgIHVzYWdlKG5hbWUpOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSBpZiAoW2FyZ1N0cmluZyBpc0VxdWFsVG9TdHJp
bmc6QCItLXRlc3QiXSkgeworICAgICAgICAgICAgICAgIGlmKHggKyAxIDwgYXJnYykgeworICAg
ICAgICAgICAgICAgICAgICB0ZXN0U3VmZml4ID0gW05TU3RyaW5nIHN0cmluZ1dpdGhVVEY4U3Ry
aW5nOmFyZ3ZbeCsxXV07CisgICAgICAgICAgICAgICAgICAgIHgrKzsgLy8gc2tpcCB0byB0aGUg
bmV4dCBhcmcKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBO
U0xvZyhAIi0tdGVzdCByZXF1aXJlcyB0aGUgc3VmZml4IGZvciB0aGUgcmVmZXJlbmNlIFBOR3Mu
Iik7CisgICAgICAgICAgICAgICAgICAgIHVzYWdlKG5hbWUpOworICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgcHJpbnRmKCJVbnJlY29nbml6
ZWQgb3B0aW9uICVAXG4iLCBhcmdTdHJpbmcpOwogICAgICAgICAgICAgICAgIHVzYWdlKG5hbWUp
OwpAQCAtMTMxLDkgKzIzOCwxMiBAQAogICAgICAgICB1c2FnZShuYW1lKTsKICAgICB9CiAgICAg
CisgICAgCiAgICAgTlNTdHJpbmcgKnN2Z1BhdGggPSBuaWw7CiAgICAgZm9yZWFjaGFycmF5KHN2
Z1BhdGgsIHN2Z3MpIHsKKyAgICAgICAgTlNCaXRtYXBJbWFnZVJlcCAqc3ZnID0gbmlsOwogICAg
ICAgICBOU1N0cmluZyAqcG5nUGF0aCA9IG5pbDsKKyAgICAgICAgCiAgICAgICAgIGlmIChleHBs
aWNpdE91dHB1dFBhdGgpCiAgICAgICAgICAgICBwbmdQYXRoID0gZXhwbGljaXRPdXRwdXRQYXRo
OwogICAgICAgICBlbHNlIHsKQEAgLTE0Miw3ICsyNTIsMjIgQEAKICAgICAgICAgICAgICAgICBw
bmdQYXRoID0gW3BuZ1BhdGggc3RyaW5nQnlBcHBlbmRpbmdTdHJpbmc6b3V0cHV0U3VmZml4XTsK
ICAgICAgICAgICAgIHBuZ1BhdGggPSBbcG5nUGF0aCBzdHJpbmdCeUFwcGVuZGluZ1BhdGhFeHRl
bnNpb246QCJwbmciXTsKICAgICAgICAgfQotICAgICAgICBvdXRwdXRQTkcoc3ZnUGF0aCwgcG5n
UGF0aCk7CisgICAgICAgIAorICAgICAgICAvLyBnZW5lcmF0ZSB0aGUgU1ZHLCBzYXZlIHRoZSBi
aXRtYXAgZGF0YSBmb3IgdGhlIGRpZmYKKyAgICAgICAgc3ZnID0gb3V0cHV0UE5HKHN2Z1BhdGgs
IHBuZ1BhdGgsIHdpZHRoLCBoZWlnaHQpOworICAgICAgICAKKyAgICAgICAgaWYgKHRlc3RTdWZm
aXgpIHsKKyAgICAgICAgICAgIE5TU3RyaW5nICpkaWZmSW1hZ2VQYXRoID0gW1tbcG5nUGF0aCBz
dHJpbmdCeURlbGV0aW5nUGF0aEV4dGVuc2lvbl0KKyAgICAgICAgICAgICAgICBzdHJpbmdCeUFw
cGVuZGluZ1N0cmluZzpAIi1kaWZmIl0KKyAgICAgICAgICAgICAgICBzdHJpbmdCeUFwcGVuZGlu
Z1BhdGhFeHRlbnNpb246QCJwbmciXTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgTlNTdHJp
bmcgKnRlc3RJbWFnZVBhdGggPSBbW1tzdmdQYXRoIHN0cmluZ0J5RGVsZXRpbmdQYXRoRXh0ZW5z
aW9uXQorICAgICAgICAgICAgICAgIHN0cmluZ0J5QXBwZW5kaW5nU3RyaW5nOnRlc3RTdWZmaXhd
CisgICAgICAgICAgICAgICAgc3RyaW5nQnlBcHBlbmRpbmdQYXRoRXh0ZW5zaW9uOkAicG5nIl07
CisKKyAgICAgICAgICAgIGZsb2F0IHBlcmNlbnRhZ2UgPSBvdXRwdXREaWZmKHN2ZyxwbmdQYXRo
LHRlc3RJbWFnZVBhdGgsZGlmZkltYWdlUGF0aCk7CisgICAgICAgICAgICBwcmludGYoIiVzXHQl
My4zZiUlXHQlc1xuIixbc3ZnUGF0aCBjU3RyaW5nXSxwZXJjZW50YWdlLChwZXJjZW50YWdlPjE/
IkZhaWxlZC4iOiJQYXNzZWQuIikpOworICAgICAgICB9CiAgICAgfQogICAgIAogICAgIFtwb29s
IGRyYWluXTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>3219</attachid>
            <date>2005-08-03 22:22:01 -0700</date>
            <delta_ts>2005-08-05 23:55:20 -0700</delta_ts>
            <desc>Fixed several bugs, removed tabs, cleaned up code, fixed help</desc>
            <filename>svg2png.patch</filename>
            <type>text/plain</type>
            <size>9737</size>
            <attacher name="Ben La Monica">ben.lamonica</attacher>
            
              <data encoding="base64">SW5kZXg6IHN2ZzJwbmcubQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvV2ViS2l0VG9v
bHMvc3ZnMnBuZy9zdmcycG5nLm0sdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMQpkaWZmIC11IC1y
MS4xIHN2ZzJwbmcubQotLS0gc3ZnMnBuZy5tCTI5IEp1bCAyMDA1IDA1OjI2OjA3IC0wMDAwCTEu
MQorKysgc3ZnMnBuZy5tCTQgQXVnIDIwMDUgMDU6MjE6MzAgLTAwMDAKQEAgLTI1LDYgKzI1LDEy
IEBACiAKICNpbXBvcnQgPFdlYkNvcmUrU1ZHL0RyYXdEb2N1bWVudFByaXZhdGUuaD4KICNpbXBv
cnQgPFdlYkNvcmUrU1ZHL0RyYXdWaWV3Lmg+CisjaW1wb3J0IDxBcHBLaXQvTlNHcmFwaGljc0Nv
bnRleHQuaD4KKyNpbXBvcnQgPEFwcEtpdC9OU0JpdG1hcEltYWdlUmVwLmg+CisjaW1wb3J0IDxR
dWFydHpDb3JlL0NJRmlsdGVyLmg+CisjaW1wb3J0IDxRdWFydHpDb3JlL0NJSW1hZ2UuaD4KKyNp
bXBvcnQgPFF1YXJ0ekNvcmUvQ0lDb250ZXh0Lmg+CisjaW1wb3J0IDxzdGRpby5oPgogCiBleHRl
cm4gY29uc3QgZG91YmxlIHN2ZzJwbmdWZXJzaW9uTnVtYmVyOwogZXh0ZXJuIGNvbnN0IHVuc2ln
bmVkIGNoYXIgc3ZnMnBuZ1ZlcnNpb25TdHJpbmdbXTsKQEAgLTMzLDE1ICszOSwyMSBAQAogewog
ICAgIHByaW50ZigiVXNhZ2U6ICVzIFtvcHRpb25zXSBmaWxlW3NdXG4iLCBuYW1lKTsKICAgICBw
cmludGYoIk9wdGlvbnM6XG4iKTsKLSAgICBwcmludGYoIiAgLS12ZXJzaW9uXHRcdFx0UHJpbnRz
IGZ1bGwgdmVyc2lvbiAoJS4xZikgaW5mb3JtYXRpb24gYW5kIGV4aXRzLlxuIiwgc3ZnMnBuZ1Zl
cnNpb25OdW1iZXIpOwotICAgIHByaW50ZigiICAtLW91dHB1dCA8b3V0cHV0ZmlsZT4gZHVtcCBh
IHBuZyBjb3B5IG9mIGEgc2luZ2xlIHN2ZyBpbnB1dCBmaWxlIHRvIHRoZSBuYW1lZCBwYXRoXG4i
KTsKLSAgICBwcmludGYoIiAgLS1zdWZmaXggPHN1ZmZpeD4gYXBwZW5kIDxzdWZmaXg+IHRvIGVh
Y2ggb3V0cHV0IGZpbGUgZS5nLiA8aW5wdXRuYW1lPjxzdWZmaXg+LnBuZ1xuIik7CisgICAgcHJp
bnRmKCIgIC0tdmVyc2lvblx0XHRcdFByaW50cyBmdWxsIHZlcnNpb24gKCUuMWYpIGluZm9ybWF0
aW9uIGFuZCBleGl0c1xuIiwgc3ZnMnBuZ1ZlcnNpb25OdW1iZXIpOworICAgIHByaW50ZigiICAt
LW1heC13aWR0aCA8aW50Plx0XHRzZXRzIHRoZSB3aWR0aCBvZiB0aGUgb3V0cHV0IHBuZ1xuIik7
CisgICAgcHJpbnRmKCIgIC0tbWF4LWhlaWdodCA8aW50Plx0XHRzZXRzIHRoZSBoZWlnaHQgb2Yg
dGhlIG91dHB1dCBwbmdcbiIpOworICAgIHByaW50ZigiICAtLWJhc2VsaW5lLXN1ZmZpeCA8c3Vm
Zml4Plx0dGhlIHN1ZmZpeCBvbiB0aGUgcmVmZXJlbmNlIHZlcnNpb24gb2YgYSBwaWN0dXJlXG4i
KTsKKyAgICBwcmludGYoIiAgLS1vdXRwdXQgPG91dHB1dGZpbGU+XHRcdGR1bXAgYSBwbmcgY29w
eSBvZiBhIHNpbmdsZSBzdmcgaW5wdXQgZmlsZVxuXHRcdFx0XHR0byB0aGUgbmFtZWQgcGF0aFxu
Iik7CisgICAgcHJpbnRmKCIgIC0tc3VmZml4IDxzdWZmaXg+XHRcdGFwcGVuZCA8c3VmZml4PiB0
byBlYWNoIG91dHB1dCBmaWxlXG5cdFx0XHRcdGUuZy4gPGlucHV0bmFtZT48c3VmZml4Pi5wbmdc
blxuIik7CiAgICAgcHJpbnRmKCJXaGVuIC0tb3V0cHV0IGlzIG5vdCBzcGVjaWZpZWQsIG91dHB1
dCBmaWxlcyBhcmUgY3JlYXRlZCBpbiB0aGUgc2FtZSBkaXJlY3RvcnlcbiIpOwotICAgIHByaW50
ZigiYXMgdGhlIG9yaWdpbmFsIHNvdXJjZSBmaWxlcyBlLmcuIDxzb3VyY2UgZGlyZWN0b3J5Pi88
ZmlsZW5hbWU+PHN1ZmZpeD4ucG5nIik7CisgICAgcHJpbnRmKCJhcyB0aGUgb3JpZ2luYWwgc291
cmNlIGZpbGVzIGUuZy4gPHNvdXJjZSBkaXJlY3Rvcnk+LzxmaWxlbmFtZT48c3VmZml4Pi5wbmdc
biIpOworICAgIHByaW50ZigiXG5XaGVuIC0tYmFzZWxpbmUtc3VmZml4IGlzIHNwZWNpZmllZCwg
c3ZnMnBuZyB3aWxsIGxvb2sgZm9yIGEgUE5HIGZpbGUgdGhhdFxuIik7CisgICAgcHJpbnRmKCJj
b250YWlucyBhbiBleGFtcGxlIG9mIHdoYXQgdGhlIFNWRyBzaG91bGQgbG9vayBsaWtlIHdoZW4g
cmVuZGVyZWQuIEl0IHdpbGxcbiIpOworICAgIHByaW50ZigiY3JlYXRlIGEgPGZpbGVuYW1lPjxz
dWZmaXg+LWRpZmYucG5nIGZpbGUgdG8gc2hvdyB0aGVzZSBkaWZmZXJlbmNlcy5cblxuIik7IAog
ICAgIGV4aXQoMSk7CiB9OwogCi12b2lkIG91dHB1dFBORyhOU1N0cmluZyAqc3ZnUGF0aCwgTlNT
dHJpbmcgKnBuZ1BhdGgpCitOU0JpdG1hcEltYWdlUmVwICpvdXRwdXRQTkcoTlNTdHJpbmcgKnN2
Z1BhdGgsIE5TU3RyaW5nICpwbmdQYXRoLCBpbnQgd2lkdGgsIGludCBoZWlnaHQpCiB7CiAgICAg
Ly8gbG9hZCB0aGUgZ2l2ZW4gZG9jdW1lbnQKICAgICBEcmF3RG9jdW1lbnQgKmRvY3VtZW50ID0g
W1tEcmF3RG9jdW1lbnQgYWxsb2NdIGluaXRXaXRoQ29udGVudHNPZkZpbGU6c3ZnUGF0aF07CkBA
IC01MSwxMiArNjMsMjQgQEAKICAgICBbdmlldyBzZXREb2N1bWVudDpkb2N1bWVudF07CiAgICAg
W3ZpZXcgc2l6ZVRvRml0Vmlld0JveF07CiAgICAgCi0gICAgLy8gTXkgbWF4aW11bSA1MDB4NTAw
IHNpemUgaGFjazoKKyAgICAvLyBMaW1pdCB0aGUgbWF4aW11bSBzaXplLCBhbmQgZGVmYXVsdCB0
aGUgc2l6ZSB0byA1MDB4NTAwIGlmIG5vdCBzcGVjaWZpZWQKICAgICBOU1NpemUgYm91bmRzU2l6
ZSA9IFt2aWV3IGJvdW5kc10uc2l6ZTsKLSAgICBpZiAoYm91bmRzU2l6ZS53aWR0aCA+IDUwMCkK
KyAgICBpZiAoYm91bmRzU2l6ZS53aWR0aCA+IHdpZHRoICYmIHdpZHRoICE9IDApIHsKKyAgICAg
ICAgLy8gcmVzaXplIHRoZSBoZWlnaHQgc28gdGhhdCB0aGUgYXNwZWN0IHJhdGlvIHJlbWFpbnMg
dGhlIHNhbWUKKyAgICAgICAgYm91bmRzU2l6ZS5oZWlnaHQgPSAoYm91bmRzU2l6ZS5oZWlnaHQg
LyBib3VuZHNTaXplLndpZHRoKSAqIHdpZHRoOworICAgICAgICBib3VuZHNTaXplLndpZHRoID0g
d2lkdGg7CisgICAgfQorICAgIGVsc2UgaWYgKGJvdW5kc1NpemUud2lkdGggPD0gMCkKICAgICAg
ICAgYm91bmRzU2l6ZS53aWR0aCA9IDUwMDsKLSAgICBpZiAoYm91bmRzU2l6ZS5oZWlnaHQgPiA1
MDApCisgICAgICAgIAorICAgIGlmIChib3VuZHNTaXplLmhlaWdodCA+IGhlaWdodCAmJiBoZWln
aHQgIT0gMCkgeworICAgICAgICAvLyByZXNpemUgdGhlIHdpZHRoIHNvIHRoYXQgdGhlIGFzcGVj
dCByYXRpbyByZWFtaW5zIHRoZSBzYW1lCisgICAgICAgIGJvdW5kc1NpemUud2lkdGggPSAoYm91
bmRzU2l6ZS53aWR0aCAvIGJvdW5kc1NpemUuaGVpZ2h0KSAqIGhlaWdodDsKKyAgICAgICAgYm91
bmRzU2l6ZS5oZWlnaHQgPSBoZWlnaHQ7CisgICAgfQorICAgIGVsc2UgaWYgKGJvdW5kc1NpemUu
aGVpZ2h0IDw9IDApCiAgICAgICAgIGJvdW5kc1NpemUuaGVpZ2h0ID0gNTAwOworICAgIAogICAg
IFt2aWV3IHNldEZyYW1lU2l6ZTpib3VuZHNTaXplXTsKICAgICAKICAgICAvLyB0ZWxsIHRoYXQg
dmlldyB0byByZW5kZXIKQEAgLTY1LDEwICs4OSw2NCBAQAogICAgIAogICAgIC8vIG91dHB1dCB0
aGUgcmVzdWx0aW5nIGltYWdlCiAgICAgTlNEYXRhICpwbmdEYXRhID0gW2ltYWdlUmVwIHJlcHJl
c2VudGF0aW9uVXNpbmdUeXBlOk5TUE5HRmlsZVR5cGUgcHJvcGVydGllczpuaWxdOwotICAgIFtw
bmdEYXRhIHdyaXRlVG9GaWxlOnN2Z1BhdGggYXRvbWljYWxseTpZRVNdOworICAgIFtwbmdEYXRh
IHdyaXRlVG9GaWxlOnBuZ1BhdGggYXRvbWljYWxseTpZRVNdOwogICAgIAorICAgIFtpbWFnZVJl
cCByZXRhaW5dOwogICAgIFt2aWV3IHJlbGVhc2VdOyAvLyBzaG91bGQgYmUgc2luZ2xldG9uLgog
ICAgIFtkb2N1bWVudCByZWxlYXNlXTsKKyAgICAKKyAgICByZXR1cm4gaW1hZ2VSZXA7Cit9CisK
K2Zsb2F0IG91dHB1dERpZmYoTlNCaXRtYXBJbWFnZVJlcCAqZGlmZkJpdG1hcCwgTlNTdHJpbmcg
KnRlc3QsIE5TU3RyaW5nICpkaWZmQ29tcGFyZVBhdGgsIE5TU3RyaW5nICpkaWZmT3V0cHV0UGF0
aCkKK3sKKyAgICAvLyBjcmVhdGUgYSBuZXcgZ3JhcGhpY3MgY29udGV4dCB0byBkcmF3IG91ciBD
SUltYWdlIG9uCisgICAgTlNHcmFwaGljc0NvbnRleHQgKm5zQ29udGV4dCA9IFtOU0dyYXBoaWNz
Q29udGV4dCBncmFwaGljc0NvbnRleHRXaXRoQml0bWFwSW1hZ2VSZXA6ZGlmZkJpdG1hcF07Cisg
ICAgQ0lJbWFnZSAqcmVmZXJlbmNlSW1hZ2UgPSBbQ0lJbWFnZSBpbWFnZVdpdGhDb250ZW50c09m
VVJMOltOU1VSTCBmaWxlVVJMV2l0aFBhdGg6ZGlmZkNvbXBhcmVQYXRoXV07CisgICAgQ0lJbWFn
ZSAqdGVzdEltYWdlID0gW0NJSW1hZ2UgaW1hZ2VXaXRoQ29udGVudHNPZlVSTDpbTlNVUkwgZmls
ZVVSTFdpdGhQYXRoOnRlc3RdXTsKKyAgICBDSUltYWdlICpkaWZmSW1hZ2UgPSBuaWw7CisgICAg
Q0lGaWx0ZXIgKmRpZmZCbGVuZCA9IFtDSUZpbHRlciBmaWx0ZXJXaXRoTmFtZTpAIkNJRGlmZmVy
ZW5jZUJsZW5kTW9kZSJdOworICAgIAorICAgIC8vIGdlbmVyYXRlIHRoZSBkaWZmIGltYWdlCisg
ICAgW2RpZmZCbGVuZCBzZXRWYWx1ZTpyZWZlcmVuY2VJbWFnZSBmb3JLZXk6QCJpbnB1dEltYWdl
Il07CisgICAgW2RpZmZCbGVuZCBzZXRWYWx1ZTp0ZXN0SW1hZ2UgZm9yS2V5OkAiaW5wdXRCYWNr
Z3JvdW5kSW1hZ2UiXTsKKyAgICBkaWZmSW1hZ2UgPSBbZGlmZkJsZW5kIHZhbHVlRm9yS2V5OkAi
b3V0cHV0SW1hZ2UiXTsKKyAgICAKKyAgICAvLyBwcmVwYXJlIHRvIGRyYXcgdGhlIGltYWdlLCBz
YXZlIGN1cnJlbnQgc3RhdGUKKyAgICBbTlNHcmFwaGljc0NvbnRleHQgc2F2ZUdyYXBoaWNzU3Rh
dGVdOworICAgIFtOU0dyYXBoaWNzQ29udGV4dCBzZXRDdXJyZW50Q29udGV4dDogbnNDb250ZXh0
XTsKKyAgICAKKyAgICAvLyBkcmF3IHRoZSBkaWZmZXJlbmNlIGltYWdlCisgICAgW1tuc0NvbnRl
eHQgQ0lDb250ZXh0XSBkcmF3SW1hZ2U6ZGlmZkltYWdlIGF0UG9pbnQ6Q0dQb2ludFplcm8gZnJv
bVJlY3Q6W2RpZmZJbWFnZSBleHRlbnRdXTsKKyAgICAKKyAgICAvLyByZXN0b3JlIHRoZSBwcmV2
aW91cyBjb250ZXh0IGFuZCBzdGF0ZQorICAgIFtOU0dyYXBoaWNzQ29udGV4dCByZXN0b3JlR3Jh
cGhpY3NTdGF0ZV07CisgICAgCisgICAgLy8gZ2V0IHRoZSByYXcgZGF0YSBmcm9tIHRoZSBiaXRt
YXAKKyAgICBOU0RhdGEgKnBuZ0RhdGEgPSBbZGlmZkJpdG1hcCByZXByZXNlbnRhdGlvblVzaW5n
VHlwZTpOU1BOR0ZpbGVUeXBlIHByb3BlcnRpZXM6bmlsXTsKKyAgICAKKyAgICBpZiAoZGlmZk91
dHB1dFBhdGgpCisgICAgICAgIFtwbmdEYXRhIHdyaXRlVG9GaWxlOmRpZmZPdXRwdXRQYXRoIGF0
b21pY2FsbHk6WUVTXTsKKyAgICAKKyAgICAvLyBjaGVjayBmb3Igbm9uLWJsYWNrIHBpeGVscy4g
Tm9uLWJsYWNrIHBpeGVscyBtZWFuIGRpZmZlcmVuY2VzIGZyb20gdGhlIHJlZmVyZW5jZSBpbWFn
ZQorICAgIGludCBkaWZmZXJlbmNlcyA9IDA7CisgICAgaW50IHRvdGFsUGl4ZWxzID0gW2RpZmZC
aXRtYXAgcGl4ZWxzV2lkZV0gKiBbZGlmZkJpdG1hcCBwaXhlbHNIaWdoXTsKKyAgICBOU0NvbG9y
ICpjb2xvciA9IG5pbDsKKyAgICBmbG9hdCByZWQgPSAwLjA7CisgICAgZmxvYXQgYmx1ZSA9IDAu
MDsKKyAgICBmbG9hdCBncmVlbiA9IDAuMDsKKyAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsg
aSA8IFtkaWZmQml0bWFwIHBpeGVsc1dpZGVdOyBpKyspIHsKKyAgICAgICAgZm9yICh1bnNpZ25l
ZCBpbnQgaiA9IDA7IGogPCBbZGlmZkJpdG1hcCBwaXhlbHNIaWdoXTsgaisrKSB7CisgICAgICAg
ICAgICBjb2xvciA9IFtkaWZmQml0bWFwIGNvbG9yQXRYOmkgeTpqXTsKKyAgICAgICAgICAgIFtj
b2xvciBnZXRSZWQ6JnJlZCBncmVlbjomZ3JlZW4gYmx1ZTomYmx1ZSBhbHBoYTpOVUxMXTsKKyAg
ICAgICAgICAgIAorICAgICAgICAgICAgaWYgKHJlZCAhPSAwIHx8IGJsdWUgIT0gMCB8fCBncmVl
biAhPSAwKQorICAgICAgICAgICAgICAgIGRpZmZlcmVuY2VzKys7CisgICAgICAgIH0KKyAgICB9
CisgICAgCisgICAgLy8gcmV0dXJuIHBlcmNlbnRhZ2UgZGlmZmVyZW50IGZyb20gYmFzZWxpbmUg
aW1hZ2UKKyAgICByZXR1cm4gKChkaWZmZXJlbmNlcyAqIDEwMC4wKSAvIHRvdGFsUGl4ZWxzKTsK
IH0KIAogaW50IG1haW4gKGludCBhcmdjLCBjb25zdCBjaGFyICphcmd2W10pCkBAIC03OSw2ICsx
NTcsOSBAQAogICAgIGNvbnN0IGNoYXIgKm5hbWUgPSBbW1tOU1N0cmluZyBzdHJpbmdXaXRoVVRG
OFN0cmluZzphcmd2WzBdXSBsYXN0UGF0aENvbXBvbmVudF0gVVRGOFN0cmluZ107CiAgICAgTlNT
dHJpbmcgKmV4cGxpY2l0T3V0cHV0UGF0aCA9IG5pbDsKICAgICBOU1N0cmluZyAqb3V0cHV0U3Vm
Zml4ID0gbmlsOworICAgIE5TU3RyaW5nICpiYXNlbGluZVN1ZmZpeCA9IG5pbDsKKyAgICBpbnQg
d2lkdGggPSAwOworICAgIGludCBoZWlnaHQgPSAwOwogICAgIAogICAgIGZvcihpbnQgeCA9IDE7
IHggPCBhcmdjOyB4KyspIHsKICAgICAgICAgY29uc3QgY2hhciAqYXJnID0gYXJndlt4XTsKQEAg
LTEwOCw2ICsxODksMzggQEAKICAgICAgICAgICAgICAgICAgICAgTlNMb2coQCItLXN1ZmZpeCBy
ZXF1aXJlcyBhbiBhcmd1bWVudC4iKTsKICAgICAgICAgICAgICAgICAgICAgdXNhZ2UobmFtZSk7
CiAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIGlmIChbYXJnU3RyaW5nIGlz
RXF1YWxUb1N0cmluZzpAIi0tbWF4LXdpZHRoIl0pIHsKKyAgICAgICAgICAgICAgICBpZiAoeCAr
IDEgPCBhcmdjKSB7CisgICAgICAgICAgICAgICAgICAgIHdpZHRoID0gW1tOU1N0cmluZyBzdHJp
bmdXaXRoVVRGOFN0cmluZzphcmd2W3grMV1dIGludFZhbHVlXTsKKyAgICAgICAgICAgICAgICAg
ICAgaWYgKHdpZHRoIDw9IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIE5TTG9nKEAiLS1t
YXgtd2lkdGggbXVzdCBiZSBhbiBpbnRlZ2VyID4gMCIpOworICAgICAgICAgICAgICAgICAgICAg
ICAgdXNhZ2UobmFtZSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAg
ICAgeCsrOyAvLyBza2lwIHRvIHRoZSBuZXh0IGFyZworICAgICAgICAgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICAgICAgICAgIE5TTG9nKEAiLS13aWR0aCByZXF1aXJlcyBhbiBpbnRlZ2Vy
IGFyZ3VtZW50LiIpOworICAgICAgICAgICAgICAgICAgICB1c2FnZShuYW1lKTsKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UgaWYgKFthcmdTdHJpbmcgaXNFcXVhbFRvU3Ry
aW5nOkAiLS1tYXgtaGVpZ2h0Il0pIHsKKyAgICAgICAgICAgICAgICBpZiAoeCArIDEgPCBhcmdj
KSB7CisgICAgICAgICAgICAgICAgICAgIGhlaWdodCA9IFtbTlNTdHJpbmcgc3RyaW5nV2l0aFVU
RjhTdHJpbmc6YXJndlt4KzFdXSBpbnRWYWx1ZV07CisgICAgICAgICAgICAgICAgICAgIGlmICho
ZWlnaHQgPD0gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgTlNMb2coQCItLW1heC1oZWln
aHQgbXVzdCBiZSBhbiBpbnRlZ2VyID4gMCIpOworICAgICAgICAgICAgICAgICAgICAgICAgdXNh
Z2UobmFtZSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgeCsr
OyAvLyBza2lwIHRvIHRoZSBuZXh0IGFyZworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICAgICAgICAgIE5TTG9nKEAiLS1tYXgtaGVpZ2h0IHJlcXVpcmVzIGFuIGludGVnZXIg
PiAwIik7CisgICAgICAgICAgICAgICAgICAgIHVzYWdlKG5hbWUpOworICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIH0gZWxzZSBpZiAoW2FyZ1N0cmluZyBpc0VxdWFsVG9TdHJpbmc6QCIt
LWJhc2VsaW5lLXN1ZmZpeCJdKSB7CisgICAgICAgICAgICAgICAgaWYoeCArIDEgPCBhcmdjKSB7
CisgICAgICAgICAgICAgICAgICAgIGJhc2VsaW5lU3VmZml4ID0gW05TU3RyaW5nIHN0cmluZ1dp
dGhVVEY4U3RyaW5nOmFyZ3ZbeCsxXV07CisgICAgICAgICAgICAgICAgICAgIHgrKzsgLy8gc2tp
cCB0byB0aGUgbmV4dCBhcmcKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
ICAgICAgICBOU0xvZyhAIi0tYmFzZWxpbmUtc3VmZml4IHJlcXVpcmVzIHRoZSBzdWZmaXggZm9y
IHRoZSByZWZlcmVuY2UgUE5Hcy4iKTsKKyAgICAgICAgICAgICAgICAgICAgdXNhZ2UobmFtZSk7
CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAg
ICBwcmludGYoIlVucmVjb2duaXplZCBvcHRpb24gJUBcbiIsIGFyZ1N0cmluZyk7CiAgICAgICAg
ICAgICAgICAgdXNhZ2UobmFtZSk7CkBAIC0xMzEsOSArMjQ0LDEyIEBACiAgICAgICAgIHVzYWdl
KG5hbWUpOwogICAgIH0KICAgICAKKyAgICAKICAgICBOU1N0cmluZyAqc3ZnUGF0aCA9IG5pbDsK
ICAgICBmb3JlYWNoYXJyYXkoc3ZnUGF0aCwgc3ZncykgeworICAgICAgICBOU0JpdG1hcEltYWdl
UmVwICpzdmcgPSBuaWw7CiAgICAgICAgIE5TU3RyaW5nICpwbmdQYXRoID0gbmlsOworICAgICAg
ICAKICAgICAgICAgaWYgKGV4cGxpY2l0T3V0cHV0UGF0aCkKICAgICAgICAgICAgIHBuZ1BhdGgg
PSBleHBsaWNpdE91dHB1dFBhdGg7CiAgICAgICAgIGVsc2UgewpAQCAtMTQyLDcgKzI1OCwyNSBA
QAogICAgICAgICAgICAgICAgIHBuZ1BhdGggPSBbcG5nUGF0aCBzdHJpbmdCeUFwcGVuZGluZ1N0
cmluZzpvdXRwdXRTdWZmaXhdOwogICAgICAgICAgICAgcG5nUGF0aCA9IFtwbmdQYXRoIHN0cmlu
Z0J5QXBwZW5kaW5nUGF0aEV4dGVuc2lvbjpAInBuZyJdOwogICAgICAgICB9Ci0gICAgICAgIG91
dHB1dFBORyhzdmdQYXRoLCBwbmdQYXRoKTsKKyAgICAgICAgCisgICAgICAgIC8vIGdlbmVyYXRl
IHRoZSBTVkcsIHNhdmUgdGhlIGJpdG1hcCBkYXRhIGZvciB0aGUgZGlmZgorICAgICAgICBzdmcg
PSBvdXRwdXRQTkcoc3ZnUGF0aCwgcG5nUGF0aCwgd2lkdGgsIGhlaWdodCk7CisgICAgICAgIAor
ICAgICAgICBpZiAoYmFzZWxpbmVTdWZmaXgpIHsKKyAgICAgICAgICAgIE5TU3RyaW5nICpkaWZm
SW1hZ2VQYXRoID0gW1tbcG5nUGF0aCBzdHJpbmdCeURlbGV0aW5nUGF0aEV4dGVuc2lvbl0KKyAg
ICAgICAgICAgICAgICBzdHJpbmdCeUFwcGVuZGluZ1N0cmluZzpAIi1kaWZmIl0KKyAgICAgICAg
ICAgICAgICBzdHJpbmdCeUFwcGVuZGluZ1BhdGhFeHRlbnNpb246QCJwbmciXTsKKyAgICAgICAg
ICAgIAorICAgICAgICAgICAgTlNTdHJpbmcgKmJhc2VsaW5lSW1hZ2VQYXRoID0gW1tbc3ZnUGF0
aCBzdHJpbmdCeURlbGV0aW5nUGF0aEV4dGVuc2lvbl0KKyAgICAgICAgICAgICAgICBzdHJpbmdC
eUFwcGVuZGluZ1N0cmluZzpiYXNlbGluZVN1ZmZpeF0KKyAgICAgICAgICAgICAgICBzdHJpbmdC
eUFwcGVuZGluZ1BhdGhFeHRlbnNpb246QCJwbmciXTsKKworICAgICAgICAgICAgLy8gY29tcGFy
ZSAKKyAgICAgICAgICAgIGZsb2F0IHBlcmNlbnRhZ2UgPSBvdXRwdXREaWZmKHN2ZyxwbmdQYXRo
LGJhc2VsaW5lSW1hZ2VQYXRoLGRpZmZJbWFnZVBhdGgpOworICAgICAgICAgICAgcHJpbnRmKCIl
c1x0JTMuM2YlJVx0JXNcbiIsW3N2Z1BhdGggY1N0cmluZ10scGVyY2VudGFnZSwocGVyY2VudGFn
ZT4xPyJGYWlsZWQuIjoiUGFzc2VkLiIpKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAg
W3N2ZyByZWxlYXNlXTsKICAgICB9CiAgICAgCiAgICAgW3Bvb2wgZHJhaW5dOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>3236</attachid>
            <date>2005-08-05 23:55:20 -0700</date>
            <delta_ts>2005-08-06 02:41:10 -0700</delta_ts>
            <desc>Tentative final patch for svg2png</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>22432</size>
            <attacher name="Ben La Monica">ben.lamonica</attacher>
            
              <data encoding="base64">SW5kZXg6IHN2ZzJwbmcubQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvV2ViS2l0VG9v
bHMvc3ZnMnBuZy9zdmcycG5nLm0sdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMQpkaWZmIC1wIC11
IC1yMS4xIHN2ZzJwbmcubQotLS0gc3ZnMnBuZy5tCTI5IEp1bCAyMDA1IDA1OjI2OjA3IC0wMDAw
CTEuMQorKysgc3ZnMnBuZy5tCTYgQXVnIDIwMDUgMDY6NDQ6MTUgLTAwMDAKQEAgLTI1LDYgKzI1
LDcgQEAKIAogI2ltcG9ydCA8V2ViQ29yZStTVkcvRHJhd0RvY3VtZW50UHJpdmF0ZS5oPgogI2lt
cG9ydCA8V2ViQ29yZStTVkcvRHJhd1ZpZXcuaD4KKyNpbXBvcnQgIkltYWdlRGlmZi5oIgogCiBl
eHRlcm4gY29uc3QgZG91YmxlIHN2ZzJwbmdWZXJzaW9uTnVtYmVyOwogZXh0ZXJuIGNvbnN0IHVu
c2lnbmVkIGNoYXIgc3ZnMnBuZ1ZlcnNpb25TdHJpbmdbXTsKQEAgLTMzLDE1ICszNCwyMSBAQCB2
b2lkIHVzYWdlKGNvbnN0IGNoYXIgKm5hbWUpCiB7CiAgICAgcHJpbnRmKCJVc2FnZTogJXMgW29w
dGlvbnNdIGZpbGVbc11cbiIsIG5hbWUpOwogICAgIHByaW50ZigiT3B0aW9uczpcbiIpOwotICAg
IHByaW50ZigiICAtLXZlcnNpb25cdFx0XHRQcmludHMgZnVsbCB2ZXJzaW9uICglLjFmKSBpbmZv
cm1hdGlvbiBhbmQgZXhpdHMuXG4iLCBzdmcycG5nVmVyc2lvbk51bWJlcik7Ci0gICAgcHJpbnRm
KCIgIC0tb3V0cHV0IDxvdXRwdXRmaWxlPiBkdW1wIGEgcG5nIGNvcHkgb2YgYSBzaW5nbGUgc3Zn
IGlucHV0IGZpbGUgdG8gdGhlIG5hbWVkIHBhdGhcbiIpOwotICAgIHByaW50ZigiICAtLXN1ZmZp
eCA8c3VmZml4PiBhcHBlbmQgPHN1ZmZpeD4gdG8gZWFjaCBvdXRwdXQgZmlsZSBlLmcuIDxpbnB1
dG5hbWU+PHN1ZmZpeD4ucG5nXG4iKTsKKyAgICBwcmludGYoIiAgLS12ZXJzaW9uXHRcdFx0UHJp
bnRzIGZ1bGwgdmVyc2lvbiAoJS4xZikgaW5mb3JtYXRpb24gYW5kIGV4aXRzXG4iLCBzdmcycG5n
VmVyc2lvbk51bWJlcik7CisgICAgcHJpbnRmKCIgIC0tbWF4LXdpZHRoIDxpbnQ+XHRcdHNldHMg
dGhlIHdpZHRoIG9mIHRoZSBvdXRwdXQgcG5nXG4iKTsKKyAgICBwcmludGYoIiAgLS1tYXgtaGVp
Z2h0IDxpbnQ+XHRcdHNldHMgdGhlIGhlaWdodCBvZiB0aGUgb3V0cHV0IHBuZ1xuIik7CisgICAg
cHJpbnRmKCIgIC0tYmFzZWxpbmUtc3VmZml4IDxzdWZmaXg+XHR0aGUgc3VmZml4IG9uIHRoZSBy
ZWZlcmVuY2UgdmVyc2lvbiBvZiBhIHBpY3R1cmVcbiIpOworICAgIHByaW50ZigiICAtLW91dHB1
dCA8b3V0cHV0ZmlsZT5cdFx0ZHVtcCBhIHBuZyBjb3B5IG9mIGEgc2luZ2xlIHN2ZyBpbnB1dCBm
aWxlXG5cdFx0XHRcdHRvIHRoZSBuYW1lZCBwYXRoXG4iKTsKKyAgICBwcmludGYoIiAgLS1zdWZm
aXggPHN1ZmZpeD5cdFx0YXBwZW5kIDxzdWZmaXg+IHRvIGVhY2ggb3V0cHV0IGZpbGVcblx0XHRc
dFx0ZS5nLiA8aW5wdXRuYW1lPjxzdWZmaXg+LnBuZ1xuXG4iKTsKICAgICBwcmludGYoIldoZW4g
LS1vdXRwdXQgaXMgbm90IHNwZWNpZmllZCwgb3V0cHV0IGZpbGVzIGFyZSBjcmVhdGVkIGluIHRo
ZSBzYW1lIGRpcmVjdG9yeVxuIik7Ci0gICAgcHJpbnRmKCJhcyB0aGUgb3JpZ2luYWwgc291cmNl
IGZpbGVzIGUuZy4gPHNvdXJjZSBkaXJlY3Rvcnk+LzxmaWxlbmFtZT48c3VmZml4Pi5wbmciKTsK
KyAgICBwcmludGYoImFzIHRoZSBvcmlnaW5hbCBzb3VyY2UgZmlsZXMgZS5nLiA8c291cmNlIGRp
cmVjdG9yeT4vPGZpbGVuYW1lPjxzdWZmaXg+LnBuZ1xuIik7CisgICAgcHJpbnRmKCJcbldoZW4g
LS1iYXNlbGluZS1zdWZmaXggaXMgc3BlY2lmaWVkLCBzdmcycG5nIHdpbGwgbG9vayBmb3IgYSBQ
TkcgZmlsZSB0aGF0XG4iKTsKKyAgICBwcmludGYoImNvbnRhaW5zIGFuIGV4YW1wbGUgb2Ygd2hh
dCB0aGUgU1ZHIHNob3VsZCBsb29rIGxpa2Ugd2hlbiByZW5kZXJlZC4gSXQgd2lsbFxuIik7Cisg
ICAgcHJpbnRmKCJjcmVhdGUgYSA8ZmlsZW5hbWU+PHN1ZmZpeD4tZGlmZi5wbmcgZmlsZSB0byBz
aG93IHRoZXNlIGRpZmZlcmVuY2VzLlxuXG4iKTsgCiAgICAgZXhpdCgxKTsKIH07CiAKLXZvaWQg
b3V0cHV0UE5HKE5TU3RyaW5nICpzdmdQYXRoLCBOU1N0cmluZyAqcG5nUGF0aCkKK05TQml0bWFw
SW1hZ2VSZXAgKm91dHB1dFNWR0JpdG1hcChOU1N0cmluZyAqc3ZnUGF0aCwgTlNTdHJpbmcgKnBu
Z1BhdGgsIGludCB3aWR0aCwgaW50IGhlaWdodCkKIHsKICAgICAvLyBsb2FkIHRoZSBnaXZlbiBk
b2N1bWVudAogICAgIERyYXdEb2N1bWVudCAqZG9jdW1lbnQgPSBbW0RyYXdEb2N1bWVudCBhbGxv
Y10gaW5pdFdpdGhDb250ZW50c09mRmlsZTpzdmdQYXRoXTsKQEAgLTUxLDEyICs1OCwyNCBAQCB2
b2lkIG91dHB1dFBORyhOU1N0cmluZyAqc3ZnUGF0aCwgTlNTdHJpCiAgICAgW3ZpZXcgc2V0RG9j
dW1lbnQ6ZG9jdW1lbnRdOwogICAgIFt2aWV3IHNpemVUb0ZpdFZpZXdCb3hdOwogICAgIAotICAg
IC8vIE15IG1heGltdW0gNTAweDUwMCBzaXplIGhhY2s6CisgICAgLy8gTGltaXQgdGhlIG1heGlt
dW0gc2l6ZSwgYW5kIGRlZmF1bHQgdGhlIHNpemUgdG8gNTAweDUwMCBpZiBub3Qgc3BlY2lmaWVk
CiAgICAgTlNTaXplIGJvdW5kc1NpemUgPSBbdmlldyBib3VuZHNdLnNpemU7Ci0gICAgaWYgKGJv
dW5kc1NpemUud2lkdGggPiA1MDApCisgICAgaWYgKGJvdW5kc1NpemUud2lkdGggPiB3aWR0aCAm
JiB3aWR0aCAhPSAwKSB7CisgICAgICAgIC8vIHJlc2l6ZSB0aGUgaGVpZ2h0IHNvIHRoYXQgdGhl
IGFzcGVjdCByYXRpbyByZW1haW5zIHRoZSBzYW1lCisgICAgICAgIGJvdW5kc1NpemUuaGVpZ2h0
ID0gKGJvdW5kc1NpemUuaGVpZ2h0IC8gYm91bmRzU2l6ZS53aWR0aCkgKiB3aWR0aDsKKyAgICAg
ICAgYm91bmRzU2l6ZS53aWR0aCA9IHdpZHRoOworICAgIH0KKyAgICBlbHNlIGlmIChib3VuZHNT
aXplLndpZHRoIDw9IDApCiAgICAgICAgIGJvdW5kc1NpemUud2lkdGggPSA1MDA7Ci0gICAgaWYg
KGJvdW5kc1NpemUuaGVpZ2h0ID4gNTAwKQorICAgICAgICAKKyAgICBpZiAoYm91bmRzU2l6ZS5o
ZWlnaHQgPiBoZWlnaHQgJiYgaGVpZ2h0ICE9IDApIHsKKyAgICAgICAgLy8gcmVzaXplIHRoZSB3
aWR0aCBzbyB0aGF0IHRoZSBhc3BlY3QgcmF0aW8gcmVhbWlucyB0aGUgc2FtZQorICAgICAgICBi
b3VuZHNTaXplLndpZHRoID0gKGJvdW5kc1NpemUud2lkdGggLyBib3VuZHNTaXplLmhlaWdodCkg
KiBoZWlnaHQ7CisgICAgICAgIGJvdW5kc1NpemUuaGVpZ2h0ID0gaGVpZ2h0OworICAgIH0KKyAg
ICBlbHNlIGlmIChib3VuZHNTaXplLmhlaWdodCA8PSAwKQogICAgICAgICBib3VuZHNTaXplLmhl
aWdodCA9IDUwMDsKKyAgICAKICAgICBbdmlldyBzZXRGcmFtZVNpemU6Ym91bmRzU2l6ZV07CiAg
ICAgCiAgICAgLy8gdGVsbCB0aGF0IHZpZXcgdG8gcmVuZGVyCkBAIC02NSwxMCArODQsMTIgQEAg
dm9pZCBvdXRwdXRQTkcoTlNTdHJpbmcgKnN2Z1BhdGgsIE5TU3RyaQogICAgIAogICAgIC8vIG91
dHB1dCB0aGUgcmVzdWx0aW5nIGltYWdlCiAgICAgTlNEYXRhICpwbmdEYXRhID0gW2ltYWdlUmVw
IHJlcHJlc2VudGF0aW9uVXNpbmdUeXBlOk5TUE5HRmlsZVR5cGUgcHJvcGVydGllczpuaWxdOwot
ICAgIFtwbmdEYXRhIHdyaXRlVG9GaWxlOnN2Z1BhdGggYXRvbWljYWxseTpZRVNdOworICAgIFtw
bmdEYXRhIHdyaXRlVG9GaWxlOnBuZ1BhdGggYXRvbWljYWxseTpZRVNdOwogICAgIAogICAgIFt2
aWV3IHJlbGVhc2VdOyAvLyBzaG91bGQgYmUgc2luZ2xldG9uLgogICAgIFtkb2N1bWVudCByZWxl
YXNlXTsKKyAgICAKKyAgICByZXR1cm4gaW1hZ2VSZXA7CiB9CiAKIGludCBtYWluIChpbnQgYXJn
YywgY29uc3QgY2hhciAqYXJndltdKQpAQCAtNzksNiArMTAwLDkgQEAgaW50IG1haW4gKGludCBh
cmdjLCBjb25zdCBjaGFyICphcmd2W10pCiAgICAgY29uc3QgY2hhciAqbmFtZSA9IFtbW05TU3Ry
aW5nIHN0cmluZ1dpdGhVVEY4U3RyaW5nOmFyZ3ZbMF1dIGxhc3RQYXRoQ29tcG9uZW50XSBVVEY4
U3RyaW5nXTsKICAgICBOU1N0cmluZyAqZXhwbGljaXRPdXRwdXRQYXRoID0gbmlsOwogICAgIE5T
U3RyaW5nICpvdXRwdXRTdWZmaXggPSBuaWw7CisgICAgTlNTdHJpbmcgKmJhc2VsaW5lU3VmZml4
ID0gbmlsOworICAgIGludCB3aWR0aCA9IDA7CisgICAgaW50IGhlaWdodCA9IDA7CiAgICAgCiAg
ICAgZm9yKGludCB4ID0gMTsgeCA8IGFyZ2M7IHgrKykgewogICAgICAgICBjb25zdCBjaGFyICph
cmcgPSBhcmd2W3hdOwpAQCAtMTA4LDYgKzEzMiwzOCBAQCBpbnQgbWFpbiAoaW50IGFyZ2MsIGNv
bnN0IGNoYXIgKmFyZ3ZbXSkKICAgICAgICAgICAgICAgICAgICAgTlNMb2coQCItLXN1ZmZpeCBy
ZXF1aXJlcyBhbiBhcmd1bWVudC4iKTsKICAgICAgICAgICAgICAgICAgICAgdXNhZ2UobmFtZSk7
CiAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIGlmIChbYXJnU3RyaW5nIGlz
RXF1YWxUb1N0cmluZzpAIi0tbWF4LXdpZHRoIl0pIHsKKyAgICAgICAgICAgICAgICBpZiAoeCAr
IDEgPCBhcmdjKSB7CisgICAgICAgICAgICAgICAgICAgIHdpZHRoID0gW1tOU1N0cmluZyBzdHJp
bmdXaXRoVVRGOFN0cmluZzphcmd2W3grMV1dIGludFZhbHVlXTsKKyAgICAgICAgICAgICAgICAg
ICAgaWYgKHdpZHRoIDw9IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIE5TTG9nKEAiLS1t
YXgtd2lkdGggbXVzdCBiZSBhbiBpbnRlZ2VyID4gMCIpOworICAgICAgICAgICAgICAgICAgICAg
ICAgdXNhZ2UobmFtZSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAg
ICAgeCsrOyAvLyBza2lwIHRvIHRoZSBuZXh0IGFyZworICAgICAgICAgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICAgICAgICAgIE5TTG9nKEAiLS1tYXgtd2lkdGggcmVxdWlyZXMgYW4gaW50
ZWdlciBhcmd1bWVudC4iKTsKKyAgICAgICAgICAgICAgICAgICAgdXNhZ2UobmFtZSk7CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIGlmIChbYXJnU3RyaW5nIGlzRXF1YWxU
b1N0cmluZzpAIi0tbWF4LWhlaWdodCJdKSB7CisgICAgICAgICAgICAgICAgaWYgKHggKyAxIDwg
YXJnYykgeworICAgICAgICAgICAgICAgICAgICBoZWlnaHQgPSBbW05TU3RyaW5nIHN0cmluZ1dp
dGhVVEY4U3RyaW5nOmFyZ3ZbeCsxXV0gaW50VmFsdWVdOworICAgICAgICAgICAgICAgICAgICBp
ZiAoaGVpZ2h0IDw9IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIE5TTG9nKEAiLS1tYXgt
aGVpZ2h0IG11c3QgYmUgYW4gaW50ZWdlciA+IDAiKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IHVzYWdlKG5hbWUpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAg
IHgrKzsgLy8gc2tpcCB0byB0aGUgbmV4dCBhcmcKKyAgICAgICAgICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgICAgICAgICBOU0xvZyhAIi0tbWF4LWhlaWdodCByZXF1aXJlcyBhbiBpbnRl
Z2VyID4gMCIpOworICAgICAgICAgICAgICAgICAgICB1c2FnZShuYW1lKTsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICB9IGVsc2UgaWYgKFthcmdTdHJpbmcgaXNFcXVhbFRvU3RyaW5n
OkAiLS1iYXNlbGluZS1zdWZmaXgiXSkgeworICAgICAgICAgICAgICAgIGlmKHggKyAxIDwgYXJn
YykgeworICAgICAgICAgICAgICAgICAgICBiYXNlbGluZVN1ZmZpeCA9IFtOU1N0cmluZyBzdHJp
bmdXaXRoVVRGOFN0cmluZzphcmd2W3grMV1dOworICAgICAgICAgICAgICAgICAgICB4Kys7IC8v
IHNraXAgdG8gdGhlIG5leHQgYXJnCisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgICAgICAgICAgTlNMb2coQCItLWJhc2VsaW5lLXN1ZmZpeCByZXF1aXJlcyB0aGUgc3VmZml4
IGZvciB0aGUgcmVmZXJlbmNlIFBOR3MuIik7CisgICAgICAgICAgICAgICAgICAgIHVzYWdlKG5h
bWUpOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAg
ICAgICAgcHJpbnRmKCJVbnJlY29nbml6ZWQgb3B0aW9uICVAXG4iLCBhcmdTdHJpbmcpOwogICAg
ICAgICAgICAgICAgIHVzYWdlKG5hbWUpOwpAQCAtMTMxLDkgKzE4NywxMiBAQCBpbnQgbWFpbiAo
aW50IGFyZ2MsIGNvbnN0IGNoYXIgKmFyZ3ZbXSkKICAgICAgICAgdXNhZ2UobmFtZSk7CiAgICAg
fQogICAgIAorICAgIAogICAgIE5TU3RyaW5nICpzdmdQYXRoID0gbmlsOwogICAgIGZvcmVhY2hh
cnJheShzdmdQYXRoLCBzdmdzKSB7CisgICAgICAgIE5TQml0bWFwSW1hZ2VSZXAgKnN2Z0JpdG1h
cCA9IG5pbDsKICAgICAgICAgTlNTdHJpbmcgKnBuZ1BhdGggPSBuaWw7CisgICAgICAgIAogICAg
ICAgICBpZiAoZXhwbGljaXRPdXRwdXRQYXRoKQogICAgICAgICAgICAgcG5nUGF0aCA9IGV4cGxp
Y2l0T3V0cHV0UGF0aDsKICAgICAgICAgZWxzZSB7CkBAIC0xNDIsNyArMjAxLDMxIEBAIGludCBt
YWluIChpbnQgYXJnYywgY29uc3QgY2hhciAqYXJndltdKQogICAgICAgICAgICAgICAgIHBuZ1Bh
dGggPSBbcG5nUGF0aCBzdHJpbmdCeUFwcGVuZGluZ1N0cmluZzpvdXRwdXRTdWZmaXhdOwogICAg
ICAgICAgICAgcG5nUGF0aCA9IFtwbmdQYXRoIHN0cmluZ0J5QXBwZW5kaW5nUGF0aEV4dGVuc2lv
bjpAInBuZyJdOwogICAgICAgICB9Ci0gICAgICAgIG91dHB1dFBORyhzdmdQYXRoLCBwbmdQYXRo
KTsKKyAgICAgICAgCisgICAgICAgIC8vIGdlbmVyYXRlIHRoZSBTVkcsIHNhdmUgdGhlIGJpdG1h
cCBkYXRhIGZvciB0aGUgZGlmZgorICAgICAgICBzdmdCaXRtYXAgPSBvdXRwdXRTVkdCaXRtYXAo
c3ZnUGF0aCwgcG5nUGF0aCwgd2lkdGgsIGhlaWdodCk7CisgICAgICAgIAorICAgICAgICBpZiAo
YmFzZWxpbmVTdWZmaXgpIHsKKyAgICAgICAgICAgIE5TU3RyaW5nICpkaWZmSW1hZ2VQYXRoID0g
W1tbcG5nUGF0aCBzdHJpbmdCeURlbGV0aW5nUGF0aEV4dGVuc2lvbl0KKyAgICAgICAgICAgICAg
ICBzdHJpbmdCeUFwcGVuZGluZ1N0cmluZzpAIi1kaWZmIl0KKyAgICAgICAgICAgICAgICBzdHJp
bmdCeUFwcGVuZGluZ1BhdGhFeHRlbnNpb246QCJwbmciXTsKKyAgICAgICAgICAgIAorICAgICAg
ICAgICAgTlNTdHJpbmcgKmJhc2VsaW5lSW1hZ2VQYXRoID0gW1tbc3ZnUGF0aCBzdHJpbmdCeURl
bGV0aW5nUGF0aEV4dGVuc2lvbl0KKyAgICAgICAgICAgICAgICBzdHJpbmdCeUFwcGVuZGluZ1N0
cmluZzpiYXNlbGluZVN1ZmZpeF0KKyAgICAgICAgICAgICAgICBzdHJpbmdCeUFwcGVuZGluZ1Bh
dGhFeHRlbnNpb246QCJwbmciXTsKKworICAgICAgICAgICAgTlNTdHJpbmcgKmFuaW1hdGVkR0lG
UGF0aCA9IFtbcG5nUGF0aCBzdHJpbmdCeURlbGV0aW5nUGF0aEV4dGVuc2lvbl0KKyAgICAgICAg
ICAgICAgICBzdHJpbmdCeUFwcGVuZGluZ1BhdGhFeHRlbnNpb246QCJnaWYiXTsKKworICAgICAg
ICAgICAgLy8gY29tcGFyZQorICAgICAgICAgICAgTlNCaXRtYXBJbWFnZVJlcCAqcmVmZXJlbmNl
Qml0bWFwID0gW05TQml0bWFwSW1hZ2VSZXAgaW1hZ2VSZXBXaXRoQ29udGVudHNPZlVSTDpbTlNV
UkwgZmlsZVVSTFdpdGhQYXRoOmJhc2VsaW5lSW1hZ2VQYXRoXV07CisgICAgICAgICAgICBOU0Jp
dG1hcEltYWdlUmVwICpkaWZmQml0bWFwID0gb3V0cHV0RGlmZkJpdG1hcChzdmdCaXRtYXAscmVm
ZXJlbmNlQml0bWFwLGRpZmZJbWFnZVBhdGgpOworICAgICAgICAgICAgb3V0cHV0QW5pbWF0ZWRH
SUYoc3ZnQml0bWFwLHJlZmVyZW5jZUJpdG1hcCxhbmltYXRlZEdJRlBhdGgpOworICAgICAgICAg
ICAgZmxvYXQgcGVyY2VudGFnZSA9IGNvbXB1dGVQZXJjZW50YWdlRGlmZmVyZW50KGRpZmZCaXRt
YXApOworICAgICAgICAgICAgcHJpbnRmKCIlc1x0JTMuM2YlJVx0JXNcbiIsW3N2Z1BhdGggY1N0
cmluZ10scGVyY2VudGFnZSwocGVyY2VudGFnZT4xPyJGYWlsZWQuIjoiUGFzc2VkLiIpKTsKKyAg
ICAgICAgICAgIAorICAgICAgICAgICAgW2RpZmZCaXRtYXAgcmVsZWFzZV07CisgICAgICAgIH0K
ICAgICB9CiAgICAgCiAgICAgW3Bvb2wgZHJhaW5dOwpJbmRleDogLi9zdmcycG5nLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2cy9yb290L1dlYktpdFRv
b2xzL3N2ZzJwbmcvc3ZnMnBuZy54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qLHYKcmV0cmlldmlu
ZyByZXZpc2lvbiAxLjEKZGlmZiAtcCAtdSAtcjEuMSAuL3N2ZzJwbmcueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagotLS0gLi9zdmcycG5nLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJMjkgSnVs
IDIwMDUgMDU6MjY6MDcgLTAwMDAJMS4xCisrKyAuL3N2ZzJwbmcueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagk2IEF1ZyAyMDA1IDA2OjQ0OjE2IC0wMDAwCkBAIC0xMCw2ICsxMCwxMCBAQAogCQk4
REQ3NkY5QTA0ODZBQTc2MDBEOTZCNUUgLyogc3ZnMnBuZy5tIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDhGQjc3OTZGRTg0MTU1REMwMkFBQzA3IC8qIHN2
ZzJwbmcubSAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9ICgpOyB9OyB9OwogCQk4REQ3NkY5
QzA0ODZBQTc2MDBEOTZCNUUgLyogRm91bmRhdGlvbi5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwOEZCNzc5RUZFODQxNTVEQzAyQUFD
MDcgLyogRm91bmRhdGlvbi5mcmFtZXdvcmsgKi87IH07CiAJCUE4OThGNzk1MDg4MjRCNEEwMDc1
RUZCMiAvKiBXZWJDb3JlK1NWRy5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBODk4Rjc5NDA4ODI0QjRBMDA3NUVGQjIgLyogV2ViQ29y
ZStTVkcuZnJhbWV3b3JrICovOyB9OworCQlCNTBEOUFGQjA4QTAwNDg1MDBFQ0Y3ODIgLyogUXVh
cnR6Q29yZS5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBCNTBEOUFGQTA4QTAwNDg1MDBFQ0Y3ODIgLyogUXVhcnR6Q29yZS5mcmFtZXdv
cmsgKi87IH07CisJCUI1NTU5ODg5MDhBMzQxRTMwMDFFQjVGRCAvKiBJbWFnZURpZmYubSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEI1NTU5ODg4MDhBMzQx
RTMwMDFFQjVGRCAvKiBJbWFnZURpZmYubSAqLzsgfTsKKwkJQjU1NTk4QUUwOEEzNDQwQjAwMUVC
NUZEIC8qIEltYWdlRGlmZi5oIGluIENvcHlGaWxlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBCNTU1OThBRDA4QTM0NDBCMDAxRUI1RkQgLyogSW1hZ2VEaWZmLmggKi87IH07
CisJCUI1OUY1OEZDMDhBMUQxQ0EwMEJFMjY2NCAvKiBBcHBLaXQuZnJhbWV3b3JrIGluIEZyYW1l
d29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjU5RjU4RkIwOEExRDFD
QTAwQkUyNjY0IC8qIEFwcEtpdC5mcmFtZXdvcmsgKi87IH07CiAvKiBFbmQgUEJYQnVpbGRGaWxl
IHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYQnVpbGRTdHlsZSBzZWN0aW9uICovCkBAIC00Mywx
NyArNDcsMjIgQEAKIAkJCWRzdFBhdGggPSAvdXNyL3NoYXJlL21hbi9tYW4xLzsKIAkJCWRzdFN1
YmZvbGRlclNwZWMgPSAwOwogCQkJZmlsZXMgPSAoCisJCQkJQjU1NTk4QUUwOEEzNDQwQjAwMUVC
NUZEIC8qIEltYWdlRGlmZi5oIGluIENvcHlGaWxlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9y
RGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMTsKIAkJfTsKIC8qIEVuZCBQQlhDb3B5RmlsZXNC
dWlsZFBoYXNlIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYRmlsZVJlZmVyZW5jZSBzZWN0aW9u
ICovCi0JCTA4RkI3Nzk2RkU4NDE1NURDMDJBQUMwNyAvKiBzdmcycG5nLm0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMub2JqYzsgcGF0aCA9IHN2ZzJwbmcubTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMDhGQjc3OTZGRTg0MTU1REMwMkFBQzA3IC8qIHN2ZzJwbmcubSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBpbmRlbnRXaWR0aCA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLm9iamM7IHBhdGggPSBzdmcycG5nLm07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gNDsgdXNlc1RhYnMgPSAwOyB9OwogCQkw
OEZCNzc5RUZFODQxNTVEQzAyQUFDMDcgLyogRm91bmRhdGlvbi5mcmFtZXdvcmsgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB3cmFwcGVyLmZyYW1ld29y
azsgbmFtZSA9IEZvdW5kYXRpb24uZnJhbWV3b3JrOyBwYXRoID0gL1N5c3RlbS9MaWJyYXJ5L0Zy
YW1ld29ya3MvRm91bmRhdGlvbi5mcmFtZXdvcms7IHNvdXJjZVRyZWUgPSAiPGFic29sdXRlPiI7
IH07CiAJCTMyQTcwQUFCMDM3MDVFMUYwMEM5MTc4MyAvKiBzdmcycG5nX1ByZWZpeC5wY2ggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IHN2ZzJwbmdfUHJlZml4LnBjaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOERENzZGQTEwNDg2QUE3NjAwRDk2QjVFIC8qIHN2ZzJw
bmcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9ICJjb21w
aWxlZC5tYWNoLW8uZXhlY3V0YWJsZSI7IGluY2x1ZGVJbkluZGV4ID0gMDsgcGF0aCA9IHN2ZzJw
bmc7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07Ci0JCUE4OThGNzk0MDg4MjRC
NEEwMDc1RUZCMiAvKiBXZWJDb3JlK1NWRy5mcmFtZXdvcmsgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB3cmFwcGVyLmZyYW1ld29yazsgcGF0aCA9ICJX
ZWJDb3JlK1NWRy5mcmFtZXdvcmsiOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9
OworCQlBODk4Rjc5NDA4ODI0QjRBMDA3NUVGQjIgLyogV2ViQ29yZStTVkcuZnJhbWV3b3JrICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gd3JhcHBlci5m
cmFtZXdvcms7IG5hbWUgPSAiV2ViQ29yZStTVkcuZnJhbWV3b3JrIjsgcGF0aCA9ICIuLi8uLi8u
Li8uLi9XZWJLaXRCdWlsZC9EZXBsb3ltZW50L1dlYkNvcmUrU1ZHLmZyYW1ld29yayI7IHNvdXJj
ZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CisJCUI1MEQ5QUZBMDhBMDA0ODUwMEVDRjc4
MiAvKiBRdWFydHpDb3JlLmZyYW1ld29yayAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHdyYXBwZXIuZnJhbWV3b3JrOyBuYW1lID0gUXVhcnR6Q29yZS5m
cmFtZXdvcms7IHBhdGggPSAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9RdWFydHpDb3JlLmZy
YW1ld29yazsgc291cmNlVHJlZSA9ICI8YWJzb2x1dGU+IjsgfTsKKwkJQjU1NTk4ODgwOEEzNDFF
MzAwMUVCNUZEIC8qIEltYWdlRGlmZi5tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLm9iamM7IHBh
dGggPSBJbWFnZURpZmYubTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQjU1NTk4QUQw
OEEzNDQwQjAwMUVCNUZEIC8qIEltYWdlRGlmZi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBJbWFnZURpZmYuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQjU5RjU4
RkIwOEExRDFDQTAwQkUyNjY0IC8qIEFwcEtpdC5mcmFtZXdvcmsgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB3cmFwcGVyLmZyYW1ld29yazsgbmFtZSA9
IEFwcEtpdC5mcmFtZXdvcms7IHBhdGggPSAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBL
aXQuZnJhbWV3b3JrOyBzb3VyY2VUcmVlID0gIjxhYnNvbHV0ZT4iOyB9OwogLyogRW5kIFBCWEZp
bGVSZWZlcmVuY2Ugc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhGcmFtZXdvcmtzQnVpbGRQaGFz
ZSBzZWN0aW9uICovCkBAIC02Myw2ICs3Miw4IEBACiAJCQlmaWxlcyA9ICgKIAkJCQk4REQ3NkY5
QzA0ODZBQTc2MDBEOTZCNUUgLyogRm91bmRhdGlvbi5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAq
LywKIAkJCQlBODk4Rjc5NTA4ODI0QjRBMDA3NUVGQjIgLyogV2ViQ29yZStTVkcuZnJhbWV3b3Jr
IGluIEZyYW1ld29ya3MgKi8sCisJCQkJQjUwRDlBRkIwOEEwMDQ4NTAwRUNGNzgyIC8qIFF1YXJ0
ekNvcmUuZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8sCisJCQkJQjU5RjU4RkMwOEExRDFDQTAw
QkUyNjY0IC8qIEFwcEtpdC5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLywKIAkJCSk7CiAJCQly
dW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTg0LDYgKzk1
LDggQEAKIAkJCWNoaWxkcmVuID0gKAogCQkJCTMyQTcwQUFCMDM3MDVFMUYwMEM5MTc4MyAvKiBz
dmcycG5nX1ByZWZpeC5wY2ggKi8sCiAJCQkJMDhGQjc3OTZGRTg0MTU1REMwMkFBQzA3IC8qIHN2
ZzJwbmcubSAqLywKKwkJCQlCNTU1OTg4ODA4QTM0MUUzMDAxRUI1RkQgLyogSW1hZ2VEaWZmLm0g
Ki8sCisJCQkJQjU1NTk4QUQwOEEzNDQwQjAwMUVCNUZEIC8qIEltYWdlRGlmZi5oICovLAogCQkJ
KTsKIAkJCW5hbWUgPSBTb3VyY2U7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtOTEs
NiArMTA0LDggQEAKIAkJMDhGQjc3OURGRTg0MTU1REMwMkFBQzA3IC8qIEV4dGVybmFsIEZyYW1l
d29ya3MgYW5kIExpYnJhcmllcyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRy
ZW4gPSAoCisJCQkJQjU5RjU4RkIwOEExRDFDQTAwQkUyNjY0IC8qIEFwcEtpdC5mcmFtZXdvcmsg
Ki8sCisJCQkJQjUwRDlBRkEwOEEwMDQ4NTAwRUNGNzgyIC8qIFF1YXJ0ekNvcmUuZnJhbWV3b3Jr
ICovLAogCQkJCUE4OThGNzk0MDg4MjRCNEEwMDc1RUZCMiAvKiBXZWJDb3JlK1NWRy5mcmFtZXdv
cmsgKi8sCiAJCQkJMDhGQjc3OUVGRTg0MTU1REMwMkFBQzA3IC8qIEZvdW5kYXRpb24uZnJhbWV3
b3JrICovLAogCQkJKTsKQEAgLTE2NSw2ICsxODAsNyBAQAogCQkJYnVpbGRBY3Rpb25NYXNrID0g
MjE0NzQ4MzY0NzsKIAkJCWZpbGVzID0gKAogCQkJCThERDc2RjlBMDQ4NkFBNzYwMEQ5NkI1RSAv
KiBzdmcycG5nLm0gaW4gU291cmNlcyAqLywKKwkJCQlCNTU1OTg4OTA4QTM0MUUzMDAxRUI1RkQg
LyogSW1hZ2VEaWZmLm0gaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95
bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTE3NSw2ICsxOTEsMTAgQEAKIAkJCWlz
YSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwogCQkJYnVpbGRTZXR0aW5ncyA9IHsKIAkJCQlDT1BZ
X1BIQVNFX1NUUklQID0gTk87CisJCQkJRlJBTUVXT1JLX1NFQVJDSF9QQVRIUyA9ICgKKwkJCQkJ
Li4vLi4vV2ViS2l0QnVpbGQvRGVwbG95bWVudCwKKwkJCQkJL1N5c3RlbS9MaWJyYXJ5L0ZyYW1l
d29ya3MsCisJCQkJKTsKIAkJCQlHQ0NfRFlOQU1JQ19OT19QSUMgPSBOTzsKIAkJCQlHQ0NfRU5B
QkxFX0ZJWF9BTkRfQ09OVElOVUUgPSBZRVM7CiAJCQkJR0NDX0dFTkVSQVRFX0RFQlVHR0lOR19T
WU1CT0xTID0gWUVTOwpAQCAtMTg0LDcgKzIwNCw5IEBACiAJCQkJR0NDX1BSRUZJWF9IRUFERVIg
PSBzdmcycG5nX1ByZWZpeC5wY2g7CiAJCQkJR0NDX1dBUk5fQUJPVVRfUkVUVVJOX1RZUEUgPSBZ
RVM7CiAJCQkJR0NDX1dBUk5fVU5VU0VEX1ZBUklBQkxFID0gWUVTOworCQkJCUhFQURFUl9TRUFS
Q0hfUEFUSFMgPSAiIjsKIAkJCQlJTlNUQUxMX1BBVEggPSAiJChIT01FKS9iaW4iOworCQkJCUxJ
QlJBUllfU0VBUkNIX1BBVEhTID0gIiI7CiAJCQkJUFJFQklORElORyA9IE5POwogCQkJCVBST0RV
Q1RfTkFNRSA9IHN2ZzJwbmc7CiAJCQkJVkVSU0lPTklOR19TWVNURU0gPSAiYXBwbGUtZ2VuZXJp
YyI7CkBAIC0xOTYsNiArMjE4LDEwIEBACiAJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsK
IAkJCWJ1aWxkU2V0dGluZ3MgPSB7CiAJCQkJQ09QWV9QSEFTRV9TVFJJUCA9IFlFUzsKKwkJCQlG
UkFNRVdPUktfU0VBUkNIX1BBVEhTID0gKAorCQkJCQkuLi8uLi9XZWJLaXRCdWlsZC9EZXBsb3lt
ZW50LAorCQkJCQkvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3JrcywKKwkJCQkpOwogCQkJCUdDQ19F
TkFCTEVfRklYX0FORF9DT05USU5VRSA9IE5POwogCQkJCUdDQ19HRU5FUkFURV9ERUJVR0dJTkdf
U1lNQk9MUyA9IE5POwogCQkJCUdDQ19NT0RFTF9UVU5JTkcgPSBHNTsKQEAgLTIwMyw3ICsyMjks
OSBAQAogCQkJCUdDQ19QUkVGSVhfSEVBREVSID0gc3ZnMnBuZ19QcmVmaXgucGNoOwogCQkJCUdD
Q19XQVJOX0FCT1VUX1JFVFVSTl9UWVBFID0gWUVTOwogCQkJCUdDQ19XQVJOX1VOVVNFRF9WQVJJ
QUJMRSA9IFlFUzsKKwkJCQlIRUFERVJfU0VBUkNIX1BBVEhTID0gIiI7CiAJCQkJSU5TVEFMTF9Q
QVRIID0gIiQoSE9NRSkvYmluIjsKKwkJCQlMSUJSQVJZX1NFQVJDSF9QQVRIUyA9ICIiOwogCQkJ
CVBSRUJJTkRJTkcgPSBOTzsKIAkJCQlQUk9EVUNUX05BTUUgPSBzdmcycG5nOwogCQkJCVZFUlNJ
T05JTkdfU1lTVEVNID0gImFwcGxlLWdlbmVyaWMiOwpAQCAtMjE0LDEzICsyNDIsMTkgQEAKIAkJ
QThDMDA2MjgwODk3NTY5QTAwQkE1MTE0IC8qIERlZmF1bHQgKi8gPSB7CiAJCQlpc2EgPSBYQ0J1
aWxkQ29uZmlndXJhdGlvbjsKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJRlJBTUVXT1JLX1NF
QVJDSF9QQVRIUyA9ICgKKwkJCQkJLi4vLi4vV2ViS2l0QnVpbGQvRGVwbG95bWVudCwKKwkJCQkJ
L1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MsCisJCQkJKTsKIAkJCQlHQ0NfR0VORVJBVEVfREVC
VUdHSU5HX1NZTUJPTFMgPSBOTzsKIAkJCQlHQ0NfTU9ERUxfVFVOSU5HID0gRzU7CiAJCQkJR0ND
X1BSRUNPTVBJTEVfUFJFRklYX0hFQURFUiA9IFlFUzsKIAkJCQlHQ0NfUFJFRklYX0hFQURFUiA9
IHN2ZzJwbmdfUHJlZml4LnBjaDsKIAkJCQlHQ0NfV0FSTl9BQk9VVF9SRVRVUk5fVFlQRSA9IFlF
UzsKIAkJCQlHQ0NfV0FSTl9VTlVTRURfVkFSSUFCTEUgPSBZRVM7CisJCQkJSEVBREVSX1NFQVJD
SF9QQVRIUyA9ICIiOwogCQkJCUlOU1RBTExfUEFUSCA9ICIkKEhPTUUpL2JpbiI7CisJCQkJTElC
UkFSWV9TRUFSQ0hfUEFUSFMgPSAiIjsKIAkJCQlQUkVCSU5ESU5HID0gTk87CiAJCQkJUFJPRFVD
VF9OQU1FID0gc3ZnMnBuZzsKIAkJCQlWRVJTSU9OSU5HX1NZU1RFTSA9ICJhcHBsZS1nZW5lcmlj
IjsKLS0tIEltYWdlRGlmZi5oCTIwMDUtMDgtMDYgMDA6NDQ6NDYuMDAwMDAwMDAwIC0wNjAwCisr
KyBJbWFnZURpZmYuaAkyMDA1LTA4LTA2IDAwOjA3OjA2LjAwMDAwMDAwMCAtMDYwMApAQCAtMCww
ICsxLDMxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA1IEFwcGxlIENvbXB1dGVyLCBJbmMu
ICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworIAorLyogQXV0aG9yOiBCZW4gTGEgTW9uaWNh
IDxiZW4ubGFtb25pY2FAZ21haWwuY29tPiAqLworCisvLyBwcm90b3R5cGVzCitOU0JpdG1hcElt
YWdlUmVwICpvdXRwdXREaWZmQml0bWFwKE5TQml0bWFwSW1hZ2VSZXAgKnRlc3RCaXRtYXAsIE5T
Qml0bWFwSW1hZ2VSZXAgKnJlZmVyZW5jZUJpdG1hcCwgTlNTdHJpbmcgKmRpZmZPdXRwdXRQYXRo
KTsKK2Zsb2F0IGNvbXB1dGVQZXJjZW50YWdlRGlmZmVyZW50KE5TQml0bWFwSW1hZ2VSZXAgKmRp
ZmZCaXRtYXApOwordm9pZCBvdXRwdXRBbmltYXRlZEdJRihOU0JpdG1hcEltYWdlUmVwICpmaXJz
dEZyYW1lLCBOU0JpdG1hcEltYWdlUmVwICpzZWNvbmRGcmFtZSwgTlNTdHJpbmcgKmFuaW1hdGVk
R0lGUGF0aCk7Ci0tLSBJbWFnZURpZmYubQkyMDA1LTA4LTA2IDAwOjQ0OjQ2LjAwMDAwMDAwMCAt
MDYwMAorKysgSW1hZ2VEaWZmLm0JMjAwNS0wOC0wNiAwMDoxMjo0My4wMDAwMDAwMDAgLTA2MDAK
QEAgLTAsMCArMSwxMTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDUgQXBwbGUgQ29tcHV0
ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisgCisvKiBBdXRob3I6IEJlbiBM
YSBNb25pY2EgPGJlbi5sYW1vbmljYUBnbWFpbC5jb20+ICovCisgCisjaW1wb3J0IDxRdWFydHpD
b3JlL0NJRmlsdGVyLmg+CisjaW1wb3J0IDxRdWFydHpDb3JlL0NJSW1hZ2UuaD4KKyNpbXBvcnQg
PFF1YXJ0ekNvcmUvQ0lDb250ZXh0Lmg+CisjaW1wb3J0IDxBcHBLaXQvTlNCaXRtYXBJbWFnZVJl
cC5oPgorI2ltcG9ydCA8QXBwS2l0L05TR3JhcGhpY3NDb250ZXh0Lmg+CisjaW1wb3J0IDxBcHBL
aXQvTlNDSUltYWdlUmVwLmg+CisKKyNpbXBvcnQgIkltYWdlRGlmZi5oIgorCisvKioKKyAqIFRh
a2VzIGEgYml0bWFwIGFuZCBwZXJmb3JtcyBhIGRpZmZlcmVuY2UgYmxlbmQgd2l0aCBhIHJlZmVy
ZW5jZSAKKyAqIGltYWdlLiBJZiB0aGUgaW1hZ2VzIGFyZSBleGFjdGx5IHRoZSBzYW1lLCB0aGUg
ZGlmZkJpdG1hcCB3aWxsIAorICogYmUgc29saWQgYmxhY2suCisgKgorICogSXQgd2lsbCB3cml0
ZSB0aGlzIGRpZmZlcmVuY2UgYmxlbmRlZCBiaXRtYXAgdG8gYSBmaWxlLgorICogCisgKiBSZXR1
cm5zIHRoZSBkaWZmZXJlbmNlIGJpdG1hcAorICovCitOU0JpdG1hcEltYWdlUmVwICpvdXRwdXRE
aWZmQml0bWFwKE5TQml0bWFwSW1hZ2VSZXAgKnRlc3RCaXRtYXAsIE5TQml0bWFwSW1hZ2VSZXAg
KnJlZmVyZW5jZUJpdG1hcCwgTlNTdHJpbmcgKmRpZmZPdXRwdXRQYXRoKQoreworICAgIC8vIGNy
ZWF0ZSBhIG5ldyBncmFwaGljcyBjb250ZXh0IHRvIGRyYXcgb3VyIENJSW1hZ2Ugb24KKyAgICBO
U0JpdG1hcEltYWdlUmVwICpkaWZmQml0bWFwID0gW3Rlc3RCaXRtYXAgY29weV07CisgICAgTlNH
cmFwaGljc0NvbnRleHQgKm5zQ29udGV4dCA9IFtOU0dyYXBoaWNzQ29udGV4dCBncmFwaGljc0Nv
bnRleHRXaXRoQml0bWFwSW1hZ2VSZXA6ZGlmZkJpdG1hcF07CisgICAgQ0lJbWFnZSAqcmVmZXJl
bmNlSW1hZ2UgPSBbW0NJSW1hZ2UgYWxsb2NdIGluaXRXaXRoQml0bWFwSW1hZ2VSZXA6cmVmZXJl
bmNlQml0bWFwXTsKKyAgICBDSUltYWdlICp0ZXN0SW1hZ2UgPSBbW0NJSW1hZ2UgYWxsb2NdIGlu
aXRXaXRoQml0bWFwSW1hZ2VSZXA6dGVzdEJpdG1hcF07CisgICAgQ0lJbWFnZSAqZGlmZkltYWdl
ID0gbmlsOworICAgIENJRmlsdGVyICpkaWZmQmxlbmQgPSBbQ0lGaWx0ZXIgZmlsdGVyV2l0aE5h
bWU6QCJDSURpZmZlcmVuY2VCbGVuZE1vZGUiXTsKKworICAgIC8vIGdlbmVyYXRlIHRoZSBkaWZm
IGltYWdlCisgICAgW2RpZmZCbGVuZCBzZXRWYWx1ZTpyZWZlcmVuY2VJbWFnZSBmb3JLZXk6QCJp
bnB1dEltYWdlIl07CisgICAgW2RpZmZCbGVuZCBzZXRWYWx1ZTp0ZXN0SW1hZ2UgZm9yS2V5OkAi
aW5wdXRCYWNrZ3JvdW5kSW1hZ2UiXTsKKyAgICBkaWZmSW1hZ2UgPSBbZGlmZkJsZW5kIHZhbHVl
Rm9yS2V5OkAib3V0cHV0SW1hZ2UiXTsKKyAgICAKKyAgICAvLyBwcmVwYXJlIHRvIGRyYXcgdGhl
IGltYWdlLCBzYXZlIGN1cnJlbnQgc3RhdGUKKyAgICBbTlNHcmFwaGljc0NvbnRleHQgc2F2ZUdy
YXBoaWNzU3RhdGVdOworICAgIFtOU0dyYXBoaWNzQ29udGV4dCBzZXRDdXJyZW50Q29udGV4dDog
bnNDb250ZXh0XTsKKyAgICAKKyAgICAvLyBkcmF3IHRoZSBkaWZmZXJlbmNlIGltYWdlCisgICAg
W1tuc0NvbnRleHQgQ0lDb250ZXh0XSBkcmF3SW1hZ2U6ZGlmZkltYWdlIGF0UG9pbnQ6Q0dQb2lu
dFplcm8gZnJvbVJlY3Q6W2RpZmZJbWFnZSBleHRlbnRdXTsKKyAgICAKKyAgICAvLyByZXN0b3Jl
IHRoZSBwcmV2aW91cyBjb250ZXh0IGFuZCBzdGF0ZQorICAgIFtOU0dyYXBoaWNzQ29udGV4dCBy
ZXN0b3JlR3JhcGhpY3NTdGF0ZV07CisgICAgCisgICAgLy8gZ2V0IHRoZSByYXcgZGF0YSBmcm9t
IHRoZSBiaXRtYXAKKyAgICBOU0RhdGEgKnBuZ0RhdGEgPSBbZGlmZkJpdG1hcCByZXByZXNlbnRh
dGlvblVzaW5nVHlwZTpOU1BOR0ZpbGVUeXBlIHByb3BlcnRpZXM6bmlsXTsKKyAgICAKKyAgICAv
LyBwcmludCB0aGUgZGlmZiB0byBhIGZpbGUKKyAgICBbcG5nRGF0YSB3cml0ZVRvRmlsZTpkaWZm
T3V0cHV0UGF0aCBhdG9taWNhbGx5OllFU107CisgICAgCisgICAgW3JlZmVyZW5jZUltYWdlIHJl
bGVhc2VdOworICAgIFt0ZXN0SW1hZ2UgcmVsZWFzZV07CisgICAgCisgICAgcmV0dXJuIGRpZmZC
aXRtYXA7Cit9CisKKy8qKgorICogQ291bnRzIHRoZSBudW1iZXIgb2Ygbm9uLWJsYWNrIHBpeGVs
cywgYW5kIHJldHVybnMgdGhlIHBlcmNlbnRhZ2UKKyAqIG9mIG5vbi1ibGFjayBwaXhlbHMgdG8g
dG90YWwgcGl4ZWxzIGluIHRoZSBpbWFnZS4KKyAqLworZmxvYXQgY29tcHV0ZVBlcmNlbnRhZ2VE
aWZmZXJlbnQoTlNCaXRtYXBJbWFnZVJlcCAqZGlmZkJpdG1hcCkKK3sKKyAgICBpbnQgdG90YWxQ
aXhlbHMgPSBbZGlmZkJpdG1hcCBwaXhlbHNIaWdoXSAqIFtkaWZmQml0bWFwIHBpeGVsc1dpZGVd
OworICAgIGludCB0b3RhbEJ5dGVzID0gW2RpZmZCaXRtYXAgYnl0ZXNQZXJSb3ddICogW2RpZmZC
aXRtYXAgcGl4ZWxzSGlnaF07CisgICAgdW5zaWduZWQgY2hhciAqYml0bWFwRGF0YSA9IFtkaWZm
Qml0bWFwIGJpdG1hcERhdGFdOworICAgIGludCBkaWZmZXJlbmNlcyA9IDA7CisgICAgCisgICAg
Zm9yIChpbnQgaSA9IDA7IGkgPCB0b3RhbEJ5dGVzOyBpICs9IDQpIHsKKyAgICAgICAgaWYgKCoo
Yml0bWFwRGF0YSArIGkpICE9IDAgfHwgKihiaXRtYXBEYXRhICsgaSArIDEpICE9IDAgfHwgKihi
aXRtYXBEYXRhICsgaSArIDIpICE9IDApCisgICAgICAgICAgICBkaWZmZXJlbmNlcysrOworICAg
IH0KKyAgICAKKyAgICByZXR1cm4gKGRpZmZlcmVuY2VzICogMTAwLjApL3RvdGFsUGl4ZWxzOwor
fQorCit2b2lkIG91dHB1dEFuaW1hdGVkR0lGKE5TQml0bWFwSW1hZ2VSZXAgKmZpcnN0RnJhbWUs
IE5TQml0bWFwSW1hZ2VSZXAgKnNlY29uZEZyYW1lLCBOU1N0cmluZyAqYW5pbWF0ZWRHSUZQYXRo
KQoreworICAgIE5TTXV0YWJsZUFycmF5ICpmcmFtZXMgPSBbTlNNdXRhYmxlQXJyYXkgYXJyYXlX
aXRoQ2FwYWNpdHk6Ml07CisgICAgTlNNdXRhYmxlRGljdGlvbmFyeSAqZ2lmUHJvcGVydGllcyA9
IFtOU011dGFibGVEaWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRoT2JqZWN0OltOU051bWJlciBudW1i
ZXJXaXRoQm9vbDpZRVNdIGZvcktleTpOU0ltYWdlRGl0aGVyVHJhbnNwYXJlbmN5XTsKKyAgICBb
Z2lmUHJvcGVydGllcyBzZXRPYmplY3Q6W05TTnVtYmVyIG51bWJlcldpdGhJbnQ6MF0gZm9yS2V5
Ok5TSW1hZ2VMb29wQ291bnRdOworICAgIFtmcmFtZXMgYWRkT2JqZWN0OmZpcnN0RnJhbWVdOwor
ICAgIFtmcmFtZXMgYWRkT2JqZWN0OnNlY29uZEZyYW1lXTsKKyAgICBOU0RhdGEgKmdpZkRhdGEg
PSBbTlNCaXRtYXBJbWFnZVJlcCByZXByZXNlbnRhdGlvbk9mSW1hZ2VSZXBzSW5BcnJheTpmcmFt
ZXMgdXNpbmdUeXBlOk5TR0lGRmlsZVR5cGUgcHJvcGVydGllczpnaWZQcm9wZXJ0aWVzXTsKKyAg
ICBbZ2lmRGF0YSB3cml0ZVRvRmlsZTphbmltYXRlZEdJRlBhdGggYXRvbWljYWxseTpZRVNdOwor
fSAKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCg==
</data>
<flag name="review"
          id="317"
          type_id="1"
          status="-"
          setter="eric"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>3238</attachid>
            <date>2005-08-06 02:41:10 -0700</date>
            <delta_ts>2005-08-07 02:50:51 -0700</delta_ts>
            <desc>Fixed the issues that were discussed in IRC</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>25868</size>
            <attacher name="Ben La Monica">ben.lamonica</attacher>
            
              <data encoding="base64">SW5kZXg6IHN2ZzJwbmcubQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvV2ViS2l0VG9v
bHMvc3ZnMnBuZy9zdmcycG5nLm0sdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMQpkaWZmIC11IC1y
MS4xIHN2ZzJwbmcubQotLS0gc3ZnMnBuZy5tCTI5IEp1bCAyMDA1IDA1OjI2OjA3IC0wMDAwCTEu
MQorKysgc3ZnMnBuZy5tCTYgQXVnIDIwMDUgMDk6MzY6MTUgLTAwMDAKQEAgLTI1LDYgKzI1LDcg
QEAKIAogI2ltcG9ydCA8V2ViQ29yZStTVkcvRHJhd0RvY3VtZW50UHJpdmF0ZS5oPgogI2ltcG9y
dCA8V2ViQ29yZStTVkcvRHJhd1ZpZXcuaD4KKyNpbXBvcnQgIkltYWdlRGlmZi5oIgogCiBleHRl
cm4gY29uc3QgZG91YmxlIHN2ZzJwbmdWZXJzaW9uTnVtYmVyOwogZXh0ZXJuIGNvbnN0IHVuc2ln
bmVkIGNoYXIgc3ZnMnBuZ1ZlcnNpb25TdHJpbmdbXTsKQEAgLTMzLDE2ICszNCwyNSBAQAogewog
ICAgIHByaW50ZigiVXNhZ2U6ICVzIFtvcHRpb25zXSBmaWxlW3NdXG4iLCBuYW1lKTsKICAgICBw
cmludGYoIk9wdGlvbnM6XG4iKTsKLSAgICBwcmludGYoIiAgLS12ZXJzaW9uXHRcdFx0UHJpbnRz
IGZ1bGwgdmVyc2lvbiAoJS4xZikgaW5mb3JtYXRpb24gYW5kIGV4aXRzLlxuIiwgc3ZnMnBuZ1Zl
cnNpb25OdW1iZXIpOwotICAgIHByaW50ZigiICAtLW91dHB1dCA8b3V0cHV0ZmlsZT4gZHVtcCBh
IHBuZyBjb3B5IG9mIGEgc2luZ2xlIHN2ZyBpbnB1dCBmaWxlIHRvIHRoZSBuYW1lZCBwYXRoXG4i
KTsKLSAgICBwcmludGYoIiAgLS1zdWZmaXggPHN1ZmZpeD4gYXBwZW5kIDxzdWZmaXg+IHRvIGVh
Y2ggb3V0cHV0IGZpbGUgZS5nLiA8aW5wdXRuYW1lPjxzdWZmaXg+LnBuZ1xuIik7CisgICAgcHJp
bnRmKCIgIC0tdmVyc2lvblx0XHRcdFByaW50cyBmdWxsIHZlcnNpb24gKCUuMWYpIGluZm9ybWF0
aW9uIGFuZCBleGl0c1xuIiwgc3ZnMnBuZ1ZlcnNpb25OdW1iZXIpOworICAgIHByaW50ZigiICAt
LW1heC13aWR0aCA8aW50Plx0XHRzZXRzIHRoZSB3aWR0aCBvZiB0aGUgb3V0cHV0IHBuZ1xuIik7
CisgICAgcHJpbnRmKCIgIC0tbWF4LWhlaWdodCA8aW50Plx0XHRzZXRzIHRoZSBoZWlnaHQgb2Yg
dGhlIG91dHB1dCBwbmdcbiIpOworICAgIHByaW50ZigiICAtLWJhc2VsaW5lLXN1ZmZpeCA8c3Vm
Zml4Plx0dGhlIHN1ZmZpeCBvbiB0aGUgcmVmZXJlbmNlIHZlcnNpb24gb2YgYSBwaWN0dXJlXG4i
KTsKKyAgICBwcmludGYoIiAgLS1vdXRwdXQgPG91dHB1dGZpbGU+XHRcdGR1bXAgYSBwbmcgY29w
eSBvZiBhIHNpbmdsZSBzdmcgaW5wdXQgZmlsZVxuXHRcdFx0XHR0byB0aGUgbmFtZWQgcGF0aFxu
Iik7CisgICAgcHJpbnRmKCIgIC0tc3VmZml4IDxzdWZmaXg+XHRcdGFwcGVuZCA8c3VmZml4PiB0
byBlYWNoIG91dHB1dCBmaWxlXG5cdFx0XHRcdGUuZy4gPGlucHV0bmFtZT48c3VmZml4Pi5wbmdc
blxuIik7CiAgICAgcHJpbnRmKCJXaGVuIC0tb3V0cHV0IGlzIG5vdCBzcGVjaWZpZWQsIG91dHB1
dCBmaWxlcyBhcmUgY3JlYXRlZCBpbiB0aGUgc2FtZSBkaXJlY3RvcnlcbiIpOwotICAgIHByaW50
ZigiYXMgdGhlIG9yaWdpbmFsIHNvdXJjZSBmaWxlcyBlLmcuIDxzb3VyY2UgZGlyZWN0b3J5Pi88
ZmlsZW5hbWU+PHN1ZmZpeD4ucG5nIik7CisgICAgcHJpbnRmKCJhcyB0aGUgb3JpZ2luYWwgc291
cmNlIGZpbGVzIGUuZy4gPHNvdXJjZSBkaXJlY3Rvcnk+LzxmaWxlbmFtZT48c3VmZml4Pi5wbmdc
biIpOworICAgIHByaW50ZigiXG5XaGVuIC0tYmFzZWxpbmUtc3VmZml4IGlzIHNwZWNpZmllZCwg
c3ZnMnBuZyB3aWxsIGxvb2sgZm9yIGEgUE5HIGZpbGUgdGhhdFxuIik7CisgICAgcHJpbnRmKCJj
b250YWlucyBhbiBleGFtcGxlIG9mIHdoYXQgdGhlIFNWRyBzaG91bGQgbG9vayBsaWtlIHdoZW4g
cmVuZGVyZWQuIEl0IHdpbGxcbiIpOworICAgIHByaW50ZigiY3JlYXRlIGEgPGZpbGVuYW1lPjxz
dWZmaXg+LWRpZmYucG5nIGZpbGUgdG8gc2hvdyB0aGVzZSBkaWZmZXJlbmNlcy5cblxuIik7IAog
ICAgIGV4aXQoMSk7CiB9OwogCi12b2lkIG91dHB1dFBORyhOU1N0cmluZyAqc3ZnUGF0aCwgTlNT
dHJpbmcgKnBuZ1BhdGgpCitOU0JpdG1hcEltYWdlUmVwICpnZXRCaXRtYXBGb3JTVkcoTlNTdHJp
bmcgKnN2Z1BhdGgsIGludCBtYXhXaWR0aCwgaW50IG1heEhlaWdodCkKIHsKKyAgICBCT09MIGlz
TWF4SGVpZ2h0U3BlY2lmaWVkID0gTk87CisgICAgQk9PTCBpc01heFdpZHRoU3BlY2lmaWVkID0g
Tk87CisgICAgCiAgICAgLy8gbG9hZCB0aGUgZ2l2ZW4gZG9jdW1lbnQKICAgICBEcmF3RG9jdW1l
bnQgKmRvY3VtZW50ID0gW1tEcmF3RG9jdW1lbnQgYWxsb2NdIGluaXRXaXRoQ29udGVudHNPZkZp
bGU6c3ZnUGF0aF07CiAgICAgCkBAIC01MSwyNCArNjEsNDAgQEAKICAgICBbdmlldyBzZXREb2N1
bWVudDpkb2N1bWVudF07CiAgICAgW3ZpZXcgc2l6ZVRvRml0Vmlld0JveF07CiAgICAgCi0gICAg
Ly8gTXkgbWF4aW11bSA1MDB4NTAwIHNpemUgaGFjazoKKyAgICBpZiAobWF4V2lkdGggPiAwKQor
ICAgICAgICBpc01heFdpZHRoU3BlY2lmaWVkID0gWUVTOworICAgICAgICAKKyAgICBpZiAobWF4
SGVpZ2h0ID4gMCkKKyAgICAgICAgaXNNYXhIZWlnaHRTcGVjaWZpZWQgPSBZRVM7CisgICAgCisg
ICAgLy8gTGltaXQgdGhlIG1heGltdW0gc2l6ZSwgYW5kIGRlZmF1bHQgdGhlIHNpemUgdG8gNTAw
eDUwMCBpZiBub3Qgc3BlY2lmaWVkCiAgICAgTlNTaXplIGJvdW5kc1NpemUgPSBbdmlldyBib3Vu
ZHNdLnNpemU7Ci0gICAgaWYgKGJvdW5kc1NpemUud2lkdGggPiA1MDApCisgICAgaWYgKGlzTWF4
V2lkdGhTcGVjaWZpZWQgJiYgYm91bmRzU2l6ZS53aWR0aCA+IG1heFdpZHRoKSB7CisgICAgICAg
IC8vIHJlc2l6ZSB0aGUgaGVpZ2h0IHNvIHRoYXQgdGhlIGFzcGVjdCByYXRpbyByZW1haW5zIHRo
ZSBzYW1lCisgICAgICAgIGJvdW5kc1NpemUuaGVpZ2h0ID0gKGJvdW5kc1NpemUuaGVpZ2h0IC8g
Ym91bmRzU2l6ZS53aWR0aCkgKiBtYXhXaWR0aDsKKyAgICAgICAgYm91bmRzU2l6ZS53aWR0aCA9
IG1heFdpZHRoOworICAgIH0KKyAgICBlbHNlIGlmIChib3VuZHNTaXplLndpZHRoIDw9IDApCiAg
ICAgICAgIGJvdW5kc1NpemUud2lkdGggPSA1MDA7Ci0gICAgaWYgKGJvdW5kc1NpemUuaGVpZ2h0
ID4gNTAwKQorICAgICAgICAKKyAgICBpZiAoaXNNYXhIZWlnaHRTcGVjaWZpZWQgJiYgYm91bmRz
U2l6ZS5oZWlnaHQgPiBtYXhIZWlnaHQpIHsKKyAgICAgICAgLy8gcmVzaXplIHRoZSB3aWR0aCBz
byB0aGF0IHRoZSBhc3BlY3QgcmF0aW8gcmVhbWlucyB0aGUgc2FtZQorICAgICAgICBib3VuZHNT
aXplLndpZHRoID0gKGJvdW5kc1NpemUud2lkdGggLyBib3VuZHNTaXplLmhlaWdodCkgKiBtYXhI
ZWlnaHQ7CisgICAgICAgIGJvdW5kc1NpemUuaGVpZ2h0ID0gbWF4SGVpZ2h0OworICAgIH0KKyAg
ICBlbHNlIGlmIChib3VuZHNTaXplLmhlaWdodCA8PSAwKQogICAgICAgICBib3VuZHNTaXplLmhl
aWdodCA9IDUwMDsKKyAgICAKICAgICBbdmlldyBzZXRGcmFtZVNpemU6Ym91bmRzU2l6ZV07CiAg
ICAgCiAgICAgLy8gdGVsbCB0aGF0IHZpZXcgdG8gcmVuZGVyCiAgICAgTlNCaXRtYXBJbWFnZVJl
cCAqaW1hZ2VSZXAgPSBbdmlldyBiaXRtYXBJbWFnZVJlcEZvckNhY2hpbmdEaXNwbGF5SW5SZWN0
Olt2aWV3IGJvdW5kc11dOwogICAgIFt2aWV3IGNhY2hlRGlzcGxheUluUmVjdDpbdmlldyBib3Vu
ZHNdIHRvQml0bWFwSW1hZ2VSZXA6aW1hZ2VSZXBdOwogICAgIAotICAgIC8vIG91dHB1dCB0aGUg
cmVzdWx0aW5nIGltYWdlCi0gICAgTlNEYXRhICpwbmdEYXRhID0gW2ltYWdlUmVwIHJlcHJlc2Vu
dGF0aW9uVXNpbmdUeXBlOk5TUE5HRmlsZVR5cGUgcHJvcGVydGllczpuaWxdOwotICAgIFtwbmdE
YXRhIHdyaXRlVG9GaWxlOnN2Z1BhdGggYXRvbWljYWxseTpZRVNdOwotICAgIAogICAgIFt2aWV3
IHJlbGVhc2VdOyAvLyBzaG91bGQgYmUgc2luZ2xldG9uLgogICAgIFtkb2N1bWVudCByZWxlYXNl
XTsKKyAgICAKKyAgICByZXR1cm4gaW1hZ2VSZXA7CiB9CiAKIGludCBtYWluIChpbnQgYXJnYywg
Y29uc3QgY2hhciAqYXJndltdKQpAQCAtNzksNiArMTA1LDkgQEAKICAgICBjb25zdCBjaGFyICpu
YW1lID0gW1tbTlNTdHJpbmcgc3RyaW5nV2l0aFVURjhTdHJpbmc6YXJndlswXV0gbGFzdFBhdGhD
b21wb25lbnRdIFVURjhTdHJpbmddOwogICAgIE5TU3RyaW5nICpleHBsaWNpdE91dHB1dFBhdGgg
PSBuaWw7CiAgICAgTlNTdHJpbmcgKm91dHB1dFN1ZmZpeCA9IG5pbDsKKyAgICBOU1N0cmluZyAq
YmFzZWxpbmVTdWZmaXggPSBuaWw7CisgICAgaW50IG1heFdpZHRoID0gMDsKKyAgICBpbnQgbWF4
SGVpZ2h0ID0gMDsKICAgICAKICAgICBmb3IoaW50IHggPSAxOyB4IDwgYXJnYzsgeCsrKSB7CiAg
ICAgICAgIGNvbnN0IGNoYXIgKmFyZyA9IGFyZ3ZbeF07CkBAIC05NCwxMCArMTIzLDEwIEBACiAg
ICAgICAgICAgICAgICAgaWYgKHggKyAxIDwgYXJnYykgewogICAgICAgICAgICAgICAgICAgICBl
eHBsaWNpdE91dHB1dFBhdGggPSBbTlNTdHJpbmcgc3RyaW5nV2l0aFVURjhTdHJpbmc6YXJndlt4
KzFdXTsKICAgICAgICAgICAgICAgICAgICAgaWYgKFtleHBsaWNpdE91dHB1dFBhdGggaGFzUHJl
Zml4OkAiLS0iXSkKLSAgICAgICAgICAgICAgICAgICAgICAgIE5TTG9nKEAiV0FSTklORzogZGlk
IHlvdSByZWFsbHkgbWVhbiB0byBvdXRwdXQgdG86ICVAICBPciBkaWQgeW91IGp1c3QgZm9yZ2V0
IHRoZSAtLW91dHB1dCA8ZmlsZW5hbWU+IGFyZ3VtZW50PyIsIGV4cGxpY2l0T3V0cHV0UGF0aCk7
CisgICAgICAgICAgICAgICAgICAgICAgICBwcmludGYoIldBUk5JTkc6IGRpZCB5b3UgcmVhbGx5
IG1lYW4gdG8gb3V0cHV0IHRvOiAlcyAgT3IgZGlkIHlvdSBqdXN0IGZvcmdldCB0aGUgLS1vdXRw
dXQgPGZpbGVuYW1lPiBhcmd1bWVudD9cbiIsIFtleHBsaWNpdE91dHB1dFBhdGggY1N0cmluZ10p
OwogICAgICAgICAgICAgICAgICAgICB4Kys7IC8vIHRvIHNraXAgdGhlIG5leHQgYXJnCiAgICAg
ICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgTlNMb2coQCItLW91dHB1
dCByZXF1aXJlcyBhbiBhcmd1bWVudC4iKTsKKyAgICAgICAgICAgICAgICAgICAgcHJpbnRmKCIt
LW91dHB1dCByZXF1aXJlcyBhbiBhcmd1bWVudC5cbiIpOwogICAgICAgICAgICAgICAgICAgICB1
c2FnZShuYW1lKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9ICBlbHNlIGlmIChb
YXJnU3RyaW5nIGlzRXF1YWxUb1N0cmluZzpAIi0tc3VmZml4Il0pIHsKQEAgLTEwNSwxNiArMTM0
LDQ4IEBACiAgICAgICAgICAgICAgICAgICAgIG91dHB1dFN1ZmZpeCA9IFtOU1N0cmluZyBzdHJp
bmdXaXRoVVRGOFN0cmluZzphcmd2W3grMV1dOwogICAgICAgICAgICAgICAgICAgICB4Kys7IC8v
IHRvIHNraXAgdGhlIG5leHQgYXJnCiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAg
ICAgICAgICAgICAgTlNMb2coQCItLXN1ZmZpeCByZXF1aXJlcyBhbiBhcmd1bWVudC4iKTsKKyAg
ICAgICAgICAgICAgICAgICAgcHJpbnRmKCItLXN1ZmZpeCByZXF1aXJlcyBhbiBhcmd1bWVudC5c
biIpOworICAgICAgICAgICAgICAgICAgICB1c2FnZShuYW1lKTsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICB9IGVsc2UgaWYgKFthcmdTdHJpbmcgaXNFcXVhbFRvU3RyaW5nOkAiLS1t
YXgtd2lkdGgiXSkgeworICAgICAgICAgICAgICAgIGlmICh4ICsgMSA8IGFyZ2MpIHsKKyAgICAg
ICAgICAgICAgICAgICAgbWF4V2lkdGggPSBbW05TU3RyaW5nIHN0cmluZ1dpdGhVVEY4U3RyaW5n
OmFyZ3ZbeCsxXV0gaW50VmFsdWVdOworICAgICAgICAgICAgICAgICAgICBpZiAobWF4V2lkdGgg
PD0gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRmKCItLW1heC13aWR0aCBtdXN0
IGJlIGFuIGludGVnZXIgPiAwXG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHVzYWdlKG5h
bWUpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIHgrKzsgLy8g
c2tpcCB0byB0aGUgbmV4dCBhcmcKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgICAgICAgICBwcmludGYoIi0tbWF4LXdpZHRoIHJlcXVpcmVzIGFuIGludGVnZXIgYXJndW1l
bnQuXG4iKTsKKyAgICAgICAgICAgICAgICAgICAgdXNhZ2UobmFtZSk7CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgfSBlbHNlIGlmIChbYXJnU3RyaW5nIGlzRXF1YWxUb1N0cmluZzpA
Ii0tbWF4LWhlaWdodCJdKSB7CisgICAgICAgICAgICAgICAgaWYgKHggKyAxIDwgYXJnYykgewor
ICAgICAgICAgICAgICAgICAgICBtYXhIZWlnaHQgPSBbW05TU3RyaW5nIHN0cmluZ1dpdGhVVEY4
U3RyaW5nOmFyZ3ZbeCsxXV0gaW50VmFsdWVdOworICAgICAgICAgICAgICAgICAgICBpZiAobWF4
SGVpZ2h0IDw9IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHByaW50ZigiLS1tYXgtaGVp
Z2h0IG11c3QgYmUgYW4gaW50ZWdlciA+IDBcbiIpOworICAgICAgICAgICAgICAgICAgICAgICAg
dXNhZ2UobmFtZSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAg
eCsrOyAvLyBza2lwIHRvIHRoZSBuZXh0IGFyZworICAgICAgICAgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICAgICAgICAgIHByaW50ZigiLS1tYXgtaGVpZ2h0IHJlcXVpcmVzIGFuIGludGVn
ZXIgPiAwXG4iKTsKKyAgICAgICAgICAgICAgICAgICAgdXNhZ2UobmFtZSk7CisgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIGlmIChbYXJnU3RyaW5nIGlzRXF1YWxUb1N0cmlu
ZzpAIi0tYmFzZWxpbmUtc3VmZml4Il0pIHsKKyAgICAgICAgICAgICAgICBpZih4ICsgMSA8IGFy
Z2MpIHsKKyAgICAgICAgICAgICAgICAgICAgYmFzZWxpbmVTdWZmaXggPSBbTlNTdHJpbmcgc3Ry
aW5nV2l0aFVURjhTdHJpbmc6YXJndlt4KzFdXTsKKyAgICAgICAgICAgICAgICAgICAgeCsrOyAv
LyBza2lwIHRvIHRoZSBuZXh0IGFyZworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICAgICAgICAgIHByaW50ZigiLS1iYXNlbGluZS1zdWZmaXggcmVxdWlyZXMgdGhlIHN1ZmZp
eCBmb3IgdGhlIHJlZmVyZW5jZSBQTkdzLlxuIik7CiAgICAgICAgICAgICAgICAgICAgIHVzYWdl
KG5hbWUpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAg
ICAgICAgICAgcHJpbnRmKCJVbnJlY29nbml6ZWQgb3B0aW9uICVAXG4iLCBhcmdTdHJpbmcpOwor
ICAgICAgICAgICAgICAgIHByaW50ZigiVW5yZWNvZ25pemVkIG9wdGlvbiAlc1xuIiwgW2FyZ1N0
cmluZyBjU3RyaW5nXSk7CiAgICAgICAgICAgICAgICAgdXNhZ2UobmFtZSk7CiAgICAgICAgICAg
ICB9CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBpZiAoIVtbTlNGaWxlTWFuYWdlciBk
ZWZhdWx0TWFuYWdlcl0gZmlsZUV4aXN0c0F0UGF0aDpbYXJnU3RyaW5nIHN0cmluZ0J5U3RhbmRh
cmRpemluZ1BhdGhdXSkgewotICAgICAgICAgICAgICAgIHByaW50ZigiU1ZHIGRvZXMgbm90IGV4
aXN0IGF0IHBhdGg6ICVAXG4iLCBhcmdTdHJpbmcpOworICAgICAgICAgICAgICAgIHByaW50Zigi
U1ZHIGRvZXMgbm90IGV4aXN0IGF0IHBhdGg6ICVzXG4iLCBbYXJnU3RyaW5nIGNTdHJpbmddKTsK
ICAgICAgICAgICAgICAgICBleGl0KDEpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgW3N2
Z3MgYWRkT2JqZWN0OmFyZ1N0cmluZ107CkBAIC0xMzEsMjMgKzE5Miw1OSBAQAogICAgICAgICB1
c2FnZShuYW1lKTsKICAgICB9CiAgICAgCisgICAgCiAgICAgTlNTdHJpbmcgKnN2Z1BhdGggPSBu
aWw7CiAgICAgZm9yZWFjaGFycmF5KHN2Z1BhdGgsIHN2Z3MpIHsKLSAgICAgICAgTlNTdHJpbmcg
KnBuZ1BhdGggPSBuaWw7CisgICAgICAgIE5TQml0bWFwSW1hZ2VSZXAgKnN2Z0JpdG1hcCA9IG5p
bDsKKyAgICAgICAgTlNTdHJpbmcgKnN2Z1BOR1BhdGggPSBuaWw7CisgICAgICAgIAogICAgICAg
ICBpZiAoZXhwbGljaXRPdXRwdXRQYXRoKQotICAgICAgICAgICAgcG5nUGF0aCA9IGV4cGxpY2l0
T3V0cHV0UGF0aDsKKyAgICAgICAgICAgIHN2Z1BOR1BhdGggPSBleHBsaWNpdE91dHB1dFBhdGg7
CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgcG5nUGF0aCA9IFtzdmdQYXRoIHN0cmluZ0J5
RGVsZXRpbmdQYXRoRXh0ZW5zaW9uXTsKKyAgICAgICAgICAgIHN2Z1BOR1BhdGggPSBbc3ZnUGF0
aCBzdHJpbmdCeURlbGV0aW5nUGF0aEV4dGVuc2lvbl07CiAgICAgICAgICAgICBpZiAob3V0cHV0
U3VmZml4KQotICAgICAgICAgICAgICAgIHBuZ1BhdGggPSBbcG5nUGF0aCBzdHJpbmdCeUFwcGVu
ZGluZ1N0cmluZzpvdXRwdXRTdWZmaXhdOwotICAgICAgICAgICAgcG5nUGF0aCA9IFtwbmdQYXRo
IHN0cmluZ0J5QXBwZW5kaW5nUGF0aEV4dGVuc2lvbjpAInBuZyJdOworICAgICAgICAgICAgICAg
IHN2Z1BOR1BhdGggPSBbc3ZnUE5HUGF0aCBzdHJpbmdCeUFwcGVuZGluZ1N0cmluZzpvdXRwdXRT
dWZmaXhdOworICAgICAgICAgICAgc3ZnUE5HUGF0aCA9IFtzdmdQTkdQYXRoIHN0cmluZ0J5QXBw
ZW5kaW5nUGF0aEV4dGVuc2lvbjpAInBuZyJdOworICAgICAgICB9CisgICAgICAgIAorICAgICAg
ICAvLyBnZW5lcmF0ZSB0aGUgU1ZHLCBzYXZlIHRoZSBiaXRtYXAgZGF0YSBmb3IgdGhlIGRpZmYK
KyAgICAgICAgc3ZnQml0bWFwID0gZ2V0Qml0bWFwRm9yU1ZHKHN2Z1BhdGgsIG1heFdpZHRoLCBt
YXhIZWlnaHQpOworICAgICAgICAKKyAgICAgICAgLy8gb3V0cHV0IHRoZSByZXN1bHRpbmcgU1ZH
IHRvIGEgUE5HIGZpbGUKKyAgICAgICAgTlNEYXRhICpzdmdQTkdEYXRhID0gW3N2Z0JpdG1hcCBy
ZXByZXNlbnRhdGlvblVzaW5nVHlwZTpOU1BOR0ZpbGVUeXBlIHByb3BlcnRpZXM6bmlsXTsKKyAg
ICAgICAgW3N2Z1BOR0RhdGEgd3JpdGVUb0ZpbGU6c3ZnUE5HUGF0aCBhdG9taWNhbGx5OllFU107
CisgICAgICAgIAorICAgICAgICBpZiAoYmFzZWxpbmVTdWZmaXgpIHsKKyAgICAgICAgICAgIE5T
U3RyaW5nICpkaWZmSW1hZ2VQYXRoID0gW1tbc3ZnUE5HUGF0aCBzdHJpbmdCeURlbGV0aW5nUGF0
aEV4dGVuc2lvbl0KKyAgICAgICAgICAgICAgICBzdHJpbmdCeUFwcGVuZGluZ1N0cmluZzpAIi1k
aWZmIl0KKyAgICAgICAgICAgICAgICBzdHJpbmdCeUFwcGVuZGluZ1BhdGhFeHRlbnNpb246QCJw
bmciXTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgTlNTdHJpbmcgKmJhc2VsaW5lSW1hZ2VQ
YXRoID0gW1tbc3ZnUGF0aCBzdHJpbmdCeURlbGV0aW5nUGF0aEV4dGVuc2lvbl0KKyAgICAgICAg
ICAgICAgICBzdHJpbmdCeUFwcGVuZGluZ1N0cmluZzpiYXNlbGluZVN1ZmZpeF0KKyAgICAgICAg
ICAgICAgICBzdHJpbmdCeUFwcGVuZGluZ1BhdGhFeHRlbnNpb246QCJwbmciXTsKKworICAgICAg
ICAgICAgTlNTdHJpbmcgKmFuaW1hdGVkR0lGUGF0aCA9IFtbc3ZnUE5HUGF0aCBzdHJpbmdCeURl
bGV0aW5nUGF0aEV4dGVuc2lvbl0KKyAgICAgICAgICAgICAgICBzdHJpbmdCeUFwcGVuZGluZ1Bh
dGhFeHRlbnNpb246QCJnaWYiXTsKKworICAgICAgICAgICAgLy8gY29tcGFyZQorICAgICAgICAg
ICAgTlNCaXRtYXBJbWFnZVJlcCAqcmVmZXJlbmNlQml0bWFwID0gW05TQml0bWFwSW1hZ2VSZXAg
aW1hZ2VSZXBXaXRoQ29udGVudHNPZlVSTDpbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOmJhc2VsaW5l
SW1hZ2VQYXRoXV07CisgICAgICAgICAgICBOU0JpdG1hcEltYWdlUmVwICpkaWZmQml0bWFwID0g
Z2V0RGlmZmVyZW5jZUJpdG1hcChzdmdCaXRtYXAscmVmZXJlbmNlQml0bWFwKTsKKworICAgICAg
ICAgICAgLy8gb3V0cHV0IHRoZSByZXN1bHRpbmcgU1ZHIHRvIGEgUE5HIGZpbGUKKyAgICAgICAg
ICAgIE5TRGF0YSAqZGlmZlBOR0RhdGEgPSBbZGlmZkJpdG1hcCByZXByZXNlbnRhdGlvblVzaW5n
VHlwZTpOU1BOR0ZpbGVUeXBlIHByb3BlcnRpZXM6bmlsXTsKKyAgICAgICAgICAgIFtkaWZmUE5H
RGF0YSB3cml0ZVRvRmlsZTpkaWZmSW1hZ2VQYXRoIGF0b21pY2FsbHk6WUVTXTsKKworICAgICAg
ICAgICAgLy8gc2F2ZSB0aGUgcmVmZXJlbmNlIGFuZCB0aGUgc3ZnIGltYWdlcyBpbiBhbiBhbmlt
YXRlZCBHSUYKKyAgICAgICAgICAgIHNhdmVBbmltYXRlZEdJRlRvRmlsZShzdmdCaXRtYXAscmVm
ZXJlbmNlQml0bWFwLGFuaW1hdGVkR0lGUGF0aCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAg
IGZsb2F0IHBlcmNlbnRhZ2UgPSBjb21wdXRlUGVyY2VudGFnZURpZmZlcmVudChkaWZmQml0bWFw
KTsKKyAgICAgICAgICAgIHByaW50ZigiJXNcdCUzLjNmJSVcdCVzXG4iLCBbc3ZnUGF0aCBjU3Ry
aW5nXSwgcGVyY2VudGFnZSwgKHBlcmNlbnRhZ2UgPiAxID8gIkZhaWxlZC4iIDogIlBhc3NlZC4i
KSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIFtkaWZmQml0bWFwIHJlbGVhc2VdOwogICAg
ICAgICB9Ci0gICAgICAgIG91dHB1dFBORyhzdmdQYXRoLCBwbmdQYXRoKTsKICAgICB9CiAgICAg
CiAgICAgW3Bvb2wgZHJhaW5dOwogICAgIAogICAgIHJldHVybiAwOwogfQotCi0KSW5kZXg6IHN2
ZzJwbmcueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3Zz
L3Jvb3QvV2ViS2l0VG9vbHMvc3ZnMnBuZy9zdmcycG5nLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2osdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMQpkaWZmIC11IC1yMS4xIHByb2plY3QucGJ4cHJv
agotLS0gc3ZnMnBuZy54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCTI5IEp1bCAyMDA1IDA1OjI2
OjA3IC0wMDAwCTEuMQorKysgc3ZnMnBuZy54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCTYgQXVn
IDIwMDUgMDk6MzY6MTYgLTAwMDAKQEAgLTEwLDYgKzEwLDExIEBACiAJCThERDc2RjlBMDQ4NkFB
NzYwMEQ5NkI1RSAvKiBzdmcycG5nLm0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwOEZCNzc5NkZFODQxNTVEQzAyQUFDMDcgLyogc3ZnMnBuZy5tICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKCk7IH07IH07CiAJCThERDc2RjlDMDQ4NkFBNzYwMEQ5
NkI1RSAvKiBGb3VuZGF0aW9uLmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4RkI3NzlFRkU4NDE1NURDMDJBQUMwNyAvKiBGb3VuZGF0
aW9uLmZyYW1ld29yayAqLzsgfTsKIAkJQTg5OEY3OTUwODgyNEI0QTAwNzVFRkIyIC8qIFdlYkNv
cmUrU1ZHLmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEE4OThGNzk0MDg4MjRCNEEwMDc1RUZCMiAvKiBXZWJDb3JlK1NWRy5mcmFtZXdv
cmsgKi87IH07CisJCUI1MEQ5QUZCMDhBMDA0ODUwMEVDRjc4MiAvKiBRdWFydHpDb3JlLmZyYW1l
d29yayBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEI1
MEQ5QUZBMDhBMDA0ODUwMEVDRjc4MiAvKiBRdWFydHpDb3JlLmZyYW1ld29yayAqLzsgfTsKKwkJ
QjU1NTk4ODkwOEEzNDFFMzAwMUVCNUZEIC8qIEltYWdlRGlmZi5tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjU1NTk4ODgwOEEzNDFFMzAwMUVCNUZEIC8q
IEltYWdlRGlmZi5tICovOyB9OworCQlCNTU1OThBRTA4QTM0NDBCMDAxRUI1RkQgLyogSW1hZ2VE
aWZmLmggaW4gQ29weUZpbGVzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEI1
NTU5OEFEMDhBMzQ0MEIwMDFFQjVGRCAvKiBJbWFnZURpZmYuaCAqLzsgfTsKKwkJQjU5RjU4RkMw
OEExRDFDQTAwQkUyNjY0IC8qIEFwcEtpdC5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCNTlGNThGQjA4QTFEMUNBMDBCRTI2NjQgLyog
QXBwS2l0LmZyYW1ld29yayAqLzsgfTsKKwkJQjVEOTI1QTMwOEE0Qjg3NzAwQkM5NEY2IC8qIHN2
ZzJwbmcgaW4gQ29weUZpbGVzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDhE
RDc2RkExMDQ4NkFBNzYwMEQ5NkI1RSAvKiBzdmcycG5nICovOyB9OwogLyogRW5kIFBCWEJ1aWxk
RmlsZSBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWEJ1aWxkU3R5bGUgc2VjdGlvbiAqLwpAQCAt
NDMsMTcgKzQ4LDIzIEBACiAJCQlkc3RQYXRoID0gL3Vzci9zaGFyZS9tYW4vbWFuMS87CiAJCQlk
c3RTdWJmb2xkZXJTcGVjID0gMDsKIAkJCWZpbGVzID0gKAorCQkJCUI1NTU5OEFFMDhBMzQ0MEIw
MDFFQjVGRCAvKiBJbWFnZURpZmYuaCBpbiBDb3B5RmlsZXMgKi8sCisJCQkJQjVEOTI1QTMwOEE0
Qjg3NzAwQkM5NEY2IC8qIHN2ZzJwbmcgaW4gQ29weUZpbGVzICovLAogCQkJKTsKIAkJCXJ1bk9u
bHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAxOwogCQl9OwogLyogRW5kIFBCWENvcHlG
aWxlc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhGaWxlUmVmZXJlbmNlIHNl
Y3Rpb24gKi8KLQkJMDhGQjc3OTZGRTg0MTU1REMwMkFBQzA3IC8qIHN2ZzJwbmcubSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5vYmpjOyBwYXRoID0gc3ZnMnBuZy5tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkwOEZCNzc5NkZFODQxNTVEQzAyQUFDMDcgLyogc3ZnMnBuZy5tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGluZGVudFdpZHRoID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMub2JqYzsgcGF0aCA9IHN2ZzJwbmcu
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA0OyB1c2VzVGFicyA9IDA7IH07
CiAJCTA4RkI3NzlFRkU4NDE1NURDMDJBQUMwNyAvKiBGb3VuZGF0aW9uLmZyYW1ld29yayAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHdyYXBwZXIuZnJh
bWV3b3JrOyBuYW1lID0gRm91bmRhdGlvbi5mcmFtZXdvcms7IHBhdGggPSAvU3lzdGVtL0xpYnJh
cnkvRnJhbWV3b3Jrcy9Gb3VuZGF0aW9uLmZyYW1ld29yazsgc291cmNlVHJlZSA9ICI8YWJzb2x1
dGU+IjsgfTsKIAkJMzJBNzBBQUIwMzcwNUUxRjAwQzkxNzgzIC8qIHN2ZzJwbmdfUHJlZml4LnBj
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gc3ZnMnBuZ19QcmVmaXgucGNoOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4REQ3NkZBMTA0ODZBQTc2MDBEOTZCNUUgLyog
c3ZnMnBuZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBleHBsaWNpdEZpbGVUeXBlID0g
ImNvbXBpbGVkLm1hY2gtby5leGVjdXRhYmxlIjsgaW5jbHVkZUluSW5kZXggPSAwOyBwYXRoID0g
c3ZnMnBuZzsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKLQkJQTg5OEY3OTQw
ODgyNEI0QTAwNzVFRkIyIC8qIFdlYkNvcmUrU1ZHLmZyYW1ld29yayAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHdyYXBwZXIuZnJhbWV3b3JrOyBwYXRo
ID0gIldlYkNvcmUrU1ZHLmZyYW1ld29yayI7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19E
SVI7IH07CisJCUE4OThGNzk0MDg4MjRCNEEwMDc1RUZCMiAvKiBXZWJDb3JlK1NWRy5mcmFtZXdv
cmsgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB3cmFw
cGVyLmZyYW1ld29yazsgbmFtZSA9ICJXZWJDb3JlK1NWRy5mcmFtZXdvcmsiOyBwYXRoID0gIi4u
Ly4uLy4uLy4uL1dlYktpdEJ1aWxkL0RlcGxveW1lbnQvV2ViQ29yZStTVkcuZnJhbWV3b3JrIjsg
c291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKKwkJQjUwRDlBRkEwOEEwMDQ4NTAw
RUNGNzgyIC8qIFF1YXJ0ekNvcmUuZnJhbWV3b3JrICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gd3JhcHBlci5mcmFtZXdvcms7IG5hbWUgPSBRdWFydHpD
b3JlLmZyYW1ld29yazsgcGF0aCA9IC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1F1YXJ0ekNv
cmUuZnJhbWV3b3JrOyBzb3VyY2VUcmVlID0gIjxhYnNvbHV0ZT4iOyB9OworCQlCNTU1OTg4ODA4
QTM0MUUzMDAxRUI1RkQgLyogSW1hZ2VEaWZmLm0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMub2Jq
YzsgcGF0aCA9IEltYWdlRGlmZi5tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCNTU1
OThBRDA4QTM0NDBCMDAxRUI1RkQgLyogSW1hZ2VEaWZmLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEltYWdlRGlmZi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlC
NTlGNThGQjA4QTFEMUNBMDBCRTI2NjQgLyogQXBwS2l0LmZyYW1ld29yayAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHdyYXBwZXIuZnJhbWV3b3JrOyBu
YW1lID0gQXBwS2l0LmZyYW1ld29yazsgcGF0aCA9IC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtz
L0FwcEtpdC5mcmFtZXdvcms7IHNvdXJjZVRyZWUgPSAiPGFic29sdXRlPiI7IH07CiAvKiBFbmQg
UEJYRmlsZVJlZmVyZW5jZSBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWEZyYW1ld29ya3NCdWls
ZFBoYXNlIHNlY3Rpb24gKi8KQEAgLTYzLDYgKzc0LDggQEAKIAkJCWZpbGVzID0gKAogCQkJCThE
RDc2RjlDMDQ4NkFBNzYwMEQ5NkI1RSAvKiBGb3VuZGF0aW9uLmZyYW1ld29yayBpbiBGcmFtZXdv
cmtzICovLAogCQkJCUE4OThGNzk1MDg4MjRCNEEwMDc1RUZCMiAvKiBXZWJDb3JlK1NWRy5mcmFt
ZXdvcmsgaW4gRnJhbWV3b3JrcyAqLywKKwkJCQlCNTBEOUFGQjA4QTAwNDg1MDBFQ0Y3ODIgLyog
UXVhcnR6Q29yZS5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLywKKwkJCQlCNTlGNThGQzA4QTFE
MUNBMDBCRTI2NjQgLyogQXBwS2l0LmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovLAogCQkJKTsK
IAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtODQs
NiArOTcsOCBAQAogCQkJY2hpbGRyZW4gPSAoCiAJCQkJMzJBNzBBQUIwMzcwNUUxRjAwQzkxNzgz
IC8qIHN2ZzJwbmdfUHJlZml4LnBjaCAqLywKIAkJCQkwOEZCNzc5NkZFODQxNTVEQzAyQUFDMDcg
Lyogc3ZnMnBuZy5tICovLAorCQkJCUI1NTU5ODg4MDhBMzQxRTMwMDFFQjVGRCAvKiBJbWFnZURp
ZmYubSAqLywKKwkJCQlCNTU1OThBRDA4QTM0NDBCMDAxRUI1RkQgLyogSW1hZ2VEaWZmLmggKi8s
CiAJCQkpOwogCQkJbmFtZSA9IFNvdXJjZTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBA
IC05MSw2ICsxMDYsOCBAQAogCQkwOEZCNzc5REZFODQxNTVEQzAyQUFDMDcgLyogRXh0ZXJuYWwg
RnJhbWV3b3JrcyBhbmQgTGlicmFyaWVzICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQlj
aGlsZHJlbiA9ICgKKwkJCQlCNTlGNThGQjA4QTFEMUNBMDBCRTI2NjQgLyogQXBwS2l0LmZyYW1l
d29yayAqLywKKwkJCQlCNTBEOUFGQTA4QTAwNDg1MDBFQ0Y3ODIgLyogUXVhcnR6Q29yZS5mcmFt
ZXdvcmsgKi8sCiAJCQkJQTg5OEY3OTQwODgyNEI0QTAwNzVFRkIyIC8qIFdlYkNvcmUrU1ZHLmZy
YW1ld29yayAqLywKIAkJCQkwOEZCNzc5RUZFODQxNTVEQzAyQUFDMDcgLyogRm91bmRhdGlvbi5m
cmFtZXdvcmsgKi8sCiAJCQkpOwpAQCAtMTY1LDYgKzE4Miw3IEBACiAJCQlidWlsZEFjdGlvbk1h
c2sgPSAyMTQ3NDgzNjQ3OwogCQkJZmlsZXMgPSAoCiAJCQkJOERENzZGOUEwNDg2QUE3NjAwRDk2
QjVFIC8qIHN2ZzJwbmcubSBpbiBTb3VyY2VzICovLAorCQkJCUI1NTU5ODg5MDhBMzQxRTMwMDFF
QjVGRCAvKiBJbWFnZURpZmYubSBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JE
ZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMTc1LDYgKzE5MywxMCBAQAog
CQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CiAJCQlidWlsZFNldHRpbmdzID0gewogCQkJ
CUNPUFlfUEhBU0VfU1RSSVAgPSBOTzsKKwkJCQlGUkFNRVdPUktfU0VBUkNIX1BBVEhTID0gKAor
CQkJCQkuLi8uLi9XZWJLaXRCdWlsZC9EZXBsb3ltZW50LAorCQkJCQkvU3lzdGVtL0xpYnJhcnkv
RnJhbWV3b3JrcywKKwkJCQkpOwogCQkJCUdDQ19EWU5BTUlDX05PX1BJQyA9IE5POwogCQkJCUdD
Q19FTkFCTEVfRklYX0FORF9DT05USU5VRSA9IFlFUzsKIAkJCQlHQ0NfR0VORVJBVEVfREVCVUdH
SU5HX1NZTUJPTFMgPSBZRVM7CkBAIC0xODQsNyArMjA2LDkgQEAKIAkJCQlHQ0NfUFJFRklYX0hF
QURFUiA9IHN2ZzJwbmdfUHJlZml4LnBjaDsKIAkJCQlHQ0NfV0FSTl9BQk9VVF9SRVRVUk5fVFlQ
RSA9IFlFUzsKIAkJCQlHQ0NfV0FSTl9VTlVTRURfVkFSSUFCTEUgPSBZRVM7CisJCQkJSEVBREVS
X1NFQVJDSF9QQVRIUyA9ICIiOwogCQkJCUlOU1RBTExfUEFUSCA9ICIkKEhPTUUpL2JpbiI7CisJ
CQkJTElCUkFSWV9TRUFSQ0hfUEFUSFMgPSAiIjsKIAkJCQlQUkVCSU5ESU5HID0gTk87CiAJCQkJ
UFJPRFVDVF9OQU1FID0gc3ZnMnBuZzsKIAkJCQlWRVJTSU9OSU5HX1NZU1RFTSA9ICJhcHBsZS1n
ZW5lcmljIjsKQEAgLTE5Niw2ICsyMjAsMTAgQEAKIAkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0
aW9uOwogCQkJYnVpbGRTZXR0aW5ncyA9IHsKIAkJCQlDT1BZX1BIQVNFX1NUUklQID0gWUVTOwor
CQkJCUZSQU1FV09SS19TRUFSQ0hfUEFUSFMgPSAoCisJCQkJCS4uLy4uL1dlYktpdEJ1aWxkL0Rl
cGxveW1lbnQsCisJCQkJCS9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzLAorCQkJCSk7CiAJCQkJ
R0NDX0VOQUJMRV9GSVhfQU5EX0NPTlRJTlVFID0gTk87CiAJCQkJR0NDX0dFTkVSQVRFX0RFQlVH
R0lOR19TWU1CT0xTID0gTk87CiAJCQkJR0NDX01PREVMX1RVTklORyA9IEc1OwpAQCAtMjAzLDcg
KzIzMSw5IEBACiAJCQkJR0NDX1BSRUZJWF9IRUFERVIgPSBzdmcycG5nX1ByZWZpeC5wY2g7CiAJ
CQkJR0NDX1dBUk5fQUJPVVRfUkVUVVJOX1RZUEUgPSBZRVM7CiAJCQkJR0NDX1dBUk5fVU5VU0VE
X1ZBUklBQkxFID0gWUVTOworCQkJCUhFQURFUl9TRUFSQ0hfUEFUSFMgPSAiIjsKIAkJCQlJTlNU
QUxMX1BBVEggPSAiJChIT01FKS9iaW4iOworCQkJCUxJQlJBUllfU0VBUkNIX1BBVEhTID0gIiI7
CiAJCQkJUFJFQklORElORyA9IE5POwogCQkJCVBST0RVQ1RfTkFNRSA9IHN2ZzJwbmc7CiAJCQkJ
VkVSU0lPTklOR19TWVNURU0gPSAiYXBwbGUtZ2VuZXJpYyI7CkBAIC0yMTQsMTMgKzI0NCwxOSBA
QAogCQlBOEMwMDYyODA4OTc1NjlBMDBCQTUxMTQgLyogRGVmYXVsdCAqLyA9IHsKIAkJCWlzYSA9
IFhDQnVpbGRDb25maWd1cmF0aW9uOwogCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlGUkFNRVdP
UktfU0VBUkNIX1BBVEhTID0gKAorCQkJCQkuLi8uLi9XZWJLaXRCdWlsZC9EZXBsb3ltZW50LAor
CQkJCQkvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3JrcywKKwkJCQkpOwogCQkJCUdDQ19HRU5FUkFU
RV9ERUJVR0dJTkdfU1lNQk9MUyA9IE5POwogCQkJCUdDQ19NT0RFTF9UVU5JTkcgPSBHNTsKIAkJ
CQlHQ0NfUFJFQ09NUElMRV9QUkVGSVhfSEVBREVSID0gWUVTOwogCQkJCUdDQ19QUkVGSVhfSEVB
REVSID0gc3ZnMnBuZ19QcmVmaXgucGNoOwogCQkJCUdDQ19XQVJOX0FCT1VUX1JFVFVSTl9UWVBF
ID0gWUVTOwogCQkJCUdDQ19XQVJOX1VOVVNFRF9WQVJJQUJMRSA9IFlFUzsKKwkJCQlIRUFERVJf
U0VBUkNIX1BBVEhTID0gIiI7CiAJCQkJSU5TVEFMTF9QQVRIID0gIiQoSE9NRSkvYmluIjsKKwkJ
CQlMSUJSQVJZX1NFQVJDSF9QQVRIUyA9ICIiOwogCQkJCVBSRUJJTkRJTkcgPSBOTzsKIAkJCQlQ
Uk9EVUNUX05BTUUgPSBzdmcycG5nOwogCQkJCVZFUlNJT05JTkdfU1lTVEVNID0gImFwcGxlLWdl
bmVyaWMiOwpAQCAtMjMwLDYgKzI2Niw3IEBACiAJCUE4QzAwNjJBMDg5NzU2OUEwMEJBNTExNCAv
KiBEZXZlbG9wbWVudCAqLyA9IHsKIAkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9uOwogCQkJ
YnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlGUkFNRVdPUktfU0VBUkNIX1BBVEhTID0gLi4vLi4vLi4v
Li4vV2ViS2l0QnVpbGQvRGVwbG95bWVudDsKIAkJCQlHQ0NfQ19MQU5HVUFHRV9TVEFOREFSRCA9
IGdudTk5OwogCQkJCUdDQ19UUkVBVF9XQVJOSU5HU19BU19FUlJPUlMgPSBZRVM7CiAJCQkJVkVS
U0lPTklOR19TWVNURU0gPSAiYXBwbGUtZ2VuZXJpYyI7CkBAIC0yMzksNiArMjc2LDcgQEAKIAkJ
QThDMDA2MkIwODk3NTY5QTAwQkE1MTE0IC8qIERlcGxveW1lbnQgKi8gPSB7CiAJCQlpc2EgPSBY
Q0J1aWxkQ29uZmlndXJhdGlvbjsKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJRlJBTUVXT1JL
X1NFQVJDSF9QQVRIUyA9IC4uLy4uLy4uLy4uL1dlYktpdEJ1aWxkL0RlcGxveW1lbnQ7CiAJCQkJ
R0NDX0NfTEFOR1VBR0VfU1RBTkRBUkQgPSBnbnU5OTsKIAkJCQlHQ0NfVFJFQVRfV0FSTklOR1Nf
QVNfRVJST1JTID0gWUVTOwogCQkJCVZFUlNJT05JTkdfU1lTVEVNID0gImFwcGxlLWdlbmVyaWMi
OwpAQCAtMjQ4LDYgKzI4Niw3IEBACiAJCUE4QzAwNjJDMDg5NzU2OUEwMEJBNTExNCAvKiBEZWZh
dWx0ICovID0gewogCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CiAJCQlidWlsZFNldHRp
bmdzID0geworCQkJCUZSQU1FV09SS19TRUFSQ0hfUEFUSFMgPSAuLi8uLi8uLi8uLi9XZWJLaXRC
dWlsZC9EZXBsb3ltZW50OwogCQkJCUdDQ19DX0xBTkdVQUdFX1NUQU5EQVJEID0gZ251OTk7CiAJ
CQkJR0NDX1RSRUFUX1dBUk5JTkdTX0FTX0VSUk9SUyA9IFlFUzsKIAkJCQlWRVJTSU9OSU5HX1NZ
U1RFTSA9ICJhcHBsZS1nZW5lcmljIjsKLS0tIEltYWdlRGlmZi5oCTIwMDUtMDgtMDYgMDM6MzM6
MTcuMDAwMDAwMDAwIC0wNjAwCisrKyBJbWFnZURpZmYuaAkyMDA1LTA4LTA2IDAyOjEwOjUzLjAw
MDAwMDAwMCAtMDYwMApAQCAtMCwwICsxLDI5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA1
IEJlbiBMYSBNb25pY2EgPGJlbi5sYW1vbmljYUBnbWFpbC5jb20+LiAgQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBB
VVRIT1IgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKy8vIHBy
b3RvdHlwZXMKK05TQml0bWFwSW1hZ2VSZXAgKmdldERpZmZlcmVuY2VCaXRtYXAoTlNCaXRtYXBJ
bWFnZVJlcCAqdGVzdEJpdG1hcCwgTlNCaXRtYXBJbWFnZVJlcCAqcmVmZXJlbmNlQml0bWFwKTsK
K2Zsb2F0IGNvbXB1dGVQZXJjZW50YWdlRGlmZmVyZW50KE5TQml0bWFwSW1hZ2VSZXAgKmRpZmZC
aXRtYXApOwordm9pZCBzYXZlQW5pbWF0ZWRHSUZUb0ZpbGUoTlNCaXRtYXBJbWFnZVJlcCAqZmly
c3RGcmFtZSwgTlNCaXRtYXBJbWFnZVJlcCAqc2Vjb25kRnJhbWUsIE5TU3RyaW5nICphbmltYXRl
ZEdJRlBhdGgpOwotLS0gSW1hZ2VEaWZmLm0JMjAwNS0wOC0wNiAwMzozMzoxNy4wMDAwMDAwMDAg
LTA2MDAKKysrIEltYWdlRGlmZi5tCTIwMDUtMDgtMDYgMDI6MTA6NDIuMDAwMDAwMDAwIC0wNjAw
CkBAIC0wLDAgKzEsMTA5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA1IEJlbiBMYSBNb25p
Y2EgPGJlbi5sYW1vbmljYUBnbWFpbC5jb20+LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisgCisjaW1wb3J0IDxRdWFydHpD
b3JlL0NJRmlsdGVyLmg+CisjaW1wb3J0IDxRdWFydHpDb3JlL0NJSW1hZ2UuaD4KKyNpbXBvcnQg
PFF1YXJ0ekNvcmUvQ0lDb250ZXh0Lmg+CisjaW1wb3J0IDxBcHBLaXQvTlNCaXRtYXBJbWFnZVJl
cC5oPgorI2ltcG9ydCA8QXBwS2l0L05TR3JhcGhpY3NDb250ZXh0Lmg+CisjaW1wb3J0IDxBcHBL
aXQvTlNDSUltYWdlUmVwLmg+CisKKyNpbXBvcnQgIkltYWdlRGlmZi5oIgorCisvKioKKyAqIFRh
a2VzIGEgYml0bWFwIGFuZCBwZXJmb3JtcyBhIGRpZmZlcmVuY2UgYmxlbmQgd2l0aCBhIHJlZmVy
ZW5jZSAKKyAqIGltYWdlLiBJZiB0aGUgaW1hZ2VzIGFyZSBleGFjdGx5IHRoZSBzYW1lLCB0aGUg
ZGlmZkJpdG1hcCB3aWxsIAorICogYmUgc29saWQgYmxhY2suCisgKgorICogSXQgd2lsbCB3cml0
ZSB0aGlzIGRpZmZlcmVuY2UgYmxlbmRlZCBiaXRtYXAgdG8gYSBmaWxlLgorICogCisgKiBSZXR1
cm5zIHRoZSBkaWZmZXJlbmNlIGJpdG1hcAorICovCitOU0JpdG1hcEltYWdlUmVwICpnZXREaWZm
ZXJlbmNlQml0bWFwKE5TQml0bWFwSW1hZ2VSZXAgKnRlc3RCaXRtYXAsIE5TQml0bWFwSW1hZ2VS
ZXAgKnJlZmVyZW5jZUJpdG1hcCkKK3sKKyAgICAvLyBjcmVhdGUgYSBuZXcgZ3JhcGhpY3MgY29u
dGV4dCB0byBkcmF3IG91ciBDSUltYWdlIG9uCisgICAgTlNCaXRtYXBJbWFnZVJlcCAqZGlmZkJp
dG1hcCA9IFt0ZXN0Qml0bWFwIGNvcHldOworICAgIE5TR3JhcGhpY3NDb250ZXh0ICpuc0NvbnRl
eHQgPSBbTlNHcmFwaGljc0NvbnRleHQgZ3JhcGhpY3NDb250ZXh0V2l0aEJpdG1hcEltYWdlUmVw
OmRpZmZCaXRtYXBdOworICAgIENJSW1hZ2UgKnJlZmVyZW5jZUltYWdlID0gW1tDSUltYWdlIGFs
bG9jXSBpbml0V2l0aEJpdG1hcEltYWdlUmVwOnJlZmVyZW5jZUJpdG1hcF07CisgICAgQ0lJbWFn
ZSAqdGVzdEltYWdlID0gW1tDSUltYWdlIGFsbG9jXSBpbml0V2l0aEJpdG1hcEltYWdlUmVwOnRl
c3RCaXRtYXBdOworICAgIENJSW1hZ2UgKmRpZmZJbWFnZSA9IG5pbDsKKyAgICBDSUZpbHRlciAq
ZGlmZkJsZW5kID0gW0NJRmlsdGVyIGZpbHRlcldpdGhOYW1lOkAiQ0lEaWZmZXJlbmNlQmxlbmRN
b2RlIl07CisKKyAgICAvLyBnZW5lcmF0ZSB0aGUgZGlmZiBpbWFnZQorICAgIFtkaWZmQmxlbmQg
c2V0VmFsdWU6cmVmZXJlbmNlSW1hZ2UgZm9yS2V5OkAiaW5wdXRJbWFnZSJdOworICAgIFtkaWZm
QmxlbmQgc2V0VmFsdWU6dGVzdEltYWdlIGZvcktleTpAImlucHV0QmFja2dyb3VuZEltYWdlIl07
CisgICAgZGlmZkltYWdlID0gW2RpZmZCbGVuZCB2YWx1ZUZvcktleTpAIm91dHB1dEltYWdlIl07
CisgICAgCisgICAgLy8gcHJlcGFyZSB0byBkcmF3IHRoZSBpbWFnZSwgc2F2ZSBjdXJyZW50IHN0
YXRlCisgICAgW05TR3JhcGhpY3NDb250ZXh0IHNhdmVHcmFwaGljc1N0YXRlXTsKKyAgICBbTlNH
cmFwaGljc0NvbnRleHQgc2V0Q3VycmVudENvbnRleHQ6IG5zQ29udGV4dF07CisgICAgCisgICAg
Ly8gZHJhdyB0aGUgZGlmZmVyZW5jZSBpbWFnZQorICAgIFtbbnNDb250ZXh0IENJQ29udGV4dF0g
ZHJhd0ltYWdlOmRpZmZJbWFnZSBhdFBvaW50OkNHUG9pbnRaZXJvIGZyb21SZWN0OltkaWZmSW1h
Z2UgZXh0ZW50XV07CisgICAgCisgICAgLy8gcmVzdG9yZSB0aGUgcHJldmlvdXMgY29udGV4dCBh
bmQgc3RhdGUKKyAgICBbTlNHcmFwaGljc0NvbnRleHQgcmVzdG9yZUdyYXBoaWNzU3RhdGVdOwor
ICAgICAgICAKKyAgICBbcmVmZXJlbmNlSW1hZ2UgcmVsZWFzZV07CisgICAgW3Rlc3RJbWFnZSBy
ZWxlYXNlXTsKKyAgICAKKyAgICByZXR1cm4gZGlmZkJpdG1hcDsKK30KKworLyoqCisgKiBDb3Vu
dHMgdGhlIG51bWJlciBvZiBub24tYmxhY2sgcGl4ZWxzLCBhbmQgcmV0dXJucyB0aGUgcGVyY2Vu
dGFnZQorICogb2Ygbm9uLWJsYWNrIHBpeGVscyB0byB0b3RhbCBwaXhlbHMgaW4gdGhlIGltYWdl
LgorICovCitmbG9hdCBjb21wdXRlUGVyY2VudGFnZURpZmZlcmVudChOU0JpdG1hcEltYWdlUmVw
ICpkaWZmQml0bWFwKQoreworICAgIGludCB0b3RhbFBpeGVscyA9IFtkaWZmQml0bWFwIHBpeGVs
c0hpZ2hdICogW2RpZmZCaXRtYXAgcGl4ZWxzV2lkZV07CisgICAgaW50IHRvdGFsQnl0ZXMgPSBb
ZGlmZkJpdG1hcCBieXRlc1BlclBsYW5lXTsKKyAgICB1bnNpZ25lZCBjaGFyICpiaXRtYXBEYXRh
ID0gW2RpZmZCaXRtYXAgYml0bWFwRGF0YV07CisgICAgaW50IGRpZmZlcmVuY2VzID0gMDsKKyAg
ICAKKyAgICAvLyBOT1RFOiBUaGlzIG1heSBub3QgYmUgc2FmZSB3aGVuIHN3aXRjaGluZyBiZXR3
ZWVuIEVORElBTiB0eXBlcworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgdG90YWxCeXRlczsgaSAr
PSA0KSB7CisgICAgICAgIGlmICgqKGJpdG1hcERhdGEgKyBpKSAhPSAwIHx8ICooYml0bWFwRGF0
YSArIGkgKyAxKSAhPSAwIHx8ICooYml0bWFwRGF0YSArIGkgKyAyKSAhPSAwKQorICAgICAgICAg
ICAgZGlmZmVyZW5jZXMrKzsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIChkaWZmZXJlbmNlcyAq
IDEwMC4wKS90b3RhbFBpeGVsczsKK30KKworLyoqCisgKiBUYWtlcyB0d28gaW1hZ2VzIGFuZCBw
bGFjZXMgdGhlbSBpbiBhbiBhbmltYXRlZCBHSUYuCisgKgorICogVE9ETzogR2V0IHRoZSBpbWFn
ZXMgdG8gbG9vcCBmb3JldmVyIHdpdGggYSAxIHNlYyBkZWxheS4KKyAqLwordm9pZCBzYXZlQW5p
bWF0ZWRHSUZUb0ZpbGUoTlNCaXRtYXBJbWFnZVJlcCAqZmlyc3RGcmFtZSwgTlNCaXRtYXBJbWFn
ZVJlcCAqc2Vjb25kRnJhbWUsIE5TU3RyaW5nICphbmltYXRlZEdJRlBhdGgpCit7CisgICAgTlNN
dXRhYmxlQXJyYXkgKmZyYW1lcyA9IFtOU011dGFibGVBcnJheSBhcnJheVdpdGhDYXBhY2l0eToy
XTsKKyAgICBOU011dGFibGVEaWN0aW9uYXJ5ICpnaWZQcm9wZXJ0aWVzID0gW05TTXV0YWJsZURp
Y3Rpb25hcnkgZGljdGlvbmFyeVdpdGhPYmplY3Q6W05TTnVtYmVyIG51bWJlcldpdGhCb29sOllF
U10gZm9yS2V5Ok5TSW1hZ2VEaXRoZXJUcmFuc3BhcmVuY3ldOworICAgIFtnaWZQcm9wZXJ0aWVz
IHNldE9iamVjdDpbTlNOdW1iZXIgbnVtYmVyV2l0aEludDowXSBmb3JLZXk6TlNJbWFnZUxvb3BD
b3VudF07CisgICAgW2ZyYW1lcyBhZGRPYmplY3Q6Zmlyc3RGcmFtZV07CisgICAgW2ZyYW1lcyBh
ZGRPYmplY3Q6c2Vjb25kRnJhbWVdOworICAgIE5TRGF0YSAqZ2lmRGF0YSA9IFtOU0JpdG1hcElt
YWdlUmVwIHJlcHJlc2VudGF0aW9uT2ZJbWFnZVJlcHNJbkFycmF5OmZyYW1lcyB1c2luZ1R5cGU6
TlNHSUZGaWxlVHlwZSBwcm9wZXJ0aWVzOmdpZlByb3BlcnRpZXNdOworICAgIFtnaWZEYXRhIHdy
aXRlVG9GaWxlOmFuaW1hdGVkR0lGUGF0aCBhdG9taWNhbGx5OllFU107Cit9IAo=
</data>
<flag name="review"
          id="319"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>3260</attachid>
            <date>2005-08-07 02:50:51 -0700</date>
            <delta_ts>2005-08-07 13:48:44 -0700</delta_ts>
            <desc>Fixed changes, added output-dir and baseline-dir</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>30468</size>
            <attacher name="Ben La Monica">ben.lamonica</attacher>
            
              <data encoding="base64">SW5kZXg6IHN2ZzJwbmcubQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvV2ViS2l0VG9v
bHMvc3ZnMnBuZy9zdmcycG5nLm0sdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMQpkaWZmIC11IC1y
MS4xIHN2ZzJwbmcubQotLS0gc3ZnMnBuZy5tCTI5IEp1bCAyMDA1IDA1OjI2OjA3IC0wMDAwCTEu
MQorKysgc3ZnMnBuZy5tCTcgQXVnIDIwMDUgMDk6NDM6MDQgLTAwMDAKQEAgLTI1LDI0ICsyNSw0
MCBAQAogCiAjaW1wb3J0IDxXZWJDb3JlK1NWRy9EcmF3RG9jdW1lbnRQcml2YXRlLmg+CiAjaW1w
b3J0IDxXZWJDb3JlK1NWRy9EcmF3Vmlldy5oPgorI2ltcG9ydCAiSW1hZ2VEaWZmLmgiCiAKIGV4
dGVybiBjb25zdCBkb3VibGUgc3ZnMnBuZ1ZlcnNpb25OdW1iZXI7CiBleHRlcm4gY29uc3QgdW5z
aWduZWQgY2hhciBzdmcycG5nVmVyc2lvblN0cmluZ1tdOwogCisvKiBnbG9iYWwgdmFyaWFibGVz
ICovCitCT09MIGlzTWF4SGVpZ2h0U3BlY2lmaWVkID0gTk87CitCT09MIGlzTWF4V2lkdGhTcGVj
aWZpZWQgPSBOTzsKK2ludCBtYXhXaWR0aCA9IDA7CitpbnQgbWF4SGVpZ2h0ID0gMDsKKwogdm9p
ZCB1c2FnZShjb25zdCBjaGFyICpuYW1lKQogewogICAgIHByaW50ZigiVXNhZ2U6ICVzIFtvcHRp
b25zXSBmaWxlW3NdXG4iLCBuYW1lKTsKICAgICBwcmludGYoIk9wdGlvbnM6XG4iKTsKLSAgICBw
cmludGYoIiAgLS12ZXJzaW9uXHRcdFx0UHJpbnRzIGZ1bGwgdmVyc2lvbiAoJS4xZikgaW5mb3Jt
YXRpb24gYW5kIGV4aXRzLlxuIiwgc3ZnMnBuZ1ZlcnNpb25OdW1iZXIpOwotICAgIHByaW50Zigi
ICAtLW91dHB1dCA8b3V0cHV0ZmlsZT4gZHVtcCBhIHBuZyBjb3B5IG9mIGEgc2luZ2xlIHN2ZyBp
bnB1dCBmaWxlIHRvIHRoZSBuYW1lZCBwYXRoXG4iKTsKLSAgICBwcmludGYoIiAgLS1zdWZmaXgg
PHN1ZmZpeD4gYXBwZW5kIDxzdWZmaXg+IHRvIGVhY2ggb3V0cHV0IGZpbGUgZS5nLiA8aW5wdXRu
YW1lPjxzdWZmaXg+LnBuZ1xuIik7CisgICAgcHJpbnRmKCIgIC0tYmFzZWxpbmUtZGlyIDxkaXJl
Y3Rvcnk+XHR0aGUgZGlyZWN0b3J5IHdoZXJlIHRoZSBiYXNlbGluZXMgYXJlIHN0b3JlZFxuIik7
CisgICAgcHJpbnRmKCIgIC0tYmFzZWxpbmUtc3VmZml4IDxzdWZmaXg+XHR0aGUgc3VmZml4IG9u
IHRoZSByZWZlcmVuY2UgdmVyc2lvbiBvZiBhIHBpY3R1cmVcbiIpOworICAgIHByaW50ZigiICAt
LW1heC13aWR0aCA8aW50Plx0XHRzZXRzIHRoZSB3aWR0aCBvZiB0aGUgb3V0cHV0IHBuZ1xuIik7
CisgICAgcHJpbnRmKCIgIC0tbWF4LWhlaWdodCA8aW50Plx0XHRzZXRzIHRoZSBoZWlnaHQgb2Yg
dGhlIG91dHB1dCBwbmdcbiIpOworICAgIHByaW50ZigiICAtLW91dHB1dCA8b3V0cHV0ZmlsZT5c
dFx0ZHVtcCBhIHBuZyBjb3B5IG9mIGEgc2luZ2xlIHN2ZyBpbnB1dCBmaWxlXG5cdFx0XHRcdHRv
IHRoZSBuYW1lZCBwYXRoXG4iKTsKKyAgICBwcmludGYoIiAgLS1vdXRwdXQtZGlyIDxkaXJlY3Rv
cnk+XHR0aGUgZGlyZWN0b3J5IHdoZXJlIGFsbCBmaWxlcyBhcmUgb3V0cHV0IHRvXG4iKTsKKyAg
ICBwcmludGYoIiAgLS1zdWZmaXggPHN1ZmZpeD5cdFx0YXBwZW5kIDxzdWZmaXg+IHRvIGVhY2gg
b3V0cHV0IGZpbGVcblx0XHRcdFx0ZS5nLiA8aW5wdXRuYW1lPjxzdWZmaXg+LnBuZ1xuXG4iKTsK
KyAgICBwcmludGYoIiAgLS12ZXJzaW9uXHRcdFx0UHJpbnRzIGZ1bGwgdmVyc2lvbiAoJS4xZikg
aW5mb3JtYXRpb24gYW5kIGV4aXRzXG4iLCBzdmcycG5nVmVyc2lvbk51bWJlcik7CiAgICAgcHJp
bnRmKCJXaGVuIC0tb3V0cHV0IGlzIG5vdCBzcGVjaWZpZWQsIG91dHB1dCBmaWxlcyBhcmUgY3Jl
YXRlZCBpbiB0aGUgc2FtZSBkaXJlY3RvcnlcbiIpOwotICAgIHByaW50ZigiYXMgdGhlIG9yaWdp
bmFsIHNvdXJjZSBmaWxlcyBlLmcuIDxzb3VyY2UgZGlyZWN0b3J5Pi88ZmlsZW5hbWU+PHN1ZmZp
eD4ucG5nIik7CisgICAgcHJpbnRmKCJhcyB0aGUgb3JpZ2luYWwgc291cmNlIGZpbGVzIGUuZy4g
PHNvdXJjZSBkaXJlY3Rvcnk+LzxmaWxlbmFtZT48c3VmZml4Pi5wbmdcbiIpOworICAgIHByaW50
ZigiXG5XaGVuIC0tYmFzZWxpbmUtc3VmZml4IGlzIHNwZWNpZmllZCwgc3ZnMnBuZyB3aWxsIGxv
b2sgZm9yIGEgUE5HIGZpbGUgdGhhdFxuIik7CisgICAgcHJpbnRmKCJjb250YWlucyBhbiBleGFt
cGxlIG9mIHdoYXQgdGhlIFNWRyBzaG91bGQgbG9vayBsaWtlIHdoZW4gcmVuZGVyZWQuIEl0IHdp
bGxcbiIpOworICAgIHByaW50ZigiY3JlYXRlIGEgPGZpbGVuYW1lPjxzdWZmaXg+LWRpZmYucG5n
IGZpbGUgdG8gc2hvdyB0aGVzZSBkaWZmZXJlbmNlcy5cblxuIik7IAogICAgIGV4aXQoMSk7CiB9
OwogCi12b2lkIG91dHB1dFBORyhOU1N0cmluZyAqc3ZnUGF0aCwgTlNTdHJpbmcgKnBuZ1BhdGgp
CitOU0JpdG1hcEltYWdlUmVwICpnZXRCaXRtYXBGb3JTVkcoTlNTdHJpbmcgKnN2Z1BhdGgpCiB7
CisgICAgCiAgICAgLy8gbG9hZCB0aGUgZ2l2ZW4gZG9jdW1lbnQKICAgICBEcmF3RG9jdW1lbnQg
KmRvY3VtZW50ID0gW1tEcmF3RG9jdW1lbnQgYWxsb2NdIGluaXRXaXRoQ29udGVudHNPZkZpbGU6
c3ZnUGF0aF07CiAgICAgCkBAIC01MSwyNCArNjcsMzQgQEAKICAgICBbdmlldyBzZXREb2N1bWVu
dDpkb2N1bWVudF07CiAgICAgW3ZpZXcgc2l6ZVRvRml0Vmlld0JveF07CiAgICAgCi0gICAgLy8g
TXkgbWF4aW11bSA1MDB4NTAwIHNpemUgaGFjazoKKyAgICAvLyBMaW1pdCB0aGUgbWF4aW11bSBz
aXplLCBhbmQgZGVmYXVsdCB0aGUgc2l6ZSB0byA1MDB4NTAwIGlmIG5vdCBzcGVjaWZpZWQKICAg
ICBOU1NpemUgYm91bmRzU2l6ZSA9IFt2aWV3IGJvdW5kc10uc2l6ZTsKLSAgICBpZiAoYm91bmRz
U2l6ZS53aWR0aCA+IDUwMCkKKyAgICBpZiAoaXNNYXhXaWR0aFNwZWNpZmllZCAmJiBib3VuZHNT
aXplLndpZHRoID4gbWF4V2lkdGgpIHsKKyAgICAgICAgLy8gcmVzaXplIHRoZSBoZWlnaHQgc28g
dGhhdCB0aGUgYXNwZWN0IHJhdGlvIHJlbWFpbnMgdGhlIHNhbWUKKyAgICAgICAgYm91bmRzU2l6
ZS5oZWlnaHQgPSAoYm91bmRzU2l6ZS5oZWlnaHQgLyBib3VuZHNTaXplLndpZHRoKSAqIG1heFdp
ZHRoOworICAgICAgICBib3VuZHNTaXplLndpZHRoID0gbWF4V2lkdGg7CisgICAgfQorICAgIGVs
c2UgaWYgKGJvdW5kc1NpemUud2lkdGggPD0gMCkKICAgICAgICAgYm91bmRzU2l6ZS53aWR0aCA9
IDUwMDsKLSAgICBpZiAoYm91bmRzU2l6ZS5oZWlnaHQgPiA1MDApCisgICAgICAgIAorICAgIGlm
IChpc01heEhlaWdodFNwZWNpZmllZCAmJiBib3VuZHNTaXplLmhlaWdodCA+IG1heEhlaWdodCkg
eworICAgICAgICAvLyByZXNpemUgdGhlIHdpZHRoIHNvIHRoYXQgdGhlIGFzcGVjdCByYXRpbyBy
ZWFtaW5zIHRoZSBzYW1lCisgICAgICAgIGJvdW5kc1NpemUud2lkdGggPSAoYm91bmRzU2l6ZS53
aWR0aCAvIGJvdW5kc1NpemUuaGVpZ2h0KSAqIG1heEhlaWdodDsKKyAgICAgICAgYm91bmRzU2l6
ZS5oZWlnaHQgPSBtYXhIZWlnaHQ7CisgICAgfQorICAgIGVsc2UgaWYgKGJvdW5kc1NpemUuaGVp
Z2h0IDw9IDApCiAgICAgICAgIGJvdW5kc1NpemUuaGVpZ2h0ID0gNTAwOworICAgIAogICAgIFt2
aWV3IHNldEZyYW1lU2l6ZTpib3VuZHNTaXplXTsKICAgICAKICAgICAvLyB0ZWxsIHRoYXQgdmll
dyB0byByZW5kZXIKICAgICBOU0JpdG1hcEltYWdlUmVwICppbWFnZVJlcCA9IFt2aWV3IGJpdG1h
cEltYWdlUmVwRm9yQ2FjaGluZ0Rpc3BsYXlJblJlY3Q6W3ZpZXcgYm91bmRzXV07CiAgICAgW3Zp
ZXcgY2FjaGVEaXNwbGF5SW5SZWN0Olt2aWV3IGJvdW5kc10gdG9CaXRtYXBJbWFnZVJlcDppbWFn
ZVJlcF07CiAgICAgCi0gICAgLy8gb3V0cHV0IHRoZSByZXN1bHRpbmcgaW1hZ2UKLSAgICBOU0Rh
dGEgKnBuZ0RhdGEgPSBbaW1hZ2VSZXAgcmVwcmVzZW50YXRpb25Vc2luZ1R5cGU6TlNQTkdGaWxl
VHlwZSBwcm9wZXJ0aWVzOm5pbF07Ci0gICAgW3BuZ0RhdGEgd3JpdGVUb0ZpbGU6c3ZnUGF0aCBh
dG9taWNhbGx5OllFU107Ci0gICAgCiAgICAgW3ZpZXcgcmVsZWFzZV07IC8vIHNob3VsZCBiZSBz
aW5nbGV0b24uCiAgICAgW2RvY3VtZW50IHJlbGVhc2VdOworICAgIAorICAgIHJldHVybiBpbWFn
ZVJlcDsKIH0KIAogaW50IG1haW4gKGludCBhcmdjLCBjb25zdCBjaGFyICphcmd2W10pCkBAIC03
Nyw4ICsxMDMsMTEgQEAKICAgICAvLyBkZWFsIHdpdGggYXJncwogICAgIE5TTXV0YWJsZUFycmF5
ICpzdmdzID0gW05TTXV0YWJsZUFycmF5IGFycmF5XTsKICAgICBjb25zdCBjaGFyICpuYW1lID0g
W1tbTlNTdHJpbmcgc3RyaW5nV2l0aFVURjhTdHJpbmc6YXJndlswXV0gbGFzdFBhdGhDb21wb25l
bnRdIFVURjhTdHJpbmddOwotICAgIE5TU3RyaW5nICpleHBsaWNpdE91dHB1dFBhdGggPSBuaWw7
CisgICAgTlNTdHJpbmcgKmV4cGxpY2l0T3V0cHV0RmlsZSA9IG5pbDsKKyAgICBOU1N0cmluZyAq
b3V0cHV0RGlyZWN0b3J5ID0gbmlsOwogICAgIE5TU3RyaW5nICpvdXRwdXRTdWZmaXggPSBuaWw7
CisgICAgTlNTdHJpbmcgKmJhc2VsaW5lU3VmZml4ID0gbmlsOworICAgIE5TU3RyaW5nICpiYXNl
bGluZURpcmVjdG9yeSA9IG5pbDsKICAgICAKICAgICBmb3IoaW50IHggPSAxOyB4IDwgYXJnYzsg
eCsrKSB7CiAgICAgICAgIGNvbnN0IGNoYXIgKmFyZyA9IGFyZ3ZbeF07CkBAIC05MiwxMiArMTIx
LDIyIEBACiAgICAgICAgICAgICAgICAgZXhpdCgwKTsKICAgICAgICAgICAgIH0gZWxzZSBpZiAo
W2FyZ1N0cmluZyBpc0VxdWFsVG9TdHJpbmc6QCItLW91dHB1dCJdKSB7CiAgICAgICAgICAgICAg
ICAgaWYgKHggKyAxIDwgYXJnYykgewotICAgICAgICAgICAgICAgICAgICBleHBsaWNpdE91dHB1
dFBhdGggPSBbTlNTdHJpbmcgc3RyaW5nV2l0aFVURjhTdHJpbmc6YXJndlt4KzFdXTsKLSAgICAg
ICAgICAgICAgICAgICAgaWYgKFtleHBsaWNpdE91dHB1dFBhdGggaGFzUHJlZml4OkAiLS0iXSkK
LSAgICAgICAgICAgICAgICAgICAgICAgIE5TTG9nKEAiV0FSTklORzogZGlkIHlvdSByZWFsbHkg
bWVhbiB0byBvdXRwdXQgdG86ICVAICBPciBkaWQgeW91IGp1c3QgZm9yZ2V0IHRoZSAtLW91dHB1
dCA8ZmlsZW5hbWU+IGFyZ3VtZW50PyIsIGV4cGxpY2l0T3V0cHV0UGF0aCk7CisgICAgICAgICAg
ICAgICAgICAgIGV4cGxpY2l0T3V0cHV0RmlsZSA9IFtOU1N0cmluZyBzdHJpbmdXaXRoVVRGOFN0
cmluZzphcmd2W3grMV1dOworICAgICAgICAgICAgICAgICAgICBpZiAoW2V4cGxpY2l0T3V0cHV0
RmlsZSBoYXNQcmVmaXg6QCItLSJdKQorICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRmKCJX
QVJOSU5HOiBkaWQgeW91IHJlYWxseSBtZWFuIHRvIG91dHB1dCB0bzogJXMgIE9yIGRpZCB5b3Ug
anVzdCBmb3JnZXQgdGhlIC0tb3V0cHV0IDxmaWxlbmFtZT4gYXJndW1lbnQ/XG4iLCBbZXhwbGlj
aXRPdXRwdXRGaWxlIFVURjhTdHJpbmddKTsKKyAgICAgICAgICAgICAgICAgICAgeCsrOyAvLyB0
byBza2lwIHRoZSBuZXh0IGFyZworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICAgICAgICAgIHByaW50ZigiLS1vdXRwdXQgcmVxdWlyZXMgYW4gYXJndW1lbnQuXG4iKTsKKyAg
ICAgICAgICAgICAgICAgICAgdXNhZ2UobmFtZSk7CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgfSBlbHNlIGlmIChbYXJnU3RyaW5nIGlzRXF1YWxUb1N0cmluZzpAIi0tb3V0cHV0LWRp
ciJdKSB7CisgICAgICAgICAgICAgICAgaWYgKHggKyAxIDwgYXJnYykgeworICAgICAgICAgICAg
ICAgICAgICBvdXRwdXREaXJlY3RvcnkgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aFVURjhTdHJpbmc6
YXJndlt4KzFdXTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKFtvdXRwdXREaXJlY3RvcnkgaGFz
UHJlZml4OkAiLS0iXSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHByaW50ZigiV0FSTklORzog
ZGlkIHlvdSByZWFsbHkgbWVhbiB0byBvdXRwdXQgdG86ICVzICBPciBkaWQgeW91IGp1c3QgZm9y
Z2V0IHRoZSAtLW91dHB1dCA8ZmlsZW5hbWU+IGFyZ3VtZW50P1xuIiwgW291dHB1dERpcmVjdG9y
eSBVVEY4U3RyaW5nXSk7CiAgICAgICAgICAgICAgICAgICAgIHgrKzsgLy8gdG8gc2tpcCB0aGUg
bmV4dCBhcmcKICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBO
U0xvZyhAIi0tb3V0cHV0IHJlcXVpcmVzIGFuIGFyZ3VtZW50LiIpOworICAgICAgICAgICAgICAg
ICAgICBwcmludGYoIi0tb3V0cHV0LWRpciByZXF1aXJlcyBhbiBhcmd1bWVudC5cbiIpOwogICAg
ICAgICAgICAgICAgICAgICB1c2FnZShuYW1lKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICB9ICBlbHNlIGlmIChbYXJnU3RyaW5nIGlzRXF1YWxUb1N0cmluZzpAIi0tc3VmZml4Il0p
IHsKQEAgLTEwNSwxNiArMTQ0LDU4IEBACiAgICAgICAgICAgICAgICAgICAgIG91dHB1dFN1ZmZp
eCA9IFtOU1N0cmluZyBzdHJpbmdXaXRoVVRGOFN0cmluZzphcmd2W3grMV1dOwogICAgICAgICAg
ICAgICAgICAgICB4Kys7IC8vIHRvIHNraXAgdGhlIG5leHQgYXJnCiAgICAgICAgICAgICAgICAg
fSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgTlNMb2coQCItLXN1ZmZpeCByZXF1aXJlcyBh
biBhcmd1bWVudC4iKTsKKyAgICAgICAgICAgICAgICAgICAgcHJpbnRmKCItLXN1ZmZpeCByZXF1
aXJlcyBhbiBhcmd1bWVudC5cbiIpOworICAgICAgICAgICAgICAgICAgICB1c2FnZShuYW1lKTsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UgaWYgKFthcmdTdHJpbmcgaXNF
cXVhbFRvU3RyaW5nOkAiLS1tYXgtd2lkdGgiXSkgeworICAgICAgICAgICAgICAgIGlmICh4ICsg
MSA8IGFyZ2MpIHsKKyAgICAgICAgICAgICAgICAgICAgbWF4V2lkdGggPSBbW05TU3RyaW5nIHN0
cmluZ1dpdGhVVEY4U3RyaW5nOmFyZ3ZbeCsxXV0gaW50VmFsdWVdOworICAgICAgICAgICAgICAg
ICAgICBpZiAobWF4V2lkdGggPD0gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRm
KCItLW1heC13aWR0aCBtdXN0IGJlIGFuIGludGVnZXIgPiAwXG4iKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHVzYWdlKG5hbWUpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgICAgIGlzTWF4V2lkdGhTcGVjaWZpZWQgPSBZRVM7CisgICAgICAgICAgICAgICAgICAg
IHgrKzsgLy8gc2tpcCB0byB0aGUgbmV4dCBhcmcKKyAgICAgICAgICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgICAgICAgICBwcmludGYoIi0tbWF4LXdpZHRoIHJlcXVpcmVzIGFuIGludGVn
ZXIgYXJndW1lbnQuXG4iKTsKKyAgICAgICAgICAgICAgICAgICAgdXNhZ2UobmFtZSk7CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIGlmIChbYXJnU3RyaW5nIGlzRXF1YWxU
b1N0cmluZzpAIi0tbWF4LWhlaWdodCJdKSB7CisgICAgICAgICAgICAgICAgaWYgKHggKyAxIDwg
YXJnYykgeworICAgICAgICAgICAgICAgICAgICBtYXhIZWlnaHQgPSBbW05TU3RyaW5nIHN0cmlu
Z1dpdGhVVEY4U3RyaW5nOmFyZ3ZbeCsxXV0gaW50VmFsdWVdOworICAgICAgICAgICAgICAgICAg
ICBpZiAobWF4SGVpZ2h0IDw9IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHByaW50Zigi
LS1tYXgtaGVpZ2h0IG11c3QgYmUgYW4gaW50ZWdlciA+IDBcbiIpOworICAgICAgICAgICAgICAg
ICAgICAgICAgdXNhZ2UobmFtZSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICAgICAgaXNNYXhIZWlnaHRTcGVjaWZpZWQgPSBZRVM7CisgICAgICAgICAgICAgICAgICAg
IHgrKzsgLy8gc2tpcCB0byB0aGUgbmV4dCBhcmcKKyAgICAgICAgICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgICAgICAgICBwcmludGYoIi0tbWF4LWhlaWdodCByZXF1aXJlcyBhbiBpbnRl
Z2VyID4gMFxuIik7CisgICAgICAgICAgICAgICAgICAgIHVzYWdlKG5hbWUpOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSBpZiAoW2FyZ1N0cmluZyBpc0VxdWFsVG9TdHJp
bmc6QCItLWJhc2VsaW5lLXN1ZmZpeCJdKSB7CisgICAgICAgICAgICAgICAgaWYoeCArIDEgPCBh
cmdjKSB7CisgICAgICAgICAgICAgICAgICAgIGJhc2VsaW5lU3VmZml4ID0gW05TU3RyaW5nIHN0
cmluZ1dpdGhVVEY4U3RyaW5nOmFyZ3ZbeCsxXV07CisgICAgICAgICAgICAgICAgICAgIHgrKzsg
Ly8gc2tpcCB0byB0aGUgbmV4dCBhcmcKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgICAgICAgICBwcmludGYoIi0tYmFzZWxpbmUtc3VmZml4IHJlcXVpcmVzIHRoZSBzdWZm
aXggZm9yIHRoZSByZWZlcmVuY2UgUE5Hcy5cbiIpOworICAgICAgICAgICAgICAgICAgICB1c2Fn
ZShuYW1lKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UgaWYgKFthcmdT
dHJpbmcgaXNFcXVhbFRvU3RyaW5nOkAiLS1iYXNlbGluZS1kaXIiXSkgeworICAgICAgICAgICAg
ICAgIGlmKHggKyAxIDwgYXJnYykgeworICAgICAgICAgICAgICAgICAgICBiYXNlbGluZURpcmVj
dG9yeSA9IFtOU1N0cmluZyBzdHJpbmdXaXRoVVRGOFN0cmluZzphcmd2W3grMV1dOworICAgICAg
ICAgICAgICAgICAgICB4Kys7IC8vIHNraXAgdG8gdGhlIG5leHQgYXJnCisgICAgICAgICAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgcHJpbnRmKCItLWJhc2VsaW5lLWRpciBy
ZXF1aXJlcyB0aGUgc3VmZml4IGZvciB0aGUgcmVmZXJlbmNlIFBOR3MuXG4iKTsKICAgICAgICAg
ICAgICAgICAgICAgdXNhZ2UobmFtZSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
fSBlbHNlIHsKLSAgICAgICAgICAgICAgICBwcmludGYoIlVucmVjb2duaXplZCBvcHRpb24gJUBc
biIsIGFyZ1N0cmluZyk7CisgICAgICAgICAgICAgICAgcHJpbnRmKCJVbnJlY29nbml6ZWQgb3B0
aW9uICVzXG4iLCBbYXJnU3RyaW5nIFVURjhTdHJpbmddKTsKICAgICAgICAgICAgICAgICB1c2Fn
ZShuYW1lKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGlm
ICghW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRoOlthcmdT
dHJpbmcgc3RyaW5nQnlTdGFuZGFyZGl6aW5nUGF0aF1dKSB7Ci0gICAgICAgICAgICAgICAgcHJp
bnRmKCJTVkcgZG9lcyBub3QgZXhpc3QgYXQgcGF0aDogJUBcbiIsIGFyZ1N0cmluZyk7CisgICAg
ICAgICAgICAgICAgcHJpbnRmKCJTVkcgZG9lcyBub3QgZXhpc3QgYXQgcGF0aDogJXNcbiIsIFth
cmdTdHJpbmcgVVRGOFN0cmluZ10pOwogICAgICAgICAgICAgICAgIGV4aXQoMSk7CiAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICBbc3ZncyBhZGRPYmplY3Q6YXJnU3RyaW5nXTsKQEAgLTEyNiwy
OCArMjA3LDgwIEBACiAgICAgICAgIHVzYWdlKG5hbWUpOwogICAgIH0KICAgICAKLSAgICBpZiAo
IChbc3ZncyBjb3VudF0gPiAxKSAmJiBleHBsaWNpdE91dHB1dFBhdGgpIHsKKyAgICBpZiAoIChb
c3ZncyBjb3VudF0gPiAxKSAmJiBleHBsaWNpdE91dHB1dEZpbGUpIHsKICAgICAgICAgcHJpbnRm
KCItLW91dHB1dCBuYW1lIHNwZWNpZmVkLCB5ZXQgbW9yZSB0aGFuIG9uZSBpbnB1dCBmaWxlIHdh
cyBnaXZlbiFcblxuIik7CiAgICAgICAgIHVzYWdlKG5hbWUpOwogICAgIH0KICAgICAKKyAgICAK
ICAgICBOU1N0cmluZyAqc3ZnUGF0aCA9IG5pbDsKICAgICBmb3JlYWNoYXJyYXkoc3ZnUGF0aCwg
c3ZncykgewotICAgICAgICBOU1N0cmluZyAqcG5nUGF0aCA9IG5pbDsKLSAgICAgICAgaWYgKGV4
cGxpY2l0T3V0cHV0UGF0aCkKLSAgICAgICAgICAgIHBuZ1BhdGggPSBleHBsaWNpdE91dHB1dFBh
dGg7CisgICAgICAgIE5TQml0bWFwSW1hZ2VSZXAgKnN2Z0JpdG1hcCA9IG5pbDsKKyAgICAgICAg
TlNTdHJpbmcgKnN2Z1BOR1BhdGggPSBuaWw7CisgICAgICAgIAorICAgICAgICBpZiAoZXhwbGlj
aXRPdXRwdXRGaWxlKQorICAgICAgICAgICAgc3ZnUE5HUGF0aCA9IGV4cGxpY2l0T3V0cHV0Rmls
ZTsKICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBwbmdQYXRoID0gW3N2Z1BhdGggc3RyaW5n
QnlEZWxldGluZ1BhdGhFeHRlbnNpb25dOworICAgICAgICAgICAgaWYgKG91dHB1dERpcmVjdG9y
eSkKKyAgICAgICAgICAgICAgICBzdmdQTkdQYXRoID0gW1tvdXRwdXREaXJlY3Rvcnkgc3RyaW5n
QnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OltzdmdQYXRoIGxhc3RQYXRoQ29tcG9uZW50XV0gc3Ry
aW5nQnlEZWxldGluZ1BhdGhFeHRlbnNpb25dOworICAgICAgICAgICAgZWxzZSAgICAgCisgICAg
ICAgICAgICAgICAgc3ZnUE5HUGF0aCA9IFtzdmdQYXRoIHN0cmluZ0J5RGVsZXRpbmdQYXRoRXh0
ZW5zaW9uXTsKKyAgICAgICAgICAgIAogICAgICAgICAgICAgaWYgKG91dHB1dFN1ZmZpeCkKLSAg
ICAgICAgICAgICAgICBwbmdQYXRoID0gW3BuZ1BhdGggc3RyaW5nQnlBcHBlbmRpbmdTdHJpbmc6
b3V0cHV0U3VmZml4XTsKLSAgICAgICAgICAgIHBuZ1BhdGggPSBbcG5nUGF0aCBzdHJpbmdCeUFw
cGVuZGluZ1BhdGhFeHRlbnNpb246QCJwbmciXTsKKyAgICAgICAgICAgICAgICBzdmdQTkdQYXRo
ID0gW3N2Z1BOR1BhdGggc3RyaW5nQnlBcHBlbmRpbmdTdHJpbmc6b3V0cHV0U3VmZml4XTsKKyAg
ICAgICAgICAgIAorICAgICAgICAgICAgc3ZnUE5HUGF0aCA9IFtzdmdQTkdQYXRoIHN0cmluZ0J5
QXBwZW5kaW5nUGF0aEV4dGVuc2lvbjpAInBuZyJdOworICAgICAgICB9CisgICAgICAgIAorICAg
ICAgICAvLyBnZW5lcmF0ZSB0aGUgU1ZHLCBzYXZlIHRoZSBiaXRtYXAgZGF0YSBmb3IgdGhlIGRp
ZmYKKyAgICAgICAgc3ZnQml0bWFwID0gZ2V0Qml0bWFwRm9yU1ZHKHN2Z1BhdGgpOworICAgICAg
ICAKKyAgICAgICAgLy8gb3V0cHV0IHRoZSByZXN1bHRpbmcgU1ZHIHRvIGEgUE5HIGZpbGUKKyAg
ICAgICAgTlNEYXRhICpzdmdQTkdEYXRhID0gW3N2Z0JpdG1hcCByZXByZXNlbnRhdGlvblVzaW5n
VHlwZTpOU1BOR0ZpbGVUeXBlIHByb3BlcnRpZXM6bmlsXTsKKyAgICAgICAgW3N2Z1BOR0RhdGEg
d3JpdGVUb0ZpbGU6c3ZnUE5HUGF0aCBhdG9taWNhbGx5OllFU107CisgICAgICAgIAorICAgICAg
ICBpZiAoYmFzZWxpbmVTdWZmaXggfHwgYmFzZWxpbmVEaXJlY3RvcnkpIHsKKyAgICAgICAgICAg
IE5TU3RyaW5nICpkaWZmSW1hZ2VQYXRoID0gW1tbc3ZnUE5HUGF0aCBzdHJpbmdCeURlbGV0aW5n
UGF0aEV4dGVuc2lvbl0KKyAgICAgICAgICAgICAgICBzdHJpbmdCeUFwcGVuZGluZ1N0cmluZzpA
Ii1kaWZmIl0KKyAgICAgICAgICAgICAgICBzdHJpbmdCeUFwcGVuZGluZ1BhdGhFeHRlbnNpb246
QCJwbmciXTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgTlNTdHJpbmcgKmFuaW1hdGVkR0lG
UGF0aCA9IFtbZGlmZkltYWdlUGF0aCBzdHJpbmdCeURlbGV0aW5nUGF0aEV4dGVuc2lvbl0KKyAg
ICAgICAgICAgICAgICBzdHJpbmdCeUFwcGVuZGluZ1BhdGhFeHRlbnNpb246QCJnaWYiXTsKKwor
ICAgICAgICAgICAgTlNTdHJpbmcgKmJhc2VsaW5lSW1hZ2VQYXRoID0gbmlsOworICAgICAgICAg
ICAgCisgICAgICAgICAgICAvLyBpZiBzZXQsIGxvb2sgZm9yIGJhc2VsaW5lcyBpbiBhIHNlcGVy
YXRlIGRpcmVjdG9yeQorICAgICAgICAgICAgaWYgKGJhc2VsaW5lRGlyZWN0b3J5KQorICAgICAg
ICAgICAgICAgIGJhc2VsaW5lSW1hZ2VQYXRoID0gW1tiYXNlbGluZURpcmVjdG9yeSAKKyAgICAg
ICAgICAgICAgICAgICAgc3RyaW5nQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OltzdmdQYXRoIGxh
c3RQYXRoQ29tcG9uZW50XV0gc3RyaW5nQnlEZWxldGluZ1BhdGhFeHRlbnNpb25dOworICAgICAg
ICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGJhc2VsaW5lSW1hZ2VQYXRoID0gW3N2Z1BhdGgg
c3RyaW5nQnlEZWxldGluZ1BhdGhFeHRlbnNpb25dOworICAgICAgICAgICAgCisgICAgICAgICAg
ICAvLyBpZiBiYXNlbGluZXMgaGF2ZSBhIHNwZWNpYWwgc3VmZml4LCBhcHBlbmQgdGhhdCB0byB0
aGUgcGF0aAorICAgICAgICAgICAgaWYgKGJhc2VsaW5lU3VmZml4KQorICAgICAgICAgICAgICAg
IGJhc2VsaW5lSW1hZ2VQYXRoID0gW2Jhc2VsaW5lSW1hZ2VQYXRoIHN0cmluZ0J5QXBwZW5kaW5n
U3RyaW5nOmJhc2VsaW5lU3VmZml4XTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgYmFzZWxp
bmVJbWFnZVBhdGggPSBbYmFzZWxpbmVJbWFnZVBhdGggc3RyaW5nQnlBcHBlbmRpbmdQYXRoRXh0
ZW5zaW9uOkAicG5nIl07CisKKyAgICAgICAgICAgIC8vIGNvbXBhcmUKKyAgICAgICAgICAgIE5T
Qml0bWFwSW1hZ2VSZXAgKnJlZmVyZW5jZUJpdG1hcCA9IFtOU0JpdG1hcEltYWdlUmVwIGltYWdl
UmVwV2l0aENvbnRlbnRzT2ZVUkw6W05TVVJMIGZpbGVVUkxXaXRoUGF0aDpiYXNlbGluZUltYWdl
UGF0aF1dOworICAgICAgICAgICAgTlNCaXRtYXBJbWFnZVJlcCAqZGlmZkJpdG1hcCA9IGdldERp
ZmZlcmVuY2VCaXRtYXAoc3ZnQml0bWFwLCByZWZlcmVuY2VCaXRtYXApOworCisgICAgICAgICAg
ICAvLyBvdXRwdXQgdGhlIHJlc3VsdGluZyBTVkcgdG8gYSBQTkcgZmlsZQorICAgICAgICAgICAg
TlNEYXRhICpkaWZmUE5HRGF0YSA9IFtkaWZmQml0bWFwIHJlcHJlc2VudGF0aW9uVXNpbmdUeXBl
Ok5TUE5HRmlsZVR5cGUgcHJvcGVydGllczpuaWxdOworICAgICAgICAgICAgW2RpZmZQTkdEYXRh
IHdyaXRlVG9GaWxlOmRpZmZJbWFnZVBhdGggYXRvbWljYWxseTpZRVNdOworCisgICAgICAgICAg
ICAvLyBzYXZlIHRoZSByZWZlcmVuY2UgYW5kIHRoZSBzdmcgaW1hZ2VzIGluIGFuIGFuaW1hdGVk
IEdJRgorICAgICAgICAgICAgc2F2ZUFuaW1hdGVkR0lGVG9GaWxlKHN2Z0JpdG1hcCwgcmVmZXJl
bmNlQml0bWFwLCBhbmltYXRlZEdJRlBhdGgpOworICAgICAgICAgICAgCisgICAgICAgICAgICBm
bG9hdCBwZXJjZW50YWdlID0gY29tcHV0ZVBlcmNlbnRhZ2VEaWZmZXJlbnQoZGlmZkJpdG1hcCk7
CisgICAgICAgICAgICBwcmludGYoIiVzXHQlMy4zZiUlXHQlc1xuIiwgW3N2Z1BhdGggVVRGOFN0
cmluZ10sIHBlcmNlbnRhZ2UsIChwZXJjZW50YWdlID4gMSA/ICJGYWlsZWQuIiA6ICJQYXNzZWQu
IikpOworICAgICAgICAgICAgCisgICAgICAgICAgICBbZGlmZkJpdG1hcCByZWxlYXNlXTsKICAg
ICAgICAgfQotICAgICAgICBvdXRwdXRQTkcoc3ZnUGF0aCwgcG5nUGF0aCk7CiAgICAgfQogICAg
IAogICAgIFtwb29sIGRyYWluXTsKICAgICAKICAgICByZXR1cm4gMDsKIH0KLQotCkluZGV4OiBz
dmcycG5nLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpSQ1MgZmlsZTogL2N2
cy9yb290L1dlYktpdFRvb2xzL3N2ZzJwbmcvc3ZnMnBuZy54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qLHYKcmV0cmlldmluZyByZXZpc2lvbiAxLjEKZGlmZiAtdSAtcjEuMSBwcm9qZWN0LnBieHBy
b2oKLS0tIHN2ZzJwbmcueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkyOSBKdWwgMjAwNSAwNToy
NjowNyAtMDAwMAkxLjEKKysrIHN2ZzJwbmcueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagk3IEF1
ZyAyMDA1IDA5OjQzOjA4IC0wMDAwCkBAIC0xMCw2ICsxMCwxMSBAQAogCQk4REQ3NkY5QTA0ODZB
QTc2MDBEOTZCNUUgLyogc3ZnMnBuZy5tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMDhGQjc3OTZGRTg0MTU1REMwMkFBQzA3IC8qIHN2ZzJwbmcubSAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9ICgpOyB9OyB9OwogCQk4REQ3NkY5QzA0ODZBQTc2MDBE
OTZCNUUgLyogRm91bmRhdGlvbi5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwOEZCNzc5RUZFODQxNTVEQzAyQUFDMDcgLyogRm91bmRh
dGlvbi5mcmFtZXdvcmsgKi87IH07CiAJCUE4OThGNzk1MDg4MjRCNEEwMDc1RUZCMiAvKiBXZWJD
b3JlK1NWRy5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBODk4Rjc5NDA4ODI0QjRBMDA3NUVGQjIgLyogV2ViQ29yZStTVkcuZnJhbWV3
b3JrICovOyB9OworCQlCNTBEOUFGQjA4QTAwNDg1MDBFQ0Y3ODIgLyogUXVhcnR6Q29yZS5mcmFt
ZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBC
NTBEOUFGQTA4QTAwNDg1MDBFQ0Y3ODIgLyogUXVhcnR6Q29yZS5mcmFtZXdvcmsgKi87IH07CisJ
CUI1NTU5ODg5MDhBMzQxRTMwMDFFQjVGRCAvKiBJbWFnZURpZmYubSBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEI1NTU5ODg4MDhBMzQxRTMwMDFFQjVGRCAv
KiBJbWFnZURpZmYubSAqLzsgfTsKKwkJQjU1NTk4QUUwOEEzNDQwQjAwMUVCNUZEIC8qIEltYWdl
RGlmZi5oIGluIENvcHlGaWxlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBC
NTU1OThBRDA4QTM0NDBCMDAxRUI1RkQgLyogSW1hZ2VEaWZmLmggKi87IH07CisJCUI1OUY1OEZD
MDhBMUQxQ0EwMEJFMjY2NCAvKiBBcHBLaXQuZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjU5RjU4RkIwOEExRDFDQTAwQkUyNjY0IC8q
IEFwcEtpdC5mcmFtZXdvcmsgKi87IH07CisJCUI1RDkyNUEzMDhBNEI4NzcwMEJDOTRGNiAvKiBz
dmcycG5nIGluIENvcHlGaWxlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4
REQ3NkZBMTA0ODZBQTc2MDBEOTZCNUUgLyogc3ZnMnBuZyAqLzsgfTsKIC8qIEVuZCBQQlhCdWls
ZEZpbGUgc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhCdWlsZFN0eWxlIHNlY3Rpb24gKi8KQEAg
LTQzLDE3ICs0OCwyMyBAQAogCQkJZHN0UGF0aCA9IC91c3Ivc2hhcmUvbWFuL21hbjEvOwogCQkJ
ZHN0U3ViZm9sZGVyU3BlYyA9IDA7CiAJCQlmaWxlcyA9ICgKKwkJCQlCNTU1OThBRTA4QTM0NDBC
MDAxRUI1RkQgLyogSW1hZ2VEaWZmLmggaW4gQ29weUZpbGVzICovLAorCQkJCUI1RDkyNUEzMDhB
NEI4NzcwMEJDOTRGNiAvKiBzdmcycG5nIGluIENvcHlGaWxlcyAqLywKIAkJCSk7CiAJCQlydW5P
bmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMTsKIAkJfTsKIC8qIEVuZCBQQlhDb3B5
RmlsZXNCdWlsZFBoYXNlIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYRmlsZVJlZmVyZW5jZSBz
ZWN0aW9uICovCi0JCTA4RkI3Nzk2RkU4NDE1NURDMDJBQUMwNyAvKiBzdmcycG5nLm0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMub2JqYzsgcGF0aCA9IHN2ZzJwbmcubTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJMDhGQjc3OTZGRTg0MTU1REMwMkFBQzA3IC8qIHN2ZzJwbmcubSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBpbmRlbnRXaWR0aCA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLm9iamM7IHBhdGggPSBzdmcycG5n
Lm07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gNDsgdXNlc1RhYnMgPSAwOyB9
OwogCQkwOEZCNzc5RUZFODQxNTVEQzAyQUFDMDcgLyogRm91bmRhdGlvbi5mcmFtZXdvcmsgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB3cmFwcGVyLmZy
YW1ld29yazsgbmFtZSA9IEZvdW5kYXRpb24uZnJhbWV3b3JrOyBwYXRoID0gL1N5c3RlbS9MaWJy
YXJ5L0ZyYW1ld29ya3MvRm91bmRhdGlvbi5mcmFtZXdvcms7IHNvdXJjZVRyZWUgPSAiPGFic29s
dXRlPiI7IH07CiAJCTMyQTcwQUFCMDM3MDVFMUYwMEM5MTc4MyAvKiBzdmcycG5nX1ByZWZpeC5w
Y2ggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IHN2ZzJwbmdfUHJlZml4LnBjaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOERENzZGQTEwNDg2QUE3NjAwRDk2QjVFIC8q
IHN2ZzJwbmcgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZXhwbGljaXRGaWxlVHlwZSA9
ICJjb21waWxlZC5tYWNoLW8uZXhlY3V0YWJsZSI7IGluY2x1ZGVJbkluZGV4ID0gMDsgcGF0aCA9
IHN2ZzJwbmc7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CgkJQTg5OEY3OTQw
ODgyNEI0QTAwNzVFRkIyIC8qIFdlYkNvcmUrU1ZHLmZyYW1ld29yayAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHdyYXBwZXIuZnJhbWV3b3JrOyBwYXRo
ID0gIldlYkNvcmUrU1ZHLmZyYW1ld29yayI7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19E
SVI7IH07CisJCUI1MEQ5QUZBMDhBMDA0ODUwMEVDRjc4MiAvKiBRdWFydHpDb3JlLmZyYW1ld29y
ayAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHdyYXBw
ZXIuZnJhbWV3b3JrOyBuYW1lID0gUXVhcnR6Q29yZS5mcmFtZXdvcms7IHBhdGggPSAvU3lzdGVt
L0xpYnJhcnkvRnJhbWV3b3Jrcy9RdWFydHpDb3JlLmZyYW1ld29yazsgc291cmNlVHJlZSA9ICI8
YWJzb2x1dGU+IjsgfTsKKwkJQjU1NTk4ODgwOEEzNDFFMzAwMUVCNUZEIC8qIEltYWdlRGlmZi5t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLm9iamM7IHBhdGggPSBJbWFnZURpZmYubTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQjU1NTk4QUQwOEEzNDQwQjAwMUVCNUZEIC8qIEltYWdl
RGlmZi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbWFnZURpZmYuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQjU5RjU4RkIwOEExRDFDQTAwQkUyNjY0IC8qIEFw
cEtpdC5mcmFtZXdvcmsgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSB3cmFwcGVyLmZyYW1ld29yazsgbmFtZSA9IEFwcEtpdC5mcmFtZXdvcms7IHBhdGgg
PSAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9BcHBLaXQuZnJhbWV3b3JrOyBzb3VyY2VUcmVl
ID0gIjxhYnNvbHV0ZT4iOyB9OwogLyogRW5kIFBCWEZpbGVSZWZlcmVuY2Ugc2VjdGlvbiAqLwog
CiAvKiBCZWdpbiBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZSBzZWN0aW9uICovCkBAIC02Myw2ICs3
NCw4IEBACiAJCQlmaWxlcyA9ICgKIAkJCQk4REQ3NkY5QzA0ODZBQTc2MDBEOTZCNUUgLyogRm91
bmRhdGlvbi5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLywKIAkJCQlBODk4Rjc5NTA4ODI0QjRB
MDA3NUVGQjIgLyogV2ViQ29yZStTVkcuZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8sCisJCQkJ
QjUwRDlBRkIwOEEwMDQ4NTAwRUNGNzgyIC8qIFF1YXJ0ekNvcmUuZnJhbWV3b3JrIGluIEZyYW1l
d29ya3MgKi8sCisJCQkJQjU5RjU4RkMwOEExRDFDQTAwQkUyNjY0IC8qIEFwcEtpdC5mcmFtZXdv
cmsgaW4gRnJhbWV3b3JrcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rw
cm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTg0LDYgKzk3LDggQEAKIAkJCWNoaWxkcmVuID0gKAog
CQkJCTMyQTcwQUFCMDM3MDVFMUYwMEM5MTc4MyAvKiBzdmcycG5nX1ByZWZpeC5wY2ggKi8sCiAJ
CQkJMDhGQjc3OTZGRTg0MTU1REMwMkFBQzA3IC8qIHN2ZzJwbmcubSAqLywKKwkJCQlCNTU1OTg4
ODA4QTM0MUUzMDAxRUI1RkQgLyogSW1hZ2VEaWZmLm0gKi8sCisJCQkJQjU1NTk4QUQwOEEzNDQw
QjAwMUVCNUZEIC8qIEltYWdlRGlmZi5oICovLAogCQkJKTsKIAkJCW5hbWUgPSBTb3VyY2U7CiAJ
CQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtOTEsNiArMTA2LDggQEAKIAkJMDhGQjc3OURG
RTg0MTU1REMwMkFBQzA3IC8qIEV4dGVybmFsIEZyYW1ld29ya3MgYW5kIExpYnJhcmllcyAqLyA9
IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJQjU5RjU4RkIwOEEx
RDFDQTAwQkUyNjY0IC8qIEFwcEtpdC5mcmFtZXdvcmsgKi8sCisJCQkJQjUwRDlBRkEwOEEwMDQ4
NTAwRUNGNzgyIC8qIFF1YXJ0ekNvcmUuZnJhbWV3b3JrICovLAogCQkJCUE4OThGNzk0MDg4MjRC
NEEwMDc1RUZCMiAvKiBXZWJDb3JlK1NWRy5mcmFtZXdvcmsgKi8sCiAJCQkJMDhGQjc3OUVGRTg0
MTU1REMwMkFBQzA3IC8qIEZvdW5kYXRpb24uZnJhbWV3b3JrICovLAogCQkJKTsKQEAgLTE2NSw2
ICsxODIsNyBAQAogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKIAkJCWZpbGVzID0g
KAogCQkJCThERDc2RjlBMDQ4NkFBNzYwMEQ5NkI1RSAvKiBzdmcycG5nLm0gaW4gU291cmNlcyAq
LywKKwkJCQlCNTU1OTg4OTA4QTM0MUUzMDAxRUI1RkQgLyogSW1hZ2VEaWZmLm0gaW4gU291cmNl
cyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsK
IAkJfTsKQEAgLTE3NSw2ICsxOTMsNyBAQAogCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247
CiAJCQlidWlsZFNldHRpbmdzID0gewogCQkJCUNPUFlfUEhBU0VfU1RSSVAgPSBOTzsKKwkJCQlG
UkFNRVdPUktfU0VBUkNIX1BBVEhTID0gL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3M7CiAJCQkJ
R0NDX0RZTkFNSUNfTk9fUElDID0gTk87CiAJCQkJR0NDX0VOQUJMRV9GSVhfQU5EX0NPTlRJTlVF
ID0gWUVTOwogCQkJCUdDQ19HRU5FUkFURV9ERUJVR0dJTkdfU1lNQk9MUyA9IFlFUzsKQEAgLTE4
NCw3ICsyMDMsOSBAQAogCQkJCUdDQ19QUkVGSVhfSEVBREVSID0gc3ZnMnBuZ19QcmVmaXgucGNo
OwogCQkJCUdDQ19XQVJOX0FCT1VUX1JFVFVSTl9UWVBFID0gWUVTOwogCQkJCUdDQ19XQVJOX1VO
VVNFRF9WQVJJQUJMRSA9IFlFUzsKKwkJCQlIRUFERVJfU0VBUkNIX1BBVEhTID0gIiI7CiAJCQkJ
SU5TVEFMTF9QQVRIID0gIiQoSE9NRSkvYmluIjsKKwkJCQlMSUJSQVJZX1NFQVJDSF9QQVRIUyA9
ICIiOwogCQkJCVBSRUJJTkRJTkcgPSBOTzsKIAkJCQlQUk9EVUNUX05BTUUgPSBzdmcycG5nOwog
CQkJCVZFUlNJT05JTkdfU1lTVEVNID0gImFwcGxlLWdlbmVyaWMiOwpAQCAtMTk2LDYgKzIxNyw3
IEBACiAJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7
CiAJCQkJQ09QWV9QSEFTRV9TVFJJUCA9IFlFUzsKKwkJCQlGUkFNRVdPUktfU0VBUkNIX1BBVEhT
ID0gL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3M7CiAJCQkJR0NDX0VOQUJMRV9GSVhfQU5EX0NP
TlRJTlVFID0gTk87CiAJCQkJR0NDX0dFTkVSQVRFX0RFQlVHR0lOR19TWU1CT0xTID0gTk87CiAJ
CQkJR0NDX01PREVMX1RVTklORyA9IEc1OwpAQCAtMjAzLDcgKzIyNSw5IEBACiAJCQkJR0NDX1BS
RUZJWF9IRUFERVIgPSBzdmcycG5nX1ByZWZpeC5wY2g7CiAJCQkJR0NDX1dBUk5fQUJPVVRfUkVU
VVJOX1RZUEUgPSBZRVM7CiAJCQkJR0NDX1dBUk5fVU5VU0VEX1ZBUklBQkxFID0gWUVTOworCQkJ
CUhFQURFUl9TRUFSQ0hfUEFUSFMgPSAiIjsKIAkJCQlJTlNUQUxMX1BBVEggPSAiJChIT01FKS9i
aW4iOworCQkJCUxJQlJBUllfU0VBUkNIX1BBVEhTID0gIiI7CiAJCQkJUFJFQklORElORyA9IE5P
OwogCQkJCVBST0RVQ1RfTkFNRSA9IHN2ZzJwbmc7CiAJCQkJVkVSU0lPTklOR19TWVNURU0gPSAi
YXBwbGUtZ2VuZXJpYyI7CkBAIC0yMTQsMTMgKzIzOCwxNiBAQAogCQlBOEMwMDYyODA4OTc1NjlB
MDBCQTUxMTQgLyogRGVmYXVsdCAqLyA9IHsKIAkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0aW9u
OwogCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlGUkFNRVdPUktfU0VBUkNIX1BBVEhTID0gL1N5
c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3M7CiAJCQkJR0NDX0dFTkVSQVRFX0RFQlVHR0lOR19TWU1C
T0xTID0gTk87CiAJCQkJR0NDX01PREVMX1RVTklORyA9IEc1OwogCQkJCUdDQ19QUkVDT01QSUxF
X1BSRUZJWF9IRUFERVIgPSBZRVM7CiAJCQkJR0NDX1BSRUZJWF9IRUFERVIgPSBzdmcycG5nX1By
ZWZpeC5wY2g7CiAJCQkJR0NDX1dBUk5fQUJPVVRfUkVUVVJOX1RZUEUgPSBZRVM7CiAJCQkJR0ND
X1dBUk5fVU5VU0VEX1ZBUklBQkxFID0gWUVTOworCQkJCUhFQURFUl9TRUFSQ0hfUEFUSFMgPSAi
IjsKIAkJCQlJTlNUQUxMX1BBVEggPSAiJChIT01FKS9iaW4iOworCQkJCUxJQlJBUllfU0VBUkNI
X1BBVEhTID0gIiI7CiAJCQkJUFJFQklORElORyA9IE5POwogCQkJCVBST0RVQ1RfTkFNRSA9IHN2
ZzJwbmc7CiAJCQkJVkVSU0lPTklOR19TWVNURU0gPSAiYXBwbGUtZ2VuZXJpYyI7CkBAIC0yMzAs
NiArMjU3LDcgQEAKIAkJQThDMDA2MkEwODk3NTY5QTAwQkE1MTE0IC8qIERldmVsb3BtZW50ICov
ID0gewogCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CiAJCQlidWlsZFNldHRpbmdzID0g
eworCQkJCUZSQU1FV09SS19TRUFSQ0hfUEFUSFMgPSAiIjsKIAkJCQlHQ0NfQ19MQU5HVUFHRV9T
VEFOREFSRCA9IGdudTk5OwogCQkJCUdDQ19UUkVBVF9XQVJOSU5HU19BU19FUlJPUlMgPSBZRVM7
CiAJCQkJVkVSU0lPTklOR19TWVNURU0gPSAiYXBwbGUtZ2VuZXJpYyI7CkBAIC0yMzksNiArMjY3
LDcgQEAKIAkJQThDMDA2MkIwODk3NTY5QTAwQkE1MTE0IC8qIERlcGxveW1lbnQgKi8gPSB7CiAJ
CQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJ
RlJBTUVXT1JLX1NFQVJDSF9QQVRIUyA9ICIiOwogCQkJCUdDQ19DX0xBTkdVQUdFX1NUQU5EQVJE
ID0gZ251OTk7CiAJCQkJR0NDX1RSRUFUX1dBUk5JTkdTX0FTX0VSUk9SUyA9IFlFUzsKIAkJCQlW
RVJTSU9OSU5HX1NZU1RFTSA9ICJhcHBsZS1nZW5lcmljIjsKQEAgLTI0OCw2ICsyNzcsNyBAQAog
CQlBOEMwMDYyQzA4OTc1NjlBMDBCQTUxMTQgLyogRGVmYXVsdCAqLyA9IHsKIAkJCWlzYSA9IFhD
QnVpbGRDb25maWd1cmF0aW9uOwogCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlGUkFNRVdPUktf
U0VBUkNIX1BBVEhTID0gIiI7CiAJCQkJR0NDX0NfTEFOR1VBR0VfU1RBTkRBUkQgPSBnbnU5OTsK
IAkJCQlHQ0NfVFJFQVRfV0FSTklOR1NfQVNfRVJST1JTID0gWUVTOwogCQkJCVZFUlNJT05JTkdf
U1lTVEVNID0gImFwcGxlLWdlbmVyaWMiOwotLS0gSW1hZ2VEaWZmLmgJMjAwNS0wOC0wNyAwMzo0
NDozOC4wMDAwMDAwMDAgLTA2MDAKKysrIEltYWdlRGlmZi5oCTIwMDUtMDgtMDYgMTY6MTQ6NTku
MDAwMDAwMDAwIC0wNjAwCkBAIC0wLDAgKzEsMjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDUgQmVuIExhIE1vbmljYSA8YmVuLmxhbW9uaWNhQGdtYWlsLmNvbT4uICBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IEFVVEhPUiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworLy8g
cHJvdG90eXBlcworTlNCaXRtYXBJbWFnZVJlcCAqZ2V0RGlmZmVyZW5jZUJpdG1hcChOU0JpdG1h
cEltYWdlUmVwICp0ZXN0Qml0bWFwLCBOU0JpdG1hcEltYWdlUmVwICpyZWZlcmVuY2VCaXRtYXAp
OworZmxvYXQgY29tcHV0ZVBlcmNlbnRhZ2VEaWZmZXJlbnQoTlNCaXRtYXBJbWFnZVJlcCAqZGlm
ZkJpdG1hcCk7Cit2b2lkIHNhdmVBbmltYXRlZEdJRlRvRmlsZShOU0JpdG1hcEltYWdlUmVwICpm
aXJzdEZyYW1lLCBOU0JpdG1hcEltYWdlUmVwICpzZWNvbmRGcmFtZSwgTlNTdHJpbmcgKmFuaW1h
dGVkR0lGUGF0aCk7Ci0tLSBJbWFnZURpZmYubQkyMDA1LTA4LTA3IDAzOjQ0OjM4LjAwMDAwMDAw
MCAtMDYwMAorKysgSW1hZ2VEaWZmLm0JMjAwNS0wOC0wNyAwMzo0NjowNy4wMDAwMDAwMDAgLTA2
MDAKQEAgLTAsMCArMSwxODAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDUgQmVuIExhIE1v
bmljYSA8YmVuLmxhbW9uaWNhQGdtYWlsLmNvbT4uICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKyAKKyNpbXBvcnQgPFF1YXJ0
ekNvcmUvQ0lGaWx0ZXIuaD4KKyNpbXBvcnQgPFF1YXJ0ekNvcmUvQ0lJbWFnZS5oPgorI2ltcG9y
dCA8UXVhcnR6Q29yZS9DSUNvbnRleHQuaD4KKyNpbXBvcnQgPEFwcEtpdC9OU0JpdG1hcEltYWdl
UmVwLmg+CisjaW1wb3J0IDxBcHBLaXQvTlNHcmFwaGljc0NvbnRleHQuaD4KKyNpbXBvcnQgPEFw
cEtpdC9OU0NJSW1hZ2VSZXAuaD4KKworI2ltcG9ydCAiSW1hZ2VEaWZmLmgiCisKKy8qKgorICog
VGFrZXMgYSBiaXRtYXAgYW5kIHBlcmZvcm1zIGEgZGlmZmVyZW5jZSBibGVuZCB3aXRoIGEgcmVm
ZXJlbmNlIAorICogaW1hZ2UuIElmIHRoZSBpbWFnZXMgYXJlIGV4YWN0bHkgdGhlIHNhbWUsIHRo
ZSBkaWZmQml0bWFwIHdpbGwgCisgKiBiZSBzb2xpZCBibGFjay4KKyAqCisgKiBJdCB3aWxsIHdy
aXRlIHRoaXMgZGlmZmVyZW5jZSBibGVuZGVkIGJpdG1hcCB0byBhIGZpbGUuCisgKiAKKyAqIFJl
dHVybnMgdGhlIGRpZmZlcmVuY2UgYml0bWFwCisgKi8KK05TQml0bWFwSW1hZ2VSZXAgKmdldERp
ZmZlcmVuY2VCaXRtYXAoTlNCaXRtYXBJbWFnZVJlcCAqdGVzdEJpdG1hcCwgTlNCaXRtYXBJbWFn
ZVJlcCAqcmVmZXJlbmNlQml0bWFwKQoreworICAgIC8vIGNyZWF0ZSBhIG5ldyBncmFwaGljcyBj
b250ZXh0IHRvIGRyYXcgb3VyIENJSW1hZ2Ugb24KKyAgICBOU0JpdG1hcEltYWdlUmVwICpkaWZm
Qml0bWFwID0gW3Rlc3RCaXRtYXAgY29weV07CisgICAgTlNHcmFwaGljc0NvbnRleHQgKm5zQ29u
dGV4dCA9IFtOU0dyYXBoaWNzQ29udGV4dCBncmFwaGljc0NvbnRleHRXaXRoQml0bWFwSW1hZ2VS
ZXA6ZGlmZkJpdG1hcF07CisgICAgQ0lJbWFnZSAqcmVmZXJlbmNlSW1hZ2UgPSBbW0NJSW1hZ2Ug
YWxsb2NdIGluaXRXaXRoQml0bWFwSW1hZ2VSZXA6cmVmZXJlbmNlQml0bWFwXTsKKyAgICBDSUlt
YWdlICp0ZXN0SW1hZ2UgPSBbW0NJSW1hZ2UgYWxsb2NdIGluaXRXaXRoQml0bWFwSW1hZ2VSZXA6
dGVzdEJpdG1hcF07CisgICAgQ0lJbWFnZSAqZGlmZkltYWdlID0gbmlsOworICAgIENJRmlsdGVy
ICpkaWZmQmxlbmQgPSBbQ0lGaWx0ZXIgZmlsdGVyV2l0aE5hbWU6QCJDSURpZmZlcmVuY2VCbGVu
ZE1vZGUiXTsKKworICAgIC8vIGdlbmVyYXRlIHRoZSBkaWZmIGltYWdlCisgICAgW2RpZmZCbGVu
ZCBzZXRWYWx1ZTpyZWZlcmVuY2VJbWFnZSBmb3JLZXk6QCJpbnB1dEltYWdlIl07CisgICAgW2Rp
ZmZCbGVuZCBzZXRWYWx1ZTp0ZXN0SW1hZ2UgZm9yS2V5OkAiaW5wdXRCYWNrZ3JvdW5kSW1hZ2Ui
XTsKKyAgICBkaWZmSW1hZ2UgPSBbZGlmZkJsZW5kIHZhbHVlRm9yS2V5OkAib3V0cHV0SW1hZ2Ui
XTsKKyAgICAKKyAgICAvLyBwcmVwYXJlIHRvIGRyYXcgdGhlIGltYWdlLCBzYXZlIGN1cnJlbnQg
c3RhdGUKKyAgICBbTlNHcmFwaGljc0NvbnRleHQgc2F2ZUdyYXBoaWNzU3RhdGVdOworICAgIFtO
U0dyYXBoaWNzQ29udGV4dCBzZXRDdXJyZW50Q29udGV4dDogbnNDb250ZXh0XTsKKyAgICAKKyAg
ICAvLyBkcmF3IHRoZSBkaWZmZXJlbmNlIGltYWdlCisgICAgW1tuc0NvbnRleHQgQ0lDb250ZXh0
XSBkcmF3SW1hZ2U6ZGlmZkltYWdlIGF0UG9pbnQ6Q0dQb2ludFplcm8gZnJvbVJlY3Q6W2RpZmZJ
bWFnZSBleHRlbnRdXTsKKyAgICAKKyAgICAvLyByZXN0b3JlIHRoZSBwcmV2aW91cyBjb250ZXh0
IGFuZCBzdGF0ZQorICAgIFtOU0dyYXBoaWNzQ29udGV4dCByZXN0b3JlR3JhcGhpY3NTdGF0ZV07
CisgICAgICAgIAorICAgIFtyZWZlcmVuY2VJbWFnZSByZWxlYXNlXTsKKyAgICBbdGVzdEltYWdl
IHJlbGVhc2VdOworICAgIAorICAgIHJldHVybiBkaWZmQml0bWFwOworfQorCisvKioKKyAqIENv
dW50cyB0aGUgbnVtYmVyIG9mIG5vbi1ibGFjayBwaXhlbHMsIGFuZCByZXR1cm5zIHRoZSBwZXJj
ZW50YWdlCisgKiBvZiBub24tYmxhY2sgcGl4ZWxzIHRvIHRvdGFsIHBpeGVscyBpbiB0aGUgaW1h
Z2UuCisgKi8KK2Zsb2F0IGNvbXB1dGVQZXJjZW50YWdlRGlmZmVyZW50KE5TQml0bWFwSW1hZ2VS
ZXAgKmRpZmZCaXRtYXApCit7CisgICAgaW50IHRvdGFsUGl4ZWxzID0gW2RpZmZCaXRtYXAgcGl4
ZWxzSGlnaF0gKiBbZGlmZkJpdG1hcCBwaXhlbHNXaWRlXTsKKyAgICBpbnQgdG90YWxCeXRlcyA9
IFtkaWZmQml0bWFwIGJ5dGVzUGVyUGxhbmVdOworICAgIHVuc2lnbmVkIGNoYXIgKmJpdG1hcERh
dGEgPSBbZGlmZkJpdG1hcCBiaXRtYXBEYXRhXTsKKyAgICBpbnQgZGlmZmVyZW5jZXMgPSAwOwor
ICAgIAorICAgIC8vIE5PVEU6IFRoaXMgbWF5IG5vdCBiZSBzYWZlIHdoZW4gc3dpdGNoaW5nIGJl
dHdlZW4gRU5ESUFOIHR5cGVzCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCB0b3RhbEJ5dGVzOyBp
ICs9IDQpIHsKKyAgICAgICAgaWYgKCooYml0bWFwRGF0YSArIGkpICE9IDAgfHwgKihiaXRtYXBE
YXRhICsgaSArIDEpICE9IDAgfHwgKihiaXRtYXBEYXRhICsgaSArIDIpICE9IDApCisgICAgICAg
ICAgICBkaWZmZXJlbmNlcysrOworICAgIH0KKyAgICAKKyAgICByZXR1cm4gKGRpZmZlcmVuY2Vz
ICogMTAwLjApL3RvdGFsUGl4ZWxzOworfQorCisvKioKKyAqIFRha2VzIHR3byBpbWFnZXMgYW5k
IHBsYWNlcyB0aGVtIGluIGFuIGFuaW1hdGVkIEdJRi4KKyAqCisgKiBUT0RPOiBHZXQgdGhlIGlt
YWdlcyB0byBsb29wIGZvcmV2ZXIgd2l0aCBhIDEgc2VjIGRlbGF5LgorICovCit2b2lkIHNhdmVB
bmltYXRlZEdJRlRvRmlsZShOU0JpdG1hcEltYWdlUmVwICpmaXJzdEZyYW1lLCBOU0JpdG1hcElt
YWdlUmVwICpzZWNvbmRGcmFtZSwgTlNTdHJpbmcgKmFuaW1hdGVkR0lGUGF0aCkKK3sKKyAgICAv
LyBvcHRpb25zIHRvIHNldCB0aGUgZGVsYXkgb24gZWFjaCBmcmFtZQorICAgIE5TRGljdGlvbmFy
eSAqZnJhbWVQcm9wZXJ0aWVzID0gW05TRGljdGlvbmFyeSAKKyAgICAgICAgZGljdGlvbmFyeVdp
dGhPYmplY3Q6W05TRGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0aE9iamVjdDpbTlNOdW1iZXIgbnVt
YmVyV2l0aEludDoyXSBmb3JLZXk6KE5TU3RyaW5nICopIGtDR0ltYWdlUHJvcGVydHlHSUZEZWxh
eVRpbWVdCisgICAgICAgIGZvcktleTooTlNTdHJpbmcgKikga0NHSW1hZ2VQcm9wZXJ0eUdJRkRp
Y3Rpb25hcnldOworICAgICAgICAKKyAgICAvLyBvcHRpb25zIHRvIHR1cm4gb24gbG9vcGluZyBm
b3IgdGhlIEdJRgorICAgIE5TRGljdGlvbmFyeSAqZ2lmUHJvcGVydGllcyA9IFtOU0RpY3Rpb25h
cnkgCisgICAgICAgIGRpY3Rpb25hcnlXaXRoT2JqZWN0OltOU0RpY3Rpb25hcnkgZGljdGlvbmFy
eVdpdGhPYmplY3Q6W05TTnVtYmVyIG51bWJlcldpdGhJbnQ6MF0gZm9yS2V5OihOU1N0cmluZyAq
KSBrQ0dJbWFnZVByb3BlcnR5R0lGTG9vcENvdW50XQorICAgICAgICBmb3JLZXk6KE5TU3RyaW5n
ICopIGtDR0ltYWdlUHJvcGVydHlHSUZEaWN0aW9uYXJ5XTsKKyAgICAKKyAgICAvLyBzZXQgdGhl
IHBsYWNlIHRvIHNhdmUgdGhlIEdJRiB0bworICAgIENHSW1hZ2VEZXN0aW5hdGlvblJlZiBhbmlt
YXRlZEdJRiA9IENHSW1hZ2VEZXN0aW5hdGlvbkNyZWF0ZVdpdGhVUkwoCisgICAgICAgIChDRlVS
TFJlZikgW05TVVJMIGZpbGVVUkxXaXRoUGF0aDphbmltYXRlZEdJRlBhdGhdLCAKKyAgICAgICAg
a1VUVHlwZUdJRiwgCisgICAgICAgIDIsIAorICAgICAgICBOVUxMCisgICAgKTsKKyAgICAKKyAg
ICAvLyBnZXQgdGhlIGRhdGEgZm9yIHRoZSBmaXJzdCBmcmFtZQorICAgIENHRGF0YVByb3ZpZGVy
UmVmIGZpcnN0RnJhbWVQcm92aWRlciA9IENHRGF0YVByb3ZpZGVyQ3JlYXRlV2l0aERhdGEoCisg
ICAgICAgIE5VTEwsCisgICAgICAgIFtmaXJzdEZyYW1lIGJpdG1hcERhdGFdLAorICAgICAgICBb
Zmlyc3RGcmFtZSBieXRlc1BlclJvd10gKiBbZmlyc3RGcmFtZSBwaXhlbHNIaWdoXSwKKyAgICAg
ICAgTlVMTAorICAgICk7CisgICAgCisgICAgLy8gY3JlYXRlIGEgQ0dJbWFnZSBmb3IgdGhlIGZp
cnN0IGZyYW1lCisgICAgQ0dJbWFnZVJlZiBjZ0ZpcnN0RnJhbWUgPSBDR0ltYWdlQ3JlYXRlICgK
KyAgICAgICAgW2ZpcnN0RnJhbWUgcGl4ZWxzV2lkZV0sCisgICAgICAgIFtmaXJzdEZyYW1lIHBp
eGVsc0hpZ2hdLAorICAgICAgICBbc2Vjb25kRnJhbWUgYml0c1BlclBpeGVsXSAvIFtzZWNvbmRG
cmFtZSBzYW1wbGVzUGVyUGl4ZWxdLAorICAgICAgICBbZmlyc3RGcmFtZSBiaXRzUGVyUGl4ZWxd
LAorICAgICAgICBbZmlyc3RGcmFtZSBieXRlc1BlclJvd10sCisgICAgICAgIENHQ29sb3JTcGFj
ZUNyZWF0ZURldmljZVJHQigpLAorICAgICAgICBrQ0dJbWFnZUFscGhhTm9uZSwKKyAgICAgICAg
Zmlyc3RGcmFtZVByb3ZpZGVyLAorICAgICAgICBOVUxMLAorICAgICAgICAwLAorICAgICAgICBr
Q0dSZW5kZXJpbmdJbnRlbnREZWZhdWx0CisgICAgKTsKKyAgICAKKyAgICAvLyBnZXQgdGhlIGRh
dGEgZm9yIHRoZSBzZWNvbmQgZnJhbWUKKyAgICBDR0RhdGFQcm92aWRlclJlZiBzZWNvbmRGcmFt
ZVByb3ZpZGVyID0gQ0dEYXRhUHJvdmlkZXJDcmVhdGVXaXRoRGF0YSgKKyAgICAgICAgTlVMTCwK
KyAgICAgICAgW3NlY29uZEZyYW1lIGJpdG1hcERhdGFdLAorICAgICAgICBbc2Vjb25kRnJhbWUg
Ynl0ZXNQZXJSb3ddICogW3NlY29uZEZyYW1lIHBpeGVsc0hpZ2hdLAorICAgICAgICBOVUxMCisg
ICAgKTsKKyAgICAKKyAgICAvLyBjcmVhdGUgYSBDR0ltYWdlIGZvciB0aGUgc2Vjb25kIGZyYW1l
CisgICAgQ0dJbWFnZVJlZiBjZ1NlY29uZEZyYW1lID0gQ0dJbWFnZUNyZWF0ZSAoCisgICAgICAg
IFtzZWNvbmRGcmFtZSBwaXhlbHNXaWRlXSwKKyAgICAgICAgW3NlY29uZEZyYW1lIHBpeGVsc0hp
Z2hdLAorICAgICAgICBbc2Vjb25kRnJhbWUgYml0c1BlclBpeGVsXSAvIFtzZWNvbmRGcmFtZSBz
YW1wbGVzUGVyUGl4ZWxdLAorICAgICAgICBbc2Vjb25kRnJhbWUgYml0c1BlclBpeGVsXSwKKyAg
ICAgICAgW3NlY29uZEZyYW1lIGJ5dGVzUGVyUm93XSwKKyAgICAgICAgQ0dDb2xvclNwYWNlQ3Jl
YXRlRGV2aWNlUkdCKCksCisgICAgICAgIGtDR0ltYWdlQWxwaGFOb25lLAorICAgICAgICBzZWNv
bmRGcmFtZVByb3ZpZGVyLAorICAgICAgICBOVUxMLAorICAgICAgICAwLAorICAgICAgICBrQ0dS
ZW5kZXJpbmdJbnRlbnREZWZhdWx0CisgICAgKTsKKyAgICAKKyAgICAvLyBwbGFjZSB0aGUgdHdv
IGltYWdlcyBpbnRvIHRoZSBmaW5hbCBhbmltYXRlZCBnaWYgYW5kIHNldCByZWxhdGVkIG9wdGlv
bnMKKyAgICBDR0RhdGFQcm92aWRlclJlbGVhc2UoZmlyc3RGcmFtZVByb3ZpZGVyKTsKKyAgICBD
R0RhdGFQcm92aWRlclJlbGVhc2Uoc2Vjb25kRnJhbWVQcm92aWRlcik7CisgICAgQ0dJbWFnZURl
c3RpbmF0aW9uQWRkSW1hZ2UoYW5pbWF0ZWRHSUYsIGNnRmlyc3RGcmFtZSwgKENGRGljdGlvbmFy
eVJlZikgZnJhbWVQcm9wZXJ0aWVzKTsKKyAgICBDR0ltYWdlRGVzdGluYXRpb25BZGRJbWFnZShh
bmltYXRlZEdJRiwgY2dTZWNvbmRGcmFtZSwgKENGRGljdGlvbmFyeVJlZikgZnJhbWVQcm9wZXJ0
aWVzKTsKKyAgICBDR0ltYWdlRGVzdGluYXRpb25TZXRQcm9wZXJ0aWVzKGFuaW1hdGVkR0lGLCAo
Q0ZEaWN0aW9uYXJ5UmVmKSBnaWZQcm9wZXJ0aWVzKTsKKyAgICAKKyAgICAvLyBzYXZlIHRoZSBn
aWYgdG8gYSBmaWxlCisgICAgQ0dJbWFnZURlc3RpbmF0aW9uRmluYWxpemUoYW5pbWF0ZWRHSUYp
OworICAgIAorICAgIC8vIHJlbGVhc2UgdGhlIG1lbW9yeSB1c2VkCisgICAgQ0dJbWFnZVJlbGVh
c2UoY2dGaXJzdEZyYW1lKTsKKyAgICBDR0ltYWdlUmVsZWFzZShjZ1NlY29uZEZyYW1lKTsKKyAg
ICBDRlJlbGVhc2UoYW5pbWF0ZWRHSUYpOworfSAK
</data>
<flag name="review"
          id="324"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>3264</attachid>
            <date>2005-08-07 13:48:44 -0700</date>
            <delta_ts>2005-08-07 13:58:09 -0700</delta_ts>
            <desc>Fixed small issues</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>30564</size>
            <attacher name="Ben La Monica">ben.lamonica</attacher>
            
              <data encoding="base64">SW5kZXg6IHN2ZzJwbmcubQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvV2ViS2l0VG9v
bHMvc3ZnMnBuZy9zdmcycG5nLm0sdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMQpkaWZmIC11IC1y
MS4xIHN2ZzJwbmcubQotLS0gc3ZnMnBuZy5tCTI5IEp1bCAyMDA1IDA1OjI2OjA3IC0wMDAwCTEu
MQorKysgc3ZnMnBuZy5tCTcgQXVnIDIwMDUgMjA6NDY6NTkgLTAwMDAKQEAgLTI1LDI0ICsyNSw0
MCBAQAogCiAjaW1wb3J0IDxXZWJDb3JlK1NWRy9EcmF3RG9jdW1lbnRQcml2YXRlLmg+CiAjaW1w
b3J0IDxXZWJDb3JlK1NWRy9EcmF3Vmlldy5oPgorI2ltcG9ydCAiSW1hZ2VEaWZmLmgiCiAKIGV4
dGVybiBjb25zdCBkb3VibGUgc3ZnMnBuZ1ZlcnNpb25OdW1iZXI7CiBleHRlcm4gY29uc3QgdW5z
aWduZWQgY2hhciBzdmcycG5nVmVyc2lvblN0cmluZ1tdOwogCisvKiBnbG9iYWwgdmFyaWFibGVz
ICovCitCT09MIGlzTWF4SGVpZ2h0U3BlY2lmaWVkID0gTk87CitCT09MIGlzTWF4V2lkdGhTcGVj
aWZpZWQgPSBOTzsKK2ludCBtYXhXaWR0aCA9IDA7CitpbnQgbWF4SGVpZ2h0ID0gMDsKKwogdm9p
ZCB1c2FnZShjb25zdCBjaGFyICpuYW1lKQogewogICAgIHByaW50ZigiVXNhZ2U6ICVzIFtvcHRp
b25zXSBmaWxlW3NdXG4iLCBuYW1lKTsKICAgICBwcmludGYoIk9wdGlvbnM6XG4iKTsKLSAgICBw
cmludGYoIiAgLS12ZXJzaW9uXHRcdFx0UHJpbnRzIGZ1bGwgdmVyc2lvbiAoJS4xZikgaW5mb3Jt
YXRpb24gYW5kIGV4aXRzLlxuIiwgc3ZnMnBuZ1ZlcnNpb25OdW1iZXIpOwotICAgIHByaW50Zigi
ICAtLW91dHB1dCA8b3V0cHV0ZmlsZT4gZHVtcCBhIHBuZyBjb3B5IG9mIGEgc2luZ2xlIHN2ZyBp
bnB1dCBmaWxlIHRvIHRoZSBuYW1lZCBwYXRoXG4iKTsKLSAgICBwcmludGYoIiAgLS1zdWZmaXgg
PHN1ZmZpeD4gYXBwZW5kIDxzdWZmaXg+IHRvIGVhY2ggb3V0cHV0IGZpbGUgZS5nLiA8aW5wdXRu
YW1lPjxzdWZmaXg+LnBuZ1xuIik7CisgICAgcHJpbnRmKCIgIC0tYmFzZWxpbmUtZGlyIDxkaXJl
Y3Rvcnk+XHR0aGUgZGlyZWN0b3J5IHdoZXJlIHRoZSBiYXNlbGluZXMgYXJlIHN0b3JlZFxuIik7
CisgICAgcHJpbnRmKCIgIC0tYmFzZWxpbmUtc3VmZml4IDxzdWZmaXg+XHR0aGUgc3VmZml4IG9u
IHRoZSByZWZlcmVuY2UgdmVyc2lvbiBvZiBhIHBpY3R1cmVcbiIpOworICAgIHByaW50ZigiICAt
LW1heC13aWR0aCA8aW50Plx0XHRzZXRzIHRoZSB3aWR0aCBvZiB0aGUgb3V0cHV0IHBuZ1xuIik7
CisgICAgcHJpbnRmKCIgIC0tbWF4LWhlaWdodCA8aW50Plx0XHRzZXRzIHRoZSBoZWlnaHQgb2Yg
dGhlIG91dHB1dCBwbmdcbiIpOworICAgIHByaW50ZigiICAtLW91dHB1dCA8b3V0cHV0ZmlsZT5c
dFx0ZHVtcCBhIHBuZyBjb3B5IG9mIGEgc2luZ2xlIHN2ZyBpbnB1dCBmaWxlXG5cdFx0XHRcdHRv
IHRoZSBuYW1lZCBwYXRoXG4iKTsKKyAgICBwcmludGYoIiAgLS1vdXRwdXQtZGlyIDxkaXJlY3Rv
cnk+XHR0aGUgZGlyZWN0b3J5IHdoZXJlIGFsbCBmaWxlcyBhcmUgb3V0cHV0IHRvXG4iKTsKKyAg
ICBwcmludGYoIiAgLS1zdWZmaXggPHN1ZmZpeD5cdFx0YXBwZW5kIDxzdWZmaXg+IHRvIGVhY2gg
b3V0cHV0IGZpbGVcblx0XHRcdFx0ZS5nLiA8aW5wdXRuYW1lPjxzdWZmaXg+LnBuZ1xuXG4iKTsK
KyAgICBwcmludGYoIiAgLS12ZXJzaW9uXHRcdFx0UHJpbnRzIGZ1bGwgdmVyc2lvbiAoJS4xZikg
aW5mb3JtYXRpb24gYW5kIGV4aXRzXG4iLCBzdmcycG5nVmVyc2lvbk51bWJlcik7CiAgICAgcHJp
bnRmKCJXaGVuIC0tb3V0cHV0IGlzIG5vdCBzcGVjaWZpZWQsIG91dHB1dCBmaWxlcyBhcmUgY3Jl
YXRlZCBpbiB0aGUgc2FtZSBkaXJlY3RvcnlcbiIpOwotICAgIHByaW50ZigiYXMgdGhlIG9yaWdp
bmFsIHNvdXJjZSBmaWxlcyBlLmcuIDxzb3VyY2UgZGlyZWN0b3J5Pi88ZmlsZW5hbWU+PHN1ZmZp
eD4ucG5nIik7CisgICAgcHJpbnRmKCJhcyB0aGUgb3JpZ2luYWwgc291cmNlIGZpbGVzIGUuZy4g
PHNvdXJjZSBkaXJlY3Rvcnk+LzxmaWxlbmFtZT48c3VmZml4Pi5wbmdcbiIpOworICAgIHByaW50
ZigiXG5XaGVuIC0tYmFzZWxpbmUtc3VmZml4IGlzIHNwZWNpZmllZCwgc3ZnMnBuZyB3aWxsIGxv
b2sgZm9yIGEgUE5HIGZpbGUgdGhhdFxuIik7CisgICAgcHJpbnRmKCJjb250YWlucyBhbiBleGFt
cGxlIG9mIHdoYXQgdGhlIFNWRyBzaG91bGQgbG9vayBsaWtlIHdoZW4gcmVuZGVyZWQuIEl0IHdp
bGxcbiIpOworICAgIHByaW50ZigiY3JlYXRlIGEgPGZpbGVuYW1lPjxzdWZmaXg+LWRpZmYucG5n
IGZpbGUgdG8gc2hvdyB0aGVzZSBkaWZmZXJlbmNlcy5cblxuIik7IAogICAgIGV4aXQoMSk7CiB9
OwogCi12b2lkIG91dHB1dFBORyhOU1N0cmluZyAqc3ZnUGF0aCwgTlNTdHJpbmcgKnBuZ1BhdGgp
CitOU0JpdG1hcEltYWdlUmVwICpnZXRCaXRtYXBGb3JTVkcoTlNTdHJpbmcgKnN2Z1BhdGgpCiB7
CisgICAgCiAgICAgLy8gbG9hZCB0aGUgZ2l2ZW4gZG9jdW1lbnQKICAgICBEcmF3RG9jdW1lbnQg
KmRvY3VtZW50ID0gW1tEcmF3RG9jdW1lbnQgYWxsb2NdIGluaXRXaXRoQ29udGVudHNPZkZpbGU6
c3ZnUGF0aF07CiAgICAgCkBAIC01MSwyNCArNjcsMzQgQEAKICAgICBbdmlldyBzZXREb2N1bWVu
dDpkb2N1bWVudF07CiAgICAgW3ZpZXcgc2l6ZVRvRml0Vmlld0JveF07CiAgICAgCi0gICAgLy8g
TXkgbWF4aW11bSA1MDB4NTAwIHNpemUgaGFjazoKKyAgICAvLyBMaW1pdCB0aGUgbWF4aW11bSBz
aXplLCBhbmQgZGVmYXVsdCB0aGUgc2l6ZSB0byA1MDB4NTAwIGlmIG5vdCBzcGVjaWZpZWQKICAg
ICBOU1NpemUgYm91bmRzU2l6ZSA9IFt2aWV3IGJvdW5kc10uc2l6ZTsKLSAgICBpZiAoYm91bmRz
U2l6ZS53aWR0aCA+IDUwMCkKKyAgICBpZiAoaXNNYXhXaWR0aFNwZWNpZmllZCAmJiBib3VuZHNT
aXplLndpZHRoID4gbWF4V2lkdGgpIHsKKyAgICAgICAgLy8gcmVzaXplIHRoZSBoZWlnaHQgc28g
dGhhdCB0aGUgYXNwZWN0IHJhdGlvIHJlbWFpbnMgdGhlIHNhbWUKKyAgICAgICAgYm91bmRzU2l6
ZS5oZWlnaHQgPSAoYm91bmRzU2l6ZS5oZWlnaHQgLyBib3VuZHNTaXplLndpZHRoKSAqIG1heFdp
ZHRoOworICAgICAgICBib3VuZHNTaXplLndpZHRoID0gbWF4V2lkdGg7CisgICAgfQorICAgIGVs
c2UgaWYgKGJvdW5kc1NpemUud2lkdGggPD0gMCkKICAgICAgICAgYm91bmRzU2l6ZS53aWR0aCA9
IDUwMDsKLSAgICBpZiAoYm91bmRzU2l6ZS5oZWlnaHQgPiA1MDApCisgICAgICAgIAorICAgIGlm
IChpc01heEhlaWdodFNwZWNpZmllZCAmJiBib3VuZHNTaXplLmhlaWdodCA+IG1heEhlaWdodCkg
eworICAgICAgICAvLyByZXNpemUgdGhlIHdpZHRoIHNvIHRoYXQgdGhlIGFzcGVjdCByYXRpbyBy
ZWFtaW5zIHRoZSBzYW1lCisgICAgICAgIGJvdW5kc1NpemUud2lkdGggPSAoYm91bmRzU2l6ZS53
aWR0aCAvIGJvdW5kc1NpemUuaGVpZ2h0KSAqIG1heEhlaWdodDsKKyAgICAgICAgYm91bmRzU2l6
ZS5oZWlnaHQgPSBtYXhIZWlnaHQ7CisgICAgfQorICAgIGVsc2UgaWYgKGJvdW5kc1NpemUuaGVp
Z2h0IDw9IDApCiAgICAgICAgIGJvdW5kc1NpemUuaGVpZ2h0ID0gNTAwOworICAgIAogICAgIFt2
aWV3IHNldEZyYW1lU2l6ZTpib3VuZHNTaXplXTsKICAgICAKICAgICAvLyB0ZWxsIHRoYXQgdmll
dyB0byByZW5kZXIKICAgICBOU0JpdG1hcEltYWdlUmVwICppbWFnZVJlcCA9IFt2aWV3IGJpdG1h
cEltYWdlUmVwRm9yQ2FjaGluZ0Rpc3BsYXlJblJlY3Q6W3ZpZXcgYm91bmRzXV07CiAgICAgW3Zp
ZXcgY2FjaGVEaXNwbGF5SW5SZWN0Olt2aWV3IGJvdW5kc10gdG9CaXRtYXBJbWFnZVJlcDppbWFn
ZVJlcF07CiAgICAgCi0gICAgLy8gb3V0cHV0IHRoZSByZXN1bHRpbmcgaW1hZ2UKLSAgICBOU0Rh
dGEgKnBuZ0RhdGEgPSBbaW1hZ2VSZXAgcmVwcmVzZW50YXRpb25Vc2luZ1R5cGU6TlNQTkdGaWxl
VHlwZSBwcm9wZXJ0aWVzOm5pbF07Ci0gICAgW3BuZ0RhdGEgd3JpdGVUb0ZpbGU6c3ZnUGF0aCBh
dG9taWNhbGx5OllFU107Ci0gICAgCiAgICAgW3ZpZXcgcmVsZWFzZV07IC8vIHNob3VsZCBiZSBz
aW5nbGV0b24uCiAgICAgW2RvY3VtZW50IHJlbGVhc2VdOworICAgIAorICAgIHJldHVybiBpbWFn
ZVJlcDsKIH0KIAogaW50IG1haW4gKGludCBhcmdjLCBjb25zdCBjaGFyICphcmd2W10pCkBAIC03
Nyw4ICsxMDMsMTEgQEAKICAgICAvLyBkZWFsIHdpdGggYXJncwogICAgIE5TTXV0YWJsZUFycmF5
ICpzdmdzID0gW05TTXV0YWJsZUFycmF5IGFycmF5XTsKICAgICBjb25zdCBjaGFyICpuYW1lID0g
W1tbTlNTdHJpbmcgc3RyaW5nV2l0aFVURjhTdHJpbmc6YXJndlswXV0gbGFzdFBhdGhDb21wb25l
bnRdIFVURjhTdHJpbmddOwotICAgIE5TU3RyaW5nICpleHBsaWNpdE91dHB1dFBhdGggPSBuaWw7
CisgICAgTlNTdHJpbmcgKmV4cGxpY2l0T3V0cHV0RmlsZSA9IG5pbDsKKyAgICBOU1N0cmluZyAq
ZXhwbGljaXRPdXRwdXREaXJlY3RvcnkgPSBuaWw7CiAgICAgTlNTdHJpbmcgKm91dHB1dFN1ZmZp
eCA9IG5pbDsKKyAgICBOU1N0cmluZyAqYmFzZWxpbmVTdWZmaXggPSBuaWw7CisgICAgTlNTdHJp
bmcgKmV4cGxpY2l0QmFzZWxpbmVEaXJlY3RvcnkgPSBuaWw7CiAgICAgCiAgICAgZm9yKGludCB4
ID0gMTsgeCA8IGFyZ2M7IHgrKykgewogICAgICAgICBjb25zdCBjaGFyICphcmcgPSBhcmd2W3hd
OwpAQCAtOTIsMTIgKzEyMSwyMiBAQAogICAgICAgICAgICAgICAgIGV4aXQoMCk7CiAgICAgICAg
ICAgICB9IGVsc2UgaWYgKFthcmdTdHJpbmcgaXNFcXVhbFRvU3RyaW5nOkAiLS1vdXRwdXQiXSkg
ewogICAgICAgICAgICAgICAgIGlmICh4ICsgMSA8IGFyZ2MpIHsKLSAgICAgICAgICAgICAgICAg
ICAgZXhwbGljaXRPdXRwdXRQYXRoID0gW05TU3RyaW5nIHN0cmluZ1dpdGhVVEY4U3RyaW5nOmFy
Z3ZbeCsxXV07Ci0gICAgICAgICAgICAgICAgICAgIGlmIChbZXhwbGljaXRPdXRwdXRQYXRoIGhh
c1ByZWZpeDpAIi0tIl0pCi0gICAgICAgICAgICAgICAgICAgICAgICBOU0xvZyhAIldBUk5JTkc6
IGRpZCB5b3UgcmVhbGx5IG1lYW4gdG8gb3V0cHV0IHRvOiAlQCAgT3IgZGlkIHlvdSBqdXN0IGZv
cmdldCB0aGUgLS1vdXRwdXQgPGZpbGVuYW1lPiBhcmd1bWVudD8iLCBleHBsaWNpdE91dHB1dFBh
dGgpOworICAgICAgICAgICAgICAgICAgICBleHBsaWNpdE91dHB1dEZpbGUgPSBbTlNTdHJpbmcg
c3RyaW5nV2l0aFVURjhTdHJpbmc6YXJndlt4KzFdXTsKKyAgICAgICAgICAgICAgICAgICAgaWYg
KFtleHBsaWNpdE91dHB1dEZpbGUgaGFzUHJlZml4OkAiLS0iXSkKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHByaW50ZigiV0FSTklORzogZGlkIHlvdSByZWFsbHkgbWVhbiB0byBvdXRwdXQgdG86
ICVzICBPciBkaWQgeW91IGp1c3QgZm9yZ2V0IHRoZSAtLW91dHB1dCA8ZmlsZW5hbWU+IGFyZ3Vt
ZW50P1xuIiwgW2V4cGxpY2l0T3V0cHV0RmlsZSBVVEY4U3RyaW5nXSk7CisgICAgICAgICAgICAg
ICAgICAgIHgrKzsgLy8gdG8gc2tpcCB0aGUgbmV4dCBhcmcKKyAgICAgICAgICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgICAgICAgICBwcmludGYoIi0tb3V0cHV0IHJlcXVpcmVzIGFuIGFy
Z3VtZW50LlxuIik7CisgICAgICAgICAgICAgICAgICAgIHVzYWdlKG5hbWUpOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSBpZiAoW2FyZ1N0cmluZyBpc0VxdWFsVG9TdHJp
bmc6QCItLW91dHB1dC1kaXIiXSkgeworICAgICAgICAgICAgICAgIGlmICh4ICsgMSA8IGFyZ2Mp
IHsKKyAgICAgICAgICAgICAgICAgICAgZXhwbGljaXRPdXRwdXREaXJlY3RvcnkgPSBbTlNTdHJp
bmcgc3RyaW5nV2l0aFVURjhTdHJpbmc6YXJndlt4KzFdXTsKKyAgICAgICAgICAgICAgICAgICAg
aWYgKFtleHBsaWNpdE91dHB1dERpcmVjdG9yeSBoYXNQcmVmaXg6QCItLSJdKQorICAgICAgICAg
ICAgICAgICAgICAgICAgcHJpbnRmKCJXQVJOSU5HOiBkaWQgeW91IHJlYWxseSBtZWFuIHRvIG91
dHB1dCB0bzogJXMgIE9yIGRpZCB5b3UganVzdCBmb3JnZXQgdGhlIC0tb3V0cHV0IDxmaWxlbmFt
ZT4gYXJndW1lbnQ/XG4iLCBbZXhwbGljaXRPdXRwdXREaXJlY3RvcnkgVVRGOFN0cmluZ10pOwog
ICAgICAgICAgICAgICAgICAgICB4Kys7IC8vIHRvIHNraXAgdGhlIG5leHQgYXJnCiAgICAgICAg
ICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgTlNMb2coQCItLW91dHB1dCBy
ZXF1aXJlcyBhbiBhcmd1bWVudC4iKTsKKyAgICAgICAgICAgICAgICAgICAgcHJpbnRmKCItLW91
dHB1dC1kaXIgcmVxdWlyZXMgYW4gYXJndW1lbnQuXG4iKTsKICAgICAgICAgICAgICAgICAgICAg
dXNhZ2UobmFtZSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfSAgZWxzZSBpZiAo
W2FyZ1N0cmluZyBpc0VxdWFsVG9TdHJpbmc6QCItLXN1ZmZpeCJdKSB7CkBAIC0xMDUsMTYgKzE0
NCw1OCBAQAogICAgICAgICAgICAgICAgICAgICBvdXRwdXRTdWZmaXggPSBbTlNTdHJpbmcgc3Ry
aW5nV2l0aFVURjhTdHJpbmc6YXJndlt4KzFdXTsKICAgICAgICAgICAgICAgICAgICAgeCsrOyAv
LyB0byBza2lwIHRoZSBuZXh0IGFyZwogICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAg
ICAgICAgICAgICAgIE5TTG9nKEAiLS1zdWZmaXggcmVxdWlyZXMgYW4gYXJndW1lbnQuIik7Cisg
ICAgICAgICAgICAgICAgICAgIHByaW50ZigiLS1zdWZmaXggcmVxdWlyZXMgYW4gYXJndW1lbnQu
XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgdXNhZ2UobmFtZSk7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgfSBlbHNlIGlmIChbYXJnU3RyaW5nIGlzRXF1YWxUb1N0cmluZzpAIi0t
bWF4LXdpZHRoIl0pIHsKKyAgICAgICAgICAgICAgICBpZiAoeCArIDEgPCBhcmdjKSB7CisgICAg
ICAgICAgICAgICAgICAgIG1heFdpZHRoID0gW1tOU1N0cmluZyBzdHJpbmdXaXRoVVRGOFN0cmlu
Zzphcmd2W3grMV1dIGludFZhbHVlXTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKG1heFdpZHRo
IDw9IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHByaW50ZigiLS1tYXgtd2lkdGggbXVz
dCBiZSBhbiBpbnRlZ2VyID4gMFxuIik7CisgICAgICAgICAgICAgICAgICAgICAgICB1c2FnZShu
YW1lKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBpc01heFdp
ZHRoU3BlY2lmaWVkID0gWUVTOworICAgICAgICAgICAgICAgICAgICB4Kys7IC8vIHNraXAgdG8g
dGhlIG5leHQgYXJnCisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAg
ICAgcHJpbnRmKCItLW1heC13aWR0aCByZXF1aXJlcyBhbiBpbnRlZ2VyIGFyZ3VtZW50LlxuIik7
CisgICAgICAgICAgICAgICAgICAgIHVzYWdlKG5hbWUpOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIH0gZWxzZSBpZiAoW2FyZ1N0cmluZyBpc0VxdWFsVG9TdHJpbmc6QCItLW1heC1o
ZWlnaHQiXSkgeworICAgICAgICAgICAgICAgIGlmICh4ICsgMSA8IGFyZ2MpIHsKKyAgICAgICAg
ICAgICAgICAgICAgbWF4SGVpZ2h0ID0gW1tOU1N0cmluZyBzdHJpbmdXaXRoVVRGOFN0cmluZzph
cmd2W3grMV1dIGludFZhbHVlXTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKG1heEhlaWdodCA8
PSAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBwcmludGYoIi0tbWF4LWhlaWdodCBtdXN0
IGJlIGFuIGludGVnZXIgPiAwXG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHVzYWdlKG5h
bWUpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGlzTWF4SGVp
Z2h0U3BlY2lmaWVkID0gWUVTOworICAgICAgICAgICAgICAgICAgICB4Kys7IC8vIHNraXAgdG8g
dGhlIG5leHQgYXJnCisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAg
ICAgcHJpbnRmKCItLW1heC1oZWlnaHQgcmVxdWlyZXMgYW4gaW50ZWdlciA+IDBcbiIpOworICAg
ICAgICAgICAgICAgICAgICB1c2FnZShuYW1lKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICB9IGVsc2UgaWYgKFthcmdTdHJpbmcgaXNFcXVhbFRvU3RyaW5nOkAiLS1iYXNlbGluZS1z
dWZmaXgiXSkgeworICAgICAgICAgICAgICAgIGlmKHggKyAxIDwgYXJnYykgeworICAgICAgICAg
ICAgICAgICAgICBiYXNlbGluZVN1ZmZpeCA9IFtOU1N0cmluZyBzdHJpbmdXaXRoVVRGOFN0cmlu
Zzphcmd2W3grMV1dOworICAgICAgICAgICAgICAgICAgICB4Kys7IC8vIHNraXAgdG8gdGhlIG5l
eHQgYXJnCisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgcHJp
bnRmKCItLWJhc2VsaW5lLXN1ZmZpeCByZXF1aXJlcyB0aGUgc3VmZml4IGZvciB0aGUgcmVmZXJl
bmNlIFBOR3MuXG4iKTsKKyAgICAgICAgICAgICAgICAgICAgdXNhZ2UobmFtZSk7CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIGlmIChbYXJnU3RyaW5nIGlzRXF1YWxUb1N0
cmluZzpAIi0tYmFzZWxpbmUtZGlyIl0pIHsKKyAgICAgICAgICAgICAgICBpZih4ICsgMSA8IGFy
Z2MpIHsKKyAgICAgICAgICAgICAgICAgICAgZXhwbGljaXRCYXNlbGluZURpcmVjdG9yeSA9IFtO
U1N0cmluZyBzdHJpbmdXaXRoVVRGOFN0cmluZzphcmd2W3grMV1dOworICAgICAgICAgICAgICAg
ICAgICB4Kys7IC8vIHNraXAgdG8gdGhlIG5leHQgYXJnCisgICAgICAgICAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgICAgICAgICAgcHJpbnRmKCItLWJhc2VsaW5lLWRpciByZXF1aXJlcyB0
aGUgc3VmZml4IGZvciB0aGUgcmVmZXJlbmNlIFBOR3MuXG4iKTsKICAgICAgICAgICAgICAgICAg
ICAgdXNhZ2UobmFtZSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfSBlbHNlIHsK
LSAgICAgICAgICAgICAgICBwcmludGYoIlVucmVjb2duaXplZCBvcHRpb24gJUBcbiIsIGFyZ1N0
cmluZyk7CisgICAgICAgICAgICAgICAgcHJpbnRmKCJVbnJlY29nbml6ZWQgb3B0aW9uICVzXG4i
LCBbYXJnU3RyaW5nIFVURjhTdHJpbmddKTsKICAgICAgICAgICAgICAgICB1c2FnZShuYW1lKTsK
ICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGlmICghW1tOU0Zp
bGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRoOlthcmdTdHJpbmcgc3Ry
aW5nQnlTdGFuZGFyZGl6aW5nUGF0aF1dKSB7Ci0gICAgICAgICAgICAgICAgcHJpbnRmKCJTVkcg
ZG9lcyBub3QgZXhpc3QgYXQgcGF0aDogJUBcbiIsIGFyZ1N0cmluZyk7CisgICAgICAgICAgICAg
ICAgcHJpbnRmKCJTVkcgZG9lcyBub3QgZXhpc3QgYXQgcGF0aDogJXNcbiIsIFthcmdTdHJpbmcg
VVRGOFN0cmluZ10pOwogICAgICAgICAgICAgICAgIGV4aXQoMSk7CiAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICBbc3ZncyBhZGRPYmplY3Q6YXJnU3RyaW5nXTsKQEAgLTEyNiwyOCArMjA3LDgw
IEBACiAgICAgICAgIHVzYWdlKG5hbWUpOwogICAgIH0KICAgICAKLSAgICBpZiAoIChbc3ZncyBj
b3VudF0gPiAxKSAmJiBleHBsaWNpdE91dHB1dFBhdGgpIHsKKyAgICBpZiAoIChbc3ZncyBjb3Vu
dF0gPiAxKSAmJiBleHBsaWNpdE91dHB1dEZpbGUpIHsKICAgICAgICAgcHJpbnRmKCItLW91dHB1
dCBuYW1lIHNwZWNpZmVkLCB5ZXQgbW9yZSB0aGFuIG9uZSBpbnB1dCBmaWxlIHdhcyBnaXZlbiFc
blxuIik7CiAgICAgICAgIHVzYWdlKG5hbWUpOwogICAgIH0KICAgICAKKyAgICAKICAgICBOU1N0
cmluZyAqc3ZnUGF0aCA9IG5pbDsKICAgICBmb3JlYWNoYXJyYXkoc3ZnUGF0aCwgc3Zncykgewot
ICAgICAgICBOU1N0cmluZyAqcG5nUGF0aCA9IG5pbDsKLSAgICAgICAgaWYgKGV4cGxpY2l0T3V0
cHV0UGF0aCkKLSAgICAgICAgICAgIHBuZ1BhdGggPSBleHBsaWNpdE91dHB1dFBhdGg7CisgICAg
ICAgIE5TQml0bWFwSW1hZ2VSZXAgKnN2Z0JpdG1hcCA9IG5pbDsKKyAgICAgICAgTlNTdHJpbmcg
KnN2Z1BOR1BhdGggPSBuaWw7CisgICAgICAgIAorICAgICAgICBpZiAoZXhwbGljaXRPdXRwdXRG
aWxlKQorICAgICAgICAgICAgc3ZnUE5HUGF0aCA9IGV4cGxpY2l0T3V0cHV0RmlsZTsKICAgICAg
ICAgZWxzZSB7Ci0gICAgICAgICAgICBwbmdQYXRoID0gW3N2Z1BhdGggc3RyaW5nQnlEZWxldGlu
Z1BhdGhFeHRlbnNpb25dOworICAgICAgICAgICAgaWYgKGV4cGxpY2l0T3V0cHV0RGlyZWN0b3J5
KQorICAgICAgICAgICAgICAgIHN2Z1BOR1BhdGggPSBbW2V4cGxpY2l0T3V0cHV0RGlyZWN0b3J5
IHN0cmluZ0J5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpbc3ZnUGF0aCBsYXN0UGF0aENvbXBvbmVu
dF1dIHN0cmluZ0J5RGVsZXRpbmdQYXRoRXh0ZW5zaW9uXTsKKyAgICAgICAgICAgIGVsc2UgICAg
IAorICAgICAgICAgICAgICAgIHN2Z1BOR1BhdGggPSBbc3ZnUGF0aCBzdHJpbmdCeURlbGV0aW5n
UGF0aEV4dGVuc2lvbl07CisgICAgICAgICAgICAKICAgICAgICAgICAgIGlmIChvdXRwdXRTdWZm
aXgpCi0gICAgICAgICAgICAgICAgcG5nUGF0aCA9IFtwbmdQYXRoIHN0cmluZ0J5QXBwZW5kaW5n
U3RyaW5nOm91dHB1dFN1ZmZpeF07Ci0gICAgICAgICAgICBwbmdQYXRoID0gW3BuZ1BhdGggc3Ry
aW5nQnlBcHBlbmRpbmdQYXRoRXh0ZW5zaW9uOkAicG5nIl07CisgICAgICAgICAgICAgICAgc3Zn
UE5HUGF0aCA9IFtzdmdQTkdQYXRoIHN0cmluZ0J5QXBwZW5kaW5nU3RyaW5nOm91dHB1dFN1ZmZp
eF07CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHN2Z1BOR1BhdGggPSBbc3ZnUE5HUGF0aCBz
dHJpbmdCeUFwcGVuZGluZ1BhdGhFeHRlbnNpb246QCJwbmciXTsKKyAgICAgICAgfQorICAgICAg
ICAKKyAgICAgICAgLy8gZ2VuZXJhdGUgdGhlIFNWRywgc2F2ZSB0aGUgYml0bWFwIGRhdGEgZm9y
IHRoZSBkaWZmCisgICAgICAgIHN2Z0JpdG1hcCA9IGdldEJpdG1hcEZvclNWRyhzdmdQYXRoKTsK
KyAgICAgICAgCisgICAgICAgIC8vIG91dHB1dCB0aGUgcmVzdWx0aW5nIFNWRyB0byBhIFBORyBm
aWxlCisgICAgICAgIE5TRGF0YSAqc3ZnUE5HRGF0YSA9IFtzdmdCaXRtYXAgcmVwcmVzZW50YXRp
b25Vc2luZ1R5cGU6TlNQTkdGaWxlVHlwZSBwcm9wZXJ0aWVzOm5pbF07CisgICAgICAgIFtzdmdQ
TkdEYXRhIHdyaXRlVG9GaWxlOnN2Z1BOR1BhdGggYXRvbWljYWxseTpZRVNdOworICAgICAgICAK
KyAgICAgICAgaWYgKGJhc2VsaW5lU3VmZml4IHx8IGV4cGxpY2l0QmFzZWxpbmVEaXJlY3Rvcnkp
IHsKKyAgICAgICAgICAgIE5TU3RyaW5nICpkaWZmSW1hZ2VQYXRoID0gW1tbc3ZnUE5HUGF0aCBz
dHJpbmdCeURlbGV0aW5nUGF0aEV4dGVuc2lvbl0KKyAgICAgICAgICAgICAgICBzdHJpbmdCeUFw
cGVuZGluZ1N0cmluZzpAIi1kaWZmIl0KKyAgICAgICAgICAgICAgICBzdHJpbmdCeUFwcGVuZGlu
Z1BhdGhFeHRlbnNpb246QCJwbmciXTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgTlNTdHJp
bmcgKmFuaW1hdGVkR0lGUGF0aCA9IFtbZGlmZkltYWdlUGF0aCBzdHJpbmdCeURlbGV0aW5nUGF0
aEV4dGVuc2lvbl0KKyAgICAgICAgICAgICAgICBzdHJpbmdCeUFwcGVuZGluZ1BhdGhFeHRlbnNp
b246QCJnaWYiXTsKKworICAgICAgICAgICAgTlNTdHJpbmcgKmJhc2VsaW5lSW1hZ2VQYXRoID0g
bmlsOworICAgICAgICAgICAgCisgICAgICAgICAgICAvLyBpZiBzZXQsIGxvb2sgZm9yIGJhc2Vs
aW5lcyBpbiBhIHNlcGVyYXRlIGRpcmVjdG9yeQorICAgICAgICAgICAgaWYgKGV4cGxpY2l0QmFz
ZWxpbmVEaXJlY3RvcnkpCisgICAgICAgICAgICAgICAgYmFzZWxpbmVJbWFnZVBhdGggPSBbW2V4
cGxpY2l0QmFzZWxpbmVEaXJlY3RvcnkgCisgICAgICAgICAgICAgICAgICAgIHN0cmluZ0J5QXBw
ZW5kaW5nUGF0aENvbXBvbmVudDpbc3ZnUGF0aCBsYXN0UGF0aENvbXBvbmVudF1dIHN0cmluZ0J5
RGVsZXRpbmdQYXRoRXh0ZW5zaW9uXTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAg
ICBiYXNlbGluZUltYWdlUGF0aCA9IFtzdmdQYXRoIHN0cmluZ0J5RGVsZXRpbmdQYXRoRXh0ZW5z
aW9uXTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8gaWYgYmFzZWxpbmVzIGhhdmUgYSBz
cGVjaWFsIHN1ZmZpeCwgYXBwZW5kIHRoYXQgdG8gdGhlIHBhdGgKKyAgICAgICAgICAgIGlmIChi
YXNlbGluZVN1ZmZpeCkKKyAgICAgICAgICAgICAgICBiYXNlbGluZUltYWdlUGF0aCA9IFtiYXNl
bGluZUltYWdlUGF0aCBzdHJpbmdCeUFwcGVuZGluZ1N0cmluZzpiYXNlbGluZVN1ZmZpeF07Cisg
ICAgICAgICAgICAKKyAgICAgICAgICAgIGJhc2VsaW5lSW1hZ2VQYXRoID0gW2Jhc2VsaW5lSW1h
Z2VQYXRoIHN0cmluZ0J5QXBwZW5kaW5nUGF0aEV4dGVuc2lvbjpAInBuZyJdOworCisgICAgICAg
ICAgICAvLyBjb21wYXJlCisgICAgICAgICAgICBOU0JpdG1hcEltYWdlUmVwICpyZWZlcmVuY2VC
aXRtYXAgPSBbTlNCaXRtYXBJbWFnZVJlcCBpbWFnZVJlcFdpdGhDb250ZW50c09mVVJMOltOU1VS
TCBmaWxlVVJMV2l0aFBhdGg6YmFzZWxpbmVJbWFnZVBhdGhdXTsKKyAgICAgICAgICAgIE5TQml0
bWFwSW1hZ2VSZXAgKmRpZmZCaXRtYXAgPSBnZXREaWZmZXJlbmNlQml0bWFwKHN2Z0JpdG1hcCwg
cmVmZXJlbmNlQml0bWFwKTsKKworICAgICAgICAgICAgLy8gb3V0cHV0IHRoZSByZXN1bHRpbmcg
U1ZHIHRvIGEgUE5HIGZpbGUKKyAgICAgICAgICAgIE5TRGF0YSAqZGlmZlBOR0RhdGEgPSBbZGlm
ZkJpdG1hcCByZXByZXNlbnRhdGlvblVzaW5nVHlwZTpOU1BOR0ZpbGVUeXBlIHByb3BlcnRpZXM6
bmlsXTsKKyAgICAgICAgICAgIFtkaWZmUE5HRGF0YSB3cml0ZVRvRmlsZTpkaWZmSW1hZ2VQYXRo
IGF0b21pY2FsbHk6WUVTXTsKKworICAgICAgICAgICAgLy8gc2F2ZSB0aGUgcmVmZXJlbmNlIGFu
ZCB0aGUgc3ZnIGltYWdlcyBpbiBhbiBhbmltYXRlZCBHSUYKKyAgICAgICAgICAgIHNhdmVBbmlt
YXRlZEdJRlRvRmlsZShzdmdCaXRtYXAsIHJlZmVyZW5jZUJpdG1hcCwgYW5pbWF0ZWRHSUZQYXRo
KTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgZmxvYXQgcGVyY2VudGFnZSA9IGNvbXB1dGVQ
ZXJjZW50YWdlRGlmZmVyZW50KGRpZmZCaXRtYXApOworICAgICAgICAgICAgcHJpbnRmKCIlc1x0
JTMuM2YlJVx0JXNcbiIsIFtzdmdQYXRoIFVURjhTdHJpbmddLCBwZXJjZW50YWdlLCAocGVyY2Vu
dGFnZSA+IDEgPyAiRmFpbGVkLiIgOiAiUGFzc2VkLiIpKTsKKyAgICAgICAgICAgIAorICAgICAg
ICAgICAgW2RpZmZCaXRtYXAgcmVsZWFzZV07CiAgICAgICAgIH0KLSAgICAgICAgb3V0cHV0UE5H
KHN2Z1BhdGgsIHBuZ1BhdGgpOwogICAgIH0KICAgICAKICAgICBbcG9vbCBkcmFpbl07CiAgICAg
CiAgICAgcmV0dXJuIDA7CiB9Ci0KLQpJbmRleDogc3ZnMnBuZy54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9XZWJLaXRUb29scy9zdmcycG5n
L3N2ZzJwbmcueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaix2CnJldHJpZXZpbmcgcmV2aXNpb24g
MS4xCmRpZmYgLXUgLXIxLjEgcHJvamVjdC5wYnhwcm9qCi0tLSBzdmcycG5nLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oJMjkgSnVsIDIwMDUgMDU6MjY6MDcgLTAwMDAJMS4xCisrKyBzdmcycG5n
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJNyBBdWcgMjAwNSAyMDo0NzowMCAtMDAwMApAQCAt
MTAsNiArMTAsMTEgQEAKIAkJOERENzZGOUEwNDg2QUE3NjAwRDk2QjVFIC8qIHN2ZzJwbmcubSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4RkI3Nzk2RkU4
NDE1NURDMDJBQUMwNyAvKiBzdmcycG5nLm0gKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
KTsgfTsgfTsKIAkJOERENzZGOUMwNDg2QUE3NjAwRDk2QjVFIC8qIEZvdW5kYXRpb24uZnJhbWV3
b3JrIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDhG
Qjc3OUVGRTg0MTU1REMwMkFBQzA3IC8qIEZvdW5kYXRpb24uZnJhbWV3b3JrICovOyB9OwogCQlB
ODk4Rjc5NTA4ODI0QjRBMDA3NUVGQjIgLyogV2ViQ29yZStTVkcuZnJhbWV3b3JrIGluIEZyYW1l
d29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTg5OEY3OTQwODgyNEI0
QTAwNzVFRkIyIC8qIFdlYkNvcmUrU1ZHLmZyYW1ld29yayAqLzsgfTsKKwkJQjUwRDlBRkIwOEEw
MDQ4NTAwRUNGNzgyIC8qIFF1YXJ0ekNvcmUuZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjUwRDlBRkEwOEEwMDQ4NTAwRUNGNzgyIC8q
IFF1YXJ0ekNvcmUuZnJhbWV3b3JrICovOyB9OworCQlCNTU1OTg4OTA4QTM0MUUzMDAxRUI1RkQg
LyogSW1hZ2VEaWZmLm0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBCNTU1OTg4ODA4QTM0MUUzMDAxRUI1RkQgLyogSW1hZ2VEaWZmLm0gKi87IH07CisJCUI1
NTU5OEFFMDhBMzQ0MEIwMDFFQjVGRCAvKiBJbWFnZURpZmYuaCBpbiBDb3B5RmlsZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjU1NTk4QUQwOEEzNDQwQjAwMUVCNUZEIC8q
IEltYWdlRGlmZi5oICovOyB9OworCQlCNTlGNThGQzA4QTFEMUNBMDBCRTI2NjQgLyogQXBwS2l0
LmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEI1OUY1OEZCMDhBMUQxQ0EwMEJFMjY2NCAvKiBBcHBLaXQuZnJhbWV3b3JrICovOyB9Owor
CQlCNUQ5MjVBMzA4QTRCODc3MDBCQzk0RjYgLyogc3ZnMnBuZyBpbiBDb3B5RmlsZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOERENzZGQTEwNDg2QUE3NjAwRDk2QjVFIC8q
IHN2ZzJwbmcgKi87IH07CiAvKiBFbmQgUEJYQnVpbGRGaWxlIHNlY3Rpb24gKi8KIAogLyogQmVn
aW4gUEJYQnVpbGRTdHlsZSBzZWN0aW9uICovCkBAIC00MywxNyArNDgsMjMgQEAKIAkJCWRzdFBh
dGggPSAvdXNyL3NoYXJlL21hbi9tYW4xLzsKIAkJCWRzdFN1YmZvbGRlclNwZWMgPSAwOwogCQkJ
ZmlsZXMgPSAoCisJCQkJQjU1NTk4QUUwOEEzNDQwQjAwMUVCNUZEIC8qIEltYWdlRGlmZi5oIGlu
IENvcHlGaWxlcyAqLywKKwkJCQlCNUQ5MjVBMzA4QTRCODc3MDBCQzk0RjYgLyogc3ZnMnBuZyBp
biBDb3B5RmlsZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vz
c2luZyA9IDE7CiAJCX07CiAvKiBFbmQgUEJYQ29weUZpbGVzQnVpbGRQaGFzZSBzZWN0aW9uICov
CiAKIC8qIEJlZ2luIFBCWEZpbGVSZWZlcmVuY2Ugc2VjdGlvbiAqLwotCQkwOEZCNzc5NkZFODQx
NTVEQzAyQUFDMDcgLyogc3ZnMnBuZy5tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLm9iamM7IHBh
dGggPSBzdmcycG5nLm07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA4RkI3Nzk2RkU4
NDE1NURDMDJBQUMwNyAvKiBzdmcycG5nLm0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5vYmpjOyBwYXRoID0gc3ZnMnBuZy5tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB0YWJXaWR0aCA9IDQ7IHVzZXNUYWJzID0gMDsgfTsKIAkJMDhGQjc3OUVGRTg0MTU1REMwMkFB
QzA3IC8qIEZvdW5kYXRpb24uZnJhbWV3b3JrICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gd3JhcHBlci5mcmFtZXdvcms7IG5hbWUgPSBGb3VuZGF0aW9u
LmZyYW1ld29yazsgcGF0aCA9IC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0ZvdW5kYXRpb24u
ZnJhbWV3b3JrOyBzb3VyY2VUcmVlID0gIjxhYnNvbHV0ZT4iOyB9OwogCQkzMkE3MEFBQjAzNzA1
RTFGMDBDOTE3ODMgLyogc3ZnMnBuZ19QcmVmaXgucGNoICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBzdmcycG5nX1ByZWZpeC5wY2g7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCThERDc2RkExMDQ4NkFBNzYwMEQ5NkI1RSAvKiBzdmcycG5nICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSAiY29tcGlsZWQubWFjaC1vLmV4ZWN1dGFi
bGUiOyBpbmNsdWRlSW5JbmRleCA9IDA7IHBhdGggPSBzdmcycG5nOyBzb3VyY2VUcmVlID0gQlVJ
TFRfUFJPRFVDVFNfRElSOyB9OwogCQlBODk4Rjc5NDA4ODI0QjRBMDA3NUVGQjIgLyogV2ViQ29y
ZStTVkcuZnJhbWV3b3JrICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gd3JhcHBlci5mcmFtZXdvcms7IHBhdGggPSAiV2ViQ29yZStTVkcuZnJhbWV3b3Jr
Ijsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKKwkJQjUwRDlBRkEwOEEwMDQ4
NTAwRUNGNzgyIC8qIFF1YXJ0ekNvcmUuZnJhbWV3b3JrICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gd3JhcHBlci5mcmFtZXdvcms7IG5hbWUgPSBRdWFy
dHpDb3JlLmZyYW1ld29yazsgcGF0aCA9IC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1F1YXJ0
ekNvcmUuZnJhbWV3b3JrOyBzb3VyY2VUcmVlID0gIjxhYnNvbHV0ZT4iOyB9OworCQlCNTU1OTg4
ODA4QTM0MUUzMDAxRUI1RkQgLyogSW1hZ2VEaWZmLm0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
b2JqYzsgcGF0aCA9IEltYWdlRGlmZi5tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlC
NTU1OThBRDA4QTM0NDBCMDAxRUI1RkQgLyogSW1hZ2VEaWZmLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEltYWdlRGlmZi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlCNTlGNThGQjA4QTFEMUNBMDBCRTI2NjQgLyogQXBwS2l0LmZyYW1ld29yayAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHdyYXBwZXIuZnJhbWV3b3Jr
OyBuYW1lID0gQXBwS2l0LmZyYW1ld29yazsgcGF0aCA9IC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL0FwcEtpdC5mcmFtZXdvcms7IHNvdXJjZVRyZWUgPSAiPGFic29sdXRlPiI7IH07CiAvKiBF
bmQgUEJYRmlsZVJlZmVyZW5jZSBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWEZyYW1ld29ya3NC
dWlsZFBoYXNlIHNlY3Rpb24gKi8KQEAgLTYzLDYgKzc0LDggQEAKIAkJCWZpbGVzID0gKAogCQkJ
CThERDc2RjlDMDQ4NkFBNzYwMEQ5NkI1RSAvKiBGb3VuZGF0aW9uLmZyYW1ld29yayBpbiBGcmFt
ZXdvcmtzICovLAogCQkJCUE4OThGNzk1MDg4MjRCNEEwMDc1RUZCMiAvKiBXZWJDb3JlK1NWRy5m
cmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLywKKwkJCQlCNTBEOUFGQjA4QTAwNDg1MDBFQ0Y3ODIg
LyogUXVhcnR6Q29yZS5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLywKKwkJCQlCNTlGNThGQzA4
QTFEMUNBMDBCRTI2NjQgLyogQXBwS2l0LmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovLAogCQkJ
KTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAt
ODQsNiArOTcsOCBAQAogCQkJY2hpbGRyZW4gPSAoCiAJCQkJMzJBNzBBQUIwMzcwNUUxRjAwQzkx
NzgzIC8qIHN2ZzJwbmdfUHJlZml4LnBjaCAqLywKIAkJCQkwOEZCNzc5NkZFODQxNTVEQzAyQUFD
MDcgLyogc3ZnMnBuZy5tICovLAorCQkJCUI1NTU5ODg4MDhBMzQxRTMwMDFFQjVGRCAvKiBJbWFn
ZURpZmYubSAqLywKKwkJCQlCNTU1OThBRDA4QTM0NDBCMDAxRUI1RkQgLyogSW1hZ2VEaWZmLmgg
Ki8sCiAJCQkpOwogCQkJbmFtZSA9IFNvdXJjZTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
CkBAIC05MSw2ICsxMDYsOCBAQAogCQkwOEZCNzc5REZFODQxNTVEQzAyQUFDMDcgLyogRXh0ZXJu
YWwgRnJhbWV3b3JrcyBhbmQgTGlicmFyaWVzICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJ
CQljaGlsZHJlbiA9ICgKKwkJCQlCNTlGNThGQjA4QTFEMUNBMDBCRTI2NjQgLyogQXBwS2l0LmZy
YW1ld29yayAqLywKKwkJCQlCNTBEOUFGQTA4QTAwNDg1MDBFQ0Y3ODIgLyogUXVhcnR6Q29yZS5m
cmFtZXdvcmsgKi8sCiAJCQkJQTg5OEY3OTQwODgyNEI0QTAwNzVFRkIyIC8qIFdlYkNvcmUrU1ZH
LmZyYW1ld29yayAqLywKIAkJCQkwOEZCNzc5RUZFODQxNTVEQzAyQUFDMDcgLyogRm91bmRhdGlv
bi5mcmFtZXdvcmsgKi8sCiAJCQkpOwpAQCAtMTY1LDYgKzE4Miw3IEBACiAJCQlidWlsZEFjdGlv
bk1hc2sgPSAyMTQ3NDgzNjQ3OwogCQkJZmlsZXMgPSAoCiAJCQkJOERENzZGOUEwNDg2QUE3NjAw
RDk2QjVFIC8qIHN2ZzJwbmcubSBpbiBTb3VyY2VzICovLAorCQkJCUI1NTU5ODg5MDhBMzQxRTMw
MDFFQjVGRCAvKiBJbWFnZURpZmYubSBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlG
b3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMTc1LDYgKzE5Myw3IEBA
CiAJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7CiAJ
CQkJQ09QWV9QSEFTRV9TVFJJUCA9IE5POworCQkJCUZSQU1FV09SS19TRUFSQ0hfUEFUSFMgPSAv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3JrczsKIAkJCQlHQ0NfRFlOQU1JQ19OT19QSUMgPSBOTzsK
IAkJCQlHQ0NfRU5BQkxFX0ZJWF9BTkRfQ09OVElOVUUgPSBZRVM7CiAJCQkJR0NDX0dFTkVSQVRF
X0RFQlVHR0lOR19TWU1CT0xTID0gWUVTOwpAQCAtMTg0LDcgKzIwMyw5IEBACiAJCQkJR0NDX1BS
RUZJWF9IRUFERVIgPSBzdmcycG5nX1ByZWZpeC5wY2g7CiAJCQkJR0NDX1dBUk5fQUJPVVRfUkVU
VVJOX1RZUEUgPSBZRVM7CiAJCQkJR0NDX1dBUk5fVU5VU0VEX1ZBUklBQkxFID0gWUVTOworCQkJ
CUhFQURFUl9TRUFSQ0hfUEFUSFMgPSAiIjsKIAkJCQlJTlNUQUxMX1BBVEggPSAiJChIT01FKS9i
aW4iOworCQkJCUxJQlJBUllfU0VBUkNIX1BBVEhTID0gIiI7CiAJCQkJUFJFQklORElORyA9IE5P
OwogCQkJCVBST0RVQ1RfTkFNRSA9IHN2ZzJwbmc7CiAJCQkJVkVSU0lPTklOR19TWVNURU0gPSAi
YXBwbGUtZ2VuZXJpYyI7CkBAIC0xOTYsNiArMjE3LDcgQEAKIAkJCWlzYSA9IFhDQnVpbGRDb25m
aWd1cmF0aW9uOwogCQkJYnVpbGRTZXR0aW5ncyA9IHsKIAkJCQlDT1BZX1BIQVNFX1NUUklQID0g
WUVTOworCQkJCUZSQU1FV09SS19TRUFSQ0hfUEFUSFMgPSAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3JrczsKIAkJCQlHQ0NfRU5BQkxFX0ZJWF9BTkRfQ09OVElOVUUgPSBOTzsKIAkJCQlHQ0NfR0VO
RVJBVEVfREVCVUdHSU5HX1NZTUJPTFMgPSBOTzsKIAkJCQlHQ0NfTU9ERUxfVFVOSU5HID0gRzU7
CkBAIC0yMDMsNyArMjI1LDkgQEAKIAkJCQlHQ0NfUFJFRklYX0hFQURFUiA9IHN2ZzJwbmdfUHJl
Zml4LnBjaDsKIAkJCQlHQ0NfV0FSTl9BQk9VVF9SRVRVUk5fVFlQRSA9IFlFUzsKIAkJCQlHQ0Nf
V0FSTl9VTlVTRURfVkFSSUFCTEUgPSBZRVM7CisJCQkJSEVBREVSX1NFQVJDSF9QQVRIUyA9ICIi
OwogCQkJCUlOU1RBTExfUEFUSCA9ICIkKEhPTUUpL2JpbiI7CisJCQkJTElCUkFSWV9TRUFSQ0hf
UEFUSFMgPSAiIjsKIAkJCQlQUkVCSU5ESU5HID0gTk87CiAJCQkJUFJPRFVDVF9OQU1FID0gc3Zn
MnBuZzsKIAkJCQlWRVJTSU9OSU5HX1NZU1RFTSA9ICJhcHBsZS1nZW5lcmljIjsKQEAgLTIxNCwx
MyArMjM4LDE2IEBACiAJCUE4QzAwNjI4MDg5NzU2OUEwMEJBNTExNCAvKiBEZWZhdWx0ICovID0g
ewogCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CiAJCQlidWlsZFNldHRpbmdzID0gewor
CQkJCUZSQU1FV09SS19TRUFSQ0hfUEFUSFMgPSAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3JrczsK
IAkJCQlHQ0NfR0VORVJBVEVfREVCVUdHSU5HX1NZTUJPTFMgPSBOTzsKIAkJCQlHQ0NfTU9ERUxf
VFVOSU5HID0gRzU7CiAJCQkJR0NDX1BSRUNPTVBJTEVfUFJFRklYX0hFQURFUiA9IFlFUzsKIAkJ
CQlHQ0NfUFJFRklYX0hFQURFUiA9IHN2ZzJwbmdfUHJlZml4LnBjaDsKIAkJCQlHQ0NfV0FSTl9B
Qk9VVF9SRVRVUk5fVFlQRSA9IFlFUzsKIAkJCQlHQ0NfV0FSTl9VTlVTRURfVkFSSUFCTEUgPSBZ
RVM7CisJCQkJSEVBREVSX1NFQVJDSF9QQVRIUyA9ICIiOwogCQkJCUlOU1RBTExfUEFUSCA9ICIk
KEhPTUUpL2JpbiI7CisJCQkJTElCUkFSWV9TRUFSQ0hfUEFUSFMgPSAiIjsKIAkJCQlQUkVCSU5E
SU5HID0gTk87CiAJCQkJUFJPRFVDVF9OQU1FID0gc3ZnMnBuZzsKIAkJCQlWRVJTSU9OSU5HX1NZ
U1RFTSA9ICJhcHBsZS1nZW5lcmljIjsKQEAgLTIzMCw2ICsyNTcsNyBAQAogCQlBOEMwMDYyQTA4
OTc1NjlBMDBCQTUxMTQgLyogRGV2ZWxvcG1lbnQgKi8gPSB7CiAJCQlpc2EgPSBYQ0J1aWxkQ29u
ZmlndXJhdGlvbjsKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJRlJBTUVXT1JLX1NFQVJDSF9Q
QVRIUyA9ICIiOwogCQkJCUdDQ19DX0xBTkdVQUdFX1NUQU5EQVJEID0gZ251OTk7CiAJCQkJR0ND
X1RSRUFUX1dBUk5JTkdTX0FTX0VSUk9SUyA9IFlFUzsKIAkJCQlWRVJTSU9OSU5HX1NZU1RFTSA9
ICJhcHBsZS1nZW5lcmljIjsKQEAgLTIzOSw2ICsyNjcsNyBAQAogCQlBOEMwMDYyQjA4OTc1NjlB
MDBCQTUxMTQgLyogRGVwbG95bWVudCAqLyA9IHsKIAkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0
aW9uOwogCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlGUkFNRVdPUktfU0VBUkNIX1BBVEhTID0g
IiI7CiAJCQkJR0NDX0NfTEFOR1VBR0VfU1RBTkRBUkQgPSBnbnU5OTsKIAkJCQlHQ0NfVFJFQVRf
V0FSTklOR1NfQVNfRVJST1JTID0gWUVTOwogCQkJCVZFUlNJT05JTkdfU1lTVEVNID0gImFwcGxl
LWdlbmVyaWMiOwpAQCAtMjQ4LDYgKzI3Nyw3IEBACiAJCUE4QzAwNjJDMDg5NzU2OUEwMEJBNTEx
NCAvKiBEZWZhdWx0ICovID0gewogCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CiAJCQli
dWlsZFNldHRpbmdzID0geworCQkJCUZSQU1FV09SS19TRUFSQ0hfUEFUSFMgPSAiIjsKIAkJCQlH
Q0NfQ19MQU5HVUFHRV9TVEFOREFSRCA9IGdudTk5OwogCQkJCUdDQ19UUkVBVF9XQVJOSU5HU19B
U19FUlJPUlMgPSBZRVM7CiAJCQkJVkVSU0lPTklOR19TWVNURU0gPSAiYXBwbGUtZ2VuZXJpYyI7
Ci0tLSBJbWFnZURpZmYuaAkyMDA1LTA4LTA3IDAzOjQ0OjM4LjAwMDAwMDAwMCAtMDYwMAorKysg
SW1hZ2VEaWZmLmgJMjAwNS0wOC0wNiAxNjoxNDo1OS4wMDAwMDAwMDAgLTA2MDAKQEAgLTAsMCAr
MSwyOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNSBCZW4gTGEgTW9uaWNhIDxiZW4ubGFt
b25pY2FAZ21haWwuY29tPi4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIGBgQVMgSVMnJyBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAg
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisvLyBwcm90b3R5cGVzCitOU0JpdG1hcEltYWdl
UmVwICpnZXREaWZmZXJlbmNlQml0bWFwKE5TQml0bWFwSW1hZ2VSZXAgKnRlc3RCaXRtYXAsIE5T
Qml0bWFwSW1hZ2VSZXAgKnJlZmVyZW5jZUJpdG1hcCk7CitmbG9hdCBjb21wdXRlUGVyY2VudGFn
ZURpZmZlcmVudChOU0JpdG1hcEltYWdlUmVwICpkaWZmQml0bWFwKTsKK3ZvaWQgc2F2ZUFuaW1h
dGVkR0lGVG9GaWxlKE5TQml0bWFwSW1hZ2VSZXAgKmZpcnN0RnJhbWUsIE5TQml0bWFwSW1hZ2VS
ZXAgKnNlY29uZEZyYW1lLCBOU1N0cmluZyAqYW5pbWF0ZWRHSUZQYXRoKTsKLS0tIEltYWdlRGlm
Zi5tCTIwMDUtMDgtMDcgMDM6NDQ6MzguMDAwMDAwMDAwIC0wNjAwCisrKyBJbWFnZURpZmYubQky
MDA1LTA4LTA3IDEzOjQxOjM2LjAwMDAwMDAwMCAtMDYwMApAQCAtMCwwICsxLDE3OCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAwNSBCZW4gTGEgTW9uaWNhIDxiZW4ubGFtb25pY2FAZ21haWwu
Y29tPi4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIEFVVEhPUiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKKyAqLworIAorI2ltcG9ydCA8UXVhcnR6Q29yZS9DSUZpbHRlci5oPgorI2ltcG9y
dCA8UXVhcnR6Q29yZS9DSUltYWdlLmg+CisjaW1wb3J0IDxRdWFydHpDb3JlL0NJQ29udGV4dC5o
PgorI2ltcG9ydCA8QXBwS2l0L05TQml0bWFwSW1hZ2VSZXAuaD4KKyNpbXBvcnQgPEFwcEtpdC9O
U0dyYXBoaWNzQ29udGV4dC5oPgorI2ltcG9ydCA8QXBwS2l0L05TQ0lJbWFnZVJlcC5oPgorCisj
aW1wb3J0ICJJbWFnZURpZmYuaCIKKworLyoqCisgKiBUYWtlcyBhIGJpdG1hcCBhbmQgcGVyZm9y
bXMgYSBkaWZmZXJlbmNlIGJsZW5kIHdpdGggYSByZWZlcmVuY2UgCisgKiBpbWFnZS4gSWYgdGhl
IGltYWdlcyBhcmUgZXhhY3RseSB0aGUgc2FtZSwgdGhlIGRpZmZCaXRtYXAgd2lsbCAKKyAqIGJl
IHNvbGlkIGJsYWNrLgorICoKKyAqIEl0IHdpbGwgd3JpdGUgdGhpcyBkaWZmZXJlbmNlIGJsZW5k
ZWQgYml0bWFwIHRvIGEgZmlsZS4KKyAqIAorICogUmV0dXJucyB0aGUgZGlmZmVyZW5jZSBiaXRt
YXAKKyAqLworTlNCaXRtYXBJbWFnZVJlcCAqZ2V0RGlmZmVyZW5jZUJpdG1hcChOU0JpdG1hcElt
YWdlUmVwICp0ZXN0Qml0bWFwLCBOU0JpdG1hcEltYWdlUmVwICpyZWZlcmVuY2VCaXRtYXApCit7
CisgICAgLy8gY3JlYXRlIGEgbmV3IGdyYXBoaWNzIGNvbnRleHQgdG8gZHJhdyBvdXIgQ0lJbWFn
ZSBvbgorICAgIE5TQml0bWFwSW1hZ2VSZXAgKmRpZmZCaXRtYXAgPSBbdGVzdEJpdG1hcCBjb3B5
XTsKKyAgICBOU0dyYXBoaWNzQ29udGV4dCAqbnNDb250ZXh0ID0gW05TR3JhcGhpY3NDb250ZXh0
IGdyYXBoaWNzQ29udGV4dFdpdGhCaXRtYXBJbWFnZVJlcDpkaWZmQml0bWFwXTsKKyAgICBDSUlt
YWdlICpyZWZlcmVuY2VJbWFnZSA9IFtbQ0lJbWFnZSBhbGxvY10gaW5pdFdpdGhCaXRtYXBJbWFn
ZVJlcDpyZWZlcmVuY2VCaXRtYXBdOworICAgIENJSW1hZ2UgKnRlc3RJbWFnZSA9IFtbQ0lJbWFn
ZSBhbGxvY10gaW5pdFdpdGhCaXRtYXBJbWFnZVJlcDp0ZXN0Qml0bWFwXTsKKyAgICBDSUltYWdl
ICpkaWZmSW1hZ2UgPSBuaWw7CisgICAgQ0lGaWx0ZXIgKmRpZmZCbGVuZCA9IFtDSUZpbHRlciBm
aWx0ZXJXaXRoTmFtZTpAIkNJRGlmZmVyZW5jZUJsZW5kTW9kZSJdOworCisgICAgLy8gZ2VuZXJh
dGUgdGhlIGRpZmYgaW1hZ2UKKyAgICBbZGlmZkJsZW5kIHNldFZhbHVlOnJlZmVyZW5jZUltYWdl
IGZvcktleTpAImlucHV0SW1hZ2UiXTsKKyAgICBbZGlmZkJsZW5kIHNldFZhbHVlOnRlc3RJbWFn
ZSBmb3JLZXk6QCJpbnB1dEJhY2tncm91bmRJbWFnZSJdOworICAgIGRpZmZJbWFnZSA9IFtkaWZm
QmxlbmQgdmFsdWVGb3JLZXk6QCJvdXRwdXRJbWFnZSJdOworICAgIAorICAgIC8vIHByZXBhcmUg
dG8gZHJhdyB0aGUgaW1hZ2UsIHNhdmUgY3VycmVudCBzdGF0ZQorICAgIFtOU0dyYXBoaWNzQ29u
dGV4dCBzYXZlR3JhcGhpY3NTdGF0ZV07CisgICAgW05TR3JhcGhpY3NDb250ZXh0IHNldEN1cnJl
bnRDb250ZXh0OiBuc0NvbnRleHRdOworICAgIAorICAgIC8vIGRyYXcgdGhlIGRpZmZlcmVuY2Ug
aW1hZ2UKKyAgICBbW25zQ29udGV4dCBDSUNvbnRleHRdIGRyYXdJbWFnZTpkaWZmSW1hZ2UgYXRQ
b2ludDpDR1BvaW50WmVybyBmcm9tUmVjdDpbZGlmZkltYWdlIGV4dGVudF1dOworICAgIAorICAg
IC8vIHJlc3RvcmUgdGhlIHByZXZpb3VzIGNvbnRleHQgYW5kIHN0YXRlCisgICAgW05TR3JhcGhp
Y3NDb250ZXh0IHJlc3RvcmVHcmFwaGljc1N0YXRlXTsKKyAgICAgICAgCisgICAgW3JlZmVyZW5j
ZUltYWdlIHJlbGVhc2VdOworICAgIFt0ZXN0SW1hZ2UgcmVsZWFzZV07CisgICAgCisgICAgcmV0
dXJuIGRpZmZCaXRtYXA7Cit9CisKKy8qKgorICogQ291bnRzIHRoZSBudW1iZXIgb2Ygbm9uLWJs
YWNrIHBpeGVscywgYW5kIHJldHVybnMgdGhlIHBlcmNlbnRhZ2UKKyAqIG9mIG5vbi1ibGFjayBw
aXhlbHMgdG8gdG90YWwgcGl4ZWxzIGluIHRoZSBpbWFnZS4KKyAqLworZmxvYXQgY29tcHV0ZVBl
cmNlbnRhZ2VEaWZmZXJlbnQoTlNCaXRtYXBJbWFnZVJlcCAqZGlmZkJpdG1hcCkKK3sKKyAgICBp
bnQgdG90YWxQaXhlbHMgPSBbZGlmZkJpdG1hcCBwaXhlbHNIaWdoXSAqIFtkaWZmQml0bWFwIHBp
eGVsc1dpZGVdOworICAgIGludCB0b3RhbEJ5dGVzID0gW2RpZmZCaXRtYXAgYnl0ZXNQZXJQbGFu
ZV07CisgICAgdW5zaWduZWQgY2hhciAqYml0bWFwRGF0YSA9IFtkaWZmQml0bWFwIGJpdG1hcERh
dGFdOworICAgIGludCBkaWZmZXJlbmNlcyA9IDA7CisgICAgCisgICAgLy8gTk9URTogVGhpcyBt
YXkgbm90IGJlIHNhZmUgd2hlbiBzd2l0Y2hpbmcgYmV0d2VlbiBFTkRJQU4gdHlwZXMKKyAgICBm
b3IgKGludCBpID0gMDsgaSA8IHRvdGFsQnl0ZXM7IGkgKz0gNCkgeworICAgICAgICBpZiAoKihi
aXRtYXBEYXRhICsgaSkgIT0gMCB8fCAqKGJpdG1hcERhdGEgKyBpICsgMSkgIT0gMCB8fCAqKGJp
dG1hcERhdGEgKyBpICsgMikgIT0gMCkKKyAgICAgICAgICAgIGRpZmZlcmVuY2VzKys7CisgICAg
fQorICAgIAorICAgIHJldHVybiAoZGlmZmVyZW5jZXMgKiAxMDAuMCkvdG90YWxQaXhlbHM7Cit9
CisKKy8qKgorICogVGFrZXMgdHdvIGltYWdlcyBhbmQgcGxhY2VzIHRoZW0gaW4gYW4gYW5pbWF0
ZWQgR0lGIHRoYXQgcmVwZWF0cyB3aXRoIGEgMiBzZWNvbmQgZGVsYXkKKyAqLwordm9pZCBzYXZl
QW5pbWF0ZWRHSUZUb0ZpbGUoTlNCaXRtYXBJbWFnZVJlcCAqZmlyc3RGcmFtZSwgTlNCaXRtYXBJ
bWFnZVJlcCAqc2Vjb25kRnJhbWUsIE5TU3RyaW5nICphbmltYXRlZEdJRlBhdGgpCit7CisgICAg
Ly8gb3B0aW9ucyB0byBzZXQgdGhlIGRlbGF5IG9uIGVhY2ggZnJhbWUgb2YgMiBzZWNvbmRzCisg
ICAgTlNEaWN0aW9uYXJ5ICpmcmFtZVByb3BlcnRpZXMgPSBbTlNEaWN0aW9uYXJ5IAorICAgICAg
ICBkaWN0aW9uYXJ5V2l0aE9iamVjdDpbTlNEaWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRoT2JqZWN0
OltOU051bWJlciBudW1iZXJXaXRoSW50OjJdIGZvcktleTooTlNTdHJpbmcgKikga0NHSW1hZ2VQ
cm9wZXJ0eUdJRkRlbGF5VGltZV0KKyAgICAgICAgZm9yS2V5OihOU1N0cmluZyAqKSBrQ0dJbWFn
ZVByb3BlcnR5R0lGRGljdGlvbmFyeV07CisgICAgICAgIAorICAgIC8vIG9wdGlvbnMgdG8gdHVy
biBvbiBsb29waW5nIGZvciB0aGUgR0lGCisgICAgTlNEaWN0aW9uYXJ5ICpnaWZQcm9wZXJ0aWVz
ID0gW05TRGljdGlvbmFyeSAKKyAgICAgICAgZGljdGlvbmFyeVdpdGhPYmplY3Q6W05TRGljdGlv
bmFyeSBkaWN0aW9uYXJ5V2l0aE9iamVjdDpbTlNOdW1iZXIgbnVtYmVyV2l0aEludDowXSBmb3JL
ZXk6KE5TU3RyaW5nICopIGtDR0ltYWdlUHJvcGVydHlHSUZMb29wQ291bnRdCisgICAgICAgIGZv
cktleTooTlNTdHJpbmcgKikga0NHSW1hZ2VQcm9wZXJ0eUdJRkRpY3Rpb25hcnldOworICAgIAor
ICAgIC8vIHNldCB0aGUgcGxhY2UgdG8gc2F2ZSB0aGUgR0lGIHRvCisgICAgQ0dJbWFnZURlc3Rp
bmF0aW9uUmVmIGFuaW1hdGVkR0lGID0gQ0dJbWFnZURlc3RpbmF0aW9uQ3JlYXRlV2l0aFVSTCgK
KyAgICAgICAgKENGVVJMUmVmKSBbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOmFuaW1hdGVkR0lGUGF0
aF0sIAorICAgICAgICBrVVRUeXBlR0lGLCAKKyAgICAgICAgMiwgLy8gdHdvIGltYWdlcyBpbiB0
aGlzIEdJRgorICAgICAgICBOVUxMCisgICAgKTsKKyAgICAKKyAgICAvLyBnZXQgdGhlIGRhdGEg
Zm9yIHRoZSBmaXJzdCBmcmFtZQorICAgIENHRGF0YVByb3ZpZGVyUmVmIGZpcnN0RnJhbWVQcm92
aWRlciA9IENHRGF0YVByb3ZpZGVyQ3JlYXRlV2l0aERhdGEoCisgICAgICAgIE5VTEwsCisgICAg
ICAgIFtmaXJzdEZyYW1lIGJpdG1hcERhdGFdLAorICAgICAgICBbZmlyc3RGcmFtZSBieXRlc1Bl
clJvd10gKiBbZmlyc3RGcmFtZSBwaXhlbHNIaWdoXSwKKyAgICAgICAgTlVMTAorICAgICk7Cisg
ICAgCisgICAgLy8gY3JlYXRlIGEgQ0dJbWFnZSBmb3IgdGhlIGZpcnN0IGZyYW1lCisgICAgQ0dJ
bWFnZVJlZiBjZ0ZpcnN0RnJhbWUgPSBDR0ltYWdlQ3JlYXRlICgKKyAgICAgICAgW2ZpcnN0RnJh
bWUgcGl4ZWxzV2lkZV0sCisgICAgICAgIFtmaXJzdEZyYW1lIHBpeGVsc0hpZ2hdLAorICAgICAg
ICBbc2Vjb25kRnJhbWUgYml0c1BlclBpeGVsXSAvIFtzZWNvbmRGcmFtZSBzYW1wbGVzUGVyUGl4
ZWxdLAorICAgICAgICBbZmlyc3RGcmFtZSBiaXRzUGVyUGl4ZWxdLAorICAgICAgICBbZmlyc3RG
cmFtZSBieXRlc1BlclJvd10sCisgICAgICAgIENHQ29sb3JTcGFjZUNyZWF0ZURldmljZVJHQigp
LAorICAgICAgICBrQ0dJbWFnZUFscGhhTm9uZSwKKyAgICAgICAgZmlyc3RGcmFtZVByb3ZpZGVy
LAorICAgICAgICBOVUxMLAorICAgICAgICAwLAorICAgICAgICBrQ0dSZW5kZXJpbmdJbnRlbnRE
ZWZhdWx0CisgICAgKTsKKyAgICAKKyAgICAvLyBnZXQgdGhlIGRhdGEgZm9yIHRoZSBzZWNvbmQg
ZnJhbWUKKyAgICBDR0RhdGFQcm92aWRlclJlZiBzZWNvbmRGcmFtZVByb3ZpZGVyID0gQ0dEYXRh
UHJvdmlkZXJDcmVhdGVXaXRoRGF0YSgKKyAgICAgICAgTlVMTCwKKyAgICAgICAgW3NlY29uZEZy
YW1lIGJpdG1hcERhdGFdLAorICAgICAgICBbc2Vjb25kRnJhbWUgYnl0ZXNQZXJSb3ddICogW3Nl
Y29uZEZyYW1lIHBpeGVsc0hpZ2hdLAorICAgICAgICBOVUxMCisgICAgKTsKKyAgICAKKyAgICAv
LyBjcmVhdGUgYSBDR0ltYWdlIGZvciB0aGUgc2Vjb25kIGZyYW1lCisgICAgQ0dJbWFnZVJlZiBj
Z1NlY29uZEZyYW1lID0gQ0dJbWFnZUNyZWF0ZSAoCisgICAgICAgIFtzZWNvbmRGcmFtZSBwaXhl
bHNXaWRlXSwKKyAgICAgICAgW3NlY29uZEZyYW1lIHBpeGVsc0hpZ2hdLAorICAgICAgICBbc2Vj
b25kRnJhbWUgYml0c1BlclBpeGVsXSAvIFtzZWNvbmRGcmFtZSBzYW1wbGVzUGVyUGl4ZWxdLAor
ICAgICAgICBbc2Vjb25kRnJhbWUgYml0c1BlclBpeGVsXSwKKyAgICAgICAgW3NlY29uZEZyYW1l
IGJ5dGVzUGVyUm93XSwKKyAgICAgICAgQ0dDb2xvclNwYWNlQ3JlYXRlRGV2aWNlUkdCKCksCisg
ICAgICAgIGtDR0ltYWdlQWxwaGFOb25lLAorICAgICAgICBzZWNvbmRGcmFtZVByb3ZpZGVyLAor
ICAgICAgICBOVUxMLAorICAgICAgICAwLAorICAgICAgICBrQ0dSZW5kZXJpbmdJbnRlbnREZWZh
dWx0CisgICAgKTsKKyAgICAKKyAgICAvLyBwbGFjZSB0aGUgdHdvIGltYWdlcyBpbnRvIHRoZSBm
aW5hbCBhbmltYXRlZCBnaWYgYW5kIHNldCByZWxhdGVkIG9wdGlvbnMKKyAgICBDR0ltYWdlRGVz
dGluYXRpb25BZGRJbWFnZShhbmltYXRlZEdJRiwgY2dGaXJzdEZyYW1lLCAoQ0ZEaWN0aW9uYXJ5
UmVmKSBmcmFtZVByb3BlcnRpZXMpOworICAgIENHSW1hZ2VEZXN0aW5hdGlvbkFkZEltYWdlKGFu
aW1hdGVkR0lGLCBjZ1NlY29uZEZyYW1lLCAoQ0ZEaWN0aW9uYXJ5UmVmKSBmcmFtZVByb3BlcnRp
ZXMpOworICAgIENHSW1hZ2VEZXN0aW5hdGlvblNldFByb3BlcnRpZXMoYW5pbWF0ZWRHSUYsIChD
RkRpY3Rpb25hcnlSZWYpIGdpZlByb3BlcnRpZXMpOworICAgIAorICAgIC8vIHNhdmUgdGhlIGdp
ZiB0byBhIGZpbGUKKyAgICBDR0ltYWdlRGVzdGluYXRpb25GaW5hbGl6ZShhbmltYXRlZEdJRik7
CisgICAgCisgICAgLy8gcmVsZWFzZSB0aGUgbWVtb3J5IHVzZWQKKyAgICBDR0RhdGFQcm92aWRl
clJlbGVhc2UoZmlyc3RGcmFtZVByb3ZpZGVyKTsKKyAgICBDR0RhdGFQcm92aWRlclJlbGVhc2Uo
c2Vjb25kRnJhbWVQcm92aWRlcik7CisgICAgQ0dJbWFnZVJlbGVhc2UoY2dGaXJzdEZyYW1lKTsK
KyAgICBDR0ltYWdlUmVsZWFzZShjZ1NlY29uZEZyYW1lKTsKKyAgICBDRlJlbGVhc2UoYW5pbWF0
ZWRHSUYpOworfSAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>3265</attachid>
            <date>2005-08-07 13:58:09 -0700</date>
            <delta_ts>2005-08-07 13:58:09 -0700</delta_ts>
            <desc>cvs diff patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>21433</size>
            <attacher name="Ben La Monica">ben.lamonica</attacher>
            
              <data encoding="base64">SW5kZXg6IHN2ZzJwbmcubQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJDUyBmaWxlOiAvY3ZzL3Jvb3QvV2ViS2l0VG9v
bHMvc3ZnMnBuZy9zdmcycG5nLm0sdgpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMQpkaWZmIC11IC1y
MS4xIHN2ZzJwbmcubQotLS0gc3ZnMnBuZy5tCTI5IEp1bCAyMDA1IDA1OjI2OjA3IC0wMDAwCTEu
MQorKysgc3ZnMnBuZy5tCTcgQXVnIDIwMDUgMjA6NTc6MzYgLTAwMDAKQEAgLTI1LDI0ICsyNSw0
MCBAQAogCiAjaW1wb3J0IDxXZWJDb3JlK1NWRy9EcmF3RG9jdW1lbnRQcml2YXRlLmg+CiAjaW1w
b3J0IDxXZWJDb3JlK1NWRy9EcmF3Vmlldy5oPgorI2ltcG9ydCAiSW1hZ2VEaWZmLmgiCiAKIGV4
dGVybiBjb25zdCBkb3VibGUgc3ZnMnBuZ1ZlcnNpb25OdW1iZXI7CiBleHRlcm4gY29uc3QgdW5z
aWduZWQgY2hhciBzdmcycG5nVmVyc2lvblN0cmluZ1tdOwogCisvKiBnbG9iYWwgdmFyaWFibGVz
ICovCitCT09MIGlzTWF4SGVpZ2h0U3BlY2lmaWVkID0gTk87CitCT09MIGlzTWF4V2lkdGhTcGVj
aWZpZWQgPSBOTzsKK2ludCBtYXhXaWR0aCA9IDA7CitpbnQgbWF4SGVpZ2h0ID0gMDsKKwogdm9p
ZCB1c2FnZShjb25zdCBjaGFyICpuYW1lKQogewogICAgIHByaW50ZigiVXNhZ2U6ICVzIFtvcHRp
b25zXSBmaWxlW3NdXG4iLCBuYW1lKTsKICAgICBwcmludGYoIk9wdGlvbnM6XG4iKTsKLSAgICBw
cmludGYoIiAgLS12ZXJzaW9uXHRcdFx0UHJpbnRzIGZ1bGwgdmVyc2lvbiAoJS4xZikgaW5mb3Jt
YXRpb24gYW5kIGV4aXRzLlxuIiwgc3ZnMnBuZ1ZlcnNpb25OdW1iZXIpOwotICAgIHByaW50Zigi
ICAtLW91dHB1dCA8b3V0cHV0ZmlsZT4gZHVtcCBhIHBuZyBjb3B5IG9mIGEgc2luZ2xlIHN2ZyBp
bnB1dCBmaWxlIHRvIHRoZSBuYW1lZCBwYXRoXG4iKTsKLSAgICBwcmludGYoIiAgLS1zdWZmaXgg
PHN1ZmZpeD4gYXBwZW5kIDxzdWZmaXg+IHRvIGVhY2ggb3V0cHV0IGZpbGUgZS5nLiA8aW5wdXRu
YW1lPjxzdWZmaXg+LnBuZ1xuIik7CisgICAgcHJpbnRmKCIgIC0tYmFzZWxpbmUtZGlyIDxkaXJl
Y3Rvcnk+XHR0aGUgZGlyZWN0b3J5IHdoZXJlIHRoZSBiYXNlbGluZXMgYXJlIHN0b3JlZFxuIik7
CisgICAgcHJpbnRmKCIgIC0tYmFzZWxpbmUtc3VmZml4IDxzdWZmaXg+XHR0aGUgc3VmZml4IG9u
IHRoZSByZWZlcmVuY2UgdmVyc2lvbiBvZiBhIHBpY3R1cmVcbiIpOworICAgIHByaW50ZigiICAt
LW1heC13aWR0aCA8aW50Plx0XHRzZXRzIHRoZSB3aWR0aCBvZiB0aGUgb3V0cHV0IHBuZ1xuIik7
CisgICAgcHJpbnRmKCIgIC0tbWF4LWhlaWdodCA8aW50Plx0XHRzZXRzIHRoZSBoZWlnaHQgb2Yg
dGhlIG91dHB1dCBwbmdcbiIpOworICAgIHByaW50ZigiICAtLW91dHB1dCA8b3V0cHV0ZmlsZT5c
dFx0ZHVtcCBhIHBuZyBjb3B5IG9mIGEgc2luZ2xlIHN2ZyBpbnB1dCBmaWxlXG5cdFx0XHRcdHRv
IHRoZSBuYW1lZCBwYXRoXG4iKTsKKyAgICBwcmludGYoIiAgLS1vdXRwdXQtZGlyIDxkaXJlY3Rv
cnk+XHR0aGUgZGlyZWN0b3J5IHdoZXJlIGFsbCBmaWxlcyBhcmUgb3V0cHV0IHRvXG4iKTsKKyAg
ICBwcmludGYoIiAgLS1zdWZmaXggPHN1ZmZpeD5cdFx0YXBwZW5kIDxzdWZmaXg+IHRvIGVhY2gg
b3V0cHV0IGZpbGVcblx0XHRcdFx0ZS5nLiA8aW5wdXRuYW1lPjxzdWZmaXg+LnBuZ1xuXG4iKTsK
KyAgICBwcmludGYoIiAgLS12ZXJzaW9uXHRcdFx0UHJpbnRzIGZ1bGwgdmVyc2lvbiAoJS4xZikg
aW5mb3JtYXRpb24gYW5kIGV4aXRzXG4iLCBzdmcycG5nVmVyc2lvbk51bWJlcik7CiAgICAgcHJp
bnRmKCJXaGVuIC0tb3V0cHV0IGlzIG5vdCBzcGVjaWZpZWQsIG91dHB1dCBmaWxlcyBhcmUgY3Jl
YXRlZCBpbiB0aGUgc2FtZSBkaXJlY3RvcnlcbiIpOwotICAgIHByaW50ZigiYXMgdGhlIG9yaWdp
bmFsIHNvdXJjZSBmaWxlcyBlLmcuIDxzb3VyY2UgZGlyZWN0b3J5Pi88ZmlsZW5hbWU+PHN1ZmZp
eD4ucG5nIik7CisgICAgcHJpbnRmKCJhcyB0aGUgb3JpZ2luYWwgc291cmNlIGZpbGVzIGUuZy4g
PHNvdXJjZSBkaXJlY3Rvcnk+LzxmaWxlbmFtZT48c3VmZml4Pi5wbmdcbiIpOworICAgIHByaW50
ZigiXG5XaGVuIC0tYmFzZWxpbmUtc3VmZml4IGlzIHNwZWNpZmllZCwgc3ZnMnBuZyB3aWxsIGxv
b2sgZm9yIGEgUE5HIGZpbGUgdGhhdFxuIik7CisgICAgcHJpbnRmKCJjb250YWlucyBhbiBleGFt
cGxlIG9mIHdoYXQgdGhlIFNWRyBzaG91bGQgbG9vayBsaWtlIHdoZW4gcmVuZGVyZWQuIEl0IHdp
bGxcbiIpOworICAgIHByaW50ZigiY3JlYXRlIGEgPGZpbGVuYW1lPjxzdWZmaXg+LWRpZmYucG5n
IGZpbGUgdG8gc2hvdyB0aGVzZSBkaWZmZXJlbmNlcy5cblxuIik7IAogICAgIGV4aXQoMSk7CiB9
OwogCi12b2lkIG91dHB1dFBORyhOU1N0cmluZyAqc3ZnUGF0aCwgTlNTdHJpbmcgKnBuZ1BhdGgp
CitOU0JpdG1hcEltYWdlUmVwICpnZXRCaXRtYXBGb3JTVkcoTlNTdHJpbmcgKnN2Z1BhdGgpCiB7
CisgICAgCiAgICAgLy8gbG9hZCB0aGUgZ2l2ZW4gZG9jdW1lbnQKICAgICBEcmF3RG9jdW1lbnQg
KmRvY3VtZW50ID0gW1tEcmF3RG9jdW1lbnQgYWxsb2NdIGluaXRXaXRoQ29udGVudHNPZkZpbGU6
c3ZnUGF0aF07CiAgICAgCkBAIC01MSwyNCArNjcsMzQgQEAKICAgICBbdmlldyBzZXREb2N1bWVu
dDpkb2N1bWVudF07CiAgICAgW3ZpZXcgc2l6ZVRvRml0Vmlld0JveF07CiAgICAgCi0gICAgLy8g
TXkgbWF4aW11bSA1MDB4NTAwIHNpemUgaGFjazoKKyAgICAvLyBMaW1pdCB0aGUgbWF4aW11bSBz
aXplLCBhbmQgZGVmYXVsdCB0aGUgc2l6ZSB0byA1MDB4NTAwIGlmIG5vdCBzcGVjaWZpZWQKICAg
ICBOU1NpemUgYm91bmRzU2l6ZSA9IFt2aWV3IGJvdW5kc10uc2l6ZTsKLSAgICBpZiAoYm91bmRz
U2l6ZS53aWR0aCA+IDUwMCkKKyAgICBpZiAoaXNNYXhXaWR0aFNwZWNpZmllZCAmJiBib3VuZHNT
aXplLndpZHRoID4gbWF4V2lkdGgpIHsKKyAgICAgICAgLy8gcmVzaXplIHRoZSBoZWlnaHQgc28g
dGhhdCB0aGUgYXNwZWN0IHJhdGlvIHJlbWFpbnMgdGhlIHNhbWUKKyAgICAgICAgYm91bmRzU2l6
ZS5oZWlnaHQgPSAoYm91bmRzU2l6ZS5oZWlnaHQgLyBib3VuZHNTaXplLndpZHRoKSAqIG1heFdp
ZHRoOworICAgICAgICBib3VuZHNTaXplLndpZHRoID0gbWF4V2lkdGg7CisgICAgfQorICAgIGVs
c2UgaWYgKGJvdW5kc1NpemUud2lkdGggPD0gMCkKICAgICAgICAgYm91bmRzU2l6ZS53aWR0aCA9
IDUwMDsKLSAgICBpZiAoYm91bmRzU2l6ZS5oZWlnaHQgPiA1MDApCisgICAgICAgIAorICAgIGlm
IChpc01heEhlaWdodFNwZWNpZmllZCAmJiBib3VuZHNTaXplLmhlaWdodCA+IG1heEhlaWdodCkg
eworICAgICAgICAvLyByZXNpemUgdGhlIHdpZHRoIHNvIHRoYXQgdGhlIGFzcGVjdCByYXRpbyBy
ZWFtaW5zIHRoZSBzYW1lCisgICAgICAgIGJvdW5kc1NpemUud2lkdGggPSAoYm91bmRzU2l6ZS53
aWR0aCAvIGJvdW5kc1NpemUuaGVpZ2h0KSAqIG1heEhlaWdodDsKKyAgICAgICAgYm91bmRzU2l6
ZS5oZWlnaHQgPSBtYXhIZWlnaHQ7CisgICAgfQorICAgIGVsc2UgaWYgKGJvdW5kc1NpemUuaGVp
Z2h0IDw9IDApCiAgICAgICAgIGJvdW5kc1NpemUuaGVpZ2h0ID0gNTAwOworICAgIAogICAgIFt2
aWV3IHNldEZyYW1lU2l6ZTpib3VuZHNTaXplXTsKICAgICAKICAgICAvLyB0ZWxsIHRoYXQgdmll
dyB0byByZW5kZXIKICAgICBOU0JpdG1hcEltYWdlUmVwICppbWFnZVJlcCA9IFt2aWV3IGJpdG1h
cEltYWdlUmVwRm9yQ2FjaGluZ0Rpc3BsYXlJblJlY3Q6W3ZpZXcgYm91bmRzXV07CiAgICAgW3Zp
ZXcgY2FjaGVEaXNwbGF5SW5SZWN0Olt2aWV3IGJvdW5kc10gdG9CaXRtYXBJbWFnZVJlcDppbWFn
ZVJlcF07CiAgICAgCi0gICAgLy8gb3V0cHV0IHRoZSByZXN1bHRpbmcgaW1hZ2UKLSAgICBOU0Rh
dGEgKnBuZ0RhdGEgPSBbaW1hZ2VSZXAgcmVwcmVzZW50YXRpb25Vc2luZ1R5cGU6TlNQTkdGaWxl
VHlwZSBwcm9wZXJ0aWVzOm5pbF07Ci0gICAgW3BuZ0RhdGEgd3JpdGVUb0ZpbGU6c3ZnUGF0aCBh
dG9taWNhbGx5OllFU107Ci0gICAgCiAgICAgW3ZpZXcgcmVsZWFzZV07IC8vIHNob3VsZCBiZSBz
aW5nbGV0b24uCiAgICAgW2RvY3VtZW50IHJlbGVhc2VdOworICAgIAorICAgIHJldHVybiBpbWFn
ZVJlcDsKIH0KIAogaW50IG1haW4gKGludCBhcmdjLCBjb25zdCBjaGFyICphcmd2W10pCkBAIC03
Nyw4ICsxMDMsMTEgQEAKICAgICAvLyBkZWFsIHdpdGggYXJncwogICAgIE5TTXV0YWJsZUFycmF5
ICpzdmdzID0gW05TTXV0YWJsZUFycmF5IGFycmF5XTsKICAgICBjb25zdCBjaGFyICpuYW1lID0g
W1tbTlNTdHJpbmcgc3RyaW5nV2l0aFVURjhTdHJpbmc6YXJndlswXV0gbGFzdFBhdGhDb21wb25l
bnRdIFVURjhTdHJpbmddOwotICAgIE5TU3RyaW5nICpleHBsaWNpdE91dHB1dFBhdGggPSBuaWw7
CisgICAgTlNTdHJpbmcgKmV4cGxpY2l0T3V0cHV0RmlsZSA9IG5pbDsKKyAgICBOU1N0cmluZyAq
ZXhwbGljaXRPdXRwdXREaXJlY3RvcnkgPSBuaWw7CiAgICAgTlNTdHJpbmcgKm91dHB1dFN1ZmZp
eCA9IG5pbDsKKyAgICBOU1N0cmluZyAqYmFzZWxpbmVTdWZmaXggPSBuaWw7CisgICAgTlNTdHJp
bmcgKmV4cGxpY2l0QmFzZWxpbmVEaXJlY3RvcnkgPSBuaWw7CiAgICAgCiAgICAgZm9yKGludCB4
ID0gMTsgeCA8IGFyZ2M7IHgrKykgewogICAgICAgICBjb25zdCBjaGFyICphcmcgPSBhcmd2W3hd
OwpAQCAtOTIsMTIgKzEyMSwyMiBAQAogICAgICAgICAgICAgICAgIGV4aXQoMCk7CiAgICAgICAg
ICAgICB9IGVsc2UgaWYgKFthcmdTdHJpbmcgaXNFcXVhbFRvU3RyaW5nOkAiLS1vdXRwdXQiXSkg
ewogICAgICAgICAgICAgICAgIGlmICh4ICsgMSA8IGFyZ2MpIHsKLSAgICAgICAgICAgICAgICAg
ICAgZXhwbGljaXRPdXRwdXRQYXRoID0gW05TU3RyaW5nIHN0cmluZ1dpdGhVVEY4U3RyaW5nOmFy
Z3ZbeCsxXV07Ci0gICAgICAgICAgICAgICAgICAgIGlmIChbZXhwbGljaXRPdXRwdXRQYXRoIGhh
c1ByZWZpeDpAIi0tIl0pCi0gICAgICAgICAgICAgICAgICAgICAgICBOU0xvZyhAIldBUk5JTkc6
IGRpZCB5b3UgcmVhbGx5IG1lYW4gdG8gb3V0cHV0IHRvOiAlQCAgT3IgZGlkIHlvdSBqdXN0IGZv
cmdldCB0aGUgLS1vdXRwdXQgPGZpbGVuYW1lPiBhcmd1bWVudD8iLCBleHBsaWNpdE91dHB1dFBh
dGgpOworICAgICAgICAgICAgICAgICAgICBleHBsaWNpdE91dHB1dEZpbGUgPSBbTlNTdHJpbmcg
c3RyaW5nV2l0aFVURjhTdHJpbmc6YXJndlt4KzFdXTsKKyAgICAgICAgICAgICAgICAgICAgaWYg
KFtleHBsaWNpdE91dHB1dEZpbGUgaGFzUHJlZml4OkAiLS0iXSkKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHByaW50ZigiV0FSTklORzogZGlkIHlvdSByZWFsbHkgbWVhbiB0byBvdXRwdXQgdG86
ICVzICBPciBkaWQgeW91IGp1c3QgZm9yZ2V0IHRoZSAtLW91dHB1dCA8ZmlsZW5hbWU+IGFyZ3Vt
ZW50P1xuIiwgW2V4cGxpY2l0T3V0cHV0RmlsZSBVVEY4U3RyaW5nXSk7CisgICAgICAgICAgICAg
ICAgICAgIHgrKzsgLy8gdG8gc2tpcCB0aGUgbmV4dCBhcmcKKyAgICAgICAgICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgICAgICAgICBwcmludGYoIi0tb3V0cHV0IHJlcXVpcmVzIGFuIGFy
Z3VtZW50LlxuIik7CisgICAgICAgICAgICAgICAgICAgIHVzYWdlKG5hbWUpOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSBpZiAoW2FyZ1N0cmluZyBpc0VxdWFsVG9TdHJp
bmc6QCItLW91dHB1dC1kaXIiXSkgeworICAgICAgICAgICAgICAgIGlmICh4ICsgMSA8IGFyZ2Mp
IHsKKyAgICAgICAgICAgICAgICAgICAgZXhwbGljaXRPdXRwdXREaXJlY3RvcnkgPSBbTlNTdHJp
bmcgc3RyaW5nV2l0aFVURjhTdHJpbmc6YXJndlt4KzFdXTsKKyAgICAgICAgICAgICAgICAgICAg
aWYgKFtleHBsaWNpdE91dHB1dERpcmVjdG9yeSBoYXNQcmVmaXg6QCItLSJdKQorICAgICAgICAg
ICAgICAgICAgICAgICAgcHJpbnRmKCJXQVJOSU5HOiBkaWQgeW91IHJlYWxseSBtZWFuIHRvIG91
dHB1dCB0bzogJXMgIE9yIGRpZCB5b3UganVzdCBmb3JnZXQgdGhlIC0tb3V0cHV0IDxmaWxlbmFt
ZT4gYXJndW1lbnQ/XG4iLCBbZXhwbGljaXRPdXRwdXREaXJlY3RvcnkgVVRGOFN0cmluZ10pOwog
ICAgICAgICAgICAgICAgICAgICB4Kys7IC8vIHRvIHNraXAgdGhlIG5leHQgYXJnCiAgICAgICAg
ICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgTlNMb2coQCItLW91dHB1dCBy
ZXF1aXJlcyBhbiBhcmd1bWVudC4iKTsKKyAgICAgICAgICAgICAgICAgICAgcHJpbnRmKCItLW91
dHB1dC1kaXIgcmVxdWlyZXMgYW4gYXJndW1lbnQuXG4iKTsKICAgICAgICAgICAgICAgICAgICAg
dXNhZ2UobmFtZSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfSAgZWxzZSBpZiAo
W2FyZ1N0cmluZyBpc0VxdWFsVG9TdHJpbmc6QCItLXN1ZmZpeCJdKSB7CkBAIC0xMDUsMTYgKzE0
NCw1OCBAQAogICAgICAgICAgICAgICAgICAgICBvdXRwdXRTdWZmaXggPSBbTlNTdHJpbmcgc3Ry
aW5nV2l0aFVURjhTdHJpbmc6YXJndlt4KzFdXTsKICAgICAgICAgICAgICAgICAgICAgeCsrOyAv
LyB0byBza2lwIHRoZSBuZXh0IGFyZwogICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAg
ICAgICAgICAgICAgIE5TTG9nKEAiLS1zdWZmaXggcmVxdWlyZXMgYW4gYXJndW1lbnQuIik7Cisg
ICAgICAgICAgICAgICAgICAgIHByaW50ZigiLS1zdWZmaXggcmVxdWlyZXMgYW4gYXJndW1lbnQu
XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgdXNhZ2UobmFtZSk7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgfSBlbHNlIGlmIChbYXJnU3RyaW5nIGlzRXF1YWxUb1N0cmluZzpAIi0t
bWF4LXdpZHRoIl0pIHsKKyAgICAgICAgICAgICAgICBpZiAoeCArIDEgPCBhcmdjKSB7CisgICAg
ICAgICAgICAgICAgICAgIG1heFdpZHRoID0gW1tOU1N0cmluZyBzdHJpbmdXaXRoVVRGOFN0cmlu
Zzphcmd2W3grMV1dIGludFZhbHVlXTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKG1heFdpZHRo
IDw9IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHByaW50ZigiLS1tYXgtd2lkdGggbXVz
dCBiZSBhbiBpbnRlZ2VyID4gMFxuIik7CisgICAgICAgICAgICAgICAgICAgICAgICB1c2FnZShu
YW1lKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBpc01heFdp
ZHRoU3BlY2lmaWVkID0gWUVTOworICAgICAgICAgICAgICAgICAgICB4Kys7IC8vIHNraXAgdG8g
dGhlIG5leHQgYXJnCisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAg
ICAgcHJpbnRmKCItLW1heC13aWR0aCByZXF1aXJlcyBhbiBpbnRlZ2VyIGFyZ3VtZW50LlxuIik7
CisgICAgICAgICAgICAgICAgICAgIHVzYWdlKG5hbWUpOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIH0gZWxzZSBpZiAoW2FyZ1N0cmluZyBpc0VxdWFsVG9TdHJpbmc6QCItLW1heC1o
ZWlnaHQiXSkgeworICAgICAgICAgICAgICAgIGlmICh4ICsgMSA8IGFyZ2MpIHsKKyAgICAgICAg
ICAgICAgICAgICAgbWF4SGVpZ2h0ID0gW1tOU1N0cmluZyBzdHJpbmdXaXRoVVRGOFN0cmluZzph
cmd2W3grMV1dIGludFZhbHVlXTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKG1heEhlaWdodCA8
PSAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBwcmludGYoIi0tbWF4LWhlaWdodCBtdXN0
IGJlIGFuIGludGVnZXIgPiAwXG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHVzYWdlKG5h
bWUpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGlzTWF4SGVp
Z2h0U3BlY2lmaWVkID0gWUVTOworICAgICAgICAgICAgICAgICAgICB4Kys7IC8vIHNraXAgdG8g
dGhlIG5leHQgYXJnCisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAg
ICAgcHJpbnRmKCItLW1heC1oZWlnaHQgcmVxdWlyZXMgYW4gaW50ZWdlciA+IDBcbiIpOworICAg
ICAgICAgICAgICAgICAgICB1c2FnZShuYW1lKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICB9IGVsc2UgaWYgKFthcmdTdHJpbmcgaXNFcXVhbFRvU3RyaW5nOkAiLS1iYXNlbGluZS1z
dWZmaXgiXSkgeworICAgICAgICAgICAgICAgIGlmKHggKyAxIDwgYXJnYykgeworICAgICAgICAg
ICAgICAgICAgICBiYXNlbGluZVN1ZmZpeCA9IFtOU1N0cmluZyBzdHJpbmdXaXRoVVRGOFN0cmlu
Zzphcmd2W3grMV1dOworICAgICAgICAgICAgICAgICAgICB4Kys7IC8vIHNraXAgdG8gdGhlIG5l
eHQgYXJnCisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgcHJp
bnRmKCItLWJhc2VsaW5lLXN1ZmZpeCByZXF1aXJlcyB0aGUgc3VmZml4IGZvciB0aGUgcmVmZXJl
bmNlIFBOR3MuXG4iKTsKKyAgICAgICAgICAgICAgICAgICAgdXNhZ2UobmFtZSk7CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIGlmIChbYXJnU3RyaW5nIGlzRXF1YWxUb1N0
cmluZzpAIi0tYmFzZWxpbmUtZGlyIl0pIHsKKyAgICAgICAgICAgICAgICBpZih4ICsgMSA8IGFy
Z2MpIHsKKyAgICAgICAgICAgICAgICAgICAgZXhwbGljaXRCYXNlbGluZURpcmVjdG9yeSA9IFtO
U1N0cmluZyBzdHJpbmdXaXRoVVRGOFN0cmluZzphcmd2W3grMV1dOworICAgICAgICAgICAgICAg
ICAgICB4Kys7IC8vIHNraXAgdG8gdGhlIG5leHQgYXJnCisgICAgICAgICAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgICAgICAgICAgcHJpbnRmKCItLWJhc2VsaW5lLWRpciByZXF1aXJlcyB0
aGUgc3VmZml4IGZvciB0aGUgcmVmZXJlbmNlIFBOR3MuXG4iKTsKICAgICAgICAgICAgICAgICAg
ICAgdXNhZ2UobmFtZSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfSBlbHNlIHsK
LSAgICAgICAgICAgICAgICBwcmludGYoIlVucmVjb2duaXplZCBvcHRpb24gJUBcbiIsIGFyZ1N0
cmluZyk7CisgICAgICAgICAgICAgICAgcHJpbnRmKCJVbnJlY29nbml6ZWQgb3B0aW9uICVzXG4i
LCBbYXJnU3RyaW5nIFVURjhTdHJpbmddKTsKICAgICAgICAgICAgICAgICB1c2FnZShuYW1lKTsK
ICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGlmICghW1tOU0Zp
bGVNYW5hZ2VyIGRlZmF1bHRNYW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRoOlthcmdTdHJpbmcgc3Ry
aW5nQnlTdGFuZGFyZGl6aW5nUGF0aF1dKSB7Ci0gICAgICAgICAgICAgICAgcHJpbnRmKCJTVkcg
ZG9lcyBub3QgZXhpc3QgYXQgcGF0aDogJUBcbiIsIGFyZ1N0cmluZyk7CisgICAgICAgICAgICAg
ICAgcHJpbnRmKCJTVkcgZG9lcyBub3QgZXhpc3QgYXQgcGF0aDogJXNcbiIsIFthcmdTdHJpbmcg
VVRGOFN0cmluZ10pOwogICAgICAgICAgICAgICAgIGV4aXQoMSk7CiAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICBbc3ZncyBhZGRPYmplY3Q6YXJnU3RyaW5nXTsKQEAgLTEyNiwyOCArMjA3LDgw
IEBACiAgICAgICAgIHVzYWdlKG5hbWUpOwogICAgIH0KICAgICAKLSAgICBpZiAoIChbc3ZncyBj
b3VudF0gPiAxKSAmJiBleHBsaWNpdE91dHB1dFBhdGgpIHsKKyAgICBpZiAoIChbc3ZncyBjb3Vu
dF0gPiAxKSAmJiBleHBsaWNpdE91dHB1dEZpbGUpIHsKICAgICAgICAgcHJpbnRmKCItLW91dHB1
dCBuYW1lIHNwZWNpZmVkLCB5ZXQgbW9yZSB0aGFuIG9uZSBpbnB1dCBmaWxlIHdhcyBnaXZlbiFc
blxuIik7CiAgICAgICAgIHVzYWdlKG5hbWUpOwogICAgIH0KICAgICAKKyAgICAKICAgICBOU1N0
cmluZyAqc3ZnUGF0aCA9IG5pbDsKICAgICBmb3JlYWNoYXJyYXkoc3ZnUGF0aCwgc3Zncykgewot
ICAgICAgICBOU1N0cmluZyAqcG5nUGF0aCA9IG5pbDsKLSAgICAgICAgaWYgKGV4cGxpY2l0T3V0
cHV0UGF0aCkKLSAgICAgICAgICAgIHBuZ1BhdGggPSBleHBsaWNpdE91dHB1dFBhdGg7CisgICAg
ICAgIE5TQml0bWFwSW1hZ2VSZXAgKnN2Z0JpdG1hcCA9IG5pbDsKKyAgICAgICAgTlNTdHJpbmcg
KnN2Z1BOR1BhdGggPSBuaWw7CisgICAgICAgIAorICAgICAgICBpZiAoZXhwbGljaXRPdXRwdXRG
aWxlKQorICAgICAgICAgICAgc3ZnUE5HUGF0aCA9IGV4cGxpY2l0T3V0cHV0RmlsZTsKICAgICAg
ICAgZWxzZSB7Ci0gICAgICAgICAgICBwbmdQYXRoID0gW3N2Z1BhdGggc3RyaW5nQnlEZWxldGlu
Z1BhdGhFeHRlbnNpb25dOworICAgICAgICAgICAgaWYgKGV4cGxpY2l0T3V0cHV0RGlyZWN0b3J5
KQorICAgICAgICAgICAgICAgIHN2Z1BOR1BhdGggPSBbW2V4cGxpY2l0T3V0cHV0RGlyZWN0b3J5
IHN0cmluZ0J5QXBwZW5kaW5nUGF0aENvbXBvbmVudDpbc3ZnUGF0aCBsYXN0UGF0aENvbXBvbmVu
dF1dIHN0cmluZ0J5RGVsZXRpbmdQYXRoRXh0ZW5zaW9uXTsKKyAgICAgICAgICAgIGVsc2UgICAg
IAorICAgICAgICAgICAgICAgIHN2Z1BOR1BhdGggPSBbc3ZnUGF0aCBzdHJpbmdCeURlbGV0aW5n
UGF0aEV4dGVuc2lvbl07CisgICAgICAgICAgICAKICAgICAgICAgICAgIGlmIChvdXRwdXRTdWZm
aXgpCi0gICAgICAgICAgICAgICAgcG5nUGF0aCA9IFtwbmdQYXRoIHN0cmluZ0J5QXBwZW5kaW5n
U3RyaW5nOm91dHB1dFN1ZmZpeF07Ci0gICAgICAgICAgICBwbmdQYXRoID0gW3BuZ1BhdGggc3Ry
aW5nQnlBcHBlbmRpbmdQYXRoRXh0ZW5zaW9uOkAicG5nIl07CisgICAgICAgICAgICAgICAgc3Zn
UE5HUGF0aCA9IFtzdmdQTkdQYXRoIHN0cmluZ0J5QXBwZW5kaW5nU3RyaW5nOm91dHB1dFN1ZmZp
eF07CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHN2Z1BOR1BhdGggPSBbc3ZnUE5HUGF0aCBz
dHJpbmdCeUFwcGVuZGluZ1BhdGhFeHRlbnNpb246QCJwbmciXTsKKyAgICAgICAgfQorICAgICAg
ICAKKyAgICAgICAgLy8gZ2VuZXJhdGUgdGhlIFNWRywgc2F2ZSB0aGUgYml0bWFwIGRhdGEgZm9y
IHRoZSBkaWZmCisgICAgICAgIHN2Z0JpdG1hcCA9IGdldEJpdG1hcEZvclNWRyhzdmdQYXRoKTsK
KyAgICAgICAgCisgICAgICAgIC8vIG91dHB1dCB0aGUgcmVzdWx0aW5nIFNWRyB0byBhIFBORyBm
aWxlCisgICAgICAgIE5TRGF0YSAqc3ZnUE5HRGF0YSA9IFtzdmdCaXRtYXAgcmVwcmVzZW50YXRp
b25Vc2luZ1R5cGU6TlNQTkdGaWxlVHlwZSBwcm9wZXJ0aWVzOm5pbF07CisgICAgICAgIFtzdmdQ
TkdEYXRhIHdyaXRlVG9GaWxlOnN2Z1BOR1BhdGggYXRvbWljYWxseTpZRVNdOworICAgICAgICAK
KyAgICAgICAgaWYgKGJhc2VsaW5lU3VmZml4IHx8IGV4cGxpY2l0QmFzZWxpbmVEaXJlY3Rvcnkp
IHsKKyAgICAgICAgICAgIE5TU3RyaW5nICpkaWZmSW1hZ2VQYXRoID0gW1tbc3ZnUE5HUGF0aCBz
dHJpbmdCeURlbGV0aW5nUGF0aEV4dGVuc2lvbl0KKyAgICAgICAgICAgICAgICBzdHJpbmdCeUFw
cGVuZGluZ1N0cmluZzpAIi1kaWZmIl0KKyAgICAgICAgICAgICAgICBzdHJpbmdCeUFwcGVuZGlu
Z1BhdGhFeHRlbnNpb246QCJwbmciXTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgTlNTdHJp
bmcgKmFuaW1hdGVkR0lGUGF0aCA9IFtbZGlmZkltYWdlUGF0aCBzdHJpbmdCeURlbGV0aW5nUGF0
aEV4dGVuc2lvbl0KKyAgICAgICAgICAgICAgICBzdHJpbmdCeUFwcGVuZGluZ1BhdGhFeHRlbnNp
b246QCJnaWYiXTsKKworICAgICAgICAgICAgTlNTdHJpbmcgKmJhc2VsaW5lSW1hZ2VQYXRoID0g
bmlsOworICAgICAgICAgICAgCisgICAgICAgICAgICAvLyBpZiBzZXQsIGxvb2sgZm9yIGJhc2Vs
aW5lcyBpbiBhIHNlcGVyYXRlIGRpcmVjdG9yeQorICAgICAgICAgICAgaWYgKGV4cGxpY2l0QmFz
ZWxpbmVEaXJlY3RvcnkpCisgICAgICAgICAgICAgICAgYmFzZWxpbmVJbWFnZVBhdGggPSBbW2V4
cGxpY2l0QmFzZWxpbmVEaXJlY3RvcnkgCisgICAgICAgICAgICAgICAgICAgIHN0cmluZ0J5QXBw
ZW5kaW5nUGF0aENvbXBvbmVudDpbc3ZnUGF0aCBsYXN0UGF0aENvbXBvbmVudF1dIHN0cmluZ0J5
RGVsZXRpbmdQYXRoRXh0ZW5zaW9uXTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAg
ICBiYXNlbGluZUltYWdlUGF0aCA9IFtzdmdQYXRoIHN0cmluZ0J5RGVsZXRpbmdQYXRoRXh0ZW5z
aW9uXTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8gaWYgYmFzZWxpbmVzIGhhdmUgYSBz
cGVjaWFsIHN1ZmZpeCwgYXBwZW5kIHRoYXQgdG8gdGhlIHBhdGgKKyAgICAgICAgICAgIGlmIChi
YXNlbGluZVN1ZmZpeCkKKyAgICAgICAgICAgICAgICBiYXNlbGluZUltYWdlUGF0aCA9IFtiYXNl
bGluZUltYWdlUGF0aCBzdHJpbmdCeUFwcGVuZGluZ1N0cmluZzpiYXNlbGluZVN1ZmZpeF07Cisg
ICAgICAgICAgICAKKyAgICAgICAgICAgIGJhc2VsaW5lSW1hZ2VQYXRoID0gW2Jhc2VsaW5lSW1h
Z2VQYXRoIHN0cmluZ0J5QXBwZW5kaW5nUGF0aEV4dGVuc2lvbjpAInBuZyJdOworCisgICAgICAg
ICAgICAvLyBjb21wYXJlCisgICAgICAgICAgICBOU0JpdG1hcEltYWdlUmVwICpyZWZlcmVuY2VC
aXRtYXAgPSBbTlNCaXRtYXBJbWFnZVJlcCBpbWFnZVJlcFdpdGhDb250ZW50c09mVVJMOltOU1VS
TCBmaWxlVVJMV2l0aFBhdGg6YmFzZWxpbmVJbWFnZVBhdGhdXTsKKyAgICAgICAgICAgIE5TQml0
bWFwSW1hZ2VSZXAgKmRpZmZCaXRtYXAgPSBnZXREaWZmZXJlbmNlQml0bWFwKHN2Z0JpdG1hcCwg
cmVmZXJlbmNlQml0bWFwKTsKKworICAgICAgICAgICAgLy8gb3V0cHV0IHRoZSByZXN1bHRpbmcg
U1ZHIHRvIGEgUE5HIGZpbGUKKyAgICAgICAgICAgIE5TRGF0YSAqZGlmZlBOR0RhdGEgPSBbZGlm
ZkJpdG1hcCByZXByZXNlbnRhdGlvblVzaW5nVHlwZTpOU1BOR0ZpbGVUeXBlIHByb3BlcnRpZXM6
bmlsXTsKKyAgICAgICAgICAgIFtkaWZmUE5HRGF0YSB3cml0ZVRvRmlsZTpkaWZmSW1hZ2VQYXRo
IGF0b21pY2FsbHk6WUVTXTsKKworICAgICAgICAgICAgLy8gc2F2ZSB0aGUgcmVmZXJlbmNlIGFu
ZCB0aGUgc3ZnIGltYWdlcyBpbiBhbiBhbmltYXRlZCBHSUYKKyAgICAgICAgICAgIHNhdmVBbmlt
YXRlZEdJRlRvRmlsZShzdmdCaXRtYXAsIHJlZmVyZW5jZUJpdG1hcCwgYW5pbWF0ZWRHSUZQYXRo
KTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgZmxvYXQgcGVyY2VudGFnZSA9IGNvbXB1dGVQ
ZXJjZW50YWdlRGlmZmVyZW50KGRpZmZCaXRtYXApOworICAgICAgICAgICAgcHJpbnRmKCIlc1x0
JTMuM2YlJVx0JXNcbiIsIFtzdmdQYXRoIFVURjhTdHJpbmddLCBwZXJjZW50YWdlLCAocGVyY2Vu
dGFnZSA+IDEgPyAiRmFpbGVkLiIgOiAiUGFzc2VkLiIpKTsKKyAgICAgICAgICAgIAorICAgICAg
ICAgICAgW2RpZmZCaXRtYXAgcmVsZWFzZV07CiAgICAgICAgIH0KLSAgICAgICAgb3V0cHV0UE5H
KHN2Z1BhdGgsIHBuZ1BhdGgpOwogICAgIH0KICAgICAKICAgICBbcG9vbCBkcmFpbl07CiAgICAg
CiAgICAgcmV0dXJuIDA7CiB9Ci0KLQpJbmRleDogc3ZnMnBuZy54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KUkNTIGZpbGU6IC9jdnMvcm9vdC9XZWJLaXRUb29scy9zdmcycG5n
L3N2ZzJwbmcueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaix2CnJldHJpZXZpbmcgcmV2aXNpb24g
MS4xCmRpZmYgLXUgLXIxLjEgcHJvamVjdC5wYnhwcm9qCi0tLSBzdmcycG5nLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oJMjkgSnVsIDIwMDUgMDU6MjY6MDcgLTAwMDAJMS4xCisrKyBzdmcycG5n
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJNyBBdWcgMjAwNSAyMDo1Nzo0MyAtMDAwMApAQCAt
MTAsNiArMTAsMTEgQEAKIAkJOERENzZGOUEwNDg2QUE3NjAwRDk2QjVFIC8qIHN2ZzJwbmcubSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA4RkI3Nzk2RkU4
NDE1NURDMDJBQUMwNyAvKiBzdmcycG5nLm0gKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
KTsgfTsgfTsKIAkJOERENzZGOUMwNDg2QUE3NjAwRDk2QjVFIC8qIEZvdW5kYXRpb24uZnJhbWV3
b3JrIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDhG
Qjc3OUVGRTg0MTU1REMwMkFBQzA3IC8qIEZvdW5kYXRpb24uZnJhbWV3b3JrICovOyB9OwogCQlB
ODk4Rjc5NTA4ODI0QjRBMDA3NUVGQjIgLyogV2ViQ29yZStTVkcuZnJhbWV3b3JrIGluIEZyYW1l
d29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTg5OEY3OTQwODgyNEI0
QTAwNzVFRkIyIC8qIFdlYkNvcmUrU1ZHLmZyYW1ld29yayAqLzsgfTsKKwkJQjUwRDlBRkIwOEEw
MDQ4NTAwRUNGNzgyIC8qIFF1YXJ0ekNvcmUuZnJhbWV3b3JrIGluIEZyYW1ld29ya3MgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjUwRDlBRkEwOEEwMDQ4NTAwRUNGNzgyIC8q
IFF1YXJ0ekNvcmUuZnJhbWV3b3JrICovOyB9OworCQlCNTU1OTg4OTA4QTM0MUUzMDAxRUI1RkQg
LyogSW1hZ2VEaWZmLm0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBCNTU1OTg4ODA4QTM0MUUzMDAxRUI1RkQgLyogSW1hZ2VEaWZmLm0gKi87IH07CisJCUI1
NTU5OEFFMDhBMzQ0MEIwMDFFQjVGRCAvKiBJbWFnZURpZmYuaCBpbiBDb3B5RmlsZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjU1NTk4QUQwOEEzNDQwQjAwMUVCNUZEIC8q
IEltYWdlRGlmZi5oICovOyB9OworCQlCNTlGNThGQzA4QTFEMUNBMDBCRTI2NjQgLyogQXBwS2l0
LmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEI1OUY1OEZCMDhBMUQxQ0EwMEJFMjY2NCAvKiBBcHBLaXQuZnJhbWV3b3JrICovOyB9Owor
CQlCNUQ5MjVBMzA4QTRCODc3MDBCQzk0RjYgLyogc3ZnMnBuZyBpbiBDb3B5RmlsZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOERENzZGQTEwNDg2QUE3NjAwRDk2QjVFIC8q
IHN2ZzJwbmcgKi87IH07CiAvKiBFbmQgUEJYQnVpbGRGaWxlIHNlY3Rpb24gKi8KIAogLyogQmVn
aW4gUEJYQnVpbGRTdHlsZSBzZWN0aW9uICovCkBAIC00MywxNyArNDgsMjMgQEAKIAkJCWRzdFBh
dGggPSAvdXNyL3NoYXJlL21hbi9tYW4xLzsKIAkJCWRzdFN1YmZvbGRlclNwZWMgPSAwOwogCQkJ
ZmlsZXMgPSAoCisJCQkJQjU1NTk4QUUwOEEzNDQwQjAwMUVCNUZEIC8qIEltYWdlRGlmZi5oIGlu
IENvcHlGaWxlcyAqLywKKwkJCQlCNUQ5MjVBMzA4QTRCODc3MDBCQzk0RjYgLyogc3ZnMnBuZyBp
biBDb3B5RmlsZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vz
c2luZyA9IDE7CiAJCX07CiAvKiBFbmQgUEJYQ29weUZpbGVzQnVpbGRQaGFzZSBzZWN0aW9uICov
CiAKIC8qIEJlZ2luIFBCWEZpbGVSZWZlcmVuY2Ugc2VjdGlvbiAqLwotCQkwOEZCNzc5NkZFODQx
NTVEQzAyQUFDMDcgLyogc3ZnMnBuZy5tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLm9iamM7IHBh
dGggPSBzdmcycG5nLm07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA4RkI3Nzk2RkU4
NDE1NURDMDJBQUMwNyAvKiBzdmcycG5nLm0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5vYmpjOyBwYXRoID0gc3ZnMnBuZy5tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB0YWJXaWR0aCA9IDQ7IHVzZXNUYWJzID0gMDsgfTsKIAkJMDhGQjc3OUVGRTg0MTU1REMwMkFB
QzA3IC8qIEZvdW5kYXRpb24uZnJhbWV3b3JrICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gd3JhcHBlci5mcmFtZXdvcms7IG5hbWUgPSBGb3VuZGF0aW9u
LmZyYW1ld29yazsgcGF0aCA9IC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL0ZvdW5kYXRpb24u
ZnJhbWV3b3JrOyBzb3VyY2VUcmVlID0gIjxhYnNvbHV0ZT4iOyB9OwogCQkzMkE3MEFBQjAzNzA1
RTFGMDBDOTE3ODMgLyogc3ZnMnBuZ19QcmVmaXgucGNoICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBzdmcycG5nX1ByZWZpeC5wY2g7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCThERDc2RkExMDQ4NkFBNzYwMEQ5NkI1RSAvKiBzdmcycG5nICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGV4cGxpY2l0RmlsZVR5cGUgPSAiY29tcGlsZWQubWFjaC1vLmV4ZWN1dGFi
bGUiOyBpbmNsdWRlSW5JbmRleCA9IDA7IHBhdGggPSBzdmcycG5nOyBzb3VyY2VUcmVlID0gQlVJ
TFRfUFJPRFVDVFNfRElSOyB9OwogCQlBODk4Rjc5NDA4ODI0QjRBMDA3NUVGQjIgLyogV2ViQ29y
ZStTVkcuZnJhbWV3b3JrICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gd3JhcHBlci5mcmFtZXdvcms7IHBhdGggPSAiV2ViQ29yZStTVkcuZnJhbWV3b3Jr
Ijsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKKwkJQjUwRDlBRkEwOEEwMDQ4
NTAwRUNGNzgyIC8qIFF1YXJ0ekNvcmUuZnJhbWV3b3JrICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gd3JhcHBlci5mcmFtZXdvcms7IG5hbWUgPSBRdWFy
dHpDb3JlLmZyYW1ld29yazsgcGF0aCA9IC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1F1YXJ0
ekNvcmUuZnJhbWV3b3JrOyBzb3VyY2VUcmVlID0gIjxhYnNvbHV0ZT4iOyB9OworCQlCNTU1OTg4
ODA4QTM0MUUzMDAxRUI1RkQgLyogSW1hZ2VEaWZmLm0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
b2JqYzsgcGF0aCA9IEltYWdlRGlmZi5tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlC
NTU1OThBRDA4QTM0NDBCMDAxRUI1RkQgLyogSW1hZ2VEaWZmLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEltYWdlRGlmZi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlCNTlGNThGQjA4QTFEMUNBMDBCRTI2NjQgLyogQXBwS2l0LmZyYW1ld29yayAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHdyYXBwZXIuZnJhbWV3b3Jr
OyBuYW1lID0gQXBwS2l0LmZyYW1ld29yazsgcGF0aCA9IC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdv
cmtzL0FwcEtpdC5mcmFtZXdvcms7IHNvdXJjZVRyZWUgPSAiPGFic29sdXRlPiI7IH07CiAvKiBF
bmQgUEJYRmlsZVJlZmVyZW5jZSBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWEZyYW1ld29ya3NC
dWlsZFBoYXNlIHNlY3Rpb24gKi8KQEAgLTYzLDYgKzc0LDggQEAKIAkJCWZpbGVzID0gKAogCQkJ
CThERDc2RjlDMDQ4NkFBNzYwMEQ5NkI1RSAvKiBGb3VuZGF0aW9uLmZyYW1ld29yayBpbiBGcmFt
ZXdvcmtzICovLAogCQkJCUE4OThGNzk1MDg4MjRCNEEwMDc1RUZCMiAvKiBXZWJDb3JlK1NWRy5m
cmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLywKKwkJCQlCNTBEOUFGQjA4QTAwNDg1MDBFQ0Y3ODIg
LyogUXVhcnR6Q29yZS5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLywKKwkJCQlCNTlGNThGQzA4
QTFEMUNBMDBCRTI2NjQgLyogQXBwS2l0LmZyYW1ld29yayBpbiBGcmFtZXdvcmtzICovLAogCQkJ
KTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAt
ODQsNiArOTcsOCBAQAogCQkJY2hpbGRyZW4gPSAoCiAJCQkJMzJBNzBBQUIwMzcwNUUxRjAwQzkx
NzgzIC8qIHN2ZzJwbmdfUHJlZml4LnBjaCAqLywKIAkJCQkwOEZCNzc5NkZFODQxNTVEQzAyQUFD
MDcgLyogc3ZnMnBuZy5tICovLAorCQkJCUI1NTU5ODg4MDhBMzQxRTMwMDFFQjVGRCAvKiBJbWFn
ZURpZmYubSAqLywKKwkJCQlCNTU1OThBRDA4QTM0NDBCMDAxRUI1RkQgLyogSW1hZ2VEaWZmLmgg
Ki8sCiAJCQkpOwogCQkJbmFtZSA9IFNvdXJjZTsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
CkBAIC05MSw2ICsxMDYsOCBAQAogCQkwOEZCNzc5REZFODQxNTVEQzAyQUFDMDcgLyogRXh0ZXJu
YWwgRnJhbWV3b3JrcyBhbmQgTGlicmFyaWVzICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJ
CQljaGlsZHJlbiA9ICgKKwkJCQlCNTlGNThGQjA4QTFEMUNBMDBCRTI2NjQgLyogQXBwS2l0LmZy
YW1ld29yayAqLywKKwkJCQlCNTBEOUFGQTA4QTAwNDg1MDBFQ0Y3ODIgLyogUXVhcnR6Q29yZS5m
cmFtZXdvcmsgKi8sCiAJCQkJQTg5OEY3OTQwODgyNEI0QTAwNzVFRkIyIC8qIFdlYkNvcmUrU1ZH
LmZyYW1ld29yayAqLywKIAkJCQkwOEZCNzc5RUZFODQxNTVEQzAyQUFDMDcgLyogRm91bmRhdGlv
bi5mcmFtZXdvcmsgKi8sCiAJCQkpOwpAQCAtMTY1LDYgKzE4Miw3IEBACiAJCQlidWlsZEFjdGlv
bk1hc2sgPSAyMTQ3NDgzNjQ3OwogCQkJZmlsZXMgPSAoCiAJCQkJOERENzZGOUEwNDg2QUE3NjAw
RDk2QjVFIC8qIHN2ZzJwbmcubSBpbiBTb3VyY2VzICovLAorCQkJCUI1NTU5ODg5MDhBMzQxRTMw
MDFFQjVGRCAvKiBJbWFnZURpZmYubSBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlG
b3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMTc1LDYgKzE5Myw3IEBA
CiAJCQlpc2EgPSBYQ0J1aWxkQ29uZmlndXJhdGlvbjsKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7CiAJ
CQkJQ09QWV9QSEFTRV9TVFJJUCA9IE5POworCQkJCUZSQU1FV09SS19TRUFSQ0hfUEFUSFMgPSAv
U3lzdGVtL0xpYnJhcnkvRnJhbWV3b3JrczsKIAkJCQlHQ0NfRFlOQU1JQ19OT19QSUMgPSBOTzsK
IAkJCQlHQ0NfRU5BQkxFX0ZJWF9BTkRfQ09OVElOVUUgPSBZRVM7CiAJCQkJR0NDX0dFTkVSQVRF
X0RFQlVHR0lOR19TWU1CT0xTID0gWUVTOwpAQCAtMTg0LDcgKzIwMyw5IEBACiAJCQkJR0NDX1BS
RUZJWF9IRUFERVIgPSBzdmcycG5nX1ByZWZpeC5wY2g7CiAJCQkJR0NDX1dBUk5fQUJPVVRfUkVU
VVJOX1RZUEUgPSBZRVM7CiAJCQkJR0NDX1dBUk5fVU5VU0VEX1ZBUklBQkxFID0gWUVTOworCQkJ
CUhFQURFUl9TRUFSQ0hfUEFUSFMgPSAiIjsKIAkJCQlJTlNUQUxMX1BBVEggPSAiJChIT01FKS9i
aW4iOworCQkJCUxJQlJBUllfU0VBUkNIX1BBVEhTID0gIiI7CiAJCQkJUFJFQklORElORyA9IE5P
OwogCQkJCVBST0RVQ1RfTkFNRSA9IHN2ZzJwbmc7CiAJCQkJVkVSU0lPTklOR19TWVNURU0gPSAi
YXBwbGUtZ2VuZXJpYyI7CkBAIC0xOTYsNiArMjE3LDcgQEAKIAkJCWlzYSA9IFhDQnVpbGRDb25m
aWd1cmF0aW9uOwogCQkJYnVpbGRTZXR0aW5ncyA9IHsKIAkJCQlDT1BZX1BIQVNFX1NUUklQID0g
WUVTOworCQkJCUZSQU1FV09SS19TRUFSQ0hfUEFUSFMgPSAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3
b3JrczsKIAkJCQlHQ0NfRU5BQkxFX0ZJWF9BTkRfQ09OVElOVUUgPSBOTzsKIAkJCQlHQ0NfR0VO
RVJBVEVfREVCVUdHSU5HX1NZTUJPTFMgPSBOTzsKIAkJCQlHQ0NfTU9ERUxfVFVOSU5HID0gRzU7
CkBAIC0yMDMsNyArMjI1LDkgQEAKIAkJCQlHQ0NfUFJFRklYX0hFQURFUiA9IHN2ZzJwbmdfUHJl
Zml4LnBjaDsKIAkJCQlHQ0NfV0FSTl9BQk9VVF9SRVRVUk5fVFlQRSA9IFlFUzsKIAkJCQlHQ0Nf
V0FSTl9VTlVTRURfVkFSSUFCTEUgPSBZRVM7CisJCQkJSEVBREVSX1NFQVJDSF9QQVRIUyA9ICIi
OwogCQkJCUlOU1RBTExfUEFUSCA9ICIkKEhPTUUpL2JpbiI7CisJCQkJTElCUkFSWV9TRUFSQ0hf
UEFUSFMgPSAiIjsKIAkJCQlQUkVCSU5ESU5HID0gTk87CiAJCQkJUFJPRFVDVF9OQU1FID0gc3Zn
MnBuZzsKIAkJCQlWRVJTSU9OSU5HX1NZU1RFTSA9ICJhcHBsZS1nZW5lcmljIjsKQEAgLTIxNCwx
MyArMjM4LDE2IEBACiAJCUE4QzAwNjI4MDg5NzU2OUEwMEJBNTExNCAvKiBEZWZhdWx0ICovID0g
ewogCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CiAJCQlidWlsZFNldHRpbmdzID0gewor
CQkJCUZSQU1FV09SS19TRUFSQ0hfUEFUSFMgPSAvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3JrczsK
IAkJCQlHQ0NfR0VORVJBVEVfREVCVUdHSU5HX1NZTUJPTFMgPSBOTzsKIAkJCQlHQ0NfTU9ERUxf
VFVOSU5HID0gRzU7CiAJCQkJR0NDX1BSRUNPTVBJTEVfUFJFRklYX0hFQURFUiA9IFlFUzsKIAkJ
CQlHQ0NfUFJFRklYX0hFQURFUiA9IHN2ZzJwbmdfUHJlZml4LnBjaDsKIAkJCQlHQ0NfV0FSTl9B
Qk9VVF9SRVRVUk5fVFlQRSA9IFlFUzsKIAkJCQlHQ0NfV0FSTl9VTlVTRURfVkFSSUFCTEUgPSBZ
RVM7CisJCQkJSEVBREVSX1NFQVJDSF9QQVRIUyA9ICIiOwogCQkJCUlOU1RBTExfUEFUSCA9ICIk
KEhPTUUpL2JpbiI7CisJCQkJTElCUkFSWV9TRUFSQ0hfUEFUSFMgPSAiIjsKIAkJCQlQUkVCSU5E
SU5HID0gTk87CiAJCQkJUFJPRFVDVF9OQU1FID0gc3ZnMnBuZzsKIAkJCQlWRVJTSU9OSU5HX1NZ
U1RFTSA9ICJhcHBsZS1nZW5lcmljIjsKQEAgLTIzMCw2ICsyNTcsNyBAQAogCQlBOEMwMDYyQTA4
OTc1NjlBMDBCQTUxMTQgLyogRGV2ZWxvcG1lbnQgKi8gPSB7CiAJCQlpc2EgPSBYQ0J1aWxkQ29u
ZmlndXJhdGlvbjsKIAkJCWJ1aWxkU2V0dGluZ3MgPSB7CisJCQkJRlJBTUVXT1JLX1NFQVJDSF9Q
QVRIUyA9ICIiOwogCQkJCUdDQ19DX0xBTkdVQUdFX1NUQU5EQVJEID0gZ251OTk7CiAJCQkJR0ND
X1RSRUFUX1dBUk5JTkdTX0FTX0VSUk9SUyA9IFlFUzsKIAkJCQlWRVJTSU9OSU5HX1NZU1RFTSA9
ICJhcHBsZS1nZW5lcmljIjsKQEAgLTIzOSw2ICsyNjcsNyBAQAogCQlBOEMwMDYyQjA4OTc1NjlB
MDBCQTUxMTQgLyogRGVwbG95bWVudCAqLyA9IHsKIAkJCWlzYSA9IFhDQnVpbGRDb25maWd1cmF0
aW9uOwogCQkJYnVpbGRTZXR0aW5ncyA9IHsKKwkJCQlGUkFNRVdPUktfU0VBUkNIX1BBVEhTID0g
IiI7CiAJCQkJR0NDX0NfTEFOR1VBR0VfU1RBTkRBUkQgPSBnbnU5OTsKIAkJCQlHQ0NfVFJFQVRf
V0FSTklOR1NfQVNfRVJST1JTID0gWUVTOwogCQkJCVZFUlNJT05JTkdfU1lTVEVNID0gImFwcGxl
LWdlbmVyaWMiOwpAQCAtMjQ4LDYgKzI3Nyw3IEBACiAJCUE4QzAwNjJDMDg5NzU2OUEwMEJBNTEx
NCAvKiBEZWZhdWx0ICovID0gewogCQkJaXNhID0gWENCdWlsZENvbmZpZ3VyYXRpb247CiAJCQli
dWlsZFNldHRpbmdzID0geworCQkJCUZSQU1FV09SS19TRUFSQ0hfUEFUSFMgPSAiIjsKIAkJCQlH
Q0NfQ19MQU5HVUFHRV9TVEFOREFSRCA9IGdudTk5OwogCQkJCUdDQ19UUkVBVF9XQVJOSU5HU19B
U19FUlJPUlMgPSBZRVM7CiAJCQkJVkVSU0lPTklOR19TWVNURU0gPSAiYXBwbGUtZ2VuZXJpYyI7
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>3266</attachid>
            <date>2005-08-07 13:59:04 -0700</date>
            <delta_ts>2005-08-07 14:00:15 -0700</delta_ts>
            <desc>ImageDiff.h</desc>
            <filename>ImageDiff.h</filename>
            <type>text/plain</type>
            <size>1661</size>
            <attacher name="Ben La Monica">ben.lamonica</attacher>
            
              <data encoding="base64">LyoKICogQ29weXJpZ2h0IChDKSAyMDA1IEJlbiBMYSBNb25pY2EgPGJlbi5sYW1vbmljYUBnbWFp
bC5jb20+LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICoKICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwogKiBhcmUgbWV0OgogKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAogKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCiAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CiAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KICoKICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQVVUSE9SIGBgQVMgSVMnJyBBTkQgQU5ZCiAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCiAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgogKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFV
VEhPUiBPUgogKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAogKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQogKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAogKi8KCi8vIHBy
b3RvdHlwZXMKTlNCaXRtYXBJbWFnZVJlcCAqZ2V0RGlmZmVyZW5jZUJpdG1hcChOU0JpdG1hcElt
YWdlUmVwICp0ZXN0Qml0bWFwLCBOU0JpdG1hcEltYWdlUmVwICpyZWZlcmVuY2VCaXRtYXApOwpm
bG9hdCBjb21wdXRlUGVyY2VudGFnZURpZmZlcmVudChOU0JpdG1hcEltYWdlUmVwICpkaWZmQml0
bWFwKTsKdm9pZCBzYXZlQW5pbWF0ZWRHSUZUb0ZpbGUoTlNCaXRtYXBJbWFnZVJlcCAqZmlyc3RG
cmFtZSwgTlNCaXRtYXBJbWFnZVJlcCAqc2Vjb25kRnJhbWUsIE5TU3RyaW5nICphbmltYXRlZEdJ
RlBhdGgpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>3267</attachid>
            <date>2005-08-07 13:59:54 -0700</date>
            <delta_ts>2005-08-07 13:59:54 -0700</delta_ts>
            <desc>ImageDiff.m</desc>
            <filename>ImageDiff.m</filename>
            <type>text/plain</type>
            <size>7020</size>
            <attacher name="Ben La Monica">ben.lamonica</attacher>
            
              <data encoding="base64">LyoKICogQ29weXJpZ2h0IChDKSAyMDA1IEJlbiBMYSBNb25pY2EgPGJlbi5sYW1vbmljYUBnbWFp
bC5jb20+LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICoKICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwogKiBhcmUgbWV0OgogKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAogKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCiAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CiAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KICoKICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQVVUSE9SIGBgQVMgSVMnJyBBTkQgQU5ZCiAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCiAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgogKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFV
VEhPUiBPUgogKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAogKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQogKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAogKi8KIAojaW1w
b3J0IDxRdWFydHpDb3JlL0NJRmlsdGVyLmg+CiNpbXBvcnQgPFF1YXJ0ekNvcmUvQ0lJbWFnZS5o
PgojaW1wb3J0IDxRdWFydHpDb3JlL0NJQ29udGV4dC5oPgojaW1wb3J0IDxBcHBLaXQvTlNCaXRt
YXBJbWFnZVJlcC5oPgojaW1wb3J0IDxBcHBLaXQvTlNHcmFwaGljc0NvbnRleHQuaD4KI2ltcG9y
dCA8QXBwS2l0L05TQ0lJbWFnZVJlcC5oPgoKI2ltcG9ydCAiSW1hZ2VEaWZmLmgiCgovKioKICog
VGFrZXMgYSBiaXRtYXAgYW5kIHBlcmZvcm1zIGEgZGlmZmVyZW5jZSBibGVuZCB3aXRoIGEgcmVm
ZXJlbmNlIAogKiBpbWFnZS4gSWYgdGhlIGltYWdlcyBhcmUgZXhhY3RseSB0aGUgc2FtZSwgdGhl
IGRpZmZCaXRtYXAgd2lsbCAKICogYmUgc29saWQgYmxhY2suCiAqCiAqIEl0IHdpbGwgd3JpdGUg
dGhpcyBkaWZmZXJlbmNlIGJsZW5kZWQgYml0bWFwIHRvIGEgZmlsZS4KICogCiAqIFJldHVybnMg
dGhlIGRpZmZlcmVuY2UgYml0bWFwCiAqLwpOU0JpdG1hcEltYWdlUmVwICpnZXREaWZmZXJlbmNl
Qml0bWFwKE5TQml0bWFwSW1hZ2VSZXAgKnRlc3RCaXRtYXAsIE5TQml0bWFwSW1hZ2VSZXAgKnJl
ZmVyZW5jZUJpdG1hcCkKewogICAgLy8gY3JlYXRlIGEgbmV3IGdyYXBoaWNzIGNvbnRleHQgdG8g
ZHJhdyBvdXIgQ0lJbWFnZSBvbgogICAgTlNCaXRtYXBJbWFnZVJlcCAqZGlmZkJpdG1hcCA9IFt0
ZXN0Qml0bWFwIGNvcHldOwogICAgTlNHcmFwaGljc0NvbnRleHQgKm5zQ29udGV4dCA9IFtOU0dy
YXBoaWNzQ29udGV4dCBncmFwaGljc0NvbnRleHRXaXRoQml0bWFwSW1hZ2VSZXA6ZGlmZkJpdG1h
cF07CiAgICBDSUltYWdlICpyZWZlcmVuY2VJbWFnZSA9IFtbQ0lJbWFnZSBhbGxvY10gaW5pdFdp
dGhCaXRtYXBJbWFnZVJlcDpyZWZlcmVuY2VCaXRtYXBdOwogICAgQ0lJbWFnZSAqdGVzdEltYWdl
ID0gW1tDSUltYWdlIGFsbG9jXSBpbml0V2l0aEJpdG1hcEltYWdlUmVwOnRlc3RCaXRtYXBdOwog
ICAgQ0lJbWFnZSAqZGlmZkltYWdlID0gbmlsOwogICAgQ0lGaWx0ZXIgKmRpZmZCbGVuZCA9IFtD
SUZpbHRlciBmaWx0ZXJXaXRoTmFtZTpAIkNJRGlmZmVyZW5jZUJsZW5kTW9kZSJdOwoKICAgIC8v
IGdlbmVyYXRlIHRoZSBkaWZmIGltYWdlCiAgICBbZGlmZkJsZW5kIHNldFZhbHVlOnJlZmVyZW5j
ZUltYWdlIGZvcktleTpAImlucHV0SW1hZ2UiXTsKICAgIFtkaWZmQmxlbmQgc2V0VmFsdWU6dGVz
dEltYWdlIGZvcktleTpAImlucHV0QmFja2dyb3VuZEltYWdlIl07CiAgICBkaWZmSW1hZ2UgPSBb
ZGlmZkJsZW5kIHZhbHVlRm9yS2V5OkAib3V0cHV0SW1hZ2UiXTsKICAgIAogICAgLy8gcHJlcGFy
ZSB0byBkcmF3IHRoZSBpbWFnZSwgc2F2ZSBjdXJyZW50IHN0YXRlCiAgICBbTlNHcmFwaGljc0Nv
bnRleHQgc2F2ZUdyYXBoaWNzU3RhdGVdOwogICAgW05TR3JhcGhpY3NDb250ZXh0IHNldEN1cnJl
bnRDb250ZXh0OiBuc0NvbnRleHRdOwogICAgCiAgICAvLyBkcmF3IHRoZSBkaWZmZXJlbmNlIGlt
YWdlCiAgICBbW25zQ29udGV4dCBDSUNvbnRleHRdIGRyYXdJbWFnZTpkaWZmSW1hZ2UgYXRQb2lu
dDpDR1BvaW50WmVybyBmcm9tUmVjdDpbZGlmZkltYWdlIGV4dGVudF1dOwogICAgCiAgICAvLyBy
ZXN0b3JlIHRoZSBwcmV2aW91cyBjb250ZXh0IGFuZCBzdGF0ZQogICAgW05TR3JhcGhpY3NDb250
ZXh0IHJlc3RvcmVHcmFwaGljc1N0YXRlXTsKICAgICAgICAKICAgIFtyZWZlcmVuY2VJbWFnZSBy
ZWxlYXNlXTsKICAgIFt0ZXN0SW1hZ2UgcmVsZWFzZV07CiAgICAKICAgIHJldHVybiBkaWZmQml0
bWFwOwp9CgovKioKICogQ291bnRzIHRoZSBudW1iZXIgb2Ygbm9uLWJsYWNrIHBpeGVscywgYW5k
IHJldHVybnMgdGhlIHBlcmNlbnRhZ2UKICogb2Ygbm9uLWJsYWNrIHBpeGVscyB0byB0b3RhbCBw
aXhlbHMgaW4gdGhlIGltYWdlLgogKi8KZmxvYXQgY29tcHV0ZVBlcmNlbnRhZ2VEaWZmZXJlbnQo
TlNCaXRtYXBJbWFnZVJlcCAqZGlmZkJpdG1hcCkKewogICAgaW50IHRvdGFsUGl4ZWxzID0gW2Rp
ZmZCaXRtYXAgcGl4ZWxzSGlnaF0gKiBbZGlmZkJpdG1hcCBwaXhlbHNXaWRlXTsKICAgIGludCB0
b3RhbEJ5dGVzID0gW2RpZmZCaXRtYXAgYnl0ZXNQZXJQbGFuZV07CiAgICB1bnNpZ25lZCBjaGFy
ICpiaXRtYXBEYXRhID0gW2RpZmZCaXRtYXAgYml0bWFwRGF0YV07CiAgICBpbnQgZGlmZmVyZW5j
ZXMgPSAwOwogICAgCiAgICAvLyBOT1RFOiBUaGlzIG1heSBub3QgYmUgc2FmZSB3aGVuIHN3aXRj
aGluZyBiZXR3ZWVuIEVORElBTiB0eXBlcwogICAgZm9yIChpbnQgaSA9IDA7IGkgPCB0b3RhbEJ5
dGVzOyBpICs9IDQpIHsKICAgICAgICBpZiAoKihiaXRtYXBEYXRhICsgaSkgIT0gMCB8fCAqKGJp
dG1hcERhdGEgKyBpICsgMSkgIT0gMCB8fCAqKGJpdG1hcERhdGEgKyBpICsgMikgIT0gMCkKICAg
ICAgICAgICAgZGlmZmVyZW5jZXMrKzsKICAgIH0KICAgIAogICAgcmV0dXJuIChkaWZmZXJlbmNl
cyAqIDEwMC4wKS90b3RhbFBpeGVsczsKfQoKLyoqCiAqIFRha2VzIHR3byBpbWFnZXMgYW5kIHBs
YWNlcyB0aGVtIGluIGFuIGFuaW1hdGVkIEdJRiB0aGF0IHJlcGVhdHMgd2l0aCBhIDIgc2Vjb25k
IGRlbGF5CiAqLwp2b2lkIHNhdmVBbmltYXRlZEdJRlRvRmlsZShOU0JpdG1hcEltYWdlUmVwICpm
aXJzdEZyYW1lLCBOU0JpdG1hcEltYWdlUmVwICpzZWNvbmRGcmFtZSwgTlNTdHJpbmcgKmFuaW1h
dGVkR0lGUGF0aCkKewogICAgLy8gb3B0aW9ucyB0byBzZXQgdGhlIGRlbGF5IG9uIGVhY2ggZnJh
bWUgb2YgMiBzZWNvbmRzCiAgICBOU0RpY3Rpb25hcnkgKmZyYW1lUHJvcGVydGllcyA9IFtOU0Rp
Y3Rpb25hcnkgCiAgICAgICAgZGljdGlvbmFyeVdpdGhPYmplY3Q6W05TRGljdGlvbmFyeSBkaWN0
aW9uYXJ5V2l0aE9iamVjdDpbTlNOdW1iZXIgbnVtYmVyV2l0aEludDoyXSBmb3JLZXk6KE5TU3Ry
aW5nICopIGtDR0ltYWdlUHJvcGVydHlHSUZEZWxheVRpbWVdCiAgICAgICAgZm9yS2V5OihOU1N0
cmluZyAqKSBrQ0dJbWFnZVByb3BlcnR5R0lGRGljdGlvbmFyeV07CiAgICAgICAgCiAgICAvLyBv
cHRpb25zIHRvIHR1cm4gb24gbG9vcGluZyBmb3IgdGhlIEdJRgogICAgTlNEaWN0aW9uYXJ5ICpn
aWZQcm9wZXJ0aWVzID0gW05TRGljdGlvbmFyeSAKICAgICAgICBkaWN0aW9uYXJ5V2l0aE9iamVj
dDpbTlNEaWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRoT2JqZWN0OltOU051bWJlciBudW1iZXJXaXRo
SW50OjBdIGZvcktleTooTlNTdHJpbmcgKikga0NHSW1hZ2VQcm9wZXJ0eUdJRkxvb3BDb3VudF0K
ICAgICAgICBmb3JLZXk6KE5TU3RyaW5nICopIGtDR0ltYWdlUHJvcGVydHlHSUZEaWN0aW9uYXJ5
XTsKICAgIAogICAgLy8gc2V0IHRoZSBwbGFjZSB0byBzYXZlIHRoZSBHSUYgdG8KICAgIENHSW1h
Z2VEZXN0aW5hdGlvblJlZiBhbmltYXRlZEdJRiA9IENHSW1hZ2VEZXN0aW5hdGlvbkNyZWF0ZVdp
dGhVUkwoCiAgICAgICAgKENGVVJMUmVmKSBbTlNVUkwgZmlsZVVSTFdpdGhQYXRoOmFuaW1hdGVk
R0lGUGF0aF0sIAogICAgICAgIGtVVFR5cGVHSUYsIAogICAgICAgIDIsIC8vIHR3byBpbWFnZXMg
aW4gdGhpcyBHSUYKICAgICAgICBOVUxMCiAgICApOwogICAgCiAgICAvLyBnZXQgdGhlIGRhdGEg
Zm9yIHRoZSBmaXJzdCBmcmFtZQogICAgQ0dEYXRhUHJvdmlkZXJSZWYgZmlyc3RGcmFtZVByb3Zp
ZGVyID0gQ0dEYXRhUHJvdmlkZXJDcmVhdGVXaXRoRGF0YSgKICAgICAgICBOVUxMLAogICAgICAg
IFtmaXJzdEZyYW1lIGJpdG1hcERhdGFdLAogICAgICAgIFtmaXJzdEZyYW1lIGJ5dGVzUGVyUm93
XSAqIFtmaXJzdEZyYW1lIHBpeGVsc0hpZ2hdLAogICAgICAgIE5VTEwKICAgICk7CiAgICAKICAg
IC8vIGNyZWF0ZSBhIENHSW1hZ2UgZm9yIHRoZSBmaXJzdCBmcmFtZQogICAgQ0dJbWFnZVJlZiBj
Z0ZpcnN0RnJhbWUgPSBDR0ltYWdlQ3JlYXRlICgKICAgICAgICBbZmlyc3RGcmFtZSBwaXhlbHNX
aWRlXSwKICAgICAgICBbZmlyc3RGcmFtZSBwaXhlbHNIaWdoXSwKICAgICAgICBbc2Vjb25kRnJh
bWUgYml0c1BlclBpeGVsXSAvIFtzZWNvbmRGcmFtZSBzYW1wbGVzUGVyUGl4ZWxdLAogICAgICAg
IFtmaXJzdEZyYW1lIGJpdHNQZXJQaXhlbF0sCiAgICAgICAgW2ZpcnN0RnJhbWUgYnl0ZXNQZXJS
b3ddLAogICAgICAgIENHQ29sb3JTcGFjZUNyZWF0ZURldmljZVJHQigpLAogICAgICAgIGtDR0lt
YWdlQWxwaGFOb25lLAogICAgICAgIGZpcnN0RnJhbWVQcm92aWRlciwKICAgICAgICBOVUxMLAog
ICAgICAgIDAsCiAgICAgICAga0NHUmVuZGVyaW5nSW50ZW50RGVmYXVsdAogICAgKTsKICAgIAog
ICAgLy8gZ2V0IHRoZSBkYXRhIGZvciB0aGUgc2Vjb25kIGZyYW1lCiAgICBDR0RhdGFQcm92aWRl
clJlZiBzZWNvbmRGcmFtZVByb3ZpZGVyID0gQ0dEYXRhUHJvdmlkZXJDcmVhdGVXaXRoRGF0YSgK
ICAgICAgICBOVUxMLAogICAgICAgIFtzZWNvbmRGcmFtZSBiaXRtYXBEYXRhXSwKICAgICAgICBb
c2Vjb25kRnJhbWUgYnl0ZXNQZXJSb3ddICogW3NlY29uZEZyYW1lIHBpeGVsc0hpZ2hdLAogICAg
ICAgIE5VTEwKICAgICk7CiAgICAKICAgIC8vIGNyZWF0ZSBhIENHSW1hZ2UgZm9yIHRoZSBzZWNv
bmQgZnJhbWUKICAgIENHSW1hZ2VSZWYgY2dTZWNvbmRGcmFtZSA9IENHSW1hZ2VDcmVhdGUgKAog
ICAgICAgIFtzZWNvbmRGcmFtZSBwaXhlbHNXaWRlXSwKICAgICAgICBbc2Vjb25kRnJhbWUgcGl4
ZWxzSGlnaF0sCiAgICAgICAgW3NlY29uZEZyYW1lIGJpdHNQZXJQaXhlbF0gLyBbc2Vjb25kRnJh
bWUgc2FtcGxlc1BlclBpeGVsXSwKICAgICAgICBbc2Vjb25kRnJhbWUgYml0c1BlclBpeGVsXSwK
ICAgICAgICBbc2Vjb25kRnJhbWUgYnl0ZXNQZXJSb3ddLAogICAgICAgIENHQ29sb3JTcGFjZUNy
ZWF0ZURldmljZVJHQigpLAogICAgICAgIGtDR0ltYWdlQWxwaGFOb25lLAogICAgICAgIHNlY29u
ZEZyYW1lUHJvdmlkZXIsCiAgICAgICAgTlVMTCwKICAgICAgICAwLAogICAgICAgIGtDR1JlbmRl
cmluZ0ludGVudERlZmF1bHQKICAgICk7CiAgICAKICAgIC8vIHBsYWNlIHRoZSB0d28gaW1hZ2Vz
IGludG8gdGhlIGZpbmFsIGFuaW1hdGVkIGdpZiBhbmQgc2V0IHJlbGF0ZWQgb3B0aW9ucwogICAg
Q0dJbWFnZURlc3RpbmF0aW9uQWRkSW1hZ2UoYW5pbWF0ZWRHSUYsIGNnRmlyc3RGcmFtZSwgKENG
RGljdGlvbmFyeVJlZikgZnJhbWVQcm9wZXJ0aWVzKTsKICAgIENHSW1hZ2VEZXN0aW5hdGlvbkFk
ZEltYWdlKGFuaW1hdGVkR0lGLCBjZ1NlY29uZEZyYW1lLCAoQ0ZEaWN0aW9uYXJ5UmVmKSBmcmFt
ZVByb3BlcnRpZXMpOwogICAgQ0dJbWFnZURlc3RpbmF0aW9uU2V0UHJvcGVydGllcyhhbmltYXRl
ZEdJRiwgKENGRGljdGlvbmFyeVJlZikgZ2lmUHJvcGVydGllcyk7CiAgICAKICAgIC8vIHNhdmUg
dGhlIGdpZiB0byBhIGZpbGUKICAgIENHSW1hZ2VEZXN0aW5hdGlvbkZpbmFsaXplKGFuaW1hdGVk
R0lGKTsKICAgIAogICAgLy8gcmVsZWFzZSB0aGUgbWVtb3J5IHVzZWQKICAgIENHRGF0YVByb3Zp
ZGVyUmVsZWFzZShmaXJzdEZyYW1lUHJvdmlkZXIpOwogICAgQ0dEYXRhUHJvdmlkZXJSZWxlYXNl
KHNlY29uZEZyYW1lUHJvdmlkZXIpOwogICAgQ0dJbWFnZVJlbGVhc2UoY2dGaXJzdEZyYW1lKTsK
ICAgIENHSW1hZ2VSZWxlYXNlKGNnU2Vjb25kRnJhbWUpOwogICAgQ0ZSZWxlYXNlKGFuaW1hdGVk
R0lGKTsKfSAK
</data>

          </attachment>
      

    </bug>

</bugzilla>