diff --git a/lib/consts.dart b/lib/consts.dart
index 595aa69e7..d6110f850 100644
--- a/lib/consts.dart
+++ b/lib/consts.dart
@@ -140,7 +140,8 @@ enum CodegenLanguage {
 enum ImportFormat {
   curl("cURL"),
   postman("Postman Collection v2.1"),
-  insomnia("Insomnia v4");
+  insomnia("Insomnia v4"),
+  har("Har v1.2");
 
   const ImportFormat(this.label);
   final String label;
diff --git a/lib/importer/importer.dart b/lib/importer/importer.dart
index 4d93d9bec..da9bdeaee 100644
--- a/lib/importer/importer.dart
+++ b/lib/importer/importer.dart
@@ -13,6 +13,7 @@ class Importer {
           .toList(),
       ImportFormat.postman => PostmanIO().getHttpRequestModelList(content),
       ImportFormat.insomnia => InsomniaIO().getHttpRequestModelList(content),
+      ImportFormat.har => HarParserIO().getHttpRequestModelList(content),
     };
   }
 }
diff --git a/packages/apidash_core/lib/import_export/har_io.dart b/packages/apidash_core/lib/import_export/har_io.dart
new file mode 100644
index 000000000..93e048356
--- /dev/null
+++ b/packages/apidash_core/lib/import_export/har_io.dart
@@ -0,0 +1,135 @@
+import 'package:har_parser/har_parser.dart' as hp;
+import 'package:seed/seed.dart';
+import '../consts.dart';
+import '../models/models.dart';
+import '../utils/utils.dart';
+
+class HarParserIO {
+  List<(String?, HttpRequestModel)>? getHttpRequestModelList(String content) {
+    content = content.trim();
+    try {
+      final hl = hp.harLogFromJsonStr(content);
+      final requests = hp.getRequestsFromHarLog(hl);
+      return requests
+          .map((req) => (req.$2.url, harRequestToHttpRequestModel(req.$2)))
+          .toList();
+    } catch (e) {
+      return null;
+    }
+  }
+
+  HttpRequestModel harRequestToHttpRequestModel(hp.Request request) {
+    HTTPVerb method;
+
+    try {
+      method = HTTPVerb.values.byName((request.method ?? "").toLowerCase());
+    } catch (e) {
+      method = kDefaultHttpMethod;
+    }
+    String url = stripUrlParams(request.url ?? "");
+    List<NameValueModel> headers = [];
+    List<bool> isHeaderEnabledList = [];
+
+    List<NameValueModel> params = [];
+    List<bool> isParamEnabledList = [];
+
+    for (var header in request.headers ?? <hp.Header>[]) {
+      var name = header.name ?? "";
+      var value = header.value;
+      var activeHeader = header.disabled ?? false;
+      headers.add(NameValueModel(name: name, value: value));
+      isHeaderEnabledList.add(!activeHeader);
+    }
+
+    for (var query in request.queryString ?? <hp.Query>[]) {
+      var name = query.name ?? "";
+      var value = query.value;
+      var activeQuery = query.disabled ?? false;
+      params.add(NameValueModel(name: name, value: value));
+      isParamEnabledList.add(!activeQuery);
+    }
+
+    ContentType bodyContentType = kDefaultContentType;
+    String? body;
+    List<FormDataModel>? formData = [];
+
+    if (request.postData?.mimeType == "application/json") {
+      bodyContentType = ContentType.json;
+      body = request.postData?.text;
+    }
+    FormDataType formDataType = FormDataType.text;
+    if (request.postData?.mimeType == "application/x-www-form-urlencoded") {
+      bodyContentType = ContentType.formdata;
+      var formDataStr = request.postData?.text;
+      Map<String, String> parsedData = parseFormData(formDataStr);
+      parsedData.forEach((key, value) {
+        formDataType = FormDataType.text;
+        var name = key ?? "";
+        var val = value ?? "";
+        formData.add(FormDataModel(
+          name: name,
+          value: val,
+          type: formDataType,
+        ));
+      });
+    }
+
+    if (request.postData?.mimeType == "multipart/form-data") {
+      bodyContentType = ContentType.formdata;
+      var name, val;
+      for (var fd in request.postData?.params ?? <hp.Param>[]) {
+        name = fd.name;
+        if (fd.contentType == "text/plain") {
+          formDataType = FormDataType.text;
+          val = fd.value;
+        } else {
+          formDataType = FormDataType.file;
+          val = fd.fileName;
+        }
+        formData.add(FormDataModel(
+          name: name,
+          value: val,
+          type: formDataType,
+        ));
+      }
+    }
+
+    return HttpRequestModel(
+        method: method,
+        url: url,
+        headers: headers,
+        params: params,
+        isHeaderEnabledList: isHeaderEnabledList,
+        isParamEnabledList: isParamEnabledList,
+        body: body,
+        bodyContentType: bodyContentType,
+        formData: formData);
+  }
+
+  Map<String, String> parseFormData(String? data) {
+    // Return an empty map if the input is null or empty
+    if (data == null || data.isEmpty) {
+      return {};
+    }
+    // Split the input string into individual key-value pairs
+    var pairs = data.split('&');
+
+    // Create a Map to store key-value pairs
+    Map<String, String> result = {};
+
+    // Loop through the pairs and split them into keys and values
+    for (var pair in pairs) {
+      var keyValue = pair.split('=');
+
+      // Ensure the pair contains both key and value
+      if (keyValue.length == 2) {
+        var key = Uri.decodeComponent(keyValue[0]);
+        var value = Uri.decodeComponent(keyValue[1]);
+
+        result[key] = value;
+      }
+    }
+
+    return result;
+  }
+}
diff --git a/packages/apidash_core/lib/import_export/import_export.dart b/packages/apidash_core/lib/import_export/import_export.dart
index 33762e50c..bf1954557 100644
--- a/packages/apidash_core/lib/import_export/import_export.dart
+++ b/packages/apidash_core/lib/import_export/import_export.dart
@@ -1,3 +1,4 @@
 export 'curl_io.dart';
 export 'postman_io.dart';
 export 'insomnia_io.dart';
+export 'har_io.dart';
diff --git a/packages/apidash_core/pubspec.yaml b/packages/apidash_core/pubspec.yaml
index 13aaea079..935052aec 100644
--- a/packages/apidash_core/pubspec.yaml
+++ b/packages/apidash_core/pubspec.yaml
@@ -21,6 +21,8 @@ dependencies:
     path: ../insomnia_collection
   postman:
     path: ../postman
+  har_parser:
+    path: ../har_parser
   seed: ^0.0.3
   xml: ^6.3.0
 
diff --git a/packages/apidash_core/pubspec_overrides.yaml b/packages/apidash_core/pubspec_overrides.yaml
index 61081fc76..f3858f35b 100644
--- a/packages/apidash_core/pubspec_overrides.yaml
+++ b/packages/apidash_core/pubspec_overrides.yaml
@@ -1,7 +1,10 @@
+# melos_managed_dependency_overrides: har_parser
 # melos_managed_dependency_overrides: curl_parser,insomnia_collection,postman,seed
 dependency_overrides:
   curl_parser:
     path: ../curl_parser
+  har_parser:
+    path: ..\\har_parser
   insomnia_collection:
     path: ../insomnia_collection
   postman:
