{
  "type": "FunctionDeclaration",
  "start": 0,
  "end": 638,
  "id": {
    "type": "Identifier",
    "start": 9,
    "end": 24,
    "name": "__setAttributes"
  },
  "generator": false,
  "expression": false,
  "params": [
    {
      "type": "Identifier",
      "start": 25,
      "end": 32,
      "name": "element"
    },
    {
      "type": "Identifier",
      "start": 34,
      "end": 44,
      "name": "attributes"
    }
  ],
  "body": {
    "type": "BlockStatement",
    "start": 46,
    "end": 638,
    "body": [
      {
        "type": "VariableDeclaration",
        "start": 50,
        "end": 352,
        "declarations": [
          {
            "type": "VariableDeclarator",
            "start": 54,
            "end": 352,
            "id": {
              "type": "Identifier",
              "start": 54,
              "end": 67,
              "name": "isPlainObject"
            },
            "init": {
              "type": "LogicalExpression",
              "start": 70,
              "end": 352,
              "left": {
                "type": "LogicalExpression",
                "start": 70,
                "end": 280,
                "left": {
                  "type": "LogicalExpression",
                  "start": 70,
                  "end": 186,
                  "left": {
                    "type": "BinaryExpression",
                    "start": 70,
                    "end": 134,
                    "left": {
                      "type": "CallExpression",
                      "start": 70,
                      "end": 112,
                      "callee": {
                        "type": "MemberExpression",
                        "start": 70,
                        "end": 100,
                        "object": {
                          "type": "MemberExpression",
                          "start": 70,
                          "end": 95,
                          "object": {
                            "type": "MemberExpression",
                            "start": 70,
                            "end": 86,
                            "object": {
                              "type": "Identifier",
                              "start": 70,
                              "end": 76,
                              "name": "Object"
                            },
                            "property": {
                              "type": "Identifier",
                              "start": 77,
                              "end": 86,
                              "name": "prototype"
                            },
                            "computed": false
                          },
                          "property": {
                            "type": "Identifier",
                            "start": 87,
                            "end": 95,
                            "name": "toString"
                          },
                          "computed": false
                        },
                        "property": {
                          "type": "Identifier",
                          "start": 96,
                          "end": 100,
                          "name": "call"
                        },
                        "computed": false
                      },
                      "arguments": [
                        {
                          "type": "Identifier",
                          "start": 101,
                          "end": 111,
                          "name": "attributes"
                        }
                      ]
                    },
                    "operator": "===",
                    "right": {
                      "type": "Literal",
                      "start": 117,
                      "end": 134,
                      "value": "[object Object]",
                      "raw": "'[object Object]'"
                    }
                  },
                  "operator": "&&",
                  "right": {
                    "type": "BinaryExpression",
                    "start": 142,
                    "end": 186,
                    "left": {
                      "type": "UnaryExpression",
                      "start": 142,
                      "end": 171,
                      "operator": "typeof",
                      "prefix": true,
                      "argument": {
                        "type": "MemberExpression",
                        "start": 149,
                        "end": 171,
                        "object": {
                          "type": "Identifier",
                          "start": 149,
                          "end": 159,
                          "name": "attributes"
                        },
                        "property": {
                          "type": "Identifier",
                          "start": 160,
                          "end": 171,
                          "name": "constructor"
                        },
                        "computed": false
                      }
                    },
                    "operator": "===",
                    "right": {
                      "type": "Literal",
                      "start": 176,
                      "end": 186,
                      "value": "function",
                      "raw": "'function'"
                    }
                  }
                },
                "operator": "&&",
                "right": {
                  "type": "BinaryExpression",
                  "start": 194,
                  "end": 280,
                  "left": {
                    "type": "CallExpression",
                    "start": 194,
                    "end": 258,
                    "callee": {
                      "type": "MemberExpression",
                      "start": 194,
                      "end": 224,
                      "object": {
                        "type": "MemberExpression",
                        "start": 194,
                        "end": 219,
                        "object": {
                          "type": "MemberExpression",
                          "start": 194,
                          "end": 210,
                          "object": {
                            "type": "Identifier",
                            "start": 194,
                            "end": 200,
                            "name": "Object"
                          },
                          "property": {
                            "type": "Identifier",
                            "start": 201,
                            "end": 210,
                            "name": "prototype"
                          },
                          "computed": false
                        },
                        "property": {
                          "type": "Identifier",
                          "start": 211,
                          "end": 219,
                          "name": "toString"
                        },
                        "computed": false
                      },
                      "property": {
                        "type": "Identifier",
                        "start": 220,
                        "end": 224,
                        "name": "call"
                      },
                      "computed": false
                    },
                    "arguments": [
                      {
                        "type": "MemberExpression",
                        "start": 225,
                        "end": 257,
                        "object": {
                          "type": "MemberExpression",
                          "start": 225,
                          "end": 247,
                          "object": {
                            "type": "Identifier",
                            "start": 225,
                            "end": 235,
                            "name": "attributes"
                          },
                          "property": {
                            "type": "Identifier",
                            "start": 236,
                            "end": 247,
                            "name": "constructor"
                          },
                          "computed": false
                        },
                        "property": {
                          "type": "Identifier",
                          "start": 248,
                          "end": 257,
                          "name": "prototype"
                        },
                        "computed": false
                      }
                    ]
                  },
                  "operator": "===",
                  "right": {
                    "type": "Literal",
                    "start": 263,
                    "end": 280,
                    "value": "[object Object]",
                    "raw": "'[object Object]'"
                  }
                }
              },
              "operator": "&&",
              "right": {
                "type": "CallExpression",
                "start": 288,
                "end": 352,
                "callee": {
                  "type": "MemberExpression",
                  "start": 288,
                  "end": 335,
                  "object": {
                    "type": "MemberExpression",
                    "start": 288,
                    "end": 320,
                    "object": {
                      "type": "MemberExpression",
                      "start": 288,
                      "end": 310,
                      "object": {
                        "type": "Identifier",
                        "start": 288,
                        "end": 298,
                        "name": "attributes"
                      },
                      "property": {
                        "type": "Identifier",
                        "start": 299,
                        "end": 310,
                        "name": "constructor"
                      },
                      "computed": false
                    },
                    "property": {
                      "type": "Identifier",
                      "start": 311,
                      "end": 320,
                      "name": "prototype"
                    },
                    "computed": false
                  },
                  "property": {
                    "type": "Identifier",
                    "start": 321,
                    "end": 335,
                    "name": "hasOwnProperty"
                  },
                  "computed": false
                },
                "arguments": [
                  {
                    "type": "Literal",
                    "start": 336,
                    "end": 351,
                    "value": "isPrototypeOf",
                    "raw": "'isPrototypeOf'"
                  }
                ]
              }
            }
          }
        ],
        "kind": "var"
      },
      {
        "type": "IfStatement",
        "start": 356,
        "end": 636,
        "test": {
          "type": "Identifier",
          "start": 360,
          "end": 373,
          "name": "isPlainObject"
        },
        "consequent": {
          "type": "BlockStatement",
          "start": 375,
          "end": 469,
          "body": [
            {
              "type": "ForInStatement",
              "start": 381,
              "end": 465,
              "left": {
                "type": "VariableDeclaration",
                "start": 386,
                "end": 393,
                "declarations": [
                  {
                    "type": "VariableDeclarator",
                    "start": 390,
                    "end": 393,
                    "id": {
                      "type": "Identifier",
                      "start": 390,
                      "end": 393,
                      "name": "key"
                    },
                    "init": null
                  }
                ],
                "kind": "var"
              },
              "right": {
                "type": "Identifier",
                "start": 397,
                "end": 407,
                "name": "attributes"
              },
              "body": {
                "type": "BlockStatement",
                "start": 409,
                "end": 465,
                "body": [
                  {
                    "type": "ExpressionStatement",
                    "start": 417,
                    "end": 459,
                    "expression": {
                      "type": "CallExpression",
                      "start": 417,
                      "end": 459,
                      "callee": {
                        "type": "MemberExpression",
                        "start": 417,
                        "end": 437,
                        "object": {
                          "type": "Identifier",
                          "start": 417,
                          "end": 424,
                          "name": "element"
                        },
                        "property": {
                          "type": "Identifier",
                          "start": 425,
                          "end": 437,
                          "name": "setAttribute"
                        },
                        "computed": false
                      },
                      "arguments": [
                        {
                          "type": "Identifier",
                          "start": 438,
                          "end": 441,
                          "name": "key"
                        },
                        {
                          "type": "MemberExpression",
                          "start": 443,
                          "end": 458,
                          "object": {
                            "type": "Identifier",
                            "start": 443,
                            "end": 453,
                            "name": "attributes"
                          },
                          "property": {
                            "type": "Identifier",
                            "start": 454,
                            "end": 457,
                            "name": "key"
                          },
                          "computed": true
                        }
                      ]
                    }
                  }
                ]
              }
            }
          ]
        },
        "alternate": {
          "type": "BlockStatement",
          "start": 475,
          "end": 636,
          "body": [
            {
              "type": "ThrowStatement",
              "start": 481,
              "end": 632,
              "argument": {
                "type": "NewExpression",
                "start": 487,
                "end": 632,
                "callee": {
                  "type": "Identifier",
                  "start": 491,
                  "end": 503,
                  "name": "DOMException"
                },
                "arguments": [
                  {
                    "type": "BinaryExpression",
                    "start": 504,
                    "end": 631,
                    "left": {
                      "type": "BinaryExpression",
                      "start": 504,
                      "end": 603,
                      "left": {
                        "type": "Literal",
                        "start": 504,
                        "end": 558,
                        "value": "Failed to execute 'setAttributes' on 'Element': ",
                        "raw": "'Failed to execute \\'setAttributes\\' on \\'Element\\': '"
                      },
                      "operator": "+",
                      "right": {
                        "type": "CallExpression",
                        "start": 561,
                        "end": 603,
                        "callee": {
                          "type": "MemberExpression",
                          "start": 561,
                          "end": 591,
                          "object": {
                            "type": "MemberExpression",
                            "start": 561,
                            "end": 586,
                            "object": {
                              "type": "MemberExpression",
                              "start": 561,
                              "end": 577,
                              "object": {
                                "type": "Identifier",
                                "start": 561,
                                "end": 567,
                                "name": "Object"
                              },
                              "property": {
                                "type": "Identifier",
                                "start": 568,
                                "end": 577,
                                "name": "prototype"
                              },
                              "computed": false
                            },
                            "property": {
                              "type": "Identifier",
                              "start": 578,
                              "end": 586,
                              "name": "toString"
                            },
                            "computed": false
                          },
                          "property": {
                            "type": "Identifier",
                            "start": 587,
                            "end": 591,
                            "name": "call"
                          },
                          "computed": false
                        },
                        "arguments": [
                          {
                            "type": "Identifier",
                            "start": 592,
                            "end": 602,
                            "name": "attributes"
                          }
                        ]
                      }
                    },
                    "operator": "+",
                    "right": {
                      "type": "Literal",
                      "start": 606,
                      "end": 631,
                      "value": " is not a plain object.",
                      "raw": "' is not a plain object.'"
                    }
                  }
                ]
              }
            }
          ]
        }
      }
    ]
  }
}