<?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>186179</bug_id>
          
          <creation_ts>2018-05-31 19:32:18 -0700</creation_ts>
          <short_desc>[LFC] Simplify the formatting class implementation by pushing down some of the logic to the Geometry class</short_desc>
          <delta_ts>2018-06-01 08:25:58 -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>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="alan">zalan</reporter>
          <assigned_to name="alan">zalan</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>koivisto</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1429111</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2018-05-31 19:32:18 -0700</bug_when>
    <thetext>it is all repetitive anyway.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1429144</commentid>
    <comment_count>1</comment_count>
      <attachid>341734</attachid>
    <who name="alan">zalan</who>
    <bug_when>2018-05-31 21:50:11 -0700</bug_when>
    <thetext>Created attachment 341734
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1429219</commentid>
    <comment_count>2</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2018-06-01 07:39:44 -0700</bug_when>
    <thetext>Committed r232394: &lt;https://trac.webkit.org/changeset/232394&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1429226</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-06-01 08:25:58 -0700</bug_when>
    <thetext>&lt;rdar://problem/40721975&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>341734</attachid>
            <date>2018-05-31 21:50:11 -0700</date>
            <delta_ts>2018-06-01 06:40:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-186179-20180531215009.patch</filename>
            <type>text/plain</type>
            <size>22952</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMyMzc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2M4ZmM3YmVmNmNjYzZh