diff --git a/packages/har_parser/.gitignore b/packages/har_parser/.gitignore
new file mode 100644
index 000000000..eb6c05cd3
--- /dev/null
+++ b/packages/har_parser/.gitignore
@@ -0,0 +1,31 @@
+# Miscellaneous
+*.class
+*.log
+*.pyc
+*.swp
+.DS_Store
+.atom/
+.buildlog/
+.history
+.svn/
+migrate_working_dir/
+
+# IntelliJ related
+*.iml
+*.ipr
+*.iws
+.idea/
+
+# The .vscode folder contains launch configuration and tasks you configure in
+# VS Code which you may wish to be included in version control, so this line
+# is commented out by default.
+#.vscode/
+
+# Flutter/Dart/Pub related
+# Libraries should not include pubspec.lock, per https://dart.dev/guides/libraries/private-files#pubspeclock.
+/pubspec.lock
+**/doc/api/
+.dart_tool/
+.flutter-plugins
+.flutter-plugins-dependencies
+build/
diff --git a/packages/har_parser/CHANGELOG.md b/packages/har_parser/CHANGELOG.md
new file mode 100644
index 000000000..41cc7d819
--- /dev/null
+++ b/packages/har_parser/CHANGELOG.md
@@ -0,0 +1,3 @@
+## 0.0.1
+
+* TODO: Describe initial release.
diff --git a/packages/har_parser/LICENSE b/packages/har_parser/LICENSE
new file mode 100644
index 000000000..e1622b53f
--- /dev/null
+++ b/packages/har_parser/LICENSE
@@ -0,0 +1,201 @@
+                                 Apache License
+                           Version 2.0, January 2004
+                        http://www.apache.org/licenses/
+
+TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+1.  Definitions.
+
+    "License" shall mean the terms and conditions for use, reproduction,
+    and distribution as defined by Sections 1 through 9 of this document.
+
+    "Licensor" shall mean the copyright owner or entity authorized by
+    the copyright owner that is granting the License.
+
+    "Legal Entity" shall mean the union of the acting entity and all
+    other entities that control, are controlled by, or are under common
+    control with that entity. For the purposes of this definition,
+    "control" means (i) the power, direct or indirect, to cause the
+    direction or management of such entity, whether by contract or
+    otherwise, or (ii) ownership of fifty percent (50%) or more of the
+    outstanding shares, or (iii) beneficial ownership of such entity.
+
+    "You" (or "Your") shall mean an individual or Legal Entity
+    exercising permissions granted by this License.
+
+    "Source" form shall mean the preferred form for making modifications,
+    including but not limited to software source code, documentation
+    source, and configuration files.
+
+    "Object" form shall mean any form resulting from mechanical
+    transformation or translation of a Source form, including but
+    not limited to compiled object code, generated documentation,
+    and conversions to other media types.
+
+    "Work" shall mean the work of authorship, whether in Source or
+    Object form, made available under the License, as indicated by a
+    copyright notice that is included in or attached to the work
+    (an example is provided in the Appendix below).
+
+    "Derivative Works" shall mean any work, whether in Source or Object
+    form, that is based on (or derived from) the Work and for which the
+    editorial revisions, annotations, elaborations, or other modifications
+    represent, as a whole, an original work of authorship. For the purposes
+    of this License, Derivative Works shall not include works that remain
+    separable from, or merely link (or bind by name) to the interfaces of,
+    the Work and Derivative Works thereof.
+
+    "Contribution" shall mean any work of authorship, including
+    the original version of the Work and any modifications or additions
+    to that Work or Derivative Works thereof, that is intentionally
+    submitted to Licensor for inclusion in the Work by the copyright owner
+    or by an individual or Legal Entity authorized to submit on behalf of
+    the copyright owner. For the purposes of this definition, "submitted"
+    means any form of electronic, verbal, or written communication sent
+    to the Licensor or its representatives, including but not limited to
+    communication on electronic mailing lists, source code control systems,
+    and issue tracking systems that are managed by, or on behalf of, the
+    Licensor for the purpose of discussing and improving the Work, but
+    excluding communication that is conspicuously marked or otherwise
+    designated in writing by the copyright owner as "Not a Contribution."
+
+    "Contributor" shall mean Licensor and any individual or Legal Entity
+    on behalf of whom a Contribution has been received by Licensor and
+    subsequently incorporated within the Work.
+
+2.  Grant of Copyright License. Subject to the terms and conditions of
+    this License, each Contributor hereby grants to You a perpetual,
+    worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+    copyright license to reproduce, prepare Derivative Works of,
+    publicly display, publicly perform, sublicense, and distribute the
+    Work and such Derivative Works in Source or Object form.
+
+3.  Grant of Patent License. Subject to the terms and conditions of
+    this License, each Contributor hereby grants to You a perpetual,
+    worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+    (except as stated in this section) patent license to make, have made,
+    use, offer to sell, sell, import, and otherwise transfer the Work,
+    where such license applies only to those patent claims licensable
+    by such Contributor that are necessarily infringed by their
+    Contribution(s) alone or by combination of their Contribution(s)
+    with the Work to which such Contribution(s) was submitted. If You
+    institute patent litigation against any entity (including a
+    cross-claim or counterclaim in a lawsuit) alleging that the Work
+    or a Contribution incorporated within the Work constitutes direct
+    or contributory patent infringement, then any patent licenses
+    granted to You under this License for that Work shall terminate
+    as of the date such litigation is filed.
+
+4.  Redistribution. You may reproduce and distribute copies of the
+    Work or Derivative Works thereof in any medium, with or without
+    modifications, and in Source or Object form, provided that You
+    meet the following conditions:
+
+    (a) You must give any other recipients of the Work or
+    Derivative Works a copy of this License; and
+
+    (b) You must cause any modified files to carry prominent notices
+    stating that You changed the files; and
+
+    (c) You must retain, in the Source form of any Derivative Works
+    that You distribute, all copyright, patent, trademark, and
+    attribution notices from the Source form of the Work,
+    excluding those notices that do not pertain to any part of
+    the Derivative Works; and
+
+    (d) If the Work includes a "NOTICE" text file as part of its
+    distribution, then any Derivative Works that You distribute must
+    include a readable copy of the attribution notices contained
+    within such NOTICE file, excluding those notices that do not
+    pertain to any part of the Derivative Works, in at least one
+    of the following places: within a NOTICE text file distributed
+    as part of the Derivative Works; within the Source form or
+    documentation, if provided along with the Derivative Works; or,
+    within a display generated by the Derivative Works, if and
+    wherever such third-party notices normally appear. The contents
+    of the NOTICE file are for informational purposes only and
+    do not modify the License. You may add Your own attribution
+    notices within Derivative Works that You distribute, alongside
+    or as an addendum to the NOTICE text from the Work, provided
+    that such additional attribution notices cannot be construed
+    as modifying the License.
+
+    You may add Your own copyright statement to Your modifications and
+    may provide additional or different license terms and conditions
+    for use, reproduction, or distribution of Your modifications, or
+    for any such Derivative Works as a whole, provided Your use,
+    reproduction, and distribution of the Work otherwise complies with
+    the conditions stated in this License.
+
+5.  Submission of Contributions. Unless You explicitly state otherwise,
+    any Contribution intentionally submitted for inclusion in the Work
+    by You to the Licensor shall be under the terms and conditions of
+    this License, without any additional terms or conditions.
+    Notwithstanding the above, nothing herein shall supersede or modify
+    the terms of any separate license agreement you may have executed
+    with Licensor regarding such Contributions.
+
+6.  Trademarks. This License does not grant permission to use the trade
+    names, trademarks, service marks, or product names of the Licensor,
+    except as required for reasonable and customary use in describing the
+    origin of the Work and reproducing the content of the NOTICE file.
+
+7.  Disclaimer of Warranty. Unless required by applicable law or
+    agreed to in writing, Licensor provides the Work (and each
+    Contributor provides its Contributions) on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+    implied, including, without limitation, any warranties or conditions
+    of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+    PARTICULAR PURPOSE. You are solely responsible for determining the
+    appropriateness of using or redistributing the Work and assume any
+    risks associated with Your exercise of permissions under this License.
+
+8.  Limitation of Liability. In no event and under no legal theory,
+    whether in tort (including negligence), contract, or otherwise,
+    unless required by applicable law (such as deliberate and grossly
+    negligent acts) or agreed to in writing, shall any Contributor be
+    liable to You for damages, including any direct, indirect, special,
+    incidental, or consequential damages of any character arising as a
+    result of this License or out of the use or inability to use the
+    Work (including but not limited to damages for loss of goodwill,
+    work stoppage, computer failure or malfunction, or any and all
+    other commercial damages or losses), even if such Contributor
+    has been advised of the possibility of such damages.
+
+9.  Accepting Warranty or Additional Liability. While redistributing
+    the Work or Derivative Works thereof, You may choose to offer,
+    and charge a fee for, acceptance of support, warranty, indemnity,
+    or other liability obligations and/or rights consistent with this
+    License. However, in accepting such obligations, You may act only
+    on Your own behalf and on Your sole responsibility, not on behalf
+    of any other Contributor, and only if You agree to indemnify,
+    defend, and hold each Contributor harmless for any liability
+    incurred by, or claims asserted against, such Contributor by reason
+    of your accepting any such warranty or additional liability.
+
+END OF TERMS AND CONDITIONS
+
+APPENDIX: How to apply the Apache License to your work.
+
+      To apply the Apache License to your work, attach the following
+      boilerplate notice, with the fields enclosed by brackets "[]"
+      replaced with your own identifying information. (Don't include
+      the brackets!)  The text should be enclosed in the appropriate
+      comment syntax for the file format. We also recommend that a
+      file or class name and description of purpose be included on the
+      same "printed page" as the copyright notice for easier
+      identification within third-party archives.
+
+Copyright 2023 Ashita Prasad, Ankit Mahato
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
diff --git a/packages/har_parser/README.md b/packages/har_parser/README.md
new file mode 100644
index 000000000..a9dfc45fa
--- /dev/null
+++ b/packages/har_parser/README.md
@@ -0,0 +1,340 @@
+# insomnia
+
+Seamlessly convert Har Collection Format v1.2 to Dart.
+
+Helps you bring your APIs stored in Har to Dart and work with them.
+
+Currently, this package is being used by [API Dash](https://github.com/foss42/apidash), a beautiful open-source cross-platform (macOS, Windows, Linux, Android & iOS) API Client built using Flutter which can help you easily create & customize your API requests, visually inspect responses and generate API integration code. A lightweight alternative to postman.
+
+## Usage
+
+### Example 1: Har collection JSON string to Har model
+
+```dart
+import 'package:har_parser/har_parser.dart';
+
+void main() {
+  // Example 1: Har collection JSON string to Har model
+  var collectionJsonStr = r'''
+{
+    "log": {
+      "version": "1.2",
+      "creator": {"name": "Postman", "version": "v8.x.x"},
+      "entries": [
+        {
+          "startedDateTime": "2025-03-25T12:00:00.000Z",
+          "time": 100,
+          "request": {
+            "method": "GET",
+            "url": "https://api.apidash.dev",
+            "headers": [],
+            "queryString": [],
+            "bodySize": 0
+          },
+          "response": {
+            "status": 200,
+            "statusText": "OK",
+            "headers": [],
+            "bodySize": 0
+          }
+        },
+        {
+          "startedDateTime": "2025-03-25T12:01:00.000Z",
+          "time": 150,
+          "request": {
+            "method": "GET",
+            "url": "https://api.apidash.dev/country/data?code=US",
+            "headers": [],
+            "queryString": [
+              {"name": "code", "value": "US"}
+            ],
+            "bodySize": 0
+          },
+          "response": {
+            "status": 200,
+            "statusText": "OK",
+            "headers": [],
+            "bodySize": 0
+          }
+        },
+        {
+          "startedDateTime": "2025-03-25T12:02:00.000Z",
+          "time": 200,
+          "request": {
+            "method": "GET",
+            "url":
+                "https://api.apidash.dev/humanize/social?num=8700000&digits=3&system=SS&add_space=true&trailing_zeros=true",
+            "headers": [],
+            "queryString": [
+              {"name": "num", "value": "8700000"},
+              {"name": "digits", "value": "3"},
+              {"name": "system", "value": "SS"},
+              {"name": "add_space", "value": "true"},
+              {"name": "trailing_zeros", "value": "true"}
+            ],
+            "bodySize": 0
+          },
+          "response": {
+            "status": 200,
+            "statusText": "OK",
+            "headers": [],
+            "bodySize": 0
+          }
+        },
+        {
+          "startedDateTime": "2025-03-25T12:03:00.000Z",
+          "time": 300,
+          "request": {
+            "method": "POST",
+            "url": "https://api.apidash.dev/case/lower",
+            "headers": [],
+            "queryString": [],
+            "bodySize": 50,
+            "postData": {
+              "mimeType": "application/json",
+              "text": "{ \"text\": \"I LOVE Flutter\" }"
+            }
+          },
+          "response": {
+            "status": 200,
+            "statusText": "OK",
+            "headers": [],
+            "bodySize": 0
+          }
+        },
+        {
+          "startedDateTime": "2025-03-25T12:04:00.000Z",
+          "time": 350,
+          "request": {
+            "method": "POST",
+            "url": "https://api.apidash.dev/io/form",
+            "headers": [
+              {"name": "User-Agent", "value": "Test Agent"}
+            ],
+            "queryString": [],
+            "bodySize": 100,
+            "postData": {
+              "mimeType": "multipart/form-data",
+              "params": [
+                {"name": "text", "value": "API", "contentType": "text/plain"},
+                {"name": "sep", "value": "|", "contentType": "text/plain"},
+                {"name": "times", "value": "3", "contentType": "text/plain"}
+              ]
+            }
+          },
+          "response": {
+            "status": 200,
+            "statusText": "OK",
+            "headers": [],
+            "bodySize": 0
+          }
+        },
+        {
+          "startedDateTime": "2025-03-25T12:05:00.000Z",
+          "time": 400,
+          "request": {
+            "method": "POST",
+            "url": "https://api.apidash.dev/io/img",
+            "headers": [],
+            "queryString": [],
+            "bodySize": 150,
+            "postData": {
+              "mimeType": "multipart/form-data",
+              "params": [
+                {"name": "token", "value": "xyz", "contentType": "text/plain"},
+                {
+                  "name": "imfile",
+                  "fileName": "hire AI.jpeg",
+                  "contentType": "image/jpeg"
+                }
+              ]
+            }
+          },
+          "response": {
+            "status": 200,
+            "statusText": "OK",
+            "headers": [],
+            "bodySize": 0
+          }
+        }
+      ]
+    }
+  }
+''';
+
+  var collection = harLogFromJsonStr(collectionJsonStr);
+
+  print(collection.log?.creator);
+  print(collection.log?.entries?[0].startedDateTime);
+  print(collection.log?.entries?[0].request?.url);
+}
+```
+
+### Example 2: Har collection from JSON
+
+```dart
+import 'package:har_parser/har_parser.dart';
+
+void main() {
+   // Example 2: Har collection from JSON
+var collectionJson = {
+    "log": {
+      "version": "1.2",
+      "creator": {"name": "Postman", "version": "v8.x.x"},
+      "entries": [
+        {
+          "startedDateTime": "2025-03-25T12:00:00.000Z",
+          "time": 100,
+          "request": {
+            "method": "GET",
+            "url": "https://api.apidash.dev",
+            "headers": [],
+            "queryString": [],
+            "bodySize": 0
+          },
+          "response": {
+            "status": 200,
+            "statusText": "OK",
+            "headers": [],
+            "bodySize": 0
+          }
+        },
+        {
+          "startedDateTime": "2025-03-25T12:01:00.000Z",
+          "time": 150,
+          "request": {
+            "method": "GET",
+            "url": "https://api.apidash.dev/country/data?code=US",
+            "headers": [],
+            "queryString": [
+              {"name": "code", "value": "US"}
+            ],
+            "bodySize": 0
+          },
+          "response": {
+            "status": 200,
+            "statusText": "OK",
+            "headers": [],
+            "bodySize": 0
+          }
+        },
+        {
+          "startedDateTime": "2025-03-25T12:02:00.000Z",
+          "time": 200,
+          "request": {
+            "method": "GET",
+            "url":
+                "https://api.apidash.dev/humanize/social?num=8700000&digits=3&system=SS&add_space=true&trailing_zeros=true",
+            "headers": [],
+            "queryString": [
+              {"name": "num", "value": "8700000"},
+              {"name": "digits", "value": "3"},
+              {"name": "system", "value": "SS"},
+              {"name": "add_space", "value": "true"},
+              {"name": "trailing_zeros", "value": "true"}
+            ],
+            "bodySize": 0
+          },
+          "response": {
+            "status": 200,
+            "statusText": "OK",
+            "headers": [],
+            "bodySize": 0
+          }
+        },
+        {
+          "startedDateTime": "2025-03-25T12:03:00.000Z",
+          "time": 300,
+          "request": {
+            "method": "POST",
+            "url": "https://api.apidash.dev/case/lower",
+            "headers": [],
+            "queryString": [],
+            "bodySize": 50,
+            "postData": {
+              "mimeType": "application/json",
+              "text": "{ \"text\": \"I LOVE Flutter\" }"
+            }
+          },
+          "response": {
+            "status": 200,
+            "statusText": "OK",
+            "headers": [],
+            "bodySize": 0
+          }
+        },
+        {
+          "startedDateTime": "2025-03-25T12:04:00.000Z",
+          "time": 350,
+          "request": {
+            "method": "POST",
+            "url": "https://api.apidash.dev/io/form",
+            "headers": [
+              {"name": "User-Agent", "value": "Test Agent"}
+            ],
+            "queryString": [],
+            "bodySize": 100,
+            "postData": {
+              "mimeType": "multipart/form-data",
+              "params": [
+                {"name": "text", "value": "API", "contentType": "text/plain"},
+                {"name": "sep", "value": "|", "contentType": "text/plain"},
+                {"name": "times", "value": "3", "contentType": "text/plain"}
+              ]
+            }
+          },
+          "response": {
+            "status": 200,
+            "statusText": "OK",
+            "headers": [],
+            "bodySize": 0
+          }
+        },
+        {
+          "startedDateTime": "2025-03-25T12:05:00.000Z",
+          "time": 400,
+          "request": {
+            "method": "POST",
+            "url": "https://api.apidash.dev/io/img",
+            "headers": [],
+            "queryString": [],
+            "bodySize": 150,
+            "postData": {
+              "mimeType": "multipart/form-data",
+              "params": [
+                {"name": "token", "value": "xyz", "contentType": "text/plain"},
+                {
+                  "name": "imfile",
+                  "fileName": "hire AI.jpeg",
+                  "contentType": "image/jpeg"
+                }
+              ]
+            }
+          },
+          "response": {
+            "status": 200,
+            "statusText": "OK",
+            "headers": [],
+            "bodySize": 0
+          }
+        }
+      ]
+    }
+  };
+
+  var collection1 = HarLog.fromJson(collectionJson);
+  print(collection1.log?.creator?.name);
+  print(collection1.log?.entries?[0].startedDateTime);
+  print(collection1.log?.entries?[0].request?.url);
+
+}
+```
+
+## Maintainer
+
+- Ashita Prasad ([GitHub](https://github.com/ashitaprasad), [LinkedIn](https://www.linkedin.com/in/ashitaprasad/), [X](https://x.com/ashitaprasad))
+- Mohammed Ayaan (contributor) ([GitHub](https://github.com/ayaan-md-blr))
+
+## License
+
+This project is licensed under the [Apache License 2.0](https://github.com/foss42/apidash/blob/main/packages/har_parser/LICENSE).
diff --git a/packages/har_parser/analysis_options.yaml b/packages/har_parser/analysis_options.yaml
new file mode 100644
index 000000000..1dea9522d
--- /dev/null
+++ b/packages/har_parser/analysis_options.yaml
@@ -0,0 +1,6 @@
+analyzer:
+  exclude:
+    - "**/*.g.dart"
+    - "**/*.freezed.dart"
+  errors:
+    invalid_annotation_target: ignore
diff --git a/packages/har_parser/example/har_example.dart b/packages/har_parser/example/har_example.dart
new file mode 100644
index 000000000..5d2317027
--- /dev/null
+++ b/packages/har_parser/example/har_example.dart
@@ -0,0 +1,312 @@
+import 'package:har_parser/har_parser.dart';
+
+void main() {
+  //Example 1
+  var collectionJsonStr = r'''
+{
+  "log": {
+    "version": "1.2",
+    "creator": {
+      "name": "Postman",
+      "version": "v8.x.x"
+    },
+    "entries": [
+      {
+        "startedDateTime": "2025-03-25T12:00:00.000Z",
+        "time": 100,
+        "request": {
+          "method": "GET",
+          "url": "https://api.apidash.dev",
+          "headers": [],
+          "queryString": [],
+          "bodySize": 0
+        },
+        "response": {
+          "status": 200,
+          "statusText": "OK",
+          "headers": [],
+          "bodySize": 0
+        }
+      },
+      {
+        "startedDateTime": "2025-03-25T12:01:00.000Z",
+        "time": 150,
+        "request": {
+          "method": "GET",
+          "url": "https://api.apidash.dev/country/data?code=US",
+          "headers": [],
+          "queryString": [
+            {
+              "name": "code",
+              "value": "US"
+            }
+          ],
+          "bodySize": 0
+        },
+        "response": {
+          "status": 200,
+          "statusText": "OK",
+          "headers": [],
+          "bodySize": 0
+        }
+      },
+      {
+        "startedDateTime": "2025-03-25T12:02:00.000Z",
+        "time": 200,
+        "request": {
+          "method": "GET",
+          "url": "https://api.apidash.dev/humanize/social?num=8700000&digits=3&system=SS&add_space=true&trailing_zeros=true",
+          "headers": [],
+          "queryString": [
+            { "name": "num", "value": "8700000" },
+            { "name": "digits", "value": "3" },
+            { "name": "system", "value": "SS" },
+            { "name": "add_space", "value": "true" },
+            { "name": "trailing_zeros", "value": "true" }
+          ],
+          "bodySize": 0
+        },
+        "response": {
+          "status": 200,
+          "statusText": "OK",
+          "headers": [],
+          "bodySize": 0
+        }
+      },
+      {
+        "startedDateTime": "2025-03-25T12:03:00.000Z",
+        "time": 300,
+        "request": {
+          "method": "POST",
+          "url": "https://api.apidash.dev/case/lower",
+          "headers": [],
+          "queryString": [],
+          "bodySize": 50,
+          "postData": {
+            "mimeType": "application/json",
+            "text": "{ \"text\": \"I LOVE Flutter\" }"
+          }
+        },
+        "response": {
+          "status": 200,
+          "statusText": "OK",
+          "headers": [],
+          "bodySize": 0
+        }
+      },
+      {
+        "startedDateTime": "2025-03-25T12:04:00.000Z",
+        "time": 350,
+        "request": {
+          "method": "POST",
+          "url": "https://api.apidash.dev/io/form",
+          "headers": [
+            {
+              "name": "User-Agent",
+              "value": "Test Agent"
+            }
+          ],
+          "queryString": [],
+          "bodySize": 100,
+          "postData": {
+            "mimeType": "multipart/form-data",
+            "params": [
+              { "name": "text", "value": "API", "contentType":"text/plain" },
+              { "name": "sep", "value": "|", "contentType":"text/plain" },
+              { "name": "times", "value": "3", "contentType":"text/plain" }
+            ]
+          }
+        },
+        "response": {
+          "status": 200,
+          "statusText": "OK",
+          "headers": [],
+          "bodySize": 0
+        }
+      } 
+      ,
+      {
+        "startedDateTime": "2025-03-25T12:05:00.000Z",
+        "time": 400,
+        "request": {
+          "method": "POST",
+          "url": "https://api.apidash.dev/io/img",
+          "headers": [],
+          "queryString": [],
+          "bodySize": 150,
+          "postData": {
+            "mimeType": "multipart/form-data",
+            "params": [
+              { "name": "token", "value": "xyz", "contentType":"text/plain" },
+              { "name": "imfile", "fileName": "hire AI.jpeg", "contentType":"image/jpeg" }
+            ]
+          }
+        },
+        "response": {
+          "status": 200,
+          "statusText": "OK",
+          "headers": [],
+          "bodySize": 0
+        }
+      }
+    ]
+  }
+}
+''';
+
+  var collection = harLogFromJsonStr(collectionJsonStr);
+
+  print(collection.log?.creator);
+  print(collection.log?.entries?[0].startedDateTime);
+  print(collection.log?.entries?[0].request?.url);
+
+  var collectionJson = {
+    "log": {
+      "version": "1.2",
+      "creator": {"name": "Postman", "version": "v8.x.x"},
+      "entries": [
+        {
+          "startedDateTime": "2025-03-25T12:00:00.000Z",
+          "time": 100,
+          "request": {
+            "method": "GET",
+            "url": "https://api.apidash.dev",
+            "headers": [],
+            "queryString": [],
+            "bodySize": 0
+          },
+          "response": {
+            "status": 200,
+            "statusText": "OK",
+            "headers": [],
+            "bodySize": 0
+          }
+        },
+        {
+          "startedDateTime": "2025-03-25T12:01:00.000Z",
+          "time": 150,
+          "request": {
+            "method": "GET",
+            "url": "https://api.apidash.dev/country/data?code=US",
+            "headers": [],
+            "queryString": [
+              {"name": "code", "value": "US"}
+            ],
+            "bodySize": 0
+          },
+          "response": {
+            "status": 200,
+            "statusText": "OK",
+            "headers": [],
+            "bodySize": 0
+          }
+        },
+        {
+          "startedDateTime": "2025-03-25T12:02:00.000Z",
+          "time": 200,
+          "request": {
+            "method": "GET",
+            "url":
+                "https://api.apidash.dev/humanize/social?num=8700000&digits=3&system=SS&add_space=true&trailing_zeros=true",
+            "headers": [],
+            "queryString": [
+              {"name": "num", "value": "8700000"},
+              {"name": "digits", "value": "3"},
+              {"name": "system", "value": "SS"},
+              {"name": "add_space", "value": "true"},
+              {"name": "trailing_zeros", "value": "true"}
+            ],
+            "bodySize": 0
+          },
+          "response": {
+            "status": 200,
+            "statusText": "OK",
+            "headers": [],
+            "bodySize": 0
+          }
+        },
+        {
+          "startedDateTime": "2025-03-25T12:03:00.000Z",
+          "time": 300,
+          "request": {
+            "method": "POST",
+            "url": "https://api.apidash.dev/case/lower",
+            "headers": [],
+            "queryString": [],
+            "bodySize": 50,
+            "postData": {
+              "mimeType": "application/json",
+              "text": "{ \"text\": \"I LOVE Flutter\" }"
+            }
+          },
+          "response": {
+            "status": 200,
+            "statusText": "OK",
+            "headers": [],
+            "bodySize": 0
+          }
+        },
+        {
+          "startedDateTime": "2025-03-25T12:04:00.000Z",
+          "time": 350,
+          "request": {
+            "method": "POST",
+            "url": "https://api.apidash.dev/io/form",
+            "headers": [
+              {"name": "User-Agent", "value": "Test Agent"}
+            ],
+            "queryString": [],
+            "bodySize": 100,
+            "postData": {
+              "mimeType": "multipart/form-data",
+              "params": [
+                {"name": "text", "value": "API", "contentType": "text/plain"},
+                {"name": "sep", "value": "|", "contentType": "text/plain"},
+                {"name": "times", "value": "3", "contentType": "text/plain"}
+              ]
+            }
+          },
+          "response": {
+            "status": 200,
+            "statusText": "OK",
+            "headers": [],
+            "bodySize": 0
+          }
+        },
+        {
+          "startedDateTime": "2025-03-25T12:05:00.000Z",
+          "time": 400,
+          "request": {
+            "method": "POST",
+            "url": "https://api.apidash.dev/io/img",
+            "headers": [],
+            "queryString": [],
+            "bodySize": 150,
+            "postData": {
+              "mimeType": "multipart/form-data",
+              "params": [
+                {"name": "token", "value": "xyz", "contentType": "text/plain"},
+                {
+                  "name": "imfile",
+                  "fileName": "hire AI.jpeg",
+                  "contentType": "image/jpeg"
+                }
+              ]
+            }
+          },
+          "response": {
+            "status": 200,
+            "statusText": "OK",
+            "headers": [],
+            "bodySize": 0
+          }
+        }
+      ]
+    }
+  };
+
+  var collection1 = HarLog.fromJson(collectionJson);
+  print(collection1.log?.creator?.name);
+  print(collection1.log?.entries?[0].startedDateTime);
+  print(collection1.log?.entries?[0].request?.url);
+}
diff --git a/packages/har_parser/lib/har_parser.dart b/packages/har_parser/lib/har_parser.dart
new file mode 100644
index 000000000..cd7cfb952
--- /dev/null
+++ b/packages/har_parser/lib/har_parser.dart
@@ -0,0 +1,4 @@
+library har_parser;
+
+export 'models/models.dart';
+export 'utils/har_parser_utils.dart';
diff --git a/packages/har_parser/lib/models/har_log.dart b/packages/har_parser/lib/models/har_log.dart
new file mode 100644
index 000000000..1c33db307
--- /dev/null
+++ b/packages/har_parser/lib/models/har_log.dart
@@ -0,0 +1,174 @@
+import 'dart:convert';
+import 'package:freezed_annotation/freezed_annotation.dart';
+
+part 'har_log.freezed.dart';
+part 'har_log.g.dart';
+
+HarLog harLogFromJsonStr(String str) => HarLog.fromJson(json.decode(str));
+
+String harLogToJsonStr(HarLog data) =>
+    JsonEncoder.withIndent('  ').convert(data);
+
+@freezed
+class HarLog with _$HarLog {
+  @JsonSerializable(explicitToJson: true, anyMap: true, includeIfNull: false)
+  const factory HarLog({
+    Log? log,
+  }) = _HarLog;
+
+  factory HarLog.fromJson(Map<String, dynamic> json) => _$HarLogFromJson(json);
+}
+
+@freezed
+class Log with _$Log {
+  @JsonSerializable(explicitToJson: true, anyMap: true, includeIfNull: false)
+  const factory Log({
+    String? version,
+    Creator? creator,
+    List<Entry>? entries,
+  }) = _Log;
+
+  factory Log.fromJson(Map<String, dynamic> json) => _$LogFromJson(json);
+}
+
+@freezed
+class Creator with _$Creator {
+  @JsonSerializable(explicitToJson: true, anyMap: true, includeIfNull: false)
+  const factory Creator({
+    String? name,
+    String? version,
+  }) = _Creator;
+
+  factory Creator.fromJson(Map<String, dynamic> json) =>
+      _$CreatorFromJson(json);
+}
+
+@freezed
+class Entry with _$Entry {
+  @JsonSerializable(explicitToJson: true, anyMap: true, includeIfNull: false)
+  const factory Entry({
+    String? startedDateTime,
+    int? time,
+    Request? request,
+    Response? response,
+  }) = _Entry;
+
+  factory Entry.fromJson(Map<String, dynamic> json) => _$EntryFromJson(json);
+}
+
+@freezed
+class Request with _$Request {
+  @JsonSerializable(explicitToJson: true, anyMap: true, includeIfNull: false)
+  const factory Request({
+    String? method,
+    String? url,
+    String? httpVersion,
+    List<dynamic>? cookies,
+    List<Header>? headers,
+    List<Query>? queryString,
+    PostData? postData,
+    int? headersSize,
+    int? bodySize,
+  }) = _Request;
+
+  factory Request.fromJson(Map<String, dynamic> json) =>
+      _$RequestFromJson(json);
+}
+
+@freezed
+class PostData with _$PostData {
+  @JsonSerializable(
+    explicitToJson: true,
+    anyMap: true,
+    includeIfNull: false,
+  )
+  const factory PostData({
+    String? mimeType,
+    String? text,
+    List<Param>? params, // for multipart/form-data params
+  }) = _PostData;
+
+  factory PostData.fromJson(Map<String, dynamic> json) =>
+      _$PostDataFromJson(json);
+}
+
+@freezed
+class Param with _$Param {
+  @JsonSerializable(
+    explicitToJson: true,
+    anyMap: true,
+    includeIfNull: false,
+  )
+  const factory Param({
+    String? name,
+    String? value,
+    String? fileName,
+    String? contentType,
+    bool? disabled,
+  }) = _Param;
+
+  factory Param.fromJson(Map<String, dynamic> json) => _$ParamFromJson(json);
+}
+
+@freezed
+class Query with _$Query {
+  @JsonSerializable(
+    explicitToJson: true,
+    anyMap: true,
+    includeIfNull: false,
+  )
+  const factory Query({
+    String? name,
+    String? value,
+    bool? disabled,
+  }) = _Query;
+
+  factory Query.fromJson(Map<String, dynamic> json) => _$QueryFromJson(json);
+}
+
+@freezed
+class Header with _$Header {
+  @JsonSerializable(
+    explicitToJson: true,
+    anyMap: true,
+    includeIfNull: false,
+  )
+  const factory Header({
+    String? name,
+    String? value,
+    bool? disabled,
+  }) = _Header;
+
+  factory Header.fromJson(Map<String, dynamic> json) => _$HeaderFromJson(json);
+}
+
+@freezed
+class Response with _$Response {
+  @JsonSerializable(explicitToJson: true, anyMap: true, includeIfNull: false)
+  const factory Response({
+    int? status,
+    String? statusText,
+    String? httpVersion,
+    List<dynamic>? cookies,
+    List<dynamic>? headers,
+    Content? content,
+    String? redirectURL,
+    int? headersSize,
+    int? bodySize,
+  }) = _Response;
+
+  factory Response.fromJson(Map<String, dynamic> json) =>
+      _$ResponseFromJson(json);
+}
+
+@freezed
+class Content with _$Content {
+  @JsonSerializable(explicitToJson: true, anyMap: true, includeIfNull: false)
+  const factory Content({
+    int? size,
+    String? mimeType,
+  }) = _Content;
+
+  factory Content.fromJson(Map<String, dynamic> json) =>
+      _$ContentFromJson(json);
+}
diff --git a/packages/har_parser/lib/models/har_log.freezed.dart b/packages/har_parser/lib/models/har_log.freezed.dart
new file mode 100644
index 000000000..eb5b7f5ab
--- /dev/null
+++ b/packages/har_parser/lib/models/har_log.freezed.dart
@@ -0,0 +1,2482 @@
+// coverage:ignore-file
+// GENERATED CODE - DO NOT MODIFY BY HAND
+// ignore_for_file: type=lint
+// ignore_for_file: unused_element, deprecated_member_use, deprecated_member_use_from_same_package, use_function_type_syntax_for_parameters, unnecessary_const, avoid_init_to_null, invalid_override_different_default_values_named, prefer_expression_function_bodies, annotate_overrides, invalid_annotation_target, unnecessary_question_mark
+
+part of 'har_log.dart';
+
+// **************************************************************************
+// FreezedGenerator
+// **************************************************************************
+
+T _$identity<T>(T value) => value;
+
+final _privateConstructorUsedError = UnsupportedError(
+    'It seems like you constructed your class using `MyClass._()`. This constructor is only meant to be used by freezed and you are not supposed to need it nor use it.\nPlease check the documentation here for more information: https://github.com/rrousselGit/freezed#adding-getters-and-methods-to-our-models');
+
+HarLog _$HarLogFromJson(Map<String, dynamic> json) {
+  return _HarLog.fromJson(json);
+}
+
+/// @nodoc
+mixin _$HarLog {
+  Log? get log => throw _privateConstructorUsedError;
+
+  /// Serializes this HarLog to a JSON map.
+  Map<String, dynamic> toJson() => throw _privateConstructorUsedError;
+
+  /// Create a copy of HarLog
+  /// with the given fields replaced by the non-null parameter values.
+  @JsonKey(includeFromJson: false, includeToJson: false)
+  $HarLogCopyWith<HarLog> get copyWith => throw _privateConstructorUsedError;
+}
+
+/// @nodoc
+abstract class $HarLogCopyWith<$Res> {
+  factory $HarLogCopyWith(HarLog value, $Res Function(HarLog) then) =
+      _$HarLogCopyWithImpl<$Res, HarLog>;
+  @useResult
+  $Res call({Log? log});
+
+  $LogCopyWith<$Res>? get log;
+}
+
+/// @nodoc
+class _$HarLogCopyWithImpl<$Res, $Val extends HarLog>
+    implements $HarLogCopyWith<$Res> {
+  _$HarLogCopyWithImpl(this._value, this._then);
+
+  // ignore: unused_field
+  final $Val _value;
+  // ignore: unused_field
+  final $Res Function($Val) _then;
+
+  /// Create a copy of HarLog
+  /// with the given fields replaced by the non-null parameter values.
+  @pragma('vm:prefer-inline')
+  @override
+  $Res call({
+    Object? log = freezed,
+  }) {
+    return _then(_value.copyWith(
+      log: freezed == log
+          ? _value.log
+          : log // ignore: cast_nullable_to_non_nullable
+              as Log?,
+    ) as $Val);
+  }
+
+  /// Create a copy of HarLog
+  /// with the given fields replaced by the non-null parameter values.
+  @override
+  @pragma('vm:prefer-inline')
+  $LogCopyWith<$Res>? get log {
+    if (_value.log == null) {
+      return null;
+    }
+
+    return $LogCopyWith<$Res>(_value.log!, (value) {
+      return _then(_value.copyWith(log: value) as $Val);
+    });
+  }
+}
+
+/// @nodoc
+abstract class _$$HarLogImplCopyWith<$Res> implements $HarLogCopyWith<$Res> {
+  factory _$$HarLogImplCopyWith(
+          _$HarLogImpl value, $Res Function(_$HarLogImpl) then) =
+      __$$HarLogImplCopyWithImpl<$Res>;
+  @override
+  @useResult
+  $Res call({Log? log});
+
+  @override
+  $LogCopyWith<$Res>? get log;
+}
+
+/// @nodoc
+class __$$HarLogImplCopyWithImpl<$Res>
+    extends _$HarLogCopyWithImpl<$Res, _$HarLogImpl>
+    implements _$$HarLogImplCopyWith<$Res> {
+  __$$HarLogImplCopyWithImpl(
+      _$HarLogImpl _value, $Res Function(_$HarLogImpl) _then)
+      : super(_value, _then);
+
+  /// Create a copy of HarLog
+  /// with the given fields replaced by the non-null parameter values.
+  @pragma('vm:prefer-inline')
+  @override
+  $Res call({
+    Object? log = freezed,
+  }) {
+    return _then(_$HarLogImpl(
+      log: freezed == log
+          ? _value.log
+          : log // ignore: cast_nullable_to_non_nullable
+              as Log?,
+    ));
+  }
+}
+
+/// @nodoc
+
+@JsonSerializable(explicitToJson: true, anyMap: true, includeIfNull: false)
+class _$HarLogImpl implements _HarLog {
+  const _$HarLogImpl({this.log});
+
+  factory _$HarLogImpl.fromJson(Map<String, dynamic> json) =>
+      _$$HarLogImplFromJson(json);
+
+  @override
+  final Log? log;
+
+  @override
+  String toString() {
+    return 'HarLog(log: $log)';
+  }
+
+  @override
+  bool operator ==(Object other) {
+    return identical(this, other) ||
+        (other.runtimeType == runtimeType &&
+            other is _$HarLogImpl &&
+            (identical(other.log, log) || other.log == log));
+  }
+
+  @JsonKey(includeFromJson: false, includeToJson: false)
+  @override
+  int get hashCode => Object.hash(runtimeType, log);
+
+  /// Create a copy of HarLog
+  /// with the given fields replaced by the non-null parameter values.
+  @JsonKey(includeFromJson: false, includeToJson: false)
+  @override
+  @pragma('vm:prefer-inline')
+  _$$HarLogImplCopyWith<_$HarLogImpl> get copyWith =>
+      __$$HarLogImplCopyWithImpl<_$HarLogImpl>(this, _$identity);
+
+  @override
+  Map<String, dynamic> toJson() {
+    return _$$HarLogImplToJson(
+      this,
+    );
+  }
+}
+
+abstract class _HarLog implements HarLog {
+  const factory _HarLog({final Log? log}) = _$HarLogImpl;
+
+  factory _HarLog.fromJson(Map<String, dynamic> json) = _$HarLogImpl.fromJson;
+
+  @override
+  Log? get log;
+
+  /// Create a copy of HarLog
+  /// with the given fields replaced by the non-null parameter values.
+  @override
+  @JsonKey(includeFromJson: false, includeToJson: false)
+  _$$HarLogImplCopyWith<_$HarLogImpl> get copyWith =>
+      throw _privateConstructorUsedError;
+}
+
+Log _$LogFromJson(Map<String, dynamic> json) {
+  return _Log.fromJson(json);
+}
+
+/// @nodoc
+mixin _$Log {
+  String? get version => throw _privateConstructorUsedError;
+  Creator? get creator => throw _privateConstructorUsedError;
+  List<Entry>? get entries => throw _privateConstructorUsedError;
+
+  /// Serializes this Log to a JSON map.
+  Map<String, dynamic> toJson() => throw _privateConstructorUsedError;
+
+  /// Create a copy of Log
+  /// with the given fields replaced by the non-null parameter values.
+  @JsonKey(includeFromJson: false, includeToJson: false)
+  $LogCopyWith<Log> get copyWith => throw _privateConstructorUsedError;
+}
+
+/// @nodoc
+abstract class $LogCopyWith<$Res> {
+  factory $LogCopyWith(Log value, $Res Function(Log) then) =
+      _$LogCopyWithImpl<$Res, Log>;
+  @useResult
+  $Res call({String? version, Creator? creator, List<Entry>? entries});
+
+  $CreatorCopyWith<$Res>? get creator;
+}
+
+/// @nodoc
+class _$LogCopyWithImpl<$Res, $Val extends Log> implements $LogCopyWith<$Res> {
+  _$LogCopyWithImpl(this._value, this._then);
+
+  // ignore: unused_field
+  final $Val _value;
+  // ignore: unused_field
+  final $Res Function($Val) _then;
+
+  /// Create a copy of Log
+  /// with the given fields replaced by the non-null parameter values.
+  @pragma('vm:prefer-inline')
+  @override
+  $Res call({
+    Object? version = freezed,
+    Object? creator = freezed,
+    Object? entries = freezed,
+  }) {
+    return _then(_value.copyWith(
+      version: freezed == version
+          ? _value.version
+          : version // ignore: cast_nullable_to_non_nullable
+              as String?,
+      creator: freezed == creator
+          ? _value.creator
+          : creator // ignore: cast_nullable_to_non_nullable
+              as Creator?,
+      entries: freezed == entries
+          ? _value.entries
+          : entries // ignore: cast_nullable_to_non_nullable
+              as List<Entry>?,
+    ) as $Val);
+  }
+
+  /// Create a copy of Log
+  /// with the given fields replaced by the non-null parameter values.
+  @override
+  @pragma('vm:prefer-inline')
+  $CreatorCopyWith<$Res>? get creator {
+    if (_value.creator == null) {
+      return null;
+    }
+
+    return $CreatorCopyWith<$Res>(_value.creator!, (value) {
+      return _then(_value.copyWith(creator: value) as $Val);
+    });
+  }
+}
+
+/// @nodoc
+abstract class _$$LogImplCopyWith<$Res> implements $LogCopyWith<$Res> {
+  factory _$$LogImplCopyWith(_$LogImpl value, $Res Function(_$LogImpl) then) =
+      __$$LogImplCopyWithImpl<$Res>;
+  @override
+  @useResult
+  $Res call({String? version, Creator? creator, List<Entry>? entries});
+
+  @override
+  $CreatorCopyWith<$Res>? get creator;
+}
+
+/// @nodoc
+class __$$LogImplCopyWithImpl<$Res> extends _$LogCopyWithImpl<$Res, _$LogImpl>
+    implements _$$LogImplCopyWith<$Res> {
+  __$$LogImplCopyWithImpl(_$LogImpl _value, $Res Function(_$LogImpl) _then)
+      : super(_value, _then);
+
+  /// Create a copy of Log
+  /// with the given fields replaced by the non-null parameter values.
+  @pragma('vm:prefer-inline')
+  @override
+  $Res call({
+    Object? version = freezed,
+    Object? creator = freezed,
+    Object? entries = freezed,
+  }) {
+    return _then(_$LogImpl(
+      version: freezed == version
+          ? _value.version
+          : version // ignore: cast_nullable_to_non_nullable
+              as String?,
+      creator: freezed == creator
+          ? _value.creator
+          : creator // ignore: cast_nullable_to_non_nullable
+              as Creator?,
+      entries: freezed == entries
+          ? _value._entries
+          : entries // ignore: cast_nullable_to_non_nullable
+              as List<Entry>?,
+    ));
+  }
+}
+
+/// @nodoc
+
+@JsonSerializable(explicitToJson: true, anyMap: true, includeIfNull: false)
+class _$LogImpl implements _Log {
+  const _$LogImpl({this.version, this.creator, final List<Entry>? entries})
+      : _entries = entries;
+
+  factory _$LogImpl.fromJson(Map<String, dynamic> json) =>
+      _$$LogImplFromJson(json);
+
+  @override
+  final String? version;
+  @override
+  final Creator? creator;
+  final List<Entry>? _entries;
+  @override
+  List<Entry>? get entries {
+    final value = _entries;
+    if (value == null) return null;
+    if (_entries is EqualUnmodifiableListView) return _entries;
+    // ignore: implicit_dynamic_type
+    return EqualUnmodifiableListView(value);
+  }
+
+  @override
+  String toString() {
+    return 'Log(version: $version, creator: $creator, entries: $entries)';
+  }
+
+  @override
+  bool operator ==(Object other) {
+    return identical(this, other) ||
+        (other.runtimeType == runtimeType &&
+            other is _$LogImpl &&
+            (identical(other.version, version) || other.version == version) &&
+            (identical(other.creator, creator) || other.creator == creator) &&
+            const DeepCollectionEquality().equals(other._entries, _entries));
+  }
+
+  @JsonKey(includeFromJson: false, includeToJson: false)
+  @override
+  int get hashCode => Object.hash(runtimeType, version, creator,
+      const DeepCollectionEquality().hash(_entries));
+
+  /// Create a copy of Log
+  /// with the given fields replaced by the non-null parameter values.
+  @JsonKey(includeFromJson: false, includeToJson: false)
+  @override
+  @pragma('vm:prefer-inline')
+  _$$LogImplCopyWith<_$LogImpl> get copyWith =>
+      __$$LogImplCopyWithImpl<_$LogImpl>(this, _$identity);
+
+  @override
+  Map<String, dynamic> toJson() {
+    return _$$LogImplToJson(
+      this,
+    );
+  }
+}
+
+abstract class _Log implements Log {
+  const factory _Log(
+      {final String? version,
+      final Creator? creator,
+      final List<Entry>? entries}) = _$LogImpl;
+
+  factory _Log.fromJson(Map<String, dynamic> json) = _$LogImpl.fromJson;
+
+  @override
+  String? get version;
+  @override
+  Creator? get creator;
+  @override
+  List<Entry>? get entries;
+
+  /// Create a copy of Log
+  /// with the given fields replaced by the non-null parameter values.
+  @override
+  @JsonKey(includeFromJson: false, includeToJson: false)
+  _$$LogImplCopyWith<_$LogImpl> get copyWith =>
+      throw _privateConstructorUsedError;
+}
+
+Creator _$CreatorFromJson(Map<String, dynamic> json) {
+  return _Creator.fromJson(json);
+}
+
+/// @nodoc
+mixin _$Creator {
+  String? get name => throw _privateConstructorUsedError;
+  String? get version => throw _privateConstructorUsedError;
+
+  /// Serializes this Creator to a JSON map.
+  Map<String, dynamic> toJson() => throw _privateConstructorUsedError;
+
+  /// Create a copy of Creator
+  /// with the given fields replaced by the non-null parameter values.
+  @JsonKey(includeFromJson: false, includeToJson: false)
+  $CreatorCopyWith<Creator> get copyWith => throw _privateConstructorUsedError;
+}
+
+/// @nodoc
+abstract class $CreatorCopyWith<$Res> {
+  factory $CreatorCopyWith(Creator value, $Res Function(Creator) then) =
+      _$CreatorCopyWithImpl<$Res, Creator>;
+  @useResult
+  $Res call({String? name, String? version});
+}
+
+/// @nodoc
+class _$CreatorCopyWithImpl<$Res, $Val extends Creator>
+    implements $CreatorCopyWith<$Res> {
+  _$CreatorCopyWithImpl(this._value, this._then);
+
+  // ignore: unused_field
+  final $Val _value;
+  // ignore: unused_field
+  final $Res Function($Val) _then;
+
+  /// Create a copy of Creator
+  /// with the given fields replaced by the non-null parameter values.
+  @pragma('vm:prefer-inline')
+  @override
+  $Res call({
+    Object? name = freezed,
+    Object? version = freezed,
+  }) {
+    return _then(_value.copyWith(
+      name: freezed == name
+          ? _value.name
+          : name // ignore: cast_nullable_to_non_nullable
+              as String?,
+      version: freezed == version
+          ? _value.version
+          : version // ignore: cast_nullable_to_non_nullable
+              as String?,
+    ) as $Val);
+  }
+}
+
+/// @nodoc
+abstract class _$$CreatorImplCopyWith<$Res> implements $CreatorCopyWith<$Res> {
+  factory _$$CreatorImplCopyWith(
+          _$CreatorImpl value, $Res Function(_$CreatorImpl) then) =
+      __$$CreatorImplCopyWithImpl<$Res>;
+  @override
+  @useResult
+  $Res call({String? name, String? version});
+}
+
+/// @nodoc
+class __$$CreatorImplCopyWithImpl<$Res>
+    extends _$CreatorCopyWithImpl<$Res, _$CreatorImpl>
+    implements _$$CreatorImplCopyWith<$Res> {
+  __$$CreatorImplCopyWithImpl(
+      _$CreatorImpl _value, $Res Function(_$CreatorImpl) _then)
+      : super(_value, _then);
+
+  /// Create a copy of Creator
+  /// with the given fields replaced by the non-null parameter values.
+  @pragma('vm:prefer-inline')
+  @override
+  $Res call({
+    Object? name = freezed,
+    Object? version = freezed,
+  }) {
+    return _then(_$CreatorImpl(
+      name: freezed == name
+          ? _value.name
+          : name // ignore: cast_nullable_to_non_nullable
+              as String?,
+      version: freezed == version
+          ? _value.version
+          : version // ignore: cast_nullable_to_non_nullable
+              as String?,
+    ));
+  }
+}
+
+/// @nodoc
+
+@JsonSerializable(explicitToJson: true, anyMap: true, includeIfNull: false)
+class _$CreatorImpl implements _Creator {
+  const _$CreatorImpl({this.name, this.version});
+
+  factory _$CreatorImpl.fromJson(Map<String, dynamic> json) =>
+      _$$CreatorImplFromJson(json);
+
+  @override
+  final String? name;
+  @override
+  final String? version;
+
+  @override
+  String toString() {
+    return 'Creator(name: $name, version: $version)';
+  }
+
+  @override
+  bool operator ==(Object other) {
+    return identical(this, other) ||
+        (other.runtimeType == runtimeType &&
+            other is _$CreatorImpl &&
+            (identical(other.name, name) || other.name == name) &&
+            (identical(other.version, version) || other.version == version));
+  }
+
+  @JsonKey(includeFromJson: false, includeToJson: false)
+  @override
+  int get hashCode => Object.hash(runtimeType, name, version);
+
+  /// Create a copy of Creator
+  /// with the given fields replaced by the non-null parameter values.
+  @JsonKey(includeFromJson: false, includeToJson: false)
+  @override
+  @pragma('vm:prefer-inline')
+  _$$CreatorImplCopyWith<_$CreatorImpl> get copyWith =>
+      __$$CreatorImplCopyWithImpl<_$CreatorImpl>(this, _$identity);
+
+  @override
+  Map<String, dynamic> toJson() {
+    return _$$CreatorImplToJson(
+      this,
+    );
+  }
+}
+
+abstract class _Creator implements Creator {
+  const factory _Creator({final String? name, final String? version}) =
+      _$CreatorImpl;
+
+  factory _Creator.fromJson(Map<String, dynamic> json) = _$CreatorImpl.fromJson;
+
+  @override
+  String? get name;
+  @override
+  String? get version;
+
+  /// Create a copy of Creator
+  /// with the given fields replaced by the non-null parameter values.
+  @override
+  @JsonKey(includeFromJson: false, includeToJson: false)
+  _$$CreatorImplCopyWith<_$CreatorImpl> get copyWith =>
+      throw _privateConstructorUsedError;
+}
+
+Entry _$EntryFromJson(Map<String, dynamic> json) {
+  return _Entry.fromJson(json);
+}
+
+/// @nodoc
+mixin _$Entry {
+  String? get startedDateTime => throw _privateConstructorUsedError;
+  int? get time => throw _privateConstructorUsedError;
+  Request? get request => throw _privateConstructorUsedError;
+  Response? get response => throw _privateConstructorUsedError;
+
+  /// Serializes this Entry to a JSON map.
+  Map<String, dynamic> toJson() => throw _privateConstructorUsedError;
+
+  /// Create a copy of Entry
+  /// with the given fields replaced by the non-null parameter values.
+  @JsonKey(includeFromJson: false, includeToJson: false)
+  $EntryCopyWith<Entry> get copyWith => throw _privateConstructorUsedError;
+}
+
+/// @nodoc
+abstract class $EntryCopyWith<$Res> {
+  factory $EntryCopyWith(Entry value, $Res Function(Entry) then) =
+      _$EntryCopyWithImpl<$Res, Entry>;
+  @useResult
+  $Res call(
+      {String? startedDateTime,
+      int? time,
+      Request? request,
+      Response? response});
+
+  $RequestCopyWith<$Res>? get request;
+  $ResponseCopyWith<$Res>? get response;
+}
+
+/// @nodoc
+class _$EntryCopyWithImpl<$Res, $Val extends Entry>
+    implements $EntryCopyWith<$Res> {
+  _$EntryCopyWithImpl(this._value, this._then);
+
+  // ignore: unused_field
+  final $Val _value;
+  // ignore: unused_field
+  final $Res Function($Val) _then;
+
+  /// Create a copy of Entry
+  /// with the given fields replaced by the non-null parameter values.
+  @pragma('vm:prefer-inline')
+  @override
+  $Res call({
+    Object? startedDateTime = freezed,
+    Object? time = freezed,
+    Object? request = freezed,
+    Object? response = freezed,
+  }) {
+    return _then(_value.copyWith(
+      startedDateTime: freezed == startedDateTime
+          ? _value.startedDateTime
+          : startedDateTime // ignore: cast_nullable_to_non_nullable
+              as String?,
+      time: freezed == time
+          ? _value.time
+          : time // ignore: cast_nullable_to_non_nullable
+              as int?,
+      request: freezed == request
+          ? _value.request
+          : request // ignore: cast_nullable_to_non_nullable
+              as Request?,
+      response: freezed == response
+          ? _value.response
+          : response // ignore: cast_nullable_to_non_nullable
+              as Response?,
+    ) as $Val);
+  }
+
+  /// Create a copy of Entry
+  /// with the given fields replaced by the non-null parameter values.
+  @override
+  @pragma('vm:prefer-inline')
+  $RequestCopyWith<$Res>? get request {
+    if (_value.request == null) {
+      return null;
+    }
+
+    return $RequestCopyWith<$Res>(_value.request!, (value) {
+      return _then(_value.copyWith(request: value) as $Val);
+    });
+  }
+
+  /// Create a copy of Entry
+  /// with the given fields replaced by the non-null parameter values.
+  @override
+  @pragma('vm:prefer-inline')
+  $ResponseCopyWith<$Res>? get response {
+    if (_value.response == null) {
+      return null;
+    }
+
+    return $ResponseCopyWith<$Res>(_value.response!, (value) {
+      return _then(_value.copyWith(response: value) as $Val);
+    });
+  }
+}
+
+/// @nodoc
+abstract class _$$EntryImplCopyWith<$Res> implements $EntryCopyWith<$Res> {
+  factory _$$EntryImplCopyWith(
+          _$EntryImpl value, $Res Function(_$EntryImpl) then) =
+      __$$EntryImplCopyWithImpl<$Res>;
+  @override
+  @useResult
+  $Res call(
+      {String? startedDateTime,
+      int? time,
+      Request? request,
+      Response? response});
+
+  @override
+  $RequestCopyWith<$Res>? get request;
+  @override
+  $ResponseCopyWith<$Res>? get response;
+}
+
+/// @nodoc
+class __$$EntryImplCopyWithImpl<$Res>
+    extends _$EntryCopyWithImpl<$Res, _$EntryImpl>
+    implements _$$EntryImplCopyWith<$Res> {
+  __$$EntryImplCopyWithImpl(
+      _$EntryImpl _value, $Res Function(_$EntryImpl) _then)
+      : super(_value, _then);
+
+  /// Create a copy of Entry
+  /// with the given fields replaced by the non-null parameter values.
+  @pragma('vm:prefer-inline')
+  @override
+  $Res call({
+    Object? startedDateTime = freezed,
+    Object? time = freezed,
+    Object? request = freezed,
+    Object? response = freezed,
+  }) {
+    return _then(_$EntryImpl(
+      startedDateTime: freezed == startedDateTime
+          ? _value.startedDateTime
+          : startedDateTime // ignore: cast_nullable_to_non_nullable
+              as String?,
+      time: freezed == time
+          ? _value.time
+          : time // ignore: cast_nullable_to_non_nullable
+              as int?,
+      request: freezed == request
+          ? _value.request
+          : request // ignore: cast_nullable_to_non_nullable
+              as Request?,
+      response: freezed == response
+          ? _value.response
+          : response // ignore: cast_nullable_to_non_nullable
+              as Response?,
+    ));
+  }
+}
+
+/// @nodoc
+
+@JsonSerializable(explicitToJson: true, anyMap: true, includeIfNull: false)
+class _$EntryImpl implements _Entry {
+  const _$EntryImpl(
+      {this.startedDateTime, this.time, this.request, this.response});
+
+  factory _$EntryImpl.fromJson(Map<String, dynamic> json) =>
+      _$$EntryImplFromJson(json);
+
+  @override
+  final String? startedDateTime;
+  @override
+  final int? time;
+  @override
+  final Request? request;
+  @override
+  final Response? response;
+
+  @override
+  String toString() {
+    return 'Entry(startedDateTime: $startedDateTime, time: $time, request: $request, response: $response)';
+  }
+
+  @override
+  bool operator ==(Object other) {
+    return identical(this, other) ||
+        (other.runtimeType == runtimeType &&
+            other is _$EntryImpl &&
+            (identical(other.startedDateTime, startedDateTime) ||
+                other.startedDateTime == startedDateTime) &&
+            (identical(other.time, time) || other.time == time) &&
+            (identical(other.request, request) || other.request == request) &&
+            (identical(other.response, response) ||
+                other.response == response));
+  }
+
+  @JsonKey(includeFromJson: false, includeToJson: false)
+  @override
+  int get hashCode =>
+      Object.hash(runtimeType, startedDateTime, time, request, response);
+
+  /// Create a copy of Entry
+  /// with the given fields replaced by the non-null parameter values.
+  @JsonKey(includeFromJson: false, includeToJson: false)
+  @override
+  @pragma('vm:prefer-inline')
+  _$$EntryImplCopyWith<_$EntryImpl> get copyWith =>
+      __$$EntryImplCopyWithImpl<_$EntryImpl>(this, _$identity);
+
+  @override
+  Map<String, dynamic> toJson() {
+    return _$$EntryImplToJson(
+      this,
+    );
+  }
+}
+
+abstract class _Entry implements Entry {
+  const factory _Entry(
+      {final String? startedDateTime,
+      final int? time,
+      final Request? request,
+      final Response? response}) = _$EntryImpl;
+
+  factory _Entry.fromJson(Map<String, dynamic> json) = _$EntryImpl.fromJson;
+
+  @override
+  String? get startedDateTime;
+  @override
+  int? get time;
+  @override
+  Request? get request;
+  @override
+  Response? get response;
+
+  /// Create a copy of Entry
+  /// with the given fields replaced by the non-null parameter values.
+  @override
+  @JsonKey(includeFromJson: false, includeToJson: false)
+  _$$EntryImplCopyWith<_$EntryImpl> get copyWith =>
+      throw _privateConstructorUsedError;
+}
+
+Request _$RequestFromJson(Map<String, dynamic> json) {
+  return _Request.fromJson(json);
+}
+
+/// @nodoc
+mixin _$Request {
+  String? get method => throw _privateConstructorUsedError;
+  String? get url => throw _privateConstructorUsedError;
+  String? get httpVersion => throw _privateConstructorUsedError;
+  List<dynamic>? get cookies => throw _privateConstructorUsedError;
+  List<Header>? get headers => throw _privateConstructorUsedError;
+  List<Query>? get queryString => throw _privateConstructorUsedError;
+  PostData? get postData => throw _privateConstructorUsedError;
+  int? get headersSize => throw _privateConstructorUsedError;
+  int? get bodySize => throw _privateConstructorUsedError;
+
+  /// Serializes this Request to a JSON map.
+  Map<String, dynamic> toJson() => throw _privateConstructorUsedError;
+
+  /// Create a copy of Request
+  /// with the given fields replaced by the non-null parameter values.
+  @JsonKey(includeFromJson: false, includeToJson: false)
+  $RequestCopyWith<Request> get copyWith => throw _privateConstructorUsedError;
+}
+
+/// @nodoc
+abstract class $RequestCopyWith<$Res> {
+  factory $RequestCopyWith(Request value, $Res Function(Request) then) =
+      _$RequestCopyWithImpl<$Res, Request>;
+  @useResult
+  $Res call(
+      {String? method,
+      String? url,
+      String? httpVersion,
+      List<dynamic>? cookies,
+      List<Header>? headers,
+      List<Query>? queryString,
+      PostData? postData,
+      int? headersSize,
+      int? bodySize});
+
+  $PostDataCopyWith<$Res>? get postData;
+}
+
+/// @nodoc
+class _$RequestCopyWithImpl<$Res, $Val extends Request>
+    implements $RequestCopyWith<$Res> {
+  _$RequestCopyWithImpl(this._value, this._then);
+
+  // ignore: unused_field
+  final $Val _value;
+  // ignore: unused_field
+  final $Res Function($Val) _then;
+
+  /// Create a copy of Request
+  /// with the given fields replaced by the non-null parameter values.
+  @pragma('vm:prefer-inline')
+  @override
+  $Res call({
+    Object? method = freezed,
+    Object? url = freezed,
+    Object? httpVersion = freezed,
+    Object? cookies = freezed,
+    Object? headers = freezed,
+    Object? queryString = freezed,
+    Object? postData = freezed,
+    Object? headersSize = freezed,
+    Object? bodySize = freezed,
+  }) {
+    return _then(_value.copyWith(
+      method: freezed == method
+          ? _value.method
+          : method // ignore: cast_nullable_to_non_nullable
+              as String?,
+      url: freezed == url
+          ? _value.url
+          : url // ignore: cast_nullable_to_non_nullable
+              as String?,
+      httpVersion: freezed == httpVersion
+          ? _value.httpVersion
+          : httpVersion // ignore: cast_nullable_to_non_nullable
+              as String?,
+      cookies: freezed == cookies
+          ? _value.cookies
+          : cookies // ignore: cast_nullable_to_non_nullable
+              as List<dynamic>?,
+      headers: freezed == headers
+          ? _value.headers
+          : headers // ignore: cast_nullable_to_non_nullable
+              as List<Header>?,
+      queryString: freezed == queryString
+          ? _value.queryString
+          : queryString // ignore: cast_nullable_to_non_nullable
+              as List<Query>?,
+      postData: freezed == postData
+          ? _value.postData
+          : postData // ignore: cast_nullable_to_non_nullable
+              as PostData?,
+      headersSize: freezed == headersSize
+          ? _value.headersSize
+          : headersSize // ignore: cast_nullable_to_non_nullable
+              as int?,
+      bodySize: freezed == bodySize
+          ? _value.bodySize
+          : bodySize // ignore: cast_nullable_to_non_nullable
+              as int?,
+    ) as $Val);
+  }
+
+  /// Create a copy of Request
+  /// with the given fields replaced by the non-null parameter values.
+  @override
+  @pragma('vm:prefer-inline')
+  $PostDataCopyWith<$Res>? get postData {
+    if (_value.postData == null) {
+      return null;
+    }
+
+    return $PostDataCopyWith<$Res>(_value.postData!, (value) {
+      return _then(_value.copyWith(postData: value) as $Val);
+    });
+  }
+}
+
+/// @nodoc
+abstract class _$$RequestImplCopyWith<$Res> implements $RequestCopyWith<$Res> {
+  factory _$$RequestImplCopyWith(
+          _$RequestImpl value, $Res Function(_$RequestImpl) then) =
+      __$$RequestImplCopyWithImpl<$Res>;
+  @override
+  @useResult
+  $Res call(
+      {String? method,
+      String? url,
+      String? httpVersion,
+      List<dynamic>? cookies,
+      List<Header>? headers,
+      List<Query>? queryString,
+      PostData? postData,
+      int? headersSize,
+      int? bodySize});
+
+  @override
+  $PostDataCopyWith<$Res>? get postData;
+}
+
+/// @nodoc
+class __$$RequestImplCopyWithImpl<$Res>
+    extends _$RequestCopyWithImpl<$Res, _$RequestImpl>
+    implements _$$RequestImplCopyWith<$Res> {
+  __$$RequestImplCopyWithImpl(
+      _$RequestImpl _value, $Res Function(_$RequestImpl) _then)
+      : super(_value, _then);
+
+  /// Create a copy of Request
+  /// with the given fields replaced by the non-null parameter values.
+  @pragma('vm:prefer-inline')
+  @override
+  $Res call({
+    Object? method = freezed,
+    Object? url = freezed,
+    Object? httpVersion = freezed,
+    Object? cookies = freezed,
+    Object? headers = freezed,
+    Object? queryString = freezed,
+    Object? postData = freezed,
+    Object? headersSize = freezed,
+    Object? bodySize = freezed,
+  }) {
+    return _then(_$RequestImpl(
+      method: freezed == method
+          ? _value.method
+          : method // ignore: cast_nullable_to_non_nullable
+              as String?,
+      url: freezed == url
+          ? _value.url
+          : url // ignore: cast_nullable_to_non_nullable
+              as String?,
+      httpVersion: freezed == httpVersion
+          ? _value.httpVersion
+          : httpVersion // ignore: cast_nullable_to_non_nullable
+              as String?,
+      cookies: freezed == cookies
+          ? _value._cookies
+          : cookies // ignore: cast_nullable_to_non_nullable
+              as List<dynamic>?,
+      headers: freezed == headers
+          ? _value._headers
+          : headers // ignore: cast_nullable_to_non_nullable
+              as List<Header>?,
+      queryString: freezed == queryString
+          ? _value._queryString
+          : queryString // ignore: cast_nullable_to_non_nullable
+              as List<Query>?,
+      postData: freezed == postData
+          ? _value.postData
+          : postData // ignore: cast_nullable_to_non_nullable
+              as PostData?,
+      headersSize: freezed == headersSize
+          ? _value.headersSize
+          : headersSize // ignore: cast_nullable_to_non_nullable
+              as int?,
+      bodySize: freezed == bodySize
+          ? _value.bodySize
+          : bodySize // ignore: cast_nullable_to_non_nullable
+              as int?,
+    ));
+  }
+}
+
+/// @nodoc
+
+@JsonSerializable(explicitToJson: true, anyMap: true, includeIfNull: false)
+class _$RequestImpl implements _Request {
+  const _$RequestImpl(
+      {this.method,
+      this.url,
+      this.httpVersion,
+      final List<dynamic>? cookies,
+      final List<Header>? headers,
+      final List<Query>? queryString,
+      this.postData,
+      this.headersSize,
+      this.bodySize})
+      : _cookies = cookies,
+        _headers = headers,
+        _queryString = queryString;
+
+  factory _$RequestImpl.fromJson(Map<String, dynamic> json) =>
+      _$$RequestImplFromJson(json);
+
+  @override
+  final String? method;
+  @override
+  final String? url;
+  @override
+  final String? httpVersion;
+  final List<dynamic>? _cookies;
+  @override
+  List<dynamic>? get cookies {
+    final value = _cookies;
+    if (value == null) return null;
+    if (_cookies is EqualUnmodifiableListView) return _cookies;
+    // ignore: implicit_dynamic_type
+    return EqualUnmodifiableListView(value);
+  }
+
+  final List<Header>? _headers;
+  @override
+  List<Header>? get headers {
+    final value = _headers;
+    if (value == null) return null;
+    if (_headers is EqualUnmodifiableListView) return _headers;
+    // ignore: implicit_dynamic_type
+    return EqualUnmodifiableListView(value);
+  }
+
+  final List<Query>? _queryString;
+  @override
+  List<Query>? get queryString {
+    final value = _queryString;
+    if (value == null) return null;
+    if (_queryString is EqualUnmodifiableListView) return _queryString;
+    // ignore: implicit_dynamic_type
+    return EqualUnmodifiableListView(value);
+  }
+
+  @override
+  final PostData? postData;
+  @override
+  final int? headersSize;
+  @override
+  final int? bodySize;
+
+  @override
+  String toString() {
+    return 'Request(method: $method, url: $url, httpVersion: $httpVersion, cookies: $cookies, headers: $headers, queryString: $queryString, postData: $postData, headersSize: $headersSize, bodySize: $bodySize)';
+  }
+
+  @override
+  bool operator ==(Object other) {
+    return identical(this, other) ||
+        (other.runtimeType == runtimeType &&
+            other is _$RequestImpl &&
+            (identical(other.method, method) || other.method == method) &&
+            (identical(other.url, url) || other.url == url) &&
+            (identical(other.httpVersion, httpVersion) ||
+                other.httpVersion == httpVersion) &&
+            const DeepCollectionEquality().equals(other._cookies, _cookies) &&
+            const DeepCollectionEquality().equals(other._headers, _headers) &&
+            const DeepCollectionEquality()
+                .equals(other._queryString, _queryString) &&
+            (identical(other.postData, postData) ||
+                other.postData == postData) &&
+            (identical(other.headersSize, headersSize) ||
+                other.headersSize == headersSize) &&
+            (identical(other.bodySize, bodySize) ||
+                other.bodySize == bodySize));
+  }
+
+  @JsonKey(includeFromJson: false, includeToJson: false)
+  @override
+  int get hashCode => Object.hash(
+      runtimeType,
+      method,
+      url,
+      httpVersion,
+      const DeepCollectionEquality().hash(_cookies),
+      const DeepCollectionEquality().hash(_headers),
+      const DeepCollectionEquality().hash(_queryString),
+      postData,
+      headersSize,
+      bodySize);
+
+  /// Create a copy of Request
+  /// with the given fields replaced by the non-null parameter values.
+  @JsonKey(includeFromJson: false, includeToJson: false)
+  @override
+  @pragma('vm:prefer-inline')
+  _$$RequestImplCopyWith<_$RequestImpl> get copyWith =>
+      __$$RequestImplCopyWithImpl<_$RequestImpl>(this, _$identity);
+
+  @override
+  Map<String, dynamic> toJson() {
+    return _$$RequestImplToJson(
+      this,
+    );
+  }
+}
+
+abstract class _Request implements Request {
+  const factory _Request(
+      {final String? method,
+      final String? url,
+      final String? httpVersion,
+      final List<dynamic>? cookies,
+      final List<Header>? headers,
+      final List<Query>? queryString,
+      final PostData? postData,
+      final int? headersSize,
+      final int? bodySize}) = _$RequestImpl;
+
+  factory _Request.fromJson(Map<String, dynamic> json) = _$RequestImpl.fromJson;
+
+  @override
+  String? get method;
+  @override
+  String? get url;
+  @override
+  String? get httpVersion;
+  @override
+  List<dynamic>? get cookies;
+  @override
+  List<Header>? get headers;
+  @override
+  List<Query>? get queryString;
+  @override
+  PostData? get postData;
+  @override
+  int? get headersSize;
+  @override
+  int? get bodySize;
+
+  /// Create a copy of Request
+  /// with the given fields replaced by the non-null parameter values.
+  @override
+  @JsonKey(includeFromJson: false, includeToJson: false)
+  _$$RequestImplCopyWith<_$RequestImpl> get copyWith =>
+      throw _privateConstructorUsedError;
+}
+
+PostData _$PostDataFromJson(Map<String, dynamic> json) {
+  return _PostData.fromJson(json);
+}
+
+/// @nodoc
+mixin _$PostData {
+  String? get mimeType => throw _privateConstructorUsedError;
+  String? get text => throw _privateConstructorUsedError;
+  List<Param>? get params => throw _privateConstructorUsedError;
+
+  /// Serializes this PostData to a JSON map.
+  Map<String, dynamic> toJson() => throw _privateConstructorUsedError;
+
+  /// Create a copy of PostData
+  /// with the given fields replaced by the non-null parameter values.
+  @JsonKey(includeFromJson: false, includeToJson: false)
+  $PostDataCopyWith<PostData> get copyWith =>
+      throw _privateConstructorUsedError;
+}
+
+/// @nodoc
+abstract class $PostDataCopyWith<$Res> {
+  factory $PostDataCopyWith(PostData value, $Res Function(PostData) then) =
+      _$PostDataCopyWithImpl<$Res, PostData>;
+  @useResult
+  $Res call({String? mimeType, String? text, List<Param>? params});
+}
+
+/// @nodoc
+class _$PostDataCopyWithImpl<$Res, $Val extends PostData>
+    implements $PostDataCopyWith<$Res> {
+  _$PostDataCopyWithImpl(this._value, this._then);
+
+  // ignore: unused_field
+  final $Val _value;
+  // ignore: unused_field
+  final $Res Function($Val) _then;
+
+  /// Create a copy of PostData
+  /// with the given fields replaced by the non-null parameter values.
+  @pragma('vm:prefer-inline')
+  @override
+  $Res call({
+    Object? mimeType = freezed,
+    Object? text = freezed,
+    Object? params = freezed,
+  }) {
+    return _then(_value.copyWith(
+      mimeType: freezed == mimeType
+          ? _value.mimeType
+          : mimeType // ignore: cast_nullable_to_non_nullable
+              as String?,
+      text: freezed == text
+          ? _value.text
+          : text // ignore: cast_nullable_to_non_nullable
+              as String?,
+      params: freezed == params
+          ? _value.params
+          : params // ignore: cast_nullable_to_non_nullable
+              as List<Param>?,
+    ) as $Val);
+  }
+}
+
+/// @nodoc
+abstract class _$$PostDataImplCopyWith<$Res>
+    implements $PostDataCopyWith<$Res> {
+  factory _$$PostDataImplCopyWith(
+          _$PostDataImpl value, $Res Function(_$PostDataImpl) then) =
+      __$$PostDataImplCopyWithImpl<$Res>;
+  @override
+  @useResult
+  $Res call({String? mimeType, String? text, List<Param>? params});
+}
+
+/// @nodoc
+class __$$PostDataImplCopyWithImpl<$Res>
+    extends _$PostDataCopyWithImpl<$Res, _$PostDataImpl>
+    implements _$$PostDataImplCopyWith<$Res> {
+  __$$PostDataImplCopyWithImpl(
+      _$PostDataImpl _value, $Res Function(_$PostDataImpl) _then)
+      : super(_value, _then);
+
+  /// Create a copy of PostData
+  /// with the given fields replaced by the non-null parameter values.
+  @pragma('vm:prefer-inline')
+  @override
+  $Res call({
+    Object? mimeType = freezed,
+    Object? text = freezed,
+    Object? params = freezed,
+  }) {
+    return _then(_$PostDataImpl(
+      mimeType: freezed == mimeType
+          ? _value.mimeType
+          : mimeType // ignore: cast_nullable_to_non_nullable
+              as String?,
+      text: freezed == text
+          ? _value.text
+          : text // ignore: cast_nullable_to_non_nullable
+              as String?,
+      params: freezed == params
+          ? _value._params
+          : params // ignore: cast_nullable_to_non_nullable
+              as List<Param>?,
+    ));
+  }
+}
+
+/// @nodoc
+
+@JsonSerializable(explicitToJson: true, anyMap: true, includeIfNull: false)
+class _$PostDataImpl implements _PostData {
+  const _$PostDataImpl({this.mimeType, this.text, final List<Param>? params})
+      : _params = params;
+
+  factory _$PostDataImpl.fromJson(Map<String, dynamic> json) =>
+      _$$PostDataImplFromJson(json);
+
+  @override
+  final String? mimeType;
+  @override
+  final String? text;
+  final List<Param>? _params;
+  @override
+  List<Param>? get params {
+    final value = _params;
+    if (value == null) return null;
+    if (_params is EqualUnmodifiableListView) return _params;
+    // ignore: implicit_dynamic_type
+    return EqualUnmodifiableListView(value);
+  }
+
+  @override
+  String toString() {
+    return 'PostData(mimeType: $mimeType, text: $text, params: $params)';
+  }
+
+  @override
+  bool operator ==(Object other) {
+    return identical(this, other) ||
+        (other.runtimeType == runtimeType &&
+            other is _$PostDataImpl &&
+            (identical(other.mimeType, mimeType) ||
+                other.mimeType == mimeType) &&
+            (identical(other.text, text) || other.text == text) &&
+            const DeepCollectionEquality().equals(other._params, _params));
+  }
+
+  @JsonKey(includeFromJson: false, includeToJson: false)
+  @override
+  int get hashCode => Object.hash(runtimeType, mimeType, text,
+      const DeepCollectionEquality().hash(_params));
+
+  /// Create a copy of PostData
+  /// with the given fields replaced by the non-null parameter values.
+  @JsonKey(includeFromJson: false, includeToJson: false)
+  @override
+  @pragma('vm:prefer-inline')
+  _$$PostDataImplCopyWith<_$PostDataImpl> get copyWith =>
+      __$$PostDataImplCopyWithImpl<_$PostDataImpl>(this, _$identity);
+
+  @override
+  Map<String, dynamic> toJson() {
+    return _$$PostDataImplToJson(
+      this,
+    );
+  }
+}
+
+abstract class _PostData implements PostData {
+  const factory _PostData(
+      {final String? mimeType,
+      final String? text,
+      final List<Param>? params}) = _$PostDataImpl;
+
+  factory _PostData.fromJson(Map<String, dynamic> json) =
+      _$PostDataImpl.fromJson;
+
+  @override
+  String? get mimeType;
+  @override
+  String? get text;
+  @override
+  List<Param>? get params;
+
+  /// Create a copy of PostData
+  /// with the given fields replaced by the non-null parameter values.
+  @override
+  @JsonKey(includeFromJson: false, includeToJson: false)
+  _$$PostDataImplCopyWith<_$PostDataImpl> get copyWith =>
+      throw _privateConstructorUsedError;
+}
+
+Param _$ParamFromJson(Map<String, dynamic> json) {
+  return _Param.fromJson(json);
+}
+
+/// @nodoc
+mixin _$Param {
+  String? get name => throw _privateConstructorUsedError;
+  String? get value => throw _privateConstructorUsedError;
+  String? get fileName => throw _privateConstructorUsedError;
+  String? get contentType => throw _privateConstructorUsedError;
+  bool? get disabled => throw _privateConstructorUsedError;
+
+  /// Serializes this Param to a JSON map.
+  Map<String, dynamic> toJson() => throw _privateConstructorUsedError;
+
+  /// Create a copy of Param
+  /// with the given fields replaced by the non-null parameter values.
+  @JsonKey(includeFromJson: false, includeToJson: false)
+  $ParamCopyWith<Param> get copyWith => throw _privateConstructorUsedError;
+}
+
+/// @nodoc
+abstract class $ParamCopyWith<$Res> {
+  factory $ParamCopyWith(Param value, $Res Function(Param) then) =
+      _$ParamCopyWithImpl<$Res, Param>;
+  @useResult
+  $Res call(
+      {String? name,
+      String? value,
+      String? fileName,
+      String? contentType,
+      bool? disabled});
+}
+
+/// @nodoc
+class _$ParamCopyWithImpl<$Res, $Val extends Param>
+    implements $ParamCopyWith<$Res> {
+  _$ParamCopyWithImpl(this._value, this._then);
+
+  // ignore: unused_field
+  final $Val _value;
+  // ignore: unused_field
+  final $Res Function($Val) _then;
+
+  /// Create a copy of Param
+  /// with the given fields replaced by the non-null parameter values.
+  @pragma('vm:prefer-inline')
+  @override
+  $Res call({
+    Object? name = freezed,
+    Object? value = freezed,
+    Object? fileName = freezed,
+    Object? contentType = freezed,
+    Object? disabled = freezed,
+  }) {
+    return _then(_value.copyWith(
+      name: freezed == name
+          ? _value.name
+          : name // ignore: cast_nullable_to_non_nullable
+              as String?,
+      value: freezed == value
+          ? _value.value
+          : value // ignore: cast_nullable_to_non_nullable
+              as String?,
+      fileName: freezed == fileName
+          ? _value.fileName
+          : fileName // ignore: cast_nullable_to_non_nullable
+              as String?,
+      contentType: freezed == contentType
+          ? _value.contentType
+          : contentType // ignore: cast_nullable_to_non_nullable
+              as String?,
+      disabled: freezed == disabled
+          ? _value.disabled
+          : disabled // ignore: cast_nullable_to_non_nullable
+              as bool?,
+    ) as $Val);
+  }
+}
+
+/// @nodoc
+abstract class _$$ParamImplCopyWith<$Res> implements $ParamCopyWith<$Res> {
+  factory _$$ParamImplCopyWith(
+          _$ParamImpl value, $Res Function(_$ParamImpl) then) =
+      __$$ParamImplCopyWithImpl<$Res>;
+  @override
+  @useResult
+  $Res call(
+      {String? name,
+      String? value,
+      String? fileName,
+      String? contentType,
+      bool? disabled});
+}
+
+/// @nodoc
+class __$$ParamImplCopyWithImpl<$Res>
+    extends _$ParamCopyWithImpl<$Res, _$ParamImpl>
+    implements _$$ParamImplCopyWith<$Res> {
+  __$$ParamImplCopyWithImpl(
+      _$ParamImpl _value, $Res Function(_$ParamImpl) _then)
+      : super(_value, _then);
+
+  /// Create a copy of Param
+  /// with the given fields replaced by the non-null parameter values.
+  @pragma('vm:prefer-inline')
+  @override
+  $Res call({
+    Object? name = freezed,
+    Object? value = freezed,
+    Object? fileName = freezed,
+    Object? contentType = freezed,
+    Object? disabled = freezed,
+  }) {
+    return _then(_$ParamImpl(
+      name: freezed == name
+          ? _value.name
+          : name // ignore: cast_nullable_to_non_nullable
+              as String?,
+      value: freezed == value
+          ? _value.value
+          : value // ignore: cast_nullable_to_non_nullable
+              as String?,
+      fileName: freezed == fileName
+          ? _value.fileName
+          : fileName // ignore: cast_nullable_to_non_nullable
+              as String?,
+      contentType: freezed == contentType
+          ? _value.contentType
+          : contentType // ignore: cast_nullable_to_non_nullable
+              as String?,
+      disabled: freezed == disabled
+          ? _value.disabled
+          : disabled // ignore: cast_nullable_to_non_nullable
+              as bool?,
+    ));
+  }
+}
+
+/// @nodoc
+
+@JsonSerializable(explicitToJson: true, anyMap: true, includeIfNull: false)
+class _$ParamImpl implements _Param {
+  const _$ParamImpl(
+      {this.name, this.value, this.fileName, this.contentType, this.disabled});
+
+  factory _$ParamImpl.fromJson(Map<String, dynamic> json) =>
+      _$$ParamImplFromJson(json);
+
+  @override
+  final String? name;
+  @override
+  final String? value;
+  @override
+  final String? fileName;
+  @override
+  final String? contentType;
+  @override
+  final bool? disabled;
+
+  @override
+  String toString() {
+    return 'Param(name: $name, value: $value, fileName: $fileName, contentType: $contentType, disabled: $disabled)';
+  }
+
+  @override
+  bool operator ==(Object other) {
+    return identical(this, other) ||
+        (other.runtimeType == runtimeType &&
+            other is _$ParamImpl &&
+            (identical(other.name, name) || other.name == name) &&
+            (identical(other.value, value) || other.value == value) &&
+            (identical(other.fileName, fileName) ||
+                other.fileName == fileName) &&
+            (identical(other.contentType, contentType) ||
+                other.contentType == contentType) &&
+            (identical(other.disabled, disabled) ||
+                other.disabled == disabled));
+  }
+
+  @JsonKey(includeFromJson: false, includeToJson: false)
+  @override
+  int get hashCode =>
+      Object.hash(runtimeType, name, value, fileName, contentType, disabled);
+
+  /// Create a copy of Param
+  /// with the given fields replaced by the non-null parameter values.
+  @JsonKey(includeFromJson: false, includeToJson: false)
+  @override
+  @pragma('vm:prefer-inline')
+  _$$ParamImplCopyWith<_$ParamImpl> get copyWith =>
+      __$$ParamImplCopyWithImpl<_$ParamImpl>(this, _$identity);
+
+  @override
+  Map<String, dynamic> toJson() {
+    return _$$ParamImplToJson(
+      this,
+    );
+  }
+}
+
+abstract class _Param implements Param {
+  const factory _Param(
+      {final String? name,
+      final String? value,
+      final String? fileName,
+      final String? contentType,
+      final bool? disabled}) = _$ParamImpl;
+
+  factory _Param.fromJson(Map<String, dynamic> json) = _$ParamImpl.fromJson;
+
+  @override
+  String? get name;
+  @override
+  String? get value;
+  @override
+  String? get fileName;
+  @override
+  String? get contentType;
+  @override
+  bool? get disabled;
+
+  /// Create a copy of Param
+  /// with the given fields replaced by the non-null parameter values.
+  @override
+  @JsonKey(includeFromJson: false, includeToJson: false)
+  _$$ParamImplCopyWith<_$ParamImpl> get copyWith =>
+      throw _privateConstructorUsedError;
+}
+
+Query _$QueryFromJson(Map<String, dynamic> json) {
+  return _Query.fromJson(json);
+}
+
+/// @nodoc
+mixin _$Query {
+  String? get name => throw _privateConstructorUsedError;
+  String? get value => throw _privateConstructorUsedError;
+  bool? get disabled => throw _privateConstructorUsedError;
+
+  /// Serializes this Query to a JSON map.
+  Map<String, dynamic> toJson() => throw _privateConstructorUsedError;
+
+  /// Create a copy of Query
+  /// with the given fields replaced by the non-null parameter values.
+  @JsonKey(includeFromJson: false, includeToJson: false)
+  $QueryCopyWith<Query> get copyWith => throw _privateConstructorUsedError;
+}
+
+/// @nodoc
+abstract class $QueryCopyWith<$Res> {
+  factory $QueryCopyWith(Query value, $Res Function(Query) then) =
+      _$QueryCopyWithImpl<$Res, Query>;
+  @useResult
+  $Res call({String? name, String? value, bool? disabled});
+}
+
+/// @nodoc
+class _$QueryCopyWithImpl<$Res, $Val extends Query>
+    implements $QueryCopyWith<$Res> {
+  _$QueryCopyWithImpl(this._value, this._then);
+
+  // ignore: unused_field
+  final $Val _value;
+  // ignore: unused_field
+  final $Res Function($Val) _then;
+
+  /// Create a copy of Query
+  /// with the given fields replaced by the non-null parameter values.
+  @pragma('vm:prefer-inline')
+  @override
+  $Res call({
+    Object? name = freezed,
+    Object? value = freezed,
+    Object? disabled = freezed,
+  }) {
+    return _then(_value.copyWith(
+      name: freezed == name
+          ? _value.name
+          : name // ignore: cast_nullable_to_non_nullable
+              as String?,
+      value: freezed == value
+          ? _value.value
+          : value // ignore: cast_nullable_to_non_nullable
+              as String?,
+      disabled: freezed == disabled
+          ? _value.disabled
+          : disabled // ignore: cast_nullable_to_non_nullable
+              as bool?,
+    ) as $Val);
+  }
+}
+
+/// @nodoc
+abstract class _$$QueryImplCopyWith<$Res> implements $QueryCopyWith<$Res> {
+  factory _$$QueryImplCopyWith(
+          _$QueryImpl value, $Res Function(_$QueryImpl) then) =
+      __$$QueryImplCopyWithImpl<$Res>;
+  @override
+  @useResult
+  $Res call({String? name, String? value, bool? disabled});
+}
+
+/// @nodoc
+class __$$QueryImplCopyWithImpl<$Res>
+    extends _$QueryCopyWithImpl<$Res, _$QueryImpl>
+    implements _$$QueryImplCopyWith<$Res> {
+  __$$QueryImplCopyWithImpl(
+      _$QueryImpl _value, $Res Function(_$QueryImpl) _then)
+      : super(_value, _then);
+
+  /// Create a copy of Query
+  /// with the given fields replaced by the non-null parameter values.
+  @pragma('vm:prefer-inline')
+  @override
+  $Res call({
+    Object? name = freezed,
+    Object? value = freezed,
+    Object? disabled = freezed,
+  }) {
+    return _then(_$QueryImpl(
+      name: freezed == name
+          ? _value.name
+          : name // ignore: cast_nullable_to_non_nullable
+              as String?,
+      value: freezed == value
+          ? _value.value
+          : value // ignore: cast_nullable_to_non_nullable
+              as String?,
+      disabled: freezed == disabled
+          ? _value.disabled
+          : disabled // ignore: cast_nullable_to_non_nullable
+              as bool?,
+    ));
+  }
+}
+
+/// @nodoc
+
+@JsonSerializable(explicitToJson: true, anyMap: true, includeIfNull: false)
+class _$QueryImpl implements _Query {
+  const _$QueryImpl({this.name, this.value, this.disabled});
+
+  factory _$QueryImpl.fromJson(Map<String, dynamic> json) =>
+      _$$QueryImplFromJson(json);
+
+  @override
+  final String? name;
+  @override
+  final String? value;
+  @override
+  final bool? disabled;
+
+  @override
+  String toString() {
+    return 'Query(name: $name, value: $value, disabled: $disabled)';
+  }
+
+  @override
+  bool operator ==(Object other) {
+    return identical(this, other) ||
+        (other.runtimeType == runtimeType &&
+            other is _$QueryImpl &&
+            (identical(other.name, name) || other.name == name) &&
+            (identical(other.value, value) || other.value == value) &&
+            (identical(other.disabled, disabled) ||
+                other.disabled == disabled));
+  }
+
+  @JsonKey(includeFromJson: false, includeToJson: false)
+  @override
+  int get hashCode => Object.hash(runtimeType, name, value, disabled);
+
+  /// Create a copy of Query
+  /// with the given fields replaced by the non-null parameter values.
+  @JsonKey(includeFromJson: false, includeToJson: false)
+  @override
+  @pragma('vm:prefer-inline')
+  _$$QueryImplCopyWith<_$QueryImpl> get copyWith =>
+      __$$QueryImplCopyWithImpl<_$QueryImpl>(this, _$identity);
+
+  @override
+  Map<String, dynamic> toJson() {
+    return _$$QueryImplToJson(
+      this,
+    );
+  }
+}
+
+abstract class _Query implements Query {
+  const factory _Query(
+      {final String? name,
+      final String? value,
+      final bool? disabled}) = _$QueryImpl;
+
+  factory _Query.fromJson(Map<String, dynamic> json) = _$QueryImpl.fromJson;
+
+  @override
+  String? get name;
+  @override
+  String? get value;
+  @override
+  bool? get disabled;
+
+  /// Create a copy of Query
+  /// with the given fields replaced by the non-null parameter values.
+  @override
+  @JsonKey(includeFromJson: false, includeToJson: false)
+  _$$QueryImplCopyWith<_$QueryImpl> get copyWith =>
+      throw _privateConstructorUsedError;
+}
+
+Header _$HeaderFromJson(Map<String, dynamic> json) {
+  return _Header.fromJson(json);
+}
+
+/// @nodoc
+mixin _$Header {
+  String? get name => throw _privateConstructorUsedError;
+  String? get value => throw _privateConstructorUsedError;
+  bool? get disabled => throw _privateConstructorUsedError;
+
+  /// Serializes this Header to a JSON map.
+  Map<String, dynamic> toJson() => throw _privateConstructorUsedError;
+
+  /// Create a copy of Header
+  /// with the given fields replaced by the non-null parameter values.
+  @JsonKey(includeFromJson: false, includeToJson: false)
+  $HeaderCopyWith<Header> get copyWith => throw _privateConstructorUsedError;
+}
+
+/// @nodoc
+abstract class $HeaderCopyWith<$Res> {
+  factory $HeaderCopyWith(Header value, $Res Function(Header) then) =
+      _$HeaderCopyWithImpl<$Res, Header>;
+  @useResult
+  $Res call({String? name, String? value, bool? disabled});
+}
+
+/// @nodoc
+class _$HeaderCopyWithImpl<$Res, $Val extends Header>
+    implements $HeaderCopyWith<$Res> {
+  _$HeaderCopyWithImpl(this._value, this._then);
+
+  // ignore: unused_field
+  final $Val _value;
+  // ignore: unused_field
+  final $Res Function($Val) _then;
+
+  /// Create a copy of Header
+  /// with the given fields replaced by the non-null parameter values.
+  @pragma('vm:prefer-inline')
+  @override
+  $Res call({
+    Object? name = freezed,
+    Object? value = freezed,
+    Object? disabled = freezed,
+  }) {
+    return _then(_value.copyWith(
+      name: freezed == name
+          ? _value.name
+          : name // ignore: cast_nullable_to_non_nullable
+              as String?,
+      value: freezed == value
+          ? _value.value
+          : value // ignore: cast_nullable_to_non_nullable
+              as String?,
+      disabled: freezed == disabled
+          ? _value.disabled
+          : disabled // ignore: cast_nullable_to_non_nullable
+              as bool?,
+    ) as $Val);
+  }
+}
+
+/// @nodoc
+abstract class _$$HeaderImplCopyWith<$Res> implements $HeaderCopyWith<$Res> {
+  factory _$$HeaderImplCopyWith(
+          _$HeaderImpl value, $Res Function(_$HeaderImpl) then) =
+      __$$HeaderImplCopyWithImpl<$Res>;
+  @override
+  @useResult
+  $Res call({String? name, String? value, bool? disabled});
+}
+
+/// @nodoc
+class __$$HeaderImplCopyWithImpl<$Res>
+    extends _$HeaderCopyWithImpl<$Res, _$HeaderImpl>
+    implements _$$HeaderImplCopyWith<$Res> {
+  __$$HeaderImplCopyWithImpl(
+      _$HeaderImpl _value, $Res Function(_$HeaderImpl) _then)
+      : super(_value, _then);
+
+  /// Create a copy of Header
+  /// with the given fields replaced by the non-null parameter values.
+  @pragma('vm:prefer-inline')
+  @override
+  $Res call({
+    Object? name = freezed,
+    Object? value = freezed,
+    Object? disabled = freezed,
+  }) {
+    return _then(_$HeaderImpl(
+      name: freezed == name
+          ? _value.name
+          : name // ignore: cast_nullable_to_non_nullable
+              as String?,
+      value: freezed == value
+          ? _value.value
+          : value // ignore: cast_nullable_to_non_nullable
+              as String?,
+      disabled: freezed == disabled
+          ? _value.disabled
+          : disabled // ignore: cast_nullable_to_non_nullable
+              as bool?,
+    ));
+  }
+}
+
+/// @nodoc
+
+@JsonSerializable(explicitToJson: true, anyMap: true, includeIfNull: false)
+class _$HeaderImpl implements _Header {
+  const _$HeaderImpl({this.name, this.value, this.disabled});
+
+  factory _$HeaderImpl.fromJson(Map<String, dynamic> json) =>
+      _$$HeaderImplFromJson(json);
+
+  @override
+  final String? name;
+  @override
+  final String? value;
+  @override
+  final bool? disabled;
+
+  @override
+  String toString() {
+    return 'Header(name: $name, value: $value, disabled: $disabled)';
+  }
+
+  @override
+  bool operator ==(Object other) {
+    return identical(this, other) ||
+        (other.runtimeType == runtimeType &&
+            other is _$HeaderImpl &&
+            (identical(other.name, name) || other.name == name) &&
+            (identical(other.value, value) || other.value == value) &&
+            (identical(other.disabled, disabled) ||
+                other.disabled == disabled));
+  }
+
+  @JsonKey(includeFromJson: false, includeToJson: false)
+  @override
+  int get hashCode => Object.hash(runtimeType, name, value, disabled);
+
+  /// Create a copy of Header
+  /// with the given fields replaced by the non-null parameter values.
+  @JsonKey(includeFromJson: false, includeToJson: false)
+  @override
+  @pragma('vm:prefer-inline')
+  _$$HeaderImplCopyWith<_$HeaderImpl> get copyWith =>
+      __$$HeaderImplCopyWithImpl<_$HeaderImpl>(this, _$identity);
+
+  @override
+  Map<String, dynamic> toJson() {
+    return _$$HeaderImplToJson(
+      this,
+    );
+  }
+}
+
+abstract class _Header implements Header {
+  const factory _Header(
+      {final String? name,
+      final String? value,
+      final bool? disabled}) = _$HeaderImpl;
+
+  factory _Header.fromJson(Map<String, dynamic> json) = _$HeaderImpl.fromJson;
+
+  @override
+  String? get name;
+  @override
+  String? get value;
+  @override
+  bool? get disabled;
+
+  /// Create a copy of Header
+  /// with the given fields replaced by the non-null parameter values.
+  @override
+  @JsonKey(includeFromJson: false, includeToJson: false)
+  _$$HeaderImplCopyWith<_$HeaderImpl> get copyWith =>
+      throw _privateConstructorUsedError;
+}
+
+Response _$ResponseFromJson(Map<String, dynamic> json) {
+  return _Response.fromJson(json);
+}
+
+/// @nodoc
+mixin _$Response {
+  int? get status => throw _privateConstructorUsedError;
+  String? get statusText => throw _privateConstructorUsedError;
+  String? get httpVersion => throw _privateConstructorUsedError;
+  List<dynamic>? get cookies => throw _privateConstructorUsedError;
+  List<dynamic>? get headers => throw _privateConstructorUsedError;
+  Content? get content => throw _privateConstructorUsedError;
+  String? get redirectURL => throw _privateConstructorUsedError;
+  int? get headersSize => throw _privateConstructorUsedError;
+  int? get bodySize => throw _privateConstructorUsedError;
+
+  /// Serializes this Response to a JSON map.
+  Map<String, dynamic> toJson() => throw _privateConstructorUsedError;
+
+  /// Create a copy of Response
+  /// with the given fields replaced by the non-null parameter values.
+  @JsonKey(includeFromJson: false, includeToJson: false)
+  $ResponseCopyWith<Response> get copyWith =>
+      throw _privateConstructorUsedError;
+}
+
+/// @nodoc
+abstract class $ResponseCopyWith<$Res> {
+  factory $ResponseCopyWith(Response value, $Res Function(Response) then) =
+      _$ResponseCopyWithImpl<$Res, Response>;
+  @useResult
+  $Res call(
+      {int? status,
+      String? statusText,
+      String? httpVersion,
+      List<dynamic>? cookies,
+      List<dynamic>? headers,
+      Content? content,
+      String? redirectURL,
+      int? headersSize,
+      int? bodySize});
+
+  $ContentCopyWith<$Res>? get content;
+}
+
+/// @nodoc
+class _$ResponseCopyWithImpl<$Res, $Val extends Response>
+    implements $ResponseCopyWith<$Res> {
+  _$ResponseCopyWithImpl(this._value, this._then);
+
+  // ignore: unused_field
+  final $Val _value;
+  // ignore: unused_field
+  final $Res Function($Val) _then;
+
+  /// Create a copy of Response
+  /// with the given fields replaced by the non-null parameter values.
+  @pragma('vm:prefer-inline')
+  @override
+  $Res call({
+    Object? status = freezed,
+    Object? statusText = freezed,
+    Object? httpVersion = freezed,
+    Object? cookies = freezed,
+    Object? headers = freezed,
+    Object? content = freezed,
+    Object? redirectURL = freezed,
+    Object? headersSize = freezed,
+    Object? bodySize = freezed,
+  }) {
+    return _then(_value.copyWith(
+      status: freezed == status
+          ? _value.status
+          : status // ignore: cast_nullable_to_non_nullable
+              as int?,
+      statusText: freezed == statusText
+          ? _value.statusText
+          : statusText // ignore: cast_nullable_to_non_nullable
+              as String?,
+      httpVersion: freezed == httpVersion
+          ? _value.httpVersion
+          : httpVersion // ignore: cast_nullable_to_non_nullable
+              as String?,
+      cookies: freezed == cookies
+          ? _value.cookies
+          : cookies // ignore: cast_nullable_to_non_nullable
+              as List<dynamic>?,
+      headers: freezed == headers
+          ? _value.headers
+          : headers // ignore: cast_nullable_to_non_nullable
+              as List<dynamic>?,
+      content: freezed == content
+          ? _value.content
+          : content // ignore: cast_nullable_to_non_nullable
+              as Content?,
+      redirectURL: freezed == redirectURL
+          ? _value.redirectURL
+          : redirectURL // ignore: cast_nullable_to_non_nullable
+              as String?,
+      headersSize: freezed == headersSize
+          ? _value.headersSize
+          : headersSize // ignore: cast_nullable_to_non_nullable
+              as int?,
+      bodySize: freezed == bodySize
+          ? _value.bodySize
+          : bodySize // ignore: cast_nullable_to_non_nullable
+              as int?,
+    ) as $Val);
+  }
+
+  /// Create a copy of Response
+  /// with the given fields replaced by the non-null parameter values.
+  @override
+  @pragma('vm:prefer-inline')
+  $ContentCopyWith<$Res>? get content {
+    if (_value.content == null) {
+      return null;
+    }
+
+    return $ContentCopyWith<$Res>(_value.content!, (value) {
+      return _then(_value.copyWith(content: value) as $Val);
+    });
+  }
+}
+
+/// @nodoc
+abstract class _$$ResponseImplCopyWith<$Res>
+    implements $ResponseCopyWith<$Res> {
+  factory _$$ResponseImplCopyWith(
+          _$ResponseImpl value, $Res Function(_$ResponseImpl) then) =
+      __$$ResponseImplCopyWithImpl<$Res>;
+  @override
+  @useResult
+  $Res call(
+      {int? status,
+      String? statusText,
+      String? httpVersion,
+      List<dynamic>? cookies,
+      List<dynamic>? headers,
+      Content? content,
+      String? redirectURL,
+      int? headersSize,
+      int? bodySize});
+
+  @override
+  $ContentCopyWith<$Res>? get content;
+}
+
+/// @nodoc
+class __$$ResponseImplCopyWithImpl<$Res>
+    extends _$ResponseCopyWithImpl<$Res, _$ResponseImpl>
+    implements _$$ResponseImplCopyWith<$Res> {
+  __$$ResponseImplCopyWithImpl(
+      _$ResponseImpl _value, $Res Function(_$ResponseImpl) _then)
+      : super(_value, _then);
+
+  /// Create a copy of Response
+  /// with the given fields replaced by the non-null parameter values.
+  @pragma('vm:prefer-inline')
+  @override
+  $Res call({
+    Object? status = freezed,
+    Object? statusText = freezed,
+    Object? httpVersion = freezed,
+    Object? cookies = freezed,
+    Object? headers = freezed,
+    Object? content = freezed,
+    Object? redirectURL = freezed,
+    Object? headersSize = freezed,
+    Object? bodySize = freezed,
+  }) {
+    return _then(_$ResponseImpl(
+      status: freezed == status
+          ? _value.status
+          : status // ignore: cast_nullable_to_non_nullable
+              as int?,
+      statusText: freezed == statusText
+          ? _value.statusText
+          : statusText // ignore: cast_nullable_to_non_nullable
+              as String?,
+      httpVersion: freezed == httpVersion
+          ? _value.httpVersion
+          : httpVersion // ignore: cast_nullable_to_non_nullable
+              as String?,
+      cookies: freezed == cookies
+          ? _value._cookies
+          : cookies // ignore: cast_nullable_to_non_nullable
+              as List<dynamic>?,
+      headers: freezed == headers
+          ? _value._headers
+          : headers // ignore: cast_nullable_to_non_nullable
+              as List<dynamic>?,
+      content: freezed == content
+          ? _value.content
+          : content // ignore: cast_nullable_to_non_nullable
+              as Content?,
+      redirectURL: freezed == redirectURL
+          ? _value.redirectURL
+          : redirectURL // ignore: cast_nullable_to_non_nullable
+              as String?,
+      headersSize: freezed == headersSize
+          ? _value.headersSize
+          : headersSize // ignore: cast_nullable_to_non_nullable
+              as int?,
+      bodySize: freezed == bodySize
+          ? _value.bodySize
+          : bodySize // ignore: cast_nullable_to_non_nullable
+              as int?,
+    ));
+  }
+}
+
+/// @nodoc
+
+@JsonSerializable(explicitToJson: true, anyMap: true, includeIfNull: false)
+class _$ResponseImpl implements _Response {
+  const _$ResponseImpl(
+      {this.status,
+      this.statusText,
+      this.httpVersion,
+      final List<dynamic>? cookies,
+      final List<dynamic>? headers,
+      this.content,
+      this.redirectURL,
+      this.headersSize,
+      this.bodySize})
+      : _cookies = cookies,
+        _headers = headers;
+
+  factory _$ResponseImpl.fromJson(Map<String, dynamic> json) =>
+      _$$ResponseImplFromJson(json);
+
+  @override
+  final int? status;
+  @override
+  final String? statusText;
+  @override
+  final String? httpVersion;
+  final List<dynamic>? _cookies;
+  @override
+  List<dynamic>? get cookies {
+    final value = _cookies;
+    if (value == null) return null;
+    if (_cookies is EqualUnmodifiableListView) return _cookies;
+    // ignore: implicit_dynamic_type
+    return EqualUnmodifiableListView(value);
+  }
+
+  final List<dynamic>? _headers;
+  @override
+  List<dynamic>? get headers {
+    final value = _headers;
+    if (value == null) return null;
+    if (_headers is EqualUnmodifiableListView) return _headers;
+    // ignore: implicit_dynamic_type
+    return EqualUnmodifiableListView(value);
+  }
+
+  @override
+  final Content? content;
+  @override
+  final String? redirectURL;
+  @override
+  final int? headersSize;
+  @override
+  final int? bodySize;
+
+  @override
+  String toString() {
+    return 'Response(status: $status, statusText: $statusText, httpVersion: $httpVersion, cookies: $cookies, headers: $headers, content: $content, redirectURL: $redirectURL, headersSize: $headersSize, bodySize: $bodySize)';
+  }
+
+  @override
+  bool operator ==(Object other) {
+    return identical(this, other) ||
+        (other.runtimeType == runtimeType &&
+            other is _$ResponseImpl &&
+            (identical(other.status, status) || other.status == status) &&
+            (identical(other.statusText, statusText) ||
+                other.statusText == statusText) &&
+            (identical(other.httpVersion, httpVersion) ||
+                other.httpVersion == httpVersion) &&
+            const DeepCollectionEquality().equals(other._cookies, _cookies) &&
+            const DeepCollectionEquality().equals(other._headers, _headers) &&
+            (identical(other.content, content) || other.content == content) &&
+            (identical(other.redirectURL, redirectURL) ||
+                other.redirectURL == redirectURL) &&
+            (identical(other.headersSize, headersSize) ||
+                other.headersSize == headersSize) &&
+            (identical(other.bodySize, bodySize) ||
+                other.bodySize == bodySize));
+  }
+
+  @JsonKey(includeFromJson: false, includeToJson: false)
+  @override
+  int get hashCode => Object.hash(
+      runtimeType,
+      status,
+      statusText,
+      httpVersion,
+      const DeepCollectionEquality().hash(_cookies),
+      const DeepCollectionEquality().hash(_headers),
+      content,
+      redirectURL,
+      headersSize,
+      bodySize);
+
+  /// Create a copy of Response
+  /// with the given fields replaced by the non-null parameter values.
+  @JsonKey(includeFromJson: false, includeToJson: false)
+  @override
+  @pragma('vm:prefer-inline')
+  _$$ResponseImplCopyWith<_$ResponseImpl> get copyWith =>
+      __$$ResponseImplCopyWithImpl<_$ResponseImpl>(this, _$identity);
+
+  @override
+  Map<String, dynamic> toJson() {
+    return _$$ResponseImplToJson(
+      this,
+    );
+  }
+}
+
+abstract class _Response implements Response {
+  const factory _Response(
+      {final int? status,
+      final String? statusText,
+      final String? httpVersion,
+      final List<dynamic>? cookies,
+      final List<dynamic>? headers,
+      final Content? content,
+      final String? redirectURL,
+      final int? headersSize,
+      final int? bodySize}) = _$ResponseImpl;
+
+  factory _Response.fromJson(Map<String, dynamic> json) =
+      _$ResponseImpl.fromJson;
+
+  @override
+  int? get status;
+  @override
+  String? get statusText;
+  @override
+  String? get httpVersion;
+  @override
+  List<dynamic>? get cookies;
+  @override
+  List<dynamic>? get headers;
+  @override
+  Content? get content;
+  @override
+  String? get redirectURL;
+  @override
+  int? get headersSize;
+  @override
+  int? get bodySize;
+
+  /// Create a copy of Response
+  /// with the given fields replaced by the non-null parameter values.
+  @override
+  @JsonKey(includeFromJson: false, includeToJson: false)
+  _$$ResponseImplCopyWith<_$ResponseImpl> get copyWith =>
+      throw _privateConstructorUsedError;
+}
+
+Content _$ContentFromJson(Map<String, dynamic> json) {
+  return _Content.fromJson(json);
+}
+
+/// @nodoc
+mixin _$Content {
+  int? get size => throw _privateConstructorUsedError;
+  String? get mimeType => throw _privateConstructorUsedError;
+
+  /// Serializes this Content to a JSON map.
+  Map<String, dynamic> toJson() => throw _privateConstructorUsedError;
+
+  /// Create a copy of Content
+  /// with the given fields replaced by the non-null parameter values.
+  @JsonKey(includeFromJson: false, includeToJson: false)
+  $ContentCopyWith<Content> get copyWith => throw _privateConstructorUsedError;
+}
+
+/// @nodoc
+abstract class $ContentCopyWith<$Res> {
+  factory $ContentCopyWith(Content value, $Res Function(Content) then) =
+      _$ContentCopyWithImpl<$Res, Content>;
+  @useResult
+  $Res call({int? size, String? mimeType});
+}
+
+/// @nodoc
+class _$ContentCopyWithImpl<$Res, $Val extends Content>
+    implements $ContentCopyWith<$Res> {
+  _$ContentCopyWithImpl(this._value, this._then);
+
+  // ignore: unused_field
+  final $Val _value;
+  // ignore: unused_field
+  final $Res Function($Val) _then;
+
+  /// Create a copy of Content
+  /// with the given fields replaced by the non-null parameter values.
+  @pragma('vm:prefer-inline')
+  @override
+  $Res call({
+    Object? size = freezed,
+    Object? mimeType = freezed,
+  }) {
+    return _then(_value.copyWith(
+      size: freezed == size
+          ? _value.size
+          : size // ignore: cast_nullable_to_non_nullable
+              as int?,
+      mimeType: freezed == mimeType
+          ? _value.mimeType
+          : mimeType // ignore: cast_nullable_to_non_nullable
+              as String?,
+    ) as $Val);
+  }
+}
+
+/// @nodoc
+abstract class _$$ContentImplCopyWith<$Res> implements $ContentCopyWith<$Res> {
+  factory _$$ContentImplCopyWith(
+          _$ContentImpl value, $Res Function(_$ContentImpl) then) =
+      __$$ContentImplCopyWithImpl<$Res>;
+  @override
+  @useResult
+  $Res call({int? size, String? mimeType});
+}
+
+/// @nodoc
+class __$$ContentImplCopyWithImpl<$Res>
+    extends _$ContentCopyWithImpl<$Res, _$ContentImpl>
+    implements _$$ContentImplCopyWith<$Res> {
+  __$$ContentImplCopyWithImpl(
+      _$ContentImpl _value, $Res Function(_$ContentImpl) _then)
+      : super(_value, _then);
+
+  /// Create a copy of Content
+  /// with the given fields replaced by the non-null parameter values.
+  @pragma('vm:prefer-inline')
+  @override
+  $Res call({
+    Object? size = freezed,
+    Object? mimeType = freezed,
+  }) {
+    return _then(_$ContentImpl(
+      size: freezed == size
+          ? _value.size
+          : size // ignore: cast_nullable_to_non_nullable
+              as int?,
+      mimeType: freezed == mimeType
+          ? _value.mimeType
+          : mimeType // ignore: cast_nullable_to_non_nullable
+              as String?,
+    ));
+  }
+}
+
+/// @nodoc
+
+@JsonSerializable(explicitToJson: true, anyMap: true, includeIfNull: false)
+class _$ContentImpl implements _Content {
+  const _$ContentImpl({this.size, this.mimeType});
+
+  factory _$ContentImpl.fromJson(Map<String, dynamic> json) =>
+      _$$ContentImplFromJson(json);
+
+  @override
+  final int? size;
+  @override
+  final String? mimeType;
+
+  @override
+  String toString() {
+    return 'Content(size: $size, mimeType: $mimeType)';
+  }
+
+  @override
+  bool operator ==(Object other) {
+    return identical(this, other) ||
+        (other.runtimeType == runtimeType &&
+            other is _$ContentImpl &&
+            (identical(other.size, size) || other.size == size) &&
+            (identical(other.mimeType, mimeType) ||
+                other.mimeType == mimeType));
+  }
+
+  @JsonKey(includeFromJson: false, includeToJson: false)
+  @override
+  int get hashCode => Object.hash(runtimeType, size, mimeType);
+
+  /// Create a copy of Content
+  /// with the given fields replaced by the non-null parameter values.
+  @JsonKey(includeFromJson: false, includeToJson: false)
+  @override
+  @pragma('vm:prefer-inline')
+  _$$ContentImplCopyWith<_$ContentImpl> get copyWith =>
+      __$$ContentImplCopyWithImpl<_$ContentImpl>(this, _$identity);
+
+  @override
+  Map<String, dynamic> toJson() {
+    return _$$ContentImplToJson(
+      this,
+    );
+  }
+}
+
+abstract class _Content implements Content {
+  const factory _Content({final int? size, final String? mimeType}) =
+      _$ContentImpl;
+
+  factory _Content.fromJson(Map<String, dynamic> json) = _$ContentImpl.fromJson;
+
+  @override
+  int? get size;
+  @override
+  String? get mimeType;
+
+  /// Create a copy of Content
+  /// with the given fields replaced by the non-null parameter values.
+  @override
+  @JsonKey(includeFromJson: false, includeToJson: false)
+  _$$ContentImplCopyWith<_$ContentImpl> get copyWith =>
+      throw _privateConstructorUsedError;
+}
diff --git a/packages/har_parser/lib/models/har_log.g.dart b/packages/har_parser/lib/models/har_log.g.dart
new file mode 100644
index 000000000..e383f6a87
--- /dev/null
+++ b/packages/har_parser/lib/models/har_log.g.dart
@@ -0,0 +1,198 @@
+// GENERATED CODE - DO NOT MODIFY BY HAND
+
+part of 'har_log.dart';
+
+// **************************************************************************
+// JsonSerializableGenerator
+// **************************************************************************
+
+_$HarLogImpl _$$HarLogImplFromJson(Map json) => _$HarLogImpl(
+      log: json['log'] == null
+          ? null
+          : Log.fromJson(Map<String, dynamic>.from(json['log'] as Map)),
+    );
+
+Map<String, dynamic> _$$HarLogImplToJson(_$HarLogImpl instance) =>
+    <String, dynamic>{
+      if (instance.log?.toJson() case final value?) 'log': value,
+    };
+
+_$LogImpl _$$LogImplFromJson(Map json) => _$LogImpl(
+      version: json['version'] as String?,
+      creator: json['creator'] == null
+          ? null
+          : Creator.fromJson(Map<String, dynamic>.from(json['creator'] as Map)),
+      entries: (json['entries'] as List<dynamic>?)
+          ?.map((e) => Entry.fromJson(Map<String, dynamic>.from(e as Map)))
+          .toList(),
+    );
+
+Map<String, dynamic> _$$LogImplToJson(_$LogImpl instance) => <String, dynamic>{
+      if (instance.version case final value?) 'version': value,
+      if (instance.creator?.toJson() case final value?) 'creator': value,
+      if (instance.entries?.map((e) => e.toJson()).toList() case final value?)
+        'entries': value,
+    };
+
+_$CreatorImpl _$$CreatorImplFromJson(Map json) => _$CreatorImpl(
+      name: json['name'] as String?,
+      version: json['version'] as String?,
+    );
+
+Map<String, dynamic> _$$CreatorImplToJson(_$CreatorImpl instance) =>
+    <String, dynamic>{
+      if (instance.name case final value?) 'name': value,
+      if (instance.version case final value?) 'version': value,
+    };
+
+_$EntryImpl _$$EntryImplFromJson(Map json) => _$EntryImpl(
+      startedDateTime: json['startedDateTime'] as String?,
+      time: (json['time'] as num?)?.toInt(),
+      request: json['request'] == null
+          ? null
+          : Request.fromJson(Map<String, dynamic>.from(json['request'] as Map)),
+      response: json['response'] == null
+          ? null
+          : Response.fromJson(
+              Map<String, dynamic>.from(json['response'] as Map)),
+    );
+
+Map<String, dynamic> _$$EntryImplToJson(_$EntryImpl instance) =>
+    <String, dynamic>{
+      if (instance.startedDateTime case final value?) 'startedDateTime': value,
+      if (instance.time case final value?) 'time': value,
+      if (instance.request?.toJson() case final value?) 'request': value,
+      if (instance.response?.toJson() case final value?) 'response': value,
+    };
+
+_$RequestImpl _$$RequestImplFromJson(Map json) => _$RequestImpl(
+      method: json['method'] as String?,
+      url: json['url'] as String?,
+      httpVersion: json['httpVersion'] as String?,
+      cookies: json['cookies'] as List<dynamic>?,
+      headers: (json['headers'] as List<dynamic>?)
+          ?.map((e) => Header.fromJson(Map<String, dynamic>.from(e as Map)))
+          .toList(),
+      queryString: (json['queryString'] as List<dynamic>?)
+          ?.map((e) => Query.fromJson(Map<String, dynamic>.from(e as Map)))
+          .toList(),
+      postData: json['postData'] == null
+          ? null
+          : PostData.fromJson(
+              Map<String, dynamic>.from(json['postData'] as Map)),
+      headersSize: (json['headersSize'] as num?)?.toInt(),
+      bodySize: (json['bodySize'] as num?)?.toInt(),
+    );
+
+Map<String, dynamic> _$$RequestImplToJson(_$RequestImpl instance) =>
+    <String, dynamic>{
+      if (instance.method case final value?) 'method': value,
+      if (instance.url case final value?) 'url': value,
+      if (instance.httpVersion case final value?) 'httpVersion': value,
+      if (instance.cookies case final value?) 'cookies': value,
+      if (instance.headers?.map((e) => e.toJson()).toList() case final value?)
+        'headers': value,
+      if (instance.queryString?.map((e) => e.toJson()).toList()
+          case final value?)
+        'queryString': value,
+      if (instance.postData?.toJson() case final value?) 'postData': value,
+      if (instance.headersSize case final value?) 'headersSize': value,
+      if (instance.bodySize case final value?) 'bodySize': value,
+    };
+
+_$PostDataImpl _$$PostDataImplFromJson(Map json) => _$PostDataImpl(
+      mimeType: json['mimeType'] as String?,
+      text: json['text'] as String?,
+      params: (json['params'] as List<dynamic>?)
+          ?.map((e) => Param.fromJson(Map<String, dynamic>.from(e as Map)))
+          .toList(),
+    );
+
+Map<String, dynamic> _$$PostDataImplToJson(_$PostDataImpl instance) =>
+    <String, dynamic>{
+      if (instance.mimeType case final value?) 'mimeType': value,
+      if (instance.text case final value?) 'text': value,
+      if (instance.params?.map((e) => e.toJson()).toList() case final value?)
+        'params': value,
+    };
+
+_$ParamImpl _$$ParamImplFromJson(Map json) => _$ParamImpl(
+      name: json['name'] as String?,
+      value: json['value'] as String?,
+      fileName: json['fileName'] as String?,
+      contentType: json['contentType'] as String?,
+      disabled: json['disabled'] as bool?,
+    );
+
+Map<String, dynamic> _$$ParamImplToJson(_$ParamImpl instance) =>
+    <String, dynamic>{
+      if (instance.name case final value?) 'name': value,
+      if (instance.value case final value?) 'value': value,
+      if (instance.fileName case final value?) 'fileName': value,
+      if (instance.contentType case final value?) 'contentType': value,
+      if (instance.disabled case final value?) 'disabled': value,
+    };
+
+_$QueryImpl _$$QueryImplFromJson(Map json) => _$QueryImpl(
+      name: json['name'] as String?,
+      value: json['value'] as String?,
+      disabled: json['disabled'] as bool?,
+    );
+
+Map<String, dynamic> _$$QueryImplToJson(_$QueryImpl instance) =>
+    <String, dynamic>{
+      if (instance.name case final value?) 'name': value,
+      if (instance.value case final value?) 'value': value,
+      if (instance.disabled case final value?) 'disabled': value,
+    };
+
+_$HeaderImpl _$$HeaderImplFromJson(Map json) => _$HeaderImpl(
+      name: json['name'] as String?,
+      value: json['value'] as String?,
+      disabled: json['disabled'] as bool?,
+    );
+
+Map<String, dynamic> _$$HeaderImplToJson(_$HeaderImpl instance) =>
+    <String, dynamic>{
+      if (instance.name case final value?) 'name': value,
+      if (instance.value case final value?) 'value': value,
+      if (instance.disabled case final value?) 'disabled': value,
+    };
+
+_$ResponseImpl _$$ResponseImplFromJson(Map json) => _$ResponseImpl(
+      status: (json['status'] as num?)?.toInt(),
+      statusText: json['statusText'] as String?,
+      httpVersion: json['httpVersion'] as String?,
+      cookies: json['cookies'] as List<dynamic>?,
+      headers: json['headers'] as List<dynamic>?,
+      content: json['content'] == null
+          ? null
+          : Content.fromJson(Map<String, dynamic>.from(json['content'] as Map)),
+      redirectURL: json['redirectURL'] as String?,
+      headersSize: (json['headersSize'] as num?)?.toInt(),
+      bodySize: (json['bodySize'] as num?)?.toInt(),
+    );
+
+Map<String, dynamic> _$$ResponseImplToJson(_$ResponseImpl instance) =>
+    <String, dynamic>{
+      if (instance.status case final value?) 'status': value,
+      if (instance.statusText case final value?) 'statusText': value,
+      if (instance.httpVersion case final value?) 'httpVersion': value,
+      if (instance.cookies case final value?) 'cookies': value,
+      if (instance.headers case final value?) 'headers': value,
+      if (instance.content?.toJson() case final value?) 'content': value,
+      if (instance.redirectURL case final value?) 'redirectURL': value,
+      if (instance.headersSize case final value?) 'headersSize': value,
+      if (instance.bodySize case final value?) 'bodySize': value,
+    };
+
+_$ContentImpl _$$ContentImplFromJson(Map json) => _$ContentImpl(
+      size: (json['size'] as num?)?.toInt(),
+      mimeType: json['mimeType'] as String?,
+    );
+
+Map<String, dynamic> _$$ContentImplToJson(_$ContentImpl instance) =>
+    <String, dynamic>{
+      if (instance.size case final value?) 'size': value,
+      if (instance.mimeType case final value?) 'mimeType': value,
+    };
diff --git a/packages/har_parser/lib/models/models.dart b/packages/har_parser/lib/models/models.dart
new file mode 100644
index 000000000..f3ea53694
--- /dev/null
+++ b/packages/har_parser/lib/models/models.dart
@@ -0,0 +1 @@
+export 'har_log.dart';
diff --git a/packages/har_parser/lib/utils/har_parser_utils.dart b/packages/har_parser/lib/utils/har_parser_utils.dart
new file mode 100644
index 000000000..aec7bf71e
--- /dev/null
+++ b/packages/har_parser/lib/utils/har_parser_utils.dart
@@ -0,0 +1,24 @@
+import '../models/har_log.dart';
+
+List<(String?, Request)> getRequestsFromHarLog(HarLog? hl) {
+  if (hl == null || hl.log == null || hl.log?.entries == null) {
+    return [];
+  }
+  List<(String?, Request)> requests = [];
+  if (hl.log?.entries?.isNotEmpty ?? false)
+    for (var entry in hl.log!.entries!) {
+      requests.addAll(getRequestsFromHarLogEntry(entry));
+    }
+  return requests;
+}
+
+List<(String?, Request)> getRequestsFromHarLogEntry(Entry? entry) {
+  if (entry == null) {
+    return [];
+  }
+  List<(String?, Request)> requests = [];
+  if (entry.request != null) {
+    requests.add((entry.startedDateTime, entry.request!));
+  }
+  return requests;
+}
diff --git a/packages/har_parser/pubspec.yaml b/packages/har_parser/pubspec.yaml
new file mode 100644
index 000000000..14b9c10a3
--- /dev/null
+++ b/packages/har_parser/pubspec.yaml
@@ -0,0 +1,25 @@
+name: har_parser
+description: "Seamlessly convert har Format to Dart and vice versa."
+version: 0.0.1
+homepage: https://github.com/foss42/apidash
+
+topics:
+  - har
+  - api
+  - rest
+  - http
+  - network
+
+environment:
+  sdk: ">=3.0.0 <4.0.0"
+
+dependencies:
+  freezed_annotation: ^2.4.4
+  json_annotation: ^4.9.0
+
+dev_dependencies:
+  build_runner: ^2.4.12
+  freezed: ^2.5.7
+  json_serializable: ^6.7.1
+  lints: ^4.0.0
+  test: ^1.24.0
diff --git a/packages/har_parser/test/collection_examples/collection_apidash.dart b/packages/har_parser/test/collection_examples/collection_apidash.dart
new file mode 100644
index 000000000..47a1a0a0b
--- /dev/null
+++ b/packages/har_parser/test/collection_examples/collection_apidash.dart
@@ -0,0 +1,332 @@
+var collectionJsonStr = r'''
+{
+  "log": {
+    "version": "1.2",
+    "creator": {
+      "name": "Postman",
+      "version": "v8.x.x"
+    },
+    "entries": [
+      {
+        "startedDateTime": "2025-03-25T12:00:00.000Z",
+        "time": 100,
+        "request": {
+          "method": "GET",
+          "url": "https://api.apidash.dev",
+          "headers": [],
+          "queryString": [],
+          "bodySize": 0
+        },
+        "response": {
+          "status": 200,
+          "statusText": "OK",
+          "headers": [],
+          "bodySize": 0
+        }
+      },
+      {
+        "startedDateTime": "2025-03-25T12:01:00.000Z",
+        "time": 150,
+        "request": {
+          "method": "GET",
+          "url": "https://api.apidash.dev/country/data?code=US",
+          "headers": [],
+          "queryString": [
+            {
+              "name": "code",
+              "value": "US"
+            }
+          ],
+          "bodySize": 0
+        },
+        "response": {
+          "status": 200,
+          "statusText": "OK",
+          "headers": [],
+          "bodySize": 0
+        }
+      },
+      {
+        "startedDateTime": "2025-03-25T12:02:00.000Z",
+        "time": 200,
+        "request": {
+          "method": "GET",
+          "url": "https://api.apidash.dev/humanize/social?num=8700000&digits=3&system=SS&add_space=true&trailing_zeros=true",
+          "headers": [],
+          "queryString": [
+            {
+              "name": "num",
+              "value": "8700000"
+            },
+            {
+              "name": "digits",
+              "value": "3"
+            },
+            {
+              "name": "system",
+              "value": "SS"
+            },
+            {
+              "name": "add_space",
+              "value": "true"
+            },
+            {
+              "name": "trailing_zeros",
+              "value": "true"
+            }
+          ],
+          "bodySize": 0
+        },
+        "response": {
+          "status": 200,
+          "statusText": "OK",
+          "headers": [],
+          "bodySize": 0
+        }
+      },
+      {
+        "startedDateTime": "2025-03-25T12:03:00.000Z",
+        "time": 300,
+        "request": {
+          "method": "POST",
+          "url": "https://api.apidash.dev/case/lower",
+          "headers": [],
+          "queryString": [],
+          "postData": {
+            "mimeType": "application/json",
+            "text": "{ \"text\": \"I LOVE Flutter\" }"
+          },
+          "bodySize": 50
+        },
+        "response": {
+          "status": 200,
+          "statusText": "OK",
+          "headers": [],
+          "bodySize": 0
+        }
+      },
+      {
+        "startedDateTime": "2025-03-25T12:04:00.000Z",
+        "time": 350,
+        "request": {
+          "method": "POST",
+          "url": "https://api.apidash.dev/io/form",
+          "headers": [
+            {
+              "name": "User-Agent",
+              "value": "Test Agent"
+            }
+          ],
+          "queryString": [],
+          "postData": {
+            "mimeType": "multipart/form-data",
+            "params": [
+              {
+                "name": "text",
+                "value": "API",
+                "contentType": "text/plain"
+              },
+              {
+                "name": "sep",
+                "value": "|",
+                "contentType": "text/plain"
+              },
+              {
+                "name": "times",
+                "value": "3",
+                "contentType": "text/plain"
+              }
+            ]
+          },
+          "bodySize": 100
+        },
+        "response": {
+          "status": 200,
+          "statusText": "OK",
+          "headers": [],
+          "bodySize": 0
+        }
+      },
+      {
+        "startedDateTime": "2025-03-25T12:05:00.000Z",
+        "time": 400,
+        "request": {
+          "method": "POST",
+          "url": "https://api.apidash.dev/io/img",
+          "headers": [],
+          "queryString": [],
+          "postData": {
+            "mimeType": "multipart/form-data",
+            "params": [
+              {
+                "name": "token",
+                "value": "xyz",
+                "contentType": "text/plain"
+              },
+              {
+                "name": "imfile",
+                "fileName": "hire AI.jpeg",
+                "contentType": "image/jpeg"
+              }
+            ]
+          },
+          "bodySize": 150
+        },
+        "response": {
+          "status": 200,
+          "statusText": "OK",
+          "headers": [],
+          "bodySize": 0
+        }
+      }
+    ]
+  }
+}''';
+
+var collectionJson = {
+    "log": {
+      "version": "1.2",
+      "creator": {
+        "name": "Postman", 
+        "version": "v8.x.x"
+        },
+      "entries": [
+        {
+          "startedDateTime": "2025-03-25T12:00:00.000Z",
+          "time": 100,
+          "request": {
+            "method": "GET",
+            "url": "https://api.apidash.dev",
+            "headers": [],
+            "queryString": [],
+            "bodySize": 0
+          },
+          "response": {
+            "status": 200,
+            "statusText": "OK",
+            "headers": [],
+            "bodySize": 0
+          }
+        },
+        {
+          "startedDateTime": "2025-03-25T12:01:00.000Z",
+          "time": 150,
+          "request": {
+            "method": "GET",
+            "url": "https://api.apidash.dev/country/data?code=US",
+            "headers": [],
+            "queryString": [
+              {"name": "code", "value": "US"}
+            ],
+            "bodySize": 0
+          },
+          "response": {
+            "status": 200,
+            "statusText": "OK",
+            "headers": [],
+            "bodySize": 0
+          }
+        },
+        {
+          "startedDateTime": "2025-03-25T12:02:00.000Z",
+          "time": 200,
+          "request": {
+            "method": "GET",
+            "url":
+                "https://api.apidash.dev/humanize/social?num=8700000&digits=3&system=SS&add_space=true&trailing_zeros=true",
+            "headers": [],
+            "queryString": [
+              {"name": "num", "value": "8700000"},
+              {"name": "digits", "value": "3"},
+              {"name": "system", "value": "SS"},
+              {"name": "add_space", "value": "true"},
+              {"name": "trailing_zeros", "value": "true"}
+            ],
+            "bodySize": 0
+          },
+          "response": {
+            "status": 200,
+            "statusText": "OK",
+            "headers": [],
+            "bodySize": 0
+          }
+        },
+        {
+          "startedDateTime": "2025-03-25T12:03:00.000Z",
+          "time": 300,
+          "request": {
+            "method": "POST",
+            "url": "https://api.apidash.dev/case/lower",
+            "headers": [],
+            "queryString": [],
+            "bodySize": 50,
+            "postData": {
+              "mimeType": "application/json",
+              "text": "{ \"text\": \"I LOVE Flutter\" }"
+            }
+          },
+          "response": {
+            "status": 200,
+            "statusText": "OK",
+            "headers": [],
+            "bodySize": 0
+          }
+        },
+        {
+          "startedDateTime": "2025-03-25T12:04:00.000Z",
+          "time": 350,
+          "request": {
+            "method": "POST",
+            "url": "https://api.apidash.dev/io/form",
+            "headers": [
+              {"name": "User-Agent", "value": "Test Agent"}
+            ],
+            "queryString": [],
+            "bodySize": 100,
+            "postData": {
+              "mimeType": "multipart/form-data",
+              "params": [
+                {"name": "text", "value": "API", "contentType": "text/plain"},
+                {"name": "sep", "value": "|", "contentType": "text/plain"},
+                {"name": "times", "value": "3", "contentType": "text/plain"}
+              ]
+            }
+          },
+          "response": {
+            "status": 200,
+            "statusText": "OK",
+            "headers": [],
+            "bodySize": 0
+          }
+        },
+        {
+          "startedDateTime": "2025-03-25T12:05:00.000Z",
+          "time": 400,
+          "request": {
+            "method": "POST",
+            "url": "https://api.apidash.dev/io/img",
+            "headers": [],
+            "queryString": [],
+            "bodySize": 150,
+            "postData": {
+              "mimeType": "multipart/form-data",
+              "params": [
+                {"name": "token", "value": "xyz", "contentType": "text/plain"},
+                {
+                  "name": "imfile",
+                  "fileName": "hire AI.jpeg",
+                  "contentType": "image/jpeg"
+                }
+              ]
+            }
+          },
+          "response": {
+            "status": 200,
+            "statusText": "OK",
+            "headers": [],
+            "bodySize": 0
+          }
+        }
+      ]
+    }
+  };
diff --git a/packages/har_parser/test/har_parser_test.dart b/packages/har_parser/test/har_parser_test.dart
new file mode 100644
index 000000000..52d29bd0c
--- /dev/null
+++ b/packages/har_parser/test/har_parser_test.dart
@@ -0,0 +1,25 @@
+import 'package:har_parser/har_parser.dart';
+import 'package:test/test.dart';
+
+import 'collection_examples/collection_apidash.dart';
+import 'models/collection_apidash_model.dart';
+
+void main() {
+  group('Har tests', () {
+    test('API Dash Har Requests from Json String', () {
+      expect(harLogFromJsonStr(collectionJsonStr), collectionApiDashModel);
+    });
+
+    test('API Dash Har Requests from Json', () {
+      expect(HarLog.fromJson(collectionJson), collectionApiDashModel);
+    });
+
+    test('API Dash Har Requests to Json String', () {
+      expect(harLogToJsonStr(collectionApiDashModel), collectionJsonStr);
+    });
+
+    test('API Dash Har Requests to Json', () {
+      expect(collectionApiDashModel.toJson(), collectionJson);
+    });
+  });
+}
diff --git a/packages/har_parser/test/models/collection_apidash_model.dart b/packages/har_parser/test/models/collection_apidash_model.dart
new file mode 100644
index 000000000..2705fcc5e
--- /dev/null
+++ b/packages/har_parser/test/models/collection_apidash_model.dart
@@ -0,0 +1,184 @@
+import 'package:har_parser/models/models.dart';
+
+var collectionApiDashModel = HarLog(
+  log: Log(
+    version: "1.2",
+    creator: Creator(name: "Postman", version: "v8.x.x"),
+    entries: [
+      Entry(
+        startedDateTime: "2025-03-25T12:00:00.000Z",
+        time: 100,
+        request: Request(
+          method: "GET",
+          url: "https://api.apidash.dev",
+          httpVersion: null,
+          cookies: null,
+          headers: [],
+          queryString: [],
+          postData: null,
+          headersSize: null,
+          bodySize: 0,
+        ),
+        response: Response(
+          status: 200,
+          statusText: "OK",
+          httpVersion: null,
+          cookies: null,
+          headers: [],
+          content: null,
+          redirectURL: null,
+          headersSize: null,
+          bodySize: 0,
+        ),
+      ),
+      Entry(
+        startedDateTime: "2025-03-25T12:01:00.000Z",
+        time: 150,
+        request: Request(
+          method: "GET",
+          url: "https://api.apidash.dev/country/data?code=US",
+          httpVersion: null,
+          cookies: null,
+          headers: [],
+          queryString: [Query(name: "code", value: "US", disabled: null)],
+          postData: null,
+          headersSize: null,
+          bodySize: 0,
+        ),
+        response: Response(
+          status: 200,
+          statusText: "OK",
+          httpVersion: null,
+          cookies: null,
+          headers: [],
+          content: null,
+          redirectURL: null,
+          headersSize: null,
+          bodySize: 0,
+        ),
+      ),
+      Entry(
+        startedDateTime: "2025-03-25T12:02:00.000Z",
+        time: 200,
+        request: Request(
+          method: "GET",
+          url: "https://api.apidash.dev/humanize/social?num=8700000&digits=3&system=SS&add_space=true&trailing_zeros=true",
+          httpVersion: null,
+          cookies: null,
+          headers: [],
+          queryString: [
+            Query(name: "num", value: "8700000", disabled: null),
+            Query(name: "digits", value: "3", disabled: null),
+            Query(name: "system", value: "SS", disabled: null),
+            Query(name: "add_space", value: "true", disabled: null),
+            Query(name: "trailing_zeros", value: "true", disabled: null)
+          ],
+          postData: null,
+          headersSize: null,
+          bodySize: 0,
+        ),
+        response: Response(
+          status: 200,
+          statusText: "OK",
+          httpVersion: null,
+          cookies: null,
+          headers: [],
+          content: null,
+          redirectURL: null,
+          headersSize: null,
+          bodySize: 0,
+        ),
+      ),
+      Entry(
+        startedDateTime: "2025-03-25T12:03:00.000Z",
+        time: 300,
+        request: Request(
+          method: "POST",
+          url: "https://api.apidash.dev/case/lower",
+          headers: [],
+          queryString: [],
+          postData: PostData(
+            mimeType: "application/json",
+            text: '{ "text": "I LOVE Flutter" }',
+            params: null,
+          ),
+          bodySize: 50,
+        ),
+        response: Response(
+          status: 200,
+          statusText: "OK",
+          httpVersion: null,
+          cookies: null,
+          headers: [],
+          content: null,
+          redirectURL: null,
+          headersSize: null,
+          bodySize: 0,
+        ),
+      ),
+      Entry(
+        startedDateTime: "2025-03-25T12:04:00.000Z",
+        time: 350,
+        request: Request(
+          method: "POST",
+          url: "https://api.apidash.dev/io/form",
+          headers: [Header(name: "User-Agent", value: "Test Agent", disabled: null)],
+          queryString: [],
+          bodySize: 100,
+          postData: PostData(
+            mimeType: "multipart/form-data",
+            params: [
+              Param(name: "text", value: "API", fileName: null, contentType: "text/plain", disabled: null),
+              Param(name: "sep", value: "|", fileName: null, contentType: "text/plain", disabled: null),
+              Param(name: "times", value: "3", fileName: null, contentType: "text/plain", disabled: null)
+            ],
+          ),
+        ),
+        response: Response(
+          status: 200,
+          statusText: "OK",
+          httpVersion: null,
+          cookies: null,
+          headers: [],
+          content: null,
+          redirectURL: null,
+          headersSize: null,
+          bodySize: 0,
+        ),
+      ),
+      Entry(
+        startedDateTime: "2025-03-25T12:05:00.000Z",
+        time: 400,
+        request: Request(
+          method: "POST",
+          url: "https://api.apidash.dev/io/img",
+          httpVersion: null,
+          cookies: null,
+          headers: [],
+          queryString: [],
+          postData: PostData(
+            mimeType: "multipart/form-data",
+            text: null,
+            params: [
+              Param(name: "token", value: "xyz", fileName: null, contentType: "text/plain", disabled: null),
+              Param(name: "imfile", value: null, fileName: "hire AI.jpeg", contentType: "image/jpeg", disabled: null)
+            ],
+          ),
+          headersSize: null,
+          bodySize: 150,
+        ),
+        response: Response(
+          status: 200,
+          statusText: "OK",
+          httpVersion: null,
+          cookies: null,
+          headers: [],
+          content: null,
+          redirectURL: null,
+          headersSize: null,
+          bodySize: 0,
+        ),
+      ),
+    ],
+  ),
+);
diff --git a/pubspec.lock b/pubspec.lock
index 031b24346..9e5528c4d 100644
--- a/pubspec.lock
+++ b/pubspec.lock
@@ -663,6 +663,13 @@ packages:
       url: "https://pub.dev"
     source: hosted
     version: "2.3.2"
+  har_parser:
+    dependency: transitive
+    description:
+      path: "packages/har_parser"
+      relative: true
+    source: path
+    version: "0.0.1"
   highlighter:
     dependency: "direct main"
     description: