<?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>44603</bug_id>
          
          <creation_ts>2010-08-25 05:44:01 -0700</creation_ts>
          <short_desc>shadowSize parameter is used to pass shadow offset in the GraphicsContext::setShadow and getShadow functions</short_desc>
          <delta_ts>2010-08-26 00:24:50 -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>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>All</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>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alejandro G. Castro">alex</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>eric</cc>
    
    <cc>mitz</cc>
    
    <cc>webkit-ews</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>269185</commentid>
    <comment_count>0</comment_count>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2010-08-25 05:44:01 -0700</bug_when>
    <thetext>Currently the shadowSize parameter of the setShadow and getShadow functions of GraphicsContext is used to pass the offset of the shadow specified in the style of the elements.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>269188</commentid>
    <comment_count>1</comment_count>
      <attachid>65404</attachid>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2010-08-25 05:46:59 -0700</bug_when>
    <thetext>Created attachment 65404
Proposed patch

Replace the names in the APIs and the locations where the functions are used.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>269191</commentid>
    <comment_count>2</comment_count>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2010-08-25 05:58:51 -0700</bug_when>
    <thetext>
After changing the names I&apos;ve realized that this condition could be wrong but the old name could make it seem correct:

+            drawIntoBitmap = !offset.isEmpty() || blur;

It is in this file: WebCore/platform/graphics/win/FontCGWin.cpp static void drawGDIGlyphs

Could someone check if in Windows negative offsets of the text actually work, or no offsets but blurring. We could open a new bug in this case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>269193</commentid>
    <comment_count>3</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2010-08-25 06:03:00 -0700</bug_when>
    <thetext>Attachment 65404 did not build on qt:
Build output: http://queues.webkit.org/results/3806070</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>269250</commentid>
    <comment_count>4</comment_count>
      <attachid>65419</attachid>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2010-08-25 07:59:56 -0700</bug_when>
    <thetext>Created attachment 65419
Proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>269282</commentid>
    <comment_count>5</comment_count>
    <who name="">mitz</who>
    <bug_when>2010-08-25 09:30:34 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; After changing the names I&apos;ve realized that this condition could be wrong but the old name could make it seem correct:
&gt; 
&gt; +            drawIntoBitmap = !offset.isEmpty() || blur;
&gt; 
&gt; It is in this file: WebCore/platform/graphics/win/FontCGWin.cpp static void drawGDIGlyphs
&gt; 
&gt; Could someone check if in Windows negative offsets of the text actually work, or no offsets but blurring. We could open a new bug in this case.

I’ve asked someone to check, and indeed in &lt;data:text/html,%3Cdiv%20style=%22-webkit-font-smoothing:%20none%22%3E%3Cdiv%20style=%22text-shadow:%202px%202px%20red%22%3Etest%3C/div%3E%3Cdiv%20style=%22text-shadow:%20-2px%20-2px%20red%22%3Etest%3C/div%3E%3C/div%3E&gt; the bottom line is missing the shadow. Good catch!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>269316</commentid>
    <comment_count>6</comment_count>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2010-08-25 10:16:24 -0700</bug_when>
    <thetext>Thanks for the test :). Opened a bug for the other issue: bug 44619.

I&apos;ll land this patch tomorrow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>269754</commentid>
    <comment_count>7</comment_count>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2010-08-26 00:24:50 -0700</bug_when>
    <thetext>Landed http://trac.webkit.org/changeset/66082</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>65404</attachid>
            <date>2010-08-25 05:46:59 -0700</date>
            <delta_ts>2010-08-25 07:59:56 -0700</delta_ts>
            <desc>Proposed patch</desc>
            <filename>offset_shadow.patch</filename>
            <type>text/plain</type>
            <size>30111</size>
            <attacher name="Alejandro G. Castro">alex</attacher>
            
              <data encoding="base64">Y29tbWl0IGZiN2ViNjQyODg5NzExODQ2MzQ0NjVjM2U4OGIwYzBiZTA4Y2ZkMjgKQXV0aG9yOiBB
