{"id":3084,"date":"2026-08-26T08:00:00","date_gmt":"2026-08-26T08:00:00","guid":{"rendered":"https:\/\/housfy.com\/blog\/?p=3084"},"modified":"2026-10-29T13:51:30","modified_gmt":"2026-10-29T13:51:30","slug":"5-claves-para-la-negociacion-de-la-mejor-hipoteca-del-mercado","status":"publish","type":"post","link":"https:\/\/housfy.com\/blog\/5-claves-para-la-negociacion-de-la-mejor-hipoteca-del-mercado\/","title":{"rendered":"\u00bfC\u00f3mo negociar una hipoteca con el banco paso a paso este 2026?"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Para negociar una hipoteca con el banco es recomendable <strong>comparar ofertas de varios bancos y contar con ingresos estables y un bajo endeudamiento para negociar tipo de inter\u00e9s, comisiones y productos vinculados<\/strong> con contraofertas.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Por lo tanto, si este 2026 ya no quieres ir de sucursal en sucursal para firmar un pr\u00e9stamo que no se adapta a tus necesidades, <strong>aprende c\u00f3mo negociar una hipoteca con el banco<\/strong> paso a paso con este art\u00edculo.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Lo m\u00e1s importante de este art\u00edculo:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Aseg\u00farate que tienes un perfil solvente<\/strong> antes de empezar. Debes tener ahorrado aproximadamente entre el 30% y el 32% del valor de la vivienda y que la cuota mensual no supere el 35%-40% de tus ingresos netos. <strong>Solamente as\u00ed vas a tener el poder suficiente para entender c\u00f3mo negociar una hipoteca con el banco<\/strong> paso a paso y aplicarlo.<\/li>\n\n\n\n<li>Si vas solo, <strong>solicita la FEIN (Ficha Europea de Informaci\u00f3n Normalizada) en todas y cada una de las ofertas que recibas para despu\u00e9s comparar de forma objetiva<\/strong> aspectos como el TIN, la TAE y los costes adicionales de comprar una vivienda (impuestos, notar\u00eda&#8230;).<\/li>\n\n\n\n<li>Cuando vayas a distintos bancos, utiliza las ofertas que ya has recibido previamente como \u00abpalanca\u00bb, es decir, <strong>ense\u00f1a a las entidades qu\u00e9 ofrece la competencia para que mejoren sus condiciones.<\/strong> El banco siempre espera que el cliente de el primer paso en la negociaci\u00f3n.<\/li>\n\n\n\n<li><strong>No aceptes seguros, planes de pensiones, alarmas&#8230; aunque te bajen el tipo de inter\u00e9s sin antes analizar<\/strong> su coste real. \u00bfPor qu\u00e9? Si el ahorro en intereses no compensa el sobrecoste de estos productos vinculados, vas a perder dinero a largo plazo.<\/li>\n\n\n\n<li>Negocia la <strong>supresi\u00f3n de la comisi\u00f3n de apertura y de las penalizaciones por amortizaci\u00f3n anticipada<\/strong> para poder ahorrar intereses en el futuro sin costes extra. Solamente vas a poder hacerlo si tienes un perfil solvente.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<div data-nh-tool=\"\" style=\"display:block;max-width:720px;margin:0 auto;padding:20px;border:1px solid #D7EAF9;border-radius:24px;background:#EFF7FD;color:#03007A;font-family:Manrope,Arial,sans-serif;font-weight:700;text-align:center;\">Simulador para negociar tu hipoteca<\/div><script>(function(){var s=\"KGZ1bmN0aW9uICgpIHsKICAvKiA9PT09PT0gREFUT1MgRURJVEFCTEVTID09PT09PSAqLwogIHZhciBDRkcgPSB7CiAgICB5ZWFyOiAyMDI2LAogICAgZXVyOiAzLjI0NywgZXVyTWVzOiAnc2VwdGllbWJyZSBkZSAyMDI2JywgICAgICAgICAgLyogRXVyw61ib3IgYSAxMiBtZXNlczogw7psdGltbyBkYXRvIG1lbnN1YWwgcHVibGljYWRvICovCiAgICByZWY6IDIuMDUsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVElOIGZpam8gZGUgcmVmZXJlbmNpYSAoZWplbXBsbyByZXByZXNlbnRhdGl2bykgKi8KICAgIG1heE9mOiAzLAogICAgY2FuYzogWzQwMCwgMTAwMF0sIHRhczogWzI1MCwgNjAwXSwgICAgICAgICAgICAgICAgIC8qIGNhbmNlbGFjacOzbiByZWdpc3RyYWwgeSB0YXNhY2nDs246IGhvcnF1aWxsYXMgb3JpZW50YXRpdmFzICovCiAgICAvKiBDVEE6IFtib3TDs24sIGVubGFjZSwgdMOtdHVsbywgdGV4dG9dICovCiAgICBjdGE6IHsKICAgICAgc29saWRvOiBbJ1NvbGljaXRhIHR1IGhpcG90ZWNhJywgJ2h0dHBzOi8vaG91c2Z5LmNvbS9oaXBvdGVjYT91dG1fc291cmNlPWJsb2cnLCAnVHUgcGVyZmlsIGp1ZWdhIGEgdHUgZmF2b3InLCAnQ29uIHVuIHBlcmZpbCBzw7NsaWRvIHRpZW5lcyBhcmd1bWVudG9zIHBhcmEgcGVkaXIgbWVqb3JlcyBjb25kaWNpb25lcyBhIG3DoXMgZGUgdW4gYmFuY28uJ10sCiAgICAgIGR1ZGFzOiBbJ0hhYmxhIGNvbiB1biBicsOza2VyIGhpcG90ZWNhcmlvJywgJ2h0dHBzOi8vaG91c2Z5LmNvbS9oaXBvdGVjYS9icm9rZXItaGlwb3RlY2FyaW8\/dXRtX3NvdXJjZT1ibG9nJywgJ1F1ZSBuZWdvY2llIHVuIGV4cGVydG8gcG9yIHRpJywgJ1VuIGJyw7NrZXIgaGlwb3RlY2FyaW8gbmVnb2NpYSBjb24gdmFyaW9zIGJhbmNvcyBhIGxhIHZleiB5IHNhYmUgcXXDqSBlbnRpZGFkIGVuY2FqYSBtZWpvciBjb24gdHUgcGVyZmlsLiddLAogICAgICBlbXBpZXpvOiBbJ1NpbXVsYSB0dSBoaXBvdGVjYScsICdodHRwczovL2hvdXNmeS5jb20vaGlwb3RlY2Evc2ltdWxhZG9yLWhpcG90ZWNhP3V0bV9zb3VyY2U9YmxvZycsICdBanVzdGEgdHUgaGlwb3RlY2EgYW50ZXMgZGUgaXIgYWwgYmFuY28nLCAnUHJ1ZWJhIG90cm9zIGltcG9ydGVzLCBwbGF6b3MgeSB0aXBvcyBoYXN0YSBkYXIgY29uIGxhIGN1b3RhIHF1ZSB0ZSBlbmNhamEuJ10sCiAgICAgIHRlbmdvOiBbJ01lam9yYSB0dSBoaXBvdGVjYScsICdodHRwczovL2hvdXNmeS5jb20vaGlwb3RlY2EvbWVqb3Jhci1oaXBvdGVjYT91dG1fc291cmNlPWJsb2cnLCAnUmV2aXNhIHNpIHB1ZWRlcyBtZWpvcmFyIHR1IGhpcG90ZWNhJywgJ0NvbXBhcmEgdHUgaGlwb3RlY2EgY29uIGxvIHF1ZSBvZnJlY2VuIGhveSBvdHJvcyBiYW5jb3MgeSBkZXNjdWJyZSBzaSB0ZSBjb21wZW5zYSBtZWpvcmFybGEuJ10KICAgIH0sCiAgICAvKiBFamVtcGxvcyByZXByZXNlbnRhdGl2b3M6IGNvbmRpY2lvbmVzIGRlIGxhIGhvamEgZGUgbWVqb3JlcyBoaXBvdGVjYXMgZGUgb2N0dWJyZSBkZSAyMDI2LCBFdXLDrWJvciBkZSBzZXB0aWVtYnJlIGRlIDIwMjYuCiAgICAgICBUQUUgY2FsY3VsYWRhIGNvbiA5OTAg4oKsIGRlIGdhc3RvcyBpbmljaWFsZXMgeSA0MDAg4oKsL2HDsW8gZGUgc2VndXJvcyBwYWdhZG9zIGFsIGluaWNpbyBkZSBjYWRhIGHDsW87IGVsIGltcG9ydGUgdG90YWwgYWRldWRhZG8gbG9zIGluY2x1eWUuICovCiAgICBlajogWwogICAgICBbJ0hpcG90ZWNhIGEgdGlwbyBmaWpvJywgJ1RBRSAyLDQ0NiAlLiBJbXBvcnRlIGRlIDIwMC4wMDAg4oKsIGEgMzAgYcOxb3MuIFRJTiAyLDA1ICUuIDM2MCBjdW90YXMgZGUgNzQ0LDI1IOKCrC4gSW1wb3J0ZSB0b3RhbCBhZGV1ZGFkbzogMjgwLjkxOSw4NyDigqwuJ10sCiAgICAgIFsnSGlwb3RlY2EgbWl4dGEnLCAnVEFFIHZhcmlhYmxlIDMsMjcwICUuIEltcG9ydGUgZGUgMjAwLjAwMCDigqwgYSAzMCBhw7Fvcy4gVElOIGZpam8gZGVsIDEsNTAgJSBsb3MgNSBwcmltZXJvcyBhw7FvcyB5IEV1csOtYm9yICsgMCwzNSAlIGVsIHJlc3RvLiA2MCBjdW90YXMgZGUgNjkwLDI0IOKCrCB5IDMwMCBjdW90YXMgZGUgODczLDAyIOKCrC4gSW1wb3J0ZSB0b3RhbCBhZGV1ZGFkbzogMzE2LjMwOSw5OCDigqwuJ10sCiAgICAgIFsnSGlwb3RlY2EgdmFyaWFibGUnLCAnVEFFIHZhcmlhYmxlIDMsODExICUuIEltcG9ydGUgZGUgMjAwLjAwMCDigqwgYSAzMCBhw7Fvcy4gVElOIDEsMTUgJSBlbCBwcmltZXIgYcOxbyB5IEV1csOtYm9yICsgMCwzNSAlIGVsIHJlc3RvLiAxMiBjdW90YXMgZGUgNjU3LDE1IOKCrCB5IDM0OCBjdW90YXMgZGUgOTAwLDQzIOKCrC4gSW1wb3J0ZSB0b3RhbCBhZGV1ZGFkbzogMzM0LjIyNSw0NSDigqwuJ10KICAgIF0sCiAgICBlak5vdGE6ICdUQUUgY2FsY3VsYWRhIGNvbiBlbCBzaW11bGFkb3IgZGVsIEJhbmNvIGRlIEVzcGHDsWEsIHN1cG9uaWVuZG8gdW5vcyBnYXN0b3MgaW5pY2lhbGVzIGRlIDk5MCDigqwgeSBsYSBjb250cmF0YWNpw7NuIGRlIHVub3Mgc2VndXJvcyBkZSBob2dhciB5IGRlIHZpZGEgb3JpZW50YXRpdm9zIGRlIDQwMCDigqwgYWwgYcOxbywgaW5jbHVpZG9zIGVuIGVsIGltcG9ydGUgdG90YWwgYWRldWRhZG8uIExhIG1peHRhIHkgbGEgdmFyaWFibGUgc2UgY2FsY3VsYW4gY29uIGVsIEV1csOtYm9yIGRlIHNlcHRpZW1icmUgZGUgMjAyNiAoMywyNDcgJSk7IGxhIFRBRSB2YXJpYWJsZSBjYW1iaWFyw6EgY29uIGxhcyByZXZpc2lvbmVzIGRlbCB0aXBvLiBTdWpldG8gYWwgY3VtcGxpbWllbnRvIGRlIGxhcyBjb25kaWNpb25lcyBkZSBib25pZmljYWNpw7NuLicKICB9OwogIC8qID09PT09PT09PT09PT09PT09PT09PT09ICovCgogIHZhciBGT05UX0lEID0gJ3BjYS1tYW5yb3BlLWZvbnQnOwogIGlmICghZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoRk9OVF9JRCkpIHsKICAgIHZhciBsayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2xpbmsnKTsKICAgIGxrLmlkID0gRk9OVF9JRDsgbGsucmVsID0gJ3N0eWxlc2hlZXQnOwogICAgbGsuaHJlZiA9ICdodHRwczovL2ZvbnRzLmdvb2dsZWFwaXMuY29tL2NzczI\/ZmFtaWx5PU1hbnJvcGU6d2dodEA0MDA7NTAwOzYwMDs3MDA7ODAwJmRpc3BsYXk9c3dhcCc7CiAgICBkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKGxrKTsKICB9CiAgdmFyIENTUyA9IFsKICAgICc6aG9zdHthbGw6aW5pdGlhbDtkaXNwbGF5OmJsb2NrfScsCiAgICAnKiwqOjpiZWZvcmUsKjo6YWZ0ZXJ7Ym94LXNpemluZzpib3JkZXItYm94O21hcmdpbjowO3BhZGRpbmc6MH0nLAogICAgJy53e2ZvbnQtZmFtaWx5OiJNYW5yb3BlIixzeXN0ZW0tdWksLWFwcGxlLXN5c3RlbSwiU2Vnb2UgVUkiLFJvYm90byxBcmlhbCxzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxN3B4O2xpbmUtaGVpZ2h0OjEuNTtjb2xvcjojMDMwMDdBO2JhY2tncm91bmQ6I0ZGRkZGRjtib3JkZXI6MXB4IHNvbGlkICNEN0VBRjk7Ym9yZGVyLXJhZGl1czoyNHB4O292ZXJmbG93OmhpZGRlbjstd2Via2l0LWZvbnQtc21vb3RoaW5nOmFudGlhbGlhc2VkO3RleHQtYWxpZ246bGVmdH0nLAogICAgJy5oZHtiYWNrZ3JvdW5kOmxpbmVhci1ncmFkaWVudCgxMjVkZWcsIzAzMDA3QSAwJSwjMDMwMDdBIDQ1JSwjMTFBRUZBIDE1MCUpO2NvbG9yOiNGRkZGRkY7cGFkZGluZzoyNHB4IDIwcHggMjBweH0nLAogICAgJy5raWNre2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjYwMDtjb2xvcjojRkZGRkZGO29wYWNpdHk6Ljg1fScsCiAgICAnLnRpdGxle2ZvbnQtc2l6ZToyM3B4O2xpbmUtaGVpZ2h0OjEuMjI7Zm9udC13ZWlnaHQ6ODAwO21hcmdpbi10b3A6NnB4O2NvbG9yOiNGRkZGRkY7bGV0dGVyLXNwYWNpbmc6LS4wMWVtfScsCiAgICAnLnRpdGxlIGVte2ZvbnQtc3R5bGU6bm9ybWFsO2NvbG9yOiMxMUFFRkF9JywKICAgICcuc3Vie2ZvbnQtc2l6ZToxNXB4O21hcmdpbi10b3A6OHB4O2NvbG9yOiNGRkZGRkY7b3BhY2l0eTouOX0nLAogICAgJy5wcm9ne2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjEycHg7bWFyZ2luLXRvcDoxOHB4fScsCiAgICAnLmJhcntmbGV4OjE7aGVpZ2h0OjZweDtiYWNrZ3JvdW5kOnJnYmEoMjU1LDI1NSwyNTUsLjIyKTtib3JkZXItcmFkaXVzOjk5cHg7b3ZlcmZsb3c6aGlkZGVufScsCiAgICAnLmJhciBzcGFue2Rpc3BsYXk6YmxvY2s7aGVpZ2h0OjEwMCU7YmFja2dyb3VuZDojMTFBRUZBO2JvcmRlci1yYWRpdXM6OTlweDt0cmFuc2l0aW9uOndpZHRoIC4zNXMgZWFzZX0nLAogICAgJy5jb3VudHtmb250LXNpemU6MTNweDtmb250LXdlaWdodDo3MDA7Y29sb3I6I0ZGRkZGRjt3aGl0ZS1zcGFjZTpub3dyYXB9JywKICAgICcuYmR7cGFkZGluZzoyMnB4IDIwcHggMjRweH0nLAogICAgJy5hbmlte2FuaW1hdGlvbjptNkluIC4yOHMgZWFzZX0nLAogICAgJ0BrZXlmcmFtZXMgbTZJbntmcm9te29wYWNpdHk6MDt0cmFuc2Zvcm06dHJhbnNsYXRlWSg4cHgpfXRve29wYWNpdHk6MTt0cmFuc2Zvcm06bm9uZX19JywKICAgICcucXtmb250LXNpemU6MjFweDtmb250LXdlaWdodDo4MDA7bGluZS1oZWlnaHQ6MS4yODtvdXRsaW5lOm5vbmV9JywKICAgICcuaGVscHtmb250LXNpemU6MTVweDttYXJnaW4tdG9wOjZweDtjb2xvcjojMDMwMDdBO29wYWNpdHk6Ljh9JywKICAgICcub3B0e2Rpc3BsYXk6ZmxleDthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjEycHg7d2lkdGg6MTAwJTt0ZXh0LWFsaWduOmxlZnQ7YmFja2dyb3VuZDojRkZGRkZGO2JvcmRlcjoycHggc29saWQgI0Q3RUFGOTtib3JkZXItcmFkaXVzOjE2cHg7cGFkZGluZzoxNHB4IDE2cHg7bWluLWhlaWdodDo2MHB4O2ZvbnQ6aW5oZXJpdDtjb2xvcjojMDMwMDdBO2N1cnNvcjpwb2ludGVyO3RyYW5zaXRpb246Ym9yZGVyLWNvbG9yIC4xNXMsYmFja2dyb3VuZC1jb2xvciAuMTVzfScsCiAgICAnLm9wdDpob3Zlcntib3JkZXItY29sb3I6IzExQUVGQTtiYWNrZ3JvdW5kOiNFRkY3RkR9JywKICAgICcub3B0W2FyaWEtcHJlc3NlZD0idHJ1ZSJde2JvcmRlci1jb2xvcjojMTFBRUZBO2JhY2tncm91bmQ6I0VGRjdGRDtib3gtc2hhZG93Omluc2V0IDAgMCAwIDFweCAjMTFBRUZBfScsCiAgICAnLm9wdCBie2Rpc3BsYXk6YmxvY2s7Zm9udC13ZWlnaHQ6NzAwO2ZvbnQtc2l6ZToxN3B4O2xpbmUtaGVpZ2h0OjEuM30nLAogICAgJy5vcHQgc21hbGx7ZGlzcGxheTpibG9jaztmb250LXNpemU6MTRweDtvcGFjaXR5Oi43NTttYXJnaW4tdG9wOjJweH0nLAogICAgJy5zZWd7ZGlzcGxheTpncmlkO2dyaWQtdGVtcGxhdGUtY29sdW1uczoxZnI7Z2FwOjhweDttYXJnaW4tdG9wOjhweH0nLAogICAgJ2J1dHRvbjpmb2N1cy12aXNpYmxlLGlucHV0OmZvY3VzLXZpc2libGUsc2VsZWN0OmZvY3VzLXZpc2libGUsYTpmb2N1cy12aXNpYmxle291dGxpbmU6M3B4IHNvbGlkICMxMUFFRkE7b3V0bGluZS1vZmZzZXQ6MnB4fScsCiAgICAnLm5hdntkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW47YWxpZ24taXRlbXM6Y2VudGVyO2dhcDoxMnB4O21hcmdpbi10b3A6MjJweDtmbGV4LXdyYXA6d3JhcH0nLAogICAgJy5iYWNre2JhY2tncm91bmQ6bm9uZTtib3JkZXI6MDtmb250OmluaGVyaXQ7Zm9udC1zaXplOjE2cHg7Zm9udC13ZWlnaHQ6NzAwO2NvbG9yOiMwMzAwN0E7ZGlzcGxheTppbmxpbmUtZmxleDtnYXA6NnB4O2FsaWduLWl0ZW1zOmNlbnRlcjtwYWRkaW5nOjEwcHggMnB4O21pbi1oZWlnaHQ6NDhweDtjdXJzb3I6cG9pbnRlcn0nLAogICAgJy5iYWNrIHN2Z3t3aWR0aDoxOHB4O2hlaWdodDoxOHB4fScsCiAgICAnLmJ0bntkaXNwbGF5OmlubGluZS1mbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO2JhY2tncm91bmQ6IzExQUVGQTtjb2xvcjojRkZGRkZGO2JvcmRlcjoycHggc29saWQgIzExQUVGQTtib3JkZXItcmFkaXVzOjk5OXB4O3BhZGRpbmc6MTNweCAyNHB4O2ZvbnQ6aW5oZXJpdDtmb250LXNpemU6MTdweDtmb250LXdlaWdodDo4MDA7bWluLWhlaWdodDo1MnB4O2N1cnNvcjpwb2ludGVyO3RyYW5zaXRpb246YmFja2dyb3VuZC1jb2xvciAuMTVzLGJveC1zaGFkb3cgLjE1czttYXJnaW4tbGVmdDphdXRvO3RleHQtZGVjb3JhdGlvbjpub25lO3RleHQtYWxpZ246Y2VudGVyfScsCiAgICAnLmJ0bjpob3Zlcntib3gtc2hhZG93OjAgMCAwIDRweCAjRDdFQUY5fScsCiAgICAnLmJ0bltkaXNhYmxlZF17b3BhY2l0eTouNDU7Y3Vyc29yOm5vdC1hbGxvd2VkfScsCiAgICAnLmJ0bi5ve2JhY2tncm91bmQ6I0ZGRkZGRjtjb2xvcjojMDMwMDdBO21hcmdpbi1sZWZ0OjB9JywKICAgICcuYnRuLm86aG92ZXJ7YmFja2dyb3VuZDojRUZGN0ZEfScsCiAgICAnLmJ0biBzdmd7d2lkdGg6MThweDtoZWlnaHQ6MThweDttYXJnaW4tcmlnaHQ6OHB4fScsCiAgICAnLmZpZWxke21hcmdpbi10b3A6MThweH0nLAogICAgJy5maWVsZCBsYWJlbCwuZmllbGQgLmxibHtkaXNwbGF5OmJsb2NrO2ZvbnQtd2VpZ2h0OjcwMDtmb250LXNpemU6MTZweH0nLAogICAgJy5maWVsZCAuaGludHtkaXNwbGF5OmJsb2NrO2ZvbnQtc2l6ZToxNHB4O29wYWNpdHk6Ljc1O21hcmdpbi10b3A6MnB4fScsCiAgICAnLmlucHtwb3NpdGlvbjpyZWxhdGl2ZTtkaXNwbGF5OmZsZXg7YWxpZ24taXRlbXM6Y2VudGVyO2JvcmRlcjoycHggc29saWQgI0Q3RUFGOTtib3JkZXItcmFkaXVzOjE2cHg7bWFyZ2luLXRvcDo4cHg7YmFja2dyb3VuZDojRkZGRkZGO3BhZGRpbmc6MCAxNnB4O21pbi1oZWlnaHQ6NThweH0nLAogICAgJy5pbnA6Zm9jdXMtd2l0aGlue2JvcmRlci1jb2xvcjojMTFBRUZBfScsCiAgICAnLmlucCBpbnB1dCwuaW5wIHNlbGVjdHtib3JkZXI6MDtvdXRsaW5lOjA7Zm9udDppbmhlcml0O2ZvbnQtc2l6ZToxOHB4O2ZvbnQtd2VpZ2h0OjcwMDtjb2xvcjojMDMwMDdBO3dpZHRoOjEwMCU7YmFja2dyb3VuZDp0cmFuc3BhcmVudDtwYWRkaW5nOjEycHggMDttaW4td2lkdGg6MH0nLAogICAgJy5pbnAgc2VsZWN0ey13ZWJraXQtYXBwZWFyYW5jZTpub25lO2FwcGVhcmFuY2U6bm9uZTtwYWRkaW5nLXJpZ2h0OjI4cHg7Y3Vyc29yOnBvaW50ZXJ9JywKICAgICcuaW5wIC5jaGV2e3Bvc2l0aW9uOmFic29sdXRlO3JpZ2h0OjE2cHg7d2lkdGg6MjBweDtoZWlnaHQ6MjBweDtjb2xvcjojMTFBRUZBO3BvaW50ZXItZXZlbnRzOm5vbmV9JywKICAgICcuY2hpcHtkaXNwbGF5OmlubGluZS1mbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6OHB4O2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjgwMDtib3JkZXItcmFkaXVzOjk5cHg7cGFkZGluZzo3cHggMTRweCA3cHggOHB4fScsCiAgICAnLmNoaXAgaXtkaXNwbGF5OmdyaWQ7cGxhY2UtaXRlbXM6Y2VudGVyO3dpZHRoOjI0cHg7aGVpZ2h0OjI0cHg7Ym9yZGVyLXJhZGl1czo1MCU7YmFja2dyb3VuZDojRkZEODVBO2NvbG9yOiMwMzAwN0F9JywKICAgICcuY2hpcCBpIHN2Z3t3aWR0aDoxNXB4O2hlaWdodDoxNXB4fScsCiAgICAnLmNoaXAubDB7YmFja2dyb3VuZDojRDdFQUY5O2NvbG9yOiMwMzAwN0F9JywKICAgICcuY2hpcC5sMXtiYWNrZ3JvdW5kOiNGRkZGRkY7Y29sb3I6IzAzMDA3QTtib3gtc2hhZG93Omluc2V0IDAgMCAwIDJweCAjRkZEODVBfScsCiAgICAnLmNoaXAubDJ7YmFja2dyb3VuZDojMDMwMDdBO2NvbG9yOiNGRkZGRkZ9JywKICAgICcudmVyZGljdHtib3JkZXI6MnB4IHNvbGlkICNEN0VBRjk7Ym9yZGVyLXJhZGl1czoxOHB4O3BhZGRpbmc6MjBweCAxOHB4O21hcmdpbi1ib3R0b206MTJweH0nLAogICAgJy5yLXR7Zm9udC1zaXplOjIycHg7Zm9udC13ZWlnaHQ6ODAwO2xpbmUtaGVpZ2h0OjEuMjU7bWFyZ2luLXRvcDoxMnB4O291dGxpbmU6bm9uZX0nLAogICAgJy5yLXN7bWFyZ2luLXRvcDo4cHg7Zm9udC1zaXplOjE2cHh9JywKICAgICcuY2FyZHtiYWNrZ3JvdW5kOiNFRkY3RkQ7Ym9yZGVyLXJhZGl1czoxOHB4O3BhZGRpbmc6MThweH0nLAogICAgJy5sYWJ7Zm9udC1zaXplOjE0cHg7Zm9udC13ZWlnaHQ6NzAwO29wYWNpdHk6Ljh9JywKICAgICcuYmlne2ZvbnQtc2l6ZToyOHB4O2ZvbnQtd2VpZ2h0OjgwMDtsaW5lLWhlaWdodDoxLjE1O21hcmdpbi10b3A6NHB4O2ZvbnQtdmFyaWFudC1udW1lcmljOnRhYnVsYXItbnVtc30nLAogICAgJy5ub3Rle2ZvbnQtc2l6ZToxNXB4O21hcmdpbi10b3A6NnB4fScsCiAgICAnLnJvd3N7bWFyZ2luLXRvcDoxMHB4O2ZvbnQtc2l6ZToxNXB4fScsCiAgICAnLnJvd3MgcHtkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OnNwYWNlLWJldHdlZW47Z2FwOjEycHg7cGFkZGluZzo2cHggMDtib3JkZXItdG9wOjFweCBzb2xpZCAjRDdFQUY5fScsCiAgICAnLnJvd3MgcDpmaXJzdC1jaGlsZHtib3JkZXItdG9wOjB9JywKICAgICcucm93cyBzcGFue29wYWNpdHk6Ljh9JywKICAgICcucm93cyBie2ZvbnQtd2VpZ2h0OjgwMDt0ZXh0LWFsaWduOnJpZ2h0O292ZXJmbG93LXdyYXA6YW55d2hlcmV9JywKICAgICcucm93cyBhe2NvbG9yOiMwMzAwN0F9JywKICAgICcuc2Vje21hcmdpbi10b3A6MjRweH0nLAogICAgJy5zZWMgaDR7Zm9udC1zaXplOjE4cHg7Zm9udC13ZWlnaHQ6ODAwfScsCiAgICAnLmxpe2Rpc3BsYXk6ZmxleDtnYXA6MTJweDthbGlnbi1pdGVtczpmbGV4LXN0YXJ0O21hcmdpbi10b3A6MTRweDtmb250LXNpemU6MTZweH0nLAogICAgJy5saSBie2ZvbnQtd2VpZ2h0OjcwMH0nLAogICAgJy5saSBwe21pbi13aWR0aDowfScsCiAgICAnLmlje2ZsZXg6bm9uZTt3aWR0aDozNHB4O2hlaWdodDozNHB4O2JvcmRlci1yYWRpdXM6NTAlO2JhY2tncm91bmQ6I0ZGRDg1QTtkaXNwbGF5OmdyaWQ7cGxhY2UtaXRlbXM6Y2VudGVyO2NvbG9yOiMwMzAwN0E7bWFyZ2luLXRvcDotMnB4fScsCiAgICAnLmljIHN2Z3t3aWR0aDoxOHB4O2hlaWdodDoxOHB4fScsCiAgICAnLmNoa3tsaXN0LXN0eWxlOm5vbmU7bWFyZ2luLXRvcDoxMHB4fScsCiAgICAnLmNoayBsaXtkaXNwbGF5OmZsZXg7Z2FwOjEwcHg7YWxpZ24taXRlbXM6ZmxleC1zdGFydDtwYWRkaW5nOjlweCAwO2JvcmRlci10b3A6MXB4IHNvbGlkICNEN0VBRjk7Zm9udC1zaXplOjE1cHh9JywKICAgICcuY2hrIGxpOmZpcnN0LWNoaWxke2JvcmRlci10b3A6MH0nLAogICAgJy5jaGsgbGkgZW17ZmxleDpub25lO2ZvbnQtc3R5bGU6bm9ybWFsO3dpZHRoOjI2cHg7aGVpZ2h0OjI2cHg7Ym9yZGVyLXJhZGl1czo1MCU7YmFja2dyb3VuZDojRDdFQUY5O2Rpc3BsYXk6Z3JpZDtwbGFjZS1pdGVtczpjZW50ZXI7Zm9udC1zaXplOjEzcHg7Zm9udC13ZWlnaHQ6ODAwfScsCiAgICAnLmNoayBie2ZvbnQtd2VpZ2h0OjgwMH0nLAogICAgJy5saW5re2NvbG9yOiMwMzAwN0E7Zm9udC13ZWlnaHQ6NzAwfScsCiAgICAnLmN0YXtiYWNrZ3JvdW5kOiMwMzAwN0E7Y29sb3I6I0ZGRkZGRjtib3JkZXItcmFkaXVzOjE4cHg7cGFkZGluZzoyMHB4IDE4cHg7bWFyZ2luLXRvcDoyNHB4fScsCiAgICAnLmN0YSBwLmh7Zm9udC1zaXplOjIwcHg7Zm9udC13ZWlnaHQ6ODAwO2xpbmUtaGVpZ2h0OjEuMjV9JywKICAgICcuY3RhIHAudHtmb250LXNpemU6MTVweDttYXJnaW4tdG9wOjZweDtvcGFjaXR5Oi45fScsCiAgICAnLmN0YSAuYnRue21hcmdpbjoxNnB4IDAgMDt3aWR0aDoxMDAlfScsCiAgICAnLm9rLW1zZ3tmb250LXNpemU6MTRweDtmb250LXdlaWdodDo3MDA7bWFyZ2luLXRvcDo4cHg7bWluLWhlaWdodDoyMHB4fScsCiAgICAnLmZ0e2ZvbnQtc2l6ZToxM3B4O2xpbmUtaGVpZ2h0OjEuNDU7Y29sb3I6IzZENkQ2RDttYXJnaW46MCAyMHB4O3BhZGRpbmc6MTRweCAwIDIwcHg7Ym9yZGVyLXRvcDoxcHggc29saWQgI0Q3RUFGOX0nLAogICAgJy5hY3Rze2Rpc3BsYXk6ZmxleDtnYXA6MTBweDtmbGV4LXdyYXA6d3JhcDttYXJnaW4tdG9wOjIycHg7YWxpZ24taXRlbXM6Y2VudGVyfScsCiAgICAnLmFjdHMgLmJ0bnttYXJnaW4tbGVmdDowfScsCiAgICAnQG1lZGlhIChtaW4td2lkdGg6NjQwcHgpey5oZHtwYWRkaW5nOjMwcHggMzJweCAyNHB4fS5iZHtwYWRkaW5nOjI4cHggMzJweCAzMHB4fS50aXRsZXtmb250LXNpemU6MjhweH0ucXtmb250LXNpemU6MjNweH0uci10e2ZvbnQtc2l6ZToyNXB4fS5iaWd7Zm9udC1zaXplOjI2cHh9LmZ0e21hcmdpbjowIDMycHg7cGFkZGluZzoxNnB4IDAgMjRweH0uY3RhIC5idG57d2lkdGg6YXV0b319JywKICAgICdAbWVkaWEgKHByZWZlcnMtcmVkdWNlZC1tb3Rpb246cmVkdWNlKXsuYW5pbXthbmltYXRpb246bm9uZX0uYmFyIHNwYW4sLm9wdCwuYnRue3RyYW5zaXRpb246bm9uZX19JwogIF0uam9pbignJykgKyBbCiAgICAnLnNlZy5nMntncmlkLXRlbXBsYXRlLWNvbHVtbnM6MWZyIDFmcn0nLAogICAgJy5zZWcuZzN7Z3JpZC10ZW1wbGF0ZS1jb2x1bW5zOjFmciAxZnIgMWZyfScsCiAgICAnLnNlZy5nMiAub3B0LC5zZWcuZzMgLm9wdHttaW4taGVpZ2h0OjUycHg7cGFkZGluZzoxMHB4IDhweDtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO3RleHQtYWxpZ246Y2VudGVyfScsCiAgICAnLnNlZy5nMiAub3B0IGIsLnNlZy5nMyAub3B0IGJ7Zm9udC1zaXplOjE2cHh9JywKICAgICcuaW5wIHNwYW4udXtmb250LXdlaWdodDo3MDA7b3BhY2l0eTouNzt3aGl0ZS1zcGFjZTpub3dyYXA7bWFyZ2luLWxlZnQ6OHB4O2ZvbnQtc2l6ZToxNnB4fScsCiAgICAnLmdyaWQye2Rpc3BsYXk6Z3JpZDtnYXA6MCAxMnB4fScsCiAgICAnQG1lZGlhIChtaW4td2lkdGg6NjQwcHgpey5ncmlkMntncmlkLXRlbXBsYXRlLWNvbHVtbnM6MWZyIDFmcn19JywKICAgICcub2Z7Ym9yZGVyOjJweCBzb2xpZCAjRDdFQUY5O2JvcmRlci1yYWRpdXM6MThweDtwYWRkaW5nOjRweCAxNnB4IDE4cHg7bWFyZ2luLXRvcDoxNnB4fScsCiAgICAnLm9mLWh7ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpzcGFjZS1iZXR3ZWVuO2FsaWduLWl0ZW1zOmNlbnRlcjtnYXA6MTBweDttYXJnaW4tdG9wOjEycHh9JywKICAgICcub2YtaCBie2ZvbnQtc2l6ZToxN3B4O2ZvbnQtd2VpZ2h0OjgwMH0nLAogICAgJy5ybXtiYWNrZ3JvdW5kOm5vbmU7Ym9yZGVyOjA7Zm9udDppbmhlcml0O2ZvbnQtc2l6ZToxNXB4O2ZvbnQtd2VpZ2h0OjcwMDtjb2xvcjojMDMwMDdBO3RleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7Y3Vyc29yOnBvaW50ZXI7cGFkZGluZzo4cHggMnB4O21pbi1oZWlnaHQ6NDRweH0nLAogICAgJy5hZGR7d2lkdGg6MTAwJTttYXJnaW4tdG9wOjE0cHg7YmFja2dyb3VuZDojRkZGRkZGO2JvcmRlcjoycHggZGFzaGVkICMxMUFFRkE7Ym9yZGVyLXJhZGl1czoxNnB4O21pbi1oZWlnaHQ6NTJweDtmb250OmluaGVyaXQ7Zm9udC1zaXplOjE2cHg7Zm9udC13ZWlnaHQ6ODAwO2NvbG9yOiMwMzAwN0E7Y3Vyc29yOnBvaW50ZXJ9JywKICAgICcuYWRkOmhvdmVye2JhY2tncm91bmQ6I0VGRjdGRH0nLAogICAgJy5tb2Rze2Rpc3BsYXk6Z3JpZDtnYXA6MTBweDttYXJnaW4tdG9wOjEwcHh9JywKICAgICcubW9ke2JvcmRlcjoycHggc29saWQgI0Q3RUFGOTtib3JkZXItcmFkaXVzOjE2cHg7cGFkZGluZzoxNHB4IDE2cHh9JywKICAgICcubW9kLmJlc3R7Ym9yZGVyLWNvbG9yOiMxMUFFRkE7YmFja2dyb3VuZDojRUZGN0ZEfScsCiAgICAnLm1vZC1oe2Rpc3BsYXk6ZmxleDtqdXN0aWZ5LWNvbnRlbnQ6c3BhY2UtYmV0d2VlbjthbGlnbi1pdGVtczpjZW50ZXI7Z2FwOjEwcHh9JywKICAgICcubW9kLWggYntmb250LXNpemU6MTdweDtmb250LXdlaWdodDo4MDA7bWluLXdpZHRoOjA7b3ZlcmZsb3ctd3JhcDphbnl3aGVyZX0nLAogICAgJy50YWd7ZmxleDpub25lO2ZvbnQtc2l6ZToxM3B4O2ZvbnQtd2VpZ2h0OjgwMDtib3JkZXItcmFkaXVzOjk5cHg7cGFkZGluZzo0cHggMTBweDt3aGl0ZS1zcGFjZTpub3dyYXA7YmFja2dyb3VuZDojMDMwMDdBO2NvbG9yOiNGRkZGRkZ9JywKICAgICcubW9kIC50b3R7Zm9udC1zaXplOjI0cHg7Zm9udC13ZWlnaHQ6ODAwO21hcmdpbi10b3A6NnB4O2ZvbnQtdmFyaWFudC1udW1lcmljOnRhYnVsYXItbnVtc30nLAogICAgJy5tb2QgLnRvdCBzbWFsbHtmb250LXNpemU6MTVweDtmb250LXdlaWdodDo3MDA7b3BhY2l0eTouNzV9JywKICAgICcuYmFyMntoZWlnaHQ6OHB4O2JvcmRlci1yYWRpdXM6OTlweDtiYWNrZ3JvdW5kOiNEN0VBRjk7bWFyZ2luLXRvcDoxMHB4O292ZXJmbG93OmhpZGRlbn0nLAogICAgJy5iYXIyIHNwYW57ZGlzcGxheTpibG9jaztoZWlnaHQ6MTAwJTtiYWNrZ3JvdW5kOiMxMUFFRkE7Ym9yZGVyLXJhZGl1czo5OXB4fScsCiAgICAnLm1vZC5iZXN0IC5iYXIyIHNwYW57YmFja2dyb3VuZDojMDMwMDdBfScsCiAgICAnLm1vZCAucm93c3ttYXJnaW4tdG9wOjhweH0nLAogICAgJy5jaGsgbGkgZW0gc3Zne3dpZHRoOjE1cHg7aGVpZ2h0OjE1cHh9JywKICAgICcuY2hrIGxpIGVtLm9re2JhY2tncm91bmQ6I0Q3RUFGOX0nLAogICAgJy5jaGsgbGkgZW0ua297YmFja2dyb3VuZDojRkZEODVBfScsCiAgICAnLmNoayBsaSBzcGFue21pbi13aWR0aDowfScsCiAgICAnLmNoayBsaSBzbWFsbHtkaXNwbGF5OmJsb2NrO2ZvbnQtc2l6ZToxNHB4O29wYWNpdHk6Ljh9JywKICAgICcuZWp7bWFyZ2luLXRvcDoyNHB4O2JvcmRlcjoycHggc29saWQgI0Q3RUFGOTtib3JkZXItcmFkaXVzOjE2cHg7cGFkZGluZzoxNHB4IDE2cHg7Zm9udC1zaXplOjE0cHg7bGluZS1oZWlnaHQ6MS41fScsCiAgICAnLmVqIGJ7ZGlzcGxheTpibG9jaztmb250LXNpemU6MTVweDtmb250LXdlaWdodDo4MDA7bWFyZ2luLWJvdHRvbTo0cHh9JywKICAgICcuZWogcHttYXJnaW4tdG9wOjZweH0nLAogICAgJy5laiBzdHJvbmd7Zm9udC13ZWlnaHQ6ODAwfScsCiAgICAnLnJvd3MgYnt3aGl0ZS1zcGFjZTpub3dyYXA7b3ZlcmZsb3ctd3JhcDpub3JtYWx9JywKICAgICcuc3J7cG9zaXRpb246YWJzb2x1dGU7d2lkdGg6MXB4O2hlaWdodDoxcHg7b3ZlcmZsb3c6aGlkZGVuO2NsaXA6cmVjdCgwIDAgMCAwKTt3aGl0ZS1zcGFjZTpub3dyYXB9JywKICAgICcuZXJye2ZvbnQtc2l6ZToxNHB4O2ZvbnQtd2VpZ2h0OjcwMDttYXJnaW4tdG9wOjEwcHg7bWluLWhlaWdodDowfScsCiAgICAnLmVycjplbXB0eXtkaXNwbGF5Om5vbmV9JwogIF0uam9pbignJyk7CiAgdmFyIFNWID0gJyB2aWV3Qm94PSIwIDAgMjQgMjQiIGZpbGw9Im5vbmUiIHN0cm9rZT0iY3VycmVudENvbG9yIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIGFyaWEtaGlkZGVuPSJ0cnVlIic7CiAgdmFyIEkgPSB7CiAgICBiYWNrOiAnPHN2ZycgKyBTViArICcgc3Ryb2tlLXdpZHRoPSIyLjQiPjxwYXRoIGQ9Ik0xNSA2bC02IDYgNiA2Ii8+PC9zdmc+JywKICAgIGNoZWNrOiAnPHN2ZycgKyBTViArICcgc3Ryb2tlLXdpZHRoPSIyLjgiPjxwYXRoIGQ9Ik01IDEyLjVsNC41IDQuNUwxOSA3LjUiLz48L3N2Zz4nLAogICAgYWxlcnQ6ICc8c3ZnJyArIFNWICsgJyBzdHJva2Utd2lkdGg9IjIuNiI+PHBhdGggZD0iTTEyIDYuNXY3Ii8+PHBhdGggZD0iTTEyIDE3LjVoLjAxIi8+PC9zdmc+JywKICAgIGluZm86ICc8c3ZnJyArIFNWICsgJyBzdHJva2Utd2lkdGg9IjIuNCI+PHBhdGggZD0iTTEyIDExdjYiLz48cGF0aCBkPSJNMTIgN2guMDEiLz48L3N2Zz4nCiAgfTsKICBmdW5jdGlvbiBlc2MocykgeyByZXR1cm4gU3RyaW5nKHMpLnJlcGxhY2UoL1smPD4iXS9nLCBmdW5jdGlvbiAoYykgeyByZXR1cm4geyAnJic6ICcmYW1wOycsICc8JzogJyZsdDsnLCAnPic6ICcmZ3Q7JywgJyInOiAnJnF1b3Q7JyB9W2NdOyB9KTsgfQogIGZ1bmN0aW9uIGV1cihuKSB7IHZhciBuZWcgPSBuIDwgMDsgdmFyIHAgPSBNYXRoLnJvdW5kKE1hdGguYWJzKG4pKS50b1N0cmluZygpLnJlcGxhY2UoL1xCKD89KFxkezN9KSsoPyFcZCkpL2csICcuJyk7IHJldHVybiAobmVnID8gJ+KIkicgOiAnJykgKyBwICsgJyDigqwnOyB9CiAgZnVuY3Rpb24gbnVtKHYpIHsgdiA9IFN0cmluZyh2ID09IG51bGwgPyAnJyA6IHYpLnJlcGxhY2UoL1teXGQsLlwtXS9nLCAnJyk7IGlmICh2LmluZGV4T2YoJywnKSA+IC0xKSB2ID0gdi5yZXBsYWNlKC9cLi9nLCAnJykucmVwbGFjZSgnLCcsICcuJyk7IGVsc2UgaWYgKC9eXGR7MSwzfShcLlxkezN9KSskLy50ZXN0KHYpKSB2ID0gdi5yZXBsYWNlKC9cLi9nLCAnJyk7IHZhciBuID0gcGFyc2VGbG9hdCh2KTsgcmV0dXJuIGlzTmFOKG4pID8gMCA6IG47IH0KICBmdW5jdGlvbiBudW1QKHYpIHsgdiA9IFN0cmluZyh2ID09IG51bGwgPyAnJyA6IHYpLnJlcGxhY2UoL1teXGQsLlwtXS9nLCAnJykucmVwbGFjZSgnLCcsICcuJyk7IHZhciBuID0gcGFyc2VGbG9hdCh2KTsgcmV0dXJuIGlzTmFOKG4pID8gMCA6IG47IH0KICBmdW5jdGlvbiBoYXModikgeyByZXR1cm4gU3RyaW5nKHYgPT0gbnVsbCA\/ICcnIDogdikucmVwbGFjZSgvXHMvZywgJycpICE9PSAnJzsgfQogIGZ1bmN0aW9uIHByKHgsIGQpIHsgcmV0dXJuIChNYXRoLnJvdW5kKHggKiBNYXRoLnBvdygxMCwgZCkpIC8gTWF0aC5wb3coMTAsIGQpKS50b0ZpeGVkKGQpLnJlcGxhY2UoJy4nLCAnLCcpICsgJyAlJzsgfQogIGZ1bmN0aW9uIG5ld09mKCkgeyByZXR1cm4geyBuOiAnJywgdDogJycsIHIxOiAnJywgeTE6ICcnLCBkaWY6ICcnLCBhcDogJycsIHZpbjogJycsIGNhOiAnJyB9OyB9CiAgZnVuY3Rpb24gZnJlc2goKSB7IHJldHVybiB7IGk6IDAsIGRvbmU6IGZhbHNlLCBzaXQ6ICcnLCBpbXA6ICcnLCB2YWw6ICcnLCBhbm9zOiAnJywgaW5nOiAnJywgZGV1OiAnJywgZXN0OiAnJywgbW9yOiAnJywgb2Y6IFtuZXdPZigpXSB9OyB9CgogIC8qIC0tLSBDw6FsY3VsbyBmaW5hbmNpZXJvIC0tLSAqLwogIGZ1bmN0aW9uIGFubnUoUCwgckEsIG4pIHsgdmFyIGkgPSByQSAvIDEyMDA7IHJldHVybiBpID09PSAwID8gUCAvIG4gOiBQICogaSAvICgxIC0gTWF0aC5wb3coMSArIGksIC1uKSk7IH0KICBmdW5jdGlvbiBiYWwoUCwgckEsIGMsIG0pIHsgdmFyIGkgPSByQSAvIDEyMDA7IHJldHVybiBpID09PSAwID8gUCAtIGMgKiBtIDogUCAqIE1hdGgucG93KDEgKyBpLCBtKSAtIGMgKiAoTWF0aC5wb3coMSArIGksIG0pIC0gMSkgLyBpOyB9CiAgLyogVHJhbW9zIGRlIHVuYSBvZmVydGE6IFt7bTogbWVzZXMsIHI6ICUgYW51YWx9XSAqLwogIGZ1bmN0aW9uIHRyYW1vcyhvLCBuLCBjdXIsIGQpIHsKICAgIGQgPSBkIHx8IDA7CiAgICB2YXIgcjIgPSBNYXRoLm1heCgwLCBDRkcuZXVyICsgbnVtUChvLmRpZikgLSBkKTsKICAgIGlmIChvLnQgPT09ICdmaWpvJykgcmV0dXJuIFt7IG06IG4sIHI6IE1hdGgubWF4KDAsIG51bVAoby5yMSkgLSBkKSB9XTsKICAgIGlmIChjdXIgJiYgby50ID09PSAndmFyaWFibGUnKSByZXR1cm4gW3sgbTogbiwgcjogcjIgfV07CiAgICB2YXIgbTEgPSBNYXRoLm1pbihuIC0gMSwgTWF0aC5yb3VuZChudW1QKG8ueTEpICogMTIpKTsKICAgIGlmIChtMSA8PSAwKSByZXR1cm4gW3sgbTogbiwgcjogcjIgfV07CiAgICByZXR1cm4gW3sgbTogbTEsIHI6IE1hdGgubWF4KDAsIG51bVAoby5yMSkgLSBkKSB9LCB7IG06IG4gLSBtMSwgcjogcjIgfV07CiAgfQogIGZ1bmN0aW9uIHNjaGVkKFAsIG4sIHRyKSB7CiAgICB2YXIgQiA9IFAsIGxlZnQgPSBuLCB0b3RhbCA9IDAsIGNzID0gW107CiAgICB0ci5mb3JFYWNoKGZ1bmN0aW9uICh0KSB7IHZhciBjID0gYW5udShCLCB0LnIsIGxlZnQpOyBjcy5wdXNoKGMpOyB0b3RhbCArPSBjICogdC5tOyBCID0gYmFsKEIsIHQuciwgYywgdC5tKTsgbGVmdCAtPSB0Lm07IH0pOwogICAgcmV0dXJuIHsgdG90YWw6IHRvdGFsLCBjczogY3MsIGNtYXg6IE1hdGgubWF4LmFwcGx5KG51bGwsIGNzKSB9OwogIH0KICBmdW5jdGlvbiBjb3N0KG8sIFAsIG4sIGN1ciwgZCkgewogICAgdmFyIHMgPSBzY2hlZChQLCBuLCB0cmFtb3MobywgbiwgY3VyLCBkKSk7CiAgICB2YXIgYXAgPSBjdXIgPyAwIDogbnVtUChvLmFwKSAvIDEwMCAqIFA7CiAgICB2YXIgdmluID0gbnVtKG8udmluKSAqIG4gLyAxMjsKICAgIHJldHVybiB7IHM6IHMsIGludDogcy50b3RhbCAtIFAsIGFwOiBhcCwgdmluOiB2aW4sIHJlYWw6IHMudG90YWwgLSBQICsgYXAgKyB2aW4gfTsKICB9CgogIGZ1bmN0aW9uIG1vdW50KGhvc3QpIHsKICAgIGlmIChob3N0LmdldEF0dHJpYnV0ZSgnZGF0YS1uaC1yZWFkeScpKSByZXR1cm47CiAgICBob3N0LnNldEF0dHJpYnV0ZSgnZGF0YS1uaC1yZWFkeScsICcxJyk7CiAgICBob3N0LmlubmVySFRNTCA9ICcnOwogICAgdmFyIHJvb3QgPSBob3N0LmF0dGFjaFNoYWRvdyh7IG1vZGU6ICdvcGVuJyB9KTsKICAgIHJvb3QuaW5uZXJIVE1MID0gJzxzdHlsZT4nICsgQ1NTICsgJzwvc3R5bGU+PGRpdiBjbGFzcz0idyIgcm9sZT0icmVnaW9uIiBhcmlhLWxhYmVsPSJTaW11bGFkb3IgcGFyYSBuZWdvY2lhciB0dSBoaXBvdGVjYSBjb24gZWwgYmFuY28iPjxkaXYgY2xhc3M9ImhkIj48cCBjbGFzcz0ia2ljayI+U2ltdWxhZG9yIGVuIDIgbWludXRvczwvcD48cCBjbGFzcz0idGl0bGUiIHJvbGU9ImhlYWRpbmciIGFyaWEtbGV2ZWw9IjMiPk5lZ29jaWEgdHUgaGlwb3RlY2EgPGVtPmNvbiBsb3MgbsO6bWVyb3MgZW4gbGEgbWFubzwvZW0+PC9wPjxwIGNsYXNzPSJzdWIiPk1pZGUgdHUgcG9kZXIgZGUgbmVnb2NpYWNpw7NuLCBjb21wYXJhIGhhc3RhIDMgb2ZlcnRhcyBwb3Igc3UgY29zdGUgcmVhbCB5IGRlc2N1YnJlIHF1w6kgcGVkaXJsZSBhbCBiYW5jby48L3A+PGRpdiBjbGFzcz0icHJvZyI+PGRpdiBjbGFzcz0iYmFyIj48c3Bhbj48L3NwYW4+PC9kaXY+PHNwYW4gY2xhc3M9ImNvdW50Ij48L3NwYW4+PC9kaXY+PC9kaXY+PHAgY2xhc3M9InNyIiBhcmlhLWxpdmU9InBvbGl0ZSI+PC9wPjxkaXYgY2xhc3M9ImJkIj48L2Rpdj48cCBjbGFzcz0iZnQiPkPDoWxjdWxvIG9yaWVudGF0aXZvIGJhc2FkbyBlbiBsYSBub3JtYXRpdmEgdmlnZW50ZSBlbiAnICsgQ0ZHLnllYXIgKyAnIHkgZW4gZWwgRXVyw61ib3IgZGUgJyArIENGRy5ldXJNZXMgKyAnICgnICsgcHIoQ0ZHLmV1ciwgMykgKyAnKS4gTGFzIGNvbmRpY2lvbmVzIGRlZmluaXRpdmFzIGxhcyBmaWphIGNhZGEgYmFuY28gZW4gc3Ugb2ZlcnRhIHZpbmN1bGFudGUuIEVuIG5pbmfDum4gY2FzbyBzdXN0aXR1eWUgZWwgYXNlc29yYW1pZW50byBwcm9mZXNpb25hbC4gUGFyYSBzaXR1YWNpb25lcyBjb21wbGVqYXMsIGNvbnN1bHRhIGNvbiB1biBnZXN0b3IgZXNwZWNpYWxpemFkby48L3A+PC9kaXY+JzsKICAgIHZhciBsaXZlID0gcm9vdC5xdWVyeVNlbGVjdG9yKCcuc3InKSwgYmQgPSByb290LnF1ZXJ5U2VsZWN0b3IoJy5iZCcpLCBmaWxsQmFyID0gcm9vdC5xdWVyeVNlbGVjdG9yKCcuYmFyIHNwYW4nKSwgY291bnQgPSByb290LnF1ZXJ5U2VsZWN0b3IoJy5jb3VudCcpOwogICAgdmFyIFMgPSBmcmVzaCgpLCBzdGFydGVkID0gZmFsc2U7CgogICAgZnVuY3Rpb24gY3VyKCkgeyByZXR1cm4gUy5zaXQgPT09ICd0ZW5nbyc7IH0KICAgIGZ1bmN0aW9uIHN0cCgpIHsgcmV0dXJuIFMuc2l0ID09PSAnZW1waWV6bycgPyBbJ3NpdCcsICdwZXJmaWwnLCAnc29sdiddIDogWydzaXQnLCAncGVyZmlsJywgJ3NvbHYnLCAnb2ZlcnRhcyddOyB9CiAgICBmdW5jdGlvbiBva09mKG8sIGspIHsKICAgICAgaWYgKCFvLnQpIHJldHVybiBmYWxzZTsKICAgICAgdmFyIGMgPSBjdXIoKSAmJiBrID09PSAwOwogICAgICBpZiAoIShjICYmIG8udCA9PT0gJ3ZhcmlhYmxlJykpIHsgdmFyIHIgPSBudW1QKG8ucjEpOyBpZiAoIWhhcyhvLnIxKSB8fCByIDwgMCB8fCByID4gMTUpIHJldHVybiBmYWxzZTsgfQogICAgICBpZiAoby50ICE9PSAnZmlqbycpIHsgdmFyIGRmID0gbnVtUChvLmRpZik7IGlmICghaGFzKG8uZGlmKSB8fCBkZiA8IC0xIHx8IGRmID4gNikgcmV0dXJuIGZhbHNlOyB9CiAgICAgIGlmIChvLnQgPT09ICdtaXh0bycgfHwgKG8udCA9PT0gJ3ZhcmlhYmxlJyAmJiAhYykpIHsgdmFyIHkgPSBudW1QKG8ueTEpLCBuID0gbnVtKFMuYW5vcyk7IGlmICghaGFzKG8ueTEpIHx8IHkgPD0gMCB8fCB5ID49IG4pIHJldHVybiBmYWxzZTsgfQogICAgICBpZiAoaGFzKG8uYXApICYmIChudW1QKG8uYXApIDwgMCB8fCBudW1QKG8uYXApID4gNSkpIHJldHVybiBmYWxzZTsKICAgICAgaWYgKGhhcyhvLmNhKSAmJiAobnVtUChvLmNhKSA8IDAgfHwgbnVtUChvLmNhKSA+IDUpKSByZXR1cm4gZmFsc2U7CiAgICAgIGlmIChoYXMoby52aW4pICYmIChudW0oby52aW4pIDwgMCB8fCBudW0oby52aW4pID4gMjAwMDApKSByZXR1cm4gZmFsc2U7CiAgICAgIHJldHVybiB0cnVlOwogICAgfQogICAgZnVuY3Rpb24gb2soaykgewogICAgICBpZiAoayA9PT0gJ3NpdCcpIHJldHVybiAhIVMuc2l0OwogICAgICBpZiAoayA9PT0gJ3BlcmZpbCcpIHsgdmFyIHAgPSBudW0oUy5pbXApLCB2ID0gbnVtKFMudmFsKSwgbiA9IG51bShTLmFub3MpOyByZXR1cm4gcCA+PSAxMDAwMCAmJiBwIDw9IDMwMDAwMDAgJiYgdiA+PSBwICYmIHYgPD0gMjAwMDAwMDAgJiYgbiA+PSA1ICYmIG4gPD0gNDAgJiYgbiAlIDEgPT09IDA7IH0KICAgICAgaWYgKGsgPT09ICdzb2x2JykgeyB2YXIgZyA9IG51bShTLmluZyk7IHJldHVybiBnID49IDMwMCAmJiBnIDw9IDIwMDAwMCAmJiAoIWhhcyhTLmRldSkgfHwgKG51bShTLmRldSkgPj0gMCAmJiBudW0oUy5kZXUpIDwgZykpICYmICEhUy5lc3QgJiYgISFTLm1vcjsgfQogICAgICBpZiAoayA9PT0gJ29mZXJ0YXMnKSB7IHZhciBtaW4gPSBjdXIoKSA\/IDIgOiAxOyBpZiAoUy5vZi5sZW5ndGggPCBtaW4pIHJldHVybiBmYWxzZTsgZm9yICh2YXIgaiA9IDA7IGogPCBTLm9mLmxlbmd0aDsgaisrKSBpZiAoIW9rT2YoUy5vZltqXSwgaikpIHJldHVybiBmYWxzZTsgcmV0dXJuIHRydWU7IH0KICAgICAgcmV0dXJuIHRydWU7CiAgICB9CiAgICBmdW5jdGlvbiBwcm9ncmVzcygpIHsKICAgICAgdmFyIHN0ID0gc3RwKCk7CiAgICAgIGlmIChTLmRvbmUpIHsgZmlsbEJhci5zdHlsZS53aWR0aCA9ICcxMDAlJzsgY291bnQudGV4dENvbnRlbnQgPSAnVHUgcmVzdWx0YWRvJzsgdmFyIHJ0ID0gYmQucXVlcnlTZWxlY3RvcignLnItdCcpOyBsaXZlLnRleHRDb250ZW50ID0gJ1R1IHJlc3VsdGFkbzogJyArIChydCA\/IHJ0LnRleHRDb250ZW50IDogJycpOyByZXR1cm47IH0KICAgICAgZmlsbEJhci5zdHlsZS53aWR0aCA9IE1hdGgucm91bmQoKFMuaSAvIHN0Lmxlbmd0aCkgKiAxMDApICsgJyUnOwogICAgICBjb3VudC50ZXh0Q29udGVudCA9ICdQYXNvICcgKyAoUy5pICsgMSkgKyAnIGRlICcgKyBzdC5sZW5ndGg7CiAgICAgIGxpdmUudGV4dENvbnRlbnQgPSBjb3VudC50ZXh0Q29udGVudDsKICAgIH0KICAgIGZ1bmN0aW9uIGJhY2tCdG4obGFiZWwpIHsgcmV0dXJuICc8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImJhY2siIGRhdGEtYWN0PSJiYWNrIj4nICsgSS5iYWNrICsgKGxhYmVsIHx8ICdBdHLDoXMnKSArICc8L2J1dHRvbj4nOyB9CiAgICBmdW5jdGlvbiBuYXYocmlnaHQpIHsgcmV0dXJuICc8ZGl2IGNsYXNzPSJuYXYiPicgKyAoUy5pID4gMCA\/IGJhY2tCdG4oKSA6ICcnKSArIHJpZ2h0ICsgJzwvZGl2PjxwIGNsYXNzPSJlcnIiIHJvbGU9InN0YXR1cyI+JyArIHdoeShzdHAoKVtTLmldKSArICc8L3A+JzsgfQogICAgZnVuY3Rpb24gd2h5KGspIHsKICAgICAgaWYgKGsgPT09ICdwZXJmaWwnKSB7CiAgICAgICAgdmFyIHAgPSBudW0oUy5pbXApLCB2ID0gbnVtKFMudmFsKSwgbiA9IG51bShTLmFub3MpOwogICAgICAgIGlmIChoYXMoUy5pbXApICYmIGhhcyhTLnZhbCkgJiYgdiA8IHApIHJldHVybiBjdXIoKSA\/ICdMbyBxdWUgdGUgcXVlZGEgcG9yIHBhZ2FyIG5vIHB1ZWRlIHN1cGVyYXIgZWwgdmFsb3IgZGUgbGEgdml2aWVuZGEuJyA6ICdFbCBpbXBvcnRlIG5vIHB1ZWRlIHN1cGVyYXIgZWwgcHJlY2lvIGRlIGxhIHZpdmllbmRhLic7CiAgICAgICAgaWYgKGhhcyhTLmFub3MpICYmIChuIDwgNSB8fCBuID4gNDAgfHwgbiAlIDEgIT09IDApKSByZXR1cm4gJ0VzY3JpYmUgdW4gcGxhem8gZGUgZW50cmUgNSB5IDQwIGHDsW9zLCBzaW4gZGVjaW1hbGVzLic7CiAgICAgIH0KICAgICAgaWYgKGsgPT09ICdzb2x2JyAmJiBoYXMoUy5pbmcpICYmIGhhcyhTLmRldSkgJiYgbnVtKFMuZGV1KSA+PSBudW0oUy5pbmcpKSByZXR1cm4gJ1R1cyBvdHJhcyBkZXVkYXMgbm8gcHVlZGVuIHN1cGVyYXIgdHVzIGluZ3Jlc29zLic7CiAgICAgIGlmIChrID09PSAnb2ZlcnRhcycpIHsKICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IFMub2YubGVuZ3RoOyBqKyspIHsgdmFyIG8gPSBTLm9mW2pdOyBpZiAoby50ICYmIG8udCAhPT0gJ2Zpam8nICYmIGhhcyhvLnkxKSAmJiBudW1QKG8ueTEpID49IG51bShTLmFub3MpKSByZXR1cm4gJ0VuICcgKyBvZk5hbWUobywgaikgKyAnLCBsb3MgYcOxb3MgYSB0aXBvIGluaWNpYWwgZGViZW4gc2VyIG1lbm9zIHF1ZSBlbCBwbGF6by4nOyB9CiAgICAgICAgZm9yICh2YXIgcSA9IDA7IHEgPCBTLm9mLmxlbmd0aDsgcSsrKSBpZiAoIW9rT2YoUy5vZltxXSwgcSkgJiYgUy5vZltxXS50ICYmIChoYXMoUy5vZltxXS5yMSkgfHwgaGFzKFMub2ZbcV0uZGlmKSkpIHJldHVybiAnQ29tcGxldGEgbG9zIGRhdG9zIGRlICcgKyBvZk5hbWUoUy5vZltxXSwgcSkgKyAnIHBhcmEgdmVyIHR1IHJlc3VsdGFkby4nOwogICAgICB9CiAgICAgIHJldHVybiAnJzsKICAgIH0KICAgIGZ1bmN0aW9uIG5leHRCdG4oaywgbGFiZWwpIHsgcmV0dXJuICc8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImJ0biIgZGF0YS1hY3Q9Im5leHQiJyArIChvayhrKSA\/ICcnIDogJyBkaXNhYmxlZCcpICsgJz4nICsgKGxhYmVsIHx8ICdDb250aW51YXInKSArICc8L2J1dHRvbj4nOyB9CiAgICBmdW5jdGlvbiBnZXR2KGtleSkgeyBpZiAoa2V5LmNoYXJBdCgwKSA9PT0gJ28nICYmIGtleS5pbmRleE9mKCcuJykgPiAwKSB7IHZhciBwID0ga2V5LnNwbGl0KCcuJyk7IHJldHVybiBTLm9mWytwWzBdLnNsaWNlKDEpXVtwWzFdXTsgfSByZXR1cm4gU1trZXldOyB9CiAgICBmdW5jdGlvbiBzZXR2KGtleSwgdikgeyBpZiAoa2V5LmNoYXJBdCgwKSA9PT0gJ28nICYmIGtleS5pbmRleE9mKCcuJykgPiAwKSB7IHZhciBwID0ga2V5LnNwbGl0KCcuJyk7IFMub2ZbK3BbMF0uc2xpY2UoMSldW3BbMV1dID0gdjsgfSBlbHNlIFNba2V5XSA9IHY7IH0KICAgIGZ1bmN0aW9uIGlkKGtleSkgeyByZXR1cm4gJ25oLScgKyBrZXkucmVwbGFjZSgnLicsICctJyk7IH0KICAgIGZ1bmN0aW9uIHNlZyhrZXksIGxhYmVsLCBsaXN0LCBjbHMsIGhpbnQpIHsKICAgICAgdmFyIGggPSAnPGRpdiBjbGFzcz0iZmllbGQiPjxzcGFuIGNsYXNzPSJsYmwiIGlkPSInICsgaWQoa2V5KSArICctbCI+JyArIGxhYmVsICsgJzwvc3Bhbj4nICsgKGhpbnQgPyAnPHNwYW4gY2xhc3M9ImhpbnQiPicgKyBoaW50ICsgJzwvc3Bhbj4nIDogJycpICsgJzxkaXYgY2xhc3M9InNlZycgKyAoY2xzID8gJyAnICsgY2xzIDogJycpICsgJyIgcm9sZT0iZ3JvdXAiIGFyaWEtbGFiZWxsZWRieT0iJyArIGlkKGtleSkgKyAnLWwiPic7CiAgICAgIGxpc3QuZm9yRWFjaChmdW5jdGlvbiAobykgeyBoICs9ICc8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9Im9wdCIgZGF0YS1zPSInICsga2V5ICsgJyIgZGF0YS12PSInICsgb1swXSArICciIGFyaWEtcHJlc3NlZD0iJyArIChnZXR2KGtleSkgPT09IG9bMF0pICsgJyI+PHNwYW4+PGI+JyArIG9bMV0gKyAnPC9iPicgKyAob1syXSA\/ICc8c21hbGw+JyArIG9bMl0gKyAnPC9zbWFsbD4nIDogJycpICsgJzwvc3Bhbj48L2J1dHRvbj4nOyB9KTsKICAgICAgcmV0dXJuIGggKyAnPC9kaXY+PC9kaXY+JzsKICAgIH0KICAgIGZ1bmN0aW9uIGZpZWxkKGtleSwgbGFiZWwsIGhpbnQsIHBoLCB1bml0LCB0eHQpIHsKICAgICAgcmV0dXJuICc8ZGl2IGNsYXNzPSJmaWVsZCI+PGxhYmVsIGZvcj0iJyArIGlkKGtleSkgKyAnIj4nICsgbGFiZWwgKyAnPC9sYWJlbD4nICsgKGhpbnQgPyAnPHNwYW4gY2xhc3M9ImhpbnQiIGlkPSInICsgaWQoa2V5KSArICctaCI+JyArIGhpbnQgKyAnPC9zcGFuPicgOiAnJykgKyAnPGRpdiBjbGFzcz0iaW5wIj48aW5wdXQgaWQ9IicgKyBpZChrZXkpICsgJyIgZGF0YS1mPSInICsga2V5ICsgJyInICsgKGhpbnQgPyAnIGFyaWEtZGVzY3JpYmVkYnk9IicgKyBpZChrZXkpICsgJy1oIicgOiAnJykgKyAnIHR5cGU9InRleHQiIGlucHV0bW9kZT0iJyArICh0eHQgPyAndGV4dCcgOiAnZGVjaW1hbCcpICsgJyIgYXV0b2NvbXBsZXRlPSJvZmYiIHBsYWNlaG9sZGVyPSInICsgKHBoIHx8ICcnKSArICciIHZhbHVlPSInICsgZXNjKGdldHYoa2V5KSkgKyAnIicgKyAodHh0ID8gJyBtYXhsZW5ndGg9IjI0IicgOiAnJykgKyAnPicgKyAodW5pdCA\/ICc8c3BhbiBjbGFzcz0idSI+JyArIHVuaXQgKyAnPC9zcGFuPicgOiAnJykgKyAnPC9kaXY+PC9kaXY+JzsKICAgIH0KICAgIGZ1bmN0aW9uIG9mTmFtZShvLCBrKSB7IGlmIChjdXIoKSAmJiBrID09PSAwKSByZXR1cm4gJ1R1IGhpcG90ZWNhIGFjdHVhbCc7IHZhciBuID0gU3RyaW5nKG8ubiB8fCAnJykudHJpbSgpOyByZXR1cm4gbiA\/IG4gOiAnT2ZlcnRhICcgKyBTdHJpbmcuZnJvbUNoYXJDb2RlKDY1ICsgKGN1cigpID8gayAtIDEgOiBrKSk7IH0KICAgIGZ1bmN0aW9uIHZpZXdPZihvLCBrKSB7CiAgICAgIHZhciBwID0gJ28nICsgayArICcuJywgYyA9IGN1cigpICYmIGsgPT09IDAsIGggPSAnPGRpdiBjbGFzcz0ib2YiPjxkaXYgY2xhc3M9Im9mLWgiPjxiPicgKyBlc2Mob2ZOYW1lKG8sIGspKSArICc8L2I+JyArICgoIWMgJiYgUy5vZi5sZW5ndGggPiAoY3VyKCkgPyAyIDogMSkpID8gJzxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0icm0iIGRhdGEtYWN0PSJybSIgZGF0YS1rPSInICsgayArICciIGFyaWEtbGFiZWw9IlF1aXRhciAnICsgZXNjKG9mTmFtZShvLCBrKSkgKyAnIj5RdWl0YXI8L2J1dHRvbj4nIDogJycpICsgJzwvZGl2Pic7CiAgICAgIGlmICghYykgaCArPSBmaWVsZChwICsgJ24nLCAnQmFuY28gKG9wY2lvbmFsKScsICcnLCAnRWouOiBCYW5jbyAnICsgU3RyaW5nLmZyb21DaGFyQ29kZSg2NSArIChjdXIoKSA\/IGsgLSAxIDogaykpLCAnJywgdHJ1ZSk7CiAgICAgIGggKz0gc2VnKHAgKyAndCcsICdUaXBvIGRlIGludGVyw6lzJywgW1snZmlqbycsICdGaWpvJ10sIFsndmFyaWFibGUnLCAnVmFyaWFibGUnXSwgWydtaXh0bycsICdNaXh0byddXSwgJ2czJyk7CiAgICAgIGlmIChvLnQgPT09ICdmaWpvJykgaCArPSBmaWVsZChwICsgJ3IxJywgYyA\/ICdUdSBUSU4nIDogJ1RJTiBxdWUgdGUgb2ZyZWNlbicsIGMgPyAnTG8gZW5jb250cmFyw6FzIGVuIGxhIGVzY3JpdHVyYSBvIGVuIHR1IMO6bHRpbW8gcmVjaWJvLicgOiAnQ29uIHRvZGFzIGxhcyBib25pZmljYWNpb25lcyBxdWUgdmF5YXMgYSBjdW1wbGlyLicsICcyLDUwJywgJyUnKTsKICAgICAgaWYgKG8udCA9PT0gJ3ZhcmlhYmxlJykgewogICAgICAgIGlmICghYykgewogICAgICAgICAgaCArPSAnPGRpdiBjbGFzcz0iZ3JpZDIiPicgKyBmaWVsZChwICsgJ3IxJywgJ1RJTiBpbmljaWFsJywgJ0VsIHRpcG8gZmlqbyBkZWwgcHJpbWVyIHBlcmlvZG8uJywgJzIsMDAnLCAnJScpICsgZmllbGQocCArICd5MScsICdBw7FvcyBhIHRpcG8gaW5pY2lhbCcsICdTdWVsZSBzZXIgMSBhw7FvLicsICcxJywgJ2HDsW9zJykgKyAnPC9kaXY+JzsKICAgICAgICB9CiAgICAgICAgaCArPSBmaWVsZChwICsgJ2RpZicsICdEaWZlcmVuY2lhbCcsICdMbyBxdWUgc2Ugc3VtYSBhbCBFdXLDrWJvcjogRXVyw61ib3IgKyBkaWZlcmVuY2lhbC4nLCAnMCw2MCcsICclJyk7CiAgICAgIH0KICAgICAgaWYgKG8udCA9PT0gJ21peHRvJykgewogICAgICAgIGggKz0gJzxkaXYgY2xhc3M9ImdyaWQyIj4nICsgZmllbGQocCArICdyMScsIGMgPyAnVElOIGRlbCB0cmFtbyBmaWpvJyA6ICdUSU4gZGVsIHRyYW1vIGZpam8nLCAnJywgJzIsMjAnLCAnJScpICsgZmllbGQocCArICd5MScsIGMgPyAnQcOxb3MgZGUgZmlqbyBxdWUgdGUgcXVlZGFuJyA6ICdBw7FvcyBhIHRpcG8gZmlqbycsICcnLCBjID8gJzMnIDogJzUnLCAnYcOxb3MnKSArICc8L2Rpdj4nOwogICAgICAgIGggKz0gZmllbGQocCArICdkaWYnLCAnRGlmZXJlbmNpYWwgZGVsIHRyYW1vIHZhcmlhYmxlJywgJ0xvIHF1ZSBzZSBzdW1hIGFsIEV1csOtYm9yIGRlc3B1w6lzIGRlbCB0cmFtbyBmaWpvLicsICcwLDYwJywgJyUnKTsKICAgICAgfQogICAgICBpZiAoby50KSB7CiAgICAgICAgaCArPSAnPGRpdiBjbGFzcz0iZ3JpZDIiPic7CiAgICAgICAgaWYgKCFjKSBoICs9IGZpZWxkKHAgKyAnYXAnLCAnQ29taXNpw7NuIGRlIGFwZXJ0dXJhJywgJ0TDqWphbG8gdmFjw61vIHNpIG5vIHRpZW5lLicsICcwJywgJyUnKTsKICAgICAgICBlbHNlIGggKz0gZmllbGQocCArICdjYScsICdDb21pc2nDs24gcG9yIGFtb3J0aXphY2nDs24gdG90YWwnLCAnTGEgcXVlIGZpamEgdHUgY29udHJhdG8uIETDqWphbG8gdmFjw61vIHNpIG5vIHRpZW5lLicsICcwJywgJyUnKTsKICAgICAgICBoICs9IGZpZWxkKHAgKyAndmluJywgJ0Nvc3RlIGRlIGxhcyB2aW5jdWxhY2lvbmVzJywgJ1NlZ3Vyb3MgeSBwcm9kdWN0b3MgcXVlIGV4aWdlIGVsIGJhbmNvIHBhcmEgZGFydGUgZXNlIHRpcG8uJywgJzAnLCAn4oKsL2HDsW8nKTsKICAgICAgICBoICs9ICc8L2Rpdj4nOwogICAgICB9CiAgICAgIHJldHVybiBoICsgJzwvZGl2Pic7CiAgICB9CiAgICBmdW5jdGlvbiB2aWV3U3RlcChrKSB7CiAgICAgIHZhciBoID0gJycsIGMgPSBjdXIoKTsKICAgICAgaWYgKGsgPT09ICdzaXQnKSB7CiAgICAgICAgaCArPSAnPHAgY2xhc3M9InEiIHRhYmluZGV4PSItMSI+wr9FbiBxdcOpIHB1bnRvIGVzdMOhcz88L3A+PHAgY2xhc3M9ImhlbHAiPkVsIGPDoWxjdWxvIHNlIGFkYXB0YSBhIHR1IHNpdHVhY2nDs24uPC9wPic7CiAgICAgICAgaCArPSBzZWcoJ3NpdCcsICdFbGlnZSB1bmEgb3BjacOzbicsIFtbJ2VtcGllem8nLCAnRXN0b3kgZW1wZXphbmRvJywgJ0HDum4gbm8gaGUgcGVkaWRvIG9mZXJ0YXMgYSBuaW5nw7puIGJhbmNvLiddLCBbJ29mZXJ0YXMnLCAnWWEgdGVuZ28gb2ZlcnRhcycsICdRdWllcm8gc2FiZXIgY3XDoWwgbWUgY29udmllbmUgeSBxdcOpIHBlZGlyLiddLCBbJ3RlbmdvJywgJ1lhIHRlbmdvIGhpcG90ZWNhJywgJ1F1aWVybyBwYWdhciBtZW5vcyBwb3IgbGEgcXVlIHRlbmdvLiddXSk7CiAgICAgICAgaCArPSBuYXYobmV4dEJ0bihrKSk7CiAgICAgIH0KICAgICAgaWYgKGsgPT09ICdwZXJmaWwnKSB7CiAgICAgICAgaCArPSAnPHAgY2xhc3M9InEiIHRhYmluZGV4PSItMSI+JyArIChjID8gJ1R1IGhpcG90ZWNhIHkgdHUgdml2aWVuZGEnIDogJ0xhIGhpcG90ZWNhIHF1ZSBuZWNlc2l0YXMnKSArICc8L3A+PHAgY2xhc3M9ImhlbHAiPicgKyAoYyA\/ICdDb24gbG8gcXVlIHRlIHF1ZWRhIHBvciBwYWdhciB2ZXLDoXMgY3XDoW50byBwb2Ryw61hcyBhaG9ycmFyLicgOiAnRWwgaW1wb3J0ZSBmcmVudGUgYWwgdmFsb3IgZGUgbGEgdml2aWVuZGEgZXMgbG8gcHJpbWVybyBxdWUgbWlyYSBlbCBiYW5jby4nKSArICc8L3A+JzsKICAgICAgICBoICs9IGZpZWxkKCdpbXAnLCBjID8gJ0NhcGl0YWwgcXVlIHRlIHF1ZWRhIHBvciBwYWdhcicgOiAnSW1wb3J0ZSBxdWUgdmFzIGEgcGVkaXInLCAnJywgYyA\/ICcxNTAuMDAwJyA6ICcyMDAuMDAwJywgJ+KCrCcpOwogICAgICAgIGggKz0gZmllbGQoJ3ZhbCcsIGMgPyAnVmFsb3IgYXByb3hpbWFkbyBkZSB0dSB2aXZpZW5kYSBob3knIDogJ1ByZWNpbyBkZSBsYSB2aXZpZW5kYScsIGMgPyAnU2kgbm8gbG8gc2FiZXMsIHVzYSBlbCBwcmVjaW8gZGUgdml2aWVuZGFzIHBhcmVjaWRhcyBlbiB0dSB6b25hLicgOiAnJywgYyA\/ICcyODAuMDAwJyA6ICcyNjAuMDAwJywgJ+KCrCcpOwogICAgICAgIGggKz0gZmllbGQoJ2Fub3MnLCBjID8gJ0HDsW9zIHF1ZSB0ZSBxdWVkYW4gZGUgaGlwb3RlY2EnIDogJ1BsYXpvIGRlIGxhIGhpcG90ZWNhJywgJ0VudHJlIDUgeSA0MCBhw7Fvcy4nLCBjID8gJzIyJyA6ICczMCcsICdhw7FvcycpOwogICAgICAgIGggKz0gbmF2KG5leHRCdG4oaykpOwogICAgICB9CiAgICAgIGlmIChrID09PSAnc29sdicpIHsKICAgICAgICBoICs9ICc8cCBjbGFzcz0icSIgdGFiaW5kZXg9Ii0xIj5UdSBzb2x2ZW5jaWE8L3A+PHAgY2xhc3M9ImhlbHAiPkVzIGxvIHF1ZSBkYSBmdWVyemEgYSB0dSBuZWdvY2lhY2nDs246IGN1YW50byBtw6FzIHNlZ3VybyB0ZSB2ZSBlbCBiYW5jbywgbcOhcyBtYXJnZW4gdGllbmVzLjwvcD4nOwogICAgICAgIGggKz0gJzxkaXYgY2xhc3M9ImdyaWQyIj4nICsgZmllbGQoJ2luZycsICdJbmdyZXNvcyBuZXRvcyBhbCBtZXMnLCAnU3VtYSBsb3MgZGUgdG9kb3MgbG9zIHRpdHVsYXJlcy4nLCAnMy4yMDAnLCAn4oKsL21lcycpICsgZmllbGQoJ2RldScsICdPdHJhcyBkZXVkYXMgYWwgbWVzIChvcGNpb25hbCknLCAnUHLDqXN0YW1vcywgdGFyamV0YXMsIGZpbmFuY2lhY2lvbmVz4oCmJywgJzAnLCAn4oKsL21lcycpICsgJzwvZGl2Pic7CiAgICAgICAgaCArPSBzZWcoJ2VzdCcsICfCv0PDs21vIHNvbiB0dXMgaW5ncmVzb3M\/JywgW1snaW5kZWYnLCAnQ29udHJhdG8gaW5kZWZpbmlkbyBvIGZ1bmNpb25hcmlvJ10sIFsnYXV0bycsICdBdXTDs25vbW8gY29uIG3DoXMgZGUgMiBhw7FvcyBkZSBhY3RpdmlkYWQnXSwgWydvdHJvJywgJ0NvbnRyYXRvIHRlbXBvcmFsLCBwb2NhIGFudGlnw7xlZGFkIG8gaW5ncmVzb3MgaXJyZWd1bGFyZXMnXV0pOwogICAgICAgIGggKz0gc2VnKCdtb3InLCAnwr9UaWVuZXMgYWxnw7puIGltcGFnbyBvIGFwYXJlY2VzIGVuIHVuIGZpY2hlcm8gZGUgbW9yb3NvcywgY29tbyBBU05FRj8nLCBbWydubycsICdObyddLCBbJ3NpJywgJ1PDrSddXSwgJ2cyJyk7CiAgICAgICAgaCArPSBuYXYobmV4dEJ0bihrKSk7CiAgICAgIH0KICAgICAgaWYgKGsgPT09ICdvZmVydGFzJykgewogICAgICAgIGggKz0gJzxwIGNsYXNzPSJxIiB0YWJpbmRleD0iLTEiPicgKyAoYyA\/ICdUdSBoaXBvdGVjYSBmcmVudGUgYSBvdHJhcyBvZmVydGFzJyA6ICdUdXMgb2ZlcnRhcycpICsgJzwvcD48cCBjbGFzcz0iaGVscCI+JyArIChjID8gJ0HDsWFkZSBsYXMgY29uZGljaW9uZXMgZGUgdHUgaGlwb3RlY2EgeSBhbCBtZW5vcyB1bmEgb2ZlcnRhIGRlIG90cm8gYmFuY28uJyA6ICdDb3BpYSBsb3MgZGF0b3MgZGUgY2FkYSBvZmVydGEuIExvcyBlbmNvbnRyYXLDoXMgZW4gbGEgRkVJTiwgbGEgZmljaGEgcXVlIHRlIGVudHJlZ2EgY2FkYSBiYW5jby4nKSArICc8L3A+JzsKICAgICAgICBTLm9mLmZvckVhY2goZnVuY3Rpb24gKG8sIGopIHsgaCArPSB2aWV3T2Yobywgaik7IH0pOwogICAgICAgIGlmIChTLm9mLmxlbmd0aCA8IENGRy5tYXhPZiArIChjID8gMSA6IDApKSBoICs9ICc8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImFkZCIgZGF0YS1hY3Q9ImFkZCI+KyBBw7FhZGlyICcgKyAoYyAmJiBTLm9mLmxlbmd0aCA9PT0gMSA\/ICd1bmEgb2ZlcnRhJyA6ICdvdHJhIG9mZXJ0YScpICsgJzwvYnV0dG9uPic7CiAgICAgICAgaCArPSBuYXYobmV4dEJ0bihrLCAnVmVyIG1pIHJlc3VsdGFkbycpKTsKICAgICAgfQogICAgICByZXR1cm4gaDsKICAgIH0KCiAgICBmdW5jdGlvbiBjYWxjKCkgewogICAgICB2YXIgUCA9IG51bShTLmltcCksIFYgPSBudW0oUy52YWwpLCBuID0gTWF0aC5yb3VuZChudW0oUy5hbm9zKSAqIDEyKSwgYyA9IGN1cigpOwogICAgICB2YXIgcmVzID0geyBQOiBQLCBWOiBWLCBuOiBuLCBsaXN0OiBbXSB9OwogICAgICBpZiAoUy5zaXQgIT09ICdlbXBpZXpvJykgewogICAgICAgIFMub2YuZm9yRWFjaChmdW5jdGlvbiAobywgaikgeyB2YXIgciA9IGNvc3QobywgUCwgbiwgYyAmJiBqID09PSAwKTsgci5vID0gbzsgci5rID0gajsgci5uYW1lID0gb2ZOYW1lKG8sIGopOyByZXMubGlzdC5wdXNoKHIpOyB9KTsKICAgICAgICB2YXIgcG9vbCA9IGMgPyByZXMubGlzdC5zbGljZSgxKSA6IHJlcy5saXN0OwogICAgICAgIHJlcy5iZXN0ID0gcG9vbC5yZWR1Y2UoZnVuY3Rpb24gKGEsIGIpIHsgcmV0dXJuIGIucmVhbCA8IGEucmVhbCA\/IGIgOiBhOyB9KTsKICAgICAgICByZXMud2luID0gcmVzLmxpc3QucmVkdWNlKGZ1bmN0aW9uIChhLCBiKSB7IHJldHVybiBiLnJlYWwgPCBhLnJlYWwgPyBiIDogYTsgfSk7CiAgICAgICAgcmVzLm1heCA9IE1hdGgubWF4LmFwcGx5KG51bGwsIHJlcy5saXN0Lm1hcChmdW5jdGlvbiAocikgeyByZXR1cm4gci5yZWFsOyB9KSk7CiAgICAgICAgcmVzLmN1b3RhID0gcmVzLndpbi5zLmNtYXg7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgcmVzLmN1b3RhID0gYW5udShQLCBDRkcucmVmLCBuKTsKICAgICAgfQogICAgICAvKiBQb2RlciBkZSBuZWdvY2lhY2nDs24gKi8KICAgICAgdmFyIGluZyA9IG51bShTLmluZyksIGRldSA9IG51bShTLmRldSksIHJhdGlvID0gKHJlcy5jdW90YSArIGRldSkgLyBpbmcsIGx0diA9IFAgLyBWLCBzYyA9IDAsIGhhcmQgPSBmYWxzZSwgZiA9IFtdOwogICAgICBpZiAocmF0aW8gPD0gMC4zMCkgeyBzYyArPSAyOyBmLnB1c2goWzEsICdFbmRldWRhbWllbnRvOiAnICsgcHIocmF0aW8gKiAxMDAsIDApLCAnSG9sZ2FkbzogbGEgY3VvdGEgeSB0dXMgZGV1ZGFzIG5vIHBhc2FuIGRlbCAzMCAlIGRlIHR1cyBpbmdyZXNvcy4nXSk7IH0KICAgICAgZWxzZSBpZiAocmF0aW8gPD0gMC4zNSkgeyBzYyArPSAxOyBmLnB1c2goWzEsICdFbmRldWRhbWllbnRvOiAnICsgcHIocmF0aW8gKiAxMDAsIDApLCAnQ29ycmVjdG86IGRlbnRybyBkZWwgMzUgJSBxdWUgbG9zIGJhbmNvcyBzdWVsZW4gdG9tYXIgY29tbyByZWZlcmVuY2lhLiddKTsgfQogICAgICBlbHNlIGlmIChyYXRpbyA8PSAwLjQwKSB7IGYucHVzaChbMCwgJ0VuZGV1ZGFtaWVudG86ICcgKyBwcihyYXRpbyAqIDEwMCwgMCksICdKdXN0bzogZW50cmUgZWwgMzUgJSB5IGVsIDQwICUsIGVsIGJhbmNvIHRlIHBvbmRyw6EgbcOhcyBwZWdhcy4nXSk7IH0KICAgICAgZWxzZSB7IGhhcmQgPSB0cnVlOyBmLnB1c2goWzAsICdFbmRldWRhbWllbnRvOiAnICsgcHIocmF0aW8gKiAxMDAsIDApLCAnUG9yIGVuY2ltYSBkZWwgNDAgJTogZXMgZGlmw61jaWwgcXVlIGVsIGJhbmNvIGFwcnVlYmUgbGEgb3BlcmFjacOzbiBhc8OtLiBQcnVlYmEgY29uIG3DoXMgcGxhem8gbyBtZW5vcyBpbXBvcnRlLiddKTsgfQogICAgICBpZiAobHR2IDw9IDAuNzApIHsgc2MgKz0gMjsgZi5wdXNoKFsxLCAnRmluYW5jaWFjacOzbjogJyArIHByKGx0diAqIDEwMCwgMCkgKyAnIGRlbCB2YWxvcicsICdQaWRlcyBwb2NvIGZyZW50ZSBhbCB2YWxvciBkZSBsYSB2aXZpZW5kYSwgeSBlc28gcmVkdWNlIGVsIHJpZXNnbyBwYXJhIGVsIGJhbmNvLiddKTsgfQogICAgICBlbHNlIGlmIChsdHYgPD0gMC44MCkgeyBzYyArPSAxOyBmLnB1c2goWzEsICdGaW5hbmNpYWNpw7NuOiAnICsgcHIobHR2ICogMTAwLCAwKSArICcgZGVsIHZhbG9yJywgJ0RlbnRybyBkZWwgODAgJSBxdWUgc3VlbGVuIGZpbmFuY2lhciBsb3MgYmFuY29zLiddKTsgfQogICAgICBlbHNlIHsgc2MgLT0gMTsgZi5wdXNoKFswLCAnRmluYW5jaWFjacOzbjogJyArIHByKGx0diAqIDEwMCwgMCkgKyAnIGRlbCB2YWxvcicsICdNw6FzIGRlbCA4MCAlOiBwb2NvcyBiYW5jb3MgbG8gZmluYW5jaWFuIHkgdGUgZXhpZ2lyw6FuIHVuIHBlcmZpbCBtdXkgc8OzbGlkby4nXSk7IH0KICAgICAgaWYgKFMuZXN0ID09PSAnaW5kZWYnKSB7IHNjICs9IDE7IGYucHVzaChbMSwgJ0luZ3Jlc29zIGVzdGFibGVzJywgJ1VuIGNvbnRyYXRvIGluZGVmaW5pZG8gbyB1bmEgcGxhemEgZmlqYSBlcyBsbyBxdWUgbcOhcyB0cmFucXVpbGl6YSBhbCBiYW5jby4nXSk7IH0KICAgICAgZWxzZSBpZiAoUy5lc3QgPT09ICdhdXRvJykgeyBmLnB1c2goWzEsICdBdXTDs25vbW8gY29uIHRyYXllY3RvcmlhJywgJ0VsIGJhbmNvIHRlIHBlZGlyw6EgdHVzIMO6bHRpbWFzIGRlY2xhcmFjaW9uZXMgZGUgbGEgcmVudGEgcGFyYSBjb21wcm9iYXIgdHVzIGluZ3Jlc29zLiddKTsgfQogICAgICBlbHNlIHsgc2MgLT0gMTsgZi5wdXNoKFswLCAnSW5ncmVzb3MgbWVub3MgZXN0YWJsZXMnLCAnRWwgYmFuY28gdmFsb3JhcsOhIG3DoXMgZWwgYWhvcnJvIGFwb3J0YWRvIHkgcXVpesOhIHRlIHBpZGEgdW4gYXZhbGlzdGEuJ10pOyB9CiAgICAgIGlmIChTLm1vciA9PT0gJ3NpJykgeyBoYXJkID0gdHJ1ZTsgZi5wdXNoKFswLCAnSW1wYWdvcyBvIGZpY2hlcm9zIGRlIG1vcm9zb3MnLCAnRXMgdW4gZnJlbm8gY2FzaSBzZWd1cm86IGNvbnZpZW5lIHNhbGRhciBsYSBkZXVkYSB5IHNhbGlyIGRlbCBmaWNoZXJvIGFudGVzIGRlIHBlZGlyIGxhIGhpcG90ZWNhLiddKTsgfQogICAgICBlbHNlIGYucHVzaChbMSwgJ0hpc3RvcmlhbCBsaW1waW8nLCAnTm8gYXBhcmVjZXMgZW4gZmljaGVyb3MgZGUgbW9yb3Nvcy4nXSk7CiAgICAgIHJlcy5yYXRpbyA9IHJhdGlvOyByZXMubHR2ID0gbHR2OyByZXMuZiA9IGY7CiAgICAgIHJlcy5sdmwgPSBoYXJkID8gMiA6IChzYyA+PSA0ID8gMCA6IChzYyA+PSAyID8gMSA6IDIpKTsKICAgICAgcmV0dXJuIHJlczsKICAgIH0KICAgIC8qIFJlYmFqYSBkZSB0aXBvIChwdW50b3MpIHF1ZSBpZ3VhbGEgZWwgY29zdGUgZGUgbGEgb2ZlcnRhIGNvbiBlbCBvYmpldGl2byBUICovCiAgICBmdW5jdGlvbiBnYXAociwgUCwgbiwgVCwgYykgewogICAgICB2YXIgbG8gPSAwLCBoaSA9IDE1OwogICAgICBpZiAoY29zdChyLm8sIFAsIG4sIGMsIGhpKS5yZWFsID4gVCkgcmV0dXJuIG51bGw7CiAgICAgIGZvciAodmFyIHQgPSAwOyB0IDwgNTA7IHQrKykgeyB2YXIgbSA9IChsbyArIGhpKSAvIDI7IGlmIChjb3N0KHIubywgUCwgbiwgYywgbSkucmVhbCA+IFQpIGxvID0gbTsgZWxzZSBoaSA9IG07IH0KICAgICAgcmV0dXJuIGhpOwogICAgfQogICAgZnVuY3Rpb24gbmFtZWQocikgeyByZXR1cm4gISFTdHJpbmcoci5vLm4gfHwgJycpLnRyaW0oKTsgfQogICAgZnVuY3Rpb24gYmFua09mKHIpIHsgcmV0dXJuIG5hbWVkKHIpID8gZXNjKHIubmFtZSkgOiAnZWwgYmFuY28gZGUgbGEgJyArIGVzYyhyLm5hbWUpOyB9CiAgICBmdW5jdGlvbiBvZk9mKHIpIHsgcmV0dXJuIG5hbWVkKHIpID8gJ2xhIG9mZXJ0YSBkZSAnICsgZXNjKHIubmFtZSkgOiAnbGEgJyArIGVzYyhyLm5hbWUpOyB9CiAgICBmdW5jdGlvbiBkUm93cyhyLCBjLCBnYXN0b3MpIHsKICAgICAgdmFyIGggPSAnPGRpdiBjbGFzcz0icm93cyI+JywgY3MgPSByLnMuY3M7CiAgICAgIGggKz0gJzxwPjxzcGFuPkN1b3RhJyArIChjcy5sZW5ndGggPiAxID8gJyBpbmljaWFsJyA6ICcnKSArICc8L3NwYW4+PGI+JyArIGV1cihjc1swXSkgKyAnL21lczwvYj48L3A+JzsKICAgICAgaWYgKGNzLmxlbmd0aCA+IDEpIGggKz0gJzxwPjxzcGFuPkN1b3RhIGRlc3B1w6lzPC9zcGFuPjxiPicgKyBldXIoY3NbMV0pICsgJy9tZXM8L2I+PC9wPic7CiAgICAgIGggKz0gJzxwPjxzcGFuPkludGVyZXNlczwvc3Bhbj48Yj4nICsgZXVyKHIuaW50KSArICc8L2I+PC9wPic7CiAgICAgIGlmICghYykgaCArPSAnPHA+PHNwYW4+Q29taXNpw7NuIGRlIGFwZXJ0dXJhPC9zcGFuPjxiPicgKyBldXIoci5hcCkgKyAnPC9iPjwvcD4nOwogICAgICBoICs9ICc8cD48c3Bhbj5WaW5jdWxhY2lvbmVzPC9zcGFuPjxiPicgKyBldXIoci52aW4pICsgJzwvYj48L3A+JzsKICAgICAgaWYgKGdhc3RvcykgaCArPSAnPHA+PHNwYW4+R2FzdG9zIGRlbCBjYW1iaW8gKGFwYXJ0ZSk8L3NwYW4+PGI+JyArIGV1cihnYXN0b3NbMF0pICsgJyDigJMgJyArIGV1cihnYXN0b3NbMV0pICsgJzwvYj48L3A+JzsKICAgICAgcmV0dXJuIGggKyAnPC9kaXY+JzsKICAgIH0KICAgIGZ1bmN0aW9uIHZpZXdSZXN1bHQoKSB7CiAgICAgIHZhciBSID0gY2FsYygpLCBoID0gJycsIGMgPSBjdXIoKSwgbSA9IFIubiwgeXJzID0gKG0gJSAxMiA\/IFN0cmluZyhNYXRoLnJvdW5kKG0gLyAxMiAqIDEwKSAvIDEwKS5yZXBsYWNlKCcuJywgJywnKSA6IFN0cmluZyhtIC8gMTIpKSwgbHYgPSBbJ2FsdG8nLCAnbWVkaW8nLCAnYmFqbyddW1IubHZsXTsKICAgICAgdmFyIGNoaXAgPSAnPHNwYW4gY2xhc3M9ImNoaXAgbCcgKyBSLmx2bCArICciPjxpPicgKyAoUi5sdmwgPT09IDAgPyBJLmNoZWNrIDogSS5hbGVydCkgKyAnPC9pPlBvZGVyIGRlIG5lZ29jaWFjacOzbjogJyArIGx2ICsgJzwvc3Bhbj4nOwogICAgICB2YXIgaGFzVmFyID0gZmFsc2UsIHRhZ2dlZCA9IG51bGwsIEcgPSBudWxsLCBjYW1iaWEgPSBmYWxzZTsKICAgICAgaWYgKFMuc2l0ID09PSAnZW1waWV6bycpIHsKICAgICAgICBoICs9ICc8ZGl2IGNsYXNzPSJ2ZXJkaWN0Ij4nICsgY2hpcCArICc8cCBjbGFzcz0ici10IiB0YWJpbmRleD0iLTEiPlR1IGN1b3RhIHJvbmRhcsOtYSBsb3MgJyArIGV1cihSLmN1b3RhKSArICcgYWwgbWVzPC9wPjxwIGNsYXNzPSJyLXMiPkNvbiBlbCBUSU4gZmlqbyBkZWwgZWplbXBsbyByZXByZXNlbnRhdGl2byAoJyArIHByKENGRy5yZWYsIDIpICsgJykgYSAnICsgeXJzICsgJyBhw7Fvcy4gQ29uIHR1cyBvdHJhcyBkZXVkYXMsIHN1cG9uZHLDrWEgZWwgJyArIHByKFIucmF0aW8gKiAxMDAsIDApICsgJyBkZSB0dXMgaW5ncmVzb3MuJyArIChSLmx2bCA+IDAgPyAnIENvbiB0dSBwZXJmaWwsIGVsIGJhbmNvIHBvZHLDrWEgb2ZyZWNlcnRlIHVuIHRpcG8gbcOhcyBhbHRvLicgOiAnJykgKyAnPC9wPjwvZGl2Pic7CiAgICAgIH0gZWxzZSBpZiAoYykgewogICAgICAgIHZhciBBID0gUi5saXN0WzBdLCBCID0gUi5iZXN0LCBhaCA9IEEucmVhbCAtIEIucmVhbCwgY2FFID0gbnVtUChBLm8uY2EpIC8gMTAwICogUi5QOwogICAgICAgIEcgPSBbY2FFICsgQ0ZHLmNhbmNbMF0gKyBDRkcudGFzWzBdLCBjYUUgKyBDRkcuY2FuY1sxXSArIENGRy50YXNbMV1dOwogICAgICAgIGNhbWJpYSA9IGFoID4gR1sxXTsKICAgICAgICB0YWdnZWQgPSBjYW1iaWEgPyBCIDogKGFoIDw9IDAgPyBBIDogbnVsbCk7CiAgICAgICAgaWYgKGNhbWJpYSkgaCArPSAnPGRpdiBjbGFzcz0idmVyZGljdCI+JyArIGNoaXAgKyAnPHAgY2xhc3M9InItdCIgdGFiaW5kZXg9Ii0xIj5DYW1iaWFyIHBvZHLDrWEgYWhvcnJhcnRlIGVudHJlICcgKyBldXIoYWggLSBHWzFdKSArICcgeSAnICsgZXVyKGFoIC0gR1swXSkgKyAnPC9wPjxwIGNsYXNzPSJyLXMiPkVzIGVsIGFob3JybyBuZXRvIGVuIGxvcyAnICsgeXJzICsgJyBhw7FvcyBxdWUgdGUgcXVlZGFuOiAnICsgb2ZPZihCKSArICcgdGUgY29zdGFyw61hICcgKyBldXIoYWgpICsgJyBtZW5vcyBxdWUgdHUgaGlwb3RlY2EgYWN0dWFsLCB5IGEgZXNvIGhheSBxdWUgcmVzdGFybGUgbG9zIGdhc3RvcyBkZWwgY2FtYmlvIChlbnRyZSAnICsgZXVyKEdbMF0pICsgJyB5ICcgKyBldXIoR1sxXSkgKyAnKS48L3A+PC9kaXY+JzsKICAgICAgICBlbHNlIGlmIChhaCA+IDApIGggKz0gJzxkaXYgY2xhc3M9InZlcmRpY3QiPicgKyBjaGlwICsgJzxwIGNsYXNzPSJyLXQiIHRhYmluZGV4PSItMSI+RWwgYWhvcnJvIGFwZW5hcyBjb21wZW5zYSBlbCBjYW1iaW88L3A+PHAgY2xhc3M9InItcyI+JyArIG9mT2YoQikuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBvZk9mKEIpLnNsaWNlKDEpICsgJyB0ZSBjb3N0YXLDrWEgJyArIGV1cihhaCkgKyAnIG1lbm9zLCBwZXJvIGNhbWJpYXIgZGUgYmFuY28gc3Vwb25lIGVudHJlICcgKyBldXIoR1swXSkgKyAnIHkgJyArIGV1cihHWzFdKSArICcgZGUgZ2FzdG9zLiDDmnNhbGEgcGFyYSBuZWdvY2lhciBjb24gdHUgYmFuY28uPC9wPjwvZGl2Pic7CiAgICAgICAgZWxzZSBoICs9ICc8ZGl2IGNsYXNzPSJ2ZXJkaWN0Ij4nICsgY2hpcCArICc8cCBjbGFzcz0ici10IiB0YWJpbmRleD0iLTEiPlR1IGhpcG90ZWNhIGFjdHVhbCBzaWd1ZSBzaWVuZG8gbGEgbWVqb3I8L3A+PHAgY2xhc3M9InItcyI+TmluZ3VuYSBkZSBsYXMgb2ZlcnRhcyBtZWpvcmEgZWwgY29zdGUgZGUgdHUgaGlwb3RlY2EgZW4gbG9zICcgKyB5cnMgKyAnIGHDsW9zIHF1ZSB0ZSBxdWVkYW4uPC9wPjwvZGl2Pic7CiAgICAgIH0gZWxzZSBpZiAoUi5saXN0Lmxlbmd0aCA9PT0gMSkgewogICAgICAgIGggKz0gJzxkaXYgY2xhc3M9InZlcmRpY3QiPicgKyBjaGlwICsgJzxwIGNsYXNzPSJyLXQiIHRhYmluZGV4PSItMSI+RXN0YSBvZmVydGEgdGUgY29zdGFyw61hICcgKyBldXIoUi5iZXN0LnJlYWwpICsgJzwvcD48cCBjbGFzcz0ici1zIj5FcyBzdSBjb3N0ZSByZWFsIGVuICcgKyB5cnMgKyAnIGHDsW9zOiBpbnRlcmVzZXMsIGNvbWlzacOzbiBkZSBhcGVydHVyYSB5IHZpbmN1bGFjaW9uZXMuIFBpZGUgYWwgbWVub3MgZG9zIG9mZXJ0YXMgbcOhcyBwYXJhIHRlbmVyIGNvbiBxdcOpIG5lZ29jaWFyLjwvcD48L2Rpdj4nOwogICAgICB9IGVsc2UgewogICAgICAgIHZhciBzb3J0ZWQgPSBSLmxpc3Quc2xpY2UoKS5zb3J0KGZ1bmN0aW9uIChhLCBiKSB7IHJldHVybiBhLnJlYWwgLSBiLnJlYWw7IH0pLCBkbWF4ID0gc29ydGVkW3NvcnRlZC5sZW5ndGggLSAxXS5yZWFsIC0gUi5iZXN0LnJlYWw7CiAgICAgICAgaWYgKHNvcnRlZFsxXS5yZWFsIC0gc29ydGVkWzBdLnJlYWwgPCAxKSBoICs9ICc8ZGl2IGNsYXNzPSJ2ZXJkaWN0Ij4nICsgY2hpcCArICc8cCBjbGFzcz0ici10IiB0YWJpbmRleD0iLTEiPlR1cyBvZmVydGFzIGN1ZXN0YW4gcHLDoWN0aWNhbWVudGUgbG8gbWlzbW88L3A+PHAgY2xhc3M9InItcyI+Q29udGFuZG8gaW50ZXJlc2VzLCBjb21pc2nDs24gZGUgYXBlcnR1cmEgeSB2aW5jdWxhY2lvbmVzIGR1cmFudGUgJyArIHlycyArICcgYcOxb3MnICsgKGRtYXggPj0gMSA\/ICcsIGxhIG3DoXMgY2FyYSBjdWVzdGEgJyArIGV1cihkbWF4KSArICcgbcOhcycgOiAnJykgKyAnLiBVc2EgY3VhbHF1aWVyYSBkZSBlbGxhcyBwYXJhIHBlZGlyIHVuYSByZWJhamEuPC9wPjwvZGl2Pic7CiAgICAgICAgZWxzZSB7IHRhZ2dlZCA9IFIuYmVzdDsgaCArPSAnPGRpdiBjbGFzcz0idmVyZGljdCI+JyArIGNoaXAgKyAnPHAgY2xhc3M9InItdCIgdGFiaW5kZXg9Ii0xIj4nICsgKG5hbWVkKFIuYmVzdCkgPyBlc2MoUi5iZXN0Lm5hbWUpIDogJ0xhICcgKyBlc2MoUi5iZXN0Lm5hbWUpKSArICcgdGUgYWhvcnJhICcgKyBldXIoZG1heCkgKyAnPC9wPjxwIGNsYXNzPSJyLXMiPkZyZW50ZSBhIGxhIG9mZXJ0YSBtw6FzIGNhcmEsIGNvbnRhbmRvIGludGVyZXNlcywgY29taXNpw7NuIGRlIGFwZXJ0dXJhIHkgdmluY3VsYWNpb25lcyBkdXJhbnRlICcgKyB5cnMgKyAnIGHDsW9zLjwvcD48L2Rpdj4nOyB9CiAgICAgIH0KICAgICAgLyogUGVyZmlsICovCiAgICAgIGggKz0gJzxkaXYgY2xhc3M9InNlYyIgc3R5bGU9Im1hcmdpbi10b3A6MTJweCI+PGg0PlR1IHBvZGVyIGRlIG5lZ29jaWFjacOzbjwvaDQ+PHVsIGNsYXNzPSJjaGsiPic7CiAgICAgIFIuZi5mb3JFYWNoKGZ1bmN0aW9uICh4KSB7IGggKz0gJzxsaT48ZW0gY2xhc3M9IicgKyAoeFswXSA\/ICdvaycgOiAna28nKSArICciPicgKyAoeFswXSA\/IEkuY2hlY2sgOiBJLmFsZXJ0KSArICc8L2VtPjxzcGFuPjxiPicgKyB4WzFdICsgJzwvYj48c21hbGw+JyArIHhbMl0gKyAnPC9zbWFsbD48L3NwYW4+PC9saT4nOyB9KTsKICAgICAgaCArPSAnPC91bD4nICsgKFMuc2l0ICE9PSAnZW1waWV6bycgPyAnPHAgY2xhc3M9Im5vdGUiPkVsIGVuZGV1ZGFtaWVudG8gc2UgY2FsY3VsYSBjb24gbGEgY3VvdGEgbcOhcyBhbHRhIGRlIGxhIG9wY2nDs24gbcOhcyBiYXJhdGEuPC9wPicgOiAnJykgKyAnPC9kaXY+JzsKICAgICAgLyogT2ZlcnRhcyAqLwogICAgICBpZiAoUy5zaXQgIT09ICdlbXBpZXpvJykgewogICAgICAgIGggKz0gJzxkaXYgY2xhc3M9InNlYyI+PGg0PkNvc3RlIHJlYWwgZGUgY2FkYSBvcGNpw7NuPC9oND48ZGl2IGNsYXNzPSJtb2RzIj4nOwogICAgICAgIFIubGlzdC5mb3JFYWNoKGZ1bmN0aW9uIChyKSB7CiAgICAgICAgICBpZiAoci5vLnQgIT09ICdmaWpvJykgaGFzVmFyID0gdHJ1ZTsKICAgICAgICAgIHZhciBic3QgPSByID09PSB0YWdnZWQ7CiAgICAgICAgICBoICs9ICc8ZGl2IGNsYXNzPSJtb2QnICsgKGJzdCA\/ICcgYmVzdCcgOiAnJykgKyAnIj48ZGl2IGNsYXNzPSJtb2QtaCI+PGI+JyArIGVzYyhyLm5hbWUpICsgJzwvYj4nICsgKGJzdCA\/ICc8c3BhbiBjbGFzcz0idGFnIj4nICsgKGMgPyAnTWVqb3Igb3BjacOzbicgOiAnTcOhcyBiYXJhdGEnKSArICc8L3NwYW4+JyA6ICcnKSArICc8L2Rpdj48cCBjbGFzcz0idG90Ij4nICsgZXVyKHIucmVhbCkgKyAnIDxzbWFsbD5lbiAnICsgeXJzICsgJyBhw7Fvczwvc21hbGw+PC9wPjxkaXYgY2xhc3M9ImJhcjIiPjxzcGFuIHN0eWxlPSJ3aWR0aDonICsgTWF0aC5tYXgoNCwgTWF0aC5yb3VuZChyLnJlYWwgLyBSLm1heCAqIDEwMCkpICsgJyUiPjwvc3Bhbj48L2Rpdj4nICsgZFJvd3MociwgYyAmJiByLmsgPT09IDAsIGMgJiYgci5rID4gMCA\/IEcgOiBudWxsKSArICc8L2Rpdj4nOwogICAgICAgIH0pOwogICAgICAgIGggKz0gJzwvZGl2PjxwIGNsYXNzPSJub3RlIj5Db3N0ZSByZWFsID0gaW50ZXJlc2VzICsgY29taXNpw7NuIGRlIGFwZXJ0dXJhICsgdmluY3VsYWNpb25lcyBkdXJhbnRlIHRvZG8gZWwgcGxhem8sIGNvbiBlbCBtaXNtbyBjb3N0ZSBkZSB2aW5jdWxhY2lvbmVzIGNhZGEgYcOxby4nICsgKGMgPyAnIExvcyBnYXN0b3MgZGUgY2FtYmlhciBkZSBiYW5jbyAoY29taXNpw7NuIHBvciBhbW9ydGl6YWNpw7NuIGRlIHR1IGNvbnRyYXRvLCBjYW5jZWxhY2nDs24gcmVnaXN0cmFsIHkgdGFzYWNpw7NuKSBzb24gb3JpZW50YXRpdm9zIHkgdmFuIGFwYXJ0ZS4nIDogJycpICsgKGhhc1ZhciA\/ICcgRWwgdHJhbW8gdmFyaWFibGUgc2UgY2FsY3VsYSBjb24gZWwgRXVyw61ib3IgZGUgJyArIENGRy5ldXJNZXMgKyAnICgnICsgcHIoQ0ZHLmV1ciwgMykgKyAnKSBkdXJhbnRlIHRvZG8gZWwgcGxhem87IHNpIGNhbWJpYSwgY2FtYmlhIHR1IGN1b3RhLicgOiAnJykgKyAnPC9wPjwvZGl2Pic7CiAgICAgIH0KICAgICAgLyogUXXDqSBwZWRpciAqLwogICAgICBoICs9ICc8ZGl2IGNsYXNzPSJzZWMiPjxoND5RdcOpIHBlZGlybGUgYWwgYmFuY288L2g0Pic7CiAgICAgIGlmIChjKSB7CiAgICAgICAgdmFyIEEyID0gUi5saXN0WzBdLCBCMiA9IFIuYmVzdDsKICAgICAgICBpZiAoQjIucmVhbCA8IEEyLnJlYWwpIHsKICAgICAgICAgIHZhciBUID0gQjIucmVhbCArIChHWzBdICsgR1sxXSkgLyAyLCBnID0gZ2FwKEEyLCBSLlAsIFIubiwgVCwgdHJ1ZSk7CiAgICAgICAgICBoICs9ICc8ZGl2IGNsYXNzPSJsaSI+PHNwYW4gY2xhc3M9ImljIj4nICsgSS5pbmZvICsgJzwvc3Bhbj48cD48Yj5MbGV2YSAnICsgb2ZPZihCMikgKyAnIGEgdHUgYmFuY28uPC9iPiBUZW5pZW5kbyBlbiBjdWVudGEgbG8gcXVlIGN1ZXN0YSBjYW1iaWFyLCB0dSBiYW5jbyB0ZW5kcsOtYSBxdWUgJyArIChnICE9PSBudWxsICYmIGcgPiAwID8gJ2JhamFydGUgZWwgdGlwbyB1bm9zICcgKyBwcihnLCAyKS5yZXBsYWNlKCcgJScsICcgcHVudG9zJykgOiAnbWVqb3JhciB0dXMgY29uZGljaW9uZXMnKSArICcgcGFyYSBxdWUgbm8gdGUgY29tcGVuc2UgaXJ0ZS4gU2kgYWNlcHRhLCBwdWVkZXMgbmVnb2NpYXJsbyBjb21vIHVuYSBub3ZhY2nDs24uPC9wPjwvZGl2Pic7CiAgICAgICAgfQogICAgICAgIHZhciBkMSA9IEEyLnJlYWwgLSBjb3N0KEEyLm8sIFIuUCwgUi5uLCB0cnVlLCAwLjEpLnJlYWw7CiAgICAgICAgaCArPSAnPGRpdiBjbGFzcz0ibGkiPjxzcGFuIGNsYXNzPSJpYyI+JyArIEkuaW5mbyArICc8L3NwYW4+PHA+PGI+Q2FkYSBkw6ljaW1hIGN1ZW50YS48L2I+IFJlYmFqYXIgMCwxMCBwdW50b3MgZWwgdGlwbyBkZSB0dSBoaXBvdGVjYSB0ZSBhaG9ycmFyw61hIHVub3MgJyArIGV1cihkMSkgKyAnIGVuIGxvIHF1ZSB0ZSBxdWVkYSBwb3IgcGFnYXIuPC9wPjwvZGl2Pic7CiAgICAgIH0gZWxzZSBpZiAoUy5zaXQgIT09ICdlbXBpZXpvJyAmJiBSLmxpc3QubGVuZ3RoID4gMSkgewogICAgICAgIFIubGlzdC5mb3JFYWNoKGZ1bmN0aW9uIChyKSB7CiAgICAgICAgICBpZiAociA9PT0gUi5iZXN0IHx8IHIucmVhbCAtIFIuYmVzdC5yZWFsIDwgMSkgcmV0dXJuOwogICAgICAgICAgdmFyIGcgPSBnYXAociwgUi5QLCBSLm4sIFIuYmVzdC5yZWFsLCBmYWxzZSksIGRpZiA9IHIucmVhbCAtIFIuYmVzdC5yZWFsLCBleHQgPSBbXTsKICAgICAgICAgIGlmIChyLmFwID4gMCkgZXh0LnB1c2goJ3F1aXRhcnRlIGxhIGNvbWlzacOzbiBkZSBhcGVydHVyYSAoJyArIGV1cihyLmFwKSArICcpJyk7CiAgICAgICAgICBpZiAoci52aW4gPiAwKSBleHQucHVzaCgnYWJhcmF0YXIgbGFzIHZpbmN1bGFjaW9uZXMnKTsKICAgICAgICAgIGggKz0gJzxkaXYgY2xhc3M9ImxpIj48c3BhbiBjbGFzcz0iaWMiPicgKyBJLmluZm8gKyAnPC9zcGFuPjxwPjxiPlVzYSAnICsgb2ZPZihSLmJlc3QpICsgJyBjb21vIHBhbGFuY2EgY29uICcgKyBiYW5rT2YocikgKyAnLjwvYj4gTGEgZGlmZXJlbmNpYSBlcyBkZSB1bm9zICcgKyBldXIoZGlmKSArICcgZW4gJyArIHlycyArICcgYcOxb3MuIFBhcmEgaWd1YWxhcmxhLCAnICsgYmFua09mKHIpICsgJyB0ZW5kcsOtYSBxdWUgJyArIChnICE9PSBudWxsID8gJ2JhamFyIGVsIHRpcG8gdW5vcyAnICsgcHIoZywgMikucmVwbGFjZSgnICUnLCAnIHB1bnRvcycpIDogJ21lam9yYXIgbXVjaG8gc3VzIGNvbmRpY2lvbmVzJykgKyAoZXh0Lmxlbmd0aCA\/ICcsIG8gY29tYmluYXIgdW5hIHJlYmFqYSBtZW5vciBjb24gJyArIGV4dC5qb2luKCcgeSAnKSA6ICcnKSArICcuPC9wPjwvZGl2Pic7CiAgICAgICAgfSk7CiAgICAgICAgdmFyIGQyID0gUi5iZXN0LnJlYWwgLSBjb3N0KFIuYmVzdC5vLCBSLlAsIFIubiwgZmFsc2UsIDAuMSkucmVhbDsKICAgICAgICBoICs9ICc8ZGl2IGNsYXNzPSJsaSI+PHNwYW4gY2xhc3M9ImljIj4nICsgSS5pbmZvICsgJzwvc3Bhbj48cD48Yj5DYWRhIGTDqWNpbWEgY3VlbnRhLjwvYj4gUmViYWphciAwLDEwIHB1bnRvcyBlbCB0aXBvIGRlICcgKyBvZk9mKFIuYmVzdCkgKyAnIHRlIGFob3JyYXLDrWEgdW5vcyAnICsgZXVyKGQyKSArICcgZW4gdG90YWwuPC9wPjwvZGl2Pic7CiAgICAgIH0gZWxzZSBpZiAoUy5zaXQgIT09ICdlbXBpZXpvJykgewogICAgICAgIHZhciBkMCA9IFIuYmVzdC5yZWFsIC0gY29zdChSLmJlc3QubywgUi5QLCBSLm4sIGZhbHNlLCAwLjEpLnJlYWw7CiAgICAgICAgaCArPSAnPGRpdiBjbGFzcz0ibGkiPjxzcGFuIGNsYXNzPSJpYyI+JyArIEkuaW5mbyArICc8L3NwYW4+PHA+PGI+Q2FkYSBkw6ljaW1hIGN1ZW50YS48L2I+IFJlYmFqYXIgMCwxMCBwdW50b3MgZWwgdGlwbyBkZSBlc3RhIG9mZXJ0YSB0ZSBhaG9ycmFyw61hIHVub3MgJyArIGV1cihkMCkgKyAnIGVuIHRvdGFsLiBDb24gb3RyYXMgb2ZlcnRhcyBwb3IgZXNjcml0byB0ZW5kcsOhcyBhcmd1bWVudG9zIHBhcmEgcGVkaXJsby48L3A+PC9kaXY+JzsKICAgICAgfSBlbHNlIHsKICAgICAgICBoICs9ICc8ZGl2IGNsYXNzPSJsaSI+PHNwYW4gY2xhc3M9ImljIj4nICsgSS5pbmZvICsgJzwvc3Bhbj48cD48Yj5QaWRlIGFsIG1lbm9zIHRyZXMgb2ZlcnRhcy48L2I+IENhZGEgYmFuY28gZGViZSBkYXJ0ZSBsYSBGRUlOLCBsYSBmaWNoYSBjb24gZWwgVElOLCBsYSBUQUUsIGxhcyBjb21pc2lvbmVzIHkgbGFzIHZpbmN1bGFjaW9uZXMuIENvbiBvZmVydGFzIHBvciBlc2NyaXRvIHRpZW5lcyBhcmd1bWVudG9zIHBhcmEgbmVnb2NpYXIuPC9wPjwvZGl2Pic7CiAgICAgIH0KICAgICAgdmFyIGFwVCA9IDA7IGlmIChTLnNpdCAhPT0gJ2VtcGllem8nKSBSLmxpc3QuZm9yRWFjaChmdW5jdGlvbiAocikgeyBhcFQgKz0gci5hcDsgfSk7CiAgICAgIGlmIChTLnNpdCA9PT0gJ2VtcGllem8nIHx8IGFwVCA+IDApIGggKz0gJzxkaXYgY2xhc3M9ImxpIj48c3BhbiBjbGFzcz0iaWMiPicgKyBJLmluZm8gKyAnPC9zcGFuPjxwPjxiPlBpZGUgcXVlIHRlIHF1aXRlbiBsYSBjb21pc2nDs24gZGUgYXBlcnR1cmEuPC9iPiBTdWVsZSBzZXIgZGUgbGFzIG3DoXMgZsOhY2lsZXMgZGUgbmVnb2NpYXIgc2kgdHUgcGVyZmlsIGVzIHNvbHZlbnRlIHkgdGllbmVzIG90cmFzIG9mZXJ0YXMuPC9wPjwvZGl2Pic7CiAgICAgIGggKz0gJzxkaXYgY2xhc3M9ImxpIj48c3BhbiBjbGFzcz0iaWMiPicgKyBJLmluZm8gKyAnPC9zcGFuPjxwPjxiPlJldmlzYSBsYXMgdmluY3VsYWNpb25lcy48L2I+IEFjZXB0YSB1bmEgYm9uaWZpY2FjacOzbiBzb2xvIHNpIGxvIHF1ZSB0ZSBhaG9ycmFzIGVuIGludGVyZXNlcyBzdXBlcmEgbG8gcXVlIHBhZ2FzIHBvciBsb3MgcHJvZHVjdG9zLiBTaSBlbCBzZWd1cm8gZXMgb2JsaWdhdG9yaW8sIGxhIExleSA1LzIwMTkgZGUgY3LDqWRpdG8gaW5tb2JpbGlhcmlvIG9ibGlnYSBhbCBiYW5jbyBhIGFjZXB0YXIgdW5hIHDDs2xpemEgZGUgb3RyYSBhc2VndXJhZG9yYSBjb24gY29iZXJ0dXJhcyBlcXVpdmFsZW50ZXMuPC9wPjwvZGl2Pic7CiAgICAgIGggKz0gJzxkaXYgY2xhc3M9ImxpIj48c3BhbiBjbGFzcz0iaWMiPicgKyBJLmluZm8gKyAnPC9zcGFuPjxwPjxiPicgKyAoYyA\/ICdTaSBjYW1iaWFzIGRlIGhpcG90ZWNhLCBuZWdvY2lhIGxhIGNvbWlzacOzbiBwb3IgYW1vcnRpemFjacOzbiBhbnRpY2lwYWRhIGRlIGxhIG51ZXZhLicgOiAnTmVnb2NpYSBsYSBjb21pc2nDs24gcG9yIGFtb3J0aXphY2nDs24gYW50aWNpcGFkYS4nKSArICc8L2I+IExhIExleSA1LzIwMTkgZmlqYSB1bm9zIG3DoXhpbW9zOiBlbiBmaWpvLCBoYXN0YSBlbCAyICUgbG9zIDEwIHByaW1lcm9zIGHDsW9zIHkgZWwgMSw1ICUgZGVzcHXDqXM7IGVuIHZhcmlhYmxlLCBlbCAwLDI1ICUgbG9zIDMgcHJpbWVyb3MgYcOxb3MgbyBlbCAwLDE1ICUgbG9zIDUgcHJpbWVyb3MsIHkgbmFkYSBkZXNwdcOpcy48L3A+PC9kaXY+JzsKICAgICAgaWYgKGMpIHsgaWYgKGNhbWJpYSkgaCArPSAnPGRpdiBjbGFzcz0ibGkiPjxzcGFuIGNsYXNzPSJpYyI+JyArIEkuYWxlcnQgKyAnPC9zcGFuPjxwPjxiPlNpIHR1IGJhbmNvIG5vIG1lam9yYSB0dXMgY29uZGljaW9uZXMsPC9iPiBsYSBhbHRlcm5hdGl2YSBlcyBjb250cmF0YXIgdW5hIGhpcG90ZWNhIG51ZXZhIGVuIG90cm8gYmFuY28geSBjYW5jZWxhciBsYSBhY3R1YWwuIEN1ZW50YSBjb24gbGEgY29taXNpw7NuIHBvciBhbW9ydGl6YWNpw7NuIGRlIHR1IGNvbnRyYXRvLCBsYSBjYW5jZWxhY2nDs24gcmVnaXN0cmFsIHkgbGEgdGFzYWNpw7NuIGRlIGxhIHZpdmllbmRhLjwvcD48L2Rpdj4nOyB9CiAgICAgIGVsc2UgaCArPSAnPGRpdiBjbGFzcz0ibGkiPjxzcGFuIGNsYXNzPSJpYyI+JyArIEkuYWxlcnQgKyAnPC9zcGFuPjxwPjxiPk5vIGZpcm1lcyBjb24gcHJpc2FzLjwvYj4gRWwgYmFuY28gZGViZSBlbnRyZWdhcnRlIGxhIEZFSU4geSBsYSBGaUFFIGFsIG1lbm9zIDEwIGTDrWFzIG5hdHVyYWxlcyBhbnRlcyBkZSBsYSBmaXJtYTogZXMgdHUgbWFyZ2VuIHBhcmEgY29tcGFyYXIgeSBuZWdvY2lhci48L3A+PC9kaXY+JzsKICAgICAgaCArPSAnPC9kaXY+JzsKICAgICAgLyogRWplbXBsb3MgcmVwcmVzZW50YXRpdm9zICovCiAgICAgIGggKz0gJzxkaXYgY2xhc3M9ImVqIj48Yj5FamVtcGxvcyByZXByZXNlbnRhdGl2b3M8L2I+JyArIENGRy5lai5tYXAoZnVuY3Rpb24gKGUpIHsgcmV0dXJuICc8cD48c3Ryb25nPicgKyBlWzBdICsgJzo8L3N0cm9uZz4gJyArIGVbMV0gKyAnPC9wPic7IH0pLmpvaW4oJycpICsgJzxwPicgKyBDRkcuZWpOb3RhICsgJzwvcD48L2Rpdj4nOwogICAgICAvKiBDVEEgKi8KICAgICAgdmFyIGtleSA9IGMgPyAndGVuZ28nIDogKFMuc2l0ID09PSAnZW1waWV6bycgPyAnZW1waWV6bycgOiAoUi5sdmwgPT09IDAgPyAnc29saWRvJyA6ICdkdWRhcycpKTsKICAgICAgdmFyIGsgPSBDRkcuY3RhW2tleV07CiAgICAgIGggKz0gJzxkaXYgY2xhc3M9ImN0YSI+PHAgY2xhc3M9ImgiPicgKyBrWzJdICsgJzwvcD48cCBjbGFzcz0idCI+JyArIGtbM10gKyAnPC9wPjxhIGNsYXNzPSJidG4iIGhyZWY9IicgKyBrWzFdICsgJyIgdGFyZ2V0PSJfYmxhbmsiIHJlbD0ibm9vcGVuZXIiPicgKyBrWzBdICsgJzwvYT48L2Rpdj4nOwogICAgICBoICs9ICc8ZGl2IGNsYXNzPSJhY3RzIj48YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImJ0biBvIiBkYXRhLWFjdD0icmVzdGFydCI+SGFjZXIgb3RybyBjw6FsY3VsbzwvYnV0dG9uPicgKyBiYWNrQnRuKCdDYW1iaWFyIG1pcyBkYXRvcycpICsgJzwvZGl2Pic7CiAgICAgIHJldHVybiBoOwogICAgfQogICAgZnVuY3Rpb24gcmVuZGVyKGtlZXApIHsKICAgICAgdmFyIHN0ID0gc3RwKCk7CiAgICAgIGlmIChTLmkgPiBzdC5sZW5ndGggLSAxKSBTLmkgPSBzdC5sZW5ndGggLSAxOwogICAgICB2YXIgeSA9IGtlZXAgPyB3aW5kb3cucGFnZVlPZmZzZXQgOiAwLCBmaWQgPSBrZWVwICYmIHJvb3QuYWN0aXZlRWxlbWVudCA\/IHJvb3QuYWN0aXZlRWxlbWVudCA6IG51bGw7CiAgICAgIHZhciBzZWwgPSBmaWQgJiYgZmlkLmdldEF0dHJpYnV0ZSA\/IChmaWQuZ2V0QXR0cmlidXRlKCdkYXRhLXMnKSA\/ICdbZGF0YS1zPSInICsgZmlkLmdldEF0dHJpYnV0ZSgnZGF0YS1zJykgKyAnIl1bZGF0YS12PSInICsgZmlkLmdldEF0dHJpYnV0ZSgnZGF0YS12JykgKyAnIl0nIDogKGZpZC5nZXRBdHRyaWJ1dGUoJ2RhdGEtYWN0JykgPT09ICdhZGQnID8gJy5hZGQnIDogbnVsbCkpIDogbnVsbDsKICAgICAgYmQuaW5uZXJIVE1MID0gJzxkaXYgY2xhc3M9IicgKyAoa2VlcCA\/ICcnIDogJ2FuaW0nKSArICciPicgKyAoUy5kb25lID8gdmlld1Jlc3VsdCgpIDogdmlld1N0ZXAoc3RbUy5pXSkpICsgJzwvZGl2Pic7CiAgICAgIHByb2dyZXNzKCk7CiAgICAgIGlmIChrZWVwKSB7IHZhciBlbCA9IHNlbCA\/IHJvb3QucXVlcnlTZWxlY3RvcihzZWwpIDogbnVsbDsgaWYgKGVsKSB7IHRyeSB7IGVsLmZvY3VzKHsgcHJldmVudFNjcm9sbDogdHJ1ZSB9KTsgfSBjYXRjaCAoZSkgeyBlbC5mb2N1cygpOyB9IH0gd2luZG93LnNjcm9sbFRvKHdpbmRvdy5wYWdlWE9mZnNldCwgeSk7IHJldHVybjsgfQogICAgICBpZiAoc3RhcnRlZCkgewogICAgICAgIHZhciBmID0gYmQucXVlcnlTZWxlY3RvcignW3RhYmluZGV4PSItMSJdJyk7CiAgICAgICAgaWYgKGYpIHsgdHJ5IHsgZi5mb2N1cyh7IHByZXZlbnRTY3JvbGw6IHRydWUgfSk7IH0gY2F0Y2ggKGUpIHsgZi5mb2N1cygpOyB9IH0KICAgICAgICBpZiAoaG9zdC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3AgPCAwKSBob3N0LnNjcm9sbEludG9WaWV3KHsgYmVoYXZpb3I6ICdzbW9vdGgnLCBibG9jazogJ3N0YXJ0JyB9KTsKICAgICAgfQogICAgfQogICAgZnVuY3Rpb24gcmVmcmVzaCgpIHsgdmFyIGIgPSByb290LnF1ZXJ5U2VsZWN0b3IoJ1tkYXRhLWFjdD0ibmV4dCJdJyk7IGlmIChiKSBiLmRpc2FibGVkID0gIW9rKHN0cCgpW1MuaV0pOyB2YXIgZXIgPSByb290LnF1ZXJ5U2VsZWN0b3IoJy5lcnInKTsgaWYgKGVyKSBlci50ZXh0Q29udGVudCA9IFMuZG9uZSA\/ICcnIDogd2h5KHN0cCgpW1MuaV0pOyB9CiAgICBmdW5jdGlvbiBuZXh0KCkgeyB2YXIgc3QgPSBzdHAoKTsgaWYgKFMuaSA+PSBzdC5sZW5ndGggLSAxKSBTLmRvbmUgPSB0cnVlOyBlbHNlIFMuaSsrOyByZW5kZXIoKTsgfQogICAgcm9vdC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uIChlKSB7CiAgICAgIHZhciBiID0gZS50YXJnZXQuY2xvc2VzdCgnYnV0dG9uJyk7CiAgICAgIGlmICghYiB8fCBiLmRpc2FibGVkKSByZXR1cm47CiAgICAgIHN0YXJ0ZWQgPSB0cnVlOwogICAgICBpZiAoYi5oYXNBdHRyaWJ1dGUoJ2RhdGEtcycpKSB7CiAgICAgICAgdmFyIGtleSA9IGIuZ2V0QXR0cmlidXRlKCdkYXRhLXMnKSwgdmFsID0gYi5nZXRBdHRyaWJ1dGUoJ2RhdGEtdicpOwogICAgICAgIGlmIChrZXkgPT09ICdzaXQnICYmIFMuc2l0ICE9PSB2YWwpIHsgUy5vZiA9IFtuZXdPZigpXTsgaWYgKHZhbCA9PT0gJ3RlbmdvJykgUy5vZi5wdXNoKG5ld09mKCkpOyB9CiAgICAgICAgc2V0dihrZXksIHZhbCk7CiAgICAgICAgaWYgKC9eb1xkK1wudCQvLnRlc3Qoa2V5KSkgewogICAgICAgICAgdmFyIG8gPSBTLm9mWytrZXkuc2xpY2UoMSwga2V5LmluZGV4T2YoJy4nKSldOwogICAgICAgICAgby55MSA9IChjdXIoKSAmJiBrZXkgPT09ICdvMC50JykgPyAnJyA6ICh2YWwgPT09ICdtaXh0bycgPyAnNScgOiAodmFsID09PSAndmFyaWFibGUnID8gJzEnIDogJycpKTsKICAgICAgICAgIHJlbmRlcih0cnVlKTsgcmV0dXJuOwogICAgICAgIH0KICAgICAgICB2YXIgYnMgPSByb290LnF1ZXJ5U2VsZWN0b3JBbGwoJ1tkYXRhLXM9IicgKyBrZXkgKyAnIl0nKTsKICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGJzLmxlbmd0aDsgaSsrKSBic1tpXS5zZXRBdHRyaWJ1dGUoJ2FyaWEtcHJlc3NlZCcsIFN0cmluZyhic1tpXS5nZXRBdHRyaWJ1dGUoJ2RhdGEtdicpID09PSB2YWwpKTsKICAgICAgICByZWZyZXNoKCk7IHJldHVybjsKICAgICAgfQogICAgICB2YXIgYWN0ID0gYi5nZXRBdHRyaWJ1dGUoJ2RhdGEtYWN0Jyk7CiAgICAgIGlmIChhY3QgPT09ICduZXh0JykgbmV4dCgpOwogICAgICBpZiAoYWN0ID09PSAnYmFjaycpIHsgaWYgKFMuZG9uZSkgUy5kb25lID0gZmFsc2U7IGVsc2UgaWYgKFMuaSA+IDApIFMuaS0tOyByZW5kZXIoKTsgfQogICAgICBpZiAoYWN0ID09PSAncmVzdGFydCcpIHsgUyA9IGZyZXNoKCk7IHJlbmRlcigpOyB9CiAgICAgIGlmIChhY3QgPT09ICdhZGQnKSB7IFMub2YucHVzaChuZXdPZigpKTsgcmVuZGVyKHRydWUpOyB2YXIgaW5zID0gcm9vdC5xdWVyeVNlbGVjdG9yQWxsKCcub2YnKTsgdmFyIGxhc3QgPSBpbnNbaW5zLmxlbmd0aCAtIDFdOyBpZiAobGFzdCkgeyB2YXIgZmkgPSBsYXN0LnF1ZXJ5U2VsZWN0b3IoJ2lucHV0Jyk7IGlmIChmaSkgeyB0cnkgeyBmaS5mb2N1cyh7IHByZXZlbnRTY3JvbGw6IHRydWUgfSk7IH0gY2F0Y2ggKHgpIHsgZmkuZm9jdXMoKTsgfSB9IGlmIChsYXN0LnNjcm9sbEludG9WaWV3KSBsYXN0LnNjcm9sbEludG9WaWV3KHsgYmVoYXZpb3I6ICdzbW9vdGgnLCBibG9jazogJ2NlbnRlcicgfSk7IH0gfQogICAgICBpZiAoYWN0ID09PSAncm0nKSB7IFMub2Yuc3BsaWNlKCtiLmdldEF0dHJpYnV0ZSgnZGF0YS1rJyksIDEpOyByZW5kZXIodHJ1ZSk7IHZhciBhZCA9IHJvb3QucXVlcnlTZWxlY3RvcignLmFkZCcpIHx8IHJvb3QucXVlcnlTZWxlY3RvcignW2RhdGEtYWN0PSJuZXh0Il0nKTsgaWYgKGFkKSB7IHRyeSB7IGFkLmZvY3VzKHsgcHJldmVudFNjcm9sbDogdHJ1ZSB9KTsgfSBjYXRjaCAoeCkgeyBhZC5mb2N1cygpOyB9IH0gfQogICAgfSk7CiAgICBmdW5jdGlvbiBvbkZpZWxkKGUpIHsKICAgICAgdmFyIGYgPSBlLnRhcmdldC5nZXRBdHRyaWJ1dGUgJiYgZS50YXJnZXQuZ2V0QXR0cmlidXRlKCdkYXRhLWYnKTsKICAgICAgaWYgKCFmKSByZXR1cm47CiAgICAgIHNldHYoZiwgZS50YXJnZXQudmFsdWUpOwogICAgICBpZiAoZi5pbmRleE9mKCcubicpID4gMCkgeyB2YXIgayA9ICtmLnNsaWNlKDEsIGYuaW5kZXhPZignLicpKSwgdCA9IGUudGFyZ2V0LmNsb3Nlc3QoJy5vZicpOyBpZiAodCkgeyB2YXIgaGIgPSB0LnF1ZXJ5U2VsZWN0b3IoJy5vZi1oIGInKTsgaWYgKGhiKSBoYi50ZXh0Q29udGVudCA9IG9mTmFtZShTLm9mW2tdLCBrKTsgfSB9CiAgICAgIHJlZnJlc2goKTsKICAgIH0KICAgIHJvb3QuYWRkRXZlbnRMaXN0ZW5lcignaW5wdXQnLCBvbkZpZWxkKTsKICAgIHJvb3QuYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgb25GaWVsZCk7CiAgICByb290LmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBmdW5jdGlvbiAoZSkgewogICAgICBpZiAoZS5rZXkgPT09ICdFbnRlcicgJiYgZS50YXJnZXQudGFnTmFtZSA9PT0gJ0lOUFVUJykgewogICAgICAgIHZhciBiID0gcm9vdC5xdWVyeVNlbGVjdG9yKCdbZGF0YS1hY3Q9Im5leHQiXScpOwogICAgICAgIGlmIChiICYmICFiLmRpc2FibGVkKSB7IHN0YXJ0ZWQgPSB0cnVlOyBuZXh0KCk7IH0KICAgICAgfQogICAgfSk7CiAgICByZW5kZXIoKTsKICB9CiAgZnVuY3Rpb24gaW5pdCgpIHsgdmFyIGhzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnW2RhdGEtbmgtdG9vbF0nKTsgZm9yICh2YXIgaSA9IDA7IGkgPCBocy5sZW5ndGg7IGkrKykgbW91bnQoaHNbaV0pOyB9CiAgaWYgKGRvY3VtZW50LnJlYWR5U3RhdGUgPT09ICdsb2FkaW5nJykgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignRE9NQ29udGVudExvYWRlZCcsIGluaXQpOyBlbHNlIGluaXQoKTsKfSkoKTsK\";var c=decodeURIComponent(escape(window.atob(s)));(new Function(c))();})();<\/script>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>En este art\u00edculo aprender\u00e1s:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u00bfQu\u00e9 puedes negociar en una hipoteca?<\/li>\n\n\n\n<li>\u00bfC\u00f3mo negociar una hipoteca con el banco paso a paso?<\/li>\n\n\n\n<li>El l\u00edmite de negociar solo: \u00bfPor qu\u00e9 un br\u00f3ker consigue lo que t\u00fa no puedes?<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u00bfQu\u00e9 puedes negociar en una hipoteca?<\/h2>\n\n\n\n<p class=\"has-text-align-center wp-block-paragraph\"><em>En una hipoteca, puedes negociar el tipo de inter\u00e9s, la comisi\u00f3n de apertura, los productos vinculados del banco y el plazo y las comisiones por amortizaci\u00f3n anticipada.<\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Al contrario de lo que mucha gente imagina, <strong>la negociaci\u00f3n hipotecaria es una pr\u00e1ctica habitual<\/strong> que los bancos esperan, y que los clientes bien preparados siempre ejercen.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Por eso, saber c\u00f3mo negociar una hipoteca con el banco paso a paso es crucial; estos son los <strong>principales elementos que recomendamos poner encima de la mesa:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Tipo de inter\u00e9s: Fijo, variable o mixto.<\/strong> Cada modalidad tiene su margen de negociaci\u00f3n en funci\u00f3n de lo que aportes y lo que necesites.<\/li>\n\n\n\n<li><strong>Comisi\u00f3n de apertura:<\/strong> En muchos bancos es directamente <strong>eliminable si tienes un buen perfil.<\/strong><\/li>\n\n\n\n<li><strong>Productos combinados y vinculados:<\/strong> Seguros de hogar, vida, tarjetas, planes de pensiones. No los aceptes sin calcular su coste real y ten siempre preparado un \u00abplan B\u00bb. El banco <strong>no puede obligarte a escoger sus productos vinculados<\/strong>, aunque pueden subirte los tipos de inter\u00e9s si no los contratas.<\/li>\n\n\n\n<li>Plazo de amortizaci\u00f3n: Alargar el tiempo de pago reduce el esfuerzo econ\u00f3mico mensual, pero <strong>incrementa considerablemente el coste final del pr\u00e9stamo debido a la acumulaci\u00f3n de intereses.<\/strong><\/li>\n\n\n\n<li>Comisiones por amortizaci\u00f3n anticipada: Si tienes intenci\u00f3n de realizar <strong>ingresos extra para reducir tu deuda<\/strong>, aseg\u00farate de negociar la eliminaci\u00f3n de penalizaciones para que ahorrarte intereses no te genere un coste adicional.<\/li>\n<\/ul>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img decoding=\"async\" src=\"data:image\/gif,GIF89a%01%00%01%00%80%00%00%00%00%00%FF%FF%FF%21%F9%04%01%00%00%00%00%2C%00%00%00%00%01%00%01%00%00%02%01D%00%3B\" data-layzr=\"https:\/\/static0.housfy.com\/prod\/blog\/images\/2022\/03\/07133204\/Como-negociar-una-hipoteca-con-el-banco-paso-a-paso-2-1.png\" alt=\"C\u00f3mo negociar una hipoteca con el banco paso a paso\" class=\"wp-image-69344\" title=\"- Housfy\"><\/figure>\n<\/div>\n\n\n<h2 class=\"wp-block-heading\">\u00bfC\u00f3mo negociar una hipoteca con el banco paso a paso?<\/h2>\n\n\n\n<p class=\"has-text-align-center wp-block-paragraph\"><em>Para negociar con \u00e9xito, debes preparar tu perfil, comparar ofertas para presionar al banco, revisar vinculaciones y comisiones, y elegir el momento comercial estrat\u00e9gico.<\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A continuaci\u00f3n, te mostramos cu\u00e1l es un <strong>buen m\u00e9todo de negociaci\u00f3n hipotecaria<\/strong> seg\u00fan nuestros expertos en el sector.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Paso 1: Ordena tu perfil financiero antes de hablar con ning\u00fan banco<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Lo primero que debes hacer antes de sentarte a hablar con ning\u00fan banco es <strong>saber c\u00f3mo te ven ellos y qu\u00e9 van a analizar<\/strong> para afrontar la negociaci\u00f3n de hipotecas.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">En pleno 2026, las entidades financieras analizan <strong>4 variables tuyas:<\/strong><\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><td><strong>Factor que analizan<\/strong><\/td><td><strong>Requisito ideal del banco<\/strong><\/td><\/tr><\/thead><tbody><tr><td><strong>Ratio de endeudamiento<\/strong><\/td><td>La cuota de la hipoteca no debe superar el <strong>35%-40% de tus ingresos netos<\/strong> mensuales.<\/td><\/tr><tr><td><strong>Estabilidad de ingresos<\/strong><\/td><td>Contar con un <strong>contrato indefinido<\/strong> o demostrar una antig\u00fcedad s\u00f3lida si eres aut\u00f3nomo.<\/td><\/tr><tr><td><strong>Ahorros propios<\/strong><\/td><td>Disponer de un <strong>30%-32% del valor<\/strong> (20% para la entrada y 10%-12% para <a href=\"https:\/\/housfy.com\/blog\/gastos-de-comprar-una-vivienda-sin-hipoteca\/\" data-type=\"link\" data-id=\"https:\/\/housfy.com\/blog\/gastos-de-comprar-una-vivienda-sin-hipoteca\/\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>gastos adicionales aparte de la hipoteca<\/strong><\/a>).<\/td><\/tr><tr><td><strong>Historial crediticio<\/strong><\/td><td><strong>Tener un expediente impecable;<\/strong> sin impagos registrados en ficheros de morosos como ASNEF y con un nivel de deuda moderado en tu informe de la CIRBE, la Central de Informaci\u00f3n de Riesgos del Banco de Espa\u00f1a.<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<ul class=\"wp-block-list\">\n<li><em><strong>Nota importante: <\/strong>Cuanto <strong>mejor sea tu perfil en estos 4 puntos, mayor ser\u00e1 tu poder de negociaci\u00f3n.<\/strong> El banco quiere clientes solventes; demostr\u00e1rselo es tu primer argumento.<\/em><\/li>\n<\/ul>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img decoding=\"async\" src=\"data:image\/gif,GIF89a%01%00%01%00%80%00%00%00%00%00%FF%FF%FF%21%F9%04%01%00%00%00%00%2C%00%00%00%00%01%00%01%00%00%02%01D%00%3B\" data-layzr=\"https:\/\/static0.housfy.com\/prod\/blog\/images\/2022\/03\/07134615\/Como-negociar-una-hipoteca-con-el-banco-paso-a-paso-4-1.png\" alt=\"C\u00f3mo negociar una hipoteca con el banco paso a paso\" class=\"wp-image-69346\" title=\"- Housfy\"><\/figure>\n<\/div>\n\n\n<h3 class=\"wp-block-heading\">Paso 2: Compara al menos 3 ofertas de bancos distintos<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Saber c\u00f3mo negociar una hipoteca empieza por <strong>entender que la comparaci\u00f3n de ofertas lo es todo;<\/strong> si vas a un solo banco, no vas a tener argumentos para la negociaci\u00f3n.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Seg\u00fan nuestros br\u00f3keres en Housfy es muy importante, si vas por libre, <strong>pedir oferta a un m\u00ednimo de 3 bancos y solicitar la<\/strong> <a href=\"https:\/\/www.notariado.org\/portal\/-\/%C2%BFqu%C3%A9-es-exactamente-la-fein-y-qu%C3%A9-debe-contener-\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>FEIN (Ficha Europea de Informaci\u00f3n Normalizada)<\/strong><\/a> en cada uno de ellos.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">La FEIN es un <strong>documento que te va a permitir comparar condiciones objetivamente<\/strong>; sin la ficha, no dispones de datos reales con los que negociar:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><td><strong>Elemento<\/strong><\/td><td><strong>\u00bfEn qu\u00e9 debes fijarte?<\/strong><\/td><\/tr><\/thead><tbody><tr><td><strong>Tipo de inter\u00e9s (TIN)<\/strong><\/td><td>Es el precio que <strong>el banco te cobra por el dinero <\/strong>prestado (sin contar otros gastos).<\/td><\/tr><tr><td><strong>TAE<\/strong><\/td><td>Es el indicador que <strong>incluye el inter\u00e9s, las comisiones y los gastos<\/strong> de los productos vinculados.<\/td><\/tr><tr><td><strong>Importe total a pagar<\/strong><\/td><td>La suma de <strong>todo el dinero que has devuelto m\u00e1s todos los intereses y gastos<\/strong> durante toda la vida del pr\u00e9stamo.<\/td><\/tr><tr><td><strong>Vinculaciones exigidas<\/strong><\/td><td>Los <strong>productos que te vinculan al contrato<\/strong> (seguros, n\u00f3mina&#8230;) para bajarte el tipo de inter\u00e9s.<\/td><\/tr><tr><td><strong>Comisiones<\/strong><\/td><td><strong>Cargos <\/strong>por apertura, cambios en el contrato (novaci\u00f3n) o por pagar la deuda antes de tiempo.<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\"><strong>Consejo pr\u00e1ctico:<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Aparte de la FEIN, te recomendamos que tambi\u00e9n pidas la <a href=\"https:\/\/edufinet.com\/creditos-y-prestamos\/que-es-y-que-contiene-la-ficha-de-advertencias-estandarizadas-fiae\/\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>Ficha de Advertencias Estandarizadas (FiAE).<\/strong><\/a> Se trata de un documento que el prestamista deber\u00e1 entregar al prestatario con una antelaci\u00f3n m\u00ednima de 10 d\u00edas naturales antes de la firma del contrato en el que se <strong>recoge la existencia de cl\u00e1usulas o elementos relevantes.<\/strong><\/p>\n<\/blockquote>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img decoding=\"async\" src=\"data:image\/gif,GIF89a%01%00%01%00%80%00%00%00%00%00%FF%FF%FF%21%F9%04%01%00%00%00%00%2C%00%00%00%00%01%00%01%00%00%02%01D%00%3B\" data-layzr=\"https:\/\/static0.housfy.com\/prod\/blog\/images\/2022\/03\/07141523\/Como-negociar-una-hipoteca-con-el-banco-paso-a-paso-5-1.png\" alt=\"C\u00f3mo negociar una hipoteca con el banco paso a paso\" class=\"wp-image-69347\" title=\"- Housfy\"><\/figure>\n<\/div>\n\n\n<h3 class=\"wp-block-heading\">Paso 3: Usa las ofertas como palanca de negociaci\u00f3n<\/h3>\n\n\n\n<p class=\"has-text-align-center wp-block-paragraph\"><strong><em>\u00abUna oferta por escrito de un banco es tu mejor argumento cuando negocies con otro\u00bb.<\/em><\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Gr\u00e1bate a fuego esta frase; <strong>las entidades bancarias compiten por captar clientes solventes<\/strong>, y una contraoferta de la competencia siempre te da ventaja en la negociaci\u00f3n hipotecaria.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">La clave es <strong>presentarla con naturalidad, sin ultim\u00e1tums<\/strong>, no quemes la relaci\u00f3n ni des el nombre del banco rival si no quieres:<\/p>\n\n\n\n<p class=\"has-text-align-center wp-block-paragraph\"><strong><em>\u00abMe han ofrecido en otro banco un tipo fijo del 2,8%, \u00bfpod\u00e9is mejorar eso?\u00bb<\/em>.<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Basta con que la oferta sea real y est\u00e9 documentada<\/strong>. As\u00ed es c\u00f3mo negociar una hipoteca con el banco paso a paso de manera m\u00e1s efectiva, sin prisas pero con todo claro.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Paso 4: Negocia las vinculaciones, no solo los tipos de inter\u00e9s<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">En este paso es donde la mayor\u00eda cometen el <strong>grave error<\/strong> de, durante la negociaci\u00f3n de hipotecas, obsesionarse con bajar el diferencial y <strong>aceptar sin revisar productos vinculados <\/strong>muy caros.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><em><strong>Nota importante: <\/strong>Cuando el banco te ofrezca una mejora de tipos de inter\u00e9s a cambio de vinculaciones, calcula siempre el coste real de cada producto: \u00bfcu\u00e1nto baja la cuota? \u00bfcu\u00e1nto sube el seguro? <strong>Solo acepta si el ahorro en intereses supera el sobrecoste de los seguros.<\/strong> En muchos casos, te sale m\u00e1s a cuenta contratar los seguros por libre y aceptar un tipo algo m\u00e1s alto.<\/em><\/li>\n<\/ul>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img decoding=\"async\" src=\"data:image\/gif,GIF89a%01%00%01%00%80%00%00%00%00%00%FF%FF%FF%21%F9%04%01%00%00%00%00%2C%00%00%00%00%01%00%01%00%00%02%01D%00%3B\" data-layzr=\"https:\/\/static0.housfy.com\/prod\/blog\/images\/2022\/03\/07142223\/Como-negociar-una-hipoteca-con-el-banco-paso-a-paso-7-1.png\" alt=\"C\u00f3mo negociar una hipoteca con el banco paso a paso\" class=\"wp-image-69348\" title=\"- Housfy\"><\/figure>\n<\/div>\n\n\n<h3 class=\"wp-block-heading\">Paso 5: Elimina o reduce las comisiones<\/h3>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><td><strong>Comisi\u00f3n<\/strong><\/td><td><strong>Coste est\u00e1ndar<\/strong><\/td><td><strong>Objetivo de negociaci\u00f3n<\/strong><\/td><\/tr><\/thead><tbody><tr><td><strong>Apertura<\/strong><\/td><td>Un porcentaje del capital solicitado que <strong>var\u00eda seg\u00fan la entidad.<\/strong><\/td><td>Es <strong>negociable y en muchos bancos directamente eliminable si tienes un perfil solvente<\/strong> y varias ofertas sobre la mesa.<\/td><\/tr><tr><td><strong>Amortizaci\u00f3n parcial<\/strong><\/td><td>&#8211; <strong>M\u00e1ximo legal en variable:<\/strong> 0,25% los 3 primeros a\u00f1os o 0,15% los 5 primeros, y 0% despu\u00e9s.<br>&#8211; <strong>En fijo:<\/strong> 2% los 10 primeros a\u00f1os y 1,5% despu\u00e9s.<\/td><td>Pide expresamente su reducci\u00f3n o supresi\u00f3n; <strong>si tienes la solvencia necesaria<\/strong>, aceptar\u00e1n.<\/td><\/tr><tr><td><strong>Amortizaci\u00f3n total<\/strong><\/td><td><strong>Los mismos m\u00e1ximos legales que la amortizaci\u00f3n parcial;<\/strong> la ley no distingue entre las dos.<\/td><td>Pide expresamente su reducci\u00f3n o supresi\u00f3n; <strong>si tienes la solvencia necesaria<\/strong>, aceptar\u00e1n.<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Paso 6: Elige bien el momento de negociar<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Por \u00faltimo, desde Housfy queremos recordarte que <strong>los bancos funcionan con objetivos mensuales y trimestrales.<\/strong> Esto significa que, a final de mes o trimestre, tienen presi\u00f3n por cerrar operaciones. Esto puede darte un <strong>margen extra de negociaci\u00f3n.<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Tambi\u00e9n te interesa <strong>saber c\u00f3mo negociar una hipoteca cuando ya tienes una firmada,<\/strong> \u00bfPor qu\u00e9? Por estos motivos:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Si <strong>el Eur\u00edbor ha bajado o tu perfil ha mejorado.<\/strong><\/li>\n\n\n\n<li><strong>Negociar una novaci\u00f3n con tu banco actual o contratar una hipoteca nueva en otra entidad, cancelando la actual,<\/strong> pueden mejorar significativamente tus condiciones.<\/li>\n\n\n\n<li><strong>No es algo exclusivo<\/strong> de hipotecas nuevas.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\"><strong>Consejo pr\u00e1ctico:<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Aunque llevar a cabo este paso a paso es vital, muchos particulares no saben c\u00f3mo negociar una hipoteca con el banco paso a paso por <strong>falta de informaci\u00f3n o por falta de fuerza frente al banco. <\/strong>En cambio, en Housfy <a href=\"https:\/\/housfy.com\/hipoteca\/broker-hipotecario\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>nuestros br\u00f3keres hipotecarios<\/strong><\/a> colaboran con m\u00e1s de 20 entidades en Espa\u00f1a, lo que nos permite realizar todos estos pasos por ti y <strong>obtener las mejores condiciones del mercado<\/strong> <strong>seg\u00fan tu perfil<\/strong>, con un poder de negociaci\u00f3n muy superior al de cualquier cliente individual.<\/p>\n<\/blockquote>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><div\r\n\t\t\t\tid=\"hustle-embedded-id-79\"\r\n\t\t\t\tclass=\"hustle-ui hustle-inline hustle-palette--gray_slate hustle_module_id_79 module_id_79   hustle-size--custom\"\r\n\t\t\t\t\r\n\t\t\tdata-id=\"79\"\r\n\t\t\tdata-render-id=\"0\"\r\n\t\t\tdata-tracking=\"enabled\"\r\n\t\t\t\r\n\t\t\t\tdata-intro=\"no_animation\"\r\n\t\t\t\tdata-sub-type=\"shortcode\"\r\n\t\t\t\t\r\n\t\t\t\tstyle=\"opacity: 0;\"\r\n\t\t\t\taria-label=\"Consulta con br\u00f3keres hipotecarios expertos popup\"\r\n\t\t\t><div class=\"hustle-inline-content\"><div class=\"hustle-info hustle-info--compact\"><div class=\"hustle-main-wrapper\"><div class=\"hustle-layout\"><div class=\"hustle-content\"><div class=\"hustle-content-wrap\"><div class=\"hustle-group-title\"><h3 class=\"hustle-title\">Consulta con br\u00f3keres hipotecarios expertos<\/h3><h4 class=\"hustle-subtitle\">Conoce cada detalle de tu futura hipoteca y resuelve todas tus dudas<\/h4><\/div><div class=\"hustle-cta-container\"><a class=\"hustle-button hustle-button-cta \" href=\"https:\/\/housfy.com\/hipoteca\/broker-hipotecario?utm_source=traffic_CTABanner_Embed_blog&#038;utm_medium=CTABanner&#038;utm_campaign=CTABanner_Embed_broker_hipotecario_blog&#038;utm_term=broker_hipotecario_CTABanner_Embed_blog\" target=\"_blank\" data-cta-type=\"cta\">INF\u00d3RMATE GRATIS<\/a><\/div><\/div><\/div><\/div><\/div><\/div><\/div><\/div><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">El l\u00edmite de negociar solo: \u00bfPor qu\u00e9 un br\u00f3ker consigue lo que t\u00fa no puedes?<\/h2>\n\n\n\n<p class=\"has-text-align-center wp-block-paragraph\"><em>Un br\u00f3ker consigue mejores condiciones gracias a su fuerza negociadora por volumen y al acceso a ofertas exclusivas que no est\u00e1n disponibles para particulares.<\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Todos los consejos que te hemos brindado en este art\u00edculo funcionan, pero tienen un<strong> \u00abtecho\u00bb<\/strong>, que existe porque eres un <strong>cliente individual con unas necesidades puntuales.<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Por su parte, un br\u00f3ker hipotecario genera tr\u00e1fico constante para esos mismos bancos, negociando decenas de operaciones al mes. Esto, <strong>de forma estructural, le otorga poder de negociaci\u00f3n<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Adem\u00e1s, en el caso de Housfy, <strong>trabajar con un br\u00f3ker te da acceso a:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Condiciones de m\u00e1s de 20 bancos en Espa\u00f1a<\/strong>, incluyendo ofertas que no est\u00e1n disponibles para el p\u00fablico general.<\/li>\n\n\n\n<li><strong>Comparaci\u00f3n real y objetiva<\/strong>, sin el sesgo comercial del empleado de banca que trabaja para una sola entidad.<\/li>\n\n\n\n<li>Conocimiento de <strong>qu\u00e9 banco est\u00e1 dando mejores condiciones en cada momento del mercado<\/strong>, algo que cambia constantemente.<\/li>\n\n\n\n<li>Un experto que gestiona toda la documentaci\u00f3n y el proceso, <strong>ahorr\u00e1ndote tiempo, errores y negociaciones inc\u00f3modas.<\/strong><\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">En definitiva, en t\u00e9rminos de tipo de inter\u00e9s, comisiones y condiciones generales, los clientes que acceden <strong>a trav\u00e9s de un br\u00f3ker hipotecario de Housfy obtienen mejores condiciones<\/strong> que los solitarios.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><em><strong>Nota importante: <\/strong>Si a\u00fan no has empezado o est\u00e1s en las fases iniciales del proceso y quieres ahorrar tiempo, dinero y confusiones, <a href=\"https:\/\/housfy.com\/hipoteca\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>te recomendamos que pidas tu hipoteca con Housfy<\/strong><\/a> y deja que te ayudemos a tomar <strong>una de las decisiones m\u00e1s importantes de tu vida de la mejor manera posible.<\/strong><\/em><\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><div\r\n\t\t\t\tid=\"hustle-embedded-id-30\"\r\n\t\t\t\tclass=\"hustle-ui hustle-inline hustle-palette--gray_slate hustle_module_id_30 module_id_30   hustle-size--custom\"\r\n\t\t\t\t\r\n\t\t\tdata-id=\"30\"\r\n\t\t\tdata-render-id=\"0\"\r\n\t\t\tdata-tracking=\"enabled\"\r\n\t\t\t\r\n\t\t\t\tdata-intro=\"no_animation\"\r\n\t\t\t\tdata-sub-type=\"shortcode\"\r\n\t\t\t\t\r\n\t\t\t\tstyle=\"opacity: 0;\"\r\n\t\t\t\taria-label=\" Encuentra la mejor hipoteca posible para ti popup\"\r\n\t\t\t><div class=\"hustle-inline-content\"><div class=\"hustle-info hustle-info--compact\"><div class=\"hustle-main-wrapper\"><div class=\"hustle-layout\"><div class=\"hustle-content\"><div class=\"hustle-content-wrap\"><div class=\"hustle-group-title\"><h3 class=\"hustle-title\"> Encuentra la mejor hipoteca posible para ti<\/h3><h4 class=\"hustle-subtitle\">Ir de banco en banco es del pasado<\/h4><\/div><div class=\"hustle-cta-container\"><a class=\"hustle-button hustle-button-cta \" href=\"https:\/\/housfy.com\/hipoteca?utm_source=traffic_CTABanner_Embed_blog&#038;utm_medium=CTABanner&#038;utm_campaign=CTABanner_Embed_hipoteca_blog&#038;utm_term=hipoteca_CTABanner_Embed_blog\" target=\"_self\" data-cta-type=\"cta\">INF\u00d3RMATE GRATIS<\/a><\/div><\/div><\/div><\/div><\/div><\/div><\/div><\/div><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Preguntas frecuentes (FAQ&#8217;s)<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">\u00bfCu\u00e1nto se puede negociar en una hipoteca?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Depende de tu perfil y del contexto del mercado, pero <strong>en t\u00e9rminos pr\u00e1cticos puedes lograr una rebaja en el tipo de inter\u00e9s,<\/strong> eliminar la comisi\u00f3n de apertura y mejorar las condiciones de los productos vinculados.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u00bfQu\u00e9 documentaci\u00f3n necesito para negociar una hipoteca con el banco?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Lo b\u00e1sico: <strong>DNI, \u00faltimas 3 n\u00f3minas o declaraci\u00f3n de la renta si eres aut\u00f3nomo, vida laboral, extractos bancarios de los \u00faltimos 6 meses y nota simple<\/strong> del inmueble.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u00bfSe puede negociar una hipoteca ya firmada?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>S\u00ed. Tienes 2 v\u00edas<\/strong>; la novaci\u00f3n (renegociar con tu propio banco las condiciones actuales) o contratar una hipoteca nueva en otra entidad que te ofrezca mejores condiciones y cancelar la actual. Vale la pena revisarlo de vez en cuando, sobre todo cuando cambian los tipos de inter\u00e9s o mejora tu situaci\u00f3n econ\u00f3mica.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Si cambias de banco, ten en cuenta los costes del cambio;<strong> la comisi\u00f3n por amortizaci\u00f3n anticipada que fije tu contrato, la cancelaci\u00f3n registral de la hipoteca actual y la tasaci\u00f3n de la vivienda.<\/strong><\/p>\n\n\n\n<p style=\"font-size: 0.75em; font-style: italic; color: #666;\">Las im\u00e1genes de este art\u00edculo se han generado con inteligencia artificial. Sirven para ilustrar visualmente los conceptos explicados y facilitar su comprensi\u00f3n.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Para negociar una hipoteca con el banco es recomendable comparar ofertas de varios bancos y contar con ingresos estables y un bajo endeudamiento para negociar tipo de inter\u00e9s, comisiones y productos vinculados con contraofertas. Por lo tanto, si este 2026 ya no quieres ir de sucursal en sucursal para firmar un pr\u00e9stamo que no se adapta a tus necesidades, aprende c\u00f3mo negociar una hipoteca con el banco paso a paso con este art\u00edculo. Lo m\u00e1s importante de este art\u00edculo: Simulador para negociar tu hipoteca En este art\u00edculo aprender\u00e1s: \u00bfQu\u00e9 puedes negociar en una hipoteca? En una hipoteca, puedes negociar el <\/p>\n","protected":false},"author":62,"featured_media":71858,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[123],"tags":[],"class_list":["post-3084","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-hipoteca","has_thumb"],"img_url":"https:\/\/static0.housfy.com\/prod\/blog\/images\/2022\/03\/19093027\/como-negociar-una-hipoteca-con-el-banco-paso-a-paso.jpg","_links":{"self":[{"href":"https:\/\/housfy.com\/blog\/wp-json\/wp\/v2\/posts\/3084","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/housfy.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/housfy.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/housfy.com\/blog\/wp-json\/wp\/v2\/users\/62"}],"replies":[{"embeddable":true,"href":"https:\/\/housfy.com\/blog\/wp-json\/wp\/v2\/comments?post=3084"}],"version-history":[{"count":56,"href":"https:\/\/housfy.com\/blog\/wp-json\/wp\/v2\/posts\/3084\/revisions"}],"predecessor-version":[{"id":72157,"href":"https:\/\/housfy.com\/blog\/wp-json\/wp\/v2\/posts\/3084\/revisions\/72157"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/housfy.com\/blog\/wp-json\/wp\/v2\/media\/71858"}],"wp:attachment":[{"href":"https:\/\/housfy.com\/blog\/wp-json\/wp\/v2\/media?parent=3084"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/housfy.com\/blog\/wp-json\/wp\/v2\/categories?post=3084"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/housfy.com\/blog\/wp-json\/wp\/v2\/tags?post=3084"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}