Deprecated: Function get_magic_quotes_gpc() is deprecated in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 99

Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 619

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 832

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 839

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 839

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 839

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 839

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 839

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 839

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 839

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 839

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 839

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 839

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 839

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 839

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 839

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 839

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 839

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 839

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 839

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 839

Warning: Cannot modify header information - headers already sent by (output started at /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php:99) in /hermes/walnacweb04/walnacweb04ab/b2791/pow.jasaeld/htdocs/De1337/nothing/index.php on line 839
tag:gist.github.com,2008:/coryvirok Recent Gists from coryvirok 2025-01-18T03:52:02Z tag:gist.github.com,2008:Gist/coryvirok/40e610f12d0fdd23cc074d7e08e4be80 2025-01-18T03:52:02Z 2025-01-18T03:52:02Z Download embedded videos in your browser (even blob: sources) Cory Virok https://gist.github.com/coryvirok <a href="https://gist.github.com/coryvirok/40e610f12d0fdd23cc074d7e08e4be80#file-dev-console-script-js">dev-console-script.js</a> <div class="js-gist-file-update-container js-task-list-container"> <div id="file-dev-console-script-js" class="file my-2"> <div itemprop="text" class="Box-body p-0 blob-wrapper data type-javascript " style="overflow: auto" tabindex="0" role="region" aria-label="dev-console-script.js content, created by coryvirok on 03:52AM on January 18." > <div class="js-check-hidden-unicode js-blob-code-container 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 d="M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path> </svg> <span> This file contains hidden or 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 class="Link--inTextBlock" 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="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 d="M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path> </svg> </span></template> <table data-hpc class="highlight tab-size js-file-line-container" data-tab-size="4" data-paste-markdown-skip data-tagsearch-path="dev-console-script.js"> <tr> <td id="file-dev-console-script-js-L1" class="blob-num js-line-number js-blob-rnum" data-line-number="1"></td> <td id="file-dev-console-script-js-LC1" class="blob-code blob-code-inner js-file-line">function addDownloadButtonsToVideos() {</td> </tr> <tr> <td id="file-dev-console-script-js-L2" class="blob-num js-line-number js-blob-rnum" data-line-number="2"></td> <td id="file-dev-console-script-js-LC2" class="blob-code blob-code-inner js-file-line"> const addButton = (video) =&gt; {</td> </tr> <tr> <td id="file-dev-console-script-js-L3" class="blob-num js-line-number js-blob-rnum" data-line-number="3"></td> <td id="file-dev-console-script-js-LC3" class="blob-code blob-code-inner js-file-line"> // Check if a download button already exists for this video</td> </tr> <tr> <td id="file-dev-console-script-js-L4" class="blob-num js-line-number js-blob-rnum" data-line-number="4"></td> <td id="file-dev-console-script-js-LC4" class="blob-code blob-code-inner js-file-line"> if (video.parentElement.querySelector(&#39;.download-button&#39;)) return;</td> </tr> <tr> <td id="file-dev-console-script-js-L5" class="blob-num js-line-number js-blob-rnum" data-line-number="5"></td> <td id="file-dev-console-script-js-LC5" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-dev-console-script-js-L6" class="blob-num js-line-number js-blob-rnum" data-line-number="6"></td> <td id="file-dev-console-script-js-LC6" class="blob-code blob-code-inner js-file-line"> // Create the download button</td> </tr> <tr> <td id="file-dev-console-script-js-L7" class="blob-num js-line-number js-blob-rnum" data-line-number="7"></td> <td id="file-dev-console-script-js-LC7" class="blob-code blob-code-inner js-file-line"> const button = document.createElement(&#39;button&#39;);</td> </tr> <tr> <td id="file-dev-console-script-js-L8" class="blob-num js-line-number js-blob-rnum" data-line-number="8"></td> <td id="file-dev-console-script-js-LC8" class="blob-code blob-code-inner js-file-line"> button.textContent = &#39;Download&#39;;</td> </tr> <tr> <td id="file-dev-console-script-js-L9" class="blob-num js-line-number js-blob-rnum" data-line-number="9"></td> <td id="file-dev-console-script-js-LC9" class="blob-code blob-code-inner js-file-line"> button.className = &#39;download-button&#39;;</td> </tr> <tr> <td id="file-dev-console-script-js-L10" class="blob-num js-line-number js-blob-rnum" data-line-number="10"></td> <td id="file-dev-console-script-js-LC10" class="blob-code blob-code-inner js-file-line"> Object.assign(button.style, {</td> </tr> <tr> <td id="file-dev-console-script-js-L11" class="blob-num js-line-number js-blob-rnum" data-line-number="11"></td> <td id="file-dev-console-script-js-LC11" class="blob-code blob-code-inner js-file-line"> position: &#39;absolute&#39;,</td> </tr> <tr> <td id="file-dev-console-script-js-L12" class="blob-num js-line-number js-blob-rnum" data-line-number="12"></td> <td id="file-dev-console-script-js-LC12" class="blob-code blob-code-inner js-file-line"> top: &#39;10px&#39;,</td> </tr> <tr> <td id="file-dev-console-script-js-L13" class="blob-num js-line-number js-blob-rnum" data-line-number="13"></td> <td id="file-dev-console-script-js-LC13" class="blob-code blob-code-inner js-file-line"> right: &#39;10px&#39;,</td> </tr> <tr> <td id="file-dev-console-script-js-L14" class="blob-num js-line-number js-blob-rnum" data-line-number="14"></td> <td id="file-dev-console-script-js-LC14" class="blob-code blob-code-inner js-file-line"> zIndex: 10000,</td> </tr> <tr> <td id="file-dev-console-script-js-L15" class="blob-num js-line-number js-blob-rnum" data-line-number="15"></td> <td id="file-dev-console-script-js-LC15" class="blob-code blob-code-inner js-file-line"> backgroundColor: &#39;#007bff&#39;,</td> </tr> <tr> <td id="file-dev-console-script-js-L16" class="blob-num js-line-number js-blob-rnum" data-line-number="16"></td> <td id="file-dev-console-script-js-LC16" class="blob-code blob-code-inner js-file-line"> color: &#39;#fff&#39;,</td> </tr> <tr> <td id="file-dev-console-script-js-L17" class="blob-num js-line-number js-blob-rnum" data-line-number="17"></td> <td id="file-dev-console-script-js-LC17" class="blob-code blob-code-inner js-file-line"> border: &#39;none&#39;,</td> </tr> <tr> <td id="file-dev-console-script-js-L18" class="blob-num js-line-number js-blob-rnum" data-line-number="18"></td> <td id="file-dev-console-script-js-LC18" class="blob-code blob-code-inner js-file-line"> padding: &#39;5px 10px&#39;,</td> </tr> <tr> <td id="file-dev-console-script-js-L19" class="blob-num js-line-number js-blob-rnum" data-line-number="19"></td> <td id="file-dev-console-script-js-LC19" class="blob-code blob-code-inner js-file-line"> cursor: &#39;pointer&#39;,</td> </tr> <tr> <td id="file-dev-console-script-js-L20" class="blob-num js-line-number js-blob-rnum" data-line-number="20"></td> <td id="file-dev-console-script-js-LC20" class="blob-code blob-code-inner js-file-line"> borderRadius: &#39;5px&#39;,</td> </tr> <tr> <td id="file-dev-console-script-js-L21" class="blob-num js-line-number js-blob-rnum" data-line-number="21"></td> <td id="file-dev-console-script-js-LC21" class="blob-code blob-code-inner js-file-line"> });</td> </tr> <tr> <td id="file-dev-console-script-js-L22" class="blob-num js-line-number js-blob-rnum" data-line-number="22"></td> <td id="file-dev-console-script-js-LC22" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-dev-console-script-js-L23" class="blob-num js-line-number js-blob-rnum" data-line-number="23"></td> <td id="file-dev-console-script-js-LC23" class="blob-code blob-code-inner js-file-line"> // Set up the download functionality</td> </tr> <tr> <td id="file-dev-console-script-js-L24" class="blob-num js-line-number js-blob-rnum" data-line-number="24"></td> <td id="file-dev-console-script-js-LC24" class="blob-code blob-code-inner js-file-line"> button.addEventListener(&#39;click&#39;, async () =&gt; {</td> </tr> <tr> <td id="file-dev-console-script-js-L25" class="blob-num js-line-number js-blob-rnum" data-line-number="25"></td> <td id="file-dev-console-script-js-LC25" class="blob-code blob-code-inner js-file-line"> try {</td> </tr> <tr> <td id="file-dev-console-script-js-L26" class="blob-num js-line-number js-blob-rnum" data-line-number="26"></td> <td id="file-dev-console-script-js-LC26" class="blob-code blob-code-inner js-file-line"> const videoSrc = video.currentSrc || video.src;</td> </tr> <tr> <td id="file-dev-console-script-js-L27" class="blob-num js-line-number js-blob-rnum" data-line-number="27"></td> <td id="file-dev-console-script-js-LC27" class="blob-code blob-code-inner js-file-line"> if (videoSrc.startsWith(&#39;blob:&#39;)) {</td> </tr> <tr> <td id="file-dev-console-script-js-L28" class="blob-num js-line-number js-blob-rnum" data-line-number="28"></td> <td id="file-dev-console-script-js-LC28" class="blob-code blob-code-inner js-file-line"> // Extract data from the video element</td> </tr> <tr> <td id="file-dev-console-script-js-L29" class="blob-num js-line-number js-blob-rnum" data-line-number="29"></td> <td id="file-dev-console-script-js-LC29" class="blob-code blob-code-inner js-file-line"> const mimeType = video.getAttribute(&#39;type&#39;) || &#39;video/mp4&#39;;</td> </tr> <tr> <td id="file-dev-console-script-js-L30" class="blob-num js-line-number js-blob-rnum" data-line-number="30"></td> <td id="file-dev-console-script-js-LC30" class="blob-code blob-code-inner js-file-line"> const chunks = [];</td> </tr> <tr> <td id="file-dev-console-script-js-L31" class="blob-num js-line-number js-blob-rnum" data-line-number="31"></td> <td id="file-dev-console-script-js-LC31" class="blob-code blob-code-inner js-file-line"> const stream = video.captureStream();</td> </tr> <tr> <td id="file-dev-console-script-js-L32" class="blob-num js-line-number js-blob-rnum" data-line-number="32"></td> <td id="file-dev-console-script-js-LC32" class="blob-code blob-code-inner js-file-line"> const recorder = new MediaRecorder(stream, { mimeType });</td> </tr> <tr> <td id="file-dev-console-script-js-L33" class="blob-num js-line-number js-blob-rnum" data-line-number="33"></td> <td id="file-dev-console-script-js-LC33" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-dev-console-script-js-L34" class="blob-num js-line-number js-blob-rnum" data-line-number="34"></td> <td id="file-dev-console-script-js-LC34" class="blob-code blob-code-inner js-file-line"> recorder.ondataavailable = (e) =&gt; chunks.push(e.data);</td> </tr> <tr> <td id="file-dev-console-script-js-L35" class="blob-num js-line-number js-blob-rnum" data-line-number="35"></td> <td id="file-dev-console-script-js-LC35" class="blob-code blob-code-inner js-file-line"> recorder.onstop = () =&gt; {</td> </tr> <tr> <td id="file-dev-console-script-js-L36" class="blob-num js-line-number js-blob-rnum" data-line-number="36"></td> <td id="file-dev-console-script-js-LC36" class="blob-code blob-code-inner js-file-line"> const blob = new Blob(chunks, { type: mimeType });</td> </tr> <tr> <td id="file-dev-console-script-js-L37" class="blob-num js-line-number js-blob-rnum" data-line-number="37"></td> <td id="file-dev-console-script-js-LC37" class="blob-code blob-code-inner js-file-line"> const objectUrl = URL.createObjectURL(blob);</td> </tr> <tr> <td id="file-dev-console-script-js-L38" class="blob-num js-line-number js-blob-rnum" data-line-number="38"></td> <td id="file-dev-console-script-js-LC38" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-dev-console-script-js-L39" class="blob-num js-line-number js-blob-rnum" data-line-number="39"></td> <td id="file-dev-console-script-js-LC39" class="blob-code blob-code-inner js-file-line"> // Trigger download</td> </tr> <tr> <td id="file-dev-console-script-js-L40" class="blob-num js-line-number js-blob-rnum" data-line-number="40"></td> <td id="file-dev-console-script-js-LC40" class="blob-code blob-code-inner js-file-line"> const a = document.createElement(&#39;a&#39;);</td> </tr> <tr> <td id="file-dev-console-script-js-L41" class="blob-num js-line-number js-blob-rnum" data-line-number="41"></td> <td id="file-dev-console-script-js-LC41" class="blob-code blob-code-inner js-file-line"> a.href = objectUrl;</td> </tr> <tr> <td id="file-dev-console-script-js-L42" class="blob-num js-line-number js-blob-rnum" data-line-number="42"></td> <td id="file-dev-console-script-js-LC42" class="blob-code blob-code-inner js-file-line"> a.download = &#39;video.mp4&#39;;</td> </tr> <tr> <td id="file-dev-console-script-js-L43" class="blob-num js-line-number js-blob-rnum" data-line-number="43"></td> <td id="file-dev-console-script-js-LC43" class="blob-code blob-code-inner js-file-line"> a.click();</td> </tr> <tr> <td id="file-dev-console-script-js-L44" class="blob-num js-line-number js-blob-rnum" data-line-number="44"></td> <td id="file-dev-console-script-js-LC44" class="blob-code blob-code-inner js-file-line"> URL.revokeObjectURL(objectUrl); // Clean up the object URL</td> </tr> <tr> <td id="file-dev-console-script-js-L45" class="blob-num js-line-number js-blob-rnum" data-line-number="45"></td> <td id="file-dev-console-script-js-LC45" class="blob-code blob-code-inner js-file-line"> };</td> </tr> <tr> <td id="file-dev-console-script-js-L46" class="blob-num js-line-number js-blob-rnum" data-line-number="46"></td> <td id="file-dev-console-script-js-LC46" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-dev-console-script-js-L47" class="blob-num js-line-number js-blob-rnum" data-line-number="47"></td> <td id="file-dev-console-script-js-LC47" class="blob-code blob-code-inner js-file-line"> recorder.start();</td> </tr> <tr> <td id="file-dev-console-script-js-L48" class="blob-num js-line-number js-blob-rnum" data-line-number="48"></td> <td id="file-dev-console-script-js-LC48" class="blob-code blob-code-inner js-file-line"> setTimeout(() =&gt; recorder.stop(), video.duration * 1000); // Record until video ends</td> </tr> <tr> <td id="file-dev-console-script-js-L49" class="blob-num js-line-number js-blob-rnum" data-line-number="49"></td> <td id="file-dev-console-script-js-LC49" class="blob-code blob-code-inner js-file-line"> } else if (videoSrc) {</td> </tr> <tr> <td id="file-dev-console-script-js-L50" class="blob-num js-line-number js-blob-rnum" data-line-number="50"></td> <td id="file-dev-console-script-js-LC50" class="blob-code blob-code-inner js-file-line"> // Handle regular URLs</td> </tr> <tr> <td id="file-dev-console-script-js-L51" class="blob-num js-line-number js-blob-rnum" data-line-number="51"></td> <td id="file-dev-console-script-js-LC51" class="blob-code blob-code-inner js-file-line"> const a = document.createElement(&#39;a&#39;);</td> </tr> <tr> <td id="file-dev-console-script-js-L52" class="blob-num js-line-number js-blob-rnum" data-line-number="52"></td> <td id="file-dev-console-script-js-LC52" class="blob-code blob-code-inner js-file-line"> a.href = videoSrc;</td> </tr> <tr> <td id="file-dev-console-script-js-L53" class="blob-num js-line-number js-blob-rnum" data-line-number="53"></td> <td id="file-dev-console-script-js-LC53" class="blob-code blob-code-inner js-file-line"> a.download = &#39;video.mp4&#39;;</td> </tr> <tr> <td id="file-dev-console-script-js-L54" class="blob-num js-line-number js-blob-rnum" data-line-number="54"></td> <td id="file-dev-console-script-js-LC54" class="blob-code blob-code-inner js-file-line"> a.click();</td> </tr> <tr> <td id="file-dev-console-script-js-L55" class="blob-num js-line-number js-blob-rnum" data-line-number="55"></td> <td id="file-dev-console-script-js-LC55" class="blob-code blob-code-inner js-file-line"> } else {</td> </tr> <tr> <td id="file-dev-console-script-js-L56" class="blob-num js-line-number js-blob-rnum" data-line-number="56"></td> <td id="file-dev-console-script-js-LC56" class="blob-code blob-code-inner js-file-line"> alert(&#39;No video source found!&#39;);</td> </tr> <tr> <td id="file-dev-console-script-js-L57" class="blob-num js-line-number js-blob-rnum" data-line-number="57"></td> <td id="file-dev-console-script-js-LC57" class="blob-code blob-code-inner js-file-line"> }</td> </tr> <tr> <td id="file-dev-console-script-js-L58" class="blob-num js-line-number js-blob-rnum" data-line-number="58"></td> <td id="file-dev-console-script-js-LC58" class="blob-code blob-code-inner js-file-line"> } catch (err) {</td> </tr> <tr> <td id="file-dev-console-script-js-L59" class="blob-num js-line-number js-blob-rnum" data-line-number="59"></td> <td id="file-dev-console-script-js-LC59" class="blob-code blob-code-inner js-file-line"> console.error(&#39;Error downloading video:&#39;, err);</td> </tr> <tr> <td id="file-dev-console-script-js-L60" class="blob-num js-line-number js-blob-rnum" data-line-number="60"></td> <td id="file-dev-console-script-js-LC60" class="blob-code blob-code-inner js-file-line"> alert(&#39;Failed to download the video.&#39;);</td> </tr> <tr> <td id="file-dev-console-script-js-L61" class="blob-num js-line-number js-blob-rnum" data-line-number="61"></td> <td id="file-dev-console-script-js-LC61" class="blob-code blob-code-inner js-file-line"> }</td> </tr> <tr> <td id="file-dev-console-script-js-L62" class="blob-num js-line-number js-blob-rnum" data-line-number="62"></td> <td id="file-dev-console-script-js-LC62" class="blob-code blob-code-inner js-file-line"> });</td> </tr> <tr> <td id="file-dev-console-script-js-L63" class="blob-num js-line-number js-blob-rnum" data-line-number="63"></td> <td id="file-dev-console-script-js-LC63" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-dev-console-script-js-L64" class="blob-num js-line-number js-blob-rnum" data-line-number="64"></td> <td id="file-dev-console-script-js-LC64" class="blob-code blob-code-inner js-file-line"> // Add the button to the video&#39;s parent element</td> </tr> <tr> <td id="file-dev-console-script-js-L65" class="blob-num js-line-number js-blob-rnum" data-line-number="65"></td> <td id="file-dev-console-script-js-LC65" class="blob-code blob-code-inner js-file-line"> const parent = video.parentElement;</td> </tr> <tr> <td id="file-dev-console-script-js-L66" class="blob-num js-line-number js-blob-rnum" data-line-number="66"></td> <td id="file-dev-console-script-js-LC66" class="blob-code blob-code-inner js-file-line"> parent.style.position = &#39;relative&#39;;</td> </tr> <tr> <td id="file-dev-console-script-js-L67" class="blob-num js-line-number js-blob-rnum" data-line-number="67"></td> <td id="file-dev-console-script-js-LC67" class="blob-code blob-code-inner js-file-line"> parent.appendChild(button);</td> </tr> <tr> <td id="file-dev-console-script-js-L68" class="blob-num js-line-number js-blob-rnum" data-line-number="68"></td> <td id="file-dev-console-script-js-LC68" class="blob-code blob-code-inner js-file-line"> };</td> </tr> <tr> <td id="file-dev-console-script-js-L69" class="blob-num js-line-number js-blob-rnum" data-line-number="69"></td> <td id="file-dev-console-script-js-LC69" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-dev-console-script-js-L70" class="blob-num js-line-number js-blob-rnum" data-line-number="70"></td> <td id="file-dev-console-script-js-LC70" class="blob-code blob-code-inner js-file-line"> // Add buttons to existing videos</td> </tr> <tr> <td id="file-dev-console-script-js-L71" class="blob-num js-line-number js-blob-rnum" data-line-number="71"></td> <td id="file-dev-console-script-js-LC71" class="blob-code blob-code-inner js-file-line"> document.querySelectorAll(&#39;video&#39;).forEach(addButton);</td> </tr> <tr> <td id="file-dev-console-script-js-L72" class="blob-num js-line-number js-blob-rnum" data-line-number="72"></td> <td id="file-dev-console-script-js-LC72" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-dev-console-script-js-L73" class="blob-num js-line-number js-blob-rnum" data-line-number="73"></td> <td id="file-dev-console-script-js-LC73" class="blob-code blob-code-inner js-file-line"> // Observe the DOM for new video elements</td> </tr> <tr> <td id="file-dev-console-script-js-L74" class="blob-num js-line-number js-blob-rnum" data-line-number="74"></td> <td id="file-dev-console-script-js-LC74" class="blob-code blob-code-inner js-file-line"> const observer = new MutationObserver((mutationsList) =&gt; {</td> </tr> <tr> <td id="file-dev-console-script-js-L75" class="blob-num js-line-number js-blob-rnum" data-line-number="75"></td> <td id="file-dev-console-script-js-LC75" class="blob-code blob-code-inner js-file-line"> mutationsList.forEach((mutation) =&gt; {</td> </tr> <tr> <td id="file-dev-console-script-js-L76" class="blob-num js-line-number js-blob-rnum" data-line-number="76"></td> <td id="file-dev-console-script-js-LC76" class="blob-code blob-code-inner js-file-line"> mutation.addedNodes.forEach((node) =&gt; {</td> </tr> <tr> <td id="file-dev-console-script-js-L77" class="blob-num js-line-number js-blob-rnum" data-line-number="77"></td> <td id="file-dev-console-script-js-LC77" class="blob-code blob-code-inner js-file-line"> if (node.tagName === &#39;VIDEO&#39;) {</td> </tr> <tr> <td id="file-dev-console-script-js-L78" class="blob-num js-line-number js-blob-rnum" data-line-number="78"></td> <td id="file-dev-console-script-js-LC78" class="blob-code blob-code-inner js-file-line"> addButton(node);</td> </tr> <tr> <td id="file-dev-console-script-js-L79" class="blob-num js-line-number js-blob-rnum" data-line-number="79"></td> <td id="file-dev-console-script-js-LC79" class="blob-code blob-code-inner js-file-line"> } else if (node.querySelectorAll) {</td> </tr> <tr> <td id="file-dev-console-script-js-L80" class="blob-num js-line-number js-blob-rnum" data-line-number="80"></td> <td id="file-dev-console-script-js-LC80" class="blob-code blob-code-inner js-file-line"> node.querySelectorAll(&#39;video&#39;).forEach(addButton);</td> </tr> <tr> <td id="file-dev-console-script-js-L81" class="blob-num js-line-number js-blob-rnum" data-line-number="81"></td> <td id="file-dev-console-script-js-LC81" class="blob-code blob-code-inner js-file-line"> }</td> </tr> <tr> <td id="file-dev-console-script-js-L82" class="blob-num js-line-number js-blob-rnum" data-line-number="82"></td> <td id="file-dev-console-script-js-LC82" class="blob-code blob-code-inner js-file-line"> });</td> </tr> <tr> <td id="file-dev-console-script-js-L83" class="blob-num js-line-number js-blob-rnum" data-line-number="83"></td> <td id="file-dev-console-script-js-LC83" class="blob-code blob-code-inner js-file-line"> });</td> </tr> <tr> <td id="file-dev-console-script-js-L84" class="blob-num js-line-number js-blob-rnum" data-line-number="84"></td> <td id="file-dev-console-script-js-LC84" class="blob-code blob-code-inner js-file-line"> });</td> </tr> <tr> <td id="file-dev-console-script-js-L85" class="blob-num js-line-number js-blob-rnum" data-line-number="85"></td> <td id="file-dev-console-script-js-LC85" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-dev-console-script-js-L86" class="blob-num js-line-number js-blob-rnum" data-line-number="86"></td> <td id="file-dev-console-script-js-LC86" class="blob-code blob-code-inner js-file-line"> observer.observe(document.body, { childList: true, subtree: true });</td> </tr> <tr> <td id="file-dev-console-script-js-L87" class="blob-num js-line-number js-blob-rnum" data-line-number="87"></td> <td id="file-dev-console-script-js-LC87" class="blob-code blob-code-inner js-file-line">}</td> </tr> <tr> <td id="file-dev-console-script-js-L88" class="blob-num js-line-number js-blob-rnum" data-line-number="88"></td> <td id="file-dev-console-script-js-LC88" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-dev-console-script-js-L89" class="blob-num js-line-number js-blob-rnum" data-line-number="89"></td> <td id="file-dev-console-script-js-LC89" class="blob-code blob-code-inner js-file-line">// Call the function</td> </tr> <tr> <td id="file-dev-console-script-js-L90" class="blob-num js-line-number js-blob-rnum" data-line-number="90"></td> <td id="file-dev-console-script-js-LC90" class="blob-code blob-code-inner js-file-line">addDownloadButtonsToVideos();</td> </tr> </table> </div> </div> </div> </div> tag:gist.github.com,2008:Gist/coryvirok/797c3ed27550e92fec42512014791597 2024-11-27T06:20:38Z 2024-11-27T06:20:38Z Download local blob data url video Cory Virok https://gist.github.com/coryvirok <a href="https://gist.github.com/coryvirok/797c3ed27550e92fec42512014791597#file-gistfile1-txt">gistfile1.txt</a> <div class="js-gist-file-update-container js-task-list-container"> <div id="file-gistfile1-txt" class="file my-2"> <div itemprop="text" class="Box-body p-0 blob-wrapper data type-text " style="overflow: auto" tabindex="0" role="region" aria-label="gistfile1.txt content, created by coryvirok on 06:20AM on November 27, 2024." > <div class="js-check-hidden-unicode js-blob-code-container 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 d="M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path> </svg> <span> This file contains hidden or 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 class="Link--inTextBlock" 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="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 d="M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path> </svg> </span></template> <table data-hpc class="highlight tab-size js-file-line-container" data-tab-size="4" data-paste-markdown-skip data-tagsearch-path="gistfile1.txt"> <tr> <td id="file-gistfile1-txt-L1" class="blob-num js-line-number js-blob-rnum" data-line-number="1"></td> <td id="file-gistfile1-txt-LC1" class="blob-code blob-code-inner js-file-line">async function downloadProtectedVideo(videoElement, filename = &#39;video.mp4&#39;) {</td> </tr> <tr> <td id="file-gistfile1-txt-L2" class="blob-num js-line-number js-blob-rnum" data-line-number="2"></td> <td id="file-gistfile1-txt-LC2" class="blob-code blob-code-inner js-file-line"> try {</td> </tr> <tr> <td id="file-gistfile1-txt-L3" class="blob-num js-line-number js-blob-rnum" data-line-number="3"></td> <td id="file-gistfile1-txt-LC3" class="blob-code blob-code-inner js-file-line"> // Create a MediaRecorder to capture the video stream</td> </tr> <tr> <td id="file-gistfile1-txt-L4" class="blob-num js-line-number js-blob-rnum" data-line-number="4"></td> <td id="file-gistfile1-txt-LC4" class="blob-code blob-code-inner js-file-line"> const stream = videoElement.captureStream();</td> </tr> <tr> <td id="file-gistfile1-txt-L5" class="blob-num js-line-number js-blob-rnum" data-line-number="5"></td> <td id="file-gistfile1-txt-LC5" class="blob-code blob-code-inner js-file-line"> const mediaRecorder = new MediaRecorder(stream, {</td> </tr> <tr> <td id="file-gistfile1-txt-L6" class="blob-num js-line-number js-blob-rnum" data-line-number="6"></td> <td id="file-gistfile1-txt-LC6" class="blob-code blob-code-inner js-file-line"> mimeType: &#39;video/webm;codecs=vp9&#39;</td> </tr> <tr> <td id="file-gistfile1-txt-L7" class="blob-num js-line-number js-blob-rnum" data-line-number="7"></td> <td id="file-gistfile1-txt-LC7" class="blob-code blob-code-inner js-file-line"> });</td> </tr> <tr> <td id="file-gistfile1-txt-L8" class="blob-num js-line-number js-blob-rnum" data-line-number="8"></td> <td id="file-gistfile1-txt-LC8" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-gistfile1-txt-L9" class="blob-num js-line-number js-blob-rnum" data-line-number="9"></td> <td id="file-gistfile1-txt-LC9" class="blob-code blob-code-inner js-file-line"> const chunks = [];</td> </tr> <tr> <td id="file-gistfile1-txt-L10" class="blob-num js-line-number js-blob-rnum" data-line-number="10"></td> <td id="file-gistfile1-txt-LC10" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-gistfile1-txt-L11" class="blob-num js-line-number js-blob-rnum" data-line-number="11"></td> <td id="file-gistfile1-txt-LC11" class="blob-code blob-code-inner js-file-line"> mediaRecorder.ondataavailable = (e) =&gt; {</td> </tr> <tr> <td id="file-gistfile1-txt-L12" class="blob-num js-line-number js-blob-rnum" data-line-number="12"></td> <td id="file-gistfile1-txt-LC12" class="blob-code blob-code-inner js-file-line"> if (e.data.size &gt; 0) {</td> </tr> <tr> <td id="file-gistfile1-txt-L13" class="blob-num js-line-number js-blob-rnum" data-line-number="13"></td> <td id="file-gistfile1-txt-LC13" class="blob-code blob-code-inner js-file-line"> chunks.push(e.data);</td> </tr> <tr> <td id="file-gistfile1-txt-L14" class="blob-num js-line-number js-blob-rnum" data-line-number="14"></td> <td id="file-gistfile1-txt-LC14" class="blob-code blob-code-inner js-file-line"> }</td> </tr> <tr> <td id="file-gistfile1-txt-L15" class="blob-num js-line-number js-blob-rnum" data-line-number="15"></td> <td id="file-gistfile1-txt-LC15" class="blob-code blob-code-inner js-file-line"> };</td> </tr> <tr> <td id="file-gistfile1-txt-L16" class="blob-num js-line-number js-blob-rnum" data-line-number="16"></td> <td id="file-gistfile1-txt-LC16" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-gistfile1-txt-L17" class="blob-num js-line-number js-blob-rnum" data-line-number="17"></td> <td id="file-gistfile1-txt-LC17" class="blob-code blob-code-inner js-file-line"> mediaRecorder.onstop = () =&gt; {</td> </tr> <tr> <td id="file-gistfile1-txt-L18" class="blob-num js-line-number js-blob-rnum" data-line-number="18"></td> <td id="file-gistfile1-txt-LC18" class="blob-code blob-code-inner js-file-line"> const blob = new Blob(chunks, { type: &#39;video/webm&#39; });</td> </tr> <tr> <td id="file-gistfile1-txt-L19" class="blob-num js-line-number js-blob-rnum" data-line-number="19"></td> <td id="file-gistfile1-txt-LC19" class="blob-code blob-code-inner js-file-line"> const url = window.URL.createObjectURL(blob);</td> </tr> <tr> <td id="file-gistfile1-txt-L20" class="blob-num js-line-number js-blob-rnum" data-line-number="20"></td> <td id="file-gistfile1-txt-LC20" class="blob-code blob-code-inner js-file-line"> const a = document.createElement(&#39;a&#39;);</td> </tr> <tr> <td id="file-gistfile1-txt-L21" class="blob-num js-line-number js-blob-rnum" data-line-number="21"></td> <td id="file-gistfile1-txt-LC21" class="blob-code blob-code-inner js-file-line"> a.style.display = &#39;none&#39;;</td> </tr> <tr> <td id="file-gistfile1-txt-L22" class="blob-num js-line-number js-blob-rnum" data-line-number="22"></td> <td id="file-gistfile1-txt-LC22" class="blob-code blob-code-inner js-file-line"> a.href = url;</td> </tr> <tr> <td id="file-gistfile1-txt-L23" class="blob-num js-line-number js-blob-rnum" data-line-number="23"></td> <td id="file-gistfile1-txt-LC23" class="blob-code blob-code-inner js-file-line"> a.download = filename || &#39;recorded_video.mp4&#39;;</td> </tr> <tr> <td id="file-gistfile1-txt-L24" class="blob-num js-line-number js-blob-rnum" data-line-number="24"></td> <td id="file-gistfile1-txt-LC24" class="blob-code blob-code-inner js-file-line"> document.body.appendChild(a);</td> </tr> <tr> <td id="file-gistfile1-txt-L25" class="blob-num js-line-number js-blob-rnum" data-line-number="25"></td> <td id="file-gistfile1-txt-LC25" class="blob-code blob-code-inner js-file-line"> a.click();</td> </tr> <tr> <td id="file-gistfile1-txt-L26" class="blob-num js-line-number js-blob-rnum" data-line-number="26"></td> <td id="file-gistfile1-txt-LC26" class="blob-code blob-code-inner js-file-line"> window.URL.revokeObjectURL(url);</td> </tr> <tr> <td id="file-gistfile1-txt-L27" class="blob-num js-line-number js-blob-rnum" data-line-number="27"></td> <td id="file-gistfile1-txt-LC27" class="blob-code blob-code-inner js-file-line"> document.body.removeChild(a);</td> </tr> <tr> <td id="file-gistfile1-txt-L28" class="blob-num js-line-number js-blob-rnum" data-line-number="28"></td> <td id="file-gistfile1-txt-LC28" class="blob-code blob-code-inner js-file-line"> };</td> </tr> <tr> <td id="file-gistfile1-txt-L29" class="blob-num js-line-number js-blob-rnum" data-line-number="29"></td> <td id="file-gistfile1-txt-LC29" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-gistfile1-txt-L30" class="blob-num js-line-number js-blob-rnum" data-line-number="30"></td> <td id="file-gistfile1-txt-LC30" class="blob-code blob-code-inner js-file-line"> // Start recording</td> </tr> <tr> <td id="file-gistfile1-txt-L31" class="blob-num js-line-number js-blob-rnum" data-line-number="31"></td> <td id="file-gistfile1-txt-LC31" class="blob-code blob-code-inner js-file-line"> videoElement.currentTime = 0; // Reset to beginning</td> </tr> <tr> <td id="file-gistfile1-txt-L32" class="blob-num js-line-number js-blob-rnum" data-line-number="32"></td> <td id="file-gistfile1-txt-LC32" class="blob-code blob-code-inner js-file-line"> await videoElement.play();</td> </tr> <tr> <td id="file-gistfile1-txt-L33" class="blob-num js-line-number js-blob-rnum" data-line-number="33"></td> <td id="file-gistfile1-txt-LC33" class="blob-code blob-code-inner js-file-line"> mediaRecorder.start();</td> </tr> <tr> <td id="file-gistfile1-txt-L34" class="blob-num js-line-number js-blob-rnum" data-line-number="34"></td> <td id="file-gistfile1-txt-LC34" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-gistfile1-txt-L35" class="blob-num js-line-number js-blob-rnum" data-line-number="35"></td> <td id="file-gistfile1-txt-LC35" class="blob-code blob-code-inner js-file-line"> // Stop recording when video ends</td> </tr> <tr> <td id="file-gistfile1-txt-L36" class="blob-num js-line-number js-blob-rnum" data-line-number="36"></td> <td id="file-gistfile1-txt-LC36" class="blob-code blob-code-inner js-file-line"> videoElement.addEventListener(&#39;ended&#39;, () =&gt; {</td> </tr> <tr> <td id="file-gistfile1-txt-L37" class="blob-num js-line-number js-blob-rnum" data-line-number="37"></td> <td id="file-gistfile1-txt-LC37" class="blob-code blob-code-inner js-file-line"> mediaRecorder.stop();</td> </tr> <tr> <td id="file-gistfile1-txt-L38" class="blob-num js-line-number js-blob-rnum" data-line-number="38"></td> <td id="file-gistfile1-txt-LC38" class="blob-code blob-code-inner js-file-line"> });</td> </tr> <tr> <td id="file-gistfile1-txt-L39" class="blob-num js-line-number js-blob-rnum" data-line-number="39"></td> <td id="file-gistfile1-txt-LC39" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-gistfile1-txt-L40" class="blob-num js-line-number js-blob-rnum" data-line-number="40"></td> <td id="file-gistfile1-txt-LC40" class="blob-code blob-code-inner js-file-line"> // Or you can manually stop it after a specific duration:</td> </tr> <tr> <td id="file-gistfile1-txt-L41" class="blob-num js-line-number js-blob-rnum" data-line-number="41"></td> <td id="file-gistfile1-txt-LC41" class="blob-code blob-code-inner js-file-line"> // setTimeout(() =&gt; mediaRecorder.stop(), durationInMilliseconds);</td> </tr> <tr> <td id="file-gistfile1-txt-L42" class="blob-num js-line-number js-blob-rnum" data-line-number="42"></td> <td id="file-gistfile1-txt-LC42" class="blob-code blob-code-inner js-file-line"> } catch (error) {</td> </tr> <tr> <td id="file-gistfile1-txt-L43" class="blob-num js-line-number js-blob-rnum" data-line-number="43"></td> <td id="file-gistfile1-txt-LC43" class="blob-code blob-code-inner js-file-line"> console.error(&#39;Failed to download video:&#39;, error);</td> </tr> <tr> <td id="file-gistfile1-txt-L44" class="blob-num js-line-number js-blob-rnum" data-line-number="44"></td> <td id="file-gistfile1-txt-LC44" class="blob-code blob-code-inner js-file-line"> }</td> </tr> <tr> <td id="file-gistfile1-txt-L45" class="blob-num js-line-number js-blob-rnum" data-line-number="45"></td> <td id="file-gistfile1-txt-LC45" class="blob-code blob-code-inner js-file-line">}</td> </tr> <tr> <td id="file-gistfile1-txt-L46" class="blob-num js-line-number js-blob-rnum" data-line-number="46"></td> <td id="file-gistfile1-txt-LC46" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-gistfile1-txt-L47" class="blob-num js-line-number js-blob-rnum" data-line-number="47"></td> <td id="file-gistfile1-txt-LC47" class="blob-code blob-code-inner js-file-line">const video = document.querySelector(&#39;video&#39;)</td> </tr> <tr> <td id="file-gistfile1-txt-L48" class="blob-num js-line-number js-blob-rnum" data-line-number="48"></td> <td id="file-gistfile1-txt-LC48" class="blob-code blob-code-inner js-file-line">await downloadProtectedVideo(video)</td> </tr> </table> </div> </div> </div> </div> tag:gist.github.com,2008:Gist/coryvirok/2910ec224e898f6c1a0ac0a5d5a7b37f 2020-08-11T17:25:12Z 2020-08-11T17:25:13Z privacy-policy.diff Cory Virok https://gist.github.com/coryvirok <a href="https://gist.github.com/coryvirok/2910ec224e898f6c1a0ac0a5d5a7b37f#file-privacy-policy-diff">privacy-policy.diff</a> <div class="js-gist-file-update-container js-task-list-container"> <div id="file-privacy-policy-diff" class="file my-2"> <div itemprop="text" class="Box-body p-0 blob-wrapper data type-diff " style="overflow: auto" tabindex="0" role="region" aria-label="privacy-policy.diff content, created by coryvirok on 05:25PM on August 11, 2020." > <div class="js-check-hidden-unicode js-blob-code-container 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 d="M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path> </svg> <span> This file contains hidden or 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 class="Link--inTextBlock" 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="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 d="M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path> </svg> </span></template> <table data-hpc class="highlight tab-size js-file-line-container" data-tab-size="4" data-paste-markdown-skip data-tagsearch-path="privacy-policy.diff"> <tr> <td id="file-privacy-policy-diff-L1" class="blob-num js-line-number js-blob-rnum" data-line-number="1"></td> <td id="file-privacy-policy-diff-LC1" class="blob-code blob-code-inner js-file-line">1c1</td> </tr> <tr> <td id="file-privacy-policy-diff-L2" class="blob-num js-line-number js-blob-rnum" data-line-number="2"></td> <td id="file-privacy-policy-diff-LC2" class="blob-code blob-code-inner js-file-line">&lt; _Effective: May 20, 2020_</td> </tr> <tr> <td id="file-privacy-policy-diff-L3" class="blob-num js-line-number js-blob-rnum" data-line-number="3"></td> <td id="file-privacy-policy-diff-LC3" class="blob-code blob-code-inner js-file-line">---</td> </tr> <tr> <td id="file-privacy-policy-diff-L4" class="blob-num js-line-number js-blob-rnum" data-line-number="4"></td> <td id="file-privacy-policy-diff-LC4" class="blob-code blob-code-inner js-file-line">&gt; _Effective: August 11, 2020_</td> </tr> <tr> <td id="file-privacy-policy-diff-L5" class="blob-num js-line-number js-blob-rnum" data-line-number="5"></td> <td id="file-privacy-policy-diff-LC5" class="blob-code blob-code-inner js-file-line">53c53</td> </tr> <tr> <td id="file-privacy-policy-diff-L6" class="blob-num js-line-number js-blob-rnum" data-line-number="6"></td> <td id="file-privacy-policy-diff-LC6" class="blob-code blob-code-inner js-file-line">&lt; * *Others Working with Rollbar.* We may share information about you within the United States and abroad, with third party vendors who need to know information about you in order to provide their services to us, or to provide their services to you. This group includes vendors that help us provide our Services to you, such as payment providers that process your credit and debit card information, fraud prevention services that allow us to analyze fraudulent payment transactions, postal and email delivery services that help us stay in touch with you, customer chat and email support services that help us communicate with you, those that assist us with our marketing efforts (e.g. by providing tools for identifying a specific marketing target group or improving our marketing campaigns), those that help us understand and enhance our Services (like analytics providers), and those that help us deliver our Services (like hosting and content delivery providers). We may share your private personal information with such service providers subject to confidentiality obligations consistent with this Privacy Policy, and on the condition that the third parties use your private personal data only on our behalf and pursuant to our instructions. Rollbar requires that its service providers either subscribe to the Privacy Shield Principles, are subject to the EU Privacy Directive and the Swiss Federal Act on Data Protection or another adequacy finding, or enter into a written agreement with us that requires them to provide at least the same level of privacy protection as is required by the relevant Privacy Shield Principles.</td> </tr> <tr> <td id="file-privacy-policy-diff-L7" class="blob-num js-line-number js-blob-rnum" data-line-number="7"></td> <td id="file-privacy-policy-diff-LC7" class="blob-code blob-code-inner js-file-line">---</td> </tr> <tr> <td id="file-privacy-policy-diff-L8" class="blob-num js-line-number js-blob-rnum" data-line-number="8"></td> <td id="file-privacy-policy-diff-LC8" class="blob-code blob-code-inner js-file-line">&gt; * *Others Working with Rollbar.* We may share information about you within the United States and abroad, with third party vendors who need to know information about you in order to provide their services to us, or to provide their services to you. This group includes vendors that help us provide our Services to you, such as payment providers that process your credit and debit card information, fraud prevention services that allow us to analyze fraudulent payment transactions, postal and email delivery services that help us stay in touch with you, customer chat and email support services that help us communicate with you, those that assist us with our marketing efforts (e.g. by providing tools for identifying a specific marketing target group or improving our marketing campaigns), those that help us understand and enhance our Services (like analytics providers), and those that help us deliver our Services (like hosting and content delivery providers). We may share your private personal information with such service providers subject to confidentiality obligations consistent with this Privacy Policy, and on the condition that the third parties use your private personal data only on our behalf and pursuant to our instructions. Rollbar ensures that such recipients of your private personal data will offer an adequate level of protection, for instance by entering into an agreement with standard contractual clauses for the transfer of data as approved by the European Commission or, to the extent valid and available, by requiring that the recipients subscribe to the Privacy Shield Principles.</td> </tr> <tr> <td id="file-privacy-policy-diff-L9" class="blob-num js-line-number js-blob-rnum" data-line-number="9"></td> <td id="file-privacy-policy-diff-LC9" class="blob-code blob-code-inner js-file-line">80,82c80,82</td> </tr> <tr> <td id="file-privacy-policy-diff-L10" class="blob-num js-line-number js-blob-rnum" data-line-number="10"></td> <td id="file-privacy-policy-diff-LC10" class="blob-code blob-code-inner js-file-line">&lt; Because the Services are offered worldwide, the information about you that we process when you use the Services in the EU may be used, stored, and/or accessed by individuals operating outside the European Economic Area (EEA) who work for us, other members of our group of companies, or third party data processors. This is required for the purposes listed in the What We Collect and Why section above. When providing information about you to entities outside the EEA, we will take appropriate measures to ensure that the recipient protects your personal information adequately in accordance with this Privacy Policy as required by applicable law. These measures include:</td> </tr> <tr> <td id="file-privacy-policy-diff-L11" class="blob-num js-line-number js-blob-rnum" data-line-number="11"></td> <td id="file-privacy-policy-diff-LC11" class="blob-code blob-code-inner js-file-line">&lt; * In the case of US based entities, entering into European Commission approved standard contractual arrangements with them, or ensuring they have signed up to the [EU-US Privacy Shield or Swiss-US Privacy Shield](https://www.privacyshield.gov/welcome), as applicable; or</td> </tr> <tr> <td id="file-privacy-policy-diff-L12" class="blob-num js-line-number js-blob-rnum" data-line-number="12"></td> <td id="file-privacy-policy-diff-LC12" class="blob-code blob-code-inner js-file-line">&lt; * In the case of entities based in other countries outside the EEA, entering into European Commission approved standard contractual arrangements with them. Rollbar complies with the EU-U.S. and Swiss–U.S. Privacy Shield Frameworks as set forth by the U.S. Department of Commerce regarding the collection, use, and retention of personal information transferred from the European Union, the United Kingdom, the European Economic Area, and Switzerland to the United States. You can find Rollbar’s Privacy Shield certification [here](https://www.privacyshield.gov/participant?id=a2zt0000000TNcNAAW&amp;status=Active). You can also learn more about Privacy Shield at [https://www.privacyshield.gov](https://www.privacyshield.gov).</td> </tr> <tr> <td id="file-privacy-policy-diff-L13" class="blob-num js-line-number js-blob-rnum" data-line-number="13"></td> <td id="file-privacy-policy-diff-LC13" class="blob-code blob-code-inner js-file-line">---</td> </tr> <tr> <td id="file-privacy-policy-diff-L14" class="blob-num js-line-number js-blob-rnum" data-line-number="14"></td> <td id="file-privacy-policy-diff-LC14" class="blob-code blob-code-inner js-file-line">&gt; Because the Services are offered worldwide, the information about you that we process when you use the Services in the EU may be used, stored, and/or accessed by individuals operating outside the European Economic Area (EEA) who work for us, other members of our group of companies, or third party data processors. This is required for the purposes listed in the What We Collect and Why section above. When providing information about you to entities outside the EEA, we will take appropriate measures to ensure that the recipient protects your personal information adequately in accordance with this Privacy Policy as required by applicable law. These measures include, for instance, entering into European Commission approved standard contractual arrangements with them or, to the extent valid and available, ensuring they have signed up to the EU-US Privacy Shield or Swiss-US Privacy Shield.</td> </tr> <tr> <td id="file-privacy-policy-diff-L15" class="blob-num js-line-number js-blob-rnum" data-line-number="15"></td> <td id="file-privacy-policy-diff-LC15" class="blob-code blob-code-inner js-file-line">&gt; </td> </tr> <tr> <td id="file-privacy-policy-diff-L16" class="blob-num js-line-number js-blob-rnum" data-line-number="16"></td> <td id="file-privacy-policy-diff-LC16" class="blob-code blob-code-inner js-file-line">&gt; Rollbar complies with the EU-U.S. and Swiss–U.S. Privacy Shield Frameworks, to the extent applicable, as set forth by the U.S. Department of Commerce regarding the collection, use, and retention of personal information transferred from the European Union, the United Kingdom, the European Economic Area, and Switzerland to the United States. You can find Rollbar’s Privacy Shield certification [here](https://www.privacyshield.gov/participant?id=a2zt0000000TNcNAAW&amp;status=Active). You can also learn more about Privacy Shield at [https://www.privacyshield.gov](https://www.privacyshield.gov).</td> </tr> </table> </div> </div> </div> </div> tag:gist.github.com,2008:Gist/coryvirok/ec84c7a3bdc896db6f5ff53e542741e1 2020-06-29T18:26:04Z 2020-06-29T18:26:05Z diff of Rollbar ToS for 7/1/20 Cory Virok https://gist.github.com/coryvirok <a href="https://gist.github.com/coryvirok/ec84c7a3bdc896db6f5ff53e542741e1#file-tos-diff">TOS.diff</a> <div class="js-gist-file-update-container js-task-list-container"> <div id="file-tos-diff" class="file my-2"> <div itemprop="text" class="Box-body p-0 blob-wrapper data type-diff " style="overflow: auto" tabindex="0" role="region" aria-label="TOS.diff content, created by coryvirok on 06:26PM on June 29, 2020." > <div class="js-check-hidden-unicode js-blob-code-container 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 d="M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path> </svg> <span> This file contains hidden or 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 class="Link--inTextBlock" 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="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 d="M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path> </svg> </span></template> <table data-hpc class="highlight tab-size js-file-line-container" data-tab-size="4" data-paste-markdown-skip data-tagsearch-path="TOS.diff"> <tr> <td id="file-tos-diff-L1" class="blob-num js-line-number js-blob-rnum" data-line-number="1"></td> <td id="file-tos-diff-LC1" class="blob-code blob-code-inner js-file-line">1c1</td> </tr> <tr> <td id="file-tos-diff-L2" class="blob-num js-line-number js-blob-rnum" data-line-number="2"></td> <td id="file-tos-diff-LC2" class="blob-code blob-code-inner js-file-line">&lt; _Effective: Dec 27, 2019_</td> </tr> <tr> <td id="file-tos-diff-L3" class="blob-num js-line-number js-blob-rnum" data-line-number="3"></td> <td id="file-tos-diff-LC3" class="blob-code blob-code-inner js-file-line">---</td> </tr> <tr> <td id="file-tos-diff-L4" class="blob-num js-line-number js-blob-rnum" data-line-number="4"></td> <td id="file-tos-diff-LC4" class="blob-code blob-code-inner js-file-line">&gt; *Effective: July 1, 2020*</td> </tr> <tr> <td id="file-tos-diff-L5" class="blob-num js-line-number js-blob-rnum" data-line-number="5"></td> <td id="file-tos-diff-LC5" class="blob-code blob-code-inner js-file-line">3c3</td> </tr> <tr> <td id="file-tos-diff-L6" class="blob-num js-line-number js-blob-rnum" data-line-number="6"></td> <td id="file-tos-diff-LC6" class="blob-code blob-code-inner js-file-line">&lt; Welcome to Rollbar.com, the website and online service of Rollbar, Inc. (“Rollbar,” “we,” or “us”). This page explains the terms by which you may use our online and/or mobile services, web sites, APIs, SDKs, email notifications, and Software (as defined in 1(c) below) provided on or in connection with the service (collectively, the “Services”). Your access to and use of the Services are conditioned on your acceptance of and compliance with this Terms of of Service Agreement (the “Agreement”). By accessing or using the Services you signify that you have read, understood, and agree to be bound by this Agreement and to the collection and use of your information as set forth in the Rollbar [Privacy Policy](doc:privacy-policy), whether or not you are a registered user of our Services. Rollbar reserves the right to make unilateral modifications to this Agreement and will provide notice of these changes as described below. This Agreement applies to all visitors, users, and others who access the Services (“Users”).</td> </tr> <tr> <td id="file-tos-diff-L7" class="blob-num js-line-number js-blob-rnum" data-line-number="7"></td> <td id="file-tos-diff-LC7" class="blob-code blob-code-inner js-file-line">---</td> </tr> <tr> <td id="file-tos-diff-L8" class="blob-num js-line-number js-blob-rnum" data-line-number="8"></td> <td id="file-tos-diff-LC8" class="blob-code blob-code-inner js-file-line">&gt; # **Rollbar Terms of Service**</td> </tr> <tr> <td id="file-tos-diff-L9" class="blob-num js-line-number js-blob-rnum" data-line-number="9"></td> <td id="file-tos-diff-LC9" class="blob-code blob-code-inner js-file-line">5c5</td> </tr> <tr> <td id="file-tos-diff-L10" class="blob-num js-line-number js-blob-rnum" data-line-number="10"></td> <td id="file-tos-diff-LC10" class="blob-code blob-code-inner js-file-line">&lt; PLEASE READ THIS AGREEMENT CAREFULLY TO ENSURE THAT YOU UNDERSTAND EACH PROVISION. THIS AGREEMENT CONTAINS A MANDATORY INDIVIDUAL ARBITRATION AND CLASS ACTION/JURY TRIAL WAIVER PROVISION THAT REQUIRES THE USE OF ARBITRATION ON AN INDIVIDUAL BASIS TO RESOLVE DISPUTES, RATHER THAN JURY TRIALS OR CLASS ACTIONS AND TO THE EXTENT THAT ROLLBAR PROCESSES ANY PERSONAL DATA THAT IS SUBJECT TO THE GENERAL DATA PROTECTION REGULATION (THE “GDPR”) AS A PART OF THE CUSTOMER CONTENT, ON CUSTOMER’S BEHALF, IN THE PROVISION OF THE SERVICES HEREUNDER, THE TERMS OF THE DATA ADDENDUM (ACCESSIBLE FROM WITHIN YOUR ACCOUNT SETTINGS ON THE SERVICE]) (THE “DATA ADDENDUM”), WHICH ARE HEREBY INCORPORATED BY REFERENCE, SHALL APPLY.</td> </tr> <tr> <td id="file-tos-diff-L11" class="blob-num js-line-number js-blob-rnum" data-line-number="11"></td> <td id="file-tos-diff-LC11" class="blob-code blob-code-inner js-file-line">---</td> </tr> <tr> <td id="file-tos-diff-L12" class="blob-num js-line-number js-blob-rnum" data-line-number="12"></td> <td id="file-tos-diff-LC12" class="blob-code blob-code-inner js-file-line">&gt; Welcome to Rollbar.com, the website and online service of Rollbar, Inc. (“Rollbar,” “we,” or “us”). This page explains the terms by which you may use our online and/or mobile services, web sites, APIs, SDKs, email notifications, and Software (as defined in 1(c) below) provided on or in connection with the services (collectively, the “Services”). Your access to and use of the Services are conditioned on your acceptance of and compliance with this Terms of Service Agreement (this “Agreement”). By accessing or using the Services you signify that you have read, understood, and agree to be bound by this Agreement and to the collection and use of your information as set forth in the Rollbar [_Privacy Policy_](https://rollbar.com/privacy/), whether or not you are a registered user of our Services. Rollbar reserves the right to make unilateral modifications to this Agreement and will provide notice of these changes as described below, and you will be deemed to have accepted such modifications by continuing to use the Services. This Agreement applies to all visitors, users, and others who access the Services (“Users”).</td> </tr> <tr> <td id="file-tos-diff-L13" class="blob-num js-line-number js-blob-rnum" data-line-number="13"></td> <td id="file-tos-diff-LC13" class="blob-code blob-code-inner js-file-line">7c7</td> </tr> <tr> <td id="file-tos-diff-L14" class="blob-num js-line-number js-blob-rnum" data-line-number="14"></td> <td id="file-tos-diff-LC14" class="blob-code blob-code-inner js-file-line">&lt; # 1. USE OF OUR SERVICE</td> </tr> <tr> <td id="file-tos-diff-L15" class="blob-num js-line-number js-blob-rnum" data-line-number="15"></td> <td id="file-tos-diff-LC15" class="blob-code blob-code-inner js-file-line">---</td> </tr> <tr> <td id="file-tos-diff-L16" class="blob-num js-line-number js-blob-rnum" data-line-number="16"></td> <td id="file-tos-diff-LC16" class="blob-code blob-code-inner js-file-line">&gt; PLEASE READ THIS AGREEMENT CAREFULLY TO ENSURE THAT YOU UNDERSTAND EACH PROVISION. THIS AGREEMENT CONTAINS A MANDATORY INDIVIDUAL ARBITRATION AND CLASS ACTION/JURY TRIAL WAIVER PROVISION THAT REQUIRES THE USE OF ARBITRATION ON AN INDIVIDUAL BASIS TO RESOLVE DISPUTES, RATHER THAN JURY TRIALS OR CLASS ACTIONS. TO THE EXTENT ROLLBAR PROCESSES ANY PERSONAL DATA THAT IS SUBJECT TO THE GENERAL DATA PROTECTION REGULATION (THE “GDPR”) AS A PART OF THE USER CONTENT, ON CUSTOMER’S BEHALF, IN THE PROVISION OF THE SERVICES HEREUNDER, THE TERMS OF THE DATA ADDENDUM (ACCESSIBLE FROM WITHIN YOUR ACCOUNT SETTINGS ON THE SERVICE) (THE “DATA ADDENDUM”), WHICH ARE HEREBY INCORPORATED BY REFERENCE, SHALL APPLY.</td> </tr> <tr> <td id="file-tos-diff-L17" class="blob-num js-line-number js-blob-rnum" data-line-number="17"></td> <td id="file-tos-diff-LC17" class="blob-code blob-code-inner js-file-line">9c9</td> </tr> <tr> <td id="file-tos-diff-L18" class="blob-num js-line-number js-blob-rnum" data-line-number="18"></td> <td id="file-tos-diff-LC18" class="blob-code blob-code-inner js-file-line">&lt; Rollbar provides an error monitoring, alerting, and analytics platform for developers.</td> </tr> <tr> <td id="file-tos-diff-L19" class="blob-num js-line-number js-blob-rnum" data-line-number="19"></td> <td id="file-tos-diff-LC19" class="blob-code blob-code-inner js-file-line">---</td> </tr> <tr> <td id="file-tos-diff-L20" class="blob-num js-line-number js-blob-rnum" data-line-number="20"></td> <td id="file-tos-diff-LC20" class="blob-code blob-code-inner js-file-line">&gt; 1. **USE OF OUR SERVICE**</td> </tr> <tr> <td id="file-tos-diff-L21" class="blob-num js-line-number js-blob-rnum" data-line-number="21"></td> <td id="file-tos-diff-LC21" class="blob-code blob-code-inner js-file-line">11,12c11</td> </tr> <tr> <td id="file-tos-diff-L22" class="blob-num js-line-number js-blob-rnum" data-line-number="22"></td> <td id="file-tos-diff-LC22" class="blob-code blob-code-inner js-file-line">&lt; ## a. Eligibility</td> </tr> <tr> <td id="file-tos-diff-L23" class="blob-num js-line-number js-blob-rnum" data-line-number="23"></td> <td id="file-tos-diff-LC23" class="blob-code blob-code-inner js-file-line">&lt; This is a contract between you and Rollbar. You must read and agree to this Agreement before using the Services. If you do not agree, you may not use the Services. You may use the Services only if you can form a binding contract with Rollbar, are not a person barred from receiving services under the laws of the United States or other applicable jurisdiction, and only in compliance with this Agreement and all applicable local, state, national, and international laws, rules and regulations (including without limitation all applicable laws regarding online conduct and acceptable content, the transmission of technical data exported from the United States or the country in which you reside, privacy, and data protection). In order to register for an account, we may, at our discretion, require that you sign up through a third-party service provider, such as Google or GitHub. Any use or access to the Services by anyone under 18 is strictly prohibited and in violation of this Agreement. The Services are not available to any Users previously removed from the Services by Rollbar.</td> </tr> <tr> <td id="file-tos-diff-L24" class="blob-num js-line-number js-blob-rnum" data-line-number="24"></td> <td id="file-tos-diff-LC24" class="blob-code blob-code-inner js-file-line">---</td> </tr> <tr> <td id="file-tos-diff-L25" class="blob-num js-line-number js-blob-rnum" data-line-number="25"></td> <td id="file-tos-diff-LC25" class="blob-code blob-code-inner js-file-line">&gt; Rollbar provides an error monitoring, alerting, and analytics platform for developers.</td> </tr> <tr> <td id="file-tos-diff-L26" class="blob-num js-line-number js-blob-rnum" data-line-number="26"></td> <td id="file-tos-diff-LC26" class="blob-code blob-code-inner js-file-line">14,15c13</td> </tr> <tr> <td id="file-tos-diff-L27" class="blob-num js-line-number js-blob-rnum" data-line-number="27"></td> <td id="file-tos-diff-LC27" class="blob-code blob-code-inner js-file-line">&lt; ## b. Rollbar Services</td> </tr> <tr> <td id="file-tos-diff-L28" class="blob-num js-line-number js-blob-rnum" data-line-number="28"></td> <td id="file-tos-diff-LC28" class="blob-code blob-code-inner js-file-line">&lt; Subject to your compliance with the terms and conditions of this Agreement, we grant you a limited, non-exclusive, non-assignable, non-transferable license to internally use and access the Services solely as necessary to develop, maintain and support your products in accordance with the documentation or specifications included in the Services. Rollbar reserves all rights not expressly granted herein in the Services. </td> </tr> <tr> <td id="file-tos-diff-L29" class="blob-num js-line-number js-blob-rnum" data-line-number="29"></td> <td id="file-tos-diff-LC29" class="blob-code blob-code-inner js-file-line">---</td> </tr> <tr> <td id="file-tos-diff-L30" class="blob-num js-line-number js-blob-rnum" data-line-number="30"></td> <td id="file-tos-diff-LC30" class="blob-code blob-code-inner js-file-line">&gt; 1. __Eligibility__. This is a contract between you and Rollbar. You must read and agree to this Agreement before using the Services. If you do not agree, you may not use the Services. You may use the Services only if you can form a binding contract with Rollbar, are not a person barred from receiving services under the laws of the United States or other applicable jurisdiction, and only in compliance with this Agreement and all applicable local, state, national, and international laws, rules and regulations (including without limitation all applicable laws regarding online conduct and acceptable content, the transmission of technical data exported from the United States or the country in which you reside, privacy, and data protection). In order to register for an account, we may, at our discretion, require that you sign up through a third-party service provider, such as Google or GitHub. Any use or access to the Services by anyone under 18 is strictly prohibited and in violation of this Agreement. The Services are not available to any Users previously removed from the Services by Rollbar.</td> </tr> <tr> <td id="file-tos-diff-L31" class="blob-num js-line-number js-blob-rnum" data-line-number="31"></td> <td id="file-tos-diff-LC31" class="blob-code blob-code-inner js-file-line">17,18c15</td> </tr> <tr> <td id="file-tos-diff-L32" class="blob-num js-line-number js-blob-rnum" data-line-number="32"></td> <td id="file-tos-diff-LC32" class="blob-code blob-code-inner js-file-line">&lt; ## c. Rollbar Software</td> </tr> <tr> <td id="file-tos-diff-L33" class="blob-num js-line-number js-blob-rnum" data-line-number="33"></td> <td id="file-tos-diff-LC33" class="blob-code blob-code-inner js-file-line">&lt; Use of any software and associated documentation that is made available via the Services (“Software”) is governed by the terms of the license agreement that accompanies or is included with the Software, or by the license agreement expressly stated on the website page(s) accompanying the Software. These license terms may be posted with the Software downloads or at the website page where the Software can be accessed. You shall not use, download or install any Software that is accompanied by or includes a license agreement unless you agree to the terms of such license agreement. At no time will Rollbar provide you with any tangible copy of our Software. Rollbar shall deliver access to the Software via electronic transfer or download and shall not use or deliver any tangible media in connection with the (a) delivery, installation, updating or problem resolution of any Software (including any new releases); or (b) delivery, correction or updating of documentation. For the purposes of this section tangible media shall include, but not be limited to, any tape disk, compact disk, card, flash drive, or any other comparable physical medium. Unless the accompanying license agreement expressly allows otherwise, any copying or redistribution of the Software is prohibited, including any copying or redistribution of the Software to any other server or location, or redistribution or use on a service bureau basis. If there is any conflict between this Agreement and the license agreement, the license agreement shall take precedence in relation to that Software (except as provided in the following sentence). If the Software is a pre-release version, then, notwithstanding anything to the contrary included within an accompanying license agreement, you are not permitted to use or otherwise rely on the Software for any commercial or production purposes. If no license agreement accompanies use of the Software, use of the Software will be governed by this Agreement. Subject to your compliance with this Agreement, Rollbar grants you a non-assignable, non-transferable, non-sublicensable, revocable non-exclusive license to use the Software for the sole purpose of enabling you to use the Services in the manner permitted by this Agreement. Some Software may be offered under an open source license that we will make available to you. There may be provisions in the open source license that expressly override some of these terms.</td> </tr> <tr> <td id="file-tos-diff-L34" class="blob-num js-line-number js-blob-rnum" data-line-number="34"></td> <td id="file-tos-diff-LC34" class="blob-code blob-code-inner js-file-line">---</td> </tr> <tr> <td id="file-tos-diff-L35" class="blob-num js-line-number js-blob-rnum" data-line-number="35"></td> <td id="file-tos-diff-LC35" class="blob-code blob-code-inner js-file-line">&gt; 1. __Rollbar Services__. Subject to your compliance with the terms and conditions of this Agreement, we grant you a limited, non-exclusive, non-assignable, non-transferable license to internally use and access the Services solely as necessary to develop, maintain and support your products in accordance with the documentation or specifications included in the Services. Rollbar reserves all rights not expressly granted herein in the Services.</td> </tr> <tr> <td id="file-tos-diff-L36" class="blob-num js-line-number js-blob-rnum" data-line-number="36"></td> <td id="file-tos-diff-LC36" class="blob-code blob-code-inner js-file-line">20,21c17</td> </tr> <tr> <td id="file-tos-diff-L37" class="blob-num js-line-number js-blob-rnum" data-line-number="37"></td> <td id="file-tos-diff-LC37" class="blob-code blob-code-inner js-file-line">&lt; ## d. Rollbar Accounts</td> </tr> <tr> <td id="file-tos-diff-L38" class="blob-num js-line-number js-blob-rnum" data-line-number="38"></td> <td id="file-tos-diff-LC38" class="blob-code blob-code-inner js-file-line">&lt; In order to use certain features of the Services, you must register for an account with Rollbar. Your Rollbar account gives you access to the services and functionality that we may establish and maintain from time to time in our sole discretion. We may maintain different types of accounts for different types of Users, and these different accounts may have different functionalities available to them. For example, we offer 1) a free version account (“Free Account”), and 2) several types of paid accounts (each a “Paid Account”). Users with Free Accounts shall be able to use the Services on a limited basis, as the amount of Events that may be performed under a Free Account are limited to the number of Events set forth on our pricing page. As used in this Agreement, “Event” means a single exception, message, error, or crash report sent to the Rollbar API. Certain account types may allow you to authorize additional accounts for other Users and associate those authorized Users under your account. Users may identify a username and password for the User’s account on the Services.The Services may also be accessed using single sign-on method. </td> </tr> <tr> <td id="file-tos-diff-L39" class="blob-num js-line-number js-blob-rnum" data-line-number="39"></td> <td id="file-tos-diff-LC39" class="blob-code blob-code-inner js-file-line">---</td> </tr> <tr> <td id="file-tos-diff-L40" class="blob-num js-line-number js-blob-rnum" data-line-number="40"></td> <td id="file-tos-diff-LC40" class="blob-code blob-code-inner js-file-line">&gt; 1. __Rollbar Software__. Use of any software and associated documentation that is made available via the Services (“Software”) is governed by the terms of the license agreement that accompanies or is included or made available with the Software. These license terms may be posted with the Software downloads or at the website page where the Software can be accessed. You shall not use, download or install any Software that is accompanied by or includes a license agreement unless you agree to the terms of such license agreement. At no time will Rollbar provide you with any tangible copy of our Software. Rollbar shall deliver access to the Software via electronic transfer or download and shall not use or deliver any tangible media in connection with the (a) delivery, installation, updating or problem resolution of any Software (including any new releases); or (b) delivery, correction or updating of documentation. For the purposes of this section tangible media shall include, but not be limited to, any tape disk, compact disk, card, flash drive, or any other comparable physical medium. Unless the accompanying license agreement expressly allows otherwise, any copying or redistribution of the Software is prohibited, including any copying or redistribution of the Software to any other server or location, or redistribution or use on a service bureau basis. If there is any conflict between this Agreement and the license agreement, the license agreement shall take precedence in relation to that Software (except as provided in the following sentence). If the Software is a pre-release version, then, notwithstanding anything to the contrary included within an accompanying license agreement, you are not permitted to use or otherwise rely on the Software for any commercial or production purposes. If no license agreement accompanies use of the Software, use of the Software will be governed by this Agreement. Subject to your compliance with this Agreement, Rollbar grants you a non-assignable, non-transferable, non-sublicensable, revocable, non-exclusive license to use the Software for the sole purpose of enabling you to use the Services in the manner permitted by this Agreement. Some Software may be offered under an open source license that we will make available to you. There may be provisions in the open source license that expressly override some of these terms.</td> </tr> <tr> <td id="file-tos-diff-L41" class="blob-num js-line-number js-blob-rnum" data-line-number="41"></td> <td id="file-tos-diff-LC41" class="blob-code blob-code-inner js-file-line">23c19</td> </tr> <tr> <td id="file-tos-diff-L42" class="blob-num js-line-number js-blob-rnum" data-line-number="42"></td> <td id="file-tos-diff-LC42" class="blob-code blob-code-inner js-file-line">&lt; If you open an account on behalf of an entity, then (a) “you” includes both you and the entity you represent, as applicable; and (b) you represent and warrant that you are legally authorized to bind the entity to this Agreement. By connecting to Rollbar with a third-party service, you give us permission to access and use your information from that service as permitted by that service, and to store your credentials for that service. </td> </tr> <tr> <td id="file-tos-diff-L43" class="blob-num js-line-number js-blob-rnum" data-line-number="43"></td> <td id="file-tos-diff-LC43" class="blob-code blob-code-inner js-file-line">---</td> </tr> <tr> <td id="file-tos-diff-L44" class="blob-num js-line-number js-blob-rnum" data-line-number="44"></td> <td id="file-tos-diff-LC44" class="blob-code blob-code-inner js-file-line">&gt; 1. __Service Rules__. You agree not to engage in any of the following prohibited activities: (i) reverse engineering or decompiling the Services or any component thereof, or otherwise attempt to discover the source code, object code or underlying structure, ideas, know-how or algorithms relevant to the Services, or attempt to create a substitute or similar service through use of or access to the Services, unless this is expressly permitted or required by applicable law; (ii) copying, renting, leasing, selling, transferring, assigning, sublicensing, or altering any part of the Services; (iii) using Rollbar’s name to endorse or promote any product or service, including a product or service that utilizes the Services; (iv) using the Services for any illegal, unauthorized, or otherwise improper purposes, or in any manner which would violate this Agreement, or in connection with any products, services, or activities that compete with Rollbar; (v) removing any legal, copyright, trademark, or other proprietary rights notices contained in or on the Services; (vi) using the Services in a manner that, as determined by Rollbar, in our sole discretion, exceeds reasonable request volume, constitutes excessive or abusive usage, or otherwise fails to comply or is inconsistent with any part of the Services documentation; (vii) circumventing any security control or access mechanism of the Services; or (viii) implying inaccurate creation, affiliation, sponsorship, or endorsement of you, or the entity you represent.</td> </tr> <tr> <td id="file-tos-diff-L45" class="blob-num js-line-number js-blob-rnum" data-line-number="45"></td> <td id="file-tos-diff-LC45" class="blob-code blob-code-inner js-file-line">25c21</td> </tr> <tr> <td id="file-tos-diff-L46" class="blob-num js-line-number js-blob-rnum" data-line-number="46"></td> <td id="file-tos-diff-LC46" class="blob-code blob-code-inner js-file-line">&lt; You may never use another User’s account without permission. When creating your account, you must provide accurate and complete information, and you must keep this information up to date. You are solely responsible for the activity that occurs on your account or any account you authorize for a User on the Services, and you and the Users you authorize must each keep your account passwords secure. You must notify Rollbar immediately of any breach of security or unauthorized use of your account. Rollbar will not be liable for any losses caused by any unauthorized use of your account.</td> </tr> <tr> <td id="file-tos-diff-L47" class="blob-num js-line-number js-blob-rnum" data-line-number="47"></td> <td id="file-tos-diff-LC47" class="blob-code blob-code-inner js-file-line">---</td> </tr> <tr> <td id="file-tos-diff-L48" class="blob-num js-line-number js-blob-rnum" data-line-number="48"></td> <td id="file-tos-diff-LC48" class="blob-code blob-code-inner js-file-line">&gt; The features of the Services that Rollbar provides are always evolving and the form and nature of the Services that Rollbar provides may change from time to time without prior notice to you. In addition, Rollbar may stop (permanently or temporarily) providing the Services (or any features within the Services) to you or to Users generally and may not be able to provide you with prior notice. We also retain the right to create limits on use and storage at our sole discretion at any time without prior notice to you.</td> </tr> <tr> <td id="file-tos-diff-L49" class="blob-num js-line-number js-blob-rnum" data-line-number="49"></td> <td id="file-tos-diff-LC49" class="blob-code blob-code-inner js-file-line">27c23</td> </tr> <tr> <td id="file-tos-diff-L50" class="blob-num js-line-number js-blob-rnum" data-line-number="50"></td> <td id="file-tos-diff-LC50" class="blob-code blob-code-inner js-file-line">&lt; You may control your User profile and how you interact with the Services by changing the settings in your settings page. By providing Rollbar your email address you consent to our using the email address to send you Service-related notices, including any notices required by law, in lieu of communication by postal mail. We may also use your email address to send you other messages, such as changes to features of the Services and special offers. If you do not want to receive such email messages, you may opt out or change your preferences in your user settings page within your account on the Services. Opting out may prevent you from receiving email messages regarding updates, improvements, or offers.</td> </tr> <tr> <td id="file-tos-diff-L51" class="blob-num js-line-number js-blob-rnum" data-line-number="51"></td> <td id="file-tos-diff-LC51" class="blob-code blob-code-inner js-file-line">---</td> </tr> <tr> <td id="file-tos-diff-L52" class="blob-num js-line-number js-blob-rnum" data-line-number="52"></td> <td id="file-tos-diff-LC52" class="blob-code blob-code-inner js-file-line">&gt; 1. __Usage Limits__. We may limit: (i) the number of network calls that your products may make to the Services; (ii) the maximum file size; and (iii) anything else about any single exception, message, error, or crash report sent to the Rollbar API (each, an “Event”), as we deem appropriate, in our sole discretion. If you exceed a contractual usage limit, additional quantities of the Services may be added during a subscription term in accordance with the per-Event fee specified in your subscribed-for subscription level or we may upgrade your subscription level to the next plan level, in each case as more fully set forth at [_https://rollbar.com/docs/billing/_](https://rollbar.com/docs/billing/). You agree to pay any invoice for excess usage in accordance with the excess usage schedule made available at [_https://rollbar.com/docs/billing/_](https://rollbar.com/docs/billing/). Any added quantities will terminate on the same date as the underlying subscriptions.</td> </tr> <tr> <td id="file-tos-diff-L53" class="blob-num js-line-number js-blob-rnum" data-line-number="53"></td> <td id="file-tos-diff-LC53" class="blob-code blob-code-inner js-file-line">29,30c25</td> </tr> <tr> <td id="file-tos-diff-L54" class="blob-num js-line-number js-blob-rnum" data-line-number="54"></td> <td id="file-tos-diff-LC54" class="blob-code blob-code-inner js-file-line">&lt; ## e. Service Rules</td> </tr> <tr> <td id="file-tos-diff-L55" class="blob-num js-line-number js-blob-rnum" data-line-number="55"></td> <td id="file-tos-diff-LC55" class="blob-code blob-code-inner js-file-line">&lt; You agree not to engage in any of the following prohibited activities: (i) reverse engineering or decompiling the Services or any component thereof, or attempt to create a substitute or similar service through use of or access to the Services, unless this is expressly permitted or required by applicable law; (ii) copying, renting, leasing, selling, transferring, assigning, sublicensing, or altering any part of the Services; (iii) using Rollbar’s name to endorse or promote any product or service, including a product or service that utilizes the Services; (iv) using the Services for any illegal, unauthorized, or otherwise improper purposes, or in any manner which would violate this Agreement; (v) removing any legal, copyright, trademark, or other proprietary rights notices contained in or on the Services; (vi) using the Services in a manner that, as determined by Rollbar, in our sole discretion, exceeds reasonable request volume, constitutes excessive or abusive usage, or otherwise fails to comply or is inconsistent with any part of the Services documentation; or (vii) implying inaccurate creation, affiliation, sponsorship, or endorsement of you, or the entity you represent.</td> </tr> <tr> <td id="file-tos-diff-L56" class="blob-num js-line-number js-blob-rnum" data-line-number="56"></td> <td id="file-tos-diff-LC56" class="blob-code blob-code-inner js-file-line">---</td> </tr> <tr> <td id="file-tos-diff-L57" class="blob-num js-line-number js-blob-rnum" data-line-number="57"></td> <td id="file-tos-diff-LC57" class="blob-code blob-code-inner js-file-line">&gt; We may impose or modify these limitations without notice. We may utilize technical measures to prevent over-usage and stop usage of the Services by a Product after any usage limitations are exceeded or suspend your access to the Services with or without notice to you in the event you exceed any such limitations.</td> </tr> <tr> <td id="file-tos-diff-L58" class="blob-num js-line-number js-blob-rnum" data-line-number="58"></td> <td id="file-tos-diff-LC58" class="blob-code blob-code-inner js-file-line">32c27</td> </tr> <tr> <td id="file-tos-diff-L59" class="blob-num js-line-number js-blob-rnum" data-line-number="59"></td> <td id="file-tos-diff-LC59" class="blob-code blob-code-inner js-file-line">&lt; The features of the Services that Rollbar provides are always evolving and the form and nature of the Services that Rollbar provides may change from time to time without prior notice to you. In addition, Rollbar may stop (permanently or temporarily) providing the Services (or any features within the Services) to you or to Users generally and may not be able to provide you with prior notice. We also retain the right to create limits on use and storage at our sole discretion at any time without prior notice to you.</td> </tr> <tr> <td id="file-tos-diff-L60" class="blob-num js-line-number js-blob-rnum" data-line-number="60"></td> <td id="file-tos-diff-LC60" class="blob-code blob-code-inner js-file-line">---</td> </tr> <tr> <td id="file-tos-diff-L61" class="blob-num js-line-number js-blob-rnum" data-line-number="61"></td> <td id="file-tos-diff-LC61" class="blob-code blob-code-inner js-file-line">&gt; 1. __General Representations and Warranties__. You represent and warrant that (i) your use of our Services will be in strict accordance with the Rollbar [_Privacy Policy_](https://rollbar.com/privacy/), available at [_https://rollbar.com/privacy/_](https://rollbar.com/privacy/), with this Agreement, and with all applicable laws and regulations (including without limitation any local laws or regulations in your country, state, city, or other governmental area, regarding online conduct and acceptable content, and including all applicable laws regarding the transmission of technical data exported from the United States (or the country in which you reside) and (ii) your use of our Services will not infringe or misappropriate the intellectual property rights of any third party.</td> </tr> <tr> <td id="file-tos-diff-L62" class="blob-num js-line-number js-blob-rnum" data-line-number="62"></td> <td id="file-tos-diff-LC62" class="blob-code blob-code-inner js-file-line">34,35c29</td> </tr> <tr> <td id="file-tos-diff-L63" class="blob-num js-line-number js-blob-rnum" data-line-number="63"></td> <td id="file-tos-diff-LC63" class="blob-code blob-code-inner js-file-line">&lt; ## f. Usage Limits</td> </tr> <tr> <td id="file-tos-diff-L64" class="blob-num js-line-number js-blob-rnum" data-line-number="64"></td> <td id="file-tos-diff-LC64" class="blob-code blob-code-inner js-file-line">&lt; Regardless of whether you have a Free Account or Premium Account, we may limit: (i) the number of network calls that your products may make to the Services; (ii) the maximum file size; and (iii) anything else about the Event as we deem appropriate, in our sole discretion. If you exceed a contractual usage limit, additional quantities of the Services may be added during a subscription term in accordance with the per-Event fee specified in your subscribed-for subscription level or we may upgrade your subscription level to the next plan level, in each case as more fully set forth at [https://rollbar.com/docs/billing/](https://rollbar.com/docs/billing/). You agree to pay any invoice for excess usage in accordance with the excess usage schedule made available at [https://rollbar.com/docs/billing/](https://rollbar.com/docs/billing/). Any added quantities will terminate on the same date as the underlying subscriptions.</td> </tr> <tr> <td id="file-tos-diff-L65" class="blob-num js-line-number js-blob-rnum" data-line-number="65"></td> <td id="file-tos-diff-LC65" class="blob-code blob-code-inner js-file-line">---</td> </tr> <tr> <td id="file-tos-diff-L66" class="blob-num js-line-number js-blob-rnum" data-line-number="66"></td> <td id="file-tos-diff-LC66" class="blob-code blob-code-inner js-file-line">&gt; 1. __API Terms__. Abuse or excessively frequent requests to Rollbar via the API may result in the temporary or permanent suspension of your Account&#39;s access to the API. Rollbar, in our sole discretion, will determine abuse or excessive usage of the API. We will make a reasonable attempt to warn you via email prior to suspension. You may not share API tokens to exceed Rollbar&#39;s rate limitations. All use of the Rollbar API is subject to these Terms of Service and the Rollbar Privacy Statement.</td> </tr> <tr> <td id="file-tos-diff-L67" class="blob-num js-line-number js-blob-rnum" data-line-number="67"></td> <td id="file-tos-diff-LC67" class="blob-code blob-code-inner js-file-line">36a31</td> </tr> <tr> <td id="file-tos-diff-L68" class="blob-num js-line-number js-blob-rnum" data-line-number="68"></td> <td id="file-tos-diff-LC68" class="blob-code blob-code-inner js-file-line">&gt; 1. __Additional Service Terms__. Some Service features may be subject to additional terms specific to that feature or product. By accessing or using those features, you also agree to those additional terms.</td> </tr> <tr> <td id="file-tos-diff-L69" class="blob-num js-line-number js-blob-rnum" data-line-number="69"></td> <td id="file-tos-diff-LC69" class="blob-code blob-code-inner js-file-line">38,41d32</td> </tr> <tr> <td id="file-tos-diff-L70" class="blob-num js-line-number js-blob-rnum" data-line-number="70"></td> <td id="file-tos-diff-LC70" class="blob-code blob-code-inner js-file-line">&lt; We may impose or modify these limitations without notice. We may utilize technical measures to prevent over-usage and stop usage of the Services by a Product after any usage limitations are exceeded or suspend your access to the Services with or without notice to you in the event you exceed any such limitations.</td> </tr> <tr> <td id="file-tos-diff-L71" class="blob-num js-line-number js-blob-rnum" data-line-number="71"></td> <td id="file-tos-diff-LC71" class="blob-code blob-code-inner js-file-line">&lt; </td> </tr> <tr> <td id="file-tos-diff-L72" class="blob-num js-line-number js-blob-rnum" data-line-number="72"></td> <td id="file-tos-diff-LC72" class="blob-code blob-code-inner js-file-line">&lt; ## g. General Representations and Warranties</td> </tr> <tr> <td id="file-tos-diff-L73" class="blob-num js-line-number js-blob-rnum" data-line-number="73"></td> <td id="file-tos-diff-LC73" class="blob-code blob-code-inner js-file-line">&lt; You represent and warrant that (i) your use of our Services will be in strict accordance with the Rollbar [Privacy Policy](doc:privacy-policy), available at [https://rollbar.com/privacy/](https://rollbar.com/privacy/), with this Agreement, and with all applicable laws and regulations (including without limitation any local laws or regulations in your country, state, city, or other governmental area, regarding online conduct and acceptable content, and including all applicable laws regarding the transmission of technical data exported from the United States or the country in which you reside) and (ii) your use of our Services will not infringe or misappropriate the intellectual property rights of any third party.</td> </tr> <tr> <td id="file-tos-diff-L74" class="blob-num js-line-number js-blob-rnum" data-line-number="74"></td> <td id="file-tos-diff-LC74" class="blob-code blob-code-inner js-file-line">43c34</td> </tr> <tr> <td id="file-tos-diff-L75" class="blob-num js-line-number js-blob-rnum" data-line-number="75"></td> <td id="file-tos-diff-LC75" class="blob-code blob-code-inner js-file-line">&lt; # 2. PRODUCTS</td> </tr> <tr> <td id="file-tos-diff-L76" class="blob-num js-line-number js-blob-rnum" data-line-number="76"></td> <td id="file-tos-diff-LC76" class="blob-code blob-code-inner js-file-line">---</td> </tr> <tr> <td id="file-tos-diff-L77" class="blob-num js-line-number js-blob-rnum" data-line-number="77"></td> <td id="file-tos-diff-LC77" class="blob-code blob-code-inner js-file-line">&gt; 1. **ACCOUNTS**</td> </tr> <tr> <td id="file-tos-diff-L78" class="blob-num js-line-number js-blob-rnum" data-line-number="78"></td> <td id="file-tos-diff-LC78" class="blob-code blob-code-inner js-file-line">45,46c36</td> </tr> <tr> <td id="file-tos-diff-L79" class="blob-num js-line-number js-blob-rnum" data-line-number="79"></td> <td id="file-tos-diff-LC79" class="blob-code blob-code-inner js-file-line">&lt; ##a. Product Policy</td> </tr> <tr> <td id="file-tos-diff-L80" class="blob-num js-line-number js-blob-rnum" data-line-number="80"></td> <td id="file-tos-diff-LC80" class="blob-code blob-code-inner js-file-line">&lt; You are solely responsible and liable for your applications (“Products”), and for supporting the Products. On each Product in which you use the Services, you shall prominently display and comply with a privacy policy on such Product that includes a full, accurate and clear disclosure regarding Rollbar’s collection, use and distribution of personal information collected via the Services in accordance with our Privacy Policy. You represent and warrant that your Product will not: (i) violate any third-party right, including any copyright, trademark, patent, trade secret, moral right, privacy right, right of publicity, or any other intellectual property or proprietary right; (ii) violate any laws or regulations (including any privacy laws) or any obligations or restrictions imposed by any third party; (iii) be harassing, abusive, tortious, threatening, harmful, invasive of another’s privacy, vulgar, defamatory, false, intentionally misleading, trade libelous, pornographic, obscene, or patently offensive, or promote racism, bigotry, hatred, or physical harm of any kind against any group or individual, or be otherwise objectionable; (iv) be harmful to minors in any way; (v) contain any computer viruses, worms, or any software intended to damage or alter a computer system or data; (vi) send unsolicited or unauthorized advertising, promotional materials, junk mail, spam, text messages, chain letters, pyramid schemes, or any other form of duplicative or unsolicited messages, whether commercial or otherwise; or (vii) offer or promote services that may be damaging to, disparaging of, or otherwise detrimental to Rollbar or its licensors, licensees, affiliates and partners.</td> </tr> <tr> <td id="file-tos-diff-L81" class="blob-num js-line-number js-blob-rnum" data-line-number="81"></td> <td id="file-tos-diff-LC81" class="blob-code blob-code-inner js-file-line">---</td> </tr> <tr> <td id="file-tos-diff-L82" class="blob-num js-line-number js-blob-rnum" data-line-number="82"></td> <td id="file-tos-diff-LC82" class="blob-code blob-code-inner js-file-line">&gt; 1. __Rollbar Accounts__. In order to use certain features of the Services, you must register for an account with Rollbar (an &quot;Account&quot;). Your Rollbar account gives you access to the services and functionality that we may establish and maintain from time to time in our sole discretion. We may maintain different types of accounts for different types of Users, and these different accounts may have different functionalities available to them. A “User Account” represents an individual User’s authorization to log in to and use the Services and serves as a User’s identity on Rollbar. “Organization(s)” are shared workspaces that may be associated with a single entity, a single department within an entity, or with one or more Users where multiple Users can collaborate across many projects at once. A User Account can be a member of any number of Organizations.</td> </tr> <tr> <td id="file-tos-diff-L83" class="blob-num js-line-number js-blob-rnum" data-line-number="83"></td> <td id="file-tos-diff-LC83" class="blob-code blob-code-inner js-file-line">48,49c38,40</td> </tr> <tr> <td id="file-tos-diff-L84" class="blob-num js-line-number js-blob-rnum" data-line-number="84"></td> <td id="file-tos-diff-LC84" class="blob-code blob-code-inner js-file-line">&lt; ## b. Refusal of Products</td> </tr> <tr> <td id="file-tos-diff-L85" class="blob-num js-line-number js-blob-rnum" data-line-number="85"></td> <td id="file-tos-diff-LC85" class="blob-code blob-code-inner js-file-line">&lt; Rollbar will have the right, in its sole discretion, to refuse to permit your use of the Services with a particular Product. Unless Rollbar states otherwise, such rejection will not terminate this Agreement with respect to any other Product. Rollbar will have no liability to you for such refusal.</td> </tr> <tr> <td id="file-tos-diff-L86" class="blob-num js-line-number js-blob-rnum" data-line-number="86"></td> <td id="file-tos-diff-LC86" class="blob-code blob-code-inner js-file-line">---</td> </tr> <tr> <td id="file-tos-diff-L87" class="blob-num js-line-number js-blob-rnum" data-line-number="87"></td> <td id="file-tos-diff-LC87" class="blob-code blob-code-inner js-file-line">&gt; 1. __Account Controls__.</td> </tr> <tr> <td id="file-tos-diff-L88" class="blob-num js-line-number js-blob-rnum" data-line-number="88"></td> <td id="file-tos-diff-LC88" class="blob-code blob-code-inner js-file-line">&gt; 1. _User Accounts_. Subject to this Agreement, you retain ultimate administrative control over your User Account and the Content within it. You must be a human to create a User Account.</td> </tr> <tr> <td id="file-tos-diff-L89" class="blob-num js-line-number js-blob-rnum" data-line-number="89"></td> <td id="file-tos-diff-LC89" class="blob-code blob-code-inner js-file-line">&gt; 1. _Organizations_. If you open an Organization on behalf of an entity, then (a) “you” includes both you and the entity you represent, as applicable; and (b) you represent and warrant that you are legally authorized to bind the entity to this Agreement. The &quot;owner&quot; of an Organization that was created under this Agreement has ultimate administrative control over that Organization and the Content within it. Within the Services, an owner can manage User access to the Organization’s data and projects. An Organization may have multiple owners, but there must be at least one User Account designated as an owner of an Organization. If you are the owner of an Organization under this Agreement, we consider you responsible for the actions that are performed on or through that Organization.</td> </tr> <tr> <td id="file-tos-diff-L90" class="blob-num js-line-number js-blob-rnum" data-line-number="90"></td> <td id="file-tos-diff-LC90" class="blob-code blob-code-inner js-file-line">51,52c42</td> </tr> <tr> <td id="file-tos-diff-L91" class="blob-num js-line-number js-blob-rnum" data-line-number="91"></td> <td id="file-tos-diff-LC91" class="blob-code blob-code-inner js-file-line">&lt; ## c. Monitoring</td> </tr> <tr> <td id="file-tos-diff-L92" class="blob-num js-line-number js-blob-rnum" data-line-number="92"></td> <td id="file-tos-diff-LC92" class="blob-code blob-code-inner js-file-line">&lt; You agree to provide us with access to your Product and other materials related to your use of the Services as reasonably requested by us to verify your compliance with this Agreement.</td> </tr> <tr> <td id="file-tos-diff-L93" class="blob-num js-line-number js-blob-rnum" data-line-number="93"></td> <td id="file-tos-diff-LC93" class="blob-code blob-code-inner js-file-line">---</td> </tr> <tr> <td id="file-tos-diff-L94" class="blob-num js-line-number js-blob-rnum" data-line-number="94"></td> <td id="file-tos-diff-LC94" class="blob-code blob-code-inner js-file-line">&gt; 1. __Required Information__. You must provide a valid email address, username, and password in order to complete the signup process. The Services may also be accessed using single sign-on method. Any other information requested, such as your real name, is optional, unless you are accepting these terms on behalf of a legal entity (in which case we need more information about the legal entity) or if you opt for a paid Account, in which case additional information will be necessary for billing purposes.</td> </tr> <tr> <td id="file-tos-diff-L95" class="blob-num js-line-number js-blob-rnum" data-line-number="95"></td> <td id="file-tos-diff-LC95" class="blob-code blob-code-inner js-file-line">54,55c44,48</td> </tr> <tr> <td id="file-tos-diff-L96" class="blob-num js-line-number js-blob-rnum" data-line-number="96"></td> <td id="file-tos-diff-LC96" class="blob-code blob-code-inner js-file-line">&lt; ## c. Unauthorized Applications</td> </tr> <tr> <td id="file-tos-diff-L97" class="blob-num js-line-number js-blob-rnum" data-line-number="97"></td> <td id="file-tos-diff-LC97" class="blob-code blob-code-inner js-file-line">&lt; You understand that the Services are not designed, intended, authorized or warranted to be suitable for use in the following “Unauthorized Applications”: life support applications, devices or systems, the operation of nuclear facilities; aircraft navigation systems; aircraft communication systems; air traffic control; direct life support machines; weapons systems; military or space equipment requiring radiation hardened components; and Enhanced 911 or E911 emergency calling system. You warrant that you will not use the Services for Unauthorized Applications.</td> </tr> <tr> <td id="file-tos-diff-L98" class="blob-num js-line-number js-blob-rnum" data-line-number="98"></td> <td id="file-tos-diff-LC98" class="blob-code blob-code-inner js-file-line">---</td> </tr> <tr> <td id="file-tos-diff-L99" class="blob-num js-line-number js-blob-rnum" data-line-number="99"></td> <td id="file-tos-diff-LC99" class="blob-code blob-code-inner js-file-line">&gt; 1. __Account Rules__.</td> </tr> <tr> <td id="file-tos-diff-L100" class="blob-num js-line-number js-blob-rnum" data-line-number="100"></td> <td id="file-tos-diff-LC100" class="blob-code blob-code-inner js-file-line">&gt; 1. One person or legal entity may maintain no more than one free Account.</td> </tr> <tr> <td id="file-tos-diff-L101" class="blob-num js-line-number js-blob-rnum" data-line-number="101"></td> <td id="file-tos-diff-LC101" class="blob-code blob-code-inner js-file-line">&gt; 1. You must be age 18 or older. Rollbar does not target our Service to children under 18, and we do not permit any Users under 18 on our Service. If we learn of any User under the age of 18, we will terminate the User Account of that User immediately. If you are a resident of a country outside the United States, your country’s minimum age may be older; in such a case, you are responsible for complying with your country’s laws.</td> </tr> <tr> <td id="file-tos-diff-L102" class="blob-num js-line-number js-blob-rnum" data-line-number="102"></td> <td id="file-tos-diff-LC102" class="blob-code blob-code-inner js-file-line">&gt; 1. Your login may only be used by one person — i.e., a single login may not be shared by multiple people. A paid Organization may only provide access to as many User Accounts as your subscription allows.</td> </tr> <tr> <td id="file-tos-diff-L103" class="blob-num js-line-number js-blob-rnum" data-line-number="103"></td> <td id="file-tos-diff-LC103" class="blob-code blob-code-inner js-file-line">&gt; 1. You may not use Rollbar in violation of export control or sanctions laws of the United States or any other applicable jurisdiction. You may not use Rollbar if you are or are working on behalf of a[](https://www.treasury.gov/resource-center/sanctions/SDN-List/Pages/default.aspx)[_Specially Designated National (SDN)_](https://www.treasury.gov/resource-center/sanctions/SDN-List/Pages/default.aspx) or a person subject to similar blocking or denied party prohibitions administered by a U.S. government agency.</td> </tr> <tr> <td id="file-tos-diff-L104" class="blob-num js-line-number js-blob-rnum" data-line-number="104"></td> <td id="file-tos-diff-LC104" class="blob-code blob-code-inner js-file-line">57c50,53</td> </tr> <tr> <td id="file-tos-diff-L105" class="blob-num js-line-number js-blob-rnum" data-line-number="105"></td> <td id="file-tos-diff-LC105" class="blob-code blob-code-inner js-file-line">&lt; # 3. OWNERSHIP</td> </tr> <tr> <td id="file-tos-diff-L106" class="blob-num js-line-number js-blob-rnum" data-line-number="106"></td> <td id="file-tos-diff-LC106" class="blob-code blob-code-inner js-file-line">---</td> </tr> <tr> <td id="file-tos-diff-L107" class="blob-num js-line-number js-blob-rnum" data-line-number="107"></td> <td id="file-tos-diff-LC107" class="blob-code blob-code-inner js-file-line">&gt; 1. __Account Security__. You are responsible for keeping your Account secure while you use our Service. We offer tools such as two-factor authentication to help you maintain your Account&#39;s security, but the content of your Account and its security are up to you.</td> </tr> <tr> <td id="file-tos-diff-L108" class="blob-num js-line-number js-blob-rnum" data-line-number="108"></td> <td id="file-tos-diff-LC108" class="blob-code blob-code-inner js-file-line">&gt; 1. You are responsible for all content posted and activity that occurs under your Account (even when content is posted by others who have Accounts under your Account).</td> </tr> <tr> <td id="file-tos-diff-L109" class="blob-num js-line-number js-blob-rnum" data-line-number="109"></td> <td id="file-tos-diff-LC109" class="blob-code blob-code-inner js-file-line">&gt; 1. You are responsible for maintaining the security of your Account and password. Rollbar cannot and will not be liable for any loss or damage from your failure to comply with this security obligation.</td> </tr> <tr> <td id="file-tos-diff-L110" class="blob-num js-line-number js-blob-rnum" data-line-number="110"></td> <td id="file-tos-diff-LC110" class="blob-code blob-code-inner js-file-line">&gt; 1. You must notify Rollbar immediately of any breach of security or unauthorized use of your account. Rollbar will not be liable for any losses caused by any unauthorized use of your account.</td> </tr> <tr> <td id="file-tos-diff-L111" class="blob-num js-line-number js-blob-rnum" data-line-number="111"></td> <td id="file-tos-diff-LC111" class="blob-code blob-code-inner js-file-line">59,60c55</td> </tr> <tr> <td id="file-tos-diff-L112" class="blob-num js-line-number js-blob-rnum" data-line-number="112"></td> <td id="file-tos-diff-LC112" class="blob-code blob-code-inner js-file-line">&lt; ## a. Ownership</td> </tr> <tr> <td id="file-tos-diff-L113" class="blob-num js-line-number js-blob-rnum" data-line-number="113"></td> <td id="file-tos-diff-LC113" class="blob-code blob-code-inner js-file-line">&lt; As between you and Rollbar, Rollbar owns all right, title and interest in and to the Services. Except for the access granted in Section 1(b) (Rollbar Services), this Agreement grants you no right, title, or interest in any intellectual property owned or licensed by us, including the Services, and without limitation the software, images, text, graphics, illustrations, logos, patents, trademarks, service marks, copyrights, photographs, audio, and videos therein. You agree to abide by all applicable proprietary rights laws and other laws, as well as any additional copyright notices and restrictions contained in this Agreement. We claim no ownership or control over your Product or the content sent, posted or displayed through your Product, except for any aspects of the Services therein (“Customer Content”). If you believe any content on the Services infringes your copyrights, you may request that we remove the content from the Services (or disable access to that content) by following the instructions on our [DMCA Notice](doc:dmca) page available at: [https://docs.rollbar.com/docs/dmca](https://docs.rollbar.com/docs/dmca).</td> </tr> <tr> <td id="file-tos-diff-L114" class="blob-num js-line-number js-blob-rnum" data-line-number="114"></td> <td id="file-tos-diff-LC114" class="blob-code blob-code-inner js-file-line">---</td> </tr> <tr> <td id="file-tos-diff-L115" class="blob-num js-line-number js-blob-rnum" data-line-number="115"></td> <td id="file-tos-diff-LC115" class="blob-code blob-code-inner js-file-line">&gt; 1. __Third-party Accounts__. By connecting to Rollbar with a third-party service, you give us permission to access and use your information from that service as permitted by that service, and to store your credentials for that service.</td> </tr> <tr> <td id="file-tos-diff-L116" class="blob-num js-line-number js-blob-rnum" data-line-number="116"></td> <td id="file-tos-diff-LC116" class="blob-code blob-code-inner js-file-line">62,63c57</td> </tr> <tr> <td id="file-tos-diff-L117" class="blob-num js-line-number js-blob-rnum" data-line-number="117"></td> <td id="file-tos-diff-LC117" class="blob-code blob-code-inner js-file-line">&lt; ## b. Feedback</td> </tr> <tr> <td id="file-tos-diff-L118" class="blob-num js-line-number js-blob-rnum" data-line-number="118"></td> <td id="file-tos-diff-LC118" class="blob-code blob-code-inner js-file-line">&lt; You may choose to or we may invite you to submit comments or ideas about the Services, including without limitation about how to improve the Services or our products (“Ideas”). By submitting any Idea, you agree that your disclosure is gratuitous, unsolicited and without restriction and will not place Rollbar under any fiduciary or other obligation, and that we are free to use the Idea without any additional compensation to you, and/or to disclose the Idea on a non-confidential basis or otherwise to anyone. You further acknowledge that, by acceptance of your submission, Rollbar does not waive any rights to use similar or related ideas previously known to Rollbar, or developed by its employees, or obtained from sources other than you.</td> </tr> <tr> <td id="file-tos-diff-L119" class="blob-num js-line-number js-blob-rnum" data-line-number="119"></td> <td id="file-tos-diff-LC119" class="blob-code blob-code-inner js-file-line">---</td> </tr> <tr> <td id="file-tos-diff-L120" class="blob-num js-line-number js-blob-rnum" data-line-number="120"></td> <td id="file-tos-diff-LC120" class="blob-code blob-code-inner js-file-line">&gt; 1. __Account Settings and Communication with Rollbar__. You may control your Account and how you interact with the Services by changing the settings in your settings page. By providing Rollbar your email address you consent to our using the email address to send you Service-related notices, including any notices required by law, in lieu of communication by postal mail. We may also use your email address to send you other messages, such as changes to features of the Services and special offers. If you do not want to receive such email messages, you may opt out or change your preferences in your user settings page within your account on the Services. Opting out may prevent you from receiving email messages regarding updates, improvements, or offers.</td> </tr> <tr> <td id="file-tos-diff-L121" class="blob-num js-line-number js-blob-rnum" data-line-number="121"></td> <td id="file-tos-diff-LC121" class="blob-code blob-code-inner js-file-line">65d58</td> </tr> <tr> <td id="file-tos-diff-L122" class="blob-num js-line-number js-blob-rnum" data-line-number="122"></td> <td id="file-tos-diff-LC122" class="blob-code blob-code-inner js-file-line">&lt; # 4. FEES AND PAYMENT TERMS</td> </tr> <tr> <td id="file-tos-diff-L123" class="blob-num js-line-number js-blob-rnum" data-line-number="123"></td> <td id="file-tos-diff-LC123" class="blob-code blob-code-inner js-file-line">67,68c60</td> </tr> <tr> <td id="file-tos-diff-L124" class="blob-num js-line-number js-blob-rnum" data-line-number="124"></td> <td id="file-tos-diff-LC124" class="blob-code blob-code-inner js-file-line">&lt; ## a. Payment</td> </tr> <tr> <td id="file-tos-diff-L125" class="blob-num js-line-number js-blob-rnum" data-line-number="125"></td> <td id="file-tos-diff-LC125" class="blob-code blob-code-inner js-file-line">&lt; You agree to pay all fees or charges to your account in accordance with the applicable fees, charges and billing terms in effect at the time a fee or charge is due and payable. Unless otherwise agreed to by Rollbar in writing, Users must provide Rollbar with valid credit card (Visa, MasterCard, or any other issuer accepted by us) (“Payment Provider”). Your Payment Provider agreement governs use of the designated credit card account, and must refer to that agreement and not the terms of this Agreement to determine its rights and responsibilities. By providing Rollbar with your credit card number and associated payment information, you agree that we are authorized to immediately invoice your account for all fees and charges due and payable to Rollbar hereunder and that no additional consent is required. You agree to immediately notify us of any change in your billing address or credit card used for payment hereunder. We reserve the right at any time to change our prices and billing methods, either immediately upon posting on the Services or by e-mail delivery to you.</td> </tr> <tr> <td id="file-tos-diff-L126" class="blob-num js-line-number js-blob-rnum" data-line-number="126"></td> <td id="file-tos-diff-LC126" class="blob-code blob-code-inner js-file-line">---</td> </tr> <tr> <td id="file-tos-diff-L127" class="blob-num js-line-number js-blob-rnum" data-line-number="127"></td> <td id="file-tos-diff-LC127" class="blob-code blob-code-inner js-file-line">&gt; 1. **PRODUCTS**</td> </tr> <tr> <td id="file-tos-diff-L128" class="blob-num js-line-number js-blob-rnum" data-line-number="128"></td> <td id="file-tos-diff-LC128" class="blob-code blob-code-inner js-file-line">70,71c62</td> </tr> <tr> <td id="file-tos-diff-L129" class="blob-num js-line-number js-blob-rnum" data-line-number="129"></td> <td id="file-tos-diff-LC129" class="blob-code blob-code-inner js-file-line">&lt; ## b. Payment Processor</td> </tr> <tr> <td id="file-tos-diff-L130" class="blob-num js-line-number js-blob-rnum" data-line-number="130"></td> <td id="file-tos-diff-LC130" class="blob-code blob-code-inner js-file-line">&lt; We use a third party payment processor (the “Payment Processor”) to bill you through a payment account linked to your Account. The processing of payments will be subject to the terms, conditions and privacy policies of the Payment Processor, in addition to this Agreement. Our current Payment Processor is Stripe, and your payments are processed by Stripe in accordance with Stripe’s Terms of Service and Privacy Policy. We don’t control and are not liable for the security or performance of the Payment Processor. You agree to pay us, through the Payment Processor, all charges at the prices then in effect for any purchase in accordance with the applicable payment terms. You agree to make payment using the payment method you provide with your Account. We reserve the right to correct, or to instruct our Payment Processor to correct, any errors or mistakes, even if payment has already been requested or received. In the event of any chargebacks or customer disputes, you agree to follow the procedure set forth in Section 12(b) and to assist us, and our respective third party vendors to investigate and resolve the same and you agree that we may share information about orders from you initiated through the use of the Service with our respective third party vendors to the extent needed to resolve customer disputes. You further agree that a breach of the dispute resolution requirements set forth in Section 12(b) shall be considered a material breach. </td> </tr> <tr> <td id="file-tos-diff-L131" class="blob-num js-line-number js-blob-rnum" data-line-number="131"></td> <td id="file-tos-diff-LC131" class="blob-code blob-code-inner js-file-line">---</td> </tr> <tr> <td id="file-tos-diff-L132" class="blob-num js-line-number js-blob-rnum" data-line-number="132"></td> <td id="file-tos-diff-LC132" class="blob-code blob-code-inner js-file-line">&gt; 1. __Product Policy__. You are solely responsible and liable for your applications (“Products”), and for supporting the Products. On each Product in which you use the Services, you shall prominently display and comply with a privacy policy on such Product that includes a full, accurate and clear disclosure regarding Rollbar’s collection, use and distribution of personal information collected via the Services in accordance with our Privacy Policy. You represent and warrant that your Product will not: (i) violate any third-party right, including any copyright, trademark, patent, trade secret, moral right, privacy right, right of publicity, or any other intellectual property or proprietary right; (ii) violate any laws or regulations (including any privacy laws) or any obligations or restrictions imposed by any third party; (iii) be harassing, abusive, tortious, threatening, harmful, invasive of another’s privacy, vulgar, defamatory, false, intentionally misleading, trade libelous, pornographic, obscene, or patently offensive, or promote racism, bigotry, hatred, or physical harm of any kind against any group or individual, or be otherwise objectionable; (iv) be harmful to minors in any way; (v) contain any computer viruses, worms, or any software intended to damage or alter a computer system or data; (vi) send unsolicited or unauthorized advertising, promotional materials, junk mail, spam, text messages, chain letters, pyramid schemes, or any other form of duplicative or unsolicited messages, whether commercial or otherwise; or (vii) offer or promote services that may be damaging to, disparaging of, or otherwise detrimental to Rollbar or its licensors, licensees, affiliates and partners.</td> </tr> <tr> <td id="file-tos-diff-L133" class="blob-num js-line-number js-blob-rnum" data-line-number="133"></td> <td id="file-tos-diff-LC133" class="blob-code blob-code-inner js-file-line">73,74c64</td> </tr> <tr> <td id="file-tos-diff-L134" class="blob-num js-line-number js-blob-rnum" data-line-number="134"></td> <td id="file-tos-diff-LC134" class="blob-code blob-code-inner js-file-line">&lt; ## c. Automatic Renewal</td> </tr> <tr> <td id="file-tos-diff-L135" class="blob-num js-line-number js-blob-rnum" data-line-number="135"></td> <td id="file-tos-diff-LC135" class="blob-code blob-code-inner js-file-line">&lt; You will be responsible for payment of the applicable subscription fee amount for the Services (the “Service Subscription Fee”) at the time you create your account and select your monthly or annual package (each, a “Service Commencement Date”). In the event that you exceed the established usage limits for your selected subscription tier, Rollbar reserves the right to require further payments from you to cover the cost of any such overage. Your subscription to the Services are non-cancellable and, non-refundable. Your subscription to the Services will automatically renew for successive terms equal in length to the initial term (each, a “Renewal Term”), at Rollbar’s then-current price for the applicable subscription tier unless earlier terminated in accordance with Section 8 (Term and Termination). You may terminate your access to the Services at anytime pursuant to Section 8(c) (Your Termination) below.</td> </tr> <tr> <td id="file-tos-diff-L136" class="blob-num js-line-number js-blob-rnum" data-line-number="136"></td> <td id="file-tos-diff-LC136" class="blob-code blob-code-inner js-file-line">---</td> </tr> <tr> <td id="file-tos-diff-L137" class="blob-num js-line-number js-blob-rnum" data-line-number="137"></td> <td id="file-tos-diff-LC137" class="blob-code blob-code-inner js-file-line">&gt; 1. __Refusal of Products__. Rollbar will have the right, in its sole discretion, to refuse to permit your use of the Services with a particular Product. Unless Rollbar states otherwise, such rejection will not terminate this Agreement with respect to any other Product. Rollbar will have no liability to you for such refusal.</td> </tr> <tr> <td id="file-tos-diff-L138" class="blob-num js-line-number js-blob-rnum" data-line-number="138"></td> <td id="file-tos-diff-LC138" class="blob-code blob-code-inner js-file-line">76,77c66</td> </tr> <tr> <td id="file-tos-diff-L139" class="blob-num js-line-number js-blob-rnum" data-line-number="139"></td> <td id="file-tos-diff-LC139" class="blob-code blob-code-inner js-file-line">&lt; ## d. Pricing</td> </tr> <tr> <td id="file-tos-diff-L140" class="blob-num js-line-number js-blob-rnum" data-line-number="140"></td> <td id="file-tos-diff-LC140" class="blob-code blob-code-inner js-file-line">&lt; Please refer to our billing page https://rollbar.com/docs/billing/ for a description of the fees payable in connection with the Services. In the event that you wish to increase the number of Events beyond the maximum number of Events for which the applicable fees have been paid, you shall be required to pay additional fees associated with the increased number of Events, as more fully described at [https://rollbar.com/docs/billing/](https://rollbar.com/docs/billing/)</td> </tr> <tr> <td id="file-tos-diff-L141" class="blob-num js-line-number js-blob-rnum" data-line-number="141"></td> <td id="file-tos-diff-LC141" class="blob-code blob-code-inner js-file-line">---</td> </tr> <tr> <td id="file-tos-diff-L142" class="blob-num js-line-number js-blob-rnum" data-line-number="142"></td> <td id="file-tos-diff-LC142" class="blob-code blob-code-inner js-file-line">&gt; 1. __Monitoring__. You agree to provide us with access to your Product and other materials related to your use of the Services as reasonably requested by us to verify your compliance with this Agreement.</td> </tr> <tr> <td id="file-tos-diff-L143" class="blob-num js-line-number js-blob-rnum" data-line-number="143"></td> <td id="file-tos-diff-LC143" class="blob-code blob-code-inner js-file-line">79,80c68</td> </tr> <tr> <td id="file-tos-diff-L144" class="blob-num js-line-number js-blob-rnum" data-line-number="144"></td> <td id="file-tos-diff-LC144" class="blob-code blob-code-inner js-file-line">&lt; ## e. Taxes</td> </tr> <tr> <td id="file-tos-diff-L145" class="blob-num js-line-number js-blob-rnum" data-line-number="145"></td> <td id="file-tos-diff-LC145" class="blob-code blob-code-inner js-file-line">&lt; Rollbar’s fees are net of any applicable taxes, including but not limited to sales and use taxes, VAT, and any additional taxes other than U.S. taxes based on the net income, property tax or payroll taxes of Rollbar (“Taxes”), and whether these Taxes are imposed directly on you or on Rollbar. If your receipt of access to the Services, under this Agreement is subject to Taxes in any jurisdiction and you have not remitted the applicable Taxes to Rollbar, you will be responsible for the payment of such Taxes and any related penalties or interest to the relevant tax authority.</td> </tr> <tr> <td id="file-tos-diff-L146" class="blob-num js-line-number js-blob-rnum" data-line-number="146"></td> <td id="file-tos-diff-LC146" class="blob-code blob-code-inner js-file-line">---</td> </tr> <tr> <td id="file-tos-diff-L147" class="blob-num js-line-number js-blob-rnum" data-line-number="147"></td> <td id="file-tos-diff-LC147" class="blob-code blob-code-inner js-file-line">&gt; 1. __Unauthorized Applications__. You understand that the Services are not designed, intended, authorized or warranted to be suitable for use in the following “Unauthorized Applications”: life support applications, devices or systems, the operation of nuclear facilities; aircraft navigation systems; aircraft communication systems; air traffic control; direct life support machines; weapons systems; military or space equipment requiring radiation hardened components; and Enhanced 911 or E911 emergency calling system. You warrant that you will not use the Services for Unauthorized Applications.</td> </tr> <tr> <td id="file-tos-diff-L148" class="blob-num js-line-number js-blob-rnum" data-line-number="148"></td> <td id="file-tos-diff-LC148" class="blob-code blob-code-inner js-file-line">82,83c70</td> </tr> <tr> <td id="file-tos-diff-L149" class="blob-num js-line-number js-blob-rnum" data-line-number="149"></td> <td id="file-tos-diff-LC149" class="blob-code blob-code-inner js-file-line">&lt; ## f. California Residents</td> </tr> <tr> <td id="file-tos-diff-L150" class="blob-num js-line-number js-blob-rnum" data-line-number="150"></td> <td id="file-tos-diff-LC150" class="blob-code blob-code-inner js-file-line">&lt; The provider of Services is set forth herein. If you are a California resident, in accordance with Cal. Civ. Code §1789.3, you may report complaints to the Complaint Assistance Unit of the Division of Consumer Services of the California Department of Consumer Affairs by contacting them in writing at 1625 North Market Blvd., Suite N 112 Sacramento, CA 95834, or by telephone at (800) 952-5210 or (916) 445-1254.</td> </tr> <tr> <td id="file-tos-diff-L151" class="blob-num js-line-number js-blob-rnum" data-line-number="151"></td> <td id="file-tos-diff-LC151" class="blob-code blob-code-inner js-file-line">---</td> </tr> <tr> <td id="file-tos-diff-L152" class="blob-num js-line-number js-blob-rnum" data-line-number="152"></td> <td id="file-tos-diff-LC152" class="blob-code blob-code-inner js-file-line">&gt; 1. **OWNERSHIP**</td> </tr> <tr> <td id="file-tos-diff-L153" class="blob-num js-line-number js-blob-rnum" data-line-number="153"></td> <td id="file-tos-diff-LC153" class="blob-code blob-code-inner js-file-line">85c72</td> </tr> <tr> <td id="file-tos-diff-L154" class="blob-num js-line-number js-blob-rnum" data-line-number="154"></td> <td id="file-tos-diff-LC154" class="blob-code blob-code-inner js-file-line">&lt; # 5. RELATIONSHIP</td> </tr> <tr> <td id="file-tos-diff-L155" class="blob-num js-line-number js-blob-rnum" data-line-number="155"></td> <td id="file-tos-diff-LC155" class="blob-code blob-code-inner js-file-line">---</td> </tr> <tr> <td id="file-tos-diff-L156" class="blob-num js-line-number js-blob-rnum" data-line-number="156"></td> <td id="file-tos-diff-LC156" class="blob-code blob-code-inner js-file-line">&gt; 1. __Ownership__. As between you and Rollbar, Rollbar owns all right, title and interest in and to the Services. Except for the access granted in Section 1(b) (*Rollbar Services*), this Agreement grants you no right, title, or interest in any intellectual property owned or licensed by us, including the Services, and without limitation the software, images, text, graphics, illustrations, logos, patents, trademarks, service marks, copyrights, photographs, audio, and videos therein. You agree to abide by all applicable proprietary rights laws and other laws, as well as any additional copyright notices and restrictions contained in this Agreement. We claim no ownership or control over your Product or the content sent, posted or displayed through your Product, except for any aspects of the Services therein (“User Content”). If you believe any content on the Services infringes your copyrights, you may request that we remove the content from the Services (or disable access to that content) by following the instructions on our [_DMCA Notice_](https://docs.rollbar.com/docs/dmca.) page available at: [_https://docs.rollbar.com/docs/dmca_](https://docs.rollbar.com/docs/dmca).</td> </tr> <tr> <td id="file-tos-diff-L157" class="blob-num js-line-number js-blob-rnum" data-line-number="157"></td> <td id="file-tos-diff-LC157" class="blob-code blob-code-inner js-file-line">87,88c74</td> </tr> <tr> <td id="file-tos-diff-L158" class="blob-num js-line-number js-blob-rnum" data-line-number="158"></td> <td id="file-tos-diff-LC158" class="blob-code blob-code-inner js-file-line">&lt; ## a. Relationship of Parties</td> </tr> <tr> <td id="file-tos-diff-L159" class="blob-num js-line-number js-blob-rnum" data-line-number="159"></td> <td id="file-tos-diff-LC159" class="blob-code blob-code-inner js-file-line">&lt; The parties hereto are independent contractors. Nothing in this Agreement will be deemed to create an agency, employment, partnership, fiduciary, or joint venture relationship between the parties. Neither party is the representative of the other party for any purpose and neither party has the power or authority as agent, employee, or in any other capacity to represent, act for, bind, or otherwise create or assume any obligation on behalf of the other party for any purpose whatsoever.</td> </tr> <tr> <td id="file-tos-diff-L160" class="blob-num js-line-number js-blob-rnum" data-line-number="160"></td> <td id="file-tos-diff-LC160" class="blob-code blob-code-inner js-file-line">---</td> </tr> <tr> <td id="file-tos-diff-L161" class="blob-num js-line-number js-blob-rnum" data-line-number="161"></td> <td id="file-tos-diff-LC161" class="blob-code blob-code-inner js-file-line">&gt; 1. __User Content__. You may create or upload User Content while using the Service. You are solely responsible for the content of, and for any harm resulting from, any User Content that you post, upload, link to or otherwise make available via the Service, regardless of the form of that User Content. We are not responsible for any public display or misuse of your User Content. We do not pre-screen User Content, but we have the right (though not the obligation) to refuse or remove any User Content that, in our sole discretion, violates any Rollbar terms or policies. You retain ownership of and responsibility for User Content. You agree that you are responsible for any User Content you post; that you will only submit User Content that you have the right to post; and that you will fully comply with any third party licenses relating to User Content you post. Because you retain ownership of and responsibility for User Content, we need you to grant us — and other Rollbar Users — certain legal permissions, listed in Sections 4(b)(i) — 4(b)(iii) below. These license grants apply to your User Content. You understand that you will not receive any payment for any of the rights granted in Sections 4(b)(i) — 4(b)(iii). The licenses to use your User Content will survive any removal of such content from the Services.</td> </tr> <tr> <td id="file-tos-diff-L162" class="blob-num js-line-number js-blob-rnum" data-line-number="162"></td> <td id="file-tos-diff-LC162" class="blob-code blob-code-inner js-file-line">90,91c76,78</td> </tr> <tr> <td id="file-tos-diff-L163" class="blob-num js-line-number js-blob-rnum" data-line-number="163"></td> <td id="file-tos-diff-LC163" class="blob-code blob-code-inner js-file-line">&lt; ## b. Marketing</td> </tr> <tr> <td id="file-tos-diff-L164" class="blob-num js-line-number js-blob-rnum" data-line-number="164"></td> <td id="file-tos-diff-LC164" class="blob-code blob-code-inner js-file-line">&lt; Unless you notify us in writing to the contrary, we may publicly refer to you, orally or in writing, as a User of the Service, and we may publish your name and logo on the Rollbar website or promotional materials. You grant us all necessary rights and licenses to do so.</td> </tr> <tr> <td id="file-tos-diff-L165" class="blob-num js-line-number js-blob-rnum" data-line-number="165"></td> <td id="file-tos-diff-LC165" class="blob-code blob-code-inner js-file-line">---</td> </tr> <tr> <td id="file-tos-diff-L166" class="blob-num js-line-number js-blob-rnum" data-line-number="166"></td> <td id="file-tos-diff-LC166" class="blob-code blob-code-inner js-file-line">&gt; 1. _License Grant to Rollbar_. We need the legal right to do things like host your User Content, publish it, and share it. You grant us and our legal successors a worldwide, non-exclusive, royalty-free, sublicensable and transferable license to use that User Content (including to reproduce, distribute, prepare derivative works, display and perform it) in connection with the Services and our business. This includes the right to do things like copy it to our database and make backups; show it to you and other users; parse it into a search index or otherwise analyze it on our servers; and share it with other users. This license does not grant Rollbar the right to sell your User Content or otherwise distribute or use it outside of our provision of the Services.</td> </tr> <tr> <td id="file-tos-diff-L167" class="blob-num js-line-number js-blob-rnum" data-line-number="167"></td> <td id="file-tos-diff-LC167" class="blob-code blob-code-inner js-file-line">&gt; 1. _License Grant to Other Users_. Any User Content you post publicly, including issues and comments, may be viewed by others. You grant each User of Rollbar a nonexclusive, worldwide, royalty-free license to access your User Content through the Services, and to use that User Content, including to reproduce, distribute, prepare derivative works, display, and perform it. If you are uploading User Content you did not create or own, you are responsible for ensuring that the User Content you upload is licensed under terms that grant these permissions to other Rollbar Users.</td> </tr> <tr> <td id="file-tos-diff-L168" class="blob-num js-line-number js-blob-rnum" data-line-number="168"></td> <td id="file-tos-diff-LC168" class="blob-code blob-code-inner js-file-line">&gt; 1. _Moral Rights_. You retain all moral rights to your User Content that you upload, publish, or submit to any part of the Services, including the rights of integrity and attribution. However, you waive these rights and agree not to assert them against us, to enable us to reasonably exercise the rights granted in Sections 4(b)(i), but not otherwise.</td> </tr> <tr> <td id="file-tos-diff-L169" class="blob-num js-line-number js-blob-rnum" data-line-number="169"></td> <td id="file-tos-diff-LC169" class="blob-code blob-code-inner js-file-line">93,94c80</td> </tr> <tr> <td id="file-tos-diff-L170" class="blob-num js-line-number js-blob-rnum" data-line-number="170"></td> <td id="file-tos-diff-LC170" class="blob-code blob-code-inner js-file-line">&lt; ## c. Independent Development</td> </tr> <tr> <td id="file-tos-diff-L171" class="blob-num js-line-number js-blob-rnum" data-line-number="171"></td> <td id="file-tos-diff-LC171" class="blob-code blob-code-inner js-file-line">&lt; You acknowledge and agree that Rollbar may be independently creating applications, content and other products and services that may be similar to or competitive with your Product and its content, and nothing in this Agreement will be construed as restricting or preventing Rollbar from creating and fully exploiting such applications, content and other items, without any obligation to you. </td> </tr> <tr> <td id="file-tos-diff-L172" class="blob-num js-line-number js-blob-rnum" data-line-number="172"></td> <td id="file-tos-diff-LC172" class="blob-code blob-code-inner js-file-line">---</td> </tr> <tr> <td id="file-tos-diff-L173" class="blob-num js-line-number js-blob-rnum" data-line-number="173"></td> <td id="file-tos-diff-LC173" class="blob-code blob-code-inner js-file-line">&gt; 1. To the extent this agreement is not enforceable by applicable law, you grant Rollbar the rights we need to use your User Content without attribution and to make reasonable adaptations of your User Content as necessary to provide the Services.</td> </tr> <tr> <td id="file-tos-diff-L174" class="blob-num js-line-number js-blob-rnum" data-line-number="174"></td> <td id="file-tos-diff-LC174" class="blob-code blob-code-inner js-file-line">96c82</td> </tr> <tr> <td id="file-tos-diff-L175" class="blob-num js-line-number js-blob-rnum" data-line-number="175"></td> <td id="file-tos-diff-LC175" class="blob-code blob-code-inner js-file-line">&lt; # 6. PRIVACY</td> </tr> <tr> <td id="file-tos-diff-L176" class="blob-num js-line-number js-blob-rnum" data-line-number="176"></td> <td id="file-tos-diff-LC176" class="blob-code blob-code-inner js-file-line">---</td> </tr> <tr> <td id="file-tos-diff-L177" class="blob-num js-line-number js-blob-rnum" data-line-number="177"></td> <td id="file-tos-diff-LC177" class="blob-code blob-code-inner js-file-line">&gt; 1. __Feedback__. You may choose to or we may invite you to submit comments or ideas about the Services, including without limitation about how to improve the Services or our products (“Ideas”). By submitting any Idea, you agree that your disclosure is gratuitous, unsolicited and without restriction and will not place Rollbar under any fiduciary or other obligation, and that we are free to use the Idea without any additional compensation to you, and/or to disclose the Idea on a non-confidential basis or otherwise to anyone. You further acknowledge that, by acceptance of your submission, Rollbar does not waive any rights to use similar or related ideas previously known to Rollbar, or developed by its employees, or obtained from sources other than you.</td> </tr> <tr> <td id="file-tos-diff-L178" class="blob-num js-line-number js-blob-rnum" data-line-number="178"></td> <td id="file-tos-diff-LC178" class="blob-code blob-code-inner js-file-line">98,101c84</td> </tr> <tr> <td id="file-tos-diff-L179" class="blob-num js-line-number js-blob-rnum" data-line-number="179"></td> <td id="file-tos-diff-LC179" class="blob-code blob-code-inner js-file-line">&lt; We care about the privacy of our Users. You understand that by using the Services you consent to the collection, use, and disclosure of your personally identifiable information and aggregate data as set forth in our [Privacy Policy](doc:privacy-policy), and to have your personally identifiable information collected, used, transferred to, and processed in the United States. You further agree to obtain and maintain any required consents necessary to permit the processing of any data you provide to us under this Agreement, including but not limited to any data that either on its own or in combination with other data could reasonably identify an individual.</td> </tr> <tr> <td id="file-tos-diff-L180" class="blob-num js-line-number js-blob-rnum" data-line-number="180"></td> <td id="file-tos-diff-LC180" class="blob-code blob-code-inner js-file-line">&lt; </td> </tr> <tr> <td id="file-tos-diff-L181" class="blob-num js-line-number js-blob-rnum" data-line-number="181"></td> <td id="file-tos-diff-LC181" class="blob-code blob-code-inner js-file-line">&lt; # 7. SECURITY</td> </tr> <tr> <td id="file-tos-diff-L182" class="blob-num js-line-number js-blob-rnum" data-line-number="182"></td> <td id="file-tos-diff-LC182" class="blob-code blob-code-inner js-file-line">&lt; Rollbar cares about the integrity and security of the data you provide to us and uses commercially reasonable means to protect your data. However, we cannot guarantee that unauthorized third parties will never be able to defeat our security measures or use your data for improper purposes. You acknowledge that you provide your data to us at your own risk. To better understand the steps we take to protect your data, please review our [Security and Compliance](doc:security) measures available at [https://rollbar.com/docs/security/](https://rollbar.com/docs/security/).</td> </tr> <tr> <td id="file-tos-diff-L183" class="blob-num js-line-number js-blob-rnum" data-line-number="183"></td> <td id="file-tos-diff-LC183" class="blob-code blob-code-inner js-file-line">---</td> </tr> <tr> <td id="file-tos-diff-L184" class="blob-num js-line-number js-blob-rnum" data-line-number="184"></td> <td id="file-tos-diff-LC184" class="blob-code blob-code-inner js-file-line">&gt; 1. **FEES AND PAYMENT TERMS**</td> </tr> <tr> <td id="file-tos-diff-L185" class="blob-num js-line-number js-blob-rnum" data-line-number="185"></td> <td id="file-tos-diff-LC185" class="blob-code blob-code-inner js-file-line">103c86</td> </tr> <tr> <td id="file-tos-diff-L186" class="blob-num js-line-number js-blob-rnum" data-line-number="186"></td> <td id="file-tos-diff-LC186" class="blob-code blob-code-inner js-file-line">&lt; # 8. TERM AND TERMINATION</td> </tr> <tr> <td id="file-tos-diff-L187" class="blob-num js-line-number js-blob-rnum" data-line-number="187"></td> <td id="file-tos-diff-LC187" class="blob-code blob-code-inner js-file-line">---</td> </tr> <tr> <td id="file-tos-diff-L188" class="blob-num js-line-number js-blob-rnum" data-line-number="188"></td> <td id="file-tos-diff-LC188" class="blob-code blob-code-inner js-file-line">&gt; 1. __Payment__. You agree to pay all fees or charges to your account in accordance with the applicable fees, charges and billing terms in effect at the time a fee or charge is due and payable. Unless otherwise agreed to by Rollbar in writing, Users must provide Rollbar with valid credit card (Visa, MasterCard, or any other issuer accepted by us) (“Payment Provider”). Your Payment Provider agreement governs use of the designated credit card account, and must refer to that agreement and not the terms of this Agreement to determine its rights and responsibilities. By providing Rollbar with your credit card number and associated payment information, you agree that we are authorized to immediately invoice your account for all fees and charges due and payable to Rollbar hereunder and that no additional consent is required. You agree to immediately notify us of any change in your billing address or credit card used for payment hereunder. We reserve the right at any time to change our prices and billing methods, either immediately upon posting on the Services or by e-mail delivery to you.</td> </tr> <tr> <td id="file-tos-diff-L189" class="blob-num js-line-number js-blob-rnum" data-line-number="189"></td> <td id="file-tos-diff-LC189" class="blob-code blob-code-inner js-file-line">105,106c88</td> </tr> <tr> <td id="file-tos-diff-L190" class="blob-num js-line-number js-blob-rnum" data-line-number="190"></td> <td id="file-tos-diff-LC190" class="blob-code blob-code-inner js-file-line">&lt; ## a. Term</td> </tr> <tr> <td id="file-tos-diff-L191" class="blob-num js-line-number js-blob-rnum" data-line-number="191"></td> <td id="file-tos-diff-LC191" class="blob-code blob-code-inner js-file-line">&lt; You agree that this Agreement will be deemed to be in effect upon the date on which you accept this Agreement, in accordance with the preamble and continue through the term of your initial subscription period.</td> </tr> <tr> <td id="file-tos-diff-L192" class="blob-num js-line-number js-blob-rnum" data-line-number="192"></td> <td id="file-tos-diff-LC192" class="blob-code blob-code-inner js-file-line">---</td> </tr> <tr> <td id="file-tos-diff-L193" class="blob-num js-line-number js-blob-rnum" data-line-number="193"></td> <td id="file-tos-diff-LC193" class="blob-code blob-code-inner js-file-line">&gt; 1. __Automatic Renewal__. You will be responsible for payment of the applicable subscription fee amount for the Services (the “Service Subscription Fee”) at the time you create your account and select your monthly or annual package (each, a “Service Commencement Date”). In the event that you exceed the established usage limits for your selected subscription tier, Rollbar reserves the right to require further payments from you to cover the cost of any such overage. Your subscription to the Services are non-cancellable and, non-refundable. Your subscription to the Services will automatically renew for successive terms equal in length to the initial term (each, a “Renewal Term”), at Rollbar’s then-current price for the applicable subscription tier unless earlier terminated in accordance with Section 9 (*Term and Termination*). You may terminate your access to the Services at any time pursuant to Section 9(c) (*Your Termination*) below.</td> </tr> <tr> <td id="file-tos-diff-L194" class="blob-num js-line-number js-blob-rnum" data-line-number="194"></td> <td id="file-tos-diff-LC194" class="blob-code blob-code-inner js-file-line">108,109c90</td> </tr> <tr> <td id="file-tos-diff-L195" class="blob-num js-line-number js-blob-rnum" data-line-number="195"></td> <td id="file-tos-diff-LC195" class="blob-code blob-code-inner js-file-line">&lt; ## b. Suspension and Termination</td> </tr> <tr> <td id="file-tos-diff-L196" class="blob-num js-line-number js-blob-rnum" data-line-number="196"></td> <td id="file-tos-diff-LC196" class="blob-code blob-code-inner js-file-line">&lt; We may change, suspend, or discontinue the availability or any functionality of the Service, or any aspect of your access to the Service, at any time without notice to you and without incurring any liability to you. We may also impose limits on certain features and services or restrict your access to part or all of the Services without notice to you and without incurring any liability to you. Furthermore, Rollbar may limit, suspend, or terminate your use of the Services (and your rights under this Agreement) at any time. In addition, this Agreement will terminate automatically and without notice immediately upon any breach of the terms of this Agreement by you.</td> </tr> <tr> <td id="file-tos-diff-L197" class="blob-num js-line-number js-blob-rnum" data-line-number="197"></td> <td id="file-tos-diff-LC197" class="blob-code blob-code-inner js-file-line">---</td> </tr> <tr> <td id="file-tos-diff-L198" class="blob-num js-line-number js-blob-rnum" data-line-number="198"></td> <td id="file-tos-diff-LC198" class="blob-code blob-code-inner js-file-line">&gt; 1. __Pricing__. Please refer to our billing page [_https://rollbar.com/docs/billing/_](https://rollbar.com/docs/billing/) for a description of the fees payable in connection with the Services. In the event that you wish to increase the number of Events beyond the maximum number of Events for which the applicable fees have been paid, you shall be required to pay additional fees associated with the increased number of Events, as more fully described at [_https://rollbar.com/docs/billing/_](https://rollbar.com/docs/billing/).</td> </tr> <tr> <td id="file-tos-diff-L199" class="blob-num js-line-number js-blob-rnum" data-line-number="199"></td> <td id="file-tos-diff-LC199" class="blob-code blob-code-inner js-file-line">111,112c92</td> </tr> <tr> <td id="file-tos-diff-L200" class="blob-num js-line-number js-blob-rnum" data-line-number="200"></td> <td id="file-tos-diff-LC200" class="blob-code blob-code-inner js-file-line">&lt; ## c. Your Termination</td> </tr> <tr> <td id="file-tos-diff-L201" class="blob-num js-line-number js-blob-rnum" data-line-number="201"></td> <td id="file-tos-diff-LC201" class="blob-code blob-code-inner js-file-line">&lt; You may terminate this Agreement for any reason or no reason at all, at your convenience, effective as of the last day of the the then-current term by providing written notice to Rollbar of your intent to terminate this Agreement and upon the effective date of your termination, ceasing your use of the Service. Notwithstanding anything to the contrary herein, Service Subscription Fees are non-refundable.</td> </tr> <tr> <td id="file-tos-diff-L202" class="blob-num js-line-number js-blob-rnum" data-line-number="202"></td> <td id="file-tos-diff-LC202" class="blob-code blob-code-inner js-file-line">---</td> </tr> <tr> <td id="file-tos-diff-L203" class="blob-num js-line-number js-blob-rnum" data-line-number="203"></td> <td id="file-tos-diff-LC203" class="blob-code blob-code-inner js-file-line">&gt; 1. __Taxes__. Rollbar’s fees are net of any applicable taxes, including but not limited to sales and use taxes, VAT, and any additional taxes other than U.S. taxes based on the net income, property tax or payroll taxes of Rollbar (“Taxes”), and whether these Taxes are imposed directly on you or on Rollbar. If your receipt of access to the Services, under this Agreement is subject to Taxes in any jurisdiction and you have not remitted the applicable Taxes to Rollbar, you will be responsible for the payment of such Taxes and any related penalties or interest to the relevant tax authority.</td> </tr> <tr> <td id="file-tos-diff-L204" class="blob-num js-line-number js-blob-rnum" data-line-number="204"></td> <td id="file-tos-diff-LC204" class="blob-code blob-code-inner js-file-line">114,115c94</td> </tr> <tr> <td id="file-tos-diff-L205" class="blob-num js-line-number js-blob-rnum" data-line-number="205"></td> <td id="file-tos-diff-LC205" class="blob-code blob-code-inner js-file-line">&lt; ## d. Effect on Termination</td> </tr> <tr> <td id="file-tos-diff-L206" class="blob-num js-line-number js-blob-rnum" data-line-number="206"></td> <td id="file-tos-diff-LC206" class="blob-code blob-code-inner js-file-line">&lt; Upon termination of this Agreement: (i) all rights and licenses granted will terminate immediately; (ii) any and all payment obligations, if any, will be due; and (iii) each party will promptly return to the other party all Confidential Information of such party in its possession, custody, or control. Neither party will be liable to the other party for damages of any sort resulting solely from the termination of this Agreement. Notwithstanding clause 8(e), Rollbar’s sole obligation as it relates to copies of, or references or links to, your Product will be to, upon written request from you, make commercially reasonable efforts, as determined in its sole discretion, to remove all such references and links.</td> </tr> <tr> <td id="file-tos-diff-L207" class="blob-num js-line-number js-blob-rnum" data-line-number="207"></td> <td id="file-tos-diff-LC207" class="blob-code blob-code-inner js-file-line">---</td> </tr> <tr> <td id="file-tos-diff-L208" class="blob-num js-line-number js-blob-rnum" data-line-number="208"></td> <td id="file-tos-diff-LC208" class="blob-code blob-code-inner js-file-line">&gt; 1. __California Residents__. The provider of Services is set forth herein. If you are a California resident, in accordance with Cal. Civ. Code §1789.3, you may report complaints to the Complaint Assistance Unit of the Division of Consumer Services of the California Department of Consumer Affairs by contacting them in writing at 1625 North Market Blvd., Suite N 112 Sacramento, CA 95834, or by telephone at (800) 952-5210 or (916) 445-1254.</td> </tr> <tr> <td id="file-tos-diff-L209" class="blob-num js-line-number js-blob-rnum" data-line-number="209"></td> <td id="file-tos-diff-LC209" class="blob-code blob-code-inner js-file-line">117,118d95</td> </tr> <tr> <td id="file-tos-diff-L210" class="blob-num js-line-number js-blob-rnum" data-line-number="210"></td> <td id="file-tos-diff-LC210" class="blob-code blob-code-inner js-file-line">&lt; ## e. Deletion of Data</td> </tr> <tr> <td id="file-tos-diff-L211" class="blob-num js-line-number js-blob-rnum" data-line-number="211"></td> <td id="file-tos-diff-LC211" class="blob-code blob-code-inner js-file-line">&lt; Rollbar will use reasonable efforts to delete your password, name, credit card information and all related information associated with or inside your Account (or any part thereof), excluding data related to past Transactions upon termination of this Agreement, or upon request.</td> </tr> <tr> <td id="file-tos-diff-L212" class="blob-num js-line-number js-blob-rnum" data-line-number="212"></td> <td id="file-tos-diff-LC212" class="blob-code blob-code-inner js-file-line">120,121c97</td> </tr> <tr> <td id="file-tos-diff-L213" class="blob-num js-line-number js-blob-rnum" data-line-number="213"></td> <td id="file-tos-diff-LC213" class="blob-code blob-code-inner js-file-line">&lt; ## f. Survival</td> </tr> <tr> <td id="file-tos-diff-L214" class="blob-num js-line-number js-blob-rnum" data-line-number="214"></td> <td id="file-tos-diff-LC214" class="blob-code blob-code-inner js-file-line">&lt; The rights and obligations of the parties set forth in this Section 8(f) (Survival) and Section 3 (Ownership), Section 4 (Fees and Payment Terms) to the extent of any outstanding fees, Section 5(a) (Marketing), Section 9 (Confidentiality), Section 10 (Disclaimer and Limitation of Liability), Section 11 (Indemnity), Section 12 (Governing Law, Arbitration, Class Action/Jury Waiver), Section 13 (General), and any right or obligation of the parties in this Agreement which, by its express terms or nature and context is intended to survive termination or expiration of this Agreement, will survive any such termination or expiration.</td> </tr> <tr> <td id="file-tos-diff-L215" class="blob-num js-line-number js-blob-rnum" data-line-number="215"></td> <td id="file-tos-diff-LC215" class="blob-code blob-code-inner js-file-line">---</td> </tr> <tr> <td id="file-tos-diff-L216" class="blob-num js-line-number js-blob-rnum" data-line-number="216"></td> <td id="file-tos-diff-LC216" class="blob-code blob-code-inner js-file-line">&gt; 1. **RELATIONSHIP**</td> </tr> <tr> <td id="file-tos-diff-L217" class="blob-num js-line-number js-blob-rnum" data-line-number="217"></td> <td id="file-tos-diff-LC217" class="blob-code blob-code-inner js-file-line">123c99</td> </tr> <tr> <td id="file-tos-diff-L218" class="blob-num js-line-number js-blob-rnum" data-line-number="218"></td> <td id="file-tos-diff-LC218" class="blob-code blob-code-inner js-file-line">&lt; # 9. CONFIDENTIALITY</td> </tr> <tr> <td id="file-tos-diff-L219" class="blob-num js-line-number js-blob-rnum" data-line-number="219"></td> <td id="file-tos-diff-LC219" class="blob-code blob-code-inner js-file-line">---</td> </tr> <tr> <td id="file-tos-diff-L220" class="blob-num js-line-number js-blob-rnum" data-line-number="220"></td> <td id="file-tos-diff-LC220" class="blob-code blob-code-inner js-file-line">&gt; 1. __Relationship of Parties__. The parties hereto are independent contractors. Nothing in this Agreement will be deemed to create an agency, employment, partnership, fiduciary, or joint venture relationship between the parties. Neither party is the representative of the other party for any purpose and neither party has the power or authority as agent, employee, or in any other capacity to represent, act for, bind, or otherwise create or assume any obligation on behalf of the other party for any purpose whatsoever.</td> </tr> <tr> <td id="file-tos-diff-L221" class="blob-num js-line-number js-blob-rnum" data-line-number="221"></td> <td id="file-tos-diff-LC221" class="blob-code blob-code-inner js-file-line">125,126c101</td> </tr> <tr> <td id="file-tos-diff-L222" class="blob-num js-line-number js-blob-rnum" data-line-number="222"></td> <td id="file-tos-diff-LC222" class="blob-code blob-code-inner js-file-line">&lt; ## a. Ownership</td> </tr> <tr> <td id="file-tos-diff-L223" class="blob-num js-line-number js-blob-rnum" data-line-number="223"></td> <td id="file-tos-diff-LC223" class="blob-code blob-code-inner js-file-line">&lt; “Confidential Information” means all written and oral information, disclosed by either party to the other, related to the operations of either party or a third party that has been identified as confidential or that by the nature of the information or the circumstances surrounding disclosure ought reasonably to be treated as confidential. The parties acknowledge that during the performance of this Agreement, each party will have access to certain of the other party’s Confidential Information. With the exception of Ideas (as defined in Section 3(b) Feedback above), which shall be considered proprietary to the receiving party, all Confidential Information is proprietary to the disclosing party or such third party, as applicable, and will remain the sole property of the disclosing party or such third party. Each party agrees as follows: (i) to use the Confidential Information only for the purposes described herein; (ii) that such party will not reproduce the Confidential Information and will hold in confidence and protect the Confidential Information from dissemination to, and use by, any third party; (iii) that, except as required in performance of a party’s obligations under this Agreement, neither party will create any derivative work from Confidential Information disclosed to such party by the other party; (iv) to restrict access to the Confidential Information to such of its personnel, agents and consultants, if any, who have a need to have access and who have been advised of and have agreed in writing or are otherwise bound to treat such information in accordance with the terms of this Agreement; and (v) to return or destroy all Confidential Information of the other party in its possession upon termination or expiration of this Agreement. In the event of any unauthorized disclosure or loss of Confidential Information, the receiving party will notify the disclosing party as soon as possible.</td> </tr> <tr> <td id="file-tos-diff-L224" class="blob-num js-line-number js-blob-rnum" data-line-number="224"></td> <td id="file-tos-diff-LC224" class="blob-code blob-code-inner js-file-line">---</td> </tr> <tr> <td id="file-tos-diff-L225" class="blob-num js-line-number js-blob-rnum" data-line-number="225"></td> <td id="file-tos-diff-LC225" class="blob-code blob-code-inner js-file-line">&gt; 1. __Marketing__. Unless you notify us in writing to the contrary, we may publicly refer to you, orally or in writing, as a User of the Service, and we may publish your name and logo on the Rollbar website or promotional materials. You grant us all necessary rights and licenses to do so.</td> </tr> <tr> <td id="file-tos-diff-L226" class="blob-num js-line-number js-blob-rnum" data-line-number="226"></td> <td id="file-tos-diff-LC226" class="blob-code blob-code-inner js-file-line">128,129c103</td> </tr> <tr> <td id="file-tos-diff-L227" class="blob-num js-line-number js-blob-rnum" data-line-number="227"></td> <td id="file-tos-diff-LC227" class="blob-code blob-code-inner js-file-line">&lt; ## b. Exceptions</td> </tr> <tr> <td id="file-tos-diff-L228" class="blob-num js-line-number js-blob-rnum" data-line-number="228"></td> <td id="file-tos-diff-LC228" class="blob-code blob-code-inner js-file-line">&lt; The foregoing provisions will not apply to Confidential Information that: (i) is or becomes generally publicly available or enters the public domain through no fault of the receiving party; (ii) is rightfully communicated to the receiving party by persons not bound by confidentiality obligations with respect thereto; (iii) is already in the receiving party’s possession free of any confidentiality obligations with respect thereto at the time of disclosure; (iv) is independently developed by the receiving party without use or reference to the Confidential Information of the disclosing party; or (v) is approved for release or disclosure by the disclosing party without restriction. Notwithstanding the foregoing, each party may disclose Confidential Information to the limited extent required (1) to comply with the order of a court or other governmental body or applicable law, provided the party making the disclosure pursuant to the order will first have given written notice to the other party and made a reasonable effort to obtain a protective order; or (2) to establish a party’s rights under this Agreement.</td> </tr> <tr> <td id="file-tos-diff-L229" class="blob-num js-line-number js-blob-rnum" data-line-number="229"></td> <td id="file-tos-diff-LC229" class="blob-code blob-code-inner js-file-line">---</td> </tr> <tr> <td id="file-tos-diff-L230" class="blob-num js-line-number js-blob-rnum" data-line-number="230"></td> <td id="file-tos-diff-LC230" class="blob-code blob-code-inner js-file-line">&gt; 1. __Independent Development__. You acknowledge and agree that Rollbar may be independently creating applications, content and other products and services that may be similar to or competitive with your Product and its content, and nothing in this Agreement will be construed as restricting or preventing Rollbar from creating and fully exploiting such applications, content and other items, without any obligation to you.</td> </tr> <tr> <td id="file-tos-diff-L231" class="blob-num js-line-number js-blob-rnum" data-line-number="231"></td> <td id="file-tos-diff-LC231" class="blob-code blob-code-inner js-file-line">131d104</td> </tr> <tr> <td id="file-tos-diff-L232" class="blob-num js-line-number js-blob-rnum" data-line-number="232"></td> <td id="file-tos-diff-LC232" class="blob-code blob-code-inner js-file-line">&lt; # 10. DISCLAIMER AND LIMITATION OF LIABILITY</td> </tr> <tr> <td id="file-tos-diff-L233" class="blob-num js-line-number js-blob-rnum" data-line-number="233"></td> <td id="file-tos-diff-LC233" class="blob-code blob-code-inner js-file-line">133,134c106</td> </tr> <tr> <td id="file-tos-diff-L234" class="blob-num js-line-number js-blob-rnum" data-line-number="234"></td> <td id="file-tos-diff-LC234" class="blob-code blob-code-inner js-file-line">&lt; ## a. Disclaimer</td> </tr> <tr> <td id="file-tos-diff-L235" class="blob-num js-line-number js-blob-rnum" data-line-number="235"></td> <td id="file-tos-diff-LC235" class="blob-code blob-code-inner js-file-line">&lt; THE SERVICES ARE PROVIDED “AS IS,” “WHERE IS,” “WITH ALL FAULTS” AND WITH NO WARRANTY, EXPRESS OR IMPLIED, OF ANY KIND. ROLLBAR EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES AND CONDITIONS, INCLUDING, BUT NOT LIMITED TO, ANY IMPLIED WARRANTY OR CONDITION OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AVAILABILITY, SECURITY, TITLE AND/ NON-INFRINGEMENT. SOME ASPECTS OF THE SERVICES ARE EXPERIMENTAL AND HAVE NOT BEEN TESTED IN ANY MANNER. WE DO NOT REPRESENT, WARRANT, OR MAKE ANY CONDITION THAT THE SERVICES ARE FREE OF INACCURACIES, ERRORS, BUGS, OR INTERRUPTIONS, OR ARE RELIABLE, ACCURATE, COMPLETE, OR OTHERWISE VALID. WE ARE NOT RESPONSIBLE FOR ANY CONTENT OR OTHER MATERIAL DOWNLOADED OR OTHERWISE OBTAINED THROUGH THE USE OF THE SERVICES, ALL OF WHICH IS OBTAINED AT YOUR OWN DISCRETION AND RISK. YOUR USE OF THE SERVICES ARE AT YOUR OWN DISCRETION AND RISK, AND YOU WILL BE SOLELY RESPONSIBLE FOR ANY DAMAGE THAT RESULTS FROM USE OF THE SERVICES INCLUDING, BUT NOT LIMITED TO, FOR ANY DAMAGE TO YOUR COMPUTER SYSTEM OR LOSS OF DATA. NO ADVICE OR INFORMATION, WHETHER ORAL OR WRITTEN, OBTAINED BY YOU FROM US OR THROUGH OR FROM OUR SERVICES WILL CREATE ANY WARRANTY OR CONDITION NOT EXPRESSLY STATED IN THE USER AGREEMENT.</td> </tr> <tr> <td id="file-tos-diff-L236" class="blob-num js-line-number js-blob-rnum" data-line-number="236"></td> <td id="file-tos-diff-LC236" class="blob-code blob-code-inner js-file-line">---</td> </tr> <tr> <td id="file-tos-diff-L237" class="blob-num js-line-number js-blob-rnum" data-line-number="237"></td> <td id="file-tos-diff-LC237" class="blob-code blob-code-inner js-file-line">&gt; 1. **PRIVACY**</td> </tr> <tr> <td id="file-tos-diff-L238" class="blob-num js-line-number js-blob-rnum" data-line-number="238"></td> <td id="file-tos-diff-LC238" class="blob-code blob-code-inner js-file-line">136c108</td> </tr> <tr> <td id="file-tos-diff-L239" class="blob-num js-line-number js-blob-rnum" data-line-number="239"></td> <td id="file-tos-diff-LC239" class="blob-code blob-code-inner js-file-line">&lt; The Services are controlled and operated from facilities in the United States in the state of California. Rollbar makes no representations that the Services are appropriate or available for use in other locations. Those who access or use the Services from other jurisdictions do so at their own volition and are entirely responsible for compliance with all applicable United States and local laws and regulations, including but not limited to export and import regulations. You may not use the Services if you are a resident of a country embargoed by the United States, or are a foreign person or entity blocked or denied by the United States government. Unless otherwise explicitly stated, all materials found on the Services are solely directed to individuals, companies, or other entities located in the United States.</td> </tr> <tr> <td id="file-tos-diff-L240" class="blob-num js-line-number js-blob-rnum" data-line-number="240"></td> <td id="file-tos-diff-LC240" class="blob-code blob-code-inner js-file-line">---</td> </tr> <tr> <td id="file-tos-diff-L241" class="blob-num js-line-number js-blob-rnum" data-line-number="241"></td> <td id="file-tos-diff-LC241" class="blob-code blob-code-inner js-file-line">&gt; We care about the privacy of our Users. You understand that by using the Services you consent to the collection, use, and disclosure of your personally identifiable information and aggregate data as set forth in our [_Privacy Policy_](https://rollbar.com/privacy/), and to have your personally identifiable information collected, used, transferred to, and processed in the United States. You further agree to obtain and maintain any required consents necessary to permit the processing of any data you provide to us under this Agreement, including but not limited to any data that either on its own or in combination with other data could reasonably identify an individual.</td> </tr> <tr> <td id="file-tos-diff-L242" class="blob-num js-line-number js-blob-rnum" data-line-number="242"></td> <td id="file-tos-diff-LC242" class="blob-code blob-code-inner js-file-line">138,139d109</td> </tr> <tr> <td id="file-tos-diff-L243" class="blob-num js-line-number js-blob-rnum" data-line-number="243"></td> <td id="file-tos-diff-LC243" class="blob-code blob-code-inner js-file-line">&lt; ## b. Limitation of Liability</td> </tr> <tr> <td id="file-tos-diff-L244" class="blob-num js-line-number js-blob-rnum" data-line-number="244"></td> <td id="file-tos-diff-LC244" class="blob-code blob-code-inner js-file-line">&lt; ROLLBAR WILL NOT, UNDER ANY CIRCUMSTANCES, BE LIABLE TO YOU FOR ANY INCIDENTAL, CONSEQUENTIAL, INDIRECT, PUNITIVE, SPECIAL, OR RELIANCE DAMAGES RELATED TO THIS AGREEMENT OR THE SERVICE. CONSEQUENTIAL DAMAGES INCLUDE, BUT ARE NOT LIMITED TO, LOST PROFITS, LOST REVENUES AND LOST BUSINESS OPPORTUNITIES, WHETHER YOU WERE OR SHOULD HAVE BEEN AWARE OF THE POSSIBILITY OF THESE DAMAGES. IN NO EVENT WILL OUR AGGREGATE LIABILITY UNDER THIS AGREEMENT OR RELATED TO THE SERVICES EXCEED THE AMOUNTS PAID BY YOU TO ROLLBAR DURING THE SIX (6) MONTH PERIOD IMMEDIATELY PRECEDING THE ACT(S) GIVING RISE TO LIABILITY HEREUNDER. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF CERTAIN WARRANTIES OR THE LIMITATION OR EXCLUSION OF LIABILITY FOR INCIDENTAL OR CONSEQUENTIAL DAMAGES. THE PARTIES HAVE NEGOTIATED THIS AGREEMENT WITH DUE REGARD FOR THE BUSINESS RISK ASSOCIATED WITH THE ARRANGEMENTS DESCRIBED IN THIS AGREEMENT.</td> </tr> <tr> <td id="file-tos-diff-L245" class="blob-num js-line-number js-blob-rnum" data-line-number="245"></td> <td id="file-tos-diff-LC245" class="blob-code blob-code-inner js-file-line">141c111</td> </tr> <tr> <td id="file-tos-diff-L246" class="blob-num js-line-number js-blob-rnum" data-line-number="246"></td> <td id="file-tos-diff-LC246" class="blob-code blob-code-inner js-file-line">&lt; # 11. INDEMNITY</td> </tr> <tr> <td id="file-tos-diff-L247" class="blob-num js-line-number js-blob-rnum" data-line-number="247"></td> <td id="file-tos-diff-LC247" class="blob-code blob-code-inner js-file-line">---</td> </tr> <tr> <td id="file-tos-diff-L248" class="blob-num js-line-number js-blob-rnum" data-line-number="248"></td> <td id="file-tos-diff-LC248" class="blob-code blob-code-inner js-file-line">&gt; 1. **SECURITY**</td> </tr> <tr> <td id="file-tos-diff-L249" class="blob-num js-line-number js-blob-rnum" data-line-number="249"></td> <td id="file-tos-diff-LC249" class="blob-code blob-code-inner js-file-line">143,144c113</td> </tr> <tr> <td id="file-tos-diff-L250" class="blob-num js-line-number js-blob-rnum" data-line-number="250"></td> <td id="file-tos-diff-LC250" class="blob-code blob-code-inner js-file-line">&lt; ## a. By You</td> </tr> <tr> <td id="file-tos-diff-L251" class="blob-num js-line-number js-blob-rnum" data-line-number="251"></td> <td id="file-tos-diff-LC251" class="blob-code blob-code-inner js-file-line">&lt; You will defend, indemnify and hold harmless Rollbar and its affiliates, and their respective directors, officers, agents, licensors, and other partners and employees from and against any third-party claim arising from or in any way related to your Product, your use of the Service, or your breach of any obligation herein, including any liability or expense arising from all claims, losses, damages (actual and consequential), suits, judgments, litigation costs and attorneys’ fees, of every kind and nature.</td> </tr> <tr> <td id="file-tos-diff-L252" class="blob-num js-line-number js-blob-rnum" data-line-number="252"></td> <td id="file-tos-diff-LC252" class="blob-code blob-code-inner js-file-line">---</td> </tr> <tr> <td id="file-tos-diff-L253" class="blob-num js-line-number js-blob-rnum" data-line-number="253"></td> <td id="file-tos-diff-LC253" class="blob-code blob-code-inner js-file-line">&gt; Rollbar cares about the integrity and security of the data you provide to us and uses commercially reasonable means to protect your data. However, we cannot guarantee that unauthorized third parties will never be able to defeat our security measures or use your data for improper purposes. You acknowledge that you provide your data to us at your own risk. To better understand the steps we take to protect your data, please review our [_Security and Compliance_](https://rollbar.com/docs/security/) measures available at [_https://rollbar.com/docs/security/_](https://rollbar.com/docs/security/).</td> </tr> <tr> <td id="file-tos-diff-L254" class="blob-num js-line-number js-blob-rnum" data-line-number="254"></td> <td id="file-tos-diff-LC254" class="blob-code blob-code-inner js-file-line">146,147d114</td> </tr> <tr> <td id="file-tos-diff-L255" class="blob-num js-line-number js-blob-rnum" data-line-number="255"></td> <td id="file-tos-diff-LC255" class="blob-code blob-code-inner js-file-line">&lt; ## b. Options</td> </tr> <tr> <td id="file-tos-diff-L256" class="blob-num js-line-number js-blob-rnum" data-line-number="256"></td> <td id="file-tos-diff-LC256" class="blob-code blob-code-inner js-file-line">&lt; In the event any infringement claim, action or allegation is brought or threatened against Rollbar, we may, at our sole option and expense: (i) procure for you the right to continue use of the Services or infringing part thereof; (ii) modify or amend the Services or infringing part thereof, or replace the Services or infringing part thereof with similar functionality; or (iii) if neither of the preceding is commercially practicable terminate the Agreement and the licenses granted herein.</td> </tr> <tr> <td id="file-tos-diff-L257" class="blob-num js-line-number js-blob-rnum" data-line-number="257"></td> <td id="file-tos-diff-LC257" class="blob-code blob-code-inner js-file-line">149,150c116</td> </tr> <tr> <td id="file-tos-diff-L258" class="blob-num js-line-number js-blob-rnum" data-line-number="258"></td> <td id="file-tos-diff-LC258" class="blob-code blob-code-inner js-file-line">&lt; ## c. Exclusions</td> </tr> <tr> <td id="file-tos-diff-L259" class="blob-num js-line-number js-blob-rnum" data-line-number="259"></td> <td id="file-tos-diff-LC259" class="blob-code blob-code-inner js-file-line">&lt; This indemnification obligation will not apply if the infringement arises as a result of (i) any use of the Services in a manner other than as specified in this Agreement, (ii) any use of the Services in combination with other products, equipment, devices, systems, or data not supplied by us to the extent such claim is directed against such combination, or (iii) any alteration, modification, or customization of the Services made by any party other than Rollbar or our authorized representative if such infringement would not have occurred without such alteration, modification or customization.</td> </tr> <tr> <td id="file-tos-diff-L260" class="blob-num js-line-number js-blob-rnum" data-line-number="260"></td> <td id="file-tos-diff-LC260" class="blob-code blob-code-inner js-file-line">---</td> </tr> <tr> <td id="file-tos-diff-L261" class="blob-num js-line-number js-blob-rnum" data-line-number="261"></td> <td id="file-tos-diff-LC261" class="blob-code blob-code-inner js-file-line">&gt; 1. **TERM AND TERMINATION**</td> </tr> <tr> <td id="file-tos-diff-L262" class="blob-num js-line-number js-blob-rnum" data-line-number="262"></td> <td id="file-tos-diff-LC262" class="blob-code blob-code-inner js-file-line">152,161c118,124</td> </tr> <tr> <td id="file-tos-diff-L263" class="blob-num js-line-number js-blob-rnum" data-line-number="263"></td> <td id="file-tos-diff-LC263" class="blob-code blob-code-inner js-file-line">&lt; #12. GOVERNING LAW, DISPUTE RESOLUTION, AND CLASS ACTION/JURY WAIVER</td> </tr> <tr> <td id="file-tos-diff-L264" class="blob-num js-line-number js-blob-rnum" data-line-number="264"></td> <td id="file-tos-diff-LC264" class="blob-code blob-code-inner js-file-line">&lt; </td> </tr> <tr> <td id="file-tos-diff-L265" class="blob-num js-line-number js-blob-rnum" data-line-number="265"></td> <td id="file-tos-diff-LC265" class="blob-code blob-code-inner js-file-line">&lt; ## a. Governing Law</td> </tr> <tr> <td id="file-tos-diff-L266" class="blob-num js-line-number js-blob-rnum" data-line-number="266"></td> <td id="file-tos-diff-LC266" class="blob-code blob-code-inner js-file-line">&lt; You agree that: (i) the Services shall be deemed solely based in California; and (ii) the Services shall be deemed a passive one that does not give rise to personal jurisdiction over us, either specific or general, in jurisdictions other than California. This Agreement shall be governed by the internal substantive laws of the State of California, without respect to its conflict of laws principles. The parties acknowledge that this Agreement evidences a transaction involving interstate commerce. Notwithstanding the preceding sentences with respect to the substantive law, any arbitration conducted pursuant to the terms of this Agreement shall be governed by the Federal Arbitration Act (9 U.S.C. §§ 1-16). The application of the United Nations Convention on Contracts for the International Sale of Goods is expressly excluded. You agree to submit to the personal jurisdiction of the federal and state courts located in San Francisco County, California for any actions for which we retain the right to seek injunctive or other equitable relief in a court of competent jurisdiction to prevent the actual or threatened infringement, misappropriation or violation of a our copyrights, trademarks, trade secrets, patents, or other intellectual property or proprietary rights, as set forth in the Arbitration provision below, including any provisional relief required to prevent irreparable harm. You agree that San Francisco County, California is the proper forum for any appeals of an arbitration award or for trial court proceedings in the event that the arbitration provision below is found to be unenforceable.</td> </tr> <tr> <td id="file-tos-diff-L267" class="blob-num js-line-number js-blob-rnum" data-line-number="267"></td> <td id="file-tos-diff-LC267" class="blob-code blob-code-inner js-file-line">&lt; </td> </tr> <tr> <td id="file-tos-diff-L268" class="blob-num js-line-number js-blob-rnum" data-line-number="268"></td> <td id="file-tos-diff-LC268" class="blob-code blob-code-inner js-file-line">&lt; ## b. Dispute Resolution</td> </tr> <tr> <td id="file-tos-diff-L269" class="blob-num js-line-number js-blob-rnum" data-line-number="269"></td> <td id="file-tos-diff-LC269" class="blob-code blob-code-inner js-file-line">&lt; READ THIS SECTION CAREFULLY BECAUSE IT REQUIRES THE PARTIES TO ARBITRATE THEIR DISPUTES AND LIMITS THE MANNER IN WHICH YOU CAN SEEK RELIEF FROM ROLLBAR. For any dispute with Rollbar, you agree to first [contact us](https://rollbar.com/contact/) and attempt to resolve the dispute with us informally. In the unlikely event that Rollbar has not been able to resolve a dispute it has with you after sixty (60) days, we each agree to resolve any claim, dispute, or controversy (excluding any claims for injunctive or other equitable relief as provided below) arising out of or in connection with or relating to this Agreement, or the breach or alleged breach thereof (collectively, “Claims”), by binding arbitration by JAMS, under the Optional Expedited Arbitration Procedures then in effect for JAMS, except as provided herein. JAMS may be contacted at [www.jamsadr.com](http://www.jamsadr.com/). The arbitration will be conducted in San Francisco County, California, unless you and Rollbar agree otherwise. Each party will be responsible for paying any JAMS filing, administrative and arbitrator fees in accordance with JAMS rules, and the award rendered by the arbitrator shall include costs of arbitration, reasonable attorneys’ fees and reasonable costs for expert and other witnesses. Any judgment on the award rendered by the arbitrator may be entered in any court of competent jurisdiction. Nothing in this Section shall be deemed as preventing Rollbar from seeking injunctive or other equitable relief from the courts as necessary to prevent the actual or threatened infringement, misappropriation, or violation of our data security, Intellectual Property Rights or other proprietary rights.</td> </tr> <tr> <td id="file-tos-diff-L270" class="blob-num js-line-number js-blob-rnum" data-line-number="270"></td> <td id="file-tos-diff-LC270" class="blob-code blob-code-inner js-file-line">&lt; </td> </tr> <tr> <td id="file-tos-diff-L271" class="blob-num js-line-number js-blob-rnum" data-line-number="271"></td> <td id="file-tos-diff-LC271" class="blob-code blob-code-inner js-file-line">&lt; ## c. Class Action/Jury Trial Waiver</td> </tr> <tr> <td id="file-tos-diff-L272" class="blob-num js-line-number js-blob-rnum" data-line-number="272"></td> <td id="file-tos-diff-LC272" class="blob-code blob-code-inner js-file-line">&lt; WITH RESPECT TO ALL PERSONS AND ENTITIES, REGARDLESS OF WHETHER THEY HAVE OBTAINED OR USED THE SERVICES FOR PERSONAL, COMMERCIAL OR OTHER PURPOSES, ALL CLAIMS MUST BE BROUGHT IN THE PARTIES’ INDIVIDUAL CAPACITY, AND NOT AS A PLAINTIFF OR CLASS MEMBER IN ANY PURPORTED CLASS ACTION, COLLECTIVE ACTION, PRIVATE ATTORNEY GENERAL ACTION OR OTHER REPRESENTATIVE PROCEEDING. THIS WAIVER APPLIES TO CLASS ARBITRATION, AND, UNLESS WE AGREE OTHERWISE, THE ARBITRATOR MAY NOT CONSOLIDATE MORE THAN ONE PERSON’S CLAIMS. YOU AGREE THAT, BY ENTERING INTO THIS AGREEMENT, YOU AND ROLLBAR ARE EACH WAIVING THE RIGHT TO A TRIAL BY JURY OR TO PARTICIPATE IN A CLASS ACTION, COLLECTIVE ACTION, PRIVATE ATTORNEY GENERAL ACTION, OR OTHER REPRESENTATIVE PROCEEDING OF ANY KIND. </td> </tr> <tr> <td id="file-tos-diff-L273" class="blob-num js-line-number js-blob-rnum" data-line-number="273"></td> <td id="file-tos-diff-LC273" class="blob-code blob-code-inner js-file-line">---</td> </tr> <tr> <td id="file-tos-diff-L274" class="blob-num js-line-number js-blob-rnum" data-line-number="274"></td> <td id="file-tos-diff-LC274" class="blob-code blob-code-inner js-file-line">&gt; 1. __Term__. You agree that this Agreement will be deemed to be in effect upon the date on which you accept this Agreement, in accordance with the preamble and continue through the term of your initial subscription period.</td> </tr> <tr> <td id="file-tos-diff-L275" class="blob-num js-line-number js-blob-rnum" data-line-number="275"></td> <td id="file-tos-diff-LC275" class="blob-code blob-code-inner js-file-line">&gt; </td> </tr> <tr> <td id="file-tos-diff-L276" class="blob-num js-line-number js-blob-rnum" data-line-number="276"></td> <td id="file-tos-diff-LC276" class="blob-code blob-code-inner js-file-line">&gt; 1. __Suspension and Termination__. We may change, suspend, or discontinue the availability or any functionality of the Services, or any aspect of your access to the Services, at any time without notice to you and without incurring any liability to you. We may also impose limits on certain features and services or restrict your access to part or all of the Services without notice to you and without incurring any liability to you. Furthermore, Rollbar may limit, suspend, or terminate your use of the Services (and your rights under this Agreement) at any time. In addition, this Agreement will terminate automatically and without notice immediately upon any breach of the terms of this Agreement by you.</td> </tr> <tr> <td id="file-tos-diff-L277" class="blob-num js-line-number js-blob-rnum" data-line-number="277"></td> <td id="file-tos-diff-LC277" class="blob-code blob-code-inner js-file-line">&gt; </td> </tr> <tr> <td id="file-tos-diff-L278" class="blob-num js-line-number js-blob-rnum" data-line-number="278"></td> <td id="file-tos-diff-LC278" class="blob-code blob-code-inner js-file-line">&gt; 1. __Your Termination__. You may terminate this Agreement for any reason or no reason at all, at your convenience, effective as of the last day of the then-current term by providing written notice to Rollbar of your intent to terminate this Agreement and upon the effective date of your termination, ceasing your use of the Service. Notwithstanding any other provisions, Service Subscription Fees are non-refundable.</td> </tr> <tr> <td id="file-tos-diff-L279" class="blob-num js-line-number js-blob-rnum" data-line-number="279"></td> <td id="file-tos-diff-LC279" class="blob-code blob-code-inner js-file-line">&gt; </td> </tr> <tr> <td id="file-tos-diff-L280" class="blob-num js-line-number js-blob-rnum" data-line-number="280"></td> <td id="file-tos-diff-LC280" class="blob-code blob-code-inner js-file-line">&gt; 1. __Effect on Termination__. Upon termination of this Agreement: (i) all rights and licenses granted will terminate immediately; (ii) any and all payment obligations, if any, will be due; and (iii) each party will promptly return to the other party all Confidential Information of such party in its possession, custody, or control. Neither party will be liable to the other party for damages of any sort resulting solely from the termination of this Agreement. Notwithstanding any other provisions, Rollbar’s sole obligation as it relates to copies of, or references or links to, your Product will be to, upon written request from you, make commercially reasonable efforts, as determined in its sole discretion, to remove all such references and links.</td> </tr> <tr> <td id="file-tos-diff-L281" class="blob-num js-line-number js-blob-rnum" data-line-number="281"></td> <td id="file-tos-diff-LC281" class="blob-code blob-code-inner js-file-line">163c126</td> </tr> <tr> <td id="file-tos-diff-L282" class="blob-num js-line-number js-blob-rnum" data-line-number="282"></td> <td id="file-tos-diff-LC282" class="blob-code blob-code-inner js-file-line">&lt; # 13. GENERAL</td> </tr> <tr> <td id="file-tos-diff-L283" class="blob-num js-line-number js-blob-rnum" data-line-number="283"></td> <td id="file-tos-diff-LC283" class="blob-code blob-code-inner js-file-line">---</td> </tr> <tr> <td id="file-tos-diff-L284" class="blob-num js-line-number js-blob-rnum" data-line-number="284"></td> <td id="file-tos-diff-LC284" class="blob-code blob-code-inner js-file-line">&gt; 1. __Deletion of Data__. Rollbar will use reasonable efforts to delete your password, name, credit card information and all related information associated with or inside your account (or any part thereof), excluding data related to past transactions upon termination of this Agreement, or upon request.</td> </tr> <tr> <td id="file-tos-diff-L285" class="blob-num js-line-number js-blob-rnum" data-line-number="285"></td> <td id="file-tos-diff-LC285" class="blob-code blob-code-inner js-file-line">165,166c128,133</td> </tr> <tr> <td id="file-tos-diff-L286" class="blob-num js-line-number js-blob-rnum" data-line-number="286"></td> <td id="file-tos-diff-LC286" class="blob-code blob-code-inner js-file-line">&lt; ## Entire Agreement; Amendment</td> </tr> <tr> <td id="file-tos-diff-L287" class="blob-num js-line-number js-blob-rnum" data-line-number="287"></td> <td id="file-tos-diff-LC287" class="blob-code blob-code-inner js-file-line">&lt; This Agreement, including all documents referenced herein, constitutes the entire agreement between you and Rollbar and governs your use of the Service. If, through accessing or using the Service, you utilize or obtain any product or service from a third party, you may additionally be subject to such third party&#39;s terms and conditions applicable thereto, and this Agreement will not affect your legal relationship with such third party.</td> </tr> <tr> <td id="file-tos-diff-L288" class="blob-num js-line-number js-blob-rnum" data-line-number="288"></td> <td id="file-tos-diff-LC288" class="blob-code blob-code-inner js-file-line">---</td> </tr> <tr> <td id="file-tos-diff-L289" class="blob-num js-line-number js-blob-rnum" data-line-number="289"></td> <td id="file-tos-diff-LC289" class="blob-code blob-code-inner js-file-line">&gt; 1. __Survival__. The rights and obligations of the parties set forth in this Section 9(f) (*Survival*) and Section 4 (*Ownership*), Section 5 (*Fees and Payment Terms*) to the extent of any outstanding fees, Section 6 (*Relationship*), Section 10 (Confidentiality), Section 11 (*Disclaimer and Limitation of Liability*), Section 12 *(Indemnity*), Section 13 (*Governing Law, Arbitration, Class Action/Jury Waiver*), Section 14 (*General*), and any right or obligation of the parties in this Agreement which, by its express terms or nature and context is *intended to survive termination* or expiration of this Agreement, will survive any such termination or expiration.</td> </tr> <tr> <td id="file-tos-diff-L290" class="blob-num js-line-number js-blob-rnum" data-line-number="290"></td> <td id="file-tos-diff-LC290" class="blob-code blob-code-inner js-file-line">&gt; </td> </tr> <tr> <td id="file-tos-diff-L291" class="blob-num js-line-number js-blob-rnum" data-line-number="291"></td> <td id="file-tos-diff-LC291" class="blob-code blob-code-inner js-file-line">&gt; </td> </tr> <tr> <td id="file-tos-diff-L292" class="blob-num js-line-number js-blob-rnum" data-line-number="292"></td> <td id="file-tos-diff-LC292" class="blob-code blob-code-inner js-file-line">&gt; 1. **CONFIDENTIALITY**</td> </tr> <tr> <td id="file-tos-diff-L293" class="blob-num js-line-number js-blob-rnum" data-line-number="293"></td> <td id="file-tos-diff-LC293" class="blob-code blob-code-inner js-file-line">&gt; </td> </tr> <tr> <td id="file-tos-diff-L294" class="blob-num js-line-number js-blob-rnum" data-line-number="294"></td> <td id="file-tos-diff-LC294" class="blob-code blob-code-inner js-file-line">&gt; 1. __Ownership__. “Confidential Information” means all written and oral information, disclosed by either party to the other, related to the operations of either party or a third party that has been identified as confidential or that by the nature of the information or the circumstances surrounding disclosure ought reasonably to be treated as confidential. The parties acknowledge that during the performance of this Agreement, each party will have access to certain of the other party’s Confidential Information. With the exception of Ideas (as defined in Section 3(b) *Feedback* above), which shall be considered proprietary to the receiving party, all Confidential Information is proprietary to the disclosing party or such third party, as applicable, and will remain the sole property of the disclosing party or such third party. Each party agrees as follows: (i) to use the Confidential Information only for the purposes described herein; (ii) that such party will not reproduce the Confidential Information and will hold in confidence and protect the Confidential Information from dissemination to, and use by, any third party; (iii) that, except as required in performance of a party’s obligations under this Agreement, neither party will create any derivative work from Confidential Information disclosed to such party by the other party; (iv) to restrict access to the Confidential Information to such of its personnel, agents and consultants, if any, who have a need to have access and who have been advised of and have agreed in writing or are otherwise bound to treat such information in accordance with the terms of this Agreement; and (v) to return or destroy all Confidential Information of the other party in its possession upon termination or expiration of this Agreement. In the event of any unauthorized disclosure or loss of Confidential Information, the receiving party will notify the disclosing party as soon as possible.</td> </tr> <tr> <td id="file-tos-diff-L295" class="blob-num js-line-number js-blob-rnum" data-line-number="295"></td> <td id="file-tos-diff-LC295" class="blob-code blob-code-inner js-file-line">168,169c135,167</td> </tr> <tr> <td id="file-tos-diff-L296" class="blob-num js-line-number js-blob-rnum" data-line-number="296"></td> <td id="file-tos-diff-LC296" class="blob-code blob-code-inner js-file-line">&lt; ## a. Severability</td> </tr> <tr> <td id="file-tos-diff-L297" class="blob-num js-line-number js-blob-rnum" data-line-number="297"></td> <td id="file-tos-diff-LC297" class="blob-code blob-code-inner js-file-line">&lt; If any term or provision of this Agreement is determined to be illegal, unenforceable, or invalid in whole or in part for any reason, such term or provision will be changed and interpreted to accomplish the objectives of such provision to the greatest extent possible under applicable law and the remaining provisions will continue in full force and effect.</td> </tr> <tr> <td id="file-tos-diff-L298" class="blob-num js-line-number js-blob-rnum" data-line-number="298"></td> <td id="file-tos-diff-LC298" class="blob-code blob-code-inner js-file-line">---</td> </tr> <tr> <td id="file-tos-diff-L299" class="blob-num js-line-number js-blob-rnum" data-line-number="299"></td> <td id="file-tos-diff-LC299" class="blob-code blob-code-inner js-file-line">&gt; 1. __Exceptions__. The foregoing provisions will not apply to Confidential Information that: (i) is or becomes generally publicly available or enters the public domain through no fault of the receiving party; (ii) is rightfully communicated to the receiving party by persons not bound by confidentiality obligations with respect thereto; (iii) is already in the receiving party’s possession free of any confidentiality obligations with respect thereto at the time of disclosure; (iv) is independently developed by the receiving party without use or reference to the Confidential Information of the disclosing party; or (v) is approved for release or disclosure by the disclosing party without restriction. Notwithstanding the foregoing, each party may disclose Confidential Information to the limited extent required (1) to comply with the order of a court or other governmental body or applicable law, provided the party making the disclosure pursuant to the order will first have given written notice to the other party and made a reasonable effort to obtain a protective order; or (2) to establish a party’s rights under this Agreement.</td> </tr> <tr> <td id="file-tos-diff-L300" class="blob-num js-line-number js-blob-rnum" data-line-number="300"></td> <td id="file-tos-diff-LC300" class="blob-code blob-code-inner js-file-line">&gt; </td> </tr> <tr> <td id="file-tos-diff-L301" class="blob-num js-line-number js-blob-rnum" data-line-number="301"></td> <td id="file-tos-diff-LC301" class="blob-code blob-code-inner js-file-line">&gt; </td> </tr> <tr> <td id="file-tos-diff-L302" class="blob-num js-line-number js-blob-rnum" data-line-number="302"></td> <td id="file-tos-diff-LC302" class="blob-code blob-code-inner js-file-line">&gt; 3. **DISCLAIMER AND LIMITATION OF LIABILITY**</td> </tr> <tr> <td id="file-tos-diff-L303" class="blob-num js-line-number js-blob-rnum" data-line-number="303"></td> <td id="file-tos-diff-LC303" class="blob-code blob-code-inner js-file-line">&gt; </td> </tr> <tr> <td id="file-tos-diff-L304" class="blob-num js-line-number js-blob-rnum" data-line-number="304"></td> <td id="file-tos-diff-LC304" class="blob-code blob-code-inner js-file-line">&gt; 1. __Disclaimer__. THE SERVICES ARE PROVIDED “AS IS,” “WHERE IS,” “WITH ALL FAULTS” AND WITH NO WARRANTY, EXPRESS OR IMPLIED, OF ANY KIND. ROLLBAR EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES AND CONDITIONS, INCLUDING, BUT NOT LIMITED TO, ANY IMPLIED WARRANTY OR CONDITION OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AVAILABILITY, SECURITY, TITLE AND/OR NON-INFRINGEMENT. SOME ASPECTS OF THE SERVICES ARE EXPERIMENTAL AND HAVE NOT BEEN TESTED IN ANY MANNER. WE DO NOT REPRESENT, WARRANT, OR MAKE ANY CONDITION THAT THE SERVICES ARE FREE OF INACCURACIES, ERRORS, BUGS, OR INTERRUPTIONS, OR ARE RELIABLE, ACCURATE, COMPLETE, OR OTHERWISE VALID. WE ARE NOT RESPONSIBLE FOR ANY CONTENT OR OTHER MATERIAL DOWNLOADED OR OTHERWISE OBTAINED THROUGH THE USE OF THE SERVICES, ALL OF WHICH IS OBTAINED AT YOUR OWN DISCRETION AND RISK. YOUR USE OF THE SERVICES ARE AT YOUR OWN DISCRETION AND RISK, AND YOU WILL BE SOLELY RESPONSIBLE FOR ANY DAMAGE THAT RESULTS FROM USE OF THE SERVICES INCLUDING, BUT NOT LIMITED TO, FOR ANY DAMAGE TO YOUR COMPUTER SYSTEM OR LOSS OF DATA. NO ADVICE OR INFORMATION, WHETHER ORAL OR WRITTEN, OBTAINED BY YOU FROM US OR THROUGH OR FROM OUR SERVICES WILL CREATE ANY WARRANTY OR CONDITION NOT EXPRESSLY STATED IN THE USER AGREEMENT.</td> </tr> <tr> <td id="file-tos-diff-L305" class="blob-num js-line-number js-blob-rnum" data-line-number="305"></td> <td id="file-tos-diff-LC305" class="blob-code blob-code-inner js-file-line">&gt; </td> </tr> <tr> <td id="file-tos-diff-L306" class="blob-num js-line-number js-blob-rnum" data-line-number="306"></td> <td id="file-tos-diff-LC306" class="blob-code blob-code-inner js-file-line">&gt; The Services are controlled and operated from facilities in the United States in the state of California. Rollbar makes no representations that the Services are appropriate or available for use in other locations. Those who access or use the Services from other jurisdictions do so at their own volition and are entirely responsible for compliance with all applicable United States and local laws and regulations, including but not limited to export and import regulations. You may not use the Services if you are a resident of a country embargoed by the United States, or are a foreign person or entity blocked or denied by the United States government. Unless otherwise explicitly stated, all materials found on the Services are solely directed to individuals, companies, or other entities located in the United States.</td> </tr> <tr> <td id="file-tos-diff-L307" class="blob-num js-line-number js-blob-rnum" data-line-number="307"></td> <td id="file-tos-diff-LC307" class="blob-code blob-code-inner js-file-line">&gt; </td> </tr> <tr> <td id="file-tos-diff-L308" class="blob-num js-line-number js-blob-rnum" data-line-number="308"></td> <td id="file-tos-diff-LC308" class="blob-code blob-code-inner js-file-line">&gt; 1. __Limitation of Liability__. ROLLBAR WILL NOT, UNDER ANY CIRCUMSTANCES, BE LIABLE TO YOU FOR ANY INCIDENTAL, CONSEQUENTIAL, INDIRECT, PUNITIVE, SPECIAL, OR RELIANCE DAMAGES RELATED TO THIS AGREEMENT OR THE SERVICES. CONSEQUENTIAL DAMAGES INCLUDE, BUT ARE NOT LIMITED TO, LOST PROFITS, LOST REVENUES AND LOST BUSINESS OPPORTUNITIES, WHETHER THE PARTIES WERE OR SHOULD HAVE BEEN AWARE OF THE POSSIBILITY OF THESE DAMAGES. IN NO EVENT WILL OUR AGGREGATE LIABILITY UNDER THIS AGREEMENT OR RELATED TO THE SERVICES EXCEED THE AMOUNTS PAID BY YOU TO ROLLBAR DURING THE SIX (6) MONTH PERIOD IMMEDIATELY PRECEDING THE ACT(S) GIVING RISE TO LIABILITY HEREUNDER. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF CERTAIN WARRANTIES OR THE LIMITATION OR EXCLUSION OF LIABILITY FOR INCIDENTAL OR CONSEQUENTIAL DAMAGES. YOU ACKNOWLEDGE THAT THE FOREGOING LIMITATIONS ARE AN ESSENTIAL ELEMENT OF THIS AGREEMENT AND THAT, IN THE ABSENCE OF SUCH LIMITATIONS, THE FEES CHARGED BY ROLLBAR FOR, OR THE CONDITIONS UNDER WHICH ROLLBAR PROVIDES, THE SERVICES WOULD HAVE BEEN DIFFERENT.</td> </tr> <tr> <td id="file-tos-diff-L309" class="blob-num js-line-number js-blob-rnum" data-line-number="309"></td> <td id="file-tos-diff-LC309" class="blob-code blob-code-inner js-file-line">&gt; </td> </tr> <tr> <td id="file-tos-diff-L310" class="blob-num js-line-number js-blob-rnum" data-line-number="310"></td> <td id="file-tos-diff-LC310" class="blob-code blob-code-inner js-file-line">&gt; </td> </tr> <tr> <td id="file-tos-diff-L311" class="blob-num js-line-number js-blob-rnum" data-line-number="311"></td> <td id="file-tos-diff-LC311" class="blob-code blob-code-inner js-file-line">&gt; 1. **INDEMNITY**</td> </tr> <tr> <td id="file-tos-diff-L312" class="blob-num js-line-number js-blob-rnum" data-line-number="312"></td> <td id="file-tos-diff-LC312" class="blob-code blob-code-inner js-file-line">&gt; </td> </tr> <tr> <td id="file-tos-diff-L313" class="blob-num js-line-number js-blob-rnum" data-line-number="313"></td> <td id="file-tos-diff-LC313" class="blob-code blob-code-inner js-file-line">&gt; 1. __By You__. You will defend, indemnify and hold harmless Rollbar and its affiliates, and their respective directors, officers, agents, licensors, and other partners and employees from and against any third-party claim arising from or in any way related to your Product, your use of the Services, or your breach of any obligation herein, including any liability or expense arising from all claims, losses, damages (actual and consequential), suits, judgments, litigation costs and attorneys’ fees, of every kind and nature.</td> </tr> <tr> <td id="file-tos-diff-L314" class="blob-num js-line-number js-blob-rnum" data-line-number="314"></td> <td id="file-tos-diff-LC314" class="blob-code blob-code-inner js-file-line">&gt; </td> </tr> <tr> <td id="file-tos-diff-L315" class="blob-num js-line-number js-blob-rnum" data-line-number="315"></td> <td id="file-tos-diff-LC315" class="blob-code blob-code-inner js-file-line">&gt; 1. __Options__. In the event any infringement claim, action or allegation is brought or threatened against Rollbar, we may, at our sole option and expense: (i) procure for you the right to continue use of the Services or infringing part thereof; (ii) modify or amend the Services or infringing part thereof, or replace the Services or infringing part thereof with similar functionality; or (iii) if neither of the preceding is commercially practicable, terminate the Agreement and the licenses granted herein.</td> </tr> <tr> <td id="file-tos-diff-L316" class="blob-num js-line-number js-blob-rnum" data-line-number="316"></td> <td id="file-tos-diff-LC316" class="blob-code blob-code-inner js-file-line">&gt; </td> </tr> <tr> <td id="file-tos-diff-L317" class="blob-num js-line-number js-blob-rnum" data-line-number="317"></td> <td id="file-tos-diff-LC317" class="blob-code blob-code-inner js-file-line">&gt; </td> </tr> <tr> <td id="file-tos-diff-L318" class="blob-num js-line-number js-blob-rnum" data-line-number="318"></td> <td id="file-tos-diff-LC318" class="blob-code blob-code-inner js-file-line">&gt; 1. **GOVERNING LAW, ARBITRATION, AND CLASS ACTION/JURY WAIVER**</td> </tr> <tr> <td id="file-tos-diff-L319" class="blob-num js-line-number js-blob-rnum" data-line-number="319"></td> <td id="file-tos-diff-LC319" class="blob-code blob-code-inner js-file-line">&gt; </td> </tr> <tr> <td id="file-tos-diff-L320" class="blob-num js-line-number js-blob-rnum" data-line-number="320"></td> <td id="file-tos-diff-LC320" class="blob-code blob-code-inner js-file-line">&gt; 1. __Governing Law__. You agree that: (i) the Services shall be deemed solely based in California; and (ii) the Services shall be deemed a passive one that does not give rise to personal jurisdiction over us, either specific or general, in jurisdictions other than California. This Agreement shall be governed by the internal substantive laws of the State of California, without respect to its conflict of laws principles. The parties acknowledge that this Agreement may evidence a transaction involving interstate commerce. Notwithstanding the preceding sentences with respect to the substantive law, any arbitration conducted pursuant to the terms of this Agreement shall be governed by the Federal Arbitration Act (9 U.S.C. §§ 1-16). The application of the United Nations Convention on Contracts for the International Sale of Goods is expressly excluded. You agree to submit to the personal jurisdiction of the federal and state courts located in San Francisco County, California for any actions for which we retain the right to seek injunctive or other equitable relief in a court of competent jurisdiction to prevent the actual or threatened infringement, misappropriation or violation of a our copyrights, trademarks, trade secrets, patents, or other intellectual property or proprietary rights, as set forth in the Arbitration provision below, including any provisional relief required to prevent irreparable harm. You agree that San Francisco County, California is the proper forum for any appeals of an arbitration award or for trial court proceedings in the event that the arbitration provision below is found to be unenforceable.</td> </tr> <tr> <td id="file-tos-diff-L321" class="blob-num js-line-number js-blob-rnum" data-line-number="321"></td> <td id="file-tos-diff-LC321" class="blob-code blob-code-inner js-file-line">&gt; </td> </tr> <tr> <td id="file-tos-diff-L322" class="blob-num js-line-number js-blob-rnum" data-line-number="322"></td> <td id="file-tos-diff-LC322" class="blob-code blob-code-inner js-file-line">&gt; 1. __Arbitration__. READ THIS SECTION CAREFULLY BECAUSE IT REQUIRES THE PARTIES TO ARBITRATE THEIR DISPUTES AND LIMITS THE MANNER IN WHICH YOU CAN SEEK RELIEF FROM ROLLBAR. For any dispute with Rollbar, you agree to first [_contact us_](https://rollbar.com/contact/) and attempt to resolve the dispute with us informally. In the unlikely event that Rollbar has not been able to resolve a dispute it has with you after sixty (60) days, we each agree to resolve any claim, dispute, or controversy (excluding any claims for injunctive or other equitable relief as provided below) arising out of or in connection with or relating to this Agreement, or the breach or alleged breach thereof (collectively, “Claims”), by binding arbitration by JAMS, under the Optional Expedited Arbitration Procedures then in effect for JAMS, except as provided herein. JAMS may be contacted at [_www.jamsadr.com_](http://www.jamsadr.com/). The arbitration will be conducted in San Francisco County, California, unless you and Rollbar agree otherwise. Each party will be responsible for paying any JAMS filing, administrative and arbitrator fees in accordance with JAMS rules, and the award rendered by the arbitrator shall include costs of arbitration, reasonable attorneys’ fees and reasonable costs for expert and other witnesses. Any judgment on the award rendered by the arbitrator may be entered in any court of competent jurisdiction. Nothing in this Section shall be deemed as preventing Rollbar from seeking injunctive or other equitable relief from the courts as necessary to prevent the actual or threatened infringement, misappropriation, or violation of our data security, intellectual property rights or other proprietary rights.</td> </tr> <tr> <td id="file-tos-diff-L323" class="blob-num js-line-number js-blob-rnum" data-line-number="323"></td> <td id="file-tos-diff-LC323" class="blob-code blob-code-inner js-file-line">&gt; </td> </tr> <tr> <td id="file-tos-diff-L324" class="blob-num js-line-number js-blob-rnum" data-line-number="324"></td> <td id="file-tos-diff-LC324" class="blob-code blob-code-inner js-file-line">&gt; 1. __Class Action/Jury Trial Waiver__. WITH RESPECT TO ALL PERSONS AND ENTITIES, REGARDLESS OF WHETHER THEY HAVE OBTAINED OR USED THE SERVICES FOR PERSONAL, COMMERCIAL OR OTHER PURPOSES, ALL CLAIMS MUST BE BROUGHT IN THE PARTIES’ INDIVIDUAL CAPACITY, AND NOT AS A PLAINTIFF OR CLASS MEMBER IN ANY PURPORTED CLASS ACTION, COLLECTIVE ACTION, PRIVATE ATTORNEY GENERAL ACTION OR OTHER REPRESENTATIVE PROCEEDING. THIS WAIVER APPLIES TO CLASS ARBITRATION, AND, UNLESS WE AGREE OTHERWISE, THE ARBITRATOR MAY NOT CONSOLIDATE MORE THAN ONE PERSON’S CLAIMS. YOU AGREE THAT, BY ENTERING INTO THIS AGREEMENT, YOU AND ROLLBAR ARE EACH WAIVING THE RIGHT TO A TRIAL BY JURY OR TO PARTICIPATE IN A CLASS ACTION, COLLECTIVE ACTION, PRIVATE ATTORNEY GENERAL ACTION, OR OTHER REPRESENTATIVE PROCEEDING OF ANY KIND.</td> </tr> <tr> <td id="file-tos-diff-L325" class="blob-num js-line-number js-blob-rnum" data-line-number="325"></td> <td id="file-tos-diff-LC325" class="blob-code blob-code-inner js-file-line">&gt; </td> </tr> <tr> <td id="file-tos-diff-L326" class="blob-num js-line-number js-blob-rnum" data-line-number="326"></td> <td id="file-tos-diff-LC326" class="blob-code blob-code-inner js-file-line">&gt; </td> </tr> <tr> <td id="file-tos-diff-L327" class="blob-num js-line-number js-blob-rnum" data-line-number="327"></td> <td id="file-tos-diff-LC327" class="blob-code blob-code-inner js-file-line">&gt; 1. **GENERAL**</td> </tr> <tr> <td id="file-tos-diff-L328" class="blob-num js-line-number js-blob-rnum" data-line-number="328"></td> <td id="file-tos-diff-LC328" class="blob-code blob-code-inner js-file-line">&gt; </td> </tr> <tr> <td id="file-tos-diff-L329" class="blob-num js-line-number js-blob-rnum" data-line-number="329"></td> <td id="file-tos-diff-LC329" class="blob-code blob-code-inner js-file-line">&gt; 1. __Entire Agreement; Amendment__. This Agreement, including all documents referenced herein, constitutes the entire agreement between you and Rollbar and governs your use of the Service. If, through accessing or using the Service, you utilize or obtain any product or service from a third party, you may additionally be subject to such third party&#39;s terms and conditions applicable thereto, and this Agreement will not affect your legal relationship with such third party.</td> </tr> <tr> <td id="file-tos-diff-L330" class="blob-num js-line-number js-blob-rnum" data-line-number="330"></td> <td id="file-tos-diff-LC330" class="blob-code blob-code-inner js-file-line">&gt; </td> </tr> <tr> <td id="file-tos-diff-L331" class="blob-num js-line-number js-blob-rnum" data-line-number="331"></td> <td id="file-tos-diff-LC331" class="blob-code blob-code-inner js-file-line">&gt; 1. __Severability__. If any term or provision of this Agreement is determined to be illegal, unenforceable, or invalid in whole or in part for any reason, such term or provision will be changed and interpreted to accomplish the objectives of such provision to the greatest extent possible under applicable law and the remaining provisions will continue in full force and effect.</td> </tr> <tr> <td id="file-tos-diff-L332" class="blob-num js-line-number js-blob-rnum" data-line-number="332"></td> <td id="file-tos-diff-LC332" class="blob-code blob-code-inner js-file-line">171,172c169</td> </tr> <tr> <td id="file-tos-diff-L333" class="blob-num js-line-number js-blob-rnum" data-line-number="333"></td> <td id="file-tos-diff-LC333" class="blob-code blob-code-inner js-file-line">&lt; ## b. Assignment</td> </tr> <tr> <td id="file-tos-diff-L334" class="blob-num js-line-number js-blob-rnum" data-line-number="334"></td> <td id="file-tos-diff-LC334" class="blob-code blob-code-inner js-file-line">&lt; Neither party may assign this Agreement or any of its rights or obligations hereunder, to a third party without the other party’s written consent, except that a party may assign this Agreement without such consent as a consequence of a merger, consolidation, reorganization, or sale of substantially all of its assets or of the business to which this Agreement pertains. Any assignment in violation of the foregoing is null and void. This Agreement inures to the benefit of and is binding upon the parties hereto and their successors and assigns.</td> </tr> <tr> <td id="file-tos-diff-L335" class="blob-num js-line-number js-blob-rnum" data-line-number="335"></td> <td id="file-tos-diff-LC335" class="blob-code blob-code-inner js-file-line">---</td> </tr> <tr> <td id="file-tos-diff-L336" class="blob-num js-line-number js-blob-rnum" data-line-number="336"></td> <td id="file-tos-diff-LC336" class="blob-code blob-code-inner js-file-line">&gt; 1. __Assignment__. Neither party may assign this Agreement or any of its rights or obligations hereunder, to a third party without the other party’s written consent, except that a party may assign this Agreement without such consent as a consequence of a merger, consolidation, reorganization, or sale of substantially all of its assets or of the business to which this Agreement pertains. Any assignment in violation of the foregoing is null and void. This Agreement inures to the benefit of and is binding upon the parties hereto and their successors and assigns.</td> </tr> <tr> <td id="file-tos-diff-L337" class="blob-num js-line-number js-blob-rnum" data-line-number="337"></td> <td id="file-tos-diff-LC337" class="blob-code blob-code-inner js-file-line">174,175c171</td> </tr> <tr> <td id="file-tos-diff-L338" class="blob-num js-line-number js-blob-rnum" data-line-number="338"></td> <td id="file-tos-diff-LC338" class="blob-code blob-code-inner js-file-line">&lt; ## c. Waiver</td> </tr> <tr> <td id="file-tos-diff-L339" class="blob-num js-line-number js-blob-rnum" data-line-number="339"></td> <td id="file-tos-diff-LC339" class="blob-code blob-code-inner js-file-line">&lt; Failure to enforce or a waiver by either party of one default or breach of the other party will not be considered to be a waiver of any subsequent default or breach.</td> </tr> <tr> <td id="file-tos-diff-L340" class="blob-num js-line-number js-blob-rnum" data-line-number="340"></td> <td id="file-tos-diff-LC340" class="blob-code blob-code-inner js-file-line">---</td> </tr> <tr> <td id="file-tos-diff-L341" class="blob-num js-line-number js-blob-rnum" data-line-number="341"></td> <td id="file-tos-diff-LC341" class="blob-code blob-code-inner js-file-line">&gt; 1. __Waiver__. Failure to enforce or a waiver by either party of one default or breach of the other party will not be considered to be a waiver of any subsequent default or breach.</td> </tr> <tr> <td id="file-tos-diff-L342" class="blob-num js-line-number js-blob-rnum" data-line-number="342"></td> <td id="file-tos-diff-LC342" class="blob-code blob-code-inner js-file-line">177,178c173</td> </tr> <tr> <td id="file-tos-diff-L343" class="blob-num js-line-number js-blob-rnum" data-line-number="343"></td> <td id="file-tos-diff-LC343" class="blob-code blob-code-inner js-file-line">&lt; ## d. Notices</td> </tr> <tr> <td id="file-tos-diff-L344" class="blob-num js-line-number js-blob-rnum" data-line-number="344"></td> <td id="file-tos-diff-LC344" class="blob-code blob-code-inner js-file-line">&lt; All notices required or permitted hereunder will be in writing, delivered personally, by email, or by nationally recognized overnight courier (e.g., FedEx) at the parties’ respective addresses, if personally delivered; when receipt is electronically confirmed, if transmitted by facsimile or email; the day after it is sent, if sent for next day delivery by recognized overnight delivery service; and upon receipt, if sent by certified or registered mail, return receipt requested. Notices to Company shall be sent to Rollbar, Inc., 51 Federal Street, Suite 401, San Francisco, CA 94107 Attn: Brian Rue, or to such other address as Rollbar designates in writing. Notices to you will be sent to the most recently listed in association with your account on the Services or to such other address as Customer designates in writing. You agree that Rollbar may send any privacy or other notices, disclosures, reports, documents, communications and other records regarding the Services (collectively, “Notices”) in electronic form to: (1) the email address that you provided during registration, or (2) by posting the Notice on the Services. The delivery of any Notice is effective when posted to the Services or sent by Rollbar (whichever first occurs), regardless of whether you read the Notice when you receive it or whether you actually receive the delivery. You can withdraw your consent to receive Notices electronically by canceling your account. You must give notice to us in writing via email to [team@rollbar.com](mailto:team@rollbar.com) or another address otherwise expressly provided.</td> </tr> <tr> <td id="file-tos-diff-L345" class="blob-num js-line-number js-blob-rnum" data-line-number="345"></td> <td id="file-tos-diff-LC345" class="blob-code blob-code-inner js-file-line">---</td> </tr> <tr> <td id="file-tos-diff-L346" class="blob-num js-line-number js-blob-rnum" data-line-number="346"></td> <td id="file-tos-diff-LC346" class="blob-code blob-code-inner js-file-line">&gt; 1. __Notices__. All notices required or permitted hereunder will be in writing, delivered personally, by email, or by nationally recognized overnight courier (e.g., FedEx) at the parties’ respective addresses, if personally delivered; when receipt is electronically confirmed, if transmitted by facsimile or email; the day after it is sent, if sent for next day delivery by recognized overnight delivery service; and upon receipt, if sent by certified or registered mail, return receipt requested. Notices to Company shall be sent to Rollbar, Inc., 51 Federal Street, Suite 401, San Francisco, CA 94107, Attn: Legal, or to such other address as Rollbar designates in writing. Notices to you will be sent to the most recently listed in association with your account on the Services or to such other address as you designate in writing. You agree that Rollbar may send any privacy or other notices, disclosures, reports, documents, communications and other records regarding the Services (collectively, “Notices”) in electronic form to: (1) the email address that you provided during registration, or (2) by posting the Notice on the Services. The delivery of any Notice is effective when posted to the Services or sent by Rollbar (whichever first occurs), regardless of whether you read the Notice when you receive it or whether you actually receive the delivery. You can withdraw your consent to receive Notices electronically by canceling your account. You must give notice to us in writing via email to [_team@rollbar.com_](mailto:team@rollbar.com) or another address otherwise expressly provided.</td> </tr> <tr> <td id="file-tos-diff-L347" class="blob-num js-line-number js-blob-rnum" data-line-number="347"></td> <td id="file-tos-diff-LC347" class="blob-code blob-code-inner js-file-line">180,181c175</td> </tr> <tr> <td id="file-tos-diff-L348" class="blob-num js-line-number js-blob-rnum" data-line-number="348"></td> <td id="file-tos-diff-LC348" class="blob-code blob-code-inner js-file-line">&lt; ## e. Force Majeure</td> </tr> <tr> <td id="file-tos-diff-L349" class="blob-num js-line-number js-blob-rnum" data-line-number="349"></td> <td id="file-tos-diff-LC349" class="blob-code blob-code-inner js-file-line">&lt; Neither party will be liable to the other for failure to fulfill obligations hereunder if such failure is due to causes beyond its control, including acts of God, earthquake, fire, flood, embargo, catastrophe, sabotage, utility or transmission failures, governmental prohibitions or regulations, national emergencies, insurrections, riots or war.</td> </tr> <tr> <td id="file-tos-diff-L350" class="blob-num js-line-number js-blob-rnum" data-line-number="350"></td> <td id="file-tos-diff-LC350" class="blob-code blob-code-inner js-file-line">---</td> </tr> <tr> <td id="file-tos-diff-L351" class="blob-num js-line-number js-blob-rnum" data-line-number="351"></td> <td id="file-tos-diff-LC351" class="blob-code blob-code-inner js-file-line">&gt; 1. __Force Majeure__. Except for non-payment of fees that are due, neither party will be liable to the other for failure to fulfill obligations hereunder if such failure is due to causes beyond its control, including acts of God, earthquake, fire, flood, embargo, catastrophe, sabotage, utility or transmission failures, governmental prohibitions or regulations, national emergencies, insurrections, riots, war, or pandemic.</td> </tr> <tr> <td id="file-tos-diff-L352" class="blob-num js-line-number js-blob-rnum" data-line-number="352"></td> <td id="file-tos-diff-LC352" class="blob-code blob-code-inner js-file-line">183,184c177</td> </tr> <tr> <td id="file-tos-diff-L353" class="blob-num js-line-number js-blob-rnum" data-line-number="353"></td> <td id="file-tos-diff-LC353" class="blob-code blob-code-inner js-file-line">&lt; ## f. Government End Users</td> </tr> <tr> <td id="file-tos-diff-L354" class="blob-num js-line-number js-blob-rnum" data-line-number="354"></td> <td id="file-tos-diff-LC354" class="blob-code blob-code-inner js-file-line">&lt; The Services are “commercial computer software” and any associated documentation is “commercial computer software documentation,” pursuant to DFAR Section 227.7202 and FAR Section 12.212, as applicable. Any use, modification, reproduction, release, performance, display, or disclosure of the Services or such documentation by the United States Government will be governed solely by the terms of this Agreement.</td> </tr> <tr> <td id="file-tos-diff-L355" class="blob-num js-line-number js-blob-rnum" data-line-number="355"></td> <td id="file-tos-diff-LC355" class="blob-code blob-code-inner js-file-line">---</td> </tr> <tr> <td id="file-tos-diff-L356" class="blob-num js-line-number js-blob-rnum" data-line-number="356"></td> <td id="file-tos-diff-LC356" class="blob-code blob-code-inner js-file-line">&gt; 1. __Government End Users__. The Services are “commercial computer software” and any associated documentation is “commercial computer software documentation,” pursuant to DFAR Section 227.7202 and FAR Section 12.212, as applicable. Any use, modification, reproduction, release, performance, display, or disclosure of the Services or such documentation by the United States Government will be governed solely by the terms of this Agreement.</td> </tr> <tr> <td id="file-tos-diff-L357" class="blob-num js-line-number js-blob-rnum" data-line-number="357"></td> <td id="file-tos-diff-LC357" class="blob-code blob-code-inner js-file-line">186,187c179</td> </tr> <tr> <td id="file-tos-diff-L358" class="blob-num js-line-number js-blob-rnum" data-line-number="358"></td> <td id="file-tos-diff-LC358" class="blob-code blob-code-inner js-file-line">&lt; ## g. Remedies</td> </tr> <tr> <td id="file-tos-diff-L359" class="blob-num js-line-number js-blob-rnum" data-line-number="359"></td> <td id="file-tos-diff-LC359" class="blob-code blob-code-inner js-file-line">&lt; All rights and remedies of the parties, under this Agreement, in law or at equity, are cumulative and may be exercised concurrently or separately. The exercise of one remedy will not be an election of that remedy to the exclusion of other remedies. A party’s breach or threatened breach of any of its covenants or agreements in this Agreement may cause irreparable injury that is inadequately compensable in monetary damages.</td> </tr> <tr> <td id="file-tos-diff-L360" class="blob-num js-line-number js-blob-rnum" data-line-number="360"></td> <td id="file-tos-diff-LC360" class="blob-code blob-code-inner js-file-line">---</td> </tr> <tr> <td id="file-tos-diff-L361" class="blob-num js-line-number js-blob-rnum" data-line-number="361"></td> <td id="file-tos-diff-LC361" class="blob-code blob-code-inner js-file-line">&gt; 1. __Remedies__. All rights and remedies of the parties, under this Agreement, in law or at equity, are cumulative and may be exercised concurrently or separately. The exercise of one remedy will not be an election of that remedy to the exclusion of other remedies. A party’s breach or threatened breach of any of its covenants or agreements in this Agreement may cause irreparable injury that is inadequately compensable in monetary damages.</td> </tr> </table> </div> </div> </div> </div> tag:gist.github.com,2008:Gist/coryvirok/ade9a0a48053498bf61e 2015-09-23T01:00:11Z 2015-09-23T01:00:12Z Liberal, Accurate Regex Pattern for Matching Web URLs Cory Virok https://gist.github.com/coryvirok <a href="https://gist.github.com/coryvirok/ade9a0a48053498bf61e#file-liberal-regex-pattern-for-web-urls">Liberal Regex Pattern for Web URLs</a> <div class="js-gist-file-update-container js-task-list-container"> <div id="file-liberal-regex-pattern-for-web-urls" class="file my-2"> <div itemprop="text" class="Box-body p-0 blob-wrapper data type-text " style="overflow: auto" tabindex="0" role="region" aria-label="Liberal Regex Pattern for Web URLs content, created by coryvirok on 01:00AM on September 23, 2015." > <div class="js-check-hidden-unicode js-blob-code-container 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 d="M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path> </svg> <span> This file contains hidden or 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 class="Link--inTextBlock" 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="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 d="M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path> </svg> </span></template> <table data-hpc class="highlight tab-size js-file-line-container" data-tab-size="4" data-paste-markdown-skip data-tagsearch-path="Liberal Regex Pattern for Web URLs"> <tr> <td id="file-liberal-regex-pattern-for-web-urls-L1" class="blob-num js-line-number js-blob-rnum" data-line-number="1"></td> <td id="file-liberal-regex-pattern-for-web-urls-LC1" class="blob-code blob-code-inner js-file-line">The regex patterns in this gist are intended only to match web URLs -- http,</td> </tr> <tr> <td id="file-liberal-regex-pattern-for-web-urls-L2" class="blob-num js-line-number js-blob-rnum" data-line-number="2"></td> <td id="file-liberal-regex-pattern-for-web-urls-LC2" class="blob-code blob-code-inner js-file-line">https, and naked domains like &quot;example.com&quot;. For a pattern that attempts to</td> </tr> <tr> <td id="file-liberal-regex-pattern-for-web-urls-L3" class="blob-num js-line-number js-blob-rnum" data-line-number="3"></td> <td id="file-liberal-regex-pattern-for-web-urls-LC3" class="blob-code blob-code-inner js-file-line">match all URLs, regardless of protocol, see: https://gist.github.com/gruber/249502</td> </tr> <tr> <td id="file-liberal-regex-pattern-for-web-urls-L4" class="blob-num js-line-number js-blob-rnum" data-line-number="4"></td> <td id="file-liberal-regex-pattern-for-web-urls-LC4" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-liberal-regex-pattern-for-web-urls-L5" class="blob-num js-line-number js-blob-rnum" data-line-number="5"></td> <td id="file-liberal-regex-pattern-for-web-urls-LC5" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-liberal-regex-pattern-for-web-urls-L6" class="blob-num js-line-number js-blob-rnum" data-line-number="6"></td> <td id="file-liberal-regex-pattern-for-web-urls-LC6" class="blob-code blob-code-inner js-file-line"># Single-line version:</td> </tr> <tr> <td id="file-liberal-regex-pattern-for-web-urls-L7" class="blob-num js-line-number js-blob-rnum" data-line-number="7"></td> <td id="file-liberal-regex-pattern-for-web-urls-LC7" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-liberal-regex-pattern-for-web-urls-L8" class="blob-num js-line-number js-blob-rnum" data-line-number="8"></td> <td id="file-liberal-regex-pattern-for-web-urls-LC8" class="blob-code blob-code-inner js-file-line">(?i)\b((?:https?:(?:/{1,3}|[a-z0-9%])|[a-z0-9.\-]+[.](?:com|net|org|edu|gov|mil|aero|asia|biz|cat|coop|info|int|jobs|mobi|museum|name|post|pro|tel|travel|xxx|ac|ad|ae|af|ag|ai|al|am|an|ao|aq|ar|as|at|au|aw|ax|az|ba|bb|bd|be|bf|bg|bh|bi|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|ca|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|co|cr|cs|cu|cv|cx|cy|cz|dd|de|dj|dk|dm|do|dz|ec|ee|eg|eh|er|es|et|eu|fi|fj|fk|fm|fo|fr|ga|gb|gd|ge|gf|gg|gh|gi|gl|gm|gn|gp|gq|gr|gs|gt|gu|gw|gy|hk|hm|hn|hr|ht|hu|id|ie|il|im|in|io|iq|ir|is|it|je|jm|jo|jp|ke|kg|kh|ki|km|kn|kp|kr|kw|ky|kz|la|lb|lc|li|lk|lr|ls|lt|lu|lv|ly|ma|mc|md|me|mg|mh|mk|ml|mm|mn|mo|mp|mq|mr|ms|mt|mu|mv|mw|mx|my|mz|na|nc|ne|nf|ng|ni|nl|no|np|nr|nu|nz|om|pa|pe|pf|pg|ph|pk|pl|pm|pn|pr|ps|pt|pw|py|qa|re|ro|rs|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sj|Ja|sk|sl|sm|sn|so|sr|ss|st|su|sv|sx|sy|sz|tc|td|tf|tg|th|tj|tk|tl|tm|tn|to|tp|tr|tt|tv|tw|tz|ua|ug|uk|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|ye|yt|yu|za|zm|zw)/)(?:[^\s()&lt;&gt;{}\[\]]+|\([^\s()]*?\([^\s()]+\)[^\s()]*?\)|\([^\s]+?\))+(?:\([^\s()]*?\([^\s()]+\)[^\s()]*?\)|\([^\s]+?\)|[^\s`!()\[\]{};:&#39;&quot;.,&lt;&gt;?«»“”‘’])|(?:(?&lt;!@)[a-z0-9]+(?:[.\-][a-z0-9]+)*[.](?:com|net|org|edu|gov|mil|aero|asia|biz|cat|coop|info|int|jobs|mobi|museum|name|post|pro|tel|travel|xxx|ac|ad|ae|af|ag|ai|al|am|an|ao|aq|ar|as|at|au|aw|ax|az|ba|bb|bd|be|bf|bg|bh|bi|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|ca|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|co|cr|cs|cu|cv|cx|cy|cz|dd|de|dj|dk|dm|do|dz|ec|ee|eg|eh|er|es|et|eu|fi|fj|fk|fm|fo|fr|ga|gb|gd|ge|gf|gg|gh|gi|gl|gm|gn|gp|gq|gr|gs|gt|gu|gw|gy|hk|hm|hn|hr|ht|hu|id|ie|il|im|in|io|iq|ir|is|it|je|jm|jo|jp|ke|kg|kh|ki|km|kn|kp|kr|kw|ky|kz|la|lb|lc|li|lk|lr|ls|lt|lu|lv|ly|ma|mc|md|me|mg|mh|mk|ml|mm|mn|mo|mp|mq|mr|ms|mt|mu|mv|mw|mx|my|mz|na|nc|ne|nf|ng|ni|nl|no|np|nr|nu|nz|om|pa|pe|pf|pg|ph|pk|pl|pm|pn|pr|ps|pt|pw|py|qa|re|ro|rs|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sj|Ja|sk|sl|sm|sn|so|sr|ss|st|su|sv|sx|sy|sz|tc|td|tf|tg|th|tj|tk|tl|tm|tn|to|tp|tr|tt|tv|tw|tz|ua|ug|uk|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|ye|yt|yu|za|zm|zw)\b/?(?!@)))</td> </tr> <tr> <td id="file-liberal-regex-pattern-for-web-urls-L9" class="blob-num js-line-number js-blob-rnum" data-line-number="9"></td> <td id="file-liberal-regex-pattern-for-web-urls-LC9" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-liberal-regex-pattern-for-web-urls-L10" class="blob-num js-line-number js-blob-rnum" data-line-number="10"></td> <td id="file-liberal-regex-pattern-for-web-urls-LC10" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-liberal-regex-pattern-for-web-urls-L11" class="blob-num js-line-number js-blob-rnum" data-line-number="11"></td> <td id="file-liberal-regex-pattern-for-web-urls-LC11" class="blob-code blob-code-inner js-file-line"># Commented multi-line version:</td> </tr> <tr> <td id="file-liberal-regex-pattern-for-web-urls-L12" class="blob-num js-line-number js-blob-rnum" data-line-number="12"></td> <td id="file-liberal-regex-pattern-for-web-urls-LC12" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-liberal-regex-pattern-for-web-urls-L13" class="blob-num js-line-number js-blob-rnum" data-line-number="13"></td> <td id="file-liberal-regex-pattern-for-web-urls-LC13" class="blob-code blob-code-inner js-file-line">(?xi)</td> </tr> <tr> <td id="file-liberal-regex-pattern-for-web-urls-L14" class="blob-num js-line-number js-blob-rnum" data-line-number="14"></td> <td id="file-liberal-regex-pattern-for-web-urls-LC14" class="blob-code blob-code-inner js-file-line">\b</td> </tr> <tr> <td id="file-liberal-regex-pattern-for-web-urls-L15" class="blob-num js-line-number js-blob-rnum" data-line-number="15"></td> <td id="file-liberal-regex-pattern-for-web-urls-LC15" class="blob-code blob-code-inner js-file-line">( # Capture 1: entire matched URL</td> </tr> <tr> <td id="file-liberal-regex-pattern-for-web-urls-L16" class="blob-num js-line-number js-blob-rnum" data-line-number="16"></td> <td id="file-liberal-regex-pattern-for-web-urls-LC16" class="blob-code blob-code-inner js-file-line"> (?:</td> </tr> <tr> <td id="file-liberal-regex-pattern-for-web-urls-L17" class="blob-num js-line-number js-blob-rnum" data-line-number="17"></td> <td id="file-liberal-regex-pattern-for-web-urls-LC17" class="blob-code blob-code-inner js-file-line"> https?: # URL protocol and colon</td> </tr> <tr> <td id="file-liberal-regex-pattern-for-web-urls-L18" class="blob-num js-line-number js-blob-rnum" data-line-number="18"></td> <td id="file-liberal-regex-pattern-for-web-urls-LC18" class="blob-code blob-code-inner js-file-line"> (?:</td> </tr> <tr> <td id="file-liberal-regex-pattern-for-web-urls-L19" class="blob-num js-line-number js-blob-rnum" data-line-number="19"></td> <td id="file-liberal-regex-pattern-for-web-urls-LC19" class="blob-code blob-code-inner js-file-line"> /{1,3} # 1-3 slashes</td> </tr> <tr> <td id="file-liberal-regex-pattern-for-web-urls-L20" class="blob-num js-line-number js-blob-rnum" data-line-number="20"></td> <td id="file-liberal-regex-pattern-for-web-urls-LC20" class="blob-code blob-code-inner js-file-line"> | # or</td> </tr> <tr> <td id="file-liberal-regex-pattern-for-web-urls-L21" class="blob-num js-line-number js-blob-rnum" data-line-number="21"></td> <td id="file-liberal-regex-pattern-for-web-urls-LC21" class="blob-code blob-code-inner js-file-line"> [a-z0-9%] # Single letter or digit or &#39;%&#39;</td> </tr> <tr> <td id="file-liberal-regex-pattern-for-web-urls-L22" class="blob-num js-line-number js-blob-rnum" data-line-number="22"></td> <td id="file-liberal-regex-pattern-for-web-urls-LC22" class="blob-code blob-code-inner js-file-line"> # (Trying not to match e.g. &quot;URI::Escape&quot;)</td> </tr> <tr> <td id="file-liberal-regex-pattern-for-web-urls-L23" class="blob-num js-line-number js-blob-rnum" data-line-number="23"></td> <td id="file-liberal-regex-pattern-for-web-urls-LC23" class="blob-code blob-code-inner js-file-line"> )</td> </tr> <tr> <td id="file-liberal-regex-pattern-for-web-urls-L24" class="blob-num js-line-number js-blob-rnum" data-line-number="24"></td> <td id="file-liberal-regex-pattern-for-web-urls-LC24" class="blob-code blob-code-inner js-file-line"> | # or</td> </tr> <tr> <td id="file-liberal-regex-pattern-for-web-urls-L25" class="blob-num js-line-number js-blob-rnum" data-line-number="25"></td> <td id="file-liberal-regex-pattern-for-web-urls-LC25" class="blob-code blob-code-inner js-file-line"> # looks like domain name followed by a slash:</td> </tr> <tr> <td id="file-liberal-regex-pattern-for-web-urls-L26" class="blob-num js-line-number js-blob-rnum" data-line-number="26"></td> <td id="file-liberal-regex-pattern-for-web-urls-LC26" class="blob-code blob-code-inner js-file-line"> [a-z0-9.\-]+[.]</td> </tr> <tr> <td id="file-liberal-regex-pattern-for-web-urls-L27" class="blob-num js-line-number js-blob-rnum" data-line-number="27"></td> <td id="file-liberal-regex-pattern-for-web-urls-LC27" class="blob-code blob-code-inner js-file-line"> (?:com|net|org|edu|gov|mil|aero|asia|biz|cat|coop|info|int|jobs|mobi|museum|name|post|pro|tel|travel|xxx|ac|ad|ae|af|ag|ai|al|am|an|ao|aq|ar|as|at|au|aw|ax|az|ba|bb|bd|be|bf|bg|bh|bi|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|ca|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|co|cr|cs|cu|cv|cx|cy|cz|dd|de|dj|dk|dm|do|dz|ec|ee|eg|eh|er|es|et|eu|fi|fj|fk|fm|fo|fr|ga|gb|gd|ge|gf|gg|gh|gi|gl|gm|gn|gp|gq|gr|gs|gt|gu|gw|gy|hk|hm|hn|hr|ht|hu|id|ie|il|im|in|io|iq|ir|is|it|je|jm|jo|jp|ke|kg|kh|ki|km|kn|kp|kr|kw|ky|kz|la|lb|lc|li|lk|lr|ls|lt|lu|lv|ly|ma|mc|md|me|mg|mh|mk|ml|mm|mn|mo|mp|mq|mr|ms|mt|mu|mv|mw|mx|my|mz|na|nc|ne|nf|ng|ni|nl|no|np|nr|nu|nz|om|pa|pe|pf|pg|ph|pk|pl|pm|pn|pr|ps|pt|pw|py|qa|re|ro|rs|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sj| Ja|sk|sl|sm|sn|so|sr|ss|st|su|sv|sx|sy|sz|tc|td|tf|tg|th|tj|tk|tl|tm|tn|to|tp|tr|tt|tv|tw|tz|ua|ug|uk|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|ye|yt|yu|za|zm|zw)</td> </tr> <tr> <td id="file-liberal-regex-pattern-for-web-urls-L28" class="blob-num js-line-number js-blob-rnum" data-line-number="28"></td> <td id="file-liberal-regex-pattern-for-web-urls-LC28" class="blob-code blob-code-inner js-file-line"> /</td> </tr> <tr> <td id="file-liberal-regex-pattern-for-web-urls-L29" class="blob-num js-line-number js-blob-rnum" data-line-number="29"></td> <td id="file-liberal-regex-pattern-for-web-urls-LC29" class="blob-code blob-code-inner js-file-line"> )</td> </tr> <tr> <td id="file-liberal-regex-pattern-for-web-urls-L30" class="blob-num js-line-number js-blob-rnum" data-line-number="30"></td> <td id="file-liberal-regex-pattern-for-web-urls-LC30" class="blob-code blob-code-inner js-file-line"> (?: # One or more:</td> </tr> <tr> <td id="file-liberal-regex-pattern-for-web-urls-L31" class="blob-num js-line-number js-blob-rnum" data-line-number="31"></td> <td id="file-liberal-regex-pattern-for-web-urls-LC31" class="blob-code blob-code-inner js-file-line"> [^\s()&lt;&gt;{}\[\]]+ # Run of non-space, non-()&lt;&gt;{}[]</td> </tr> <tr> <td id="file-liberal-regex-pattern-for-web-urls-L32" class="blob-num js-line-number js-blob-rnum" data-line-number="32"></td> <td id="file-liberal-regex-pattern-for-web-urls-LC32" class="blob-code blob-code-inner js-file-line"> | # or</td> </tr> <tr> <td id="file-liberal-regex-pattern-for-web-urls-L33" class="blob-num js-line-number js-blob-rnum" data-line-number="33"></td> <td id="file-liberal-regex-pattern-for-web-urls-LC33" class="blob-code blob-code-inner js-file-line"> \([^\s()]*?\([^\s()]+\)[^\s()]*?\) # balanced parens, one level deep: (…(…)…)</td> </tr> <tr> <td id="file-liberal-regex-pattern-for-web-urls-L34" class="blob-num js-line-number js-blob-rnum" data-line-number="34"></td> <td id="file-liberal-regex-pattern-for-web-urls-LC34" class="blob-code blob-code-inner js-file-line"> |</td> </tr> <tr> <td id="file-liberal-regex-pattern-for-web-urls-L35" class="blob-num js-line-number js-blob-rnum" data-line-number="35"></td> <td id="file-liberal-regex-pattern-for-web-urls-LC35" class="blob-code blob-code-inner js-file-line"> \([^\s]+?\) # balanced parens, non-recursive: (…)</td> </tr> <tr> <td id="file-liberal-regex-pattern-for-web-urls-L36" class="blob-num js-line-number js-blob-rnum" data-line-number="36"></td> <td id="file-liberal-regex-pattern-for-web-urls-LC36" class="blob-code blob-code-inner js-file-line"> )+</td> </tr> <tr> <td id="file-liberal-regex-pattern-for-web-urls-L37" class="blob-num js-line-number js-blob-rnum" data-line-number="37"></td> <td id="file-liberal-regex-pattern-for-web-urls-LC37" class="blob-code blob-code-inner js-file-line"> (?: # End with:</td> </tr> <tr> <td id="file-liberal-regex-pattern-for-web-urls-L38" class="blob-num js-line-number js-blob-rnum" data-line-number="38"></td> <td id="file-liberal-regex-pattern-for-web-urls-LC38" class="blob-code blob-code-inner js-file-line"> \([^\s()]*?\([^\s()]+\)[^\s()]*?\) # balanced parens, one level deep: (…(…)…)</td> </tr> <tr> <td id="file-liberal-regex-pattern-for-web-urls-L39" class="blob-num js-line-number js-blob-rnum" data-line-number="39"></td> <td id="file-liberal-regex-pattern-for-web-urls-LC39" class="blob-code blob-code-inner js-file-line"> |</td> </tr> <tr> <td id="file-liberal-regex-pattern-for-web-urls-L40" class="blob-num js-line-number js-blob-rnum" data-line-number="40"></td> <td id="file-liberal-regex-pattern-for-web-urls-LC40" class="blob-code blob-code-inner js-file-line"> \([^\s]+?\) # balanced parens, non-recursive: (…)</td> </tr> <tr> <td id="file-liberal-regex-pattern-for-web-urls-L41" class="blob-num js-line-number js-blob-rnum" data-line-number="41"></td> <td id="file-liberal-regex-pattern-for-web-urls-LC41" class="blob-code blob-code-inner js-file-line"> | # or</td> </tr> <tr> <td id="file-liberal-regex-pattern-for-web-urls-L42" class="blob-num js-line-number js-blob-rnum" data-line-number="42"></td> <td id="file-liberal-regex-pattern-for-web-urls-LC42" class="blob-code blob-code-inner js-file-line"> [^\s`!()\[\]{};:&#39;&quot;.,&lt;&gt;?«»“”‘’] # not a space or one of these punct chars</td> </tr> <tr> <td id="file-liberal-regex-pattern-for-web-urls-L43" class="blob-num js-line-number js-blob-rnum" data-line-number="43"></td> <td id="file-liberal-regex-pattern-for-web-urls-LC43" class="blob-code blob-code-inner js-file-line"> )</td> </tr> <tr> <td id="file-liberal-regex-pattern-for-web-urls-L44" class="blob-num js-line-number js-blob-rnum" data-line-number="44"></td> <td id="file-liberal-regex-pattern-for-web-urls-LC44" class="blob-code blob-code-inner js-file-line"> | # OR, the following to match naked domains:</td> </tr> <tr> <td id="file-liberal-regex-pattern-for-web-urls-L45" class="blob-num js-line-number js-blob-rnum" data-line-number="45"></td> <td id="file-liberal-regex-pattern-for-web-urls-LC45" class="blob-code blob-code-inner js-file-line"> (?:</td> </tr> <tr> <td id="file-liberal-regex-pattern-for-web-urls-L46" class="blob-num js-line-number js-blob-rnum" data-line-number="46"></td> <td id="file-liberal-regex-pattern-for-web-urls-LC46" class="blob-code blob-code-inner js-file-line"> (?&lt;!@) # not preceded by a @, avoid matching foo@_gmail.com_</td> </tr> <tr> <td id="file-liberal-regex-pattern-for-web-urls-L47" class="blob-num js-line-number js-blob-rnum" data-line-number="47"></td> <td id="file-liberal-regex-pattern-for-web-urls-LC47" class="blob-code blob-code-inner js-file-line"> [a-z0-9]+</td> </tr> <tr> <td id="file-liberal-regex-pattern-for-web-urls-L48" class="blob-num js-line-number js-blob-rnum" data-line-number="48"></td> <td id="file-liberal-regex-pattern-for-web-urls-LC48" class="blob-code blob-code-inner js-file-line"> (?:[.\-][a-z0-9]+)*</td> </tr> <tr> <td id="file-liberal-regex-pattern-for-web-urls-L49" class="blob-num js-line-number js-blob-rnum" data-line-number="49"></td> <td id="file-liberal-regex-pattern-for-web-urls-LC49" class="blob-code blob-code-inner js-file-line"> [.]</td> </tr> <tr> <td id="file-liberal-regex-pattern-for-web-urls-L50" class="blob-num js-line-number js-blob-rnum" data-line-number="50"></td> <td id="file-liberal-regex-pattern-for-web-urls-LC50" class="blob-code blob-code-inner js-file-line"> (?:com|net|org|edu|gov|mil|aero|asia|biz|cat|coop|info|int|jobs|mobi|museum|name|post|pro|tel|travel|xxx|ac|ad|ae|af|ag|ai|al|am|an|ao|aq|ar|as|at|au|aw|ax|az|ba|bb|bd|be|bf|bg|bh|bi|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|ca|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|co|cr|cs|cu|cv|cx|cy|cz|dd|de|dj|dk|dm|do|dz|ec|ee|eg|eh|er|es|et|eu|fi|fj|fk|fm|fo|fr|ga|gb|gd|ge|gf|gg|gh|gi|gl|gm|gn|gp|gq|gr|gs|gt|gu|gw|gy|hk|hm|hn|hr|ht|hu|id|ie|il|im|in|io|iq|ir|is|it|je|jm|jo|jp|ke|kg|kh|ki|km|kn|kp|kr|kw|ky|kz|la|lb|lc|li|lk|lr|ls|lt|lu|lv|ly|ma|mc|md|me|mg|mh|mk|ml|mm|mn|mo|mp|mq|mr|ms|mt|mu|mv|mw|mx|my|mz|na|nc|ne|nf|ng|ni|nl|no|np|nr|nu|nz|om|pa|pe|pf|pg|ph|pk|pl|pm|pn|pr|ps|pt|pw|py|qa|re|ro|rs|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sj| Ja|sk|sl|sm|sn|so|sr|ss|st|su|sv|sx|sy|sz|tc|td|tf|tg|th|tj|tk|tl|tm|tn|to|tp|tr|tt|tv|tw|tz|ua|ug|uk|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|ye|yt|yu|za|zm|zw)</td> </tr> <tr> <td id="file-liberal-regex-pattern-for-web-urls-L51" class="blob-num js-line-number js-blob-rnum" data-line-number="51"></td> <td id="file-liberal-regex-pattern-for-web-urls-LC51" class="blob-code blob-code-inner js-file-line"> \b</td> </tr> <tr> <td id="file-liberal-regex-pattern-for-web-urls-L52" class="blob-num js-line-number js-blob-rnum" data-line-number="52"></td> <td id="file-liberal-regex-pattern-for-web-urls-LC52" class="blob-code blob-code-inner js-file-line"> /?</td> </tr> <tr> <td id="file-liberal-regex-pattern-for-web-urls-L53" class="blob-num js-line-number js-blob-rnum" data-line-number="53"></td> <td id="file-liberal-regex-pattern-for-web-urls-LC53" class="blob-code blob-code-inner js-file-line"> (?!@) # not succeeded by a @, avoid matching &quot;foo.na&quot; in &quot;foo.na@example.com&quot;</td> </tr> <tr> <td id="file-liberal-regex-pattern-for-web-urls-L54" class="blob-num js-line-number js-blob-rnum" data-line-number="54"></td> <td id="file-liberal-regex-pattern-for-web-urls-LC54" class="blob-code blob-code-inner js-file-line"> )</td> </tr> <tr> <td id="file-liberal-regex-pattern-for-web-urls-L55" class="blob-num js-line-number js-blob-rnum" data-line-number="55"></td> <td id="file-liberal-regex-pattern-for-web-urls-LC55" class="blob-code blob-code-inner js-file-line">)</td> </tr> </table> </div> </div> </div> </div> tag:gist.github.com,2008:Gist/coryvirok/62517094e542a9c7006f 2015-04-08T17:39:26Z 2015-08-29T14:18:44Z Comment on http://eev.ee/blog/2011/07/14/pyramid-traversal-almost-useful/ Cory Virok https://gist.github.com/coryvirok <a href="https://gist.github.com/coryvirok/62517094e542a9c7006f#file-gistfile1-py">gistfile1.py</a> <div class="js-gist-file-update-container js-task-list-container"> <div id="file-gistfile1-py" class="file my-2"> <div itemprop="text" class="Box-body p-0 blob-wrapper data type-python " style="overflow: auto" tabindex="0" role="region" aria-label="gistfile1.py content, created by coryvirok on 05:39PM on April 08, 2015." > <div class="js-check-hidden-unicode js-blob-code-container 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 d="M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path> </svg> <span> This file contains hidden or 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 class="Link--inTextBlock" 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="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 d="M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path> </svg> </span></template> <table data-hpc class="highlight tab-size js-file-line-container" data-tab-size="4" data-paste-markdown-skip data-tagsearch-path="gistfile1.py"> <tr> <td id="file-gistfile1-py-L1" class="blob-num js-line-number js-blob-rnum" data-line-number="1"></td> <td id="file-gistfile1-py-LC1" class="blob-code blob-code-inner js-file-line">&quot;&quot;&quot;</td> </tr> <tr> <td id="file-gistfile1-py-L2" class="blob-num js-line-number js-blob-rnum" data-line-number="2"></td> <td id="file-gistfile1-py-LC2" class="blob-code blob-code-inner js-file-line">Instead of causing a 404 for cat IDs that are not found, return the parent resource.</td> </tr> <tr> <td id="file-gistfile1-py-L3" class="blob-num js-line-number js-blob-rnum" data-line-number="3"></td> <td id="file-gistfile1-py-LC3" class="blob-code blob-code-inner js-file-line">&quot;&quot;&quot;</td> </tr> <tr> <td id="file-gistfile1-py-L4" class="blob-num js-line-number js-blob-rnum" data-line-number="4"></td> <td id="file-gistfile1-py-LC4" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-gistfile1-py-L5" class="blob-num js-line-number js-blob-rnum" data-line-number="5"></td> <td id="file-gistfile1-py-LC5" class="blob-code blob-code-inner js-file-line">class Root(object):</td> </tr> <tr> <td id="file-gistfile1-py-L6" class="blob-num js-line-number js-blob-rnum" data-line-number="6"></td> <td id="file-gistfile1-py-LC6" class="blob-code blob-code-inner js-file-line"> def __getitem__(self, key):</td> </tr> <tr> <td id="file-gistfile1-py-L7" class="blob-num js-line-number js-blob-rnum" data-line-number="7"></td> <td id="file-gistfile1-py-LC7" class="blob-code blob-code-inner js-file-line"> if key == &#39;cats&#39;:</td> </tr> <tr> <td id="file-gistfile1-py-L8" class="blob-num js-line-number js-blob-rnum" data-line-number="8"></td> <td id="file-gistfile1-py-LC8" class="blob-code blob-code-inner js-file-line"> res = CatList()</td> </tr> <tr> <td id="file-gistfile1-py-L9" class="blob-num js-line-number js-blob-rnum" data-line-number="9"></td> <td id="file-gistfile1-py-LC9" class="blob-code blob-code-inner js-file-line"> res.__name__ = key</td> </tr> <tr> <td id="file-gistfile1-py-L10" class="blob-num js-line-number js-blob-rnum" data-line-number="10"></td> <td id="file-gistfile1-py-LC10" class="blob-code blob-code-inner js-file-line"> res.__parent__ = self</td> </tr> <tr> <td id="file-gistfile1-py-L11" class="blob-num js-line-number js-blob-rnum" data-line-number="11"></td> <td id="file-gistfile1-py-LC11" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-gistfile1-py-L12" class="blob-num js-line-number js-blob-rnum" data-line-number="12"></td> <td id="file-gistfile1-py-LC12" class="blob-code blob-code-inner js-file-line"> raise KeyError()</td> </tr> <tr> <td id="file-gistfile1-py-L13" class="blob-num js-line-number js-blob-rnum" data-line-number="13"></td> <td id="file-gistfile1-py-LC13" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-gistfile1-py-L14" class="blob-num js-line-number js-blob-rnum" data-line-number="14"></td> <td id="file-gistfile1-py-LC14" class="blob-code blob-code-inner js-file-line">class CatList(object):</td> </tr> <tr> <td id="file-gistfile1-py-L15" class="blob-num js-line-number js-blob-rnum" data-line-number="15"></td> <td id="file-gistfile1-py-LC15" class="blob-code blob-code-inner js-file-line"> def __getitem__(self, key):</td> </tr> <tr> <td id="file-gistfile1-py-L16" class="blob-num js-line-number js-blob-rnum" data-line-number="16"></td> <td id="file-gistfile1-py-LC16" class="blob-code blob-code-inner js-file-line"> # Find a cat</td> </tr> <tr> <td id="file-gistfile1-py-L17" class="blob-num js-line-number js-blob-rnum" data-line-number="17"></td> <td id="file-gistfile1-py-LC17" class="blob-code blob-code-inner js-file-line"> cat = get_cat(key)</td> </tr> <tr> <td id="file-gistfile1-py-L18" class="blob-num js-line-number js-blob-rnum" data-line-number="18"></td> <td id="file-gistfile1-py-LC18" class="blob-code blob-code-inner js-file-line"> if cat:</td> </tr> <tr> <td id="file-gistfile1-py-L19" class="blob-num js-line-number js-blob-rnum" data-line-number="19"></td> <td id="file-gistfile1-py-LC19" class="blob-code blob-code-inner js-file-line"> res = CatResource(cat)</td> </tr> <tr> <td id="file-gistfile1-py-L20" class="blob-num js-line-number js-blob-rnum" data-line-number="20"></td> <td id="file-gistfile1-py-LC20" class="blob-code blob-code-inner js-file-line"> res.__name__ = key</td> </tr> <tr> <td id="file-gistfile1-py-L21" class="blob-num js-line-number js-blob-rnum" data-line-number="21"></td> <td id="file-gistfile1-py-LC21" class="blob-code blob-code-inner js-file-line"> res.__parent__ = self</td> </tr> <tr> <td id="file-gistfile1-py-L22" class="blob-num js-line-number js-blob-rnum" data-line-number="22"></td> <td id="file-gistfile1-py-LC22" class="blob-code blob-code-inner js-file-line"> return res</td> </tr> <tr> <td id="file-gistfile1-py-L23" class="blob-num js-line-number js-blob-rnum" data-line-number="23"></td> <td id="file-gistfile1-py-LC23" class="blob-code blob-code-inner js-file-line"> else:</td> </tr> <tr> <td id="file-gistfile1-py-L24" class="blob-num js-line-number js-blob-rnum" data-line-number="24"></td> <td id="file-gistfile1-py-LC24" class="blob-code blob-code-inner js-file-line"> # You can also raise an HTTPNotFound() here or </td> </tr> <tr> <td id="file-gistfile1-py-L25" class="blob-num js-line-number js-blob-rnum" data-line-number="25"></td> <td id="file-gistfile1-py-LC25" class="blob-code blob-code-inner js-file-line"> # create a CatResource(None) and set __name__ = &#39;&#39; </td> </tr> <tr> <td id="file-gistfile1-py-L26" class="blob-num js-line-number js-blob-rnum" data-line-number="26"></td> <td id="file-gistfile1-py-LC26" class="blob-code blob-code-inner js-file-line"> # to signal that the cat identifier wasn&#39;t found.</td> </tr> <tr> <td id="file-gistfile1-py-L27" class="blob-num js-line-number js-blob-rnum" data-line-number="27"></td> <td id="file-gistfile1-py-LC27" class="blob-code blob-code-inner js-file-line"> return self.__parent__</td> </tr> <tr> <td id="file-gistfile1-py-L28" class="blob-num js-line-number js-blob-rnum" data-line-number="28"></td> <td id="file-gistfile1-py-LC28" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-gistfile1-py-L29" class="blob-num js-line-number js-blob-rnum" data-line-number="29"></td> <td id="file-gistfile1-py-LC29" class="blob-code blob-code-inner js-file-line">class CatResource(object):</td> </tr> <tr> <td id="file-gistfile1-py-L30" class="blob-num js-line-number js-blob-rnum" data-line-number="30"></td> <td id="file-gistfile1-py-LC30" class="blob-code blob-code-inner js-file-line"> def __init__(self, cat):</td> </tr> <tr> <td id="file-gistfile1-py-L31" class="blob-num js-line-number js-blob-rnum" data-line-number="31"></td> <td id="file-gistfile1-py-LC31" class="blob-code blob-code-inner js-file-line"> self.cat = cat</td> </tr> <tr> <td id="file-gistfile1-py-L32" class="blob-num js-line-number js-blob-rnum" data-line-number="32"></td> <td id="file-gistfile1-py-LC32" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-gistfile1-py-L33" class="blob-num js-line-number js-blob-rnum" data-line-number="33"></td> <td id="file-gistfile1-py-LC33" class="blob-code blob-code-inner js-file-line"> def __getitem__(self, key):</td> </tr> <tr> <td id="file-gistfile1-py-L34" class="blob-num js-line-number js-blob-rnum" data-line-number="34"></td> <td id="file-gistfile1-py-LC34" class="blob-code blob-code-inner js-file-line"> return key</td> </tr> <tr> <td id="file-gistfile1-py-L35" class="blob-num js-line-number js-blob-rnum" data-line-number="35"></td> <td id="file-gistfile1-py-LC35" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-gistfile1-py-L36" class="blob-num js-line-number js-blob-rnum" data-line-number="36"></td> <td id="file-gistfile1-py-LC36" class="blob-code blob-code-inner js-file-line">site_root = Root()</td> </tr> <tr> <td id="file-gistfile1-py-L37" class="blob-num js-line-number js-blob-rnum" data-line-number="37"></td> <td id="file-gistfile1-py-LC37" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-gistfile1-py-L38" class="blob-num js-line-number js-blob-rnum" data-line-number="38"></td> <td id="file-gistfile1-py-LC38" class="blob-code blob-code-inner js-file-line">@view_config(context=CatList, renderer=&#39;cat_list.mako&#39;)</td> </tr> <tr> <td id="file-gistfile1-py-L39" class="blob-num js-line-number js-blob-rnum" data-line-number="39"></td> <td id="file-gistfile1-py-LC39" class="blob-code blob-code-inner js-file-line">def cat_list(context, request):</td> </tr> <tr> <td id="file-gistfile1-py-L40" class="blob-num js-line-number js-blob-rnum" data-line-number="40"></td> <td id="file-gistfile1-py-LC40" class="blob-code blob-code-inner js-file-line"> return dict()</td> </tr> <tr> <td id="file-gistfile1-py-L41" class="blob-num js-line-number js-blob-rnum" data-line-number="41"></td> <td id="file-gistfile1-py-LC41" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-gistfile1-py-L42" class="blob-num js-line-number js-blob-rnum" data-line-number="42"></td> <td id="file-gistfile1-py-LC42" class="blob-code blob-code-inner js-file-line">@view_config(context=Cat, name=&#39;&#39;, renderer=&#39;cat_view.mako&#39;)</td> </tr> <tr> <td id="file-gistfile1-py-L43" class="blob-num js-line-number js-blob-rnum" data-line-number="43"></td> <td id="file-gistfile1-py-LC43" class="blob-code blob-code-inner js-file-line">def cat_view(context, request):</td> </tr> <tr> <td id="file-gistfile1-py-L44" class="blob-num js-line-number js-blob-rnum" data-line-number="44"></td> <td id="file-gistfile1-py-LC44" class="blob-code blob-code-inner js-file-line"> return dict(cat=context.cat)</td> </tr> <tr> <td id="file-gistfile1-py-L45" class="blob-num js-line-number js-blob-rnum" data-line-number="45"></td> <td id="file-gistfile1-py-LC45" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-gistfile1-py-L46" class="blob-num js-line-number js-blob-rnum" data-line-number="46"></td> <td id="file-gistfile1-py-LC46" class="blob-code blob-code-inner js-file-line">@view_config(context=Cat, name=&#39;owners&#39;, renderer=&#39;cat_owners.mako&#39;)</td> </tr> <tr> <td id="file-gistfile1-py-L47" class="blob-num js-line-number js-blob-rnum" data-line-number="47"></td> <td id="file-gistfile1-py-LC47" class="blob-code blob-code-inner js-file-line">def cat_owners(context, request):</td> </tr> <tr> <td id="file-gistfile1-py-L48" class="blob-num js-line-number js-blob-rnum" data-line-number="48"></td> <td id="file-gistfile1-py-LC48" class="blob-code blob-code-inner js-file-line"> return dict(cat=context.cat)</td> </tr> </table> </div> </div> </div> </div> tag:gist.github.com,2008:Gist/coryvirok/9478263 2014-03-11T02:15:25Z 2016-09-06T12:07:17Z Rollbar javascript notifier. Ignore uncaught errors that are *not* from www.mycompany.com. Cory Virok https://gist.github.com/coryvirok <a href="https://gist.github.com/coryvirok/9478263#file-gistfile1-js">gistfile1.js</a> <div class="js-gist-file-update-container js-task-list-container"> <div id="file-gistfile1-js" class="file my-2"> <div itemprop="text" class="Box-body p-0 blob-wrapper data type-javascript " style="overflow: auto" tabindex="0" role="region" aria-label="gistfile1.js content, created by coryvirok on 02:15AM on March 11, 2014." > <div class="js-check-hidden-unicode js-blob-code-container 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 d="M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path> </svg> <span> This file contains hidden or 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 class="Link--inTextBlock" 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="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 d="M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path> </svg> </span></template> <table data-hpc class="highlight tab-size js-file-line-container" data-tab-size="4" data-paste-markdown-skip data-tagsearch-path="gistfile1.js"> <tr> <td id="file-gistfile1-js-L1" class="blob-num js-line-number js-blob-rnum" data-line-number="1"></td> <td id="file-gistfile1-js-LC1" class="blob-code blob-code-inner js-file-line">function ignoreRemoteUncaught(isUncaught, args, payload) {</td> </tr> <tr> <td id="file-gistfile1-js-L2" class="blob-num js-line-number js-blob-rnum" data-line-number="2"></td> <td id="file-gistfile1-js-LC2" class="blob-code blob-code-inner js-file-line"> try {</td> </tr> <tr> <td id="file-gistfile1-js-L3" class="blob-num js-line-number js-blob-rnum" data-line-number="3"></td> <td id="file-gistfile1-js-LC3" class="blob-code blob-code-inner js-file-line"> var filename = payload.data.body.trace.frames[0].filename;</td> </tr> <tr> <td id="file-gistfile1-js-L4" class="blob-num js-line-number js-blob-rnum" data-line-number="4"></td> <td id="file-gistfile1-js-LC4" class="blob-code blob-code-inner js-file-line"> if (isUncaught &amp;&amp; !filename.match(/^https?:\/\/www\.mycompany\.com/)) {</td> </tr> <tr> <td id="file-gistfile1-js-L5" class="blob-num js-line-number js-blob-rnum" data-line-number="5"></td> <td id="file-gistfile1-js-LC5" class="blob-code blob-code-inner js-file-line"> // Ignore uncaught errors that are not from www.mycompany.com.</td> </tr> <tr> <td id="file-gistfile1-js-L6" class="blob-num js-line-number js-blob-rnum" data-line-number="6"></td> <td id="file-gistfile1-js-LC6" class="blob-code blob-code-inner js-file-line"> return true;</td> </tr> <tr> <td id="file-gistfile1-js-L7" class="blob-num js-line-number js-blob-rnum" data-line-number="7"></td> <td id="file-gistfile1-js-LC7" class="blob-code blob-code-inner js-file-line"> }</td> </tr> <tr> <td id="file-gistfile1-js-L8" class="blob-num js-line-number js-blob-rnum" data-line-number="8"></td> <td id="file-gistfile1-js-LC8" class="blob-code blob-code-inner js-file-line"> } catch (e) {</td> </tr> <tr> <td id="file-gistfile1-js-L9" class="blob-num js-line-number js-blob-rnum" data-line-number="9"></td> <td id="file-gistfile1-js-LC9" class="blob-code blob-code-inner js-file-line"> // Most likely there was no filename or the frame doesn&#39;t exist.</td> </tr> <tr> <td id="file-gistfile1-js-L10" class="blob-num js-line-number js-blob-rnum" data-line-number="10"></td> <td id="file-gistfile1-js-LC10" class="blob-code blob-code-inner js-file-line"> }</td> </tr> <tr> <td id="file-gistfile1-js-L11" class="blob-num js-line-number js-blob-rnum" data-line-number="11"></td> <td id="file-gistfile1-js-LC11" class="blob-code blob-code-inner js-file-line"> return false;</td> </tr> <tr> <td id="file-gistfile1-js-L12" class="blob-num js-line-number js-blob-rnum" data-line-number="12"></td> <td id="file-gistfile1-js-LC12" class="blob-code blob-code-inner js-file-line">}</td> </tr> <tr> <td id="file-gistfile1-js-L13" class="blob-num js-line-number js-blob-rnum" data-line-number="13"></td> <td id="file-gistfile1-js-LC13" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-gistfile1-js-L14" class="blob-num js-line-number js-blob-rnum" data-line-number="14"></td> <td id="file-gistfile1-js-LC14" class="blob-code blob-code-inner js-file-line">Rollbar.configure({checkIgnore: ignoreRemoteUncaught});</td> </tr> <tr> <td id="file-gistfile1-js-L15" class="blob-num js-line-number js-blob-rnum" data-line-number="15"></td> <td id="file-gistfile1-js-LC15" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-gistfile1-js-L16" class="blob-num js-line-number js-blob-rnum" data-line-number="16"></td> <td id="file-gistfile1-js-LC16" class="blob-code blob-code-inner js-file-line">// or...</td> </tr> <tr> <td id="file-gistfile1-js-L17" class="blob-num js-line-number js-blob-rnum" data-line-number="17"></td> <td id="file-gistfile1-js-LC17" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-gistfile1-js-L18" class="blob-num js-line-number js-blob-rnum" data-line-number="18"></td> <td id="file-gistfile1-js-LC18" class="blob-code blob-code-inner js-file-line">_rollbarConfig({</td> </tr> <tr> <td id="file-gistfile1-js-L19" class="blob-num js-line-number js-blob-rnum" data-line-number="19"></td> <td id="file-gistfile1-js-LC19" class="blob-code blob-code-inner js-file-line"> // ...</td> </tr> <tr> <td id="file-gistfile1-js-L20" class="blob-num js-line-number js-blob-rnum" data-line-number="20"></td> <td id="file-gistfile1-js-LC20" class="blob-code blob-code-inner js-file-line"> checkIgnore: ignoreRemoteUncaught</td> </tr> <tr> <td id="file-gistfile1-js-L21" class="blob-num js-line-number js-blob-rnum" data-line-number="21"></td> <td id="file-gistfile1-js-LC21" class="blob-code blob-code-inner js-file-line">});</td> </tr> </table> </div> </div> </div> </div> tag:gist.github.com,2008:Gist/coryvirok/7257206 2013-10-31T21:08:21Z 2015-12-27T03:09:13Z solved Cory Virok https://gist.github.com/coryvirok <a href="https://gist.github.com/coryvirok/7257206#file-solved">solved</a> <div class="js-gist-file-update-container js-task-list-container"> <div id="file-solved" class="file my-2"> <div itemprop="text" class="Box-body p-0 blob-wrapper data type-text " style="overflow: auto" tabindex="0" role="region" aria-label="solved content, created by coryvirok on 09:08PM on October 31, 2013." > <div class="js-check-hidden-unicode js-blob-code-container 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 d="M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path> </svg> <span> This file contains hidden or 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 class="Link--inTextBlock" 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="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 d="M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path> </svg> </span></template> <table data-hpc class="highlight tab-size js-file-line-container" data-tab-size="4" data-paste-markdown-skip data-tagsearch-path="solved"> <tr> <td id="file-solved-L1" class="blob-num js-line-number js-blob-rnum" data-line-number="1"></td> <td id="file-solved-LC1" class="blob-code blob-code-inner js-file-line">function f(addr) {</td> </tr> <tr> <td id="file-solved-L2" class="blob-num js-line-number js-blob-rnum" data-line-number="2"></td> <td id="file-solved-LC2" class="blob-code blob-code-inner js-file-line"> $.getJSON(addr, function(d) {</td> </tr> <tr> <td id="file-solved-L3" class="blob-num js-line-number js-blob-rnum" data-line-number="3"></td> <td id="file-solved-LC3" class="blob-code blob-code-inner js-file-line"> if (d.follow) {</td> </tr> <tr> <td id="file-solved-L4" class="blob-num js-line-number js-blob-rnum" data-line-number="4"></td> <td id="file-solved-LC4" class="blob-code blob-code-inner js-file-line"> f(d.follow);</td> </tr> <tr> <td id="file-solved-L5" class="blob-num js-line-number js-blob-rnum" data-line-number="5"></td> <td id="file-solved-LC5" class="blob-code blob-code-inner js-file-line"> } else {</td> </tr> <tr> <td id="file-solved-L6" class="blob-num js-line-number js-blob-rnum" data-line-number="6"></td> <td id="file-solved-LC6" class="blob-code blob-code-inner js-file-line"> console.log(d);</td> </tr> <tr> <td id="file-solved-L7" class="blob-num js-line-number js-blob-rnum" data-line-number="7"></td> <td id="file-solved-LC7" class="blob-code blob-code-inner js-file-line"> }</td> </tr> <tr> <td id="file-solved-L8" class="blob-num js-line-number js-blob-rnum" data-line-number="8"></td> <td id="file-solved-LC8" class="blob-code blob-code-inner js-file-line"> })</td> </tr> <tr> <td id="file-solved-L9" class="blob-num js-line-number js-blob-rnum" data-line-number="9"></td> <td id="file-solved-LC9" class="blob-code blob-code-inner js-file-line">}</td> </tr> <tr> <td id="file-solved-L10" class="blob-num js-line-number js-blob-rnum" data-line-number="10"></td> <td id="file-solved-LC10" class="blob-code blob-code-inner js-file-line">f(&#39;http://letsrevolutionizetesting.com/challenge&#39;)</td> </tr> </table> </div> </div> </div> </div> tag:gist.github.com,2008:Gist/coryvirok/5104120 2013-03-06T23:11:03Z 2015-12-14T14:58:54Z http://rollbar.com/docs/deploys_bash/ Cory Virok https://gist.github.com/coryvirok <a href="https://gist.github.com/coryvirok/5104120#file-json-deploy-post">JSON deploy POST</a> <div class="js-gist-file-update-container js-task-list-container"> <div id="file-json-deploy-post" class="file my-2"> <div itemprop="text" class="Box-body p-0 blob-wrapper data type-text " style="overflow: auto" tabindex="0" role="region" aria-label="JSON deploy POST content, created by coryvirok on 11:11PM on March 06, 2013." > <div class="js-check-hidden-unicode js-blob-code-container 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 d="M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path> </svg> <span> This file contains hidden or 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 class="Link--inTextBlock" 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="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 d="M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path> </svg> </span></template> <table data-hpc class="highlight tab-size js-file-line-container" data-tab-size="4" data-paste-markdown-skip data-tagsearch-path="JSON deploy POST"> <tr> <td id="file-json-deploy-post-L1" class="blob-num js-line-number js-blob-rnum" data-line-number="1"></td> <td id="file-json-deploy-post-LC1" class="blob-code blob-code-inner js-file-line">import json</td> </tr> <tr> <td id="file-json-deploy-post-L2" class="blob-num js-line-number js-blob-rnum" data-line-number="2"></td> <td id="file-json-deploy-post-LC2" class="blob-code blob-code-inner js-file-line">import requests</td> </tr> <tr> <td id="file-json-deploy-post-L3" class="blob-num js-line-number js-blob-rnum" data-line-number="3"></td> <td id="file-json-deploy-post-LC3" class="blob-code blob-code-inner js-file-line">import time</td> </tr> <tr> <td id="file-json-deploy-post-L4" class="blob-num js-line-number js-blob-rnum" data-line-number="4"></td> <td id="file-json-deploy-post-LC4" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-json-deploy-post-L5" class="blob-num js-line-number js-blob-rnum" data-line-number="5"></td> <td id="file-json-deploy-post-LC5" class="blob-code blob-code-inner js-file-line">ACCESS_TOKEN = &#39;token&#39;</td> </tr> <tr> <td id="file-json-deploy-post-L6" class="blob-num js-line-number js-blob-rnum" data-line-number="6"></td> <td id="file-json-deploy-post-LC6" class="blob-code blob-code-inner js-file-line">payload = {</td> </tr> <tr> <td id="file-json-deploy-post-L7" class="blob-num js-line-number js-blob-rnum" data-line-number="7"></td> <td id="file-json-deploy-post-LC7" class="blob-code blob-code-inner js-file-line"> &#39;access_token&#39;: ACCESS_TOKEN,</td> </tr> <tr> <td id="file-json-deploy-post-L8" class="blob-num js-line-number js-blob-rnum" data-line-number="8"></td> <td id="file-json-deploy-post-LC8" class="blob-code blob-code-inner js-file-line"> &#39;timestamp&#39;: int(time.time()),</td> </tr> <tr> <td id="file-json-deploy-post-L9" class="blob-num js-line-number js-blob-rnum" data-line-number="9"></td> <td id="file-json-deploy-post-LC9" class="blob-code blob-code-inner js-file-line"> &#39;environment&#39;: &#39;development&#39;,</td> </tr> <tr> <td id="file-json-deploy-post-L10" class="blob-num js-line-number js-blob-rnum" data-line-number="10"></td> <td id="file-json-deploy-post-LC10" class="blob-code blob-code-inner js-file-line"> &#39;revision&#39;: &#39;12345678&#39;,</td> </tr> <tr> <td id="file-json-deploy-post-L11" class="blob-num js-line-number js-blob-rnum" data-line-number="11"></td> <td id="file-json-deploy-post-LC11" class="blob-code blob-code-inner js-file-line"> &#39;local_username&#39;: &#39;cory&#39;,</td> </tr> <tr> <td id="file-json-deploy-post-L12" class="blob-num js-line-number js-blob-rnum" data-line-number="12"></td> <td id="file-json-deploy-post-LC12" class="blob-code blob-code-inner js-file-line"> &#39;comment&#39;: &#39;Hello JSON deploys!&#39;</td> </tr> <tr> <td id="file-json-deploy-post-L13" class="blob-num js-line-number js-blob-rnum" data-line-number="13"></td> <td id="file-json-deploy-post-LC13" class="blob-code blob-code-inner js-file-line">}</td> </tr> <tr> <td id="file-json-deploy-post-L14" class="blob-num js-line-number js-blob-rnum" data-line-number="14"></td> <td id="file-json-deploy-post-LC14" class="blob-code blob-code-inner js-file-line">requests.post(&#39;https://api.rollbar.com/api/1/deploy/&#39;, data=json.dumps(payload))</td> </tr> </table> </div> </div> </div> </div> tag:gist.github.com,2008:Gist/coryvirok/4166081 2012-11-29T01:18:20Z 2015-10-13T08:17:55Z gist:4166081 Cory Virok https://gist.github.com/coryvirok <a href="https://gist.github.com/coryvirok/4166081#file-gistfile1-js">gistfile1.js</a> <div class="js-gist-file-update-container js-task-list-container"> <div id="file-gistfile1-js" class="file my-2"> <div itemprop="text" class="Box-body p-0 blob-wrapper data type-javascript " style="overflow: auto" tabindex="0" role="region" aria-label="gistfile1.js content, created by coryvirok on 01:18AM on November 29, 2012." > <div class="js-check-hidden-unicode js-blob-code-container 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 d="M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path> </svg> <span> This file contains hidden or 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 class="Link--inTextBlock" 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="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 d="M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path> </svg> </span></template> <table data-hpc class="highlight tab-size js-file-line-container" data-tab-size="4" data-paste-markdown-skip data-tagsearch-path="gistfile1.js"> <tr> <td id="file-gistfile1-js-L1" class="blob-num js-line-number js-blob-rnum" data-line-number="1"></td> <td id="file-gistfile1-js-LC1" class="blob-code blob-code-inner js-file-line">var eventstream = require(&#39;event-stream&#39;);</td> </tr> <tr> <td id="file-gistfile1-js-L2" class="blob-num js-line-number js-blob-rnum" data-line-number="2"></td> <td id="file-gistfile1-js-LC2" class="blob-code blob-code-inner js-file-line">var fs = require(&#39;fs&#39;);</td> </tr> <tr> <td id="file-gistfile1-js-L3" class="blob-num js-line-number js-blob-rnum" data-line-number="3"></td> <td id="file-gistfile1-js-LC3" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-gistfile1-js-L4" class="blob-num js-line-number js-blob-rnum" data-line-number="4"></td> <td id="file-gistfile1-js-LC4" class="blob-code blob-code-inner js-file-line">// creates a new write stream on first write() call</td> </tr> <tr> <td id="file-gistfile1-js-L5" class="blob-num js-line-number js-blob-rnum" data-line-number="5"></td> <td id="file-gistfile1-js-LC5" class="blob-code blob-code-inner js-file-line">exports.createLazyWriteStream = function(wsFactory) {</td> </tr> <tr> <td id="file-gistfile1-js-L6" class="blob-num js-line-number js-blob-rnum" data-line-number="6"></td> <td id="file-gistfile1-js-LC6" class="blob-code blob-code-inner js-file-line"> var Stream = require(&#39;stream&#39;);</td> </tr> <tr> <td id="file-gistfile1-js-L7" class="blob-num js-line-number js-blob-rnum" data-line-number="7"></td> <td id="file-gistfile1-js-LC7" class="blob-code blob-code-inner js-file-line"> var s = new Stream;</td> </tr> <tr> <td id="file-gistfile1-js-L8" class="blob-num js-line-number js-blob-rnum" data-line-number="8"></td> <td id="file-gistfile1-js-LC8" class="blob-code blob-code-inner js-file-line"> var ws; </td> </tr> <tr> <td id="file-gistfile1-js-L9" class="blob-num js-line-number js-blob-rnum" data-line-number="9"></td> <td id="file-gistfile1-js-LC9" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-gistfile1-js-L10" class="blob-num js-line-number js-blob-rnum" data-line-number="10"></td> <td id="file-gistfile1-js-LC10" class="blob-code blob-code-inner js-file-line"> s.writable = true;</td> </tr> <tr> <td id="file-gistfile1-js-L11" class="blob-num js-line-number js-blob-rnum" data-line-number="11"></td> <td id="file-gistfile1-js-LC11" class="blob-code blob-code-inner js-file-line"> s.write = function(buf) {</td> </tr> <tr> <td id="file-gistfile1-js-L12" class="blob-num js-line-number js-blob-rnum" data-line-number="12"></td> <td id="file-gistfile1-js-LC12" class="blob-code blob-code-inner js-file-line"> if (!ws) {</td> </tr> <tr> <td id="file-gistfile1-js-L13" class="blob-num js-line-number js-blob-rnum" data-line-number="13"></td> <td id="file-gistfile1-js-LC13" class="blob-code blob-code-inner js-file-line"> console.log(&#39;creating ws&#39;);</td> </tr> <tr> <td id="file-gistfile1-js-L14" class="blob-num js-line-number js-blob-rnum" data-line-number="14"></td> <td id="file-gistfile1-js-LC14" class="blob-code blob-code-inner js-file-line"> ws = wsFactory();</td> </tr> <tr> <td id="file-gistfile1-js-L15" class="blob-num js-line-number js-blob-rnum" data-line-number="15"></td> <td id="file-gistfile1-js-LC15" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-gistfile1-js-L16" class="blob-num js-line-number js-blob-rnum" data-line-number="16"></td> <td id="file-gistfile1-js-LC16" class="blob-code blob-code-inner js-file-line"> var self = this;</td> </tr> <tr> <td id="file-gistfile1-js-L17" class="blob-num js-line-number js-blob-rnum" data-line-number="17"></td> <td id="file-gistfile1-js-LC17" class="blob-code blob-code-inner js-file-line"> ws.on(&#39;drain&#39;, function() { self.emit(&#39;drain&#39;); }); </td> </tr> <tr> <td id="file-gistfile1-js-L18" class="blob-num js-line-number js-blob-rnum" data-line-number="18"></td> <td id="file-gistfile1-js-LC18" class="blob-code blob-code-inner js-file-line"> ws.on(&#39;error&#39;, function(err) { self.emit(&#39;error&#39;, err); }); </td> </tr> <tr> <td id="file-gistfile1-js-L19" class="blob-num js-line-number js-blob-rnum" data-line-number="19"></td> <td id="file-gistfile1-js-LC19" class="blob-code blob-code-inner js-file-line"> ws.on(&#39;close&#39;, function() { self.emit(&#39;close&#39;); }); </td> </tr> <tr> <td id="file-gistfile1-js-L20" class="blob-num js-line-number js-blob-rnum" data-line-number="20"></td> <td id="file-gistfile1-js-LC20" class="blob-code blob-code-inner js-file-line"> ws.on(&#39;pipe&#39;, function(src) { self.emit(&#39;pipe&#39;, src); }); </td> </tr> <tr> <td id="file-gistfile1-js-L21" class="blob-num js-line-number js-blob-rnum" data-line-number="21"></td> <td id="file-gistfile1-js-LC21" class="blob-code blob-code-inner js-file-line"> } </td> </tr> <tr> <td id="file-gistfile1-js-L22" class="blob-num js-line-number js-blob-rnum" data-line-number="22"></td> <td id="file-gistfile1-js-LC22" class="blob-code blob-code-inner js-file-line"> console.log(&#39;&gt; &#39; + buf);</td> </tr> <tr> <td id="file-gistfile1-js-L23" class="blob-num js-line-number js-blob-rnum" data-line-number="23"></td> <td id="file-gistfile1-js-LC23" class="blob-code blob-code-inner js-file-line"> return ws.write(buf);</td> </tr> <tr> <td id="file-gistfile1-js-L24" class="blob-num js-line-number js-blob-rnum" data-line-number="24"></td> <td id="file-gistfile1-js-LC24" class="blob-code blob-code-inner js-file-line"> }; </td> </tr> <tr> <td id="file-gistfile1-js-L25" class="blob-num js-line-number js-blob-rnum" data-line-number="25"></td> <td id="file-gistfile1-js-LC25" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-gistfile1-js-L26" class="blob-num js-line-number js-blob-rnum" data-line-number="26"></td> <td id="file-gistfile1-js-LC26" class="blob-code blob-code-inner js-file-line"> s.end = function(buf) {</td> </tr> <tr> <td id="file-gistfile1-js-L27" class="blob-num js-line-number js-blob-rnum" data-line-number="27"></td> <td id="file-gistfile1-js-LC27" class="blob-code blob-code-inner js-file-line"> if (arguments.length) {</td> </tr> <tr> <td id="file-gistfile1-js-L28" class="blob-num js-line-number js-blob-rnum" data-line-number="28"></td> <td id="file-gistfile1-js-LC28" class="blob-code blob-code-inner js-file-line"> s.write(buf);</td> </tr> <tr> <td id="file-gistfile1-js-L29" class="blob-num js-line-number js-blob-rnum" data-line-number="29"></td> <td id="file-gistfile1-js-LC29" class="blob-code blob-code-inner js-file-line"> } </td> </tr> <tr> <td id="file-gistfile1-js-L30" class="blob-num js-line-number js-blob-rnum" data-line-number="30"></td> <td id="file-gistfile1-js-LC30" class="blob-code blob-code-inner js-file-line"> s.writable = false;</td> </tr> <tr> <td id="file-gistfile1-js-L31" class="blob-num js-line-number js-blob-rnum" data-line-number="31"></td> <td id="file-gistfile1-js-LC31" class="blob-code blob-code-inner js-file-line"> if (ws) {</td> </tr> <tr> <td id="file-gistfile1-js-L32" class="blob-num js-line-number js-blob-rnum" data-line-number="32"></td> <td id="file-gistfile1-js-LC32" class="blob-code blob-code-inner js-file-line"> ws.end();</td> </tr> <tr> <td id="file-gistfile1-js-L33" class="blob-num js-line-number js-blob-rnum" data-line-number="33"></td> <td id="file-gistfile1-js-LC33" class="blob-code blob-code-inner js-file-line"> } </td> </tr> <tr> <td id="file-gistfile1-js-L34" class="blob-num js-line-number js-blob-rnum" data-line-number="34"></td> <td id="file-gistfile1-js-LC34" class="blob-code blob-code-inner js-file-line"> }; </td> </tr> <tr> <td id="file-gistfile1-js-L35" class="blob-num js-line-number js-blob-rnum" data-line-number="35"></td> <td id="file-gistfile1-js-LC35" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-gistfile1-js-L36" class="blob-num js-line-number js-blob-rnum" data-line-number="36"></td> <td id="file-gistfile1-js-LC36" class="blob-code blob-code-inner js-file-line"> s.destroy = function () {</td> </tr> <tr> <td id="file-gistfile1-js-L37" class="blob-num js-line-number js-blob-rnum" data-line-number="37"></td> <td id="file-gistfile1-js-LC37" class="blob-code blob-code-inner js-file-line"> s.writable = false;</td> </tr> <tr> <td id="file-gistfile1-js-L38" class="blob-num js-line-number js-blob-rnum" data-line-number="38"></td> <td id="file-gistfile1-js-LC38" class="blob-code blob-code-inner js-file-line"> if (ws) {</td> </tr> <tr> <td id="file-gistfile1-js-L39" class="blob-num js-line-number js-blob-rnum" data-line-number="39"></td> <td id="file-gistfile1-js-LC39" class="blob-code blob-code-inner js-file-line"> ws.destroy();</td> </tr> <tr> <td id="file-gistfile1-js-L40" class="blob-num js-line-number js-blob-rnum" data-line-number="40"></td> <td id="file-gistfile1-js-LC40" class="blob-code blob-code-inner js-file-line"> } </td> </tr> <tr> <td id="file-gistfile1-js-L41" class="blob-num js-line-number js-blob-rnum" data-line-number="41"></td> <td id="file-gistfile1-js-LC41" class="blob-code blob-code-inner js-file-line"> }; </td> </tr> <tr> <td id="file-gistfile1-js-L42" class="blob-num js-line-number js-blob-rnum" data-line-number="42"></td> <td id="file-gistfile1-js-LC42" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-gistfile1-js-L43" class="blob-num js-line-number js-blob-rnum" data-line-number="43"></td> <td id="file-gistfile1-js-LC43" class="blob-code blob-code-inner js-file-line"> return s;</td> </tr> <tr> <td id="file-gistfile1-js-L44" class="blob-num js-line-number js-blob-rnum" data-line-number="44"></td> <td id="file-gistfile1-js-LC44" class="blob-code blob-code-inner js-file-line">};</td> </tr> <tr> <td id="file-gistfile1-js-L45" class="blob-num js-line-number js-blob-rnum" data-line-number="45"></td> <td id="file-gistfile1-js-LC45" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-gistfile1-js-L46" class="blob-num js-line-number js-blob-rnum" data-line-number="46"></td> <td id="file-gistfile1-js-LC46" class="blob-code blob-code-inner js-file-line">var s = exports.createLazyWriteStream(function() {</td> </tr> <tr> <td id="file-gistfile1-js-L47" class="blob-num js-line-number js-blob-rnum" data-line-number="47"></td> <td id="file-gistfile1-js-LC47" class="blob-code blob-code-inner js-file-line"> return fs.createWriteStream(&#39;./tmp.data&#39;, {flags: &#39;a&#39;});</td> </tr> <tr> <td id="file-gistfile1-js-L48" class="blob-num js-line-number js-blob-rnum" data-line-number="48"></td> <td id="file-gistfile1-js-LC48" class="blob-code blob-code-inner js-file-line">});</td> </tr> <tr> <td id="file-gistfile1-js-L49" class="blob-num js-line-number js-blob-rnum" data-line-number="49"></td> <td id="file-gistfile1-js-LC49" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-gistfile1-js-L50" class="blob-num js-line-number js-blob-rnum" data-line-number="50"></td> <td id="file-gistfile1-js-LC50" class="blob-code blob-code-inner js-file-line">s.on(&#39;close&#39;, function() {</td> </tr> <tr> <td id="file-gistfile1-js-L51" class="blob-num js-line-number js-blob-rnum" data-line-number="51"></td> <td id="file-gistfile1-js-LC51" class="blob-code blob-code-inner js-file-line"> console.log(&#39;closed... done&#39;);</td> </tr> <tr> <td id="file-gistfile1-js-L52" class="blob-num js-line-number js-blob-rnum" data-line-number="52"></td> <td id="file-gistfile1-js-LC52" class="blob-code blob-code-inner js-file-line">});</td> </tr> <tr> <td id="file-gistfile1-js-L53" class="blob-num js-line-number js-blob-rnum" data-line-number="53"></td> <td id="file-gistfile1-js-LC53" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-gistfile1-js-L54" class="blob-num js-line-number js-blob-rnum" data-line-number="54"></td> <td id="file-gistfile1-js-LC54" class="blob-code blob-code-inner js-file-line">console.log(&#39;writing&#39;);</td> </tr> <tr> <td id="file-gistfile1-js-L55" class="blob-num js-line-number js-blob-rnum" data-line-number="55"></td> <td id="file-gistfile1-js-LC55" class="blob-code blob-code-inner js-file-line">setTimeout(function() {</td> </tr> <tr> <td id="file-gistfile1-js-L56" class="blob-num js-line-number js-blob-rnum" data-line-number="56"></td> <td id="file-gistfile1-js-LC56" class="blob-code blob-code-inner js-file-line"> s.write(&#39;oh hai&#39;);</td> </tr> <tr> <td id="file-gistfile1-js-L57" class="blob-num js-line-number js-blob-rnum" data-line-number="57"></td> <td id="file-gistfile1-js-LC57" class="blob-code blob-code-inner js-file-line">}, 5000);</td> </tr> <tr> <td id="file-gistfile1-js-L58" class="blob-num js-line-number js-blob-rnum" data-line-number="58"></td> <td id="file-gistfile1-js-LC58" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-gistfile1-js-L59" class="blob-num js-line-number js-blob-rnum" data-line-number="59"></td> <td id="file-gistfile1-js-LC59" class="blob-code blob-code-inner js-file-line">console.log(&#39;ending&#39;);</td> </tr> <tr> <td id="file-gistfile1-js-L60" class="blob-num js-line-number js-blob-rnum" data-line-number="60"></td> <td id="file-gistfile1-js-LC60" class="blob-code blob-code-inner js-file-line">s.end();</td> </tr> <tr> <td id="file-gistfile1-js-L61" class="blob-num js-line-number js-blob-rnum" data-line-number="61"></td> <td id="file-gistfile1-js-LC61" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-gistfile1-js-L62" class="blob-num js-line-number js-blob-rnum" data-line-number="62"></td> <td id="file-gistfile1-js-LC62" class="blob-code blob-code-inner js-file-line">console.log(&#39;done&#39;);</td> </tr> </table> </div> </div> </div> </div> tag:gist.github.com,2008:Gist/coryvirok/3897000 2012-10-16T02:53:29Z 2021-04-16T10:01:50Z nodejs plaintext -> zlib compressed data -> base64 and back... why doesn't it work? Cory Virok https://gist.github.com/coryvirok <a href="https://gist.github.com/coryvirok/3897000#file-hrmmm-js">hrmmm.js</a> <div class="js-gist-file-update-container js-task-list-container"> <div id="file-hrmmm-js" class="file my-2"> <div itemprop="text" class="Box-body p-0 blob-wrapper data type-javascript " style="overflow: auto" tabindex="0" role="region" aria-label="hrmmm.js content, created by coryvirok on 02:53AM on October 16, 2012." > <div class="js-check-hidden-unicode js-blob-code-container 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 d="M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path> </svg> <span> This file contains hidden or 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 class="Link--inTextBlock" 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="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 d="M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path> </svg> </span></template> <table data-hpc class="highlight tab-size js-file-line-container" data-tab-size="4" data-paste-markdown-skip data-tagsearch-path="hrmmm.js"> <tr> <td id="file-hrmmm-js-L1" class="blob-num js-line-number js-blob-rnum" data-line-number="1"></td> <td id="file-hrmmm-js-LC1" class="blob-code blob-code-inner js-file-line">var zlib = require(&#39;zlib&#39;);</td> </tr> <tr> <td id="file-hrmmm-js-L2" class="blob-num js-line-number js-blob-rnum" data-line-number="2"></td> <td id="file-hrmmm-js-LC2" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-hrmmm-js-L3" class="blob-num js-line-number js-blob-rnum" data-line-number="3"></td> <td id="file-hrmmm-js-LC3" class="blob-code blob-code-inner js-file-line">var plaintext = &#39;Hello World&#39;;</td> </tr> <tr> <td id="file-hrmmm-js-L4" class="blob-num js-line-number js-blob-rnum" data-line-number="4"></td> <td id="file-hrmmm-js-LC4" class="blob-code blob-code-inner js-file-line">var compressedData = [];</td> </tr> <tr> <td id="file-hrmmm-js-L5" class="blob-num js-line-number js-blob-rnum" data-line-number="5"></td> <td id="file-hrmmm-js-LC5" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-hrmmm-js-L6" class="blob-num js-line-number js-blob-rnum" data-line-number="6"></td> <td id="file-hrmmm-js-LC6" class="blob-code blob-code-inner js-file-line">var compressor = zlib.createGzip();</td> </tr> <tr> <td id="file-hrmmm-js-L7" class="blob-num js-line-number js-blob-rnum" data-line-number="7"></td> <td id="file-hrmmm-js-LC7" class="blob-code blob-code-inner js-file-line">compressor.write(plaintext);</td> </tr> <tr> <td id="file-hrmmm-js-L8" class="blob-num js-line-number js-blob-rnum" data-line-number="8"></td> <td id="file-hrmmm-js-LC8" class="blob-code blob-code-inner js-file-line">compressor.end();</td> </tr> <tr> <td id="file-hrmmm-js-L9" class="blob-num js-line-number js-blob-rnum" data-line-number="9"></td> <td id="file-hrmmm-js-LC9" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-hrmmm-js-L10" class="blob-num js-line-number js-blob-rnum" data-line-number="10"></td> <td id="file-hrmmm-js-LC10" class="blob-code blob-code-inner js-file-line">compressor.on(&#39;data&#39;, function(d) { compressedData.push(d);});</td> </tr> <tr> <td id="file-hrmmm-js-L11" class="blob-num js-line-number js-blob-rnum" data-line-number="11"></td> <td id="file-hrmmm-js-LC11" class="blob-code blob-code-inner js-file-line">compressor.on(&#39;end&#39;, function() {</td> </tr> <tr> <td id="file-hrmmm-js-L12" class="blob-num js-line-number js-blob-rnum" data-line-number="12"></td> <td id="file-hrmmm-js-LC12" class="blob-code blob-code-inner js-file-line"> var b64CompressedData = new Buffer(compressedData.join(&#39;&#39;)).toString(&#39;base64&#39;);</td> </tr> <tr> <td id="file-hrmmm-js-L13" class="blob-num js-line-number js-blob-rnum" data-line-number="13"></td> <td id="file-hrmmm-js-LC13" class="blob-code blob-code-inner js-file-line"> var b64CompressedBuf = new Buffer(b64CompressedData, &#39;base64&#39;);</td> </tr> <tr> <td id="file-hrmmm-js-L14" class="blob-num js-line-number js-blob-rnum" data-line-number="14"></td> <td id="file-hrmmm-js-LC14" class="blob-code blob-code-inner js-file-line"> </td> </tr> <tr> <td id="file-hrmmm-js-L15" class="blob-num js-line-number js-blob-rnum" data-line-number="15"></td> <td id="file-hrmmm-js-LC15" class="blob-code blob-code-inner js-file-line"> var decompressedData = [];</td> </tr> <tr> <td id="file-hrmmm-js-L16" class="blob-num js-line-number js-blob-rnum" data-line-number="16"></td> <td id="file-hrmmm-js-LC16" class="blob-code blob-code-inner js-file-line"> var decompressor = zlib.createGunzip();</td> </tr> <tr> <td id="file-hrmmm-js-L17" class="blob-num js-line-number js-blob-rnum" data-line-number="17"></td> <td id="file-hrmmm-js-LC17" class="blob-code blob-code-inner js-file-line"> decompressor.write(b64CompressedBuf);</td> </tr> <tr> <td id="file-hrmmm-js-L18" class="blob-num js-line-number js-blob-rnum" data-line-number="18"></td> <td id="file-hrmmm-js-LC18" class="blob-code blob-code-inner js-file-line"> decompressor.end();</td> </tr> <tr> <td id="file-hrmmm-js-L19" class="blob-num js-line-number js-blob-rnum" data-line-number="19"></td> <td id="file-hrmmm-js-LC19" class="blob-code blob-code-inner js-file-line"> decompressor.on(&#39;data&#39;, function(d) { decompressedData.push(d); });</td> </tr> <tr> <td id="file-hrmmm-js-L20" class="blob-num js-line-number js-blob-rnum" data-line-number="20"></td> <td id="file-hrmmm-js-LC20" class="blob-code blob-code-inner js-file-line"> decompressor.on(&#39;error&#39;, function(e) { console.error(&#39;error: &#39; + e); });</td> </tr> <tr> <td id="file-hrmmm-js-L21" class="blob-num js-line-number js-blob-rnum" data-line-number="21"></td> <td id="file-hrmmm-js-LC21" class="blob-code blob-code-inner js-file-line"> decompressor.on(&#39;end&#39;, function() {</td> </tr> <tr> <td id="file-hrmmm-js-L22" class="blob-num js-line-number js-blob-rnum" data-line-number="22"></td> <td id="file-hrmmm-js-LC22" class="blob-code blob-code-inner js-file-line"> console.log(decompressedData.join(&#39;&#39;));</td> </tr> <tr> <td id="file-hrmmm-js-L23" class="blob-num js-line-number js-blob-rnum" data-line-number="23"></td> <td id="file-hrmmm-js-LC23" class="blob-code blob-code-inner js-file-line"> });</td> </tr> <tr> <td id="file-hrmmm-js-L24" class="blob-num js-line-number js-blob-rnum" data-line-number="24"></td> <td id="file-hrmmm-js-LC24" class="blob-code blob-code-inner js-file-line">});</td> </tr> </table> </div> </div> </div> </div>