bGVqYW5kcm8gRy4gQ2FzdHJvIDxhbGV4QGlnYWxpYS5jb20+CkRhdGU6ICAgV2VkIEF1ZyAyNSAx
NDo0NDozOCAyMDEwICswMjAwCgogICAgMjAxMC0wOC0yNSAgQWxlamFuZHJvIEcuIENhc3RybyAg
PGFsZXhAaWdhbGlhLmNvbT4KICAgIAogICAgICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KICAgIAogICAgICAgICAgICBzaGFkb3dTaXplIHBhcmFtZXRlciBpcyB1c2VkIHRvIHBh
c3Mgc2hhZG93IG9mZnNldCBpbiB0aGUKICAgICAgICAgICAgR3JhcGhpY3NDb250ZXh0OjpzZXRT
aGFkb3cgYW5kIGdldFNoYWRvdyBmdW5jdGlvbnMKICAgICAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ0NjAzCiAgICAKICAgICAgICAgICAgQ2hhbmdlIHRo
ZSBzaGFkb3dTaXplIHBhcmFtZXRlciBvdCB0aGUgZnVuY3Rpb25zIGdldFNoYWRvdyBhbmQKICAg
ICAgICAgICAgc2V0U2hhZG93IGluIEdyYXBoaWNzQ29udGV4dCB0byBzaGFkb3dPZmZzZXQgd2hp
Y2ggaXMgdGhlIGN1cnJlbnQKICAgICAgICAgICAgdXNlIG9mIHRoYXQgcGFyYW1ldGVyIGluIHRo
ZSBjb2RlLgogICAgCiAgICAgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250
ZXh0LmNwcDoKICAgICAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6c2V0U2hhZG93
KToKICAgICAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDo6Y2xlYXJTaGFkb3cpOgog
ICAgICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpnZXRTaGFkb3cpOgogICAgICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oOgogICAgICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dFByaXZhdGUuaDoKICAgICAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q2Fpcm8uY3BwOgogICAgICAgICAgICAoV2Vi
Q29yZTo6Rm9udDo6ZHJhd0dseXBocyk6CiAgICAgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwOgogICAgICAgICAgICAoV2ViQ29yZTo6R3Jh
cGhpY3NDb250ZXh0OjpjYWxjdWxhdGVTaGFkb3dCdWZmZXJEaW1lbnNpb25zKToKICAgICAgICAg
ICAgKFdlYkNvcmU6OmRyYXdQYXRoU2hhZG93KToKICAgICAgICAgICAgKFdlYkNvcmU6OmRyYXdC
b3JkZXJsZXNzUmVjdFNoYWRvdyk6CiAgICAgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRl
eHQ6OnNldFBsYXRmb3JtU2hhZG93KToKICAgICAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
YWlyby9JbWFnZUNhaXJvLmNwcDoKICAgICAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpk
cmF3KToKICAgICAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Gb250Q2hyb21p
dW1XaW4uY3BwOgogICAgICAgICAgICAoV2ViQ29yZTo6VHJhbnNwYXJlbmN5QXdhcmVGb250UGFp
bnRlcjo6VHJhbnNwYXJlbmN5QXdhcmVHbHlwaFBhaW50ZXI6OmRyYXdHbHlwaHMpOgogICAgICAg
ICAgICAoV2ViQ29yZTo6Rm9udDo6ZHJhd0NvbXBsZXhUZXh0KToKICAgICAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9ndGsvRm9udEd0ay5jcHA6CiAgICAgICAgICAgIChXZWJDb3JlOjpGb250
OjpkcmF3Q29tcGxleFRleHQpOgogICAgICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9G
b250TWFjLm1tOgogICAgICAgICAgICAoV2ViQ29yZTo6Rm9udDo6ZHJhd0dseXBocyk6CiAgICAg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvcXQvSW1hZ2VRdC5jcHA6CiAgICAgICAgICAgIChX
ZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZHJhdyk6CiAgICAgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvcXQvU3RpbGxJbWFnZVF0LmNwcDoKICAgICAgICAgICAgKFdlYkNvcmU6OlN0aWxsSW1hZ2U6
OmRyYXcpOgogICAgICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3NraWEvU2tpYUZvbnRXaW4u
Y3BwOgogICAgICAgICAgICAoV2ViQ29yZTo6d2luZG93c0NhbkhhbmRsZURyYXdUZXh0U2hhZG93
KToKICAgICAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udENHV2luLmNwcDoKICAg
ICAgICAgICAgKFdlYkNvcmU6OmRyYXdHRElHbHlwaHMpOgogICAgICAgICAgICAoV2ViQ29yZTo6
Rm9udDo6ZHJhd0dseXBocyk6CiAgICAgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luY2Uv
R3JhcGhpY3NDb250ZXh0V2luY2UuY3BwOgogICAgICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0OjpmaWxsUm91bmRlZFJlY3QpOgogICAgICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0OjpkcmF3VGV4dCk6CgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJD
b3JlL0NoYW5nZUxvZwppbmRleCA1NmRiM2I0Li5iNmVhMjI0IDEwMDY0NAotLS0gYS9XZWJDb3Jl
L0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUwIEBACisyMDEw
LTA4LTI1ICBBbGVqYW5kcm8gRy4gQ2FzdHJvICA8YWxleEBpZ2FsaWEuY29tPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIHNoYWRvd1NpemUgcGFyYW1l
dGVyIGlzIHVzZWQgdG8gcGFzcyBzaGFkb3cgb2Zmc2V0IGluIHRoZQorICAgICAgICBHcmFwaGlj
c0NvbnRleHQ6OnNldFNoYWRvdyBhbmQgZ2V0U2hhZG93IGZ1bmN0aW9ucworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDQ2MDMKKworICAgICAgICBDaGFu
Z2UgdGhlIHNoYWRvd1NpemUgcGFyYW1ldGVyIG90IHRoZSBmdW5jdGlvbnMgZ2V0U2hhZG93IGFu
ZAorICAgICAgICBzZXRTaGFkb3cgaW4gR3JhcGhpY3NDb250ZXh0IHRvIHNoYWRvd09mZnNldCB3
aGljaCBpcyB0aGUgY3VycmVudAorICAgICAgICB1c2Ugb2YgdGhhdCBwYXJhbWV0ZXIgaW4gdGhl
IGNvZGUuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRTaGFkb3cpOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpjbGVhclNoYWRvdyk6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0NvbnRleHQ6OmdldFNoYWRvdyk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NDb250ZXh0UHJpdmF0ZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L0ZvbnRDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250OjpkcmF3R2x5cGhzKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmNhbGN1bGF0ZVNoYWRvd0J1ZmZl
ckRpbWVuc2lvbnMpOgorICAgICAgICAoV2ViQ29yZTo6ZHJhd1BhdGhTaGFkb3cpOgorICAgICAg
ICAoV2ViQ29yZTo6ZHJhd0JvcmRlcmxlc3NSZWN0U2hhZG93KToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDo6c2V0UGxhdGZvcm1TaGFkb3cpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL0ltYWdlQ2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFw
SW1hZ2U6OmRyYXcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZvbnRD
aHJvbWl1bVdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUcmFuc3BhcmVuY3lBd2FyZUZvbnRQ
YWludGVyOjpUcmFuc3BhcmVuY3lBd2FyZUdseXBoUGFpbnRlcjo6ZHJhd0dseXBocyk6CisgICAg
ICAgIChXZWJDb3JlOjpGb250OjpkcmF3Q29tcGxleFRleHQpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2d0ay9Gb250R3RrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnQ6OmRyYXdD
b21wbGV4VGV4dCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRNYWMubW06
CisgICAgICAgIChXZWJDb3JlOjpGb250OjpkcmF3R2x5cGhzKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9xdC9JbWFnZVF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdl
OjpkcmF3KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9xdC9TdGlsbEltYWdlUXQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U3RpbGxJbWFnZTo6ZHJhdyk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3Mvc2tpYS9Ta2lhRm9udFdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjp3aW5k
b3dzQ2FuSGFuZGxlRHJhd1RleHRTaGFkb3cpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L3dpbi9Gb250Q0dXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZHJhd0dESUdseXBocyk6Cisg
ICAgICAgIChXZWJDb3JlOjpGb250OjpkcmF3R2x5cGhzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy93aW5jZS9HcmFwaGljc0NvbnRleHRXaW5jZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0NvbnRleHQ6OmZpbGxSb3VuZGVkUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc0NvbnRleHQ6OmRyYXdUZXh0KToKKwogMjAxMC0wOC0yNCAgUGF2ZWwgUG9kaXZpbG92
ICA8cG9kaXZpbG92QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBQYXZlbCBG
ZWxkbWFuLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHQuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3Bw
CmluZGV4IGI1MTE0MWEuLjQ3Mzg0YjkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzQ29udGV4dC5jcHAKQEAgLTEzMCwyOSArMTMwLDI5IEBAIHZvaWQgR3JhcGhpY3ND
b250ZXh0OjpzZXRTdHJva2VDb2xvcihjb25zdCBDb2xvciYgY29sb3IsIENvbG9yU3BhY2UgY29s
b3JTcGFjZSkKICAgICBzZXRQbGF0Zm9ybVN0cm9rZUNvbG9yKGNvbG9yLCBjb2xvclNwYWNlKTsK
IH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFNoYWRvdyhjb25zdCBGbG9hdFNpemUmIHNp
emUsIGZsb2F0IGJsdXIsIGNvbnN0IENvbG9yJiBjb2xvciwgQ29sb3JTcGFjZSBjb2xvclNwYWNl
KQordm9pZCBHcmFwaGljc0NvbnRleHQ6OnNldFNoYWRvdyhjb25zdCBGbG9hdFNpemUmIG9mZnNl
dCwgZmxvYXQgYmx1ciwgY29uc3QgQ29sb3ImIGNvbG9yLCBDb2xvclNwYWNlIGNvbG9yU3BhY2Up
CiB7Ci0gICAgbV9jb21tb24tPnN0YXRlLnNoYWRvd1NpemUgPSBzaXplOworICAgIG1fY29tbW9u
LT5zdGF0ZS5zaGFkb3dPZmZzZXQgPSBvZmZzZXQ7CiAgICAgbV9jb21tb24tPnN0YXRlLnNoYWRv
d0JsdXIgPSBibHVyOwogICAgIG1fY29tbW9uLT5zdGF0ZS5zaGFkb3dDb2xvciA9IGNvbG9yOwot
ICAgIHNldFBsYXRmb3JtU2hhZG93KHNpemUsIGJsdXIsIGNvbG9yLCBjb2xvclNwYWNlKTsKKyAg
ICBzZXRQbGF0Zm9ybVNoYWRvdyhvZmZzZXQsIGJsdXIsIGNvbG9yLCBjb2xvclNwYWNlKTsKIH0K
IAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OmNsZWFyU2hhZG93KCkKIHsKLSAgICBtX2NvbW1vbi0+
c3RhdGUuc2hhZG93U2l6ZSA9IEludFNpemUoKTsKKyAgICBtX2NvbW1vbi0+c3RhdGUuc2hhZG93
T2Zmc2V0ID0gRmxvYXRTaXplKCk7CiAgICAgbV9jb21tb24tPnN0YXRlLnNoYWRvd0JsdXIgPSAw
OwogICAgIG1fY29tbW9uLT5zdGF0ZS5zaGFkb3dDb2xvciA9IENvbG9yKCk7CiAgICAgY2xlYXJQ
bGF0Zm9ybVNoYWRvdygpOwogfQogCi1ib29sIEdyYXBoaWNzQ29udGV4dDo6Z2V0U2hhZG93KEZs
b2F0U2l6ZSYgc2l6ZSwgZmxvYXQmIGJsdXIsIENvbG9yJiBjb2xvcikgY29uc3QKK2Jvb2wgR3Jh
cGhpY3NDb250ZXh0OjpnZXRTaGFkb3coRmxvYXRTaXplJiBvZmZzZXQsIGZsb2F0JiBibHVyLCBD
b2xvciYgY29sb3IpIGNvbnN0CiB7Ci0gICAgc2l6ZSA9IG1fY29tbW9uLT5zdGF0ZS5zaGFkb3dT
aXplOworICAgIG9mZnNldCA9IG1fY29tbW9uLT5zdGF0ZS5zaGFkb3dPZmZzZXQ7CiAgICAgYmx1
ciA9IG1fY29tbW9uLT5zdGF0ZS5zaGFkb3dCbHVyOwogICAgIGNvbG9yID0gbV9jb21tb24tPnN0
YXRlLnNoYWRvd0NvbG9yOwogCi0gICAgcmV0dXJuIGNvbG9yLmlzVmFsaWQoKSAmJiBjb2xvci5h
bHBoYSgpICYmIChibHVyIHx8IHNpemUud2lkdGgoKSB8fCBzaXplLmhlaWdodCgpKTsKKyAgICBy
ZXR1cm4gY29sb3IuaXNWYWxpZCgpICYmIGNvbG9yLmFscGhhKCkgJiYgKGJsdXIgfHwgb2Zmc2V0
LndpZHRoKCkgfHwgb2Zmc2V0LmhlaWdodCgpKTsKIH0KIAogZmxvYXQgR3JhcGhpY3NDb250ZXh0
OjpzdHJva2VUaGlja25lc3MoKSBjb25zdApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHQuaCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NDb250ZXh0LmgKaW5kZXggZWFkMmNhNS4uOTNlZjg5MCAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaAorKysgYi9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCkBAIC0yOTgsNyArMjk4LDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogI2lmIFBMQVRGT1JNKENBSVJPKQogICAgICAgICBmbG9hdCBnZXRBbHBo
YSgpOwogICAgICAgICB2b2lkIGNyZWF0ZVBsYXRmb3JtU2hhZG93KFBhc3NPd25QdHI8SW1hZ2VC
dWZmZXI+IGJ1ZmZlciwgY29uc3QgQ29sb3ImIHNoYWRvd0NvbG9yLCBjb25zdCBGbG9hdFJlY3Qm
IHNoYWRvd1JlY3QsIGZsb2F0IHJhZGl1cyk7Ci0gICAgICAgIHN0YXRpYyB2b2lkIGNhbGN1bGF0
ZVNoYWRvd0J1ZmZlckRpbWVuc2lvbnMoSW50U2l6ZSYgc2hhZG93QnVmZmVyU2l6ZSwgRmxvYXRS
ZWN0JiBzaGFkb3dSZWN0LCBmbG9hdCYgcmFkaXVzLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJjZVJl
Y3QsIGNvbnN0IEZsb2F0U2l6ZSYgc2hhZG93U2l6ZSwgZmxvYXQgc2hhZG93Qmx1cik7CisgICAg
ICAgIHN0YXRpYyB2b2lkIGNhbGN1bGF0ZVNoYWRvd0J1ZmZlckRpbWVuc2lvbnMoSW50U2l6ZSYg
c2hhZG93QnVmZmVyU2l6ZSwgRmxvYXRSZWN0JiBzaGFkb3dSZWN0LCBmbG9hdCYgcmFkaXVzLCBj
b25zdCBGbG9hdFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEZsb2F0U2l6ZSYgc2hhZG93T2Zmc2V0
LCBmbG9hdCBzaGFkb3dCbHVyKTsKICNlbmRpZgogCiAgICAgICAgIHZvaWQgc2V0Q29tcG9zaXRl
T3BlcmF0aW9uKENvbXBvc2l0ZU9wZXJhdG9yKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0UHJpdmF0ZS5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHRQcml2YXRlLmgKaW5kZXggNmJmNDY1Yi4uOTAzYzdlMyAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRQcml2
YXRlLmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRQcml2
YXRlLmgKQEAgLTcyLDcgKzcyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIGJv
b2wgcGFpbnRpbmdEaXNhYmxlZDsKICAgICAgICAgCi0gICAgICAgIEZsb2F0U2l6ZSBzaGFkb3dT
aXplOworICAgICAgICBGbG9hdFNpemUgc2hhZG93T2Zmc2V0OwogICAgICAgICBmbG9hdCBzaGFk
b3dCbHVyOwogICAgICAgICBDb2xvciBzaGFkb3dDb2xvcjsKIApkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q2Fpcm8uY3BwIGIvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9Gb250Q2Fpcm8uY3BwCmluZGV4IGY2ZDhmM2QuLjViZmEzZmIgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udENhaXJvLmNwcAor
KysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ZvbnRDYWlyby5jcHAKQEAgLTcw
LDExICs3MCwxMSBAQCB2b2lkIEZvbnQ6OmRyYXdHbHlwaHMoR3JhcGhpY3NDb250ZXh0KiBjb250
ZXh0LCBjb25zdCBTaW1wbGVGb250RGF0YSogZm9udCwgY29ucwogICAgIH0KIAogICAgIC8vIFRl
eHQgc2hhZG93LCBpbnNwaXJlZCBieSBGb250TWFjCi0gICAgRmxvYXRTaXplIHNoYWRvd1NpemU7
CisgICAgRmxvYXRTaXplIHNoYWRvd09mZnNldDsKICAgICBmbG9hdCBzaGFkb3dCbHVyID0gMDsK
ICAgICBDb2xvciBzaGFkb3dDb2xvcjsKICAgICBib29sIGhhc1NoYWRvdyA9IGNvbnRleHQtPnRl
eHREcmF3aW5nTW9kZSgpICYgY1RleHRGaWxsCi0gICAgICAgICAgICAgICAgICAgICAmJiBjb250
ZXh0LT5nZXRTaGFkb3coc2hhZG93U2l6ZSwgc2hhZG93Qmx1ciwgc2hhZG93Q29sb3IpOworICAg
ICAgICAgICAgICAgICAgICAgJiYgY29udGV4dC0+Z2V0U2hhZG93KHNoYWRvd09mZnNldCwgc2hh
ZG93Qmx1ciwgc2hhZG93Q29sb3IpOwogCiAgICAgLy8gVE9ETzogQmx1ciBzdXBwb3J0CiAgICAg
aWYgKGhhc1NoYWRvdykgewpAQCAtOTUsNyArOTUsNyBAQCB2b2lkIEZvbnQ6OmRyYXdHbHlwaHMo
R3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBTaW1wbGVGb250RGF0YSogZm9udCwgY29u
cwogICAgICAgICBJbnRTaXplIHNoYWRvd0J1ZmZlclNpemU7CiAgICAgICAgIEZsb2F0UmVjdCBz
aGFkb3dSZWN0OwogICAgICAgICBmbG9hdCByYWRpdXMgPSAwOwotICAgICAgICBjb250ZXh0LT5j
YWxjdWxhdGVTaGFkb3dCdWZmZXJEaW1lbnNpb25zKHNoYWRvd0J1ZmZlclNpemUsIHNoYWRvd1Jl
Y3QsIHJhZGl1cywgcmVjdCwgc2hhZG93U2l6ZSwgc2hhZG93Qmx1cik7CisgICAgICAgIGNvbnRl
eHQtPmNhbGN1bGF0ZVNoYWRvd0J1ZmZlckRpbWVuc2lvbnMoc2hhZG93QnVmZmVyU2l6ZSwgc2hh
ZG93UmVjdCwgcmFkaXVzLCByZWN0LCBzaGFkb3dPZmZzZXQsIHNoYWRvd0JsdXIpOwogCiAgICAg
ICAgIC8vIERyYXcgc2hhZG93IGludG8gYSBuZXcgSW1hZ2VCdWZmZXIKICAgICAgICAgT3duUHRy
PEltYWdlQnVmZmVyPiBzaGFkb3dCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNoYWRvd0J1
ZmZlclNpemUpOwpAQCAtMTE1LDcgKzExNSw3IEBAIHZvaWQgRm9udDo6ZHJhd0dseXBocyhHcmFw
aGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IFNpbXBsZUZvbnREYXRhKiBmb250LCBjb25zCiAg
ICAgICAgIGNhaXJvX3RyYW5zbGF0ZShjciwgMC4wLCAtZXh0ZW50cy5oZWlnaHQpOwogICAgICAg
ICBjb250ZXh0LT5jcmVhdGVQbGF0Zm9ybVNoYWRvdyhzaGFkb3dCdWZmZXIucmVsZWFzZSgpLCBz
aGFkb3dDb2xvciwgc2hhZG93UmVjdCwgcmFkaXVzKTsKICNlbHNlCi0gICAgICAgIGNhaXJvX3Ry
YW5zbGF0ZShjciwgc2hhZG93U2l6ZS53aWR0aCgpLCBzaGFkb3dTaXplLmhlaWdodCgpKTsKKyAg
ICAgICAgY2Fpcm9fdHJhbnNsYXRlKGNyLCBzaGFkb3dPZmZzZXQud2lkdGgoKSwgc2hhZG93T2Zm
c2V0LmhlaWdodCgpKTsKICAgICAgICAgY2Fpcm9fc2hvd19nbHlwaHMoY3IsIGdseXBocywgbnVt
R2x5cGhzKTsKICAgICAgICAgaWYgKGZvbnQtPnN5bnRoZXRpY0JvbGRPZmZzZXQoKSkgewogICAg
ICAgICAgICAgY2Fpcm9fc2F2ZShjcik7CkBAIC0xOTUsNyArMTk1LDcgQEAgdm9pZCBGb250Ojpk
cmF3R2x5cGhzKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgU2ltcGxlRm9udERhdGEq
IGZvbnQsIGNvbnMKIAogICAgIC8vIFJlLWVuYWJsZSB0aGUgcGxhdGZvcm0gc2hhZG93IHdlIGRp
c2FibGVkIGVhcmxpZXIKICAgICBpZiAoaGFzU2hhZG93KQotICAgICAgICBjb250ZXh0LT5zZXRT
aGFkb3coc2hhZG93U2l6ZSwgc2hhZG93Qmx1ciwgc2hhZG93Q29sb3IsIERldmljZUNvbG9yU3Bh
Y2UpOworICAgICAgICBjb250ZXh0LT5zZXRTaGFkb3coc2hhZG93T2Zmc2V0LCBzaGFkb3dCbHVy
LCBzaGFkb3dDb2xvciwgRGV2aWNlQ29sb3JTcGFjZSk7CiAKICAgICBjYWlyb19yZXN0b3JlKGNy
KTsKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhp
Y3NDb250ZXh0Q2Fpcm8uY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFw
aGljc0NvbnRleHRDYWlyby5jcHAKaW5kZXggM2E2NjdhYy4uNjgzYzE0NCAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWlyby5jcHAK
KysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGljc0NvbnRleHRDYWly
by5jcHAKQEAgLTE3NSw3ICsxNzUsNyBAQCBzdGF0aWMgdm9pZCBhZGRDb252ZXhQb2x5Z29uVG9D
b250ZXh0KGNhaXJvX3QqIGNvbnRleHQsIHNpemVfdCBudW1Qb2ludHMsIGNvbnN0CiAgICAgY2Fp
cm9fY2xvc2VfcGF0aChjb250ZXh0KTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQ6OmNhbGN1
bGF0ZVNoYWRvd0J1ZmZlckRpbWVuc2lvbnMoSW50U2l6ZSYgc2hhZG93QnVmZmVyU2l6ZSwgRmxv
YXRSZWN0JiBzaGFkb3dSZWN0LCBmbG9hdCYgcmFkaXVzLCBjb25zdCBGbG9hdFJlY3QmIHNvdXJj
ZVJlY3QsIGNvbnN0IEZsb2F0U2l6ZSYgc2hhZG93U2l6ZSwgZmxvYXQgc2hhZG93Qmx1cikKK3Zv
aWQgR3JhcGhpY3NDb250ZXh0OjpjYWxjdWxhdGVTaGFkb3dCdWZmZXJEaW1lbnNpb25zKEludFNp
emUmIHNoYWRvd0J1ZmZlclNpemUsIEZsb2F0UmVjdCYgc2hhZG93UmVjdCwgZmxvYXQmIHJhZGl1
cywgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBGbG9hdFNpemUmIHNoYWRvd09m
ZnNldCwgZmxvYXQgc2hhZG93Qmx1cikKIHsKICNpZiBFTkFCTEUoRklMVEVSUykKICAgICAvLyBs
aW1pdCByYWRpdXMgdG8gMTI4CkBAIC0xODUsMTcgKzE4NSwxNyBAQCB2b2lkIEdyYXBoaWNzQ29u
dGV4dDo6Y2FsY3VsYXRlU2hhZG93QnVmZmVyRGltZW5zaW9ucyhJbnRTaXplJiBzaGFkb3dCdWZm
ZXJTaXplLAogCiAgICAgLy8gZGV0ZXJtaW5lIGRpbWVuc2lvbnMgb2Ygc2hhZG93IHJlY3QKICAg
ICBzaGFkb3dSZWN0ID0gRmxvYXRSZWN0KHNvdXJjZVJlY3QubG9jYXRpb24oKSwgc2hhZG93QnVm
ZmVyU2l6ZSk7Ci0gICAgc2hhZG93UmVjdC5tb3ZlKHNoYWRvd1NpemUud2lkdGgoKSAtIHJhZGl1
cywgc2hhZG93U2l6ZS5oZWlnaHQoKSAtIHJhZGl1cyk7CisgICAgc2hhZG93UmVjdC5tb3ZlKHNo
YWRvd09mZnNldC53aWR0aCgpIC0gcmFkaXVzLCBzaGFkb3dPZmZzZXQuaGVpZ2h0KCkgLSByYWRp
dXMpOwogI2VuZGlmCiB9CiAKIHN0YXRpYyBpbmxpbmUgdm9pZCBkcmF3UGF0aFNoYWRvdyhHcmFw
aGljc0NvbnRleHQqIGNvbnRleHQsIEdyYXBoaWNzQ29udGV4dFByaXZhdGUqIGdjcCwgYm9vbCBm
aWxsU2hhZG93LCBib29sIHN0cm9rZVNoYWRvdykKIHsKICNpZiBFTkFCTEUoRklMVEVSUykKLSAg
ICBGbG9hdFNpemUgc2hhZG93U2l6ZTsKKyAgICBGbG9hdFNpemUgc2hhZG93T2Zmc2V0OwogICAg
IGZsb2F0IHNoYWRvd0JsdXI7CiAgICAgQ29sb3Igc2hhZG93Q29sb3I7Ci0gICAgaWYgKCFjb250
ZXh0LT5nZXRTaGFkb3coc2hhZG93U2l6ZSwgc2hhZG93Qmx1ciwgc2hhZG93Q29sb3IpKQorICAg
IGlmICghY29udGV4dC0+Z2V0U2hhZG93KHNoYWRvd09mZnNldCwgc2hhZG93Qmx1ciwgc2hhZG93
Q29sb3IpKQogICAgICAgICByZXR1cm47CiAgICAgCiAgICAgLy8gQ2FsY3VsYXRlIGZpbHRlciB2
YWx1ZXMgdG8gY3JlYXRlIGFwcHJvcHJpYXRlIHNoYWRvdy4KQEAgLTIxMSw3ICsyMTEsNyBAQCBz
dGF0aWMgaW5saW5lIHZvaWQgZHJhd1BhdGhTaGFkb3coR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0
LCBHcmFwaGljc0NvbnRleHRQcml2YQogICAgIEludFNpemUgc2hhZG93QnVmZmVyU2l6ZTsKICAg
ICBGbG9hdFJlY3Qgc2hhZG93UmVjdDsKICAgICBmbG9hdCByYWRpdXMgPSAwOwotICAgIEdyYXBo
aWNzQ29udGV4dDo6Y2FsY3VsYXRlU2hhZG93QnVmZmVyRGltZW5zaW9ucyhzaGFkb3dCdWZmZXJT
aXplLCBzaGFkb3dSZWN0LCByYWRpdXMsIHJlY3QsIHNoYWRvd1NpemUsIHNoYWRvd0JsdXIpOwor
ICAgIEdyYXBoaWNzQ29udGV4dDo6Y2FsY3VsYXRlU2hhZG93QnVmZmVyRGltZW5zaW9ucyhzaGFk
b3dCdWZmZXJTaXplLCBzaGFkb3dSZWN0LCByYWRpdXMsIHJlY3QsIHNoYWRvd09mZnNldCwgc2hh
ZG93Qmx1cik7CiAKICAgICAvLyBDcmVhdGUgc3VpdGFibHktc2l6ZWQgSW1hZ2VCdWZmZXIgdG8g
aG9sZCB0aGUgc2hhZG93LgogICAgIE93blB0cjxJbWFnZUJ1ZmZlcj4gc2hhZG93QnVmZmVyID0g
SW1hZ2VCdWZmZXI6OmNyZWF0ZShzaGFkb3dCdWZmZXJTaXplKTsKQEAgLTYyMywxNyArNjIzLDE3
IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpmaWxsUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3Qp
CiBzdGF0aWMgdm9pZCBkcmF3Qm9yZGVybGVzc1JlY3RTaGFkb3coR3JhcGhpY3NDb250ZXh0KiBj
b250ZXh0LCBjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0IENvbG9yJiByZWN0Q29sb3IpCiB7
CiAjaWYgRU5BQkxFKEZJTFRFUlMpCi0gICAgRmxvYXRTaXplIHNoYWRvd1NpemU7CisgICAgRmxv
YXRTaXplIHNoYWRvd09mZnNldDsKICAgICBmbG9hdCBzaGFkb3dCbHVyOwogICAgIENvbG9yIHNo
YWRvd0NvbG9yOwogCi0gICAgaWYgKCFjb250ZXh0LT5nZXRTaGFkb3coc2hhZG93U2l6ZSwgc2hh
ZG93Qmx1ciwgc2hhZG93Q29sb3IpKQorICAgIGlmICghY29udGV4dC0+Z2V0U2hhZG93KHNoYWRv
d09mZnNldCwgc2hhZG93Qmx1ciwgc2hhZG93Q29sb3IpKQogICAgICAgICByZXR1cm47CiAKICAg
ICBJbnRTaXplIHNoYWRvd0J1ZmZlclNpemU7CiAgICAgRmxvYXRSZWN0IHNoYWRvd1JlY3Q7CiAg
ICAgZmxvYXQgcmFkaXVzID0gMDsKLSAgICBHcmFwaGljc0NvbnRleHQ6OmNhbGN1bGF0ZVNoYWRv
d0J1ZmZlckRpbWVuc2lvbnMoc2hhZG93QnVmZmVyU2l6ZSwgc2hhZG93UmVjdCwgcmFkaXVzLCBy
ZWN0LCBzaGFkb3dTaXplLCBzaGFkb3dCbHVyKTsKKyAgICBHcmFwaGljc0NvbnRleHQ6OmNhbGN1
bGF0ZVNoYWRvd0J1ZmZlckRpbWVuc2lvbnMoc2hhZG93QnVmZmVyU2l6ZSwgc2hhZG93UmVjdCwg
cmFkaXVzLCByZWN0LCBzaGFkb3dPZmZzZXQsIHNoYWRvd0JsdXIpOwogCiAgICAgLy8gRHJhdyBz
aGFkb3cgaW50byBhIG5ldyBJbWFnZUJ1ZmZlcgogICAgIE93blB0cjxJbWFnZUJ1ZmZlcj4gc2hh
ZG93QnVmZmVyID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaGFkb3dCdWZmZXJTaXplKTsKQEAgLTkx
Nyw3ICs5MTcsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0UGxhdGZvcm1TaGFkb3coRmxv
YXRTaXplIGNvbnN0JiBzaXplLCBmbG9hdCwgQ29sb3IgY29ucwogICAgIGlmIChtX2NvbW1vbi0+
c3RhdGUuc2hhZG93c0lnbm9yZVRyYW5zZm9ybXMpIHsKICAgICAgICAgLy8gTWVhbmluZyB0aGF0
IHRoaXMgZ3JhcGhpY3MgY29udGV4dCBpcyBhc3NvY2lhdGVkIHdpdGggYSBDYW52YXNSZW5kZXJp
bmdDb250ZXh0CiAgICAgICAgIC8vIFdlIGZsaXAgdGhlIGhlaWdodCBzaW5jZSBDRyBhbmQgSFRN
TDUgQ2FudmFzIGhhdmUgb3Bwb3NpdGUgWSBheGlzCi0gICAgICAgIG1fY29tbW9uLT5zdGF0ZS5z
aGFkb3dTaXplID0gRmxvYXRTaXplKHNpemUud2lkdGgoKSwgLXNpemUuaGVpZ2h0KCkpOworICAg
ICAgICBtX2NvbW1vbi0+c3RhdGUuc2hhZG93T2Zmc2V0ID0gRmxvYXRTaXplKHNpemUud2lkdGgo
KSwgLXNpemUuaGVpZ2h0KCkpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUNhaXJvLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vSW1hZ2VDYWlyby5jcHAKaW5kZXggZDVlYjBlNy4uMDA2ZDg2MiAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUNhaXJvLmNwcAorKysg
Yi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQ2Fpcm8uY3BwCkBAIC0xMzUs
MTQgKzEzNSwxNCBAQCB2b2lkIEJpdG1hcEltYWdlOjpkcmF3KEdyYXBoaWNzQ29udGV4dCogY29u
dGV4dCwgY29uc3QgRmxvYXRSZWN0JiBkc3QsIGNvbnN0IEZsbwogCiAgICAgLy8gRHJhdyB0aGUg
c2hhZG93CiAjaWYgRU5BQkxFKEZJTFRFUlMpCi0gICAgRmxvYXRTaXplIHNoYWRvd1NpemU7Cisg
ICAgRmxvYXRTaXplIHNoYWRvd09mZnNldDsKICAgICBmbG9hdCBzaGFkb3dCbHVyOwogICAgIENv
bG9yIHNoYWRvd0NvbG9yOwotICAgIGlmIChjb250ZXh0LT5nZXRTaGFkb3coc2hhZG93U2l6ZSwg
c2hhZG93Qmx1ciwgc2hhZG93Q29sb3IpKSB7CisgICAgaWYgKGNvbnRleHQtPmdldFNoYWRvdyhz
aGFkb3dPZmZzZXQsIHNoYWRvd0JsdXIsIHNoYWRvd0NvbG9yKSkgewogICAgICAgICBJbnRTaXpl
IHNoYWRvd0J1ZmZlclNpemU7CiAgICAgICAgIEZsb2F0UmVjdCBzaGFkb3dSZWN0OwogICAgICAg
ICBmbG9hdCByYWRpdXMgPSAwOwotICAgICAgICBjb250ZXh0LT5jYWxjdWxhdGVTaGFkb3dCdWZm
ZXJEaW1lbnNpb25zKHNoYWRvd0J1ZmZlclNpemUsIHNoYWRvd1JlY3QsIHJhZGl1cywgZHN0UmVj
dCwgc2hhZG93U2l6ZSwgc2hhZG93Qmx1cik7CisgICAgICAgIGNvbnRleHQtPmNhbGN1bGF0ZVNo
YWRvd0J1ZmZlckRpbWVuc2lvbnMoc2hhZG93QnVmZmVyU2l6ZSwgc2hhZG93UmVjdCwgcmFkaXVz
LCBkc3RSZWN0LCBzaGFkb3dPZmZzZXQsIHNoYWRvd0JsdXIpOwogICAgICAgICBzaGFkb3dDb2xv
ciA9IGNvbG9yV2l0aE92ZXJyaWRlQWxwaGEoc2hhZG93Q29sb3IucmdiKCksIChzaGFkb3dDb2xv
ci5hbHBoYSgpICogIGNvbnRleHQtPmdldEFscGhhKCkpIC8gMjU1LmYpOwogCiAgICAgICAgIC8v
ZHJhdyBzaGFkb3cgaW50byBhIG5ldyBJbWFnZUJ1ZmZlcgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Gb250Q2hyb21pdW1XaW4uY3BwIGIvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Gb250Q2hyb21pdW1XaW4uY3BwCmluZGV4IDViOGJh
ZDMuLjc4Yjc1MTcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vRm9udENocm9taXVtV2luLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0ZvbnRDaHJvbWl1bVdpbi5jcHAKQEAgLTI3MywxMCArMjczLDEwIEBAIGJvb2wgVHJh
bnNwYXJlbmN5QXdhcmVHbHlwaFBhaW50ZXI6OmRyYXdHbHlwaHMoaW50IG51bUdseXBocywKIAog
ICAgIC8vIElmIHRoZXJlIGlzIGEgbm9uLWJsdXIgc2hhZG93IGFuZCBib3RoIHRoZSBmaWxsIGNv
bG9yIGFuZCBzaGFkb3cgY29sb3IgCiAgICAgLy8gYXJlIG9wYXF1ZSwgaGFuZGxlIHdpdGhvdXQg
c2tpYS4gCi0gICAgRmxvYXRTaXplIHNoYWRvd1NpemU7CisgICAgRmxvYXRTaXplIHNoYWRvd09m
ZnNldDsKICAgICBmbG9hdCBzaGFkb3dCbHVyOwogICAgIENvbG9yIHNoYWRvd0NvbG9yOwotICAg
IGlmIChtX2dyYXBoaWNzQ29udGV4dC0+Z2V0U2hhZG93KHNoYWRvd1NpemUsIHNoYWRvd0JsdXIs
IHNoYWRvd0NvbG9yKSkgeworICAgIGlmIChtX2dyYXBoaWNzQ29udGV4dC0+Z2V0U2hhZG93KHNo
YWRvd09mZnNldCwgc2hhZG93Qmx1ciwgc2hhZG93Q29sb3IpKSB7CiAgICAgICAgIC8vIElmIHRo
ZXJlIGlzIGEgc2hhZG93IGFuZCB0aGlzIGNvZGUgaXMgcmVhY2hlZCwgd2luZG93c0NhbkhhbmRs
ZURyYXdUZXh0U2hhZG93KCkKICAgICAgICAgLy8gd2lsbCBoYXZlIGFscmVhZHkgcmV0dXJuZWQg
dHJ1ZSBkdXJpbmcgdGhlIGN0b3IgaW5pdGlhdGl6YXRpb24gb2YgbV91c2VHREkKICAgICAgICAg
QVNTRVJUKHNoYWRvd0NvbG9yLmFscGhhKCkgPT0gMjU1KTsKQEAgLTI4NSw3ICsyODUsNyBAQCBi
b29sIFRyYW5zcGFyZW5jeUF3YXJlR2x5cGhQYWludGVyOjpkcmF3R2x5cGhzKGludCBudW1HbHlw
aHMsCiAgICAgICAgIENPTE9SUkVGIHRleHRDb2xvciA9IHNraWE6OlNrQ29sb3JUb0NPTE9SUkVG
KFNrQ29sb3JTZXRBUkdCKDI1NSwgc2hhZG93Q29sb3IucmVkKCksIHNoYWRvd0NvbG9yLmdyZWVu
KCksIHNoYWRvd0NvbG9yLmJsdWUoKSkpOwogICAgICAgICBDT0xPUlJFRiBzYXZlZFRleHRDb2xv
ciA9IEdldFRleHRDb2xvcihtX2hkYyk7CiAgICAgICAgIFNldFRleHRDb2xvcihtX2hkYywgdGV4
dENvbG9yKTsKLSAgICAgICAgRXh0VGV4dE91dChtX2hkYywgeCArIHNoYWRvd1NpemUud2lkdGgo
KSwgeSArIHNoYWRvd1NpemUuaGVpZ2h0KCksIEVUT19HTFlQSF9JTkRFWCwgMCwgcmVpbnRlcnBy
ZXRfY2FzdDxjb25zdCB3Y2hhcl90Kj4oJmdseXBoc1swXSksIG51bUdseXBocywgJmFkdmFuY2Vz
WzBdKTsKKyAgICAgICAgRXh0VGV4dE91dChtX2hkYywgeCArIHNoYWRvd09mZnNldC53aWR0aCgp
LCB5ICsgc2hhZG93T2Zmc2V0LmhlaWdodCgpLCBFVE9fR0xZUEhfSU5ERVgsIDAsIHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3Qgd2NoYXJfdCo+KCZnbHlwaHNbMF0pLCBudW1HbHlwaHMsICZhZHZhbmNl
c1swXSk7CiAgICAgICAgIFNldFRleHRDb2xvcihtX2hkYywgc2F2ZWRUZXh0Q29sb3IpOwogICAg
IH0KICAgICAKQEAgLTQ4MywxNSArNDgzLDE1IEBAIHZvaWQgRm9udDo6ZHJhd0NvbXBsZXhUZXh0
KEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LAogCiAgICAgLy8gSWYgdGhlcmUgaXMg
YSBub24tYmx1ciBzaGFkb3cgYW5kIGJvdGggdGhlIGZpbGwgY29sb3IgYW5kIHNoYWRvdyBjb2xv
ciAKICAgICAvLyBhcmUgb3BhcXVlLCBoYW5kbGUgd2l0aG91dCBza2lhLiAKLSAgICBGbG9hdFNp
emUgc2hhZG93U2l6ZTsKKyAgICBGbG9hdFNpemUgc2hhZG93T2Zmc2V0OwogICAgIGZsb2F0IHNo
YWRvd0JsdXI7CiAgICAgQ29sb3Igc2hhZG93Q29sb3I7Ci0gICAgaWYgKGdyYXBoaWNzQ29udGV4
dC0+Z2V0U2hhZG93KHNoYWRvd1NpemUsIHNoYWRvd0JsdXIsIHNoYWRvd0NvbG9yKSAmJiB3aW5k
b3dzQ2FuSGFuZGxlRHJhd1RleHRTaGFkb3coZ3JhcGhpY3NDb250ZXh0KSkgeworICAgIGlmIChn
cmFwaGljc0NvbnRleHQtPmdldFNoYWRvdyhzaGFkb3dPZmZzZXQsIHNoYWRvd0JsdXIsIHNoYWRv
d0NvbG9yKSAmJiB3aW5kb3dzQ2FuSGFuZGxlRHJhd1RleHRTaGFkb3coZ3JhcGhpY3NDb250ZXh0
KSkgewogICAgICAgICBDT0xPUlJFRiB0ZXh0Q29sb3IgPSBza2lhOjpTa0NvbG9yVG9DT0xPUlJF
RihTa0NvbG9yU2V0QVJHQigyNTUsIHNoYWRvd0NvbG9yLnJlZCgpLCBzaGFkb3dDb2xvci5ncmVl
bigpLCBzaGFkb3dDb2xvci5ibHVlKCkpKTsKICAgICAgICAgQ09MT1JSRUYgc2F2ZWRUZXh0Q29s
b3IgPSBHZXRUZXh0Q29sb3IoaGRjKTsKICAgICAgICAgU2V0VGV4dENvbG9yKGhkYywgdGV4dENv
bG9yKTsKLSAgICAgICAgc3RhdGUuZHJhdyhncmFwaGljc0NvbnRleHQsIGhkYywgc3RhdGljX2Nh
c3Q8aW50Pihwb2ludC54KCkpICsgc2hhZG93U2l6ZS53aWR0aCgpLAotICAgICAgICAgICAgICAg
ICAgIHN0YXRpY19jYXN0PGludD4ocG9pbnQueSgpIC0gYXNjZW50KCkpICsgc2hhZG93U2l6ZS5o
ZWlnaHQoKSwgZnJvbSwgdG8pOworICAgICAgICBzdGF0ZS5kcmF3KGdyYXBoaWNzQ29udGV4dCwg
aGRjLCBzdGF0aWNfY2FzdDxpbnQ+KHBvaW50LngoKSkgKyBzaGFkb3dPZmZzZXQud2lkdGgoKSwK
KyAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxpbnQ+KHBvaW50LnkoKSAtIGFzY2VudCgp
KSArIHNoYWRvd09mZnNldC5oZWlnaHQoKSwgZnJvbSwgdG8pOwogICAgICAgICBTZXRUZXh0Q29s
b3IoaGRjLCBzYXZlZFRleHRDb2xvcik7IAogICAgIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9ndGsvRm9udEd0ay5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2d0ay9Gb250R3RrLmNwcAppbmRleCA5MmY4ODE2Li40ODliYWQ3IDEwMDY0NAotLS0gYS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2d0ay9Gb250R3RrLmNwcAorKysgYi9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2d0ay9Gb250R3RrLmNwcApAQCAtMjQxLDExICsyNDEsMTEgQEAgdm9p
ZCBGb250OjpkcmF3Q29tcGxleFRleHQoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBU
ZXh0UnVuJiBydW4sIGNvbnN0IEYKICAgICBmbG9hdCByZWQsIGdyZWVuLCBibHVlLCBhbHBoYTsK
IAogICAgIC8vIFRleHQgc2hhZG93LCBpbnNwaXJlZCBieSBGb250TWFjCi0gICAgRmxvYXRTaXpl
IHNoYWRvd1NpemU7CisgICAgRmxvYXRTaXplIHNoYWRvd09mZnNldDsKICAgICBmbG9hdCBzaGFk
b3dCbHVyID0gMDsKICAgICBDb2xvciBzaGFkb3dDb2xvcjsKICAgICBib29sIGhhc1NoYWRvdyA9
IGNvbnRleHQtPnRleHREcmF3aW5nTW9kZSgpID09IGNUZXh0RmlsbCAmJgotICAgICAgICBjb250
ZXh0LT5nZXRTaGFkb3coc2hhZG93U2l6ZSwgc2hhZG93Qmx1ciwgc2hhZG93Q29sb3IpOworICAg
ICAgICBjb250ZXh0LT5nZXRTaGFkb3coc2hhZG93T2Zmc2V0LCBzaGFkb3dCbHVyLCBzaGFkb3dD
b2xvcik7CiAKICAgICAvLyBUT0RPOiBCbHVyIHN1cHBvcnQKICAgICBpZiAoaGFzU2hhZG93KSB7
CkBAIC0yNTcsNyArMjU3LDcgQEAgdm9pZCBGb250OjpkcmF3Q29tcGxleFRleHQoR3JhcGhpY3ND
b250ZXh0KiBjb250ZXh0LCBjb25zdCBUZXh0UnVuJiBydW4sIGNvbnN0IEYKICAgICAgICAgc2hh
ZG93RmlsbENvbG9yLmdldFJHQkEocmVkLCBncmVlbiwgYmx1ZSwgYWxwaGEpOwogICAgICAgICBj
YWlyb19zZXRfc291cmNlX3JnYmEoY3IsIHJlZCwgZ3JlZW4sIGJsdWUsIGFscGhhKTsKIAotICAg
ICAgICBjYWlyb190cmFuc2xhdGUoY3IsIHNoYWRvd1NpemUud2lkdGgoKSwgc2hhZG93U2l6ZS5o
ZWlnaHQoKSk7CisgICAgICAgIGNhaXJvX3RyYW5zbGF0ZShjciwgc2hhZG93T2Zmc2V0LndpZHRo
KCksIHNoYWRvd09mZnNldC5oZWlnaHQoKSk7CiAKICAgICAgICAgaWYgKHBhcnRpYWxSZWdpb24p
IHsKICAgICAgICAgICAgIGdka19jYWlyb19yZWdpb24oY3IsIHBhcnRpYWxSZWdpb24pOwpAQCAt
MjkwLDcgKzI5MCw3IEBAIHZvaWQgRm9udDo6ZHJhd0NvbXBsZXhUZXh0KEdyYXBoaWNzQ29udGV4
dCogY29udGV4dCwgY29uc3QgVGV4dFJ1biYgcnVuLCBjb25zdCBGCiAKICAgICAvLyBSZS1lbmFi
bGUgdGhlIHBsYXRmb3JtIHNoYWRvdyB3ZSBkaXNhYmxlZCBlYXJsaWVyCiAgICAgaWYgKGhhc1No
YWRvdykKLSAgICAgICAgY29udGV4dC0+c2V0U2hhZG93KHNoYWRvd1NpemUsIHNoYWRvd0JsdXIs
IHNoYWRvd0NvbG9yLCBEZXZpY2VDb2xvclNwYWNlKTsKKyAgICAgICAgY29udGV4dC0+c2V0U2hh
ZG93KHNoYWRvd09mZnNldCwgc2hhZG93Qmx1ciwgc2hhZG93Q29sb3IsIERldmljZUNvbG9yU3Bh
Y2UpOwogCiAgICAgLy8gUGFuZ28gc29tZXRpbWVzIGxlYXZlcyBiZWhpbmQgcGF0aHMgd2UgZG9u
J3Qgd2FudAogICAgIGNhaXJvX25ld19wYXRoKGNyKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRNYWMubW0gYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L21hYy9Gb250TWFjLm1tCmluZGV4IGRiNzc0MDIuLjMzYTkzMGIgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRNYWMubW0KKysrIGIvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9tYWMvRm9udE1hYy5tbQpAQCAtMTM1LDExICsxMzUsMTEgQEAgdm9pZCBGb250
OjpkcmF3R2x5cGhzKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgU2ltcGxlRm9udERh
dGEqIGZvbnQsIGNvbnMKICAgICAgICAgQ0dDb250ZXh0U2V0Rm9udFNpemUoY2dDb250ZXh0LCBw
bGF0Zm9ybURhdGEubV9zaXplKTsKIAogCi0gICAgRmxvYXRTaXplIHNoYWRvd1NpemU7CisgICAg
RmxvYXRTaXplIHNoYWRvd09mZnNldDsKICAgICBmbG9hdCBzaGFkb3dCbHVyOwogICAgIENvbG9y
IHNoYWRvd0NvbG9yOwogICAgIENvbG9yU3BhY2UgZmlsbENvbG9yU3BhY2UgPSBjb250ZXh0LT5m
aWxsQ29sb3JTcGFjZSgpOwotICAgIGNvbnRleHQtPmdldFNoYWRvdyhzaGFkb3dTaXplLCBzaGFk
b3dCbHVyLCBzaGFkb3dDb2xvcik7CisgICAgY29udGV4dC0+Z2V0U2hhZG93KHNoYWRvd09mZnNl
dCwgc2hhZG93Qmx1ciwgc2hhZG93Q29sb3IpOwogCiAgICAgYm9vbCBoYXNTaW1wbGVTaGFkb3cg
PSBjb250ZXh0LT50ZXh0RHJhd2luZ01vZGUoKSA9PSBjVGV4dEZpbGwgJiYgc2hhZG93Q29sb3Iu
aXNWYWxpZCgpICYmICFzaGFkb3dCbHVyICYmICFwbGF0Zm9ybURhdGEuaXNDb2xvckJpdG1hcEZv
bnQoKTsKICAgICBpZiAoaGFzU2ltcGxlU2hhZG93KSB7CkBAIC0xNDgsMTAgKzE0OCwxMCBAQCB2
b2lkIEZvbnQ6OmRyYXdHbHlwaHMoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBTaW1w
bGVGb250RGF0YSogZm9udCwgY29ucwogICAgICAgICBDb2xvciBmaWxsQ29sb3IgPSBjb250ZXh0
LT5maWxsQ29sb3IoKTsKICAgICAgICAgQ29sb3Igc2hhZG93RmlsbENvbG9yKHNoYWRvd0NvbG9y
LnJlZCgpLCBzaGFkb3dDb2xvci5ncmVlbigpLCBzaGFkb3dDb2xvci5ibHVlKCksIHNoYWRvd0Nv
bG9yLmFscGhhKCkgKiBmaWxsQ29sb3IuYWxwaGEoKSAvIDI1NSk7CiAgICAgICAgIGNvbnRleHQt
PnNldEZpbGxDb2xvcihzaGFkb3dGaWxsQ29sb3IsIGZpbGxDb2xvclNwYWNlKTsKLSAgICAgICAg
Q0dDb250ZXh0U2V0VGV4dFBvc2l0aW9uKGNnQ29udGV4dCwgcG9pbnQueCgpICsgc2hhZG93U2l6
ZS53aWR0aCgpLCBwb2ludC55KCkgKyBzaGFkb3dTaXplLmhlaWdodCgpKTsKKyAgICAgICAgQ0dD
b250ZXh0U2V0VGV4dFBvc2l0aW9uKGNnQ29udGV4dCwgcG9pbnQueCgpICsgc2hhZG93T2Zmc2V0
LndpZHRoKCksIHBvaW50LnkoKSArIHNoYWRvd09mZnNldC5oZWlnaHQoKSk7CiAgICAgICAgIHNo
b3dHbHlwaHNXaXRoQWR2YW5jZXMocGxhdGZvcm1EYXRhLCBjZ0NvbnRleHQsIGdseXBoQnVmZmVy
LmdseXBocyhmcm9tKSwgZ2x5cGhCdWZmZXIuYWR2YW5jZXMoZnJvbSksIG51bUdseXBocyk7CiAg
ICAgICAgIGlmIChmb250LT5zeW50aGV0aWNCb2xkT2Zmc2V0KCkpIHsKLSAgICAgICAgICAgIENH
Q29udGV4dFNldFRleHRQb3NpdGlvbihjZ0NvbnRleHQsIHBvaW50LngoKSArIHNoYWRvd1NpemUu
d2lkdGgoKSArIGZvbnQtPnN5bnRoZXRpY0JvbGRPZmZzZXQoKSwgcG9pbnQueSgpICsgc2hhZG93
U2l6ZS5oZWlnaHQoKSk7CisgICAgICAgICAgICBDR0NvbnRleHRTZXRUZXh0UG9zaXRpb24oY2dD
b250ZXh0LCBwb2ludC54KCkgKyBzaGFkb3dPZmZzZXQud2lkdGgoKSArIGZvbnQtPnN5bnRoZXRp
Y0JvbGRPZmZzZXQoKSwgcG9pbnQueSgpICsgc2hhZG93T2Zmc2V0LmhlaWdodCgpKTsKICAgICAg
ICAgICAgIHNob3dHbHlwaHNXaXRoQWR2YW5jZXMocGxhdGZvcm1EYXRhLCBjZ0NvbnRleHQsIGds
eXBoQnVmZmVyLmdseXBocyhmcm9tKSwgZ2x5cGhCdWZmZXIuYWR2YW5jZXMoZnJvbSksIG51bUds
eXBocyk7CiAgICAgICAgIH0KICAgICAgICAgY29udGV4dC0+c2V0RmlsbENvbG9yKGZpbGxDb2xv
ciwgZmlsbENvbG9yU3BhY2UpOwpAQCAtMTY1LDcgKzE2NSw3IEBAIHZvaWQgRm9udDo6ZHJhd0ds
eXBocyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IFNpbXBsZUZvbnREYXRhKiBmb250
LCBjb25zCiAgICAgfQogCiAgICAgaWYgKGhhc1NpbXBsZVNoYWRvdykKLSAgICAgICAgY29udGV4
dC0+c2V0U2hhZG93KHNoYWRvd1NpemUsIHNoYWRvd0JsdXIsIHNoYWRvd0NvbG9yLCBmaWxsQ29s
b3JTcGFjZSk7CisgICAgICAgIGNvbnRleHQtPnNldFNoYWRvdyhzaGFkb3dPZmZzZXQsIHNoYWRv
d0JsdXIsIHNoYWRvd0NvbG9yLCBmaWxsQ29sb3JTcGFjZSk7CiAKICAgICBpZiAob3JpZ2luYWxT
aG91bGRVc2VGb250U21vb3RoaW5nICE9IG5ld1Nob3VsZFVzZUZvbnRTbW9vdGhpbmcpCiAgICAg
ICAgIENHQ29udGV4dFNldFNob3VsZFNtb290aEZvbnRzKGNnQ29udGV4dCwgb3JpZ2luYWxTaG91
bGRVc2VGb250U21vb3RoaW5nKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvcXQvSW1hZ2VRdC5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ltYWdlUXQu
Y3BwCmluZGV4IGUwYWM1NzQuLmMwY2ZhZTQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvcXQvSW1hZ2VRdC5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9x
dC9JbWFnZVF0LmNwcApAQCAtMTkwLDEyICsxOTAsMTIgQEAgdm9pZCBCaXRtYXBJbWFnZTo6ZHJh
dyhHcmFwaGljc0NvbnRleHQqIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0LAogICAgIFFQYWlu
dGVyOjpDb21wb3NpdGlvbk1vZGUgbGFzdENvbXBvc2l0aW9uTW9kZSA9IHBhaW50ZXItPmNvbXBv
c2l0aW9uTW9kZSgpOwogICAgIHBhaW50ZXItPnNldENvbXBvc2l0aW9uTW9kZShjb21wb3NpdGlv
bk1vZGUpOwogCi0gICAgRmxvYXRTaXplIHNoYWRvd1NpemU7CisgICAgRmxvYXRTaXplIHNoYWRv
d09mZnNldDsKICAgICBmbG9hdCBzaGFkb3dCbHVyOwogICAgIENvbG9yIHNoYWRvd0NvbG9yOwot
ICAgIGlmIChjdHh0LT5nZXRTaGFkb3coc2hhZG93U2l6ZSwgc2hhZG93Qmx1ciwgc2hhZG93Q29s
b3IpKSB7CisgICAgaWYgKGN0eHQtPmdldFNoYWRvdyhzaGFkb3dPZmZzZXQsIHNoYWRvd0JsdXIs
IHNoYWRvd0NvbG9yKSkgewogICAgICAgICBGbG9hdFJlY3Qgc2hhZG93SW1hZ2VSZWN0KG5vcm1h
bGl6ZWREc3QpOwotICAgICAgICBzaGFkb3dJbWFnZVJlY3QubW92ZShzaGFkb3dTaXplLndpZHRo
KCksIHNoYWRvd1NpemUuaGVpZ2h0KCkpOworICAgICAgICBzaGFkb3dJbWFnZVJlY3QubW92ZShz
aGFkb3dPZmZzZXQud2lkdGgoKSwgc2hhZG93T2Zmc2V0LmhlaWdodCgpKTsKIAogICAgICAgICBR
SW1hZ2Ugc2hhZG93SW1hZ2UoUVNpemUoc3RhdGljX2Nhc3Q8aW50Pihub3JtYWxpemVkU3JjLndp
ZHRoKCkpLCBzdGF0aWNfY2FzdDxpbnQ+KG5vcm1hbGl6ZWRTcmMuaGVpZ2h0KCkpKSwgUUltYWdl
OjpGb3JtYXRfQVJHQjMyX1ByZW11bHRpcGxpZWQpOwogICAgICAgICBRUGFpbnRlciBwKCZzaGFk
b3dJbWFnZSk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L1N0aWxs
SW1hZ2VRdC5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L1N0aWxsSW1hZ2VRdC5j
cHAKaW5kZXggOWM2YWNhYi4uMzAzODM1NiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9xdC9TdGlsbEltYWdlUXQuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvcXQvU3RpbGxJbWFnZVF0LmNwcApAQCAtNzYsMTIgKzc2LDEyIEBAIHZvaWQgU3RpbGxJbWFn
ZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGN0eHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0LAogCiAg
ICAgY3R4dC0+c2V0Q29tcG9zaXRlT3BlcmF0aW9uKG9wKTsKIAotICAgIEZsb2F0U2l6ZSBzaGFk
b3dTaXplOworICAgIEZsb2F0U2l6ZSBzaGFkb3dPZmZzZXQ7CiAgICAgZmxvYXQgc2hhZG93Qmx1
cjsKICAgICBDb2xvciBzaGFkb3dDb2xvcjsKLSAgICBpZiAoY3R4dC0+Z2V0U2hhZG93KHNoYWRv
d1NpemUsIHNoYWRvd0JsdXIsIHNoYWRvd0NvbG9yKSkgeworICAgIGlmIChjdHh0LT5nZXRTaGFk
b3coc2hhZG93T2Zmc2V0LCBzaGFkb3dCbHVyLCBzaGFkb3dDb2xvcikpIHsKICAgICAgICAgRmxv
YXRSZWN0IHNoYWRvd0ltYWdlUmVjdChub3JtYWxpemVkRHN0KTsKLSAgICAgICAgc2hhZG93SW1h
Z2VSZWN0Lm1vdmUoc2hhZG93U2l6ZS53aWR0aCgpLCBzaGFkb3dTaXplLmhlaWdodCgpKTsKKyAg
ICAgICAgc2hhZG93SW1hZ2VSZWN0Lm1vdmUoc2hhZG93T2Zmc2V0LndpZHRoKCksIHNoYWRvd09m
ZnNldC5oZWlnaHQoKSk7CiAKICAgICAgICAgUUltYWdlIHNoYWRvd0ltYWdlKFFTaXplKHN0YXRp
Y19jYXN0PGludD4obm9ybWFsaXplZFNyYy53aWR0aCgpKSwgc3RhdGljX2Nhc3Q8aW50Pihub3Jt
YWxpemVkU3JjLmhlaWdodCgpKSksIFFJbWFnZTo6Rm9ybWF0X0FSR0IzMl9QcmVtdWx0aXBsaWVk
KTsKICAgICAgICAgUVBhaW50ZXIgcCgmc2hhZG93SW1hZ2UpOwpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL1NraWFGb250V2luLmNwcCBiL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvc2tpYS9Ta2lhRm9udFdpbi5jcHAKaW5kZXggNDQwMDNiYi4uOWVkYjc3NSAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL1NraWFGb250V2luLmNw
cAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvU2tpYUZvbnRXaW4uY3BwCkBA
IC0yMjIsMTEgKzIyMiwxMSBAQCB2b2lkIFNraWFXaW5PdXRsaW5lQ2FjaGU6OnJlbW92ZVBhdGhz
Rm9yRm9udChIRk9OVCBoZm9udCkKIAogYm9vbCB3aW5kb3dzQ2FuSGFuZGxlRHJhd1RleHRTaGFk
b3coR3JhcGhpY3NDb250ZXh0ICpjb250ZXh0KQogewotICAgIEZsb2F0U2l6ZSBzaGFkb3dTaXpl
OworICAgIEZsb2F0U2l6ZSBzaGFkb3dPZmZzZXQ7CiAgICAgZmxvYXQgc2hhZG93Qmx1cjsKICAg
ICBDb2xvciBzaGFkb3dDb2xvcjsKIAotICAgIGJvb2wgaGFzU2hhZG93ID0gY29udGV4dC0+Z2V0
U2hhZG93KHNoYWRvd1NpemUsIHNoYWRvd0JsdXIsIHNoYWRvd0NvbG9yKTsKKyAgICBib29sIGhh
c1NoYWRvdyA9IGNvbnRleHQtPmdldFNoYWRvdyhzaGFkb3dPZmZzZXQsIHNoYWRvd0JsdXIsIHNo
YWRvd0NvbG9yKTsKICAgICByZXR1cm4gKGhhc1NoYWRvdyAmJiAoc2hhZG93Qmx1ciA9PSAwKSAm
JiAoc2hhZG93Q29sb3IuYWxwaGEoKSA9PSAyNTUpICYmIChjb250ZXh0LT5maWxsQ29sb3IoKS5h
bHBoYSgpID09IDI1NSkpOwogfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3dpbi9Gb250Q0dXaW4uY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9u
dENHV2luLmNwcAppbmRleCAzNGY5YjA3Li45ZDgxODM4IDEwMDY0NAotLS0gYS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q0dXaW4uY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0ZvbnRDR1dpbi5jcHAKQEAgLTE0MCwxMSArMTQwLDExIEBAIHN0YXRpYyB2
b2lkIGRyYXdHRElHbHlwaHMoR3JhcGhpY3NDb250ZXh0KiBncmFwaGljc0NvbnRleHQsIGNvbnN0
IFNpbXBsZUZvbnREYXRhCiAKICAgICAgICAgZHJhd0ludG9CaXRtYXAgPSBmaWxsQ29sb3IuYWxw
aGEoKSAhPSAyNTUgfHwgZ3JhcGhpY3NDb250ZXh0LT5pblRyYW5zcGFyZW5jeUxheWVyKCk7CiAg
ICAgICAgIGlmICghZHJhd0ludG9CaXRtYXApIHsKLSAgICAgICAgICAgIEZsb2F0U2l6ZSBzaXpl
OworICAgICAgICAgICAgRmxvYXRTaXplIG9mZnNldDsKICAgICAgICAgICAgIGZsb2F0IGJsdXI7
CiAgICAgICAgICAgICBDb2xvciBjb2xvcjsKLSAgICAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+
Z2V0U2hhZG93KHNpemUsIGJsdXIsIGNvbG9yKTsKLSAgICAgICAgICAgIGRyYXdJbnRvQml0bWFw
ID0gIXNpemUuaXNFbXB0eSgpIHx8IGJsdXI7CisgICAgICAgICAgICBncmFwaGljc0NvbnRleHQt
PmdldFNoYWRvdyhvZmZzZXQsIGJsdXIsIGNvbG9yKTsKKyAgICAgICAgICAgIGRyYXdJbnRvQml0
bWFwID0gIW9mZnNldC5pc0VtcHR5KCkgfHwgYmx1cjsKICAgICAgICAgfQogICAgIH0KIApAQCAt
MzQ5LDEwICszNDksMTAgQEAgdm9pZCBGb250OjpkcmF3R2x5cGhzKEdyYXBoaWNzQ29udGV4dCog
Z3JhcGhpY3NDb250ZXh0LCBjb25zdCBTaW1wbGVGb250RGF0YSogZm8KICAgICBDR0NvbnRleHRT
ZXRGb250U2l6ZShjZ0NvbnRleHQsIHBsYXRmb3JtRGF0YS5zaXplKCkpOwogICAgIHdrU2V0Q0dD
b250ZXh0Rm9udFJlbmRlcmluZ1N0eWxlKGNnQ29udGV4dCwgZm9udC0+aXNTeXN0ZW1Gb250KCks
IGZhbHNlLCBmb250LT5wbGF0Zm9ybURhdGEoKS51c2VHREkoKSk7CiAKLSAgICBGbG9hdFNpemUg
c2hhZG93U2l6ZTsKKyAgICBGbG9hdFNpemUgc2hhZG93T2Zmc2V0OwogICAgIGZsb2F0IHNoYWRv
d0JsdXI7CiAgICAgQ29sb3Igc2hhZG93Q29sb3I7Ci0gICAgZ3JhcGhpY3NDb250ZXh0LT5nZXRT
aGFkb3coc2hhZG93U2l6ZSwgc2hhZG93Qmx1ciwgc2hhZG93Q29sb3IpOworICAgIGdyYXBoaWNz
Q29udGV4dC0+Z2V0U2hhZG93KHNoYWRvd09mZnNldCwgc2hhZG93Qmx1ciwgc2hhZG93Q29sb3Ip
OwogCiAgICAgYm9vbCBoYXNTaW1wbGVTaGFkb3cgPSBncmFwaGljc0NvbnRleHQtPnRleHREcmF3
aW5nTW9kZSgpID09IGNUZXh0RmlsbCAmJiBzaGFkb3dDb2xvci5pc1ZhbGlkKCkgJiYgIXNoYWRv
d0JsdXI7CiAgICAgaWYgKGhhc1NpbXBsZVNoYWRvdykgewpAQCAtMzYxLDEwICszNjEsMTAgQEAg
dm9pZCBGb250OjpkcmF3R2x5cGhzKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBj
b25zdCBTaW1wbGVGb250RGF0YSogZm8KICAgICAgICAgQ29sb3IgZmlsbENvbG9yID0gZ3JhcGhp
Y3NDb250ZXh0LT5maWxsQ29sb3IoKTsKICAgICAgICAgQ29sb3Igc2hhZG93RmlsbENvbG9yKHNo
YWRvd0NvbG9yLnJlZCgpLCBzaGFkb3dDb2xvci5ncmVlbigpLCBzaGFkb3dDb2xvci5ibHVlKCks
IHNoYWRvd0NvbG9yLmFscGhhKCkgKiBmaWxsQ29sb3IuYWxwaGEoKSAvIDI1NSk7CiAgICAgICAg
IGdyYXBoaWNzQ29udGV4dC0+c2V0RmlsbENvbG9yKHNoYWRvd0ZpbGxDb2xvciwgRGV2aWNlQ29s
b3JTcGFjZSk7Ci0gICAgICAgIENHQ29udGV4dFNldFRleHRQb3NpdGlvbihjZ0NvbnRleHQsIHBv
aW50LngoKSArIHRyYW5zbGF0aW9uLndpZHRoKCkgKyBzaGFkb3dTaXplLndpZHRoKCksIHBvaW50
LnkoKSArIHRyYW5zbGF0aW9uLmhlaWdodCgpICsgc2hhZG93U2l6ZS5oZWlnaHQoKSk7CisgICAg
ICAgIENHQ29udGV4dFNldFRleHRQb3NpdGlvbihjZ0NvbnRleHQsIHBvaW50LngoKSArIHRyYW5z
bGF0aW9uLndpZHRoKCkgKyBzaGFkb3dPZmZzZXQud2lkdGgoKSwgcG9pbnQueSgpICsgdHJhbnNs
YXRpb24uaGVpZ2h0KCkgKyBzaGFkb3dPZmZzZXQuaGVpZ2h0KCkpOwogICAgICAgICBDR0NvbnRl
eHRTaG93R2x5cGhzV2l0aEFkdmFuY2VzKGNnQ29udGV4dCwgZ2x5cGhCdWZmZXIuZ2x5cGhzKGZy
b20pLCBnbHlwaEJ1ZmZlci5hZHZhbmNlcyhmcm9tKSwgbnVtR2x5cGhzKTsKICAgICAgICAgaWYg
KGZvbnQtPnN5bnRoZXRpY0JvbGRPZmZzZXQoKSkgewotICAgICAgICAgICAgQ0dDb250ZXh0U2V0
VGV4dFBvc2l0aW9uKGNnQ29udGV4dCwgcG9pbnQueCgpICsgdHJhbnNsYXRpb24ud2lkdGgoKSAr
IHNoYWRvd1NpemUud2lkdGgoKSArIGZvbnQtPnN5bnRoZXRpY0JvbGRPZmZzZXQoKSwgcG9pbnQu
eSgpICsgdHJhbnNsYXRpb24uaGVpZ2h0KCkgKyBzaGFkb3dTaXplLmhlaWdodCgpKTsKKyAgICAg
ICAgICAgIENHQ29udGV4dFNldFRleHRQb3NpdGlvbihjZ0NvbnRleHQsIHBvaW50LngoKSArIHRy
YW5zbGF0aW9uLndpZHRoKCkgKyBzaGFkb3dPZmZzZXQud2lkdGgoKSArIGZvbnQtPnN5bnRoZXRp
Y0JvbGRPZmZzZXQoKSwgcG9pbnQueSgpICsgdHJhbnNsYXRpb24uaGVpZ2h0KCkgKyBzaGFkb3dP
ZmZzZXQuaGVpZ2h0KCkpOwogICAgICAgICAgICAgQ0dDb250ZXh0U2hvd0dseXBoc1dpdGhBZHZh
bmNlcyhjZ0NvbnRleHQsIGdseXBoQnVmZmVyLmdseXBocyhmcm9tKSwgZ2x5cGhCdWZmZXIuYWR2
YW5jZXMoZnJvbSksIG51bUdseXBocyk7CiAgICAgICAgIH0KICAgICAgICAgZ3JhcGhpY3NDb250
ZXh0LT5zZXRGaWxsQ29sb3IoZmlsbENvbG9yLCBEZXZpY2VDb2xvclNwYWNlKTsKQEAgLTM3OCw3
ICszNzgsNyBAQCB2b2lkIEZvbnQ6OmRyYXdHbHlwaHMoR3JhcGhpY3NDb250ZXh0KiBncmFwaGlj
c0NvbnRleHQsIGNvbnN0IFNpbXBsZUZvbnREYXRhKiBmbwogICAgIH0KIAogICAgIGlmIChoYXNT
aW1wbGVTaGFkb3cpCi0gICAgICAgIGdyYXBoaWNzQ29udGV4dC0+c2V0U2hhZG93KHNoYWRvd1Np
emUsIHNoYWRvd0JsdXIsIHNoYWRvd0NvbG9yLCBEZXZpY2VDb2xvclNwYWNlKTsKKyAgICAgICAg
Z3JhcGhpY3NDb250ZXh0LT5zZXRTaGFkb3coc2hhZG93T2Zmc2V0LCBzaGFkb3dCbHVyLCBzaGFk
b3dDb2xvciwgRGV2aWNlQ29sb3JTcGFjZSk7CiAKICAgICB3a1Jlc3RvcmVGb250U21vb3RoaW5n
U3R5bGUoY2dDb250ZXh0LCBvbGRGb250U21vb3RoaW5nU3R5bGUpOwogfQpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW5jZS9HcmFwaGljc0NvbnRleHRXaW5jZS5jcHAg
Yi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbmNlL0dyYXBoaWNzQ29udGV4dFdpbmNlLmNw
cAppbmRleCBlNDQ2NmM4Li4xNjI1MTJhIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbmNlL0dyYXBoaWNzQ29udGV4dFdpbmNlLmNwcAorKysgYi9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbmNlL0dyYXBoaWNzQ29udGV4dFdpbmNlLmNwcApAQCAtMTI2MCwxNSAr
MTI2MCwxNSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZmlsbFJvdW5kZWRSZWN0KGNvbnN0IElu
dFJlY3QmIGZpbGxSZWN0LCBjb25zdCBJbnRTaXplJiB0bwogICAgIGlmICghbV9kYXRhLT5tX2Rj
KQogICAgICAgICByZXR1cm47CiAKLSAgICBGbG9hdFNpemUgc2hhZG93U2l6ZTsKKyAgICBGbG9h
dFNpemUgc2hhZG93T2Zmc2V0OwogICAgIGZsb2F0IHNoYWRvd0JsdXIgPSAwOwogICAgIENvbG9y
IHNoYWRvd0NvbG9yOwogICAgICAgICAKLSAgICBnZXRTaGFkb3coc2hhZG93U2l6ZSwgc2hhZG93
Qmx1ciwgc2hhZG93Q29sb3IpOworICAgIGdldFNoYWRvdyhzaGFkb3dPZmZzZXQsIHNoYWRvd0Js
dXIsIHNoYWRvd0NvbG9yKTsKICAgICAKICAgICBJbnRSZWN0IGRzdFJlY3QgPSBmaWxsUmVjdDsK
ICAgICAKLSAgICBkc3RSZWN0Lm1vdmUoc3RhYmxlUm91bmQoc2hhZG93U2l6ZS53aWR0aCgpKSwg
c3RhYmxlUm91bmQoc2hhZG93U2l6ZS5oZWlnaHQoKSkpOworICAgIGRzdFJlY3QubW92ZShzdGFi
bGVSb3VuZChzaGFkb3dPZmZzZXQud2lkdGgoKSksIHN0YWJsZVJvdW5kKHNoYWRvd09mZnNldC5o
ZWlnaHQoKSkpOwogICAgIGRzdFJlY3QuaW5mbGF0ZShzdGFibGVSb3VuZChzaGFkb3dCbHVyKSk7
CiAgICAgZHN0UmVjdCA9IG1fZGF0YS0+bWFwUmVjdChkc3RSZWN0KTsKICAgCkBAIC0xNjg3LDE3
ICsxNjg3LDE3IEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0OjpkcmF3VGV4dChjb25zdCBTaW1wbGVG
b250RGF0YSogZm9udERhdGEsIGNvbnN0IEdseXBoQnVmZmVyCiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKLSAgICBGbG9hdFNpemUgc2hhZG93U2l6ZTsKKyAgICBGbG9hdFNpemUgc2hhZG93T2Zm
c2V0OwogICAgIGZsb2F0IHNoYWRvd0JsdXIgPSAwOwogICAgIENvbG9yIHNoYWRvd0NvbG9yOwog
ICAgIGJvb2wgaGFzU2hhZG93ID0gdGV4dERyYXdpbmdNb2RlKCkgPT0gY1RleHRGaWxsCi0gICAg
ICAgICYmIGdldFNoYWRvdyhzaGFkb3dTaXplLCBzaGFkb3dCbHVyLCBzaGFkb3dDb2xvcikKKyAg
ICAgICAgJiYgZ2V0U2hhZG93KHNoYWRvd09mZnNldCwgc2hhZG93Qmx1ciwgc2hhZG93Q29sb3Ip
CiAgICAgICAgICYmIHNoYWRvd0NvbG9yLmFscGhhKCk7CiAgICAgQ09MT1JSRUYgc2hhZG93UkdC
Q29sb3I7CiAgICAgRmxvYXRQb2ludCB0clNoYWRvd1BvaW50OwogICAgIGlmIChoYXNTaGFkb3cp
IHsKICAgICAgICAgc2hhZG93UkdCQ29sb3IgPSBSR0Ioc2hhZG93Q29sb3IucmVkKCksIHNoYWRv
d0NvbG9yLmdyZWVuKCksIHNoYWRvd0NvbG9yLmJsdWUoKSk7Ci0gICAgICAgIHRyU2hhZG93UG9p
bnQgPSBtX2RhdGEtPm1hcFBvaW50KHN0YXJ0UG9pbnQgKyBzaGFkb3dTaXplKTsKKyAgICAgICAg
dHJTaGFkb3dQb2ludCA9IG1fZGF0YS0+bWFwUG9pbnQoc3RhcnRQb2ludCArIHNoYWRvd09mZnNl
dCk7CiAgICAgfQogCiAgICAgSEdESU9CSiBoT2xkRm9udCA9IFNlbGVjdE9iamVjdChtX2RhdGEt
Pm1fZGMsIGhGb250KTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>65419</attachid>
            <date>2010-08-25 07:59:56 -0700</date>
            <delta_ts>2010-08-25 08:11:27 -0700</delta_ts>
            <desc>Proposed patch</desc>
            <filename>offset_shadow.patch</filename>
            <type>text/plain</type>
            <size>28729</size>
            <attacher name="Alejandro G. Castro">alex</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZWE3NWFkNy4uZmJjZmY2YyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1MiBAQAorMjAxMC0wOC0yNSAgQWxlamFuZHJvIEcu
