<?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>112087</bug_id>
          
          <creation_ts>2013-03-11 18:05:04 -0700</creation_ts>
          <short_desc>Remove HarfBuzzShaperBase</short_desc>
          <delta_ts>2013-03-26 00:54:15 -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>WebCore Misc.</component>
          <version>528+ (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></keywords>
          <priority>P2</priority>
          <bug_severity>Minor</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Behdad Esfahbod">behdad</reporter>
          <assigned_to name="Dominik Röttsches (drott)">d-r</assigned_to>
          <cc>bashi</cc>
    
    <cc>d-r</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>leviw</cc>
    
    <cc>morrita</cc>
    
    <cc>mrobinson</cc>
    
    <cc>rakuco</cc>
    
    <cc>reed</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>852933</commentid>
    <comment_count>0</comment_count>
    <who name="Behdad Esfahbod">behdad</who>
    <bug_when>2013-03-11 18:05:04 -0700</bug_when>
    <thetext>It was added when there were both harfbuzz.old and harfbuzz-ng shapers in WebCore.  Now that the old one is gone HarfBuzzShaperBase should be folded into HarfBuzzShaper.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>862786</commentid>
    <comment_count>1</comment_count>
      <attachid>194862</attachid>
    <who name="Dominik Röttsches (drott)">d-r</who>
    <bug_when>2013-03-25 08:16:57 -0700</bug_when>
    <thetext>Created attachment 194862
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>862805</commentid>
    <comment_count>2</comment_count>
      <attachid>194862</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2013-03-25 08:47:39 -0700</bug_when>
    <thetext>Comment on attachment 194862
Patch

Looks reasonable to me, but you didn&apos;t mark it for review. Was that intentional. If not, r=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>862810</commentid>
    <comment_count>3</comment_count>
    <who name="Dominik Röttsches (drott)">d-r</who>
    <bug_when>2013-03-25 08:55:07 -0700</bug_when>
    <thetext>Thanks, Martin. I wanted to see whether the Chromium build succeeds on the bots before r?. But thanks, I gladly accept the r+ now. Will try to get a comment from Chromium folks before landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>862814</commentid>
    <comment_count>4</comment_count>
    <who name="Dominik Röttsches (drott)">d-r</who>
    <bug_when>2013-03-25 08:59:15 -0700</bug_when>
    <thetext>Bashi, are you okay with this one?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>863354</commentid>
    <comment_count>5</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2013-03-25 21:57:02 -0700</bug_when>
    <thetext>Regarding to the green bots, it seems fine for me as a someone in chromium land.
I&apos;d rs=me if you put r? there.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>863405</commentid>
    <comment_count>6</comment_count>
      <attachid>195016</attachid>
    <who name="Dominik Röttsches (drott)">d-r</who>
    <bug_when>2013-03-25 23:41:37 -0700</bug_when>
    <thetext>Created attachment 195016
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>863424</commentid>
    <comment_count>7</comment_count>
      <attachid>195016</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-26 00:54:11 -0700</bug_when>
    <thetext>Comment on attachment 195016
Patch

Clearing flags on attachment: 195016

Committed r146855: &lt;http://trac.webkit.org/changeset/146855&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>863425</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-26 00:54:15 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>194862</attachid>
            <date>2013-03-25 08:16:57 -0700</date>
            <delta_ts>2013-03-25 23:41:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-112087-20130325171239.patch</filename>
            <type>text/plain</type>
            <size>23146</size>
            <attacher name="Dominik Röttsches (drott)">d-r</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ2NzYwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWYwOGE2MTZkMGRiMjAw
MzY4Njg4MTIwMDgzYmQwYmFkYmVkYjI5Mi4uOTUzMDczMjY0MTI0MmRlNjhlYjQwOTIwYmIwZTlh
ODVkZWE4MjQ3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDEzLTAzLTI1ICBEb21p
bmlrIFLDtnR0c2NoZXMgIDxkb21pbmlrLnJvdHRzY2hlc0BpbnRlbC5jb20+CisKKyAgICAgICAg
UmVtb3ZlIEhhcmZCdXp6U2hhcGVyQmFzZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTEyMDg3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgRm9sZGluZyBIYXJmQnV6elNoYXBlckJhc2UgaW50byBIYXJmQnV6
elNoYXBlciBzaW5jZQorICAgICAgICB0aGVyZSBpcyBubyBoYXJmYnV6ei1vbGQgdnMuIGhhcmZi
dXp6LW5nIGRpc3RpbmN0aW9uIGFueW1vcmUuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBubyBj
aGFuZ2UgaW4gYmVoYXZpb3IuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOiBSZW1v
dmluZyBIYXJmQnV6elNoYXBlckJhc2UuKgorICAgICAgICAqIFBsYXRmb3JtRWZsLmNtYWtlOiBS
ZW1vdmluZyBIYXJmQnV6elNoYXBlckJhc2UuKgorICAgICAgICAqIFdlYkNvcmUuZ3lwaTogUmVt
b3ZpbmcgSGFyZkJ1enpTaGFwZXJCYXNlLioKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9o
YXJmYnV6ei9IYXJmQnV6elNoYXBlci5jcHA6IEZvbGRpbmcgYmFzZSBjbGFzcyBtZW1iZXJzIGFu
ZCBtZXRob2RzIGludG8gSGFyZkJ1enpTaGFwZXIuCisgICAgICAgIChXZWJDb3JlOjpIYXJmQnV6
elNoYXBlcjo6SGFyZkJ1enpTaGFwZXIpOgorICAgICAgICAoV2ViQ29yZTo6bm9ybWFsaXplU3Bh
Y2VzQW5kTWlycm9yQ2hhcnMpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3Jl
OjpIYXJmQnV6elNoYXBlcjo6c2V0Tm9ybWFsaXplZEJ1ZmZlcik6CisgICAgICAgIChXZWJDb3Jl
OjpIYXJmQnV6elNoYXBlcjo6aXNXb3JkRW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkhhcmZCdXp6
U2hhcGVyOjpkZXRlcm1pbmVXb3JkQnJlYWtTcGFjaW5nKToKKyAgICAgICAgKFdlYkNvcmU6Okhh
cmZCdXp6U2hhcGVyOjpzZXRQYWRkaW5nKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9o
YXJmYnV6ei9IYXJmQnV6elNoYXBlci5oOiBGb2xkaW5nIGJhc2UgY2xhc3MgbWVtYmVycyBhbmQg
bWV0aG9kcyBpbnRvIEhhcmZCdXp6U2hhcGVyLgorICAgICAgICAoSGFyZkJ1enpTaGFwZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6SGFyZkJ1enpTaGFwZXI6OmlzQ29kZXBvaW50U3BhY2UpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2hhcmZidXp6L0hhcmZCdXp6U2hhcGVyQmFzZS5jcHA6
IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvaGFyZmJ1enovSGFyZkJ1enpT
aGFwZXJCYXNlLmg6IFJlbW92ZWQuCisKIDIwMTMtMDMtMjUgIEFsZXhhbmRlciBQYXZsb3YgIDxh
cGF2bG92QGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBQcm9wZXJseSBo
YW5kbGUgdGhlIHJ1bGUgYWRkaXRpb24gdG8gYW4gWE1MIG9yIFNWRyBkb2N1bWVudC4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29y
ZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IDcyZTVlYjNhMDEwNWQxMTU4NjVkMzAyODA5NDVh
ZTEyYzI0ODJmMzMuLmRiMjhjZjIwMDk3YTQxMmNjOGFkYTYwMTE1MDBiZWU1NDM4YjAzOGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNl
L1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtNDMyNSw4ICs0MzI1LDYgQEAgd2ViY29y
ZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlw
ZS9HbHlwaFBhZ2VUcmVlTm9kZUZyZWVUeXBlLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZnJlZXR5cGUvU2ltcGxlRm9udERhdGFGcmVlVHlwZS5jcHAgXAogCVNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZyZWV0eXBlL1VURjE2VUNoYXIzMkl0ZXJhdG9y
LmggXAotCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hhcmZidXp6L0hhcmZCdXp6
U2hhcGVyQmFzZS5jcHAgXAotCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hhcmZi
dXp6L0hhcmZCdXp6U2hhcGVyQmFzZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9oYXJmYnV6ei9IYXJmQnV6ekZhY2UuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9oYXJmYnV6ei9IYXJmQnV6ekZhY2UuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvaGFyZmJ1enovSGFyZkJ1enpGYWNlQ2Fpcm8uY3BwIFwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtRWZsLmNtYWtlIGIvU291cmNlL1dlYkNvcmUvUGxh
dGZvcm1FZmwuY21ha2UKaW5kZXggZjY3ZDlhOGY2YjQzNDlhMzg1NDk0MDY5Y2E1ZTFiZjY3NWE4
NmQ5Ni4uY2YxNjcyMjY4ZGY1ZWE3NjQxNTY1YTlmM2NhZTQxYzU5MDNkMTNhZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvUGxhdGZvcm1FZmwuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUv
UGxhdGZvcm1FZmwuY21ha2UKQEAgLTEzMCw3ICsxMzAsNiBAQCBsaXN0KEFQUEVORCBXZWJDb3Jl
X1NPVVJDRVMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvVmlkZW9TaW5rR1N0cmVh
bWVyLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9XZWJLaXRXZWJTb3VyY2VH
U3RyZWFtZXIuY3BwCiAKLSAgICBwbGF0Zm9ybS9ncmFwaGljcy9oYXJmYnV6ei9IYXJmQnV6elNo
YXBlckJhc2UuY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvaGFyZmJ1enovSGFyZkJ1enpGYWNl
Q2Fpcm8uY3BwCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvaGFyZmJ1enovSGFyZkJ1enpGYWNlLmNw
cAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2hhcmZidXp6L0hhcmZCdXp6U2hhcGVyLmNwcApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5neXBpCmluZGV4IDhiYjY0ZDM0MWM3ZDQ4MzhhNDU5ZTgxN2NlZmMyN2YyYzM0YWUzNzIu
LjI1NWZiNjA0MGY0ZDUzZjI1ODZjZWMzNDQyMjc1MWE5ZTZlZGFhY2IgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5
cGkKQEAgLTQyMjgsOCArNDIyOCw2IEBACiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3Mv
aGFyZmJ1enovSGFyZkJ1enpGYWNlLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNz
L2hhcmZidXp6L0hhcmZCdXp6U2hhcGVyLmNwcCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3Jh
cGhpY3MvaGFyZmJ1enovSGFyZkJ1enpTaGFwZXIuaCcsCi0gICAgICAgICAgICAncGxhdGZvcm0v
Z3JhcGhpY3MvaGFyZmJ1enovSGFyZkJ1enpTaGFwZXJCYXNlLmNwcCcsCi0gICAgICAgICAgICAn
cGxhdGZvcm0vZ3JhcGhpY3MvaGFyZmJ1enovSGFyZkJ1enpTaGFwZXJCYXNlLmgnLAogICAgICAg
ICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Db2xvck1hYy5tbScsCiAgICAgICAgICAgICAn
cGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0NvbXBsZXhUZXh0Q29udHJvbGxlci5jcHAnLAogICAgICAg
ICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Db21wbGV4VGV4dENvbnRyb2xsZXIuaCcsCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9oYXJmYnV6ei9IYXJm
QnV6elNoYXBlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9oYXJmYnV6
ei9IYXJmQnV6elNoYXBlci5jcHAKaW5kZXggNTE1NjhmYzM0MmNjY2U4MGY5YzM2ODRjOGUzMTM1
ZmMzMGVhMzFkMy4uOGVkMmI0YTZhOTEwZWM4Yzg2ZWUzNGY5ZWJlNjIxOWUyOTAxMGI3MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaGFyZmJ1enovSGFyZkJ1
enpTaGFwZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hhcmZi
dXp6L0hhcmZCdXp6U2hhcGVyLmNwcApAQCAtMTg0LDcgKzE4NCwxNCBAQCBzdGF0aWMgdm9pZCBu
b3JtYWxpemVDaGFyYWN0ZXJzKGNvbnN0IFRleHRSdW4mIHJ1biwgVUNoYXIqIGRlc3RpbmF0aW9u
LCBpbnQgbGVuZwogfQogCiBIYXJmQnV6elNoYXBlcjo6SGFyZkJ1enpTaGFwZXIoY29uc3QgRm9u
dCogZm9udCwgY29uc3QgVGV4dFJ1biYgcnVuKQotICAgIDogSGFyZkJ1enpTaGFwZXJCYXNlKGZv
bnQsIHJ1bikKKyAgICA6IG1fZm9udChmb250KQorICAgICwgbV9ub3JtYWxpemVkQnVmZmVyTGVu
Z3RoKDApCisgICAgLCBtX3J1bihydW4pCisgICAgLCBtX3dvcmRTcGFjaW5nQWRqdXN0bWVudChm
b250LT53b3JkU3BhY2luZygpKQorICAgICwgbV9wYWRkaW5nKDApCisgICAgLCBtX3BhZFBlcldv
cmRCcmVhaygwKQorICAgICwgbV9wYWRFcnJvcigwKQorICAgICwgbV9sZXR0ZXJTcGFjaW5nKGZv
bnQtPmxldHRlclNwYWNpbmcoKSkKICAgICAsIG1fZnJvbUluZGV4KDApCiAgICAgLCBtX3RvSW5k
ZXgobV9ydW4ubGVuZ3RoKCkpCiB7CkBAIC0xOTksNiArMjA2LDEyOSBAQCBIYXJmQnV6elNoYXBl
cjo6fkhhcmZCdXp6U2hhcGVyKCkKIHsKIH0KIAorc3RhdGljIHZvaWQgbm9ybWFsaXplU3BhY2Vz
QW5kTWlycm9yQ2hhcnMoY29uc3QgVUNoYXIqIHNvdXJjZSwgVUNoYXIqIGRlc3RpbmF0aW9uLCBp
bnQgbGVuZ3RoLCBIYXJmQnV6elNoYXBlcjo6Tm9ybWFsaXplTW9kZSBub3JtYWxpemVNb2RlKQor
eworICAgIGludCBwb3NpdGlvbiA9IDA7CisgICAgYm9vbCBlcnJvciA9IGZhbHNlOworICAgIC8v
IEl0ZXJhdGUgY2hhcmFjdGVycyBpbiBzb3VyY2UgYW5kIG1pcnJvciBjaGFyYWN0ZXIgaWYgbmVl
ZGVkLgorICAgIHdoaWxlIChwb3NpdGlvbiA8IGxlbmd0aCkgeworICAgICAgICBVQ2hhcjMyIGNo
YXJhY3RlcjsKKyAgICAgICAgaW50IG5leHRQb3NpdGlvbiA9IHBvc2l0aW9uOworICAgICAgICBV
MTZfTkVYVChzb3VyY2UsIG5leHRQb3NpdGlvbiwgbGVuZ3RoLCBjaGFyYWN0ZXIpOworICAgICAg
ICAvLyBEb24ndCBub3JtYWxpemUgdGFicyBhcyB0aGV5IGFyZSBub3QgdHJlYXRlZCBhcyBzcGFj
ZXMgZm9yIHdvcmQtZW5kCisgICAgICAgIGlmIChGb250Ojp0cmVhdEFzU3BhY2UoY2hhcmFjdGVy
KSAmJiBjaGFyYWN0ZXIgIT0gJ1x0JykKKyAgICAgICAgICAgIGNoYXJhY3RlciA9ICcgJzsKKyAg
ICAgICAgZWxzZSBpZiAoRm9udDo6dHJlYXRBc1plcm9XaWR0aFNwYWNlKGNoYXJhY3RlcikpCisg
ICAgICAgICAgICBjaGFyYWN0ZXIgPSB6ZXJvV2lkdGhTcGFjZTsKKyAgICAgICAgZWxzZSBpZiAo
bm9ybWFsaXplTW9kZSA9PSBIYXJmQnV6elNoYXBlcjo6Tm9ybWFsaXplTWlycm9yQ2hhcnMpCisg
ICAgICAgICAgICBjaGFyYWN0ZXIgPSB1X2NoYXJNaXJyb3IoY2hhcmFjdGVyKTsKKyAgICAgICAg
VTE2X0FQUEVORChkZXN0aW5hdGlvbiwgcG9zaXRpb24sIGxlbmd0aCwgY2hhcmFjdGVyLCBlcnJv
cik7CisgICAgICAgIEFTU0VSVF9VTlVTRUQoZXJyb3IsICFlcnJvcik7CisgICAgICAgIHBvc2l0
aW9uID0gbmV4dFBvc2l0aW9uOworICAgIH0KK30KKwordm9pZCBIYXJmQnV6elNoYXBlcjo6c2V0
Tm9ybWFsaXplZEJ1ZmZlcihOb3JtYWxpemVNb2RlIG5vcm1hbGl6ZU1vZGUpCit7CisgICAgLy8g
Tm9ybWFsaXplIHRoZSB0ZXh0IHJ1biBpbiB0aHJlZSB3YXlzOgorICAgIC8vIDEpIENvbnZlcnQg
dGhlIHxvcmlnaW5hbFJ1bnwgdG8gTkZDIG5vcm1hbGl6ZWQgZm9ybSBpZiBjb21iaW5pbmcgZGlh
Y3JpdGljYWwgbWFya3MKKyAgICAvLyAoVSswMzAwLi4pIGFyZSB1c2VkIGluIHRoZSBydW4uIFRo
aXMgY29udmVyc2lvbiBpcyBuZWNlc3Nhcnkgc2luY2UgbW9zdCBPcGVuVHlwZQorICAgIC8vIGZv
bnRzIChlLmcuLCBBcmlhbCkgZG9uJ3QgaGF2ZSBzdWJzdGl0dXRpb24gcnVsZXMgZm9yIHRoZSBk
aWFjcml0aWNhbCBtYXJrcyBpbgorICAgIC8vIHRoZWlyIEdTVUIgdGFibGVzLgorICAgIC8vCisg
ICAgLy8gTm90ZSB0aGF0IHdlIGRvbid0IHVzZSB0aGUgaWN1OjpOb3JtYWxpemVyOjppc05vcm1h
bGl6ZWQoVU5PUk1fTkZDKSBBUEkgaGVyZSBzaW5jZQorICAgIC8vIHRoZSBBUEkgcmV0dXJucyBG
QUxTRSAoPSBub3Qgbm9ybWFsaXplZCkgZm9yIGNvbXBsZXggcnVucyB0aGF0IGRvbid0IHJlcXVp
cmUgTkZDCisgICAgLy8gbm9ybWFsaXphdGlvbiAoZS5nLiwgQXJhYmljIHRleHQpLiBVbmxlc3Mg
dGhlIHJ1biBjb250YWlucyB0aGUgZGlhY3JpdGljYWwgbWFya3MsCisgICAgLy8gSGFyZkJ1enog
d2lsbCBkbyB0aGUgc2FtZSB0aGluZyBmb3IgdXMgdXNpbmcgdGhlIEdTVUIgdGFibGUuCisgICAg
Ly8gMikgQ29udmVydCBzcGFjaW5nIGNoYXJhY3RlcnMgaW50byBwbGFpbiBzcGFjZXMsIGFzIHNv
bWUgZm9udHMgd2lsbCBwcm92aWRlIGdseXBocworICAgIC8vIGZvciBjaGFyYWN0ZXJzIGxpa2Ug
J1xuJyBvdGhlcndpc2UuCisgICAgLy8gMykgQ29udmVydCBtaXJyb3JlZCBjaGFyYWN0ZXJzIHN1
Y2ggYXMgcGFyZW50aGVzaXMgZm9yIHJ0bCB0ZXh0LgorCisgICAgLy8gQ29udmVydCB0byBORkMg
Zm9ybSBpZiB0aGUgdGV4dCBoYXMgZGlhY3JpdGljYWwgbWFya3MuCisgICAgaWN1OjpVbmljb2Rl
U3RyaW5nIG5vcm1hbGl6ZWRTdHJpbmc7CisgICAgVUVycm9yQ29kZSBlcnJvciA9IFVfWkVST19F
UlJPUjsKKworICAgIGNvbnN0IFVDaGFyKiBydW5DaGFyYWN0ZXJzOworICAgIFN0cmluZyBzdHJp
bmdGb3I4Qml0UnVuOworICAgIGlmIChtX3J1bi5pczhCaXQoKSkgeworICAgICAgICBzdHJpbmdG
b3I4Qml0UnVuID0gU3RyaW5nOjptYWtlMTZCaXRGcm9tOEJpdFNvdXJjZShtX3J1bi5jaGFyYWN0
ZXJzOCgpLCBtX3J1bi5sZW5ndGgoKSk7CisgICAgICAgIHJ1bkNoYXJhY3RlcnMgPSBzdHJpbmdG
b3I4Qml0UnVuLmNoYXJhY3RlcnMxNigpOworICAgIH0gZWxzZQorICAgICAgICBydW5DaGFyYWN0
ZXJzID0gbV9ydW4uY2hhcmFjdGVyczE2KCk7CisKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IG1f
cnVuLmxlbmd0aCgpOyArK2kpIHsKKyAgICAgICAgVUNoYXIgY2ggPSBydW5DaGFyYWN0ZXJzW2ld
OworICAgICAgICBpZiAoOjp1YmxvY2tfZ2V0Q29kZShjaCkgPT0gVUJMT0NLX0NPTUJJTklOR19E
SUFDUklUSUNBTF9NQVJLUykgeworICAgICAgICAgICAgaWN1OjpOb3JtYWxpemVyOjpub3JtYWxp
emUoaWN1OjpVbmljb2RlU3RyaW5nKHJ1bkNoYXJhY3RlcnMsCisgICAgICAgICAgICAgICAgbV9y
dW4ubGVuZ3RoKCkpLCBVTk9STV9ORkMsIDAgLyogbm8gb3B0aW9ucyAqLywKKyAgICAgICAgICAg
ICAgICBub3JtYWxpemVkU3RyaW5nLCBlcnJvcik7CisgICAgICAgICAgICBpZiAoVV9GQUlMVVJF
KGVycm9yKSkKKyAgICAgICAgICAgICAgICBub3JtYWxpemVkU3RyaW5nLnJlbW92ZSgpOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBjb25zdCBVQ2hhciogc291
cmNlVGV4dDsKKyAgICBpZiAobm9ybWFsaXplZFN0cmluZy5pc0VtcHR5KCkpIHsKKyAgICAgICAg
bV9ub3JtYWxpemVkQnVmZmVyTGVuZ3RoID0gbV9ydW4ubGVuZ3RoKCk7CisgICAgICAgIHNvdXJj
ZVRleHQgPSBydW5DaGFyYWN0ZXJzOworICAgIH0gZWxzZSB7CisgICAgICAgIG1fbm9ybWFsaXpl
ZEJ1ZmZlckxlbmd0aCA9IG5vcm1hbGl6ZWRTdHJpbmcubGVuZ3RoKCk7CisgICAgICAgIHNvdXJj
ZVRleHQgPSBub3JtYWxpemVkU3RyaW5nLmdldEJ1ZmZlcigpOworICAgIH0KKworICAgIG1fbm9y
bWFsaXplZEJ1ZmZlciA9IGFkb3B0QXJyYXlQdHIobmV3IFVDaGFyW21fbm9ybWFsaXplZEJ1ZmZl
ckxlbmd0aCArIDFdKTsKKyAgICBub3JtYWxpemVTcGFjZXNBbmRNaXJyb3JDaGFycyhzb3VyY2VU
ZXh0LCBtX25vcm1hbGl6ZWRCdWZmZXIuZ2V0KCksIG1fbm9ybWFsaXplZEJ1ZmZlckxlbmd0aCwg
bm9ybWFsaXplTW9kZSk7Cit9CisKK2Jvb2wgSGFyZkJ1enpTaGFwZXI6OmlzV29yZEVuZCh1bnNp
Z25lZCBpbmRleCkKK3sKKyAgICAvLyBUaGlzIGNvdWxkIHJlZmVyIGEgaGlnaC1zdXJyb2dhdGUs
IGJ1dCBzaG91bGQgd29yay4KKyAgICByZXR1cm4gaW5kZXggJiYgaXNDb2RlcG9pbnRTcGFjZSht
X25vcm1hbGl6ZWRCdWZmZXJbaW5kZXhdKTsKK30KKworaW50IEhhcmZCdXp6U2hhcGVyOjpkZXRl
cm1pbmVXb3JkQnJlYWtTcGFjaW5nKCkKK3sKKyAgICBpbnQgd29yZEJyZWFrU3BhY2luZyA9IG1f
d29yZFNwYWNpbmdBZGp1c3RtZW50OworCisgICAgaWYgKG1fcGFkZGluZyA+IDApIHsKKyAgICAg
ICAgaW50IHRvUGFkID0gcm91bmRmKG1fcGFkUGVyV29yZEJyZWFrICsgbV9wYWRFcnJvcik7Cisg
ICAgICAgIG1fcGFkRXJyb3IgKz0gbV9wYWRQZXJXb3JkQnJlYWsgLSB0b1BhZDsKKworICAgICAg
ICBpZiAobV9wYWRkaW5nIDwgdG9QYWQpCisgICAgICAgICAgICB0b1BhZCA9IG1fcGFkZGluZzsK
KyAgICAgICAgbV9wYWRkaW5nIC09IHRvUGFkOworICAgICAgICB3b3JkQnJlYWtTcGFjaW5nICs9
IHRvUGFkOworICAgIH0KKyAgICByZXR1cm4gd29yZEJyZWFrU3BhY2luZzsKK30KKworLy8gc2V0
UGFkZGluZyBzZXRzIGEgbnVtYmVyIG9mIHBpeGVscyB0byBiZSBkaXN0cmlidXRlZCBhY3Jvc3Mg
dGhlIFRleHRSdW4uCisvLyBXZWJLaXQgdXNlcyB0aGlzIHRvIGp1c3RpZnkgdGV4dC4KK3ZvaWQg
SGFyZkJ1enpTaGFwZXI6OnNldFBhZGRpbmcoaW50IHBhZGRpbmcpCit7CisgICAgbV9wYWRkaW5n
ID0gcGFkZGluZzsKKyAgICBtX3BhZEVycm9yID0gMDsKKyAgICBpZiAoIW1fcGFkZGluZykKKyAg
ICAgICAgcmV0dXJuOworCisgICAgLy8gSWYgd2UgaGF2ZSBwYWRkaW5nIHRvIGRpc3RyaWJ1dGUs
IHRoZW4gd2UgdHJ5IHRvIGdpdmUgYW4gZXF1YWwKKyAgICAvLyBhbW91bnQgdG8gZWFjaCBzcGFj
ZS4gVGhlIGxhc3Qgc3BhY2UgZ2V0cyB0aGUgc21hbGxlciBhbW91bnQsIGlmCisgICAgLy8gYW55
LgorICAgIHVuc2lnbmVkIG51bVdvcmRFbmRzID0gMDsKKworICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBtX25vcm1hbGl6ZWRCdWZmZXJMZW5ndGg7IGkrKykgeworICAgICAgICBpZiAoaXNX
b3JkRW5kKGkpKQorICAgICAgICAgICAgbnVtV29yZEVuZHMrKzsKKyAgICB9CisKKyAgICBpZiAo
bnVtV29yZEVuZHMpCisgICAgICAgIG1fcGFkUGVyV29yZEJyZWFrID0gbV9wYWRkaW5nIC8gbnVt
V29yZEVuZHM7CisgICAgZWxzZQorICAgICAgICBtX3BhZFBlcldvcmRCcmVhayA9IDA7Cit9CisK
Kwogdm9pZCBIYXJmQnV6elNoYXBlcjo6c2V0RHJhd1JhbmdlKGludCBmcm9tLCBpbnQgdG8pCiB7
CiAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oZnJvbSA+PSAwKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hhcmZidXp6L0hhcmZCdXp6
U2hhcGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9oYXJmYnV6ei9IYXJm
QnV6elNoYXBlci5oCmluZGV4IGNlZmFlZTNmMGQxMzU1YjRkMzgyMjVjODk3ZmNhNzUwYmE1ZDhj
NDEuLjVhM2Q0ZmJkYzQzOTVlMGE5Mjg4MjczNDU4ODk0ZTdkNWJhMzAyOTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hhcmZidXp6L0hhcmZCdXp6U2hhcGVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaGFyZmJ1enovSGFyZkJ1
enpTaGFwZXIuaApAQCAtMzMsMjEgKzMzLDI3IEBACiAKICNpbmNsdWRlICJGbG9hdFBvaW50Lmgi
CiAjaW5jbHVkZSAiR2x5cGhCdWZmZXIuaCIKLSNpbmNsdWRlICJIYXJmQnV6elNoYXBlckJhc2Uu
aCIKICNpbmNsdWRlICJUZXh0UnVuLmgiCiAjaW5jbHVkZSAiaGIuaCIKICNpbmNsdWRlIDx3dGYv
SGFzaFNldC5oPgorI2luY2x1ZGUgPHd0Zi9Pd25BcnJheVB0ci5oPgogI2luY2x1ZGUgPHd0Zi9P
d25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0
b3IuaD4KKyNpbmNsdWRlIDx3dGYvdW5pY29kZS9DaGFyYWN0ZXJOYW1lcy5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIEZvbnQ7CiBjbGFzcyBTaW1wbGVGb250RGF0YTsKIAotY2xh
c3MgSGFyZkJ1enpTaGFwZXIgOiBwdWJsaWMgSGFyZkJ1enpTaGFwZXJCYXNlIHsKK2NsYXNzIEhh
cmZCdXp6U2hhcGVyIHsKIHB1YmxpYzoKKyAgICBlbnVtIE5vcm1hbGl6ZU1vZGUgeworICAgICAg
ICBEb05vdE5vcm1hbGl6ZU1pcnJvckNoYXJzLAorICAgICAgICBOb3JtYWxpemVNaXJyb3JDaGFy
cworICAgIH07CisKICAgICBIYXJmQnV6elNoYXBlcihjb25zdCBGb250KiwgY29uc3QgVGV4dFJ1
biYpOwogICAgIHZpcnR1YWwgfkhhcmZCdXp6U2hhcGVyKCk7CiAKQEAgLTEwMSw2ICsxMDcsMTcg
QEAgcHJpdmF0ZToKICAgICAgICAgZmxvYXQgbV93aWR0aDsKICAgICB9OwogCisgICAgdm9pZCBz
ZXROb3JtYWxpemVkQnVmZmVyKE5vcm1hbGl6ZU1vZGUgPSBEb05vdE5vcm1hbGl6ZU1pcnJvckNo
YXJzKTsKKworICAgIGJvb2wgaXNXb3JkRW5kKHVuc2lnbmVkKTsKKyAgICBpbnQgZGV0ZXJtaW5l
V29yZEJyZWFrU3BhY2luZygpOworICAgIC8vIHNldFBhZGRpbmcgc2V0cyBhIG51bWJlciBvZiBw
aXhlbHMgdG8gYmUgZGlzdHJpYnV0ZWQgYWNyb3NzIHRoZSBUZXh0UnVuLgorICAgIC8vIFdlYktp
dCB1c2VzIHRoaXMgdG8ganVzdGlmeSB0ZXh0LgorICAgIHZvaWQgc2V0UGFkZGluZyhpbnQpOwor
CisgICAgLy8gSW4gY29tcGxleCB0ZXh0IHdvcmQtc3BhY2luZyBhZmZlY3RzIGVhY2ggbGluZS1i
cmVhaywgc3BhY2UgKFUrMDAyMCkgYW5kIG5vbi1icmVha2luZyBzcGFjZSAoVSswMEEwKS4KKyAg
ICBzdGF0aWMgYm9vbCBpc0NvZGVwb2ludFNwYWNlKFVDaGFyIGMpIHsgcmV0dXJuIGMgPT0gJyAn
IHx8IGMgPT0gbm9CcmVha1NwYWNlIHx8IGMgPT0gJ1xuJzsgfQorCiAgICAgdm9pZCBzZXRGb250
RmVhdHVyZXMoKTsKIAogICAgIGJvb2wgY29sbGVjdEhhcmZCdXp6UnVucygpOwpAQCAtMTExLDYg
KzEyOCwxNyBAQCBwcml2YXRlOgogCiAgICAgR2x5cGhCdWZmZXJBZHZhbmNlIGNyZWF0ZUdseXBo
QnVmZmVyQWR2YW5jZShmbG9hdCwgZmxvYXQpOwogCisgICAgY29uc3QgRm9udCogbV9mb250Owor
ICAgIE93bkFycmF5UHRyPFVDaGFyPiBtX25vcm1hbGl6ZWRCdWZmZXI7CisgICAgdW5zaWduZWQg
bV9ub3JtYWxpemVkQnVmZmVyTGVuZ3RoOworICAgIGNvbnN0IFRleHRSdW4mIG1fcnVuOworCisg
ICAgaW50IG1fd29yZFNwYWNpbmdBZGp1c3RtZW50OyAvLyBEZWx0YSBhZGp1c3RtZW50IChwaXhl
bHMpIGZvciBlYWNoIHdvcmQgYnJlYWsuCisgICAgZmxvYXQgbV9wYWRkaW5nOyAvLyBQaXhlbHMg
dG8gYmUgZGlzdHJpYnV0ZWQgb3ZlciB0aGUgbGluZSBhdCB3b3JkIGJyZWFrcy4KKyAgICBmbG9h
dCBtX3BhZFBlcldvcmRCcmVhazsgLy8gUGl4ZWxzIHRvIGJlIGFkZGVkIHRvIGVhY2ggd29yZCBi
cmVhay4KKyAgICBmbG9hdCBtX3BhZEVycm9yOyAvLyBtX3BhZFBlcldvcmRCcmVhayBtaWdodCBo
YXZlIGEgZnJhY3Rpb25hbCBjb21wb25lbnQuIFNpbmNlIHdlIG9ubHkgYWRkIGEgd2hvbGUgbnVt
YmVyIG9mIHBhZGRpbmcgcGl4ZWxzIGF0IGVhY2ggd29yZCBicmVhayB3ZSBhY2N1bXVsYXRlIGVy
cm9yLiBUaGlzIGlzIHRoZSBudW1iZXIgb2YgcGl4ZWxzIHRoYXQgd2UgYXJlIGJlaGluZCBzbyBm
YXIuCisgICAgaW50IG1fbGV0dGVyU3BhY2luZzsgLy8gUGl4ZWxzIHRvIGJlIGFkZGVkIGFmdGVy
IGVhY2ggZ2x5cGguCisKICAgICBWZWN0b3I8aGJfZmVhdHVyZV90LCA0PiBtX2ZlYXR1cmVzOwog
ICAgIFZlY3RvcjxPd25QdHI8SGFyZkJ1enpSdW4+LCAxNj4gbV9oYXJmQnV6elJ1bnM7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hhcmZidXp6L0hhcmZC
dXp6U2hhcGVyQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9oYXJm
YnV6ei9IYXJmQnV6elNoYXBlckJhc2UuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCBjMTNkYzlmMWQ2OGQ2MjdiYjBlYzg2NzQxNjgyY2I1ZjNlMDRiN2YxLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2hhcmZidXp6L0hhcmZCdXp6U2hhcGVyQmFzZS5jcHAKKysrIC9kZXYvbnVsbApA
QCAtMSwxNzcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoYykgMjAxMiBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQot
ICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBu
YW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQot
ICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
LSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLQotI2luY2x1ZGUgIkhhcmZCdXp6
U2hhcGVyQmFzZS5oIgotCi0jaW5jbHVkZSAiRm9udC5oIgotI2luY2x1ZGUgPHVuaWNvZGUvbm9y
bWx6ci5oPgotI2luY2x1ZGUgPHVuaWNvZGUvdWNoYXIuaD4KLSNpbmNsdWRlIDx3dGYvTWF0aEV4
dHJhcy5oPgotI2luY2x1ZGUgPHd0Zi91bmljb2RlL1VuaWNvZGUuaD4KLQotbmFtZXNwYWNlIFdl
YkNvcmUgewotCi1IYXJmQnV6elNoYXBlckJhc2U6OkhhcmZCdXp6U2hhcGVyQmFzZShjb25zdCBG
b250KiBmb250LCBjb25zdCBUZXh0UnVuJiBydW4pCi0gICAgOiBtX2ZvbnQoZm9udCkKLSAgICAs
IG1fbm9ybWFsaXplZEJ1ZmZlckxlbmd0aCgwKQotICAgICwgbV9ydW4ocnVuKQotICAgICwgbV93
b3JkU3BhY2luZ0FkanVzdG1lbnQoZm9udC0+d29yZFNwYWNpbmcoKSkKLSAgICAsIG1fcGFkZGlu
ZygwKQotICAgICwgbV9wYWRQZXJXb3JkQnJlYWsoMCkKLSAgICAsIG1fcGFkRXJyb3IoMCkKLSAg
ICAsIG1fbGV0dGVyU3BhY2luZyhmb250LT5sZXR0ZXJTcGFjaW5nKCkpCi17Ci19Ci0KLXN0YXRp
YyB2b2lkIG5vcm1hbGl6ZVNwYWNlc0FuZE1pcnJvckNoYXJzKGNvbnN0IFVDaGFyKiBzb3VyY2Us
IFVDaGFyKiBkZXN0aW5hdGlvbiwgaW50IGxlbmd0aCwgSGFyZkJ1enpTaGFwZXJCYXNlOjpOb3Jt
YWxpemVNb2RlIG5vcm1hbGl6ZU1vZGUpCi17Ci0gICAgaW50IHBvc2l0aW9uID0gMDsKLSAgICBi
b29sIGVycm9yID0gZmFsc2U7Ci0gICAgLy8gSXRlcmF0ZSBjaGFyYWN0ZXJzIGluIHNvdXJjZSBh
bmQgbWlycm9yIGNoYXJhY3RlciBpZiBuZWVkZWQuCi0gICAgd2hpbGUgKHBvc2l0aW9uIDwgbGVu
Z3RoKSB7Ci0gICAgICAgIFVDaGFyMzIgY2hhcmFjdGVyOwotICAgICAgICBpbnQgbmV4dFBvc2l0
aW9uID0gcG9zaXRpb247Ci0gICAgICAgIFUxNl9ORVhUKHNvdXJjZSwgbmV4dFBvc2l0aW9uLCBs
ZW5ndGgsIGNoYXJhY3Rlcik7Ci0gICAgICAgIC8vIERvbid0IG5vcm1hbGl6ZSB0YWJzIGFzIHRo
ZXkgYXJlIG5vdCB0cmVhdGVkIGFzIHNwYWNlcyBmb3Igd29yZC1lbmQKLSAgICAgICAgaWYgKEZv
bnQ6OnRyZWF0QXNTcGFjZShjaGFyYWN0ZXIpICYmIGNoYXJhY3RlciAhPSAnXHQnKQotICAgICAg
ICAgICAgY2hhcmFjdGVyID0gJyAnOwotICAgICAgICBlbHNlIGlmIChGb250Ojp0cmVhdEFzWmVy
b1dpZHRoU3BhY2UoY2hhcmFjdGVyKSkKLSAgICAgICAgICAgIGNoYXJhY3RlciA9IHplcm9XaWR0
aFNwYWNlOwotICAgICAgICBlbHNlIGlmIChub3JtYWxpemVNb2RlID09IEhhcmZCdXp6U2hhcGVy
QmFzZTo6Tm9ybWFsaXplTWlycm9yQ2hhcnMpCi0gICAgICAgICAgICBjaGFyYWN0ZXIgPSB1X2No
YXJNaXJyb3IoY2hhcmFjdGVyKTsKLSAgICAgICAgVTE2X0FQUEVORChkZXN0aW5hdGlvbiwgcG9z
aXRpb24sIGxlbmd0aCwgY2hhcmFjdGVyLCBlcnJvcik7Ci0gICAgICAgIEFTU0VSVF9VTlVTRUQo
ZXJyb3IsICFlcnJvcik7Ci0gICAgICAgIHBvc2l0aW9uID0gbmV4dFBvc2l0aW9uOwotICAgIH0K
LX0KLQotdm9pZCBIYXJmQnV6elNoYXBlckJhc2U6OnNldE5vcm1hbGl6ZWRCdWZmZXIoTm9ybWFs
aXplTW9kZSBub3JtYWxpemVNb2RlKQotewotICAgIC8vIE5vcm1hbGl6ZSB0aGUgdGV4dCBydW4g
aW4gdGhyZWUgd2F5czoKLSAgICAvLyAxKSBDb252ZXJ0IHRoZSB8b3JpZ2luYWxSdW58IHRvIE5G
QyBub3JtYWxpemVkIGZvcm0gaWYgY29tYmluaW5nIGRpYWNyaXRpY2FsIG1hcmtzCi0gICAgLy8g
KFUrMDMwMC4uKSBhcmUgdXNlZCBpbiB0aGUgcnVuLiBUaGlzIGNvbnZlcnNpb24gaXMgbmVjZXNz
YXJ5IHNpbmNlIG1vc3QgT3BlblR5cGUKLSAgICAvLyBmb250cyAoZS5nLiwgQXJpYWwpIGRvbid0
IGhhdmUgc3Vic3RpdHV0aW9uIHJ1bGVzIGZvciB0aGUgZGlhY3JpdGljYWwgbWFya3MgaW4KLSAg
ICAvLyB0aGVpciBHU1VCIHRhYmxlcy4KLSAgICAvLwotICAgIC8vIE5vdGUgdGhhdCB3ZSBkb24n
dCB1c2UgdGhlIGljdTo6Tm9ybWFsaXplcjo6aXNOb3JtYWxpemVkKFVOT1JNX05GQykgQVBJIGhl
cmUgc2luY2UKLSAgICAvLyB0aGUgQVBJIHJldHVybnMgRkFMU0UgKD0gbm90IG5vcm1hbGl6ZWQp
IGZvciBjb21wbGV4IHJ1bnMgdGhhdCBkb24ndCByZXF1aXJlIE5GQwotICAgIC8vIG5vcm1hbGl6
YXRpb24gKGUuZy4sIEFyYWJpYyB0ZXh0KS4gVW5sZXNzIHRoZSBydW4gY29udGFpbnMgdGhlIGRp
YWNyaXRpY2FsIG1hcmtzLAotICAgIC8vIEhhcmZCdXp6IHdpbGwgZG8gdGhlIHNhbWUgdGhpbmcg
Zm9yIHVzIHVzaW5nIHRoZSBHU1VCIHRhYmxlLgotICAgIC8vIDIpIENvbnZlcnQgc3BhY2luZyBj
aGFyYWN0ZXJzIGludG8gcGxhaW4gc3BhY2VzLCBhcyBzb21lIGZvbnRzIHdpbGwgcHJvdmlkZSBn
bHlwaHMKLSAgICAvLyBmb3IgY2hhcmFjdGVycyBsaWtlICdcbicgb3RoZXJ3aXNlLgotICAgIC8v
IDMpIENvbnZlcnQgbWlycm9yZWQgY2hhcmFjdGVycyBzdWNoIGFzIHBhcmVudGhlc2lzIGZvciBy
dGwgdGV4dC4KLQotICAgIC8vIENvbnZlcnQgdG8gTkZDIGZvcm0gaWYgdGhlIHRleHQgaGFzIGRp
YWNyaXRpY2FsIG1hcmtzLgotICAgIGljdTo6VW5pY29kZVN0cmluZyBub3JtYWxpemVkU3RyaW5n
OwotICAgIFVFcnJvckNvZGUgZXJyb3IgPSBVX1pFUk9fRVJST1I7Ci0KLSAgICBjb25zdCBVQ2hh
ciogcnVuQ2hhcmFjdGVyczsKLSAgICBTdHJpbmcgc3RyaW5nRm9yOEJpdFJ1bjsKLSAgICBpZiAo
bV9ydW4uaXM4Qml0KCkpIHsKLSAgICAgICAgc3RyaW5nRm9yOEJpdFJ1biA9IFN0cmluZzo6bWFr
ZTE2Qml0RnJvbThCaXRTb3VyY2UobV9ydW4uY2hhcmFjdGVyczgoKSwgbV9ydW4ubGVuZ3RoKCkp
OwotICAgICAgICBydW5DaGFyYWN0ZXJzID0gc3RyaW5nRm9yOEJpdFJ1bi5jaGFyYWN0ZXJzMTYo
KTsKLSAgICB9IGVsc2UKLSAgICAgICAgcnVuQ2hhcmFjdGVycyA9IG1fcnVuLmNoYXJhY3RlcnMx
NigpOwotCi0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtX3J1bi5sZW5ndGgoKTsgKytpKSB7Ci0g
ICAgICAgIFVDaGFyIGNoID0gcnVuQ2hhcmFjdGVyc1tpXTsKLSAgICAgICAgaWYgKDo6dWJsb2Nr
X2dldENvZGUoY2gpID09IFVCTE9DS19DT01CSU5JTkdfRElBQ1JJVElDQUxfTUFSS1MpIHsKLSAg
ICAgICAgICAgIGljdTo6Tm9ybWFsaXplcjo6bm9ybWFsaXplKGljdTo6VW5pY29kZVN0cmluZyhy
dW5DaGFyYWN0ZXJzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9y
dW4ubGVuZ3RoKCkpLCBVTk9STV9ORkMsIDAgLyogbm8gb3B0aW9ucyAqLywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vcm1hbGl6ZWRTdHJpbmcsIGVycm9yKTsKLSAg
ICAgICAgICAgIGlmIChVX0ZBSUxVUkUoZXJyb3IpKQotICAgICAgICAgICAgICAgIG5vcm1hbGl6
ZWRTdHJpbmcucmVtb3ZlKCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgIH0K
LQotICAgIGNvbnN0IFVDaGFyKiBzb3VyY2VUZXh0OwotICAgIGlmIChub3JtYWxpemVkU3RyaW5n
LmlzRW1wdHkoKSkgewotICAgICAgICBtX25vcm1hbGl6ZWRCdWZmZXJMZW5ndGggPSBtX3J1bi5s
ZW5ndGgoKTsKLSAgICAgICAgc291cmNlVGV4dCA9IHJ1bkNoYXJhY3RlcnM7Ci0gICAgfSBlbHNl
IHsKLSAgICAgICAgbV9ub3JtYWxpemVkQnVmZmVyTGVuZ3RoID0gbm9ybWFsaXplZFN0cmluZy5s
ZW5ndGgoKTsKLSAgICAgICAgc291cmNlVGV4dCA9IG5vcm1hbGl6ZWRTdHJpbmcuZ2V0QnVmZmVy
KCk7Ci0gICAgfQotCi0gICAgbV9ub3JtYWxpemVkQnVmZmVyID0gYWRvcHRBcnJheVB0cihuZXcg
VUNoYXJbbV9ub3JtYWxpemVkQnVmZmVyTGVuZ3RoICsgMV0pOwotICAgIG5vcm1hbGl6ZVNwYWNl
c0FuZE1pcnJvckNoYXJzKHNvdXJjZVRleHQsIG1fbm9ybWFsaXplZEJ1ZmZlci5nZXQoKSwgbV9u
b3JtYWxpemVkQnVmZmVyTGVuZ3RoLCBub3JtYWxpemVNb2RlKTsKLX0KLQotYm9vbCBIYXJmQnV6
elNoYXBlckJhc2U6OmlzV29yZEVuZCh1bnNpZ25lZCBpbmRleCkKLXsKLSAgICAvLyBUaGlzIGNv
dWxkIHJlZmVyIGEgaGlnaC1zdXJyb2dhdGUsIGJ1dCBzaG91bGQgd29yay4KLSAgICByZXR1cm4g
aW5kZXggJiYgaXNDb2RlcG9pbnRTcGFjZShtX25vcm1hbGl6ZWRCdWZmZXJbaW5kZXhdKTsKLX0K
LQotaW50IEhhcmZCdXp6U2hhcGVyQmFzZTo6ZGV0ZXJtaW5lV29yZEJyZWFrU3BhY2luZygpCi17
Ci0gICAgaW50IHdvcmRCcmVha1NwYWNpbmcgPSBtX3dvcmRTcGFjaW5nQWRqdXN0bWVudDsKLQot
ICAgIGlmIChtX3BhZGRpbmcgPiAwKSB7Ci0gICAgICAgIGludCB0b1BhZCA9IHJvdW5kZihtX3Bh
ZFBlcldvcmRCcmVhayArIG1fcGFkRXJyb3IpOwotICAgICAgICBtX3BhZEVycm9yICs9IG1fcGFk
UGVyV29yZEJyZWFrIC0gdG9QYWQ7Ci0KLSAgICAgICAgaWYgKG1fcGFkZGluZyA8IHRvUGFkKQot
ICAgICAgICAgICAgdG9QYWQgPSBtX3BhZGRpbmc7Ci0gICAgICAgIG1fcGFkZGluZyAtPSB0b1Bh
ZDsKLSAgICAgICAgd29yZEJyZWFrU3BhY2luZyArPSB0b1BhZDsKLSAgICB9Ci0gICAgcmV0dXJu
IHdvcmRCcmVha1NwYWNpbmc7Ci19Ci0KLS8vIHNldFBhZGRpbmcgc2V0cyBhIG51bWJlciBvZiBw
aXhlbHMgdG8gYmUgZGlzdHJpYnV0ZWQgYWNyb3NzIHRoZSBUZXh0UnVuLgotLy8gV2ViS2l0IHVz
ZXMgdGhpcyB0byBqdXN0aWZ5IHRleHQuCi12b2lkIEhhcmZCdXp6U2hhcGVyQmFzZTo6c2V0UGFk
ZGluZyhpbnQgcGFkZGluZykKLXsKLSAgICBtX3BhZGRpbmcgPSBwYWRkaW5nOwotICAgIG1fcGFk
RXJyb3IgPSAwOwotICAgIGlmICghbV9wYWRkaW5nKQotICAgICAgICByZXR1cm47Ci0KLSAgICAv
LyBJZiB3ZSBoYXZlIHBhZGRpbmcgdG8gZGlzdHJpYnV0ZSwgdGhlbiB3ZSB0cnkgdG8gZ2l2ZSBh
biBlcXVhbAotICAgIC8vIGFtb3VudCB0byBlYWNoIHNwYWNlLiBUaGUgbGFzdCBzcGFjZSBnZXRz
IHRoZSBzbWFsbGVyIGFtb3VudCwgaWYKLSAgICAvLyBhbnkuCi0gICAgdW5zaWduZWQgbnVtV29y
ZEVuZHMgPSAwOwotCi0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fbm9ybWFsaXplZEJ1
ZmZlckxlbmd0aDsgaSsrKSB7Ci0gICAgICAgIGlmIChpc1dvcmRFbmQoaSkpCi0gICAgICAgICAg
ICBudW1Xb3JkRW5kcysrOwotICAgIH0KLQotICAgIGlmIChudW1Xb3JkRW5kcykKLSAgICAgICAg
bV9wYWRQZXJXb3JkQnJlYWsgPSBtX3BhZGRpbmcgLyBudW1Xb3JkRW5kczsKLSAgICBlbHNlCi0g
ICAgICAgIG1fcGFkUGVyV29yZEJyZWFrID0gMDsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaGFyZmJ1enov
SGFyZkJ1enpTaGFwZXJCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9o
YXJmYnV6ei9IYXJmQnV6elNoYXBlckJhc2UuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggYmUzNjhiMmQxOGM0NzU4N2EzNTY5MmYxMTk0NTBiM2RiOWQ3NmZhNC4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9oYXJmYnV6ei9IYXJmQnV6elNoYXBlckJhc2UuaAorKysgL2Rldi9udWxsCkBA
IC0xLDgxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAq
IG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAq
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0g
KiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jaWZuZGVmIEhhcmZCdXp6U2hhcGVyQmFzZV9oCi0jZGVmaW5lIEhhcmZC
dXp6U2hhcGVyQmFzZV9oCi0KLSNpbmNsdWRlICJUZXh0UnVuLmgiCi0jaW5jbHVkZSA8d3RmL093
bkFycmF5UHRyLmg+Ci0jaW5jbHVkZSA8d3RmL3VuaWNvZGUvQ2hhcmFjdGVyTmFtZXMuaD4KLQot
bmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBGb250OwotCi1jbGFzcyBIYXJmQnV6elNoYXBl
ckJhc2UgewotcHVibGljOgotICAgIGVudW0gTm9ybWFsaXplTW9kZSB7Ci0gICAgICAgIERvTm90
Tm9ybWFsaXplTWlycm9yQ2hhcnMsCi0gICAgICAgIE5vcm1hbGl6ZU1pcnJvckNoYXJzCi0gICAg
fTsKLQotICAgIEhhcmZCdXp6U2hhcGVyQmFzZShjb25zdCBGb250KiwgY29uc3QgVGV4dFJ1biYp
OwotICAgIHZpcnR1YWwgfkhhcmZCdXp6U2hhcGVyQmFzZSgpIHsgfQotCi1wcm90ZWN0ZWQ6Ci0g
ICAgdm9pZCBzZXROb3JtYWxpemVkQnVmZmVyKE5vcm1hbGl6ZU1vZGUgPSBEb05vdE5vcm1hbGl6
ZU1pcnJvckNoYXJzKTsKLQotICAgIGJvb2wgaXNXb3JkRW5kKHVuc2lnbmVkKTsKLSAgICBpbnQg
ZGV0ZXJtaW5lV29yZEJyZWFrU3BhY2luZygpOwotICAgIC8vIHNldFBhZGRpbmcgc2V0cyBhIG51
bWJlciBvZiBwaXhlbHMgdG8gYmUgZGlzdHJpYnV0ZWQgYWNyb3NzIHRoZSBUZXh0UnVuLgotICAg
IC8vIFdlYktpdCB1c2VzIHRoaXMgdG8ganVzdGlmeSB0ZXh0LgotICAgIHZvaWQgc2V0UGFkZGlu
ZyhpbnQpOwotCi0gICAgLy8gSW4gY29tcGxleCB0ZXh0IHdvcmQtc3BhY2luZyBhZmZlY3RzIGVh
Y2ggbGluZS1icmVhaywgc3BhY2UgKFUrMDAyMCkgYW5kIG5vbi1icmVha2luZyBzcGFjZSAoVSsw
MEEwKS4KLSAgICBzdGF0aWMgYm9vbCBpc0NvZGVwb2ludFNwYWNlKFVDaGFyIGMpIHsgcmV0dXJu
IGMgPT0gJyAnIHx8IGMgPT0gbm9CcmVha1NwYWNlIHx8IGMgPT0gJ1xuJzsgfQotCi0gICAgY29u
c3QgRm9udCogbV9mb250OwotICAgIE93bkFycmF5UHRyPFVDaGFyPiBtX25vcm1hbGl6ZWRCdWZm
ZXI7Ci0gICAgdW5zaWduZWQgbV9ub3JtYWxpemVkQnVmZmVyTGVuZ3RoOwotICAgIGNvbnN0IFRl
eHRSdW4mIG1fcnVuOwotCi0gICAgaW50IG1fd29yZFNwYWNpbmdBZGp1c3RtZW50OyAvLyBkZWx0
YSBhZGp1c3RtZW50IChwaXhlbHMpIGZvciBlYWNoIHdvcmQgYnJlYWsuCi0gICAgZmxvYXQgbV9w
YWRkaW5nOyAvLyBwaXhlbHMgdG8gYmUgZGlzdHJpYnV0ZWQgb3ZlciB0aGUgbGluZSBhdCB3b3Jk
IGJyZWFrcy4KLSAgICBmbG9hdCBtX3BhZFBlcldvcmRCcmVhazsgLy8gcGl4ZWxzIHRvIGJlIGFk
ZGVkIHRvIGVhY2ggd29yZCBicmVhay4KLSAgICBmbG9hdCBtX3BhZEVycm9yOyAvLyB8bV9wYWRQ
ZXJXb3JkQnJlYWt8IG1pZ2h0IGhhdmUgYSBmcmFjdGlvbmFsIGNvbXBvbmVudC4KLSAgICAgICAg
ICAgICAgICAgICAgICAvLyBTaW5jZSB3ZSBvbmx5IGFkZCBhIHdob2xlIG51bWJlciBvZiBwYWRk
aW5nIHBpeGVscyBhdAotICAgICAgICAgICAgICAgICAgICAgIC8vIGVhY2ggd29yZCBicmVhayB3
ZSBhY2N1bXVsYXRlIGVycm9yLiBUaGlzIGlzIHRoZQotICAgICAgICAgICAgICAgICAgICAgIC8v
IG51bWJlciBvZiBwaXhlbHMgdGhhdCB3ZSBhcmUgYmVoaW5kIHNvIGZhci4KLSAgICBpbnQgbV9s
ZXR0ZXJTcGFjaW5nOyAvLyBwaXhlbHMgdG8gYmUgYWRkZWQgYWZ0ZXIgZWFjaCBnbHlwaC4KLX07
Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEhhcmZCdXp6U2hhcGVyQmFz
ZV9oCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>195016</attachid>
            <date>2013-03-25 23:41:37 -0700</date>
            <delta_ts>2013-03-26 00:54:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-112087-20130326083719.patch</filename>
            <type>text/plain</type>
            <size>23147</size>
            <attacher name="Dominik Röttsches (drott)">d-r</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ2NzYwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYWYwOGE2MTZkMGRiMjAw
MzY4Njg4MTIwMDgzYmQwYmFkYmVkYjI5Mi4uMjVlNTQzY2Y3ZDRlZjdjYjNiZjk0OTg4ZDg5YjFk
NTlhOTdhMGExNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDEzLTAzLTI1ICBEb21p
bmlrIFLDtnR0c2NoZXMgIDxkb21pbmlrLnJvdHRzY2hlc0BpbnRlbC5jb20+CisKKyAgICAgICAg
UmVtb3ZlIEhhcmZCdXp6U2hhcGVyQmFzZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTEyMDg3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTWFydGluIFJv
Ymluc29uLgorCisgICAgICAgIEZvbGRpbmcgSGFyZkJ1enpTaGFwZXJCYXNlIGludG8gSGFyZkJ1
enpTaGFwZXIgc2luY2UKKyAgICAgICAgdGhlcmUgaXMgbm8gaGFyZmJ1enotb2xkIHZzLiBoYXJm
YnV6ei1uZyBkaXN0aW5jdGlvbiBhbnltb3JlLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgbm8g
Y2hhbmdlIGluIGJlaGF2aW9yLgorCisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbTogUmVt
b3ZpbmcgSGFyZkJ1enpTaGFwZXJCYXNlLioKKyAgICAgICAgKiBQbGF0Zm9ybUVmbC5jbWFrZTog
UmVtb3ZpbmcgSGFyZkJ1enpTaGFwZXJCYXNlLioKKyAgICAgICAgKiBXZWJDb3JlLmd5cGk6IFJl
bW92aW5nIEhhcmZCdXp6U2hhcGVyQmFzZS4qCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
aGFyZmJ1enovSGFyZkJ1enpTaGFwZXIuY3BwOiBGb2xkaW5nIGJhc2UgY2xhc3MgbWVtYmVycyBh
bmQgbWV0aG9kcyBpbnRvIEhhcmZCdXp6U2hhcGVyLgorICAgICAgICAoV2ViQ29yZTo6SGFyZkJ1
enpTaGFwZXI6OkhhcmZCdXp6U2hhcGVyKToKKyAgICAgICAgKFdlYkNvcmU6Om5vcm1hbGl6ZVNw
YWNlc0FuZE1pcnJvckNoYXJzKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29y
ZTo6SGFyZkJ1enpTaGFwZXI6OnNldE5vcm1hbGl6ZWRCdWZmZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6SGFyZkJ1enpTaGFwZXI6OmlzV29yZEVuZCk6CisgICAgICAgIChXZWJDb3JlOjpIYXJmQnV6
elNoYXBlcjo6ZGV0ZXJtaW5lV29yZEJyZWFrU3BhY2luZyk6CisgICAgICAgIChXZWJDb3JlOjpI
YXJmQnV6elNoYXBlcjo6c2V0UGFkZGluZyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
aGFyZmJ1enovSGFyZkJ1enpTaGFwZXIuaDogRm9sZGluZyBiYXNlIGNsYXNzIG1lbWJlcnMgYW5k
IG1ldGhvZHMgaW50byBIYXJmQnV6elNoYXBlci4KKyAgICAgICAgKEhhcmZCdXp6U2hhcGVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkhhcmZCdXp6U2hhcGVyOjppc0NvZGVwb2ludFNwYWNlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9oYXJmYnV6ei9IYXJmQnV6elNoYXBlckJhc2UuY3Bw
OiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2hhcmZidXp6L0hhcmZCdXp6
U2hhcGVyQmFzZS5oOiBSZW1vdmVkLgorCiAyMDEzLTAzLTI1ICBBbGV4YW5kZXIgUGF2bG92ICA8
YXBhdmxvdkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogUHJvcGVybHkg
aGFuZGxlIHRoZSBydWxlIGFkZGl0aW9uIHRvIGFuIFhNTCBvciBTVkcgZG9jdW1lbnQuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYkNv
cmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCA3MmU1ZWIzYTAxMDVkMTE1ODY1ZDMwMjgwOTQ1
YWUxMmMyNDgyZjMzLi5kYjI4Y2YyMDA5N2E0MTJjYzhhZGE2MDExNTAwYmVlNTQzOGIwMzhjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTQzMjUsOCArNDMyNSw2IEBAIHdlYmNv
cmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZnJlZXR5
cGUvR2x5cGhQYWdlVHJlZU5vZGVGcmVlVHlwZS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZyZWV0eXBlL1NpbXBsZUZvbnREYXRhRnJlZVR5cGUuY3BwIFwKIAlTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9mcmVldHlwZS9VVEYxNlVDaGFyMzJJdGVyYXRv
ci5oIFwKLQlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9oYXJmYnV6ei9IYXJmQnV6
elNoYXBlckJhc2UuY3BwIFwKLQlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9oYXJm
YnV6ei9IYXJmQnV6elNoYXBlckJhc2UuaCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvaGFyZmJ1enovSGFyZkJ1enpGYWNlLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvaGFyZmJ1enovSGFyZkJ1enpGYWNlLmggXAogCVNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2hhcmZidXp6L0hhcmZCdXp6RmFjZUNhaXJvLmNwcCBcCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybUVmbC5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1Bs
YXRmb3JtRWZsLmNtYWtlCmluZGV4IGY2N2Q5YThmNmI0MzQ5YTM4NTQ5NDA2OWNhNWUxYmY2NzVh
ODZkOTYuLmNmMTY3MjI2OGRmNWVhNzY0MTU2NWE5ZjNjYWU0MWM1OTAzZDEzYWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtRWZsLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1BsYXRmb3JtRWZsLmNtYWtlCkBAIC0xMzAsNyArMTMwLDYgQEAgbGlzdChBUFBFTkQgV2ViQ29y
ZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1ZpZGVvU2lua0dTdHJl
YW1lci5jcHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvV2ViS2l0V2ViU291cmNl
R1N0cmVhbWVyLmNwcAogCi0gICAgcGxhdGZvcm0vZ3JhcGhpY3MvaGFyZmJ1enovSGFyZkJ1enpT
aGFwZXJCYXNlLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2hhcmZidXp6L0hhcmZCdXp6RmFj
ZUNhaXJvLmNwcAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL2hhcmZidXp6L0hhcmZCdXp6RmFjZS5j
cHAKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9oYXJmYnV6ei9IYXJmQnV6elNoYXBlci5jcHAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZ3lwaQppbmRleCA4YmI2NGQzNDFjN2Q0ODM4YTQ1OWU4MTdjZWZjMjdmMmMzNGFlMzcy
Li4yNTVmYjYwNDBmNGQ1M2YyNTg2Y2VjMzQ0MjI3NTFhOWU2ZWRhYWNiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5n
eXBpCkBAIC00MjI4LDggKzQyMjgsNiBAQAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNz
L2hhcmZidXp6L0hhcmZCdXp6RmFjZS5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGlj
cy9oYXJmYnV6ei9IYXJmQnV6elNoYXBlci5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dy
YXBoaWNzL2hhcmZidXp6L0hhcmZCdXp6U2hhcGVyLmgnLAotICAgICAgICAgICAgJ3BsYXRmb3Jt
L2dyYXBoaWNzL2hhcmZidXp6L0hhcmZCdXp6U2hhcGVyQmFzZS5jcHAnLAotICAgICAgICAgICAg
J3BsYXRmb3JtL2dyYXBoaWNzL2hhcmZidXp6L0hhcmZCdXp6U2hhcGVyQmFzZS5oJywKICAgICAg
ICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29sb3JNYWMubW0nLAogICAgICAgICAgICAg
J3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Db21wbGV4VGV4dENvbnRyb2xsZXIuY3BwJywKICAgICAg
ICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9tYWMvQ29tcGxleFRleHRDb250cm9sbGVyLmgnLApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaGFyZmJ1enovSGFy
ZkJ1enpTaGFwZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaGFyZmJ1
enovSGFyZkJ1enpTaGFwZXIuY3BwCmluZGV4IDUxNTY4ZmMzNDJjY2NlODBmOWMzNjg0YzhlMzEz
NWZjMzBlYTMxZDMuLjhlZDJiNGE2YTkxMGVjOGM4NmVlMzRmOWViZTYyMTllMjkwMTBiNzIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hhcmZidXp6L0hhcmZC
dXp6U2hhcGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9oYXJm
YnV6ei9IYXJmQnV6elNoYXBlci5jcHAKQEAgLTE4NCw3ICsxODQsMTQgQEAgc3RhdGljIHZvaWQg
bm9ybWFsaXplQ2hhcmFjdGVycyhjb25zdCBUZXh0UnVuJiBydW4sIFVDaGFyKiBkZXN0aW5hdGlv
biwgaW50IGxlbmcKIH0KIAogSGFyZkJ1enpTaGFwZXI6OkhhcmZCdXp6U2hhcGVyKGNvbnN0IEZv
bnQqIGZvbnQsIGNvbnN0IFRleHRSdW4mIHJ1bikKLSAgICA6IEhhcmZCdXp6U2hhcGVyQmFzZShm
b250LCBydW4pCisgICAgOiBtX2ZvbnQoZm9udCkKKyAgICAsIG1fbm9ybWFsaXplZEJ1ZmZlckxl
bmd0aCgwKQorICAgICwgbV9ydW4ocnVuKQorICAgICwgbV93b3JkU3BhY2luZ0FkanVzdG1lbnQo
Zm9udC0+d29yZFNwYWNpbmcoKSkKKyAgICAsIG1fcGFkZGluZygwKQorICAgICwgbV9wYWRQZXJX
b3JkQnJlYWsoMCkKKyAgICAsIG1fcGFkRXJyb3IoMCkKKyAgICAsIG1fbGV0dGVyU3BhY2luZyhm
b250LT5sZXR0ZXJTcGFjaW5nKCkpCiAgICAgLCBtX2Zyb21JbmRleCgwKQogICAgICwgbV90b0lu
ZGV4KG1fcnVuLmxlbmd0aCgpKQogewpAQCAtMTk5LDYgKzIwNiwxMjkgQEAgSGFyZkJ1enpTaGFw
ZXI6On5IYXJmQnV6elNoYXBlcigpCiB7CiB9CiAKK3N0YXRpYyB2b2lkIG5vcm1hbGl6ZVNwYWNl
c0FuZE1pcnJvckNoYXJzKGNvbnN0IFVDaGFyKiBzb3VyY2UsIFVDaGFyKiBkZXN0aW5hdGlvbiwg
aW50IGxlbmd0aCwgSGFyZkJ1enpTaGFwZXI6Ok5vcm1hbGl6ZU1vZGUgbm9ybWFsaXplTW9kZSkK
K3sKKyAgICBpbnQgcG9zaXRpb24gPSAwOworICAgIGJvb2wgZXJyb3IgPSBmYWxzZTsKKyAgICAv
LyBJdGVyYXRlIGNoYXJhY3RlcnMgaW4gc291cmNlIGFuZCBtaXJyb3IgY2hhcmFjdGVyIGlmIG5l
ZWRlZC4KKyAgICB3aGlsZSAocG9zaXRpb24gPCBsZW5ndGgpIHsKKyAgICAgICAgVUNoYXIzMiBj
aGFyYWN0ZXI7CisgICAgICAgIGludCBuZXh0UG9zaXRpb24gPSBwb3NpdGlvbjsKKyAgICAgICAg
VTE2X05FWFQoc291cmNlLCBuZXh0UG9zaXRpb24sIGxlbmd0aCwgY2hhcmFjdGVyKTsKKyAgICAg
ICAgLy8gRG9uJ3Qgbm9ybWFsaXplIHRhYnMgYXMgdGhleSBhcmUgbm90IHRyZWF0ZWQgYXMgc3Bh
Y2VzIGZvciB3b3JkLWVuZAorICAgICAgICBpZiAoRm9udDo6dHJlYXRBc1NwYWNlKGNoYXJhY3Rl
cikgJiYgY2hhcmFjdGVyICE9ICdcdCcpCisgICAgICAgICAgICBjaGFyYWN0ZXIgPSAnICc7Cisg
ICAgICAgIGVsc2UgaWYgKEZvbnQ6OnRyZWF0QXNaZXJvV2lkdGhTcGFjZShjaGFyYWN0ZXIpKQor
ICAgICAgICAgICAgY2hhcmFjdGVyID0gemVyb1dpZHRoU3BhY2U7CisgICAgICAgIGVsc2UgaWYg
KG5vcm1hbGl6ZU1vZGUgPT0gSGFyZkJ1enpTaGFwZXI6Ok5vcm1hbGl6ZU1pcnJvckNoYXJzKQor
ICAgICAgICAgICAgY2hhcmFjdGVyID0gdV9jaGFyTWlycm9yKGNoYXJhY3Rlcik7CisgICAgICAg
IFUxNl9BUFBFTkQoZGVzdGluYXRpb24sIHBvc2l0aW9uLCBsZW5ndGgsIGNoYXJhY3RlciwgZXJy
b3IpOworICAgICAgICBBU1NFUlRfVU5VU0VEKGVycm9yLCAhZXJyb3IpOworICAgICAgICBwb3Np
dGlvbiA9IG5leHRQb3NpdGlvbjsKKyAgICB9Cit9CisKK3ZvaWQgSGFyZkJ1enpTaGFwZXI6OnNl
dE5vcm1hbGl6ZWRCdWZmZXIoTm9ybWFsaXplTW9kZSBub3JtYWxpemVNb2RlKQoreworICAgIC8v
IE5vcm1hbGl6ZSB0aGUgdGV4dCBydW4gaW4gdGhyZWUgd2F5czoKKyAgICAvLyAxKSBDb252ZXJ0
IHRoZSB8b3JpZ2luYWxSdW58IHRvIE5GQyBub3JtYWxpemVkIGZvcm0gaWYgY29tYmluaW5nIGRp
YWNyaXRpY2FsIG1hcmtzCisgICAgLy8gKFUrMDMwMC4uKSBhcmUgdXNlZCBpbiB0aGUgcnVuLiBU
aGlzIGNvbnZlcnNpb24gaXMgbmVjZXNzYXJ5IHNpbmNlIG1vc3QgT3BlblR5cGUKKyAgICAvLyBm
b250cyAoZS5nLiwgQXJpYWwpIGRvbid0IGhhdmUgc3Vic3RpdHV0aW9uIHJ1bGVzIGZvciB0aGUg
ZGlhY3JpdGljYWwgbWFya3MgaW4KKyAgICAvLyB0aGVpciBHU1VCIHRhYmxlcy4KKyAgICAvLwor
ICAgIC8vIE5vdGUgdGhhdCB3ZSBkb24ndCB1c2UgdGhlIGljdTo6Tm9ybWFsaXplcjo6aXNOb3Jt
YWxpemVkKFVOT1JNX05GQykgQVBJIGhlcmUgc2luY2UKKyAgICAvLyB0aGUgQVBJIHJldHVybnMg
RkFMU0UgKD0gbm90IG5vcm1hbGl6ZWQpIGZvciBjb21wbGV4IHJ1bnMgdGhhdCBkb24ndCByZXF1
aXJlIE5GQworICAgIC8vIG5vcm1hbGl6YXRpb24gKGUuZy4sIEFyYWJpYyB0ZXh0KS4gVW5sZXNz
IHRoZSBydW4gY29udGFpbnMgdGhlIGRpYWNyaXRpY2FsIG1hcmtzLAorICAgIC8vIEhhcmZCdXp6
IHdpbGwgZG8gdGhlIHNhbWUgdGhpbmcgZm9yIHVzIHVzaW5nIHRoZSBHU1VCIHRhYmxlLgorICAg
IC8vIDIpIENvbnZlcnQgc3BhY2luZyBjaGFyYWN0ZXJzIGludG8gcGxhaW4gc3BhY2VzLCBhcyBz
b21lIGZvbnRzIHdpbGwgcHJvdmlkZSBnbHlwaHMKKyAgICAvLyBmb3IgY2hhcmFjdGVycyBsaWtl
ICdcbicgb3RoZXJ3aXNlLgorICAgIC8vIDMpIENvbnZlcnQgbWlycm9yZWQgY2hhcmFjdGVycyBz
dWNoIGFzIHBhcmVudGhlc2lzIGZvciBydGwgdGV4dC4KKworICAgIC8vIENvbnZlcnQgdG8gTkZD
IGZvcm0gaWYgdGhlIHRleHQgaGFzIGRpYWNyaXRpY2FsIG1hcmtzLgorICAgIGljdTo6VW5pY29k
ZVN0cmluZyBub3JtYWxpemVkU3RyaW5nOworICAgIFVFcnJvckNvZGUgZXJyb3IgPSBVX1pFUk9f
RVJST1I7CisKKyAgICBjb25zdCBVQ2hhciogcnVuQ2hhcmFjdGVyczsKKyAgICBTdHJpbmcgc3Ry
aW5nRm9yOEJpdFJ1bjsKKyAgICBpZiAobV9ydW4uaXM4Qml0KCkpIHsKKyAgICAgICAgc3RyaW5n
Rm9yOEJpdFJ1biA9IFN0cmluZzo6bWFrZTE2Qml0RnJvbThCaXRTb3VyY2UobV9ydW4uY2hhcmFj
dGVyczgoKSwgbV9ydW4ubGVuZ3RoKCkpOworICAgICAgICBydW5DaGFyYWN0ZXJzID0gc3RyaW5n
Rm9yOEJpdFJ1bi5jaGFyYWN0ZXJzMTYoKTsKKyAgICB9IGVsc2UKKyAgICAgICAgcnVuQ2hhcmFj
dGVycyA9IG1fcnVuLmNoYXJhY3RlcnMxNigpOworCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBt
X3J1bi5sZW5ndGgoKTsgKytpKSB7CisgICAgICAgIFVDaGFyIGNoID0gcnVuQ2hhcmFjdGVyc1tp
XTsKKyAgICAgICAgaWYgKDo6dWJsb2NrX2dldENvZGUoY2gpID09IFVCTE9DS19DT01CSU5JTkdf
RElBQ1JJVElDQUxfTUFSS1MpIHsKKyAgICAgICAgICAgIGljdTo6Tm9ybWFsaXplcjo6bm9ybWFs
aXplKGljdTo6VW5pY29kZVN0cmluZyhydW5DaGFyYWN0ZXJzLAorICAgICAgICAgICAgICAgIG1f
cnVuLmxlbmd0aCgpKSwgVU5PUk1fTkZDLCAwIC8qIG5vIG9wdGlvbnMgKi8sCisgICAgICAgICAg
ICAgICAgbm9ybWFsaXplZFN0cmluZywgZXJyb3IpOworICAgICAgICAgICAgaWYgKFVfRkFJTFVS
RShlcnJvcikpCisgICAgICAgICAgICAgICAgbm9ybWFsaXplZFN0cmluZy5yZW1vdmUoKTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorCisgICAgY29uc3QgVUNoYXIqIHNv
dXJjZVRleHQ7CisgICAgaWYgKG5vcm1hbGl6ZWRTdHJpbmcuaXNFbXB0eSgpKSB7CisgICAgICAg
IG1fbm9ybWFsaXplZEJ1ZmZlckxlbmd0aCA9IG1fcnVuLmxlbmd0aCgpOworICAgICAgICBzb3Vy
Y2VUZXh0ID0gcnVuQ2hhcmFjdGVyczsKKyAgICB9IGVsc2UgeworICAgICAgICBtX25vcm1hbGl6
ZWRCdWZmZXJMZW5ndGggPSBub3JtYWxpemVkU3RyaW5nLmxlbmd0aCgpOworICAgICAgICBzb3Vy
Y2VUZXh0ID0gbm9ybWFsaXplZFN0cmluZy5nZXRCdWZmZXIoKTsKKyAgICB9CisKKyAgICBtX25v
cm1hbGl6ZWRCdWZmZXIgPSBhZG9wdEFycmF5UHRyKG5ldyBVQ2hhclttX25vcm1hbGl6ZWRCdWZm
ZXJMZW5ndGggKyAxXSk7CisgICAgbm9ybWFsaXplU3BhY2VzQW5kTWlycm9yQ2hhcnMoc291cmNl
VGV4dCwgbV9ub3JtYWxpemVkQnVmZmVyLmdldCgpLCBtX25vcm1hbGl6ZWRCdWZmZXJMZW5ndGgs
IG5vcm1hbGl6ZU1vZGUpOworfQorCitib29sIEhhcmZCdXp6U2hhcGVyOjppc1dvcmRFbmQodW5z
aWduZWQgaW5kZXgpCit7CisgICAgLy8gVGhpcyBjb3VsZCByZWZlciBhIGhpZ2gtc3Vycm9nYXRl
LCBidXQgc2hvdWxkIHdvcmsuCisgICAgcmV0dXJuIGluZGV4ICYmIGlzQ29kZXBvaW50U3BhY2Uo
bV9ub3JtYWxpemVkQnVmZmVyW2luZGV4XSk7Cit9CisKK2ludCBIYXJmQnV6elNoYXBlcjo6ZGV0
ZXJtaW5lV29yZEJyZWFrU3BhY2luZygpCit7CisgICAgaW50IHdvcmRCcmVha1NwYWNpbmcgPSBt
X3dvcmRTcGFjaW5nQWRqdXN0bWVudDsKKworICAgIGlmIChtX3BhZGRpbmcgPiAwKSB7CisgICAg
ICAgIGludCB0b1BhZCA9IHJvdW5kZihtX3BhZFBlcldvcmRCcmVhayArIG1fcGFkRXJyb3IpOwor
ICAgICAgICBtX3BhZEVycm9yICs9IG1fcGFkUGVyV29yZEJyZWFrIC0gdG9QYWQ7CisKKyAgICAg
ICAgaWYgKG1fcGFkZGluZyA8IHRvUGFkKQorICAgICAgICAgICAgdG9QYWQgPSBtX3BhZGRpbmc7
CisgICAgICAgIG1fcGFkZGluZyAtPSB0b1BhZDsKKyAgICAgICAgd29yZEJyZWFrU3BhY2luZyAr
PSB0b1BhZDsKKyAgICB9CisgICAgcmV0dXJuIHdvcmRCcmVha1NwYWNpbmc7Cit9CisKKy8vIHNl
dFBhZGRpbmcgc2V0cyBhIG51bWJlciBvZiBwaXhlbHMgdG8gYmUgZGlzdHJpYnV0ZWQgYWNyb3Nz
IHRoZSBUZXh0UnVuLgorLy8gV2ViS2l0IHVzZXMgdGhpcyB0byBqdXN0aWZ5IHRleHQuCit2b2lk
IEhhcmZCdXp6U2hhcGVyOjpzZXRQYWRkaW5nKGludCBwYWRkaW5nKQoreworICAgIG1fcGFkZGlu
ZyA9IHBhZGRpbmc7CisgICAgbV9wYWRFcnJvciA9IDA7CisgICAgaWYgKCFtX3BhZGRpbmcpCisg
ICAgICAgIHJldHVybjsKKworICAgIC8vIElmIHdlIGhhdmUgcGFkZGluZyB0byBkaXN0cmlidXRl
LCB0aGVuIHdlIHRyeSB0byBnaXZlIGFuIGVxdWFsCisgICAgLy8gYW1vdW50IHRvIGVhY2ggc3Bh
Y2UuIFRoZSBsYXN0IHNwYWNlIGdldHMgdGhlIHNtYWxsZXIgYW1vdW50LCBpZgorICAgIC8vIGFu
eS4KKyAgICB1bnNpZ25lZCBudW1Xb3JkRW5kcyA9IDA7CisKKyAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgbV9ub3JtYWxpemVkQnVmZmVyTGVuZ3RoOyBpKyspIHsKKyAgICAgICAgaWYgKGlz
V29yZEVuZChpKSkKKyAgICAgICAgICAgIG51bVdvcmRFbmRzKys7CisgICAgfQorCisgICAgaWYg
KG51bVdvcmRFbmRzKQorICAgICAgICBtX3BhZFBlcldvcmRCcmVhayA9IG1fcGFkZGluZyAvIG51
bVdvcmRFbmRzOworICAgIGVsc2UKKyAgICAgICAgbV9wYWRQZXJXb3JkQnJlYWsgPSAwOworfQor
CisKIHZvaWQgSGFyZkJ1enpTaGFwZXI6OnNldERyYXdSYW5nZShpbnQgZnJvbSwgaW50IHRvKQog
ewogICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGZyb20gPj0gMCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9oYXJmYnV6ei9IYXJmQnV6
elNoYXBlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaGFyZmJ1enovSGFy
ZkJ1enpTaGFwZXIuaAppbmRleCBjZWZhZWUzZjBkMTM1NWI0ZDM4MjI1Yzg5N2ZjYTc1MGJhNWQ4
YzQxLi41YTNkNGZiZGM0Mzk1ZTBhOTI4ODI3MzQ1ODg5NGU3ZDViYTMwMjk1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9oYXJmYnV6ei9IYXJmQnV6elNoYXBl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hhcmZidXp6L0hhcmZC
dXp6U2hhcGVyLmgKQEAgLTMzLDIxICszMywyNyBAQAogCiAjaW5jbHVkZSAiRmxvYXRQb2ludC5o
IgogI2luY2x1ZGUgIkdseXBoQnVmZmVyLmgiCi0jaW5jbHVkZSAiSGFyZkJ1enpTaGFwZXJCYXNl
LmgiCiAjaW5jbHVkZSAiVGV4dFJ1bi5oIgogI2luY2x1ZGUgImhiLmgiCiAjaW5jbHVkZSA8d3Rm
L0hhc2hTZXQuaD4KKyNpbmNsdWRlIDx3dGYvT3duQXJyYXlQdHIuaD4KICNpbmNsdWRlIDx3dGYv
T3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+CisjaW5jbHVkZSA8d3RmL3VuaWNvZGUvQ2hhcmFjdGVyTmFtZXMuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBGb250OwogY2xhc3MgU2ltcGxlRm9udERhdGE7CiAKLWNs
YXNzIEhhcmZCdXp6U2hhcGVyIDogcHVibGljIEhhcmZCdXp6U2hhcGVyQmFzZSB7CitjbGFzcyBI
YXJmQnV6elNoYXBlciB7CiBwdWJsaWM6CisgICAgZW51bSBOb3JtYWxpemVNb2RlIHsKKyAgICAg
ICAgRG9Ob3ROb3JtYWxpemVNaXJyb3JDaGFycywKKyAgICAgICAgTm9ybWFsaXplTWlycm9yQ2hh
cnMKKyAgICB9OworCiAgICAgSGFyZkJ1enpTaGFwZXIoY29uc3QgRm9udCosIGNvbnN0IFRleHRS
dW4mKTsKICAgICB2aXJ0dWFsIH5IYXJmQnV6elNoYXBlcigpOwogCkBAIC0xMDEsNiArMTA3LDE3
IEBAIHByaXZhdGU6CiAgICAgICAgIGZsb2F0IG1fd2lkdGg7CiAgICAgfTsKIAorICAgIHZvaWQg
c2V0Tm9ybWFsaXplZEJ1ZmZlcihOb3JtYWxpemVNb2RlID0gRG9Ob3ROb3JtYWxpemVNaXJyb3JD
aGFycyk7CisKKyAgICBib29sIGlzV29yZEVuZCh1bnNpZ25lZCk7CisgICAgaW50IGRldGVybWlu
ZVdvcmRCcmVha1NwYWNpbmcoKTsKKyAgICAvLyBzZXRQYWRkaW5nIHNldHMgYSBudW1iZXIgb2Yg
cGl4ZWxzIHRvIGJlIGRpc3RyaWJ1dGVkIGFjcm9zcyB0aGUgVGV4dFJ1bi4KKyAgICAvLyBXZWJL
aXQgdXNlcyB0aGlzIHRvIGp1c3RpZnkgdGV4dC4KKyAgICB2b2lkIHNldFBhZGRpbmcoaW50KTsK
KworICAgIC8vIEluIGNvbXBsZXggdGV4dCB3b3JkLXNwYWNpbmcgYWZmZWN0cyBlYWNoIGxpbmUt
YnJlYWssIHNwYWNlIChVKzAwMjApIGFuZCBub24tYnJlYWtpbmcgc3BhY2UgKFUrMDBBMCkuCisg
ICAgc3RhdGljIGJvb2wgaXNDb2RlcG9pbnRTcGFjZShVQ2hhciBjKSB7IHJldHVybiBjID09ICcg
JyB8fCBjID09IG5vQnJlYWtTcGFjZSB8fCBjID09ICdcbic7IH0KKwogICAgIHZvaWQgc2V0Rm9u
dEZlYXR1cmVzKCk7CiAKICAgICBib29sIGNvbGxlY3RIYXJmQnV6elJ1bnMoKTsKQEAgLTExMSw2
ICsxMjgsMTcgQEAgcHJpdmF0ZToKIAogICAgIEdseXBoQnVmZmVyQWR2YW5jZSBjcmVhdGVHbHlw
aEJ1ZmZlckFkdmFuY2UoZmxvYXQsIGZsb2F0KTsKIAorICAgIGNvbnN0IEZvbnQqIG1fZm9udDsK
KyAgICBPd25BcnJheVB0cjxVQ2hhcj4gbV9ub3JtYWxpemVkQnVmZmVyOworICAgIHVuc2lnbmVk
IG1fbm9ybWFsaXplZEJ1ZmZlckxlbmd0aDsKKyAgICBjb25zdCBUZXh0UnVuJiBtX3J1bjsKKwor
ICAgIGludCBtX3dvcmRTcGFjaW5nQWRqdXN0bWVudDsgLy8gRGVsdGEgYWRqdXN0bWVudCAocGl4
ZWxzKSBmb3IgZWFjaCB3b3JkIGJyZWFrLgorICAgIGZsb2F0IG1fcGFkZGluZzsgLy8gUGl4ZWxz
IHRvIGJlIGRpc3RyaWJ1dGVkIG92ZXIgdGhlIGxpbmUgYXQgd29yZCBicmVha3MuCisgICAgZmxv
YXQgbV9wYWRQZXJXb3JkQnJlYWs7IC8vIFBpeGVscyB0byBiZSBhZGRlZCB0byBlYWNoIHdvcmQg
YnJlYWsuCisgICAgZmxvYXQgbV9wYWRFcnJvcjsgLy8gbV9wYWRQZXJXb3JkQnJlYWsgbWlnaHQg
aGF2ZSBhIGZyYWN0aW9uYWwgY29tcG9uZW50LiBTaW5jZSB3ZSBvbmx5IGFkZCBhIHdob2xlIG51
bWJlciBvZiBwYWRkaW5nIHBpeGVscyBhdCBlYWNoIHdvcmQgYnJlYWsgd2UgYWNjdW11bGF0ZSBl
cnJvci4gVGhpcyBpcyB0aGUgbnVtYmVyIG9mIHBpeGVscyB0aGF0IHdlIGFyZSBiZWhpbmQgc28g
ZmFyLgorICAgIGludCBtX2xldHRlclNwYWNpbmc7IC8vIFBpeGVscyB0byBiZSBhZGRlZCBhZnRl
ciBlYWNoIGdseXBoLgorCiAgICAgVmVjdG9yPGhiX2ZlYXR1cmVfdCwgND4gbV9mZWF0dXJlczsK
ICAgICBWZWN0b3I8T3duUHRyPEhhcmZCdXp6UnVuPiwgMTY+IG1faGFyZkJ1enpSdW5zOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9oYXJmYnV6ei9IYXJm
QnV6elNoYXBlckJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvaGFy
ZmJ1enovSGFyZkJ1enpTaGFwZXJCYXNlLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggYzEzZGM5ZjFkNjhkNjI3YmIwZWM4Njc0MTY4MmNiNWYzZTA0YjdmMS4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9oYXJmYnV6ei9IYXJmQnV6elNoYXBlckJhc2UuY3BwCisrKyAvZGV2L251bGwK
QEAgLTEsMTc3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKGMpIDIwMTIgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
LSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
LSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICog
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
Ci0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpbmNsdWRlICJIYXJmQnV6
elNoYXBlckJhc2UuaCIKLQotI2luY2x1ZGUgIkZvbnQuaCIKLSNpbmNsdWRlIDx1bmljb2RlL25v
cm1senIuaD4KLSNpbmNsdWRlIDx1bmljb2RlL3VjaGFyLmg+Ci0jaW5jbHVkZSA8d3RmL01hdGhF
eHRyYXMuaD4KLSNpbmNsdWRlIDx3dGYvdW5pY29kZS9Vbmljb2RlLmg+Ci0KLW5hbWVzcGFjZSBX
ZWJDb3JlIHsKLQotSGFyZkJ1enpTaGFwZXJCYXNlOjpIYXJmQnV6elNoYXBlckJhc2UoY29uc3Qg
Rm9udCogZm9udCwgY29uc3QgVGV4dFJ1biYgcnVuKQotICAgIDogbV9mb250KGZvbnQpCi0gICAg
LCBtX25vcm1hbGl6ZWRCdWZmZXJMZW5ndGgoMCkKLSAgICAsIG1fcnVuKHJ1bikKLSAgICAsIG1f
d29yZFNwYWNpbmdBZGp1c3RtZW50KGZvbnQtPndvcmRTcGFjaW5nKCkpCi0gICAgLCBtX3BhZGRp
bmcoMCkKLSAgICAsIG1fcGFkUGVyV29yZEJyZWFrKDApCi0gICAgLCBtX3BhZEVycm9yKDApCi0g
ICAgLCBtX2xldHRlclNwYWNpbmcoZm9udC0+bGV0dGVyU3BhY2luZygpKQotewotfQotCi1zdGF0
aWMgdm9pZCBub3JtYWxpemVTcGFjZXNBbmRNaXJyb3JDaGFycyhjb25zdCBVQ2hhciogc291cmNl
LCBVQ2hhciogZGVzdGluYXRpb24sIGludCBsZW5ndGgsIEhhcmZCdXp6U2hhcGVyQmFzZTo6Tm9y
bWFsaXplTW9kZSBub3JtYWxpemVNb2RlKQotewotICAgIGludCBwb3NpdGlvbiA9IDA7Ci0gICAg
Ym9vbCBlcnJvciA9IGZhbHNlOwotICAgIC8vIEl0ZXJhdGUgY2hhcmFjdGVycyBpbiBzb3VyY2Ug
YW5kIG1pcnJvciBjaGFyYWN0ZXIgaWYgbmVlZGVkLgotICAgIHdoaWxlIChwb3NpdGlvbiA8IGxl
bmd0aCkgewotICAgICAgICBVQ2hhcjMyIGNoYXJhY3RlcjsKLSAgICAgICAgaW50IG5leHRQb3Np
dGlvbiA9IHBvc2l0aW9uOwotICAgICAgICBVMTZfTkVYVChzb3VyY2UsIG5leHRQb3NpdGlvbiwg
bGVuZ3RoLCBjaGFyYWN0ZXIpOwotICAgICAgICAvLyBEb24ndCBub3JtYWxpemUgdGFicyBhcyB0
aGV5IGFyZSBub3QgdHJlYXRlZCBhcyBzcGFjZXMgZm9yIHdvcmQtZW5kCi0gICAgICAgIGlmIChG
b250Ojp0cmVhdEFzU3BhY2UoY2hhcmFjdGVyKSAmJiBjaGFyYWN0ZXIgIT0gJ1x0JykKLSAgICAg
ICAgICAgIGNoYXJhY3RlciA9ICcgJzsKLSAgICAgICAgZWxzZSBpZiAoRm9udDo6dHJlYXRBc1pl
cm9XaWR0aFNwYWNlKGNoYXJhY3RlcikpCi0gICAgICAgICAgICBjaGFyYWN0ZXIgPSB6ZXJvV2lk
dGhTcGFjZTsKLSAgICAgICAgZWxzZSBpZiAobm9ybWFsaXplTW9kZSA9PSBIYXJmQnV6elNoYXBl
ckJhc2U6Ok5vcm1hbGl6ZU1pcnJvckNoYXJzKQotICAgICAgICAgICAgY2hhcmFjdGVyID0gdV9j
aGFyTWlycm9yKGNoYXJhY3Rlcik7Ci0gICAgICAgIFUxNl9BUFBFTkQoZGVzdGluYXRpb24sIHBv
c2l0aW9uLCBsZW5ndGgsIGNoYXJhY3RlciwgZXJyb3IpOwotICAgICAgICBBU1NFUlRfVU5VU0VE
KGVycm9yLCAhZXJyb3IpOwotICAgICAgICBwb3NpdGlvbiA9IG5leHRQb3NpdGlvbjsKLSAgICB9
Ci19Ci0KLXZvaWQgSGFyZkJ1enpTaGFwZXJCYXNlOjpzZXROb3JtYWxpemVkQnVmZmVyKE5vcm1h
bGl6ZU1vZGUgbm9ybWFsaXplTW9kZSkKLXsKLSAgICAvLyBOb3JtYWxpemUgdGhlIHRleHQgcnVu
IGluIHRocmVlIHdheXM6Ci0gICAgLy8gMSkgQ29udmVydCB0aGUgfG9yaWdpbmFsUnVufCB0byBO
RkMgbm9ybWFsaXplZCBmb3JtIGlmIGNvbWJpbmluZyBkaWFjcml0aWNhbCBtYXJrcwotICAgIC8v
IChVKzAzMDAuLikgYXJlIHVzZWQgaW4gdGhlIHJ1bi4gVGhpcyBjb252ZXJzaW9uIGlzIG5lY2Vz
c2FyeSBzaW5jZSBtb3N0IE9wZW5UeXBlCi0gICAgLy8gZm9udHMgKGUuZy4sIEFyaWFsKSBkb24n
dCBoYXZlIHN1YnN0aXR1dGlvbiBydWxlcyBmb3IgdGhlIGRpYWNyaXRpY2FsIG1hcmtzIGluCi0g
ICAgLy8gdGhlaXIgR1NVQiB0YWJsZXMuCi0gICAgLy8KLSAgICAvLyBOb3RlIHRoYXQgd2UgZG9u
J3QgdXNlIHRoZSBpY3U6Ok5vcm1hbGl6ZXI6OmlzTm9ybWFsaXplZChVTk9STV9ORkMpIEFQSSBo
ZXJlIHNpbmNlCi0gICAgLy8gdGhlIEFQSSByZXR1cm5zIEZBTFNFICg9IG5vdCBub3JtYWxpemVk
KSBmb3IgY29tcGxleCBydW5zIHRoYXQgZG9uJ3QgcmVxdWlyZSBORkMKLSAgICAvLyBub3JtYWxp
emF0aW9uIChlLmcuLCBBcmFiaWMgdGV4dCkuIFVubGVzcyB0aGUgcnVuIGNvbnRhaW5zIHRoZSBk
aWFjcml0aWNhbCBtYXJrcywKLSAgICAvLyBIYXJmQnV6eiB3aWxsIGRvIHRoZSBzYW1lIHRoaW5n
IGZvciB1cyB1c2luZyB0aGUgR1NVQiB0YWJsZS4KLSAgICAvLyAyKSBDb252ZXJ0IHNwYWNpbmcg
Y2hhcmFjdGVycyBpbnRvIHBsYWluIHNwYWNlcywgYXMgc29tZSBmb250cyB3aWxsIHByb3ZpZGUg
Z2x5cGhzCi0gICAgLy8gZm9yIGNoYXJhY3RlcnMgbGlrZSAnXG4nIG90aGVyd2lzZS4KLSAgICAv
LyAzKSBDb252ZXJ0IG1pcnJvcmVkIGNoYXJhY3RlcnMgc3VjaCBhcyBwYXJlbnRoZXNpcyBmb3Ig
cnRsIHRleHQuCi0KLSAgICAvLyBDb252ZXJ0IHRvIE5GQyBmb3JtIGlmIHRoZSB0ZXh0IGhhcyBk
aWFjcml0aWNhbCBtYXJrcy4KLSAgICBpY3U6OlVuaWNvZGVTdHJpbmcgbm9ybWFsaXplZFN0cmlu
ZzsKLSAgICBVRXJyb3JDb2RlIGVycm9yID0gVV9aRVJPX0VSUk9SOwotCi0gICAgY29uc3QgVUNo
YXIqIHJ1bkNoYXJhY3RlcnM7Ci0gICAgU3RyaW5nIHN0cmluZ0ZvcjhCaXRSdW47Ci0gICAgaWYg
KG1fcnVuLmlzOEJpdCgpKSB7Ci0gICAgICAgIHN0cmluZ0ZvcjhCaXRSdW4gPSBTdHJpbmc6Om1h
a2UxNkJpdEZyb204Qml0U291cmNlKG1fcnVuLmNoYXJhY3RlcnM4KCksIG1fcnVuLmxlbmd0aCgp
KTsKLSAgICAgICAgcnVuQ2hhcmFjdGVycyA9IHN0cmluZ0ZvcjhCaXRSdW4uY2hhcmFjdGVyczE2
KCk7Ci0gICAgfSBlbHNlCi0gICAgICAgIHJ1bkNoYXJhY3RlcnMgPSBtX3J1bi5jaGFyYWN0ZXJz
MTYoKTsKLQotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbV9ydW4ubGVuZ3RoKCk7ICsraSkgewot
ICAgICAgICBVQ2hhciBjaCA9IHJ1bkNoYXJhY3RlcnNbaV07Ci0gICAgICAgIGlmICg6OnVibG9j
a19nZXRDb2RlKGNoKSA9PSBVQkxPQ0tfQ09NQklOSU5HX0RJQUNSSVRJQ0FMX01BUktTKSB7Ci0g
ICAgICAgICAgICBpY3U6Ok5vcm1hbGl6ZXI6Om5vcm1hbGl6ZShpY3U6OlVuaWNvZGVTdHJpbmco
cnVuQ2hhcmFjdGVycywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1f
cnVuLmxlbmd0aCgpKSwgVU5PUk1fTkZDLCAwIC8qIG5vIG9wdGlvbnMgKi8sCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub3JtYWxpemVkU3RyaW5nLCBlcnJvcik7Ci0g
ICAgICAgICAgICBpZiAoVV9GQUlMVVJFKGVycm9yKSkKLSAgICAgICAgICAgICAgICBub3JtYWxp
emVkU3RyaW5nLnJlbW92ZSgpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9
Ci0KLSAgICBjb25zdCBVQ2hhciogc291cmNlVGV4dDsKLSAgICBpZiAobm9ybWFsaXplZFN0cmlu
Zy5pc0VtcHR5KCkpIHsKLSAgICAgICAgbV9ub3JtYWxpemVkQnVmZmVyTGVuZ3RoID0gbV9ydW4u
bGVuZ3RoKCk7Ci0gICAgICAgIHNvdXJjZVRleHQgPSBydW5DaGFyYWN0ZXJzOwotICAgIH0gZWxz
ZSB7Ci0gICAgICAgIG1fbm9ybWFsaXplZEJ1ZmZlckxlbmd0aCA9IG5vcm1hbGl6ZWRTdHJpbmcu
bGVuZ3RoKCk7Ci0gICAgICAgIHNvdXJjZVRleHQgPSBub3JtYWxpemVkU3RyaW5nLmdldEJ1ZmZl
cigpOwotICAgIH0KLQotICAgIG1fbm9ybWFsaXplZEJ1ZmZlciA9IGFkb3B0QXJyYXlQdHIobmV3
IFVDaGFyW21fbm9ybWFsaXplZEJ1ZmZlckxlbmd0aCArIDFdKTsKLSAgICBub3JtYWxpemVTcGFj
ZXNBbmRNaXJyb3JDaGFycyhzb3VyY2VUZXh0LCBtX25vcm1hbGl6ZWRCdWZmZXIuZ2V0KCksIG1f
bm9ybWFsaXplZEJ1ZmZlckxlbmd0aCwgbm9ybWFsaXplTW9kZSk7Ci19Ci0KLWJvb2wgSGFyZkJ1
enpTaGFwZXJCYXNlOjppc1dvcmRFbmQodW5zaWduZWQgaW5kZXgpCi17Ci0gICAgLy8gVGhpcyBj
b3VsZCByZWZlciBhIGhpZ2gtc3Vycm9nYXRlLCBidXQgc2hvdWxkIHdvcmsuCi0gICAgcmV0dXJu
IGluZGV4ICYmIGlzQ29kZXBvaW50U3BhY2UobV9ub3JtYWxpemVkQnVmZmVyW2luZGV4XSk7Ci19
Ci0KLWludCBIYXJmQnV6elNoYXBlckJhc2U6OmRldGVybWluZVdvcmRCcmVha1NwYWNpbmcoKQot
ewotICAgIGludCB3b3JkQnJlYWtTcGFjaW5nID0gbV93b3JkU3BhY2luZ0FkanVzdG1lbnQ7Ci0K
LSAgICBpZiAobV9wYWRkaW5nID4gMCkgewotICAgICAgICBpbnQgdG9QYWQgPSByb3VuZGYobV9w
YWRQZXJXb3JkQnJlYWsgKyBtX3BhZEVycm9yKTsKLSAgICAgICAgbV9wYWRFcnJvciArPSBtX3Bh
ZFBlcldvcmRCcmVhayAtIHRvUGFkOwotCi0gICAgICAgIGlmIChtX3BhZGRpbmcgPCB0b1BhZCkK
LSAgICAgICAgICAgIHRvUGFkID0gbV9wYWRkaW5nOwotICAgICAgICBtX3BhZGRpbmcgLT0gdG9Q
YWQ7Ci0gICAgICAgIHdvcmRCcmVha1NwYWNpbmcgKz0gdG9QYWQ7Ci0gICAgfQotICAgIHJldHVy
biB3b3JkQnJlYWtTcGFjaW5nOwotfQotCi0vLyBzZXRQYWRkaW5nIHNldHMgYSBudW1iZXIgb2Yg
cGl4ZWxzIHRvIGJlIGRpc3RyaWJ1dGVkIGFjcm9zcyB0aGUgVGV4dFJ1bi4KLS8vIFdlYktpdCB1
c2VzIHRoaXMgdG8ganVzdGlmeSB0ZXh0Lgotdm9pZCBIYXJmQnV6elNoYXBlckJhc2U6OnNldFBh
ZGRpbmcoaW50IHBhZGRpbmcpCi17Ci0gICAgbV9wYWRkaW5nID0gcGFkZGluZzsKLSAgICBtX3Bh
ZEVycm9yID0gMDsKLSAgICBpZiAoIW1fcGFkZGluZykKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
Ly8gSWYgd2UgaGF2ZSBwYWRkaW5nIHRvIGRpc3RyaWJ1dGUsIHRoZW4gd2UgdHJ5IHRvIGdpdmUg
YW4gZXF1YWwKLSAgICAvLyBhbW91bnQgdG8gZWFjaCBzcGFjZS4gVGhlIGxhc3Qgc3BhY2UgZ2V0
cyB0aGUgc21hbGxlciBhbW91bnQsIGlmCi0gICAgLy8gYW55LgotICAgIHVuc2lnbmVkIG51bVdv
cmRFbmRzID0gMDsKLQotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX25vcm1hbGl6ZWRC
dWZmZXJMZW5ndGg7IGkrKykgewotICAgICAgICBpZiAoaXNXb3JkRW5kKGkpKQotICAgICAgICAg
ICAgbnVtV29yZEVuZHMrKzsKLSAgICB9Ci0KLSAgICBpZiAobnVtV29yZEVuZHMpCi0gICAgICAg
IG1fcGFkUGVyV29yZEJyZWFrID0gbV9wYWRkaW5nIC8gbnVtV29yZEVuZHM7Ci0gICAgZWxzZQot
ICAgICAgICBtX3BhZFBlcldvcmRCcmVhayA9IDA7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2hhcmZidXp6
L0hhcmZCdXp6U2hhcGVyQmFzZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
aGFyZmJ1enovSGFyZkJ1enpTaGFwZXJCYXNlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IGJlMzY4YjJkMThjNDc1ODdhMzU2OTJmMTE5NDUwYjNkYjlkNzZmYTQuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvaGFyZmJ1enovSGFyZkJ1enpTaGFwZXJCYXNlLmgKKysrIC9kZXYvbnVsbApA
QCAtMSw4MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0g
KiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0g
KiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAot
ICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI2lmbmRlZiBIYXJmQnV6elNoYXBlckJhc2VfaAotI2RlZmluZSBIYXJm
QnV6elNoYXBlckJhc2VfaAotCi0jaW5jbHVkZSAiVGV4dFJ1bi5oIgotI2luY2x1ZGUgPHd0Zi9P
d25BcnJheVB0ci5oPgotI2luY2x1ZGUgPHd0Zi91bmljb2RlL0NoYXJhY3Rlck5hbWVzLmg+Ci0K
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgRm9udDsKLQotY2xhc3MgSGFyZkJ1enpTaGFw
ZXJCYXNlIHsKLXB1YmxpYzoKLSAgICBlbnVtIE5vcm1hbGl6ZU1vZGUgewotICAgICAgICBEb05v
dE5vcm1hbGl6ZU1pcnJvckNoYXJzLAotICAgICAgICBOb3JtYWxpemVNaXJyb3JDaGFycwotICAg
IH07Ci0KLSAgICBIYXJmQnV6elNoYXBlckJhc2UoY29uc3QgRm9udCosIGNvbnN0IFRleHRSdW4m
KTsKLSAgICB2aXJ0dWFsIH5IYXJmQnV6elNoYXBlckJhc2UoKSB7IH0KLQotcHJvdGVjdGVkOgot
ICAgIHZvaWQgc2V0Tm9ybWFsaXplZEJ1ZmZlcihOb3JtYWxpemVNb2RlID0gRG9Ob3ROb3JtYWxp
emVNaXJyb3JDaGFycyk7Ci0KLSAgICBib29sIGlzV29yZEVuZCh1bnNpZ25lZCk7Ci0gICAgaW50
IGRldGVybWluZVdvcmRCcmVha1NwYWNpbmcoKTsKLSAgICAvLyBzZXRQYWRkaW5nIHNldHMgYSBu
dW1iZXIgb2YgcGl4ZWxzIHRvIGJlIGRpc3RyaWJ1dGVkIGFjcm9zcyB0aGUgVGV4dFJ1bi4KLSAg
ICAvLyBXZWJLaXQgdXNlcyB0aGlzIHRvIGp1c3RpZnkgdGV4dC4KLSAgICB2b2lkIHNldFBhZGRp
bmcoaW50KTsKLQotICAgIC8vIEluIGNvbXBsZXggdGV4dCB3b3JkLXNwYWNpbmcgYWZmZWN0cyBl
YWNoIGxpbmUtYnJlYWssIHNwYWNlIChVKzAwMjApIGFuZCBub24tYnJlYWtpbmcgc3BhY2UgKFUr
MDBBMCkuCi0gICAgc3RhdGljIGJvb2wgaXNDb2RlcG9pbnRTcGFjZShVQ2hhciBjKSB7IHJldHVy
biBjID09ICcgJyB8fCBjID09IG5vQnJlYWtTcGFjZSB8fCBjID09ICdcbic7IH0KLQotICAgIGNv
bnN0IEZvbnQqIG1fZm9udDsKLSAgICBPd25BcnJheVB0cjxVQ2hhcj4gbV9ub3JtYWxpemVkQnVm
ZmVyOwotICAgIHVuc2lnbmVkIG1fbm9ybWFsaXplZEJ1ZmZlckxlbmd0aDsKLSAgICBjb25zdCBU
ZXh0UnVuJiBtX3J1bjsKLQotICAgIGludCBtX3dvcmRTcGFjaW5nQWRqdXN0bWVudDsgLy8gZGVs
dGEgYWRqdXN0bWVudCAocGl4ZWxzKSBmb3IgZWFjaCB3b3JkIGJyZWFrLgotICAgIGZsb2F0IG1f
cGFkZGluZzsgLy8gcGl4ZWxzIHRvIGJlIGRpc3RyaWJ1dGVkIG92ZXIgdGhlIGxpbmUgYXQgd29y
ZCBicmVha3MuCi0gICAgZmxvYXQgbV9wYWRQZXJXb3JkQnJlYWs7IC8vIHBpeGVscyB0byBiZSBh
ZGRlZCB0byBlYWNoIHdvcmQgYnJlYWsuCi0gICAgZmxvYXQgbV9wYWRFcnJvcjsgLy8gfG1fcGFk
UGVyV29yZEJyZWFrfCBtaWdodCBoYXZlIGEgZnJhY3Rpb25hbCBjb21wb25lbnQuCi0gICAgICAg
ICAgICAgICAgICAgICAgLy8gU2luY2Ugd2Ugb25seSBhZGQgYSB3aG9sZSBudW1iZXIgb2YgcGFk
ZGluZyBwaXhlbHMgYXQKLSAgICAgICAgICAgICAgICAgICAgICAvLyBlYWNoIHdvcmQgYnJlYWsg
d2UgYWNjdW11bGF0ZSBlcnJvci4gVGhpcyBpcyB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAv
LyBudW1iZXIgb2YgcGl4ZWxzIHRoYXQgd2UgYXJlIGJlaGluZCBzbyBmYXIuCi0gICAgaW50IG1f
bGV0dGVyU3BhY2luZzsgLy8gcGl4ZWxzIHRvIGJlIGFkZGVkIGFmdGVyIGVhY2ggZ2x5cGguCi19
OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBIYXJmQnV6elNoYXBlckJh
c2VfaAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>