<?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>149776</bug_id>
          
          <creation_ts>2015-10-02 16:57:21 -0700</creation_ts>
          <short_desc>Test font-variant-* and font-feature-settings with TrueType fonts</short_desc>
          <delta_ts>2015-10-07 17:55:38 -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>Text</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>149779</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Myles C. Maxfield">mmaxfield</reporter>
          <assigned_to name="Myles C. Maxfield">mmaxfield</assigned_to>
          <cc>jonlee</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1130363</commentid>
    <comment_count>0</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2015-10-02 16:57:21 -0700</bug_when>
    <thetext>Currently, we only test with OpenType fonts.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1130383</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2015-10-02 17:30:08 -0700</bug_when>
    <thetext>&lt;rdar://problem/22960027&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1130561</commentid>
    <comment_count>2</comment_count>
      <attachid>262420</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2015-10-04 23:28:00 -0700</bug_when>
    <thetext>Created attachment 262420
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1130844</commentid>
    <comment_count>3</comment_count>
      <attachid>262491</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2015-10-05 20:54:28 -0700</bug_when>
    <thetext>Created attachment 262491
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1130845</commentid>
    <comment_count>4</comment_count>
      <attachid>262491</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2015-10-05 20:55:40 -0700</bug_when>
    <thetext>Comment on attachment 262491
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=262491&amp;action=review

&gt; Tools/FontWithFeatures/FontWithFeatures/FontCreator.cpp:564
&gt; +        append16(257); // Index in the name table for the name of this feature

This might be wrong.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1130903</commentid>
    <comment_count>5</comment_count>
      <attachid>262491</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2015-10-05 23:28:50 -0700</bug_when>
    <thetext>Comment on attachment 262491
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=262491&amp;action=review

&gt; Tools/FontWithFeatures/FontWithFeatures/FontCreator.cpp:559
&gt; +        append16(10); // Feature type: kVerticalPositionType

static const int kCharacterShapeType           = 20;
    static const int kContextualAlternatesType     = 36;
    static const int kFractionsType                = 11;
    static const int kLetterCaseType               = 3;
    static const int kLigaturesType                = 1;
    static const int kLowerCaseType                = 37;
    static const int kNumberCaseType               = 21;
    static const int kNumberSpacingType            = 6;
    static const int kRubyKanaType                 = 28;
    static const int kStyleOptionsType             = 19;
    static const int kTextSpacingType              = 22;
    static const int kTypographicExtrasType        = 14;
    static const int kUpperCaseType                = 38;
    static const int kVerticalPositionType         = 10;
    
    static const int kCommonLigaturesOffSelector      = 3;
    static const int kCommonLigaturesOnSelector       = 2;
    static const int kContextualAlternatesOffSelector = 1;
    static const int kContextualAlternatesOnSelector  = 0;
    static const int kContextualLigaturesOffSelector  = 19; 
    static const int kContextualLigaturesOnSelector   = 18; 
    static const int kDiagonalFractionsSelector       = 2;
    static const int kHistoricalLigaturesOffSelector  = 21;
    static const int kHistoricalLigaturesOnSelector   = 20; 
    static const int kInferiorsSelector               = 2;
    static const int kJIS1978CharactersSelector       = 2;
    static const int kJIS1983CharactersSelector       = 3;
    static const int kJIS1990CharactersSelector       = 4;
    static const int kJIS2004CharactersSelector       = 11; 
    static const int kLowerCaseNumbersSelector        = 0;
    static const int kLowerCasePetiteCapsSelector     = 2;
    static const int kLowerCaseSmallCapsSelector      = 1;
    static const int kMonospacedNumbersSelector       = 0;
    static const int kMonospacedTextSelector          = 1;
    static const int kOrdinalsSelector                = 3;
    static const int kProportionalNumbersSelector     = 1;
    static const int kProportionalTextSelector        = 0;
    static const int kRareLigaturesOffSelector        = 5;
    static const int kRareLigaturesOnSelector         = 4;
    static const int kRubyKanaOnSelector              = 2;
    static const int kRubyKanaSelector                = 1;
    static const int kSimplifiedCharactersSelector    = 1;
    static const int kSlashedZeroOnSelector           = 4;
    static const int kSuperiorsSelector               = 1;
    static const int kTitlingCapsSelector             = 4;
    static const int kTraditionalCharactersSelector   = 0;
    static const int kUpperCaseNumbersSelector        = 1;
    static const int kUpperCasePetiteCapsSelector     = 2;
    static const int kUpperCaseSmallCapsSelector      = 1;
    static const int kVerticalFractionsSelector       = 1;

&gt;&gt; Tools/FontWithFeatures/FontWithFeatures/FontCreator.cpp:564
&gt;&gt; +        append16(257); // Index in the name table for the name of this feature
&gt; 
&gt; This might be wrong.

This is not wrong.

&gt; Tools/FontWithFeatures/FontWithFeatures/FontCreator.cpp:931
&gt; +        std::vector&lt;std::string&gt; names {{ &quot;MylesFont&quot;, &quot;FeatureSelector&quot;, &quot;FeatureOff&quot;, &quot;FeatureOn&quot; }};

std::vector&lt;std::string&gt; names {{ &quot;MylesFont&quot;,
            &quot;kLigaturesType&quot;, &quot;kCommonLigaturesOnSelector&quot;,                  // 257, 258
            &quot;kLigaturesType&quot;, &quot;kContextualLigaturesOnSelector&quot;,              // 259, 260
            &quot;kLigaturesType&quot;, &quot;kCommonLigaturesOffSelector&quot;,                 // 261, 262
            &quot;kLigaturesType&quot;, &quot;kContextualLigaturesOffSelector&quot;,             // 263, 264
            &quot;kLigaturesType&quot;, &quot;kRareLigaturesOnSelector&quot;,                    // 265, 266
            &quot;kLigaturesType&quot;, &quot;kRareLigaturesOffSelector&quot;,                   // 267, 268
            &quot;kLigaturesType&quot;, &quot;kHistoricalLigaturesOnSelector&quot;,              // 269, 270
            &quot;kLigaturesType&quot;, &quot;kHistoricalLigaturesOffSelector&quot;,             // 272, 272
            &quot;kContextualAlternatesType&quot;, &quot;kContextualAlternatesOnSelector&quot;,  // 273, 274
            &quot;kContextualAlternatesType&quot;, &quot;kContextualAlternatesOffSelector&quot;, // 275, 276
            &quot;kVerticalPositionType&quot;, &quot;kInferiorsSelector&quot;,                   // 277, 278
            &quot;kVerticalPositionType&quot;, &quot;kSuperiorsSelector&quot;,                   // 279, 280
            &quot;kLowerCaseType&quot;, &quot;kLowerCaseSmallCapsSelector&quot;,                 // 281, 282
            &quot;kUpperCaseType&quot;, &quot;kUpperCaseSmallCapsSelector&quot;,                 // 283, 284
            &quot;kLowerCaseType&quot;, &quot;kLowerCasePetiteCapsSelector&quot;,                // 285, 286
            &quot;kUpperCaseType&quot;, &quot;kUpperCasePetiteCapsSelector&quot;,                // 287, 288
            &quot;kLetterCaseType&quot;, &quot;14&quot;,                                         // 289, 290
            &quot;kStyleOptionsType&quot;, &quot;kTitlingCapsSelector&quot;,                     // 291, 292
            &quot;kNumberCaseType&quot;, &quot;kUpperCaseNumbersSelector&quot;,                  // 293, 294
            &quot;kNumberCaseType&quot;, &quot;kLowerCaseNumbersSelector&quot;,                  // 295, 296
            &quot;kNumberSpacingType&quot;, &quot;kProportionalNumbersSelector&quot;,            // 297, 298
            &quot;kNumberSpacingType&quot;, &quot;kMonospacedNumbersSelector&quot;,              // 299, 300
            &quot;kFractionsType&quot;, &quot;kDiagonalFractionsSelector&quot;,                  // 301, 302
            &quot;kFractionsType&quot;, &quot;kVerticalFractionsSelector&quot;,                  // 303, 304
            &quot;kVerticalPositionType&quot;, &quot;kOrdinalsSelector&quot;,                    // 305, 306
            &quot;kTypographicExtrasType&quot;, &quot;kSlashedZeroOnSelector&quot;,              // 307, 308
            &quot;kLigaturesType&quot;, &quot;kHistoricalLigaturesOnSelector&quot;,              // 309, 310
            &quot;kCharacterShapeType&quot;, &quot;kJIS1978CharactersSelector&quot;,             // 311, 312
            &quot;kCharacterShapeType&quot;, &quot;kJIS1983CharactersSelector&quot;,             // 313, 314
            &quot;kCharacterShapeType&quot;, &quot;kJIS1990CharactersSelector&quot;,             // 315, 316
            &quot;kCharacterShapeType&quot;, &quot;kJIS2004CharactersSelector&quot;,             // 317, 318
            &quot;kCharacterShapeType&quot;, &quot;kSimplifiedCharactersSelector&quot;,          // 319, 320
            &quot;kCharacterShapeType&quot;, &quot;kTraditionalCharactersSelector&quot;,         // 321, 324
            &quot;kTextSpacingType&quot;, &quot;kMonospacedTextSelector&quot;,                   // 323, 326
            &quot;kTextSpacingType&quot;, &quot;kProportionalTextSelector&quot;,                 // 325, 328
            &quot;kRubyKanaType&quot;, &quot;kRubyKanaOnSelector&quot;                           // 327, 330
        }};

&gt; Tools/FontWithFeatures/FontWithFeatures/FontCreator.cpp:932
&gt; +        std::vector&lt;uint16_t&gt; nameIdentifiers {{ 1, 257, 258, 259 }}; // 1: Font Family

Delete this.

&gt; Tools/FontWithFeatures/FontWithFeatures/FontCreator.cpp:939
&gt; +            appendNameSubtable(names[i], nameIdentifiers[i]);

Update.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1131184</commentid>
    <comment_count>6</comment_count>
      <attachid>262565</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2015-10-06 18:16:14 -0700</bug_when>
    <thetext>Created attachment 262565
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1131445</commentid>
    <comment_count>7</comment_count>
      <attachid>262648</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2015-10-07 15:40:25 -0700</bug_when>
    <thetext>Created attachment 262648
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1131471</commentid>
    <comment_count>8</comment_count>
      <attachid>262648</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2015-10-07 16:50:09 -0700</bug_when>
    <thetext>Comment on attachment 262648
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=262648&amp;action=review

&gt; Tools/ChangeLog:17
&gt; +        Without any font features turned on, the rest of the letters are shown as X.

This is not true.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1131488</commentid>
    <comment_count>9</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2015-10-07 17:34:26 -0700</bug_when>
    <thetext>Committed r190697: &lt;http://trac.webkit.org/changeset/190697&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1131489</commentid>
    <comment_count>10</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2015-10-07 17:34:51 -0700</bug_when>
    <thetext>Still need to test font-variant-*</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1131494</commentid>
    <comment_count>11</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2015-10-07 17:55:38 -0700</bug_when>
    <thetext>Committed r190700: &lt;http://trac.webkit.org/changeset/190700&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>262420</attachid>
            <date>2015-10-04 23:28:00 -0700</date>
            <delta_ts>2015-10-05 20:54:26 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-149776-20151004232731.patch</filename>
            <type>text/plain</type>
            <size>16877</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkwNTUwCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggN2EyM2UyOWYyYzE4ZDU5MzFjYzE3NGJkYmMxYjkzOWMx
ZGYxYTIyNS4uNTgzNTQyNDUwYjI2ZTFmMDU3MGY0NjBmYjViODE2MDFjZGI1YjE2OCAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2
IEBACisyMDE1LTEwLTA0ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+
CisKKyAgICAgICAgVGVzdCBmb250LXZhcmlhbnQtKiBhbmQgZm9udC1mZWF0dXJlLXNldHRpbmdz
IHdpdGggVHJ1ZVR5cGUgZm9udHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE0OTc3NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogRm9udFdpdGhGZWF0dXJlcy9Gb250V2l0aEZlYXR1cmVzLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogRm9udFdpdGhGZWF0dXJlcy9Gb250V2l0aEZl
YXR1cmVzL0ZvbnRDcmVhdG9yLmNwcDoKKyAgICAgICAgKENGRkJ1aWxkZXI6Om1vdmVUbyk6Cisg
ICAgICAgIChDRkZCdWlsZGVyOjpsaW5lVG8pOgorICAgICAgICAoR0xZRkJ1aWxkZXI6OkdMWUZC
dWlsZGVyKToKKyAgICAgICAgKEdMWUZCdWlsZGVyOjp0YWtlUmVzdWx0KToKKyAgICAgICAgKEdM
WUZCdWlsZGVyOjptb3ZlVG8pOgorICAgICAgICAoR0xZRkJ1aWxkZXI6OmxpbmVUbyk6CisgICAg
ICAgIChHTFlGQnVpbGRlcjo6Y2xvc2VQYXRoKToKKyAgICAgICAgKEdMWUZCdWlsZGVyOjp3cml0
ZVBvaW50KToKKyAgICAgICAgKEdMWUZCdWlsZGVyOjphcHBlbmQxNik6CisgICAgICAgIChnZW5l
cmF0ZUJveENoYXJTdHJpbmcpOgorICAgICAgICAoZ2VuZXJhdGVDaGVja0NoYXJTdHJpbmcpOgor
ICAgICAgICAoZ2VuZXJhdGVYQ2hhclN0cmluZyk6CisgICAgICAgIChHZW5lcmF0b3I6OmdlbmVy
YXRlKToKKyAgICAgICAgKEdlbmVyYXRvcjo6YXBwZW5kQ0ZGVGFibGUpOgorICAgICAgICAoR2Vu
ZXJhdG9yOjphcHBlbmRHTFlGVGFibGUpOgorICAgICAgICAoR2VuZXJhdG9yOjphcHBlbmRMT0NB
VGFibGUpOgorICAgICAgICAoR2VuZXJhdG9yOjphcHBlbmRIRUFEVGFibGUpOgorICAgICAgICAo
R2VuZXJhdG9yOjphcHBlbmRITVRYVGFibGUpOgorICAgICAgICAoZ2VuZXJhdGVGb250KToKKyAg
ICAgICAgKENGRkJ1aWxkZXI6OmN1cnZlVG9DdWJpYyk6IERlbGV0ZWQuCisgICAgICAgICogRm9u
dFdpdGhGZWF0dXJlcy9Gb250V2l0aEZlYXR1cmVzL0ZvbnRDcmVhdG9yLmg6CisgICAgICAgICog
Rm9udFdpdGhGZWF0dXJlcy9Gb250V2l0aEZlYXR1cmVzL21haW4uY3BwOgorICAgICAgICAobWFp
bik6CisKIDIwMTUtMTAtMDQgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+CiAK
ICAgICAgICAgU3VwcG9ydCBUcmFjIDEuMC54IFhNTCB0aW1lbGluZSBsaW5rIGZvcm1hdApkaWZm
IC0tZ2l0IGEvVG9vbHMvRm9udFdpdGhGZWF0dXJlcy9Gb250V2l0aEZlYXR1cmVzLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2ogYi9Ub29scy9Gb250V2l0aEZlYXR1cmVzL0ZvbnRXaXRoRmVhdHVy
ZXMueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBjNWZmNTcwZTM5MmExYWQxMDcyYWNj
MzExNjZkZmFlMzVlNzAyOTdmLi40MWM3NGJjYjczZGMwMmM3OWI0MWRiOWMxOTBiYWQxNGRmZWY1
OTMyIDEwMDY0NAotLS0gYS9Ub29scy9Gb250V2l0aEZlYXR1cmVzL0ZvbnRXaXRoRmVhdHVyZXMu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Ub29scy9Gb250V2l0aEZlYXR1cmVzL0Zv
bnRXaXRoRmVhdHVyZXMueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTg2LDcgKzE4Niw3
IEBACiAJCQkJR0NDX1dBUk5fVU5JTklUSUFMSVpFRF9BVVRPUyA9IFlFU19BR0dSRVNTSVZFOwog
CQkJCUdDQ19XQVJOX1VOVVNFRF9GVU5DVElPTiA9IFlFUzsKIAkJCQlHQ0NfV0FSTl9VTlVTRURf
VkFSSUFCTEUgPSBZRVM7Ci0JCQkJTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUID0gMTAuMTE7CisJ
CQkJTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUID0gMTAuMTA7CiAJCQkJTVRMX0VOQUJMRV9ERUJV
R19JTkZPID0gWUVTOwogCQkJCU9OTFlfQUNUSVZFX0FSQ0ggPSBZRVM7CiAJCQkJU0RLUk9PVCA9
IG1hY29zeDsKQEAgLTIyMiw3ICsyMjIsNyBAQAogCQkJCUdDQ19XQVJOX1VOSU5JVElBTElaRURf
QVVUT1MgPSBZRVNfQUdHUkVTU0lWRTsKIAkJCQlHQ0NfV0FSTl9VTlVTRURfRlVOQ1RJT04gPSBZ
RVM7CiAJCQkJR0NDX1dBUk5fVU5VU0VEX1ZBUklBQkxFID0gWUVTOwotCQkJCU1BQ09TWF9ERVBM
T1lNRU5UX1RBUkdFVCA9IDEwLjExOworCQkJCU1BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVCA9IDEw
LjEwOwogCQkJCU1UTF9FTkFCTEVfREVCVUdfSU5GTyA9IE5POwogCQkJCVNES1JPT1QgPSBtYWNv
c3g7CiAJCQl9OwpAQCAtMjYxLDYgKzI2MSw3IEBACiAJCQkJQzI4NjI2QUIxQkE5MDJCOTAwMTk2
MUQ2IC8qIFJlbGVhc2UgKi8sCiAJCQkpOwogCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25Jc1Zpc2li
bGUgPSAwOworCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25OYW1lID0gUmVsZWFzZTsKIAkJfTsKIC8q
IEVuZCBYQ0NvbmZpZ3VyYXRpb25MaXN0IHNlY3Rpb24gKi8KIAl9OwpkaWZmIC0tZ2l0IGEvVG9v
bHMvRm9udFdpdGhGZWF0dXJlcy9Gb250V2l0aEZlYXR1cmVzL0ZvbnRDcmVhdG9yLmNwcCBiL1Rv
b2xzL0ZvbnRXaXRoRmVhdHVyZXMvRm9udFdpdGhGZWF0dXJlcy9Gb250Q3JlYXRvci5jcHAKaW5k
ZXggN2EzZTE0MWU1MjkwNzZlNmEzYjRjYTNhMGJkYWM0MDFlYzFiODM3Ni4uYjI0MzljZjM0YjEy
MzNlYTk4M2IzY2MyN2UwMjk2NDA0ZGNmYjhjNyAxMDA2NDQKLS0tIGEvVG9vbHMvRm9udFdpdGhG
ZWF0dXJlcy9Gb250V2l0aEZlYXR1cmVzL0ZvbnRDcmVhdG9yLmNwcAorKysgYi9Ub29scy9Gb250
V2l0aEZlYXR1cmVzL0ZvbnRXaXRoRmVhdHVyZXMvRm9udENyZWF0b3IuY3BwCkBAIC04Miw3ICs4
Miw2IEBAIHN0YXRpYyB2b2lkIHdyaXRlQ0ZGRW5jb2RlZE51bWJlcihWJiB2ZWN0b3IsIGZsb2F0
IG51bWJlcikKIH0KIAogc3RhdGljIGNvbnN0IGNoYXIgckxpbmVUbyA9IDB4MDU7Ci1zdGF0aWMg
Y29uc3QgY2hhciByckN1cnZlVG8gPSAweDA4Owogc3RhdGljIGNvbnN0IGNoYXIgZW5kQ2hhciA9
IDB4MGU7CiBzdGF0aWMgY29uc3QgY2hhciByTW92ZVRvID0gMHgxNTsKIApAQCAtMTAyLDE0ICsx
MDEsOSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBzdGQ6Om1vdmUocmVzdWx0KTsKICAgICB9
CiAKLSAgICB2b2lkIG1vdmVUbyhzdGQ6OnBhaXI8ZmxvYXQsIGZsb2F0PiB0YXJnZXRQb2ludCwg
Ym9vbCBjbG9zZWQpCisgICAgdm9pZCBtb3ZlVG8oc3RkOjpwYWlyPGZsb2F0LCBmbG9hdD4gdGFy
Z2V0UG9pbnQpCiAgICAgewotICAgICAgICBpZiAoY2xvc2VkICYmICFyZXN1bHQuZW1wdHkoKSkK
LSAgICAgICAgICAgIGNsb3NlUGF0aCgpOwotCi0gICAgICAgIHN0ZDo6cGFpcjxmbG9hdCwgZmxv
YXQ+IGRlc3RpbmF0aW9uID0gdGFyZ2V0UG9pbnQ7Ci0KLSAgICAgICAgd3JpdGVQb2ludChkZXN0
aW5hdGlvbik7CisgICAgICAgIHdyaXRlUG9pbnQodGFyZ2V0UG9pbnQpOwogICAgICAgICByZXN1
bHQucHVzaF9iYWNrKHJNb3ZlVG8pOwogCiAgICAgICAgIHN0YXJ0aW5nUG9pbnQgPSBjdXJyZW50
OwpAQCAtMTE3LDI0ICsxMTEsMTAgQEAgcHVibGljOgogCiAgICAgdm9pZCBsaW5lVG8oc3RkOjpw
YWlyPGZsb2F0LCBmbG9hdD4gdGFyZ2V0UG9pbnQpCiAgICAgewotICAgICAgICBzdGQ6OnBhaXI8
ZmxvYXQsIGZsb2F0PiBkZXN0aW5hdGlvbiA9IHRhcmdldFBvaW50OwotCi0gICAgICAgIHdyaXRl
UG9pbnQoZGVzdGluYXRpb24pOworICAgICAgICB3cml0ZVBvaW50KHRhcmdldFBvaW50KTsKICAg
ICAgICAgcmVzdWx0LnB1c2hfYmFjayhyTGluZVRvKTsKICAgICB9CiAKLSAgICB2b2lkIGN1cnZl
VG9DdWJpYyhzdGQ6OnBhaXI8ZmxvYXQsIGZsb2F0PiBwb2ludDEsIHN0ZDo6cGFpcjxmbG9hdCwg
ZmxvYXQ+IHBvaW50Miwgc3RkOjpwYWlyPGZsb2F0LCBmbG9hdD4gdGFyZ2V0UG9pbnQpCi0gICAg
ewotICAgICAgICBzdGQ6OnBhaXI8ZmxvYXQsIGZsb2F0PiBkZXN0aW5hdGlvbjEgPSBwb2ludDE7
Ci0gICAgICAgIHN0ZDo6cGFpcjxmbG9hdCwgZmxvYXQ+IGRlc3RpbmF0aW9uMiA9IHBvaW50MjsK
LSAgICAgICAgc3RkOjpwYWlyPGZsb2F0LCBmbG9hdD4gZGVzdGluYXRpb24zID0gdGFyZ2V0UG9p
bnQ7Ci0KLSAgICAgICAgd3JpdGVQb2ludChkZXN0aW5hdGlvbjEpOwotICAgICAgICB3cml0ZVBv
aW50KGRlc3RpbmF0aW9uMik7Ci0gICAgICAgIHdyaXRlUG9pbnQoZGVzdGluYXRpb24zKTsKLSAg
ICAgICAgcmVzdWx0LnB1c2hfYmFjayhyckN1cnZlVG8pOwotICAgIH0KLQogICAgIHZvaWQgY2xv
c2VQYXRoKCkKICAgICB7CiAgICAgICAgIGlmIChjdXJyZW50ICE9IHN0YXJ0aW5nUG9pbnQpCkBA
IC0xNTYsMTAgKzEzNiw5NCBAQCBwcml2YXRlOgogICAgIHN0ZDo6cGFpcjxmbG9hdCwgZmxvYXQ+
IGN1cnJlbnQ7CiB9OwogCitjbGFzcyBHTFlGQnVpbGRlciB7CitwdWJsaWM6CisgICAgR0xZRkJ1
aWxkZXIoZmxvYXQsIHN0ZDo6cGFpcjxmbG9hdCwgZmxvYXQ+KQorICAgIHsKKyAgICB9CisKKyAg
ICBzdGQ6OnZlY3Rvcjx1aW50OF90PiB0YWtlUmVzdWx0KCkKKyAgICB7CisgICAgICAgIHN0ZDo6
dmVjdG9yPHVpbnQ4X3Q+IHJlc3VsdDsKKyAgICAgICAgYXBwZW5kMTYocmVzdWx0LCBlbmRQdHNP
ZkNvbnRvdXJzLnNpemUoKSk7CisgICAgICAgIGFwcGVuZDE2KHJlc3VsdCwgY2xhbXBUbzxpbnQx
Nl90PihtaW5YKSk7CisgICAgICAgIGFwcGVuZDE2KHJlc3VsdCwgY2xhbXBUbzxpbnQxNl90Piht
aW5ZKSk7CisgICAgICAgIGFwcGVuZDE2KHJlc3VsdCwgY2xhbXBUbzxpbnQxNl90PihtYXhYKSk7
CisgICAgICAgIGFwcGVuZDE2KHJlc3VsdCwgY2xhbXBUbzxpbnQxNl90PihtYXhZKSk7CisKKyAg
ICAgICAgZm9yICh1aW50MTZfdCBwIDogZW5kUHRzT2ZDb250b3VycykKKyAgICAgICAgICAgIGFw
cGVuZDE2KHJlc3VsdCwgcCk7CisgICAgICAgIGFwcGVuZDE2KHJlc3VsdCwgMCk7CisgICAgICAg
IGZvciAodWludDhfdCBmIDogZmxhZ3MpCisgICAgICAgICAgICByZXN1bHQucHVzaF9iYWNrKGYp
OworICAgICAgICBmb3IgKHVpbnQxNl90IGMgOiB4Q29vcmRpbmF0ZXMpCisgICAgICAgICAgICBh
cHBlbmQxNihyZXN1bHQsIGMpOworICAgICAgICBmb3IgKHVpbnQxNl90IGMgOiB5Q29vcmRpbmF0
ZXMpCisgICAgICAgICAgICBhcHBlbmQxNihyZXN1bHQsIGMpOworCisgICAgICAgIHJldHVybiBy
ZXN1bHQ7CisgICAgfQorCisgICAgdm9pZCBtb3ZlVG8oc3RkOjpwYWlyPGZsb2F0LCBmbG9hdD4g
dGFyZ2V0UG9pbnQpCisgICAgeworICAgICAgICB3cml0ZVBvaW50KHRhcmdldFBvaW50LCB0cnVl
KTsKKworICAgICAgICBzdGFydGluZ1BvaW50ID0gY3VycmVudDsKKyAgICB9CisKKyAgICB2b2lk
IGxpbmVUbyhzdGQ6OnBhaXI8ZmxvYXQsIGZsb2F0PiB0YXJnZXRQb2ludCkKKyAgICB7CisgICAg
ICAgIHdyaXRlUG9pbnQodGFyZ2V0UG9pbnQsIHRydWUpOworICAgIH0KKworICAgIHZvaWQgY2xv
c2VQYXRoKCkKKyAgICB7CisgICAgICAgIGlmIChjdXJyZW50ICE9IHN0YXJ0aW5nUG9pbnQpCisg
ICAgICAgICAgICBsaW5lVG8oc3RhcnRpbmdQb2ludCk7CisgICAgICAgIGVuZFB0c09mQ29udG91
cnMucHVzaF9iYWNrKHBvaW50Q291bnQgLSAxKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgdm9p
ZCB3cml0ZVBvaW50KHN0ZDo6cGFpcjxmbG9hdCwgZmxvYXQ+IGRlc3RpbmF0aW9uLCBib29sIG9u
Q3VydmUpCisgICAgeworICAgICAgICBmbGFncy5wdXNoX2JhY2sob25DdXJ2ZSA/IDEgOiAwKTsg
Ly8gRmxhZ3MKKworICAgICAgICBzdGQ6OnBhaXI8ZmxvYXQsIGZsb2F0PiBkZWx0YSA9IHN0ZDo6
bWFrZV9wYWlyKGRlc3RpbmF0aW9uLmZpcnN0IC0gY3VycmVudC5maXJzdCwgZGVzdGluYXRpb24u
c2Vjb25kIC0gY3VycmVudC5zZWNvbmQpOworICAgICAgICB4Q29vcmRpbmF0ZXMucHVzaF9iYWNr
KGRlbHRhLmZpcnN0KTsKKyAgICAgICAgeUNvb3JkaW5hdGVzLnB1c2hfYmFjayhkZWx0YS5zZWNv
bmQpOworCisgICAgICAgIGN1cnJlbnQgPSBkZXN0aW5hdGlvbjsKKyAgICAgICAgbWluWCA9IHN0
ZDo6bWluKG1pblgsIGRlc3RpbmF0aW9uLmZpcnN0KTsKKyAgICAgICAgbWF4WCA9IHN0ZDo6bWF4
KG1heFgsIGRlc3RpbmF0aW9uLmZpcnN0KTsKKyAgICAgICAgbWluWSA9IHN0ZDo6bWluKG1pblks
IGRlc3RpbmF0aW9uLnNlY29uZCk7CisgICAgICAgIG1heFkgPSBzdGQ6Om1heChtYXhZLCBkZXN0
aW5hdGlvbi5zZWNvbmQpOworICAgICAgICArK3BvaW50Q291bnQ7CisgICAgfQorCisgICAgc3Rh
dGljIHZvaWQgYXBwZW5kMTYoc3RkOjp2ZWN0b3I8dWludDhfdD4mIGRlc3RpbmF0aW9uLCB1aW50
MTZfdCB2YWx1ZSkKKyAgICB7CisgICAgICAgIGRlc3RpbmF0aW9uLnB1c2hfYmFjayh2YWx1ZSA+
PiA4KTsKKyAgICAgICAgZGVzdGluYXRpb24ucHVzaF9iYWNrKHZhbHVlKTsKKyAgICB9CisKKyAg
ICBzdGQ6OnZlY3Rvcjx1aW50MTZfdD4gZW5kUHRzT2ZDb250b3VyczsKKyAgICBzdGQ6OnZlY3Rv
cjx1aW50OF90PiBmbGFnczsKKyAgICBzdGQ6OnZlY3RvcjxpbnQxNl90PiB4Q29vcmRpbmF0ZXM7
CisgICAgc3RkOjp2ZWN0b3I8aW50MTZfdD4geUNvb3JkaW5hdGVzOworICAgIHN0ZDo6cGFpcjxm
bG9hdCwgZmxvYXQ+IHN0YXJ0aW5nUG9pbnQ7CisgICAgc3RkOjpwYWlyPGZsb2F0LCBmbG9hdD4g
Y3VycmVudDsKKyAgICBmbG9hdCBtaW5YIHsgc3RkOjpudW1lcmljX2xpbWl0czxmbG9hdD46Om1h
eCgpIH07CisgICAgZmxvYXQgbWF4WCB7IHN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjptaW4o
KSB9OworICAgIGZsb2F0IG1pblkgeyBzdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6bWF4KCkg
fTsKKyAgICBmbG9hdCBtYXhZIHsgc3RkOjpudW1lcmljX2xpbWl0czxmbG9hdD46Om1pbigpIH07
CisgICAgdW5zaWduZWQgcG9pbnRDb3VudCB7IDAgfTsKK307CisKK3RlbXBsYXRlIDx0eXBlbmFt
ZSBUPgogc3RkOjp2ZWN0b3I8dWludDhfdD4gZ2VuZXJhdGVCb3hDaGFyU3RyaW5nKCkKIHsKLSAg
ICBDRkZCdWlsZGVyIGJ1aWxkZXIodW5pdHNQZXJFbSwgc3RkOjptYWtlX3BhaXIoMC5mLCAwLmYp
KTsKLSAgICBidWlsZGVyLm1vdmVUbyhzdGQ6Om1ha2VfcGFpcigyMDAuZiwgMjAwLmYpLCBmYWxz
ZSk7CisgICAgVCBidWlsZGVyKHVuaXRzUGVyRW0sIHN0ZDo6bWFrZV9wYWlyKDAuZiwgMC5mKSk7
CisgICAgYnVpbGRlci5tb3ZlVG8oc3RkOjptYWtlX3BhaXIoMjAwLmYsIDIwMC5mKSk7CiAgICAg
YnVpbGRlci5saW5lVG8oc3RkOjptYWtlX3BhaXIoMjAwLmYsIDgwMC5mKSk7CiAgICAgYnVpbGRl
ci5saW5lVG8oc3RkOjptYWtlX3BhaXIoODAwLmYsIDgwMC5mKSk7CiAgICAgYnVpbGRlci5saW5l
VG8oc3RkOjptYWtlX3BhaXIoODAwLmYsIDIwMC5mKSk7CkBAIC0xNjcsMTAgKzIzMSwxMSBAQCBz
dGQ6OnZlY3Rvcjx1aW50OF90PiBnZW5lcmF0ZUJveENoYXJTdHJpbmcoKQogICAgIHJldHVybiBi
dWlsZGVyLnRha2VSZXN1bHQoKTsKIH0KIAordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiBzdGQ6OnZl
Y3Rvcjx1aW50OF90PiBnZW5lcmF0ZUNoZWNrQ2hhclN0cmluZygpCiB7Ci0gICAgQ0ZGQnVpbGRl
ciBidWlsZGVyKHVuaXRzUGVyRW0sIHN0ZDo6bWFrZV9wYWlyKDAuZiwgMC5mKSk7Ci0gICAgYnVp
bGRlci5tb3ZlVG8oc3RkOjptYWtlX3BhaXIoMjAwLmYsIDUwMC5mKSwgZmFsc2UpOworICAgIFQg
YnVpbGRlcih1bml0c1BlckVtLCBzdGQ6Om1ha2VfcGFpcigwLmYsIDAuZikpOworICAgIGJ1aWxk
ZXIubW92ZVRvKHN0ZDo6bWFrZV9wYWlyKDIwMC5mLCA1MDAuZikpOwogICAgIGJ1aWxkZXIubGlu
ZVRvKHN0ZDo6bWFrZV9wYWlyKDI1MC5mLCA1NTAuZikpOwogICAgIGJ1aWxkZXIubGluZVRvKHN0
ZDo6bWFrZV9wYWlyKDUwMC5mLCAzMDAuZikpOwogICAgIGJ1aWxkZXIubGluZVRvKHN0ZDo6bWFr
ZV9wYWlyKDkwMC5mLCA3MDAuZikpOwpAQCAtMTgwLDEwICsyNDUsMTEgQEAgc3RkOjp2ZWN0b3I8
dWludDhfdD4gZ2VuZXJhdGVDaGVja0NoYXJTdHJpbmcoKQogICAgIHJldHVybiBidWlsZGVyLnRh
a2VSZXN1bHQoKTsKIH0KIAordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiBzdGQ6OnZlY3Rvcjx1aW50
OF90PiBnZW5lcmF0ZVhDaGFyU3RyaW5nKCkKIHsKLSAgICBDRkZCdWlsZGVyIGJ1aWxkZXIodW5p
dHNQZXJFbSwgc3RkOjptYWtlX3BhaXIoMC5mLCAwLmYpKTsKLSAgICBidWlsZGVyLm1vdmVUbyhz
dGQ6Om1ha2VfcGFpcig1MDAuMGYsIDU1MC4wZiksIGZhbHNlKTsKKyAgICBUIGJ1aWxkZXIodW5p
dHNQZXJFbSwgc3RkOjptYWtlX3BhaXIoMC5mLCAwLmYpKTsKKyAgICBidWlsZGVyLm1vdmVUbyhz
dGQ6Om1ha2VfcGFpcig1MDAuMGYsIDU1MC4wZikpOwogICAgIGJ1aWxkZXIubGluZVRvKHN0ZDo6
bWFrZV9wYWlyKDkwMC5mLCA5NTAuZikpOwogICAgIGJ1aWxkZXIubGluZVRvKHN0ZDo6bWFrZV9w
YWlyKDk1MC5mLCA5MDAuZikpOwogICAgIGJ1aWxkZXIubGluZVRvKHN0ZDo6bWFrZV9wYWlyKDU1
MC5mLCA1MDAuZikpOwpAQCAtMjEwLDE2ICsyNzYsMjMgQEAgc3RkOjp2ZWN0b3I8dWludDhfdD4m
IGNoYXJTdHJpbmdGb3JHbHlwaCh1aW50MTZfdCBnbHlwaCwgc3RkOjp2ZWN0b3I8dWludDhfdD4m
IGIKIAogY2xhc3MgR2VuZXJhdG9yIHsKIHB1YmxpYzoKLSAgICBzdGQ6OnZlY3Rvcjx1aW50OF90
PiBnZW5lcmF0ZSgpCisgICAgc3RkOjp2ZWN0b3I8dWludDhfdD4gZ2VuZXJhdGUoVHlwZSB0eXBl
KQogICAgIHsKICAgICAgICAgdWludDE2X3QgbnVtVGFibGVzID0gMTA7CiAgICAgICAgIHVpbnQx
Nl90IHJvdW5kZWROdW1UYWJsZXMgPSByb3VuZERvd25Ub1Bvd2VyT2ZUd28obnVtVGFibGVzKTsK
ICAgICAgICAgdWludDE2X3Qgc2VhcmNoUmFuZ2UgPSByb3VuZGVkTnVtVGFibGVzICogMTY7IC8v
IHNlYXJjaFJhbmdlOiAiKE1heGltdW0gcG93ZXIgb2YgMiA8PSBudW1UYWJsZXMpIHggMTYuIgog
Ci0gICAgICAgIHJlc3VsdC5wdXNoX2JhY2soJ08nKTsKLSAgICAgICAgcmVzdWx0LnB1c2hfYmFj
aygnVCcpOwotICAgICAgICByZXN1bHQucHVzaF9iYWNrKCdUJyk7Ci0gICAgICAgIHJlc3VsdC5w
dXNoX2JhY2soJ08nKTsKKyAgICAgICAgaWYgKHR5cGUgPT0gVHlwZTo6T3BlblR5cGUpIHsKKyAg
ICAgICAgICAgIHJlc3VsdC5wdXNoX2JhY2soJ08nKTsKKyAgICAgICAgICAgIHJlc3VsdC5wdXNo
X2JhY2soJ1QnKTsKKyAgICAgICAgICAgIHJlc3VsdC5wdXNoX2JhY2soJ1QnKTsKKyAgICAgICAg
ICAgIHJlc3VsdC5wdXNoX2JhY2soJ08nKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
IHJlc3VsdC5wdXNoX2JhY2soJ3QnKTsKKyAgICAgICAgICAgIHJlc3VsdC5wdXNoX2JhY2soJ3In
KTsKKyAgICAgICAgICAgIHJlc3VsdC5wdXNoX2JhY2soJ3UnKTsKKyAgICAgICAgICAgIHJlc3Vs
dC5wdXNoX2JhY2soJ2UnKTsKKyAgICAgICAgfQogICAgICAgICBhcHBlbmQxNihudW1UYWJsZXMp
OwogICAgICAgICBhcHBlbmQxNihzZWFyY2hSYW5nZSk7CiAgICAgICAgIGFwcGVuZDE2KGludGVn
cmFsTG9nMihyb3VuZGVkTnVtVGFibGVzKSk7IC8vIGVudHJ5U2VsZWN0b3I6ICJMb2cyKG1heGlt
dW0gcG93ZXIgb2YgMiA8PSBudW1UYWJsZXMpLiIKQEAgLTIzMSwxNCArMzA0LDIwIEBAIHB1Ymxp
YzoKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBkaXJlY3RvcnlFbnRyeVNpemUgKiBu
dW1UYWJsZXM7ICsraSkKICAgICAgICAgICAgIHJlc3VsdC5wdXNoX2JhY2soMCk7CiAKLSAgICAg
ICAgYXBwZW5kVGFibGUoIkNGRiAiLCAmR2VuZXJhdG9yOjphcHBlbmRDRkZUYWJsZSk7Ci0gICAg
ICAgIGFwcGVuZFRhYmxlKCJHU1VCIiwgJkdlbmVyYXRvcjo6YXBwZW5kR1NVQlRhYmxlKTsKKyAg
ICAgICAgaWYgKHR5cGUgPT0gVHlwZTo6T3BlblR5cGUpIHsKKyAgICAgICAgICAgIGFwcGVuZFRh
YmxlKCJDRkYgIiwgJkdlbmVyYXRvcjo6YXBwZW5kQ0ZGVGFibGUpOworICAgICAgICAgICAgYXBw
ZW5kVGFibGUoIkdTVUIiLCAmR2VuZXJhdG9yOjphcHBlbmRHU1VCVGFibGUpOworICAgICAgICB9
CiAgICAgICAgIGFwcGVuZFRhYmxlKCJPUy8yIiwgJkdlbmVyYXRvcjo6YXBwZW5kT1MyVGFibGUp
OwogICAgICAgICBhcHBlbmRUYWJsZSgiY21hcCIsICZHZW5lcmF0b3I6OmFwcGVuZENNQVBUYWJs
ZSk7CisgICAgICAgIGlmICh0eXBlID09IFR5cGU6OlRydWVUeXBlKQorICAgICAgICAgICAgYXBw
ZW5kVGFibGUoImdseWYiLCAmR2VuZXJhdG9yOjphcHBlbmRHTFlGVGFibGUpOwogICAgICAgICBh
dXRvIGhlYWRUYWJsZU9mZnNldCA9IHJlc3VsdC5zaXplKCk7CiAgICAgICAgIGFwcGVuZFRhYmxl
KCJoZWFkIiwgJkdlbmVyYXRvcjo6YXBwZW5kSEVBRFRhYmxlKTsKICAgICAgICAgYXBwZW5kVGFi
bGUoImhoZWEiLCAmR2VuZXJhdG9yOjphcHBlbmRISEVBVGFibGUpOwogICAgICAgICBhcHBlbmRU
YWJsZSgiaG10eCIsICZHZW5lcmF0b3I6OmFwcGVuZEhNVFhUYWJsZSk7CisgICAgICAgIGlmICh0
eXBlID09IFR5cGU6OlRydWVUeXBlKQorICAgICAgICAgICAgYXBwZW5kVGFibGUoImxvY2EiLCAm
R2VuZXJhdG9yOjphcHBlbmRMT0NBVGFibGUpOwogICAgICAgICBhcHBlbmRUYWJsZSgibWF4cCIs
ICZHZW5lcmF0b3I6OmFwcGVuZE1BWFBUYWJsZSk7CiAgICAgICAgIGFwcGVuZFRhYmxlKCJuYW1l
IiwgJkdlbmVyYXRvcjo6YXBwZW5kTkFNRVRhYmxlKTsKICAgICAgICAgYXBwZW5kVGFibGUoInBv
c3QiLCAmR2VuZXJhdG9yOjphcHBlbmRQT1NUVGFibGUpOwpAQCAtMjQ4LDYgKzMyNyw3IEBAIHB1
YmxpYzoKICAgICAgICAgLy8gY2hlY2tzdW1BZGp1c3RtZW50OiAiVG8gY29tcHV0ZTogc2V0IGl0
IHRvIDAsIGNhbGN1bGF0ZSB0aGUgY2hlY2tzdW0gZm9yIHRoZSAnaGVhZCcgdGFibGUgYW5kIHB1
dCBpdCBpbiB0aGUgdGFibGUgZGlyZWN0b3J5LAogICAgICAgICAvLyBzdW0gdGhlIGVudGlyZSBm
b250IGFzIHVpbnQzMiwgdGhlbiBzdG9yZSBCMUIwQUZCQSAtIHN1bS4gVGhlIGNoZWNrc3VtIGZv
ciB0aGUgJ2hlYWQnIHRhYmxlIHdpbGwgbm93IGJlIHdyb25nLiBUaGF0IGlzIE9LLiIKICAgICAg
ICAgb3ZlcndyaXRlMzIoaGVhZFRhYmxlT2Zmc2V0ICsgOCwgMHhCMUIwQUZCQVUgLSBjYWxjdWxh
dGVDaGVja3N1bSgwLCByZXN1bHQuc2l6ZSgpKSk7CisKICAgICAgICAgcmV0dXJuIHN0ZDo6bW92
ZShyZXN1bHQpOwogICAgIH0KIApAQCAtNDE4LDkgKzQ5OCw5IEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICBhcHBlbmQxNihpKTsKIAogICAgICAgICAvLyBDaGFyU3RyaW5ncyBJTkRFWAotICAgICAg
ICBzdGQ6OnZlY3Rvcjx1aW50OF90PiBib3hDaGFyU3RyaW5nID0gZ2VuZXJhdGVCb3hDaGFyU3Ry
aW5nKCk7Ci0gICAgICAgIHN0ZDo6dmVjdG9yPHVpbnQ4X3Q+IGNoZWNrQ2hhclN0cmluZyA9IGdl
bmVyYXRlQ2hlY2tDaGFyU3RyaW5nKCk7Ci0gICAgICAgIHN0ZDo6dmVjdG9yPHVpbnQ4X3Q+IHhD
aGFyU3RyaW5nID0gZ2VuZXJhdGVYQ2hhclN0cmluZygpOworICAgICAgICBzdGQ6OnZlY3Rvcjx1
aW50OF90PiBib3hDaGFyU3RyaW5nID0gZ2VuZXJhdGVCb3hDaGFyU3RyaW5nPENGRkJ1aWxkZXI+
KCk7CisgICAgICAgIHN0ZDo6dmVjdG9yPHVpbnQ4X3Q+IGNoZWNrQ2hhclN0cmluZyA9IGdlbmVy
YXRlQ2hlY2tDaGFyU3RyaW5nPENGRkJ1aWxkZXI+KCk7CisgICAgICAgIHN0ZDo6dmVjdG9yPHVp
bnQ4X3Q+IHhDaGFyU3RyaW5nID0gZ2VuZXJhdGVYQ2hhclN0cmluZzxDRkZCdWlsZGVyPigpOwog
ICAgICAgICBhc3NlcnQobnVtR2x5cGhzID4gMjYpOwogICAgICAgICBvdmVyd3JpdGUzMihjaGFy
c3RyaW5nc09mZnNldExvY2F0aW9uLCBzdGF0aWNfY2FzdDx1aW50MzJfdD4ocmVzdWx0LnNpemUo
KSAtIHN0YXJ0aW5nT2Zmc2V0KSk7CiAgICAgICAgIGFwcGVuZDE2KG51bUdseXBocyk7CkBAIC00
MzcsNiArNTE3LDMyIEBAIHByaXZhdGU6CiAgICAgICAgIH0KICAgICB9CiAKKyAgICAvLyBLZWVw
IGluIHN5bmMgd2l0aCBsb2NhCisgICAgdm9pZCBhcHBlbmRHTFlGVGFibGUoKQorICAgIHsKKyAg
ICAgICAgc3RkOjp2ZWN0b3I8dWludDhfdD4gYm94Q2hhclN0cmluZyA9IGdlbmVyYXRlQm94Q2hh
clN0cmluZzxHTFlGQnVpbGRlcj4oKTsKKyAgICAgICAgc3RkOjp2ZWN0b3I8dWludDhfdD4gY2hl
Y2tDaGFyU3RyaW5nID0gZ2VuZXJhdGVDaGVja0NoYXJTdHJpbmc8R0xZRkJ1aWxkZXI+KCk7Cisg
ICAgICAgIHN0ZDo6dmVjdG9yPHVpbnQ4X3Q+IHhDaGFyU3RyaW5nID0gZ2VuZXJhdGVYQ2hhclN0
cmluZzxHTFlGQnVpbGRlcj4oKTsKKyAgICAgICAgZm9yICh1aW50MTZfdCBnbHlwaCA9IDA7IGds
eXBoIDwgbnVtR2x5cGhzOyArK2dseXBoKSB7CisgICAgICAgICAgICBzdGQ6OnZlY3Rvcjx1aW50
OF90PiYgY2hhclN0cmluZyA9IGNoYXJTdHJpbmdGb3JHbHlwaChnbHlwaCwgYm94Q2hhclN0cmlu
ZywgY2hlY2tDaGFyU3RyaW5nLCB4Q2hhclN0cmluZyk7CisgICAgICAgICAgICByZXN1bHQuaW5z
ZXJ0KHJlc3VsdC5lbmQoKSwgY2hhclN0cmluZy5iZWdpbigpLCBjaGFyU3RyaW5nLmVuZCgpKTsK
KyAgICAgICAgfQorICAgIH0KKworICAgIC8vIEtlZXAgaW4gc3luYyB3aXRoIGdseWYKKyAgICB2
b2lkIGFwcGVuZExPQ0FUYWJsZSgpCisgICAgeworICAgICAgICBzdGQ6OnZlY3Rvcjx1aW50OF90
PiBib3hDaGFyU3RyaW5nID0gZ2VuZXJhdGVCb3hDaGFyU3RyaW5nPEdMWUZCdWlsZGVyPigpOwor
ICAgICAgICBzdGQ6OnZlY3Rvcjx1aW50OF90PiBjaGVja0NoYXJTdHJpbmcgPSBnZW5lcmF0ZUNo
ZWNrQ2hhclN0cmluZzxHTFlGQnVpbGRlcj4oKTsKKyAgICAgICAgc3RkOjp2ZWN0b3I8dWludDhf
dD4geENoYXJTdHJpbmcgPSBnZW5lcmF0ZVhDaGFyU3RyaW5nPEdMWUZCdWlsZGVyPigpOworICAg
ICAgICB1aW50MzJfdCBpbmRleCA9IDA7CisgICAgICAgIGZvciAodWludDE2X3QgZ2x5cGggPSAw
OyBnbHlwaCA8IG51bUdseXBoczsgKytnbHlwaCkgeworICAgICAgICAgICAgYXBwZW5kMzIoaW5k
ZXgpOworICAgICAgICAgICAgaW5kZXggKz0gY2hhclN0cmluZ0ZvckdseXBoKGdseXBoLCBib3hD
aGFyU3RyaW5nLCBjaGVja0NoYXJTdHJpbmcsIHhDaGFyU3RyaW5nKS5zaXplKCk7CisgICAgICAg
IH0KKyAgICAgICAgYXBwZW5kMzIoaW5kZXgpOworICAgIH0KKwogICAgIHZvaWQgYXBwZW5kU3Vi
c3RpdHV0aW9uU3VidGFibGUoc2l6ZV90IHN1YnRhYmxlUmVjb3JkTG9jYXRpb24sIHVpbnQxNl90
IGlHZXRSZXBsYWNlZCwgdWludDE2X3QgcmVwbGFjZWRXaXRoTWUpCiAgICAgewogICAgICAgICBv
dmVyd3JpdGUxNihzdWJ0YWJsZVJlY29yZExvY2F0aW9uICsgNiwgcmVzdWx0LnNpemUoKSAtIHN1
YnRhYmxlUmVjb3JkTG9jYXRpb24pOwpAQCAtNjc3LDcgKzc4Myw3IEBAIHByaXZhdGU6CiAgICAg
ICAgIGFwcGVuZDE2KDApOyAvLyBUcmFpdHMKICAgICAgICAgYXBwZW5kMTYoMyk7IC8vIFNtYWxs
ZXN0IHJlYWRhYmxlIHNpemUgaW4gcGl4ZWxzCiAgICAgICAgIGFwcGVuZDE2KDApOyAvLyBNaWdo
dCBjb250YWluIExUUiBvciBSVEwgZ2x5cGhzCi0gICAgICAgIGFwcGVuZDE2KDApOyAvLyBTaG9y
dCBvZmZzZXRzIGluIHRoZSAnbG9jYScgdGFibGUuIEhvd2V2ZXIsIE9URiBmb250cyBkb24ndCBo
YXZlIGEgJ2xvY2EnIHRhYmxlIHNvIHRoaXMgaXMgaXJyZWxldmFudAorICAgICAgICBhcHBlbmQx
NigxKTsgLy8gTG9uZyBvZmZzZXRzIGluIHRoZSAnbG9jYScgdGFibGUuCiAgICAgICAgIGFwcGVu
ZDE2KDApOyAvLyBHbHlwaCBkYXRhIGZvcm1hdAogICAgIH0KICAgICAKQEAgLTcwNSw3ICs4MTEs
NyBAQCBwcml2YXRlOgogICAgIHZvaWQgYXBwZW5kSE1UWFRhYmxlKCkKICAgICB7CiAgICAgICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1HbHlwaHM7ICsraSkgewotICAgICAgICAgICAg
YXBwZW5kMTYoY2xhbXBUbzx1aW50MTZfdD4odW5pdHNQZXJFbSkpOyAvLyBob3Jpem9udGFsIGFk
dmFuY2UKKyAgICAgICAgICAgIGFwcGVuZDE2KGNsYW1wVG88dWludDE2X3Q+KHN0YXRpY19jYXN0
PGludDMyX3Q+KHVuaXRzUGVyRW0pKSk7IC8vIGhvcml6b250YWwgYWR2YW5jZQogICAgICAgICAg
ICAgYXBwZW5kMTYoY2xhbXBUbzxpbnQxNl90PigwKSk7IC8vIGxlZnQgc2lkZSBiZWFyaW5nCiAg
ICAgICAgIH0KICAgICB9CkBAIC03OTksNyArOTA1LDcgQEAgcHJpdmF0ZToKICAgICBzdGQ6OnZl
Y3Rvcjx1aW50OF90PiByZXN1bHQ7CiB9OwogCi1zdGQ6OnZlY3Rvcjx1aW50OF90PiBnZW5lcmF0
ZUZvbnQoKQorc3RkOjp2ZWN0b3I8dWludDhfdD4gZ2VuZXJhdGVGb250KFR5cGUgdHlwZSkKIHsK
LSAgICByZXR1cm4gR2VuZXJhdG9yKCkuZ2VuZXJhdGUoKTsKKyAgICByZXR1cm4gR2VuZXJhdG9y
KCkuZ2VuZXJhdGUodHlwZSk7CiB9CmRpZmYgLS1naXQgYS9Ub29scy9Gb250V2l0aEZlYXR1cmVz
L0ZvbnRXaXRoRmVhdHVyZXMvRm9udENyZWF0b3IuaCBiL1Rvb2xzL0ZvbnRXaXRoRmVhdHVyZXMv
Rm9udFdpdGhGZWF0dXJlcy9Gb250Q3JlYXRvci5oCmluZGV4IGIxOTIwODY3Yjk3OWY3MzdkMTZi
MDNhOTEzMmMxMDBjMGUzOGQzMzMuLmMzZjU2MzhjOWQyZDA3NDE3Yjg4YWE3MTg0ZjI5Mjg2NGIx
NTBhODggMTAwNjQ0Ci0tLSBhL1Rvb2xzL0ZvbnRXaXRoRmVhdHVyZXMvRm9udFdpdGhGZWF0dXJl
cy9Gb250Q3JlYXRvci5oCisrKyBiL1Rvb2xzL0ZvbnRXaXRoRmVhdHVyZXMvRm9udFdpdGhGZWF0
dXJlcy9Gb250Q3JlYXRvci5oCkBAIC0yOCw2ICsyOCwxMSBAQAogCiAjaW5jbHVkZSA8dmVjdG9y
PgogCi1zdGQ6OnZlY3Rvcjx1aW50OF90PiBnZW5lcmF0ZUZvbnQoKTsKK2VudW0gY2xhc3MgVHlw
ZSB7CisgICAgT3BlblR5cGUsCisgICAgVHJ1ZVR5cGUKK307CisKK3N0ZDo6dmVjdG9yPHVpbnQ4
X3Q+IGdlbmVyYXRlRm9udChUeXBlKTsKIAogI2VuZGlmIC8qIEZvbnRDcmVhdG9yX2ggKi8KZGlm
ZiAtLWdpdCBhL1Rvb2xzL0ZvbnRXaXRoRmVhdHVyZXMvRm9udFdpdGhGZWF0dXJlcy9tYWluLmNw
cCBiL1Rvb2xzL0ZvbnRXaXRoRmVhdHVyZXMvRm9udFdpdGhGZWF0dXJlcy9tYWluLmNwcAppbmRl
eCAxNjJlZGY3NDc1MzY2MjdiNDU3NjU4MzYyYWM3NWYwZjMzNzQ1NTc3Li40Y2NjNjM0YWViYzQz
NzVlODhkMzU1NTMxMDJmZjI3MDNhODhlYTQxIDEwMDY0NAotLS0gYS9Ub29scy9Gb250V2l0aEZl
YXR1cmVzL0ZvbnRXaXRoRmVhdHVyZXMvbWFpbi5jcHAKKysrIGIvVG9vbHMvRm9udFdpdGhGZWF0
dXJlcy9Gb250V2l0aEZlYXR1cmVzL21haW4uY3BwCkBAIC05OCw4ICs5OCw4IEBAIGludCBtYWlu
KGludCBhcmdjLCBjb25zdCBjaGFyICogYXJndltdKQogICAgIENHQ29sb3JTcGFjZVJlZiBjb2xv
clNwYWNlID0gQ0dDb2xvclNwYWNlQ3JlYXRlRGV2aWNlUkdCKCk7CiAgICAgQ0dDb250ZXh0UmVm
IGNvbnRleHQgPSBDR0JpdG1hcENvbnRleHRDcmVhdGUobnVsbHB0ciwgd2lkdGgsIGhlaWdodCwg
OCwgd2lkdGggKiA0LCBjb2xvclNwYWNlLCBrQ0dJbWFnZUFscGhhTm9uZVNraXBMYXN0KTsKICAg
ICBDR0NvbG9yU3BhY2VSZWxlYXNlKGNvbG9yU3BhY2UpOwotICAgIGNvbnN0IHN0ZDo6dmVjdG9y
PHVpbnQ4X3Q+IGZvbnRWZWN0b3IgPSBnZW5lcmF0ZUZvbnQoKTsKLSAgICBzdGQ6Om9mc3RyZWFt
IG91dHB1dEZpbGUoIi9Wb2x1bWVzL0RhdGEvaG9tZS9tbWF4ZmllbGQvdG1wL291dHB1dC5vdGYi
LCBzdGQ6Omlvczo6b3V0IHwgc3RkOjppb3M6OmJpbmFyeSk7CisgICAgY29uc3Qgc3RkOjp2ZWN0
b3I8dWludDhfdD4gZm9udFZlY3RvciA9IGdlbmVyYXRlRm9udChUeXBlOjpUcnVlVHlwZSk7Cisg
ICAgc3RkOjpvZnN0cmVhbSBvdXRwdXRGaWxlKCIvVXNlcnMvbGl0aGVydW0vdG1wL291dHB1dC50
dGYiLCBzdGQ6Omlvczo6b3V0IHwgc3RkOjppb3M6OmJpbmFyeSk7CiAgICAgZm9yICh1aW50OF90
IGIgOiBmb250VmVjdG9yKQogICAgICAgICBvdXRwdXRGaWxlIDw8IGI7CiAgICAgb3V0cHV0Rmls
ZS5jbG9zZSgpOwpAQCAtMTIwLDcgKzEyMCw3IEBAIGludCBtYWluKGludCBhcmdjLCBjb25zdCBj
aGFyICogYXJndltdKQogICAgIENGUmVsZWFzZShmb250RGVzY3JpcHRvcik7CiAgICAgQ0dJbWFn
ZVJlZiBpbWFnZSA9IENHQml0bWFwQ29udGV4dENyZWF0ZUltYWdlKGNvbnRleHQpOwogICAgIENH
Q29udGV4dFJlbGVhc2UoY29udGV4dCk7Ci0gICAgQ0ZVUkxSZWYgdXJsID0gQ0ZVUkxDcmVhdGVX
aXRoRmlsZVN5c3RlbVBhdGgoa0NGQWxsb2NhdG9yRGVmYXVsdCwgQ0ZTVFIoIi9Wb2x1bWVzL0Rh
dGEvaG9tZS9tbWF4ZmllbGQvdG1wL291dHB1dC5wbmciKSwga0NGVVJMUE9TSVhQYXRoU3R5bGUs
IEZBTFNFKTsKKyAgICBDRlVSTFJlZiB1cmwgPSBDRlVSTENyZWF0ZVdpdGhGaWxlU3lzdGVtUGF0
aChrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBDRlNUUigiL1VzZXJzL2xpdGhlcnVtL3RtcC9vdXRwdXQu
cG5nIiksIGtDRlVSTFBPU0lYUGF0aFN0eWxlLCBGQUxTRSk7CiAgICAgQ0dJbWFnZURlc3RpbmF0
aW9uUmVmIGltYWdlRGVzdGluYXRpb24gPSBDR0ltYWdlRGVzdGluYXRpb25DcmVhdGVXaXRoVVJM
KHVybCwga1VUVHlwZVBORywgMSwgbnVsbHB0cik7CiAgICAgQ0ZSZWxlYXNlKHVybCk7CiAgICAg
Q0dJbWFnZURlc3RpbmF0aW9uQWRkSW1hZ2UoaW1hZ2VEZXN0aW5hdGlvbiwgaW1hZ2UsIG51bGxw
dHIpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>262491</attachid>
            <date>2015-10-05 20:54:28 -0700</date>
            <delta_ts>2015-10-06 18:16:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-149776-20151005205358.patch</filename>
            <type>text/plain</type>
            <size>30319</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkwNTgwCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNWU5NDBiYTFiOTEyOGYxY2FmZTc2MDYwYzlhMmI0MjAy
ZGI5MjI3Zi4uNTljZDc4ZWY2OWM0MGFhZjIzNTQ2NmJlYmY1ZWY0M2QwNmExOWVlNSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2
IEBACisyMDE1LTEwLTA1ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+
CisKKyAgICAgICAgVGVzdCBmb250LXZhcmlhbnQtKiBhbmQgZm9udC1mZWF0dXJlLXNldHRpbmdz
IHdpdGggVHJ1ZVR5cGUgZm9udHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE0OTc3NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogRm9udFdpdGhGZWF0dXJlcy9Gb250V2l0aEZlYXR1cmVzLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogRm9udFdpdGhGZWF0dXJlcy9Gb250V2l0aEZl
YXR1cmVzL0ZvbnRDcmVhdG9yLmNwcDoKKyAgICAgICAgKENGRkJ1aWxkZXI6Om1vdmVUbyk6Cisg
ICAgICAgIChDRkZCdWlsZGVyOjpsaW5lVG8pOgorICAgICAgICAoR0xZRkJ1aWxkZXI6OkdMWUZC
dWlsZGVyKToKKyAgICAgICAgKEdMWUZCdWlsZGVyOjp0YWtlUmVzdWx0KToKKyAgICAgICAgKEdM
WUZCdWlsZGVyOjptb3ZlVG8pOgorICAgICAgICAoR0xZRkJ1aWxkZXI6OmxpbmVUbyk6CisgICAg
ICAgIChHTFlGQnVpbGRlcjo6Y2xvc2VQYXRoKToKKyAgICAgICAgKEdMWUZCdWlsZGVyOjp3cml0
ZVBvaW50KToKKyAgICAgICAgKEdMWUZCdWlsZGVyOjphcHBlbmQxNik6CisgICAgICAgIChnZW5l
cmF0ZUJveENoYXJTdHJpbmcpOgorICAgICAgICAoZ2VuZXJhdGVDaGVja0NoYXJTdHJpbmcpOgor
ICAgICAgICAoZ2VuZXJhdGVYQ2hhclN0cmluZyk6CisgICAgICAgIChHZW5lcmF0b3I6OmdlbmVy
YXRlKToKKyAgICAgICAgKEdlbmVyYXRvcjo6YXBwZW5kQ0ZGVGFibGUpOgorICAgICAgICAoR2Vu
ZXJhdG9yOjphcHBlbmRHTFlGVGFibGUpOgorICAgICAgICAoR2VuZXJhdG9yOjphcHBlbmRMT0NB
VGFibGUpOgorICAgICAgICAoR2VuZXJhdG9yOjphcHBlbmRIRUFEVGFibGUpOgorICAgICAgICAo
R2VuZXJhdG9yOjphcHBlbmRITVRYVGFibGUpOgorICAgICAgICAoZ2VuZXJhdGVGb250KToKKyAg
ICAgICAgKENGRkJ1aWxkZXI6OmN1cnZlVG9DdWJpYyk6IERlbGV0ZWQuCisgICAgICAgICogRm9u
dFdpdGhGZWF0dXJlcy9Gb250V2l0aEZlYXR1cmVzL0ZvbnRDcmVhdG9yLmg6CisgICAgICAgICog
Rm9udFdpdGhGZWF0dXJlcy9Gb250V2l0aEZlYXR1cmVzL21haW4uY3BwOgorICAgICAgICAobWFp
bik6CisKIDIwMTUtMTAtMDUgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgogCiAg
ICAgICAgIER1bXBSZW5kZXJUcmVlIGJ1aWx0IHdpdGggcHVibGljIGlPUyBTREsgY3Jhc2hlcyB1
bmRlciAtW1dlYlByZWZlcmVuY2VzKFdlYlByaXZhdGUpIF9zZXRDdXJyZW50TmV0d29ya0xvYWRl
clNlc3Npb25Db29raWVBY2NlcHRQb2xpY3k6XQpkaWZmIC0tZ2l0IGEvVG9vbHMvRm9udFdpdGhG
ZWF0dXJlcy9Gb250V2l0aEZlYXR1cmVzLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Ub29s
cy9Gb250V2l0aEZlYXR1cmVzL0ZvbnRXaXRoRmVhdHVyZXMueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagppbmRleCBjNWZmNTcwZTM5MmExYWQxMDcyYWNjMzExNjZkZmFlMzVlNzAyOTdmLi40MWM3
NGJjYjczZGMwMmM3OWI0MWRiOWMxOTBiYWQxNGRmZWY1OTMyIDEwMDY0NAotLS0gYS9Ub29scy9G
b250V2l0aEZlYXR1cmVzL0ZvbnRXaXRoRmVhdHVyZXMueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agorKysgYi9Ub29scy9Gb250V2l0aEZlYXR1cmVzL0ZvbnRXaXRoRmVhdHVyZXMueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagpAQCAtMTg2LDcgKzE4Niw3IEBACiAJCQkJR0NDX1dBUk5fVU5JTklU
SUFMSVpFRF9BVVRPUyA9IFlFU19BR0dSRVNTSVZFOwogCQkJCUdDQ19XQVJOX1VOVVNFRF9GVU5D
VElPTiA9IFlFUzsKIAkJCQlHQ0NfV0FSTl9VTlVTRURfVkFSSUFCTEUgPSBZRVM7Ci0JCQkJTUFD
T1NYX0RFUExPWU1FTlRfVEFSR0VUID0gMTAuMTE7CisJCQkJTUFDT1NYX0RFUExPWU1FTlRfVEFS
R0VUID0gMTAuMTA7CiAJCQkJTVRMX0VOQUJMRV9ERUJVR19JTkZPID0gWUVTOwogCQkJCU9OTFlf
QUNUSVZFX0FSQ0ggPSBZRVM7CiAJCQkJU0RLUk9PVCA9IG1hY29zeDsKQEAgLTIyMiw3ICsyMjIs
NyBAQAogCQkJCUdDQ19XQVJOX1VOSU5JVElBTElaRURfQVVUT1MgPSBZRVNfQUdHUkVTU0lWRTsK
IAkJCQlHQ0NfV0FSTl9VTlVTRURfRlVOQ1RJT04gPSBZRVM7CiAJCQkJR0NDX1dBUk5fVU5VU0VE
X1ZBUklBQkxFID0gWUVTOwotCQkJCU1BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVCA9IDEwLjExOwor
CQkJCU1BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVCA9IDEwLjEwOwogCQkJCU1UTF9FTkFCTEVfREVC
VUdfSU5GTyA9IE5POwogCQkJCVNES1JPT1QgPSBtYWNvc3g7CiAJCQl9OwpAQCAtMjYxLDYgKzI2
MSw3IEBACiAJCQkJQzI4NjI2QUIxQkE5MDJCOTAwMTk2MUQ2IC8qIFJlbGVhc2UgKi8sCiAJCQkp
OwogCQkJZGVmYXVsdENvbmZpZ3VyYXRpb25Jc1Zpc2libGUgPSAwOworCQkJZGVmYXVsdENvbmZp
Z3VyYXRpb25OYW1lID0gUmVsZWFzZTsKIAkJfTsKIC8qIEVuZCBYQ0NvbmZpZ3VyYXRpb25MaXN0
IHNlY3Rpb24gKi8KIAl9OwpkaWZmIC0tZ2l0IGEvVG9vbHMvRm9udFdpdGhGZWF0dXJlcy9Gb250
V2l0aEZlYXR1cmVzL0ZvbnRDcmVhdG9yLmNwcCBiL1Rvb2xzL0ZvbnRXaXRoRmVhdHVyZXMvRm9u
dFdpdGhGZWF0dXJlcy9Gb250Q3JlYXRvci5jcHAKaW5kZXggN2EzZTE0MWU1MjkwNzZlNmEzYjRj
YTNhMGJkYWM0MDFlYzFiODM3Ni4uMzNiZDg2ZWFkYmQyN2QyOTUzNGMyZTE4YjVhMDk1ZDMzNmEz
NDlkNCAxMDA2NDQKLS0tIGEvVG9vbHMvRm9udFdpdGhGZWF0dXJlcy9Gb250V2l0aEZlYXR1cmVz
L0ZvbnRDcmVhdG9yLmNwcAorKysgYi9Ub29scy9Gb250V2l0aEZlYXR1cmVzL0ZvbnRXaXRoRmVh
dHVyZXMvRm9udENyZWF0b3IuY3BwCkBAIC04Miw3ICs4Miw2IEBAIHN0YXRpYyB2b2lkIHdyaXRl
Q0ZGRW5jb2RlZE51bWJlcihWJiB2ZWN0b3IsIGZsb2F0IG51bWJlcikKIH0KIAogc3RhdGljIGNv
bnN0IGNoYXIgckxpbmVUbyA9IDB4MDU7Ci1zdGF0aWMgY29uc3QgY2hhciByckN1cnZlVG8gPSAw
eDA4Owogc3RhdGljIGNvbnN0IGNoYXIgZW5kQ2hhciA9IDB4MGU7CiBzdGF0aWMgY29uc3QgY2hh
ciByTW92ZVRvID0gMHgxNTsKIApAQCAtMTAyLDE0ICsxMDEsOSBAQCBwdWJsaWM6CiAgICAgICAg
IHJldHVybiBzdGQ6Om1vdmUocmVzdWx0KTsKICAgICB9CiAKLSAgICB2b2lkIG1vdmVUbyhzdGQ6
OnBhaXI8ZmxvYXQsIGZsb2F0PiB0YXJnZXRQb2ludCwgYm9vbCBjbG9zZWQpCisgICAgdm9pZCBt
b3ZlVG8oc3RkOjpwYWlyPGZsb2F0LCBmbG9hdD4gdGFyZ2V0UG9pbnQpCiAgICAgewotICAgICAg
ICBpZiAoY2xvc2VkICYmICFyZXN1bHQuZW1wdHkoKSkKLSAgICAgICAgICAgIGNsb3NlUGF0aCgp
OwotCi0gICAgICAgIHN0ZDo6cGFpcjxmbG9hdCwgZmxvYXQ+IGRlc3RpbmF0aW9uID0gdGFyZ2V0
UG9pbnQ7Ci0KLSAgICAgICAgd3JpdGVQb2ludChkZXN0aW5hdGlvbik7CisgICAgICAgIHdyaXRl
UG9pbnQodGFyZ2V0UG9pbnQpOwogICAgICAgICByZXN1bHQucHVzaF9iYWNrKHJNb3ZlVG8pOwog
CiAgICAgICAgIHN0YXJ0aW5nUG9pbnQgPSBjdXJyZW50OwpAQCAtMTE3LDI0ICsxMTEsMTAgQEAg
cHVibGljOgogCiAgICAgdm9pZCBsaW5lVG8oc3RkOjpwYWlyPGZsb2F0LCBmbG9hdD4gdGFyZ2V0
UG9pbnQpCiAgICAgewotICAgICAgICBzdGQ6OnBhaXI8ZmxvYXQsIGZsb2F0PiBkZXN0aW5hdGlv
biA9IHRhcmdldFBvaW50OwotCi0gICAgICAgIHdyaXRlUG9pbnQoZGVzdGluYXRpb24pOworICAg
ICAgICB3cml0ZVBvaW50KHRhcmdldFBvaW50KTsKICAgICAgICAgcmVzdWx0LnB1c2hfYmFjayhy
TGluZVRvKTsKICAgICB9CiAKLSAgICB2b2lkIGN1cnZlVG9DdWJpYyhzdGQ6OnBhaXI8ZmxvYXQs
IGZsb2F0PiBwb2ludDEsIHN0ZDo6cGFpcjxmbG9hdCwgZmxvYXQ+IHBvaW50Miwgc3RkOjpwYWly
PGZsb2F0LCBmbG9hdD4gdGFyZ2V0UG9pbnQpCi0gICAgewotICAgICAgICBzdGQ6OnBhaXI8Zmxv
YXQsIGZsb2F0PiBkZXN0aW5hdGlvbjEgPSBwb2ludDE7Ci0gICAgICAgIHN0ZDo6cGFpcjxmbG9h
dCwgZmxvYXQ+IGRlc3RpbmF0aW9uMiA9IHBvaW50MjsKLSAgICAgICAgc3RkOjpwYWlyPGZsb2F0
LCBmbG9hdD4gZGVzdGluYXRpb24zID0gdGFyZ2V0UG9pbnQ7Ci0KLSAgICAgICAgd3JpdGVQb2lu
dChkZXN0aW5hdGlvbjEpOwotICAgICAgICB3cml0ZVBvaW50KGRlc3RpbmF0aW9uMik7Ci0gICAg
ICAgIHdyaXRlUG9pbnQoZGVzdGluYXRpb24zKTsKLSAgICAgICAgcmVzdWx0LnB1c2hfYmFjayhy
ckN1cnZlVG8pOwotICAgIH0KLQogICAgIHZvaWQgY2xvc2VQYXRoKCkKICAgICB7CiAgICAgICAg
IGlmIChjdXJyZW50ICE9IHN0YXJ0aW5nUG9pbnQpCkBAIC0xNTYsMTAgKzEzNiw5NCBAQCBwcml2
YXRlOgogICAgIHN0ZDo6cGFpcjxmbG9hdCwgZmxvYXQ+IGN1cnJlbnQ7CiB9OwogCitjbGFzcyBH
TFlGQnVpbGRlciB7CitwdWJsaWM6CisgICAgR0xZRkJ1aWxkZXIoZmxvYXQsIHN0ZDo6cGFpcjxm
bG9hdCwgZmxvYXQ+KQorICAgIHsKKyAgICB9CisKKyAgICBzdGQ6OnZlY3Rvcjx1aW50OF90PiB0
YWtlUmVzdWx0KCkKKyAgICB7CisgICAgICAgIHN0ZDo6dmVjdG9yPHVpbnQ4X3Q+IHJlc3VsdDsK
KyAgICAgICAgYXBwZW5kMTYocmVzdWx0LCBlbmRQdHNPZkNvbnRvdXJzLnNpemUoKSk7CisgICAg
ICAgIGFwcGVuZDE2KHJlc3VsdCwgY2xhbXBUbzxpbnQxNl90PihtaW5YKSk7CisgICAgICAgIGFw
cGVuZDE2KHJlc3VsdCwgY2xhbXBUbzxpbnQxNl90PihtaW5ZKSk7CisgICAgICAgIGFwcGVuZDE2
KHJlc3VsdCwgY2xhbXBUbzxpbnQxNl90PihtYXhYKSk7CisgICAgICAgIGFwcGVuZDE2KHJlc3Vs
dCwgY2xhbXBUbzxpbnQxNl90PihtYXhZKSk7CisKKyAgICAgICAgZm9yICh1aW50MTZfdCBwIDog
ZW5kUHRzT2ZDb250b3VycykKKyAgICAgICAgICAgIGFwcGVuZDE2KHJlc3VsdCwgcCk7CisgICAg
ICAgIGFwcGVuZDE2KHJlc3VsdCwgMCk7CisgICAgICAgIGZvciAodWludDhfdCBmIDogZmxhZ3Mp
CisgICAgICAgICAgICByZXN1bHQucHVzaF9iYWNrKGYpOworICAgICAgICBmb3IgKHVpbnQxNl90
IGMgOiB4Q29vcmRpbmF0ZXMpCisgICAgICAgICAgICBhcHBlbmQxNihyZXN1bHQsIGMpOworICAg
ICAgICBmb3IgKHVpbnQxNl90IGMgOiB5Q29vcmRpbmF0ZXMpCisgICAgICAgICAgICBhcHBlbmQx
NihyZXN1bHQsIGMpOworCisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgdm9p
ZCBtb3ZlVG8oc3RkOjpwYWlyPGZsb2F0LCBmbG9hdD4gdGFyZ2V0UG9pbnQpCisgICAgeworICAg
ICAgICB3cml0ZVBvaW50KHRhcmdldFBvaW50LCB0cnVlKTsKKworICAgICAgICBzdGFydGluZ1Bv
aW50ID0gY3VycmVudDsKKyAgICB9CisKKyAgICB2b2lkIGxpbmVUbyhzdGQ6OnBhaXI8ZmxvYXQs
IGZsb2F0PiB0YXJnZXRQb2ludCkKKyAgICB7CisgICAgICAgIHdyaXRlUG9pbnQodGFyZ2V0UG9p
bnQsIHRydWUpOworICAgIH0KKworICAgIHZvaWQgY2xvc2VQYXRoKCkKKyAgICB7CisgICAgICAg
IGlmIChjdXJyZW50ICE9IHN0YXJ0aW5nUG9pbnQpCisgICAgICAgICAgICBsaW5lVG8oc3RhcnRp
bmdQb2ludCk7CisgICAgICAgIGVuZFB0c09mQ29udG91cnMucHVzaF9iYWNrKHBvaW50Q291bnQg
LSAxKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgdm9pZCB3cml0ZVBvaW50KHN0ZDo6cGFpcjxm
bG9hdCwgZmxvYXQ+IGRlc3RpbmF0aW9uLCBib29sIG9uQ3VydmUpCisgICAgeworICAgICAgICBm
bGFncy5wdXNoX2JhY2sob25DdXJ2ZSA/IDEgOiAwKTsgLy8gRmxhZ3MKKworICAgICAgICBzdGQ6
OnBhaXI8ZmxvYXQsIGZsb2F0PiBkZWx0YSA9IHN0ZDo6bWFrZV9wYWlyKGRlc3RpbmF0aW9uLmZp
cnN0IC0gY3VycmVudC5maXJzdCwgZGVzdGluYXRpb24uc2Vjb25kIC0gY3VycmVudC5zZWNvbmQp
OworICAgICAgICB4Q29vcmRpbmF0ZXMucHVzaF9iYWNrKGRlbHRhLmZpcnN0KTsKKyAgICAgICAg
eUNvb3JkaW5hdGVzLnB1c2hfYmFjayhkZWx0YS5zZWNvbmQpOworCisgICAgICAgIGN1cnJlbnQg
PSBkZXN0aW5hdGlvbjsKKyAgICAgICAgbWluWCA9IHN0ZDo6bWluKG1pblgsIGRlc3RpbmF0aW9u
LmZpcnN0KTsKKyAgICAgICAgbWF4WCA9IHN0ZDo6bWF4KG1heFgsIGRlc3RpbmF0aW9uLmZpcnN0
KTsKKyAgICAgICAgbWluWSA9IHN0ZDo6bWluKG1pblksIGRlc3RpbmF0aW9uLnNlY29uZCk7Cisg
ICAgICAgIG1heFkgPSBzdGQ6Om1heChtYXhZLCBkZXN0aW5hdGlvbi5zZWNvbmQpOworICAgICAg
ICArK3BvaW50Q291bnQ7CisgICAgfQorCisgICAgc3RhdGljIHZvaWQgYXBwZW5kMTYoc3RkOjp2
ZWN0b3I8dWludDhfdD4mIGRlc3RpbmF0aW9uLCB1aW50MTZfdCB2YWx1ZSkKKyAgICB7CisgICAg
ICAgIGRlc3RpbmF0aW9uLnB1c2hfYmFjayh2YWx1ZSA+PiA4KTsKKyAgICAgICAgZGVzdGluYXRp
b24ucHVzaF9iYWNrKHZhbHVlKTsKKyAgICB9CisKKyAgICBzdGQ6OnZlY3Rvcjx1aW50MTZfdD4g
ZW5kUHRzT2ZDb250b3VyczsKKyAgICBzdGQ6OnZlY3Rvcjx1aW50OF90PiBmbGFnczsKKyAgICBz
dGQ6OnZlY3RvcjxpbnQxNl90PiB4Q29vcmRpbmF0ZXM7CisgICAgc3RkOjp2ZWN0b3I8aW50MTZf
dD4geUNvb3JkaW5hdGVzOworICAgIHN0ZDo6cGFpcjxmbG9hdCwgZmxvYXQ+IHN0YXJ0aW5nUG9p
bnQ7CisgICAgc3RkOjpwYWlyPGZsb2F0LCBmbG9hdD4gY3VycmVudDsKKyAgICBmbG9hdCBtaW5Y
IHsgc3RkOjpudW1lcmljX2xpbWl0czxmbG9hdD46Om1heCgpIH07CisgICAgZmxvYXQgbWF4WCB7
IHN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjptaW4oKSB9OworICAgIGZsb2F0IG1pblkgeyBz
dGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6bWF4KCkgfTsKKyAgICBmbG9hdCBtYXhZIHsgc3Rk
OjpudW1lcmljX2xpbWl0czxmbG9hdD46Om1pbigpIH07CisgICAgdW5zaWduZWQgcG9pbnRDb3Vu
dCB7IDAgfTsKK307CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgogc3RkOjp2ZWN0b3I8dWludDhf
dD4gZ2VuZXJhdGVCb3hDaGFyU3RyaW5nKCkKIHsKLSAgICBDRkZCdWlsZGVyIGJ1aWxkZXIodW5p
dHNQZXJFbSwgc3RkOjptYWtlX3BhaXIoMC5mLCAwLmYpKTsKLSAgICBidWlsZGVyLm1vdmVUbyhz
dGQ6Om1ha2VfcGFpcigyMDAuZiwgMjAwLmYpLCBmYWxzZSk7CisgICAgVCBidWlsZGVyKHVuaXRz
UGVyRW0sIHN0ZDo6bWFrZV9wYWlyKDAuZiwgMC5mKSk7CisgICAgYnVpbGRlci5tb3ZlVG8oc3Rk
OjptYWtlX3BhaXIoMjAwLmYsIDIwMC5mKSk7CiAgICAgYnVpbGRlci5saW5lVG8oc3RkOjptYWtl
X3BhaXIoMjAwLmYsIDgwMC5mKSk7CiAgICAgYnVpbGRlci5saW5lVG8oc3RkOjptYWtlX3BhaXIo
ODAwLmYsIDgwMC5mKSk7CiAgICAgYnVpbGRlci5saW5lVG8oc3RkOjptYWtlX3BhaXIoODAwLmYs
IDIwMC5mKSk7CkBAIC0xNjcsMTAgKzIzMSwxMSBAQCBzdGQ6OnZlY3Rvcjx1aW50OF90PiBnZW5l
cmF0ZUJveENoYXJTdHJpbmcoKQogICAgIHJldHVybiBidWlsZGVyLnRha2VSZXN1bHQoKTsKIH0K
IAordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiBzdGQ6OnZlY3Rvcjx1aW50OF90PiBnZW5lcmF0ZUNo
ZWNrQ2hhclN0cmluZygpCiB7Ci0gICAgQ0ZGQnVpbGRlciBidWlsZGVyKHVuaXRzUGVyRW0sIHN0
ZDo6bWFrZV9wYWlyKDAuZiwgMC5mKSk7Ci0gICAgYnVpbGRlci5tb3ZlVG8oc3RkOjptYWtlX3Bh
aXIoMjAwLmYsIDUwMC5mKSwgZmFsc2UpOworICAgIFQgYnVpbGRlcih1bml0c1BlckVtLCBzdGQ6
Om1ha2VfcGFpcigwLmYsIDAuZikpOworICAgIGJ1aWxkZXIubW92ZVRvKHN0ZDo6bWFrZV9wYWly
KDIwMC5mLCA1MDAuZikpOwogICAgIGJ1aWxkZXIubGluZVRvKHN0ZDo6bWFrZV9wYWlyKDI1MC5m
LCA1NTAuZikpOwogICAgIGJ1aWxkZXIubGluZVRvKHN0ZDo6bWFrZV9wYWlyKDUwMC5mLCAzMDAu
ZikpOwogICAgIGJ1aWxkZXIubGluZVRvKHN0ZDo6bWFrZV9wYWlyKDkwMC5mLCA3MDAuZikpOwpA
QCAtMTgwLDEwICsyNDUsMTEgQEAgc3RkOjp2ZWN0b3I8dWludDhfdD4gZ2VuZXJhdGVDaGVja0No
YXJTdHJpbmcoKQogICAgIHJldHVybiBidWlsZGVyLnRha2VSZXN1bHQoKTsKIH0KIAordGVtcGxh
dGUgPHR5cGVuYW1lIFQ+CiBzdGQ6OnZlY3Rvcjx1aW50OF90PiBnZW5lcmF0ZVhDaGFyU3RyaW5n
KCkKIHsKLSAgICBDRkZCdWlsZGVyIGJ1aWxkZXIodW5pdHNQZXJFbSwgc3RkOjptYWtlX3BhaXIo
MC5mLCAwLmYpKTsKLSAgICBidWlsZGVyLm1vdmVUbyhzdGQ6Om1ha2VfcGFpcig1MDAuMGYsIDU1
MC4wZiksIGZhbHNlKTsKKyAgICBUIGJ1aWxkZXIodW5pdHNQZXJFbSwgc3RkOjptYWtlX3BhaXIo
MC5mLCAwLmYpKTsKKyAgICBidWlsZGVyLm1vdmVUbyhzdGQ6Om1ha2VfcGFpcig1MDAuMGYsIDU1
MC4wZikpOwogICAgIGJ1aWxkZXIubGluZVRvKHN0ZDo6bWFrZV9wYWlyKDkwMC5mLCA5NTAuZikp
OwogICAgIGJ1aWxkZXIubGluZVRvKHN0ZDo6bWFrZV9wYWlyKDk1MC5mLCA5MDAuZikpOwogICAg
IGJ1aWxkZXIubGluZVRvKHN0ZDo6bWFrZV9wYWlyKDU1MC5mLCA1MDAuZikpOwpAQCAtMjEwLDE2
ICsyNzYsMjMgQEAgc3RkOjp2ZWN0b3I8dWludDhfdD4mIGNoYXJTdHJpbmdGb3JHbHlwaCh1aW50
MTZfdCBnbHlwaCwgc3RkOjp2ZWN0b3I8dWludDhfdD4mIGIKIAogY2xhc3MgR2VuZXJhdG9yIHsK
IHB1YmxpYzoKLSAgICBzdGQ6OnZlY3Rvcjx1aW50OF90PiBnZW5lcmF0ZSgpCisgICAgc3RkOjp2
ZWN0b3I8dWludDhfdD4gZ2VuZXJhdGUoVHlwZSB0eXBlKQogICAgIHsKLSAgICAgICAgdWludDE2
X3QgbnVtVGFibGVzID0gMTA7CisgICAgICAgIHVpbnQxNl90IG51bVRhYmxlcyA9IHR5cGUgPT0g
VHlwZTo6T3BlblR5cGUgPyAxMCA6IDEyOwogICAgICAgICB1aW50MTZfdCByb3VuZGVkTnVtVGFi
bGVzID0gcm91bmREb3duVG9Qb3dlck9mVHdvKG51bVRhYmxlcyk7CiAgICAgICAgIHVpbnQxNl90
IHNlYXJjaFJhbmdlID0gcm91bmRlZE51bVRhYmxlcyAqIDE2OyAvLyBzZWFyY2hSYW5nZTogIihN
YXhpbXVtIHBvd2VyIG9mIDIgPD0gbnVtVGFibGVzKSB4IDE2LiIKIAotICAgICAgICByZXN1bHQu
cHVzaF9iYWNrKCdPJyk7Ci0gICAgICAgIHJlc3VsdC5wdXNoX2JhY2soJ1QnKTsKLSAgICAgICAg
cmVzdWx0LnB1c2hfYmFjaygnVCcpOwotICAgICAgICByZXN1bHQucHVzaF9iYWNrKCdPJyk7Cisg
ICAgICAgIGlmICh0eXBlID09IFR5cGU6Ok9wZW5UeXBlKSB7CisgICAgICAgICAgICByZXN1bHQu
cHVzaF9iYWNrKCdPJyk7CisgICAgICAgICAgICByZXN1bHQucHVzaF9iYWNrKCdUJyk7CisgICAg
ICAgICAgICByZXN1bHQucHVzaF9iYWNrKCdUJyk7CisgICAgICAgICAgICByZXN1bHQucHVzaF9i
YWNrKCdPJyk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICByZXN1bHQucHVzaF9iYWNr
KCd0Jyk7CisgICAgICAgICAgICByZXN1bHQucHVzaF9iYWNrKCdyJyk7CisgICAgICAgICAgICBy
ZXN1bHQucHVzaF9iYWNrKCd1Jyk7CisgICAgICAgICAgICByZXN1bHQucHVzaF9iYWNrKCdlJyk7
CisgICAgICAgIH0KICAgICAgICAgYXBwZW5kMTYobnVtVGFibGVzKTsKICAgICAgICAgYXBwZW5k
MTYoc2VhcmNoUmFuZ2UpOwogICAgICAgICBhcHBlbmQxNihpbnRlZ3JhbExvZzIocm91bmRlZE51
bVRhYmxlcykpOyAvLyBlbnRyeVNlbGVjdG9yOiAiTG9nMihtYXhpbXVtIHBvd2VyIG9mIDIgPD0g
bnVtVGFibGVzKS4iCkBAIC0yMzEsMTUgKzMwNCwyNSBAQCBwdWJsaWM6CiAgICAgICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgZGlyZWN0b3J5RW50cnlTaXplICogbnVtVGFibGVzOyArK2kpCiAg
ICAgICAgICAgICByZXN1bHQucHVzaF9iYWNrKDApOwogCi0gICAgICAgIGFwcGVuZFRhYmxlKCJD
RkYgIiwgJkdlbmVyYXRvcjo6YXBwZW5kQ0ZGVGFibGUpOwotICAgICAgICBhcHBlbmRUYWJsZSgi
R1NVQiIsICZHZW5lcmF0b3I6OmFwcGVuZEdTVUJUYWJsZSk7CisgICAgICAgIGlmICh0eXBlID09
IFR5cGU6Ok9wZW5UeXBlKSB7CisgICAgICAgICAgICBhcHBlbmRUYWJsZSgiQ0ZGICIsICZHZW5l
cmF0b3I6OmFwcGVuZENGRlRhYmxlKTsKKyAgICAgICAgICAgIGFwcGVuZFRhYmxlKCJHU1VCIiwg
JkdlbmVyYXRvcjo6YXBwZW5kR1NVQlRhYmxlKTsKKyAgICAgICAgfQogICAgICAgICBhcHBlbmRU
YWJsZSgiT1MvMiIsICZHZW5lcmF0b3I6OmFwcGVuZE9TMlRhYmxlKTsKICAgICAgICAgYXBwZW5k
VGFibGUoImNtYXAiLCAmR2VuZXJhdG9yOjphcHBlbmRDTUFQVGFibGUpOworICAgICAgICBpZiAo
dHlwZSA9PSBUeXBlOjpUcnVlVHlwZSkgeworICAgICAgICAgICAgYXBwZW5kVGFibGUoImZlYXQi
LCAmR2VuZXJhdG9yOjphcHBlbmRGRUFUVGFibGUpOworICAgICAgICAgICAgYXBwZW5kVGFibGUo
ImdseWYiLCAmR2VuZXJhdG9yOjphcHBlbmRHTFlGVGFibGUpOworICAgICAgICB9CiAgICAgICAg
IGF1dG8gaGVhZFRhYmxlT2Zmc2V0ID0gcmVzdWx0LnNpemUoKTsKICAgICAgICAgYXBwZW5kVGFi
bGUoImhlYWQiLCAmR2VuZXJhdG9yOjphcHBlbmRIRUFEVGFibGUpOwogICAgICAgICBhcHBlbmRU
YWJsZSgiaGhlYSIsICZHZW5lcmF0b3I6OmFwcGVuZEhIRUFUYWJsZSk7CiAgICAgICAgIGFwcGVu
ZFRhYmxlKCJobXR4IiwgJkdlbmVyYXRvcjo6YXBwZW5kSE1UWFRhYmxlKTsKKyAgICAgICAgaWYg
KHR5cGUgPT0gVHlwZTo6VHJ1ZVR5cGUpCisgICAgICAgICAgICBhcHBlbmRUYWJsZSgibG9jYSIs
ICZHZW5lcmF0b3I6OmFwcGVuZExPQ0FUYWJsZSk7CiAgICAgICAgIGFwcGVuZFRhYmxlKCJtYXhw
IiwgJkdlbmVyYXRvcjo6YXBwZW5kTUFYUFRhYmxlKTsKKyAgICAgICAgaWYgKHR5cGUgPT0gVHlw
ZTo6VHJ1ZVR5cGUpCisgICAgICAgICAgICBhcHBlbmRUYWJsZSgibW9yeCIsICZHZW5lcmF0b3I6
OmFwcGVuZE1PUlhUYWJsZSk7CiAgICAgICAgIGFwcGVuZFRhYmxlKCJuYW1lIiwgJkdlbmVyYXRv
cjo6YXBwZW5kTkFNRVRhYmxlKTsKICAgICAgICAgYXBwZW5kVGFibGUoInBvc3QiLCAmR2VuZXJh
dG9yOjphcHBlbmRQT1NUVGFibGUpOwogCkBAIC0yNDgsNiArMzMxLDcgQEAgcHVibGljOgogICAg
ICAgICAvLyBjaGVja3N1bUFkanVzdG1lbnQ6ICJUbyBjb21wdXRlOiBzZXQgaXQgdG8gMCwgY2Fs
Y3VsYXRlIHRoZSBjaGVja3N1bSBmb3IgdGhlICdoZWFkJyB0YWJsZSBhbmQgcHV0IGl0IGluIHRo
ZSB0YWJsZSBkaXJlY3RvcnksCiAgICAgICAgIC8vIHN1bSB0aGUgZW50aXJlIGZvbnQgYXMgdWlu
dDMyLCB0aGVuIHN0b3JlIEIxQjBBRkJBIC0gc3VtLiBUaGUgY2hlY2tzdW0gZm9yIHRoZSAnaGVh
ZCcgdGFibGUgd2lsbCBub3cgYmUgd3JvbmcuIFRoYXQgaXMgT0suIgogICAgICAgICBvdmVyd3Jp
dGUzMihoZWFkVGFibGVPZmZzZXQgKyA4LCAweEIxQjBBRkJBVSAtIGNhbGN1bGF0ZUNoZWNrc3Vt
KDAsIHJlc3VsdC5zaXplKCkpKTsKKwogICAgICAgICByZXR1cm4gc3RkOjptb3ZlKHJlc3VsdCk7
CiAgICAgfQogCkBAIC00MTgsOSArNTAyLDkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGFwcGVu
ZDE2KGkpOwogCiAgICAgICAgIC8vIENoYXJTdHJpbmdzIElOREVYCi0gICAgICAgIHN0ZDo6dmVj
dG9yPHVpbnQ4X3Q+IGJveENoYXJTdHJpbmcgPSBnZW5lcmF0ZUJveENoYXJTdHJpbmcoKTsKLSAg
ICAgICAgc3RkOjp2ZWN0b3I8dWludDhfdD4gY2hlY2tDaGFyU3RyaW5nID0gZ2VuZXJhdGVDaGVj
a0NoYXJTdHJpbmcoKTsKLSAgICAgICAgc3RkOjp2ZWN0b3I8dWludDhfdD4geENoYXJTdHJpbmcg
PSBnZW5lcmF0ZVhDaGFyU3RyaW5nKCk7CisgICAgICAgIHN0ZDo6dmVjdG9yPHVpbnQ4X3Q+IGJv
eENoYXJTdHJpbmcgPSBnZW5lcmF0ZUJveENoYXJTdHJpbmc8Q0ZGQnVpbGRlcj4oKTsKKyAgICAg
ICAgc3RkOjp2ZWN0b3I8dWludDhfdD4gY2hlY2tDaGFyU3RyaW5nID0gZ2VuZXJhdGVDaGVja0No
YXJTdHJpbmc8Q0ZGQnVpbGRlcj4oKTsKKyAgICAgICAgc3RkOjp2ZWN0b3I8dWludDhfdD4geENo
YXJTdHJpbmcgPSBnZW5lcmF0ZVhDaGFyU3RyaW5nPENGRkJ1aWxkZXI+KCk7CiAgICAgICAgIGFz
c2VydChudW1HbHlwaHMgPiAyNik7CiAgICAgICAgIG92ZXJ3cml0ZTMyKGNoYXJzdHJpbmdzT2Zm
c2V0TG9jYXRpb24sIHN0YXRpY19jYXN0PHVpbnQzMl90PihyZXN1bHQuc2l6ZSgpIC0gc3RhcnRp
bmdPZmZzZXQpKTsKICAgICAgICAgYXBwZW5kMTYobnVtR2x5cGhzKTsKQEAgLTQzNyw2ICs1MjEs
MTA4IEBAIHByaXZhdGU6CiAgICAgICAgIH0KICAgICB9CiAKKyAgICAvLyBLZWVwIGluIHN5bmMg
d2l0aCBsb2NhCisgICAgdm9pZCBhcHBlbmRHTFlGVGFibGUoKQorICAgIHsKKyAgICAgICAgc3Rk
Ojp2ZWN0b3I8dWludDhfdD4gYm94Q2hhclN0cmluZyA9IGdlbmVyYXRlQm94Q2hhclN0cmluZzxH
TFlGQnVpbGRlcj4oKTsKKyAgICAgICAgc3RkOjp2ZWN0b3I8dWludDhfdD4gY2hlY2tDaGFyU3Ry
aW5nID0gZ2VuZXJhdGVDaGVja0NoYXJTdHJpbmc8R0xZRkJ1aWxkZXI+KCk7CisgICAgICAgIHN0
ZDo6dmVjdG9yPHVpbnQ4X3Q+IHhDaGFyU3RyaW5nID0gZ2VuZXJhdGVYQ2hhclN0cmluZzxHTFlG
QnVpbGRlcj4oKTsKKyAgICAgICAgZm9yICh1aW50MTZfdCBnbHlwaCA9IDA7IGdseXBoIDwgbnVt
R2x5cGhzOyArK2dseXBoKSB7CisgICAgICAgICAgICBzdGQ6OnZlY3Rvcjx1aW50OF90PiYgY2hh
clN0cmluZyA9IGNoYXJTdHJpbmdGb3JHbHlwaChnbHlwaCwgYm94Q2hhclN0cmluZywgY2hlY2tD
aGFyU3RyaW5nLCB4Q2hhclN0cmluZyk7CisgICAgICAgICAgICByZXN1bHQuaW5zZXJ0KHJlc3Vs
dC5lbmQoKSwgY2hhclN0cmluZy5iZWdpbigpLCBjaGFyU3RyaW5nLmVuZCgpKTsKKyAgICAgICAg
fQorICAgIH0KKworICAgIC8vIEtlZXAgaW4gc3luYyB3aXRoIGdseWYKKyAgICB2b2lkIGFwcGVu
ZExPQ0FUYWJsZSgpCisgICAgeworICAgICAgICBzdGQ6OnZlY3Rvcjx1aW50OF90PiBib3hDaGFy
U3RyaW5nID0gZ2VuZXJhdGVCb3hDaGFyU3RyaW5nPEdMWUZCdWlsZGVyPigpOworICAgICAgICBz
dGQ6OnZlY3Rvcjx1aW50OF90PiBjaGVja0NoYXJTdHJpbmcgPSBnZW5lcmF0ZUNoZWNrQ2hhclN0
cmluZzxHTFlGQnVpbGRlcj4oKTsKKyAgICAgICAgc3RkOjp2ZWN0b3I8dWludDhfdD4geENoYXJT
dHJpbmcgPSBnZW5lcmF0ZVhDaGFyU3RyaW5nPEdMWUZCdWlsZGVyPigpOworICAgICAgICB1aW50
MzJfdCBpbmRleCA9IDA7CisgICAgICAgIGZvciAodWludDE2X3QgZ2x5cGggPSAwOyBnbHlwaCA8
IG51bUdseXBoczsgKytnbHlwaCkgeworICAgICAgICAgICAgYXBwZW5kMzIoaW5kZXgpOworICAg
ICAgICAgICAgaW5kZXggKz0gY2hhclN0cmluZ0ZvckdseXBoKGdseXBoLCBib3hDaGFyU3RyaW5n
LCBjaGVja0NoYXJTdHJpbmcsIHhDaGFyU3RyaW5nKS5zaXplKCk7CisgICAgICAgIH0KKyAgICAg
ICAgYXBwZW5kMzIoaW5kZXgpOworICAgIH0KKworICAgIHZvaWQgYXBwZW5kRkVBVFRhYmxlKCkK
KyAgICB7CisgICAgICAgIHNpemVfdCB0YWJsZUxvY2F0aW9uID0gcmVzdWx0LnNpemUoKTsKKyAg
ICAgICAgYXBwZW5kMzIoMHgwMDAxMDAwMCk7IC8vIFZlcnNpb24KKyAgICAgICAgYXBwZW5kMTYo
MSk7IC8vIDEgZW50cnkgaW4gdGhlIGZlYXR1cmUgbmFtZSBhcnJheQorICAgICAgICBhcHBlbmQx
NigwKTsgLy8gcmVzZXJ2ZWQKKyAgICAgICAgYXBwZW5kMzIoMCk7IC8vIHJlc2VydmVkCisKKyAg
ICAgICAgLy8gRmVhdHVyZSBuYW1lIGFycmF5CisgICAgICAgIGFwcGVuZDE2KDEwKTsgLy8gRmVh
dHVyZSB0eXBlOiBrVmVydGljYWxQb3NpdGlvblR5cGUKKyAgICAgICAgYXBwZW5kMTYoMik7IC8v
IE51bWJlciBvZiBzZXR0aW5ncworICAgICAgICBzaXplX3Qgc2V0dGluZ1RhYmxlT2Zmc2V0TG9j
YXRpb24gPSByZXN1bHQuc2l6ZSgpOworICAgICAgICBhcHBlbmQzMigwKTsgLy8gT2Zmc2V0IGlu
IGJ5dGVzIGZyb20gYmVnaW5uaW5nIG9mIHRoaXMgdGFibGUgdG8gZmVhdHVyZSdzIHNldHRpbmcg
bmFtZSBhcnJheQorICAgICAgICBhcHBlbmQxNigwKTsgLy8gRmxhZ3MKKyAgICAgICAgYXBwZW5k
MTYoMjU3KTsgLy8gSW5kZXggaW4gdGhlIG5hbWUgdGFibGUgZm9yIHRoZSBuYW1lIG9mIHRoaXMg
ZmVhdHVyZQorCisgICAgICAgIC8vIFNldHRpbmcgbmFtZSBhcnJheQorICAgICAgICBvdmVyd3Jp
dGUzMihzZXR0aW5nVGFibGVPZmZzZXRMb2NhdGlvbiwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHJl
c3VsdC5zaXplKCkgLSB0YWJsZUxvY2F0aW9uKSk7CisgICAgICAgIGFwcGVuZDE2KDApOyAvLyBT
ZXR0aW5nOiBrTm9ybWFsUG9zaXRpb25TZWxlY3RvciAoaW5pdGlhbCBzZXR0aW5nIGlzIGRlZmF1
bHQpCisgICAgICAgIGFwcGVuZDE2KDI1OCk7IC8vIEluZGV4IGluIHRoZSBuYW1lIHRhYmxlIGZv
ciB0aGUgbmFtZSBvZiB0aGlzIHNldHRpbmcKKyAgICAgICAgYXBwZW5kMTYoMik7IC8vIFNldHRp
bmc6IGtJbmZlcmlvcnNTZWxlY3RvciAoaW5pdGlhbCBzZXR0aW5nIGlzIGRlZmF1bHQpCisgICAg
ICAgIGFwcGVuZDE2KDI1OSk7IC8vIEluZGV4IGluIHRoZSBuYW1lIHRhYmxlIGZvciB0aGUgbmFt
ZSBvZiB0aGlzIHNldHRpbmcKKyAgICB9CisKKyAgICB2b2lkIGFwcGVuZE1PUlhUYWJsZSgpCisg
ICAgeworICAgICAgICBhcHBlbmQxNigyKTsgLy8gVmVyc2lvbgorICAgICAgICBhcHBlbmQxNigw
KTsgLy8gVW51c2VkCisgICAgICAgIGFwcGVuZDMyKDEpOyAvLyBOdW1iZXIgb2YgbWV0YW1vcnBo
b3NpcyBjaGFpbnMKKworICAgICAgICAvLyBNZXRhbW9ycGhvc2lzIGNoYWluIDE6CisgICAgICAg
IHNpemVfdCBjaGFpbkxvY2F0aW9uID0gcmVzdWx0LnNpemUoKTsKKyAgICAgICAgYXBwZW5kMzIo
MCk7IC8vIERlZmF1bHQgZmxhZ3MKKyAgICAgICAgc2l6ZV90IGNoYWluU2l6ZUxvY2F0aW9uID0g
cmVzdWx0LnNpemUoKTsKKyAgICAgICAgYXBwZW5kMzIoMCk7IC8vIFBsYWNlaG9sZGVyIGZvciBj
aGFpbiBsZW5ndGggaW4gYnl0ZXMgKHBhZGRlZCB0byBtdWx0aXBsZSBvZiA0KQorICAgICAgICBh
cHBlbmQzMigyKTsgLy8gTnVtYmVyIG9mIGZlYXR1cmUgc3VidGFibGUgZW50cmllcworICAgICAg
ICBhcHBlbmQzMigxKTsgLy8gTnVtYmVyIG9mIHN1YnRhYmxlcyBpbiB0aGUgY2hhaW4KKworICAg
ICAgICAvLyBGZWF0dXJlIHRhYmxlCisgICAgICAgIGFwcGVuZDE2KDEwKTsgLy8gRmVhdHVyZSB0
eXBlOiBrVmVydGljYWxQb3NpdGlvblR5cGUKKyAgICAgICAgYXBwZW5kMTYoMik7IC8vIEZlYXR1
cmUgc2VsZWN0b3I6IGtJbmZlcmlvcnNTZWxlY3RvcgorICAgICAgICBhcHBlbmQzMigxKTsgLy8g
RW5hYmxlIGZsYWdzCisgICAgICAgIGFwcGVuZDMyKDB4RkZGRkZGRkYpOyAvLyBkaXNhYmxlIGZs
YWdzCisKKyAgICAgICAgLy8gRmVhdHVyZSB0YWJsZSAyCisgICAgICAgIGFwcGVuZDE2KDApOyAv
LyBGZWF0dXJlIHR5cGU6IGtBbGxUeXBvZ3JhcGhpY0ZlYXR1cmVzVHlwZQorICAgICAgICBhcHBl
bmQxNigxKTsgLy8gRmVhdHVyZSBzZWxlY3Rvcjoga0FsbFR5cGVGZWF0dXJlc09mZlNlbGVjdG9y
CisgICAgICAgIGFwcGVuZDMyKDApOyAvLyBFbmFibGUgZmxhZ3MKKyAgICAgICAgYXBwZW5kMzIo
MCk7IC8vIGRpc2FibGUgZmxhZ3MKKworICAgICAgICAvLyBNZXRhbW9ycGhvc2lzIHN1YnRhYmxl
CisgICAgICAgIHNpemVfdCBtZXRhbW9ycGhvc2lzU3VidGFibGVTaXplTG9jYXRpb24gPSByZXN1
bHQuc2l6ZSgpOworICAgICAgICBhcHBlbmQzMigwKTsgLy8gUGxhY2Vob2xkZXIgZm9yIGNoYWlu
IGxlbmd0aCBpbiBieXRlcyAocGFkZGVkIHRvIG11bHRpcGxlIG9mIDQpCisgICAgICAgIGFwcGVu
ZDMyKDQpOyAvLyBDb3ZlcmFnZSBmbGFncyBhbmQgc3VidGFibGUgdHlwZS4gU3VidGFibGUgdHlw
ZSA0OiBOb25jb250ZXh0dWFsICgic3dhc2giKSBzdWJ0YWJsZQorICAgICAgICBhcHBlbmQzMigx
KTsgLy8gc3ViRmVhdHVyZSBmbGFncworCisgICAgICAgIC8vIE5vbi1jb250ZXh0dWFsIGdseXBo
IHN1YnN0aXR1dGlvbiBzdWJ0YWJsZQorICAgICAgICBhcHBlbmQxNig2KTsgLy8gTG9va3VwIGZv
cm1hdDogc29ydGVkIGxpc3Qgb2YgKGdseXBoIGluZGV4LCBsb29rdXAgdmFsdWUpIHBhaXJzCisg
ICAgICAgIAorICAgICAgICAvLyBCaW5TcmNoSGVhZGVyCisgICAgICAgIGFwcGVuZDE2KDQpOyAv
LyBTaXplIG9mIGEgbG9va3VwIHVuaXQgZm9yIHRoaXMgc2VhcmNoIGluIGJ5dGVzCisgICAgICAg
IGFwcGVuZDE2KDEpOyAvLyBOdW1iZXIgb2YgdW5pdHMgdG8gYmUgc2VhcmNoZWQKKyAgICAgICAg
YXBwZW5kMTYoNCk7IC8vIFNlYXJjaCByYW5nZTogVGhlIHZhbHVlIG9mIHVuaXRTaXplIHRpbWVz
IHRoZSBsYXJnZXN0IHBvd2VyIG9mIDIgdGhhdCBpcyBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gdGhl
IHZhbHVlIG9mIG5Vbml0cy4KKyAgICAgICAgYXBwZW5kMTYoMCk7IC8vIEVudHJ5IHNlbGVjdG9y
OiBUaGUgbG9nIGJhc2UgMiBvZiB0aGUgbGFyZ2VzdCBwb3dlciBvZiAyIGxlc3MgdGhhbiBvciBl
cXVhbCB0byB0aGUgdmFsdWUgb2YgblVuaXRzLgorICAgICAgICBhcHBlbmQxNigwKTsgLy8gUmFu
Z2Ugc2hpZnQ6IFRoZSB2YWx1ZSBvZiB1bml0U2l6ZSB0aW1lcyB0aGUgZGlmZmVyZW5jZSBvZiB0
aGUgdmFsdWUgb2YgblVuaXRzIG1pbnVzIHRoZSBsYXJnZXN0IHBvd2VyIG9mIDIgbGVzcyB0aGFu
IG9yIGVxdWFsIHRvIHRoZSB2YWx1ZSBvZiBuVW5pdHMuCisgICAgICAgIC8vIEVudHJpZXMKKyAg
ICAgICAgYXBwZW5kMTYoMyk7IC8vIFJlcGxhY2UgZ2x5cGggMyB3aXRoIGdseXBoIDEuCisgICAg
ICAgIGFwcGVuZDE2KDEpOworCisgICAgICAgIG92ZXJ3cml0ZTMyKG1ldGFtb3JwaG9zaXNTdWJ0
YWJsZVNpemVMb2NhdGlvbiwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHJlc3VsdC5zaXplKCkgLSBt
ZXRhbW9ycGhvc2lzU3VidGFibGVTaXplTG9jYXRpb24pKTsKKworICAgICAgICB3aGlsZSAocmVz
dWx0LnNpemUoKSAlIDQpCisgICAgICAgICAgICByZXN1bHQucHVzaF9iYWNrKDApOworICAgICAg
ICBvdmVyd3JpdGUzMihjaGFpblNpemVMb2NhdGlvbiwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHJl
c3VsdC5zaXplKCkgLSBjaGFpbkxvY2F0aW9uKSk7CisgICAgfQorCiAgICAgdm9pZCBhcHBlbmRT
dWJzdGl0dXRpb25TdWJ0YWJsZShzaXplX3Qgc3VidGFibGVSZWNvcmRMb2NhdGlvbiwgdWludDE2
X3QgaUdldFJlcGxhY2VkLCB1aW50MTZfdCByZXBsYWNlZFdpdGhNZSkKICAgICB7CiAgICAgICAg
IG92ZXJ3cml0ZTE2KHN1YnRhYmxlUmVjb3JkTG9jYXRpb24gKyA2LCByZXN1bHQuc2l6ZSgpIC0g
c3VidGFibGVSZWNvcmRMb2NhdGlvbik7CkBAIC02NzcsNyArODYzLDcgQEAgcHJpdmF0ZToKICAg
ICAgICAgYXBwZW5kMTYoMCk7IC8vIFRyYWl0cwogICAgICAgICBhcHBlbmQxNigzKTsgLy8gU21h
bGxlc3QgcmVhZGFibGUgc2l6ZSBpbiBwaXhlbHMKICAgICAgICAgYXBwZW5kMTYoMCk7IC8vIE1p
Z2h0IGNvbnRhaW4gTFRSIG9yIFJUTCBnbHlwaHMKLSAgICAgICAgYXBwZW5kMTYoMCk7IC8vIFNo
b3J0IG9mZnNldHMgaW4gdGhlICdsb2NhJyB0YWJsZS4gSG93ZXZlciwgT1RGIGZvbnRzIGRvbid0
IGhhdmUgYSAnbG9jYScgdGFibGUgc28gdGhpcyBpcyBpcnJlbGV2YW50CisgICAgICAgIGFwcGVu
ZDE2KDEpOyAvLyBMb25nIG9mZnNldHMgaW4gdGhlICdsb2NhJyB0YWJsZS4KICAgICAgICAgYXBw
ZW5kMTYoMCk7IC8vIEdseXBoIGRhdGEgZm9ybWF0CiAgICAgfQogICAgIApAQCAtNzA1LDcgKzg5
MSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBhcHBlbmRITVRYVGFibGUoKQogICAgIHsKICAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bUdseXBoczsgKytpKSB7Ci0gICAgICAgICAg
ICBhcHBlbmQxNihjbGFtcFRvPHVpbnQxNl90Pih1bml0c1BlckVtKSk7IC8vIGhvcml6b250YWwg
YWR2YW5jZQorICAgICAgICAgICAgYXBwZW5kMTYoY2xhbXBUbzx1aW50MTZfdD4oc3RhdGljX2Nh
c3Q8aW50MzJfdD4odW5pdHNQZXJFbSkpKTsgLy8gaG9yaXpvbnRhbCBhZHZhbmNlCiAgICAgICAg
ICAgICBhcHBlbmQxNihjbGFtcFRvPGludDE2X3Q+KDApKTsgLy8gbGVmdCBzaWRlIGJlYXJpbmcK
ICAgICAgICAgfQogICAgIH0KQEAgLTcyOCwyNCArOTE0LDM0IEBAIHByaXZhdGU6CiAgICAgICAg
IGFwcGVuZDE2KG51bUdseXBocyk7IC8vIE1heGltdW0gbnVtYmVyIG9mIGdseXBocyByZWZlcmVu
Y2VkIGF0IHRvcCBsZXZlbAogICAgICAgICBhcHBlbmQxNigwKTsgLy8gTm8gY29tcG91bmQgZ2x5
cGhzCiAgICAgfQorCisgICAgdm9pZCBhcHBlbmROYW1lU3VidGFibGUoY29uc3Qgc3RkOjpzdHJp
bmcmIHMsIHVpbnQxNl90IG5hbWVJZGVudGlmaWVyKQorICAgIHsKKyAgICAgICAgYXBwZW5kMTYo
MCk7IC8vIFVuaWNvZGUKKyAgICAgICAgYXBwZW5kMTYoMyk7IC8vIFVuaWNvZGUgdmVyc2lvbiAy
LjAgb3IgbGF0ZXIKKyAgICAgICAgYXBwZW5kMTYoMCk7IC8vIExhbmd1YWdlCisgICAgICAgIGFw
cGVuZDE2KG5hbWVJZGVudGlmaWVyKTsgLy8gTmFtZSBpZGVudGlmaWVyCisgICAgICAgIGFwcGVu
ZDE2KHMubGVuZ3RoKCkpOworICAgICAgICBhcHBlbmQxNihtX25hbWVPZmZzZXQpOyAvLyBPZmZz
ZXQgaW50byBuYW1lIGRhdGEKKyAgICAgICAgbV9uYW1lT2Zmc2V0ICs9IHMuc2l6ZSgpICogMjsg
Ly8gQ29kZSB1bml0cyBnZXQgMiBieXRlcyBlYWNoCisgICAgfQogICAgIAogICAgIHZvaWQgYXBw
ZW5kTkFNRVRhYmxlKCkKICAgICB7Ci0gICAgICAgIHN0ZDo6c3RyaW5nIGZvbnROYW1lID0gIk15
bGVzRm9udCI7CisgICAgICAgIHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPiBuYW1lcyB7eyAiTXls
ZXNGb250IiwgIkZlYXR1cmVTZWxlY3RvciIsICJGZWF0dXJlT2ZmIiwgIkZlYXR1cmVPbiIgfX07
CisgICAgICAgIHN0ZDo6dmVjdG9yPHVpbnQxNl90PiBuYW1lSWRlbnRpZmllcnMge3sgMSwgMjU3
LCAyNTgsIDI1OSB9fTsgLy8gMTogRm9udCBGYW1pbHkKIAogICAgICAgICBhcHBlbmQxNigwKTsg
Ly8gRm9ybWF0IHNlbGVjdG9yCi0gICAgICAgIGFwcGVuZDE2KDEpOyAvLyBOdW1iZXIgb2YgbmFt
ZSByZWNvcmRzIGluIHRhYmxlCi0gICAgICAgIGFwcGVuZDE2KDE4KTsgLy8gT2Zmc2V0IGluIGJ5
dGVzIHRvIHRoZSBiZWdpbm5pbmcgb2YgbmFtZSBjaGFyYWN0ZXIgc3RyaW5ncworICAgICAgICBh
cHBlbmQxNihuYW1lcy5zaXplKCkpOyAvLyBOdW1iZXIgb2YgbmFtZSByZWNvcmRzIGluIHRhYmxl
CisgICAgICAgIGFwcGVuZDE2KDYgKyAxMiAqIG5hbWVzLnNpemUoKSk7IC8vIE9mZnNldCBpbiBi
eXRlcyB0byB0aGUgYmVnaW5uaW5nIG9mIG5hbWUgY2hhcmFjdGVyIHN0cmluZ3MKIAotICAgICAg
ICBhcHBlbmQxNigwKTsgLy8gVW5pY29kZQotICAgICAgICBhcHBlbmQxNigzKTsgLy8gVW5pY29k
ZSB2ZXJzaW9uIDIuMCBvciBsYXRlcgotICAgICAgICBhcHBlbmQxNigwKTsgLy8gTGFuZ3VhZ2UK
LSAgICAgICAgYXBwZW5kMTYoMSk7IC8vIE5hbWUgaWRlbnRpZmllci4gMSA9IEZvbnQgZmFtaWx5
Ci0gICAgICAgIGFwcGVuZDE2KGZvbnROYW1lLmxlbmd0aCgpKTsKLSAgICAgICAgYXBwZW5kMTYo
MCk7IC8vIE9mZnNldCBpbnRvIG5hbWUgZGF0YQorICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IG5hbWVzLnNpemUoKTsgKytpKQorICAgICAgICAgICAgYXBwZW5kTmFtZVN1YnRhYmxlKG5h
bWVzW2ldLCBuYW1lSWRlbnRpZmllcnNbaV0pOwogCi0gICAgICAgIGZvciAoYXV0byBjb2RlVW5p
dCA6IGZvbnROYW1lKQotICAgICAgICAgICAgYXBwZW5kMTYoY29kZVVuaXQpOworICAgICAgICBm
b3IgKGF1dG8mIHMgOiBuYW1lcykgeworICAgICAgICAgICAgZm9yIChhdXRvIGNvZGVVbml0IDog
cykKKyAgICAgICAgICAgICAgICBhcHBlbmQxNihjb2RlVW5pdCk7CisgICAgICAgIH0KICAgICB9
CiAgICAgCiAgICAgdm9pZCBhcHBlbmRQT1NUVGFibGUoKQpAQCAtNzk2LDEwICs5OTIsMTEgQEAg
cHJpdmF0ZToKICAgICB9CiAKICAgICB1bnNpZ25lZCBtX3RhYmxlc0FwcGVuZGVkQ291bnQgeyAw
IH07CisgICAgdW5zaWduZWQgbV9uYW1lT2Zmc2V0IHsgMCB9OwogICAgIHN0ZDo6dmVjdG9yPHVp
bnQ4X3Q+IHJlc3VsdDsKIH07CiAKLXN0ZDo6dmVjdG9yPHVpbnQ4X3Q+IGdlbmVyYXRlRm9udCgp
CitzdGQ6OnZlY3Rvcjx1aW50OF90PiBnZW5lcmF0ZUZvbnQoVHlwZSB0eXBlKQogewotICAgIHJl
dHVybiBHZW5lcmF0b3IoKS5nZW5lcmF0ZSgpOworICAgIHJldHVybiBHZW5lcmF0b3IoKS5nZW5l
cmF0ZSh0eXBlKTsKIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL0ZvbnRXaXRoRmVhdHVyZXMvRm9udFdp
dGhGZWF0dXJlcy9Gb250Q3JlYXRvci5oIGIvVG9vbHMvRm9udFdpdGhGZWF0dXJlcy9Gb250V2l0
aEZlYXR1cmVzL0ZvbnRDcmVhdG9yLmgKaW5kZXggYjE5MjA4NjdiOTc5ZjczN2QxNmIwM2E5MTMy
YzEwMGMwZTM4ZDMzMy4uYzNmNTYzOGM5ZDJkMDc0MTdiODhhYTcxODRmMjkyODY0YjE1MGE4OCAx
MDA2NDQKLS0tIGEvVG9vbHMvRm9udFdpdGhGZWF0dXJlcy9Gb250V2l0aEZlYXR1cmVzL0ZvbnRD
cmVhdG9yLmgKKysrIGIvVG9vbHMvRm9udFdpdGhGZWF0dXJlcy9Gb250V2l0aEZlYXR1cmVzL0Zv
bnRDcmVhdG9yLmgKQEAgLTI4LDYgKzI4LDExIEBACiAKICNpbmNsdWRlIDx2ZWN0b3I+CiAKLXN0
ZDo6dmVjdG9yPHVpbnQ4X3Q+IGdlbmVyYXRlRm9udCgpOworZW51bSBjbGFzcyBUeXBlIHsKKyAg
ICBPcGVuVHlwZSwKKyAgICBUcnVlVHlwZQorfTsKKworc3RkOjp2ZWN0b3I8dWludDhfdD4gZ2Vu
ZXJhdGVGb250KFR5cGUpOwogCiAjZW5kaWYgLyogRm9udENyZWF0b3JfaCAqLwpkaWZmIC0tZ2l0
IGEvVG9vbHMvRm9udFdpdGhGZWF0dXJlcy9Gb250V2l0aEZlYXR1cmVzL21haW4uY3BwIGIvVG9v
bHMvRm9udFdpdGhGZWF0dXJlcy9Gb250V2l0aEZlYXR1cmVzL21haW4uY3BwCmluZGV4IDE2MmVk
Zjc0NzUzNjYyN2I0NTc2NTgzNjJhYzc1ZjBmMzM3NDU1NzcuLmQ4ZTY1MGUyMGFiZTYyZGRjNDkx
NjIyYTU0ZTVhMmE1MDI2NzI4YTggMTAwNjQ0Ci0tLSBhL1Rvb2xzL0ZvbnRXaXRoRmVhdHVyZXMv
Rm9udFdpdGhGZWF0dXJlcy9tYWluLmNwcAorKysgYi9Ub29scy9Gb250V2l0aEZlYXR1cmVzL0Zv
bnRXaXRoRmVhdHVyZXMvbWFpbi5jcHAKQEAgLTMyLDEyICszMiwzMiBAQAogI2luY2x1ZGUgPElt
YWdlSU8vSW1hZ2VJTy5oPgogI2luY2x1ZGUgPGZzdHJlYW0+CiAKLXZvaWQgZHJhd1RleHRXaXRo
RmVhdHVyZShDR0NvbnRleHRSZWYgY29udGV4dCwgQ1RGb250RGVzY3JpcHRvclJlZiBmb250RGVz
Y3JpcHRvciwgQ0ZTdHJpbmdSZWYgZmVhdHVyZSwgaW50IHZhbHVlLCBDR1BvaW50IGxvY2F0aW9u
KQorc3RhdGljIENURm9udERlc2NyaXB0b3JSZWYgY29uc3RydWN0Rm9udFdpdGhUcnVlVHlwZUZl
YXR1cmUoQ1RGb250RGVzY3JpcHRvclJlZiBmb250RGVzY3JpcHRvciwgaW50IHR5cGUsIGludCBz
ZWxlY3RvcikKIHsKLSAgICBDR0Zsb2F0IGZvbnRTaXplID0gMjU7Ci0gICAgQ0dDb250ZXh0U2V0
VGV4dE1hdHJpeChjb250ZXh0LCBDR0FmZmluZVRyYW5zZm9ybVNjYWxlKENHQWZmaW5lVHJhbnNm
b3JtSWRlbnRpdHksIDEsIDEpKTsKLSAgICBDR0NvbnRleHRTZXRUZXh0UG9zaXRpb24oY29udGV4
dCwgbG9jYXRpb24ueCwgbG9jYXRpb24ueSk7CisgICAgQ0ZOdW1iZXJSZWYgdHlwZVZhbHVlID0g
Q0ZOdW1iZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwga0NGTnVtYmVySW50VHlwZSwgJnR5
cGUpOworICAgIENGTnVtYmVyUmVmIHNlbGVjdG9yVmFsdWUgPSBDRk51bWJlckNyZWF0ZShrQ0ZB
bGxvY2F0b3JEZWZhdWx0LCBrQ0ZOdW1iZXJJbnRUeXBlLCAmc2VsZWN0b3IpOworICAgIENGVHlw
ZVJlZiBmZWF0dXJlRGljdGlvbmFyeUtleXNbXSA9IHsga0NURm9udEZlYXR1cmVUeXBlSWRlbnRp
ZmllcktleSwga0NURm9udEZlYXR1cmVTZWxlY3RvcklkZW50aWZpZXJLZXkgfTsKKyAgICBDRlR5
cGVSZWYgZmVhdHVyZURpY3Rpb25hcnlWYWx1ZXNbXSA9IHsgdHlwZVZhbHVlLCBzZWxlY3RvclZh
bHVlIH07CisgICAgQ0ZEaWN0aW9uYXJ5UmVmIGZlYXR1cmVEaWN0aW9uYXJ5ID0gQ0ZEaWN0aW9u
YXJ5Q3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGZlYXR1cmVEaWN0aW9uYXJ5S2V5cywgZmVh
dHVyZURpY3Rpb25hcnlWYWx1ZXMsIDIsICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywg
JmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpOworICAgIENGUmVsZWFzZSh0eXBlVmFs
dWUpOworICAgIENGUmVsZWFzZShzZWxlY3RvclZhbHVlKTsKKworICAgIENGVHlwZVJlZiBmZWF0
dXJlU2V0dGluZ3NWYWx1ZXNbXSA9IHsgZmVhdHVyZURpY3Rpb25hcnkgfTsKKyAgICBDRkFycmF5
UmVmIGZvbnRGZWF0dXJlU2V0dGluZ3MgPSBDRkFycmF5Q3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1
bHQsIGZlYXR1cmVTZXR0aW5nc1ZhbHVlcywgMSwgJmtDRlR5cGVBcnJheUNhbGxCYWNrcyk7Cisg
ICAgQ0ZSZWxlYXNlKGZlYXR1cmVEaWN0aW9uYXJ5KTsKKworICAgIENGVHlwZVJlZiBmb250RGVz
Y3JpcHRvcktleXNbXSA9IHsga0NURm9udEZlYXR1cmVTZXR0aW5nc0F0dHJpYnV0ZSB9OworICAg
IENGVHlwZVJlZiBmb250RGVzY3JpcHRvclZhbHVlc1tdID0geyBmb250RmVhdHVyZVNldHRpbmdz
IH07CisgICAgQ0ZEaWN0aW9uYXJ5UmVmIGZvbnREZXNjcmlwdG9yQXR0cmlidXRlcyA9IENGRGlj
dGlvbmFyeUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBmb250RGVzY3JpcHRvcktleXMsIGZv
bnREZXNjcmlwdG9yVmFsdWVzLCAxLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3MsICZr
Q0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKTsKKyAgICBDRlJlbGVhc2UoZm9udEZlYXR1
cmVTZXR0aW5ncyk7CiAKKyAgICBDVEZvbnREZXNjcmlwdG9yUmVmIG1vZGlmaWVkRm9udERlc2Ny
aXB0b3IgPSBDVEZvbnREZXNjcmlwdG9yQ3JlYXRlQ29weVdpdGhBdHRyaWJ1dGVzKGZvbnREZXNj
cmlwdG9yLCBmb250RGVzY3JpcHRvckF0dHJpYnV0ZXMpOworICAgIENGUmVsZWFzZShmb250RGVz
Y3JpcHRvckF0dHJpYnV0ZXMpOworICAgIHJldHVybiBtb2RpZmllZEZvbnREZXNjcmlwdG9yOwor
fQorCitzdGF0aWMgQ1RGb250RGVzY3JpcHRvclJlZiBjb25zdHJ1Y3RGb250V2l0aE9wZW5UeXBl
RmVhdHVyZShDVEZvbnREZXNjcmlwdG9yUmVmIGZvbnREZXNjcmlwdG9yLCBDRlN0cmluZ1JlZiBm
ZWF0dXJlLCBpbnQgdmFsdWUpCit7CiAgICAgQ0ZOdW1iZXJSZWYgZmVhdHVyZVZhbHVlID0gQ0ZO
dW1iZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwga0NGTnVtYmVySW50VHlwZSwgJnZhbHVl
KTsKICAgICBDRlR5cGVSZWYgZmVhdHVyZURpY3Rpb25hcnlLZXlzW10gPSB7IGtDVEZvbnRPcGVu
VHlwZUZlYXR1cmVUYWcsIGtDVEZvbnRPcGVuVHlwZUZlYXR1cmVWYWx1ZSB9OwogICAgIENGVHlw
ZVJlZiBmZWF0dXJlRGljdGlvbmFyeVZhbHVlc1tdID0geyBmZWF0dXJlLCBmZWF0dXJlVmFsdWUg
fTsKQEAgLTU1LDE0ICs3NSwyMCBAQCB2b2lkIGRyYXdUZXh0V2l0aEZlYXR1cmUoQ0dDb250ZXh0
UmVmIGNvbnRleHQsIENURm9udERlc2NyaXB0b3JSZWYgZm9udERlc2NyaXB0bwogCiAgICAgQ1RG
b250RGVzY3JpcHRvclJlZiBtb2RpZmllZEZvbnREZXNjcmlwdG9yID0gQ1RGb250RGVzY3JpcHRv
ckNyZWF0ZUNvcHlXaXRoQXR0cmlidXRlcyhmb250RGVzY3JpcHRvciwgZm9udERlc2NyaXB0b3JB
dHRyaWJ1dGVzKTsKICAgICBDRlJlbGVhc2UoZm9udERlc2NyaXB0b3JBdHRyaWJ1dGVzKTsKKyAg
ICByZXR1cm4gbW9kaWZpZWRGb250RGVzY3JpcHRvcjsKK30KIAotICAgIENURm9udFJlZiBmb250
ID0gQ1RGb250Q3JlYXRlV2l0aEZvbnREZXNjcmlwdG9yKG1vZGlmaWVkRm9udERlc2NyaXB0b3Is
IGZvbnRTaXplLCBudWxscHRyKTsKLSAgICBDRlJlbGVhc2UobW9kaWZpZWRGb250RGVzY3JpcHRv
cik7CitzdGF0aWMgdm9pZCBkcmF3VGV4dChDR0NvbnRleHRSZWYgY29udGV4dCwgQ1RGb250RGVz
Y3JpcHRvclJlZiBmb250RGVzY3JpcHRvciwgQ0ZTdHJpbmdSZWYgcHJlZml4LCBDR1BvaW50IGxv
Y2F0aW9uKQoreworICAgIENHQ29udGV4dFNldFRleHRNYXRyaXgoY29udGV4dCwgQ0dBZmZpbmVU
cmFuc2Zvcm1TY2FsZShDR0FmZmluZVRyYW5zZm9ybUlkZW50aXR5LCAxLCAxKSk7CisgICAgQ0dD
b250ZXh0U2V0VGV4dFBvc2l0aW9uKGNvbnRleHQsIGxvY2F0aW9uLngsIGxvY2F0aW9uLnkpOwor
CisgICAgQ0dGbG9hdCBmb250U2l6ZSA9IDI1OworICAgIENURm9udFJlZiBmb250ID0gQ1RGb250
Q3JlYXRlV2l0aEZvbnREZXNjcmlwdG9yKGZvbnREZXNjcmlwdG9yLCBmb250U2l6ZSwgbnVsbHB0
cik7CiAKICAgICBDRk11dGFibGVTdHJpbmdSZWYgc3RyaW5nID0gQ0ZTdHJpbmdDcmVhdGVNdXRh
YmxlKGtDRkFsbG9jYXRvckRlZmF1bHQsIDApOwotICAgIENGU3RyaW5nQXBwZW5kKHN0cmluZywg
ZmVhdHVyZSk7Ci0gICAgQ0ZTdHJpbmdBcHBlbmQoc3RyaW5nLCB2YWx1ZSA/IENGU1RSKCIgIChv
bikiKSA6IENGU1RSKCIgKG9mZikiKSk7Ci0gICAgQ0ZTdHJpbmdBcHBlbmQoc3RyaW5nLCBDRlNU
UigiOiBBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6
IikpOworICAgIENGU3RyaW5nQXBwZW5kKHN0cmluZywgcHJlZml4KTsKKyAgICBDRlN0cmluZ0Fw
cGVuZChzdHJpbmcsIENGU1RSKCJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWpr
bG1ub3BxcnN0dXZ3eHl6IikpOwogCiAgICAgQ0dDb2xvclJlZiByZWQgPSBDR0NvbG9yQ3JlYXRl
R2VuZXJpY1JHQigxLCAwLCAwLCAxKTsKICAgICBDRlR5cGVSZWYgbGluZUtleXNbXSA9IHsga0NU
Rm9yZWdyb3VuZENvbG9yQXR0cmlidXRlTmFtZSB9OwpAQCAtNzgsMTAgKzEwNCwxMCBAQCB2b2lk
IGRyYXdUZXh0V2l0aEZlYXR1cmUoQ0dDb250ZXh0UmVmIGNvbnRleHQsIENURm9udERlc2NyaXB0
b3JSZWYgZm9udERlc2NyaXB0bwogICAgIENGUmVsZWFzZShhdHRyaWJ1dGVkU3RyaW5nKTsKIAog
ICAgIENURm9udFJlZiBtb25vc3BhY2VGb250ID0gQ1RGb250Q3JlYXRlV2l0aE5hbWUoQ0ZTVFIo
IkNvdXJpZXIiKSwgZm9udFNpemUsIG51bGxwdHIpOwotICAgIENGQXR0cmlidXRlZFN0cmluZ1Nl
dEF0dHJpYnV0ZShtdXRhYmxlQXR0cmlidXRlZFN0cmluZywgQ0ZSYW5nZU1ha2UoMCwgMTIpLCBr
Q1RGb250QXR0cmlidXRlTmFtZSwgbW9ub3NwYWNlRm9udCk7CisgICAgQ0ZBdHRyaWJ1dGVkU3Ry
aW5nU2V0QXR0cmlidXRlKG11dGFibGVBdHRyaWJ1dGVkU3RyaW5nLCBDRlJhbmdlTWFrZSgwLCBD
RlN0cmluZ0dldExlbmd0aChwcmVmaXgpKSwga0NURm9udEF0dHJpYnV0ZU5hbWUsIG1vbm9zcGFj
ZUZvbnQpOwogICAgIENGUmVsZWFzZShtb25vc3BhY2VGb250KTsKIAotICAgIENGQXR0cmlidXRl
ZFN0cmluZ1NldEF0dHJpYnV0ZShtdXRhYmxlQXR0cmlidXRlZFN0cmluZywgQ0ZSYW5nZU1ha2Uo
MTIsIDUyKSwga0NURm9udEF0dHJpYnV0ZU5hbWUsIGZvbnQpOworICAgIENGQXR0cmlidXRlZFN0
cmluZ1NldEF0dHJpYnV0ZShtdXRhYmxlQXR0cmlidXRlZFN0cmluZywgQ0ZSYW5nZU1ha2UoQ0ZT
dHJpbmdHZXRMZW5ndGgocHJlZml4KSwgQ0ZTdHJpbmdHZXRMZW5ndGgoc3RyaW5nKSAtIENGU3Ry
aW5nR2V0TGVuZ3RoKHByZWZpeCkpLCBrQ1RGb250QXR0cmlidXRlTmFtZSwgZm9udCk7CiAgICAg
Q0ZSZWxlYXNlKGZvbnQpOwogCiAgICAgQ1RMaW5lUmVmIGxpbmUgPSBDVExpbmVDcmVhdGVXaXRo
QXR0cmlidXRlZFN0cmluZyhtdXRhYmxlQXR0cmlidXRlZFN0cmluZyk7CkBAIC05OCw4ICsxMjQs
OSBAQCBpbnQgbWFpbihpbnQgYXJnYywgY29uc3QgY2hhciAqIGFyZ3ZbXSkKICAgICBDR0NvbG9y
U3BhY2VSZWYgY29sb3JTcGFjZSA9IENHQ29sb3JTcGFjZUNyZWF0ZURldmljZVJHQigpOwogICAg
IENHQ29udGV4dFJlZiBjb250ZXh0ID0gQ0dCaXRtYXBDb250ZXh0Q3JlYXRlKG51bGxwdHIsIHdp
ZHRoLCBoZWlnaHQsIDgsIHdpZHRoICogNCwgY29sb3JTcGFjZSwga0NHSW1hZ2VBbHBoYU5vbmVT
a2lwTGFzdCk7CiAgICAgQ0dDb2xvclNwYWNlUmVsZWFzZShjb2xvclNwYWNlKTsKLSAgICBjb25z
dCBzdGQ6OnZlY3Rvcjx1aW50OF90PiBmb250VmVjdG9yID0gZ2VuZXJhdGVGb250KCk7Ci0gICAg
c3RkOjpvZnN0cmVhbSBvdXRwdXRGaWxlKCIvVm9sdW1lcy9EYXRhL2hvbWUvbW1heGZpZWxkL3Rt
cC9vdXRwdXQub3RmIiwgc3RkOjppb3M6Om91dCB8IHN0ZDo6aW9zOjpiaW5hcnkpOworICAgIFR5
cGUgdHlwZSA9IFR5cGU6OlRydWVUeXBlOworICAgIGNvbnN0IHN0ZDo6dmVjdG9yPHVpbnQ4X3Q+
IGZvbnRWZWN0b3IgPSBnZW5lcmF0ZUZvbnQodHlwZSk7CisgICAgc3RkOjpvZnN0cmVhbSBvdXRw
dXRGaWxlKCIvVm9sdW1lcy9EYXRhL2hvbWUvbW1heGZpZWxkL3RtcC9vdXRwdXQudHRmIiwgc3Rk
Ojppb3M6Om91dCB8IHN0ZDo6aW9zOjpiaW5hcnkpOwogICAgIGZvciAodWludDhfdCBiIDogZm9u
dFZlY3RvcikKICAgICAgICAgb3V0cHV0RmlsZSA8PCBiOwogICAgIG91dHB1dEZpbGUuY2xvc2Uo
KTsKQEAgLTEwOCwxNSArMTM1LDM3IEBAIGludCBtYWluKGludCBhcmdjLCBjb25zdCBjaGFyICog
YXJndltdKQogICAgIENURm9udERlc2NyaXB0b3JSZWYgZm9udERlc2NyaXB0b3IgPSBDVEZvbnRN
YW5hZ2VyQ3JlYXRlRm9udERlc2NyaXB0b3JGcm9tRGF0YShmb250RGF0YSk7CiAgICAgQ0ZSZWxl
YXNlKGZvbnREYXRhKTsKIAotICAgIENGVHlwZVJlZiBmZWF0dXJlVmFsdWVzW10gPSB7IENGU1RS
KCJsaWdhIiksIENGU1RSKCJjbGlnIiksIENGU1RSKCJkbGlnIiksIENGU1RSKCJobGlnIiksIENG
U1RSKCJjYWx0IiksIENGU1RSKCJzdWJzIiksIENGU1RSKCJzdXBzIiksIENGU1RSKCJzbWNwIiks
IENGU1RSKCJjMnNjIiksIENGU1RSKCJwY2FwIiksIENGU1RSKCJjMnBjIiksIENGU1RSKCJ1bmlj
IiksIENGU1RSKCJ0aXRsIiksIENGU1RSKCJvbnVtIiksIENGU1RSKCJwbnVtIiksIENGU1RSKCJ0
bnVtIiksIENGU1RSKCJmcmFjIiksIENGU1RSKCJhZnJjIiksIENGU1RSKCJvcmRuIiksIENGU1RS
KCJ6ZXJvIiksIENGU1RSKCJoaXN0IiksIENGU1RSKCJqcDc4IiksIENGU1RSKCJqcDgzIiksIENG
U1RSKCJqcDkwIiksIENGU1RSKCJqcDA0IiksIENGU1RSKCJzbXBsIiksIENGU1RSKCJ0cmFkIiks
IENGU1RSKCJmd2lkIiksIENGU1RSKCJwd2lkIiksIENGU1RSKCJydWJ5IikgfTsKLSAgICBDRkFy
cmF5UmVmIGZlYXR1cmVzID0gQ0ZBcnJheUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBmZWF0
dXJlVmFsdWVzLCAzMCwgJmtDRlR5cGVBcnJheUNhbGxCYWNrcyk7Ci0KLSAgICBmb3IgKENGSW5k
ZXggaSA9IDA7IGkgPCBDRkFycmF5R2V0Q291bnQoZmVhdHVyZXMpOyArK2kpIHsKLSAgICAgICAg
ZHJhd1RleHRXaXRoRmVhdHVyZShjb250ZXh0LCBmb250RGVzY3JpcHRvciwgc3RhdGljX2Nhc3Q8
Q0ZTdHJpbmdSZWY+KENGQXJyYXlHZXRWYWx1ZUF0SW5kZXgoZmVhdHVyZXMsIGkpKSwgMSwgQ0dQ
b2ludE1ha2UoMjUsIDE5NTAgLSA1MCAqIGkpKTsKLSAgICAgICAgZHJhd1RleHRXaXRoRmVhdHVy
ZShjb250ZXh0LCBmb250RGVzY3JpcHRvciwgc3RhdGljX2Nhc3Q8Q0ZTdHJpbmdSZWY+KENGQXJy
YXlHZXRWYWx1ZUF0SW5kZXgoZmVhdHVyZXMsIGkpKSwgMCwgQ0dQb2ludE1ha2UoMjUsIDE5MjUg
LSA1MCAqIGkpKTsKKyAgICBpZiAodHlwZSA9PSBUeXBlOjpPcGVuVHlwZSkgeworICAgICAgICBD
RlR5cGVSZWYgZmVhdHVyZVZhbHVlc09wZW5UeXBlW10gPSB7IENGU1RSKCJsaWdhIiksIENGU1RS
KCJjbGlnIiksIENGU1RSKCJkbGlnIiksIENGU1RSKCJobGlnIiksIENGU1RSKCJjYWx0IiksIENG
U1RSKCJzdWJzIiksIENGU1RSKCJzdXBzIiksIENGU1RSKCJzbWNwIiksIENGU1RSKCJjMnNjIiks
IENGU1RSKCJwY2FwIiksIENGU1RSKCJjMnBjIiksIENGU1RSKCJ1bmljIiksIENGU1RSKCJ0aXRs
IiksIENGU1RSKCJvbnVtIiksIENGU1RSKCJwbnVtIiksIENGU1RSKCJ0bnVtIiksIENGU1RSKCJm
cmFjIiksIENGU1RSKCJhZnJjIiksIENGU1RSKCJvcmRuIiksIENGU1RSKCJ6ZXJvIiksIENGU1RS
KCJoaXN0IiksIENGU1RSKCJqcDc4IiksIENGU1RSKCJqcDgzIiksIENGU1RSKCJqcDkwIiksIENG
U1RSKCJqcDA0IiksIENGU1RSKCJzbXBsIiksIENGU1RSKCJ0cmFkIiksIENGU1RSKCJmd2lkIiks
IENGU1RSKCJwd2lkIiksIENGU1RSKCJydWJ5IikgfTsKKyAgICAgICAgQ0ZBcnJheVJlZiBmZWF0
dXJlcyA9IENGQXJyYXlDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgZmVhdHVyZVZhbHVlc09w
ZW5UeXBlLCAzMCwgJmtDRlR5cGVBcnJheUNhbGxCYWNrcyk7CisKKyAgICAgICAgZm9yIChDRklu
ZGV4IGkgPSAwOyBpIDwgQ0ZBcnJheUdldENvdW50KGZlYXR1cmVzKTsgKytpKSB7CisgICAgICAg
ICAgICBDRlN0cmluZ1JlZiBmZWF0dXJlID0gc3RhdGljX2Nhc3Q8Q0ZTdHJpbmdSZWY+KENGQXJy
YXlHZXRWYWx1ZUF0SW5kZXgoZmVhdHVyZXMsIGkpKTsKKyAgICAgICAgICAgIENURm9udERlc2Ny
aXB0b3JSZWYgbW9kaWZpZWRGb250RGVzY3JpcHRvciA9IGNvbnN0cnVjdEZvbnRXaXRoT3BlblR5
cGVGZWF0dXJlKGZvbnREZXNjcmlwdG9yLCBmZWF0dXJlLCAxKTsKKyAgICAgICAgICAgIENGTXV0
YWJsZVN0cmluZ1JlZiBwcmVmaXggPSBDRlN0cmluZ0NyZWF0ZU11dGFibGUoa0NGQWxsb2NhdG9y
RGVmYXVsdCwgMCk7CisgICAgICAgICAgICBDRlN0cmluZ0FwcGVuZChwcmVmaXgsIGZlYXR1cmUp
OworICAgICAgICAgICAgQ0ZTdHJpbmdBcHBlbmQocHJlZml4LCBDRlNUUigiICAob24pOiAiKSk7
CisgICAgICAgICAgICBkcmF3VGV4dChjb250ZXh0LCBtb2RpZmllZEZvbnREZXNjcmlwdG9yLCBw
cmVmaXgsIENHUG9pbnRNYWtlKDI1LCAxOTUwIC0gNTAgKiBpKSk7CisgICAgICAgICAgICBDRlJl
bGVhc2UocHJlZml4KTsKKyAgICAgICAgICAgIENGUmVsZWFzZShtb2RpZmllZEZvbnREZXNjcmlw
dG9yKTsKKworICAgICAgICAgICAgbW9kaWZpZWRGb250RGVzY3JpcHRvciA9IGNvbnN0cnVjdEZv
bnRXaXRoT3BlblR5cGVGZWF0dXJlKGZvbnREZXNjcmlwdG9yLCBmZWF0dXJlLCAwKTsKKyAgICAg
ICAgICAgIHByZWZpeCA9IENGU3RyaW5nQ3JlYXRlTXV0YWJsZShrQ0ZBbGxvY2F0b3JEZWZhdWx0
LCAwKTsKKyAgICAgICAgICAgIENGU3RyaW5nQXBwZW5kKHByZWZpeCwgZmVhdHVyZSk7CisgICAg
ICAgICAgICBDRlN0cmluZ0FwcGVuZChwcmVmaXgsIENGU1RSKCIgKG9mZik6ICIpKTsKKyAgICAg
ICAgICAgIGRyYXdUZXh0KGNvbnRleHQsIG1vZGlmaWVkRm9udERlc2NyaXB0b3IsIHByZWZpeCwg
Q0dQb2ludE1ha2UoMjUsIDE5MjUgLSA1MCAqIGkpKTsKKyAgICAgICAgICAgIENGUmVsZWFzZShw
cmVmaXgpOworICAgICAgICAgICAgQ0ZSZWxlYXNlKG1vZGlmaWVkRm9udERlc2NyaXB0b3IpOwor
ICAgICAgICB9CisKKyAgICAgICAgQ0ZSZWxlYXNlKGZlYXR1cmVzKTsKKyAgICB9IGVsc2Ugewor
ICAgICAgICBpbnQgaSA9IDA7CisgICAgICAgIENURm9udERlc2NyaXB0b3JSZWYgbW9kaWZpZWRG
b250RGVzY3JpcHRvciA9IGNvbnN0cnVjdEZvbnRXaXRoVHJ1ZVR5cGVGZWF0dXJlKGZvbnREZXNj
cmlwdG9yLCBrVmVydGljYWxQb3NpdGlvblR5cGUsIGtJbmZlcmlvcnNTZWxlY3Rvcik7CisgICAg
ICAgIGRyYXdUZXh0KGNvbnRleHQsIG1vZGlmaWVkRm9udERlc2NyaXB0b3IsIENGU1RSKCJrVmVy
dGljYWxQb3NpdGlvblR5cGU6IGtJbmZlcmlvcnNTZWxlY3RvcjogIiksIENHUG9pbnRNYWtlKDI1
LCAxOTUwIC0gMjUgKiBpKSk7CisgICAgICAgIENGUmVsZWFzZShtb2RpZmllZEZvbnREZXNjcmlw
dG9yKTsKICAgICB9CiAKLSAgICBDRlJlbGVhc2UoZmVhdHVyZXMpOwogICAgIENGUmVsZWFzZShm
b250RGVzY3JpcHRvcik7CiAgICAgQ0dJbWFnZVJlZiBpbWFnZSA9IENHQml0bWFwQ29udGV4dENy
ZWF0ZUltYWdlKGNvbnRleHQpOwogICAgIENHQ29udGV4dFJlbGVhc2UoY29udGV4dCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>262565</attachid>
            <date>2015-10-06 18:16:14 -0700</date>
            <delta_ts>2015-10-07 15:40:22 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-149776-20151006181543.patch</filename>
            <type>text/plain</type>
            <size>46200</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkwNjQwCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZTFkMDgyYTI2MTE2ZDFhYzYzM2I5Nzk2YTVmODQzZWU4
NTFlNWM5MC4uZWVjNmE0ZTJlZDhjNDViYzlhZDMxNGQ5YTlmMWU0YWQwM2RjYjlkNSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDM4
IEBACiAyMDE1LTEwLTA2ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+
CiAKKyAgICAgICAgVGVzdCBmb250LXZhcmlhbnQtKiBhbmQgZm9udC1mZWF0dXJlLXNldHRpbmdz
IHdpdGggVHJ1ZVR5cGUgZm9udHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE0OTc3NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgICogRm9udFdpdGhGZWF0dXJlcy9Gb250V2l0aEZlYXR1cmVzLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogRm9udFdpdGhGZWF0dXJlcy9Gb250V2l0aEZl
YXR1cmVzL0ZvbnRDcmVhdG9yLmNwcDoKKyAgICAgICAgKENGRkJ1aWxkZXI6Om1vdmVUbyk6Cisg
ICAgICAgIChDRkZCdWlsZGVyOjpsaW5lVG8pOgorICAgICAgICAoR0xZRkJ1aWxkZXI6OkdMWUZC
dWlsZGVyKToKKyAgICAgICAgKEdMWUZCdWlsZGVyOjp0YWtlUmVzdWx0KToKKyAgICAgICAgKEdM
WUZCdWlsZGVyOjptb3ZlVG8pOgorICAgICAgICAoR0xZRkJ1aWxkZXI6OmxpbmVUbyk6CisgICAg
ICAgIChHTFlGQnVpbGRlcjo6Y2xvc2VQYXRoKToKKyAgICAgICAgKEdMWUZCdWlsZGVyOjp3cml0
ZVBvaW50KToKKyAgICAgICAgKEdMWUZCdWlsZGVyOjphcHBlbmQxNik6CisgICAgICAgIChnZW5l
cmF0ZUJveENoYXJTdHJpbmcpOgorICAgICAgICAoZ2VuZXJhdGVDaGVja0NoYXJTdHJpbmcpOgor
ICAgICAgICAoZ2VuZXJhdGVYQ2hhclN0cmluZyk6CisgICAgICAgIChHZW5lcmF0b3I6OmdlbmVy
YXRlKToKKyAgICAgICAgKEdlbmVyYXRvcjo6YXBwZW5kQ0ZGVGFibGUpOgorICAgICAgICAoR2Vu
ZXJhdG9yOjphcHBlbmRHTFlGVGFibGUpOgorICAgICAgICAoR2VuZXJhdG9yOjphcHBlbmRMT0NB
VGFibGUpOgorICAgICAgICAoR2VuZXJhdG9yOjphcHBlbmRIRUFEVGFibGUpOgorICAgICAgICAo
R2VuZXJhdG9yOjphcHBlbmRITVRYVGFibGUpOgorICAgICAgICAoZ2VuZXJhdGVGb250KToKKyAg
ICAgICAgKENGRkJ1aWxkZXI6OmN1cnZlVG9DdWJpYyk6IERlbGV0ZWQuCisgICAgICAgICogRm9u
dFdpdGhGZWF0dXJlcy9Gb250V2l0aEZlYXR1cmVzL0ZvbnRDcmVhdG9yLmg6CisgICAgICAgICog
Rm9udFdpdGhGZWF0dXJlcy9Gb250V2l0aEZlYXR1cmVzL21haW4uY3BwOgorICAgICAgICAobWFp
bik6CisKKzIwMTUtMTAtMDYgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNv
bT4KKwogICAgICAgICBQb3N0LXJldmlldyBjbGVhbnVwIGFmdGVyIHIxOTA1NzIuCiAKICAgICAg
ICAgVW5yZXZpZXdlZC4KZGlmZiAtLWdpdCBhL1Rvb2xzL0ZvbnRXaXRoRmVhdHVyZXMvRm9udFdp
dGhGZWF0dXJlcy54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvRm9udFdpdGhGZWF0
dXJlcy9Gb250V2l0aEZlYXR1cmVzLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYzVm
ZjU3MGUzOTJhMWFkMTA3MmFjYzMxMTY2ZGZhZTM1ZTcwMjk3Zi4uNDFjNzRiY2I3M2RjMDJjNzli
NDFkYjljMTkwYmFkMTRkZmVmNTkzMiAxMDA2NDQKLS0tIGEvVG9vbHMvRm9udFdpdGhGZWF0dXJl
cy9Gb250V2l0aEZlYXR1cmVzLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvVG9vbHMv
Rm9udFdpdGhGZWF0dXJlcy9Gb250V2l0aEZlYXR1cmVzLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKQEAgLTE4Niw3ICsxODYsNyBAQAogCQkJCUdDQ19XQVJOX1VOSU5JVElBTElaRURfQVVUT1Mg
PSBZRVNfQUdHUkVTU0lWRTsKIAkJCQlHQ0NfV0FSTl9VTlVTRURfRlVOQ1RJT04gPSBZRVM7CiAJ
CQkJR0NDX1dBUk5fVU5VU0VEX1ZBUklBQkxFID0gWUVTOwotCQkJCU1BQ09TWF9ERVBMT1lNRU5U
X1RBUkdFVCA9IDEwLjExOworCQkJCU1BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVCA9IDEwLjEwOwog
CQkJCU1UTF9FTkFCTEVfREVCVUdfSU5GTyA9IFlFUzsKIAkJCQlPTkxZX0FDVElWRV9BUkNIID0g
WUVTOwogCQkJCVNES1JPT1QgPSBtYWNvc3g7CkBAIC0yMjIsNyArMjIyLDcgQEAKIAkJCQlHQ0Nf
V0FSTl9VTklOSVRJQUxJWkVEX0FVVE9TID0gWUVTX0FHR1JFU1NJVkU7CiAJCQkJR0NDX1dBUk5f
VU5VU0VEX0ZVTkNUSU9OID0gWUVTOwogCQkJCUdDQ19XQVJOX1VOVVNFRF9WQVJJQUJMRSA9IFlF
UzsKLQkJCQlNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQgPSAxMC4xMTsKKwkJCQlNQUNPU1hfREVQ
TE9ZTUVOVF9UQVJHRVQgPSAxMC4xMDsKIAkJCQlNVExfRU5BQkxFX0RFQlVHX0lORk8gPSBOTzsK
IAkJCQlTREtST09UID0gbWFjb3N4OwogCQkJfTsKQEAgLTI2MSw2ICsyNjEsNyBAQAogCQkJCUMy
ODYyNkFCMUJBOTAyQjkwMDE5NjFENiAvKiBSZWxlYXNlICovLAogCQkJKTsKIAkJCWRlZmF1bHRD
b25maWd1cmF0aW9uSXNWaXNpYmxlID0gMDsKKwkJCWRlZmF1bHRDb25maWd1cmF0aW9uTmFtZSA9
IFJlbGVhc2U7CiAJCX07CiAvKiBFbmQgWENDb25maWd1cmF0aW9uTGlzdCBzZWN0aW9uICovCiAJ
fTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0ZvbnRXaXRoRmVhdHVyZXMvRm9udFdpdGhGZWF0dXJlcy9G
b250Q3JlYXRvci5jcHAgYi9Ub29scy9Gb250V2l0aEZlYXR1cmVzL0ZvbnRXaXRoRmVhdHVyZXMv
Rm9udENyZWF0b3IuY3BwCmluZGV4IDdhM2UxNDFlNTI5MDc2ZTZhM2I0Y2EzYTBiZGFjNDAxZWMx
YjgzNzYuLmE2YmViMmFiMmEwNzJmNDAxZTAxMmU3ODhjMTkyYTgzM2JlZGE3MTUgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL0ZvbnRXaXRoRmVhdHVyZXMvRm9udFdpdGhGZWF0dXJlcy9Gb250Q3JlYXRvci5j
cHAKKysrIGIvVG9vbHMvRm9udFdpdGhGZWF0dXJlcy9Gb250V2l0aEZlYXR1cmVzL0ZvbnRDcmVh
dG9yLmNwcApAQCAtODIsNyArODIsNiBAQCBzdGF0aWMgdm9pZCB3cml0ZUNGRkVuY29kZWROdW1i
ZXIoViYgdmVjdG9yLCBmbG9hdCBudW1iZXIpCiB9CiAKIHN0YXRpYyBjb25zdCBjaGFyIHJMaW5l
VG8gPSAweDA1Owotc3RhdGljIGNvbnN0IGNoYXIgcnJDdXJ2ZVRvID0gMHgwODsKIHN0YXRpYyBj
b25zdCBjaGFyIGVuZENoYXIgPSAweDBlOwogc3RhdGljIGNvbnN0IGNoYXIgck1vdmVUbyA9IDB4
MTU7CiAKQEAgLTEwMiwxNCArMTAxLDkgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gc3RkOjpt
b3ZlKHJlc3VsdCk7CiAgICAgfQogCi0gICAgdm9pZCBtb3ZlVG8oc3RkOjpwYWlyPGZsb2F0LCBm
bG9hdD4gdGFyZ2V0UG9pbnQsIGJvb2wgY2xvc2VkKQorICAgIHZvaWQgbW92ZVRvKHN0ZDo6cGFp
cjxmbG9hdCwgZmxvYXQ+IHRhcmdldFBvaW50KQogICAgIHsKLSAgICAgICAgaWYgKGNsb3NlZCAm
JiAhcmVzdWx0LmVtcHR5KCkpCi0gICAgICAgICAgICBjbG9zZVBhdGgoKTsKLQotICAgICAgICBz
dGQ6OnBhaXI8ZmxvYXQsIGZsb2F0PiBkZXN0aW5hdGlvbiA9IHRhcmdldFBvaW50OwotCi0gICAg
ICAgIHdyaXRlUG9pbnQoZGVzdGluYXRpb24pOworICAgICAgICB3cml0ZVBvaW50KHRhcmdldFBv
aW50KTsKICAgICAgICAgcmVzdWx0LnB1c2hfYmFjayhyTW92ZVRvKTsKIAogICAgICAgICBzdGFy
dGluZ1BvaW50ID0gY3VycmVudDsKQEAgLTExNywyNCArMTExLDEwIEBAIHB1YmxpYzoKIAogICAg
IHZvaWQgbGluZVRvKHN0ZDo6cGFpcjxmbG9hdCwgZmxvYXQ+IHRhcmdldFBvaW50KQogICAgIHsK
LSAgICAgICAgc3RkOjpwYWlyPGZsb2F0LCBmbG9hdD4gZGVzdGluYXRpb24gPSB0YXJnZXRQb2lu
dDsKLQotICAgICAgICB3cml0ZVBvaW50KGRlc3RpbmF0aW9uKTsKKyAgICAgICAgd3JpdGVQb2lu
dCh0YXJnZXRQb2ludCk7CiAgICAgICAgIHJlc3VsdC5wdXNoX2JhY2sockxpbmVUbyk7CiAgICAg
fQogCi0gICAgdm9pZCBjdXJ2ZVRvQ3ViaWMoc3RkOjpwYWlyPGZsb2F0LCBmbG9hdD4gcG9pbnQx
LCBzdGQ6OnBhaXI8ZmxvYXQsIGZsb2F0PiBwb2ludDIsIHN0ZDo6cGFpcjxmbG9hdCwgZmxvYXQ+
IHRhcmdldFBvaW50KQotICAgIHsKLSAgICAgICAgc3RkOjpwYWlyPGZsb2F0LCBmbG9hdD4gZGVz
dGluYXRpb24xID0gcG9pbnQxOwotICAgICAgICBzdGQ6OnBhaXI8ZmxvYXQsIGZsb2F0PiBkZXN0
aW5hdGlvbjIgPSBwb2ludDI7Ci0gICAgICAgIHN0ZDo6cGFpcjxmbG9hdCwgZmxvYXQ+IGRlc3Rp
bmF0aW9uMyA9IHRhcmdldFBvaW50OwotCi0gICAgICAgIHdyaXRlUG9pbnQoZGVzdGluYXRpb24x
KTsKLSAgICAgICAgd3JpdGVQb2ludChkZXN0aW5hdGlvbjIpOwotICAgICAgICB3cml0ZVBvaW50
KGRlc3RpbmF0aW9uMyk7Ci0gICAgICAgIHJlc3VsdC5wdXNoX2JhY2socnJDdXJ2ZVRvKTsKLSAg
ICB9Ci0KICAgICB2b2lkIGNsb3NlUGF0aCgpCiAgICAgewogICAgICAgICBpZiAoY3VycmVudCAh
PSBzdGFydGluZ1BvaW50KQpAQCAtMTU2LDEwICsxMzYsOTQgQEAgcHJpdmF0ZToKICAgICBzdGQ6
OnBhaXI8ZmxvYXQsIGZsb2F0PiBjdXJyZW50OwogfTsKIAorY2xhc3MgR0xZRkJ1aWxkZXIgewor
cHVibGljOgorICAgIEdMWUZCdWlsZGVyKGZsb2F0LCBzdGQ6OnBhaXI8ZmxvYXQsIGZsb2F0PikK
KyAgICB7CisgICAgfQorCisgICAgc3RkOjp2ZWN0b3I8dWludDhfdD4gdGFrZVJlc3VsdCgpCisg
ICAgeworICAgICAgICBzdGQ6OnZlY3Rvcjx1aW50OF90PiByZXN1bHQ7CisgICAgICAgIGFwcGVu
ZDE2KHJlc3VsdCwgZW5kUHRzT2ZDb250b3Vycy5zaXplKCkpOworICAgICAgICBhcHBlbmQxNihy
ZXN1bHQsIGNsYW1wVG88aW50MTZfdD4obWluWCkpOworICAgICAgICBhcHBlbmQxNihyZXN1bHQs
IGNsYW1wVG88aW50MTZfdD4obWluWSkpOworICAgICAgICBhcHBlbmQxNihyZXN1bHQsIGNsYW1w
VG88aW50MTZfdD4obWF4WCkpOworICAgICAgICBhcHBlbmQxNihyZXN1bHQsIGNsYW1wVG88aW50
MTZfdD4obWF4WSkpOworCisgICAgICAgIGZvciAodWludDE2X3QgcCA6IGVuZFB0c09mQ29udG91
cnMpCisgICAgICAgICAgICBhcHBlbmQxNihyZXN1bHQsIHApOworICAgICAgICBhcHBlbmQxNihy
ZXN1bHQsIDApOworICAgICAgICBmb3IgKHVpbnQ4X3QgZiA6IGZsYWdzKQorICAgICAgICAgICAg
cmVzdWx0LnB1c2hfYmFjayhmKTsKKyAgICAgICAgZm9yICh1aW50MTZfdCBjIDogeENvb3JkaW5h
dGVzKQorICAgICAgICAgICAgYXBwZW5kMTYocmVzdWx0LCBjKTsKKyAgICAgICAgZm9yICh1aW50
MTZfdCBjIDogeUNvb3JkaW5hdGVzKQorICAgICAgICAgICAgYXBwZW5kMTYocmVzdWx0LCBjKTsK
KworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIHZvaWQgbW92ZVRvKHN0ZDo6
cGFpcjxmbG9hdCwgZmxvYXQ+IHRhcmdldFBvaW50KQorICAgIHsKKyAgICAgICAgd3JpdGVQb2lu
dCh0YXJnZXRQb2ludCwgdHJ1ZSk7CisKKyAgICAgICAgc3RhcnRpbmdQb2ludCA9IGN1cnJlbnQ7
CisgICAgfQorCisgICAgdm9pZCBsaW5lVG8oc3RkOjpwYWlyPGZsb2F0LCBmbG9hdD4gdGFyZ2V0
UG9pbnQpCisgICAgeworICAgICAgICB3cml0ZVBvaW50KHRhcmdldFBvaW50LCB0cnVlKTsKKyAg
ICB9CisKKyAgICB2b2lkIGNsb3NlUGF0aCgpCisgICAgeworICAgICAgICBpZiAoY3VycmVudCAh
PSBzdGFydGluZ1BvaW50KQorICAgICAgICAgICAgbGluZVRvKHN0YXJ0aW5nUG9pbnQpOworICAg
ICAgICBlbmRQdHNPZkNvbnRvdXJzLnB1c2hfYmFjayhwb2ludENvdW50IC0gMSk7CisgICAgfQor
Citwcml2YXRlOgorICAgIHZvaWQgd3JpdGVQb2ludChzdGQ6OnBhaXI8ZmxvYXQsIGZsb2F0PiBk
ZXN0aW5hdGlvbiwgYm9vbCBvbkN1cnZlKQorICAgIHsKKyAgICAgICAgZmxhZ3MucHVzaF9iYWNr
KG9uQ3VydmUgPyAxIDogMCk7IC8vIEZsYWdzCisKKyAgICAgICAgc3RkOjpwYWlyPGZsb2F0LCBm
bG9hdD4gZGVsdGEgPSBzdGQ6Om1ha2VfcGFpcihkZXN0aW5hdGlvbi5maXJzdCAtIGN1cnJlbnQu
Zmlyc3QsIGRlc3RpbmF0aW9uLnNlY29uZCAtIGN1cnJlbnQuc2Vjb25kKTsKKyAgICAgICAgeENv
b3JkaW5hdGVzLnB1c2hfYmFjayhkZWx0YS5maXJzdCk7CisgICAgICAgIHlDb29yZGluYXRlcy5w
dXNoX2JhY2soZGVsdGEuc2Vjb25kKTsKKworICAgICAgICBjdXJyZW50ID0gZGVzdGluYXRpb247
CisgICAgICAgIG1pblggPSBzdGQ6Om1pbihtaW5YLCBkZXN0aW5hdGlvbi5maXJzdCk7CisgICAg
ICAgIG1heFggPSBzdGQ6Om1heChtYXhYLCBkZXN0aW5hdGlvbi5maXJzdCk7CisgICAgICAgIG1p
blkgPSBzdGQ6Om1pbihtaW5ZLCBkZXN0aW5hdGlvbi5zZWNvbmQpOworICAgICAgICBtYXhZID0g
c3RkOjptYXgobWF4WSwgZGVzdGluYXRpb24uc2Vjb25kKTsKKyAgICAgICAgKytwb2ludENvdW50
OworICAgIH0KKworICAgIHN0YXRpYyB2b2lkIGFwcGVuZDE2KHN0ZDo6dmVjdG9yPHVpbnQ4X3Q+
JiBkZXN0aW5hdGlvbiwgdWludDE2X3QgdmFsdWUpCisgICAgeworICAgICAgICBkZXN0aW5hdGlv
bi5wdXNoX2JhY2sodmFsdWUgPj4gOCk7CisgICAgICAgIGRlc3RpbmF0aW9uLnB1c2hfYmFjayh2
YWx1ZSk7CisgICAgfQorCisgICAgc3RkOjp2ZWN0b3I8dWludDE2X3Q+IGVuZFB0c09mQ29udG91
cnM7CisgICAgc3RkOjp2ZWN0b3I8dWludDhfdD4gZmxhZ3M7CisgICAgc3RkOjp2ZWN0b3I8aW50
MTZfdD4geENvb3JkaW5hdGVzOworICAgIHN0ZDo6dmVjdG9yPGludDE2X3Q+IHlDb29yZGluYXRl
czsKKyAgICBzdGQ6OnBhaXI8ZmxvYXQsIGZsb2F0PiBzdGFydGluZ1BvaW50OworICAgIHN0ZDo6
cGFpcjxmbG9hdCwgZmxvYXQ+IGN1cnJlbnQ7CisgICAgZmxvYXQgbWluWCB7IHN0ZDo6bnVtZXJp
Y19saW1pdHM8ZmxvYXQ+OjptYXgoKSB9OworICAgIGZsb2F0IG1heFggeyBzdGQ6Om51bWVyaWNf
bGltaXRzPGZsb2F0Pjo6bWluKCkgfTsKKyAgICBmbG9hdCBtaW5ZIHsgc3RkOjpudW1lcmljX2xp
bWl0czxmbG9hdD46Om1heCgpIH07CisgICAgZmxvYXQgbWF4WSB7IHN0ZDo6bnVtZXJpY19saW1p
dHM8ZmxvYXQ+OjptaW4oKSB9OworICAgIHVuc2lnbmVkIHBvaW50Q291bnQgeyAwIH07Cit9Owor
Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KIHN0ZDo6dmVjdG9yPHVpbnQ4X3Q+IGdlbmVyYXRlQm94
Q2hhclN0cmluZygpCiB7Ci0gICAgQ0ZGQnVpbGRlciBidWlsZGVyKHVuaXRzUGVyRW0sIHN0ZDo6
bWFrZV9wYWlyKDAuZiwgMC5mKSk7Ci0gICAgYnVpbGRlci5tb3ZlVG8oc3RkOjptYWtlX3BhaXIo
MjAwLmYsIDIwMC5mKSwgZmFsc2UpOworICAgIFQgYnVpbGRlcih1bml0c1BlckVtLCBzdGQ6Om1h
a2VfcGFpcigwLmYsIDAuZikpOworICAgIGJ1aWxkZXIubW92ZVRvKHN0ZDo6bWFrZV9wYWlyKDIw
MC5mLCAyMDAuZikpOwogICAgIGJ1aWxkZXIubGluZVRvKHN0ZDo6bWFrZV9wYWlyKDIwMC5mLCA4
MDAuZikpOwogICAgIGJ1aWxkZXIubGluZVRvKHN0ZDo6bWFrZV9wYWlyKDgwMC5mLCA4MDAuZikp
OwogICAgIGJ1aWxkZXIubGluZVRvKHN0ZDo6bWFrZV9wYWlyKDgwMC5mLCAyMDAuZikpOwpAQCAt
MTY3LDEwICsyMzEsMTEgQEAgc3RkOjp2ZWN0b3I8dWludDhfdD4gZ2VuZXJhdGVCb3hDaGFyU3Ry
aW5nKCkKICAgICByZXR1cm4gYnVpbGRlci50YWtlUmVzdWx0KCk7CiB9CiAKK3RlbXBsYXRlIDx0
eXBlbmFtZSBUPgogc3RkOjp2ZWN0b3I8dWludDhfdD4gZ2VuZXJhdGVDaGVja0NoYXJTdHJpbmco
KQogewotICAgIENGRkJ1aWxkZXIgYnVpbGRlcih1bml0c1BlckVtLCBzdGQ6Om1ha2VfcGFpcigw
LmYsIDAuZikpOwotICAgIGJ1aWxkZXIubW92ZVRvKHN0ZDo6bWFrZV9wYWlyKDIwMC5mLCA1MDAu
ZiksIGZhbHNlKTsKKyAgICBUIGJ1aWxkZXIodW5pdHNQZXJFbSwgc3RkOjptYWtlX3BhaXIoMC5m
LCAwLmYpKTsKKyAgICBidWlsZGVyLm1vdmVUbyhzdGQ6Om1ha2VfcGFpcigyMDAuZiwgNTAwLmYp
KTsKICAgICBidWlsZGVyLmxpbmVUbyhzdGQ6Om1ha2VfcGFpcigyNTAuZiwgNTUwLmYpKTsKICAg
ICBidWlsZGVyLmxpbmVUbyhzdGQ6Om1ha2VfcGFpcig1MDAuZiwgMzAwLmYpKTsKICAgICBidWls
ZGVyLmxpbmVUbyhzdGQ6Om1ha2VfcGFpcig5MDAuZiwgNzAwLmYpKTsKQEAgLTE4MCwxMCArMjQ1
LDExIEBAIHN0ZDo6dmVjdG9yPHVpbnQ4X3Q+IGdlbmVyYXRlQ2hlY2tDaGFyU3RyaW5nKCkKICAg
ICByZXR1cm4gYnVpbGRlci50YWtlUmVzdWx0KCk7CiB9CiAKK3RlbXBsYXRlIDx0eXBlbmFtZSBU
Pgogc3RkOjp2ZWN0b3I8dWludDhfdD4gZ2VuZXJhdGVYQ2hhclN0cmluZygpCiB7Ci0gICAgQ0ZG
QnVpbGRlciBidWlsZGVyKHVuaXRzUGVyRW0sIHN0ZDo6bWFrZV9wYWlyKDAuZiwgMC5mKSk7Ci0g
ICAgYnVpbGRlci5tb3ZlVG8oc3RkOjptYWtlX3BhaXIoNTAwLjBmLCA1NTAuMGYpLCBmYWxzZSk7
CisgICAgVCBidWlsZGVyKHVuaXRzUGVyRW0sIHN0ZDo6bWFrZV9wYWlyKDAuZiwgMC5mKSk7Cisg
ICAgYnVpbGRlci5tb3ZlVG8oc3RkOjptYWtlX3BhaXIoNTAwLjBmLCA1NTAuMGYpKTsKICAgICBi
dWlsZGVyLmxpbmVUbyhzdGQ6Om1ha2VfcGFpcig5MDAuZiwgOTUwLmYpKTsKICAgICBidWlsZGVy
LmxpbmVUbyhzdGQ6Om1ha2VfcGFpcig5NTAuZiwgOTAwLmYpKTsKICAgICBidWlsZGVyLmxpbmVU
byhzdGQ6Om1ha2VfcGFpcig1NTAuZiwgNTAwLmYpKTsKQEAgLTIwOCwxOCArMjc0LDQyIEBAIHN0
ZDo6dmVjdG9yPHVpbnQ4X3Q+JiBjaGFyU3RyaW5nRm9yR2x5cGgodWludDE2X3QgZ2x5cGgsIHN0
ZDo6dmVjdG9yPHVpbnQ4X3Q+JiBiCiAgICAgcmV0dXJuIHhDaGFyU3RyaW5nOwogfQogCitzdHJ1
Y3QgRmVhdHVyZVNlbGVjdG9yIHsKKyAgICB1aW50MTZfdCBzZWxlY3RvcjsKKyAgICBzdGQ6OnN0
cmluZyBuYW1lOworICAgIHVpbnQxNl90IHN0cmluZ0luZGV4OworfTsKKworc3RydWN0IEZlYXR1
cmVUeXBlIHsKKyAgICB1aW50MTZfdCB0eXBlOworICAgIHN0ZDo6c3RyaW5nIG5hbWU7CisgICAg
dWludDE2X3Qgc3RyaW5nSW5kZXg7CisgICAgc2l6ZV90IHNldHRpbmdUYWJsZU9mZnNldExvY2F0
aW9uOworICAgIHN0ZDo6dmVjdG9yPEZlYXR1cmVTZWxlY3Rvcj4gc2VsZWN0b3JzOworICAgIGJv
b2wgZXhjbHVzaXZlOworfTsKKwogY2xhc3MgR2VuZXJhdG9yIHsKIHB1YmxpYzoKLSAgICBzdGQ6
OnZlY3Rvcjx1aW50OF90PiBnZW5lcmF0ZSgpCisgICAgc3RkOjp2ZWN0b3I8dWludDhfdD4gZ2Vu
ZXJhdGUoVHlwZSB0eXBlKQogICAgIHsKLSAgICAgICAgdWludDE2X3QgbnVtVGFibGVzID0gMTA7
CisgICAgICAgIGZlYXR1cmVEZXNjcmlwdGlvbiA9IGdlbmVyYXRlRmVhdHVyZURlc2NyaXB0aW9u
KCk7CisKKyAgICAgICAgdWludDE2X3QgbnVtVGFibGVzID0gdHlwZSA9PSBUeXBlOjpPcGVuVHlw
ZSA/IDEwIDogMTI7CiAgICAgICAgIHVpbnQxNl90IHJvdW5kZWROdW1UYWJsZXMgPSByb3VuZERv
d25Ub1Bvd2VyT2ZUd28obnVtVGFibGVzKTsKICAgICAgICAgdWludDE2X3Qgc2VhcmNoUmFuZ2Ug
PSByb3VuZGVkTnVtVGFibGVzICogMTY7IC8vIHNlYXJjaFJhbmdlOiAiKE1heGltdW0gcG93ZXIg
b2YgMiA8PSBudW1UYWJsZXMpIHggMTYuIgogCi0gICAgICAgIHJlc3VsdC5wdXNoX2JhY2soJ08n
KTsKLSAgICAgICAgcmVzdWx0LnB1c2hfYmFjaygnVCcpOwotICAgICAgICByZXN1bHQucHVzaF9i
YWNrKCdUJyk7Ci0gICAgICAgIHJlc3VsdC5wdXNoX2JhY2soJ08nKTsKKyAgICAgICAgaWYgKHR5
cGUgPT0gVHlwZTo6T3BlblR5cGUpIHsKKyAgICAgICAgICAgIHJlc3VsdC5wdXNoX2JhY2soJ08n
KTsKKyAgICAgICAgICAgIHJlc3VsdC5wdXNoX2JhY2soJ1QnKTsKKyAgICAgICAgICAgIHJlc3Vs
dC5wdXNoX2JhY2soJ1QnKTsKKyAgICAgICAgICAgIHJlc3VsdC5wdXNoX2JhY2soJ08nKTsKKyAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHJlc3VsdC5wdXNoX2JhY2soJ3QnKTsKKyAgICAg
ICAgICAgIHJlc3VsdC5wdXNoX2JhY2soJ3InKTsKKyAgICAgICAgICAgIHJlc3VsdC5wdXNoX2Jh
Y2soJ3UnKTsKKyAgICAgICAgICAgIHJlc3VsdC5wdXNoX2JhY2soJ2UnKTsKKyAgICAgICAgfQog
ICAgICAgICBhcHBlbmQxNihudW1UYWJsZXMpOwogICAgICAgICBhcHBlbmQxNihzZWFyY2hSYW5n
ZSk7CiAgICAgICAgIGFwcGVuZDE2KGludGVncmFsTG9nMihyb3VuZGVkTnVtVGFibGVzKSk7IC8v
IGVudHJ5U2VsZWN0b3I6ICJMb2cyKG1heGltdW0gcG93ZXIgb2YgMiA8PSBudW1UYWJsZXMpLiIK
QEAgLTIzMSwxNSArMzIxLDI1IEBAIHB1YmxpYzoKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBkaXJlY3RvcnlFbnRyeVNpemUgKiBudW1UYWJsZXM7ICsraSkKICAgICAgICAgICAgIHJl
c3VsdC5wdXNoX2JhY2soMCk7CiAKLSAgICAgICAgYXBwZW5kVGFibGUoIkNGRiAiLCAmR2VuZXJh
dG9yOjphcHBlbmRDRkZUYWJsZSk7Ci0gICAgICAgIGFwcGVuZFRhYmxlKCJHU1VCIiwgJkdlbmVy
YXRvcjo6YXBwZW5kR1NVQlRhYmxlKTsKKyAgICAgICAgaWYgKHR5cGUgPT0gVHlwZTo6T3BlblR5
cGUpIHsKKyAgICAgICAgICAgIGFwcGVuZFRhYmxlKCJDRkYgIiwgJkdlbmVyYXRvcjo6YXBwZW5k
Q0ZGVGFibGUpOworICAgICAgICAgICAgYXBwZW5kVGFibGUoIkdTVUIiLCAmR2VuZXJhdG9yOjph
cHBlbmRHU1VCVGFibGUpOworICAgICAgICB9CiAgICAgICAgIGFwcGVuZFRhYmxlKCJPUy8yIiwg
JkdlbmVyYXRvcjo6YXBwZW5kT1MyVGFibGUpOwogICAgICAgICBhcHBlbmRUYWJsZSgiY21hcCIs
ICZHZW5lcmF0b3I6OmFwcGVuZENNQVBUYWJsZSk7CisgICAgICAgIGlmICh0eXBlID09IFR5cGU6
OlRydWVUeXBlKSB7CisgICAgICAgICAgICBhcHBlbmRUYWJsZSgiZmVhdCIsICZHZW5lcmF0b3I6
OmFwcGVuZEZFQVRUYWJsZSk7CisgICAgICAgICAgICBhcHBlbmRUYWJsZSgiZ2x5ZiIsICZHZW5l
cmF0b3I6OmFwcGVuZEdMWUZUYWJsZSk7CisgICAgICAgIH0KICAgICAgICAgYXV0byBoZWFkVGFi
bGVPZmZzZXQgPSByZXN1bHQuc2l6ZSgpOwogICAgICAgICBhcHBlbmRUYWJsZSgiaGVhZCIsICZH
ZW5lcmF0b3I6OmFwcGVuZEhFQURUYWJsZSk7CiAgICAgICAgIGFwcGVuZFRhYmxlKCJoaGVhIiwg
JkdlbmVyYXRvcjo6YXBwZW5kSEhFQVRhYmxlKTsKICAgICAgICAgYXBwZW5kVGFibGUoImhtdHgi
LCAmR2VuZXJhdG9yOjphcHBlbmRITVRYVGFibGUpOworICAgICAgICBpZiAodHlwZSA9PSBUeXBl
OjpUcnVlVHlwZSkKKyAgICAgICAgICAgIGFwcGVuZFRhYmxlKCJsb2NhIiwgJkdlbmVyYXRvcjo6
YXBwZW5kTE9DQVRhYmxlKTsKICAgICAgICAgYXBwZW5kVGFibGUoIm1heHAiLCAmR2VuZXJhdG9y
OjphcHBlbmRNQVhQVGFibGUpOworICAgICAgICBpZiAodHlwZSA9PSBUeXBlOjpUcnVlVHlwZSkK
KyAgICAgICAgICAgIGFwcGVuZFRhYmxlKCJtb3J4IiwgJkdlbmVyYXRvcjo6YXBwZW5kTU9SWFRh
YmxlKTsKICAgICAgICAgYXBwZW5kVGFibGUoIm5hbWUiLCAmR2VuZXJhdG9yOjphcHBlbmROQU1F
VGFibGUpOwogICAgICAgICBhcHBlbmRUYWJsZSgicG9zdCIsICZHZW5lcmF0b3I6OmFwcGVuZFBP
U1RUYWJsZSk7CiAKQEAgLTI0OCw2ICszNDgsNyBAQCBwdWJsaWM6CiAgICAgICAgIC8vIGNoZWNr
c3VtQWRqdXN0bWVudDogIlRvIGNvbXB1dGU6IHNldCBpdCB0byAwLCBjYWxjdWxhdGUgdGhlIGNo
ZWNrc3VtIGZvciB0aGUgJ2hlYWQnIHRhYmxlIGFuZCBwdXQgaXQgaW4gdGhlIHRhYmxlIGRpcmVj
dG9yeSwKICAgICAgICAgLy8gc3VtIHRoZSBlbnRpcmUgZm9udCBhcyB1aW50MzIsIHRoZW4gc3Rv
cmUgQjFCMEFGQkEgLSBzdW0uIFRoZSBjaGVja3N1bSBmb3IgdGhlICdoZWFkJyB0YWJsZSB3aWxs
IG5vdyBiZSB3cm9uZy4gVGhhdCBpcyBPSy4iCiAgICAgICAgIG92ZXJ3cml0ZTMyKGhlYWRUYWJs
ZU9mZnNldCArIDgsIDB4QjFCMEFGQkFVIC0gY2FsY3VsYXRlQ2hlY2tzdW0oMCwgcmVzdWx0LnNp
emUoKSkpOworCiAgICAgICAgIHJldHVybiBzdGQ6Om1vdmUocmVzdWx0KTsKICAgICB9CiAKQEAg
LTMzMSw2ICs0MzIsMTE5IEBAIHByaXZhdGU6CiAgICAgICAgIHJlc3VsdFtsb2NhdGlvbiArIDJd
ID0gdmFsdWUgPj4gODsKICAgICAgICAgcmVzdWx0W2xvY2F0aW9uICsgM10gPSB2YWx1ZTsKICAg
ICB9CisKKyAgICB2b2lkIGluc2VydFNlbGVjdG9yKHN0ZDo6dmVjdG9yPEZlYXR1cmVTZWxlY3Rv
cj4mIHNlbGVjdG9ycywgdWludDE2X3Qgc2VsZWN0b3IsIHN0ZDo6c3RyaW5nIHNlbGVjdG9yU3Ry
aW5nKQorICAgIHsKKyAgICAgICAgc2VsZWN0b3JzLnB1c2hfYmFjayh7c2VsZWN0b3IsIHNlbGVj
dG9yU3RyaW5nLCBtX3N0cmluZ0luZGV4Kyt9KTsKKyAgICB9CisKKyAgICB2b2lkIGluc2VydEZl
YXR1cmUoc3RkOjp2ZWN0b3I8RmVhdHVyZVR5cGU+JiByZXN1bHQsIHVpbnQxNl90IHR5cGUsIHN0
ZDo6c3RyaW5nIHR5cGVTdHJpbmcsIHVpbnQxNl90IHNlbGVjdG9yLCBzdGQ6OnN0cmluZyBzZWxl
Y3RvclN0cmluZywgYm9vbCBleGNsdXNpdmUpCisgICAgeworICAgICAgICAvLyBPKG4pIGJ1dCBw
ZXJmb3JtYW5jZSBpcyBub3QgYW4gaXNzdWUgaGVyZQorICAgICAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IHJlc3VsdC5zaXplKCk7ICsraSkgeworICAgICAgICAgICAgaWYgKHJlc3VsdFtpXS50
eXBlID09IHR5cGUpIHsKKyAgICAgICAgICAgICAgICBpbnNlcnRTZWxlY3RvcihyZXN1bHRbaV0u
c2VsZWN0b3JzLCBzZWxlY3Rvciwgc2VsZWN0b3JTdHJpbmcpOworICAgICAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXN1bHQucHVzaF9iYWNr
KHt0eXBlLCB0eXBlU3RyaW5nLCBtX3N0cmluZ0luZGV4KyssIDAsIHN0ZDo6dmVjdG9yPEZlYXR1
cmVTZWxlY3Rvcj4oKSwgZXhjbHVzaXZlfSk7CisgICAgICAgIGluc2VydFNlbGVjdG9yKHJlc3Vs
dFtyZXN1bHQuc2l6ZSgpIC0gMV0uc2VsZWN0b3JzLCBzZWxlY3Rvciwgc2VsZWN0b3JTdHJpbmcp
OworICAgIH0KKworICAgIHN0YXRpYyBjb25zdCB1aW50MTZfdCBrQ2hhcmFjdGVyU2hhcGVUeXBl
ID0gMjA7CisgICAgc3RhdGljIGNvbnN0IHVpbnQxNl90IGtDb250ZXh0dWFsQWx0ZXJuYXRlc1R5
cGUgPSAzNjsKKyAgICBzdGF0aWMgY29uc3QgdWludDE2X3Qga0ZyYWN0aW9uc1R5cGUgPSAxMTsK
KyAgICBzdGF0aWMgY29uc3QgdWludDE2X3Qga0xldHRlckNhc2VUeXBlID0gMzsKKyAgICBzdGF0
aWMgY29uc3QgdWludDE2X3Qga0xpZ2F0dXJlc1R5cGUgPSAxOworICAgIHN0YXRpYyBjb25zdCB1
aW50MTZfdCBrTG93ZXJDYXNlVHlwZSA9IDM3OworICAgIHN0YXRpYyBjb25zdCB1aW50MTZfdCBr
TnVtYmVyQ2FzZVR5cGUgPSAyMTsKKyAgICBzdGF0aWMgY29uc3QgdWludDE2X3Qga051bWJlclNw
YWNpbmdUeXBlID0gNjsKKyAgICBzdGF0aWMgY29uc3QgdWludDE2X3Qga1J1YnlLYW5hVHlwZSA9
IDI4OworICAgIHN0YXRpYyBjb25zdCB1aW50MTZfdCBrU3R5bGVPcHRpb25zVHlwZSA9IDE5Owor
ICAgIHN0YXRpYyBjb25zdCB1aW50MTZfdCBrVGV4dFNwYWNpbmdUeXBlID0gMjI7CisgICAgc3Rh
dGljIGNvbnN0IHVpbnQxNl90IGtUeXBvZ3JhcGhpY0V4dHJhc1R5cGUgPSAxNDsKKyAgICBzdGF0
aWMgY29uc3QgdWludDE2X3Qga1VwcGVyQ2FzZVR5cGUgPSAzODsKKyAgICBzdGF0aWMgY29uc3Qg
dWludDE2X3Qga1ZlcnRpY2FsUG9zaXRpb25UeXBlID0gMTA7CisKKyAgICBzdGF0aWMgY29uc3Qg
dWludDE2X3Qga0NvbW1vbkxpZ2F0dXJlc09mZlNlbGVjdG9yID0gMzsKKyAgICBzdGF0aWMgY29u
c3QgdWludDE2X3Qga0NvbW1vbkxpZ2F0dXJlc09uU2VsZWN0b3IgPSAyOworICAgIHN0YXRpYyBj
b25zdCB1aW50MTZfdCBrQ29udGV4dHVhbEFsdGVybmF0ZXNPZmZTZWxlY3RvciA9IDE7CisgICAg
c3RhdGljIGNvbnN0IHVpbnQxNl90IGtDb250ZXh0dWFsQWx0ZXJuYXRlc09uU2VsZWN0b3IgPSAw
OworICAgIHN0YXRpYyBjb25zdCB1aW50MTZfdCBrQ29udGV4dHVhbExpZ2F0dXJlc09mZlNlbGVj
dG9yID0gMTk7CisgICAgc3RhdGljIGNvbnN0IHVpbnQxNl90IGtDb250ZXh0dWFsTGlnYXR1cmVz
T25TZWxlY3RvciA9IDE4OworICAgIHN0YXRpYyBjb25zdCB1aW50MTZfdCBrRGlhZ29uYWxGcmFj
dGlvbnNTZWxlY3RvciA9IDI7CisgICAgc3RhdGljIGNvbnN0IHVpbnQxNl90IGtIaXN0b3JpY2Fs
TGlnYXR1cmVzT2ZmU2VsZWN0b3IgPSAyMTsKKyAgICBzdGF0aWMgY29uc3QgdWludDE2X3Qga0hp
c3RvcmljYWxMaWdhdHVyZXNPblNlbGVjdG9yID0gMjA7CisgICAgc3RhdGljIGNvbnN0IHVpbnQx
Nl90IGtJbmZlcmlvcnNTZWxlY3RvciA9IDI7CisgICAgc3RhdGljIGNvbnN0IHVpbnQxNl90IGtK
SVMxOTc4Q2hhcmFjdGVyc1NlbGVjdG9yID0gMjsKKyAgICBzdGF0aWMgY29uc3QgdWludDE2X3Qg
a0pJUzE5ODNDaGFyYWN0ZXJzU2VsZWN0b3IgPSAzOworICAgIHN0YXRpYyBjb25zdCB1aW50MTZf
dCBrSklTMTk5MENoYXJhY3RlcnNTZWxlY3RvciA9IDQ7CisgICAgc3RhdGljIGNvbnN0IHVpbnQx
Nl90IGtKSVMyMDA0Q2hhcmFjdGVyc1NlbGVjdG9yID0gMTE7CisgICAgc3RhdGljIGNvbnN0IHVp
bnQxNl90IGtMb3dlckNhc2VOdW1iZXJzU2VsZWN0b3IgPSAwOworICAgIHN0YXRpYyBjb25zdCB1
aW50MTZfdCBrTG93ZXJDYXNlUGV0aXRlQ2Fwc1NlbGVjdG9yID0gMjsKKyAgICBzdGF0aWMgY29u
c3QgdWludDE2X3Qga0xvd2VyQ2FzZVNtYWxsQ2Fwc1NlbGVjdG9yID0gMTsKKyAgICBzdGF0aWMg
Y29uc3QgdWludDE2X3Qga01vbm9zcGFjZWROdW1iZXJzU2VsZWN0b3IgPSAwOworICAgIHN0YXRp
YyBjb25zdCB1aW50MTZfdCBrTW9ub3NwYWNlZFRleHRTZWxlY3RvciA9IDE7CisgICAgc3RhdGlj
IGNvbnN0IHVpbnQxNl90IGtPcmRpbmFsc1NlbGVjdG9yID0gMzsKKyAgICBzdGF0aWMgY29uc3Qg
dWludDE2X3Qga1Byb3BvcnRpb25hbE51bWJlcnNTZWxlY3RvciA9IDE7CisgICAgc3RhdGljIGNv
bnN0IHVpbnQxNl90IGtQcm9wb3J0aW9uYWxUZXh0U2VsZWN0b3IgPSAwOworICAgIHN0YXRpYyBj
b25zdCB1aW50MTZfdCBrUmFyZUxpZ2F0dXJlc09mZlNlbGVjdG9yID0gNTsKKyAgICBzdGF0aWMg
Y29uc3QgdWludDE2X3Qga1JhcmVMaWdhdHVyZXNPblNlbGVjdG9yID0gNDsKKyAgICBzdGF0aWMg
Y29uc3QgdWludDE2X3Qga1J1YnlLYW5hT25TZWxlY3RvciA9IDI7CisgICAgc3RhdGljIGNvbnN0
IHVpbnQxNl90IGtSdWJ5S2FuYVNlbGVjdG9yID0gMTsKKyAgICBzdGF0aWMgY29uc3QgdWludDE2
X3Qga1NpbXBsaWZpZWRDaGFyYWN0ZXJzU2VsZWN0b3IgPSAxOworICAgIHN0YXRpYyBjb25zdCB1
aW50MTZfdCBrU2xhc2hlZFplcm9PblNlbGVjdG9yID0gNDsKKyAgICBzdGF0aWMgY29uc3QgdWlu
dDE2X3Qga1N1cGVyaW9yc1NlbGVjdG9yID0gMTsKKyAgICBzdGF0aWMgY29uc3QgdWludDE2X3Qg
a1RpdGxpbmdDYXBzU2VsZWN0b3IgPSA0OworICAgIHN0YXRpYyBjb25zdCB1aW50MTZfdCBrVHJh
ZGl0aW9uYWxDaGFyYWN0ZXJzU2VsZWN0b3IgPSAwOworICAgIHN0YXRpYyBjb25zdCB1aW50MTZf
dCBrVXBwZXJDYXNlTnVtYmVyc1NlbGVjdG9yID0gMTsKKyAgICBzdGF0aWMgY29uc3QgdWludDE2
X3Qga1VwcGVyQ2FzZVBldGl0ZUNhcHNTZWxlY3RvciA9IDI7CisgICAgc3RhdGljIGNvbnN0IHVp
bnQxNl90IGtVcHBlckNhc2VTbWFsbENhcHNTZWxlY3RvciA9IDE7CisgICAgc3RhdGljIGNvbnN0
IHVpbnQxNl90IGtWZXJ0aWNhbEZyYWN0aW9uc1NlbGVjdG9yID0gMTsKKworICAgIHN0ZDo6dmVj
dG9yPEZlYXR1cmVUeXBlPiBnZW5lcmF0ZUZlYXR1cmVEZXNjcmlwdGlvbigpIHsKKyAgICAgICAg
c3RkOjp2ZWN0b3I8RmVhdHVyZVR5cGU+IHJlc3VsdDsKKworICAgICAgICAvLyBGb3IgYW55IGdp
dmVuIGZlYXR1cmUgdHlwZSwgdGhlIGZpcnN0IHNlbGVjdG9yIGluc2lkZSBpdCBtdXN0IGJlIHRo
ZSBkZWZhdWx0IHNlbGVjdG9yIGZvciB0aGF0IHR5cGUuCisgICAgICAgIGluc2VydEZlYXR1cmUo
cmVzdWx0LCBrTGlnYXR1cmVzVHlwZSwgImtMaWdhdHVyZXNUeXBlIiwga0NvbW1vbkxpZ2F0dXJl
c09uU2VsZWN0b3IsICJrQ29tbW9uTGlnYXR1cmVzT25TZWxlY3RvciIsIGZhbHNlKTsKKyAgICAg
ICAgaW5zZXJ0RmVhdHVyZShyZXN1bHQsIGtMaWdhdHVyZXNUeXBlLCAia0xpZ2F0dXJlc1R5cGUi
LCBrQ29udGV4dHVhbExpZ2F0dXJlc09uU2VsZWN0b3IsICJrQ29udGV4dHVhbExpZ2F0dXJlc09u
U2VsZWN0b3IiLCBmYWxzZSk7CisgICAgICAgIGluc2VydEZlYXR1cmUocmVzdWx0LCBrTGlnYXR1
cmVzVHlwZSwgImtMaWdhdHVyZXNUeXBlIiwga0NvbW1vbkxpZ2F0dXJlc09mZlNlbGVjdG9yLCAi
a0NvbW1vbkxpZ2F0dXJlc09mZlNlbGVjdG9yIiwgZmFsc2UpOworICAgICAgICBpbnNlcnRGZWF0
dXJlKHJlc3VsdCwga0xpZ2F0dXJlc1R5cGUsICJrTGlnYXR1cmVzVHlwZSIsIGtDb250ZXh0dWFs
TGlnYXR1cmVzT2ZmU2VsZWN0b3IsICJrQ29udGV4dHVhbExpZ2F0dXJlc09mZlNlbGVjdG9yIiwg
ZmFsc2UpOworICAgICAgICBpbnNlcnRGZWF0dXJlKHJlc3VsdCwga0xpZ2F0dXJlc1R5cGUsICJr
TGlnYXR1cmVzVHlwZSIsIGtSYXJlTGlnYXR1cmVzT25TZWxlY3RvciwgImtSYXJlTGlnYXR1cmVz
T25TZWxlY3RvciIsIGZhbHNlKTsKKyAgICAgICAgaW5zZXJ0RmVhdHVyZShyZXN1bHQsIGtMaWdh
dHVyZXNUeXBlLCAia0xpZ2F0dXJlc1R5cGUiLCBrUmFyZUxpZ2F0dXJlc09mZlNlbGVjdG9yLCAi
a1JhcmVMaWdhdHVyZXNPZmZTZWxlY3RvciIsIGZhbHNlKTsKKyAgICAgICAgaW5zZXJ0RmVhdHVy
ZShyZXN1bHQsIGtMaWdhdHVyZXNUeXBlLCAia0xpZ2F0dXJlc1R5cGUiLCBrSGlzdG9yaWNhbExp
Z2F0dXJlc09uU2VsZWN0b3IsICJrSGlzdG9yaWNhbExpZ2F0dXJlc09uU2VsZWN0b3IiLCBmYWxz
ZSk7CisgICAgICAgIGluc2VydEZlYXR1cmUocmVzdWx0LCBrTGlnYXR1cmVzVHlwZSwgImtMaWdh
dHVyZXNUeXBlIiwga0hpc3RvcmljYWxMaWdhdHVyZXNPZmZTZWxlY3RvciwgImtIaXN0b3JpY2Fs
TGlnYXR1cmVzT2ZmU2VsZWN0b3IiLCBmYWxzZSk7CisgICAgICAgIGluc2VydEZlYXR1cmUocmVz
dWx0LCBrQ29udGV4dHVhbEFsdGVybmF0ZXNUeXBlLCAia0NvbnRleHR1YWxBbHRlcm5hdGVzVHlw
ZSIsIGtDb250ZXh0dWFsQWx0ZXJuYXRlc09uU2VsZWN0b3IsICJrQ29udGV4dHVhbEFsdGVybmF0
ZXNPblNlbGVjdG9yIiwgZmFsc2UpOworICAgICAgICBpbnNlcnRGZWF0dXJlKHJlc3VsdCwga0Nv
bnRleHR1YWxBbHRlcm5hdGVzVHlwZSwgImtDb250ZXh0dWFsQWx0ZXJuYXRlc1R5cGUiLCBrQ29u
dGV4dHVhbEFsdGVybmF0ZXNPZmZTZWxlY3RvciwgImtDb250ZXh0dWFsQWx0ZXJuYXRlc09mZlNl
bGVjdG9yIiwgZmFsc2UpOworICAgICAgICBpbnNlcnRGZWF0dXJlKHJlc3VsdCwga1ZlcnRpY2Fs
UG9zaXRpb25UeXBlLCAia1ZlcnRpY2FsUG9zaXRpb25UeXBlIiwga0luZmVyaW9yc1NlbGVjdG9y
LCAia0luZmVyaW9yc1NlbGVjdG9yIiwgdHJ1ZSk7CisgICAgICAgIGluc2VydEZlYXR1cmUocmVz
dWx0LCBrVmVydGljYWxQb3NpdGlvblR5cGUsICJrVmVydGljYWxQb3NpdGlvblR5cGUiLCBrU3Vw
ZXJpb3JzU2VsZWN0b3IsICJrU3VwZXJpb3JzU2VsZWN0b3IiLCB0cnVlKTsKKyAgICAgICAgaW5z
ZXJ0RmVhdHVyZShyZXN1bHQsIGtMb3dlckNhc2VUeXBlLCAia0xvd2VyQ2FzZVR5cGUiLCBrTG93
ZXJDYXNlU21hbGxDYXBzU2VsZWN0b3IsICJrTG93ZXJDYXNlU21hbGxDYXBzU2VsZWN0b3IiLCB0
cnVlKTsKKyAgICAgICAgaW5zZXJ0RmVhdHVyZShyZXN1bHQsIGtVcHBlckNhc2VUeXBlLCAia1Vw
cGVyQ2FzZVR5cGUiLCBrVXBwZXJDYXNlU21hbGxDYXBzU2VsZWN0b3IsICJrVXBwZXJDYXNlU21h
bGxDYXBzU2VsZWN0b3IiLCB0cnVlKTsKKyAgICAgICAgaW5zZXJ0RmVhdHVyZShyZXN1bHQsIGtM
b3dlckNhc2VUeXBlLCAia0xvd2VyQ2FzZVR5cGUiLCBrTG93ZXJDYXNlUGV0aXRlQ2Fwc1NlbGVj
dG9yLCAia0xvd2VyQ2FzZVBldGl0ZUNhcHNTZWxlY3RvciIsIHRydWUpOworICAgICAgICBpbnNl
cnRGZWF0dXJlKHJlc3VsdCwga1VwcGVyQ2FzZVR5cGUsICJrVXBwZXJDYXNlVHlwZSIsIGtVcHBl
ckNhc2VQZXRpdGVDYXBzU2VsZWN0b3IsICJrVXBwZXJDYXNlUGV0aXRlQ2Fwc1NlbGVjdG9yIiwg
dHJ1ZSk7CisgICAgICAgIGluc2VydEZlYXR1cmUocmVzdWx0LCBrTGV0dGVyQ2FzZVR5cGUsICJr
TGV0dGVyQ2FzZVR5cGUiLCAxNCwgIjE0IiwgdHJ1ZSk7CisgICAgICAgIGluc2VydEZlYXR1cmUo
cmVzdWx0LCBrU3R5bGVPcHRpb25zVHlwZSwgImtTdHlsZU9wdGlvbnNUeXBlIiwga1RpdGxpbmdD
YXBzU2VsZWN0b3IsICJrVGl0bGluZ0NhcHNTZWxlY3RvciIsIHRydWUpOworICAgICAgICBpbnNl
cnRGZWF0dXJlKHJlc3VsdCwga051bWJlckNhc2VUeXBlLCAia051bWJlckNhc2VUeXBlIiwga1Vw
cGVyQ2FzZU51bWJlcnNTZWxlY3RvciwgImtVcHBlckNhc2VOdW1iZXJzU2VsZWN0b3IiLCB0cnVl
KTsKKyAgICAgICAgaW5zZXJ0RmVhdHVyZShyZXN1bHQsIGtOdW1iZXJDYXNlVHlwZSwgImtOdW1i
ZXJDYXNlVHlwZSIsIGtMb3dlckNhc2VOdW1iZXJzU2VsZWN0b3IsICJrTG93ZXJDYXNlTnVtYmVy
c1NlbGVjdG9yIiwgdHJ1ZSk7CisgICAgICAgIGluc2VydEZlYXR1cmUocmVzdWx0LCBrTnVtYmVy
U3BhY2luZ1R5cGUsICJrTnVtYmVyU3BhY2luZ1R5cGUiLCBrUHJvcG9ydGlvbmFsTnVtYmVyc1Nl
bGVjdG9yLCAia1Byb3BvcnRpb25hbE51bWJlcnNTZWxlY3RvciIsIHRydWUpOworICAgICAgICBp
bnNlcnRGZWF0dXJlKHJlc3VsdCwga051bWJlclNwYWNpbmdUeXBlLCAia051bWJlclNwYWNpbmdU
eXBlIiwga01vbm9zcGFjZWROdW1iZXJzU2VsZWN0b3IsICJrTW9ub3NwYWNlZE51bWJlcnNTZWxl
Y3RvciIsIHRydWUpOworICAgICAgICBpbnNlcnRGZWF0dXJlKHJlc3VsdCwga0ZyYWN0aW9uc1R5
cGUsICJrRnJhY3Rpb25zVHlwZSIsIGtEaWFnb25hbEZyYWN0aW9uc1NlbGVjdG9yLCAia0RpYWdv
bmFsRnJhY3Rpb25zU2VsZWN0b3IiLCB0cnVlKTsKKyAgICAgICAgaW5zZXJ0RmVhdHVyZShyZXN1
bHQsIGtGcmFjdGlvbnNUeXBlLCAia0ZyYWN0aW9uc1R5cGUiLCBrVmVydGljYWxGcmFjdGlvbnNT
ZWxlY3RvciwgImtWZXJ0aWNhbEZyYWN0aW9uc1NlbGVjdG9yIiwgdHJ1ZSk7CisgICAgICAgIGlu
c2VydEZlYXR1cmUocmVzdWx0LCBrVmVydGljYWxQb3NpdGlvblR5cGUsICJrVmVydGljYWxQb3Np
dGlvblR5cGUiLCBrT3JkaW5hbHNTZWxlY3RvciwgImtPcmRpbmFsc1NlbGVjdG9yIiwgdHJ1ZSk7
CisgICAgICAgIGluc2VydEZlYXR1cmUocmVzdWx0LCBrVHlwb2dyYXBoaWNFeHRyYXNUeXBlLCAi
a1R5cG9ncmFwaGljRXh0cmFzVHlwZSIsIGtTbGFzaGVkWmVyb09uU2VsZWN0b3IsICJrU2xhc2hl
ZFplcm9PblNlbGVjdG9yIiwgZmFsc2UpOworICAgICAgICBpbnNlcnRGZWF0dXJlKHJlc3VsdCwg
a0xpZ2F0dXJlc1R5cGUsICJrTGlnYXR1cmVzVHlwZSIsIGtIaXN0b3JpY2FsTGlnYXR1cmVzT25T
ZWxlY3RvciwgImtIaXN0b3JpY2FsTGlnYXR1cmVzT25TZWxlY3RvciIsIGZhbHNlKTsKKyAgICAg
ICAgaW5zZXJ0RmVhdHVyZShyZXN1bHQsIGtDaGFyYWN0ZXJTaGFwZVR5cGUsICJrQ2hhcmFjdGVy
U2hhcGVUeXBlIiwga0pJUzE5NzhDaGFyYWN0ZXJzU2VsZWN0b3IsICJrSklTMTk3OENoYXJhY3Rl
cnNTZWxlY3RvciIsIHRydWUpOworICAgICAgICBpbnNlcnRGZWF0dXJlKHJlc3VsdCwga0NoYXJh
Y3RlclNoYXBlVHlwZSwgImtDaGFyYWN0ZXJTaGFwZVR5cGUiLCBrSklTMTk4M0NoYXJhY3RlcnNT
ZWxlY3RvciwgImtKSVMxOTgzQ2hhcmFjdGVyc1NlbGVjdG9yIiwgdHJ1ZSk7CisgICAgICAgIGlu
c2VydEZlYXR1cmUocmVzdWx0LCBrQ2hhcmFjdGVyU2hhcGVUeXBlLCAia0NoYXJhY3RlclNoYXBl
VHlwZSIsIGtKSVMxOTkwQ2hhcmFjdGVyc1NlbGVjdG9yLCAia0pJUzE5OTBDaGFyYWN0ZXJzU2Vs
ZWN0b3IiLCB0cnVlKTsKKyAgICAgICAgaW5zZXJ0RmVhdHVyZShyZXN1bHQsIGtDaGFyYWN0ZXJT
aGFwZVR5cGUsICJrQ2hhcmFjdGVyU2hhcGVUeXBlIiwga0pJUzIwMDRDaGFyYWN0ZXJzU2VsZWN0
b3IsICJrSklTMjAwNENoYXJhY3RlcnNTZWxlY3RvciIsIHRydWUpOworICAgICAgICBpbnNlcnRG
ZWF0dXJlKHJlc3VsdCwga0NoYXJhY3RlclNoYXBlVHlwZSwgImtDaGFyYWN0ZXJTaGFwZVR5cGUi
LCBrU2ltcGxpZmllZENoYXJhY3RlcnNTZWxlY3RvciwgImtTaW1wbGlmaWVkQ2hhcmFjdGVyc1Nl
bGVjdG9yIiwgdHJ1ZSk7CisgICAgICAgIGluc2VydEZlYXR1cmUocmVzdWx0LCBrQ2hhcmFjdGVy
U2hhcGVUeXBlLCAia0NoYXJhY3RlclNoYXBlVHlwZSIsIGtUcmFkaXRpb25hbENoYXJhY3RlcnNT
ZWxlY3RvciwgImtUcmFkaXRpb25hbENoYXJhY3RlcnNTZWxlY3RvciIsIHRydWUpOworICAgICAg
ICBpbnNlcnRGZWF0dXJlKHJlc3VsdCwga1RleHRTcGFjaW5nVHlwZSwgImtUZXh0U3BhY2luZ1R5
cGUiLCBrTW9ub3NwYWNlZFRleHRTZWxlY3RvciwgImtNb25vc3BhY2VkVGV4dFNlbGVjdG9yIiwg
dHJ1ZSk7CisgICAgICAgIGluc2VydEZlYXR1cmUocmVzdWx0LCBrVGV4dFNwYWNpbmdUeXBlLCAi
a1RleHRTcGFjaW5nVHlwZSIsIGtQcm9wb3J0aW9uYWxUZXh0U2VsZWN0b3IsICJrUHJvcG9ydGlv
bmFsVGV4dFNlbGVjdG9yIiwgdHJ1ZSk7CisgICAgICAgIGluc2VydEZlYXR1cmUocmVzdWx0LCBr
UnVieUthbmFUeXBlLCAia1J1YnlLYW5hVHlwZSIsIGtSdWJ5S2FuYU9uU2VsZWN0b3IsICJrUnVi
eUthbmFPblNlbGVjdG9yIiwgZmFsc2UpOworCisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAg
fQogICAgIAogICAgIHZvaWQgYXBwZW5kQ0ZGVGFibGUoKQogICAgIHsKQEAgLTQxOCw5ICs2MzIs
OSBAQCBwcml2YXRlOgogICAgICAgICAgICAgYXBwZW5kMTYoaSk7CiAKICAgICAgICAgLy8gQ2hh
clN0cmluZ3MgSU5ERVgKLSAgICAgICAgc3RkOjp2ZWN0b3I8dWludDhfdD4gYm94Q2hhclN0cmlu
ZyA9IGdlbmVyYXRlQm94Q2hhclN0cmluZygpOwotICAgICAgICBzdGQ6OnZlY3Rvcjx1aW50OF90
PiBjaGVja0NoYXJTdHJpbmcgPSBnZW5lcmF0ZUNoZWNrQ2hhclN0cmluZygpOwotICAgICAgICBz
dGQ6OnZlY3Rvcjx1aW50OF90PiB4Q2hhclN0cmluZyA9IGdlbmVyYXRlWENoYXJTdHJpbmcoKTsK
KyAgICAgICAgc3RkOjp2ZWN0b3I8dWludDhfdD4gYm94Q2hhclN0cmluZyA9IGdlbmVyYXRlQm94
Q2hhclN0cmluZzxDRkZCdWlsZGVyPigpOworICAgICAgICBzdGQ6OnZlY3Rvcjx1aW50OF90PiBj
aGVja0NoYXJTdHJpbmcgPSBnZW5lcmF0ZUNoZWNrQ2hhclN0cmluZzxDRkZCdWlsZGVyPigpOwor
ICAgICAgICBzdGQ6OnZlY3Rvcjx1aW50OF90PiB4Q2hhclN0cmluZyA9IGdlbmVyYXRlWENoYXJT
dHJpbmc8Q0ZGQnVpbGRlcj4oKTsKICAgICAgICAgYXNzZXJ0KG51bUdseXBocyA+IDI2KTsKICAg
ICAgICAgb3ZlcndyaXRlMzIoY2hhcnN0cmluZ3NPZmZzZXRMb2NhdGlvbiwgc3RhdGljX2Nhc3Q8
dWludDMyX3Q+KHJlc3VsdC5zaXplKCkgLSBzdGFydGluZ09mZnNldCkpOwogICAgICAgICBhcHBl
bmQxNihudW1HbHlwaHMpOwpAQCAtNDM3LDYgKzY1MSwxMjUgQEAgcHJpdmF0ZToKICAgICAgICAg
fQogICAgIH0KIAorICAgIC8vIEtlZXAgaW4gc3luYyB3aXRoIGxvY2EKKyAgICB2b2lkIGFwcGVu
ZEdMWUZUYWJsZSgpCisgICAgeworICAgICAgICBzdGQ6OnZlY3Rvcjx1aW50OF90PiBib3hDaGFy
U3RyaW5nID0gZ2VuZXJhdGVCb3hDaGFyU3RyaW5nPEdMWUZCdWlsZGVyPigpOworICAgICAgICBz
dGQ6OnZlY3Rvcjx1aW50OF90PiBjaGVja0NoYXJTdHJpbmcgPSBnZW5lcmF0ZUNoZWNrQ2hhclN0
cmluZzxHTFlGQnVpbGRlcj4oKTsKKyAgICAgICAgc3RkOjp2ZWN0b3I8dWludDhfdD4geENoYXJT
dHJpbmcgPSBnZW5lcmF0ZVhDaGFyU3RyaW5nPEdMWUZCdWlsZGVyPigpOworICAgICAgICBmb3Ig
KHVpbnQxNl90IGdseXBoID0gMDsgZ2x5cGggPCBudW1HbHlwaHM7ICsrZ2x5cGgpIHsKKyAgICAg
ICAgICAgIHN0ZDo6dmVjdG9yPHVpbnQ4X3Q+JiBjaGFyU3RyaW5nID0gY2hhclN0cmluZ0Zvckds
eXBoKGdseXBoLCBib3hDaGFyU3RyaW5nLCBjaGVja0NoYXJTdHJpbmcsIHhDaGFyU3RyaW5nKTsK
KyAgICAgICAgICAgIHJlc3VsdC5pbnNlcnQocmVzdWx0LmVuZCgpLCBjaGFyU3RyaW5nLmJlZ2lu
KCksIGNoYXJTdHJpbmcuZW5kKCkpOworICAgICAgICB9CisgICAgfQorCisgICAgLy8gS2VlcCBp
biBzeW5jIHdpdGggZ2x5ZgorICAgIHZvaWQgYXBwZW5kTE9DQVRhYmxlKCkKKyAgICB7CisgICAg
ICAgIHN0ZDo6dmVjdG9yPHVpbnQ4X3Q+IGJveENoYXJTdHJpbmcgPSBnZW5lcmF0ZUJveENoYXJT
dHJpbmc8R0xZRkJ1aWxkZXI+KCk7CisgICAgICAgIHN0ZDo6dmVjdG9yPHVpbnQ4X3Q+IGNoZWNr
Q2hhclN0cmluZyA9IGdlbmVyYXRlQ2hlY2tDaGFyU3RyaW5nPEdMWUZCdWlsZGVyPigpOworICAg
ICAgICBzdGQ6OnZlY3Rvcjx1aW50OF90PiB4Q2hhclN0cmluZyA9IGdlbmVyYXRlWENoYXJTdHJp
bmc8R0xZRkJ1aWxkZXI+KCk7CisgICAgICAgIHVpbnQzMl90IGluZGV4ID0gMDsKKyAgICAgICAg
Zm9yICh1aW50MTZfdCBnbHlwaCA9IDA7IGdseXBoIDwgbnVtR2x5cGhzOyArK2dseXBoKSB7Cisg
ICAgICAgICAgICBhcHBlbmQzMihpbmRleCk7CisgICAgICAgICAgICBpbmRleCArPSBjaGFyU3Ry
aW5nRm9yR2x5cGgoZ2x5cGgsIGJveENoYXJTdHJpbmcsIGNoZWNrQ2hhclN0cmluZywgeENoYXJT
dHJpbmcpLnNpemUoKTsKKyAgICAgICAgfQorICAgICAgICBhcHBlbmQzMihpbmRleCk7CisgICAg
fQorCisgICAgdm9pZCBhcHBlbmRGRUFUVGFibGUoKQorICAgIHsKKyAgICAgICAgc2l6ZV90IHRh
YmxlTG9jYXRpb24gPSByZXN1bHQuc2l6ZSgpOworICAgICAgICBhcHBlbmQzMigweDAwMDEwMDAw
KTsgLy8gVmVyc2lvbgorICAgICAgICBhcHBlbmQxNihmZWF0dXJlRGVzY3JpcHRpb24uc2l6ZSgp
KTsgLy8gTnVtYmVyIG9mIGVudHJpZXMgaW4gdGhlIGZlYXR1cmUgbmFtZSBhcnJheQorICAgICAg
ICBhcHBlbmQxNigwKTsgLy8gcmVzZXJ2ZWQKKyAgICAgICAgYXBwZW5kMzIoMCk7IC8vIHJlc2Vy
dmVkCisKKyAgICAgICAgLy8gRmVhdHVyZSBuYW1lIGFycmF5CisgICAgICAgIGZvciAoRmVhdHVy
ZVR5cGUmIHR5cGUgOiBmZWF0dXJlRGVzY3JpcHRpb24pIHsKKyAgICAgICAgICAgIGFwcGVuZDE2
KHR5cGUudHlwZSk7IC8vIEZlYXR1cmUgdHlwZQorICAgICAgICAgICAgYXBwZW5kMTYodHlwZS5z
ZWxlY3RvcnMuc2l6ZSgpKTsgLy8gTnVtYmVyIG9mIHNldHRpbmdzCisgICAgICAgICAgICB0eXBl
LnNldHRpbmdUYWJsZU9mZnNldExvY2F0aW9uID0gcmVzdWx0LnNpemUoKTsKKyAgICAgICAgICAg
IGFwcGVuZDMyKDApOyAvLyBPZmZzZXQgaW4gYnl0ZXMgZnJvbSBiZWdpbm5pbmcgb2YgdGhpcyB0
YWJsZSB0byBmZWF0dXJlJ3Mgc2V0dGluZyBuYW1lIGFycmF5CisgICAgICAgICAgICBhcHBlbmQx
Nih0eXBlLmV4Y2x1c2l2ZSA/IDB4ODAwMCA6IDApOyAvLyBGbGFncy4gMHg4MDAwID0gRXhjbHVz
aXZlCisgICAgICAgICAgICBhcHBlbmQxNih0eXBlLnN0cmluZ0luZGV4ICsgbV9iYXNlU3RyaW5n
SW5kZXgpOyAvLyBJbmRleCBpbiB0aGUgbmFtZSB0YWJsZSBmb3IgdGhlIG5hbWUgb2YgdGhpcyBm
ZWF0dXJlCisgICAgICAgIH0KKworICAgICAgICAvLyBTZXR0aW5nIG5hbWUgYXJyYXkKKyAgICAg
ICAgZm9yIChGZWF0dXJlVHlwZSYgdHlwZSA6IGZlYXR1cmVEZXNjcmlwdGlvbikgeworICAgICAg
ICAgICAgb3ZlcndyaXRlMzIodHlwZS5zZXR0aW5nVGFibGVPZmZzZXRMb2NhdGlvbiwgc3RhdGlj
X2Nhc3Q8dWludDMyX3Q+KHJlc3VsdC5zaXplKCkgLSB0YWJsZUxvY2F0aW9uKSk7CisgICAgICAg
ICAgICBmb3IgKEZlYXR1cmVTZWxlY3RvciYgc2VsZWN0b3IgOiB0eXBlLnNlbGVjdG9ycykgewor
ICAgICAgICAgICAgICAgIGFwcGVuZDE2KHNlbGVjdG9yLnNlbGVjdG9yKTsgLy8gU2V0dGluZzog
a05vcm1hbFBvc2l0aW9uU2VsZWN0b3IgKGluaXRpYWwgc2V0dGluZyBpcyBkZWZhdWx0KQorICAg
ICAgICAgICAgICAgIGFwcGVuZDE2KHNlbGVjdG9yLnN0cmluZ0luZGV4ICsgbV9iYXNlU3RyaW5n
SW5kZXgpOyAvLyBJbmRleCBpbiB0aGUgbmFtZSB0YWJsZSBmb3IgdGhlIG5hbWUgb2YgdGhpcyBz
ZXR0aW5nCisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICB2b2lkIGFwcGVu
ZE1ldGFtb3JwaG9zaXNDaGFpbihjb25zdCBGZWF0dXJlVHlwZSYgdHlwZSwgY29uc3QgRmVhdHVy
ZVNlbGVjdG9yJiBzZWxlY3RvciwgdWludDE2X3QgZ2x5cGhUb1JlcGxhY2UsIHVpbnQxNl90IHdp
dGhNZSkKKyAgICB7CisgICAgICAgIHNpemVfdCBjaGFpbkxvY2F0aW9uID0gcmVzdWx0LnNpemUo
KTsKKyAgICAgICAgYXBwZW5kMzIoMCk7IC8vIERlZmF1bHQgZmxhZ3MKKyAgICAgICAgc2l6ZV90
IGNoYWluU2l6ZUxvY2F0aW9uID0gcmVzdWx0LnNpemUoKTsKKyAgICAgICAgYXBwZW5kMzIoMCk7
IC8vIFBsYWNlaG9sZGVyIGZvciBjaGFpbiBsZW5ndGggaW4gYnl0ZXMgKHBhZGRlZCB0byBtdWx0
aXBsZSBvZiA0KQorICAgICAgICBhcHBlbmQzMigyKTsgLy8gTnVtYmVyIG9mIGZlYXR1cmUgc3Vi
dGFibGUgZW50cmllcworICAgICAgICBhcHBlbmQzMigxKTsgLy8gTnVtYmVyIG9mIHN1YnRhYmxl
cyBpbiB0aGUgY2hhaW4KKworICAgICAgICAvLyBGZWF0dXJlIHRhYmxlCisgICAgICAgIGFwcGVu
ZDE2KHR5cGUudHlwZSk7IC8vIEZlYXR1cmUgdHlwZQorICAgICAgICBhcHBlbmQxNihzZWxlY3Rv
ci5zZWxlY3Rvcik7IC8vIEZlYXR1cmUgc2VsZWN0b3IKKyAgICAgICAgYXBwZW5kMzIoMSk7IC8v
IEVuYWJsZSBmbGFncworICAgICAgICBhcHBlbmQzMigweEZGRkZGRkZGKTsgLy8gZGlzYWJsZSBm
bGFncworCisgICAgICAgIC8vIEZlYXR1cmUgdGFibGUgMgorICAgICAgICBhcHBlbmQxNigwKTsg
Ly8gRmVhdHVyZSB0eXBlOiBrQWxsVHlwb2dyYXBoaWNGZWF0dXJlc1R5cGUKKyAgICAgICAgYXBw
ZW5kMTYoMSk7IC8vIEZlYXR1cmUgc2VsZWN0b3I6IGtBbGxUeXBlRmVhdHVyZXNPZmZTZWxlY3Rv
cgorICAgICAgICBhcHBlbmQzMigwKTsgLy8gRW5hYmxlIGZsYWdzCisgICAgICAgIGFwcGVuZDMy
KDApOyAvLyBkaXNhYmxlIGZsYWdzCisKKyAgICAgICAgLy8gTWV0YW1vcnBob3NpcyBzdWJ0YWJs
ZQorICAgICAgICBzaXplX3QgbWV0YW1vcnBob3Npc1N1YnRhYmxlU2l6ZUxvY2F0aW9uID0gcmVz
dWx0LnNpemUoKTsKKyAgICAgICAgYXBwZW5kMzIoMCk7IC8vIFBsYWNlaG9sZGVyIGZvciBjaGFp
biBsZW5ndGggaW4gYnl0ZXMgKHBhZGRlZCB0byBtdWx0aXBsZSBvZiA0KQorICAgICAgICBhcHBl
bmQzMig0KTsgLy8gQ292ZXJhZ2UgZmxhZ3MgYW5kIHN1YnRhYmxlIHR5cGUuIFN1YnRhYmxlIHR5
cGUgNDogTm9uY29udGV4dHVhbCAoInN3YXNoIikgc3VidGFibGUKKyAgICAgICAgYXBwZW5kMzIo
MSk7IC8vIHN1YkZlYXR1cmUgZmxhZ3MKKworICAgICAgICAvLyBOb24tY29udGV4dHVhbCBnbHlw
aCBzdWJzdGl0dXRpb24gc3VidGFibGUKKyAgICAgICAgYXBwZW5kMTYoNik7IC8vIExvb2t1cCBm
b3JtYXQ6IHNvcnRlZCBsaXN0IG9mIChnbHlwaCBpbmRleCwgbG9va3VwIHZhbHVlKSBwYWlycwor
ICAgICAgICAKKyAgICAgICAgLy8gQmluU3JjaEhlYWRlcgorICAgICAgICBhcHBlbmQxNig0KTsg
Ly8gU2l6ZSBvZiBhIGxvb2t1cCB1bml0IGZvciB0aGlzIHNlYXJjaCBpbiBieXRlcworICAgICAg
ICBhcHBlbmQxNigxKTsgLy8gTnVtYmVyIG9mIHVuaXRzIHRvIGJlIHNlYXJjaGVkCisgICAgICAg
IGFwcGVuZDE2KDQpOyAvLyBTZWFyY2ggcmFuZ2U6IFRoZSB2YWx1ZSBvZiB1bml0U2l6ZSB0aW1l
cyB0aGUgbGFyZ2VzdCBwb3dlciBvZiAyIHRoYXQgaXMgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIHRo
ZSB2YWx1ZSBvZiBuVW5pdHMuCisgICAgICAgIGFwcGVuZDE2KDApOyAvLyBFbnRyeSBzZWxlY3Rv
cjogVGhlIGxvZyBiYXNlIDIgb2YgdGhlIGxhcmdlc3QgcG93ZXIgb2YgMiBsZXNzIHRoYW4gb3Ig
ZXF1YWwgdG8gdGhlIHZhbHVlIG9mIG5Vbml0cy4KKyAgICAgICAgYXBwZW5kMTYoMCk7IC8vIFJh
bmdlIHNoaWZ0OiBUaGUgdmFsdWUgb2YgdW5pdFNpemUgdGltZXMgdGhlIGRpZmZlcmVuY2Ugb2Yg
dGhlIHZhbHVlIG9mIG5Vbml0cyBtaW51cyB0aGUgbGFyZ2VzdCBwb3dlciBvZiAyIGxlc3MgdGhh
biBvciBlcXVhbCB0byB0aGUgdmFsdWUgb2YgblVuaXRzLgorICAgICAgICAvLyBFbnRyaWVzCisg
ICAgICAgIGFwcGVuZDE2KGdseXBoVG9SZXBsYWNlKTsKKyAgICAgICAgYXBwZW5kMTYod2l0aE1l
KTsKKworICAgICAgICBvdmVyd3JpdGUzMihtZXRhbW9ycGhvc2lzU3VidGFibGVTaXplTG9jYXRp
b24sIHN0YXRpY19jYXN0PHVpbnQzMl90PihyZXN1bHQuc2l6ZSgpIC0gbWV0YW1vcnBob3Npc1N1
YnRhYmxlU2l6ZUxvY2F0aW9uKSk7CisKKyAgICAgICAgd2hpbGUgKHJlc3VsdC5zaXplKCkgJSA0
KQorICAgICAgICAgICAgcmVzdWx0LnB1c2hfYmFjaygwKTsKKyAgICAgICAgb3ZlcndyaXRlMzIo
Y2hhaW5TaXplTG9jYXRpb24sIHN0YXRpY19jYXN0PHVpbnQzMl90PihyZXN1bHQuc2l6ZSgpIC0g
Y2hhaW5Mb2NhdGlvbikpOworICAgIH0KKworICAgIHZvaWQgYXBwZW5kTU9SWFRhYmxlKCkKKyAg
ICB7CisgICAgICAgIGFwcGVuZDE2KDIpOyAvLyBWZXJzaW9uCisgICAgICAgIGFwcGVuZDE2KDAp
OyAvLyBVbnVzZWQKKyAgICAgICAgc2l6ZV90IG51bWJlck9mQ2hhaW5zTG9jYXRpb24gPSByZXN1
bHQuc2l6ZSgpOworICAgICAgICBhcHBlbmQzMigwKTsgLy8gTnVtYmVyIG9mIG1ldGFtb3JwaG9z
aXMgY2hhaW5zIHBsYWNlaG9sZGVyCisKKyAgICAgICAgaW50IGNvdW50ID0gMDsKKyAgICAgICAg
Zm9yIChGZWF0dXJlVHlwZSYgdHlwZSA6IGZlYXR1cmVEZXNjcmlwdGlvbikgeworICAgICAgICAg
ICAgZm9yIChGZWF0dXJlU2VsZWN0b3ImIHNlbGVjdG9yIDogdHlwZS5zZWxlY3RvcnMpIHsKKyAg
ICAgICAgICAgICAgICBhcHBlbmRNZXRhbW9ycGhvc2lzQ2hhaW4odHlwZSwgc2VsZWN0b3IsIGNv
dW50ICsgMywgMSk7CisgICAgICAgICAgICAgICAgY291bnQrKzsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorICAgIAorICAgICAgICBvdmVyd3JpdGUzMihudW1iZXJPZkNoYWluc0xvY2F0aW9u
LCBjb3VudCk7CisgICAgfQorCiAgICAgdm9pZCBhcHBlbmRTdWJzdGl0dXRpb25TdWJ0YWJsZShz
aXplX3Qgc3VidGFibGVSZWNvcmRMb2NhdGlvbiwgdWludDE2X3QgaUdldFJlcGxhY2VkLCB1aW50
MTZfdCByZXBsYWNlZFdpdGhNZSkKICAgICB7CiAgICAgICAgIG92ZXJ3cml0ZTE2KHN1YnRhYmxl
UmVjb3JkTG9jYXRpb24gKyA2LCByZXN1bHQuc2l6ZSgpIC0gc3VidGFibGVSZWNvcmRMb2NhdGlv
bik7CkBAIC02NzcsNyArMTAxMCw3IEBAIHByaXZhdGU6CiAgICAgICAgIGFwcGVuZDE2KDApOyAv
LyBUcmFpdHMKICAgICAgICAgYXBwZW5kMTYoMyk7IC8vIFNtYWxsZXN0IHJlYWRhYmxlIHNpemUg
aW4gcGl4ZWxzCiAgICAgICAgIGFwcGVuZDE2KDApOyAvLyBNaWdodCBjb250YWluIExUUiBvciBS
VEwgZ2x5cGhzCi0gICAgICAgIGFwcGVuZDE2KDApOyAvLyBTaG9ydCBvZmZzZXRzIGluIHRoZSAn
bG9jYScgdGFibGUuIEhvd2V2ZXIsIE9URiBmb250cyBkb24ndCBoYXZlIGEgJ2xvY2EnIHRhYmxl
IHNvIHRoaXMgaXMgaXJyZWxldmFudAorICAgICAgICBhcHBlbmQxNigxKTsgLy8gTG9uZyBvZmZz
ZXRzIGluIHRoZSAnbG9jYScgdGFibGUuCiAgICAgICAgIGFwcGVuZDE2KDApOyAvLyBHbHlwaCBk
YXRhIGZvcm1hdAogICAgIH0KICAgICAKQEAgLTcwNSw3ICsxMDM4LDcgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIGFwcGVuZEhNVFhUYWJsZSgpCiAgICAgewogICAgICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgbnVtR2x5cGhzOyArK2kpIHsKLSAgICAgICAgICAgIGFwcGVuZDE2KGNsYW1wVG88
dWludDE2X3Q+KHVuaXRzUGVyRW0pKTsgLy8gaG9yaXpvbnRhbCBhZHZhbmNlCisgICAgICAgICAg
ICBhcHBlbmQxNihjbGFtcFRvPHVpbnQxNl90PihzdGF0aWNfY2FzdDxpbnQzMl90Pih1bml0c1Bl
ckVtKSkpOyAvLyBob3Jpem9udGFsIGFkdmFuY2UKICAgICAgICAgICAgIGFwcGVuZDE2KGNsYW1w
VG88aW50MTZfdD4oMCkpOyAvLyBsZWZ0IHNpZGUgYmVhcmluZwogICAgICAgICB9CiAgICAgfQpA
QCAtNzI4LDI1ICsxMDYxLDQ3IEBAIHByaXZhdGU6CiAgICAgICAgIGFwcGVuZDE2KG51bUdseXBo
cyk7IC8vIE1heGltdW0gbnVtYmVyIG9mIGdseXBocyByZWZlcmVuY2VkIGF0IHRvcCBsZXZlbAog
ICAgICAgICBhcHBlbmQxNigwKTsgLy8gTm8gY29tcG91bmQgZ2x5cGhzCiAgICAgfQotICAgIAot
ICAgIHZvaWQgYXBwZW5kTkFNRVRhYmxlKCkKLSAgICB7Ci0gICAgICAgIHN0ZDo6c3RyaW5nIGZv
bnROYW1lID0gIk15bGVzRm9udCI7Ci0KLSAgICAgICAgYXBwZW5kMTYoMCk7IC8vIEZvcm1hdCBz
ZWxlY3RvcgotICAgICAgICBhcHBlbmQxNigxKTsgLy8gTnVtYmVyIG9mIG5hbWUgcmVjb3JkcyBp
biB0YWJsZQotICAgICAgICBhcHBlbmQxNigxOCk7IC8vIE9mZnNldCBpbiBieXRlcyB0byB0aGUg
YmVnaW5uaW5nIG9mIG5hbWUgY2hhcmFjdGVyIHN0cmluZ3MKIAorICAgIHZvaWQgYXBwZW5kTmFt
ZVN1YnRhYmxlKGNvbnN0IHN0ZDo6c3RyaW5nJiBzLCB1aW50MTZfdCBuYW1lSWRlbnRpZmllcikK
KyAgICB7CiAgICAgICAgIGFwcGVuZDE2KDApOyAvLyBVbmljb2RlCiAgICAgICAgIGFwcGVuZDE2
KDMpOyAvLyBVbmljb2RlIHZlcnNpb24gMi4wIG9yIGxhdGVyCiAgICAgICAgIGFwcGVuZDE2KDAp
OyAvLyBMYW5ndWFnZQotICAgICAgICBhcHBlbmQxNigxKTsgLy8gTmFtZSBpZGVudGlmaWVyLiAx
ID0gRm9udCBmYW1pbHkKLSAgICAgICAgYXBwZW5kMTYoZm9udE5hbWUubGVuZ3RoKCkpOwotICAg
ICAgICBhcHBlbmQxNigwKTsgLy8gT2Zmc2V0IGludG8gbmFtZSBkYXRhCisgICAgICAgIGFwcGVu
ZDE2KG1fYmFzZVN0cmluZ0luZGV4ICsgbmFtZUlkZW50aWZpZXIpOyAvLyBOYW1lIGlkZW50aWZp
ZXIKKyAgICAgICAgYXBwZW5kMTYocy5sZW5ndGgoKSk7CisgICAgICAgIGFwcGVuZDE2KG1fbmFt
ZU9mZnNldCk7IC8vIE9mZnNldCBpbnRvIG5hbWUgZGF0YQorICAgICAgICBtX25hbWVPZmZzZXQg
Kz0gcy5zaXplKCkgKiAyOyAvLyBDb2RlIHVuaXRzIGdldCAyIGJ5dGVzIGVhY2gKKyAgICB9CiAK
LSAgICAgICAgZm9yIChhdXRvIGNvZGVVbml0IDogZm9udE5hbWUpCisgICAgdm9pZCBhcHBlbmQy
Qnl0ZUFTQ0lJU3RyaW5nKHN0ZDo6c3RyaW5nJiBzKQorICAgIHsKKyAgICAgICAgZm9yIChhdXRv
IGNvZGVVbml0IDogcykKICAgICAgICAgICAgIGFwcGVuZDE2KGNvZGVVbml0KTsKICAgICB9CisK
KyAgICB2b2lkIGFwcGVuZE5BTUVUYWJsZSgpCisgICAgeworICAgICAgICBzdGQ6OnN0cmluZyBm
YW1pbHlOYW1lID0gIk15bGVzRm9udCI7IC8vIDE6IEZvbnQgRmFtaWx5CisKKyAgICAgICAgdWlu
dDE2X3QgbnVtYmVyT2ZSZWNvcmRzID0gbV9zdHJpbmdJbmRleCArIDE7CisgICAgICAgIGFwcGVu
ZDE2KDApOyAvLyBGb3JtYXQgc2VsZWN0b3IKKyAgICAgICAgYXBwZW5kMTYobnVtYmVyT2ZSZWNv
cmRzKTsgLy8gTnVtYmVyIG9mIG5hbWUgcmVjb3JkcyBpbiB0YWJsZQorICAgICAgICBhcHBlbmQx
Nig2ICsgMTIgKiBudW1iZXJPZlJlY29yZHMpOyAvLyBPZmZzZXQgaW4gYnl0ZXMgdG8gdGhlIGJl
Z2lubmluZyBvZiBuYW1lIGNoYXJhY3RlciBzdHJpbmdzCisKKyAgICAgICAgYXBwZW5kTmFtZVN1
YnRhYmxlKGZhbWlseU5hbWUsIDEpOyAvLyAxOiBGb250IEZhbWlseQorICAgICAgICBmb3IgKEZl
YXR1cmVUeXBlJiB0eXBlIDogZmVhdHVyZURlc2NyaXB0aW9uKSB7CisgICAgICAgICAgICBhcHBl
bmROYW1lU3VidGFibGUodHlwZS5uYW1lLCB0eXBlLnN0cmluZ0luZGV4KTsKKyAgICAgICAgICAg
IGZvciAoRmVhdHVyZVNlbGVjdG9yJiBzZWxlY3RvciA6IHR5cGUuc2VsZWN0b3JzKQorICAgICAg
ICAgICAgICAgIGFwcGVuZE5hbWVTdWJ0YWJsZShzZWxlY3Rvci5uYW1lLCBzZWxlY3Rvci5zdHJp
bmdJbmRleCk7CisgICAgICAgIH0KKworICAgICAgICBhcHBlbmQyQnl0ZUFTQ0lJU3RyaW5nKGZh
bWlseU5hbWUpOworICAgICAgICBmb3IgKEZlYXR1cmVUeXBlJiB0eXBlIDogZmVhdHVyZURlc2Ny
aXB0aW9uKSB7CisgICAgICAgICAgICBhcHBlbmQyQnl0ZUFTQ0lJU3RyaW5nKHR5cGUubmFtZSk7
CisgICAgICAgICAgICBmb3IgKEZlYXR1cmVTZWxlY3RvciYgc2VsZWN0b3IgOiB0eXBlLnNlbGVj
dG9ycykKKyAgICAgICAgICAgICAgICBhcHBlbmQyQnl0ZUFTQ0lJU3RyaW5nKHNlbGVjdG9yLm5h
bWUpOworICAgICAgICB9CisgICAgfQogICAgIAogICAgIHZvaWQgYXBwZW5kUE9TVFRhYmxlKCkK
ICAgICB7CkBAIC03OTYsMTAgKzExNTEsMTQgQEAgcHJpdmF0ZToKICAgICB9CiAKICAgICB1bnNp
Z25lZCBtX3RhYmxlc0FwcGVuZGVkQ291bnQgeyAwIH07CisgICAgdW5zaWduZWQgbV9uYW1lT2Zm
c2V0IHsgMCB9OworICAgIHN0YXRpYyBjb25zdGV4cHIgdWludDE2X3QgbV9iYXNlU3RyaW5nSW5k
ZXggeyAyNTcgfTsKKyAgICB1aW50MTZfdCBtX3N0cmluZ0luZGV4IHsgMCB9OworICAgIHN0ZDo6
dmVjdG9yPEZlYXR1cmVUeXBlPiBmZWF0dXJlRGVzY3JpcHRpb247CiAgICAgc3RkOjp2ZWN0b3I8
dWludDhfdD4gcmVzdWx0OwogfTsKIAotc3RkOjp2ZWN0b3I8dWludDhfdD4gZ2VuZXJhdGVGb250
KCkKK3N0ZDo6dmVjdG9yPHVpbnQ4X3Q+IGdlbmVyYXRlRm9udChUeXBlIHR5cGUpCiB7Ci0gICAg
cmV0dXJuIEdlbmVyYXRvcigpLmdlbmVyYXRlKCk7CisgICAgcmV0dXJuIEdlbmVyYXRvcigpLmdl
bmVyYXRlKHR5cGUpOwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvRm9udFdpdGhGZWF0dXJlcy9Gb250
V2l0aEZlYXR1cmVzL0ZvbnRDcmVhdG9yLmggYi9Ub29scy9Gb250V2l0aEZlYXR1cmVzL0ZvbnRX
aXRoRmVhdHVyZXMvRm9udENyZWF0b3IuaAppbmRleCBiMTkyMDg2N2I5NzlmNzM3ZDE2YjAzYTkx
MzJjMTAwYzBlMzhkMzMzLi5jM2Y1NjM4YzlkMmQwNzQxN2I4OGFhNzE4NGYyOTI4NjRiMTUwYTg4
IDEwMDY0NAotLS0gYS9Ub29scy9Gb250V2l0aEZlYXR1cmVzL0ZvbnRXaXRoRmVhdHVyZXMvRm9u
dENyZWF0b3IuaAorKysgYi9Ub29scy9Gb250V2l0aEZlYXR1cmVzL0ZvbnRXaXRoRmVhdHVyZXMv
Rm9udENyZWF0b3IuaApAQCAtMjgsNiArMjgsMTEgQEAKIAogI2luY2x1ZGUgPHZlY3Rvcj4KIAot
c3RkOjp2ZWN0b3I8dWludDhfdD4gZ2VuZXJhdGVGb250KCk7CitlbnVtIGNsYXNzIFR5cGUgewor
ICAgIE9wZW5UeXBlLAorICAgIFRydWVUeXBlCit9OworCitzdGQ6OnZlY3Rvcjx1aW50OF90PiBn
ZW5lcmF0ZUZvbnQoVHlwZSk7CiAKICNlbmRpZiAvKiBGb250Q3JlYXRvcl9oICovCmRpZmYgLS1n
aXQgYS9Ub29scy9Gb250V2l0aEZlYXR1cmVzL0ZvbnRXaXRoRmVhdHVyZXMvbWFpbi5jcHAgYi9U
b29scy9Gb250V2l0aEZlYXR1cmVzL0ZvbnRXaXRoRmVhdHVyZXMvbWFpbi5jcHAKaW5kZXggMTYy
ZWRmNzQ3NTM2NjI3YjQ1NzY1ODM2MmFjNzVmMGYzMzc0NTU3Ny4uNDg2NTQ5Mzg0YWQxMjljMThl
NWE4MzMwZWQ0NzE0MmY5ZGJmMGY2OCAxMDA2NDQKLS0tIGEvVG9vbHMvRm9udFdpdGhGZWF0dXJl
cy9Gb250V2l0aEZlYXR1cmVzL21haW4uY3BwCisrKyBiL1Rvb2xzL0ZvbnRXaXRoRmVhdHVyZXMv
Rm9udFdpdGhGZWF0dXJlcy9tYWluLmNwcApAQCAtMzIsMTIgKzMyLDMyIEBACiAjaW5jbHVkZSA8
SW1hZ2VJTy9JbWFnZUlPLmg+CiAjaW5jbHVkZSA8ZnN0cmVhbT4KIAotdm9pZCBkcmF3VGV4dFdp
dGhGZWF0dXJlKENHQ29udGV4dFJlZiBjb250ZXh0LCBDVEZvbnREZXNjcmlwdG9yUmVmIGZvbnRE
ZXNjcmlwdG9yLCBDRlN0cmluZ1JlZiBmZWF0dXJlLCBpbnQgdmFsdWUsIENHUG9pbnQgbG9jYXRp
b24pCitzdGF0aWMgQ1RGb250RGVzY3JpcHRvclJlZiBjb25zdHJ1Y3RGb250V2l0aFRydWVUeXBl
RmVhdHVyZShDVEZvbnREZXNjcmlwdG9yUmVmIGZvbnREZXNjcmlwdG9yLCBpbnQgdHlwZSwgaW50
IHNlbGVjdG9yKQogewotICAgIENHRmxvYXQgZm9udFNpemUgPSAyNTsKLSAgICBDR0NvbnRleHRT
ZXRUZXh0TWF0cml4KGNvbnRleHQsIENHQWZmaW5lVHJhbnNmb3JtU2NhbGUoQ0dBZmZpbmVUcmFu
c2Zvcm1JZGVudGl0eSwgMSwgMSkpOwotICAgIENHQ29udGV4dFNldFRleHRQb3NpdGlvbihjb250
ZXh0LCBsb2NhdGlvbi54LCBsb2NhdGlvbi55KTsKKyAgICBDRk51bWJlclJlZiB0eXBlVmFsdWUg
PSBDRk51bWJlckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBrQ0ZOdW1iZXJJbnRUeXBlLCAm
dHlwZSk7CisgICAgQ0ZOdW1iZXJSZWYgc2VsZWN0b3JWYWx1ZSA9IENGTnVtYmVyQ3JlYXRlKGtD
RkFsbG9jYXRvckRlZmF1bHQsIGtDRk51bWJlckludFR5cGUsICZzZWxlY3Rvcik7CisgICAgQ0ZU
eXBlUmVmIGZlYXR1cmVEaWN0aW9uYXJ5S2V5c1tdID0geyBrQ1RGb250RmVhdHVyZVR5cGVJZGVu
dGlmaWVyS2V5LCBrQ1RGb250RmVhdHVyZVNlbGVjdG9ySWRlbnRpZmllcktleSB9OworICAgIENG
VHlwZVJlZiBmZWF0dXJlRGljdGlvbmFyeVZhbHVlc1tdID0geyB0eXBlVmFsdWUsIHNlbGVjdG9y
VmFsdWUgfTsKKyAgICBDRkRpY3Rpb25hcnlSZWYgZmVhdHVyZURpY3Rpb25hcnkgPSBDRkRpY3Rp
b25hcnlDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgZmVhdHVyZURpY3Rpb25hcnlLZXlzLCBm
ZWF0dXJlRGljdGlvbmFyeVZhbHVlcywgMiwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tz
LCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcyk7CisgICAgQ0ZSZWxlYXNlKHR5cGVW
YWx1ZSk7CisgICAgQ0ZSZWxlYXNlKHNlbGVjdG9yVmFsdWUpOworCisgICAgQ0ZUeXBlUmVmIGZl
YXR1cmVTZXR0aW5nc1ZhbHVlc1tdID0geyBmZWF0dXJlRGljdGlvbmFyeSB9OworICAgIENGQXJy
YXlSZWYgZm9udEZlYXR1cmVTZXR0aW5ncyA9IENGQXJyYXlDcmVhdGUoa0NGQWxsb2NhdG9yRGVm
YXVsdCwgZmVhdHVyZVNldHRpbmdzVmFsdWVzLCAxLCAma0NGVHlwZUFycmF5Q2FsbEJhY2tzKTsK
KyAgICBDRlJlbGVhc2UoZmVhdHVyZURpY3Rpb25hcnkpOworCisgICAgQ0ZUeXBlUmVmIGZvbnRE
ZXNjcmlwdG9yS2V5c1tdID0geyBrQ1RGb250RmVhdHVyZVNldHRpbmdzQXR0cmlidXRlIH07Cisg
ICAgQ0ZUeXBlUmVmIGZvbnREZXNjcmlwdG9yVmFsdWVzW10gPSB7IGZvbnRGZWF0dXJlU2V0dGlu
Z3MgfTsKKyAgICBDRkRpY3Rpb25hcnlSZWYgZm9udERlc2NyaXB0b3JBdHRyaWJ1dGVzID0gQ0ZE
aWN0aW9uYXJ5Q3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGZvbnREZXNjcmlwdG9yS2V5cywg
Zm9udERlc2NyaXB0b3JWYWx1ZXMsIDEsICZrQ0ZUeXBlRGljdGlvbmFyeUtleUNhbGxCYWNrcywg
JmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpOworICAgIENGUmVsZWFzZShmb250RmVh
dHVyZVNldHRpbmdzKTsKIAorICAgIENURm9udERlc2NyaXB0b3JSZWYgbW9kaWZpZWRGb250RGVz
Y3JpcHRvciA9IENURm9udERlc2NyaXB0b3JDcmVhdGVDb3B5V2l0aEF0dHJpYnV0ZXMoZm9udERl
c2NyaXB0b3IsIGZvbnREZXNjcmlwdG9yQXR0cmlidXRlcyk7CisgICAgQ0ZSZWxlYXNlKGZvbnRE
ZXNjcmlwdG9yQXR0cmlidXRlcyk7CisgICAgcmV0dXJuIG1vZGlmaWVkRm9udERlc2NyaXB0b3I7
Cit9CisKK3N0YXRpYyBDVEZvbnREZXNjcmlwdG9yUmVmIGNvbnN0cnVjdEZvbnRXaXRoT3BlblR5
cGVGZWF0dXJlKENURm9udERlc2NyaXB0b3JSZWYgZm9udERlc2NyaXB0b3IsIENGU3RyaW5nUmVm
IGZlYXR1cmUsIGludCB2YWx1ZSkKK3sKICAgICBDRk51bWJlclJlZiBmZWF0dXJlVmFsdWUgPSBD
Rk51bWJlckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBrQ0ZOdW1iZXJJbnRUeXBlLCAmdmFs
dWUpOwogICAgIENGVHlwZVJlZiBmZWF0dXJlRGljdGlvbmFyeUtleXNbXSA9IHsga0NURm9udE9w
ZW5UeXBlRmVhdHVyZVRhZywga0NURm9udE9wZW5UeXBlRmVhdHVyZVZhbHVlIH07CiAgICAgQ0ZU
eXBlUmVmIGZlYXR1cmVEaWN0aW9uYXJ5VmFsdWVzW10gPSB7IGZlYXR1cmUsIGZlYXR1cmVWYWx1
ZSB9OwpAQCAtNTUsMTQgKzc1LDIwIEBAIHZvaWQgZHJhd1RleHRXaXRoRmVhdHVyZShDR0NvbnRl
eHRSZWYgY29udGV4dCwgQ1RGb250RGVzY3JpcHRvclJlZiBmb250RGVzY3JpcHRvCiAKICAgICBD
VEZvbnREZXNjcmlwdG9yUmVmIG1vZGlmaWVkRm9udERlc2NyaXB0b3IgPSBDVEZvbnREZXNjcmlw
dG9yQ3JlYXRlQ29weVdpdGhBdHRyaWJ1dGVzKGZvbnREZXNjcmlwdG9yLCBmb250RGVzY3JpcHRv
ckF0dHJpYnV0ZXMpOwogICAgIENGUmVsZWFzZShmb250RGVzY3JpcHRvckF0dHJpYnV0ZXMpOwor
ICAgIHJldHVybiBtb2RpZmllZEZvbnREZXNjcmlwdG9yOworfQogCi0gICAgQ1RGb250UmVmIGZv
bnQgPSBDVEZvbnRDcmVhdGVXaXRoRm9udERlc2NyaXB0b3IobW9kaWZpZWRGb250RGVzY3JpcHRv
ciwgZm9udFNpemUsIG51bGxwdHIpOwotICAgIENGUmVsZWFzZShtb2RpZmllZEZvbnREZXNjcmlw
dG9yKTsKK3N0YXRpYyB2b2lkIGRyYXdUZXh0KENHQ29udGV4dFJlZiBjb250ZXh0LCBDVEZvbnRE
ZXNjcmlwdG9yUmVmIGZvbnREZXNjcmlwdG9yLCBDRlN0cmluZ1JlZiBwcmVmaXgsIENHUG9pbnQg
bG9jYXRpb24pCit7CisgICAgQ0dDb250ZXh0U2V0VGV4dE1hdHJpeChjb250ZXh0LCBDR0FmZmlu
ZVRyYW5zZm9ybVNjYWxlKENHQWZmaW5lVHJhbnNmb3JtSWRlbnRpdHksIDEsIDEpKTsKKyAgICBD
R0NvbnRleHRTZXRUZXh0UG9zaXRpb24oY29udGV4dCwgbG9jYXRpb24ueCwgbG9jYXRpb24ueSk7
CisKKyAgICBDR0Zsb2F0IGZvbnRTaXplID0gMjU7CisgICAgQ1RGb250UmVmIGZvbnQgPSBDVEZv
bnRDcmVhdGVXaXRoRm9udERlc2NyaXB0b3IoZm9udERlc2NyaXB0b3IsIGZvbnRTaXplLCBudWxs
cHRyKTsKIAogICAgIENGTXV0YWJsZVN0cmluZ1JlZiBzdHJpbmcgPSBDRlN0cmluZ0NyZWF0ZU11
dGFibGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgMCk7Ci0gICAgQ0ZTdHJpbmdBcHBlbmQoc3RyaW5n
LCBmZWF0dXJlKTsKLSAgICBDRlN0cmluZ0FwcGVuZChzdHJpbmcsIHZhbHVlID8gQ0ZTVFIoIiAg
KG9uKSIpIDogQ0ZTVFIoIiAob2ZmKSIpKTsKLSAgICBDRlN0cmluZ0FwcGVuZChzdHJpbmcsIENG
U1RSKCI6IEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4
eXoiKSk7CisgICAgQ0ZTdHJpbmdBcHBlbmQoc3RyaW5nLCBwcmVmaXgpOworICAgIENGU3RyaW5n
QXBwZW5kKHN0cmluZywgQ0ZTVFIoIkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hp
amtsbW5vcHFyc3R1dnd4eXoiKSk7CiAKICAgICBDR0NvbG9yUmVmIHJlZCA9IENHQ29sb3JDcmVh
dGVHZW5lcmljUkdCKDEsIDAsIDAsIDEpOwogICAgIENGVHlwZVJlZiBsaW5lS2V5c1tdID0geyBr
Q1RGb3JlZ3JvdW5kQ29sb3JBdHRyaWJ1dGVOYW1lIH07CkBAIC03OCwxMCArMTA0LDEwIEBAIHZv
aWQgZHJhd1RleHRXaXRoRmVhdHVyZShDR0NvbnRleHRSZWYgY29udGV4dCwgQ1RGb250RGVzY3Jp
cHRvclJlZiBmb250RGVzY3JpcHRvCiAgICAgQ0ZSZWxlYXNlKGF0dHJpYnV0ZWRTdHJpbmcpOwog
CiAgICAgQ1RGb250UmVmIG1vbm9zcGFjZUZvbnQgPSBDVEZvbnRDcmVhdGVXaXRoTmFtZShDRlNU
UigiQ291cmllciIpLCBmb250U2l6ZSwgbnVsbHB0cik7Ci0gICAgQ0ZBdHRyaWJ1dGVkU3RyaW5n
U2V0QXR0cmlidXRlKG11dGFibGVBdHRyaWJ1dGVkU3RyaW5nLCBDRlJhbmdlTWFrZSgwLCAxMiks
IGtDVEZvbnRBdHRyaWJ1dGVOYW1lLCBtb25vc3BhY2VGb250KTsKKyAgICBDRkF0dHJpYnV0ZWRT
dHJpbmdTZXRBdHRyaWJ1dGUobXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcsIENGUmFuZ2VNYWtlKDAs
IENGU3RyaW5nR2V0TGVuZ3RoKHByZWZpeCkpLCBrQ1RGb250QXR0cmlidXRlTmFtZSwgbW9ub3Nw
YWNlRm9udCk7CiAgICAgQ0ZSZWxlYXNlKG1vbm9zcGFjZUZvbnQpOwogCi0gICAgQ0ZBdHRyaWJ1
dGVkU3RyaW5nU2V0QXR0cmlidXRlKG11dGFibGVBdHRyaWJ1dGVkU3RyaW5nLCBDRlJhbmdlTWFr
ZSgxMiwgNTIpLCBrQ1RGb250QXR0cmlidXRlTmFtZSwgZm9udCk7CisgICAgQ0ZBdHRyaWJ1dGVk
U3RyaW5nU2V0QXR0cmlidXRlKG11dGFibGVBdHRyaWJ1dGVkU3RyaW5nLCBDRlJhbmdlTWFrZShD
RlN0cmluZ0dldExlbmd0aChwcmVmaXgpLCBDRlN0cmluZ0dldExlbmd0aChzdHJpbmcpIC0gQ0ZT
dHJpbmdHZXRMZW5ndGgocHJlZml4KSksIGtDVEZvbnRBdHRyaWJ1dGVOYW1lLCBmb250KTsKICAg
ICBDRlJlbGVhc2UoZm9udCk7CiAKICAgICBDVExpbmVSZWYgbGluZSA9IENUTGluZUNyZWF0ZVdp
dGhBdHRyaWJ1dGVkU3RyaW5nKG11dGFibGVBdHRyaWJ1dGVkU3RyaW5nKTsKQEAgLTkzLDEzICsx
MTksMTQgQEAgdm9pZCBkcmF3VGV4dFdpdGhGZWF0dXJlKENHQ29udGV4dFJlZiBjb250ZXh0LCBD
VEZvbnREZXNjcmlwdG9yUmVmIGZvbnREZXNjcmlwdG8KIAogaW50IG1haW4oaW50IGFyZ2MsIGNv
bnN0IGNoYXIgKiBhcmd2W10pCiB7Ci0gICAgc2l6ZV90IHdpZHRoID0gMjAwMDsKKyAgICBzaXpl
X3Qgd2lkdGggPSAyNTAwOwogICAgIHNpemVfdCBoZWlnaHQgPSAyMDAwOwogICAgIENHQ29sb3JT
cGFjZVJlZiBjb2xvclNwYWNlID0gQ0dDb2xvclNwYWNlQ3JlYXRlRGV2aWNlUkdCKCk7CiAgICAg
Q0dDb250ZXh0UmVmIGNvbnRleHQgPSBDR0JpdG1hcENvbnRleHRDcmVhdGUobnVsbHB0ciwgd2lk
dGgsIGhlaWdodCwgOCwgd2lkdGggKiA0LCBjb2xvclNwYWNlLCBrQ0dJbWFnZUFscGhhTm9uZVNr
aXBMYXN0KTsKICAgICBDR0NvbG9yU3BhY2VSZWxlYXNlKGNvbG9yU3BhY2UpOwotICAgIGNvbnN0
IHN0ZDo6dmVjdG9yPHVpbnQ4X3Q+IGZvbnRWZWN0b3IgPSBnZW5lcmF0ZUZvbnQoKTsKLSAgICBz
dGQ6Om9mc3RyZWFtIG91dHB1dEZpbGUoIi9Wb2x1bWVzL0RhdGEvaG9tZS9tbWF4ZmllbGQvdG1w
L291dHB1dC5vdGYiLCBzdGQ6Omlvczo6b3V0IHwgc3RkOjppb3M6OmJpbmFyeSk7CisgICAgVHlw
ZSB0eXBlID0gVHlwZTo6VHJ1ZVR5cGU7CisgICAgY29uc3Qgc3RkOjp2ZWN0b3I8dWludDhfdD4g
Zm9udFZlY3RvciA9IGdlbmVyYXRlRm9udCh0eXBlKTsKKyAgICBzdGQ6Om9mc3RyZWFtIG91dHB1
dEZpbGUoIi9Wb2x1bWVzL0RhdGEvaG9tZS9tbWF4ZmllbGQvdG1wL291dHB1dC50dGYiLCBzdGQ6
Omlvczo6b3V0IHwgc3RkOjppb3M6OmJpbmFyeSk7CiAgICAgZm9yICh1aW50OF90IGIgOiBmb250
VmVjdG9yKQogICAgICAgICBvdXRwdXRGaWxlIDw8IGI7CiAgICAgb3V0cHV0RmlsZS5jbG9zZSgp
OwpAQCAtMTA4LDE1ICsxMzUsODQgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNvbnN0IGNoYXIgKiBh
cmd2W10pCiAgICAgQ1RGb250RGVzY3JpcHRvclJlZiBmb250RGVzY3JpcHRvciA9IENURm9udE1h
bmFnZXJDcmVhdGVGb250RGVzY3JpcHRvckZyb21EYXRhKGZvbnREYXRhKTsKICAgICBDRlJlbGVh
c2UoZm9udERhdGEpOwogCi0gICAgQ0ZUeXBlUmVmIGZlYXR1cmVWYWx1ZXNbXSA9IHsgQ0ZTVFIo
ImxpZ2EiKSwgQ0ZTVFIoImNsaWciKSwgQ0ZTVFIoImRsaWciKSwgQ0ZTVFIoImhsaWciKSwgQ0ZT
VFIoImNhbHQiKSwgQ0ZTVFIoInN1YnMiKSwgQ0ZTVFIoInN1cHMiKSwgQ0ZTVFIoInNtY3AiKSwg
Q0ZTVFIoImMyc2MiKSwgQ0ZTVFIoInBjYXAiKSwgQ0ZTVFIoImMycGMiKSwgQ0ZTVFIoInVuaWMi
KSwgQ0ZTVFIoInRpdGwiKSwgQ0ZTVFIoIm9udW0iKSwgQ0ZTVFIoInBudW0iKSwgQ0ZTVFIoInRu
dW0iKSwgQ0ZTVFIoImZyYWMiKSwgQ0ZTVFIoImFmcmMiKSwgQ0ZTVFIoIm9yZG4iKSwgQ0ZTVFIo
Inplcm8iKSwgQ0ZTVFIoImhpc3QiKSwgQ0ZTVFIoImpwNzgiKSwgQ0ZTVFIoImpwODMiKSwgQ0ZT
VFIoImpwOTAiKSwgQ0ZTVFIoImpwMDQiKSwgQ0ZTVFIoInNtcGwiKSwgQ0ZTVFIoInRyYWQiKSwg
Q0ZTVFIoImZ3aWQiKSwgQ0ZTVFIoInB3aWQiKSwgQ0ZTVFIoInJ1YnkiKSB9OwotICAgIENGQXJy
YXlSZWYgZmVhdHVyZXMgPSBDRkFycmF5Q3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGZlYXR1
cmVWYWx1ZXMsIDMwLCAma0NGVHlwZUFycmF5Q2FsbEJhY2tzKTsKLQotICAgIGZvciAoQ0ZJbmRl
eCBpID0gMDsgaSA8IENGQXJyYXlHZXRDb3VudChmZWF0dXJlcyk7ICsraSkgewotICAgICAgICBk
cmF3VGV4dFdpdGhGZWF0dXJlKGNvbnRleHQsIGZvbnREZXNjcmlwdG9yLCBzdGF0aWNfY2FzdDxD
RlN0cmluZ1JlZj4oQ0ZBcnJheUdldFZhbHVlQXRJbmRleChmZWF0dXJlcywgaSkpLCAxLCBDR1Bv
aW50TWFrZSgyNSwgMTk1MCAtIDUwICogaSkpOwotICAgICAgICBkcmF3VGV4dFdpdGhGZWF0dXJl
KGNvbnRleHQsIGZvbnREZXNjcmlwdG9yLCBzdGF0aWNfY2FzdDxDRlN0cmluZ1JlZj4oQ0ZBcnJh
eUdldFZhbHVlQXRJbmRleChmZWF0dXJlcywgaSkpLCAwLCBDR1BvaW50TWFrZSgyNSwgMTkyNSAt
IDUwICogaSkpOworICAgIGlmICh0eXBlID09IFR5cGU6Ok9wZW5UeXBlKSB7CisgICAgICAgIENG
VHlwZVJlZiBmZWF0dXJlVmFsdWVzT3BlblR5cGVbXSA9IHsgQ0ZTVFIoImxpZ2EiKSwgQ0ZTVFIo
ImNsaWciKSwgQ0ZTVFIoImRsaWciKSwgQ0ZTVFIoImhsaWciKSwgQ0ZTVFIoImNhbHQiKSwgQ0ZT
VFIoInN1YnMiKSwgQ0ZTVFIoInN1cHMiKSwgQ0ZTVFIoInNtY3AiKSwgQ0ZTVFIoImMyc2MiKSwg
Q0ZTVFIoInBjYXAiKSwgQ0ZTVFIoImMycGMiKSwgQ0ZTVFIoInVuaWMiKSwgQ0ZTVFIoInRpdGwi
KSwgQ0ZTVFIoIm9udW0iKSwgQ0ZTVFIoInBudW0iKSwgQ0ZTVFIoInRudW0iKSwgQ0ZTVFIoImZy
YWMiKSwgQ0ZTVFIoImFmcmMiKSwgQ0ZTVFIoIm9yZG4iKSwgQ0ZTVFIoInplcm8iKSwgQ0ZTVFIo
Imhpc3QiKSwgQ0ZTVFIoImpwNzgiKSwgQ0ZTVFIoImpwODMiKSwgQ0ZTVFIoImpwOTAiKSwgQ0ZT
VFIoImpwMDQiKSwgQ0ZTVFIoInNtcGwiKSwgQ0ZTVFIoInRyYWQiKSwgQ0ZTVFIoImZ3aWQiKSwg
Q0ZTVFIoInB3aWQiKSwgQ0ZTVFIoInJ1YnkiKSB9OworICAgICAgICBDRkFycmF5UmVmIGZlYXR1
cmVzID0gQ0ZBcnJheUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBmZWF0dXJlVmFsdWVzT3Bl
blR5cGUsIDMwLCAma0NGVHlwZUFycmF5Q2FsbEJhY2tzKTsKKworICAgICAgICBmb3IgKENGSW5k
ZXggaSA9IDA7IGkgPCBDRkFycmF5R2V0Q291bnQoZmVhdHVyZXMpOyArK2kpIHsKKyAgICAgICAg
ICAgIENGU3RyaW5nUmVmIGZlYXR1cmUgPSBzdGF0aWNfY2FzdDxDRlN0cmluZ1JlZj4oQ0ZBcnJh
eUdldFZhbHVlQXRJbmRleChmZWF0dXJlcywgaSkpOworICAgICAgICAgICAgQ1RGb250RGVzY3Jp
cHRvclJlZiBtb2RpZmllZEZvbnREZXNjcmlwdG9yID0gY29uc3RydWN0Rm9udFdpdGhPcGVuVHlw
ZUZlYXR1cmUoZm9udERlc2NyaXB0b3IsIGZlYXR1cmUsIDEpOworICAgICAgICAgICAgQ0ZNdXRh
YmxlU3RyaW5nUmVmIHByZWZpeCA9IENGU3RyaW5nQ3JlYXRlTXV0YWJsZShrQ0ZBbGxvY2F0b3JE
ZWZhdWx0LCAwKTsKKyAgICAgICAgICAgIENGU3RyaW5nQXBwZW5kKHByZWZpeCwgZmVhdHVyZSk7
CisgICAgICAgICAgICBDRlN0cmluZ0FwcGVuZChwcmVmaXgsIENGU1RSKCIgIChvbik6ICIpKTsK
KyAgICAgICAgICAgIGRyYXdUZXh0KGNvbnRleHQsIG1vZGlmaWVkRm9udERlc2NyaXB0b3IsIHBy
ZWZpeCwgQ0dQb2ludE1ha2UoMjUsIDE5NTAgLSA1MCAqIGkpKTsKKyAgICAgICAgICAgIENGUmVs
ZWFzZShwcmVmaXgpOworICAgICAgICAgICAgQ0ZSZWxlYXNlKG1vZGlmaWVkRm9udERlc2NyaXB0
b3IpOworCisgICAgICAgICAgICBtb2RpZmllZEZvbnREZXNjcmlwdG9yID0gY29uc3RydWN0Rm9u
dFdpdGhPcGVuVHlwZUZlYXR1cmUoZm9udERlc2NyaXB0b3IsIGZlYXR1cmUsIDApOworICAgICAg
ICAgICAgcHJlZml4ID0gQ0ZTdHJpbmdDcmVhdGVNdXRhYmxlKGtDRkFsbG9jYXRvckRlZmF1bHQs
IDApOworICAgICAgICAgICAgQ0ZTdHJpbmdBcHBlbmQocHJlZml4LCBmZWF0dXJlKTsKKyAgICAg
ICAgICAgIENGU3RyaW5nQXBwZW5kKHByZWZpeCwgQ0ZTVFIoIiAob2ZmKTogIikpOworICAgICAg
ICAgICAgZHJhd1RleHQoY29udGV4dCwgbW9kaWZpZWRGb250RGVzY3JpcHRvciwgcHJlZml4LCBD
R1BvaW50TWFrZSgyNSwgMTkyNSAtIDUwICogaSkpOworICAgICAgICAgICAgQ0ZSZWxlYXNlKHBy
ZWZpeCk7CisgICAgICAgICAgICBDRlJlbGVhc2UobW9kaWZpZWRGb250RGVzY3JpcHRvcik7Cisg
ICAgICAgIH0KKworICAgICAgICBDRlJlbGVhc2UoZmVhdHVyZXMpOworICAgIH0gZWxzZSB7Cisg
ICAgICAgIF9fYmxvY2sgaW50IGkgPSAwOworICAgICAgICB2b2lkICheaGFuZGxlcikodWludDE2
X3QgdHlwZSwgQ0ZTdHJpbmdSZWYgdHlwZVN0cmluZywgdWludDE2X3Qgc2VsZWN0b3IsIENGU3Ry
aW5nUmVmIHNlbGVjdG9yU3RyaW5nKSA9IF4odWludDE2X3QgdHlwZSwgQ0ZTdHJpbmdSZWYgdHlw
ZVN0cmluZywgdWludDE2X3Qgc2VsZWN0b3IsIENGU3RyaW5nUmVmIHNlbGVjdG9yU3RyaW5nKSB7
CisgICAgICAgICAgICBDVEZvbnREZXNjcmlwdG9yUmVmIG1vZGlmaWVkRm9udERlc2NyaXB0b3Ig
PSBjb25zdHJ1Y3RGb250V2l0aFRydWVUeXBlRmVhdHVyZShmb250RGVzY3JpcHRvciwgdHlwZSwg
c2VsZWN0b3IpOworICAgICAgICAgICAgQ0ZNdXRhYmxlU3RyaW5nUmVmIHByZWZpeCA9IENGU3Ry
aW5nQ3JlYXRlTXV0YWJsZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAwKTsKKyAgICAgICAgICAgIENG
U3RyaW5nQXBwZW5kKHByZWZpeCwgdHlwZVN0cmluZyk7CisgICAgICAgICAgICBDRlN0cmluZ0Fw
cGVuZChwcmVmaXgsIENGU1RSKCI6ICIpKTsKKyAgICAgICAgICAgIENGU3RyaW5nQXBwZW5kKHBy
ZWZpeCwgc2VsZWN0b3JTdHJpbmcpOworICAgICAgICAgICAgQ0ZTdHJpbmdBcHBlbmQocHJlZml4
LCBDRlNUUigiOiAiKSk7CisgICAgICAgICAgICB3aGlsZSAoQ0ZTdHJpbmdHZXRMZW5ndGgocHJl
Zml4KSA8IDY1KQorICAgICAgICAgICAgICAgIENGU3RyaW5nQXBwZW5kKHByZWZpeCwgQ0ZTVFIo
IiAiKSk7CisgICAgICAgICAgICBkcmF3VGV4dChjb250ZXh0LCBtb2RpZmllZEZvbnREZXNjcmlw
dG9yLCBwcmVmaXgsIENHUG9pbnRNYWtlKDI1LCAxOTUwIC0gNDAgKiBpKSk7CisgICAgICAgICAg
ICBDRlJlbGVhc2UocHJlZml4KTsKKyAgICAgICAgICAgIENGUmVsZWFzZShtb2RpZmllZEZvbnRE
ZXNjcmlwdG9yKTsKKyAgICAgICAgICAgICsraTsKKyAgICAgICAgfTsKKyAgICAgICAgLypoYW5k
bGVyKGtMaWdhdHVyZXNUeXBlLCBDRlNUUigia0xpZ2F0dXJlc1R5cGUiKSwga0NvbW1vbkxpZ2F0
dXJlc09uU2VsZWN0b3IsIENGU1RSKCJrQ29tbW9uTGlnYXR1cmVzT25TZWxlY3RvciIpKTsKKyAg
ICAgICAgaGFuZGxlcihrTGlnYXR1cmVzVHlwZSwgQ0ZTVFIoImtMaWdhdHVyZXNUeXBlIiksIGtD
b250ZXh0dWFsTGlnYXR1cmVzT25TZWxlY3RvciwgQ0ZTVFIoImtDb250ZXh0dWFsTGlnYXR1cmVz
T25TZWxlY3RvciIpKTsKKyAgICAgICAgaGFuZGxlcihrTGlnYXR1cmVzVHlwZSwgQ0ZTVFIoImtM
aWdhdHVyZXNUeXBlIiksIGtDb21tb25MaWdhdHVyZXNPZmZTZWxlY3RvciwgQ0ZTVFIoImtDb21t
b25MaWdhdHVyZXNPZmZTZWxlY3RvciIpKTsKKyAgICAgICAgaGFuZGxlcihrTGlnYXR1cmVzVHlw
ZSwgQ0ZTVFIoImtMaWdhdHVyZXNUeXBlIiksIGtDb250ZXh0dWFsTGlnYXR1cmVzT2ZmU2VsZWN0
b3IsIENGU1RSKCJrQ29udGV4dHVhbExpZ2F0dXJlc09mZlNlbGVjdG9yIikpOworICAgICAgICBo
YW5kbGVyKGtMaWdhdHVyZXNUeXBlLCBDRlNUUigia0xpZ2F0dXJlc1R5cGUiKSwga1JhcmVMaWdh
dHVyZXNPblNlbGVjdG9yLCBDRlNUUigia1JhcmVMaWdhdHVyZXNPblNlbGVjdG9yIikpOworICAg
ICAgICBoYW5kbGVyKGtMaWdhdHVyZXNUeXBlLCBDRlNUUigia0xpZ2F0dXJlc1R5cGUiKSwga1Jh
cmVMaWdhdHVyZXNPZmZTZWxlY3RvciwgQ0ZTVFIoImtSYXJlTGlnYXR1cmVzT2ZmU2VsZWN0b3Ii
KSk7CisgICAgICAgIGhhbmRsZXIoa0xpZ2F0dXJlc1R5cGUsIENGU1RSKCJrTGlnYXR1cmVzVHlw
ZSIpLCBrSGlzdG9yaWNhbExpZ2F0dXJlc09uU2VsZWN0b3IsIENGU1RSKCJrSGlzdG9yaWNhbExp
Z2F0dXJlc09uU2VsZWN0b3IiKSk7CisgICAgICAgIGhhbmRsZXIoa0xpZ2F0dXJlc1R5cGUsIENG
U1RSKCJrTGlnYXR1cmVzVHlwZSIpLCBrSGlzdG9yaWNhbExpZ2F0dXJlc09mZlNlbGVjdG9yLCBD
RlNUUigia0hpc3RvcmljYWxMaWdhdHVyZXNPZmZTZWxlY3RvciIpKTsKKyAgICAgICAgaGFuZGxl
cihrQ29udGV4dHVhbEFsdGVybmF0ZXNUeXBlLCBDRlNUUigia0NvbnRleHR1YWxBbHRlcm5hdGVz
VHlwZSIpLCBrQ29udGV4dHVhbEFsdGVybmF0ZXNPblNlbGVjdG9yLCBDRlNUUigia0NvbnRleHR1
YWxBbHRlcm5hdGVzT25TZWxlY3RvciIpKTsKKyAgICAgICAgaGFuZGxlcihrQ29udGV4dHVhbEFs
dGVybmF0ZXNUeXBlLCBDRlNUUigia0NvbnRleHR1YWxBbHRlcm5hdGVzVHlwZSIpLCBrQ29udGV4
dHVhbEFsdGVybmF0ZXNPZmZTZWxlY3RvciwgQ0ZTVFIoImtDb250ZXh0dWFsQWx0ZXJuYXRlc09m
ZlNlbGVjdG9yIikpOworICAgICAgICBoYW5kbGVyKGtWZXJ0aWNhbFBvc2l0aW9uVHlwZSwgQ0ZT
VFIoImtWZXJ0aWNhbFBvc2l0aW9uVHlwZSIpLCBrSW5mZXJpb3JzU2VsZWN0b3IsIENGU1RSKCJr
SW5mZXJpb3JzU2VsZWN0b3IiKSk7CisgICAgICAgIGhhbmRsZXIoa1ZlcnRpY2FsUG9zaXRpb25U
eXBlLCBDRlNUUigia1ZlcnRpY2FsUG9zaXRpb25UeXBlIiksIGtTdXBlcmlvcnNTZWxlY3Rvciwg
Q0ZTVFIoImtTdXBlcmlvcnNTZWxlY3RvciIpKTsKKyAgICAgICAgaGFuZGxlcihrTG93ZXJDYXNl
VHlwZSwgQ0ZTVFIoImtMb3dlckNhc2VUeXBlIiksIGtMb3dlckNhc2VTbWFsbENhcHNTZWxlY3Rv
ciwgQ0ZTVFIoImtMb3dlckNhc2VTbWFsbENhcHNTZWxlY3RvciIpKTsKKyAgICAgICAgaGFuZGxl
cihrVXBwZXJDYXNlVHlwZSwgQ0ZTVFIoImtVcHBlckNhc2VUeXBlIiksIGtVcHBlckNhc2VTbWFs
bENhcHNTZWxlY3RvciwgQ0ZTVFIoImtVcHBlckNhc2VTbWFsbENhcHNTZWxlY3RvciIpKTsKKyAg
ICAgICAgaGFuZGxlcihrTG93ZXJDYXNlVHlwZSwgQ0ZTVFIoImtMb3dlckNhc2VUeXBlIiksIGtM
b3dlckNhc2VQZXRpdGVDYXBzU2VsZWN0b3IsIENGU1RSKCJrTG93ZXJDYXNlUGV0aXRlQ2Fwc1Nl
bGVjdG9yIikpOworICAgICAgICBoYW5kbGVyKGtVcHBlckNhc2VUeXBlLCBDRlNUUigia1VwcGVy
Q2FzZVR5cGUiKSwga1VwcGVyQ2FzZVBldGl0ZUNhcHNTZWxlY3RvciwgQ0ZTVFIoImtVcHBlckNh
c2VQZXRpdGVDYXBzU2VsZWN0b3IiKSk7CisgICAgICAgIGhhbmRsZXIoa0xldHRlckNhc2VUeXBl
LCBDRlNUUigia0xldHRlckNhc2VUeXBlIiksIDE0LCBDRlNUUigiMTQiKSk7CisgICAgICAgIGhh
bmRsZXIoa1N0eWxlT3B0aW9uc1R5cGUsIENGU1RSKCJrU3R5bGVPcHRpb25zVHlwZSIpLCBrVGl0
bGluZ0NhcHNTZWxlY3RvciwgQ0ZTVFIoImtUaXRsaW5nQ2Fwc1NlbGVjdG9yIikpOworICAgICAg
ICBoYW5kbGVyKGtOdW1iZXJDYXNlVHlwZSwgQ0ZTVFIoImtOdW1iZXJDYXNlVHlwZSIpLCBrVXBw
ZXJDYXNlTnVtYmVyc1NlbGVjdG9yLCBDRlNUUigia1VwcGVyQ2FzZU51bWJlcnNTZWxlY3RvciIp
KTsKKyAgICAgICAgaGFuZGxlcihrTnVtYmVyQ2FzZVR5cGUsIENGU1RSKCJrTnVtYmVyQ2FzZVR5
cGUiKSwga0xvd2VyQ2FzZU51bWJlcnNTZWxlY3RvciwgQ0ZTVFIoImtMb3dlckNhc2VOdW1iZXJz
U2VsZWN0b3IiKSk7CisgICAgICAgIGhhbmRsZXIoa051bWJlclNwYWNpbmdUeXBlLCBDRlNUUigi
a051bWJlclNwYWNpbmdUeXBlIiksIGtQcm9wb3J0aW9uYWxOdW1iZXJzU2VsZWN0b3IsIENGU1RS
KCJrUHJvcG9ydGlvbmFsTnVtYmVyc1NlbGVjdG9yIikpOworICAgICAgICBoYW5kbGVyKGtOdW1i
ZXJTcGFjaW5nVHlwZSwgQ0ZTVFIoImtOdW1iZXJTcGFjaW5nVHlwZSIpLCBrTW9ub3NwYWNlZE51
bWJlcnNTZWxlY3RvciwgQ0ZTVFIoImtNb25vc3BhY2VkTnVtYmVyc1NlbGVjdG9yIikpOworICAg
ICAgICBoYW5kbGVyKGtGcmFjdGlvbnNUeXBlLCBDRlNUUigia0ZyYWN0aW9uc1R5cGUiKSwga0Rp
YWdvbmFsRnJhY3Rpb25zU2VsZWN0b3IsIENGU1RSKCJrRGlhZ29uYWxGcmFjdGlvbnNTZWxlY3Rv
ciIpKTsKKyAgICAgICAgaGFuZGxlcihrRnJhY3Rpb25zVHlwZSwgQ0ZTVFIoImtGcmFjdGlvbnNU
eXBlIiksIGtWZXJ0aWNhbEZyYWN0aW9uc1NlbGVjdG9yLCBDRlNUUigia1ZlcnRpY2FsRnJhY3Rp
b25zU2VsZWN0b3IiKSk7CisgICAgICAgIGhhbmRsZXIoa1ZlcnRpY2FsUG9zaXRpb25UeXBlLCBD
RlNUUigia1ZlcnRpY2FsUG9zaXRpb25UeXBlIiksIGtPcmRpbmFsc1NlbGVjdG9yLCBDRlNUUigi
a09yZGluYWxzU2VsZWN0b3IiKSk7CisgICAgICAgIGhhbmRsZXIoa1R5cG9ncmFwaGljRXh0cmFz
VHlwZSwgQ0ZTVFIoImtUeXBvZ3JhcGhpY0V4dHJhc1R5cGUiKSwga1NsYXNoZWRaZXJvT25TZWxl
Y3RvciwgQ0ZTVFIoImtTbGFzaGVkWmVyb09uU2VsZWN0b3IiKSk7CisgICAgICAgIGhhbmRsZXIo
a0xpZ2F0dXJlc1R5cGUsIENGU1RSKCJrTGlnYXR1cmVzVHlwZSIpLCBrSGlzdG9yaWNhbExpZ2F0
dXJlc09uU2VsZWN0b3IsIENGU1RSKCJrSGlzdG9yaWNhbExpZ2F0dXJlc09uU2VsZWN0b3IiKSk7
CisgICAgICAgIGhhbmRsZXIoa0NoYXJhY3RlclNoYXBlVHlwZSwgQ0ZTVFIoImtDaGFyYWN0ZXJT
aGFwZVR5cGUiKSwga0pJUzE5NzhDaGFyYWN0ZXJzU2VsZWN0b3IsIENGU1RSKCJrSklTMTk3OENo
YXJhY3RlcnNTZWxlY3RvciIpKTsKKyAgICAgICAgaGFuZGxlcihrQ2hhcmFjdGVyU2hhcGVUeXBl
LCBDRlNUUigia0NoYXJhY3RlclNoYXBlVHlwZSIpLCBrSklTMTk4M0NoYXJhY3RlcnNTZWxlY3Rv
ciwgQ0ZTVFIoImtKSVMxOTgzQ2hhcmFjdGVyc1NlbGVjdG9yIikpOworICAgICAgICBoYW5kbGVy
KGtDaGFyYWN0ZXJTaGFwZVR5cGUsIENGU1RSKCJrQ2hhcmFjdGVyU2hhcGVUeXBlIiksIGtKSVMx
OTkwQ2hhcmFjdGVyc1NlbGVjdG9yLCBDRlNUUigia0pJUzE5OTBDaGFyYWN0ZXJzU2VsZWN0b3Ii
KSk7CisgICAgICAgIGhhbmRsZXIoa0NoYXJhY3RlclNoYXBlVHlwZSwgQ0ZTVFIoImtDaGFyYWN0
ZXJTaGFwZVR5cGUiKSwga0pJUzIwMDRDaGFyYWN0ZXJzU2VsZWN0b3IsIENGU1RSKCJrSklTMjAw
NENoYXJhY3RlcnNTZWxlY3RvciIpKTsKKyAgICAgICAgaGFuZGxlcihrQ2hhcmFjdGVyU2hhcGVU
eXBlLCBDRlNUUigia0NoYXJhY3RlclNoYXBlVHlwZSIpLCBrU2ltcGxpZmllZENoYXJhY3RlcnNT
ZWxlY3RvciwgQ0ZTVFIoImtTaW1wbGlmaWVkQ2hhcmFjdGVyc1NlbGVjdG9yIikpOyovCisgICAg
ICAgIGhhbmRsZXIoa0NoYXJhY3RlclNoYXBlVHlwZSwgQ0ZTVFIoImtDaGFyYWN0ZXJTaGFwZVR5
cGUiKSwga1RyYWRpdGlvbmFsQ2hhcmFjdGVyc1NlbGVjdG9yLCBDRlNUUigia1RyYWRpdGlvbmFs
Q2hhcmFjdGVyc1NlbGVjdG9yIikpOworICAgICAgICAvKmhhbmRsZXIoa1RleHRTcGFjaW5nVHlw
ZSwgQ0ZTVFIoImtUZXh0U3BhY2luZ1R5cGUiKSwga01vbm9zcGFjZWRUZXh0U2VsZWN0b3IsIENG
U1RSKCJrTW9ub3NwYWNlZFRleHRTZWxlY3RvciIpKTsKKyAgICAgICAgaGFuZGxlcihrVGV4dFNw
YWNpbmdUeXBlLCBDRlNUUigia1RleHRTcGFjaW5nVHlwZSIpLCBrUHJvcG9ydGlvbmFsVGV4dFNl
bGVjdG9yLCBDRlNUUigia1Byb3BvcnRpb25hbFRleHRTZWxlY3RvciIpKTsKKyAgICAgICAgaGFu
ZGxlcihrUnVieUthbmFUeXBlLCBDRlNUUigia1J1YnlLYW5hVHlwZSIpLCBrUnVieUthbmFPblNl
bGVjdG9yLCBDRlNUUigia1J1YnlLYW5hT25TZWxlY3RvciIpKTsqLwogICAgIH0KIAotICAgIENG
UmVsZWFzZShmZWF0dXJlcyk7CiAgICAgQ0ZSZWxlYXNlKGZvbnREZXNjcmlwdG9yKTsKICAgICBD
R0ltYWdlUmVmIGltYWdlID0gQ0dCaXRtYXBDb250ZXh0Q3JlYXRlSW1hZ2UoY29udGV4dCk7CiAg
ICAgQ0dDb250ZXh0UmVsZWFzZShjb250ZXh0KTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>262648</attachid>
            <date>2015-10-07 15:40:25 -0700</date>
            <delta_ts>2015-10-07 16:51:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-149776-20151007153953.patch</filename>
            <type>text/plain</type>
            <size>65953</size>
            <attacher name="Myles C. Maxfield">mmaxfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkwNjQwCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZTFkMDgyYTI2MTE2ZDFhYzYzM2I5Nzk2YTVmODQzZWU4
NTFlNWM5MC4uZDY1ZGIzYTlhYTM5YWNiYzIxMTliMzIxMzM1ZWIyNTE5MTMzNjc2NiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk5
IEBACisyMDE1LTEwLTA3ICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+
CisKKyAgICAgICAgVGVzdCBmb250LXZhcmlhbnQtKiBhbmQgZm9udC1mZWF0dXJlLXNldHRpbmdz
IHdpdGggVHJ1ZVR5cGUgZm9udHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE0OTc3NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFRoaXMgdGVzdCBleHRlbmRzIG91ciBleGlzdGluZyBGb250V2l0aEZlYXR1
cmVzIHByb2plY3QgdG8gYmUgYWJsZSB0byBnZW5lcmF0ZSBhCisgICAgICAgIFRydWVUeXBlIGZv
bnQuIFRoaXMgZm9udCBpcyBjb25jZXB0dWFsbHkgc2ltaWxhciBhcyB0aGUgZXhpc3RpbmcgT3Bl
blR5cGUgZm9udCwKKyAgICAgICAgZXhjZXB0IHRoZSBmZWF0dXJlIC0+IGNoYXJhY3RlciBtYXBw
aW5nIGlzIGRpZmZlcmVudC4KKworICAgICAgICBUaGUgZm9udCBpdHNlbGYgb25seSBzdXBwb3J0
cyB0aGUgZm9sbG93aW5nIGNoYXJhY3RlcnM6CisgICAgICAgIEFCQ0RFRkdISUpLTE1OT1BRUlNU
VVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXoKKyAgICAgICAgSG93ZXZlciwgdGhlIHNo
YXBlIG9mIHRoZXNlIGxldHRlcnMgYXJlIGVpdGhlciBhbiBYIG9yIGEgY2hlY2sgbWFyay4KKyAg
ICAgICAgVGhlIGxldHRlciAiQSIgYWx3YXlzIGlzIGEgY2hlY2sgbWFyay4KKyAgICAgICAgVGhl
IGxldHRlciAiQiIgYWx3YXlzIGlzIGFuIFguCisgICAgICAgIFdpdGhvdXQgYW55IGZvbnQgZmVh
dHVyZXMgdHVybmVkIG9uLCB0aGUgcmVzdCBvZiB0aGUgbGV0dGVycyBhcmUgc2hvd24gYXMgWC4K
KyAgICAgICAgRWFjaCBmb250IGZlYXR1cmUgaGFzIGFuIGxldHRlciBhc3NvY2lhdGVkIHdpdGgg
aXQuIFdoZW4gdGhlIGZvbnQgZmVhdHVyZSBpcyBlbmFibGVkLAorICAgICAgICB0aGF0IGxldHRl
ciBpcyBzaG93biBhcyBhIGNoZWNrIG1hcmsuIEZvciBleGFtcGxlLCB3aGVuCisgICAgICAgICJr
TG93ZXJDYXNlVHlwZSAvIGtMb3dlckNhc2VTbWFsbENhcHNTZWxlY3RvciIgaXMgZW5hYmxlZCwg
IlMiIGlzIHNob3duIGFzIGEgY2hlY2sKKyAgICAgICAgbWFyay4KKworICAgICAgICBIZXJlIGFy
ZSB0aGUgbWFwcGluZ3Mgb2YgZm9udCBmZWF0dXJlcyB0byBsZXR0ZXJzOgorICAgICAgICBrTGln
YXR1cmVzVHlwZSAvIGtDb21tb25MaWdhdHVyZXNPblNlbGVjdG9yOiBDCisgICAgICAgIGtMaWdh
dHVyZXNUeXBlIC8ga0NvbnRleHR1YWxMaWdhdHVyZXNPblNlbGVjdG9yOiBECisgICAgICAgIGtM
aWdhdHVyZXNUeXBlIC8ga1JhcmVMaWdhdHVyZXNPblNlbGVjdG9yOiBHCisgICAgICAgIGtMaWdh
dHVyZXNUeXBlIC8ga0hpc3RvcmljYWxMaWdhdHVyZXNPblNlbGVjdG9yOiBJCisgICAgICAgIGtD
b250ZXh0dWFsQWx0ZXJuYXRlc1R5cGUgLyBrQ29udGV4dHVhbEFsdGVybmF0ZXNPblNlbGVjdG9y
OiBMCisgICAgICAgIGtWZXJ0aWNhbFBvc2l0aW9uVHlwZSAvIGtJbmZlcmlvcnNTZWxlY3Rvcjog
TworICAgICAgICBrVmVydGljYWxQb3NpdGlvblR5cGUgLyBrU3VwZXJpb3JzU2VsZWN0b3I6IFAK
KyAgICAgICAga0xvd2VyQ2FzZVR5cGUgLyBrTG93ZXJDYXNlU21hbGxDYXBzU2VsZWN0b3I6IFMK
KyAgICAgICAga1VwcGVyQ2FzZVR5cGUgLyBrVXBwZXJDYXNlU21hbGxDYXBzU2VsZWN0b3I6IFYK
KyAgICAgICAga0xvd2VyQ2FzZVR5cGUgLyBrTG93ZXJDYXNlUGV0aXRlQ2Fwc1NlbGVjdG9yOiBU
CisgICAgICAgIGtVcHBlckNhc2VUeXBlIC8ga1VwcGVyQ2FzZVBldGl0ZUNhcHNTZWxlY3Rvcjog
VworICAgICAgICBrTGV0dGVyQ2FzZVR5cGUgLyAxNDogWQorICAgICAgICBrU3R5bGVPcHRpb25z
VHlwZSAvIGtUaXRsaW5nQ2Fwc1NlbGVjdG9yOiBhCisgICAgICAgIGtOdW1iZXJDYXNlVHlwZSAv
IGtVcHBlckNhc2VOdW1iZXJzU2VsZWN0b3I6IGMKKyAgICAgICAga051bWJlckNhc2VUeXBlIC8g
a0xvd2VyQ2FzZU51bWJlcnNTZWxlY3RvcjogZAorICAgICAgICBrTnVtYmVyU3BhY2luZ1R5cGUg
LyBrUHJvcG9ydGlvbmFsTnVtYmVyc1NlbGVjdG9yOiBmCisgICAgICAgIGtOdW1iZXJTcGFjaW5n
VHlwZSAvIGtNb25vc3BhY2VkTnVtYmVyc1NlbGVjdG9yOiBnCisgICAgICAgIGtGcmFjdGlvbnNU
eXBlIC8ga0RpYWdvbmFsRnJhY3Rpb25zU2VsZWN0b3I6IGkKKyAgICAgICAga0ZyYWN0aW9uc1R5
cGUgLyBrVmVydGljYWxGcmFjdGlvbnNTZWxlY3RvcjogagorICAgICAgICBrVmVydGljYWxQb3Np
dGlvblR5cGUgLyBrT3JkaW5hbHNTZWxlY3RvcjogUQorICAgICAgICBrVHlwb2dyYXBoaWNFeHRy
YXNUeXBlIC8ga1NsYXNoZWRaZXJvT25TZWxlY3RvcjogaworICAgICAgICBrTGlnYXR1cmVzVHlw
ZSAvIGtIaXN0b3JpY2FsTGlnYXR1cmVzT25TZWxlY3RvcjogSworICAgICAgICBrQ2hhcmFjdGVy
U2hhcGVUeXBlIC8ga0pJUzE5NzhDaGFyYWN0ZXJzU2VsZWN0b3I6IG0KKyAgICAgICAga0NoYXJh
Y3RlclNoYXBlVHlwZSAvIGtKSVMxOTgzQ2hhcmFjdGVyc1NlbGVjdG9yOiBuCisgICAgICAgIGtD
aGFyYWN0ZXJTaGFwZVR5cGUgLyBrSklTMTk5MENoYXJhY3RlcnNTZWxlY3RvcjogbworICAgICAg
ICBrQ2hhcmFjdGVyU2hhcGVUeXBlIC8ga0pJUzIwMDRDaGFyYWN0ZXJzU2VsZWN0b3I6IHAKKyAg
ICAgICAga0NoYXJhY3RlclNoYXBlVHlwZSAvIGtTaW1wbGlmaWVkQ2hhcmFjdGVyc1NlbGVjdG9y
OiBxCisgICAgICAgIGtDaGFyYWN0ZXJTaGFwZVR5cGUgLyBrVHJhZGl0aW9uYWxDaGFyYWN0ZXJz
U2VsZWN0b3I6IHIKKyAgICAgICAga1RleHRTcGFjaW5nVHlwZSAvIGtNb25vc3BhY2VkVGV4dFNl
bGVjdG9yOiB0CisgICAgICAgIGtUZXh0U3BhY2luZ1R5cGUgLyBrUHJvcG9ydGlvbmFsVGV4dFNl
bGVjdG9yOiB1CisgICAgICAgIGtSdWJ5S2FuYVR5cGUgLyBrUnVieUthbmFPblNlbGVjdG9yOiB2
CisKKyAgICAgICAgKiBGb250V2l0aEZlYXR1cmVzL0ZvbnRXaXRoRmVhdHVyZXMueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBGb250V2l0aEZlYXR1cmVzL0ZvbnRXaXRoRmVh
dHVyZXMvRm9udENyZWF0b3IuY3BwOgorICAgICAgICAoQ0ZGQnVpbGRlcjo6bW92ZVRvKToKKyAg
ICAgICAgKENGRkJ1aWxkZXI6OmxpbmVUbyk6CisgICAgICAgIChHTFlGQnVpbGRlcjo6R0xZRkJ1
aWxkZXIpOgorICAgICAgICAoR0xZRkJ1aWxkZXI6OnRha2VSZXN1bHQpOgorICAgICAgICAoR0xZ
RkJ1aWxkZXI6Om1vdmVUbyk6CisgICAgICAgIChHTFlGQnVpbGRlcjo6bGluZVRvKToKKyAgICAg
ICAgKEdMWUZCdWlsZGVyOjpjbG9zZVBhdGgpOgorICAgICAgICAoR0xZRkJ1aWxkZXI6OndyaXRl
UG9pbnQpOgorICAgICAgICAoR0xZRkJ1aWxkZXI6OmFwcGVuZDE2KToKKyAgICAgICAgKGdlbmVy
YXRlQm94Q2hhclN0cmluZyk6CisgICAgICAgIChnZW5lcmF0ZUNoZWNrQ2hhclN0cmluZyk6Cisg
ICAgICAgIChnZW5lcmF0ZVhDaGFyU3RyaW5nKToKKyAgICAgICAgKGl0ZW1Gb3JHbHlwaCk6Cisg
ICAgICAgIChHZW5lcmF0b3I6OmdlbmVyYXRlKToKKyAgICAgICAgKEdlbmVyYXRvcjo6aW5zZXJ0
U2VsZWN0b3IpOgorICAgICAgICAoR2VuZXJhdG9yOjppbnNlcnRGZWF0dXJlKToKKyAgICAgICAg
KEdlbmVyYXRvcjo6Z2VuZXJhdGVGZWF0dXJlRGVzY3JpcHRpb24pOgorICAgICAgICAoR2VuZXJh
dG9yOjphcHBlbmRDRkZUYWJsZSk6CisgICAgICAgIChHZW5lcmF0b3I6OmFwcGVuZEdMWUZUYWJs
ZSk6CisgICAgICAgIChHZW5lcmF0b3I6OmFwcGVuZExPQ0FUYWJsZSk6CisgICAgICAgIChHZW5l
cmF0b3I6OmFwcGVuZEZFQVRUYWJsZSk6CisgICAgICAgIChHZW5lcmF0b3I6OmFwcGVuZE1ldGFt
b3JwaG9zaXNDaGFpbik6CisgICAgICAgIChHZW5lcmF0b3I6OmFwcGVuZE1PUlhUYWJsZSk6Cisg
ICAgICAgIChHZW5lcmF0b3I6OmFwcGVuZEhFQURUYWJsZSk6CisgICAgICAgIChHZW5lcmF0b3I6
OmFwcGVuZEhNVFhUYWJsZSk6CisgICAgICAgIChHZW5lcmF0b3I6OmFwcGVuZE5hbWVTdWJ0YWJs
ZSk6CisgICAgICAgIChHZW5lcmF0b3I6OmFwcGVuZDJCeXRlQVNDSUlTdHJpbmcpOgorICAgICAg
ICAoR2VuZXJhdG9yOjphcHBlbmROQU1FVGFibGUpOgorICAgICAgICAoZ2VuZXJhdGVGb250KToK
KyAgICAgICAgKENGRkJ1aWxkZXI6OmN1cnZlVG9DdWJpYyk6IERlbGV0ZWQuCisgICAgICAgIChj
aGFyU3RyaW5nRm9yR2x5cGgpOiBEZWxldGVkLgorICAgICAgICAqIEZvbnRXaXRoRmVhdHVyZXMv
Rm9udFdpdGhGZWF0dXJlcy9Gb250Q3JlYXRvci5oOgorICAgICAgICAqIEZvbnRXaXRoRmVhdHVy
ZXMvRm9udFdpdGhGZWF0dXJlcy9tYWluLmNwcDoKKyAgICAgICAgKGNvbnN0cnVjdEZvbnRXaXRo
VHJ1ZVR5cGVGZWF0dXJlKToKKyAgICAgICAgKGNvbnN0cnVjdEZvbnRXaXRoT3BlblR5cGVGZWF0
dXJlKToKKyAgICAgICAgKGRyYXdUZXh0KToKKyAgICAgICAgKG1haW4pOgorICAgICAgICAoZHJh
d1RleHRXaXRoRmVhdHVyZSk6IERlbGV0ZWQuCisKIDIwMTUtMTAtMDYgIE15bGVzIEMuIE1heGZp
ZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KIAogICAgICAgICBQb3N0LXJldmlldyBjbGVhbnVw
IGFmdGVyIHIxOTA1NzIuCmRpZmYgLS1naXQgYS9Ub29scy9Gb250V2l0aEZlYXR1cmVzL0ZvbnRX
aXRoRmVhdHVyZXMueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xzL0ZvbnRXaXRoRmVh
dHVyZXMvRm9udFdpdGhGZWF0dXJlcy54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGM1
ZmY1NzBlMzkyYTFhZDEwNzJhY2MzMTE2NmRmYWUzNWU3MDI5N2YuLjQxYzc0YmNiNzNkYzAyYzc5
YjQxZGI5YzE5MGJhZDE0ZGZlZjU5MzIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0ZvbnRXaXRoRmVhdHVy
ZXMvRm9udFdpdGhGZWF0dXJlcy54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xz
L0ZvbnRXaXRoRmVhdHVyZXMvRm9udFdpdGhGZWF0dXJlcy54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC0xODYsNyArMTg2LDcgQEAKIAkJCQlHQ0NfV0FSTl9VTklOSVRJQUxJWkVEX0FVVE9T
ID0gWUVTX0FHR1JFU1NJVkU7CiAJCQkJR0NDX1dBUk5fVU5VU0VEX0ZVTkNUSU9OID0gWUVTOwog
CQkJCUdDQ19XQVJOX1VOVVNFRF9WQVJJQUJMRSA9IFlFUzsKLQkJCQlNQUNPU1hfREVQTE9ZTUVO
VF9UQVJHRVQgPSAxMC4xMTsKKwkJCQlNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQgPSAxMC4xMDsK
IAkJCQlNVExfRU5BQkxFX0RFQlVHX0lORk8gPSBZRVM7CiAJCQkJT05MWV9BQ1RJVkVfQVJDSCA9
IFlFUzsKIAkJCQlTREtST09UID0gbWFjb3N4OwpAQCAtMjIyLDcgKzIyMiw3IEBACiAJCQkJR0ND
X1dBUk5fVU5JTklUSUFMSVpFRF9BVVRPUyA9IFlFU19BR0dSRVNTSVZFOwogCQkJCUdDQ19XQVJO
X1VOVVNFRF9GVU5DVElPTiA9IFlFUzsKIAkJCQlHQ0NfV0FSTl9VTlVTRURfVkFSSUFCTEUgPSBZ
RVM7Ci0JCQkJTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUID0gMTAuMTE7CisJCQkJTUFDT1NYX0RF
UExPWU1FTlRfVEFSR0VUID0gMTAuMTA7CiAJCQkJTVRMX0VOQUJMRV9ERUJVR19JTkZPID0gTk87
CiAJCQkJU0RLUk9PVCA9IG1hY29zeDsKIAkJCX07CkBAIC0yNjEsNiArMjYxLDcgQEAKIAkJCQlD
Mjg2MjZBQjFCQTkwMkI5MDAxOTYxRDYgLyogUmVsZWFzZSAqLywKIAkJCSk7CiAJCQlkZWZhdWx0
Q29uZmlndXJhdGlvbklzVmlzaWJsZSA9IDA7CisJCQlkZWZhdWx0Q29uZmlndXJhdGlvbk5hbWUg
PSBSZWxlYXNlOwogCQl9OwogLyogRW5kIFhDQ29uZmlndXJhdGlvbkxpc3Qgc2VjdGlvbiAqLwog
CX07CmRpZmYgLS1naXQgYS9Ub29scy9Gb250V2l0aEZlYXR1cmVzL0ZvbnRXaXRoRmVhdHVyZXMv
Rm9udENyZWF0b3IuY3BwIGIvVG9vbHMvRm9udFdpdGhGZWF0dXJlcy9Gb250V2l0aEZlYXR1cmVz
L0ZvbnRDcmVhdG9yLmNwcAppbmRleCA3YTNlMTQxZTUyOTA3NmU2YTNiNGNhM2EwYmRhYzQwMWVj
MWI4Mzc2Li5iODViZDIwZGE2OGQ1M2I1MTk4YTMyMTU2MWMzMDhjODk5MzUyMzRhIDEwMDY0NAot
LS0gYS9Ub29scy9Gb250V2l0aEZlYXR1cmVzL0ZvbnRXaXRoRmVhdHVyZXMvRm9udENyZWF0b3Iu
Y3BwCisrKyBiL1Rvb2xzL0ZvbnRXaXRoRmVhdHVyZXMvRm9udFdpdGhGZWF0dXJlcy9Gb250Q3Jl
YXRvci5jcHAKQEAgLTgyLDcgKzgyLDYgQEAgc3RhdGljIHZvaWQgd3JpdGVDRkZFbmNvZGVkTnVt
YmVyKFYmIHZlY3RvciwgZmxvYXQgbnVtYmVyKQogfQogCiBzdGF0aWMgY29uc3QgY2hhciByTGlu
ZVRvID0gMHgwNTsKLXN0YXRpYyBjb25zdCBjaGFyIHJyQ3VydmVUbyA9IDB4MDg7CiBzdGF0aWMg
Y29uc3QgY2hhciBlbmRDaGFyID0gMHgwZTsKIHN0YXRpYyBjb25zdCBjaGFyIHJNb3ZlVG8gPSAw
eDE1OwogCkBAIC0xMDIsMTQgKzEwMSw5IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHN0ZDo6
bW92ZShyZXN1bHQpOwogICAgIH0KIAotICAgIHZvaWQgbW92ZVRvKHN0ZDo6cGFpcjxmbG9hdCwg
ZmxvYXQ+IHRhcmdldFBvaW50LCBib29sIGNsb3NlZCkKKyAgICB2b2lkIG1vdmVUbyhzdGQ6OnBh
aXI8ZmxvYXQsIGZsb2F0PiB0YXJnZXRQb2ludCkKICAgICB7Ci0gICAgICAgIGlmIChjbG9zZWQg
JiYgIXJlc3VsdC5lbXB0eSgpKQotICAgICAgICAgICAgY2xvc2VQYXRoKCk7Ci0KLSAgICAgICAg
c3RkOjpwYWlyPGZsb2F0LCBmbG9hdD4gZGVzdGluYXRpb24gPSB0YXJnZXRQb2ludDsKLQotICAg
ICAgICB3cml0ZVBvaW50KGRlc3RpbmF0aW9uKTsKKyAgICAgICAgd3JpdGVQb2ludCh0YXJnZXRQ
b2ludCk7CiAgICAgICAgIHJlc3VsdC5wdXNoX2JhY2sock1vdmVUbyk7CiAKICAgICAgICAgc3Rh
cnRpbmdQb2ludCA9IGN1cnJlbnQ7CkBAIC0xMTcsMjQgKzExMSwxMCBAQCBwdWJsaWM6CiAKICAg
ICB2b2lkIGxpbmVUbyhzdGQ6OnBhaXI8ZmxvYXQsIGZsb2F0PiB0YXJnZXRQb2ludCkKICAgICB7
Ci0gICAgICAgIHN0ZDo6cGFpcjxmbG9hdCwgZmxvYXQ+IGRlc3RpbmF0aW9uID0gdGFyZ2V0UG9p
bnQ7Ci0KLSAgICAgICAgd3JpdGVQb2ludChkZXN0aW5hdGlvbik7CisgICAgICAgIHdyaXRlUG9p
bnQodGFyZ2V0UG9pbnQpOwogICAgICAgICByZXN1bHQucHVzaF9iYWNrKHJMaW5lVG8pOwogICAg
IH0KIAotICAgIHZvaWQgY3VydmVUb0N1YmljKHN0ZDo6cGFpcjxmbG9hdCwgZmxvYXQ+IHBvaW50
MSwgc3RkOjpwYWlyPGZsb2F0LCBmbG9hdD4gcG9pbnQyLCBzdGQ6OnBhaXI8ZmxvYXQsIGZsb2F0
PiB0YXJnZXRQb2ludCkKLSAgICB7Ci0gICAgICAgIHN0ZDo6cGFpcjxmbG9hdCwgZmxvYXQ+IGRl
c3RpbmF0aW9uMSA9IHBvaW50MTsKLSAgICAgICAgc3RkOjpwYWlyPGZsb2F0LCBmbG9hdD4gZGVz
dGluYXRpb24yID0gcG9pbnQyOwotICAgICAgICBzdGQ6OnBhaXI8ZmxvYXQsIGZsb2F0PiBkZXN0
aW5hdGlvbjMgPSB0YXJnZXRQb2ludDsKLQotICAgICAgICB3cml0ZVBvaW50KGRlc3RpbmF0aW9u
MSk7Ci0gICAgICAgIHdyaXRlUG9pbnQoZGVzdGluYXRpb24yKTsKLSAgICAgICAgd3JpdGVQb2lu
dChkZXN0aW5hdGlvbjMpOwotICAgICAgICByZXN1bHQucHVzaF9iYWNrKHJyQ3VydmVUbyk7Ci0g
ICAgfQotCiAgICAgdm9pZCBjbG9zZVBhdGgoKQogICAgIHsKICAgICAgICAgaWYgKGN1cnJlbnQg
IT0gc3RhcnRpbmdQb2ludCkKQEAgLTE1NiwxMCArMTM2LDk0IEBAIHByaXZhdGU6CiAgICAgc3Rk
OjpwYWlyPGZsb2F0LCBmbG9hdD4gY3VycmVudDsKIH07CiAKK2NsYXNzIEdMWUZCdWlsZGVyIHsK
K3B1YmxpYzoKKyAgICBHTFlGQnVpbGRlcihmbG9hdCwgc3RkOjpwYWlyPGZsb2F0LCBmbG9hdD4p
CisgICAgeworICAgIH0KKworICAgIHN0ZDo6dmVjdG9yPHVpbnQ4X3Q+IHRha2VSZXN1bHQoKQor
ICAgIHsKKyAgICAgICAgc3RkOjp2ZWN0b3I8dWludDhfdD4gcmVzdWx0OworICAgICAgICBhcHBl
bmQxNihyZXN1bHQsIGVuZFB0c09mQ29udG91cnMuc2l6ZSgpKTsKKyAgICAgICAgYXBwZW5kMTYo
cmVzdWx0LCBjbGFtcFRvPGludDE2X3Q+KG1pblgpKTsKKyAgICAgICAgYXBwZW5kMTYocmVzdWx0
LCBjbGFtcFRvPGludDE2X3Q+KG1pblkpKTsKKyAgICAgICAgYXBwZW5kMTYocmVzdWx0LCBjbGFt
cFRvPGludDE2X3Q+KG1heFgpKTsKKyAgICAgICAgYXBwZW5kMTYocmVzdWx0LCBjbGFtcFRvPGlu
dDE2X3Q+KG1heFkpKTsKKworICAgICAgICBmb3IgKHVpbnQxNl90IHAgOiBlbmRQdHNPZkNvbnRv
dXJzKQorICAgICAgICAgICAgYXBwZW5kMTYocmVzdWx0LCBwKTsKKyAgICAgICAgYXBwZW5kMTYo
cmVzdWx0LCAwKTsKKyAgICAgICAgZm9yICh1aW50OF90IGYgOiBmbGFncykKKyAgICAgICAgICAg
IHJlc3VsdC5wdXNoX2JhY2soZik7CisgICAgICAgIGZvciAodWludDE2X3QgYyA6IHhDb29yZGlu
YXRlcykKKyAgICAgICAgICAgIGFwcGVuZDE2KHJlc3VsdCwgYyk7CisgICAgICAgIGZvciAodWlu
dDE2X3QgYyA6IHlDb29yZGluYXRlcykKKyAgICAgICAgICAgIGFwcGVuZDE2KHJlc3VsdCwgYyk7
CisKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICB2b2lkIG1vdmVUbyhzdGQ6
OnBhaXI8ZmxvYXQsIGZsb2F0PiB0YXJnZXRQb2ludCkKKyAgICB7CisgICAgICAgIHdyaXRlUG9p
bnQodGFyZ2V0UG9pbnQsIHRydWUpOworCisgICAgICAgIHN0YXJ0aW5nUG9pbnQgPSBjdXJyZW50
OworICAgIH0KKworICAgIHZvaWQgbGluZVRvKHN0ZDo6cGFpcjxmbG9hdCwgZmxvYXQ+IHRhcmdl
dFBvaW50KQorICAgIHsKKyAgICAgICAgd3JpdGVQb2ludCh0YXJnZXRQb2ludCwgdHJ1ZSk7Cisg
ICAgfQorCisgICAgdm9pZCBjbG9zZVBhdGgoKQorICAgIHsKKyAgICAgICAgaWYgKGN1cnJlbnQg
IT0gc3RhcnRpbmdQb2ludCkKKyAgICAgICAgICAgIGxpbmVUbyhzdGFydGluZ1BvaW50KTsKKyAg
ICAgICAgZW5kUHRzT2ZDb250b3Vycy5wdXNoX2JhY2socG9pbnRDb3VudCAtIDEpOworICAgIH0K
KworcHJpdmF0ZToKKyAgICB2b2lkIHdyaXRlUG9pbnQoc3RkOjpwYWlyPGZsb2F0LCBmbG9hdD4g
ZGVzdGluYXRpb24sIGJvb2wgb25DdXJ2ZSkKKyAgICB7CisgICAgICAgIGZsYWdzLnB1c2hfYmFj
ayhvbkN1cnZlID8gMSA6IDApOyAvLyBGbGFncworCisgICAgICAgIHN0ZDo6cGFpcjxmbG9hdCwg
ZmxvYXQ+IGRlbHRhID0gc3RkOjptYWtlX3BhaXIoZGVzdGluYXRpb24uZmlyc3QgLSBjdXJyZW50
LmZpcnN0LCBkZXN0aW5hdGlvbi5zZWNvbmQgLSBjdXJyZW50LnNlY29uZCk7CisgICAgICAgIHhD
b29yZGluYXRlcy5wdXNoX2JhY2soZGVsdGEuZmlyc3QpOworICAgICAgICB5Q29vcmRpbmF0ZXMu
cHVzaF9iYWNrKGRlbHRhLnNlY29uZCk7CisKKyAgICAgICAgY3VycmVudCA9IGRlc3RpbmF0aW9u
OworICAgICAgICBtaW5YID0gc3RkOjptaW4obWluWCwgZGVzdGluYXRpb24uZmlyc3QpOworICAg
ICAgICBtYXhYID0gc3RkOjptYXgobWF4WCwgZGVzdGluYXRpb24uZmlyc3QpOworICAgICAgICBt
aW5ZID0gc3RkOjptaW4obWluWSwgZGVzdGluYXRpb24uc2Vjb25kKTsKKyAgICAgICAgbWF4WSA9
IHN0ZDo6bWF4KG1heFksIGRlc3RpbmF0aW9uLnNlY29uZCk7CisgICAgICAgICsrcG9pbnRDb3Vu
dDsKKyAgICB9CisKKyAgICBzdGF0aWMgdm9pZCBhcHBlbmQxNihzdGQ6OnZlY3Rvcjx1aW50OF90
PiYgZGVzdGluYXRpb24sIHVpbnQxNl90IHZhbHVlKQorICAgIHsKKyAgICAgICAgZGVzdGluYXRp
b24ucHVzaF9iYWNrKHZhbHVlID4+IDgpOworICAgICAgICBkZXN0aW5hdGlvbi5wdXNoX2JhY2so
dmFsdWUpOworICAgIH0KKworICAgIHN0ZDo6dmVjdG9yPHVpbnQxNl90PiBlbmRQdHNPZkNvbnRv
dXJzOworICAgIHN0ZDo6dmVjdG9yPHVpbnQ4X3Q+IGZsYWdzOworICAgIHN0ZDo6dmVjdG9yPGlu
dDE2X3Q+IHhDb29yZGluYXRlczsKKyAgICBzdGQ6OnZlY3RvcjxpbnQxNl90PiB5Q29vcmRpbmF0
ZXM7CisgICAgc3RkOjpwYWlyPGZsb2F0LCBmbG9hdD4gc3RhcnRpbmdQb2ludDsKKyAgICBzdGQ6
OnBhaXI8ZmxvYXQsIGZsb2F0PiBjdXJyZW50OworICAgIGZsb2F0IG1pblggeyBzdGQ6Om51bWVy
aWNfbGltaXRzPGZsb2F0Pjo6bWF4KCkgfTsKKyAgICBmbG9hdCBtYXhYIHsgc3RkOjpudW1lcmlj
X2xpbWl0czxmbG9hdD46Om1pbigpIH07CisgICAgZmxvYXQgbWluWSB7IHN0ZDo6bnVtZXJpY19s
aW1pdHM8ZmxvYXQ+OjptYXgoKSB9OworICAgIGZsb2F0IG1heFkgeyBzdGQ6Om51bWVyaWNfbGlt
aXRzPGZsb2F0Pjo6bWluKCkgfTsKKyAgICB1bnNpZ25lZCBwb2ludENvdW50IHsgMCB9OworfTsK
KwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiBzdGQ6OnZlY3Rvcjx1aW50OF90PiBnZW5lcmF0ZUJv
eENoYXJTdHJpbmcoKQogewotICAgIENGRkJ1aWxkZXIgYnVpbGRlcih1bml0c1BlckVtLCBzdGQ6
Om1ha2VfcGFpcigwLmYsIDAuZikpOwotICAgIGJ1aWxkZXIubW92ZVRvKHN0ZDo6bWFrZV9wYWly
KDIwMC5mLCAyMDAuZiksIGZhbHNlKTsKKyAgICBUIGJ1aWxkZXIodW5pdHNQZXJFbSwgc3RkOjpt
YWtlX3BhaXIoMC5mLCAwLmYpKTsKKyAgICBidWlsZGVyLm1vdmVUbyhzdGQ6Om1ha2VfcGFpcigy
MDAuZiwgMjAwLmYpKTsKICAgICBidWlsZGVyLmxpbmVUbyhzdGQ6Om1ha2VfcGFpcigyMDAuZiwg
ODAwLmYpKTsKICAgICBidWlsZGVyLmxpbmVUbyhzdGQ6Om1ha2VfcGFpcig4MDAuZiwgODAwLmYp
KTsKICAgICBidWlsZGVyLmxpbmVUbyhzdGQ6Om1ha2VfcGFpcig4MDAuZiwgMjAwLmYpKTsKQEAg
LTE2NywxMCArMjMxLDExIEBAIHN0ZDo6dmVjdG9yPHVpbnQ4X3Q+IGdlbmVyYXRlQm94Q2hhclN0
cmluZygpCiAgICAgcmV0dXJuIGJ1aWxkZXIudGFrZVJlc3VsdCgpOwogfQogCit0ZW1wbGF0ZSA8
dHlwZW5hbWUgVD4KIHN0ZDo6dmVjdG9yPHVpbnQ4X3Q+IGdlbmVyYXRlQ2hlY2tDaGFyU3RyaW5n
KCkKIHsKLSAgICBDRkZCdWlsZGVyIGJ1aWxkZXIodW5pdHNQZXJFbSwgc3RkOjptYWtlX3BhaXIo
MC5mLCAwLmYpKTsKLSAgICBidWlsZGVyLm1vdmVUbyhzdGQ6Om1ha2VfcGFpcigyMDAuZiwgNTAw
LmYpLCBmYWxzZSk7CisgICAgVCBidWlsZGVyKHVuaXRzUGVyRW0sIHN0ZDo6bWFrZV9wYWlyKDAu
ZiwgMC5mKSk7CisgICAgYnVpbGRlci5tb3ZlVG8oc3RkOjptYWtlX3BhaXIoMjAwLmYsIDUwMC5m
KSk7CiAgICAgYnVpbGRlci5saW5lVG8oc3RkOjptYWtlX3BhaXIoMjUwLmYsIDU1MC5mKSk7CiAg
ICAgYnVpbGRlci5saW5lVG8oc3RkOjptYWtlX3BhaXIoNTAwLmYsIDMwMC5mKSk7CiAgICAgYnVp
bGRlci5saW5lVG8oc3RkOjptYWtlX3BhaXIoOTAwLmYsIDcwMC5mKSk7CkBAIC0xODAsMTAgKzI0
NSwxMSBAQCBzdGQ6OnZlY3Rvcjx1aW50OF90PiBnZW5lcmF0ZUNoZWNrQ2hhclN0cmluZygpCiAg
ICAgcmV0dXJuIGJ1aWxkZXIudGFrZVJlc3VsdCgpOwogfQogCit0ZW1wbGF0ZSA8dHlwZW5hbWUg
VD4KIHN0ZDo6dmVjdG9yPHVpbnQ4X3Q+IGdlbmVyYXRlWENoYXJTdHJpbmcoKQogewotICAgIENG
RkJ1aWxkZXIgYnVpbGRlcih1bml0c1BlckVtLCBzdGQ6Om1ha2VfcGFpcigwLmYsIDAuZikpOwot
ICAgIGJ1aWxkZXIubW92ZVRvKHN0ZDo6bWFrZV9wYWlyKDUwMC4wZiwgNTUwLjBmKSwgZmFsc2Up
OworICAgIFQgYnVpbGRlcih1bml0c1BlckVtLCBzdGQ6Om1ha2VfcGFpcigwLmYsIDAuZikpOwor
ICAgIGJ1aWxkZXIubW92ZVRvKHN0ZDo6bWFrZV9wYWlyKDUwMC4wZiwgNTUwLjBmKSk7CiAgICAg
YnVpbGRlci5saW5lVG8oc3RkOjptYWtlX3BhaXIoOTAwLmYsIDk1MC5mKSk7CiAgICAgYnVpbGRl
ci5saW5lVG8oc3RkOjptYWtlX3BhaXIoOTUwLmYsIDkwMC5mKSk7CiAgICAgYnVpbGRlci5saW5l
VG8oc3RkOjptYWtlX3BhaXIoNTUwLmYsIDUwMC5mKSk7CkBAIC0xOTksNyArMjY1LDggQEAgc3Rk
Ojp2ZWN0b3I8dWludDhfdD4gZ2VuZXJhdGVYQ2hhclN0cmluZygpCiAgICAgcmV0dXJuIGJ1aWxk
ZXIudGFrZVJlc3VsdCgpOwogfQogCi1zdGQ6OnZlY3Rvcjx1aW50OF90PiYgY2hhclN0cmluZ0Zv
ckdseXBoKHVpbnQxNl90IGdseXBoLCBzdGQ6OnZlY3Rvcjx1aW50OF90PiYgYm94Q2hhclN0cmlu
Zywgc3RkOjp2ZWN0b3I8dWludDhfdD4mIGNoZWNrQ2hhclN0cmluZywgc3RkOjp2ZWN0b3I8dWlu
dDhfdD4mIHhDaGFyU3RyaW5nKQordGVtcGxhdGU8dHlwZW5hbWUgVD4KK2NvbnN0IFQmIGl0ZW1G
b3JHbHlwaCh1aW50MTZfdCBnbHlwaCwgY29uc3QgVCYgYm94Q2hhclN0cmluZywgY29uc3QgVCYg
Y2hlY2tDaGFyU3RyaW5nLCBjb25zdCBUJiB4Q2hhclN0cmluZykKIHsKICAgICBpZiAoIWdseXBo
KQogICAgICAgICByZXR1cm4gYm94Q2hhclN0cmluZzsKQEAgLTIwOCwxOCArMjc1LDQzIEBAIHN0
ZDo6dmVjdG9yPHVpbnQ4X3Q+JiBjaGFyU3RyaW5nRm9yR2x5cGgodWludDE2X3QgZ2x5cGgsIHN0
ZDo6dmVjdG9yPHVpbnQ4X3Q+JiBiCiAgICAgcmV0dXJuIHhDaGFyU3RyaW5nOwogfQogCitzdHJ1
Y3QgRmVhdHVyZVNlbGVjdG9yIHsKKyAgICB1aW50MTZfdCBzZWxlY3RvcjsKKyAgICBzdGQ6OnN0
cmluZyBuYW1lOworICAgIHVpbnQxNl90IHN0cmluZ0luZGV4OworICAgIGJvb2wgZGVmYXVsdFNl
bGVjdG9yOworfTsKKworc3RydWN0IEZlYXR1cmVUeXBlIHsKKyAgICB1aW50MTZfdCB0eXBlOwor
ICAgIHN0ZDo6c3RyaW5nIG5hbWU7CisgICAgdWludDE2X3Qgc3RyaW5nSW5kZXg7CisgICAgc2l6
ZV90IHNldHRpbmdUYWJsZU9mZnNldExvY2F0aW9uOworICAgIHN0ZDo6dmVjdG9yPEZlYXR1cmVT
ZWxlY3Rvcj4gc2VsZWN0b3JzOworICAgIGJvb2wgZXhjbHVzaXZlOworfTsKKwogY2xhc3MgR2Vu
ZXJhdG9yIHsKIHB1YmxpYzoKLSAgICBzdGQ6OnZlY3Rvcjx1aW50OF90PiBnZW5lcmF0ZSgpCisg
ICAgc3RkOjp2ZWN0b3I8dWludDhfdD4gZ2VuZXJhdGUoVHlwZSB0eXBlKQogICAgIHsKLSAgICAg
ICAgdWludDE2X3QgbnVtVGFibGVzID0gMTA7CisgICAgICAgIGZlYXR1cmVEZXNjcmlwdGlvbiA9
IGdlbmVyYXRlRmVhdHVyZURlc2NyaXB0aW9uKCk7CisKKyAgICAgICAgdWludDE2X3QgbnVtVGFi
bGVzID0gdHlwZSA9PSBUeXBlOjpPcGVuVHlwZSA/IDEwIDogMTI7CiAgICAgICAgIHVpbnQxNl90
IHJvdW5kZWROdW1UYWJsZXMgPSByb3VuZERvd25Ub1Bvd2VyT2ZUd28obnVtVGFibGVzKTsKICAg
ICAgICAgdWludDE2X3Qgc2VhcmNoUmFuZ2UgPSByb3VuZGVkTnVtVGFibGVzICogMTY7IC8vIHNl
YXJjaFJhbmdlOiAiKE1heGltdW0gcG93ZXIgb2YgMiA8PSBudW1UYWJsZXMpIHggMTYuIgogCi0g
ICAgICAgIHJlc3VsdC5wdXNoX2JhY2soJ08nKTsKLSAgICAgICAgcmVzdWx0LnB1c2hfYmFjaygn
VCcpOwotICAgICAgICByZXN1bHQucHVzaF9iYWNrKCdUJyk7Ci0gICAgICAgIHJlc3VsdC5wdXNo
X2JhY2soJ08nKTsKKyAgICAgICAgaWYgKHR5cGUgPT0gVHlwZTo6T3BlblR5cGUpIHsKKyAgICAg
ICAgICAgIHJlc3VsdC5wdXNoX2JhY2soJ08nKTsKKyAgICAgICAgICAgIHJlc3VsdC5wdXNoX2Jh
Y2soJ1QnKTsKKyAgICAgICAgICAgIHJlc3VsdC5wdXNoX2JhY2soJ1QnKTsKKyAgICAgICAgICAg
IHJlc3VsdC5wdXNoX2JhY2soJ08nKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHJl
c3VsdC5wdXNoX2JhY2soJ3QnKTsKKyAgICAgICAgICAgIHJlc3VsdC5wdXNoX2JhY2soJ3InKTsK
KyAgICAgICAgICAgIHJlc3VsdC5wdXNoX2JhY2soJ3UnKTsKKyAgICAgICAgICAgIHJlc3VsdC5w
dXNoX2JhY2soJ2UnKTsKKyAgICAgICAgfQogICAgICAgICBhcHBlbmQxNihudW1UYWJsZXMpOwog
ICAgICAgICBhcHBlbmQxNihzZWFyY2hSYW5nZSk7CiAgICAgICAgIGFwcGVuZDE2KGludGVncmFs
TG9nMihyb3VuZGVkTnVtVGFibGVzKSk7IC8vIGVudHJ5U2VsZWN0b3I6ICJMb2cyKG1heGltdW0g
cG93ZXIgb2YgMiA8PSBudW1UYWJsZXMpLiIKQEAgLTIzMSwxNSArMzIzLDI1IEBAIHB1YmxpYzoK
ICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBkaXJlY3RvcnlFbnRyeVNpemUgKiBudW1U
YWJsZXM7ICsraSkKICAgICAgICAgICAgIHJlc3VsdC5wdXNoX2JhY2soMCk7CiAKLSAgICAgICAg
YXBwZW5kVGFibGUoIkNGRiAiLCAmR2VuZXJhdG9yOjphcHBlbmRDRkZUYWJsZSk7Ci0gICAgICAg
IGFwcGVuZFRhYmxlKCJHU1VCIiwgJkdlbmVyYXRvcjo6YXBwZW5kR1NVQlRhYmxlKTsKKyAgICAg
ICAgaWYgKHR5cGUgPT0gVHlwZTo6T3BlblR5cGUpIHsKKyAgICAgICAgICAgIGFwcGVuZFRhYmxl
KCJDRkYgIiwgJkdlbmVyYXRvcjo6YXBwZW5kQ0ZGVGFibGUpOworICAgICAgICAgICAgYXBwZW5k
VGFibGUoIkdTVUIiLCAmR2VuZXJhdG9yOjphcHBlbmRHU1VCVGFibGUpOworICAgICAgICB9CiAg
ICAgICAgIGFwcGVuZFRhYmxlKCJPUy8yIiwgJkdlbmVyYXRvcjo6YXBwZW5kT1MyVGFibGUpOwog
ICAgICAgICBhcHBlbmRUYWJsZSgiY21hcCIsICZHZW5lcmF0b3I6OmFwcGVuZENNQVBUYWJsZSk7
CisgICAgICAgIGlmICh0eXBlID09IFR5cGU6OlRydWVUeXBlKSB7CisgICAgICAgICAgICBhcHBl
bmRUYWJsZSgiZmVhdCIsICZHZW5lcmF0b3I6OmFwcGVuZEZFQVRUYWJsZSk7CisgICAgICAgICAg
ICBhcHBlbmRUYWJsZSgiZ2x5ZiIsICZHZW5lcmF0b3I6OmFwcGVuZEdMWUZUYWJsZSk7CisgICAg
ICAgIH0KICAgICAgICAgYXV0byBoZWFkVGFibGVPZmZzZXQgPSByZXN1bHQuc2l6ZSgpOwogICAg
ICAgICBhcHBlbmRUYWJsZSgiaGVhZCIsICZHZW5lcmF0b3I6OmFwcGVuZEhFQURUYWJsZSk7CiAg
ICAgICAgIGFwcGVuZFRhYmxlKCJoaGVhIiwgJkdlbmVyYXRvcjo6YXBwZW5kSEhFQVRhYmxlKTsK
ICAgICAgICAgYXBwZW5kVGFibGUoImhtdHgiLCAmR2VuZXJhdG9yOjphcHBlbmRITVRYVGFibGUp
OworICAgICAgICBpZiAodHlwZSA9PSBUeXBlOjpUcnVlVHlwZSkKKyAgICAgICAgICAgIGFwcGVu
ZFRhYmxlKCJsb2NhIiwgJkdlbmVyYXRvcjo6YXBwZW5kTE9DQVRhYmxlKTsKICAgICAgICAgYXBw
ZW5kVGFibGUoIm1heHAiLCAmR2VuZXJhdG9yOjphcHBlbmRNQVhQVGFibGUpOworICAgICAgICBp
ZiAodHlwZSA9PSBUeXBlOjpUcnVlVHlwZSkKKyAgICAgICAgICAgIGFwcGVuZFRhYmxlKCJtb3J4
IiwgJkdlbmVyYXRvcjo6YXBwZW5kTU9SWFRhYmxlKTsKICAgICAgICAgYXBwZW5kVGFibGUoIm5h
bWUiLCAmR2VuZXJhdG9yOjphcHBlbmROQU1FVGFibGUpOwogICAgICAgICBhcHBlbmRUYWJsZSgi
cG9zdCIsICZHZW5lcmF0b3I6OmFwcGVuZFBPU1RUYWJsZSk7CiAKQEAgLTI0OCw2ICszNTAsNyBA
QCBwdWJsaWM6CiAgICAgICAgIC8vIGNoZWNrc3VtQWRqdXN0bWVudDogIlRvIGNvbXB1dGU6IHNl
dCBpdCB0byAwLCBjYWxjdWxhdGUgdGhlIGNoZWNrc3VtIGZvciB0aGUgJ2hlYWQnIHRhYmxlIGFu
ZCBwdXQgaXQgaW4gdGhlIHRhYmxlIGRpcmVjdG9yeSwKICAgICAgICAgLy8gc3VtIHRoZSBlbnRp
cmUgZm9udCBhcyB1aW50MzIsIHRoZW4gc3RvcmUgQjFCMEFGQkEgLSBzdW0uIFRoZSBjaGVja3N1
bSBmb3IgdGhlICdoZWFkJyB0YWJsZSB3aWxsIG5vdyBiZSB3cm9uZy4gVGhhdCBpcyBPSy4iCiAg
ICAgICAgIG92ZXJ3cml0ZTMyKGhlYWRUYWJsZU9mZnNldCArIDgsIDB4QjFCMEFGQkFVIC0gY2Fs
Y3VsYXRlQ2hlY2tzdW0oMCwgcmVzdWx0LnNpemUoKSkpOworCiAgICAgICAgIHJldHVybiBzdGQ6
Om1vdmUocmVzdWx0KTsKICAgICB9CiAKQEAgLTMzMSw2ICs0MzQsMTMyIEBAIHByaXZhdGU6CiAg
ICAgICAgIHJlc3VsdFtsb2NhdGlvbiArIDJdID0gdmFsdWUgPj4gODsKICAgICAgICAgcmVzdWx0
W2xvY2F0aW9uICsgM10gPSB2YWx1ZTsKICAgICB9CisKKyAgICB2b2lkIGluc2VydFNlbGVjdG9y
KHN0ZDo6dmVjdG9yPEZlYXR1cmVTZWxlY3Rvcj4mIHNlbGVjdG9ycywgdWludDE2X3Qgc2VsZWN0
b3IsIHN0ZDo6c3RyaW5nIHNlbGVjdG9yU3RyaW5nLCBib29sIGRlZmF1bHRTZWxlY3RvcikKKyAg
ICB7CisgICAgICAgIHNlbGVjdG9ycy5wdXNoX2JhY2soe3NlbGVjdG9yLCBzZWxlY3RvclN0cmlu
ZywgbV9zdHJpbmdJbmRleCsrLCBkZWZhdWx0U2VsZWN0b3J9KTsKKyAgICB9CisKKyAgICB2b2lk
IGluc2VydEZlYXR1cmUoc3RkOjp2ZWN0b3I8RmVhdHVyZVR5cGU+JiByZXN1bHQsIHVpbnQxNl90
IHR5cGUsIHN0ZDo6c3RyaW5nIHR5cGVTdHJpbmcsIHVpbnQxNl90IHNlbGVjdG9yLCBzdGQ6OnN0
cmluZyBzZWxlY3RvclN0cmluZywgYm9vbCBleGNsdXNpdmUpCisgICAgeworICAgICAgICAvLyBP
KG4pIGJ1dCBwZXJmb3JtYW5jZSBpcyBub3QgYW4gaXNzdWUgaGVyZQorICAgICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IHJlc3VsdC5zaXplKCk7ICsraSkgeworICAgICAgICAgICAgaWYgKHJl
c3VsdFtpXS50eXBlID09IHR5cGUpIHsKKyAgICAgICAgICAgICAgICBpbnNlcnRTZWxlY3Rvcihy
ZXN1bHRbaV0uc2VsZWN0b3JzLCBzZWxlY3Rvciwgc2VsZWN0b3JTdHJpbmcsIGZhbHNlKTsKKyAg
ICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAg
cmVzdWx0LnB1c2hfYmFjayh7dHlwZSwgdHlwZVN0cmluZywgbV9zdHJpbmdJbmRleCsrLCAwLCBz
dGQ6OnZlY3RvcjxGZWF0dXJlU2VsZWN0b3I+KCksIGV4Y2x1c2l2ZX0pOworICAgICAgICBpbnNl
cnRTZWxlY3RvcihyZXN1bHRbcmVzdWx0LnNpemUoKSAtIDFdLnNlbGVjdG9ycywgc2VsZWN0b3Is
IHNlbGVjdG9yU3RyaW5nLCB0cnVlKTsKKyAgICB9CisKKyAgICBzdGF0aWMgY29uc3QgdWludDE2
X3Qga0NoYXJhY3RlclNoYXBlVHlwZSA9IDIwOworICAgIHN0YXRpYyBjb25zdCB1aW50MTZfdCBr
Q29udGV4dHVhbEFsdGVybmF0ZXNUeXBlID0gMzY7CisgICAgc3RhdGljIGNvbnN0IHVpbnQxNl90
IGtGcmFjdGlvbnNUeXBlID0gMTE7CisgICAgc3RhdGljIGNvbnN0IHVpbnQxNl90IGtMZXR0ZXJD
YXNlVHlwZSA9IDM7CisgICAgc3RhdGljIGNvbnN0IHVpbnQxNl90IGtMaWdhdHVyZXNUeXBlID0g
MTsKKyAgICBzdGF0aWMgY29uc3QgdWludDE2X3Qga0xvd2VyQ2FzZVR5cGUgPSAzNzsKKyAgICBz
dGF0aWMgY29uc3QgdWludDE2X3Qga051bWJlckNhc2VUeXBlID0gMjE7CisgICAgc3RhdGljIGNv
bnN0IHVpbnQxNl90IGtOdW1iZXJTcGFjaW5nVHlwZSA9IDY7CisgICAgc3RhdGljIGNvbnN0IHVp
bnQxNl90IGtSdWJ5S2FuYVR5cGUgPSAyODsKKyAgICBzdGF0aWMgY29uc3QgdWludDE2X3Qga1N0
eWxlT3B0aW9uc1R5cGUgPSAxOTsKKyAgICBzdGF0aWMgY29uc3QgdWludDE2X3Qga1RleHRTcGFj
aW5nVHlwZSA9IDIyOworICAgIHN0YXRpYyBjb25zdCB1aW50MTZfdCBrVHlwb2dyYXBoaWNFeHRy
YXNUeXBlID0gMTQ7CisgICAgc3RhdGljIGNvbnN0IHVpbnQxNl90IGtVcHBlckNhc2VUeXBlID0g
Mzg7CisgICAgc3RhdGljIGNvbnN0IHVpbnQxNl90IGtWZXJ0aWNhbFBvc2l0aW9uVHlwZSA9IDEw
OworCisgICAgc3RhdGljIGNvbnN0IHVpbnQxNl90IGtDb21tb25MaWdhdHVyZXNPZmZTZWxlY3Rv
ciA9IDM7CisgICAgc3RhdGljIGNvbnN0IHVpbnQxNl90IGtDb21tb25MaWdhdHVyZXNPblNlbGVj
dG9yID0gMjsKKyAgICBzdGF0aWMgY29uc3QgdWludDE2X3Qga0NvbnRleHR1YWxBbHRlcm5hdGVz
T2ZmU2VsZWN0b3IgPSAxOworICAgIHN0YXRpYyBjb25zdCB1aW50MTZfdCBrQ29udGV4dHVhbEFs
dGVybmF0ZXNPblNlbGVjdG9yID0gMDsKKyAgICBzdGF0aWMgY29uc3QgdWludDE2X3Qga0NvbnRl
eHR1YWxMaWdhdHVyZXNPZmZTZWxlY3RvciA9IDE5OworICAgIHN0YXRpYyBjb25zdCB1aW50MTZf
dCBrQ29udGV4dHVhbExpZ2F0dXJlc09uU2VsZWN0b3IgPSAxODsKKyAgICBzdGF0aWMgY29uc3Qg
dWludDE2X3Qga0RpYWdvbmFsRnJhY3Rpb25zU2VsZWN0b3IgPSAyOworICAgIHN0YXRpYyBjb25z
dCB1aW50MTZfdCBrSGlzdG9yaWNhbExpZ2F0dXJlc09mZlNlbGVjdG9yID0gMjE7CisgICAgc3Rh
dGljIGNvbnN0IHVpbnQxNl90IGtIaXN0b3JpY2FsTGlnYXR1cmVzT25TZWxlY3RvciA9IDIwOwor
ICAgIHN0YXRpYyBjb25zdCB1aW50MTZfdCBrSW5mZXJpb3JzU2VsZWN0b3IgPSAyOworICAgIHN0
YXRpYyBjb25zdCB1aW50MTZfdCBrSklTMTk3OENoYXJhY3RlcnNTZWxlY3RvciA9IDI7CisgICAg
c3RhdGljIGNvbnN0IHVpbnQxNl90IGtKSVMxOTgzQ2hhcmFjdGVyc1NlbGVjdG9yID0gMzsKKyAg
ICBzdGF0aWMgY29uc3QgdWludDE2X3Qga0pJUzE5OTBDaGFyYWN0ZXJzU2VsZWN0b3IgPSA0Owor
ICAgIHN0YXRpYyBjb25zdCB1aW50MTZfdCBrSklTMjAwNENoYXJhY3RlcnNTZWxlY3RvciA9IDEx
OworICAgIHN0YXRpYyBjb25zdCB1aW50MTZfdCBrTG93ZXJDYXNlTnVtYmVyc1NlbGVjdG9yID0g
MDsKKyAgICBzdGF0aWMgY29uc3QgdWludDE2X3Qga0xvd2VyQ2FzZVBldGl0ZUNhcHNTZWxlY3Rv
ciA9IDI7CisgICAgc3RhdGljIGNvbnN0IHVpbnQxNl90IGtMb3dlckNhc2VTbWFsbENhcHNTZWxl
Y3RvciA9IDE7CisgICAgc3RhdGljIGNvbnN0IHVpbnQxNl90IGtNb25vc3BhY2VkTnVtYmVyc1Nl
bGVjdG9yID0gMDsKKyAgICBzdGF0aWMgY29uc3QgdWludDE2X3Qga01vbm9zcGFjZWRUZXh0U2Vs
ZWN0b3IgPSAxOworICAgIHN0YXRpYyBjb25zdCB1aW50MTZfdCBrT3JkaW5hbHNTZWxlY3RvciA9
IDM7CisgICAgc3RhdGljIGNvbnN0IHVpbnQxNl90IGtQcm9wb3J0aW9uYWxOdW1iZXJzU2VsZWN0
b3IgPSAxOworICAgIHN0YXRpYyBjb25zdCB1aW50MTZfdCBrUHJvcG9ydGlvbmFsVGV4dFNlbGVj
dG9yID0gMDsKKyAgICBzdGF0aWMgY29uc3QgdWludDE2X3Qga1JhcmVMaWdhdHVyZXNPZmZTZWxl
Y3RvciA9IDU7CisgICAgc3RhdGljIGNvbnN0IHVpbnQxNl90IGtSYXJlTGlnYXR1cmVzT25TZWxl
Y3RvciA9IDQ7CisgICAgc3RhdGljIGNvbnN0IHVpbnQxNl90IGtSdWJ5S2FuYU9uU2VsZWN0b3Ig
PSAyOworICAgIHN0YXRpYyBjb25zdCB1aW50MTZfdCBrUnVieUthbmFTZWxlY3RvciA9IDE7Cisg
ICAgc3RhdGljIGNvbnN0IHVpbnQxNl90IGtTaW1wbGlmaWVkQ2hhcmFjdGVyc1NlbGVjdG9yID0g
MTsKKyAgICBzdGF0aWMgY29uc3QgdWludDE2X3Qga1NsYXNoZWRaZXJvT25TZWxlY3RvciA9IDQ7
CisgICAgc3RhdGljIGNvbnN0IHVpbnQxNl90IGtTdXBlcmlvcnNTZWxlY3RvciA9IDE7CisgICAg
c3RhdGljIGNvbnN0IHVpbnQxNl90IGtUaXRsaW5nQ2Fwc1NlbGVjdG9yID0gNDsKKyAgICBzdGF0
aWMgY29uc3QgdWludDE2X3Qga1RyYWRpdGlvbmFsQ2hhcmFjdGVyc1NlbGVjdG9yID0gMDsKKyAg
ICBzdGF0aWMgY29uc3QgdWludDE2X3Qga1VwcGVyQ2FzZU51bWJlcnNTZWxlY3RvciA9IDE7Cisg
ICAgc3RhdGljIGNvbnN0IHVpbnQxNl90IGtVcHBlckNhc2VQZXRpdGVDYXBzU2VsZWN0b3IgPSAy
OworICAgIHN0YXRpYyBjb25zdCB1aW50MTZfdCBrVXBwZXJDYXNlU21hbGxDYXBzU2VsZWN0b3Ig
PSAxOworICAgIHN0YXRpYyBjb25zdCB1aW50MTZfdCBrVmVydGljYWxGcmFjdGlvbnNTZWxlY3Rv
ciA9IDE7CisKKyAgICBzdGF0aWMgY29uc3QgdWludDE2X3QgZGVmYXVsdFVudXNlZFNlbGVjdG9y
ID0gOTk7CisKKyAgICBzdGQ6OnZlY3RvcjxGZWF0dXJlVHlwZT4gZ2VuZXJhdGVGZWF0dXJlRGVz
Y3JpcHRpb24oKQorICAgIHsKKyAgICAgICAgc3RkOjp2ZWN0b3I8RmVhdHVyZVR5cGU+IHJlc3Vs
dDsKKworICAgICAgICAvLyBGb3IgYW55IGdpdmVuIGZlYXR1cmUgdHlwZSwgdGhlIGZpcnN0IHNl
bGVjdG9yIGluc2lkZSBpdCBpcyB0aGUgZGVmYXVsdCBzZWxlY3RvciBmb3IgdGhhdCB0eXBlLgor
ICAgICAgICBpbnNlcnRGZWF0dXJlKHJlc3VsdCwga0xpZ2F0dXJlc1R5cGUsICJrTGlnYXR1cmVz
VHlwZSIsIGtDb21tb25MaWdhdHVyZXNPblNlbGVjdG9yLCAia0NvbW1vbkxpZ2F0dXJlc09uU2Vs
ZWN0b3IiLCBmYWxzZSk7CisgICAgICAgIGluc2VydEZlYXR1cmUocmVzdWx0LCBrTGlnYXR1cmVz
VHlwZSwgImtMaWdhdHVyZXNUeXBlIiwga0NvbnRleHR1YWxMaWdhdHVyZXNPblNlbGVjdG9yLCAi
a0NvbnRleHR1YWxMaWdhdHVyZXNPblNlbGVjdG9yIiwgZmFsc2UpOworICAgICAgICBpbnNlcnRG
ZWF0dXJlKHJlc3VsdCwga0xpZ2F0dXJlc1R5cGUsICJrTGlnYXR1cmVzVHlwZSIsIGtDb21tb25M
aWdhdHVyZXNPZmZTZWxlY3RvciwgImtDb21tb25MaWdhdHVyZXNPZmZTZWxlY3RvciIsIGZhbHNl
KTsKKyAgICAgICAgaW5zZXJ0RmVhdHVyZShyZXN1bHQsIGtMaWdhdHVyZXNUeXBlLCAia0xpZ2F0
dXJlc1R5cGUiLCBrQ29udGV4dHVhbExpZ2F0dXJlc09mZlNlbGVjdG9yLCAia0NvbnRleHR1YWxM
aWdhdHVyZXNPZmZTZWxlY3RvciIsIGZhbHNlKTsKKyAgICAgICAgaW5zZXJ0RmVhdHVyZShyZXN1
bHQsIGtMaWdhdHVyZXNUeXBlLCAia0xpZ2F0dXJlc1R5cGUiLCBrUmFyZUxpZ2F0dXJlc09uU2Vs
ZWN0b3IsICJrUmFyZUxpZ2F0dXJlc09uU2VsZWN0b3IiLCBmYWxzZSk7CisgICAgICAgIGluc2Vy
dEZlYXR1cmUocmVzdWx0LCBrTGlnYXR1cmVzVHlwZSwgImtMaWdhdHVyZXNUeXBlIiwga1JhcmVM
aWdhdHVyZXNPZmZTZWxlY3RvciwgImtSYXJlTGlnYXR1cmVzT2ZmU2VsZWN0b3IiLCBmYWxzZSk7
CisgICAgICAgIGluc2VydEZlYXR1cmUocmVzdWx0LCBrTGlnYXR1cmVzVHlwZSwgImtMaWdhdHVy
ZXNUeXBlIiwga0hpc3RvcmljYWxMaWdhdHVyZXNPblNlbGVjdG9yLCAia0hpc3RvcmljYWxMaWdh
dHVyZXNPblNlbGVjdG9yIiwgZmFsc2UpOworICAgICAgICBpbnNlcnRGZWF0dXJlKHJlc3VsdCwg
a0xpZ2F0dXJlc1R5cGUsICJrTGlnYXR1cmVzVHlwZSIsIGtIaXN0b3JpY2FsTGlnYXR1cmVzT2Zm
U2VsZWN0b3IsICJrSGlzdG9yaWNhbExpZ2F0dXJlc09mZlNlbGVjdG9yIiwgZmFsc2UpOworICAg
ICAgICBpbnNlcnRGZWF0dXJlKHJlc3VsdCwga0NvbnRleHR1YWxBbHRlcm5hdGVzVHlwZSwgImtD
b250ZXh0dWFsQWx0ZXJuYXRlc1R5cGUiLCBrQ29udGV4dHVhbEFsdGVybmF0ZXNPblNlbGVjdG9y
LCAia0NvbnRleHR1YWxBbHRlcm5hdGVzT25TZWxlY3RvciIsIGZhbHNlKTsKKyAgICAgICAgaW5z
ZXJ0RmVhdHVyZShyZXN1bHQsIGtDb250ZXh0dWFsQWx0ZXJuYXRlc1R5cGUsICJrQ29udGV4dHVh
bEFsdGVybmF0ZXNUeXBlIiwga0NvbnRleHR1YWxBbHRlcm5hdGVzT2ZmU2VsZWN0b3IsICJrQ29u
dGV4dHVhbEFsdGVybmF0ZXNPZmZTZWxlY3RvciIsIGZhbHNlKTsKKyAgICAgICAgaW5zZXJ0RmVh
dHVyZShyZXN1bHQsIGtWZXJ0aWNhbFBvc2l0aW9uVHlwZSwgImtWZXJ0aWNhbFBvc2l0aW9uVHlw
ZSIsIGRlZmF1bHRVbnVzZWRTZWxlY3RvciwgImRlZmF1bHRVbnVzZWRTZWxlY3RvciIsIHRydWUp
OworICAgICAgICBpbnNlcnRGZWF0dXJlKHJlc3VsdCwga1ZlcnRpY2FsUG9zaXRpb25UeXBlLCAi
a1ZlcnRpY2FsUG9zaXRpb25UeXBlIiwga0luZmVyaW9yc1NlbGVjdG9yLCAia0luZmVyaW9yc1Nl
bGVjdG9yIiwgdHJ1ZSk7CisgICAgICAgIGluc2VydEZlYXR1cmUocmVzdWx0LCBrVmVydGljYWxQ
b3NpdGlvblR5cGUsICJrVmVydGljYWxQb3NpdGlvblR5cGUiLCBrU3VwZXJpb3JzU2VsZWN0b3Is
ICJrU3VwZXJpb3JzU2VsZWN0b3IiLCB0cnVlKTsKKyAgICAgICAgaW5zZXJ0RmVhdHVyZShyZXN1
bHQsIGtMb3dlckNhc2VUeXBlLCAia0xvd2VyQ2FzZVR5cGUiLCBkZWZhdWx0VW51c2VkU2VsZWN0
b3IsICJkZWZhdWx0VW51c2VkU2VsZWN0b3IiLCB0cnVlKTsKKyAgICAgICAgaW5zZXJ0RmVhdHVy
ZShyZXN1bHQsIGtVcHBlckNhc2VUeXBlLCAia1VwcGVyQ2FzZVR5cGUiLCBkZWZhdWx0VW51c2Vk
U2VsZWN0b3IsICJkZWZhdWx0VW51c2VkU2VsZWN0b3IiLCB0cnVlKTsKKyAgICAgICAgaW5zZXJ0
RmVhdHVyZShyZXN1bHQsIGtMb3dlckNhc2VUeXBlLCAia0xvd2VyQ2FzZVR5cGUiLCBrTG93ZXJD
YXNlU21hbGxDYXBzU2VsZWN0b3IsICJrTG93ZXJDYXNlU21hbGxDYXBzU2VsZWN0b3IiLCB0cnVl
KTsKKyAgICAgICAgaW5zZXJ0RmVhdHVyZShyZXN1bHQsIGtVcHBlckNhc2VUeXBlLCAia1VwcGVy
Q2FzZVR5cGUiLCBrVXBwZXJDYXNlU21hbGxDYXBzU2VsZWN0b3IsICJrVXBwZXJDYXNlU21hbGxD
YXBzU2VsZWN0b3IiLCB0cnVlKTsKKyAgICAgICAgaW5zZXJ0RmVhdHVyZShyZXN1bHQsIGtMb3dl
ckNhc2VUeXBlLCAia0xvd2VyQ2FzZVR5cGUiLCBrTG93ZXJDYXNlUGV0aXRlQ2Fwc1NlbGVjdG9y
LCAia0xvd2VyQ2FzZVBldGl0ZUNhcHNTZWxlY3RvciIsIHRydWUpOworICAgICAgICBpbnNlcnRG
ZWF0dXJlKHJlc3VsdCwga1VwcGVyQ2FzZVR5cGUsICJrVXBwZXJDYXNlVHlwZSIsIGtVcHBlckNh
c2VQZXRpdGVDYXBzU2VsZWN0b3IsICJrVXBwZXJDYXNlUGV0aXRlQ2Fwc1NlbGVjdG9yIiwgdHJ1
ZSk7CisgICAgICAgIGluc2VydEZlYXR1cmUocmVzdWx0LCBrTGV0dGVyQ2FzZVR5cGUsICJrTGV0
dGVyQ2FzZVR5cGUiLCBkZWZhdWx0VW51c2VkU2VsZWN0b3IsICJkZWZhdWx0VW51c2VkU2VsZWN0
b3IiLCB0cnVlKTsKKyAgICAgICAgaW5zZXJ0RmVhdHVyZShyZXN1bHQsIGtMZXR0ZXJDYXNlVHlw
ZSwgImtMZXR0ZXJDYXNlVHlwZSIsIDE0LCAiMTQiLCB0cnVlKTsKKyAgICAgICAgaW5zZXJ0RmVh
dHVyZShyZXN1bHQsIGtTdHlsZU9wdGlvbnNUeXBlLCAia1N0eWxlT3B0aW9uc1R5cGUiLCBkZWZh
dWx0VW51c2VkU2VsZWN0b3IsICJkZWZhdWx0VW51c2VkU2VsZWN0b3IiLCB0cnVlKTsKKyAgICAg
ICAgaW5zZXJ0RmVhdHVyZShyZXN1bHQsIGtTdHlsZU9wdGlvbnNUeXBlLCAia1N0eWxlT3B0aW9u
c1R5cGUiLCBrVGl0bGluZ0NhcHNTZWxlY3RvciwgImtUaXRsaW5nQ2Fwc1NlbGVjdG9yIiwgdHJ1
ZSk7CisgICAgICAgIGluc2VydEZlYXR1cmUocmVzdWx0LCBrTnVtYmVyQ2FzZVR5cGUsICJrTnVt
YmVyQ2FzZVR5cGUiLCBkZWZhdWx0VW51c2VkU2VsZWN0b3IsICJkZWZhdWx0VW51c2VkU2VsZWN0
b3IiLCB0cnVlKTsKKyAgICAgICAgaW5zZXJ0RmVhdHVyZShyZXN1bHQsIGtOdW1iZXJDYXNlVHlw
ZSwgImtOdW1iZXJDYXNlVHlwZSIsIGtVcHBlckNhc2VOdW1iZXJzU2VsZWN0b3IsICJrVXBwZXJD
YXNlTnVtYmVyc1NlbGVjdG9yIiwgdHJ1ZSk7CisgICAgICAgIGluc2VydEZlYXR1cmUocmVzdWx0
LCBrTnVtYmVyQ2FzZVR5cGUsICJrTnVtYmVyQ2FzZVR5cGUiLCBrTG93ZXJDYXNlTnVtYmVyc1Nl
bGVjdG9yLCAia0xvd2VyQ2FzZU51bWJlcnNTZWxlY3RvciIsIHRydWUpOworICAgICAgICBpbnNl
cnRGZWF0dXJlKHJlc3VsdCwga051bWJlclNwYWNpbmdUeXBlLCAia051bWJlclNwYWNpbmdUeXBl
IiwgZGVmYXVsdFVudXNlZFNlbGVjdG9yLCAiZGVmYXVsdFVudXNlZFNlbGVjdG9yIiwgdHJ1ZSk7
CisgICAgICAgIGluc2VydEZlYXR1cmUocmVzdWx0LCBrTnVtYmVyU3BhY2luZ1R5cGUsICJrTnVt
YmVyU3BhY2luZ1R5cGUiLCBrUHJvcG9ydGlvbmFsTnVtYmVyc1NlbGVjdG9yLCAia1Byb3BvcnRp
b25hbE51bWJlcnNTZWxlY3RvciIsIHRydWUpOworICAgICAgICBpbnNlcnRGZWF0dXJlKHJlc3Vs
dCwga051bWJlclNwYWNpbmdUeXBlLCAia051bWJlclNwYWNpbmdUeXBlIiwga01vbm9zcGFjZWRO
dW1iZXJzU2VsZWN0b3IsICJrTW9ub3NwYWNlZE51bWJlcnNTZWxlY3RvciIsIHRydWUpOworICAg
ICAgICBpbnNlcnRGZWF0dXJlKHJlc3VsdCwga0ZyYWN0aW9uc1R5cGUsICJrRnJhY3Rpb25zVHlw
ZSIsIGRlZmF1bHRVbnVzZWRTZWxlY3RvciwgImRlZmF1bHRVbnVzZWRTZWxlY3RvciIsIHRydWUp
OworICAgICAgICBpbnNlcnRGZWF0dXJlKHJlc3VsdCwga0ZyYWN0aW9uc1R5cGUsICJrRnJhY3Rp
b25zVHlwZSIsIGtEaWFnb25hbEZyYWN0aW9uc1NlbGVjdG9yLCAia0RpYWdvbmFsRnJhY3Rpb25z
U2VsZWN0b3IiLCB0cnVlKTsKKyAgICAgICAgaW5zZXJ0RmVhdHVyZShyZXN1bHQsIGtGcmFjdGlv
bnNUeXBlLCAia0ZyYWN0aW9uc1R5cGUiLCBrVmVydGljYWxGcmFjdGlvbnNTZWxlY3RvciwgImtW
ZXJ0aWNhbEZyYWN0aW9uc1NlbGVjdG9yIiwgdHJ1ZSk7CisgICAgICAgIGluc2VydEZlYXR1cmUo
cmVzdWx0LCBrVmVydGljYWxQb3NpdGlvblR5cGUsICJrVmVydGljYWxQb3NpdGlvblR5cGUiLCBr
T3JkaW5hbHNTZWxlY3RvciwgImtPcmRpbmFsc1NlbGVjdG9yIiwgdHJ1ZSk7CisgICAgICAgIGlu
c2VydEZlYXR1cmUocmVzdWx0LCBrVHlwb2dyYXBoaWNFeHRyYXNUeXBlLCAia1R5cG9ncmFwaGlj
RXh0cmFzVHlwZSIsIGtTbGFzaGVkWmVyb09uU2VsZWN0b3IsICJrU2xhc2hlZFplcm9PblNlbGVj
dG9yIiwgZmFsc2UpOworICAgICAgICBpbnNlcnRGZWF0dXJlKHJlc3VsdCwga0xpZ2F0dXJlc1R5
cGUsICJrTGlnYXR1cmVzVHlwZSIsIGtIaXN0b3JpY2FsTGlnYXR1cmVzT25TZWxlY3RvciwgImtI
aXN0b3JpY2FsTGlnYXR1cmVzT25TZWxlY3RvciIsIGZhbHNlKTsKKyAgICAgICAgaW5zZXJ0RmVh
dHVyZShyZXN1bHQsIGtDaGFyYWN0ZXJTaGFwZVR5cGUsICJrQ2hhcmFjdGVyU2hhcGVUeXBlIiwg
ZGVmYXVsdFVudXNlZFNlbGVjdG9yLCAiZGVmYXVsdFVudXNlZFNlbGVjdG9yIiwgdHJ1ZSk7Cisg
ICAgICAgIGluc2VydEZlYXR1cmUocmVzdWx0LCBrQ2hhcmFjdGVyU2hhcGVUeXBlLCAia0NoYXJh
Y3RlclNoYXBlVHlwZSIsIGtKSVMxOTc4Q2hhcmFjdGVyc1NlbGVjdG9yLCAia0pJUzE5NzhDaGFy
YWN0ZXJzU2VsZWN0b3IiLCB0cnVlKTsKKyAgICAgICAgaW5zZXJ0RmVhdHVyZShyZXN1bHQsIGtD
aGFyYWN0ZXJTaGFwZVR5cGUsICJrQ2hhcmFjdGVyU2hhcGVUeXBlIiwga0pJUzE5ODNDaGFyYWN0
ZXJzU2VsZWN0b3IsICJrSklTMTk4M0NoYXJhY3RlcnNTZWxlY3RvciIsIHRydWUpOworICAgICAg
ICBpbnNlcnRGZWF0dXJlKHJlc3VsdCwga0NoYXJhY3RlclNoYXBlVHlwZSwgImtDaGFyYWN0ZXJT
aGFwZVR5cGUiLCBrSklTMTk5MENoYXJhY3RlcnNTZWxlY3RvciwgImtKSVMxOTkwQ2hhcmFjdGVy
c1NlbGVjdG9yIiwgdHJ1ZSk7CisgICAgICAgIGluc2VydEZlYXR1cmUocmVzdWx0LCBrQ2hhcmFj
dGVyU2hhcGVUeXBlLCAia0NoYXJhY3RlclNoYXBlVHlwZSIsIGtKSVMyMDA0Q2hhcmFjdGVyc1Nl
bGVjdG9yLCAia0pJUzIwMDRDaGFyYWN0ZXJzU2VsZWN0b3IiLCB0cnVlKTsKKyAgICAgICAgaW5z
ZXJ0RmVhdHVyZShyZXN1bHQsIGtDaGFyYWN0ZXJTaGFwZVR5cGUsICJrQ2hhcmFjdGVyU2hhcGVU
eXBlIiwga1NpbXBsaWZpZWRDaGFyYWN0ZXJzU2VsZWN0b3IsICJrU2ltcGxpZmllZENoYXJhY3Rl
cnNTZWxlY3RvciIsIHRydWUpOworICAgICAgICBpbnNlcnRGZWF0dXJlKHJlc3VsdCwga0NoYXJh
Y3RlclNoYXBlVHlwZSwgImtDaGFyYWN0ZXJTaGFwZVR5cGUiLCBrVHJhZGl0aW9uYWxDaGFyYWN0
ZXJzU2VsZWN0b3IsICJrVHJhZGl0aW9uYWxDaGFyYWN0ZXJzU2VsZWN0b3IiLCB0cnVlKTsKKyAg
ICAgICAgaW5zZXJ0RmVhdHVyZShyZXN1bHQsIGtUZXh0U3BhY2luZ1R5cGUsICJrVGV4dFNwYWNp
bmdUeXBlIiwgZGVmYXVsdFVudXNlZFNlbGVjdG9yLCAiZGVmYXVsdFVudXNlZFNlbGVjdG9yIiwg
dHJ1ZSk7CisgICAgICAgIGluc2VydEZlYXR1cmUocmVzdWx0LCBrVGV4dFNwYWNpbmdUeXBlLCAi
a1RleHRTcGFjaW5nVHlwZSIsIGtNb25vc3BhY2VkVGV4dFNlbGVjdG9yLCAia01vbm9zcGFjZWRU
ZXh0U2VsZWN0b3IiLCB0cnVlKTsKKyAgICAgICAgaW5zZXJ0RmVhdHVyZShyZXN1bHQsIGtUZXh0
U3BhY2luZ1R5cGUsICJrVGV4dFNwYWNpbmdUeXBlIiwga1Byb3BvcnRpb25hbFRleHRTZWxlY3Rv
ciwgImtQcm9wb3J0aW9uYWxUZXh0U2VsZWN0b3IiLCB0cnVlKTsKKyAgICAgICAgaW5zZXJ0RmVh
dHVyZShyZXN1bHQsIGtSdWJ5S2FuYVR5cGUsICJrUnVieUthbmFUeXBlIiwga1J1YnlLYW5hT25T
ZWxlY3RvciwgImtSdWJ5S2FuYU9uU2VsZWN0b3IiLCBmYWxzZSk7CisKKyAgICAgICAgcmV0dXJu
IHJlc3VsdDsKKyAgICB9CiAgICAgCiAgICAgdm9pZCBhcHBlbmRDRkZUYWJsZSgpCiAgICAgewpA
QCAtNDE4LDkgKzY0Nyw5IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBhcHBlbmQxNihpKTsKIAog
ICAgICAgICAvLyBDaGFyU3RyaW5ncyBJTkRFWAotICAgICAgICBzdGQ6OnZlY3Rvcjx1aW50OF90
PiBib3hDaGFyU3RyaW5nID0gZ2VuZXJhdGVCb3hDaGFyU3RyaW5nKCk7Ci0gICAgICAgIHN0ZDo6
dmVjdG9yPHVpbnQ4X3Q+IGNoZWNrQ2hhclN0cmluZyA9IGdlbmVyYXRlQ2hlY2tDaGFyU3RyaW5n
KCk7Ci0gICAgICAgIHN0ZDo6dmVjdG9yPHVpbnQ4X3Q+IHhDaGFyU3RyaW5nID0gZ2VuZXJhdGVY
Q2hhclN0cmluZygpOworICAgICAgICBzdGQ6OnZlY3Rvcjx1aW50OF90PiBib3hDaGFyU3RyaW5n
ID0gZ2VuZXJhdGVCb3hDaGFyU3RyaW5nPENGRkJ1aWxkZXI+KCk7CisgICAgICAgIHN0ZDo6dmVj
dG9yPHVpbnQ4X3Q+IGNoZWNrQ2hhclN0cmluZyA9IGdlbmVyYXRlQ2hlY2tDaGFyU3RyaW5nPENG
RkJ1aWxkZXI+KCk7CisgICAgICAgIHN0ZDo6dmVjdG9yPHVpbnQ4X3Q+IHhDaGFyU3RyaW5nID0g
Z2VuZXJhdGVYQ2hhclN0cmluZzxDRkZCdWlsZGVyPigpOwogICAgICAgICBhc3NlcnQobnVtR2x5
cGhzID4gMjYpOwogICAgICAgICBvdmVyd3JpdGUzMihjaGFyc3RyaW5nc09mZnNldExvY2F0aW9u
LCBzdGF0aWNfY2FzdDx1aW50MzJfdD4ocmVzdWx0LnNpemUoKSAtIHN0YXJ0aW5nT2Zmc2V0KSk7
CiAgICAgICAgIGFwcGVuZDE2KG51bUdseXBocyk7CkBAIC00MjgsMTUgKzY1NywxMzQgQEAgcHJp
dmF0ZToKICAgICAgICAgb2Zmc2V0ID0gMTsKICAgICAgICAgYXBwZW5kMzIob2Zmc2V0KTsKICAg
ICAgICAgZm9yICh1aW50MTZfdCBnbHlwaCA9IDA7IGdseXBoIDwgbnVtR2x5cGhzOyArK2dseXBo
KSB7Ci0gICAgICAgICAgICBvZmZzZXQgKz0gY2hhclN0cmluZ0ZvckdseXBoKGdseXBoLCBib3hD
aGFyU3RyaW5nLCBjaGVja0NoYXJTdHJpbmcsIHhDaGFyU3RyaW5nKS5zaXplKCk7CisgICAgICAg
ICAgICBvZmZzZXQgKz0gaXRlbUZvckdseXBoKGdseXBoLCBib3hDaGFyU3RyaW5nLCBjaGVja0No
YXJTdHJpbmcsIHhDaGFyU3RyaW5nKS5zaXplKCk7CiAgICAgICAgICAgICBhcHBlbmQzMihvZmZz
ZXQpOwogICAgICAgICB9CiAgICAgICAgIGZvciAodWludDE2X3QgZ2x5cGggPSAwOyBnbHlwaCA8
IG51bUdseXBoczsgKytnbHlwaCkgewotICAgICAgICAgICAgc3RkOjp2ZWN0b3I8dWludDhfdD4m
IGNoYXJTdHJpbmcgPSBjaGFyU3RyaW5nRm9yR2x5cGgoZ2x5cGgsIGJveENoYXJTdHJpbmcsIGNo
ZWNrQ2hhclN0cmluZywgeENoYXJTdHJpbmcpOworICAgICAgICAgICAgY29uc3Qgc3RkOjp2ZWN0
b3I8dWludDhfdD4mIGNoYXJTdHJpbmcgPSBpdGVtRm9yR2x5cGgoZ2x5cGgsIGJveENoYXJTdHJp
bmcsIGNoZWNrQ2hhclN0cmluZywgeENoYXJTdHJpbmcpOworICAgICAgICAgICAgcmVzdWx0Lmlu
c2VydChyZXN1bHQuZW5kKCksIGNoYXJTdHJpbmcuYmVnaW4oKSwgY2hhclN0cmluZy5lbmQoKSk7
CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBLZWVwIGluIHN5bmMgd2l0aCBsb2NhCisgICAg
dm9pZCBhcHBlbmRHTFlGVGFibGUoKQorICAgIHsKKyAgICAgICAgc3RkOjp2ZWN0b3I8dWludDhf
dD4gYm94Q2hhclN0cmluZyA9IGdlbmVyYXRlQm94Q2hhclN0cmluZzxHTFlGQnVpbGRlcj4oKTsK
KyAgICAgICAgc3RkOjp2ZWN0b3I8dWludDhfdD4gY2hlY2tDaGFyU3RyaW5nID0gZ2VuZXJhdGVD
aGVja0NoYXJTdHJpbmc8R0xZRkJ1aWxkZXI+KCk7CisgICAgICAgIHN0ZDo6dmVjdG9yPHVpbnQ4
X3Q+IHhDaGFyU3RyaW5nID0gZ2VuZXJhdGVYQ2hhclN0cmluZzxHTFlGQnVpbGRlcj4oKTsKKyAg
ICAgICAgZm9yICh1aW50MTZfdCBnbHlwaCA9IDA7IGdseXBoIDwgbnVtR2x5cGhzOyArK2dseXBo
KSB7CisgICAgICAgICAgICBjb25zdCBzdGQ6OnZlY3Rvcjx1aW50OF90PiYgY2hhclN0cmluZyA9
IGl0ZW1Gb3JHbHlwaChnbHlwaCwgYm94Q2hhclN0cmluZywgY2hlY2tDaGFyU3RyaW5nLCB4Q2hh
clN0cmluZyk7CiAgICAgICAgICAgICByZXN1bHQuaW5zZXJ0KHJlc3VsdC5lbmQoKSwgY2hhclN0
cmluZy5iZWdpbigpLCBjaGFyU3RyaW5nLmVuZCgpKTsKICAgICAgICAgfQogICAgIH0KIAorICAg
IC8vIEtlZXAgaW4gc3luYyB3aXRoIGdseWYKKyAgICB2b2lkIGFwcGVuZExPQ0FUYWJsZSgpCisg
ICAgeworICAgICAgICBzdGQ6OnZlY3Rvcjx1aW50OF90PiBib3hDaGFyU3RyaW5nID0gZ2VuZXJh
dGVCb3hDaGFyU3RyaW5nPEdMWUZCdWlsZGVyPigpOworICAgICAgICBzdGQ6OnZlY3Rvcjx1aW50
OF90PiBjaGVja0NoYXJTdHJpbmcgPSBnZW5lcmF0ZUNoZWNrQ2hhclN0cmluZzxHTFlGQnVpbGRl
cj4oKTsKKyAgICAgICAgc3RkOjp2ZWN0b3I8dWludDhfdD4geENoYXJTdHJpbmcgPSBnZW5lcmF0
ZVhDaGFyU3RyaW5nPEdMWUZCdWlsZGVyPigpOworICAgICAgICB1aW50MzJfdCBpbmRleCA9IDA7
CisgICAgICAgIGZvciAodWludDE2X3QgZ2x5cGggPSAwOyBnbHlwaCA8IG51bUdseXBoczsgKytn
bHlwaCkgeworICAgICAgICAgICAgYXBwZW5kMzIoaW5kZXgpOworICAgICAgICAgICAgaW5kZXgg
Kz0gaXRlbUZvckdseXBoKGdseXBoLCBib3hDaGFyU3RyaW5nLCBjaGVja0NoYXJTdHJpbmcsIHhD
aGFyU3RyaW5nKS5zaXplKCk7CisgICAgICAgIH0KKyAgICAgICAgYXBwZW5kMzIoaW5kZXgpOwor
ICAgIH0KKworICAgIHZvaWQgYXBwZW5kRkVBVFRhYmxlKCkKKyAgICB7CisgICAgICAgIHNpemVf
dCB0YWJsZUxvY2F0aW9uID0gcmVzdWx0LnNpemUoKTsKKyAgICAgICAgYXBwZW5kMzIoMHgwMDAx
MDAwMCk7IC8vIFZlcnNpb24KKyAgICAgICAgYXBwZW5kMTYoZmVhdHVyZURlc2NyaXB0aW9uLnNp
emUoKSk7IC8vIE51bWJlciBvZiBlbnRyaWVzIGluIHRoZSBmZWF0dXJlIG5hbWUgYXJyYXkKKyAg
ICAgICAgYXBwZW5kMTYoMCk7IC8vIHJlc2VydmVkCisgICAgICAgIGFwcGVuZDMyKDApOyAvLyBy
ZXNlcnZlZAorCisgICAgICAgIC8vIEZlYXR1cmUgbmFtZSBhcnJheQorICAgICAgICBmb3IgKEZl
YXR1cmVUeXBlJiB0eXBlIDogZmVhdHVyZURlc2NyaXB0aW9uKSB7CisgICAgICAgICAgICBhcHBl
bmQxNih0eXBlLnR5cGUpOyAvLyBGZWF0dXJlIHR5cGUKKyAgICAgICAgICAgIGFwcGVuZDE2KHR5
cGUuc2VsZWN0b3JzLnNpemUoKSk7IC8vIE51bWJlciBvZiBzZXR0aW5ncworICAgICAgICAgICAg
dHlwZS5zZXR0aW5nVGFibGVPZmZzZXRMb2NhdGlvbiA9IHJlc3VsdC5zaXplKCk7CisgICAgICAg
ICAgICBhcHBlbmQzMigwKTsgLy8gT2Zmc2V0IGluIGJ5dGVzIGZyb20gYmVnaW5uaW5nIG9mIHRo
aXMgdGFibGUgdG8gZmVhdHVyZSdzIHNldHRpbmcgbmFtZSBhcnJheQorICAgICAgICAgICAgYXBw
ZW5kMTYodHlwZS5leGNsdXNpdmUgPyAweDgwMDAgOiAwKTsgLy8gRmxhZ3MuIDB4ODAwMCA9IEV4
Y2x1c2l2ZQorICAgICAgICAgICAgYXBwZW5kMTYodHlwZS5zdHJpbmdJbmRleCArIG1fYmFzZVN0
cmluZ0luZGV4KTsgLy8gSW5kZXggaW4gdGhlIG5hbWUgdGFibGUgZm9yIHRoZSBuYW1lIG9mIHRo
aXMgZmVhdHVyZQorICAgICAgICB9CisKKyAgICAgICAgLy8gU2V0dGluZyBuYW1lIGFycmF5Cisg
ICAgICAgIGZvciAoRmVhdHVyZVR5cGUmIHR5cGUgOiBmZWF0dXJlRGVzY3JpcHRpb24pIHsKKyAg
ICAgICAgICAgIG92ZXJ3cml0ZTMyKHR5cGUuc2V0dGluZ1RhYmxlT2Zmc2V0TG9jYXRpb24sIHN0
YXRpY19jYXN0PHVpbnQzMl90PihyZXN1bHQuc2l6ZSgpIC0gdGFibGVMb2NhdGlvbikpOworICAg
ICAgICAgICAgZm9yIChGZWF0dXJlU2VsZWN0b3ImIHNlbGVjdG9yIDogdHlwZS5zZWxlY3RvcnMp
IHsKKyAgICAgICAgICAgICAgICBhcHBlbmQxNihzZWxlY3Rvci5zZWxlY3Rvcik7IC8vIFNldHRp
bmc6IGtOb3JtYWxQb3NpdGlvblNlbGVjdG9yIChpbml0aWFsIHNldHRpbmcgaXMgZGVmYXVsdCkK
KyAgICAgICAgICAgICAgICBhcHBlbmQxNihzZWxlY3Rvci5zdHJpbmdJbmRleCArIG1fYmFzZVN0
cmluZ0luZGV4KTsgLy8gSW5kZXggaW4gdGhlIG5hbWUgdGFibGUgZm9yIHRoZSBuYW1lIG9mIHRo
aXMgc2V0dGluZworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgdm9pZCBh
cHBlbmRNZXRhbW9ycGhvc2lzQ2hhaW4oY29uc3QgRmVhdHVyZVR5cGUmIHR5cGUsIGNvbnN0IEZl
YXR1cmVTZWxlY3RvciYgc2VsZWN0b3IsIHVpbnQxNl90IGdseXBoVG9SZXBsYWNlLCB1aW50MTZf
dCB3aXRoTWUpCisgICAgeworICAgICAgICBzaXplX3QgY2hhaW5Mb2NhdGlvbiA9IHJlc3VsdC5z
aXplKCk7CisgICAgICAgIGFwcGVuZDMyKHR5cGUuZXhjbHVzaXZlICYmIHNlbGVjdG9yLmRlZmF1
bHRTZWxlY3RvciA/IDEgOiAwKTsgLy8gRGVmYXVsdCBmbGFncworICAgICAgICBzaXplX3QgY2hh
aW5TaXplTG9jYXRpb24gPSByZXN1bHQuc2l6ZSgpOworICAgICAgICBhcHBlbmQzMigwKTsgLy8g
UGxhY2Vob2xkZXIgZm9yIGNoYWluIGxlbmd0aCBpbiBieXRlcyAocGFkZGVkIHRvIG11bHRpcGxl
IG9mIDQpCisgICAgICAgIGFwcGVuZDMyKDIpOyAvLyBOdW1iZXIgb2YgZmVhdHVyZSBzdWJ0YWJs
ZSBlbnRyaWVzCisgICAgICAgIGFwcGVuZDMyKDEpOyAvLyBOdW1iZXIgb2Ygc3VidGFibGVzIGlu
IHRoZSBjaGFpbgorCisgICAgICAgIC8vIEZlYXR1cmUgdGFibGUKKyAgICAgICAgYXBwZW5kMTYo
dHlwZS50eXBlKTsgLy8gRmVhdHVyZSB0eXBlCisgICAgICAgIGFwcGVuZDE2KHNlbGVjdG9yLnNl
bGVjdG9yKTsgLy8gRmVhdHVyZSBzZWxlY3RvcgorICAgICAgICBhcHBlbmQzMigxKTsgLy8gRW5h
YmxlIGZsYWdzCisgICAgICAgIGFwcGVuZDMyKDB4RkZGRkZGRkYpOyAvLyBkaXNhYmxlIGZsYWdz
CisKKyAgICAgICAgLy8gRmVhdHVyZSB0YWJsZSAyCisgICAgICAgIGFwcGVuZDE2KDApOyAvLyBG
ZWF0dXJlIHR5cGU6IGtBbGxUeXBvZ3JhcGhpY0ZlYXR1cmVzVHlwZQorICAgICAgICBhcHBlbmQx
NigxKTsgLy8gRmVhdHVyZSBzZWxlY3Rvcjoga0FsbFR5cGVGZWF0dXJlc09mZlNlbGVjdG9yCisg
ICAgICAgIGFwcGVuZDMyKDApOyAvLyBFbmFibGUgZmxhZ3MKKyAgICAgICAgYXBwZW5kMzIoMCk7
IC8vIGRpc2FibGUgZmxhZ3MKKworICAgICAgICAvLyBNZXRhbW9ycGhvc2lzIHN1YnRhYmxlCisg
ICAgICAgIHNpemVfdCBtZXRhbW9ycGhvc2lzU3VidGFibGVTaXplTG9jYXRpb24gPSByZXN1bHQu
c2l6ZSgpOworICAgICAgICBhcHBlbmQzMigwKTsgLy8gUGxhY2Vob2xkZXIgZm9yIGNoYWluIGxl
bmd0aCBpbiBieXRlcyAocGFkZGVkIHRvIG11bHRpcGxlIG9mIDQpCisgICAgICAgIGFwcGVuZDMy
KDQpOyAvLyBDb3ZlcmFnZSBmbGFncyBhbmQgc3VidGFibGUgdHlwZS4gU3VidGFibGUgdHlwZSA0
OiBOb25jb250ZXh0dWFsICgic3dhc2giKSBzdWJ0YWJsZQorICAgICAgICBhcHBlbmQzMigxKTsg
Ly8gc3ViRmVhdHVyZSBmbGFncworCisgICAgICAgIC8vIE5vbi1jb250ZXh0dWFsIGdseXBoIHN1
YnN0aXR1dGlvbiBzdWJ0YWJsZQorICAgICAgICBhcHBlbmQxNig2KTsgLy8gTG9va3VwIGZvcm1h
dDogc29ydGVkIGxpc3Qgb2YgKGdseXBoIGluZGV4LCBsb29rdXAgdmFsdWUpIHBhaXJzCisgICAg
ICAgIAorICAgICAgICAvLyBCaW5TcmNoSGVhZGVyCisgICAgICAgIGFwcGVuZDE2KDQpOyAvLyBT
aXplIG9mIGEgbG9va3VwIHVuaXQgZm9yIHRoaXMgc2VhcmNoIGluIGJ5dGVzCisgICAgICAgIGFw
cGVuZDE2KDEpOyAvLyBOdW1iZXIgb2YgdW5pdHMgdG8gYmUgc2VhcmNoZWQKKyAgICAgICAgYXBw
ZW5kMTYoNCk7IC8vIFNlYXJjaCByYW5nZTogVGhlIHZhbHVlIG9mIHVuaXRTaXplIHRpbWVzIHRo
ZSBsYXJnZXN0IHBvd2VyIG9mIDIgdGhhdCBpcyBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gdGhlIHZh
bHVlIG9mIG5Vbml0cy4KKyAgICAgICAgYXBwZW5kMTYoMCk7IC8vIEVudHJ5IHNlbGVjdG9yOiBU
aGUgbG9nIGJhc2UgMiBvZiB0aGUgbGFyZ2VzdCBwb3dlciBvZiAyIGxlc3MgdGhhbiBvciBlcXVh
bCB0byB0aGUgdmFsdWUgb2YgblVuaXRzLgorICAgICAgICBhcHBlbmQxNigwKTsgLy8gUmFuZ2Ug
c2hpZnQ6IFRoZSB2YWx1ZSBvZiB1bml0U2l6ZSB0aW1lcyB0aGUgZGlmZmVyZW5jZSBvZiB0aGUg
dmFsdWUgb2YgblVuaXRzIG1pbnVzIHRoZSBsYXJnZXN0IHBvd2VyIG9mIDIgbGVzcyB0aGFuIG9y
IGVxdWFsIHRvIHRoZSB2YWx1ZSBvZiBuVW5pdHMuCisgICAgICAgIC8vIEVudHJpZXMKKyAgICAg
ICAgYXBwZW5kMTYoZ2x5cGhUb1JlcGxhY2UpOworICAgICAgICBhcHBlbmQxNih3aXRoTWUpOwor
CisgICAgICAgIG92ZXJ3cml0ZTMyKG1ldGFtb3JwaG9zaXNTdWJ0YWJsZVNpemVMb2NhdGlvbiwg
c3RhdGljX2Nhc3Q8dWludDMyX3Q+KHJlc3VsdC5zaXplKCkgLSBtZXRhbW9ycGhvc2lzU3VidGFi
bGVTaXplTG9jYXRpb24pKTsKKworICAgICAgICB3aGlsZSAocmVzdWx0LnNpemUoKSAlIDQpCisg
ICAgICAgICAgICByZXN1bHQucHVzaF9iYWNrKDApOworICAgICAgICBvdmVyd3JpdGUzMihjaGFp
blNpemVMb2NhdGlvbiwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHJlc3VsdC5zaXplKCkgLSBjaGFp
bkxvY2F0aW9uKSk7CisgICAgfQorCisgICAgdm9pZCBhcHBlbmRNT1JYVGFibGUoKQorICAgIHsK
KyAgICAgICAgYXBwZW5kMTYoMik7IC8vIFZlcnNpb24KKyAgICAgICAgYXBwZW5kMTYoMCk7IC8v
IFVudXNlZAorICAgICAgICBzaXplX3QgbnVtYmVyT2ZDaGFpbnNMb2NhdGlvbiA9IHJlc3VsdC5z
aXplKCk7CisgICAgICAgIGFwcGVuZDMyKDApOyAvLyBOdW1iZXIgb2YgbWV0YW1vcnBob3NpcyBj
aGFpbnMgcGxhY2Vob2xkZXIKKworICAgICAgICBpbnQgY291bnQgPSAwOworICAgICAgICBmb3Ig
KEZlYXR1cmVUeXBlJiB0eXBlIDogZmVhdHVyZURlc2NyaXB0aW9uKSB7CisgICAgICAgICAgICBm
b3IgKEZlYXR1cmVTZWxlY3RvciYgc2VsZWN0b3IgOiB0eXBlLnNlbGVjdG9ycykgeworICAgICAg
ICAgICAgICAgIGFwcGVuZE1ldGFtb3JwaG9zaXNDaGFpbih0eXBlLCBzZWxlY3RvciwgY291bnQg
KyAzLCAxKTsKKyAgICAgICAgICAgICAgICBjb3VudCsrOworICAgICAgICAgICAgfQorICAgICAg
ICB9CisgICAgCisgICAgICAgIG92ZXJ3cml0ZTMyKG51bWJlck9mQ2hhaW5zTG9jYXRpb24sIGNv
dW50KTsKKyAgICB9CisKICAgICB2b2lkIGFwcGVuZFN1YnN0aXR1dGlvblN1YnRhYmxlKHNpemVf
dCBzdWJ0YWJsZVJlY29yZExvY2F0aW9uLCB1aW50MTZfdCBpR2V0UmVwbGFjZWQsIHVpbnQxNl90
IHJlcGxhY2VkV2l0aE1lKQogICAgIHsKICAgICAgICAgb3ZlcndyaXRlMTYoc3VidGFibGVSZWNv
cmRMb2NhdGlvbiArIDYsIHJlc3VsdC5zaXplKCkgLSBzdWJ0YWJsZVJlY29yZExvY2F0aW9uKTsK
QEAgLTY3Nyw3ICsxMDI1LDcgQEAgcHJpdmF0ZToKICAgICAgICAgYXBwZW5kMTYoMCk7IC8vIFRy
YWl0cwogICAgICAgICBhcHBlbmQxNigzKTsgLy8gU21hbGxlc3QgcmVhZGFibGUgc2l6ZSBpbiBw
aXhlbHMKICAgICAgICAgYXBwZW5kMTYoMCk7IC8vIE1pZ2h0IGNvbnRhaW4gTFRSIG9yIFJUTCBn
bHlwaHMKLSAgICAgICAgYXBwZW5kMTYoMCk7IC8vIFNob3J0IG9mZnNldHMgaW4gdGhlICdsb2Nh
JyB0YWJsZS4gSG93ZXZlciwgT1RGIGZvbnRzIGRvbid0IGhhdmUgYSAnbG9jYScgdGFibGUgc28g
dGhpcyBpcyBpcnJlbGV2YW50CisgICAgICAgIGFwcGVuZDE2KDEpOyAvLyBMb25nIG9mZnNldHMg
aW4gdGhlICdsb2NhJyB0YWJsZS4KICAgICAgICAgYXBwZW5kMTYoMCk7IC8vIEdseXBoIGRhdGEg
Zm9ybWF0CiAgICAgfQogICAgIApAQCAtNzA1LDggKzEwNTMsOCBAQCBwcml2YXRlOgogICAgIHZv
aWQgYXBwZW5kSE1UWFRhYmxlKCkKICAgICB7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBudW1HbHlwaHM7ICsraSkgewotICAgICAgICAgICAgYXBwZW5kMTYoY2xhbXBUbzx1aW50
MTZfdD4odW5pdHNQZXJFbSkpOyAvLyBob3Jpem9udGFsIGFkdmFuY2UKLSAgICAgICAgICAgIGFw
cGVuZDE2KGNsYW1wVG88aW50MTZfdD4oMCkpOyAvLyBsZWZ0IHNpZGUgYmVhcmluZworICAgICAg
ICAgICAgYXBwZW5kMTYoY2xhbXBUbzx1aW50MTZfdD4oc3RhdGljX2Nhc3Q8aW50MzJfdD4odW5p
dHNQZXJFbSkpKTsgLy8gaG9yaXpvbnRhbCBhZHZhbmNlCisgICAgICAgICAgICBhcHBlbmQxNihp
dGVtRm9yR2x5cGgoaSwgMjAwLCAyMDAsIDUwKSk7IC8vIGxlZnQgc2lkZSBiZWFyaW5nCiAgICAg
ICAgIH0KICAgICB9CiAgICAgCkBAIC03MjgsMjUgKzEwNzYsNDcgQEAgcHJpdmF0ZToKICAgICAg
ICAgYXBwZW5kMTYobnVtR2x5cGhzKTsgLy8gTWF4aW11bSBudW1iZXIgb2YgZ2x5cGhzIHJlZmVy
ZW5jZWQgYXQgdG9wIGxldmVsCiAgICAgICAgIGFwcGVuZDE2KDApOyAvLyBObyBjb21wb3VuZCBn
bHlwaHMKICAgICB9Ci0gICAgCi0gICAgdm9pZCBhcHBlbmROQU1FVGFibGUoKQotICAgIHsKLSAg
ICAgICAgc3RkOjpzdHJpbmcgZm9udE5hbWUgPSAiTXlsZXNGb250IjsKLQotICAgICAgICBhcHBl
bmQxNigwKTsgLy8gRm9ybWF0IHNlbGVjdG9yCi0gICAgICAgIGFwcGVuZDE2KDEpOyAvLyBOdW1i
ZXIgb2YgbmFtZSByZWNvcmRzIGluIHRhYmxlCi0gICAgICAgIGFwcGVuZDE2KDE4KTsgLy8gT2Zm
c2V0IGluIGJ5dGVzIHRvIHRoZSBiZWdpbm5pbmcgb2YgbmFtZSBjaGFyYWN0ZXIgc3RyaW5ncwog
CisgICAgdm9pZCBhcHBlbmROYW1lU3VidGFibGUoY29uc3Qgc3RkOjpzdHJpbmcmIHMsIHVpbnQx
Nl90IG5hbWVJZGVudGlmaWVyKQorICAgIHsKICAgICAgICAgYXBwZW5kMTYoMCk7IC8vIFVuaWNv
ZGUKICAgICAgICAgYXBwZW5kMTYoMyk7IC8vIFVuaWNvZGUgdmVyc2lvbiAyLjAgb3IgbGF0ZXIK
ICAgICAgICAgYXBwZW5kMTYoMCk7IC8vIExhbmd1YWdlCi0gICAgICAgIGFwcGVuZDE2KDEpOyAv
LyBOYW1lIGlkZW50aWZpZXIuIDEgPSBGb250IGZhbWlseQotICAgICAgICBhcHBlbmQxNihmb250
TmFtZS5sZW5ndGgoKSk7Ci0gICAgICAgIGFwcGVuZDE2KDApOyAvLyBPZmZzZXQgaW50byBuYW1l
IGRhdGEKKyAgICAgICAgYXBwZW5kMTYobV9iYXNlU3RyaW5nSW5kZXggKyBuYW1lSWRlbnRpZmll
cik7IC8vIE5hbWUgaWRlbnRpZmllcgorICAgICAgICBhcHBlbmQxNihzLmxlbmd0aCgpKTsKKyAg
ICAgICAgYXBwZW5kMTYobV9uYW1lT2Zmc2V0KTsgLy8gT2Zmc2V0IGludG8gbmFtZSBkYXRhCisg
ICAgICAgIG1fbmFtZU9mZnNldCArPSBzLnNpemUoKSAqIDI7IC8vIENvZGUgdW5pdHMgZ2V0IDIg
Ynl0ZXMgZWFjaAorICAgIH0KIAotICAgICAgICBmb3IgKGF1dG8gY29kZVVuaXQgOiBmb250TmFt
ZSkKKyAgICB2b2lkIGFwcGVuZDJCeXRlQVNDSUlTdHJpbmcoc3RkOjpzdHJpbmcmIHMpCisgICAg
eworICAgICAgICBmb3IgKGF1dG8gY29kZVVuaXQgOiBzKQogICAgICAgICAgICAgYXBwZW5kMTYo
Y29kZVVuaXQpOwogICAgIH0KKworICAgIHZvaWQgYXBwZW5kTkFNRVRhYmxlKCkKKyAgICB7Cisg
ICAgICAgIHN0ZDo6c3RyaW5nIGZhbWlseU5hbWUgPSAiTXlsZXNGb250IjsgLy8gMTogRm9udCBG
YW1pbHkKKworICAgICAgICB1aW50MTZfdCBudW1iZXJPZlJlY29yZHMgPSBtX3N0cmluZ0luZGV4
ICsgMTsKKyAgICAgICAgYXBwZW5kMTYoMCk7IC8vIEZvcm1hdCBzZWxlY3RvcgorICAgICAgICBh
cHBlbmQxNihudW1iZXJPZlJlY29yZHMpOyAvLyBOdW1iZXIgb2YgbmFtZSByZWNvcmRzIGluIHRh
YmxlCisgICAgICAgIGFwcGVuZDE2KDYgKyAxMiAqIG51bWJlck9mUmVjb3Jkcyk7IC8vIE9mZnNl
dCBpbiBieXRlcyB0byB0aGUgYmVnaW5uaW5nIG9mIG5hbWUgY2hhcmFjdGVyIHN0cmluZ3MKKwor
ICAgICAgICBhcHBlbmROYW1lU3VidGFibGUoZmFtaWx5TmFtZSwgMSk7IC8vIDE6IEZvbnQgRmFt
aWx5CisgICAgICAgIGZvciAoRmVhdHVyZVR5cGUmIHR5cGUgOiBmZWF0dXJlRGVzY3JpcHRpb24p
IHsKKyAgICAgICAgICAgIGFwcGVuZE5hbWVTdWJ0YWJsZSh0eXBlLm5hbWUsIHR5cGUuc3RyaW5n
SW5kZXgpOworICAgICAgICAgICAgZm9yIChGZWF0dXJlU2VsZWN0b3ImIHNlbGVjdG9yIDogdHlw
ZS5zZWxlY3RvcnMpCisgICAgICAgICAgICAgICAgYXBwZW5kTmFtZVN1YnRhYmxlKHNlbGVjdG9y
Lm5hbWUsIHNlbGVjdG9yLnN0cmluZ0luZGV4KTsKKyAgICAgICAgfQorCisgICAgICAgIGFwcGVu
ZDJCeXRlQVNDSUlTdHJpbmcoZmFtaWx5TmFtZSk7CisgICAgICAgIGZvciAoRmVhdHVyZVR5cGUm
IHR5cGUgOiBmZWF0dXJlRGVzY3JpcHRpb24pIHsKKyAgICAgICAgICAgIGFwcGVuZDJCeXRlQVND
SUlTdHJpbmcodHlwZS5uYW1lKTsKKyAgICAgICAgICAgIGZvciAoRmVhdHVyZVNlbGVjdG9yJiBz
ZWxlY3RvciA6IHR5cGUuc2VsZWN0b3JzKQorICAgICAgICAgICAgICAgIGFwcGVuZDJCeXRlQVND
SUlTdHJpbmcoc2VsZWN0b3IubmFtZSk7CisgICAgICAgIH0KKyAgICB9CiAgICAgCiAgICAgdm9p
ZCBhcHBlbmRQT1NUVGFibGUoKQogICAgIHsKQEAgLTc5NiwxMCArMTE2NiwxNCBAQCBwcml2YXRl
OgogICAgIH0KIAogICAgIHVuc2lnbmVkIG1fdGFibGVzQXBwZW5kZWRDb3VudCB7IDAgfTsKKyAg
ICB1bnNpZ25lZCBtX25hbWVPZmZzZXQgeyAwIH07CisgICAgc3RhdGljIGNvbnN0ZXhwciB1aW50
MTZfdCBtX2Jhc2VTdHJpbmdJbmRleCB7IDI1NyB9OworICAgIHVpbnQxNl90IG1fc3RyaW5nSW5k
ZXggeyAwIH07CisgICAgc3RkOjp2ZWN0b3I8RmVhdHVyZVR5cGU+IGZlYXR1cmVEZXNjcmlwdGlv
bjsKICAgICBzdGQ6OnZlY3Rvcjx1aW50OF90PiByZXN1bHQ7CiB9OwogCi1zdGQ6OnZlY3Rvcjx1
aW50OF90PiBnZW5lcmF0ZUZvbnQoKQorc3RkOjp2ZWN0b3I8dWludDhfdD4gZ2VuZXJhdGVGb250
KFR5cGUgdHlwZSkKIHsKLSAgICByZXR1cm4gR2VuZXJhdG9yKCkuZ2VuZXJhdGUoKTsKKyAgICBy
ZXR1cm4gR2VuZXJhdG9yKCkuZ2VuZXJhdGUodHlwZSk7CiB9CmRpZmYgLS1naXQgYS9Ub29scy9G
b250V2l0aEZlYXR1cmVzL0ZvbnRXaXRoRmVhdHVyZXMvRm9udENyZWF0b3IuaCBiL1Rvb2xzL0Zv
bnRXaXRoRmVhdHVyZXMvRm9udFdpdGhGZWF0dXJlcy9Gb250Q3JlYXRvci5oCmluZGV4IGIxOTIw
ODY3Yjk3OWY3MzdkMTZiMDNhOTEzMmMxMDBjMGUzOGQzMzMuLmMzZjU2MzhjOWQyZDA3NDE3Yjg4
YWE3MTg0ZjI5Mjg2NGIxNTBhODggMTAwNjQ0Ci0tLSBhL1Rvb2xzL0ZvbnRXaXRoRmVhdHVyZXMv
Rm9udFdpdGhGZWF0dXJlcy9Gb250Q3JlYXRvci5oCisrKyBiL1Rvb2xzL0ZvbnRXaXRoRmVhdHVy
ZXMvRm9udFdpdGhGZWF0dXJlcy9Gb250Q3JlYXRvci5oCkBAIC0yOCw2ICsyOCwxMSBAQAogCiAj
aW5jbHVkZSA8dmVjdG9yPgogCi1zdGQ6OnZlY3Rvcjx1aW50OF90PiBnZW5lcmF0ZUZvbnQoKTsK
K2VudW0gY2xhc3MgVHlwZSB7CisgICAgT3BlblR5cGUsCisgICAgVHJ1ZVR5cGUKK307CisKK3N0
ZDo6dmVjdG9yPHVpbnQ4X3Q+IGdlbmVyYXRlRm9udChUeXBlKTsKIAogI2VuZGlmIC8qIEZvbnRD
cmVhdG9yX2ggKi8KZGlmZiAtLWdpdCBhL1Rvb2xzL0ZvbnRXaXRoRmVhdHVyZXMvRm9udFdpdGhG
ZWF0dXJlcy9tYWluLmNwcCBiL1Rvb2xzL0ZvbnRXaXRoRmVhdHVyZXMvRm9udFdpdGhGZWF0dXJl
cy9tYWluLmNwcAppbmRleCAxNjJlZGY3NDc1MzY2MjdiNDU3NjU4MzYyYWM3NWYwZjMzNzQ1NTc3
Li5iN2FiNTBlY2Y5M2I5MjQ5MzUyZGZjMWE5YTE4ZGEwZGQwYmRlNWUxIDEwMDY0NAotLS0gYS9U
b29scy9Gb250V2l0aEZlYXR1cmVzL0ZvbnRXaXRoRmVhdHVyZXMvbWFpbi5jcHAKKysrIGIvVG9v
bHMvRm9udFdpdGhGZWF0dXJlcy9Gb250V2l0aEZlYXR1cmVzL21haW4uY3BwCkBAIC0zMiwxMiAr
MzIsMzIgQEAKICNpbmNsdWRlIDxJbWFnZUlPL0ltYWdlSU8uaD4KICNpbmNsdWRlIDxmc3RyZWFt
PgogCi12b2lkIGRyYXdUZXh0V2l0aEZlYXR1cmUoQ0dDb250ZXh0UmVmIGNvbnRleHQsIENURm9u
dERlc2NyaXB0b3JSZWYgZm9udERlc2NyaXB0b3IsIENGU3RyaW5nUmVmIGZlYXR1cmUsIGludCB2
YWx1ZSwgQ0dQb2ludCBsb2NhdGlvbikKK3N0YXRpYyBDVEZvbnREZXNjcmlwdG9yUmVmIGNvbnN0
cnVjdEZvbnRXaXRoVHJ1ZVR5cGVGZWF0dXJlKENURm9udERlc2NyaXB0b3JSZWYgZm9udERlc2Ny
aXB0b3IsIGludCB0eXBlLCBpbnQgc2VsZWN0b3IpCiB7Ci0gICAgQ0dGbG9hdCBmb250U2l6ZSA9
IDI1OwotICAgIENHQ29udGV4dFNldFRleHRNYXRyaXgoY29udGV4dCwgQ0dBZmZpbmVUcmFuc2Zv
cm1TY2FsZShDR0FmZmluZVRyYW5zZm9ybUlkZW50aXR5LCAxLCAxKSk7Ci0gICAgQ0dDb250ZXh0
U2V0VGV4dFBvc2l0aW9uKGNvbnRleHQsIGxvY2F0aW9uLngsIGxvY2F0aW9uLnkpOworICAgIENG
TnVtYmVyUmVmIHR5cGVWYWx1ZSA9IENGTnVtYmVyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQs
IGtDRk51bWJlckludFR5cGUsICZ0eXBlKTsKKyAgICBDRk51bWJlclJlZiBzZWxlY3RvclZhbHVl
ID0gQ0ZOdW1iZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwga0NGTnVtYmVySW50VHlwZSwg
JnNlbGVjdG9yKTsKKyAgICBDRlR5cGVSZWYgZmVhdHVyZURpY3Rpb25hcnlLZXlzW10gPSB7IGtD
VEZvbnRGZWF0dXJlVHlwZUlkZW50aWZpZXJLZXksIGtDVEZvbnRGZWF0dXJlU2VsZWN0b3JJZGVu
dGlmaWVyS2V5IH07CisgICAgQ0ZUeXBlUmVmIGZlYXR1cmVEaWN0aW9uYXJ5VmFsdWVzW10gPSB7
IHR5cGVWYWx1ZSwgc2VsZWN0b3JWYWx1ZSB9OworICAgIENGRGljdGlvbmFyeVJlZiBmZWF0dXJl
RGljdGlvbmFyeSA9IENGRGljdGlvbmFyeUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBmZWF0
dXJlRGljdGlvbmFyeUtleXMsIGZlYXR1cmVEaWN0aW9uYXJ5VmFsdWVzLCAyLCAma0NGVHlwZURp
Y3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKTsK
KyAgICBDRlJlbGVhc2UodHlwZVZhbHVlKTsKKyAgICBDRlJlbGVhc2Uoc2VsZWN0b3JWYWx1ZSk7
CisKKyAgICBDRlR5cGVSZWYgZmVhdHVyZVNldHRpbmdzVmFsdWVzW10gPSB7IGZlYXR1cmVEaWN0
aW9uYXJ5IH07CisgICAgQ0ZBcnJheVJlZiBmb250RmVhdHVyZVNldHRpbmdzID0gQ0ZBcnJheUNy
ZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBmZWF0dXJlU2V0dGluZ3NWYWx1ZXMsIDEsICZrQ0ZU
eXBlQXJyYXlDYWxsQmFja3MpOworICAgIENGUmVsZWFzZShmZWF0dXJlRGljdGlvbmFyeSk7CiAK
KyAgICBDRlR5cGVSZWYgZm9udERlc2NyaXB0b3JLZXlzW10gPSB7IGtDVEZvbnRGZWF0dXJlU2V0
dGluZ3NBdHRyaWJ1dGUgfTsKKyAgICBDRlR5cGVSZWYgZm9udERlc2NyaXB0b3JWYWx1ZXNbXSA9
IHsgZm9udEZlYXR1cmVTZXR0aW5ncyB9OworICAgIENGRGljdGlvbmFyeVJlZiBmb250RGVzY3Jp
cHRvckF0dHJpYnV0ZXMgPSBDRkRpY3Rpb25hcnlDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwg
Zm9udERlc2NyaXB0b3JLZXlzLCBmb250RGVzY3JpcHRvclZhbHVlcywgMSwgJmtDRlR5cGVEaWN0
aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcyk7Cisg
ICAgQ0ZSZWxlYXNlKGZvbnRGZWF0dXJlU2V0dGluZ3MpOworCisgICAgQ1RGb250RGVzY3JpcHRv
clJlZiBtb2RpZmllZEZvbnREZXNjcmlwdG9yID0gQ1RGb250RGVzY3JpcHRvckNyZWF0ZUNvcHlX
aXRoQXR0cmlidXRlcyhmb250RGVzY3JpcHRvciwgZm9udERlc2NyaXB0b3JBdHRyaWJ1dGVzKTsK
KyAgICBDRlJlbGVhc2UoZm9udERlc2NyaXB0b3JBdHRyaWJ1dGVzKTsKKyAgICByZXR1cm4gbW9k
aWZpZWRGb250RGVzY3JpcHRvcjsKK30KKworc3RhdGljIENURm9udERlc2NyaXB0b3JSZWYgY29u
c3RydWN0Rm9udFdpdGhPcGVuVHlwZUZlYXR1cmUoQ1RGb250RGVzY3JpcHRvclJlZiBmb250RGVz
Y3JpcHRvciwgQ0ZTdHJpbmdSZWYgZmVhdHVyZSwgaW50IHZhbHVlKQorewogICAgIENGTnVtYmVy
UmVmIGZlYXR1cmVWYWx1ZSA9IENGTnVtYmVyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIGtD
Rk51bWJlckludFR5cGUsICZ2YWx1ZSk7CiAgICAgQ0ZUeXBlUmVmIGZlYXR1cmVEaWN0aW9uYXJ5
S2V5c1tdID0geyBrQ1RGb250T3BlblR5cGVGZWF0dXJlVGFnLCBrQ1RGb250T3BlblR5cGVGZWF0
dXJlVmFsdWUgfTsKICAgICBDRlR5cGVSZWYgZmVhdHVyZURpY3Rpb25hcnlWYWx1ZXNbXSA9IHsg
ZmVhdHVyZSwgZmVhdHVyZVZhbHVlIH07CkBAIC01NSwxNCArNzUsMjAgQEAgdm9pZCBkcmF3VGV4
dFdpdGhGZWF0dXJlKENHQ29udGV4dFJlZiBjb250ZXh0LCBDVEZvbnREZXNjcmlwdG9yUmVmIGZv
bnREZXNjcmlwdG8KIAogICAgIENURm9udERlc2NyaXB0b3JSZWYgbW9kaWZpZWRGb250RGVzY3Jp
cHRvciA9IENURm9udERlc2NyaXB0b3JDcmVhdGVDb3B5V2l0aEF0dHJpYnV0ZXMoZm9udERlc2Ny
aXB0b3IsIGZvbnREZXNjcmlwdG9yQXR0cmlidXRlcyk7CiAgICAgQ0ZSZWxlYXNlKGZvbnREZXNj
cmlwdG9yQXR0cmlidXRlcyk7CisgICAgcmV0dXJuIG1vZGlmaWVkRm9udERlc2NyaXB0b3I7Cit9
CiAKLSAgICBDVEZvbnRSZWYgZm9udCA9IENURm9udENyZWF0ZVdpdGhGb250RGVzY3JpcHRvciht
b2RpZmllZEZvbnREZXNjcmlwdG9yLCBmb250U2l6ZSwgbnVsbHB0cik7Ci0gICAgQ0ZSZWxlYXNl
KG1vZGlmaWVkRm9udERlc2NyaXB0b3IpOworc3RhdGljIHZvaWQgZHJhd1RleHQoQ0dDb250ZXh0
UmVmIGNvbnRleHQsIENURm9udERlc2NyaXB0b3JSZWYgZm9udERlc2NyaXB0b3IsIENGU3RyaW5n
UmVmIHByZWZpeCwgQ0dQb2ludCBsb2NhdGlvbikKK3sKKyAgICBDR0NvbnRleHRTZXRUZXh0TWF0
cml4KGNvbnRleHQsIENHQWZmaW5lVHJhbnNmb3JtU2NhbGUoQ0dBZmZpbmVUcmFuc2Zvcm1JZGVu
dGl0eSwgMSwgMSkpOworICAgIENHQ29udGV4dFNldFRleHRQb3NpdGlvbihjb250ZXh0LCBsb2Nh
dGlvbi54LCBsb2NhdGlvbi55KTsKKworICAgIENHRmxvYXQgZm9udFNpemUgPSAyNTsKKyAgICBD
VEZvbnRSZWYgZm9udCA9IENURm9udENyZWF0ZVdpdGhGb250RGVzY3JpcHRvcihmb250RGVzY3Jp
cHRvciwgZm9udFNpemUsIG51bGxwdHIpOwogCiAgICAgQ0ZNdXRhYmxlU3RyaW5nUmVmIHN0cmlu
ZyA9IENGU3RyaW5nQ3JlYXRlTXV0YWJsZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAwKTsKLSAgICBD
RlN0cmluZ0FwcGVuZChzdHJpbmcsIGZlYXR1cmUpOwotICAgIENGU3RyaW5nQXBwZW5kKHN0cmlu
ZywgdmFsdWUgPyBDRlNUUigiICAob24pIikgOiBDRlNUUigiIChvZmYpIikpOwotICAgIENGU3Ry
aW5nQXBwZW5kKHN0cmluZywgQ0ZTVFIoIjogQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNk
ZWZnaGlqa2xtbm9wcXJzdHV2d3h5eiIpKTsKKyAgICBDRlN0cmluZ0FwcGVuZChzdHJpbmcsIHBy
ZWZpeCk7CisgICAgQ0ZTdHJpbmdBcHBlbmQoc3RyaW5nLCBDRlNUUigiQUJDREVGR0hJSktMTU5P
UFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eiIpKTsKIAogICAgIENHQ29sb3JS
ZWYgcmVkID0gQ0dDb2xvckNyZWF0ZUdlbmVyaWNSR0IoMSwgMCwgMCwgMSk7CiAgICAgQ0ZUeXBl
UmVmIGxpbmVLZXlzW10gPSB7IGtDVEZvcmVncm91bmRDb2xvckF0dHJpYnV0ZU5hbWUgfTsKQEAg
LTcyLDE2ICs5OCwxNiBAQCB2b2lkIGRyYXdUZXh0V2l0aEZlYXR1cmUoQ0dDb250ZXh0UmVmIGNv
bnRleHQsIENURm9udERlc2NyaXB0b3JSZWYgZm9udERlc2NyaXB0bwogCiAgICAgQ0ZBdHRyaWJ1
dGVkU3RyaW5nUmVmIGF0dHJpYnV0ZWRTdHJpbmcgPSBDRkF0dHJpYnV0ZWRTdHJpbmdDcmVhdGUo
a0NGQWxsb2NhdG9yRGVmYXVsdCwgc3RyaW5nLCBsaW5lQXR0cmlidXRlcyk7CiAgICAgQ0ZSZWxl
YXNlKGxpbmVBdHRyaWJ1dGVzKTsKLSAgICBDRlJlbGVhc2Uoc3RyaW5nKTsKIAogICAgIENGTXV0
YWJsZUF0dHJpYnV0ZWRTdHJpbmdSZWYgbXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcgPSBDRkF0dHJp
YnV0ZWRTdHJpbmdDcmVhdGVNdXRhYmxlQ29weShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAwLCBhdHRy
aWJ1dGVkU3RyaW5nKTsKICAgICBDRlJlbGVhc2UoYXR0cmlidXRlZFN0cmluZyk7CiAKICAgICBD
VEZvbnRSZWYgbW9ub3NwYWNlRm9udCA9IENURm9udENyZWF0ZVdpdGhOYW1lKENGU1RSKCJDb3Vy
aWVyIiksIGZvbnRTaXplLCBudWxscHRyKTsKLSAgICBDRkF0dHJpYnV0ZWRTdHJpbmdTZXRBdHRy
aWJ1dGUobXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcsIENGUmFuZ2VNYWtlKDAsIDEyKSwga0NURm9u
dEF0dHJpYnV0ZU5hbWUsIG1vbm9zcGFjZUZvbnQpOworICAgIENGQXR0cmlidXRlZFN0cmluZ1Nl
dEF0dHJpYnV0ZShtdXRhYmxlQXR0cmlidXRlZFN0cmluZywgQ0ZSYW5nZU1ha2UoMCwgQ0ZTdHJp
bmdHZXRMZW5ndGgocHJlZml4KSksIGtDVEZvbnRBdHRyaWJ1dGVOYW1lLCBtb25vc3BhY2VGb250
KTsKICAgICBDRlJlbGVhc2UobW9ub3NwYWNlRm9udCk7CiAKLSAgICBDRkF0dHJpYnV0ZWRTdHJp
bmdTZXRBdHRyaWJ1dGUobXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcsIENGUmFuZ2VNYWtlKDEyLCA1
MiksIGtDVEZvbnRBdHRyaWJ1dGVOYW1lLCBmb250KTsKKyAgICBDRkF0dHJpYnV0ZWRTdHJpbmdT
ZXRBdHRyaWJ1dGUobXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcsIENGUmFuZ2VNYWtlKENGU3RyaW5n
R2V0TGVuZ3RoKHByZWZpeCksIENGU3RyaW5nR2V0TGVuZ3RoKHN0cmluZykgLSBDRlN0cmluZ0dl
dExlbmd0aChwcmVmaXgpKSwga0NURm9udEF0dHJpYnV0ZU5hbWUsIGZvbnQpOworICAgIENGUmVs
ZWFzZShzdHJpbmcpOwogICAgIENGUmVsZWFzZShmb250KTsKIAogICAgIENUTGluZVJlZiBsaW5l
ID0gQ1RMaW5lQ3JlYXRlV2l0aEF0dHJpYnV0ZWRTdHJpbmcobXV0YWJsZUF0dHJpYnV0ZWRTdHJp
bmcpOwpAQCAtOTMsMTMgKzExOSwxNCBAQCB2b2lkIGRyYXdUZXh0V2l0aEZlYXR1cmUoQ0dDb250
ZXh0UmVmIGNvbnRleHQsIENURm9udERlc2NyaXB0b3JSZWYgZm9udERlc2NyaXB0bwogCiBpbnQg
bWFpbihpbnQgYXJnYywgY29uc3QgY2hhciAqIGFyZ3ZbXSkKIHsKLSAgICBzaXplX3Qgd2lkdGgg
PSAyMDAwOworICAgIHNpemVfdCB3aWR0aCA9IDI1MDA7CiAgICAgc2l6ZV90IGhlaWdodCA9IDIw
MDA7CiAgICAgQ0dDb2xvclNwYWNlUmVmIGNvbG9yU3BhY2UgPSBDR0NvbG9yU3BhY2VDcmVhdGVE
ZXZpY2VSR0IoKTsKICAgICBDR0NvbnRleHRSZWYgY29udGV4dCA9IENHQml0bWFwQ29udGV4dENy
ZWF0ZShudWxscHRyLCB3aWR0aCwgaGVpZ2h0LCA4LCB3aWR0aCAqIDQsIGNvbG9yU3BhY2UsIGtD
R0ltYWdlQWxwaGFOb25lU2tpcExhc3QpOwogICAgIENHQ29sb3JTcGFjZVJlbGVhc2UoY29sb3JT
cGFjZSk7Ci0gICAgY29uc3Qgc3RkOjp2ZWN0b3I8dWludDhfdD4gZm9udFZlY3RvciA9IGdlbmVy
YXRlRm9udCgpOwotICAgIHN0ZDo6b2ZzdHJlYW0gb3V0cHV0RmlsZSgiL1ZvbHVtZXMvRGF0YS9o
b21lL21tYXhmaWVsZC90bXAvb3V0cHV0Lm90ZiIsIHN0ZDo6aW9zOjpvdXQgfCBzdGQ6Omlvczo6
YmluYXJ5KTsKKyAgICBUeXBlIHR5cGUgPSBUeXBlOjpUcnVlVHlwZTsKKyAgICBjb25zdCBzdGQ6
OnZlY3Rvcjx1aW50OF90PiBmb250VmVjdG9yID0gZ2VuZXJhdGVGb250KHR5cGUpOworICAgIHN0
ZDo6b2ZzdHJlYW0gb3V0cHV0RmlsZSgiL1ZvbHVtZXMvRGF0YS9ob21lL21tYXhmaWVsZC90bXAv
b3V0cHV0LnR0ZiIsIHN0ZDo6aW9zOjpvdXQgfCBzdGQ6Omlvczo6YmluYXJ5KTsKICAgICBmb3Ig
KHVpbnQ4X3QgYiA6IGZvbnRWZWN0b3IpCiAgICAgICAgIG91dHB1dEZpbGUgPDwgYjsKICAgICBv
dXRwdXRGaWxlLmNsb3NlKCk7CkBAIC0xMDgsMTUgKzEzNSw4NSBAQCBpbnQgbWFpbihpbnQgYXJn
YywgY29uc3QgY2hhciAqIGFyZ3ZbXSkKICAgICBDVEZvbnREZXNjcmlwdG9yUmVmIGZvbnREZXNj
cmlwdG9yID0gQ1RGb250TWFuYWdlckNyZWF0ZUZvbnREZXNjcmlwdG9yRnJvbURhdGEoZm9udERh
dGEpOwogICAgIENGUmVsZWFzZShmb250RGF0YSk7CiAKLSAgICBDRlR5cGVSZWYgZmVhdHVyZVZh
bHVlc1tdID0geyBDRlNUUigibGlnYSIpLCBDRlNUUigiY2xpZyIpLCBDRlNUUigiZGxpZyIpLCBD
RlNUUigiaGxpZyIpLCBDRlNUUigiY2FsdCIpLCBDRlNUUigic3VicyIpLCBDRlNUUigic3VwcyIp
LCBDRlNUUigic21jcCIpLCBDRlNUUigiYzJzYyIpLCBDRlNUUigicGNhcCIpLCBDRlNUUigiYzJw
YyIpLCBDRlNUUigidW5pYyIpLCBDRlNUUigidGl0bCIpLCBDRlNUUigib251bSIpLCBDRlNUUigi
cG51bSIpLCBDRlNUUigidG51bSIpLCBDRlNUUigiZnJhYyIpLCBDRlNUUigiYWZyYyIpLCBDRlNU
Uigib3JkbiIpLCBDRlNUUigiemVybyIpLCBDRlNUUigiaGlzdCIpLCBDRlNUUigianA3OCIpLCBD
RlNUUigianA4MyIpLCBDRlNUUigianA5MCIpLCBDRlNUUigianAwNCIpLCBDRlNUUigic21wbCIp
LCBDRlNUUigidHJhZCIpLCBDRlNUUigiZndpZCIpLCBDRlNUUigicHdpZCIpLCBDRlNUUigicnVi
eSIpIH07Ci0gICAgQ0ZBcnJheVJlZiBmZWF0dXJlcyA9IENGQXJyYXlDcmVhdGUoa0NGQWxsb2Nh
dG9yRGVmYXVsdCwgZmVhdHVyZVZhbHVlcywgMzAsICZrQ0ZUeXBlQXJyYXlDYWxsQmFja3MpOwot
Ci0gICAgZm9yIChDRkluZGV4IGkgPSAwOyBpIDwgQ0ZBcnJheUdldENvdW50KGZlYXR1cmVzKTsg
KytpKSB7Ci0gICAgICAgIGRyYXdUZXh0V2l0aEZlYXR1cmUoY29udGV4dCwgZm9udERlc2NyaXB0
b3IsIHN0YXRpY19jYXN0PENGU3RyaW5nUmVmPihDRkFycmF5R2V0VmFsdWVBdEluZGV4KGZlYXR1
cmVzLCBpKSksIDEsIENHUG9pbnRNYWtlKDI1LCAxOTUwIC0gNTAgKiBpKSk7Ci0gICAgICAgIGRy
YXdUZXh0V2l0aEZlYXR1cmUoY29udGV4dCwgZm9udERlc2NyaXB0b3IsIHN0YXRpY19jYXN0PENG
U3RyaW5nUmVmPihDRkFycmF5R2V0VmFsdWVBdEluZGV4KGZlYXR1cmVzLCBpKSksIDAsIENHUG9p
bnRNYWtlKDI1LCAxOTI1IC0gNTAgKiBpKSk7CisgICAgaWYgKHR5cGUgPT0gVHlwZTo6T3BlblR5
cGUpIHsKKyAgICAgICAgQ0ZUeXBlUmVmIGZlYXR1cmVWYWx1ZXNPcGVuVHlwZVtdID0geyBDRlNU
UigibGlnYSIpLCBDRlNUUigiY2xpZyIpLCBDRlNUUigiZGxpZyIpLCBDRlNUUigiaGxpZyIpLCBD
RlNUUigiY2FsdCIpLCBDRlNUUigic3VicyIpLCBDRlNUUigic3VwcyIpLCBDRlNUUigic21jcCIp
LCBDRlNUUigiYzJzYyIpLCBDRlNUUigicGNhcCIpLCBDRlNUUigiYzJwYyIpLCBDRlNUUigidW5p
YyIpLCBDRlNUUigidGl0bCIpLCBDRlNUUigib251bSIpLCBDRlNUUigicG51bSIpLCBDRlNUUigi
dG51bSIpLCBDRlNUUigiZnJhYyIpLCBDRlNUUigiYWZyYyIpLCBDRlNUUigib3JkbiIpLCBDRlNU
UigiemVybyIpLCBDRlNUUigiaGlzdCIpLCBDRlNUUigianA3OCIpLCBDRlNUUigianA4MyIpLCBD
RlNUUigianA5MCIpLCBDRlNUUigianAwNCIpLCBDRlNUUigic21wbCIpLCBDRlNUUigidHJhZCIp
LCBDRlNUUigiZndpZCIpLCBDRlNUUigicHdpZCIpLCBDRlNUUigicnVieSIpIH07CisgICAgICAg
IENGQXJyYXlSZWYgZmVhdHVyZXMgPSBDRkFycmF5Q3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQs
IGZlYXR1cmVWYWx1ZXNPcGVuVHlwZSwgMzAsICZrQ0ZUeXBlQXJyYXlDYWxsQmFja3MpOworCisg
ICAgICAgIGZvciAoQ0ZJbmRleCBpID0gMDsgaSA8IENGQXJyYXlHZXRDb3VudChmZWF0dXJlcyk7
ICsraSkgeworICAgICAgICAgICAgQ0ZTdHJpbmdSZWYgZmVhdHVyZSA9IHN0YXRpY19jYXN0PENG
U3RyaW5nUmVmPihDRkFycmF5R2V0VmFsdWVBdEluZGV4KGZlYXR1cmVzLCBpKSk7CisgICAgICAg
ICAgICBDVEZvbnREZXNjcmlwdG9yUmVmIG1vZGlmaWVkRm9udERlc2NyaXB0b3IgPSBjb25zdHJ1
Y3RGb250V2l0aE9wZW5UeXBlRmVhdHVyZShmb250RGVzY3JpcHRvciwgZmVhdHVyZSwgMSk7Cisg
ICAgICAgICAgICBDRk11dGFibGVTdHJpbmdSZWYgcHJlZml4ID0gQ0ZTdHJpbmdDcmVhdGVNdXRh
YmxlKGtDRkFsbG9jYXRvckRlZmF1bHQsIDApOworICAgICAgICAgICAgQ0ZTdHJpbmdBcHBlbmQo
cHJlZml4LCBmZWF0dXJlKTsKKyAgICAgICAgICAgIENGU3RyaW5nQXBwZW5kKHByZWZpeCwgQ0ZT
VFIoIiAgKG9uKTogIikpOworICAgICAgICAgICAgZHJhd1RleHQoY29udGV4dCwgbW9kaWZpZWRG
b250RGVzY3JpcHRvciwgcHJlZml4LCBDR1BvaW50TWFrZSgyNSwgMTk1MCAtIDUwICogaSkpOwor
ICAgICAgICAgICAgQ0ZSZWxlYXNlKHByZWZpeCk7CisgICAgICAgICAgICBDRlJlbGVhc2UobW9k
aWZpZWRGb250RGVzY3JpcHRvcik7CisKKyAgICAgICAgICAgIG1vZGlmaWVkRm9udERlc2NyaXB0
b3IgPSBjb25zdHJ1Y3RGb250V2l0aE9wZW5UeXBlRmVhdHVyZShmb250RGVzY3JpcHRvciwgZmVh
dHVyZSwgMCk7CisgICAgICAgICAgICBwcmVmaXggPSBDRlN0cmluZ0NyZWF0ZU11dGFibGUoa0NG
QWxsb2NhdG9yRGVmYXVsdCwgMCk7CisgICAgICAgICAgICBDRlN0cmluZ0FwcGVuZChwcmVmaXgs
IGZlYXR1cmUpOworICAgICAgICAgICAgQ0ZTdHJpbmdBcHBlbmQocHJlZml4LCBDRlNUUigiIChv
ZmYpOiAiKSk7CisgICAgICAgICAgICBkcmF3VGV4dChjb250ZXh0LCBtb2RpZmllZEZvbnREZXNj
cmlwdG9yLCBwcmVmaXgsIENHUG9pbnRNYWtlKDI1LCAxOTI1IC0gNTAgKiBpKSk7CisgICAgICAg
ICAgICBDRlJlbGVhc2UocHJlZml4KTsKKyAgICAgICAgICAgIENGUmVsZWFzZShtb2RpZmllZEZv
bnREZXNjcmlwdG9yKTsKKyAgICAgICAgfQorCisgICAgICAgIENGUmVsZWFzZShmZWF0dXJlcyk7
CisgICAgfSBlbHNlIHsKKyAgICAgICAgX19ibG9jayBpbnQgaSA9IDA7CisgICAgICAgIHZvaWQg
KF5oYW5kbGVyKSh1aW50MTZfdCB0eXBlLCBDRlN0cmluZ1JlZiB0eXBlU3RyaW5nLCB1aW50MTZf
dCBzZWxlY3RvciwgQ0ZTdHJpbmdSZWYgc2VsZWN0b3JTdHJpbmcpID0gXih1aW50MTZfdCB0eXBl
LCBDRlN0cmluZ1JlZiB0eXBlU3RyaW5nLCB1aW50MTZfdCBzZWxlY3RvciwgQ0ZTdHJpbmdSZWYg
c2VsZWN0b3JTdHJpbmcpCisgICAgICAgIHsKKyAgICAgICAgICAgIENURm9udERlc2NyaXB0b3JS
ZWYgbW9kaWZpZWRGb250RGVzY3JpcHRvciA9IGNvbnN0cnVjdEZvbnRXaXRoVHJ1ZVR5cGVGZWF0
dXJlKGZvbnREZXNjcmlwdG9yLCB0eXBlLCBzZWxlY3Rvcik7CisgICAgICAgICAgICBDRk11dGFi
bGVTdHJpbmdSZWYgcHJlZml4ID0gQ0ZTdHJpbmdDcmVhdGVNdXRhYmxlKGtDRkFsbG9jYXRvckRl
ZmF1bHQsIDApOworICAgICAgICAgICAgQ0ZTdHJpbmdBcHBlbmQocHJlZml4LCB0eXBlU3RyaW5n
KTsKKyAgICAgICAgICAgIENGU3RyaW5nQXBwZW5kKHByZWZpeCwgQ0ZTVFIoIjogIikpOworICAg
ICAgICAgICAgQ0ZTdHJpbmdBcHBlbmQocHJlZml4LCBzZWxlY3RvclN0cmluZyk7CisgICAgICAg
ICAgICBDRlN0cmluZ0FwcGVuZChwcmVmaXgsIENGU1RSKCI6ICIpKTsKKyAgICAgICAgICAgIHdo
aWxlIChDRlN0cmluZ0dldExlbmd0aChwcmVmaXgpIDwgNjUpCisgICAgICAgICAgICAgICAgQ0ZT
dHJpbmdBcHBlbmQocHJlZml4LCBDRlNUUigiICIpKTsKKyAgICAgICAgICAgIGRyYXdUZXh0KGNv
bnRleHQsIG1vZGlmaWVkRm9udERlc2NyaXB0b3IsIHByZWZpeCwgQ0dQb2ludE1ha2UoMjUsIDE5
NTAgLSA0MCAqIGkpKTsKKyAgICAgICAgICAgIENGUmVsZWFzZShwcmVmaXgpOworICAgICAgICAg
ICAgQ0ZSZWxlYXNlKG1vZGlmaWVkRm9udERlc2NyaXB0b3IpOworICAgICAgICAgICAgKytpOwor
ICAgICAgICB9OworICAgICAgICBoYW5kbGVyKGtMaWdhdHVyZXNUeXBlLCBDRlNUUigia0xpZ2F0
dXJlc1R5cGUiKSwga0NvbW1vbkxpZ2F0dXJlc09uU2VsZWN0b3IsIENGU1RSKCJrQ29tbW9uTGln
YXR1cmVzT25TZWxlY3RvciIpKTsKKyAgICAgICAgaGFuZGxlcihrTGlnYXR1cmVzVHlwZSwgQ0ZT
VFIoImtMaWdhdHVyZXNUeXBlIiksIGtDb250ZXh0dWFsTGlnYXR1cmVzT25TZWxlY3RvciwgQ0ZT
VFIoImtDb250ZXh0dWFsTGlnYXR1cmVzT25TZWxlY3RvciIpKTsKKyAgICAgICAgaGFuZGxlcihr
TGlnYXR1cmVzVHlwZSwgQ0ZTVFIoImtMaWdhdHVyZXNUeXBlIiksIGtDb21tb25MaWdhdHVyZXNP
ZmZTZWxlY3RvciwgQ0ZTVFIoImtDb21tb25MaWdhdHVyZXNPZmZTZWxlY3RvciIpKTsKKyAgICAg
ICAgaGFuZGxlcihrTGlnYXR1cmVzVHlwZSwgQ0ZTVFIoImtMaWdhdHVyZXNUeXBlIiksIGtDb250
ZXh0dWFsTGlnYXR1cmVzT2ZmU2VsZWN0b3IsIENGU1RSKCJrQ29udGV4dHVhbExpZ2F0dXJlc09m
ZlNlbGVjdG9yIikpOworICAgICAgICBoYW5kbGVyKGtMaWdhdHVyZXNUeXBlLCBDRlNUUigia0xp
Z2F0dXJlc1R5cGUiKSwga1JhcmVMaWdhdHVyZXNPblNlbGVjdG9yLCBDRlNUUigia1JhcmVMaWdh
dHVyZXNPblNlbGVjdG9yIikpOworICAgICAgICBoYW5kbGVyKGtMaWdhdHVyZXNUeXBlLCBDRlNU
Uigia0xpZ2F0dXJlc1R5cGUiKSwga1JhcmVMaWdhdHVyZXNPZmZTZWxlY3RvciwgQ0ZTVFIoImtS
YXJlTGlnYXR1cmVzT2ZmU2VsZWN0b3IiKSk7CisgICAgICAgIGhhbmRsZXIoa0xpZ2F0dXJlc1R5
cGUsIENGU1RSKCJrTGlnYXR1cmVzVHlwZSIpLCBrSGlzdG9yaWNhbExpZ2F0dXJlc09uU2VsZWN0
b3IsIENGU1RSKCJrSGlzdG9yaWNhbExpZ2F0dXJlc09uU2VsZWN0b3IiKSk7CisgICAgICAgIGhh
bmRsZXIoa0xpZ2F0dXJlc1R5cGUsIENGU1RSKCJrTGlnYXR1cmVzVHlwZSIpLCBrSGlzdG9yaWNh
bExpZ2F0dXJlc09mZlNlbGVjdG9yLCBDRlNUUigia0hpc3RvcmljYWxMaWdhdHVyZXNPZmZTZWxl
Y3RvciIpKTsKKyAgICAgICAgaGFuZGxlcihrQ29udGV4dHVhbEFsdGVybmF0ZXNUeXBlLCBDRlNU
Uigia0NvbnRleHR1YWxBbHRlcm5hdGVzVHlwZSIpLCBrQ29udGV4dHVhbEFsdGVybmF0ZXNPblNl
bGVjdG9yLCBDRlNUUigia0NvbnRleHR1YWxBbHRlcm5hdGVzT25TZWxlY3RvciIpKTsKKyAgICAg
ICAgaGFuZGxlcihrQ29udGV4dHVhbEFsdGVybmF0ZXNUeXBlLCBDRlNUUigia0NvbnRleHR1YWxB
bHRlcm5hdGVzVHlwZSIpLCBrQ29udGV4dHVhbEFsdGVybmF0ZXNPZmZTZWxlY3RvciwgQ0ZTVFIo
ImtDb250ZXh0dWFsQWx0ZXJuYXRlc09mZlNlbGVjdG9yIikpOworICAgICAgICBoYW5kbGVyKGtW
ZXJ0aWNhbFBvc2l0aW9uVHlwZSwgQ0ZTVFIoImtWZXJ0aWNhbFBvc2l0aW9uVHlwZSIpLCBrSW5m
ZXJpb3JzU2VsZWN0b3IsIENGU1RSKCJrSW5mZXJpb3JzU2VsZWN0b3IiKSk7CisgICAgICAgIGhh
bmRsZXIoa1ZlcnRpY2FsUG9zaXRpb25UeXBlLCBDRlNUUigia1ZlcnRpY2FsUG9zaXRpb25UeXBl
IiksIGtTdXBlcmlvcnNTZWxlY3RvciwgQ0ZTVFIoImtTdXBlcmlvcnNTZWxlY3RvciIpKTsKKyAg
ICAgICAgaGFuZGxlcihrTG93ZXJDYXNlVHlwZSwgQ0ZTVFIoImtMb3dlckNhc2VUeXBlIiksIGtM
b3dlckNhc2VTbWFsbENhcHNTZWxlY3RvciwgQ0ZTVFIoImtMb3dlckNhc2VTbWFsbENhcHNTZWxl
Y3RvciIpKTsKKyAgICAgICAgaGFuZGxlcihrVXBwZXJDYXNlVHlwZSwgQ0ZTVFIoImtVcHBlckNh
c2VUeXBlIiksIGtVcHBlckNhc2VTbWFsbENhcHNTZWxlY3RvciwgQ0ZTVFIoImtVcHBlckNhc2VT
bWFsbENhcHNTZWxlY3RvciIpKTsKKyAgICAgICAgaGFuZGxlcihrTG93ZXJDYXNlVHlwZSwgQ0ZT
VFIoImtMb3dlckNhc2VUeXBlIiksIGtMb3dlckNhc2VQZXRpdGVDYXBzU2VsZWN0b3IsIENGU1RS
KCJrTG93ZXJDYXNlUGV0aXRlQ2Fwc1NlbGVjdG9yIikpOworICAgICAgICBoYW5kbGVyKGtVcHBl
ckNhc2VUeXBlLCBDRlNUUigia1VwcGVyQ2FzZVR5cGUiKSwga1VwcGVyQ2FzZVBldGl0ZUNhcHNT
ZWxlY3RvciwgQ0ZTVFIoImtVcHBlckNhc2VQZXRpdGVDYXBzU2VsZWN0b3IiKSk7CisgICAgICAg
IGhhbmRsZXIoa0xldHRlckNhc2VUeXBlLCBDRlNUUigia0xldHRlckNhc2VUeXBlIiksIDE0LCBD
RlNUUigiMTQiKSk7CisgICAgICAgIGhhbmRsZXIoa1N0eWxlT3B0aW9uc1R5cGUsIENGU1RSKCJr
U3R5bGVPcHRpb25zVHlwZSIpLCBrVGl0bGluZ0NhcHNTZWxlY3RvciwgQ0ZTVFIoImtUaXRsaW5n
Q2Fwc1NlbGVjdG9yIikpOworICAgICAgICBoYW5kbGVyKGtOdW1iZXJDYXNlVHlwZSwgQ0ZTVFIo
ImtOdW1iZXJDYXNlVHlwZSIpLCBrVXBwZXJDYXNlTnVtYmVyc1NlbGVjdG9yLCBDRlNUUigia1Vw
cGVyQ2FzZU51bWJlcnNTZWxlY3RvciIpKTsKKyAgICAgICAgaGFuZGxlcihrTnVtYmVyQ2FzZVR5
cGUsIENGU1RSKCJrTnVtYmVyQ2FzZVR5cGUiKSwga0xvd2VyQ2FzZU51bWJlcnNTZWxlY3Rvciwg
Q0ZTVFIoImtMb3dlckNhc2VOdW1iZXJzU2VsZWN0b3IiKSk7CisgICAgICAgIGhhbmRsZXIoa051
bWJlclNwYWNpbmdUeXBlLCBDRlNUUigia051bWJlclNwYWNpbmdUeXBlIiksIGtQcm9wb3J0aW9u
YWxOdW1iZXJzU2VsZWN0b3IsIENGU1RSKCJrUHJvcG9ydGlvbmFsTnVtYmVyc1NlbGVjdG9yIikp
OworICAgICAgICBoYW5kbGVyKGtOdW1iZXJTcGFjaW5nVHlwZSwgQ0ZTVFIoImtOdW1iZXJTcGFj
aW5nVHlwZSIpLCBrTW9ub3NwYWNlZE51bWJlcnNTZWxlY3RvciwgQ0ZTVFIoImtNb25vc3BhY2Vk
TnVtYmVyc1NlbGVjdG9yIikpOworICAgICAgICBoYW5kbGVyKGtGcmFjdGlvbnNUeXBlLCBDRlNU
Uigia0ZyYWN0aW9uc1R5cGUiKSwga0RpYWdvbmFsRnJhY3Rpb25zU2VsZWN0b3IsIENGU1RSKCJr
RGlhZ29uYWxGcmFjdGlvbnNTZWxlY3RvciIpKTsKKyAgICAgICAgaGFuZGxlcihrRnJhY3Rpb25z
VHlwZSwgQ0ZTVFIoImtGcmFjdGlvbnNUeXBlIiksIGtWZXJ0aWNhbEZyYWN0aW9uc1NlbGVjdG9y
LCBDRlNUUigia1ZlcnRpY2FsRnJhY3Rpb25zU2VsZWN0b3IiKSk7CisgICAgICAgIGhhbmRsZXIo
a1ZlcnRpY2FsUG9zaXRpb25UeXBlLCBDRlNUUigia1ZlcnRpY2FsUG9zaXRpb25UeXBlIiksIGtP
cmRpbmFsc1NlbGVjdG9yLCBDRlNUUigia09yZGluYWxzU2VsZWN0b3IiKSk7CisgICAgICAgIGhh
bmRsZXIoa1R5cG9ncmFwaGljRXh0cmFzVHlwZSwgQ0ZTVFIoImtUeXBvZ3JhcGhpY0V4dHJhc1R5
cGUiKSwga1NsYXNoZWRaZXJvT25TZWxlY3RvciwgQ0ZTVFIoImtTbGFzaGVkWmVyb09uU2VsZWN0
b3IiKSk7CisgICAgICAgIGhhbmRsZXIoa0xpZ2F0dXJlc1R5cGUsIENGU1RSKCJrTGlnYXR1cmVz
VHlwZSIpLCBrSGlzdG9yaWNhbExpZ2F0dXJlc09uU2VsZWN0b3IsIENGU1RSKCJrSGlzdG9yaWNh
bExpZ2F0dXJlc09uU2VsZWN0b3IiKSk7CisgICAgICAgIGhhbmRsZXIoa0NoYXJhY3RlclNoYXBl
VHlwZSwgQ0ZTVFIoImtDaGFyYWN0ZXJTaGFwZVR5cGUiKSwga0pJUzE5NzhDaGFyYWN0ZXJzU2Vs
ZWN0b3IsIENGU1RSKCJrSklTMTk3OENoYXJhY3RlcnNTZWxlY3RvciIpKTsKKyAgICAgICAgaGFu
ZGxlcihrQ2hhcmFjdGVyU2hhcGVUeXBlLCBDRlNUUigia0NoYXJhY3RlclNoYXBlVHlwZSIpLCBr
SklTMTk4M0NoYXJhY3RlcnNTZWxlY3RvciwgQ0ZTVFIoImtKSVMxOTgzQ2hhcmFjdGVyc1NlbGVj
dG9yIikpOworICAgICAgICBoYW5kbGVyKGtDaGFyYWN0ZXJTaGFwZVR5cGUsIENGU1RSKCJrQ2hh
cmFjdGVyU2hhcGVUeXBlIiksIGtKSVMxOTkwQ2hhcmFjdGVyc1NlbGVjdG9yLCBDRlNUUigia0pJ
UzE5OTBDaGFyYWN0ZXJzU2VsZWN0b3IiKSk7CisgICAgICAgIGhhbmRsZXIoa0NoYXJhY3RlclNo
YXBlVHlwZSwgQ0ZTVFIoImtDaGFyYWN0ZXJTaGFwZVR5cGUiKSwga0pJUzIwMDRDaGFyYWN0ZXJz
U2VsZWN0b3IsIENGU1RSKCJrSklTMjAwNENoYXJhY3RlcnNTZWxlY3RvciIpKTsKKyAgICAgICAg
aGFuZGxlcihrQ2hhcmFjdGVyU2hhcGVUeXBlLCBDRlNUUigia0NoYXJhY3RlclNoYXBlVHlwZSIp
LCBrU2ltcGxpZmllZENoYXJhY3RlcnNTZWxlY3RvciwgQ0ZTVFIoImtTaW1wbGlmaWVkQ2hhcmFj
dGVyc1NlbGVjdG9yIikpOworICAgICAgICBoYW5kbGVyKGtDaGFyYWN0ZXJTaGFwZVR5cGUsIENG
U1RSKCJrQ2hhcmFjdGVyU2hhcGVUeXBlIiksIGtUcmFkaXRpb25hbENoYXJhY3RlcnNTZWxlY3Rv
ciwgQ0ZTVFIoImtUcmFkaXRpb25hbENoYXJhY3RlcnNTZWxlY3RvciIpKTsKKyAgICAgICAgaGFu
ZGxlcihrVGV4dFNwYWNpbmdUeXBlLCBDRlNUUigia1RleHRTcGFjaW5nVHlwZSIpLCBrTW9ub3Nw
YWNlZFRleHRTZWxlY3RvciwgQ0ZTVFIoImtNb25vc3BhY2VkVGV4dFNlbGVjdG9yIikpOworICAg
ICAgICBoYW5kbGVyKGtUZXh0U3BhY2luZ1R5cGUsIENGU1RSKCJrVGV4dFNwYWNpbmdUeXBlIiks
IGtQcm9wb3J0aW9uYWxUZXh0U2VsZWN0b3IsIENGU1RSKCJrUHJvcG9ydGlvbmFsVGV4dFNlbGVj
dG9yIikpOworICAgICAgICBoYW5kbGVyKGtSdWJ5S2FuYVR5cGUsIENGU1RSKCJrUnVieUthbmFU
eXBlIiksIGtSdWJ5S2FuYU9uU2VsZWN0b3IsIENGU1RSKCJrUnVieUthbmFPblNlbGVjdG9yIikp
OwogICAgIH0KIAotICAgIENGUmVsZWFzZShmZWF0dXJlcyk7CiAgICAgQ0ZSZWxlYXNlKGZvbnRE
ZXNjcmlwdG9yKTsKICAgICBDR0ltYWdlUmVmIGltYWdlID0gQ0dCaXRtYXBDb250ZXh0Q3JlYXRl
SW1hZ2UoY29udGV4dCk7CiAgICAgQ0dDb250ZXh0UmVsZWFzZShjb250ZXh0KTsKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA2
YjE3NDU1YTI2M2QyNTJiYjk1ZjAxMjIxZThlNTc3MzI0NTMwMjhkLi5kZDJkZDRlZjFjNDQ0NjUw
MmY3MDFlZjgxZGZiZTAxOGMyZTA1N2U5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTUtMTAt
MDcgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KKworICAgICAgICBU
ZXN0IGZvbnQtdmFyaWFudC0qIGFuZCBmb250LWZlYXR1cmUtc2V0dGluZ3Mgd2l0aCBUcnVlVHlw
ZSBmb250cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTQ5Nzc2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBjc3MzL2ZvbnQtZmVhdHVyZS1zZXR0aW5ncy1yZW5kZXJpbmctMi1leHBlY3RlZC5odG1sOgor
ICAgICAgICAqIGNzczMvZm9udC1mZWF0dXJlLXNldHRpbmdzLXJlbmRlcmluZy0yLmh0bWw6Cisg
ICAgICAgICogY3NzMy9yZXNvdXJjZXMvRm9udFdpdGhGZWF0dXJlcy50dGY6IEFkZGVkLgorCiAy
MDE1LTEwLTA2ICBKaWV3ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CiAKICAgICAgICAg
Rml4IGNyYXNoIGluIEFwcGx5U3R5bGVDb21tYW5kOjphcHBseVJlbGF0aXZlRm9udFN0eWxlQ2hh
bmdlKCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2NzczMvZm9udC1mZWF0dXJlLXNldHRpbmdz
LXJlbmRlcmluZy0yLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9jc3MzL2ZvbnQtZmVhdHVy
ZS1zZXR0aW5ncy1yZW5kZXJpbmctMi1leHBlY3RlZC5odG1sCmluZGV4IGEwMDIyNjA2NWM0NDM4
M2E1YzEyNjdkZjhhY2Q1Y2ExMGQ0ODFmNDguLmE4NTE1YTJiMzBhMTRkZDBjOTdhM2FmZTYzMDNj
NDU3ODE2ZDJhODggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2NzczMvZm9udC1mZWF0dXJlLXNl
dHRpbmdzLXJlbmRlcmluZy0yLWV4cGVjdGVkLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvY3NzMy9m
b250LWZlYXR1cmUtc2V0dGluZ3MtcmVuZGVyaW5nLTItZXhwZWN0ZWQuaHRtbApAQCAtNiw2ICs2
LDEwIEBACiAgICAgZm9udC1mYW1pbHk6ICJGb250RmVhdHVyZXNUZXN0IjsKICAgICBzcmM6IHVy
bCgicmVzb3VyY2VzL0ZvbnRXaXRoRmVhdHVyZXMub3RmIikgZm9ybWF0KCJvcGVudHlwZSIpOwog
fQorQGZvbnQtZmFjZSB7CisgICAgZm9udC1mYW1pbHk6ICJGb250RmVhdHVyZXNUZXN0VFRGIjsK
KyAgICBzcmM6IHVybCgicmVzb3VyY2VzL0ZvbnRXaXRoRmVhdHVyZXMudHRmIikgZm9ybWF0KCJ0
cnVldHlwZSIpOworfQogPC9zdHlsZT4KIDwvaGVhZD4KIDxib2R5PgpAQCAtNDMsNSArNDcsMzkg
QEAgbWFya3MgYW5kIFggYmVsb3cuCiA8c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IEZvbnRGZWF0
dXJlc1Rlc3Q7Ij5CQTwvc3Bhbj4KIDxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogRm9udEZlYXR1
cmVzVGVzdDsiPkJBPC9zcGFuPgogPC9kaXY+Cis8ZGl2PjxzcGFuIHN0eWxlPSJmb250LWZhbWls
eTogRm9udEZlYXR1cmVzVGVzdFRURjsiPkJBPC9zcGFuPgorPHNwYW4gc3R5bGU9ImZvbnQtZmFt
aWx5OiBGb250RmVhdHVyZXNUZXN0VFRGOyI+QkE8L3NwYW4+Cis8c3BhbiBzdHlsZT0iZm9udC1m
YW1pbHk6IEZvbnRGZWF0dXJlc1Rlc3RUVEY7Ij5CQTwvc3Bhbj4KKzxzcGFuIHN0eWxlPSJmb250
LWZhbWlseTogRm9udEZlYXR1cmVzVGVzdFRURjsiPkJBPC9zcGFuPgorPHNwYW4gc3R5bGU9ImZv
bnQtZmFtaWx5OiBGb250RmVhdHVyZXNUZXN0VFRGOyI+QkE8L3NwYW4+Cis8c3BhbiBzdHlsZT0i
Zm9udC1mYW1pbHk6IEZvbnRGZWF0dXJlc1Rlc3RUVEY7Ij5CQTwvc3Bhbj4KKzxzcGFuIHN0eWxl
PSJmb250LWZhbWlseTogRm9udEZlYXR1cmVzVGVzdFRURjsiPkJBPC9zcGFuPgorPHNwYW4gc3R5
bGU9ImZvbnQtZmFtaWx5OiBGb250RmVhdHVyZXNUZXN0VFRGOyI+QkE8L3NwYW4+Cis8c3BhbiBz
dHlsZT0iZm9udC1mYW1pbHk6IEZvbnRGZWF0dXJlc1Rlc3RUVEY7Ij5CQTwvc3Bhbj4KKzxzcGFu
IHN0eWxlPSJmb250LWZhbWlseTogRm9udEZlYXR1cmVzVGVzdFRURjsiPkJBPC9zcGFuPgorPHNw
YW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBGb250RmVhdHVyZXNUZXN0VFRGOyI+QkE8L3NwYW4+Cis8
c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IEZvbnRGZWF0dXJlc1Rlc3RUVEY7Ij5CQTwvc3Bhbj4K
KzxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogRm9udEZlYXR1cmVzVGVzdFRURjsiPkJBPC9zcGFu
PgorPHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBGb250RmVhdHVyZXNUZXN0VFRGOyI+QkE8L3Nw
YW4+Cis8c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IEZvbnRGZWF0dXJlc1Rlc3RUVEY7Ij5CQTwv
c3Bhbj4KKzxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogRm9udEZlYXR1cmVzVGVzdFRURjsiPkJB
PC9zcGFuPgorPHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBGb250RmVhdHVyZXNUZXN0VFRGOyI+
QkE8L3NwYW4+Cis8c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IEZvbnRGZWF0dXJlc1Rlc3RUVEY7
Ij5CQTwvc3Bhbj4KKzxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogRm9udEZlYXR1cmVzVGVzdFRU
RjsiPkJBPC9zcGFuPgorPHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBGb250RmVhdHVyZXNUZXN0
VFRGOyI+QkE8L3NwYW4+Cis8c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IEZvbnRGZWF0dXJlc1Rl
c3RUVEY7Ij5CQTwvc3Bhbj4KKzxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogRm9udEZlYXR1cmVz
VGVzdFRURjsiPkJBPC9zcGFuPgorPHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBGb250RmVhdHVy
ZXNUZXN0VFRGOyI+QkE8L3NwYW4+Cis8c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IEZvbnRGZWF0
dXJlc1Rlc3RUVEY7Ij5CQTwvc3Bhbj4KKzxzcGFuIHN0eWxlPSJmb250LWZhbWlseTogRm9udEZl
YXR1cmVzVGVzdFRURjsiPkJBPC9zcGFuPgorPHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5OiBGb250
RmVhdHVyZXNUZXN0VFRGOyI+QkE8L3NwYW4+Cis8c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6IEZv
bnRGZWF0dXJlc1Rlc3RUVEY7Ij5CQTwvc3Bhbj4KKzxzcGFuIHN0eWxlPSJmb250LWZhbWlseTog
Rm9udEZlYXR1cmVzVGVzdFRURjsiPkJBPC9zcGFuPgorPHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5
OiBGb250RmVhdHVyZXNUZXN0VFRGOyI+QkE8L3NwYW4+Cis8c3BhbiBzdHlsZT0iZm9udC1mYW1p
bHk6IEZvbnRGZWF0dXJlc1Rlc3RUVEY7Ij5CQTwvc3Bhbj4KKzxzcGFuIHN0eWxlPSJmb250LWZh
bWlseTogRm9udEZlYXR1cmVzVGVzdFRURjsiPkJBPC9zcGFuPgorPHNwYW4gc3R5bGU9ImZvbnQt
ZmFtaWx5OiBGb250RmVhdHVyZXNUZXN0VFRGOyI+QkE8L3NwYW4+Cis8c3BhbiBzdHlsZT0iZm9u
dC1mYW1pbHk6IEZvbnRGZWF0dXJlc1Rlc3RUVEY7Ij5CQTwvc3Bhbj4KKzwvZGl2PgogPC9ib2R5
PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvY3NzMy9mb250LWZlYXR1cmUtc2V0
dGluZ3MtcmVuZGVyaW5nLTIuaHRtbCBiL0xheW91dFRlc3RzL2NzczMvZm9udC1mZWF0dXJlLXNl
dHRpbmdzLXJlbmRlcmluZy0yLmh0bWwKaW5kZXggOWVmZjE0Y2NiMGU5NmQwNzhlZTZkYWYzMWQ2
YWI4Y2JkYWFlZjVlYi4uZWMxZTY3OWZmMTBhZTU1MWQ3N2Y3NjBjOGRlNGE1Mzg3YTY0YWNhZSAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvY3NzMy9mb250LWZlYXR1cmUtc2V0dGluZ3MtcmVuZGVy
aW5nLTIuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9jc3MzL2ZvbnQtZmVhdHVyZS1zZXR0aW5ncy1y
ZW5kZXJpbmctMi5odG1sCkBAIC02LDU2ICs2LDk3IEBACiAgICAgZm9udC1mYW1pbHk6ICJGb250
RmVhdHVyZXNUZXN0IjsKICAgICBzcmM6IHVybCgicmVzb3VyY2VzL0ZvbnRXaXRoRmVhdHVyZXMu
b3RmIikgZm9ybWF0KCJvcGVudHlwZSIpOwogfQorQGZvbnQtZmFjZSB7CisgICAgZm9udC1mYW1p
bHk6ICJGb250RmVhdHVyZXNUZXN0VFRGIjsKKyAgICBzcmM6IHVybCgicmVzb3VyY2VzL0ZvbnRX
aXRoRmVhdHVyZXMudHRmIikgZm9ybWF0KCJ0cnVldHlwZSIpOworfQogPC9zdHlsZT4KIDwvaGVh
ZD4KIDxib2R5PgogVGhpcyB0ZXN0cyB0aGF0IGZvbnQgZmVhdHVyZXMgYXJlIGFibGUgdG8gYmUg
dHVybmVkIG9uIGFuZCBvZmYgYXMgZGVzaXJlZC4gSXQgdXNlcyBhIHNwZWNpYWwgZm9udAogZGVz
aWduZWQgc3BlY2lmaWNhbGx5IGZvciB0aGlzIHB1cnBvc2UuIFRoZSB0ZXN0IHBhc3NlcyBpZiB5
b3Ugc2VlIGEgc2VxdWVuY2Ugb2YgYWx0ZXJuYXRpbmcgY2hlY2sKIG1hcmtzIGFuZCBYIGJlbG93
LgotPGRpdiBpZD0iaW5zZXJ0aW9ucG9pbnQiPjwvZGl2PgorPGRpdiBpZD0iaW5zZXJ0aW9uUG9p
bnQiPjwvZGl2PgorPGRpdiBpZD0iaW5zZXJ0aW9uUG9pbnQyIj48L2Rpdj4KIDxzY3JpcHQ+Ci12
YXIgaW5zZXJ0aW9ucG9pbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaW5zZXJ0aW9ucG9p
bnQiKTsKLWZ1bmN0aW9uIGFkZEVsZW1lbnQoZmVhdHVyZSwgYykgewordmFyIGluc2VydGlvblBv
aW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImluc2VydGlvblBvaW50Iik7Cit2YXIgaW5z
ZXJ0aW9uUG9pbnQyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImluc2VydGlvblBvaW50MiIp
OworZnVuY3Rpb24gYWRkRWxlbWVudChwbGFjZVRvSW5zZXJ0LCBmYW1pbHlOYW1lLCBmZWF0dXJl
LCBjKSB7CiAgICAgWyIwIiwgIjEiXS5tYXAoZnVuY3Rpb24oc3RhdGUpIHsKICAgICAgICAgdmFy
IGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7CiAgICAgICAgIGVsZW1l
bnQudGV4dENvbnRlbnQgPSBjOwotICAgICAgICBlbGVtZW50LnN0eWxlLmZvbnRGYW1pbHkgPSAi
Rm9udEZlYXR1cmVzVGVzdCI7CisgICAgICAgIGVsZW1lbnQuc3R5bGUuZm9udEZhbWlseSA9IGZh
bWlseU5hbWU7CiAgICAgICAgIGVsZW1lbnQuc3R5bGUuZm9udEZlYXR1cmVTZXR0aW5ncyA9ICci
JyArIGZlYXR1cmUgKyAnIiAnICsgc3RhdGU7Ci0gICAgICAgIGluc2VydGlvbnBvaW50LmFwcGVu
ZENoaWxkKGVsZW1lbnQpOworICAgICAgICBwbGFjZVRvSW5zZXJ0LmFwcGVuZENoaWxkKGVsZW1l
bnQpOwogICAgIH0pOwotICAgIGluc2VydGlvbnBvaW50LmFwcGVuZENoaWxkKGRvY3VtZW50LmNy
ZWF0ZVRleHROb2RlKCIgIikpOworICAgIHBsYWNlVG9JbnNlcnQuYXBwZW5kQ2hpbGQoZG9jdW1l
bnQuY3JlYXRlVGV4dE5vZGUoIiAiKSk7CiB9Ci1hZGRFbGVtZW50KCJsaWdhIiwgIkMiKTsKLWFk
ZEVsZW1lbnQoImNsaWciLCAiRCIpOwotYWRkRWxlbWVudCgiZGxpZyIsICJFIik7Ci1hZGRFbGVt
ZW50KCJobGlnIiwgIkYiKTsKLWFkZEVsZW1lbnQoImNhbHQiLCAiRyIpOwotYWRkRWxlbWVudCgi
c3VicyIsICJIIik7Ci1hZGRFbGVtZW50KCJzdXBzIiwgIkkiKTsKLWFkZEVsZW1lbnQoInNtY3Ai
LCAiSiIpOwotYWRkRWxlbWVudCgiYzJzYyIsICJLIik7Ci1hZGRFbGVtZW50KCJwY2FwIiwgIkwi
KTsKLWFkZEVsZW1lbnQoImMycGMiLCAiTSIpOwotYWRkRWxlbWVudCgidW5pYyIsICJOIik7Ci1h
ZGRFbGVtZW50KCJ0aXRsIiwgIk8iKTsKLWFkZEVsZW1lbnQoImxudW0iLCAiUCIpOwotYWRkRWxl
bWVudCgib251bSIsICJRIik7Ci1hZGRFbGVtZW50KCJwbnVtIiwgIlIiKTsKLWFkZEVsZW1lbnQo
InRudW0iLCAiUyIpOwotYWRkRWxlbWVudCgiZnJhYyIsICJUIik7Ci0vL2FkZEVsZW1lbnQoImFm
cmMiLCAiVSIpOwotYWRkRWxlbWVudCgib3JkbiIsICJWIik7Ci1hZGRFbGVtZW50KCJ6ZXJvIiwg
IlciKTsKLWFkZEVsZW1lbnQoImhpc3QiLCAiWCIpOwotYWRkRWxlbWVudCgianA3OCIsICJZIik7
Ci1hZGRFbGVtZW50KCJqcDgzIiwgIloiKTsKLWFkZEVsZW1lbnQoImpwOTAiLCAiYSIpOwotYWRk
RWxlbWVudCgianAwNCIsICJiIik7Ci1hZGRFbGVtZW50KCJzbXBsIiwgImMiKTsKLWFkZEVsZW1l
bnQoInRyYWQiLCAiZCIpOwotYWRkRWxlbWVudCgiZndpZCIsICJlIik7Ci1hZGRFbGVtZW50KCJw
d2lkIiwgImYiKTsKLWFkZEVsZW1lbnQoInJ1YnkiLCAiZyIpOworCithZGRFbGVtZW50KGluc2Vy
dGlvblBvaW50LCAiRm9udEZlYXR1cmVzVGVzdCIsICJsaWdhIiwgIkMiKTsKK2FkZEVsZW1lbnQo
aW5zZXJ0aW9uUG9pbnQsICJGb250RmVhdHVyZXNUZXN0IiwgImNsaWciLCAiRCIpOworYWRkRWxl
bWVudChpbnNlcnRpb25Qb2ludCwgIkZvbnRGZWF0dXJlc1Rlc3QiLCAiZGxpZyIsICJFIik7Cith
ZGRFbGVtZW50KGluc2VydGlvblBvaW50LCAiRm9udEZlYXR1cmVzVGVzdCIsICJobGlnIiwgIkYi
KTsKK2FkZEVsZW1lbnQoaW5zZXJ0aW9uUG9pbnQsICJGb250RmVhdHVyZXNUZXN0IiwgImNhbHQi
LCAiRyIpOworYWRkRWxlbWVudChpbnNlcnRpb25Qb2ludCwgIkZvbnRGZWF0dXJlc1Rlc3QiLCAi
c3VicyIsICJIIik7CithZGRFbGVtZW50KGluc2VydGlvblBvaW50LCAiRm9udEZlYXR1cmVzVGVz
dCIsICJzdXBzIiwgIkkiKTsKK2FkZEVsZW1lbnQoaW5zZXJ0aW9uUG9pbnQsICJGb250RmVhdHVy
ZXNUZXN0IiwgInNtY3AiLCAiSiIpOworYWRkRWxlbWVudChpbnNlcnRpb25Qb2ludCwgIkZvbnRG
ZWF0dXJlc1Rlc3QiLCAiYzJzYyIsICJLIik7CithZGRFbGVtZW50KGluc2VydGlvblBvaW50LCAi
Rm9udEZlYXR1cmVzVGVzdCIsICJwY2FwIiwgIkwiKTsKK2FkZEVsZW1lbnQoaW5zZXJ0aW9uUG9p
bnQsICJGb250RmVhdHVyZXNUZXN0IiwgImMycGMiLCAiTSIpOworYWRkRWxlbWVudChpbnNlcnRp
b25Qb2ludCwgIkZvbnRGZWF0dXJlc1Rlc3QiLCAidW5pYyIsICJOIik7CithZGRFbGVtZW50KGlu
c2VydGlvblBvaW50LCAiRm9udEZlYXR1cmVzVGVzdCIsICJ0aXRsIiwgIk8iKTsKK2FkZEVsZW1l
bnQoaW5zZXJ0aW9uUG9pbnQsICJGb250RmVhdHVyZXNUZXN0IiwgImxudW0iLCAiUCIpOworYWRk
RWxlbWVudChpbnNlcnRpb25Qb2ludCwgIkZvbnRGZWF0dXJlc1Rlc3QiLCAib251bSIsICJRIik7
CithZGRFbGVtZW50KGluc2VydGlvblBvaW50LCAiRm9udEZlYXR1cmVzVGVzdCIsICJwbnVtIiwg
IlIiKTsKK2FkZEVsZW1lbnQoaW5zZXJ0aW9uUG9pbnQsICJGb250RmVhdHVyZXNUZXN0IiwgInRu
dW0iLCAiUyIpOworYWRkRWxlbWVudChpbnNlcnRpb25Qb2ludCwgIkZvbnRGZWF0dXJlc1Rlc3Qi
LCAiZnJhYyIsICJUIik7CisvL2FkZEVsZW1lbnQoaW5zZXJ0aW9uUG9pbnQsICJGb250RmVhdHVy
ZXNUZXN0IiwgImFmcmMiLCAiVSIpOworYWRkRWxlbWVudChpbnNlcnRpb25Qb2ludCwgIkZvbnRG
ZWF0dXJlc1Rlc3QiLCAib3JkbiIsICJWIik7CithZGRFbGVtZW50KGluc2VydGlvblBvaW50LCAi
Rm9udEZlYXR1cmVzVGVzdCIsICJ6ZXJvIiwgIlciKTsKK2FkZEVsZW1lbnQoaW5zZXJ0aW9uUG9p
bnQsICJGb250RmVhdHVyZXNUZXN0IiwgImhpc3QiLCAiWCIpOworYWRkRWxlbWVudChpbnNlcnRp
b25Qb2ludCwgIkZvbnRGZWF0dXJlc1Rlc3QiLCAianA3OCIsICJZIik7CithZGRFbGVtZW50KGlu
c2VydGlvblBvaW50LCAiRm9udEZlYXR1cmVzVGVzdCIsICJqcDgzIiwgIloiKTsKK2FkZEVsZW1l
bnQoaW5zZXJ0aW9uUG9pbnQsICJGb250RmVhdHVyZXNUZXN0IiwgImpwOTAiLCAiYSIpOworYWRk
RWxlbWVudChpbnNlcnRpb25Qb2ludCwgIkZvbnRGZWF0dXJlc1Rlc3QiLCAianAwNCIsICJiIik7
CithZGRFbGVtZW50KGluc2VydGlvblBvaW50LCAiRm9udEZlYXR1cmVzVGVzdCIsICJzbXBsIiwg
ImMiKTsKK2FkZEVsZW1lbnQoaW5zZXJ0aW9uUG9pbnQsICJGb250RmVhdHVyZXNUZXN0IiwgInRy
YWQiLCAiZCIpOworYWRkRWxlbWVudChpbnNlcnRpb25Qb2ludCwgIkZvbnRGZWF0dXJlc1Rlc3Qi
LCAiZndpZCIsICJlIik7CithZGRFbGVtZW50KGluc2VydGlvblBvaW50LCAiRm9udEZlYXR1cmVz
VGVzdCIsICJwd2lkIiwgImYiKTsKK2FkZEVsZW1lbnQoaW5zZXJ0aW9uUG9pbnQsICJGb250RmVh
dHVyZXNUZXN0IiwgInJ1YnkiLCAiZyIpOworCithZGRFbGVtZW50KGluc2VydGlvblBvaW50Miwg
IkZvbnRGZWF0dXJlc1Rlc3RUVEYiLCAibGlnYSIsICJDIik7CithZGRFbGVtZW50KGluc2VydGlv
blBvaW50MiwgIkZvbnRGZWF0dXJlc1Rlc3RUVEYiLCAibGlnYSIsICJEIik7CithZGRFbGVtZW50
KGluc2VydGlvblBvaW50MiwgIkZvbnRGZWF0dXJlc1Rlc3RUVEYiLCAiY2xpZyIsICJDIik7Cith
ZGRFbGVtZW50KGluc2VydGlvblBvaW50MiwgIkZvbnRGZWF0dXJlc1Rlc3RUVEYiLCAiY2xpZyIs
ICJEIik7CithZGRFbGVtZW50KGluc2VydGlvblBvaW50MiwgIkZvbnRGZWF0dXJlc1Rlc3RUVEYi
LCAiZGxpZyIsICJHIik7CithZGRFbGVtZW50KGluc2VydGlvblBvaW50MiwgIkZvbnRGZWF0dXJl
c1Rlc3RUVEYiLCAiaGxpZyIsICJJIik7CithZGRFbGVtZW50KGluc2VydGlvblBvaW50MiwgIkZv
bnRGZWF0dXJlc1Rlc3RUVEYiLCAiY2FsdCIsICJMIik7CithZGRFbGVtZW50KGluc2VydGlvblBv
aW50MiwgIkZvbnRGZWF0dXJlc1Rlc3RUVEYiLCAic3VicyIsICJPIik7CithZGRFbGVtZW50KGlu
c2VydGlvblBvaW50MiwgIkZvbnRGZWF0dXJlc1Rlc3RUVEYiLCAic3VwcyIsICJQIik7CithZGRF
bGVtZW50KGluc2VydGlvblBvaW50MiwgIkZvbnRGZWF0dXJlc1Rlc3RUVEYiLCAic21jcCIsICJT
Iik7CithZGRFbGVtZW50KGluc2VydGlvblBvaW50MiwgIkZvbnRGZWF0dXJlc1Rlc3RUVEYiLCAi
YzJzYyIsICJWIik7CithZGRFbGVtZW50KGluc2VydGlvblBvaW50MiwgIkZvbnRGZWF0dXJlc1Rl
c3RUVEYiLCAicGNhcCIsICJUIik7CithZGRFbGVtZW50KGluc2VydGlvblBvaW50MiwgIkZvbnRG
ZWF0dXJlc1Rlc3RUVEYiLCAiYzJwYyIsICJXIik7CithZGRFbGVtZW50KGluc2VydGlvblBvaW50
MiwgIkZvbnRGZWF0dXJlc1Rlc3RUVEYiLCAidW5pYyIsICJZIik7CithZGRFbGVtZW50KGluc2Vy
dGlvblBvaW50MiwgIkZvbnRGZWF0dXJlc1Rlc3RUVEYiLCAidGl0bCIsICJhIik7CithZGRFbGVt
ZW50KGluc2VydGlvblBvaW50MiwgIkZvbnRGZWF0dXJlc1Rlc3RUVEYiLCAibG51bSIsICJjIik7
CithZGRFbGVtZW50KGluc2VydGlvblBvaW50MiwgIkZvbnRGZWF0dXJlc1Rlc3RUVEYiLCAib251
bSIsICJkIik7CithZGRFbGVtZW50KGluc2VydGlvblBvaW50MiwgIkZvbnRGZWF0dXJlc1Rlc3RU
VEYiLCAicG51bSIsICJmIik7CithZGRFbGVtZW50KGluc2VydGlvblBvaW50MiwgIkZvbnRGZWF0
dXJlc1Rlc3RUVEYiLCAidG51bSIsICJnIik7CithZGRFbGVtZW50KGluc2VydGlvblBvaW50Miwg
IkZvbnRGZWF0dXJlc1Rlc3RUVEYiLCAiZnJhYyIsICJpIik7CithZGRFbGVtZW50KGluc2VydGlv
blBvaW50MiwgIkZvbnRGZWF0dXJlc1Rlc3RUVEYiLCAiYWZyYyIsICJqIik7CithZGRFbGVtZW50
KGluc2VydGlvblBvaW50MiwgIkZvbnRGZWF0dXJlc1Rlc3RUVEYiLCAib3JkbiIsICJRIik7Cith
ZGRFbGVtZW50KGluc2VydGlvblBvaW50MiwgIkZvbnRGZWF0dXJlc1Rlc3RUVEYiLCAiemVybyIs
ICJrIik7CithZGRFbGVtZW50KGluc2VydGlvblBvaW50MiwgIkZvbnRGZWF0dXJlc1Rlc3RUVEYi
LCAiaGlzdCIsICJLIik7CithZGRFbGVtZW50KGluc2VydGlvblBvaW50MiwgIkZvbnRGZWF0dXJl
c1Rlc3RUVEYiLCAianA3OCIsICJtIik7CithZGRFbGVtZW50KGluc2VydGlvblBvaW50MiwgIkZv
bnRGZWF0dXJlc1Rlc3RUVEYiLCAianA4MyIsICJuIik7CithZGRFbGVtZW50KGluc2VydGlvblBv
aW50MiwgIkZvbnRGZWF0dXJlc1Rlc3RUVEYiLCAianA5MCIsICJvIik7CithZGRFbGVtZW50KGlu
c2VydGlvblBvaW50MiwgIkZvbnRGZWF0dXJlc1Rlc3RUVEYiLCAianAwNCIsICJwIik7CithZGRF
bGVtZW50KGluc2VydGlvblBvaW50MiwgIkZvbnRGZWF0dXJlc1Rlc3RUVEYiLCAic21wbCIsICJx
Iik7CithZGRFbGVtZW50KGluc2VydGlvblBvaW50MiwgIkZvbnRGZWF0dXJlc1Rlc3RUVEYiLCAi
dHJhZCIsICJyIik7CithZGRFbGVtZW50KGluc2VydGlvblBvaW50MiwgIkZvbnRGZWF0dXJlc1Rl
c3RUVEYiLCAiZndpZCIsICJ0Iik7CithZGRFbGVtZW50KGluc2VydGlvblBvaW50MiwgIkZvbnRG
ZWF0dXJlc1Rlc3RUVEYiLCAicHdpZCIsICJ1Iik7CithZGRFbGVtZW50KGluc2VydGlvblBvaW50
MiwgIkZvbnRGZWF0dXJlc1Rlc3RUVEYiLCAicnVieSIsICJ2Iik7CiA8L3NjcmlwdD4KIDwvYm9k
eT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2NzczMvcmVzb3VyY2VzL0ZvbnRX
aXRoRmVhdHVyZXMudHRmIGIvTGF5b3V0VGVzdHMvY3NzMy9yZXNvdXJjZXMvRm9udFdpdGhGZWF0
dXJlcy50dGYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZTY0ZGExY2ZlMWM1YjYyMzI5NDk0Mzc3ZDQxODc1ZGIwZWNk
MTg2OQpHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgMTIwODgKemNtZUhOWWl3TGM3NS0tNTU1SVRV
QDdQWGFKOG9XZkhaU0t2bTg1QnZsQkFBZW16R2UwSGh6fEA/WnRMelRKPVlmCnpQKGJgWjdENTZj
VEtjYURneTJWJjl8KXcxTzJ8bTRMTHg8X0tUdVQ9NSl3aVA2KG1zYkB9MFNKQHkwdCZAM3tPegp6
ZCMkdGdvNE16bElka1RteCEzMzNtOEZ+MHNLWk1MPElMRmphUT8hM3BTJXY+bSF6cjVgOWNZQWhr
Z2pDNXc8QCYKekdoSkFUeklMXzVfUDBzSisyWnB2WWVSM3AzNHt8c1EqTGckRmc0d0J7K35kbWtO
bjV4KnBabVVha2lna3lNSnplCno8PD8hS1o/cFgoK2pvbkxsTGVebnA4JkV+Km5WZmVhSTF0SE05
MjtDcipEMzc9fm0odzlwfjctME13bVhEOWxmUAp6PWMlPzxWQ1I+Q2BtZEgybXNlO3ZrS3VPVk08
QGRJMGl4MzVjMSZENl9tb0pLJU1uZnRHbFooI2JUMk1GQStTJWgKemhZPkU5aURYMmZadkhCcyYt
MHdwP0s9SmZWIUlxNihwbDBxbEpGSHNGT2EmWmFGRkwxJnglfnZAUGdLUjdLTClUCnp7QkhTRyV9
b1k8WlY8cGpBPDVzQDJeOUxaP3N0ZSY5OWhoSj88Sl51M34wT2xPNURzNSNLd0VYODZ3KUU2MnUr
SQp6WHh2MkhqaHloUGNIJi1JQmU8VjxIX3tyOTVicl5RU2ZOZ25fOUZ7PU00ZSYoRmpfVXdHc01U
fjNFYE98b2tCPjMKeig0eSFvNit1UXQ1bTdOalJVQkVCS3UjcmpLMWpZYXIle0pWKWo8QTY7d0pM
JVc0bmJvJEckZT1FTzlHd0o4PnIoCnpSMlI9WHNJUTBUSzM+fk5KLWRrZWkzZi1XaUhGR2w1Wmlt
bmNZeTU/d2h2S3ZwNiRhKHQwVE8ybClUNHlaSXFhPwp6ciVzYVJHLXQ0ZXdReWchUHlESW1VPFgx
XjFPTlVtKjM2ayNHfjFvZlB2fGdATyo3ezRGU1V5TmBvcnNZOEctcTcKek9zJHNSVDdRXjZRXitH
OXo3eEt+RWJ8NGxkWmorbEF8PWdRU30mRX5RbWdBRjxrZjB1dSk1RlZ0Kk5XfHRgO2E4CnpuTnJJ
TmxNbWpod3hpVXhQdUBSalN5OVVoZEgkJDlSOCY0eSl2fV9ONn03Q2B5ZS10U3FMdmw0dGtAemVT
VjNXQgp6TCtEeVFhYGBpanJ+ZSplUztLWmpiUXdsIUIzZVRLTitDaGxsR3YmN3tlbmw/d2BNNU1e
Wnh+ekRlbUUhcjR6aEgKemBVbDxjREN6NUAtP09CV0N3K25SRTApb0VOZWlUKChuRzl8TF9TNk85
KkglPz1tcFhATlBsRmhqNVY5czdmSFZjCno7PTQkbkJmU0E2OGNDbGZ7ZVd+Mk5NMG07aX1XV1RI
QT95dD17Rz17XmBaMCU9fXAhVlRTeGBjazRVV04panZVYwp6bmU9QyU7U31qQnF+OExLdG04RjRO
QlgoY0h1YjY9V3FuUWBRYlZnYVhyMVh7WkElfkxPXj4zU0BHMjNMdiVjIzYKemJvMGJ6WFA7TEk2
aWlxQW0jMHooWkZiTmhidyUlfSlTK1dEdXBMcFdqKk9FWEZ7PShlPWZITnZ0dmFOfTh7RFN9Cnp0
QiRPYmotKnZiJlBoa2dzPjk2PVIhJXZsOTI7eGZ1aUxAPlFEQGE1ZFZ9a3oqRSZSSSE7VGF0b3Br
OGh2Yk1jYQp6aGctZ3xkYU8wdlotPzdsbnlmbjlAfT00MGp7ISUydT0tcyFtak8/MjtDI3RnYi00
TUltM0xXMygjRT41eC1OWnoKej9lS08/bk5Gbit3ez5aPyV3XkRWS1coJGpDRzBxdGM4ZVdoejhQ
YHhNfkI2WmpINFokN0NTUURKdFhrRGJYbn1rCnpJb2hHJF9zRyYjdGdXfSshUSozeFdpR090eTc7
dW1HTUFYK1R6Vn5iYz14VH5iTHEze2FHVDNjJVVzZnFiSj1DRgp6QmtoPGt5UkFDaEB8SkpwXmgj
RjdNfXVSV250aExZSHVqSUtxZHh7TWM0UXM+dkIjPno/Y09rQyllJil1Yi12WkMKekBAYlpEWUYr
WVd1VF9XSitVflJKNVl2TF5pQFgmaktXU3JhVE9IVC1mVzsyKWVpN1ZgZ0h8MUdhflpiaT15cl47
Cno1dn04NnE0em03QmEzZyk8ejJzcjc0SXxoXnpaZHxMako9TDk3WWVXOHl3KmAxK04kIU1LQTZl
OTc4K2JzQyljegp6YmZ8TCVDKHh0Iy07bWFtTTZjcTFMSytgcnw2ZEdGcChDYHs7NTIkZSZscF5Y
ejdZU3ooKXsodmgyQXh8MGxCYjUKendBansmbWF1UFU2WSo4a3pZb3BmJmx9dX5oVlZCSFpsVWIh
Mkl0VGZ7Kys+WD0jSSRLdkZPYThBIyV5IUVPSFRrCnpaSl8mRyhHfmZjIVJfU2RPTUJobGZreWMh
TEV9IzNxQ0V6OEF0ZTc8PmkldnRNfTNfOyRnXlBqZHl0TCN3KUlsYQp6OD5ZWEhKaWN1XihHZzNT
eyQwYzs0Yz84R1NrZDVxPFlLRF41MT4ydFZ9bDNMOFQqXlR7SzZ0R1V4VWFUaG1lYz0Kell4RUYw
PEchQX4jSUc4antiLUgqPnc1c0xWdUY/KE1rY1l9OzFUMiF6UndTI0d4NEo3JmxDRz1lVkYoVXJ2
Q14hCnpsa0VseyNnMyUhbFZqKmYtWnVUbShVa218IUsyNn0tIzdSSytFUjR9cEZ+SD5fcm9kRnIr
b1dRQmFeeX4lWGw2fAp6T2spfDNWRyM+aDtrUTFRQEdOSGVXeX1oMFZvNl97QVhrYSMxfEF7VEpw
WThabnMxRH48S3o+S2xheWJpeWVBYD8KenIqVFdgRWJ6TEU/MVJSZVZKJkMtQmlmfn1hXyV6a3Bm
KX47LSMpP3hkVSlDUj1VSUJuI1Vudnd8TXcleStIWVJSCnp2c19EQSooRnwpaD49TFRLVSN1RjFk
a2lyY3c+d0tUTkhkaytxRlZwZG1nPypgPEwwMDkrYD02PU0/IzdYI0d0Kwp6bW5WN1VDaSRpQFdy
P2lFZDM4cVg2Jip8RHRCJF5MJTFnRV4+MmQ1bFc0dD1XPipCU2RSbSZ5bmVAPCg4Z2dqITsKemNJ
PlV6R1MyTGtGXmtPUTBgMFdUcGp6cSojfX5pSjNVNGo8Qj12YlN8MHAoQllZQWQ9d054O2hGWEA/
aUZ9IWBOCno1OCgpUnheZW8pK2ZUPm4yUzNnPkdRdVUmQ2JZTVVJITB6NjtQV1JLWlMjRVVrYSpq
XntXbm5VemU+JSlxVTZJUQp6RHpBXnpMamA4MDxpUEI8ViozaGJ5aHRzUWhyWHtSdk1XY2kqP3BO
MzMjNFVaZm5Ackokdm5tfSM5RHV4P1hCcn4KeiZiR2tXJUpeYnd3YnR0MFdiLVotTTg/fUc3Q0Rr
d1VCVnA0b3k0UjF7d3FCaik9U0o1YjxaM2xYb315eE4qcGE+CnpzfnZmY3l1SyVkYkRYK21nemZF
NEFJSWE9YTBuOyhKQFAxe2NlOGZlPlRTcjM7O14mSzM1KzwmPGpGdDYrend7agp6SVE9fE5aJUVl
OGtpP19HQnF5fDI8Jk5NLW44Wmc9Uz98Zn1xaTIqWUdiVDYtZDJYd1klJnFjb1lsKkFldEZDajAK
YXl2VWY1NERqITBIP2FBTkUmbFd+SEpAcz9KcEtiP01LUW50CgpsaXRlcmFsIDAKSGNtVj9kMDAw
MDEKCg==
</data>
<flag name="review"
          id="287838"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
          </attachment>
      

    </bug>

</bugzilla>