prompt: You will be provided with a partial code base and an issue statement explaining a problem to resolve.
  <issue>
  bongacams.com moved to bongacams.net
  ### DO NOT REMOVE OR SKIP THE ISSUE TEMPLATE
  
  - [X] I understand that I will be **blocked** if I remove or skip any mandatory\* field
  
  ### Checklist
  
  - [X] I'm reporting a broken site
  - [X] I've verified that I'm running yt-dlp version **2022.09.01** ([update instructions](https://github.com/yt-dlp/yt-dlp#update)) or later (specify commit)
  - [X] I've checked that all provided URLs are playable in a browser with the same IP and same login details
  - [X] I've checked that all URLs and arguments with special characters are [properly quoted or escaped](https://github.com/yt-dlp/yt-dlp/wiki/FAQ#video-url-contains-an-ampersand--and-im-getting-some-strange-output-1-2839-or-v-is-not-recognized-as-an-internal-or-external-command)
  - [X] I've searched the [bugtracker](https://github.com/yt-dlp/yt-dlp/issues?q=) for similar issues **including closed ones**. DO NOT post duplicates
  - [X] I've read the [guidelines for opening an issue](https://github.com/yt-dlp/yt-dlp/blob/master/CONTRIBUTING.md#opening-an-issue)
  - [X] I've read about [sharing account credentials](https://github.com/yt-dlp/yt-dlp/blob/master/CONTRIBUTING.md#are-you-willing-to-share-account-details-if-needed) and I'm willing to share it if required
  
  ### Provide a description that is worded well enough to be understood
  
  bongacams.com has been moved to the new bongacams.net domain, please fix the code to work in the bongacams.net domain
  
  
  bongacams.com moved to bongacams.net
  ### DO NOT REMOVE OR SKIP THE ISSUE TEMPLATE
  
  - [X] I understand that I will be **blocked** if I remove or skip any mandatory\* field
  
  ### Checklist
  
  - [X] I'm reporting a broken site
  - [X] I've verified that I'm running yt-dlp version **2022.09.01** ([update instructions](https://github.com/yt-dlp/yt-dlp#update)) or later (specify commit)
  - [X] I've checked that all provided URLs are playable in a browser with the same IP and same login details
  - [X] I've checked that all URLs and arguments with special characters are [properly quoted or escaped](https://github.com/yt-dlp/yt-dlp/wiki/FAQ#video-url-contains-an-ampersand--and-im-getting-some-strange-output-1-2839-or-v-is-not-recognized-as-an-internal-or-external-command)
  - [X] I've searched the [bugtracker](https://github.com/yt-dlp/yt-dlp/issues?q=) for similar issues **including closed ones**. DO NOT post duplicates
  - [X] I've read the [guidelines for opening an issue](https://github.com/yt-dlp/yt-dlp/blob/master/CONTRIBUTING.md#opening-an-issue)
  - [X] I've read about [sharing account credentials](https://github.com/yt-dlp/yt-dlp/blob/master/CONTRIBUTING.md#are-you-willing-to-share-account-details-if-needed) and I'm willing to share it if required
  
  ### Provide a description that is worded well enough to be understood
  
  bongacams.com has been moved to the new bongacams.net domain, please fix the code to work in the bongacams.net domain
  
  
  
  </issue>
  <code>
  [start of yt_dlp/extractor/bongacams.py]
  1 from .common import InfoExtractor
  2 from ..compat import compat_str
  3 from ..utils import (
  4     int_or_none,
  5     try_get,
  6     urlencode_postdata,
  7 )
  8 
  9 
  10 class BongaCamsIE(InfoExtractor):
  11     _VALID_URL = r'https?://(?P<host>(?:[^/]+\.)?bongacams\d*\.com)/(?P<id>[^/?&#]+)'
  12     _TESTS = [{
  13         'url': 'https://de.bongacams.com/azumi-8',
  14         'only_matching': True,
  15     }, {
  16         'url': 'https://cn.bongacams.com/azumi-8',
  17         'only_matching': True,
  18     }]
  19 
  20     def _real_extract(self, url):
  21         mobj = self._match_valid_url(url)
  22         host = mobj.group('host')
  23         channel_id = mobj.group('id')
  24 
  25         amf = self._download_json(
  26             'https://%s/tools/amf.php' % host, channel_id,
  27             data=urlencode_postdata((
  28                 ('method', 'getRoomData'),
  29                 ('args[]', channel_id),
  30                 ('args[]', 'false'),
  31             )), headers={'X-Requested-With': 'XMLHttpRequest'})
  32 
  33         server_url = amf['localData']['videoServerUrl']
  34 
  35         uploader_id = try_get(
  36             amf, lambda x: x['performerData']['username'], compat_str) or channel_id
  37         uploader = try_get(
  38             amf, lambda x: x['performerData']['displayName'], compat_str)
  39         like_count = int_or_none(try_get(
  40             amf, lambda x: x['performerData']['loversCount']))
  41 
  42         formats = self._extract_m3u8_formats(
  43             '%s/hls/stream_%s/playlist.m3u8' % (server_url, uploader_id),
  44             channel_id, 'mp4', m3u8_id='hls', live=True)
  45         self._sort_formats(formats)
  46 
  47         return {
  48             'id': channel_id,
  49             'title': uploader or uploader_id,
  50             'uploader': uploader,
  51             'uploader_id': uploader_id,
  52             'like_count': like_count,
  53             'age_limit': 18,
  54             'is_live': True,
  55             'formats': formats,
  56         }
  57
  [end of yt_dlp/extractor/bongacams.py]
  </code>
  
  I need you to solve this issue by generating a single patch file that I can apply directly to this repository using git apply. Please respond with a single patch file in the following format.
  <patch>
  diff --git a/file.py b/file.py
  --- a/file.py
  +++ b/file.py
  @@ -1,27 +1,35 @@
   def euclidean(a, b):
  -    while b:
  -        a, b = b, a % b
  -    return a
  +    if b == 0:
  +        return a
  +    return euclidean(b, a % b)
   
   
   def bresenham(x0, y0, x1, y1):
       points = []
       dx = abs(x1 - x0)
       dy = abs(y1 - y0)
  -    sx = 1 if x0 < x1 else -1
  -    sy = 1 if y0 < y1 else -1
  -    err = dx - dy
  +    x, y = x0, y0
  +    sx = -1 if x0 > x1 else 1
  +    sy = -1 if y0 > y1 else 1
   
  -    while True:
  -        points.append((x0, y0))
  -        if x0 == x1 and y0 == y1:
  -            break
  -        e2 = 2 * err
  -        if e2 > -dy:
  -            err -= dy
  -            x0 += sx
  -        if e2 < dx:
  -            err += dx
  -            y0 += sy
  +    if dx > dy:
  +        err = dx / 2.0
  +        while x != x1:
  +            points.append((x, y))
  +            err -= dy
  +            if err < 0:
  +                y += sy
  +                err += dx
  +            x += sx
  +    else:
  +        err = dy / 2.0
  +        while y != y1:
  +            points.append((x, y))
  +            err -= dx
  +            if err < 0:
  +                x += sx
  +                err += dy
  +            y += sy
  +
  +    points.append((x, y))
       return points
  
  </patch>
golden_diff: diff --git a/yt_dlp/extractor/bongacams.py b/yt_dlp/extractor/bongacams.py
  --- a/yt_dlp/extractor/bongacams.py
  +++ b/yt_dlp/extractor/bongacams.py
  @@ -8,13 +8,28 @@
   
   
   class BongaCamsIE(InfoExtractor):
  -    _VALID_URL = r'https?://(?P<host>(?:[^/]+\.)?bongacams\d*\.com)/(?P<id>[^/?&#]+)'
  +    _VALID_URL = r'https?://(?P<host>(?:[^/]+\.)?bongacams\d*\.(?:com|net))/(?P<id>[^/?&#]+)'
       _TESTS = [{
           'url': 'https://de.bongacams.com/azumi-8',
           'only_matching': True,
       }, {
           'url': 'https://cn.bongacams.com/azumi-8',
           'only_matching': True,
  +    }, {
  +        'url': 'https://de.bongacams.net/claireashton',
  +        'info_dict': {
  +            'id': 'claireashton',
  +            'ext': 'mp4',
  +            'title': r're:ClaireAshton \d{4}-\d{2}-\d{2} \d{2}:\d{2}',
  +            'age_limit': 18,
  +            'uploader_id': 'ClaireAshton',
  +            'uploader': 'ClaireAshton',
  +            'like_count': int,
  +            'is_live': True,
  +        },
  +        'params': {
  +            'skip_download': True,
  +        },
       }]
   
       def _real_extract(self, url):
  
verification_info: {"golden_diff": "diff --git a/yt_dlp/extractor/bongacams.py b/yt_dlp/extractor/bongacams.py\n--- a/yt_dlp/extractor/bongacams.py\n+++ b/yt_dlp/extractor/bongacams.py\n@@ -8,13 +8,28 @@\n \n \n class BongaCamsIE(InfoExtractor):\n-    _VALID_URL = r'https?://(?P<host>(?:[^/]+\\.)?bongacams\\d*\\.com)/(?P<id>[^/?&#]+)'\n+    _VALID_URL = r'https?://(?P<host>(?:[^/]+\\.)?bongacams\\d*\\.(?:com|net))/(?P<id>[^/?&#]+)'\n     _TESTS = [{\n         'url': 'https://de.bongacams.com/azumi-8',\n         'only_matching': True,\n     }, {\n         'url': 'https://cn.bongacams.com/azumi-8',\n         'only_matching': True,\n+    }, {\n+        'url': 'https://de.bongacams.net/claireashton',\n+        'info_dict': {\n+            'id': 'claireashton',\n+            'ext': 'mp4',\n+            'title': r're:ClaireAshton \\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}',\n+            'age_limit': 18,\n+            'uploader_id': 'ClaireAshton',\n+            'uploader': 'ClaireAshton',\n+            'like_count': int,\n+            'is_live': True,\n+        },\n+        'params': {\n+            'skip_download': True,\n+        },\n     }]\n \n     def _real_extract(self, url):\n", "issue": "bongacams.com moved to bongacams.net\n### DO NOT REMOVE OR SKIP THE ISSUE TEMPLATE\r\n\r\n- [X] I understand that I will be **blocked** if I remove or skip any mandatory\\* field\r\n\r\n### Checklist\r\n\r\n- [X] I'm reporting a broken site\r\n- [X] I've verified that I'm running yt-dlp version **2022.09.01** ([update instructions](https://github.com/yt-dlp/yt-dlp#update)) or later (specify commit)\r\n- [X] I've checked that all provided URLs are playable in a browser with the same IP and same login details\r\n- [X] I've checked that all URLs and arguments with special characters are [properly quoted or escaped](https://github.com/yt-dlp/yt-dlp/wiki/FAQ#video-url-contains-an-ampersand--and-im-getting-some-strange-output-1-2839-or-v-is-not-recognized-as-an-internal-or-external-command)\r\n- [X] I've searched the [bugtracker](https://github.com/yt-dlp/yt-dlp/issues?q=) for similar issues **including closed ones**. DO NOT post duplicates\r\n- [X] I've read the [guidelines for opening an issue](https://github.com/yt-dlp/yt-dlp/blob/master/CONTRIBUTING.md#opening-an-issue)\r\n- [X] I've read about [sharing account credentials](https://github.com/yt-dlp/yt-dlp/blob/master/CONTRIBUTING.md#are-you-willing-to-share-account-details-if-needed) and I'm willing to share it if required\r\n\r\n### Provide a description that is worded well enough to be understood\r\n\r\nbongacams.com has been moved to the new bongacams.net domain, please fix the code to work in the bongacams.net domain\r\n\r\n\nbongacams.com moved to bongacams.net\n### DO NOT REMOVE OR SKIP THE ISSUE TEMPLATE\r\n\r\n- [X] I understand that I will be **blocked** if I remove or skip any mandatory\\* field\r\n\r\n### Checklist\r\n\r\n- [X] I'm reporting a broken site\r\n- [X] I've verified that I'm running yt-dlp version **2022.09.01** ([update instructions](https://github.com/yt-dlp/yt-dlp#update)) or later (specify commit)\r\n- [X] I've checked that all provided URLs are playable in a browser with the same IP and same login details\r\n- [X] I've checked that all URLs and arguments with special characters are [properly quoted or escaped](https://github.com/yt-dlp/yt-dlp/wiki/FAQ#video-url-contains-an-ampersand--and-im-getting-some-strange-output-1-2839-or-v-is-not-recognized-as-an-internal-or-external-command)\r\n- [X] I've searched the [bugtracker](https://github.com/yt-dlp/yt-dlp/issues?q=) for similar issues **including closed ones**. DO NOT post duplicates\r\n- [X] I've read the [guidelines for opening an issue](https://github.com/yt-dlp/yt-dlp/blob/master/CONTRIBUTING.md#opening-an-issue)\r\n- [X] I've read about [sharing account credentials](https://github.com/yt-dlp/yt-dlp/blob/master/CONTRIBUTING.md#are-you-willing-to-share-account-details-if-needed) and I'm willing to share it if required\r\n\r\n### Provide a description that is worded well enough to be understood\r\n\r\nbongacams.com has been moved to the new bongacams.net domain, please fix the code to work in the bongacams.net domain\r\n\r\n\n", "before_files": [{"content": "from .common import InfoExtractor\nfrom ..compat import compat_str\nfrom ..utils import (\n    int_or_none,\n    try_get,\n    urlencode_postdata,\n)\n\n\nclass BongaCamsIE(InfoExtractor):\n    _VALID_URL = r'https?://(?P<host>(?:[^/]+\\.)?bongacams\\d*\\.com)/(?P<id>[^/?&#]+)'\n    _TESTS = [{\n        'url': 'https://de.bongacams.com/azumi-8',\n        'only_matching': True,\n    }, {\n        'url': 'https://cn.bongacams.com/azumi-8',\n        'only_matching': True,\n    }]\n\n    def _real_extract(self, url):\n        mobj = self._match_valid_url(url)\n        host = mobj.group('host')\n        channel_id = mobj.group('id')\n\n        amf = self._download_json(\n            'https://%s/tools/amf.php' % host, channel_id,\n            data=urlencode_postdata((\n                ('method', 'getRoomData'),\n                ('args[]', channel_id),\n                ('args[]', 'false'),\n            )), headers={'X-Requested-With': 'XMLHttpRequest'})\n\n        server_url = amf['localData']['videoServerUrl']\n\n        uploader_id = try_get(\n            amf, lambda x: x['performerData']['username'], compat_str) or channel_id\n        uploader = try_get(\n            amf, lambda x: x['performerData']['displayName'], compat_str)\n        like_count = int_or_none(try_get(\n            amf, lambda x: x['performerData']['loversCount']))\n\n        formats = self._extract_m3u8_formats(\n            '%s/hls/stream_%s/playlist.m3u8' % (server_url, uploader_id),\n            channel_id, 'mp4', m3u8_id='hls', live=True)\n        self._sort_formats(formats)\n\n        return {\n            'id': channel_id,\n            'title': uploader or uploader_id,\n            'uploader': uploader,\n            'uploader_id': uploader_id,\n            'like_count': like_count,\n            'age_limit': 18,\n            'is_live': True,\n            'formats': formats,\n        }\n", "path": "yt_dlp/extractor/bongacams.py"}]}