NzJmMzIwMmQ5OTBjM2Y2NjQxZWZmNGM4Mi4uNjY0MDMyNmU0YzI0YzU2MzMwM2JlMzgxOGRjMWEz
YmY1NjU5OWJhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYxIEBACisyMDE4LTA1LTMxICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0xGQ10gU2ltcGxpZnkgdGhl
IGZvcm1hdHRpbmcgY2xhc3MgaW1wbGVtZW50YXRpb24gYnkgcHVzaGluZyBkb3duIHNvbWUgb2Yg
dGhlIGxvZ2ljIHRvIHRoZSBHZW9tZXRyeSBjbGFzcworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg2MTc5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBsYXlvdXQvRm9ybWF0dGluZ0NvbnRleHQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZU91dE9m
Rmxvd1Bvc2l0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGlu
Z0NvbnRleHQ6OmNvbXB1dGVPdXRPZkZsb3dXaWR0aCBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpMYXlvdXQ6OkZvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlRmxvYXRpbmdXaWR0aCBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlT3V0
T2ZGbG93SGVpZ2h0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGlu
Z0NvbnRleHQ6OmNvbXB1dGVGbG9hdGluZ0hlaWdodCBjb25zdCk6CisgICAgICAgICogbGF5b3V0
L0Zvcm1hdHRpbmdDb250ZXh0Lmg6CisgICAgICAgICogbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0
R2VvbWV0cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpvdXRPZkZsb3dOb25SZXBs
YWNlZEhlaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6Om91dE9mRmxvd05vblJlcGxh
Y2VkV2lkdGgpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpvdXRPZkZsb3dSZXBsYWNlZEhl
aWdodCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6Om91dE9mRmxvd1JlcGxhY2VkV2lkdGgp
OgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpmbG9hdGluZ05vblJlcGxhY2VkSGVpZ2h0KToK
KyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6ZmxvYXRpbmdOb25SZXBsYWNlZFdpZHRoKToKKyAg
ICAgICAgKFdlYkNvcmU6OkxheW91dDo6ZmxvYXRpbmdSZXBsYWNlZEhlaWdodCk6CisgICAgICAg
IChXZWJDb3JlOjpMYXlvdXQ6OmZsb2F0aW5nUmVwbGFjZWRXaWR0aCk6CisgICAgICAgIChXZWJD
b3JlOjpMYXlvdXQ6Om91dE9mRmxvd05vblJlcGxhY2VkUG9zaXRpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6TGF5b3V0OjpvdXRPZkZsb3dSZXBsYWNlZFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpvdXRPZkZsb3dIZWlnaHQp
OgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6
Om91dE9mRmxvd1dpZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0Nv
bnRleHQ6Okdlb21ldHJ5OjpmbG9hdGluZ0hlaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlv
dXQ6OkZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6ZmxvYXRpbmdXaWR0aCk6CisgICAgICAg
IChXZWJDb3JlOjpMYXlvdXQ6OkZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6b3V0T2ZGbG93
UG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0aW5nQ29udGV4dDo6
R2VvbWV0cnk6OmlubGluZVJlcGxhY2VkSGVpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91
dDo6Rm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjppbmxpbmVSZXBsYWNlZFdpZHRoKToKKyAg
ICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpvdXRP
ZkZsb3dOb25SZXBsYWNlZEhlaWdodCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXlv
dXQ6OkZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6b3V0T2ZGbG93Tm9uUmVwbGFjZWRXaWR0
aCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZvcm1hdHRpbmdDb250ZXh0
OjpHZW9tZXRyeTo6b3V0T2ZGbG93UmVwbGFjZWRIZWlnaHQpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Om91dE9mRmxvd1Jl
cGxhY2VkV2lkdGgpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0
aW5nQ29udGV4dDo6R2VvbWV0cnk6OmZsb2F0aW5nTm9uUmVwbGFjZWRIZWlnaHQpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6
OmZsb2F0aW5nTm9uUmVwbGFjZWRXaWR0aCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpM
YXlvdXQ6OkZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6ZmxvYXRpbmdSZXBsYWNlZEhlaWdo
dCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZvcm1hdHRpbmdDb250ZXh0
OjpHZW9tZXRyeTo6ZmxvYXRpbmdSZXBsYWNlZFdpZHRoKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpvdXRPZkZsb3dOb25S
ZXBsYWNlZFBvc2l0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rm9y
bWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpvdXRPZkZsb3dSZXBsYWNlZFBvc2l0aW9uKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6Okdlb21l
dHJ5OjpyZXBsYWNlZEhlaWdodCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6
OkZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6cmVwbGFjZWRXaWR0aCk6IERlbGV0ZWQuCisg
ICAgICAgICogbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6Y29t
cHV0ZVN0YXRpY1Bvc2l0aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Qmxv
Y2tGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZUluRmxvd1Bvc2l0aW9uZWRQb3NpdGlvbiBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OmNv
bXB1dGVJbkZsb3dIZWlnaHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9j
a0Zvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlSW5GbG93V2lkdGggY29uc3QpOgorICAgICAgICAq
IGxheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5oOgorICAgICAg
ICAqIGxheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6aW5GbG93Tm9uUmVwbGFjZWRIZWlnaHQp
OgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjppbkZsb3dOb25SZXBsYWNlZFdpZHRoKToKKyAg
ICAgICAgKFdlYkNvcmU6OkxheW91dDo6QmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6
OmluRmxvd0hlaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGlu
Z0NvbnRleHQ6Okdlb21ldHJ5OjppbkZsb3dXaWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlv
dXQ6OkJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjppbkZsb3dOb25SZXBsYWNlZEhl
aWdodCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkJsb2NrRm9ybWF0dGlu
Z0NvbnRleHQ6Okdlb21ldHJ5OjppbkZsb3dOb25SZXBsYWNlZFdpZHRoKTogRGVsZXRlZC4KKwog
MjAxOC0wNS0zMSAgTWVnYW4gR2FyZG5lciAgPG1lZ2FuX2dhcmRuZXJAYXBwbGUuY29tPgogCiAg
ICAgICAgIEFkZCBzZXR0aW5nIHRvIGFsbG93IG92ZXJyaWRlIHNjcmVlbiBzaXplIHRvIGJlIGRp
c2FibGVkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250
ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nQ29udGV4dC5jcHAKaW5k
ZXggZTIzNWEzM2YxYmNmNDg4NzViZDY0MmEwY2JjMzBhY2FmZWE3NjkxNy4uNmUwZDAzOTE5YTZj
ZWRiYzdlMDQxNGJmNTZhZWFjNzcwNWJiMTNiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
Rm9ybWF0dGluZ0NvbnRleHQuY3BwCkBAIC01OSwxNCArNTksNyBAQCB2b2lkIEZvcm1hdHRpbmdD
b250ZXh0Ojpjb21wdXRlSW5GbG93UG9zaXRpb25lZFBvc2l0aW9uKExheW91dENvbnRleHQmLCBj
b25zdCBCbwogCiB2b2lkIEZvcm1hdHRpbmdDb250ZXh0Ojpjb21wdXRlT3V0T2ZGbG93UG9zaXRp
b24oTGF5b3V0Q29udGV4dCYgbGF5b3V0Q29udGV4dCwgY29uc3QgQm94JiBsYXlvdXRCb3gsIERp
c3BsYXk6OkJveCYgZGlzcGxheUJveCkgY29uc3QKIHsKLSAgICBMYXlvdXRQb2ludCBjb21wdXRl
ZFRvcExlZnQ7Ci0KLSAgICBpZiAobGF5b3V0Qm94LnJlcGxhY2VkKCkpCi0gICAgICAgIGNvbXB1
dGVkVG9wTGVmdCA9IEdlb21ldHJ5OjpvdXRPZkZsb3dSZXBsYWNlZFBvc2l0aW9uKGxheW91dENv
bnRleHQsIGxheW91dEJveCk7Ci0gICAgZWxzZQotICAgICAgICBjb21wdXRlZFRvcExlZnQgPSBH
ZW9tZXRyeTo6b3V0T2ZGbG93Tm9uUmVwbGFjZWRQb3NpdGlvbihsYXlvdXRDb250ZXh0LCBsYXlv
dXRCb3gpOwotCi0gICAgZGlzcGxheUJveC5zZXRUb3BMZWZ0KGNvbXB1dGVkVG9wTGVmdCk7Cisg
ICAgZGlzcGxheUJveC5zZXRUb3BMZWZ0KEdlb21ldHJ5OjpvdXRPZkZsb3dQb3NpdGlvbihsYXlv
dXRDb250ZXh0LCBsYXlvdXRCb3gpKTsKIH0KIAogdm9pZCBGb3JtYXR0aW5nQ29udGV4dDo6Y29t
cHV0ZVdpZHRoKExheW91dENvbnRleHQmIGxheW91dENvbnRleHQsIGNvbnN0IEJveCYgbGF5b3V0
Qm94LCBEaXNwbGF5OjpCb3gmIGRpc3BsYXlCb3gpIGNvbnN0CkBAIC04OSw1MCArODIsMjIgQEAg
dm9pZCBGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZUhlaWdodChMYXlvdXRDb250ZXh0JiBsYXlv
dXRDb250ZXh0LCBjb25zdCBCb3gmIGwKIAogdm9pZCBGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0
ZU91dE9mRmxvd1dpZHRoKExheW91dENvbnRleHQmIGxheW91dENvbnRleHQsIGNvbnN0IEJveCYg
bGF5b3V0Qm94LCBEaXNwbGF5OjpCb3gmIGRpc3BsYXlCb3gpIGNvbnN0CiB7Ci0gICAgTGF5b3V0
VW5pdCBjb21wdXRlZFdpZHRoOwotCi0gICAgaWYgKGxheW91dEJveC5yZXBsYWNlZCgpKQotICAg
ICAgICBjb21wdXRlZFdpZHRoID0gR2VvbWV0cnk6Om91dE9mRmxvd1JlcGxhY2VkV2lkdGgobGF5
b3V0Q29udGV4dCwgbGF5b3V0Qm94KTsKLSAgICBlbHNlIAotICAgICAgICBjb21wdXRlZFdpZHRo
ID0gR2VvbWV0cnk6Om91dE9mRmxvd05vblJlcGxhY2VkV2lkdGgobGF5b3V0Q29udGV4dCwgbGF5
b3V0Qm94KTsKLQotICAgIGRpc3BsYXlCb3guc2V0V2lkdGgoY29tcHV0ZWRXaWR0aCk7CisgICAg
ZGlzcGxheUJveC5zZXRXaWR0aChHZW9tZXRyeTo6b3V0T2ZGbG93V2lkdGgobGF5b3V0Q29udGV4
dCwgbGF5b3V0Qm94KSk7CiB9CiAKIHZvaWQgRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVGbG9h
dGluZ1dpZHRoKExheW91dENvbnRleHQmIGxheW91dENvbnRleHQsIGNvbnN0IEJveCYgbGF5b3V0
Qm94LCBEaXNwbGF5OjpCb3gmIGRpc3BsYXlCb3gpIGNvbnN0CiB7Ci0gICAgTGF5b3V0VW5pdCBj
b21wdXRlZFdpZHRoOwotCi0gICAgaWYgKGxheW91dEJveC5yZXBsYWNlZCgpKQotICAgICAgICBj
b21wdXRlZFdpZHRoID0gR2VvbWV0cnk6OmZsb2F0aW5nUmVwbGFjZWRXaWR0aChsYXlvdXRDb250
ZXh0LCBsYXlvdXRCb3gpOwotICAgIGVsc2UKLSAgICAgICAgY29tcHV0ZWRXaWR0aCA9IEdlb21l
dHJ5OjpmbG9hdGluZ05vblJlcGxhY2VkV2lkdGgobGF5b3V0Q29udGV4dCwgbGF5b3V0Qm94KTsK
LQotICAgIGRpc3BsYXlCb3guc2V0V2lkdGgoY29tcHV0ZWRXaWR0aCk7CisgICAgZGlzcGxheUJv
eC5zZXRXaWR0aChHZW9tZXRyeTo6ZmxvYXRpbmdXaWR0aChsYXlvdXRDb250ZXh0LCBsYXlvdXRC
b3gpKTsKIH0KIAogdm9pZCBGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZU91dE9mRmxvd0hlaWdo
dChMYXlvdXRDb250ZXh0JiBsYXlvdXRDb250ZXh0LCBjb25zdCBCb3gmIGxheW91dEJveCwgRGlz
cGxheTo6Qm94JiBkaXNwbGF5Qm94KSBjb25zdAogewotICAgIExheW91dFVuaXQgY29tcHV0ZWRI
ZWlnaHQ7Ci0KLSAgICBpZiAobGF5b3V0Qm94LnJlcGxhY2VkKCkpCi0gICAgICAgIGNvbXB1dGVk
SGVpZ2h0ID0gR2VvbWV0cnk6Om91dE9mRmxvd1JlcGxhY2VkSGVpZ2h0KGxheW91dENvbnRleHQs
IGxheW91dEJveCk7Ci0gICAgZWxzZQotICAgICAgICBjb21wdXRlZEhlaWdodCA9IEdlb21ldHJ5
OjpvdXRPZkZsb3dOb25SZXBsYWNlZEhlaWdodChsYXlvdXRDb250ZXh0LCBsYXlvdXRCb3gpOwot
Ci0gICAgZGlzcGxheUJveC5zZXRIZWlnaHQoY29tcHV0ZWRIZWlnaHQpOworICAgIGRpc3BsYXlC
b3guc2V0SGVpZ2h0KEdlb21ldHJ5OjpvdXRPZkZsb3dIZWlnaHQobGF5b3V0Q29udGV4dCwgbGF5
b3V0Qm94KSk7CiB9CiAKIHZvaWQgRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVGbG9hdGluZ0hl
aWdodChMYXlvdXRDb250ZXh0JiBsYXlvdXRDb250ZXh0LCBjb25zdCBCb3gmIGxheW91dEJveCwg
RGlzcGxheTo6Qm94JiBkaXNwbGF5Qm94KSBjb25zdAogewotICAgIExheW91dFVuaXQgY29tcHV0
ZWRIZWlnaHQ7Ci0KLSAgICBpZiAobGF5b3V0Qm94LnJlcGxhY2VkKCkpCi0gICAgICAgIGNvbXB1
dGVkSGVpZ2h0ID0gR2VvbWV0cnk6OmZsb2F0aW5nUmVwbGFjZWRIZWlnaHQobGF5b3V0Q29udGV4
dCwgbGF5b3V0Qm94KTsKLSAgICBlbHNlCi0gICAgICAgIGNvbXB1dGVkSGVpZ2h0ID0gR2VvbWV0
cnk6OmZsb2F0aW5nTm9uUmVwbGFjZWRIZWlnaHQobGF5b3V0Q29udGV4dCwgbGF5b3V0Qm94KTsK
LQotICAgIGRpc3BsYXlCb3guc2V0SGVpZ2h0KGNvbXB1dGVkSGVpZ2h0KTsKKyAgICBkaXNwbGF5
Qm94LnNldEhlaWdodChHZW9tZXRyeTo6ZmxvYXRpbmdIZWlnaHQobGF5b3V0Q29udGV4dCwgbGF5
b3V0Qm94KSk7CiB9CiAKIHZvaWQgRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVNYXJnaW4oTGF5
b3V0Q29udGV4dCYsIGNvbnN0IEJveCYsIERpc3BsYXk6OkJveCYgZGlzcGxheUJveCkgY29uc3QK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nQ29udGV4dC5oIGIv
U291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0LmgKaW5kZXggMTQzMjkyYjRi
YjIzYjNkODkyODA2NWY4MDlhNzg2ZjZlZDEwNTNhOC4uYzUzZmE2NjczMGE2MzNlZjU2NTE2ZDNk
NmQ3MmYzMTI5NGUyZjM0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1h
dHRpbmdDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250
ZXh0LmgKQEAgLTkxLDI2ICs5MSwyNSBAQCBwcm90ZWN0ZWQ6CiAgICAgLy8gVGhpcyBjbGFzcyBp
bXBsZW1lbnRzIGdlbmVyaWMgcG9zaXRpb25pbmcgYW5kIHNpemluZy4KICAgICBjbGFzcyBHZW9t
ZXRyeSB7CiAgICAgcHVibGljOgotICAgICAgICBzdGF0aWMgTGF5b3V0VW5pdCBvdXRPZkZsb3dO
b25SZXBsYWNlZEhlaWdodChMYXlvdXRDb250ZXh0JiwgY29uc3QgQm94Jik7Ci0gICAgICAgIHN0
YXRpYyBMYXlvdXRVbml0IG91dE9mRmxvd05vblJlcGxhY2VkV2lkdGgoTGF5b3V0Q29udGV4dCYs
IGNvbnN0IEJveCYpOworICAgICAgICBzdGF0aWMgTGF5b3V0VW5pdCBvdXRPZkZsb3dIZWlnaHQo
TGF5b3V0Q29udGV4dCYsIGNvbnN0IEJveCYpOworICAgICAgICBzdGF0aWMgTGF5b3V0VW5pdCBv
dXRPZkZsb3dXaWR0aChMYXlvdXRDb250ZXh0JiwgY29uc3QgQm94Jik7CiAKLSAgICAgICAgc3Rh
dGljIExheW91dFVuaXQgb3V0T2ZGbG93UmVwbGFjZWRIZWlnaHQoTGF5b3V0Q29udGV4dCYsIGNv
bnN0IEJveCYpOwotICAgICAgICBzdGF0aWMgTGF5b3V0VW5pdCBvdXRPZkZsb3dSZXBsYWNlZFdp
ZHRoKExheW91dENvbnRleHQmLCBjb25zdCBCb3gmKTsKLQotICAgICAgICBzdGF0aWMgTGF5b3V0
VW5pdCBmbG9hdGluZ05vblJlcGxhY2VkSGVpZ2h0KExheW91dENvbnRleHQmLCBjb25zdCBCb3gm
KTsKLSAgICAgICAgc3RhdGljIExheW91dFVuaXQgZmxvYXRpbmdOb25SZXBsYWNlZFdpZHRoKExh
eW91dENvbnRleHQmLCBjb25zdCBCb3gmKTsKLQotICAgICAgICBzdGF0aWMgTGF5b3V0VW5pdCBm
bG9hdGluZ1JlcGxhY2VkSGVpZ2h0KExheW91dENvbnRleHQmLCBjb25zdCBCb3gmKTsKLSAgICAg
ICAgc3RhdGljIExheW91dFVuaXQgZmxvYXRpbmdSZXBsYWNlZFdpZHRoKExheW91dENvbnRleHQm
LCBjb25zdCBCb3gmKTsKKyAgICAgICAgc3RhdGljIExheW91dFVuaXQgZmxvYXRpbmdIZWlnaHQo
TGF5b3V0Q29udGV4dCYsIGNvbnN0IEJveCYpOworICAgICAgICBzdGF0aWMgTGF5b3V0VW5pdCBm
bG9hdGluZ1dpZHRoKExheW91dENvbnRleHQmLCBjb25zdCBCb3gmKTsKIAotICAgICAgICBzdGF0
aWMgTGF5b3V0UG9pbnQgb3V0T2ZGbG93Tm9uUmVwbGFjZWRQb3NpdGlvbihMYXlvdXRDb250ZXh0
JiwgY29uc3QgQm94Jik7Ci0gICAgICAgIHN0YXRpYyBMYXlvdXRQb2ludCBvdXRPZkZsb3dSZXBs
YWNlZFBvc2l0aW9uKExheW91dENvbnRleHQmLCBjb25zdCBCb3gmKTsKKyAgICAgICAgc3RhdGlj
IExheW91dFBvaW50IG91dE9mRmxvd1Bvc2l0aW9uKExheW91dENvbnRleHQmLCBjb25zdCBCb3gm
KTsKIAotICAgICAgICBzdGF0aWMgTGF5b3V0VW5pdCByZXBsYWNlZEhlaWdodChMYXlvdXRDb250
ZXh0JiwgY29uc3QgQm94Jik7Ci0gICAgICAgIHN0YXRpYyBMYXlvdXRVbml0IHJlcGxhY2VkV2lk
dGgoTGF5b3V0Q29udGV4dCYsIGNvbnN0IEJveCYpOworICAgICAgICBzdGF0aWMgTGF5b3V0VW5p
dCBpbmxpbmVSZXBsYWNlZEhlaWdodChMYXlvdXRDb250ZXh0JiwgY29uc3QgQm94Jik7CisgICAg
ICAgIHN0YXRpYyBMYXlvdXRVbml0IGlubGluZVJlcGxhY2VkV2lkdGgoTGF5b3V0Q29udGV4dCYs
IGNvbnN0IEJveCYpOwogCiAgICAgICAgIHN0YXRpYyBEaXNwbGF5OjpCb3g6OkVkZ2VzIGNvbXB1
dGVkQm9yZGVyKExheW91dENvbnRleHQmLCBjb25zdCBCb3gmKTsKICAgICAgICAgc3RhdGljIHN0
ZDo6b3B0aW9uYWw8RGlzcGxheTo6Qm94OjpFZGdlcz4gY29tcHV0ZWRQYWRkaW5nKExheW91dENv
bnRleHQmLCBjb25zdCBCb3gmKTsKKworICAgIHByaXZhdGU6CisgICAgICAgIHN0YXRpYyBMYXlv
dXRVbml0IG91dE9mRmxvd1JlcGxhY2VkSGVpZ2h0KExheW91dENvbnRleHQmLCBjb25zdCBCb3gm
KTsKKyAgICAgICAgc3RhdGljIExheW91dFVuaXQgb3V0T2ZGbG93UmVwbGFjZWRXaWR0aChMYXlv
dXRDb250ZXh0JiwgY29uc3QgQm94Jik7CisgICAgICAgIHN0YXRpYyBMYXlvdXRVbml0IGZsb2F0
aW5nUmVwbGFjZWRIZWlnaHQoTGF5b3V0Q29udGV4dCYsIGNvbnN0IEJveCYpOworICAgICAgICBz
dGF0aWMgTGF5b3V0VW5pdCBmbG9hdGluZ1JlcGxhY2VkV2lkdGgoTGF5b3V0Q29udGV4dCYsIGNv
bnN0IEJveCYpOwogICAgIH07CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHAKaW5kZXggNzg5ZmYxYTkyNjEwNDE0
NTk1YzQxZjUzYjE0NTM1YTQ2OGZmNTNiYS4uYzg5NGJkYTJmMDdjMTllMjViNTQ0NGFiZTA3YjI4
Y2NjZjIzMzNhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdD
b250ZXh0R2VvbWV0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5n
Q29udGV4dEdlb21ldHJ5LmNwcApAQCAtNjQsNyArNjQsNyBAQCBzdGF0aWMgTGF5b3V0VW5pdCBz
aHJpbmtUb0ZpdFdpZHRoKExheW91dENvbnRleHQmLCBjb25zdCBCb3gmKQogICAgIHJldHVybiB7
IH07CiB9CiAKLUxheW91dFVuaXQgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpvdXRPZkZs
b3dOb25SZXBsYWNlZEhlaWdodChMYXlvdXRDb250ZXh0JiBsYXlvdXRDb250ZXh0LCBjb25zdCBC
b3gmIGxheW91dEJveCkKK3N0YXRpYyBMYXlvdXRVbml0IG91dE9mRmxvd05vblJlcGxhY2VkSGVp
Z2h0KExheW91dENvbnRleHQmIGxheW91dENvbnRleHQsIGNvbnN0IEJveCYgbGF5b3V0Qm94KQog
ewogICAgIEFTU0VSVChsYXlvdXRCb3guaXNPdXRPZkZsb3dQb3NpdGlvbmVkKCkgJiYgIWxheW91
dEJveC5yZXBsYWNlZCgpKTsKIApAQCAtMTI4LDcgKzEyOCw3IEBAIExheW91dFVuaXQgRm9ybWF0
dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpvdXRPZkZsb3dOb25SZXBsYWNlZEhlaWdodChMYXlvdXRD
b250ZXh0CiAgICAgcmV0dXJuIGNvbXB1dGVkSGVpZ2h0VmFsdWU7CiB9CiAKLUxheW91dFVuaXQg
Rm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpvdXRPZkZsb3dOb25SZXBsYWNlZFdpZHRoKExh
eW91dENvbnRleHQmIGxheW91dENvbnRleHQsIGNvbnN0IEJveCYgbGF5b3V0Qm94KQorc3RhdGlj
IExheW91dFVuaXQgb3V0T2ZGbG93Tm9uUmVwbGFjZWRXaWR0aChMYXlvdXRDb250ZXh0JiBsYXlv
dXRDb250ZXh0LCBjb25zdCBCb3gmIGxheW91dEJveCkKIHsKICAgICBBU1NFUlQobGF5b3V0Qm94
LmlzT3V0T2ZGbG93UG9zaXRpb25lZCgpICYmICFsYXlvdXRCb3gucmVwbGFjZWQoKSk7CiAgICAg
CkBAIC0xOTIsNyArMTkyLDcgQEAgTGF5b3V0VW5pdCBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0
cnk6Om91dE9mRmxvd1JlcGxhY2VkSGVpZ2h0KExheW91dENvbnRleHQmIGwKICAgICAvLyAxMC42
LjUgQWJzb2x1dGVseSBwb3NpdGlvbmVkLCByZXBsYWNlZCBlbGVtZW50cwogICAgIC8vCiAgICAg
Ly8gVGhlIHVzZWQgdmFsdWUgb2YgJ2hlaWdodCcgaXMgZGV0ZXJtaW5lZCBhcyBmb3IgaW5saW5l
IHJlcGxhY2VkIGVsZW1lbnRzLgotICAgIHJldHVybiByZXBsYWNlZEhlaWdodChsYXlvdXRDb250
ZXh0LCBsYXlvdXRCb3gpOworICAgIHJldHVybiBpbmxpbmVSZXBsYWNlZEhlaWdodChsYXlvdXRD
b250ZXh0LCBsYXlvdXRCb3gpOwogfQogCiBMYXlvdXRVbml0IEZvcm1hdHRpbmdDb250ZXh0OjpH
ZW9tZXRyeTo6b3V0T2ZGbG93UmVwbGFjZWRXaWR0aChMYXlvdXRDb250ZXh0JiBsYXlvdXRDb250
ZXh0LCBjb25zdCBCb3gmIGxheW91dEJveCkKQEAgLTIwMSwxMCArMjAxLDEwIEBAIExheW91dFVu
aXQgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpvdXRPZkZsb3dSZXBsYWNlZFdpZHRoKExh
eW91dENvbnRleHQmIGxhCiAgICAgLy8gMTAuMy44IEFic29sdXRlbHkgcG9zaXRpb25lZCwgcmVw
bGFjZWQgZWxlbWVudHMKICAgICAvLwogICAgIC8vIFRoZSB1c2VkIHZhbHVlIG9mICd3aWR0aCcg
aXMgZGV0ZXJtaW5lZCBhcyBmb3IgaW5saW5lIHJlcGxhY2VkIGVsZW1lbnRzLgotICAgIHJldHVy
biByZXBsYWNlZFdpZHRoKGxheW91dENvbnRleHQsIGxheW91dEJveCk7CisgICAgcmV0dXJuIGlu
bGluZVJlcGxhY2VkV2lkdGgobGF5b3V0Q29udGV4dCwgbGF5b3V0Qm94KTsKIH0KIAotTGF5b3V0
VW5pdCBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmZsb2F0aW5nTm9uUmVwbGFjZWRIZWln
aHQoTGF5b3V0Q29udGV4dCYgbGF5b3V0Q29udGV4dCwgY29uc3QgQm94JiBsYXlvdXRCb3gpCitz
dGF0aWMgTGF5b3V0VW5pdCBmbG9hdGluZ05vblJlcGxhY2VkSGVpZ2h0KExheW91dENvbnRleHQm
IGxheW91dENvbnRleHQsIGNvbnN0IEJveCYgbGF5b3V0Qm94KQogewogICAgIEFTU0VSVChsYXlv
dXRCb3guaXNGbG9hdGluZ1Bvc2l0aW9uZWQoKSAmJiAhbGF5b3V0Qm94LnJlcGxhY2VkKCkpOwog
ICAgIC8vIDEwLjYuNiBDb21wbGljYXRlZCBjYXNlcwpAQCAtMjE2LDcgKzIxNiw3IEBAIExheW91
dFVuaXQgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpmbG9hdGluZ05vblJlcGxhY2VkSGVp
Z2h0KExheW91dENvbnRleHQmCiAgICAgcmV0dXJuIGhlaWdodC5pc0F1dG8oKSA/IGNvbnRlbnRI
ZWlnaHRGb3JGb3JtYXR0aW5nQ29udGV4dFJvb3QobGF5b3V0Q29udGV4dCwgbGF5b3V0Qm94KSA6
IExheW91dFVuaXQoaGVpZ2h0LnZhbHVlKCkpOwogfQogCi1MYXlvdXRVbml0IEZvcm1hdHRpbmdD
b250ZXh0OjpHZW9tZXRyeTo6ZmxvYXRpbmdOb25SZXBsYWNlZFdpZHRoKExheW91dENvbnRleHQm
IGxheW91dENvbnRleHQsIGNvbnN0IEJveCYgbGF5b3V0Qm94KQorc3RhdGljIExheW91dFVuaXQg
ZmxvYXRpbmdOb25SZXBsYWNlZFdpZHRoKExheW91dENvbnRleHQmIGxheW91dENvbnRleHQsIGNv
bnN0IEJveCYgbGF5b3V0Qm94KQogewogICAgIEFTU0VSVChsYXlvdXRCb3guaXNGbG9hdGluZ1Bv
c2l0aW9uZWQoKSAmJiAhbGF5b3V0Qm94LnJlcGxhY2VkKCkpOwogICAgIC8vIDEwLjMuNSBGbG9h
dGluZywgbm9uLXJlcGxhY2VkIGVsZW1lbnRzCkBAIC0yMzEsNyArMjMxLDcgQEAgTGF5b3V0VW5p
dCBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmZsb2F0aW5nUmVwbGFjZWRIZWlnaHQoTGF5
b3V0Q29udGV4dCYgbGEKICAgICBBU1NFUlQobGF5b3V0Qm94LmlzRmxvYXRpbmdQb3NpdGlvbmVk
KCkgJiYgbGF5b3V0Qm94LnJlcGxhY2VkKCkpOwogICAgIC8vIDEwLjYuMiBJbmxpbmUgcmVwbGFj
ZWQgZWxlbWVudHMsIGJsb2NrLWxldmVsIHJlcGxhY2VkIGVsZW1lbnRzIGluIG5vcm1hbCBmbG93
LCAnaW5saW5lLWJsb2NrJwogICAgIC8vIHJlcGxhY2VkIGVsZW1lbnRzIGluIG5vcm1hbCBmbG93
IGFuZCBmbG9hdGluZyByZXBsYWNlZCBlbGVtZW50cwotICAgIHJldHVybiByZXBsYWNlZEhlaWdo
dChsYXlvdXRDb250ZXh0LCBsYXlvdXRCb3gpOworICAgIHJldHVybiBpbmxpbmVSZXBsYWNlZEhl
aWdodChsYXlvdXRDb250ZXh0LCBsYXlvdXRCb3gpOwogfQogCiBMYXlvdXRVbml0IEZvcm1hdHRp
bmdDb250ZXh0OjpHZW9tZXRyeTo6ZmxvYXRpbmdSZXBsYWNlZFdpZHRoKExheW91dENvbnRleHQm
IGxheW91dENvbnRleHQsIGNvbnN0IEJveCYgbGF5b3V0Qm94KQpAQCAtMjQwLDEwICsyNDAsMTAg
QEAgTGF5b3V0VW5pdCBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmZsb2F0aW5nUmVwbGFj
ZWRXaWR0aChMYXlvdXRDb250ZXh0JiBsYXkKICAgICAvLyAxMC4zLjYgRmxvYXRpbmcsIHJlcGxh
Y2VkIGVsZW1lbnRzCiAgICAgLy8KICAgICAvLyBUaGUgdXNlZCB2YWx1ZSBvZiAnd2lkdGgnIGlz
IGRldGVybWluZWQgYXMgZm9yIGlubGluZSByZXBsYWNlZCBlbGVtZW50cy4KLSAgICByZXR1cm4g
cmVwbGFjZWRXaWR0aChsYXlvdXRDb250ZXh0LCBsYXlvdXRCb3gpOworICAgIHJldHVybiBpbmxp
bmVSZXBsYWNlZFdpZHRoKGxheW91dENvbnRleHQsIGxheW91dEJveCk7CiB9CiAKLUxheW91dFBv
aW50IEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6b3V0T2ZGbG93Tm9uUmVwbGFjZWRQb3Np
dGlvbihMYXlvdXRDb250ZXh0JiBsYXlvdXRDb250ZXh0LCBjb25zdCBCb3gmIGxheW91dEJveCkK
K3N0YXRpYyBMYXlvdXRQb2ludCBvdXRPZkZsb3dOb25SZXBsYWNlZFBvc2l0aW9uKExheW91dENv
bnRleHQmIGxheW91dENvbnRleHQsIGNvbnN0IEJveCYgbGF5b3V0Qm94KQogewogICAgIC8vIDEw
LjMuNyBBYnNvbHV0ZWx5IHBvc2l0aW9uZWQsIG5vbi1yZXBsYWNlZCBlbGVtZW50cyAobGVmdC9y
aWdodCkKICAgICAvLyAxMC42LjQgQWJzb2x1dGVseSBwb3NpdGlvbmVkLCBub24tcmVwbGFjZWQg
ZWxlbWVudHMgKHRvcC9ib3R0b20pCkBAIC0zMzgsNyArMzM4LDcgQEAgTGF5b3V0UG9pbnQgRm9y
bWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpvdXRPZkZsb3dOb25SZXBsYWNlZFBvc2l0aW9uKExh
eW91dENvbnQKICAgICByZXR1cm4geyBjb21wdXRlZExlZnRWYWx1ZSwgY29tcHV0ZWRUb3BWYWx1
ZSB9OwogfQogCi1MYXlvdXRQb2ludCBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Om91dE9m
Rmxvd1JlcGxhY2VkUG9zaXRpb24oTGF5b3V0Q29udGV4dCYgbGF5b3V0Q29udGV4dCwgY29uc3Qg
Qm94JiBsYXlvdXRCb3gpCitzdGF0aWMgTGF5b3V0UG9pbnQgb3V0T2ZGbG93UmVwbGFjZWRQb3Np
dGlvbihMYXlvdXRDb250ZXh0JiBsYXlvdXRDb250ZXh0LCBjb25zdCBCb3gmIGxheW91dEJveCkK
IHsKICAgICAvLyAxMC42LjUgQWJzb2x1dGVseSBwb3NpdGlvbmVkLCByZXBsYWNlZCBlbGVtZW50
cyAodG9wL2JvdHRvbSkKICAgICAvLyAxMC4zLjggQWJzb2x1dGVseSBwb3NpdGlvbmVkLCByZXBs
YWNlZCBlbGVtZW50cyAobGVmdC9yaWdodCkKQEAgLTQyNyw3ICs0MjcsNDIgQEAgTGF5b3V0UG9p
bnQgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpvdXRPZkZsb3dSZXBsYWNlZFBvc2l0aW9u
KExheW91dENvbnRleHQKICAgICByZXR1cm4geyBjb21wdXRlZExlZnRWYWx1ZSwgY29tcHV0ZWRU
b3BWYWx1ZSB9OwogfQogCi1MYXlvdXRVbml0IEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6
cmVwbGFjZWRIZWlnaHQoTGF5b3V0Q29udGV4dCYsIGNvbnN0IEJveCYgbGF5b3V0Qm94KQorTGF5
b3V0VW5pdCBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Om91dE9mRmxvd0hlaWdodChMYXlv
dXRDb250ZXh0JiBsYXlvdXRDb250ZXh0LCBjb25zdCBCb3gmIGxheW91dEJveCkKK3sKKyAgICBp
ZiAoIWxheW91dEJveC5yZXBsYWNlZCgpKQorICAgICAgICByZXR1cm4gb3V0T2ZGbG93Tm9uUmVw
bGFjZWRIZWlnaHQobGF5b3V0Q29udGV4dCwgbGF5b3V0Qm94KTsKKyAgICByZXR1cm4gb3V0T2ZG
bG93UmVwbGFjZWRIZWlnaHQobGF5b3V0Q29udGV4dCwgbGF5b3V0Qm94KTsKK30KKworTGF5b3V0
VW5pdCBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6Om91dE9mRmxvd1dpZHRoKExheW91dENv
bnRleHQmIGxheW91dENvbnRleHQsIGNvbnN0IEJveCYgbGF5b3V0Qm94KQoreworICAgIGlmICgh
bGF5b3V0Qm94LnJlcGxhY2VkKCkpCisgICAgICAgIHJldHVybiBvdXRPZkZsb3dOb25SZXBsYWNl
ZFdpZHRoKGxheW91dENvbnRleHQsIGxheW91dEJveCk7CisgICAgcmV0dXJuIG91dE9mRmxvd1Jl
cGxhY2VkV2lkdGgobGF5b3V0Q29udGV4dCwgbGF5b3V0Qm94KTsKK30KKworTGF5b3V0VW5pdCBG
b3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmZsb2F0aW5nSGVpZ2h0KExheW91dENvbnRleHQm
IGxheW91dENvbnRleHQsIGNvbnN0IEJveCYgbGF5b3V0Qm94KQoreworICAgIGlmICghbGF5b3V0
Qm94LnJlcGxhY2VkKCkpCisgICAgICAgIHJldHVybiBmbG9hdGluZ05vblJlcGxhY2VkSGVpZ2h0
KGxheW91dENvbnRleHQsIGxheW91dEJveCk7CisgICAgcmV0dXJuIGZsb2F0aW5nUmVwbGFjZWRI
ZWlnaHQobGF5b3V0Q29udGV4dCwgbGF5b3V0Qm94KTsKK30KKworTGF5b3V0VW5pdCBGb3JtYXR0
aW5nQ29udGV4dDo6R2VvbWV0cnk6OmZsb2F0aW5nV2lkdGgoTGF5b3V0Q29udGV4dCYgbGF5b3V0
Q29udGV4dCwgY29uc3QgQm94JiBsYXlvdXRCb3gpCit7CisgICAgaWYgKCFsYXlvdXRCb3gucmVw
bGFjZWQoKSkKKyAgICAgICAgcmV0dXJuIGZsb2F0aW5nTm9uUmVwbGFjZWRXaWR0aChsYXlvdXRD
b250ZXh0LCBsYXlvdXRCb3gpOworICAgIHJldHVybiBmbG9hdGluZ1JlcGxhY2VkV2lkdGgobGF5
b3V0Q29udGV4dCwgbGF5b3V0Qm94KTsKK30KKworTGF5b3V0UG9pbnQgRm9ybWF0dGluZ0NvbnRl
eHQ6Okdlb21ldHJ5OjpvdXRPZkZsb3dQb3NpdGlvbihMYXlvdXRDb250ZXh0JiBsYXlvdXRDb250
ZXh0LCBjb25zdCBCb3gmIGxheW91dEJveCkKK3sKKyAgICBpZiAoIWxheW91dEJveC5yZXBsYWNl
ZCgpKQorICAgICAgICByZXR1cm4gb3V0T2ZGbG93Tm9uUmVwbGFjZWRQb3NpdGlvbihsYXlvdXRD
b250ZXh0LCBsYXlvdXRCb3gpOworICAgIHJldHVybiBvdXRPZkZsb3dSZXBsYWNlZFBvc2l0aW9u
KGxheW91dENvbnRleHQsIGxheW91dEJveCk7Cit9CisKK0xheW91dFVuaXQgRm9ybWF0dGluZ0Nv
bnRleHQ6Okdlb21ldHJ5OjppbmxpbmVSZXBsYWNlZEhlaWdodChMYXlvdXRDb250ZXh0JiwgY29u
c3QgQm94JiBsYXlvdXRCb3gpCiB7CiAgICAgQVNTRVJUKChsYXlvdXRCb3guaXNPdXRPZkZsb3dQ
b3NpdGlvbmVkKCkgfHwgbGF5b3V0Qm94LmlzRmxvYXRpbmdQb3NpdGlvbmVkKCkgfHwgbGF5b3V0
Qm94LmlzSW5GbG93KCkpICYmIGxheW91dEJveC5yZXBsYWNlZCgpKTsKICAgICAvLyAxMC42LjUg
QWJzb2x1dGVseSBwb3NpdGlvbmVkLCByZXBsYWNlZCBlbGVtZW50cy4gVGhlIHVzZWQgdmFsdWUg
b2YgJ2hlaWdodCcgaXMgZGV0ZXJtaW5lZCBhcyBmb3IgaW5saW5lIHJlcGxhY2VkIGVsZW1lbnRz
LgpAQCAtNDcxLDcgKzUwNiw3IEBAIExheW91dFVuaXQgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21l
dHJ5OjpyZXBsYWNlZEhlaWdodChMYXlvdXRDb250ZXh0JiwgY29uc3QgQm94CiAgICAgcmV0dXJu
IGNvbXB1dGVkSGVpZ2h0VmFsdWU7CiB9CiAKLUxheW91dFVuaXQgRm9ybWF0dGluZ0NvbnRleHQ6
Okdlb21ldHJ5OjpyZXBsYWNlZFdpZHRoKExheW91dENvbnRleHQmLCBjb25zdCBCb3gmIGxheW91
dEJveCkKK0xheW91dFVuaXQgRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjppbmxpbmVSZXBs
YWNlZFdpZHRoKExheW91dENvbnRleHQmLCBjb25zdCBCb3gmIGxheW91dEJveCkKIHsKICAgICBB
U1NFUlQoKGxheW91dEJveC5pc091dE9mRmxvd1Bvc2l0aW9uZWQoKSB8fCBsYXlvdXRCb3guaXNG
bG9hdGluZ1Bvc2l0aW9uZWQoKSB8fCBsYXlvdXRCb3guaXNJbkZsb3coKSkgJiYgbGF5b3V0Qm94
LnJlcGxhY2VkKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tm
b3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0LmNwcAppbmRleCA1YzA2
YTY1NDA4YTBiMGI0ZjMyNTYxMjVmMDU5OWVhYzBjMDMxZjFhLi5kOWY1MzdkNzM2ZjVmZTk0MzYw
ZDA0Nzk3YTMxODQ4Mjk0MGUyY2UxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
YmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5jcHAK
QEAgLTEzMSw0MiArMTMxLDIyIEBAIFJlZjxGbG9hdGluZ1N0YXRlPiBCbG9ja0Zvcm1hdHRpbmdD
b250ZXh0OjpjcmVhdGVPckZpbmRGbG9hdGluZ1N0YXRlKExheW91dENvbnRlCiAKIHZvaWQgQmxv
Y2tGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZVN0YXRpY1Bvc2l0aW9uKExheW91dENvbnRleHQm
IGxheW91dENvbnRleHQsIGNvbnN0IEJveCYgbGF5b3V0Qm94LCBEaXNwbGF5OjpCb3gmIGRpc3Bs
YXlCb3gpIGNvbnN0CiB7Ci0gICAgYXV0byB0b3BMZWZ0ID0gR2VvbWV0cnk6OnN0YXRpY1Bvc2l0
aW9uKGxheW91dENvbnRleHQsIGxheW91dEJveCk7Ci0gICAgZGlzcGxheUJveC5zZXRUb3BMZWZ0
KHRvcExlZnQpOworICAgIGRpc3BsYXlCb3guc2V0VG9wTGVmdChHZW9tZXRyeTo6c3RhdGljUG9z
aXRpb24obGF5b3V0Q29udGV4dCwgbGF5b3V0Qm94KSk7CiB9CiAKIHZvaWQgQmxvY2tGb3JtYXR0
aW5nQ29udGV4dDo6Y29tcHV0ZUluRmxvd1Bvc2l0aW9uZWRQb3NpdGlvbihMYXlvdXRDb250ZXh0
JiBsYXlvdXRDb250ZXh0LCBjb25zdCBCb3gmIGxheW91dEJveCwgRGlzcGxheTo6Qm94JiBkaXNw
bGF5Qm94KSBjb25zdAogewotICAgIGF1dG8gdG9wTGVmdCA9IEdlb21ldHJ5OjppbkZsb3dQb3Np
dGlvbmVkUG9zaXRpb24obGF5b3V0Q29udGV4dCwgbGF5b3V0Qm94KTsKLSAgICBkaXNwbGF5Qm94
LnNldFRvcExlZnQodG9wTGVmdCk7CisgICAgZGlzcGxheUJveC5zZXRUb3BMZWZ0KEdlb21ldHJ5
OjppbkZsb3dQb3NpdGlvbmVkUG9zaXRpb24obGF5b3V0Q29udGV4dCwgbGF5b3V0Qm94KSk7CiB9
CiAKIHZvaWQgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6Y29tcHV0ZUluRmxvd0hlaWdodChMYXlv
dXRDb250ZXh0JiBsYXlvdXRDb250ZXh0LCBjb25zdCBCb3gmIGxheW91dEJveCwgRGlzcGxheTo6
Qm94JiBkaXNwbGF5Qm94KSBjb25zdAogewotICAgIExheW91dFVuaXQgY29tcHV0ZWRIZWlnaHQ7
Ci0KLSAgICBpZiAobGF5b3V0Qm94LnJlcGxhY2VkKCkpIHsKLSAgICAgICAgLy8gMTAuNi4yIElu
bGluZSByZXBsYWNlZCBlbGVtZW50cywgYmxvY2stbGV2ZWwgcmVwbGFjZWQgZWxlbWVudHMgaW4g
bm9ybWFsIGZsb3csICdpbmxpbmUtYmxvY2snCi0gICAgICAgIC8vIHJlcGxhY2VkIGVsZW1lbnRz
IGluIG5vcm1hbCBmbG93IGFuZCBmbG9hdGluZyByZXBsYWNlZCBlbGVtZW50cwotICAgICAgICBj
b21wdXRlZEhlaWdodCA9IEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6cmVwbGFjZWRIZWln
aHQobGF5b3V0Q29udGV4dCwgbGF5b3V0Qm94KTsKLSAgICB9IGVsc2UKLSAgICAgICAgY29tcHV0
ZWRIZWlnaHQgPSBHZW9tZXRyeTo6aW5GbG93Tm9uUmVwbGFjZWRIZWlnaHQobGF5b3V0Q29udGV4
dCwgbGF5b3V0Qm94KTsKLQotICAgIGRpc3BsYXlCb3guc2V0SGVpZ2h0KGNvbXB1dGVkSGVpZ2h0
KTsKKyAgICBkaXNwbGF5Qm94LnNldEhlaWdodChHZW9tZXRyeTo6aW5GbG93SGVpZ2h0KGxheW91
dENvbnRleHQsIGxheW91dEJveCkpOwogfQogCiB2b2lkIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6
OmNvbXB1dGVJbkZsb3dXaWR0aChMYXlvdXRDb250ZXh0JiBsYXlvdXRDb250ZXh0LCBjb25zdCBC
b3gmIGxheW91dEJveCwgRGlzcGxheTo6Qm94JiBkaXNwbGF5Qm94KSBjb25zdAogewotICAgIExh
eW91dFVuaXQgY29tcHV0ZWRXaWR0aDsKLQotICAgIGlmIChsYXlvdXRCb3gucmVwbGFjZWQoKSkg
ewotICAgICAgICAvLyAxMC4zLjQgQmxvY2stbGV2ZWwsIHJlcGxhY2VkIGVsZW1lbnRzIGluIG5v
cm1hbCBmbG93Ci0gICAgICAgIC8vIFRoZSB1c2VkIHZhbHVlIG9mICd3aWR0aCcgaXMgZGV0ZXJt
aW5lZCBhcyBmb3IgaW5saW5lIHJlcGxhY2VkIGVsZW1lbnRzCi0gICAgICAgIGNvbXB1dGVkV2lk
dGggPSBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OnJlcGxhY2VkV2lkdGgobGF5b3V0Q29u
dGV4dCwgbGF5b3V0Qm94KTsKLSAgICB9IGVsc2UKLSAgICAgICAgY29tcHV0ZWRXaWR0aCA9IEdl
b21ldHJ5OjppbkZsb3dOb25SZXBsYWNlZFdpZHRoKGxheW91dENvbnRleHQsIGxheW91dEJveCk7
Ci0KLSAgICBkaXNwbGF5Qm94LnNldFdpZHRoKGNvbXB1dGVkV2lkdGgpOworICAgIGRpc3BsYXlC
b3guc2V0V2lkdGgoR2VvbWV0cnk6OmluRmxvd1dpZHRoKGxheW91dENvbnRleHQsIGxheW91dEJv
eCkpOwogfQogCiB2b2lkIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6OmNvbXB1dGVNYXJnaW4oTGF5
b3V0Q29udGV4dCYgbGF5b3V0Q29udGV4dCwgY29uc3QgQm94JiBsYXlvdXRCb3gsIERpc3BsYXk6
OkJveCYgZGlzcGxheUJveCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5oIGIvU291cmNlL1dlYkNv
cmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0LmgKaW5kZXgg
NzExMWQyNmQwNWNkOTZlZGM3ZmMxMGQ0N2Y5ZjVlOGU4NTVkMmEwNi4uMzcxMDg1M2NlZmI3MDNj
NDE4YzYxYWZlMzE2OGQyYmI0OWE1MzU4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0LmgK
QEAgLTYwLDEzICs2MCwxNyBAQCBwcml2YXRlOgogICAgIC8vIFRoaXMgY2xhc3MgaW1wbGVtZW50
cyBwb3NpdGlvbmluZyBhbmQgc2l6aW5nIGZvciBib3hlcyBwYXJ0aWNpcGF0aW5nIGluIGEgYmxv
Y2sgZm9ybWF0dGluZyBjb250ZXh0LgogICAgIGNsYXNzIEdlb21ldHJ5IHsKICAgICBwdWJsaWM6
Ci0gICAgICAgIHN0YXRpYyBMYXlvdXRVbml0IGluRmxvd05vblJlcGxhY2VkSGVpZ2h0KExheW91
dENvbnRleHQmLCBjb25zdCBCb3gmKTsKLSAgICAgICAgc3RhdGljIExheW91dFVuaXQgaW5GbG93
Tm9uUmVwbGFjZWRXaWR0aChMYXlvdXRDb250ZXh0JiwgY29uc3QgQm94Jik7CisgICAgICAgIHN0
YXRpYyBMYXlvdXRVbml0IGluRmxvd0hlaWdodChMYXlvdXRDb250ZXh0JiwgY29uc3QgQm94Jik7
CisgICAgICAgIHN0YXRpYyBMYXlvdXRVbml0IGluRmxvd1dpZHRoKExheW91dENvbnRleHQmLCBj
b25zdCBCb3gmKTsKIAogICAgICAgICBzdGF0aWMgTGF5b3V0UG9pbnQgc3RhdGljUG9zaXRpb24o
TGF5b3V0Q29udGV4dCYsIGNvbnN0IEJveCYpOwogICAgICAgICBzdGF0aWMgTGF5b3V0UG9pbnQg
aW5GbG93UG9zaXRpb25lZFBvc2l0aW9uKExheW91dENvbnRleHQmLCBjb25zdCBCb3gmKTsKIAog
ICAgICAgICBzdGF0aWMgRGlzcGxheTo6Qm94OjpFZGdlcyBjb21wdXRlZE1hcmdpbihMYXlvdXRD
b250ZXh0JiwgY29uc3QgQm94Jik7CisKKyAgICBwcml2YXRlOgorICAgICAgICBzdGF0aWMgTGF5
b3V0VW5pdCBpbkZsb3dOb25SZXBsYWNlZEhlaWdodChMYXlvdXRDb250ZXh0JiwgY29uc3QgQm94
Jik7CisgICAgICAgIHN0YXRpYyBMYXlvdXRVbml0IGluRmxvd05vblJlcGxhY2VkV2lkdGgoTGF5
b3V0Q29udGV4dCYsIGNvbnN0IEJveCYpOwogICAgIH07CiAgICAgCiAgICAgLy8gVGhpcyBjbGFz
cyBpbXBsZW1lbnRzIG1hcmdpbiBjb2xsYXBzaW5nIGZvciBibG9jayBmb3JtYXR0aW5nIGNvbnRl
eHQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Js
b2NrRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
YmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHAKaW5kZXgg
Mzg4ZjI0ODE0NGRiODVlYzk1OTc2NzAxNjI4M2YwYTY5YTU3MGE1Zi4uMTA2YjI3MzY1NDg5NjI2
OWViY2UxZGI3NDk4YThhN2RlN2U5YTk2MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5
b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5n
Q29udGV4dEdlb21ldHJ5LmNwcApAQCAtMjM2LDYgKzIzNiwyNCBAQCBMYXlvdXRQb2ludCBCbG9j
a0Zvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6aW5GbG93UG9zaXRpb25lZFBvc2l0aW9uKExh
eW91dENvbgogICAgIHJldHVybiB7IGRpc3BsYXlCb3gubGVmdCgpICsgbGVmdERlbHRhLCBkaXNw
bGF5Qm94LnRvcCgpICsgdG9wRGVsdGEgfTsKIH0KIAorTGF5b3V0VW5pdCBCbG9ja0Zvcm1hdHRp
bmdDb250ZXh0OjpHZW9tZXRyeTo6aW5GbG93SGVpZ2h0KExheW91dENvbnRleHQmIGxheW91dENv
bnRleHQsIGNvbnN0IEJveCYgbGF5b3V0Qm94KQoreworICAgIGlmICghbGF5b3V0Qm94LnJlcGxh
Y2VkKCkpCisgICAgICAgIHJldHVybiBpbkZsb3dOb25SZXBsYWNlZEhlaWdodChsYXlvdXRDb250
ZXh0LCBsYXlvdXRCb3gpOworICAgIC8vIDEwLjYuMiBJbmxpbmUgcmVwbGFjZWQgZWxlbWVudHMs
IGJsb2NrLWxldmVsIHJlcGxhY2VkIGVsZW1lbnRzIGluIG5vcm1hbCBmbG93LCAnaW5saW5lLWJs
b2NrJworICAgIC8vIHJlcGxhY2VkIGVsZW1lbnRzIGluIG5vcm1hbCBmbG93IGFuZCBmbG9hdGlu
ZyByZXBsYWNlZCBlbGVtZW50cworICAgIHJldHVybiBGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0
cnk6OmlubGluZVJlcGxhY2VkSGVpZ2h0KGxheW91dENvbnRleHQsIGxheW91dEJveCk7Cit9CisK
K0xheW91dFVuaXQgQmxvY2tGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0cnk6OmluRmxvd1dpZHRo
KExheW91dENvbnRleHQmIGxheW91dENvbnRleHQsIGNvbnN0IEJveCYgbGF5b3V0Qm94KQorewor
ICAgIGlmICghbGF5b3V0Qm94LnJlcGxhY2VkKCkpCisgICAgICAgIHJldHVybiBpbkZsb3dOb25S
ZXBsYWNlZFdpZHRoKGxheW91dENvbnRleHQsIGxheW91dEJveCk7CisgICAgLy8gMTAuMy40IEJs
b2NrLWxldmVsLCByZXBsYWNlZCBlbGVtZW50cyBpbiBub3JtYWwgZmxvdworICAgIC8vIFRoZSB1
c2VkIHZhbHVlIG9mICd3aWR0aCcgaXMgZGV0ZXJtaW5lZCBhcyBmb3IgaW5saW5lIHJlcGxhY2Vk
IGVsZW1lbnRzCisgICAgcmV0dXJuIEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6aW5saW5l
UmVwbGFjZWRXaWR0aChsYXlvdXRDb250ZXh0LCBsYXlvdXRCb3gpOworfQorCiBEaXNwbGF5OjpC
b3g6OkVkZ2VzIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5Ojpjb21wdXRlZE1hcmdp
bihMYXlvdXRDb250ZXh0JiBsYXlvdXRDb250ZXh0LCBjb25zdCBCb3gmIGxheW91dEJveCkKIHsK
ICAgICBhdXRvJiBzdHlsZSA9IGxheW91dEJveC5zdHlsZSgpOwo=
</data>
<flag name="review"
          id="359902"
          type_id="1"
          status="+"
          setter="koivisto"
    />
          </attachment>
      

    </bug>

</bugzilla>