IENhc3RybyAgPGFsZXhAaWdhbGlhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBzaGFkb3dTaXplIHBhcmFtZXRlciBpcyB1c2VkIHRvIHBhc3Mg
c2hhZG93IG9mZnNldCBpbiB0aGUKKyAgICAgICAgR3JhcGhpY3NDb250ZXh0OjpzZXRTaGFkb3cg
YW5kIGdldFNoYWRvdyBmdW5jdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTQ0NjAzCisKKyAgICAgICAgQ2hhbmdlIHRoZSBzaGFkb3dTaXplIHBh
cmFtZXRlciBvdCB0aGUgZnVuY3Rpb25zIGdldFNoYWRvdyBhbmQKKyAgICAgICAgc2V0U2hhZG93
IGluIEdyYXBoaWNzQ29udGV4dCB0byBzaGFkb3dPZmZzZXQgd2hpY2ggaXMgdGhlIGN1cnJlbnQK
KyAgICAgICAgdXNlIG9mIHRoYXQgcGFyYW1ldGVyIGluIHRoZSBjb2RlLgorCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzQ29udGV4dDo6c2V0U2hhZG93KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
Q29udGV4dDo6Y2xlYXJTaGFkb3cpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
OjpnZXRTaGFkb3cpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4
dC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dFByaXZhdGUu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9Gb250Q2Fpcm8uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Rm9udDo6ZHJhd0dseXBocyk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NDb250ZXh0OjpjYWxjdWxhdGVTaGFkb3dCdWZmZXJEaW1lbnNpb25zKToKKyAgICAg
ICAgKFdlYkNvcmU6OmRyYXdQYXRoU2hhZG93KToKKyAgICAgICAgKFdlYkNvcmU6OmRyYXdCb3Jk
ZXJsZXNzUmVjdFNoYWRvdyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OnNl
dFBsYXRmb3JtU2hhZG93KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFn
ZUNhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcEltYWdlOjpkcmF3KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Gb250Q2hyb21pdW1XaW4uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6VHJhbnNwYXJlbmN5QXdhcmVGb250UGFpbnRlcjo6VHJhbnNwYXJlbmN5
QXdhcmVHbHlwaFBhaW50ZXI6OmRyYXdHbHlwaHMpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udDo6
ZHJhd0NvbXBsZXhUZXh0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ndGsvRm9udEd0
ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250OjpkcmF3Q29tcGxleFRleHQpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250TWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6
Rm9udDo6ZHJhd0dseXBocyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvcXQvSW1hZ2VR
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBJbWFnZTo6ZHJhdyk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvcXQvU3RpbGxJbWFnZVF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlN0aWxsSW1hZ2U6OmRyYXcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBo
aWNzQ29udGV4dFF0OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpzZXRQbGF0
Zm9ybVNoYWRvdyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9Ta2lhRm9udFdp
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjp3aW5kb3dzQ2FuSGFuZGxlRHJhd1RleHRTaGFkb3cp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q0dXaW4uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6ZHJhd0dESUdseXBocyk6CisgICAgICAgIChXZWJDb3JlOjpGb250OjpkcmF3
R2x5cGhzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW5jZS9HcmFwaGljc0NvbnRl
eHRXaW5jZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmZpbGxSb3Vu
ZGVkUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQ6OmRyYXdUZXh0KToK
KwogMjAxMC0wOC0yNSAgSWx5YSBUaWtob25vdnNreSAgPGxvaXNsb0BjaHJvbWl1bS5vcmc+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgWXVyeSBTZW1pa2hhdHNreS4KZGlmZiAtLWdpdCBhL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcCBiL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmNwcAppbmRleCBiNTExNDFhLi40NzM4NGI5IDEw
MDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5jcHAK
KysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuY3BwCkBAIC0x
MzAsMjkgKzEzMCwyOSBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0U3Ryb2tlQ29sb3IoY29u
c3QgQ29sb3ImIGNvbG9yLCBDb2xvclNwYWNlIGNvbG9yU3BhY2UpCiAgICAgc2V0UGxhdGZvcm1T
dHJva2VDb2xvcihjb2xvciwgY29sb3JTcGFjZSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0
OjpzZXRTaGFkb3coY29uc3QgRmxvYXRTaXplJiBzaXplLCBmbG9hdCBibHVyLCBjb25zdCBDb2xv
ciYgY29sb3IsIENvbG9yU3BhY2UgY29sb3JTcGFjZSkKK3ZvaWQgR3JhcGhpY3NDb250ZXh0Ojpz
ZXRTaGFkb3coY29uc3QgRmxvYXRTaXplJiBvZmZzZXQsIGZsb2F0IGJsdXIsIGNvbnN0IENvbG9y
JiBjb2xvciwgQ29sb3JTcGFjZSBjb2xvclNwYWNlKQogewotICAgIG1fY29tbW9uLT5zdGF0ZS5z
aGFkb3dTaXplID0gc2l6ZTsKKyAgICBtX2NvbW1vbi0+c3RhdGUuc2hhZG93T2Zmc2V0ID0gb2Zm
c2V0OwogICAgIG1fY29tbW9uLT5zdGF0ZS5zaGFkb3dCbHVyID0gYmx1cjsKICAgICBtX2NvbW1v
bi0+c3RhdGUuc2hhZG93Q29sb3IgPSBjb2xvcjsKLSAgICBzZXRQbGF0Zm9ybVNoYWRvdyhzaXpl
LCBibHVyLCBjb2xvciwgY29sb3JTcGFjZSk7CisgICAgc2V0UGxhdGZvcm1TaGFkb3cob2Zmc2V0
LCBibHVyLCBjb2xvciwgY29sb3JTcGFjZSk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0Ojpj
bGVhclNoYWRvdygpCiB7Ci0gICAgbV9jb21tb24tPnN0YXRlLnNoYWRvd1NpemUgPSBJbnRTaXpl
KCk7CisgICAgbV9jb21tb24tPnN0YXRlLnNoYWRvd09mZnNldCA9IEZsb2F0U2l6ZSgpOwogICAg
IG1fY29tbW9uLT5zdGF0ZS5zaGFkb3dCbHVyID0gMDsKICAgICBtX2NvbW1vbi0+c3RhdGUuc2hh
ZG93Q29sb3IgPSBDb2xvcigpOwogICAgIGNsZWFyUGxhdGZvcm1TaGFkb3coKTsKIH0KIAotYm9v
bCBHcmFwaGljc0NvbnRleHQ6OmdldFNoYWRvdyhGbG9hdFNpemUmIHNpemUsIGZsb2F0JiBibHVy
LCBDb2xvciYgY29sb3IpIGNvbnN0Citib29sIEdyYXBoaWNzQ29udGV4dDo6Z2V0U2hhZG93KEZs
b2F0U2l6ZSYgb2Zmc2V0LCBmbG9hdCYgYmx1ciwgQ29sb3ImIGNvbG9yKSBjb25zdAogewotICAg
IHNpemUgPSBtX2NvbW1vbi0+c3RhdGUuc2hhZG93U2l6ZTsKKyAgICBvZmZzZXQgPSBtX2NvbW1v
bi0+c3RhdGUuc2hhZG93T2Zmc2V0OwogICAgIGJsdXIgPSBtX2NvbW1vbi0+c3RhdGUuc2hhZG93
Qmx1cjsKICAgICBjb2xvciA9IG1fY29tbW9uLT5zdGF0ZS5zaGFkb3dDb2xvcjsKIAotICAgIHJl
dHVybiBjb2xvci5pc1ZhbGlkKCkgJiYgY29sb3IuYWxwaGEoKSAmJiAoYmx1ciB8fCBzaXplLndp
ZHRoKCkgfHwgc2l6ZS5oZWlnaHQoKSk7CisgICAgcmV0dXJuIGNvbG9yLmlzVmFsaWQoKSAmJiBj
b2xvci5hbHBoYSgpICYmIChibHVyIHx8IG9mZnNldC53aWR0aCgpIHx8IG9mZnNldC5oZWlnaHQo
KSk7CiB9CiAKIGZsb2F0IEdyYXBoaWNzQ29udGV4dDo6c3Ryb2tlVGhpY2tuZXNzKCkgY29uc3QK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0Lmgg
Yi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCmluZGV4IGVhZDJj
YTUuLjkzZWY4OTAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0LmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHQuaApAQCAtMjk4LDcgKzI5OCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICNpZiBQTEFURk9S
TShDQUlSTykKICAgICAgICAgZmxvYXQgZ2V0QWxwaGEoKTsKICAgICAgICAgdm9pZCBjcmVhdGVQ
bGF0Zm9ybVNoYWRvdyhQYXNzT3duUHRyPEltYWdlQnVmZmVyPiBidWZmZXIsIGNvbnN0IENvbG9y
JiBzaGFkb3dDb2xvciwgY29uc3QgRmxvYXRSZWN0JiBzaGFkb3dSZWN0LCBmbG9hdCByYWRpdXMp
OwotICAgICAgICBzdGF0aWMgdm9pZCBjYWxjdWxhdGVTaGFkb3dCdWZmZXJEaW1lbnNpb25zKElu
dFNpemUmIHNoYWRvd0J1ZmZlclNpemUsIEZsb2F0UmVjdCYgc2hhZG93UmVjdCwgZmxvYXQmIHJh
ZGl1cywgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBGbG9hdFNpemUmIHNoYWRv
d1NpemUsIGZsb2F0IHNoYWRvd0JsdXIpOworICAgICAgICBzdGF0aWMgdm9pZCBjYWxjdWxhdGVT
aGFkb3dCdWZmZXJEaW1lbnNpb25zKEludFNpemUmIHNoYWRvd0J1ZmZlclNpemUsIEZsb2F0UmVj
dCYgc2hhZG93UmVjdCwgZmxvYXQmIHJhZGl1cywgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2VSZWN0
LCBjb25zdCBGbG9hdFNpemUmIHNoYWRvd09mZnNldCwgZmxvYXQgc2hhZG93Qmx1cik7CiAjZW5k
aWYKIAogICAgICAgICB2b2lkIHNldENvbXBvc2l0ZU9wZXJhdGlvbihDb21wb3NpdGVPcGVyYXRv
cik7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4
dFByaXZhdGUuaCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0UHJp
dmF0ZS5oCmluZGV4IDZiZjQ2NWIuLjkwM2M3ZTMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0UHJpdmF0ZS5oCisrKyBiL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0UHJpdmF0ZS5oCkBAIC03Miw3ICs3Miw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICBib29sIHBhaW50aW5nRGlzYWJsZWQ7CiAgICAg
ICAgIAotICAgICAgICBGbG9hdFNpemUgc2hhZG93U2l6ZTsKKyAgICAgICAgRmxvYXRTaXplIHNo
YWRvd09mZnNldDsKICAgICAgICAgZmxvYXQgc2hhZG93Qmx1cjsKICAgICAgICAgQ29sb3Igc2hh
ZG93Q29sb3I7CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8v
Rm9udENhaXJvLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vRm9udENhaXJv
LmNwcAppbmRleCBmNmQ4ZjNkLi41YmZhM2ZiIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL0ZvbnRDYWlyby5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYWlyby9Gb250Q2Fpcm8uY3BwCkBAIC03MCwxMSArNzAsMTEgQEAgdm9pZCBGb250Ojpk
cmF3R2x5cGhzKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgU2ltcGxlRm9udERhdGEq
IGZvbnQsIGNvbnMKICAgICB9CiAKICAgICAvLyBUZXh0IHNoYWRvdywgaW5zcGlyZWQgYnkgRm9u
dE1hYwotICAgIEZsb2F0U2l6ZSBzaGFkb3dTaXplOworICAgIEZsb2F0U2l6ZSBzaGFkb3dPZmZz
ZXQ7CiAgICAgZmxvYXQgc2hhZG93Qmx1ciA9IDA7CiAgICAgQ29sb3Igc2hhZG93Q29sb3I7CiAg
ICAgYm9vbCBoYXNTaGFkb3cgPSBjb250ZXh0LT50ZXh0RHJhd2luZ01vZGUoKSAmIGNUZXh0Rmls
bAotICAgICAgICAgICAgICAgICAgICAgJiYgY29udGV4dC0+Z2V0U2hhZG93KHNoYWRvd1NpemUs
IHNoYWRvd0JsdXIsIHNoYWRvd0NvbG9yKTsKKyAgICAgICAgICAgICAgICAgICAgICYmIGNvbnRl
eHQtPmdldFNoYWRvdyhzaGFkb3dPZmZzZXQsIHNoYWRvd0JsdXIsIHNoYWRvd0NvbG9yKTsKIAog
ICAgIC8vIFRPRE86IEJsdXIgc3VwcG9ydAogICAgIGlmIChoYXNTaGFkb3cpIHsKQEAgLTk1LDcg
Kzk1LDcgQEAgdm9pZCBGb250OjpkcmF3R2x5cGhzKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwg
Y29uc3QgU2ltcGxlRm9udERhdGEqIGZvbnQsIGNvbnMKICAgICAgICAgSW50U2l6ZSBzaGFkb3dC
dWZmZXJTaXplOwogICAgICAgICBGbG9hdFJlY3Qgc2hhZG93UmVjdDsKICAgICAgICAgZmxvYXQg
cmFkaXVzID0gMDsKLSAgICAgICAgY29udGV4dC0+Y2FsY3VsYXRlU2hhZG93QnVmZmVyRGltZW5z
aW9ucyhzaGFkb3dCdWZmZXJTaXplLCBzaGFkb3dSZWN0LCByYWRpdXMsIHJlY3QsIHNoYWRvd1Np
emUsIHNoYWRvd0JsdXIpOworICAgICAgICBjb250ZXh0LT5jYWxjdWxhdGVTaGFkb3dCdWZmZXJE
aW1lbnNpb25zKHNoYWRvd0J1ZmZlclNpemUsIHNoYWRvd1JlY3QsIHJhZGl1cywgcmVjdCwgc2hh
ZG93T2Zmc2V0LCBzaGFkb3dCbHVyKTsKIAogICAgICAgICAvLyBEcmF3IHNoYWRvdyBpbnRvIGEg
bmV3IEltYWdlQnVmZmVyCiAgICAgICAgIE93blB0cjxJbWFnZUJ1ZmZlcj4gc2hhZG93QnVmZmVy
ID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShzaGFkb3dCdWZmZXJTaXplKTsKQEAgLTExNSw3ICsxMTUs
NyBAQCB2b2lkIEZvbnQ6OmRyYXdHbHlwaHMoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25z
dCBTaW1wbGVGb250RGF0YSogZm9udCwgY29ucwogICAgICAgICBjYWlyb190cmFuc2xhdGUoY3Is
IDAuMCwgLWV4dGVudHMuaGVpZ2h0KTsKICAgICAgICAgY29udGV4dC0+Y3JlYXRlUGxhdGZvcm1T
aGFkb3coc2hhZG93QnVmZmVyLnJlbGVhc2UoKSwgc2hhZG93Q29sb3IsIHNoYWRvd1JlY3QsIHJh
ZGl1cyk7CiAjZWxzZQotICAgICAgICBjYWlyb190cmFuc2xhdGUoY3IsIHNoYWRvd1NpemUud2lk
dGgoKSwgc2hhZG93U2l6ZS5oZWlnaHQoKSk7CisgICAgICAgIGNhaXJvX3RyYW5zbGF0ZShjciwg
c2hhZG93T2Zmc2V0LndpZHRoKCksIHNoYWRvd09mZnNldC5oZWlnaHQoKSk7CiAgICAgICAgIGNh
aXJvX3Nob3dfZ2x5cGhzKGNyLCBnbHlwaHMsIG51bUdseXBocyk7CiAgICAgICAgIGlmIChmb250
LT5zeW50aGV0aWNCb2xkT2Zmc2V0KCkpIHsKICAgICAgICAgICAgIGNhaXJvX3NhdmUoY3IpOwpA
QCAtMTk1LDcgKzE5NSw3IEBAIHZvaWQgRm9udDo6ZHJhd0dseXBocyhHcmFwaGljc0NvbnRleHQq
IGNvbnRleHQsIGNvbnN0IFNpbXBsZUZvbnREYXRhKiBmb250LCBjb25zCiAKICAgICAvLyBSZS1l
bmFibGUgdGhlIHBsYXRmb3JtIHNoYWRvdyB3ZSBkaXNhYmxlZCBlYXJsaWVyCiAgICAgaWYgKGhh
c1NoYWRvdykKLSAgICAgICAgY29udGV4dC0+c2V0U2hhZG93KHNoYWRvd1NpemUsIHNoYWRvd0Js
dXIsIHNoYWRvd0NvbG9yLCBEZXZpY2VDb2xvclNwYWNlKTsKKyAgICAgICAgY29udGV4dC0+c2V0
U2hhZG93KHNoYWRvd09mZnNldCwgc2hhZG93Qmx1ciwgc2hhZG93Q29sb3IsIERldmljZUNvbG9y
U3BhY2UpOwogCiAgICAgY2Fpcm9fcmVzdG9yZShjcik7CiB9CmRpZmYgLS1naXQgYS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dENhaXJvLmNwcCBiL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCmluZGV4
IDNhNjY3YWMuLjY4M2MxNDQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0Q2Fpcm8uY3BwCkBAIC0xNzUsNyArMTc1LDcgQEAg
c3RhdGljIHZvaWQgYWRkQ29udmV4UG9seWdvblRvQ29udGV4dChjYWlyb190KiBjb250ZXh0LCBz
aXplX3QgbnVtUG9pbnRzLCBjb25zdAogICAgIGNhaXJvX2Nsb3NlX3BhdGgoY29udGV4dCk7CiB9
CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0OjpjYWxjdWxhdGVTaGFkb3dCdWZmZXJEaW1lbnNpb25z
KEludFNpemUmIHNoYWRvd0J1ZmZlclNpemUsIEZsb2F0UmVjdCYgc2hhZG93UmVjdCwgZmxvYXQm
IHJhZGl1cywgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBGbG9hdFNpemUmIHNo
YWRvd1NpemUsIGZsb2F0IHNoYWRvd0JsdXIpCit2b2lkIEdyYXBoaWNzQ29udGV4dDo6Y2FsY3Vs
YXRlU2hhZG93QnVmZmVyRGltZW5zaW9ucyhJbnRTaXplJiBzaGFkb3dCdWZmZXJTaXplLCBGbG9h
dFJlY3QmIHNoYWRvd1JlY3QsIGZsb2F0JiByYWRpdXMsIGNvbnN0IEZsb2F0UmVjdCYgc291cmNl
UmVjdCwgY29uc3QgRmxvYXRTaXplJiBzaGFkb3dPZmZzZXQsIGZsb2F0IHNoYWRvd0JsdXIpCiB7
CiAjaWYgRU5BQkxFKEZJTFRFUlMpCiAgICAgLy8gbGltaXQgcmFkaXVzIHRvIDEyOApAQCAtMTg1
LDE3ICsxODUsMTcgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmNhbGN1bGF0ZVNoYWRvd0J1ZmZl
ckRpbWVuc2lvbnMoSW50U2l6ZSYgc2hhZG93QnVmZmVyU2l6ZSwKIAogICAgIC8vIGRldGVybWlu
ZSBkaW1lbnNpb25zIG9mIHNoYWRvdyByZWN0CiAgICAgc2hhZG93UmVjdCA9IEZsb2F0UmVjdChz
b3VyY2VSZWN0LmxvY2F0aW9uKCksIHNoYWRvd0J1ZmZlclNpemUpOwotICAgIHNoYWRvd1JlY3Qu
bW92ZShzaGFkb3dTaXplLndpZHRoKCkgLSByYWRpdXMsIHNoYWRvd1NpemUuaGVpZ2h0KCkgLSBy
YWRpdXMpOworICAgIHNoYWRvd1JlY3QubW92ZShzaGFkb3dPZmZzZXQud2lkdGgoKSAtIHJhZGl1
cywgc2hhZG93T2Zmc2V0LmhlaWdodCgpIC0gcmFkaXVzKTsKICNlbmRpZgogfQogCiBzdGF0aWMg
aW5saW5lIHZvaWQgZHJhd1BhdGhTaGFkb3coR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBHcmFw
aGljc0NvbnRleHRQcml2YXRlKiBnY3AsIGJvb2wgZmlsbFNoYWRvdywgYm9vbCBzdHJva2VTaGFk
b3cpCiB7CiAjaWYgRU5BQkxFKEZJTFRFUlMpCi0gICAgRmxvYXRTaXplIHNoYWRvd1NpemU7Cisg
ICAgRmxvYXRTaXplIHNoYWRvd09mZnNldDsKICAgICBmbG9hdCBzaGFkb3dCbHVyOwogICAgIENv
bG9yIHNoYWRvd0NvbG9yOwotICAgIGlmICghY29udGV4dC0+Z2V0U2hhZG93KHNoYWRvd1NpemUs
IHNoYWRvd0JsdXIsIHNoYWRvd0NvbG9yKSkKKyAgICBpZiAoIWNvbnRleHQtPmdldFNoYWRvdyhz
aGFkb3dPZmZzZXQsIHNoYWRvd0JsdXIsIHNoYWRvd0NvbG9yKSkKICAgICAgICAgcmV0dXJuOwog
ICAgIAogICAgIC8vIENhbGN1bGF0ZSBmaWx0ZXIgdmFsdWVzIHRvIGNyZWF0ZSBhcHByb3ByaWF0
ZSBzaGFkb3cuCkBAIC0yMTEsNyArMjExLDcgQEAgc3RhdGljIGlubGluZSB2b2lkIGRyYXdQYXRo
U2hhZG93KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgR3JhcGhpY3NDb250ZXh0UHJpdmEKICAg
ICBJbnRTaXplIHNoYWRvd0J1ZmZlclNpemU7CiAgICAgRmxvYXRSZWN0IHNoYWRvd1JlY3Q7CiAg
ICAgZmxvYXQgcmFkaXVzID0gMDsKLSAgICBHcmFwaGljc0NvbnRleHQ6OmNhbGN1bGF0ZVNoYWRv
d0J1ZmZlckRpbWVuc2lvbnMoc2hhZG93QnVmZmVyU2l6ZSwgc2hhZG93UmVjdCwgcmFkaXVzLCBy
ZWN0LCBzaGFkb3dTaXplLCBzaGFkb3dCbHVyKTsKKyAgICBHcmFwaGljc0NvbnRleHQ6OmNhbGN1
bGF0ZVNoYWRvd0J1ZmZlckRpbWVuc2lvbnMoc2hhZG93QnVmZmVyU2l6ZSwgc2hhZG93UmVjdCwg
cmFkaXVzLCByZWN0LCBzaGFkb3dPZmZzZXQsIHNoYWRvd0JsdXIpOwogCiAgICAgLy8gQ3JlYXRl
IHN1aXRhYmx5LXNpemVkIEltYWdlQnVmZmVyIHRvIGhvbGQgdGhlIHNoYWRvdy4KICAgICBPd25Q
dHI8SW1hZ2VCdWZmZXI+IHNoYWRvd0J1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoc2hhZG93
QnVmZmVyU2l6ZSk7CkBAIC02MjMsMTcgKzYyMywxNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6
ZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KQogc3RhdGljIHZvaWQgZHJhd0JvcmRlcmxl
c3NSZWN0U2hhZG93KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgRmxvYXRSZWN0JiBy
ZWN0LCBjb25zdCBDb2xvciYgcmVjdENvbG9yKQogewogI2lmIEVOQUJMRShGSUxURVJTKQotICAg
IEZsb2F0U2l6ZSBzaGFkb3dTaXplOworICAgIEZsb2F0U2l6ZSBzaGFkb3dPZmZzZXQ7CiAgICAg
ZmxvYXQgc2hhZG93Qmx1cjsKICAgICBDb2xvciBzaGFkb3dDb2xvcjsKIAotICAgIGlmICghY29u
dGV4dC0+Z2V0U2hhZG93KHNoYWRvd1NpemUsIHNoYWRvd0JsdXIsIHNoYWRvd0NvbG9yKSkKKyAg
ICBpZiAoIWNvbnRleHQtPmdldFNoYWRvdyhzaGFkb3dPZmZzZXQsIHNoYWRvd0JsdXIsIHNoYWRv
d0NvbG9yKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgSW50U2l6ZSBzaGFkb3dCdWZmZXJTaXpl
OwogICAgIEZsb2F0UmVjdCBzaGFkb3dSZWN0OwogICAgIGZsb2F0IHJhZGl1cyA9IDA7Ci0gICAg
R3JhcGhpY3NDb250ZXh0OjpjYWxjdWxhdGVTaGFkb3dCdWZmZXJEaW1lbnNpb25zKHNoYWRvd0J1
ZmZlclNpemUsIHNoYWRvd1JlY3QsIHJhZGl1cywgcmVjdCwgc2hhZG93U2l6ZSwgc2hhZG93Qmx1
cik7CisgICAgR3JhcGhpY3NDb250ZXh0OjpjYWxjdWxhdGVTaGFkb3dCdWZmZXJEaW1lbnNpb25z
KHNoYWRvd0J1ZmZlclNpemUsIHNoYWRvd1JlY3QsIHJhZGl1cywgcmVjdCwgc2hhZG93T2Zmc2V0
LCBzaGFkb3dCbHVyKTsKIAogICAgIC8vIERyYXcgc2hhZG93IGludG8gYSBuZXcgSW1hZ2VCdWZm
ZXIKICAgICBPd25QdHI8SW1hZ2VCdWZmZXI+IHNoYWRvd0J1ZmZlciA9IEltYWdlQnVmZmVyOjpj
cmVhdGUoc2hhZG93QnVmZmVyU2l6ZSk7CkBAIC05MTcsNyArOTE3LDcgQEAgdm9pZCBHcmFwaGlj
c0NvbnRleHQ6OnNldFBsYXRmb3JtU2hhZG93KEZsb2F0U2l6ZSBjb25zdCYgc2l6ZSwgZmxvYXQs
IENvbG9yIGNvbnMKICAgICBpZiAobV9jb21tb24tPnN0YXRlLnNoYWRvd3NJZ25vcmVUcmFuc2Zv
cm1zKSB7CiAgICAgICAgIC8vIE1lYW5pbmcgdGhhdCB0aGlzIGdyYXBoaWNzIGNvbnRleHQgaXMg
YXNzb2NpYXRlZCB3aXRoIGEgQ2FudmFzUmVuZGVyaW5nQ29udGV4dAogICAgICAgICAvLyBXZSBm
bGlwIHRoZSBoZWlnaHQgc2luY2UgQ0cgYW5kIEhUTUw1IENhbnZhcyBoYXZlIG9wcG9zaXRlIFkg
YXhpcwotICAgICAgICBtX2NvbW1vbi0+c3RhdGUuc2hhZG93U2l6ZSA9IEZsb2F0U2l6ZShzaXpl
LndpZHRoKCksIC1zaXplLmhlaWdodCgpKTsKKyAgICAgICAgbV9jb21tb24tPnN0YXRlLnNoYWRv
d09mZnNldCA9IEZsb2F0U2l6ZShzaXplLndpZHRoKCksIC1zaXplLmhlaWdodCgpKTsKICAgICB9
CiB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VD
YWlyby5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQ2Fpcm8uY3Bw
CmluZGV4IGQ1ZWIwZTcuLjAwNmQ4NjIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2Fpcm8vSW1hZ2VDYWlyby5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jYWlyby9JbWFnZUNhaXJvLmNwcApAQCAtMTM1LDE0ICsxMzUsMTQgQEAgdm9pZCBCaXRtYXBJ
bWFnZTo6ZHJhdyhHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEZsb2F0UmVjdCYgZHN0
LCBjb25zdCBGbG8KIAogICAgIC8vIERyYXcgdGhlIHNoYWRvdwogI2lmIEVOQUJMRShGSUxURVJT
KQotICAgIEZsb2F0U2l6ZSBzaGFkb3dTaXplOworICAgIEZsb2F0U2l6ZSBzaGFkb3dPZmZzZXQ7
CiAgICAgZmxvYXQgc2hhZG93Qmx1cjsKICAgICBDb2xvciBzaGFkb3dDb2xvcjsKLSAgICBpZiAo
Y29udGV4dC0+Z2V0U2hhZG93KHNoYWRvd1NpemUsIHNoYWRvd0JsdXIsIHNoYWRvd0NvbG9yKSkg
eworICAgIGlmIChjb250ZXh0LT5nZXRTaGFkb3coc2hhZG93T2Zmc2V0LCBzaGFkb3dCbHVyLCBz
aGFkb3dDb2xvcikpIHsKICAgICAgICAgSW50U2l6ZSBzaGFkb3dCdWZmZXJTaXplOwogICAgICAg
ICBGbG9hdFJlY3Qgc2hhZG93UmVjdDsKICAgICAgICAgZmxvYXQgcmFkaXVzID0gMDsKLSAgICAg
ICAgY29udGV4dC0+Y2FsY3VsYXRlU2hhZG93QnVmZmVyRGltZW5zaW9ucyhzaGFkb3dCdWZmZXJT
aXplLCBzaGFkb3dSZWN0LCByYWRpdXMsIGRzdFJlY3QsIHNoYWRvd1NpemUsIHNoYWRvd0JsdXIp
OworICAgICAgICBjb250ZXh0LT5jYWxjdWxhdGVTaGFkb3dCdWZmZXJEaW1lbnNpb25zKHNoYWRv
d0J1ZmZlclNpemUsIHNoYWRvd1JlY3QsIHJhZGl1cywgZHN0UmVjdCwgc2hhZG93T2Zmc2V0LCBz
aGFkb3dCbHVyKTsKICAgICAgICAgc2hhZG93Q29sb3IgPSBjb2xvcldpdGhPdmVycmlkZUFscGhh
KHNoYWRvd0NvbG9yLnJnYigpLCAoc2hhZG93Q29sb3IuYWxwaGEoKSAqICBjb250ZXh0LT5nZXRB
bHBoYSgpKSAvIDI1NS5mKTsKIAogICAgICAgICAvL2RyYXcgc2hhZG93IGludG8gYSBuZXcgSW1h
Z2VCdWZmZXIKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Rm9udENocm9taXVtV2luLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Rm9udENocm9taXVtV2luLmNwcAppbmRleCA1YjhiYWQzLi43OGI3NTE3IDEwMDY0NAotLS0gYS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0ZvbnRDaHJvbWl1bVdpbi5jcHAKKysr
IGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Gb250Q2hyb21pdW1XaW4uY3Bw
CkBAIC0yNzMsMTAgKzI3MywxMCBAQCBib29sIFRyYW5zcGFyZW5jeUF3YXJlR2x5cGhQYWludGVy
OjpkcmF3R2x5cGhzKGludCBudW1HbHlwaHMsCiAKICAgICAvLyBJZiB0aGVyZSBpcyBhIG5vbi1i
bHVyIHNoYWRvdyBhbmQgYm90aCB0aGUgZmlsbCBjb2xvciBhbmQgc2hhZG93IGNvbG9yIAogICAg
IC8vIGFyZSBvcGFxdWUsIGhhbmRsZSB3aXRob3V0IHNraWEuIAotICAgIEZsb2F0U2l6ZSBzaGFk
b3dTaXplOworICAgIEZsb2F0U2l6ZSBzaGFkb3dPZmZzZXQ7CiAgICAgZmxvYXQgc2hhZG93Qmx1
cjsKICAgICBDb2xvciBzaGFkb3dDb2xvcjsKLSAgICBpZiAobV9ncmFwaGljc0NvbnRleHQtPmdl
dFNoYWRvdyhzaGFkb3dTaXplLCBzaGFkb3dCbHVyLCBzaGFkb3dDb2xvcikpIHsKKyAgICBpZiAo
bV9ncmFwaGljc0NvbnRleHQtPmdldFNoYWRvdyhzaGFkb3dPZmZzZXQsIHNoYWRvd0JsdXIsIHNo
YWRvd0NvbG9yKSkgewogICAgICAgICAvLyBJZiB0aGVyZSBpcyBhIHNoYWRvdyBhbmQgdGhpcyBj
b2RlIGlzIHJlYWNoZWQsIHdpbmRvd3NDYW5IYW5kbGVEcmF3VGV4dFNoYWRvdygpCiAgICAgICAg
IC8vIHdpbGwgaGF2ZSBhbHJlYWR5IHJldHVybmVkIHRydWUgZHVyaW5nIHRoZSBjdG9yIGluaXRp
YXRpemF0aW9uIG9mIG1fdXNlR0RJCiAgICAgICAgIEFTU0VSVChzaGFkb3dDb2xvci5hbHBoYSgp
ID09IDI1NSk7CkBAIC0yODUsNyArMjg1LDcgQEAgYm9vbCBUcmFuc3BhcmVuY3lBd2FyZUdseXBo
UGFpbnRlcjo6ZHJhd0dseXBocyhpbnQgbnVtR2x5cGhzLAogICAgICAgICBDT0xPUlJFRiB0ZXh0
Q29sb3IgPSBza2lhOjpTa0NvbG9yVG9DT0xPUlJFRihTa0NvbG9yU2V0QVJHQigyNTUsIHNoYWRv
d0NvbG9yLnJlZCgpLCBzaGFkb3dDb2xvci5ncmVlbigpLCBzaGFkb3dDb2xvci5ibHVlKCkpKTsK
ICAgICAgICAgQ09MT1JSRUYgc2F2ZWRUZXh0Q29sb3IgPSBHZXRUZXh0Q29sb3IobV9oZGMpOwog
ICAgICAgICBTZXRUZXh0Q29sb3IobV9oZGMsIHRleHRDb2xvcik7Ci0gICAgICAgIEV4dFRleHRP
dXQobV9oZGMsIHggKyBzaGFkb3dTaXplLndpZHRoKCksIHkgKyBzaGFkb3dTaXplLmhlaWdodCgp
LCBFVE9fR0xZUEhfSU5ERVgsIDAsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qgd2NoYXJfdCo+KCZn
bHlwaHNbMF0pLCBudW1HbHlwaHMsICZhZHZhbmNlc1swXSk7CisgICAgICAgIEV4dFRleHRPdXQo
bV9oZGMsIHggKyBzaGFkb3dPZmZzZXQud2lkdGgoKSwgeSArIHNoYWRvd09mZnNldC5oZWlnaHQo
KSwgRVRPX0dMWVBIX0lOREVYLCAwLCByZWludGVycHJldF9jYXN0PGNvbnN0IHdjaGFyX3QqPigm
Z2x5cGhzWzBdKSwgbnVtR2x5cGhzLCAmYWR2YW5jZXNbMF0pOwogICAgICAgICBTZXRUZXh0Q29s
b3IobV9oZGMsIHNhdmVkVGV4dENvbG9yKTsKICAgICB9CiAgICAgCkBAIC00ODMsMTUgKzQ4Mywx
NSBAQCB2b2lkIEZvbnQ6OmRyYXdDb21wbGV4VGV4dChHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNz
Q29udGV4dCwKIAogICAgIC8vIElmIHRoZXJlIGlzIGEgbm9uLWJsdXIgc2hhZG93IGFuZCBib3Ro
IHRoZSBmaWxsIGNvbG9yIGFuZCBzaGFkb3cgY29sb3IgCiAgICAgLy8gYXJlIG9wYXF1ZSwgaGFu
ZGxlIHdpdGhvdXQgc2tpYS4gCi0gICAgRmxvYXRTaXplIHNoYWRvd1NpemU7CisgICAgRmxvYXRT
aXplIHNoYWRvd09mZnNldDsKICAgICBmbG9hdCBzaGFkb3dCbHVyOwogICAgIENvbG9yIHNoYWRv
d0NvbG9yOwotICAgIGlmIChncmFwaGljc0NvbnRleHQtPmdldFNoYWRvdyhzaGFkb3dTaXplLCBz
aGFkb3dCbHVyLCBzaGFkb3dDb2xvcikgJiYgd2luZG93c0NhbkhhbmRsZURyYXdUZXh0U2hhZG93
KGdyYXBoaWNzQ29udGV4dCkpIHsKKyAgICBpZiAoZ3JhcGhpY3NDb250ZXh0LT5nZXRTaGFkb3co
c2hhZG93T2Zmc2V0LCBzaGFkb3dCbHVyLCBzaGFkb3dDb2xvcikgJiYgd2luZG93c0NhbkhhbmRs
ZURyYXdUZXh0U2hhZG93KGdyYXBoaWNzQ29udGV4dCkpIHsKICAgICAgICAgQ09MT1JSRUYgdGV4
dENvbG9yID0gc2tpYTo6U2tDb2xvclRvQ09MT1JSRUYoU2tDb2xvclNldEFSR0IoMjU1LCBzaGFk
b3dDb2xvci5yZWQoKSwgc2hhZG93Q29sb3IuZ3JlZW4oKSwgc2hhZG93Q29sb3IuYmx1ZSgpKSk7
CiAgICAgICAgIENPTE9SUkVGIHNhdmVkVGV4dENvbG9yID0gR2V0VGV4dENvbG9yKGhkYyk7CiAg
ICAgICAgIFNldFRleHRDb2xvcihoZGMsIHRleHRDb2xvcik7Ci0gICAgICAgIHN0YXRlLmRyYXco
Z3JhcGhpY3NDb250ZXh0LCBoZGMsIHN0YXRpY19jYXN0PGludD4ocG9pbnQueCgpKSArIHNoYWRv
d1NpemUud2lkdGgoKSwKLSAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxpbnQ+KHBvaW50
LnkoKSAtIGFzY2VudCgpKSArIHNoYWRvd1NpemUuaGVpZ2h0KCksIGZyb20sIHRvKTsKKyAgICAg
ICAgc3RhdGUuZHJhdyhncmFwaGljc0NvbnRleHQsIGhkYywgc3RhdGljX2Nhc3Q8aW50Pihwb2lu
dC54KCkpICsgc2hhZG93T2Zmc2V0LndpZHRoKCksCisgICAgICAgICAgICAgICAgICAgc3RhdGlj
X2Nhc3Q8aW50Pihwb2ludC55KCkgLSBhc2NlbnQoKSkgKyBzaGFkb3dPZmZzZXQuaGVpZ2h0KCks
IGZyb20sIHRvKTsKICAgICAgICAgU2V0VGV4dENvbG9yKGhkYywgc2F2ZWRUZXh0Q29sb3IpOyAK
ICAgICB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0ZvbnRH
dGsuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvRm9udEd0ay5jcHAKaW5kZXgg
OTJmODgxNi4uNDg5YmFkNyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
dGsvRm9udEd0ay5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvRm9udEd0
ay5jcHAKQEAgLTI0MSwxMSArMjQxLDExIEBAIHZvaWQgRm9udDo6ZHJhd0NvbXBsZXhUZXh0KEdy
YXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgVGV4dFJ1biYgcnVuLCBjb25zdCBGCiAgICAg
ZmxvYXQgcmVkLCBncmVlbiwgYmx1ZSwgYWxwaGE7CiAKICAgICAvLyBUZXh0IHNoYWRvdywgaW5z
cGlyZWQgYnkgRm9udE1hYwotICAgIEZsb2F0U2l6ZSBzaGFkb3dTaXplOworICAgIEZsb2F0U2l6
ZSBzaGFkb3dPZmZzZXQ7CiAgICAgZmxvYXQgc2hhZG93Qmx1ciA9IDA7CiAgICAgQ29sb3Igc2hh
ZG93Q29sb3I7CiAgICAgYm9vbCBoYXNTaGFkb3cgPSBjb250ZXh0LT50ZXh0RHJhd2luZ01vZGUo
KSA9PSBjVGV4dEZpbGwgJiYKLSAgICAgICAgY29udGV4dC0+Z2V0U2hhZG93KHNoYWRvd1NpemUs
IHNoYWRvd0JsdXIsIHNoYWRvd0NvbG9yKTsKKyAgICAgICAgY29udGV4dC0+Z2V0U2hhZG93KHNo
YWRvd09mZnNldCwgc2hhZG93Qmx1ciwgc2hhZG93Q29sb3IpOwogCiAgICAgLy8gVE9ETzogQmx1
ciBzdXBwb3J0CiAgICAgaWYgKGhhc1NoYWRvdykgewpAQCAtMjU3LDcgKzI1Nyw3IEBAIHZvaWQg
Rm9udDo6ZHJhd0NvbXBsZXhUZXh0KEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgVGV4
dFJ1biYgcnVuLCBjb25zdCBGCiAgICAgICAgIHNoYWRvd0ZpbGxDb2xvci5nZXRSR0JBKHJlZCwg
Z3JlZW4sIGJsdWUsIGFscGhhKTsKICAgICAgICAgY2Fpcm9fc2V0X3NvdXJjZV9yZ2JhKGNyLCBy
ZWQsIGdyZWVuLCBibHVlLCBhbHBoYSk7CiAKLSAgICAgICAgY2Fpcm9fdHJhbnNsYXRlKGNyLCBz
aGFkb3dTaXplLndpZHRoKCksIHNoYWRvd1NpemUuaGVpZ2h0KCkpOworICAgICAgICBjYWlyb190
cmFuc2xhdGUoY3IsIHNoYWRvd09mZnNldC53aWR0aCgpLCBzaGFkb3dPZmZzZXQuaGVpZ2h0KCkp
OwogCiAgICAgICAgIGlmIChwYXJ0aWFsUmVnaW9uKSB7CiAgICAgICAgICAgICBnZGtfY2Fpcm9f
cmVnaW9uKGNyLCBwYXJ0aWFsUmVnaW9uKTsKQEAgLTI5MCw3ICsyOTAsNyBAQCB2b2lkIEZvbnQ6
OmRyYXdDb21wbGV4VGV4dChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IFRleHRSdW4m
IHJ1biwgY29uc3QgRgogCiAgICAgLy8gUmUtZW5hYmxlIHRoZSBwbGF0Zm9ybSBzaGFkb3cgd2Ug
ZGlzYWJsZWQgZWFybGllcgogICAgIGlmIChoYXNTaGFkb3cpCi0gICAgICAgIGNvbnRleHQtPnNl
dFNoYWRvdyhzaGFkb3dTaXplLCBzaGFkb3dCbHVyLCBzaGFkb3dDb2xvciwgRGV2aWNlQ29sb3JT
cGFjZSk7CisgICAgICAgIGNvbnRleHQtPnNldFNoYWRvdyhzaGFkb3dPZmZzZXQsIHNoYWRvd0Js
dXIsIHNoYWRvd0NvbG9yLCBEZXZpY2VDb2xvclNwYWNlKTsKIAogICAgIC8vIFBhbmdvIHNvbWV0
aW1lcyBsZWF2ZXMgYmVoaW5kIHBhdGhzIHdlIGRvbid0IHdhbnQKICAgICBjYWlyb19uZXdfcGF0
aChjcik7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9Gb250TWFj
Lm1tIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9tYWMvRm9udE1hYy5tbQppbmRleCBkYjc3
NDAyLi4zM2E5MzBiIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL21hYy9G
b250TWFjLm1tCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvbWFjL0ZvbnRNYWMubW0K
QEAgLTEzNSwxMSArMTM1LDExIEBAIHZvaWQgRm9udDo6ZHJhd0dseXBocyhHcmFwaGljc0NvbnRl
eHQqIGNvbnRleHQsIGNvbnN0IFNpbXBsZUZvbnREYXRhKiBmb250LCBjb25zCiAgICAgICAgIENH
Q29udGV4dFNldEZvbnRTaXplKGNnQ29udGV4dCwgcGxhdGZvcm1EYXRhLm1fc2l6ZSk7CiAKIAot
ICAgIEZsb2F0U2l6ZSBzaGFkb3dTaXplOworICAgIEZsb2F0U2l6ZSBzaGFkb3dPZmZzZXQ7CiAg
ICAgZmxvYXQgc2hhZG93Qmx1cjsKICAgICBDb2xvciBzaGFkb3dDb2xvcjsKICAgICBDb2xvclNw
YWNlIGZpbGxDb2xvclNwYWNlID0gY29udGV4dC0+ZmlsbENvbG9yU3BhY2UoKTsKLSAgICBjb250
ZXh0LT5nZXRTaGFkb3coc2hhZG93U2l6ZSwgc2hhZG93Qmx1ciwgc2hhZG93Q29sb3IpOworICAg
IGNvbnRleHQtPmdldFNoYWRvdyhzaGFkb3dPZmZzZXQsIHNoYWRvd0JsdXIsIHNoYWRvd0NvbG9y
KTsKIAogICAgIGJvb2wgaGFzU2ltcGxlU2hhZG93ID0gY29udGV4dC0+dGV4dERyYXdpbmdNb2Rl
KCkgPT0gY1RleHRGaWxsICYmIHNoYWRvd0NvbG9yLmlzVmFsaWQoKSAmJiAhc2hhZG93Qmx1ciAm
JiAhcGxhdGZvcm1EYXRhLmlzQ29sb3JCaXRtYXBGb250KCk7CiAgICAgaWYgKGhhc1NpbXBsZVNo
YWRvdykgewpAQCAtMTQ4LDEwICsxNDgsMTAgQEAgdm9pZCBGb250OjpkcmF3R2x5cGhzKEdyYXBo
aWNzQ29udGV4dCogY29udGV4dCwgY29uc3QgU2ltcGxlRm9udERhdGEqIGZvbnQsIGNvbnMKICAg
ICAgICAgQ29sb3IgZmlsbENvbG9yID0gY29udGV4dC0+ZmlsbENvbG9yKCk7CiAgICAgICAgIENv
bG9yIHNoYWRvd0ZpbGxDb2xvcihzaGFkb3dDb2xvci5yZWQoKSwgc2hhZG93Q29sb3IuZ3JlZW4o
KSwgc2hhZG93Q29sb3IuYmx1ZSgpLCBzaGFkb3dDb2xvci5hbHBoYSgpICogZmlsbENvbG9yLmFs
cGhhKCkgLyAyNTUpOwogICAgICAgICBjb250ZXh0LT5zZXRGaWxsQ29sb3Ioc2hhZG93RmlsbENv
bG9yLCBmaWxsQ29sb3JTcGFjZSk7Ci0gICAgICAgIENHQ29udGV4dFNldFRleHRQb3NpdGlvbihj
Z0NvbnRleHQsIHBvaW50LngoKSArIHNoYWRvd1NpemUud2lkdGgoKSwgcG9pbnQueSgpICsgc2hh
ZG93U2l6ZS5oZWlnaHQoKSk7CisgICAgICAgIENHQ29udGV4dFNldFRleHRQb3NpdGlvbihjZ0Nv
bnRleHQsIHBvaW50LngoKSArIHNoYWRvd09mZnNldC53aWR0aCgpLCBwb2ludC55KCkgKyBzaGFk
b3dPZmZzZXQuaGVpZ2h0KCkpOwogICAgICAgICBzaG93R2x5cGhzV2l0aEFkdmFuY2VzKHBsYXRm
b3JtRGF0YSwgY2dDb250ZXh0LCBnbHlwaEJ1ZmZlci5nbHlwaHMoZnJvbSksIGdseXBoQnVmZmVy
LmFkdmFuY2VzKGZyb20pLCBudW1HbHlwaHMpOwogICAgICAgICBpZiAoZm9udC0+c3ludGhldGlj
Qm9sZE9mZnNldCgpKSB7Ci0gICAgICAgICAgICBDR0NvbnRleHRTZXRUZXh0UG9zaXRpb24oY2dD
b250ZXh0LCBwb2ludC54KCkgKyBzaGFkb3dTaXplLndpZHRoKCkgKyBmb250LT5zeW50aGV0aWNC
b2xkT2Zmc2V0KCksIHBvaW50LnkoKSArIHNoYWRvd1NpemUuaGVpZ2h0KCkpOworICAgICAgICAg
ICAgQ0dDb250ZXh0U2V0VGV4dFBvc2l0aW9uKGNnQ29udGV4dCwgcG9pbnQueCgpICsgc2hhZG93
T2Zmc2V0LndpZHRoKCkgKyBmb250LT5zeW50aGV0aWNCb2xkT2Zmc2V0KCksIHBvaW50LnkoKSAr
IHNoYWRvd09mZnNldC5oZWlnaHQoKSk7CiAgICAgICAgICAgICBzaG93R2x5cGhzV2l0aEFkdmFu
Y2VzKHBsYXRmb3JtRGF0YSwgY2dDb250ZXh0LCBnbHlwaEJ1ZmZlci5nbHlwaHMoZnJvbSksIGds
eXBoQnVmZmVyLmFkdmFuY2VzKGZyb20pLCBudW1HbHlwaHMpOwogICAgICAgICB9CiAgICAgICAg
IGNvbnRleHQtPnNldEZpbGxDb2xvcihmaWxsQ29sb3IsIGZpbGxDb2xvclNwYWNlKTsKQEAgLTE2
NSw3ICsxNjUsNyBAQCB2b2lkIEZvbnQ6OmRyYXdHbHlwaHMoR3JhcGhpY3NDb250ZXh0KiBjb250
ZXh0LCBjb25zdCBTaW1wbGVGb250RGF0YSogZm9udCwgY29ucwogICAgIH0KIAogICAgIGlmICho
YXNTaW1wbGVTaGFkb3cpCi0gICAgICAgIGNvbnRleHQtPnNldFNoYWRvdyhzaGFkb3dTaXplLCBz
aGFkb3dCbHVyLCBzaGFkb3dDb2xvciwgZmlsbENvbG9yU3BhY2UpOworICAgICAgICBjb250ZXh0
LT5zZXRTaGFkb3coc2hhZG93T2Zmc2V0LCBzaGFkb3dCbHVyLCBzaGFkb3dDb2xvciwgZmlsbENv
bG9yU3BhY2UpOwogCiAgICAgaWYgKG9yaWdpbmFsU2hvdWxkVXNlRm9udFNtb290aGluZyAhPSBu
ZXdTaG91bGRVc2VGb250U21vb3RoaW5nKQogICAgICAgICBDR0NvbnRleHRTZXRTaG91bGRTbW9v
dGhGb250cyhjZ0NvbnRleHQsIG9yaWdpbmFsU2hvdWxkVXNlRm9udFNtb290aGluZyk7CmRpZmYg
LS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dFF0LmNw
cCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0UXQuY3BwCmlu
ZGV4IDY3YjU1ZWQuLjgwOTE4MjEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvcXQvR3JhcGhpY3NDb250ZXh0UXQuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvcXQvR3JhcGhpY3NDb250ZXh0UXQuY3BwCkBAIC04ODYsNyArODg2LDcgQEAgdm9pZCBHcmFw
aGljc0NvbnRleHQ6OnNldFBsYXRmb3JtU2hhZG93KGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgZmxv
YXQgYmx1ciwgY29uc3QKICAgICBpZiAobV9jb21tb24tPnN0YXRlLnNoYWRvd3NJZ25vcmVUcmFu
c2Zvcm1zKSB7CiAgICAgICAgIC8vIE1lYW5pbmcgdGhhdCB0aGlzIGdyYXBoaWNzIGNvbnRleHQg
aXMgYXNzb2NpYXRlZCB3aXRoIGEgQ2FudmFzUmVuZGVyaW5nQ29udGV4dAogICAgICAgICAvLyBX
ZSBmbGlwIHRoZSBoZWlnaHQgc2luY2UgQ0cgYW5kIEhUTUw1IENhbnZhcyBoYXZlIG9wcG9zaXRl
IFkgYXhpcwotICAgICAgICBtX2NvbW1vbi0+c3RhdGUuc2hhZG93U2l6ZSA9IEZsb2F0U2l6ZShz
aXplLndpZHRoKCksIC1zaXplLmhlaWdodCgpKTsKKyAgICAgICAgbV9jb21tb24tPnN0YXRlLnNo
YWRvd09mZnNldCA9IEZsb2F0U2l6ZShzaXplLndpZHRoKCksIC1zaXplLmhlaWdodCgpKTsKICAg
ICAgICAgbV9kYXRhLT5zaGFkb3cgPSBDb250ZXh0U2hhZG93KGNvbG9yLCBibHVyLCBzaXplLndp
ZHRoKCksIC1zaXplLmhlaWdodCgpKTsKICAgICB9IGVsc2UgewogICAgICAgICBtX2RhdGEtPnNo
YWRvdyA9IENvbnRleHRTaGFkb3coY29sb3IsIGJsdXIsIHNpemUud2lkdGgoKSwgc2l6ZS5oZWln
aHQoKSk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0ltYWdlUXQu
Y3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9JbWFnZVF0LmNwcAppbmRleCBlMGFj
NTc0Li5jMGNmYWU0IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0lt
YWdlUXQuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvSW1hZ2VRdC5jcHAK
QEAgLTE5MCwxMiArMTkwLDEyIEBAIHZvaWQgQml0bWFwSW1hZ2U6OmRyYXcoR3JhcGhpY3NDb250
ZXh0KiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdCwKICAgICBRUGFpbnRlcjo6Q29tcG9zaXRp
b25Nb2RlIGxhc3RDb21wb3NpdGlvbk1vZGUgPSBwYWludGVyLT5jb21wb3NpdGlvbk1vZGUoKTsK
ICAgICBwYWludGVyLT5zZXRDb21wb3NpdGlvbk1vZGUoY29tcG9zaXRpb25Nb2RlKTsKIAotICAg
IEZsb2F0U2l6ZSBzaGFkb3dTaXplOworICAgIEZsb2F0U2l6ZSBzaGFkb3dPZmZzZXQ7CiAgICAg
ZmxvYXQgc2hhZG93Qmx1cjsKICAgICBDb2xvciBzaGFkb3dDb2xvcjsKLSAgICBpZiAoY3R4dC0+
Z2V0U2hhZG93KHNoYWRvd1NpemUsIHNoYWRvd0JsdXIsIHNoYWRvd0NvbG9yKSkgeworICAgIGlm
IChjdHh0LT5nZXRTaGFkb3coc2hhZG93T2Zmc2V0LCBzaGFkb3dCbHVyLCBzaGFkb3dDb2xvcikp
IHsKICAgICAgICAgRmxvYXRSZWN0IHNoYWRvd0ltYWdlUmVjdChub3JtYWxpemVkRHN0KTsKLSAg
ICAgICAgc2hhZG93SW1hZ2VSZWN0Lm1vdmUoc2hhZG93U2l6ZS53aWR0aCgpLCBzaGFkb3dTaXpl
LmhlaWdodCgpKTsKKyAgICAgICAgc2hhZG93SW1hZ2VSZWN0Lm1vdmUoc2hhZG93T2Zmc2V0Lndp
ZHRoKCksIHNoYWRvd09mZnNldC5oZWlnaHQoKSk7CiAKICAgICAgICAgUUltYWdlIHNoYWRvd0lt
YWdlKFFTaXplKHN0YXRpY19jYXN0PGludD4obm9ybWFsaXplZFNyYy53aWR0aCgpKSwgc3RhdGlj
X2Nhc3Q8aW50Pihub3JtYWxpemVkU3JjLmhlaWdodCgpKSksIFFJbWFnZTo6Rm9ybWF0X0FSR0Iz
Ml9QcmVtdWx0aXBsaWVkKTsKICAgICAgICAgUVBhaW50ZXIgcCgmc2hhZG93SW1hZ2UpOwpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9TdGlsbEltYWdlUXQuY3BwIGIv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9TdGlsbEltYWdlUXQuY3BwCmluZGV4IDljNmFj
YWIuLjMwMzgzNTYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvU3Rp
bGxJbWFnZVF0LmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L1N0aWxsSW1h
Z2VRdC5jcHAKQEAgLTc2LDEyICs3NiwxMiBAQCB2b2lkIFN0aWxsSW1hZ2U6OmRyYXcoR3JhcGhp
Y3NDb250ZXh0KiBjdHh0LCBjb25zdCBGbG9hdFJlY3QmIGRzdCwKIAogICAgIGN0eHQtPnNldENv
bXBvc2l0ZU9wZXJhdGlvbihvcCk7CiAKLSAgICBGbG9hdFNpemUgc2hhZG93U2l6ZTsKKyAgICBG
bG9hdFNpemUgc2hhZG93T2Zmc2V0OwogICAgIGZsb2F0IHNoYWRvd0JsdXI7CiAgICAgQ29sb3Ig
c2hhZG93Q29sb3I7Ci0gICAgaWYgKGN0eHQtPmdldFNoYWRvdyhzaGFkb3dTaXplLCBzaGFkb3dC
bHVyLCBzaGFkb3dDb2xvcikpIHsKKyAgICBpZiAoY3R4dC0+Z2V0U2hhZG93KHNoYWRvd09mZnNl
dCwgc2hhZG93Qmx1ciwgc2hhZG93Q29sb3IpKSB7CiAgICAgICAgIEZsb2F0UmVjdCBzaGFkb3dJ
bWFnZVJlY3Qobm9ybWFsaXplZERzdCk7Ci0gICAgICAgIHNoYWRvd0ltYWdlUmVjdC5tb3ZlKHNo
YWRvd1NpemUud2lkdGgoKSwgc2hhZG93U2l6ZS5oZWlnaHQoKSk7CisgICAgICAgIHNoYWRvd0lt
YWdlUmVjdC5tb3ZlKHNoYWRvd09mZnNldC53aWR0aCgpLCBzaGFkb3dPZmZzZXQuaGVpZ2h0KCkp
OwogCiAgICAgICAgIFFJbWFnZSBzaGFkb3dJbWFnZShRU2l6ZShzdGF0aWNfY2FzdDxpbnQ+KG5v
cm1hbGl6ZWRTcmMud2lkdGgoKSksIHN0YXRpY19jYXN0PGludD4obm9ybWFsaXplZFNyYy5oZWln
aHQoKSkpLCBRSW1hZ2U6OkZvcm1hdF9BUkdCMzJfUHJlbXVsdGlwbGllZCk7CiAgICAgICAgIFFQ
YWludGVyIHAoJnNoYWRvd0ltYWdlKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvc2tpYS9Ta2lhRm9udFdpbi5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Nr
aWEvU2tpYUZvbnRXaW4uY3BwCmluZGV4IDQ0MDAzYmIuLjllZGI3NzUgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9Ta2lhRm9udFdpbi5jcHAKKysrIGIvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL1NraWFGb250V2luLmNwcApAQCAtMjIyLDExICsyMjIs
MTEgQEAgdm9pZCBTa2lhV2luT3V0bGluZUNhY2hlOjpyZW1vdmVQYXRoc0ZvckZvbnQoSEZPTlQg
aGZvbnQpCiAKIGJvb2wgd2luZG93c0NhbkhhbmRsZURyYXdUZXh0U2hhZG93KEdyYXBoaWNzQ29u
dGV4dCAqY29udGV4dCkKIHsKLSAgICBGbG9hdFNpemUgc2hhZG93U2l6ZTsKKyAgICBGbG9hdFNp
emUgc2hhZG93T2Zmc2V0OwogICAgIGZsb2F0IHNoYWRvd0JsdXI7CiAgICAgQ29sb3Igc2hhZG93
Q29sb3I7CiAKLSAgICBib29sIGhhc1NoYWRvdyA9IGNvbnRleHQtPmdldFNoYWRvdyhzaGFkb3dT
aXplLCBzaGFkb3dCbHVyLCBzaGFkb3dDb2xvcik7CisgICAgYm9vbCBoYXNTaGFkb3cgPSBjb250
ZXh0LT5nZXRTaGFkb3coc2hhZG93T2Zmc2V0LCBzaGFkb3dCbHVyLCBzaGFkb3dDb2xvcik7CiAg
ICAgcmV0dXJuIChoYXNTaGFkb3cgJiYgKHNoYWRvd0JsdXIgPT0gMCkgJiYgKHNoYWRvd0NvbG9y
LmFscGhhKCkgPT0gMjU1KSAmJiAoY29udGV4dC0+ZmlsbENvbG9yKCkuYWxwaGEoKSA9PSAyNTUp
KTsKIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udENH
V2luLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDR1dpbi5jcHAKaW5k
ZXggMzRmOWIwNy4uOWQ4MTgzOCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy93aW4vRm9udENHV2luLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9G
b250Q0dXaW4uY3BwCkBAIC0xNDAsMTEgKzE0MCwxMSBAQCBzdGF0aWMgdm9pZCBkcmF3R0RJR2x5
cGhzKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBTaW1wbGVGb250RGF0
YQogCiAgICAgICAgIGRyYXdJbnRvQml0bWFwID0gZmlsbENvbG9yLmFscGhhKCkgIT0gMjU1IHx8
IGdyYXBoaWNzQ29udGV4dC0+aW5UcmFuc3BhcmVuY3lMYXllcigpOwogICAgICAgICBpZiAoIWRy
YXdJbnRvQml0bWFwKSB7Ci0gICAgICAgICAgICBGbG9hdFNpemUgc2l6ZTsKKyAgICAgICAgICAg
IEZsb2F0U2l6ZSBvZmZzZXQ7CiAgICAgICAgICAgICBmbG9hdCBibHVyOwogICAgICAgICAgICAg
Q29sb3IgY29sb3I7Ci0gICAgICAgICAgICBncmFwaGljc0NvbnRleHQtPmdldFNoYWRvdyhzaXpl
LCBibHVyLCBjb2xvcik7Ci0gICAgICAgICAgICBkcmF3SW50b0JpdG1hcCA9ICFzaXplLmlzRW1w
dHkoKSB8fCBibHVyOworICAgICAgICAgICAgZ3JhcGhpY3NDb250ZXh0LT5nZXRTaGFkb3cob2Zm
c2V0LCBibHVyLCBjb2xvcik7CisgICAgICAgICAgICBkcmF3SW50b0JpdG1hcCA9ICFvZmZzZXQu
aXNFbXB0eSgpIHx8IGJsdXI7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTM0OSwxMCArMzQ5LDEw
IEBAIHZvaWQgRm9udDo6ZHJhd0dseXBocyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4
dCwgY29uc3QgU2ltcGxlRm9udERhdGEqIGZvCiAgICAgQ0dDb250ZXh0U2V0Rm9udFNpemUoY2dD
b250ZXh0LCBwbGF0Zm9ybURhdGEuc2l6ZSgpKTsKICAgICB3a1NldENHQ29udGV4dEZvbnRSZW5k
ZXJpbmdTdHlsZShjZ0NvbnRleHQsIGZvbnQtPmlzU3lzdGVtRm9udCgpLCBmYWxzZSwgZm9udC0+
cGxhdGZvcm1EYXRhKCkudXNlR0RJKCkpOwogCi0gICAgRmxvYXRTaXplIHNoYWRvd1NpemU7Cisg
ICAgRmxvYXRTaXplIHNoYWRvd09mZnNldDsKICAgICBmbG9hdCBzaGFkb3dCbHVyOwogICAgIENv
bG9yIHNoYWRvd0NvbG9yOwotICAgIGdyYXBoaWNzQ29udGV4dC0+Z2V0U2hhZG93KHNoYWRvd1Np
emUsIHNoYWRvd0JsdXIsIHNoYWRvd0NvbG9yKTsKKyAgICBncmFwaGljc0NvbnRleHQtPmdldFNo
YWRvdyhzaGFkb3dPZmZzZXQsIHNoYWRvd0JsdXIsIHNoYWRvd0NvbG9yKTsKIAogICAgIGJvb2wg
aGFzU2ltcGxlU2hhZG93ID0gZ3JhcGhpY3NDb250ZXh0LT50ZXh0RHJhd2luZ01vZGUoKSA9PSBj
VGV4dEZpbGwgJiYgc2hhZG93Q29sb3IuaXNWYWxpZCgpICYmICFzaGFkb3dCbHVyOwogICAgIGlm
IChoYXNTaW1wbGVTaGFkb3cpIHsKQEAgLTM2MSwxMCArMzYxLDEwIEBAIHZvaWQgRm9udDo6ZHJh
d0dseXBocyhHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCwgY29uc3QgU2ltcGxlRm9u
dERhdGEqIGZvCiAgICAgICAgIENvbG9yIGZpbGxDb2xvciA9IGdyYXBoaWNzQ29udGV4dC0+Zmls
bENvbG9yKCk7CiAgICAgICAgIENvbG9yIHNoYWRvd0ZpbGxDb2xvcihzaGFkb3dDb2xvci5yZWQo
KSwgc2hhZG93Q29sb3IuZ3JlZW4oKSwgc2hhZG93Q29sb3IuYmx1ZSgpLCBzaGFkb3dDb2xvci5h
bHBoYSgpICogZmlsbENvbG9yLmFscGhhKCkgLyAyNTUpOwogICAgICAgICBncmFwaGljc0NvbnRl
eHQtPnNldEZpbGxDb2xvcihzaGFkb3dGaWxsQ29sb3IsIERldmljZUNvbG9yU3BhY2UpOwotICAg
ICAgICBDR0NvbnRleHRTZXRUZXh0UG9zaXRpb24oY2dDb250ZXh0LCBwb2ludC54KCkgKyB0cmFu
c2xhdGlvbi53aWR0aCgpICsgc2hhZG93U2l6ZS53aWR0aCgpLCBwb2ludC55KCkgKyB0cmFuc2xh
dGlvbi5oZWlnaHQoKSArIHNoYWRvd1NpemUuaGVpZ2h0KCkpOworICAgICAgICBDR0NvbnRleHRT
ZXRUZXh0UG9zaXRpb24oY2dDb250ZXh0LCBwb2ludC54KCkgKyB0cmFuc2xhdGlvbi53aWR0aCgp
ICsgc2hhZG93T2Zmc2V0LndpZHRoKCksIHBvaW50LnkoKSArIHRyYW5zbGF0aW9uLmhlaWdodCgp
ICsgc2hhZG93T2Zmc2V0LmhlaWdodCgpKTsKICAgICAgICAgQ0dDb250ZXh0U2hvd0dseXBoc1dp
dGhBZHZhbmNlcyhjZ0NvbnRleHQsIGdseXBoQnVmZmVyLmdseXBocyhmcm9tKSwgZ2x5cGhCdWZm
ZXIuYWR2YW5jZXMoZnJvbSksIG51bUdseXBocyk7CiAgICAgICAgIGlmIChmb250LT5zeW50aGV0
aWNCb2xkT2Zmc2V0KCkpIHsKLSAgICAgICAgICAgIENHQ29udGV4dFNldFRleHRQb3NpdGlvbihj
Z0NvbnRleHQsIHBvaW50LngoKSArIHRyYW5zbGF0aW9uLndpZHRoKCkgKyBzaGFkb3dTaXplLndp
ZHRoKCkgKyBmb250LT5zeW50aGV0aWNCb2xkT2Zmc2V0KCksIHBvaW50LnkoKSArIHRyYW5zbGF0
aW9uLmhlaWdodCgpICsgc2hhZG93U2l6ZS5oZWlnaHQoKSk7CisgICAgICAgICAgICBDR0NvbnRl
eHRTZXRUZXh0UG9zaXRpb24oY2dDb250ZXh0LCBwb2ludC54KCkgKyB0cmFuc2xhdGlvbi53aWR0
aCgpICsgc2hhZG93T2Zmc2V0LndpZHRoKCkgKyBmb250LT5zeW50aGV0aWNCb2xkT2Zmc2V0KCks
IHBvaW50LnkoKSArIHRyYW5zbGF0aW9uLmhlaWdodCgpICsgc2hhZG93T2Zmc2V0LmhlaWdodCgp
KTsKICAgICAgICAgICAgIENHQ29udGV4dFNob3dHbHlwaHNXaXRoQWR2YW5jZXMoY2dDb250ZXh0
LCBnbHlwaEJ1ZmZlci5nbHlwaHMoZnJvbSksIGdseXBoQnVmZmVyLmFkdmFuY2VzKGZyb20pLCBu
dW1HbHlwaHMpOwogICAgICAgICB9CiAgICAgICAgIGdyYXBoaWNzQ29udGV4dC0+c2V0RmlsbENv
bG9yKGZpbGxDb2xvciwgRGV2aWNlQ29sb3JTcGFjZSk7CkBAIC0zNzgsNyArMzc4LDcgQEAgdm9p
ZCBGb250OjpkcmF3R2x5cGhzKEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0LCBjb25z
dCBTaW1wbGVGb250RGF0YSogZm8KICAgICB9CiAKICAgICBpZiAoaGFzU2ltcGxlU2hhZG93KQot
ICAgICAgICBncmFwaGljc0NvbnRleHQtPnNldFNoYWRvdyhzaGFkb3dTaXplLCBzaGFkb3dCbHVy
LCBzaGFkb3dDb2xvciwgRGV2aWNlQ29sb3JTcGFjZSk7CisgICAgICAgIGdyYXBoaWNzQ29udGV4
dC0+c2V0U2hhZG93KHNoYWRvd09mZnNldCwgc2hhZG93Qmx1ciwgc2hhZG93Q29sb3IsIERldmlj
ZUNvbG9yU3BhY2UpOwogCiAgICAgd2tSZXN0b3JlRm9udFNtb290aGluZ1N0eWxlKGNnQ29udGV4
dCwgb2xkRm9udFNtb290aGluZ1N0eWxlKTsKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvd2luY2UvR3JhcGhpY3NDb250ZXh0V2luY2UuY3BwIGIvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW5jZS9HcmFwaGljc0NvbnRleHRXaW5jZS5jcHAKaW5kZXggZTQ0NjZj
OC4uMTYyNTEyYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW5jZS9H
cmFwaGljc0NvbnRleHRXaW5jZS5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93
aW5jZS9HcmFwaGljc0NvbnRleHRXaW5jZS5jcHAKQEAgLTEyNjAsMTUgKzEyNjAsMTUgQEAgdm9p
ZCBHcmFwaGljc0NvbnRleHQ6OmZpbGxSb3VuZGVkUmVjdChjb25zdCBJbnRSZWN0JiBmaWxsUmVj
dCwgY29uc3QgSW50U2l6ZSYgdG8KICAgICBpZiAoIW1fZGF0YS0+bV9kYykKICAgICAgICAgcmV0
dXJuOwogCi0gICAgRmxvYXRTaXplIHNoYWRvd1NpemU7CisgICAgRmxvYXRTaXplIHNoYWRvd09m
ZnNldDsKICAgICBmbG9hdCBzaGFkb3dCbHVyID0gMDsKICAgICBDb2xvciBzaGFkb3dDb2xvcjsK
ICAgICAgICAgCi0gICAgZ2V0U2hhZG93KHNoYWRvd1NpemUsIHNoYWRvd0JsdXIsIHNoYWRvd0Nv
bG9yKTsKKyAgICBnZXRTaGFkb3coc2hhZG93T2Zmc2V0LCBzaGFkb3dCbHVyLCBzaGFkb3dDb2xv
cik7CiAgICAgCiAgICAgSW50UmVjdCBkc3RSZWN0ID0gZmlsbFJlY3Q7CiAgICAgCi0gICAgZHN0
UmVjdC5tb3ZlKHN0YWJsZVJvdW5kKHNoYWRvd1NpemUud2lkdGgoKSksIHN0YWJsZVJvdW5kKHNo
YWRvd1NpemUuaGVpZ2h0KCkpKTsKKyAgICBkc3RSZWN0Lm1vdmUoc3RhYmxlUm91bmQoc2hhZG93
T2Zmc2V0LndpZHRoKCkpLCBzdGFibGVSb3VuZChzaGFkb3dPZmZzZXQuaGVpZ2h0KCkpKTsKICAg
ICBkc3RSZWN0LmluZmxhdGUoc3RhYmxlUm91bmQoc2hhZG93Qmx1cikpOwogICAgIGRzdFJlY3Qg
PSBtX2RhdGEtPm1hcFJlY3QoZHN0UmVjdCk7CiAgIApAQCAtMTY4NywxNyArMTY4NywxNyBAQCB2
b2lkIEdyYXBoaWNzQ29udGV4dDo6ZHJhd1RleHQoY29uc3QgU2ltcGxlRm9udERhdGEqIGZvbnRE
YXRhLCBjb25zdCBHbHlwaEJ1ZmZlcgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgRmxv
YXRTaXplIHNoYWRvd1NpemU7CisgICAgRmxvYXRTaXplIHNoYWRvd09mZnNldDsKICAgICBmbG9h
dCBzaGFkb3dCbHVyID0gMDsKICAgICBDb2xvciBzaGFkb3dDb2xvcjsKICAgICBib29sIGhhc1No
YWRvdyA9IHRleHREcmF3aW5nTW9kZSgpID09IGNUZXh0RmlsbAotICAgICAgICAmJiBnZXRTaGFk
b3coc2hhZG93U2l6ZSwgc2hhZG93Qmx1ciwgc2hhZG93Q29sb3IpCisgICAgICAgICYmIGdldFNo
YWRvdyhzaGFkb3dPZmZzZXQsIHNoYWRvd0JsdXIsIHNoYWRvd0NvbG9yKQogICAgICAgICAmJiBz
aGFkb3dDb2xvci5hbHBoYSgpOwogICAgIENPTE9SUkVGIHNoYWRvd1JHQkNvbG9yOwogICAgIEZs
b2F0UG9pbnQgdHJTaGFkb3dQb2ludDsKICAgICBpZiAoaGFzU2hhZG93KSB7CiAgICAgICAgIHNo
YWRvd1JHQkNvbG9yID0gUkdCKHNoYWRvd0NvbG9yLnJlZCgpLCBzaGFkb3dDb2xvci5ncmVlbigp
LCBzaGFkb3dDb2xvci5ibHVlKCkpOwotICAgICAgICB0clNoYWRvd1BvaW50ID0gbV9kYXRhLT5t
YXBQb2ludChzdGFydFBvaW50ICsgc2hhZG93U2l6ZSk7CisgICAgICAgIHRyU2hhZG93UG9pbnQg
PSBtX2RhdGEtPm1hcFBvaW50KHN0YXJ0UG9pbnQgKyBzaGFkb3dPZmZzZXQpOwogICAgIH0KIAog
ICAgIEhHRElPQkogaE9sZEZvbnQgPSBTZWxlY3RPYmplY3QobV9kYXRhLT5tX2RjLCBoRm9udCk7
Cg==
</data>
<flag name="review"
          id="54200"
          type_id="1"
          status="+"
          setter="mitz"
    />
          </attachment>
      

    </bug>

</bugzilla>