Free javascript Hosting


socketiop2p-min.js

Uploaded on Dec 13 2021 02:56 by vid.vilec

<!DOCTYPE html>
<html lang="en" data-color-mode="auto" data-light-theme="light" data-dark-theme="dark">
<head>
<meta charset="utf-8">
<link rel="dns-prefetch" href="https://github.githubassets.com">
<link rel="dns-prefetch" href="https://avatars.githubusercontent.com">
<link rel="dns-prefetch" href="https://github-cloud.s3.amazonaws.com">
<link rel="dns-prefetch" href="https://user-images.githubusercontent.com/">
<link rel="preconnect" href="https://github.githubassets.com" crossorigin>
<link rel="preconnect" href="https://avatars.githubusercontent.com">



<link crossorigin="anonymous" media="all" integrity="sha512-1G4rYJktwRTQKn7fVfJUxH8RRZFUJlGo77xMZfBfIhZPx4BHVrzPE1VgnafttXI8G3y/PywH3uXyhNkSLp3+oA==" rel="stylesheet" href="https://github.githubassets.com/assets/light-d46e2b60992dc114d02a7edf55f254c4.css" /><link crossorigin="anonymous" media="all" integrity="sha512-hI5b2oqTE9njfjYrfuzXqA4bSGSNrE5OMc9IiFhZy+RDGg9Qn4Si1A97o0MlinlwFt3xAifvoLX0s7jHmHSvVw==" rel="stylesheet" href="https://github.githubassets.com/assets/dark-848e5bda8a9313d9e37e362b7eecd7a8.css" /><link data-color-theme="dark_dimmed" crossorigin="anonymous" media="all" integrity="sha512-klQdb3t14AYaRMkB0v9buaf5Ftfbec/sbxdkvyQpG6oBvzZxxH6N5QwA4llOyZsoyjqiZaTra2ci5TgInnLqQg==" rel="stylesheet" data-href="https://github.githubassets.com/assets/dark_dimmed-92541d6f7b75e0061a44c901d2ff5bb9.css" /><link data-color-theme="dark_high_contrast" crossorigin="anonymous" media="all" integrity="sha512-CBsfpBvg1D/Hvn8FFY4JwUVgoKjgynOSFKwgThDHrHASVid/Isgz0ueab5xSuSVx8vEvNL9UfYcpWIJRJYTCjg==" rel="stylesheet" data-href="https://github.githubassets.com/assets/dark_high_contrast-081b1fa41be0d43fc7be7f05158e09c1.css" /><link data-color-theme="dark_colorblind" crossorigin="anonymous" media="all" integrity="sha512-09ipkynAtzCqasl2D2//N51bUOVnOzBFdadcXdMWyphI81s1FWmJ9AD1NRq3e0PMfiJEiVSm9mjTYd7gv2xtWA==" rel="stylesheet" data-href="https://github.githubassets.com/assets/dark_colorblind-d3d8a99329c0b730aa6ac9760f6fff37.css" /><link data-color-theme="light_colorblind" crossorigin="anonymous" media="all" integrity="sha512-OJwnC/pGdOV3QMoWud8vp0nxtQhtzAcpNWB7mSSh/e7fPslExSb07EOdNTAJsBAS4bN7Yrdxm2F7htANgTIMsA==" rel="stylesheet" data-href="https://github.githubassets.com/assets/light_colorblind-389c270bfa4674e57740ca16b9df2fa7.css" /><link data-color-theme="light_high_contrast" crossorigin="anonymous" media="all" integrity="sha512-5swg0RJGlhj0UH3SLkJ6e/BYm/DmpyGTaUSCUBhf1HtC4lBV+zM9mxOQ8febH318pxcUzUpp09qi0z7EKfWuDQ==" rel="stylesheet" data-href="https://github.githubassets.com/assets/light_high_contrast-e6cc20d112469618f4507dd22e427a7b.css" />
<link crossorigin="anonymous" media="all" integrity="sha512-QqvVBfIzzG0WlIoWXHsCifqDCZb4smtR6Wuh7BcLPlKFJ8TS6gubuJhSOYPyppMtQeUMDoFFKR4n70oWnwuTFA==" rel="stylesheet" href="https://github.githubassets.com/assets/frameworks-42abd505f233cc6d16948a165c7b0289.css" />
<link crossorigin="anonymous" media="all" integrity="sha512-DqKQiv4WEtt0oqgk6h5jjZbAp3Ab/nAMD86DUgQeNiVR2513sCCjpqUW/clABRsX1zJeMaRWAzSKRmMD1b2oEQ==" rel="stylesheet" href="https://github.githubassets.com/assets/behaviors-0ea2908afe1612db74a2a824ea1e638d.css" />
<link crossorigin="anonymous" media="all" integrity="sha512-MCJFYfbQoT4EXC6aWx5Wghs8FC/jslHEeN2iWXphliccmede2dQlhIBTAUCBq9Yu5poltu4askungzvyCsycGg==" rel="stylesheet" href="https://github.githubassets.com/assets/tab-size-fix-30224561f6d0a13e045c2e9a5b1e5682.css" />



<link crossorigin="anonymous" media="all" integrity="sha512-em7MIv4I+MngFgygSymjDsUFr21k9LEjsYiMTno2qXqPYPBJv/+2gMg5JQbrR7tf0olRAaixqjinl5sfc3qH0A==" rel="stylesheet" href="https://github.githubassets.com/assets/github-7a6ecc22fe08f8c9e0160ca04b29a30e.css" />

<script crossorigin="anonymous" defer="defer" integrity="sha512-K/kjAAGVhlckApEbskyYOB+ASq3m0GKyJk3y0JoEafwknEbUpmilodEuQQJG09c0v1eCRlX7mSQp+GLGtXmWQg==" type="application/javascript" src="https://github.githubassets.com/assets/environment-2bf92300.js"></script>
<script crossorigin="anonymous" defer="defer" integrity="sha512-ACv3bY5BbwZJZAILFrKIafdnSpYBhIyrt0TO/RKmW6as2wf1DJT/0/T1k0F7W8LZo0dv1iuvSAC7ksYRrs+69A==" type="application/javascript" src="https://github.githubassets.com/assets/chunk-frameworks-002bf76d.js"></script>
<script crossorigin="anonymous" defer="defer" integrity="sha512-xWJrqAEXUmczNtYSbGmidiCPqB8HYau/tKZiFy/pwRYoTPX92AFs2I5MD0rUEErwkEQsLLmbcV99q10J+NdgZg==" type="application/javascript" src="https://github.githubassets.com/assets/chunk-vendor-c5626ba8.js"></script>

<script crossorigin="anonymous" defer="defer" integrity="sha512-PMZpkSBi5DwR/UcE5FGUnVDAbQtTwqLBvDvWoc11WU6eX4g8vrVflycsmKhATQaAzcvmyEobI/F7wQHIQ3+zZQ==" type="application/javascript" src="https://github.githubassets.com/assets/behaviors-3cc66991.js"></script>

<script crossorigin="anonymous" defer="defer" integrity="sha512-ODZJzCJpaOfusrIka5QVZQcPiO9LBGyrrMYjhhJWSLuCN5WbZ5xiEiiOPOKVu71dqygyRdB2TY7AKPA1J5hqdg==" type="application/javascript" data-module-id="./chunk-unveil.js" data-src="https://github.githubassets.com/assets/chunk-unveil-383649cc.js"></script>
<script crossorigin="anonymous" defer="defer" integrity="sha512-emPgUbSwW9ezLCgRnTE7n4fbbfc/MqEEDHmnkmG61dTyjWKHTYKN4wN3OPS7SY0fwmSJ8mB5+gng2nZw4/HsUg==" type="application/javascript" data-module-id="./chunk-animate-on-scroll.js" data-src="https://github.githubassets.com/assets/chunk-animate-on-scroll-7a63e051.js"></script>
<script crossorigin="anonymous" defer="defer" integrity="sha512-ocfEAp6AJvGh4otXKow+AVJ14ysircwHagMkRQ3hoQvuy/U9agyT1cYKYiSYph1VLNaI/aAXwVd2go1pb3DD8A==" type="application/javascript" data-module-id="./chunk-input-demux.js" data-src="https://github.githubassets.com/assets/chunk-input-demux-a1c7c402.js"></script>
<script crossorigin="anonymous" defer="defer" integrity="sha512-tM2UlPYv6Z04ZoFXp/P+9sanpA9adLc2Y8CIfnVE7OvO0Z41BNLEyIIuxIE87D5su+5Q7HREnk5ZBKWPL8IOQg==" type="application/javascript" data-module-id="./chunk-ref-selector.js" data-src="https://github.githubassets.com/assets/chunk-ref-selector-b4cd9494.js"></script>
<script crossorigin="anonymous" defer="defer" integrity="sha512-sVL7+sWxLz43qK/2L5em0jmE9c5VEnekBSd6NW52Trt/TUQ5XL0rzc6v4AVeKsuaULKW5DpfaTU9DIJTFQN2HA==" type="application/javascript" data-module-id="./chunk-filter-input.js" data-src="https://github.githubassets.com/assets/chunk-filter-input-b152fbfa.js"></script>
<script crossorigin="anonymous" defer="defer" integrity="sha512-ynV5nM8UuCr4KZ/msFeRxRL6LnG+XUKzIfh6LNIzQ21ecjLVPvm53ghTE54aIuSUaHJWHnsYg8FRzycZIcRHiA==" type="application/javascript" data-module-id="./chunk-edit.js" data-src="https://github.githubassets.com/assets/chunk-edit-ca75799c.js"></script>
<script crossorigin="anonymous" defer="defer" integrity="sha512-GhqHDMwaAgqUsjVyltYVhaaLYy2G887rPRXXNbsdaI+Xm3dh0fbaHLhZns70EjFAEpXBgCAYFYdnlG1IQFmz1A==" type="application/javascript" data-module-id="./chunk-responsive-underlinenav.js" data-src="https://github.githubassets.com/assets/chunk-responsive-underlinenav-1a1a870c.js"></script>
<script crossorigin="anonymous" defer="defer" integrity="sha512-gmw7obKL/JEHWPp6zWFh+ynbXUFOidj1DN2aPiTDwP8Gair0moVuDmA340LD84A29I3ZPak19CEiumG+oIiseg==" type="application/javascript" data-module-id="./chunk-tag-input.js" data-src="https://github.githubassets.com/assets/chunk-tag-input-826c3ba1.js"></script>
<script crossorigin="anonymous" defer="defer" integrity="sha512-Ao9llFIlj54ApuKf2QLboXukbu2h7MHfMmtYHrrsVe1lprKNLiA0usVcRpvruKhfT5STDuWm/GGmyx8ox27hWQ==" type="application/javascript" data-module-id="./chunk-notification-list-focus.js" data-src="https://github.githubassets.com/assets/chunk-notification-list-focus-028f6594.js"></script>
<script crossorigin="anonymous" defer="defer" integrity="sha512-SPWd3rzrxmU6xW6vy1JPWCd+3uWFWmnd0MVGpmw/TpHWUAdLWDqL8kWyC/sBIZJmda4mTtUO1DHJQzAXRSrC+g==" type="application/javascript" data-module-id="./chunk-cookies.js" data-src="https://github.githubassets.com/assets/chunk-cookies-48f59dde.js"></script>
<script crossorigin="anonymous" defer="defer" integrity="sha512-4vVRplWFI7P4m3RHQ0QAhkq6eZUdtIE8PBhsKYJRwDkhQw9iK/U1st1/fM1tQZFuBFwGMyqaZblbWtQ+2ejcqQ==" type="application/javascript" data-module-id="./chunk-slug.js" data-src="https://github.githubassets.com/assets/chunk-slug-e2f551a6.js"></script>
<script crossorigin="anonymous" defer="defer" integrity="sha512-MK53GXbb2BPV+ADlEbJbkrvg34WPcAd5RC2nBJhUH1tR/Mjr9xrsf56ptBajfWcIWKRKbqqRtLktgr0wAbB3zw==" type="application/javascript" data-module-id="./chunk-async-export.js" data-src="https://github.githubassets.com/assets/chunk-async-export-30ae7719.js"></script>
<script crossorigin="anonymous" defer="defer" integrity="sha512-tw9SApiMkftVBYeb6/VGhEwGNw8tlyBhXc9RVXH4UbCD6u+48uuCMvXf3bxvBdOld0OoYg83SnD2mgJWhdaTiQ==" type="application/javascript" data-module-id="./chunk-premium-runners.js" data-src="https://github.githubassets.com/assets/chunk-premium-runners-b70f5202.js"></script>
<script crossorigin="anonymous" defer="defer" integrity="sha512-D576CjzS9sbDqFBJdq0Y6+KVMHXkO6mLFO/GRL1NtoE8jgXjAvmdjoZ4nNMWyDwqbtBHspvupORzE9L+YoBLYQ==" type="application/javascript" data-module-id="./chunk-get-repo-element.js" data-src="https://github.githubassets.com/assets/chunk-get-repo-element-0f9efa0a.js"></script>
<script crossorigin="anonymous" defer="defer" integrity="sha512-5wqGRhHE6OePh5J7jPpVPOY9F/UefpoSHtH0oq5/wFzGHuN/idvHbu881oouRIzukqTYDsIdBFwS9nekczitBg==" type="application/javascript" data-module-id="./chunk-query.js" data-src="https://github.githubassets.com/assets/chunk-query-e70a8646.js"></script>
<script crossorigin="anonymous" defer="defer" integrity="sha512-xhSAO0KtnFAlRqAK+mg8BPj/J334ccvnCmmjmBQBCgZcsoO9teHJSS6oAn3XOWYFsWPU2JehwG7S3OVEbLwdUg==" type="application/javascript" data-module-id="./chunk-color-modes.js" data-src="https://github.githubassets.com/assets/chunk-color-modes-c614803b.js"></script>
<script crossorigin="anonymous" defer="defer" integrity="sha512-jitxouuFY6SUcDZV5W3jhadVEIfFBfCQZxfPV3kxNnsWEBzbxMJFp0ccLb7+OlBjSs1zU/MNtuOV6T9Ay7lx4w==" type="application/javascript" data-module-id="./chunk-copy.js" data-src="https://github.githubassets.com/assets/chunk-copy-8e2b71a2.js"></script>
<script crossorigin="anonymous" defer="defer" integrity="sha512-sAeL7y7Tbq5g07u3/0pJIS9IegVGfOVwfX7LQfKPna4UYzOQtcjfAJnwXSHWbAG7jSy4jQKtsukdRuQLX8JrGQ==" type="application/javascript" data-module-id="./chunk-voting.js" data-src="https://github.githubassets.com/assets/chunk-voting-b0078bef.js"></script>
<script crossorigin="anonymous" defer="defer" integrity="sha512-HDsLJf6gAN+WDFaJneJwmIY82XkZKWqeX7tStBLRh1XM53K8vMV6JZvjq/UQXszaNVWxWcuYtgYTG6ZWo8+QSw==" type="application/javascript" data-module-id="./chunk-confetti.js" data-src="https://github.githubassets.com/assets/chunk-confetti-1c3b0b25.js"></script>
<script crossorigin="anonymous" defer="defer" integrity="sha512-Jm91haHZxrhZUNUTJjxVpQdGcJwkbXkupgnVWT/GunQM8NN7k9a48rWrF3rf9/ElJ9sOmP54OzFXiPy82TjCgg==" type="application/javascript" data-module-id="./chunk-codemirror.js" data-src="https://github.githubassets.com/assets/chunk-codemirror-266f7585.js"></script>
<script crossorigin="anonymous" defer="defer" integrity="sha512-Gr3ZcJt5t73JeBM3NwOEziKyDZ3HpHwzqZL/c1pgTUfo+6QC5f88XXRw/RT6X2diwqvaa3OVFh0oWsZ9ZxhtdQ==" type="application/javascript" data-module-id="./chunk-tip.js" data-src="https://github.githubassets.com/assets/chunk-tip-1abdd970.js"></script>
<script crossorigin="anonymous" defer="defer" integrity="sha512-EdQvlnI4Pu5Q6K0HCvp+mi0Vw9ZuwaEuhbnCbmFKX+c0xwiUWY0L3n9P0F6doLhaHhfpvW3718+miL11WG4BeA==" type="application/javascript" data-module-id="./chunk-line.js" data-src="https://github.githubassets.com/assets/chunk-line-11d42f96.js"></script>
<script crossorigin="anonymous" defer="defer" integrity="sha512-4zSHP2sQXPKoN9jFy8q2ThHsQNej8s4qhubSR4g0/2dTexAEnoTG+RbaffdIhmjfghGjpS/DlE0cdSTFEOcipQ==" type="application/javascript" data-module-id="./chunk-array.js" data-src="https://github.githubassets.com/assets/chunk-array-e334873f.js"></script>
<script crossorigin="anonymous" defer="defer" integrity="sha512-g8fb6U7h9SkWgiK69nfNMn4aN5D2YBYPZUbCIuLpemWoOw8NOaZY8Z0hPq4RUVs4+bYdCFR6K719k8lwFeUijg==" type="application/javascript" data-module-id="./chunk-band.js" data-src="https://github.githubassets.com/assets/chunk-band-83c7dbe9.js"></script>
<script crossorigin="anonymous" defer="defer" integrity="sha512-4GJz2wyWwjq7P4hyx3qSkjvnTO7RG5cWvnePVXPB+Oji6MBVugAdl7kCTKbpX8+Ae2ONvGJwFzSc9A7m1pqzXw==" type="application/javascript" data-module-id="./chunk-toast.js" data-src="https://github.githubassets.com/assets/chunk-toast-e06273db.js"></script>
<script crossorigin="anonymous" defer="defer" integrity="sha512-miaiZ1xkDsWBUsURHOmeYtbgVKQGnm1octCo/lDXUmPzDyjtubnHULRVw1AK+sttwdwyB0+LOyhIVAWCNSGx+A==" type="application/javascript" data-module-id="./chunk-delayed-loading-element.js" data-src="https://github.githubassets.com/assets/chunk-delayed-loading-element-9a26a267.js"></script>
<script crossorigin="anonymous" defer="defer" integrity="sha512-GD25CNhMGDMzEmeFhUT0FILBupAkx5/CHohnYXOP1togy40O0iu/lASaSp3gV8ue0nwscalJVQqR5gKDRHHDVg==" type="application/javascript" data-module-id="./chunk-three.module.js" data-src="https://github.githubassets.com/assets/chunk-three.module-183db908.js"></script>
<script crossorigin="anonymous" defer="defer" integrity="sha512-/iTbUKUWq/Zd9s88DnZCZwT3ZXY8RocbyusGgzdilxg6O4U/buS4azHSL7mvjRsu2lx4A+6Ty/9UVoOxVUR/rQ==" type="application/javascript" data-module-id="./chunk-invitations.js" data-src="https://github.githubassets.com/assets/chunk-invitations-fe24db50.js"></script>
<script crossorigin="anonymous" defer="defer" integrity="sha512-vFR+IqThljOLrAWmjhOL/kiQrjgZZg95uPovX0J7kRH5p7Y049LDRZaXLMDijfeqqk71d3MMn9XP5bUcH+lB9w==" type="application/javascript" data-module-id="./chunk-profile.js" data-src="https://github.githubassets.com/assets/chunk-profile-bc547e22.js"></script>
<script crossorigin="anonymous" defer="defer" integrity="sha512-W3TFrSn3Iqu38aVxxYxFiNGzaVmLXtGfwRDVRH1RwRvqPVerX1fjQPEYag+HqAoWaGy5ssVFp42oyOIV93afBw==" type="application/javascript" data-module-id="./chunk-overview.js" data-src="https://github.githubassets.com/assets/chunk-overview-5b74c5ad.js"></script>
<script crossorigin="anonymous" defer="defer" integrity="sha512-xqw233932eUGcGURAPuwUWZpC5Km/9Btq7/2Jnkt1rSWnPSVfMl+JKpr9eLtCoQmrpgP8vaghEuX8bWAS8fzTg==" type="application/javascript" data-module-id="./chunk-advanced.js" data-src="https://github.githubassets.com/assets/chunk-advanced-c6ac36df.js"></script>
<script crossorigin="anonymous" defer="defer" integrity="sha512-6Rmd0BBAsJ9ouvb/pgrkToMPs5ogcqi8rcQ7R3GDPPHIjlu0NZ0Bx6HUn/aOruMCECETHm4Exfs5gjYdHs66RQ==" type="application/javascript" data-module-id="./chunk-runner-groups.js" data-src="https://github.githubassets.com/assets/chunk-runner-groups-e9199dd0.js"></script>
<script crossorigin="anonymous" defer="defer" integrity="sha512-5H5N/3G/20nmVKntphXb9z0H9q3URFDmHSccLhFkMSA8ILAA9mYlRKCWAWoDcl/W437jtGw1tIxjWStfInvidw==" type="application/javascript" data-module-id="./chunk-profile-pins-element.js" data-src="https://github.githubassets.com/assets/chunk-profile-pins-element-e47e4dff.js"></script>
<script crossorigin="anonymous" defer="defer" integrity="sha512-yLWaU9w3RBv/uqIpx5JlOIUYrKOBlkjHAd6XlETRaUiS0i+0mo3hdKNGTtRJYseZtWVt1BC6nNb+9SycesjyQg==" type="application/javascript" data-module-id="./chunk-emoji-picker-element.js" data-src="https://github.githubassets.com/assets/chunk-emoji-picker-element-c8b59a53.js"></script>
<script crossorigin="anonymous" defer="defer" integrity="sha512-EvJ2Fip59DXgARNuwTWgjdVqoCjhXQL73SP9yexijlWStKq92sfbKeGK5R4wIP0QOr39WsnW/Kaw3Wpl1QPfog==" type="application/javascript" data-module-id="./chunk-edit-hook-secret-element.js" data-src="https://github.githubassets.com/assets/chunk-edit-hook-secret-element-12f27616.js"></script>
<script crossorigin="anonymous" defer="defer" integrity="sha512-91JzWtpBUoC7Z4dQpeXRegjwCMooGPFtg/vXxaIGVTxguoOcI/hEdyM7otQGRNQmMencK71thI0oGt11Wgfrww==" type="application/javascript" data-module-id="./chunk-insights-query.js" data-src="https://github.githubassets.com/assets/chunk-insights-query-f752735a.js"></script>
<script crossorigin="anonymous" defer="defer" integrity="sha512-ySdUENYEBMcTMRqhu0hVPVoUQfqjCkRuNy9wtKP3bEcYkMVYCSfEK4HJUTbuu3r4R7b9i6cGRHh8O3fA2/Jqyw==" type="application/javascript" data-module-id="./chunk-remote-clipboard-copy.js" data-src="https://github.githubassets.com/assets/chunk-remote-clipboard-copy-c9275410.js"></script>
<script crossorigin="anonymous" defer="defer" integrity="sha512-eO/r0W5ywI2kxVkcH8yquw3n5Gh+cA8lVOgxd+ecgJYU81FB4Q5FqFxgHhx1omigPwexB4ltwXBMDhSeW6qNeQ==" type="application/javascript" data-module-id="./chunk-series-table.js" data-src="https://github.githubassets.com/assets/chunk-series-table-78efebd1.js"></script>
<script crossorigin="anonymous" defer="defer" integrity="sha512-eCSMVL1aAfhWSme4/3seObqN3HNdkxWVKaAX5bmZmxIXZdv0ixnuFJeESYdLeMED/wQETtQ971A03mLF3ZX8eQ==" type="application/javascript" data-module-id="./chunk-line-chart.js" data-src="https://github.githubassets.com/assets/chunk-line-chart-78248c54.js"></script>
<script crossorigin="anonymous" defer="defer" integrity="sha512-rZhcZvsxbGBxibYeNv4aHYZkgZzW6xnRcAqmuOCbq/ehJgr75pxgiV7HrGrYrX9HNmyH8T+90HC9WSBZNM4L3g==" type="application/javascript" data-module-id="./chunk-bar-chart.js" data-src="https://github.githubassets.com/assets/chunk-bar-chart-ad985c66.js"></script>
<script crossorigin="anonymous" defer="defer" integrity="sha512-/QP5yDdYoor56F2+SyPr/8a9FtvCZnnGP0d+lSAHQR5n+xYjaiY6LjJGB/x1cevAH8r4XY/axNN9fRWIfbwAcA==" type="application/javascript" data-module-id="./chunk-stacked-area-chart.js" data-src="https://github.githubassets.com/assets/chunk-stacked-area-chart-fd03f9c8.js"></script>
<script crossorigin="anonymous" defer="defer" integrity="sha512-GohDpVrxfHqlavb8Zabvj+y/s6CHegYwyGpQxKtzR2MkQsynBC98LdLongRFMHI+TKAECLavp200Lsy9JbV5TQ==" type="application/javascript" data-module-id="./chunk-presence-avatars.js" data-src="https://github.githubassets.com/assets/chunk-presence-avatars-1a8843a5.js"></script>
<script crossorigin="anonymous" defer="defer" integrity="sha512-TpHTIXhA/2bI21CVmFL1oS3dv+8zveJVZLOVVAZwXNAAI94Hy70L9vT3Q1Vvkyu4Z2gi2iFdy1a53pfYlEDgnQ==" type="application/javascript" data-module-id="./chunk-pulse-authors-graph-element.js" data-src="https://github.githubassets.com/assets/chunk-pulse-authors-graph-element-4e91d321.js"></script>
<script crossorigin="anonymous" defer="defer" integrity="sha512-aNAcFMlIdG1ocY5LnZylnN/6KXiJxyPvKg7y1Jnai732wdnrjXazcvNiQkRnj5FY8WP6JRa3K4doCReA4nhj7w==" type="application/javascript" data-module-id="./chunk-stacks-input-config-view.js" data-src="https://github.githubassets.com/assets/chunk-stacks-input-config-view-68d01c14.js"></script>
<script crossorigin="anonymous" defer="defer" integrity="sha512-bbW4T9/r8Np2kfViflgQnNiRYxuqR7rLgtTFUkdFLvok75aQSUlYsD5wXqKPpttPfvKicBAgztCOTkpNMPSQLA==" type="application/javascript" data-module-id="./chunk-community-contributions.js" data-src="https://github.githubassets.com/assets/chunk-community-contributions-6db5b84f.js"></script>
<script crossorigin="anonymous" defer="defer" integrity="sha512-Kpqa6sgByBKUyzDDVVdWoGttf2SAPsHt7fGHAS7gB62Ve7KemFKz3+gvVJsvBsrErVm/eQQYT/U+kDHbnr3tFA==" type="application/javascript" data-module-id="./chunk-discussion-page-views.js" data-src="https://github.githubassets.com/assets/chunk-discussion-page-views-2a9a9aea.js"></script>
<script crossorigin="anonymous" defer="defer" integrity="sha512-+EMrCbglrI+ow8JMBlikKWUdEVlJjllBRZFnYWVfaRXbBO1eIGSa6LV6qBRvRPPVvS+sw1SiOhBHQhGy053CJA==" type="application/javascript" data-module-id="./chunk-discussions-daily-contributors.js" data-src="https://github.githubassets.com/assets/chunk-discussions-daily-contributors-f8432b09.js"></script>
<script crossorigin="anonymous" defer="defer" integrity="sha512-JFlBSiDVD4MXke66qKnk36YUTW3leIZNOH2wqYmOKuxS7BsWCRmcrYrUU5plAKfsSDym1Lqf2bwpEOuVY0DCbw==" type="application/javascript" data-module-id="./chunk-discussions-new-contributors.js" data-src="https://github.githubassets.com/assets/chunk-discussions-new-contributors-2459414a.js"></script>
<script crossorigin="anonymous" defer="defer" integrity="sha512-cFe9WuBCDrJOiGiTm4+TEi7fPqhRTxRZbqng2GxfPrENGiyxllCL2NDjwgANC1PTe8UU6ATCFnK9JAgcph2rtA==" type="application/javascript" data-module-id="./chunk-tweetsodium.js" data-src="https://github.githubassets.com/assets/chunk-tweetsodium-7057bd5a.js"></script>
<script crossorigin="anonymous" defer="defer" integrity="sha512-w6ezdjaR9OJfEXEmoysDp1UCVzZAyqkPF4U3Dnzxv6wz5gwEozldZyBxqiEGNo+MkmvZIaFigwpxai98l6vlcw==" type="application/javascript" data-module-id="./chunk-jump-to.js" data-src="https://github.githubassets.com/assets/chunk-jump-to-c3a7b376.js"></script>
<script crossorigin="anonymous" defer="defer" integrity="sha512-porumd6g+0TcIvUOTpsk8nZFoNRh6Q6VzpjFx1LQ6Ep7w3e6uKymt5QLIaLXz5CMSPcc05z5HUUNXLWb/fqieA==" type="application/javascript" data-module-id="./chunk-user-status-submit.js" data-src="https://github.githubassets.com/assets/chunk-user-status-submit-a68aee99.js"></script>
<script crossorigin="anonymous" defer="defer" integrity="sha512-L2jxBDS9QAN9O1qn7LqMcs0YJn/gF6xW73zSbWPRlVCEnG05dexaoJWkAG6RqALTnXLsj2GTUKnba6DATR828g==" type="application/javascript" data-module-id="./chunk-launch-code-element.js" data-src="https://github.githubassets.com/assets/chunk-launch-code-element-2f68f104.js"></script>
<script crossorigin="anonymous" defer="defer" integrity="sha512-cvjyIYhR2ZkuFAXHYZSjPTc5wXYOdISgqbXw69CXpDXdxffXmXuzjCcGJNVk3mDNYsVH4Q9sb2UMNPFrNxxRUQ==" type="application/javascript" data-module-id="./chunk-metric-selection-element.js" data-src="https://github.githubassets.com/assets/chunk-metric-selection-element-72f8f221.js"></script>
<script crossorigin="anonymous" defer="defer" integrity="sha512-/2Oeznu4Qh8QuYb4OvlxCrx/tIfHWnJrhjNFW7MOl0nRMSVUPowbUJ4F+HpdkepXw/OZkF22CN7CN1dRv8bJmQ==" type="application/javascript" data-module-id="./chunk-severity-calculator-element.js" data-src="https://github.githubassets.com/assets/chunk-severity-calculator-element-ff639ece.js"></script>
<script crossorigin="anonymous" defer="defer" integrity="sha512-+ZzYug6neosVmsiphaqLBCJ9ICwHbPYmK9dgWYKLG33rL4/dGwCv1yIWMjTmhsvL+fqnEpk4JvDm1h3DDlVtkA==" type="application/javascript" data-module-id="./chunk-command-palette-page-element.js" data-src="https://github.githubassets.com/assets/chunk-command-palette-page-element-f99cd8ba.js"></script>
<script crossorigin="anonymous" defer="defer" integrity="sha512-G0eaMfyFkgYqpgOUqkQ26bBTxdJGjdDxgCQMv2K6Ph1pfA/Eu2blajrWQKSGmZ+2FMIl4sYc4O+Z/dMQG5jLPw==" type="application/javascript" data-module-id="./chunk-command-palette-page-stack-element.js" data-src="https://github.githubassets.com/assets/chunk-command-palette-page-stack-element-1b479a31.js"></script>
<script crossorigin="anonymous" defer="defer" integrity="sha512-yXHkwiNZgB6O0iSDKE8jrZzTtTyF8YdFFXHcemhWEPuN3sWs1PQrSwEh0Gw4/B9TIzUfvogbqlJ71yLLuqyM+Q==" type="application/javascript" data-module-id="./chunk-readme-toc-element.js" data-src="https://github.githubassets.com/assets/chunk-readme-toc-element-c971e4c2.js"></script>
<script crossorigin="anonymous" defer="defer" integrity="sha512-WtxFYpyZyznX2bQr5Za6UNxUXn7RheDqolsoKRcOTvUA3hxrMym/nWB3FiaNxjI4ZH7ZeF5e2l/PM3Yaj8f1Sg==" type="application/javascript" data-module-id="./chunk-feature-callout-element.js" data-src="https://github.githubassets.com/assets/chunk-feature-callout-element-5adc4562.js"></script>
<script crossorigin="anonymous" defer="defer" integrity="sha512-AgRcXCe+D+OLnnNyOJ3WaheR+A/+g96SSFKb0mfkNbHa5vNK/BuLAP43YxP7qcFGP6wk8VAwDY5oNn2JbpLUXQ==" type="application/javascript" data-module-id="./chunk-codespaces-policy-form-element.js" data-src="https://github.githubassets.com/assets/chunk-codespaces-policy-form-element-02045c5c.js"></script>
<script crossorigin="anonymous" defer="defer" integrity="sha512-8bLD+svVGiF6GXQ47+Z0RpvFU7VAaYerpNUQsCbTGkYlIQK3//exSCA5BxJ/LHFfj4EB2ZgjTX79l7U2RBdrww==" type="application/javascript" data-module-id="./chunk-action-list-element.js" data-src="https://github.githubassets.com/assets/chunk-action-list-element-f1b2c3fa.js"></script>
<script crossorigin="anonymous" defer="defer" integrity="sha512-isSHZU8kUmsTUnVDx0hZlnsTG0Qzz1UGw8HyTP14hH7YH+kmFrHfvolR1EGfOD4A0zzgpO4CwDozLLo2ZPP0vA==" type="application/javascript" data-module-id="./chunk-project-picker-element.js" data-src="https://github.githubassets.com/assets/chunk-project-picker-element-8ac48765.js"></script>
<script crossorigin="anonymous" defer="defer" integrity="sha512-Pvx3rTrXcH5VI/XimZxFgsSzMLnRTMXnFd4laAZYre6JAI7349Swv+B1vh+YwFgR1LbZweTCKV1XBovUHhxc/A==" type="application/javascript" data-module-id="./chunk-sortable-behavior.js" data-src="https://github.githubassets.com/assets/chunk-sortable-behavior-3efc77ad.js"></script>
<script crossorigin="anonymous" defer="defer" integrity="sha512-6JUQHgkTqBaCCdDugMcO4fQ8YxUHk+m6rwVp2Wxa4FMVz6BbBMPOzGluT4wBq8NTUcFv6DnXSOnt5e85jNgpGg==" type="application/javascript" data-module-id="./chunk-drag-drop.js" data-src="https://github.githubassets.com/assets/chunk-drag-drop-e895101e.js"></script>
<script crossorigin="anonymous" defer="defer" integrity="sha512-28pipPJZvizfcYYETJWBBeDHsrDEz7A06d7Y5swgY/OWmsX0ZJW6mkZVFRO7Z/xZh1D1qFbPHGNixfCd1YpBnA==" type="application/javascript" data-module-id="./chunk-contributions-spider-graph.js" data-src="https://github.githubassets.com/assets/chunk-contributions-spider-graph-dbca62a4.js"></script>
<script crossorigin="anonymous" defer="defer" integrity="sha512-VQRofBwNZhBa4vBuw0P5bjjlVtO2R+l1M0TOfMZHX1bB7xy//CFwqmyaL24rLfgLx8sahKZ7eEw1o+nkFoUzNA==" type="application/javascript" data-module-id="./chunk-webgl-warp.js" data-src="https://github.githubassets.com/assets/chunk-webgl-warp-5504687c.js"></script>

<script crossorigin="anonymous" defer="defer" integrity="sha512-1xtova/THmyoQRoMipD5D4RhmlT+N0tQ/gn3vPrHGaVVRkRJZA17GpKKXLVErIEzxIl0dWJhjp9FqTRRF4p/Pw==" type="application/javascript" src="https://github.githubassets.com/assets/repositories-d71b68bd.js"></script>
<script crossorigin="anonymous" defer="defer" integrity="sha512-nFE/jA75eIqCkj+X/I0mMxWIEMCzNviI0lQXP2VzJzm5SQmJrTdMZydd5Li4aqKdDt67vVHoyqpkzo3QQw0qPA==" type="application/javascript" src="https://github.githubassets.com/assets/diffs-9c513f8c.js"></script>

<meta name="viewport" content="width=device-width">

<title>socket.io-p2p/socketiop2p.min.js at master · socketio/socket.io-p2p · GitHub</title>
<meta name="description" content="Contribute to socketio/socket.io-p2p development by creating an account on GitHub.">
<link rel="search" type="application/opensearchdescription+xml" href="/opensearch.xml" title="GitHub">
<link rel="fluid-icon" href="https://github.com/fluidicon.png" title="GitHub">
<meta property="fb:app_id" content="1401488693436528">
<meta name="apple-itunes-app" content="app-id=1477376905" />
<meta name="twitter:image:src" content="https://opengraph.githubassets.com/4976727dc8bd97155c25655dc4082837186ca64954ef2d2b2fc28ee78e808cf8/socketio/socket.io-p2p" /><meta name="twitter:site" content="@github" /><meta name="twitter:card" content="summary_large_image" /><meta name="twitter:title" content="socket.io-p2p/socketiop2p.min.js at master · socketio/socket.io-p2p" /><meta name="twitter:description" content="Contribute to socketio/socket.io-p2p development by creating an account on GitHub." />
<meta property="og:image" content="https://opengraph.githubassets.com/4976727dc8bd97155c25655dc4082837186ca64954ef2d2b2fc28ee78e808cf8/socketio/socket.io-p2p" /><meta property="og:image:alt" content="Contribute to socketio/socket.io-p2p development by creating an account on GitHub." /><meta property="og:image:width" content="1200" /><meta property="og:image:height" content="600" /><meta property="og:site_name" content="GitHub" /><meta property="og:type" content="object" /><meta property="og:title" content="socket.io-p2p/socketiop2p.min.js at master · socketio/socket.io-p2p" /><meta property="og:url" content="https://github.com/socketio/socket.io-p2p" /><meta property="og:description" content="Contribute to socketio/socket.io-p2p development by creating an account on GitHub." />






<link rel="assets" href="https://github.githubassets.com/">


<meta name="request-id" content="DE85:49EF:409C52:43BC3C:61B64FB9" data-pjax-transient="true"/><meta name="html-safe-nonce" content="84eb701ba933c631c4764d1e36917f495a806924b1d97516cef3110895ea9612" data-pjax-transient="true"/><meta name="visitor-payload" content="eyJyZWZlcnJlciI6Imh0dHBzOi8vZ2l0aHViLmNvbS9zb2NrZXRpby9zb2NrZXQuaW8tcDJwIiwicmVxdWVzdF9pZCI6IkRFODU6NDlFRjo0MDlDNTI6NDNCQzNDOjYxQjY0RkI5IiwidmlzaXRvcl9pZCI6IjQwOTMzMTUyMjAxMzI3MzQ5NzQiLCJyZWdpb25fZWRnZSI6ImZyYSIsInJlZ2lvbl9yZW5kZXIiOiJmcmEifQ==" data-pjax-transient="true"/><meta name="visitor-hmac" content="2f7580ad89e746ebf40aefcdd8bd8c518de8fae246a8c355d5f8376f1ce71dcc" data-pjax-transient="true"/>

<meta name="hovercard-subject-tag" content="repository:32878226" data-pjax-transient>


<meta name="github-keyboard-shortcuts" content="repository,source-code" data-pjax-transient="true" />



<meta name="selected-link" value="repo_source" data-pjax-transient>

<meta name="google-site-verification" content="c1kuD-K2HIVF635lypcsWPoD4kilo5-jA_wBFyT4uMY">
<meta name="google-site-verification" content="KT5gs8h0wvaagLKAVWq8bbeNwnZZK1r1XQysX3xurLU">
<meta name="google-site-verification" content="ZzhVyEFwb7w3e0-uOTltm8Jsck2F5StVihD0exw2fsA">
<meta name="google-site-verification" content="GXs5KoUUkNCoaAZn7wPN-t01Pywp9M3sEjnt_3_ZWPc">

<meta name="octolytics-url" content="https://collector.githubapp.com/github/collect" />

<meta name="analytics-location" content="/&lt;user-name&gt;/&lt;repo-name&gt;/blob/show" data-pjax-transient="true" />





<meta name="optimizely-datafile" content="{&quot;version&quot;: &quot;4&quot;, &quot;rollouts&quot;: [], &quot;typedAudiences&quot;: [], &quot;anonymizeIP&quot;: true, &quot;projectId&quot;: &quot;16737760170&quot;, &quot;variables&quot;: [], &quot;featureFlags&quot;: [], &quot;experiments&quot;: [{&quot;status&quot;: &quot;Running&quot;, &quot;audienceIds&quot;: [], &quot;variations&quot;: [{&quot;variables&quot;: [], &quot;id&quot;: &quot;20438636352&quot;, &quot;key&quot;: &quot;control&quot;}, {&quot;variables&quot;: [], &quot;id&quot;: &quot;20484957397&quot;, &quot;key&quot;: &quot;treatment&quot;}], &quot;id&quot;: &quot;20479227424&quot;, &quot;key&quot;: &quot;growth_ghec_onboarding_experience&quot;, &quot;layerId&quot;: &quot;20467848595&quot;, &quot;trafficAllocation&quot;: [{&quot;entityId&quot;: &quot;20484957397&quot;, &quot;endOfRange&quot;: 1000}, {&quot;entityId&quot;: &quot;20484957397&quot;, &quot;endOfRange&quot;: 3000}, {&quot;entityId&quot;: &quot;20484957397&quot;, &quot;endOfRange&quot;: 5000}, {&quot;entityId&quot;: &quot;20484957397&quot;, &quot;endOfRange&quot;: 6000}, {&quot;entityId&quot;: &quot;20484957397&quot;, &quot;endOfRange&quot;: 8000}, {&quot;entityId&quot;: &quot;20484957397&quot;, &quot;endOfRange&quot;: 10000}], &quot;forcedVariations&quot;: {&quot;85e2238ce2b9074907d7a3d91d6feeae&quot;: &quot;control&quot;}}, {&quot;status&quot;: &quot;Running&quot;, &quot;audienceIds&quot;: [], &quot;variations&quot;: [{&quot;variables&quot;: [], &quot;id&quot;: &quot;20667381018&quot;, &quot;key&quot;: &quot;control&quot;}, {&quot;variables&quot;: [], &quot;id&quot;: &quot;20680930759&quot;, &quot;key&quot;: &quot;treatment&quot;}], &quot;id&quot;: &quot;20652570897&quot;, &quot;key&quot;: &quot;project_genesis&quot;, &quot;layerId&quot;: &quot;20672300363&quot;, &quot;trafficAllocation&quot;: [{&quot;entityId&quot;: &quot;20667381018&quot;, &quot;endOfRange&quot;: 5000}, {&quot;entityId&quot;: &quot;20680930759&quot;, &quot;endOfRange&quot;: 10000}], &quot;forcedVariations&quot;: {&quot;83356e17066d336d1803024138ecb683&quot;: &quot;treatment&quot;, &quot;18e31c8a9b2271332466133162a4aa0d&quot;: &quot;treatment&quot;, &quot;10f8ab3fbc5ebe989a36a05f79d48f32&quot;: &quot;treatment&quot;, &quot;1686089f6d540cd2deeaec60ee43ecf7&quot;: &quot;treatment&quot;}}], &quot;audiences&quot;: [{&quot;conditions&quot;: &quot;[\&quot;or\&quot;, {\&quot;match\&quot;: \&quot;exact\&quot;, \&quot;name\&quot;: \&quot;$opt_dummy_attribute\&quot;, \&quot;type\&quot;: \&quot;custom_attribute\&quot;, \&quot;value\&quot;: \&quot;$opt_dummy_value\&quot;}]&quot;, &quot;id&quot;: &quot;$opt_dummy_audience&quot;, &quot;name&quot;: &quot;Optimizely-Generated Audience for Backwards Compatibility&quot;}], &quot;groups&quot;: [], &quot;sdkKey&quot;: &quot;WTc6awnGuYDdG98CYRban&quot;, &quot;environmentKey&quot;: &quot;production&quot;, &quot;attributes&quot;: [{&quot;id&quot;: &quot;16822470375&quot;, &quot;key&quot;: &quot;user_id&quot;}, {&quot;id&quot;: &quot;17143601254&quot;, &quot;key&quot;: &quot;spammy&quot;}, {&quot;id&quot;: &quot;18175660309&quot;, &quot;key&quot;: &quot;organization_plan&quot;}, {&quot;id&quot;: &quot;18813001570&quot;, &quot;key&quot;: &quot;is_logged_in&quot;}, {&quot;id&quot;: &quot;19073851829&quot;, &quot;key&quot;: &quot;geo&quot;}, {&quot;id&quot;: &quot;20175462351&quot;, &quot;key&quot;: &quot;requestedCurrency&quot;}, {&quot;id&quot;: &quot;20785470195&quot;, &quot;key&quot;: &quot;country_code&quot;}], &quot;botFiltering&quot;: false, &quot;accountId&quot;: &quot;16737760170&quot;, &quot;events&quot;: [{&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;17911811441&quot;, &quot;key&quot;: &quot;hydro_click.dashboard.teacher_toolbox_cta&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;18124116703&quot;, &quot;key&quot;: &quot;submit.organizations.complete_sign_up&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;18145892387&quot;, &quot;key&quot;: &quot;no_metric.tracked_outside_of_optimizely&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;18178755568&quot;, &quot;key&quot;: &quot;click.org_onboarding_checklist.add_repo&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;18180553241&quot;, &quot;key&quot;: &quot;submit.repository_imports.create&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;18186103728&quot;, &quot;key&quot;: &quot;click.help.learn_more_about_repository_creation&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;18188530140&quot;, &quot;key&quot;: &quot;test_event.do_not_use_in_production&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;18191963644&quot;, &quot;key&quot;: &quot;click.empty_org_repo_cta.transfer_repository&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;18195612788&quot;, &quot;key&quot;: &quot;click.empty_org_repo_cta.import_repository&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;18210945499&quot;, &quot;key&quot;: &quot;click.org_onboarding_checklist.invite_members&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;18211063248&quot;, &quot;key&quot;: &quot;click.empty_org_repo_cta.create_repository&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;18215721889&quot;, &quot;key&quot;: &quot;click.org_onboarding_checklist.update_profile&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;18224360785&quot;, &quot;key&quot;: &quot;click.org_onboarding_checklist.dismiss&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;18234832286&quot;, &quot;key&quot;: &quot;submit.organization_activation.complete&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;18252392383&quot;, &quot;key&quot;: &quot;submit.org_repository.create&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;18257551537&quot;, &quot;key&quot;: &quot;submit.org_member_invitation.create&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;18259522260&quot;, &quot;key&quot;: &quot;submit.organization_profile.update&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;18564603625&quot;, &quot;key&quot;: &quot;view.classroom_select_organization&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;18568612016&quot;, &quot;key&quot;: &quot;click.classroom_sign_in_click&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;18572592540&quot;, &quot;key&quot;: &quot;view.classroom_name&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;18574203855&quot;, &quot;key&quot;: &quot;click.classroom_create_organization&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;18582053415&quot;, &quot;key&quot;: &quot;click.classroom_select_organization&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;18589463420&quot;, &quot;key&quot;: &quot;click.classroom_create_classroom&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;18591323364&quot;, &quot;key&quot;: &quot;click.classroom_create_first_classroom&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;18591652321&quot;, &quot;key&quot;: &quot;click.classroom_grant_access&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;18607131425&quot;, &quot;key&quot;: &quot;view.classroom_creation&quot;}, {&quot;experimentIds&quot;: [&quot;20479227424&quot;], &quot;id&quot;: &quot;18831680583&quot;, &quot;key&quot;: &quot;upgrade_account_plan&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;19064064515&quot;, &quot;key&quot;: &quot;click.signup&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;19075373687&quot;, &quot;key&quot;: &quot;click.view_account_billing_page&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;19077355841&quot;, &quot;key&quot;: &quot;click.dismiss_signup_prompt&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;19079713938&quot;, &quot;key&quot;: &quot;click.contact_sales&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;19120963070&quot;, &quot;key&quot;: &quot;click.compare_account_plans&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;19151690317&quot;, &quot;key&quot;: &quot;click.upgrade_account_cta&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;19424193129&quot;, &quot;key&quot;: &quot;click.open_account_switcher&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;19520330825&quot;, &quot;key&quot;: &quot;click.visit_account_profile&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;19540970635&quot;, &quot;key&quot;: &quot;click.switch_account_context&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;19730198868&quot;, &quot;key&quot;: &quot;submit.homepage_signup&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;19820830627&quot;, &quot;key&quot;: &quot;click.homepage_signup&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;19988571001&quot;, &quot;key&quot;: &quot;click.create_enterprise_trial&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;20036538294&quot;, &quot;key&quot;: &quot;click.create_organization_team&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;20040653299&quot;, &quot;key&quot;: &quot;click.input_enterprise_trial_form&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;20062030003&quot;, &quot;key&quot;: &quot;click.continue_with_team&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;20068947153&quot;, &quot;key&quot;: &quot;click.create_organization_free&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;20086636658&quot;, &quot;key&quot;: &quot;click.signup_continue.username&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;20091648988&quot;, &quot;key&quot;: &quot;click.signup_continue.create_account&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;20103637615&quot;, &quot;key&quot;: &quot;click.signup_continue.email&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;20111574253&quot;, &quot;key&quot;: &quot;click.signup_continue.password&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;20120044111&quot;, &quot;key&quot;: &quot;view.pricing_page&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;20152062109&quot;, &quot;key&quot;: &quot;submit.create_account&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;20165800992&quot;, &quot;key&quot;: &quot;submit.upgrade_payment_form&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;20171520319&quot;, &quot;key&quot;: &quot;submit.create_organization&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;20222645674&quot;, &quot;key&quot;: &quot;click.recommended_plan_in_signup.discuss_your_needs&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;20227443657&quot;, &quot;key&quot;: &quot;submit.verify_primary_user_email&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;20234607160&quot;, &quot;key&quot;: &quot;click.recommended_plan_in_signup.try_enterprise&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;20238175784&quot;, &quot;key&quot;: &quot;click.recommended_plan_in_signup.team&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;20239847212&quot;, &quot;key&quot;: &quot;click.recommended_plan_in_signup.continue_free&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;20251097193&quot;, &quot;key&quot;: &quot;recommended_plan&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;20438619534&quot;, &quot;key&quot;: &quot;click.pricing_calculator.1_member&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;20456699683&quot;, &quot;key&quot;: &quot;click.pricing_calculator.15_members&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;20467868331&quot;, &quot;key&quot;: &quot;click.pricing_calculator.10_members&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;20476267432&quot;, &quot;key&quot;: &quot;click.trial_days_remaining&quot;}, {&quot;experimentIds&quot;: [&quot;20479227424&quot;], &quot;id&quot;: &quot;20476357660&quot;, &quot;key&quot;: &quot;click.discover_feature&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;20479287901&quot;, &quot;key&quot;: &quot;click.pricing_calculator.custom_members&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;20481107083&quot;, &quot;key&quot;: &quot;click.recommended_plan_in_signup.apply_teacher_benefits&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;20483089392&quot;, &quot;key&quot;: &quot;click.pricing_calculator.5_members&quot;}, {&quot;experimentIds&quot;: [&quot;20479227424&quot;, &quot;20652570897&quot;], &quot;id&quot;: &quot;20484283944&quot;, &quot;key&quot;: &quot;click.onboarding_task&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;20484996281&quot;, &quot;key&quot;: &quot;click.recommended_plan_in_signup.apply_student_benefits&quot;}, {&quot;experimentIds&quot;: [&quot;20479227424&quot;], &quot;id&quot;: &quot;20486713726&quot;, &quot;key&quot;: &quot;click.onboarding_task_breadcrumb&quot;}, {&quot;experimentIds&quot;: [&quot;20479227424&quot;], &quot;id&quot;: &quot;20490791319&quot;, &quot;key&quot;: &quot;click.upgrade_to_enterprise&quot;}, {&quot;experimentIds&quot;: [&quot;20479227424&quot;], &quot;id&quot;: &quot;20491786766&quot;, &quot;key&quot;: &quot;click.talk_to_us&quot;}, {&quot;experimentIds&quot;: [&quot;20479227424&quot;], &quot;id&quot;: &quot;20494144087&quot;, &quot;key&quot;: &quot;click.dismiss_enterprise_trial&quot;}, {&quot;experimentIds&quot;: [&quot;20479227424&quot;, &quot;20652570897&quot;], &quot;id&quot;: &quot;20499722759&quot;, &quot;key&quot;: &quot;completed_all_tasks&quot;}, {&quot;experimentIds&quot;: [&quot;20479227424&quot;, &quot;20652570897&quot;], &quot;id&quot;: &quot;20500710104&quot;, &quot;key&quot;: &quot;completed_onboarding_tasks&quot;}, {&quot;experimentIds&quot;: [&quot;20479227424&quot;], &quot;id&quot;: &quot;20513160672&quot;, &quot;key&quot;: &quot;click.read_doc&quot;}, {&quot;experimentIds&quot;: [&quot;20652570897&quot;], &quot;id&quot;: &quot;20516196762&quot;, &quot;key&quot;: &quot;actions_enabled&quot;}, {&quot;experimentIds&quot;: [&quot;20479227424&quot;], &quot;id&quot;: &quot;20518980986&quot;, &quot;key&quot;: &quot;click.dismiss_trial_banner&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;20535446721&quot;, &quot;key&quot;: &quot;click.issue_actions_prompt.dismiss_prompt&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;20557002247&quot;, &quot;key&quot;: &quot;click.issue_actions_prompt.setup_workflow&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;20595070227&quot;, &quot;key&quot;: &quot;click.pull_request_setup_workflow&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;20626600314&quot;, &quot;key&quot;: &quot;click.seats_input&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;20642310305&quot;, &quot;key&quot;: &quot;click.decrease_seats_number&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;20662990045&quot;, &quot;key&quot;: &quot;click.increase_seats_number&quot;}, {&quot;experimentIds&quot;: [], &quot;id&quot;: &quot;20679620969&quot;, &quot;key&quot;: &quot;click.public_product_roadmap&quot;}, {&quot;experimentIds&quot;: [&quot;20479227424&quot;], &quot;id&quot;: &quot;20761240940&quot;, &quot;key&quot;: &quot;click.dismiss_survey_banner&quot;}, {&quot;experimentIds&quot;: [&quot;20479227424&quot;], &quot;id&quot;: &quot;20767210721&quot;, &quot;key&quot;: &quot;click.take_survey&quot;}, {&quot;experimentIds&quot;: [&quot;20652570897&quot;], &quot;id&quot;: &quot;20795281201&quot;, &quot;key&quot;: &quot;click.archive_list&quot;}], &quot;revision&quot;: &quot;982&quot;}" />
<!-- To prevent page flashing, the optimizely JS needs to be loaded in the
<head> tag before the DOM renders -->
<script crossorigin="anonymous" defer="defer" integrity="sha512-stPGyO+GUOomTBqs1Y5EJnkYCf8cb/wFveUz/ncDr9XaP9olIwZerGQr4wFA3nBNqhbaqHsYbf0NfWJZ6XHjrg==" type="application/javascript" src="https://github.githubassets.com/assets/optimizely-b2d3c6c8.js"></script>





<meta name="hostname" content="github.com">
<meta name="user-login" content="">


<meta name="expected-hostname" content="github.com">


<meta name="enabled-features" content="MARKETPLACE_PENDING_INSTALLATIONS,FILE_UPLOAD_CURSOR_POSITION">

<meta http-equiv="x-pjax-version" content="f242cc9b5b686953f391824e6791aee8cf229e53f467f83d038d698ae79cdc30">
<meta http-equiv="x-pjax-csp-version" content="9ea82e8060ac9d44365bfa193918b70ed58abd9413362ba412abb161b3a8d1b6">
<meta http-equiv="x-pjax-css-version" content="e425ae2959043828693e9fc25bf300acecd4eeca2f0b05932513a21477161764">
<meta http-equiv="x-pjax-js-version" content="46f98b1d77145d0a312dfbdc8ca07efed6cebd986b8f066faf048cbb1b39d822">



<meta name="go-import" content="github.com/socketio/socket.io-p2p git https://github.com/socketio/socket.io-p2p.git">

<meta name="octolytics-dimension-user_id" content="10566080" /><meta name="octolytics-dimension-user_login" content="socketio" /><meta name="octolytics-dimension-repository_id" content="32878226" /><meta name="octolytics-dimension-repository_nwo" content="socketio/socket.io-p2p" /><meta name="octolytics-dimension-repository_public" content="true" /><meta name="octolytics-dimension-repository_is_fork" content="false" /><meta name="octolytics-dimension-repository_network_root_id" content="32878226" /><meta name="octolytics-dimension-repository_network_root_nwo" content="socketio/socket.io-p2p" />



<link rel="canonical" href="https://github.com/socketio/socket.io-p2p/blob/master/socketiop2p.min.js" data-pjax-transient>


<meta name="browser-stats-url" content="https://api.github.com/_private/browser/stats">

<meta name="browser-errors-url" content="https://api.github.com/_private/browser/errors">

<meta name="browser-optimizely-client-errors-url" content="https://api.github.com/_private/browser/optimizely_client/errors">

<link rel="mask-icon" href="https://github.githubassets.com/pinned-octocat.svg" color="#000000">
<link rel="alternate icon" class="js-site-favicon" type="image/png" href="https://github.githubassets.com/favicons/favicon.png">
<link rel="icon" class="js-site-favicon" type="image/svg+xml" href="https://github.githubassets.com/favicons/favicon.svg">

<meta name="theme-color" content="#1e2327">
<meta name="color-scheme" content="light dark" />


<link rel="manifest" href="/manifest.json" crossOrigin="use-credentials">

</head>

<body class="logged-out env-production page-responsive page-blob" style="word-wrap: break-word;">


<div class="position-relative js-header-wrapper ">
<a href="#start-of-content" class="px-2 py-4 color-bg-accent-emphasis color-fg-on-emphasis show-on-focus js-skip-to-content">Skip to content</a>
<span data-view-component="true" class="progress-pjax-loader js-pjax-loader-bar Progress position-fixed width-full">
<span style="width: 0%;" data-view-component="true" class="Progress-item progress-pjax-loader-bar color-bg-accent-emphasis"></span>
</span>





<header class="Header-old header-logged-out js-details-container Details position-relative f4 py-2" role="banner">
<div class="container-xl d-lg-flex flex-items-center p-responsive">
<div class="d-flex flex-justify-between flex-items-center">
<a class="mr-4 color-fg-inherit" href="https://github.com/" aria-label="Homepage" data-ga-click="(Logged out) Header, go to homepage, icon:logo-wordmark">
<svg height="32" aria-hidden="true" viewBox="0 0 16 16" version="1.1" width="32" data-view-component="true" class="octicon octicon-mark-github">
<path fill-rule="evenodd" d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0016 8c0-4.42-3.58-8-8-8z"></path>
</svg>
</a>

<div class="d-lg-none css-truncate css-truncate-target width-fit p-2">


</div>

<div class="d-flex flex-items-center">
<a href="/signup?ref_cta=Sign+up&amp;ref_loc=header+logged+out&amp;ref_page=%2F%3Cuser-name%3E%2F%3Crepo-name%3E%2Fblob%2Fshow&amp;source=header-repo"
class="d-inline-block d-lg-none f5 no-underline border color-border-default rounded-2 px-2 py-1 mr-3 mr-sm-5 color-fg-inherit"
data-hydro-click="{&quot;event_type&quot;:&quot;authentication.click&quot;,&quot;payload&quot;:{&quot;location_in_page&quot;:&quot;site header&quot;,&quot;repository_id&quot;:null,&quot;auth_type&quot;:&quot;SIGN_UP&quot;,&quot;originating_url&quot;:&quot;https://github.com/socketio/socket.io-p2p/blob/master/socketiop2p.min.js&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="628ecbcca750186b22f683f5f9456956db4dafd2ffbad1e00de2dc9348bf4a72"
>
Sign&nbsp;up
</a>

<button aria-label="Toggle navigation" aria-expanded="false" type="button" data-view-component="true" class="js-details-target btn-link d-lg-none mt-1 color-fg-inherit">


<svg aria-hidden="true" height="24" viewBox="0 0 16 16" version="1.1" width="24" data-view-component="true" class="octicon octicon-three-bars">
<path fill-rule="evenodd" d="M1 2.75A.75.75 0 011.75 2h12.5a.75.75 0 110 1.5H1.75A.75.75 0 011 2.75zm0 5A.75.75 0 011.75 7h12.5a.75.75 0 110 1.5H1.75A.75.75 0 011 7.75zM1.75 12a.75.75 0 100 1.5h12.5a.75.75 0 100-1.5H1.75z"></path>
</svg>



</button> </div>
</div>

<div class="HeaderMenu HeaderMenu--logged-out position-fixed top-0 right-0 bottom-0 height-fit position-lg-relative d-lg-flex flex-justify-between flex-items-center flex-auto">
<div class="d-flex d-lg-none flex-justify-end border-bottom color-bg-subtle p-3">
<button aria-label="Toggle navigation" aria-expanded="false" type="button" data-view-component="true" class="js-details-target btn-link">


<svg aria-hidden="true" height="24" viewBox="0 0 24 24" version="1.1" width="24" data-view-component="true" class="octicon octicon-x color-fg-muted">
<path fill-rule="evenodd" d="M5.72 5.72a.75.75 0 011.06 0L12 10.94l5.22-5.22a.75.75 0 111.06 1.06L13.06 12l5.22 5.22a.75.75 0 11-1.06 1.06L12 13.06l-5.22 5.22a.75.75 0 01-1.06-1.06L10.94 12 5.72 6.78a.75.75 0 010-1.06z"></path>
</svg>



</button> </div>

<nav class="mt-0 px-3 px-lg-0 mb-5 mb-lg-0" aria-label="Global">
<ul class="d-lg-flex list-style-none">
<li class="mr-0 mr-lg-3 position-relative flex-wrap flex-justify-between flex-items-center border-bottom border-lg-bottom-0 d-block d-lg-flex flex-lg-nowrap flex-lg-items-center">
<details class="HeaderMenu-details details-overlay details-reset width-full">
<summary class="HeaderMenu-summary HeaderMenu-link px-0 py-3 border-0 no-wrap d-block d-lg-inline-block">
Why GitHub?
<svg x="0" y="0" viewBox="0 0 14 8" xml:space="preserve" fill="none" class="icon-chevon-down-mktg position-absolute position-lg-relative"><path d="M1,1l6.2,6L13,1"></path></svg>
</summary>
<div class="dropdown-menu flex-auto rounded px-0 mt-0 pb-4 p-lg-4 position-relative position-lg-absolute left-0 left-lg-n4">
<ul class="list-style-none f5 pb-1">
<li>
<a class="lh-condensed-ultra d-block no-underline position-relative Link--primary text-bold py-2" data-hydro-click="{&quot;event_type&quot;:&quot;analytics.event&quot;,&quot;payload&quot;:{&quot;category&quot;:&quot;Header dropdown (logged out), Why GitHub?&quot;,&quot;action&quot;:&quot;click to go to Features&quot;,&quot;label&quot;:&quot;ref_page:/socketio/socket.io-p2p/blob/master/socketiop2p.min.js;ref_cta:Features;&quot;,&quot;originating_url&quot;:&quot;https://github.com/socketio/socket.io-p2p/blob/master/socketiop2p.min.js&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="35c57188d67079ccb92fb8f8bf3adf99c4ec8be0e5d5e1bc5c976c1867786ba2" data-analytics-event="{&quot;category&quot;:&quot;Header dropdown (logged out), Why GitHub?&quot;,&quot;action&quot;:&quot;click to go to Features&quot;,&quot;label&quot;:&quot;ref_page:/socketio/socket.io-p2p/blob/master/socketiop2p.min.js;ref_cta:Features;&quot;}" href="/features">
Features
</a> </li>

<li>
<a class="lh-condensed-ultra d-block no-underline position-relative Link--secondary py-2" data-hydro-click="{&quot;event_type&quot;:&quot;analytics.event&quot;,&quot;payload&quot;:{&quot;category&quot;:&quot;Header dropdown (logged out), Why GitHub?&quot;,&quot;action&quot;:&quot;click to go to Mobile&quot;,&quot;label&quot;:&quot;ref_page:/socketio/socket.io-p2p/blob/master/socketiop2p.min.js;ref_cta:Mobile;&quot;,&quot;originating_url&quot;:&quot;https://github.com/socketio/socket.io-p2p/blob/master/socketiop2p.min.js&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="cf2edcae9679b3286b426076441b1e7a86ab8e50f26f85431bfb81a09540265f" data-analytics-event="{&quot;category&quot;:&quot;Header dropdown (logged out), Why GitHub?&quot;,&quot;action&quot;:&quot;click to go to Mobile&quot;,&quot;label&quot;:&quot;ref_page:/socketio/socket.io-p2p/blob/master/socketiop2p.min.js;ref_cta:Mobile;&quot;}" href="/mobile">
Mobile
</a> </li>

<li>
<a class="lh-condensed-ultra d-block no-underline position-relative Link--secondary py-2" data-hydro-click="{&quot;event_type&quot;:&quot;analytics.event&quot;,&quot;payload&quot;:{&quot;category&quot;:&quot;Header dropdown (logged out), Why GitHub?&quot;,&quot;action&quot;:&quot;click to go to Actions&quot;,&quot;label&quot;:&quot;ref_page:/socketio/socket.io-p2p/blob/master/socketiop2p.min.js;ref_cta:Actions;&quot;,&quot;originating_url&quot;:&quot;https://github.com/socketio/socket.io-p2p/blob/master/socketiop2p.min.js&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="c608e0f3c8d878ad4123b3b40207d9cc49042f54da318d1da672dce743d91b0b" data-analytics-event="{&quot;category&quot;:&quot;Header dropdown (logged out), Why GitHub?&quot;,&quot;action&quot;:&quot;click to go to Actions&quot;,&quot;label&quot;:&quot;ref_page:/socketio/socket.io-p2p/blob/master/socketiop2p.min.js;ref_cta:Actions;&quot;}" href="/features/actions">
Actions
</a> </li>

<li>
<a class="lh-condensed-ultra d-block no-underline position-relative Link--secondary py-2" data-hydro-click="{&quot;event_type&quot;:&quot;analytics.event&quot;,&quot;payload&quot;:{&quot;category&quot;:&quot;Header dropdown (logged out), Why GitHub?&quot;,&quot;action&quot;:&quot;click to go to Codespaces&quot;,&quot;label&quot;:&quot;ref_page:/socketio/socket.io-p2p/blob/master/socketiop2p.min.js;ref_cta:Codespaces;&quot;,&quot;originating_url&quot;:&quot;https://github.com/socketio/socket.io-p2p/blob/master/socketiop2p.min.js&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="6bae3428f89e30d22bc1ee5258fabf69f451283e460a136693bc1c561fa331e7" data-analytics-event="{&quot;category&quot;:&quot;Header dropdown (logged out), Why GitHub?&quot;,&quot;action&quot;:&quot;click to go to Codespaces&quot;,&quot;label&quot;:&quot;ref_page:/socketio/socket.io-p2p/blob/master/socketiop2p.min.js;ref_cta:Codespaces;&quot;}" href="/features/codespaces">
Codespaces
</a> </li>

<li>
<a class="lh-condensed-ultra d-block no-underline position-relative Link--secondary py-2" data-hydro-click="{&quot;event_type&quot;:&quot;analytics.event&quot;,&quot;payload&quot;:{&quot;category&quot;:&quot;Header dropdown (logged out), Why GitHub?&quot;,&quot;action&quot;:&quot;click to go to Packages&quot;,&quot;label&quot;:&quot;ref_page:/socketio/socket.io-p2p/blob/master/socketiop2p.min.js;ref_cta:Packages;&quot;,&quot;originating_url&quot;:&quot;https://github.com/socketio/socket.io-p2p/blob/master/socketiop2p.min.js&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="f4af5b90fdd279d1acf1f63c0a9e3e2834350130d836bae922dca95f7ddd36d6" data-analytics-event="{&quot;category&quot;:&quot;Header dropdown (logged out), Why GitHub?&quot;,&quot;action&quot;:&quot;click to go to Packages&quot;,&quot;label&quot;:&quot;ref_page:/socketio/socket.io-p2p/blob/master/socketiop2p.min.js;ref_cta:Packages;&quot;}" href="/features/packages">
Packages
</a> </li>

<li>
<a class="lh-condensed-ultra d-block no-underline position-relative Link--secondary py-2" data-hydro-click="{&quot;event_type&quot;:&quot;analytics.event&quot;,&quot;payload&quot;:{&quot;category&quot;:&quot;Header dropdown (logged out), Why GitHub?&quot;,&quot;action&quot;:&quot;click to go to Security&quot;,&quot;label&quot;:&quot;ref_page:/socketio/socket.io-p2p/blob/master/socketiop2p.min.js;ref_cta:Security;&quot;,&quot;originating_url&quot;:&quot;https://github.com/socketio/socket.io-p2p/blob/master/socketiop2p.min.js&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="357179077be216595a87b98bf744213ace8b853218c8a8c789180f6b88a1e161" data-analytics-event="{&quot;category&quot;:&quot;Header dropdown (logged out), Why GitHub?&quot;,&quot;action&quot;:&quot;click to go to Security&quot;,&quot;label&quot;:&quot;ref_page:/socketio/socket.io-p2p/blob/master/socketiop2p.min.js;ref_cta:Security;&quot;}" href="/features/security">
Security
</a> </li>

<li>
<a class="lh-condensed-ultra d-block no-underline position-relative Link--secondary py-2" data-hydro-click="{&quot;event_type&quot;:&quot;analytics.event&quot;,&quot;payload&quot;:{&quot;category&quot;:&quot;Header dropdown (logged out), Why GitHub?&quot;,&quot;action&quot;:&quot;click to go to Code review&quot;,&quot;label&quot;:&quot;ref_page:/socketio/socket.io-p2p/blob/master/socketiop2p.min.js;ref_cta:Code review;&quot;,&quot;originating_url&quot;:&quot;https://github.com/socketio/socket.io-p2p/blob/master/socketiop2p.min.js&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="dd5312ac546cb2cb435bf8e7d05742a8747d62890c087136c96aacf76ff7bbf9" data-analytics-event="{&quot;category&quot;:&quot;Header dropdown (logged out), Why GitHub?&quot;,&quot;action&quot;:&quot;click to go to Code review&quot;,&quot;label&quot;:&quot;ref_page:/socketio/socket.io-p2p/blob/master/socketiop2p.min.js;ref_cta:Code review;&quot;}" href="/features/code-review">
Code review
</a> </li>

<li>
<a class="lh-condensed-ultra d-block no-underline position-relative Link--secondary py-2" data-hydro-click="{&quot;event_type&quot;:&quot;analytics.event&quot;,&quot;payload&quot;:{&quot;category&quot;:&quot;Header dropdown (logged out), Why GitHub?&quot;,&quot;action&quot;:&quot;click to go to Issues&quot;,&quot;label&quot;:&quot;ref_page:/socketio/socket.io-p2p/blob/master/socketiop2p.min.js;ref_cta:Issues;&quot;,&quot;originating_url&quot;:&quot;https://github.com/socketio/socket.io-p2p/blob/master/socketiop2p.min.js&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="ad4324b22a9fb79e5da2bf89a5ba7671b073829b19a87c2ed9c4667f9c627466" data-analytics-event="{&quot;category&quot;:&quot;Header dropdown (logged out), Why GitHub?&quot;,&quot;action&quot;:&quot;click to go to Issues&quot;,&quot;label&quot;:&quot;ref_page:/socketio/socket.io-p2p/blob/master/socketiop2p.min.js;ref_cta:Issues;&quot;}" href="/features/issues">
Issues
</a> </li>

<li>
<a class="lh-condensed-ultra d-block no-underline position-relative Link--secondary py-2" data-hydro-click="{&quot;event_type&quot;:&quot;analytics.event&quot;,&quot;payload&quot;:{&quot;category&quot;:&quot;Header dropdown (logged out), Why GitHub?&quot;,&quot;action&quot;:&quot;click to go to Integrations&quot;,&quot;label&quot;:&quot;ref_page:/socketio/socket.io-p2p/blob/master/socketiop2p.min.js;ref_cta:Integrations;&quot;,&quot;originating_url&quot;:&quot;https://github.com/socketio/socket.io-p2p/blob/master/socketiop2p.min.js&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="e0cdf0320f4ce02c6e097ff66644489783b7f143e2a7a5e9a287a87023e07421" data-analytics-event="{&quot;category&quot;:&quot;Header dropdown (logged out), Why GitHub?&quot;,&quot;action&quot;:&quot;click to go to Integrations&quot;,&quot;label&quot;:&quot;ref_page:/socketio/socket.io-p2p/blob/master/socketiop2p.min.js;ref_cta:Integrations;&quot;}" href="/features/integrations">
Integrations
</a> </li>

<li>
<a class="lh-condensed-ultra d-block no-underline position-relative Link--primary text-bold border-top pt-4 pb-2 mt-3" data-hydro-click="{&quot;event_type&quot;:&quot;analytics.event&quot;,&quot;payload&quot;:{&quot;category&quot;:&quot;Header dropdown (logged out), Why GitHub?&quot;,&quot;action&quot;:&quot;click to go to GitHub Sponsors&quot;,&quot;label&quot;:&quot;ref_page:/socketio/socket.io-p2p/blob/master/socketiop2p.min.js;ref_cta:GitHub Sponsors;&quot;,&quot;originating_url&quot;:&quot;https://github.com/socketio/socket.io-p2p/blob/master/socketiop2p.min.js&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="32c9a2ba2696932117e315c52bac7c46761cfeb4146e6671eaaae5db534afe92" data-analytics-event="{&quot;category&quot;:&quot;Header dropdown (logged out), Why GitHub?&quot;,&quot;action&quot;:&quot;click to go to GitHub Sponsors&quot;,&quot;label&quot;:&quot;ref_page:/socketio/socket.io-p2p/blob/master/socketiop2p.min.js;ref_cta:GitHub Sponsors;&quot;}" href="/sponsors">
GitHub Sponsors
</a> </li>

<li>
<a class="lh-condensed-ultra d-block no-underline position-relative Link--primary text-bold py-2" data-hydro-click="{&quot;event_type&quot;:&quot;analytics.event&quot;,&quot;payload&quot;:{&quot;category&quot;:&quot;Header dropdown (logged out), Why GitHub?&quot;,&quot;action&quot;:&quot;click to go to Customer stories&quot;,&quot;label&quot;:&quot;ref_page:/socketio/socket.io-p2p/blob/master/socketiop2p.min.js;ref_cta:Customer stories;&quot;,&quot;originating_url&quot;:&quot;https://github.com/socketio/socket.io-p2p/blob/master/socketiop2p.min.js&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="78c291e03cb7c231ecab1b5ad3287653c94dcfc7eb8a2a31160ae5a0b6c8baf3" data-analytics-event="{&quot;category&quot;:&quot;Header dropdown (logged out), Why GitHub?&quot;,&quot;action&quot;:&quot;click to go to Customer stories&quot;,&quot;label&quot;:&quot;ref_page:/socketio/socket.io-p2p/blob/master/socketiop2p.min.js;ref_cta:Customer stories;&quot;}" href="/customer-stories">
Customer stories
</a> </li>

</ul>
</div>
</details>
</li>


<li class="mr-0 mr-lg-3 position-relative flex-wrap flex-justify-between flex-items-center border-bottom border-lg-bottom-0 d-block d-lg-flex flex-lg-nowrap flex-lg-items-center">
<a class="HeaderMenu-link no-underline py-3 d-block d-lg-inline-block" data-hydro-click="{&quot;event_type&quot;:&quot;analytics.event&quot;,&quot;payload&quot;:{&quot;category&quot;:&quot;Header menu top item (logged out)&quot;,&quot;action&quot;:&quot;click to go to Team&quot;,&quot;label&quot;:&quot;ref_page:/socketio/socket.io-p2p/blob/master/socketiop2p.min.js;ref_cta:Team;&quot;,&quot;originating_url&quot;:&quot;https://github.com/socketio/socket.io-p2p/blob/master/socketiop2p.min.js&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="791424453399dd45c3de860c24e98e7c46daff159b1c93ca244fd05581fc720a" data-analytics-event="{&quot;category&quot;:&quot;Header menu top item (logged out)&quot;,&quot;action&quot;:&quot;click to go to Team&quot;,&quot;label&quot;:&quot;ref_page:/socketio/socket.io-p2p/blob/master/socketiop2p.min.js;ref_cta:Team;&quot;}" href="/team">Team</a>
</li>

<li class="mr-0 mr-lg-3 position-relative flex-wrap flex-justify-between flex-items-center border-bottom border-lg-bottom-0 d-block d-lg-flex flex-lg-nowrap flex-lg-items-center">
<a class="HeaderMenu-link no-underline py-3 d-block d-lg-inline-block" data-hydro-click="{&quot;event_type&quot;:&quot;analytics.event&quot;,&quot;payload&quot;:{&quot;category&quot;:&quot;Header menu top item (logged out)&quot;,&quot;action&quot;:&quot;click to go to Enterprise&quot;,&quot;label&quot;:&quot;ref_page:/socketio/socket.io-p2p/blob/master/socketiop2p.min.js;ref_cta:Enterprise;&quot;,&quot;originating_url&quot;:&quot;https://github.com/socketio/socket.io-p2p/blob/master/socketiop2p.min.js&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="c14ba07b4b1e7daaf878f13d8cd07d75eaa4d7299c3afaf03dc66779284546f6" data-analytics-event="{&quot;category&quot;:&quot;Header menu top item (logged out)&quot;,&quot;action&quot;:&quot;click to go to Enterprise&quot;,&quot;label&quot;:&quot;ref_page:/socketio/socket.io-p2p/blob/master/socketiop2p.min.js;ref_cta:Enterprise;&quot;}" href="/enterprise">Enterprise</a>
</li>


<li class="mr-0 mr-lg-3 position-relative flex-wrap flex-justify-between flex-items-center border-bottom border-lg-bottom-0 d-block d-lg-flex flex-lg-nowrap flex-lg-items-center">
<details class="HeaderMenu-details details-overlay details-reset width-full">
<summary class="HeaderMenu-summary HeaderMenu-link px-0 py-3 border-0 no-wrap d-block d-lg-inline-block">
Explore
<svg x="0" y="0" viewBox="0 0 14 8" xml:space="preserve" fill="none" class="icon-chevon-down-mktg position-absolute position-lg-relative"><path d="M1,1l6.2,6L13,1"></path></svg>
</summary>
<div class="dropdown-menu flex-auto rounded px-0 mt-0 pb-4 p-lg-4 position-relative position-lg-absolute left-0 left-lg-n4">
<ul class="list-style-none f5 pb-1">
<li>
<a class="lh-condensed-ultra d-block no-underline position-relative Link--primary text-bold py-2" data-hydro-click="{&quot;event_type&quot;:&quot;analytics.event&quot;,&quot;payload&quot;:{&quot;category&quot;:&quot;Header dropdown (logged out), Explore&quot;,&quot;action&quot;:&quot;click to go to Explore GitHub&quot;,&quot;label&quot;:&quot;ref_page:/socketio/socket.io-p2p/blob/master/socketiop2p.min.js;ref_cta:Explore GitHub;&quot;,&quot;originating_url&quot;:&quot;https://github.com/socketio/socket.io-p2p/blob/master/socketiop2p.min.js&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="68c17211cc1e0548d55eb99539187bb8d8c5f150982b5844ae244d8137dfd4e0" data-analytics-event="{&quot;category&quot;:&quot;Header dropdown (logged out), Explore&quot;,&quot;action&quot;:&quot;click to go to Explore GitHub&quot;,&quot;label&quot;:&quot;ref_page:/socketio/socket.io-p2p/blob/master/socketiop2p.min.js;ref_cta:Explore GitHub;&quot;}" href="/explore">
Explore GitHub
</a> </li>

<li class="color-fg-muted text-normal f6 text-mono mb-1 border-top pt-3 mt-3 mb-1">Learn and contribute</li>

<li>
<a class="lh-condensed-ultra d-block no-underline position-relative Link--secondary py-2" data-hydro-click="{&quot;event_type&quot;:&quot;analytics.event&quot;,&quot;payload&quot;:{&quot;category&quot;:&quot;Header dropdown (logged out), Explore&quot;,&quot;action&quot;:&quot;click to go to Topics&quot;,&quot;label&quot;:&quot;ref_page:/socketio/socket.io-p2p/blob/master/socketiop2p.min.js;ref_cta:Topics;&quot;,&quot;originating_url&quot;:&quot;https://github.com/socketio/socket.io-p2p/blob/master/socketiop2p.min.js&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="c56151b90e36d68ddf87bfec10d6717ef2e4c64f9c7729abb405b9965713c3c3" data-analytics-event="{&quot;category&quot;:&quot;Header dropdown (logged out), Explore&quot;,&quot;action&quot;:&quot;click to go to Topics&quot;,&quot;label&quot;:&quot;ref_page:/socketio/socket.io-p2p/blob/master/socketiop2p.min.js;ref_cta:Topics;&quot;}" href="/topics">
Topics
</a> </li>

<li>
<a class="lh-condensed-ultra d-block no-underline position-relative Link--secondary py-2" data-hydro-click="{&quot;event_type&quot;:&quot;analytics.event&quot;,&quot;payload&quot;:{&quot;category&quot;:&quot;Header dropdown (logged out), Explore&quot;,&quot;action&quot;:&quot;click to go to Collections&quot;,&quot;label&quot;:&quot;ref_page:/socketio/socket.io-p2p/blob/master/socketiop2p.min.js;ref_cta:Collections;&quot;,&quot;originating_url&quot;:&quot;https://github.com/socketio/socket.io-p2p/blob/master/socketiop2p.min.js&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="c8a80c5ebe87096ad18283c5c4527b7ea7cd68f25fbfe59a6677efdb0702dd31" data-analytics-event="{&quot;category&quot;:&quot;Header dropdown (logged out), Explore&quot;,&quot;action&quot;:&quot;click to go to Collections&quot;,&quot;label&quot;:&quot;ref_page:/socketio/socket.io-p2p/blob/master/socketiop2p.min.js;ref_cta:Collections;&quot;}" href="/collections">
Collections
</a> </li>

<li>
<a class="lh-condensed-ultra d-block no-underline position-relative Link--secondary py-2" data-hydro-click="{&quot;event_type&quot;:&quot;analytics.event&quot;,&quot;payload&quot;:{&quot;category&quot;:&quot;Header dropdown (logged out), Explore&quot;,&quot;action&quot;:&quot;click to go to Trending&quot;,&quot;label&quot;:&quot;ref_page:/socketio/socket.io-p2p/blob/master/socketiop2p.min.js;ref_cta:Trending;&quot;,&quot;originating_url&quot;:&quot;https://github.com/socketio/socket.io-p2p/blob/master/socketiop2p.min.js&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="393306a421e729ab0f3dce49c2204954f6ca0ddb11e858b7b9162682597c6085" data-analytics-event="{&quot;category&quot;:&quot;Header dropdown (logged out), Explore&quot;,&quot;action&quot;:&quot;click to go to Trending&quot;,&quot;label&quot;:&quot;ref_page:/socketio/socket.io-p2p/blob/master/socketiop2p.min.js;ref_cta:Trending;&quot;}" href="/trending">
Trending
</a> </li>

<li>
<a class="lh-condensed-ultra d-block no-underline position-relative Link--secondary py-2" data-hydro-click="{&quot;event_type&quot;:&quot;analytics.event&quot;,&quot;payload&quot;:{&quot;category&quot;:&quot;Header dropdown (logged out), Explore&quot;,&quot;action&quot;:&quot;click to go to Learning Lab&quot;,&quot;label&quot;:&quot;ref_page:/socketio/socket.io-p2p/blob/master/socketiop2p.min.js;ref_cta:Learning Lab;&quot;,&quot;originating_url&quot;:&quot;https://github.com/socketio/socket.io-p2p/blob/master/socketiop2p.min.js&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="31e5c429b43aaff1c54f438fd27908d6d6ad835f2de1963440771d7c785d6381" data-analytics-event="{&quot;category&quot;:&quot;Header dropdown (logged out), Explore&quot;,&quot;action&quot;:&quot;click to go to Learning Lab&quot;,&quot;label&quot;:&quot;ref_page:/socketio/socket.io-p2p/blob/master/socketiop2p.min.js;ref_cta:Learning Lab;&quot;}" href="https://lab.github.com/">
Learning Lab
</a> </li>

<li>
<a class="lh-condensed-ultra d-block no-underline position-relative Link--secondary py-2" data-hydro-click="{&quot;event_type&quot;:&quot;analytics.event&quot;,&quot;payload&quot;:{&quot;category&quot;:&quot;Header dropdown (logged out), Explore&quot;,&quot;action&quot;:&quot;click to go to Open source guides&quot;,&quot;label&quot;:&quot;ref_page:/socketio/socket.io-p2p/blob/master/socketiop2p.min.js;ref_cta:Open source guides;&quot;,&quot;originating_url&quot;:&quot;https://github.com/socketio/socket.io-p2p/blob/master/socketiop2p.min.js&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="fc6225911e63aead94b710bc6811fdf5e0490b7dd9e30745bec136d9e78a334d" data-analytics-event="{&quot;category&quot;:&quot;Header dropdown (logged out), Explore&quot;,&quot;action&quot;:&quot;click to go to Open source guides&quot;,&quot;label&quot;:&quot;ref_page:/socketio/socket.io-p2p/blob/master/socketiop2p.min.js;ref_cta:Open source guides;&quot;}" href="https://opensource.guide">
Open source guides
</a> </li>

<li class="color-fg-muted text-normal f6 text-mono mb-1 border-top pt-3 mt-3 mb-1">Connect with others</li>

<li>
<a class="lh-condensed-ultra d-block no-underline position-relative Link--secondary py-2" data-hydro-click="{&quot;event_type&quot;:&quot;analytics.event&quot;,&quot;payload&quot;:{&quot;category&quot;:&quot;Header dropdown (logged out), Explore&quot;,&quot;action&quot;:&quot;click to go to The ReadME Project&quot;,&quot;label&quot;:&quot;ref_page:/socketio/socket.io-p2p/blob/master/socketiop2p.min.js;ref_cta:The ReadME Project;&quot;,&quot;originating_url&quot;:&quot;https://github.com/socketio/socket.io-p2p/blob/master/socketiop2p.min.js&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="be48918ec037d36017492ed024cd9ef87f44d54130181be9f6ec35d4bda2e6ec" data-analytics-event="{&quot;category&quot;:&quot;Header dropdown (logged out), Explore&quot;,&quot;action&quot;:&quot;click to go to The ReadME Project&quot;,&quot;label&quot;:&quot;ref_page:/socketio/socket.io-p2p/blob/master/socketiop2p.min.js;ref_cta:The ReadME Project;&quot;}" href="/readme">
The ReadME Project
</a> </li>

<li>
<a class="lh-condensed-ultra d-block no-underline position-relative Link--secondary py-2" data-hydro-click="{&quot;event_type&quot;:&quot;analytics.event&quot;,&quot;payload&quot;:{&quot;category&quot;:&quot;Header dropdown (logged out), Explore&quot;,&quot;action&quot;:&quot;click to go to Events&quot;,&quot;label&quot;:&quot;ref_page:/socketio/socket.io-p2p/blob/master/socketiop2p.min.js;ref_cta:Events;&quot;,&quot;originating_url&quot;:&quot;https://github.com/socketio/socket.io-p2p/blob/master/socketiop2p.min.js&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="0d648a7d5de81f2744f506b779754e6feadeb841e9d380a59e41532837218b18" data-analytics-event="{&quot;category&quot;:&quot;Header dropdown (logged out), Explore&quot;,&quot;action&quot;:&quot;click to go to Events&quot;,&quot;label&quot;:&quot;ref_page:/socketio/socket.io-p2p/blob/master/socketiop2p.min.js;ref_cta:Events;&quot;}" href="/events">
Events
</a> </li>

<li>
<a class="lh-condensed-ultra d-block no-underline position-relative Link--secondary py-2" data-hydro-click="{&quot;event_type&quot;:&quot;analytics.event&quot;,&quot;payload&quot;:{&quot;category&quot;:&quot;Header dropdown (logged out), Explore&quot;,&quot;action&quot;:&quot;click to go to Community forum&quot;,&quot;label&quot;:&quot;ref_page:/socketio/socket.io-p2p/blob/master/socketiop2p.min.js;ref_cta:Community forum;&quot;,&quot;originating_url&quot;:&quot;https://github.com/socketio/socket.io-p2p/blob/master/socketiop2p.min.js&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="268d4dc2b22eb6acc7ca59b4157cc45226ef231de63746ae80d96b67d9027177" data-analytics-event="{&quot;category&quot;:&quot;Header dropdown (logged out), Explore&quot;,&quot;action&quot;:&quot;click to go to Community forum&quot;,&quot;label&quot;:&quot;ref_page:/socketio/socket.io-p2p/blob/master/socketiop2p.min.js;ref_cta:Community forum;&quot;}" href="https://github.community">
Community forum
</a> </li>

<li>
<a class="lh-condensed-ultra d-block no-underline position-relative Link--secondary py-2" data-hydro-click="{&quot;event_type&quot;:&quot;analytics.event&quot;,&quot;payload&quot;:{&quot;category&quot;:&quot;Header dropdown (logged out), Explore&quot;,&quot;action&quot;:&quot;click to go to GitHub Education&quot;,&quot;label&quot;:&quot;ref_page:/socketio/socket.io-p2p/blob/master/socketiop2p.min.js;ref_cta:GitHub Education;&quot;,&quot;originating_url&quot;:&quot;https://github.com/socketio/socket.io-p2p/blob/master/socketiop2p.min.js&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="554e214647c12ebfa1f137d44d6112882523a5435f829b3bdbdb992b7948e719" data-analytics-event="{&quot;category&quot;:&quot;Header dropdown (logged out), Explore&quot;,&quot;action&quot;:&quot;click to go to GitHub Education&quot;,&quot;label&quot;:&quot;ref_page:/socketio/socket.io-p2p/blob/master/socketiop2p.min.js;ref_cta:GitHub Education;&quot;}" href="https://education.github.com">
GitHub Education
</a> </li>

<li>
<a class="lh-condensed-ultra d-block no-underline position-relative Link--secondary py-2" data-hydro-click="{&quot;event_type&quot;:&quot;analytics.event&quot;,&quot;payload&quot;:{&quot;category&quot;:&quot;Header dropdown (logged out), Explore&quot;,&quot;action&quot;:&quot;click to go to GitHub Stars program&quot;,&quot;label&quot;:&quot;ref_page:/socketio/socket.io-p2p/blob/master/socketiop2p.min.js;ref_cta:GitHub Stars program;&quot;,&quot;originating_url&quot;:&quot;https://github.com/socketio/socket.io-p2p/blob/master/socketiop2p.min.js&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="50d324ff3cf5cae6c7720249c03e817972e4c8fffbe58025b98136bccbeed1b0" data-analytics-event="{&quot;category&quot;:&quot;Header dropdown (logged out), Explore&quot;,&quot;action&quot;:&quot;click to go to GitHub Stars program&quot;,&quot;label&quot;:&quot;ref_page:/socketio/socket.io-p2p/blob/master/socketiop2p.min.js;ref_cta:GitHub Stars program;&quot;}" href="https://stars.github.com">
GitHub Stars program
</a> </li>

</ul>
</div>
</details>
</li>


<li class="mr-0 mr-lg-3 position-relative flex-wrap flex-justify-between flex-items-center border-bottom border-lg-bottom-0 d-block d-lg-flex flex-lg-nowrap flex-lg-items-center">
<a class="HeaderMenu-link no-underline py-3 d-block d-lg-inline-block" data-hydro-click="{&quot;event_type&quot;:&quot;analytics.event&quot;,&quot;payload&quot;:{&quot;category&quot;:&quot;Header menu top item (logged out)&quot;,&quot;action&quot;:&quot;click to go to Marketplace&quot;,&quot;label&quot;:&quot;ref_page:/socketio/socket.io-p2p/blob/master/socketiop2p.min.js;ref_cta:Marketplace;&quot;,&quot;originating_url&quot;:&quot;https://github.com/socketio/socket.io-p2p/blob/master/socketiop2p.min.js&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="83257ce8e39b308dfa6306d4a7cb4f84f8c27021f8772e759f9e6d18d43e0dc5" data-analytics-event="{&quot;category&quot;:&quot;Header menu top item (logged out)&quot;,&quot;action&quot;:&quot;click to go to Marketplace&quot;,&quot;label&quot;:&quot;ref_page:/socketio/socket.io-p2p/blob/master/socketiop2p.min.js;ref_cta:Marketplace;&quot;}" href="/marketplace">Marketplace</a>
</li>


<li class="mr-0 mr-lg-3 position-relative flex-wrap flex-justify-between flex-items-center border-bottom border-lg-bottom-0 d-block d-lg-flex flex-lg-nowrap flex-lg-items-center">
<details class="HeaderMenu-details details-overlay details-reset width-full">
<summary class="HeaderMenu-summary HeaderMenu-link px-0 py-3 border-0 no-wrap d-block d-lg-inline-block">
Pricing
<svg x="0" y="0" viewBox="0 0 14 8" xml:space="preserve" fill="none" class="icon-chevon-down-mktg position-absolute position-lg-relative"><path d="M1,1l6.2,6L13,1"></path></svg>
</summary>
<div class="dropdown-menu flex-auto rounded px-0 mt-0 pb-4 p-lg-4 position-relative position-lg-absolute left-0 left-lg-n4">
<ul class="list-style-none f5 pb-1">
<li>
<a class="lh-condensed-ultra d-block no-underline position-relative Link--primary text-bold py-2" data-hydro-click="{&quot;event_type&quot;:&quot;analytics.event&quot;,&quot;payload&quot;:{&quot;category&quot;:&quot;Header dropdown (logged out), Pricing&quot;,&quot;action&quot;:&quot;click to go to Plans&quot;,&quot;label&quot;:&quot;ref_page:/socketio/socket.io-p2p/blob/master/socketiop2p.min.js;ref_cta:Plans;&quot;,&quot;originating_url&quot;:&quot;https://github.com/socketio/socket.io-p2p/blob/master/socketiop2p.min.js&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="2153719b0c9adf601046b189ee4ce89b895a79806937d34ae37370ee1f10e733" data-analytics-event="{&quot;category&quot;:&quot;Header dropdown (logged out), Pricing&quot;,&quot;action&quot;:&quot;click to go to Plans&quot;,&quot;label&quot;:&quot;ref_page:/socketio/socket.io-p2p/blob/master/socketiop2p.min.js;ref_cta:Plans;&quot;}" href="/pricing">
Plans
</a> </li>

<li>
<a class="lh-condensed-ultra d-block no-underline position-relative Link--secondary py-2" data-hydro-click="{&quot;event_type&quot;:&quot;analytics.event&quot;,&quot;payload&quot;:{&quot;category&quot;:&quot;Header dropdown (logged out), Pricing&quot;,&quot;action&quot;:&quot;click to go to Compare plans&quot;,&quot;label&quot;:&quot;ref_page:/socketio/socket.io-p2p/blob/master/socketiop2p.min.js;ref_cta:Compare plans;&quot;,&quot;originating_url&quot;:&quot;https://github.com/socketio/socket.io-p2p/blob/master/socketiop2p.min.js&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="b7e0a334a1cefc72b025e07d5fb11cadfbd63193cb9036c9406e9701c190be87" data-analytics-event="{&quot;category&quot;:&quot;Header dropdown (logged out), Pricing&quot;,&quot;action&quot;:&quot;click to go to Compare plans&quot;,&quot;label&quot;:&quot;ref_page:/socketio/socket.io-p2p/blob/master/socketiop2p.min.js;ref_cta:Compare plans;&quot;}" href="/pricing#compare-features">
Compare plans
</a> </li>

<li>
<a class="lh-condensed-ultra d-block no-underline position-relative Link--secondary py-2" data-hydro-click="{&quot;event_type&quot;:&quot;analytics.event&quot;,&quot;payload&quot;:{&quot;category&quot;:&quot;Header dropdown (logged out), Pricing&quot;,&quot;action&quot;:&quot;click to go to Contact Sales&quot;,&quot;label&quot;:&quot;ref_page:/socketio/socket.io-p2p/blob/master/socketiop2p.min.js;ref_cta:Contact Sales;&quot;,&quot;originating_url&quot;:&quot;https://github.com/socketio/socket.io-p2p/blob/master/socketiop2p.min.js&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="ab11064236605b53b571bb5eb190f1307537452a3a345ea8d0dd1e708a1e0cb7" data-analytics-event="{&quot;category&quot;:&quot;Header dropdown (logged out), Pricing&quot;,&quot;action&quot;:&quot;click to go to Contact Sales&quot;,&quot;label&quot;:&quot;ref_page:/socketio/socket.io-p2p/blob/master/socketiop2p.min.js;ref_cta:Contact Sales;&quot;}" href="https://github.com/enterprise/contact">
Contact Sales
</a> </li>

<li>
<a class="lh-condensed-ultra d-block no-underline position-relative Link--primary text-bold border-top pt-4 pb-2 mt-3" data-hydro-click="{&quot;event_type&quot;:&quot;analytics.event&quot;,&quot;payload&quot;:{&quot;category&quot;:&quot;Header dropdown (logged out), Pricing&quot;,&quot;action&quot;:&quot;click to go to Education&quot;,&quot;label&quot;:&quot;ref_page:/socketio/socket.io-p2p/blob/master/socketiop2p.min.js;ref_cta:Education;&quot;,&quot;originating_url&quot;:&quot;https://github.com/socketio/socket.io-p2p/blob/master/socketiop2p.min.js&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="fe96f97063c6b6f3f1b461ce8e3bb7e55919486d7f23d033610513615735d5c1" data-analytics-event="{&quot;category&quot;:&quot;Header dropdown (logged out), Pricing&quot;,&quot;action&quot;:&quot;click to go to Education&quot;,&quot;label&quot;:&quot;ref_page:/socketio/socket.io-p2p/blob/master/socketiop2p.min.js;ref_cta:Education;&quot;}" href="https://education.github.com">
Education
</a> </li>

</ul>
</div>
</details>
</li>

</ul>
</nav>

<div class="d-lg-flex flex-items-center px-3 px-lg-0 text-center text-lg-left">
<div class="d-lg-flex min-width-0 mb-3 mb-lg-0">




<div class="header-search flex-auto js-site-search position-relative flex-self-stretch flex-md-self-auto mb-3 mb-md-0 mr-0 mr-md-3 scoped-search site-scoped-search js-jump-to"
>
<div class="position-relative">
<!-- '"` --><!-- </textarea></xmp> --></option></form><form class="js-site-search-form" role="search" aria-label="Site" data-scope-type="Repository" data-scope-id="32878226" data-scoped-search-url="/socketio/socket.io-p2p/search" data-owner-scoped-search-url="/orgs/socketio/search" data-unscoped-search-url="/search" action="/socketio/socket.io-p2p/search" accept-charset="UTF-8" method="get">
<label class="form-control input-sm header-search-wrapper p-0 js-chromeless-input-container header-search-wrapper-jump-to position-relative d-flex flex-justify-between flex-items-center">
<input type="text"
class="form-control input-sm header-search-input jump-to-field js-jump-to-field js-site-search-focus js-site-search-field is-clearable"
data-hotkey=s,/
name="q"
data-test-selector="nav-search-input"
placeholder="Search"
data-unscoped-placeholder="Search GitHub"
data-scoped-placeholder="Search"
autocapitalize="off"
role="combobox"
aria-haspopup="listbox"
aria-expanded="false"
aria-autocomplete="list"
aria-controls="jump-to-results"
aria-label="Search"
data-jump-to-suggestions-path="/_graphql/GetSuggestedNavigationDestinations"
spellcheck="false"
autocomplete="off"
>
<input type="hidden" data-csrf="true" class="js-data-jump-to-suggestions-path-csrf" value="Z3QBvN3CSLdT0aXw6IgqcFSjOe7xO6Xnhd7fDyLKpvEaqP6dkr+uxMFiEOesYk5Skgc7gIAev/11LLhnXAx6mg==" />
<input type="hidden" class="js-site-search-type-field" name="type" >
<svg xmlns="http://www.w3.org/2000/svg" width="22" height="20" aria-hidden="true" class="mr-1 header-search-key-slash"><path fill="none" stroke="#979A9C" opacity=".4" d="M3.5.5h12c1.7 0 3 1.3 3 3v13c0 1.7-1.3 3-3 3h-12c-1.7 0-3-1.3-3-3v-13c0-1.7 1.3-3 3-3z"></path><path fill="#979A9C" d="M11.8 6L8 15.1h-.9L10.8 6h1z"></path></svg>


<div class="Box position-absolute overflow-hidden d-none jump-to-suggestions js-jump-to-suggestions-container">

<ul class="d-none js-jump-to-suggestions-template-container">


<li class="d-flex flex-justify-start flex-items-center p-0 f5 navigation-item js-navigation-item js-jump-to-suggestion" role="option">
<a tabindex="-1" class="no-underline d-flex flex-auto flex-items-center jump-to-suggestions-path js-jump-to-suggestion-path js-navigation-open p-2" href="" data-item-type="suggestion">
<div class="jump-to-octicon js-jump-to-octicon flex-shrink-0 mr-2 text-center d-none">
<svg title="Repository" aria-label="Repository" role="img" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-repo js-jump-to-octicon-repo d-none flex-shrink-0">
<path fill-rule="evenodd" d="M2 2.5A2.5 2.5 0 014.5 0h8.75a.75.75 0 01.75.75v12.5a.75.75 0 01-.75.75h-2.5a.75.75 0 110-1.5h1.75v-2h-8a1 1 0 00-.714 1.7.75.75 0 01-1.072 1.05A2.495 2.495 0 012 11.5v-9zm10.5-1V9h-8c-.356 0-.694.074-1 .208V2.5a1 1 0 011-1h8zM5 12.25v3.25a.25.25 0 00.4.2l1.45-1.087a.25.25 0 01.3 0L8.6 15.7a.25.25 0 00.4-.2v-3.25a.25.25 0 00-.25-.25h-3.5a.25.25 0 00-.25.25z"></path>
</svg>
<svg title="Project" aria-label="Project" role="img" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-project js-jump-to-octicon-project d-none flex-shrink-0">
<path fill-rule="evenodd" d="M1.75 0A1.75 1.75 0 000 1.75v12.5C0 15.216.784 16 1.75 16h12.5A1.75 1.75 0 0016 14.25V1.75A1.75 1.75 0 0014.25 0H1.75zM1.5 1.75a.25.25 0 01.25-.25h12.5a.25.25 0 01.25.25v12.5a.25.25 0 01-.25.25H1.75a.25.25 0 01-.25-.25V1.75zM11.75 3a.75.75 0 00-.75.75v7.5a.75.75 0 001.5 0v-7.5a.75.75 0 00-.75-.75zm-8.25.75a.75.75 0 011.5 0v5.5a.75.75 0 01-1.5 0v-5.5zM8 3a.75.75 0 00-.75.75v3.5a.75.75 0 001.5 0v-3.5A.75.75 0 008 3z"></path>
</svg>
<svg title="Search" aria-label="Search" role="img" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-search js-jump-to-octicon-search d-none flex-shrink-0">
<path fill-rule="evenodd" d="M11.5 7a4.499 4.499 0 11-8.998 0A4.499 4.499 0 0111.5 7zm-.82 4.74a6 6 0 111.06-1.06l3.04 3.04a.75.75 0 11-1.06 1.06l-3.04-3.04z"></path>
</svg>
</div>

<img class="avatar mr-2 flex-shrink-0 js-jump-to-suggestion-avatar d-none" alt="" aria-label="Team" src="" width="28" height="28">

<div class="jump-to-suggestion-name js-jump-to-suggestion-name flex-auto overflow-hidden text-left no-wrap css-truncate css-truncate-target">
</div>

<div class="border rounded-1 flex-shrink-0 color-bg-subtle px-1 color-fg-muted ml-1 f6 d-none js-jump-to-badge-search">
<span class="js-jump-to-badge-search-text-default d-none" aria-label="in this repository">
In this repository
</span>
<span class="js-jump-to-badge-search-text-global d-none" aria-label="in all of GitHub">
All GitHub
</span>
<span aria-hidden="true" class="d-inline-block ml-1 v-align-middle">↵</span>
</div>

<div aria-hidden="true" class="border rounded-1 flex-shrink-0 color-bg-subtle px-1 color-fg-muted ml-1 f6 d-none d-on-nav-focus js-jump-to-badge-jump">
Jump to
<span class="d-inline-block ml-1 v-align-middle">↵</span>
</div>
</a>
</li>

</ul>

<ul class="d-none js-jump-to-no-results-template-container">
<li class="d-flex flex-justify-center flex-items-center f5 d-none js-jump-to-suggestion p-2">
<span class="color-fg-muted">No suggested jump to results</span>
</li>
</ul>

<ul id="jump-to-results" role="listbox" class="p-0 m-0 js-navigation-container jump-to-suggestions-results-container js-jump-to-suggestions-results-container">


<li class="d-flex flex-justify-start flex-items-center p-0 f5 navigation-item js-navigation-item js-jump-to-scoped-search d-none" role="option">
<a tabindex="-1" class="no-underline d-flex flex-auto flex-items-center jump-to-suggestions-path js-jump-to-suggestion-path js-navigation-open p-2" href="" data-item-type="scoped_search">
<div class="jump-to-octicon js-jump-to-octicon flex-shrink-0 mr-2 text-center d-none">
<svg title="Repository" aria-label="Repository" role="img" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-repo js-jump-to-octicon-repo d-none flex-shrink-0">
<path fill-rule="evenodd" d="M2 2.5A2.5 2.5 0 014.5 0h8.75a.75.75 0 01.75.75v12.5a.75.75 0 01-.75.75h-2.5a.75.75 0 110-1.5h1.75v-2h-8a1 1 0 00-.714 1.7.75.75 0 01-1.072 1.05A2.495 2.495 0 012 11.5v-9zm10.5-1V9h-8c-.356 0-.694.074-1 .208V2.5a1 1 0 011-1h8zM5 12.25v3.25a.25.25 0 00.4.2l1.45-1.087a.25.25 0 01.3 0L8.6 15.7a.25.25 0 00.4-.2v-3.25a.25.25 0 00-.25-.25h-3.5a.25.25 0 00-.25.25z"></path>
</svg>
<svg title="Project" aria-label="Project" role="img" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-project js-jump-to-octicon-project d-none flex-shrink-0">
<path fill-rule="evenodd" d="M1.75 0A1.75 1.75 0 000 1.75v12.5C0 15.216.784 16 1.75 16h12.5A1.75 1.75 0 0016 14.25V1.75A1.75 1.75 0 0014.25 0H1.75zM1.5 1.75a.25.25 0 01.25-.25h12.5a.25.25 0 01.25.25v12.5a.25.25 0 01-.25.25H1.75a.25.25 0 01-.25-.25V1.75zM11.75 3a.75.75 0 00-.75.75v7.5a.75.75 0 001.5 0v-7.5a.75.75 0 00-.75-.75zm-8.25.75a.75.75 0 011.5 0v5.5a.75.75 0 01-1.5 0v-5.5zM8 3a.75.75 0 00-.75.75v3.5a.75.75 0 001.5 0v-3.5A.75.75 0 008 3z"></path>
</svg>
<svg title="Search" aria-label="Search" role="img" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-search js-jump-to-octicon-search d-none flex-shrink-0">
<path fill-rule="evenodd" d="M11.5 7a4.499 4.499 0 11-8.998 0A4.499 4.499 0 0111.5 7zm-.82 4.74a6 6 0 111.06-1.06l3.04 3.04a.75.75 0 11-1.06 1.06l-3.04-3.04z"></path>
</svg>
</div>

<img class="avatar mr-2 flex-shrink-0 js-jump-to-suggestion-avatar d-none" alt="" aria-label="Team" src="" width="28" height="28">

<div class="jump-to-suggestion-name js-jump-to-suggestion-name flex-auto overflow-hidden text-left no-wrap css-truncate css-truncate-target">
</div>

<div class="border rounded-1 flex-shrink-0 color-bg-subtle px-1 color-fg-muted ml-1 f6 d-none js-jump-to-badge-search">
<span class="js-jump-to-badge-search-text-default d-none" aria-label="in this repository">
In this repository
</span>
<span class="js-jump-to-badge-search-text-global d-none" aria-label="in all of GitHub">
All GitHub
</span>
<span aria-hidden="true" class="d-inline-block ml-1 v-align-middle">↵</span>
</div>

<div aria-hidden="true" class="border rounded-1 flex-shrink-0 color-bg-subtle px-1 color-fg-muted ml-1 f6 d-none d-on-nav-focus js-jump-to-badge-jump">
Jump to
<span class="d-inline-block ml-1 v-align-middle">↵</span>
</div>
</a>
</li>



<li class="d-flex flex-justify-start flex-items-center p-0 f5 navigation-item js-navigation-item js-jump-to-owner-scoped-search d-none" role="option">
<a tabindex="-1" class="no-underline d-flex flex-auto flex-items-center jump-to-suggestions-path js-jump-to-suggestion-path js-navigation-open p-2" href="" data-item-type="owner_scoped_search">
<div class="jump-to-octicon js-jump-to-octicon flex-shrink-0 mr-2 text-center d-none">
<svg title="Repository" aria-label="Repository" role="img" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-repo js-jump-to-octicon-repo d-none flex-shrink-0">
<path fill-rule="evenodd" d="M2 2.5A2.5 2.5 0 014.5 0h8.75a.75.75 0 01.75.75v12.5a.75.75 0 01-.75.75h-2.5a.75.75 0 110-1.5h1.75v-2h-8a1 1 0 00-.714 1.7.75.75 0 01-1.072 1.05A2.495 2.495 0 012 11.5v-9zm10.5-1V9h-8c-.356 0-.694.074-1 .208V2.5a1 1 0 011-1h8zM5 12.25v3.25a.25.25 0 00.4.2l1.45-1.087a.25.25 0 01.3 0L8.6 15.7a.25.25 0 00.4-.2v-3.25a.25.25 0 00-.25-.25h-3.5a.25.25 0 00-.25.25z"></path>
</svg>
<svg title="Project" aria-label="Project" role="img" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-project js-jump-to-octicon-project d-none flex-shrink-0">
<path fill-rule="evenodd" d="M1.75 0A1.75 1.75 0 000 1.75v12.5C0 15.216.784 16 1.75 16h12.5A1.75 1.75 0 0016 14.25V1.75A1.75 1.75 0 0014.25 0H1.75zM1.5 1.75a.25.25 0 01.25-.25h12.5a.25.25 0 01.25.25v12.5a.25.25 0 01-.25.25H1.75a.25.25 0 01-.25-.25V1.75zM11.75 3a.75.75 0 00-.75.75v7.5a.75.75 0 001.5 0v-7.5a.75.75 0 00-.75-.75zm-8.25.75a.75.75 0 011.5 0v5.5a.75.75 0 01-1.5 0v-5.5zM8 3a.75.75 0 00-.75.75v3.5a.75.75 0 001.5 0v-3.5A.75.75 0 008 3z"></path>
</svg>
<svg title="Search" aria-label="Search" role="img" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-search js-jump-to-octicon-search d-none flex-shrink-0">
<path fill-rule="evenodd" d="M11.5 7a4.499 4.499 0 11-8.998 0A4.499 4.499 0 0111.5 7zm-.82 4.74a6 6 0 111.06-1.06l3.04 3.04a.75.75 0 11-1.06 1.06l-3.04-3.04z"></path>
</svg>
</div>

<img class="avatar mr-2 flex-shrink-0 js-jump-to-suggestion-avatar d-none" alt="" aria-label="Team" src="" width="28" height="28">

<div class="jump-to-suggestion-name js-jump-to-suggestion-name flex-auto overflow-hidden text-left no-wrap css-truncate css-truncate-target">
</div>

<div class="border rounded-1 flex-shrink-0 color-bg-subtle px-1 color-fg-muted ml-1 f6 d-none js-jump-to-badge-search">
<span class="js-jump-to-badge-search-text-default d-none" aria-label="in this organization">
In this organization
</span>
<span class="js-jump-to-badge-search-text-global d-none" aria-label="in all of GitHub">
All GitHub
</span>
<span aria-hidden="true" class="d-inline-block ml-1 v-align-middle">↵</span>
</div>

<div aria-hidden="true" class="border rounded-1 flex-shrink-0 color-bg-subtle px-1 color-fg-muted ml-1 f6 d-none d-on-nav-focus js-jump-to-badge-jump">
Jump to
<span class="d-inline-block ml-1 v-align-middle">↵</span>
</div>
</a>
</li>



<li class="d-flex flex-justify-start flex-items-center p-0 f5 navigation-item js-navigation-item js-jump-to-global-search d-none" role="option">
<a tabindex="-1" class="no-underline d-flex flex-auto flex-items-center jump-to-suggestions-path js-jump-to-suggestion-path js-navigation-open p-2" href="" data-item-type="global_search">
<div class="jump-to-octicon js-jump-to-octicon flex-shrink-0 mr-2 text-center d-none">
<svg title="Repository" aria-label="Repository" role="img" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-repo js-jump-to-octicon-repo d-none flex-shrink-0">
<path fill-rule="evenodd" d="M2 2.5A2.5 2.5 0 014.5 0h8.75a.75.75 0 01.75.75v12.5a.75.75 0 01-.75.75h-2.5a.75.75 0 110-1.5h1.75v-2h-8a1 1 0 00-.714 1.7.75.75 0 01-1.072 1.05A2.495 2.495 0 012 11.5v-9zm10.5-1V9h-8c-.356 0-.694.074-1 .208V2.5a1 1 0 011-1h8zM5 12.25v3.25a.25.25 0 00.4.2l1.45-1.087a.25.25 0 01.3 0L8.6 15.7a.25.25 0 00.4-.2v-3.25a.25.25 0 00-.25-.25h-3.5a.25.25 0 00-.25.25z"></path>
</svg>
<svg title="Project" aria-label="Project" role="img" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-project js-jump-to-octicon-project d-none flex-shrink-0">
<path fill-rule="evenodd" d="M1.75 0A1.75 1.75 0 000 1.75v12.5C0 15.216.784 16 1.75 16h12.5A1.75 1.75 0 0016 14.25V1.75A1.75 1.75 0 0014.25 0H1.75zM1.5 1.75a.25.25 0 01.25-.25h12.5a.25.25 0 01.25.25v12.5a.25.25 0 01-.25.25H1.75a.25.25 0 01-.25-.25V1.75zM11.75 3a.75.75 0 00-.75.75v7.5a.75.75 0 001.5 0v-7.5a.75.75 0 00-.75-.75zm-8.25.75a.75.75 0 011.5 0v5.5a.75.75 0 01-1.5 0v-5.5zM8 3a.75.75 0 00-.75.75v3.5a.75.75 0 001.5 0v-3.5A.75.75 0 008 3z"></path>
</svg>
<svg title="Search" aria-label="Search" role="img" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-search js-jump-to-octicon-search d-none flex-shrink-0">
<path fill-rule="evenodd" d="M11.5 7a4.499 4.499 0 11-8.998 0A4.499 4.499 0 0111.5 7zm-.82 4.74a6 6 0 111.06-1.06l3.04 3.04a.75.75 0 11-1.06 1.06l-3.04-3.04z"></path>
</svg>
</div>

<img class="avatar mr-2 flex-shrink-0 js-jump-to-suggestion-avatar d-none" alt="" aria-label="Team" src="" width="28" height="28">

<div class="jump-to-suggestion-name js-jump-to-suggestion-name flex-auto overflow-hidden text-left no-wrap css-truncate css-truncate-target">
</div>

<div class="border rounded-1 flex-shrink-0 color-bg-subtle px-1 color-fg-muted ml-1 f6 d-none js-jump-to-badge-search">
<span class="js-jump-to-badge-search-text-default d-none" aria-label="in this repository">
In this repository
</span>
<span class="js-jump-to-badge-search-text-global d-none" aria-label="in all of GitHub">
All GitHub
</span>
<span aria-hidden="true" class="d-inline-block ml-1 v-align-middle">↵</span>
</div>

<div aria-hidden="true" class="border rounded-1 flex-shrink-0 color-bg-subtle px-1 color-fg-muted ml-1 f6 d-none d-on-nav-focus js-jump-to-badge-jump">
Jump to
<span class="d-inline-block ml-1 v-align-middle">↵</span>
</div>
</a>
</li>


</ul>

</div>
</label>
</form> </div>
</div>

</div>

<div class="position-relative mr-3 mb-4 mb-lg-0 d-inline-block">
<a href="/login?return_to=https%3A%2F%2Fgithub.com%2Fsocketio%2Fsocket.io-p2p%2Fblob%2Fmaster%2Fsocketiop2p.min.js"
class="HeaderMenu-link flex-shrink-0 no-underline"
data-hydro-click="{&quot;event_type&quot;:&quot;authentication.click&quot;,&quot;payload&quot;:{&quot;location_in_page&quot;:&quot;site header menu&quot;,&quot;repository_id&quot;:null,&quot;auth_type&quot;:&quot;SIGN_UP&quot;,&quot;originating_url&quot;:&quot;https://github.com/socketio/socket.io-p2p/blob/master/socketiop2p.min.js&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="16d35cbb7c6e26daf0f7e851f5f9217f8d3172b394422760befd39bb9788c1e3"
data-ga-click="(Logged out) Header, clicked Sign in, text:sign-in">
Sign in
</a>
</div>

<a href="/signup?ref_cta=Sign+up&amp;ref_loc=header+logged+out&amp;ref_page=%2F%3Cuser-name%3E%2F%3Crepo-name%3E%2Fblob%2Fshow&amp;source=header-repo&amp;source_repo=socketio%2Fsocket.io-p2p"
class="HeaderMenu-link flex-shrink-0 d-inline-block no-underline border color-border-default rounded px-2 py-1"
data-hydro-click="{&quot;event_type&quot;:&quot;authentication.click&quot;,&quot;payload&quot;:{&quot;location_in_page&quot;:&quot;site header menu&quot;,&quot;repository_id&quot;:null,&quot;auth_type&quot;:&quot;SIGN_UP&quot;,&quot;originating_url&quot;:&quot;https://github.com/socketio/socket.io-p2p/blob/master/socketiop2p.min.js&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="16d35cbb7c6e26daf0f7e851f5f9217f8d3172b394422760befd39bb9788c1e3"
data-hydro-click="{&quot;event_type&quot;:&quot;analytics.event&quot;,&quot;payload&quot;:{&quot;category&quot;:&quot;Sign up&quot;,&quot;action&quot;:&quot;click to sign up for account&quot;,&quot;label&quot;:&quot;ref_page:/&lt;user-name&gt;/&lt;repo-name&gt;/blob/show;ref_cta:Sign up;ref_loc:header logged out&quot;,&quot;originating_url&quot;:&quot;https://github.com/socketio/socket.io-p2p/blob/master/socketiop2p.min.js&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="0e84b2b00ad8a66510fb822a2aa31a0320ac7296620793f64a2303b5cb969839" data-analytics-event="{&quot;category&quot;:&quot;Sign up&quot;,&quot;action&quot;:&quot;click to sign up for account&quot;,&quot;label&quot;:&quot;ref_page:/&lt;user-name&gt;/&lt;repo-name&gt;/blob/show;ref_cta:Sign up;ref_loc:header logged out&quot;}"
>
Sign up
</a>
</div>
</div>
</div>
</header>

</div>

<div id="start-of-content" class="show-on-focus"></div>







<div data-pjax-replace id="js-flash-container">


<template class="js-flash-template">
<div class="flash flash-full {{ className }}">
<div class=" px-2" >
<button class="flash-close js-flash-close" type="button" aria-label="Dismiss this message">
<svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-x">
<path fill-rule="evenodd" d="M3.72 3.72a.75.75 0 011.06 0L8 6.94l3.22-3.22a.75.75 0 111.06 1.06L9.06 8l3.22 3.22a.75.75 0 11-1.06 1.06L8 9.06l-3.22 3.22a.75.75 0 01-1.06-1.06L6.94 8 3.72 4.78a.75.75 0 010-1.06z"></path>
</svg>
</button>

<div>{{ message }}</div>

</div>
</div>
</template>
</div>




<include-fragment class="js-notification-shelf-include-fragment" data-base-src="https://github.com/notifications/beta/shelf"></include-fragment>





<div
class="application-main "
data-commit-hovercards-enabled
data-discussion-hovercards-enabled
data-issue-and-pr-hovercards-enabled
>
<div itemscope itemtype="http://schema.org/SoftwareSourceCode" class="">
<main id="js-repo-pjax-container" data-pjax-container >











<include-fragment src="/orgs/socketio/survey_banner" data-test-selector="survey-banner-selector">
</include-fragment>



<div id="repository-container-header" class="pt-3 hide-full-screen mb-5" style="background-color: var(--color-page-header-bg);" data-pjax-replace>

<div class="d-flex mb-3 px-3 px-md-4 px-lg-5">

<div class="flex-auto min-width-0 width-fit mr-3">
<h1 class=" d-flex flex-wrap flex-items-center wb-break-word f3 text-normal">
<svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-repo color-fg-muted mr-2">
<path fill-rule="evenodd" d="M2 2.5A2.5 2.5 0 014.5 0h8.75a.75.75 0 01.75.75v12.5a.75.75 0 01-.75.75h-2.5a.75.75 0 110-1.5h1.75v-2h-8a1 1 0 00-.714 1.7.75.75 0 01-1.072 1.05A2.495 2.495 0 012 11.5v-9zm10.5-1V9h-8c-.356 0-.694.074-1 .208V2.5a1 1 0 011-1h8zM5 12.25v3.25a.25.25 0 00.4.2l1.45-1.087a.25.25 0 01.3 0L8.6 15.7a.25.25 0 00.4-.2v-3.25a.25.25 0 00-.25-.25h-3.5a.25.25 0 00-.25.25z"></path>
</svg>
<span class="author flex-self-stretch" itemprop="author">
<a class="url fn" rel="author" data-hovercard-type="organization" data-hovercard-url="/orgs/socketio/hovercard" href="/socketio">socketio</a>
</span>
<span class="mx-1 flex-self-stretch color-fg-muted">/</span>
<strong itemprop="name" class="mr-2 flex-self-stretch">
<a data-pjax="#repo-content-pjax-container" href="/socketio/socket.io-p2p">socket.io-p2p</a>
</strong>

<span></span><span class="Label Label--secondary v-align-middle mr-1">Public</span>
</h1>

</div>

<ul class="pagehead-actions flex-shrink-0 d-none d-md-inline" style="padding: 2px 0;">

<li>
<a href="/login?return_to=%2Fsocketio%2Fsocket.io-p2p" rel="nofollow" data-hydro-click="{&quot;event_type&quot;:&quot;authentication.click&quot;,&quot;payload&quot;:{&quot;location_in_page&quot;:&quot;notification subscription menu watch&quot;,&quot;repository_id&quot;:null,&quot;auth_type&quot;:&quot;LOG_IN&quot;,&quot;originating_url&quot;:&quot;https://github.com/socketio/socket.io-p2p/blob/master/socketiop2p.min.js&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="85802d7437452c4bcc1dff5e433cb0dccd2edb7c9e2cc9960164dcfc227c14dc" aria-label="You must be signed in to change notification settings" data-view-component="true" class="tooltipped tooltipped-s btn-sm btn">
<svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-bell">
<path d="M8 16a2 2 0 001.985-1.75c.017-.137-.097-.25-.235-.25h-3.5c-.138 0-.252.113-.235.25A2 2 0 008 16z"></path><path fill-rule="evenodd" d="M8 1.5A3.5 3.5 0 004.5 5v2.947c0 .346-.102.683-.294.97l-1.703 2.556a.018.018 0 00-.003.01l.001.006c0 .002.002.004.004.006a.017.017 0 00.006.004l.007.001h10.964l.007-.001a.016.016 0 00.006-.004.016.016 0 00.004-.006l.001-.007a.017.017 0 00-.003-.01l-1.703-2.554a1.75 1.75 0 01-.294-.97V5A3.5 3.5 0 008 1.5zM3 5a5 5 0 0110 0v2.947c0 .05.015.098.042.139l1.703 2.555A1.518 1.518 0 0113.482 13H2.518a1.518 1.518 0 01-1.263-2.36l1.703-2.554A.25.25 0 003 7.947V5z"></path>
</svg>

Notifications



</a>
</li>


<li>
<div >
<a href="/login?return_to=%2Fsocketio%2Fsocket.io-p2p" rel="nofollow" data-hydro-click="{&quot;event_type&quot;:&quot;authentication.click&quot;,&quot;payload&quot;:{&quot;location_in_page&quot;:&quot;star button&quot;,&quot;repository_id&quot;:32878226,&quot;auth_type&quot;:&quot;LOG_IN&quot;,&quot;originating_url&quot;:&quot;https://github.com/socketio/socket.io-p2p/blob/master/socketiop2p.min.js&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="bfd0e01e76c981311b7e494144e7f22f10812695081f5520e7b5ea441b4e6d25" aria-label="You must be signed in to star a repository" data-view-component="true" class="tooltipped tooltipped-s btn-with-count btn-sm btn">
<svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-star v-align-text-bottom mr-1">
<path fill-rule="evenodd" d="M8 .25a.75.75 0 01.673.418l1.882 3.815 4.21.612a.75.75 0 01.416 1.279l-3.046 2.97.719 4.192a.75.75 0 01-1.088.791L8 12.347l-3.766 1.98a.75.75 0 01-1.088-.79l.72-4.194L.818 6.374a.75.75 0 01.416-1.28l4.21-.611L7.327.668A.75.75 0 018 .25zm0 2.445L6.615 5.5a.75.75 0 01-.564.41l-3.097.45 2.24 2.184a.75.75 0 01.216.664l-.528 3.084 2.769-1.456a.75.75 0 01.698 0l2.77 1.456-.53-3.084a.75.75 0 01.216-.664l2.24-2.183-3.096-.45a.75.75 0 01-.564-.41L8 2.694v.001z"></path>
</svg>

<span data-view-component="true">
Star
</span>


</a> <a
class="social-count js-social-count"
href="/socketio/socket.io-p2p/stargazers"
aria-label="968 users starred this repository"
data-singular-suffix="user starred this repository"
data-plural-suffix="users starred this repository"
>
968
</a>
</div>

</li>

<li>
<a href="/login?return_to=%2Fsocketio%2Fsocket.io-p2p" rel="nofollow" data-hydro-click="{&quot;event_type&quot;:&quot;authentication.click&quot;,&quot;payload&quot;:{&quot;location_in_page&quot;:&quot;repo details fork button&quot;,&quot;repository_id&quot;:32878226,&quot;auth_type&quot;:&quot;LOG_IN&quot;,&quot;originating_url&quot;:&quot;https://github.com/socketio/socket.io-p2p/blob/master/socketiop2p.min.js&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="002a966902109eb1054c637defd76b6cdbc65cec92d5b12b4767e00914a7d4a7" aria-label="You must be signed in to fork a repository" data-view-component="true" class="tooltipped tooltipped-s btn-with-count btn-sm btn">
<svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-repo-forked">
<path fill-rule="evenodd" d="M5 3.25a.75.75 0 11-1.5 0 .75.75 0 011.5 0zm0 2.122a2.25 2.25 0 10-1.5 0v.878A2.25 2.25 0 005.75 8.5h1.5v2.128a2.251 2.251 0 101.5 0V8.5h1.5a2.25 2.25 0 002.25-2.25v-.878a2.25 2.25 0 10-1.5 0v.878a.75.75 0 01-.75.75h-4.5A.75.75 0 015 6.25v-.878zm3.75 7.378a.75.75 0 11-1.5 0 .75.75 0 011.5 0zm3-8.75a.75.75 0 100-1.5.75.75 0 000 1.5z"></path>
</svg>

Fork



</a>
<a
href="/socketio/socket.io-p2p/network/members"
class="social-count"
aria-label="184 users forked this repository"
>
184
</a>

</li>


<li>


</li>
</ul>

</div>

<div id="responsive-meta-container" data-pjax-replace>
</div>



<nav data-pjax="#js-repo-pjax-container" aria-label="Repository" data-view-component="true" class="js-repo-nav js-sidenav-container-pjax js-responsive-underlinenav overflow-hidden UnderlineNav px-3 px-md-4 px-lg-5">

<ul data-view-component="true" class="UnderlineNav-body list-style-none">
<li data-view-component="true" class="d-inline-flex">
<a id="code-tab" href="/socketio/socket.io-p2p" data-tab-item="i0code-tab" data-selected-links="repo_source repo_downloads repo_commits repo_releases repo_tags repo_branches repo_packages repo_deployments /socketio/socket.io-p2p" data-pjax="#repo-content-pjax-container" data-hotkey="g c" data-ga-click="Repository, Navigation click, Code tab" aria-current="page" data-view-component="true" class="UnderlineNav-item hx_underlinenav-item no-wrap js-responsive-underlinenav-item js-selected-navigation-item selected">

<svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-code UnderlineNav-octicon d-none d-sm-inline">
<path fill-rule="evenodd" d="M4.72 3.22a.75.75 0 011.06 1.06L2.06 8l3.72 3.72a.75.75 0 11-1.06 1.06L.47 8.53a.75.75 0 010-1.06l4.25-4.25zm6.56 0a.75.75 0 10-1.06 1.06L13.94 8l-3.72 3.72a.75.75 0 101.06 1.06l4.25-4.25a.75.75 0 000-1.06l-4.25-4.25z"></path>
</svg>
<span data-content="Code">Code</span>
<span id="code-repo-tab-count" data-pjax-replace="" title="Not available" data-view-component="true" class="Counter"></span>



</a></li>
<li data-view-component="true" class="d-inline-flex">
<a id="issues-tab" href="/socketio/socket.io-p2p/issues" data-tab-item="i1issues-tab" data-selected-links="repo_issues repo_labels repo_milestones /socketio/socket.io-p2p/issues" data-pjax="#repo-content-pjax-container" data-hotkey="g i" data-ga-click="Repository, Navigation click, Issues tab" data-view-component="true" class="UnderlineNav-item hx_underlinenav-item no-wrap js-responsive-underlinenav-item js-selected-navigation-item">

<svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-issue-opened UnderlineNav-octicon d-none d-sm-inline">
<path d="M8 9.5a1.5 1.5 0 100-3 1.5 1.5 0 000 3z"></path><path fill-rule="evenodd" d="M8 0a8 8 0 100 16A8 8 0 008 0zM1.5 8a6.5 6.5 0 1113 0 6.5 6.5 0 01-13 0z"></path>
</svg>
<span data-content="Issues">Issues</span>
<span id="issues-repo-tab-count" data-pjax-replace="" title="33" data-view-component="true" class="Counter">33</span>



</a></li>
<li data-view-component="true" class="d-inline-flex">
<a id="pull-requests-tab" href="/socketio/socket.io-p2p/pulls" data-tab-item="i2pull-requests-tab" data-selected-links="repo_pulls checks /socketio/socket.io-p2p/pulls" data-pjax="#repo-content-pjax-container" data-hotkey="g p" data-ga-click="Repository, Navigation click, Pull requests tab" data-view-component="true" class="UnderlineNav-item hx_underlinenav-item no-wrap js-responsive-underlinenav-item js-selected-navigation-item">

<svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-git-pull-request UnderlineNav-octicon d-none d-sm-inline">
<path fill-rule="evenodd" d="M7.177 3.073L9.573.677A.25.25 0 0110 .854v4.792a.25.25 0 01-.427.177L7.177 3.427a.25.25 0 010-.354zM3.75 2.5a.75.75 0 100 1.5.75.75 0 000-1.5zm-2.25.75a2.25 2.25 0 113 2.122v5.256a2.251 2.251 0 11-1.5 0V5.372A2.25 2.25 0 011.5 3.25zM11 2.5h-1V4h1a1 1 0 011 1v5.628a2.251 2.251 0 101.5 0V5A2.5 2.5 0 0011 2.5zm1 10.25a.75.75 0 111.5 0 .75.75 0 01-1.5 0zM3.75 12a.75.75 0 100 1.5.75.75 0 000-1.5z"></path>
</svg>
<span data-content="Pull requests">Pull requests</span>
<span id="pull-requests-repo-tab-count" data-pjax-replace="" title="12" data-view-component="true" class="Counter">12</span>



</a></li>
<li data-view-component="true" class="d-inline-flex">
<a id="actions-tab" href="/socketio/socket.io-p2p/actions" data-tab-item="i3actions-tab" data-selected-links="repo_actions /socketio/socket.io-p2p/actions" data-pjax="#repo-content-pjax-container" data-hotkey="g a" data-ga-click="Repository, Navigation click, Actions tab" data-view-component="true" class="UnderlineNav-item hx_underlinenav-item no-wrap js-responsive-underlinenav-item js-selected-navigation-item">

<svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-play UnderlineNav-octicon d-none d-sm-inline">
<path fill-rule="evenodd" d="M1.5 8a6.5 6.5 0 1113 0 6.5 6.5 0 01-13 0zM8 0a8 8 0 100 16A8 8 0 008 0zM6.379 5.227A.25.25 0 006 5.442v5.117a.25.25 0 00.379.214l4.264-2.559a.25.25 0 000-.428L6.379 5.227z"></path>
</svg>
<span data-content="Actions">Actions</span>
<span id="actions-repo-tab-count" data-pjax-replace="" title="Not available" data-view-component="true" class="Counter"></span>



</a></li>
<li data-view-component="true" class="d-inline-flex">
<a id="projects-tab" href="/socketio/socket.io-p2p/projects" data-tab-item="i4projects-tab" data-selected-links="repo_projects new_repo_project repo_project /socketio/socket.io-p2p/projects" data-pjax="#repo-content-pjax-container" data-hotkey="g b" data-ga-click="Repository, Navigation click, Projects tab" data-view-component="true" class="UnderlineNav-item hx_underlinenav-item no-wrap js-responsive-underlinenav-item js-selected-navigation-item">

<svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-project UnderlineNav-octicon d-none d-sm-inline">
<path fill-rule="evenodd" d="M1.75 0A1.75 1.75 0 000 1.75v12.5C0 15.216.784 16 1.75 16h12.5A1.75 1.75 0 0016 14.25V1.75A1.75 1.75 0 0014.25 0H1.75zM1.5 1.75a.25.25 0 01.25-.25h12.5a.25.25 0 01.25.25v12.5a.25.25 0 01-.25.25H1.75a.25.25 0 01-.25-.25V1.75zM11.75 3a.75.75 0 00-.75.75v7.5a.75.75 0 001.5 0v-7.5a.75.75 0 00-.75-.75zm-8.25.75a.75.75 0 011.5 0v5.5a.75.75 0 01-1.5 0v-5.5zM8 3a.75.75 0 00-.75.75v3.5a.75.75 0 001.5 0v-3.5A.75.75 0 008 3z"></path>
</svg>
<span data-content="Projects">Projects</span>
<span id="projects-repo-tab-count" data-pjax-replace="" title="0" hidden="hidden" data-view-component="true" class="Counter">0</span>



</a></li>
<li data-view-component="true" class="d-inline-flex">
<a id="wiki-tab" href="/socketio/socket.io-p2p/wiki" data-tab-item="i5wiki-tab" data-selected-links="repo_wiki /socketio/socket.io-p2p/wiki" data-pjax="#repo-content-pjax-container" data-hotkey="g w" data-ga-click="Repository, Navigation click, Wikis tab" data-view-component="true" class="UnderlineNav-item hx_underlinenav-item no-wrap js-responsive-underlinenav-item js-selected-navigation-item">

<svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-book UnderlineNav-octicon d-none d-sm-inline">
<path fill-rule="evenodd" d="M0 1.75A.75.75 0 01.75 1h4.253c1.227 0 2.317.59 3 1.501A3.744 3.744 0 0111.006 1h4.245a.75.75 0 01.75.75v10.5a.75.75 0 01-.75.75h-4.507a2.25 2.25 0 00-1.591.659l-.622.621a.75.75 0 01-1.06 0l-.622-.621A2.25 2.25 0 005.258 13H.75a.75.75 0 01-.75-.75V1.75zm8.755 3a2.25 2.25 0 012.25-2.25H14.5v9h-3.757c-.71 0-1.4.201-1.992.572l.004-7.322zm-1.504 7.324l.004-5.073-.002-2.253A2.25 2.25 0 005.003 2.5H1.5v9h3.757a3.75 3.75 0 011.994.574z"></path>
</svg>
<span data-content="Wiki">Wiki</span>
<span id="wiki-repo-tab-count" data-pjax-replace="" title="Not available" data-view-component="true" class="Counter"></span>



</a></li>
<li data-view-component="true" class="d-inline-flex">
<a id="security-tab" href="/socketio/socket.io-p2p/security" data-tab-item="i6security-tab" data-selected-links="security overview alerts policy token_scanning code_scanning /socketio/socket.io-p2p/security" data-pjax="#repo-content-pjax-container" data-hotkey="g s" data-ga-click="Repository, Navigation click, Security tab" data-view-component="true" class="UnderlineNav-item hx_underlinenav-item no-wrap js-responsive-underlinenav-item js-selected-navigation-item">

<svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-shield UnderlineNav-octicon d-none d-sm-inline">
<path fill-rule="evenodd" d="M7.467.133a1.75 1.75 0 011.066 0l5.25 1.68A1.75 1.75 0 0115 3.48V7c0 1.566-.32 3.182-1.303 4.682-.983 1.498-2.585 2.813-5.032 3.855a1.7 1.7 0 01-1.33 0c-2.447-1.042-4.049-2.357-5.032-3.855C1.32 10.182 1 8.566 1 7V3.48a1.75 1.75 0 011.217-1.667l5.25-1.68zm.61 1.429a.25.25 0 00-.153 0l-5.25 1.68a.25.25 0 00-.174.238V7c0 1.358.275 2.666 1.057 3.86.784 1.194 2.121 2.34 4.366 3.297a.2.2 0 00.154 0c2.245-.956 3.582-2.104 4.366-3.298C13.225 9.666 13.5 8.36 13.5 7V3.48a.25.25 0 00-.174-.237l-5.25-1.68zM9 10.5a1 1 0 11-2 0 1 1 0 012 0zm-.25-5.75a.75.75 0 10-1.5 0v3a.75.75 0 001.5 0v-3z"></path>
</svg>
<span data-content="Security">Security</span>
<include-fragment src="/socketio/socket.io-p2p/security/overall-count" accept="text/fragment+html"></include-fragment>


</a></li>
<li data-view-component="true" class="d-inline-flex">
<a id="insights-tab" href="/socketio/socket.io-p2p/pulse" data-tab-item="i7insights-tab" data-selected-links="repo_graphs repo_contributors dependency_graph dependabot_updates pulse people community /socketio/socket.io-p2p/pulse" data-pjax="#repo-content-pjax-container" data-ga-click="Repository, Navigation click, Insights tab" data-view-component="true" class="UnderlineNav-item hx_underlinenav-item no-wrap js-responsive-underlinenav-item js-selected-navigation-item">

<svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-graph UnderlineNav-octicon d-none d-sm-inline">
<path fill-rule="evenodd" d="M1.5 1.75a.75.75 0 00-1.5 0v12.5c0 .414.336.75.75.75h14.5a.75.75 0 000-1.5H1.5V1.75zm14.28 2.53a.75.75 0 00-1.06-1.06L10 7.94 7.53 5.47a.75.75 0 00-1.06 0L3.22 8.72a.75.75 0 001.06 1.06L7 7.06l2.47 2.47a.75.75 0 001.06 0l5.25-5.25z"></path>
</svg>
<span data-content="Insights">Insights</span>
<span id="insights-repo-tab-count" data-pjax-replace="" title="Not available" data-view-component="true" class="Counter"></span>



</a></li>
</ul>
<div style="visibility:hidden;" data-view-component="true" class="UnderlineNav-actions js-responsive-underlinenav-overflow position-absolute pr-3 pr-md-4 pr-lg-5 right-0"> <details data-view-component="true" class="details-overlay details-reset position-relative">
<summary role="button" data-view-component="true"> <div class="UnderlineNav-item mr-0 border-0">
<svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-kebab-horizontal">
<path d="M8 9a1.5 1.5 0 100-3 1.5 1.5 0 000 3zM1.5 9a1.5 1.5 0 100-3 1.5 1.5 0 000 3zm13 0a1.5 1.5 0 100-3 1.5 1.5 0 000 3z"></path>
</svg>
<span class="sr-only">More</span>
</div>
</summary>
<div data-view-component="true"> <details-menu role="menu" data-view-component="true" class="dropdown-menu dropdown-menu-sw">

<ul>
<li data-menu-item="i0code-tab" hidden>
<a role="menuitem" class="js-selected-navigation-item selected dropdown-item" aria-current="page" data-selected-links="repo_source repo_downloads repo_commits repo_releases repo_tags repo_branches repo_packages repo_deployments /socketio/socket.io-p2p" href="/socketio/socket.io-p2p">
Code
</a> </li>
<li data-menu-item="i1issues-tab" hidden>
<a role="menuitem" class="js-selected-navigation-item dropdown-item" data-selected-links="repo_issues repo_labels repo_milestones /socketio/socket.io-p2p/issues" href="/socketio/socket.io-p2p/issues">
Issues
</a> </li>
<li data-menu-item="i2pull-requests-tab" hidden>
<a role="menuitem" class="js-selected-navigation-item dropdown-item" data-selected-links="repo_pulls checks /socketio/socket.io-p2p/pulls" href="/socketio/socket.io-p2p/pulls">
Pull requests
</a> </li>
<li data-menu-item="i3actions-tab" hidden>
<a role="menuitem" class="js-selected-navigation-item dropdown-item" data-selected-links="repo_actions /socketio/socket.io-p2p/actions" href="/socketio/socket.io-p2p/actions">
Actions
</a> </li>
<li data-menu-item="i4projects-tab" hidden>
<a role="menuitem" class="js-selected-navigation-item dropdown-item" data-selected-links="repo_projects new_repo_project repo_project /socketio/socket.io-p2p/projects" href="/socketio/socket.io-p2p/projects">
Projects
</a> </li>
<li data-menu-item="i5wiki-tab" hidden>
<a role="menuitem" class="js-selected-navigation-item dropdown-item" data-selected-links="repo_wiki /socketio/socket.io-p2p/wiki" href="/socketio/socket.io-p2p/wiki">
Wiki
</a> </li>
<li data-menu-item="i6security-tab" hidden>
<a role="menuitem" class="js-selected-navigation-item dropdown-item" data-selected-links="security overview alerts policy token_scanning code_scanning /socketio/socket.io-p2p/security" href="/socketio/socket.io-p2p/security">
Security
</a> </li>
<li data-menu-item="i7insights-tab" hidden>
<a role="menuitem" class="js-selected-navigation-item dropdown-item" data-selected-links="repo_graphs repo_contributors dependency_graph dependabot_updates pulse people community /socketio/socket.io-p2p/pulse" href="/socketio/socket.io-p2p/pulse">
Insights
</a> </li>
</ul>

</details-menu></div>
</details></div>
</nav>
</div>



<div class="clearfix new-discussion-timeline container-xl px-3 px-md-4 px-lg-5">
<div id="repo-content-pjax-container" class="repository-content " >








<div>




<a class="d-none js-permalink-shortcut" data-hotkey="y" href="/socketio/socket.io-p2p/blob/858bc466adb26f8b155b6254e4dbfc524614cd36/socketiop2p.min.js">Permalink</a>


<div class="d-flex flex-items-start flex-shrink-0 pb-3 flex-wrap flex-md-nowrap flex-justify-between flex-md-justify-start">

<div class="position-relative">
<details class="details-reset details-overlay mr-0 mb-0 " id="branch-select-menu">
<summary class="btn css-truncate"
data-hotkey="w"
title="Switch branches or tags">
<svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-git-branch">
<path fill-rule="evenodd" d="M11.75 2.5a.75.75 0 100 1.5.75.75 0 000-1.5zm-2.25.75a2.25 2.25 0 113 2.122V6A2.5 2.5 0 0110 8.5H6a1 1 0 00-1 1v1.128a2.251 2.251 0 11-1.5 0V5.372a2.25 2.25 0 111.5 0v1.836A2.492 2.492 0 016 7h4a1 1 0 001-1v-.628A2.25 2.25 0 019.5 3.25zM4.25 12a.75.75 0 100 1.5.75.75 0 000-1.5zM3.5 3.25a.75.75 0 111.5 0 .75.75 0 01-1.5 0z"></path>
</svg>
<span class="css-truncate-target" data-menu-button>master</span>
<span class="dropdown-caret"></span>
</summary>


<div class="SelectMenu">
<div class="SelectMenu-modal">
<header class="SelectMenu-header">
<span class="SelectMenu-title">Switch branches/tags</span>
<button class="SelectMenu-closeButton" type="button" data-toggle-for="branch-select-menu"><svg aria-label="Close menu" aria-hidden="false" role="img" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-x">
<path fill-rule="evenodd" d="M3.72 3.72a.75.75 0 011.06 0L8 6.94l3.22-3.22a.75.75 0 111.06 1.06L9.06 8l3.22 3.22a.75.75 0 11-1.06 1.06L8 9.06l-3.22 3.22a.75.75 0 01-1.06-1.06L6.94 8 3.72 4.78a.75.75 0 010-1.06z"></path>
</svg></button>
</header>

<input-demux data-action="tab-container-change:input-demux#storeInput tab-container-changed:input-demux#updateInput">
<tab-container class="d-flex flex-column js-branches-tags-tabs" style="min-height: 0;">
<div class="SelectMenu-filter">
<input data-target="input-demux.source"
id="context-commitish-filter-field"
class="SelectMenu-input form-control"
aria-owns="ref-list-branches"
data-controls-ref-menu-id="ref-list-branches"
autofocus
autocomplete="off"
aria-label="Filter branches/tags"
placeholder="Filter branches/tags"
type="text"
>
</div>

<div class="SelectMenu-tabs" role="tablist" data-target="input-demux.control" >
<button class="SelectMenu-tab" type="button" role="tab" aria-selected="true">Branches</button>
<button class="SelectMenu-tab" type="button" role="tab">Tags</button>
</div>

<div role="tabpanel" id="ref-list-branches" data-filter-placeholder="Filter branches/tags" class="d-flex flex-column flex-auto overflow-auto" tabindex="">
<ref-selector
type="branch"
data-targets="input-demux.sinks"
data-action="
input-entered:ref-selector#inputEntered
tab-selected:ref-selector#tabSelected
focus-list:ref-selector#focusFirstListMember
"
query-endpoint="/socketio/socket.io-p2p/refs"

cache-key="v0:1572716451.0"
current-committish="bWFzdGVy"
default-branch="bWFzdGVy"
name-with-owner="c29ja2V0aW8vc29ja2V0LmlvLXAycA=="
prefetch-on-mouseover
>

<template data-target="ref-selector.fetchFailedTemplate">
<div class="SelectMenu-message" data-index="{{ index }}">Could not load branches</div>
</template>

<template data-target="ref-selector.noMatchTemplate">
<div class="SelectMenu-message">Nothing to show</div>
</template>


<!-- TODO: this max-height is necessary or else the branch list won't scroll. why? -->
<div data-target="ref-selector.listContainer" role="menu" class="SelectMenu-list " style="max-height: 330px" data-pjax="#repo-content-pjax-container">
<div class="SelectMenu-loading pt-3 pb-0" aria-label="Menu is loading">
<span role="status">
<span class="sr-only">Loading</span>
<svg style="box-sizing: content-box; color: var(--color-icon-primary);" width="32" height="32" viewBox="0 0 16 16" fill="none" data-view-component="true" class="anim-rotate">
<circle cx="8" cy="8" r="7" stroke="currentColor" stroke-opacity="0.25" stroke-width="2" vector-effect="non-scaling-stroke" />
<path d="M15 8a7.002 7.002 0 00-7-7" stroke="currentColor" stroke-width="2" stroke-linecap="round" vector-effect="non-scaling-stroke" />
</svg></span>

</div>
</div>

<template data-target="ref-selector.itemTemplate">
<a href="https://github.com/socketio/socket.io-p2p/blob/{{ urlEncodedRefName }}/socketiop2p.min.js" class="SelectMenu-item" role="menuitemradio" rel="nofollow" aria-checked="{{ isCurrent }}" data-index="{{ index }}">
<svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-check SelectMenu-icon SelectMenu-icon--check">
<path fill-rule="evenodd" d="M13.78 4.22a.75.75 0 010 1.06l-7.25 7.25a.75.75 0 01-1.06 0L2.22 9.28a.75.75 0 011.06-1.06L6 10.94l6.72-6.72a.75.75 0 011.06 0z"></path>
</svg>
<span class="flex-1 css-truncate css-truncate-overflow {{ isFilteringClass }}">{{ refName }}</span>
<span hidden="{{ isNotDefault }}" class="Label Label--secondary flex-self-start">default</span>
</a>
</template>


<footer class="SelectMenu-footer"><a href="/socketio/socket.io-p2p/branches">View all branches</a></footer>
</ref-selector>

</div>

<div role="tabpanel" id="tags-menu" data-filter-placeholder="Find a tag" class="d-flex flex-column flex-auto overflow-auto" tabindex="" hidden>
<ref-selector
type="tag"
data-action="
input-entered:ref-selector#inputEntered
tab-selected:ref-selector#tabSelected
focus-list:ref-selector#focusFirstListMember
"
data-targets="input-demux.sinks"
query-endpoint="/socketio/socket.io-p2p/refs"
cache-key="v0:1572716451.0"
current-committish="bWFzdGVy"
default-branch="bWFzdGVy"
name-with-owner="c29ja2V0aW8vc29ja2V0LmlvLXAycA=="
>

<template data-target="ref-selector.fetchFailedTemplate">
<div class="SelectMenu-message" data-index="{{ index }}">Could not load tags</div>
</template>

<template data-target="ref-selector.noMatchTemplate">
<div class="SelectMenu-message" data-index="{{ index }}">Nothing to show</div>
</template>

<template data-target="ref-selector.itemTemplate">
<a href="https://github.com/socketio/socket.io-p2p/blob/{{ urlEncodedRefName }}/socketiop2p.min.js" class="SelectMenu-item" role="menuitemradio" rel="nofollow" aria-checked="{{ isCurrent }}" data-index="{{ index }}">
<svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-check SelectMenu-icon SelectMenu-icon--check">
<path fill-rule="evenodd" d="M13.78 4.22a.75.75 0 010 1.06l-7.25 7.25a.75.75 0 01-1.06 0L2.22 9.28a.75.75 0 011.06-1.06L6 10.94l6.72-6.72a.75.75 0 011.06 0z"></path>
</svg>
<span class="flex-1 css-truncate css-truncate-overflow {{ isFilteringClass }}">{{ refName }}</span>
<span hidden="{{ isNotDefault }}" class="Label Label--secondary flex-self-start">default</span>
</a>
</template>


<div data-target="ref-selector.listContainer" role="menu" class="SelectMenu-list" style="max-height: 330px" data-pjax="#repo-content-pjax-container">
<div class="SelectMenu-loading pt-3 pb-0" aria-label="Menu is loading">
<span role="status">
<span class="sr-only">Loading</span>
<svg style="box-sizing: content-box; color: var(--color-icon-primary);" width="32" height="32" viewBox="0 0 16 16" fill="none" data-view-component="true" class="anim-rotate">
<circle cx="8" cy="8" r="7" stroke="currentColor" stroke-opacity="0.25" stroke-width="2" vector-effect="non-scaling-stroke" />
<path d="M15 8a7.002 7.002 0 00-7-7" stroke="currentColor" stroke-width="2" stroke-linecap="round" vector-effect="non-scaling-stroke" />
</svg></span>

</div>
</div>
<footer class="SelectMenu-footer"><a href="/socketio/socket.io-p2p/tags">View all tags</a></footer>
</ref-selector>
</div>
</tab-container>
</input-demux>
</div>
</div>

</details>

</div>

<h2 id="blob-path" class="breadcrumb flex-auto flex-self-center min-width-0 text-normal mx-2 width-full width-md-auto flex-order-1 flex-md-order-none mt-3 mt-md-0">
<span class="js-repo-root text-bold"><span class="js-path-segment d-inline-block wb-break-all"><a data-pjax="#repo-content-pjax-container" href="/socketio/socket.io-p2p"><span>socket.io-p2p</span></a></span></span><span class="separator">/</span><strong class="final-path">socketiop2p.min.js</strong>
<span class="separator">/</span><details class="details-reset details-overlay d-inline" id="jumpto-symbol-select-menu">
<summary aria-haspopup="true" data-hotkey="r" data-hydro-click="{&quot;event_type&quot;:&quot;code_navigation.click_on_blob_definitions&quot;,&quot;payload&quot;:{&quot;action&quot;:&quot;click_on_blob_definitions&quot;,&quot;repository_id&quot;:32878226,&quot;ref&quot;:&quot;master&quot;,&quot;language&quot;:&quot;JavaScript&quot;,&quot;originating_url&quot;:&quot;https://github.com/socketio/socket.io-p2p/blob/master/socketiop2p.min.js&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="550e40c218aa5aae3b1ab0c7017f989a83f9bdc267b7369a4ed6458e4a6457cc" data-view-component="true" class="Link--secondary css-truncate btn-link">


<svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-code">
<path fill-rule="evenodd" d="M4.72 3.22a.75.75 0 011.06 1.06L2.06 8l3.72 3.72a.75.75 0 11-1.06 1.06L.47 8.53a.75.75 0 010-1.06l4.25-4.25zm6.56 0a.75.75 0 10-1.06 1.06L13.94 8l-3.72 3.72a.75.75 0 101.06 1.06l4.25-4.25a.75.75 0 000-1.06l-4.25-4.25z"></path>
</svg>
<span data-menu-button>Jump to</span>
<span class="dropdown-caret"></span>



</summary> <details-menu class="SelectMenu SelectMenu--hasFilter" role="menu">
<div class="SelectMenu-modal">
<header class="SelectMenu-header">
<span class="SelectMenu-title">Code definitions</span>
<button class="SelectMenu-closeButton" type="button" data-toggle-for="jumpto-symbol-select-menu">
<svg aria-label="Close menu" role="img" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-x">
<path fill-rule="evenodd" d="M3.72 3.72a.75.75 0 011.06 0L8 6.94l3.22-3.22a.75.75 0 111.06 1.06L9.06 8l3.22 3.22a.75.75 0 11-1.06 1.06L8 9.06l-3.22 3.22a.75.75 0 01-1.06-1.06L6.94 8 3.72 4.78a.75.75 0 010-1.06z"></path>
</svg>
</button>
</header>
<div class="SelectMenu-list">
<div class="SelectMenu-blankslate">
<p class="mb-0 color-fg-muted">
No definitions found in this file.
</p>
</div>
<div data-filterable-for="jumpto-symbols-filter-field" data-filterable-type="substring">
</div>
</div>
<footer class="SelectMenu-footer">
<div class="d-flex flex-justify-between">
Code navigation not available for this commit
<svg class="octicon octicon-dot-fill text-light-gray" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path fill-rule="evenodd" d="M8 4a4 4 0 100 8 4 4 0 000-8z"></path></svg>
</div>
</footer>
</div>
</details-menu>
</details>

</h2>
<a href="/socketio/socket.io-p2p/find/master"
class="js-pjax-capture-input btn mr-2 d-none d-md-block"
data-pjax
data-hotkey="t">
Go to file
</a>

<details id="blob-more-options-details" data-view-component="true" class="details-overlay details-reset position-relative">
<summary role="button" data-view-component="true" class="btn">

<svg aria-label="More options" role="img" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-kebab-horizontal">
<path d="M8 9a1.5 1.5 0 100-3 1.5 1.5 0 000 3zM1.5 9a1.5 1.5 0 100-3 1.5 1.5 0 000 3zm13 0a1.5 1.5 0 100-3 1.5 1.5 0 000 3z"></path>
</svg>



</summary>
<div data-view-component="true"> <ul class="dropdown-menu dropdown-menu-sw">
<li class="d-block d-md-none">
<a class="dropdown-item d-flex flex-items-baseline" data-hydro-click="{&quot;event_type&quot;:&quot;repository.click&quot;,&quot;payload&quot;:{&quot;target&quot;:&quot;FIND_FILE_BUTTON&quot;,&quot;repository_id&quot;:32878226,&quot;originating_url&quot;:&quot;https://github.com/socketio/socket.io-p2p/blob/master/socketiop2p.min.js&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="cdcdf2feb7deefd1f61bfe7a0219c9fb7210247293dd236c759643bbe2744cee" data-ga-click="Repository, find file, location:repo overview" data-hotkey="t" data-pjax="true" href="/socketio/socket.io-p2p/find/master">
<span class="flex-auto">Go to file</span>
<span class="text-small color-fg-muted" aria-hidden="true">T</span>
</a> </li>
<li data-toggle-for="blob-more-options-details">
<button data-toggle-for="jumpto-line-details-dialog" type="button" data-view-component="true" class="dropdown-item btn-link">


<span class="d-flex flex-items-baseline">
<span class="flex-auto">Go to line</span>
<span class="text-small color-fg-muted" aria-hidden="true">L</span>
</span>



</button> </li>
<li data-toggle-for="blob-more-options-details">
<button data-toggle-for="jumpto-symbol-select-menu" type="button" data-view-component="true" class="dropdown-item btn-link">


<span class="d-flex flex-items-baseline">
<span class="flex-auto">Go to definition</span>
<span class="text-small color-fg-muted" aria-hidden="true">R</span>
</span>



</button> </li>
<li class="dropdown-divider" role="none"></li>
<li>
<clipboard-copy data-toggle-for="blob-more-options-details" aria-label="Copy path" value="socketiop2p.min.js" data-view-component="true" class="dropdown-item cursor-pointer">

Copy path

</clipboard-copy> </li>
<li>
<clipboard-copy data-toggle-for="blob-more-options-details" aria-label="Copy permalink" value="https://github.com/socketio/socket.io-p2p/blob/858bc466adb26f8b155b6254e4dbfc524614cd36/socketiop2p.min.js" data-view-component="true" class="dropdown-item cursor-pointer">

<span class="d-flex flex-items-baseline">
<span class="flex-auto">Copy permalink</span>
</span>

</clipboard-copy> </li>
</ul>
</div>
</details> </div>




<div class="Box d-flex flex-column flex-shrink-0 mb-3">

<div class="Box-header Details js-details-container">
<div class="d-flex flex-items-center">
<span class="flex-shrink-0 ml-n1 mr-n1 mt-n1 mb-n1">
<a rel="contributor" data-skip-pjax="true" data-hovercard-type="user" data-hovercard-url="/users/tomcartwrightuk/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="/tomcartwrightuk"><img class="avatar avatar-user" src="https://avatars.githubusercontent.com/u/762446?s=48&amp;v=4" width="24" height="24" alt="@tomcartwrightuk" /></a>
</span>
<div class="flex-1 d-flex flex-items-center ml-3 min-width-0">
<div class="css-truncate css-truncate-overflow">
<a class="text-bold Link--primary" rel="contributor" data-hovercard-type="user" data-hovercard-url="/users/tomcartwrightuk/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="/tomcartwrightuk">tomcartwrightuk</a>

<span class="markdown-title">
<a data-pjax="true" title="UMD bundle with P2P export constructor" class="Link--secondary" href="/socketio/socket.io-p2p/commit/7e3ae5e1dc5655cd31f4b53d1ba3d26af0b353df">UMD bundle with P2P export constructor</a>
</span>
</div>


<span class="ml-2">
<include-fragment accept="text/fragment+html" src="/socketio/socket.io-p2p/commit/7e3ae5e1dc5655cd31f4b53d1ba3d26af0b353df/rollup?direction=e" class="d-inline"></include-fragment>
</span>
</div>
<div class="ml-3 d-flex flex-shrink-0 flex-items-center flex-justify-end color-fg-muted no-wrap">
<span class="d-none d-md-inline">
<span>Latest commit</span>
<a class="text-small text-mono Link--secondary" href="/socketio/socket.io-p2p/commit/7e3ae5e1dc5655cd31f4b53d1ba3d26af0b353df" data-pjax>7e3ae5e</a>
<span itemprop="dateModified"><relative-time datetime="2015-08-19T06:40:47Z" class="no-wrap">Aug 19, 2015</relative-time></span>
</span>

<a data-pjax href="/socketio/socket.io-p2p/commits/master/socketiop2p.min.js" class="ml-3 no-wrap Link--primary no-underline">
<svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-history">
<path fill-rule="evenodd" d="M1.643 3.143L.427 1.927A.25.25 0 000 2.104V5.75c0 .138.112.25.25.25h3.646a.25.25 0 00.177-.427L2.715 4.215a6.5 6.5 0 11-1.18 4.458.75.75 0 10-1.493.154 8.001 8.001 0 101.6-5.684zM7.75 4a.75.75 0 01.75.75v2.992l2.028.812a.75.75 0 01-.557 1.392l-2.5-1A.75.75 0 017 8.25v-3.5A.75.75 0 017.75 4z"></path>
</svg>
<span class="d-none d-sm-inline">
<strong>History</strong>
</span>
</a>
</div>
</div>

</div>

<div class="Box-body d-flex flex-items-center flex-auto border-bottom-0 flex-wrap" >
<details class="details-reset details-overlay details-overlay-dark lh-default color-fg-default float-left mr-3" id="blob_contributors_box">
<summary class="Link--primary">
<svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-people">
<path fill-rule="evenodd" d="M5.5 3.5a2 2 0 100 4 2 2 0 000-4zM2 5.5a3.5 3.5 0 115.898 2.549 5.507 5.507 0 013.034 4.084.75.75 0 11-1.482.235 4.001 4.001 0 00-7.9 0 .75.75 0 01-1.482-.236A5.507 5.507 0 013.102 8.05 3.49 3.49 0 012 5.5zM11 4a.75.75 0 100 1.5 1.5 1.5 0 01.666 2.844.75.75 0 00-.416.672v.352a.75.75 0 00.574.73c1.2.289 2.162 1.2 2.522 2.372a.75.75 0 101.434-.44 5.01 5.01 0 00-2.56-3.012A3 3 0 0011 4z"></path>
</svg>
<strong>1</strong>

contributor
</summary>
<details-dialog
class="Box Box--overlay d-flex flex-column anim-fade-in fast"
aria-label="Users who have contributed to this file"
src="/socketio/socket.io-p2p/contributors-list/master/socketiop2p.min.js" preload>
<div class="Box-header">
<button class="Box-btn-octicon btn-octicon float-right" type="button" aria-label="Close dialog" data-close-dialog>
<svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-x">
<path fill-rule="evenodd" d="M3.72 3.72a.75.75 0 011.06 0L8 6.94l3.22-3.22a.75.75 0 111.06 1.06L9.06 8l3.22 3.22a.75.75 0 11-1.06 1.06L8 9.06l-3.22 3.22a.75.75 0 01-1.06-1.06L6.94 8 3.72 4.78a.75.75 0 010-1.06z"></path>
</svg>
</button>
<h3 class="Box-title">
Users who have contributed to this file
</h3>
</div>
<include-fragment>
<span role="status">
<span class="sr-only">Loading</span>
<svg style="box-sizing: content-box; color: var(--color-icon-primary);" width="32" height="32" viewBox="0 0 16 16" fill="none" data-view-component="true" class="my-3 mx-auto d-block anim-rotate">
<circle cx="8" cy="8" r="7" stroke="currentColor" stroke-opacity="0.25" stroke-width="2" vector-effect="non-scaling-stroke" />
<path d="M15 8a7.002 7.002 0 00-7-7" stroke="currentColor" stroke-width="2" stroke-linecap="round" vector-effect="non-scaling-stroke" />
</svg></span>

</include-fragment>
</details-dialog>
</details>
</div>
</div>







<div data-target="readme-toc.content" class="Box mt-3 position-relative">

<div
class="Box-header py-2 pr-2 d-flex flex-shrink-0 flex-md-row flex-items-center"

>


<div class="text-mono f6 flex-auto pr-3 flex-order-2 flex-md-order-1">

4 lines (3 sloc)
<span class="file-info-divider"></span>
85.1 KB
</div>

<div class="d-flex py-1 py-md-0 flex-auto flex-order-1 flex-md-order-2 flex-sm-grow-0 flex-justify-between hide-sm hide-md">


<div class="BtnGroup">
<a href="/socketio/socket.io-p2p/raw/master/socketiop2p.min.js" id="raw-url" data-view-component="true" class="btn-sm btn BtnGroup-item">

Raw


</a>
<a href="/socketio/socket.io-p2p/blame/master/socketiop2p.min.js" data-hotkey="b" data-view-component="true" class="js-update-url-with-hash btn-sm btn BtnGroup-item">

Blame


</a>
</div>

<div>
<a class="btn-octicon tooltipped tooltipped-nw js-remove-unless-platform"
data-platforms="windows,mac"
href="https://desktop.github.com"
aria-label="Open this file in GitHub Desktop"
data-ga-click="Repository, open with desktop">
<svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-device-desktop">
<path fill-rule="evenodd" d="M1.75 2.5h12.5a.25.25 0 01.25.25v7.5a.25.25 0 01-.25.25H1.75a.25.25 0 01-.25-.25v-7.5a.25.25 0 01.25-.25zM14.25 1H1.75A1.75 1.75 0 000 2.75v7.5C0 11.216.784 12 1.75 12h3.727c-.1 1.041-.52 1.872-1.292 2.757A.75.75 0 004.75 16h6.5a.75.75 0 00.565-1.243c-.772-.885-1.193-1.716-1.292-2.757h3.727A1.75 1.75 0 0016 10.25v-7.5A1.75 1.75 0 0014.25 1zM9.018 12H6.982a5.72 5.72 0 01-.765 2.5h3.566a5.72 5.72 0 01-.765-2.5z"></path>
</svg>
</a>

<remote-clipboard-copy class="d-inline-block btn-octicon" style="height: 26px" data-src="/socketio/socket.io-p2p/raw/master/socketiop2p.min.js" data-action="click:remote-clipboard-copy#remoteCopy">



<span data-target="remote-clipboard-copy.idle"> <span class="tooltipped tooltipped-nw cursor-pointer" data-hydro-click="{&quot;event_type&quot;:&quot;repository.click&quot;,&quot;payload&quot;:{&quot;target&quot;:&quot;COPY_RAW_CONTENTS_BUTTON&quot;,&quot;repository_id&quot;:32878226,&quot;originating_url&quot;:&quot;https://github.com/socketio/socket.io-p2p/blob/master/socketiop2p.min.js&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="ffccc857e171c45c32522706dc5b80abadf64fb4f88e4182c660d0a6bdd3cf05" aria-label="Copy raw contents">
<svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-copy">
<path fill-rule="evenodd" d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 010 1.5h-1.5a.25.25 0 00-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 00.25-.25v-1.5a.75.75 0 011.5 0v1.5A1.75 1.75 0 019.25 16h-7.5A1.75 1.75 0 010 14.25v-7.5z"></path><path fill-rule="evenodd" d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0114.25 11h-7.5A1.75 1.75 0 015 9.25v-7.5zm1.75-.25a.25.25 0 00-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 00.25-.25v-7.5a.25.25 0 00-.25-.25h-7.5z"></path>
</svg>
</span></span>
<span data-target="remote-clipboard-copy.fetching" hidden="hidden"> <span role="status">
<span class="sr-only">Loading</span>
<svg style="box-sizing: content-box; color: var(--color-icon-primary);" width="16" height="16" viewBox="0 0 16 16" fill="none" data-view-component="true" class="anim-rotate">
<circle cx="8" cy="8" r="7" stroke="currentColor" stroke-opacity="0.25" stroke-width="2" vector-effect="non-scaling-stroke" />
<path d="M15 8a7.002 7.002 0 00-7-7" stroke="currentColor" stroke-width="2" stroke-linecap="round" vector-effect="non-scaling-stroke" />
</svg></span>

</span>
<span data-target="remote-clipboard-copy.success" hidden="hidden"> <span class="tooltipped tooltipped-nw" aria-label="Copied!">
<svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-check color-fg-success">
<path fill-rule="evenodd" d="M13.78 4.22a.75.75 0 010 1.06l-7.25 7.25a.75.75 0 01-1.06 0L2.22 9.28a.75.75 0 011.06-1.06L6 10.94l6.72-6.72a.75.75 0 011.06 0z"></path>
</svg>
</span>
</span>
<span data-target="remote-clipboard-copy.error" hidden="hidden"> <span class="tooltipped tooltipped-nw" aria-label="Something went wrong. Try again.">
<svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-alert color-fg-attention">
<path fill-rule="evenodd" d="M8.22 1.754a.25.25 0 00-.44 0L1.698 13.132a.25.25 0 00.22.368h12.164a.25.25 0 00.22-.368L8.22 1.754zm-1.763-.707c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0114.082 15H1.918a1.75 1.75 0 01-1.543-2.575L6.457 1.047zM9 11a1 1 0 11-2 0 1 1 0 012 0zm-.25-5.25a.75.75 0 00-1.5 0v2.5a.75.75 0 001.5 0v-2.5z"></path>
</svg>
</span>
</span>
</remote-clipboard-copy>
<a href="/login?return_to=https%3A%2F%2Fgithub.com%2Fsocketio%2Fsocket.io-p2p%2Fblob%2Fmaster%2Fsocketiop2p.min.js" class="btn-octicon disabled tooltipped tooltipped-nw"
aria-label="You must be signed in to make or propose changes">
<svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-pencil">
<path fill-rule="evenodd" d="M11.013 1.427a1.75 1.75 0 012.474 0l1.086 1.086a1.75 1.75 0 010 2.474l-8.61 8.61c-.21.21-.47.364-.756.445l-3.251.93a.75.75 0 01-.927-.928l.929-3.25a1.75 1.75 0 01.445-.758l8.61-8.61zm1.414 1.06a.25.25 0 00-.354 0L10.811 3.75l1.439 1.44 1.263-1.263a.25.25 0 000-.354l-1.086-1.086zM11.189 6.25L9.75 4.81l-6.286 6.287a.25.25 0 00-.064.108l-.558 1.953 1.953-.558a.249.249 0 00.108-.064l6.286-6.286z"></path>
</svg>
</a>
<a href="/login?return_to=https%3A%2F%2Fgithub.com%2Fsocketio%2Fsocket.io-p2p%2Fblob%2Fmaster%2Fsocketiop2p.min.js" class="btn-octicon btn-octicon-danger disabled tooltipped tooltipped-nw"
aria-label="You must be signed in to make or propose changes">
<svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-trash">
<path fill-rule="evenodd" d="M6.5 1.75a.25.25 0 01.25-.25h2.5a.25.25 0 01.25.25V3h-3V1.75zm4.5 0V3h2.25a.75.75 0 010 1.5H2.75a.75.75 0 010-1.5H5V1.75C5 .784 5.784 0 6.75 0h2.5C10.216 0 11 .784 11 1.75zM4.496 6.675a.75.75 0 10-1.492.15l.66 6.6A1.75 1.75 0 005.405 15h5.19c.9 0 1.652-.681 1.741-1.576l.66-6.6a.75.75 0 00-1.492-.149l-.66 6.6a.25.25 0 01-.249.225h-5.19a.25.25 0 01-.249-.225l-.66-6.6z"></path>
</svg>
</a>
</div>
</div>

<div class="d-flex hide-lg hide-xl flex-order-2 flex-grow-0">
<details class="dropdown details-reset details-overlay d-inline-block">
<summary class="btn-octicon" aria-haspopup="true" aria-label="possible actions">
<svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-kebab-horizontal">
<path d="M8 9a1.5 1.5 0 100-3 1.5 1.5 0 000 3zM1.5 9a1.5 1.5 0 100-3 1.5 1.5 0 000 3zm13 0a1.5 1.5 0 100-3 1.5 1.5 0 000 3z"></path>
</svg>
</summary>

<ul class="dropdown-menu dropdown-menu-sw" style="width: 175px">
<li>
<a class="dropdown-item tooltipped tooltipped-nw js-remove-unless-platform"
data-platforms="windows,mac"
href="https://desktop.github.com"
data-ga-click="Repository, open with desktop">
Open with Desktop
</a>
</li>
<li>
<a class="dropdown-item" href="/socketio/socket.io-p2p/raw/master/socketiop2p.min.js">
View raw
</a>
</li>
<li>
<remote-clipboard-copy class="dropdown-item" data-src="/socketio/socket.io-p2p/raw/master/socketiop2p.min.js" data-action="click:remote-clipboard-copy#remoteCopy">


<span data-target="remote-clipboard-copy.idle"> <span class="cursor-pointer" data-hydro-click="{&quot;event_type&quot;:&quot;repository.click&quot;,&quot;payload&quot;:{&quot;target&quot;:&quot;COPY_RAW_CONTENTS_BUTTON&quot;,&quot;repository_id&quot;:32878226,&quot;originating_url&quot;:&quot;https://github.com/socketio/socket.io-p2p/blob/master/socketiop2p.min.js&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="ffccc857e171c45c32522706dc5b80abadf64fb4f88e4182c660d0a6bdd3cf05">
Copy raw contents
</span></span>
<span data-target="remote-clipboard-copy.fetching" hidden="hidden"> Copy raw contents
<span class="d-inline-block position-relative" style="top: 3px">
<span role="status">
<span class="sr-only">Loading</span>
<svg aria-label="fetching contents…" style="box-sizing: content-box; color: var(--color-icon-primary);" width="16" height="16" viewBox="0 0 16 16" fill="none" data-view-component="true" class="anim-rotate">
<circle cx="8" cy="8" r="7" stroke="currentColor" stroke-opacity="0.25" stroke-width="2" vector-effect="non-scaling-stroke" />
<path d="M15 8a7.002 7.002 0 00-7-7" stroke="currentColor" stroke-width="2" stroke-linecap="round" vector-effect="non-scaling-stroke" />
</svg></span>

</span>
</span>
<span data-target="remote-clipboard-copy.success" hidden="hidden"> Copy raw contents
<svg aria-label="Copied!" role="img" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-check color-fg-success">
<path fill-rule="evenodd" d="M13.78 4.22a.75.75 0 010 1.06l-7.25 7.25a.75.75 0 01-1.06 0L2.22 9.28a.75.75 0 011.06-1.06L6 10.94l6.72-6.72a.75.75 0 011.06 0z"></path>
</svg>
</span>
<span data-target="remote-clipboard-copy.error" hidden="hidden"> Copy raw contents
<svg aria-label="Something went wrong. Try again." role="img" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-alert color-fg-attention">
<path fill-rule="evenodd" d="M8.22 1.754a.25.25 0 00-.44 0L1.698 13.132a.25.25 0 00.22.368h12.164a.25.25 0 00.22-.368L8.22 1.754zm-1.763-.707c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0114.082 15H1.918a1.75 1.75 0 01-1.543-2.575L6.457 1.047zM9 11a1 1 0 11-2 0 1 1 0 012 0zm-.25-5.25a.75.75 0 00-1.5 0v2.5a.75.75 0 001.5 0v-2.5z"></path>
</svg>
</span>
</remote-clipboard-copy> </li>
<li>
<a class="dropdown-item" href="/socketio/socket.io-p2p/blame/master/socketiop2p.min.js">
View blame
</a>
</li>

</ul>
</details>
</div>
</div>



<div itemprop="text" class="Box-body p-0 blob-wrapper data type-javascript gist-border-0">


<div class="js-check-bidi blob-code-content">
<template class="js-file-alert-template">
<div data-view-component="true" class="flash flash-warn flash-full d-flex flex-items-center">
<svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-alert">
<path fill-rule="evenodd" d="M8.22 1.754a.25.25 0 00-.44 0L1.698 13.132a.25.25 0 00.22.368h12.164a.25.25 0 00.22-.368L8.22 1.754zm-1.763-.707c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0114.082 15H1.918a1.75 1.75 0 01-1.543-2.575L6.457 1.047zM9 11a1 1 0 11-2 0 1 1 0 012 0zm-.25-5.25a.75.75 0 00-1.5 0v2.5a.75.75 0 001.5 0v-2.5z"></path>
</svg>

<span>
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
<a href="https://github.co/hiddenchars" target="_blank">Learn more about bidirectional Unicode characters</a>
</span>


<div data-view-component="true" class="flash-action"> <a href="{{ revealButtonHref }}" data-view-component="true" class="btn-sm btn">

Show hidden characters


</a>
</div>
</div></template>
<template class="js-line-alert-template">
<span aria-label="This line has hidden Unicode characters" data-view-component="true" class="bidi-line-alert tooltipped tooltipped-e">
<svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-alert">
<path fill-rule="evenodd" d="M8.22 1.754a.25.25 0 00-.44 0L1.698 13.132a.25.25 0 00.22.368h12.164a.25.25 0 00.22-.368L8.22 1.754zm-1.763-.707c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0114.082 15H1.918a1.75 1.75 0 01-1.543-2.575L6.457 1.047zM9 11a1 1 0 11-2 0 1 1 0 012 0zm-.25-5.25a.75.75 0 00-1.5 0v2.5a.75.75 0 001.5 0v-2.5z"></path>
</svg>
</span></template>

<table class="highlight tab-size js-file-line-container js-code-nav-container js-tagsearch-file" data-tab-size="8" data-paste-markdown-skip data-tagsearch-lang="JavaScript" data-tagsearch-path="socketiop2p.min.js">
<tr>
<td id="L1" class="blob-num js-line-number js-code-nav-line-number" data-line-number="1"></td>
<td id="LC1" class="blob-code blob-code-inner js-file-line">(function(e){if(typeof exports===&quot;object&quot;&amp;&amp;typeof module!==&quot;undefined&quot;){module.exports=e()}else if(typeof define===&quot;function&quot;&amp;&amp;define.amd){define([],e)}else{var t;if(typeof window!==&quot;undefined&quot;){t=window}else if(typeof global!==&quot;undefined&quot;){t=global}else if(typeof self!==&quot;undefined&quot;){t=self}else{t=this}t.P2P=e()}})(function(){var e,t,r;return function n(e,t,r){function i(a,s){if(!t[a]){if(!e[a]){var f=typeof require==&quot;function&quot;&amp;&amp;require;if(!s&amp;&amp;f)return f(a,!0);if(o)return o(a,!0);var c=new Error(&quot;Cannot find module &#39;&quot;+a+&quot;&#39;&quot;);throw c.code=&quot;MODULE_NOT_FOUND&quot;,c}var u=t[a]={exports:{}};e[a][0].call(u.exports,function(t){var r=e[a][1][t];return i(r?r:t)},u,u.exports,n,e,t,r)}return t[a].exports}var o=typeof require==&quot;function&quot;&amp;&amp;require;for(var a=0;a&lt;r.length;a++)i(r[a]);return i}({1:[function(e,t,r){},{}],2:[function(e,t,r){var n=e(&quot;base64-js&quot;);var i=e(&quot;ieee754&quot;);var o=e(&quot;is-array&quot;);r.Buffer=f;r.SlowBuffer=c;r.INSPECT_MAX_BYTES=50;f.poolSize=8192;var a=1073741823;var s={};f.TYPED_ARRAY_SUPPORT=function(){try{var e=new ArrayBuffer(0);var t=new Uint8Array(e);t.foo=function(){return 42};return t.foo()===42&amp;&amp;typeof t.subarray===&quot;function&quot;&amp;&amp;new Uint8Array(1).subarray(1,1).byteLength===0}catch(r){return false}}();function f(e,t,r){if(!(this instanceof f))return new f(e,t,r);var n=typeof e;var i;if(n===&quot;number&quot;){i=+e}else if(n===&quot;string&quot;){i=f.byteLength(e,t)}else if(n===&quot;object&quot;&amp;&amp;e!==null){if(e.type===&quot;Buffer&quot;&amp;&amp;o(e.data))e=e.data;i=+e.length}else{throw new TypeError(&quot;must start with number, buffer, array or string&quot;)}if(i&gt;a)throw new RangeError(&quot;Attempt to allocate Buffer larger than maximum &quot;+&quot;size: 0x&quot;+a.toString(16)+&quot; bytes&quot;);if(i&lt;0)i=0;else i&gt;&gt;&gt;=0;var c=this;if(f.TYPED_ARRAY_SUPPORT){c=f._augment(new Uint8Array(i))}else{c.length=i;c._isBuffer=true}var u;if(f.TYPED_ARRAY_SUPPORT&amp;&amp;typeof e.byteLength===&quot;number&quot;){c._set(e)}else if(P(e)){if(f.isBuffer(e)){for(u=0;u&lt;i;u++)c[u]=e.readUInt8(u)}else{for(u=0;u&lt;i;u++)c[u]=(e[u]%256+256)%256}}else if(n===&quot;string&quot;){c.write(e,0,t)}else if(n===&quot;number&quot;&amp;&amp;!f.TYPED_ARRAY_SUPPORT&amp;&amp;!r){for(u=0;u&lt;i;u++){c[u]=0}}if(i&gt;0&amp;&amp;i&lt;=f.poolSize)c.parent=s;return c}function c(e,t,r){if(!(this instanceof c))return new c(e,t,r);var n=new f(e,t,r);delete n.parent;return n}f.isBuffer=function(e){return!!(e!=null&amp;&amp;e._isBuffer)};f.compare=function(e,t){if(!f.isBuffer(e)||!f.isBuffer(t))throw new TypeError(&quot;Arguments must be Buffers&quot;);if(e===t)return 0;var r=e.length;var n=t.length;for(var i=0,o=Math.min(r,n);i&lt;o&amp;&amp;e[i]===t[i];i++){}if(i!==o){r=e[i];n=t[i]}if(r&lt;n)return-1;if(n&lt;r)return 1;return 0};f.isEncoding=function(e){switch(String(e).toLowerCase()){case&quot;hex&quot;:case&quot;utf8&quot;:case&quot;utf-8&quot;:case&quot;ascii&quot;:case&quot;binary&quot;:case&quot;base64&quot;:case&quot;raw&quot;:case&quot;ucs2&quot;:case&quot;ucs-2&quot;:case&quot;utf16le&quot;:case&quot;utf-16le&quot;:return true;default:return false}};f.concat=function(e,t){if(!o(e))throw new TypeError(&quot;Usage: Buffer.concat(list[, length])&quot;);if(e.length===0){return new f(0)}else if(e.length===1){return e[0]}var r;if(t===undefined){t=0;for(r=0;r&lt;e.length;r++){t+=e[r].length}}var n=new f(t);var i=0;for(r=0;r&lt;e.length;r++){var a=e[r];a.copy(n,i);i+=a.length}return n};f.byteLength=function(e,t){var r;e=e+&quot;&quot;;switch(t||&quot;utf8&quot;){case&quot;ascii&quot;:case&quot;binary&quot;:case&quot;raw&quot;:r=e.length;break;case&quot;ucs2&quot;:case&quot;ucs-2&quot;:case&quot;utf16le&quot;:case&quot;utf-16le&quot;:r=e.length*2;break;case&quot;hex&quot;:r=e.length&gt;&gt;&gt;1;break;case&quot;utf8&quot;:case&quot;utf-8&quot;:r=j(e).length;break;case&quot;base64&quot;:r=O(e).length;break;default:r=e.length}return r};f.prototype.length=undefined;f.prototype.parent=undefined;f.prototype.toString=function(e,t,r){var n=false;t=t&gt;&gt;&gt;0;r=r===undefined||r===Infinity?this.length:r&gt;&gt;&gt;0;if(!e)e=&quot;utf8&quot;;if(t&lt;0)t=0;if(r&gt;this.length)r=this.length;if(r&lt;=t)return&quot;&quot;;while(true){switch(e){case&quot;hex&quot;:return w(this,t,r);case&quot;utf8&quot;:case&quot;utf-8&quot;:return b(this,t,r);case&quot;ascii&quot;:return y(this,t,r);case&quot;binary&quot;:return m(this,t,r);case&quot;base64&quot;:return v(this,t,r);case&quot;ucs2&quot;:case&quot;ucs-2&quot;:case&quot;utf16le&quot;:case&quot;utf-16le&quot;:return _(this,t,r);default:if(n)throw new TypeError(&quot;Unknown encoding: &quot;+e);e=(e+&quot;&quot;).toLowerCase();n=true}}};f.prototype.equals=function(e){if(!f.isBuffer(e))throw new TypeError(&quot;Argument must be a Buffer&quot;);if(this===e)return true;return f.compare(this,e)===0};f.prototype.inspect=function(){var e=&quot;&quot;;var t=r.INSPECT_MAX_BYTES;if(this.length&gt;0){e=this.toString(&quot;hex&quot;,0,t).match(/.{2}/g).join(&quot; &quot;);if(this.length&gt;t)e+=&quot; ... &quot;}return&quot;&lt;Buffer &quot;+e+&quot;&gt;&quot;};f.prototype.compare=function(e){if(!f.isBuffer(e))throw new TypeError(&quot;Argument must be a Buffer&quot;);if(this===e)return 0;return f.compare(this,e)};f.prototype.get=function(e){console.log(&quot;.get() is deprecated. Access using array indexes instead.&quot;);return this.readUInt8(e)};f.prototype.set=function(e,t){console.log(&quot;.set() is deprecated. Access using array indexes instead.&quot;);return this.writeUInt8(e,t)};function u(e,t,r,n){r=Number(r)||0;var i=e.length-r;if(!n){n=i}else{n=Number(n);if(n&gt;i){n=i}}var o=t.length;if(o%2!==0)throw new Error(&quot;Invalid hex string&quot;);if(n&gt;o/2){n=o/2}for(var a=0;a&lt;n;a++){var s=parseInt(t.substr(a*2,2),16);if(isNaN(s))throw new Error(&quot;Invalid hex string&quot;);e[r+a]=s}return a}function l(e,t,r,n){var i=D(j(t,e.length-r),e,r,n);return i}function h(e,t,r,n){var i=D(U(t),e,r,n);return i}function d(e,t,r,n){return h(e,t,r,n)}function p(e,t,r,n){var i=D(O(t),e,r,n);return i}function g(e,t,r,n){var i=D(N(t,e.length-r),e,r,n);return i}f.prototype.write=function(e,t,r,n){if(isFinite(t)){if(!isFinite(r)){n=r;r=undefined}}else{var i=n;n=t;t=r;r=i}t=Number(t)||0;if(r&lt;0||t&lt;0||t&gt;this.length)throw new RangeError(&quot;attempt to write outside buffer bounds&quot;);var o=this.length-t;if(!r){r=o}else{r=Number(r);if(r&gt;o){r=o}}n=String(n||&quot;utf8&quot;).toLowerCase();var a;switch(n){case&quot;hex&quot;:a=u(this,e,t,r);break;case&quot;utf8&quot;:case&quot;utf-8&quot;:a=l(this,e,t,r);break;case&quot;ascii&quot;:a=h(this,e,t,r);break;case&quot;binary&quot;:a=d(this,e,t,r);break;case&quot;base64&quot;:a=p(this,e,t,r);break;case&quot;ucs2&quot;:case&quot;ucs-2&quot;:case&quot;utf16le&quot;:case&quot;utf-16le&quot;:a=g(this,e,t,r);break;default:throw new TypeError(&quot;Unknown encoding: &quot;+n)}return a};f.prototype.toJSON=function(){return{type:&quot;Buffer&quot;,data:Array.prototype.slice.call(this._arr||this,0)}};function v(e,t,r){if(t===0&amp;&amp;r===e.length){return n.fromByteArray(e)}else{return n.fromByteArray(e.slice(t,r))}}function b(e,t,r){var n=&quot;&quot;;var i=&quot;&quot;;r=Math.min(e.length,r);for(var o=t;o&lt;r;o++){if(e[o]&lt;=127){n+=Y(i)+String.fromCharCode(e[o]);i=&quot;&quot;}else{i+=&quot;%&quot;+e[o].toString(16)}}return n+Y(i)}function y(e,t,r){var n=&quot;&quot;;r=Math.min(e.length,r);for(var i=t;i&lt;r;i++){n+=String.fromCharCode(e[i]&amp;127)}return n}function m(e,t,r){var n=&quot;&quot;;r=Math.min(e.length,r);for(var i=t;i&lt;r;i++){n+=String.fromCharCode(e[i])}return n}function w(e,t,r){var n=e.length;if(!t||t&lt;0)t=0;if(!r||r&lt;0||r&gt;n)r=n;var i=&quot;&quot;;for(var o=t;o&lt;r;o++){i+=x(e[o])}return i}function _(e,t,r){var n=e.slice(t,r);var i=&quot;&quot;;for(var o=0;o&lt;n.length;o+=2){i+=String.fromCharCode(n[o]+n[o+1]*256)}return i}f.prototype.slice=function(e,t){var r=this.length;e=~~e;t=t===undefined?r:~~t;if(e&lt;0){e+=r;if(e&lt;0)e=0}else if(e&gt;r){e=r}if(t&lt;0){t+=r;if(t&lt;0)t=0}else if(t&gt;r){t=r}if(t&lt;e)t=e;var n;if(f.TYPED_ARRAY_SUPPORT){n=f._augment(this.subarray(e,t))}else{var i=t-e;n=new f(i,undefined,true);for(var o=0;o&lt;i;o++){n[o]=this[o+e]}}if(n.length)n.parent=this.parent||this;return n};function E(e,t,r){if(e%1!==0||e&lt;0)throw new RangeError(&quot;offset is not uint&quot;);if(e+t&gt;r)throw new RangeError(&quot;Trying to access beyond buffer length&quot;)}f.prototype.readUIntLE=function(e,t,r){e=e&gt;&gt;&gt;0;t=t&gt;&gt;&gt;0;if(!r)E(e,t,this.length);var n=this[e];var i=1;var o=0;while(++o&lt;t&amp;&amp;(i*=256))n+=this[e+o]*i;return n};f.prototype.readUIntBE=function(e,t,r){e=e&gt;&gt;&gt;0;t=t&gt;&gt;&gt;0;if(!r)E(e,t,this.length);var n=this[e+--t];var i=1;while(t&gt;0&amp;&amp;(i*=256))n+=this[e+--t]*i;return n};f.prototype.readUInt8=function(e,t){if(!t)E(e,1,this.length);return this[e]};f.prototype.readUInt16LE=function(e,t){if(!t)E(e,2,this.length);return this[e]|this[e+1]&lt;&lt;8};f.prototype.readUInt16BE=function(e,t){if(!t)E(e,2,this.length);return this[e]&lt;&lt;8|this[e+1]};f.prototype.readUInt32LE=function(e,t){if(!t)E(e,4,this.length);return(this[e]|this[e+1]&lt;&lt;8|this[e+2]&lt;&lt;16)+this[e+3]*16777216};f.prototype.readUInt32BE=function(e,t){if(!t)E(e,4,this.length);return this[e]*16777216+(this[e+1]&lt;&lt;16|this[e+2]&lt;&lt;8|this[e+3])};f.prototype.readIntLE=function(e,t,r){e=e&gt;&gt;&gt;0;t=t&gt;&gt;&gt;0;if(!r)E(e,t,this.length);var n=this[e];var i=1;var o=0;while(++o&lt;t&amp;&amp;(i*=256))n+=this[e+o]*i;i*=128;if(n&gt;=i)n-=Math.pow(2,8*t);return n};f.prototype.readIntBE=function(e,t,r){e=e&gt;&gt;&gt;0;t=t&gt;&gt;&gt;0;if(!r)E(e,t,this.length);var n=t;var i=1;var o=this[e+--n];while(n&gt;0&amp;&amp;(i*=256))o+=this[e+--n]*i;i*=128;if(o&gt;=i)o-=Math.pow(2,8*t);return o};f.prototype.readInt8=function(e,t){if(!t)E(e,1,this.length);if(!(this[e]&amp;128))return this[e];return(255-this[e]+1)*-1};f.prototype.readInt16LE=function(e,t){if(!t)E(e,2,this.length);var r=this[e]|this[e+1]&lt;&lt;8;return r&amp;32768?r|4294901760:r};f.prototype.readInt16BE=function(e,t){if(!t)E(e,2,this.length);var r=this[e+1]|this[e]&lt;&lt;8;return r&amp;32768?r|4294901760:r};f.prototype.readInt32LE=function(e,t){if(!t)E(e,4,this.length);return this[e]|this[e+1]&lt;&lt;8|this[e+2]&lt;&lt;16|this[e+3]&lt;&lt;24};f.prototype.readInt32BE=function(e,t){if(!t)E(e,4,this.length);return this[e]&lt;&lt;24|this[e+1]&lt;&lt;16|this[e+2]&lt;&lt;8|this[e+3]};f.prototype.readFloatLE=function(e,t){if(!t)E(e,4,this.length);return i.read(this,e,true,23,4)};f.prototype.readFloatBE=function(e,t){if(!t)E(e,4,this.length);return i.read(this,e,false,23,4)};f.prototype.readDoubleLE=function(e,t){if(!t)E(e,8,this.length);return i.read(this,e,true,52,8)};f.prototype.readDoubleBE=function(e,t){if(!t)E(e,8,this.length);return i.read(this,e,false,52,8)};function A(e,t,r,n,i,o){if(!f.isBuffer(e))throw new TypeError(&quot;buffer must be a Buffer instance&quot;);if(t&gt;i||t&lt;o)throw new RangeError(&quot;value is out of bounds&quot;);if(r+n&gt;e.length)throw new RangeError(&quot;index out of range&quot;)}f.prototype.writeUIntLE=function(e,t,r,n){e=+e;t=t&gt;&gt;&gt;0;r=r&gt;&gt;&gt;0;if(!n)A(this,e,t,r,Math.pow(2,8*r),0);var i=1;var o=0;this[t]=e&amp;255;while(++o&lt;r&amp;&amp;(i*=256))this[t+o]=e/i&gt;&gt;&gt;0&amp;255;return t+r};f.prototype.writeUIntBE=function(e,t,r,n){e=+e;t=t&gt;&gt;&gt;0;r=r&gt;&gt;&gt;0;if(!n)A(this,e,t,r,Math.pow(2,8*r),0);var i=r-1;var o=1;this[t+i]=e&amp;255;while(--i&gt;=0&amp;&amp;(o*=256))this[t+i]=e/o&gt;&gt;&gt;0&amp;255;return t+r};f.prototype.writeUInt8=function(e,t,r){e=+e;t=t&gt;&gt;&gt;0;if(!r)A(this,e,t,1,255,0);if(!f.TYPED_ARRAY_SUPPORT)e=Math.floor(e);this[t]=e;return t+1};function C(e,t,r,n){if(t&lt;0)t=65535+t+1;for(var i=0,o=Math.min(e.length-r,2);i&lt;o;i++){e[r+i]=(t&amp;255&lt;&lt;8*(n?i:1-i))&gt;&gt;&gt;(n?i:1-i)*8}}f.prototype.writeUInt16LE=function(e,t,r){e=+e;t=t&gt;&gt;&gt;0;if(!r)A(this,e,t,2,65535,0);if(f.TYPED_ARRAY_SUPPORT){this[t]=e;this[t+1]=e&gt;&gt;&gt;8}else C(this,e,t,true);return t+2};f.prototype.writeUInt16BE=function(e,t,r){e=+e;t=t&gt;&gt;&gt;0;if(!r)A(this,e,t,2,65535,0);if(f.TYPED_ARRAY_SUPPORT){this[t]=e&gt;&gt;&gt;8;this[t+1]=e}else C(this,e,t,false);return t+2};function k(e,t,r,n){if(t&lt;0)t=4294967295+t+1;for(var i=0,o=Math.min(e.length-r,4);i&lt;o;i++){e[r+i]=t&gt;&gt;&gt;(n?i:3-i)*8&amp;255}}f.prototype.writeUInt32LE=function(e,t,r){e=+e;t=t&gt;&gt;&gt;0;if(!r)A(this,e,t,4,4294967295,0);if(f.TYPED_ARRAY_SUPPORT){this[t+3]=e&gt;&gt;&gt;24;this[t+2]=e&gt;&gt;&gt;16;this[t+1]=e&gt;&gt;&gt;8;this[t]=e}else k(this,e,t,true);return t+4};f.prototype.writeUInt32BE=function(e,t,r){e=+e;t=t&gt;&gt;&gt;0;if(!r)A(this,e,t,4,4294967295,0);if(f.TYPED_ARRAY_SUPPORT){this[t]=e&gt;&gt;&gt;24;this[t+1]=e&gt;&gt;&gt;16;this[t+2]=e&gt;&gt;&gt;8;this[t+3]=e}else k(this,e,t,false);return t+4};f.prototype.writeIntLE=function(e,t,r,n){e=+e;t=t&gt;&gt;&gt;0;if(!n){A(this,e,t,r,Math.pow(2,8*r-1)-1,-Math.pow(2,8*r-1))}var i=0;var o=1;var a=e&lt;0?1:0;this[t]=e&amp;255;while(++i&lt;r&amp;&amp;(o*=256))this[t+i]=(e/o&gt;&gt;0)-a&amp;255;return t+r};f.prototype.writeIntBE=function(e,t,r,n){e=+e;t=t&gt;&gt;&gt;0;if(!n){A(this,e,t,r,Math.pow(2,8*r-1)-1,-Math.pow(2,8*r-1))}var i=r-1;var o=1;var a=e&lt;0?1:0;this[t+i]=e&amp;255;while(--i&gt;=0&amp;&amp;(o*=256))this[t+i]=(e/o&gt;&gt;0)-a&amp;255;return t+r};f.prototype.writeInt8=function(e,t,r){e=+e;t=t&gt;&gt;&gt;0;if(!r)A(this,e,t,1,127,-128);if(!f.TYPED_ARRAY_SUPPORT)e=Math.floor(e);if(e&lt;0)e=255+e+1;this[t]=e;return t+1};f.prototype.writeInt16LE=function(e,t,r){e=+e;t=t&gt;&gt;&gt;0;if(!r)A(this,e,t,2,32767,-32768);if(f.TYPED_ARRAY_SUPPORT){this[t]=e;this[t+1]=e&gt;&gt;&gt;8}else C(this,e,t,true);return t+2};f.prototype.writeInt16BE=function(e,t,r){e=+e;t=t&gt;&gt;&gt;0;if(!r)A(this,e,t,2,32767,-32768);if(f.TYPED_ARRAY_SUPPORT){this[t]=e&gt;&gt;&gt;8;this[t+1]=e}else C(this,e,t,false);return t+2};f.prototype.writeInt32LE=function(e,t,r){e=+e;t=t&gt;&gt;&gt;0;if(!r)A(this,e,t,4,2147483647,-2147483648);if(f.TYPED_ARRAY_SUPPORT){this[t]=e;this[t+1]=e&gt;&gt;&gt;8;this[t+2]=e&gt;&gt;&gt;16;this[t+3]=e&gt;&gt;&gt;24}else k(this,e,t,true);return t+4};f.prototype.writeInt32BE=function(e,t,r){e=+e;t=t&gt;&gt;&gt;0;if(!r)A(this,e,t,4,2147483647,-2147483648);if(e&lt;0)e=4294967295+e+1;if(f.TYPED_ARRAY_SUPPORT){this[t]=e&gt;&gt;&gt;24;this[t+1]=e&gt;&gt;&gt;16;this[t+2]=e&gt;&gt;&gt;8;this[t+3]=e}else k(this,e,t,false);return t+4};function S(e,t,r,n,i,o){if(t&gt;i||t&lt;o)throw new RangeError(&quot;value is out of bounds&quot;);if(r+n&gt;e.length)throw new RangeError(&quot;index out of range&quot;);if(r&lt;0)throw new RangeError(&quot;index out of range&quot;)}function R(e,t,r,n,o){if(!o)S(e,t,r,4,3.4028234663852886e38,-3.4028234663852886e38);i.write(e,t,r,n,23,4);return r+4}f.prototype.writeFloatLE=function(e,t,r){return R(this,e,t,true,r)};f.prototype.writeFloatBE=function(e,t,r){return R(this,e,t,false,r)};function T(e,t,r,n,o){if(!o)S(e,t,r,8,1.7976931348623157e308,-1.7976931348623157e308);i.write(e,t,r,n,52,8);return r+8}f.prototype.writeDoubleLE=function(e,t,r){return T(this,e,t,true,r)};f.prototype.writeDoubleBE=function(e,t,r){return T(this,e,t,false,r)};f.prototype.copy=function(e,t,r,n){var i=this;if(!r)r=0;if(!n&amp;&amp;n!==0)n=this.length;if(t&gt;=e.length)t=e.length;if(!t)t=0;if(n&gt;0&amp;&amp;n&lt;r)n=r;if(n===r)return 0;if(e.length===0||i.length===0)return 0;if(t&lt;0)throw new RangeError(&quot;targetStart out of bounds&quot;);if(r&lt;0||r&gt;=i.length)throw new RangeError(&quot;sourceStart out of bounds&quot;);if(n&lt;0)throw new RangeError(&quot;sourceEnd out of bounds&quot;);if(n&gt;this.length)n=this.length;if(e.length-t&lt;n-r)n=e.length-t+r;var o=n-r;if(o&lt;1e3||!f.TYPED_ARRAY_SUPPORT){for(var a=0;a&lt;o;a++){e[a+t]=this[a+r]}}else{e._set(this.subarray(r,r+o),t)}return o};f.prototype.fill=function(e,t,r){if(!e)e=0;if(!t)t=0;if(!r)r=this.length;if(r&lt;t)throw new RangeError(&quot;end &lt; start&quot;);if(r===t)return;if(this.length===0)return;if(t&lt;0||t&gt;=this.length)throw new RangeError(&quot;start out of bounds&quot;);if(r&lt;0||r&gt;this.length)throw new RangeError(&quot;end out of bounds&quot;);var n;if(typeof e===&quot;number&quot;){for(n=t;n&lt;r;n++){this[n]=e}}else{var i=j(e.toString());var o=i.length;for(n=t;n&lt;r;n++){this[n]=i[n%o]}}return this};f.prototype.toArrayBuffer=function(){if(typeof Uint8Array!==&quot;undefined&quot;){if(f.TYPED_ARRAY_SUPPORT){return new f(this).buffer}else{var e=new Uint8Array(this.length);for(var t=0,r=e.length;t&lt;r;t+=1){e[t]=this[t]}return e.buffer}}else{throw new TypeError(&quot;Buffer.toArrayBuffer not supported in this browser&quot;)}};var I=f.prototype;f._augment=function(e){e.constructor=f;e._isBuffer=true;e._get=e.get;e._set=e.set;e.get=I.get;e.set=I.set;e.write=I.write;e.toString=I.toString;e.toLocaleString=I.toString;e.toJSON=I.toJSON;e.equals=I.equals;e.compare=I.compare;e.copy=I.copy;e.slice=I.slice;e.readUIntLE=I.readUIntLE;e.readUIntBE=I.readUIntBE;e.readUInt8=I.readUInt8;e.readUInt16LE=I.readUInt16LE;e.readUInt16BE=I.readUInt16BE;e.readUInt32LE=I.readUInt32LE;e.readUInt32BE=I.readUInt32BE;e.readIntLE=I.readIntLE;e.readIntBE=I.readIntBE;e.readInt8=I.readInt8;e.readInt16LE=I.readInt16LE;e.readInt16BE=I.readInt16BE;e.readInt32LE=I.readInt32LE;e.readInt32BE=I.readInt32BE;e.readFloatLE=I.readFloatLE;e.readFloatBE=I.readFloatBE;e.readDoubleLE=I.readDoubleLE;e.readDoubleBE=I.readDoubleBE;e.writeUInt8=I.writeUInt8;e.writeUIntLE=I.writeUIntLE;e.writeUIntBE=I.writeUIntBE;e.writeUInt16LE=I.writeUInt16LE;e.writeUInt16BE=I.writeUInt16BE;e.writeUInt32LE=I.writeUInt32LE;e.writeUInt32BE=I.writeUInt32BE;e.writeIntLE=I.writeIntLE;e.writeIntBE=I.writeIntBE;e.writeInt8=I.writeInt8;e.writeInt16LE=I.writeInt16LE;e.writeInt16BE=I.writeInt16BE;e.writeInt32LE=I.writeInt32LE;e.writeInt32BE=I.writeInt32BE;e.writeFloatLE=I.writeFloatLE;e.writeFloatBE=I.writeFloatBE;e.writeDoubleLE=I.writeDoubleLE;e.writeDoubleBE=I.writeDoubleBE;e.fill=I.fill;e.inspect=I.inspect;e.toArrayBuffer=I.toArrayBuffer;return e};var L=/[^+\/0-9A-z\-]/g;function B(e){e=M(e).replace(L,&quot;&quot;);if(e.length&lt;2)return&quot;&quot;;while(e.length%4!==0){e=e+&quot;=&quot;}return e}function M(e){if(e.trim)return e.trim();return e.replace(/^\s+|\s+$/g,&quot;&quot;)}function P(e){return o(e)||f.isBuffer(e)||e&amp;&amp;typeof e===&quot;object&quot;&amp;&amp;typeof e.length===&quot;number&quot;}function x(e){if(e&lt;16)return&quot;0&quot;+e.toString(16);return e.toString(16)}function j(e,t){t=t||Infinity;var r;var n=e.length;var i=null;var o=[];var a=0;for(;a&lt;n;a++){r=e.charCodeAt(a);if(r&gt;55295&amp;&amp;r&lt;57344){if(i){if(r&lt;56320){if((t-=3)&gt;-1)o.push(239,191,189);i=r;continue}else{r=i-55296&lt;&lt;10|r-56320|65536;i=null}}else{if(r&gt;56319){if((t-=3)&gt;-1)o.push(239,191,189);continue}else if(a+1===n){if((t-=3)&gt;-1)o.push(239,191,189);continue}else{i=r;continue}}}else if(i){if((t-=3)&gt;-1)o.push(239,191,189);i=null}if(r&lt;128){if((t-=1)&lt;0)break;o.push(r)}else if(r&lt;2048){if((t-=2)&lt;0)break;o.push(r&gt;&gt;6|192,r&amp;63|128)}else if(r&lt;65536){if((t-=3)&lt;0)break;o.push(r&gt;&gt;12|224,r&gt;&gt;6&amp;63|128,r&amp;63|128)}else if(r&lt;2097152){if((t-=4)&lt;0)break;o.push(r&gt;&gt;18|240,r&gt;&gt;12&amp;63|128,r&gt;&gt;6&amp;63|128,r&amp;63|128)}else{throw new Error(&quot;Invalid code point&quot;)}}return o}function U(e){var t=[];for(var r=0;r&lt;e.length;r++){t.push(e.charCodeAt(r)&amp;255)}return t}function N(e,t){var r,n,i;var o=[];for(var a=0;a&lt;e.length;a++){if((t-=2)&lt;0)break;r=e.charCodeAt(a);n=r&gt;&gt;8;i=r%256;o.push(i);o.push(n)}return o}function O(e){return n.toByteArray(B(e))}function D(e,t,r,n){for(var i=0;i&lt;n;i++){if(i+r&gt;=t.length||i&gt;=e.length)break;t[i+r]=e[i]}return i}function Y(e){try{return decodeURIComponent(e)}catch(t){return String.fromCharCode(65533)}}},{&quot;base64-js&quot;:3,ieee754:4,&quot;is-array&quot;:5}],3:[function(e,t,r){var n=&quot;ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/&quot;;(function(e){&quot;use strict&quot;;var t=typeof Uint8Array!==&quot;undefined&quot;?Uint8Array:Array;var r=&quot;+&quot;.charCodeAt(0);var i=&quot;/&quot;.charCodeAt(0);var o=&quot;0&quot;.charCodeAt(0);var a=&quot;a&quot;.charCodeAt(0);var s=&quot;A&quot;.charCodeAt(0);var f=&quot;-&quot;.charCodeAt(0);var c=&quot;_&quot;.charCodeAt(0);function u(e){var t=e.charCodeAt(0);if(t===r||t===f)return 62;if(t===i||t===c)return 63;if(t&lt;o)return-1;if(t&lt;o+10)return t-o+26+26;if(t&lt;s+26)return t-s;if(t&lt;a+26)return t-a+26}function l(e){var r,n,i,o,a,s;if(e.length%4&gt;0){throw new Error(&quot;Invalid string. Length must be a multiple of 4&quot;)}var f=e.length;a=&quot;=&quot;===e.charAt(f-2)?2:&quot;=&quot;===e.charAt(f-1)?1:0;s=new t(e.length*3/4-a);i=a&gt;0?e.length-4:e.length;var c=0;function l(e){s[c++]=e}for(r=0,n=0;r&lt;i;r+=4,n+=3){o=u(e.charAt(r))&lt;&lt;18|u(e.charAt(r+1))&lt;&lt;12|u(e.charAt(r+2))&lt;&lt;6|u(e.charAt(r+3));l((o&amp;16711680)&gt;&gt;16);l((o&amp;65280)&gt;&gt;8);l(o&amp;255)}if(a===2){o=u(e.charAt(r))&lt;&lt;2|u(e.charAt(r+1))&gt;&gt;4;l(o&amp;255)}else if(a===1){o=u(e.charAt(r))&lt;&lt;10|u(e.charAt(r+1))&lt;&lt;4|u(e.charAt(r+2))&gt;&gt;2;l(o&gt;&gt;8&amp;255);l(o&amp;255)}return s}function h(e){var t,r=e.length%3,i=&quot;&quot;,o,a;function s(e){return n.charAt(e)}function f(e){return s(e&gt;&gt;18&amp;63)+s(e&gt;&gt;12&amp;63)+s(e&gt;&gt;6&amp;63)+s(e&amp;63)}for(t=0,a=e.length-r;t&lt;a;t+=3){o=(e[t]&lt;&lt;16)+(e[t+1]&lt;&lt;8)+e[t+2];i+=f(o)}switch(r){case 1:o=e[e.length-1];i+=s(o&gt;&gt;2);i+=s(o&lt;&lt;4&amp;63);i+=&quot;==&quot;;break;case 2:o=(e[e.length-2]&lt;&lt;8)+e[e.length-1];i+=s(o&gt;&gt;10);i+=s(o&gt;&gt;4&amp;63);i+=s(o&lt;&lt;2&amp;63);i+=&quot;=&quot;;break}return i}e.toByteArray=l;e.fromByteArray=h})(typeof r===&quot;undefined&quot;?this.base64js={}:r)},{}],4:[function(e,t,r){r.read=function(e,t,r,n,i){var o,a,s=i*8-n-1,f=(1&lt;&lt;s)-1,c=f&gt;&gt;1,u=-7,l=r?i-1:0,h=r?-1:1,d=e[t+l];l+=h;o=d&amp;(1&lt;&lt;-u)-1;d&gt;&gt;=-u;u+=s;for(;u&gt;0;o=o*256+e[t+l],l+=h,u-=8);a=o&amp;(1&lt;&lt;-u)-1;o&gt;&gt;=-u;u+=n;for(;u&gt;0;a=a*256+e[t+l],l+=h,u-=8);if(o===0){o=1-c}else if(o===f){return a?NaN:(d?-1:1)*Infinity}else{a=a+Math.pow(2,n);o=o-c}return(d?-1:1)*a*Math.pow(2,o-n)};r.write=function(e,t,r,n,i,o){var a,s,f,c=o*8-i-1,u=(1&lt;&lt;c)-1,l=u&gt;&gt;1,h=i===23?Math.pow(2,-24)-Math.pow(2,-77):0,d=n?0:o-1,p=n?1:-1,g=t&lt;0||t===0&amp;&amp;1/t&lt;0?1:0;t=Math.abs(t);if(isNaN(t)||t===Infinity){s=isNaN(t)?1:0;a=u}else{a=Math.floor(Math.log(t)/Math.LN2);if(t*(f=Math.pow(2,-a))&lt;1){a--;f*=2}if(a+l&gt;=1){t+=h/f}else{t+=h*Math.pow(2,1-l)}if(t*f&gt;=2){a++;f/=2}if(a+l&gt;=u){s=0;a=u}else if(a+l&gt;=1){s=(t*f-1)*Math.pow(2,i);a=a+l}else{s=t*Math.pow(2,l-1)*Math.pow(2,i);a=0}}for(;i&gt;=8;e[r+d]=s&amp;255,d+=p,s/=256,i-=8);a=a&lt;&lt;i|s;c+=i;for(;c&gt;0;e[r+d]=a&amp;255,d+=p,a/=256,c-=8);e[r+d-p]|=g*128}},{}],5:[function(e,t,r){var n=Array.isArray;var i=Object.prototype.toString;t.exports=n||function(e){return!!e&amp;&amp;&quot;[object Array]&quot;==i.call(e)}},{}],6:[function(e,t,r){function n(){this._events=this._events||{};this._maxListeners=this._maxListeners||undefined}t.exports=n;n.EventEmitter=n;n.prototype._events=undefined;n.prototype._maxListeners=undefined;n.defaultMaxListeners=10;n.prototype.setMaxListeners=function(e){if(!o(e)||e&lt;0||isNaN(e))throw TypeError(&quot;n must be a positive number&quot;);this._maxListeners=e;return this};n.prototype.emit=function(e){var t,r,n,o,f,c;if(!this._events)this._events={};if(e===&quot;error&quot;){if(!this._events.error||a(this._events.error)&amp;&amp;!this._events.error.length){t=arguments[1];if(t instanceof Error){throw t}throw TypeError(&#39;Uncaught, unspecified &quot;error&quot; event.&#39;)}}r=this._events[e];if(s(r))return false;if(i(r)){switch(arguments.length){case 1:r.call(this);break;case 2:r.call(this,arguments[1]);break;case 3:r.call(this,arguments[1],arguments[2]);break;default:n=arguments.length;o=new Array(n-1);for(f=1;f&lt;n;f++)o[f-1]=arguments[f];r.apply(this,o)}}else if(a(r)){n=arguments.length;o=new Array(n-1);for(f=1;f&lt;n;f++)o[f-1]=arguments[f];c=r.slice();n=c.length;for(f=0;f&lt;n;f++)c[f].apply(this,o)}return true};n.prototype.addListener=function(e,t){var r;if(!i(t))throw TypeError(&quot;listener must be a function&quot;);if(!this._events)this._events={};if(this._events.newListener)this.emit(&quot;newListener&quot;,e,i(t.listener)?t.listener:t);if(!this._events[e])this._events[e]=t;else if(a(this._events[e]))this._events[e].push(t);else this._events[e]=[this._events[e],t];if(a(this._events[e])&amp;&amp;!this._events[e].warned){var r;if(!s(this._maxListeners)){r=this._maxListeners}else{r=n.defaultMaxListeners}if(r&amp;&amp;r&gt;0&amp;&amp;this._events[e].length&gt;r){this._events[e].warned=true;console.error(&quot;(node) warning: possible EventEmitter memory &quot;+&quot;leak detected. %d listeners added. &quot;+&quot;Use emitter.setMaxListeners() to increase limit.&quot;,this._events[e].length);if(typeof console.trace===&quot;function&quot;){console.trace()}}}return this};n.prototype.on=n.prototype.addListener;n.prototype.once=function(e,t){if(!i(t))throw TypeError(&quot;listener must be a function&quot;);var r=false;function n(){this.removeListener(e,n);if(!r){r=true;t.apply(this,arguments)}}n.listener=t;this.on(e,n);return this};n.prototype.removeListener=function(e,t){var r,n,o,s;if(!i(t))throw TypeError(&quot;listener must be a function&quot;);if(!this._events||!this._events[e])return this;r=this._events[e];o=r.length;n=-1;if(r===t||i(r.listener)&amp;&amp;r.listener===t){delete this._events[e];if(this._events.removeListener)this.emit(&quot;removeListener&quot;,e,t)}else if(a(r)){for(s=o;s--&gt;0;){if(r[s]===t||r[s].listener&amp;&amp;r[s].listener===t){n=s;break}}if(n&lt;0)return this;if(r.length===1){r.length=0;delete this._events[e]}else{r.splice(n,1)}if(this._events.removeListener)this.emit(&quot;removeListener&quot;,e,t)}return this};n.prototype.removeAllListeners=function(e){var t,r;if(!this._events)return this;if(!this._events.removeListener){if(arguments.length===0)this._events={};else if(this._events[e])delete this._events[e];return this}if(arguments.length===0){for(t in this._events){if(t===&quot;removeListener&quot;)continue;this.removeAllListeners(t)}this.removeAllListeners(&quot;removeListener&quot;);this._events={};return this}r=this._events[e];if(i(r)){this.removeListener(e,r)}else{while(r.length)this.removeListener(e,r[r.length-1])}delete this._events[e];return this};n.prototype.listeners=function(e){var t;if(!this._events||!this._events[e])t=[];else if(i(this._events[e]))t=[this._events[e]];else t=this._events[e].slice();return t};n.listenerCount=function(e,t){var r;if(!e._events||!e._events[t])r=0;else if(i(e._events[t]))r=1;else r=e._events[t].length;return r};function i(e){return typeof e===&quot;function&quot;}function o(e){return typeof e===&quot;number&quot;}function a(e){return typeof e===&quot;object&quot;&amp;&amp;e!==null}function s(e){return e===void 0}},{}],7:[function(e,t,r){if(typeof Object.create===&quot;function&quot;){t.exports=function n(e,t){e.super_=t;e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:false,writable:true,configurable:true}})}}else{t.exports=function i(e,t){e.super_=t;var r=function(){};r.prototype=t.prototype;e.prototype=new r;e.prototype.constructor=e}}},{}],8:[function(e,t,r){t.exports=Array.isArray||function(e){return Object.prototype.toString.call(e)==&quot;[object Array]&quot;}},{}],9:[function(e,t,r){var n=t.exports={};var i=[];var o=false;function a(){if(o){return}o=true;var e;var t=i.length;while(t){e=i;i=[];var r=-1;while(++r&lt;t){e[r]()}t=i.length}o=false}n.nextTick=function(e){i.push(e);if(!o){setTimeout(a,0)}};n.title=&quot;browser&quot;;n.browser=true;n.env={};n.argv=[];n.version=&quot;&quot;;n.versions={};function s(){}n.on=s;n.addListener=s;n.once=s;n.off=s;n.removeListener=s;n.removeAllListeners=s;n.emit=s;n.binding=function(e){throw new Error(&quot;process.binding is not supported&quot;)};n.cwd=function(){return&quot;/&quot;};n.chdir=function(e){throw new Error(&quot;process.chdir is not supported&quot;)};n.umask=function(){return 0}},{}],10:[function(e,t,r){t.exports=e(&quot;./lib/_stream_duplex.js&quot;)},{&quot;./lib/_stream_duplex.js&quot;:11}],11:[function(e,t,r){(function(r){t.exports=s;var n=Object.keys||function(e){var t=[];for(var r in e)t.push(r);return t};var i=e(&quot;core-util-is&quot;);i.inherits=e(&quot;inherits&quot;);var o=e(&quot;./_stream_readable&quot;);var a=e(&quot;./_stream_writable&quot;);i.inherits(s,o);c(n(a.prototype),function(e){if(!s.prototype[e])s.prototype[e]=a.prototype[e]});function s(e){if(!(this instanceof s))return new s(e);o.call(this,e);a.call(this,e);if(e&amp;&amp;e.readable===false)this.readable=false;if(e&amp;&amp;e.writable===false)this.writable=false;this.allowHalfOpen=true;if(e&amp;&amp;e.allowHalfOpen===false)this.allowHalfOpen=false;this.once(&quot;end&quot;,f)}function f(){if(this.allowHalfOpen||this._writableState.ended)return;r.nextTick(this.end.bind(this))}function c(e,t){for(var r=0,n=e.length;r&lt;n;r++){t(e[r],r)}}}).call(this,e(&quot;_process&quot;))},{&quot;./_stream_readable&quot;:13,&quot;./_stream_writable&quot;:15,_process:9,&quot;core-util-is&quot;:16,inherits:7}],12:[function(e,t,r){t.exports=o;var n=e(&quot;./_stream_transform&quot;);var i=e(&quot;core-util-is&quot;);i.inherits=e(&quot;inherits&quot;);i.inherits(o,n);function o(e){if(!(this instanceof o))return new o(e);n.call(this,e)}o.prototype._transform=function(e,t,r){r(null,e)}},{&quot;./_stream_transform&quot;:14,&quot;core-util-is&quot;:16,inherits:7}],13:[function(e,t,r){(function(r){t.exports=l;var n=e(&quot;isarray&quot;);var i=e(&quot;buffer&quot;).Buffer;l.ReadableState=u;var o=e(&quot;events&quot;).EventEmitter;if(!o.listenerCount)o.listenerCount=function(e,t){return e.listeners(t).length};var a=e(&quot;stream&quot;);var s=e(&quot;core-util-is&quot;);s.inherits=e(&quot;inherits&quot;);var f;var c=e(&quot;util&quot;);if(c&amp;&amp;c.debuglog){c=c.debuglog(&quot;stream&quot;)}else{c=function(){}}s.inherits(l,a);function u(t,r){var n=e(&quot;./_stream_duplex&quot;);t=t||{};var i=t.highWaterMark;var o=t.objectMode?16:16*1024;this.highWaterMark=i||i===0?i:o;this.highWaterMark=~~this.highWaterMark;this.buffer=[];this.length=0;this.pipes=null;this.pipesCount=0;this.flowing=null;this.ended=false;this.endEmitted=false;this.reading=false;this.sync=true;this.needReadable=false;this.emittedReadable=false;this.readableListening=false;this.objectMode=!!t.objectMode;if(r instanceof n)this.objectMode=this.objectMode||!!t.readableObjectMode;this.defaultEncoding=t.defaultEncoding||&quot;utf8&quot;;this.ranOut=false;this.awaitDrain=0;this.readingMore=false;this.decoder=null;this.encoding=null;if(t.encoding){if(!f)f=e(&quot;string_decoder/&quot;).StringDecoder;this.decoder=new f(t.encoding);this.encoding=t.encoding}}function l(t){var r=e(&quot;./_stream_duplex&quot;);if(!(this instanceof l))return new l(t);this._readableState=new u(t,this);this.readable=true;a.call(this)}l.prototype.push=function(e,t){var r=this._readableState;if(s.isString(e)&amp;&amp;!r.objectMode){t=t||r.defaultEncoding;if(t!==r.encoding){e=new i(e,t);t=&quot;&quot;}}return h(this,r,e,t,false)};l.prototype.unshift=function(e){var t=this._readableState;return h(this,t,e,&quot;&quot;,true)};function h(e,t,r,n,i){var o=b(t,r);if(o){e.emit(&quot;error&quot;,o)}else if(s.isNullOrUndefined(r)){t.reading=false;if(!t.ended)y(e,t)}else if(t.objectMode||r&amp;&amp;r.length&gt;0){if(t.ended&amp;&amp;!i){var a=new Error(&quot;stream.push() after EOF&quot;);e.emit(&quot;error&quot;,a)}else if(t.endEmitted&amp;&amp;i){var a=new Error(&quot;stream.unshift() after end event&quot;);e.emit(&quot;error&quot;,a)}else{if(t.decoder&amp;&amp;!i&amp;&amp;!n)r=t.decoder.write(r);if(!i)t.reading=false;if(t.flowing&amp;&amp;t.length===0&amp;&amp;!t.sync){e.emit(&quot;data&quot;,r);e.read(0)}else{t.length+=t.objectMode?1:r.length;if(i)t.buffer.unshift(r);else t.buffer.push(r);if(t.needReadable)m(e)}_(e,t)}}else if(!i){t.reading=false}return d(t)}function d(e){return!e.ended&amp;&amp;(e.needReadable||e.length&lt;e.highWaterMark||e.length===0)}l.prototype.setEncoding=function(t){if(!f)f=e(&quot;string_decoder/&quot;).StringDecoder;this._readableState.decoder=new f(t);this._readableState.encoding=t;return this};var p=8388608;function g(e){if(e&gt;=p){e=p}else{e--;for(var t=1;t&lt;32;t&lt;&lt;=1)e|=e&gt;&gt;t;e++}return e}function v(e,t){if(t.length===0&amp;&amp;t.ended)return 0;if(t.objectMode)return e===0?0:1;if(isNaN(e)||s.isNull(e)){if(t.flowing&amp;&amp;t.buffer.length)return t.buffer[0].length;else return t.length}if(e&lt;=0)return 0;if(e&gt;t.highWaterMark)t.highWaterMark=g(e);if(e&gt;t.length){if(!t.ended){t.needReadable=true;return 0}else return t.length}return e}l.prototype.read=function(e){c(&quot;read&quot;,e);var t=this._readableState;var r=e;if(!s.isNumber(e)||e&gt;0)t.emittedReadable=false;if(e===0&amp;&amp;t.needReadable&amp;&amp;(t.length&gt;=t.highWaterMark||t.ended)){c(&quot;read: emitReadable&quot;,t.length,t.ended);if(t.length===0&amp;&amp;t.ended)T(this);else m(this);return null}e=v(e,t);if(e===0&amp;&amp;t.ended){if(t.length===0)T(this);return null}var n=t.needReadable;c(&quot;need readable&quot;,n);if(t.length===0||t.length-e&lt;t.highWaterMark){n=true;c(&quot;length less than watermark&quot;,n)}if(t.ended||t.reading){n=false;c(&quot;reading or ended&quot;,n)}if(n){c(&quot;do read&quot;);t.reading=true;t.sync=true;if(t.length===0)t.needReadable=true;this._read(t.highWaterMark);t.sync=false}if(n&amp;&amp;!t.reading)e=v(r,t);var i;if(e&gt;0)i=R(e,t);else i=null;if(s.isNull(i)){t.needReadable=true;e=0}t.length-=e;if(t.length===0&amp;&amp;!t.ended)t.needReadable=true;if(r!==e&amp;&amp;t.ended&amp;&amp;t.length===0)T(this);if(!s.isNull(i))this.emit(&quot;data&quot;,i);return i};function b(e,t){var r=null;if(!s.isBuffer(t)&amp;&amp;!s.isString(t)&amp;&amp;!s.isNullOrUndefined(t)&amp;&amp;!e.objectMode){r=new TypeError(&quot;Invalid non-string/buffer chunk&quot;)}return r}function y(e,t){if(t.decoder&amp;&amp;!t.ended){var r=t.decoder.end();if(r&amp;&amp;r.length){t.buffer.push(r);t.length+=t.objectMode?1:r.length}}t.ended=true;m(e)}function m(e){var t=e._readableState;t.needReadable=false;if(!t.emittedReadable){c(&quot;emitReadable&quot;,t.flowing);t.emittedReadable=true;if(t.sync)r.nextTick(function(){w(e)});else w(e)}}function w(e){c(&quot;emit readable&quot;);e.emit(&quot;readable&quot;);S(e)}function _(e,t){if(!t.readingMore){t.readingMore=true;r.nextTick(function(){E(e,t)})}}function E(e,t){var r=t.length;while(!t.reading&amp;&amp;!t.flowing&amp;&amp;!t.ended&amp;&amp;t.length&lt;t.highWaterMark){c(&quot;maybeReadMore read 0&quot;);e.read(0);if(r===t.length)break;else r=t.length}t.readingMore=false}l.prototype._read=function(e){this.emit(&quot;error&quot;,new Error(&quot;not implemented&quot;))};l.prototype.pipe=function(e,t){var i=this;var a=this._readableState;switch(a.pipesCount){case 0:a.pipes=e;break;case 1:a.pipes=[a.pipes,e];break;default:a.pipes.push(e);break}a.pipesCount+=1;c(&quot;pipe count=%d opts=%j&quot;,a.pipesCount,t);var s=(!t||t.end!==false)&amp;&amp;e!==r.stdout&amp;&amp;e!==r.stderr;var f=s?l:d;if(a.endEmitted)r.nextTick(f);else i.once(&quot;end&quot;,f);e.on(&quot;unpipe&quot;,u);function u(e){c(&quot;onunpipe&quot;);if(e===i){d()}}function l(){c(&quot;onend&quot;);e.end()}var h=A(i);e.on(&quot;drain&quot;,h);function d(){c(&quot;cleanup&quot;);e.removeListener(&quot;close&quot;,v);e.removeListener(&quot;finish&quot;,b);e.removeListener(&quot;drain&quot;,h);e.removeListener(&quot;error&quot;,g);e.removeListener(&quot;unpipe&quot;,u);i.removeListener(&quot;end&quot;,l);i.removeListener(&quot;end&quot;,d);i.removeListener(&quot;data&quot;,p);if(a.awaitDrain&amp;&amp;(!e._writableState||e._writableState.needDrain))h()}i.on(&quot;data&quot;,p);function p(t){c(&quot;ondata&quot;);var r=e.write(t);if(false===r){c(&quot;false write response, pause&quot;,i._readableState.awaitDrain);i._readableState.awaitDrain++;i.pause()}}function g(t){</td>
</tr>
<tr>
<td id="L2" class="blob-num js-line-number js-code-nav-line-number" data-line-number="2"></td>
<td id="LC2" class="blob-code blob-code-inner js-file-line">c(&quot;onerror&quot;,t);y();e.removeListener(&quot;error&quot;,g);if(o.listenerCount(e,&quot;error&quot;)===0)e.emit(&quot;error&quot;,t)}if(!e._events||!e._events.error)e.on(&quot;error&quot;,g);else if(n(e._events.error))e._events.error.unshift(g);else e._events.error=[g,e._events.error];function v(){e.removeListener(&quot;finish&quot;,b);y()}e.once(&quot;close&quot;,v);function b(){c(&quot;onfinish&quot;);e.removeListener(&quot;close&quot;,v);y()}e.once(&quot;finish&quot;,b);function y(){c(&quot;unpipe&quot;);i.unpipe(e)}e.emit(&quot;pipe&quot;,i);if(!a.flowing){c(&quot;pipe resume&quot;);i.resume()}return e};function A(e){return function(){var t=e._readableState;c(&quot;pipeOnDrain&quot;,t.awaitDrain);if(t.awaitDrain)t.awaitDrain--;if(t.awaitDrain===0&amp;&amp;o.listenerCount(e,&quot;data&quot;)){t.flowing=true;S(e)}}}l.prototype.unpipe=function(e){var t=this._readableState;if(t.pipesCount===0)return this;if(t.pipesCount===1){if(e&amp;&amp;e!==t.pipes)return this;if(!e)e=t.pipes;t.pipes=null;t.pipesCount=0;t.flowing=false;if(e)e.emit(&quot;unpipe&quot;,this);return this}if(!e){var r=t.pipes;var n=t.pipesCount;t.pipes=null;t.pipesCount=0;t.flowing=false;for(var i=0;i&lt;n;i++)r[i].emit(&quot;unpipe&quot;,this);return this}var i=L(t.pipes,e);if(i===-1)return this;t.pipes.splice(i,1);t.pipesCount-=1;if(t.pipesCount===1)t.pipes=t.pipes[0];e.emit(&quot;unpipe&quot;,this);return this};l.prototype.on=function(e,t){var n=a.prototype.on.call(this,e,t);if(e===&quot;data&quot;&amp;&amp;false!==this._readableState.flowing){this.resume()}if(e===&quot;readable&quot;&amp;&amp;this.readable){var i=this._readableState;if(!i.readableListening){i.readableListening=true;i.emittedReadable=false;i.needReadable=true;if(!i.reading){var o=this;r.nextTick(function(){c(&quot;readable nexttick read 0&quot;);o.read(0)})}else if(i.length){m(this,i)}}}return n};l.prototype.addListener=l.prototype.on;l.prototype.resume=function(){var e=this._readableState;if(!e.flowing){c(&quot;resume&quot;);e.flowing=true;if(!e.reading){c(&quot;resume read 0&quot;);this.read(0)}C(this,e)}return this};function C(e,t){if(!t.resumeScheduled){t.resumeScheduled=true;r.nextTick(function(){k(e,t)})}}function k(e,t){t.resumeScheduled=false;e.emit(&quot;resume&quot;);S(e);if(t.flowing&amp;&amp;!t.reading)e.read(0)}l.prototype.pause=function(){c(&quot;call pause flowing=%j&quot;,this._readableState.flowing);if(false!==this._readableState.flowing){c(&quot;pause&quot;);this._readableState.flowing=false;this.emit(&quot;pause&quot;)}return this};function S(e){var t=e._readableState;c(&quot;flow&quot;,t.flowing);if(t.flowing){do{var r=e.read()}while(null!==r&amp;&amp;t.flowing)}}l.prototype.wrap=function(e){var t=this._readableState;var r=false;var n=this;e.on(&quot;end&quot;,function(){c(&quot;wrapped end&quot;);if(t.decoder&amp;&amp;!t.ended){var e=t.decoder.end();if(e&amp;&amp;e.length)n.push(e)}n.push(null)});e.on(&quot;data&quot;,function(i){c(&quot;wrapped data&quot;);if(t.decoder)i=t.decoder.write(i);if(!i||!t.objectMode&amp;&amp;!i.length)return;var o=n.push(i);if(!o){r=true;e.pause()}});for(var i in e){if(s.isFunction(e[i])&amp;&amp;s.isUndefined(this[i])){this[i]=function(t){return function(){return e[t].apply(e,arguments)}}(i)}}var o=[&quot;error&quot;,&quot;close&quot;,&quot;destroy&quot;,&quot;pause&quot;,&quot;resume&quot;];I(o,function(t){e.on(t,n.emit.bind(n,t))});n._read=function(t){c(&quot;wrapped _read&quot;,t);if(r){r=false;e.resume()}};return n};l._fromList=R;function R(e,t){var r=t.buffer;var n=t.length;var o=!!t.decoder;var a=!!t.objectMode;var s;if(r.length===0)return null;if(n===0)s=null;else if(a)s=r.shift();else if(!e||e&gt;=n){if(o)s=r.join(&quot;&quot;);else s=i.concat(r,n);r.length=0}else{if(e&lt;r[0].length){var f=r[0];s=f.slice(0,e);r[0]=f.slice(e)}else if(e===r[0].length){s=r.shift()}else{if(o)s=&quot;&quot;;else s=new i(e);var c=0;for(var u=0,l=r.length;u&lt;l&amp;&amp;c&lt;e;u++){var f=r[0];var h=Math.min(e-c,f.length);if(o)s+=f.slice(0,h);else f.copy(s,c,0,h);if(h&lt;f.length)r[0]=f.slice(h);else r.shift();c+=h}}}return s}function T(e){var t=e._readableState;if(t.length&gt;0)throw new Error(&quot;endReadable called on non-empty stream&quot;);if(!t.endEmitted){t.ended=true;r.nextTick(function(){if(!t.endEmitted&amp;&amp;t.length===0){t.endEmitted=true;e.readable=false;e.emit(&quot;end&quot;)}})}}function I(e,t){for(var r=0,n=e.length;r&lt;n;r++){t(e[r],r)}}function L(e,t){for(var r=0,n=e.length;r&lt;n;r++){if(e[r]===t)return r}return-1}}).call(this,e(&quot;_process&quot;))},{&quot;./_stream_duplex&quot;:11,_process:9,buffer:2,&quot;core-util-is&quot;:16,events:6,inherits:7,isarray:8,stream:21,&quot;string_decoder/&quot;:22,util:1}],14:[function(e,t,r){t.exports=s;var n=e(&quot;./_stream_duplex&quot;);var i=e(&quot;core-util-is&quot;);i.inherits=e(&quot;inherits&quot;);i.inherits(s,n);function o(e,t){this.afterTransform=function(e,r){return a(t,e,r)};this.needTransform=false;this.transforming=false;this.writecb=null;this.writechunk=null}function a(e,t,r){var n=e._transformState;n.transforming=false;var o=n.writecb;if(!o)return e.emit(&quot;error&quot;,new Error(&quot;no writecb in Transform class&quot;));n.writechunk=null;n.writecb=null;if(!i.isNullOrUndefined(r))e.push(r);if(o)o(t);var a=e._readableState;a.reading=false;if(a.needReadable||a.length&lt;a.highWaterMark){e._read(a.highWaterMark)}}function s(e){if(!(this instanceof s))return new s(e);n.call(this,e);this._transformState=new o(e,this);var t=this;this._readableState.needReadable=true;this._readableState.sync=false;this.once(&quot;prefinish&quot;,function(){if(i.isFunction(this._flush))this._flush(function(e){f(t,e)});else f(t)})}s.prototype.push=function(e,t){this._transformState.needTransform=false;return n.prototype.push.call(this,e,t)};s.prototype._transform=function(e,t,r){throw new Error(&quot;not implemented&quot;)};s.prototype._write=function(e,t,r){var n=this._transformState;n.writecb=r;n.writechunk=e;n.writeencoding=t;if(!n.transforming){var i=this._readableState;if(n.needTransform||i.needReadable||i.length&lt;i.highWaterMark)this._read(i.highWaterMark)}};s.prototype._read=function(e){var t=this._transformState;if(!i.isNull(t.writechunk)&amp;&amp;t.writecb&amp;&amp;!t.transforming){t.transforming=true;this._transform(t.writechunk,t.writeencoding,t.afterTransform)}else{t.needTransform=true}};function f(e,t){if(t)return e.emit(&quot;error&quot;,t);var r=e._writableState;var n=e._transformState;if(r.length)throw new Error(&quot;calling transform done when ws.length != 0&quot;);if(n.transforming)throw new Error(&quot;calling transform done when still transforming&quot;);return e.push(null)}},{&quot;./_stream_duplex&quot;:11,&quot;core-util-is&quot;:16,inherits:7}],15:[function(e,t,r){(function(r){t.exports=f;var n=e(&quot;buffer&quot;).Buffer;f.WritableState=s;var i=e(&quot;core-util-is&quot;);i.inherits=e(&quot;inherits&quot;);var o=e(&quot;stream&quot;);i.inherits(f,o);function a(e,t,r){this.chunk=e;this.encoding=t;this.callback=r}function s(t,r){var n=e(&quot;./_stream_duplex&quot;);t=t||{};var i=t.highWaterMark;var o=t.objectMode?16:16*1024;this.highWaterMark=i||i===0?i:o;this.objectMode=!!t.objectMode;if(r instanceof n)this.objectMode=this.objectMode||!!t.writableObjectMode;this.highWaterMark=~~this.highWaterMark;this.needDrain=false;this.ending=false;this.ended=false;this.finished=false;var a=t.decodeStrings===false;this.decodeStrings=!a;this.defaultEncoding=t.defaultEncoding||&quot;utf8&quot;;this.length=0;this.writing=false;this.corked=0;this.sync=true;this.bufferProcessing=false;this.onwrite=function(e){v(r,e)};this.writecb=null;this.writelen=0;this.buffer=[];this.pendingcb=0;this.prefinished=false;this.errorEmitted=false}function f(t){var r=e(&quot;./_stream_duplex&quot;);if(!(this instanceof f)&amp;&amp;!(this instanceof r))return new f(t);this._writableState=new s(t,this);this.writable=true;o.call(this)}f.prototype.pipe=function(){this.emit(&quot;error&quot;,new Error(&quot;Cannot pipe. Not readable.&quot;))};function c(e,t,n){var i=new Error(&quot;write after end&quot;);e.emit(&quot;error&quot;,i);r.nextTick(function(){n(i)})}function u(e,t,n,o){var a=true;if(!i.isBuffer(n)&amp;&amp;!i.isString(n)&amp;&amp;!i.isNullOrUndefined(n)&amp;&amp;!t.objectMode){var s=new TypeError(&quot;Invalid non-string/buffer chunk&quot;);e.emit(&quot;error&quot;,s);r.nextTick(function(){o(s)});a=false}return a}f.prototype.write=function(e,t,r){var n=this._writableState;var o=false;if(i.isFunction(t)){r=t;t=null}if(i.isBuffer(e))t=&quot;buffer&quot;;else if(!t)t=n.defaultEncoding;if(!i.isFunction(r))r=function(){};if(n.ended)c(this,n,r);else if(u(this,n,e,r)){n.pendingcb++;o=h(this,n,e,t,r)}return o};f.prototype.cork=function(){var e=this._writableState;e.corked++};f.prototype.uncork=function(){var e=this._writableState;if(e.corked){e.corked--;if(!e.writing&amp;&amp;!e.corked&amp;&amp;!e.finished&amp;&amp;!e.bufferProcessing&amp;&amp;e.buffer.length)m(this,e)}};function l(e,t,r){if(!e.objectMode&amp;&amp;e.decodeStrings!==false&amp;&amp;i.isString(t)){t=new n(t,r)}return t}function h(e,t,r,n,o){r=l(t,r,n);if(i.isBuffer(r))n=&quot;buffer&quot;;var s=t.objectMode?1:r.length;t.length+=s;var f=t.length&lt;t.highWaterMark;if(!f)t.needDrain=true;if(t.writing||t.corked)t.buffer.push(new a(r,n,o));else d(e,t,false,s,r,n,o);return f}function d(e,t,r,n,i,o,a){t.writelen=n;t.writecb=a;t.writing=true;t.sync=true;if(r)e._writev(i,t.onwrite);else e._write(i,o,t.onwrite);t.sync=false}function p(e,t,n,i,o){if(n)r.nextTick(function(){t.pendingcb--;o(i)});else{t.pendingcb--;o(i)}e._writableState.errorEmitted=true;e.emit(&quot;error&quot;,i)}function g(e){e.writing=false;e.writecb=null;e.length-=e.writelen;e.writelen=0}function v(e,t){var n=e._writableState;var i=n.sync;var o=n.writecb;g(n);if(t)p(e,n,i,t,o);else{var a=w(e,n);if(!a&amp;&amp;!n.corked&amp;&amp;!n.bufferProcessing&amp;&amp;n.buffer.length){m(e,n)}if(i){r.nextTick(function(){b(e,n,a,o)})}else{b(e,n,a,o)}}}function b(e,t,r,n){if(!r)y(e,t);t.pendingcb--;n();E(e,t)}function y(e,t){if(t.length===0&amp;&amp;t.needDrain){t.needDrain=false;e.emit(&quot;drain&quot;)}}function m(e,t){t.bufferProcessing=true;if(e._writev&amp;&amp;t.buffer.length&gt;1){var r=[];for(var n=0;n&lt;t.buffer.length;n++)r.push(t.buffer[n].callback);t.pendingcb++;d(e,t,true,t.length,t.buffer,&quot;&quot;,function(e){for(var n=0;n&lt;r.length;n++){t.pendingcb--;r[n](e)}});t.buffer=[]}else{for(var n=0;n&lt;t.buffer.length;n++){var i=t.buffer[n];var o=i.chunk;var a=i.encoding;var s=i.callback;var f=t.objectMode?1:o.length;d(e,t,false,f,o,a,s);if(t.writing){n++;break}}if(n&lt;t.buffer.length)t.buffer=t.buffer.slice(n);else t.buffer.length=0}t.bufferProcessing=false}f.prototype._write=function(e,t,r){r(new Error(&quot;not implemented&quot;))};f.prototype._writev=null;f.prototype.end=function(e,t,r){var n=this._writableState;if(i.isFunction(e)){r=e;e=null;t=null}else if(i.isFunction(t)){r=t;t=null}if(!i.isNullOrUndefined(e))this.write(e,t);if(n.corked){n.corked=1;this.uncork()}if(!n.ending&amp;&amp;!n.finished)A(this,n,r)};function w(e,t){return t.ending&amp;&amp;t.length===0&amp;&amp;!t.finished&amp;&amp;!t.writing}function _(e,t){if(!t.prefinished){t.prefinished=true;e.emit(&quot;prefinish&quot;)}}function E(e,t){var r=w(e,t);if(r){if(t.pendingcb===0){_(e,t);t.finished=true;e.emit(&quot;finish&quot;)}else _(e,t)}return r}function A(e,t,n){t.ending=true;E(e,t);if(n){if(t.finished)r.nextTick(n);else e.once(&quot;finish&quot;,n)}t.ended=true}}).call(this,e(&quot;_process&quot;))},{&quot;./_stream_duplex&quot;:11,_process:9,buffer:2,&quot;core-util-is&quot;:16,inherits:7,stream:21}],16:[function(e,t,r){(function(e){function t(e){return Array.isArray(e)}r.isArray=t;function n(e){return typeof e===&quot;boolean&quot;}r.isBoolean=n;function i(e){return e===null}r.isNull=i;function o(e){return e==null}r.isNullOrUndefined=o;function a(e){return typeof e===&quot;number&quot;}r.isNumber=a;function s(e){return typeof e===&quot;string&quot;}r.isString=s;function f(e){return typeof e===&quot;symbol&quot;}r.isSymbol=f;function c(e){return e===void 0}r.isUndefined=c;function u(e){return l(e)&amp;&amp;b(e)===&quot;[object RegExp]&quot;}r.isRegExp=u;function l(e){return typeof e===&quot;object&quot;&amp;&amp;e!==null}r.isObject=l;function h(e){return l(e)&amp;&amp;b(e)===&quot;[object Date]&quot;}r.isDate=h;function d(e){return l(e)&amp;&amp;(b(e)===&quot;[object Error]&quot;||e instanceof Error)}r.isError=d;function p(e){return typeof e===&quot;function&quot;}r.isFunction=p;function g(e){return e===null||typeof e===&quot;boolean&quot;||typeof e===&quot;number&quot;||typeof e===&quot;string&quot;||typeof e===&quot;symbol&quot;||typeof e===&quot;undefined&quot;}r.isPrimitive=g;function v(t){return e.isBuffer(t)}r.isBuffer=v;function b(e){return Object.prototype.toString.call(e)}}).call(this,e(&quot;buffer&quot;).Buffer)},{buffer:2}],17:[function(e,t,r){t.exports=e(&quot;./lib/_stream_passthrough.js&quot;)},{&quot;./lib/_stream_passthrough.js&quot;:12}],18:[function(e,t,r){r=t.exports=e(&quot;./lib/_stream_readable.js&quot;);r.Stream=e(&quot;stream&quot;);r.Readable=r;r.Writable=e(&quot;./lib/_stream_writable.js&quot;);r.Duplex=e(&quot;./lib/_stream_duplex.js&quot;);r.Transform=e(&quot;./lib/_stream_transform.js&quot;);r.PassThrough=e(&quot;./lib/_stream_passthrough.js&quot;)},{&quot;./lib/_stream_duplex.js&quot;:11,&quot;./lib/_stream_passthrough.js&quot;:12,&quot;./lib/_stream_readable.js&quot;:13,&quot;./lib/_stream_transform.js&quot;:14,&quot;./lib/_stream_writable.js&quot;:15,stream:21}],19:[function(e,t,r){t.exports=e(&quot;./lib/_stream_transform.js&quot;)},{&quot;./lib/_stream_transform.js&quot;:14}],20:[function(e,t,r){t.exports=e(&quot;./lib/_stream_writable.js&quot;)},{&quot;./lib/_stream_writable.js&quot;:15}],21:[function(e,t,r){t.exports=o;var n=e(&quot;events&quot;).EventEmitter;var i=e(&quot;inherits&quot;);i(o,n);o.Readable=e(&quot;readable-stream/readable.js&quot;);o.Writable=e(&quot;readable-stream/writable.js&quot;);o.Duplex=e(&quot;readable-stream/duplex.js&quot;);o.Transform=e(&quot;readable-stream/transform.js&quot;);o.PassThrough=e(&quot;readable-stream/passthrough.js&quot;);o.Stream=o;function o(){n.call(this)}o.prototype.pipe=function(e,t){var r=this;function i(t){if(e.writable){if(false===e.write(t)&amp;&amp;r.pause){r.pause()}}}r.on(&quot;data&quot;,i);function o(){if(r.readable&amp;&amp;r.resume){r.resume()}}e.on(&quot;drain&quot;,o);if(!e._isStdio&amp;&amp;(!t||t.end!==false)){r.on(&quot;end&quot;,s);r.on(&quot;close&quot;,f)}var a=false;function s(){if(a)return;a=true;e.end()}function f(){if(a)return;a=true;if(typeof e.destroy===&quot;function&quot;)e.destroy()}function c(e){u();if(n.listenerCount(this,&quot;error&quot;)===0){throw e}}r.on(&quot;error&quot;,c);e.on(&quot;error&quot;,c);function u(){r.removeListener(&quot;data&quot;,i);e.removeListener(&quot;drain&quot;,o);r.removeListener(&quot;end&quot;,s);r.removeListener(&quot;close&quot;,f);r.removeListener(&quot;error&quot;,c);e.removeListener(&quot;error&quot;,c);r.removeListener(&quot;end&quot;,u);r.removeListener(&quot;close&quot;,u);e.removeListener(&quot;close&quot;,u)}r.on(&quot;end&quot;,u);r.on(&quot;close&quot;,u);e.on(&quot;close&quot;,u);e.emit(&quot;pipe&quot;,r);return e}},{events:6,inherits:7,&quot;readable-stream/duplex.js&quot;:10,&quot;readable-stream/passthrough.js&quot;:17,&quot;readable-stream/readable.js&quot;:18,&quot;readable-stream/transform.js&quot;:19,&quot;readable-stream/writable.js&quot;:20}],22:[function(e,t,r){var n=e(&quot;buffer&quot;).Buffer;var i=n.isEncoding||function(e){switch(e&amp;&amp;e.toLowerCase()){case&quot;hex&quot;:case&quot;utf8&quot;:case&quot;utf-8&quot;:case&quot;ascii&quot;:case&quot;binary&quot;:case&quot;base64&quot;:case&quot;ucs2&quot;:case&quot;ucs-2&quot;:case&quot;utf16le&quot;:case&quot;utf-16le&quot;:case&quot;raw&quot;:return true;default:return false}};function o(e){if(e&amp;&amp;!i(e)){throw new Error(&quot;Unknown encoding: &quot;+e)}}var a=r.StringDecoder=function(e){this.encoding=(e||&quot;utf8&quot;).toLowerCase().replace(/[-_]/,&quot;&quot;);o(e);switch(this.encoding){case&quot;utf8&quot;:this.surrogateSize=3;break;case&quot;ucs2&quot;:case&quot;utf16le&quot;:this.surrogateSize=2;this.detectIncompleteChar=f;break;case&quot;base64&quot;:this.surrogateSize=3;this.detectIncompleteChar=c;break;default:this.write=s;return}this.charBuffer=new n(6);this.charReceived=0;this.charLength=0};a.prototype.write=function(e){var t=&quot;&quot;;while(this.charLength){var r=e.length&gt;=this.charLength-this.charReceived?this.charLength-this.charReceived:e.length;e.copy(this.charBuffer,this.charReceived,0,r);this.charReceived+=r;if(this.charReceived&lt;this.charLength){return&quot;&quot;}e=e.slice(r,e.length);t=this.charBuffer.slice(0,this.charLength).toString(this.encoding);var n=t.charCodeAt(t.length-1);if(n&gt;=55296&amp;&amp;n&lt;=56319){this.charLength+=this.surrogateSize;t=&quot;&quot;;continue}this.charReceived=this.charLength=0;if(e.length===0){return t}break}this.detectIncompleteChar(e);var i=e.length;if(this.charLength){e.copy(this.charBuffer,0,e.length-this.charReceived,i);i-=this.charReceived}t+=e.toString(this.encoding,0,i);var i=t.length-1;var n=t.charCodeAt(i);if(n&gt;=55296&amp;&amp;n&lt;=56319){var o=this.surrogateSize;this.charLength+=o;this.charReceived+=o;this.charBuffer.copy(this.charBuffer,o,0,o);e.copy(this.charBuffer,0,0,o);return t.substring(0,i)}return t};a.prototype.detectIncompleteChar=function(e){var t=e.length&gt;=3?3:e.length;for(;t&gt;0;t--){var r=e[e.length-t];if(t==1&amp;&amp;r&gt;&gt;5==6){this.charLength=2;break}if(t&lt;=2&amp;&amp;r&gt;&gt;4==14){this.charLength=3;break}if(t&lt;=3&amp;&amp;r&gt;&gt;3==30){this.charLength=4;break}}this.charReceived=t};a.prototype.end=function(e){var t=&quot;&quot;;if(e&amp;&amp;e.length)t=this.write(e);if(this.charReceived){var r=this.charReceived;var n=this.charBuffer;var i=this.encoding;t+=n.slice(0,r).toString(i)}return t};function s(e){return e.toString(this.encoding)}function f(e){this.charReceived=e.length%2;this.charLength=this.charReceived?2:0}function c(e){this.charReceived=e.length%3;this.charLength=this.charReceived?3:0}},{buffer:2}],23:[function(e,t,r){var n=[].slice;t.exports=function(e,t){if(&quot;string&quot;==typeof t)t=e[t];if(&quot;function&quot;!=typeof t)throw new Error(&quot;bind() requires a function&quot;);var r=n.call(arguments,2);return function(){return t.apply(e,r.concat(n.call(arguments)))}}},{}],24:[function(e,t,r){t.exports=n;function n(e){if(e)return i(e)}function i(e){for(var t in n.prototype){e[t]=n.prototype[t]}return e}n.prototype.on=n.prototype.addEventListener=function(e,t){this._callbacks=this._callbacks||{};(this._callbacks[&quot;$&quot;+e]=this._callbacks[&quot;$&quot;+e]||[]).push(t);return this};n.prototype.once=function(e,t){function r(){this.off(e,r);t.apply(this,arguments)}r.fn=t;this.on(e,r);return this};n.prototype.off=n.prototype.removeListener=n.prototype.removeAllListeners=n.prototype.removeEventListener=function(e,t){this._callbacks=this._callbacks||{};if(0==arguments.length){this._callbacks={};return this}var r=this._callbacks[&quot;$&quot;+e];if(!r)return this;if(1==arguments.length){delete this._callbacks[&quot;$&quot;+e];return this}var n;for(var i=0;i&lt;r.length;i++){n=r[i];if(n===t||n.fn===t){r.splice(i,1);break}}return this};n.prototype.emit=function(e){this._callbacks=this._callbacks||{};var t=[].slice.call(arguments,1),r=this._callbacks[&quot;$&quot;+e];if(r){r=r.slice(0);for(var n=0,i=r.length;n&lt;i;++n){r[n].apply(this,t)}}return this};n.prototype.listeners=function(e){this._callbacks=this._callbacks||{};return this._callbacks[&quot;$&quot;+e]||[]};n.prototype.hasListeners=function(e){return!!this.listeners(e).length}},{}],25:[function(e,t,r){r=t.exports=e(&quot;./debug&quot;);r.log=o;r.formatArgs=i;r.save=a;r.load=s;r.useColors=n;r.storage=&quot;undefined&quot;!=typeof chrome&amp;&amp;&quot;undefined&quot;!=typeof chrome.storage?chrome.storage.local:f();r.colors=[&quot;lightseagreen&quot;,&quot;forestgreen&quot;,&quot;goldenrod&quot;,&quot;dodgerblue&quot;,&quot;darkorchid&quot;,&quot;crimson&quot;];function n(){return&quot;WebkitAppearance&quot;in document.documentElement.style||window.console&amp;&amp;(console.firebug||console.exception&amp;&amp;console.table)||navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&amp;&amp;parseInt(RegExp.$1,10)&gt;=31}r.formatters.j=function(e){return JSON.stringify(e)};function i(){var e=arguments;var t=this.useColors;e[0]=(t?&quot;%c&quot;:&quot;&quot;)+this.namespace+(t?&quot; %c&quot;:&quot; &quot;)+e[0]+(t?&quot;%c &quot;:&quot; &quot;)+&quot;+&quot;+r.humanize(this.diff);if(!t)return e;var n=&quot;color: &quot;+this.color;e=[e[0],n,&quot;color: inherit&quot;].concat(Array.prototype.slice.call(e,1));var i=0;var o=0;e[0].replace(/%[a-z%]/g,function(e){if(&quot;%%&quot;===e)return;i++;if(&quot;%c&quot;===e){o=i}});e.splice(o,0,n);return e}function o(){return&quot;object&quot;===typeof console&amp;&amp;console.log&amp;&amp;Function.prototype.apply.call(console.log,console,arguments)}function a(e){try{if(null==e){r.storage.removeItem(&quot;debug&quot;)}else{r.storage.debug=e}}catch(t){}}function s(){var e;try{e=r.storage.debug}catch(t){}return e}r.enable(s());function f(){try{return window.localStorage}catch(e){}}},{&quot;./debug&quot;:26}],26:[function(e,t,r){r=t.exports=a;r.coerce=u;r.disable=f;r.enable=s;r.enabled=c;r.humanize=e(&quot;ms&quot;);r.names=[];r.skips=[];r.formatters={};var n=0;var i;function o(){return r.colors[n++%r.colors.length]}function a(e){function t(){}t.enabled=false;function n(){var e=n;var t=+new Date;var a=t-(i||t);e.diff=a;e.prev=i;e.curr=t;i=t;if(null==e.useColors)e.useColors=r.useColors();if(null==e.color&amp;&amp;e.useColors)e.color=o();var s=Array.prototype.slice.call(arguments);s[0]=r.coerce(s[0]);if(&quot;string&quot;!==typeof s[0]){s=[&quot;%o&quot;].concat(s)}var f=0;s[0]=s[0].replace(/%([a-z%])/g,function(t,n){if(t===&quot;%%&quot;)return t;f++;var i=r.formatters[n];if(&quot;function&quot;===typeof i){var o=s[f];t=i.call(e,o);s.splice(f,1);f--}return t});if(&quot;function&quot;===typeof r.formatArgs){s=r.formatArgs.apply(e,s)}var c=n.log||r.log||console.log.bind(console);c.apply(e,s)}n.enabled=true;var a=r.enabled(e)?n:t;a.namespace=e;return a}function s(e){r.save(e);var t=(e||&quot;&quot;).split(/[\s,]+/);var n=t.length;for(var i=0;i&lt;n;i++){if(!t[i])continue;e=t[i].replace(/\*/g,&quot;.*?&quot;);if(e[0]===&quot;-&quot;){r.skips.push(new RegExp(&quot;^&quot;+e.substr(1)+&quot;$&quot;))}else{r.names.push(new RegExp(&quot;^&quot;+e+&quot;$&quot;))}}}function f(){r.enable(&quot;&quot;)}function c(e){var t,n;for(t=0,n=r.skips.length;t&lt;n;t++){if(r.skips[t].test(e)){return false}}for(t=0,n=r.names.length;t&lt;n;t++){if(r.names[t].test(e)){return true}}return false}function u(e){if(e instanceof Error)return e.stack||e.message;return e}},{ms:27}],27:[function(e,t,r){var n=1e3;var i=n*60;var o=i*60;var a=o*24;var s=a*365.25;t.exports=function(e,t){t=t||{};if(&quot;string&quot;==typeof e)return f(e);return t.long?u(e):c(e)};function f(e){e=&quot;&quot;+e;if(e.length&gt;1e4)return;var t=/^((?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(e);if(!t)return;var r=parseFloat(t[1]);var f=(t[2]||&quot;ms&quot;).toLowerCase();switch(f){case&quot;years&quot;:case&quot;year&quot;:case&quot;yrs&quot;:case&quot;yr&quot;:case&quot;y&quot;:return r*s;case&quot;days&quot;:case&quot;day&quot;:case&quot;d&quot;:return r*a;case&quot;hours&quot;:case&quot;hour&quot;:case&quot;hrs&quot;:case&quot;hr&quot;:case&quot;h&quot;:return r*o;case&quot;minutes&quot;:case&quot;minute&quot;:case&quot;mins&quot;:case&quot;min&quot;:case&quot;m&quot;:return r*i;case&quot;seconds&quot;:case&quot;second&quot;:case&quot;secs&quot;:case&quot;sec&quot;:case&quot;s&quot;:return r*n;case&quot;milliseconds&quot;:case&quot;millisecond&quot;:case&quot;msecs&quot;:case&quot;msec&quot;:case&quot;ms&quot;:return r}}function c(e){if(e&gt;=a)return Math.round(e/a)+&quot;d&quot;;if(e&gt;=o)return Math.round(e/o)+&quot;h&quot;;if(e&gt;=i)return Math.round(e/i)+&quot;m&quot;;if(e&gt;=n)return Math.round(e/n)+&quot;s&quot;;return e+&quot;ms&quot;}function u(e){return l(e,a,&quot;day&quot;)||l(e,o,&quot;hour&quot;)||l(e,i,&quot;minute&quot;)||l(e,n,&quot;second&quot;)||e+&quot; ms&quot;}function l(e,t,r){if(e&lt;t)return;if(e&lt;t*1.5)return Math.floor(e/t)+&quot; &quot;+r;return Math.ceil(e/t)+&quot; &quot;+r+&quot;s&quot;}},{}],28:[function(e,t,r){t.exports=function(e){var t=[].slice.call(arguments,1),r;for(var n=0,i=t.length;n&lt;i;n++){r=t[n];for(var o in r){e[o]=r[o]}}return e}},{}],29:[function(e,t,r){(function(r){var n=e(&quot;isarray&quot;);t.exports=i;function i(e){function t(e){if(!e)return false;if(r.Buffer&amp;&amp;r.Buffer.isBuffer(e)||r.ArrayBuffer&amp;&amp;e instanceof ArrayBuffer||r.Blob&amp;&amp;e instanceof Blob||r.File&amp;&amp;e instanceof File){return true}if(n(e)){for(var i=0;i&lt;e.length;i++){if(t(e[i])){return true}}}else if(e&amp;&amp;&quot;object&quot;==typeof e){if(e.toJSON){e=e.toJSON()}for(var o in e){if(Object.prototype.hasOwnProperty.call(e,o)&amp;&amp;t(e[o])){return true}}}return false}return t(e)}}).call(this,typeof global!==&quot;undefined&quot;?global:typeof self!==&quot;undefined&quot;?self:typeof window!==&quot;undefined&quot;?window:{})},{isarray:30}],30:[function(e,t,r){arguments[4][8][0].apply(r,arguments)},{dup:8}],31:[function(e,t,r){var n=t.exports=function(e,t){if(!t)t=16;if(e===undefined)e=128;if(e&lt;=0)return&quot;0&quot;;var r=Math.log(Math.pow(2,e))/Math.log(t);for(var i=2;r===Infinity;i*=2){r=Math.log(Math.pow(2,e/i))/Math.log(t)*i}var o=r-Math.floor(r);var a=&quot;&quot;;for(var i=0;i&lt;Math.floor(r);i++){var s=Math.floor(Math.random()*t).toString(t);a=s+a}if(o){var f=Math.pow(t,o);var s=Math.floor(Math.random()*f).toString(t);a=s+a}var c=parseInt(a,t);if(c!==Infinity&amp;&amp;c&gt;=Math.pow(2,e)){return n(e,t)}else return a};n.rack=function(e,t,r){var i=function(i){var a=0;do{if(a++&gt;10){if(r)e+=r;else throw new Error(&quot;too many ID collisions, use more bits&quot;)}var s=n(e,t)}while(Object.hasOwnProperty.call(o,s));o[s]=i;return s};var o=i.hats={};i.get=function(e){return i.hats[e]};i.set=function(e,t){i.hats[e]=t;return i};i.bits=e||128;i.base=t||16;return i}},{}],32:[function(e,t,r){arguments[4][7][0].apply(r,arguments)},{dup:7}],33:[function(e,t,r){(function(r){t.exports=l;var n=e(&quot;debug&quot;)(&quot;simple-peer&quot;);var i=e(&quot;get-browser-rtc&quot;);var o=e(&quot;hat&quot;);var a=e(&quot;inherits&quot;);var s=e(&quot;is-typedarray&quot;);var f=e(&quot;once&quot;);var c=e(&quot;stream&quot;);var u=e(&quot;typedarray-to-buffer&quot;);a(l,c.Duplex);function l(e){var t=this;if(!(t instanceof l))return new l(e);t._debug(&quot;new peer %o&quot;,e);if(!e)e={};e.allowHalfOpen=false;if(e.highWaterMark==null)e.highWaterMark=1024*1024;c.Duplex.call(t,e);t.initiator=e.initiator||false;t.channelConfig=e.channelConfig||l.channelConfig;t.channelName=e.channelName||o(160);if(!e.initiator)t.channelName=null;t.config=e.config||l.config;t.constraints=e.constraints||l.constraints;t.reconnectTimer=e.reconnectTimer||0;t.sdpTransform=e.sdpTransform||function(e){return e};t.stream=e.stream||false;t.trickle=e.trickle!==undefined?e.trickle:true;t.destroyed=false;t.connected=false;t.remoteAddress=undefined;t.remoteFamily=undefined;t.remotePort=undefined;t.localAddress=undefined;t.localPort=undefined;t._wrtc=e.wrtc||i();if(!t._wrtc){if(typeof window===&quot;undefined&quot;){throw new Error(&quot;No WebRTC support: Specify `opts.wrtc` option in this environment&quot;)}else{throw new Error(&quot;No WebRTC support: Not a supported browser&quot;)}}t._maxBufferedAmount=e.highWaterMark;t._pcReady=false;t._channelReady=false;t._iceComplete=false;t._channel=null;t._pendingCandidates=[];t._chunk=null;t._cb=null;t._interval=null;t._reconnectTimeout=null;t._pc=new t._wrtc.RTCPeerConnection(t.config,t.constraints);t._pc.oniceconnectionstatechange=t._onIceConnectionStateChange.bind(t);t._pc.onsignalingstatechange=t._onSignalingStateChange.bind(t);t._pc.onicecandidate=t._onIceCandidate.bind(t);if(t.stream)t._pc.addStream(t.stream);t._pc.onaddstream=t._onAddStream.bind(t);if(t.initiator){t._setupData({channel:t._pc.createDataChannel(t.channelName,t.channelConfig)});t._pc.onnegotiationneeded=f(t._createOffer.bind(t));if(typeof window===&quot;undefined&quot;||!window.webkitRTCPeerConnection){t._pc.onnegotiationneeded()}}else{t._pc.ondatachannel=t._setupData.bind(t)}t.on(&quot;finish&quot;,function(){if(t.connected){setTimeout(function(){t._destroy()},100)}else{t.once(&quot;connect&quot;,function(){setTimeout(function(){t._destroy()},100)})}})}l.WEBRTC_SUPPORT=!!i();l.config={iceServers:[{url:&quot;stun:23.21.150.121&quot;,urls:&quot;stun:23.21.150.121&quot;}]};l.constraints={};l.channelConfig={};Object.defineProperty(l.prototype,&quot;bufferSize&quot;,{get:function(){var e=this;return e._channel&amp;&amp;e._channel.bufferedAmount||0}});l.prototype.address=function(){var e=this;return{port:e.localPort,family:&quot;IPv4&quot;,address:e.localAddress}};l.prototype.signal=function(e){var t=this;if(t.destroyed)throw new Error(&quot;cannot signal after peer is destroyed&quot;);if(typeof e===&quot;string&quot;){try{e=JSON.parse(e)}catch(r){e={}}}t._debug(&quot;signal()&quot;);function n(e){try{t._pc.addIceCandidate(new t._wrtc.RTCIceCandidate(e),h,t._onError.bind(t))}catch(r){t._destroy(new Error(&quot;error adding candidate: &quot;+r.message))}}if(e.sdp){t._pc.setRemoteDescription(new t._wrtc.RTCSessionDescription(e),function(){if(t.destroyed)return;if(t._pc.remoteDescription.type===&quot;offer&quot;)t._createAnswer();t._pendingCandidates.forEach(n);t._pendingCandidates=[]},t._onError.bind(t))}if(e.candidate){if(t._pc.remoteDescription)n(e.candidate);else t._pendingCandidates.push(e.candidate)}if(!e.sdp&amp;&amp;!e.candidate){t._destroy(new Error(&quot;signal() called with invalid signal data&quot;))}};l.prototype.send=function(e){var t=this;if(!s.strict(e)&amp;&amp;!(e instanceof ArrayBuffer)&amp;&amp;!r.isBuffer(e)&amp;&amp;typeof e!==&quot;string&quot;&amp;&amp;(typeof Blob===&quot;undefined&quot;||!(e instanceof Blob))){e=JSON.stringify(e)}if(r.isBuffer(e)&amp;&amp;!s.strict(e)){e=new Uint8Array(e)}var n=e.length||e.byteLength||e.size;t._channel.send(e);t._debug(&quot;write: %d bytes&quot;,n)};l.prototype.destroy=function(e){var t=this;t._destroy(null,e)};l.prototype._destroy=function(e,t){var r=this;if(r.destroyed)return;if(t)r.once(&quot;close&quot;,t);r._debug(&quot;destroy (error: %s)&quot;,e&amp;&amp;e.message);r.readable=r.writable=false;if(!r._readableState.ended)r.push(null);if(!r._writableState.finished)r.end();r.destroyed=true;r.connected=false;r._pcReady=false;r._channelReady=false;r._chunk=null;r._cb=null;clearInterval(r._interval);clearTimeout(r._reconnectTimeout);if(r._pc){try{r._pc.close()}catch(e){}r._pc.oniceconnectionstatechange=null;r._pc.onsignalingstatechange=null;r._pc.onicecandidate=null}if(r._channel){try{r._channel.close()}catch(e){}r._channel.onmessage=null;r._channel.onopen=null;r._channel.onclose=null}r._pc=null;r._channel=null;if(e)r.emit(&quot;error&quot;,e);r.emit(&quot;close&quot;)};l.prototype._setupData=function(e){var t=this;t._channel=e.channel;t.channelName=t._channel.label;t._channel.binaryType=&quot;arraybuffer&quot;;t._channel.onmessage=t._onChannelMessage.bind(t);t._channel.onopen=t._onChannelOpen.bind(t);t._channel.onclose=t._onChannelClose.bind(t)};l.prototype._read=function(){};l.prototype._write=function(e,t,r){var n=this;if(n.destroyed)return r(new Error(&quot;cannot write after peer is destroyed&quot;));if(n.connected){try{n.send(e)}catch(i){return n._onError(i)}if(n._channel.bufferedAmount&gt;n._maxBufferedAmount){n._debug(&quot;start backpressure: bufferedAmount %d&quot;,n._channel.bufferedAmount);n._cb=r}else{r(null)}}else{n._debug(&quot;write before connect&quot;);n._chunk=e;n._cb=r}};l.prototype._createOffer=function(){var e=this;if(e.destroyed)return;e._pc.createOffer(function(t){if(e.destroyed)return;t.sdp=e.sdpTransform(t.sdp);e._pc.setLocalDescription(t,h,e._onError.bind(e));var r=function(){var r=e._pc.localDescription||t;e._debug(&quot;signal&quot;);e.emit(&quot;signal&quot;,{type:r.type,sdp:r.sdp})};if(e.trickle||e._iceComplete)r();else e.once(&quot;_iceComplete&quot;,r)},e._onError.bind(e),e.offerConstraints)};l.prototype._createAnswer=function(){var e=this;if(e.destroyed)return;e._pc.createAnswer(function(t){if(e.destroyed)return;t.sdp=e.sdpTransform(t.sdp);e._pc.setLocalDescription(t,h,e._onError.bind(e));var r=function(){var r=e._pc.localDescription||t;e._debug(&quot;signal&quot;);e.emit(&quot;signal&quot;,{type:r.type,sdp:r.sdp})};if(e.trickle||e._iceComplete)r();else e.once(&quot;_iceComplete&quot;,r)},e._onError.bind(e),e.answerConstraints)};l.prototype._onIceConnectionStateChange=function(){var e=this;if(e.destroyed)return;var t=e._pc.iceGatheringState;var r=e._pc.iceConnectionState;e._debug(&quot;iceConnectionStateChange %s %s&quot;,t,r);e.emit(&quot;iceConnectionStateChange&quot;,t,r);if(r===&quot;connected&quot;||r===&quot;completed&quot;){clearTimeout(e._reconnectTimeout);e._pcReady=true;e._maybeReady()}if(r===&quot;disconnected&quot;){if(e.reconnectTimer){clearTimeout(e._reconnectTimeout);e._reconnectTimeout=setTimeout(function(){e._destroy()},e.reconnectTimer)}else{e._destroy()}}if(r===&quot;closed&quot;){e._destroy()}};l.prototype._maybeReady=function(){var e=this;e._debug(&quot;maybeReady pc %s channel %s&quot;,e._pcReady,e._channelReady);if(e.connected||e._connecting||!e._pcReady||!e._channelReady)return;e._connecting=true;if(typeof window!==&quot;undefined&quot;&amp;&amp;!!window.mozRTCPeerConnection){e._pc.getStats(null,function(e){var r=[];e.forEach(function(e){r.push(e)});t(r)},e._onError.bind(e))}else{e._pc.getStats(function(e){var r=[];e.result().forEach(function(e){var t={};e.names().forEach(function(r){t[r]=e.stat(r)});t.id=e.id;t.type=e.type;t.timestamp=e.timestamp;r.push(t)});t(r)})}function t(t){t.forEach(function(t){if(t.type===&quot;remotecandidate&quot;){e.remoteAddress=t.ipAddress;e.remoteFamily=&quot;IPv4&quot;;e.remotePort=Number(t.portNumber);e._debug(&quot;connect remote: %s:%s (%s)&quot;,e.remoteAddress,e.remotePort,e.remoteFamily)}else if(t.type===&quot;localcandidate&quot;&amp;&amp;t.candidateType===&quot;host&quot;){e.localAddress=t.ipAddress;e.localPort=Number(t.portNumber);e._debug(&quot;connect local: %s:%s&quot;,e.localAddress,e.localPort)}});e._connecting=false;e.connected=true;if(e._chunk){try{e.send(e._chunk)}catch(r){return e._onError(r)}e._chunk=null;e._debug(&#39;sent chunk from &quot;write before connect&quot;&#39;);var n=e._cb;e._cb=null;n(null)}e._interval=setInterval(function(){if(!e._cb||!e._channel||e._channel.bufferedAmount&gt;e._maxBufferedAmount)return;e._debug(&quot;ending backpressure: bufferedAmount %d&quot;,e._channel.bufferedAmount);var t=e._cb;e._cb=null;t(null)},150);if(e._interval.unref)e._interval.unref();e._debug(&quot;connect&quot;);e.emit(&quot;connect&quot;)}};l.prototype._onSignalingStateChange=function(){var e=this;if(e.destroyed)return;e._debug(&quot;signalingStateChange %s&quot;,e._pc.signalingState);e.emit(&quot;signalingStateChange&quot;,e._pc.signalingState)};l.prototype._onIceCandidate=function(e){var t=this;if(t.destroyed)return;if(e.candidate&amp;&amp;t.trickle){t.emit(&quot;signal&quot;,{candidate:{candidate:e.candidate.candidate,sdpMLineIndex:e.candidate.sdpMLineIndex,sdpMid:e.candidate.sdpMid}})}else if(!e.candidate){t._iceComplete=true;t.emit(&quot;_iceComplete&quot;)}};l.prototype._onChannelMessage=function(e){var t=this;if(t.destroyed)return;var r=e.data;t._debug(&quot;read: %d bytes&quot;,r.byteLength||r.length);if(r instanceof ArrayBuffer){r=u(new Uint8Array(r));t.push(r)}else{try{r=JSON.parse(r)}catch(n){}t.emit(&quot;data&quot;,r)}};l.prototype._onChannelOpen=function(){var e=this;if(e.connected||e.destroyed)return;e._debug(&quot;on channel open&quot;);e._channelReady=true;e._maybeReady();</td>
</tr>
<tr>
<td id="L3" class="blob-num js-line-number js-code-nav-line-number" data-line-number="3"></td>
<td id="LC3" class="blob-code blob-code-inner js-file-line">
</td>
</tr>
<tr>
<td id="L4" class="blob-num js-line-number js-code-nav-line-number" data-line-number="4"></td>
<td id="LC4" class="blob-code blob-code-inner js-file-line">};l.prototype._onChannelClose=function(){var e=this;if(e.destroyed)return;e._debug(&quot;on channel close&quot;);e._destroy()};l.prototype._onAddStream=function(e){var t=this;if(t.destroyed)return;t._debug(&quot;on add stream&quot;);t.emit(&quot;stream&quot;,e.stream)};l.prototype._onError=function(e){var t=this;if(t.destroyed)return;t._debug(&quot;error %s&quot;,e.message||e);t._destroy(e)};l.prototype._debug=function(){var e=this;var t=[].slice.call(arguments);var r=e.channelName&amp;&amp;e.channelName.substring(0,7);t[0]=&quot;[&quot;+r+&quot;] &quot;+t[0];n.apply(null,t)};function h(){}}).call(this,e(&quot;buffer&quot;).Buffer)},{buffer:2,debug:25,&quot;get-browser-rtc&quot;:34,hat:31,inherits:32,&quot;is-typedarray&quot;:35,once:37,stream:21,&quot;typedarray-to-buffer&quot;:38}],34:[function(e,t,r){t.exports=function n(){if(typeof window===&quot;undefined&quot;)return null;var e={RTCPeerConnection:window.mozRTCPeerConnection||window.RTCPeerConnection||window.webkitRTCPeerConnection,RTCSessionDescription:window.mozRTCSessionDescription||window.RTCSessionDescription||window.webkitRTCSessionDescription,RTCIceCandidate:window.mozRTCIceCandidate||window.RTCIceCandidate||window.webkitRTCIceCandidate};if(!e.RTCPeerConnection)return null;return e}},{}],35:[function(e,t,r){t.exports=o;o.strict=a;o.loose=s;var n=Object.prototype.toString;var i={&quot;[object Int8Array]&quot;:true,&quot;[object Int16Array]&quot;:true,&quot;[object Int32Array]&quot;:true,&quot;[object Uint8Array]&quot;:true,&quot;[object Uint8ClampedArray]&quot;:true,&quot;[object Uint16Array]&quot;:true,&quot;[object Uint32Array]&quot;:true,&quot;[object Float32Array]&quot;:true,&quot;[object Float64Array]&quot;:true};function o(e){return a(e)||s(e)}function a(e){return e instanceof Int8Array||e instanceof Int16Array||e instanceof Int32Array||e instanceof Uint8Array||e instanceof Uint8ClampedArray||e instanceof Uint16Array||e instanceof Uint32Array||e instanceof Float32Array||e instanceof Float64Array}function s(e){return i[n.call(e)]}},{}],36:[function(e,t,r){t.exports=n;function n(e,t){if(e&amp;&amp;t)return n(e)(t);if(typeof e!==&quot;function&quot;)throw new TypeError(&quot;need wrapper function&quot;);Object.keys(e).forEach(function(t){r[t]=e[t]});return r;function r(){var t=new Array(arguments.length);for(var r=0;r&lt;t.length;r++){t[r]=arguments[r]}var n=e.apply(this,t);var i=t[t.length-1];if(typeof n===&quot;function&quot;&amp;&amp;n!==i){Object.keys(i).forEach(function(e){n[e]=i[e]})}return n}}},{}],37:[function(e,t,r){var n=e(&quot;wrappy&quot;);t.exports=n(i);i.proto=i(function(){Object.defineProperty(Function.prototype,&quot;once&quot;,{value:function(){return i(this)},configurable:true})});function i(e){var t=function(){if(t.called)return t.value;t.called=true;return t.value=e.apply(this,arguments)};t.called=false;return t}},{wrappy:36}],38:[function(e,t,r){(function(r){var n=e(&quot;is-typedarray&quot;).strict;t.exports=function(e){var t=r.TYPED_ARRAY_SUPPORT?r._augment:function(e){return new r(e)};if(e instanceof Uint8Array){return t(e)}else if(e instanceof ArrayBuffer){return t(new Uint8Array(e))}else if(n(e)){return t(new Uint8Array(e.buffer,e.byteOffset,e.byteLength))}else{return new r(e)}}}).call(this,e(&quot;buffer&quot;).Buffer)},{buffer:2,&quot;is-typedarray&quot;:35}],39:[function(e,t,r){(function(t){var n=e(&quot;isarray&quot;);var i=e(&quot;./is-buffer&quot;);r.deconstructPacket=function(e){var t=[];var r=e.data;function o(e){if(!e)return e;if(i(e)){var r={_placeholder:true,num:t.length};t.push(e);return r}else if(n(e)){var a=new Array(e.length);for(var s=0;s&lt;e.length;s++){a[s]=o(e[s])}return a}else if(&quot;object&quot;==typeof e&amp;&amp;!(e instanceof Date)){var a={};for(var f in e){a[f]=o(e[f])}return a}return e}var a=e;a.data=o(r);a.attachments=t.length;return{packet:a,buffers:t}};r.reconstructPacket=function(e,t){var r=0;function i(e){if(e&amp;&amp;e._placeholder){var r=t[e.num];return r}else if(n(e)){for(var o=0;o&lt;e.length;o++){e[o]=i(e[o])}return e}else if(e&amp;&amp;&quot;object&quot;==typeof e){for(var a in e){e[a]=i(e[a])}return e}return e}e.data=i(e.data);e.attachments=undefined;return e};r.removeBlobs=function(e,r){function o(e,f,c){if(!e)return e;if(t.Blob&amp;&amp;e instanceof Blob||t.File&amp;&amp;e instanceof File){a++;var u=new FileReader;u.onload=function(){if(c){c[f]=this.result}else{s=this.result}if(!--a){r(s)}};u.readAsArrayBuffer(e)}else if(n(e)){for(var l=0;l&lt;e.length;l++){o(e[l],l,e)}}else if(e&amp;&amp;&quot;object&quot;==typeof e&amp;&amp;!i(e)){for(var h in e){o(e[h],h,e)}}}var a=0;var s=e;o(s);if(!a){r(s)}}}).call(this,typeof global!==&quot;undefined&quot;?global:typeof self!==&quot;undefined&quot;?self:typeof window!==&quot;undefined&quot;?window:{})},{&quot;./is-buffer&quot;:41,isarray:44}],40:[function(e,t,r){var n=e(&quot;debug&quot;)(&quot;socket.io-parser&quot;);var i=e(&quot;json3&quot;);var o=e(&quot;isarray&quot;);var a=e(&quot;component-emitter&quot;);var s=e(&quot;./binary&quot;);var f=e(&quot;./is-buffer&quot;);r.protocol=4;r.types=[&quot;CONNECT&quot;,&quot;DISCONNECT&quot;,&quot;EVENT&quot;,&quot;BINARY_EVENT&quot;,&quot;ACK&quot;,&quot;BINARY_ACK&quot;,&quot;ERROR&quot;];r.CONNECT=0;r.DISCONNECT=1;r.EVENT=2;r.ACK=3;r.ERROR=4;r.BINARY_EVENT=5;r.BINARY_ACK=6;r.Encoder=c;r.Decoder=h;function c(){}c.prototype.encode=function(e,t){n(&quot;encoding packet %j&quot;,e);if(r.BINARY_EVENT==e.type||r.BINARY_ACK==e.type){l(e,t)}else{var i=u(e);t([i])}};function u(e){var t=&quot;&quot;;var o=false;t+=e.type;if(r.BINARY_EVENT==e.type||r.BINARY_ACK==e.type){t+=e.attachments;t+=&quot;-&quot;}if(e.nsp&amp;&amp;&quot;/&quot;!=e.nsp){o=true;t+=e.nsp}if(null!=e.id){if(o){t+=&quot;,&quot;;o=false}t+=e.id}if(null!=e.data){if(o)t+=&quot;,&quot;;t+=i.stringify(e.data)}n(&quot;encoded %j as %s&quot;,e,t);return t}function l(e,t){function r(e){var r=s.deconstructPacket(e);var n=u(r.packet);var i=r.buffers;i.unshift(n);t(i)}s.removeBlobs(e,r)}function h(){this.reconstructor=null}a(h.prototype);h.prototype.add=function(e){var t;if(&quot;string&quot;==typeof e){t=d(e);if(r.BINARY_EVENT==t.type||r.BINARY_ACK==t.type){this.reconstructor=new p(t);if(this.reconstructor.reconPack.attachments==0){this.emit(&quot;decoded&quot;,t)}}else{this.emit(&quot;decoded&quot;,t)}}else if(f(e)||e.base64){if(!this.reconstructor){throw new Error(&quot;got binary data when not reconstructing a packet&quot;)}else{t=this.reconstructor.takeBinaryData(e);if(t){this.reconstructor=null;this.emit(&quot;decoded&quot;,t)}}}else{throw new Error(&quot;Unknown type: &quot;+e)}};function d(e){var t={};var o=0;t.type=Number(e.charAt(0));if(null==r.types[t.type])return g();if(r.BINARY_EVENT==t.type||r.BINARY_ACK==t.type){t.attachments=&quot;&quot;;while(e.charAt(++o)!=&quot;-&quot;){t.attachments+=e.charAt(o)}t.attachments=Number(t.attachments)}if(&quot;/&quot;==e.charAt(o+1)){t.nsp=&quot;&quot;;while(++o){var a=e.charAt(o);if(&quot;,&quot;==a)break;t.nsp+=a;if(o+1==e.length)break}}else{t.nsp=&quot;/&quot;}var s=e.charAt(o+1);if(&quot;&quot;!=s&amp;&amp;Number(s)==s){t.id=&quot;&quot;;while(++o){var a=e.charAt(o);if(null==a||Number(a)!=a){--o;break}t.id+=e.charAt(o);if(o+1==e.length)break}t.id=Number(t.id)}if(e.charAt(++o)){try{t.data=i.parse(e.substr(o))}catch(f){return g()}}n(&quot;decoded %s as %j&quot;,e,t);return t}h.prototype.destroy=function(){if(this.reconstructor){this.reconstructor.finishedReconstruction()}};function p(e){this.reconPack=e;this.buffers=[]}p.prototype.takeBinaryData=function(e){this.buffers.push(e);if(this.buffers.length==this.reconPack.attachments){this.reconPack.data[&quot;data&quot;]=this.buffers.reduce(function(e,t,r,n){return this._appendBuffer(e,t)});s.reconstructPacket(this.reconPack,[this.reconPack.data[&quot;data&quot;]]);var t=this.reconPack;this.finishedReconstruction();return t}return null};p.prototype.finishedReconstruction=function(){this.reconPack=null;this.buffers=[]};function g(e){return{type:r.ERROR,data:&quot;parser error&quot;}}p.prototype._appendBuffer=function(e,t){var r=new Uint8Array(e.byteLength+t.byteLength);r.set(new Uint8Array(e),0);r.set(new Uint8Array(t),e.byteLength);return r.buffer}},{&quot;./binary&quot;:39,&quot;./is-buffer&quot;:41,&quot;component-emitter&quot;:42,debug:43,isarray:44,json3:45}],41:[function(e,t,r){(function(e){t.exports=r;function r(t){return e.Buffer&amp;&amp;e.Buffer.isBuffer(t)||e.ArrayBuffer&amp;&amp;t instanceof ArrayBuffer}}).call(this,typeof global!==&quot;undefined&quot;?global:typeof self!==&quot;undefined&quot;?self:typeof window!==&quot;undefined&quot;?window:{})},{}],42:[function(e,t,r){t.exports=n;function n(e){if(e)return i(e)}function i(e){for(var t in n.prototype){e[t]=n.prototype[t]}return e}n.prototype.on=n.prototype.addEventListener=function(e,t){this._callbacks=this._callbacks||{};(this._callbacks[e]=this._callbacks[e]||[]).push(t);return this};n.prototype.once=function(e,t){var r=this;this._callbacks=this._callbacks||{};function n(){r.off(e,n);t.apply(this,arguments)}n.fn=t;this.on(e,n);return this};n.prototype.off=n.prototype.removeListener=n.prototype.removeAllListeners=n.prototype.removeEventListener=function(e,t){this._callbacks=this._callbacks||{};if(0==arguments.length){this._callbacks={};return this}var r=this._callbacks[e];if(!r)return this;if(1==arguments.length){delete this._callbacks[e];return this}var n;for(var i=0;i&lt;r.length;i++){n=r[i];if(n===t||n.fn===t){r.splice(i,1);break}}return this};n.prototype.emit=function(e){this._callbacks=this._callbacks||{};var t=[].slice.call(arguments,1),r=this._callbacks[e];if(r){r=r.slice(0);for(var n=0,i=r.length;n&lt;i;++n){r[n].apply(this,t)}}return this};n.prototype.listeners=function(e){this._callbacks=this._callbacks||{};return this._callbacks[e]||[]};n.prototype.hasListeners=function(e){return!!this.listeners(e).length}},{}],43:[function(e,t,r){t.exports=n;function n(e){if(!n.enabled(e))return function(){};return function(t){t=i(t);var r=new Date;var o=r-(n[e]||r);n[e]=r;t=e+&quot; &quot;+t+&quot; +&quot;+n.humanize(o);window.console&amp;&amp;console.log&amp;&amp;Function.prototype.apply.call(console.log,console,arguments)}}n.names=[];n.skips=[];n.enable=function(e){try{localStorage.debug=e}catch(t){}var r=(e||&quot;&quot;).split(/[\s,]+/),i=r.length;for(var o=0;o&lt;i;o++){e=r[o].replace(&quot;*&quot;,&quot;.*?&quot;);if(e[0]===&quot;-&quot;){n.skips.push(new RegExp(&quot;^&quot;+e.substr(1)+&quot;$&quot;))}else{n.names.push(new RegExp(&quot;^&quot;+e+&quot;$&quot;))}}};n.disable=function(){n.enable(&quot;&quot;)};n.humanize=function(e){var t=1e3,r=60*1e3,n=60*r;if(e&gt;=n)return(e/n).toFixed(1)+&quot;h&quot;;if(e&gt;=r)return(e/r).toFixed(1)+&quot;m&quot;;if(e&gt;=t)return(e/t|0)+&quot;s&quot;;return e+&quot;ms&quot;};n.enabled=function(e){for(var t=0,r=n.skips.length;t&lt;r;t++){if(n.skips[t].test(e)){return false}}for(var t=0,r=n.names.length;t&lt;r;t++){if(n.names[t].test(e)){return true}}return false};function i(e){if(e instanceof Error)return e.stack||e.message;return e}try{if(window.localStorage)n.enable(localStorage.debug)}catch(o){}},{}],44:[function(e,t,r){arguments[4][8][0].apply(r,arguments)},{dup:8}],45:[function(t,r,n){(function(t){var r={}.toString,i,o,a;var s=typeof e===&quot;function&quot;&amp;&amp;e.amd;var f=typeof JSON==&quot;object&quot;&amp;&amp;JSON;var c=typeof n==&quot;object&quot;&amp;&amp;n&amp;&amp;!n.nodeType&amp;&amp;n;if(c&amp;&amp;f){c.stringify=f.stringify;c.parse=f.parse}else{c=t.JSON=f||{}}var u=new Date(-0xc782b5b800cec);try{u=u.getUTCFullYear()==-109252&amp;&amp;u.getUTCMonth()===0&amp;&amp;u.getUTCDate()===1&amp;&amp;u.getUTCHours()==10&amp;&amp;u.getUTCMinutes()==37&amp;&amp;u.getUTCSeconds()==6&amp;&amp;u.getUTCMilliseconds()==708}catch(l){}function h(e){if(h[e]!==a){return h[e]}var t;if(e==&quot;bug-string-char-index&quot;){t=&quot;a&quot;[0]!=&quot;a&quot;}else if(e==&quot;json&quot;){t=h(&quot;json-stringify&quot;)&amp;&amp;h(&quot;json-parse&quot;)}else{var n,i=&#39;{&quot;a&quot;:[1,true,false,null,&quot;\\u0000\\b\\n\\f\\r\\t&quot;]}&#39;;if(e==&quot;json-stringify&quot;){var o=c.stringify,s=typeof o==&quot;function&quot;&amp;&amp;u;if(s){(n=function(){return 1}).toJSON=n;try{s=o(0)===&quot;0&quot;&amp;&amp;o(new Number)===&quot;0&quot;&amp;&amp;o(new String)==&#39;&quot;&quot;&#39;&amp;&amp;o(r)===a&amp;&amp;o(a)===a&amp;&amp;o()===a&amp;&amp;o(n)===&quot;1&quot;&amp;&amp;o([n])==&quot;[1]&quot;&amp;&amp;o([a])==&quot;[null]&quot;&amp;&amp;o(null)==&quot;null&quot;&amp;&amp;o([a,r,null])==&quot;[null,null,null]&quot;&amp;&amp;o({a:[n,true,false,null,&quot;\x00\b\n\f\r &quot;]})==i&amp;&amp;o(null,n)===&quot;1&quot;&amp;&amp;o([1,2],null,1)==&quot;[\n 1,\n 2\n]&quot;&amp;&amp;o(new Date(-864e13))==&#39;&quot;-271821-04-20T00:00:00.000Z&quot;&#39;&amp;&amp;o(new Date(864e13))==&#39;&quot;+275760-09-13T00:00:00.000Z&quot;&#39;&amp;&amp;o(new Date(-621987552e5))==&#39;&quot;-000001-01-01T00:00:00.000Z&quot;&#39;&amp;&amp;o(new Date(-1))==&#39;&quot;1969-12-31T23:59:59.999Z&quot;&#39;}catch(f){s=false}}t=s}if(e==&quot;json-parse&quot;){var l=c.parse;if(typeof l==&quot;function&quot;){try{if(l(&quot;0&quot;)===0&amp;&amp;!l(false)){n=l(i);var d=n[&quot;a&quot;].length==5&amp;&amp;n[&quot;a&quot;][0]===1;if(d){try{d=!l(&#39;&quot; &quot;&#39;)}catch(f){}if(d){try{d=l(&quot;01&quot;)!==1}catch(f){}}if(d){try{d=l(&quot;1.&quot;)!==1}catch(f){}}}}}catch(f){d=false}}t=d}}return h[e]=!!t}if(!h(&quot;json&quot;)){var d=&quot;[object Function]&quot;;var p=&quot;[object Date]&quot;;var g=&quot;[object Number]&quot;;var v=&quot;[object String]&quot;;var b=&quot;[object Array]&quot;;var y=&quot;[object Boolean]&quot;;var m=h(&quot;bug-string-char-index&quot;);if(!u){var w=Math.floor;var _=[0,31,59,90,120,151,181,212,243,273,304,334];var E=function(e,t){return _[t]+365*(e-1970)+w((e-1969+(t=+(t&gt;1)))/4)-w((e-1901+t)/100)+w((e-1601+t)/400)}}if(!(i={}.hasOwnProperty)){i=function(e){var t={},n;if((t.__proto__=null,t.__proto__={toString:1},t).toString!=r){i=function(e){var t=this.__proto__,r=e in(this.__proto__=null,this);this.__proto__=t;return r}}else{n=t.constructor;i=function(e){var t=(this.constructor||n).prototype;return e in this&amp;&amp;!(e in t&amp;&amp;this[e]===t[e])}}t=null;return i.call(this,e)}}var A={&quot;boolean&quot;:1,number:1,string:1,undefined:1};var C=function(e,t){var r=typeof e[t];return r==&quot;object&quot;?!!e[t]:!A[r]};o=function(e,t){var n=0,a,s,f;(a=function(){this.valueOf=0}).prototype.valueOf=0;s=new a;for(f in s){if(i.call(s,f)){n++}}a=s=null;if(!n){s=[&quot;valueOf&quot;,&quot;toString&quot;,&quot;toLocaleString&quot;,&quot;propertyIsEnumerable&quot;,&quot;isPrototypeOf&quot;,&quot;hasOwnProperty&quot;,&quot;constructor&quot;];o=function(e,t){var n=r.call(e)==d,o,a;var f=!n&amp;&amp;typeof e.constructor!=&quot;function&quot;&amp;&amp;C(e,&quot;hasOwnProperty&quot;)?e.hasOwnProperty:i;for(o in e){if(!(n&amp;&amp;o==&quot;prototype&quot;)&amp;&amp;f.call(e,o)){t(o)}}for(a=s.length;o=s[--a];f.call(e,o)&amp;&amp;t(o));}}else if(n==2){o=function(e,t){var n={},o=r.call(e)==d,a;for(a in e){if(!(o&amp;&amp;a==&quot;prototype&quot;)&amp;&amp;!i.call(n,a)&amp;&amp;(n[a]=1)&amp;&amp;i.call(e,a)){t(a)}}}}else{o=function(e,t){var n=r.call(e)==d,o,a;for(o in e){if(!(n&amp;&amp;o==&quot;prototype&quot;)&amp;&amp;i.call(e,o)&amp;&amp;!(a=o===&quot;constructor&quot;)){t(o)}}if(a||i.call(e,o=&quot;constructor&quot;)){t(o)}}}return o(e,t)};if(!h(&quot;json-stringify&quot;)){var k={92:&quot;\\\\&quot;,34:&#39;\\&quot;&#39;,8:&quot;\\b&quot;,12:&quot;\\f&quot;,10:&quot;\\n&quot;,13:&quot;\\r&quot;,9:&quot;\\t&quot;};var S=&quot;000000&quot;;var R=function(e,t){return(S+(t||0)).slice(-e)};var T=&quot;\\u00&quot;;var I=function(e){var t=&#39;&quot;&#39;,r=0,n=e.length,i=n&gt;10&amp;&amp;m,o;if(i){o=e.split(&quot;&quot;)}for(;r&lt;n;r++){var a=e.charCodeAt(r);switch(a){case 8:case 9:case 10:case 12:case 13:case 34:case 92:t+=k[a];break;default:if(a&lt;32){t+=T+R(2,a.toString(16));break}t+=i?o[r]:m?e.charAt(r):e[r]}}return t+&#39;&quot;&#39;};var L=function(e,t,n,s,f,c,u){var l,h,d,m,_,A,C,k,S,T,B,M,P,x,j,U;try{l=t[e]}catch(N){}if(typeof l==&quot;object&quot;&amp;&amp;l){h=r.call(l);if(h==p&amp;&amp;!i.call(l,&quot;toJSON&quot;)){if(l&gt;-1/0&amp;&amp;l&lt;1/0){if(E){_=w(l/864e5);for(d=w(_/365.2425)+1970-1;E(d+1,0)&lt;=_;d++);for(m=w((_-E(d,0))/30.42);E(d,m+1)&lt;=_;m++);_=1+_-E(d,m);A=(l%864e5+864e5)%864e5;C=w(A/36e5)%24;k=w(A/6e4)%60;S=w(A/1e3)%60;T=A%1e3}else{d=l.getUTCFullYear();m=l.getUTCMonth();_=l.getUTCDate();C=l.getUTCHours();k=l.getUTCMinutes();S=l.getUTCSeconds();T=l.getUTCMilliseconds()}l=(d&lt;=0||d&gt;=1e4?(d&lt;0?&quot;-&quot;:&quot;+&quot;)+R(6,d&lt;0?-d:d):R(4,d))+&quot;-&quot;+R(2,m+1)+&quot;-&quot;+R(2,_)+&quot;T&quot;+R(2,C)+&quot;:&quot;+R(2,k)+&quot;:&quot;+R(2,S)+&quot;.&quot;+R(3,T)+&quot;Z&quot;}else{l=null}}else if(typeof l.toJSON==&quot;function&quot;&amp;&amp;(h!=g&amp;&amp;h!=v&amp;&amp;h!=b||i.call(l,&quot;toJSON&quot;))){l=l.toJSON(e)}}if(n){l=n.call(t,e,l)}if(l===null){return&quot;null&quot;}h=r.call(l);if(h==y){return&quot;&quot;+l}else if(h==g){return l&gt;-1/0&amp;&amp;l&lt;1/0?&quot;&quot;+l:&quot;null&quot;}else if(h==v){return I(&quot;&quot;+l)}if(typeof l==&quot;object&quot;){for(x=u.length;x--;){if(u[x]===l){throw TypeError()}}u.push(l);B=[];j=c;c+=f;if(h==b){for(P=0,x=l.length;P&lt;x;P++){M=L(P,l,n,s,f,c,u);B.push(M===a?&quot;null&quot;:M)}U=B.length?f?&quot;[\n&quot;+c+B.join(&quot;,\n&quot;+c)+&quot;\n&quot;+j+&quot;]&quot;:&quot;[&quot;+B.join(&quot;,&quot;)+&quot;]&quot;:&quot;[]&quot;}else{o(s||l,function(e){var t=L(e,l,n,s,f,c,u);if(t!==a){B.push(I(e)+&quot;:&quot;+(f?&quot; &quot;:&quot;&quot;)+t)}});U=B.length?f?&quot;{\n&quot;+c+B.join(&quot;,\n&quot;+c)+&quot;\n&quot;+j+&quot;}&quot;:&quot;{&quot;+B.join(&quot;,&quot;)+&quot;}&quot;:&quot;{}&quot;}u.pop();return U}};c.stringify=function(e,t,n){var i,o,a,s;if(typeof t==&quot;function&quot;||typeof t==&quot;object&quot;&amp;&amp;t){if((s=r.call(t))==d){o=t}else if(s==b){a={};for(var f=0,c=t.length,u;f&lt;c;u=t[f++],(s=r.call(u),s==v||s==g)&amp;&amp;(a[u]=1));}}if(n){if((s=r.call(n))==g){if((n-=n%1)&gt;0){for(i=&quot;&quot;,n&gt;10&amp;&amp;(n=10);i.length&lt;n;i+=&quot; &quot;);}}else if(s==v){i=n.length&lt;=10?n:n.slice(0,10)}}return L(&quot;&quot;,(u={},u[&quot;&quot;]=e,u),o,a,i,&quot;&quot;,[])}}if(!h(&quot;json-parse&quot;)){var B=String.fromCharCode;var M={92:&quot;\\&quot;,34:&#39;&quot;&#39;,47:&quot;/&quot;,98:&quot;\b&quot;,116:&quot; &quot;,110:&quot;\n&quot;,102:&quot;\f&quot;,114:&quot;\r&quot;};var P,x;var j=function(){P=x=null;throw SyntaxError()};var U=function(){var e=x,t=e.length,r,n,i,o,a;while(P&lt;t){a=e.charCodeAt(P);switch(a){case 9:case 10:case 13:case 32:P++;break;case 123:case 125:case 91:case 93:case 58:case 44:r=m?e.charAt(P):e[P];P++;return r;case 34:for(r=&quot;@&quot;,P++;P&lt;t;){a=e.charCodeAt(P);if(a&lt;32){j()}else if(a==92){a=e.charCodeAt(++P);switch(a){case 92:case 34:case 47:case 98:case 116:case 110:case 102:case 114:r+=M[a];P++;break;case 117:n=++P;for(i=P+4;P&lt;i;P++){a=e.charCodeAt(P);if(!(a&gt;=48&amp;&amp;a&lt;=57||a&gt;=97&amp;&amp;a&lt;=102||a&gt;=65&amp;&amp;a&lt;=70)){j()}}r+=B(&quot;0x&quot;+e.slice(n,P));break;default:j()}}else{if(a==34){break}a=e.charCodeAt(P);n=P;while(a&gt;=32&amp;&amp;a!=92&amp;&amp;a!=34){a=e.charCodeAt(++P)}r+=e.slice(n,P)}}if(e.charCodeAt(P)==34){P++;return r}j();default:n=P;if(a==45){o=true;a=e.charCodeAt(++P)}if(a&gt;=48&amp;&amp;a&lt;=57){if(a==48&amp;&amp;(a=e.charCodeAt(P+1),a&gt;=48&amp;&amp;a&lt;=57)){j()}o=false;for(;P&lt;t&amp;&amp;(a=e.charCodeAt(P),a&gt;=48&amp;&amp;a&lt;=57);P++);if(e.charCodeAt(P)==46){i=++P;for(;i&lt;t&amp;&amp;(a=e.charCodeAt(i),a&gt;=48&amp;&amp;a&lt;=57);i++);if(i==P){j()}P=i}a=e.charCodeAt(P);if(a==101||a==69){a=e.charCodeAt(++P);if(a==43||a==45){P++}for(i=P;i&lt;t&amp;&amp;(a=e.charCodeAt(i),a&gt;=48&amp;&amp;a&lt;=57);i++);if(i==P){j()}P=i}return+e.slice(n,P)}if(o){j()}if(e.slice(P,P+4)==&quot;true&quot;){P+=4;return true}else if(e.slice(P,P+5)==&quot;false&quot;){P+=5;return false}else if(e.slice(P,P+4)==&quot;null&quot;){P+=4;return null}j()}}return&quot;$&quot;};var N=function(e){var t,r;if(e==&quot;$&quot;){j()}if(typeof e==&quot;string&quot;){if((m?e.charAt(0):e[0])==&quot;@&quot;){return e.slice(1)}if(e==&quot;[&quot;){t=[];for(;;r||(r=true)){e=U();if(e==&quot;]&quot;){break}if(r){if(e==&quot;,&quot;){e=U();if(e==&quot;]&quot;){j()}}else{j()}}if(e==&quot;,&quot;){j()}t.push(N(e))}return t}else if(e==&quot;{&quot;){t={};for(;;r||(r=true)){e=U();if(e==&quot;}&quot;){break}if(r){if(e==&quot;,&quot;){e=U();if(e==&quot;}&quot;){j()}}else{j()}}if(e==&quot;,&quot;||typeof e!=&quot;string&quot;||(m?e.charAt(0):e[0])!=&quot;@&quot;||U()!=&quot;:&quot;){j()}t[e.slice(1)]=N(U())}return t}j()}return e};var O=function(e,t,r){var n=D(e,t,r);if(n===a){delete e[t]}else{e[t]=n}};var D=function(e,t,n){var i=e[t],a;if(typeof i==&quot;object&quot;&amp;&amp;i){if(r.call(i)==b){for(a=i.length;a--;){O(i,a,n)}}else{o(i,function(e){O(i,e,n)})}}return n.call(e,t,i)};c.parse=function(e,t){var n,i;P=0;x=&quot;&quot;+e;n=N(U());if(U()!=&quot;$&quot;){j()}P=x=null;return t&amp;&amp;r.call(t)==d?D((i={},i[&quot;&quot;]=n,i),&quot;&quot;,t):n}}}if(s){e(function(){return c})}})(this)},{}],46:[function(e,t,r){t.exports=n;function n(e,t){var r=[];t=t||0;for(var n=t||0;n&lt;e.length;n++){r[n-t]=e[n]}return r}},{}],47:[function(e,t,r){var n;var i;if(window.mozRTCPeerConnection||navigator.mozGetUserMedia){n=&quot;moz&quot;;i=parseInt(navigator.userAgent.match(/Firefox\/([0-9]+)\./)[1],10)}else if(window.webkitRTCPeerConnection||navigator.webkitGetUserMedia){n=&quot;webkit&quot;;i=navigator.userAgent.match(/Chrom(e|ium)/)&amp;&amp;parseInt(navigator.userAgent.match(/Chrom(e|ium)\/([0-9]+)\./)[2],10)}var o=window.mozRTCPeerConnection||window.webkitRTCPeerConnection;var a=window.mozRTCIceCandidate||window.RTCIceCandidate;var s=window.mozRTCSessionDescription||window.RTCSessionDescription;var f=window.webkitMediaStream||window.MediaStream;var c=window.location.protocol===&quot;https:&quot;&amp;&amp;(n===&quot;webkit&quot;&amp;&amp;i&gt;=26||n===&quot;moz&quot;&amp;&amp;i&gt;=33);var u=window.AudioContext||window.webkitAudioContext;var l=document.createElement(&quot;video&quot;);var h=l&amp;&amp;l.canPlayType&amp;&amp;l.canPlayType(&#39;video/webm; codecs=&quot;vp8&quot;, vorbis&#39;)===&quot;probably&quot;;var d=navigator.getUserMedia||navigator.webkitGetUserMedia||navigator.msGetUserMedia||navigator.mozGetUserMedia;t.exports={prefix:n,browserVersion:i,support:!!o&amp;&amp;h&amp;&amp;!!d,supportRTCPeerConnection:!!o,supportVp8:h,supportGetUserMedia:!!d,supportDataChannel:!!(o&amp;&amp;o.prototype&amp;&amp;o.prototype.createDataChannel),supportWebAudio:!!(u&amp;&amp;u.prototype.createMediaStreamSource),supportMediaStream:!!(f&amp;&amp;f.prototype.removeTrack),supportScreenSharing:!!c,AudioContext:u,PeerConnection:o,SessionDescription:s,IceCandidate:a,MediaStream:f,getUserMedia:d}},{}],&quot;/&quot;:[function(e,t,r){window.myDebug=e(&quot;debug&quot;);var n=e(&quot;simple-peer&quot;);var i=e(&quot;component-emitter&quot;);var o=e(&quot;socket.io-parser&quot;);var a=e(&quot;to-array&quot;);var s=e(&quot;has-binary&quot;);var f=e(&quot;component-bind&quot;);var c=e(&quot;debug&quot;)(&quot;socket&quot;);var u=e(&quot;hat&quot;);var l=e(&quot;extend.js&quot;);var h=e(&quot;webrtcsupport&quot;);var d=i.prototype.emit;function p(e,t,r){var i=this;i.useSockets=true;i.usePeerConnection=false;i.decoder=new o.Decoder(this);i.decoder.on(&quot;decoded&quot;,f(this,this.ondecoded));i.socket=e;i.cb=r;i._peers={};i.readyPeers=0;i.ready=false;i._peerEvents={upgrade:1,error:1,peer_signal:1,peer_ready:1,stream:1};var a={autoUpgrade:true,numClients:5};i.opts=l(a,t||{});i.peerOpts=i.opts.peerOpts||{};i.numConnectedClients;e.on(&quot;numClients&quot;,function(t){i.peerId=e.io.engine.id;i.numConnectedClients=t;if(h.supportDataChannel){r(function(t){var r={offers:t,fromPeerId:i.peerId};e.emit(&quot;offers&quot;,r)})}function r(e){var t=[];for(var r=0;r&lt;i.opts.numClients;++r){o()}function o(){var e=u(160);var r=l(i.peerOpts,{initiator:true});var o=i._peers[e]=new n(r);o.setMaxListeners(50);i.setupPeerEvents(o);o.on(&quot;signal&quot;,function(r){t.push({offer:r,offerId:e});a()});o.on(&quot;error&quot;,function(e){d.call(this,&quot;peer-error&quot;,e);c(&quot;Error in peer %s&quot;,e)})}function a(){if(t.length===i.opts.numClients){c(&quot;generated %s offers&quot;,i.opts.numClients);e(t)}}}});e.on(&quot;offer&quot;,function(t){var r=l(i.peerOpts,{initiator:false});var o=i._peers[t.fromPeerId]=new n(r);i.numConnectedClients++;o.setMaxListeners(50);i.setupPeerEvents(o);o.on(&quot;signal&quot;,function(r){var n={signal:r,offerId:t.offerId,fromPeerId:i.peerId,toPeerId:t.fromPeerId};e.emit(&quot;peer-signal&quot;,n)});o.on(&quot;error&quot;,function(e){d.call(this,&quot;peer-error&quot;,e);c(&quot;Error in peer %s&quot;,e)});o.signal(t.offer)});e.on(&quot;peer-signal&quot;,function(t){var r=i._peers[t.offerId]||i._peers[t.fromPeerId];r.on(&quot;signal&quot;,function n(r){var n={signal:r,offerId:t.offerId,fromPeerId:i.peerId,toPeerId:t.fromPeerId};e.emit(&quot;peer-signal&quot;,n)});r.signal(t.signal)});i.on(&quot;peer_ready&quot;,function(e){i.readyPeers++;if(i.readyPeers&gt;=i.numConnectedClients&amp;&amp;!i.ready){i.ready=true;if(i.opts.autoUpgrade)i.usePeerConnection=true;if(typeof i.cb===&quot;function&quot;)i.cb();i.emit(&quot;upgrade&quot;)}})}i(p.prototype);p.prototype.setupPeerEvents=function(e){var t=this;e.on(&quot;connect&quot;,function(e){t.emit(&quot;peer_ready&quot;,e)});e.on(&quot;data&quot;,function(e){if(this.destroyed)return;t.decoder.add(e)});e.on(&quot;stream&quot;,function(e){t.emit(&quot;stream&quot;,e)})};p.prototype.on=function(e,t){var r=this;this.socket.addEventListener(e,function(t){d.call(r,e,t)});this.addEventListener(e,t)};p.prototype.emit=function(e,t){var r=this;var n=t||{};var i=new o.Encoder;if(this._peerEvents.hasOwnProperty(e)||n.fromSocket){d.apply(this,arguments)}else if(this.usePeerConnection||!this.useSockets){var f=a(arguments);var c=o.EVENT;if(s(f)){c=o.BINARY_EVENT}var u={type:c,data:f};i.encode(u,function(e){if(e[1]instanceof ArrayBuffer){r._sendArray(e)}else if(e){for(var t=0;t&lt;e.length;t++){r._send(e[t])}}else{throw new Error(&quot;Encoding error&quot;)}})}else{this.socket.emit(e,t)}};p.prototype._sendArray=function(e){var t=e[0];var r=5e3;var n=e[1].byteLength;var i=Math.ceil(n/r);var o=t.substr(0,1)+i+t.substr(t.indexOf(&quot;-&quot;));this._send(o);this.binarySlice(e[1],r,this._send)};p.prototype._send=function(e){var t=this;for(var r in t._peers){var n=t._peers[r];if(n._channelReady){n.send(e)}}};p.prototype.binarySlice=function(e,t,r){for(var n=0;n&lt;e.byteLength;n+=t){var i=e.slice(n,n+t);r.call(this,i)}};p.prototype.ondecoded=function(e){var t=e.data||[];d.apply(this,t)};p.prototype.disconnect=function(){for(var e in this._peers){var t=this._peers[e];t.destroy();this.socket.disconnect()}};p.prototype.upgrade=function(){this.usePeerConnection=true};t.exports=p},{&quot;component-bind&quot;:23,&quot;component-emitter&quot;:24,debug:25,&quot;extend.js&quot;:28,&quot;has-binary&quot;:29,hat:31,&quot;simple-peer&quot;:33,&quot;socket.io-parser&quot;:40,&quot;to-array&quot;:46,webrtcsupport:47}]},{},[])(&quot;/&quot;)});</td>
</tr>
</table>
</div>

<details class="details-reset details-overlay BlobToolbar position-absolute js-file-line-actions dropdown d-none" aria-hidden="true">
<summary class="btn-octicon ml-0 px-2 p-0 color-bg-default border color-border-default rounded-1" aria-label="Inline file action toolbar">
<svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-kebab-horizontal">
<path d="M8 9a1.5 1.5 0 100-3 1.5 1.5 0 000 3zM1.5 9a1.5 1.5 0 100-3 1.5 1.5 0 000 3zm13 0a1.5 1.5 0 100-3 1.5 1.5 0 000 3z"></path>
</svg>
</summary>
<details-menu>

<ul class="BlobToolbar-dropdown dropdown-menu dropdown-menu-se ml-2 mt-2"
style="width:185px"
>
<li>
<clipboard-copy role="menuitem" class="dropdown-item" id="js-copy-lines" style="cursor:pointer;" aria-label="Copy lines">
Copy lines
</clipboard-copy>
</li>
<li>
<clipboard-copy role="menuitem" class="dropdown-item" id="js-copy-permalink" style="cursor:pointer;" aria-label="Copy permalink">
Copy permalink
</clipboard-copy>
</li>
<li><a class="dropdown-item js-update-url-with-hash" id="js-view-git-blame" role="menuitem" href="/socketio/socket.io-p2p/blame/858bc466adb26f8b155b6254e4dbfc524614cd36/socketiop2p.min.js">View git blame</a></li>
<li><a class="dropdown-item" id="js-new-issue" role="menuitem" href="/socketio/socket.io-p2p/issues/new">Reference in new issue</a></li>
</ul>
</details-menu>
</details>

</div>

</div>




<details class="details-reset details-overlay details-overlay-dark" id="jumpto-line-details-dialog">
<summary data-hotkey="l" aria-label="Jump to line"></summary>
<details-dialog class="Box Box--overlay d-flex flex-column anim-fade-in fast linejump" aria-label="Jump to line">
<!-- '"` --><!-- </textarea></xmp> --></option></form><form class="js-jump-to-line-form Box-body d-flex" action="" accept-charset="UTF-8" method="get">
<input class="form-control flex-auto mr-3 linejump-input js-jump-to-line-field" type="text" placeholder="Jump to line&hellip;" aria-label="Jump to line" autofocus>
<button data-close-dialog="" type="submit" data-view-component="true" class="btn">

Go


</button>
</form> </details-dialog>
</details>

<div class="Popover anim-scale-in js-tagsearch-popover"
hidden
data-tagsearch-url="/socketio/socket.io-p2p/find-definition"
data-tagsearch-ref="master">
<div class="Popover-message Popover-message--large Popover-message--top-left TagsearchPopover mt-1 mb-4 mx-auto Box color-shadow-large">
<div class="TagsearchPopover-content js-tagsearch-popover-content overflow-auto" style="will-change:transform;">
</div>
</div>
</div>


</div>



</div>
</div>

</main>
</div>

</div>


<div class="footer container-xl width-full p-responsive" role="contentinfo">
<div class="position-relative d-flex flex-row-reverse flex-lg-row flex-wrap flex-lg-nowrap flex-justify-center flex-lg-justify-between pt-6 pb-2 mt-6 f6 color-fg-muted border-top color-border-muted ">
<ul class="list-style-none d-flex flex-wrap col-12 col-lg-5 flex-justify-center flex-lg-justify-between mb-2 mb-lg-0">
<li class="mr-3 mr-lg-0">&copy; 2021 GitHub, Inc.</li>
<li class="mr-3 mr-lg-0"><a href="https://docs.github.com/en/github/site-policy/github-terms-of-service" data-hydro-click="{&quot;event_type&quot;:&quot;analytics.event&quot;,&quot;payload&quot;:{&quot;category&quot;:&quot;Footer&quot;,&quot;action&quot;:&quot;go to terms&quot;,&quot;label&quot;:&quot;text:terms&quot;,&quot;originating_url&quot;:&quot;https://github.com/socketio/socket.io-p2p/blob/master/socketiop2p.min.js&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="f19afdfb12025ab179e2bb7f2246f31e12036e82a621207b8aaf04f2ae5ac245" data-analytics-event="{&quot;category&quot;:&quot;Footer&quot;,&quot;action&quot;:&quot;go to terms&quot;,&quot;label&quot;:&quot;text:terms&quot;}">Terms</a></li>
<li class="mr-3 mr-lg-0"><a href="https://docs.github.com/en/github/site-policy/github-privacy-statement" data-hydro-click="{&quot;event_type&quot;:&quot;analytics.event&quot;,&quot;payload&quot;:{&quot;category&quot;:&quot;Footer&quot;,&quot;action&quot;:&quot;go to privacy&quot;,&quot;label&quot;:&quot;text:privacy&quot;,&quot;originating_url&quot;:&quot;https://github.com/socketio/socket.io-p2p/blob/master/socketiop2p.min.js&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="682cca76bf98294d0538f41da84f299d12c4fde44808eb7c9ebb47d285e5d74d" data-analytics-event="{&quot;category&quot;:&quot;Footer&quot;,&quot;action&quot;:&quot;go to privacy&quot;,&quot;label&quot;:&quot;text:privacy&quot;}">Privacy</a></li>
<li class="mr-3 mr-lg-0"><a data-hydro-click="{&quot;event_type&quot;:&quot;analytics.event&quot;,&quot;payload&quot;:{&quot;category&quot;:&quot;Footer&quot;,&quot;action&quot;:&quot;go to security&quot;,&quot;label&quot;:&quot;text:security&quot;,&quot;originating_url&quot;:&quot;https://github.com/socketio/socket.io-p2p/blob/master/socketiop2p.min.js&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="79e481a3d2cdf36d027804b93c6cf63fdaffa5e6567dbc456664a9a46be001af" data-analytics-event="{&quot;category&quot;:&quot;Footer&quot;,&quot;action&quot;:&quot;go to security&quot;,&quot;label&quot;:&quot;text:security&quot;}" href="https://github.com/security">Security</a></li>
<li class="mr-3 mr-lg-0"><a href="https://www.githubstatus.com/" data-hydro-click="{&quot;event_type&quot;:&quot;analytics.event&quot;,&quot;payload&quot;:{&quot;category&quot;:&quot;Footer&quot;,&quot;action&quot;:&quot;go to status&quot;,&quot;label&quot;:&quot;text:status&quot;,&quot;originating_url&quot;:&quot;https://github.com/socketio/socket.io-p2p/blob/master/socketiop2p.min.js&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="3a33442fda9c55c018d224a01019be6ca4fcda493ec8b6e2283bf50af7e69487" data-analytics-event="{&quot;category&quot;:&quot;Footer&quot;,&quot;action&quot;:&quot;go to status&quot;,&quot;label&quot;:&quot;text:status&quot;}">Status</a></li>
<li><a data-ga-click="Footer, go to help, text:Docs" href="https://docs.github.com">Docs</a></li>
</ul>

<a aria-label="Homepage" title="GitHub" class="footer-octicon d-none d-lg-block mx-lg-4" href="https://github.com">
<svg aria-hidden="true" height="24" viewBox="0 0 16 16" version="1.1" width="24" data-view-component="true" class="octicon octicon-mark-github">
<path fill-rule="evenodd" d="M8 0C3.58 0 0 3.58 0 8c0 3.54 2.29 6.53 5.47 7.59.4.07.55-.17.55-.38 0-.19-.01-.82-.01-1.49-2.01.37-2.53-.49-2.69-.94-.09-.23-.48-.94-.82-1.13-.28-.15-.68-.52-.01-.53.63-.01 1.08.58 1.23.82.72 1.21 1.87.87 2.33.66.07-.52.28-.87.51-1.07-1.78-.2-3.64-.89-3.64-3.95 0-.87.31-1.59.82-2.15-.08-.2-.36-1.02.08-2.12 0 0 .67-.21 2.2.82.64-.18 1.32-.27 2-.27.68 0 1.36.09 2 .27 1.53-1.04 2.2-.82 2.2-.82.44 1.1.16 1.92.08 2.12.51.56.82 1.27.82 2.15 0 3.07-1.87 3.75-3.65 3.95.29.25.54.73.54 1.48 0 1.07-.01 1.93-.01 2.2 0 .21.15.46.55.38A8.013 8.013 0 0016 8c0-4.42-3.58-8-8-8z"></path>
</svg>
</a>
<ul class="list-style-none d-flex flex-wrap col-12 col-lg-5 flex-justify-center flex-lg-justify-between mb-2 mb-lg-0">
<li class="mr-3 mr-lg-0"><a href="https://support.github.com?tags=dotcom-footer" data-hydro-click="{&quot;event_type&quot;:&quot;analytics.event&quot;,&quot;payload&quot;:{&quot;category&quot;:&quot;Footer&quot;,&quot;action&quot;:&quot;go to contact&quot;,&quot;label&quot;:&quot;text:contact&quot;,&quot;originating_url&quot;:&quot;https://github.com/socketio/socket.io-p2p/blob/master/socketiop2p.min.js&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="88c5c40db4cd328508ef813d2e54dcab0698f02204cda05a09ecf330be004a86" data-analytics-event="{&quot;category&quot;:&quot;Footer&quot;,&quot;action&quot;:&quot;go to contact&quot;,&quot;label&quot;:&quot;text:contact&quot;}">Contact GitHub</a></li>
<li class="mr-3 mr-lg-0"><a href="https://github.com/pricing" data-hydro-click="{&quot;event_type&quot;:&quot;analytics.event&quot;,&quot;payload&quot;:{&quot;category&quot;:&quot;Footer&quot;,&quot;action&quot;:&quot;go to Pricing&quot;,&quot;label&quot;:&quot;text:Pricing&quot;,&quot;originating_url&quot;:&quot;https://github.com/socketio/socket.io-p2p/blob/master/socketiop2p.min.js&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="3a5cff709a4fb477e0a847ace190642fe1c14ea8dffedd4bd3a357fdcf43426b" data-analytics-event="{&quot;category&quot;:&quot;Footer&quot;,&quot;action&quot;:&quot;go to Pricing&quot;,&quot;label&quot;:&quot;text:Pricing&quot;}">Pricing</a></li>
<li class="mr-3 mr-lg-0"><a href="https://docs.github.com" data-hydro-click="{&quot;event_type&quot;:&quot;analytics.event&quot;,&quot;payload&quot;:{&quot;category&quot;:&quot;Footer&quot;,&quot;action&quot;:&quot;go to api&quot;,&quot;label&quot;:&quot;text:api&quot;,&quot;originating_url&quot;:&quot;https://github.com/socketio/socket.io-p2p/blob/master/socketiop2p.min.js&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="9a62451bf2277d3cbe34704ac121a7cca5f1f8718d06c484b8d895c43e8153e8" data-analytics-event="{&quot;category&quot;:&quot;Footer&quot;,&quot;action&quot;:&quot;go to api&quot;,&quot;label&quot;:&quot;text:api&quot;}">API</a></li>
<li class="mr-3 mr-lg-0"><a href="https://services.github.com" data-hydro-click="{&quot;event_type&quot;:&quot;analytics.event&quot;,&quot;payload&quot;:{&quot;category&quot;:&quot;Footer&quot;,&quot;action&quot;:&quot;go to training&quot;,&quot;label&quot;:&quot;text:training&quot;,&quot;originating_url&quot;:&quot;https://github.com/socketio/socket.io-p2p/blob/master/socketiop2p.min.js&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="6d564a7ce49c13b037dbd4185e8ae88964e87f2327d7fd4e76dc60cdf287f758" data-analytics-event="{&quot;category&quot;:&quot;Footer&quot;,&quot;action&quot;:&quot;go to training&quot;,&quot;label&quot;:&quot;text:training&quot;}">Training</a></li>
<li class="mr-3 mr-lg-0"><a href="https://github.blog" data-hydro-click="{&quot;event_type&quot;:&quot;analytics.event&quot;,&quot;payload&quot;:{&quot;category&quot;:&quot;Footer&quot;,&quot;action&quot;:&quot;go to blog&quot;,&quot;label&quot;:&quot;text:blog&quot;,&quot;originating_url&quot;:&quot;https://github.com/socketio/socket.io-p2p/blob/master/socketiop2p.min.js&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="14755083ee8e92b7ce3eb815763965b7027a4682d6eabd5c164e321bdc447f05" data-analytics-event="{&quot;category&quot;:&quot;Footer&quot;,&quot;action&quot;:&quot;go to blog&quot;,&quot;label&quot;:&quot;text:blog&quot;}">Blog</a></li>
<li><a data-ga-click="Footer, go to about, text:about" href="https://github.com/about">About</a></li>
</ul>
</div>
<div class="d-flex flex-justify-center pb-6">
<span class="f6 color-fg-muted"></span>
</div>
</div>




<div id="ajax-error-message" class="ajax-error-message flash flash-error" hidden>
<svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-alert">
<path fill-rule="evenodd" d="M8.22 1.754a.25.25 0 00-.44 0L1.698 13.132a.25.25 0 00.22.368h12.164a.25.25 0 00.22-.368L8.22 1.754zm-1.763-.707c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0114.082 15H1.918a1.75 1.75 0 01-1.543-2.575L6.457 1.047zM9 11a1 1 0 11-2 0 1 1 0 012 0zm-.25-5.25a.75.75 0 00-1.5 0v2.5a.75.75 0 001.5 0v-2.5z"></path>
</svg>
<button type="button" class="flash-close js-ajax-error-dismiss" aria-label="Dismiss error">
<svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-x">
<path fill-rule="evenodd" d="M3.72 3.72a.75.75 0 011.06 0L8 6.94l3.22-3.22a.75.75 0 111.06 1.06L9.06 8l3.22 3.22a.75.75 0 11-1.06 1.06L8 9.06l-3.22 3.22a.75.75 0 01-1.06-1.06L6.94 8 3.72 4.78a.75.75 0 010-1.06z"></path>
</svg>
</button>
You can’t perform that action at this time.
</div>

<div class="js-stale-session-flash flash flash-warn flash-banner" hidden
>
<svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-alert">
<path fill-rule="evenodd" d="M8.22 1.754a.25.25 0 00-.44 0L1.698 13.132a.25.25 0 00.22.368h12.164a.25.25 0 00.22-.368L8.22 1.754zm-1.763-.707c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0114.082 15H1.918a1.75 1.75 0 01-1.543-2.575L6.457 1.047zM9 11a1 1 0 11-2 0 1 1 0 012 0zm-.25-5.25a.75.75 0 00-1.5 0v2.5a.75.75 0 001.5 0v-2.5z"></path>
</svg>
<span class="js-stale-session-flash-signed-in" hidden>You signed in with another tab or window. <a href="">Reload</a> to refresh your session.</span>
<span class="js-stale-session-flash-signed-out" hidden>You signed out in another tab or window. <a href="">Reload</a> to refresh your session.</span>
</div>
<template id="site-details-dialog">
<details class="details-reset details-overlay details-overlay-dark lh-default color-fg-default hx_rsm" open>
<summary role="button" aria-label="Close dialog"></summary>
<details-dialog class="Box Box--overlay d-flex flex-column anim-fade-in fast hx_rsm-dialog hx_rsm-modal">
<button class="Box-btn-octicon m-0 btn-octicon position-absolute right-0 top-0" type="button" aria-label="Close dialog" data-close-dialog>
<svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-x">
<path fill-rule="evenodd" d="M3.72 3.72a.75.75 0 011.06 0L8 6.94l3.22-3.22a.75.75 0 111.06 1.06L9.06 8l3.22 3.22a.75.75 0 11-1.06 1.06L8 9.06l-3.22 3.22a.75.75 0 01-1.06-1.06L6.94 8 3.72 4.78a.75.75 0 010-1.06z"></path>
</svg>
</button>
<div class="octocat-spinner my-6 js-details-dialog-spinner"></div>
</details-dialog>
</details>
</template>

<div class="Popover js-hovercard-content position-absolute" style="display: none; outline: none;" tabindex="0">
<div class="Popover-message Popover-message--bottom-left Popover-message--large Box color-shadow-large" style="width:360px;">
</div>
</div>

<template id="snippet-clipboard-copy-button">
<div class="zeroclipboard-container position-absolute right-0 top-0">
<clipboard-copy aria-label="Copy" class="ClipboardButton btn js-clipboard-copy m-2 p-0 tooltipped-no-delay" data-copy-feedback="Copied!" data-tooltip-direction="w">
<svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-copy js-clipboard-copy-icon m-2">
<path fill-rule="evenodd" d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 010 1.5h-1.5a.25.25 0 00-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 00.25-.25v-1.5a.75.75 0 011.5 0v1.5A1.75 1.75 0 019.25 16h-7.5A1.75 1.75 0 010 14.25v-7.5z"></path><path fill-rule="evenodd" d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0114.25 11h-7.5A1.75 1.75 0 015 9.25v-7.5zm1.75-.25a.25.25 0 00-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 00.25-.25v-7.5a.25.25 0 00-.25-.25h-7.5z"></path>
</svg>
<svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-check js-clipboard-check-icon color-fg-success d-none m-2">
<path fill-rule="evenodd" d="M13.78 4.22a.75.75 0 010 1.06l-7.25 7.25a.75.75 0 01-1.06 0L2.22 9.28a.75.75 0 011.06-1.06L6 10.94l6.72-6.72a.75.75 0 011.06 0z"></path>
</svg>
</clipboard-copy>
</div>
</template>




</body>
</html>

Back to list